summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Falavigna <dktrkranz@debian.org>2014-04-26 15:11:58 +0200
committerLuca Falavigna <dktrkranz@debian.org>2014-04-26 15:11:58 +0200
commit140d836e9cd54fb67b969fd82ef7ed19ba574d40 (patch)
tree0df3e32ee39603d43f9b90fd2f2e1f7cce4249d4
parentcb3425abe0bc2d05caf401ca24b82a25a81f009d (diff)
Imported Upstream version 2.3.1upstream/2.3.1
-rw-r--r--LICENSE2
-rw-r--r--QMTest/README.txt58
-rw-r--r--QMTest/SConscript64
-rw-r--r--QMTest/TestCmd.py1726
-rw-r--r--QMTest/TestCmdTests.py3409
-rw-r--r--QMTest/TestCommon.py739
-rw-r--r--QMTest/TestCommonTests.py2337
-rw-r--r--QMTest/TestRuntest.py167
-rw-r--r--QMTest/TestSCons.py1492
-rw-r--r--QMTest/TestSConsMSVS.py1053
-rw-r--r--QMTest/TestSCons_time.py330
-rw-r--r--QMTest/TestSConsign.py89
-rw-r--r--QMTest/classes.qmc12
-rw-r--r--QMTest/configuration6
-rw-r--r--QMTest/scons_tdb.py603
-rw-r--r--QMTest/test-framework.rst430
-rw-r--r--SConstruct39
-rw-r--r--bin/SConsDoc.py892
-rw-r--r--bin/SConsExamples.py (renamed from bin/scons-doc.py)922
-rw-r--r--bin/docs-create-example-outputs.py19
-rw-r--r--bin/docs-update-generated.py51
-rw-r--r--bin/docs-validate.py27
-rw-r--r--bin/import-test.py4
-rw-r--r--bin/linecount.py4
-rw-r--r--bin/restore.sh26
-rw-r--r--bin/scons-proc.py478
-rw-r--r--bin/scons_dev_master.py15
-rw-r--r--bin/update-release-info.py21
-rwxr-xr-xbootstrap.py222
-rw-r--r--doc/SConscript591
-rw-r--r--doc/design/MANIFEST17
-rw-r--r--doc/design/SConstruct49
-rw-r--r--doc/design/acks.xml16
-rw-r--r--doc/design/bground.xml16
-rw-r--r--doc/design/chtml.xsl56
-rw-r--r--doc/design/copyright.xml14
-rw-r--r--doc/design/engine.svg529
-rw-r--r--doc/design/engine.xml28
-rw-r--r--doc/design/goals.xml16
-rw-r--r--doc/design/html.xsl (renamed from doc/user/errors.in)96
-rw-r--r--doc/design/install.xml20
-rw-r--r--doc/design/intro.xml16
-rw-r--r--doc/design/issues.xml16
-rw-r--r--doc/design/main.xml116
-rw-r--r--doc/design/native.xml16
-rw-r--r--doc/design/overview.xml36
-rw-r--r--doc/design/pdf.xsl71
-rw-r--r--doc/design/scons.css263
-rw-r--r--doc/design/scons.mod429
-rw-r--r--doc/design/scons_title.xsl6352
-rw-r--r--doc/design/summary.xml53
-rw-r--r--doc/design/titlepage/SConsBuildBricks_path.svg320
-rw-r--r--doc/design/titlepage/SCons_path.svg196
-rwxr-xr-xdoc/design/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/design/titlepage/mapnik_final_colors.svg6397
-rw-r--r--doc/developer/SConstruct46
-rw-r--r--doc/developer/architecture.xml16
-rw-r--r--doc/developer/branches.xml16
-rw-r--r--doc/developer/copyright.xml14
-rw-r--r--doc/developer/cycle.xml16
-rw-r--r--doc/developer/main.xml70
-rw-r--r--doc/developer/packaging.xml16
-rw-r--r--doc/developer/preface.xml16
-rw-r--r--doc/developer/sourcetree.xml16
-rw-r--r--doc/developer/testing.xml16
-rw-r--r--doc/editor_configs/serna/scons/catalog.xml12
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/NW-COPYING49
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/biblio.xsl1043
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/blocks.xsl781
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/common-table.xsl444
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/common.xsl451
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/compounds.xsl126
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/divisions.xsl88
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/docbook.xsl54
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/formal.xsl216
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl500
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/glossary.xsl423
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/graphics.xsl269
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/inlines.xsl939
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n.xsl438
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/af.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/bg.xml456
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ca.xml457
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/cs.xml455
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/da.xml457
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/de.xml457
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/el.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/en.xml481
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/es.xml459
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/et.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/eu.xml455
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fi.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fr.xml458
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/he.xml455
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/hu.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/id.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/it.xml455
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ja.xml456
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ko.xml452
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.dtd45
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.xml83
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/lt.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nl.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nn.xml460
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/no.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pl.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt.xml456
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt_br.xml451
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ro.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ru.xml484
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sk.xml454
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sl.xml451
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sr.xml450
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sv.xml451
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/th.xml463
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/tr.xml458
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/uk.xml484
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/vi.xml453
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/xh.xml456
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_cn.xml447
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_tw.xml448
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/lists.xsl803
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/parameters.xsl435
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/qandaset.xsl216
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/refentry.xsl189
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/serna-table.xsl641
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/synopsis.xsl998
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/table.xsl1103
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.generator.xsl1218
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xml412
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xsl1969
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.xsl772
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/titles.xsl511
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/toc.labels.xsl553
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/toc.titles.xsl525
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/toc.xsl304
-rw-r--r--doc/editor_configs/serna/scons/docbook-xsl-serna/xref.xsl624
-rw-r--r--doc/editor_configs/serna/scons/dtd/README8
-rw-r--r--doc/editor_configs/serna/scons/dtd/calstblx.dtd215
-rw-r--r--doc/editor_configs/serna/scons/dtd/calstblx.rng477
-rw-r--r--doc/editor_configs/serna/scons/dtd/dbcentx.mod384
-rw-r--r--doc/editor_configs/serna/scons/dtd/dbgenent.mod41
-rw-r--r--doc/editor_configs/serna/scons/dtd/dbhierx.mod2193
-rw-r--r--doc/editor_configs/serna/scons/dtd/dbnotnx.mod101
-rw-r--r--doc/editor_configs/serna/scons/dtd/dbpoolx.mod8870
-rw-r--r--doc/editor_configs/serna/scons/dtd/docbook.cat113
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/README14
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isoamsa.ent97
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isoamsb.ent83
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isoamsc.ent51
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isoamsn.ent103
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isoamso.ent59
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isoamsr.ent125
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isobox.ent81
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isocyr1.ent108
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isocyr2.ent67
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isodia.ent55
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isogrk1.ent90
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isogrk2.ent61
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isogrk3.ent84
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isogrk4.ent85
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isolat1.ent103
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isolat2.ent162
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isonum.ent117
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isopub.ent125
-rw-r--r--doc/editor_configs/serna/scons/dtd/ent/isotech.ent103
-rw-r--r--doc/editor_configs/serna/scons/dtd/htmltblx.mod245
-rw-r--r--doc/editor_configs/serna/scons/dtd/scons.dtd170
-rw-r--r--doc/editor_configs/serna/scons/dtd/soextblx.dtd321
-rw-r--r--doc/editor_configs/serna/scons/scons.csl199
-rw-r--r--doc/editor_configs/serna/scons/scons.sdt95
-rw-r--r--doc/editor_configs/serna/scons/xsd/calstblx.xsd390
-rw-r--r--doc/editor_configs/serna/scons/xsd/dbhierx.xsd2186
-rw-r--r--doc/editor_configs/serna/scons/xsd/dbnotnx.xsd102
-rw-r--r--doc/editor_configs/serna/scons/xsd/dbpoolx.xsd8682
-rw-r--r--doc/editor_configs/serna/scons/xsd/htmltblx.xsd431
-rw-r--r--doc/editor_configs/serna/scons/xsd/scons.xsd99
-rw-r--r--doc/editor_configs/serna/scons/xsd/xml.xsd15
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/common.incl654
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/cals_table.imp24
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/collapsible.imp135
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/docbook1.imp1157
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/docbook2.imp1292
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/example1.css20
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/html_cals_table.imp101
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/image.imp23
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/print.imp15
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/refentry.imp524
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/scons.css17
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/structure.css140
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/table.imp87
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/css/visible_inclusions.css9
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/htmlTable.incl195
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons.css11
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons.xxe37
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons2.xml7
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_catalog.xml9
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml10
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml20
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml23
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml10
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml16
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml13
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml25
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml15
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml7
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/calstblx.xsd390
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbhierx.xsd2186
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbnotnx.xsd102
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbpoolx.xsd8682
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/htmltblx.xsd431
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/scons.xsd99
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/xml.xsd15
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/toolBar.incl189
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/xslMenu.incl688
-rw-r--r--doc/editor_configs/xmlmind/custom/dummy.txt1
-rw-r--r--doc/editor_configs/xmlmind/preferences.properties108
-rw-r--r--doc/editor_configs/xmlmind/ser/dummy.txt1
-rw-r--r--doc/editor_configs/xmlmind/spell/dummy.txt1
-rw-r--r--doc/generated/builders.gen2577
-rw-r--r--doc/generated/builders.mod243
-rw-r--r--doc/generated/examples/EnumVariable_map_1.xml4
-rw-r--r--doc/generated/examples/addmethod_ex1_1.xml7
-rw-r--r--doc/generated/examples/addmethod_ex2_1.xml5
-rw-r--r--doc/generated/examples/addmethod_ex2_2.xml7
-rw-r--r--doc/generated/examples/alias_ex1_1.xml6
-rw-r--r--doc/generated/examples/alias_ex2_1.xml26
-rw-r--r--doc/generated/examples/buildersbuiltin_ex1_1.xml5
-rw-r--r--doc/generated/examples/buildersbuiltin_ex2_1.xml4
-rw-r--r--doc/generated/examples/buildersbuiltin_ex3_1.xml4
-rw-r--r--doc/generated/examples/buildersbuiltin_ex4_1.xml4
-rw-r--r--doc/generated/examples/buildersbuiltin_libs_1.xml6
-rw-r--r--doc/generated/examples/buildersbuiltin_libs_2.xml7
-rw-r--r--doc/generated/examples/builderscommands_ex1_1.xml4
-rw-r--r--doc/generated/examples/builderscommands_ex2_1.xml4
-rw-r--r--doc/generated/examples/builderswriting_MY_EMITTER_1.xml5
-rw-r--r--doc/generated/examples/builderswriting_ex1_1.xml4
-rw-r--r--doc/generated/examples/builderswriting_ex2_1.xml6
-rw-r--r--doc/generated/examples/builderswriting_ex3_1.xml6
-rw-r--r--doc/generated/examples/builderswriting_ex4_1.xml5
-rw-r--r--doc/generated/examples/builderswriting_ex5_1.xml4
-rw-r--r--doc/generated/examples/builderswriting_ex6_1.xml4
-rw-r--r--doc/generated/examples/builderswriting_ex7_1.xml4
-rw-r--r--doc/generated/examples/caching_ex-random_1.xml9
-rw-r--r--doc/generated/examples/caching_ex1_1.xml11
-rw-r--r--doc/generated/examples/caching_ex1_2.xml11
-rw-r--r--doc/generated/examples/caching_ex1_4.xml17
-rw-r--r--doc/generated/examples/caching_ex1_5.xml15
-rw-r--r--doc/generated/examples/commandline_ARGLIST_1.xml6
-rw-r--r--doc/generated/examples/commandline_ARGUMENTS_1.xml12
-rw-r--r--doc/generated/examples/commandline_AddOption_1.xml4
-rw-r--r--doc/generated/examples/commandline_AddOption_2.xml4
-rw-r--r--doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml16
-rw-r--r--doc/generated/examples/commandline_BoolVariable_1.xml4
-rw-r--r--doc/generated/examples/commandline_BoolVariable_2.xml4
-rw-r--r--doc/generated/examples/commandline_BoolVariable_3.xml4
-rw-r--r--doc/generated/examples/commandline_BoolVariable_4.xml4
-rw-r--r--doc/generated/examples/commandline_BoolVariable_5.xml7
-rw-r--r--doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml9
-rw-r--r--doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml10
-rw-r--r--doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml13
-rw-r--r--doc/generated/examples/commandline_Default1_1.xml10
-rw-r--r--doc/generated/examples/commandline_Default1_2.xml7
-rw-r--r--doc/generated/examples/commandline_Default2_1.xml10
-rw-r--r--doc/generated/examples/commandline_Default3_1.xml12
-rw-r--r--doc/generated/examples/commandline_Default4_1.xml9
-rw-r--r--doc/generated/examples/commandline_EnumVariable_1.xml8
-rw-r--r--doc/generated/examples/commandline_EnumVariable_2.xml6
-rw-r--r--doc/generated/examples/commandline_EnumVariable_3.xml14
-rw-r--r--doc/generated/examples/commandline_EnumVariable_ic1_1.xml10
-rw-r--r--doc/generated/examples/commandline_EnumVariable_ic2_1.xml8
-rw-r--r--doc/generated/examples/commandline_ListVariable_1.xml6
-rw-r--r--doc/generated/examples/commandline_ListVariable_2.xml6
-rw-r--r--doc/generated/examples/commandline_ListVariable_3.xml7
-rw-r--r--doc/generated/examples/commandline_PackageVariable_1.xml10
-rw-r--r--doc/generated/examples/commandline_PathVariable_1.xml6
-rw-r--r--doc/generated/examples/commandline_PathVariable_2.xml6
-rw-r--r--doc/generated/examples/commandline_SCONSFLAGS_1.xml11
-rw-r--r--doc/generated/examples/commandline_SetOption_1.xml5
-rw-r--r--doc/generated/examples/commandline_SetOption_2.xml6
-rw-r--r--doc/generated/examples/commandline_SetOption_3.xml9
-rw-r--r--doc/generated/examples/commandline_UnknownVariables_1.xml4
-rw-r--r--doc/generated/examples/commandline_Variables1_1.xml6
-rw-r--r--doc/generated/examples/commandline_Variables_Help_1.xml9
-rw-r--r--doc/generated/examples/commandline_Variables_custom_py_1_1.xml6
-rw-r--r--doc/generated/examples/commandline_Variables_custom_py_1_custom.py3
-rw-r--r--doc/generated/examples/commandline_Variables_custom_py_2_1.xml6
-rw-r--r--doc/generated/examples/depends_AlwaysBuild_1.xml7
-rw-r--r--doc/generated/examples/depends_AlwaysBuild_2.xml7
-rw-r--r--doc/generated/examples/depends_Requires_1.xml20
-rw-r--r--doc/generated/examples/depends_ex1_1.xml7
-rw-r--r--doc/generated/examples/depends_ex1_2.xml7
-rw-r--r--doc/generated/examples/depends_ex1_3.xml8
-rw-r--r--doc/generated/examples/depends_ex1_4.xml9
-rw-r--r--doc/generated/examples/depends_ex1_5.xml9
-rw-r--r--doc/generated/examples/depends_ex1_6.xml7
-rw-r--r--doc/generated/examples/depends_ex1_7.xml7
-rw-r--r--doc/generated/examples/depends_ex1_8.xml7
-rw-r--r--doc/generated/examples/depends_ex5_1.xml5
-rw-r--r--doc/generated/examples/depends_ex5_2.xml6
-rw-r--r--doc/generated/examples/depends_ignore_explicit_1.xml9
-rw-r--r--doc/generated/examples/depends_include_1.xml11
-rw-r--r--doc/generated/examples/depends_include_SConstruct3
-rw-r--r--doc/generated/examples/depends_include_hello.h3
-rw-r--r--doc/generated/examples/depends_macroinc_1.xml8
-rw-r--r--doc/generated/examples/depends_match_1.xml7
-rw-r--r--doc/generated/examples/depends_mixing_1.xml11
-rw-r--r--doc/generated/examples/depends_newer_1.xml7
-rw-r--r--doc/generated/examples/depends_no-Requires_1.xml14
-rw-r--r--doc/generated/examples/depends_parsedep_1.xml8
-rw-r--r--doc/generated/examples/environments_Append-nonexistent_1.xml5
-rw-r--r--doc/generated/examples/environments_Prepend-nonexistent_1.xml5
-rw-r--r--doc/generated/examples/environments_Replace-nonexistent_1.xml5
-rw-r--r--doc/generated/examples/environments_Replace1_1.xml5
-rw-r--r--doc/generated/examples/environments_Replace2_1.xml13
-rw-r--r--doc/generated/examples/environments_ex1_1.xml5
-rw-r--r--doc/generated/examples/environments_ex2_1.xml7
-rw-r--r--doc/generated/examples/environments_ex3_1.xml6
-rw-r--r--doc/generated/examples/environments_ex4_1.xml7
-rw-r--r--doc/generated/examples/environments_ex5_1.xml9
-rw-r--r--doc/generated/examples/environments_ex6_1.xml5
-rw-r--r--doc/generated/examples/environments_ex6b_1.xml7
-rw-r--r--doc/generated/examples/environments_ex6b_2.xml7
-rw-r--r--doc/generated/examples/environments_ex8_1.xml5
-rw-r--r--doc/generated/examples/environments_ex9_1.xml5
-rw-r--r--doc/generated/examples/environments_missing1_1.xml5
-rw-r--r--doc/generated/examples/environments_missing2_1.xml6
-rw-r--r--doc/generated/examples/environments_missing3_1.xml5
-rw-r--r--doc/generated/examples/factories_Chmod_1.xml5
-rw-r--r--doc/generated/examples/factories_Copy1_1.xml4
-rw-r--r--doc/generated/examples/factories_Copy2_1.xml4
-rw-r--r--doc/generated/examples/factories_Copy3_1.xml6
-rw-r--r--doc/generated/examples/factories_Delete1_1.xml7
-rw-r--r--doc/generated/examples/factories_Delete2_1.xml5
-rw-r--r--doc/generated/examples/factories_Execute_1.xml9
-rw-r--r--doc/generated/examples/factories_Mkdir_1.xml9
-rw-r--r--doc/generated/examples/factories_Move_1.xml6
-rw-r--r--doc/generated/examples/factories_Touch_1.xml5
-rw-r--r--doc/generated/examples/fileremoval_clean-ex1_1.xml7
-rw-r--r--doc/generated/examples/fileremoval_noclean-ex1_1.xml15
-rw-r--r--doc/generated/examples/fileremoval_precious-ex1_1.xml7
-rw-r--r--doc/generated/examples/hierarchy_Return_1.xml7
-rw-r--r--doc/generated/examples/hierarchy_Return_foo_SConscript5
-rw-r--r--doc/generated/examples/hierarchy_ex1_1.xml11
-rw-r--r--doc/generated/examples/hierarchy_ex1_prog1_SConscript4
-rw-r--r--doc/generated/examples/hierarchy_ex1_prog2_SConscript4
-rw-r--r--doc/generated/examples/hierarchy_ex2_1.xml7
-rw-r--r--doc/generated/examples/hierarchy_ex3_1.xml7
-rw-r--r--doc/generated/examples/install_ex1_1.xml7
-rw-r--r--doc/generated/examples/install_ex2_1.xml7
-rw-r--r--doc/generated/examples/install_ex3_1.xml9
-rw-r--r--doc/generated/examples/install_ex4_1.xml6
-rw-r--r--doc/generated/examples/install_ex5_1.xml9
-rw-r--r--doc/generated/examples/java_JAVACLASSDIR_1.xml5
-rw-r--r--doc/generated/examples/java_RMIC_1.xml5
-rw-r--r--doc/generated/examples/java_jar1_1.xml5
-rw-r--r--doc/generated/examples/java_jar2_1.xml7
-rw-r--r--doc/generated/examples/java_java-classes_1.xml6
-rw-r--r--doc/generated/examples/java_java-classes_2.xml11
-rw-r--r--doc/generated/examples/java_java_1.xml4
-rw-r--r--doc/generated/examples/java_javah_1.xml5
-rw-r--r--doc/generated/examples/java_javah_file_1.xml5
-rw-r--r--doc/generated/examples/lesssimple_ex2_1.xml7
-rw-r--r--doc/generated/examples/lesssimple_ex3_1.xml7
-rw-r--r--doc/generated/examples/lesssimple_ex3_2.xml8
-rw-r--r--doc/generated/examples/lesssimple_ex4_1.xml8
-rw-r--r--doc/generated/examples/lesssimple_ex5_1.xml10
-rw-r--r--doc/generated/examples/lesssimple_target_1.xml5
-rw-r--r--doc/generated/examples/lesssimple_target_2.xml6
-rw-r--r--doc/generated/examples/libraries_SharedLibrary_1.xml7
-rw-r--r--doc/generated/examples/libraries_SharedLibrary_2.xml9
-rw-r--r--doc/generated/examples/libraries_ex1_1.xml8
-rw-r--r--doc/generated/examples/libraries_ex1_2.xml7
-rw-r--r--doc/generated/examples/libraries_ex2_1.xml10
-rw-r--r--doc/generated/examples/libraries_ex2_2.xml10
-rw-r--r--doc/generated/examples/libraries_ex3_1.xml5
-rw-r--r--doc/generated/examples/libraries_ex3_2.xml6
-rw-r--r--doc/generated/examples/libraries_objects_1.xml7
-rw-r--r--doc/generated/examples/mergeflags_MergeFlags1_1.xml5
-rw-r--r--doc/generated/examples/mergeflags_MergeFlags2_1.xml5
-rw-r--r--doc/generated/examples/mergeflags_MergeFlags3_1.xml6
-rw-r--r--doc/generated/examples/misc_Exit_1.xml7
-rw-r--r--doc/generated/examples/misc_FindFile1a_1.xml6
-rw-r--r--doc/generated/examples/misc_FindFile1b_1.xml8
-rw-r--r--doc/generated/examples/misc_FindFile1d_1.xml7
-rw-r--r--doc/generated/examples/misc_FindFile2_1.xml6
-rw-r--r--doc/generated/examples/misc_FindFile2_2.xml6
-rw-r--r--doc/generated/examples/misc_FindFile3_1.xml5
-rw-r--r--doc/generated/examples/misc_Flatten1_1.xml6
-rw-r--r--doc/generated/examples/misc_Flatten2_1.xml6
-rw-r--r--doc/generated/examples/nodes_GetBuildPath_1.xml5
-rw-r--r--doc/generated/examples/nodes_ex1_1.xml6
-rw-r--r--doc/generated/examples/nodes_ex1_2.xml7
-rw-r--r--doc/generated/examples/nodes_exists_1.xml6
-rw-r--r--doc/generated/examples/nodes_print_1.xml7
-rw-r--r--doc/generated/examples/nodes_print_2.xml8
-rw-r--r--doc/generated/examples/output_Progress-TARGET_1.xml15
-rw-r--r--doc/generated/examples/output_ex1_1.xml10
-rw-r--r--doc/generated/examples/output_ex2_1.xml11
-rw-r--r--doc/generated/examples/output_ex2_2.xml9
-rw-r--r--doc/generated/examples/output_gbf2_1.xml9
-rw-r--r--doc/generated/examples/parseflags_ex1_1.xml8
-rw-r--r--doc/generated/examples/parseflags_ex1_2.xml9
-rw-r--r--doc/generated/examples/parseflags_ex2_1.xml6
-rw-r--r--doc/generated/examples/parseflags_ex3_1.xml8
-rw-r--r--doc/generated/examples/parseflags_ex4_1.xml8
-rw-r--r--doc/generated/examples/repositories_CPPPATH3_1.xml5
-rw-r--r--doc/generated/examples/repositories_CPPPATH_1.xml5
-rw-r--r--doc/generated/examples/repositories_ex1_1.xml5
-rw-r--r--doc/generated/examples/repositories_ex2_1.xml5
-rw-r--r--doc/generated/examples/repositories_ex3_1.xml5
-rw-r--r--doc/generated/examples/repositories_ex4_1.xml8
-rw-r--r--doc/generated/examples/repositories_quote1_1.xml5
-rw-r--r--doc/generated/examples/separate_builddir_1.xml9
-rw-r--r--doc/generated/examples/separate_builddir_sconscript_1.xml9
-rw-r--r--doc/generated/examples/separate_builddir_sconscript_SConstruct4
-rw-r--r--doc/generated/examples/separate_duplicate0_1.xml9
-rw-r--r--doc/generated/examples/separate_ex1_1.xml9
-rw-r--r--doc/generated/examples/separate_glob_builddir_sconscript_1.xml10
-rw-r--r--doc/generated/examples/sideeffect_parallel_1.xml5
-rw-r--r--doc/generated/examples/sideeffect_shared_1.xml5
-rw-r--r--doc/generated/examples/sideeffect_simple_1.xml10
-rw-r--r--doc/generated/examples/simple_Object_1.xml8
-rw-r--r--doc/generated/examples/simple_Object_2.xml8
-rw-r--r--doc/generated/examples/simple_clean_1.xml16
-rw-r--r--doc/generated/examples/simple_clean_2.xml17
-rw-r--r--doc/generated/examples/simple_declarative_1.xml14
-rw-r--r--doc/generated/examples/simple_ex1_1.xml9
-rw-r--r--doc/generated/examples/simple_ex1_2.xml10
-rw-r--r--doc/generated/examples/simple_ex1_3.xml10
-rw-r--r--doc/generated/examples/simple_ex1_4.xml6
-rw-r--r--doc/generated/examples/simple_java_1.xml8
-rw-r--r--doc/generated/examples/sourcecode_bitkeeper_1.xml6
-rw-r--r--doc/generated/examples/sourcecode_cvs_1.xml6
-rw-r--r--doc/generated/examples/sourcecode_rcs_1.xml6
-rw-r--r--doc/generated/examples/sourcecode_sccs_1.xml6
-rw-r--r--doc/generated/examples/tasks_ex1_1.xml7
-rw-r--r--doc/generated/examples/tasks_ex1_main.cpp3
-rw-r--r--doc/generated/examples/troubleshoot_Dump_1.xml74
-rw-r--r--doc/generated/examples/troubleshoot_Dump_2.xml107
-rw-r--r--doc/generated/examples/troubleshoot_Dump_ENV_1.xml9
-rw-r--r--doc/generated/examples/troubleshoot_Dump_ENV_2.xml11
-rw-r--r--doc/generated/examples/troubleshoot_explain1_1.xml8
-rw-r--r--doc/generated/examples/troubleshoot_explain1_2.xml5
-rw-r--r--doc/generated/examples/troubleshoot_explain1_3.xml7
-rw-r--r--doc/generated/examples/troubleshoot_explain2_1.xml13
-rw-r--r--doc/generated/examples/troubleshoot_explain3_1.xml17
-rw-r--r--doc/generated/examples/troubleshoot_findlibs_1.xml14
-rw-r--r--doc/generated/examples/troubleshoot_stacktrace_1.xml4
-rw-r--r--doc/generated/examples/troubleshoot_stacktrace_2.xml13
-rw-r--r--doc/generated/examples/troubleshoot_taskmastertrace_1.xml63
-rw-r--r--doc/generated/examples/troubleshoot_tree1_1.xml32
-rw-r--r--doc/generated/examples/troubleshoot_tree1_2.xml7
-rw-r--r--doc/generated/examples/troubleshoot_tree1_3.xml11
-rw-r--r--doc/generated/examples/troubleshoot_tree1_4.xml43
-rw-r--r--doc/generated/examples/troubleshoot_tree1_5.xml15
-rw-r--r--doc/generated/examples/troubleshoot_tree1_6.xml26
-rw-r--r--doc/generated/examples/troubleshoot_tree2_1.xml73
-rw-r--r--doc/generated/examples/troubleshoot_tree2_2.xml45
-rw-r--r--doc/generated/examples/variants_ex_1.xml11
-rw-r--r--doc/generated/examples/variants_ex_2.xml11
-rw-r--r--doc/generated/functions.gen5120
-rw-r--r--doc/generated/functions.mod375
-rw-r--r--doc/generated/tools.gen1003
-rw-r--r--doc/generated/tools.mod217
-rw-r--r--doc/generated/variables.gen7398
-rw-r--r--doc/generated/variables.mod1167
-rw-r--r--doc/images/overview.graphml418
-rw-r--r--doc/man/MANIFEST17
-rw-r--r--doc/man/SConstruct68
-rw-r--r--doc/man/cover.jpgbin0 -> 306 bytes
-rw-r--r--doc/man/epub.css33
-rw-r--r--doc/man/epub.xsl (renamed from doc/user/ant.in)87
-rw-r--r--doc/man/html.xsl59
-rw-r--r--doc/man/pdf.xsl74
-rw-r--r--doc/man/scons-time.11017
-rw-r--r--doc/man/scons-time.xml1284
-rw-r--r--doc/man/scons.16244
-rw-r--r--doc/man/scons.css263
-rw-r--r--doc/man/scons.xml7101
-rw-r--r--doc/man/scons_title.xsl6517
-rw-r--r--doc/man/sconsign.1208
-rw-r--r--doc/man/sconsign.xml267
-rw-r--r--doc/man/titlepage/SConsBuildBricks_path.svg320
-rw-r--r--doc/man/titlepage/SCons_path.svg196
-rwxr-xr-xdoc/man/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/man/titlepage/mapnik_final_colors.svg6397
-rw-r--r--doc/overview.rst174
-rw-r--r--doc/python10/MANIFEST12
-rw-r--r--doc/python10/SConstruct46
-rw-r--r--doc/python10/abstract.xml37
-rw-r--r--doc/python10/acks.xml39
-rw-r--r--doc/python10/arch.eps134
-rw-r--r--doc/python10/arch.svg124
-rw-r--r--doc/python10/builder.eps325
-rw-r--r--doc/python10/builder.svg330
-rw-r--r--doc/python10/copyright.xml14
-rw-r--r--doc/python10/design.xml143
-rw-r--r--doc/python10/future.xml39
-rw-r--r--doc/python10/install.xml39
-rw-r--r--doc/python10/intro.xml39
-rw-r--r--doc/python10/job-task.eps238
-rw-r--r--doc/python10/job-task.svg244
-rw-r--r--doc/python10/main.xml85
-rw-r--r--doc/python10/node.eps351
-rw-r--r--doc/python10/node.svg414
-rw-r--r--doc/python10/process.xml39
-rw-r--r--doc/python10/scanner.eps168
-rw-r--r--doc/python10/scanner.svg160
-rw-r--r--doc/python10/scons.mod428
-rw-r--r--doc/python10/sig.eps147
-rw-r--r--doc/python10/sig.svg124
-rw-r--r--doc/python10/summary.xml52
-rw-r--r--doc/reference/Alias.xml16
-rw-r--r--doc/reference/CFile.xml16
-rw-r--r--doc/reference/CXXFile.xml16
-rw-r--r--doc/reference/Command.xml16
-rw-r--r--doc/reference/Install.xml16
-rw-r--r--doc/reference/InstallAs.xml16
-rw-r--r--doc/reference/Library.xml52
-rw-r--r--doc/reference/MANIFEST10
-rw-r--r--doc/reference/Object.xml16
-rw-r--r--doc/reference/PCH.xml16
-rw-r--r--doc/reference/PDF.xml16
-rw-r--r--doc/reference/PostScript.xml16
-rw-r--r--doc/reference/Program.xml16
-rw-r--r--doc/reference/RES.xml16
-rw-r--r--doc/reference/SConstruct50
-rw-r--r--doc/reference/SharedLibrary.xml16
-rw-r--r--doc/reference/SharedObject.xml16
-rw-r--r--doc/reference/StaticLibrary.xml16
-rw-r--r--doc/reference/StaticObject.xml16
-rw-r--r--doc/reference/chtml.xsl56
-rw-r--r--doc/reference/copyright.xml14
-rw-r--r--doc/reference/errors.xml16
-rw-r--r--doc/reference/html.xsl (renamed from doc/user/builders.in)112
-rw-r--r--doc/reference/main.xml196
-rw-r--r--doc/reference/pdf.xsl71
-rw-r--r--doc/reference/preface.xml16
-rw-r--r--doc/reference/scons.css263
-rw-r--r--doc/reference/scons_title.xsl6352
-rw-r--r--doc/reference/titlepage/SConsBuildBricks_path.svg320
-rw-r--r--doc/reference/titlepage/SCons_path.svg196
-rwxr-xr-xdoc/reference/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/reference/titlepage/mapnik_final_colors.svg6397
-rw-r--r--doc/scons.mod717
-rw-r--r--doc/user/MANIFEST15
-rw-r--r--doc/user/README2
-rw-r--r--doc/user/SConstruct66
-rw-r--r--doc/user/actions.in404
-rw-r--r--doc/user/actions.xml38
-rw-r--r--doc/user/add-method.in127
-rw-r--r--doc/user/add-method.xml123
-rw-r--r--doc/user/alias.in102
-rw-r--r--doc/user/alias.xml112
-rw-r--r--doc/user/ant.xml26
-rw-r--r--doc/user/build-install.in709
-rw-r--r--doc/user/build-install.xml70
-rw-r--r--doc/user/builders-built-in.in950
-rw-r--r--doc/user/builders-built-in.xml241
-rw-r--r--doc/user/builders-commands.in156
-rw-r--r--doc/user/builders-commands.xml80
-rw-r--r--doc/user/builders-writing.in1108
-rw-r--r--doc/user/builders-writing.xml532
-rw-r--r--doc/user/builders.xml48
-rw-r--r--doc/user/caching.in502
-rw-r--r--doc/user/caching.xml236
-rw-r--r--doc/user/chtml.xsl60
-rw-r--r--doc/user/command-line.in2345
-rw-r--r--doc/user/command-line.xml1248
-rw-r--r--doc/user/copyright.in32
-rw-r--r--doc/user/copyright.xml14
-rw-r--r--doc/user/cover.jpgbin0 -> 306 bytes
-rw-r--r--doc/user/depends.in1872
-rw-r--r--doc/user/depends.xml872
-rw-r--r--doc/user/environments.in1752
-rw-r--r--doc/user/environments.xml640
-rw-r--r--doc/user/epub.css33
-rw-r--r--doc/user/epub.xsl (renamed from doc/user/example.in)77
-rw-r--r--doc/user/errors.xml25
-rw-r--r--doc/user/example.xml26
-rw-r--r--doc/user/factories.in507
-rw-r--r--doc/user/factories.xml329
-rw-r--r--doc/user/file-removal.in223
-rw-r--r--doc/user/file-removal.xml133
-rw-r--r--doc/user/functions.in38
-rw-r--r--doc/user/functions.xml29
-rw-r--r--doc/user/gettext.in351
-rw-r--r--doc/user/gettext.xml353
-rw-r--r--doc/user/hierarchy.in794
-rw-r--r--doc/user/hierarchy.xml324
-rw-r--r--doc/user/html.xsl59
-rw-r--r--doc/user/install.in247
-rw-r--r--doc/user/install.xml194
-rw-r--r--doc/user/java.in657
-rw-r--r--doc/user/java.xml431
-rw-r--r--doc/user/less-simple.in623
-rw-r--r--doc/user/less-simple.xml272
-rw-r--r--doc/user/libraries.in445
-rw-r--r--doc/user/libraries.xml242
-rw-r--r--doc/user/main.in411
-rw-r--r--doc/user/main.xml351
-rw-r--r--doc/user/make.in121
-rw-r--r--doc/user/make.xml25
-rw-r--r--doc/user/mergeflags.in137
-rw-r--r--doc/user/mergeflags.xml102
-rw-r--r--doc/user/misc.in606
-rw-r--r--doc/user/misc.xml408
-rw-r--r--doc/user/nodes.in431
-rw-r--r--doc/user/nodes.xml206
-rw-r--r--doc/user/output.in681
-rw-r--r--doc/user/output.xml361
-rw-r--r--doc/user/parseconfig.in140
-rw-r--r--doc/user/parseconfig.xml69
-rw-r--r--doc/user/parseflags.in176
-rw-r--r--doc/user/parseflags.xml179
-rw-r--r--doc/user/pdf.xsl75
-rw-r--r--doc/user/preface.in426
-rw-r--r--doc/user/preface.xml25
-rw-r--r--doc/user/python.in154
-rw-r--r--doc/user/python.xml33
-rw-r--r--doc/user/repositories.in641
-rw-r--r--doc/user/repositories.xml253
-rw-r--r--doc/user/run.in375
-rw-r--r--doc/user/run.xml25
-rw-r--r--doc/user/scanners.in392
-rw-r--r--doc/user/scanners.xml111
-rw-r--r--doc/user/sconf.in486
-rw-r--r--doc/user/sconf.xml301
-rw-r--r--doc/user/scons.css263
-rw-r--r--doc/user/scons_title.xsl6352
-rw-r--r--doc/user/separate.in540
-rw-r--r--doc/user/separate.xml219
-rw-r--r--doc/user/sideeffect.in216
-rw-r--r--doc/user/sideeffect.xml117
-rw-r--r--doc/user/simple.in517
-rw-r--r--doc/user/simple.xml249
-rw-r--r--doc/user/sourcecode.in162
-rw-r--r--doc/user/sourcecode.xml128
-rw-r--r--doc/user/tasks.in146
-rw-r--r--doc/user/tasks.xml64
-rw-r--r--doc/user/titlepage/SConsBuildBricks_path.svg320
-rw-r--r--doc/user/titlepage/SCons_path.svg196
-rwxr-xr-xdoc/user/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/user/titlepage/mapnik_final_colors.svg6397
-rw-r--r--doc/user/tools.in38
-rw-r--r--doc/user/tools.xml29
-rw-r--r--doc/user/troubleshoot.in914
-rw-r--r--doc/user/troubleshoot.xml907
-rw-r--r--doc/user/variables.in56
-rw-r--r--doc/user/variables.xml29
-rw-r--r--doc/user/variants.in151
-rw-r--r--doc/user/variants.xml125
-rw-r--r--doc/version.xml7
-rw-r--r--doc/xsd/calstblx.xsd390
-rw-r--r--doc/xsd/dbhierx.xsd2186
-rw-r--r--doc/xsd/dbnotnx.xsd102
-rw-r--r--doc/xsd/dbpoolx.xsd8682
-rw-r--r--doc/xsd/htmltblx.xsd431
-rw-r--r--doc/xsd/scons.xsd99
-rw-r--r--doc/xsd/xml.xsd15
-rw-r--r--doc/xslt/to_docbook.xslt102
-rw-r--r--doc/xslt/xinclude_examples.xslt40
-rw-r--r--src/Announce.txt44
-rw-r--r--src/CHANGES.txt88
-rw-r--r--src/LICENSE.txt2
-rw-r--r--src/README.txt18
-rw-r--r--src/RELEASE.txt104
-rw-r--r--src/engine/MANIFEST-xml.in110
-rw-r--r--src/engine/MANIFEST.in29
-rw-r--r--src/engine/SCons/Action.py18
-rw-r--r--src/engine/SCons/Action.xml57
-rw-r--r--src/engine/SCons/ActionTests.py4
-rw-r--r--src/engine/SCons/Builder.py11
-rw-r--r--src/engine/SCons/BuilderTests.py4
-rw-r--r--src/engine/SCons/CacheDir.py12
-rw-r--r--src/engine/SCons/CacheDirTests.py4
-rw-r--r--src/engine/SCons/Conftest.py8
-rw-r--r--src/engine/SCons/Debug.py21
-rw-r--r--src/engine/SCons/Defaults.py4
-rw-r--r--src/engine/SCons/Defaults.xml171
-rw-r--r--src/engine/SCons/DefaultsTests.py4
-rw-r--r--src/engine/SCons/Environment.py51
-rw-r--r--src/engine/SCons/Environment.xml723
-rw-r--r--src/engine/SCons/EnvironmentTests.py43
-rw-r--r--src/engine/SCons/Errors.py4
-rw-r--r--src/engine/SCons/ErrorsTests.py4
-rw-r--r--src/engine/SCons/Executor.py17
-rw-r--r--src/engine/SCons/ExecutorTests.py4
-rw-r--r--src/engine/SCons/Job.py4
-rw-r--r--src/engine/SCons/JobTests.py4
-rw-r--r--src/engine/SCons/Memoize.py4
-rw-r--r--src/engine/SCons/MemoizeTests.py4
-rw-r--r--src/engine/SCons/Node/Alias.py4
-rw-r--r--src/engine/SCons/Node/AliasTests.py4
-rw-r--r--src/engine/SCons/Node/FS.py160
-rw-r--r--src/engine/SCons/Node/FSTests.py4
-rw-r--r--src/engine/SCons/Node/NodeTests.py17
-rw-r--r--src/engine/SCons/Node/Python.py4
-rw-r--r--src/engine/SCons/Node/PythonTests.py4
-rw-r--r--src/engine/SCons/Node/__init__.py110
-rw-r--r--src/engine/SCons/Options/BoolOption.py4
-rw-r--r--src/engine/SCons/Options/EnumOption.py4
-rw-r--r--src/engine/SCons/Options/ListOption.py4
-rw-r--r--src/engine/SCons/Options/PackageOption.py4
-rw-r--r--src/engine/SCons/Options/PathOption.py4
-rw-r--r--src/engine/SCons/Options/__init__.py4
-rw-r--r--src/engine/SCons/PathList.py4
-rw-r--r--src/engine/SCons/PathListTests.py4
-rw-r--r--src/engine/SCons/Platform/PlatformTests.py4
-rw-r--r--src/engine/SCons/Platform/__init__.py4
-rw-r--r--src/engine/SCons/Platform/__init__.xml67
-rw-r--r--src/engine/SCons/Platform/aix.py4
-rw-r--r--src/engine/SCons/Platform/cygwin.py4
-rw-r--r--src/engine/SCons/Platform/darwin.py4
-rw-r--r--src/engine/SCons/Platform/hpux.py4
-rw-r--r--src/engine/SCons/Platform/irix.py4
-rw-r--r--src/engine/SCons/Platform/os2.py4
-rw-r--r--src/engine/SCons/Platform/posix.py175
-rw-r--r--src/engine/SCons/Platform/posix.xml31
-rw-r--r--src/engine/SCons/Platform/sunos.py4
-rw-r--r--src/engine/SCons/Platform/sunos.xml27
-rw-r--r--src/engine/SCons/Platform/win32.py4
-rw-r--r--src/engine/SCons/Platform/win32.xml25
-rw-r--r--src/engine/SCons/SConf.py22
-rw-r--r--src/engine/SCons/SConfTests.py6
-rw-r--r--src/engine/SCons/SConsign.py4
-rw-r--r--src/engine/SCons/SConsignTests.py4
-rw-r--r--src/engine/SCons/Scanner/C.py4
-rw-r--r--src/engine/SCons/Scanner/CTests.py4
-rw-r--r--src/engine/SCons/Scanner/D.py4
-rw-r--r--src/engine/SCons/Scanner/Dir.py4
-rw-r--r--src/engine/SCons/Scanner/DirTests.py4
-rw-r--r--src/engine/SCons/Scanner/Fortran.py4
-rw-r--r--src/engine/SCons/Scanner/FortranTests.py4
-rw-r--r--src/engine/SCons/Scanner/IDL.py4
-rw-r--r--src/engine/SCons/Scanner/IDLTests.py4
-rw-r--r--src/engine/SCons/Scanner/LaTeX.py4
-rw-r--r--src/engine/SCons/Scanner/LaTeXTests.py4
-rw-r--r--src/engine/SCons/Scanner/Prog.py4
-rw-r--r--src/engine/SCons/Scanner/ProgTests.py4
-rw-r--r--src/engine/SCons/Scanner/RC.py4
-rw-r--r--src/engine/SCons/Scanner/RCTests.py4
-rw-r--r--src/engine/SCons/Scanner/ScannerTests.py4
-rw-r--r--src/engine/SCons/Scanner/__init__.py4
-rw-r--r--src/engine/SCons/Scanner/__init__.xml33
-rw-r--r--src/engine/SCons/Script/Interactive.py4
-rw-r--r--src/engine/SCons/Script/Main.py42
-rw-r--r--src/engine/SCons/Script/Main.xml134
-rw-r--r--src/engine/SCons/Script/MainTests.py4
-rw-r--r--src/engine/SCons/Script/SConsOptions.py118
-rw-r--r--src/engine/SCons/Script/SConscript.py4
-rw-r--r--src/engine/SCons/Script/SConscript.xml165
-rw-r--r--src/engine/SCons/Script/SConscriptTests.py4
-rw-r--r--src/engine/SCons/Script/__init__.py4
-rw-r--r--src/engine/SCons/Sig.py4
-rw-r--r--src/engine/SCons/Subst.py18
-rw-r--r--src/engine/SCons/Subst.xml33
-rw-r--r--src/engine/SCons/SubstTests.py9
-rw-r--r--src/engine/SCons/Taskmaster.py41
-rw-r--r--src/engine/SCons/TaskmasterTests.py9
-rw-r--r--src/engine/SCons/Tool/386asm.py4
-rw-r--r--src/engine/SCons/Tool/386asm.xml43
-rw-r--r--src/engine/SCons/Tool/BitKeeper.py4
-rw-r--r--src/engine/SCons/Tool/BitKeeper.xml55
-rw-r--r--src/engine/SCons/Tool/CVS.py4
-rw-r--r--src/engine/SCons/Tool/CVS.xml59
-rw-r--r--src/engine/SCons/Tool/FortranCommon.py4
-rw-r--r--src/engine/SCons/Tool/GettextCommon.py4
-rw-r--r--src/engine/SCons/Tool/JavaCommon.py4
-rw-r--r--src/engine/SCons/Tool/JavaCommonTests.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/__init__.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/arch.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/common.py30
-rw-r--r--src/engine/SCons/Tool/MSCommon/netframework.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/sdk.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/vc.py45
-rw-r--r--src/engine/SCons/Tool/MSCommon/vs.py4
-rw-r--r--src/engine/SCons/Tool/Perforce.py4
-rw-r--r--src/engine/SCons/Tool/Perforce.xml53
-rw-r--r--src/engine/SCons/Tool/PharLapCommon.py4
-rw-r--r--src/engine/SCons/Tool/PharLapCommonTests.py4
-rw-r--r--src/engine/SCons/Tool/RCS.py4
-rw-r--r--src/engine/SCons/Tool/RCS.xml57
-rw-r--r--src/engine/SCons/Tool/SCCS.py4
-rw-r--r--src/engine/SCons/Tool/SCCS.xml55
-rw-r--r--src/engine/SCons/Tool/Subversion.py4
-rw-r--r--src/engine/SCons/Tool/Subversion.xml51
-rw-r--r--src/engine/SCons/Tool/ToolTests.py4
-rw-r--r--src/engine/SCons/Tool/__init__.py60
-rw-r--r--src/engine/SCons/Tool/__init__.xml130
-rw-r--r--src/engine/SCons/Tool/aixc++.py4
-rw-r--r--src/engine/SCons/Tool/aixc++.xml33
-rw-r--r--src/engine/SCons/Tool/aixcc.py4
-rw-r--r--src/engine/SCons/Tool/aixcc.xml31
-rw-r--r--src/engine/SCons/Tool/aixf77.py4
-rw-r--r--src/engine/SCons/Tool/aixf77.xml29
-rw-r--r--src/engine/SCons/Tool/aixlink.py4
-rw-r--r--src/engine/SCons/Tool/aixlink.xml33
-rw-r--r--src/engine/SCons/Tool/applelink.py4
-rw-r--r--src/engine/SCons/Tool/applelink.xml77
-rw-r--r--src/engine/SCons/Tool/ar.py4
-rw-r--r--src/engine/SCons/Tool/ar.xml65
-rw-r--r--src/engine/SCons/Tool/as.py4
-rw-r--r--src/engine/SCons/Tool/as.xml65
-rw-r--r--src/engine/SCons/Tool/bcc32.py4
-rw-r--r--src/engine/SCons/Tool/bcc32.xml59
-rw-r--r--src/engine/SCons/Tool/c++.py4
-rw-r--r--src/engine/SCons/Tool/c++.xml79
-rw-r--r--src/engine/SCons/Tool/cc.py4
-rw-r--r--src/engine/SCons/Tool/cc.xml99
-rw-r--r--src/engine/SCons/Tool/cvf.py4
-rw-r--r--src/engine/SCons/Tool/cvf.xml55
-rw-r--r--src/engine/SCons/Tool/cyglink.py94
-rw-r--r--src/engine/SCons/Tool/default.py4
-rw-r--r--src/engine/SCons/Tool/default.xml25
-rw-r--r--src/engine/SCons/Tool/dmd.py4
-rw-r--r--src/engine/SCons/Tool/dmd.xml99
-rw-r--r--src/engine/SCons/Tool/docbook/__init__.py877
-rw-r--r--src/engine/SCons/Tool/docbook/__init__.xml608
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.CatalogManager.properties.example61
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.urilist1
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS4
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS21
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING47
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL88
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile89
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS139
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml145
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/README157
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html8353
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt8575
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml10327
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION115
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml8
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl44
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl154
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml672
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml724
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml662
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml185
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl221
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml622
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl2039
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml700
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml1245
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml664
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml666
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml729
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent67
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml676
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml670
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml690
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl839
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml662
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml678
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl111
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml672
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml700
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml732
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd64
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml77
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl593
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl890
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml678
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml730
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml666
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl1225
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml168
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl346
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml678
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml781
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl1352
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml726
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml720
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml679
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl352
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl155
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml664
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl514
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd49
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl333
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl805
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml666
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml726
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml259
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl290
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml1229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml660
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml10
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml18
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css79
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included33905
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml11
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl306
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl111
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl269
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README88
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub76
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb227
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl12
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl1690
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt264
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt12
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt4
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py239
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py84
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl130
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl18
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl172
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl139
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl1330
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl915
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl110
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl1300
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl1169
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl654
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl231
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl887
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl612
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl335
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl325
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl154
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl117
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl220
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl93
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl223
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl642
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl1169
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl648
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl77
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl425
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl484
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl1288
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl21
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl1393
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl140
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl2569
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml12445
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl946
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index140
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml1002
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl1092
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl289
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl77
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl395
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl638
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl764
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl274
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl1007
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml135
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl1681
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl91
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml1354
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl5182
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl767
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl332
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl465
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl180
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl1538
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml101
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl120
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml150
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml187
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml200
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml45
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml117
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml147
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml90
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml116
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml120
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml149
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml100
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml180
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl134
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl169
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl165
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl120
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl739
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl707
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl1300
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl1253
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl538
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl201
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl121
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl99
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl674
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl1920
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl439
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl72
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl543
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl425
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl217
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl480
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl329
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl313
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl425
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl492
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl1515
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl86
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl336
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl612
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl135
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl288
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl1490
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl1183
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl86
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl270
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl202
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml10905
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl434
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml1113
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl1263
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl615
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl413
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl437
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl299
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl615
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl1554
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl1200
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl76
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml708
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl3817
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl1047
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl350
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl410
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl1377
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl1120
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl1083
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg15
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg18
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg18
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg17
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg17
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg21
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg17
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg18
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg21
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg18
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg20
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg141
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg498
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg239
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg338
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg200
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg338
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg367
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg338
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg232
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg19
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh977
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl625
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl549
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl480
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917195
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl411
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl6013
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl311
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl586
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl1567
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl800
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl219
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl604
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl888
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml3220
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl193
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml70
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl79
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl281
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl319
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl432
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl633
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl555
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml41
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml71
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml73
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml104
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml64
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml71
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml40
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml119
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml76
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml83
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml44
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml80
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml41
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml41
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml40
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml59
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml72
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml50
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml108
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml252
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml80
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml82
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml44
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml75
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml45
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml40
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml76
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml162
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml54
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml48
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml57
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml54
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml69
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml83
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml68
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml60
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml53
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml57
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml51
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml73
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml76
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml55
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml80
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml297
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml80
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml106
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml105
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml64
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml53
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml47
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml59
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml70
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml61
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml53
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml50
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml40
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml162
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml44
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml63
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml77
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml54
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml50
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml40
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml41
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml146
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml83
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml23
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml24
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml69
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml56
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml53
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml67
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml73
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml73
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml71
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml78
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml40
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml54
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml41
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml86
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml48
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml47
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml72
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml49
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml48
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml89
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml59
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml47
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml41
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml67
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml62
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml43
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml50
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml90
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml45
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml47
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml76
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml26
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml62
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml65
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml44
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml25
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml34
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml35
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml33
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml93
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml56
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml62
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml54
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml40
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml83
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml28
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml29
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml30
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl239
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl56
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl159
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml11
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd76
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl1732
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl178
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl441
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl401
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl1375
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl39
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl1270
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl351
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml105
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl18
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl263
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml1420
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml2
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml3
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl445
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js169
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js142
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css9
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css73
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css1
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css41
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css1
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css119
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js120
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js135
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js537
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js374
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js311
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js80
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js791
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js485
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js77
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js295
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml356
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl74
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml79
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl187
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl528
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl46
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl261
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl70
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl2016
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl151
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl127
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml1376
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl68
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl472
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl1541
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl336
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl667
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl376
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl89
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl600
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl348
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl1524
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl90
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl789
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl704
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl229
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl340
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl1233
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl177
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl580
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl686
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl47
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl246
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl71
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl1982
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl152
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl128
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl70
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl470
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl1534
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl334
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl652
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl358
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml478
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl1280
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml325
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml340
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update53
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook698
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine182
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam59
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE1
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js154
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js321
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js93
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css398
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js72
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css85
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js255
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js161
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html61
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html32
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html117
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html102
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html42
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html37
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html62
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html124
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html71
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js10
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js11
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js224
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js223
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js221
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js513
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js187
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html13
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml928
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js154
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js321
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js93
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css398
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js72
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css85
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js255
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js16
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js161
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props1
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props45
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props179
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props1
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js513
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props31
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js247
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js187
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js299
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl782
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl258
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl227
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl12
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl12
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl316
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl143
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl297
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml788
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl53
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl143
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl213
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl480
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl286
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl821
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl27
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl132
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl114
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl133
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl158
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl139
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl21
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl681
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl663
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl1300
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl1240
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl535
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl188
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl78
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl96
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl645
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl1561
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl302
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl69
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl528
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl395
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl217
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl446
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl328
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl305
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl411
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl564
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl1436
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl88
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl321
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl598
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl102
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl264
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl44
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl1451
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl1088
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl91
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl284
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl176
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl436
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl1203
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl617
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl408
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl420
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl299
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl541
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl1513
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl1168
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl73
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl3817
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl1030
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl330
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl388
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl1316
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl135
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl158
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl139
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl21
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl681
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl663
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl1300
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl1240
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl535
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl188
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl78
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl96
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl645
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl1561
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl302
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl69
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl528
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl395
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl217
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml109
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl446
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl328
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl305
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl411
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl564
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl1436
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl88
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl321
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl598
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl102
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl264
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl44
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl1451
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl1121
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl91
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl22
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl284
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl176
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl436
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl1203
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl617
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl52
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl408
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl36
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl420
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl299
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl541
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl1513
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl1168
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl73
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl3817
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl1030
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl330
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl388
-rw-r--r--src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl1316
-rw-r--r--src/engine/SCons/Tool/docbook/docs/SConstruct34
-rw-r--r--src/engine/SCons/Tool/docbook/docs/html.xsl55
-rw-r--r--src/engine/SCons/Tool/docbook/docs/manual.xml270
-rw-r--r--src/engine/SCons/Tool/docbook/docs/pdf.xsl62
-rw-r--r--src/engine/SCons/Tool/docbook/utils/xmldepend.xsl156
-rw-r--r--src/engine/SCons/Tool/dvi.py4
-rw-r--r--src/engine/SCons/Tool/dvi.xml33
-rw-r--r--src/engine/SCons/Tool/dvipdf.py4
-rw-r--r--src/engine/SCons/Tool/dvipdf.xml43
-rw-r--r--src/engine/SCons/Tool/dvips.py4
-rw-r--r--src/engine/SCons/Tool/dvips.xml55
-rw-r--r--src/engine/SCons/Tool/f03.py4
-rw-r--r--src/engine/SCons/Tool/f03.xml99
-rw-r--r--src/engine/SCons/Tool/f77.py4
-rw-r--r--src/engine/SCons/Tool/f77.xml125
-rw-r--r--src/engine/SCons/Tool/f90.py4
-rw-r--r--src/engine/SCons/Tool/f90.xml99
-rw-r--r--src/engine/SCons/Tool/f95.py4
-rw-r--r--src/engine/SCons/Tool/f95.xml99
-rw-r--r--src/engine/SCons/Tool/filesystem.py4
-rw-r--r--src/engine/SCons/Tool/fortran.py4
-rw-r--r--src/engine/SCons/Tool/fortran.xml113
-rw-r--r--src/engine/SCons/Tool/g++.py4
-rw-r--r--src/engine/SCons/Tool/g++.xml35
-rw-r--r--src/engine/SCons/Tool/g77.py4
-rw-r--r--src/engine/SCons/Tool/g77.xml25
-rw-r--r--src/engine/SCons/Tool/gas.py4
-rw-r--r--src/engine/SCons/Tool/gas.xml27
-rw-r--r--src/engine/SCons/Tool/gcc.py4
-rw-r--r--src/engine/SCons/Tool/gcc.xml31
-rw-r--r--src/engine/SCons/Tool/gettext.py4
-rw-r--r--src/engine/SCons/Tool/gettext.xml97
-rw-r--r--src/engine/SCons/Tool/gfortran.py4
-rw-r--r--src/engine/SCons/Tool/gfortran.xml49
-rw-r--r--src/engine/SCons/Tool/gnulink.py4
-rw-r--r--src/engine/SCons/Tool/gnulink.xml31
-rw-r--r--src/engine/SCons/Tool/gs.py34
-rw-r--r--src/engine/SCons/Tool/gs.xml79
-rw-r--r--src/engine/SCons/Tool/hpc++.py4
-rw-r--r--src/engine/SCons/Tool/hpc++.xml25
-rw-r--r--src/engine/SCons/Tool/hpcc.py4
-rw-r--r--src/engine/SCons/Tool/hpcc.xml31
-rw-r--r--src/engine/SCons/Tool/hplink.py4
-rw-r--r--src/engine/SCons/Tool/hplink.xml31
-rw-r--r--src/engine/SCons/Tool/icc.py4
-rw-r--r--src/engine/SCons/Tool/icc.xml53
-rw-r--r--src/engine/SCons/Tool/icl.py4
-rw-r--r--src/engine/SCons/Tool/icl.xml25
-rw-r--r--src/engine/SCons/Tool/ifl.py4
-rw-r--r--src/engine/SCons/Tool/ifl.xml43
-rw-r--r--src/engine/SCons/Tool/ifort.py4
-rw-r--r--src/engine/SCons/Tool/ifort.xml49
-rw-r--r--src/engine/SCons/Tool/ilink.py4
-rw-r--r--src/engine/SCons/Tool/ilink.xml39
-rw-r--r--src/engine/SCons/Tool/ilink32.py4
-rw-r--r--src/engine/SCons/Tool/ilink32.xml39
-rw-r--r--src/engine/SCons/Tool/install.py45
-rw-r--r--src/engine/SCons/Tool/install.xml43
-rw-r--r--src/engine/SCons/Tool/intelc.py6
-rw-r--r--src/engine/SCons/Tool/intelc.xml39
-rw-r--r--src/engine/SCons/Tool/ipkg.py4
-rw-r--r--src/engine/SCons/Tool/jar.py4
-rw-r--r--src/engine/SCons/Tool/jar.xml61
-rw-r--r--src/engine/SCons/Tool/javac.py4
-rw-r--r--src/engine/SCons/Tool/javac.xml93
-rw-r--r--src/engine/SCons/Tool/javacTests.py2
-rw-r--r--src/engine/SCons/Tool/javah.py4
-rw-r--r--src/engine/SCons/Tool/javah.xml59
-rw-r--r--src/engine/SCons/Tool/latex.py4
-rw-r--r--src/engine/SCons/Tool/latex.xml49
-rw-r--r--src/engine/SCons/Tool/lex.py4
-rw-r--r--src/engine/SCons/Tool/lex.xml45
-rw-r--r--src/engine/SCons/Tool/link.py16
-rw-r--r--src/engine/SCons/Tool/link.xml99
-rw-r--r--src/engine/SCons/Tool/linkloc.py4
-rw-r--r--src/engine/SCons/Tool/linkloc.xml53
-rw-r--r--src/engine/SCons/Tool/m4.py4
-rw-r--r--src/engine/SCons/Tool/m4.xml47
-rw-r--r--src/engine/SCons/Tool/masm.py4
-rw-r--r--src/engine/SCons/Tool/masm.xml47
-rw-r--r--src/engine/SCons/Tool/midl.py4
-rw-r--r--src/engine/SCons/Tool/midl.xml49
-rw-r--r--src/engine/SCons/Tool/mingw.py4
-rw-r--r--src/engine/SCons/Tool/mingw.xml71
-rw-r--r--src/engine/SCons/Tool/msgfmt.py4
-rw-r--r--src/engine/SCons/Tool/msgfmt.xml75
-rw-r--r--src/engine/SCons/Tool/msginit.py4
-rw-r--r--src/engine/SCons/Tool/msginit.xml113
-rw-r--r--src/engine/SCons/Tool/msgmerge.py4
-rw-r--r--src/engine/SCons/Tool/msgmerge.xml107
-rw-r--r--src/engine/SCons/Tool/mslib.py4
-rw-r--r--src/engine/SCons/Tool/mslib.xml37
-rw-r--r--src/engine/SCons/Tool/mslink.py4
-rw-r--r--src/engine/SCons/Tool/mslink.xml155
-rw-r--r--src/engine/SCons/Tool/mssdk.py4
-rw-r--r--src/engine/SCons/Tool/mssdk.xml35
-rw-r--r--src/engine/SCons/Tool/msvc.py4
-rw-r--r--src/engine/SCons/Tool/msvc.xml189
-rw-r--r--src/engine/SCons/Tool/msvs.py4
-rw-r--r--src/engine/SCons/Tool/msvs.xml161
-rw-r--r--src/engine/SCons/Tool/msvsTests.py4
-rw-r--r--src/engine/SCons/Tool/mwcc.py4
-rw-r--r--src/engine/SCons/Tool/mwcc.xml77
-rw-r--r--src/engine/SCons/Tool/mwld.py4
-rw-r--r--src/engine/SCons/Tool/mwld.xml49
-rw-r--r--src/engine/SCons/Tool/nasm.py4
-rw-r--r--src/engine/SCons/Tool/nasm.xml39
-rw-r--r--src/engine/SCons/Tool/packaging.xml47
-rw-r--r--src/engine/SCons/Tool/packaging/__init__.py4
-rw-r--r--src/engine/SCons/Tool/packaging/__init__.xml189
-rw-r--r--src/engine/SCons/Tool/packaging/ipk.py4
-rw-r--r--src/engine/SCons/Tool/packaging/msi.py4
-rw-r--r--src/engine/SCons/Tool/packaging/rpm.py4
-rw-r--r--src/engine/SCons/Tool/packaging/src_tarbz2.py4
-rw-r--r--src/engine/SCons/Tool/packaging/src_targz.py4
-rw-r--r--src/engine/SCons/Tool/packaging/src_zip.py4
-rw-r--r--src/engine/SCons/Tool/packaging/tarbz2.py4
-rw-r--r--src/engine/SCons/Tool/packaging/targz.py4
-rw-r--r--src/engine/SCons/Tool/packaging/zip.py4
-rw-r--r--src/engine/SCons/Tool/pdf.py4
-rw-r--r--src/engine/SCons/Tool/pdf.xml39
-rw-r--r--src/engine/SCons/Tool/pdflatex.py4
-rw-r--r--src/engine/SCons/Tool/pdflatex.xml47
-rw-r--r--src/engine/SCons/Tool/pdftex.py4
-rw-r--r--src/engine/SCons/Tool/pdftex.xml55
-rw-r--r--src/engine/SCons/Tool/qt.py4
-rw-r--r--src/engine/SCons/Tool/qt.xml161
-rw-r--r--src/engine/SCons/Tool/rmic.py4
-rw-r--r--src/engine/SCons/Tool/rmic.xml55
-rw-r--r--src/engine/SCons/Tool/rpcgen.py4
-rw-r--r--src/engine/SCons/Tool/rpcgen.xml73
-rw-r--r--src/engine/SCons/Tool/rpm.py8
-rw-r--r--src/engine/SCons/Tool/rpmutils.py4
-rw-r--r--src/engine/SCons/Tool/sgiar.py4
-rw-r--r--src/engine/SCons/Tool/sgiar.xml43
-rw-r--r--src/engine/SCons/Tool/sgic++.py4
-rw-r--r--src/engine/SCons/Tool/sgic++.xml35
-rw-r--r--src/engine/SCons/Tool/sgicc.py4
-rw-r--r--src/engine/SCons/Tool/sgicc.xml31
-rw-r--r--src/engine/SCons/Tool/sgilink.py4
-rw-r--r--src/engine/SCons/Tool/sgilink.xml33
-rw-r--r--src/engine/SCons/Tool/sunar.py4
-rw-r--r--src/engine/SCons/Tool/sunar.xml45
-rw-r--r--src/engine/SCons/Tool/sunc++.py4
-rw-r--r--src/engine/SCons/Tool/sunc++.xml37
-rw-r--r--src/engine/SCons/Tool/suncc.py4
-rw-r--r--src/engine/SCons/Tool/suncc.xml33
-rw-r--r--src/engine/SCons/Tool/sunf77.py4
-rw-r--r--src/engine/SCons/Tool/sunf77.xml37
-rw-r--r--src/engine/SCons/Tool/sunf90.py4
-rw-r--r--src/engine/SCons/Tool/sunf90.xml37
-rw-r--r--src/engine/SCons/Tool/sunf95.py4
-rw-r--r--src/engine/SCons/Tool/sunf95.xml37
-rw-r--r--src/engine/SCons/Tool/sunlink.py4
-rw-r--r--src/engine/SCons/Tool/sunlink.xml31
-rw-r--r--src/engine/SCons/Tool/swig.py4
-rw-r--r--src/engine/SCons/Tool/swig.xml93
-rw-r--r--src/engine/SCons/Tool/tar.py4
-rw-r--r--src/engine/SCons/Tool/tar.xml55
-rw-r--r--src/engine/SCons/Tool/tex.py4
-rw-r--r--src/engine/SCons/Tool/tex.xml89
-rw-r--r--src/engine/SCons/Tool/textfile.py4
-rw-r--r--src/engine/SCons/Tool/textfile.xml100
-rw-r--r--src/engine/SCons/Tool/tlib.py4
-rw-r--r--src/engine/SCons/Tool/tlib.xml37
-rw-r--r--src/engine/SCons/Tool/wix.py4
-rw-r--r--src/engine/SCons/Tool/wixTests.py4
-rw-r--r--src/engine/SCons/Tool/xgettext.py4
-rw-r--r--src/engine/SCons/Tool/xgettext.xml167
-rw-r--r--src/engine/SCons/Tool/yacc.py4
-rw-r--r--src/engine/SCons/Tool/yacc.xml57
-rw-r--r--src/engine/SCons/Tool/zip.py9
-rw-r--r--src/engine/SCons/Tool/zip.xml80
-rw-r--r--src/engine/SCons/Util.py4
-rw-r--r--src/engine/SCons/UtilTests.py4
-rw-r--r--src/engine/SCons/Variables/BoolVariable.py4
-rw-r--r--src/engine/SCons/Variables/BoolVariableTests.py4
-rw-r--r--src/engine/SCons/Variables/EnumVariable.py4
-rw-r--r--src/engine/SCons/Variables/EnumVariableTests.py4
-rw-r--r--src/engine/SCons/Variables/ListVariable.py4
-rw-r--r--src/engine/SCons/Variables/ListVariableTests.py4
-rw-r--r--src/engine/SCons/Variables/PackageVariable.py4
-rw-r--r--src/engine/SCons/Variables/PackageVariableTests.py4
-rw-r--r--src/engine/SCons/Variables/PathVariable.py4
-rw-r--r--src/engine/SCons/Variables/PathVariableTests.py4
-rw-r--r--src/engine/SCons/Variables/VariablesTests.py4
-rw-r--r--src/engine/SCons/Variables/__init__.py4
-rw-r--r--src/engine/SCons/Warnings.py7
-rw-r--r--src/engine/SCons/WarningsTests.py4
-rw-r--r--src/engine/SCons/__init__.py10
-rw-r--r--src/engine/SCons/compat/__init__.py4
-rw-r--r--src/engine/SCons/compat/_scons_builtins.py4
-rw-r--r--src/engine/SCons/compat/_scons_collections.py4
-rw-r--r--src/engine/SCons/compat/_scons_dbm.py4
-rw-r--r--src/engine/SCons/compat/_scons_hashlib.py4
-rw-r--r--src/engine/SCons/compat/_scons_io.py4
-rw-r--r--src/engine/SCons/cpp.py4
-rw-r--r--src/engine/SCons/cppTests.py4
-rw-r--r--src/engine/SCons/exitfuncs.py4
-rw-r--r--src/script/scons-time.py4
-rw-r--r--src/script/scons.bat6
-rw-r--r--src/script/scons.py10
-rw-r--r--src/script/sconsign.py10
-rw-r--r--src/setup.py78
-rw-r--r--src/test_aegistests.py4
-rw-r--r--src/test_files.py4
-rw-r--r--src/test_interrupts.py4
-rw-r--r--src/test_pychecker.py4
-rw-r--r--src/test_setup.py4
-rw-r--r--src/test_strings.py8
2320 files changed, 614700 insertions, 41426 deletions
diff --git a/LICENSE b/LICENSE
index 69e5559..dab75df 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/QMTest/README.txt b/QMTest/README.txt
new file mode 100644
index 0000000..18167cc
--- /dev/null
+++ b/QMTest/README.txt
@@ -0,0 +1,58 @@
+This directory contains testing infrastructure. Note that not all of
+the pieces here are local to SCons.
+
+ README.txt
+
+ What you're looking at right now.
+
+ SConscript
+
+ Configuration for our packaging build, to copy the necessary
+ parts of the infrastructure into a build directory.
+
+ TestCmd.py
+ TestCmdTests.py
+ TestCommon.py
+ TestCommonTests.py
+
+ The TestCmd infrastructure for testing external commands.
+ These are for generic command testing, are used by some
+ other projects, and are developed separately from SCons.
+ (They're developed by SK, but still...)
+
+ We've captured the unit tests (Test*Tests.py) for these files
+ along with the actual modules themselves to make it a little
+ easier to hack on them for our purposes. Note, however,
+ that any SCons-specific functionality should be implemented
+ in one of the
+
+ TestRuntest.py
+
+ Test infrastructure for our runtest.py script.
+
+ TestSCons.py
+
+ Test infrastructure for SCons itself.
+
+ TestSConsMSVS.py
+
+ Test infrastructure for SCons' Visual Studio support.
+
+ TestSCons_time.py
+
+ Test infrastructure for the scons-time.py script.
+
+ TestSConsign.py
+
+ Test infrastructure for the sconsign.py script.
+
+ classes.qmc
+ configuration
+ scons-tdb.py
+
+ Pieces for the use of QMTest to test SCons. We're moving away
+ from this infrastructure, in no small part because we're not
+ really using it as originally envisioned.
+
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+QMTest/README.txt 2014/03/02 14:18:15 garyo
diff --git a/QMTest/SConscript b/QMTest/SConscript
new file mode 100644
index 0000000..75f2770
--- /dev/null
+++ b/QMTest/SConscript
@@ -0,0 +1,64 @@
+#
+# SConscript file for external packages we need.
+#
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+import os.path
+
+Import('build_dir', 'env')
+
+files = [
+ 'classes.qmc',
+ 'configuration',
+ 'scons_tdb.py',
+ 'TestCmd.py',
+ 'TestCommon.py',
+ 'TestRuntest.py',
+ 'TestSCons.py',
+ 'TestSConsign.py',
+ 'TestSCons_time.py',
+]
+
+def copy(target, source, env):
+ t = str(target[0])
+ s = str(source[0])
+ c = open(s, 'rb').read()
+ # Note: We construct the __ VERSION __ substitution string at
+ # run-time so it doesn't get replaced when this file gets copied
+ # into the tree for packaging.
+ c = c.replace('__' + 'VERSION' + '__', env['VERSION'])
+ open(t, 'wb').write(c)
+
+for file in files:
+ # Guarantee that real copies of these files always exist in
+ # build/QMTest. If there's a symlink there, then this is an Aegis
+ # build and we blow them away now so that they'll get "built" later.
+ p = os.path.join(build_dir, 'QMTest', file)
+ if os.path.islink(p):
+ os.unlink(p)
+ if not os.path.isabs(p):
+ p = '#' + p
+ env.Command(p, file, copy)
+ Local(p)
diff --git a/QMTest/TestCmd.py b/QMTest/TestCmd.py
new file mode 100644
index 0000000..38e9cd3
--- /dev/null
+++ b/QMTest/TestCmd.py
@@ -0,0 +1,1726 @@
+"""
+TestCmd.py: a testing framework for commands and scripts.
+
+The TestCmd module provides a framework for portable automated testing
+of executable commands and scripts (in any language, not just Python),
+especially commands and scripts that require file system interaction.
+
+In addition to running tests and evaluating conditions, the TestCmd
+module manages and cleans up one or more temporary workspace
+directories, and provides methods for creating files and directories in
+those workspace directories from in-line data, here-documents), allowing
+tests to be completely self-contained.
+
+A TestCmd environment object is created via the usual invocation:
+
+ import TestCmd
+ test = TestCmd.TestCmd()
+
+There are a bunch of keyword arguments available at instantiation:
+
+ test = TestCmd.TestCmd(description = 'string',
+ program = 'program_or_script_to_test',
+ interpreter = 'script_interpreter',
+ workdir = 'prefix',
+ subdir = 'subdir',
+ verbose = Boolean,
+ match = default_match_function,
+ match_stdout = default_match_stdout_function,
+ match_stderr = default_match_stderr_function,
+ diff = default_diff_stderr_function,
+ diff_stdout = default_diff_stdout_function,
+ diff_stderr = default_diff_stderr_function,
+ combine = Boolean)
+
+There are a bunch of methods that let you do different things:
+
+ test.verbose_set(1)
+
+ test.description_set('string')
+
+ test.program_set('program_or_script_to_test')
+
+ test.interpreter_set('script_interpreter')
+ test.interpreter_set(['script_interpreter', 'arg'])
+
+ test.workdir_set('prefix')
+ test.workdir_set('')
+
+ test.workpath('file')
+ test.workpath('subdir', 'file')
+
+ test.subdir('subdir', ...)
+
+ test.rmdir('subdir', ...)
+
+ test.write('file', "contents\n")
+ test.write(['subdir', 'file'], "contents\n")
+
+ test.read('file')
+ test.read(['subdir', 'file'])
+ test.read('file', mode)
+ test.read(['subdir', 'file'], mode)
+
+ test.writable('dir', 1)
+ test.writable('dir', None)
+
+ test.preserve(condition, ...)
+
+ test.cleanup(condition)
+
+ test.command_args(program = 'program_or_script_to_run',
+ interpreter = 'script_interpreter',
+ arguments = 'arguments to pass to program')
+
+ test.run(program = 'program_or_script_to_run',
+ interpreter = 'script_interpreter',
+ arguments = 'arguments to pass to program',
+ chdir = 'directory_to_chdir_to',
+ stdin = 'input to feed to the program\n')
+ universal_newlines = True)
+
+ p = test.start(program = 'program_or_script_to_run',
+ interpreter = 'script_interpreter',
+ arguments = 'arguments to pass to program',
+ universal_newlines = None)
+
+ test.finish(self, p)
+
+ test.pass_test()
+ test.pass_test(condition)
+ test.pass_test(condition, function)
+
+ test.fail_test()
+ test.fail_test(condition)
+ test.fail_test(condition, function)
+ test.fail_test(condition, function, skip)
+ test.fail_test(condition, function, skip, message)
+
+ test.no_result()
+ test.no_result(condition)
+ test.no_result(condition, function)
+ test.no_result(condition, function, skip)
+
+ test.stdout()
+ test.stdout(run)
+
+ test.stderr()
+ test.stderr(run)
+
+ test.symlink(target, link)
+
+ test.banner(string)
+ test.banner(string, width)
+
+ test.diff(actual, expected)
+
+ test.diff_stderr(actual, expected)
+
+ test.diff_stdout(actual, expected)
+
+ test.match(actual, expected)
+
+ test.match_stderr(actual, expected)
+
+ test.match_stdout(actual, expected)
+
+ test.set_match_function(match, stdout, stderr)
+
+ test.match_exact("actual 1\nactual 2\n", "expected 1\nexpected 2\n")
+ test.match_exact(["actual 1\n", "actual 2\n"],
+ ["expected 1\n", "expected 2\n"])
+ test.match_caseinsensitive("Actual 1\nACTUAL 2\n", "expected 1\nEXPECTED 2\n")
+
+ test.match_re("actual 1\nactual 2\n", regex_string)
+ test.match_re(["actual 1\n", "actual 2\n"], list_of_regexes)
+
+ test.match_re_dotall("actual 1\nactual 2\n", regex_string)
+ test.match_re_dotall(["actual 1\n", "actual 2\n"], list_of_regexes)
+
+ test.tempdir()
+ test.tempdir('temporary-directory')
+
+ test.sleep()
+ test.sleep(seconds)
+
+ test.where_is('foo')
+ test.where_is('foo', 'PATH1:PATH2')
+ test.where_is('foo', 'PATH1;PATH2', '.suffix3;.suffix4')
+
+ test.unlink('file')
+ test.unlink('subdir', 'file')
+
+The TestCmd module provides pass_test(), fail_test(), and no_result()
+unbound functions that report test results for use with the Aegis change
+management system. These methods terminate the test immediately,
+reporting PASSED, FAILED, or NO RESULT respectively, and exiting with
+status 0 (success), 1 or 2 respectively. This allows for a distinction
+between an actual failed test and a test that could not be properly
+evaluated because of an external condition (such as a full file system
+or incorrect permissions).
+
+ import TestCmd
+
+ TestCmd.pass_test()
+ TestCmd.pass_test(condition)
+ TestCmd.pass_test(condition, function)
+
+ TestCmd.fail_test()
+ TestCmd.fail_test(condition)
+ TestCmd.fail_test(condition, function)
+ TestCmd.fail_test(condition, function, skip)
+ TestCmd.fail_test(condition, function, skip, message)
+
+ TestCmd.no_result()
+ TestCmd.no_result(condition)
+ TestCmd.no_result(condition, function)
+ TestCmd.no_result(condition, function, skip)
+
+The TestCmd module also provides unbound global functions that handle
+matching in the same way as the match_*() methods described above.
+
+ import TestCmd
+
+ test = TestCmd.TestCmd(match = TestCmd.match_exact)
+
+ test = TestCmd.TestCmd(match = TestCmd.match_caseinsensitive)
+
+ test = TestCmd.TestCmd(match = TestCmd.match_re)
+
+ test = TestCmd.TestCmd(match = TestCmd.match_re_dotall)
+
+These functions are also available as static methods:
+
+ import TestCmd
+
+ test = TestCmd.TestCmd(match = TestCmd.TestCmd.match_exact)
+
+ test = TestCmd.TestCmd(match = TestCmd.TestCmd.match_caseinsensitive)
+
+ test = TestCmd.TestCmd(match = TestCmd.TestCmd.match_re)
+
+ test = TestCmd.TestCmd(match = TestCmd.TestCmd.match_re_dotall)
+
+These static methods can be accessed by a string naming the method:
+
+ import TestCmd
+
+ test = TestCmd.TestCmd(match = 'match_exact')
+
+ test = TestCmd.TestCmd(match = 'match_caseinsensitive')
+
+ test = TestCmd.TestCmd(match = 'match_re')
+
+ test = TestCmd.TestCmd(match = 'match_re_dotall')
+
+The TestCmd module provides unbound global functions that can be used
+for the "diff" argument to TestCmd.TestCmd instantiation:
+
+ import TestCmd
+
+ test = TestCmd.TestCmd(match = TestCmd.match_re,
+ diff = TestCmd.diff_re)
+
+ test = TestCmd.TestCmd(diff = TestCmd.simple_diff)
+
+ test = TestCmd.TestCmd(diff = TestCmd.context_diff)
+
+ test = TestCmd.TestCmd(diff = TestCmd.unified_diff)
+
+These functions are also available as static methods:
+
+ import TestCmd
+
+ test = TestCmd.TestCmd(match = TestCmd.TestCmd.match_re,
+ diff = TestCmd.TestCmd.diff_re)
+
+ test = TestCmd.TestCmd(diff = TestCmd.TestCmd.simple_diff)
+
+ test = TestCmd.TestCmd(diff = TestCmd.TestCmd.context_diff)
+
+ test = TestCmd.TestCmd(diff = TestCmd.TestCmd.unified_diff)
+
+These static methods can be accessed by a string naming the method:
+
+ import TestCmd
+
+ test = TestCmd.TestCmd(match = 'match_re', diff = 'diff_re')
+
+ test = TestCmd.TestCmd(diff = 'simple_diff')
+
+ test = TestCmd.TestCmd(diff = 'context_diff')
+
+ test = TestCmd.TestCmd(diff = 'unified_diff')
+
+The "diff" argument can also be used with standard difflib functions:
+
+ import difflib
+
+ test = TestCmd.TestCmd(diff = difflib.context_diff)
+
+ test = TestCmd.TestCmd(diff = difflib.unified_diff)
+
+Lastly, the where_is() method also exists in an unbound function
+version.
+
+ import TestCmd
+
+ TestCmd.where_is('foo')
+ TestCmd.where_is('foo', 'PATH1:PATH2')
+ TestCmd.where_is('foo', 'PATH1;PATH2', '.suffix3;.suffix4')
+"""
+
+# Copyright 2000-2010 Steven Knight
+# This module is free software, and you may redistribute it and/or modify
+# it under the same terms as Python itself, so long as this copyright message
+# and disclaimer are retained in their original form.
+#
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+# THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+# DAMAGE.
+#
+# THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
+# AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
+# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+from __future__ import division
+
+__author__ = "Steven Knight <knight at baldmt dot com>"
+__revision__ = "TestCmd.py 1.3.D001 2010/06/03 12:58:27 knight"
+__version__ = "1.3"
+
+import atexit
+import difflib
+import errno
+import os
+import re
+import shutil
+import signal
+import stat
+import sys
+import tempfile
+import threading
+import time
+import traceback
+import types
+
+class null(object):
+ pass
+_Null = null()
+
+try:
+ from collections import UserList, UserString
+except ImportError:
+ # no 'collections' module or no UserFoo in collections
+ exec('from UserList import UserList')
+ exec('from UserString import UserString')
+
+try:
+ # pre-2.7 doesn't have the memoryview() built-in
+ memoryview
+except NameError:
+ class memoryview:
+ def __init__(self, obj):
+ # wrapping buffer in () keeps the fixer from changing it
+ self.obj = (buffer)(obj)
+ def __getitem__(self, indx):
+ if isinstance(indx, slice):
+ return self.obj[indx.start:indx.stop]
+ else:
+ return self.obj[indx]
+
+__all__ = [
+ 'diff_re',
+ 'fail_test',
+ 'no_result',
+ 'pass_test',
+ 'match_exact',
+ 'match_caseinsensitive',
+ 'match_re',
+ 'match_re_dotall',
+ 'python',
+ '_python_',
+ 'TestCmd'
+]
+
+def is_List(e):
+ return isinstance(e, (list, UserList))
+
+try:
+ eval('unicode')
+except NameError:
+ def is_String(e):
+ return isinstance(e, (str, UserString))
+else:
+ def is_String(e):
+ return isinstance(e, (str, unicode, UserString))
+
+tempfile.template = 'testcmd.'
+if os.name in ('posix', 'nt'):
+ tempfile.template = 'testcmd.' + str(os.getpid()) + '.'
+else:
+ tempfile.template = 'testcmd.'
+
+re_space = re.compile('\s')
+
+def _caller(tblist, skip):
+ string = ""
+ arr = []
+ for file, line, name, text in tblist:
+ if file[-10:] == "TestCmd.py":
+ break
+ arr = [(file, line, name, text)] + arr
+ atfrom = "at"
+ for file, line, name, text in arr[skip:]:
+ if name in ("?", "<module>"):
+ name = ""
+ else:
+ name = " (" + name + ")"
+ string = string + ("%s line %d of %s%s\n" % (atfrom, line, file, name))
+ atfrom = "\tfrom"
+ return string
+
+def fail_test(self = None, condition = 1, function = None, skip = 0, message=None):
+ """Cause the test to fail.
+
+ By default, the fail_test() method reports that the test FAILED
+ and exits with a status of 1. If a condition argument is supplied,
+ the test fails only if the condition is true.
+ """
+ if not condition:
+ return
+ if not function is None:
+ function()
+ of = ""
+ desc = ""
+ sep = " "
+ if not self is None:
+ if self.program:
+ of = " of " + self.program
+ sep = "\n\t"
+ if self.description:
+ desc = " [" + self.description + "]"
+ sep = "\n\t"
+
+ at = _caller(traceback.extract_stack(), skip)
+ if message:
+ msg = "\t%s\n"%message
+ else:
+ msg = ""
+ sys.stderr.write("FAILED test" + of + desc + sep + at + msg)
+
+ sys.exit(1)
+
+def no_result(self = None, condition = 1, function = None, skip = 0):
+ """Causes a test to exit with no valid result.
+
+ By default, the no_result() method reports NO RESULT for the test
+ and exits with a status of 2. If a condition argument is supplied,
+ the test fails only if the condition is true.
+ """
+ if not condition:
+ return
+ if not function is None:
+ function()
+ of = ""
+ desc = ""
+ sep = " "
+ if not self is None:
+ if self.program:
+ of = " of " + self.program
+ sep = "\n\t"
+ if self.description:
+ desc = " [" + self.description + "]"
+ sep = "\n\t"
+
+ at = _caller(traceback.extract_stack(), skip)
+ sys.stderr.write("NO RESULT for test" + of + desc + sep + at)
+
+ sys.exit(2)
+
+def pass_test(self = None, condition = 1, function = None):
+ """Causes a test to pass.
+
+ By default, the pass_test() method reports PASSED for the test
+ and exits with a status of 0. If a condition argument is supplied,
+ the test passes only if the condition is true.
+ """
+ if not condition:
+ return
+ if not function is None:
+ function()
+ sys.stderr.write("PASSED\n")
+ sys.exit(0)
+
+def match_exact(lines = None, matches = None):
+ """
+ """
+ if not is_List(lines):
+ lines = lines.split("\n")
+ if not is_List(matches):
+ matches = matches.split("\n")
+ if len(lines) != len(matches):
+ return
+ for i in range(len(lines)):
+ if lines[i] != matches[i]:
+ return
+ return 1
+
+def match_caseinsensitive(lines = None, matches = None):
+ """
+ """
+ if not is_List(lines):
+ lines = lines.split("\n")
+ if not is_List(matches):
+ matches = matches.split("\n")
+ if len(lines) != len(matches):
+ return
+ for i in range(len(lines)):
+ if lines[i].lower() != matches[i].lower():
+ return
+ return 1
+
+def match_re(lines = None, res = None):
+ """
+ """
+ if not is_List(lines):
+ lines = lines.split("\n")
+ if not is_List(res):
+ res = res.split("\n")
+ if len(lines) != len(res):
+ print "match_re: expected %d lines, found %d"%(len(res), len(lines))
+ return
+ for i in range(len(lines)):
+ s = "^" + res[i] + "$"
+ try:
+ expr = re.compile(s)
+ except re.error, e:
+ msg = "Regular expression error in %s: %s"
+ raise re.error(msg % (repr(s), e.args[0]))
+ if not expr.search(lines[i]):
+ print "match_re: mismatch at line %d:\n search re='%s'\n line='%s'"%(i,s,lines[i])
+ return
+ return 1
+
+def match_re_dotall(lines = None, res = None):
+ """
+ """
+ if not isinstance(lines, str):
+ lines = "\n".join(lines)
+ if not isinstance(res, str):
+ res = "\n".join(res)
+ s = "^" + res + "$"
+ try:
+ expr = re.compile(s, re.DOTALL)
+ except re.error, e:
+ msg = "Regular expression error in %s: %s"
+ raise re.error(msg % (repr(s), e.args[0]))
+ return expr.match(lines)
+
+def simple_diff(a, b, fromfile='', tofile='',
+ fromfiledate='', tofiledate='', n=3, lineterm='\n'):
+ """
+ A function with the same calling signature as difflib.context_diff
+ (diff -c) and difflib.unified_diff (diff -u) but which prints
+ output like the simple, unadorned 'diff" command.
+ """
+ sm = difflib.SequenceMatcher(None, a, b)
+ def comma(x1, x2):
+ return x1+1 == x2 and str(x2) or '%s,%s' % (x1+1, x2)
+ result = []
+ for op, a1, a2, b1, b2 in sm.get_opcodes():
+ if op == 'delete':
+ result.append("%sd%d" % (comma(a1, a2), b1))
+ result.extend([ '< ' + l for l in a[a1:a2] ])
+ elif op == 'insert':
+ result.append("%da%s" % (a1, comma(b1, b2)))
+ result.extend([ '> ' + l for l in b[b1:b2] ])
+ elif op == 'replace':
+ result.append("%sc%s" % (comma(a1, a2), comma(b1, b2)))
+ result.extend([ '< ' + l for l in a[a1:a2] ])
+ result.append('---')
+ result.extend([ '> ' + l for l in b[b1:b2] ])
+ return result
+
+def diff_re(a, b, fromfile='', tofile='',
+ fromfiledate='', tofiledate='', n=3, lineterm='\n'):
+ """
+ A simple "diff" of two sets of lines when the expected lines
+ are regular expressions. This is a really dumb thing that
+ just compares each line in turn, so it doesn't look for
+ chunks of matching lines and the like--but at least it lets
+ you know exactly which line first didn't compare correctl...
+ """
+ result = []
+ diff = len(a) - len(b)
+ if diff < 0:
+ a = a + ['']*(-diff)
+ elif diff > 0:
+ b = b + ['']*diff
+ i = 0
+ for aline, bline in zip(a, b):
+ s = "^" + aline + "$"
+ try:
+ expr = re.compile(s)
+ except re.error, e:
+ msg = "Regular expression error in %s: %s"
+ raise re.error(msg % (repr(s), e.args[0]))
+ if not expr.search(bline):
+ result.append("%sc%s" % (i+1, i+1))
+ result.append('< ' + repr(a[i]))
+ result.append('---')
+ result.append('> ' + repr(b[i]))
+ i = i+1
+ return result
+
+if os.name == 'posix':
+ def escape(arg):
+ "escape shell special characters"
+ slash = '\\'
+ special = '"$'
+ arg = arg.replace(slash, slash+slash)
+ for c in special:
+ arg = arg.replace(c, slash+c)
+ if re_space.search(arg):
+ arg = '"' + arg + '"'
+ return arg
+else:
+ # Windows does not allow special characters in file names
+ # anyway, so no need for an escape function, we will just quote
+ # the arg.
+ def escape(arg):
+ if re_space.search(arg):
+ arg = '"' + arg + '"'
+ return arg
+
+if os.name == 'java':
+ python = os.path.join(sys.prefix, 'jython')
+else:
+ python = os.environ.get('python_executable', sys.executable)
+_python_ = escape(python)
+
+if sys.platform == 'win32':
+
+ default_sleep_seconds = 2
+
+ def where_is(file, path=None, pathext=None):
+ if path is None:
+ path = os.environ['PATH']
+ if is_String(path):
+ path = path.split(os.pathsep)
+ if pathext is None:
+ pathext = os.environ['PATHEXT']
+ if is_String(pathext):
+ pathext = pathext.split(os.pathsep)
+ for ext in pathext:
+ if ext.lower() == file[-len(ext):].lower():
+ pathext = ['']
+ break
+ for dir in path:
+ f = os.path.join(dir, file)
+ for ext in pathext:
+ fext = f + ext
+ if os.path.isfile(fext):
+ return fext
+ return None
+
+else:
+
+ def where_is(file, path=None, pathext=None):
+ if path is None:
+ path = os.environ['PATH']
+ if is_String(path):
+ path = path.split(os.pathsep)
+ for dir in path:
+ f = os.path.join(dir, file)
+ if os.path.isfile(f):
+ try:
+ st = os.stat(f)
+ except OSError:
+ continue
+ if stat.S_IMODE(st[stat.ST_MODE]) & 0111:
+ return f
+ return None
+
+ default_sleep_seconds = 1
+
+
+
+import subprocess
+
+try:
+ subprocess.Popen.terminate
+except AttributeError:
+ if sys.platform == 'win32':
+ import win32process
+ def terminate(self):
+ win32process.TerminateProcess(self._handle, 1)
+ else:
+ def terminate(self):
+ os.kill(self.pid, signal.SIGTERM)
+ method = types.MethodType(terminate, None, subprocess.Popen)
+ setattr(subprocess.Popen, 'terminate', method)
+
+
+
+# From Josiah Carlson,
+# ASPN : Python Cookbook : Module to allow Asynchronous subprocess use on Windows and Posix platforms
+# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440554
+
+PIPE = subprocess.PIPE
+
+if subprocess.mswindows:
+ from win32file import ReadFile, WriteFile
+ from win32pipe import PeekNamedPipe
+ import msvcrt
+else:
+ import select
+ import fcntl
+
+ try: fcntl.F_GETFL
+ except AttributeError: fcntl.F_GETFL = 3
+
+ try: fcntl.F_SETFL
+ except AttributeError: fcntl.F_SETFL = 4
+
+class Popen(subprocess.Popen):
+ def recv(self, maxsize=None):
+ return self._recv('stdout', maxsize)
+
+ def recv_err(self, maxsize=None):
+ return self._recv('stderr', maxsize)
+
+ def send_recv(self, input='', maxsize=None):
+ return self.send(input), self.recv(maxsize), self.recv_err(maxsize)
+
+ def get_conn_maxsize(self, which, maxsize):
+ if maxsize is None:
+ maxsize = 1024
+ elif maxsize < 1:
+ maxsize = 1
+ return getattr(self, which), maxsize
+
+ def _close(self, which):
+ getattr(self, which).close()
+ setattr(self, which, None)
+
+ if subprocess.mswindows:
+ def send(self, input):
+ if not self.stdin:
+ return None
+
+ try:
+ x = msvcrt.get_osfhandle(self.stdin.fileno())
+ (errCode, written) = WriteFile(x, input)
+ except ValueError:
+ return self._close('stdin')
+ except (subprocess.pywintypes.error, Exception), why:
+ if why.args[0] in (109, errno.ESHUTDOWN):
+ return self._close('stdin')
+ raise
+
+ return written
+
+ def _recv(self, which, maxsize):
+ conn, maxsize = self.get_conn_maxsize(which, maxsize)
+ if conn is None:
+ return None
+
+ try:
+ x = msvcrt.get_osfhandle(conn.fileno())
+ (read, nAvail, nMessage) = PeekNamedPipe(x, 0)
+ if maxsize < nAvail:
+ nAvail = maxsize
+ if nAvail > 0:
+ (errCode, read) = ReadFile(x, nAvail, None)
+ except ValueError:
+ return self._close(which)
+ except (subprocess.pywintypes.error, Exception), why:
+ if why.args[0] in (109, errno.ESHUTDOWN):
+ return self._close(which)
+ raise
+
+ #if self.universal_newlines:
+ # read = self._translate_newlines(read)
+ return read
+
+ else:
+ def send(self, input):
+ if not self.stdin:
+ return None
+
+ if not select.select([], [self.stdin], [], 0)[1]:
+ return 0
+
+ try:
+ written = os.write(self.stdin.fileno(), input)
+ except OSError, why:
+ if why.args[0] == errno.EPIPE: #broken pipe
+ return self._close('stdin')
+ raise
+
+ return written
+
+ def _recv(self, which, maxsize):
+ conn, maxsize = self.get_conn_maxsize(which, maxsize)
+ if conn is None:
+ return None
+
+ try:
+ flags = fcntl.fcntl(conn, fcntl.F_GETFL)
+ except TypeError:
+ flags = None
+ else:
+ if not conn.closed:
+ fcntl.fcntl(conn, fcntl.F_SETFL, flags| os.O_NONBLOCK)
+
+ try:
+ if not select.select([conn], [], [], 0)[0]:
+ return ''
+
+ r = conn.read(maxsize)
+ if not r:
+ return self._close(which)
+
+ #if self.universal_newlines:
+ # r = self._translate_newlines(r)
+ return r
+ finally:
+ if not conn.closed and not flags is None:
+ fcntl.fcntl(conn, fcntl.F_SETFL, flags)
+
+disconnect_message = "Other end disconnected!"
+
+def recv_some(p, t=.1, e=1, tr=5, stderr=0):
+ if tr < 1:
+ tr = 1
+ x = time.time()+t
+ y = []
+ r = ''
+ pr = p.recv
+ if stderr:
+ pr = p.recv_err
+ while time.time() < x or r:
+ r = pr()
+ if r is None:
+ if e:
+ raise Exception(disconnect_message)
+ else:
+ break
+ elif r:
+ y.append(r)
+ else:
+ time.sleep(max((x-time.time())/tr, 0))
+ return ''.join(y)
+
+def send_all(p, data):
+ while len(data):
+ sent = p.send(data)
+ if sent is None:
+ raise Exception(disconnect_message)
+ data = memoryview(data)[sent:]
+
+_Cleanup = []
+
+def _clean():
+ global _Cleanup
+ cleanlist = [ c for c in _Cleanup if c ]
+ del _Cleanup[:]
+ cleanlist.reverse()
+ for test in cleanlist:
+ test.cleanup()
+
+atexit.register(_clean)
+
+
+class TestCmd(object):
+ """Class TestCmd
+ """
+
+ def __init__(self, description = None,
+ program = None,
+ interpreter = None,
+ workdir = None,
+ subdir = None,
+ verbose = None,
+ match = None,
+ match_stdout = None,
+ match_stderr = None,
+ diff = None,
+ diff_stdout = None,
+ diff_stderr = None,
+ combine = 0,
+ universal_newlines = 1,
+ timeout = None):
+ self.external = os.environ.get('SCONS_EXTERNAL_TEST', 0)
+ self._cwd = os.getcwd()
+ self.description_set(description)
+ self.program_set(program)
+ self.interpreter_set(interpreter)
+ if verbose is None:
+ try:
+ verbose = max( 0, int(os.environ.get('TESTCMD_VERBOSE', 0)) )
+ except ValueError:
+ verbose = 0
+ self.verbose_set(verbose)
+ self.combine = combine
+ self.universal_newlines = universal_newlines
+ self.process = None
+ self.set_timeout(timeout)
+ self.set_match_function(match, match_stdout, match_stderr)
+ self.set_diff_function(diff, diff_stdout, diff_stderr)
+ self._dirlist = []
+ self._preserve = {'pass_test': 0, 'fail_test': 0, 'no_result': 0}
+ if 'PRESERVE' in os.environ and not os.environ['PRESERVE'] is '':
+ self._preserve['pass_test'] = os.environ['PRESERVE']
+ self._preserve['fail_test'] = os.environ['PRESERVE']
+ self._preserve['no_result'] = os.environ['PRESERVE']
+ else:
+ try:
+ self._preserve['pass_test'] = os.environ['PRESERVE_PASS']
+ except KeyError:
+ pass
+ try:
+ self._preserve['fail_test'] = os.environ['PRESERVE_FAIL']
+ except KeyError:
+ pass
+ try:
+ self._preserve['no_result'] = os.environ['PRESERVE_NO_RESULT']
+ except KeyError:
+ pass
+ self._stdout = []
+ self._stderr = []
+ self.status = None
+ self.condition = 'no_result'
+ self.workdir_set(workdir)
+ self.subdir(subdir)
+ self.script_srcdir = None
+
+ def __del__(self):
+ self.cleanup()
+
+ def __repr__(self):
+ return "%x" % id(self)
+
+ banner_char = '='
+ banner_width = 80
+
+ def banner(self, s, width=None):
+ if width is None:
+ width = self.banner_width
+ return s + self.banner_char * (width - len(s))
+
+ escape = staticmethod(escape)
+
+ def canonicalize(self, path):
+ if is_List(path):
+ path = os.path.join(*tuple(path))
+ if not os.path.isabs(path):
+ path = os.path.join(self.workdir, path)
+ return path
+
+ def chmod(self, path, mode):
+ """Changes permissions on the specified file or directory
+ path name."""
+ path = self.canonicalize(path)
+ os.chmod(path, mode)
+
+ def cleanup(self, condition = None):
+ """Removes any temporary working directories for the specified
+ TestCmd environment. If the environment variable PRESERVE was
+ set when the TestCmd environment was created, temporary working
+ directories are not removed. If any of the environment variables
+ PRESERVE_PASS, PRESERVE_FAIL, or PRESERVE_NO_RESULT were set
+ when the TestCmd environment was created, then temporary working
+ directories are not removed if the test passed, failed, or had
+ no result, respectively. Temporary working directories are also
+ preserved for conditions specified via the preserve method.
+
+ Typically, this method is not called directly, but is used when
+ the script exits to clean up temporary working directories as
+ appropriate for the exit status.
+ """
+ if not self._dirlist:
+ return
+ os.chdir(self._cwd)
+ self.workdir = None
+ if condition is None:
+ condition = self.condition
+ if self._preserve[condition]:
+ for dir in self._dirlist:
+ print unicode("Preserved directory " + dir + "\n"),
+ else:
+ list = self._dirlist[:]
+ list.reverse()
+ for dir in list:
+ self.writable(dir, 1)
+ shutil.rmtree(dir, ignore_errors = 1)
+ self._dirlist = []
+
+ global _Cleanup
+ if self in _Cleanup:
+ _Cleanup.remove(self)
+
+ def command_args(self, program = None,
+ interpreter = None,
+ arguments = None):
+ if not self.external:
+ if program:
+ if isinstance(program, str) and not os.path.isabs(program):
+ program = os.path.join(self._cwd, program)
+ else:
+ program = self.program
+ if not interpreter:
+ interpreter = self.interpreter
+ else:
+ if not program:
+ program = self.program
+ if not interpreter:
+ interpreter = self.interpreter
+ if not isinstance(program, (list, tuple)):
+ program = [program]
+ cmd = list(program)
+ if interpreter:
+ if not isinstance(interpreter, (list, tuple)):
+ interpreter = [interpreter]
+ cmd = list(interpreter) + cmd
+ if arguments:
+ if isinstance(arguments, str):
+ arguments = arguments.split()
+ cmd.extend(arguments)
+ return cmd
+
+ def description_set(self, description):
+ """Set the description of the functionality being tested.
+ """
+ self.description = description
+
+ def set_diff_function(self, diff=_Null, stdout=_Null, stderr=_Null):
+ """Sets the specified diff functions.
+ """
+ if diff is not _Null:
+ self._diff_function = diff
+ if stdout is not _Null:
+ self._diff_stdout_function = stdout
+ if stderr is not _Null:
+ self._diff_stderr_function = stderr
+
+ def diff(self, a, b, name=None, diff_function=None, *args, **kw):
+ if diff_function is None:
+ try:
+ diff_function = getattr(self, self._diff_function)
+ except TypeError:
+ diff_function = self._diff_function
+ if diff_function is None:
+ diff_function = self.simple_diff
+ if name is not None:
+ print self.banner(name)
+ args = (a.splitlines(), b.splitlines()) + args
+ for line in diff_function(*args, **kw):
+ print line
+
+ def diff_stderr(self, a, b, *args, **kw):
+ """Compare actual and expected file contents.
+ """
+ try:
+ diff_stderr_function = getattr(self, self._diff_stderr_function)
+ except TypeError:
+ diff_stderr_function = self._diff_stderr_function
+ return self.diff(a, b, diff_function=diff_stderr_function, *args, **kw)
+
+ def diff_stdout(self, a, b, *args, **kw):
+ """Compare actual and expected file contents.
+ """
+ try:
+ diff_stdout_function = getattr(self, self._diff_stdout_function)
+ except TypeError:
+ diff_stdout_function = self._diff_stdout_function
+ return self.diff(a, b, diff_function=diff_stdout_function, *args, **kw)
+
+ simple_diff = staticmethod(simple_diff)
+
+ diff_re = staticmethod(diff_re)
+
+ context_diff = staticmethod(difflib.context_diff)
+
+ unified_diff = staticmethod(difflib.unified_diff)
+
+ def fail_test(self, condition = 1, function = None, skip = 0, message = None):
+ """Cause the test to fail.
+ """
+ if not condition:
+ return
+ self.condition = 'fail_test'
+ fail_test(self = self,
+ condition = condition,
+ function = function,
+ skip = skip,
+ message = message)
+
+ def interpreter_set(self, interpreter):
+ """Set the program to be used to interpret the program
+ under test as a script.
+ """
+ self.interpreter = interpreter
+
+ def set_match_function(self, match=_Null, stdout=_Null, stderr=_Null):
+ """Sets the specified match functions.
+ """
+ if match is not _Null:
+ self._match_function = match
+ if stdout is not _Null:
+ self._match_stdout_function = stdout
+ if stderr is not _Null:
+ self._match_stderr_function = stderr
+
+ def match(self, lines, matches):
+ """Compare actual and expected file contents.
+ """
+ try:
+ match_function = getattr(self, self._match_function)
+ except TypeError:
+ match_function = self._match_function
+ if match_function is None:
+ # Default is regular expression matches.
+ match_function = self.match_re
+ return match_function(lines, matches)
+
+ def match_stderr(self, lines, matches):
+ """Compare actual and expected file contents.
+ """
+ try:
+ match_stderr_function = getattr(self, self._match_stderr_function)
+ except TypeError:
+ match_stderr_function = self._match_stderr_function
+ if match_stderr_function is None:
+ # Default is to use whatever match= is set to.
+ match_stderr_function = self.match
+ return match_stderr_function(lines, matches)
+
+ def match_stdout(self, lines, matches):
+ """Compare actual and expected file contents.
+ """
+ try:
+ match_stdout_function = getattr(self, self._match_stdout_function)
+ except TypeError:
+ match_stdout_function = self._match_stdout_function
+ if match_stdout_function is None:
+ # Default is to use whatever match= is set to.
+ match_stdout_function = self.match
+ return match_stdout_function(lines, matches)
+
+ match_exact = staticmethod(match_exact)
+
+ match_caseinsensitive = staticmethod(match_caseinsensitive)
+
+ match_re = staticmethod(match_re)
+
+ match_re_dotall = staticmethod(match_re_dotall)
+
+ def no_result(self, condition = 1, function = None, skip = 0):
+ """Report that the test could not be run.
+ """
+ if not condition:
+ return
+ self.condition = 'no_result'
+ no_result(self = self,
+ condition = condition,
+ function = function,
+ skip = skip)
+
+ def pass_test(self, condition = 1, function = None):
+ """Cause the test to pass.
+ """
+ if not condition:
+ return
+ self.condition = 'pass_test'
+ pass_test(self = self, condition = condition, function = function)
+
+ def preserve(self, *conditions):
+ """Arrange for the temporary working directories for the
+ specified TestCmd environment to be preserved for one or more
+ conditions. If no conditions are specified, arranges for
+ the temporary working directories to be preserved for all
+ conditions.
+ """
+ if conditions is ():
+ conditions = ('pass_test', 'fail_test', 'no_result')
+ for cond in conditions:
+ self._preserve[cond] = 1
+
+ def program_set(self, program):
+ """Set the executable program or script to be tested.
+ """
+ if not self.external:
+ if program and not os.path.isabs(program):
+ program = os.path.join(self._cwd, program)
+ self.program = program
+
+ def read(self, file, mode = 'rb'):
+ """Reads and returns the contents of the specified file name.
+ The file name may be a list, in which case the elements are
+ concatenated with the os.path.join() method. The file is
+ assumed to be under the temporary working directory unless it
+ is an absolute path name. The I/O mode for the file may
+ be specified; it must begin with an 'r'. The default is
+ 'rb' (binary read).
+ """
+ file = self.canonicalize(file)
+ if mode[0] != 'r':
+ raise ValueError("mode must begin with 'r'")
+ return open(file, mode).read()
+
+ def rmdir(self, dir):
+ """Removes the specified dir name.
+ The dir name may be a list, in which case the elements are
+ concatenated with the os.path.join() method. The dir is
+ assumed to be under the temporary working directory unless it
+ is an absolute path name.
+ The dir must be empty.
+ """
+ dir = self.canonicalize(dir)
+ os.rmdir(dir)
+
+ def _timeout(self):
+ self.process.terminate()
+ self.timer.cancel()
+ self.timer = None
+
+ def set_timeout(self, timeout):
+ self.timeout = timeout
+ self.timer = None
+
+ def parse_path(self, path, suppress_current=False):
+ """Return a list with the single path components of path.
+ """
+ head, tail = os.path.split(path)
+ result = []
+ if not tail:
+ if head == path:
+ return [head]
+ else:
+ result.append(tail)
+ head, tail = os.path.split(head)
+ while head and tail:
+ result.append(tail)
+ head, tail = os.path.split(head)
+ result.append(head or tail)
+ result.reverse()
+
+ return result
+
+ def dir_fixture(self, srcdir, dstdir=None):
+ """Copies the contents of the specified folder srcdir from
+ the directory of the called script, to the current
+ working directory.
+ The srcdir name may be a list, in which case the elements are
+ concatenated with the os.path.join() method. The dstdir is
+ assumed to be under the temporary working directory, it gets
+ created automatically, if it does not already exist.
+ """
+ if srcdir and self.script_srcdir and not os.path.isabs(srcdir):
+ spath = os.path.join(self.script_srcdir, srcdir)
+ else:
+ spath = srcdir
+ if dstdir:
+ dstdir = self.canonicalize(dstdir)
+ else:
+ dstdir = '.'
+
+ if dstdir != '.' and not os.path.exists(dstdir):
+ dstlist = self.parse_path(dstdir)
+ if len(dstlist) > 0 and dstlist[0] == ".":
+ dstlist = dstlist[1:]
+ for idx in range(len(dstlist)):
+ self.subdir(dstlist[:idx+1])
+
+ if dstdir and self.workdir:
+ dstdir = os.path.join(self.workdir, dstdir)
+
+ for entry in os.listdir(spath):
+ epath = os.path.join(spath, entry)
+ dpath = os.path.join(dstdir, entry)
+ if os.path.isdir(epath):
+ # Copy the subfolder
+ shutil.copytree(epath, dpath)
+ else:
+ shutil.copy(epath, dpath)
+
+ def file_fixture(self, srcfile, dstfile=None):
+ """Copies the file srcfile from the directory of
+ the called script, to the current working directory.
+ The dstfile is assumed to be under the temporary working
+ directory unless it is an absolute path name.
+ If dstfile is specified its target directory gets created
+ automatically, if it does not already exist.
+ """
+ srcpath, srctail = os.path.split(srcfile)
+ if srcpath:
+ if self.script_srcdir and not os.path.isabs(srcpath):
+ spath = os.path.join(self.script_srcdir, srcfile)
+ else:
+ spath = srcfile
+ else:
+ spath = os.path.join(self.script_srcdir, srcfile)
+ if not dstfile:
+ if srctail:
+ dpath = os.path.join(self.workdir, srctail)
+ else:
+ return
+ else:
+ dstpath, dsttail = os.path.split(dstfile)
+ if dstpath:
+ if not os.path.exists(os.path.join(self.workdir, dstpath)):
+ dstlist = self.parse_path(dstpath)
+ if len(dstlist) > 0 and dstlist[0] == ".":
+ dstlist = dstlist[1:]
+ for idx in range(len(dstlist)):
+ self.subdir(dstlist[:idx+1])
+
+ dpath = os.path.join(self.workdir, dstfile)
+ shutil.copy(spath, dpath)
+
+ def start(self, program = None,
+ interpreter = None,
+ arguments = None,
+ universal_newlines = None,
+ timeout = _Null,
+ **kw):
+ """
+ Starts a program or script for the test environment.
+
+ The specified program will have the original directory
+ prepended unless it is enclosed in a [list].
+ """
+ cmd = self.command_args(program, interpreter, arguments)
+ if self.verbose:
+ cmd_string = ' '.join([ self.escape(c) for c in cmd ])
+ sys.stderr.write(cmd_string + "\n")
+ if universal_newlines is None:
+ universal_newlines = self.universal_newlines
+
+ # On Windows, if we make stdin a pipe when we plan to send
+ # no input, and the test program exits before
+ # Popen calls msvcrt.open_osfhandle, that call will fail.
+ # So don't use a pipe for stdin if we don't need one.
+ stdin = kw.get('stdin', None)
+ if stdin is not None:
+ stdin = subprocess.PIPE
+
+ combine = kw.get('combine', self.combine)
+ if combine:
+ stderr_value = subprocess.STDOUT
+ else:
+ stderr_value = subprocess.PIPE
+
+ if timeout is _Null:
+ timeout = self.timeout
+ if timeout:
+ self.timer = threading.Timer(float(timeout), self._timeout)
+ self.timer.start()
+ p = Popen(cmd,
+ stdin=stdin,
+ stdout=subprocess.PIPE,
+ stderr=stderr_value,
+ universal_newlines=universal_newlines)
+ self.process = p
+ return p
+
+ def finish(self, popen=None, **kw):
+ """
+ Finishes and waits for the process being run under control of
+ the specified popen argument, recording the exit status,
+ standard output and error output.
+ """
+ if popen is None:
+ popen = self.process
+ stdout, stderr = popen.communicate()
+ if self.timer:
+ self.timer.cancel()
+ self.timer = None
+ self.status = popen.returncode
+ self.process = None
+ self._stdout.append(stdout or '')
+ self._stderr.append(stderr or '')
+
+ def run(self, program = None,
+ interpreter = None,
+ arguments = None,
+ chdir = None,
+ stdin = None,
+ universal_newlines = None,
+ timeout = _Null):
+ """Runs a test of the program or script for the test
+ environment. Standard output and error output are saved for
+ future retrieval via the stdout() and stderr() methods.
+
+ The specified program will have the original directory
+ prepended unless it is enclosed in a [list].
+ """
+ if self.external:
+ if not program:
+ program = self.program
+ if not interpreter:
+ interpreter = self.interpreter
+
+ if chdir:
+ oldcwd = os.getcwd()
+ if not os.path.isabs(chdir):
+ chdir = os.path.join(self.workpath(chdir))
+ if self.verbose:
+ sys.stderr.write("chdir(" + chdir + ")\n")
+ os.chdir(chdir)
+ p = self.start(program = program,
+ interpreter = interpreter,
+ arguments = arguments,
+ universal_newlines = universal_newlines,
+ timeout = timeout,
+ stdin = stdin)
+ if is_List(stdin):
+ stdin = ''.join(stdin)
+ # TODO(sgk): figure out how to re-use the logic in the .finish()
+ # method above. Just calling it from here causes problems with
+ # subclasses that redefine .finish(). We could abstract this
+ # into Yet Another common method called both here and by .finish(),
+ # but that seems ill-thought-out.
+ stdout, stderr = p.communicate(input=stdin)
+ if self.timer:
+ self.timer.cancel()
+ self.timer = None
+ self.status = p.returncode
+ self.process = None
+ self._stdout.append(stdout or '')
+ self._stderr.append(stderr or '')
+
+ if chdir:
+ os.chdir(oldcwd)
+ if self.verbose >= 2:
+ write = sys.stdout.write
+ write('============ STATUS: %d\n' % self.status)
+ out = self.stdout()
+ if out or self.verbose >= 3:
+ write('============ BEGIN STDOUT (len=%d):\n' % len(out))
+ write(out)
+ write('============ END STDOUT\n')
+ err = self.stderr()
+ if err or self.verbose >= 3:
+ write('============ BEGIN STDERR (len=%d)\n' % len(err))
+ write(err)
+ write('============ END STDERR\n')
+
+ def sleep(self, seconds = default_sleep_seconds):
+ """Sleeps at least the specified number of seconds. If no
+ number is specified, sleeps at least the minimum number of
+ seconds necessary to advance file time stamps on the current
+ system. Sleeping more seconds is all right.
+ """
+ time.sleep(seconds)
+
+ def stderr(self, run = None):
+ """Returns the error output from the specified run number.
+ If there is no specified run number, then returns the error
+ output of the last run. If the run number is less than zero,
+ then returns the error output from that many runs back from the
+ current run.
+ """
+ if not run:
+ run = len(self._stderr)
+ elif run < 0:
+ run = len(self._stderr) + run
+ run = run - 1
+ return self._stderr[run]
+
+ def stdout(self, run = None):
+ """Returns the standard output from the specified run number.
+ If there is no specified run number, then returns the standard
+ output of the last run. If the run number is less than zero,
+ then returns the standard output from that many runs back from
+ the current run.
+ """
+ if not run:
+ run = len(self._stdout)
+ elif run < 0:
+ run = len(self._stdout) + run
+ run = run - 1
+ return self._stdout[run]
+
+ def subdir(self, *subdirs):
+ """Create new subdirectories under the temporary working
+ directory, one for each argument. An argument may be a list,
+ in which case the list elements are concatenated using the
+ os.path.join() method. Subdirectories multiple levels deep
+ must be created using a separate argument for each level:
+
+ test.subdir('sub', ['sub', 'dir'], ['sub', 'dir', 'ectory'])
+
+ Returns the number of subdirectories actually created.
+ """
+ count = 0
+ for sub in subdirs:
+ if sub is None:
+ continue
+ if is_List(sub):
+ sub = os.path.join(*tuple(sub))
+ new = os.path.join(self.workdir, sub)
+ try:
+ os.mkdir(new)
+ except OSError:
+ pass
+ else:
+ count = count + 1
+ return count
+
+ def symlink(self, target, link):
+ """Creates a symlink to the specified target.
+ The link name may be a list, in which case the elements are
+ concatenated with the os.path.join() method. The link is
+ assumed to be under the temporary working directory unless it
+ is an absolute path name. The target is *not* assumed to be
+ under the temporary working directory.
+ """
+ link = self.canonicalize(link)
+ try:
+ os.symlink(target, link)
+ except AttributeError:
+ pass # Windows has no symlink
+
+ def tempdir(self, path=None):
+ """Creates a temporary directory.
+ A unique directory name is generated if no path name is specified.
+ The directory is created, and will be removed when the TestCmd
+ object is destroyed.
+ """
+ if path is None:
+ try:
+ path = tempfile.mktemp(prefix=tempfile.template)
+ except TypeError:
+ path = tempfile.mktemp()
+ os.mkdir(path)
+
+ # Symlinks in the path will report things
+ # differently from os.getcwd(), so chdir there
+ # and back to fetch the canonical path.
+ cwd = os.getcwd()
+ try:
+ os.chdir(path)
+ path = os.getcwd()
+ finally:
+ os.chdir(cwd)
+
+ # Uppercase the drive letter since the case of drive
+ # letters is pretty much random on win32:
+ drive,rest = os.path.splitdrive(path)
+ if drive:
+ path = drive.upper() + rest
+
+ #
+ self._dirlist.append(path)
+
+ global _Cleanup
+ if self not in _Cleanup:
+ _Cleanup.append(self)
+
+ return path
+
+ def touch(self, path, mtime=None):
+ """Updates the modification time on the specified file or
+ directory path name. The default is to update to the
+ current time if no explicit modification time is specified.
+ """
+ path = self.canonicalize(path)
+ atime = os.path.getatime(path)
+ if mtime is None:
+ mtime = time.time()
+ os.utime(path, (atime, mtime))
+
+ def unlink(self, file):
+ """Unlinks the specified file name.
+ The file name may be a list, in which case the elements are
+ concatenated with the os.path.join() method. The file is
+ assumed to be under the temporary working directory unless it
+ is an absolute path name.
+ """
+ file = self.canonicalize(file)
+ os.unlink(file)
+
+ def verbose_set(self, verbose):
+ """Set the verbose level.
+ """
+ self.verbose = verbose
+
+ def where_is(self, file, path=None, pathext=None):
+ """Find an executable file.
+ """
+ if is_List(file):
+ file = os.path.join(*tuple(file))
+ if not os.path.isabs(file):
+ file = where_is(file, path, pathext)
+ return file
+
+ def workdir_set(self, path):
+ """Creates a temporary working directory with the specified
+ path name. If the path is a null string (''), a unique
+ directory name is created.
+ """
+ if (path != None):
+ if path == '':
+ path = None
+ path = self.tempdir(path)
+ self.workdir = path
+
+ def workpath(self, *args):
+ """Returns the absolute path name to a subdirectory or file
+ within the current temporary working directory. Concatenates
+ the temporary working directory name with the specified
+ arguments using the os.path.join() method.
+ """
+ return os.path.join(self.workdir, *tuple(args))
+
+ def readable(self, top, read=1):
+ """Make the specified directory tree readable (read == 1)
+ or not (read == None).
+
+ This method has no effect on Windows systems, which use a
+ completely different mechanism to control file readability.
+ """
+
+ if sys.platform == 'win32':
+ return
+
+ if read:
+ def do_chmod(fname):
+ try: st = os.stat(fname)
+ except OSError: pass
+ else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]|stat.S_IREAD))
+ else:
+ def do_chmod(fname):
+ try: st = os.stat(fname)
+ except OSError: pass
+ else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]&~stat.S_IREAD))
+
+ if os.path.isfile(top):
+ # If it's a file, that's easy, just chmod it.
+ do_chmod(top)
+ elif read:
+ # It's a directory and we're trying to turn on read
+ # permission, so it's also pretty easy, just chmod the
+ # directory and then chmod every entry on our walk down the
+ # tree.
+ do_chmod(top)
+ for dirpath, dirnames, filenames in os.walk(top):
+ for name in dirnames + filenames:
+ do_chmod(os.path.join(dirpath, name))
+ else:
+ # It's a directory and we're trying to turn off read
+ # permission, which means we have to chmod the directories
+ # in the tree bottom-up, lest disabling read permission from
+ # the top down get in the way of being able to get at lower
+ # parts of the tree.
+ for dirpath, dirnames, filenames in os.walk(top, topdown=0):
+ for name in dirnames + filenames:
+ do_chmod(os.path.join(dirpath, name))
+ do_chmod(top)
+
+ def writable(self, top, write=1):
+ """Make the specified directory tree writable (write == 1)
+ or not (write == None).
+ """
+
+ if sys.platform == 'win32':
+
+ if write:
+ def do_chmod(fname):
+ try: os.chmod(fname, stat.S_IWRITE)
+ except OSError: pass
+ else:
+ def do_chmod(fname):
+ try: os.chmod(fname, stat.S_IREAD)
+ except OSError: pass
+
+ else:
+
+ if write:
+ def do_chmod(fname):
+ try: st = os.stat(fname)
+ except OSError: pass
+ else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]|0200))
+ else:
+ def do_chmod(fname):
+ try: st = os.stat(fname)
+ except OSError: pass
+ else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]&~0200))
+
+ if os.path.isfile(top):
+ do_chmod(top)
+ else:
+ do_chmod(top)
+ for dirpath, dirnames, filenames in os.walk(top, topdown=0):
+ for name in dirnames + filenames:
+ do_chmod(os.path.join(dirpath, name))
+
+ def executable(self, top, execute=1):
+ """Make the specified directory tree executable (execute == 1)
+ or not (execute == None).
+
+ This method has no effect on Windows systems, which use a
+ completely different mechanism to control file executability.
+ """
+
+ if sys.platform == 'win32':
+ return
+
+ if execute:
+ def do_chmod(fname):
+ try: st = os.stat(fname)
+ except OSError: pass
+ else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]|stat.S_IEXEC))
+ else:
+ def do_chmod(fname):
+ try: st = os.stat(fname)
+ except OSError: pass
+ else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]&~stat.S_IEXEC))
+
+ if os.path.isfile(top):
+ # If it's a file, that's easy, just chmod it.
+ do_chmod(top)
+ elif execute:
+ # It's a directory and we're trying to turn on execute
+ # permission, so it's also pretty easy, just chmod the
+ # directory and then chmod every entry on our walk down the
+ # tree.
+ do_chmod(top)
+ for dirpath, dirnames, filenames in os.walk(top):
+ for name in dirnames + filenames:
+ do_chmod(os.path.join(dirpath, name))
+ else:
+ # It's a directory and we're trying to turn off execute
+ # permission, which means we have to chmod the directories
+ # in the tree bottom-up, lest disabling execute permission from
+ # the top down get in the way of being able to get at lower
+ # parts of the tree.
+ for dirpath, dirnames, filenames in os.walk(top, topdown=0):
+ for name in dirnames + filenames:
+ do_chmod(os.path.join(dirpath, name))
+ do_chmod(top)
+
+ def write(self, file, content, mode = 'wb'):
+ """Writes the specified content text (second argument) to the
+ specified file name (first argument). The file name may be
+ a list, in which case the elements are concatenated with the
+ os.path.join() method. The file is created under the temporary
+ working directory. Any subdirectories in the path must already
+ exist. The I/O mode for the file may be specified; it must
+ begin with a 'w'. The default is 'wb' (binary write).
+ """
+ file = self.canonicalize(file)
+ if mode[0] != 'w':
+ raise ValueError("mode must begin with 'w'")
+ open(file, mode).write(content)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestCmdTests.py b/QMTest/TestCmdTests.py
new file mode 100644
index 0000000..1044ed1
--- /dev/null
+++ b/QMTest/TestCmdTests.py
@@ -0,0 +1,3409 @@
+#!/usr/bin/env python
+"""
+TestCmdTests.py: Unit tests for the TestCmd.py module.
+
+Copyright 2000-2010 Steven Knight
+This module is free software, and you may redistribute it and/or modify
+it under the same terms as Python itself, so long as this copyright message
+and disclaimer are retained in their original form.
+
+IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
+AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
+SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+"""
+
+__author__ = "Steven Knight <knight at baldmt dot com>"
+__revision__ = "TestCmdTests.py 1.3.D001 2010/06/03 12:58:27 knight"
+
+import os
+import shutil
+import signal
+import stat
+import StringIO
+import sys
+import tempfile
+import time
+import types
+import unittest
+import UserList
+
+# Strip the current directory so we get the right TestCmd.py module.
+sys.path = sys.path[1:]
+
+import TestCmd
+
+def _is_readable(path):
+ # XXX this doesn't take into account UID, it assumes it's our file
+ return os.stat(path)[stat.ST_MODE] & stat.S_IREAD
+
+def _is_writable(path):
+ # XXX this doesn't take into account UID, it assumes it's our file
+ return os.stat(path)[stat.ST_MODE] & stat.S_IWRITE
+
+def _is_executable(path):
+ # XXX this doesn't take into account UID, it assumes it's our file
+ return os.stat(path)[stat.ST_MODE] & stat.S_IEXEC
+
+def _clear_dict(dict, *keys):
+ for key in keys:
+ try:
+ dict[key] = '' # del dict[key]
+ except KeyError:
+ pass
+
+import subprocess
+
+try:
+ subprocess.Popen.terminate
+except AttributeError:
+ if sys.platform == 'win32':
+ import win32process
+ def terminate(self):
+ win32process.TerminateProcess(self._handle, 1)
+ else:
+ def terminate(self):
+ os.kill(self.pid, signal.SIGTERM)
+ method = types.MethodType(terminate, None, subprocess.Popen)
+ setattr(subprocess.Popen, 'terminate', method)
+
+class ExitError(Exception):
+ pass
+
+class TestCmdTestCase(unittest.TestCase):
+ """Base class for TestCmd test cases, with fixture and utility methods."""
+
+ def setUp(self):
+ self.orig_cwd = os.getcwd()
+
+ def tearDown(self):
+ os.chdir(self.orig_cwd)
+
+ def setup_run_scripts(self):
+ class T:
+ pass
+
+ t = T()
+
+ t.script = 'script'
+ t.scriptx = 'scriptx.bat'
+ t.script1 = 'script_1.txt'
+ t.scriptout = 'scriptout'
+ t.scripterr = 'scripterr'
+ fmt = "import os, sys; cwd = os.getcwd(); " + \
+ "sys.stdout.write('%s: STDOUT: %%s: %%s\\n' %% (cwd, sys.argv[1:])); " + \
+ "sys.stderr.write('%s: STDERR: %%s: %%s\\n' %% (cwd, sys.argv[1:]))"
+ fmtout = "import os, sys; cwd = os.getcwd(); " + \
+ "sys.stdout.write('%s: STDOUT: %%s: %%s\\n' %% (cwd, sys.argv[1:]))"
+ fmterr = "import os, sys; cwd = os.getcwd(); " + \
+ "sys.stderr.write('%s: STDERR: %%s: %%s\\n' %% (cwd, sys.argv[1:]))"
+ text = fmt % (t.script, t.script)
+ textx = fmt % (t.scriptx, t.scriptx)
+ if sys.platform == 'win32':
+ textx = textx.replace('%', '%%')
+ textx = '@python -c "%s"' % textx + ' %1 %2 %3 %4 %5 %6 %7 %8 %9\n'
+ else:
+ textx = '#! /usr/bin/env python\n' + textx + '\n'
+ text1 = 'A first line to be ignored!\n' + fmt % (t.script1, t.script1)
+ textout = fmtout % (t.scriptout)
+ texterr = fmterr % (t.scripterr)
+
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.subdir('sub dir')
+ t.run_env = run_env
+
+ t.sub_dir = run_env.workpath('sub dir')
+ t.script_path = run_env.workpath('sub dir', t.script)
+ t.scriptx_path = run_env.workpath('sub dir', t.scriptx)
+ t.script1_path = run_env.workpath('sub dir', t.script1)
+ t.scriptout_path = run_env.workpath('sub dir', t.scriptout)
+ t.scripterr_path = run_env.workpath('sub dir', t.scripterr)
+
+ run_env.write(t.script_path, text)
+ run_env.write(t.scriptx_path, textx)
+ run_env.write(t.script1_path, text1)
+ run_env.write(t.scriptout_path, textout)
+ run_env.write(t.scripterr_path, texterr)
+
+ os.chmod(t.script_path, 0644) # XXX UNIX-specific
+ os.chmod(t.scriptx_path, 0755) # XXX UNIX-specific
+ os.chmod(t.script1_path, 0644) # XXX UNIX-specific
+ os.chmod(t.scriptout_path, 0644) # XXX UNIX-specific
+ os.chmod(t.scripterr_path, 0644) # XXX UNIX-specific
+
+ t.orig_cwd = os.getcwd()
+
+ t.workdir = run_env.workpath('sub dir')
+ os.chdir(t.workdir)
+
+ return t
+
+ def translate_newlines(self, data):
+ data = data.replace("\r\n", "\n")
+ return data
+
+ def call_python(self, input, python=None):
+ if python is None:
+ python = sys.executable
+ p = subprocess.Popen(python,
+ stdin=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE)
+ stdout, stderr = p.communicate(input)
+ stdout = self.translate_newlines(stdout)
+ stderr = self.translate_newlines(stderr)
+ return stdout, stderr, p.returncode
+
+ def popen_python(self, input, status=0, stdout="", stderr="", python=None):
+ if python is None:
+ python = sys.executable
+ _stdout, _stderr, _status = self.call_python(input, python)
+ _stdout = self.translate_newlines(_stdout)
+ _stderr = self.translate_newlines(_stderr)
+ assert _status == status, \
+ "status = %s, expected %s\n" % (str(_status), str(status)) + \
+ "STDOUT ===================\n" + _stdout + \
+ "STDERR ===================\n" + _stderr
+ assert _stdout == stdout, \
+ "Expected STDOUT ==========\n" + stdout + \
+ "Actual STDOUT ============\n" + _stdout + \
+ "STDERR ===================\n" + _stderr
+ assert _stderr == stderr, \
+ "Expected STDERR ==========\n" + stderr + \
+ "Actual STDERR ============\n" + _stderr
+
+ def run_match(self, content, *args):
+ expect = "%s: %s: %s: %s\n" % args
+ content = self.translate_newlines(content)
+ assert content == expect, \
+ "Expected %s ==========\n" % args[1] + expect + \
+ "Actual %s ============\n" % args[1] + content
+
+
+
+class __init__TestCase(TestCmdTestCase):
+ def test_init(self):
+ """Test init()"""
+ test = TestCmd.TestCmd()
+ test = TestCmd.TestCmd(description = 'test')
+ test = TestCmd.TestCmd(description = 'test', program = 'foo')
+ test = TestCmd.TestCmd(description = 'test',
+ program = 'foo',
+ universal_newlines=None)
+
+
+
+class basename_TestCase(TestCmdTestCase):
+ def test_basename(self):
+ """Test basename() [XXX TO BE WRITTEN]"""
+ assert 1 == 1
+
+
+
+class cleanup_TestCase(TestCmdTestCase):
+ def test_cleanup(self):
+ """Test cleanup()"""
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ test.write('file1', "Test file #1\n")
+ test.cleanup()
+ assert not os.path.exists(wdir)
+
+ def test_writable(self):
+ """Test cleanup() when the directory isn't writable"""
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ test.write('file2', "Test file #2\n")
+ os.chmod(test.workpath('file2'), 0400)
+ os.chmod(wdir, 0500)
+ test.cleanup()
+ assert not os.path.exists(wdir)
+
+ def test_shutil(self):
+ """Test cleanup() when used with shutil"""
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ os.chdir(wdir)
+
+ import shutil
+ save_rmtree = shutil.rmtree
+ def my_rmtree(dir, ignore_errors=0, wdir=wdir, _rmtree=save_rmtree):
+ assert os.getcwd() != wdir
+ return _rmtree(dir, ignore_errors=ignore_errors)
+ try:
+ shutil.rmtree = my_rmtree
+ test.cleanup()
+ finally:
+ shutil.rmtree = save_rmtree
+
+ def test_atexit(self):
+ """Test cleanup() when atexit is used"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import atexit
+def my_exitfunc():
+ print "my_exitfunc()"
+atexit.register(my_exitfunc)
+import TestCmd
+result = TestCmd.TestCmd(workdir = '')
+sys.exit(0)
+""" % self.orig_cwd, stdout='my_exitfunc()\n')
+
+ def test_exitfunc(self):
+ """Test cleanup() when sys.exitfunc is set"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+def my_exitfunc():
+ print "my_exitfunc()"
+sys.exitfunc = my_exitfunc
+import TestCmd
+result = TestCmd.TestCmd(workdir = '')
+sys.exit(0)
+""" % self.orig_cwd, stdout='my_exitfunc()\n')
+
+
+
+class chmod_TestCase(TestCmdTestCase):
+ def test_chmod(self):
+ """Test chmod()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'sub')
+
+ wdir_file1 = os.path.join(test.workdir, 'file1')
+ wdir_sub_file2 = os.path.join(test.workdir, 'sub', 'file2')
+
+ open(wdir_file1, 'w').write("")
+ open(wdir_sub_file2, 'w').write("")
+
+ if sys.platform == 'win32':
+
+ test.chmod(wdir_file1, stat.S_IREAD)
+ test.chmod(['sub', 'file2'], stat.S_IWRITE)
+
+ file1_mode = stat.S_IMODE(os.stat(wdir_file1)[stat.ST_MODE])
+ assert file1_mode == 0444, '0%o' % file1_mode
+ file2_mode = stat.S_IMODE(os.stat(wdir_sub_file2)[stat.ST_MODE])
+ assert file2_mode == 0666, '0%o' % file2_mode
+
+ test.chmod('file1', stat.S_IWRITE)
+ test.chmod(wdir_sub_file2, stat.S_IREAD)
+
+ file1_mode = stat.S_IMODE(os.stat(wdir_file1)[stat.ST_MODE])
+ assert file1_mode == 0666, '0%o' % file1_mode
+ file2_mode = stat.S_IMODE(os.stat(wdir_sub_file2)[stat.ST_MODE])
+ assert file2_mode == 0444, '0%o' % file2_mode
+
+ else:
+
+ test.chmod(wdir_file1, 0700)
+ test.chmod(['sub', 'file2'], 0760)
+
+ file1_mode = stat.S_IMODE(os.stat(wdir_file1)[stat.ST_MODE])
+ assert file1_mode == 0700, '0%o' % file1_mode
+ file2_mode = stat.S_IMODE(os.stat(wdir_sub_file2)[stat.ST_MODE])
+ assert file2_mode == 0760, '0%o' % file2_mode
+
+ test.chmod('file1', 0765)
+ test.chmod(wdir_sub_file2, 0567)
+
+ file1_mode = stat.S_IMODE(os.stat(wdir_file1)[stat.ST_MODE])
+ assert file1_mode == 0765, '0%o' % file1_mode
+ file2_mode = stat.S_IMODE(os.stat(wdir_sub_file2)[stat.ST_MODE])
+ assert file2_mode == 0567, '0%o' % file2_mode
+
+
+
+class combine_TestCase(TestCmdTestCase):
+ def test_combine(self):
+ """Test combining stdout and stderr"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run1', """import sys
+sys.stdout.write("run1 STDOUT %s\\n" % sys.argv[1:])
+sys.stdout.write("run1 STDOUT second line\\n")
+sys.stderr.write("run1 STDERR %s\\n" % sys.argv[1:])
+sys.stderr.write("run1 STDERR second line\\n")
+sys.stdout.write("run1 STDOUT third line\\n")
+sys.stderr.write("run1 STDERR third line\\n")
+""")
+ run_env.write('run2', """import sys
+sys.stdout.write("run2 STDOUT %s\\n" % sys.argv[1:])
+sys.stdout.write("run2 STDOUT second line\\n")
+sys.stderr.write("run2 STDERR %s\\n" % sys.argv[1:])
+sys.stderr.write("run2 STDERR second line\\n")
+sys.stdout.write("run2 STDOUT third line\\n")
+sys.stderr.write("run2 STDERR third line\\n")
+""")
+ cwd = os.getcwd()
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+ test = TestCmd.TestCmd(interpreter = 'python',
+ workdir = '',
+ combine = 1)
+ try:
+ output = test.stdout()
+ except IndexError:
+ pass
+ else:
+ raise IndexError("got unexpected output:\n\t`%s'\n" % output)
+
+ # The underlying system subprocess implementations can combine
+ # stdout and stderr in different orders, so we accomodate both.
+
+ test.program_set('run1')
+ test.run(arguments = 'foo bar')
+ stdout_lines = """\
+run1 STDOUT ['foo', 'bar']
+run1 STDOUT second line
+run1 STDOUT third line
+"""
+ stderr_lines = """\
+run1 STDERR ['foo', 'bar']
+run1 STDERR second line
+run1 STDERR third line
+"""
+ foo_bar_expect = (stdout_lines + stderr_lines,
+ stderr_lines + stdout_lines)
+
+ test.program_set('run2')
+ test.run(arguments = 'snafu')
+ stdout_lines = """\
+run2 STDOUT ['snafu']
+run2 STDOUT second line
+run2 STDOUT third line
+"""
+ stderr_lines = """\
+run2 STDERR ['snafu']
+run2 STDERR second line
+run2 STDERR third line
+"""
+ snafu_expect = (stdout_lines + stderr_lines,
+ stderr_lines + stdout_lines)
+
+ # XXX SHOULD TEST ABSOLUTE NUMBER AS WELL
+ output = test.stdout()
+ output = self.translate_newlines(output)
+ assert output in snafu_expect, output
+ error = test.stderr()
+ assert error == '', error
+
+ output = test.stdout(run = -1)
+ output = self.translate_newlines(output)
+ assert output in foo_bar_expect, output
+ error = test.stderr(-1)
+ assert error == '', error
+ finally:
+ os.chdir(cwd)
+
+
+
+class description_TestCase(TestCmdTestCase):
+ def test_description(self):
+ """Test description()"""
+ test = TestCmd.TestCmd()
+ assert test.description is None, 'initialized description?'
+ test = TestCmd.TestCmd(description = 'test')
+ assert test.description == 'test', 'uninitialized description'
+ test.description_set('foo')
+ assert test.description == 'foo', 'did not set description'
+
+
+
+class diff_TestCase(TestCmdTestCase):
+ def test_diff_re(self):
+ """Test diff_re()"""
+ result = TestCmd.diff_re(["abcde"], ["abcde"])
+ assert result == [], result
+ result = TestCmd.diff_re(["a.*e"], ["abcde"])
+ assert result == [], result
+ result = TestCmd.diff_re(["a.*e"], ["xxx"])
+ assert result == ['1c1', "< 'a.*e'", '---', "> 'xxx'"], result
+
+ def test_diff_custom_function(self):
+ """Test diff() using a custom function"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+def my_diff(a, b):
+ return [
+ '*****',
+ a,
+ '*****',
+ b,
+ '*****',
+ ]
+test = TestCmd.TestCmd(diff = my_diff)
+test.diff("a\\nb1\\nc\\n", "a\\nb2\\nc\\n", "STDOUT")
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout = """\
+STDOUT==========================================================================
+*****
+['a', 'b1', 'c']
+*****
+['a', 'b2', 'c']
+*****
+""")
+
+ def test_diff_string(self):
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff = 'diff_re')
+test.diff("a\\nb1\\nc\\n", "a\\nb2\\nc\\n", 'STDOUT')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout = """\
+STDOUT==========================================================================
+2c2
+< 'b1'
+---
+> 'b2'
+""")
+
+ def test_error(self):
+ """Test handling a compilation error in TestCmd.diff_re()"""
+ script_input = """import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+assert TestCmd.diff_re(["a.*(e"], ["abcde"])
+sys.exit(0)
+""" % self.orig_cwd
+ stdout, stderr, status = self.call_python(script_input)
+ assert status == 1, status
+ expect1 = "Regular expression error in '^a.*(e$': missing )\n"
+ expect2 = "Regular expression error in '^a.*(e$': unbalanced parenthesis\n"
+ assert (stderr.find(expect1) != -1 or
+ stderr.find(expect2) != -1), repr(stderr)
+
+ def test_simple_diff_static_method(self):
+ """Test calling the TestCmd.TestCmd.simple_diff() static method"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+result = TestCmd.TestCmd.simple_diff(['a', 'b', 'c', 'e', 'f1'],
+ ['a', 'c', 'd', 'e', 'f2'])
+expect = ['2d1', '< b', '3a3', '> d', '5c5', '< f1', '---', '> f2']
+assert result == expect, result
+sys.exit(0)
+""" % self.orig_cwd)
+
+ def test_context_diff_static_method(self):
+ """Test calling the TestCmd.TestCmd.context_diff() static method"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+result = TestCmd.TestCmd.context_diff(['a\\n', 'b\\n', 'c\\n', 'e\\n', 'f1\\n'],
+ ['a\\n', 'c\\n', 'd\\n', 'e\\n', 'f2\\n'])
+result = list(result)
+expect = [
+ '*** \\n',
+ '--- \\n',
+ '***************\\n',
+ '*** 1,5 ****\\n',
+ ' a\\n',
+ '- b\\n',
+ ' c\\n',
+ ' e\\n',
+ '! f1\\n',
+ '--- 1,5 ----\\n',
+ ' a\\n',
+ ' c\\n',
+ '+ d\\n',
+ ' e\\n',
+ '! f2\\n',
+]
+assert result == expect, result
+sys.exit(0)
+""" % self.orig_cwd)
+
+ def test_unified_diff_static_method(self):
+ """Test calling the TestCmd.TestCmd.unified_diff() static method"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+result = TestCmd.TestCmd.unified_diff(['a\\n', 'b\\n', 'c\\n', 'e\\n', 'f1\\n'],
+ ['a\\n', 'c\\n', 'd\\n', 'e\\n', 'f2\\n'])
+result = list(result)
+expect = [
+ '--- \\n',
+ '+++ \\n',
+ '@@ -1,5 +1,5 @@\\n',
+ ' a\\n',
+ '-b\\n',
+ ' c\\n',
+ '+d\\n',
+ ' e\\n',
+ '-f1\\n',
+ '+f2\\n'
+]
+assert result == expect, result
+sys.exit(0)
+""" % self.orig_cwd)
+
+ def test_diff_re_static_method(self):
+ """Test calling the TestCmd.TestCmd.diff_re() static method"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+result = TestCmd.TestCmd.diff_re(['a', 'b', 'c', '.', 'f1'],
+ ['a', 'c', 'd', 'e', 'f2'])
+expect = [
+ '2c2',
+ "< 'b'",
+ '---',
+ "> 'c'",
+ '3c3',
+ "< 'c'",
+ '---',
+ "> 'd'",
+ '5c5',
+ "< 'f1'",
+ '---',
+ "> 'f2'"
+]
+assert result == expect, result
+sys.exit(0)
+""" % self.orig_cwd)
+
+
+
+class diff_stderr_TestCase(TestCmdTestCase):
+ def test_diff_stderr_default(self):
+ """Test diff_stderr() default behavior"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd()
+test.diff_stderr('a\nb1\nc\n', 'a\nb2\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+2c2
+< b1
+---
+> b2
+""")
+
+ def test_diff_stderr_not_affecting_diff_stdout(self):
+ """Test diff_stderr() not affecting diff_stdout() behavior"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stderr='diff_re')
+print "diff_stderr:"
+test.diff_stderr('a\nb.\nc\n', 'a\nbb\nc\n')
+print "diff_stdout:"
+test.diff_stdout('a\nb.\nc\n', 'a\nbb\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+diff_stderr:
+diff_stdout:
+2c2
+< b.
+---
+> bb
+""")
+
+ def test_diff_stderr_custom_function(self):
+ """Test diff_stderr() using a custom function"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+def my_diff(a, b):
+ return ["a:"] + a + ["b:"] + b
+test = TestCmd.TestCmd(diff_stderr=my_diff)
+test.diff_stderr('abc', 'def')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+a:
+abc
+b:
+def
+""")
+
+ def test_diff_stderr_TestCmd_function(self):
+ """Test diff_stderr() using a TestCmd function"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stderr = TestCmd.diff_re)
+test.diff_stderr('a\n.\n', 'b\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+1c1
+< 'a'
+---
+> 'b'
+""")
+
+ def test_diff_stderr_static_method(self):
+ """Test diff_stderr() using a static method"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stderr=TestCmd.TestCmd.diff_re)
+test.diff_stderr('a\n.\n', 'b\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+1c1
+< 'a'
+---
+> 'b'
+""")
+
+ def test_diff_stderr_string(self):
+ """Test diff_stderr() using a string to fetch the diff method"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stderr='diff_re')
+test.diff_stderr('a\n.\n', 'b\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+1c1
+< 'a'
+---
+> 'b'
+""")
+
+
+
+class diff_stdout_TestCase(TestCmdTestCase):
+ def test_diff_stdout_default(self):
+ """Test diff_stdout() default behavior"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd()
+test.diff_stdout('a\nb1\nc\n', 'a\nb2\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+2c2
+< b1
+---
+> b2
+""")
+
+ def test_diff_stdout_not_affecting_diff_stderr(self):
+ """Test diff_stdout() not affecting diff_stderr() behavior"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stdout='diff_re')
+print "diff_stdout:"
+test.diff_stdout('a\nb.\nc\n', 'a\nbb\nc\n')
+print "diff_stderr:"
+test.diff_stderr('a\nb.\nc\n', 'a\nbb\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+diff_stdout:
+diff_stderr:
+2c2
+< b.
+---
+> bb
+""")
+
+ def test_diff_stdout_custom_function(self):
+ """Test diff_stdout() using a custom function"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+def my_diff(a, b):
+ return ["a:"] + a + ["b:"] + b
+test = TestCmd.TestCmd(diff_stdout=my_diff)
+test.diff_stdout('abc', 'def')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+a:
+abc
+b:
+def
+""")
+
+ def test_diff_stdout_TestCmd_function(self):
+ """Test diff_stdout() using a TestCmd function"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stdout = TestCmd.diff_re)
+test.diff_stdout('a\n.\n', 'b\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+1c1
+< 'a'
+---
+> 'b'
+""")
+
+ def test_diff_stdout_static_method(self):
+ """Test diff_stdout() using a static method"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stdout=TestCmd.TestCmd.diff_re)
+test.diff_stdout('a\n.\n', 'b\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+1c1
+< 'a'
+---
+> 'b'
+""")
+
+ def test_diff_stdout_string(self):
+ """Test diff_stdout() using a string to fetch the diff method"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(diff_stdout='diff_re')
+test.diff_stdout('a\n.\n', 'b\nc\n')
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+1c1
+< 'a'
+---
+> 'b'
+""")
+
+
+
+class exit_TestCase(TestCmdTestCase):
+ def test_exit(self):
+ """Test exit()"""
+ def _test_it(cwd, tempdir, condition, preserved):
+ close_true = {'pass_test': 1, 'fail_test': 0, 'no_result': 0}
+ exit_status = {'pass_test': 0, 'fail_test': 1, 'no_result': 2}
+ result_string = {'pass_test': "PASSED\n",
+ 'fail_test': "FAILED test at line 5 of <stdin>\n",
+ 'no_result': "NO RESULT for test at line 5 of <stdin>\n"}
+ global ExitError
+ input = """import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(workdir = '%s')
+test.%s()
+""" % (cwd, tempdir, condition)
+ stdout, stderr, status = self.call_python(input, python="python")
+ if close_true[condition]:
+ unexpected = (status != 0)
+ else:
+ unexpected = (status == 0)
+ if unexpected:
+ msg = "Unexpected exit status from python: %s\n"
+ raise ExitError(msg % status + stdout + stderr)
+ if status != exit_status[condition]:
+ msg = "Expected exit status %d, got %d\n"
+ raise ExitError(msg % (exit_status[condition], status))
+ if stderr != result_string[condition]:
+ msg = "Expected error output:\n%sGot error output:\n%s"
+ raise ExitError(msg % (result_string[condition], stderr))
+ if preserved:
+ if not os.path.exists(tempdir):
+ msg = "Working directory %s was mistakenly removed\n"
+ raise ExitError(msg % tempdir + stdout)
+ else:
+ if os.path.exists(tempdir):
+ msg = "Working directory %s was mistakenly preserved\n"
+ raise ExitError(msg % tempdir + stdout)
+
+ run_env = TestCmd.TestCmd(workdir = '')
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+ cwd = self.orig_cwd
+ _clear_dict(os.environ, 'PRESERVE', 'PRESERVE_PASS', 'PRESERVE_FAIL', 'PRESERVE_NO_RESULT')
+ _test_it(cwd, 'dir01', 'pass_test', 0)
+ _test_it(cwd, 'dir02', 'fail_test', 0)
+ _test_it(cwd, 'dir03', 'no_result', 0)
+ os.environ['PRESERVE'] = '1'
+ _test_it(cwd, 'dir04', 'pass_test', 1)
+ _test_it(cwd, 'dir05', 'fail_test', 1)
+ _test_it(cwd, 'dir06', 'no_result', 1)
+ os.environ['PRESERVE'] = '' # del os.environ['PRESERVE']
+ os.environ['PRESERVE_PASS'] = '1'
+ _test_it(cwd, 'dir07', 'pass_test', 1)
+ _test_it(cwd, 'dir08', 'fail_test', 0)
+ _test_it(cwd, 'dir09', 'no_result', 0)
+ os.environ['PRESERVE_PASS'] = '' # del os.environ['PRESERVE_PASS']
+ os.environ['PRESERVE_FAIL'] = '1'
+ _test_it(cwd, 'dir10', 'pass_test', 0)
+ _test_it(cwd, 'dir11', 'fail_test', 1)
+ _test_it(cwd, 'dir12', 'no_result', 0)
+ os.environ['PRESERVE_FAIL'] = '' # del os.environ['PRESERVE_FAIL']
+ os.environ['PRESERVE_NO_RESULT'] = '1'
+ _test_it(cwd, 'dir13', 'pass_test', 0)
+ _test_it(cwd, 'dir14', 'fail_test', 0)
+ _test_it(cwd, 'dir15', 'no_result', 1)
+ os.environ['PRESERVE_NO_RESULT'] = '' # del os.environ['PRESERVE_NO_RESULT']
+ finally:
+ _clear_dict(os.environ, 'PRESERVE', 'PRESERVE_PASS', 'PRESERVE_FAIL', 'PRESERVE_NO_RESULT')
+
+
+
+class fail_test_TestCase(TestCmdTestCase):
+ def test_fail_test(self):
+ """Test fail_test()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run', """import sys
+sys.stdout.write("run: STDOUT\\n")
+sys.stderr.write("run: STDERR\\n")
+""")
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+TestCmd.fail_test(condition = 1)
+""" % self.orig_cwd, status = 1, stderr = "FAILED test at line 4 of <stdin>\n")
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = '')
+test.run()
+test.fail_test(condition = (test.status == 0))
+""" % self.orig_cwd, status = 1, stderr = "FAILED test of %s\n\tat line 6 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', description = 'xyzzy', workdir = '')
+test.run()
+test.fail_test(condition = (test.status == 0))
+""" % self.orig_cwd, status = 1, stderr = "FAILED test of %s [xyzzy]\n\tat line 6 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = '')
+test.run()
+def xxx():
+ sys.stderr.write("printed on failure\\n")
+test.fail_test(condition = (test.status == 0), function = xxx)
+""" % self.orig_cwd, status = 1, stderr = "printed on failure\nFAILED test of %s\n\tat line 8 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+def test1(self):
+ self.run()
+ self.fail_test(condition = (self.status == 0))
+def test2(self):
+ test1(self)
+test2(TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = ''))
+""" % self.orig_cwd, status = 1, stderr = "FAILED test of %s\n\tat line 6 of <stdin> (test1)\n\tfrom line 8 of <stdin> (test2)\n\tfrom line 9 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+def test1(self):
+ self.run()
+ self.fail_test(condition = (self.status == 0), skip = 1)
+def test2(self):
+ test1(self)
+test2(TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = ''))
+""" % self.orig_cwd, status = 1, stderr = "FAILED test of %s\n\tat line 8 of <stdin> (test2)\n\tfrom line 9 of <stdin>\n" % run_env.workpath('run'))
+
+
+
+class interpreter_TestCase(TestCmdTestCase):
+ def test_interpreter(self):
+ """Test interpreter()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run', """import sys
+sys.stdout.write("run: STDOUT\\n")
+sys.stderr.write("run: STDERR\\n")
+""")
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ test = TestCmd.TestCmd(program = 'run', workdir = '')
+ test.interpreter_set('foo')
+ assert test.interpreter == 'foo', 'did not set interpreter'
+ test.interpreter_set('python')
+ assert test.interpreter == 'python', 'did not set interpreter'
+ test.run()
+
+
+
+class match_TestCase(TestCmdTestCase):
+ def test_match_default(self):
+ """Test match() default behavior"""
+ test = TestCmd.TestCmd()
+ assert test.match("abcde\n", "a.*e\n")
+ assert test.match("12345\nabcde\n", "1\\d+5\na.*e\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert test.match(lines, regexes)
+
+ def test_match_custom_function(self):
+ """Test match() using a custom function"""
+ def match_length(lines, matches):
+ return len(lines) == len(matches)
+ test = TestCmd.TestCmd(match=match_length)
+ assert not test.match("123\n", "1\n")
+ assert test.match("123\n", "111\n")
+ assert not test.match("123\n123\n", "1\n1\n")
+ assert test.match("123\n123\n", "111\n111\n")
+ lines = ["123\n", "123\n"]
+ regexes = ["1\n", "1\n"]
+ assert test.match(lines, regexes) # due to equal numbers of lines
+
+ def test_match_TestCmd_function(self):
+ """Test match() using a TestCmd function"""
+ test = TestCmd.TestCmd(match = TestCmd.match_exact)
+ assert not test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+ assert not test.match("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match(lines, regexes)
+ assert test.match(lines, lines)
+
+ def test_match_static_method(self):
+ """Test match() using a static method"""
+ test = TestCmd.TestCmd(match=TestCmd.TestCmd.match_exact)
+ assert not test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+ assert not test.match("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match(lines, regexes)
+ assert test.match(lines, lines)
+
+ def test_match_string(self):
+ """Test match() using a string to fetch the match method"""
+ test = TestCmd.TestCmd(match='match_exact')
+ assert not test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+ assert not test.match("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match(lines, regexes)
+ assert test.match(lines, lines)
+
+
+
+class match_exact_TestCase(TestCmdTestCase):
+ def test_match_exact_function(self):
+ """Test calling the TestCmd.match_exact() function"""
+ assert not TestCmd.match_exact("abcde\\n", "a.*e\\n")
+ assert TestCmd.match_exact("abcde\\n", "abcde\\n")
+
+ def test_match_exact_instance_method(self):
+ """Test calling the TestCmd.TestCmd().match_exact() instance method"""
+ test = TestCmd.TestCmd()
+ assert not test.match_exact("abcde\\n", "a.*e\\n")
+ assert test.match_exact("abcde\\n", "abcde\\n")
+
+ def test_match_exact_static_method(self):
+ """Test calling the TestCmd.TestCmd.match_exact() static method"""
+ assert not TestCmd.TestCmd.match_exact("abcde\\n", "a.*e\\n")
+ assert TestCmd.TestCmd.match_exact("abcde\\n", "abcde\\n")
+
+ def test_evaluation(self):
+ """Test match_exact() evaluation"""
+ test = TestCmd.TestCmd()
+ assert not test.match_exact("abcde\n", "a.*e\n")
+ assert test.match_exact("abcde\n", "abcde\n")
+ assert not test.match_exact(["12345\n", "abcde\n"], ["1[0-9]*5\n", "a.*e\n"])
+ assert test.match_exact(["12345\n", "abcde\n"], ["12345\n", "abcde\n"])
+ assert not test.match_exact(UserList.UserList(["12345\n", "abcde\n"]),
+ ["1[0-9]*5\n", "a.*e\n"])
+ assert test.match_exact(UserList.UserList(["12345\n", "abcde\n"]),
+ ["12345\n", "abcde\n"])
+ assert not test.match_exact(["12345\n", "abcde\n"],
+ UserList.UserList(["1[0-9]*5\n", "a.*e\n"]))
+ assert test.match_exact(["12345\n", "abcde\n"],
+ UserList.UserList(["12345\n", "abcde\n"]))
+ assert not test.match_exact("12345\nabcde\n", "1[0-9]*5\na.*e\n")
+ assert test.match_exact("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_exact(lines, regexes)
+ assert test.match_exact(lines, lines)
+
+
+
+class match_re_dotall_TestCase(TestCmdTestCase):
+ def test_match_re_dotall_function(self):
+ """Test calling the TestCmd.match_re_dotall() function"""
+ assert TestCmd.match_re_dotall("abcde\nfghij\n", "a.*j\n")
+
+ def test_match_re_dotall_instance_method(self):
+ """Test calling the TestCmd.TestCmd().match_re_dotall() instance method"""
+ test = TestCmd.TestCmd()
+ test.match_re_dotall("abcde\\nfghij\\n", "a.*j\\n")
+
+ def test_match_re_dotall_static_method(self):
+ """Test calling the TestCmd.TestCmd.match_re_dotall() static method"""
+ assert TestCmd.TestCmd.match_re_dotall("abcde\nfghij\n", "a.*j\n")
+
+ def test_error(self):
+ """Test handling a compilation error in TestCmd.match_re_dotall()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ cwd = os.getcwd()
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+ script_input = """import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+assert TestCmd.match_re_dotall("abcde", "a.*(e")
+sys.exit(0)
+""" % cwd
+ stdout, stderr, status = self.call_python(script_input)
+ assert status == 1, status
+ expect1 = "Regular expression error in '^a.*(e$': missing )\n"
+ expect2 = "Regular expression error in '^a.*(e$': unbalanced parenthesis\n"
+ assert (stderr.find(expect1) != -1 or
+ stderr.find(expect2) != -1), repr(stderr)
+ finally:
+ os.chdir(cwd)
+
+ def test_evaluation(self):
+ """Test match_re_dotall() evaluation"""
+ test = TestCmd.TestCmd()
+ assert test.match_re_dotall("abcde\nfghij\n", "a.*e\nf.*j\n")
+ assert test.match_re_dotall("abcde\nfghij\n", "a[^j]*j\n")
+ assert test.match_re_dotall("abcde\nfghij\n", "abcde\nfghij\n")
+ assert test.match_re_dotall(["12345\n", "abcde\n", "fghij\n"],
+ ["1[0-9]*5\n", "a.*e\n", "f.*j\n"])
+ assert test.match_re_dotall(["12345\n", "abcde\n", "fghij\n"],
+ ["1.*j\n"])
+ assert test.match_re_dotall(["12345\n", "abcde\n", "fghij\n"],
+ ["12345\n", "abcde\n", "fghij\n"])
+ assert test.match_re_dotall(UserList.UserList(["12345\n",
+ "abcde\n",
+ "fghij\n"]),
+ ["1[0-9]*5\n", "a.*e\n", "f.*j\n"])
+ assert test.match_re_dotall(UserList.UserList(["12345\n",
+ "abcde\n",
+ "fghij\n"]),
+ ["1.*j\n"])
+ assert test.match_re_dotall(UserList.UserList(["12345\n",
+ "abcde\n",
+ "fghij\n"]),
+ ["12345\n", "abcde\n", "fghij\n"])
+ assert test.match_re_dotall(["12345\n", "abcde\n", "fghij\n"],
+ UserList.UserList(["1[0-9]*5\n",
+ "a.*e\n",
+ "f.*j\n"]))
+ assert test.match_re_dotall(["12345\n", "abcde\n", "fghij\n"],
+ UserList.UserList(["1.*j\n"]))
+ assert test.match_re_dotall(["12345\n", "abcde\n", "fghij\n"],
+ UserList.UserList(["12345\n",
+ "abcde\n",
+ "fghij\n"]))
+ assert test.match_re_dotall("12345\nabcde\nfghij\n",
+ "1[0-9]*5\na.*e\nf.*j\n")
+ assert test.match_re_dotall("12345\nabcde\nfghij\n", "1.*j\n")
+ assert test.match_re_dotall("12345\nabcde\nfghij\n",
+ "12345\nabcde\nfghij\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert test.match_re_dotall(lines, regexes)
+ assert test.match_re_dotall(lines, lines)
+
+
+
+class match_re_TestCase(TestCmdTestCase):
+ def test_match_re_function(self):
+ """Test calling the TestCmd.match_re() function"""
+ assert TestCmd.match_re("abcde\n", "a.*e\n")
+
+ def test_match_re_instance_method(self):
+ """Test calling the TestCmd.TestCmd().match_re() instance method"""
+ test = TestCmd.TestCmd()
+ assert test.match_re("abcde\n", "a.*e\n")
+
+ def test_match_re_static_method(self):
+ """Test calling the TestCmd.TestCmd.match_re() static method"""
+ assert TestCmd.TestCmd.match_re("abcde\n", "a.*e\n")
+
+ def test_error(self):
+ """Test handling a compilation error in TestCmd.match_re()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ cwd = os.getcwd()
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+ script_input = """import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+assert TestCmd.match_re("abcde\\n", "a.*(e\\n")
+sys.exit(0)
+""" % cwd
+ stdout, stderr, status = self.call_python(script_input)
+ assert status == 1, status
+ expect1 = "Regular expression error in '^a.*(e$': missing )\n"
+ expect2 = "Regular expression error in '^a.*(e$': unbalanced parenthesis\n"
+ assert (stderr.find(expect1) != -1 or
+ stderr.find(expect2) != -1), repr(stderr)
+ finally:
+ os.chdir(cwd)
+
+ def test_evaluation(self):
+ """Test match_re() evaluation"""
+ test = TestCmd.TestCmd()
+ assert test.match_re("abcde\n", "a.*e\n")
+ assert test.match_re("abcde\n", "abcde\n")
+ assert test.match_re(["12345\n", "abcde\n"], ["1[0-9]*5\n", "a.*e\n"])
+ assert test.match_re(["12345\n", "abcde\n"], ["12345\n", "abcde\n"])
+ assert test.match_re(UserList.UserList(["12345\n", "abcde\n"]),
+ ["1[0-9]*5\n", "a.*e\n"])
+ assert test.match_re(UserList.UserList(["12345\n", "abcde\n"]),
+ ["12345\n", "abcde\n"])
+ assert test.match_re(["12345\n", "abcde\n"],
+ UserList.UserList(["1[0-9]*5\n", "a.*e\n"]))
+ assert test.match_re(["12345\n", "abcde\n"],
+ UserList.UserList(["12345\n", "abcde\n"]))
+ assert test.match_re("12345\nabcde\n", "1[0-9]*5\na.*e\n")
+ assert test.match_re("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert test.match_re(lines, regexes)
+ assert test.match_re(lines, lines)
+
+
+
+class match_stderr_TestCase(TestCmdTestCase):
+ def test_match_stderr_default(self):
+ """Test match_stderr() default behavior"""
+ test = TestCmd.TestCmd()
+ assert test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("12345\nabcde\n", "1\\d+5\na.*e\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert test.match_stderr(lines, regexes)
+
+ def test_match_stderr_not_affecting_match_stdout(self):
+ """Test match_stderr() not affecting match_stdout() behavior"""
+ test = TestCmd.TestCmd(match_stderr=TestCmd.TestCmd.match_exact)
+
+ assert not test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("abcde\n", "abcde\n")
+ assert not test.match_stderr("12345\nabcde\n", "1\\d+5\na.*e\n")
+ assert test.match_stderr("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stderr(lines, regexes)
+ assert test.match_stderr(lines, lines)
+
+ assert test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("12345\nabcde\n", "1\\d+5\na.*e\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert test.match_stdout(lines, regexes)
+
+ def test_match_stderr_custom_function(self):
+ """Test match_stderr() using a custom function"""
+ def match_length(lines, matches):
+ return len(lines) == len(matches)
+ test = TestCmd.TestCmd(match_stderr=match_length)
+ assert not test.match_stderr("123\n", "1\n")
+ assert test.match_stderr("123\n", "111\n")
+ assert not test.match_stderr("123\n123\n", "1\n1\n")
+ assert test.match_stderr("123\n123\n", "111\n111\n")
+ lines = ["123\n", "123\n"]
+ regexes = ["1\n", "1\n"]
+ assert test.match_stderr(lines, regexes) # equal numbers of lines
+
+ def test_match_stderr_TestCmd_function(self):
+ """Test match_stderr() using a TestCmd function"""
+ test = TestCmd.TestCmd(match_stderr = TestCmd.match_exact)
+ assert not test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("abcde\n", "abcde\n")
+ assert not test.match_stderr("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match_stderr("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stderr(lines, regexes)
+ assert test.match_stderr(lines, lines)
+
+ def test_match_stderr_static_method(self):
+ """Test match_stderr() using a static method"""
+ test = TestCmd.TestCmd(match_stderr=TestCmd.TestCmd.match_exact)
+ assert not test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("abcde\n", "abcde\n")
+ assert not test.match_stderr("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match_stderr("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stderr(lines, regexes)
+ assert test.match_stderr(lines, lines)
+
+ def test_match_stderr_string(self):
+ """Test match_stderr() using a string to fetch the match method"""
+ test = TestCmd.TestCmd(match_stderr='match_exact')
+ assert not test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("abcde\n", "abcde\n")
+ assert not test.match_stderr("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match_stderr("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stderr(lines, regexes)
+ assert test.match_stderr(lines, lines)
+
+
+
+class match_stdout_TestCase(TestCmdTestCase):
+ def test_match_stdout_default(self):
+ """Test match_stdout() default behavior"""
+ test = TestCmd.TestCmd()
+ assert test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("12345\nabcde\n", "1\\d+5\na.*e\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert test.match_stdout(lines, regexes)
+
+ def test_match_stdout_not_affecting_match_stderr(self):
+ """Test match_stdout() not affecting match_stderr() behavior"""
+ test = TestCmd.TestCmd(match_stdout=TestCmd.TestCmd.match_exact)
+
+ assert not test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("abcde\n", "abcde\n")
+ assert not test.match_stdout("12345\nabcde\n", "1\\d+5\na.*e\n")
+ assert test.match_stdout("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stdout(lines, regexes)
+ assert test.match_stdout(lines, lines)
+
+ assert test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("12345\nabcde\n", "1\\d+5\na.*e\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert test.match_stderr(lines, regexes)
+
+ def test_match_stdout_custom_function(self):
+ """Test match_stdout() using a custom function"""
+ def match_length(lines, matches):
+ return len(lines) == len(matches)
+ test = TestCmd.TestCmd(match_stdout=match_length)
+ assert not test.match_stdout("123\n", "1\n")
+ assert test.match_stdout("123\n", "111\n")
+ assert not test.match_stdout("123\n123\n", "1\n1\n")
+ assert test.match_stdout("123\n123\n", "111\n111\n")
+ lines = ["123\n", "123\n"]
+ regexes = ["1\n", "1\n"]
+ assert test.match_stdout(lines, regexes) # equal numbers of lines
+
+ def test_match_stdout_TestCmd_function(self):
+ """Test match_stdout() using a TestCmd function"""
+ test = TestCmd.TestCmd(match_stdout = TestCmd.match_exact)
+ assert not test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("abcde\n", "abcde\n")
+ assert not test.match_stdout("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match_stdout("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stdout(lines, regexes)
+ assert test.match_stdout(lines, lines)
+
+ def test_match_stdout_static_method(self):
+ """Test match_stdout() using a static method"""
+ test = TestCmd.TestCmd(match_stdout=TestCmd.TestCmd.match_exact)
+ assert not test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("abcde\n", "abcde\n")
+ assert not test.match_stdout("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match_stdout("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stdout(lines, regexes)
+ assert test.match_stdout(lines, lines)
+
+ def test_match_stdout_string(self):
+ """Test match_stdout() using a string to fetch the match method"""
+ test = TestCmd.TestCmd(match_stdout='match_exact')
+ assert not test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("abcde\n", "abcde\n")
+ assert not test.match_stdout("12345\nabcde\n", "1\d+5\na.*e\n")
+ assert test.match_stdout("12345\nabcde\n", "12345\nabcde\n")
+ lines = ["vwxyz\n", "67890\n"]
+ regexes = ["v[^a-u]*z\n", "6[^ ]+0\n"]
+ assert not test.match_stdout(lines, regexes)
+ assert test.match_stdout(lines, lines)
+
+
+
+class no_result_TestCase(TestCmdTestCase):
+ def test_no_result(self):
+ """Test no_result()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run', """import sys
+sys.stdout.write("run: STDOUT\\n")
+sys.stderr.write("run: STDERR\\n")
+""")
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+TestCmd.no_result(condition = 1)
+""" % self.orig_cwd, status = 2, stderr = "NO RESULT for test at line 4 of <stdin>\n")
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = '')
+test.run()
+test.no_result(condition = (test.status == 0))
+""" % self.orig_cwd, status = 2, stderr = "NO RESULT for test of %s\n\tat line 6 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', description = 'xyzzy', workdir = '')
+test.run()
+test.no_result(condition = (test.status == 0))
+""" % self.orig_cwd, status = 2, stderr = "NO RESULT for test of %s [xyzzy]\n\tat line 6 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = '')
+test.run()
+def xxx():
+ sys.stderr.write("printed on no result\\n")
+test.no_result(condition = (test.status == 0), function = xxx)
+""" % self.orig_cwd, status = 2, stderr = "printed on no result\nNO RESULT for test of %s\n\tat line 8 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+def test1(self):
+ self.run()
+ self.no_result(condition = (self.status == 0))
+def test2(self):
+ test1(self)
+test2(TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = ''))
+""" % self.orig_cwd, status = 2, stderr = "NO RESULT for test of %s\n\tat line 6 of <stdin> (test1)\n\tfrom line 8 of <stdin> (test2)\n\tfrom line 9 of <stdin>\n" % run_env.workpath('run'))
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+def test1(self):
+ self.run()
+ self.no_result(condition = (self.status == 0), skip = 1)
+def test2(self):
+ test1(self)
+test2(TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = ''))
+""" % self.orig_cwd, status = 2, stderr = "NO RESULT for test of %s\n\tat line 8 of <stdin> (test2)\n\tfrom line 9 of <stdin>\n" % run_env.workpath('run'))
+
+
+
+class pass_test_TestCase(TestCmdTestCase):
+ def test_pass_test(self):
+ """Test pass_test()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run', """import sys
+sys.stdout.write("run: STDOUT\\n")
+sys.stderr.write("run: STDERR\\n")
+""")
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+TestCmd.pass_test(condition = 1)
+""" % self.orig_cwd, stderr = "PASSED\n")
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = '')
+test.run()
+test.pass_test(condition = (test.status == 0))
+""" % self.orig_cwd, stderr = "PASSED\n")
+
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = '')
+test.run()
+def brag():
+ sys.stderr.write("printed on success\\n")
+test.pass_test(condition = (test.status == 0), function = brag)
+""" % self.orig_cwd, stderr = "printed on success\nPASSED\n")
+
+ # TODO(sgk): SHOULD ALSO TEST FAILURE CONDITIONS
+
+
+
+class preserve_TestCase(TestCmdTestCase):
+ def test_preserve(self):
+ """Test preserve()"""
+ def cleanup_test(test, cond=None, stdout=""):
+ io = StringIO.StringIO()
+ save = sys.stdout
+ sys.stdout = io
+ try:
+ if cond:
+ test.cleanup(cond)
+ else:
+ test.cleanup()
+ o = io.getvalue()
+ assert o == stdout, "o = `%s', stdout = `%s'" % (o, stdout)
+ finally:
+ sys.stdout = save
+
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ try:
+ test.write('file1', "Test file #1\n")
+ #test.cleanup()
+ cleanup_test(test, )
+ assert not os.path.exists(wdir)
+ finally:
+ if os.path.exists(wdir):
+ shutil.rmtree(wdir, ignore_errors = 1)
+ test._dirlist.remove(wdir)
+
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ try:
+ test.write('file2', "Test file #2\n")
+ test.preserve('pass_test')
+ cleanup_test(test, 'pass_test', "Preserved directory %s\n" % wdir)
+ assert os.path.isdir(wdir)
+ cleanup_test(test, 'fail_test')
+ assert not os.path.exists(wdir)
+ finally:
+ if os.path.exists(wdir):
+ shutil.rmtree(wdir, ignore_errors = 1)
+ test._dirlist.remove(wdir)
+
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ try:
+ test.write('file3', "Test file #3\n")
+ test.preserve('fail_test')
+ cleanup_test(test, 'fail_test', "Preserved directory %s\n" % wdir)
+ assert os.path.isdir(wdir)
+ cleanup_test(test, 'pass_test')
+ assert not os.path.exists(wdir)
+ finally:
+ if os.path.exists(wdir):
+ shutil.rmtree(wdir, ignore_errors = 1)
+ test._dirlist.remove(wdir)
+
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ try:
+ test.write('file4', "Test file #4\n")
+ test.preserve('fail_test', 'no_result')
+ cleanup_test(test, 'fail_test', "Preserved directory %s\n" % wdir)
+ assert os.path.isdir(wdir)
+ cleanup_test(test, 'no_result', "Preserved directory %s\n" % wdir)
+ assert os.path.isdir(wdir)
+ cleanup_test(test, 'pass_test')
+ assert not os.path.exists(wdir)
+ finally:
+ if os.path.exists(wdir):
+ shutil.rmtree(wdir, ignore_errors = 1)
+ test._dirlist.remove(wdir)
+
+ test = TestCmd.TestCmd(workdir = '')
+ wdir = test.workdir
+ try:
+ test.preserve()
+ cleanup_test(test, 'pass_test', "Preserved directory %s\n" % wdir)
+ assert os.path.isdir(wdir)
+ cleanup_test(test, 'fail_test', "Preserved directory %s\n" % wdir)
+ assert os.path.isdir(wdir)
+ cleanup_test(test, 'no_result', "Preserved directory %s\n" % wdir)
+ assert os.path.isdir(wdir)
+ finally:
+ if os.path.exists(wdir):
+ shutil.rmtree(wdir, ignore_errors = 1)
+ test._dirlist.remove(wdir)
+
+
+
+class program_TestCase(TestCmdTestCase):
+ def test_program(self):
+ """Test program()"""
+ test = TestCmd.TestCmd()
+ assert test.program is None, 'initialized program?'
+ test = TestCmd.TestCmd(program = 'test')
+ assert test.program == os.path.join(os.getcwd(), 'test'), 'uninitialized program'
+ test.program_set('foo')
+ assert test.program == os.path.join(os.getcwd(), 'foo'), 'did not set program'
+
+
+
+class read_TestCase(TestCmdTestCase):
+ def test_read(self):
+ """Test read()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ wdir_file1 = os.path.join(test.workdir, 'file1')
+ wdir_file2 = os.path.join(test.workdir, 'file2')
+ wdir_foo_file3 = os.path.join(test.workdir, 'foo', 'file3')
+ wdir_file4 = os.path.join(test.workdir, 'file4')
+ wdir_file5 = os.path.join(test.workdir, 'file5')
+
+ open(wdir_file1, 'wb').write("")
+ open(wdir_file2, 'wb').write("Test\nfile\n#2.\n")
+ open(wdir_foo_file3, 'wb').write("Test\nfile\n#3.\n")
+ open(wdir_file4, 'wb').write("Test\nfile\n#4.\n")
+ open(wdir_file5, 'wb').write("Test\r\nfile\r\n#5.\r\n")
+
+ try:
+ contents = test.read('no_file')
+ except IOError: # expect "No such file or directory"
+ pass
+ except:
+ raise
+
+ try:
+ test.read(test.workpath('file_x'), mode = 'w')
+ except ValueError: # expect "mode must begin with 'r'
+ pass
+ except:
+ raise
+
+ def _file_matches(file, contents, expected):
+ assert contents == expected, \
+ "Expected contents of " + str(file) + "==========\n" + \
+ expected + \
+ "Actual contents of " + str(file) + "============\n" + \
+ contents
+
+ _file_matches(wdir_file1, test.read('file1'), "")
+ _file_matches(wdir_file2, test.read('file2'), "Test\nfile\n#2.\n")
+ _file_matches(wdir_foo_file3, test.read(['foo', 'file3']),
+ "Test\nfile\n#3.\n")
+ _file_matches(wdir_foo_file3,
+ test.read(UserList.UserList(['foo', 'file3'])),
+ "Test\nfile\n#3.\n")
+ _file_matches(wdir_file4, test.read('file4', mode = 'r'),
+ "Test\nfile\n#4.\n")
+ _file_matches(wdir_file5, test.read('file5', mode = 'rb'),
+ "Test\r\nfile\r\n#5.\r\n")
+
+
+
+class rmdir_TestCase(TestCmdTestCase):
+ def test_rmdir(self):
+ """Test rmdir()"""
+ test = TestCmd.TestCmd(workdir = '')
+
+ try:
+ test.rmdir(['no', 'such', 'dir'])
+ except EnvironmentError:
+ pass
+ else:
+ raise Exception("did not catch expected EnvironmentError")
+
+ test.subdir(['sub'],
+ ['sub', 'dir'],
+ ['sub', 'dir', 'one'])
+
+ s = test.workpath('sub')
+ s_d = test.workpath('sub', 'dir')
+ s_d_o = test.workpath('sub', 'dir', 'one')
+
+ try:
+ test.rmdir(['sub'])
+ except EnvironmentError:
+ pass
+ else:
+ raise Exception("did not catch expected EnvironmentError")
+
+ assert os.path.isdir(s_d_o), "%s is gone?" % s_d_o
+
+ try:
+ test.rmdir(['sub'])
+ except EnvironmentError:
+ pass
+ else:
+ raise Exception("did not catch expected EnvironmentError")
+
+ assert os.path.isdir(s_d_o), "%s is gone?" % s_d_o
+
+ test.rmdir(['sub', 'dir', 'one'])
+
+ assert not os.path.exists(s_d_o), "%s exists?" % s_d_o
+ assert os.path.isdir(s_d), "%s is gone?" % s_d
+
+ test.rmdir(['sub', 'dir'])
+
+ assert not os.path.exists(s_d), "%s exists?" % s_d
+ assert os.path.isdir(s), "%s is gone?" % s
+
+ test.rmdir('sub')
+
+ assert not os.path.exists(s), "%s exists?" % s
+
+
+
+class run_TestCase(TestCmdTestCase):
+ def test_run(self):
+ """Test run()"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ test.run()
+ self.run_match(test.stdout(), t.script, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(test.stderr(), t.script, "STDERR", t.workdir,
+ repr([]))
+
+ test.run(arguments = 'arg1 arg2 arg3')
+ self.run_match(test.stdout(), t.script, "STDOUT", t.workdir,
+ repr(['arg1', 'arg2', 'arg3']))
+ self.run_match(test.stderr(), t.script, "STDERR", t.workdir,
+ repr(['arg1', 'arg2', 'arg3']))
+
+ test.run(program = t.scriptx, arguments = 'foo')
+ self.run_match(test.stdout(), t.scriptx, "STDOUT", t.workdir,
+ repr(['foo']))
+ self.run_match(test.stderr(), t.scriptx, "STDERR", t.workdir,
+ repr(['foo']))
+
+ test.run(chdir = os.curdir, arguments = 'x y z')
+ self.run_match(test.stdout(), t.script, "STDOUT", test.workdir,
+ repr(['x', 'y', 'z']))
+ self.run_match(test.stderr(), t.script, "STDERR", test.workdir,
+ repr(['x', 'y', 'z']))
+
+ test.run(chdir = 'script_subdir')
+ script_subdir = test.workpath('script_subdir')
+ self.run_match(test.stdout(), t.script, "STDOUT", script_subdir,
+ repr([]))
+ self.run_match(test.stderr(), t.script, "STDERR", script_subdir,
+ repr([]))
+
+ test.run(program = t.script1, interpreter = ['python', '-x'])
+ self.run_match(test.stdout(), t.script1, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(test.stderr(), t.script1, "STDERR", t.workdir,
+ repr([]))
+
+ try:
+ test.run(chdir = 'no_subdir')
+ except OSError:
+ pass
+
+ test.run(program = 'no_script', interpreter = 'python')
+ assert test.status != None, test.status
+
+ try:
+ test.run(program = 'no_script', interpreter = 'no_interpreter')
+ except OSError:
+ # Python versions that use subprocess throw an OSError
+ # exception when they try to execute something that
+ # isn't there.
+ pass
+ else:
+ # Python versions that use os.popen3() or the Popen3
+ # class run things through the shell, which just returns
+ # a non-zero exit status.
+ assert test.status != None, test.status
+
+ testx = TestCmd.TestCmd(program = t.scriptx,
+ workdir = '',
+ subdir = 't.scriptx_subdir')
+
+ testx.run()
+ self.run_match(testx.stdout(), t.scriptx, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(testx.stderr(), t.scriptx, "STDERR", t.workdir,
+ repr([]))
+
+ testx.run(arguments = 'foo bar')
+ self.run_match(testx.stdout(), t.scriptx, "STDOUT", t.workdir,
+ repr(['foo', 'bar']))
+ self.run_match(testx.stderr(), t.scriptx, "STDERR", t.workdir,
+ repr(['foo', 'bar']))
+
+ testx.run(program = t.script, interpreter = 'python', arguments = 'bar')
+ self.run_match(testx.stdout(), t.script, "STDOUT", t.workdir,
+ repr(['bar']))
+ self.run_match(testx.stderr(), t.script, "STDERR", t.workdir,
+ repr(['bar']))
+
+ testx.run(chdir = os.curdir, arguments = 'baz')
+ self.run_match(testx.stdout(), t.scriptx, "STDOUT", testx.workdir,
+ repr(['baz']))
+ self.run_match(testx.stderr(), t.scriptx, "STDERR", testx.workdir,
+ repr(['baz']))
+
+ testx.run(chdir = 't.scriptx_subdir')
+ t.scriptx_subdir = testx.workpath('t.scriptx_subdir')
+ self.run_match(testx.stdout(), t.scriptx, "STDOUT", t.scriptx_subdir,
+ repr([]))
+ self.run_match(testx.stderr(), t.scriptx, "STDERR", t.scriptx_subdir,
+ repr([]))
+
+ testx.run(program = t.script1, interpreter = ('python', '-x'))
+ self.run_match(testx.stdout(), t.script1, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(testx.stderr(), t.script1, "STDERR", t.workdir,
+ repr([]))
+
+ s = os.path.join('.', t.scriptx)
+ testx.run(program = [s])
+ self.run_match(testx.stdout(), t.scriptx, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(testx.stderr(), t.scriptx, "STDERR", t.workdir,
+ repr([]))
+
+ try:
+ testx.run(chdir = 'no_subdir')
+ except OSError:
+ pass
+
+ try:
+ testx.run(program = 'no_program')
+ except OSError:
+ # Python versions that use subprocess throw an OSError
+ # exception when they try to execute something that
+ # isn't there.
+ pass
+ else:
+ # Python versions that use os.popen3() or the Popen3
+ # class run things through the shell, which just returns
+ # a non-zero exit status.
+ assert test.status != None
+
+ test1 = TestCmd.TestCmd(program = t.script1,
+ interpreter = ['python', '-x'],
+ workdir = '')
+
+ test1.run()
+ self.run_match(test1.stdout(), t.script1, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(test1.stderr(), t.script1, "STDERR", t.workdir,
+ repr([]))
+
+ finally:
+ os.chdir(t.orig_cwd)
+
+ def test_run_subclass(self):
+ """Test run() through a subclass with different signatures"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+
+ class MyTestCmdSubclass(TestCmd.TestCmd):
+ def start(self, additional_argument=None, **kw):
+ return TestCmd.TestCmd.start(self, **kw)
+
+ try:
+ test = MyTestCmdSubclass(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ test.run()
+ self.run_match(test.stdout(), t.script, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(test.stderr(), t.script, "STDERR", t.workdir,
+ repr([]))
+ finally:
+ os.chdir(t.orig_cwd)
+
+
+class run_verbose_TestCase(TestCmdTestCase):
+ def test_run_verbose(self):
+ """Test the run() method's verbose attribute"""
+
+ # Prepare our "source directory."
+ t = self.setup_run_scripts()
+
+ save_stdout = sys.stderr
+ save_stderr = sys.stderr
+
+ try:
+ # Test calling TestCmd() with an explicit verbose = 1.
+
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ verbose = 1)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ test.run(arguments = ['arg1 arg2'])
+ o = sys.stdout.getvalue()
+ assert o == '', o
+ e = sys.stderr.getvalue()
+ expect = 'python "%s" "arg1 arg2"\n' % t.script_path
+ assert expect == e, (expect, e)
+
+ testx = TestCmd.TestCmd(program = t.scriptx,
+ workdir = '',
+ verbose = 1)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ testx.run(arguments = ['arg1 arg2'])
+ expect = '"%s" "arg1 arg2"\n' % t.scriptx_path
+ o = sys.stdout.getvalue()
+ assert o == '', o
+ e = sys.stderr.getvalue()
+ assert expect == e, (expect, e)
+
+ # Test calling TestCmd() with an explicit verbose = 2.
+
+ outerr_fmt = """\
+============ STATUS: 0
+============ BEGIN STDOUT (len=%s):
+%s============ END STDOUT
+============ BEGIN STDERR (len=%s)
+%s============ END STDERR
+"""
+
+ out_fmt = """\
+============ STATUS: 0
+============ BEGIN STDOUT (len=%s):
+%s============ END STDOUT
+"""
+
+ err_fmt = """\
+============ STATUS: 0
+============ BEGIN STDERR (len=%s)
+%s============ END STDERR
+"""
+
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ verbose = 2)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ test.run(arguments = ['arg1 arg2'])
+
+ line_fmt = "script: %s: %s: ['arg1 arg2']\n"
+ stdout_line = line_fmt % ('STDOUT', t.sub_dir)
+ stderr_line = line_fmt % ('STDERR', t.sub_dir)
+ expect = outerr_fmt % (len(stdout_line), stdout_line,
+ len(stderr_line), stderr_line)
+ o = sys.stdout.getvalue()
+ assert expect == o, (expect, o)
+
+ expect = 'python "%s" "arg1 arg2"\n' % t.script_path
+ e = sys.stderr.getvalue()
+ assert e == expect, (e, expect)
+
+ testx = TestCmd.TestCmd(program = t.scriptx,
+ workdir = '',
+ verbose = 2)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ testx.run(arguments = ['arg1 arg2'])
+
+ line_fmt = "scriptx.bat: %s: %s: ['arg1 arg2']\n"
+ stdout_line = line_fmt % ('STDOUT', t.sub_dir)
+ stderr_line = line_fmt % ('STDERR', t.sub_dir)
+ expect = outerr_fmt % (len(stdout_line), stdout_line,
+ len(stderr_line), stderr_line)
+ o = sys.stdout.getvalue()
+ assert expect == o, (expect, o)
+
+ expect = '"%s" "arg1 arg2"\n' % t.scriptx_path
+ e = sys.stderr.getvalue()
+ assert e == expect, (e, expect)
+
+ # Test calling TestCmd() with an explicit verbose = 3.
+
+ test = TestCmd.TestCmd(program = t.scriptout,
+ interpreter = 'python',
+ workdir = '',
+ verbose = 2)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ test.run(arguments = ['arg1 arg2'])
+
+ line_fmt = "scriptout: %s: %s: ['arg1 arg2']\n"
+ stdout_line = line_fmt % ('STDOUT', t.sub_dir)
+ expect = out_fmt % (len(stdout_line), stdout_line)
+ o = sys.stdout.getvalue()
+ assert expect == o, (expect, o)
+
+ e = sys.stderr.getvalue()
+ expect = 'python "%s" "arg1 arg2"\n' % (t.scriptout_path)
+ assert e == expect, (e, expect)
+
+ test = TestCmd.TestCmd(program = t.scriptout,
+ interpreter = 'python',
+ workdir = '',
+ verbose = 3)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ test.run(arguments = ['arg1 arg2'])
+
+ line_fmt = "scriptout: %s: %s: ['arg1 arg2']\n"
+ stdout_line = line_fmt % ('STDOUT', t.sub_dir)
+ expect = outerr_fmt % (len(stdout_line), stdout_line,
+ '0', '')
+ o = sys.stdout.getvalue()
+ assert expect == o, (expect, o)
+
+ e = sys.stderr.getvalue()
+ expect = 'python "%s" "arg1 arg2"\n' % (t.scriptout_path)
+ assert e == expect, (e, expect)
+
+ # Test letting TestCmd() pick up verbose = 2 from the environment.
+
+ os.environ['TESTCMD_VERBOSE'] = '2'
+
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '')
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ test.run(arguments = ['arg1 arg2'])
+
+ line_fmt = "script: %s: %s: ['arg1 arg2']\n"
+ stdout_line = line_fmt % ('STDOUT', t.sub_dir)
+ stderr_line = line_fmt % ('STDERR', t.sub_dir)
+ expect = outerr_fmt % (len(stdout_line), stdout_line,
+ len(stderr_line), stderr_line)
+ o = sys.stdout.getvalue()
+ assert expect == o, (expect, o)
+
+ expect = 'python "%s" "arg1 arg2"\n' % t.script_path
+ e = sys.stderr.getvalue()
+ assert e == expect, (e, expect)
+
+ testx = TestCmd.TestCmd(program = t.scriptx,
+ workdir = '')
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ testx.run(arguments = ['arg1 arg2'])
+
+ line_fmt = "scriptx.bat: %s: %s: ['arg1 arg2']\n"
+ stdout_line = line_fmt % ('STDOUT', t.sub_dir)
+ stderr_line = line_fmt % ('STDERR', t.sub_dir)
+ expect = outerr_fmt % (len(stdout_line), stdout_line,
+ len(stderr_line), stderr_line)
+ o = sys.stdout.getvalue()
+ assert expect == o, (expect, o)
+
+ expect = '"%s" "arg1 arg2"\n' % t.scriptx_path
+ e = sys.stderr.getvalue()
+ assert e == expect, (e, expect)
+
+ # Test letting TestCmd() pick up verbose = 1 from the environment.
+
+ os.environ['TESTCMD_VERBOSE'] = '1'
+
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ verbose = 1)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ test.run(arguments = ['arg1 arg2'])
+ o = sys.stdout.getvalue()
+ assert o == '', o
+ e = sys.stderr.getvalue()
+ expect = 'python "%s" "arg1 arg2"\n' % t.script_path
+ assert expect == e, (expect, e)
+
+ testx = TestCmd.TestCmd(program = t.scriptx,
+ workdir = '',
+ verbose = 1)
+
+ sys.stdout = StringIO.StringIO()
+ sys.stderr = StringIO.StringIO()
+
+ testx.run(arguments = ['arg1 arg2'])
+ expect = '"%s" "arg1 arg2"\n' % t.scriptx_path
+ o = sys.stdout.getvalue()
+ assert o == '', o
+ e = sys.stderr.getvalue()
+ assert expect == e, (expect, e)
+
+ finally:
+ sys.stdout = save_stdout
+ sys.stderr = save_stderr
+ os.chdir(t.orig_cwd)
+ os.environ['TESTCMD_VERBOSE'] = ''
+
+
+
+class set_diff_function_TestCase(TestCmdTestCase):
+ def test_set_diff_function(self):
+ """Test set_diff_function()"""
+ self.popen_python(r"""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd()
+test.diff("a\n", "a\n")
+test.set_diff_function('diff_re')
+test.diff(".\n", "a\n")
+sys.exit(0)
+""" % self.orig_cwd)
+
+ def test_set_diff_function_stdout(self):
+ """Test set_diff_function(): stdout"""
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd()
+print "diff:"
+test.diff("a\\n", "a\\n")
+print "diff_stdout:"
+test.diff_stdout("a\\n", "a\\n")
+test.set_diff_function(stdout='diff_re')
+print "diff:"
+test.diff(".\\n", "a\\n")
+print "diff_stdout:"
+test.diff_stdout(".\\n", "a\\n")
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+diff:
+diff_stdout:
+diff:
+1c1
+< .
+---
+> a
+diff_stdout:
+""")
+
+ def test_set_diff_function_stderr(self):
+ """Test set_diff_function(): stderr """
+ self.popen_python("""import sys
+sys.path = ['%s'] + sys.path
+import TestCmd
+test = TestCmd.TestCmd()
+print "diff:"
+test.diff("a\\n", "a\\n")
+print "diff_stderr:"
+test.diff_stderr("a\\n", "a\\n")
+test.set_diff_function(stderr='diff_re')
+print "diff:"
+test.diff(".\\n", "a\\n")
+print "diff_stderr:"
+test.diff_stderr(".\\n", "a\\n")
+sys.exit(0)
+""" % self.orig_cwd,
+ stdout="""\
+diff:
+diff_stderr:
+diff:
+1c1
+< .
+---
+> a
+diff_stderr:
+""")
+
+
+
+class set_match_function_TestCase(TestCmdTestCase):
+ def test_set_match_function(self):
+ """Test set_match_function()"""
+ test = TestCmd.TestCmd()
+ assert test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+
+ test.set_match_function('match_exact')
+
+ assert not test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+
+ def test_set_match_function_stdout(self):
+ """Test set_match_function(): stdout """
+ test = TestCmd.TestCmd()
+ assert test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+ assert test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("abcde\n", "abcde\n")
+
+ test.set_match_function(stdout='match_exact')
+
+ assert test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+ assert not test.match_stdout("abcde\n", "a.*e\n")
+ assert test.match_stdout("abcde\n", "abcde\n")
+
+ def test_set_match_function_stderr(self):
+ """Test set_match_function(): stderr """
+ test = TestCmd.TestCmd()
+ assert test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+ assert test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("abcde\n", "abcde\n")
+
+ test.set_match_function(stderr='match_exact')
+
+ assert test.match("abcde\n", "a.*e\n")
+ assert test.match("abcde\n", "abcde\n")
+ assert not test.match_stderr("abcde\n", "a.*e\n")
+ assert test.match_stderr("abcde\n", "abcde\n")
+
+
+
+class sleep_TestCase(TestCmdTestCase):
+ def test_sleep(self):
+ """Test sleep()"""
+ test = TestCmd.TestCmd()
+
+ start = time.time()
+ test.sleep()
+ end = time.time()
+ diff = end - start
+ assert diff > 0.9, "only slept %f seconds (start %f, end %f), not default" % (diff, start, end)
+
+ start = time.time()
+ test.sleep(3)
+ end = time.time()
+ diff = end - start
+ assert diff > 2.9, "only slept %f seconds (start %f, end %f), not 3" % (diff, start, end)
+
+
+
+class stderr_TestCase(TestCmdTestCase):
+ def test_stderr(self):
+ """Test stderr()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run1', """import sys
+sys.stdout.write("run1 STDOUT %s\\n" % sys.argv[1:])
+sys.stdout.write("run1 STDOUT second line\\n")
+sys.stderr.write("run1 STDERR %s\\n" % sys.argv[1:])
+sys.stderr.write("run1 STDERR second line\\n")
+""")
+ run_env.write('run2', """import sys
+sys.stdout.write("run2 STDOUT %s\\n" % sys.argv[1:])
+sys.stdout.write("run2 STDOUT second line\\n")
+sys.stderr.write("run2 STDERR %s\\n" % sys.argv[1:])
+sys.stderr.write("run2 STDERR second line\\n")
+""")
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ test = TestCmd.TestCmd(interpreter = 'python', workdir = '')
+ try:
+ output = test.stderr()
+ except IndexError:
+ pass
+ else:
+ raise IndexError("got unexpected output:\n" + output)
+ test.program_set('run1')
+ test.run(arguments = 'foo bar')
+ test.program_set('run2')
+ test.run(arguments = 'snafu')
+ # XXX SHOULD TEST ABSOLUTE NUMBER AS WELL
+ output = test.stderr()
+ assert output == "run2 STDERR ['snafu']\nrun2 STDERR second line\n", output
+ output = test.stderr(run = -1)
+ assert output == "run1 STDERR ['foo', 'bar']\nrun1 STDERR second line\n", output
+
+
+
+class command_args_TestCase(TestCmdTestCase):
+ def test_command_args(self):
+ """Test command_args()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ test = TestCmd.TestCmd(workdir = '')
+
+ r = test.command_args('prog')
+ expect = [run_env.workpath('prog')]
+ assert r == expect, (expect, r)
+
+ r = test.command_args(test.workpath('new_prog'))
+ expect = [test.workpath('new_prog')]
+ assert r == expect, (expect, r)
+
+ r = test.command_args('prog', 'python')
+ expect = ['python', run_env.workpath('prog')]
+ assert r == expect, (expect, r)
+
+ r = test.command_args('prog', 'python', 'arg1 arg2')
+ expect = ['python', run_env.workpath('prog'), 'arg1', 'arg2']
+ assert r == expect, (expect, r)
+
+ test.program_set('default_prog')
+ default_prog = run_env.workpath('default_prog')
+
+ r = test.command_args()
+ expect = [default_prog]
+ assert r == expect, (expect, r)
+
+ r = test.command_args(interpreter='PYTHON')
+ expect = ['PYTHON', default_prog]
+ assert r == expect, (expect, r)
+
+ r = test.command_args(interpreter='PYTHON', arguments='arg3 arg4')
+ expect = ['PYTHON', default_prog, 'arg3', 'arg4']
+ assert r == expect, (expect, r)
+
+ test.interpreter_set('default_python')
+
+ r = test.command_args()
+ expect = ['default_python', default_prog]
+ assert r == expect, (expect, r)
+
+ r = test.command_args(arguments='arg5 arg6')
+ expect = ['default_python', default_prog, 'arg5', 'arg6']
+ assert r == expect, (expect, r)
+
+ r = test.command_args('new_prog_1')
+ expect = [run_env.workpath('new_prog_1')]
+ assert r == expect, (expect, r)
+
+ r = test.command_args(program='new_prog_2')
+ expect = [run_env.workpath('new_prog_2')]
+ assert r == expect, (expect, r)
+
+
+
+class start_TestCase(TestCmdTestCase):
+ def setup_run_scripts(self):
+ t = TestCmdTestCase.setup_run_scripts(self)
+ t.recv_script = 'script_recv'
+ t.recv_script_path = t.run_env.workpath(t.sub_dir, t.recv_script)
+ t.recv_out_path = t.run_env.workpath('script_recv.out')
+ text = """\
+import os
+import sys
+
+class Unbuffered:
+ def __init__(self, file):
+ self.file = file
+ def write(self, arg):
+ self.file.write(arg)
+ self.file.flush()
+ def __getattr__(self, attr):
+ return getattr(self.file, attr)
+
+sys.stdout = Unbuffered(sys.stdout)
+sys.stderr = Unbuffered(sys.stderr)
+
+sys.stdout.write('script_recv: STDOUT\\n')
+sys.stderr.write('script_recv: STDERR\\n')
+logfp = open(r'%s', 'wb')
+while 1:
+ line = sys.stdin.readline()
+ if not line:
+ break
+ logfp.write('script_recv: ' + line)
+ sys.stdout.write('script_recv: STDOUT: ' + line)
+ sys.stderr.write('script_recv: STDERR: ' + line)
+logfp.close()
+ """ % t.recv_out_path
+ t.run_env.write(t.recv_script_path, text)
+ os.chmod(t.recv_script_path, 0644) # XXX UNIX-specific
+ return t
+
+ def test_start(self):
+ """Test start()"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ p = test.start()
+ self.run_match(p.stdout.read(), t.script, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(p.stderr.read(), t.script, "STDERR", t.workdir,
+ repr([]))
+ p.wait()
+
+ p = test.start(arguments='arg1 arg2 arg3')
+ self.run_match(p.stdout.read(), t.script, "STDOUT", t.workdir,
+ repr(['arg1', 'arg2', 'arg3']))
+ self.run_match(p.stderr.read(), t.script, "STDERR", t.workdir,
+ repr(['arg1', 'arg2', 'arg3']))
+ p.wait()
+
+ p = test.start(program=t.scriptx, arguments='foo')
+ self.run_match(p.stdout.read(), t.scriptx, "STDOUT", t.workdir,
+ repr(['foo']))
+ self.run_match(p.stderr.read(), t.scriptx, "STDERR", t.workdir,
+ repr(['foo']))
+ p.wait()
+
+ p = test.start(program=t.script1, interpreter=['python', '-x'])
+ self.run_match(p.stdout.read(), t.script1, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(p.stderr.read(), t.script1, "STDERR", t.workdir,
+ repr([]))
+ p.wait()
+
+ p = test.start(program='no_script', interpreter='python')
+ status = p.wait()
+ assert status != None, status
+
+ try:
+ p = test.start(program='no_script', interpreter='no_interpreter')
+ except OSError:
+ # Python versions that use subprocess throw an OSError
+ # exception when they try to execute something that
+ # isn't there.
+ pass
+ else:
+ status = p.wait()
+ # Python versions that use os.popen3() or the Popen3
+ # class run things through the shell, which just returns
+ # a non-zero exit status.
+ assert status != None, status
+
+ testx = TestCmd.TestCmd(program = t.scriptx,
+ workdir = '',
+ subdir = 't.scriptx_subdir')
+
+ p = testx.start()
+ self.run_match(p.stdout.read(), t.scriptx, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(p.stderr.read(), t.scriptx, "STDERR", t.workdir,
+ repr([]))
+ p.wait()
+
+ p = testx.start(arguments='foo bar')
+ self.run_match(p.stdout.read(), t.scriptx, "STDOUT", t.workdir,
+ repr(['foo', 'bar']))
+ self.run_match(p.stderr.read(), t.scriptx, "STDERR", t.workdir,
+ repr(['foo', 'bar']))
+ p.wait()
+
+ p = testx.start(program=t.script, interpreter='python', arguments='bar')
+ self.run_match(p.stdout.read(), t.script, "STDOUT", t.workdir,
+ repr(['bar']))
+ self.run_match(p.stderr.read(), t.script, "STDERR", t.workdir,
+ repr(['bar']))
+ p.wait()
+
+ p = testx.start(program=t.script1, interpreter=('python', '-x'))
+ self.run_match(p.stdout.read(), t.script1, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(p.stderr.read(), t.script1, "STDERR", t.workdir,
+ repr([]))
+ p.wait()
+
+ s = os.path.join('.', t.scriptx)
+ p = testx.start(program=[s])
+ self.run_match(p.stdout.read(), t.scriptx, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(p.stderr.read(), t.scriptx, "STDERR", t.workdir,
+ repr([]))
+ p.wait()
+
+ try:
+ testx.start(program='no_program')
+ except OSError:
+ # Python versions that use subprocess throw an OSError
+ # exception when they try to execute something that
+ # isn't there.
+ pass
+ else:
+ # Python versions that use os.popen3() or the Popen3
+ # class run things through the shell, which just dies
+ # trying to execute the non-existent program before
+ # we can wait() for it.
+ try:
+ p = p.wait()
+ except OSError:
+ pass
+
+ test1 = TestCmd.TestCmd(program = t.script1,
+ interpreter = ['python', '-x'],
+ workdir = '')
+
+ p = test1.start()
+ self.run_match(p.stdout.read(), t.script1, "STDOUT", t.workdir,
+ repr([]))
+ self.run_match(p.stderr.read(), t.script1, "STDERR", t.workdir,
+ repr([]))
+ p.wait()
+
+ finally:
+ os.chdir(t.orig_cwd)
+
+ def test_finish(self):
+ """Test finish()"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+
+ test = TestCmd.TestCmd(program = t.recv_script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ test.start(stdin=1)
+ test.finish()
+ expect_stdout = """\
+script_recv: STDOUT
+"""
+ expect_stderr = """\
+script_recv: STDERR
+"""
+ stdout = test.stdout()
+ assert stdout == expect_stdout, stdout
+ stderr = test.stderr()
+ assert stderr == expect_stderr, stderr
+
+ p = test.start(stdin=1)
+ p.send('input\n')
+ test.finish(p)
+ expect_stdout = """\
+script_recv: STDOUT
+script_recv: STDOUT: input
+"""
+ expect_stderr = """\
+script_recv: STDERR
+script_recv: STDERR: input
+"""
+ stdout = test.stdout()
+ assert stdout == expect_stdout, stdout
+ stderr = test.stderr()
+ assert stderr == expect_stderr, stderr
+
+ p = test.start(combine=1, stdin=1)
+ p.send('input\n')
+ test.finish(p)
+ expect_stdout = """\
+script_recv: STDOUT
+script_recv: STDERR
+script_recv: STDOUT: input
+script_recv: STDERR: input
+"""
+ expect_stderr = ""
+ stdout = test.stdout()
+ assert stdout == expect_stdout, stdout
+ stderr = test.stderr()
+ assert stderr == expect_stderr, stderr
+
+ finally:
+ os.chdir(t.orig_cwd)
+
+ def test_recv(self):
+ """Test the recv() method of objects returned by start()"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ p = test.start()
+ stdout = p.recv()
+ while stdout == '':
+ import time
+ time.sleep(1)
+ stdout = p.recv()
+ self.run_match(stdout, t.script, "STDOUT", t.workdir,
+ repr([]))
+ p.wait()
+
+ finally:
+ os.chdir(t.orig_cwd)
+
+ def test_recv_err(self):
+ """Test the recv_err() method of objects returned by start()"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+
+ test = TestCmd.TestCmd(program = t.script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ p = test.start()
+ stderr = p.recv_err()
+ while stderr == '':
+ import time
+ time.sleep(1)
+ stderr = p.recv_err()
+ self.run_match(stderr, t.script, "STDERR", t.workdir,
+ repr([]))
+ p.wait()
+
+
+ finally:
+ os.chdir(t.orig_cwd)
+
+ def test_send(self):
+ """Test the send() method of objects returned by start()"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+
+ test = TestCmd.TestCmd(program = t.recv_script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ p = test.start(stdin=1)
+ input = 'stdin.write() input to the receive script\n'
+ p.stdin.write(input)
+ p.stdin.close()
+ p.wait()
+ result = open(t.recv_out_path, 'rb').read()
+ expect = 'script_recv: ' + input
+ assert result == expect, repr(result)
+
+ p = test.start(stdin=1)
+ input = 'send() input to the receive script\n'
+ p.send(input)
+ p.stdin.close()
+ p.wait()
+ result = open(t.recv_out_path, 'rb').read()
+ expect = 'script_recv: ' + input
+ assert result == expect, repr(result)
+
+ finally:
+ os.chdir(t.orig_cwd)
+
+ # TODO(sgk): figure out how to eliminate the race conditions here.
+ def __FLAKY__test_send_recv(self):
+ """Test the send_recv() method of objects returned by start()"""
+
+ t = self.setup_run_scripts()
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ try:
+
+ test = TestCmd.TestCmd(program = t.recv_script,
+ interpreter = 'python',
+ workdir = '',
+ subdir = 'script_subdir')
+
+ def do_send_recv(p, input):
+ send, stdout, stderr = p.send_recv(input)
+ stdout = self.translate_newlines(stdout)
+ stderr = self.translate_newlines(stderr)
+ return send, stdout, stderr
+
+ p = test.start(stdin=1)
+ input = 'input to the receive script\n'
+ send, stdout, stderr = do_send_recv(p, input)
+ # Buffering issues and a race condition prevent this from
+ # being completely deterministic, so check for both null
+ # output and the first write() on each stream.
+ assert stdout in ("", "script_recv: STDOUT\n"), stdout
+ assert stderr in ("", "script_recv: STDERR\n"), stderr
+ send, stdout, stderr = do_send_recv(p, input)
+ assert stdout in ("", "script_recv: STDOUT\n"), stdout
+ assert stderr in ("", "script_recv: STDERR\n"), stderr
+ p.stdin.close()
+ stdout = self.translate_newlines(p.recv())
+ stderr = self.translate_newlines(p.recv_err())
+ assert stdout in ("", "script_recv: STDOUT\n"), stdout
+ assert stderr in ("", "script_recv: STDERR\n"), stderr
+ p.wait()
+ stdout = self.translate_newlines(p.recv())
+ stderr = self.translate_newlines(p.recv_err())
+ expect_stdout = """\
+script_recv: STDOUT
+script_recv: STDOUT: input to the receive script
+script_recv: STDOUT: input to the receive script
+"""
+ expect_stderr = """\
+script_recv: STDERR
+script_recv: STDERR: input to the receive script
+script_recv: STDERR: input to the receive script
+"""
+ assert stdout == expect_stdout, stdout
+ assert stderr == expect_stderr, stderr
+ result = open(t.recv_out_path, 'rb').read()
+ expect = ('script_recv: ' + input) * 2
+ assert result == expect, (result, stdout, stderr)
+
+ finally:
+ os.chdir(t.orig_cwd)
+
+
+
+class stdin_TestCase(TestCmdTestCase):
+ def test_stdin(self):
+ """Test stdin()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run', """import fileinput
+for line in fileinput.input():
+ print 'Y'.join(line[:-1].split('X'))
+""")
+ run_env.write('input', "X on X this X line X\n")
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ test = TestCmd.TestCmd(program = 'run', interpreter = 'python', workdir = '')
+ test.run(arguments = 'input')
+ assert test.stdout() == "Y on Y this Y line Y\n"
+ test.run(stdin = "X is X here X tooX\n")
+ assert test.stdout() == "Y is Y here Y tooY\n"
+ test.run(stdin = """X here X
+X there X
+""")
+ assert test.stdout() == "Y here Y\nY there Y\n"
+ test.run(stdin = ["X line X\n", "X another X\n"])
+ assert test.stdout() == "Y line Y\nY another Y\n"
+
+
+
+class stdout_TestCase(TestCmdTestCase):
+ def test_stdout(self):
+ """Test stdout()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ run_env.write('run1', """import sys
+sys.stdout.write("run1 STDOUT %s\\n" % sys.argv[1:])
+sys.stdout.write("run1 STDOUT second line\\n")
+sys.stderr.write("run1 STDERR %s\\n" % sys.argv[1:])
+sys.stderr.write("run1 STDERR second line\\n")
+""")
+ run_env.write('run2', """import sys
+sys.stdout.write("run2 STDOUT %s\\n" % sys.argv[1:])
+sys.stdout.write("run2 STDOUT second line\\n")
+sys.stderr.write("run2 STDERR %s\\n" % sys.argv[1:])
+sys.stderr.write("run2 STDERR second line\\n")
+""")
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ test = TestCmd.TestCmd(interpreter = 'python', workdir = '')
+ try:
+ output = test.stdout()
+ except IndexError:
+ pass
+ else:
+ raise IndexError("got unexpected output:\n\t`%s'\n" % output)
+ test.program_set('run1')
+ test.run(arguments = 'foo bar')
+ test.program_set('run2')
+ test.run(arguments = 'snafu')
+ # XXX SHOULD TEST ABSOLUTE NUMBER AS WELL
+ output = test.stdout()
+ assert output == "run2 STDOUT ['snafu']\nrun2 STDOUT second line\n", output
+ output = test.stdout(run = -1)
+ assert output == "run1 STDOUT ['foo', 'bar']\nrun1 STDOUT second line\n", output
+
+
+
+class subdir_TestCase(TestCmdTestCase):
+ def test_subdir(self):
+ """Test subdir()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = ['no', 'such', 'subdir'])
+ assert not os.path.exists(test.workpath('no'))
+
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ assert test.subdir('bar') == 1
+ assert test.subdir(['foo', 'succeed']) == 1
+ if os.name != "nt":
+ os.chmod(test.workpath('foo'), 0500)
+ assert test.subdir(['foo', 'fail']) == 0
+ assert test.subdir(['sub', 'dir', 'ectory'], 'sub') == 1
+ assert test.subdir('one',
+ UserList.UserList(['one', 'two']),
+ ['one', 'two', 'three']) == 3
+ assert os.path.isdir(test.workpath('foo'))
+ assert os.path.isdir(test.workpath('bar'))
+ assert os.path.isdir(test.workpath('foo', 'succeed'))
+ if os.name != "nt":
+ assert not os.path.exists(test.workpath('foo', 'fail'))
+ assert os.path.isdir(test.workpath('sub'))
+ assert not os.path.exists(test.workpath('sub', 'dir'))
+ assert not os.path.exists(test.workpath('sub', 'dir', 'ectory'))
+ assert os.path.isdir(test.workpath('one', 'two', 'three'))
+
+
+
+class symlink_TestCase(TestCmdTestCase):
+ def test_symlink(self):
+ """Test symlink()"""
+ try: os.symlink
+ except AttributeError: return
+
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ wdir_file1 = os.path.join(test.workdir, 'file1')
+ wdir_target1 = os.path.join(test.workdir, 'target1')
+ wdir_foo_file2 = os.path.join(test.workdir, 'foo', 'file2')
+ wdir_target2 = os.path.join(test.workdir, 'target2')
+ wdir_foo_target2 = os.path.join(test.workdir, 'foo', 'target2')
+
+ test.symlink('target1', 'file1')
+ assert os.path.islink(wdir_file1)
+ assert not os.path.exists(wdir_file1)
+ open(wdir_target1, 'w').write("")
+ assert os.path.exists(wdir_file1)
+
+ test.symlink('target2', ['foo', 'file2'])
+ assert os.path.islink(wdir_foo_file2)
+ assert not os.path.exists(wdir_foo_file2)
+ open(wdir_target2, 'w').write("")
+ assert not os.path.exists(wdir_foo_file2)
+ open(wdir_foo_target2, 'w').write("")
+ assert os.path.exists(wdir_foo_file2)
+
+
+
+class tempdir_TestCase(TestCmdTestCase):
+ def setUp(self):
+ TestCmdTestCase.setUp(self)
+ self._tempdir = tempfile.mktemp()
+ os.mkdir(self._tempdir)
+ os.chdir(self._tempdir)
+
+ def tearDown(self):
+ TestCmdTestCase.tearDown(self)
+ os.rmdir(self._tempdir)
+
+ def test_tempdir(self):
+ """Test tempdir()"""
+ test = TestCmd.TestCmd()
+ tdir1 = test.tempdir()
+ assert os.path.isdir(tdir1)
+ test.workdir_set(None)
+ test.cleanup()
+ assert not os.path.exists(tdir1)
+
+ test = TestCmd.TestCmd()
+ tdir2 = test.tempdir('temp')
+ assert os.path.isdir(tdir2)
+ tdir3 = test.tempdir()
+ assert os.path.isdir(tdir3)
+ test.workdir_set(None)
+ test.cleanup()
+ assert not os.path.exists(tdir2)
+ assert not os.path.exists(tdir3)
+
+
+timeout_script = """\
+import sys
+import time
+seconds = int(sys.argv[1])
+sys.stdout.write('sleeping %s\\n' % seconds)
+sys.stdout.flush()
+time.sleep(seconds)
+sys.stdout.write('slept %s\\n' % seconds)
+sys.stdout.flush()
+sys.exit(0)
+"""
+
+class timeout_TestCase(TestCmdTestCase):
+ def test_initialization(self):
+ """Test initialization timeout"""
+ test = TestCmd.TestCmd(workdir='', timeout=2)
+ test.write('sleep.py', timeout_script)
+
+ test.run([sys.executable, test.workpath('sleep.py'), '4'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 4\n', test.stdout()
+
+ test.run([sys.executable, test.workpath('sleep.py'), '4'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 4\n', test.stdout()
+
+ def test_cancellation(self):
+ """Test timer cancellation after firing"""
+ test = TestCmd.TestCmd(workdir='', timeout=4)
+ test.write('sleep.py', timeout_script)
+
+ test.run([sys.executable, test.workpath('sleep.py'), '6'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 6\n', test.stdout()
+
+ test.run([sys.executable, test.workpath('sleep.py'), '2'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 2\nslept 2\n', test.stdout()
+
+ test.run([sys.executable, test.workpath('sleep.py'), '6'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 6\n', test.stdout()
+
+ def test_run(self):
+ """Test run() timeout"""
+ test = TestCmd.TestCmd(workdir='', timeout=8)
+ test.write('sleep.py', timeout_script)
+
+ test.run([sys.executable, test.workpath('sleep.py'), '2'],
+ timeout=4)
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 2\nslept 2\n', test.stdout()
+
+ test.run([sys.executable, test.workpath('sleep.py'), '6'],
+ timeout=4)
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 6\n', test.stdout()
+
+ def test_set_timeout(self):
+ """Test set_timeout()"""
+ test = TestCmd.TestCmd(workdir='', timeout=2)
+ test.write('sleep.py', timeout_script)
+
+ test.run([sys.executable, test.workpath('sleep.py'), '4'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 4\n', test.stdout()
+
+ test.set_timeout(None)
+
+ test.run([sys.executable, test.workpath('sleep.py'), '4'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 4\nslept 4\n', test.stdout()
+
+ test.set_timeout(6)
+
+ test.run([sys.executable, test.workpath('sleep.py'), '4'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 4\nslept 4\n', test.stdout()
+
+ test.run([sys.executable, test.workpath('sleep.py'), '8'])
+ assert test.stderr() == '', test.stderr()
+ assert test.stdout() == 'sleeping 8\n', test.stdout()
+
+
+
+class unlink_TestCase(TestCmdTestCase):
+ def test_unlink(self):
+ """Test unlink()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ wdir_file1 = os.path.join(test.workdir, 'file1')
+ wdir_file2 = os.path.join(test.workdir, 'file2')
+ wdir_foo_file3a = os.path.join(test.workdir, 'foo', 'file3a')
+ wdir_foo_file3b = os.path.join(test.workdir, 'foo', 'file3b')
+ wdir_foo_file4 = os.path.join(test.workdir, 'foo', 'file4')
+ wdir_file5 = os.path.join(test.workdir, 'file5')
+
+ open(wdir_file1, 'w').write("")
+ open(wdir_file2, 'w').write("")
+ open(wdir_foo_file3a, 'w').write("")
+ open(wdir_foo_file3b, 'w').write("")
+ open(wdir_foo_file4, 'w').write("")
+ open(wdir_file5, 'w').write("")
+
+ try:
+ contents = test.unlink('no_file')
+ except OSError: # expect "No such file or directory"
+ pass
+ except:
+ raise
+
+ test.unlink("file1")
+ assert not os.path.exists(wdir_file1)
+
+ test.unlink(wdir_file2)
+ assert not os.path.exists(wdir_file2)
+
+ test.unlink(['foo', 'file3a'])
+ assert not os.path.exists(wdir_foo_file3a)
+
+ test.unlink(UserList.UserList(['foo', 'file3b']))
+ assert not os.path.exists(wdir_foo_file3b)
+
+ test.unlink([test.workdir, 'foo', 'file4'])
+ assert not os.path.exists(wdir_foo_file4)
+
+ # Make it so we can't unlink file5.
+ # For UNIX, remove write permission from the dir and the file.
+ # For Windows, open the file.
+ os.chmod(test.workdir, 0500)
+ os.chmod(wdir_file5, 0400)
+ f = open(wdir_file5, 'r')
+
+ try:
+ try:
+ test.unlink('file5')
+ except OSError: # expect "Permission denied"
+ pass
+ except:
+ raise
+ finally:
+ os.chmod(test.workdir, 0700)
+ os.chmod(wdir_file5, 0600)
+ f.close()
+
+
+
+class touch_TestCase(TestCmdTestCase):
+ def test_touch(self):
+ """Test touch()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'sub')
+
+ wdir_file1 = os.path.join(test.workdir, 'file1')
+ wdir_sub_file2 = os.path.join(test.workdir, 'sub', 'file2')
+
+ open(wdir_file1, 'w').write("")
+ open(wdir_sub_file2, 'w').write("")
+
+ file1_old_time = os.path.getmtime(wdir_file1)
+ file2_old_time = os.path.getmtime(wdir_sub_file2)
+
+ test.sleep()
+
+ test.touch(wdir_file1)
+
+ file1_new_time = os.path.getmtime(wdir_file1)
+ assert file1_new_time > file1_old_time
+
+ test.touch('file1', file1_old_time)
+
+ result = os.path.getmtime(wdir_file1)
+ # Sub-second granularity of file systems may still vary.
+ # On Windows, the two times may be off by a microsecond.
+ assert int(result) == int(file1_old_time), (result, file1_old_time)
+
+ test.touch(['sub', 'file2'])
+
+ file2_new_time = os.path.getmtime(wdir_sub_file2)
+ assert file2_new_time > file2_old_time
+
+
+
+class verbose_TestCase(TestCmdTestCase):
+ def test_verbose(self):
+ """Test verbose()"""
+ test = TestCmd.TestCmd()
+ assert test.verbose == 0, 'verbose already initialized?'
+ test = TestCmd.TestCmd(verbose = 1)
+ assert test.verbose == 1, 'did not initialize verbose'
+ test.verbose = 2
+ assert test.verbose == 2, 'did not set verbose'
+
+
+
+class workdir_TestCase(TestCmdTestCase):
+ def test_workdir(self):
+ """Test workdir()"""
+ run_env = TestCmd.TestCmd(workdir = '')
+ os.chdir(run_env.workdir)
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ test = TestCmd.TestCmd()
+ assert test.workdir is None
+
+ test = TestCmd.TestCmd(workdir = None)
+ assert test.workdir is None
+
+ test = TestCmd.TestCmd(workdir = '')
+ assert test.workdir != None
+ assert os.path.isdir(test.workdir)
+
+ test = TestCmd.TestCmd(workdir = 'dir')
+ assert test.workdir != None
+ assert os.path.isdir(test.workdir)
+
+ no_such_subdir = os.path.join('no', 'such', 'subdir')
+ try:
+ test = TestCmd.TestCmd(workdir = no_such_subdir)
+ except OSError: # expect "No such file or directory"
+ pass
+ except:
+ raise
+
+ test = TestCmd.TestCmd(workdir = 'foo')
+ workdir_foo = test.workdir
+ assert workdir_foo != None
+
+ test.workdir_set('bar')
+ workdir_bar = test.workdir
+ assert workdir_bar != None
+
+ try:
+ test.workdir_set(no_such_subdir)
+ except OSError:
+ pass # expect "No such file or directory"
+ except:
+ raise
+ assert workdir_bar == test.workdir
+
+ assert os.path.isdir(workdir_foo)
+ assert os.path.isdir(workdir_bar)
+
+
+
+class workdirs_TestCase(TestCmdTestCase):
+ def test_workdirs(self):
+ """Test workdirs()"""
+ test = TestCmd.TestCmd()
+ assert test.workdir is None
+ test.workdir_set('')
+ wdir1 = test.workdir
+ test.workdir_set('')
+ wdir2 = test.workdir
+ assert os.path.isdir(wdir1)
+ assert os.path.isdir(wdir2)
+ test.cleanup()
+ assert not os.path.exists(wdir1)
+ assert not os.path.exists(wdir2)
+
+
+
+class workpath_TestCase(TestCmdTestCase):
+ def test_workpath(self):
+ """Test workpath()"""
+ test = TestCmd.TestCmd()
+ assert test.workdir is None
+
+ test = TestCmd.TestCmd(workdir = '')
+ wpath = test.workpath('foo', 'bar')
+ assert wpath == os.path.join(test.workdir, 'foo', 'bar')
+
+
+
+class readable_TestCase(TestCmdTestCase):
+ def test_readable(self):
+ """Test readable()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ test.write('file1', "Test file #1\n")
+ test.write(['foo', 'file2'], "Test file #2\n")
+
+ try: symlink = os.symlink
+ except AttributeError: pass
+ else: symlink('no_such_file', test.workpath('dangling_symlink'))
+
+ test.readable(test.workdir, 0)
+ # XXX skip these tests if euid == 0?
+ assert not _is_readable(test.workdir)
+ assert not _is_readable(test.workpath('file1'))
+ assert not _is_readable(test.workpath('foo'))
+ assert not _is_readable(test.workpath('foo', 'file2'))
+
+ test.readable(test.workdir, 1)
+ assert _is_readable(test.workdir)
+ assert _is_readable(test.workpath('file1'))
+ assert _is_readable(test.workpath('foo'))
+ assert _is_readable(test.workpath('foo', 'file2'))
+
+ test.readable(test.workdir, 0)
+ # XXX skip these tests if euid == 0?
+ assert not _is_readable(test.workdir)
+ assert not _is_readable(test.workpath('file1'))
+ assert not _is_readable(test.workpath('foo'))
+ assert not _is_readable(test.workpath('foo', 'file2'))
+
+ test.readable(test.workpath('file1'), 1)
+ assert _is_readable(test.workpath('file1'))
+
+ test.readable(test.workpath('file1'), 0)
+ assert not _is_readable(test.workpath('file1'))
+
+ test.readable(test.workdir, 1)
+
+
+
+class writable_TestCase(TestCmdTestCase):
+ def test_writable(self):
+ """Test writable()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ test.write('file1', "Test file #1\n")
+ test.write(['foo', 'file2'], "Test file #2\n")
+
+ try: symlink = os.symlink
+ except AttributeError: pass
+ else: symlink('no_such_file', test.workpath('dangling_symlink'))
+
+ test.writable(test.workdir, 0)
+ # XXX skip these tests if euid == 0?
+ assert not _is_writable(test.workdir)
+ assert not _is_writable(test.workpath('file1'))
+ assert not _is_writable(test.workpath('foo'))
+ assert not _is_writable(test.workpath('foo', 'file2'))
+
+ test.writable(test.workdir, 1)
+ assert _is_writable(test.workdir)
+ assert _is_writable(test.workpath('file1'))
+ assert _is_writable(test.workpath('foo'))
+ assert _is_writable(test.workpath('foo', 'file2'))
+
+ test.writable(test.workdir, 0)
+ # XXX skip these tests if euid == 0?
+ assert not _is_writable(test.workdir)
+ assert not _is_writable(test.workpath('file1'))
+ assert not _is_writable(test.workpath('foo'))
+ assert not _is_writable(test.workpath('foo', 'file2'))
+
+ test.writable(test.workpath('file1'), 1)
+ assert _is_writable(test.workpath('file1'))
+
+ test.writable(test.workpath('file1'), 0)
+ assert not _is_writable(test.workpath('file1'))
+
+
+
+class executable_TestCase(TestCmdTestCase):
+ def test_executable(self):
+ """Test executable()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ test.write('file1', "Test file #1\n")
+ test.write(['foo', 'file2'], "Test file #2\n")
+
+ try: symlink = os.symlink
+ except AttributeError: pass
+ else: symlink('no_such_file', test.workpath('dangling_symlink'))
+
+ def make_executable(fname):
+ st = os.stat(fname)
+ os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]|0100))
+
+ def make_non_executable(fname):
+ st = os.stat(fname)
+ os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]&~0100))
+
+ test.executable(test.workdir, 0)
+ # XXX skip these tests if euid == 0?
+ assert not _is_executable(test.workdir)
+ make_executable(test.workdir)
+ assert not _is_executable(test.workpath('file1'))
+ assert not _is_executable(test.workpath('foo'))
+ make_executable(test.workpath('foo'))
+ assert not _is_executable(test.workpath('foo', 'file2'))
+ make_non_executable(test.workpath('foo'))
+ make_non_executable(test.workdir)
+
+ test.executable(test.workdir, 1)
+ assert _is_executable(test.workdir)
+ assert _is_executable(test.workpath('file1'))
+ assert _is_executable(test.workpath('foo'))
+ assert _is_executable(test.workpath('foo', 'file2'))
+
+ test.executable(test.workdir, 0)
+ # XXX skip these tests if euid == 0?
+ assert not _is_executable(test.workdir)
+ make_executable(test.workdir)
+ assert not _is_executable(test.workpath('file1'))
+ assert not _is_executable(test.workpath('foo'))
+ make_executable(test.workpath('foo'))
+ assert not _is_executable(test.workpath('foo', 'file2'))
+
+ test.executable(test.workpath('file1'), 1)
+ assert _is_executable(test.workpath('file1'))
+
+ test.executable(test.workpath('file1'), 0)
+ assert not _is_executable(test.workpath('file1'))
+
+ test.executable(test.workdir, 1)
+
+
+
+class write_TestCase(TestCmdTestCase):
+ def test_write(self):
+ """Test write()"""
+ test = TestCmd.TestCmd(workdir = '', subdir = 'foo')
+ test.write('file1', "Test file #1\n")
+ test.write(['foo', 'file2'], "Test file #2\n")
+ try:
+ test.write(['bar', 'file3'], "Test file #3 (should not get created)\n")
+ except IOError: # expect "No such file or directory"
+ pass
+ except:
+ raise
+ test.write(test.workpath('file4'), "Test file #4.\n")
+ test.write(test.workpath('foo', 'file5'), "Test file #5.\n")
+ try:
+ test.write(test.workpath('bar', 'file6'), "Test file #6 (should not get created)\n")
+ except IOError: # expect "No such file or directory"
+ pass
+ except:
+ raise
+
+ try:
+ test.write('file7', "Test file #8.\n", mode = 'r')
+ except ValueError: # expect "mode must begin with 'w'
+ pass
+ except:
+ raise
+
+ test.write('file8', "Test file #8.\n", mode = 'w')
+ test.write('file9', "Test file #9.\r\n", mode = 'wb')
+
+ if os.name != "nt":
+ os.chmod(test.workdir, 0500)
+ try:
+ test.write('file10', "Test file #10 (should not get created).\n")
+ except IOError: # expect "Permission denied"
+ pass
+ except:
+ raise
+
+ assert os.path.isdir(test.workpath('foo'))
+ assert not os.path.exists(test.workpath('bar'))
+ assert os.path.isfile(test.workpath('file1'))
+ assert os.path.isfile(test.workpath('foo', 'file2'))
+ assert not os.path.exists(test.workpath('bar', 'file3'))
+ assert os.path.isfile(test.workpath('file4'))
+ assert os.path.isfile(test.workpath('foo', 'file5'))
+ assert not os.path.exists(test.workpath('bar', 'file6'))
+ assert not os.path.exists(test.workpath('file7'))
+ assert os.path.isfile(test.workpath('file8'))
+ assert os.path.isfile(test.workpath('file9'))
+ if os.name != "nt":
+ assert not os.path.exists(test.workpath('file10'))
+
+ assert open(test.workpath('file8'), 'r').read() == "Test file #8.\n"
+ assert open(test.workpath('file9'), 'rb').read() == "Test file #9.\r\n"
+
+
+
+class variables_TestCase(TestCmdTestCase):
+ def test_variables(self):
+ """Test global variables"""
+ run_env = TestCmd.TestCmd(workdir = '')
+
+ variables = [
+ 'fail_test',
+ 'no_result',
+ 'pass_test',
+ 'match_exact',
+ 'match_re',
+ 'match_re_dotall',
+ 'python',
+ '_python_',
+ 'TestCmd',
+ ]
+
+ script = "import TestCmd\n" + \
+ '\n'.join([ "print TestCmd.%s\n" % v for v in variables ])
+ run_env.run(program=sys.executable, stdin=script)
+ stderr = run_env.stderr()
+ assert stderr == "", stderr
+
+ script = "from TestCmd import *\n" + \
+ '\n'.join([ "print %s" % v for v in variables ])
+ run_env.run(program=sys.executable, stdin=script)
+ stderr = run_env.stderr()
+ assert stderr == "", stderr
+
+
+
+if __name__ == "__main__":
+ tclasses = [
+ __init__TestCase,
+ basename_TestCase,
+ cleanup_TestCase,
+ chmod_TestCase,
+ combine_TestCase,
+ command_args_TestCase,
+ description_TestCase,
+ diff_TestCase,
+ diff_stderr_TestCase,
+ diff_stdout_TestCase,
+ exit_TestCase,
+ fail_test_TestCase,
+ interpreter_TestCase,
+ match_TestCase,
+ match_exact_TestCase,
+ match_re_dotall_TestCase,
+ match_re_TestCase,
+ match_stderr_TestCase,
+ match_stdout_TestCase,
+ no_result_TestCase,
+ pass_test_TestCase,
+ preserve_TestCase,
+ program_TestCase,
+ read_TestCase,
+ rmdir_TestCase,
+ run_TestCase,
+ run_verbose_TestCase,
+ set_diff_function_TestCase,
+ set_match_function_TestCase,
+ sleep_TestCase,
+ start_TestCase,
+ stderr_TestCase,
+ stdin_TestCase,
+ stdout_TestCase,
+ subdir_TestCase,
+ symlink_TestCase,
+ tempdir_TestCase,
+ timeout_TestCase,
+ unlink_TestCase,
+ touch_TestCase,
+ verbose_TestCase,
+ workdir_TestCase,
+ workdirs_TestCase,
+ workpath_TestCase,
+ writable_TestCase,
+ write_TestCase,
+ variables_TestCase,
+ ]
+ if sys.platform != 'win32':
+ tclasses.extend([
+ executable_TestCase,
+ readable_TestCase,
+ ])
+ suite = unittest.TestSuite()
+ for tclass in tclasses:
+ names = unittest.getTestCaseNames(tclass, 'test_')
+ suite.addTests([ tclass(n) for n in names ])
+ if not unittest.TextTestRunner().run(suite).wasSuccessful():
+ sys.exit(1)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestCommon.py b/QMTest/TestCommon.py
new file mode 100644
index 0000000..4e90e16
--- /dev/null
+++ b/QMTest/TestCommon.py
@@ -0,0 +1,739 @@
+"""
+TestCommon.py: a testing framework for commands and scripts
+ with commonly useful error handling
+
+The TestCommon module provides a simple, high-level interface for writing
+tests of executable commands and scripts, especially commands and scripts
+that interact with the file system. All methods throw exceptions and
+exit on failure, with useful error messages. This makes a number of
+explicit checks unnecessary, making the test scripts themselves simpler
+to write and easier to read.
+
+The TestCommon class is a subclass of the TestCmd class. In essence,
+TestCommon is a wrapper that handles common TestCmd error conditions in
+useful ways. You can use TestCommon directly, or subclass it for your
+program and add additional (or override) methods to tailor it to your
+program's specific needs. Alternatively, the TestCommon class serves
+as a useful example of how to define your own TestCmd subclass.
+
+As a subclass of TestCmd, TestCommon provides access to all of the
+variables and methods from the TestCmd module. Consequently, you can
+use any variable or method documented in the TestCmd module without
+having to explicitly import TestCmd.
+
+A TestCommon environment object is created via the usual invocation:
+
+ import TestCommon
+ test = TestCommon.TestCommon()
+
+You can use all of the TestCmd keyword arguments when instantiating a
+TestCommon object; see the TestCmd documentation for details.
+
+Here is an overview of the methods and keyword arguments that are
+provided by the TestCommon class:
+
+ test.must_be_writable('file1', ['file2', ...])
+
+ test.must_contain('file', 'required text\n')
+
+ test.must_contain_all_lines(output, lines, ['title', find])
+
+ test.must_contain_any_line(output, lines, ['title', find])
+
+ test.must_contain_exactly_lines(output, lines, ['title', find])
+
+ test.must_exist('file1', ['file2', ...])
+
+ test.must_match('file', "expected contents\n")
+
+ test.must_not_be_writable('file1', ['file2', ...])
+
+ test.must_not_contain('file', 'banned text\n')
+
+ test.must_not_contain_any_line(output, lines, ['title', find])
+
+ test.must_not_exist('file1', ['file2', ...])
+
+ test.run(options = "options to be prepended to arguments",
+ stdout = "expected standard output from the program",
+ stderr = "expected error output from the program",
+ status = expected_status,
+ match = match_function)
+
+The TestCommon module also provides the following variables
+
+ TestCommon.python
+ TestCommon._python_
+ TestCommon.exe_suffix
+ TestCommon.obj_suffix
+ TestCommon.shobj_prefix
+ TestCommon.shobj_suffix
+ TestCommon.lib_prefix
+ TestCommon.lib_suffix
+ TestCommon.dll_prefix
+ TestCommon.dll_suffix
+
+"""
+
+# Copyright 2000-2010 Steven Knight
+# This module is free software, and you may redistribute it and/or modify
+# it under the same terms as Python itself, so long as this copyright message
+# and disclaimer are retained in their original form.
+#
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+# THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+# DAMAGE.
+#
+# THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
+# AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
+# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+__author__ = "Steven Knight <knight at baldmt dot com>"
+__revision__ = "TestCommon.py 1.3.D001 2010/06/03 12:58:27 knight"
+__version__ = "1.3"
+
+import copy
+import os
+import stat
+import sys
+import glob
+
+try:
+ from collections import UserList
+except ImportError:
+ # no 'collections' module or no UserList in collections
+ exec('from UserList import UserList')
+
+from TestCmd import *
+from TestCmd import __all__
+
+__all__.extend([ 'TestCommon',
+ 'exe_suffix',
+ 'obj_suffix',
+ 'shobj_prefix',
+ 'shobj_suffix',
+ 'lib_prefix',
+ 'lib_suffix',
+ 'dll_prefix',
+ 'dll_suffix',
+ ])
+
+try:
+ sorted
+except NameError:
+ # Pre-2.4 Python has no sorted() function.
+ #
+ # The pre-2.4 Python list.sort() method does not support
+ # list.sort(key=) nor list.sort(reverse=) keyword arguments, so
+ # we must implement the functionality of those keyword arguments
+ # by hand instead of passing them to list.sort().
+ def sorted(iterable, cmp=None, key=None, reverse=False):
+ if key is not None:
+ result = [(key(x), x) for x in iterable]
+ else:
+ result = iterable[:]
+ if cmp is None:
+ # Pre-2.3 Python does not support list.sort(None).
+ result.sort()
+ else:
+ result.sort(cmp)
+ if key is not None:
+ result = [t1 for t0,t1 in result]
+ if reverse:
+ result.reverse()
+ return result
+
+# Variables that describe the prefixes and suffixes on this system.
+if sys.platform == 'win32':
+ exe_suffix = '.exe'
+ obj_suffix = '.obj'
+ shobj_suffix = '.obj'
+ shobj_prefix = ''
+ lib_prefix = ''
+ lib_suffix = '.lib'
+ dll_prefix = ''
+ dll_suffix = '.dll'
+elif sys.platform == 'cygwin':
+ exe_suffix = '.exe'
+ obj_suffix = '.o'
+ shobj_suffix = '.os'
+ shobj_prefix = ''
+ lib_prefix = 'lib'
+ lib_suffix = '.a'
+ dll_prefix = 'cyg'
+ dll_suffix = '.dll'
+elif sys.platform.find('irix') != -1:
+ exe_suffix = ''
+ obj_suffix = '.o'
+ shobj_suffix = '.o'
+ shobj_prefix = ''
+ lib_prefix = 'lib'
+ lib_suffix = '.a'
+ dll_prefix = 'lib'
+ dll_suffix = '.so'
+elif sys.platform.find('darwin') != -1:
+ exe_suffix = ''
+ obj_suffix = '.o'
+ shobj_suffix = '.os'
+ shobj_prefix = ''
+ lib_prefix = 'lib'
+ lib_suffix = '.a'
+ dll_prefix = 'lib'
+ dll_suffix = '.dylib'
+elif sys.platform.find('sunos') != -1:
+ exe_suffix = ''
+ obj_suffix = '.o'
+ shobj_suffix = '.o'
+ shobj_prefix = 'so_'
+ lib_prefix = 'lib'
+ lib_suffix = '.a'
+ dll_prefix = 'lib'
+ dll_suffix = '.so'
+else:
+ exe_suffix = ''
+ obj_suffix = '.o'
+ shobj_suffix = '.os'
+ shobj_prefix = ''
+ lib_prefix = 'lib'
+ lib_suffix = '.a'
+ dll_prefix = 'lib'
+ dll_suffix = '.so'
+
+def is_List(e):
+ return isinstance(e, (list, UserList))
+
+def is_Tuple(e):
+ return isinstance(e, tuple)
+
+def is_Sequence(e):
+ return (not hasattr(e, "strip") and
+ hasattr(e, "__getitem__") or
+ hasattr(e, "__iter__"))
+
+def is_writable(f):
+ mode = os.stat(f)[stat.ST_MODE]
+ return mode & stat.S_IWUSR
+
+def separate_files(flist):
+ existing = []
+ missing = []
+ for f in flist:
+ if os.path.exists(f):
+ existing.append(f)
+ else:
+ missing.append(f)
+ return existing, missing
+
+if os.name == 'posix':
+ def _failed(self, status = 0):
+ if self.status is None or status is None:
+ return None
+ return _status(self) != status
+ def _status(self):
+ return self.status
+elif os.name == 'nt':
+ def _failed(self, status = 0):
+ return not (self.status is None or status is None) and \
+ self.status != status
+ def _status(self):
+ return self.status
+
+class TestCommon(TestCmd):
+
+ # Additional methods from the Perl Test::Cmd::Common module
+ # that we may wish to add in the future:
+ #
+ # $test->subdir('subdir', ...);
+ #
+ # $test->copy('src_file', 'dst_file');
+
+ def __init__(self, **kw):
+ """Initialize a new TestCommon instance. This involves just
+ calling the base class initialization, and then changing directory
+ to the workdir.
+ """
+ TestCmd.__init__(self, **kw)
+ os.chdir(self.workdir)
+
+ def options_arguments(self, options, arguments):
+ """Merges the "options" keyword argument with the arguments."""
+ if options:
+ if arguments is None:
+ return options
+ if isinstance(options, str):
+ options = [options]
+ if isinstance(arguments, str):
+ arguments = [arguments]
+ arguments = ' '.join(options + arguments)
+ return arguments
+
+ def must_be_writable(self, *files):
+ """Ensures that the specified file(s) exist and are writable.
+ An individual file can be specified as a list of directory names,
+ in which case the pathname will be constructed by concatenating
+ them. Exits FAILED if any of the files does not exist or is
+ not writable.
+ """
+ files = [is_List(x) and os.path.join(*x) or x for x in files]
+ existing, missing = separate_files(files)
+ unwritable = [x for x in existing if not is_writable(x)]
+ if missing:
+ print "Missing files: `%s'" % "', `".join(missing)
+ if unwritable:
+ print "Unwritable files: `%s'" % "', `".join(unwritable)
+ self.fail_test(missing + unwritable)
+
+ def must_contain(self, file, required, mode = 'rb', find = None):
+ """Ensures that the specified file contains the required text.
+ """
+ file_contents = self.read(file, mode)
+ if find is None:
+ def find(o, l):
+ try:
+ return o.index(l)
+ except ValueError:
+ return None
+ contains = find(file_contents, required)
+ if not contains:
+ print "File `%s' does not contain required string." % file
+ print self.banner('Required string ')
+ print required
+ print self.banner('%s contents ' % file)
+ print file_contents
+ self.fail_test(not contains)
+
+ def must_contain_all_lines(self, output, lines, title=None, find=None):
+ """Ensures that the specified output string (first argument)
+ contains all of the specified lines (second argument).
+
+ An optional third argument can be used to describe the type
+ of output being searched, and only shows up in failure output.
+
+ An optional fourth argument can be used to supply a different
+ function, of the form "find(line, output), to use when searching
+ for lines in the output.
+ """
+ if find is None:
+ def find(o, l):
+ try:
+ return o.index(l)
+ except ValueError:
+ return None
+ missing = []
+ if is_List(output):
+ output = '\n'.join(output)
+
+ for line in lines:
+ if find(output, line) is None:
+ missing.append(line)
+
+ if missing:
+ if title is None:
+ title = 'output'
+ sys.stdout.write("Missing expected lines from %s:\n" % title)
+ for line in missing:
+ sys.stdout.write(' ' + repr(line) + '\n')
+ sys.stdout.write(self.banner(title + ' ') + '\n')
+ sys.stdout.write(output)
+ self.fail_test()
+
+ def must_contain_any_line(self, output, lines, title=None, find=None):
+ """Ensures that the specified output string (first argument)
+ contains at least one of the specified lines (second argument).
+
+ An optional third argument can be used to describe the type
+ of output being searched, and only shows up in failure output.
+
+ An optional fourth argument can be used to supply a different
+ function, of the form "find(line, output), to use when searching
+ for lines in the output.
+ """
+ if find is None:
+ def find(o, l):
+ try:
+ return o.index(l)
+ except ValueError:
+ return None
+ for line in lines:
+ if find(output, line) is not None:
+ return
+
+ if title is None:
+ title = 'output'
+ sys.stdout.write("Missing any expected line from %s:\n" % title)
+ for line in lines:
+ sys.stdout.write(' ' + repr(line) + '\n')
+ sys.stdout.write(self.banner(title + ' ') + '\n')
+ sys.stdout.write(output)
+ self.fail_test()
+
+ def must_contain_exactly_lines(self, output, expect, title=None, find=None):
+ """Ensures that the specified output string (first argument)
+ contains all of the lines in the expected string (second argument)
+ with none left over.
+
+ An optional third argument can be used to describe the type
+ of output being searched, and only shows up in failure output.
+
+ An optional fourth argument can be used to supply a different
+ function, of the form "find(line, output), to use when searching
+ for lines in the output. The function must return the index
+ of the found line in the output, or None if the line is not found.
+ """
+ out = output.splitlines()
+ if is_List(expect):
+ exp = [ e.rstrip('\n') for e in expect ]
+ else:
+ exp = expect.splitlines()
+ if sorted(out) == sorted(exp):
+ # early out for exact match
+ return
+ if find is None:
+ def find(o, l):
+ try:
+ return o.index(l)
+ except ValueError:
+ return None
+ missing = []
+ for line in exp:
+ found = find(out, line)
+ if found is None:
+ missing.append(line)
+ else:
+ out.pop(found)
+
+ if not missing and not out:
+ # all lines were matched
+ return
+
+ if title is None:
+ title = 'output'
+ if missing:
+ sys.stdout.write("Missing expected lines from %s:\n" % title)
+ for line in missing:
+ sys.stdout.write(' ' + repr(line) + '\n')
+ sys.stdout.write(self.banner('Missing %s ' % title) + '\n')
+ if out:
+ sys.stdout.write("Extra unexpected lines from %s:\n" % title)
+ for line in out:
+ sys.stdout.write(' ' + repr(line) + '\n')
+ sys.stdout.write(self.banner('Extra %s ' % title) + '\n')
+ sys.stdout.flush()
+ self.fail_test()
+
+ def must_contain_lines(self, lines, output, title=None, find = None):
+ # Deprecated; retain for backwards compatibility.
+ return self.must_contain_all_lines(output, lines, title, find)
+
+ def must_exist(self, *files):
+ """Ensures that the specified file(s) must exist. An individual
+ file be specified as a list of directory names, in which case the
+ pathname will be constructed by concatenating them. Exits FAILED
+ if any of the files does not exist.
+ """
+ files = [is_List(x) and os.path.join(*x) or x for x in files]
+ missing = [x for x in files if not os.path.exists(x) and not os.path.islink(x) ]
+ if missing:
+ print "Missing files: `%s'" % "', `".join(missing)
+ self.fail_test(missing)
+
+ def must_exist_one_of(self, files):
+ """Ensures that at least one of the specified file(s) exists.
+ The filenames can be given as a list, where each entry may be
+ a single path string, or a tuple of folder names and the final
+ filename that get concatenated.
+ Supports wildcard names like 'foo-1.2.3-*.rpm'.
+ Exits FAILED if none of the files exists.
+ """
+ missing = []
+ for x in files:
+ if is_List(x) or is_Tuple(x):
+ xpath = os.path.join(*x)
+ else:
+ xpath = is_Sequence(x) and os.path.join(x) or x
+ if glob.glob(xpath):
+ return
+ missing.append(xpath)
+ print "Missing one of: `%s'" % "', `".join(missing)
+ self.fail_test(missing)
+
+ def must_match(self, file, expect, mode = 'rb', match=None):
+ """Matches the contents of the specified file (first argument)
+ against the expected contents (second argument). The expected
+ contents are a list of lines or a string which will be split
+ on newlines.
+ """
+ file_contents = self.read(file, mode)
+ if not match:
+ match = self.match
+ try:
+ self.fail_test(not match(file_contents, expect))
+ except KeyboardInterrupt:
+ raise
+ except:
+ print "Unexpected contents of `%s'" % file
+ self.diff(expect, file_contents, 'contents ')
+ raise
+
+ def must_not_contain(self, file, banned, mode = 'rb', find = None):
+ """Ensures that the specified file doesn't contain the banned text.
+ """
+ file_contents = self.read(file, mode)
+ if find is None:
+ def find(o, l):
+ try:
+ return o.index(l)
+ except ValueError:
+ return None
+ contains = find(file_contents, banned)
+ if contains:
+ print "File `%s' contains banned string." % file
+ print self.banner('Banned string ')
+ print banned
+ print self.banner('%s contents ' % file)
+ print file_contents
+ self.fail_test(contains)
+
+ def must_not_contain_any_line(self, output, lines, title=None, find=None):
+ """Ensures that the specified output string (first argument)
+ does not contain any of the specified lines (second argument).
+
+ An optional third argument can be used to describe the type
+ of output being searched, and only shows up in failure output.
+
+ An optional fourth argument can be used to supply a different
+ function, of the form "find(line, output), to use when searching
+ for lines in the output.
+ """
+ if find is None:
+ def find(o, l):
+ try:
+ return o.index(l)
+ except ValueError:
+ return None
+ unexpected = []
+ for line in lines:
+ if find(output, line) is not None:
+ unexpected.append(line)
+
+ if unexpected:
+ if title is None:
+ title = 'output'
+ sys.stdout.write("Unexpected lines in %s:\n" % title)
+ for line in unexpected:
+ sys.stdout.write(' ' + repr(line) + '\n')
+ sys.stdout.write(self.banner(title + ' ') + '\n')
+ sys.stdout.write(output)
+ self.fail_test()
+
+ def must_not_contain_lines(self, lines, output, title=None, find=None):
+ return self.must_not_contain_any_line(output, lines, title, find)
+
+ def must_not_exist(self, *files):
+ """Ensures that the specified file(s) must not exist.
+ An individual file be specified as a list of directory names, in
+ which case the pathname will be constructed by concatenating them.
+ Exits FAILED if any of the files exists.
+ """
+ files = [is_List(x) and os.path.join(*x) or x for x in files]
+ existing = [x for x in files if os.path.exists(x) or os.path.islink(x)]
+ if existing:
+ print "Unexpected files exist: `%s'" % "', `".join(existing)
+ self.fail_test(existing)
+
+ def must_not_exist_any_of(self, files):
+ """Ensures that none of the specified file(s) exists.
+ The filenames can be given as a list, where each entry may be
+ a single path string, or a tuple of folder names and the final
+ filename that get concatenated.
+ Supports wildcard names like 'foo-1.2.3-*.rpm'.
+ Exits FAILED if any of the files exists.
+ """
+ existing = []
+ for x in files:
+ if is_List(x) or is_Tuple(x):
+ xpath = os.path.join(*x)
+ else:
+ xpath = is_Sequence(x) and os.path.join(x) or x
+ if glob.glob(xpath):
+ existing.append(xpath)
+ if existing:
+ print "Unexpected files exist: `%s'" % "', `".join(existing)
+ self.fail_test(existing)
+
+ def must_not_be_writable(self, *files):
+ """Ensures that the specified file(s) exist and are not writable.
+ An individual file can be specified as a list of directory names,
+ in which case the pathname will be constructed by concatenating
+ them. Exits FAILED if any of the files does not exist or is
+ writable.
+ """
+ files = [is_List(x) and os.path.join(*x) or x for x in files]
+ existing, missing = separate_files(files)
+ writable = list(filter(is_writable, existing))
+ if missing:
+ print "Missing files: `%s'" % "', `".join(missing)
+ if writable:
+ print "Writable files: `%s'" % "', `".join(writable)
+ self.fail_test(missing + writable)
+
+ def _complete(self, actual_stdout, expected_stdout,
+ actual_stderr, expected_stderr, status, match):
+ """
+ Post-processes running a subcommand, checking for failure
+ status and displaying output appropriately.
+ """
+ if _failed(self, status):
+ expect = ''
+ if status != 0:
+ expect = " (expected %s)" % str(status)
+ print "%s returned %s%s" % (self.program, _status(self), expect)
+ print self.banner('STDOUT ')
+ print actual_stdout
+ print self.banner('STDERR ')
+ print actual_stderr
+ self.fail_test()
+ if (expected_stdout is not None
+ and not match(actual_stdout, expected_stdout)):
+ self.diff(expected_stdout, actual_stdout, 'STDOUT ')
+ if actual_stderr:
+ print self.banner('STDERR ')
+ print actual_stderr
+ self.fail_test()
+ if (expected_stderr is not None
+ and not match(actual_stderr, expected_stderr)):
+ print self.banner('STDOUT ')
+ print actual_stdout
+ self.diff(expected_stderr, actual_stderr, 'STDERR ')
+ self.fail_test()
+
+ def start(self, program = None,
+ interpreter = None,
+ options = None,
+ arguments = None,
+ universal_newlines = None,
+ **kw):
+ """
+ Starts a program or script for the test environment, handling
+ any exceptions.
+ """
+ arguments = self.options_arguments(options, arguments)
+ try:
+ return TestCmd.start(self, program, interpreter, arguments,
+ universal_newlines, **kw)
+ except KeyboardInterrupt:
+ raise
+ except Exception, e:
+ print self.banner('STDOUT ')
+ try:
+ print self.stdout()
+ except IndexError:
+ pass
+ print self.banner('STDERR ')
+ try:
+ print self.stderr()
+ except IndexError:
+ pass
+ cmd_args = self.command_args(program, interpreter, arguments)
+ sys.stderr.write('Exception trying to execute: %s\n' % cmd_args)
+ raise e
+
+ def finish(self, popen, stdout = None, stderr = '', status = 0, **kw):
+ """
+ Finishes and waits for the process being run under control of
+ the specified popen argument. Additional arguments are similar
+ to those of the run() method:
+
+ stdout The expected standard output from
+ the command. A value of None means
+ don't test standard output.
+
+ stderr The expected error output from
+ the command. A value of None means
+ don't test error output.
+
+ status The expected exit status from the
+ command. A value of None means don't
+ test exit status.
+ """
+ TestCmd.finish(self, popen, **kw)
+ match = kw.get('match', self.match)
+ self._complete(self.stdout(), stdout,
+ self.stderr(), stderr, status, match)
+
+ def run(self, options = None, arguments = None,
+ stdout = None, stderr = '', status = 0, **kw):
+ """Runs the program under test, checking that the test succeeded.
+
+ The parameters are the same as the base TestCmd.run() method,
+ with the addition of:
+
+ options Extra options that get appended to the beginning
+ of the arguments.
+
+ stdout The expected standard output from
+ the command. A value of None means
+ don't test standard output.
+
+ stderr The expected error output from
+ the command. A value of None means
+ don't test error output.
+
+ status The expected exit status from the
+ command. A value of None means don't
+ test exit status.
+
+ By default, this expects a successful exit (status = 0), does
+ not test standard output (stdout = None), and expects that error
+ output is empty (stderr = "").
+ """
+ kw['arguments'] = self.options_arguments(options, arguments)
+ try:
+ match = kw['match']
+ del kw['match']
+ except KeyError:
+ match = self.match
+ TestCmd.run(self, **kw)
+ self._complete(self.stdout(), stdout,
+ self.stderr(), stderr, status, match)
+
+ def skip_test(self, message="Skipping test.\n"):
+ """Skips a test.
+
+ Proper test-skipping behavior is dependent on the external
+ TESTCOMMON_PASS_SKIPS environment variable. If set, we treat
+ the skip as a PASS (exit 0), and otherwise treat it as NO RESULT.
+ In either case, we print the specified message as an indication
+ that the substance of the test was skipped.
+
+ (This was originally added to support development under Aegis.
+ Technically, skipping a test is a NO RESULT, but Aegis would
+ treat that as a test failure and prevent the change from going to
+ the next step. Since we ddn't want to force anyone using Aegis
+ to have to install absolutely every tool used by the tests, we
+ would actually report to Aegis that a skipped test has PASSED
+ so that the workflow isn't held up.)
+ """
+ if message:
+ sys.stdout.write(message)
+ sys.stdout.flush()
+ pass_skips = os.environ.get('TESTCOMMON_PASS_SKIPS')
+ if pass_skips in [None, 0, '0']:
+ # skip=1 means skip this function when showing where this
+ # result came from. They only care about the line where the
+ # script called test.skip_test(), not the line number where
+ # we call test.no_result().
+ self.no_result(skip=1)
+ else:
+ # We're under the development directory for this change,
+ # so this is an Aegis invocation; pass the test (exit 0).
+ self.pass_test()
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestCommonTests.py b/QMTest/TestCommonTests.py
new file mode 100644
index 0000000..30b7d6a
--- /dev/null
+++ b/QMTest/TestCommonTests.py
@@ -0,0 +1,2337 @@
+#!/usr/bin/env python
+"""
+TestCommonTests.py: Unit tests for the TestCommon.py module.
+
+Copyright 2000-2010 Steven Knight
+This module is free software, and you may redistribute it and/or modify
+it under the same terms as Python itself, so long as this copyright message
+and disclaimer are retained in their original form.
+
+IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
+AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
+SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+"""
+
+__author__ = "Steven Knight <knight at baldmt dot com>"
+__revision__ = "TestCommonTests.py 1.3.D001 2010/06/03 12:58:27 knight"
+
+import difflib
+import os
+import re
+import signal
+import stat
+import sys
+import unittest
+
+# Strip the current directory so we get the right TestCommon.py module.
+sys.path = sys.path[1:]
+
+import TestCmd
+import TestCommon
+
+def lstrip(s):
+ lines = [ _.expandtabs() for _ in s.split('\n') ]
+ if lines[0] == '':
+ lines = lines[1:]
+ spaces = len(re.match('^( *).*', lines[0]).group(1))
+ if spaces:
+ lines = [ l[spaces:] for l in lines ]
+ return '\n'.join(lines)
+
+if sys.version[:3] == '1.5':
+ expected_newline = '\\012'
+else:
+ expected_newline = '\\n'
+
+def assert_display(expect, result, error=None):
+ try:
+ expect = expect.pattern
+ except AttributeError:
+ pass
+ result = [
+ '\n',
+ ('*'*80) + '\n',
+ expect,
+ ('*'*80) + '\n',
+ result,
+ ('*'*80) + '\n',
+ ]
+ if error:
+ result.append(error)
+ return ''.join(result)
+
+
+class TestCommonTestCase(unittest.TestCase):
+ """Base class for TestCommon test cases, fixture and utility methods."""
+ create_run_env = True
+
+ def setUp(self):
+ self.orig_cwd = os.getcwd()
+ if self.create_run_env:
+ self.run_env = TestCmd.TestCmd(workdir = '')
+
+ def tearDown(self):
+ os.chdir(self.orig_cwd)
+
+ def set_up_execution_scripts(self):
+ run_env = self.run_env
+
+ run_env.subdir('sub dir')
+
+ self.python = sys.executable
+
+ self.pass_script = run_env.workpath('sub dir', 'pass')
+ self.fail_script = run_env.workpath('sub dir', 'fail')
+ self.stdout_script = run_env.workpath('sub dir', 'stdout')
+ self.stderr_script = run_env.workpath('sub dir', 'stderr')
+ self.signal_script = run_env.workpath('sub dir', 'signal')
+ self.stdin_script = run_env.workpath('sub dir', 'stdin')
+
+ preamble = "import sys"
+ stdout = "; sys.stdout.write(r'%s: STDOUT: ' + repr(sys.argv[1:]) + '\\n')"
+ stderr = "; sys.stderr.write(r'%s: STDERR: ' + repr(sys.argv[1:]) + '\\n')"
+ exit0 = "; sys.exit(0)"
+ exit1 = "; sys.exit(1)"
+ if sys.platform == 'win32':
+ wrapper = '@python -c "%s" %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9\n'
+ else:
+ wrapper = '#! /usr/bin/env python\n%s\n'
+ wrapper = '#! /usr/bin/env python\n%s\n'
+
+ pass_body = preamble + stdout % self.pass_script + exit0
+ fail_body = preamble + stdout % self.fail_script + exit1
+ stderr_body = preamble + stderr % self.stderr_script + exit0
+
+ run_env.write(self.pass_script, wrapper % pass_body)
+ run_env.write(self.fail_script, wrapper % fail_body)
+ run_env.write(self.stderr_script, wrapper % stderr_body)
+
+ signal_body = lstrip("""\
+ import os
+ import signal
+ os.kill(os.getpid(), signal.SIGTERM)
+ """)
+
+ run_env.write(self.signal_script, wrapper % signal_body)
+
+ stdin_body = lstrip("""\
+ import sys
+ input = sys.stdin.read()[:-1]
+ sys.stdout.write(r'%s: STDOUT: ' + repr(input) + '\\n')
+ sys.stderr.write(r'%s: STDERR: ' + repr(input) + '\\n')
+ """ % (self.stdin_script, self.stdin_script))
+
+ run_env.write(self.stdin_script, wrapper % stdin_body)
+
+ def run_execution_test(self, script, expect_stdout, expect_stderr):
+ self.set_up_execution_scripts()
+
+ run_env = self.run_env
+
+ os.chdir(run_env.workpath('sub dir'))
+
+ # Everything before this prepared our "source directory."
+ # Now do the real test.
+ script = script % self.__dict__
+ run_env.run(program=sys.executable, stdin=script)
+
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+
+ expect_stdout = expect_stdout % self.__dict__
+ assert stdout == expect_stdout, assert_display(expect_stdout,
+ stdout,
+ stderr)
+
+ try:
+ match = expect_stderr.match
+ except AttributeError:
+ expect_stderr = expect_stderr % self.__dict__
+ assert stderr == expect_stderr, assert_display(expect_stderr,
+ stderr)
+ else:
+ assert expect_stderr.match(stderr), assert_display(expect_stderr,
+ stderr)
+
+
+class __init__TestCase(TestCommonTestCase):
+ def test___init__(self):
+ """Test initialization"""
+ run_env = self.run_env
+
+ os.chdir(run_env.workdir)
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ import os
+ print os.getcwd()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()[:-1]
+ assert stdout != run_env.workdir, stdout
+ stderr = run_env.stderr()
+ assert stderr == "", stderr
+
+
+class banner_TestCase(TestCommonTestCase):
+ create_run_env = False
+ def test_banner(self):
+ """Test banner()"""
+ tc = TestCommon.TestCommon(workdir='')
+
+ b = tc.banner('xyzzy ')
+ assert b == "xyzzy ==========================================================================", b
+
+ tc.banner_width = 10
+
+ b = tc.banner('xyzzy ')
+ assert b == "xyzzy ====", b
+
+ b = tc.banner('xyzzy ', 20)
+ assert b == "xyzzy ==============", b
+
+ tc.banner_char = '-'
+
+ b = tc.banner('xyzzy ')
+ assert b == "xyzzy ----", b
+
+class must_be_writable_TestCase(TestCommonTestCase):
+ def test_file_does_not_exists(self):
+ """Test must_be_writable(): file does not exist"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_be_writable('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Missing files: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_writable_file_exists(self):
+ """Test must_be_writable(): writable file exists"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ import os
+ import stat
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ f1 = tc.workpath('file1')
+ mode = os.stat(f1)[stat.ST_MODE]
+ os.chmod(f1, mode | stat.S_IWUSR)
+ tc.must_be_writable('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_non_writable_file_exists(self):
+ """Test must_be_writable(): non-writable file exists"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ import os
+ import stat
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ f1 = tc.workpath('file1')
+ mode = os.stat(f1)[stat.ST_MODE]
+ os.chmod(f1, mode & ~stat.S_IWUSR)
+ tc.must_be_writable('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Unwritable files: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_file_specified_as_list(self):
+ """Test must_be_writable(): file specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ import os
+ import stat
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ f1 = tc.workpath('sub', 'file1')
+ mode = os.stat(f1)[stat.ST_MODE]
+ os.chmod(f1, mode | stat.S_IWUSR)
+ tc.must_be_writable(['sub', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+
+class must_contain_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_contain(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1 contents\\n")
+ tc.must_contain('file1', "1 c")
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_missing(self):
+ """Test must_contain(): file missing"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_contain('file1', "1 c\\n")
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("No such file or directory:") != -1, stderr
+
+ def test_failure(self):
+ """Test must_contain(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1 does not match\\n")
+ tc.must_contain('file1', "1 c")
+ tc.run()
+ """)
+ expect = lstrip("""\
+ File `file1' does not contain required string.
+ Required string ================================================================
+ 1 c
+ file1 contents =================================================================
+ file1 does not match
+
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == expect, repr(stdout)
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_mode(self):
+ """Test must_contain(): mode"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1 contents\\n", mode='w')
+ tc.must_contain('file1', "1 c", mode='r')
+ tc.write('file2', "file2 contents\\n", mode='wb')
+ tc.must_contain('file2', "2 c", mode='rb')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+
+
+class must_contain_all_lines_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_contain_all_lines(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_contain_all_lines(output, lines)
+
+ test.must_contain_all_lines(output, ['www\\n'])
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_contain_all_lines(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_contain_all_lines(output, lines)
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Missing expected lines from output:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ output =========================================================================
+ www
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_find(self):
+ """Test must_contain_all_lines(): find"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import re
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'x.*',
+ '.*y',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ def re_search(output, line):
+ return re.compile(line, re.S).search(output)
+ test.must_contain_all_lines(output, lines, find=re_search)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_title(self):
+ """Test must_contain_all_lines(): title"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_contain_all_lines(output, lines, title='STDERR')
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Missing expected lines from STDERR:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ STDERR =========================================================================
+ www
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+
+
+class must_contain_any_line_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_contain_any_line(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'aaa\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_contain_any_line(output, lines)
+
+ test.must_contain_any_line(output, ['www\\n'])
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_contain_any_line(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_contain_any_line(output, lines)
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Missing any expected line from output:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ output =========================================================================
+ www
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_find(self):
+ """Test must_contain_any_line(): find"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import re
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'aaa',
+ '.*y',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ def re_search(output, line):
+ return re.compile(line, re.S).search(output)
+ test.must_contain_any_line(output, lines, find=re_search)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_title(self):
+ """Test must_contain_any_line(): title"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_contain_any_line(output, lines, title='STDOUT')
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Missing any expected line from STDOUT:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ STDOUT =========================================================================
+ www
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+
+
+class must_contain_exactly_lines_TestCase(TestCommonTestCase):
+ def test_success_list(self):
+ """Test must_contain_exactly_lines(): success (input list)"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'yyy\\n',
+ 'xxx\\n',
+ 'zzz',
+ 'www\\n',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_contain_exactly_lines(output, lines)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_success_string(self):
+ """Test must_contain_exactly_lines(): success (input string)"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = '''\\
+ yyy
+ xxx
+ zzz
+ www
+ '''
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_contain_exactly_lines(output, lines)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_contain_exactly_lines(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_contain_exactly_lines(output, lines)
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Missing expected lines from output:
+ 'xxx'
+ 'yyy'
+ Missing output =================================================================
+ Extra unexpected lines from output:
+ 'www'
+ 'zzz'
+ Extra output ===================================================================
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_find(self):
+ """Test must_contain_exactly_lines(): find"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import re
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'zzz',
+ '.*y',
+ 'xxx',
+ 'www',
+ ]
+
+ output = '''\\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ def re_search(output, line):
+ pattern = re.compile(line, re.S)
+ index = 0
+ for o in output:
+ if pattern.search(o):
+ return index
+ index +=1
+ return None
+ test.must_contain_exactly_lines(output, lines, find=re_search)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_title(self):
+ """Test must_contain_exactly_lines(): title"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_contain_exactly_lines(output, lines, title='STDOUT')
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Missing expected lines from STDOUT:
+ 'xxx'
+ 'yyy'
+ Missing STDOUT =================================================================
+ Extra unexpected lines from STDOUT:
+ 'www'
+ 'zzz'
+ Extra STDOUT ===================================================================
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+
+
+class must_contain_lines_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_contain_lines(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_contain_lines(lines, output)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_contain_lines(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_contain_lines(lines, output)
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Missing expected lines from output:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ output =========================================================================
+ www
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+
+
+class must_exist_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_exist(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_exist('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_exist(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_exist('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Missing files: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_file_specified_as_list(self):
+ """Test must_exist(): file specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_exist(['sub', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_broken_link(self) :
+ """Test must_exist(): exists but it is a broken link"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.symlink('badtarget', "brokenlink")
+ tc.must_exist('brokenlink')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+class must_exist_one_of_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_exist_one_of(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_exist_one_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_exist_one_of(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_exist_one_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Missing one of: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_files_specified_as_list(self):
+ """Test must_exist_one_of(): files specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_exist_one_of(['file2', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_files_specified_with_wildcards(self):
+ """Test must_exist_one_of(): files specified with wildcards"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file7', "file7\\n")
+ tc.must_exist_one_of(['file?'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_given_as_list(self):
+ """Test must_exist_one_of(): file given as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_exist_one_of(['file2',
+ ['sub', 'file1']])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_given_as_sequence(self):
+ """Test must_exist_one_of(): file given as sequence"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_exist_one_of(['file2',
+ ('sub', 'file1')])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+class must_match_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_match(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_match('file1', "file1\\n")
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_does_not_exists(self):
+ """Test must_match(): file does not exist"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_match('file1', "file1\\n")
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("No such file or directory:") != -1, stderr
+
+ def test_failure(self):
+ """Test must_match(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1 does not match\\n")
+ tc.must_match('file1', "file1\\n")
+ tc.run()
+ """)
+
+ expect = lstrip("""\
+ Unexpected contents of `file1'
+ contents =======================================================================
+ 1c1
+ < file1
+ ---
+ > file1 does not match
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == expect, stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_mode(self):
+ """Test must_match(): mode"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n", mode='w')
+ tc.must_match('file1', "file1\\n", mode='r')
+ tc.write('file2', "file2\\n", mode='wb')
+ tc.must_match('file2', "file2\\n", mode='rb')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+
+
+class must_not_be_writable_TestCase(TestCommonTestCase):
+ def test_file_does_not_exists(self):
+ """Test must_not_be_writable(): file does not exist"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_not_be_writable('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Missing files: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_writable_file_exists(self):
+ """Test must_not_be_writable(): writable file exists"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ import os
+ import stat
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ f1 = tc.workpath('file1')
+ mode = os.stat(f1)[stat.ST_MODE]
+ os.chmod(f1, mode | stat.S_IWUSR)
+ tc.must_not_be_writable('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Writable files: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_non_writable_file_exists(self):
+ """Test must_not_be_writable(): non-writable file exists"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ import os
+ import stat
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ f1 = tc.workpath('file1')
+ mode = os.stat(f1)[stat.ST_MODE]
+ os.chmod(f1, mode & ~stat.S_IWUSR)
+ tc.must_not_be_writable('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_specified_as_list(self):
+ """Test must_not_be_writable(): file specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ import os
+ import stat
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ f1 = tc.workpath('sub', 'file1')
+ mode = os.stat(f1)[stat.ST_MODE]
+ os.chmod(f1, mode & ~stat.S_IWUSR)
+ tc.must_not_be_writable(['sub', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+
+
+class must_not_contain_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_not_contain(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1 contents\\n")
+ tc.must_not_contain('file1', "1 does not contain c")
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_does_not_exist(self):
+ """Test must_not_contain(): file does not exist"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_not_contain('file1', "1 c\\n")
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("No such file or directory:") != -1, stderr
+
+ def test_failure(self):
+ """Test must_not_contain(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1 does contain contents\\n")
+ tc.must_not_contain('file1', "1 does contain c")
+ tc.run()
+ """)
+ expect = lstrip("""\
+ File `file1' contains banned string.
+ Banned string ==================================================================
+ 1 does contain c
+ file1 contents =================================================================
+ file1 does contain contents
+
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == expect, repr(stdout)
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_mode(self):
+ """Test must_not_contain(): mode"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1 contents\\n", mode='w')
+ tc.must_not_contain('file1', "1 does not contain c", mode='r')
+ tc.write('file2', "file2 contents\\n", mode='wb')
+ tc.must_not_contain('file2', "2 does not contain c", mode='rb')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+
+
+class must_not_contain_any_line_TestCase(TestCommonTestCase):
+ def test_failure(self):
+ """Test must_not_contain_any_line(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ 'www\\n',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_not_contain_any_line(output, lines)
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Unexpected lines in output:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ 'www%(expected_newline)s'
+ output =========================================================================
+ www
+ xxx
+ yyy
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_find(self):
+ """Test must_not_contain_any_line(): find"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import re
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'x.*'
+ '.*y'
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ def re_search(output, line):
+ return re.compile(line, re.S).search(output)
+ test.must_not_contain_any_line(output, lines, find=re_search)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_success(self):
+ """Test must_not_contain_any_line(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n'
+ 'yyy\\n'
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_not_contain_any_line(output, lines)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_title(self):
+ """Test must_not_contain_any_line(): title"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_not_contain_any_line(output, lines, title='XYZZY')
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Unexpected lines in XYZZY:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ XYZZY ==========================================================================
+ www
+ xxx
+ yyy
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+
+
+class must_not_contain_lines_TestCase(TestCommonTestCase):
+ def test_failure(self):
+ """Test must_not_contain_lines(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n',
+ 'yyy\\n',
+ ]
+
+ output = '''\\
+ www
+ xxx
+ yyy
+ zzz
+ '''
+
+ test.must_not_contain_lines(lines, output)
+
+ test.pass_test()
+ """)
+
+ expect = lstrip("""\
+ Unexpected lines in output:
+ 'xxx%(expected_newline)s'
+ 'yyy%(expected_newline)s'
+ output =========================================================================
+ www
+ xxx
+ yyy
+ zzz
+ """ % globals())
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ stderr = run_env.stderr()
+ assert stdout == expect, assert_display(expect, stdout, stderr)
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_success(self):
+ """Test must_not_contain_lines(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+
+ lines = [
+ 'xxx\\n'
+ 'yyy\\n'
+ ]
+
+ output = '''\\
+ www
+ zzz
+ '''
+
+ test.must_not_contain_lines(lines, output)
+
+ test.pass_test()
+ """)
+
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+
+
+class must_not_exist_TestCase(TestCommonTestCase):
+ def test_failure(self):
+ """Test must_not_exist(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_not_exist('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Unexpected files exist: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_success(self):
+ """Test must_not_exist(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_not_exist('file1')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_specified_as_list(self):
+ """Test must_not_exist(): file specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.must_not_exist(['sub', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_existing_broken_link(self):
+ """Test must_not_exist(): exists but it is a broken link"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.symlink('badtarget', 'brokenlink')
+ tc.must_not_exist('brokenlink')
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Unexpected files exist: `brokenlink'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+class must_not_exist_any_of_TestCase(TestCommonTestCase):
+ def test_success(self):
+ """Test must_not_exist_any_of(): success"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_not_exist_any_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_failure(self):
+ """Test must_not_exist_any_of(): failure"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file1', "file1\\n")
+ tc.must_not_exist_any_of(['file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Unexpected files exist: `file1'\n", stdout
+ stderr = run_env.stderr()
+ assert stderr.find("FAILED") != -1, stderr
+
+ def test_files_specified_as_list(self):
+ """Test must_not_exist_any_of(): files specified as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.must_not_exist_any_of(['file2', 'file1'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_files_specified_with_wildcards(self):
+ """Test must_not_exist_any_of(): files specified with wildcards"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.write('file7', "file7\\n")
+ tc.must_not_exist_any_of(['files?'])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_given_as_list(self):
+ """Test must_not_exist_any_of(): file given as list"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_not_exist_any_of(['file2',
+ ['sub', 'files*']])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ def test_file_given_as_sequence(self):
+ """Test must_not_exist_any_of(): file given as sequence"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(workdir='')
+ tc.subdir('sub')
+ tc.write(['sub', 'file1'], "sub/file1\\n")
+ tc.must_not_exist_any_of(['file2',
+ ('sub', 'files?')])
+ tc.pass_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+class run_TestCase(TestCommonTestCase):
+ def test_argument_handling(self):
+ """Test run(): argument handling"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_exact)
+ tc.run(arguments = "arg1 arg2 arg3",
+ stdout = r"%(pass_script)s: STDOUT: ['arg1', 'arg2', 'arg3']" + "\\n")
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_default_pass(self):
+ """Test run(): default arguments, script passes"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter=r'%(python)s',
+ workdir='')
+ tc.run()
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_default_fail(self):
+ """Test run(): default arguments, script fails"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(fail_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run()
+ """)
+
+ expect_stdout = lstrip("""\
+ %(fail_script)s returned 1
+ STDOUT =========================================================================
+ %(fail_script)s: STDOUT: []
+
+ STDERR =========================================================================
+
+ """)
+
+ expect_stderr = lstrip("""\
+ FAILED test of .*fail
+ \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
+ \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
+ \\tfrom line \\d+ of <stdin>( \(<module>\))?
+ """)
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_default_stderr(self):
+ """Test run(): default arguments, error output"""
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(stderr_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run()
+ """)
+
+ expect_stdout = lstrip("""\
+ STDOUT =========================================================================
+
+ STDERR =========================================================================
+ 0a1
+ > %(stderr_script)s: STDERR: []
+ """)
+
+ expect_stderr = lstrip("""\
+ FAILED test of .*stderr
+ \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
+ \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
+ \\tfrom line \\d+ of <stdin>
+ """)
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_exception_handling(self):
+ """Test run(): exception handling"""
+ script = lstrip("""\
+ import TestCmd
+ from TestCommon import TestCommon
+ def raise_exception(*args, **kw):
+ raise TypeError("forced TypeError")
+ TestCmd.TestCmd.start = raise_exception
+ tc = TestCommon(program='%(pass_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run()
+ """)
+
+ expect_stdout = lstrip("""\
+ STDOUT =========================================================================
+ STDERR =========================================================================
+ """)
+
+ expect_stderr = lstrip("""\
+ Exception trying to execute: \\[%s, '[^']*pass'\\]
+ Traceback \\((innermost|most recent call) last\\):
+ File "<stdin>", line \\d+, in (\\?|<module>)
+ File "[^"]+TestCommon.py", line \\d+, in run
+ TestCmd.run\\(self, \\*\\*kw\\)
+ File "[^"]+TestCmd.py", line \\d+, in run
+ .*
+ File "[^"]+TestCommon.py", line \\d+, in start
+ raise e
+ TypeError: forced TypeError
+ """ % re.escape(repr(sys.executable)))
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_ignore_stderr(self):
+ """Test run(): ignore stderr"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(stderr_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run(stderr = None)
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_match_function_stdout(self):
+ """Test run(): explicit match function, stdout"""
+
+ script = lstrip("""\
+ def my_match_exact(actual, expect): return actual == expect
+ from TestCommon import TestCommon, match_re_dotall
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_re_dotall)
+ tc.run(arguments = "arg1 arg2 arg3",
+ stdout = r"%(pass_script)s: STDOUT: ['arg1', 'arg2', 'arg3']" + "\\n",
+ match = my_match_exact)
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_match_function_stderr(self):
+ """Test run(): explicit match function, stderr"""
+
+ script = lstrip("""\
+ def my_match_exact(actual, expect): return actual == expect
+ from TestCommon import TestCommon, match_re_dotall
+ tc = TestCommon(program=r'%(stderr_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_re_dotall)
+ tc.run(arguments = "arg1 arg2 arg3",
+ stderr = r"%(stderr_script)s: STDERR: ['arg1', 'arg2', 'arg3']" + "\\n",
+ match = my_match_exact)
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_matched_status_fails(self):
+ """Test run(): matched status, script fails"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(fail_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run(status = 1)
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_matched_stdout(self):
+ """Test run(): matched stdout"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_exact)
+ tc.run(stdout = r"%(pass_script)s: STDOUT: []" + "\\n")
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_matched_stderr(self):
+ """Test run(): matched stderr"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(stderr_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_exact)
+ tc.run(stderr = r"%(stderr_script)s: STDERR: []" + "\\n")
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_mismatched_status_pass(self):
+ """Test run(): mismatched status, script passes"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run(status = 1)
+ """)
+
+ expect_stdout = lstrip("""\
+ %(pass_script)s returned 0 (expected 1)
+ STDOUT =========================================================================
+ %(pass_script)s: STDOUT: []
+
+ STDERR =========================================================================
+
+ """)
+
+ expect_stderr = lstrip("""\
+ FAILED test of .*pass
+ \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
+ \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
+ \\tfrom line \\d+ of <stdin>( \(<module>\))?
+ """)
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_mismatched_status_fail(self):
+ """Test run(): mismatched status, script fails"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(fail_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run(status = 2)
+ """)
+
+ expect_stdout = lstrip("""\
+ %(fail_script)s returned 1 (expected 2)
+ STDOUT =========================================================================
+ %(fail_script)s: STDOUT: []
+
+ STDERR =========================================================================
+
+ """)
+
+ expect_stderr = lstrip("""\
+ FAILED test of .*fail
+ \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
+ \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
+ \\tfrom line \\d+ of <stdin>( \(<module>\))?
+ """)
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_mismatched_stdout(self):
+ """Test run(): mismatched stdout"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run(stdout = "Not found\\n")
+ """)
+
+ expect_stdout = lstrip("""\
+ STDOUT =========================================================================
+ 1c1
+ < Not found
+ ---
+ > %(pass_script)s: STDOUT: []
+ """)
+
+ expect_stderr = lstrip("""\
+ FAILED test of .*pass
+ \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
+ \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
+ \\tfrom line \\d+ of <stdin>( \(<module>\))?
+ """)
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_mismatched_stderr(self):
+ """Test run(): mismatched stderr"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(stderr_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run(stderr = "Not found\\n")
+ """)
+
+ expect_stdout = lstrip("""\
+ STDOUT =========================================================================
+
+ STDERR =========================================================================
+ 1c1
+ < Not found
+ ---
+ > %(stderr_script)s: STDERR: []
+ """)
+
+ expect_stderr = lstrip("""\
+ FAILED test of .*stderr
+ \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
+ \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
+ \\tfrom line \\d+ of <stdin>( \(<module>\))?
+ """)
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_option_handling(self):
+ """Test run(): option handling"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_exact)
+ tc.run(options = "opt1 opt2 opt3",
+ stdout = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3']" + "\\n")
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_options_plus_arguments(self):
+ """Test run(): option handling with arguments"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_exact)
+ tc.run(options = "opt1 opt2 opt3",
+ arguments = "arg1 arg2 arg3",
+ stdout = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3', 'arg1', 'arg2', 'arg3']" + "\\n")
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_signal_handling(self):
+ """Test run(): signal handling"""
+
+ try:
+ os.kill
+ except AttributeError:
+ sys.stderr.write('can not test, no os.kill ... ')
+ return
+
+ script = lstrip("""\
+ from TestCommon import TestCommon
+ tc = TestCommon(program=r'%(signal_script)s',
+ interpreter='%(python)s',
+ workdir='')
+ tc.run()
+ """)
+
+ self.SIGTERM = signal.SIGTERM
+
+ # Script returns the signal value as a negative number.
+ expect_stdout = lstrip("""\
+ %(signal_script)s returned -%(SIGTERM)s
+ STDOUT =========================================================================
+
+ STDERR =========================================================================
+
+ """)
+
+ expect_stderr = lstrip("""\
+ FAILED test of .*signal
+ \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
+ \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
+ \\tfrom line \\d+ of <stdin>
+ """)
+ expect_stderr = re.compile(expect_stderr, re.M)
+
+ self.run_execution_test(script, expect_stdout, expect_stderr)
+
+ def test_stdin(self):
+ """Test run(): stdin handling"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(stdin_script)s',
+ interpreter='%(python)s',
+ workdir='',
+ match=match_exact)
+ expect_stdout = r"%(stdin_script)s: STDOUT: 'input'" + "\\n"
+ expect_stderr = r"%(stdin_script)s: STDERR: 'input'" + "\\n"
+ tc.run(stdin="input\\n", stdout = expect_stdout, stderr = expect_stderr)
+ """)
+
+ expect_stdout = lstrip("""\
+ %(pass_script)s returned 0 (expected 1)
+ STDOUT =========================================================================
+ %(pass_script)s: STDOUT: []
+
+ STDERR =========================================================================
+
+ """)
+
+ self.run_execution_test(script, "", "")
+
+
+
+class start_TestCase(TestCommonTestCase):
+ def test_option_handling(self):
+ """Test start(): option handling"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_exact)
+ p = tc.start(options = "opt1 opt2 opt3")
+ expect = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3']" + "\\n"
+ tc.finish(p, stdout = expect)
+ """)
+
+ self.run_execution_test(script, "", "")
+
+ def test_options_plus_arguments(self):
+ """Test start(): option handling with arguments"""
+
+ script = lstrip("""\
+ from TestCommon import TestCommon, match_exact
+ tc = TestCommon(program=r'%(pass_script)s',
+ interpreter='%(python)s',
+ workdir="",
+ match=match_exact)
+ p = tc.start(options = "opt1 opt2 opt3",
+ arguments = "arg1 arg2 arg3")
+ expect = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3', 'arg1', 'arg2', 'arg3']" + "\\n"
+ tc.finish(p, stdout = expect)
+ """)
+
+ self.run_execution_test(script, "", "")
+
+
+
+class skip_test_TestCase(TestCommonTestCase):
+ def test_skip_test(self):
+ """Test skip_test()"""
+ run_env = self.run_env
+
+ script = lstrip("""\
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+ test.skip_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Skipping test.\n", stdout
+ stderr = run_env.stderr()
+ expect = [
+ "NO RESULT for test at line 3 of <stdin>\n",
+ "NO RESULT for test at line 3 of <stdin> (<module>)\n",
+ ]
+ assert stderr in expect, repr(stderr)
+
+ script = lstrip("""\
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+ test.skip_test("skipping test because I said so\\n")
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "skipping test because I said so\n", stdout
+ stderr = run_env.stderr()
+ expect = [
+ "NO RESULT for test at line 3 of <stdin>\n",
+ "NO RESULT for test at line 3 of <stdin> (<module>)\n",
+ ]
+ assert stderr in expect, repr(stderr)
+
+ import os
+ os.environ['TESTCOMMON_PASS_SKIPS'] = '1'
+
+ try:
+ script = lstrip("""\
+ import TestCommon
+ test = TestCommon.TestCommon(workdir='')
+ test.skip_test()
+ """)
+ run_env.run(program=sys.executable, stdin=script)
+ stdout = run_env.stdout()
+ assert stdout == "Skipping test.\n", stdout
+ stderr = run_env.stderr()
+ assert stderr == "PASSED\n", stderr
+
+ finally:
+ del os.environ['TESTCOMMON_PASS_SKIPS']
+
+
+
+class variables_TestCase(TestCommonTestCase):
+ def test_variables(self):
+ """Test global variables"""
+ run_env = self.run_env
+
+ variables = [
+ 'fail_test',
+ 'no_result',
+ 'pass_test',
+ 'match_exact',
+ 'match_re',
+ 'match_re_dotall',
+ 'python',
+ '_python_',
+ 'TestCmd',
+
+ 'TestCommon',
+ 'exe_suffix',
+ 'obj_suffix',
+ 'shobj_prefix',
+ 'shobj_suffix',
+ 'lib_prefix',
+ 'lib_suffix',
+ 'dll_prefix',
+ 'dll_suffix',
+ ]
+
+ script = "import TestCommon\n" + \
+ '\n'.join([ "print TestCommon.%s\n" % v for v in variables ])
+ run_env.run(program=sys.executable, stdin=script)
+ stderr = run_env.stderr()
+ assert stderr == "", stderr
+
+ script = "from TestCommon import *\n" + \
+ '\n'.join([ "print %s" % v for v in variables ])
+ run_env.run(program=sys.executable, stdin=script)
+ stderr = run_env.stderr()
+ assert stderr == "", stderr
+
+
+
+if __name__ == "__main__":
+ tclasses = [
+ __init__TestCase,
+ banner_TestCase,
+ must_be_writable_TestCase,
+ must_contain_TestCase,
+ must_contain_all_lines_TestCase,
+ must_contain_any_line_TestCase,
+ must_contain_exactly_lines_TestCase,
+ must_contain_lines_TestCase,
+ must_exist_TestCase,
+ must_exist_one_of_TestCase,
+ must_match_TestCase,
+ must_not_be_writable_TestCase,
+ must_not_contain_TestCase,
+ must_not_contain_any_line_TestCase,
+ must_not_contain_lines_TestCase,
+ must_not_exist_TestCase,
+ must_not_exist_any_of_TestCase,
+ run_TestCase,
+ start_TestCase,
+ skip_test_TestCase,
+ variables_TestCase,
+ ]
+ suite = unittest.TestSuite()
+ for tclass in tclasses:
+ names = unittest.getTestCaseNames(tclass, 'test_')
+ suite.addTests([ tclass(n) for n in names ])
+ if not unittest.TextTestRunner().run(suite).wasSuccessful():
+ sys.exit(1)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestRuntest.py b/QMTest/TestRuntest.py
new file mode 100644
index 0000000..31346cd
--- /dev/null
+++ b/QMTest/TestRuntest.py
@@ -0,0 +1,167 @@
+"""
+TestRuntest.py: a testing framework for the runtest.py command used to
+invoke SCons tests.
+
+A TestRuntest environment object is created via the usual invocation:
+
+ test = TestRuntest()
+
+TestRuntest is a subclass of TestCommon, which is in turn is a subclass
+of TestCmd), and hence has available all of the methods and attributes
+from those classes, as well as any overridden or additional methods or
+attributes defined in this subclass.
+"""
+
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+__revision__ = "QMTest/TestRuntest.py 2014/03/02 14:18:15 garyo"
+
+import os
+import os.path
+import re
+import shutil
+import sys
+
+from TestCommon import *
+from TestCommon import __all__
+
+__all__.extend([ 'TestRuntest',
+ 'pythonstring',
+ ])
+
+if re.search('\s', python):
+ pythonstring = _python_
+else:
+ pythonstring = python
+pythonstring = pythonstring.replace('\\', '\\\\')
+
+
+failing_test_template = """\
+import sys
+sys.stdout.write('FAILING TEST STDOUT\\n')
+sys.stderr.write('FAILING TEST STDERR\\n')
+sys.exit(1)
+"""
+
+no_result_test_template = """\
+import sys
+sys.stdout.write('NO RESULT TEST STDOUT\\n')
+sys.stderr.write('NO RESULT TEST STDERR\\n')
+sys.exit(2)
+"""
+
+passing_test_template = """\
+import sys
+sys.stdout.write('PASSING TEST STDOUT\\n')
+sys.stderr.write('PASSING TEST STDERR\\n')
+sys.exit(0)
+"""
+
+fake_scons_py = """
+__version__ = '1.2.3'
+__build__ = 'D123'
+__buildsys__ = 'fake_system'
+__date__ = 'Jan 1 1970'
+__developer__ = 'Anonymous'
+"""
+
+fake___init___py = """
+__version__ = '4.5.6'
+__build__ = 'D456'
+__buildsys__ = 'another_fake_system'
+__date__ = 'Dec 31 1999'
+__developer__ = 'John Doe'
+"""
+
+class TestRuntest(TestCommon):
+ """Class for testing the runtest.py script.
+
+ This provides a common place for initializing Runtest tests,
+ eliminating the need to begin every test with the same repeated
+ initializations.
+ """
+
+ def __init__(self, **kw):
+ """Initialize a Runtest testing object.
+
+ If they're not overridden by keyword arguments, this
+ initializes the object with the following default values:
+
+ program = 'runtest.py'
+ interpreter = ['python', '-tt']
+ match = match_exact
+ workdir = ''
+
+ The workdir value means that, by default, a temporary
+ workspace directory is created for a TestRuntest environment.
+ The superclass TestCommon.__init__() will change directory (chdir)
+ to the workspace directory, so an explicit "chdir = '.'" on all
+ of the run() method calls is not necessary. This initialization
+ also copies the runtest.py and QMTest/ subdirectory tree to the
+ temporary directory, duplicating how this test infrastructure
+ appears in a normal workspace.
+ """
+ if 'program' not in kw:
+ kw['program'] = 'runtest.py'
+ if 'interpreter' not in kw:
+ kw['interpreter'] = [python, '-tt']
+ if 'match' not in kw:
+ kw['match'] = match_exact
+ if 'workdir' not in kw:
+ kw['workdir'] = ''
+
+ try:
+ things_to_copy = kw['things_to_copy']
+ except KeyError:
+ things_to_copy = [
+ 'runtest.py',
+ 'QMTest',
+ ]
+ else:
+ del kw['things_to_copy']
+
+ orig_cwd = os.getcwd()
+ TestCommon.__init__(self, **kw)
+
+ dirs = [os.environ.get('SCONS_RUNTEST_DIR', orig_cwd)]
+
+ for thing in things_to_copy:
+ for dir in dirs:
+ t = os.path.join(dir, thing)
+ if os.path.exists(t):
+ if os.path.isdir(t):
+ copy_func = shutil.copytree
+ else:
+ copy_func = shutil.copyfile
+ copy_func(t, self.workpath(thing))
+ break
+
+ self.program_set(self.workpath(kw['program']))
+
+ os.environ['PYTHONPATH'] = ''
+
+ def write_fake_scons_source_tree(self):
+ os.mkdir('src')
+ os.mkdir('src/script')
+ self.write('src/script/scons.py', fake_scons_py)
+
+ os.mkdir('src/engine')
+ os.mkdir('src/engine/SCons')
+ self.write('src/engine/SCons/__init__.py', fake___init___py)
+ os.mkdir('src/engine/SCons/Script')
+ self.write('src/engine/SCons/Script/__init__.py', fake___init___py)
+
+ def write_failing_test(self, name):
+ self.write(name, failing_test_template)
+
+ def write_no_result_test(self, name):
+ self.write(name, no_result_test_template)
+
+ def write_passing_test(self, name):
+ self.write(name, passing_test_template)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py
new file mode 100644
index 0000000..ea1cb77
--- /dev/null
+++ b/QMTest/TestSCons.py
@@ -0,0 +1,1492 @@
+"""
+TestSCons.py: a testing framework for the SCons software construction
+tool.
+
+A TestSCons environment object is created via the usual invocation:
+
+ test = TestSCons()
+
+TestScons is a subclass of TestCommon, which in turn is a subclass
+of TestCmd), and hence has available all of the methods and attributes
+from those classes, as well as any overridden or additional methods or
+attributes defined in this subclass.
+"""
+
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+from __future__ import division
+
+__revision__ = "QMTest/TestSCons.py 2014/03/02 14:18:15 garyo"
+
+import os
+import re
+import shutil
+import sys
+import time
+
+from TestCommon import *
+from TestCommon import __all__
+
+from TestCmd import Popen
+from TestCmd import PIPE
+
+# Some tests which verify that SCons has been packaged properly need to
+# look for specific version file names. Replicating the version number
+# here provides some independent verification that what we packaged
+# conforms to what we expect.
+
+default_version = '2.3.1'
+
+python_version_unsupported = (2, 3, 0)
+python_version_deprecated = (2, 7, 0)
+
+# In the checked-in source, the value of SConsVersion in the following
+# line must remain "__ VERSION __" (without the spaces) so the built
+# version in build/QMTest/TestSCons.py contains the actual version
+# string of the packages that have been built.
+SConsVersion = '2.3.1'
+if SConsVersion == '__' + 'VERSION' + '__':
+ SConsVersion = default_version
+
+__all__.extend([ 'TestSCons',
+ 'machine',
+ 'python',
+ '_exe',
+ '_obj',
+ '_shobj',
+ 'shobj_',
+ 'lib_',
+ '_lib',
+ 'dll_',
+ '_dll'
+ ])
+
+machine_map = {
+ 'i686' : 'i386',
+ 'i586' : 'i386',
+ 'i486' : 'i386',
+}
+
+try:
+ uname = os.uname
+except AttributeError:
+ # Windows doesn't have a uname() function. We could use something like
+ # sys.platform as a fallback, but that's not really a "machine," so
+ # just leave it as None.
+ machine = None
+else:
+ machine = uname()[4]
+ machine = machine_map.get(machine, machine)
+
+_exe = exe_suffix
+_obj = obj_suffix
+_shobj = shobj_suffix
+shobj_ = shobj_prefix
+_lib = lib_suffix
+lib_ = lib_prefix
+_dll = dll_suffix
+dll_ = dll_prefix
+
+
+if sys.platform == 'cygwin':
+ # On Cygwin, os.path.normcase() lies, so just report back the
+ # fact that the underlying Win32 OS is case-insensitive.
+ def case_sensitive_suffixes(s1, s2):
+ return 0
+else:
+ def case_sensitive_suffixes(s1, s2):
+ return (os.path.normcase(s1) != os.path.normcase(s2))
+
+
+file_expr = r"""File "[^"]*", line \d+, in [^\n]+
+"""
+
+# re.escape escapes too much.
+def re_escape(str):
+ for c in '\\.[]()*+?': # Not an exhaustive list.
+ str = str.replace(c, '\\' + c)
+ return str
+
+#
+# Helper functions that we use as a replacement to the default re.match
+# when searching for special strings in stdout/stderr.
+#
+def search_re(out, l):
+ """ Search the regular expression 'l' in the output 'out'
+ and return the start index when successful.
+ """
+ m = re.search(l, out)
+ if m:
+ return m.start()
+
+ return None
+
+def search_re_in_list(out, l):
+ """ Search the regular expression 'l' in each line of
+ the given string list 'out' and return the line's index
+ when successful.
+ """
+ for idx, o in enumerate(out):
+ m = re.search(l, o)
+ if m:
+ return idx
+
+ return None
+
+#
+# Helpers for handling Python version numbers
+#
+def python_version_string():
+ return sys.version.split()[0]
+
+def python_minor_version_string():
+ return sys.version[:3]
+
+def unsupported_python_version(version=sys.version_info):
+ return version < python_version_unsupported
+
+def deprecated_python_version(version=sys.version_info):
+ return version < python_version_deprecated
+
+if deprecated_python_version():
+ msg = r"""
+scons: warning: Support for pre-2.7.0 Python version (%s) is deprecated.
+ If this will cause hardship, contact dev@scons.tigris.org.
+"""
+
+ deprecated_python_expr = re_escape(msg % python_version_string()) + file_expr
+ del msg
+else:
+ deprecated_python_expr = ""
+
+
+def initialize_sconsflags(ignore_python_version):
+ """
+ Add the --warn=no-python-version option to SCONSFLAGS for every
+ command so test scripts don't have to filter out Python version
+ deprecation warnings.
+ Same for --warn=no-visual-c-missing.
+ """
+ save_sconsflags = os.environ.get('SCONSFLAGS')
+ if save_sconsflags:
+ sconsflags = [save_sconsflags]
+ else:
+ sconsflags = []
+ if ignore_python_version and deprecated_python_version():
+ sconsflags.append('--warn=no-python-version')
+ # Provide a way to suppress or provide alternate flags for
+ # TestSCons purposes by setting TESTSCONS_SCONSFLAGS.
+ # (The intended use case is to set it to null when running
+ # timing tests of earlier versions of SCons which don't
+ # support the --warn=no-visual-c-missing warning.)
+ visual_c = os.environ.get('TESTSCONS_SCONSFLAGS',
+ '--warn=no-visual-c-missing')
+ if visual_c:
+ sconsflags.append(visual_c)
+ os.environ['SCONSFLAGS'] = ' '.join(sconsflags)
+ return save_sconsflags
+
+def restore_sconsflags(sconsflags):
+ if sconsflags is None:
+ del os.environ['SCONSFLAGS']
+ else:
+ os.environ['SCONSFLAGS'] = sconsflags
+
+
+class TestSCons(TestCommon):
+ """Class for testing SCons.
+
+ This provides a common place for initializing SCons tests,
+ eliminating the need to begin every test with the same repeated
+ initializations.
+ """
+
+ scons_version = SConsVersion
+
+ def __init__(self, **kw):
+ """Initialize an SCons testing object.
+
+ If they're not overridden by keyword arguments, this
+ initializes the object with the following default values:
+
+ program = 'scons' if it exists,
+ else 'scons.py'
+ interpreter = 'python'
+ match = match_exact
+ workdir = ''
+
+ The workdir value means that, by default, a temporary workspace
+ directory is created for a TestSCons environment. In addition,
+ this method changes directory (chdir) to the workspace directory,
+ so an explicit "chdir = '.'" on all of the run() method calls
+ is not necessary.
+ """
+ self.orig_cwd = os.getcwd()
+ self.external = os.environ.get('SCONS_EXTERNAL_TEST', 0)
+
+ if not self.external:
+ try:
+ script_dir = os.environ['SCONS_SCRIPT_DIR']
+ except KeyError:
+ pass
+ else:
+ os.chdir(script_dir)
+ if 'program' not in kw:
+ kw['program'] = os.environ.get('SCONS')
+ if not kw['program']:
+ if not self.external:
+ if os.path.exists('scons'):
+ kw['program'] = 'scons'
+ else:
+ kw['program'] = 'scons.py'
+ else:
+ kw['program'] = 'scons'
+ kw['interpreter'] = ''
+ elif not self.external and not os.path.isabs(kw['program']):
+ kw['program'] = os.path.join(self.orig_cwd, kw['program'])
+ if 'interpreter' not in kw and not os.environ.get('SCONS_EXEC'):
+ kw['interpreter'] = [python, '-tt']
+ if 'match' not in kw:
+ kw['match'] = match_exact
+ if 'workdir' not in kw:
+ kw['workdir'] = ''
+
+ # Term causing test failures due to bogus readline init
+ # control character output on FC8
+ # TERM can cause test failures due to control chars in prompts etc.
+ os.environ['TERM'] = 'dumb'
+
+ self.ignore_python_version = kw.get('ignore_python_version',1)
+ if kw.get('ignore_python_version', -1) != -1:
+ del kw['ignore_python_version']
+
+ TestCommon.__init__(self, **kw)
+
+ if not self.external:
+ import SCons.Node.FS
+ if SCons.Node.FS.default_fs is None:
+ SCons.Node.FS.default_fs = SCons.Node.FS.FS()
+
+ try:
+ self.script_srcdir = os.environ['PYTHON_SCRIPT_DIR']
+ except KeyError:
+ pass
+
+ def Environment(self, ENV=None, *args, **kw):
+ """
+ Return a construction Environment that optionally overrides
+ the default external environment with the specified ENV.
+ """
+ if not self.external:
+ import SCons.Environment
+ import SCons.Errors
+ if not ENV is None:
+ kw['ENV'] = ENV
+ try:
+ return SCons.Environment.Environment(*args, **kw)
+ except (SCons.Errors.UserError, SCons.Errors.InternalError):
+ return None
+
+ return None
+
+ def detect(self, var, prog=None, ENV=None, norm=None):
+ """
+ Detect a program named 'prog' by first checking the construction
+ variable named 'var' and finally searching the path used by
+ SCons. If either method fails to detect the program, then false
+ is returned, otherwise the full path to prog is returned. If
+ prog is None, then the value of the environment variable will be
+ used as prog.
+ """
+ env = self.Environment(ENV)
+ if env:
+ v = env.subst('$'+var)
+ if not v:
+ return None
+ if prog is None:
+ prog = v
+ if v != prog:
+ return None
+ result = env.WhereIs(prog)
+ if norm and os.sep != '/':
+ result = result.replace(os.sep, '/')
+ return result
+
+ return self.where_is(prog)
+
+ def detect_tool(self, tool, prog=None, ENV=None):
+ """
+ Given a tool (i.e., tool specification that would be passed
+ to the "tools=" parameter of Environment()) and a program that
+ corresponds to that tool, return true if and only if we can find
+ that tool using Environment.Detect().
+
+ By default, prog is set to the value passed into the tools parameter.
+ """
+
+ if not prog:
+ prog = tool
+ env = self.Environment(ENV, tools=[tool])
+ if env is None:
+ return None
+ return env.Detect([prog])
+
+ def where_is(self, prog, path=None):
+ """
+ Given a program, search for it in the specified external PATH,
+ or in the actual external PATH if none is specified.
+ """
+ if path is None:
+ path = os.environ['PATH']
+ if self.external:
+ if isinstance(prog, str):
+ prog = [prog]
+ import stat
+ paths = path.split(os.pathsep)
+ for p in prog:
+ for d in paths:
+ f = os.path.join(d, p)
+ if os.path.isfile(f):
+ try:
+ st = os.stat(f)
+ except OSError:
+ # os.stat() raises OSError, not IOError if the file
+ # doesn't exist, so in this case we let IOError get
+ # raised so as to not mask possibly serious disk or
+ # network issues.
+ continue
+ if stat.S_IMODE(st[stat.ST_MODE]) & 0111:
+ return os.path.normpath(f)
+ else:
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ return env.WhereIs(prog, path)
+
+ return None
+
+ def wrap_stdout(self, build_str = "", read_str = "", error = 0, cleaning = 0):
+ """Wraps standard output string(s) in the normal
+ "Reading ... done" and "Building ... done" strings
+ """
+ cap,lc = [ ('Build','build'),
+ ('Clean','clean') ][cleaning]
+ if error:
+ term = "scons: %sing terminated because of errors.\n" % lc
+ else:
+ term = "scons: done %sing targets.\n" % lc
+ return "scons: Reading SConscript files ...\n" + \
+ read_str + \
+ "scons: done reading SConscript files.\n" + \
+ "scons: %sing targets ...\n" % cap + \
+ build_str + \
+ term
+
+ def run(self, *args, **kw):
+ """
+ Set up SCONSFLAGS for every command so test scripts don't need
+ to worry about unexpected warnings in their output.
+ """
+ sconsflags = initialize_sconsflags(self.ignore_python_version)
+ try:
+ TestCommon.run(self, *args, **kw)
+ finally:
+ restore_sconsflags(sconsflags)
+
+# Modifying the options should work and ought to be simpler, but this
+# class is used for more than just running 'scons' itself. If there's
+# an automated way of determining whether it's running 'scons' or
+# something else, this code should be resurected.
+# options = kw.get('options')
+# if options:
+# options = [options]
+# else:
+# options = []
+# if self.ignore_python_version and deprecated_python_version():
+# options.append('--warn=no-python-version')
+# # Provide a way to suppress or provide alternate flags for
+# # TestSCons purposes by setting TESTSCONS_SCONSFLAGS.
+# # (The intended use case is to set it to null when running
+# # timing tests of earlier versions of SCons which don't
+# # support the --warn=no-visual-c-missing warning.)
+# visual_c = os.environ.get('TESTSCONS_SCONSFLAGS',
+# '--warn=no-visual-c-missing')
+# if visual_c:
+# options.append(visual_c)
+# kw['options'] = ' '.join(options)
+# TestCommon.run(self, *args, **kw)
+
+ def up_to_date(self, arguments = '.', read_str = "", **kw):
+ s = ""
+ for arg in arguments.split():
+ s = s + "scons: `%s' is up to date.\n" % arg
+ kw['arguments'] = arguments
+ stdout = self.wrap_stdout(read_str = read_str, build_str = s)
+ # Append '.*' so that timing output that comes after the
+ # up-to-date output is okay.
+ kw['stdout'] = re.escape(stdout) + '.*'
+ kw['match'] = self.match_re_dotall
+ self.run(**kw)
+
+ def not_up_to_date(self, arguments = '.', **kw):
+ """Asserts that none of the targets listed in arguments is
+ up to date, but does not make any assumptions on other targets.
+ This function is most useful in conjunction with the -n option.
+ """
+ s = ""
+ for arg in arguments.split():
+ s = s + "(?!scons: `%s' is up to date.)" % re.escape(arg)
+ s = '('+s+'[^\n]*\n)*'
+ kw['arguments'] = arguments
+ stdout = re.escape(self.wrap_stdout(build_str='ARGUMENTSGOHERE'))
+ kw['stdout'] = stdout.replace('ARGUMENTSGOHERE', s)
+ kw['match'] = self.match_re_dotall
+ self.run(**kw)
+
+ def option_not_yet_implemented(self, option, arguments=None, **kw):
+ """
+ Verifies expected behavior for options that are not yet implemented:
+ a warning message, and exit status 1.
+ """
+ msg = "Warning: the %s option is not yet implemented\n" % option
+ kw['stderr'] = msg
+ if arguments:
+ # If it's a long option and the argument string begins with '=',
+ # it's of the form --foo=bar and needs no separating space.
+ if option[:2] == '--' and arguments[0] == '=':
+ kw['arguments'] = option + arguments
+ else:
+ kw['arguments'] = option + ' ' + arguments
+ return self.run(**kw)
+
+ def deprecated_wrap(self, msg):
+ """
+ Calculate the pattern that matches a deprecation warning.
+ """
+ return '\nscons: warning: ' + re_escape(msg) + '\n' + file_expr
+
+ def deprecated_fatal(self, warn, msg):
+ """
+ Determines if the warning has turned into a fatal error. If so,
+ passes the test, as any remaining runs are now moot.
+
+ This method expects a SConscript to be present that will causes
+ the warning. The method writes a SConstruct that calls the
+ SConsscript and looks to see what type of result occurs.
+
+ The pattern that matches the warning is returned.
+
+ TODO: Actually detect that it's now an error. We don't have any
+ cases yet, so there's no way to test it.
+ """
+ self.write('SConstruct', """if True:
+ WARN = ARGUMENTS.get('WARN')
+ if WARN: SetOption('warn', WARN)
+ SConscript('SConscript')
+ """)
+
+ def err_out():
+ # TODO calculate stderr for fatal error
+ return re_escape('put something here')
+
+ # no option, should get one of nothing, warning, or error
+ warning = self.deprecated_wrap(msg)
+ self.run(arguments = '.', stderr = None)
+ stderr = self.stderr()
+ if stderr:
+ # most common case done first
+ if match_re_dotall(stderr, warning):
+ # expected output
+ pass
+ elif match_re_dotall(stderr, err_out()):
+ # now a fatal error; skip the rest of the tests
+ self.pass_test()
+ else:
+ # test failed; have to do this by hand...
+ print self.banner('STDOUT ')
+ print self.stdout()
+ print self.diff(warning, stderr, 'STDERR ')
+ self.fail_test()
+
+ return warning
+
+ def deprecated_warning(self, warn, msg):
+ """
+ Verifies the expected behavior occurs for deprecation warnings.
+ This method expects a SConscript to be present that will causes
+ the warning. The method writes a SConstruct and exercises various
+ combinations of command-line options and SetOption parameters to
+ validate that it performs correctly.
+
+ The pattern that matches the warning is returned.
+ """
+ warning = self.deprecated_fatal(warn, msg)
+
+ def RunPair(option, expected):
+ # run the same test with the option on the command line and
+ # then with the option passed via SetOption().
+ self.run(options = '--warn=' + option,
+ arguments = '.',
+ stderr = expected,
+ match = match_re_dotall)
+ self.run(options = 'WARN=' + option,
+ arguments = '.',
+ stderr = expected,
+ match = match_re_dotall)
+
+ # all warnings off, should get no output
+ RunPair('no-deprecated', '')
+
+ # warning enabled, should get expected output
+ RunPair(warn, warning)
+
+ # warning disabled, should get either nothing or mandatory message
+ expect = """()|(Can not disable mandataory warning: 'no-%s'\n\n%s)""" % (warn, warning)
+ RunPair('no-' + warn, expect)
+
+ return warning
+
+ def diff_substr(self, expect, actual, prelen=20, postlen=40):
+ i = 0
+ for x, y in zip(expect, actual):
+ if x != y:
+ return "Actual did not match expect at char %d:\n" \
+ " Expect: %s\n" \
+ " Actual: %s\n" \
+ % (i, repr(expect[i-prelen:i+postlen]),
+ repr(actual[i-prelen:i+postlen]))
+ i = i + 1
+ return "Actual matched the expected output???"
+
+ def python_file_line(self, file, line):
+ """
+ Returns a Python error line for output comparisons.
+
+ The exec of the traceback line gives us the correct format for
+ this version of Python. Before 2.5, this yielded:
+
+ File "<string>", line 1, ?
+
+ Python 2.5 changed this to:
+
+ File "<string>", line 1, <module>
+
+ We stick the requested file name and line number in the right
+ places, abstracting out the version difference.
+ """
+ exec 'import traceback; x = traceback.format_stack()[-1]'
+ x = x.lstrip()
+ x = x.replace('<string>', file)
+ x = x.replace('line 1,', 'line %s,' % line)
+ return x
+
+ def normalize_ps(self, s):
+ s = re.sub(r'(Creation|Mod)Date: .*',
+ r'\1Date XXXX', s)
+ s = re.sub(r'%DVIPSSource:\s+TeX output\s.*',
+ r'%DVIPSSource: TeX output XXXX', s)
+ s = re.sub(r'/(BaseFont|FontName) /[A-Z0-9]{6}',
+ r'/\1 /XXXXXX', s)
+ s = re.sub(r'BeginFont: [A-Z0-9]{6}',
+ r'BeginFont: XXXXXX', s)
+
+ return s
+
+ def normalize_pdf(self, s):
+ s = re.sub(r'/(Creation|Mod)Date \(D:[^)]*\)',
+ r'/\1Date (D:XXXX)', s)
+ s = re.sub(r'/ID \[<[0-9a-fA-F]*> <[0-9a-fA-F]*>\]',
+ r'/ID [<XXXX> <XXXX>]', s)
+ s = re.sub(r'/(BaseFont|FontName) /[A-Z]{6}',
+ r'/\1 /XXXXXX', s)
+ s = re.sub(r'/Length \d+ *\n/Filter /FlateDecode\n',
+ r'/Length XXXX\n/Filter /FlateDecode\n', s)
+
+ try:
+ import zlib
+ except ImportError:
+ pass
+ else:
+ begin_marker = '/FlateDecode\n>>\nstream\n'
+ end_marker = 'endstream\nendobj'
+
+ encoded = []
+ b = s.find(begin_marker, 0)
+ while b != -1:
+ b = b + len(begin_marker)
+ e = s.find(end_marker, b)
+ encoded.append((b, e))
+ b = s.find(begin_marker, e + len(end_marker))
+
+ x = 0
+ r = []
+ for b, e in encoded:
+ r.append(s[x:b])
+ d = zlib.decompress(s[b:e])
+ d = re.sub(r'%%CreationDate: [^\n]*\n',
+ r'%%CreationDate: 1970 Jan 01 00:00:00\n', d)
+ d = re.sub(r'%DVIPSSource: TeX output \d\d\d\d\.\d\d\.\d\d:\d\d\d\d',
+ r'%DVIPSSource: TeX output 1970.01.01:0000', d)
+ d = re.sub(r'/(BaseFont|FontName) /[A-Z]{6}',
+ r'/\1 /XXXXXX', d)
+ r.append(d)
+ x = e
+ r.append(s[x:])
+ s = ''.join(r)
+
+ return s
+
+ def paths(self,patterns):
+ import glob
+ result = []
+ for p in patterns:
+ result.extend(sorted(glob.glob(p)))
+ return result
+
+
+ def java_ENV(self, version=None):
+ """
+ Initialize with a default external environment that uses a local
+ Java SDK in preference to whatever's found in the default PATH.
+ """
+ if not self.external:
+ try:
+ return self._java_env[version]['ENV']
+ except AttributeError:
+ self._java_env = {}
+ except KeyError:
+ pass
+
+ import SCons.Environment
+ env = SCons.Environment.Environment()
+ self._java_env[version] = env
+
+
+ if version:
+ patterns = [
+ '/usr/java/jdk%s*/bin' % version,
+ '/usr/lib/jvm/*-%s*/bin' % version,
+ '/usr/local/j2sdk%s*/bin' % version,
+ ]
+ java_path = self.paths(patterns) + [env['ENV']['PATH']]
+ else:
+ patterns = [
+ '/usr/java/latest/bin',
+ '/usr/lib/jvm/*/bin',
+ '/usr/local/j2sdk*/bin',
+ ]
+ java_path = self.paths(patterns) + [env['ENV']['PATH']]
+
+ env['ENV']['PATH'] = os.pathsep.join(java_path)
+ return env['ENV']
+
+ return None
+
+ def java_where_includes(self,version=None):
+ """
+ Return java include paths compiling java jni code
+ """
+ import glob
+ import sys
+ if not version:
+ version=''
+ jni_dirs = ['/System/Library/Frameworks/JavaVM.framework/Headers/jni.h',
+ '/usr/lib/jvm/default-java/include/jni.h']
+ else:
+ jni_dirs = ['/System/Library/Frameworks/JavaVM.framework/Versions/%s*/Headers/jni.h'%version]
+ jni_dirs.extend(['/usr/lib/jvm/java-*-sun-%s*/include/jni.h'%version,
+ '/usr/lib/jvm/java-%s*-openjdk/include/jni.h'%version,
+ '/usr/java/jdk%s*/include/jni.h'%version])
+ dirs = self.paths(jni_dirs)
+ if not dirs:
+ return None
+ d=os.path.dirname(self.paths(jni_dirs)[0])
+ result=[d]
+
+ if sys.platform == 'win32':
+ result.append(os.path.join(d,'win32'))
+ elif sys.platform.startswith('linux'):
+ result.append(os.path.join(d,'linux'))
+ return result
+
+
+ def java_where_java_home(self,version=None):
+ if sys.platform[:6] == 'darwin':
+ if version is None:
+ home = '/System/Library/Frameworks/JavaVM.framework/Home'
+ else:
+ home = '/System/Library/Frameworks/JavaVM.framework/Versions/%s/Home' % version
+ else:
+ jar = self.java_where_jar(version)
+ home = os.path.normpath('%s/..'%jar)
+ if os.path.isdir(home):
+ return home
+ print("Could not determine JAVA_HOME: %s is not a directory" % home)
+ self.fail_test()
+
+ def java_where_jar(self, version=None):
+ ENV = self.java_ENV(version)
+ if self.detect_tool('jar', ENV=ENV):
+ where_jar = self.detect('JAR', 'jar', ENV=ENV)
+ else:
+ where_jar = self.where_is('jar', ENV['PATH'])
+ if not where_jar:
+ self.skip_test("Could not find Java jar, skipping test(s).\n")
+ return where_jar
+
+ def java_where_java(self, version=None):
+ """
+ Return a path to the java executable.
+ """
+ ENV = self.java_ENV(version)
+ where_java = self.where_is('java', ENV['PATH'])
+ if not where_java:
+ self.skip_test("Could not find Java java, skipping test(s).\n")
+ return where_java
+
+ def java_where_javac(self, version=None):
+ """
+ Return a path to the javac compiler.
+ """
+ ENV = self.java_ENV(version)
+ if self.detect_tool('javac'):
+ where_javac = self.detect('JAVAC', 'javac', ENV=ENV)
+ else:
+ where_javac = self.where_is('javac', ENV['PATH'])
+ if not where_javac:
+ self.skip_test("Could not find Java javac, skipping test(s).\n")
+ self.run(program = where_javac,
+ arguments = '-version',
+ stderr=None,
+ status=None)
+ if version:
+ if self.stderr().find('javac %s' % version) == -1:
+ fmt = "Could not find javac for Java version %s, skipping test(s).\n"
+ self.skip_test(fmt % version)
+ else:
+ m = re.search(r'javac (\d\.\d)', self.stderr())
+ if m:
+ version = m.group(1)
+ else:
+ version = None
+ return where_javac, version
+
+ def java_where_javah(self, version=None):
+ ENV = self.java_ENV(version)
+ if self.detect_tool('javah'):
+ where_javah = self.detect('JAVAH', 'javah', ENV=ENV)
+ else:
+ where_javah = self.where_is('javah', ENV['PATH'])
+ if not where_javah:
+ self.skip_test("Could not find Java javah, skipping test(s).\n")
+ return where_javah
+
+ def java_where_rmic(self, version=None):
+ ENV = self.java_ENV(version)
+ if self.detect_tool('rmic'):
+ where_rmic = self.detect('RMIC', 'rmic', ENV=ENV)
+ else:
+ where_rmic = self.where_is('rmic', ENV['PATH'])
+ if not where_rmic:
+ self.skip_test("Could not find Java rmic, skipping non-simulated test(s).\n")
+ return where_rmic
+
+ def java_get_class_files(self, dir):
+ result = []
+ for dirpath, dirnames, filenames in os.walk(dir):
+ for fname in filenames:
+ if fname.endswith('.class'):
+ result.append(os.path.join(dirpath, fname))
+ return sorted(result)
+
+
+ def Qt_dummy_installation(self, dir='qt'):
+ # create a dummy qt installation
+
+ self.subdir( dir, [dir, 'bin'], [dir, 'include'], [dir, 'lib'] )
+
+ self.write([dir, 'bin', 'mymoc.py'], """\
+import getopt
+import sys
+import re
+# -w and -z are fake options used in test/QT/QTFLAGS.py
+cmd_opts, args = getopt.getopt(sys.argv[1:], 'io:wz', [])
+output = None
+impl = 0
+opt_string = ''
+for opt, arg in cmd_opts:
+ if opt == '-o': output = open(arg, 'wb')
+ elif opt == '-i': impl = 1
+ else: opt_string = opt_string + ' ' + opt
+output.write("/* mymoc.py%s */\\n" % opt_string)
+for a in args:
+ contents = open(a, 'rb').read()
+ a = a.replace('\\\\', '\\\\\\\\')
+ subst = r'{ my_qt_symbol( "' + a + '\\\\n" ); }'
+ if impl:
+ contents = re.sub( r'#include.*', '', contents )
+ output.write(contents.replace('Q_OBJECT', subst))
+output.close()
+sys.exit(0)
+""")
+
+ self.write([dir, 'bin', 'myuic.py'], """\
+import os.path
+import re
+import sys
+output_arg = 0
+impl_arg = 0
+impl = None
+source = None
+opt_string = ''
+for arg in sys.argv[1:]:
+ if output_arg:
+ output = open(arg, 'wb')
+ output_arg = 0
+ elif impl_arg:
+ impl = arg
+ impl_arg = 0
+ elif arg == "-o":
+ output_arg = 1
+ elif arg == "-impl":
+ impl_arg = 1
+ elif arg[0:1] == "-":
+ opt_string = opt_string + ' ' + arg
+ else:
+ if source:
+ sys.exit(1)
+ source = open(arg, 'rb')
+ sourceFile = arg
+output.write("/* myuic.py%s */\\n" % opt_string)
+if impl:
+ output.write( '#include "' + impl + '"\\n' )
+ includes = re.findall('<include.*?>(.*?)</include>', source.read())
+ for incFile in includes:
+ # this is valid for ui.h files, at least
+ if os.path.exists(incFile):
+ output.write('#include "' + incFile + '"\\n')
+else:
+ output.write( '#include "my_qobject.h"\\n' + source.read() + " Q_OBJECT \\n" )
+output.close()
+sys.exit(0)
+""" )
+
+ self.write([dir, 'include', 'my_qobject.h'], r"""
+#define Q_OBJECT ;
+void my_qt_symbol(const char *arg);
+""")
+
+ self.write([dir, 'lib', 'my_qobject.cpp'], r"""
+#include "../include/my_qobject.h"
+#include <stdio.h>
+void my_qt_symbol(const char *arg) {
+ fputs( arg, stdout );
+}
+""")
+
+ self.write([dir, 'lib', 'SConstruct'], r"""
+env = Environment()
+import sys
+if sys.platform == 'win32':
+ env.StaticLibrary( 'myqt', 'my_qobject.cpp' )
+else:
+ env.SharedLibrary( 'myqt', 'my_qobject.cpp' )
+""")
+
+ self.run(chdir = self.workpath(dir, 'lib'),
+ arguments = '.',
+ stderr = noisy_ar,
+ match = self.match_re_dotall)
+
+ self.QT = self.workpath(dir)
+ self.QT_LIB = 'myqt'
+ self.QT_MOC = '%s %s' % (_python_, self.workpath(dir, 'bin', 'mymoc.py'))
+ self.QT_UIC = '%s %s' % (_python_, self.workpath(dir, 'bin', 'myuic.py'))
+ self.QT_LIB_DIR = self.workpath(dir, 'lib')
+
+ def Qt_create_SConstruct(self, place):
+ if isinstance(place, list):
+ place = test.workpath(*place)
+ self.write(place, """\
+if ARGUMENTS.get('noqtdir', 0): QTDIR=None
+else: QTDIR=r'%s'
+env = Environment(QTDIR = QTDIR,
+ QT_LIB = r'%s',
+ QT_MOC = r'%s',
+ QT_UIC = r'%s',
+ tools=['default','qt'])
+dup = 1
+if ARGUMENTS.get('variant_dir', 0):
+ if ARGUMENTS.get('chdir', 0):
+ SConscriptChdir(1)
+ else:
+ SConscriptChdir(0)
+ dup=int(ARGUMENTS.get('dup', 1))
+ if dup == 0:
+ builddir = 'build_dup0'
+ env['QT_DEBUG'] = 1
+ else:
+ builddir = 'build'
+ VariantDir(builddir, '.', duplicate=dup)
+ print builddir, dup
+ sconscript = Dir(builddir).File('SConscript')
+else:
+ sconscript = File('SConscript')
+Export("env dup")
+SConscript( sconscript )
+""" % (self.QT, self.QT_LIB, self.QT_MOC, self.QT_UIC))
+
+
+ NCR = 0 # non-cached rebuild
+ CR = 1 # cached rebuild (up to date)
+ NCF = 2 # non-cached build failure
+ CF = 3 # cached build failure
+
+ if sys.platform == 'win32':
+ Configure_lib = 'msvcrt'
+ else:
+ Configure_lib = 'm'
+
+ # to use cygwin compilers on cmd.exe -> uncomment following line
+ #Configure_lib = 'm'
+
+ def gccFortranLibs(self):
+ """Test which gcc Fortran startup libraries are required.
+ This should probably move into SCons itself, but is kind of hacky.
+ """
+ if sys.platform.find('irix') != -1:
+ return ['ftn']
+
+ libs = ['g2c']
+ cmd = ['gcc','-v']
+
+ try:
+ p = Popen(cmd, stdout=PIPE, stderr=PIPE)
+ stdout, stderr = p.communicate()
+ except:
+ return libs
+
+ m = re.search('(gcc\s+version|gcc-Version)\s+(\d\.\d)', stderr)
+ if m:
+ gcc_version = m.group(2)
+ if re.match('4.[^0]', gcc_version):
+ libs = ['gfortranbegin']
+ elif gcc_version in ('3.1', '4.0'):
+ libs = ['frtbegin'] + libs
+
+ return libs
+
+ def skip_if_not_msvc(self, check_platform=True):
+ """ Check whether we are on a Windows platform and skip the
+ test if not. This check can be omitted by setting
+ check_platform to False.
+ Then, for a win32 platform, additionally check
+ whether we have a MSVC toolchain installed
+ in the system, and skip the test if none can be
+ found (=MinGW is the only compiler available).
+ """
+ if check_platform:
+ if sys.platform != 'win32':
+ msg = "Skipping Visual C/C++ test on non-Windows platform '%s'\n" % sys.platform
+ self.skip_test(msg)
+ return
+
+ try:
+ import SCons.Tool.MSCommon as msc
+ if not msc.msvc_exists():
+ msg = "No MSVC toolchain found...skipping test\n"
+ self.skip_test(msg)
+ except:
+ pass
+
+ def checkLogAndStdout(self, checks, results, cached,
+ logfile, sconf_dir, sconstruct,
+ doCheckLog=1, doCheckStdout=1):
+
+ class NoMatch(Exception):
+ def __init__(self, p):
+ self.pos = p
+
+ def matchPart(log, logfile, lastEnd, NoMatch=NoMatch):
+ m = re.match(log, logfile[lastEnd:])
+ if not m:
+ raise NoMatch(lastEnd)
+ return m.end() + lastEnd
+ try:
+ #print len(os.linesep)
+ ls = os.linesep
+ nols = "("
+ for i in range(len(ls)):
+ nols = nols + "("
+ for j in range(i):
+ nols = nols + ls[j]
+ nols = nols + "[^" + ls[i] + "])"
+ if i < len(ls)-1:
+ nols = nols + "|"
+ nols = nols + ")"
+ lastEnd = 0
+ logfile = self.read(self.workpath(logfile))
+ if (doCheckLog and
+ logfile.find( "scons: warning: The stored build "
+ "information has an unexpected class." ) >= 0):
+ self.fail_test()
+ sconf_dir = sconf_dir
+ sconstruct = sconstruct
+
+ log = r'file\ \S*%s\,line \d+:' % re.escape(sconstruct) + ls
+ if doCheckLog: lastEnd = matchPart(log, logfile, lastEnd)
+ log = "\t" + re.escape("Configure(confdir = %s)" % sconf_dir) + ls
+ if doCheckLog: lastEnd = matchPart(log, logfile, lastEnd)
+ rdstr = ""
+ cnt = 0
+ for check,result,cache_desc in zip(checks, results, cached):
+ log = re.escape("scons: Configure: " + check) + ls
+ if doCheckLog: lastEnd = matchPart(log, logfile, lastEnd)
+ log = ""
+ result_cached = 1
+ for bld_desc in cache_desc: # each TryXXX
+ for ext, flag in bld_desc: # each file in TryBuild
+ file = os.path.join(sconf_dir,"conftest_%d%s" % (cnt, ext))
+ if flag == self.NCR:
+ # rebuild will pass
+ if ext in ['.c', '.cpp']:
+ log=log + re.escape(file + " <-") + ls
+ log=log + r"( \|" + nols + "*" + ls + ")+?"
+ else:
+ log=log + "(" + nols + "*" + ls +")*?"
+ result_cached = 0
+ if flag == self.CR:
+ # up to date
+ log=log + \
+ re.escape("scons: Configure: \"%s\" is up to date."
+ % file) + ls
+ log=log+re.escape("scons: Configure: The original builder "
+ "output was:") + ls
+ log=log+r"( \|.*"+ls+")+"
+ if flag == self.NCF:
+ # non-cached rebuild failure
+ log=log + "(" + nols + "*" + ls + ")*?"
+ result_cached = 0
+ if flag == self.CF:
+ # cached rebuild failure
+ log=log + \
+ re.escape("scons: Configure: Building \"%s\" failed "
+ "in a previous run and all its sources are"
+ " up to date." % file) + ls
+ log=log+re.escape("scons: Configure: The original builder "
+ "output was:") + ls
+ log=log+r"( \|.*"+ls+")+"
+ cnt = cnt + 1
+ if result_cached:
+ result = "(cached) " + result
+ rdstr = rdstr + re.escape(check) + re.escape(result) + "\n"
+ log=log + re.escape("scons: Configure: " + result) + ls + ls
+ if doCheckLog: lastEnd = matchPart(log, logfile, lastEnd)
+ log = ""
+ if doCheckLog: lastEnd = matchPart(ls, logfile, lastEnd)
+ if doCheckLog and lastEnd != len(logfile):
+ raise NoMatch(lastEnd)
+
+ except NoMatch, m:
+ print "Cannot match log file against log regexp."
+ print "log file: "
+ print "------------------------------------------------------"
+ print logfile[m.pos:]
+ print "------------------------------------------------------"
+ print "log regexp: "
+ print "------------------------------------------------------"
+ print log
+ print "------------------------------------------------------"
+ self.fail_test()
+
+ if doCheckStdout:
+ exp_stdout = self.wrap_stdout(".*", rdstr)
+ if not self.match_re_dotall(self.stdout(), exp_stdout):
+ print "Unexpected stdout: "
+ print "-----------------------------------------------------"
+ print repr(self.stdout())
+ print "-----------------------------------------------------"
+ print repr(exp_stdout)
+ print "-----------------------------------------------------"
+ self.fail_test()
+
+ def get_python_version(self):
+ """
+ Returns the Python version (just so everyone doesn't have to
+ hand-code slicing the right number of characters).
+ """
+ # see also sys.prefix documentation
+ return python_minor_version_string()
+
+ def get_platform_python_info(self):
+ """
+ Returns a path to a Python executable suitable for testing on
+ this platform and its associated include path, library path,
+ and library name.
+ """
+ python = self.where_is('python')
+ if not python:
+ self.skip_test('Can not find installed "python", skipping test.\n')
+
+ self.run(program = python, stdin = """\
+import os, sys
+try:
+ py_ver = 'python%d.%d' % sys.version_info[:2]
+except AttributeError:
+ py_ver = 'python' + sys.version[:3]
+print os.path.join(sys.prefix, 'include', py_ver)
+print os.path.join(sys.prefix, 'lib', py_ver, 'config')
+print py_ver
+""")
+
+ return [python] + self.stdout().strip().split('\n')
+
+ def start(self, *args, **kw):
+ """
+ Starts SCons in the test environment.
+
+ This method exists to tell Test{Cmd,Common} that we're going to
+ use standard input without forcing every .start() call in the
+ individual tests to do so explicitly.
+ """
+ if 'stdin' not in kw:
+ kw['stdin'] = True
+ sconsflags = initialize_sconsflags(self.ignore_python_version)
+ try:
+ p = TestCommon.start(self, *args, **kw)
+ finally:
+ restore_sconsflags(sconsflags)
+ return p
+
+ def wait_for(self, fname, timeout=20.0, popen=None):
+ """
+ Waits for the specified file name to exist.
+ """
+ waited = 0.0
+ while not os.path.exists(fname):
+ if timeout and waited >= timeout:
+ sys.stderr.write('timed out waiting for %s to exist\n' % fname)
+ if popen:
+ popen.stdin.close()
+ popen.stdin = None
+ self.status = 1
+ self.finish(popen)
+ stdout = self.stdout()
+ if stdout:
+ sys.stdout.write(self.banner('STDOUT ') + '\n')
+ sys.stdout.write(stdout)
+ stderr = self.stderr()
+ if stderr:
+ sys.stderr.write(self.banner('STDERR ') + '\n')
+ sys.stderr.write(stderr)
+ self.fail_test()
+ time.sleep(1.0)
+ waited = waited + 1.0
+
+ def get_alt_cpp_suffix(self):
+ """
+ Many CXX tests have this same logic.
+ They all needed to determine if the current os supports
+ files with .C and .c as different files or not
+ in which case they are instructed to use .cpp instead of .C
+ """
+ if not case_sensitive_suffixes('.c','.C'):
+ alt_cpp_suffix = '.cpp'
+ else:
+ alt_cpp_suffix = '.C'
+ return alt_cpp_suffix
+
+
+class Stat:
+ def __init__(self, name, units, expression, convert=None):
+ if convert is None:
+ convert = lambda x: x
+ self.name = name
+ self.units = units
+ self.expression = re.compile(expression)
+ self.convert = convert
+
+StatList = [
+ Stat('memory-initial', 'kbytes',
+ r'Memory before reading SConscript files:\s+(\d+)',
+ convert=lambda s: int(s) // 1024),
+ Stat('memory-prebuild', 'kbytes',
+ r'Memory before building targets:\s+(\d+)',
+ convert=lambda s: int(s) // 1024),
+ Stat('memory-final', 'kbytes',
+ r'Memory after building targets:\s+(\d+)',
+ convert=lambda s: int(s) // 1024),
+
+ Stat('time-sconscript', 'seconds',
+ r'Total SConscript file execution time:\s+([\d.]+) seconds'),
+ Stat('time-scons', 'seconds',
+ r'Total SCons execution time:\s+([\d.]+) seconds'),
+ Stat('time-commands', 'seconds',
+ r'Total command execution time:\s+([\d.]+) seconds'),
+ Stat('time-total', 'seconds',
+ r'Total build time:\s+([\d.]+) seconds'),
+]
+
+
+class TimeSCons(TestSCons):
+ """Class for timing SCons."""
+ def __init__(self, *args, **kw):
+ """
+ In addition to normal TestSCons.TestSCons intialization,
+ this enables verbose mode (which causes the command lines to
+ be displayed in the output) and copies the contents of the
+ directory containing the executing script to the temporary
+ working directory.
+ """
+ self.variables = kw.get('variables')
+ default_calibrate_variables = []
+ if self.variables is not None:
+ for variable, value in self.variables.items():
+ value = os.environ.get(variable, value)
+ try:
+ value = int(value)
+ except ValueError:
+ try:
+ value = float(value)
+ except ValueError:
+ pass
+ else:
+ default_calibrate_variables.append(variable)
+ else:
+ default_calibrate_variables.append(variable)
+ self.variables[variable] = value
+ del kw['variables']
+ calibrate_keyword_arg = kw.get('calibrate')
+ if calibrate_keyword_arg is None:
+ self.calibrate_variables = default_calibrate_variables
+ else:
+ self.calibrate_variables = calibrate_keyword_arg
+ del kw['calibrate']
+
+ self.calibrate = os.environ.get('TIMESCONS_CALIBRATE', '0') != '0'
+
+ if 'verbose' not in kw and not self.calibrate:
+ kw['verbose'] = True
+
+ TestSCons.__init__(self, *args, **kw)
+
+ # TODO(sgk): better way to get the script dir than sys.argv[0]
+ self.test_dir = os.path.dirname(sys.argv[0])
+ test_name = os.path.basename(self.test_dir)
+
+ if not os.path.isabs(self.test_dir):
+ self.test_dir = os.path.join(self.orig_cwd, self.test_dir)
+ self.copy_timing_configuration(self.test_dir, self.workpath())
+
+ def main(self, *args, **kw):
+ """
+ The main entry point for standard execution of timings.
+
+ This method run SCons three times:
+
+ Once with the --help option, to have it exit after just reading
+ the configuration.
+
+ Once as a full build of all targets.
+
+ Once again as a (presumably) null or up-to-date build of
+ all targets.
+
+ The elapsed time to execute each build is printed after
+ it has finished.
+ """
+ if 'options' not in kw and self.variables:
+ options = []
+ for variable, value in self.variables.items():
+ options.append('%s=%s' % (variable, value))
+ kw['options'] = ' '.join(options)
+ if self.calibrate:
+ self.calibration(*args, **kw)
+ else:
+ self.uptime()
+ self.startup(*args, **kw)
+ self.full(*args, **kw)
+ self.null(*args, **kw)
+
+ def trace(self, graph, name, value, units, sort=None):
+ fmt = "TRACE: graph=%s name=%s value=%s units=%s"
+ line = fmt % (graph, name, value, units)
+ if sort is not None:
+ line = line + (' sort=%s' % sort)
+ line = line + '\n'
+ sys.stdout.write(line)
+ sys.stdout.flush()
+
+ def report_traces(self, trace, stats):
+ self.trace('TimeSCons-elapsed',
+ trace,
+ self.elapsed_time(),
+ "seconds",
+ sort=0)
+ for name, args in stats.items():
+ self.trace(name, trace, **args)
+
+ def uptime(self):
+ try:
+ fp = open('/proc/loadavg')
+ except EnvironmentError:
+ pass
+ else:
+ avg1, avg5, avg15 = fp.readline().split(" ")[:3]
+ fp.close()
+ self.trace('load-average', 'average1', avg1, 'processes')
+ self.trace('load-average', 'average5', avg5, 'processes')
+ self.trace('load-average', 'average15', avg15, 'processes')
+
+ def collect_stats(self, input):
+ result = {}
+ for stat in StatList:
+ m = stat.expression.search(input)
+ if m:
+ value = stat.convert(m.group(1))
+ # The dict keys match the keyword= arguments
+ # of the trace() method above so they can be
+ # applied directly to that call.
+ result[stat.name] = {'value':value, 'units':stat.units}
+ return result
+
+ def add_timing_options(self, kw, additional=None):
+ """
+ Add the necessary timings options to the kw['options'] value.
+ """
+ options = kw.get('options', '')
+ if additional is not None:
+ options += additional
+ kw['options'] = options + ' --debug=memory,time'
+
+ def startup(self, *args, **kw):
+ """
+ Runs scons with the --help option.
+
+ This serves as a way to isolate just the amount of startup time
+ spent reading up the configuration, since --help exits before any
+ "real work" is done.
+ """
+ self.add_timing_options(kw, ' --help')
+ # Ignore the exit status. If the --help run dies, we just
+ # won't report any statistics for it, but we can still execute
+ # the full and null builds.
+ kw['status'] = None
+ self.run(*args, **kw)
+ sys.stdout.write(self.stdout())
+ stats = self.collect_stats(self.stdout())
+ # Delete the time-commands, since no commands are ever
+ # executed on the help run and it is (or should be) always 0.0.
+ del stats['time-commands']
+ self.report_traces('startup', stats)
+
+ def full(self, *args, **kw):
+ """
+ Runs a full build of SCons.
+ """
+ self.add_timing_options(kw)
+ self.run(*args, **kw)
+ sys.stdout.write(self.stdout())
+ stats = self.collect_stats(self.stdout())
+ self.report_traces('full', stats)
+ self.trace('full-memory', 'initial', **stats['memory-initial'])
+ self.trace('full-memory', 'prebuild', **stats['memory-prebuild'])
+ self.trace('full-memory', 'final', **stats['memory-final'])
+
+ def calibration(self, *args, **kw):
+ """
+ Runs a full build of SCons, but only reports calibration
+ information (the variable(s) that were set for this configuration,
+ and the elapsed time to run.
+ """
+ self.add_timing_options(kw)
+ self.run(*args, **kw)
+ for variable in self.calibrate_variables:
+ value = self.variables[variable]
+ sys.stdout.write('VARIABLE: %s=%s\n' % (variable, value))
+ sys.stdout.write('ELAPSED: %s\n' % self.elapsed_time())
+
+ def null(self, *args, **kw):
+ """
+ Runs an up-to-date null build of SCons.
+ """
+ # TODO(sgk): allow the caller to specify the target (argument)
+ # that must be up-to-date.
+ self.add_timing_options(kw)
+ self.up_to_date(arguments='.', **kw)
+ sys.stdout.write(self.stdout())
+ stats = self.collect_stats(self.stdout())
+ # time-commands should always be 0.0 on a null build, because
+ # no commands should be executed. Remove it from the stats
+ # so we don't trace it, but only if it *is* 0 so that we'll
+ # get some indication if a supposedly-null build actually does
+ # build something.
+ if float(stats['time-commands']['value']) == 0.0:
+ del stats['time-commands']
+ self.report_traces('null', stats)
+ self.trace('null-memory', 'initial', **stats['memory-initial'])
+ self.trace('null-memory', 'prebuild', **stats['memory-prebuild'])
+ self.trace('null-memory', 'final', **stats['memory-final'])
+
+ def elapsed_time(self):
+ """
+ Returns the elapsed time of the most recent command execution.
+ """
+ return self.endTime - self.startTime
+
+ def run(self, *args, **kw):
+ """
+ Runs a single build command, capturing output in the specified file.
+
+ Because this class is about timing SCons, we record the start
+ and end times of the elapsed execution, and also add the
+ --debug=memory and --debug=time options to have SCons report
+ its own memory and timing statistics.
+ """
+ self.startTime = time.time()
+ try:
+ result = TestSCons.run(self, *args, **kw)
+ finally:
+ self.endTime = time.time()
+ return result
+
+ def copy_timing_configuration(self, source_dir, dest_dir):
+ """
+ Copies the timing configuration from the specified source_dir (the
+ directory in which the controlling script lives) to the specified
+ dest_dir (a temporary working directory).
+
+ This ignores all files and directories that begin with the string
+ 'TimeSCons-', and all '.svn' subdirectories.
+ """
+ for root, dirs, files in os.walk(source_dir):
+ if '.svn' in dirs:
+ dirs.remove('.svn')
+ dirs = [ d for d in dirs if not d.startswith('TimeSCons-') ]
+ files = [ f for f in files if not f.startswith('TimeSCons-') ]
+ for dirname in dirs:
+ source = os.path.join(root, dirname)
+ destination = source.replace(source_dir, dest_dir)
+ os.mkdir(destination)
+ if sys.platform != 'win32':
+ shutil.copystat(source, destination)
+ for filename in files:
+ source = os.path.join(root, filename)
+ destination = source.replace(source_dir, dest_dir)
+ shutil.copy2(source, destination)
+
+
+# In some environments, $AR will generate a warning message to stderr
+# if the library doesn't previously exist and is being created. One
+# way to fix this is to tell AR to be quiet (sometimes the 'c' flag),
+# but this is difficult to do in a platform-/implementation-specific
+# method. Instead, we will use the following as a stderr match for
+# tests that use AR so that we will view zero or more "ar: creating
+# <file>" messages to be successful executions of the test (see
+# test/AR.py for sample usage).
+
+noisy_ar=r'(ar: creating( archive)? \S+\n?)*'
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestSConsMSVS.py b/QMTest/TestSConsMSVS.py
new file mode 100644
index 0000000..42564a7
--- /dev/null
+++ b/QMTest/TestSConsMSVS.py
@@ -0,0 +1,1053 @@
+"""
+TestSConsMSVS.py: a testing framework for the SCons software construction
+tool.
+
+A TestSConsMSVS environment object is created via the usual invocation:
+
+ test = TestSConsMSVS()
+
+TestSConsMSVS is a subsclass of TestSCons, which is in turn a subclass
+of TestCommon, which is in turn is a subclass of TestCmd), and hence
+has available all of the methods and attributes from those classes,
+as well as any overridden or additional methods or attributes defined
+in this subclass.
+"""
+
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+__revision__ = "QMTest/TestSConsMSVS.py 2014/03/02 14:18:15 garyo"
+
+import os
+import sys
+import platform
+
+from TestSCons import *
+from TestSCons import __all__
+
+
+
+expected_dspfile_6_0 = '''\
+# Microsoft Developer Studio Project File - Name="Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) External Target" 0x0106
+
+CFG=Test - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Test.mak" CFG="Test - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Test - Win32 Release" (based on "Win32 (x86) External Target")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF "$(CFG)" == "Test - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C "<WORKPATH>" -f SConstruct "Test.exe""
+# PROP BASE Rebuild_Opt "-c && echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C "<WORKPATH>" -f SConstruct "Test.exe""
+# PROP BASE Target_File "Test.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C "<WORKPATH>" -f SConstruct "Test.exe""
+# PROP Rebuild_Opt "-c && echo Starting SCons && "<PYTHON>" -c "<SCONS_SCRIPT_MAIN>" -C "<WORKPATH>" -f SConstruct "Test.exe""
+# PROP Target_File "Test.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "Test - Win32 Release"
+
+!IF "$(CFG)" == "Test - Win32 Release"
+
+!ENDIF
+
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE="sdk.h"
+# End Source File
+# End Group
+# Begin Group "Local Headers"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE="test.h"
+# End Source File
+# End Group
+# Begin Group "Other Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="readme.txt"
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE="test.rc"
+# End Source File
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;l;y;def;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="test.c"
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE="<SCONSCRIPT>"
+# End Source File
+# End Target
+# End Project
+'''
+
+expected_dswfile_6_0 = '''\
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "Test"="Test.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+'''
+
+SConscript_contents_6_0 = """\
+env=Environment(platform='win32', tools=['msvs'],
+ MSVS_VERSION='6.0',HOST_ARCH='%(HOST_ARCH)s')
+
+testsrc = ['test.c']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.dsp',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+"""
+
+
+
+expected_slnfile_7_0 = """\
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcproj", "<PROJECT_GUID>"
+EndProject
+Global
+<SCC_SLN_INFO>
+\tGlobalSection(SolutionConfiguration) = preSolution
+\t\tConfigName.0 = Release
+\tEndGlobalSection
+\tGlobalSection(ProjectDependencies) = postSolution
+\tEndGlobalSection
+\tGlobalSection(ProjectConfiguration) = postSolution
+\t\t<PROJECT_GUID>.Release.ActiveCfg = Release|Win32
+\t\t<PROJECT_GUID>.Release.Build.0 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(ExtensibilityGlobals) = postSolution
+\tEndGlobalSection
+\tGlobalSection(ExtensibilityAddIns) = postSolution
+\tEndGlobalSection
+EndGlobal
+"""
+
+expected_vcprojfile_7_0 = """\
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+\tProjectType="Visual C++"
+\tVersion="7.00"
+\tName="Test"
+\tProjectGUID="<PROJECT_GUID>"
+<SCC_VCPROJ_INFO>
+\tKeyword="MakeFileProj">
+\t<Platforms>
+\t\t<Platform
+\t\t\tName="Win32"/>
+\t</Platforms>
+\t<Configurations>
+\t\t<Configuration
+\t\t\tName="Release|Win32"
+\t\t\tOutputDirectory=""
+\t\t\tIntermediateDirectory=""
+\t\t\tConfigurationType="0"
+\t\t\tUseOfMFC="0"
+\t\t\tATLMinimizesCRunTimeLibraryUsage="FALSE">
+\t\t\t<Tool
+\t\t\t\tName="VCNMakeTool"
+\t\t\t\tBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tReBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tCleanCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct -c &quot;Test.exe&quot;"
+\t\t\t\tOutput="Test.exe"/>
+\t\t</Configuration>
+\t</Configurations>
+\t<Files>
+\t\t<Filter
+\t\t\tName="Header Files"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="sdk.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Local Headers"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="test.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Other Files"
+\t\t\tFilter="">
+\t\t\t<File
+\t\t\t\tRelativePath="readme.txt">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Resource Files"
+\t\t\tFilter="r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+\t\t\t<File
+\t\t\t\tRelativePath="test.rc">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Source Files"
+\t\t\tFilter="cpp;c;cxx;l;y;def;odl;idl;hpj;bat">
+\t\t\t<File
+\t\t\t\tRelativePath="test1.cpp">
+\t\t\t</File>
+\t\t\t<File
+\t\t\t\tRelativePath="test2.cpp">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<File
+\t\t\tRelativePath="<SCONSCRIPT>">
+\t\t</File>
+\t</Files>
+\t<Globals>
+\t</Globals>
+</VisualStudioProject>
+"""
+
+SConscript_contents_7_0 = """\
+env=Environment(platform='win32', tools=['msvs'],
+ MSVS_VERSION='7.0',HOST_ARCH='%(HOST_ARCH)s')
+
+testsrc = ['test1.cpp', 'test2.cpp']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+"""
+
+
+
+expected_slnfile_7_1 = """\
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcproj", "<PROJECT_GUID>"
+\tProjectSection(ProjectDependencies) = postProject
+\tEndProjectSection
+EndProject
+Global
+<SCC_SLN_INFO>
+\tGlobalSection(SolutionConfiguration) = preSolution
+\t\tConfigName.0 = Release
+\tEndGlobalSection
+\tGlobalSection(ProjectDependencies) = postSolution
+\tEndGlobalSection
+\tGlobalSection(ProjectConfiguration) = postSolution
+\t\t<PROJECT_GUID>.Release.ActiveCfg = Release|Win32
+\t\t<PROJECT_GUID>.Release.Build.0 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(ExtensibilityGlobals) = postSolution
+\tEndGlobalSection
+\tGlobalSection(ExtensibilityAddIns) = postSolution
+\tEndGlobalSection
+EndGlobal
+"""
+
+expected_vcprojfile_7_1 = """\
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+\tProjectType="Visual C++"
+\tVersion="7.10"
+\tName="Test"
+\tProjectGUID="<PROJECT_GUID>"
+<SCC_VCPROJ_INFO>
+\tKeyword="MakeFileProj">
+\t<Platforms>
+\t\t<Platform
+\t\t\tName="Win32"/>
+\t</Platforms>
+\t<Configurations>
+\t\t<Configuration
+\t\t\tName="Release|Win32"
+\t\t\tOutputDirectory=""
+\t\t\tIntermediateDirectory=""
+\t\t\tConfigurationType="0"
+\t\t\tUseOfMFC="0"
+\t\t\tATLMinimizesCRunTimeLibraryUsage="FALSE">
+\t\t\t<Tool
+\t\t\t\tName="VCNMakeTool"
+\t\t\t\tBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tReBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tCleanCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct -c &quot;Test.exe&quot;"
+\t\t\t\tOutput="Test.exe"/>
+\t\t</Configuration>
+\t</Configurations>
+\t<References>
+\t</References>
+\t<Files>
+\t\t<Filter
+\t\t\tName="Header Files"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="sdk.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Local Headers"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="test.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Other Files"
+\t\t\tFilter="">
+\t\t\t<File
+\t\t\t\tRelativePath="readme.txt">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Resource Files"
+\t\t\tFilter="r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+\t\t\t<File
+\t\t\t\tRelativePath="test.rc">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Source Files"
+\t\t\tFilter="cpp;c;cxx;l;y;def;odl;idl;hpj;bat">
+\t\t\t<File
+\t\t\t\tRelativePath="test1.cpp">
+\t\t\t</File>
+\t\t\t<File
+\t\t\t\tRelativePath="test2.cpp">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<File
+\t\t\tRelativePath="<SCONSCRIPT>">
+\t\t</File>
+\t</Files>
+\t<Globals>
+\t</Globals>
+</VisualStudioProject>
+"""
+
+SConscript_contents_7_1 = """\
+env=Environment(platform='win32', tools=['msvs'],
+ MSVS_VERSION='7.1',HOST_ARCH='%(HOST_ARCH)s')
+
+testsrc = ['test1.cpp', 'test2.cpp']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+"""
+
+
+
+expected_slnfile_8_0 = """\
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcproj", "<PROJECT_GUID>"
+EndProject
+Global
+<SCC_SLN_INFO>
+\tGlobalSection(SolutionConfigurationPlatforms) = preSolution
+\t\tRelease|Win32 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(ProjectConfigurationPlatforms) = postSolution
+\t\t<PROJECT_GUID>.Release|Win32.ActiveCfg = Release|Win32
+\t\t<PROJECT_GUID>.Release|Win32.Build.0 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(SolutionProperties) = preSolution
+\t\tHideSolutionNode = FALSE
+\tEndGlobalSection
+EndGlobal
+"""
+
+expected_slnfile_9_0 = """\
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcproj", "<PROJECT_GUID>"
+EndProject
+Global
+<SCC_SLN_INFO>
+\tGlobalSection(SolutionConfigurationPlatforms) = preSolution
+\t\tRelease|Win32 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(ProjectConfigurationPlatforms) = postSolution
+\t\t<PROJECT_GUID>.Release|Win32.ActiveCfg = Release|Win32
+\t\t<PROJECT_GUID>.Release|Win32.Build.0 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(SolutionProperties) = preSolution
+\t\tHideSolutionNode = FALSE
+\tEndGlobalSection
+EndGlobal
+"""
+
+expected_slnfile_10_0 = """\
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test.vcxproj", "Test.vcxproj", "{39A97E1F-1A52-8954-A0B1-A10A8487545E}"
+EndProject
+Global
+<SCC_SLN_INFO>
+\tGlobalSection(SolutionConfigurationPlatforms) = preSolution
+\t\tRelease|Win32 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(ProjectConfigurationPlatforms) = postSolution
+\t\t{39A97E1F-1A52-8954-A0B1-A10A8487545E}.Release|Win32.ActiveCfg = Release|Win32
+\t\t{39A97E1F-1A52-8954-A0B1-A10A8487545E}.Release|Win32.Build.0 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(SolutionProperties) = preSolution
+\t\tHideSolutionNode = FALSE
+\tEndGlobalSection
+EndGlobal
+"""
+
+expected_slnfile_11_0 = """\
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 11
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test.vcxproj", "Test.vcxproj", "{39A97E1F-1A52-8954-A0B1-A10A8487545E}"
+EndProject
+Global
+<SCC_SLN_INFO>
+\tGlobalSection(SolutionConfigurationPlatforms) = preSolution
+\t\tRelease|Win32 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(ProjectConfigurationPlatforms) = postSolution
+\t\t{39A97E1F-1A52-8954-A0B1-A10A8487545E}.Release|Win32.ActiveCfg = Release|Win32
+\t\t{39A97E1F-1A52-8954-A0B1-A10A8487545E}.Release|Win32.Build.0 = Release|Win32
+\tEndGlobalSection
+\tGlobalSection(SolutionProperties) = preSolution
+\t\tHideSolutionNode = FALSE
+\tEndGlobalSection
+EndGlobal
+"""
+
+expected_vcprojfile_8_0 = """\
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+\tProjectType="Visual C++"
+\tVersion="8.00"
+\tName="Test"
+\tProjectGUID="<PROJECT_GUID>"
+\tRootNamespace="Test"
+<SCC_VCPROJ_INFO>
+\tKeyword="MakeFileProj">
+\t<Platforms>
+\t\t<Platform
+\t\t\tName="Win32"/>
+\t</Platforms>
+\t<ToolFiles>
+\t</ToolFiles>
+\t<Configurations>
+\t\t<Configuration
+\t\t\tName="Release|Win32"
+\t\t\tConfigurationType="0"
+\t\t\tUseOfMFC="0"
+\t\t\tATLMinimizesCRunTimeLibraryUsage="false"
+\t\t\t>
+\t\t\t<Tool
+\t\t\t\tName="VCNMakeTool"
+\t\t\t\tBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tReBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tCleanCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct -c &quot;Test.exe&quot;"
+\t\t\t\tOutput="Test.exe"
+\t\t\t\tPreprocessorDefinitions="DEF1;DEF2;DEF3=1234"
+\t\t\t\tIncludeSearchPath="inc1;inc2"
+\t\t\t\tForcedIncludes=""
+\t\t\t\tAssemblySearchPath=""
+\t\t\t\tForcedUsingAssemblies=""
+\t\t\t\tCompileAsManaged=""
+\t\t\t/>
+\t\t</Configuration>
+\t</Configurations>
+\t<References>
+\t</References>
+\t<Files>
+\t\t<Filter
+\t\t\tName="Header Files"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="sdk.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Local Headers"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="test.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Other Files"
+\t\t\tFilter="">
+\t\t\t<File
+\t\t\t\tRelativePath="readme.txt">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Resource Files"
+\t\t\tFilter="r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+\t\t\t<File
+\t\t\t\tRelativePath="test.rc">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Source Files"
+\t\t\tFilter="cpp;c;cxx;l;y;def;odl;idl;hpj;bat">
+\t\t\t<File
+\t\t\t\tRelativePath="test1.cpp">
+\t\t\t</File>
+\t\t\t<File
+\t\t\t\tRelativePath="test2.cpp">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<File
+\t\t\tRelativePath="<SCONSCRIPT>">
+\t\t</File>
+\t</Files>
+\t<Globals>
+\t</Globals>
+</VisualStudioProject>
+"""
+
+expected_vcprojfile_9_0 = """\
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+\tProjectType="Visual C++"
+\tVersion="9.00"
+\tName="Test"
+\tProjectGUID="<PROJECT_GUID>"
+\tRootNamespace="Test"
+<SCC_VCPROJ_INFO>
+\tKeyword="MakeFileProj">
+\t<Platforms>
+\t\t<Platform
+\t\t\tName="Win32"/>
+\t</Platforms>
+\t<ToolFiles>
+\t</ToolFiles>
+\t<Configurations>
+\t\t<Configuration
+\t\t\tName="Release|Win32"
+\t\t\tConfigurationType="0"
+\t\t\tUseOfMFC="0"
+\t\t\tATLMinimizesCRunTimeLibraryUsage="false"
+\t\t\t>
+\t\t\t<Tool
+\t\t\t\tName="VCNMakeTool"
+\t\t\t\tBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tReBuildCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;"
+\t\t\t\tCleanCommandLine="echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct -c &quot;Test.exe&quot;"
+\t\t\t\tOutput="Test.exe"
+\t\t\t\tPreprocessorDefinitions="DEF1;DEF2;DEF3=1234"
+\t\t\t\tIncludeSearchPath="inc1;inc2"
+\t\t\t\tForcedIncludes=""
+\t\t\t\tAssemblySearchPath=""
+\t\t\t\tForcedUsingAssemblies=""
+\t\t\t\tCompileAsManaged=""
+\t\t\t/>
+\t\t</Configuration>
+\t</Configurations>
+\t<References>
+\t</References>
+\t<Files>
+\t\t<Filter
+\t\t\tName="Header Files"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="sdk.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Local Headers"
+\t\t\tFilter="h;hpp;hxx;hm;inl">
+\t\t\t<File
+\t\t\t\tRelativePath="test.h">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Other Files"
+\t\t\tFilter="">
+\t\t\t<File
+\t\t\t\tRelativePath="readme.txt">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Resource Files"
+\t\t\tFilter="r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+\t\t\t<File
+\t\t\t\tRelativePath="test.rc">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<Filter
+\t\t\tName="Source Files"
+\t\t\tFilter="cpp;c;cxx;l;y;def;odl;idl;hpj;bat">
+\t\t\t<File
+\t\t\t\tRelativePath="test1.cpp">
+\t\t\t</File>
+\t\t\t<File
+\t\t\t\tRelativePath="test2.cpp">
+\t\t\t</File>
+\t\t</Filter>
+\t\t<File
+\t\t\tRelativePath="<SCONSCRIPT>">
+\t\t</File>
+\t</Files>
+\t<Globals>
+\t</Globals>
+</VisualStudioProject>
+"""
+
+expected_vcprojfile_10_0 = """\
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+\t<ItemGroup Label="ProjectConfigurations">
+\t\t<ProjectConfiguration Include="Release|Win32">
+\t\t\t<Configuration>Release</Configuration>
+\t\t\t<Platform>Win32</Platform>
+\t\t</ProjectConfiguration>
+\t</ItemGroup>
+\t<PropertyGroup Label="Globals">
+\t\t<ProjectGuid>{39A97E1F-1A52-8954-A0B1-A10A8487545E}</ProjectGuid>
+<SCC_VCPROJ_INFO>
+\t\t<RootNamespace>Test</RootNamespace>
+\t\t<Keyword>MakeFileProj</Keyword>
+\t</PropertyGroup>
+\t<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.Default.props" />
+\t<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+\t\t<ConfigurationType>Makefile</ConfigurationType>
+\t\t<UseOfMfc>false</UseOfMfc>
+\t</PropertyGroup>
+\t<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.props" />
+\t<ImportGroup Label="ExtensionSettings">
+\t</ImportGroup>
+\t<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+\t\t<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+\t</ImportGroup>
+\t<PropertyGroup Label="UserMacros" />
+\t<PropertyGroup>
+\t<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+\t\t<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;</NMakeBuildCommandLine>
+\t\t<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;</NMakeReBuildCommandLine>
+\t\t<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct -c &quot;Test.exe&quot;</NMakeCleanCommandLine>
+\t\t<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Test.exe</NMakeOutput>
+\t\t<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">DEF1;DEF2;DEF3=1234</NMakePreprocessorDefinitions>
+\t\t<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">inc1;inc2</NMakeIncludeSearchPath>
+\t\t<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
+\t\t<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
+\t\t<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
+\t</PropertyGroup>
+\t<ItemGroup>
+\t\t<ClInclude Include="sdk_dir\sdk.h" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<ClInclude Include="test.h" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<None Include="readme.txt" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<None Include="test.rc" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<ClCompile Include="test1.cpp" />
+\t\t<ClCompile Include="test2.cpp" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<None Include="SConstruct" />
+\t</ItemGroup>
+\t<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.targets" />
+\t<ImportGroup Label="ExtensionTargets">
+\t</ImportGroup>
+</Project>
+"""
+
+expected_vcprojfile_11_0 = """\
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+\t<ItemGroup Label="ProjectConfigurations">
+\t\t<ProjectConfiguration Include="Release|Win32">
+\t\t\t<Configuration>Release</Configuration>
+\t\t\t<Platform>Win32</Platform>
+\t\t</ProjectConfiguration>
+\t</ItemGroup>
+\t<PropertyGroup Label="Globals">
+\t\t<ProjectGuid>{39A97E1F-1A52-8954-A0B1-A10A8487545E}</ProjectGuid>
+<SCC_VCPROJ_INFO>
+\t\t<RootNamespace>Test</RootNamespace>
+\t\t<Keyword>MakeFileProj</Keyword>
+\t</PropertyGroup>
+\t<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.Default.props" />
+\t<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+\t\t<ConfigurationType>Makefile</ConfigurationType>
+\t\t<UseOfMfc>false</UseOfMfc>
+\t</PropertyGroup>
+\t<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.props" />
+\t<ImportGroup Label="ExtensionSettings">
+\t</ImportGroup>
+\t<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+\t\t<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+\t</ImportGroup>
+\t<PropertyGroup Label="UserMacros" />
+\t<PropertyGroup>
+\t<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+\t\t<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;</NMakeBuildCommandLine>
+\t\t<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct &quot;Test.exe&quot;</NMakeReBuildCommandLine>
+\t\t<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons &amp;&amp; &quot;<PYTHON>&quot; -c &quot;<SCONS_SCRIPT_MAIN_XML>&quot; -C &quot;<WORKPATH>&quot; -f SConstruct -c &quot;Test.exe&quot;</NMakeCleanCommandLine>
+\t\t<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Test.exe</NMakeOutput>
+\t\t<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">DEF1;DEF2;DEF3=1234</NMakePreprocessorDefinitions>
+\t\t<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">inc1;inc2</NMakeIncludeSearchPath>
+\t\t<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
+\t\t<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
+\t\t<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
+\t</PropertyGroup>
+\t<ItemGroup>
+\t\t<ClInclude Include="sdk_dir\sdk.h" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<ClInclude Include="test.h" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<None Include="readme.txt" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<None Include="test.rc" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<ClCompile Include="test1.cpp" />
+\t\t<ClCompile Include="test2.cpp" />
+\t</ItemGroup>
+\t<ItemGroup>
+\t\t<None Include="SConstruct" />
+\t</ItemGroup>
+\t<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.targets" />
+\t<ImportGroup Label="ExtensionTargets">
+\t</ImportGroup>
+</Project>
+"""
+
+SConscript_contents_8_0 = """\
+env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='8.0',
+ CPPDEFINES=['DEF1', 'DEF2',('DEF3','1234')],
+ CPPPATH=['inc1', 'inc2'],
+ HOST_ARCH='%(HOST_ARCH)s')
+
+testsrc = ['test1.cpp', 'test2.cpp']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+"""
+
+SConscript_contents_9_0 = """\
+env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='9.0',
+ CPPDEFINES=['DEF1', 'DEF2',('DEF3','1234')],
+ CPPPATH=['inc1', 'inc2'],
+ HOST_ARCH='%(HOST_ARCH)s')
+
+testsrc = ['test1.cpp', 'test2.cpp']
+testincs = ['sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+"""
+
+SConscript_contents_10_0 = """\
+env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='10.0',
+ CPPDEFINES=['DEF1', 'DEF2',('DEF3','1234')],
+ CPPPATH=['inc1', 'inc2'],
+ HOST_ARCH='%(HOST_ARCH)s')
+
+testsrc = ['test1.cpp', 'test2.cpp']
+testincs = ['sdk_dir\sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcxproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+"""
+
+SConscript_contents_11_0 = """\
+env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='11.0',
+ CPPDEFINES=['DEF1', 'DEF2',('DEF3','1234')],
+ CPPPATH=['inc1', 'inc2'],
+ HOST_ARCH='%(HOST_ARCH)s')
+
+testsrc = ['test1.cpp', 'test2.cpp']
+testincs = ['sdk_dir\sdk.h']
+testlocalincs = ['test.h']
+testresources = ['test.rc']
+testmisc = ['readme.txt']
+
+env.MSVSProject(target = 'Test.vcxproj',
+ slnguid = '{SLNGUID}',
+ srcs = testsrc,
+ incs = testincs,
+ localincs = testlocalincs,
+ resources = testresources,
+ misc = testmisc,
+ buildtarget = 'Test.exe',
+ variant = 'Release')
+"""
+
+class TestSConsMSVS(TestSCons):
+ """Subclass for testing MSVS-specific portions of SCons."""
+
+ def msvs_versions(self):
+ if not hasattr(self, '_msvs_versions'):
+
+ # Determine the SCons version and the versions of the MSVS
+ # environments installed on the test machine.
+ #
+ # We do this by executing SCons with an SConstruct file
+ # (piped on stdin) that spits out Python assignments that
+ # we can just exec(). We construct the SCons.__"version"__
+ # string in the input here so that the SCons build itself
+ # doesn't fill it in when packaging SCons.
+ input = """\
+import SCons
+import SCons.Tool.MSCommon
+print "self.scons_version =", repr(SCons.__%s__)
+print "self._msvs_versions =", str(SCons.Tool.MSCommon.query_versions())
+""" % 'version'
+
+ self.run(arguments = '-n -q -Q -f -', stdin = input)
+ exec(self.stdout())
+
+ return self._msvs_versions
+
+ def vcproj_sys_path(self, fname):
+ """
+ """
+ orig = 'sys.path = [ join(sys'
+
+ enginepath = repr(os.path.join(self._cwd, '..', 'engine'))
+ replace = 'sys.path = [ %s, join(sys' % enginepath
+
+ contents = self.read(fname)
+ contents = contents.replace(orig, replace)
+ self.write(fname, contents)
+
+ def msvs_substitute(self, input, msvs_ver,
+ subdir=None, sconscript=None,
+ python=None,
+ project_guid=None,
+ vcproj_sccinfo='', sln_sccinfo=''):
+ if not hasattr(self, '_msvs_versions'):
+ self.msvs_versions()
+
+ if subdir:
+ workpath = self.workpath(subdir)
+ else:
+ workpath = self.workpath()
+
+ if sconscript is None:
+ sconscript = self.workpath('SConstruct')
+
+ if python is None:
+ python = sys.executable
+
+ if project_guid is None:
+ project_guid = "{E5466E26-0003-F18B-8F8A-BCD76C86388D}"
+
+ if 'SCONS_LIB_DIR' in os.environ:
+ exec_script_main = "from os.path import join; import sys; sys.path = [ r'%s' ] + sys.path; import SCons.Script; SCons.Script.main()" % os.environ['SCONS_LIB_DIR']
+ else:
+ exec_script_main = "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-%s'), join(sys.prefix, 'scons-%s'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons') ] + sys.path; import SCons.Script; SCons.Script.main()" % (self.scons_version, self.scons_version)
+ exec_script_main_xml = exec_script_main.replace("'", "&apos;")
+
+ result = input.replace(r'<WORKPATH>', workpath)
+ result = result.replace(r'<PYTHON>', python)
+ result = result.replace(r'<SCONSCRIPT>', sconscript)
+ result = result.replace(r'<SCONS_SCRIPT_MAIN>', exec_script_main)
+ result = result.replace(r'<SCONS_SCRIPT_MAIN_XML>', exec_script_main_xml)
+ result = result.replace(r'<PROJECT_GUID>', project_guid)
+ result = result.replace('<SCC_VCPROJ_INFO>\n', vcproj_sccinfo)
+ result = result.replace('<SCC_SLN_INFO>\n', sln_sccinfo)
+ return result
+
+ def get_msvs_executable(self, version):
+ """Returns a full path to the executable (MSDEV or devenv)
+ for the specified version of Visual Studio.
+ """
+ from SCons.Tool.MSCommon import get_vs_by_version
+
+ msvs = get_vs_by_version(version)
+ if not msvs:
+ return None
+ return msvs.get_executable()
+
+ def run(self, *args, **kw):
+ """
+ Suppress MSVS deprecation warnings.
+ """
+ save_sconsflags = os.environ.get('SCONSFLAGS')
+ if save_sconsflags:
+ sconsflags = [save_sconsflags]
+ else:
+ sconsflags = []
+ sconsflags = sconsflags + ['--warn=no-deprecated']
+ os.environ['SCONSFLAGS'] = ' '.join(sconsflags)
+ try:
+ result = TestSCons.run(self, *args, **kw)
+ finally:
+ os.environ['SCONSFLAGS'] = save_sconsflags or ''
+ return result
+
+ def get_vs_host_arch(self):
+ """ Get an MSVS, SDK , and/or MSVS acceptable platform arch
+ """
+
+ # Dict to 'canonalize' the arch
+ _ARCH_TO_CANONICAL = {
+ "x86": "x86",
+ "amd64": "amd64",
+ "i386": "x86",
+ "emt64": "amd64",
+ "x86_64": "amd64",
+ "itanium": "ia64",
+ "ia64": "ia64",
+ }
+
+ host_platform = platform.machine()
+ # TODO(2.5): the native Python platform.machine() function returns
+ # '' on all Python versions before 2.6, after which it also uses
+ # PROCESSOR_ARCHITECTURE.
+ if not host_platform:
+ host_platform = os.environ.get('PROCESSOR_ARCHITECTURE', '')
+
+
+ try:
+ host = _ARCH_TO_CANONICAL[host_platform]
+ except KeyError, e:
+ # Default to x86 for all other platforms
+ host = 'x86'
+
+
+ return host
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestSCons_time.py b/QMTest/TestSCons_time.py
new file mode 100644
index 0000000..806d7ca
--- /dev/null
+++ b/QMTest/TestSCons_time.py
@@ -0,0 +1,330 @@
+"""
+TestSCons_time.py: a testing framework for the scons-test.py script
+
+A TestSCons_time environment object is created via the usual invocation:
+
+ test = TestSCons_time()
+
+TestSCons_time is a subclass of TestCommon, which is in turn is a subclass
+of TestCmd), and hence has available all of the methods and attributes
+from those classes, as well as any overridden or additional methods or
+attributes defined in this subclass.
+"""
+
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+__revision__ = "QMTest/TestSCons_time.py 2014/03/02 14:18:15 garyo"
+
+import os
+import os.path
+import sys
+
+from TestCommon import *
+from TestCommon import __all__
+# some of the scons_time tests may need regex-based matching:
+from TestSCons import search_re, search_re_in_list
+
+__all__.extend([ 'TestSCons_time',
+ ])
+
+SConstruct = """\
+import os
+print "SConstruct file directory:", os.getcwd()
+"""
+
+scons_py = """\
+#!/usr/bin/env python
+import os
+import sys
+def write_args(fp, args):
+ fp.write(args[0] + '\\n')
+ for arg in args[1:]:
+ fp.write(' ' + arg + '\\n')
+write_args(sys.stdout, sys.argv)
+for arg in sys.argv[1:]:
+ if arg[:10] == '--profile=':
+ profile = open(arg[10:], 'wb')
+ profile.write('--profile\\n')
+ write_args(profile, sys.argv)
+ break
+sys.stdout.write('SCONS_LIB_DIR = ' + os.environ['SCONS_LIB_DIR'] + '\\n')
+exec(open('SConstruct', 'rU').read())
+"""
+
+aegis_py = """\
+#!/usr/bin/env python
+import os
+import sys
+script_dir = 'src/script'
+if not os.path.exists(script_dir):
+ os.makedirs(script_dir)
+open(script_dir + '/scons.py', 'w').write(
+r'''%s''')
+""" % scons_py
+
+
+svn_py = """\
+#!/usr/bin/env python
+import os
+import sys
+dir = sys.argv[-1]
+script_dir = dir + '/src/script'
+os.makedirs(script_dir)
+open(script_dir + '/scons.py', 'w').write(
+r'''%s''')
+""" % scons_py
+
+
+logfile_contents = """\
+Memory before reading SConscript files: 100%(index)s
+Memory after reading SConscript files: 200%(index)s
+Memory before building targets: 300%(index)s
+Memory after building targets: 400%(index)s
+Object counts:
+ pre- post- pre- post-
+ read read build build Class
+ 101%(index)s 102%(index)s 103%(index)s 104%(index)s Action.CommandAction
+ 201%(index)s 202%(index)s 203%(index)s 204%(index)s Action.CommandGeneratorAction
+ 301%(index)s 302%(index)s 303%(index)s 304%(index)s Action.FunctionAction
+ 401%(index)s 402%(index)s 403%(index)s 404%(index)s Action.LazyAction
+ 501%(index)s 502%(index)s 503%(index)s 504%(index)s Action.ListAction
+ 601%(index)s 602%(index)s 603%(index)s 604%(index)s Builder.BuilderBase
+ 701%(index)s 702%(index)s 703%(index)s 704%(index)s Builder.CompositeBuilder
+ 801%(index)s 802%(index)s 803%(index)s 804%(index)s Builder.ListBuilder
+ 901%(index)s 902%(index)s 903%(index)s 904%(index)s Builder.MultiStepBuilder
+ 1001%(index)s 1002%(index)s 1003%(index)s 1004%(index)s Builder.OverrideWarner
+ 1101%(index)s 1102%(index)s 1103%(index)s 1104%(index)s Environment.Base
+ 1201%(index)s 1202%(index)s 1203%(index)s 1204%(index)s Environment.EnvironmentClone
+ 1301%(index)s 1302%(index)s 1303%(index)s 1304%(index)s Environment.OverrideEnvironment
+ 1401%(index)s 1402%(index)s 1403%(index)s 1404%(index)s Executor.Executor
+ 1501%(index)s 1502%(index)s 1503%(index)s 1504%(index)s Node.FS
+ 1601%(index)s 1602%(index)s 1603%(index)s 1604%(index)s Node.FS.Base
+ 1701%(index)s 1702%(index)s 1703%(index)s 1704%(index)s Node.FS.Dir
+ 1801%(index)s 1802%(index)s 1803%(index)s 1804%(index)s Node.FS.File
+ 1901%(index)s 1902%(index)s 1904%(index)s 1904%(index)s Node.FS.RootDir
+ 2001%(index)s 2002%(index)s 2003%(index)s 2004%(index)s Node.Node
+Total build time: 11.123456 seconds
+Total SConscript file execution time: 22.234567 seconds
+Total SCons execution time: 33.345678 seconds
+Total command execution time: 44.456789 seconds
+"""
+
+
+profile_py = """\
+%(body)s
+
+import profile
+
+try: dispatch = profile.Profile.dispatch
+except AttributeError: pass
+else: dispatch['c_exception'] = profile.Profile.trace_dispatch_return
+
+prof = profile.Profile()
+prof.runcall(%(call)s)
+prof.dump_stats(r'%(profile_name)s')
+"""
+
+
+class TestSCons_time(TestCommon):
+ """Class for testing the scons-time script.
+
+ This provides a common place for initializing scons-time tests,
+ eliminating the need to begin every test with the same repeated
+ initializations.
+ """
+
+ def __init__(self, **kw):
+ """Initialize an SCons_time testing object.
+
+ If they're not overridden by keyword arguments, this
+ initializes the object with the following default values:
+
+ program = 'scons-time'
+ interpreter = ['python', '-tt']
+ match = match_exact
+ workdir = ''
+
+ The workdir value means that, by default, a temporary workspace
+ directory is created for a TestSCons_time environment.
+ In addition, this method changes directory (chdir) to the
+ workspace directory, so an explicit "chdir = '.'" on all of the
+ run() method calls is not necessary.
+ """
+
+ self.orig_cwd = os.getcwd()
+ try:
+ script_dir = os.environ['SCONS_SCRIPT_DIR']
+ except KeyError:
+ pass
+ else:
+ os.chdir(script_dir)
+ if 'program' not in kw:
+ p = os.environ.get('SCONS_TIME')
+ if not p:
+ p = 'scons-time'
+ if not os.path.exists(p):
+ p = 'scons-time.py'
+ kw['program'] = p
+
+ if 'interpreter' not in kw:
+ kw['interpreter'] = [python, '-tt']
+
+ if 'match' not in kw:
+ kw['match'] = match_exact
+
+ if 'workdir' not in kw:
+ kw['workdir'] = ''
+
+ TestCommon.__init__(self, **kw)
+
+ def archive_split(self, path):
+ if path[-7:] == '.tar.gz':
+ return path[:-7], path[-7:]
+ else:
+ return os.path.splitext(path)
+
+ def fake_logfile(self, logfile_name, index=0):
+ self.write(self.workpath(logfile_name), logfile_contents % locals())
+
+ def profile_data(self, profile_name, python_name, call, body):
+ profile_name = self.workpath(profile_name)
+ python_name = self.workpath(python_name)
+ d = {
+ 'profile_name' : profile_name,
+ 'python_name' : python_name,
+ 'call' : call,
+ 'body' : body,
+ }
+ self.write(python_name, profile_py % d)
+ self.run(program = python_name, interpreter = sys.executable)
+
+ def tempdir_re(self, *args):
+ """
+ Returns a regular expression to match a scons-time
+ temporary directory.
+ """
+ import re
+ import tempfile
+
+ sep = re.escape(os.sep)
+ tempdir = tempfile.gettempdir()
+
+ try:
+ realpath = os.path.realpath
+ except AttributeError:
+ pass
+ else:
+ tempdir = realpath(tempdir)
+
+ args = (tempdir, 'scons-time-',) + args
+ x = os.path.join(*args)
+ x = re.escape(x)
+ x = x.replace('time\\-', 'time\\-[^%s]*' % sep)
+ return x
+
+ def write_fake_aegis_py(self, name):
+ name = self.workpath(name)
+ self.write(name, aegis_py)
+ os.chmod(name, 0755)
+ return name
+
+ def write_fake_scons_py(self):
+ self.subdir('src', ['src', 'script'])
+ self.write('src/script/scons.py', scons_py)
+
+ def write_fake_svn_py(self, name):
+ name = self.workpath(name)
+ self.write(name, svn_py)
+ os.chmod(name, 0755)
+ return name
+
+ def write_sample_directory(self, archive, dir, files):
+ dir = self.workpath(dir)
+ for name, content in files:
+ path = os.path.join(dir, name)
+ d, f = os.path.split(path)
+ if not os.path.isdir(d):
+ os.makedirs(d)
+ open(path, 'wb').write(content)
+ return dir
+
+ def write_sample_tarfile(self, archive, dir, files):
+ import shutil
+ try:
+ import tarfile
+
+ except ImportError:
+
+ self.skip_test('no tarfile module\n')
+
+ else:
+
+ base, suffix = self.archive_split(archive)
+
+ mode = {
+ '.tar' : 'w',
+ '.tar.gz' : 'w:gz',
+ '.tgz' : 'w:gz',
+ }
+
+ tar = tarfile.open(archive, mode[suffix])
+ for name, content in files:
+ path = os.path.join(dir, name)
+ open(path, 'wb').write(content)
+ tarinfo = tar.gettarinfo(path, path)
+ tarinfo.uid = 111
+ tarinfo.gid = 111
+ tarinfo.uname = 'fake_user'
+ tarinfo.gname = 'fake_group'
+ tar.addfile(tarinfo, open(path, 'rb'))
+ tar.close()
+ shutil.rmtree(dir)
+ return self.workpath(archive)
+
+ def write_sample_zipfile(self, archive, dir, files):
+ import shutil
+ try:
+ import zipfile
+ except ImportError:
+
+ sys.stderr.write('no zipfile module\n')
+ self.no_result()
+
+ else:
+
+ zip = zipfile.ZipFile(archive, 'w')
+ for name, content in files:
+ path = os.path.join(dir, name)
+ open(path, 'wb').write(content)
+ zip.write(path)
+ zip.close()
+ shutil.rmtree(dir)
+ return self.workpath(archive)
+
+ sample_project_files = [
+ ('SConstruct', SConstruct),
+ ]
+
+ def write_sample_project(self, archive, dir=None):
+ base, suffix = self.archive_split(archive)
+
+ write_sample = {
+ '.tar' : self.write_sample_tarfile,
+ '.tar.gz' : self.write_sample_tarfile,
+ '.tgz' : self.write_sample_tarfile,
+ '.zip' : self.write_sample_zipfile,
+ }.get(suffix, self.write_sample_directory)
+
+ if not dir:
+ dir = base
+
+ os.mkdir(dir)
+ path = write_sample(archive, dir, self.sample_project_files)
+
+ return path
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/TestSConsign.py b/QMTest/TestSConsign.py
new file mode 100644
index 0000000..fe86173
--- /dev/null
+++ b/QMTest/TestSConsign.py
@@ -0,0 +1,89 @@
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+__revision__ = "QMTest/TestSConsign.py 2014/03/02 14:18:15 garyo"
+
+__doc__ = """
+TestSConsign.py: a testing framework for the "sconsign" script
+tool.
+
+A TestSConsign environment object is created via the usual invocation:
+
+ test = TestSConsign()
+
+TestSconsign is a subclass of TestSCons, which is a subclass of
+TestCommon, which is in turn is a subclass of TestCmd), and hence
+has available all of the methods and attributes from those classes,
+as well as any overridden or additional methods or attributes defined
+in this subclass.
+"""
+
+import os
+import os.path
+import sys
+
+from TestSCons import *
+from TestSCons import __all__
+
+__all__.extend([ 'TestSConsign', ])
+
+class TestSConsign(TestSCons):
+ """Class for testing the sconsign.py script.
+
+ This provides a common place for initializing sconsign tests,
+ eliminating the need to begin every test with the same repeated
+ initializations.
+
+ This adds additional methods for running the sconsign script
+ without changing the basic ability of the run() method to run
+ "scons" itself, since we need to run scons to generate the
+ .sconsign files that we want the sconsign script to read.
+ """
+ def __init__(self, *args, **kw):
+ try:
+ script_dir = os.environ['SCONS_SCRIPT_DIR']
+ except KeyError:
+ pass
+ else:
+ os.chdir(script_dir)
+ self.script_dir = os.getcwd()
+
+ TestSCons.__init__(self, *args, **kw)
+
+ self.my_kw = {
+ 'interpreter' : python, # imported from TestSCons
+ }
+
+ if 'program' not in kw:
+ kw['program'] = os.environ.get('SCONS')
+ if not kw['program']:
+ if os.path.exists('scons'):
+ kw['program'] = 'scons'
+ else:
+ kw['program'] = 'scons.py'
+
+ sconsign = os.environ.get('SCONSIGN')
+ if not sconsign:
+ if os.path.exists(self.script_path('sconsign.py')):
+ sconsign = 'sconsign.py'
+ elif os.path.exists(self.script_path('sconsign')):
+ sconsign = 'sconsign'
+ else:
+ print "Can find neither 'sconsign.py' nor 'sconsign' scripts."
+ self.no_result()
+ self.set_sconsign(sconsign)
+
+ def script_path(self, script):
+ return os.path.join(self.script_dir, script)
+
+ def set_sconsign(self, sconsign):
+ self.my_kw['program'] = sconsign
+
+ def run_sconsign(self, *args, **kw):
+ kw.update(self.my_kw)
+ return self.run(*args, **kw)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/classes.qmc b/QMTest/classes.qmc
new file mode 100644
index 0000000..88de061
--- /dev/null
+++ b/QMTest/classes.qmc
@@ -0,0 +1,12 @@
+<?xml version="1.0" ?>
+<!DOCTYPE class-directory
+ PUBLIC '-//QM/2.3/Class-Directory//EN'
+ 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/class-directory//en.dtd'>
+<class-directory>
+ <class kind="database" name="scons_tdb.Database"/>
+ <class kind="test" name="scons_tdb.Test"/>
+ <class kind="result_stream" name="scons_tdb.AegisChangeStream"/>
+ <class kind="result_stream" name="scons_tdb.AegisBaselineStream"/>
+ <class kind="result_stream" name="scons_tdb.AegisBatchStream"/>
+ <class kind="result_stream" name="scons_tdb.SConsXMLResultStream"/>
+</class-directory>
diff --git a/QMTest/configuration b/QMTest/configuration
new file mode 100644
index 0000000..db648ae
--- /dev/null
+++ b/QMTest/configuration
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<extension class="scons_tdb.Database" kind="database">
+ <argument name="srcdir">
+ <text>.</text>
+ </argument>
+</extension>
diff --git a/QMTest/scons_tdb.py b/QMTest/scons_tdb.py
new file mode 100644
index 0000000..7ea2202
--- /dev/null
+++ b/QMTest/scons_tdb.py
@@ -0,0 +1,603 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+from __future__ import division
+
+"""
+QMTest classes to support SCons' testing and Aegis-inspired workflow.
+
+Thanks to Stefan Seefeld for the initial code.
+"""
+
+__revision__ = "QMTest/scons_tdb.py 2014/03/02 14:18:15 garyo"
+
+########################################################################
+# Imports
+########################################################################
+
+import qm
+import qm.common
+import qm.test.base
+from qm.fields import *
+from qm.executable import *
+from qm.test import database
+from qm.test import test
+from qm.test import resource
+from qm.test import suite
+from qm.test.result import Result
+from qm.test.file_result_stream import FileResultStream
+from qm.test.classes.text_result_stream import TextResultStream
+from qm.test.classes.xml_result_stream import XMLResultStream
+from qm.test.directory_suite import DirectorySuite
+from qm.extension import get_extension_class_name, get_class_arguments_as_dictionary
+
+import dircache
+import os
+import imp
+
+if sys.platform == 'win32':
+ console = 'con'
+else:
+ console = '/dev/tty'
+
+def Trace(msg):
+ open(console, 'w').write(msg)
+
+# QMTest 2.3 hard-codes how it captures the beginning and end time by
+# calling the qm.common.format_time_iso() function, which canonicalizes
+# the time stamp in one-second granularity ISO format. In order to get
+# sub-second granularity, as well as to use the more precise time.clock()
+# function on Windows, we must replace that function with our own.
+
+orig_format_time_iso = qm.common.format_time_iso
+
+if sys.platform == 'win32':
+ time_func = time.clock
+else:
+ time_func = time.time
+
+def my_format_time(time_secs=None):
+ return str(time_func())
+
+qm.common.format_time_iso = my_format_time
+
+########################################################################
+# Classes
+########################################################################
+
+def get_explicit_arguments(e):
+ """This function can be removed once QMTest 2.4 is out."""
+
+ # Get all of the arguments.
+ arguments = get_class_arguments_as_dictionary(e.__class__)
+ # Determine which subset of the 'arguments' have been set
+ # explicitly.
+ explicit_arguments = {}
+ for name, field in arguments.items():
+ # Do not record computed fields.
+ if field.IsComputed():
+ continue
+ if name in e.__dict__:
+ explicit_arguments[name] = e.__dict__[name]
+
+ return explicit_arguments
+
+
+def check_exit_status(result, prefix, desc, status):
+ """This function can be removed once QMTest 2.4 is out."""
+
+ if sys.platform == "win32" or os.WIFEXITED(status):
+ # Obtain the exit code.
+ if sys.platform == "win32":
+ exit_code = status
+ else:
+ exit_code = os.WEXITSTATUS(status)
+ # If the exit code is non-zero, the test fails.
+ if exit_code != 0:
+ result.Fail("%s failed with exit code %d." % (desc, exit_code))
+ # Record the exit code in the result.
+ result[prefix + "exit_code"] = str(exit_code)
+ return False
+
+ elif os.WIFSIGNALED(status):
+ # Obtain the signal number.
+ signal = os.WTERMSIG(status)
+ # If the program gets a fatal signal, the test fails .
+ result.Fail("%s received fatal signal %d." % (desc, signal))
+ result[prefix + "signal"] = str(signal)
+ return False
+ else:
+ # A process should only be able to stop by exiting, or
+ # by being terminated with a signal.
+ assert None
+
+ return True
+
+
+
+class Null:
+ pass
+
+_null = Null()
+
+sys_attributes = [
+ 'byteorder',
+ 'exec_prefix',
+ 'executable',
+ 'maxint',
+ 'maxunicode',
+ 'platform',
+ 'prefix',
+ 'version',
+ 'version_info',
+]
+
+def get_sys_values():
+ sys_attributes.sort()
+ result = [(k, getattr(sys, k, _null)) for k in sys_attributes]
+ result = [t for t in result if not t[1] is _null]
+ result = [t[0] + '=' + repr(t[1]) for t in result]
+ return '\n '.join(result)
+
+module_attributes = [
+ '__version__',
+ '__build__',
+ '__buildsys__',
+ '__date__',
+ '__developer__',
+]
+
+def get_module_info(module):
+ module_attributes.sort()
+ result = [(k, getattr(module, k, _null)) for k in module_attributes]
+ result = [t for t in result if not t[1] is _null]
+ result = [t[0] + '=' + repr(t[1]) for t in result]
+ return '\n '.join(result)
+
+environ_keys = [
+ 'PATH',
+ 'SCONS',
+ 'SCONSFLAGS',
+ 'SCONS_LIB_DIR',
+ 'PYTHON_ROOT',
+ 'QTDIR',
+
+ 'COMSPEC',
+ 'INTEL_LICENSE_FILE',
+ 'INCLUDE',
+ 'LIB',
+ 'MSDEVDIR',
+ 'OS',
+ 'PATHEXT',
+ 'SystemRoot',
+ 'TEMP',
+ 'TMP',
+ 'USERNAME',
+ 'VXDOMNTOOLS',
+ 'WINDIR',
+ 'XYZZY'
+
+ 'ENV',
+ 'HOME',
+ 'LANG',
+ 'LANGUAGE',
+ 'LC_ALL',
+ 'LC_MESSAGES',
+ 'LOGNAME',
+ 'MACHINE',
+ 'OLDPWD',
+ 'PWD',
+ 'OPSYS',
+ 'SHELL',
+ 'TMPDIR',
+ 'USER',
+]
+
+def get_environment():
+ environ_keys.sort()
+ result = [(k, os.environ.get(k, _null)) for k in environ_keys]
+ result = [t for t in result if not t[1] is _null]
+ result = [t[0] + '-' + t[1] for t in result]
+ return '\n '.join(result)
+
+class SConsXMLResultStream(XMLResultStream):
+ def __init__(self, *args, **kw):
+ super(SConsXMLResultStream, self).__init__(*args, **kw)
+ def WriteAllAnnotations(self, context):
+ # Load (by hand) the SCons modules we just unwrapped so we can
+ # extract their version information. Note that we have to override
+ # SCons.Script.main() with a do_nothing() function, because loading up
+ # the 'scons' script will actually try to execute SCons...
+
+ src_engine = os.environ.get('SCONS_LIB_DIR')
+ if not src_engine:
+ src_engine = os.path.join('src', 'engine')
+ fp, pname, desc = imp.find_module('SCons', [src_engine])
+ SCons = imp.load_module('SCons', fp, pname, desc)
+
+ # Override SCons.Script.main() with a do-nothing function, because
+ # loading the 'scons' script will actually try to execute SCons...
+
+ src_engine_SCons = os.path.join(src_engine, 'SCons')
+ fp, pname, desc = imp.find_module('Script', [src_engine_SCons])
+ SCons.Script = imp.load_module('Script', fp, pname, desc)
+ def do_nothing():
+ pass
+ SCons.Script.main = do_nothing
+
+ scons_file = os.environ.get('SCONS')
+ if scons_file:
+ src_script, scons_py = os.path.split(scons_file)
+ scons = os.path.splitext(scons_py)[0]
+ else:
+ src_script = os.path.join('src', 'script')
+ scons = 'scons'
+ fp, pname, desc = imp.find_module(scons, [src_script])
+ scons = imp.load_module('scons', fp, pname, desc)
+ fp.close()
+
+ self.WriteAnnotation("scons_test.engine", get_module_info(SCons))
+ self.WriteAnnotation("scons_test.script", get_module_info(scons))
+
+ self.WriteAnnotation("scons_test.sys", get_sys_values())
+ self.WriteAnnotation("scons_test.os.environ", get_environment())
+
+class AegisStream(TextResultStream):
+ arguments = [
+ qm.fields.IntegerField(
+ name = "print_time",
+ title = "print individual test times",
+ description = """
+ """,
+ default_value = 0,
+ ),
+ ]
+ def __init__(self, *args, **kw):
+ super(AegisStream, self).__init__(*args, **kw)
+ self._num_tests = 0
+ self._outcomes = {}
+ self._outcome_counts = {}
+ for outcome in AegisTest.aegis_outcomes:
+ self._outcome_counts[outcome] = 0
+ self.format = "full"
+ def _percent(self, outcome):
+ return 100. * self._outcome_counts[outcome] / self._num_tests
+ def _aegis_no_result(self, result):
+ outcome = result.GetOutcome()
+ return (outcome == Result.FAIL and result.get('Test.exit_code') == '2')
+ def _DisplayText(self, text):
+ # qm.common.html_to_text() uses htmllib, which sticks an extra
+ # '\n' on the front of the text. Strip it and only display
+ # the text if there's anything to display.
+ text = qm.common.html_to_text(text)
+ if text[0] == '\n':
+ text = text[1:]
+ if text:
+ lines = text.splitlines()
+ if lines[-1] == '':
+ lines = lines[:-1]
+ self.file.write(' ' + '\n '.join(lines) + '\n\n')
+ def _DisplayResult(self, result, format):
+ test_id = result.GetId()
+ kind = result.GetKind()
+ if self._aegis_no_result(result):
+ outcome = "NO_RESULT"
+ else:
+ outcome = result.GetOutcome()
+ self._WriteOutcome(test_id, kind, outcome)
+ self.file.write('\n')
+ def _DisplayAnnotations(self, result):
+ try:
+ self._DisplayText(result["Test.stdout"])
+ except KeyError:
+ pass
+ try:
+ self._DisplayText(result["Test.stderr"])
+ except KeyError:
+ pass
+ if self.print_time:
+ start = float(result['qmtest.start_time'])
+ end = float(result['qmtest.end_time'])
+ fmt = " Total execution time: %.1f seconds\n\n"
+ self.file.write(fmt % (end - start))
+
+class AegisChangeStream(AegisStream):
+ def WriteResult(self, result):
+ test_id = result.GetId()
+ if self._aegis_no_result(result):
+ outcome = AegisTest.NO_RESULT
+ else:
+ outcome = result.GetOutcome()
+ self._num_tests += 1
+ self._outcome_counts[outcome] += 1
+ super(AegisStream, self).WriteResult(result)
+ def _SummarizeTestStats(self):
+ self.file.write("\n")
+ self._DisplayHeading("STATISTICS")
+ if self._num_tests != 0:
+ # We'd like to use the _FormatStatistics() method to do
+ # this, but it's wrapped around the list in Result.outcomes,
+ # so it's simpler to just do it ourselves.
+ print " %6d tests total\n" % self._num_tests
+ for outcome in AegisTest.aegis_outcomes:
+ if self._outcome_counts[outcome] != 0:
+ print " %6d (%3.0f%%) tests %s" % (
+ self._outcome_counts[outcome],
+ self._percent(outcome),
+ outcome
+ )
+
+class AegisBaselineStream(AegisStream):
+ def WriteResult(self, result):
+ test_id = result.GetId()
+ if self._aegis_no_result(result):
+ outcome = AegisTest.NO_RESULT
+ self.expected_outcomes[test_id] = Result.PASS
+ self._outcome_counts[outcome] += 1
+ else:
+ self.expected_outcomes[test_id] = Result.FAIL
+ outcome = result.GetOutcome()
+ if outcome != Result.Fail:
+ self._outcome_counts[outcome] += 1
+ self._num_tests += 1
+ super(AegisStream, self).WriteResult(result)
+ def _SummarizeRelativeTestStats(self):
+ self.file.write("\n")
+ self._DisplayHeading("STATISTICS")
+ if self._num_tests != 0:
+ # We'd like to use the _FormatStatistics() method to do
+ # this, but it's wrapped around the list in Result.outcomes,
+ # so it's simpler to just do it ourselves.
+ if self._outcome_counts[AegisTest.FAIL]:
+ print " %6d (%3.0f%%) tests as expected" % (
+ self._outcome_counts[AegisTest.FAIL],
+ self._percent(AegisTest.FAIL),
+ )
+ non_fail_outcomes = list(AegisTest.aegis_outcomes[:])
+ non_fail_outcomes.remove(AegisTest.FAIL)
+ for outcome in non_fail_outcomes:
+ if self._outcome_counts[outcome] != 0:
+ print " %6d (%3.0f%%) tests unexpected %s" % (
+ self._outcome_counts[outcome],
+ self._percent(outcome),
+ outcome,
+ )
+
+class AegisBatchStream(FileResultStream):
+ def __init__(self, arguments):
+ super(AegisBatchStream, self).__init__(arguments)
+ self._outcomes = {}
+ def WriteResult(self, result):
+ test_id = result.GetId()
+ kind = result.GetKind()
+ outcome = result.GetOutcome()
+ exit_status = '0'
+ if outcome == Result.FAIL:
+ exit_status = result.get('Test.exit_code')
+ self._outcomes[test_id] = exit_status
+ def Summarize(self):
+ self.file.write('test_result = [\n')
+ for file_name in sorted(self._outcomes.keys()):
+ exit_status = self._outcomes[file_name]
+ file_name = file_name.replace('\\', '/')
+ self.file.write(' { file_name = "%s";\n' % file_name)
+ self.file.write(' exit_status = %s; },\n' % exit_status)
+ self.file.write('];\n')
+
+class AegisTest(test.Test):
+ PASS = "PASS"
+ FAIL = "FAIL"
+ NO_RESULT = "NO_RESULT"
+ ERROR = "ERROR"
+ UNTESTED = "UNTESTED"
+
+ aegis_outcomes = (
+ PASS, FAIL, NO_RESULT, ERROR, UNTESTED,
+ )
+ """Aegis test outcomes."""
+
+class Test(AegisTest):
+ """Simple test that runs a python script and checks the status
+ to determine whether the test passes."""
+
+ script = TextField(title="Script to test")
+ topdir = TextField(title="Top source directory")
+
+ def Run(self, context, result):
+ """Run the test. The test passes if the command exits with status=0,
+ and fails otherwise. The program output is logged, but not validated."""
+
+ command = RedirectedExecutable()
+ args = [context.get('python', sys.executable), '-tt', self.script]
+ status = command.Run(args, os.environ)
+ if not check_exit_status(result, 'Test.', self.script, status):
+ # In case of failure record exit code, stdout, and stderr.
+ result.Fail("Non-zero exit_code.")
+ result["Test.stdout"] = result.Quote(command.stdout)
+ result["Test.stderr"] = result.Quote(command.stderr)
+
+
+class Database(database.Database):
+ """Scons test database.
+ * The 'src' and 'test' directories are explicit suites.
+ * Their subdirectories are implicit suites.
+ * All files under 'src/' ending with 'Tests.py' contain tests.
+ * All files under 'test/' with extension '.py' contain tests.
+ * Right now there is only a single test class, which simply runs
+ the specified python interpreter on the given script. To be refined..."""
+
+ srcdir = TextField(title = "Source Directory",
+ description = "The root of the test suite's source tree.")
+ _is_generic_database = True
+
+ def is_a_test_under_test(path, t):
+ return os.path.splitext(t)[1] == '.py' \
+ and os.path.isfile(os.path.join(path, t))
+
+ def is_a_test_under_src(path, t):
+ return t[-8:] == 'Tests.py' \
+ and os.path.isfile(os.path.join(path, t))
+
+ is_a_test = {
+ 'src' : is_a_test_under_src,
+ 'test' : is_a_test_under_test,
+ }
+
+ exclude_subdirs = {
+ '.svn' : 1,
+ 'CVS' : 1,
+ }
+
+ def is_a_test_subdir(path, subdir):
+ if exclude_subdirs.get(subdir):
+ return None
+ return os.path.isdir(os.path.join(path, subdir))
+
+ def __init__(self, path, arguments):
+
+ self.label_class = "file_label.FileLabel"
+ self.modifiable = "false"
+ # Initialize the base class.
+ super(Database, self).__init__(path, arguments)
+
+
+ def GetRoot(self):
+
+ return self.srcdir
+
+
+ def GetSubdirectories(self, directory):
+
+ components = self.GetLabelComponents(directory)
+ path = os.path.join(self.GetRoot(), *components)
+ if directory:
+ dirs = [d for d in dircache.listdir(path)
+ if os.path.isdir(os.path.join(path, d))]
+ else:
+ dirs = list(self.is_a_test.keys())
+
+ dirs.sort()
+ return dirs
+
+
+ def GetIds(self, kind, directory = "", scan_subdirs = 1):
+
+ components = self.GetLabelComponents(directory)
+ path = os.path.join(self.GetRoot(), *components)
+
+ if kind == database.Database.TEST:
+
+ if not components:
+ return []
+
+ ids = [self.JoinLabels(directory, t)
+ for t in dircache.listdir(path)
+ if self.is_a_test[components[0]](path, t)]
+
+ elif kind == Database.RESOURCE:
+ return [] # no resources yet
+
+ else: # SUITE
+
+ if directory:
+ ids = [self.JoinLabels(directory, d)
+ for d in dircache.listdir(path)
+ if os.path.isdir(os.path.join(path, d))]
+ else:
+ ids = list(self.is_a_test.keys())
+
+ if scan_subdirs:
+ for d in dircache.listdir(path):
+ if (os.path.isdir(d)):
+ ids.extend(self.GetIds(kind,
+ self.JoinLabels(directory, d),
+ True))
+
+ return ids
+
+
+ def GetExtension(self, id):
+
+ if not id:
+ return DirectorySuite(self, id)
+
+ components = self.GetLabelComponents(id)
+ path = os.path.join(self.GetRoot(), *components)
+
+ if os.path.isdir(path): # a directory
+ return DirectorySuite(self, id)
+
+ elif os.path.isfile(path): # a test
+
+ arguments = {}
+ arguments['script'] = path
+ arguments['topdir'] = self.GetRoot()
+
+ return Test(arguments, qmtest_id = id, qmtest_database = self)
+
+ else: # nothing else to offer
+
+ return None
+
+
+ def GetTest(self, test_id):
+ """This method can be removed once QMTest 2.4 is out."""
+
+ t = self.GetExtension(test_id)
+ if isinstance(t, test.Test):
+ return database.TestDescriptor(self,
+ test_id,
+ get_extension_class_name(t.__class__),
+ get_explicit_arguments(t))
+
+ raise database.NoSuchTestError(test_id)
+
+ def GetSuite(self, suite_id):
+ """This method can be removed once QMTest 2.4 is out."""
+
+ if suite_id == "":
+ return DirectorySuite(self, "")
+
+ s = self.GetExtension(suite_id)
+ if isinstance(s, suite.Suite):
+ return s
+
+ raise database.NoSuchSuiteError(suite_id)
+
+
+ def GetResource(self, resource_id):
+ """This method can be removed once QMTest 2.4 is out."""
+
+ r = self.GetExtension(resource_id)
+ if isinstance(r, resource.Resource):
+ return ResourceDescriptor(self,
+ resource_id,
+ get_extension_class_name(r.__class__),
+ get_explicit_arguments(r))
+
+ raise database.NoSuchResourceError(resource_id)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/QMTest/test-framework.rst b/QMTest/test-framework.rst
new file mode 100644
index 0000000..844d99b
--- /dev/null
+++ b/QMTest/test-framework.rst
@@ -0,0 +1,430 @@
+=======================
+SCons Testing Framework
+=======================
+
+SCons uses extensive automated tests to try to ensure quality. The primary goal
+is that users should be able to upgrade from version to version without any surprise
+changes in behavior.
+
+In general, no change goes into SCons unless it has one or more new or modified
+tests that demonstrably exercise the bug being fixed or the feature being added.
+There are exceptions to this guideline, but they should be just that, ''exceptions''.
+When in doubt, make sure it's tested.
+
+Test Organization
+=================
+
+There are three types of SCons tests:
+
+*End-to-End Tests*
+ End-to-end tests of SCons are all Python scripts (``*.py``) underneath
+ the ``test/`` subdirectory. They use the test infrastructure modules in the
+ ``QMTest`` subdirectory.
+
+*Unit Tests*
+ Unit tests for individual SCons modules live underneath the
+ ``src/engine/`` subdirectory and are the same base name as the module
+ with ``Tests.py`` appended--for example, the unit tests for the
+ ``Builder.py`` module are in the ``BuilderTests.py`` script.
+
+*External Tests*
+ For the support of external Tools (in the form of packages, preferably), the
+ testing framework got extended, such that it can run in standalone mode.
+ You can start it from the top-level folder of your Tool's source tree,
+ where it then finds all Python scripts (``*.py``) underneath the
+ local ``test/`` directory.
+ This implies that Tool tests have to be kept in a folder named ``test``,
+ like for the SCons core.
+
+
+Contrasting End-to-End and Unit Tests
+#####################################
+
+In general, anything that we've put into an end-to-end test script should
+be considered a hardened part of the interface (that is, it's something
+that a user might do) and should not be broken. Unit tests are now
+considered more malleable, more for testing internal interfaces that
+can change so long as we don't break users' ``SConscript`` files. (This
+wasn't always the case, and there's a lot of meaty code in many of the
+unit test scripts that does, in fact, capture external interface
+behavior. In general, we should try to move those things to end-to-end
+scripts as we find them.)
+
+It's more difficult to debug end-to-end tests. You can actually go
+straight into the Python debugger on the unit test scripts by using the
+``runtest.py --pdb`` option, but the end-to-end tests treat an SCons
+invocation as a "black box" and just look for external effects.
+Simple ``print`` statements within the SCons code itself often don't help
+debug end-to-end because they end up in SCons output that gets compared
+against expected output and cause a test failure. Probably the most
+effective technique is to use the internal ``SCons.Debug.Trace()`` function,
+which prints output to ``/dev/tty`` on Linux/UNIX systems and ``con`` on
+Windows systems, so you can see what's going on.
+
+Naming conventions
+##################
+
+The end-to-end tests, more or less, stick to the following naming conventions:
+
+1. All tests end with a .py suffix.
+
+2. In the *General* form we use
+
+ ``Feature.py``
+ for the test of a specified feature; try to
+ keep this description reasonably short
+
+ ``Feature-x.py``
+ for the test of a specified feature using
+ option ``x``
+
+3. The *command line option* tests take the form
+
+ ``option-x.py``
+ for a lower-case single-letter option
+
+ ``option--X.py``
+ upper-case single-letter option
+ (with an extra hyphen, so the file names will
+ be unique on case-insensitive systems)
+
+ ``option--lo.py``
+ long option; abbreviate the long
+ option name to a few characters
+
+
+Running Tests
+=============
+
+The standard set of SCons tests are run from the top-level source directory
+by the ``runtest.py`` script.
+There is a ``--qmtest`` option that checks whether the ``QMTest`` package
+is installed on your system. If it can be found, then the ``runtest.py`` script
+will use it to carry out the tests.
+
+Help is available through the ``-h`` option:
+
+::
+
+ $ python runtest.py -h
+
+To simply run all the tests, use the ``-a`` option:
+
+::
+
+ $ python runtest.py -a
+
+By default, ``runtest.py`` prints a count and percentage message for each test
+case, along with the name of the test file.
+If you need the output to be more silent, have a look at the ``-q``, ``-s`` and
+``-k`` options.
+
+You may specifically list one or more tests to be run:
+
+::
+
+ $ python runtest.py src/engine/SCons/BuilderTests.py
+ $ python runtest.py test/option-j.py test/Program.py
+
+Folder names are allowed arguments as well, so you can do a
+
+::
+
+ $ python runtest.py test/SWIG
+
+to run all SWIG tests only.
+
+You can also use the ``-f`` option to execute just the tests listed in a specified
+text file:
+
+::
+
+ $ cat testlist.txt
+ test/option-j.py
+ test/Program.py
+ $ python runtest.py -f testlist.txt
+
+
+One test must be listed per line, and any lines that begin with '#'
+will be ignored (the intent being to allow you, for example,
+to comment out tests that
+are currently passing and then uncomment all of the tests in the file
+for a final validation run).
+
+If more than one test is run, the ``runtest.py`` script prints a summary
+of how many tests passed, failed, or yielded no result, and lists any
+unsuccessful tests.
+
+The above invocations all test directly the files underneath the ``src/``
+subdirectory, and do not require that a packaging build be performed first.
+The ``runtest.py`` script supports additional options to run tests against
+unpacked packages in the ``build/test-*/`` subdirectories.
+
+If you are testing a separate Tool outside of the SCons source tree, you have
+to call the ``runtest.py`` script in *external* (stand-alone) mode::
+
+ $ python ~/scons/runtest.py -e -a
+
+. This ensures that the testing framework doesn't try to access SCons classes
+needed for some of the *internal* test cases.
+
+Note, that the actual tests are carried out in a temporary folder each, which gets
+deleted afterwards. This ensures that your source directories don't get clobbered
+with temporary files from the test runs. It also means that you can't simply change
+into a folder to "debug things" after a test has gone wrong. For a way around this,
+check out the ``PRESERVE`` environment variable. It can be seen in action in
+`How to convert old tests`_ below.
+
+Not Running Tests
+=================
+
+If you simply want to check which tests would get executed, you can call the
+``runtest.py`` script with the ``-l`` option::
+
+ $ python runtest.py -l
+
+Then there is also the ``-n`` option, which prints the command line for each
+single test, but doesn't actually execute them::
+
+ $ python runtest.py -n
+
+Finding Tests
+=============
+
+When started in *standard* mode
+
+::
+
+ $ python runtest.py -a
+
+
+, ``runtest.py`` assumes that it is run from the SCons top-level source directory.
+It then dives into the ``src`` and ``test`` folders, where it tries to find filenames
+
+ ``*Test.py``
+ for the ``src`` directory, and
+
+ ``*.py``
+ for the ``test`` folder.
+
+When using fixtures, you may quickly end up in a position where you have supporting
+Python script files in a subfolder, but they shouldn't get picked up as test scripts.
+In this case you have two options:
+
+1. Add a file with the name ``sconstest.skip`` to your subfolder. This lets
+ ``runtest.py`` skip the contents of the directory completely.
+2. Create a file ``.exclude_tests`` in each folder in question, and in it list
+ line-by-line the files to get excluded from testing.
+
+The same rules apply when testing external Tools by using the ``-e`` option.
+
+
+"Hello, world!" SCons Test Script
+=================================
+
+To illustrate how the end-to-end test scripts work,
+let's walk through a simple "Hello, world!" example:
+
+::
+
+ #!python
+ import TestSCons
+
+ test = TestSCons.TestSCons()
+
+ test.write('SConstruct', """\
+ Program('hello.c')
+ """)
+
+ test.write('hello.c', """\
+ int
+ main(int argc, char *argv[])
+ {
+ printf("Hello, world!\\n");
+ exit (0);
+ }
+ """)
+
+ test.run()
+
+ test.run(program='./hello', stdout="Hello, world!\n")
+
+ test.pass_test()
+
+
+``import TestSCons``
+ Imports the main infrastructure for writing SCons tests. This is normally the only part of the infrastructure that needs importing. Sometimes other Python modules are necessary or helpful, and get imported before this line.
+
+``test = TestSCons.TestSCons()``
+ This initializes an object for testing. A fair amount happens under the covers when the object is created, including:
+
+ * A temporary directory is created for all the in-line files that will get created.
+ * The temporary directory's removal is arranged for when the test is finished.
+ * We ``os.chdir()`` to the temporary directory.
+
+``test.write('SConstruct', ...``
+ This line creates an ``SConstruct`` file in the temporary directory, to be used as input to the ``scons`` run(s) that we're testing. Note the use of the Python triple-quote syntax for the contents of the ``SConstruct`` file. Because input files for tests are all created from in-line data like this, the tests can sometimes get a little confusing to read, because some of the Python code is found
+
+``test.write('hello.c', ...``
+ This lines creates an ``hello.c`` file in the temporary directory. Note that we have to escape the ``\\n`` in the ``"Hello, world!\\n"`` string so that it ends up as a single backslash in the ``hello.c`` file on disk.
+
+``test.run()``
+ This actually runs SCons. Like the object initialization, things happen under the covers:
+
+ * The exit status is verified; the test exits with a failure if the exit status is not zero.
+ * The error output is examined, and the test exits with a failure if there is any
+
+``test.run(program='./hello', stdout="Hello, world!\n")``
+ This shows use of the ``TestSCons.run()`` method to execute a program other than ``scons``, in this case the ``hello`` program we just presumably built. The ``stdout=`` keyword argument also tells the ``TestSCons.run()`` method to fail if the program output does not match the expected string ``"Hello, world!\n"``. Like the previous ``test.run()`` line, it will also fail the test if the exit status is non-zero, or there is any error output.
+
+``test.pass_test()``
+ This is always the last line in a test script. It prints ``PASSED`` on the screen and makes sure we exit with a ``0`` status to indicate the test passed. As a side effect of destroying the ``test`` object, the created temporary directory will be removed.
+
+Working with fixtures
+=====================
+
+In the simple example above, we have seen how to create files in the temporary test directory.
+We give a filename to the ``TestSCons.write()`` method, together with its contents, and it gets
+written to the test folder right before its start.
+
+This technique can still be seen throughout most of the end-to-end tests, but there is a better
+way. It's much easier to edit, create and maintain real files, instead of copy/pasting
+content to/from a Python script. If the test files get longer, the test script
+gets longer and is harder to read.
+
+Against this, we now have the possibility to copy single files or the contents of a
+local folder to the test directory. Since we can reuse these files/folders to setup
+several tests, we call them *fixtures* in the following.
+
+Directory fixtures
+##################
+
+The function ``dir_fixture(self, srcdir, dstdir=None)`` in the ``TestCmd`` class
+copies the contents of the specified folder ``srcdir`` from
+the directory of the called test script, to the current
+temporary test directory.
+The ``srcdir`` name may be a list, in which case the elements are
+concatenated with the ``os.path.join()`` method. The ``dstdir`` is
+assumed to be under the temporary working directory, it gets
+created automatically, if it does not already exist.
+
+A short syntax example::
+
+ test = TestSCons.TestSCons()
+ test.dir_fixture('image')
+ test.run()
+
+would copy all files and subfolders from the local ``image`` folder, to
+the temporary directory for the current test.
+
+If you'd like to see a real example for this in action, refer to the test
+named ``test/packaging/convenience-functions/convenience-functions.py``.
+
+File fixtures
+#############
+
+Like for directory fixtures, ``file_fixture(self, srcfile, dstfile=None)``
+copies the file ``srcfile`` from the directory of
+the called script, to the temporary test directory.
+The ``dstfile`` is assumed to be under the temporary working
+directory, unless it is an absolute path name.
+If ``dstfile`` is specified, its target directory gets created
+automatically if it doesn't already exist.
+
+With a::
+
+ test = TestSCons.TestSCons()
+ test.file_fixture('SConstruct')
+ test.file_fixture(['src','main.cpp'],['src','main.cpp'])
+ test.run()
+
+you would copy the files ``SConstruct`` and ``src/main.cpp`` to the temporary
+test folder, prior to running the test itself.
+
+Again, a reference example can be found in the current *default* revision of
+SCons, it is ``test/packaging/sandbox-test/sandbox-test.py``.
+
+For even more examples you should check out one of the external Tools, e.g. the
+*Qt4* Tool at https://bitbucket.org/dirkbaechle/scons_qt4. Also visit the SCons
+Tools Index at http://www.scons.org/wiki/ToolsIndex for a complete
+list of available Tools, though not all may have tests yet.
+
+How to convert old tests
+########################
+
+We now show how to convert a test, still using the ``TestSCons.write()`` method, to
+the fixture based approach. For this, we need to get at the files as they
+are written to each temporary test folder.
+
+Luckily, ``runtest.py`` checks for the existence of an environment variable named
+``PRESERVE``. If it is set to a non-zero value, the testing framework doesn't delete
+the test folder as ususal, but prints its name to the screen.
+
+So, you should be able to give the commands
+
+::
+
+ $ export PRESERVE=1
+ $ python runtest.py test/packaging/sandbox-test.py
+
+, assuming Linux and a bash-like shell.
+
+The output should then look something like this::
+
+ 1/1 (100.00%) /usr/bin/python -tt test/packaging/sandbox-test.py
+ PASSED
+ Preserved directory /tmp/testcmd.4060.twlYNI
+
+and you see that the test files have been kept in the folder ``/tmp/testcmd.4060.twlYNI``,
+where you can now copy them from to your new *fixture* folder. Then, in the test
+script you simply remove all the tedious ``TestSCons.write()`` statements and
+replace them by a single ``TestSCons.dir_fixture()``.
+
+Finally, you shouldn't forget to clean up and remove the temporary test directory. ``;)``
+
+Test Infrastructure
+===================
+
+The test API is in ``QMTest/TestSCons.py``. ``TestSCons`` is a subclass of
+``TestCommon``, which is a subclass of ``TestCmd``; all those python files are
+in ``QMTest``. Start in ``QMTest/TestCmd.py`` for the base API definitions,
+like how to create files (``test.write()``) and run commands (``test.run()``).
+
+You want to use ``TestSCons`` for the end-to-end tests in ``test``, but ``TestCmd``
+for the unit tests in the ``src`` folder.
+
+The match functions work like this:
+
+TestSCons.match_re:: match each line with a RE
+ * Splits the lines into a list (unless they already are)
+ * splits the REs at newlines (unless already a list) and puts ^..$ around each
+ * then each RE must match each line. This means there must be as many REs as lines.
+
+TestSCons.match_re_dotall:: match all the lines against a single RE
+ * Joins the lines with newline (unless already a string)
+ * joins the REs with newline (unless it's a string) and puts ^..$ around the whole thing
+ * then whole thing must match with python re.DOTALL.
+
+Use them in a test like this::
+
+ test.run(..., match=TestSCons.match_re, ...)
+
+or::
+
+ test.must_match(..., match=TestSCons.match_re, ...)
+
+Avoiding Tests based on Tool existence
+======================================
+
+Here's an easy sample::
+
+ #!python
+ intelc = test.detect_tool('intelc', prog='icpc')
+ if not intelc:
+ test.skip_test("Could not load 'intelc' Tool; skipping test(s).\n")
+
+See ``QMTest/TestSCons.py`` for the ``detect_tool`` method. It calls the tool's
+``generate()`` method, and then looks for the given prog (tool name by default) in
+``env['ENV']['PATH']``.
+
+
diff --git a/SConstruct b/SConstruct
index 6286e43..85baeda 100644
--- a/SConstruct
+++ b/SConstruct
@@ -3,15 +3,13 @@
#
# See the README.rst file for an overview of how SCons is built and tested.
-# When this gets changed, you must also change the copyright_years string
-# in QMTest/TestSCons.py so the test scripts look for the right string.
-copyright_years = '2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013'
+copyright_years = '2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014'
# This gets inserted into the man pages to reflect the month of release.
-month_year = 'March 2013'
+month_year = 'March 2014'
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -42,8 +40,10 @@ import stat
import sys
import tempfile
+import bootstrap
+
project = 'scons'
-default_version = '2.3.0'
+default_version = '2.3.1'
copyright = "Copyright (c) %s The SCons Foundation" % copyright_years
platform = distutils.util.get_platform()
@@ -80,7 +80,7 @@ def whereis(file):
dh_builddeb = whereis('dh_builddeb')
fakeroot = whereis('fakeroot')
gzip = whereis('gzip')
-rpmbuild = whereis('rpmbuild') or whereis('rpm')
+rpmbuild = whereis('rpmbuild')
hg = os.path.exists('.hg') and whereis('hg')
svn = os.path.exists('.svn') and whereis('svn')
unzip = whereis('unzip')
@@ -168,6 +168,17 @@ if build_id is None:
python_ver = sys.version[0:3]
+#
+# Adding some paths to sys.path, this is mainly needed
+# for the doc toolchain.
+#
+addpaths = [os.path.abspath(os.path.join(os.getcwd(), 'bin')),
+ os.path.abspath(os.path.join(os.getcwd(), 'QMTest'))]
+for a in addpaths:
+ if a not in sys.path:
+ sys.path.append(a)
+
+
# Re-exporting LD_LIBRARY_PATH is necessary if the Python version was
# built with the --enable-shared option.
@@ -375,6 +386,7 @@ def SCons_revision(target, source, env):
open(t, 'wb').write(contents)
os.chmod(t, os.stat(s)[0])
+revaction = SCons_revision
revbuilder = Builder(action = Action(SCons_revision,
varlist=['COPYRIGHT', 'VERSION']))
@@ -743,7 +755,7 @@ for p in [ scons ]:
# destination files.
#
manifest_in = File(os.path.join(src, 'MANIFEST.in')).rstr()
- src_files = [x[:-1] for x in open(manifest_in).readlines()]
+ src_files = bootstrap.parseManifestLines(src, open(manifest_in).readlines())
raw_files = src_files[:]
dst_files = src_files[:]
rpm_files = []
@@ -762,7 +774,7 @@ for p in [ scons ]:
isubdir = p['subinst_dirs'][sp['pkg']]
MANIFEST_in = File(os.path.join(src, ssubdir, 'MANIFEST.in')).rstr()
MANIFEST_in_list.append(MANIFEST_in)
- files = [x[:-1] for x in open(MANIFEST_in).readlines()]
+ files = bootstrap.parseManifestLines(os.path.join(src, ssubdir), open(MANIFEST_in).readlines())
raw_files.extend(files)
src_files.extend([os.path.join(ssubdir, x) for x in files])
for f in files:
@@ -793,7 +805,7 @@ for p in [ scons ]:
#
# Now run everything in src_file through the sed command we
- # concocted to expand SConstruct, 2.3.0, etc.
+ # concocted to expand SConstruct, 2.3.1, etc.
#
for b in src_files:
s = p['filemap'].get(b, b)
@@ -1025,7 +1037,10 @@ for p in [ scons ]:
if dh_builddeb and fakeroot:
# Our Debian packaging builds directly into build/dist,
# so we don't need to Install() the .debs.
- deb = os.path.join(build_dir, 'dist', "%s_%s_all.deb" % (pkg, version))
+ # The built deb is called just x.y.z, not x.y.z.final.0 so strip those off:
+ deb_version = '.'.join(version.split('.')[0:3])
+ deb = os.path.join(build_dir, 'dist', "%s_%s_all.deb" % (pkg, deb_version))
+ # print "Building deb into %s (version=%s)"%(deb, deb_version)
for d in p['debian_deps']:
b = env.SCons_revision(os.path.join(build, d), d)
env.Depends(deb, b)
@@ -1179,7 +1194,7 @@ for file in files:
#
# Documentation.
#
-Export('build_dir', 'env', 'whereis')
+Export('build_dir', 'env', 'whereis', 'revaction')
SConscript('doc/SConscript')
diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py
index 4927dc0..d0575b0 100644
--- a/bin/SConsDoc.py
+++ b/bin/SConsDoc.py
@@ -1,5 +1,27 @@
#!/usr/bin/env python
#
+# Copyright (c) 2010 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+#
# Module for handling SCons documentation processing.
#
@@ -16,13 +38,12 @@ Builder example:
<builder name="BUILDER">
<summary>
- This is the summary description of an SCons Builder.
+ <para>This is the summary description of an SCons Builder.
It will get placed in the man page,
and in the appropriate User's Guide appendix.
The name of any builder may be interpolated
anywhere in the document by specifying the
- &b-BUILDER;
- element. It need not be on a line by itself.
+ &b-BUILDER; element. It need not be on a line by itself.</para>
Unlike normal XML, blank lines are significant in these
descriptions and serve to separate paragraphs.
@@ -42,18 +63,12 @@ Function example:
(arg1, arg2, key=value)
</arguments>
<summary>
- This is the summary description of an SCons function.
+ <para>This is the summary description of an SCons function.
It will get placed in the man page,
and in the appropriate User's Guide appendix.
The name of any builder may be interpolated
anywhere in the document by specifying the
- &f-FUNCTION;
- element. It need not be on a line by itself.
-
- Unlike normal XML, blank lines are significant in these
- descriptions and serve to separate paragraphs.
- They'll get replaced in DocBook output with appropriate tags
- to indicate a new paragraph.
+ &f-FUNCTION; element. It need not be on a line by itself.</para>
<example>
print "this is example code, it will be offset and indented"
@@ -65,18 +80,12 @@ Construction variable example:
<cvar name="VARIABLE">
<summary>
- This is the summary description of a construction variable.
+ <para>This is the summary description of a construction variable.
It will get placed in the man page,
and in the appropriate User's Guide appendix.
The name of any construction variable may be interpolated
anywhere in the document by specifying the
- &t-VARIABLE;
- element. It need not be on a line by itself.
-
- Unlike normal XML, blank lines are significant in these
- descriptions and serve to separate paragraphs.
- They'll get replaced in DocBook output with appropriate tags
- to indicate a new paragraph.
+ &t-VARIABLE; element. It need not be on a line by itself.</para>
<example>
print "this is example code, it will be offset and indented"
@@ -88,18 +97,12 @@ Tool example:
<tool name="TOOL">
<summary>
- This is the summary description of an SCons Tool.
+ <para>This is the summary description of an SCons Tool.
It will get placed in the man page,
and in the appropriate User's Guide appendix.
The name of any tool may be interpolated
anywhere in the document by specifying the
- &t-TOOL;
- element. It need not be on a line by itself.
-
- Unlike normal XML, blank lines are significant in these
- descriptions and serve to separate paragraphs.
- They'll get replaced in DocBook output with appropriate tags
- to indicate a new paragraph.
+ &t-TOOL; element. It need not be on a line by itself.</para>
<example>
print "this is example code, it will be offset and indented"
@@ -112,7 +115,543 @@ import imp
import os.path
import re
import sys
-import xml.sax.handler
+import copy
+
+# Do we have libxml2/libxslt/lxml?
+has_libxml2 = True
+try:
+ import libxml2
+ import libxslt
+except:
+ has_libxml2 = False
+ try:
+ import lxml
+ except:
+ print("Failed to import either libxml2/libxslt or lxml")
+ sys.exit(1)
+
+has_etree = False
+if not has_libxml2:
+ try:
+ from lxml import etree
+ has_etree = True
+ except ImportError:
+ pass
+if not has_etree:
+ try:
+ # Python 2.5
+ import xml.etree.cElementTree as etree
+ except ImportError:
+ try:
+ # Python 2.5
+ import xml.etree.ElementTree as etree
+ except ImportError:
+ try:
+ # normal cElementTree install
+ import cElementTree as etree
+ except ImportError:
+ try:
+ # normal ElementTree install
+ import elementtree.ElementTree as etree
+ except ImportError:
+ print("Failed to import ElementTree from any known place")
+ sys.exit(1)
+
+re_entity = re.compile("\&([^;]+);")
+re_entity_header = re.compile("<!DOCTYPE\s+sconsdoc\s+[^\]]+\]>")
+
+# Namespace for the SCons Docbook XSD
+dbxsd="http://www.scons.org/dbxsd/v1.0"
+# Namespace map identifier for the SCons Docbook XSD
+dbxid="dbx"
+# Namespace for schema instances
+xsi = "http://www.w3.org/2001/XMLSchema-instance"
+
+# Header comment with copyright
+copyright_comment = """
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+This file is processed by the bin/SConsDoc.py module.
+See its __doc__ string for a discussion of the format.
+"""
+
+def isSConsXml(fpath):
+ """ Check whether the given file is a SCons XML file, i.e. it
+ contains the default target namespace definition.
+ """
+ try:
+ f = open(fpath,'r')
+ content = f.read()
+ f.close()
+ if content.find('xmlns="%s"' % dbxsd) >= 0:
+ return True
+ except:
+ pass
+
+ return False
+
+def remove_entities(content):
+ # Cut out entity inclusions
+ content = re_entity_header.sub("", content, re.M)
+ # Cut out entities themselves
+ content = re_entity.sub(lambda match: match.group(1), content)
+
+ return content
+
+default_xsd = os.path.join('doc','xsd','scons.xsd')
+
+ARG = "dbscons"
+
+class Libxml2ValidityHandler:
+
+ def __init__(self):
+ self.errors = []
+ self.warnings = []
+
+ def error(self, msg, data):
+ if data != ARG:
+ raise Exception, "Error handler did not receive correct argument"
+ self.errors.append(msg)
+
+ def warning(self, msg, data):
+ if data != ARG:
+ raise Exception, "Warning handler did not receive correct argument"
+ self.warnings.append(msg)
+
+
+class DoctypeEntity:
+ def __init__(self, name_, uri_):
+ self.name = name_
+ self.uri = uri_
+
+ def getEntityString(self):
+ txt = """ <!ENTITY %(perc)s %(name)s SYSTEM "%(uri)s">
+ %(perc)s%(name)s;
+""" % {'perc' : perc, 'name' : self.name, 'uri' : self.uri}
+
+ return txt
+
+class DoctypeDeclaration:
+ def __init__(self, name_=None):
+ self.name = name_
+ self.entries = []
+ if self.name is None:
+ # Add default entries
+ self.name = "sconsdoc"
+ self.addEntity("scons", "../scons.mod")
+ self.addEntity("builders-mod", "builders.mod")
+ self.addEntity("functions-mod", "functions.mod")
+ self.addEntity("tools-mod", "tools.mod")
+ self.addEntity("variables-mod", "variables.mod")
+
+ def addEntity(self, name, uri):
+ self.entries.append(DoctypeEntity(name, uri))
+
+ def createDoctype(self):
+ content = '<!DOCTYPE %s [\n' % self.name
+ for e in self.entries:
+ content += e.getEntityString()
+ content += ']>\n'
+
+ return content
+
+if not has_libxml2:
+ class TreeFactory:
+ def __init__(self):
+ pass
+
+ def newNode(self, tag):
+ return etree.Element(tag)
+
+ def newEtreeNode(self, tag, init_ns=False):
+ if init_ns:
+ NSMAP = {None: dbxsd,
+ 'xsi' : xsi}
+ return etree.Element(tag, nsmap=NSMAP)
+
+ return etree.Element(tag)
+
+ def copyNode(self, node):
+ return copy.deepcopy(node)
+
+ def appendNode(self, parent, child):
+ parent.append(child)
+
+ def hasAttribute(self, node, att):
+ return att in node.attrib
+
+ def getAttribute(self, node, att):
+ return node.attrib[att]
+
+ def setAttribute(self, node, att, value):
+ node.attrib[att] = value
+
+ def getText(self, root):
+ return root.text
+
+ def setText(self, root, txt):
+ root.text = txt
+
+ def writeGenTree(self, root, fp):
+ dt = DoctypeDeclaration()
+ fp.write(etree.tostring(root, xml_declaration=True,
+ encoding="UTF-8", pretty_print=True,
+ doctype=dt.createDoctype()))
+
+ def writeTree(self, root, fpath):
+ fp = open(fpath, 'w')
+ fp.write(etree.tostring(root, xml_declaration=True,
+ encoding="UTF-8", pretty_print=True))
+ fp.close()
+
+ def prettyPrintFile(self, fpath):
+ fin = open(fpath,'r')
+ tree = etree.parse(fin)
+ pretty_content = etree.tostring(tree, pretty_print=True)
+ fin.close()
+
+ fout = open(fpath,'w')
+ fout.write(pretty_content)
+ fout.close()
+
+ def decorateWithHeader(self, root):
+ root.attrib["{"+xsi+"}schemaLocation"] = "%s/scons.xsd scons.xsd" % dbxsd
+ return root
+
+ def newXmlTree(self, root):
+ """ Return a XML file tree with the correct namespaces set,
+ the element root as top entry and the given header comment.
+ """
+ NSMAP = {None: dbxsd,
+ 'xsi' : xsi}
+ t = etree.Element(root, nsmap=NSMAP)
+ return self.decorateWithHeader(t)
+
+ def validateXml(self, fpath, xmlschema_context):
+ # Use lxml
+ xmlschema = etree.XMLSchema(xmlschema_context)
+ try:
+ doc = etree.parse(fpath)
+ except Exception, e:
+ print "ERROR: %s fails to parse:"%fpath
+ print e
+ return False
+ doc.xinclude()
+ try:
+ xmlschema.assertValid(doc)
+ except Exception, e:
+ print "ERROR: %s fails to validate:" % fpath
+ print e
+ return False
+ return True
+
+ def findAll(self, root, tag, ns=None, xp_ctxt=None, nsmap=None):
+ expression = ".//{%s}%s" % (nsmap[ns], tag)
+ if not ns or not nsmap:
+ expression = ".//%s" % tag
+ return root.findall(expression)
+
+ def findAllChildrenOf(self, root, tag, ns=None, xp_ctxt=None, nsmap=None):
+ expression = "./{%s}%s/*" % (nsmap[ns], tag)
+ if not ns or not nsmap:
+ expression = "./%s/*" % tag
+ return root.findall(expression)
+
+ def convertElementTree(self, root):
+ """ Convert the given tree of etree.Element
+ entries to a list of tree nodes for the
+ current XML toolkit.
+ """
+ return [root]
+
+else:
+ class TreeFactory:
+ def __init__(self):
+ pass
+
+ def newNode(self, tag):
+ return libxml2.newNode(tag)
+
+ def newEtreeNode(self, tag, init_ns=False):
+ return etree.Element(tag)
+
+ def copyNode(self, node):
+ return node.copyNode(1)
+
+ def appendNode(self, parent, child):
+ if hasattr(parent, 'addChild'):
+ parent.addChild(child)
+ else:
+ parent.append(child)
+
+ def hasAttribute(self, node, att):
+ if hasattr(node, 'hasProp'):
+ return node.hasProp(att)
+ return att in node.attrib
+
+ def getAttribute(self, node, att):
+ if hasattr(node, 'prop'):
+ return node.prop(att)
+ return node.attrib[att]
+
+ def setAttribute(self, node, att, value):
+ if hasattr(node, 'setProp'):
+ node.setProp(att, value)
+ else:
+ node.attrib[att] = value
+
+ def getText(self, root):
+ if hasattr(root, 'getContent'):
+ return root.getContent()
+ return root.text
+
+ def setText(self, root, txt):
+ if hasattr(root, 'setContent'):
+ root.setContent(txt)
+ else:
+ root.text = txt
+
+ def writeGenTree(self, root, fp):
+ doc = libxml2.newDoc('1.0')
+ dtd = doc.newDtd("sconsdoc", None, None)
+ doc.addChild(dtd)
+ doc.setRootElement(root)
+ content = doc.serialize("UTF-8", 1)
+ dt = DoctypeDeclaration()
+ # This is clearly a hack, but unfortunately libxml2
+ # doesn't support writing PERs (Parsed Entity References).
+ # So, we simply replace the empty doctype with the
+ # text we need...
+ content = content.replace("<!DOCTYPE sconsdoc>", dt.createDoctype())
+ fp.write(content)
+ doc.freeDoc()
+
+ def writeTree(self, root, fpath):
+ fp = open(fpath, 'w')
+ doc = libxml2.newDoc('1.0')
+ doc.setRootElement(root)
+ fp.write(doc.serialize("UTF-8", 1))
+ doc.freeDoc()
+ fp.close()
+
+ def prettyPrintFile(self, fpath):
+ # Read file and resolve entities
+ doc = libxml2.readFile(fpath, None, libxml2d.XML_PARSE_NOENT)
+ fp = open(fpath, 'w')
+ # Prettyprint
+ fp.write(doc.serialize("UTF-8", 1))
+ fp.close()
+ # Cleanup
+ doc.freeDoc()
+
+ def decorateWithHeader(self, root):
+ # Register the namespaces
+ ns = root.newNs(dbxsd, None)
+ xi = root.newNs(xsi, 'xsi')
+ root.setNs(ns) #put this node in the target namespace
+
+ root.setNsProp(xi, 'schemaLocation', "%s/scons.xsd scons.xsd" % dbxsd)
+
+ return root
+
+ def newXmlTree(self, root):
+ """ Return a XML file tree with the correct namespaces set,
+ the element root as top entry and the given header comment.
+ """
+ t = libxml2.newNode(root)
+ return self.decorateWithHeader(t)
+
+ def validateXml(self, fpath, xmlschema_context):
+ # Create validation context
+ validation_context = xmlschema_context.schemaNewValidCtxt()
+ # Set error/warning handlers
+ eh = Libxml2ValidityHandler()
+ validation_context.setValidityErrorHandler(eh.error, eh.warning, ARG)
+ # Read file and resolve entities
+ doc = libxml2.readFile(fpath, None, libxml2.XML_PARSE_NOENT)
+ doc.xincludeProcessFlags(libxml2.XML_PARSE_NOENT)
+ err = validation_context.schemaValidateDoc(doc)
+ # Cleanup
+ doc.freeDoc()
+ del validation_context
+
+ if err or eh.errors:
+ for e in eh.errors:
+ print e.rstrip("\n")
+ print "%s fails to validate" % fpath
+ return False
+
+ return True
+
+ def findAll(self, root, tag, ns=None, xpath_context=None, nsmap=None):
+ if hasattr(root, 'xpathEval') and xpath_context:
+ # Use the xpath context
+ xpath_context.setContextNode(root)
+ expression = ".//%s" % tag
+ if ns:
+ expression = ".//%s:%s" % (ns, tag)
+ return xpath_context.xpathEval(expression)
+ else:
+ expression = ".//{%s}%s" % (nsmap[ns], tag)
+ if not ns or not nsmap:
+ expression = ".//%s" % tag
+ return root.findall(expression)
+
+ def findAllChildrenOf(self, root, tag, ns=None, xpath_context=None, nsmap=None):
+ if hasattr(root, 'xpathEval') and xpath_context:
+ # Use the xpath context
+ xpath_context.setContextNode(root)
+ expression = "./%s/node()" % tag
+ if ns:
+ expression = "./%s:%s/node()" % (ns, tag)
+
+ return xpath_context.xpathEval(expression)
+ else:
+ expression = "./{%s}%s/node()" % (nsmap[ns], tag)
+ if not ns or not nsmap:
+ expression = "./%s/node()" % tag
+ return root.findall(expression)
+
+ def expandChildElements(self, child):
+ """ Helper function for convertElementTree,
+ converts a single child recursively.
+ """
+ nchild = self.newNode(child.tag)
+ # Copy attributes
+ for key, val in child.attrib:
+ self.setAttribute(nchild, key, val)
+ elements = []
+ # Add text
+ if child.text:
+ t = libxml2.newText(child.text)
+ self.appendNode(nchild, t)
+ # Add children
+ for c in child:
+ for n in self.expandChildElements(c):
+ self.appendNode(nchild, n)
+ elements.append(nchild)
+ # Add tail
+ if child.tail:
+ tail = libxml2.newText(child.tail)
+ elements.append(tail)
+
+ return elements
+
+ def convertElementTree(self, root):
+ """ Convert the given tree of etree.Element
+ entries to a list of tree nodes for the
+ current XML toolkit.
+ """
+ nroot = self.newNode(root.tag)
+ # Copy attributes
+ for key, val in root.attrib:
+ self.setAttribute(nroot, key, val)
+ elements = []
+ # Add text
+ if root.text:
+ t = libxml2.newText(root.text)
+ self.appendNode(nroot, t)
+ # Add children
+ for c in root:
+ for n in self.expandChildElements(c):
+ self.appendNode(nroot, n)
+ elements.append(nroot)
+ # Add tail
+ if root.tail:
+ tail = libxml2.newText(root.tail)
+ elements.append(tail)
+
+ return elements
+
+tf = TreeFactory()
+
+
+class SConsDocTree:
+ def __init__(self):
+ self.nsmap = {'dbx' : dbxsd}
+ self.doc = None
+ self.root = None
+ self.xpath_context = None
+
+ def parseContent(self, content, include_entities=True):
+ """ Parses the given content as XML file. This method
+ is used when we generate the basic lists of entities
+ for the builders, tools and functions.
+ So we usually don't bother about namespaces and resolving
+ entities here...this is handled in parseXmlFile below
+ (step 2 of the overall process).
+ """
+ if not include_entities:
+ content = remove_entities(content)
+ # Create domtree from given content string
+ self.root = etree.fromstring(content)
+
+ def parseXmlFile(self, fpath):
+ nsmap = {'dbx' : dbxsd}
+ if not has_libxml2:
+ # Create domtree from file
+ domtree = etree.parse(fpath)
+ self.root = domtree.getroot()
+ else:
+ # Read file and resolve entities
+ self.doc = libxml2.readFile(fpath, None, libxml2.XML_PARSE_NOENT)
+ self.root = self.doc.getRootElement()
+ # Create xpath context
+ self.xpath_context = self.doc.xpathNewContext()
+ # Register namespaces
+ for key, val in self.nsmap.iteritems():
+ self.xpath_context.xpathRegisterNs(key, val)
+
+ def __del__(self):
+ if self.doc is not None:
+ self.doc.freeDoc()
+ if self.xpath_context is not None:
+ self.xpath_context.xpathFreeContext()
+
+perc="%"
+
+def validate_all_xml(dpaths, xsdfile=default_xsd):
+ xmlschema_context = None
+ if not has_libxml2:
+ # Use lxml
+ xmlschema_context = etree.parse(xsdfile)
+ else:
+ # Use libxml2 and prepare the schema validation context
+ ctxt = libxml2.schemaNewParserCtxt(xsdfile)
+ xmlschema_context = ctxt.schemaParse()
+ del ctxt
+
+ fpaths = []
+ for dp in dpaths:
+ if dp.endswith('.xml') and isSConsXml(dp):
+ path='.'
+ fpaths.append(dp)
+ else:
+ for path, dirs, files in os.walk(dp):
+ for f in files:
+ if f.endswith('.xml'):
+ fp = os.path.join(path, f)
+ if isSConsXml(fp):
+ fpaths.append(fp)
+
+ fails = []
+ for idx, fp in enumerate(fpaths):
+ fpath = os.path.join(path, fp)
+ print "%.2f%s (%d/%d) %s" % (float(idx+1)*100.0/float(len(fpaths)),
+ perc, idx+1, len(fpaths),fp)
+
+ if not tf.validateXml(fp, xmlschema_context):
+ fails.append(fp)
+ continue
+
+ if has_libxml2:
+ # Cleanup
+ del xmlschema_context
+
+ if fails:
+ return False
+
+ return True
class Item(object):
def __init__(self, name):
@@ -120,9 +659,10 @@ class Item(object):
self.sort_name = name.lower()
if self.sort_name[0] == '_':
self.sort_name = self.sort_name[1:]
- self.summary = []
- self.sets = None
- self.uses = None
+ self.sets = []
+ self.uses = []
+ self.summary = None
+ self.arguments = None
def cmp_name(self, name):
if name[0] == '_':
name = name[1:]
@@ -136,7 +676,6 @@ class Builder(Item):
class Function(Item):
def __init__(self, name):
super(Function, self).__init__(name)
- self.arguments = []
class Tool(Item):
def __init__(self, name):
@@ -146,18 +685,6 @@ class Tool(Item):
class ConstructionVariable(Item):
pass
-class Chunk(object):
- def __init__(self, tag, body=None):
- self.tag = tag
- if not body:
- body = []
- self.body = body
- def __str__(self):
- body = ''.join(self.body)
- return "<%s>%s</%s>\n" % (self.tag, body, self.tag)
- def append(self, data):
- self.body.append(data)
-
class Arguments(object):
def __init__(self, signature, body=None):
if not body:
@@ -175,206 +702,99 @@ class Arguments(object):
def append(self, data):
self.body.append(data)
-class Summary(object):
+class SConsDocHandler(object):
def __init__(self):
- self.body = []
- self.collect = []
- def append(self, data):
- self.collect.append(data)
- def end_para(self):
- text = ''.join(self.collect)
- paras = text.split('\n\n')
- if paras == ['\n']:
- return
- if paras[0] == '':
- self.body.append('\n')
- paras = paras[1:]
- paras[0] = '\n' + paras[0]
- if paras[-1] == '':
- paras = paras[:-1]
- paras[-1] = paras[-1] + '\n'
- last = '\n'
- else:
- last = None
- sep = None
- for p in paras:
- c = Chunk("para", p)
- if sep:
- self.body.append(sep)
- self.body.append(c)
- sep = '\n'
- if last:
- self.body.append(last)
- def begin_chunk(self, chunk):
- self.end_para()
- self.collect = chunk
- def end_chunk(self):
- self.body.append(self.collect)
- self.collect = []
-
-class SConsDocHandler(xml.sax.handler.ContentHandler,
- xml.sax.handler.ErrorHandler):
- def __init__(self):
- self._start_dispatch = {}
- self._end_dispatch = {}
- keys = list(self.__class__.__dict__.keys())
- start_tag_method_names = [k for k in keys if k[:6] == 'start_']
- end_tag_method_names = [k for k in keys if k[:4] == 'end_']
- for method_name in start_tag_method_names:
- tag = method_name[6:]
- self._start_dispatch[tag] = getattr(self, method_name)
- for method_name in end_tag_method_names:
- tag = method_name[4:]
- self._end_dispatch[tag] = getattr(self, method_name)
- self.stack = []
- self.collect = []
- self.current_object = []
self.builders = {}
self.functions = {}
self.tools = {}
self.cvars = {}
- def startElement(self, name, attrs):
+ def parseItems(self, domelem, xpath_context, nsmap):
+ items = []
+
+ for i in tf.findAll(domelem, "item", dbxid, xpath_context, nsmap):
+ txt = tf.getText(i)
+ if txt is not None:
+ txt = txt.strip()
+ if len(txt):
+ items.append(txt.strip())
+
+ return items
+
+ def parseUsesSets(self, domelem, xpath_context, nsmap):
+ uses = []
+ sets = []
+
+ for u in tf.findAll(domelem, "uses", dbxid, xpath_context, nsmap):
+ uses.extend(self.parseItems(u, xpath_context, nsmap))
+ for s in tf.findAll(domelem, "sets", dbxid, xpath_context, nsmap):
+ sets.extend(self.parseItems(s, xpath_context, nsmap))
+
+ return sorted(uses), sorted(sets)
+
+ def parseInstance(self, domelem, map, Class,
+ xpath_context, nsmap, include_entities=True):
+ name = 'unknown'
+ if tf.hasAttribute(domelem, 'name'):
+ name = tf.getAttribute(domelem, 'name')
try:
- start_element_method = self._start_dispatch[name]
+ instance = map[name]
except KeyError:
- self.characters('<%s>' % name)
- else:
- start_element_method(attrs)
-
- def endElement(self, name):
- try:
- end_element_method = self._end_dispatch[name]
- except KeyError:
- self.characters('</%s>' % name)
- else:
- end_element_method()
-
- #
- #
- def characters(self, chars):
- self.collect.append(chars)
-
- def begin_collecting(self, chunk):
- self.collect = chunk
- def end_collecting(self):
- self.collect = []
-
- def begin_chunk(self):
- pass
- def end_chunk(self):
- pass
-
- #
- #
- #
-
- def begin_xxx(self, obj):
- self.stack.append(self.current_object)
- self.current_object = obj
- def end_xxx(self):
- self.current_object = self.stack.pop()
-
- #
- #
- #
- def start_scons_doc(self, attrs):
- pass
- def end_scons_doc(self):
- pass
-
- def start_builder(self, attrs):
- name = attrs.get('name')
- try:
- builder = self.builders[name]
- except KeyError:
- builder = Builder(name)
- self.builders[name] = builder
- self.begin_xxx(builder)
- def end_builder(self):
- self.end_xxx()
-
- def start_scons_function(self, attrs):
- name = attrs.get('name')
- try:
- function = self.functions[name]
- except KeyError:
- function = Function(name)
- self.functions[name] = function
- self.begin_xxx(function)
- def end_scons_function(self):
- self.end_xxx()
-
- def start_tool(self, attrs):
- name = attrs.get('name')
- try:
- tool = self.tools[name]
- except KeyError:
- tool = Tool(name)
- self.tools[name] = tool
- self.begin_xxx(tool)
- def end_tool(self):
- self.end_xxx()
-
- def start_cvar(self, attrs):
- name = attrs.get('name')
- try:
- cvar = self.cvars[name]
- except KeyError:
- cvar = ConstructionVariable(name)
- self.cvars[name] = cvar
- self.begin_xxx(cvar)
- def end_cvar(self):
- self.end_xxx()
-
- def start_arguments(self, attrs):
- arguments = Arguments(attrs.get('signature', "both"))
- self.current_object.arguments.append(arguments)
- self.begin_xxx(arguments)
- self.begin_collecting(arguments)
- def end_arguments(self):
- self.end_xxx()
-
- def start_summary(self, attrs):
- summary = Summary()
- self.current_object.summary = summary
- self.begin_xxx(summary)
- self.begin_collecting(summary)
- def end_summary(self):
- self.current_object.end_para()
- self.end_xxx()
-
- def start_example(self, attrs):
- example = Chunk("programlisting")
- self.current_object.begin_chunk(example)
- def end_example(self):
- self.current_object.end_chunk()
-
- def start_uses(self, attrs):
- self.begin_collecting([])
- def end_uses(self):
- self.current_object.uses = sorted(''.join(self.collect).split())
- self.end_collecting()
-
- def start_sets(self, attrs):
- self.begin_collecting([])
- def end_sets(self):
- self.current_object.sets = sorted(''.join(self.collect).split())
- self.end_collecting()
-
- # Stuff for the ErrorHandler portion.
- def error(self, exception):
- linenum = exception._linenum - self.preamble_lines
- sys.stderr.write('%s:%d:%d: %s (error)\n' % (self.filename, linenum, exception._colnum, ''.join(exception.args)))
-
- def fatalError(self, exception):
- linenum = exception._linenum - self.preamble_lines
- sys.stderr.write('%s:%d:%d: %s (fatalError)\n' % (self.filename, linenum, exception._colnum, ''.join(exception.args)))
-
- def set_file_info(self, filename, preamble_lines):
- self.filename = filename
- self.preamble_lines = preamble_lines
-
+ instance = Class(name)
+ map[name] = instance
+ uses, sets = self.parseUsesSets(domelem, xpath_context, nsmap)
+ instance.uses.extend(uses)
+ instance.sets.extend(sets)
+ if include_entities:
+ # Parse summary and function arguments
+ for s in tf.findAllChildrenOf(domelem, "summary", dbxid, xpath_context, nsmap):
+ if instance.summary is None:
+ instance.summary = []
+ instance.summary.append(tf.copyNode(s))
+ for a in tf.findAll(domelem, "arguments", dbxid, xpath_context, nsmap):
+ if instance.arguments is None:
+ instance.arguments = []
+ instance.arguments.append(tf.copyNode(a))
+
+ def parseDomtree(self, root, xpath_context=None, nsmap=None, include_entities=True):
+ # Process Builders
+ for b in tf.findAll(root, "builder", dbxid, xpath_context, nsmap):
+ self.parseInstance(b, self.builders, Builder,
+ xpath_context, nsmap, include_entities)
+ # Process Functions
+ for f in tf.findAll(root, "scons_function", dbxid, xpath_context, nsmap):
+ self.parseInstance(f, self.functions, Function,
+ xpath_context, nsmap, include_entities)
+ # Process Tools
+ for t in tf.findAll(root, "tool", dbxid, xpath_context, nsmap):
+ self.parseInstance(t, self.tools, Tool,
+ xpath_context, nsmap, include_entities)
+ # Process CVars
+ for c in tf.findAll(root, "cvar", dbxid, xpath_context, nsmap):
+ self.parseInstance(c, self.cvars, ConstructionVariable,
+ xpath_context, nsmap, include_entities)
+
+ def parseContent(self, content, include_entities=True):
+ """ Parses the given content as XML file. This method
+ is used when we generate the basic lists of entities
+ for the builders, tools and functions.
+ So we usually don't bother about namespaces and resolving
+ entities here...this is handled in parseXmlFile below
+ (step 2 of the overall process).
+ """
+ # Create doctree
+ t = SConsDocTree()
+ t.parseContent(content, include_entities)
+ # Parse it
+ self.parseDomtree(t.root, t.xpath_context, t.nsmap, include_entities)
+
+ def parseXmlFile(self, fpath):
+ # Create doctree
+ t = SConsDocTree()
+ t.parseXmlFile(fpath)
+ # Parse it
+ self.parseDomtree(t.root, t.xpath_context, t.nsmap)
+
# lifted from Ka-Ping Yee's way cool pydoc module.
def importfile(path):
"""Import a Python source file or compiled file given its path."""
diff --git a/bin/scons-doc.py b/bin/SConsExamples.py
index cf5d5b2..9823a05 100644
--- a/bin/scons-doc.py
+++ b/bin/SConsExamples.py
@@ -1,7 +1,7 @@
-#!/usr/bin/env python
-#
+# !/usr/bin/env python
+#
# Copyright (c) 2010 The SCons Foundation
-#
+#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
@@ -9,10 +9,10 @@
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
-#
+#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
-#
+#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -21,38 +21,18 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# scons-doc.py - an SGML preprocessor for capturing SCons output
-# and inserting it into examples in our DocBook
-# documentation
-#
-# Synopsis:
-#
-# scons-doc [OPTIONS] [.in files]
-#
-# When no input files are given, the folder doc/user/* is searched for .in files.
-#
-# Available options:
-#
-# -d, --diff create examples for the .in file and output a unified
-# diff against the related .xml file
-# -r, --run create examples for the .in file, but do not change
-# any files
-# -s, --simple_diff use a simpler output for the diff mode (no unified
-# diff!)
-# -u, --update create examples for the .in file and update the
-# related .xml file
-#
-# This script looks for some SGML tags that describe SCons example
+#
+#
+# This script looks for some XML tags that describe SCons example
# configurations and commands to execute in those configurations, and
# uses TestCmd.py to execute the commands and insert the output from
-# those commands into the SGML that we output. This way, we can run a
+# those commands into the XML that we output. This way, we can run a
# script and update all of our example documentation output without
# a lot of laborious by-hand checking.
-#
+#
# An "SCons example" looks like this, and essentially describes a set of
# input files (program source files as well as SConscript files):
-#
+#
# <scons_example name="ex1">
# <file name="SConstruct" printme="1">
# env = Environment()
@@ -62,7 +42,7 @@
# int main() { printf("foo.c\n"); }
# </file>
# </scons_example>
-#
+#
# The <file> contents within the <scons_example> tag will get written
# into a temporary directory whenever example output needs to be
# generated. By default, the <file> contents are not inserted into text
@@ -70,49 +50,364 @@
# in which case they will get inserted within a <programlisting> tag.
# This makes it easy to define the example at the appropriate
# point in the text where you intend to show the SConstruct file.
-#
+#
# Note that you should usually give the <scons_example> a "name"
# attribute so that you can refer to the example configuration later to
# run SCons and generate output.
-#
+#
# If you just want to show a file's contents without worry about running
# SCons, there's a shorter <sconstruct> tag:
-#
+#
# <sconstruct>
# env = Environment()
# env.Program('foo')
# </sconstruct>
-#
+#
# This is essentially equivalent to <scons_example><file printme="1">,
# but it's more straightforward.
-#
+#
# SCons output is generated from the following sort of tag:
-#
+#
# <scons_output example="ex1" os="posix">
-# <scons_output_command>scons -Q foo</scons_output_command>
-# <scons_output_command>scons -Q foo</scons_output_command>
+# <scons_output_command suffix="1">scons -Q foo</scons_output_command>
+# <scons_output_command suffix="2">scons -Q foo</scons_output_command>
# </scons_output>
-#
+#
# You tell it which example to use with the "example" attribute, and then
# give it a list of <scons_output_command> tags to execute. You can also
# supply an "os" tag, which specifies the type of operating system this
# example is intended to show; if you omit this, default value is "posix".
-#
-# The generated SGML will show the command line (with the appropriate
+#
+# The generated XML will show the command line (with the appropriate
# command-line prompt for the operating system), execute the command in
# a temporary directory with the example files, capture the standard
# output from SCons, and insert it into the text as appropriate.
# Error output gets passed through to your error output so you
# can see if there are any problems executing the command.
-#
+#
-import optparse
import os
import re
-import sgmllib
import sys
import time
-import glob
+
+import SConsDoc
+from SConsDoc import tf as stf
+
+#
+# The available types for ExampleFile entries
+#
+FT_FILE = 0 # a physical file (=<file>)
+FT_FILEREF = 1 # a reference (=<scons_example_file>)
+
+class ExampleFile:
+ def __init__(self, type_=FT_FILE):
+ self.type = type_
+ self.name = ''
+ self.content = ''
+ self.chmod = ''
+
+ def isFileRef(self):
+ return self.type == FT_FILEREF
+
+class ExampleFolder:
+ def __init__(self):
+ self.name = ''
+ self.chmod = ''
+
+class ExampleCommand:
+ def __init__(self):
+ self.edit = None
+ self.environment = ''
+ self.output = ''
+ self.cmd = ''
+
+class ExampleOutput:
+ def __init__(self):
+ self.name = ''
+ self.tools = ''
+ self.os = 'posix'
+ self.preserve = None
+ self.suffix = ''
+ self.commands = []
+
+class ExampleInfo:
+ def __init__(self):
+ self.name = ''
+ self.files = []
+ self.folders = []
+ self.outputs = []
+
+ def getFileContents(self, fname):
+ for f in self.files:
+ if fname == f.name and not f.isFileRef():
+ return f.content
+
+ return ''
+
+def readExampleInfos(fpath, examples):
+ """ Add the example infos for the file fpath to the
+ global dictionary examples.
+ """
+
+ # Create doctree
+ t = SConsDoc.SConsDocTree()
+ t.parseXmlFile(fpath)
+
+ # Parse scons_examples
+ for e in stf.findAll(t.root, "scons_example", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ n = ''
+ if stf.hasAttribute(e, 'name'):
+ n = stf.getAttribute(e, 'name')
+ if n and n not in examples:
+ i = ExampleInfo()
+ i.name = n
+ examples[n] = i
+
+ # Parse file and directory entries
+ for f in stf.findAll(e, "file", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ fi = ExampleFile()
+ if stf.hasAttribute(f, 'name'):
+ fi.name = stf.getAttribute(f, 'name')
+ if stf.hasAttribute(f, 'chmod'):
+ fi.chmod = stf.getAttribute(f, 'chmod')
+ fi.content = stf.getText(f)
+ examples[n].files.append(fi)
+ for d in stf.findAll(e, "directory", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ di = ExampleFolder()
+ if stf.hasAttribute(d, 'name'):
+ di.name = stf.getAttribute(d, 'name')
+ if stf.hasAttribute(d, 'chmod'):
+ di.chmod = stf.getAttribute(d, 'chmod')
+ examples[n].folders.append(di)
+
+
+ # Parse scons_example_files
+ for f in stf.findAll(t.root, "scons_example_file", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ if stf.hasAttribute(f, 'example'):
+ e = stf.getAttribute(f, 'example')
+ else:
+ continue
+ fi = ExampleFile(FT_FILEREF)
+ if stf.hasAttribute(f, 'name'):
+ fi.name = stf.getAttribute(f, 'name')
+ if stf.hasAttribute(f, 'chmod'):
+ fi.chmod = stf.getAttribute(f, 'chmod')
+ fi.content = stf.getText(f)
+ examples[e].files.append(fi)
+
+
+ # Parse scons_output
+ for o in stf.findAll(t.root, "scons_output", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ if stf.hasAttribute(o, 'example'):
+ n = stf.getAttribute(o, 'example')
+ else:
+ continue
+
+ eout = ExampleOutput()
+ if stf.hasAttribute(o, 'name'):
+ eout.name = stf.getAttribute(o, 'name')
+ if stf.hasAttribute(o, 'tools'):
+ eout.tools = stf.getAttribute(o, 'tools')
+ if stf.hasAttribute(o, 'os'):
+ eout.os = stf.getAttribute(o, 'os')
+ if stf.hasAttribute(o, 'suffix'):
+ eout.suffix = stf.getAttribute(o, 'suffix')
+
+ for c in stf.findAll(o, "scons_output_command", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ oc = ExampleCommand()
+ if stf.hasAttribute(c, 'edit'):
+ oc.edit = stf.getAttribute(c, 'edit')
+ if stf.hasAttribute(c, 'environment'):
+ oc.environment = stf.getAttribute(c, 'environment')
+ if stf.hasAttribute(c, 'output'):
+ oc.output = stf.getAttribute(c, 'output')
+ if stf.hasAttribute(c, 'cmd'):
+ oc.cmd = stf.getAttribute(c, 'cmd')
+ else:
+ oc.cmd = stf.getText(c)
+
+ eout.commands.append(oc)
+
+ examples[n].outputs.append(eout)
+
+def readAllExampleInfos(dpath):
+ """ Scan for XML files in the given directory and
+ collect together all relevant infos (files/folders,
+ output commands) in a map, which gets returned.
+ """
+ examples = {}
+ for path, dirs, files in os.walk(dpath):
+ for f in files:
+ if f.endswith('.xml'):
+ fpath = os.path.join(path, f)
+ if SConsDoc.isSConsXml(fpath):
+ readExampleInfos(fpath, examples)
+
+ return examples
+
+generated_examples = os.path.join('doc', 'generated', 'examples')
+
+def ensureExampleOutputsExist(dpath):
+ """ Scan for XML files in the given directory and
+ ensure that for every example output we have a
+ corresponding output file in the 'generated/examples'
+ folder.
+ """
+ # Ensure that the output folder exists
+ if not os.path.isdir(generated_examples):
+ os.mkdir(generated_examples)
+
+ examples = readAllExampleInfos(dpath)
+ for key, value in examples.iteritems():
+ # Process all scons_output tags
+ for o in value.outputs:
+ cpath = os.path.join(generated_examples,
+ key + '_' + o.suffix + '.xml')
+ if not os.path.isfile(cpath):
+ # Start new XML file
+ s = stf.newXmlTree("screen")
+ stf.setText(s, "NO OUTPUT YET! Run the script to generate/update all examples.")
+ # Write file
+ stf.writeTree(s, cpath)
+
+ # Process all scons_example_file tags
+ for r in value.files:
+ if r.isFileRef():
+ # Get file's content
+ content = value.getFileContents(r.name)
+ fpath = os.path.join(generated_examples,
+ key + '_' + r.name.replace("/", "_"))
+ # Write file
+ f = open(fpath, 'w')
+ f.write("%s\n" % content)
+ f.close()
+
+perc = "%"
+
+def createAllExampleOutputs(dpath):
+ """ Scan for XML files in the given directory and
+ creates all output files for every example in
+ the 'generated/examples' folder.
+ """
+ # Ensure that the output folder exists
+ if not os.path.isdir(generated_examples):
+ os.mkdir(generated_examples)
+
+ examples = readAllExampleInfos(dpath)
+ total = len(examples)
+ idx = 0
+ for key, value in examples.iteritems():
+ # Process all scons_output tags
+ print "%.2f%s (%d/%d) %s" % (float(idx + 1) * 100.0 / float(total),
+ perc, idx + 1, total, key)
+
+ create_scons_output(value)
+ # Process all scons_example_file tags
+ for r in value.files:
+ if r.isFileRef():
+ # Get file's content
+ content = value.getFileContents(r.name)
+ fpath = os.path.join(generated_examples,
+ key + '_' + r.name.replace("/", "_"))
+ # Write file
+ f = open(fpath, 'w')
+ f.write("%s\n" % content)
+ f.close()
+ idx += 1
+
+def collectSConsExampleNames(fpath):
+ """ Return a set() of example names, used in the given file fpath.
+ """
+ names = set()
+ suffixes = {}
+ failed_suffixes = False
+
+ # Create doctree
+ t = SConsDoc.SConsDocTree()
+ t.parseXmlFile(fpath)
+
+ # Parse it
+ for e in stf.findAll(t.root, "scons_example", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ n = ''
+ if stf.hasAttribute(e, 'name'):
+ n = stf.getAttribute(e, 'name')
+ if n:
+ names.add(n)
+ if n not in suffixes:
+ suffixes[n] = []
+ else:
+ print "Error: Example in file '%s' is missing a name!" % fpath
+ failed_suffixes = True
+
+ for o in stf.findAll(t.root, "scons_output", SConsDoc.dbxid,
+ t.xpath_context, t.nsmap):
+ n = ''
+ if stf.hasAttribute(o, 'example'):
+ n = stf.getAttribute(o, 'example')
+ else:
+ print "Error: scons_output in file '%s' is missing an example name!" % fpath
+ failed_suffixes = True
+
+ if n not in suffixes:
+ print "Error: scons_output in file '%s' is referencing non-existent example '%s'!" % (fpath, n)
+ failed_suffixes = True
+ continue
+
+ s = ''
+ if stf.hasAttribute(o, 'suffix'):
+ s = stf.getAttribute(o, 'suffix')
+ else:
+ print "Error: scons_output in file '%s' (example '%s') is missing a suffix!" % (fpath, n)
+ failed_suffixes = True
+
+ if s not in suffixes[n]:
+ suffixes[n].append(s)
+ else:
+ print "Error: scons_output in file '%s' (example '%s') is using a duplicate suffix '%s'!" % (fpath, n, s)
+ failed_suffixes = True
+
+ return names, failed_suffixes
+
+def exampleNamesAreUnique(dpath):
+ """ Scan for XML files in the given directory and
+ check whether the scons_example names are unique.
+ """
+ unique = True
+ allnames = set()
+ for path, dirs, files in os.walk(dpath):
+ for f in files:
+ if f.endswith('.xml'):
+ fpath = os.path.join(path, f)
+ if SConsDoc.isSConsXml(fpath):
+ names, failed_suffixes = collectSConsExampleNames(fpath)
+ if failed_suffixes:
+ unique = False
+ i = allnames.intersection(names)
+ if i:
+ print "Not unique in %s are: %s" % (fpath, ', '.join(i))
+ unique = False
+
+ allnames |= names
+
+ return unique
+
+# ###############################################################
+#
+# In the second half of this module (starting here)
+# we define the variables and functions that are required
+# to actually run the examples, collect their output and
+# write it into the files in doc/generated/examples...
+# which then get included by our UserGuide.
+#
+# ###############################################################
sys.path.append(os.path.join(os.getcwd(), 'QMTest'))
sys.path.append(os.path.join(os.getcwd(), 'build', 'QMTest'))
@@ -129,64 +424,13 @@ os.environ['SCONS_LIB_DIR'] = scons_lib_dir
import TestCmd
-# The regular expression that identifies entity references in the
-# standard sgmllib omits the underscore from the legal characters.
-# Override it with our own regular expression that adds underscore.
-sgmllib.entityref = re.compile('&([a-zA-Z][-_.a-zA-Z0-9]*)[^-_a-zA-Z0-9]')
-
-# Classes for collecting different types of data we're interested in.
-class DataCollector(object):
- """Generic class for collecting data between a start tag and end
- tag. We subclass for various types of tags we care about."""
- def __init__(self):
- self.data = ""
- def afunc(self, data):
- self.data = self.data + data
-
-class Example(DataCollector):
- """An SCons example. This is essentially a list of files that
- will get written to a temporary directory to collect output
- from one or more SCons runs."""
- def __init__(self):
- DataCollector.__init__(self)
- self.files = []
- self.dirs = []
-
-class File(DataCollector):
- """A file, that will get written out to a temporary directory
- for one or more SCons runs."""
- def __init__(self, name):
- DataCollector.__init__(self)
- self.name = name
-
-class Directory(DataCollector):
- """A directory, that will get created in a temporary directory
- for one or more SCons runs."""
- def __init__(self, name):
- DataCollector.__init__(self)
- self.name = name
-
-class Output(DataCollector):
- """Where the command output goes. This is essentially
- a list of commands that will get executed."""
- def __init__(self):
- DataCollector.__init__(self)
- self.commandlist = []
-
-class Command(DataCollector):
- """A tag for where the command output goes. This is essentially
- a list of commands that will get executed."""
- def __init__(self):
- DataCollector.__init__(self)
- self.output = None
-
Prompt = {
'posix' : '% ',
'win32' : 'C:\\>'
}
# The magick SCons hackery that makes this work.
-#
+#
# So that our examples can still use the default SConstruct file, we
# actually feed the following into SCons via stdin and then have it
# SConscript() the SConstruct file. This stdin wrapper creates a set
@@ -194,7 +438,7 @@ Prompt = {
# Surrogates print output like the real tools and behave like them
# without actually having to be on the right platform or have the right
# tool installed.
-#
+#
# The upshot: The wrapper transparently changes the world out from
# under the top-level SConstruct file in an example just so we can get
# the command output.
@@ -432,16 +676,16 @@ def command_scons(args, c, test, dict):
except KeyError:
delete_keys.append(key)
os.environ[key] = val
- test.run(interpreter = sys.executable,
- program = scons_py,
+ test.run(interpreter=sys.executable,
+ program=scons_py,
# We use ToolSurrogates to capture win32 output by "building"
# examples using a fake win32 tool chain. Suppress the
# warnings that come from the new revamped VS support so
# we can build doc on (Linux) systems that don't have
# Visual C installed.
- arguments = '--warn=no-visual-c-missing -f - ' + ' '.join(args),
- chdir = test.workpath('WORK'),
- stdin = Stdin % dict)
+ arguments='--warn=no-visual-c-missing -f - ' + ' '.join(args),
+ chdir=test.workpath('WORK'),
+ stdin=Stdin % dict)
os.environ.update(save_vals)
for key in delete_keys:
del(os.environ[key])
@@ -453,8 +697,8 @@ def command_scons(args, c, test, dict):
if lines:
while lines[-1] == '':
lines = lines[:-1]
- #err = test.stderr()
- #if err:
+ # err = test.stderr()
+ # if err:
# sys.stderr.write(err)
return lines
@@ -475,10 +719,10 @@ def command_touch(args, c, test, dict):
return []
def command_edit(args, c, test, dict):
- try:
- add_string = c.edit[:]
- except AttributeError:
+ if c.edit is None:
add_string = 'void edit(void) { ; }\n'
+ else:
+ add_string = c.edit[:]
if add_string[-1] != '\n':
add_string = add_string + '\n'
for file in args:
@@ -517,218 +761,44 @@ def ExecuteCommand(args, c, t, dict):
func = lambda args, c, t, dict: []
return func(args[1:], c, t, dict)
-class MySGML(sgmllib.SGMLParser):
- """A subclass of the standard Python sgmllib SGML parser.
-
- This extends the standard sgmllib parser to recognize, and do cool
- stuff with, the added tags that describe our SCons examples,
- commands, and other stuff.
- """
- def __init__(self, outfp):
- sgmllib.SGMLParser.__init__(self)
- self.examples = {}
- self.afunclist = []
- self.outfp = outfp
-
- # The first set of methods here essentially implement pass-through
- # handling of most of the stuff in an SGML file. We're really
- # only concerned with the tags specific to SCons example processing,
- # the methods for which get defined below.
-
- def handle_data(self, data):
- try:
- f = self.afunclist[-1]
- except IndexError:
- self.outfp.write(data)
- else:
- f(data)
-
- def handle_comment(self, data):
- self.outfp.write('<!--' + data + '-->')
-
- def handle_decl(self, data):
- self.outfp.write('<!' + data + '>')
-
- def unknown_starttag(self, tag, attrs):
- try:
- f = self.example.afunc
- except AttributeError:
- f = self.outfp.write
- if not attrs:
- f('<' + tag + '>')
- else:
- f('<' + tag)
- for name, value in attrs:
- f(' ' + name + '=' + '"' + value + '"')
- f('>')
-
- def unknown_endtag(self, tag):
- self.outfp.write('</' + tag + '>')
-
- def unknown_entityref(self, ref):
- self.outfp.write('&' + ref + ';')
- def unknown_charref(self, ref):
- self.outfp.write('&#' + ref + ';')
-
- # Here is where the heavy lifting begins. The following methods
- # handle the begin-end tags of our SCons examples.
-
- def for_display(self, contents):
- contents = contents.replace('__ROOT__', '')
- contents = contents.replace('<', '&lt;')
- contents = contents.replace('>', '&gt;')
- return contents
-
- def start_scons_example(self, attrs):
- t = [t for t in attrs if t[0] == 'name']
- if t:
- name = t[0][1]
- try:
- e = self.examples[name]
- except KeyError:
- e = self.examples[name] = Example()
- else:
- e = Example()
- for name, value in attrs:
- setattr(e, name, value)
- self.e = e
- self.afunclist.append(e.afunc)
-
- def end_scons_example(self):
- e = self.e
- files = [f for f in e.files if f.printme]
- if files:
- self.outfp.write('<programlisting>')
- for f in files:
- if f.printme:
- i = len(f.data) - 1
- while f.data[i] == ' ':
- i = i - 1
- output = self.for_display(f.data[:i+1])
- self.outfp.write(output)
- if e.data and e.data[0] == '\n':
- e.data = e.data[1:]
- self.outfp.write(e.data + '</programlisting>')
- delattr(self, 'e')
- self.afunclist = self.afunclist[:-1]
-
- def start_file(self, attrs):
- try:
- e = self.e
- except AttributeError:
- self.error("<file> tag outside of <scons_example>")
- t = [t for t in attrs if t[0] == 'name']
- if not t:
- self.error("no <file> name attribute found")
- try:
- e.prefix
- except AttributeError:
- e.prefix = e.data
- e.data = ""
- f = File(t[0][1])
- f.printme = None
- for name, value in attrs:
- setattr(f, name, value)
- e.files.append(f)
- self.afunclist.append(f.afunc)
-
- def end_file(self):
- self.e.data = ""
- self.afunclist = self.afunclist[:-1]
-
- def start_directory(self, attrs):
- try:
- e = self.e
- except AttributeError:
- self.error("<directory> tag outside of <scons_example>")
- t = [t for t in attrs if t[0] == 'name']
- if not t:
- self.error("no <directory> name attribute found")
- try:
- e.prefix
- except AttributeError:
- e.prefix = e.data
- e.data = ""
- d = Directory(t[0][1])
- for name, value in attrs:
- setattr(d, name, value)
- e.dirs.append(d)
- self.afunclist.append(d.afunc)
-
- def end_directory(self):
- self.e.data = ""
- self.afunclist = self.afunclist[:-1]
-
- def start_scons_example_file(self, attrs):
- t = [t for t in attrs if t[0] == 'example']
- if not t:
- self.error("no <scons_example_file> example attribute found")
- exname = t[0][1]
- try:
- e = self.examples[exname]
- except KeyError:
- self.error("unknown example name '%s'" % exname)
- fattrs = [t for t in attrs if t[0] == 'name']
- if not fattrs:
- self.error("no <scons_example_file> name attribute found")
- fname = fattrs[0][1]
- f = [f for f in e.files if f.name == fname]
- if not f:
- self.error("example '%s' does not have a file named '%s'" % (exname, fname))
- self.f = f[0]
-
- def end_scons_example_file(self):
- f = self.f
- self.outfp.write('<programlisting>')
- self.outfp.write(f.data + '</programlisting>')
- delattr(self, 'f')
-
- def start_scons_output(self, attrs):
- t = [t for t in attrs if t[0] == 'example']
- if not t:
- self.error("no <scons_output> example attribute found")
- exname = t[0][1]
- try:
- e = self.examples[exname]
- except KeyError:
- self.error("unknown example name '%s'" % exname)
- # Default values for an example.
- o = Output()
- o.preserve = None
- o.os = 'posix'
- o.tools = ''
- o.e = e
- # Locally-set.
- for name, value in attrs:
- setattr(o, name, value)
- self.o = o
- self.afunclist.append(o.afunc)
-
- def end_scons_output(self):
- # The real raison d'etre for this script, this is where we
- # actually execute SCons to fetch the output.
- o = self.o
- e = o.e
+def create_scons_output(e):
+ # The real raison d'etre for this script, this is where we
+ # actually execute SCons to fetch the output.
+
+ # Loop over all outputs for the example
+ for o in e.outputs:
+ # Create new test directory
t = TestCmd.TestCmd(workdir='', combine=1)
if o.preserve:
t.preserve()
t.subdir('ROOT', 'WORK')
t.rootpath = t.workpath('ROOT').replace('\\', '\\\\')
-
- for d in e.dirs:
+
+ for d in e.folders:
dir = t.workpath('WORK', d.name)
if not os.path.exists(dir):
os.makedirs(dir)
-
+
for f in e.files:
+ if f.isFileRef():
+ continue
+ #
+ # Left-align file's contents, starting on the first
+ # non-empty line
+ #
+ data = f.content.split('\n')
i = 0
- while f.data[i] == '\n':
+ # Skip empty lines
+ while data[i] == '':
i = i + 1
- lines = f.data[i:].split('\n')
+ lines = data[i:]
i = 0
+ # Scan first line for the number of spaces
+ # that this block is indented
while lines[0][i] == ' ':
i = i + 1
+ # Left-align block
lines = [l[i:] for l in lines]
path = f.name.replace('__ROOT__', t.rootpath)
if not os.path.isabs(path):
@@ -741,197 +811,85 @@ class MySGML(sgmllib.SGMLParser):
path = t.workpath('WORK', path)
t.write(path, content)
if hasattr(f, 'chmod'):
- os.chmod(path, int(f.chmod, 0))
-
- i = len(o.prefix)
- while o.prefix[i-1] != '\n':
- i = i - 1
-
- self.outfp.write('<screen>' + o.prefix[:i])
- p = o.prefix[i:]
-
+ if len(f.chmod):
+ os.chmod(path, int(f.chmod, 0))
+
# Regular expressions for making the doc output consistent,
# regardless of reported addresses or Python version.
-
+
# Massage addresses in object repr strings to a constant.
address_re = re.compile(r' at 0x[0-9a-fA-F]*\>')
-
+
# Massage file names in stack traces (sometimes reported as absolute
# paths) to a consistent relative path.
engine_re = re.compile(r' File ".*/src/engine/SCons/')
-
+
# Python 2.5 changed the stack trace when the module is read
# from standard input from read "... line 7, in ?" to
# "... line 7, in <module>".
file_re = re.compile(r'^( *File ".*", line \d+, in) \?$', re.M)
-
+
# Python 2.6 made UserList a new-style class, which changes the
# AttributeError message generated by our NodeList subclass.
nodelist_re = re.compile(r'(AttributeError:) NodeList instance (has no attribute \S+)')
-
- for c in o.commandlist:
- self.outfp.write(p + Prompt[o.os])
- d = c.data.replace('__ROOT__', '')
- self.outfp.write('<userinput>' + d + '</userinput>\n')
-
- e = c.data.replace('__ROOT__', t.workpath('ROOT'))
- args = e.split()
- lines = ExecuteCommand(args, c, t, {'osname':o.os, 'tools':o.tools})
- content = None
- if c.output:
- content = c.output
- elif lines:
- content = ( '\n' + p).join(lines)
- if content:
- content = address_re.sub(r' at 0x700000&gt;', content)
- content = engine_re.sub(r' File "bootstrap/src/engine/SCons/', content)
- content = file_re.sub(r'\1 <module>', content)
- content = nodelist_re.sub(r"\1 'NodeList' object \2", content)
- content = self.for_display(content)
- self.outfp.write(p + content + '\n')
-
- if o.data[0] == '\n':
- o.data = o.data[1:]
- self.outfp.write(o.data + '</screen>')
- delattr(self, 'o')
- self.afunclist = self.afunclist[:-1]
-
- def start_scons_output_command(self, attrs):
- try:
- o = self.o
- except AttributeError:
- self.error("<scons_output_command> tag outside of <scons_output>")
- try:
- o.prefix
- except AttributeError:
- o.prefix = o.data
- o.data = ""
- c = Command()
- for name, value in attrs:
- setattr(c, name, value)
- o.commandlist.append(c)
- self.afunclist.append(c.afunc)
-
- def end_scons_output_command(self):
- self.o.data = ""
- self.afunclist = self.afunclist[:-1]
-
- def start_sconstruct(self, attrs):
- f = File('')
- self.f = f
- self.afunclist.append(f.afunc)
-
- def end_sconstruct(self):
- f = self.f
- self.outfp.write('<programlisting>')
- output = self.for_display(f.data)
- self.outfp.write(output + '</programlisting>')
- delattr(self, 'f')
- self.afunclist = self.afunclist[:-1]
-
-def process(filename, fout=sys.stdout):
- if filename == '-':
- f = sys.stdin
- else:
- try:
- f = open(filename, 'r')
- except EnvironmentError, e:
- sys.stderr.write('%s: %s\n' % (filename, e))
- return 1
-
- data = f.read()
- if f is not sys.stdin:
- f.close()
-
- if data.startswith('<?xml '):
- first_line, data = data.split('\n', 1)
- fout.write(first_line + '\n')
-
- x = MySGML(fout)
- for c in data:
- x.feed(c)
- x.close()
-
- return 0
-
-def main(argv=None):
- if argv is None:
- argv = sys.argv
-
- parser = optparse.OptionParser()
- parser.add_option('-d', '--diff',
- action='store_true', dest='diff', default=False,
- help='create examples for the .in file and output a unified diff against the related .xml file')
- parser.add_option('-r', '--run',
- action='store_true', dest='run', default=False,
- help='create examples for the .in file, but do not change any files')
- parser.add_option('-s', '--simple_diff',
- action='store_true', dest='simple', default=False,
- help='use a simpler output for the diff mode (no unified diff!)')
- parser.add_option('-u', '--update',
- action='store_true', dest='update', default=False,
- help='create examples for the .in file and update the related .xml file')
-
- opts, args = parser.parse_args(argv[1:])
-
- if opts.diff:
- import StringIO
- import difflib
-
- if not args:
- args = glob.glob('doc/user/*.in')
- for arg in sorted(args):
- diff = None
- s = StringIO.StringIO()
- process(arg,s)
- filename = arg[:-2]+'xml'
- try:
- fxml = open(filename, 'r')
- xmlcontent = fxml.read()
- fxml.close()
- if opts.simple:
- diff = list(difflib.context_diff(xmlcontent.splitlines(),
- s.getvalue().splitlines(),
- fromfile=arg, tofile=filename))
+
+ # Root element for our subtree
+ sroot = stf.newEtreeNode("screen", True)
+ curchild = None
+ content = ""
+ for c in o.commands:
+ content += Prompt[o.os]
+ if curchild is not None:
+ if not c.output:
+ # Append content as tail
+ curchild.tail = content
+ content = "\n"
+ # Add new child for userinput tag
+ curchild = stf.newEtreeNode("userinput")
+ d = c.cmd.replace('__ROOT__', '')
+ curchild.text = d
+ sroot.append(curchild)
else:
- diff = list(difflib.unified_diff(xmlcontent.splitlines(),
- s.getvalue().splitlines(),
- fromfile=arg, tofile=filename,
- lineterm=''))
- except EnvironmentError, e:
- sys.stderr.write('%s: %s\n' % (filename, e))
-
- s.close()
- if diff:
- print "%s:" % arg
- print '\n'.join(diff)
- elif opts.run:
- if not args:
- args = glob.glob('doc/user/*.in')
- for arg in sorted(args):
- print "%s:" % arg
- process(arg)
- elif opts.update:
- if not args:
- args = glob.glob('doc/user/*.in')
- for arg in sorted(args):
- print "%s:" % arg
- filename = arg[:-2]+'xml'
- try:
- fxml = open(filename, 'w')
- process(arg, fxml)
- fxml.close()
- except EnvironmentError, e:
- sys.stderr.write('%s: %s\n' % (filename, e))
- else:
- if not args:
- args = ['-']
-
- for arg in args:
- process(arg)
+ content += c.output + '\n'
+ else:
+ if not c.output:
+ # Add first text to root
+ sroot.text = content
+ content = "\n"
+ # Add new child for userinput tag
+ curchild = stf.newEtreeNode("userinput")
+ d = c.cmd.replace('__ROOT__', '')
+ curchild.text = d
+ sroot.append(curchild)
+ else:
+ content += c.output + '\n'
+ # Execute command and capture its output
+ cmd_work = c.cmd.replace('__ROOT__', t.workpath('ROOT'))
+ args = cmd_work.split()
+ lines = ExecuteCommand(args, c, t, {'osname':o.os, 'tools':o.tools})
+ if not c.output and lines:
+ ncontent = '\n'.join(lines)
+ ncontent = address_re.sub(r' at 0x700000&gt;', ncontent)
+ ncontent = engine_re.sub(r' File "bootstrap/src/engine/SCons/', ncontent)
+ ncontent = file_re.sub(r'\1 <module>', ncontent)
+ ncontent = nodelist_re.sub(r"\1 'NodeList' object \2", ncontent)
+ ncontent = ncontent.replace('__ROOT__', '')
+ content += ncontent + '\n'
+ # Add last piece of content
+ if len(content):
+ if curchild is not None:
+ curchild.tail = content
+ else:
+ sroot.text = content
+
+ # Construct filename
+ fpath = os.path.join(generated_examples,
+ e.name + '_' + o.suffix + '.xml')
+ # Expand Element tree
+ s = stf.decorateWithHeader(stf.convertElementTree(sroot)[0])
+ # Write it to file
+ stf.writeTree(s, fpath)
-if __name__ == "__main__":
- sys.exit(main())
# Local Variables:
# tab-width:4
diff --git a/bin/docs-create-example-outputs.py b/bin/docs-create-example-outputs.py
new file mode 100644
index 0000000..30dc0ee
--- /dev/null
+++ b/bin/docs-create-example-outputs.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+#
+# Searches through the whole doc/user tree and creates
+# all output files for the single examples.
+#
+
+import os
+import sys
+import SConsExamples
+
+if __name__ == "__main__":
+ print "Checking whether all example names are unique..."
+ if SConsExamples.exampleNamesAreUnique(os.path.join('doc','user')):
+ print "OK"
+ else:
+ print "Not all example names and suffixes are unique! Please correct the errors listed above and try again."
+ sys.exit(0)
+
+ SConsExamples.createAllExampleOutputs(os.path.join('doc','user'))
diff --git a/bin/docs-update-generated.py b/bin/docs-update-generated.py
new file mode 100644
index 0000000..66b22c0
--- /dev/null
+++ b/bin/docs-update-generated.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+#
+# Searches through the whole source tree and updates
+# the generated *.gen/*.mod files in the docs folder, keeping all
+# documentation for the tools, builders and functions...
+# as well as the entity declarations for them.
+# Uses scons-proc.py under the hood...
+#
+
+import os
+import SConsDoc
+
+# Directory where all generated files are stored
+gen_folder = os.path.join('doc','generated')
+
+def argpair(key):
+ """ Return the argument pair *.gen,*.mod for the given key. """
+ arg = '%s,%s' % (os.path.join(gen_folder,'%s.gen' % key),
+ os.path.join(gen_folder,'%s.mod' % key))
+
+ return arg
+
+def generate_all():
+ """ Scan for XML files in the src directory and call scons-proc.py
+ to generate the *.gen/*.mod files from it.
+ """
+ flist = []
+ for path, dirs, files in os.walk('src'):
+ for f in files:
+ if f.endswith('.xml'):
+ fpath = os.path.join(path, f)
+ if SConsDoc.isSConsXml(fpath):
+ flist.append(fpath)
+
+ if flist:
+ # Does the destination folder exist
+ if not os.path.isdir(gen_folder):
+ try:
+ os.makedirs(gen_folder)
+ except:
+ print "Couldn't create destination folder %s! Exiting..." % gen_folder
+ return
+ # Call scons-proc.py
+ os.system('python %s -b %s -f %s -t %s -v %s %s' %
+ (os.path.join('bin','scons-proc.py'),
+ argpair('builders'), argpair('functions'),
+ argpair('tools'), argpair('variables'), ' '.join(flist)))
+
+
+if __name__ == "__main__":
+ generate_all()
diff --git a/bin/docs-validate.py b/bin/docs-validate.py
new file mode 100644
index 0000000..c445c3f
--- /dev/null
+++ b/bin/docs-validate.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+#
+# Searches through the whole source tree and validates all
+# documentation files against our own XSD in docs/xsd.
+#
+
+import sys,os
+import SConsDoc
+
+if __name__ == "__main__":
+ if len(sys.argv)>1:
+ if SConsDoc.validate_all_xml((sys.argv[1],)):
+ print "OK"
+ else:
+ print "Validation failed! Please correct the errors above and try again."
+ else:
+ if SConsDoc.validate_all_xml(['src',
+ os.path.join('doc','design'),
+ os.path.join('doc','developer'),
+ os.path.join('doc','man'),
+ os.path.join('doc','python10'),
+ os.path.join('doc','reference'),
+ os.path.join('doc','user')
+ ]):
+ print "OK"
+ else:
+ print "Validation failed! Please correct the errors above and try again."
diff --git a/bin/import-test.py b/bin/import-test.py
index a565deb..ccec096 100644
--- a/bin/import-test.py
+++ b/bin/import-test.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# tree2test.py - turn a directory tree into TestSCons code
#
@@ -25,7 +25,7 @@
# """ triple-quotes will need to have their contents edited by hand.
#
-__revision__ = "bin/import-test.py 2013/03/03 09:48:35 garyo"
+__revision__ = "bin/import-test.py 2014/03/02 14:18:15 garyo"
import os.path
import sys
diff --git a/bin/linecount.py b/bin/linecount.py
index 8d1fd7c..9088529 100644
--- a/bin/linecount.py
+++ b/bin/linecount.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Count statistics about SCons test and source files. This must be run
# against a fully-populated tree (for example, one that's been freshly
@@ -23,7 +23,7 @@
# interesting one for most purposes.
from __future__ import division
-__revision__ = "bin/linecount.py 2013/03/03 09:48:35 garyo"
+__revision__ = "bin/linecount.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/bin/restore.sh b/bin/restore.sh
index b2b10b1..df296a4 100644
--- a/bin/restore.sh
+++ b/bin/restore.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env sh
#
-# Simple hack script to restore __revision__, __COPYRIGHT_, 2.3.0
+# Simple hack script to restore __revision__, __COPYRIGHT_, 2.3.1
# and other similar variables to what gets checked in to source. This
# comes in handy when people send in diffs based on the released source.
#
@@ -22,9 +22,9 @@ header() {
for i in `find $DIRS -name '*.py'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
w
-/^__revision__ = /s/= .*/= "bin/restore.sh 2013/03/03 09:48:35 garyo"/p
+/^__revision__ = /s/= .*/= "bin/restore.sh 2014/03/02 14:18:15 garyo"/p
w
q
EOF
@@ -33,9 +33,9 @@ done
for i in `find $DIRS -name 'scons.bat'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
w
-/^@REM src\/script\/scons.bat/s/@REM .* knight/@REM bin/restore.sh 2013/03/03 09:48:35 garyo/p
+/^@REM src\/script\/scons.bat/s/@REM .* knight/@REM bin/restore.sh 2014/03/02 14:18:15 garyo/p
w
q
EOF
@@ -44,13 +44,13 @@ done
for i in `find $DIRS -name '__init__.py' -o -name 'scons.py' -o -name 'sconsign.py'`; do
header $i
ed $i <<EOF
-/^__version__ = /s/= .*/= "2.3.0"/p
+/^__version__ = /s/= .*/= "2.3.1"/p
w
/^__build__ = /s/= .*/= ""/p
w
-/^__buildsys__ = /s/= .*/= "reepicheep"/p
+/^__buildsys__ = /s/= .*/= "lubuntu"/p
w
-/^__date__ = /s/= .*/= "2013/03/03 09:48:35"/p
+/^__date__ = /s/= .*/= "2014/03/02 14:18:15"/p
w
/^__developer__ = /s/= .*/= "garyo"/p
w
@@ -61,7 +61,7 @@ done
for i in `find $DIRS -name 'setup.py'`; do
header $i
ed $i <<EOF
-/^ *version = /s/= .*/= "2.3.0",/p
+/^ *version = /s/= .*/= "2.3.1",/p
w
q
EOF
@@ -70,11 +70,11 @@ done
for i in `find $DIRS -name '*.txt'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
w
-/# [^ ]* 0.96.[CD][0-9]* [0-9\/]* [0-9:]* knight$/s/.*/# bin/restore.sh 2013/03/03 09:48:35 garyo/p
+/# [^ ]* 0.96.[CD][0-9]* [0-9\/]* [0-9:]* knight$/s/.*/# bin/restore.sh 2014/03/02 14:18:15 garyo/p
w
-/Version [0-9][0-9]*\.[0-9][0-9]*/s//Version 2.3.0/p
+/Version [0-9][0-9]*\.[0-9][0-9]*/s//Version 2.3.1/p
w
q
EOF
@@ -83,7 +83,7 @@ done
for i in `find $DIRS -name '*.xml'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
w
q
EOF
diff --git a/bin/scons-proc.py b/bin/scons-proc.py
index 1f537c7..9567db8 100644
--- a/bin/scons-proc.py
+++ b/bin/scons-proc.py
@@ -5,17 +5,15 @@
# This script creates formatted lists of the Builders, functions, Tools
# or construction variables documented in the specified XML files.
#
-# Dependening on the options, the lists are output in either
+# Depending on the options, the lists are output in either
# DocBook-formatted generated XML files containing the summary text
-# and/or .mod files contining the ENTITY definitions for each item,
-# or in man-page-formatted output.
+# and/or .mod files containing the ENTITY definitions for each item.
#
import getopt
import os
import re
import string
import sys
-import xml.sax
try:
from io import StringIO # usable as of 2.6; takes unicode only
except ImportError:
@@ -23,32 +21,31 @@ except ImportError:
exec('from cStringIO import StringIO')
import SConsDoc
+from SConsDoc import tf as stf
base_sys_path = [os.getcwd() + '/build/test-tar-gz/lib/scons'] + sys.path
helpstr = """\
-Usage: scons-proc.py [--man|--xml]
- [-b file(s)] [-f file(s)] [-t file(s)] [-v file(s)]
+Usage: scons-proc.py [-b file(s)] [-f file(s)] [-t file(s)] [-v file(s)]
[infile ...]
Options:
-b file(s) dump builder information to the specified file(s)
-f file(s) dump function information to the specified file(s)
-t file(s) dump tool information to the specified file(s)
-v file(s) dump variable information to the specified file(s)
- --man print info in man page format, each -[btv] argument
- is a single file name
- --xml (default) print info in SML format, each -[btv] argument
- is a pair of comma-separated .gen,.mod file names
+
+ Regard that each -[btv] argument is a pair of
+ comma-separated .gen,.mod file names.
+
"""
opts, args = getopt.getopt(sys.argv[1:],
"b:f:ht:v:",
['builders=', 'help',
- 'man', 'xml', 'tools=', 'variables='])
+ 'tools=', 'variables='])
buildersfiles = None
functionsfiles = None
-output_type = '--xml'
toolsfiles = None
variablesfiles = None
@@ -60,55 +57,29 @@ for o, a in opts:
elif o in ['-h', '--help']:
sys.stdout.write(helpstr)
sys.exit(0)
- elif o in ['--man', '--xml']:
- output_type = o
elif o in ['-t', '--tools']:
toolsfiles = a
elif o in ['-v', '--variables']:
variablesfiles = a
-h = SConsDoc.SConsDocHandler()
-saxparser = xml.sax.make_parser()
-saxparser.setContentHandler(h)
-saxparser.setErrorHandler(h)
-
-xml_preamble = """\
-<?xml version="1.0"?>
-<scons_doc>
-"""
-
-xml_postamble = """\
-</scons_doc>
-"""
-
-for f in args:
- _, ext = os.path.splitext(f)
- if ext == '.py':
- dir, _ = os.path.split(f)
- if dir:
- sys.path = [dir] + base_sys_path
- module = SConsDoc.importfile(f)
- h.set_file_info(f, len(xml_preamble.split('\n')))
- try:
- content = module.__scons_doc__
- except AttributeError:
- content = None
+def parse_docs(args, include_entities=True):
+ h = SConsDoc.SConsDocHandler()
+ for f in args:
+ if include_entities:
+ try:
+ h.parseXmlFile(f)
+ except:
+ sys.stderr.write("error in %s\n" % f)
+ raise
else:
- del module.__scons_doc__
- else:
- h.set_file_info(f, len(xml_preamble.split('\n')))
- content = open(f).read()
- if content:
- content = content.replace('&', '&amp;')
- # Strip newlines after comments so they don't turn into
- # spurious paragraph separators.
- content = content.replace('-->\n', '-->')
- input = xml_preamble + content + xml_postamble
- try:
- saxparser.parse(StringIO(unicode(input)))
- except:
- sys.stderr.write("error in %s\n" % f)
- raise
+ content = open(f).read()
+ if content:
+ try:
+ h.parseContent(content, include_entities)
+ except:
+ sys.stderr.write("error in %s\n" % f)
+ raise
+ return h
Warning = """\
<!--
@@ -137,176 +108,113 @@ class SCons_XML(object):
self.values = entries
for k, v in kw.items():
setattr(self, k, v)
+
def fopen(self, name):
if name == '-':
return sys.stdout
return open(name, 'w')
-
-class SCons_XML_to_XML(SCons_XML):
+
def write(self, files):
gen, mod = files.split(',')
- g.write_gen(gen)
- g.write_mod(mod)
+ self.write_gen(gen)
+ self.write_mod(mod)
+
def write_gen(self, filename):
if not filename:
return
- f = self.fopen(filename)
+ # Try to split off .gen filename
+ if filename.count(','):
+ fl = filename.split(',')
+ filename = fl[0]
+
+ # Start new XML file
+ root = stf.newXmlTree("variablelist")
+
for v in self.values:
- f.write('\n<varlistentry id="%s%s">\n' %
- (v.prefix, v.idfunc()))
- f.write('%s\n' % v.xml_term())
- f.write('<listitem>\n')
- for chunk in v.summary.body:
- f.write(str(chunk))
- if v.sets:
+
+ ve = stf.newNode("varlistentry")
+ stf.setAttribute(ve, 'id', '%s%s' % (v.prefix, v.idfunc()))
+ for t in v.xml_terms():
+ stf.appendNode(ve, t)
+ vl = stf.newNode("listitem")
+ added = False
+ if v.summary is not None:
+ for s in v.summary:
+ added = True
+ stf.appendNode(vl, stf.copyNode(s))
+
+ if len(v.sets):
+ added = True
+ vp = stf.newNode("para")
s = ['&cv-link-%s;' % x for x in v.sets]
- f.write('<para>\n')
- f.write('Sets: ' + ', '.join(s) + '.\n')
- f.write('</para>\n')
- if v.uses:
+ stf.setText(vp, 'Sets: ' + ', '.join(s) + '.')
+ stf.appendNode(vl, vp)
+ if len(v.uses):
+ added = True
+ vp = stf.newNode("para")
u = ['&cv-link-%s;' % x for x in v.uses]
- f.write('<para>\n')
- f.write('Uses: ' + ', '.join(u) + '.\n')
- f.write('</para>\n')
- f.write('</listitem>\n')
- f.write('</varlistentry>\n')
+ stf.setText(vp, 'Uses: ' + ', '.join(u) + '.')
+ stf.appendNode(vl, vp)
+
+ # Still nothing added to this list item?
+ if not added:
+ # Append an empty para
+ vp = stf.newNode("para")
+ stf.appendNode(vl, vp)
+
+ stf.appendNode(ve, vl)
+ stf.appendNode(root, ve)
+
+ # Write file
+ f = self.fopen(filename)
+ stf.writeGenTree(root, f)
+
def write_mod(self, filename):
- description = self.values[0].description
+ try:
+ description = self.values[0].description
+ except:
+ description = ""
if not filename:
return
+ # Try to split off .mod filename
+ if filename.count(','):
+ fl = filename.split(',')
+ filename = fl[1]
f = self.fopen(filename)
f.write(Warning)
f.write('\n')
f.write(Regular_Entities_Header % description)
f.write('\n')
for v in self.values:
- f.write('<!ENTITY %s%s "<%s>%s</%s>">\n' %
+ f.write('<!ENTITY %s%s "<%s xmlns=\'%s\'>%s</%s>">\n' %
(v.prefix, v.idfunc(),
- v.tag, v.entityfunc(), v.tag))
+ v.tag, SConsDoc.dbxsd, v.entityfunc(), v.tag))
if self.env_signatures:
f.write('\n')
for v in self.values:
- f.write('<!ENTITY %senv-%s "<%s>env.%s</%s>">\n' %
+ f.write('<!ENTITY %senv-%s "<%s xmlns=\'%s\'>env.%s</%s>">\n' %
(v.prefix, v.idfunc(),
- v.tag, v.entityfunc(), v.tag))
+ v.tag, SConsDoc.dbxsd, v.entityfunc(), v.tag))
f.write('\n')
f.write(Warning)
f.write('\n')
f.write(Link_Entities_Header % description)
f.write('\n')
for v in self.values:
- f.write('<!ENTITY %slink-%s \'<link linkend="%s%s"><%s>%s</%s></link>\'>\n' %
+ f.write('<!ENTITY %slink-%s "<link linkend=\'%s%s\' xmlns=\'%s\'><%s>%s</%s></link>">\n' %
(v.prefix, v.idfunc(),
- v.prefix, v.idfunc(),
+ v.prefix, v.idfunc(), SConsDoc.dbxsd,
v.tag, v.entityfunc(), v.tag))
if self.env_signatures:
f.write('\n')
for v in self.values:
- f.write('<!ENTITY %slink-env-%s \'<link linkend="%s%s"><%s>env.%s</%s></link>\'>\n' %
+ f.write('<!ENTITY %slink-env-%s "<link linkend=\'%s%s\' xmlns=\'%s\'><%s>env.%s</%s></link>">\n' %
(v.prefix, v.idfunc(),
- v.prefix, v.idfunc(),
+ v.prefix, v.idfunc(), SConsDoc.dbxsd,
v.tag, v.entityfunc(), v.tag))
f.write('\n')
f.write(Warning)
-class SCons_XML_to_man(SCons_XML):
- def write(self, filename):
- """
- Converts the contents of the specified filename from DocBook XML
- to man page macros.
-
- This does not do an intelligent job. In particular, it doesn't
- actually use the structured nature of XML to handle arbitrary
- input. Instead, we're using text replacement and regular
- expression substitutions to convert observed patterns into the
- macros we want. To the extent that we're relatively consistent
- with our input .xml, this works, but could easily break if handed
- input that doesn't match these specific expectations.
- """
- if not filename:
- return
- f = self.fopen(filename)
- chunks = []
- for v in self.values:
- chunks.extend(v.man_separator())
- chunks.extend(v.initial_man_chunks())
- chunks.extend(list(map(str, v.summary.body)))
-
- body = ''.join(chunks)
-
- # Simple transformation of examples into our defined macros for those.
- body = body.replace('<programlisting>', '.ES')
- body = body.replace('</programlisting>', '.EE')
-
- # Replace groupings of <para> tags and surrounding newlines
- # with single blank lines.
- body = body.replace('\n</para>\n<para>\n', '\n\n')
- body = body.replace('<para>\n', '')
- body = body.replace('<para>', '\n')
- body = body.replace('</para>\n', '')
-
- # Convert <variablelist> and its child tags.
- body = body.replace('<variablelist>\n', '.RS 10\n')
- # Handling <varlistentry> needs to be rationalized and made
- # consistent. Right now, the <term> values map to arbitrary,
- # ad-hoc idioms in the current man page.
- body = re.compile(r'<varlistentry>\n<term><literal>([^<]*)</literal></term>\n<listitem>\n').sub(r'.TP 6\n.B \1\n', body)
- body = re.compile(r'<varlistentry>\n<term><parameter>([^<]*)</parameter></term>\n<listitem>\n').sub(r'.IP \1\n', body)
- body = re.compile(r'<varlistentry>\n<term>([^<]*)</term>\n<listitem>\n').sub(r'.HP 6\n.B \1\n', body)
- body = body.replace('</listitem>\n', '')
- body = body.replace('</varlistentry>\n', '')
- body = body.replace('</variablelist>\n', '.RE\n')
-
- # Get rid of unnecessary .IP macros, and unnecessary blank lines
- # in front of .IP macros.
- body = re.sub(r'\.EE\n\n+(?!\.IP)', '.EE\n.IP\n', body)
- body = body.replace('\n.EE\n.IP\n.ES\n', '\n.EE\n\n.ES\n')
- body = body.replace('\n.IP\n\'\\"', '\n\n\'\\"')
-
- # Convert various named entities and tagged names to nroff
- # in-line font conversions (\fB, \fI, \fP).
- body = re.sub('&(scons|SConstruct|SConscript|Dir|jar|Make|lambda);',
- r'\\fB\1\\fP', body)
- body = re.sub('&(TARGET|TARGETS|SOURCE|SOURCES);', r'\\fB$\1\\fP', body)
- body = re.sub('&(target|source);', r'\\fI\1\\fP', body)
- body = re.sub('&b(-link)?-([^;]*);', r'\\fB\2\\fP()', body)
- body = re.sub('&cv(-link)?-([^;]*);', r'\\fB$\2\\fP', body)
- body = re.sub('&f(-link)?-env-([^;]*);', r'\\fBenv.\2\\fP()', body)
- body = re.sub('&f(-link)?-([^;]*);', r'\\fB\2\\fP()', body)
- body = re.sub(r'<(application|command|envar|filename|function|literal|option)>([^<]*)</\1>',
- r'\\fB\2\\fP', body)
- body = re.sub(r'<(classname|emphasis|varname)>([^<]*)</\1>',
- r'\\fI\2\\fP', body)
-
- # Convert groupings of font conversions (\fB, \fI, \fP) to
- # man page .B, .BR, .I, .IR, .R, .RB and .RI macros.
- body = re.compile(r'^\\f([BI])([^\\]* [^\\]*)\\fP\s*$', re.M).sub(r'.\1 "\2"', body)
- body = re.compile(r'^\\f([BI])(.*)\\fP\s*$', re.M).sub(r'.\1 \2', body)
- body = re.compile(r'^\\f([BI])(.*)\\fP(\S+)$', re.M).sub(r'.\1R \2 \3', body)
- body = re.compile(r'^(\.B)( .*)\\fP(.*)\\fB(.*)$', re.M).sub(r'\1R\2 \3 \4', body)
- body = re.compile(r'^(\.B)R?( .*)\\fP(.*)\\fI(.*)$', re.M).sub(r'\1I\2\3 \4', body)
- body = re.compile(r'^(\.I)( .*)\\fP\\fB(.*)\\fP\\fI(.*)$', re.M).sub(r'\1R\2 \3 \4', body)
- body = re.compile(r'^(\S+)\\f([BI])(.*)\\fP$', re.M).sub(r'.R\2 \1 \3', body)
- body = re.compile(r'^(\S+)\\f([BI])(.*)\\fP([^\s\\]+)$', re.M).sub(r'.R\2 \1 \3 \4', body)
- body = re.compile(r'^(\.R[BI].*[\S])\s+$;', re.M).sub(r'\1', body)
-
- # Convert &lt; and &gt; entities to literal < and > characters.
- body = body.replace('&lt;', '<')
- body = body.replace('&gt;', '>')
-
- # Backslashes. Oh joy.
- body = re.sub(r'\\(?=[^f])', r'\\\\', body)
- body = re.compile("^'\\\\\\\\", re.M).sub("'\\\\", body)
- body = re.compile(r'^\.([BI]R?) ([^"]\S*\\\\\S+[^"])$', re.M).sub(r'.\1 "\2"', body)
-
- # Put backslashes in front of various hyphens that need
- # to be long em-dashes.
- body = re.compile(r'^\.([BI]R?) --', re.M).sub(r'.\1 \-\-', body)
- body = re.compile(r'^\.([BI]R?) -', re.M).sub(r'.\1 \-', body)
- body = re.compile(r'\\f([BI])-', re.M).sub(r'\\f\1\-', body)
-
- f.write(body)
-
class Proxy(object):
def __init__(self, subject):
"""Wrap an object as a Proxy object"""
@@ -329,156 +237,132 @@ class Proxy(object):
class SConsThing(Proxy):
def idfunc(self):
return self.name
- def xml_term(self):
- return '<term>%s</term>' % self.name
+
+ def xml_terms(self):
+ e = stf.newNode("term")
+ stf.setText(e, self.name)
+ return [e]
class Builder(SConsThing):
description = 'builder'
prefix = 'b-'
tag = 'function'
- def xml_term(self):
- return ('<term><synopsis><%s>%s()</%s></synopsis>\n<synopsis><%s>env.%s()</%s></synopsis></term>' %
- (self.tag, self.name, self.tag, self.tag, self.name, self.tag))
+
+ def xml_terms(self):
+ ta = stf.newNode("term")
+ b = stf.newNode(self.tag)
+ stf.setText(b, self.name+'()')
+ stf.appendNode(ta, b)
+ tb = stf.newNode("term")
+ b = stf.newNode(self.tag)
+ stf.setText(b, 'env.'+self.name+'()')
+ stf.appendNode(tb, b)
+ return [ta, tb]
+
def entityfunc(self):
return self.name
- def man_separator(self):
- return ['\n', "'\\" + '"'*69 + '\n']
- def initial_man_chunks(self):
- return [ '.IP %s()\n.IP env.%s()\n' % (self.name, self.name) ]
class Function(SConsThing):
description = 'function'
prefix = 'f-'
tag = 'function'
- def args_to_xml(self, arg):
- s = ''.join(arg.body).strip()
- result = []
- for m in re.findall('([a-zA-Z/_]+=?|[^a-zA-Z/_]+)', s):
- if m[0] in string.letters:
- if m[-1] == '=':
- result.append('<literal>%s</literal>=' % m[:-1])
- else:
- result.append('<varname>%s</varname>' % m)
- else:
- result.append(m)
- return ''.join(result)
- def xml_term(self):
- try:
+
+ def xml_terms(self):
+ if self.arguments is None:
+ a = stf.newNode("arguments")
+ stf.setText(a, '()')
+ arguments = [a]
+ else:
arguments = self.arguments
- except AttributeError:
- arguments = ['()']
- result = ['<term>']
+ tlist = []
for arg in arguments:
- try:
- signature = arg.signature
- except AttributeError:
- signature = "both"
- s = self.args_to_xml(arg)
+ signature = 'both'
+ if stf.hasAttribute(arg, 'signature'):
+ signature = stf.getAttribute(arg, 'signature')
+ s = stf.getText(arg).strip()
if signature in ('both', 'global'):
- result.append('<synopsis>%s%s</synopsis>\n' % (self.name, s)) #<br>
+ t = stf.newNode("term")
+ syn = stf.newNode("literal")
+ stf.setText(syn, '%s%s' % (self.name, s))
+ stf.appendNode(t, syn)
+ tlist.append(t)
if signature in ('both', 'env'):
- result.append('<synopsis><varname>env</varname>.%s%s</synopsis>' % (self.name, s))
- result.append('</term>')
- return ''.join(result)
+ t = stf.newNode("term")
+ syn = stf.newNode("literal")
+ stf.setText(syn, 'env.%s%s' % (self.name, s))
+ stf.appendNode(t, syn)
+ tlist.append(t)
+
+ if not tlist:
+ tlist.append(stf.newNode("term"))
+ return tlist
+
def entityfunc(self):
return self.name
- def man_separator(self):
- return ['\n', "'\\" + '"'*69 + '\n']
- def args_to_man(self, arg):
- """Converts the contents of an <arguments> tag, which
- specifies a function's calling signature, into a series
- of tokens that alternate between literal tokens
- (to be displayed in roman or bold face) and variable
- names (to be displayed in italics).
-
- This is complicated by the presence of Python "keyword=var"
- arguments, where "keyword=" should be displayed literally,
- and "var" should be displayed in italics. We do this by
- detecting the keyword= var portion and appending it to the
- previous string, if any.
- """
- s = ''.join(arg.body).strip()
- result = []
- for m in re.findall('([a-zA-Z/_]+=?|[^a-zA-Z/_]+)', s):
- if m[-1] == '=' and result:
- if result[-1][-1] == '"':
- result[-1] = result[-1][:-1] + m + '"'
- else:
- result[-1] += m
- else:
- if ' ' in m:
- m = '"%s"' % m
- result.append(m)
- return ' '.join(result)
- def initial_man_chunks(self):
- try:
- arguments = self.arguments
- except AttributeError:
- arguments = ['()']
- result = []
- for arg in arguments:
- try:
- signature = arg.signature
- except AttributeError:
- signature = "both"
- s = self.args_to_man(arg)
- if signature in ('both', 'global'):
- result.append('.TP\n.RI %s%s\n' % (self.name, s))
- if signature in ('both', 'env'):
- result.append('.TP\n.IR env .%s%s\n' % (self.name, s))
- return result
class Tool(SConsThing):
description = 'tool'
prefix = 't-'
tag = 'literal'
+
def idfunc(self):
return self.name.replace('+', 'X')
+
def entityfunc(self):
return self.name
- def man_separator(self):
- return ['\n']
- def initial_man_chunks(self):
- return ['.IP %s\n' % self.name]
class Variable(SConsThing):
description = 'construction variable'
prefix = 'cv-'
tag = 'envar'
+
def entityfunc(self):
return '$' + self.name
- def man_separator(self):
- return ['\n']
- def initial_man_chunks(self):
- return ['.IP %s\n' % self.name]
-if output_type == '--man':
- processor_class = SCons_XML_to_man
-elif output_type == '--xml':
- processor_class = SCons_XML_to_XML
+def write_output_files(h, buildersfiles, functionsfiles,
+ toolsfiles, variablesfiles, write_func):
+ if buildersfiles:
+ g = processor_class([ Builder(b) for b in sorted(h.builders.values()) ],
+ env_signatures=True)
+ write_func(g, buildersfiles)
+
+ if functionsfiles:
+ g = processor_class([ Function(b) for b in sorted(h.functions.values()) ],
+ env_signatures=True)
+ write_func(g, functionsfiles)
+
+ if toolsfiles:
+ g = processor_class([ Tool(t) for t in sorted(h.tools.values()) ],
+ env_signatures=False)
+ write_func(g, toolsfiles)
+
+ if variablesfiles:
+ g = processor_class([ Variable(v) for v in sorted(h.cvars.values()) ],
+ env_signatures=False)
+ write_func(g, variablesfiles)
+
+processor_class = SCons_XML
+
+# Step 1: Creating entity files for builders, functions,...
+print "Generating entity files..."
+h = parse_docs(args, False)
+write_output_files(h, buildersfiles, functionsfiles, toolsfiles,
+ variablesfiles, SCons_XML.write_mod)
+
+# Step 2: Validating all input files
+print "Validating files against SCons XSD..."
+if SConsDoc.validate_all_xml(['src']):
+ print "OK"
else:
- sys.stderr.write("Unknown output type '%s'\n" % output_type)
- sys.exit(1)
-
-if buildersfiles:
- g = processor_class([ Builder(b) for b in sorted(h.builders.values()) ],
- env_signatures=True)
- g.write(buildersfiles)
-
-if functionsfiles:
- g = processor_class([ Function(b) for b in sorted(h.functions.values()) ],
- env_signatures=True)
- g.write(functionsfiles)
-
-if toolsfiles:
- g = processor_class([ Tool(t) for t in sorted(h.tools.values()) ],
- env_signatures=False)
- g.write(toolsfiles)
-
-if variablesfiles:
- g = processor_class([ Variable(v) for v in sorted(h.cvars.values()) ],
- env_signatures=False)
- g.write(variablesfiles)
+ print "Validation failed! Please correct the errors above and try again."
+
+# Step 3: Creating actual documentation snippets, using the
+# fully resolved and updated entities from the *.mod files.
+print "Updating documentation for builders, tools and functions..."
+h = parse_docs(args, True)
+write_output_files(h, buildersfiles, functionsfiles, toolsfiles,
+ variablesfiles, SCons_XML.write)
+print "Done"
# Local Variables:
# tab-width:4
diff --git a/bin/scons_dev_master.py b/bin/scons_dev_master.py
index 9372df4..3c41ac0 100644
--- a/bin/scons_dev_master.py
+++ b/bin/scons_dev_master.py
@@ -25,19 +25,14 @@ PYTHON_PACKAGES = [
]
BUILDING_PACKAGES = [
- 'docbook',
- 'docbook-dsssl',
- 'docbook-utils',
- 'docbook-xml',
- 'groff-base',
- 'jade',
- 'jadetex',
- 'man2html',
+ 'python-libxml2',
+ 'python-libxslt1',
+ 'fop',
+ 'python-dev',
'python-epydoc',
'rpm',
- 'sp',
'tar',
-
+
# additional packages that Bill Deegan's web page suggests
#'docbook-to-man',
#'docbook-xsl',
diff --git a/bin/update-release-info.py b/bin/update-release-info.py
index 1b3015a..b8c50bd 100644
--- a/bin/update-release-info.py
+++ b/bin/update-release-info.py
@@ -36,7 +36,7 @@ In 'post' mode, files are prepared for the next release cycle:
src/Announce.txt.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -57,7 +57,7 @@ In 'post' mode, files are prepared for the next release cycle:
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "bin/update-release-info.py 2013/03/03 09:48:35 garyo"
+__revision__ = "bin/update-release-info.py 2014/03/02 14:18:15 garyo"
import os
import sys
@@ -333,17 +333,18 @@ t.replace_assign('deprecated_python_version', str(deprecated_version))
# Update doc/user/main.{in,xml}
docyears = ', '.join(map(str, iter(range(2004, release_date[0] + 1))))
-t = UpdateFile(os.path.join('doc', 'user', 'main.in'))
-if DEBUG: t.file = '/tmp/main.in'
-## TODO debug these
-#t.sub('<pubdate>[^<]*</pubdate>', '<pubdate>' + docyears + '</pubdate>')
-#t.sub('<year>[^<]*</year>', '<year>' + docyears + '</year>')
+if os.path.exists(os.path.join('doc', 'user', 'main.in')):
+ # this is no longer used as of Dec 2013
+ t = UpdateFile(os.path.join('doc', 'user', 'main.in'))
+ if DEBUG: t.file = '/tmp/main.in'
+ ## TODO debug these
+ #t.sub('<pubdate>[^<]*</pubdate>', '<pubdate>' + docyears + '</pubdate>')
+ #t.sub('<year>[^<]*</year>', '<year>' + docyears + '</year>')
t = UpdateFile(os.path.join('doc', 'user', 'main.xml'))
if DEBUG: t.file = '/tmp/main.xml'
-## TODO debug these
-#t.sub('<pubdate>[^<]*</pubdate>', '<pubdate>' + docyears + '</pubdate>')
-#t.sub('<year>[^<]*</year>', '<year>' + docyears + '</year>')
+t.sub('<pubdate>[^<]*</pubdate>', '<pubdate>' + docyears + '</pubdate>')
+t.sub('<year>[^<]*</year>', '<year>' + docyears + '</year>')
# Write out the last update
diff --git a/bootstrap.py b/bootstrap.py
new file mode 100755
index 0000000..7f1397d
--- /dev/null
+++ b/bootstrap.py
@@ -0,0 +1,222 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+import os
+import os.path
+import sys
+import glob
+import subprocess
+
+__doc__ = """bootstrap.py
+
+Execute SCons from this source tree. It copies Python scripts and modules
+from src/ subdirectory into a subdirectory named "bootstrap/" (by default),
+and executes SCons from there with the supplied command-line arguments.
+
+This is a minimal build of SCons to bootstrap the full build of all the
+packages, as specified in our local SConstruct file.
+
+Some options are specific to this bootstrap.py script and are *not* passed
+on to the SCons script. All of these begin with the string "bootstrap_":
+
+ --bootstrap_dir=DIR
+
+ Sets the name of the directory into which the SCons files will
+ be copied. The default is "bootstrap" in the local subdirectory.
+
+ --bootstrap_force
+
+ Forces a copy of all necessary files. By default, the
+ bootstrap.py script only updates the bootstrap copy if the
+ content of the source copy is different.
+
+ --bootstrap_src=DIR
+
+ Searches for the SCons files relative to the specified DIR,
+ then relative to the directory in which this bootstrap.py
+ script is found.
+
+ --bootstrap_update
+
+ Only updates the bootstrap subdirectory, and then exits.
+
+In addition to the above, the bootstrap.py script understands
+the following SCons options:
+
+ -C, --directory
+
+ Changes to the specified directory before invoking SCons.
+ Because we change directory right away to the specified directory,
+ the SCons script itself doesn't need to, so this option gets
+ "eaten" by the bootstrap.py script.
+"""
+
+def parseManifestLines(basedir, lines):
+ """ Scans the single lines of a MANIFEST file,
+ and returns the list of source files.
+ Has basic support for recursive globs '**',
+ filename wildcards of the form '*.xml' and
+ comment lines, starting with a '#'.
+ """
+ sources = []
+ basewd = os.path.abspath(basedir)
+ for l in lines:
+ if l.startswith('#'):
+ # Skip comments
+ continue
+ l = l.rstrip('\n')
+ if l.endswith('**'):
+ # Glob all files recursively
+ globwd = os.path.dirname(os.path.join(basewd, l))
+ for path, dirs, files in os.walk(globwd):
+ for f in files:
+ fpath = os.path.join(globwd, path, f)
+ sources.append(os.path.relpath(fpath, basewd))
+ elif '*' in l:
+ # Glob file pattern
+ files = glob.glob(os.path.join(basewd, l))
+ for f in files:
+ sources.append(os.path.relpath(f, basewd))
+ else:
+ sources.append(l)
+
+ return sources
+
+def main():
+ script_dir = os.path.abspath(os.path.dirname(__file__))
+
+ bootstrap_dir = os.path.join(script_dir, 'bootstrap')
+
+ pass_through_args = []
+ update_only = None
+
+ requires_an_argument = 'bootstrap.py: %s requires an argument\n'
+
+ search = [script_dir]
+
+ def find(file, search=search):
+ for dir in search:
+ f = os.path.join(dir, file)
+ if os.path.exists(f):
+ return os.path.normpath(f)
+ sys.stderr.write("could not find `%s' in search path:\n" % file)
+ sys.stderr.write("\t" + "\n\t".join(search) + "\n")
+ sys.exit(2)
+
+ def must_copy(dst, src):
+ if not os.path.exists(dst):
+ return 1
+ return open(dst, 'rb').read() != open(src, 'rb').read()
+
+ # Note: We don't use the getopt module to process the command-line
+ # arguments because we'd have to teach it about all of the SCons options.
+
+ command_line_args = sys.argv[1:]
+
+ while command_line_args:
+ arg = command_line_args.pop(0)
+
+ if arg == '--bootstrap_dir':
+ try:
+ bootstrap_dir = command_line_args.pop(0)
+ except IndexError:
+ sys.stderr.write(requires_an_argument % arg)
+ sys.exit(1)
+ elif arg[:16] == '--bootstrap_dir=':
+ bootstrap_dir = arg[16:]
+
+ elif arg == '--bootstrap_force':
+ def must_copy(dst, src):
+ return 1
+
+ elif arg == '--bootstrap_src':
+ try:
+ search.insert(0, command_line_args.pop(0))
+ except IndexError:
+ sys.stderr.write(requires_an_argument % arg)
+ sys.exit(1)
+ elif arg[:16] == '--bootstrap_src=':
+ search.insert(0, arg[16:])
+
+ elif arg == '--bootstrap_update':
+ update_only = 1
+
+ elif arg in ('-C', '--directory'):
+ try:
+ dir = command_line_args.pop(0)
+ except IndexError:
+ sys.stderr.write(requires_an_argument % arg)
+ sys.exit(1)
+ else:
+ os.chdir(dir)
+ elif arg[:2] == '-C':
+ os.chdir(arg[2:])
+ elif arg[:12] == '--directory=':
+ os.chdir(arg[12:])
+
+ else:
+ pass_through_args.append(arg)
+
+
+ scons_py = os.path.join('src', 'script', 'scons.py')
+ src_engine = os.path.join('src', 'engine')
+ MANIFEST_in = find(os.path.join(src_engine, 'MANIFEST.in'))
+
+ files = [ scons_py ] + [os.path.join(src_engine, x)
+ for x in parseManifestLines(os.path.join(script_dir, src_engine), open(MANIFEST_in).readlines())]
+
+ for file in files:
+ src = find(file)
+ dst = os.path.join(bootstrap_dir, file)
+ if must_copy(dst, src):
+ dir = os.path.split(dst)[0]
+ if not os.path.isdir(dir):
+ os.makedirs(dir)
+ try: os.unlink(dst)
+ except: pass
+ open(dst, 'wb').write( open(src, 'rb').read() )
+
+ if update_only:
+ sys.exit(0)
+
+ args = [
+ sys.executable,
+ os.path.join(bootstrap_dir, scons_py)
+ ] + pass_through_args
+
+ sys.stdout.write(" ".join(args) + '\n')
+ sys.stdout.flush()
+
+ os.environ['SCONS_LIB_DIR'] = os.path.join(bootstrap_dir, src_engine)
+
+ sys.exit(subprocess.Popen(args, env=os.environ).wait())
+
+if __name__ == "__main__":
+ main()
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/doc/SConscript b/doc/SConscript
index 04f467c..6b9d726 100644
--- a/doc/SConscript
+++ b/doc/SConscript
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,112 +26,37 @@
import os.path
import re
+import sys
+import glob
+import SConsDoc
+import SConsExamples
+import bootstrap
-Import('build_dir', 'env', 'whereis')
+Import('build_dir', 'env', 'whereis', 'revaction')
env = env.Clone()
build = os.path.join(build_dir, 'doc')
+fop = whereis('fop')
+xep = whereis('xep')
+epydoc_cli = whereis('epydoc')
+gs = whereis('gs')
+
#
#
#
dist_doc_tar_gz = '$DISTDIR/scons-doc-${VERSION}.tar.gz'
-#
-# We'll only try to build text files (for some documents)
-# if lynx is available to do the dump.
-#
-fig2dev = whereis('fig2dev')
-epydoc_cli = whereis('epydoc')
-groff = whereis('groff')
-lynx = whereis('lynx')
-man2html = whereis('man2html')
-jade_original = whereis('jade')
-jade = whereis('openjade') or jade_original
-jadetex = whereis('jadetex')
-pdfjadetex = whereis('pdfjadetex')
-jw = whereis('jw')
-tidy = whereis('tidy')
-
tar_deps = []
tar_list = []
-entity_re = re.compile(r'<!entity\s+(?:%\s+)?(?:\S+)\s+SYSTEM\s+"([^"]*)">', re.I)
-format_re = re.compile(r'<(?:graphic|imagedata)\s+fileref="([^"]*)"(?:\s+format="([^"]*)")?')
-
-#
-# Find internal dependencies in .xml files:
-#
-# <!entity bground SYSTEM "bground.xml">
-# <graphic fileref="file.jpg">
-# <imagedata fileref="file.jpg">
-#
-# This only finds one per line, and assumes that anything
-# defined as a SYSTEM entity is, in fact, a file included
-# somewhere in the document.
-#
-def scanxml(node, env, target):
- includes = []
-
- contents = node.get_text_contents()
-
- includes.extend(entity_re.findall(contents))
-
- matches = format_re.findall(contents)
- for m in matches:
- file, format = m
- if format and file[-len(format):] != format:
- file = file + '.' + format
- if not os.path.isabs(file):
- a = []
- f = file
- while f:
- f, tail = os.path.split(f)
- if tail == 'doc':
- break
- a = [tail] + a
- file = os.path.join(*a)
- includes.append(file)
-
- return includes
+orig_env = env
+env = orig_env.Clone(SCONS_PY = File('#src/script/scons.py').rfile())
-s = Scanner(name = 'xml', function = scanxml, skeys = ['.xml', '.mod'])
-orig_env = env
-env = orig_env.Clone(SCANNERS = [s],
- SCONS_DOC_PY = File('#bin/scons-doc.py').rfile(),
- SCONS_PROC_PY = File('#bin/scons-proc.py').rfile())
-
-# Fetch the list of files in the build engine that contain
-# SCons documentation XML for processing.
-def chop(s): return s[:-1]
-
-# If we ever read doc from __scons_doc__ strings in *.py files again,
-# here's how it's done:
-#manifest_in = File('#src/engine/MANIFEST.in').rstr()
-#manifest_xml_in = File('#src/engine/MANIFEST-xml.in').rstr()
-#scons_doc_files = map(chop, open(manifest_in).readlines() +\
-# open(manifest_xml_in).readlines())
-#scons_doc_files = map(lambda x: '#src/engine/'+x, scons_doc_files)
-#manifest_in = File('#src/engine/MANIFEST.in').rstr()
-
-manifest_xml_in = File('#src/engine/MANIFEST-xml.in').rstr()
-scons_doc_files = list(map(chop, open(manifest_xml_in).readlines()))
-scons_doc_files = [File('#src/engine/'+x).rstr() for x in scons_doc_files]
-
-if not jw:
- print "doc: jw not found, skipping building User Guide."
-else:
- #
- # Always create a version.xml file containing the version information
- # for this run. Ignore it for dependency purposes so we don't
- # rebuild all the docs every time just because the date changes.
- #
- date, ver, rev = env.Dictionary('DATE', 'VERSION', 'REVISION')
- version_xml = File(os.path.join(build, "version.xml"))
- #version_xml = File("version.xml")
- verfile = str(version_xml)
+def writeVersionXml(verfile, date, ver, rev):
+ """ Helper function: Write a version.xml file. """
try:
os.unlink(verfile)
except OSError:
@@ -140,7 +65,7 @@ else:
try:
os.makedirs(dir)
except OSError:
- pass # okay if the directory already exists
+ pass # okay if the directory already exists
open(verfile, "w").write("""<!--
THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
-->
@@ -149,321 +74,243 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY buildrevision "%s">
""" % (date, ver, rev))
- builders_gen = os.path.join(build, 'user', 'builders.gen')
- builders_mod = os.path.join(build, 'user', 'builders.mod')
- functions_gen = os.path.join(build, 'user', 'functions.gen')
- functions_mod = os.path.join(build, 'user', 'functions.mod')
- tools_gen = os.path.join(build, 'user', 'tools.gen')
- tools_mod = os.path.join(build, 'user', 'tools.mod')
- variables_gen = os.path.join(build, 'user', 'variables.gen')
- variables_mod = os.path.join(build, 'user', 'variables.mod')
-
- # We put $( - $) around $SOURCES in the command line below because
- # the path names will change when a given input file is found in
- # a repository one run and locally the next, and we don't want
- # to rebuild documentation just because it's found in one location
- # vs. the other. The *.gen and *.mod targets will still be dependent
- # on the list of the files themselves.
- doc_output_files = [builders_gen, builders_mod,
- functions_gen, functions_mod,
- tools_gen, tools_mod,
- variables_gen, variables_mod]
- b = env.Command(doc_output_files,
- scons_doc_files,
- "$PYTHON $SCONS_PROC_PY --xml -b ${TARGETS[0]},${TARGETS[1]} -f ${TARGETS[2]},${TARGETS[3]} -t ${TARGETS[4]},${TARGETS[5]} -v ${TARGETS[6]},${TARGETS[7]} $( $SOURCES $)")
- env.Depends(b, "$SCONS_PROC_PY")
-
- env.Local(b)
+#
+# Check whether we have all tools installed for
+# building the documentation.
+#
+skip_doc = False
+try:
+ import libxml2
+except:
+ try:
+ import lxml
+ except:
+ print "doc: Neither libxml2 nor lxml Python bindings found!"
+ print " Please install one of the packages python-libxml2 or python-lxml."
+ skip_doc = True
+
+if not fop and not xep:
+ print "doc: No PDF renderer found (fop|xep)!"
+ skip_doc = True
+
+if skip_doc:
+ print "doc: ...skipping building User Guide."
+else:
+ #
+ # Always create a version.xml file containing the version information
+ # for this run. Ignore it for dependency purposes so we don't
+ # rebuild all the docs every time just because the date changes.
+ #
+ date, ver, rev = env.Dictionary('DATE', 'VERSION', 'REVISION')
+ version_xml = File(os.path.join(build, "version.xml"))
+ writeVersionXml(str(version_xml), date, ver, rev)
+
+ if not env.GetOption('clean'):
+ #
+ # Ensure that all XML files are valid against our XSD, and
+ # that all example names and example output suffixes are unique
+ #
+ print "Validating files against SCons XSD..."
+ if SConsDoc.validate_all_xml(['src'], xsdfile='xsd/scons.xsd'):
+ print "OK"
+ else:
+ print "Validation failed! Please correct the errors above and try again."
+ sys.exit(0)
+
+ print "Checking whether all example names are unique..."
+ if SConsExamples.exampleNamesAreUnique(os.path.join('doc','user')):
+ print "OK"
+ else:
+ print "Not all example names and suffixes are unique! Please correct the errors listed above and try again."
+ sys.exit(0)
+
+ #
+ # Copy generated files (.gen/.mod/.xml) to the build folder
+ #
+ env.Execute(Mkdir(os.path.join(build, 'generated')))
+ env.Execute(Mkdir(os.path.join(build, 'generated', 'examples')))
+ for g in glob.glob(os.path.join('generated', '*.gen')):
+ env.Execute(Copy(os.path.join(build, 'generated'), g))
+ for g in glob.glob(os.path.join('generated', '*.mod')):
+ env.Execute(Copy(os.path.join(build, 'generated'), g))
+ for g in glob.glob(os.path.join('generated', 'examples', '*')):
+ env.Execute(Copy(os.path.join(build, 'generated', 'examples'), g))
+
+ #
+ # Copy XSLT files (.xslt) to the build folder
+ #
+ env.Execute(Mkdir(os.path.join(build, 'xslt')))
+ for g in glob.glob(os.path.join('xslt','*.*')):
+ env.Execute(Copy(os.path.join(build, 'xslt'), g))
+
+ #
+ # Copy Docbook stylesheets and Tool to the build folder
+ #
+ dbtoolpath = ['src', 'engine', 'SCons', 'Tool', 'docbook']
+ env.Execute(Mkdir(os.path.join(build_dir, *dbtoolpath)))
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbtoolpath + ['utils']))))
+ env.Execute(Copy(os.path.join(build_dir, *dbtoolpath),
+ os.path.join('..', *(dbtoolpath + ['__init__.py']))))
+ env.Execute(Copy(os.path.join(build_dir, *(dbtoolpath + ['utils'])),
+ os.path.join('..', *(dbtoolpath + ['utils', 'xmldepend.xsl']))))
+ dbpath = dbtoolpath + ['docbook-xsl-1.76.1']
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['common']))))
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['lib']))))
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['html']))))
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['fo']))))
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['manpages']))))
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['epub']))))
+ env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['xhtml-1_1']))))
+ env.Execute(Copy(os.path.join(build_dir, *dbpath),
+ os.path.join('..', *(dbpath + ['VERSION']))))
+ for g in glob.glob(os.path.join('..', *(dbpath + ['common', '*.*']))):
+ env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['common'])), g))
+ for g in glob.glob(os.path.join('..', *(dbpath + ['lib', '*.*']))):
+ env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['lib'])), g))
+ for g in glob.glob(os.path.join('..', *(dbpath + ['html', '*.*']))):
+ env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['html'])), g))
+ for g in glob.glob(os.path.join('..', *(dbpath + ['fo', '*.*']))):
+ env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['fo'])), g))
+ for g in glob.glob(os.path.join('..', *(dbpath + ['manpages', '*.*']))):
+ env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['manpages'])), g))
+ for g in glob.glob(os.path.join('..', *(dbpath + ['epub', '*.xsl']))):
+ env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['epub'])), g))
+ for g in glob.glob(os.path.join('..', *(dbpath + ['xhtml-1_1', '*.*']))):
+ env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['xhtml-1_1'])), g))
+
+ #
+ # Copy additional Tools (gs, zip)
+ #
+ toolpath = ['src', 'engine', 'SCons', 'Tool']
+ env.Execute(Copy(os.path.join(build_dir, *toolpath),
+ os.path.join('..', *(toolpath + ['gs.py']))))
+ env.Execute(Copy(os.path.join(build_dir, *toolpath),
+ os.path.join('..', *(toolpath + ['zip.py']))))
+
#
# Each document will live in its own subdirectory. List them here
- # as hash keys, with a hash of the info to control its build.
+ # by their subfolder names. Note, how the specifiers for each subdir
+ # have nothing to do with which formats get created...but which
+ # of the outputs get installed to the build folder and added to
+ # the different source and binary packages in the end.
#
- docs = {
- 'design' : {
- 'htmlindex' : 'book1.html',
- 'ps' : 1,
- 'pdf' : 1,
- 'text' : 0,
- },
- # This doesn't build on all systems, and the document is old
- # enough that there's reallyno need to build it every time any
- # more, so just comment it out for now.
- #'python10' : {
- # 'htmlindex' : 't1.html',
- # 'html' : 1,
- # 'ps' : 1,
- # 'pdf' : 0,
- # 'text' : 0,
- # 'graphics' : [
- # 'arch.fig',
- # 'builder.fig',
- # 'job-task.fig',
- # 'node.fig',
- # 'scanner.fig',
- # 'sig.fig'
- # ],
- #},
- 'reference' : {
- 'htmlindex' : 'book1.html',
- 'html' : 1,
- 'ps' : 1,
- 'pdf' : 1,
- 'text' : 0,
- },
- # For whenever (if ever?) we start putting developer guide
- # information in a printable document instead of the wiki.
- #'developer' : {
- # 'htmlindex' : 'book1.html',
- # 'html' : 1,
- # 'ps' : 1,
- # 'pdf' : 1,
- # 'text' : 0,
- #},
- 'user' : {
- 'htmlindex' : 'book1.html',
- 'html' : 1,
- 'ps' : 1,
- 'pdf' : 1,
- 'text' : 1,
- 'graphics' : [
- 'SCons-win32-install-1.jpg',
- 'SCons-win32-install-2.jpg',
- 'SCons-win32-install-3.jpg',
- 'SCons-win32-install-4.jpg',
- ],
- 'scons-doc' : 1,
- },
- }
-
+ docs = {'design' : ['chtml','pdf'],
+ #'python10' : ['chtml','html','pdf'],
+ 'reference' : ['chtml','html','pdf'],
+ #'developer' : ['chtml','html','pdf'],
+ 'user' : ['chtml','html','pdf','epub'],
+ 'man' : ['man','epub']
+ }
+ # The names of the target files for the MAN pages
+ man_page_list = ['scons.1','scons-time.1','sconsign.1']
+
#
# We have to tell SCons to scan the top-level XML files which
# get included by the document XML files in the subdirectories.
#
manifest = File('MANIFEST').rstr()
- src_files = [x[:-1] for x in open(manifest).readlines()]
+ src_files = bootstrap.parseManifestLines('.', open(manifest).readlines())
for s in src_files:
+ if not s:
+ continue
base, ext = os.path.splitext(s)
if ext in ['.fig', '.jpg']:
- orig_env.Install(build, s)
+ env.Execute(Copy(build, s))
else:
- orig_env.SCons_revision(os.path.join(build, s), s)
- Local(os.path.join(build, s))
+ revaction([env.File(os.path.join(build, s))],
+ [env.File(s)], env)
#
- # For each document, build the document itself in HTML, Postscript,
+ # For each document, build the document itself in HTML,
# and PDF formats.
#
- for doc in docs.keys():
+ for doc in docs:
+
+ #
+ # Read MANIFEST file and copy the listed files to the
+ # build directory, while branding them with the
+ # SCons copyright and the current revision number...
+ #
+ env.Execute(Mkdir(os.path.join(build, doc)))
+ env.Execute(Mkdir(os.path.join(build, doc, 'titlepage')))
manifest = File(os.path.join(doc, 'MANIFEST')).rstr()
- src_files = [x[:-1] for x in open(manifest).readlines()]
- build_doc = docs[doc].get('scons-doc') and int(ARGUMENTS.get('BUILDDOC', 0))
+ src_files = bootstrap.parseManifestLines(doc, open(manifest).readlines())
for s in src_files:
+ if not s:
+ continue
doc_s = os.path.join(doc, s)
build_s = os.path.join(build, doc, s)
base, ext = os.path.splitext(doc_s)
- if ext in ['.fig', '.jpg']:
- orig_env.InstallAs(build_s, doc_s)
+ if ext in ['.fig', '.jpg', '.svg']:
+ env.Execute(Copy(build_s, doc_s))
else:
- if build_doc and ext == '.xml':
- env.Command(doc_s,
- base + '.in',
- "$PYTHON $SCONS_DOC_PY $SOURCE > $TARGET")
- orig_env.SCons_revision(build_s, doc_s)
- Local(build_s)
-
- main = os.path.join(build, doc, 'main.xml')
- out = 'main.out'
-
- # Hard-coding the scons-src path is a bit of a hack. This can
- # be reworked when a better solution presents itself.
- scons_src_main = os.path.join(build_dir, 'scons-src', 'doc', main)
- env.Ignore(scons_src_main, version_xml)
-
+ revaction([env.File(build_s)],
+ [env.File(doc_s)], env)
+
+ #
+ # Call SCons in each local doc folder directly, such that
+ # we can Glob for the created *.html files afterwards to
+ # get the dependencies for the install targets right.
+ #
+ cleanopt = ''
+ if env.GetOption('clean'):
+ cleanopt = ' -c'
+ cmd = env.subst("cd %s && $PYTHON ${SCONS_PY.abspath}" % os.path.join(build, doc))+cleanopt
+ os.system(cmd)
+
+ # Collect the output files for this subfolder
htmldir = os.path.join(build, 'HTML', 'scons-%s' % doc)
- htmlindex = os.path.join(htmldir, docs[doc]['htmlindex'])
+ htmlindex = os.path.join(htmldir, 'index.html')
html = os.path.join(build, 'HTML', 'scons-%s.html' % doc)
- ps = os.path.join(build, 'PS', 'scons-%s.ps' % doc)
pdf = os.path.join(build, 'PDF', 'scons-%s.pdf' % doc)
- text = os.path.join(build, 'TEXT', 'scons-%s.txt' % doc)
-
- if docs[doc].get('html') and jade:
- def copy_index_html(target, source, env):
- # Older versions of DocBook|jw|jade|whatever would
- # create a book1.html file, while newer versions create
- # an index.html file (logically enough). The scons.org
- # web site links expect book1.html, so we're going to
- # leave the target as is, and run this post-processing
- # action function to check that the target really did
- # get created, and if it didn't, copy it from index.html.
- t = str(target[0])
- if not os.path.exists(t):
- i = os.path.join(os.path.split(t)[0], 'index.html')
- open(t, 'w').write(open(i, 'r').read())
- return None
-
- cmds = [
- Delete("${TARGET.dir}/*.html"),
- "jw -b html -o ${TARGET.dir} $SOURCES",
- ]
- if tidy:
- cmds.append("tidy -m -q $TARGET || true")
- cmds.append(Action(copy_index_html))
- env.Command(htmlindex, File(main), cmds)
+ epub = os.path.join(build, 'EPUB', 'scons-%s.epub' % doc)
+ if 'chtml' in docs[doc]:
+ env.Install(htmldir, Glob(os.path.join(build, doc,'scons-%s' % doc, '*.html')))
+ tar_deps.extend([htmlindex])
+ tar_list.extend([htmldir])
Local(htmlindex)
+ env.Ignore(htmlindex, version_xml)
- cmds = [
- Delete("${TARGET.dir}/main.html"),
- "jw -u -b html -o ${TARGET.dir} $SOURCES",
- Move("$TARGET", "${TARGET.dir}/main.html"),
- ]
- if tidy:
- cmds.append("tidy -m -q $TARGET || true")
- env.Command(html, File(main), cmds)
+ if 'html' in docs[doc]:
+ env.InstallAs(html, os.path.join(build, doc,'index.html'))
+ tar_deps.extend([html])
+ tar_list.extend([html])
Local(html)
-
- env.Ignore([html, htmlindex], version_xml)
-
- tar_deps.extend([html, htmlindex])
- tar_list.extend([html, htmldir])
-
- for g in docs[doc].get('graphics', []):
- base, ext = os.path.splitext(g)
- if ext == '.fig':
- jpg = base + '.jpg'
- htmldir_jpg = os.path.join(htmldir, jpg)
- if fig2dev:
- fig = os.path.join(build, doc, g)
- env.Command(htmldir_jpg, fig,
- "%s -L jpeg -q 100 $SOURCES $TARGET" % fig2dev)
- else:
- env.InstallAs(htmldir_jpg, jpg)
- env.Depends(html, htmldir_jpg)
- Local(htmldir_jpg)
- else:
- src = os.path.join(build, doc, g)
- Local(env.Install(htmldir, src))
-
- if docs[doc].get('ps') and jadetex and jade_original:
- env.Command(ps, main, [
- Delete("${TARGET.dir}/%s" % out),
- "jw -b ps -o ${TARGET.dir} -p %s $SOURCES" % jade_original,
- "mv ${TARGET.dir}/main.ps $TARGET",
- Delete("${TARGET.dir}/%s" % out),
- ])
- Local(ps)
-
- env.Ignore(ps, version_xml)
-
- tar_deps.append(ps)
- tar_list.append(ps)
-
- for g in docs[doc].get('graphics', []):
- base, ext = os.path.splitext(g)
- if ext == '.fig':
- eps = base + '.eps'
- build_eps = os.path.join(build, 'PS', eps)
- if fig2dev:
- fig = os.path.join(build, doc, g)
- env.Command(build_eps, fig, "%s -L eps $SOURCES $TARGET" % fig2dev)
- else:
- env.InstallAs(build_eps, eps)
- env.Depends(ps, build_eps)
- Local(build_eps)
- else:
- src = os.path.join(build, doc, g)
- Local(env.Install(htmldir, src))
-
- if docs[doc].get('pdf') and pdfjadetex and jade_original:
- env.Command(pdf, main, [
- Delete("${TARGET.dir}/%s" % out),
- "jw -b pdf -o ${TARGET.dir} -p %s $SOURCES" % jade_original,
- "mv ${TARGET.dir}/main.pdf $TARGET",
- Delete("${TARGET.dir}/out"),
- ])
+ env.Ignore(html, version_xml)
+
+ if 'pdf' in docs[doc]:
+ env.InstallAs(pdf, os.path.join(build, doc,'scons-%s.pdf' % doc))
Local(pdf)
-
env.Ignore(pdf, version_xml)
tar_deps.append(pdf)
tar_list.append(pdf)
- if docs[doc].get('text') and jade and lynx:
- env.Command(text, html, "lynx -dump ${SOURCE.abspath} > $TARGET")
- Local(text)
-
- env.Ignore(text, version_xml)
-
- tar_deps.append(text)
- tar_list.append(text)
-
-#
-# Man page(s), in good ol' troff format.
-#
-man_page_list = ['scons.1', 'sconsign.1', 'scons-time.1']
+ if 'epub' in docs[doc] and gs:
+ env.InstallAs(epub, os.path.join(build, doc,'scons-%s.epub' % doc))
+ Local(epub)
+ env.Ignore(epub, version_xml)
+
+ tar_deps.append(epub)
+ tar_list.append(epub)
+
+ if 'man' in docs[doc]:
+ #
+ # Man page(s)
+ #
+ for m in man_page_list:
+ man, _1 = os.path.splitext(m)
+
+ pdf = os.path.join(build, 'PDF', '%s-man.pdf' % man)
+ html = os.path.join(build, 'HTML' , '%s-man.html' % man)
+
+ env.InstallAs(pdf, os.path.join(build, 'man','scons-%s.pdf' % man))
+ env.InstallAs(html, os.path.join(build, 'man','scons-%s.html' % man))
+
+ tar_deps.extend([pdf, html])
+ tar_list.extend([pdf, html])
-for m in man_page_list:
- x = orig_env.SCons_revision(os.path.join(build, 'man', m),
- os.path.join('man', m))
-
-man_i_files = ['builders.man', 'functions.man', 'tools.man', 'variables.man']
-
-man_intermediate_files = [os.path.join(build, 'man', x) for x in man_i_files]
-
-cmd = "$PYTHON $SCONS_PROC_PY --man -b ${TARGETS[0]} -f ${TARGETS[1]} -t ${TARGETS[2]} -v ${TARGETS[3]} $( $SOURCES $)"
-man_intermediate_files = env.Command(man_intermediate_files,
- scons_doc_files,
- cmd)
-env.Depends(man_intermediate_files, "$SCONS_PROC_PY")
-Local(man_intermediate_files)
-
-for man_1 in man_page_list:
- man, _1 = os.path.splitext(man_1)
-
- man_1 = os.path.join(build, 'man', man_1)
-
- if groff:
- ps = os.path.join(build, 'PS', '%s-man.ps' % man)
- text = os.path.join(build, 'TEXT', '%s-man.txt' % man)
-
- b = env.Command(ps, man_1, "( cd ${SOURCES.dir} && groff -man -Tps ${SOURCES.file} ) > $TARGET")
- Local(ps)
- env.Depends(b, man_intermediate_files)
-
- b = env.Command(text, man_1, "( cd ${SOURCES.dir} && groff -man -Tascii ${SOURCES.file} ) > $TARGET")
- Local(text)
- env.Depends(b, man_intermediate_files)
-
- tar_deps.extend([ps, text])
- tar_list.extend([ps, text])
- else:
- print "doc: WARNING: no groff, skipping text and PostScript versions of man pages"
-
- if man2html:
- html = os.path.join(build, 'HTML' , '%s-man.html' % man)
-
- def strip_to_first_html_tag(target, source, env):
- t = str(target[0])
- contents = open(t).read()
- contents = contents[contents.find('<HTML>'):]
- open(t, 'w').write(contents)
- return 0
-
- cmds = [
- "( cd %s/man && cp %s .. )" % (build, ' '.join(man_i_files)),
- "( cd ${SOURCE.dir} && man2html ${SOURCE.file} ) > $TARGET",
- Action(strip_to_first_html_tag),
- ]
- if tidy:
- cmds.append("tidy -m -q $TARGET || true")
- b = env.Command(html, man_1, cmds)
- Local(html)
- env.Depends(b, man_intermediate_files)
-
- tar_deps.append(html)
- tar_list.append(html)
- else:
- print "doc: WARNING: no man2html, skipping HTML versions of man pages"
if not epydoc_cli:
try:
@@ -543,7 +390,7 @@ else:
# the SConstruct file.
e = os.path.join('#src', 'engine')
manifest_in = File(os.path.join(e, 'MANIFEST.in')).rstr()
- sources = [x[:-1] for x in open(manifest_in).readlines()]
+ sources = bootstrap.parseManifestLines(e, open(manifest_in).readlines())
sources = [x for x in sources if x.find('Platform') == -1]
sources = [x for x in sources if x.find('Tool') == -1]
# XXX
diff --git a/doc/design/MANIFEST b/doc/design/MANIFEST
index 33ab8f0..0168e11 100644
--- a/doc/design/MANIFEST
+++ b/doc/design/MANIFEST
@@ -1,8 +1,9 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
acks.xml
bground.xml
copyright.xml
-engine.fig
-engine.jpg
engine.xml
goals.xml
install.xml
@@ -11,4 +12,14 @@ issues.xml
main.xml
native.xml
overview.xml
-scons.mod
+summary.xml
+engine.fig
+engine.jpg
+engine.svg
+*.xsl
+scons.css
+SConstruct
+titlepage/bricks.jpg
+titlepage/mapnik_final_colors.svg
+titlepage/SCons_path.svg
+titlepage/SConsBuildBricks_path.svg
diff --git a/doc/design/SConstruct b/doc/design/SConstruct
new file mode 100644
index 0000000..1cafcb1
--- /dev/null
+++ b/doc/design/SConstruct
@@ -0,0 +1,49 @@
+#
+# SConstruct file for building SCons documentation.
+#
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+
+env = Environment(ENV={'PATH' : os.environ['PATH']},
+ tools=['docbook'],
+ toolpath=['../../src/engine/SCons/Tool'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_HTMLCHUNKED='chtml.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+
+has_pdf = False
+if (env.WhereIs('fop') or
+ env.WhereIs('xep')):
+ has_pdf = True
+
+#
+# Create document
+#
+env.DocbookXInclude('design_xi.xml', 'main.xml')
+env.DocbookXslt('design.xml', 'design_xi.xml',
+ xsl='../xslt/to_docbook.xslt')
+env.DocbookHtmlChunked('index.html','design.xml', base_dir='scons-design/')
+if has_pdf:
+ env.DocbookPdf('scons-design.pdf','design.xml')
diff --git a/doc/design/acks.xml b/doc/design/acks.xml
index b1a8a58..94a249f 100644
--- a/doc/design/acks.xml
+++ b/doc/design/acks.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-acks"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Acknowledgements</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -177,3 +189,5 @@
</varlistentry>
</variablelist>
+
+</chapter>
diff --git a/doc/design/bground.xml b/doc/design/bground.xml
index c404e86..327d041 100644
--- a/doc/design/bground.xml
+++ b/doc/design/bground.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-background"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Background</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -84,3 +96,5 @@
it would be a teensy bit easier to type.
</para>
+
+</chapter>
diff --git a/doc/design/chtml.xsl b/doc/design/chtml.xsl
new file mode 100644
index 0000000..25fc37e
--- /dev/null
+++ b/doc/design/chtml.xsl
@@ -0,0 +1,56 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl"/>
+
+<xsl:param name="base.dir" select="'scons-design/'"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/copyright.xml b/doc/design/copyright.xml
index d73906e..df3d544 100644
--- a/doc/design/copyright.xml
+++ b/doc/design/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -37,3 +47,5 @@
</para>
</blockquote>
+
+</legalnotice>
diff --git a/doc/design/engine.svg b/doc/design/engine.svg
new file mode 100644
index 0000000..2ed9bcc
--- /dev/null
+++ b/doc/design/engine.svg
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="8.5in"
+ height="7.5999999in"
+ viewBox="1188 1638 10224 9174"
+ id="svg3034">
+ <metadata
+ id="metadata3230">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs3228" />
+ <g
+ id="g3036"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="2100"
+ y="8700"
+ id="rect3038"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1950"
+ height="600"
+ rx="0"
+ x="7050"
+ y="6900"
+ id="rect3040"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1950"
+ height="600"
+ rx="0"
+ x="9450"
+ y="6900"
+ id="rect3042"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="1200"
+ y="4200"
+ id="rect3044"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="2400"
+ y="3300"
+ id="rect3046"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="8700"
+ y="1650"
+ id="rect3048"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="1500"
+ y="1650"
+ id="rect3050"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="7800"
+ y="8700"
+ id="rect3052"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="1500"
+ y="10200"
+ id="rect3054"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="3300"
+ y="10200"
+ id="rect3056"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="6000"
+ y="10200"
+ id="rect3058"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="7800"
+ y="10200"
+ id="rect3060"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="9900"
+ y="10200"
+ id="rect3062"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="6825,5175 6900,5100 6975,5175 6900,5250 6900,5250 "
+ id="polygon3064"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="6225,5175 6300,5100 6375,5175 6300,5250 6300,5250 "
+ id="polygon3066"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="5625,5175 5700,5100 5775,5175 5700,5250 5700,5250 "
+ id="polygon3068"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="2400"
+ height="2400"
+ rx="0"
+ x="4800"
+ y="2700"
+ id="rect3070"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="5025,5250 5175,5250 5100,5100 5100,5100 "
+ id="polygon3072"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="6300,5250 6300,5700 8400,5700 8400,4200 7216,4200 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3074" />
+ <polyline
+ points="7322 4170 7202 4200 7322 4230 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3076" />
+ <polyline
+ points="5700,5250 5700,6000 9000,6000 9000,3600 7216,3600 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3078" />
+ <polyline
+ points="7322 3570 7202 3600 7322 3630 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3080" />
+ <polyline
+ points="5100,5250 5100,8100 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3082" />
+ <polygon
+ points="4650,3600 4725,3525 4800,3600 4725,3675 4725,3675 "
+ id="polygon3084"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4650,4500 4725,4425 4800,4500 4725,4575 4725,4575 "
+ id="polygon3086"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="4650,3600 3616,3600 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3088" />
+ <polyline
+ points="3722 3570 3602 3600 3722 3630 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3090" />
+ <polyline
+ points="4650,4500 2416,4500 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3092" />
+ <polyline
+ points="2522 4470 2402 4500 2522 4530 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3094" />
+ <polyline
+ points="1800,2400 1800,4183 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3096" />
+ <polyline
+ points="1770 4078 1800 4198 1830 4078 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3098" />
+ <polyline
+ points="3000,2400 3000,3283 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3100" />
+ <polyline
+ points="2970 3178 3000 3298 3030 3178 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3102" />
+ <polyline
+ points="5850,1950 5850,2700 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ id="polyline3104" />
+ <polygon
+ points="2925,2325 3000,2250 3075,2325 3000,2400 3000,2400 "
+ id="polygon3106"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="1725,2325 1800,2250 1875,2325 1800,2400 1800,2400 "
+ id="polygon3108"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="3300,1950 8700,1950 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3110" />
+ <polyline
+ points="9600,2400 9600,6600 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3112" />
+ <polyline
+ points="7950,6900 7950,6600 10350,6600 10350,6900 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3114" />
+ <polygon
+ points="9525,2400 9675,2400 9600,2250 9600,2250 "
+ id="polygon3116"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="4800,3000 7200,3000 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3118" />
+ <polyline
+ points="4800,3300 7200,3300 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3120" />
+ <polygon
+ points="2775,9450 2925,9450 2850,9300 2850,9300 "
+ id="polygon3122"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="2100,10200 2100,9900 3750,9900 3750,10200 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3124" />
+ <polyline
+ points="6600,10200 6600,9900 10500,9900 10500,10200 10500,10125 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3126" />
+ <polyline
+ points="2850,9450 2850,9900 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3128" />
+ <polyline
+ points="8475,9450 8475,10200 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3130" />
+ <polygon
+ points="8400,9450 8550,9450 8475,9300 8475,9300 "
+ id="polygon3132"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="2775,6825 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3134" />
+ <polyline
+ points="1800,10200 1800,9000 2083,9000 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3136" />
+ <polyline
+ points="1978 9030 2098 9000 1978 8970 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3138" />
+ <polyline
+ points="9900,10500 9316,10500 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3140" />
+ <polyline
+ points="9422 10470 9302 10500 9422 10530 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3142" />
+ <polyline
+ points="7800,10500 7216,10500 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3144" />
+ <polyline
+ points="7322 10470 7202 10500 7322 10530 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3146" />
+ <polyline
+ points="2850,8700 2850,8100 8550,8100 8550,8700 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3148" />
+ <polyline
+ points="10350,7500 10350,9000 9316,9000 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ id="polyline3150" />
+ <polyline
+ points="9422 8970 9302 9000 9422 9030 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3152" />
+ <polyline
+ points="7050,7200 2400,7200 2400,8683 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ id="polyline3154" />
+ <polyline
+ points="2370 8578 2400 8698 2430 8578 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3156" />
+ <polyline
+ points="6900,5250 6900,5400 7800,5400 7800,4800 7216,4800 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3158" />
+ <polyline
+ points="7322 4770 7202 4800 7322 4830 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3160" />
+ <text
+ x="2400"
+ y="9075"
+ id="text3162"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Node.FS</text>
+ <text
+ x="7200"
+ y="7275"
+ id="text3164"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Intercessor.FS</text>
+ <text
+ x="9600"
+ y="7275"
+ id="text3166"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Intercessor.DB</text>
+ <text
+ x="1350"
+ y="4575"
+ id="text3168"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Scanner</text>
+ <text
+ x="2625"
+ y="3675"
+ id="text3170"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Builder</text>
+ <text
+ x="9000"
+ y="2025"
+ id="text3172"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Intercessor</text>
+ <text
+ x="1725"
+ y="2025"
+ id="text3174"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Environment</text>
+ <text
+ x="8100"
+ y="9075"
+ id="text3176"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Node.DB</text>
+ <text
+ x="1800"
+ y="10575"
+ id="text3178"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Dir</text>
+ <text
+ x="3600"
+ y="10575"
+ id="text3180"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">File</text>
+ <text
+ x="6300"
+ y="10575"
+ id="text3182"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Table</text>
+ <text
+ x="8100"
+ y="10575"
+ id="text3184"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Record</text>
+ <text
+ x="10200"
+ y="10575"
+ id="text3186"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Field</text>
+ <text
+ x="4950"
+ y="2925"
+ id="text3188"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Node</text>
+ <text
+ x="7350"
+ y="3525"
+ id="text3190"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">dependency</text>
+ <text
+ x="7425"
+ y="3825"
+ id="text3192"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ <text
+ x="7350"
+ y="4125"
+ id="text3194"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">srcnode</text>
+ <text
+ x="7425"
+ y="4425"
+ id="text3196"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="7350"
+ y="4725"
+ id="text3198"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">repnode</text>
+ <text
+ x="7425"
+ y="5025"
+ id="text3200"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="2550"
+ y="4725"
+ id="text3202"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">0..1</text>
+ <text
+ x="3750"
+ y="3825"
+ id="text3204"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">0..1</text>
+ <text
+ x="1875"
+ y="4050"
+ id="text3206"
+ xml:space="preserve"
+ style="font-size:144px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">*</text>
+ <text
+ x="3075"
+ y="3150"
+ id="text3208"
+ xml:space="preserve"
+ style="font-size:144px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">*</text>
+ <text
+ x="5100"
+ y="3750"
+ id="text3210"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">build()</text>
+ <text
+ x="5100"
+ y="4260"
+ id="text3212"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">scan()</text>
+ <text
+ x="9750"
+ y="10725"
+ id="text3214"
+ xml:space="preserve"
+ style="font-size:144px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">1</text>
+ <text
+ x="1650"
+ y="10125"
+ id="text3216"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="1875"
+ y="9225"
+ id="text3218"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ <text
+ x="7650"
+ y="10725"
+ id="text3220"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="7275"
+ y="10725"
+ id="text3222"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ <text
+ x="9375"
+ y="10725"
+ id="text3224"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ </g>
+</svg>
diff --git a/doc/design/engine.xml b/doc/design/engine.xml
index afe9877..4f56e61 100644
--- a/doc/design/engine.xml
+++ b/doc/design/engine.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-engine"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Build Engine API</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -964,7 +976,7 @@ you set it up with another environment...
<para>
&Builder; objects referenced in the &BUILDERMAP; do not need to be
- listed separately in the &BUILDERS; variable. The &consenv; will
+ listed separately in the <literal>BUILDERS</literal> variable. The &consenv; will
bind the union of the &Builder; objects listed in both variables.
</para>
@@ -1292,7 +1304,7 @@ Comments?
<para>
&Scanner; objects referenced in the &SCANNERMAP; do not need to
- be listed separately in the &SCANNERS; variable. The &consenv;
+ be listed separately in the <literal>SCANNERS</literal> variable. The &consenv;
will bind the union of the &Scanner; objects listed
in both variables.
@@ -1399,8 +1411,8 @@ Comments?
</para>
<programlisting>
- env.Library(target = 'libfoo.a', source = ['aaa.c', 'bbb.c', 'ccc.c'])
- env.NoClean('libfoo.a')
+env.Library(target = 'libfoo.a', source = ['aaa.c', 'bbb.c', 'ccc.c'])
+env.NoClean('libfoo.a')
</programlisting>
<para>
@@ -1413,8 +1425,8 @@ Comments?
during "cleanup":
<programlisting>
- env.Clean(target = 'foo')
- env.NoClean('foo')
+env.Clean(target = 'foo')
+env.NoClean('foo')
</programlisting>
@@ -1962,3 +1974,5 @@ I need to write that up...
</programlisting>
</section>
+
+</chapter>
diff --git a/doc/design/goals.xml b/doc/design/goals.xml
index f2e6b7c..f9dfc1c 100644
--- a/doc/design/goals.xml
+++ b/doc/design/goals.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-goals"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Goals</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -214,3 +226,5 @@ To be written.
</para>
</section>
+
+</chapter>
diff --git a/doc/user/errors.in b/doc/design/html.xsl
index 9e8078c..2c94958 100644
--- a/doc/user/errors.in
+++ b/doc/design/html.xsl
@@ -1,41 +1,55 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- XXX
-
- </para>
-
- <section>
- <title>XXX</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl"/>
+
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/install.xml b/doc/design/install.xml
index e670e83..dc27b2c 100644
--- a/doc/design/install.xml
+++ b/doc/design/install.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-install"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Installation</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -26,3 +38,9 @@
<!--
THIS CHAPTER NEEDS TO BE DISCUSSED AND WRITTEN.
-->
+
+<para>
+
+</para>
+
+</chapter>
diff --git a/doc/design/intro.xml b/doc/design/intro.xml
index 561baa4..1d042ae 100644
--- a/doc/design/intro.xml
+++ b/doc/design/intro.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-intro"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Introduction</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -109,3 +121,5 @@ I'm especially eager to hear it.
-->
</section>
+
+</chapter>
diff --git a/doc/design/issues.xml b/doc/design/issues.xml
index 1f9a78c..a43b77f 100644
--- a/doc/design/issues.xml
+++ b/doc/design/issues.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-issues"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Other Issues</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -193,3 +205,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/design/main.xml b/doc/design/main.xml
index e991b36..fb6469b 100644
--- a/doc/design/main.xml
+++ b/doc/design/main.xml
@@ -2,7 +2,7 @@
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -25,53 +25,28 @@
-->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
+<!DOCTYPE sconsdoc [
- <!--
- We haven't updated the design document in ages.
- Rather than fool people into thinking that it's
- actually up-to-date and reflects the current design,
- hard-code the version from back when we last updated it.
<!ENTITY % version SYSTEM "../version.xml">
%version;
- -->
- <!ENTITY builddate "2001/12/13 20:55:46">
- <!ENTITY buildversion "0.91">
- <!ENTITY buildrevision "0.01.D177">
-
- <!--
- Also freeze the scons.mod DTD extensions
- to what they were way back when.
+
<!ENTITY % scons SYSTEM "../scons.mod">
- -->
- <!ENTITY % scons SYSTEM "scons.mod">
%scons;
- <!ENTITY acks SYSTEM "acks.xml">
- <!ENTITY bground SYSTEM "bground.xml">
- <!ENTITY copyright SYSTEM "copyright.xml">
- <!ENTITY engine SYSTEM "engine.xml">
- <!ENTITY goals SYSTEM "goals.xml">
- <!ENTITY install SYSTEM "install.xml">
- <!ENTITY intro SYSTEM "intro.xml">
- <!ENTITY issues SYSTEM "issues.xml">
- <!ENTITY native SYSTEM "native.xml">
- <!ENTITY overview SYSTEM "overview.xml">
-
]>
-<book>
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
<bookinfo>
- <title>SCons Design version &buildversion;</title>
-
+ <title>SCons &buildversion;</title>
+ <subtitle>Design</subtitle>
<author>
<firstname>Steven</firstname>
<surname>Knight</surname>
</author>
- <edition>Revision &buildrevision; (&builddate;)</edition>
+ <corpauthor>Steven Knight</corpauthor>
<pubdate>2001</pubdate>
@@ -80,79 +55,34 @@
<holder>Steven Knight</holder>
</copyright>
- <legalnotice>
- &copyright;
- </legalnotice>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
<releaseinfo>version &buildversion;</releaseinfo>
</bookinfo>
- <chapter id="chap-intro">
- <title>Introduction</title>
- &intro;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="intro.xml"/>
- <chapter id="chap-goals">
- <title>Goals</title>
- &goals;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="goals.xml"/>
- <chapter id="chap-overview">
- <title>Overview</title>
- &overview;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="overview.xml"/>
- <chapter id="chap-engine">
- <title>Build Engine API</title>
- &engine;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="engine.xml"/>
- <chapter id="chap-native">
- <title>Native Python Interface</title>
- &native;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="native.xml"/>
<!--
- <chapter id="chap-install">
- <title>Installation</title>
- &install;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="install.xml"/>
-->
- <chapter id="chap-issues">
- <title>Other Issues</title>
- &issues;
- </chapter>
-
- <chapter id="chap-background">
- <title>Background</title>
- &bground;
- </chapter>
-
- <chapter id="chap-summary">
- <title>Summary</title>
- <para>
-
- &SCons; offers a robust and feature-rich design for an SC-build
- tool. With a Build Engine based on the proven design of
- the &Cons; utility, it offers increased simplification of the
- user interface for unsophisticated users with the addition
- of the "do-the-right-thing" <function>env.Make</function>
- method, increased flexibility for sophisticated users with the
- addition of &Builder; and &Scanner; objects, a mechanism to
- allow tool-masters (and users) to share working construction
- environments, and embeddability to provide reliable dependency
- management in a variety of environments and interfaces.
-
- </para>
- </chapter>
-
- <chapter id="chap-acks">
- <title>Acknowledgements</title>
- &acks;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="issues.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bground.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="summary.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acks.xml"/>
</book>
diff --git a/doc/design/native.xml b/doc/design/native.xml
index c665e0c..83227ab 100644
--- a/doc/design/native.xml
+++ b/doc/design/native.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-native"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Native Python Interface</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -362,3 +374,5 @@ beyond what the man page will have.
<!-- END HTML -->
</section>
+
+</chapter>
diff --git a/doc/design/overview.xml b/doc/design/overview.xml
index 266c9e8..66ef78d 100644
--- a/doc/design/overview.xml
+++ b/doc/design/overview.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-overview"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Overview</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -48,21 +60,17 @@
</para>
-<!--
-Including this figure makes our PDF build blow up.
-The figure, however,
-is left over from the Software Carpentry contest
-and is therefore old, out-of-date, and needs to be redone anyway.
-This is where it will go, anyway...
--->
-
- <!--
- YARG! THIS MAKES THE PDF BUILD BLOW UP. HELP!
<figure>
<title>&SCons; Architecture</title>
- <graphic fileref="engine.jpg">
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="engine.svg" align="center" scale="50"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="engine.jpg" align="center"/>
+ </imageobject>
+ </mediaobject>
</figure>
- -->
<para>
@@ -496,3 +504,5 @@ This is where it will go, anyway...
</section>
</section>
+
+</chapter>
diff --git a/doc/design/pdf.xsl b/doc/design/pdf.xsl
new file mode 100644
index 0000000..c8acf1b
--- /dev/null
+++ b/doc/design/pdf.xsl
@@ -0,0 +1,71 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl"/>
+ <xsl:include href="scons_title.xsl"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="paper.type" select="'letter'"></xsl:param>
+<xsl:param name="body.start.indent">0pt</xsl:param>
+<xsl:param name="shade.verbatim" select="1"></xsl:param>
+<xsl:param name="variablelist.term.break.after" select="1"></xsl:param>
+
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<xsl:attribute-set name="variablelist.term.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_list-presentation"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/scons.css b/doc/design/scons.css
new file mode 100644
index 0000000..6941abb
--- /dev/null
+++ b/doc/design/scons.css
@@ -0,0 +1,263 @@
+body {
+ background: #ffffff;
+ margin: 10px;
+ padding: 0;
+ font-family:palatino, georgia, verdana, arial, sans-serif;
+ }
+
+
+a {
+ color: #80572a;
+ }
+
+a:hover {
+ color: #d72816;
+ text-decoration: none;
+ }
+
+tt {
+ color: #a14447;
+ }
+
+pre {
+ background: #e0e0e0;
+ }
+
+#main {
+ border: 1px solid;
+ border-color: black;
+ background-color: white;
+ background-image: url(../images/sconsback.png);
+ background-repeat: repeat-y 50% 0;
+ background-position: right top;
+ margin: 30px auto;
+ width: 750px;
+ }
+
+#banner {
+ background-image: url(../images/scons-banner.jpg);
+ border-bottom: 1px solid;
+ height: 95px;
+ }
+
+#menu {
+ font-family: sans-serif;
+ font-size: small;
+ line-height: 0.9em;
+ float: right;
+ width: 220px;
+ clear: both;
+ margin-top: 10px;
+ }
+
+#menu li {
+ margin-bottom: 7px;
+ }
+
+#menu li li {
+ margin-bottom: 2px;
+ }
+
+#menu li.submenuitems {
+ margin-bottom: 2px;
+ }
+
+#menu a {
+ text-decoration: none;
+ }
+
+#footer {
+ border-top: 1px solid black;
+ text-align: center;
+ font-size: small;
+ color: #822;
+ margin-top: 4px;
+ background: #eee;
+ }
+
+ul.hack {
+ list-style-position:inside;
+ }
+
+ul.menuitems {
+ list-style-type: none;
+ }
+
+ul.submenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ul.subsubmenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ol.upper-roman {
+ list-style-type: upper-roman;
+ }
+
+ol.decimal {
+ list-style-type: decimal;
+ }
+
+#currentpage {
+ font-weight: bold;
+ }
+
+#bodycontent {
+ margin: 15px;
+ width: 520px;
+ font-size: small;
+ line-height: 1.5em;
+ }
+
+#bodycontent li {
+ margin-bottom: 6px;
+ list-style-type: square;
+ }
+
+#sconsdownloadtable downloadtable {
+ display: table;
+ margin-left: 5%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdownloadtable downloadrow {
+ display: table-row;
+ }
+
+#sconsdownloadtable downloadentry {
+ display: table-cell;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdownloadtable downloaddescription {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdownloadtable downloadversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#sconsdocversiontable sconsversiontable {
+ display: table;
+ margin-left: 10%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdocversiontable sconsversionrow {
+ display: table-row;
+ }
+
+#sconsdocversiontable docformat {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdocversiontable sconsversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdocversiontable docversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#osrating {
+ margin-left: 35px;
+ }
+
+
+h2 {
+ color: #272;
+ color: #c01714;
+ font-family: sans-serif;
+ font-weight: normal;
+ }
+
+h2.pagetitle {
+ font-size: xx-large;
+ }
+h3 {
+ margin-bottom: 10px;
+ }
+
+.date {
+ font-size: small;
+ color: gray;
+ }
+
+.link {
+ margin-bottom: 22px;
+ }
+
+.linkname {
+ }
+
+.linkdesc {
+ margin: 10px;
+ margin-top: 0;
+ }
+
+.quote {
+ margin-top: 20px;
+ margin-bottom: 10px;
+ background: #f8f8f8;
+ border: 1px solid;
+ border-color: #ddd;
+ }
+
+.quotetitle {
+ font-weight: bold;
+ font-size: large;
+ margin: 10px;
+ }
+
+.quotedesc {
+ margin-left: 20px;
+ margin-right: 10px;
+ margin-bottom: 15px;
+ }
+
+.quotetext {
+ margin-top: 20px;
+ margin-left: 20px;
+ margin-right: 10px;
+ font-style: italic;
+ }
+
+.quoteauthor {
+ font-size: small;
+ text-align: right;
+ margin-top: 10px;
+ margin-right: 7px;
+ }
+
+.sconslogo {
+ font-style: normal;
+ font-weight: bold;
+ color: #822;
+ }
+
+.downloadlink {
+ }
+
+.downloaddescription {
+ margin-left: 1em;
+ margin-bottom: 0.4em;
+ }
diff --git a/doc/design/scons.mod b/doc/design/scons.mod
deleted file mode 100644
index 807f3cb..0000000
--- a/doc/design/scons.mod
+++ /dev/null
@@ -1,429 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- An SCons-specific DTD module, for use with SCons DocBook
- documentation, that contains names, phrases, acronyms, etc. used
- throughout the SCons documentation.
-
--->
-
-
-
-<!--
-
- Other applications that we reference.
-
--->
-
-<!ENTITY Aegis "<application>Aegis</application>">
-<!ENTITY Ant "<application>Ant</application>">
-<!ENTITY Autoconf "<application>Autoconf</application>">
-<!ENTITY Automake "<application>Automake</application>">
-<!ENTITY cc "<application>cc</application>">
-<!ENTITY Cons "<application>Cons</application>">
-<!ENTITY cp "<application>cp</application>">
-<!ENTITY csh "<application>csh</application>">
-<!ENTITY gcc "<application>gcc</application>">
-<!ENTITY Jam "<application>Jam</application>">
-<!ENTITY jar "<application>jar</application>">
-<!ENTITY javac "<application>javac</application>">
-<!ENTITY javah "<application>javah</application>">
-<!ENTITY Make "<application>Make</application>">
-<!ENTITY Makepp "<application>Make++</application>">
-<!ENTITY Python "<application>Python</application>">
-<!ENTITY ranlib "<application>ranlib</application>">
-<!ENTITY rmic "<application>rmic</application>">
-<!ENTITY SCons "<application>SCons</application>">
-<!ENTITY scons "<application>scons</application>">
-<!ENTITY ScCons "<application>ScCons</application>">
-<!ENTITY tar "<application>tar</application>">
-<!ENTITY touch "<application>touch</application>">
-<!ENTITY zip "<application>zip</application>">
-
-
-<!--
-
- Classes.
-
--->
-
-<!ENTITY Action "<classname>Action</classname>">
-<!ENTITY ActionBase "<classname>ActionBase</classname>">
-<!ENTITY CommandAction "<classname>CommandAction</classname>">
-<!ENTITY FunctionAction "<classname>FunctionAction</classname>">
-<!ENTITY ListAction "<classname>ListAction</classname>">
-<!ENTITY Builder "<classname>Builder</classname>">
-<!ENTITY BuilderBase "<classname>BuilderBase</classname>">
-<!ENTITY CompositeBuilder "<classname>CompositeBuilder</classname>">
-<!ENTITY MultiStepBuilder "<classname>MultiStepBuilder</classname>">
-<!ENTITY Job "<classname>Job</classname>">
-<!ENTITY Jobs "<classname>Jobs</classname>">
-<!ENTITY Serial "<classname>Serial</classname>">
-<!ENTITY Parallel "<classname>Parallel</classname>">
-<!ENTITY Node "<classname>Node</classname>">
-<!ENTITY Node_FS "<classname>Node.FS</classname>">
-<!ENTITY Scanner "<classname>Scanner</classname>">
-<!ENTITY Sig "<classname>Sig</classname>">
-<!ENTITY Signature "<classname>Signature</classname>">
-<!ENTITY Taskmaster "<classname>Taskmaster</classname>">
-<!ENTITY TimeStamp "<classname>TimeStamp</classname>">
-<!ENTITY Walker "<classname>Walker</classname>">
-<!ENTITY Wrapper "<classname>Wrapper</classname>">
-
-
-
-<!--
-
- Options, command-line.
-
--->
-
-<!ENTITY debug-explain "<literal>--debug=explain</literal>">
-<!ENTITY implicit-cache "<literal>--implicit-cache</literal>">
-<!ENTITY implicit-deps-changed "<literal>--implicit-deps-changed</literal>">
-<!ENTITY implicit-deps-unchanged "<literal>--implicit-deps-unchanged</literal>">
-<!ENTITY Q "<literal>-Q</literal>">
-
-<!--
-
- Options, SConscript-settable.
-
--->
-
-<!ENTITY implicit_cache "<literal>implicit_cache</literal>">
-<!ENTITY implicit_deps_changed "<literal>implicit_deps_changed</literal>">
-<!ENTITY implicit_deps_unchanged "<literal>implicit_deps_unchanged</literal>">
-
-
-
-<!--
-
- File and directory names.
-
--->
-
-<!ENTITY build "<filename>build</filename>">
-<!ENTITY Makefile "<filename>Makefile</filename>">
-<!ENTITY Makefiles "<filename>Makefiles</filename>">
-<!ENTITY SConscript "<filename>SConscript</filename>">
-<!ENTITY SConstruct "<filename>SConstruct</filename>">
-<!ENTITY Sconstruct "<filename>Sconstruct</filename>">
-<!ENTITY sconstruct "<filename>sconstruct</filename>">
-<!ENTITY sconsign "<filename>.sconsign</filename>">
-<!ENTITY src "<filename>src</filename>">
-
-
-
-<!--
-
- Methods and functions. This includes functions from both
- the Build Engine and the Native Python Interface.
-
--->
-
-<!ENTITY Add "<function>Add</function>">
-<!ENTITY AddOptions "<function>AddOptions</function>">
-<!ENTITY Alias "<function>Alias</function>">
-<!ENTITY Aliases "<function>Aliases</function>">
-<!ENTITY Append "<function>Append</function>">
-<!ENTITY BoolOption "<function>BoolOption</function>">
-<!ENTITY Build "<function>Build</function>">
-<!ENTITY CacheDir "<function>CacheDir</function>">
-<!ENTITY Clean "<function>Clean</function>">
-<!ENTITY Clone "<function>Clone</function>">
-<!ENTITY Command "<function>Command</function>">
-<!ENTITY Configure "<function>Configure</function>">
-<!ENTITY Copy "<function>Copy</function>">
-<!ENTITY Default "<function>Default</function>">
-<!ENTITY DefaultRules "<function>DefaultRules</function>">
-<!ENTITY Depends "<function>Depends</function>">
-<!ENTITY Dir "<function>Dir</function>">
-<!ENTITY Entry "<function>Entry</function>">
-<!ENTITY EnumOption "<function>EnumOption</function>">
-<!ENTITY Environment "<function>Environment</function>">
-<!ENTITY Export "<function>Export</function>">
-<!ENTITY File "<function>File</function>">
-<!ENTITY Finish "<function>Finish</function>">
-<!ENTITY GenerateHelpText "<function>GenerateHelpText</function>">
-<!ENTITY Help "<function>Help</function>">
-<!ENTITY Ignore "<function>Ignore</function>">
-<!ENTITY Import "<function>Import</function>">
-<!ENTITY Install "<function>Install</function>">
-<!ENTITY InstallAs "<function>InstallAs</function>">
-<!ENTITY Link "<function>Link</function>">
-<!ENTITY ListOption "<function>ListOption</function>">
-<!ENTITY Local "<function>Local</function>">
-<!ENTITY Module "<function>Module</function>">
-<!ENTITY NoClean "<function>NoClean</function>">
-<!ENTITY Objects "<function>Objects</function>">
-<!ENTITY Options "<function>Options</function>">
-<!ENTITY PackageOption "<function>PackageOption</function>">
-<!ENTITY PathOption "<function>PathOption</function>">
-<!ENTITY Precious "<function>Precious</function>">
-<!ENTITY Prepend "<function>Prepend</function>">
-<!ENTITY Replace "<function>Replace</function>">
-<!ENTITY Repository "<function>Repository</function>">
-<!ENTITY Return "<function>Return</function>">
-<!ENTITY RuleSet "<function>RuleSet</function>">
-<!ENTITY Salt "<function>Salt</function>">
-<!ENTITY SetBuildSignatureType "<function>SetBuildSignatureType</function>">
-<!ENTITY SetContentSignatureType "<function>SetContentSignatureType</function>">
-<!ENTITY SourceSignature "<function>SourceSignature</function>">
-<!ENTITY SourceSignatures "<function>SourceSignatures</function>">
-<!ENTITY Split "<function>Split</function>">
-<!ENTITY TargetSignatures "<function>TargetSignatures</function>">
-<!ENTITY Task "<function>Task</function>">
-
-<!-- Environment methods -->
-<!ENTITY subst "<function>subst</function>">
-
-<!-- Configure context functions -->
-<!ENTITY Message "<function>Message</function>">
-<!ENTITY Result "<function>Result</function>">
-<!ENTITY CheckCHeader "<function>CheckCHeader</function>">
-<!ENTITY CheckCXXHeader "<function>CheckCXXHeader</function>">
-<!ENTITY CheckFunc "<function>CheckFunc</function>">
-<!ENTITY CheckHeader "<function>CheckHeader</function>">
-<!ENTITY CheckLib "<function>CheckLib</function>">
-<!ENTITY CheckLibWithHeader "<function>CheckLibWithHeader</function>">
-<!ENTITY CheckType "<function>CheckType</function>">
-<!ENTITY TryAction "<function>TryAction</function>">
-<!ENTITY TryBuild "<function>TryBuild</function>">
-<!ENTITY TryCompile "<function>TryCompile</function>">
-<!ENTITY TryLink "<function>TryLink</function>">
-<!ENTITY TryRun "<function>TryRun</function>">
-
-<!-- Python functions -->
-<!ENTITY str "<function>str</function>">
-<!ENTITY zipfile "<function>zipfile</function>">
-
-<!-- Obsolete, but referenced in old documents. -->
-<!ENTITY Cache "<function>Cache</function>">
-
-
-
-<!--
-
- Global variables.
-
--->
-
-<!ENTITY ARGUMENTS "<varname>ARGUMENTS</varname>">
-<!ENTITY BUILD_TARGETS "<varname>BUILD_TARGETS</varname>">
-<!ENTITY COMMAND_LINE_TARGETS "<varname>COMMAND_LINE_TARGETS</varname>">
-<!ENTITY DEFAULT_TARGETS "<varname>DEFAULT_TARGETS</varname>">
-
-
-
-<!--
-
- Construction variables.
-
--->
-
-<!ENTITY BUILDERMAP "<varname>BUILDERMAP</varname>">
-<!ENTITY BUILDERS "<varname>BUILDERS</varname>">
-<!ENTITY CC "<varname>CC</varname>">
-<!ENTITY CCFLAGS "<varname>CCFLAGS</varname>">
-<!ENTITY CCCOM "<varname>CCCOM</varname>">
-<!ENTITY COLOR "<varname>COLOR</varname>">
-<!ENTITY COLORS "<varname>COLORS</varname>">
-<!ENTITY CONFIG "<varname>CONFIG</varname>">
-<!ENTITY CPPDEFINES "<varname>CPPDEFINES</varname>">
-<!ENTITY ENV "<varname>ENV</varname>">
-<!ENTITY JAVACLASSDIR "<varname>JAVACLASSDIR</varname>">
-<!ENTITY LIBDIRPREFIX "<varname>LIBDIRPREFIX</varname>">
-<!ENTITY LIBDIRSUFFIX "<varname>LIBDIRSUFFIX</varname>">
-<!ENTITY LIBLINKPREFIX "<varname>LIBLINKPREFIX</varname>">
-<!ENTITY LIBLINKSUFFIX "<varname>LIBLINKSUFFIX</varname>">
-<!ENTITY LIBPATH "<varname>LIBPATH</varname>">
-<!ENTITY LIBS "<varname>LIBS</varname>">
-<!ENTITY LINK "<varname>LINK</varname>">
-<!ENTITY LINKCOM "<varname>LINKCOM</varname>">
-<!ENTITY LINKFLAGS "<varname>LINKFLAGS</varname>">
-<!ENTITY RELEASE "<varname>RELEASE</varname>">
-<!ENTITY RELEASE_BUILD "<varname>RELEASE_BUILD</varname>">
-<!ENTITY SCANNERMAP "<varname>SCANNERMAP</varname>">
-<!ENTITY SCANNERS "<varname>SCANNERS</varname>">
-<!ENTITY TARFLAGS "<varname>TARFLAGS</varname>">
-<!ENTITY TARSUFFIX "<varname>TARSUFFIX</varname>">
-
-
-
-<!--
-
- Environment variables.
-
--->
-
-<!ENTITY PATH "<varname>PATH</varname>">
-<!ENTITY PYTHONPATH "<varname>PYTHONPATH</varname>">
-<!ENTITY SCONSFLAGS "<varname>SCONSFLAGS</varname>">
-
-
-
-<!--
-
- Function and method arguments.
-
--->
-
-<!ENTITY allowed_values "<varname>allowed_values</varname>">
-<!ENTITY build_dir "<varname>build_dir</varname>">
-<!ENTITY map "<varname>map</varname>">
-<!ENTITY ignorecase "<varname>ignorecase</varname>">
-<!ENTITY options "<varname>options</varname>">
-<!ENTITY exports "<varname>exports</varname>">
-<!ENTITY source "<varname>source</varname>">
-<!ENTITY target "<varname>target</varname>">
-
-
-
-<!--
-
- Values of function and method arguments.
-
--->
-
-<!ENTITY all "<literal>all</literal>">
-<!ENTITY none "<literal>none</literal>">
-
-
-
-<!--
-
- Builder and Scanner objects.
-
--->
-
-<!ENTITY BuildDir "<function>BuildDir</function>">
-<!ENTITY CFile "<function>CFile</function>">
-<!ENTITY CXXFile "<function>CXXFile</function>">
-<!ENTITY DVI "<function>DVI</function>">
-<!ENTITY Jar "<function>Jar</function>">
-<!ENTITY Java "<function>Java</function>">
-<!ENTITY JavaH "<function>JavaH</function>">
-<!ENTITY Library "<function>Library</function>">
-<!ENTITY Object "<function>Object</function>">
-<!ENTITY PCH "<function>PCH</function>">
-<!ENTITY PDF "<function>PDF</function>">
-<!ENTITY PostScript "<function>PostScript</function>">
-<!ENTITY Program "<function>Program</function>">
-<!ENTITY RES "<function>RES</function>">
-<!ENTITY RMIC "<function>RMIC</function>">
-<!ENTITY SharedLibrary "<function>SharedLibrary</function>">
-<!ENTITY SharedObject "<function>SharedObject</function>">
-<!ENTITY StaticLibrary "<function>StaticLibrary</function>">
-<!ENTITY StaticObject "<function>StaticObject</function>">
-<!ENTITY Tar "<function>Tar</function>">
-<!ENTITY Zip "<function>Zip</function>">
-
-<!-- Obsolete, but referenced in old documents. -->
-<!ENTITY MakeBuilder "<function>Make</function>">
-
-
-
-<!--
-
- Terms. Define both singular and plural forms in various
- case-sensitive combinations for use in titles, in-line, etc.
-
--->
-
-<!ENTITY buildfunc "<literal>builder function</literal>">
-<!ENTITY builder_method "<literal>builder method</literal>">
-
-<!ENTITY Configure_Contexts "<literal>Configure Contexts</literal>">
-<!ENTITY configure_context "<literal>configure context</literal>">
-
-<!ENTITY ConsEnv "<literal>Construction Environment</literal>">
-<!ENTITY ConsEnvs "<literal>Construction Environments</literal>">
-<!ENTITY Consenv "<literal>Construction environment</literal>">
-<!ENTITY Consenvs "<literal>Construction environments</literal>">
-<!ENTITY consenv "<literal>construction environment</literal>">
-<!ENTITY consenvs "<literal>construction environments</literal>">
-
-<!ENTITY ConsVar "<literal>Construction Variable</literal>">
-<!ENTITY ConsVars "<literal>Construction Variables</literal>">
-<!ENTITY Consvar "<literal>Construction variable</literal>">
-<!ENTITY Consvars "<literal>Construction variables</literal>">
-<!ENTITY consvar "<literal>construction variable</literal>">
-<!ENTITY consvars "<literal>construction variables</literal>">
-
-<!ENTITY CPPPATH "<literal>CPPPATH</literal>">
-
-<!ENTITY Dictionary "<literal>Dictionary</literal>">
-
-<!ENTITY Emitter "<literal>Emitter</literal>">
-<!ENTITY emitter "<literal>emitter</literal>">
-<!ENTITY Generator "<literal>Generator</literal>">
-<!ENTITY generator "<literal>generator</literal>">
-
-<!ENTITY Nodes "<literal>Nodes</literal>">
-
-<!ENTITY signature "<literal>signature</literal>">
-<!ENTITY buildsignature "<literal>build signature</literal>">
-
-<!ENTITY true "<literal>true</literal>">
-<!ENTITY false "<literal>false</literal>">
-
-<!ENTITY typedef "<literal>typedef</literal>">
-
-<!--
-
- File and program names used in examples.
-
--->
-
-<!ENTITY bar "<application>bar</application>">
-<!ENTITY common1_c "<filename>common1.c</filename>">
-<!ENTITY common2_c "<filename>common2.c</filename>">
-<!ENTITY custom_py "<filename>custom.py</filename>">
-<!ENTITY goodbye "<application>goodbye</application>">
-<!ENTITY goodbye_o "<filename>goodbye.o</filename>">
-<!ENTITY goodbye_obj "<filename>goodbye.obj</filename>">
-<!ENTITY file_dll "<filename>file.dll</filename>">
-<!ENTITY file_in "<filename>file.in</filename>">
-<!ENTITY file_lib "<filename>file.lib</filename>">
-<!ENTITY file_o "<filename>file.o</filename>">
-<!ENTITY file_obj "<filename>file.obj</filename>">
-<!ENTITY file_out "<filename>file.out</filename>">
-<!ENTITY foo "<application>foo</application>">
-<!ENTITY foo_o "<filename>foo.o</filename>">
-<!ENTITY foo_obj "<filename>foo.obj</filename>">
-<!ENTITY hello "<application>hello</application>">
-<!ENTITY hello_c "<filename>hello.c</filename>">
-<!ENTITY hello_exe "<filename>hello.exe</filename>">
-<!ENTITY hello_h "<filename>hello.h</filename>">
-<!ENTITY hello_o "<filename>hello.o</filename>">
-<!ENTITY hello_obj "<filename>hello.obj</filename>">
-<!ENTITY libfile_a "<filename>libfile_a</filename>">
-<!ENTITY libfile_so "<filename>libfile_so</filename>">
-<!ENTITY new_hello "<application>new_hello</application>">
-<!ENTITY new_hello_exe "<application>new_hello.exe</application>">
-<!ENTITY prog "<filename>prog</filename>">
-<!ENTITY prog1 "<filename>prog1</filename>">
-<!ENTITY prog2 "<filename>prog2</filename>">
-<!ENTITY prog_c "<filename>prog.c</filename>">
-<!ENTITY prog_exe "<filename>prog.exe</filename>">
-<!ENTITY stdio_h "<filename>stdio.h</filename>">
-
-<!--
-
- Punctuation.
-
--->
-
-<!ENTITY plus "<literal>+</literal>">
-<!ENTITY hash "<literal>#</literal>">
-
-<!--
-
- Mailing lists
-
--->
-
-<!ENTITY scons-announce "<literal>announce@scons.tigris.org</literal>">
-<!ENTITY scons-devel "<literal>dev@scons.tigris.org</literal>">
-<!ENTITY scons-users "<literal>users@scons.tigris.org</literal>">
diff --git a/doc/design/scons_title.xsl b/doc/design/scons_title.xsl
new file mode 100644
index 0000000..52ca405
--- /dev/null
+++ b/doc/design/scons_title.xsl
@@ -0,0 +1,6352 @@
+<?xml version="1.0"?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl; do not edit it by hand. -->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::article[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::set[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:param name="scons.inner.twidtha">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">200mm</xsl:when>
+ <xsl:otherwise>205.9mm</xsl:otherwise> <!-- 8.5in-10mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthb">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">190mm</xsl:when>
+ <xsl:otherwise>195.9mm</xsl:otherwise> <!-- 8.5in-20mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthc">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">180mm</xsl:when>
+ <xsl:otherwise>185.9mm</xsl:otherwise> <!-- 8.5in-30mm -->
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="book.titlepage.recto">
+
+ <fo:block-container height="3mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ <fo:block>
+ <fo:table table-layout="fixed" width="100%" padding="0pt" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidtha}"/>
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center">
+ <fo:block line-height="0">
+ <fo:external-graphic
+ src="url(titlepage/SConsBuildBricks_path.svg)"
+ width="{$scons.inner.twidtha}" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </fo:block></fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <fo:block-container height="4cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+<!--
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+-->
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/edition">
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/edition"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/corpauthor">
+ <fo:block-container height="15mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/mediaobject"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<!--
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24pt" space-before="18pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="15pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+-->
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="0pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsynopsisdivinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsynopsisdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsectioninfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsection.titlepage.before.recto"/>
+ <xsl:call-template name="refsection.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsection.titlepage.before.verso"/>
+ <xsl:call-template name="refsection.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsection.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect1info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect1.titlepage.before.recto"/>
+ <xsl:call-template name="refsect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect1.titlepage.before.verso"/>
+ <xsl:call-template name="refsect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect2info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect2.titlepage.before.recto"/>
+ <xsl:call-template name="refsect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect2.titlepage.before.verso"/>
+ <xsl:call-template name="refsect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect3info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect3.titlepage.before.recto"/>
+ <xsl:call-template name="refsect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect3.titlepage.before.verso"/>
+ <xsl:call-template name="refsect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+<!--
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+-->
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.recto"/>
+ <xsl:call-template name="bibliodiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.verso"/>
+ <xsl:call-template name="bibliodiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliodiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossdiv.titlepage.before.recto"/>
+ <xsl:call-template name="glossdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossdiv.titlepage.before.verso"/>
+ <xsl:call-template name="glossdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style">
+<xsl:call-template name="indexdiv.title">
+<xsl:with-param name="title" select="title"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexdivinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="indexdiv.titlepage.before.recto"/>
+ <xsl:call-template name="indexdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="indexdiv.titlepage.before.verso"/>
+ <xsl:call-template name="indexdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="indexdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="colophoninfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="colophon.titlepage.before.recto"/>
+ <xsl:call-template name="colophon.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="colophon.titlepage.before.verso"/>
+ <xsl:call-template name="colophon.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="colophon.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="qandaset.titlepage.before.recto"/>
+ <xsl:call-template name="qandaset.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="qandaset.titlepage.before.verso"/>
+ <xsl:call-template name="qandaset.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="qandaset.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'TableofContents'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.recto"/>
+ <xsl:call-template name="table.of.contents.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.verso"/>
+ <xsl:call-template name="table.of.contents.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="table.of.contents.titlepage.separator"/>
+ </fo:block>
+
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofTables'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.tables.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.tables.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.tables.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofFigures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.figures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.figures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.figures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofExamples'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.examples.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.examples.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.examples.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofEquations'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.equations.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.equations.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.equations.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofProcedures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.procedures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.procedures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.procedures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofUnknown'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.unknowns.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+
+<!-- special titlepage masters for SCons Titlepage style in books -->
+<xsl:template name="user.pagemasters">
+ <!-- title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="0mm"
+ margin-bottom="0mm"
+ margin-left="0mm"
+ margin-right="0mm">
+ <xsl:attribute name="margin-{$direction.align.start}" select="0mm"/>
+ <xsl:attribute name="margin-{$direction.align.end}" select="0mm"/>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="0mm"
+ margin-top="0mm"
+ column-gap="0mm"
+ column-count="{$column.count.titlepage}"
+ background-repeat="no-repeat"
+ background-image="url(titlepage/mapnik_final_colors.svg)"
+ background-position-vertical="center"
+ background-position-horizontal="center">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+ </xsl:if>
+
+ <!-- setup for title page(s) -->
+ <fo:page-sequence-master master-name="scons-titlepage">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-titlepage-even</xsl:when>
+ <xsl:otherwise>scons-titlepage-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+
+ <fo:page-sequence-master master-name="scons-titlepage-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="body-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
+ <xsl:otherwise>body-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+ <!-- setup for chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even</xsl:when>
+ <xsl:otherwise>scons-chapter-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ <!-- setup for draft chapter pages -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even-draft</xsl:when>
+ <xsl:otherwise>scons-chapter-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- selecting our SCons pagemasters -->
+<xsl:template name="select.user.pagemaster">
+ <xsl:param name="element"/>
+ <xsl:param name="pageclass"/>
+ <xsl:param name="default-pagemaster"/>
+
+ <xsl:choose>
+ <xsl:when test="$default-pagemaster = 'titlepage'">
+ <xsl:value-of select="'scons-titlepage'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter' and
+ $default-pagemaster = 'body-draft'">
+ <xsl:value-of select="'scons-chapter-draft'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter'">
+ <xsl:value-of select="'scons-chapter'" />
+ </xsl:when>
+ <xsl:when test="$default-pagemaster = 'titlepage-draft'">
+ <xsl:value-of select="'scons-titlepage-draft'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-pagemaster"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="75pt" space-before="0pt" space-after="0pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" font-size="28pt" space-before="0pt" space-after="0pt" font-family="{$title.fontset}" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="56pt" space-before="0pt" space-after="0pt" font-family="'serif'" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:attribute-set name="chap.label.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="chap.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">24pt</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-start">0.7em</xsl:attribute>
+</xsl:attribute-set>
+
+
+<!-- customization of chapter titles -->
+<xsl:template name="chap.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="pagewide" select="0"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="titleabbrev">
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="2"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$titleabbrev"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="17mm"/>
+ <fo:table-column/>
+ <fo:table-column column-width="17mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="chap.title.properties">
+ <fo:block>
+
+ <fo:inline xsl:use-attribute-sets="chap.label.properties" font-size="57pt"><xsl:apply-templates select="$node"
+ mode="label.markup"/></fo:inline>
+
+ <fo:inline xsl:use-attribute-sets="chap.title.properties"><xsl:apply-templates select="$node"
+ mode="title.markup"/></fo:inline>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+<xsl:call-template name="chap.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template match="title" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="."/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template name="header.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="element" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all headers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="head.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$header.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a header? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence = 'first'">
+ <!-- no, book chapters have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="header.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+<!-- <xsl:apply-templates select="."
+ mode="titleabbrev.markup"/>
+-->
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+
+<xsl:template name="footer.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all footers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="foot.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$footer.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a footer? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence='first'">
+ <!-- no, book chapters have no footers on first page -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+ <!-- pageclass can be front, body, back -->
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="head.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$header.rule != 0">
+ <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
+ <xsl:attribute name="border-bottom-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+
+<xsl:template name="foot.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$footer.rule != 0">
+ <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">solid</xsl:attribute>
+ <xsl:attribute name="border-top-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:param name="header.column.widths">1 0 1</xsl:param>
+<xsl:param name="footer.column.widths">1 0 1</xsl:param>
+<xsl:param name="headers.on.blank.pages" select="1"/>
+<xsl:param name="footers.on.blank.pages" select="1"/>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/summary.xml b/doc/design/summary.xml
new file mode 100644
index 0000000..8b68654
--- /dev/null
+++ b/doc/design/summary.xml
@@ -0,0 +1,53 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-summary"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Summary</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+ <para>
+
+ &SCons; offers a robust and feature-rich design for an SC-build
+ tool. With a Build Engine based on the proven design of
+ the &Cons; utility, it offers increased simplification of the
+ user interface for unsophisticated users with the addition
+ of the "do-the-right-thing" <function>env.Make</function>
+ method, increased flexibility for sophisticated users with the
+ addition of &Builder; and &Scanner; objects, a mechanism to
+ allow tool-masters (and users) to share working construction
+ environments, and embeddability to provide reliable dependency
+ management in a variety of environments and interfaces.
+
+ </para>
+
+</chapter>
diff --git a/doc/design/titlepage/SConsBuildBricks_path.svg b/doc/design/titlepage/SConsBuildBricks_path.svg
new file mode 100644
index 0000000..ed0c60d
--- /dev/null
+++ b/doc/design/titlepage/SConsBuildBricks_path.svg
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="636.73999"
+ height="80.330002"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.1 r9760"
+ version="1.0"
+ sodipodi:docname="SConsBuildBricks.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="80.565423"
+ inkscape:cy="53.016465"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="942"
+ inkscape:window-height="667"
+ inkscape:window-x="52"
+ inkscape:window-y="25"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>2008-05-18</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the pixeled SCons logo (author unknown).</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.5/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:prohibits
+ rdf:resource="http://web.resource.org/cc/CommercialUse" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.3227,-503.6795)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline">
+ <g
+ transform="translate(-264.04696,-505.06832)"
+ style="display:inline"
+ id="Brick-to-Brick-9"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170-4"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143-1"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145-9"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147-5"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149-7"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185-4">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155-1"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218-2"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ style="font-size:12.22589397px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ id="text1316-2"
+ transform="translate(0.27574335,-0.05632028)">
+ <path
+ d="m 3.8227174,71.530541 0,3.265412 1.9341746,0 c 0.6486997,10e-7 1.1282631,-0.133322 1.4386916,-0.399969 0.3143968,-0.270623 0.4715981,-0.68253 0.4716043,-1.235722 C 7.6671817,72.603095 7.5099804,72.193178 7.1955836,71.930509 6.8851551,71.663867 6.4055917,71.530545 5.756892,71.530541 l -1.9341746,0 m 0,-3.665381 0,2.686354 1.7849327,0 c 0.5890032,5e-6 1.0267789,-0.109439 1.3133285,-0.328332 C 7.211497,70.00032 7.3567589,69.662038 7.3567648,69.208337 7.3567589,68.758629 7.211497,68.422337 6.9209786,68.199462 6.634429,67.976602 6.1966533,67.865168 5.6076501,67.86516 l -1.7849327,0 m -1.2058743,-0.990966 3.0803522,0 c 0.9193247,9e-6 1.6277254,0.191038 2.1252042,0.573089 0.497466,0.382067 0.7462022,0.925307 0.7462093,1.629721 -7.1e-6,0.545237 -0.1273601,0.979033 -0.3820592,1.301389 -0.2547126,0.322368 -0.6288118,0.523347 -1.1222988,0.602937 0.5929814,0.127358 1.0526459,0.394003 1.3789949,0.799937 0.3303146,0.401962 0.4954754,0.905404 0.495483,1.510328 -7.6e-6,0.795958 -0.2706325,1.410834 -0.8118758,1.844629 -0.5412567,0.433797 -1.311344,0.650695 -2.3102642,0.650695 l -3.1997456,0 0,-8.912725"
+ id="path3187"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 10.837085,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3189"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 18.711086,69.100883 1.09842,0 0,6.686036 -1.09842,0 0,-6.686036 m 0,-2.602778 1.09842,0 0,1.390934 -1.09842,0 0,-1.390934"
+ id="path3191"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 22.101862,66.498105 1.09842,0 0,9.288814 -1.09842,0 0,-9.288814"
+ id="path3193"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 29.892286,70.115728 0,-3.617623 1.09842,0 0,9.288814 -1.09842,0 0,-1.002906 c -0.230833,0.397979 -0.523347,0.694473 -0.877543,0.889482 -0.350225,0.191029 -0.772081,0.286544 -1.265571,0.286544 -0.807898,0 -1.466552,-0.322362 -1.975962,-0.967087 -0.505433,-0.644724 -0.758149,-1.492417 -0.758149,-2.543082 0,-1.050658 0.252716,-1.898351 0.758149,-2.543081 0.50941,-0.644718 1.168064,-0.96708 1.975962,-0.967087 0.49349,7e-6 0.915346,0.09751 1.265571,0.292514 0.354196,0.191036 0.64671,0.485539 0.877543,0.883512 M 26.1493,72.44987 c -2e-6,0.807899 0.165159,1.442674 0.495483,1.904327 0.334299,0.457676 0.791973,0.686513 1.373025,0.686512 0.581044,10e-7 1.038718,-0.228836 1.373025,-0.686512 0.334296,-0.461653 0.501447,-1.096428 0.501453,-1.904327 -6e-6,-0.807891 -0.167157,-1.440676 -0.501453,-1.898356 -0.334307,-0.461649 -0.791981,-0.692477 -1.373025,-0.692482 -0.581052,5e-6 -1.038726,0.230833 -1.373025,0.692482 -0.330324,0.45768 -0.495485,1.090465 -0.495483,1.898356"
+ id="path3195"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 39.927309,76.407765 c -0.310427,0.795955 -0.61289,1.315316 -0.90739,1.558085 -0.294507,0.242764 -0.688505,0.364148 -1.181996,0.36415 l -0.877542,0 0,-0.91933 0.644725,0 c 0.302461,-10e-7 0.537268,-0.07164 0.704421,-0.214908 0.167149,-0.143274 0.352208,-0.481555 0.55518,-1.014845 l 0.196999,-0.501453 -2.704262,-6.578581 1.164086,0 2.089386,5.229435 2.089387,-5.229435 1.164086,0 -2.93708,7.306882"
+ id="path3197"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 46.971524,69.870971 c -0.589011,6e-6 -1.054645,0.230833 -1.396904,0.692482 -0.342263,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507423,1.892387 0.342258,0.457676 0.809882,0.686514 1.402873,0.686513 0.585024,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513387,-1.090458 0.513393,-1.886418 -6e-6,-0.791972 -0.171137,-1.418788 -0.513393,-1.880447 -0.342266,-0.465629 -0.80591,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955144,7e-6 1.705332,0.310429 2.250568,0.931269 0.545223,0.620851 0.817838,1.480484 0.817845,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817845,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250568,0.931269 -0.95913,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541251,-0.624825 -0.811876,-1.484457 -0.811876,-2.5789 0,-1.098415 0.270625,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297407,-0.931262 2.256537,-0.931269"
+ id="path3199"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 51.741295,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3201"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 63.489616,70.127667 c -0.123378,-0.07163 -0.258691,-0.123368 -0.405938,-0.155212 -0.143277,-0.03581 -0.302468,-0.05372 -0.477574,-0.05373 -0.62085,6e-6 -1.098423,0.202975 -1.432722,0.608907 -0.330324,0.401963 -0.495485,0.981021 -0.495483,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.230825,-0.405932 0.531298,-0.706405 0.901421,-0.901421 0.370116,-0.198982 0.819831,-0.298476 1.349146,-0.298483 0.07561,7e-6 0.159187,0.006 0.250727,0.01791 0.09153,0.008 0.193014,0.0219 0.304453,0.04179 l 0.006,1.128269"
+ id="path3203"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 72.808278,69.297882 0,1.038724 c -0.310428,-0.159186 -0.63279,-0.27858 -0.967087,-0.358181 -0.334306,-0.07959 -0.680547,-0.119388 -1.038723,-0.119393 -0.545234,5e-6 -0.955151,0.08358 -1.229753,0.250726 -0.270628,0.167156 -0.40594,0.417882 -0.405938,0.752179 -2e-6,0.254711 0.0975,0.45569 0.292514,0.602937 0.195007,0.143276 0.587015,0.280579 1.176026,0.411908 l 0.376089,0.08357 c 0.780033,0.167155 1.333223,0.403952 1.65957,0.710391 0.330316,0.302467 0.495477,0.726313 0.495483,1.271541 -6e-6,0.620848 -0.246752,1.11235 -0.74024,1.47451 -0.489518,0.36216 -1.16409,0.54324 -2.02372,0.54324 -0.358183,0 -0.732282,-0.03582 -1.122299,-0.107454 -0.38604,-0.06766 -0.793967,-0.171131 -1.223783,-0.310423 l 0,-1.134238 c 0.405937,0.210929 0.805905,0.370121 1.199905,0.477574 0.393996,0.103475 0.784014,0.155212 1.170056,0.155211 0.517368,10e-7 0.915346,-0.08755 1.193935,-0.262665 0.27858,-0.179089 0.417873,-0.429816 0.417877,-0.752179 -4e-6,-0.298482 -0.101489,-0.527319 -0.304453,-0.686513 -0.198994,-0.159189 -0.638759,-0.31241 -1.319298,-0.459665 l -0.38206,-0.08955 c -0.680544,-0.143269 -1.172047,-0.362157 -1.474509,-0.656664 -0.302465,-0.29848 -0.453696,-0.706407 -0.453695,-1.223784 -10e-7,-0.6288 0.222866,-1.114333 0.668603,-1.4566 0.445734,-0.342255 1.078519,-0.513385 1.898357,-0.513392 0.405934,7e-6 0.787993,0.02985 1.146177,0.08955 0.358176,0.0597 0.688498,0.149248 0.990966,0.268635"
+ id="path3205"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 77.51238,69.870971 c -0.589011,6e-6 -1.054646,0.230833 -1.396904,0.692482 -0.342264,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507422,1.892387 0.342259,0.457676 0.809883,0.686514 1.402874,0.686513 0.585023,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513386,-1.090458 0.513392,-1.886418 -6e-6,-0.791972 -0.171136,-1.418788 -0.513392,-1.880447 -0.342266,-0.465629 -0.805911,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955143,7e-6 1.705331,0.310429 2.250567,0.931269 0.545224,0.620851 0.817839,1.480484 0.817846,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817846,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250567,0.931269 -0.959131,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541252,-0.624825 -0.811877,-1.484457 -0.811876,-2.5789 -10e-7,-1.098415 0.270624,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297406,-0.931262 2.256537,-0.931269"
+ id="path3207"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 85.780384,66.498105 0,0.91336 -1.050663,0 c -0.394002,8e-6 -0.668607,0.0796 -0.823815,0.238787 -0.151235,0.159199 -0.22685,0.445743 -0.226848,0.859633 l 0,0.590998 1.808812,0 0,0.853663 -1.808812,0 0,5.832373 -1.10439,0 0,-5.832373 -1.050663,0 0,-0.853663 1.050663,0 0,-0.465635 c -10e-7,-0.744211 0.173119,-1.285461 0.519362,-1.623751 0.346239,-0.342253 0.895448,-0.513383 1.64763,-0.513392 l 1.038724,0"
+ id="path3209"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 87.565311,67.202526 0,1.898357 2.262506,0 0,0.853663 -2.262506,0 0,3.629563 c -3e-6,0.545232 0.07362,0.895452 0.220878,1.050662 0.151229,0.155213 0.455682,0.232819 0.91336,0.232818 l 1.128268,0 0,0.91933 -1.128268,0 c -0.847696,0 -1.432724,-0.157202 -1.755084,-0.471605 -0.322364,-0.318382 -0.483545,-0.89545 -0.483544,-1.731205 l 0,-3.629563 -0.805906,0 0,-0.853663 0.805906,0 0,-1.898357 1.10439,0"
+ id="path3211"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 90.639696,69.100883 1.09842,0 1.373026,5.217496 1.367055,-5.217496 1.29542,0 1.373025,5.217496 1.367055,-5.217496 1.098421,0 -1.749115,6.686036 -1.29542,0 -1.438691,-5.480162 -1.444662,5.480162 -1.295419,0 -1.749115,-6.686036"
+ id="path3213"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 104.32219,72.425992 c -0.8875,3e-6 -1.50237,0.101487 -1.84463,0.304453 -0.34226,0.202972 -0.51339,0.549213 -0.51339,1.038724 0,0.39002 0.12735,0.700443 0.38206,0.931269 0.25868,0.226848 0.6089,0.340272 1.05066,0.340271 0.6089,10e-7 1.09643,-0.214907 1.46257,-0.644725 0.37011,-0.433794 0.55517,-1.008872 0.55518,-1.725236 l 0,-0.244756 -1.09245,0 m 2.19087,-0.453696 0,3.814623 -1.09842,0 0,-1.014845 c -0.25073,0.405938 -0.56314,0.706412 -0.93724,0.901421 -0.3741,0.191029 -0.83178,0.286544 -1.37302,0.286544 -0.68453,0 -1.22976,-0.191029 -1.6357,-0.573089 -0.40195,-0.386038 -0.60293,-0.901419 -0.60293,-1.546145 0,-0.752177 0.25072,-1.319295 0.75218,-1.701358 0.50543,-0.382055 1.2576,-0.573084 2.25653,-0.573088 l 1.54018,0 0,-0.107455 c -1e-5,-0.505427 -0.16716,-0.895446 -0.50145,-1.170056 -0.33033,-0.278579 -0.79596,-0.417871 -1.39691,-0.417877 -0.38206,6e-6 -0.75417,0.04577 -1.11633,0.137302 -0.36216,0.09154 -0.71039,0.228844 -1.04469,0.411908 l 0,-1.014845 c 0.40196,-0.155205 0.79198,-0.270618 1.17006,-0.346241 0.37807,-0.07959 0.7462,-0.119386 1.10439,-0.119393 0.96708,7e-6 1.68941,0.250733 2.16699,0.752179 0.47757,0.501458 0.71635,1.261596 0.71636,2.280415"
+ id="path3215"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.65586,70.127667 c -0.12338,-0.07163 -0.25869,-0.123368 -0.40594,-0.155212 -0.14327,-0.03581 -0.30247,-0.05372 -0.47757,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33033,0.401963 -0.49549,0.981021 -0.49549,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23083,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81984,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15919,0.006 0.25073,0.01791 0.0915,0.008 0.19301,0.0219 0.30445,0.04179 l 0.006,1.128269"
+ id="path3217"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 119.27622,72.169296 0,0.53727 -5.05034,0 c 0.0477,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06658,0 -1.91229,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.2945,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32635,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3219"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 121.35964,74.270621 1.2596,0 0,1.026784 -0.97903,1.910296 -0.77008,0 0.48951,-1.910296 0,-1.026784"
+ id="path3221"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 133.66315,72.44987 c -1e-5,-0.807891 -0.16716,-1.440676 -0.50146,-1.898356 -0.33032,-0.461649 -0.78601,-0.692477 -1.36705,-0.692482 -0.58105,5e-6 -1.03873,0.230833 -1.37303,0.692482 -0.33032,0.45768 -0.49548,1.090465 -0.49548,1.898356 0,0.807899 0.16516,1.442674 0.49548,1.904327 0.3343,0.457676 0.79198,0.686513 1.37303,0.686512 0.58104,10e-7 1.03673,-0.228836 1.36705,-0.686512 0.3343,-0.461653 0.50145,-1.096428 0.50146,-1.904327 m -3.73702,-2.334142 c 0.23082,-0.397973 0.52135,-0.692476 0.87157,-0.883512 0.3542,-0.195003 0.77606,-0.292507 1.26557,-0.292514 0.81187,7e-6 1.47053,0.322369 1.97596,0.967087 0.50941,0.64473 0.76412,1.492423 0.76412,2.543081 0,1.050665 -0.25471,1.898358 -0.76412,2.543082 -0.50543,0.644725 -1.16409,0.967087 -1.97596,0.967087 -0.48951,0 -0.91137,-0.09551 -1.26557,-0.286544 -0.35022,-0.195009 -0.64075,-0.491503 -0.87157,-0.889482 l 0,1.002906 -1.10439,0 0,-9.288814 1.10439,0 0,3.617623"
+ id="path3223"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 142.34306,72.169296 0,0.53727 -5.05035,0 c 0.0478,0.756162 0.27461,1.33323 0.68055,1.731206 0.40991,0.394 0.97902,0.590999 1.70732,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22379,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.18199,-0.465634 l 0,1.038723 c -0.394,0.167151 -0.79795,0.294504 -1.21184,0.382059 -0.41391,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06659,0 -1.91229,-0.310423 -2.53712,-0.931269 -0.62084,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88352,-2.602778 0.59298,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89942,7e-6 1.60981,0.29053 2.13117,0.871572 0.52533,0.577074 0.78799,1.363081 0.788,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.17711,-1.080506 -0.50743,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30138,-0.537271 -0.61289,6e-6 -1.1044,0.173126 -1.47451,0.519362 -0.36615,0.346246 -0.57707,0.833769 -0.63279,1.46257 l 3.91611,-0.006"
+ id="path3225"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 145.23238,67.202526 0,1.898357 2.26251,0 0,0.853663 -2.26251,0 0,3.629563 c 0,0.545232 0.0736,0.895452 0.22088,1.050662 0.15123,0.155213 0.45568,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.8477,0 -1.43273,-0.157202 -1.75509,-0.471605 -0.32236,-0.318382 -0.48354,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3227"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 150.03199,67.202526 0,1.898357 2.2625,0 0,0.853663 -2.2625,0 0,3.629563 c -1e-5,0.545232 0.0736,0.895452 0.22087,1.050662 0.15123,0.155213 0.45569,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.84769,0 -1.43272,-0.157202 -1.75508,-0.471605 -0.32236,-0.318382 -0.48355,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3229"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 159.46407,72.169296 0,0.53727 -5.05034,0 c 0.0478,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39798,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83376,0.131333 -1.2596,0.131333 -1.06658,0 -1.91228,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39094,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3231"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.14123,70.127667 c -0.12337,-0.07163 -0.25869,-0.123368 -0.40593,-0.155212 -0.14328,-0.03581 -0.30247,-0.05372 -0.47758,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33032,0.401963 -0.49548,0.981021 -0.49548,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23082,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81983,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15918,0.006 0.25072,0.01791 0.0915,0.008 0.19302,0.0219 0.30446,0.04179 l 0.006,1.128269"
+ id="path3233"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.33823,74.270621 1.25961,0 0,1.516298 -1.25961,0 0,-1.516298"
+ id="path3235"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(1.0124967,0,0,0.98765755,0.27574335,-0.05632028)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160-1">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ id="path3176"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ id="path3178"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ id="path3180"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ id="path3182"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ id="path3184"
+ inkscape:connector-curvature="0" />
+ </g>
+ <image
+ id="image1340"
+ height="80.018639"
+ width="465.43411"
+ sodipodi:absref="bricks.jpg"
+ xlink:href="bricks.jpg"
+ x="171.31058"
+ y="0.17131744" />
+ </g>
+</svg>
diff --git a/doc/design/titlepage/SCons_path.svg b/doc/design/titlepage/SCons_path.svg
new file mode 100644
index 0000000..ef580ee
--- /dev/null
+++ b/doc/design/titlepage/SCons_path.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="167.9814"
+ height="58.247482"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.3.1 r9886"
+ version="1.0"
+ sodipodi:docname="SCons_path.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <title
+ id="title2996">SCons - Build your software, better (SCons Logo)</title>
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="7.1635215"
+ inkscape:cy="31.742841"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="868"
+ inkscape:window-height="789"
+ inkscape:window-x="210"
+ inkscape:window-y="24"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0"
+ fit-margin-left="2"
+ fit-margin-top="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>SCons - Build your software, better (SCons Logo)</dc:title>
+ <dc:date>2011-05-19</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the SCons (Constructs using) logo by Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;.</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.32267,-503.68225)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline"
+ transform="translate(2.5546741e-5,-0.00274857)">
+ <g
+ transform="translate(-264.3227,-505.012)"
+ style="display:inline"
+ id="Brick-to-Brick"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ transform="scale(1.0124967,0.98765755)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ style=""
+ id="path3017" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ style=""
+ id="path3019" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ style=""
+ id="path3021" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ style=""
+ id="path3023" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ style=""
+ id="path3025" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/design/titlepage/bricks.jpg b/doc/design/titlepage/bricks.jpg
new file mode 100755
index 0000000..b2dc16b
--- /dev/null
+++ b/doc/design/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/design/titlepage/mapnik_final_colors.svg b/doc/design/titlepage/mapnik_final_colors.svg
new file mode 100644
index 0000000..23bb54a
--- /dev/null
+++ b/doc/design/titlepage/mapnik_final_colors.svg
@@ -0,0 +1,6397 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ fill-opacity="1"
+ color-rendering="auto"
+ color-interpolation="auto"
+ stroke="black"
+ text-rendering="auto"
+ stroke-linecap="square"
+ width="600"
+ stroke-miterlimit="10"
+ stroke-opacity="1"
+ shape-rendering="auto"
+ fill="black"
+ stroke-dasharray="none"
+ font-weight="normal"
+ stroke-width="1"
+ height="701"
+ font-family="'Dialog'"
+ font-style="normal"
+ stroke-linejoin="miter"
+ font-size="12"
+ stroke-dashoffset="0"
+ image-rendering="auto"
+ id="svg8168"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="mapnik_final_colors.svg">
+ <title
+ id="title9830">SCons, Book titlepage background</title>
+ <metadata
+ id="metadata9828">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="" />
+ <dc:title>SCons, Book titlepage background</dc:title>
+ <dc:date>2013-04-15</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on a SCons dependency tree of the Mapnik project (www.mapnik.org)</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="735"
+ inkscape:window-height="480"
+ id="namedview9826"
+ showgrid="false"
+ inkscape:zoom="0.33666191"
+ inkscape:cx="300"
+ inkscape:cy="350.5"
+ inkscape:window-x="85"
+ inkscape:window-y="99"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg8168" />
+ <!--Generated by ySVG-->
+ <defs
+ id="genericDefs" />
+ <g
+ id="g8171">
+ <defs
+ id="defs1">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1">
+ <path
+ d="M0 0 L600 0 L600 701 L0 701 L0 0 Z"
+ id="path8175" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2">
+ <path
+ d="M-871 -1293 L3138 -1293 L3138 3390.8484 L-871 3390.8484 L-871 -1293 Z"
+ id="path8178" />
+ </clipPath>
+ </defs>
+ <g
+ fill="white"
+ transform="scale(0.1497,0.1497) translate(871,1293)"
+ stroke="white"
+ id="g8180">
+ <rect
+ x="-871"
+ y="-1293"
+ clip-path="url(#clipPath2)"
+ width="4009"
+ height="4684"
+ stroke="none"
+ id="rect8182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8184">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ width="142.2207"
+ height="30"
+ stroke="none"
+ id="rect8186" />
+ <text
+ x="1140.3896"
+ y="112.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8188">./src/agg_renderer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8190">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="142.2207"
+ height="30"
+ id="rect8192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8194">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ width="69.1484"
+ height="30"
+ stroke="none"
+ id="rect8196" />
+ <text
+ x="-37.5742"
+ y="1701.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8198">./agg/src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8200">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="69.1484"
+ height="30"
+ id="rect8202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8204">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ width="114.5938"
+ height="30"
+ stroke="none"
+ id="rect8206" />
+ <text
+ x="1140.7031"
+ y="-645.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8208">./src/graphics.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8210">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="114.5938"
+ height="30"
+ id="rect8212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8214">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ width="111.8516"
+ height="30"
+ stroke="none"
+ id="rect8216" />
+ <text
+ x="1676.0742"
+ y="-44.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8218">./src/font_set.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8220">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="111.8516"
+ height="30"
+ id="rect8222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8224">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ width="234.9277"
+ height="30"
+ stroke="none"
+ id="rect8226" />
+ <text
+ x="-608.9639"
+ y="2105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8228">./agg/src/agg_vcgen_markers_term.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8230">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9277"
+ height="30"
+ id="rect8232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8234">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ width="107.8789"
+ height="30"
+ stroke="none"
+ id="rect8236" />
+ <text
+ x="2062.0605"
+ y="-128.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8238">./src/params.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8240">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="107.8789"
+ height="30"
+ id="rect8242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8244">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ width="189.2188"
+ height="30"
+ stroke="none"
+ id="rect8246" />
+ <text
+ x="-71.1094"
+ y="1867.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8248">./agg/src/agg_image_filters.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8250">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="189.2188"
+ height="30"
+ id="rect8252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8254">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ width="258.3125"
+ height="30"
+ stroke="none"
+ id="rect8256" />
+ <text
+ x="2434.3438"
+ y="1824.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8258">./bindings/python/mapnik_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8260">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3125"
+ height="30"
+ id="rect8262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8264">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ width="112.4844"
+ height="30"
+ stroke="none"
+ id="rect8266" />
+ <text
+ x="1775.7578"
+ y="209.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8268">./src/memory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8270">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="112.4844"
+ height="30"
+ id="rect8272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8274">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ width="263.3223"
+ height="30"
+ stroke="none"
+ id="rect8276" />
+ <text
+ x="1302.8389"
+ y="3367.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8278">./bindings/python/mapnik_font_engine.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8280">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="263.3223"
+ height="30"
+ id="rect8282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8284">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ width="205.625"
+ height="30"
+ stroke="none"
+ id="rect8286" />
+ <text
+ x="651.1875"
+ y="459.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8288">./plugins/input/shape/dbffile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8290">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="205.625"
+ height="30"
+ id="rect8292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8294">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ width="196.5547"
+ height="30"
+ stroke="none"
+ id="rect8296" />
+ <text
+ x="148.2227"
+ y="1905.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8298">./agg/src/agg_line_aa_basics.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8300">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.5547"
+ height="30"
+ id="rect8302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8304">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ width="121.8652"
+ height="30"
+ stroke="none"
+ id="rect8306" />
+ <text
+ x="1844.5674"
+ y="-283.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8308">./src/save_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8310">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.8652"
+ height="30"
+ id="rect8312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8314">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ width="283.4844"
+ height="30"
+ stroke="none"
+ id="rect8316" />
+ <text
+ x="662.2578"
+ y="2818.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8318">./bindings/python/mapnik_view_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8320">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="283.4844"
+ height="30"
+ id="rect8322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8324">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ width="94.1094"
+ height="30"
+ stroke="none"
+ id="rect8326" />
+ <text
+ x="1878.4453"
+ y="-141.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8328">./src/color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8330">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1094"
+ height="30"
+ id="rect8332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8334">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ width="98.4805"
+ height="30"
+ stroke="none"
+ id="rect8336" />
+ <text
+ x="101.7598"
+ y="1483.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8338">./agg/libagg.a</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8340">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="98.4805"
+ height="30"
+ id="rect8342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8344">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ width="187.4668"
+ height="30"
+ stroke="none"
+ id="rect8346" />
+ <text
+ x="1946.2666"
+ y="-908.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8348">./src/font_engine_freetype.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8350">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="187.4668"
+ height="30"
+ id="rect8352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8354">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ width="101.4277"
+ height="30"
+ stroke="none"
+ id="rect8356" />
+ <text
+ x="1931.2861"
+ y="171.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8358">./src/stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8360">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.4277"
+ height="30"
+ id="rect8362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8364">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ width="229.8535"
+ height="30"
+ stroke="none"
+ id="rect8366" />
+ <text
+ x="1557.0732"
+ y="2643.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8368">./bindings/python/mapnik_image.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8370">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8535"
+ height="30"
+ id="rect8372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8374">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ width="125.1816"
+ height="30"
+ stroke="none"
+ id="rect8376" />
+ <text
+ x="1962.9092"
+ y="-717.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8378">./src/image_util.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8380">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="125.1816"
+ height="30"
+ id="rect8382" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8384">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ width="297.4121"
+ height="30"
+ stroke="none"
+ id="rect8386" />
+ <text
+ x="973.7939"
+ y="2871.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8388">./bindings/python/mapnik_datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8390">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="297.4121"
+ height="30"
+ id="rect8392" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8394">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ width="94.1914"
+ height="30"
+ stroke="none"
+ id="rect8396" />
+ <text
+ x="-147.5957"
+ y="2495.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8398">./agg/include</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8400">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1914"
+ height="30"
+ id="rect8402" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8404">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ width="216.8984"
+ height="30"
+ stroke="none"
+ id="rect8406" />
+ <text
+ x="896.5508"
+ y="2465.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8408">./bindings/python/mapnik_rule.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8410">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.8984"
+ height="30"
+ id="rect8412" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8414">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ width="174.0664"
+ height="30"
+ stroke="none"
+ id="rect8416" />
+ <text
+ x="277.4668"
+ y="1204.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8418">./agg/src/agg_bezier_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8420">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.0664"
+ height="30"
+ id="rect8422" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8424">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ width="252.9336"
+ height="30"
+ stroke="none"
+ id="rect8426" />
+ <text
+ x="1538.0332"
+ y="1608.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8428">./bindings/python/mapnik_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8430">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="252.9336"
+ height="30"
+ id="rect8432" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8434">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ width="131.8848"
+ height="30"
+ stroke="none"
+ id="rect8436" />
+ <text
+ x="192.0576"
+ y="1708.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8438">./agg/src/agg_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8440">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="131.8848"
+ height="30"
+ id="rect8442" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8444">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ width="220.5371"
+ height="30"
+ stroke="none"
+ id="rect8446" />
+ <text
+ x="-159.7686"
+ y="559.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8448">./plugins/input/shape/shapefile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8450">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.5371"
+ height="30"
+ id="rect8452" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8454">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ width="271.0918"
+ height="30"
+ stroke="none"
+ id="rect8456" />
+ <text
+ x="-52.0459"
+ y="-1056.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8458">./plugins/input/raster/raster_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8460">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="271.0918"
+ height="30"
+ id="rect8462" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8464">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ width="265.666"
+ height="30"
+ stroke="none"
+ id="rect8466" />
+ <text
+ x="-705.333"
+ y="-423.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8468">./plugins/input/raster/raster_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8470">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="265.666"
+ height="30"
+ id="rect8472" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8474">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ width="110.9609"
+ height="30"
+ stroke="none"
+ id="rect8476" />
+ <text
+ x="1995.0195"
+ y="330.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8478">./src/unicode.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8480">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="110.9609"
+ height="30"
+ id="rect8482" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8484">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ width="233.9141"
+ height="30"
+ stroke="none"
+ id="rect8486" />
+ <text
+ x="2896.043"
+ y="2280.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8488">./bindings/python/mapnik/ogcserver</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8490">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="233.9141"
+ height="30"
+ id="rect8492" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8494">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ width="219.7695"
+ height="30"
+ stroke="none"
+ id="rect8496" />
+ <text
+ x="1964.6152"
+ y="1988.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8498">./bindings/python/mapnik_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8500">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.7695"
+ height="30"
+ id="rect8502" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8504">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ width="97.9062"
+ height="30"
+ stroke="none"
+ id="rect8506" />
+ <text
+ x="1411.0469"
+ y="64.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8508">./src/arrow.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8510">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="97.9062"
+ height="30"
+ id="rect8512" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8514">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="67.0742"
+ height="30"
+ stroke="none"
+ id="rect8516" />
+ <text
+ x="385.9629"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8518">./plugins</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8520">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="67.0742"
+ height="30"
+ id="rect8522" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8524">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ width="218.0352"
+ height="30"
+ stroke="none"
+ id="rect8526" />
+ <text
+ x="-593.0176"
+ y="-884.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8528">./plugins/input/raster/raster.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8530">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="218.0352"
+ height="30"
+ id="rect8532" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8534">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ width="199.3555"
+ height="30"
+ stroke="none"
+ id="rect8536" />
+ <text
+ x="511.8223"
+ y="1265.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8538">./agg/src/agg_vcgen_contour.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8540">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="199.3555"
+ height="30"
+ id="rect8542" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8544">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ width="239.832"
+ height="30"
+ stroke="none"
+ id="rect8546" />
+ <text
+ x="484.084"
+ y="1581.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8548">./agg/src/agg_trans_warp_magnifier.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8550">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="239.832"
+ height="30"
+ id="rect8552" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8554">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ width="258.3594"
+ height="30"
+ stroke="none"
+ id="rect8556" />
+ <text
+ x="1814.8203"
+ y="2902.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8558">./bindings/python/mapnik_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8560">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3594"
+ height="30"
+ id="rect8562" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8564">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ width="267.0488"
+ height="30"
+ stroke="none"
+ id="rect8566" />
+ <text
+ x="207.9756"
+ y="791.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8568">./plugins/input/shape/shape_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8570">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="267.0488"
+ height="30"
+ id="rect8572" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8574">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ width="121.2441"
+ height="30"
+ stroke="none"
+ id="rect8576" />
+ <text
+ x="1345.8779"
+ y="-311.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8578">./src/load_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8580">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.2441"
+ height="30"
+ id="rect8582" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8584">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ width="294.6406"
+ height="30"
+ stroke="none"
+ id="rect8586" />
+ <text
+ x="1642.1797"
+ y="2329.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8588">./bindings/python/mapnik_point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8590">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="294.6406"
+ height="30"
+ id="rect8592" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8594">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ width="204.0371"
+ height="30"
+ stroke="none"
+ id="rect8596" />
+ <text
+ x="1877.9814"
+ y="-479.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8598">./src/line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8600">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="204.0371"
+ height="30"
+ id="rect8602" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8604">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ width="171.1016"
+ height="30"
+ stroke="none"
+ id="rect8606" />
+ <text
+ x="2413.4492"
+ y="2228.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8608">./bindings/python/mapnik</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8610">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="171.1016"
+ height="30"
+ id="rect8612" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8614">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ width="143.8027"
+ height="30"
+ stroke="none"
+ id="rect8616" />
+ <text
+ x="-221.4014"
+ y="-694.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8618">./plugins/input/raster</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8620">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.8027"
+ height="30"
+ id="rect8622" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8624">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ width="90.2246"
+ height="30"
+ stroke="none"
+ id="rect8626" />
+ <text
+ x="1756.3877"
+ y="-562.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8628">./src/map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8630">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="90.2246"
+ height="30"
+ id="rect8632" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8634">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ width="88.6543"
+ height="30"
+ stroke="none"
+ id="rect8636" />
+ <text
+ x="1474.6729"
+ y="-552.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8638">./src/wkb.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8640">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="88.6543"
+ height="30"
+ id="rect8642" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8644">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ width="190.7598"
+ height="30"
+ stroke="none"
+ id="rect8646" />
+ <text
+ x="-568.8799"
+ y="1541.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8648">./agg/src/agg_vcgen_stroke.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8650">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="190.7598"
+ height="30"
+ id="rect8652" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8654">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ width="163.0332"
+ height="30"
+ stroke="none"
+ id="rect8656" />
+ <text
+ x="-126.5166"
+ y="1293.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8658">./agg/src/agg_gsv_text.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8660">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="163.0332"
+ height="30"
+ id="rect8662" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8664">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ width="202.502"
+ height="30"
+ stroke="none"
+ id="rect8666" />
+ <text
+ x="325.249"
+ y="-184.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8668">./plugins/input/shape/shape.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8670">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="202.502"
+ height="30"
+ id="rect8672" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8674">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ width="74.627"
+ height="30"
+ stroke="none"
+ id="rect8676" />
+ <text
+ x="2226.1865"
+ y="1987.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8678">./bindings</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8680">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="74.627"
+ height="30"
+ id="rect8682" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8684">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ width="41.2637"
+ height="30"
+ stroke="none"
+ id="rect8686" />
+ <text
+ x="1565.8682"
+ y="-296.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8688">./src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8690">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="41.2637"
+ height="30"
+ id="rect8692" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8694">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ width="221.8203"
+ height="30"
+ stroke="none"
+ id="rect8696" />
+ <text
+ x="1378.5898"
+ y="1882.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8698">./bindings/python/mapnik_filter.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8700">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.8203"
+ height="30"
+ id="rect8702" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8704">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ width="196.4668"
+ height="30"
+ stroke="none"
+ id="rect8706" />
+ <text
+ x="-476.2334"
+ y="1794.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8708">./agg/src/agg_vcgen_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8710">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.4668"
+ height="30"
+ id="rect8712" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8714">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ width="227.7383"
+ height="30"
+ stroke="none"
+ id="rect8716" />
+ <text
+ x="1299.1309"
+ y="2672.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8718">./bindings/python/mapnik_coord.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8720">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.7383"
+ height="30"
+ id="rect8722" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8724">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ width="116.9492"
+ height="30"
+ stroke="none"
+ id="rect8726" />
+ <text
+ x="1757.0254"
+ y="-785.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8728">./src/envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8730">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="116.9492"
+ height="30"
+ id="rect8732" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8734">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ width="229.0859"
+ height="30"
+ stroke="none"
+ id="rect8736" />
+ <text
+ x="-346.043"
+ y="2059.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8738">./agg/src/agg_vpgen_segmentator.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8740">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.0859"
+ height="30"
+ id="rect8742" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8744">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ width="222.3477"
+ height="30"
+ stroke="none"
+ id="rect8746" />
+ <text
+ x="1714.3262"
+ y="1999.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8748">./bindings/python/mapnik_layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8750">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="222.3477"
+ height="30"
+ id="rect8752" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8754">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ width="285.3828"
+ height="30"
+ stroke="none"
+ id="rect8756" />
+ <text
+ x="1345.3086"
+ y="2964.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8758">./bindings/python/mapnik_line_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8760">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="285.3828"
+ height="30"
+ id="rect8762" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8764">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ width="169.5078"
+ height="30"
+ stroke="none"
+ id="rect8766" />
+ <text
+ x="1757.2461"
+ y="415.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8768">./src/shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8770">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="169.5078"
+ height="30"
+ id="rect8772" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8774">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ width="221.9844"
+ height="30"
+ stroke="none"
+ id="rect8776" />
+ <text
+ x="-407.9922"
+ y="1011.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8778">./agg/src/agg_trans_double_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8780">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.9844"
+ height="30"
+ id="rect8782" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8784">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ width="123.9336"
+ height="30"
+ stroke="none"
+ id="rect8786" />
+ <text
+ x="1311.5332"
+ y="220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8788">./src/projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8790">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="123.9336"
+ height="30"
+ id="rect8792" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8794">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ width="124.9941"
+ height="30"
+ stroke="none"
+ id="rect8796" />
+ <text
+ x="1116.5029"
+ y="-309.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8798">./src/tiff_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8800">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="124.9941"
+ height="30"
+ id="rect8802" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8804">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ width="281.3574"
+ height="30"
+ stroke="none"
+ id="rect8806" />
+ <text
+ x="1691.8213"
+ y="3282.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8808">./bindings/python/mapnik_proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8810">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="281.3574"
+ height="30"
+ id="rect8812" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8814">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ width="221.416"
+ height="30"
+ stroke="none"
+ id="rect8816" />
+ <text
+ x="1283.292"
+ y="1625.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8818">./bindings/python/mapnik_style.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8820">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.416"
+ height="30"
+ id="rect8822" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8824">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ width="299.0527"
+ height="30"
+ stroke="none"
+ id="rect8826" />
+ <text
+ x="1818.9736"
+ y="1696.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8828">./bindings/python/mapnik_shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8830">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="299.0527"
+ height="30"
+ id="rect8832" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8834">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ width="143.6797"
+ height="30"
+ stroke="none"
+ id="rect8836" />
+ <text
+ x="1468.6602"
+ y="265.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8838">./src/image_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8840">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.6797"
+ height="30"
+ id="rect8842" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8844">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ width="156.4941"
+ height="30"
+ stroke="none"
+ id="rect8846" />
+ <text
+ x="-332.2471"
+ y="1403.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8848">./agg/src/agg_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8850">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="156.4941"
+ height="30"
+ id="rect8852" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8854">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ width="216.5762"
+ height="30"
+ stroke="none"
+ id="rect8856" />
+ <text
+ x="-147.2881"
+ y="1523.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8858">./agg/src/agg_trans_single_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8860">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.5762"
+ height="30"
+ id="rect8862" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8864">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ width="229.8184"
+ height="30"
+ stroke="none"
+ id="rect8866" />
+ <text
+ x="-444.9092"
+ y="-1258.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8868">./plugins/input/raster/raster_info.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8870">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8184"
+ height="30"
+ id="rect8872" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8874">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ width="181.918"
+ height="30"
+ stroke="none"
+ id="rect8876" />
+ <text
+ x="65.041"
+ y="1139.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8878">./agg/src/agg_vcgen_dash.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8880">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="181.918"
+ height="30"
+ id="rect8882" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8884">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ width="253.4785"
+ height="30"
+ stroke="none"
+ id="rect8886" />
+ <text
+ x="2119.2607"
+ y="3074.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8888">./bindings/python/mapnik_projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8890">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="253.4785"
+ height="30"
+ id="rect8892" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8894">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ width="261.4648"
+ height="30"
+ stroke="none"
+ id="rect8896" />
+ <text
+ x="1089.2676"
+ y="2110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8898">./bindings/python/mapnik_image_view.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8900">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="261.4648"
+ height="30"
+ id="rect8902" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8904">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ width="113.375"
+ height="30"
+ stroke="none"
+ id="rect8906" />
+ <text
+ x="1591.8125"
+ y="105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8908">./src/distance.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8910">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="113.375"
+ height="30"
+ id="rect8912" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8914">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ width="167.8672"
+ height="30"
+ stroke="none"
+ id="rect8916" />
+ <text
+ x="2110.0664"
+ y="-299.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8918">./src/datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8920">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="167.8672"
+ height="30"
+ id="rect8922" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8924">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ width="260.1934"
+ height="30"
+ stroke="none"
+ id="rect8926" />
+ <text
+ x="2145.9033"
+ y="1632.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8928">./bindings/python/mapnik_parameters.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8930">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="260.1934"
+ height="30"
+ id="rect8932" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8934">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ width="101.709"
+ height="30"
+ stroke="none"
+ id="rect8936" />
+ <text
+ x="1291.1455"
+ y="-454.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8938">./src/plugin.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8940">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.709"
+ height="30"
+ id="rect8942" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8944">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ width="175.5781"
+ height="30"
+ stroke="none"
+ id="rect8946" />
+ <text
+ x="-536.7891"
+ y="1318.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8948">./agg/src/agg_arrowhead.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8950">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="175.5781"
+ height="30"
+ id="rect8952" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8954">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ width="235.6426"
+ height="30"
+ stroke="none"
+ id="rect8956" />
+ <text
+ x="1824.1787"
+ y="2623.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8958">./bindings/python/mapnik_feature.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8960">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="235.6426"
+ height="30"
+ id="rect8962" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8964">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ width="251.2461"
+ height="30"
+ stroke="none"
+ id="rect8966" />
+ <text
+ x="-848.123"
+ y="1633.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8968">./agg/src/agg_embedded_raster_fonts.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8970">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="251.2461"
+ height="30"
+ id="rect8972" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8974">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ width="122.6445"
+ height="30"
+ stroke="none"
+ id="rect8976" />
+ <text
+ x="1676.6777"
+ y="-200.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8978">./src/libmapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8980">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="122.6445"
+ height="30"
+ id="rect8982" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8984">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ width="165.623"
+ height="30"
+ stroke="none"
+ id="rect8986" />
+ <text
+ x="1046.1885"
+ y="-106.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8988">./src/placement_finder.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8990">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.623"
+ height="30"
+ id="rect8992" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8994">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ width="178.209"
+ height="30"
+ stroke="none"
+ id="rect8996" />
+ <text
+ x="-158.1045"
+ y="1023.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8998">./agg/src/agg_sqrt_tables.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9000">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="178.209"
+ height="30"
+ id="rect9002" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9004">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ width="227.9492"
+ height="30"
+ stroke="none"
+ id="rect9006" />
+ <text
+ x="228.5254"
+ y="1497.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9008">./agg/src/agg_vpgen_clip_polyline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9010">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.9492"
+ height="30"
+ id="rect9012" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9014">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ width="298.0508"
+ height="30"
+ stroke="none"
+ id="rect9016" />
+ <text
+ x="1475.9746"
+ y="1023.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9018">./bindings/python/mapnik_raster_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9020">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="298.0508"
+ height="30"
+ id="rect9022" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9024">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ width="198.3945"
+ height="30"
+ stroke="none"
+ id="rect9026" />
+ <text
+ x="372.8027"
+ y="2048.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9028">./agg/src/agg_line_profile_aa.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9030">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="198.3945"
+ height="30"
+ id="rect9032" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9034">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="333.582"
+ height="30"
+ stroke="none"
+ id="rect9036" />
+ <text
+ x="922.209"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9038">./bindings/python/mapnik_line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9040">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="333.582"
+ height="30"
+ id="rect9042" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9044">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ width="223.6543"
+ height="30"
+ stroke="none"
+ id="rect9046" />
+ <text
+ x="1304.1729"
+ y="1312.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9048">./bindings/python/mapnik_color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9050">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="223.6543"
+ height="30"
+ id="rect9052" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9054">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ width="151.8125"
+ height="30"
+ stroke="none"
+ id="rect9056" />
+ <text
+ x="1641.5938"
+ y="-374.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9058">./src/proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9060">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.8125"
+ height="30"
+ id="rect9062" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9064">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ width="182.457"
+ height="30"
+ stroke="none"
+ id="rect9066" />
+ <text
+ x="1305.2715"
+ y="-126.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9068">./src/memory_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9070">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.457"
+ height="30"
+ id="rect9072" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9074">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ width="103.7715"
+ height="30"
+ stroke="none"
+ id="rect9076" />
+ <text
+ x="-187.8857"
+ y="-241.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9078">./plugins/input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9080">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="103.7715"
+ height="30"
+ id="rect9082" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9084">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ width="234.9629"
+ height="30"
+ stroke="none"
+ id="rect9086" />
+ <text
+ x="660.0186"
+ y="1876.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9088">./bindings/python/mapnik_python.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9090">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9629"
+ height="30"
+ id="rect9092" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9094">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="130.6953"
+ height="30"
+ stroke="none"
+ id="rect9096" />
+ <text
+ x="1595.6523"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9098">./src/png_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9100">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="130.6953"
+ height="30"
+ id="rect9102" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9104">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ width="246.4941"
+ height="30"
+ stroke="none"
+ id="rect9106" />
+ <text
+ x="1143.2529"
+ y="2400.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9108">./bindings/python/mapnik_envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9110">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="246.4941"
+ height="30"
+ id="rect9112" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9114">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ width="230.9727"
+ height="30"
+ stroke="none"
+ id="rect9116" />
+ <text
+ x="1014.5137"
+ y="1471.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9118">./bindings/python/mapnik_stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9120">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="230.9727"
+ height="30"
+ id="rect9122" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9124">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ width="219.418"
+ height="30"
+ stroke="none"
+ id="rect9126" />
+ <text
+ x="269.791"
+ y="342.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9128">./plugins/input/shape/shape.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9130">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.418"
+ height="30"
+ id="rect9132" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9134">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ width="227.252"
+ height="30"
+ stroke="none"
+ id="rect9136" />
+ <text
+ x="1970.374"
+ y="1334.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9138">./bindings/python/mapnik_query.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9140">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.252"
+ height="30"
+ id="rect9142" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9144">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ width="165.0957"
+ height="30"
+ stroke="none"
+ id="rect9146" />
+ <text
+ x="1349.4521"
+ y="-859.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9148">./src/point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9150">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.0957"
+ height="30"
+ id="rect9152" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9154">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ width="138.5"
+ height="30"
+ stroke="none"
+ id="rect9156" />
+ <text
+ x="1485.75"
+ y="475.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9158">./src/filter_factory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9160">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="138.5"
+ height="30"
+ id="rect9162" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9164">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ width="311.2754"
+ height="30"
+ stroke="none"
+ id="rect9166" />
+ <text
+ x="2057.8623"
+ y="2285.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9168">./bindings/python/mapnik_polygon_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9170">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="311.2754"
+ height="30"
+ id="rect9172" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9174">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ width="236.4219"
+ height="30"
+ stroke="none"
+ id="rect9176" />
+ <text
+ x="-87.2109"
+ y="2244.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9178">./agg/src/agg_vcgen_smooth_poly1.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9180">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="236.4219"
+ height="30"
+ id="rect9182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9184">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ width="305.5625"
+ height="30"
+ stroke="none"
+ id="rect9186" />
+ <text
+ x="-365.2812"
+ y="125.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9188">./plugins/input/shape/shape_index_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9190">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="305.5625"
+ height="30"
+ id="rect9192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9194">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ width="220.1738"
+ height="30"
+ stroke="none"
+ id="rect9196" />
+ <text
+ x="840.4131"
+ y="2185.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9198">./bindings/python/python_cairo.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9200">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.1738"
+ height="30"
+ id="rect9202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9204">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ width="128.7676"
+ height="30"
+ stroke="none"
+ id="rect9206" />
+ <text
+ x="2153.6162"
+ y="-476.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9208">./src/symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9210">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="128.7676"
+ height="30"
+ id="rect9212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9214">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ width="194.3867"
+ height="30"
+ stroke="none"
+ id="rect9216" />
+ <text
+ x="1419.8066"
+ y="2358.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9218">./bindings/python/_mapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9220">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="194.3867"
+ height="30"
+ id="rect9222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9224">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ width="182.8438"
+ height="30"
+ stroke="none"
+ id="rect9226" />
+ <text
+ x="186.0781"
+ y="2266.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9228">./agg/src/agg_trans_affine.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9230">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.8438"
+ height="30"
+ id="rect9232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9234">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ width="229.9297"
+ height="30"
+ stroke="none"
+ id="rect9236" />
+ <text
+ x="869.0352"
+ y="-574.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9238">./src/polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9240">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.9297"
+ height="30"
+ id="rect9242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9244">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ width="359.4746"
+ height="30"
+ stroke="none"
+ id="rect9246" />
+ <text
+ x="2100.7627"
+ y="2648.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9248">./bindings/python/mapnik_polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9250">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="359.4746"
+ height="30"
+ id="rect9252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9254">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="151.7188"
+ height="30"
+ stroke="none"
+ id="rect9256" />
+ <text
+ x="-251.3594"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9258">./agg/src/agg_curves.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9260">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.7188"
+ height="30"
+ id="rect9262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9264">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ width="157.7891"
+ height="30"
+ stroke="none"
+ id="rect9266" />
+ <text
+ x="1284.6055"
+ y="-615.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9268">./src/text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9270">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="157.7891"
+ height="30"
+ id="rect9272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9274">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ width="174.459"
+ height="30"
+ stroke="none"
+ id="rect9276" />
+ <text
+ x="1553.2705"
+ y="-824.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9278">./src/scale_denominator.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9280">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.459"
+ height="30"
+ id="rect9282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9284">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ width="219.3418"
+ height="30"
+ stroke="none"
+ id="rect9286" />
+ <text
+ x="635.8291"
+ y="50.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9288">./plugins/input/shape/shape_io.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9290">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.3418"
+ height="30"
+ id="rect9292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9294">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ width="92.8027"
+ height="30"
+ stroke="none"
+ id="rect9296" />
+ <text
+ x="1512.0986"
+ y="-420.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9298">./src/layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9300">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="92.8027"
+ height="30"
+ id="rect9302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9304">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ width="45.6816"
+ height="30"
+ stroke="none"
+ id="rect9306" />
+ <text
+ x="-33.8408"
+ y="2057.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9308">./agg</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9310">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="45.6816"
+ height="30"
+ id="rect9312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9314">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ width="151.5664"
+ height="30"
+ stroke="none"
+ id="rect9316" />
+ <text
+ x="1881.2168"
+ y="13.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9318">./src/libxml2_loader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9320">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.5664"
+ height="30"
+ id="rect9322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9324">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ width="229.1797"
+ height="30"
+ stroke="none"
+ id="rect9326" />
+ <text
+ x="-794.0898"
+ y="1220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9328">./agg/src/agg_vpgen_clip_polygon.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9330">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.1797"
+ height="30"
+ id="rect9332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9334">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ width="144.4941"
+ height="30"
+ stroke="none"
+ id="rect9336" />
+ <text
+ x="158.7529"
+ y="116.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9338">./plugins/input/shape</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9340">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="144.4941"
+ height="30"
+ id="rect9342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9344">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ width="249.4824"
+ height="30"
+ stroke="none"
+ id="rect9346" />
+ <text
+ x="550.2588"
+ y="2305.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9348">./bindings/python/mapnik_geometry.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9350">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="249.4824"
+ height="30"
+ id="rect9352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9354">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ width="287.334"
+ height="30"
+ stroke="none"
+ id="rect9356" />
+ <text
+ x="930.333"
+ y="1110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9358">./bindings/python/mapnik_text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9360">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="287.334"
+ height="30"
+ id="rect9362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9364">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ width="191.3984"
+ height="30"
+ stroke="none"
+ id="rect9366" />
+ <text
+ x="440.3008"
+ y="1825.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9368">./agg/src/agg_rounded_rect.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9370">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="191.3984"
+ height="30"
+ id="rect9372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9374">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ width="121.4961"
+ height="30"
+ stroke="none"
+ id="rect9376" />
+ <text
+ x="1548.252"
+ y="2084.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9378">./bindings/python</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9380">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.4961"
+ height="30"
+ id="rect9382" />
+ <path
+ fill="none"
+ d="M2577.5508 2232.655 L2889.043 2264.1677"
+ clip-path="url(#clipPath2)"
+ id="path9384" />
+ <path
+ fill="none"
+ d="M24.5742 1698.3611 L185.0576 1702.3578"
+ clip-path="url(#clipPath2)"
+ id="path9386" />
+ <path
+ fill="none"
+ d="M-31.6769 1682.5 L-131.8263 1613.1986 L-307.8319 1479.7761 L-322.1423 1467.1691 L-335.9341 1453.8378 L-420.4944 1355.8801 L-431.8936 1341.8081 L-442.9968 1329"
+ clip-path="url(#clipPath2)"
+ id="path9388" />
+ <path
+ fill="none"
+ d="M7.2593 1682.5 L170.8382 1540.3337 L183.5103 1528.4264 L195.0703 1515.1906 L203.2204 1499.588 L208.0298 1482.4165 L212.1165 1464.9495 L217.4223 1447.5245 L224.4582 1430.9707 L348.8411 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9390" />
+ <path
+ fill="none"
+ d="M-30.3421 1682.5 L-117.9062 1617.9313 L-127.6741 1609.3701 L-136.938 1599.8932 L-145.2881 1589.3641 L-152.7591 1578.7178 L-251.9406 1414.5"
+ clip-path="url(#clipPath2)"
+ id="path9392" />
+ <path
+ fill="none"
+ d="M-41.5549 1712.5 L-150.9451 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9394" />
+ <path
+ fill="none"
+ d="M-44.5742 1694.2324 L-603.877 1641.3727"
+ clip-path="url(#clipPath2)"
+ id="path9396" />
+ <path
+ fill="none"
+ d="M-0.4959 1682.5 L5.2959 1673.359 L54.5589 1589.4877 L61.0658 1576.5562 L66.893 1562.6425 L71.3597 1548.4495 L73.9725 1533.6312 L74.9174 1518.3745 L73.7647 1503.0833 L70.803 1487.9604 L65.953 1473.3381 L59.488 1459.3448 L52.1157 1446.1976 L-42.0651 1304"
+ clip-path="url(#clipPath2)"
+ id="path9398" />
+ <path
+ fill="none"
+ d="M-7.5982 1712.5 L14.0982 1848"
+ clip-path="url(#clipPath2)"
+ id="path9400" />
+ <path
+ fill="none"
+ d="M8.3456 1712.5 L221.1544 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9402" />
+ <path
+ fill="none"
+ d="M24.5742 1709.7097 L224.8548 1780.4376 L274.5859 1796.1027 L290.3831 1803.1301 L305.0963 1812.2388 L317.8884 1823.064 L329.0148 1835.4955 L338.6302 1848.3523 L455.3114 2029"
+ clip-path="url(#clipPath2)"
+ id="path9404" />
+ <path
+ fill="none"
+ d="M24.5742 1709.5155 L220.8472 1777.7257 L238.4817 1782.3004 L324.5341 1794.4855 L341.7867 1796.4042 L433.3008 1808.4272"
+ clip-path="url(#clipPath2)"
+ id="path9406" />
+ <path
+ fill="none"
+ d="M-0.9936 1682.5 L50.1437 1597.332 L57.3786 1583.8605 L63.929 1570.2368 L69.2742 1555.1427 L72.9572 1539.9404 L74.755 1524.0978 L74.5616 1508.144 L69.7308 1462.8016 L67.2398 1448.1791 L46.6858 1301.0886 L40.6985 1270.2456 L36.1484 1254.5295 L30.1596 1239.6921 L-68.7682 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9408" />
+ <path
+ fill="none"
+ d="M7.5011 1712.5 L84.9684 1778.8966 L97.4166 1792.4541 L107.5913 1806.808 L115.5777 1822.2261 L120.8528 1838.3977 L123.3011 1854.1149 L127.3981 1901.7179 L129.5949 1917.3544 L132.8063 1932.9053 L137.6825 1947.8722 L264.1679 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9410" />
+ <path
+ fill="none"
+ d="M-30.3804 1682.5 L-109.8009 1624.0464 L-121.1156 1614.7283 L-132.1969 1604.0846 L-142.184 1592.3759 L-150.7367 1579.3018 L-157.7693 1565.1106 L-163.0598 1550.7333 L-165.983 1534.505 L-167.597 1518.8418 L-168.8886 1410.1838 L-169.9251 1394.0894 L-172.5114 1377.2661 L-176.7595 1361.7198 L-298.6194 1022"
+ clip-path="url(#clipPath2)"
+ id="path9412" />
+ <path
+ fill="none"
+ d="M-13.0252 1682.5 L-42.9748 1534"
+ clip-path="url(#clipPath2)"
+ id="path9414" />
+ <path
+ fill="none"
+ d="M24.5742 1687.3417 L211.2763 1632.4862 L230.4907 1627.6432 L250.3716 1624.6504 L328.7023 1621.3073 L348.4196 1619.7538 L368.0745 1617.4214 L510.9839 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9416" />
+ <path
+ fill="none"
+ d="M-44.5742 1695.8385 L-164.7434 1690.0634 L-177.8356 1690.061 L-191.578 1690.8328 L-204.8772 1693.3619 L-217.7414 1697.4427 L-240.9324 1708.3999 L-358.6783 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9418" />
+ <path
+ fill="none"
+ d="M7.529 1682.5 L138.9264 1570.0598 L148.6751 1560.6741 L158.7948 1552.2384 L178.7862 1533.6653 L188.7202 1523.3728 L197.5696 1511.4668 L203.8828 1497.4987 L207.8515 1482.9614 L211.1029 1467.9121 L215.285 1452.8943 L221.2153 1438.4976 L228.5741 1424.6746 L238.2442 1412.2913 L248.6876 1400.8505 L261.0592 1390.6781 L274.4546 1382.137 L288.1776 1374.8389 L315.8387 1363.2257 L561.9354 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9420" />
+ <path
+ fill="none"
+ d="M-1.1162 1682.5 L53.6143 1590.0895 L61.9957 1573.4156 L68.9728 1555.3479 L73.5761 1536.5132 L76.2372 1517.584 L79.7695 1480.3877 L82.222 1461.5187 L145.9323 1150"
+ clip-path="url(#clipPath2)"
+ id="path9422" />
+ <path
+ fill="none"
+ d="M-21.1026 1712.5 L-106.8676 1828.3712 L-116.5694 1839.3942 L-127.7954 1849.3232 L-139.8821 1858.0498 L-165.3045 1872.8499 L-284.2802 1934.2721 L-298.4405 1942.3529 L-312.5903 1951.3605 L-339.184 1971.7175 L-480.0865 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9424" />
+ <path
+ fill="none"
+ d="M-19.2353 1712.5 L-60.2772 1779.1603 L-74.3468 1803.9298 L-80.6547 1816.9384 L-86.1567 1831.2423 L-89.365 1846.1083 L-90.6617 1861.1736 L-90.0964 1876.3617 L-86.5496 1891.6437 L-81.7927 1905.8558 L-74.9382 1919.4861 L-66.4475 1932.3898 L-47.7518 1955.9055 L9.8738 2025.3236 L17.6516 2039.1315 L21.1875 2054.6111 L23.7724 2225"
+ clip-path="url(#clipPath2)"
+ id="path9426" />
+ <path
+ fill="none"
+ d="M-44.5742 1685.7426 L-436.3906 1552.5"
+ clip-path="url(#clipPath2)"
+ id="path9428" />
+ <path
+ fill="none"
+ d="M-34.4191 1682.5 L-422.8861 1443.8751 L-438.5209 1435.4724 L-485.9133 1412.2606 L-501.7971 1403.8612 L-517.0173 1393.6337 L-530.9767 1381.8546 L-672.3918 1231.5"
+ clip-path="url(#clipPath2)"
+ id="path9430" />
+ <path
+ fill="none"
+ d="M15.3423 1682.5 L310.1577 1508"
+ clip-path="url(#clipPath2)"
+ id="path9432" />
+ <path
+ fill="none"
+ d="M-19.574 1712.5 L-228.926 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9434" />
+ <path
+ fill="none"
+ d="M1705.7683 -190 L1229.7317 93"
+ clip-path="url(#clipPath2)"
+ id="path9436" />
+ <path
+ fill="none"
+ d="M1792.3223 -207.5711 L1889.0596 -211.6272 L1904.3265 -213.2381 L1919.7518 -216.2674 L1934.6373 -220.1078 L2143.3914 -289.0011"
+ clip-path="url(#clipPath2)"
+ id="path9438" />
+ <path
+ fill="none"
+ d="M1778.2689 -190 L1871.4453 -160.432"
+ clip-path="url(#clipPath2)"
+ id="path9440" />
+ <path
+ fill="none"
+ d="M1737.709 -220 L1784.8777 -325.4607 L1792.1422 -343.3415 L1797.3993 -362.1091 L1798.9524 -381.2829 L1796.4418 -400.2448 L1791.0763 -418.4256 L1784.3788 -435.7887 L1742.769 -535.712 L1737.2317 -553.2609 L1736.0367 -571.5535 L1739.8428 -589.6634 L1745.2104 -606.9964 L1803.3124 -775"
+ clip-path="url(#clipPath2)"
+ id="path9442" />
+ <path
+ fill="none"
+ d="M1722.7018 -190 L1671.9998 -98.3503 L1664.8926 -83.9824 L1658.9614 -68.4607 L1656.0035 -52.007 L1657.1727 -35.4369 L1662.0831 -19.4679 L1703.2703 67.3736 L1708.6812 82.8308 L1711.2114 99.089 L1709.9719 115.4139 L1705.568 131.1046 L1687.5476 173.7935 L1681.0388 187.5816 L1675.4331 201.3511 L1662.2848 228.414 L1555.0521 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9444" />
+ <path
+ fill="none"
+ d="M1737.8416 -220 L1790.4821 -335.4135 L1796.799 -350.5091 L1942.6581 -740.9563 L1956.9553 -771.0897 L2024.962 -898"
+ clip-path="url(#clipPath2)"
+ id="path9446" />
+ <path
+ fill="none"
+ d="M1730.4249 -190 L1725.5751 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9448" />
+ <path
+ fill="none"
+ d="M1715.6113 -220 L1609.3069 -323.6192 L1597.2324 -332.56 L1584.4562 -339.7423 L1534.261 -364.9576 L1521.441 -372.2469 L1509.2654 -381.3355 L1498.1863 -390.8954 L1395.7156 -491.3533 L1384.5231 -501.4753 L1372.7471 -511.0984 L1359.075 -518.9822 L1316.8344 -536.9285 L1302.9846 -545.2017 L1290.5354 -554.8357 L1278.8702 -565.0334 L1206.5126 -635"
+ clip-path="url(#clipPath2)"
+ id="path9450" />
+ <path
+ fill="none"
+ d="M1721.9266 -190 L1674.641 -111.8283 L1585.7194 54.9422 L1578.7654 70.2131 L1572.662 85.898 L1536.8547 246"
+ clip-path="url(#clipPath2)"
+ id="path9452" />
+ <path
+ fill="none"
+ d="M1737.8553 -220 L1793.4465 -341.6367 L1861.5244 -516.049 L1869.9036 -533.5408 L1879.9336 -550.3941 L1891.3851 -566.1861 L2006.2628 -707"
+ clip-path="url(#clipPath2)"
+ id="path9454" />
+ <path
+ fill="none"
+ d="M1718.7335 -220 L1563.7665 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9456" />
+ <path
+ fill="none"
+ d="M1743.1837 -220 L1839.7024 -338.8295 L1870.7987 -373.4109 L1959.0747 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9458" />
+ <path
+ fill="none"
+ d="M1737.6589 -220 L1759.5264 -269.2584 L1789.1104 -333.3076 L1793.4485 -345.0605 L1797.1232 -357.1674 L1799.2274 -369.9363 L1800.329 -382.1035 L1800.6512 -394.3187 L1795.0359 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9460" />
+ <path
+ fill="none"
+ d="M1686 -220 L1444.5 -300.5"
+ clip-path="url(#clipPath2)"
+ id="path9462" />
+ <path
+ fill="none"
+ d="M1737.9821 -190 L1759.0538 -144.7306 L1763.9989 -132.3875 L1786.4437 -83.6733 L1791.2949 -70.4718 L1794.7535 -56.8085 L1823.2671 190"
+ clip-path="url(#clipPath2)"
+ id="path9464" />
+ <path
+ fill="none"
+ d="M1792.3223 -205.6755 L1912.9915 -207.0047 L1925.9236 -205.9872 L1938.9326 -203.1653 L1962.4874 -194.9545 L2073.5273 -148"
+ clip-path="url(#clipPath2)"
+ id="path9466" />
+ <path
+ fill="none"
+ d="M1669.6777 -210.6785 L1654.0314 -212.1274 L1634.9186 -214.42 L1615.7456 -215.458 L1429.9047 -232.3959 L1393.85 -234.3698 L1375.6881 -233.3309 L1359.0819 -229.8459 L1342.7466 -224.1006 L1327.733 -217.4407 L1150.8571 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9468" />
+ <path
+ fill="none"
+ d="M1715.6975 -220 L1618.0374 -315.7292 L1606.6896 -325.8326 L1593.8826 -334.5842 L1498.2308 -379.2232 L1365.6914 -444"
+ clip-path="url(#clipPath2)"
+ id="path9470" />
+ <path
+ fill="none"
+ d="M1719.4562 -220 L1647.702 -313.2364 L1639.4208 -324.8945 L1631.936 -337.4316 L1626.1655 -351.033 L1622.7638 -364.8717 L1621.6257 -379.3865 L1622.1956 -393.6915 L1651.7098 -587"
+ clip-path="url(#clipPath2)"
+ id="path9472" />
+ <path
+ fill="none"
+ d="M1719.4407 -220 L1647.3424 -313.5588 L1638.4584 -326.7014 L1630.6166 -340.589 L1624.4246 -356.2978 L1621.1759 -371.7042 L1611.754 -432.9737 L1608.1443 -448.4993 L1571.5094 -565.6849 L1565.8434 -580.5214 L1432.4658 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9474" />
+ <path
+ fill="none"
+ d="M1689.9011 -220 L1579.2606 -260.3808 L1562.4448 -268.2509 L1547.4619 -279.0468 L1453.738 -366.6343 L1438.5922 -377.8836 L1421.4435 -385.7967 L1403.1199 -389.4229 L1331.2155 -394.633 L1313.1571 -398.5897 L1296.312 -405.6636 L1004.6323 -564"
+ clip-path="url(#clipPath2)"
+ id="path9476" />
+ <path
+ fill="none"
+ d="M1761.4546 -220 L1868.0454 -272.5"
+ clip-path="url(#clipPath2)"
+ id="path9478" />
+ <path
+ fill="none"
+ d="M1737.8378 -190 L1782.3468 -92.3615 L1788.3433 -77.1847 L1792.8481 -60.652 L1794.0735 -43.5573 L1792.6171 -26.5087 L1758.4685 174.4238 L1756.068 191.6194 L1755.7196 208.9639 L1758.5198 225.972 L1763.705 241.887 L1786.6254 300.2224 L1792.8827 313.9514 L1798.786 328.3393 L1828.4285 396"
+ clip-path="url(#clipPath2)"
+ id="path9480" />
+ <path
+ fill="none"
+ d="M1715.6499 -220 L1613.6167 -319.7058 L1600.3414 -330.6942 L1585.488 -339.5492 L1539.1113 -362.3184 L1523.2679 -371.3719 L1508.7147 -382.5849 L1496.9186 -396.8426 L1365.9385 -605"
+ clip-path="url(#clipPath2)"
+ id="path9482" />
+ <path
+ fill="none"
+ d="M1669.6777 -211.4206 L1570.3632 -221.8192 L1552.5938 -223.1205 L1391.7688 -241.755 L1373.3782 -245.8518 L1216.3251 -299"
+ clip-path="url(#clipPath2)"
+ id="path9484" />
+ <path
+ fill="none"
+ d="M1719.3217 -220 L1652.9008 -305.3127 L1637.6135 -327.1343 L1630.889 -339.1896 L1625.6447 -352.1444 L1622.0043 -365.6252 L1617.4021 -392.0246 L1616.0254 -404.7892 L1611.8835 -431.1289 L1608.2532 -444.5484 L1601.9314 -457.2315 L1593.8871 -468.5936 L1525.8938 -542"
+ clip-path="url(#clipPath2)"
+ id="path9486" />
+ <path
+ fill="none"
+ d="M1719.7517 -190 L1512.821 85.951 L1501.3052 99.9877 L1488.329 112.7794 L1384.1188 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9488" />
+ <path
+ fill="none"
+ d="M1729.2328 -220 L1712.2672 -364"
+ clip-path="url(#clipPath2)"
+ id="path9490" />
+ <path
+ fill="none"
+ d="M1722.5846 -190 L1681.4597 -116.6974 L1674.6794 -103.1759 L1667.4226 -89.8639 L1660.6564 -74.698 L1656.6792 -58.9427 L1653.626 -41.7401 L1651.9781 -24.6842 L1650.8036 -7.3245 L1649.0201 10.5424 L1642.7401 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9492" />
+ <path
+ fill="none"
+ d="M1719.2087 -220 L1694.7434 -251.1231 L1686.0302 -263.1407 L1649.7358 -309.5934 L1641.0094 -322.1074 L1632.9093 -335.3819 L1626.6534 -350.1132 L1622.9349 -365.8031 L1621.8632 -381.9264 L1623.8821 -397.968 L1628.7859 -413.585 L1635.8981 -428.3178 L1712.8442 -546.8633 L1721.0911 -560.9402 L1727.7742 -576.067 L1731.7117 -592.0207 L1732.0756 -608.6171 L1729.2048 -624.3967 L1717.8364 -653.6657 L1673.2709 -747.8106 L1666.1648 -761.2916 L1660.1403 -774.6749 L1640.9241 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9494" />
+ <path
+ fill="none"
+ d="M1669.6777 -191.6222 L1458.2584 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9496" />
+ <path
+ fill="none"
+ d="M1739.1447 -190 L1863.7595 39.5027 L1871.1771 51.7794 L1879.2983 64.0357 L1898.2384 86.2591 L1960.827 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9498" />
+ <path
+ fill="none"
+ d="M1743.6166 -220 L1839.2838 -333.7397 L1850.5449 -344.3013 L1863.4709 -352.6133 L1878.0291 -358.5926 L1893.3893 -361.687 L1968.7413 -367.1797 L1984.5386 -369.0039 L2000.3026 -372.444 L2016.0938 -377.015 L2030.8204 -383.4816 L2045.321 -390.3967 L2183.5708 -466"
+ clip-path="url(#clipPath2)"
+ id="path9500" />
+ <path
+ fill="none"
+ d="M1715.2642 -190 L1468.7358 45"
+ clip-path="url(#clipPath2)"
+ id="path9502" />
+ <path
+ fill="none"
+ d="M1738.1113 -190 L1823.2002 -10.5217 L1911.3304 184.7965 L1921.2964 202.1295 L1933.5916 217.8769 L2028.3225 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9504" />
+ <path
+ fill="none"
+ d="M1746.3147 -190 L1934.6853 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9506" />
+ <path
+ fill="none"
+ d="M1719.8269 -189.9794 L1710.9945 -178.7845 L1516.5352 81.5281 L1506.3717 94.2074 L1495.1205 106.1388 L1481.5793 115.3665 L1466.39 121.0814 L1450.9139 124.6082 L1362.7417 139.9343 L1347.4766 143.7284 L1332.6359 149.6314 L1319.3198 158.2387 L1307.5835 169.312 L1287.3872 193.3884 L672.594 973.4279 L441.6343 1256.7087 L430.5662 1268.6992 L418.3392 1279.9236 L405.4018 1289.8066 L264.9038 1384.0872 L163.1076 1464"
+ clip-path="url(#clipPath2)"
+ id="path9508" />
+ <path
+ fill="none"
+ d="M250.5503 127.5 L428.9006 228.2618 L462.1554 250.634 L726.0931 440"
+ clip-path="url(#clipPath2)"
+ id="path9510" />
+ <path
+ fill="none"
+ d="M233.8562 127.5 L362.6438 323.5"
+ clip-path="url(#clipPath2)"
+ id="path9512" />
+ <path
+ fill="none"
+ d="M233.7425 97.5 L409.7575 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9514" />
+ <path
+ fill="none"
+ d="M225.5602 127.5 L249.045 353.2842 L331.5446 772"
+ clip-path="url(#clipPath2)"
+ id="path9516" />
+ <path
+ fill="none"
+ d="M151.7529 113.9661 L-66.7188 118.3996"
+ clip-path="url(#clipPath2)"
+ id="path9518" />
+ <path
+ fill="none"
+ d="M296.2471 103.2322 L628.8291 60.5686"
+ clip-path="url(#clipPath2)"
+ id="path9520" />
+ <path
+ fill="none"
+ d="M214.4915 127.5 L-46.9915 540"
+ clip-path="url(#clipPath2)"
+ id="path9522" />
+ <path
+ fill="none"
+ d="M2239.3679 1998 L2155.4436 2071.4805 L2143.0876 2080.9946 L2129.8374 2089.5989 L2115.9492 2096.5876 L2101.1887 2102.0188 L2086.0796 2105.4854 L2071.1526 2107.5623 L1841.6396 2119.9771 L1826.8549 2120.2129 L1811.7775 2119.8667 L1796.7798 2118.3806 L1662.748 2092.3142"
+ clip-path="url(#clipPath2)"
+ id="path9524" />
+ <path
+ fill="none"
+ d="M1572.8621 -285.5 L1490.1808 -98.6625 L1481.3794 -82.0423 L1470.7261 -66.2432 L1457.8481 -52.605 L1443.4885 -41.2841 L1412.5255 -21.1364 L1228.6635 93"
+ clip-path="url(#clipPath2)"
+ id="path9526" />
+ <path
+ fill="none"
+ d="M1574.2365 -285.5 L1458.2635 45"
+ clip-path="url(#clipPath2)"
+ id="path9528" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.875 L1738.1715 -280.3118 L1750.5458 -277.2058 L1762.5206 -272.6636 L1773.9989 -266.3214 L1784.2484 -258.9727 L1900.7533 -160.5"
+ clip-path="url(#clipPath2)"
+ id="path9530" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6243 L1682.269 -291.1569 L1699.8048 -290.2136 L1717.6859 -290.6404 L1735.2581 -293.9877 L1751.9829 -299.9295 L1782.4274 -314.1314 L1796.3497 -321.4707 L1811.2347 -328.2465 L1839.545 -342.5801 L1868.8745 -355.7003 L1884.9718 -359.8295 L1900.8519 -361.6436 L1917.1348 -359.9464 L2114.6455 -319"
+ clip-path="url(#clipPath2)"
+ id="path9532" />
+ <path
+ fill="none"
+ d="M1581.8135 -285.5 L1639.1865 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9534" />
+ <path
+ fill="none"
+ d="M1585.9137 -315.5 L1626.9812 -411.5464 L1635.4854 -427.641 L1709.5739 -541.4645 L1718.5413 -556.3099 L1726.7808 -571.8899 L1802.88 -775"
+ clip-path="url(#clipPath2)"
+ id="path9536" />
+ <path
+ fill="none"
+ d="M1579.1661 -285.5 L1570.9286 84.607 L1571.356 101.6438 L1573.7692 118.6585 L1578.5906 135.3658 L1612.851 229.6021 L1617.0092 246.5683 L1617.9976 264.2934 L1615.7949 281.7931 L1611.1025 298.5992 L1553.4745 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9538" />
+ <path
+ fill="none"
+ d="M1585.9491 -315.5 L1628.7637 -415.0833 L1636.6608 -429.5917 L1716.1844 -549.9628 L1741.313 -592.6497 L1751.0687 -606.4507 L1761.7155 -618.8658 L2019.1653 -898"
+ clip-path="url(#clipPath2)"
+ id="path9540" />
+ <path
+ fill="none"
+ d="M1588.1608 -285.5 L1716.3392 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9542" />
+ <path
+ fill="none"
+ d="M1564.959 -315.5 L1392.1792 -493.7342 L1380.0123 -505.272 L1366.1857 -515.327 L1350.8662 -522.8212 L1319.0122 -536.3331 L1303.6681 -545.1216 L1289.8102 -555.9888 L1276.7415 -567.3019 L1252.1761 -591.2873 L1206.6294 -635"
+ clip-path="url(#clipPath2)"
+ id="path9544" />
+ <path
+ fill="none"
+ d="M1578.2711 -285.5 L1534.7289 246"
+ clip-path="url(#clipPath2)"
+ id="path9546" />
+ <path
+ fill="none"
+ d="M1585.9148 -315.5 L1623.9624 -404.4688 L1630.5997 -418.2294 L1638.6387 -431.1348 L1648.6869 -442.6392 L1660.5364 -452.3571 L1673.6339 -459.9249 L1687.4928 -466.009 L1797.6302 -504.2472 L1812.218 -509.8861 L1826.6222 -517.39 L1839.3597 -527.7557 L1862.4513 -551.5592 L1932.7964 -628.1892 L1945.5214 -641.296 L2004.9359 -707"
+ clip-path="url(#clipPath2)"
+ id="path9548" />
+ <path
+ fill="none"
+ d="M1576.1129 -315.5 L1554.8871 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9550" />
+ <path
+ fill="none"
+ d="M1600.1318 -287.4944 L1707.2042 -220"
+ clip-path="url(#clipPath2)"
+ id="path9552" />
+ <path
+ fill="none"
+ d="M1589.1985 -285.5 L1661.0529 -174.3671 L1671.0265 -160.6411 L1682.8058 -148.7924 L1696.5781 -138.8818 L1710.4188 -131.841 L1753.0952 -113.1987 L1780.0155 -98.1506 L1926.3145 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9554" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6609 L1686.9719 -290.92 L1702.6021 -290.1562 L1718.5648 -290.5393 L1734.2698 -293.5994 L1749.1108 -299.236 L1762.6196 -306.9124 L1786.0736 -324.64 L1955.3499 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9556" />
+ <path
+ fill="none"
+ d="M1558.8682 -302.2193 L1460.1221 -310.4482"
+ clip-path="url(#clipPath2)"
+ id="path9558" />
+ <path
+ fill="none"
+ d="M1585.8168 -315.5 L1625.8408 -410.543 L1631.3073 -420.9417 L1637.6289 -430.8379 L1645.0138 -440.2143 L1653.0944 -448.5581 L1669.6295 -463.5915 L1776.2988 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9560" />
+ <path
+ fill="none"
+ d="M1583.7883 -285.5 L1651.3751 -49.0925 L1657.1646 -31.9459 L1664.5016 -14.997 L1674.2026 0.9056 L1813.9171 190"
+ clip-path="url(#clipPath2)"
+ id="path9562" />
+ <path
+ fill="none"
+ d="M1562.7354 -285.5 L1406.2646 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9564" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.8126 L1735.9352 -280.1231 L1753.366 -275.8355 L1770.0992 -269.3911 L1786.1671 -261.7391 L1846.3505 -230.1474 L1862.1223 -222.5492 L1878.9531 -216.0268 L1896.1616 -211.8175 L1930.9523 -204.9131 L1948.24 -199.5791 L2072.7815 -148"
+ clip-path="url(#clipPath2)"
+ id="path9566" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.0663 L1433.3401 -247.8382 L1418.0536 -243.2349 L1402.4036 -239.6292 L1370.939 -233.1345 L1355.0715 -228.8596 L1340.0222 -222.6089 L1151.171 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9568" />
+ <path
+ fill="none"
+ d="M1558.8682 -313.8748 L1358.1388 -444"
+ clip-path="url(#clipPath2)"
+ id="path9570" />
+ <path
+ fill="none"
+ d="M1583.8586 -315.5 L1612.3093 -413.4114 L1650.684 -587"
+ clip-path="url(#clipPath2)"
+ id="path9572" />
+ <path
+ fill="none"
+ d="M1566.2933 -315.5 L1514.8843 -373.89 L1504.1537 -387.4749 L1495.3708 -403.1423 L1489.4203 -419.789 L1460.8938 -520.2078 L1456.6606 -538.3257 L1453.6722 -556.3632 L1452.3645 -574.7655 L1449.7781 -629.4624 L1430.1891 -809.7579 L1428.8347 -827.6007 L1426.6023 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9574" />
+ <path
+ fill="none"
+ d="M1558.8682 -312.1941 L1452.7843 -372.322 L1440.3207 -378.6023 L1427.2346 -384.2264 L1413.2999 -388.1193 L1399.0243 -390.3098 L1343.8071 -393.2482 L1329.5986 -394.5866 L1315.0881 -397.9596 L1301.3245 -402.9852 L1288.3081 -409.2307 L1004.5057 -564"
+ clip-path="url(#clipPath2)"
+ id="path9576" />
+ <path
+ fill="none"
+ d="M1600.1318 -312.8633 L1685.4681 -364"
+ clip-path="url(#clipPath2)"
+ id="path9578" />
+ <path
+ fill="none"
+ d="M1572.8585 -285.5 L1487.5991 -92.9386 L1478.4438 -76.6212 L1468.6229 -61.6985 L1402.7 22.2378 L1394.6174 38.8205 L1389.4469 56.8215 L1368.6556 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9580" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5135 L1693.5884 -289.5154 L1709.191 -288.7659 L1837.5674 -287.9075"
+ clip-path="url(#clipPath2)"
+ id="path9582" />
+ <path
+ fill="none"
+ d="M1583.7517 -315.5 L1607.5015 -399.2886 L1610.8323 -416.8157 L1610.6674 -434.742 L1607.6373 -452.1016 L1580.8672 -566.9084 L1577.3993 -584.0591 L1575.7869 -601.7263 L1577.35 -619.4314 L1580.9305 -636.3984 L1614.8164 -764.4524 L1619.7084 -780.1863 L1624.0825 -796.5162 L1629.0833 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9584" />
+ <path
+ fill="none"
+ d="M1583.8019 -285.5 L1652.9181 -44.5011 L1657.9495 -28.9759 L1664.0696 -13.6799 L1706.2524 72.6705 L1712.1622 88.0203 L1755.9924 223.5812 L1761.5636 238.7214 L1828.6061 396"
+ clip-path="url(#clipPath2)"
+ id="path9586" />
+ <path
+ fill="none"
+ d="M1589.1637 -285.5 L1664.5575 -168.474 L1674.3359 -156.5337 L1685.8951 -145.9557 L1699.149 -137.4223 L1755.5259 -110.7229 L1769.1538 -101.467 L1780.8571 -89.4849 L1791.1833 -75.2934 L1809.1395 -47.7027 L1874.6827 57.0747 L1886.2128 72.1643 L1898.6288 86.4205 L1960.8711 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9588" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5899 L1680.4246 -291.1563 L1695.1542 -290.3194 L1710.582 -290.1999 L1726.1627 -291.7365 L1741.3241 -295.5708 L1755.6965 -301.1228 L1857.4005 -351.0461 L1870.8876 -356.5639 L1885.2015 -360.5438 L1899.5851 -362.6042 L1969.0137 -367.0708 L1983.0198 -368.654 L1997.3274 -370.9745 L2011.1989 -374.9344 L2024.6467 -380.273 L2049.2156 -392.3064 L2183.6387 -466"
+ clip-path="url(#clipPath2)"
+ id="path9590" />
+ <path
+ fill="none"
+ d="M1566.01 -315.4926 L1563.0609 -318.6098 L1506.4263 -383.1129 L1498.4028 -393.4107 L1491.4194 -403.7922 L1366.5425 -604.9753"
+ clip-path="url(#clipPath2)"
+ id="path9592" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.1273 L1428.6742 -246.6027 L1414.7637 -243.1767 L1400.3463 -241.7605 L1385.8116 -243.0361 L1372.291 -245.7882 L1216.0447 -299"
+ clip-path="url(#clipPath2)"
+ id="path9594" />
+ <path
+ fill="none"
+ d="M1589.1405 -285.5 L1662.5685 -171.2502 L1672.3359 -158.9074 L1684.024 -147.4209 L1697.4471 -138.3556 L1711.6204 -131.2945 L1739.769 -118.6583 L1753.9266 -111.6033 L1767.6046 -102.8544 L1779.1833 -91.2369 L1788.0878 -77.7131 L1910.2734 182.3812 L1918.0563 197.3588 L1928.0577 211.2185 L1939.489 224.0622 L2028.2697 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9596" />
+ <path
+ fill="none"
+ d="M1566.3265 -315.5 L1508.5015 -381.3427 L1499.0966 -395.045 L1493.3429 -410.4246 L1491.4697 -427.2559 L1492.8239 -443.7798 L1503.1702 -508.4587 L1509.2715 -542"
+ clip-path="url(#clipPath2)"
+ id="path9598" />
+ <path
+ fill="none"
+ d="M389.0941 -587 L-119.5941 -261"
+ clip-path="url(#clipPath2)"
+ id="path9600" />
+ <path
+ fill="none"
+ d="M128.5263 1464 L-36.5263 1304"
+ clip-path="url(#clipPath2)"
+ id="path9602" />
+ <path
+ fill="none"
+ d="M144.218 1464 L148.782 1150"
+ clip-path="url(#clipPath2)"
+ id="path9604" />
+ <path
+ fill="none"
+ d="M151.1333 1494 L243.8667 1689"
+ clip-path="url(#clipPath2)"
+ id="path9606" />
+ <path
+ fill="none"
+ d="M193.2402 1482.5999 L221.5254 1484.6676"
+ clip-path="url(#clipPath2)"
+ id="path9608" />
+ <path
+ fill="none"
+ d="M131.7539 1494 L55.0677 1587.9316 L42.7085 1601.2833 L29.2008 1613.6403 L14.6157 1624.2771 L-30.3586 1651.8414 L-44.221 1662.6852 L-54.3718 1676.7185 L-60.8013 1692.8674 L-91.1062 1788.2023 L-96.9305 1804.7229 L-104.2114 1820.9052 L-114.1318 1835.8052 L-126.848 1848.3961 L-141.6743 1858.7947 L-188.0667 1884.5151 L-282.5689 1933.7706 L-298.8415 1943.1725 L-314.7511 1953.4357 L-329.8501 1964.6443 L-400.5812 2021.3927 L-414.3242 2033.2428 L-480.0018 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9610" />
+ <path
+ fill="none"
+ d="M136.8978 1464 L44.4644 1268.7787 L30.7535 1243.0776 L22.1897 1230.6184 L11.9742 1219.5244 L0.3747 1209.786 L-281.4855 1022"
+ clip-path="url(#clipPath2)"
+ id="path9612" />
+ <path
+ fill="none"
+ d="M114.6057 1464 L19.7533 1415.5966 L5.1171 1409.1525 L-10.0416 1403.6228 L-25.3298 1399.9612 L-41.5699 1398.2047 L-57.5674 1398.7446 L-73.0805 1401.1993 L-88.2248 1405.7168 L-102.3748 1411.7216 L-115.7571 1419.2593 L-412.0113 1622.5936 L-426.6128 1631.0859 L-442.5374 1638.3893 L-459.532 1643.1439 L-477.3163 1645.5321 L-495.0157 1645.5688 L-530.7623 1644.0494 L-603.877 1638.6968"
+ clip-path="url(#clipPath2)"
+ id="path9614" />
+ <path
+ fill="none"
+ d="M158.371 1494 L187.1266 1524.0143 L197.6006 1535.7157 L208.6994 1546.4695 L219.3031 1557.908 L242.3572 1579.9839 L254.935 1590.5386 L268.6319 1600.2789 L283.2219 1608.0371 L298.8794 1613.9297 L314.9249 1617.7449 L331.4337 1619.5149 L348.0342 1619.0803 L364.3559 1617.3861 L380.0265 1615.2402 L510.7629 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9616" />
+ <path
+ fill="none"
+ d="M94.7598 1489.3663 L25.25 1504"
+ clip-path="url(#clipPath2)"
+ id="path9618" />
+ <path
+ fill="none"
+ d="M155.4991 1464 L346.0009 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9620" />
+ <path
+ fill="none"
+ d="M115.0461 1464 L39.6685 1424.9496 L8.9389 1410.5149 L-6.7761 1404.1628 L-84.1233 1378.9407 L-98.8205 1373.088 L-217.905 1317.8275 L-231.9918 1312.7723 L-246.5594 1309.5073 L-261.5918 1307.9351 L-317.872 1308.4144 L-368.2109 1310.45"
+ clip-path="url(#clipPath2)"
+ id="path9622" />
+ <path
+ fill="none"
+ d="M136.8183 1464 L-68.8183 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9624" />
+ <path
+ fill="none"
+ d="M139.0195 1494 L21.4805 1848"
+ clip-path="url(#clipPath2)"
+ id="path9626" />
+ <path
+ fill="none"
+ d="M137.2531 1494 L45.4936 1698.0031 L38.4408 1711.5551 L30.6577 1724.6348 L20.0462 1735.8912 L7.5286 1744.2808 L-31.3456 1765.874 L-44.1084 1774.0631 L-55.9533 1783.681 L-66.6299 1794.6614 L-75.9345 1806.4084 L-228.7105 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9628" />
+ <path
+ fill="none"
+ d="M131.8724 1494 L58.0749 1585.2761 L48.5865 1596.0686 L38.2552 1606.5284 L26.8 1616.1461 L14.9864 1624.6083 L-33.392 1653.4683 L-56.7115 1671.0442 L-165.1028 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9630" />
+ <path
+ fill="none"
+ d="M145.7432 1494 L170.5621 1707.5676 L173.274 1721.3608 L176.9338 1735.2415 L233.8552 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9632" />
+ <path
+ fill="none"
+ d="M143.1595 1494 L134.3284 1651.611 L125.1812 1858.2568 L123.4991 1875.0447 L120.446 1891.9172 L28.1562 2225"
+ clip-path="url(#clipPath2)"
+ id="path9634" />
+ <path
+ fill="none"
+ d="M114.9596 1464 L32.9453 1421.6379 L-1.0743 1406.0146 L-18.5145 1399.7577 L-71.2901 1383.0033 L-88.9296 1376.5465 L-106.0097 1368.7263 L-238.8289 1302.1188 L-409.014 1224.1451 L-427.4155 1217.8203 L-446.496 1213.999 L-465.6518 1212.6815 L-571.9102 1214.5187"
+ clip-path="url(#clipPath2)"
+ id="path9636" />
+ <path
+ fill="none"
+ d="M115.0747 1464 L26.8791 1418.2637 L1.6098 1407.1744 L-11.6988 1402.4895 L-25.5129 1399.5509 L-39.428 1397.7089 L-53.2746 1396.8475 L-182.7529 1398.5009"
+ clip-path="url(#clipPath2)"
+ id="path9638" />
+ <path
+ fill="none"
+ d="M158.4073 1494 L233.2235 1571.894 L245.2775 1583.5159 L257.7588 1594.7755 L511.0151 1806"
+ clip-path="url(#clipPath2)"
+ id="path9640" />
+ <path
+ fill="none"
+ d="M143.4499 1494 L128.6067 1898.7615 L129.6534 1916.7771 L133.5966 1934.4972 L144.7699 1967.9235 L264.0977 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9642" />
+ <path
+ fill="none"
+ d="M157.9143 1494 L239.0956 1581.5155 L299.5429 1639.5773 L309.3708 1650.3474 L318.2313 1662.1793 L325.1808 1675.1222 L341.235 1713.9014 L459.376 2029"
+ clip-path="url(#clipPath2)"
+ id="path9644" />
+ <path
+ fill="none"
+ d="M131.9298 1494 L59.0988 1584.5089 L39.4312 1605.1343 L27.9236 1614.6936 L15.4433 1623.2069 L1.9076 1630.1975 L-12.1443 1635.9338 L-196.2444 1689.7206 L-211.4697 1695.0406 L-226.6018 1701.6837 L-241.4386 1709.1649 L-358.5241 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9646" />
+ <path
+ fill="none"
+ d="M115.1774 1464 L45.9922 1427.9943 L17.8225 1414.6093 L3.2932 1408.3326 L-12.0923 1402.9446 L-27.8721 1399.5634 L-43.8078 1398.2095 L-59.8553 1398.9216 L-75.4321 1401.8431 L-90.507 1406.4702 L-105.0128 1412.959 L-118.572 1420.2053 L-131.5067 1427.7472 L-143.8491 1435.9572 L-156.4999 1443.1549 L-208.0187 1474.8807 L-222.4372 1482.162 L-238.3481 1487.8889 L-269.2329 1495.8068 L-404.4922 1522.5"
+ clip-path="url(#clipPath2)"
+ id="path9648" />
+ <path
+ fill="none"
+ d="M163.4566 1464 L246.2284 1400.1873 L260.1052 1390.4387 L274.5361 1381.6288 L289.8481 1374.1788 L320.3453 1361.8997 L350.8412 1351.5752 L365.7409 1345.8651 L562.049 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9650" />
+ <path
+ fill="none"
+ d="M-182.8386 -713.5 L-464.6614 -874"
+ clip-path="url(#clipPath2)"
+ id="path9652" />
+ <path
+ fill="none"
+ d="M-146.8453 -713.5 L66.8453 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9654" />
+ <path
+ fill="none"
+ d="M-179.9566 -683.5 L-556.0435 -443"
+ clip-path="url(#clipPath2)"
+ id="path9656" />
+ <path
+ fill="none"
+ d="M-161.2963 -713.5 L-332.2037 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9658" />
+ <path
+ fill="none"
+ d="M-441.3644 -904 L26.8644 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9660" />
+ <path
+ fill="none"
+ d="M-493.8796 -874 L-576.6204 -443"
+ clip-path="url(#clipPath2)"
+ id="path9662" />
+ <path
+ fill="none"
+ d="M-484.8235 -904 L-343.1765 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9664" />
+ <path
+ fill="none"
+ d="M1474.5735 2339 L1326.7584 2276.4133 L1308.9584 2269.8667 L1290.6266 2264.2744 L1271.7128 2260.5183 L1196.8739 2249.6672 L1177.7106 2246.0295 L1122.927 2232.1714 L996.0959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9666" />
+ <path
+ fill="none"
+ d="M1503.9481 2339 L1255.6714 1723.624 L1242.3505 1694.6458 L1130.8816 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9668" />
+ <path
+ fill="none"
+ d="M1474.5431 2339 L1322.069 2274.4961 L1303.8984 2268.2122 L1285.0522 2263.4204 L1265.6094 2261.2283 L1246.234 2261.4336 L1227.1411 2263.3792 L978.9871 2301.2107 L960.8951 2303.2319 L942.4762 2304.3843 L906.9919 2304.9417 L792.7412 2303.2964"
+ clip-path="url(#clipPath2)"
+ id="path9670" />
+ <path
+ fill="none"
+ d="M1518.1578 2369 L1656.8422 2624"
+ clip-path="url(#clipPath2)"
+ id="path9672" />
+ <path
+ fill="none"
+ d="M1529.2338 2369 L1729.9617 2525.5437 L1741.25 2535.3298 L1752.4939 2545.8992 L1763.1542 2557.5071 L1772.4307 2570.2263 L1780.174 2583.7786 L1786.6165 2597.8826 L1797.2206 2626.0237 L1801.7369 2640.0129 L1812.5941 2668.3142 L1818.7988 2682.1631 L1928.7854 2883"
+ clip-path="url(#clipPath2)"
+ id="path9674" />
+ <path
+ fill="none"
+ d="M1511.5278 2369 L1513.1466 2384.8933 L1514.204 2400.4846 L1537.4098 2649.1707 L1540.1097 2665.6206 L1544.6873 2681.5659 L1550.3002 2697.064 L1556.4666 2711.6733 L1818.3805 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9676" />
+ <path
+ fill="none"
+ d="M1526.5431 2339 L1664.9104 2213.5396 L1676.3075 2204.0525 L1688.2982 2195.3054 L1701.2352 2186.9421 L1714.6727 2179.9111 L1728.8771 2174.0081 L1743.3738 2169.3315 L1772.5908 2162.6487 L2081.9709 2107.0034 L2096.4185 2103.4382 L2111.0107 2098.6389 L2124.6841 2092.2168 L2137.7759 2084.4053 L2149.7017 2074.8916 L2160.5408 2063.8689 L2169.6196 2051.8689 L2177.3831 2038.7415 L2183.9478 2025.1888 L2205.1951 1970.9033 L2211.8096 1957.5084 L2221.3857 1945.6956 L2233.8264 1936.7653 L2247.5352 1930.2933 L2514.4805 1835"
+ clip-path="url(#clipPath2)"
+ id="path9678" />
+ <path
+ fill="none"
+ d="M1529.1042 2369 L1738.5509 2533.45 L1750.5435 2543.9087 L1761.3635 2555.615 L1771.2257 2568.3628 L1779.4089 2582.2319 L1786.0944 2596.5154 L1812.7916 2666.5 L1819.77 2680.5874 L1827.7897 2693.7729 L1837.3392 2705.9377 L1848.2404 2717.001 L1860.5529 2726.521 L1873.8605 2734.6018 L1887.8599 2741.093 L1902.7081 2746.1006 L1917.8242 2749.6072 L1962.748 2758.1482 L1977.8821 2762.0352 L1992.6849 2767.7485 L2007.0975 2774.7456 L2020.618 2783.7029 L2033.1394 2793.7778 L2044.6404 2805.4622 L2055.4875 2817.95 L2228.1003 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9680" />
+ <path
+ fill="none"
+ d="M1493.432 2369 L1358.0886 2491.5347 L1344.4315 2502.6399 L1329.5942 2512.6628 L1313.6755 2520.7417 L1297.0505 2526.8035 L1279.6298 2530.5449 L1261.9062 2532.02 L1243.9521 2531.1667 L1226.3867 2528.6655 L1192.8405 2520.178 L1047.8075 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9682" />
+ <path
+ fill="none"
+ d="M1493.3915 2369 L1351.8792 2496.8074 L1336.9489 2508.2498 L1321.3251 2518.696 L823.5881 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9684" />
+ <path
+ fill="none"
+ d="M1504.6932 2339 L1339.462 1871.9652 L1287.3363 1714.5103 L1281.5391 1698.6304 L1271.3762 1666.3949 L1266.9104 1649.3513 L1263.7081 1632.1747 L1261.8214 1614.8285 L1252.174 1465.3066 L1249.6622 1448.1022 L1245.6331 1430.9169 L1239.6428 1414.2061 L1232.1565 1398.4878 L1224.3367 1383.3807 L1075.5237 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9686" />
+ <path
+ fill="none"
+ d="M1505.0319 2369 L1410.9681 2653"
+ clip-path="url(#clipPath2)"
+ id="path9688" />
+ <path
+ fill="none"
+ d="M1534.0114 2369 L1910.9886 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9690" />
+ <path
+ fill="none"
+ d="M1501.9417 2339 L1342.1976 2041.6492 L1333.6259 2028.2693 L1324.1749 2015.4473 L1313.6296 2003.1354 L1097.5363 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9692" />
+ <path
+ fill="none"
+ d="M1504.9796 2339 L1369.1797 1933.2559 L1364.5956 1917.7723 L1361.1023 1901.3207 L1359.2668 1884.6461 L1358.9624 1867.7823 L1364.918 1804.7361 L1385.1973 1636"
+ clip-path="url(#clipPath2)"
+ id="path9694" />
+ <path
+ fill="none"
+ d="M1607.1934 2343.6565 L1641.5518 2340"
+ clip-path="url(#clipPath2)"
+ id="path9696" />
+ <path
+ fill="none"
+ d="M1509.1334 2339 L1483.3666 1893"
+ clip-path="url(#clipPath2)"
+ id="path9698" />
+ <path
+ fill="none"
+ d="M1535.9918 2369 L1686.6624 2455.9526 L1702.3188 2464.1128 L1718.441 2471.5791 L1735.4189 2477.6355 L1752.9897 2482.0723 L1770.8313 2484.4812 L1805.623 2486.6531 L1924.4827 2487.9512 L1942.2737 2489.0781 L1960.0562 2491.6494 L1977.8062 2496.248 L1994.6891 2502.8237 L2010.9612 2510.2305 L2244.1704 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9700" />
+ <path
+ fill="none"
+ d="M1421.5883 2369 L1347.9117 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9702" />
+ <path
+ fill="none"
+ d="M1510.9263 2339 L1526.5001 2086.7854 L1528.6637 2070.645 L1532.7749 2054.6072 L1539.1635 2039.5104 L1582.8965 1955.9016 L1589.814 1941.5165 L1596.3032 1926.5045 L1601.6031 1910.614 L1604.801 1894.145 L1605.9075 1877.3345 L1604.8375 1860.4043 L1601.4618 1844.0298 L1596.4197 1828.249 L1590.9009 1813.1063 L1584.6427 1798.0835 L1579.1389 1783.2101 L1530.6157 1664.5873 L1525.4736 1648.2223 L1521.2292 1631.2045 L1518.8718 1613.6608 L1518.7667 1596.1191 L1520.1587 1578.7006 L1615.3778 1034"
+ clip-path="url(#clipPath2)"
+ id="path9704" />
+ <path
+ fill="none"
+ d="M1520.0275 2339 L1652.9227 2140.2031 L1661.5157 2125.8765 L1669.6093 2110.4673 L1674.8169 2093.8274 L1678.4438 2077.0471 L1692.2361 1993.3143 L1695.9932 1975.8687 L1700.5378 1958.3699 L1707.6724 1941.3625 L1716.8115 1925.3213 L1728.2234 1910.7318 L1740.7257 1897.5914 L1945.353 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9706" />
+ <path
+ fill="none"
+ d="M1511.1052 2369 L1519.2036 2478.908 L1520.9386 2494.2686 L1532.0088 2648.5208 L1532.4585 2664.9966 L1531.5543 2681.3984 L1528.7942 2697.7139 L1523.9926 2713.2405 L1517.3701 2727.6858 L1508.618 2741.5935 L1498.5919 2754.0928 L1487.2609 2765.2034 L1475.011 2774.9775 L1400.5135 2826.1184 L1387.9414 2835.4861 L1376.0679 2845.9873 L1364.8727 2857.1089 L1355.0602 2869.5366 L1346.4813 2882.7495 L1339.2728 2896.8088 L1333.5167 2911.4705 L1329.4667 2926.6213 L1326.7267 2942.0088 L1325.672 2957.7959 L1326.2606 2973.5076 L1327.9357 2989.0308 L1330.9374 3004.3113 L1404.1639 3275.9639 L1407.5632 3290.6909 L1412.1721 3304.8933 L1423.5769 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9708" />
+ <path
+ fill="none"
+ d="M1526.5193 2339 L1665.6112 2212.7002 L1689.0184 2194.4897 L1701.7162 2186.1914 L1714.7228 2178.7192 L1869.8474 2109.8154 L1882.8911 2102.8474 L1895.4789 2095.4939 L2044.3569 1999"
+ clip-path="url(#clipPath2)"
+ id="path9710" />
+ <path
+ fill="none"
+ d="M1496.996 2369 L1385.6895 2497.3909 L1376.2972 2507.3276 L1322.2389 2568.2527 L1304.2604 2589.7803 L1125.6952 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9712" />
+ <path
+ fill="none"
+ d="M1510.8751 2339 L1524.2369 2109.9836 L1527.4911 2077.0388 L1530.6801 2060.7397 L1536.7727 2044.8093 L1587.699 1945.4836 L1600.6235 1915.0745 L1605.15 1898.5553 L1608.6882 1882.624 L1654.8674 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9714" />
+ <path
+ fill="none"
+ d="M1492 2339 L1231 2121.5"
+ clip-path="url(#clipPath2)"
+ id="path9716" />
+ <path
+ fill="none"
+ d="M1511.2671 2369 L1511.5583 2372.4485 L1512.4863 2390.939 L1532.1252 2653.0818 L1532.3657 2673.238 L1530.3511 2693.1304 L1483.7687 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9718" />
+ <path
+ fill="none"
+ d="M1519.9977 2339 L1653.2191 2139.1204 L1662.4175 2124.3665 L1670.4188 2108.1663 L1675.7124 2091.2019 L1696.2084 1972.2346 L1700.4777 1954.8425 L1732.6132 1855.5861 L1738.5227 1839.8522 L1743.5808 1823.199 L1800.3926 1658.3755 L1806.9249 1641.4769 L1814.4071 1624.5726 L1823.2809 1608.1635 L1833.8232 1592.6519 L1845.3483 1578.3093 L1857.2207 1564.7336 L1881.5801 1538.2433 L1893.6631 1525.9165 L2062.9272 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9720" />
+ <path
+ fill="none"
+ d="M1536.2448 2369 L1700.8926 2463.1035 L1716.5065 2470.6301 L1732.8228 2476.7573 L1749.6938 2481.2634 L1766.9144 2483.8633 L1784.0165 2484.6411 L1801.1552 2483.6919 L1817.9308 2480.7009 L1834.475 2476.1997 L1850.3604 2470.1069 L1879.984 2456.0632 L2178.4429 2296.5"
+ clip-path="url(#clipPath2)"
+ id="path9722" />
+ <path
+ fill="none"
+ d="M1522.908 2339 L1805.592 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9724" />
+ <path
+ fill="none"
+ d="M1526.6202 2339 L1669.4025 2210.1367 L1681.7156 2200.2549 L1694.8494 2191.0376 L1708.5754 2182.6992 L1736.0583 2168.71 L1856.1318 2115.9321 L1869.5493 2109.1848 L1882.8529 2101.687 L1895.3044 2092.6658 L1906.7675 2082.3103 L1916.951 2070.5432 L1925.2897 2057.9207 L1932.2095 2044.2831 L1937.395 2029.8201 L1941.0835 2014.8721 L1942.8657 1999.6416 L1944.0657 1984.2588 L1945.8129 1968.6353 L1949.1118 1952.8204 L1954.0919 1937.6868 L1961.2629 1923.1643 L1970.3491 1909.4205 L1981.2208 1896.7792 L1993.2787 1884.9609 L2081.2905 1807.6135 L2253.324 1643"
+ clip-path="url(#clipPath2)"
+ id="path9726" />
+ <path
+ fill="none"
+ d="M1475.3552 2339 L1375.7992 2295.8955 L1325.3004 2275.6824 L1307.8301 2269.3855 L1289.7203 2263.9866 L1271.4009 2260.2725 L1201.3519 2250.1917 L1183.7898 2246.8469 L1166.7448 2241.9495 L1150.2572 2235.1619 L1134.9137 2226.417 L1120.8173 2216.0547 L1108.2313 2204.0881 L1097.0183 2190.8472 L1086.9922 2176.9243 L1051.8983 2121.3184 L1042.0785 2107.6038 L1031.0328 2094.5808 L1018.9379 2082.5935 L981.7686 2049.2241 L968.8684 2038.6184 L956.4572 2027.4056 L788.5068 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9728" />
+ <path
+ fill="none"
+ d="M1504.9901 2339 L1366.5494 1924.4966 L1362.4882 1908.5767 L1359.8616 1892.2843 L1359.1125 1875.623 L1360.5317 1859.0786 L1364.2106 1843.1631 L1369.8442 1827.4664 L1377.5298 1813.0808 L1386.8759 1799.7292 L1397.203 1787.4834 L1418.8458 1765.0261 L1472.7761 1711.0153 L1482.7151 1699.1749 L1491.9009 1685.959 L1499.3961 1671.5507 L1505.2434 1656.2231 L1508.5443 1640.9038 L1510.1094 1624.6781 L1509.5914 1608.5144 L1507.2157 1592.4027 L1503.3352 1577.2427 L1414.2556 1323"
+ clip-path="url(#clipPath2)"
+ id="path9730" />
+ <path
+ fill="none"
+ d="M1510.9319 2339 L1526.4713 2088.8757 L1528.2183 2072.9792 L1531.8409 2057.2632 L1537.6543 2042.4523 L1544.4132 2028.5757 L1585.9958 1949.0065 L1592.6586 1935.08 L1598.5482 1920.4163 L1603.2426 1905.4922 L1605.3632 1889.2352 L1606.0835 1873.2714 L1604.3267 1857.3202 L1600.7614 1841.5823 L1590.5676 1811.7375 L1532.8832 1669.7617 L1527.2454 1654.2057 L1522.8604 1638.2473 L1519.7045 1621.5173 L1518.6511 1604.515 L1519.7151 1587.4683 L1522.7896 1570.5966 L1527.3335 1554.9121 L1533.6583 1539.2854 L1561.9587 1481.5208 L1599.4431 1410.3932 L1606.4193 1395.9069 L1755.7795 1107.7368 L1762.8444 1092.5857 L1769.0634 1076.776 L1774.2321 1060.2958 L1777.7761 1043.705 L1779.5951 1026.4392 L1780.0076 1009.2284 L1773.9335 912.5138 L1713.5631 108.591 L1711.499 94.9959 L1708.3801 80.2525 L1703.2778 66.8524 L1697.6584 54.3873 L1673.673 8.0907 L1662.9922 -15.4828 L1658.6643 -27.8628 L1656.0237 -41.0869 L1655.9708 -54.2819 L1658.2432 -67.2466 L1662.6152 -79.6855 L1667.8322 -91.0654 L1722.6837 -190"
+ clip-path="url(#clipPath2)"
+ id="path9732" />
+ <path
+ fill="none"
+ d="M420.7189 353.5 L698.7811 440"
+ clip-path="url(#clipPath2)"
+ id="path9734" />
+ <path
+ fill="none"
+ d="M373.8378 323.5 L418.1622 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9736" />
+ <path
+ fill="none"
+ d="M371.2291 353.5 L335.7709 772"
+ clip-path="url(#clipPath2)"
+ id="path9738" />
+ <path
+ fill="none"
+ d="M342.7771 353.5 L-26.7771 540"
+ clip-path="url(#clipPath2)"
+ id="path9740" />
+ <path
+ fill="none"
+ d="M331.5783 323.5 L-178.5783 136.5"
+ clip-path="url(#clipPath2)"
+ id="path9742" />
+ <path
+ fill="none"
+ d="M391.3014 323.5 L719.6986 61.5"
+ clip-path="url(#clipPath2)"
+ id="path9744" />
+ <path
+ fill="none"
+ d="M-143.4475 -261 L-156.0525 -683.5"
+ clip-path="url(#clipPath2)"
+ id="path9746" />
+ <path
+ fill="none"
+ d="M-127.6443 -231 L208.6443 97.5"
+ clip-path="url(#clipPath2)"
+ id="path9748" />
+ <path
+ fill="none"
+ d="M-27.0049 2068 L-83.2198 2161.6406 L-90.3236 2174.7258 L-96.6365 2188.5735 L-101.5907 2203.1204 L-105.1204 2217.9927 L-107.1567 2232.9121 L-108.6474 2262.2935 L-107.5751 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9750" />
+ <path
+ fill="none"
+ d="M-3.3147 2038 L88.2079 1944.5159 L98.9239 1931.85 L108.6347 1917.8579 L115.9706 1901.8237 L121.2358 1885.2582 L124.3123 1867.311 L143.2395 1494"
+ clip-path="url(#clipPath2)"
+ id="path9752" />
+ <path
+ fill="none"
+ d="M-24.6663 2038 L-80.8903 1911.4879 L-85.1263 1899.4636 L-88.5606 1887.0404 L-90.5707 1874.1945 L-91.1801 1861.1097 L-90.1218 1848.1241 L-87.5325 1835.3932 L-83.6841 1822.7667 L-72.56 1799.5031 L-53.9055 1768.1414 L-19.3229 1712.5"
+ clip-path="url(#clipPath2)"
+ id="path9754" />
+ <path
+ fill="none"
+ d="M1596.9543 2095.5 L1515.0457 2339"
+ clip-path="url(#clipPath2)"
+ id="path9756" />
+ <path
+ fill="none"
+ d="M1662.748 2092.5029 L1764.6105 2112.6294 L1782.9017 2115.6848 L1801.8885 2118.3333 L1821.3508 2119.7209 L1840.4524 2120.2183 L1858.9543 2119.3088 L1877.6461 2119.5857 L2183.1145 2112.4343 L2200.6819 2112.6753 L2218.771 2113.5925 L2236.468 2115.9619 L2253.6194 2120.0029 L2270.5688 2125.4739 L2286.7974 2131.6306 L2458.6768 2209"
+ clip-path="url(#clipPath2)"
+ id="path9758" />
+ <path
+ fill="none"
+ d="M1602.3943 2065.5 L1606.7793 1898.7041 L1606.4932 1881.5487 L1605.2306 1864.0957 L1601.9255 1846.7361 L1596.955 1829.9541 L1591.1913 1813.7092 L1533.9847 1674.6245 L1527.9525 1658.2727 L1522.3416 1641.5908 L1503.7571 1574.8905 L1420.4307 1339.3589 L1414.5142 1324.3173 L1414.069 1323"
+ clip-path="url(#clipPath2)"
+ id="path9760" />
+ <path
+ fill="none"
+ d="M1603.0338 2095.5 L1619.5222 2334.7439 L1619.976 2349.6047 L1619.3141 2364.5964 L1616.8829 2379.4578 L1612.6283 2393.7292 L1606.6503 2407.0378 L1599.2849 2419.5703 L1533.5831 2509.7273 L1499.2429 2554.429 L1489.8187 2565.7656 L1418.298 2653"
+ clip-path="url(#clipPath2)"
+ id="path9762" />
+ <path
+ fill="none"
+ d="M1603.1926 2095.5 L1621.6029 2327.0608 L1624.4425 2347.2661 L1628.7183 2366.9514 L1635.0629 2385.7578 L1643.6881 2403.5862 L1654.035 2420.3408 L1665.6207 2435.8164 L1758.1301 2550.2654 L1769.3726 2565.7361 L1779.1656 2582.3586 L1787.2401 2599.9016 L1814.0522 2669.9602 L1822.2802 2687.2004 L1928.8368 2883"
+ clip-path="url(#clipPath2)"
+ id="path9764" />
+ <path
+ fill="none"
+ d="M1588.7958 2095.5 L1440.1951 2264.3108 L1421.9424 2287.5852 L1413.851 2300.9641 L1407.3724 2315.2051 L1402.7751 2330.5364 L1400.0977 2346.2444 L1394.8491 2410.0798 L1391.8948 2426.9863 L1386.8583 2443.4583 L1380.0405 2459.543 L1371.4266 2474.8496 L1352.7933 2504.1155 L1264.7759 2637.0266 L1255.2261 2652.488 L1155.7711 2805.2529 L1146.0284 2821.1672 L1135.6465 2836.3376 L1125.1975 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9766" />
+ <path
+ fill="none"
+ d="M1585.7421 2095.5 L1275.7579 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9768" />
+ <path
+ fill="none"
+ d="M1603.1949 2095.5 L1622.4318 2336.9685 L1624.5369 2352.1443 L1628.201 2367.3962 L1632.8905 2381.77 L1638.9683 2395.7341 L1646.1216 2408.7371 L1654.6532 2421.2065 L1664.1459 2432.8657 L1674.5833 2443.5085 L1686.1106 2453.272 L1697.5612 2462.1409 L1912.3665 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9770" />
+ <path
+ fill="none"
+ d="M1603.7489 2065.5 L1655.7511 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9772" />
+ <path
+ fill="none"
+ d="M1593.1482 2065.5 L1491.3518 1893"
+ clip-path="url(#clipPath2)"
+ id="path9774" />
+ <path
+ fill="none"
+ d="M1603.0256 2095.5 L1619.4376 2335.5383 L1619.8356 2352.4175 L1618.8832 2369.4175 L1615.4667 2385.9312 L1610.9801 2401.5234 L1549.5068 2578.6951 L1544.7748 2594.0952 L1540.5493 2610.1763 L1538.3051 2626.9604 L1537.8387 2643.7305 L1539.5312 2660.8184 L1543.3848 2677.5637 L1548.2743 2693.5508 L1620.949 2887.3188 L1626.1494 2902.9475 L1630.7904 2919.1487 L1634.1757 2935.949 L1635.9564 2952.8755 L1635.8079 2970.0298 L1633.827 2987.1138 L1630.0143 3003.8672 L1624.4489 3020.2371 L1617.4717 3036.0044 L1609.7772 3051.0796 L1436.2516 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9776" />
+ <path
+ fill="none"
+ d="M1570.7225 2095.5 L1288.5803 2230.8096 L1274.9982 2236.7656 L1260.8542 2242.2251 L1246.2103 2246.6372 L982.4409 2300.4243 L953.6058 2304.5635 L924.563 2305.3845 L792.7412 2303.3887"
+ clip-path="url(#clipPath2)"
+ id="path9778" />
+ <path
+ fill="none"
+ d="M1603.1537 2095.5 L1620.8918 2326.1306 L1625.1042 2362.6926 L1662.8341 2624"
+ clip-path="url(#clipPath2)"
+ id="path9780" />
+ <path
+ fill="none"
+ d="M1541.252 2084.5603 L1343.7324 2097.7622"
+ clip-path="url(#clipPath2)"
+ id="path9782" />
+ <path
+ fill="none"
+ d="M1640.2059 2065.5 L1780.2941 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9784" />
+ <path
+ fill="none"
+ d="M1572.6794 2065.5 L1434.8101 1994.9679 L1106.5612 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9786" />
+ <path
+ fill="none"
+ d="M1603.0039 2095.5 L1619.616 2343.7134 L1619.334 2362.2961 L1616.5592 2380.8618 L1611.7566 2398.3032 L1606.5804 2414.9185 L1549.1158 2579.8984 L1544.0386 2597.4407 L1539.7373 2615.8103 L1536.9749 2634.4294 L1533.7061 2671.905 L1531.5634 2690.6077 L1483.8102 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9788" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4651 L1780.0096 2115.5613 L1796.447 2117.708 L1813.3804 2119.1421 L1830.0333 2118.6409 L1846.8956 2115.9663 L1862.7615 2110.9902 L1877.9795 2104.4839 L1905.5245 2089.0781 L2044.3778 1999"
+ clip-path="url(#clipPath2)"
+ id="path9790" />
+ <path
+ fill="none"
+ d="M1612.9232 2065.5 L1705.944 1937.7614 L1717.1481 1923.3706 L1729.4146 1909.6766 L1743.266 1897.5363 L1758.9332 1887.454 L1775.6699 1879.6144 L1793.1348 1874.4734 L1811.5116 1871.0072 L1970.6 1855.2622 L1988.6428 1852.0848 L2006.829 1847.8024 L2024.3502 1841.5553 L2040.8623 1833.4706 L2056.6687 1823.6088 L2070.9719 1812.4393 L2084.522 1800.8351 L2252.9895 1643"
+ clip-path="url(#clipPath2)"
+ id="path9792" />
+ <path
+ fill="none"
+ d="M1613.0736 2095.5 L1771.4264 2310"
+ clip-path="url(#clipPath2)"
+ id="path9794" />
+ <path
+ fill="none"
+ d="M1639.7083 2095.5 L1842.3861 2176.1233 L1859.5131 2185.2539 L1876.282 2195.9019 L1891.6011 2208.3118 L1905.634 2221.8408 L1931.1401 2250.0837 L2260.4797 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9796" />
+ <path
+ fill="none"
+ d="M1647.1119 2095.5 L2161.3879 2266.5"
+ clip-path="url(#clipPath2)"
+ id="path9798" />
+ <path
+ fill="none"
+ d="M1603.1909 2095.5 L1621.691 2328.5208 L1623.5604 2343.7834 L1626.24 2359.3225 L1630.3749 2374.5793 L1636.0944 2389.2988 L1642.9762 2403.4038 L1651.1168 2416.8372 L1660.1671 2429.6006 L1758.1458 2550.04 L1768.1744 2563.7002 L1777.2103 2578.6135 L1784.3627 2594.6853 L1789.4128 2611.853 L1791.9921 2629.5588 L1793.291 2647.2483 L1792.9524 2895.9575 L1795.2501 2933.1309 L1824.1862 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9800" />
+ <path
+ fill="none"
+ d="M1603.203 2095.5 L1621.8832 2328.4165 L1624.0609 2345.5154 L1627.2642 2362.4485 L1632.0743 2378.8948 L1638.6213 2394.3691 L1646.8019 2409.1277 L1656.0619 2422.8191 L1667.0085 2435.4368 L1679.0601 2446.8408 L1692.3024 2456.9438 L1706.4554 2465.6316 L1721.5145 2472.658 L1737.2064 2478.3113 L1753.2076 2482.2488 L1769.3447 2484.6384 L1785.3156 2486.0251 L1800.7511 2486.7747 L1920.0581 2487.4966 L1935.141 2488.1736 L1950.616 2489.679 L1966.2471 2492.644 L1980.7709 2497.282 L1994.8182 2503.7949 L2008.2539 2511.574 L2020.3892 2520.8616 L2031.2859 2531.5286 L2040.8636 2543.397 L2049.1069 2556.0459 L2055.8984 2570.1116 L2060.9514 2584.1262 L2065.0398 2598.769 L2071.573 2626.8027 L2083.4851 2682.906 L2087.3142 2697.304 L2091.7251 2711.4783 L2232.8469 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9802" />
+ <path
+ fill="none"
+ d="M1555.4919 2065.5 L1263.2942 1971.259 L1245.3774 1966.6671 L1226.5901 1963.6918 L1207.9307 1962.2289 L1171.8567 1961.0642 L1081.4442 1960.0654 L1062.9497 1958.3174 L1044.2203 1954.9642 L1025.8896 1950.8408 L819.3997 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9804" />
+ <path
+ fill="none"
+ d="M1608.9635 2065.5 L1809.4962 1633.5309 L1818.6376 1616.1558 L1829.1941 1599.274 L1841.2507 1583.3263 L2063.0132 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9806" />
+ <path
+ fill="none"
+ d="M1602.3933 2065.5 L1606.7363 1899.8634 L1606.4586 1882.6648 L1605.2378 1865.1937 L1602.3794 1848.0233 L1597.3771 1831.3533 L1585.6033 1799.6447 L1528.9104 1659.5087 L1523.7875 1642.5001 L1520.1628 1624.7736 L1518.6923 1606.78 L1519.3666 1588.6658 L1521.3606 1571.0901 L1615.3744 1034"
+ clip-path="url(#clipPath2)"
+ id="path9808" />
+ <path
+ fill="none"
+ d="M1571.2109 2095.5 L1261.994 2246.146 L1219.6743 2264.4104 L1205.4592 2271.2598 L1191.7346 2278.4478 L1178.4591 2287.1375 L1166.1311 2296.8726 L1154.6273 2306.9568 L1013.2023 2446.5"
+ clip-path="url(#clipPath2)"
+ id="path9810" />
+ <path
+ fill="none"
+ d="M1612.9133 2065.5 L1708.3259 1934.3589 L1718.8427 1921.1146 L1730.2498 1907.9574 L1742.2875 1895.532 L1945.3046 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9812" />
+ <path
+ fill="none"
+ d="M1572.9703 2065.5 L1444.6885 1999.2152 L1429.064 1990.3815 L1413.6222 1980.5148 L1399.3938 1969.1509 L1386.8495 1955.9407 L1376.3173 1941.3074 L1367.1516 1926.2937 L1215.7188 1635.2328 L1131.2916 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9814" />
+ <path
+ fill="none"
+ d="M1602.3855 2065.5 L1606.9542 1887.743 L1606 1869.5469 L1602.9114 1851.5056 L1597.8892 1834.3082 L1590.2271 1818.0243 L1580.5396 1803.0505 L1569.3032 1789.5634 L1544.9924 1765.5038 L1403.4001 1636"
+ clip-path="url(#clipPath2)"
+ id="path9816" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4412 L1766.4723 2112.8303 L1800.2173 2118.0352 L1817.9073 2119.0618 L1835.2128 2118.0942 L1852.0842 2114.189 L1868.7249 2108.4495 L1883.6569 2100.4832 L1897.4779 2090.6223 L1909.8057 2078.9834 L1920.2412 2065.7119 L1928.7743 2051.3101 L1935.4041 2035.9259 L1939.7797 2019.7667 L1942.3596 2003.6836 L1945.6359 1971.5028 L1948.5076 1955.5732 L1953.2712 1940.0039 L1959.8096 1925.6807 L1968.1327 1912.3596 L1978.111 1900.3622 L1989.2583 1889.7343 L2001.7524 1880.6145 L2015.2451 1873.4164 L2029.7437 1867.4449 L2044.5986 1863.3865 L2059.4072 1860.6979 L2116.5818 1854.9585 L2130.5618 1854.0964 L2427.3464 1831.3152"
+ clip-path="url(#clipPath2)"
+ id="path9818" />
+ <path
+ fill="none"
+ d="M1602.395 2065.5 L1606.7798 1898.9805 L1606.3993 1880.6311 L1604.8654 1862.1401 L1601.0284 1844.0854 L1594.6597 1826.991 L1585.889 1810.8241 L1574.9169 1796.2695 L1561.8469 1783.6718 L1547.1339 1773.0948 L1530.927 1764.6783 L1514.0385 1758.6746 L1496.0397 1755.1381 L1478.5284 1752.9952 L1377.3137 1744.3647 L1359.9923 1741.0127 L1343.1707 1736.0409 L1327.205 1728.5714 L1312.6506 1718.9408 L1299.2815 1707.3992 L1288.0135 1694.0232 L1278.6018 1679.4884 L1271.3124 1663.254 L1266.2087 1646.291 L1263.3679 1629.0929 L1251.9883 1463.8362 L1249.3915 1446.7079 L1245.1688 1429.4218 L1239.0171 1412.9744 L1231.691 1397.4093 L1158.1884 1265.8065 L1149.532 1251.7174 L1075.525 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9820" />
+ <path
+ fill="none"
+ d="M1571.1819 2095.5 L1270.4301 2241.884 L1209.0909 2269.5261 L1193.9401 2277.4502 L1179.7173 2286.9822 L1166.2568 2298.0002 L1154.4349 2310.5815 L1144.4984 2324.4265 L1136.3844 2339.6184 L1130.1035 2355.6626 L1125.9659 2372.5798 L1123.5559 2389.3396 L1122.2933 2406.2454 L1120.1442 2455.5945 L1118.5703 2472.6367 L1115.6298 2489.781 L1110.2885 2506.1963 L1102.5222 2521.7383 L1093.292 2536.2493 L1081.7872 2549.6086 L1057.8158 2573.1782 L813.2117 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9822" />
+ <path
+ fill="none"
+ d="M1570.7183 2095.5 L1288.796 2230.6855 L1274.8589 2236.5764 L1260.1879 2242.116 L1245.0063 2246.1299 L1229.2333 2248.7217 L1213.7101 2249.8647 L1198.0498 2249.1724 L1182.5889 2247.0691 L1153.3807 2240.5171 L996.3959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9824" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/developer/SConstruct b/doc/developer/SConstruct
new file mode 100644
index 0000000..1606a66
--- /dev/null
+++ b/doc/developer/SConstruct
@@ -0,0 +1,46 @@
+#
+# SConstruct file for building SCons documentation.
+#
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+
+env = Environment(ENV={'PATH' : os.environ['PATH']},
+ tools=['docbook'],
+ toolpath=['../../src/engine/SCons/Tool'])
+
+has_pdf = False
+if (env.WhereIs('fop') or
+ env.WhereIs('xep')):
+ has_pdf = True
+
+#
+# Create document
+#
+env.DocbookXInclude('developer_xi.xml', 'main.xml')
+env.DocbookXslt('developer.xml', 'developer_xi.xml',
+ xsl='../xslt/to_docbook.xslt')
+env.DocbookHtml('developer.html','developer.xml')
+if has_pdf:
+ env.DocbookPdf('developer.pdf','developer.xml')
diff --git a/doc/developer/architecture.xml b/doc/developer/architecture.xml
index 865c50f..229147c 100644
--- a/doc/developer/architecture.xml
+++ b/doc/developer/architecture.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-architecture"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Architecture</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -38,3 +50,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/developer/branches.xml b/doc/developer/branches.xml
index 7d8950a..ca7ae85 100644
--- a/doc/developer/branches.xml
+++ b/doc/developer/branches.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-branches"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Branches</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -38,3 +50,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/developer/copyright.xml b/doc/developer/copyright.xml
index cb63b18..15a94e3 100644
--- a/doc/developer/copyright.xml
+++ b/doc/developer/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -30,3 +40,5 @@
</para>
</blockquote>
+
+</legalnotice>
diff --git a/doc/developer/cycle.xml b/doc/developer/cycle.xml
index 2233716..193d9db 100644
--- a/doc/developer/cycle.xml
+++ b/doc/developer/cycle.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-development-cycle"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Development Cycle</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -38,3 +50,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/developer/main.xml b/doc/developer/main.xml
index 8480544..2a3f7e8 100644
--- a/doc/developer/main.xml
+++ b/doc/developer/main.xml
@@ -2,7 +2,7 @@
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -25,9 +25,7 @@
-->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
+<!DOCTYPE sconsdoc [
<!ENTITY % version SYSTEM "../version.xml">
%version;
@@ -35,18 +33,11 @@
<!ENTITY % scons SYSTEM "../scons.mod">
%scons;
- <!ENTITY architecture SYSTEM "architecture.xml">
- <!ENTITY branches SYSTEM "branches.xml">
- <!ENTITY copyright SYSTEM "copyright.xml">
- <!ENTITY cycle SYSTEM "cycle.xml">
- <!ENTITY packaging SYSTEM "packaging.xml">
- <!ENTITY preface SYSTEM "preface.xml">
- <!ENTITY sourcetree SYSTEM "sourcetree.xml">
- <!ENTITY testing SYSTEM "testing.xml">
-
]>
-<book>
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
<bookinfo>
<title>SCons Developer's Guide &buildversion;</title>
@@ -64,47 +55,24 @@
<holder>Steven Knight</holder>
</copyright>
- <legalnotice>
- &copyright;
- </legalnotice>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
<releaseinfo>version &buildversion;</releaseinfo>
</bookinfo>
- <preface id="chap-preface">
- <title>Preface</title>
- &preface;
- </preface>
-
- <chapter id="chap-development-cycle">
- <title>Development Cycle</title>
- &cycle;
- </chapter>
-
- <chapter id="chap-source-tree">
- <title>Source Tree</title>
- &sourcetree;
- </chapter>
-
- <chapter id="chap-testing">
- <title>Testing</title>
- &testing;
- </chapter>
-
- <chapter id="chap-branches">
- <title>Branches</title>
- &branches;
- </chapter>
-
- <chapter id="chap-packaging">
- <title>Packaging</title>
- &packaging;
- </chapter>
-
- <chapter id="chap-architecture">
- <title>Architecture</title>
- &architecture;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="preface.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="cycle.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sourcetree.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="testing.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="branches.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="packaging.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/>
</book>
diff --git a/doc/developer/packaging.xml b/doc/developer/packaging.xml
index c246b55..681082d 100644
--- a/doc/developer/packaging.xml
+++ b/doc/developer/packaging.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-packaging"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Packaging</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -38,3 +50,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/developer/preface.xml b/doc/developer/preface.xml
index 705ff4a..586739e 100644
--- a/doc/developer/preface.xml
+++ b/doc/developer/preface.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-preface"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Preface</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -173,3 +185,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/developer/sourcetree.xml b/doc/developer/sourcetree.xml
index 3149421..349d66a 100644
--- a/doc/developer/sourcetree.xml
+++ b/doc/developer/sourcetree.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-source-tree"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Source Tree</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -38,3 +50,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/developer/testing.xml b/doc/developer/testing.xml
index b9f0b7d..8891c92 100644
--- a/doc/developer/testing.xml
+++ b/doc/developer/testing.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-testing"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Testing</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -38,3 +50,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/editor_configs/serna/scons/catalog.xml b/doc/editor_configs/serna/scons/catalog.xml
new file mode 100644
index 0000000..bda2420
--- /dev/null
+++ b/doc/editor_configs/serna/scons/catalog.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" ?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
+ prefer="public">
+ <public publicId="-//SCONS//DTD DocBook V4.5-Based extension V1.0//EN"
+ uri="dtd/scons.dtd"/>
+ <system systemId="http://www.scons.org/dtd/scons.dtd"
+ uri="dtd/scons.dtd"/>
+ <uri name="http://www.scons.org/dbxsd/v1.0/scons.xsd"
+ uri="xsd/scons.xsd"/>
+ <uriSuffix uriSuffix="scons.xsd"
+ uri="xsd/scons.xsd"/>
+</catalog>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/NW-COPYING b/doc/editor_configs/serna/scons/docbook-xsl-serna/NW-COPYING
new file mode 100644
index 0000000..6cd267d
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/NW-COPYING
@@ -0,0 +1,49 @@
+Syntext Serna Stylesheet for DocBook is based on Norman Walsh
+stylesheet for Docbook, that was coming with the following
+copyright notice:
+
+Copyright
+---------
+
+Copyright (C) 1999, 2000, 2001, 2002 Norman Walsh
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the ``Software''), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+Except as contained in this notice, the names of individuals
+credited with contribution to this software shall not be used in
+advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization
+from the individuals in question.
+
+Any stylesheet derived from this Software that is publically
+distributed will be identified with a different name and the
+version strings in any derived Software will be changed so that
+no possibility of confusion between the derived package and this
+Software will exist.
+
+Warranty
+--------
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL NORMAN WALSH OR ANY OTHER
+CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Contacting the Author
+---------------------
+
+These stylesheets are maintained by Norman Walsh, <ndw@nwalsh.com>.
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/biblio.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/biblio.xsl
new file mode 100644
index 0000000..d0bb9b2
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/biblio.xsl
@@ -0,0 +1,1043 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<dtm:doc dtm:idref="bibliography"/>
+<xsl:template match="bibliography" dtm:id="bibliography">
+ <xsl:variable name="preamble"
+ select="bibliographyinfo|title|subtitle|titleabbrev"/>
+ <xsl:variable name="content" select="*[not(self::bibliographyinfo or
+ self::title or self::subtitle
+ or self::titleabbrev)]"/>
+ <fo:block padding-bottom="1.5em">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="bibliography.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="bibliodiv"/>
+<xsl:template match="bibliodiv" dtm:id="bibliodiv">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev"/>
+ <xsl:variable name="content" select="*[not(self::title or self::subtitle
+ or self::titleabbrev)]"/>
+ <fo:block padding-bottom="1.5em">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="bibliodiv.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="biblioentry"/>
+<xsl:template match="biblioentry" dtm:id="biblioentry">
+ <fo:block xsl:use-attribute-sets="normal.para.properties"
+ start-indent="0.5in">
+ <xsl:call-template name="biblioentry.label"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="bibliomixed"/>
+<xsl:template match="bibliomixed" dtm:id="bibliomixed">
+ <fo:block xsl:use-attribute-sets="normal.para.properties"
+ start-indent="0.5in">
+ <xsl:call-template name="biblioentry.label"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="biblioentry.label"/>
+<xsl:template name="biblioentry.label" dtm:id="biblioentry.label">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:text>[</xsl:text>
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="multiple" format="1."/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node/child::*[1]) = 'abbrev'">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="$node/abbrev[1]"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xreflabel">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xreflabel"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- nop --></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="all.bibliography-mode"/>
+<xsl:template match="*" mode="bibliography.mode" dtm:id="all.bibliography-mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<dtm:doc dtm:elements="abbrev" dtm:idref="abbrev.bibliography-mode abbrev.bibliomixed-mode"/>
+<xsl:template match="abbrev" mode="bibliography.mode" dtm:id="abbrev.bibliography-mode">
+ <xsl:if test="preceding-sibling::*">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:elements="abstract" dtm:idref="abstract.bibliography-mode abstract.bibliomixed-mode"/>
+<xsl:template match="abstract" mode="bibliography.mode" dtm:id="abstract.bibliography-mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<dtm:doc dtm:elements="address" dtm:idref="address.bibliography-mode address.bibliomixed-mode"/>
+<xsl:template match="address" mode="bibliography.mode" dtm:id="address.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="affiliation" dtm:idref="affiliation.bibliography-mode affiliation.bibliomixed-mode"/>
+<xsl:template match="affiliation" mode="bibliography.mode" dtm:id="affiliation.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="shortaffil" dtm:idref="shortaffil.bibliography-mode shortaffil.bibliomixed-mode"/>
+<xsl:template match="shortaffil" mode="bibliography.mode" dtm:id="shortaffil.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="jobtitle" dtm:idref="jobtitle.bibliography-mode jobtitle.bibliomixed-mode"/>
+<xsl:template match="jobtitle" mode="bibliography.mode" dtm:id="jobtitle.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="artchilds.bibliography-mode"/>
+<xsl:template match="artheader|articleinfo" mode="bibliography.mode" dtm:id="artchilds.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="artpagenums" dtm:idref="artpagenums.bibliography-mode author.bibliomixed-mode"/>
+<xsl:template match="artpagenums" mode="bibliography.mode" dtm:id="artpagenums.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="author" dtm:idref="author.bibliography-mode author.bibliomixed-mode"/>
+<xsl:template match="author" mode="bibliography.mode" dtm:id="author.bibliography-mode">
+ <fo:inline>
+ <xsl:call-template name="person.name"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="authorblurb" dtm:idref="authorblurb.bibliography-mode authorblurb.bibliomixed-mode"/>
+<xsl:template match="authorblurb" mode="bibliography.mode" dtm:id="authorblurb.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="authorgroup" dtm:idref="authorgroup.bibliography-mode authorgroup.bibliomixed-mode"/>
+<xsl:template match="authorgroup" mode="bibliography.mode" dtm:id="authorgroup.bibliography-mode">
+ <fo:inline>
+ <xsl:call-template name="person.name.list"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="authorinitials" dtm:idref="authorinitials.bibliography-mode authorinitials.bibliomixed-mode"/>
+<xsl:template match="authorinitials" mode="bibliography.mode" dtm:id="authorinitials.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="bibliomisc" dtm:idref="bibliomisc.bibliography-mode bibliomisc.bibliomixed-mode"/>
+<xsl:template match="bibliomisc" mode="bibliography.mode" dtm:id="bibliomisc.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="bibliomset.bibliography-mode"/>
+<xsl:template match="bibliomset" mode="bibliography.mode" dtm:id="bibliomset.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ================================================== -->
+<dtm:doc dtm:elements="biblioset" dtm:idref="biblioset.bibliography-mode biblioset.bibliomixed-mode"/>
+<xsl:template match="biblioset" mode="bibliography.mode" dtm:id="biblioset.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="bibliosettitles.bibliography-mode"/>
+<xsl:template match="biblioset/title|biblioset/citetitle"
+ mode="bibliography.mode" dtm:id="bibliosettitles.bibliography-mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+</xsl:template>
+
+<!-- ================================================== -->
+<dtm:doc dtm:idref="bookbiblio.bibliography-mode"/>
+<xsl:template match="bookbiblio" mode="bibliography.mode" dtm:id="bookbiblio.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="citetitle" dtm:idref="citetitle.bibliography-mode citetitle.bibliomixed-mode"/>
+<xsl:template match="citetitle" mode="bibliography.mode" dtm:id="citetitle.bibliography-mode">
+ <fo:inline>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="collab" dtm:idref="collab.bibliography-mode collab.bibliomixed-mode"/>
+<xsl:template match="collab" mode="bibliography.mode" dtm:id="collab.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="confgroup" dtm:idref="confgroup.bibliography-mode confgroup.bibliomixed-mode"/>
+<xsl:template match="confgroup" mode="bibliography.mode" dtm:id="confgroup.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="contractnum" dtm:idref="contractnum.bibliography-mode contractnum.bibliomixed-mode"/>
+<xsl:template match="contractnum" mode="bibliography.mode" dtm:id="contractnum.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="contractsponsor" dtm:idref="contractsponsor.bibliography-mode contractsponsor.bibliomixed-mode"/>
+<xsl:template match="contractsponsor" mode="bibliography.mode" dtm:id="contractsponsor.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="contrib" dtm:idref="contrib.bibliography-mode contrib.bibliomixed-mode"/>
+<xsl:template match="contrib" mode="bibliography.mode" dtm:id="contrib.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ================================================== -->
+<dtm:doc dtm:elements="copyright" dtm:idref="copyright.bibliography-mode copyright.bibliomixed-mode"/>
+<xsl:template match="copyright" mode="bibliography.mode" dtm:id="copyright.bibliography-mode">
+ <fo:inline>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="bibliography.mode"/>
+ <xsl:if test="holder">
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="bibliography.mode"/>
+ </xsl:if>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="year" mode="bibliography.mode" dtm:id="year.bibliography-mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="bibliography.mode" dtm:id="lastyear.bibliography-mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="holder.bibliography-mode"/>
+<xsl:template match="holder" mode="bibliography.mode" dtm:id="holder.bibliography-mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ================================================== -->
+<dtm:doc dtm:elements="corpauthor" dtm:idref="corpauthor.bibliography-mode corpauthor.bibliomixed-mode"/>
+<xsl:template match="corpauthor" mode="bibliography.mode" dtm:id="corpauthor.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="corpname" dtm:idref="corpname.bibliography-mode corpname.bibliomixed-mode"/>
+<xsl:template match="corpname" mode="bibliography.mode" dtm:id="corpname.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="date" dtm:idref="date.bibliography-mode date.bibliomixed-mode"/>
+<xsl:template match="date" mode="bibliography.mode" dtm:id="date.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="edition" dtm:idref="edition.bibliography-mode edition.bibliomixed-mode"/>
+<xsl:template match="edition" mode="bibliography.mode" dtm:id="edition.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="editor" dtm:idref="editor.bibliography-mode editor.bibliomixed-mode"/>
+<xsl:template match="editor" mode="bibliography.mode" dtm:id="editor.bibliography-mode">
+ <fo:inline>
+ <xsl:call-template name="person.name"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="firstname" dtm:idref="firstname.bibliography-mode firstname.bibliomixed-mode"/>
+<xsl:template match="firstname" mode="bibliography.mode" dtm:id="firstname.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="honorific" dtm:idref="honorific.bibliography-mode honorific.bibliomixed-mode"/>
+<xsl:template match="honorific" mode="bibliography.mode" dtm:id="honorific.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="indexterm" dtm:idref="indexterm.bibliography-mode indexterm.bibliomixed-mode"/>
+<xsl:template match="indexterm" mode="bibliography.mode" dtm:id="indexterm.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="invpartnumber" dtm:idref="invpartnumber.bibliography-mode invpartnumber.bibliomixed-mode"/>
+<xsl:template match="invpartnumber" mode="bibliography.mode" dtm:id="invpartnumber.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="isbn" dtm:idref="isbn.bibliography-mode isbn.bibliomixed-mode"/>
+<xsl:template match="isbn" mode="bibliography.mode" dtm:id="isbn.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="issn" dtm:idref="issn.bibliography-mode issn.bibliomixed-mode"/>
+<xsl:template match="issn" mode="bibliography.mode" dtm:id="issn.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="biblioid" dtm:idref="biblioid.bibliography-mode biblioid.bibliomixed-mode"/>
+<xsl:template match="biblioid" mode="bibliography.mode" dtm:id="biblioid.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="issuenum" dtm:idref="issuenum.bibliography-mode issuenum.bibliomixed-mode"/>
+<xsl:template match="issuenum" mode="bibliography.mode" dtm:id="issuenum.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="lineage" dtm:idref="lineage.bibliography-mode lineage.bibliomixed-mode"/>
+<xsl:template match="lineage" mode="bibliography.mode" dtm:id="lineage.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="orgname" dtm:idref="orgname.bibliography-mode orgname.bibliomixed-mode"/>
+<xsl:template match="orgname" mode="bibliography.mode" dtm:id="orgname.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="othercredit" dtm:idref="othercredit.bibliography-mode othercredit.bibliomixed-mode"/>
+<xsl:template match="othercredit" mode="bibliography.mode" dtm:id="othercredit.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="othername" dtm:idref="othername.bibliography-mode othername.bibliomixed-mode"/>
+<xsl:template match="othername" mode="bibliography.mode" dtm:id="othername.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="pagenums" dtm:idref="pagenums.bibliography-mode pagenums.bibliomixed-mode"/>
+<xsl:template match="pagenums" mode="bibliography.mode" dtm:id="pagenums.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="printhistory" dtm:idref="printhistory.bibliography-mode printhistory.bibliomixed-mode"/>
+<xsl:template match="printhistory" mode="bibliography.mode" dtm:id="printhistory.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="productname" dtm:idref="productname.bibliography-mode productname.bibliomixed-mode"/>
+<xsl:template match="productname" mode="bibliography.mode" dtm:id="productname.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="productnumber" dtm:idref="productnumber.bibliography-mode productnumber.bibliomixed-mode"/>
+<xsl:template match="productnumber" mode="bibliography.mode" dtm:id="productnumber.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="pubdate" dtm:idref="pubdate.bibliography-mode pubdate.bibliomixed-mode"/>
+<xsl:template match="pubdate" mode="bibliography.mode" dtm:id="pubdate.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="publisher" dtm:idref="pubdate.bibliography-mode pubdate.bibliomixed-mode"/>
+<xsl:template match="publisher" mode="bibliography.mode" dtm:id="pubdate.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="publishername" dtm:idref="publishername.bibliography-mode publishername.bibliomixed-mode"/>
+<xsl:template match="publishername" mode="bibliography.mode" dtm:id="publishername.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="pubsnumber" dtm:idref="pubsnumber.bibliography-mode pubsnumber.bibliomixed-mode"/>
+<xsl:template match="pubsnumber" mode="bibliography.mode" dtm:id="pubsnumber.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="releaseinfo" dtm:idref="releaseinfo.bibliography-mode releaseinfo.bibliomixed-mode"/>
+<xsl:template match="releaseinfo" mode="bibliography.mode" dtm:id="releaseinfo.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="revhistory" dtm:idref="revhistory.bibliography-mode revhistory.bibliomixed-mode"/>
+<xsl:template match="revhistory" mode="bibliography.mode" dtm:id="revhistory.bibliography-mode">
+ <fo:block>
+ <xsl:apply-templates select="."/> <!-- use normal mode -->
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="seriesinfo.bibliography-mode"/>
+<xsl:template match="seriesinfo" mode="bibliography.mode" dtm:id="seriesinfo.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="seriesvolnums" dtm:idref="seriesvolnums.bibliography-mode seriesvolnums.bibliomixed-mode"/>
+<xsl:template match="seriesvolnums" mode="bibliography.mode" dtm:id="seriesvolnums.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="subtitle" dtm:idref="subtitle.bibliography-mode subtitle.bibliomixed-mode"/>
+<xsl:template match="subtitle" mode="bibliography.mode" dtm:id="subtitle.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="surname" dtm:idref="surname.bibliography-mode surname.bibliomixed-mode"/>
+<xsl:template match="surname" mode="bibliography.mode" dtm:id="surname.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="title" dtm:idref="title.bibliography-mode title.bibliomixed-mode"/>
+<xsl:template match="title" mode="bibliography.mode" dtm:id="title.bibliography-mode">
+ <fo:inline>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="titleabbrev" dtm:idref="titleabbrev.bibliography-mode titleabbrev.bibliomixed-mode"/>
+<xsl:template match="titleabbrev" mode="bibliography.mode" dtm:id="titleabbrev.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="volumenum" dtm:idref="volumenum.bibliography-mode volumenum.bibliomixed-mode"/>
+<xsl:template match="volumenum" mode="bibliography.mode" dtm:id="volumenum.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="orgdiv.bibliography-mode"/>
+<xsl:template match="orgdiv" mode="bibliography.mode" dtm:id="orgdiv.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="collabname.bibliography-mode"/>
+<xsl:template match="collabname" mode="bibliography.mode" dtm:id="collabname.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="confdates.bibliography-mode"/>
+<xsl:template match="confdates" mode="bibliography.mode" dtm:id="confdates.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="conftitle.bibliography-mode"/>
+<xsl:template match="conftitle" mode="bibliography.mode" dtm:id="conftitle.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="confnum.bibliography-mode"/>
+<xsl:template match="confnum" mode="bibliography.mode" dtm:id="confnum.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="confsponsor.bibliography-mode"/>
+<xsl:template match="confsponsor" mode="bibliography.mode" dtm:id="confsponsor.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="bibliocoverage|biblioid|bibliorelation|bibliosource" dtm:idref="bibliochilds.bibliography-mode bibliochilds.bibliomixed-mode"/>
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliography.mode" dtm:id="bibliochilds.bibliography-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="all.bibliomixed-mode"/>
+<xsl:template match="*" mode="bibliomixed.mode" dtm:id="all.bibliomixed-mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliomixed.mode" dtm:id="abbrev.bibliomixed-mode">
+ <xsl:if test="preceding-sibling::*">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliomixed.mode" dtm:id="abstract.bibliomixed-mode">
+ <fo:block start-indent="1in">
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="para.bibliomixed-mode"/>
+<xsl:template match="para" mode="bibliomixed.mode" dtm:id="para.bibliomixed-mode">
+ <fo:block>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="address" mode="bibliomixed.mode" dtm:id="address.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliomixed.mode" dtm:id="affiliation.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliomixed.mode" dtm:id="shortaffil.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliomixed.mode" dtm:id="jobtitle.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliomixed.mode" dtm:id="artpagenums.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliomixed.mode" dtm:id="author.bibliomixed-mode">
+ <fo:inline>
+ <xsl:call-template name="person.name"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorblurb" mode="bibliomixed.mode" dtm:id="authorblurb.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliomixed.mode" dtm:id="authorgroup.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliomixed.mode" dtm:id="authorinitials.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliomixed.mode" dtm:id="bibliomisc.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bibliomset" mode="bibliomixed.mode" dtm:id="bibliomset.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliomset/title|bibliomset/citetitle"
+ mode="bibliomixed.mode" dtm:id="bibliotitles.bibliomixed-mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliomixed.mode" dtm:id="biblioset.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliomixed.mode" dtm:id="citetitle.bibliomixed-mode">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="collab" mode="bibliomixed.mode" dtm:id="collab.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliomixed.mode" dtm:id="confgroup.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliomixed.mode" dtm:id="contractnum.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliomixed.mode" dtm:id="contractsponsor.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliomixed.mode" dtm:id="contrib.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="copyright" mode="bibliomixed.mode" dtm:id="copyright.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="bibliomixed.mode" dtm:id="corpauthor.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliomixed.mode" dtm:id="corpname.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliomixed.mode" dtm:id="date.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliomixed.mode" dtm:id="edition.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliomixed.mode" dtm:id="editor.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliomixed.mode" dtm:id="firstname.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliomixed.mode" dtm:id="honorific.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliomixed.mode" dtm:id="indexterm.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliomixed.mode" dtm:id="invpartnumber.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliomixed.mode" dtm:id="isbn.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliomixed.mode" dtm:id="issn.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="biblioid" mode="bibliomixed.mode" dtm:id="biblioid.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliomixed.mode" dtm:id="issuenum.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliomixed.mode" dtm:id="lineage.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliomixed.mode" dtm:id="orgname.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliomixed.mode" dtm:id="othercredit.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliomixed.mode" dtm:id="othername.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliomixed.mode" dtm:id="pagenums.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliomixed.mode" dtm:id="printhistory.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliomixed.mode" dtm:id="productname.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliomixed.mode" dtm:id="productnumber.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliomixed.mode" dtm:id="pubdate.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliomixed.mode" dtm:id="publisher.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliomixed.mode" dtm:id="publishername.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliomixed.mode" dtm:id="pubsnumber.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliomixed.mode" dtm:id="releaseinfo.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliomixed.mode" dtm:id="revhistory.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliomixed.mode" dtm:id="seriesvolnums.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliomixed.mode" dtm:id="subtitle.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliomixed.mode" dtm:id="surname.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliomixed.mode" dtm:id="title.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliomixed.mode" dtm:id="titleabbrev.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliomixed.mode" dtm:id="volumenum.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliomixed.mode" dtm:id="bibliochilds.bibliomixed-mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/blocks.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/blocks.xsl
new file mode 100644
index 0000000..5c23e1b
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/blocks.xsl
@@ -0,0 +1,781 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+ <dtm:doc dtm:idref="block.object"/>
+ <xsl:template name="block.object" dtm:id="block.object">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="para"/>
+ <xsl:template match="para" dtm:id="para">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="sconsdoc"/>
+ <xsl:template match="sconsdoc" dtm:id="sconsdoc">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="simpara"/>
+ <xsl:template match="simpara" dtm:id="simpara">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="date-releaseinfo"/>
+ <xsl:template match="date|releaseinfo" dtm:id="date-releaseinfo">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="abstract"/>
+ <xsl:template match="abstract" dtm:id="abstract">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="plain.formal.title.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="formal.title.gentext">
+ <xsl:with-param name="key" select="'abstract'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="*[local-name(.) != 'title']"/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="blockquote"/>
+ <xsl:template match="blockquote" dtm:id="blockquote">
+ <fo:block xsl:use-attribute-sets="blockquote.properties">
+ <fo:block>
+ <xsl:if test="title">
+ <fo:block xsl:use-attribute-sets="formal.title.properties">
+ <xsl:apply-templates select="title" mode="plain.formal.title.mode"/>
+ </fo:block>
+ </xsl:if>
+ <xsl:apply-templates select="*[not(self::title or self::attribution)
+ or self::processing-instruction('se:choice')]"/>
+ </fo:block>
+ <xsl:if test="attribution">
+ <fo:block text-align="right">
+ <xsl:text>&#x2014;&#160;</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </fo:block>
+ </xsl:if>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="formalpara"/>
+ <xsl:template match="formalpara" dtm:id="formalpara">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates mode="formalpara"/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="title.formalpara.formalpara"/>
+ <xsl:template match="formalpara/title" mode="formalpara" dtm:id="title.formalpara.formalpara">
+ <xsl:variable name="titleStr" select="."/>
+ <xsl:variable name="lastChar">
+ <xsl:if test="$titleStr != ''">
+ <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <fo:inline font-weight="bold"
+ keep-with-next.within-line="always"
+ padding-right="1em">
+ <xsl:apply-templates/>
+ <xsl:if test="$lastChar != ''
+ and not(contains($title.end.punct, $lastChar))">
+ <xsl:value-of select="$default.title.end.punct"/>
+ </xsl:if>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="para.formalpara.formalpara"/>
+ <xsl:template match="formalpara/para" mode="formalpara" dtm:id="para.formalpara.formalpara">
+ <xsl:choose>
+ <xsl:when test="itemizedlist|orderedlist|segmentedlist|variablelist">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="indexterm.formalpara"/>
+ <xsl:template match="indexterm" mode="formalpara" dtm:id="indexterm.formalpara">
+ <xsl:if test="$show.preamble.editing">
+ <fo:block xsl:use-attribute-sets="preamble.attributes">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'draftarea'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>" </xsl:text>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:if>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="niwct"/>
+ <xsl:template match="note|important|warning|caution|tip" dtm:id="niwct">
+ <fo:block xsl:use-attribute-sets="note.properties">
+ <fo:block xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:choose>
+ <xsl:when test="title[not(self::processing-instruction('se:choice'))]">
+ <xsl:apply-templates select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="local-name(.)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+
+ <fo:block>
+ <xsl:apply-templates select="*[not(self::title)
+ or self::processing-instruction('se:choice')]"/>
+ </fo:block>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="authorgroup"/>
+ <xsl:template match="authorgroup" dtm:id="authorgroup">
+ <fo:block>
+ <xsl:apply-templates mode="authorgroup.mode"/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="node.authorgroup-mode"/>
+ <xsl:template match="node()" mode="authorgroup.mode" dtm:id="node.authorgroup-mode">
+ <xsl:apply-templates select='.'/>
+ <xsl:choose>
+ <xsl:when test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="legalnotice"/>
+ <xsl:template match="legalnotice" dtm:id="legalnotice">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="plain.formal.title.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="formal.title.gentext">
+ <xsl:with-param name="key" select="'legalnotice'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="*[not(self::title)
+ or self::processing-instruction('se:choice')]"/>
+ </xsl:template>
+
+ <!-- Allow revhistory in context -->
+
+ <dtm:doc dtm:idref="revhistory"/>
+ <xsl:template match="revhistory" dtm:id="revhistory">
+ <xsl:apply-templates select="." mode="rev.mode"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="revhistory.rev-mode"/>
+ <xsl:template match="revhistory" mode="rev.mode" dtm:id="revhistory.rev-mode">
+ <fo:block>
+ <xsl:call-template name="formal.title.gentext">
+ <xsl:with-param name="key" select="'revhistory'"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="revision" mode="rev.mode"/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="revision.rev-mode"/>
+ <xsl:template match="revision" mode="rev.mode" dtm:id="revision.rev-mode">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates mode="rev.mode"/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="revnumber.rev-mode"/>
+ <xsl:template match="revnumber" mode="rev.mode" dtm:id="revnumber.rev-mode">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'revision'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="authorinitials.rev-mode"/>
+ <xsl:template match="authorinitials" mode="rev.mode" dtm:id="authorinitials.rev-mode">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'revisedby'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="all.rev-mode"/>
+ <xsl:template match="*" mode="rev.mode" dtm:id="all.rev-mode">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="address"/>
+ <xsl:template match="address" dtm:id="address">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="footnote"/>
+ <xsl:template match="footnote" dtm:id="footnote">
+ <fo:block font-size="{$footnote.font.size}">
+ <xsl:if test="@id">
+ <fo:inline font-style="italic">
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'empty'"/>
+ <xsl:with-param name="name" select="'footnote'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>]</xsl:text>
+ </fo:inline>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="programlisting"/>
+ <xsl:template match="programlisting|screen|synopsis|literallayout" name="programlisting" dtm:id="programlisting">
+ <xsl:choose>
+ <xsl:when test="$shade.verbatim != 0">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="shade.verbatim.style verbatim.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="summary"/>
+ <xsl:template match="summary" dtm:id="summary">
+ <fo:block xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:text>Summary</xsl:text>
+ </fo:block>
+
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="builder"/>
+ <xsl:template match="builder" dtm:id="builder">
+ <fo:block xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:text>Builder '</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>'</xsl:text>
+ </fo:block>
+
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="cvar"/>
+ <xsl:template match="cvar" dtm:id="cvar">
+ <fo:block xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:text>CVar '</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>'</xsl:text>
+ </fo:block>
+
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="function"/>
+ <xsl:template match="function" dtm:id="function">
+ <fo:block xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:text>Function '</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>'</xsl:text>
+ </fo:block>
+
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="tool"/>
+ <xsl:template match="tool" dtm:id="tool">
+ <fo:block xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:text>Tool '</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>'</xsl:text>
+ </fo:block>
+
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="scons_example"/>
+ <xsl:template match="scons_example" name="scons_example" dtm:id="scons_example">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties"
+ background-color="#94caee">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="example_commands"/>
+ <xsl:template match="example_commands" name="example_commands" dtm:id="example_commands">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties"
+ background-color="#94caee">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="scons_example_file"/>
+ <xsl:template match="scons_example_file" name="scons_example_file" dtm:id="scons_example_file">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties"
+ background-color="#eed27b">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+
+ <dtm:doc dtm:idref="scons_output"/>
+ <xsl:template match="scons_output" name="scons_output" dtm:id="scons_output">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties"
+ background-color="#94caee">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="scons_output_command"/>
+ <xsl:template match="scons_output_command" name="scons_output_command" dtm:id="scons_output_command">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="shade.verbatim.style verbatim.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="sconstruct"/>
+ <xsl:template match="sconstruct" name="sconstruct" dtm:id="sconstruct">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties"
+ background-color="#94caee">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="file"/>
+ <xsl:template match="file" name="file" dtm:id="file">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties"
+ background-color="#eed27b">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="directory"/>
+ <xsl:template match="directory" name="directory" dtm:id="directory">
+ <fo:block
+ white-space-treatment='preserve'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="verbatim.properties"
+ background-color="#eed27b">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+<dtm:doc dtm:idref="epigraph"/>
+<xsl:template match="epigraph" dtm:id="epigraph">
+ <fo:block>
+ <xsl:apply-templates select="para|simpara|formalpara|literallayout"/>
+ <fo:inline>
+ <xsl:text>&#x2014;&#160;</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </fo:inline>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="sidebar"/>
+<xsl:template match="sidebar" dtm:id="sidebar">
+ <fo:block xsl:use-attribute-sets="sidebar.properties">
+ <xsl:if test="./title">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates select="./title" mode="sidebar.title.mode"/>
+ </fo:block>
+ </xsl:if>
+
+ <xsl:apply-templates select="*[not(self::title)
+ or self::processing-instruction('se:choice')]"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.sidebar.sidebar-title-mode"/>
+<xsl:template match="sidebar/title" mode="sidebar.title.mode" dtm:id="title.sidebar.sidebar-title-mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgset"/>
+<xsl:template match="msgset" dtm:id="msgset">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgentry"/>
+<xsl:template match="msgentry" dtm:id="msgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="simplemsgentry"/>
+<xsl:template match="simplemsgentry" dtm:id="simplemsgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msg"/>
+<xsl:template match="msg" dtm:id="msg">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgmain"/>
+<xsl:template match="msgmain" dtm:id="msgmain">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgsub"/>
+<xsl:template match="msgsub" dtm:id="msgsub">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgrel"/>
+<xsl:template match="msgrel" dtm:id="msgrel">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgtext"/>
+<xsl:template match="msgtext" dtm:id="msgtext">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msginfo"/>
+<xsl:template match="msginfo" dtm:id="msginfo">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="msglevel"/>
+<xsl:template match="msglevel" dtm:id="msglevel">
+ <fo:block>
+ <fo:inline font-weight="bold">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'msglevel'"/>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgorig"/>
+<xsl:template match="msgorig" dtm:id="msgorig">
+ <fo:block>
+ <fo:inline font-weight="bold">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'msgorig'"/>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgaud"/>
+<xsl:template match="msgaud" dtm:id="msgaud">
+ <fo:block>
+ <fo:inline font-weight="bold">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'msgaud'"/>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="msgexplan"/>
+<xsl:template match="msgexplan" dtm:id="msgexplan">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.msgexplan"/>
+<xsl:template match="msgexplan/title" dtm:id="title.msgexplan">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="ackno"/>
+<xsl:template match="ackno" dtm:id="ackno">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="highlights"/>
+<xsl:template match="highlights" dtm:id="highlights">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="calclines"/>
+<xsl:template name="calclines" dtm:id="calclines">
+ <xsl:param name="marks"/>
+ <xsl:param name="text" select="text()"/>
+ <xsl:param name="curline" select="0"/>
+ <xsl:variable name="lfeed" select="'&#xA;'"/>
+ <xsl:variable name="num" select="concat(' ', $curline, ' ')"/>
+ <xsl:choose>
+ <xsl:when test="contains($marks, $num)">
+ <xsl:variable name="str" select="concat(substring-before($marks, $num), substring-after($marks, $num))"/>
+ <xsl:variable name="mark" select="substring-before(substring-after(substring-after($marks, $num), '('), ')')"/>
+ <xsl:value-of select="concat('(', $mark, ')')"/>
+ <xsl:call-template name="calclines">
+ <xsl:with-param name="marks" select="$str"/>
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="curline" select="$curline"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($text, $lfeed)">
+ <xsl:value-of select="$lfeed"/>
+ <xsl:call-template name="calclines">
+ <xsl:with-param name="marks" select="$marks"/>
+ <xsl:with-param name="text" select="substring-after($text, $lfeed)"/>
+ <xsl:with-param name="curline" select="$curline + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="areaspec.calc"/>
+<xsl:template match="areaspec" mode="calc" dtm:id="areaspec.calc">
+ <xsl:apply-templates mode="calc"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="areaset.calc"/>
+<xsl:template match="areaset" mode="calc" dtm:id="areaset.calc">
+ <xsl:apply-templates mode="calc"/>
+ <xsl:value-of select="concat('(', string(position()), ')')"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="area.calc"/>
+<xsl:template match="area" mode="calc" dtm:id="area.calc">
+ <xsl:variable name="pos" select="number(normalize-space(@coords))"/>
+ <xsl:if test="not($pos = 'NaN')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="string($pos)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:if test="not(parent::areaset)">
+ <xsl:value-of select="concat('(', string(position()), ')')"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="programlisting.programlistingco"/>
+<xsl:template match="programlistingco/programlisting" dtm:id="programlisting.programlistingco">
+ <xsl:variable name="marks">
+ <xsl:apply-templates select="../areaspec" mode="calc"/>
+ </xsl:variable>
+ <xsl:variable name="lines">
+ <xsl:call-template name="calclines">
+ <xsl:with-param name="marks" select="$marks"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <fo:table>
+ <fo:table-column column-number="1"/>
+ <fo:table-column column-number="2" column-width="2cm" />
+ <fo:table-body>
+ <fo:table-row>
+ <fo:table-cell>
+ <xsl:call-template name="programlisting"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block linefeed-treatment="preserve"
+ xsl:use-attribute-sets="shade.verbatim.style verbatim.properties">
+ <xsl:value-of select="$lines"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<dtm:doc dtm:idref="programlistingco"/>
+<xsl:template match="programlistingco|areaspec|areaset|area|screenco" dtm:id="programlistingco">
+ <fo:block xsl:use-attribute-sets="normal.para.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="calloutlist"/>
+<xsl:template match="calloutlist" dtm:id="calloutlist">
+ <fo:block>
+ <xsl:apply-templates
+ select="title[not(self::processing-instruction('se:choice'))]"
+ mode="plain.formal.title.mode"/>
+
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-label-separation="0.2em">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:choose>
+ <xsl:when test="$label-width != ''">
+ <xsl:value-of select="$label-width"/>
+ </xsl:when>
+ <xsl:otherwise>2em</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:apply-templates select="callout"/>
+ </fo:list-block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="callout.calloutlist"/>
+<xsl:template match="calloutlist/callout" dtm:id="callout.calloutlist">
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <xsl:variable name="x" select="id(@arearefs)"/>
+ <xsl:for-each select="$x[1]/parent::*[1]/*">
+ <xsl:if test="@id = $x/@id">
+ <xsl:value-of select="concat('(', string(position()), ')')"/>
+ </xsl:if>
+ </xsl:for-each>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:apply-templates/>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<dtm:doc dtm:idref="co"/>
+<xsl:template match="co" dtm:id="co">
+ <fo:inline>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="position() div 2"/>
+ <xsl:text>)</xsl:text>
+ </fo:inline>
+</xsl:template>
+
+<!-- Indexterms -->
+ <dtm:doc dtm:idref="indexterm"/>
+ <xsl:template match="indexterm" dtm:id="indexterm">
+ <xsl:if test="'1' = $show.preamble.editing">
+ <fo:block background-color="#e0e0e0"
+ border-width="1pt"
+ border-color="black">
+ <xsl:choose>
+ <xsl:when test="@class='endofrange'">
+ <xsl:text>End of range</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="startofrange"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:if>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="primary.startofrange"/>
+ <xsl:template match="primary" mode="startofrange" dtm:id="primary.startofrange">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="tertiary.startofrange"/>
+ <xsl:template match="tertiary" mode="startofrange" dtm:id="tertiary.startofrange">
+ <fo:block start-indent="4em">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="see.startofrange"/>
+ <xsl:template match="seealso|see|secondary" mode="startofrange" dtm:id="see.startofrange">
+ <fo:block start-indent="2em">
+ <xsl:if test="local-name(.)='seealso'">
+ <xsl:text>See also: </xsl:text>
+ </xsl:if>
+ <xsl:if test="local-name(.)='see'">
+ <xsl:text>See: </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/common-table.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/common-table.xsl
new file mode 100644
index 0000000..4bf89ca
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/common-table.xsl
@@ -0,0 +1,444 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version="1.0">
+
+ <!-- A row expressed with the following mnemonics:
+
+ 0: -> means a cell, that takes no rows down
+ 1: -> means a cell, that takes 1 row down besides its own row
+ 0:0:0: -> means a cell, that spans 3 cells in its row and takes no row down
+ 1:1: -> means a cell, that spans 2 cells in its row and takes 1 more row down
+
+ -->
+
+
+ <!-- Creates a string of "0:" repeating number of "cols"
+
+ For cols==0: ""
+ cols==1: 0:
+ cols==2: 0:0:
+ ....
+ -->
+<dtm:doc dtm:idref="blank.spans"/>
+<xsl:template name="blank.spans" dtm:id="blank.spans">
+ <xsl:param name="cols" select="1"/>
+ <xsl:if test="$cols &gt; 0">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="$cols - 1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- Calculates the following cells' span mnemonic, removing
+ span related to current cell.
+-->
+<dtm:doc dtm:idref="calculate.following.spans"/>
+<xsl:template name="calculate.following.spans" dtm:id="calculate.following.spans">
+ <xsl:param name="colspan" select="1"/>
+ <xsl:param name="spans" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="$colspan &gt; 0">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$colspan - 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$spans"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Generate empty cells if the span is not exhausted. -->
+<dtm:doc dtm:idref="finaltd"/>
+<xsl:template name="finaltd" dtm:id="finaltd">
+ <xsl:param name="spans"/>
+ <xsl:param name="col" select="0"/>
+
+ <xsl:if test="$spans != ''">
+ <xsl:choose>
+ <xsl:when test="starts-with($spans,'0:')">
+ <!-- TODO: We now disable generating empty cells in the end of
+ the row. When table cell extension will be created, empty cells will be
+ generated. -->
+ <!-- xsl:call-template name="empty.table.cell">
+ <xsl:with-param name="colnum" select="$col"/>
+ </xsl:call-template -->
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ <xsl:with-param name="col" select="$col+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- For every mnemonic in spans decrease its morerows value for 1 -->
+<dtm:doc dtm:idref="sfinaltd"/>
+<xsl:template name="sfinaltd" dtm:id="sfinaltd">
+ <xsl:param name="spans"/>
+
+ <xsl:if test="$spans != ''">
+ <xsl:choose>
+ <xsl:when test="starts-with($spans,'0:')">0:</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- Do nothing if following spans is none -->
+</xsl:template>
+
+<!-- entry.colnum
+ Determine the column number in which a given entry occurs
+
+ If an entry has a colname or namest attribute,
+ this template will determine the number of the column in which the
+ entry should occur.
+
+ For other entry's, 0 is returned.
+-->
+<dtm:doc dtm:idref="entry.colnum"/>
+<xsl:template name="entry.colnum" dtm:id="entry.colnum">
+ <xsl:param name="entry" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$entry/@spanname">
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="$entry/ancestor::tgroup/spanspec[@spanname=$spanname]"/>
+ <xsl:variable name="colspec"
+ select="$entry/ancestor::tgroup/colspec[@colname=$spanspec/@namest]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@colname">
+ <xsl:variable name="colname" select="$entry/@colname"/>
+ <xsl:variable name="colspec"
+ select="$entry/ancestor::tgroup/colspec[@colname=$colname]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@namest">
+ <xsl:variable name="namest" select="$entry/@namest"/>
+ <xsl:variable name="colspec"
+ select="$entry/ancestor::tgroup/colspec[@colname=$namest]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- no idea, return 0 -->
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+ <!-- Calculates column number the given colspec corresponds to. -->
+<dtm:doc dtm:idref="colspec.colnum"/>
+<xsl:template name="colspec.colnum" dtm:id="colspec.colnum">
+ <xsl:param name="colspec" select="."/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:when test="$colspec/preceding-sibling::colspec">
+ <xsl:variable name="prec.colspec.colnum">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="$colspec/preceding-sibling::colspec[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prec.colspec.colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!--
+ Calculates how many cells the span takes. If one cell, then
+ value is 1.
+-->
+<dtm:doc dtm:idref="calculate.colspan"/>
+<xsl:template name="calculate.colspan" dtm:id="calculate.colspan">
+ <xsl:param name="entry" select="."/>
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="$entry/ancestor::tgroup/spanspec[@spanname=$spanname]"/>
+
+ <xsl:variable name="namest">
+ <xsl:choose>
+ <xsl:when test="@spanname">
+ <xsl:value-of select="$spanspec/@namest"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@namest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="nameend">
+ <xsl:choose>
+ <xsl:when test="@spanname">
+ <xsl:value-of select="$spanspec/@nameend"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@nameend"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="$entry/ancestor::tgroup/colspec[@colname=$namest]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="ecol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="$entry/ancestor::tgroup/colspec[@colname=$nameend]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$namest != '' and $nameend != ''">
+ <xsl:choose>
+ <xsl:when test="$ecol &gt;= $scol">
+ <xsl:value-of select="$ecol - $scol + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$scol - $ecol + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="inherited.table.attribute"/>
+<xsl:template name="inherited.table.attribute" dtm:id="inherited.table.attribute">
+ <xsl:param name="entry" select="."/>
+ <xsl:param name="colnum" select="0"/>
+ <xsl:param name="attribute" select="'colsep'"/>
+
+ <xsl:variable name="row" select="$entry/ancestor-or-self::row[1]"/>
+ <xsl:variable name="tgroup" select="$row/ancestor::tgroup[1]"/>
+
+ <xsl:variable name="entry.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$entry"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="row.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$row"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="span.value">
+ <xsl:if test="$entry/@spanname">
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="$tgroup/spanspec[@spanname=$spanname]"/>
+ <xsl:variable name="span.colspec"
+ select="$tgroup/colspec[@colname=$spanspec/@namest]"/>
+
+ <xsl:variable name="spanspec.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$spanspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="scolspec.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$span.colspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spanspec.value != ''">
+ <xsl:value-of select="$spanspec.value"/>
+ </xsl:when>
+ <xsl:when test="$scolspec.value != ''">
+ <xsl:value-of select="$scolspec.value"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="namest.value">
+ <xsl:if test="$entry/@namest">
+ <xsl:variable name="namest" select="$entry/@namest"/>
+ <xsl:variable name="colspec"
+ select="$tgroup/colspec[@colname=$namest]"/>
+
+ <xsl:variable name="inner.namest.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$inner.namest.value">
+ <xsl:value-of select="$inner.namest.value"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="tgroup.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$tgroup"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="default.value">
+ <!-- This section used to say that rowsep and colsep have defaults based -->
+ <!-- on the frame setting. Further reflection and closer examination of the -->
+ <!-- CALS spec reveals I was mistaken. The default is "1" for rowsep and colsep. -->
+ <!-- For everything else, the default is the tgroup value -->
+ <xsl:choose>
+ <xsl:when test="$tgroup.value != ''">
+ <xsl:value-of select="$tgroup.value"/>
+ </xsl:when>
+ <xsl:when test="$attribute = 'rowsep'">1</xsl:when>
+ <xsl:when test="$attribute = 'colsep'">1</xsl:when>
+ <xsl:otherwise><!-- empty --></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$entry.value != ''">
+ <xsl:value-of select="$entry.value"/>
+ </xsl:when>
+ <xsl:when test="$row.value != ''">
+ <xsl:value-of select="$row.value"/>
+ </xsl:when>
+ <xsl:when test="$span.value != ''">
+ <xsl:value-of select="$span.value"/>
+ </xsl:when>
+ <xsl:when test="$namest.value != ''">
+ <xsl:value-of select="$namest.value"/>
+ </xsl:when>
+ <xsl:when test="$colnum &gt; 0">
+ <xsl:variable name="calc.colvalue">
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$calc.colvalue != ''">
+ <xsl:value-of select="$calc.colvalue"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Get colspec value. Namely, value given for the current column. -->
+
+<dtm:doc dtm:idref="colnum.colspec"/>
+<xsl:template name="colnum.colspec" dtm:id="colnum.colspec">
+ <xsl:param name="colnum" select="0"/>
+ <xsl:param name="attribute" select="'colname'"/>
+ <xsl:param name="colspecs" select="ancestor::tgroup/colspec"/>
+ <!-- Param count tells which colspec we currently work on -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <!-- If there are no column specifications or current colspec
+ over the colnum, we did not find any column specifications -->
+ <xsl:when test="not($colspecs) or $count &gt; $colnum">
+ <!-- nop -->
+ </xsl:when>
+ <!-- If the first colspec has col number, explore it -->
+ <xsl:when test="$colspecs[1]/@colnum">
+ <xsl:choose>
+ <!-- If colspec's colnum is our colnum take the value -->
+ <xsl:when test="$colspecs[1]/@colnum = $colnum">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspecs[1]"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Otherwise proceed to the next colspec -->
+ <xsl:otherwise>
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="colspecs"
+ select="$colspecs[position()&gt;1]"/>
+ <xsl:with-param name="count"
+ select="$colspecs[1]/@colnum+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Colspec does not have explicit number, therefore rely on
+ "count" -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- If we reached right colspec, take it value. -->
+ <xsl:when test="$count = $colnum">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspecs[1]"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Otherwise proceed to the next colspec -->
+ <xsl:otherwise>
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="colspecs"
+ select="$colspecs[position()&gt;1]"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="get-attribute"/>
+<xsl:template name="get-attribute" dtm:id="get-attribute">
+ <xsl:param name="element" select="."/>
+ <xsl:param name="attribute" select="''"/>
+
+ <xsl:for-each select="$element/@*">
+ <xsl:if test="local-name(.) = $attribute">
+ <xsl:value-of select="."/>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/common.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/common.xsl
new file mode 100644
index 0000000..0683f5e
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/common.xsl
@@ -0,0 +1,451 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ exclude-result-prefixes="doc"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+ <!-- Counts the depth of the sections/refsections/sectN when
+ "title" is a context node -->
+ <dtm:doc dtm:idref="section.level"/>
+ <xsl:template name="section.level" dtm:id="section.level">
+ <xsl:param name="parent" select="parent::*"/>
+ <xsl:variable name="title.parent" select="name($parent)"/>
+ <xsl:choose>
+ <xsl:when test="$title.parent='section'">
+ <xsl:value-of select="count(ancestor::section)"/>
+ </xsl:when>
+ <xsl:when test="$title.parent='refsection'">
+ <xsl:value-of select="count(ancestor::refsection)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable
+ name="nmbr"
+ select="translate($title.parent, 'sectionrfmpl', '')"/>
+ <xsl:choose>
+ <xsl:when test="number($nmbr) = 'NaN'">1</xsl:when>
+ <xsl:otherwise><xsl:value-of select="$nmbr"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<dtm:doc dtm:idref="get.type"/>
+<xsl:template name="get.type" dtm:id="get.type">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="$node[self::appendix or self::article
+ or self::chapter or self::preface
+ or self::bibliography or self::glossary
+ or self::index]">component</xsl:when>
+ <xsl:when test="$node[self::book or self::part or
+ self::set or self::reference]">division</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="is.component"/>
+<xsl:template name="is.component" dtm:id="is.component">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="$node[self::appendix or self::article or
+ self::chapter or self::preface or
+ self::bibliography or self::glossary or
+ self::index]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="copyright.years"/>
+<xsl:template name="copyright.years" dtm:id="copyright.years">
+ <xsl:param name="years"/>
+ <xsl:param name="print.ranges" select="1"/>
+ <xsl:param name="single.year.ranges" select="0"/>
+ <xsl:param name="firstyear" select="0"/>
+ <xsl:param name="nextyear" select="0"/>
+ <xsl:variable name="num.years" select="count($years)"/>
+ <xsl:choose>
+ <xsl:when test="$print.ranges = 0">
+ <xsl:choose>
+ <xsl:when test="$num.years = 0"/>
+ <xsl:when test="$num.years = 1">
+ <xsl:apply-templates select="$years[1]" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$years[1]" mode="titlepage.mode"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$num.years = 0">
+ <xsl:variable name="lastyear" select="$nextyear - 1"/>
+ <xsl:choose>
+ <xsl:when test="$firstyear = 0">
+ <!-- there weren't any years at all -->
+ </xsl:when>
+ <xsl:when test="$firstyear = $lastyear">
+ <xsl:value-of select="$firstyear"/>
+ </xsl:when>
+ <xsl:when test="$single.year.ranges = 0
+ and $lastyear = $firstyear + 1">
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$lastyear"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="$lastyear"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$firstyear = 0">
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="firstyear" select="$years[1]"/>
+ <xsl:with-param name="nextyear" select="$years[1] + 1"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$nextyear = $years[1]">
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="firstyear" select="$firstyear"/>
+ <xsl:with-param name="nextyear" select="$nextyear + 1"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- we have years left, but they aren't in the current range -->
+ <xsl:choose>
+ <xsl:when test="$nextyear = $firstyear + 1">
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:when test="$single.year.ranges = 0
+ and $nextyear = $firstyear + 2">
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$nextyear - 1"/>
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="$nextyear - 1"/>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="firstyear" select="$years[1]"/>
+ <xsl:with-param name="nextyear" select="$years[1] + 1"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="lookup.key"/>
+<xsl:template name="lookup.key" dtm:id="lookup.key">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="table" select="''"/>
+
+ <xsl:if test="contains($table, ' ')">
+ <xsl:choose>
+ <xsl:when test="substring-before($table, ' ') = $key">
+ <xsl:variable name="rest" select="substring-after($table, ' ')"/>
+ <xsl:choose>
+ <xsl:when test="contains($rest, ' ')">
+ <xsl:value-of select="substring-before($rest, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="lookup.key">
+ <xsl:with-param name="key" select="$key"/>
+ <xsl:with-param name="table" select="substring-after(substring-after($table,' '), ' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="copy-string"/>
+<xsl:template name="copy-string" dtm:id="copy-string">
+ <!-- returns 'count' copies of 'string' -->
+ <xsl:param name="string"/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="result"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="count" select="$count - 1"/>
+ <xsl:with-param name="result">
+ <xsl:value-of select="$result"/>
+ <xsl:value-of select="$string"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$result"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="decorations"/>
+<xsl:template name="decorations" dtm:id="decorations">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:call-template name="lookup.key">
+ <xsl:with-param name="key" select="$key"/>
+ <xsl:with-param name="table" select="$generate.toc"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="dingbat"/>
+<xsl:template name="dingbat" dtm:id="dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:variable name="symbol">
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">o</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#x00A9;</xsl:when>
+ <xsl:when test="$dingbat='trademark'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='trade'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='registered'">&#x00AE;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">"</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">"</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">'</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">'</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">--</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">-</xsl:when>
+ <xsl:otherwise>o</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$dingbat.font.family = ''">
+ <xsl:copy-of select="$symbol"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-family="{$dingbat.font.family}">
+ <xsl:copy-of select="$symbol"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="person.name"/>
+<xsl:template name="person.name" dtm:id="person.name">
+ <!-- Formats a personal name. Handles corpauthor as a special case. -->
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$node/@role">
+ <xsl:value-of select="$node/@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text></xsl:text> <!-- TODO: move to a param -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- the personname element is a specialcase -->
+ <xsl:when test="$node/personname">
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$node/personname"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- handle corpauthor as a special case...-->
+ <xsl:when test="name($node)='corpauthor'">
+ <xsl:apply-templates select="$node"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$style = 'family-given'">
+ <xsl:call-template name="person.name.family-given">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$style = 'last-first'">
+ <xsl:call-template name="person.name.last-first">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name.first-last">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="person.name.family-given"/>
+<xsl:template name="person.name.family-given" dtm:id="person.name.family-given">
+ <xsl:param name="node" select="."/>
+
+ <!-- The family-given style applies a convention for identifying given -->
+ <!-- and family names in locales where it may be ambiguous -->
+ <xsl:apply-templates select="$node/surname[1]"/>
+
+ <xsl:if test="$node/surname and $node/firstname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="$node/firstname[1]"/>
+
+ <xsl:text> [FAMILY Given]</xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:idref="person.name.last-first"/>
+<xsl:template name="person.name.last-first" dtm:id="person.name.last-first">
+ <xsl:param name="node" select="."/>
+
+ <xsl:apply-templates select="$node/surname[1]"/>
+
+ <xsl:if test="$node/surname and $node/firstname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="$node/firstname[1]"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="person.name.first-last"/>
+<xsl:template name="person.name.first-last" dtm:id="person.name.first-last">
+ <xsl:param name="node" select="."/>
+
+ <xsl:if test="$node/honorific">
+ <xsl:apply-templates select="$node/honorific[1]"/>
+ <xsl:value-of select="$punct.honorific"/>
+ </xsl:if>
+
+ <xsl:if test="$node/firstname">
+ <xsl:if test="$node/honorific">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node/firstname[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node/othername and $author.othername.in.middle != 0">
+ <xsl:if test="$node/honorific or $node/firstname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node/othername[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node/surname">
+ <xsl:if test="$node/honorific or $node/firstname
+ or ($node/othername and $author.othername.in.middle != 0)">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node/surname[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node/lineage">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates select="$node/lineage[1]"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="person.name.list"/>
+<xsl:template name="person.name.list" dtm:id="person.name.list">
+ <!-- Return a formatted string representation of the contents of
+ the current element. The current element must contain one or
+ more AUTHORs, CORPAUTHORs, OTHERCREDITs, and/or EDITORs.
+
+ John Doe
+ or
+ John Doe and Jane Doe
+ or
+ John Doe, Jane Doe, and A. Nonymous
+ -->
+ <xsl:param name="person.list"
+ select="author|corpauthor|othercredit|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template><!-- person.name.list -->
+
+<xsl:variable name="arg.choice.opt.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.opt.close.str">]</xsl:variable>
+<xsl:variable name="arg.choice.req.open.str">{</xsl:variable>
+<xsl:variable name="arg.choice.req.close.str">}</xsl:variable>
+<xsl:variable name="arg.choice.plain.open.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.plain.close.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.def.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.def.close.str">]</xsl:variable>
+<xsl:variable name="arg.rep.repeat.str">...</xsl:variable>
+<xsl:variable name="arg.rep.norepeat.str"></xsl:variable>
+<xsl:variable name="arg.rep.def.str"></xsl:variable>
+<xsl:variable name="arg.or.sep"> | </xsl:variable>
+<xsl:variable name="cmdsynopsis.hanging.indent">4pi</xsl:variable>
+
+<xsl:param name="use-serna-extensions"
+ select="contains(system-property('xsl:vendor'), 'Syntext')"/>
+
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/compounds.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/compounds.xsl
new file mode 100644
index 0000000..430cec0
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/compounds.xsl
@@ -0,0 +1,126 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<dtm:doc dtm:idref="appendix"/>
+<xsl:template match="appendix" dtm:id="appendix">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|appendixinfo|docinfo"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle
+ or self::titleabbrev
+ or self::appendixinfo or self::docinfo)]"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="appendix.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+
+<dtm:doc dtm:idref="article"/>
+<xsl:template match="article" dtm:id="article">
+ <xsl:variable name="preamble"
+ select="title|subtitle|articleinfo|artheader"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle
+ or self::articleinfo or self::artheader)]"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="article.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="preface"/>
+<xsl:template match="preface" dtm:id="preface">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|docinfo|prefaceinfo"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle or self::titleabbrev
+ or self::docinfo or self::prefaceinfo)]"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="preface.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="chapter"/>
+<xsl:template match="chapter" dtm:id="chapter">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|docinfo|chapterinfo"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle or self::titleabbrev
+ or self::docinfo or self::chapterinfo)]"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="chapter.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="sections"/>
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5" dtm:id="sections">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|sectioninfo|sect1info
+ |sect2info|sect3info|sect4info|sect5info"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle or self::titleabbrev
+ or self::sectioninfo or self::sect1info
+ or self::sect2info or self::sect3info
+ or self::sect4info or self::sect5info)]"/>
+ <fo:block
+ xsl:use-attribute-sets="section.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="section.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="simplesect"/>
+<xsl:template match="simplesect" dtm:id="simplesect">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle or self::titleabbrev)]"/>
+ <fo:block
+ xsl:use-attribute-sets="section.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="simplesect.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/divisions.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/divisions.xsl
new file mode 100644
index 0000000..f740eb6
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/divisions.xsl
@@ -0,0 +1,88 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<!-- ==================================================================== -->
+
+<!-- The priority is set for exceeding /* template.
+ Templates that contain page-sequence/flow should exceed
+ the /* fallback. -->
+
+<dtm:doc dtm:idref="bp.root-mode"/>
+<xsl:template match="/book|/part" priority="1" mode="root.mode" dtm:id="bp.root-mode">
+ <fo:page-sequence
+ master-reference="body"
+ initial-page-number="1">
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:apply-templates select="."/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<dtm:doc dtm:idref="set"/>
+<xsl:template match="set" dtm:id="set">
+ <xsl:variable name="preamble"
+ select="*[not(self::book or self::setindex)]"/>
+ <xsl:variable name="content" select="book|setindex"/>
+
+ <fo:block>
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="set.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="book"/>
+<xsl:template match="book" dtm:id="book">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|bookinfo"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle
+ or self::titleabbrev
+ or self::bookinfo)]"/>
+ <fo:block>
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="book.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="part"/>
+<xsl:template match="part" dtm:id="part">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|partinfo|docinfo"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle
+ or self::titleabbrev or self::partinfo
+ or self::docinfo)]"/>
+ <fo:block>
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="part.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="titles"/>
+<xsl:template match="title|subtitle|titleabbrev|bookinfo|othercredit|edition|setinfo" priority="-1" dtm:id="titles">
+ <fo:block padding-bottom="1em">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/docbook.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/docbook.xsl
new file mode 100644
index 0000000..fd2c4b8
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/docbook.xsl
@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ extension-element-prefixes="xse"
+ version='1.0'>
+<!--
+
+ DocBook XSL Stylesheet for Syntext Serna (c) 2003, Syntext Inc.
+
+ The Stylesheet is based on Norman Walsh XSL DocBook Stylesheet
+ distribution. See file NW-COPYING for Norman Walsh Copyright
+ information.
+
+-->
+ <xsl:import href="http://www.syntext.com/xslbricks-1.0/fo/fonts.xsl"/>
+ <xsl:import href="http://www.syntext.com/xslbricks-1.0/fo/common.xsl"/>
+ <xsl:import href="http://www.syntext.com/xslbricks-1.0/fo/layoutsetup.xsl"/>
+ <xsl:import href="http://www.syntext.com/xslbricks-1.0/fo/default-elements.xsl"/>
+ <xsl:import href="http://www.syntext.com/xslbricks-1.0/fo/page-sizes.xsl"/>
+
+ <xsl:include href="table.xsl" xse:alt-href="serna-table.xsl"/>
+ <xsl:include href="titlepage.templates.xsl"/>
+ <xsl:include href="titlepage.xsl"/>
+
+ <xsl:include href="parameters.xsl"/>
+ <xsl:include href="divisions.xsl"/>
+ <xsl:include href="compounds.xsl"/>
+ <xsl:include href="common.xsl"/>
+ <xsl:include href="blocks.xsl"/>
+ <xsl:include href="inlines.xsl"/>
+ <xsl:include href="glossary.xsl"/>
+
+ <xsl:include href="l10n.xsl"/>
+
+ <xsl:include href="titles.xsl"/>
+ <xsl:include href="refentry.xsl"/>
+ <xsl:include href="synopsis.xsl"/>
+ <xsl:include href="formal.xsl"/>
+ <xsl:include href="graphics.xsl"/>
+ <xsl:include href="qandaset.xsl"/>
+ <xsl:include href="biblio.xsl"/>
+ <xsl:include href="lists.xsl"/>
+ <xsl:include href="xref.xsl"/>
+
+
+ <xsl:include href="toc.titles.xsl"/>
+ <xsl:include href="toc.labels.xsl"/>
+ <xsl:include href="toc.xsl"/>
+
+ <xsl:output method="xml"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:preserve-space elements="programlisting screen para synopsis literallayout sconstruct scons_example_file example_commands scons_output_command file directory"/>
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/formal.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/formal.xsl
new file mode 100644
index 0000000..0f292cf
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/formal.xsl
@@ -0,0 +1,216 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<dtm:doc dtm:idref="formal.object.content"/>
+<xsl:template name="formal.object.content" dtm:id="formal.object.content">
+ <xsl:param name="placement"/>
+
+ <xsl:if test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:if test="$placement != 'before'">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+
+</xsl:template>
+
+<dtm:doc dtm:idref="formal.object"/>
+<xsl:template name="formal.object" dtm:id="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+
+ <fo:block xsl:use-attribute-sets="formal.object.properties">
+ <xsl:call-template name="formal.object.content">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="formal.object.heading"/>
+<xsl:template name="formal.object.heading" dtm:id="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="placement" select="'before'"/>
+
+ <xsl:if test="$object/title[not(self::processing-instruction('se:choice'))]">
+ <fo:block xsl:use-attribute-sets="formal.title.properties">
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:attribute
+ name="keep-with-next.within-column">always</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute
+ name="keep-with-previous.within-column">always</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$object/title" mode="formal.title.mode">
+ <xsl:with-param name="key" select="local-name($object)"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="informal.object"/>
+<xsl:template name="informal.object" dtm:id="informal.object">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'equation'">
+ <fo:block
+ xsl:use-attribute-sets="equation.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'procedure'">
+ <fo:block
+ xsl:use-attribute-sets="procedure.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="semiformal.object"/>
+<xsl:template name="semiformal.object" dtm:id="semiformal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:choose>
+ <xsl:when test="./title">
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="informal.object"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="figure"/>
+<xsl:template match="figure" dtm:id="figure">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<dtm:doc dtm:idref="example"/>
+<xsl:template match="example" dtm:id="example">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<dtm:doc dtm:idref="equation"/>
+<xsl:template match="equation" dtm:id="equation">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="semiformal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<dtm:doc dtm:idref="title.figure"/>
+<xsl:template match="figure/title" dtm:id="title.figure"></xsl:template>
+
+<dtm:doc dtm:idref="titleabbrev.figure"/>
+<xsl:template match="figure/titleabbrev" dtm:id="titleabbrev.figure"></xsl:template>
+
+<dtm:doc dtm:idref="title.table"/>
+<xsl:template match="table/title" dtm:id="title.table"></xsl:template>
+
+<dtm:doc dtm:idref="titleabbrev.table"/>
+<xsl:template match="table/titleabbrev" dtm:id="titleabbrev.table"></xsl:template>
+
+<dtm:doc dtm:idref="textobject.table"/>
+<xsl:template match="table/textobject" dtm:id="textobject.table"></xsl:template>
+
+<dtm:doc dtm:idref="title.example"/>
+<xsl:template match="example/title" dtm:id="title.example"></xsl:template>
+
+<dtm:doc dtm:idref="titleabbrev.example"/>
+<xsl:template match="example/titleabbrev" dtm:id="titleabbrev.example"></xsl:template>
+
+<dtm:doc dtm:idref="title.equation"/>
+<xsl:template match="equation/title" dtm:id="title.equation"></xsl:template>
+
+<dtm:doc dtm:idref="titleabbrev.equation"/>
+<xsl:template match="equation/titleabbrev" dtm:id="titleabbrev.equation"></xsl:template>
+
+<dtm:doc dtm:idref="informalfigure"/>
+<xsl:template match="informalfigure" dtm:id="informalfigure">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="informalexample"/>
+<xsl:template match="informalexample" dtm:id="informalexample">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="textobject.informaltable"/>
+<xsl:template match="informaltable/textobject" dtm:id="textobject.informaltable"></xsl:template>
+
+<dtm:doc dtm:idref="informalequation"/>
+<xsl:template match="informalequation" dtm:id="informalequation">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl
new file mode 100644
index 0000000..e7de5f5
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl
@@ -0,0 +1,500 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="xpath.location"/>
+<xsl:template name="xpath.location" dtm:id="xpath.location">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="path" select="''"/>
+
+ <xsl:variable name="next.path">
+ <xsl:value-of select="local-name($node)"/>
+ <xsl:if test="$path != ''">/</xsl:if>
+ <xsl:value-of select="$path"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$node/parent::*">
+ <xsl:call-template name="xpath.location">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ <xsl:with-param name="path" select="$next.path"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$next.path"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.object.title.template"/>
+<xsl:template match="*" mode="object.title.template" dtm:id="all.object.title.template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="chapter.object.title.template"/>
+<xsl:template match="chapter" mode="object.title.template" dtm:id="chapter.object.title.template">
+ <xsl:choose>
+ <xsl:when test="$chapter.autolabel != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="appendix.object.title.template"/>
+<xsl:template match="appendix" mode="object.title.template" dtm:id="appendix.object.title.template">
+ <xsl:choose>
+ <xsl:when test="$appendix.autolabel != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:elements="section|simplesect|sect1|sect2|sect3|sect4|sect5|refsect1|refsect2|refsect3|bridgehead" dtm:idref="sections.object.title.template sections.object.xref.template"/>
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5|simplesect
+ |bridgehead"
+ mode="object.title.template" dtm:id="sections.object.title.template">
+ <xsl:choose>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="procedure.object.title.template"/>
+<xsl:template match="procedure" mode="object.title.template" dtm:id="procedure.object.title.template">
+ <xsl:choose>
+ <xsl:when test="$formal.procedures != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ <xsl:text>.formal</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.object.subtitle.template"/>
+<xsl:template match="*" mode="object.subtitle.template" dtm:id="all.object.subtitle.template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'subtitle'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.object.xref.template"/>
+<xsl:template match="*" mode="object.xref.template" dtm:id="all.object.xref.template">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+
+ <xsl:variable name="number-and-title-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$number-and-title-template != 0
+ and $xref.with.number.and.title != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section|simplesect
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3
+ |bridgehead"
+ mode="object.xref.template" dtm:id="sections.object.xref.template">
+
+ <xsl:variable name="number-and-title-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$number-and-title-template != 0
+ and $xref.with.number.and.title != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'section-xref-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'section-xref'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.object.title.markup"/>
+<xsl:template match="*" mode="object.title.markup" dtm:id="all.object.title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.title.template"/>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>object.title.markup: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$template"/>
+ </xsl:message>
+-->
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.object.title.markup.textonly"/>
+<xsl:template match="*" mode="object.title.markup.textonly" dtm:id="all.object.title.markup.textonly">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.object.titleabbrev.markup"/>
+<xsl:template match="*" mode="object.titleabbrev.markup" dtm:id="all.object.titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <!-- Just for consistency in template naming -->
+
+ <xsl:apply-templates select="." mode="titleabbrev.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.object.subtitle.markup"/>
+<xsl:template match="*" mode="object.subtitle.markup" dtm:id="all.object.subtitle.markup">
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.subtitle.template"/>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.object.xref.markup"/>
+<xsl:template match="*" mode="object.xref.markup" dtm:id="all.object.xref.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.xref.template">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>object.xref.markup: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$purpose"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>: [</xsl:text>
+ <xsl:value-of select="$template"/>
+ <xsl:text>]</xsl:text>
+ </xsl:message>
+-->
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="listitem.object-xref-markup"/>
+<xsl:template match="listitem" mode="object.xref.markup" dtm:id="listitem.object-xref-markup">
+ <xsl:choose>
+ <xsl:when test="parent::orderedlist">
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.xref.template"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Xref is only supported to listitems in an</xsl:text>
+ <xsl:text> orderedlist: </xsl:text>
+ <xsl:value-of select="@id"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="substitute-markup"/>
+<xsl:template name="substitute-markup" dtm:id="substitute-markup">
+ <xsl:param name="template" select="''"/>
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:param name="title" select="''"/>
+ <xsl:param name="subtitle" select="''"/>
+ <xsl:param name="label" select="''"/>
+ <xsl:param name="pagenumber" select="''"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($template, '%')">
+ <xsl:value-of select="substring-before($template, '%')"/>
+ <xsl:variable name="candidate"
+ select="substring(substring-after($template, '%'), 1, 1)"/>
+ <xsl:choose>
+ <xsl:when test="$candidate = 't'">
+ <xsl:apply-templates select="." mode="insert.title.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="title">
+ <xsl:choose>
+ <xsl:when test="$title != ''">
+ <xsl:copy-of select="$title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 's'">
+ <xsl:apply-templates select="." mode="insert.subtitle.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="subtitle">
+ <xsl:choose>
+ <xsl:when test="$subtitle != ''">
+ <xsl:copy-of select="$subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'n'">
+ <xsl:apply-templates select="." mode="insert.label.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="label">
+ <xsl:choose>
+ <xsl:when test="$label != ''">
+ <xsl:copy-of select="$label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'p'">
+ <xsl:apply-templates select="." mode="insert.pagenumber.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="pagenumber">
+ <xsl:choose>
+ <xsl:when test="$pagenumber != ''">
+ <xsl:copy-of select="$pagenumber"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="pagenumber.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'd'">
+ <xsl:apply-templates select="." mode="insert.direction.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="direction">
+ <xsl:choose>
+ <xsl:when test="$referrer">
+ <xsl:variable name="referent-is-below">
+ <xsl:for-each select="preceding::xref">
+ <xsl:if test="generate-id(.) = generate-id($referrer)">1</xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$referent-is-below = ''">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'above'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'below'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Attempt to use %d in gentext with no referrer!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = '%' ">
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>%</xsl:text><xsl:value-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- recurse with the rest of the template string -->
+ <xsl:variable name="rest"
+ select="substring($template,
+ string-length(substring-before($template, '%'))+3)"/>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$rest"/>
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="subtitle" select="$subtitle"/>
+ <xsl:with-param name="label" select="$label"/>
+ <xsl:with-param name="pagenumber" select="$label"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$template"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/glossary.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/glossary.xsl
new file mode 100644
index 0000000..8a116d6
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/glossary.xsl
@@ -0,0 +1,423 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<dtm:doc dtm:idref="glossary"/>
+<xsl:template match="glossary" dtm:id="glossary">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|glossaryinfo"/>
+ <xsl:variable name="content"
+ select="not-a-node"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="glossary.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-glossary"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="make-glossary"/>
+<xsl:template name="make-glossary" dtm:id="make-glossary">
+ <xsl:param name="divs" select="glossdiv"/>
+ <xsl:param name="entries" select="glossentry"/>
+
+ <xsl:variable name="width">
+ <xsl:value-of select="$glossterm.width"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:value-of select="$glossary.presentation"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates select="$divs" mode="glossary.as.list">
+ <xsl:with-param name="width" select="$width"/>
+ </xsl:apply-templates>
+ <xsl:if test="$entries">
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
+ </fo:list-block>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks'">
+ <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
+ </xsl:when>
+ <xsl:when test="$glossary.as.blocks != 0">
+ <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$divs" mode="glossary.as.list">
+ <xsl:with-param name="width" select="$width"/>
+ </xsl:apply-templates>
+ <xsl:if test="$entries">
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
+ </fo:list-block>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+<!-- <xsl:apply-templates select="*[not(local-name()='glossdiv')]"/> -->
+</xsl:template>
+
+<dtm:doc dtm:idref="glosslist"/>
+<xsl:template match="glosslist" dtm:id="glosslist">
+
+ <xsl:variable name="width">
+ <xsl:value-of select="$glossterm.width"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:value-of select="$glossary.presentation"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:apply-templates mode="glossary.as.list"/>
+ </fo:list-block>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks'">
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+ </xsl:when>
+ <xsl:when test="$glosslist.as.blocks != 0">
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:apply-templates mode="glossary.as.list"/>
+ </fo:list-block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Format glossary as a list -->
+<dtm:doc dtm:elements="glossdiv" dtm:idref="glossdiv.glossary-as-list glossdiv.glossary-as-blocks"/>
+<xsl:template match="glossdiv" mode="glossary.as.list" dtm:id="glossdiv.glossary-as-list">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|glossaryinfo"/>
+ <xsl:variable name="content"
+ select="not-a-node"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="glossdiv.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+
+ <xsl:variable name="width" select="$glossterm.width"/>
+
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:apply-templates select="glossentry" mode="glossary.as.list"/>
+ </fo:list-block>
+
+ </fo:block>
+</xsl:template>
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+<dtm:doc dtm:elements="glossentry" dtm:idref="glossentry.glossary-as-list glossentry.glossary-as-blocks"/>
+<xsl:template match="glossentry" mode="glossary.as.list" dtm:id="glossentry.glossary-as-list">
+
+ <fo:list-item xsl:use-attribute-sets="normal.para.spacing">
+
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev[not(self::processing-instruction('se:choice'))]" mode="glossary.as.list"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
+
+ <xsl:if test="acronym[not(self::processing-instruction('se:choice'))]|abbrev[not(self::processing-instruction('se:choice'))]">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.list"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="indexterm[not(self::processing-instruction('se:choice'))]"/>
+ </fo:block>
+ </fo:list-item-label>
+
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.list"/>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<dtm:doc dtm:elements="glossentry/glossterm" dtm:idref="glossterm.glossentry.glossary-as-list glossterm.glossentry.glossary-as-blocks"/>
+<xsl:template match="glossentry/glossterm" mode="glossary.as.list" dtm:id="glossterm.glossentry.glossary-as-list">
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:elements="glossentry/acronym" dtm:idref="acronym.glossentry.glossary-as-list acronym.glossentry.glossary-as-blocks"/>
+<xsl:template match="glossentry/acronym" mode="glossary.as.list" dtm:id="acronym.glossentry.glossary-as-list">
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:elements="glossentry/abbrev" dtm:idref="abbrev.glossentry.glossary-as-list abbrev.glossentry.glossary-as-blocks"/>
+<xsl:template match="glossentry/abbrev" mode="glossary.as.list" dtm:id="abbrev.glossentry.glossary-as-list">
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:elements="glossentry/glosssee" dtm:idref="glosssee.glossentry.glossary-as-list glosssee.glossentry.glossary-as-blocks"/>
+<xsl:template match="glossentry/glosssee" mode="glossary.as.list" dtm:id="glosssee.glossentry.glossary-as-list">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <fo:block>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="glossary.as.list"/>
+ <xsl:choose>
+ <xsl:when test="@otherterm">
+ <xsl:value-of select="id(@otherterm)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="glossentry/glossdef" dtm:idref="glossdef.glossentry.glossary-as-list glossdef.glossentry.glossary-as-blocks"/>
+<xsl:template match="glossentry/glossdef" mode="glossary.as.list" dtm:id="glossdef.glossentry.glossary-as-list">
+ <fo:block>
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <fo:block>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="glossseealso" mode="glossary.as.list"/>
+ </fo:block>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]" dtm:idref="para1.glossentry.glossary-as-list para1.glossentry.glossary-as-blocks"/>
+<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
+ mode="glossary.as.list" dtm:id="para1.glossentry.glossary-as-list">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="glossseealso" dtm:idref="glossseealso.glossary-as-list glossseealso.glossary-as-blocks"/>
+<xsl:template match="glossseealso" mode="glossary.as.list" dtm:id="glossseealso.glossary-as-list">
+ <fo:inline>
+ <xsl:apply-templates mode="glossary.as.list"/>
+ <xsl:choose>
+ <xsl:when test="@otherterm">
+ <xsl:value-of select="id(@otherterm)"/>
+ </xsl:when>
+ <xsl:when test="position() = last()">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Format glossary blocks -->
+
+<xsl:template match="glossdiv" mode="glossary.as.blocks" dtm:id="glossdiv.glossary-as-blocks">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|glossaryinfo"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle
+ or self::titleabbrev)]"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="glossdiv.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/>
+
+ </fo:block>
+</xsl:template>
+
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+<xsl:template match="glossentry" mode="glossary.as.blocks" dtm:id="glossentry.glossary-as-blocks">
+ <fo:block xsl:use-attribute-sets="list.block.spacing">
+
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
+
+ <xsl:if test="acronym[not(self::processing-instruction('se:choice'))]|abbrev[not(self::processing-instruction('se:choice'))]">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[not(self::processing-instruction('se:choice'))]" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="indexterm[not(self::processing-instruction('se:choice'))]"/>
+ <fo:block margin-left="0.25in">
+ <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.blocks"/>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="glossentry/glossterm" mode="glossary.as.blocks" dtm:id="glossterm.glossentry.glossary-as-blocks">
+ <fo:inline>
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="glossentry/acronym" mode="glossary.as.blocks" dtm:id="acronym.glossentry.glossary-as-blocks">
+ <fo:inline>
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="glossentry/abbrev" mode="glossary.as.blocks" dtm:id="abbrev.glossentry.glossary-as-blocks">
+ <fo:inline>
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="glossentry/glosssee" mode="glossary.as.blocks" dtm:id="glosssee.glossentry.glossary-as-blocks">
+ <fo:inline>
+ <xsl:variable name="otherterm" select="@otherterm"/>
+
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+ <xsl:text>.</xsl:text>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef" mode="glossary.as.blocks" dtm:id="glossdef.glossentry.glossary-as-blocks">
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <fo:block>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="glossseealso" mode="glossary.as.blocks"/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
+ mode="glossary.as.blocks" dtm:id="para1.glossentry.glossary-as-blocks">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="glossseealso" mode="glossary.as.blocks" dtm:id="glossseealso.glossary-as-blocks">
+ <fo:inline>
+
+ <xsl:variable name="otherterm" select="@otherterm"/>
+
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+
+ <xsl:choose>
+ <xsl:when test="position() = last()">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/graphics.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/graphics.xsl
new file mode 100644
index 0000000..43088f7
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/graphics.xsl
@@ -0,0 +1,269 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<xsl:template name="mediaobject.filename" dtm:id="media.filename">
+ <xsl:param name="object"></xsl:param>
+
+ <xsl:variable name="data" select="$object/videodata
+ |$object/imagedata
+ |$object/audiodata
+ |$object"/>
+
+ <xsl:choose>
+ <xsl:when test="$data[@fileref]">
+ <xsl:value-of select="$data/@fileref"/>
+ </xsl:when>
+ <xsl:when test="$data[@entityref]">
+ <xsl:value-of select="unparsed-entity-uri($data/@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="screenshot"/>
+<xsl:template match="screenshot" dtm:id="screenshot">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="screeninfo"/>
+<xsl:template match="screeninfo" dtm:id="screeninfo">
+ <xsl:if test="$show.preamble.editing">
+ <fo:block xsl:use-attribute-sets="preamble.attributes">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'draftarea'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>" </xsl:text>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Override these templates for FO -->
+<!-- ==================================================================== -->
+
+<xsl:template name="process.image" dtm:id="image.process">
+ <!-- When this template is called, the current node should be -->
+ <!-- a graphic, inlinegraphic, audiodata, imagedata, or videodata. -->
+ <!-- All those elements have the same set of attributes, so we -->
+ <!-- can handle them all in one place. -->
+
+ <xsl:variable name="scalefit">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">0</xsl:when>
+ <xsl:when test="@scale">0</xsl:when>
+ <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when>
+ <xsl:when test="@width or @depth">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scale">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when>
+ <xsl:when test="@scale">
+ <xsl:value-of select="@scale div 100.0"/>
+ </xsl:when>
+ <xsl:otherwise>1.0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'graphic'
+ or local-name(.) = 'inlinegraphic'">
+ <!-- handle legacy graphic and inlinegraphic by new template -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- imagedata, videodata, audiodata -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:inline>
+ <fo:external-graphic>
+ <xsl:attribute name="src">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="@width">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="height">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="@depth">
+ <xsl:value-of select="@depth"/>
+ </xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="content-width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="@contentwidth">
+ <xsl:value-of select="@contentwidth"/>
+ </xsl:when>
+ <xsl:when test="number($scale) != 1.0">
+ <xsl:value-of select="$scale * 100"/>
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+ <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="content-height">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="@contentdepth">
+ <xsl:value-of select="@contentdepth"/>
+ </xsl:when>
+ <xsl:when test="number($scale) != 1.0">
+ <xsl:value-of select="$scale * 100"/>
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@valign">
+ <xsl:attribute name="display-align">
+ <xsl:choose>
+ <xsl:when test="@valign = 'top'">before</xsl:when>
+ <xsl:when test="@valign = 'middle'">center</xsl:when>
+ <xsl:when test="@valign = 'bottom'">after</xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ </fo:external-graphic>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<dtm:doc dtm:elements="graphic" dtm:idref="graphic image.process media.filename"/>
+<xsl:template match="graphic" dtm:id="graphic">
+ <xsl:choose>
+ <xsl:when test="../inlineequation">
+ <xsl:call-template name="process.image"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block>
+ <xsl:if test="@align">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="process.image"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:elements="inlinegraphic" dtm:idref="inlinegraphic image.process media.filename"/>
+<xsl:template match="inlinegraphic" dtm:id="inlinegraphic">
+ <xsl:call-template name="process.image"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<dtm:doc dtm:idref="mediaobjects"/>
+<xsl:template match="mediaobject|mediaobjectco" dtm:id="mediaobjects">
+<fo:block>
+ <xsl:variable name="olist"
+ select="imageobject|imageobjectco|videoobject|audioobject|textobject"/>
+
+ <!-- We are processing all mediaobject in order to allow user edit
+ them. -->
+
+ <xsl:for-each select="$olist">
+ <xsl:variable name="align">
+ <xsl:value-of select="./imagedata[@align][1]/@align"/>
+ </xsl:variable>
+ <fo:block>
+ <xsl:if test="$align != '' ">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </fo:block>
+ </xsl:for-each>
+ <xsl:apply-templates select="caption"/>
+</fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="inlinemediaobject"/>
+<xsl:template match="inlinemediaobject" dtm:id="inlinemediaobject">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="imageobject"/>
+<xsl:template match="imageobject" dtm:id="imageobject">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="data image.process media.filename image.external"/>
+<xsl:template match="videodata|imagedata|audiodata" dtm:id="data">
+ <xsl:call-template name="process.image"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="objects.media"/>
+<xsl:template match="audioobject|videoobject" dtm:id="objects.media">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="object.text"/>
+<xsl:template match="textobject|textdata" dtm:id="object.text">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="caption"/>
+<xsl:template match="caption" dtm:id="caption">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+
+<xsl:template name="fo-external-image" dtm:id="image.external">
+ <xsl:param name="filename"/>
+ <xsl:value-of select="concat('url(', $filename, ')')"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/inlines.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/inlines.xsl
new file mode 100644
index 0000000..7a31774
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/inlines.xsl
@@ -0,0 +1,939 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ xmlns:se="http://syntext.com/XSL/Format-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+ <!-- General templates -->
+<xsl:attribute-set name="inline.monoseq.properties"
+ use-attribute-sets="monospace.properties">
+ <xsl:attribute name="border-left-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-right-width">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="inline.charseq.properties">
+ <xsl:attribute name="border-left-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-right-width">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+ <dtm:doc dtm:idref="inline.italicmonoseq"/>
+ <xsl:template name="inline.italicmonoseq" dtm:id="inline.italicmonoseq">
+ <fo:inline font-style="italic"
+ border-left-width="0pt"
+ border-right-width="0pt"
+ xsl:use-attribute-sets="monospace.properties">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+<dtm:doc dtm:idref="inline.italicseq"/>
+<xsl:template name="inline.italicseq" dtm:id="inline.italicseq">
+ <fo:inline font-style="italic"
+ border-left-width="0pt"
+ border-right-width="0pt">
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+ <dtm:doc dtm:idref="inline.boldseq"/>
+ <xsl:template name="inline.boldseq" dtm:id="inline.boldseq">
+ <fo:inline font-weight="bold"
+ border-left-width="0pt"
+ border-right-width="0pt">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="inline.monoseq"/>
+ <xsl:template name="inline.monoseq" dtm:id="inline.monoseq">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="inline.charseq"/>
+ <xsl:template name="inline.charseq" dtm:id="inline.charseq">
+ <fo:inline xsl:use-attribute-sets="inline.charseq.properties">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="inline.boldmonoseq"/>
+ <xsl:template name="inline.boldmonoseq" dtm:id="inline.boldmonoseq">
+ <fo:inline
+ font-weight="bold"
+ border-left-width="0pt"
+ border-right-width="0pt"
+ xsl:use-attribute-sets="monospace.properties">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <!-- Misc simple templates -->
+
+ <dtm:doc dtm:idref="parameter"/>
+ <xsl:template match="parameter" dtm:id="parameter">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="replaceable"/>
+ <xsl:template match="replaceable" dtm:id="replaceable">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="structfield"/>
+ <xsl:template match="structfield" dtm:id="structfield">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="authorinitials"/>
+ <xsl:template match="authorinitials" dtm:id="authorinitials">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="editor"/>
+ <xsl:template match="editor" dtm:id="editor">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="confs"/>
+ <xsl:template match="confdates|confgroup|confnum|confsponsor|conftitle" dtm:id="confs">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="accel"/>
+ <xsl:template match="accel" dtm:id="accel">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="action"/>
+ <xsl:template match="action" dtm:id="action">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="application"/>
+ <xsl:template match="application" dtm:id="application">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="database"/>
+ <xsl:template match="database" dtm:id="database">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="errorcode"/>
+ <xsl:template match="errorcode" dtm:id="errorcode">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="errorname"/>
+ <xsl:template match="errorname" dtm:id="errorname">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="errortype"/>
+ <xsl:template match="errortype" dtm:id="errortype">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="errortext"/>
+ <xsl:template match="errortext" dtm:id="errortext">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="guibutton"/>
+ <xsl:template match="guibutton" dtm:id="guibutton">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="guiicon"/>
+ <xsl:template match="guiicon" dtm:id="guiicon">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="guilabel"/>
+ <xsl:template match="guilabel" dtm:id="guilabel">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="guimenu"/>
+ <xsl:template match="guimenu" dtm:id="guimenu">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="guimenuitem"/>
+ <xsl:template match="guimenuitem" dtm:id="guimenuitem">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="guisubmenu"/>
+ <xsl:template match="guisubmenu" dtm:id="guisubmenu">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="isbn-issn"/>
+ <xsl:template match="isbn|issn" dtm:id="isbn-issn">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="nums"/>
+ <xsl:template match="shortaffil|artpagenums|contractnum|contractsponsor|contrib|invpartnumber|issuenum|pagenums|volumenum|jobtitle" dtm:id="nums">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="hardware"/>
+ <xsl:template match="hardware" dtm:id="hardware">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="interface"/>
+ <xsl:template match="interface" dtm:id="interface">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="interfacedefinition"/>
+ <xsl:template match="interfacedefinition" dtm:id="interfacedefinition">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="keycode"/>
+ <xsl:template match="keycode" dtm:id="keycode">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="keysym"/>
+ <xsl:template match="keysym" dtm:id="keysym">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="code"/>
+ <xsl:template match="code" dtm:id="code">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="mousebutton"/>
+ <xsl:template match="mousebutton" dtm:id="mousebutton">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="property"/>
+ <xsl:template match="property" dtm:id="property">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="returnvalue"/>
+ <xsl:template match="returnvalue" dtm:id="returnvalue">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="structname"/>
+ <xsl:template match="structname" dtm:id="structname">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="symbol"/>
+ <xsl:template match="symbol" dtm:id="symbol">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="token"/>
+ <xsl:template match="token" dtm:id="token">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="type"/>
+ <xsl:template match="type" dtm:id="type">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="abbrev"/>
+ <xsl:template match="abbrev" dtm:id="abbrev">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="acronym"/>
+ <xsl:template match="acronym" dtm:id="acronym">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="citerefentry"/>
+ <xsl:template match="citerefentry" dtm:id="citerefentry">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="markup"/>
+ <xsl:template match="markup" dtm:id="markup">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="phrase"/>
+ <xsl:template match="phrase" dtm:id="phrase">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+<dtm:doc dtm:idref="productname"/>
+<xsl:template match="productname" dtm:id="productname">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+ <dtm:doc dtm:idref="productnumber"/>
+ <xsl:template match="productnumber" dtm:id="productnumber">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="addressparams"/>
+ <xsl:template match="pob|street|city|state|postcode|country|otheraddr" dtm:id="addressparams">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="phone|fax"/>
+ <xsl:template match="phone|fax" dtm:id="phone|fax">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="publisher"/>
+ <xsl:template match="pubdate|publisher|publishername" dtm:id="publisher">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="year"/>
+ <xsl:template match="year" dtm:id="year">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="author"/>
+ <xsl:template
+ match="honorific|firstname|surname|lineage|othername|author|corpauthor|corpname" dtm:id="author">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="command"/>
+ <xsl:template match="command" dtm:id="command">
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="keycap"/>
+ <xsl:template match="keycap" dtm:id="keycap">
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="shortcut"/>
+ <xsl:template match="shortcut" dtm:id="shortcut">
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="filename"/>
+ <xsl:template match="filename" dtm:id="filename">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="literal"/>
+ <xsl:template match="literal" dtm:id="literal">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="classname"/>
+ <xsl:template match="classname" dtm:id="classname">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="exceptionname"/>
+ <xsl:template match="exceptionname" dtm:id="exceptionname">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="interfacename"/>
+ <xsl:template match="interfacename" dtm:id="interfacename">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="methodname"/>
+ <xsl:template match="methodname" dtm:id="methodname">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="computeroutput"/>
+ <xsl:template match="computeroutput" dtm:id="computeroutput">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="constant"/>
+ <xsl:template match="constant" dtm:id="constant">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="envar"/>
+ <xsl:template match="envar" dtm:id="envar">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="option"/>
+ <xsl:template match="option" dtm:id="option">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="prompt"/>
+ <xsl:template match="prompt" dtm:id="prompt">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="systemitem"/>
+ <xsl:template match="systemitem" dtm:id="systemitem">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="userinput"/>
+ <xsl:template match="userinput" dtm:id="userinput">
+ <xsl:call-template name="inline.boldmonoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="varname"/>
+ <xsl:template match="varname" dtm:id="varname">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="orgname"/>
+ <xsl:template match="orgname" dtm:id="orgname">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <!-- Specific templates -->
+ <dtm:doc dtm:idref="affiliation"/>
+ <xsl:template match="affiliation" dtm:id="affiliation">
+ <fo:inline xsl:use-attribute-sets="monospace.properties">
+ <xsl:call-template name="inline.monoseq"/>
+ </fo:inline>
+ </xsl:template>
+
+<dtm:doc dtm:idref="trademark"/>
+<xsl:template match="trademark" dtm:id="trademark">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="citetitle"/>
+<xsl:template match="citetitle" dtm:id="citetitle">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+ <dtm:doc dtm:idref="email"/>
+ <xsl:template match="email" dtm:id="email">
+ <xsl:choose>
+ <xsl:when test="node()">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline></fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="quote"/>
+ <xsl:template match="quote" dtm:id="quote">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:choose>
+ <xsl:when test="count(ancestor::quote) mod 2 = 0">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nestedstartquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.nestedendquote"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </fo:inline>
+ </xsl:template>
+
+<dtm:doc dtm:idref="sgmltag"/>
+<xsl:template match="sgmltag" dtm:id="sgmltag">
+ <xsl:variable name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>element</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$class='attribute'">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:when>
+ <xsl:when test="$class='attvalue'">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:when>
+ <xsl:when test="$class='element'">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:when>
+ <xsl:when test="$class='endtag'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='genentity'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='numcharref'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&amp;#</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='paramentity'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>%</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='pi'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='xmlpi'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>?&gt;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='starttag'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='emptytag'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>/&gt;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$class='sgmlcomment'">
+ <fo:inline xsl:use-attribute-sets="inline.monoseq.properties">
+ <xsl:text>&lt;!--</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>--&gt;</xsl:text>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+ <dtm:doc dtm:idref="citation"/>
+ <xsl:template match="citation" dtm:id="citation">
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="emphasis"/>
+ <xsl:template match="emphasis" dtm:id="emphasis">
+ <xsl:choose>
+ <xsl:when test="@role='bold'">
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:when>
+ <xsl:when test="@role='underline'">
+ <fo:inline
+ border-left-width="0pt"
+ border-right-width="0pt"
+ text-decoration="underline">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="@role='strikethrough'">
+ <fo:inline
+ border-left-width="0pt"
+ border-right-width="0pt"
+ text-decoration="line-through">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="count(ancestor::emphasis) mod 2">
+ <fo:inline
+ border-left-width="0pt"
+ border-right-width="0pt"
+ font-style="normal">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!-- xsl:template match="emphasis">
+ <fo:inline font-style="italic"
+ border-left-width="0pt"
+ border-right-width="0pt">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template -->
+
+ <dtm:doc dtm:idref="firstterm"/>
+ <xsl:template match="firstterm" dtm:id="firstterm">
+ <fo:inline font-weight="bold"
+ border-left-width="0pt"
+ border-right-width="0pt">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="glossterm"/>
+ <xsl:template match="glossterm" dtm:id="glossterm">
+ <fo:inline font-style="italic"
+ font-weight="bold"
+ border-left-width="0pt"
+ border-right-width="0pt">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="ulink"/>
+ <xsl:template match="ulink" dtm:id="ulink">
+ <!-- Keep all the content within one area -->
+ <fo:inline text-decoration="underline">
+
+ <!-- Separate inline area will draw empty tag if content is empty -->
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+
+ <!-- Use the extensions if processed in Serna -->
+ <xsl:choose>
+ <xsl:when test="$use-serna-extensions">
+ <xsl:apply-templates select="@url" mode="ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> [</xsl:text>
+ <xsl:value-of select="@url"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+ </xsl:template>
+
+ <!-- Call separate template for @url to make @url the context node -->
+ <dtm:doc dtm:idref="url.ulink"/>
+ <xsl:template match="@url" mode="ulink" dtm:id="url.ulink">
+ <fo:inline>
+ <xsl:text> [</xsl:text>
+ <se:line-edit width="4cm" value="{string(.)}" />
+ <xsl:text>]</xsl:text>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="link"/>
+ <xsl:template match="link" dtm:id="link">
+ <fo:inline>
+ <xsl:if test="@endterm">
+ <xsl:value-of select="id(@endterm)"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:text> [</xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>]</xsl:text>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="olink"/>
+ <xsl:template match="olink" dtm:id="olink">
+ <fo:inline>
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="attribution"/>
+ <xsl:template match="attribution" dtm:id="attribution">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="lineannotation"/>
+ <xsl:template match="lineannotation" dtm:id="lineannotation">
+ <fo:inline font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="remark"/>
+ <xsl:template match="remark" dtm:id="remark">
+ <xsl:if test="$show.remarks != 0">
+ <fo:block font-style="italic">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:if>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="copyright"/>
+ <xsl:template match="copyright" dtm:id="copyright">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'copyright'"/>
+ </xsl:call-template>
+ <xsl:text>&#x00A9; </xsl:text>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates select="holder"/>
+ </xsl:if>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="holder"/>
+ <xsl:template match="holder" dtm:id="holder">
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="anchor"/>
+ <xsl:template match="anchor" dtm:id="anchor">
+ <xsl:if test="$show.preamble.editing">
+ <fo:block xsl:use-attribute-sets="preamble.attributes">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'draftarea'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>" </xsl:text>
+ <fo:inline font-size="0.75em" color="gray"><xsl:text> (anchor: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:value-of select="@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>no ID</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>) </xsl:text>
+ </fo:inline>
+ </fo:block>
+ </xsl:if>
+
+ </xsl:template>
+
+ <dtm:doc dtm:idref="member"/>
+ <xsl:template match="member" dtm:id="member">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="optional"/>
+ <xsl:template match="optional" dtm:id="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="footnoteref"/>
+ <xsl:template match="footnoteref" dtm:id="footnoteref">
+ <fo:inline baseline-shift="super">
+ <xsl:choose>
+ <xsl:when test="@linkend">
+ <xsl:value-of select="id(@linkend)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'footnote'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="title.footnote"/>
+ <xsl:template match="title/footnote" dtm:id="title.footnote">
+ <fo:inline font-size="{$footnote.font.size}" baseline-shift="super">
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:value-of select="id(@linkend)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'empty'"/>
+ <xsl:with-param name="name" select="'footnote'"/>
+ </xsl:call-template>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="function"/>
+ <xsl:template match="function" dtm:id="function">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="superscript"/>
+ <xsl:template match="superscript" dtm:id="superscript">
+ <fo:inline
+ border-left-width="0pt"
+ border-right-width="0pt"
+ baseline-shift="super">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="subscript"/>
+ <xsl:template match="subscript" dtm:id="subscript">
+ <fo:inline
+ border-left-width="0pt"
+ border-right-width="0pt"
+ baseline-shift="sub">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="keycombo"/>
+ <xsl:template match="keycombo" dtm:id="keycombo">
+ <xsl:variable name="action" select="@action"/>
+ <xsl:variable name="joinchar">
+ <xsl:choose>
+ <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when>
+ <xsl:when test="$action='simul'">+</xsl:when>
+ <xsl:when test="$action='press'">-</xsl:when>
+ <xsl:when test="$action='click'">-</xsl:when>
+ <xsl:when test="$action='double-click'">-</xsl:when>
+ <xsl:when test="$action='other'"></xsl:when>
+ <xsl:otherwise>-</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <fo:inline xsl:use-attribute-sets="inline.charseq.properties">
+ <xsl:for-each select="*">
+ <xsl:if test="position() > 1">
+ <xsl:value-of select="$joinchar"/>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="menuchoice"/>
+ <xsl:template match="menuchoice" dtm:id="menuchoice">
+ <fo:inline xsl:use-attribute-sets="inline.charseq.properties">
+ <xsl:call-template name="process.menuchoice"/>
+ <xsl:if test="shortcut[not(self::processing-instruction('se:choice'))]">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="shortcut"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="process.menuchoice"/>
+ <xsl:template name="process.menuchoice" dtm:id="process.menuchoice">
+ <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($nodelist)"></xsl:when>
+ <xsl:when test="$count=1">
+ <xsl:apply-templates select="$nodelist[$count=position()]"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="node" select="$nodelist[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="name($node)='guimenuitem'
+ or name($node)='guisubmenu'">
+ <xsl:value-of select="$menuchoice.menu.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$menuchoice.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$node"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="foreignphrase"/>
+ <xsl:template match="foreignphrase" dtm:id="foreignphrase">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="wordasword"/>
+ <xsl:template match="wordasword" dtm:id="wordasword">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="medialabel"/>
+ <xsl:template match="medialabel" dtm:id="medialabel">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n.xsl
new file mode 100644
index 0000000..befb4d9
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n.xsl
@@ -0,0 +1,438 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ exclude-result-prefixes="l"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<xsl:param name="l10n.xml.en" select="document('l10n/en.xml')/l:l10n"/>
+
+<xsl:param name="supported.languages"
+ select="'af bg ca cs da de el en es et eu fi fr he hu id it ja ko lt
+ nl nn no pl pt ro ru sk sl sr sv th tr ok vi zh'"/>
+<xsl:param name="supported.dlanguages" select="'pt_br zh_cn zh_tw'"/>
+
+<dtm:doc dtm:idref="l10n.language"/>
+<xsl:template name="l10n.language" dtm:id="l10n.language">
+ <xsl:param name="target" select="."/>
+ <xsl:param name="xref-context" select="false()"/>
+
+ <xsl:variable name="mc-language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:when test="$xref-context or $l10n.gentext.use.xref.language != 0">
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="($target/ancestor-or-self::*[@lang]
+ |$target/ancestor-or-self::*[@xml:lang])[last()]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="(ancestor-or-self::*[@lang]
+ |ancestor-or-self::*[@xml:lang])[last()]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="language" select="translate($mc-language,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+
+ <xsl:variable name="adjusted.language">
+ <xsl:choose>
+ <xsl:when test="contains($language,'-')">
+ <xsl:value-of select="substring-before($language,'-')"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="substring-after($language,'-')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="subs.language">
+ <xsl:choose>
+ <xsl:when test="contains($adjusted.language, '_')">
+ <xsl:value-of select="substring-before($adjusted.language, '_')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$adjusted.language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($adjusted.language, '_') and
+ contains($supported.dlanguages, $adjusted.language)">
+ <xsl:value-of select="$adjusted.language"/>
+ </xsl:when>
+ <xsl:when test="contains($supported.languages, $subs.language)">
+ <xsl:value-of select="$subs.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>l10n.language: No localization exists for "</xsl:text>
+ <xsl:value-of select="$adjusted.language"/>
+ <xsl:text>" or "</xsl:text>
+ <xsl:value-of select="substring-before($adjusted.language,'_')"/>
+ <xsl:text>". Using default "</xsl:text>
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ <xsl:text>".</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="language.attribute"/>
+<xsl:template name="language.attribute" dtm:id="language.attribute">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="($node/ancestor-or-self::*[@lang]
+ |$node/ancestor-or-self::*[@xml:lang])[last()]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$language != ''">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="$language"/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext"/>
+<xsl:template name="gentext" dtm:id="gentext">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="l10n.xml"
+ select="document(concat('l10n/', $lang, '.xml'))/l:l10n"/>
+
+ <xsl:variable name="l10n.gentext"
+ select="$l10n.xml/l:gentext[@key=$key]"/>
+
+ <xsl:variable name="l10n.name">
+ <xsl:value-of select="$l10n.gentext/@text"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($l10n.gentext) &gt; 0">
+ <xsl:value-of select="$l10n.gentext/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>gentext: No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of "</xsl:text>
+ <xsl:value-of select="$key"/>
+ <xsl:text>" exists</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>; using "en".</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:message>
+ <xsl:value-of select="($l10n.xml.en/l:gentext[@key=$key])[1]/@text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.element.name"/>
+<xsl:template name="gentext.element.name" dtm:id="gentext.element.name">
+ <xsl:param name="element.name" select="name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$element.name"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.space"/>
+<xsl:template name="gentext.space" dtm:id="gentext.space">
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.edited.by"/>
+<xsl:template name="gentext.edited.by" dtm:id="gentext.edited.by">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Editedby'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.by"/>
+<xsl:template name="gentext.by" dtm:id="gentext.by">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.dingbat"/>
+<xsl:template name="gentext.dingbat" dtm:id="gentext.dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="l10n.xml"
+ select="document(concat('l10n/', $lang, '.xml'))/l:l10n"/>
+
+ <xsl:variable name="l10n.dingbat"
+ select="($l10n.xml/l:dingbat[@key=$dingbat])[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($l10n.dingbat) &gt; 0">
+ <xsl:value-of select="$l10n.dingbat/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>gentext.dingbat: No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of dingbat </xsl:text>
+ <xsl:value-of select="$dingbat"/>
+ <xsl:text> exists; using "en".</xsl:text>
+ </xsl:message>
+
+ <xsl:value-of select="($l10n.xml.en/l:gentext[@key=$dingbat])[1]/@text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.startquote"/>
+<xsl:template name="gentext.startquote" dtm:id="gentext.startquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">startquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.endquote"/>
+<xsl:template name="gentext.endquote" dtm:id="gentext.endquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">endquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.nestedstartquote"/>
+<xsl:template name="gentext.nestedstartquote" dtm:id="gentext.nestedstartquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">nestedstartquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.nestedendquote"/>
+<xsl:template name="gentext.nestedendquote" dtm:id="gentext.nestedendquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">nestedendquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.nav.prev"/>
+<xsl:template name="gentext.nav.prev" dtm:id="gentext.nav.prev">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-prev'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.nav.next"/>
+<xsl:template name="gentext.nav.next" dtm:id="gentext.nav.next">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-next'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.nav.home"/>
+<xsl:template name="gentext.nav.home" dtm:id="gentext.nav.home">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-home'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.nav.up"/>
+<xsl:template name="gentext.nav.up" dtm:id="gentext.nav.up">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-up'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="gentext.template"/>
+<xsl:template name="gentext.template" dtm:id="gentext.template">
+ <xsl:param name="context" select="'default'"/>
+ <xsl:param name="name" select="'default'"/>
+ <xsl:param name="origname" select="$name"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="localization.node"
+ select="document(concat('l10n/', $lang, '.xml'))/l:l10n"/>
+
+ <xsl:if test="count($localization.node) = 0">
+ <xsl:message>
+ <xsl:text>gentext.template: No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization exists.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="context.node"
+ select="$localization.node/l:context[@name=$context]"/>
+
+ <xsl:if test="count($context.node) = 0">
+ <xsl:message>
+ <xsl:text>gentext.template: No context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" exists in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="template.node"
+ select="($context.node/l:template[@name=$name
+ and @style
+ and @style=$xrefstyle]
+ |$context.node/l:template[@name=$name
+ and not(@style)])[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$template.node/@text">
+ <xsl:value-of select="$template.node/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="contains($name, '/')">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="substring-after($name, '/')"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>gentext.template: No template for "</xsl:text>
+ <xsl:value-of select="$origname"/>
+ <xsl:text>" (or any of its leaves) exists
+in the context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="gentext.template.exists"/>
+<xsl:template name="gentext.template.exists" dtm:id="gentext.template.exists">
+ <xsl:param name="context" select="'default'"/>
+ <xsl:param name="name" select="'default'"/>
+ <xsl:param name="origname" select="$name"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="localization.node"
+ select="document(concat('l10n/', $lang, '.xml'))/l:l10n"/>
+
+ <xsl:variable name="context.node"
+ select="$localization.node/l:context[@name=$context]"/>
+
+ <xsl:variable name="template.node"
+ select="($context.node/l:template[@name=$name
+ and @style
+ and @style=$xrefstyle]
+ |$context.node/l:template[@name=$name
+ and not(@style)])[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$template.node/@text">1</xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="contains($name, '/')">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="substring-after($name, '/')"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/af.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/af.xml
new file mode 100644
index 0000000..028c812
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/af.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="af" english-language-name="Afrikaans">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Samevatting"/>
+ <l:gentext key="abstract" text="samevatting"/>
+ <l:gentext key="Answer" text="Antwoord:"/>
+ <l:gentext key="answer" text="antwoord:"/>
+ <l:gentext key="Appendix" text="Aanhangsel"/>
+ <l:gentext key="appendix" text="aanhangsel"/>
+ <l:gentext key="Article" text="Artikel"/>
+ <l:gentext key="article" text="artikel"/>
+ <l:gentext key="Bibliography" text="Bibliografie"/>
+ <l:gentext key="bibliography" text="bibliografie"/>
+ <l:gentext key="Book" text="Boek"/>
+ <l:gentext key="book" text="boek"/>
+ <l:gentext key="Caution" text="Pas op"/>
+ <l:gentext key="caution" text="pas op"/>
+ <l:gentext key="CAUTION" text="PAS OP"/>
+ <l:gentext key="Chapter" text="Hoofdstuk"/>
+ <l:gentext key="chapter" text="hoofdstuk"/>
+ <l:gentext key="Colophon" text="Kolifon"/>
+ <l:gentext key="colophon" text="kolifon"/>
+ <l:gentext key="Copyright" text="Kopie reg"/>
+ <l:gentext key="copyright" text="kopie reg"/>
+ <l:gentext key="Dedication" text="Opgedra aan"/>
+ <l:gentext key="dedication" text="opgedra aan"/>
+ <l:gentext key="Edition" text="Uitgawe"/>
+ <l:gentext key="edition" text="uitgawe"/>
+ <l:gentext key="Equation" text="Vergelyking"/>
+ <l:gentext key="equation" text="vergelyking"/>
+ <l:gentext key="Example" text="Voorbeeld"/>
+ <l:gentext key="example" text="voorbeeld"/>
+ <l:gentext key="Figure" text="Figuur"/>
+ <l:gentext key="figure" text="figuur"/>
+ <l:gentext key="Glossary" text="Woordlys"/>
+ <l:gentext key="glossary" text="woordlys"/>
+ <l:gentext key="GlossSee" text="WoordelysSien"/>
+ <l:gentext key="glosssee" text="woordelyssien"/>
+ <l:gentext key="GlossSeeAlso" text="WoordelysSienOok"/>
+ <l:gentext key="glossseealso" text="woordelyssienook"/>
+ <l:gentext key="IMPORTANT" text="BELANGRIK"/>
+ <l:gentext key="Important" text="Belangrik"/>
+ <l:gentext key="important" text="belangrik"/>
+ <l:gentext key="Index" text="Indeks"/>
+ <l:gentext key="index" text="indeks"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="isbn"/>
+ <l:gentext key="LegalNotice" text="RegsKennisgewing"/>
+ <l:gentext key="legalnotice" text="regskennisgewing"/>
+ <l:gentext key="MsgAud" text="Teikengroep"/>
+ <l:gentext key="msgaud" text="teikengroep"/>
+ <l:gentext key="MsgLevel" text="Vlak"/>
+ <l:gentext key="msglevel" text="vlak"/>
+ <l:gentext key="MsgOrig" text="Herkoms"/>
+ <l:gentext key="msgorig" text="herkoms"/>
+ <l:gentext key="note" text="opmerking"/>
+ <l:gentext key="NOTE" text="OPMERKING"/>
+ <l:gentext key="Note" text="Opmerking"/>
+ <l:gentext key="Part" text="Deel"/>
+ <l:gentext key="part" text="deel"/>
+ <l:gentext key="Preface" text="Voorwoord"/>
+ <l:gentext key="preface" text="voorwoord"/>
+ <l:gentext key="Procedure" text="Prosedure"/>
+ <l:gentext key="procedure" text="prosedure"/>
+ <l:gentext key="ProductionSet" text="ProduksieStel"/>
+ <l:gentext key="Published" text="Uitgegee"/>
+ <l:gentext key="published" text="uitgegee"/>
+ <l:gentext key="Question" text="Vraag:"/>
+ <l:gentext key="question" text="vraag:"/>
+ <l:gentext key="RefEntry" text="Verwysingslemma"/>
+ <l:gentext key="refentry" text="verwysingslemma"/>
+ <l:gentext key="Reference" text="Verwysing"/>
+ <l:gentext key="reference" text="verwysing"/>
+ <l:gentext key="RefName" text="Verwysingsnaam"/>
+ <l:gentext key="refname" text="verwysingsnaam"/>
+ <l:gentext key="RefSection" text="Verwysingsparagraaf"/>
+ <l:gentext key="refsection" text="verwysingsparagraaf"/>
+ <l:gentext key="RefSynopsisDiv" text="Verwysingsamevatting"/>
+ <l:gentext key="refsynopsisdiv" text="verwysingsamevatting"/>
+ <l:gentext key="RevHistory" text="Hersiening geskiedenis"/>
+ <l:gentext key="revhistory" text="hersiening geskiedenis"/>
+ <l:gentext key="Revision" text="Hersiening"/>
+ <l:gentext key="revision" text="hersiening"/>
+ <l:gentext key="sect1" text="Paragraaf"/>
+ <l:gentext key="sect2" text="Paragraaf"/>
+ <l:gentext key="sect3" text="Paragraaf"/>
+ <l:gentext key="sect4" text="Paragraaf"/>
+ <l:gentext key="sect5" text="Paragraaf"/>
+ <l:gentext key="Section" text="Paragraaf"/>
+ <l:gentext key="section" text="paragraaf"/>
+ <l:gentext key="see" text="sien"/>
+ <l:gentext key="See" text="Sien"/>
+ <l:gentext key="Seealso" text="Sien ook"/>
+ <l:gentext key="seealso" text="sien ook"/>
+ <l:gentext key="SeeAlso" text="Sien Ook"/>
+ <l:gentext key="set" text="versameling"/>
+ <l:gentext key="Set" text="Versameling"/>
+ <l:gentext key="SetIndex" text="VersamelingIndeks"/>
+ <l:gentext key="setindex" text="versamelingindeks"/>
+ <l:gentext key="Sidebar" text="Kantbalk"/>
+ <l:gentext key="sidebar" text="kantbalk"/>
+ <l:gentext key="step" text="stap"/>
+ <l:gentext key="Step" text="Stap"/>
+ <l:gentext key="table" text="tabel"/>
+ <l:gentext key="Table" text="Tabel"/>
+ <l:gentext key="TIP" text="LEIDRAAD"/>
+ <l:gentext key="Tip" text="Leidraad"/>
+ <l:gentext key="tip" text="leidraad"/>
+ <l:gentext key="WARNING" text="WAARSKUWING"/>
+ <l:gentext key="Warning" text="Waarskuwing"/>
+ <l:gentext key="warning" text="waarskuwing"/>
+ <l:gentext key="and" text="en"/>
+ <l:gentext key="by" text="deur"/>
+ <l:gentext key="Edited" text="Geredigeer"/>
+ <l:gentext key="edited" text="geredigeer"/>
+ <l:gentext key="Editedby" text="Geredigeer deur"/>
+ <l:gentext key="editedby" text="geredigeer deur"/>
+ <l:gentext key="in" text="in"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="element bestaan nie"/>
+ <l:gentext key="notes" text="Notas"/>
+ <l:gentext key="Notes" text="notas"/>
+ <l:gentext key="Pgs" text="bl."/>
+ <l:gentext key="pgs" text="bl."/>
+ <l:gentext key="Revisedby" text="Hersien deur"/>
+ <l:gentext key="revisedby" text="hersien deur"/>
+ <l:gentext key="TableNotes" text="TabelOpmerking"/>
+ <l:gentext key="tablenotes" text="tabelopmerking"/>
+ <l:gentext key="TableofContents" text="Inhoudsopgawe"/>
+ <l:gentext key="tableofcontents" text="inhoudsopgawe"/>
+ <l:gentext key="unexpectedelementname" text="onverwagte element naam"/>
+ <l:gentext key="unsupported" text="nie geondersteun"/>
+ <l:gentext key="xrefto" text="verwysing na"/>
+ <l:gentext key="listofequations" text="lys van vergelykings"/>
+ <l:gentext key="ListofEquations" text="Lys van vergelykings"/>
+ <l:gentext key="ListofExamples" text="Lys van voorbeelde"/>
+ <l:gentext key="listofexamples" text="lys van voorbeelde"/>
+ <l:gentext key="ListofFigures" text="Lys van figure"/>
+ <l:gentext key="listoffigures" text="lys van figure"/>
+ <l:gentext key="listoftables" text="lys van tabelle"/>
+ <l:gentext key="ListofTables" text="Lys van tabelle"/>
+ <l:gentext key="ListofUnknown" text="Lys van onbekende tipes"/>
+ <l:gentext key="listofunknown" text="lys van onbekende tipes"/>
+ <l:gentext key="nav-home" text="Begin"/>
+ <l:gentext key="nav-next" text="Volgende"/>
+ <l:gentext key="nav-next-sibling" text="Verder vooruit"/>
+ <l:gentext key="nav-prev" text="Terug"/>
+ <l:gentext key="nav-prev-sibling" text="Verder terug"/>
+ <l:gentext key="nav-up" text="Boontoe"/>
+ <l:gentext key="Draft" text="Proef"/>
+ <l:gentext key="above" text="bo"/>
+ <l:gentext key="below" text="onder"/>
+ <l:gentext key="sectioncalled" text="die seksie genaamd"/>
+ <l:gentext key="index symbols" text="indeks simbole"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Aanhangsel %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Hoofdstuk %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Vergelyking %n. %t"/>
+ <l:template name="example" text="Voorbeeld %n. %t"/>
+ <l:template name="figure" text="Figuur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Deel %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Prosedure&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="ProduksieStel&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Aanhangsel %n. %t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="Hoofdstuk %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Antwoord:&#160;%n"/>
+ <l:template name="appendix" text="Aanhangsel %n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Hoofdstuk %n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Vergelyking&#160;%n"/>
+ <l:template name="example" text="Voorbeeld %n"/>
+ <l:template name="figure" text="Figuur %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Deel %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Prosedure&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Vraag:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Vraag:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabel %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="section" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="die seksie genaamd &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="die seksie genaamd &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Paragraaf %n"/>
+ <l:template name="sect2" text="Paragraaf %n"/>
+ <l:template name="sect3" text="Paragraaf %n"/>
+ <l:template name="sect4" text="Paragraaf %n"/>
+ <l:template name="sect5" text="Paragraaf %n"/>
+ <l:template name="section" text="Paragraaf %n"/>
+ <l:template name="simplesect" text="die seksie genaamd &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" en "/>
+ <l:template name="seplast" text=", en "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="WoordelysSien "/>
+ <l:template name="seealso" text="WoordelysSienOok "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Teikengroep: "/>
+ <l:template name="MsgLevel" text="Vlak: "/>
+ <l:template name="MsgOrig" text="Herkoms: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/bg.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/bg.xml
new file mode 100644
index 0000000..68e69c5
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/bg.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="bg" english-language-name="Bulgarian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#1040;&#1085;&#1086;&#1090;&#1072;&#1094;&#1080;&#1103;"/>
+ <l:gentext key="abstract" text="&#1040;&#1085;&#1086;&#1090;&#1072;&#1094;&#1080;&#1103;"/>
+ <l:gentext key="Answer" text="&#1054;:"/>
+ <l:gentext key="answer" text="&#1054;:"/>
+ <l:gentext key="Appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="appendix" text="&#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Article" text="&#1057;&#1090;&#1072;&#1090;&#1080;&#1103;"/>
+ <l:gentext key="article" text="&#1057;&#1090;&#1072;&#1090;&#1080;&#1103;"/>
+ <l:gentext key="Bibliography" text="&#1051;&#1080;&#1090;&#1077;&#1088;&#1072;&#1090;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="bibliography" text="&#1051;&#1080;&#1090;&#1077;&#1088;&#1072;&#1090;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="Book" text="&#1050;&#1085;&#1080;&#1075;&#1072;"/>
+ <l:gentext key="book" text="&#1050;&#1085;&#1080;&#1075;&#1072;"/>
+ <l:gentext key="CAUTION" text="&#1042;&#1053;&#1048;&#1052;&#1040;&#1053;&#1048;&#1045;"/>
+ <l:gentext key="Caution" text="&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="caution" text="&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="chapter" text="&#1075;&#1083;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="&#1055;&#1086;&#1089;&#1074;&#1077;&#1097;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="dedication" text="&#1055;&#1086;&#1089;&#1074;&#1077;&#1097;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Edition" text="&#1048;&#1079;&#1076;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="edition" text="&#1048;&#1079;&#1076;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;"/>
+ <l:gentext key="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;"/>
+ <l:gentext key="Example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088;"/>
+ <l:gentext key="example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088;"/>
+ <l:gentext key="Figure" text="&#1060;&#1080;&#1075;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="figure" text="&#1060;&#1080;&#1075;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="Glossary" text="&#1058;&#1077;&#1088;&#1084;&#1080;&#1085;&#1086;&#1083;&#1086;&#1075;&#1080;&#1095;&#1077;&#1085; &#1088;&#1077;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="glossary" text="&#1058;&#1077;&#1088;&#1084;&#1080;&#1085;&#1086;&#1083;&#1086;&#1075;&#1080;&#1095;&#1077;&#1085; &#1088;&#1077;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="GlossSee" text="&#1074;&#1078;."/>
+ <l:gentext key="glosssee" text="&#1074;&#1078;."/>
+ <l:gentext key="GlossSeeAlso" text="&#1074;&#1078;. &#1089;&#1098;&#1097;&#1086;"/>
+ <l:gentext key="glossseealso" text="&#1074;&#1078;. &#1089;&#1098;&#1097;&#1086;"/>
+ <l:gentext key="IMPORTANT" text="&#1042;&#1040;&#1046;&#1053;&#1054;"/>
+ <l:gentext key="important" text="&#1042;&#1072;&#1078;&#1085;&#1086;"/>
+ <l:gentext key="Important" text="&#1042;&#1072;&#1078;&#1085;&#1086;"/>
+ <l:gentext key="Index" text="&#1048;&#1085;&#1076;&#1077;&#1082;&#1089;"/>
+ <l:gentext key="index" text="&#1048;&#1085;&#1076;&#1077;&#1082;&#1089;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="&#1040;&#1074;&#1090;&#1086;&#1088;&#1089;&#1082;&#1080; &#1087;&#1088;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="legalnotice" text="&#1040;&#1074;&#1090;&#1086;&#1088;&#1089;&#1082;&#1080; &#1087;&#1088;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="MsgAud" text="Audience"/>
+ <l:gentext key="msgaud" text="Audience"/>
+ <l:gentext key="MsgLevel" text="&#1053;&#1080;&#1074;&#1086;"/>
+ <l:gentext key="msglevel" text="&#1053;&#1080;&#1074;&#1086;"/>
+ <l:gentext key="MsgOrig" text="&#1048;&#1079;&#1090;&#1086;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="msgorig" text="&#1048;&#1079;&#1090;&#1086;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="NOTE" text="&#1047;&#1040;&#1041;&#1045;&#1051;&#1045;&#1046;&#1050;&#1040;"/>
+ <l:gentext key="Note" text="&#1047;&#1072;&#1073;&#1077;&#1083;&#1077;&#1078;&#1082;&#1072;"/>
+ <l:gentext key="note" text="&#1047;&#1072;&#1073;&#1077;&#1083;&#1077;&#1078;&#1082;&#1072;"/>
+ <l:gentext key="Part" text="&#1063;&#1072;&#1089;&#1090;"/>
+ <l:gentext key="part" text="&#1063;&#1072;&#1089;&#1090;"/>
+ <l:gentext key="Preface" text="&#1055;&#1088;&#1077;&#1076;&#1075;&#1086;&#1074;&#1086;&#1088;"/>
+ <l:gentext key="preface" text="&#1055;&#1088;&#1077;&#1076;&#1075;&#1086;&#1074;&#1086;&#1088;"/>
+ <l:gentext key="Procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="&#1048;&#1079;&#1076;&#1072;&#1076;&#1077;&#1085;"/>
+ <l:gentext key="published" text="&#1048;&#1079;&#1076;&#1072;&#1076;&#1077;&#1085;"/>
+ <l:gentext key="Question" text="&#1042;:"/>
+ <l:gentext key="question" text="&#1042;:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#1057;&#1087;&#1088;&#1072;&#1074;&#1086;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="reference" text="&#1057;&#1087;&#1088;&#1072;&#1074;&#1086;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="RefName" text="&#1053;&#1072;&#1079;&#1074;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="refname" text="&#1053;&#1072;&#1079;&#1074;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#1057;&#1080;&#1085;&#1090;&#1072;&#1082;&#1089;&#1080;&#1089;"/>
+ <l:gentext key="refsynopsisdiv" text="&#1057;&#1080;&#1085;&#1090;&#1072;&#1082;&#1089;&#1080;&#1089;"/>
+ <l:gentext key="RevHistory" text="&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;"/>
+ <l:gentext key="revhistory" text="&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;"/>
+ <l:gentext key="revision" text="&#1048;&#1079;&#1076;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Revision" text="&#1048;&#1079;&#1076;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="sect1" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect2" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect3" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect4" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect5" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="section" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="Section" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="see" text="&#1074;&#1078;."/>
+ <l:gentext key="seealso" text="&#1074;&#1078;. &#1089;&#1098;&#1097;&#1086;"/>
+ <l:gentext key="set" text="&#1059;&#1082;&#1072;&#1079;&#1072;&#1090;&#1077;&#1083;"/>
+ <l:gentext key="Set" text="&#1059;&#1082;&#1072;&#1079;&#1072;&#1090;&#1077;&#1083;"/>
+ <l:gentext key="setindex" text="&#1059;&#1082;&#1072;&#1079;&#1072;&#1090;&#1077;&#1083;"/>
+ <l:gentext key="SetIndex" text="&#1059;&#1082;&#1072;&#1079;&#1072;&#1090;&#1077;&#1083;"/>
+ <l:gentext key="Sidebar" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#1080;&#1090;&#1077;&#1083;"/>
+ <l:gentext key="sidebar" text="&#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1080;&#1090;&#1077;&#1083;"/>
+ <l:gentext key="step" text="&#1057;&#1090;&#1098;&#1087;&#1082;&#1072;"/>
+ <l:gentext key="Step" text="&#1057;&#1090;&#1098;&#1087;&#1082;&#1072;"/>
+ <l:gentext key="Table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;"/>
+ <l:gentext key="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;"/>
+ <l:gentext key="tip" text="&#1055;&#1086;&#1079;&#1076;&#1089;&#1082;&#1072;&#1079;&#1082;&#1072;"/>
+ <l:gentext key="TIP" text="&#1055;&#1054;&#1044;&#1057;&#1050;&#1040;&#1047;&#1050;&#1040;"/>
+ <l:gentext key="Tip" text="&#1055;&#1086;&#1079;&#1076;&#1089;&#1082;&#1072;&#1079;&#1082;&#1072;"/>
+ <l:gentext key="Warning" text="&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="warning" text="&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="WARNING" text="&#1042;&#1053;&#1048;&#1052;&#1040;&#1053;&#1048;&#1045;"/>
+ <l:gentext key="and" text=""/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="&#1056;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1072;&#1085;&#1086; &#1086;&#1090;"/>
+ <l:gentext key="edited" text="&#1056;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1072;&#1085;&#1086; &#1086;&#1090;"/>
+ <l:gentext key="Editedby" text="&#1056;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1072;&#1085;&#1086; &#1086;&#1090;"/>
+ <l:gentext key="editedby" text="&#1056;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1072;&#1085;&#1086; &#1086;&#1090;"/>
+ <l:gentext key="in" text="&#1074;"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="non-existant element"/>
+ <l:gentext key="notes" text="&#1047;&#1072;&#1073;&#1077;&#1083;&#1077;&#1078;&#1082;&#1080;"/>
+ <l:gentext key="Notes" text="&#1047;&#1072;&#1073;&#1077;&#1083;&#1077;&#1078;&#1082;&#1080;"/>
+ <l:gentext key="Pgs" text="&#1089;&#1090;&#1088;."/>
+ <l:gentext key="pgs" text="&#1089;&#1090;&#1088;."/>
+ <l:gentext key="Revisedby" text="&#1054;&#1076;&#1086;&#1073;&#1088;&#1077;&#1085;&#1086; &#1086;&#1090;: "/>
+ <l:gentext key="revisedby" text="&#1054;&#1076;&#1086;&#1073;&#1088;&#1077;&#1085;&#1086; &#1086;&#1090;: "/>
+ <l:gentext key="TableNotes" text="&#1047;&#1072;&#1073;&#1077;&#1083;&#1077;&#1078;&#1082;&#1080;"/>
+ <l:gentext key="tablenotes" text="&#1047;&#1072;&#1073;&#1077;&#1083;&#1077;&#1078;&#1082;&#1080;"/>
+ <l:gentext key="TableofContents" text="&#1057;&#1098;&#1076;&#1098;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="tableofcontents" text="&#1057;&#1098;&#1076;&#1098;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="unexpectedelementname" text="unexpected element name"/>
+ <l:gentext key="unsupported" text="unsupported"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1092;&#1086;&#1088;&#1084;&#1091;&#1083;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="ListofEquations" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1092;&#1086;&#1088;&#1084;&#1091;&#1083;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="ListofExamples" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="listofexamples" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="ListofFigures" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1092;&#1080;&#1075;&#1091;&#1088;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="listoffigures" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1092;&#1080;&#1075;&#1091;&#1088;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="listoftables" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="ListofTables" text="&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; &#1085;&#1072; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1080;&#1090;&#1077;"/>
+ <l:gentext key="ListofUnknown" text="&#1053;&#1077;&#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085; &#1089;&#1087;&#1080;&#1089;&#1098;&#1082;"/>
+ <l:gentext key="listofunknown" text="&#1053;&#1077;&#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085; &#1089;&#1087;&#1080;&#1089;&#1098;&#1082;"/>
+ <l:gentext key="nav-home" text="&#1053;&#1072;&#1095;&#1072;&#1083;&#1086;"/>
+ <l:gentext key="nav-next" text="&#1057;&#1083;&#1077;&#1076;&#1074;&#1072;&#1097;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;"/>
+ <l:gentext key="nav-next-sibling" text="&#1057;&#1083;&#1077;&#1076;&#1074;&#1072;&#1097; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="nav-prev" text="&#1055;&#1088;&#1077;&#1076;&#1080;&#1096;&#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;"/>
+ <l:gentext key="nav-prev-sibling" text="&#1055;&#1088;&#1077;&#1076;&#1080;&#1096;&#1077;&#1085; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="nav-up" text="&#1053;&#1072;&#1095;&#1072;&#1083;&#1086; &#1085;&#1072; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1072;"/>
+ <l:gentext key="nav-toc" text="&#1057;&#1098;&#1076;&#1098;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Draft" text="&#1063;&#1077;&#1088;&#1085;&#1086;&#1074;&#1072;"/>
+ <l:gentext key="above" text="&#1087;&#1086;-&#1075;&#1086;&#1088;&#1077;"/>
+ <l:gentext key="below" text="&#1087;&#1086;-&#1076;&#1086;&#1083;&#1091;"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="index symbols" text="&#1057;&#1080;&#1084;&#1074;&#1086;&#1083;&#1080;"/>
+ <l:gentext key="lowercase.alpha" text="&#1072;&#1073;&#1074;&#1075;&#1076;&#1077;&#1078;&#1079;&#1080;&#1081;&#1082;&#1083;&#1084;&#1085;&#1086;&#1087;&#1088;&#1089;&#1090;&#1091;&#1092;&#1093;&#1094;&#1095;&#1096;&#1097;&#1098;&#1099;&#1100;&#1101;&#1102;&#1103;"/>
+ <l:gentext key="uppercase.alpha" text="&#1040;&#1041;&#1042;&#1043;&#1044;&#1045;&#1046;&#1047;&#1048;&#1049;&#1050;&#1051;&#1052;&#1053;&#1054;&#1055;&#1056;&#1057;&#1058;&#1059;&#1060;&#1061;&#1062;&#1063;&#1064;&#1065;&#1066;&#1067;&#1068;&#1069;&#1070;&#1071;"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;&#160;%n.&#160;%t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088;&#160;%n.&#160;%t"/>
+ <l:template name="figure" text="&#1060;&#1080;&#1075;&#1091;&#1088;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="glossentry" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1063;&#1072;&#1089;&#1090;&#160;%n.&#160;%t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="article/appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;&#160;%n.&#160;%t"/>
+ <l:template name="article/appendix" text="%n.&#160;%t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="sect1" text="%n.&#160;%t"/>
+ <l:template name="sect2" text="%n.&#160;%t"/>
+ <l:template name="sect3" text="%n.&#160;%t"/>
+ <l:template name="sect4" text="%n.&#160;%t"/>
+ <l:template name="sect5" text="%n.&#160;%t"/>
+ <l:template name="section" text="%n.&#160;%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#1054;:&#160;%n"/>
+ <l:template name="appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;&#160;%n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072;&#160;%n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;&#160;%n"/>
+ <l:template name="example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088;&#160;%n"/>
+ <l:template name="figure" text="&#1060;&#1080;&#1075;&#1091;&#1088;&#1072;&#160;%n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1063;&#1072;&#1089;&#1090;&#160;%n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#1042;:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#1042;:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;&#160;%n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="section" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="the section called &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#160;%n"/>
+ <l:template name="refsection" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#160;%n"/>
+ <l:template name="sect2" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#160;%n"/>
+ <l:template name="sect3" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#160;%n"/>
+ <l:template name="sect4" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#160;%n"/>
+ <l:template name="sect5" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#160;%n"/>
+ <l:template name="section" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#160;%n"/>
+ <l:template name="simplesect" text="the section called &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" "/>
+ <l:template name="seplast" text=", "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#1074;&#1078;. "/>
+ <l:template name="seealso" text="&#1074;&#1078;. &#1089;&#1098;&#1097;&#1086; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audience: "/>
+ <l:template name="MsgLevel" text="&#1053;&#1080;&#1074;&#1086;: "/>
+ <l:template name="MsgOrig" text="&#1048;&#1079;&#1090;&#1086;&#1095;&#1085;&#1080;&#1082;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ca.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ca.xml
new file mode 100644
index 0000000..54779cb
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ca.xml
@@ -0,0 +1,457 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ca" english-language-name="Catalan">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Resum"/>
+ <l:gentext key="abstract" text="Resum"/>
+ <l:gentext key="Answer" text="Answer"/>
+ <l:gentext key="answer" text="Answer"/>
+ <l:gentext key="appendix" text="ap&#232;ndex"/>
+ <l:gentext key="Appendix" text="Ap&#232;ndix"/>
+ <l:gentext key="Article" text="Article"/>
+ <l:gentext key="article" text="Article"/>
+ <l:gentext key="Bibliography" text="Bibliografia"/>
+ <l:gentext key="bibliography" text="Bibliografia"/>
+ <l:gentext key="Book" text="Llibre"/>
+ <l:gentext key="book" text="Llibre"/>
+ <l:gentext key="Caution" text="Atenci&#243;"/>
+ <l:gentext key="caution" text="Atenci&#243;"/>
+ <l:gentext key="CAUTION" text="ATENCI&#211;"/>
+ <l:gentext key="Chapter" text="Cap&#237;tol"/>
+ <l:gentext key="chapter" text="cap&#237;tol"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Dret de reproducci&#243;"/>
+ <l:gentext key="copyright" text="Dret de reproducci&#243;"/>
+ <l:gentext key="Dedication" text="Dedicat&#242;ria"/>
+ <l:gentext key="dedication" text="Dedicat&#242;ria"/>
+ <l:gentext key="Edition" text="Edici&#243;"/>
+ <l:gentext key="edition" text="Edici&#243;"/>
+ <l:gentext key="Equation" text="Equaci&#243;"/>
+ <l:gentext key="equation" text="Equaci&#243;"/>
+ <l:gentext key="Example" text="Exemple"/>
+ <l:gentext key="example" text="Exemple"/>
+ <l:gentext key="Figure" text="Figura"/>
+ <l:gentext key="figure" text="Figura"/>
+ <l:gentext key="Glossary" text="Glossari"/>
+ <l:gentext key="glossary" text="Glossari"/>
+ <l:gentext key="GlossSee" text="Veure"/>
+ <l:gentext key="glosssee" text="Veure"/>
+ <l:gentext key="GlossSeeAlso" text="Veure tamb&#233;"/>
+ <l:gentext key="glossseealso" text="Veure tamb&#233;"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANT"/>
+ <l:gentext key="Important" text="Important"/>
+ <l:gentext key="important" text="Important"/>
+ <l:gentext key="Index" text="&#205;ndex alfab&#232;tic"/>
+ <l:gentext key="index" text="&#205;ndex alfab&#232;tic"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text="Audi&#232;ncia"/>
+ <l:gentext key="msgaud" text="Audi&#232;ncia"/>
+ <l:gentext key="MsgLevel" text="Nivell"/>
+ <l:gentext key="msglevel" text="Nivell"/>
+ <l:gentext key="MsgOrig" text="Origen"/>
+ <l:gentext key="msgorig" text="Origen"/>
+ <l:gentext key="note" text="Nota"/>
+ <l:gentext key="NOTE" text="NOTA"/>
+ <l:gentext key="Note" text="Nota"/>
+ <l:gentext key="Part" text="Part"/>
+ <l:gentext key="part" text="Part"/>
+ <l:gentext key="Preface" text="Prefaci"/>
+ <l:gentext key="preface" text="Prefaci"/>
+ <l:gentext key="Procedure" text="Procediment"/>
+ <l:gentext key="procedure" text="Procediment"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="PubDate" text="Data de publicaci&#243;"/>
+ <l:gentext key="pubdate" text="Data de publicaci&#243;"/>
+ <l:gentext key="Published" text="Data de publicaci&#243;"/>
+ <l:gentext key="published" text="Data de publicaci&#243;"/>
+ <l:gentext key="Question" text="Question"/>
+ <l:gentext key="question" text="Question"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Refer&#232;ncia"/>
+ <l:gentext key="reference" text="Refer&#232;ncia"/>
+ <l:gentext key="RefName" text="Nom"/>
+ <l:gentext key="refname" text="Nom"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Historial de revisions"/>
+ <l:gentext key="revhistory" text="Historial de revisions"/>
+ <l:gentext key="Revision" text="Revisi&#243;"/>
+ <l:gentext key="revision" text="Revisi&#243;"/>
+ <l:gentext key="sect1" text="Secci&#243;"/>
+ <l:gentext key="sect2" text="Secci&#243;"/>
+ <l:gentext key="sect3" text="Secci&#243;"/>
+ <l:gentext key="sect4" text="Secci&#243;"/>
+ <l:gentext key="sect5" text="Secci&#243;"/>
+ <l:gentext key="Section" text="Secci&#243;"/>
+ <l:gentext key="section" text="secci&#243;"/>
+ <l:gentext key="see" text="Veure"/>
+ <l:gentext key="See" text="Veure"/>
+ <l:gentext key="Seealso" text="Veure tamb&#233;"/>
+ <l:gentext key="seealso" text="Veure tambi&#233;"/>
+ <l:gentext key="SeeAlso" text="Veure tambi&#233;"/>
+ <l:gentext key="Set" text="Conjunt"/>
+ <l:gentext key="set" text="Conjunt"/>
+ <l:gentext key="SetIndex" text="&#205;ndex del conjunt"/>
+ <l:gentext key="setindex" text="&#205;ndex del conjunt"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="glossa"/>
+ <l:gentext key="step" text="pas"/>
+ <l:gentext key="Step" text="Pas"/>
+ <l:gentext key="table" text="Taula"/>
+ <l:gentext key="Table" text="Taula"/>
+ <l:gentext key="TIP" text="SUGGERIMENT"/>
+ <l:gentext key="Tip" text="Suggeriment"/>
+ <l:gentext key="tip" text="Suggeriment"/>
+ <l:gentext key="WARNING" text="AV&#205;S"/>
+ <l:gentext key="Warning" text="Av&#237;s"/>
+ <l:gentext key="warning" text="Av&#237;s"/>
+ <l:gentext key="and" text="i"/>
+ <l:gentext key="by" text="per"/>
+ <l:gentext key="Edited" text="Editat"/>
+ <l:gentext key="edited" text="Editat"/>
+ <l:gentext key="Editedby" text="Editat per"/>
+ <l:gentext key="editedby" text="Editat per"/>
+ <l:gentext key="in" text="a"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="element inexistent"/>
+ <l:gentext key="notes" text="Notes"/>
+ <l:gentext key="Notes" text="Notes"/>
+ <l:gentext key="Pgs" text="P&#224;gs."/>
+ <l:gentext key="pgs" text="P&#224;gs."/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Notes"/>
+ <l:gentext key="tablenotes" text="Notes"/>
+ <l:gentext key="TableofContents" text="Sumari"/>
+ <l:gentext key="tableofcontents" text="Sumari"/>
+ <l:gentext key="unexpectedelementname" text="Nom d'element no esperat"/>
+ <l:gentext key="unsupported" text="no reconeguda"/>
+ <l:gentext key="xrefto" text="xref a"/>
+ <l:gentext key="listofequations" text="&#205;ndex d'equacions"/>
+ <l:gentext key="ListofEquations" text="&#205;ndex d'equacions"/>
+ <l:gentext key="ListofExamples" text="&#205;ndex d'exemples"/>
+ <l:gentext key="listofexamples" text="&#205;ndex d'exemples"/>
+ <l:gentext key="ListofFigures" text="&#205;ndex de figures"/>
+ <l:gentext key="listoffigures" text="&#205;ndex de figures"/>
+ <l:gentext key="listoftables" text="&#205;ndex de taules"/>
+ <l:gentext key="ListofTables" text="&#205;ndex de taules"/>
+ <l:gentext key="ListofUnknown" text="&#205;ndex de desconegut ?"/>
+ <l:gentext key="listofunknown" text="&#205;ndex de desconegut ?"/>
+ <l:gentext key="nav-home" text="Inici"/>
+ <l:gentext key="nav-next" text="Seguent"/>
+ <l:gentext key="nav-next-sibling" text="Avancar"/>
+ <l:gentext key="nav-prev" text="Anterior"/>
+ <l:gentext key="nav-prev-sibling" text="Retrocedir"/>
+ <l:gentext key="nav-up" text="Pujar"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="last-first"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Ap&#232;ndix %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tol %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equaci&#243; %n. %t"/>
+ <l:template name="example" text="Exemple %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Part %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procediment&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Taula %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Ap&#232;ndix %n. %t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="Cap&#237;tol %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Answer&#160;%n"/>
+ <l:template name="appendix" text="Ap&#232;ndix %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tol %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equaci&#243;&#160;%n"/>
+ <l:template name="example" text="Exemple %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ <l:template name="part" text="Part %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procediment&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Question&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Question&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Taula %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Secci&#243; %n"/>
+ <l:template name="sect2" text="Secci&#243; %n"/>
+ <l:template name="sect3" text="Secci&#243; %n"/>
+ <l:template name="sect4" text="Secci&#243; %n"/>
+ <l:template name="sect5" text="Secci&#243; %n"/>
+ <l:template name="section" text="Secci&#243; %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" i "/>
+ <l:template name="seplast" text=", i "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Veure "/>
+ <l:template name="seealso" text="Veure tamb&#233; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audi&#232;ncia: "/>
+ <l:template name="MsgLevel" text="Nivell: "/>
+ <l:template name="MsgOrig" text="Origen: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/cs.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/cs.xml
new file mode 100644
index 0000000..dbff9e4
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/cs.xml
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="cs" english-language-name="Czech">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Abstrakt"/>
+ <l:gentext key="abstract" text="Abstrakt"/>
+ <l:gentext key="Answer" text="Odpov&#283;&#271;:"/>
+ <l:gentext key="answer" text="Odpov&#283;&#271;:"/>
+ <l:gentext key="Appendix" text="P&#345;&#237;loha"/>
+ <l:gentext key="appendix" text="P&#345;&#237;loha"/>
+ <l:gentext key="Article" text="&#268;l&#225;nek"/>
+ <l:gentext key="article" text="&#268;l&#225;nek"/>
+ <l:gentext key="Bibliography" text="Bibliografie"/>
+ <l:gentext key="bibliography" text="Bibliografie"/>
+ <l:gentext key="Book" text="Kniha"/>
+ <l:gentext key="book" text="Kniha"/>
+ <l:gentext key="CAUTION" text="V&#253;straha"/>
+ <l:gentext key="Caution" text="V&#253;straha"/>
+ <l:gentext key="caution" text="V&#253;straha"/>
+ <l:gentext key="Chapter" text="Kapitola"/>
+ <l:gentext key="chapter" text="Kapitola"/>
+ <l:gentext key="Colophon" text="Tir&#225;&#382;"/>
+ <l:gentext key="colophon" text="Tir&#225;&#382;"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="V&#283;nov&#225;n&#237;"/>
+ <l:gentext key="dedication" text="V&#283;nov&#225;n&#237;"/>
+ <l:gentext key="Edition" text="Vyd&#225;n&#237;"/>
+ <l:gentext key="edition" text="Vyd&#225;n&#237;"/>
+ <l:gentext key="Equation" text="Rovnice"/>
+ <l:gentext key="equation" text="Rovnice"/>
+ <l:gentext key="Example" text="P&#345;&#237;klad"/>
+ <l:gentext key="example" text="P&#345;&#237;klad"/>
+ <l:gentext key="Figure" text="Obr&#225;zek"/>
+ <l:gentext key="figure" text="Obr&#225;zek"/>
+ <l:gentext key="Glossary" text="Slovn&#237;k"/>
+ <l:gentext key="glossary" text="Slovn&#237;k"/>
+ <l:gentext key="GlossSee" text="Viz"/>
+ <l:gentext key="glosssee" text="Viz"/>
+ <l:gentext key="GlossSeeAlso" text="Viz t&#233;&#382;"/>
+ <l:gentext key="glossseealso" text="Viz t&#233;&#382;"/>
+ <l:gentext key="IMPORTANT" text="D&#367;le&#382;it&#233;"/>
+ <l:gentext key="Important" text="D&#367;le&#382;it&#233;"/>
+ <l:gentext key="important" text="D&#367;le&#382;it&#233;"/>
+ <l:gentext key="Index" text="Rejst&#345;&#237;k"/>
+ <l:gentext key="index" text="Rejst&#345;&#237;k"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Pr&#225;vn&#237; dolo&#382;ka"/>
+ <l:gentext key="legalnotice" text="Pr&#225;vn&#237; dolo&#382;ka"/>
+ <l:gentext key="MsgAud" text="Publikum"/>
+ <l:gentext key="msgaud" text="Publikum"/>
+ <l:gentext key="MsgLevel" text="&#218;rove&#328;"/>
+ <l:gentext key="msglevel" text="&#218;rove&#328;"/>
+ <l:gentext key="MsgOrig" text="P&#367;vod"/>
+ <l:gentext key="msgorig" text="P&#367;vod"/>
+ <l:gentext key="NOTE" text="Pozn&#225;mka"/>
+ <l:gentext key="Note" text="Pozn&#225;mka"/>
+ <l:gentext key="note" text="Pozn&#225;mka"/>
+ <l:gentext key="Part" text="&#268;&#225;st"/>
+ <l:gentext key="part" text="&#268;&#225;st"/>
+ <l:gentext key="Preface" text="P&#345;edmluva"/>
+ <l:gentext key="preface" text="P&#345;edmluva"/>
+ <l:gentext key="Procedure" text="Postup"/>
+ <l:gentext key="procedure" text="Postup"/>
+ <l:gentext key="ProductionSet" text="Produkce"/>
+ <l:gentext key="Published" text="Vyd&#225;no"/>
+ <l:gentext key="published" text="Vyd&#225;no"/>
+ <l:gentext key="Question" text="Ot&#225;zka:"/>
+ <l:gentext key="question" text="Ot&#225;zka:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Odkaz"/>
+ <l:gentext key="reference" text="Odkaz"/>
+ <l:gentext key="RefName" text="Jm&#233;no"/>
+ <l:gentext key="refname" text="Jm&#233;no"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="P&#345;ehled"/>
+ <l:gentext key="refsynopsisdiv" text="P&#345;ehled"/>
+ <l:gentext key="RevHistory" text="P&#345;ehled reviz&#237;"/>
+ <l:gentext key="revhistory" text="P&#345;ehled reviz&#237;"/>
+ <l:gentext key="Revision" text="Revize"/>
+ <l:gentext key="revision" text="Revize"/>
+ <l:gentext key="sect1" text="Odd&#237;l"/>
+ <l:gentext key="sect2" text="Odd&#237;l"/>
+ <l:gentext key="sect3" text="Odd&#237;l"/>
+ <l:gentext key="sect4" text="Odd&#237;l"/>
+ <l:gentext key="sect5" text="Odd&#237;l"/>
+ <l:gentext key="Section" text="Odd&#237;l"/>
+ <l:gentext key="section" text="Odd&#237;l"/>
+ <l:gentext key="See" text="Viz"/>
+ <l:gentext key="see" text="Viz"/>
+ <l:gentext key="SeeAlso" text="Viz t&#233;&#382;"/>
+ <l:gentext key="Seealso" text="Viz t&#233;&#382;"/>
+ <l:gentext key="seealso" text="Viz t&#233;&#382;"/>
+ <l:gentext key="Set" text="Sada"/>
+ <l:gentext key="set" text="Sada"/>
+ <l:gentext key="SetIndex" text="Rejst&#345;&#237;k sady"/>
+ <l:gentext key="setindex" text="Rejst&#345;&#237;k sady"/>
+ <l:gentext key="Sidebar" text="Margin&#225;lie"/>
+ <l:gentext key="sidebar" text="Margin&#225;lie"/>
+ <l:gentext key="Step" text="Krok"/>
+ <l:gentext key="step" text="krok"/>
+ <l:gentext key="Table" text="Tabulka"/>
+ <l:gentext key="table" text="Tabulka"/>
+ <l:gentext key="TIP" text="Tip"/>
+ <l:gentext key="Tip" text="Tip"/>
+ <l:gentext key="tip" text="Tip"/>
+ <l:gentext key="WARNING" text="Varov&#225;n&#237;"/>
+ <l:gentext key="Warning" text="Varov&#225;n&#237;"/>
+ <l:gentext key="warning" text="Varov&#225;n&#237;"/>
+ <l:gentext key="and" text="a"/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="Vyd&#225;no"/>
+ <l:gentext key="edited" text="Vyd&#225;no"/>
+ <l:gentext key="Editedby" text="Sestavil"/>
+ <l:gentext key="editedby" text="Sestavil"/>
+ <l:gentext key="in" text="v"/>
+ <l:gentext key="lastlistcomma" text=""/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="neexistuj&#237;c&#237; prvek"/>
+ <l:gentext key="notes" text="Pozn&#225;mky"/>
+ <l:gentext key="Notes" text="Pozn&#225;mky"/>
+ <l:gentext key="Pgs" text="Str."/>
+ <l:gentext key="pgs" text="Str."/>
+ <l:gentext key="Revisedby" text="Revidoval: "/>
+ <l:gentext key="revisedby" text="Revidoval: "/>
+ <l:gentext key="TableNotes" text="Pozn&#225;mky"/>
+ <l:gentext key="tablenotes" text="Pozn&#225;mky"/>
+ <l:gentext key="TableofContents" text="Obsah"/>
+ <l:gentext key="tableofcontents" text="Obsah"/>
+ <l:gentext key="unexpectedelementname" text="Neo&#269;ek&#225;van&#233; jm&#233;no prvku"/>
+ <l:gentext key="unsupported" text="nepodporovan&#253;"/>
+ <l:gentext key="xrefto" text="xref k"/>
+ <l:gentext key="listofequations" text="Seznam rovnic"/>
+ <l:gentext key="ListofEquations" text="Seznam rovnic"/>
+ <l:gentext key="ListofExamples" text="Seznam p&#345;&#237;klad&#367;"/>
+ <l:gentext key="listofexamples" text="Seznam p&#345;&#237;klad&#367;"/>
+ <l:gentext key="ListofFigures" text="Seznam obr&#225;zk&#367;"/>
+ <l:gentext key="listoffigures" text="Seznam obr&#225;zk&#367;"/>
+ <l:gentext key="listoftables" text="Seznam tabulek"/>
+ <l:gentext key="ListofTables" text="Seznam tabulek"/>
+ <l:gentext key="ListofUnknown" text="Seznam nezn&#225;m&#233;ho"/>
+ <l:gentext key="listofunknown" text="Seznam nezn&#225;m&#233;ho"/>
+ <l:gentext key="nav-home" text="Dom&#367;"/>
+ <l:gentext key="nav-next" text="Dal&#353;&#237;"/>
+ <l:gentext key="nav-next-sibling" text="Rychle dop&#345;edu"/>
+ <l:gentext key="nav-prev" text="P&#345;edch&#225;zej&#237;c&#237;"/>
+ <l:gentext key="nav-prev-sibling" text="Rychle zp&#283;t"/>
+ <l:gentext key="nav-up" text="Nahoru"/>
+ <l:gentext key="sectioncalled" text="odd&#237;l nazvan&#253;"/>
+ <l:gentext key="Draft" text="N&#225;vrh"/>
+ <l:gentext key="above" text="nad"/>
+ <l:gentext key="below" text="pod"/>
+ <l:gentext key="index symbols" text="Symboly"/>
+ <l:gentext key="lowercase.alpha" text="a&#225;bc&#269;d&#271;e&#233;&#283;fghi&#237;jklmno&#243;pqr&#345;s&#353;t&#357;u&#250;&#367;vwxy&#253;z&#382;"/>
+ <l:gentext key="uppercase.alpha" text="A&#193;BC&#268;D&#270;E&#201;&#282;FGHI&#205;JKLMNO&#211;PQR&#344;S&#352;T&#356;U&#218;&#366;VWXY&#221;Z&#381;"/>
+ <l:dingbat key="startquote" text="&#8222;"/>
+ <l:dingbat key="endquote" text="&#8220;"/>
+ <l:dingbat key="nestedstartquote" text="&#8218;"/>
+ <l:dingbat key="nestedendquote" text="&#8216;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="P&#345;&#237;loha %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitola %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Rovnice %n. %t"/>
+ <l:template name="example" text="P&#345;&#237;klad %n. %t"/>
+ <l:template name="figure" text="Obr&#225;zek %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#268;&#225;st %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Postup %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Produkce %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabulka %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="P&#345;&#237;loha %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="Kapitola %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%n"/>
+ <l:template name="appendix" text="%n &#8211; &#8222;%t&#8220;"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="%n &#8211; &#8222;%t&#8220;"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="%n"/>
+ <l:template name="example" text="%n"/>
+ <l:template name="figure" text="%n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="%n &#8211; &#8222;%t&#8220;"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="%n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8222;%t&#8220;"/>
+ <l:template name="refsection" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect1" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect2" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect3" text="&#8222;%t&#8220;"/>
+ <l:template name="sect1" text="&#8222;%t&#8220;"/>
+ <l:template name="sect2" text="&#8222;%t&#8220;"/>
+ <l:template name="sect3" text="&#8222;%t&#8220;"/>
+ <l:template name="sect4" text="&#8222;%t&#8220;"/>
+ <l:template name="sect5" text="&#8222;%t&#8220;"/>
+ <l:template name="section" text="&#8222;%t&#8220;"/>
+ <l:template name="simplesect" text="&#8222;%t&#8220;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="%n"/>
+ <l:template name="refsection" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect1" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect2" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect3" text="&#8222;%t&#8220;"/>
+ <l:template name="sect1" text="%n"/>
+ <l:template name="sect2" text="%n"/>
+ <l:template name="sect3" text="%n"/>
+ <l:template name="sect4" text="%n"/>
+ <l:template name="sect5" text="%n"/>
+ <l:template name="section" text="%n"/>
+ <l:template name="simplesect" text="&#8222;%t&#8220;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" a "/>
+ <l:template name="seplast" text=" a "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Viz "/>
+ <l:template name="seealso" text="Viz t&#233;&#382; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Publikum: "/>
+ <l:template name="MsgLevel" text="&#218;rove&#328;: "/>
+ <l:template name="MsgOrig" text="P&#367;vod: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/da.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/da.xml
new file mode 100644
index 0000000..072eb09
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/da.xml
@@ -0,0 +1,457 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="da" english-language-name="Danish">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Resum&#233;"/>
+ <l:gentext key="abstract" text="resum&#233;"/>
+ <l:gentext key="Answer" text="Svar"/>
+ <l:gentext key="answer" text="svar"/>
+ <l:gentext key="Appendix" text="Appendiks"/>
+ <l:gentext key="appendix" text="appendiks"/>
+ <l:gentext key="Article" text="Artikel"/>
+ <l:gentext key="article" text="artikel"/>
+ <l:gentext key="Bibliography" text="Litteraturliste"/>
+ <l:gentext key="bibliography" text="litteraturliste"/>
+ <l:gentext key="Book" text="Bog"/>
+ <l:gentext key="book" text="bog"/>
+ <l:gentext key="CAUTION" text="PAS P&#197;"/>
+ <l:gentext key="Caution" text="Pas p&#229;"/>
+ <l:gentext key="caution" text="pas p&#229;"/>
+ <l:gentext key="Chapter" text="Kapitel"/>
+ <l:gentext key="chapter" text="kapitel"/>
+ <l:gentext key="Colophon" text="Kolofon"/>
+ <l:gentext key="colophon" text="kolofon"/>
+ <l:gentext key="Copyright" text="Ophavsret"/>
+ <l:gentext key="copyright" text="ophavsret"/>
+ <l:gentext key="Dedication" text="Tilegnet"/>
+ <l:gentext key="dedication" text="tilegnet"/>
+ <l:gentext key="Edition" text="Udgave"/>
+ <l:gentext key="edition" text="udgave"/>
+ <l:gentext key="Equation" text="Ligning"/>
+ <l:gentext key="equation" text="ligning"/>
+ <l:gentext key="Example" text="Eksempel"/>
+ <l:gentext key="example" text="eksempel"/>
+ <l:gentext key="Figure" text="Figur"/>
+ <l:gentext key="figure" text="figur"/>
+ <l:gentext key="Glossary" text="Ordliste"/>
+ <l:gentext key="glossary" text="ordliste"/>
+ <l:gentext key="GlossSee" text="Se"/>
+ <l:gentext key="glosssee" text="se"/>
+ <l:gentext key="GlossSeeAlso" text="Se ogs&#229;"/>
+ <l:gentext key="glossseealso" text="se ogs&#229;"/>
+ <l:gentext key="IMPORTANT" text="VIGTIGT"/>
+ <l:gentext key="Important" text="Vigtigt"/>
+ <l:gentext key="important" text="vigtigt"/>
+ <l:gentext key="Index" text="Stikordsregister"/>
+ <l:gentext key="index" text="stikordsregister"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Retslig note"/>
+ <l:gentext key="legalnotice" text="retslig note"/>
+ <l:gentext key="MsgAud" text="M&#229;lgruppe"/>
+ <l:gentext key="msgaud" text="m&#229;lgruppe"/>
+ <l:gentext key="MsgLevel" text="Niveau"/>
+ <l:gentext key="msglevel" text="niveau"/>
+ <l:gentext key="MsgOrig" text="Grundlag"/>
+ <l:gentext key="msgorig" text="grundlag"/>
+ <l:gentext key="NOTE" text="BEM&#198;RK"/>
+ <l:gentext key="Note" text="Bem&#230;rk"/>
+ <l:gentext key="note" text="bem&#230;rk"/>
+ <l:gentext key="Part" text="Del"/>
+ <l:gentext key="part" text="del"/>
+ <l:gentext key="Preface" text="Forord"/>
+ <l:gentext key="preface" text="forord"/>
+ <l:gentext key="Procedure" text="Procedure"/>
+ <l:gentext key="procedure" text="procedure"/>
+ <l:gentext key="ProductionSet" text="Produktion"/>
+ <l:gentext key="Published" text="Udgivet"/>
+ <l:gentext key="published" text="udgivet"/>
+ <l:gentext key="Question" text="Sp&#248;rgsm&#229;l"/>
+ <l:gentext key="question" text="sp&#248;rgsm&#229;l"/>
+ <l:gentext key="RefEntry" text="Punkt"/>
+ <l:gentext key="refentry" text="punkt"/>
+ <l:gentext key="Reference" text="Henvisning"/>
+ <l:gentext key="reference" text="henvisning"/>
+ <l:gentext key="RefName" text="Navn"/>
+ <l:gentext key="refname" text="navn"/>
+ <l:gentext key="RefSection" text="Afsnit"/>
+ <l:gentext key="refsection" text="afsnit"/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="synopsis"/>
+ <l:gentext key="RevHistory" text="Revisionshistorie"/>
+ <l:gentext key="revhistory" text="revisionshistorie"/>
+ <l:gentext key="revision" text="revision"/>
+ <l:gentext key="Revision" text="Revision"/>
+ <l:gentext key="sect1" text="Afsnit"/>
+ <l:gentext key="sect2" text="Afsnit"/>
+ <l:gentext key="sect3" text="Afsnit"/>
+ <l:gentext key="sect4" text="Afsnit"/>
+ <l:gentext key="sect5" text="Afsnit"/>
+ <l:gentext key="section" text="afsnit"/>
+ <l:gentext key="Section" text="Afsnit"/>
+ <l:gentext key="See" text="Se"/>
+ <l:gentext key="see" text="se"/>
+ <l:gentext key="SeeAlso" text="Se ogs&#229;"/>
+ <l:gentext key="seealso" text="se ogs&#229;"/>
+ <l:gentext key="Seealso" text="Se ogs&#229;"/>
+ <l:gentext key="set" text="s&#230;t"/>
+ <l:gentext key="Set" text="S&#230;t"/>
+ <l:gentext key="setindex" text="s&#230;t indeks"/>
+ <l:gentext key="SetIndex" text="S&#230;t indeks"/>
+ <l:gentext key="Sidebar" text="Sidebj&#230;lke"/>
+ <l:gentext key="sidebar" text="sidebj&#230;lke"/>
+ <l:gentext key="step" text="trin"/>
+ <l:gentext key="Step" text="Trin"/>
+ <l:gentext key="Table" text="Tabel"/>
+ <l:gentext key="table" text="tabel"/>
+ <l:gentext key="tip" text="vink"/>
+ <l:gentext key="TIP" text="VINK"/>
+ <l:gentext key="Tip" text="Vink"/>
+ <l:gentext key="Warning" text="Advarsel"/>
+ <l:gentext key="warning" text="advarsel"/>
+ <l:gentext key="WARNING" text="ADVARSEL"/>
+ <l:gentext key="and" text="og"/>
+ <l:gentext key="by" text="af"/>
+ <l:gentext key="Edited" text="Redigeret"/>
+ <l:gentext key="edited" text="redigeret"/>
+ <l:gentext key="Editedby" text="Redigeret af"/>
+ <l:gentext key="editedby" text="redigeret af"/>
+ <l:gentext key="in" text="i"/>
+ <l:gentext key="lastlistcomma" text=" og "/>
+ <l:gentext key="listcomma" text=", "/>
+ <l:gentext key="nonexistantelement" text="ikke-eksisterende element"/>
+ <l:gentext key="notes" text="slutbem&#230;rkning:"/>
+ <l:gentext key="Notes" text="Slutbem&#230;rkning:"/>
+ <l:gentext key="Pgs" text="Siderne"/>
+ <l:gentext key="pgs" text="siderne"/>
+ <l:gentext key="Revisedby" text="Revideret af: "/>
+ <l:gentext key="revisedby" text="revideret af: "/>
+ <l:gentext key="TableNotes" text="Noter:"/>
+ <l:gentext key="tablenotes" text="noter:"/>
+ <l:gentext key="TableofContents" text="Indholdsfortegnelse"/>
+ <l:gentext key="tableofcontents" text="indholdsfortegnelse"/>
+ <l:gentext key="unexpectedelementname" text="uventet elementnavn"/>
+ <l:gentext key="unsupported" text="ikke underst&#248;ttet"/>
+ <l:gentext key="xrefto" text="krydshenvisning til"/>
+ <l:gentext key="listofequations" text="ligningsliste"/>
+ <l:gentext key="ListofEquations" text="Ligningsliste"/>
+ <l:gentext key="ListofExamples" text="Eksempelliste"/>
+ <l:gentext key="listofexamples" text="eksempelliste"/>
+ <l:gentext key="ListofFigures" text="Figurliste"/>
+ <l:gentext key="listoffigures" text="figurliste"/>
+ <l:gentext key="listoftables" text="tabelliste"/>
+ <l:gentext key="ListofTables" text="Tabelliste"/>
+ <l:gentext key="ListofUnknown" text="Liste over ukendte"/>
+ <l:gentext key="listofunknown" text="liste over ukendte"/>
+ <l:gentext key="nav-home" text="hjem"/>
+ <l:gentext key="nav-next" text="n&#230;ste"/>
+ <l:gentext key="nav-next-sibling" text="hurtigt fremad"/>
+ <l:gentext key="nav-prev" text="forrige"/>
+ <l:gentext key="nav-prev-sibling" text="hurtigt tilbage"/>
+ <l:gentext key="nav-up" text="op"/>
+ <l:gentext key="Draft" text="Kladde"/>
+ <l:gentext key="above" text="over"/>
+ <l:gentext key="below" text="under"/>
+ <l:gentext key="sectioncalled" text="afsnittet der hedder"/>
+ <l:gentext key="index symbols" text="symboler"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz&#230;&#248;&#229;"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ&#198;&#216;&#197;"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Appendiks %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ligning %n. %t"/>
+ <l:template name="example" text="Eksempel %n. %t"/>
+ <l:template name="figure" text="Figur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedure %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Produktion %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Sp&#248;rgsm&#229;l %n"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Appendiks %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Svar %n"/>
+ <l:template name="appendix" text="Appendiks %n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitel %n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ligning %n"/>
+ <l:template name="example" text="Eksempel %n"/>
+ <l:template name="figure" text="Figur %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedure %n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Sp&#248;rgsm&#229;l %n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Sp&#248;rgsm&#229;l %n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabel %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="afsnittet der hedder &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Afsnit %n"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Afsnit %n"/>
+ <l:template name="sect2" text="Afsnit %n"/>
+ <l:template name="sect3" text="Afsnit %n"/>
+ <l:template name="sect4" text="Afsnit %n"/>
+ <l:template name="sect5" text="Afsnit %n"/>
+ <l:template name="section" text="Afsnit %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" og "/>
+ <l:template name="seplast" text=" og og "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Se "/>
+ <l:template name="seealso" text="Se ogs&#229; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="M&#229;lgruppe: "/>
+ <l:template name="MsgLevel" text="Niveau: "/>
+ <l:template name="MsgOrig" text="Grundlag: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/de.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/de.xml
new file mode 100644
index 0000000..a9d279a
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/de.xml
@@ -0,0 +1,457 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="de" english-language-name="German">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Zusammenfassung"/>
+ <l:gentext key="abstract" text="Zusammenfassung"/>
+ <l:gentext key="Answer" text="A:"/>
+ <l:gentext key="answer" text="A:"/>
+ <l:gentext key="Appendix" text="Anhang"/>
+ <l:gentext key="appendix" text="Anhang"/>
+ <l:gentext key="Article" text="Artikel"/>
+ <l:gentext key="article" text="Artikel"/>
+ <l:gentext key="Bibliography" text="Literaturverzeichnis"/>
+ <l:gentext key="bibliography" text="Literaturverzeichnis"/>
+ <l:gentext key="Book" text="Buch"/>
+ <l:gentext key="book" text="Buch"/>
+ <l:gentext key="Caution" text="Achtung"/>
+ <l:gentext key="caution" text="Achtung"/>
+ <l:gentext key="CAUTION" text="ACHTUNG"/>
+ <l:gentext key="Chapter" text="Kapitel"/>
+ <l:gentext key="chapter" text="Kapitel"/>
+ <l:gentext key="Colophon" text="Kolophon"/>
+ <l:gentext key="colophon" text="Kolophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Widmung"/>
+ <l:gentext key="dedication" text="Widmung"/>
+ <l:gentext key="Edition" text="Ausgabe"/>
+ <l:gentext key="edition" text="Ausgabe"/>
+ <l:gentext key="Equation" text="Gleichung"/>
+ <l:gentext key="equation" text="Gleichung"/>
+ <l:gentext key="Example" text="Beispiel"/>
+ <l:gentext key="example" text="Beispiel"/>
+ <l:gentext key="Figure" text="Abbildung"/>
+ <l:gentext key="figure" text="Abbildung"/>
+ <l:gentext key="Glossary" text="Glossar"/>
+ <l:gentext key="glossary" text="Glossar"/>
+ <l:gentext key="GlossSee" text="Siehe"/>
+ <l:gentext key="glosssee" text="Siehe"/>
+ <l:gentext key="GlossSeeAlso" text="Siehe auch"/>
+ <l:gentext key="glossseealso" text="Siehe auch"/>
+ <l:gentext key="IMPORTANT" text="WICHTIG"/>
+ <l:gentext key="Important" text="Wichtig"/>
+ <l:gentext key="important" text="Wichtig"/>
+ <l:gentext key="Index" text="Stichwortverzeichnis"/>
+ <l:gentext key="index" text="Stichwortverzeichnis"/>
+ <l:gentext key="index symbols" text="Symbole"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Rechtlicher Hinweis"/>
+ <l:gentext key="legalnotice" text="Rechtlicher Hinweis"/>
+ <l:gentext key="MsgAud" text="Zielgruppe"/>
+ <l:gentext key="msgaud" text="Zielgruppe"/>
+ <l:gentext key="MsgLevel" text="Dringlichkeit"/>
+ <l:gentext key="msglevel" text="Dringlichkeit"/>
+ <l:gentext key="MsgOrig" text="Ursprung"/>
+ <l:gentext key="msgorig" text="Ursprung"/>
+ <l:gentext key="note" text="Anmerkung"/>
+ <l:gentext key="NOTE" text="ANMERKUNG"/>
+ <l:gentext key="Note" text="Anmerkung"/>
+ <l:gentext key="part" text="Teil"/>
+ <l:gentext key="Part" text="Teil"/>
+ <l:gentext key="Preface" text="Vorwort"/>
+ <l:gentext key="preface" text="Vorwort"/>
+ <l:gentext key="Procedure" text="Prozedur"/>
+ <l:gentext key="procedure" text="Prozedur"/>
+ <l:gentext key="ProductionSet" text="Produktion"/>
+ <l:gentext key="Published" text="Ver&#246;ffentlicht"/>
+ <l:gentext key="published" text="Ver&#246;ffentlicht"/>
+ <l:gentext key="Question" text="F:"/>
+ <l:gentext key="question" text="F:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Verweis"/>
+ <l:gentext key="reference" text="Verweis"/>
+ <l:gentext key="refname" text="Name"/>
+ <l:gentext key="RefName" text="Name"/>
+ <l:gentext key="RefSection" text="Abschnitt"/>
+ <l:gentext key="refsection" text="Abschnitt"/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Versionsgeschichte"/>
+ <l:gentext key="revhistory" text="Versionsgeschichte"/>
+ <l:gentext key="Revision" text="Version"/>
+ <l:gentext key="revision" text="Version"/>
+ <l:gentext key="Section" text="Abschnitt"/>
+ <l:gentext key="section" text="Abschnitt"/>
+ <l:gentext key="sect1" text="Abschnitt"/>
+ <l:gentext key="sect2" text="Abschnitt"/>
+ <l:gentext key="sect3" text="Abschnitt"/>
+ <l:gentext key="sect4" text="Abschnitt"/>
+ <l:gentext key="sect5" text="Abschnitt"/>
+ <l:gentext key="see" text="Siehe"/>
+ <l:gentext key="See" text="Siehe"/>
+ <l:gentext key="SeeAlso" text="Siehe auch"/>
+ <l:gentext key="seealso" text="Siehe auch"/>
+ <l:gentext key="Seealso" text="Siehe auch"/>
+ <l:gentext key="Set" text="Satz"/>
+ <l:gentext key="set" text="Satz"/>
+ <l:gentext key="setindex" text="Stichwortverzeichnis"/>
+ <l:gentext key="SetIndex" text="Stichwortverzeichnis"/>
+ <l:gentext key="sidebar" text="randnotiz"/>
+ <l:gentext key="Sidebar" text="Randnotiz"/>
+ <l:gentext key="Step" text="Schritt"/>
+ <l:gentext key="step" text="Schritt"/>
+ <l:gentext key="table" text="Tabelle"/>
+ <l:gentext key="Table" text="Tabelle"/>
+ <l:gentext key="TIP" text="TIPP"/>
+ <l:gentext key="Tip" text="Tipp"/>
+ <l:gentext key="tip" text="Tipp"/>
+ <l:gentext key="Warning" text="Warnung"/>
+ <l:gentext key="warning" text="Warnung"/>
+ <l:gentext key="WARNING" text="WARNUNG"/>
+ <l:gentext key="and" text="und"/>
+ <l:gentext key="by" text="von"/>
+ <l:gentext key="Edited" text="Herausgegeben"/>
+ <l:gentext key="edited" text="Herausgegeben"/>
+ <l:gentext key="Editedby" text="Herausgegeben von"/>
+ <l:gentext key="editedby" text="Herausgegeben von"/>
+ <l:gentext key="in" text="in"/>
+ <l:gentext key="lastlistcomma" text=""/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="nicht existierendes Element"/>
+ <l:gentext key="notes" text="Fu&#223;noten"/>
+ <l:gentext key="Notes" text="Fu&#223;noten"/>
+ <l:gentext key="Pgs" text="Seiten"/>
+ <l:gentext key="pgs" text="Seiten"/>
+ <l:gentext key="Revisedby" text="Ge&#228;ndert durch: "/>
+ <l:gentext key="revisedby" text="Ge&#228;ndert durch: "/>
+ <l:gentext key="TableNotes" text="Bemerkungen"/>
+ <l:gentext key="tablenotes" text="Bemerkungen"/>
+ <l:gentext key="TableofContents" text="Inhaltsverzeichnis"/>
+ <l:gentext key="tableofcontents" text="Inhaltsverzeichnis"/>
+ <l:gentext key="unexpectedelementname" text="Unerwarteter Elementname"/>
+ <l:gentext key="unsupported" text="wird nicht unterst&#252;tzt"/>
+ <l:gentext key="xrefto" text="xref auf"/>
+ <l:gentext key="listofequations" text="Gleichungen"/>
+ <l:gentext key="ListofEquations" text="Gleichungen"/>
+ <l:gentext key="ListofExamples" text="Beispiele"/>
+ <l:gentext key="listofexamples" text="Beispiele"/>
+ <l:gentext key="ListofFigures" text="Abbildungsverzeichnis"/>
+ <l:gentext key="listoffigures" text="Abbildungsverzeichnis"/>
+ <l:gentext key="listoftables" text="Tabellenverzeichnis"/>
+ <l:gentext key="ListofTables" text="Tabellenverzeichnis"/>
+ <l:gentext key="ListofUnknown" text="???-Verzeichnis"/>
+ <l:gentext key="listofunknown" text="???-Verzeichnis"/>
+ <l:gentext key="nav-home" text="Zum Anfang"/>
+ <l:gentext key="nav-next" text="Weiter"/>
+ <l:gentext key="nav-next-sibling" text="Schnell weiter"/>
+ <l:gentext key="nav-prev" text="Zur&#252;ck"/>
+ <l:gentext key="nav-prev-sibling" text="Schnell zur&#252;ck"/>
+ <l:gentext key="nav-up" text="Nach oben"/>
+ <l:gentext key="sectioncalled" text="der Abschnitt namens"/>
+ <l:gentext key="Draft" text="Entwurf"/>
+ <l:gentext key="above" text="oben"/>
+ <l:gentext key="below" text="unten"/>
+ <l:gentext key="index symbols" text="Symbole"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz&#228;&#246;&#252;&#223;"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ&#196;&#214;&#220;&#223;"/>
+ <l:dingbat key="startquote" text="&#8222;"/>
+ <l:dingbat key="endquote" text="&#8220;"/>
+ <l:dingbat key="nestedstartquote" text="&#8218;"/>
+ <l:dingbat key="nestedendquote" text="&#8216;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Anhangtitel (leer)"/>
+ <l:template name="article" text="Artikeltitel (leer)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titel (leer)"/>
+ <l:template name="book" text="Buchtitel (leer)"/>
+ <l:template name="chapter" text="Kapiteltitel (leer)"/>
+ <l:template name="columns" text="Spalten"/>
+ <l:template name="draftarea" text="Entwurfsbereich f&#252;r"/>
+ <l:template name="edit-attrs" text="Attribute f&#252;r entsprechende Elemente bearbeiten"/>
+ <l:template name="footnote" text="Fu&#223;note"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="metainfo" text="Metainformationen"/>
+ <l:template name="preface" text="Vorworttitel (leer)"/>
+ <l:template name="part" text="Teilbuchtitel (leer)"/>
+ <l:template name="section" text="Abschnittstitel (leer)"/>
+ <l:template name="sect1" text="Abschnittstitel (leer)"/>
+ <l:template name="sect2" text="Abschnittstitel (leer)"/>
+ <l:template name="sect3" text="Abschnittstitel (leer)"/>
+ <l:template name="sect4" text="Abschnittstitel (leer)"/>
+ <l:template name="sect5" text="Abschnittstitel (leer)"/>
+ <l:template name="set" text="Sammlungstitel (leer)"/>
+ <l:template name="title" text="Titel: "/>
+ <l:template name="titles" text="Keine Titelseitenelemente"/>
+ <l:template name="reference" text="Reference (empty)"/>
+ <l:template name="refsection" text="Refsection (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Anhang %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Gleichung %n. %t"/>
+ <l:template name="example" text="Beispiel %n. %t"/>
+ <l:template name="figure" text="Abbildung %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Teil %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Prozedur %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Produktion&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="F: %n"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabelle %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Anhang %n. %t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="A:&#160;%n"/>
+ <l:template name="appendix" text="Anhang %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Gleichung&#160;%n"/>
+ <l:template name="example" text="Beispiel %n. %t"/>
+ <l:template name="figure" text="Abbildung %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Teil %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Prozedur&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="F:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="F: %n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabelle %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8222;%t&#8220;"/>
+ <l:template name="refsection" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect1" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect2" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect3" text="&#8222;%t&#8220;"/>
+ <l:template name="sect1" text="&#8222;%t&#8220;"/>
+ <l:template name="sect2" text="&#8222;%t&#8220;"/>
+ <l:template name="sect3" text="&#8222;%t&#8220;"/>
+ <l:template name="sect4" text="&#8222;%t&#8220;"/>
+ <l:template name="sect5" text="&#8222;%t&#8220;"/>
+ <l:template name="section" text="&#8222;%t&#8220;"/>
+ <l:template name="simplesect" text="&#8222;%t&#8220;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8222;%t&#8220;"/>
+ <l:template name="refsection" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect1" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect2" text="&#8222;%t&#8220;"/>
+ <l:template name="refsect3" text="&#8222;%t&#8220;"/>
+ <l:template name="sect1" text="Abschnitt %n"/>
+ <l:template name="sect2" text="Abschnitt %n"/>
+ <l:template name="sect3" text="Abschnitt %n"/>
+ <l:template name="sect4" text="Abschnitt %n"/>
+ <l:template name="sect5" text="Abschnitt %n"/>
+ <l:template name="section" text="Abschnitt %n"/>
+ <l:template name="simplesect" text="&#8222;%t&#8220;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" und "/>
+ <l:template name="seplast" text=" und "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Siehe "/>
+ <l:template name="seealso" text="Siehe auch "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Zielgruppe: "/>
+ <l:template name="MsgLevel" text="Dringlichkeit: "/>
+ <l:template name="MsgOrig" text="Ursprung: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/el.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/el.xml
new file mode 100644
index 0000000..7401c22
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/el.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="el" english-language-name="Greek">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#208;&#229;&#241;&#223;&#235;&#231;&#248;&#231;"/>
+ <l:gentext key="Answer" text="&#193;:"/>
+ <l:gentext key="Appendix" text="&#208;&#225;&#241;&#220;&#241;&#244;&#231;&#236;&#225;"/>
+ <l:gentext key="Article" text="&#182;&#241;&#232;&#241;&#239;"/>
+ <l:gentext key="Bibliography" text="&#194;&#233;&#226;&#235;&#233;&#239;&#227;&#241;&#225;&#246;&#223;&#225;"/>
+ <l:gentext key="Book" text="&#194;&#233;&#226;&#235;&#223;&#239;"/>
+ <l:gentext key="CAUTION" text="&#208;&#209;&#207;&#211;&#207;&#215;&#199;"/>
+ <l:gentext key="Caution" text="&#208;&#241;&#239;&#243;&#239;&#247;&#222;"/>
+ <l:gentext key="Chapter" text="&#202;&#229;&#246;&#220;&#235;&#225;&#233;&#239;"/>
+ <l:gentext key="Colophon" text="&#202;&#239;&#241;&#249;&#237;&#223;&#228;&#225;"/>
+ <l:gentext key="Copyright" text="&#208;&#237;&#229;&#245;&#236;&#225;&#244;&#233;&#234;&#220; &#196;&#233;&#234;&#225;&#233;&#254;&#236;&#225;&#244;&#225;"/>
+ <l:gentext key="Dedication" text="&#193;&#246;&#233;&#221;&#241;&#249;&#243;&#231;"/>
+ <l:gentext key="Edition" text="&#184;&#234;&#228;&#239;&#243;&#231;"/>
+ <l:gentext key="Equation" text="&#197;&#238;&#223;&#243;&#249;&#243;&#231;"/>
+ <l:gentext key="Example" text="&#208;&#225;&#241;&#220;&#228;&#229;&#233;&#227;&#236;&#225;"/>
+ <l:gentext key="Figure" text="&#211;&#247;&#222;&#236;&#225;"/>
+ <l:gentext key="GlossSee" text="&#196;&#229;&#223;&#244;&#229;"/>
+ <l:gentext key="GlossSeeAlso" text="&#196;&#229;&#223;&#244;&#229; &#197;&#240;&#223;&#243;&#231;&#242;"/>
+ <l:gentext key="Glossary" text="&#195;&#235;&#249;&#243;&#243;&#220;&#241;&#233;&#239;"/>
+ <l:gentext key="IMPORTANT" text="&#211;&#199;&#204;&#193;&#205;&#212;&#201;&#202;&#207;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="Important" text="&#211;&#231;&#236;&#225;&#237;&#244;&#233;&#234;&#252;"/>
+ <l:gentext key="Index" text="&#197;&#245;&#241;&#229;&#244;&#222;&#241;&#233;&#239;"/>
+ <l:gentext key="LegalNotice" text="&#205;&#239;&#236;&#233;&#234;&#222; &#211;&#231;&#236;&#229;&#223;&#249;&#243;&#231;"/>
+ <l:gentext key="MsgAud" text="&#193;&#234;&#241;&#239;&#225;&#244;&#222;&#241;&#233;&#239;"/>
+ <l:gentext key="MsgLevel" text="&#197;&#240;&#223;&#240;&#229;&#228;&#239;"/>
+ <l:gentext key="MsgOrig" text="&#208;&#231;&#227;&#222;"/>
+ <l:gentext key="NOTE" text="&#211;&#199;&#204;&#197;&#201;&#217;&#211;&#199;"/>
+ <l:gentext key="Note" text="&#211;&#231;&#236;&#229;&#223;&#249;&#243;&#231;"/>
+ <l:gentext key="Part" text="&#204;&#221;&#241;&#239;&#242;"/>
+ <l:gentext key="Preface" text="&#197;&#233;&#243;&#225;&#227;&#249;&#227;&#222;"/>
+ <l:gentext key="Procedure" text="&#196;&#233;&#225;&#228;&#233;&#234;&#225;&#243;&#223;&#225;"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="&#196;&#231;&#236;&#239;&#243;&#233;&#229;&#245;&#236;&#221;&#237;&#239;"/>
+ <l:gentext key="Question" text="&#197;:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="RefName" text="&#188;&#237;&#239;&#236;&#225;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#211;&#253;&#237;&#239;&#248;&#231;"/>
+ <l:gentext key="Reference" text="&#193;&#237;&#225;&#246;&#239;&#241;&#220;"/>
+ <l:gentext key="RevHistory" text="&#201;&#243;&#244;&#239;&#241;&#233;&#234;&#252; &#193;&#237;&#225;&#232;&#229;&#249;&#241;&#222;&#243;&#229;&#249;&#237;"/>
+ <l:gentext key="Revision" text="&#193;&#237;&#225;&#232;&#229;&#254;&#241;&#231;&#243;&#231;"/>
+ <l:gentext key="Section" text="&#212;&#236;&#222;&#236;&#225;"/>
+ <l:gentext key="See" text="&#196;&#229;&#223;&#244;&#229;"/>
+ <l:gentext key="SeeAlso" text="&#196;&#229;&#223;&#244;&#229; &#197;&#240;&#223;&#243;&#231;&#242;"/>
+ <l:gentext key="Seealso" text="&#196;&#229;&#223;&#244;&#229; &#229;&#240;&#223;&#243;&#231;&#242;"/>
+ <l:gentext key="Set" text="&#211;&#253;&#237;&#239;&#235;&#239;"/>
+ <l:gentext key="SetIndex" text="&#197;&#245;&#241;&#229;&#244;&#222;&#241;&#233;&#239; &#211;&#245;&#237;&#252;&#235;&#249;&#237;"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="Step" text="&#214;&#220;&#243;&#231;"/>
+ <l:gentext key="TIP" text="&#213;&#208;&#207;&#196;&#197;&#201;&#206;&#199;"/>
+ <l:gentext key="Table" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242;"/>
+ <l:gentext key="Tip" text="&#213;&#240;&#252;&#228;&#229;&#233;&#238;&#231;"/>
+ <l:gentext key="WARNING" text="&#208;&#209;&#207;&#197;&#201;&#196;&#207;&#208;&#207;&#201;&#199;&#211;&#199;"/>
+ <l:gentext key="Warning" text="&#208;&#241;&#239;&#229;&#233;&#228;&#239;&#240;&#239;&#223;&#231;&#243;&#231;"/>
+ <l:gentext key="abstract" text="&#208;&#229;&#241;&#223;&#235;&#231;&#248;&#231;"/>
+ <l:gentext key="answer" text="&#193;:"/>
+ <l:gentext key="appendix" text="&#240;&#225;&#241;&#220;&#241;&#244;&#231;&#236;&#225;"/>
+ <l:gentext key="article" text="&#182;&#241;&#232;&#241;&#239;"/>
+ <l:gentext key="bibliography" text="&#194;&#233;&#226;&#235;&#233;&#239;&#227;&#241;&#225;&#246;&#223;&#225;"/>
+ <l:gentext key="book" text="&#194;&#233;&#226;&#235;&#223;&#239;"/>
+ <l:gentext key="caution" text="&#208;&#241;&#239;&#243;&#239;&#247;&#222;"/>
+ <l:gentext key="chapter" text="&#234;&#229;&#246;&#220;&#235;&#225;&#233;&#239;"/>
+ <l:gentext key="colophon" text="&#202;&#239;&#241;&#249;&#237;&#223;&#228;&#225;"/>
+ <l:gentext key="copyright" text="&#208;&#237;&#229;&#245;&#236;&#225;&#244;&#233;&#234;&#220; &#196;&#233;&#234;&#225;&#233;&#254;&#236;&#225;&#244;&#225;"/>
+ <l:gentext key="dedication" text="&#193;&#246;&#233;&#221;&#241;&#249;&#243;&#231;"/>
+ <l:gentext key="edition" text="&#184;&#234;&#228;&#239;&#243;&#231;"/>
+ <l:gentext key="equation" text="&#197;&#238;&#223;&#243;&#249;&#243;&#231;"/>
+ <l:gentext key="example" text="&#208;&#225;&#241;&#220;&#228;&#229;&#233;&#227;&#236;&#225;"/>
+ <l:gentext key="figure" text="&#211;&#247;&#222;&#236;&#225;"/>
+ <l:gentext key="glossary" text="&#195;&#235;&#249;&#243;&#243;&#220;&#241;&#233;&#239;"/>
+ <l:gentext key="glosssee" text="&#196;&#229;&#223;&#244;&#229;"/>
+ <l:gentext key="glossseealso" text="&#196;&#229;&#223;&#244;&#229; &#197;&#240;&#223;&#243;&#231;&#242;"/>
+ <l:gentext key="important" text="&#211;&#231;&#236;&#225;&#237;&#244;&#233;&#234;&#252;"/>
+ <l:gentext key="index" text="&#197;&#245;&#241;&#229;&#244;&#222;&#241;&#233;&#239;"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="legalnotice" text="&#205;&#239;&#236;&#233;&#234;&#222; &#211;&#231;&#236;&#229;&#223;&#249;&#243;&#231;"/>
+ <l:gentext key="msgaud" text="&#193;&#234;&#241;&#239;&#225;&#244;&#222;&#241;&#233;&#239;"/>
+ <l:gentext key="msglevel" text="&#197;&#240;&#223;&#240;&#229;&#228;&#239;"/>
+ <l:gentext key="msgorig" text="&#208;&#231;&#227;&#222;"/>
+ <l:gentext key="note" text="&#211;&#231;&#236;&#229;&#223;&#249;&#243;&#231;"/>
+ <l:gentext key="part" text="&#204;&#221;&#241;&#239;&#242;"/>
+ <l:gentext key="preface" text="&#197;&#233;&#243;&#225;&#227;&#249;&#227;&#222;"/>
+ <l:gentext key="procedure" text="&#196;&#233;&#225;&#228;&#233;&#234;&#225;&#243;&#223;&#225;"/>
+ <l:gentext key="published" text="&#196;&#231;&#236;&#239;&#243;&#233;&#229;&#245;&#236;&#221;&#237;&#239;"/>
+ <l:gentext key="question" text="&#197;:"/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="reference" text="&#193;&#237;&#225;&#246;&#239;&#241;&#220;"/>
+ <l:gentext key="refname" text="&#188;&#237;&#239;&#236;&#225;"/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="refsynopsisdiv" text="&#211;&#253;&#237;&#239;&#248;&#231;"/>
+ <l:gentext key="revhistory" text="&#201;&#243;&#244;&#239;&#241;&#233;&#234;&#252; &#193;&#237;&#225;&#232;&#229;&#249;&#241;&#222;&#243;&#229;&#249;&#237;"/>
+ <l:gentext key="revision" text="&#193;&#237;&#225;&#232;&#229;&#254;&#241;&#231;&#243;&#231;"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="section" text="&#244;&#236;&#222;&#236;&#225;"/>
+ <l:gentext key="see" text="&#196;&#229;&#223;&#244;&#229;"/>
+ <l:gentext key="seealso" text="&#196;&#229;&#223;&#244;&#229; &#197;&#240;&#223;&#243;&#231;&#242;"/>
+ <l:gentext key="set" text="&#211;&#253;&#237;&#239;&#235;&#239;"/>
+ <l:gentext key="setindex" text="&#197;&#245;&#241;&#229;&#244;&#222;&#241;&#233;&#239; &#211;&#245;&#237;&#252;&#235;&#249;&#237;"/>
+ <l:gentext key="sidebar" text="&#229;&#240;&#229;&#238;&#231;&#227;&#231;&#236;&#225;&#244;&#233;&#234;&#252; &#240;&#235;&#229;&#245;&#241;&#233;&#234;&#252; &#225;&#241;&#232;&#241;&#223;&#228;&#233;&#239;"/>
+ <l:gentext key="step" text="&#246;&#220;&#243;&#231;"/>
+ <l:gentext key="table" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242;"/>
+ <l:gentext key="tip" text="&#213;&#240;&#252;&#228;&#229;&#233;&#238;&#231;"/>
+ <l:gentext key="warning" text="&#208;&#241;&#239;&#229;&#233;&#228;&#239;&#240;&#239;&#223;&#231;&#243;&#231;"/>
+ <l:gentext key="and" text="&#234;&#225;&#233;"/>
+ <l:gentext key="by" text="&#225;&#240;&#252;"/>
+ <l:gentext key="Edited" text="&#197;&#240;&#233;&#236;&#221;&#235;&#229;&#233;&#225;"/>
+ <l:gentext key="edited" text="&#197;&#240;&#233;&#236;&#221;&#235;&#229;&#233;&#225;"/>
+ <l:gentext key="Editedby" text="&#197;&#240;&#233;&#236;&#221;&#235;&#229;&#233;&#225; &#225;&#240;&#252;"/>
+ <l:gentext key="editedby" text="&#197;&#240;&#233;&#236;&#221;&#235;&#229;&#233;&#225; &#225;&#240;&#252;"/>
+ <l:gentext key="in" text="&#243;&#229;"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="&#236;&#231;-&#245;&#240;&#225;&#241;&#234;&#244;&#252; &#243;&#244;&#239;&#233;&#247;&#229;&#223;&#239;"/>
+ <l:gentext key="notes" text="&#211;&#231;&#236;&#229;&#233;&#254;&#243;&#229;&#233;&#242;"/>
+ <l:gentext key="Notes" text="&#211;&#231;&#236;&#229;&#233;&#254;&#243;&#229;&#233;&#242;"/>
+ <l:gentext key="Pgs" text="&#211;&#235;&#228;&#242;."/>
+ <l:gentext key="pgs" text="&#211;&#235;&#228;&#242;."/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242; &#211;&#231;&#236;&#229;&#233;&#254;&#243;&#229;&#249;&#237;"/>
+ <l:gentext key="tablenotes" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242; &#211;&#231;&#236;&#229;&#233;&#254;&#243;&#229;&#249;&#237;"/>
+ <l:gentext key="TableofContents" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242; &#208;&#229;&#241;&#233;&#229;&#247;&#239;&#236;&#221;&#237;&#249;&#237;"/>
+ <l:gentext key="tableofcontents" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242; &#208;&#229;&#241;&#233;&#229;&#247;&#239;&#236;&#221;&#237;&#249;&#237;"/>
+ <l:gentext key="unexpectedelementname" text="&#204;&#231; &#225;&#237;&#225;&#236;&#229;&#237;&#252;&#236;&#229;&#237;&#239; &#252;&#237;&#239;&#236;&#225; &#243;&#244;&#239;&#233;&#247;&#229;&#223;&#239;&#245;"/>
+ <l:gentext key="unsupported" text="&#236;&#231; &#245;&#240;&#239;&#243;&#244;&#231;&#241;&#233;&#230;&#252;&#236;&#229;&#237;&#239;"/>
+ <l:gentext key="xrefto" text="&#225;&#237;&#244;&#233;&#240;&#225;&#241;&#225;&#240;&#239;&#236;&#240;&#222; &#243;&#229;"/>
+ <l:gentext key="listofequations" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#197;&#238;&#233;&#243;&#254;&#243;&#229;&#249;&#237;"/>
+ <l:gentext key="ListofEquations" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#197;&#238;&#233;&#243;&#254;&#243;&#229;&#249;&#237;"/>
+ <l:gentext key="ListofExamples" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#208;&#225;&#241;&#225;&#228;&#229;&#233;&#227;&#236;&#220;&#244;&#249;&#237;"/>
+ <l:gentext key="listofexamples" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#208;&#225;&#241;&#225;&#228;&#229;&#233;&#227;&#236;&#220;&#244;&#249;&#237;"/>
+ <l:gentext key="ListofFigures" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#211;&#247;&#231;&#236;&#220;&#244;&#249;&#237;"/>
+ <l:gentext key="listoffigures" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#211;&#247;&#231;&#236;&#220;&#244;&#249;&#237;"/>
+ <l:gentext key="listoftables" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#208;&#233;&#237;&#220;&#234;&#249;&#237;"/>
+ <l:gentext key="ListofTables" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#208;&#233;&#237;&#220;&#234;&#249;&#237;"/>
+ <l:gentext key="ListofUnknown" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#193;&#227;&#237;&#254;&#243;&#244;&#249;&#237;"/>
+ <l:gentext key="listofunknown" text="&#202;&#225;&#244;&#220;&#235;&#239;&#227;&#239;&#242; &#193;&#227;&#237;&#254;&#243;&#244;&#249;&#237;"/>
+ <l:gentext key="nav-home" text="&#193;&#241;&#247;&#222;"/>
+ <l:gentext key="nav-next" text="&#197;&#240;&#252;&#236;&#229;&#237;&#239;"/>
+ <l:gentext key="nav-next-sibling" text="&#208;&#241;&#239;&#242; &#244;&#239; &#244;&#221;&#235;&#239;&#242;"/>
+ <l:gentext key="nav-prev" text="&#208;&#241;&#239;&#231;&#227;"/>
+ <l:gentext key="nav-prev-sibling" text="&#208;&#241;&#239;&#242; &#244;&#231;&#237; &#225;&#241;&#247;&#222;"/>
+ <l:gentext key="nav-up" text="&#208;&#220;&#237;&#249;"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#208;&#225;&#241;&#220;&#241;&#244;&#231;&#236;&#225; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#202;&#229;&#246;&#220;&#235;&#225;&#233;&#239; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#197;&#238;&#223;&#243;&#249;&#243;&#231; %n. %t"/>
+ <l:template name="example" text="&#208;&#225;&#241;&#220;&#228;&#229;&#233;&#227;&#236;&#225; %n. %t"/>
+ <l:template name="figure" text="&#211;&#247;&#222;&#236;&#225; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#204;&#221;&#241;&#239;&#242; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#196;&#233;&#225;&#228;&#233;&#234;&#225;&#243;&#223;&#225;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#208;&#225;&#241;&#220;&#241;&#244;&#231;&#236;&#225; %n. %t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="&#202;&#229;&#246;&#220;&#235;&#225;&#233;&#239; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#193;:&#160;%n"/>
+ <l:template name="appendix" text="&#208;&#225;&#241;&#220;&#241;&#244;&#231;&#236;&#225; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#202;&#229;&#246;&#220;&#235;&#225;&#233;&#239; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#197;&#238;&#223;&#243;&#249;&#243;&#231;&#160;%n"/>
+ <l:template name="example" text="&#208;&#225;&#241;&#220;&#228;&#229;&#233;&#227;&#236;&#225; %n. %t"/>
+ <l:template name="figure" text="&#211;&#247;&#222;&#236;&#225; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ <l:template name="part" text="&#204;&#221;&#241;&#239;&#242; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#196;&#233;&#225;&#228;&#233;&#234;&#225;&#243;&#223;&#225;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#197;:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#197;:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#208;&#223;&#237;&#225;&#234;&#225;&#242; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#212;&#236;&#222;&#236;&#225; %n"/>
+ <l:template name="sect2" text="&#212;&#236;&#222;&#236;&#225; %n"/>
+ <l:template name="sect3" text="&#212;&#236;&#222;&#236;&#225; %n"/>
+ <l:template name="sect4" text="&#212;&#236;&#222;&#236;&#225; %n"/>
+ <l:template name="sect5" text="&#212;&#236;&#222;&#236;&#225; %n"/>
+ <l:template name="section" text="&#212;&#236;&#222;&#236;&#225; %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#234;&#225;&#233; "/>
+ <l:template name="seplast" text=", &#234;&#225;&#233; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#196;&#229;&#223;&#244;&#229; "/>
+ <l:template name="seealso" text="&#196;&#229;&#223;&#244;&#229; &#197;&#240;&#223;&#243;&#231;&#242; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#193;&#234;&#241;&#239;&#225;&#244;&#222;&#241;&#233;&#239;: "/>
+ <l:template name="MsgLevel" text="&#197;&#240;&#223;&#240;&#229;&#228;&#239;: "/>
+ <l:template name="MsgOrig" text="&#208;&#231;&#227;&#222;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/en.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/en.xml
new file mode 100644
index 0000000..f46201d
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/en.xml
@@ -0,0 +1,481 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en" english-language-name="English">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Abstract"/>
+ <l:gentext key="abstract" text="Abstract"/>
+ <l:gentext key="Answer" text="A:"/>
+ <l:gentext key="answer" text="A:"/>
+ <l:gentext key="Appendix" text="Appendix"/>
+ <l:gentext key="appendix" text="Appendix"/>
+ <l:gentext key="Article" text="Article"/>
+ <l:gentext key="article" text="Article"/>
+ <l:gentext key="Bibliography" text="Bibliography"/>
+ <l:gentext key="bibliography" text="Bibliography"/>
+ <l:gentext key="Book" text="Book"/>
+ <l:gentext key="book" text="Book"/>
+ <l:gentext key="CAUTION" text="CAUTION"/>
+ <l:gentext key="Caution" text="Caution"/>
+ <l:gentext key="caution" text="Caution"/>
+ <l:gentext key="Chapter" text="Chapter"/>
+ <l:gentext key="chapter" text="Chapter"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedication"/>
+ <l:gentext key="dedication" text="Dedication"/>
+ <l:gentext key="Edition" text="Edition"/>
+ <l:gentext key="edition" text="Edition"/>
+ <l:gentext key="Equation" text="Equation"/>
+ <l:gentext key="equation" text="Equation"/>
+ <l:gentext key="Example" text="Example"/>
+ <l:gentext key="example" text="Example"/>
+ <l:gentext key="Figure" text="Figure"/>
+ <l:gentext key="figure" text="Figure"/>
+ <l:gentext key="Glossary" text="Glossary"/>
+ <l:gentext key="glossary" text="Glossary"/>
+ <l:gentext key="GlossSee" text="See"/>
+ <l:gentext key="glosssee" text="See"/>
+ <l:gentext key="GlossSeeAlso" text="See Also"/>
+ <l:gentext key="glossseealso" text="See Also"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANT"/>
+ <l:gentext key="important" text="Important"/>
+ <l:gentext key="Important" text="Important"/>
+ <l:gentext key="Index" text="Index"/>
+ <l:gentext key="index" text="Index"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Legal Notice"/>
+ <l:gentext key="legalnotice" text="Legal Notice"/>
+ <l:gentext key="MsgAud" text="Audience"/>
+ <l:gentext key="msgaud" text="Audience"/>
+ <l:gentext key="MsgLevel" text="Level"/>
+ <l:gentext key="msglevel" text="Level"/>
+ <l:gentext key="MsgOrig" text="Origin"/>
+ <l:gentext key="msgorig" text="Origin"/>
+ <l:gentext key="NOTE" text="NOTE"/>
+ <l:gentext key="Note" text="Note"/>
+ <l:gentext key="note" text="Note"/>
+ <l:gentext key="Part" text="Part"/>
+ <l:gentext key="part" text="Part"/>
+ <l:gentext key="Preface" text="Preface"/>
+ <l:gentext key="preface" text="Preface"/>
+ <l:gentext key="Procedure" text="Procedure"/>
+ <l:gentext key="procedure" text="Procedure"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Published"/>
+ <l:gentext key="published" text="Published"/>
+ <l:gentext key="Question" text="Q:"/>
+ <l:gentext key="question" text="Q:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Reference"/>
+ <l:gentext key="reference" text="Reference"/>
+ <l:gentext key="RefName" text="Name"/>
+ <l:gentext key="refname" text="Name"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Revision History"/>
+ <l:gentext key="revhistory" text="Revision History"/>
+ <l:gentext key="revision" text="Revision"/>
+ <l:gentext key="Revision" text="Revision"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="section" text="Section"/>
+ <l:gentext key="Section" text="Section"/>
+ <l:gentext key="see" text="see"/>
+ <l:gentext key="seealso" text="see also"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="setindex" text="Set Index"/>
+ <l:gentext key="SetIndex" text="Set Index"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="step" text="step"/>
+ <l:gentext key="Step" text="Step"/>
+ <l:gentext key="Table" text="Table"/>
+ <l:gentext key="table" text="Table"/>
+ <l:gentext key="tip" text="Tip"/>
+ <l:gentext key="TIP" text="TIP"/>
+ <l:gentext key="Tip" text="Tip"/>
+ <l:gentext key="Warning" text="Warning"/>
+ <l:gentext key="warning" text="Warning"/>
+ <l:gentext key="WARNING" text="WARNING"/>
+ <l:gentext key="and" text="and"/>
+ <l:gentext key="by" text="by"/>
+ <l:gentext key="Edited" text="Edited"/>
+ <l:gentext key="edited" text="Edited"/>
+ <l:gentext key="Editedby" text="Edited by"/>
+ <l:gentext key="editedby" text="Edited by"/>
+ <l:gentext key="in" text="in"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="non-existant element"/>
+ <l:gentext key="notes" text="Notes"/>
+ <l:gentext key="Notes" text="Notes"/>
+ <l:gentext key="Pgs" text="Pgs."/>
+ <l:gentext key="pgs" text="Pgs."/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Notes"/>
+ <l:gentext key="tablenotes" text="Notes"/>
+ <l:gentext key="TableofContents" text="Table of Contents"/>
+ <l:gentext key="tableofcontents" text="Table of Contents"/>
+ <l:gentext key="unexpectedelementname" text="Unexpected element name"/>
+ <l:gentext key="unsupported" text="unsupported"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="List of Equations"/>
+ <l:gentext key="ListofEquations" text="List of Equations"/>
+ <l:gentext key="ListofExamples" text="List of Examples"/>
+ <l:gentext key="listofexamples" text="List of Examples"/>
+ <l:gentext key="ListofFigures" text="List of Figures"/>
+ <l:gentext key="listoffigures" text="List of Figures"/>
+ <l:gentext key="ListofProcedures" text="List of Procedures"/>
+ <l:gentext key="listofprocedures" text="List of Procedures"/>
+ <l:gentext key="listoftables" text="List of Tables"/>
+ <l:gentext key="ListofTables" text="List of Tables"/>
+ <l:gentext key="ListofUnknown" text="List of Unknown"/>
+ <l:gentext key="listofunknown" text="List of Unknown"/>
+ <l:gentext key="nav-home" text="Home"/>
+ <l:gentext key="nav-next" text="Next"/>
+ <l:gentext key="nav-next-sibling" text="Fast Forward"/>
+ <l:gentext key="nav-prev" text="Prev"/>
+ <l:gentext key="nav-prev-sibling" text="Fast Backward"/>
+ <l:gentext key="nav-up" text="Up"/>
+ <l:gentext key="nav-toc" text="ToC"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="reference" text="Reference (empty)"/>
+ <l:template name="refsynopsisdiv" text=" "/>
+ <l:template name="refsection" text="Refsection (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Appendix&#160;%n.&#160;%t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Chapter&#160;%n.&#160;%t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equation&#160;%n.&#160;%t"/>
+ <l:template name="example" text="Example&#160;%n.&#160;%t"/>
+ <l:template name="figure" text="Figure&#160;%n.&#160;%t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="glossentry" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Part&#160;%n.&#160;%t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedure&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Table&#160;%n.&#160;%t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="article/appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Appendix&#160;%n.&#160;%t"/>
+ <l:template name="article/appendix" text="%n.&#160;%t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="Chapter&#160;%n.&#160;%t"/>
+ <l:template name="sect1" text="%n.&#160;%t"/>
+ <l:template name="sect2" text="%n.&#160;%t"/>
+ <l:template name="sect3" text="%n.&#160;%t"/>
+ <l:template name="sect4" text="%n.&#160;%t"/>
+ <l:template name="sect5" text="%n.&#160;%t"/>
+ <l:template name="section" text="%n.&#160;%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="A:&#160;%n"/>
+ <l:template name="appendix" text="Appendix&#160;%n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Chapter&#160;%n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equation&#160;%n"/>
+ <l:template name="example" text="Example&#160;%n"/>
+ <l:template name="figure" style="title" text="Figure&#160;%n.&#160;%t"/>
+ <l:template name="figure" text="Figure&#160;%n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Part&#160;%n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedure&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Q:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Q:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Table&#160;%n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="section" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="the section called &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Section&#160;%n"/>
+ <l:template name="refsection" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Section&#160;%n"/>
+ <l:template name="sect2" text="Section&#160;%n"/>
+ <l:template name="sect3" text="Section&#160;%n"/>
+ <l:template name="sect4" text="Section&#160;%n"/>
+ <l:template name="sect5" text="Section&#160;%n"/>
+ <l:template name="section" text="Section&#160;%n"/>
+ <l:template name="simplesect" text="the section called &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="xref-number-and-title">
+ <l:template name="bridgehead" text="Section&#160;%n, &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Section&#160;%n, &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="Section&#160;%n, &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="Section&#160;%n, &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="Section&#160;%n, &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="Section&#160;%n, &#8220;%t&#8221;"/>
+ <l:template name="section" text="Section&#160;%n, &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="chapter" text="Chapter&#160;%n, %t"/>
+ <l:template name="appendix" text="Appendix&#160;%n, %t"/>
+ <l:template name="example" text="Example&#160;%n, %t"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" and "/>
+ <l:template name="seplast" text=", and "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="See "/>
+ <l:template name="seealso" text="See Also "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audience: "/>
+ <l:template name="MsgLevel" text="Level: "/>
+ <l:template name="MsgOrig" text="Origin: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/es.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/es.xml
new file mode 100644
index 0000000..f6ef734
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/es.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="es" english-language-name="Spanish">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Resumen"/>
+ <l:gentext key="abstract" text="resumen"/>
+ <l:gentext key="Answer" text="R:"/>
+ <l:gentext key="answer" text="r:"/>
+ <l:gentext key="Appendix" text="Ap&#233;ndice"/>
+ <l:gentext key="appendix" text="ap&#233;ndice"/>
+ <l:gentext key="Article" text="Art&#237;culo"/>
+ <l:gentext key="article" text="art&#237;culo"/>
+ <l:gentext key="Bibliography" text="Bibliograf&#237;a"/>
+ <l:gentext key="bibliography" text="bibliograf&#237;a"/>
+ <l:gentext key="Book" text="Libro"/>
+ <l:gentext key="book" text="libro"/>
+ <l:gentext key="CAUTION" text="ATENCI&#211;N"/>
+ <l:gentext key="Caution" text="Atenci&#243;n"/>
+ <l:gentext key="caution" text="atenci&#243;n"/>
+ <l:gentext key="Chapter" text="Cap&#237;tulo"/>
+ <l:gentext key="chapter" text="cap&#237;tulo"/>
+ <l:gentext key="Colophon" text="Colof&#243;n"/>
+ <l:gentext key="colophon" text="colof&#243;n"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="copyright"/>
+ <l:gentext key="Dedication" text="Dedicatoria"/>
+ <l:gentext key="dedication" text="dedicatoria"/>
+ <l:gentext key="Edition" text="Edici&#243;n"/>
+ <l:gentext key="edition" text="edici&#243;n"/>
+ <l:gentext key="Equation" text="Ecuaci&#243;n"/>
+ <l:gentext key="equation" text="ecuaci&#243;n"/>
+ <l:gentext key="Example" text="Ejemplo"/>
+ <l:gentext key="example" text="ejemplo"/>
+ <l:gentext key="Figure" text="Figura"/>
+ <l:gentext key="figure" text="figura"/>
+ <l:gentext key="Glossary" text="Glosario"/>
+ <l:gentext key="glossary" text="glosario"/>
+ <l:gentext key="GlossSee" text="Ver"/>
+ <l:gentext key="glosssee" text="ver"/>
+ <l:gentext key="GlossSeeAlso" text="Ver tambi&#233;n"/>
+ <l:gentext key="glossseealso" text="ver tambi&#233;n"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+ <l:gentext key="Important" text="Importante"/>
+ <l:gentext key="important" text="importante"/>
+ <l:gentext key="Index" text="&#205;ndice"/>
+ <l:gentext key="index" text="&#237;ndice"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="isbn"/>
+ <l:gentext key="LegalNotice" text="Aviso Legal"/>
+ <l:gentext key="legalnotice" text="aviso legal"/>
+ <l:gentext key="MsgAud" text="Audiencia"/>
+ <l:gentext key="msgaud" text="audiencia"/>
+ <l:gentext key="MsgLevel" text="Nivel"/>
+ <l:gentext key="msglevel" text="nivel"/>
+ <l:gentext key="MsgOrig" text="Origen"/>
+ <l:gentext key="msgorig" text="origen"/>
+ <l:gentext key="NOTE" text="NOTA"/>
+ <l:gentext key="Note" text="Nota"/>
+ <l:gentext key="note" text="nota"/>
+ <l:gentext key="Part" text="Parte"/>
+ <l:gentext key="part" text="parte"/>
+ <l:gentext key="Preface" text="Prefacio"/>
+ <l:gentext key="preface" text="prefacio"/>
+ <l:gentext key="Procedure" text="Procedimiento"/>
+ <l:gentext key="procedure" text="procedimiento"/>
+ <l:gentext key="ProductionSet" text="Producci&#243;n"/>
+ <l:gentext key="PubDate" text="Fecha de publicaci&#243;n"/>
+ <l:gentext key="pubdate" text="fecha de publicaci&#243;n"/>
+ <l:gentext key="Published" text="Publicado"/>
+ <l:gentext key="published" text="publicado"/>
+ <l:gentext key="Question" text="P:"/>
+ <l:gentext key="question" text="p:"/>
+ <l:gentext key="RefEntry" text="Entrada de referencia"/>
+ <l:gentext key="refentry" text="entrada de referencia"/>
+ <l:gentext key="Reference" text="Referencia"/>
+ <l:gentext key="reference" text="referencia"/>
+ <l:gentext key="RefName" text="Nombre de referencia"/>
+ <l:gentext key="refname" text="nombre de referencia"/>
+ <l:gentext key="RefSection" text="Secci&#243;n de referencia"/>
+ <l:gentext key="refsection" text="secci&#243;n de referencia"/>
+ <l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+ <l:gentext key="refsynopsisdiv" text="sinopsis"/>
+ <l:gentext key="RevHistory" text="Historial de revisiones"/>
+ <l:gentext key="revhistory" text="Historial de revisiones"/>
+ <l:gentext key="Revision" text="Revisi&#243;n"/>
+ <l:gentext key="revision" text="revisi&#243;n"/>
+ <l:gentext key="sect1" text="Secci&#243;n"/>
+ <l:gentext key="sect2" text="Secci&#243;n"/>
+ <l:gentext key="sect3" text="Secci&#243;n"/>
+ <l:gentext key="sect4" text="Secci&#243;n"/>
+ <l:gentext key="sect5" text="Secci&#243;n"/>
+ <l:gentext key="Section" text="Secci&#243;n"/>
+ <l:gentext key="section" text="secci&#243;n"/>
+ <l:gentext key="See" text="Ver"/>
+ <l:gentext key="see" text="ver"/>
+ <l:gentext key="SeeAlso" text="Ver Tambi&#233;n"/>
+ <l:gentext key="Seealso" text="Ver tambi&#233;n"/>
+ <l:gentext key="seealso" text="ver tambi&#233;n"/>
+ <l:gentext key="Set" text="Conjunto"/>
+ <l:gentext key="set" text="conjunto"/>
+ <l:gentext key="SetIndex" text="&#205;ndice del Conjunto"/>
+ <l:gentext key="setindex" text="&#237;ndice del conjunto"/>
+ <l:gentext key="Sidebar" text="Barra lateral"/>
+ <l:gentext key="sidebar" text="barra lateral"/>
+ <l:gentext key="Step" text="Paso"/>
+ <l:gentext key="step" text="paso"/>
+ <l:gentext key="Table" text="Tabla"/>
+ <l:gentext key="table" text="tabla"/>
+ <l:gentext key="TIP" text="SUGERENCIA"/>
+ <l:gentext key="Tip" text="Sugerencia"/>
+ <l:gentext key="tip" text="sugerencia"/>
+ <l:gentext key="WARNING" text="AVISO"/>
+ <l:gentext key="Warning" text="Aviso"/>
+ <l:gentext key="warning" text="aviso"/>
+ <l:gentext key="and" text="y"/>
+ <l:gentext key="by" text="por"/>
+ <l:gentext key="Edited" text="Editado"/>
+ <l:gentext key="edited" text="editado"/>
+ <l:gentext key="Editedby" text="Editado por"/>
+ <l:gentext key="editedby" text="editado por"/>
+ <l:gentext key="in" text="en"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="elemento inexistente"/>
+ <l:gentext key="notes" text="notas"/>
+ <l:gentext key="Notes" text="Notas"/>
+ <l:gentext key="Pgs" text="Pags."/>
+ <l:gentext key="pgs" text="pags."/>
+ <l:gentext key="Revisedby" text="Revisado por: "/>
+ <l:gentext key="revisedby" text="revisado por: "/>
+ <l:gentext key="TableNotes" text="Notas de Tabla"/>
+ <l:gentext key="tablenotes" text="notas de tabla"/>
+ <l:gentext key="TableofContents" text="Tabla de contenidos"/>
+ <l:gentext key="tableofcontents" text="tabla de contenidos"/>
+ <l:gentext key="unexpectedelementname" text="nombre de elemento inesperado"/>
+ <l:gentext key="unsupported" text="no soportado"/>
+ <l:gentext key="xrefto" text="referencia a"/>
+ <l:gentext key="listofequations" text="lista de ecuaciones"/>
+ <l:gentext key="ListofEquations" text="Lista de ecuaciones"/>
+ <l:gentext key="ListofExamples" text="Lista de ejemplos"/>
+ <l:gentext key="listofexamples" text="lista de ejemplos"/>
+ <l:gentext key="ListofFigures" text="Lista de figuras"/>
+ <l:gentext key="listoffigures" text="lista de figuras"/>
+ <l:gentext key="listoftables" text="lista de tablas"/>
+ <l:gentext key="ListofTables" text="Lista de tablas"/>
+ <l:gentext key="ListofUnknown" text="Lista de desconocido"/>
+ <l:gentext key="listofunknown" text="lista de desconocido"/>
+ <l:gentext key="nav-home" text="Inicio"/>
+ <l:gentext key="nav-next" text="Siguiente"/>
+ <l:gentext key="nav-next-sibling" text="Avanzar"/>
+ <l:gentext key="nav-prev" text="Anterior"/>
+ <l:gentext key="nav-prev-sibling" text="Retroceder"/>
+ <l:gentext key="nav-up" text="Subir"/>
+ <l:gentext key="index symbols" text="S&#237;mbolos"/>
+ <l:gentext key="Draft" text="Borrador"/>
+ <l:gentext key="above" text="arriba"/>
+ <l:gentext key="below" text="abajo"/>
+ <l:gentext key="sectioncalled" text="secci&#243;n llamada"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz&#225;&#233;&#237;&#243;&#250;&#241;"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ&#193;&#201;&#205;&#211;&#218;&#209;"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="reference" text="Reference (empty)"/>
+ <l:template name="refsection" text="Refsection (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Ap&#233;ndice %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ecuaci&#243;n %n. %t"/>
+ <l:template name="example" text="Ejemplo %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedimiento %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Producci&#243;n %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabla %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Ap&#233;ndice %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="R:&#160;%n"/>
+ <l:template name="appendix" text="Ap&#233;ndice %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ecuaci&#243;n&#160;%n"/>
+ <l:template name="example" text="Ejemplo %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedimiento&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="P:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="P:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabla %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Secci&#243;n %n"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Secci&#243;n %n"/>
+ <l:template name="sect2" text="Secci&#243;n %n"/>
+ <l:template name="sect3" text="Secci&#243;n %n"/>
+ <l:template name="sect4" text="Secci&#243;n %n"/>
+ <l:template name="sect5" text="Secci&#243;n %n"/>
+ <l:template name="section" text="Secci&#243;n %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" y "/>
+ <l:template name="seplast" text=", y "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Ver "/>
+ <l:template name="seealso" text="Ver tambi&#233;n "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audiencia: "/>
+ <l:template name="MsgLevel" text="Nivel: "/>
+ <l:template name="MsgOrig" text="Origen: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/et.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/et.xml
new file mode 100644
index 0000000..f2ead71
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/et.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="et" english-language-name="Estonian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#220;levaade"/>
+ <l:gentext key="abstract" text="&#220;levaade"/>
+ <l:gentext key="Answer" text="V:"/>
+ <l:gentext key="answer" text="V:"/>
+ <l:gentext key="Appendix" text="Lisa"/>
+ <l:gentext key="appendix" text="lisa"/>
+ <l:gentext key="Article" text="Artikkel"/>
+ <l:gentext key="article" text="Artikkel"/>
+ <l:gentext key="Bibliography" text="Bibliograafia"/>
+ <l:gentext key="bibliography" text="Bibliograafia"/>
+ <l:gentext key="Book" text="Raamat"/>
+ <l:gentext key="book" text="Raamat"/>
+ <l:gentext key="CAUTION" text="ETTEVAATUST"/>
+ <l:gentext key="Caution" text="Ettevaatust"/>
+ <l:gentext key="caution" text="Ettevaatust"/>
+ <l:gentext key="Chapter" text="Peat&#252;kk"/>
+ <l:gentext key="chapter" text="peat&#252;kk"/>
+ <l:gentext key="Colophon" text="L&#245;pum&#228;rgis"/>
+ <l:gentext key="colophon" text="L&#245;pum&#228;rgis"/>
+ <l:gentext key="Copyright" text="Autori&#245;igus"/>
+ <l:gentext key="copyright" text="Autori&#245;igus"/>
+ <l:gentext key="Dedication" text="P&#252;hendus"/>
+ <l:gentext key="dedication" text="P&#252;hendus"/>
+ <l:gentext key="Edition" text="V&#228;ljaanne"/>
+ <l:gentext key="edition" text="V&#228;ljaanne"/>
+ <l:gentext key="Equation" text="Valem"/>
+ <l:gentext key="equation" text="Valem"/>
+ <l:gentext key="Example" text="N&#228;ide"/>
+ <l:gentext key="example" text="N&#228;ide"/>
+ <l:gentext key="Figure" text="Joonis"/>
+ <l:gentext key="figure" text="Joonis"/>
+ <l:gentext key="Glossary" text="S&#245;nastik"/>
+ <l:gentext key="glossary" text="S&#245;nastik"/>
+ <l:gentext key="GlossSee" text="Vt."/>
+ <l:gentext key="glosssee" text="Vt."/>
+ <l:gentext key="GlossSeeAlso" text="Vt. ka"/>
+ <l:gentext key="glossseealso" text="Vt. ka"/>
+ <l:gentext key="IMPORTANT" text="OLULINE"/>
+ <l:gentext key="Important" text="Oluline"/>
+ <l:gentext key="important" text="Oluline"/>
+ <l:gentext key="Index" text="Aineregister"/>
+ <l:gentext key="index" text="Aineregister"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Autori&#245;iguse m&#228;rge"/>
+ <l:gentext key="legalnotice" text="Autori&#245;iguse m&#228;rge"/>
+ <l:gentext key="MsgAud" text="Auditoorium"/>
+ <l:gentext key="msgaud" text="Auditoorium"/>
+ <l:gentext key="MsgLevel" text="Tase"/>
+ <l:gentext key="msglevel" text="Tase"/>
+ <l:gentext key="MsgOrig" text="Algallikas"/>
+ <l:gentext key="msgorig" text="Algallikas"/>
+ <l:gentext key="NOTE" text="M&#196;RKUS"/>
+ <l:gentext key="Note" text="M&#228;rkus"/>
+ <l:gentext key="note" text="M&#228;rkus"/>
+ <l:gentext key="Part" text="Osa"/>
+ <l:gentext key="part" text="Osa"/>
+ <l:gentext key="Preface" text="Eess&#245;na"/>
+ <l:gentext key="preface" text="Eess&#245;na"/>
+ <l:gentext key="Procedure" text="Protseduur"/>
+ <l:gentext key="procedure" text="Protseduur"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Avaldatud"/>
+ <l:gentext key="published" text="Avaldatud"/>
+ <l:gentext key="Question" text="K:"/>
+ <l:gentext key="question" text="K:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Viide"/>
+ <l:gentext key="reference" text="Viide"/>
+ <l:gentext key="RefName" text="Nimi"/>
+ <l:gentext key="refname" text="Nimi"/>
+ <l:gentext key="RefSection" text="L&#245;ik"/>
+ <l:gentext key="refsection" text="L&#245;ik"/>
+ <l:gentext key="RefSynopsisDiv" text="S&#252;nopsis"/>
+ <l:gentext key="refsynopsisdiv" text="S&#252;nopsis"/>
+ <l:gentext key="RevHistory" text="Vigade paranduste ajalugu"/>
+ <l:gentext key="revhistory" text="Vigade paranduste ajalugu"/>
+ <l:gentext key="Revision" text="Vigade parandus"/>
+ <l:gentext key="revision" text="Vigade parandus"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="section" text="l&#245;ik"/>
+ <l:gentext key="Section" text="Sektsioon"/>
+ <l:gentext key="See" text="Vt."/>
+ <l:gentext key="see" text="Vt."/>
+ <l:gentext key="SeeAlso" text="Vt. ka"/>
+ <l:gentext key="Seealso" text="Vt. ka"/>
+ <l:gentext key="seealso" text="Vt. ka"/>
+ <l:gentext key="Set" text="Sea"/>
+ <l:gentext key="set" text="Sea"/>
+ <l:gentext key="SetIndex" text="Sea indeks"/>
+ <l:gentext key="setindex" text="Sea indeks"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="k&#252;lgriba"/>
+ <l:gentext key="Step" text="Samm"/>
+ <l:gentext key="step" text="samm"/>
+ <l:gentext key="Table" text="Tabel"/>
+ <l:gentext key="table" text="Tabel"/>
+ <l:gentext key="TIP" text="VIHJE"/>
+ <l:gentext key="Tip" text="Vihje"/>
+ <l:gentext key="tip" text="Vihje"/>
+ <l:gentext key="WARNING" text="HOIATUS"/>
+ <l:gentext key="Warning" text="Hoiatus"/>
+ <l:gentext key="warning" text="Hoiatus"/>
+ <l:gentext key="and" text="ja"/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="Redaktsioon"/>
+ <l:gentext key="edited" text="Redaktsioon"/>
+ <l:gentext key="Editedby" text="Redaktsiooni autor(id)"/>
+ <l:gentext key="editedby" text="Redaktsiooni autor(id)"/>
+ <l:gentext key="in" text=""/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="mitte eksisteeriv element"/>
+ <l:gentext key="Notes" text="M&#228;rkused"/>
+ <l:gentext key="notes" text="M&#228;rkused"/>
+ <l:gentext key="Pgs" text="Lk."/>
+ <l:gentext key="pgs" text="Lk."/>
+ <l:gentext key="Revisedby" text="&#220;le vaadanud: "/>
+ <l:gentext key="revisedby" text="&#220;le vaadanud: "/>
+ <l:gentext key="TableNotes" text="M&#228;rkused"/>
+ <l:gentext key="tablenotes" text="M&#228;rkused"/>
+ <l:gentext key="TableofContents" text="Sisukord"/>
+ <l:gentext key="tableofcontents" text="Sisukord"/>
+ <l:gentext key="unexpectedelementname" text="Ootamatu elemendi nimi"/>
+ <l:gentext key="unsupported" text="toetuseta"/>
+ <l:gentext key="xrefto" text="viide"/>
+ <l:gentext key="listofequations" text="Valemite nimekiri"/>
+ <l:gentext key="ListofEquations" text="Valemite nimekiri"/>
+ <l:gentext key="ListofExamples" text="N&#228;idete nimekiri"/>
+ <l:gentext key="listofexamples" text="N&#228;idete nimekiri"/>
+ <l:gentext key="ListofFigures" text="Jooniste nimekiri"/>
+ <l:gentext key="listoffigures" text="Jooniste nimekiri"/>
+ <l:gentext key="listoftables" text="Tabelite nimekiri"/>
+ <l:gentext key="ListofTables" text="Tabelite nimekiri"/>
+ <l:gentext key="ListofUnknown" text="Tundmatute nimekiri"/>
+ <l:gentext key="listofunknown" text="Tundmatute nimekiri"/>
+ <l:gentext key="nav-home" text="Koju"/>
+ <l:gentext key="nav-next" text="J&#228;rgmine"/>
+ <l:gentext key="nav-next-sibling" text="Kiiresti edasi"/>
+ <l:gentext key="nav-prev" text="Eelmine"/>
+ <l:gentext key="nav-prev-sibling" text="Kiiresti tagasi"/>
+ <l:gentext key="nav-up" text="&#220;les"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Lisa %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Peat&#252;kk %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Valem %n. %t"/>
+ <l:template name="example" text="N&#228;ide %n. %t"/>
+ <l:template name="figure" text="Joonis %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Osa %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Protseduur&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Lisa %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="Peat&#252;kk %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="V:&#160;%n"/>
+ <l:template name="appendix" text="Lisa %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Peat&#252;kk %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Valem&#160;%n"/>
+ <l:template name="example" text="N&#228;ide %n. %t"/>
+ <l:template name="figure" text="Joonis %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ <l:template name="part" text="Osa %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Protseduur&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="K:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="K:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Sektsioon %n"/>
+ <l:template name="sect2" text="Sektsioon %n"/>
+ <l:template name="sect3" text="Sektsioon %n"/>
+ <l:template name="sect4" text="Sektsioon %n"/>
+ <l:template name="sect5" text="Sektsioon %n"/>
+ <l:template name="section" text="Sektsioon %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" ja "/>
+ <l:template name="seplast" text=", ja "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Vt. "/>
+ <l:template name="seealso" text="Vt. ka "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Auditoorium: "/>
+ <l:template name="MsgLevel" text="Tase: "/>
+ <l:template name="MsgOrig" text="Algallikas: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/eu.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/eu.xml
new file mode 100644
index 0000000..7bb2ba5
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/eu.xml
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="eu" english-language-name="Basque">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Laburpena"/>
+ <l:gentext key="abstract" text="Laburpena"/>
+ <l:gentext key="Answer" text="E:"/>
+ <l:gentext key="answer" text="E:"/>
+ <l:gentext key="Appendix" text="Eranskina"/>
+ <l:gentext key="appendix" text="eranskina"/>
+ <l:gentext key="Article" text="Artikulua"/>
+ <l:gentext key="article" text="Artikulua"/>
+ <l:gentext key="Bibliography" text="Bibliografia"/>
+ <l:gentext key="bibliography" text="Bibliografia"/>
+ <l:gentext key="Book" text="Liburua"/>
+ <l:gentext key="book" text="Liburua"/>
+ <l:gentext key="CAUTION" text="KONTUZ"/>
+ <l:gentext key="Caution" text="Kontuz"/>
+ <l:gentext key="caution" text="Kontuz"/>
+ <l:gentext key="Chapter" text="Atala"/>
+ <l:gentext key="chapter" text="atala"/>
+ <l:gentext key="Colophon" text="Azken ohar"/>
+ <l:gentext key="colophon" text="Azken ohar"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Eskaintza"/>
+ <l:gentext key="dedication" text="Eskaintza"/>
+ <l:gentext key="Edition" text="Edizioa"/>
+ <l:gentext key="edition" text="Edizioa"/>
+ <l:gentext key="Equation" text="Ekuazioa"/>
+ <l:gentext key="equation" text="Ekuazioa"/>
+ <l:gentext key="Example" text="Adibidea"/>
+ <l:gentext key="example" text="Adibidea"/>
+ <l:gentext key="Figure" text="Irudia"/>
+ <l:gentext key="figure" text="Irudia"/>
+ <l:gentext key="Glossary" text="Glosarioa"/>
+ <l:gentext key="glossary" text="Glosarioa"/>
+ <l:gentext key="GlossSee" text="Ikus"/>
+ <l:gentext key="glosssee" text="Ikus"/>
+ <l:gentext key="GlossSeeAlso" text="Ikus baita ere"/>
+ <l:gentext key="glossseealso" text="Ikus baita ere"/>
+ <l:gentext key="IMPORTANT" text="GARRANTZITSUA"/>
+ <l:gentext key="important" text="Garrantzitsua"/>
+ <l:gentext key="Important" text="Garrantzitsua"/>
+ <l:gentext key="Index" text="Indizea"/>
+ <l:gentext key="index" text="Indizea"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Legezko abisua"/>
+ <l:gentext key="legalnotice" text="Legezko abisua"/>
+ <l:gentext key="MsgAud" text="Audientzia"/>
+ <l:gentext key="msgaud" text="Audientzia"/>
+ <l:gentext key="MsgLevel" text="Maila"/>
+ <l:gentext key="msglevel" text="Maila"/>
+ <l:gentext key="MsgOrig" text="Jatorria"/>
+ <l:gentext key="msgorig" text="Jatorria"/>
+ <l:gentext key="NOTE" text="OHARRA"/>
+ <l:gentext key="Note" text="Oharra"/>
+ <l:gentext key="note" text="Oharra"/>
+ <l:gentext key="Part" text="Zatia"/>
+ <l:gentext key="part" text="Zatia"/>
+ <l:gentext key="Preface" text="Hitzaurrea"/>
+ <l:gentext key="preface" text="Hitzaurrea"/>
+ <l:gentext key="Procedure" text="Prozedura"/>
+ <l:gentext key="procedure" text="Prozedura"/>
+ <l:gentext key="ProductionSet" text="Ekoizpena"/>
+ <l:gentext key="Published" text="Argitaratua"/>
+ <l:gentext key="published" text="Argitaratua"/>
+ <l:gentext key="Question" text="Galdera"/>
+ <l:gentext key="question" text="galdera"/>
+ <l:gentext key="RefEntry" text="Sarrera"/>
+ <l:gentext key="refentry" text="Sarrera"/>
+ <l:gentext key="Reference" text="Erreferentzia"/>
+ <l:gentext key="reference" text="Erreferentzia"/>
+ <l:gentext key="RefName" text="Izena"/>
+ <l:gentext key="refname" text="Izena"/>
+ <l:gentext key="RefSection" text="Sekzioa"/>
+ <l:gentext key="refsection" text="sekzioa"/>
+ <l:gentext key="RefSynopsisDiv" text="Laburpena"/>
+ <l:gentext key="refsynopsisdiv" text="Laburpena"/>
+ <l:gentext key="RevHistory" text="Berrikuspenaren historia"/>
+ <l:gentext key="revhistory" text="Berrikuspenaren historia"/>
+ <l:gentext key="revision" text="Berrikuspena"/>
+ <l:gentext key="Revision" text="Berrikuspena"/>
+ <l:gentext key="sect1" text="Atala"/>
+ <l:gentext key="sect2" text="Atala"/>
+ <l:gentext key="sect3" text="Atala"/>
+ <l:gentext key="sect4" text="Atala"/>
+ <l:gentext key="sect5" text="Atala"/>
+ <l:gentext key="section" text="Atala"/>
+ <l:gentext key="Section" text="Atala"/>
+ <l:gentext key="See" text="Ikus"/>
+ <l:gentext key="see" text="Ikus"/>
+ <l:gentext key="SeeAlso" text="Ikus baita ere"/>
+ <l:gentext key="seealso" text="Ikus baita ere"/>
+ <l:gentext key="Seealso" text="Ikus baita ere"/>
+ <l:gentext key="set" text="Konfiguratu"/>
+ <l:gentext key="Set" text="Konfiguratu"/>
+ <l:gentext key="setindex" text="Konfiguratu indizea"/>
+ <l:gentext key="SetIndex" text="Konfiguratu indizea"/>
+ <l:gentext key="Sidebar" text="Alboko barra"/>
+ <l:gentext key="sidebar" text="alboko barra"/>
+ <l:gentext key="step" text="urratsa"/>
+ <l:gentext key="Step" text="Urratsa"/>
+ <l:gentext key="Table" text="Taula"/>
+ <l:gentext key="table" text="Taula"/>
+ <l:gentext key="tip" text="Iradokizuna"/>
+ <l:gentext key="TIP" text="IRADOKIZUNA"/>
+ <l:gentext key="Tip" text="Iradokizuna"/>
+ <l:gentext key="Warning" text="Abisua"/>
+ <l:gentext key="warning" text="Abisua"/>
+ <l:gentext key="WARNING" text="ABISUA"/>
+ <l:gentext key="and" text="eta"/>
+ <l:gentext key="by" text="Honek"/>
+ <l:gentext key="Edited" text="editatua"/>
+ <l:gentext key="edited" text="editatua"/>
+ <l:gentext key="Editedby" text="Honek editatua"/>
+ <l:gentext key="editedby" text="Honek editatua"/>
+ <l:gentext key="in" text="non"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="lehendik ez dagoen elementua"/>
+ <l:gentext key="notes" text="Oharrak"/>
+ <l:gentext key="Notes" text="Oharrak"/>
+ <l:gentext key="Pgs" text="Orr."/>
+ <l:gentext key="pgs" text="Orr."/>
+ <l:gentext key="Revisedby" text="Berrikuspena: "/>
+ <l:gentext key="revisedby" text="Berrikuspena: "/>
+ <l:gentext key="TableNotes" text="Oharrak"/>
+ <l:gentext key="tablenotes" text="Oharrak"/>
+ <l:gentext key="TableofContents" text="Edukien aurkibidea"/>
+ <l:gentext key="tableofcontents" text="Edukien aurkibidea"/>
+ <l:gentext key="unexpectedelementname" text="Ustekabeko elemetu-izena"/>
+ <l:gentext key="unsupported" text="onartzen ez den"/>
+ <l:gentext key="xrefto" text="xref honi"/>
+ <l:gentext key="listofequations" text="Ekuazioen zerrenda"/>
+ <l:gentext key="ListofEquations" text="Ekuazioen zerrenda"/>
+ <l:gentext key="ListofExamples" text="Adibideen zerrenda"/>
+ <l:gentext key="listofexamples" text="Adibideen zerrenda"/>
+ <l:gentext key="ListofFigures" text="Irudien zerrenda"/>
+ <l:gentext key="listoffigures" text="Irudien zerrenda"/>
+ <l:gentext key="listoftables" text="Taulen zerrenda"/>
+ <l:gentext key="ListofTables" text="Taulen zerrenda"/>
+ <l:gentext key="ListofUnknown" text="Ezezagunen zerrenda"/>
+ <l:gentext key="listofunknown" text="Ezazagunen zerrenda"/>
+ <l:gentext key="nav-home" text="Etxea"/>
+ <l:gentext key="nav-next" text="Hurrengoa"/>
+ <l:gentext key="nav-next-sibling" text="Aurreratze azkarra"/>
+ <l:gentext key="nav-prev" text="Aurrekoa"/>
+ <l:gentext key="nav-prev-sibling" text="Atzeratze azkarra"/>
+ <l:gentext key="nav-up" text="Gora"/>
+ <l:gentext key="sectioncalled" text="honela deritzon atala"/>
+ <l:gentext key="Draft" text="Zirriborroa"/>
+ <l:gentext key="above" text="goian"/>
+ <l:gentext key="below" text="behean"/>
+ <l:gentext key="index symbols" text="Ikurrak"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Eranskina %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Atala %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ekuazioa %n. %t"/>
+ <l:template name="example" text="Adibidea %n. %t"/>
+ <l:template name="figure" text="Irudia %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Zatia %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Prozedura %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Ekoizpena %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Taula %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Eranskina %n. %t"/>
+ <l:template name="chapter" text="Atala %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="E:&#160;%n"/>
+ <l:template name="appendix" text="Eranskina %n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Atala %n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ekuazioa&#160;%n"/>
+ <l:template name="example" text="Adibidea %n"/>
+ <l:template name="figure" text="Irudia %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Zatia %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Prozedura&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Galdera&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Galdera&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Taula %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="section" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="honela deritzon atala &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Atala %n"/>
+ <l:template name="refsection" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="honela deritzon atala &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Atala %n"/>
+ <l:template name="sect2" text="Atala %n"/>
+ <l:template name="sect3" text="Atala %n"/>
+ <l:template name="sect4" text="Atala %n"/>
+ <l:template name="sect5" text="Atala %n"/>
+ <l:template name="section" text="Atala %n"/>
+ <l:template name="simplesect" text="honela deritzon atala &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" eta "/>
+ <l:template name="seplast" text=", eta "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Ikus "/>
+ <l:template name="seealso" text="Ikus baita ere "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audientzia: "/>
+ <l:template name="MsgLevel" text="Maila: "/>
+ <l:template name="MsgOrig" text="Jatorria: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fi.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fi.xml
new file mode 100644
index 0000000..5582987
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fi.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fi" english-language-name="Finnish">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Lyhennelm&#228;"/>
+ <l:gentext key="abstract" text="Lyhennelm&#228;"/>
+ <l:gentext key="Answer" text="A:"/>
+ <l:gentext key="answer" text="A:"/>
+ <l:gentext key="Appendix" text="Liite"/>
+ <l:gentext key="appendix" text="liite"/>
+ <l:gentext key="Article" text="Artikkeli"/>
+ <l:gentext key="article" text="Artikkeli"/>
+ <l:gentext key="Bibliography" text="L&#228;hteet"/>
+ <l:gentext key="bibliography" text="L&#228;hteet"/>
+ <l:gentext key="Book" text="Kirja"/>
+ <l:gentext key="book" text="Kirja"/>
+ <l:gentext key="CAUTION" text="VARO"/>
+ <l:gentext key="Caution" text="Varo"/>
+ <l:gentext key="caution" text="Varo"/>
+ <l:gentext key="Chapter" text="Luku"/>
+ <l:gentext key="chapter" text="luku"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Omistus"/>
+ <l:gentext key="dedication" text="Omistus"/>
+ <l:gentext key="Edition" text="Edition"/>
+ <l:gentext key="edition" text="Edition"/>
+ <l:gentext key="Equation" text="Kaava"/>
+ <l:gentext key="equation" text="Kaava"/>
+ <l:gentext key="Example" text="Esimerkki"/>
+ <l:gentext key="example" text="Esimerkki"/>
+ <l:gentext key="Figure" text="Kuva"/>
+ <l:gentext key="figure" text="Kuva"/>
+ <l:gentext key="Glossary" text="Sanasto"/>
+ <l:gentext key="glossary" text="Sanasto"/>
+ <l:gentext key="GlossSee" text="Katso"/>
+ <l:gentext key="glosssee" text="Katso"/>
+ <l:gentext key="GlossSeeAlso" text="Katso my&#246;s"/>
+ <l:gentext key="glossseealso" text="Katso my&#246;s"/>
+ <l:gentext key="IMPORTANT" text="T&#196;RKE&#196;&#196;"/>
+ <l:gentext key="Important" text="T&#228;rke&#228;&#228;"/>
+ <l:gentext key="important" text="T&#228;rke&#228;&#228;"/>
+ <l:gentext key="Index" text="Indeksi"/>
+ <l:gentext key="index" text="Indeksi"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text="Yleis&#246;"/>
+ <l:gentext key="msgaud" text="Yleis&#246;"/>
+ <l:gentext key="MsgLevel" text="Taso"/>
+ <l:gentext key="msglevel" text="Taso"/>
+ <l:gentext key="MsgOrig" text="Alkuper&#228;"/>
+ <l:gentext key="msgorig" text="Alkuper&#228;"/>
+ <l:gentext key="NOTE" text="HUOMAA"/>
+ <l:gentext key="Note" text="Huomaa"/>
+ <l:gentext key="note" text="Huomaa"/>
+ <l:gentext key="Part" text="Osa"/>
+ <l:gentext key="part" text="Osa"/>
+ <l:gentext key="Preface" text="Esipuhe"/>
+ <l:gentext key="preface" text="Esipuhe"/>
+ <l:gentext key="Procedure" text="Aliohjelma"/>
+ <l:gentext key="procedure" text="Aliohjelma"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Julkaistu"/>
+ <l:gentext key="published" text="Julkaistu"/>
+ <l:gentext key="Question" text="Q:"/>
+ <l:gentext key="question" text="Q:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="L&#228;hdeluettelo"/>
+ <l:gentext key="reference" text="L&#228;hdeluettelo"/>
+ <l:gentext key="RefName" text="Nimi"/>
+ <l:gentext key="refname" text="Nimi"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Versiohistoria"/>
+ <l:gentext key="revhistory" text="Versiohistoria"/>
+ <l:gentext key="Revision" text="Versio"/>
+ <l:gentext key="revision" text="Versio"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Kohta"/>
+ <l:gentext key="section" text="kohta"/>
+ <l:gentext key="See" text="Katso"/>
+ <l:gentext key="see" text="Katso"/>
+ <l:gentext key="SeeAlso" text="Katso my&#246;s"/>
+ <l:gentext key="Seealso" text="Katso my&#246;s"/>
+ <l:gentext key="seealso" text="Katso my&#246;s"/>
+ <l:gentext key="Set" text="Kokoelma"/>
+ <l:gentext key="set" text="Kokoelma"/>
+ <l:gentext key="SetIndex" text="Kokoelman indeksi"/>
+ <l:gentext key="setindex" text="Kokoelman indeksi"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sivupalkki"/>
+ <l:gentext key="Step" text="Step"/>
+ <l:gentext key="step" text="step"/>
+ <l:gentext key="Table" text="Taulu"/>
+ <l:gentext key="table" text="Taulu"/>
+ <l:gentext key="TIP" text="VIHJE"/>
+ <l:gentext key="Tip" text="Vihje"/>
+ <l:gentext key="tip" text="Vihje"/>
+ <l:gentext key="WARNING" text="VAROITUS"/>
+ <l:gentext key="Warning" text="Varoitus"/>
+ <l:gentext key="warning" text="Varoitus"/>
+ <l:gentext key="and" text="ja"/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="Toim."/>
+ <l:gentext key="edited" text="Toim."/>
+ <l:gentext key="Editedby" text="Toimittanut"/>
+ <l:gentext key="editedby" text="Toimittanut"/>
+ <l:gentext key="in" text="teoksessa"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="elementti&#228; ei ole olemassa"/>
+ <l:gentext key="notes" text=""/>
+ <l:gentext key="Notes" text=""/>
+ <l:gentext key="Pgs" text="Sivut"/>
+ <l:gentext key="pgs" text="Sivut"/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text=""/>
+ <l:gentext key="tablenotes" text=""/>
+ <l:gentext key="TableofContents" text="Sis&#228;llys"/>
+ <l:gentext key="tableofcontents" text="Sis&#228;llys"/>
+ <l:gentext key="unexpectedelementname" text="Odottamaton elementin nimi"/>
+ <l:gentext key="unsupported" text="ei tueta"/>
+ <l:gentext key="xrefto" text="xref johonkin"/>
+ <l:gentext key="listofequations" text="Luettelo esimerkeist&#228;"/>
+ <l:gentext key="ListofEquations" text="Luettelo esimerkeist&#228;"/>
+ <l:gentext key="ListofExamples" text="Luettelo esimerkeist&#228;"/>
+ <l:gentext key="listofexamples" text="Luettelo esimerkeist&#228;"/>
+ <l:gentext key="ListofFigures" text="Luettelo kuvista"/>
+ <l:gentext key="listoffigures" text="Luettelo kuvista"/>
+ <l:gentext key="listoftables" text="Luettelo tauluista"/>
+ <l:gentext key="ListofTables" text="Luettelo tauluista"/>
+ <l:gentext key="ListofUnknown" text="Luettelo tuntemattomista"/>
+ <l:gentext key="listofunknown" text="Luettelo tuntemattomista"/>
+ <l:gentext key="nav-home" text="Alkuun"/>
+ <l:gentext key="nav-next" text="Seuraava"/>
+ <l:gentext key="nav-next-sibling" text="Nopeasti eteenp&#228;in"/>
+ <l:gentext key="nav-prev" text="Edellinen"/>
+ <l:gentext key="nav-prev-sibling" text="Nopeasti taaksep&#228;in"/>
+ <l:gentext key="nav-up" text="Yl&#246;s"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Liite %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Luku %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Kaava %n. %t"/>
+ <l:template name="example" text="Esimerkki %n. %t"/>
+ <l:template name="figure" text="Kuva %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Osa %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Aliohjelma&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Taulu %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Liite %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Luku %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="A:&#160;%n"/>
+ <l:template name="appendix" text="Liite %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Luku %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Kaava&#160;%n"/>
+ <l:template name="example" text="Esimerkki %n. %t"/>
+ <l:template name="figure" text="Kuva %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Osa %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Aliohjelma&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Q:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Q:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Taulu %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Kohta %n"/>
+ <l:template name="sect2" text="Kohta %n"/>
+ <l:template name="sect3" text="Kohta %n"/>
+ <l:template name="sect4" text="Kohta %n"/>
+ <l:template name="sect5" text="Kohta %n"/>
+ <l:template name="section" text="Kohta %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" ja "/>
+ <l:template name="seplast" text=", ja "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Katso "/>
+ <l:template name="seealso" text="Katso my&#246;s "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Yleis&#246;: "/>
+ <l:template name="MsgLevel" text="Taso: "/>
+ <l:template name="MsgOrig" text="Alkuper&#228;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fr.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fr.xml
new file mode 100644
index 0000000..8d74773
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/fr.xml
@@ -0,0 +1,458 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fr" english-language-name="French">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="R&#233;sum&#233;"/>
+ <l:gentext key="abstract" text="R&#233;sum&#233;"/>
+ <l:gentext key="Answer" text="R&#160;:"/>
+ <l:gentext key="answer" text="R&#160;:"/>
+ <l:gentext key="Appendix" text="Annexe"/>
+ <l:gentext key="appendix" text="annexe"/>
+ <l:gentext key="Article" text="Article"/>
+ <l:gentext key="article" text="Article"/>
+ <l:gentext key="Bibliography" text="Bibliographie"/>
+ <l:gentext key="bibliography" text="Bibliographie"/>
+ <l:gentext key="Book" text="Livre"/>
+ <l:gentext key="book" text="Livre"/>
+ <l:gentext key="Caution" text="Attention"/>
+ <l:gentext key="caution" text="Attention"/>
+ <l:gentext key="CAUTION" text="ATTENTION"/>
+ <l:gentext key="Chapter" text="Chapitre"/>
+ <l:gentext key="chapter" text="chapitre"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="D&#233;dicace"/>
+ <l:gentext key="dedication" text="D&#233;dicace"/>
+ <l:gentext key="Edition" text="&#201;dition"/>
+ <l:gentext key="edition" text="&#201;dition"/>
+ <l:gentext key="Equation" text="&#201;quation"/>
+ <l:gentext key="equation" text="&#201;quation"/>
+ <l:gentext key="Example" text="Exemple"/>
+ <l:gentext key="example" text="Exemple"/>
+ <l:gentext key="Figure" text="Figure"/>
+ <l:gentext key="figure" text="Figure"/>
+ <l:gentext key="Glossary" text="Glossaire"/>
+ <l:gentext key="glossary" text="Glossaire"/>
+ <l:gentext key="GlossSee" text="Voir"/>
+ <l:gentext key="glosssee" text="Voir"/>
+ <l:gentext key="GlossSeeAlso" text="Voir aussi"/>
+ <l:gentext key="glossseealso" text="Voir aussi"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANT"/>
+ <l:gentext key="Important" text="Important"/>
+ <l:gentext key="important" text="Important"/>
+ <l:gentext key="Index" text="Index"/>
+ <l:gentext key="index" text="Index"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Note l&#233;gale"/>
+ <l:gentext key="legalnotice" text="Note l&#233;gale"/>
+ <l:gentext key="MsgAud" text="Public vis&#233;"/>
+ <l:gentext key="msgaud" text="Public vis&#233;"/>
+ <l:gentext key="MsgLevel" text="Niveau"/>
+ <l:gentext key="msglevel" text="Niveau"/>
+ <l:gentext key="MsgOrig" text="Origine"/>
+ <l:gentext key="msgorig" text="Origine"/>
+ <l:gentext key="Note" text="Note"/>
+ <l:gentext key="NOTE" text="NOTE"/>
+ <l:gentext key="note" text="NOTE"/>
+ <l:gentext key="Part" text="Partie"/>
+ <l:gentext key="part" text="Partie"/>
+ <l:gentext key="Preface" text="Pr&#233;face"/>
+ <l:gentext key="preface" text="Pr&#233;face"/>
+ <l:gentext key="Procedure" text="Proc&#233;dure"/>
+ <l:gentext key="procedure" text="Proc&#233;dure"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Publi&#233;"/>
+ <l:gentext key="published" text="Publi&#233;"/>
+ <l:gentext key="Question" text="Q&#160;:"/>
+ <l:gentext key="question" text="Q&#160;:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="R&#233;f&#233;rence"/>
+ <l:gentext key="reference" text="R&#233;f&#233;rence"/>
+ <l:gentext key="RefName" text="Nom"/>
+ <l:gentext key="refname" text="Nom"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Historique des versions"/>
+ <l:gentext key="revhistory" text="Historique des versions"/>
+ <l:gentext key="Revision" text="Version"/>
+ <l:gentext key="revision" text="Version"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Section"/>
+ <l:gentext key="section" text="Section"/>
+ <l:gentext key="see" text="Voir"/>
+ <l:gentext key="See" text="Voir"/>
+ <l:gentext key="seealso" text="Voir Aussi"/>
+ <l:gentext key="SeeAlso" text="Voir Aussi"/>
+ <l:gentext key="Seealso" text="Voir aussi"/>
+ <l:gentext key="Set" text="Ensemble"/>
+ <l:gentext key="set" text="Ensemble"/>
+ <l:gentext key="setindex" text="Index"/>
+ <l:gentext key="SetIndex" text="Index"/>
+ <l:gentext key="sidebar" text=""/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="Step" text="&#201;tape"/>
+ <l:gentext key="step" text="&#233;tape"/>
+ <l:gentext key="table" text="Tableau"/>
+ <l:gentext key="Table" text="Tableau"/>
+ <l:gentext key="tip" text="ASTUCE"/>
+ <l:gentext key="TIP" text="ASTUCE"/>
+ <l:gentext key="Tip" text="Astuce"/>
+ <l:gentext key="Warning" text="Avertissement"/>
+ <l:gentext key="WARNING" text="AVERTISSEMENT"/>
+ <l:gentext key="warning" text="AVERTISSEMENT"/>
+ <l:gentext key="and" text="et"/>
+ <l:gentext key="by" text="par"/>
+ <l:gentext key="Edited" text="Publi&#233;"/>
+ <l:gentext key="edited" text="Publi&#233;"/>
+ <l:gentext key="Editedby" text="Publi&#233; par"/>
+ <l:gentext key="editedby" text="Publi&#233; par"/>
+ <l:gentext key="in" text="dans"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="Cet &#233;l&#233;ment n'existe pas"/>
+ <l:gentext key="notes" text="Notes"/>
+ <l:gentext key="Notes" text="Notes"/>
+ <l:gentext key="Pgs" text="Pages"/>
+ <l:gentext key="pgs" text="Pages"/>
+ <l:gentext key="Revisedby" text="Revu par&#160;: "/>
+ <l:gentext key="revisedby" text="Revu par&#160;: "/>
+ <l:gentext key="TableNotes" text="Remarques"/>
+ <l:gentext key="tablenotes" text="Remarques"/>
+ <l:gentext key="TableofContents" text="Table des mati&#232;res"/>
+ <l:gentext key="tableofcontents" text="Table des mati&#232;res"/>
+ <l:gentext key="unexpectedelementname" text="Nom d'&#233;l&#233;ment non attendu"/>
+ <l:gentext key="unsupported" text="Non reconnu par le syst&#232;me"/>
+ <l:gentext key="xrefto" text="R&#233;f&#233;rence vers"/>
+ <l:gentext key="listofequations" text="Liste des &#233;quations"/>
+ <l:gentext key="ListofEquations" text="Liste des &#233;quations"/>
+ <l:gentext key="ListofExamples" text="Liste des exemples"/>
+ <l:gentext key="listofexamples" text="Liste des exemples"/>
+ <l:gentext key="ListofFigures" text="Liste des illustrations"/>
+ <l:gentext key="listoffigures" text="Liste des illustrations"/>
+ <l:gentext key="listoftables" text="Liste des tableaux"/>
+ <l:gentext key="ListofTables" text="Liste des tableaux"/>
+ <l:gentext key="ListofUnknown" text="Liste des inconnues"/>
+ <l:gentext key="listofunknown" text="Liste des inconnues"/>
+ <l:gentext key="nav-home" text="Sommaire"/>
+ <l:gentext key="nav-next" text="Suivant"/>
+ <l:gentext key="nav-next-sibling" text="Avance rapide"/>
+ <l:gentext key="nav-prev" text="Pr&#233;c&#233;dent"/>
+ <l:gentext key="nav-prev-sibling" text="Arri&#232;re rapide"/>
+ <l:gentext key="nav-up" text="Niveau sup&#233;rieur"/>
+ <l:gentext key="sectioncalled" text="la section intitul&#233;e"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symboles"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#171;"/>
+ <l:dingbat key="endquote" text="&#187;"/>
+ <l:dingbat key="singlestartquote" text="&#8249;"/>
+ <l:dingbat key="singleendquote" text="&#8250;"/>
+ <l:dingbat key="nestedstartquote" text="&#171;"/>
+ <l:dingbat key="nestedendquote" text="&#187;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Titres de l'appendice (vide)"/>
+ <l:template name="article" text="Titres de l'article (vide)"/>
+ <l:template name="bibliodiv" text="Titres du bibliodiv (vide)"/>
+ <l:template name="book" text="Titre du livre(vide)"/>
+ <l:template name="chapter" text="Titres du chapitre (vide)"/>
+ <l:template name="columns" text="Colonnes"/>
+ <l:template name="draftarea" text="Zone Brouillon"/>
+ <l:template name="edit-attrs" text="&#201;diter les attributs des &#233;l&#233;ments correspondants"/>
+ <l:template name="footnote" text="Note de bas de page"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Titres de la pr&#233;face (vide)"/>
+ <l:template name="part" text="Titre de la partie (vide)"/>
+ <l:template name="section" text="Titres de la section (vide)"/>
+ <l:template name="sect1" text="Titres de la section (vide)"/>
+ <l:template name="sect2" text="Titres de la section (vide)"/>
+ <l:template name="sect3" text="Titres de la section (vide)"/>
+ <l:template name="sect4" text="Titres de la section (vide)"/>
+ <l:template name="sect5" text="Titres de la section (vide)"/>
+ <l:template name="set" text="Appliquer les titres (vide)"/>
+ <l:template name="title" text="Titre: "/>
+ <l:template name="titles" text="Pas d'&#233;l&#233;ment Titlepage"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="reference" text="Reference (empty)"/>
+ <l:template name="refsection" text="Refsection (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Annexe %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Chapitre %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#201;quation %n. %t"/>
+ <l:template name="example" text="Exemple %n. %t"/>
+ <l:template name="figure" text="Figure %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Partie %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Proc&#233;dure %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tableau %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Annexe %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="Chapitre %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="R&#160;:&#160;%n"/>
+ <l:template name="appendix" text="Annexe %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Chapitre %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#201;quation&#160;%n"/>
+ <l:template name="example" text="Exemple %n. %t"/>
+ <l:template name="figure" text="Figure %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Partie %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Proc&#233;dure&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Q&#160;:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Q&#160;:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tableau %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="section" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Section %n"/>
+ <l:template name="refsection" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Section %n"/>
+ <l:template name="sect2" text="Section %n"/>
+ <l:template name="sect3" text="Section %n"/>
+ <l:template name="sect4" text="Section %n"/>
+ <l:template name="sect5" text="Section %n"/>
+ <l:template name="section" text="Section %n"/>
+ <l:template name="simplesect" text="la section intitul&#233;e &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" et "/>
+ <l:template name="seplast" text=", et "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Voir "/>
+ <l:template name="seealso" text="Voir aussi "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Public vis&#233;: "/>
+ <l:template name="MsgLevel" text="Niveau: "/>
+ <l:template name="MsgOrig" text="Origine: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/he.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/he.xml
new file mode 100644
index 0000000..68f47ad
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/he.xml
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="he" english-language-name="Hebrew">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#1505;&#1497;&#1499;&#1493;&#1501;"/>
+ <l:gentext key="abstract" text="&#1505;&#1497;&#1499;&#1493;&#1501;"/>
+ <l:gentext key="Answer" text="&#1514;:"/>
+ <l:gentext key="answer" text="&#1514;:"/>
+ <l:gentext key="Appendix" text="&#1504;&#1505;&#1508;&#1495;"/>
+ <l:gentext key="appendix" text="&#1504;&#1505;&#1508;&#1495;"/>
+ <l:gentext key="Article" text="&#1502;&#1488;&#1502;&#1512;"/>
+ <l:gentext key="article" text="&#1502;&#1488;&#1502;&#1512;"/>
+ <l:gentext key="Bibliography" text="&#1489;&#1497;&#1489;&#1500;&#1497;&#1493;&#1490;&#1512;&#1508;&#1497;&#1492;"/>
+ <l:gentext key="bibliography" text="&#1489;&#1497;&#1489;&#1500;&#1497;&#1493;&#1490;&#1512;&#1508;&#1497;&#1492;"/>
+ <l:gentext key="Book" text="&#1505;&#1508;&#1512;"/>
+ <l:gentext key="book" text="&#1505;&#1508;&#1512;"/>
+ <l:gentext key="CAUTION" text="&#1488;&#1494;&#1492;&#1512;&#1492;"/>
+ <l:gentext key="Caution" text="&#1488;&#1494;&#1492;&#1512;&#1492;"/>
+ <l:gentext key="caution" text="&#1488;&#1494;&#1492;&#1512;&#1492;"/>
+ <l:gentext key="Chapter" text="&#1508;&#1512;&#1511;"/>
+ <l:gentext key="chapter" text="&#1508;&#1512;&#1511;"/>
+ <l:gentext key="Colophon" text="&#1511;&#1493;&#1500;&#1493;&#1508;&#1493;&#1503;"/>
+ <l:gentext key="colophon" text="&#1511;&#1493;&#1500;&#1493;&#1508;&#1493;&#1503;"/>
+ <l:gentext key="Copyright" text="&#1494;&#1499;&#1493;&#1497;&#1493;&#1514; &#1497;&#1493;&#1510;&#1512;&#1497;&#1501;"/>
+ <l:gentext key="copyright" text="&#1494;&#1499;&#1493;&#1497;&#1493;&#1514; &#1497;&#1493;&#1510;&#1512;&#1497;&#1501;"/>
+ <l:gentext key="Dedication" text="&#1492;&#1511;&#1491;&#1513;&#1492;"/>
+ <l:gentext key="dedication" text="&#1492;&#1511;&#1491;&#1513;&#1492;"/>
+ <l:gentext key="Edition" text="&#1502;&#1492;&#1491;&#1493;&#1512;&#1492;"/>
+ <l:gentext key="edition" text="&#1502;&#1492;&#1491;&#1493;&#1512;&#1492;"/>
+ <l:gentext key="Equation" text="&#1502;&#1513;&#1493;&#1493;&#1488;&#1492;"/>
+ <l:gentext key="equation" text="&#1502;&#1513;&#1493;&#1493;&#1488;&#1492;"/>
+ <l:gentext key="Example" text="&#1491;&#1493;&#1490;&#1502;&#1492;"/>
+ <l:gentext key="example" text="&#1491;&#1493;&#1490;&#1502;&#1492;"/>
+ <l:gentext key="Figure" text="&#1488;&#1497;&#1493;&#1512;"/>
+ <l:gentext key="figure" text="&#1488;&#1497;&#1493;&#1512;"/>
+ <l:gentext key="Glossary" text="&#1502;&#1497;&#1500;&#1493;&#1503; &#1502;&#1493;&#1504;&#1495;&#1497;&#1501;"/>
+ <l:gentext key="glossary" text="&#1502;&#1497;&#1500;&#1493;&#1503; &#1502;&#1493;&#1504;&#1495;&#1497;&#1501;"/>
+ <l:gentext key="GlossSee" text="&#1512;&#1488;&#1492;"/>
+ <l:gentext key="glosssee" text="&#1512;&#1488;&#1492;"/>
+ <l:gentext key="GlossSeeAlso" text="&#1512;&#1488;&#1492; &#1490;&#1501;"/>
+ <l:gentext key="glossseealso" text="&#1512;&#1488;&#1492; &#1490;&#1501;"/>
+ <l:gentext key="IMPORTANT" text="&#1495;&#1513;&#1493;&#1489;"/>
+ <l:gentext key="important" text="&#1495;&#1513;&#1493;&#1489;"/>
+ <l:gentext key="Important" text="&#1495;&#1513;&#1493;&#1489;"/>
+ <l:gentext key="Index" text="&#1488;&#1497;&#1504;&#1491;&#1511;&#1505;"/>
+ <l:gentext key="index" text="&#1488;&#1497;&#1504;&#1491;&#1511;&#1505;"/>
+ <l:gentext key="ISBN" text="&#1502;&#1505;&#1508;&#1512; &#1505;&#1508;&#1512; &#1505;&#1496;&#1504;&#1491;&#1512;&#1496;&#1497; &#1489;&#1497;&#1504;&#1500;&#1488;&#1493;&#1502;&#1497;"/>
+ <l:gentext key="isbn" text="&#1502;&#1505;&#1508;&#1512; &#1505;&#1508;&#1512; &#1505;&#1496;&#1504;&#1491;&#1512;&#1496;&#1497; &#1489;&#1497;&#1504;&#1500;&#1488;&#1493;&#1502;&#1497;"/>
+ <l:gentext key="LegalNotice" text="&#1492;&#1493;&#1491;&#1506;&#1492; &#1502;&#1513;&#1508;&#1496;&#1497;&#1514;"/>
+ <l:gentext key="legalnotice" text="&#1492;&#1493;&#1491;&#1506;&#1492; &#1502;&#1513;&#1508;&#1496;&#1497;&#1514;"/>
+ <l:gentext key="MsgAud" text="&#1511;&#1492;&#1500; &#1497;&#1506;&#1491;"/>
+ <l:gentext key="msgaud" text="&#1511;&#1492;&#1500; &#1497;&#1506;&#1491;"/>
+ <l:gentext key="MsgLevel" text="&#1512;&#1502;&#1492;"/>
+ <l:gentext key="msglevel" text="&#1512;&#1502;&#1492;"/>
+ <l:gentext key="MsgOrig" text="&#1502;&#1511;&#1493;&#1512;"/>
+ <l:gentext key="msgorig" text="&#1502;&#1511;&#1493;&#1512;"/>
+ <l:gentext key="NOTE" text="&#1513;&#1497;&#1501; &#1500;&#1489;"/>
+ <l:gentext key="Note" text="&#1513;&#1497;&#1501; &#1500;&#1489;"/>
+ <l:gentext key="note" text="&#1513;&#1497;&#1501; &#1500;&#1489;"/>
+ <l:gentext key="Part" text="&#1495;&#1500;&#1511;"/>
+ <l:gentext key="part" text="&#1495;&#1500;&#1511;"/>
+ <l:gentext key="Preface" text="&#1502;&#1489;&#1493;&#1488;"/>
+ <l:gentext key="preface" text="&#1502;&#1489;&#1493;&#1488;"/>
+ <l:gentext key="Procedure" text="&#1492;&#1500;&#1497;&#1498;"/>
+ <l:gentext key="procedure" text="&#1492;&#1500;&#1497;&#1498;"/>
+ <l:gentext key="ProductionSet" text="&#1497;&#1497;&#1510;&#1493;&#1512;"/>
+ <l:gentext key="Published" text="&#1492;&#1493;&#1510;&#1488; &#1500;&#1488;&#1493;&#1512;"/>
+ <l:gentext key="published" text="&#1492;&#1493;&#1510;&#1488; &#1500;&#1488;&#1493;&#1512;"/>
+ <l:gentext key="Question" text="&#1513;:"/>
+ <l:gentext key="question" text="&#1513;:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#1502;&#1512;&#1488;&#1492; &#1502;&#1511;&#1493;&#1501;"/>
+ <l:gentext key="reference" text="&#1502;&#1512;&#1488;&#1492; &#1502;&#1511;&#1493;&#1501;"/>
+ <l:gentext key="RefName" text="&#1513;&#1501;"/>
+ <l:gentext key="refname" text="&#1513;&#1501;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#1514;&#1502;&#1510;&#1497;&#1514;"/>
+ <l:gentext key="refsynopsisdiv" text="&#1514;&#1502;&#1510;&#1497;&#1514;"/>
+ <l:gentext key="RevHistory" text="&#1492;&#1497;&#1505;&#1496;&#1493;&#1512;&#1497;&#1497;&#1514; &#1490;&#1497;&#1512;&#1505;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="revhistory" text="&#1492;&#1497;&#1505;&#1496;&#1493;&#1512;&#1497;&#1497;&#1514; &#1490;&#1497;&#1512;&#1505;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="revision" text="&#1490;&#1497;&#1512;&#1505;&#1492;"/>
+ <l:gentext key="Revision" text="&#1490;&#1497;&#1512;&#1505;&#1492;"/>
+ <l:gentext key="sect1" text="&#1505;&#1506;&#1497;&#1507;"/>
+ <l:gentext key="sect2" text="&#1505;&#1506;&#1497;&#1507;"/>
+ <l:gentext key="sect3" text="&#1505;&#1506;&#1497;&#1507;"/>
+ <l:gentext key="sect4" text="&#1505;&#1506;&#1497;&#1507;"/>
+ <l:gentext key="sect5" text="&#1505;&#1506;&#1497;&#1507;"/>
+ <l:gentext key="section" text="&#1505;&#1506;&#1497;&#1507;"/>
+ <l:gentext key="Section" text="&#1505;&#1506;&#1497;&#1507;"/>
+ <l:gentext key="See" text="&#1512;&#1488;&#1492;"/>
+ <l:gentext key="see" text="&#1512;&#1488;&#1492;"/>
+ <l:gentext key="SeeAlso" text="&#1512;&#1488;&#1492; &#1490;&#1501;"/>
+ <l:gentext key="seealso" text="&#1512;&#1488;&#1492; &#1490;&#1501;"/>
+ <l:gentext key="Seealso" text="&#1512;&#1488;&#1492; &#1490;&#1501;"/>
+ <l:gentext key="set" text="&#1505;&#1497;&#1491;&#1512;&#1492;"/>
+ <l:gentext key="Set" text="&#1505;&#1497;&#1491;&#1512;&#1492;"/>
+ <l:gentext key="setindex" text="&#1488;&#1497;&#1504;&#1511;&#1491;&#1511;&#1505; &#1505;&#1491;&#1512;&#1493;&#1514;"/>
+ <l:gentext key="SetIndex" text="&#1488;&#1497;&#1504;&#1491;&#1511;&#1505; &#1505;&#1491;&#1512;&#1493;&#1514;"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="&#1508;&#1505; &#1510;&#1491;&#1491;&#1497;"/>
+ <l:gentext key="step" text="&#1510;&#1506;&#1491;"/>
+ <l:gentext key="Step" text="&#1510;&#1506;&#1491;"/>
+ <l:gentext key="Table" text="&#1496;&#1489;&#1500;&#1492;"/>
+ <l:gentext key="table" text="&#1496;&#1489;&#1500;&#1492;"/>
+ <l:gentext key="tip" text="&#1506;&#1510;&#1492;"/>
+ <l:gentext key="TIP" text="&#1506;&#1510;&#1492;"/>
+ <l:gentext key="Tip" text="&#1506;&#1510;&#1492;"/>
+ <l:gentext key="Warning" text="&#1488;&#1494;&#1492;&#1512;&#1492;"/>
+ <l:gentext key="warning" text="&#1488;&#1494;&#1492;&#1512;&#1492;"/>
+ <l:gentext key="WARNING" text="&#1488;&#1494;&#1492;&#1512;&#1492;"/>
+ <l:gentext key="and" text="&#1493;"/>
+ <l:gentext key="by" text="&#1502;&#1488;&#1514;"/>
+ <l:gentext key="Edited" text="&#1504;&#1506;&#1512;&#1498;"/>
+ <l:gentext key="edited" text="&#1504;&#1506;&#1512;&#1498;"/>
+ <l:gentext key="Editedby" text="&#1504;&#1506;&#1512;&#1498; &#1506;&#1500; &#1497;&#1491;&#1497;"/>
+ <l:gentext key="editedby" text="&#1504;&#1506;&#1512;&#1498; &#1506;&#1500; &#1497;&#1491;&#1497;"/>
+ <l:gentext key="in" text="&#1489;"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="&#1502;&#1512;&#1499;&#1497;&#1489; &#1513;&#1488;&#1497;&#1504;&#1493; &#1511;&#1497;&#1497;&#1501;"/>
+ <l:gentext key="notes" text="&#1492;&#1506;&#1512;&#1493;&#1514;"/>
+ <l:gentext key="Notes" text="&#1492;&#1506;&#1512;&#1493;&#1514;"/>
+ <l:gentext key="Pgs" text="&#1506;&#1502;&#1493;&#1491;&#1497;&#1501;"/>
+ <l:gentext key="pgs" text="&#1506;&#1502;&#1493;&#1491;&#1497;&#1501;"/>
+ <l:gentext key="Revisedby" text="&#1492;&#1493;&#1490;&#1492; &#1506;&#1500; &#1497;&#1491;&#1497;: "/>
+ <l:gentext key="revisedby" text="&#1492;&#1493;&#1490;&#1492; &#1506;&#1500; &#1497;&#1491;&#1497;: "/>
+ <l:gentext key="TableNotes" text="&#1492;&#1506;&#1512;&#1493;&#1514;"/>
+ <l:gentext key="tablenotes" text="&#1492;&#1506;&#1512;&#1493;&#1514;"/>
+ <l:gentext key="TableofContents" text="&#1514;&#1493;&#1499;&#1503; &#1492;&#1506;&#1504;&#1497;&#1497;&#1504;&#1497;&#1501;"/>
+ <l:gentext key="tableofcontents" text="&#1514;&#1493;&#1499;&#1503; &#1492;&#1506;&#1504;&#1497;&#1497;&#1504;&#1497;&#1501;"/>
+ <l:gentext key="unexpectedelementname" text="&#1513;&#1501; &#1502;&#1512;&#1499;&#1497;&#1489; &#1489;&#1500;&#1514;&#1497; &#1510;&#1508;&#1493;&#1497;"/>
+ <l:gentext key="unsupported" text="&#1500;&#1488; &#1504;&#1514;&#1502;&#1498;"/>
+ <l:gentext key="xrefto" text="&#1492;&#1514;&#1497;&#1497;&#1495;&#1505;&#1493;&#1514; &#1510;&#1493;&#1500;&#1489;&#1514; &#1488;&#1500;"/>
+ <l:gentext key="listofequations" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1502;&#1513;&#1493;&#1493;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="ListofEquations" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1502;&#1513;&#1493;&#1493;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="ListofExamples" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1491;&#1493;&#1490;&#1502;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="listofexamples" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1491;&#1493;&#1490;&#1502;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="ListofFigures" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1488;&#1497;&#1493;&#1512;&#1497;&#1501;"/>
+ <l:gentext key="listoffigures" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1488;&#1497;&#1493;&#1512;&#1497;&#1501;"/>
+ <l:gentext key="listoftables" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1496;&#1489;&#1500;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="ListofTables" text="&#1512;&#1513;&#1497;&#1502;&#1514; &#1496;&#1489;&#1500;&#1488;&#1493;&#1514;"/>
+ <l:gentext key="ListofUnknown" text="&#1512;&#1513;&#1497;&#1502;&#1492; &#1513;&#1500; &#1502;&#1512;&#1499;&#1497;&#1489;&#1497;&#1501; &#1500;&#1488; &#1497;&#1491;&#1493;&#1506;&#1497;&#1501;"/>
+ <l:gentext key="listofunknown" text="&#1512;&#1513;&#1497;&#1502;&#1492; &#1513;&#1500; &#1502;&#1512;&#1499;&#1497;&#1489;&#1497;&#1501; &#1500;&#1488; &#1497;&#1491;&#1493;&#1506;&#1497;&#1501;"/>
+ <l:gentext key="nav-home" text="&#1512;&#1488;&#1513;&#1497;"/>
+ <l:gentext key="nav-next" text="&#1492;&#1489;&#1488;"/>
+ <l:gentext key="nav-next-sibling" text="&#1491;&#1500;&#1490; &#1500;&#1505;&#1493;&#1507;"/>
+ <l:gentext key="nav-prev" text="&#1492;&#1511;&#1493;&#1491;&#1501;"/>
+ <l:gentext key="nav-prev-sibling" text="&#1495;&#1494;&#1493;&#1512; &#1500;&#1492;&#1514;&#1495;&#1500;&#1492;"/>
+ <l:gentext key="nav-up" text="&#1500;&#1502;&#1506;&#1500;&#1492;"/>
+ <l:gentext key="sectioncalled" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488;"/>
+ <l:gentext key="Draft" text="&#1496;&#1497;&#1493;&#1496;&#1492;"/>
+ <l:gentext key="above" text="&#1500;&#1502;&#1506;&#1500;&#1492;"/>
+ <l:gentext key="below" text="&#1500;&#1502;&#1496;&#1492;"/>
+ <l:gentext key="index symbols" text="&#1505;&#1502;&#1500;&#1497;&#1501;"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#1504;&#1505;&#1508;&#1495; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1508;&#1512;&#1511; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1502;&#1513;&#1493;&#1493;&#1488;&#1492; %n. %t"/>
+ <l:template name="example" text="&#1491;&#1493;&#1490;&#1502;&#1492; %n. %t"/>
+ <l:template name="figure" text="&#1488;&#1497;&#1493;&#1512; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1495;&#1500;&#1511; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#1492;&#1500;&#1497;&#1498; %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="&#1497;&#1497;&#1510;&#1493;&#1512; %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#1496;&#1489;&#1500;&#1492; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#1504;&#1505;&#1508;&#1495; %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="&#1508;&#1512;&#1511; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#1514;:&#160;%n"/>
+ <l:template name="appendix" text="&#1504;&#1505;&#1508;&#1495; %n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1508;&#1512;&#1511; %n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1502;&#1513;&#1493;&#1493;&#1488;&#1492;&#160;%n"/>
+ <l:template name="example" text="&#1491;&#1493;&#1490;&#1502;&#1492; %n"/>
+ <l:template name="figure" text="&#1488;&#1497;&#1493;&#1512; %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1495;&#1500;&#1511; %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#1492;&#1500;&#1497;&#1498;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#1513;:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#1513;:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#1496;&#1489;&#1500;&#1492; %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="section" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#1505;&#1506;&#1497;&#1507; %n"/>
+ <l:template name="refsection" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#1505;&#1506;&#1497;&#1507; %n"/>
+ <l:template name="sect2" text="&#1505;&#1506;&#1497;&#1507; %n"/>
+ <l:template name="sect3" text="&#1505;&#1506;&#1497;&#1507; %n"/>
+ <l:template name="sect4" text="&#1505;&#1506;&#1497;&#1507; %n"/>
+ <l:template name="sect5" text="&#1505;&#1506;&#1497;&#1507; %n"/>
+ <l:template name="section" text="&#1505;&#1506;&#1497;&#1507; %n"/>
+ <l:template name="simplesect" text="&#1492;&#1505;&#1506;&#1497;&#1507; &#1513;&#1504;&#1511;&#1512;&#1488; &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#1493; "/>
+ <l:template name="seplast" text=", &#1493; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#1512;&#1488;&#1492; "/>
+ <l:template name="seealso" text="&#1512;&#1488;&#1492; &#1490;&#1501; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#1511;&#1492;&#1500; &#1497;&#1506;&#1491;: "/>
+ <l:template name="MsgLevel" text="&#1512;&#1502;&#1492;: "/>
+ <l:template name="MsgOrig" text="&#1502;&#1511;&#1493;&#1512;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/hu.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/hu.xml
new file mode 100644
index 0000000..01eb18e
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/hu.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="hu" english-language-name="Hungarian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Kivonat"/>
+ <l:gentext key="abstract" text="kivonat"/>
+ <l:gentext key="Answer" text="V:"/>
+ <l:gentext key="answer" text="v:"/>
+ <l:gentext key="Appendix" text="F&#252;ggel&#233;k"/>
+ <l:gentext key="appendix" text="f&#252;ggel&#233;k"/>
+ <l:gentext key="Article" text="Cikk"/>
+ <l:gentext key="article" text="cikk"/>
+ <l:gentext key="Bibliography" text="Irodalomjegyz&#233;k"/>
+ <l:gentext key="bibliography" text="irodalomjegyz&#233;k"/>
+ <l:gentext key="Book" text="K&#246;nyv"/>
+ <l:gentext key="book" text="k&#246;nyv"/>
+ <l:gentext key="CAUTION" text="FIGYELEM"/>
+ <l:gentext key="Caution" text="Figyelem"/>
+ <l:gentext key="caution" text="figyelem"/>
+ <l:gentext key="Chapter" text="Fejezet"/>
+ <l:gentext key="chapter" text="fejezet"/>
+ <l:gentext key="Colophon" text="V&#233;gsz&#243;"/>
+ <l:gentext key="colophon" text="v&#233;gsz&#243;"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="copyright"/>
+ <l:gentext key="Dedication" text="Aj&#225;nl&#225;s"/>
+ <l:gentext key="dedication" text="aj&#225;nl&#225;s"/>
+ <l:gentext key="Edition" text="Kiad&#225;s"/>
+ <l:gentext key="edition" text="kiad&#225;s"/>
+ <l:gentext key="Equation" text="Egyenlet"/>
+ <l:gentext key="equation" text="egyenlet"/>
+ <l:gentext key="Example" text="P&#233;lda"/>
+ <l:gentext key="example" text="p&#233;lda"/>
+ <l:gentext key="Figure" text="&#193;bra"/>
+ <l:gentext key="figure" text="&#225;bra"/>
+ <l:gentext key="Glossary" text="Sz&#243;jegyz&#233;k"/>
+ <l:gentext key="glossary" text="sz&#243;jegyz&#233;k"/>
+ <l:gentext key="GlossSee" text="L&#225;sd"/>
+ <l:gentext key="glosssee" text="l&#225;sd"/>
+ <l:gentext key="GlossSeeAlso" text="L&#225;sd m&#233;g"/>
+ <l:gentext key="glossseealso" text="l&#225;sd m&#233;g"/>
+ <l:gentext key="IMPORTANT" text="FONTOS"/>
+ <l:gentext key="Important" text="Fontos"/>
+ <l:gentext key="important" text="fontos"/>
+ <l:gentext key="Index" text="T&#225;rgymutat&#243;"/>
+ <l:gentext key="index" text="t&#225;rgymutat&#243;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="isbn"/>
+ <l:gentext key="LegalNotice" text="Jogi k&#246;zlem&#233;ny"/>
+ <l:gentext key="legalnotice" text="jogi k&#246;zlem&#233;ny"/>
+ <l:gentext key="MsgAud" text="C&#233;lk&#246;z&#246;ns&#233;g"/>
+ <l:gentext key="msgaud" text="c&#233;lk&#246;z&#246;ns&#233;g"/>
+ <l:gentext key="MsgLevel" text="Szint"/>
+ <l:gentext key="msglevel" text="szint"/>
+ <l:gentext key="MsgOrig" text="Eredet"/>
+ <l:gentext key="msgorig" text="eredet"/>
+ <l:gentext key="NOTE" text="MEGJEGYZ&#201;S"/>
+ <l:gentext key="Note" text="Megjegyz&#233;s"/>
+ <l:gentext key="note" text="megjegyz&#233;s"/>
+ <l:gentext key="Part" text="R&#233;sz"/>
+ <l:gentext key="part" text="r&#233;sz"/>
+ <l:gentext key="Preface" text="El&#337;sz&#243;"/>
+ <l:gentext key="preface" text="el&#337;sz&#243;"/>
+ <l:gentext key="Procedure" text="Elj&#225;r&#225;s"/>
+ <l:gentext key="procedure" text="elj&#225;r&#225;s"/>
+ <l:gentext key="ProductionSet" text="Elemcsoport"/>
+ <l:gentext key="Published" text="Megjelent"/>
+ <l:gentext key="published" text="megjelent"/>
+ <l:gentext key="Question" text="K:"/>
+ <l:gentext key="question" text="k:"/>
+ <l:gentext key="RefEntry" text="Bejegyz&#233;s"/>
+ <l:gentext key="refentry" text="bejegyz&#233;s"/>
+ <l:gentext key="Reference" text="Referencia"/>
+ <l:gentext key="reference" text="referencia"/>
+ <l:gentext key="RefName" text="N&#233;v"/>
+ <l:gentext key="refname" text="n&#233;v"/>
+ <l:gentext key="RefSection" text="Szakasz"/>
+ <l:gentext key="refsection" text="szakasz"/>
+ <l:gentext key="RefSynopsisDiv" text="&#193;ttekint&#233;s"/>
+ <l:gentext key="refsynopsisdiv" text="&#225;ttekint&#233;s"/>
+ <l:gentext key="RevHistory" text="Verzi&#243;t&#246;rt&#233;net"/>
+ <l:gentext key="revhistory" text="verzi&#243;t&#246;rt&#233;net"/>
+ <l:gentext key="Revision" text="Verzi&#243;"/>
+ <l:gentext key="revision" text="verzi&#243;"/>
+ <l:gentext key="sect1" text="Szakasz"/>
+ <l:gentext key="sect2" text="Szakasz"/>
+ <l:gentext key="sect3" text="Szakasz"/>
+ <l:gentext key="sect4" text="Szakasz"/>
+ <l:gentext key="sect5" text="Szakasz"/>
+ <l:gentext key="Section" text="Szakasz"/>
+ <l:gentext key="section" text="szakasz"/>
+ <l:gentext key="See" text="L&#225;sd"/>
+ <l:gentext key="see" text="l&#225;sd"/>
+ <l:gentext key="SeeAlso" text="L&#225;sd m&#233;g"/>
+ <l:gentext key="Seealso" text="L&#225;sd m&#233;g"/>
+ <l:gentext key="seealso" text="l&#225;sd m&#233;g"/>
+ <l:gentext key="Set" text="Csoport"/>
+ <l:gentext key="set" text="csoport"/>
+ <l:gentext key="SetIndex" text="Csoportmutat&#243;"/>
+ <l:gentext key="setindex" text="csoportmutat&#243;"/>
+ <l:gentext key="Sidebar" text="Sz&#233;ljegyzet"/>
+ <l:gentext key="sidebar" text="sz&#233;ljegyzet"/>
+ <l:gentext key="Step" text="L&#233;p&#233;s"/>
+ <l:gentext key="step" text="l&#233;p&#233;s"/>
+ <l:gentext key="Table" text="T&#225;bl&#225;zat"/>
+ <l:gentext key="table" text="t&#225;bl&#225;zat"/>
+ <l:gentext key="TIP" text="TIPP"/>
+ <l:gentext key="Tip" text="Tipp"/>
+ <l:gentext key="tip" text="tipp"/>
+ <l:gentext key="WARNING" text="FIGYELEM"/>
+ <l:gentext key="Warning" text="Figyelem"/>
+ <l:gentext key="warning" text="figyelem"/>
+ <l:gentext key="and" text="&#233;s"/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="Szerk."/>
+ <l:gentext key="edited" text="szerk."/>
+ <l:gentext key="Editedby" text="Szerkesztette"/>
+ <l:gentext key="editedby" text="szerkesztette"/>
+ <l:gentext key="in" text=""/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="nem l&#233;tez&#337; elem"/>
+ <l:gentext key="notes" text="megjegyz&#233;sek"/>
+ <l:gentext key="Notes" text="Megjegyz&#233;sek"/>
+ <l:gentext key="Pgs" text="Lsz."/>
+ <l:gentext key="pgs" text="lsz."/>
+ <l:gentext key="Revisedby" text="Megvizsg&#225;lva"/>
+ <l:gentext key="revisedby" text="megvizsg&#225;lva"/>
+ <l:gentext key="TableNotes" text="Megjegyz&#233;sek"/>
+ <l:gentext key="tablenotes" text="megjegyz&#233;sek"/>
+ <l:gentext key="TableofContents" text="Tartalom"/>
+ <l:gentext key="tableofcontents" text="tartalom"/>
+ <l:gentext key="unexpectedelementname" text="nem v&#225;rt elemn&#233;v"/>
+ <l:gentext key="unsupported" text="nem t&#225;mogatott"/>
+ <l:gentext key="xrefto" text="keresztref"/>
+ <l:gentext key="listofequations" text="az egyenletek list&#225;ja"/>
+ <l:gentext key="ListofEquations" text="Az egyenletek list&#225;ja"/>
+ <l:gentext key="ListofExamples" text="A p&#233;ld&#225;k list&#225;ja"/>
+ <l:gentext key="listofexamples" text="a p&#233;ld&#225;k list&#225;ja"/>
+ <l:gentext key="ListofFigures" text="Az &#225;br&#225;k list&#225;ja"/>
+ <l:gentext key="listoffigures" text="az &#225;br&#225;k list&#225;ja"/>
+ <l:gentext key="listoftables" text="a t&#225;bl&#225;zatok list&#225;ja"/>
+ <l:gentext key="ListofTables" text="A t&#225;bl&#225;zatok list&#225;ja"/>
+ <l:gentext key="ListofUnknown" text="Az egy&#233;b elemek list&#225;ja"/>
+ <l:gentext key="listofunknown" text="az egy&#233;b elemek list&#225;ja"/>
+ <l:gentext key="nav-home" text="Tartalom"/>
+ <l:gentext key="nav-next" text="K&#246;vetkez&#337;"/>
+ <l:gentext key="nav-next-sibling" text="Gyors el&#337;re"/>
+ <l:gentext key="nav-prev" text="El&#337;z&#337;"/>
+ <l:gentext key="nav-prev-sibling" text="Gyors vissza"/>
+ <l:gentext key="nav-up" text="Fel"/>
+ <l:gentext key="sectioncalled" text="ilyen nev&#369; szakasz:"/>
+ <l:gentext key="Draft" text="V&#225;zlat"/>
+ <l:gentext key="above" text="fent"/>
+ <l:gentext key="below" text="lent"/>
+ <l:gentext key="index symbols" text="szimb&#243;lummutat&#243;"/>
+ <l:gentext key="lowercase.alpha" text="a&#225;bcde&#233;fghi&#237;jklmno&#243;&#246;&#337;pqrstu&#250;&#252;&#171;vwxyz"/>
+ <l:gentext key="uppercase.alpha" text="A&#193;BCDE&#201;FGHI&#205;JKLMNO&#211;&#214;&#336;PQRSTU&#218;&#220;&#368;VWXYZ"/>
+ <l:dingbat key="startquote" text="&#8222;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#187;"/>
+ <l:dingbat key="nestedendquote" text="&#171;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="last-first"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="%n. f&#252;ggel&#233;k - %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="%n. fejezet - %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="%n. egyenlet - %t"/>
+ <l:template name="example" text="%n. p&#233;lda - %t"/>
+ <l:template name="figure" text="%n. &#225;bra - %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="%n. r&#233;sz - %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Elj&#225;r&#225;s&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Elemcsoport&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="%n. t&#225;bl&#225;zat - %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="%n. f&#252;ggel&#233;k - %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%n. fejezet - %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="V:&#160;%n"/>
+ <l:template name="appendix" text="%n. f&#252;ggel&#233;k - %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="%n. fejezet - %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Egyenlet&#160;%n"/>
+ <l:template name="example" text="%n. p&#233;lda - %t"/>
+ <l:template name="figure" text="%n. &#225;bra - %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="%n. r&#233;sz - %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Elj&#225;r&#225;s&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="K:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="K:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="%n. t&#225;bl&#225;zat - %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="%n. szakasz"/>
+ <l:template name="sect2" text="%n. szakasz"/>
+ <l:template name="sect3" text="%n. szakasz"/>
+ <l:template name="sect4" text="%n. szakasz"/>
+ <l:template name="sect5" text="%n. szakasz"/>
+ <l:template name="section" text="%n. szakasz"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#233;s "/>
+ <l:template name="seplast" text=", &#233;s "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="L&#225;sd "/>
+ <l:template name="seealso" text="L&#225;sd m&#233;g "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="C&#233;lk&#246;z&#246;ns&#233;g: "/>
+ <l:template name="MsgLevel" text="Szint: "/>
+ <l:template name="MsgOrig" text="Eredet: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/id.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/id.xml
new file mode 100644
index 0000000..1620995
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/id.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="id" english-language-name="Indonesian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Abstrak"/>
+ <l:gentext key="abstract" text="Abstrak"/>
+ <l:gentext key="Answer" text="Jawab:"/>
+ <l:gentext key="answer" text="Jawab:"/>
+ <l:gentext key="Appendix" text="Lampiran"/>
+ <l:gentext key="appendix" text="lampiran"/>
+ <l:gentext key="Article" text="Artikel"/>
+ <l:gentext key="article" text="Artikel"/>
+ <l:gentext key="Bibliography" text="Bibliografi"/>
+ <l:gentext key="bibliography" text="Bibliografi"/>
+ <l:gentext key="Book" text="Buku"/>
+ <l:gentext key="book" text="Buku"/>
+ <l:gentext key="CAUTION" text="PERHATIAN"/>
+ <l:gentext key="Caution" text="Perhatian"/>
+ <l:gentext key="caution" text="Perhatian"/>
+ <l:gentext key="Chapter" text="Bab"/>
+ <l:gentext key="chapter" text="bab"/>
+ <l:gentext key="Colophon" text="Kolofon"/>
+ <l:gentext key="colophon" text="Kolofon"/>
+ <l:gentext key="Copyright" text="Hak Cipta"/>
+ <l:gentext key="copyright" text="Hak Cipta"/>
+ <l:gentext key="Dedication" text="Dedikasi"/>
+ <l:gentext key="dedication" text="Dedikasi"/>
+ <l:gentext key="Edition" text="Edisi"/>
+ <l:gentext key="edition" text="Edisi"/>
+ <l:gentext key="Equation" text="Persamaan"/>
+ <l:gentext key="equation" text="Persamaan"/>
+ <l:gentext key="Example" text="Teladan"/>
+ <l:gentext key="example" text="Teladan"/>
+ <l:gentext key="Figure" text="Gambar"/>
+ <l:gentext key="figure" text="Gambar"/>
+ <l:gentext key="Glossary" text="Daftar Istilah"/>
+ <l:gentext key="glossary" text="Daftar Istilah"/>
+ <l:gentext key="GlossSee" text="Lihat"/>
+ <l:gentext key="glosssee" text="Lihat"/>
+ <l:gentext key="GlossSeeAlso" text="Lihat Juga"/>
+ <l:gentext key="glossseealso" text="Lihat Juga"/>
+ <l:gentext key="IMPORTANT" text="PENTING"/>
+ <l:gentext key="Important" text="Penting"/>
+ <l:gentext key="important" text="Penting"/>
+ <l:gentext key="Index" text="Indeks"/>
+ <l:gentext key="index" text="Indeks"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Aspek Hukum"/>
+ <l:gentext key="legalnotice" text="Aspek Hukum"/>
+ <l:gentext key="MsgAud" text="Pemirsa"/>
+ <l:gentext key="msgaud" text="Pemirsa"/>
+ <l:gentext key="MsgLevel" text="Tingkatan"/>
+ <l:gentext key="msglevel" text="Tingkatan"/>
+ <l:gentext key="MsgOrig" text="Asal"/>
+ <l:gentext key="msgorig" text="Asal"/>
+ <l:gentext key="NOTE" text="CATATAN"/>
+ <l:gentext key="Note" text="Catatan"/>
+ <l:gentext key="note" text="Catatan"/>
+ <l:gentext key="Part" text="Bagian"/>
+ <l:gentext key="part" text="Bagian"/>
+ <l:gentext key="Preface" text="Kata Pengantar"/>
+ <l:gentext key="preface" text="Kata Pengantar"/>
+ <l:gentext key="Procedure" text="Prosedur"/>
+ <l:gentext key="procedure" text="Prosedur"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Diterbitkan"/>
+ <l:gentext key="published" text="Diterbitkan"/>
+ <l:gentext key="Question" text="Tanya:"/>
+ <l:gentext key="question" text="Tanya:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Referensi"/>
+ <l:gentext key="reference" text="Referensi"/>
+ <l:gentext key="RefName" text="Nama"/>
+ <l:gentext key="refname" text="Nama"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Sinopsis"/>
+ <l:gentext key="RevHistory" text="Catatan Revisi"/>
+ <l:gentext key="revhistory" text="Catatan Revisi"/>
+ <l:gentext key="Revision" text="Revisi"/>
+ <l:gentext key="revision" text="Revisi"/>
+ <l:gentext key="sect1" text="Bagian"/>
+ <l:gentext key="sect2" text="Bagian"/>
+ <l:gentext key="sect3" text="Bagian"/>
+ <l:gentext key="sect4" text="Bagian"/>
+ <l:gentext key="sect5" text="Bagian"/>
+ <l:gentext key="Section" text="Bagian"/>
+ <l:gentext key="section" text="bagian"/>
+ <l:gentext key="See" text="Lihat"/>
+ <l:gentext key="see" text="Lihat"/>
+ <l:gentext key="SeeAlso" text="Lihat Juga"/>
+ <l:gentext key="Seealso" text="Lihat juga"/>
+ <l:gentext key="seealso" text="Lihat Juga"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="SetIndex" text="Indeks Set"/>
+ <l:gentext key="setindex" text="Indeks Set"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="Step" text="Tahap"/>
+ <l:gentext key="step" text="tahap"/>
+ <l:gentext key="Table" text="Tabel"/>
+ <l:gentext key="table" text="Tabel"/>
+ <l:gentext key="TIP" text="TIP"/>
+ <l:gentext key="Tip" text="Tip"/>
+ <l:gentext key="tip" text="Tip"/>
+ <l:gentext key="WARNING" text="AWAS"/>
+ <l:gentext key="Warning" text="Awas"/>
+ <l:gentext key="warning" text="Awas"/>
+ <l:gentext key="and" text="dan"/>
+ <l:gentext key="by" text="oleh"/>
+ <l:gentext key="Edited" text="disunting"/>
+ <l:gentext key="edited" text="disunting"/>
+ <l:gentext key="Editedby" text="disunting oleh"/>
+ <l:gentext key="editedby" text="disunting oleh"/>
+ <l:gentext key="in" text="di"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="elemen tak tampak"/>
+ <l:gentext key="notes" text="Catatan"/>
+ <l:gentext key="Notes" text="Catatan"/>
+ <l:gentext key="Pgs" text="Hal."/>
+ <l:gentext key="pgs" text="Hal."/>
+ <l:gentext key="Revisedby" text="Direvisi oleh: "/>
+ <l:gentext key="revisedby" text="Direvisi oleh: "/>
+ <l:gentext key="TableNotes" text="Catatan"/>
+ <l:gentext key="tablenotes" text="Catatan"/>
+ <l:gentext key="TableofContents" text="Daftar Isi"/>
+ <l:gentext key="tableofcontents" text="Daftar Isi"/>
+ <l:gentext key="unexpectedelementname" text="Nama Elemen seharusnya tidak ada"/>
+ <l:gentext key="unsupported" text="tidak didukung"/>
+ <l:gentext key="xrefto" text="xref ke"/>
+ <l:gentext key="listofequations" text="Daftar Persamaan"/>
+ <l:gentext key="ListofEquations" text="Daftar Persamaan"/>
+ <l:gentext key="ListofExamples" text="Daftar Teladan"/>
+ <l:gentext key="listofexamples" text="Daftar Teladan"/>
+ <l:gentext key="ListofFigures" text="Daftar Gambar"/>
+ <l:gentext key="listoffigures" text="Daftar Gambar"/>
+ <l:gentext key="listoftables" text="Daftar Tabel"/>
+ <l:gentext key="ListofTables" text="Daftar Tabel"/>
+ <l:gentext key="ListofUnknown" text="Daftar Gaib"/>
+ <l:gentext key="listofunknown" text="Daftar Gaib"/>
+ <l:gentext key="nav-home" text="Depan"/>
+ <l:gentext key="nav-next" text="Lanjut"/>
+ <l:gentext key="nav-next-sibling" text="Lewati"/>
+ <l:gentext key="nav-prev" text="Kembali"/>
+ <l:gentext key="nav-prev-sibling" text="Sebelumnya"/>
+ <l:gentext key="nav-up" text="Induk"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Lampiran %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Bab %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Persamaan %n. %t"/>
+ <l:template name="example" text="Teladan %n. %t"/>
+ <l:template name="figure" text="Gambar %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Bagian %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Prosedur&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Lampiran %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Bab %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Jawab:&#160;%n"/>
+ <l:template name="appendix" text="Lampiran %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Bab %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Persamaan&#160;%n"/>
+ <l:template name="example" text="Teladan %n. %t"/>
+ <l:template name="figure" text="Gambar %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Bagian %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Prosedur&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Tanya:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Tanya:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Bagian %n"/>
+ <l:template name="sect2" text="Bagian %n"/>
+ <l:template name="sect3" text="Bagian %n"/>
+ <l:template name="sect4" text="Bagian %n"/>
+ <l:template name="sect5" text="Bagian %n"/>
+ <l:template name="section" text="Bagian %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" dan "/>
+ <l:template name="seplast" text=", dan "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Lihat "/>
+ <l:template name="seealso" text="Lihat Juga "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Pemirsa: "/>
+ <l:template name="MsgLevel" text="Tingkatan: "/>
+ <l:template name="MsgOrig" text="Asal: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/it.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/it.xml
new file mode 100644
index 0000000..b79adea
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/it.xml
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="it" english-language-name="Italian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Estratto"/>
+ <l:gentext key="abstract" text="Estratto"/>
+ <l:gentext key="Answer" text="R:"/>
+ <l:gentext key="answer" text="R:"/>
+ <l:gentext key="Appendix" text="Appendice"/>
+ <l:gentext key="appendix" text="appendice"/>
+ <l:gentext key="Article" text="Articolo"/>
+ <l:gentext key="article" text="Articolo"/>
+ <l:gentext key="Bibliography" text="Bibliografia"/>
+ <l:gentext key="bibliography" text="Bibliografia"/>
+ <l:gentext key="Book" text="Libro"/>
+ <l:gentext key="book" text="Libro"/>
+ <l:gentext key="CAUTION" text="ATTENZIONE"/>
+ <l:gentext key="Caution" text="Attenzione"/>
+ <l:gentext key="caution" text="Attenzione"/>
+ <l:gentext key="Chapter" text="Capitolo"/>
+ <l:gentext key="chapter" text="capitolo"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedica"/>
+ <l:gentext key="dedication" text="Dedica"/>
+ <l:gentext key="Edition" text="Edizione"/>
+ <l:gentext key="edition" text="Edizione"/>
+ <l:gentext key="Equation" text="Equazione"/>
+ <l:gentext key="equation" text="Equazione"/>
+ <l:gentext key="Example" text="Esempio"/>
+ <l:gentext key="example" text="Esempio"/>
+ <l:gentext key="Figure" text="Figura"/>
+ <l:gentext key="figure" text="Figura"/>
+ <l:gentext key="Glossary" text="Glossario"/>
+ <l:gentext key="glossary" text="Glossario"/>
+ <l:gentext key="GlossSee" text="Vedi"/>
+ <l:gentext key="glosssee" text="Vedi"/>
+ <l:gentext key="GlossSeeAlso" text="Vedi Anche"/>
+ <l:gentext key="glossseealso" text="Vedi Anche"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+ <l:gentext key="important" text="Importante"/>
+ <l:gentext key="Important" text="Importante"/>
+ <l:gentext key="Index" text="Indice"/>
+ <l:gentext key="index" text="Indice"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Note Legali"/>
+ <l:gentext key="legalnotice" text="Note Legali"/>
+ <l:gentext key="MsgAud" text="Pubblico"/>
+ <l:gentext key="msgaud" text="Pubblico"/>
+ <l:gentext key="MsgLevel" text="Livello"/>
+ <l:gentext key="msglevel" text="Livello"/>
+ <l:gentext key="MsgOrig" text="Origine"/>
+ <l:gentext key="msgorig" text="Origine"/>
+ <l:gentext key="NOTE" text="NOTA"/>
+ <l:gentext key="Note" text="Nota"/>
+ <l:gentext key="note" text="Nota"/>
+ <l:gentext key="Part" text="Parte"/>
+ <l:gentext key="part" text="Parte"/>
+ <l:gentext key="Preface" text="Prefazione"/>
+ <l:gentext key="preface" text="Prefazione"/>
+ <l:gentext key="Procedure" text="Procedura"/>
+ <l:gentext key="procedure" text="Procedura"/>
+ <l:gentext key="ProductionSet" text="Produzione"/>
+ <l:gentext key="Published" text="Pubblicato"/>
+ <l:gentext key="published" text="Pubblicato"/>
+ <l:gentext key="Question" text="D:"/>
+ <l:gentext key="question" text="D:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Riferimento"/>
+ <l:gentext key="reference" text="Riferimento"/>
+ <l:gentext key="RefName" text="Nome"/>
+ <l:gentext key="refname" text="Nome"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Sinossi"/>
+ <l:gentext key="refsynopsisdiv" text="Sinossi"/>
+ <l:gentext key="RevHistory" text="Diario delle Revisioni"/>
+ <l:gentext key="revhistory" text="Diario delle Revisioni"/>
+ <l:gentext key="revision" text="Revisione"/>
+ <l:gentext key="Revision" text="Revisione"/>
+ <l:gentext key="sect1" text="Sezione"/>
+ <l:gentext key="sect2" text="Sezione"/>
+ <l:gentext key="sect3" text="Sezione"/>
+ <l:gentext key="sect4" text="Sezione"/>
+ <l:gentext key="sect5" text="Sezione"/>
+ <l:gentext key="section" text="Sezione"/>
+ <l:gentext key="Section" text="Sezione"/>
+ <l:gentext key="See" text="Vd."/>
+ <l:gentext key="see" text="Vd."/>
+ <l:gentext key="SeeAlso" text="Vd. Anche"/>
+ <l:gentext key="seealso" text="Vd. Anche"/>
+ <l:gentext key="Seealso" text="Vd. anche"/>
+ <l:gentext key="set" text="Raccolta"/>
+ <l:gentext key="Set" text="Raccolta"/>
+ <l:gentext key="setindex" text="Indice Raccolta"/>
+ <l:gentext key="SetIndex" text="Indice Raccolta"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="nota a margine"/>
+ <l:gentext key="step" text="passo"/>
+ <l:gentext key="Step" text="Passo"/>
+ <l:gentext key="Table" text="Tabella"/>
+ <l:gentext key="table" text="Tabella"/>
+ <l:gentext key="tip" text="Suggerimento"/>
+ <l:gentext key="TIP" text="SUGGERIMENTO"/>
+ <l:gentext key="Tip" text="Suggerimento"/>
+ <l:gentext key="Warning" text="Avvertimento"/>
+ <l:gentext key="warning" text="avvertimento"/>
+ <l:gentext key="WARNING" text="AVVERTIMENTO"/>
+ <l:gentext key="and" text="e"/>
+ <l:gentext key="by" text="di"/>
+ <l:gentext key="Edited" text="A cura"/>
+ <l:gentext key="edited" text="A cura"/>
+ <l:gentext key="Editedby" text="A cura di"/>
+ <l:gentext key="editedby" text="A cura di"/>
+ <l:gentext key="in" text="in"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="elemento non esistente"/>
+ <l:gentext key="notes" text="Note"/>
+ <l:gentext key="Notes" text="Note"/>
+ <l:gentext key="Pgs" text="pp."/>
+ <l:gentext key="pgs" text="pp."/>
+ <l:gentext key="Revisedby" text="Revisionato da: "/>
+ <l:gentext key="revisedby" text="Revisionato da: "/>
+ <l:gentext key="TableNotes" text="Note"/>
+ <l:gentext key="tablenotes" text="Note"/>
+ <l:gentext key="TableofContents" text="Sommario"/>
+ <l:gentext key="tableofcontents" text="Sommario"/>
+ <l:gentext key="unexpectedelementname" text="Nome elemento inaspettato"/>
+ <l:gentext key="unsupported" text="non supportato"/>
+ <l:gentext key="xrefto" text="riferimento a"/>
+ <l:gentext key="listofequations" text="Lista delle Equazioni"/>
+ <l:gentext key="ListofEquations" text="Lista delle Equazioni"/>
+ <l:gentext key="ListofExamples" text="Lista degli Esempi"/>
+ <l:gentext key="listofexamples" text="Lista degli Esempi"/>
+ <l:gentext key="ListofFigures" text="Lista delle Figure"/>
+ <l:gentext key="listoffigures" text="Lista delle Figure"/>
+ <l:gentext key="listoftables" text="Lista delle Tabelle"/>
+ <l:gentext key="ListofTables" text="Lista delle Tabelle"/>
+ <l:gentext key="ListofUnknown" text="Lista degli Sconosciuti"/>
+ <l:gentext key="listofunknown" text="Lista degli Sconosciuti"/>
+ <l:gentext key="nav-home" text="Partenza"/>
+ <l:gentext key="nav-next" text="Avanti"/>
+ <l:gentext key="nav-next-sibling" text="Salta Avanti"/>
+ <l:gentext key="nav-prev" text="Indietro"/>
+ <l:gentext key="nav-prev-sibling" text="Salta Indietro"/>
+ <l:gentext key="nav-up" text="Risali"/>
+ <l:gentext key="Draft" text="Bozza"/>
+ <l:gentext key="above" text="sopra"/>
+ <l:gentext key="below" text="sotto"/>
+ <l:gentext key="sectioncalled" text="la sezione chiamata"/>
+ <l:gentext key="index symbols" text="Simboli"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+<l:context name="empty">
+ <l:template name="appendix" text="Titoli di Appendice (vuoto)"/>
+ <l:template name="article" text="Titoli di Articolo (vuoto)"/>
+ <l:template name="bibliodiv" text="Titoli Bibliodiv (vuoto)"/>
+ <l:template name="book" text="Titoli dei Libri (vuoto)"/>
+ <l:template name="chapter" text="Titoli dei Capitoli (vuoto)"/>
+ <l:template name="columns" text="Colonne"/>
+ <l:template name="draftarea" text="Area temporanea per"/>
+ <l:template name="edit-attrs" text="modifica gli attributi degli elementi corrispondenti"/>
+ <l:template name="footnote" text="Nota a pi&#232; di pagina"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Titoli di Prefazione (vuoto)"/>
+ <l:template name="part" text="Titoli di Parti (vuoto)"/>
+ <l:template name="section" text="Titoli di Sezione (vuoto)"/>
+ <l:template name="sect1" text="Titoli di Sezione (vuoto)"/>
+ <l:template name="sect2" text="Titoli di Sezione (vuoto)"/>
+ <l:template name="sect3" text="Titoli di Sezione (vuoto)"/>
+ <l:template name="sect4" text="Titoli di Sezione (vuoto)"/>
+ <l:template name="sect5" text="Titoli di Sezione (vuoto)"/>
+ <l:template name="set" text="Titoli di Set (vuoto)"/>
+ <l:template name="title" text="Titolo: "/>
+ <l:template name="titles" text="Nessun Elemento di Titolo alla Pagina"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+</l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Appendice&#160;%n.&#160;%t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Capitolo&#160;%n.&#160;%t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equazione&#160;%n.&#160;%t"/>
+ <l:template name="example" text="Esempio&#160;%n.&#160;%t"/>
+ <l:template name="figure" text="Figura&#160;%n.&#160;%t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte&#160;%n.&#160;%t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedura&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Produzione&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabella&#160;%n.&#160;%t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Appendice&#160;%n.&#160;%t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="Capitolo&#160;%n.&#160;%t"/>
+ <l:template name="sect1" text="%n.&#160;%t"/>
+ <l:template name="sect2" text="%n.&#160;%t"/>
+ <l:template name="sect3" text="%n.&#160;%t"/>
+ <l:template name="sect4" text="%n.&#160;%t"/>
+ <l:template name="sect5" text="%n.&#160;%t"/>
+ <l:template name="section" text="%n.&#160;%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="R:&#160;%n"/>
+ <l:template name="appendix" text="Appendice&#160;%n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Capitolo&#160;%n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equazione&#160;%n"/>
+ <l:template name="example" text="Esempio&#160;%n"/>
+ <l:template name="figure" text="Figura&#160;%n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte&#160;%n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedura&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="D:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="D:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabella&#160;%n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="section" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="la sezione chiamata &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Sezione&#160;%n"/>
+ <l:template name="refsection" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="la sezione chiamata &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Sezione&#160;%n"/>
+ <l:template name="sect2" text="Sezione&#160;%n"/>
+ <l:template name="sect3" text="Sezione&#160;%n"/>
+ <l:template name="sect4" text="Sezione&#160;%n"/>
+ <l:template name="sect5" text="Sezione&#160;%n"/>
+ <l:template name="section" text="Sezione&#160;%n"/>
+ <l:template name="simplesect" text="la sezione chiamata &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" e "/>
+ <l:template name="seplast" text=", e "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Vedi "/>
+ <l:template name="seealso" text="Vedi Anche "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Pubblico: "/>
+ <l:template name="MsgLevel" text="Livello: "/>
+ <l:template name="MsgOrig" text="Origine: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ja.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ja.xml
new file mode 100644
index 0000000..ad95901
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ja.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ja" english-language-name="Japanese">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#27010;&#35201;"/>
+ <l:gentext key="abstract" text="&#27010;&#35201;"/>
+ <l:gentext key="Answer" text="&#31572;&#65306;"/>
+ <l:gentext key="answer" text="&#31572;&#65306;"/>
+ <l:gentext key="Appendix" text="&#20184;&#37682;"/>
+ <l:gentext key="appendix" text="&#20184;&#37682;"/>
+ <l:gentext key="Article" text="&#38917;&#30446;"/>
+ <l:gentext key="article" text="&#38917;&#30446;"/>
+ <l:gentext key="Bibliography" text="&#21442;&#32771;&#25991;&#29486;"/>
+ <l:gentext key="bibliography" text="&#21442;&#32771;&#25991;&#29486;"/>
+ <l:gentext key="Book" text="&#12502;&#12483;&#12463;"/>
+ <l:gentext key="book" text="&#12502;&#12483;&#12463;"/>
+ <l:gentext key="Caution" text="&#27880;&#24847;"/>
+ <l:gentext key="caution" text="&#27880;&#24847;"/>
+ <l:gentext key="CAUTION" text="&#27880;&#24847;"/>
+ <l:gentext key="chapter" text="&#31456;"/>
+ <l:gentext key="Chapter" text="&#31456;"/>
+ <l:gentext key="chapter1" text="&#31532;"/>
+ <l:gentext key="Chapter1" text="&#31532;"/>
+ <l:gentext key="Chapter2" text="&#31456;"/>
+ <l:gentext key="chapter2" text="&#31456;"/>
+ <l:gentext key="Colophon" text="&#22885;&#20184;"/>
+ <l:gentext key="colophon" text="&#22885;&#20184;"/>
+ <l:gentext key="Copyright" text="&#35069;&#20316;&#33879;&#20316;"/>
+ <l:gentext key="copyright" text="&#35069;&#20316;&#33879;&#20316;"/>
+ <l:gentext key="Dedication" text="&#35613;&#36766;"/>
+ <l:gentext key="dedication" text="&#35613;&#36766;"/>
+ <l:gentext key="Edition" text="&#32232;&#38598;"/>
+ <l:gentext key="edition" text="&#32232;&#38598;"/>
+ <l:gentext key="Equation" text="&#24335;"/>
+ <l:gentext key="equation" text="&#24335;"/>
+ <l:gentext key="Example" text="&#20363;"/>
+ <l:gentext key="example" text="&#20363;"/>
+ <l:gentext key="Figure" text="&#22259;"/>
+ <l:gentext key="figure" text="&#22259;"/>
+ <l:gentext key="Glossary" text="&#29992;&#35486;&#38598;"/>
+ <l:gentext key="glossary" text="&#29992;&#35486;&#38598;"/>
+ <l:gentext key="GlossSee" text="&#21442;&#29031;"/>
+ <l:gentext key="glosssee" text="&#21442;&#29031;"/>
+ <l:gentext key="GlossSeeAlso" text="&#21442;&#29031;"/>
+ <l:gentext key="glossseealso" text="&#21442;&#29031;"/>
+ <l:gentext key="IMPORTANT" text="&#37325;&#35201;&#38917;&#30446;"/>
+ <l:gentext key="Important" text="&#37325;&#35201;&#38917;&#30446;"/>
+ <l:gentext key="important" text="&#37325;&#35201;&#38917;&#30446;"/>
+ <l:gentext key="Index" text="&#30446;&#27425;"/>
+ <l:gentext key="index" text="&#30446;&#27425;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text="&#23550;&#35937;&#32773;"/>
+ <l:gentext key="msgaud" text="&#23550;&#35937;&#32773;"/>
+ <l:gentext key="MsgLevel" text="&#12524;&#12505;&#12523;"/>
+ <l:gentext key="msglevel" text="&#12524;&#12505;&#12523;"/>
+ <l:gentext key="MsgOrig" text="&#30330;&#20449;&#20803;"/>
+ <l:gentext key="msgorig" text="&#30330;&#20449;&#20803;"/>
+ <l:gentext key="note" text="&#27880;&#24847;"/>
+ <l:gentext key="Note" text="&#27880;&#24847;"/>
+ <l:gentext key="NOTE" text="&#27880;&#24847;"/>
+ <l:gentext key="Part" text="&#12497;&#12540;&#12488;"/>
+ <l:gentext key="part" text="&#12497;&#12540;&#12488;"/>
+ <l:gentext key="Preface" text="&#24207;&#25991;"/>
+ <l:gentext key="preface" text="&#24207;&#25991;"/>
+ <l:gentext key="Procedure" text="&#25163;&#38918;"/>
+ <l:gentext key="procedure" text="&#25163;&#38918;"/>
+ <l:gentext key="ProductionSet" text="&#12503;&#12525;&#12480;&#12463;&#12471;&#12519;&#12531;"/>
+ <l:gentext key="Published" text="&#30330;&#34892;"/>
+ <l:gentext key="published" text="&#30330;&#34892;"/>
+ <l:gentext key="Question" text="&#21839;&#65306;"/>
+ <l:gentext key="question" text="&#21839;&#65306;"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#21442;&#29031;"/>
+ <l:gentext key="reference" text="&#21442;&#29031;"/>
+ <l:gentext key="RefName" text="&#21517;&#21069;"/>
+ <l:gentext key="refname" text="&#21517;&#21069;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#27010;&#35201;"/>
+ <l:gentext key="refsynopsisdiv" text="&#27010;&#35201;"/>
+ <l:gentext key="RevHistory" text="&#25913;&#35330;&#23653;&#27508;"/>
+ <l:gentext key="revhistory" text="&#25913;&#35330;&#23653;&#27508;"/>
+ <l:gentext key="revision" text="&#25913;&#35330;"/>
+ <l:gentext key="Revision" text="&#25913;&#35330;"/>
+ <l:gentext key="sect1" text="&#38917;"/>
+ <l:gentext key="sect2" text="&#38917;"/>
+ <l:gentext key="sect3" text="&#38917;"/>
+ <l:gentext key="sect4" text="&#38917;"/>
+ <l:gentext key="sect5" text="&#38917;"/>
+ <l:gentext key="Section" text="&#38917;"/>
+ <l:gentext key="section" text="&#38917;"/>
+ <l:gentext key="See" text="&#21442;&#29031;"/>
+ <l:gentext key="see" text="&#21442;&#29031;"/>
+ <l:gentext key="seealso" text="&#21442;&#29031;"/>
+ <l:gentext key="SeeAlso" text="&#21442;&#29031;"/>
+ <l:gentext key="Seealso" text="&#21442;&#29031;"/>
+ <l:gentext key="Set" text="&#35373;&#23450;"/>
+ <l:gentext key="set" text="&#35373;&#23450;"/>
+ <l:gentext key="SetIndex" text="&#30446;&#27425;&#35373;&#23450;"/>
+ <l:gentext key="setindex" text="&#30446;&#27425;&#35373;&#23450;"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="&#12469;&#12452;&#12489;&#12496;&#12540;"/>
+ <l:gentext key="step" text="&#12473;&#12486;&#12483;&#12503;"/>
+ <l:gentext key="Step" text="&#12473;&#12486;&#12483;&#12503;"/>
+ <l:gentext key="table" text="&#34920;"/>
+ <l:gentext key="Table" text="&#34920;"/>
+ <l:gentext key="TIP" text="&#12486;&#12451;&#12483;&#12503;"/>
+ <l:gentext key="Tip" text="&#12486;&#12451;&#12483;&#12503;"/>
+ <l:gentext key="tip" text="&#12486;&#12451;&#12483;&#12503;"/>
+ <l:gentext key="WARNING" text="&#35686;&#21578;"/>
+ <l:gentext key="Warning" text="&#35686;&#21578;"/>
+ <l:gentext key="warning" text="&#35686;&#21578;"/>
+ <l:gentext key="and" text="&#12289;"/>
+ <l:gentext key="by" text="&#65306;"/>
+ <l:gentext key="Edited" text="&#20316;&#32773;"/>
+ <l:gentext key="edited" text="&#20316;&#32773;"/>
+ <l:gentext key="Editedby" text="&#20316;&#32773;&#65306;"/>
+ <l:gentext key="editedby" text="&#20316;&#32773;&#65306;"/>
+ <l:gentext key="in" text=""/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="&#35201;&#32032;&#12364;&#23384;&#22312;&#12375;&#12414;&#12379;&#12435;"/>
+ <l:gentext key="notes" text="&#27880;&#24847;"/>
+ <l:gentext key="Notes" text="&#27880;&#24847;"/>
+ <l:gentext key="Pgs" text="&#20583;&#29486;"/>
+ <l:gentext key="pgs" text="&#20583;&#29486;"/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="&#27880;&#24847;"/>
+ <l:gentext key="tablenotes" text="&#27880;&#24847;"/>
+ <l:gentext key="TableofContents" text="&#30446;&#27425;"/>
+ <l:gentext key="tableofcontents" text="&#30446;&#27425;"/>
+ <l:gentext key="unexpectedelementname" text="&#19981;&#26126;&#12394;&#35201;&#32032;&#21517;"/>
+ <l:gentext key="unsupported" text="&#12469;&#12509;&#12540;&#12488;&#12375;&#12414;&#12379;&#12435;"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="&#24335;&#30446;&#27425;"/>
+ <l:gentext key="ListofEquations" text="&#24335;&#30446;&#27425;"/>
+ <l:gentext key="ListofExamples" text="&#20363;&#30446;&#27425;"/>
+ <l:gentext key="listofexamples" text="&#20363;&#30446;&#27425;"/>
+ <l:gentext key="ListofFigures" text="&#22259;&#30446;&#27425;"/>
+ <l:gentext key="listoffigures" text="&#22259;&#30446;&#27425;"/>
+ <l:gentext key="listoftables" text="&#34920;&#30446;&#27425;"/>
+ <l:gentext key="ListofTables" text="&#34920;&#30446;&#27425;"/>
+ <l:gentext key="ListofUnknown" text="&#19981;&#26126;&#30446;&#27425;"/>
+ <l:gentext key="listofunknown" text="&#19981;&#26126;&#30446;&#27425;"/>
+ <l:gentext key="nav-home" text="&#12507;&#12540;&#12512;"/>
+ <l:gentext key="nav-next" text="&#27425;&#12398;&#12506;&#12540;&#12472;"/>
+ <l:gentext key="nav-next-sibling" text="&#26089;&#36865;&#12426;"/>
+ <l:gentext key="nav-prev" text="&#21069;&#12398;&#12506;&#12540;&#12472;"/>
+ <l:gentext key="nav-prev-sibling" text="&#24059;&#25147;&#12375;"/>
+ <l:gentext key="nav-up" text="&#19978;&#12395;&#25147;&#12427;"/>
+ <l:gentext key="index symbols" text="&#12471;&#12531;&#12508;&#12523;"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:dingbat key="startquote" text="&#12300;"/>
+ <l:dingbat key="endquote" text="&#12301;"/>
+ <l:dingbat key="nestedstartquote" text="&#12302;"/>
+ <l:dingbat key="nestedendquote" text="&#12303;"/>
+ <l:dingbat key="bullet" text="&#9679;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="family-given"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#20184;&#37682; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#31532;%n&#31456; %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#24335; %n. %t"/>
+ <l:template name="example" text="&#20363; %n. %t"/>
+ <l:template name="figure" text="&#22259; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#12497;&#12540;&#12488; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#25163;&#38918; %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="&#12503;&#12525;&#12480;&#12463;&#12471;&#12519;&#12531; %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#34920; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#20184;&#37682; %n. %t"/>
+ <l:template name="chapter" text="&#31532;%n&#31456; %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#31572;&#65306;&#160;%n"/>
+ <l:template name="appendix" text="&#20184;&#37682;%n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#31532;%n&#31456;"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#24335;&#160;%n"/>
+ <l:template name="example" text="&#20363; %n"/>
+ <l:template name="figure" text="&#22259; %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#12497;&#12540;&#12488; %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#25163;&#38918;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#21839;&#65306;&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#21839;&#65306;&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#34920; %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="%t&#38917;"/>
+ <l:template name="refsection" text="%t&#38917;"/>
+ <l:template name="refsect1" text="%t&#38917;"/>
+ <l:template name="refsect2" text="%t&#38917;"/>
+ <l:template name="refsect3" text="%t&#38917;"/>
+ <l:template name="sect1" text="%t&#38917;"/>
+ <l:template name="sect2" text="%t&#38917;"/>
+ <l:template name="sect3" text="%t&#38917;"/>
+ <l:template name="sect4" text="%t&#38917;"/>
+ <l:template name="sect5" text="%t&#38917;"/>
+ <l:template name="section" text="%t&#38917;"/>
+ <l:template name="simplesect" text="%t&#38917;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#38917;%n"/>
+ <l:template name="refsection" text="%t&#38917;"/>
+ <l:template name="refsect1" text="%t&#38917;"/>
+ <l:template name="refsect2" text="%t&#38917;"/>
+ <l:template name="refsect3" text="%t&#38917;"/>
+ <l:template name="sect1" text="&#38917;%n"/>
+ <l:template name="sect2" text="&#38917;%n"/>
+ <l:template name="sect3" text="&#38917;%n"/>
+ <l:template name="sect4" text="&#38917;%n"/>
+ <l:template name="sect5" text="&#38917;%n"/>
+ <l:template name="section" text="&#38917;%n"/>
+ <l:template name="simplesect" text="%t&#38917;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#12289; "/>
+ <l:template name="seplast" text=", &#12289; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#21442;&#29031; "/>
+ <l:template name="seealso" text="&#21442;&#29031; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#23550;&#35937;&#32773;: "/>
+ <l:template name="MsgLevel" text="&#12524;&#12505;&#12523;: "/>
+ <l:template name="MsgOrig" text="&#30330;&#20449;&#20803;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ko.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ko.xml
new file mode 100644
index 0000000..e4a1c29
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ko.xml
@@ -0,0 +1,452 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ko" english-language-name="Korean">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#52488;&#47197;"/>
+ <l:gentext key="abstract" text="&#52488;&#47197;"/>
+ <l:gentext key="Answer" text="&#45813;&#48320;"/>
+ <l:gentext key="answer" text="&#45813;&#48320;"/>
+ <l:gentext key="Appendix" text="&#48512;&#47197;"/>
+ <l:gentext key="appendix" text="&#48512;&#47197;"/>
+ <l:gentext key="Article" text="&#47928;&#49436;"/>
+ <l:gentext key="article" text="&#47928;&#49436;"/>
+ <l:gentext key="Bibliography" text="&#49436;&#51648;&#49324;&#54637;"/>
+ <l:gentext key="bibliography" text="&#49436;&#51648;&#49324;&#54637;"/>
+ <l:gentext key="Book" text="&#52293;"/>
+ <l:gentext key="book" text="&#52293;"/>
+ <l:gentext key="Caution" text="&#44221;&#44256;"/>
+ <l:gentext key="caution" text="&#44221;&#44256;"/>
+ <l:gentext key="CAUTION" text="[&#44221;&#44256;]"/>
+ <l:gentext key="Chapter" text="&#51109;"/>
+ <l:gentext key="chapter" text="&#51109;"/>
+ <l:gentext key="Colophon" text="&#54032;&#44428;"/>
+ <l:gentext key="colophon" text="&#54032;&#44428;"/>
+ <l:gentext key="Copyright" text="&#51200;&#51089;&#44428;"/>
+ <l:gentext key="copyright" text="&#51200;&#51089;&#44428;"/>
+ <l:gentext key="Dedication" text="&#48148;&#52824;&#45716; &#44544;"/>
+ <l:gentext key="dedication" text="&#48148;&#52824;&#45716; &#44544;"/>
+ <l:gentext key="Edition" text="&#50670;&#51020;"/>
+ <l:gentext key="edition" text="&#50670;&#51020;"/>
+ <l:gentext key="Equation" text="&#49688;&#49885;"/>
+ <l:gentext key="equation" text="&#49688;&#49885;"/>
+ <l:gentext key="Example" text="&#50696;"/>
+ <l:gentext key="example" text="&#50696;"/>
+ <l:gentext key="Figure" text="&#44536;&#47548;"/>
+ <l:gentext key="figure" text="&#44536;&#47548;"/>
+ <l:gentext key="Glossary" text="&#50857;&#50612;&#54644;&#49444;"/>
+ <l:gentext key="glossary" text="&#50857;&#50612;&#54644;&#49444;"/>
+ <l:gentext key="GlossSee" text="&#49332;&#54196;&#48380; &#45236;&#50857;"/>
+ <l:gentext key="glosssee" text="&#49332;&#54196;&#48380; &#45236;&#50857;"/>
+ <l:gentext key="GlossSeeAlso" text="&#45796;&#47480; &#49332;&#54196;&#48380; &#45236;&#50857;"/>
+ <l:gentext key="glossseealso" text="&#45796;&#47480; &#49332;&#54196;&#48380; &#45236;&#50857;"/>
+ <l:gentext key="Important" text="&#51473;&#50836;"/>
+ <l:gentext key="important" text="&#51473;&#50836;"/>
+ <l:gentext key="IMPORTANT" text="[&#51473;&#50836;]"/>
+ <l:gentext key="Index" text="&#49353;&#51064;"/>
+ <l:gentext key="index" text="&#49353;&#51064;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="&#48277;&#51201; &#44277;&#51648;"/>
+ <l:gentext key="legalnotice" text="&#48277;&#51201; &#44277;&#51648;"/>
+ <l:gentext key="MsgAud" text="&#48155;&#45716; &#51060;"/>
+ <l:gentext key="msgaud" text="&#48155;&#45716; &#51060;"/>
+ <l:gentext key="MsgLevel" text="&#51473;&#50836;&#46020;"/>
+ <l:gentext key="msglevel" text="&#51473;&#50836;&#46020;"/>
+ <l:gentext key="MsgOrig" text="&#48372;&#45236;&#45716; &#51060;"/>
+ <l:gentext key="msgorig" text="&#48372;&#45236;&#45716; &#51060;"/>
+ <l:gentext key="Note" text="&#52280;&#44256;"/>
+ <l:gentext key="note" text="&#52280;&#44256;"/>
+ <l:gentext key="NOTE" text="[&#52280;&#44256;]"/>
+ <l:gentext key="Part" text="&#48512;"/>
+ <l:gentext key="part" text="&#48512;"/>
+ <l:gentext key="Preface" text="&#49436;&#47928;"/>
+ <l:gentext key="preface" text="&#49436;&#47928;"/>
+ <l:gentext key="Procedure" text="&#51208;&#52264;"/>
+ <l:gentext key="procedure" text="&#51208;&#52264;"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="&#54196;&#45252;"/>
+ <l:gentext key="published" text="&#54196;&#45252;"/>
+ <l:gentext key="Question" text="&#51656;&#47928;"/>
+ <l:gentext key="question" text="&#51656;&#47928;"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#52280;&#44256;&#47928;&#54732;"/>
+ <l:gentext key="reference" text="&#52280;&#44256;&#47928;&#54732;"/>
+ <l:gentext key="RefName" text="&#51228;&#47785;"/>
+ <l:gentext key="refname" text="&#51228;&#47785;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#50836;&#50557;"/>
+ <l:gentext key="refsynopsisdiv" text="&#50836;&#50557;"/>
+ <l:gentext key="RevHistory" text="&#44256;&#52828; &#44284;&#51221;"/>
+ <l:gentext key="revhistory" text="&#44256;&#52828; &#44284;&#51221;"/>
+ <l:gentext key="Revision" text="&#44256;&#52840;"/>
+ <l:gentext key="revision" text="&#44256;&#52840;"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="&#51208;"/>
+ <l:gentext key="section" text="&#51208;"/>
+ <l:gentext key="See" text="&#49332;&#54196;&#48380; &#45236;&#50857;"/>
+ <l:gentext key="see" text="&#49332;&#54196;&#48380; &#45236;&#50857;"/>
+ <l:gentext key="Seealso" text="&#49332;&#54196;&#48380; &#45796;&#47480; &#45236;&#50857;"/>
+ <l:gentext key="SeeAlso" text="[&#49332;&#54196;&#48380; &#45796;&#47480; &#45236;&#50857;]"/>
+ <l:gentext key="seealso" text="[&#49332;&#54196;&#48380; &#45796;&#47480; &#45236;&#50857;]"/>
+ <l:gentext key="Set" text="&#51204;&#51665;"/>
+ <l:gentext key="set" text="&#51204;&#51665;"/>
+ <l:gentext key="SetIndex" text="&#51204;&#51665; &#49353;&#51064;"/>
+ <l:gentext key="setindex" text="&#51204;&#51665; &#49353;&#51064;"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="&#45927;&#48537;&#51076;"/>
+ <l:gentext key="Step" text="&#45800;&#44228;"/>
+ <l:gentext key="step" text="&#45800;&#44228;"/>
+ <l:gentext key="Table" text="&#54364;"/>
+ <l:gentext key="table" text="&#54364;"/>
+ <l:gentext key="Tip" text="&#51089;&#51008; &#51221;&#48372;"/>
+ <l:gentext key="tip" text="&#51089;&#51008; &#51221;&#48372;"/>
+ <l:gentext key="TIP" text="[&#51089;&#51008; &#51221;&#48372;]"/>
+ <l:gentext key="WARNING" text="&#51452;&#51032;!"/>
+ <l:gentext key="Warning" text="&#51452;&#51032;"/>
+ <l:gentext key="warning" text="&#51452;&#51032;"/>
+ <l:gentext key="and" text="&#44536;&#47532;&#44256;"/>
+ <l:gentext key="by" text="&#51648;&#51008;&#51060;"/>
+ <l:gentext key="Edited" text="&#50670;&#51020;"/>
+ <l:gentext key="edited" text="&#50670;&#51020;"/>
+ <l:gentext key="Editedby" text="&#50670;&#51008;&#51060;"/>
+ <l:gentext key="editedby" text="&#50670;&#51008;&#51060;"/>
+ <l:gentext key="in" text="-"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="&#51316;&#51116;&#54616;&#51648; &#50506;&#45716; &#44592;&#52488;&#50836;&#49548;&#51077;&#45768;&#45796;"/>
+ <l:gentext key="notes" text="&#51452;&#49437;"/>
+ <l:gentext key="Notes" text="&#51452;&#49437;"/>
+ <l:gentext key="Pgs" text="Pgs."/>
+ <l:gentext key="pgs" text="Pgs."/>
+ <l:gentext key="Revisedby" text="&#44256;&#52828;&#51060; "/>
+ <l:gentext key="revisedby" text="&#44256;&#52828;&#51060; "/>
+ <l:gentext key="TableNotes" text="&#52280;&#44256;"/>
+ <l:gentext key="tablenotes" text="&#52280;&#44256;"/>
+ <l:gentext key="TableofContents" text="&#52264;&#47168;"/>
+ <l:gentext key="tableofcontents" text="&#52264;&#47168;"/>
+ <l:gentext key="unexpectedelementname" text="&#50508; &#49688; &#50630;&#45716; &#44592;&#52488;&#50836;&#49548; &#51060;&#47492;&#51077;&#45768;&#45796;"/>
+ <l:gentext key="unsupported" text="&#51648;&#50896;&#46104;&#51648; &#50506;&#49845;&#45768;&#45796;"/>
+ <l:gentext key="xrefto" text="&#51060; &#44275;&#51012; &#52280;&#51312;&#54616;&#49464;&#50836; : "/>
+ <l:gentext key="listofequations" text="&#49688;&#49885; &#47785;&#47197;"/>
+ <l:gentext key="ListofEquations" text="&#49688;&#49885; &#47785;&#47197;"/>
+ <l:gentext key="ListofExamples" text="&#50696; &#47785;&#47197;"/>
+ <l:gentext key="listofexamples" text="&#50696; &#47785;&#47197;"/>
+ <l:gentext key="ListofFigures" text="&#44536;&#47548; &#47785;&#47197;"/>
+ <l:gentext key="listoffigures" text="&#44536;&#47548; &#47785;&#47197;"/>
+ <l:gentext key="listoftables" text="&#54364; &#47785;&#47197;"/>
+ <l:gentext key="ListofTables" text="&#54364; &#47785;&#47197;"/>
+ <l:gentext key="ListofUnknown" text="&#44592;&#53440; &#47785;&#47197;"/>
+ <l:gentext key="listofunknown" text="&#44592;&#53440; &#47785;&#47197;"/>
+ <l:gentext key="nav-home" text="&#52376;&#51020;&#51004;&#47196;"/>
+ <l:gentext key="nav-next" text="&#45796;&#51020;"/>
+ <l:gentext key="nav-next-sibling" text="&#45796;&#51020;&#51004;&#47196; &#44148;&#45320;&#46848;"/>
+ <l:gentext key="nav-prev" text="&#51060;&#51204;"/>
+ <l:gentext key="nav-prev-sibling" text="&#51060;&#51204;&#51004;&#47196; &#44148;&#45320;&#46848;"/>
+ <l:gentext key="nav-up" text="&#50948;&#47196;"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#48512;&#47197; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="%n&#51109;. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#49688;&#49885; %n. %t"/>
+ <l:template name="example" text="&#50696; %n. %t"/>
+ <l:template name="figure" text="&#44536;&#47548; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="%n&#48512;. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#51208;&#52264;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#54364; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#48512;&#47197; %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="%n&#51109;. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#45813;&#48320;&#160;%n"/>
+ <l:template name="appendix" text="&#48512;&#47197; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="%n&#51109;. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#49688;&#49885;&#160;%n"/>
+ <l:template name="example" text="&#50696; %n. %t"/>
+ <l:template name="figure" text="&#44536;&#47548; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="%n&#48512;. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#51208;&#52264;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#51656;&#47928;&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#51656;&#47928;&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#54364; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="%n&#51208;"/>
+ <l:template name="sect2" text="%n&#51208;"/>
+ <l:template name="sect3" text="%n&#51208;"/>
+ <l:template name="sect4" text="%n&#51208;"/>
+ <l:template name="sect5" text="%n&#51208;"/>
+ <l:template name="section" text="%n&#51208;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#44536;&#47532;&#44256; "/>
+ <l:template name="seplast" text=", &#44536;&#47532;&#44256; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#49332;&#54196;&#48380; &#45236;&#50857; "/>
+ <l:template name="seealso" text="&#45796;&#47480; &#49332;&#54196;&#48380; &#45236;&#50857; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#48155;&#45716; &#51060;: "/>
+ <l:template name="MsgLevel" text="&#51473;&#50836;&#46020;: "/>
+ <l:template name="MsgOrig" text="&#48372;&#45236;&#45716; &#51060;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.dtd b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.dtd
new file mode 100644
index 0000000..b6fd0c1
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.dtd
@@ -0,0 +1,45 @@
+<!ENTITY % prefix "l">
+
+<!ENTITY % xmlns "xmlns:%prefix;">
+<!ENTITY % uri "'http://docbook.sourceforge.net/xmlns/l10n/1.0'">
+
+<!ENTITY % i18n "%prefix;:i18n">
+<!ENTITY % l10n "%prefix;:l10n">
+<!ENTITY % gentext "%prefix;:gentext">
+<!ENTITY % dingbat "%prefix;:dingbat">
+<!ENTITY % context "%prefix;:context">
+<!ENTITY % template "%prefix;:template">
+
+<!ELEMENT %i18n; ((%l10n;)+)>
+<!ATTLIST %i18n;
+ %xmlns; CDATA #FIXED %uri;
+>
+
+<!ELEMENT %l10n; (%gentext;|%dingbat;|%context;)*>
+<!ATTLIST %l10n;
+ %xmlns; CDATA #FIXED %uri;
+ language CDATA #REQUIRED
+>
+
+<!ELEMENT %gentext; EMPTY>
+<!ATTLIST %gentext;
+ key CDATA #REQUIRED
+ text CDATA #REQUIRED
+>
+
+<!ELEMENT %dingbat; EMPTY>
+<!ATTLIST %dingbat;
+ key CDATA #REQUIRED
+ text CDATA #REQUIRED
+>
+
+<!ELEMENT %context; ((%template;)+)>
+<!ATTLIST %context;
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT %template; EMPTY>
+<!ATTLIST %template;
+ name CDATA #REQUIRED
+ text CDATA #REQUIRED
+>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.xml
new file mode 100644
index 0000000..d74e0b6
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/l10n.xml
@@ -0,0 +1,83 @@
+<?xml version='1.0'?>
+<!DOCTYPE l:i18n SYSTEM "l10n.dtd" [
+<!ENTITY af SYSTEM "af.xml">
+<!ENTITY bg SYSTEM "bg.xml">
+<!ENTITY ca SYSTEM "ca.xml">
+<!ENTITY cs SYSTEM "cs.xml">
+<!ENTITY da SYSTEM "da.xml">
+<!ENTITY de SYSTEM "de.xml">
+<!ENTITY el SYSTEM "el.xml">
+<!ENTITY en SYSTEM "en.xml">
+<!ENTITY es SYSTEM "es.xml">
+<!ENTITY et SYSTEM "et.xml">
+<!ENTITY eu SYSTEM "eu.xml">
+<!ENTITY fi SYSTEM "fi.xml">
+<!ENTITY fr SYSTEM "fr.xml">
+<!ENTITY he SYSTEM "he.xml">
+<!ENTITY hu SYSTEM "hu.xml">
+<!ENTITY id SYSTEM "id.xml">
+<!ENTITY it SYSTEM "it.xml">
+<!ENTITY ja SYSTEM "ja.xml">
+<!ENTITY ko SYSTEM "ko.xml">
+<!ENTITY lit SYSTEM "lt.xml">
+<!ENTITY nl SYSTEM "nl.xml">
+<!ENTITY nn SYSTEM "nn.xml">
+<!ENTITY no SYSTEM "no.xml">
+<!ENTITY pl SYSTEM "pl.xml">
+<!ENTITY pt SYSTEM "pt.xml">
+<!ENTITY pt_br SYSTEM "pt_br.xml">
+<!ENTITY ro SYSTEM "ro.xml">
+<!ENTITY ru SYSTEM "ru.xml">
+<!ENTITY sk SYSTEM "sk.xml">
+<!ENTITY sl SYSTEM "sl.xml">
+<!ENTITY sr SYSTEM "sr.xml">
+<!ENTITY sv SYSTEM "sv.xml">
+<!ENTITY th SYSTEM "th.xml">
+<!ENTITY tr SYSTEM "tr.xml">
+<!ENTITY uk SYSTEM "uk.xml">
+<!ENTITY vi SYSTEM "vi.xml">
+<!ENTITY xh SYSTEM "xh.xml">
+<!ENTITY zh_cn SYSTEM "zh_cn.xml">
+<!ENTITY zh_tw SYSTEM "zh_tw.xml">
+]>
+<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">
+&af;
+&bg;
+&ca;
+&cs;
+&da;
+&de;
+&el;
+&en;
+&es;
+&et;
+&eu;
+&fi;
+&fr;
+&he;
+&hu;
+&id;
+&it;
+&ja;
+&ko;
+&lit;
+&nl;
+&nn;
+&no;
+&pl;
+&pt;
+&pt_br;
+&ro;
+&ru;
+&sk;
+&sl;
+&sr;
+&sv;
+&th;
+&tr;
+&uk;
+&vi;
+&xh;
+&zh_cn;
+&zh_tw;
+</l:i18n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/lt.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/lt.xml
new file mode 100644
index 0000000..5b4891d
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/lt.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="lt" english-language-name="Lithuanian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Santrauka"/>
+ <l:gentext key="abstract" text="Santrauka"/>
+ <l:gentext key="Answer" text="Ats:"/>
+ <l:gentext key="answer" text="Ats:"/>
+ <l:gentext key="Appendix" text="Priedas"/>
+ <l:gentext key="appendix" text="priedas"/>
+ <l:gentext key="Article" text="Straipsnis"/>
+ <l:gentext key="article" text="Straipsnis"/>
+ <l:gentext key="Bibliography" text="Bibliografija"/>
+ <l:gentext key="bibliography" text="Bibliografija"/>
+ <l:gentext key="Book" text="Knyga"/>
+ <l:gentext key="book" text="Knyga"/>
+ <l:gentext key="CAUTION" text="ATSARGIAI"/>
+ <l:gentext key="Caution" text="Atsargiai"/>
+ <l:gentext key="caution" text="Atsargiai"/>
+ <l:gentext key="Chapter" text="Skyrius"/>
+ <l:gentext key="chapter" text="skyrius"/>
+ <l:gentext key="Colophon" text="&#302;&#382;anga &#303; knyg&#261;"/>
+ <l:gentext key="colophon" text="&#302;&#382;anga &#303; knyg&#336;"/>
+ <l:gentext key="Copyright" text="Autorin&#279;s teis&#279;s"/>
+ <l:gentext key="copyright" text="Autorin&#279;s teis&#279;s"/>
+ <l:gentext key="Dedication" text="Dedikacija"/>
+ <l:gentext key="dedication" text="Dedikacija"/>
+ <l:gentext key="Edition" text="Leidimas"/>
+ <l:gentext key="edition" text="Leidimas"/>
+ <l:gentext key="Equation" text="Lygtis"/>
+ <l:gentext key="equation" text="Lygtis"/>
+ <l:gentext key="Example" text="Pavyzdys"/>
+ <l:gentext key="example" text="Pavyzdys"/>
+ <l:gentext key="Figure" text="Pav."/>
+ <l:gentext key="figure" text="Pav."/>
+ <l:gentext key="Glossary" text="Termin&#371; &#382;odyn&#279;lis"/>
+ <l:gentext key="glossary" text="Termin&#371; &#382;odyn&#279;lis"/>
+ <l:gentext key="GlossSee" text="Termin&#261; &#382;r."/>
+ <l:gentext key="glosssee" text="Termin&#261; &#382;r."/>
+ <l:gentext key="GlossSeeAlso" text="Taip pat &#382;r."/>
+ <l:gentext key="glossseealso" text="Taip pat &#382;r."/>
+ <l:gentext key="IMPORTANT" text="SVARBU"/>
+ <l:gentext key="important" text="Svarbu"/>
+ <l:gentext key="Important" text="Svarbu"/>
+ <l:gentext key="Index" text="Rodykl&#279;"/>
+ <l:gentext key="index" text="Rodykl&#279;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Teisin&#279; pastaba"/>
+ <l:gentext key="legalnotice" text="Teisin&#279; pastaba"/>
+ <l:gentext key="MsgAud" text="Auditorija"/>
+ <l:gentext key="msgaud" text="Auditorija"/>
+ <l:gentext key="MsgLevel" text="Lygmuo"/>
+ <l:gentext key="msglevel" text="Lygmuo"/>
+ <l:gentext key="MsgOrig" text="Kilm&#279;"/>
+ <l:gentext key="msgorig" text="Kilm&#279;"/>
+ <l:gentext key="NOTE" text="PASTABA"/>
+ <l:gentext key="Note" text="Pastaba"/>
+ <l:gentext key="note" text="Pastaba"/>
+ <l:gentext key="Part" text="Dalis"/>
+ <l:gentext key="part" text="Dalis"/>
+ <l:gentext key="Preface" text="&#302;&#382;anga"/>
+ <l:gentext key="preface" text="&#302;&#382;anga"/>
+ <l:gentext key="Procedure" text="Proced&#363;ra"/>
+ <l:gentext key="procedure" text="Proced&#363;ra"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="I&#353;leistas"/>
+ <l:gentext key="published" text="I&#353;leistas"/>
+ <l:gentext key="Question" text="Klausimas:"/>
+ <l:gentext key="question" text="Klausimas:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Nuoroda"/>
+ <l:gentext key="reference" text="Nuoroda"/>
+ <l:gentext key="RefName" text="Pavadinimas"/>
+ <l:gentext key="refname" text="Pavadinimas"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Trumpa ap&#382;valga"/>
+ <l:gentext key="refsynopsisdiv" text="Trumpa ap&#382;valga"/>
+ <l:gentext key="RevHistory" text="Pataisym&#371; istorija"/>
+ <l:gentext key="revhistory" text="Pataisym&#371; istorija"/>
+ <l:gentext key="revision" text="Pataisytas leidimas"/>
+ <l:gentext key="Revision" text="Pataisytas leidimas"/>
+ <l:gentext key="sect1" text="Skyrius"/>
+ <l:gentext key="sect2" text="Skyrius"/>
+ <l:gentext key="sect3" text="Skyrius"/>
+ <l:gentext key="sect4" text="Skyrius"/>
+ <l:gentext key="sect5" text="Skyrius"/>
+ <l:gentext key="section" text="Skyrius"/>
+ <l:gentext key="Section" text="Skyrius"/>
+ <l:gentext key="see" text="&#382;r."/>
+ <l:gentext key="seealso" text="&#382;r."/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="setindex" text="Set Index"/>
+ <l:gentext key="SetIndex" text="Set Index"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="step" text="&#382;ingsnis"/>
+ <l:gentext key="Step" text="&#381;ingsnis"/>
+ <l:gentext key="Table" text="Lentel&#279;"/>
+ <l:gentext key="table" text="Lentel&#279;"/>
+ <l:gentext key="tip" text="Patarimas"/>
+ <l:gentext key="TIP" text="PATARIMAS"/>
+ <l:gentext key="Tip" text="Patarimas"/>
+ <l:gentext key="Warning" text="&#302;sp&#279;jimas"/>
+ <l:gentext key="warning" text="&#302;sp&#279;jimas"/>
+ <l:gentext key="WARNING" text="&#302;SP&#278;JIMAS"/>
+ <l:gentext key="and" text="ir"/>
+ <l:gentext key="by" text="by"/>
+ <l:gentext key="Edited" text="Redaguotas"/>
+ <l:gentext key="edited" text="Redaguotas"/>
+ <l:gentext key="Editedby" text="Redaguotas:"/>
+ <l:gentext key="editedby" text="Redaguotas:"/>
+ <l:gentext key="in" text="in"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="neegzistuojantis elementas"/>
+ <l:gentext key="notes" text="Pastabos"/>
+ <l:gentext key="Notes" text="Pastabos"/>
+ <l:gentext key="Pgs" text="Pgs."/>
+ <l:gentext key="pgs" text="Pgs."/>
+ <l:gentext key="Revisedby" text="Patais&#279;: "/>
+ <l:gentext key="revisedby" text="Patais&#279;: "/>
+ <l:gentext key="TableNotes" text="Lentel&#279;s pastabos"/>
+ <l:gentext key="tablenotes" text="Lentel&#279;s pastabos"/>
+ <l:gentext key="TableofContents" text="T&#363;rinys"/>
+ <l:gentext key="tableofcontents" text="T&#363;rinys"/>
+ <l:gentext key="unexpectedelementname" text="Unexpected element name"/>
+ <l:gentext key="unsupported" text="nepalaikomas"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="Lyg&#269;i&#371; s&#261;ra&#353;as"/>
+ <l:gentext key="ListofEquations" text="Lyg&#269;i&#371; s&#261;ra&#353;as"/>
+ <l:gentext key="ListofExamples" text="Pavyzd&#382;i&#371; s&#261;ra&#353;as"/>
+ <l:gentext key="listofexamples" text="Pavyzd&#382;i&#371; s&#261;ra&#353;as"/>
+ <l:gentext key="ListofFigures" text="Pav. s&#261;ra&#353;as"/>
+ <l:gentext key="listoffigures" text="Pav. s&#261;ra&#353;as"/>
+ <l:gentext key="listoftables" text="Lenteli&#371; s&#261;ra&#353;as"/>
+ <l:gentext key="ListofTables" text="Lenteli&#371; s&#261;ra&#353;as"/>
+ <l:gentext key="ListofUnknown" text="Ne&#382;inomas s&#261;ra&#353;as"/>
+ <l:gentext key="listofunknown" text="Ne&#382;inomas s&#261;ra&#353;as"/>
+ <l:gentext key="nav-home" text="Namai"/>
+ <l:gentext key="nav-next" text="Sekantis"/>
+ <l:gentext key="nav-next-sibling" text="Fast Forward"/>
+ <l:gentext key="nav-prev" text="Paskesnis"/>
+ <l:gentext key="nav-prev-sibling" text="Fast Backward"/>
+ <l:gentext key="nav-up" text="&#302; vir&#353;&#371;"/>
+ <l:gentext key="nav-toc" text="ToC"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="reference" text="Reference (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Priedas&#160;%n.&#160;%t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Skyrius&#160;%n.&#160;%t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Lygtis&#160;%n.&#160;%t"/>
+ <l:template name="example" text="Pavyzdys&#160;%n.&#160;%t"/>
+ <l:template name="figure" text="Pav.&#160;%n.&#160;%t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Dalis&#160;%n.&#160;%t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Proced&#363;ra&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Lentel&#279;&#160;%n.&#160;%t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Priedas&#160;%n.&#160;%t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="Skyrius&#160;%n.&#160;%t"/>
+ <l:template name="sect1" text="%n.&#160;%t"/>
+ <l:template name="sect2" text="%n.&#160;%t"/>
+ <l:template name="sect3" text="%n.&#160;%t"/>
+ <l:template name="sect4" text="%n.&#160;%t"/>
+ <l:template name="sect5" text="%n.&#160;%t"/>
+ <l:template name="section" text="%n.&#160;%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Ats:&#160;%n"/>
+ <l:template name="appendix" text="Priedas&#160;%n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Skyrius&#160;%n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Lygtis&#160;%n"/>
+ <l:template name="example" text="Pavyzdys&#160;%n"/>
+ <l:template name="figure" text="Pav.&#160;%n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Dalis&#160;%n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Proced&#363;ra&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Klausimas:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Klausimas:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Lentel&#279;&#160;%n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="section" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="the section called &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Skyrius&#160;%n"/>
+ <l:template name="refsection" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="the section called &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Skyrius&#160;%n"/>
+ <l:template name="sect2" text="Skyrius&#160;%n"/>
+ <l:template name="sect3" text="Skyrius&#160;%n"/>
+ <l:template name="sect4" text="Skyrius&#160;%n"/>
+ <l:template name="sect5" text="Skyrius&#160;%n"/>
+ <l:template name="section" text="Skyrius&#160;%n"/>
+ <l:template name="simplesect" text="the section called &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" ir "/>
+ <l:template name="seplast" text=", ir "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Termin&#261; &#382;r. "/>
+ <l:template name="seealso" text="Taip pat &#382;r. "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Auditorija: "/>
+ <l:template name="MsgLevel" text="Lygmuo: "/>
+ <l:template name="MsgOrig" text="Kilm&#279;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nl.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nl.xml
new file mode 100644
index 0000000..fe67e8d
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nl.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nl" english-language-name="Dutch">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Samenvatting"/>
+ <l:gentext key="abstract" text="Samenvatting"/>
+ <l:gentext key="Answer" text="Antwoord:"/>
+ <l:gentext key="answer" text="Antwoord:"/>
+ <l:gentext key="Appendix" text="Aanhangsel"/>
+ <l:gentext key="appendix" text="aanhangsel"/>
+ <l:gentext key="Article" text="Artikel"/>
+ <l:gentext key="article" text="Artikel"/>
+ <l:gentext key="Bibliography" text="Literatuurlijst"/>
+ <l:gentext key="bibliography" text="Literatuurlijst"/>
+ <l:gentext key="Book" text="Boek"/>
+ <l:gentext key="book" text="Boek"/>
+ <l:gentext key="CAUTION" text="LET OP"/>
+ <l:gentext key="Caution" text="Let op"/>
+ <l:gentext key="caution" text="Let op"/>
+ <l:gentext key="Chapter" text="Hoofdstuk"/>
+ <l:gentext key="chapter" text="hoofdstuk"/>
+ <l:gentext key="Colophon" text="Colofon"/>
+ <l:gentext key="colophon" text="Colofon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Opdracht"/>
+ <l:gentext key="dedication" text="Opdracht"/>
+ <l:gentext key="Edition" text="Uitgave"/>
+ <l:gentext key="edition" text="Uitgave"/>
+ <l:gentext key="Equation" text="Vergelijking"/>
+ <l:gentext key="equation" text="Vergelijking"/>
+ <l:gentext key="Example" text="Voorbeeld"/>
+ <l:gentext key="example" text="Voorbeeld"/>
+ <l:gentext key="Figure" text="Figuur"/>
+ <l:gentext key="figure" text="Figuur"/>
+ <l:gentext key="Glossary" text="Woordenlijst"/>
+ <l:gentext key="glossary" text="Woordenlijst"/>
+ <l:gentext key="GlossSee" text="Zie"/>
+ <l:gentext key="glosssee" text="Zie"/>
+ <l:gentext key="GlossSeeAlso" text="Zie ook"/>
+ <l:gentext key="glossseealso" text="Zie ook"/>
+ <l:gentext key="IMPORTANT" text="BELANGRIJK"/>
+ <l:gentext key="Important" text="Belangrijk"/>
+ <l:gentext key="important" text="Belangrijk"/>
+ <l:gentext key="Index" text="Register"/>
+ <l:gentext key="index" text="Register"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Bericht"/>
+ <l:gentext key="legalnotice" text="Bericht"/>
+ <l:gentext key="MsgAud" text="Doelgroep"/>
+ <l:gentext key="msgaud" text="Doelgroep"/>
+ <l:gentext key="MsgLevel" text="Niveau"/>
+ <l:gentext key="msglevel" text="Niveau"/>
+ <l:gentext key="MsgOrig" text="Herkomst"/>
+ <l:gentext key="msgorig" text="Herkomst"/>
+ <l:gentext key="NOTE" text="OPMERKING"/>
+ <l:gentext key="Note" text="Opmerking"/>
+ <l:gentext key="note" text="Opmerking"/>
+ <l:gentext key="Part" text="Deel"/>
+ <l:gentext key="part" text="Deel"/>
+ <l:gentext key="Preface" text="Voorwoord"/>
+ <l:gentext key="preface" text="Voorwoord"/>
+ <l:gentext key="Procedure" text="Procedure"/>
+ <l:gentext key="procedure" text="Procedure"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Uitgegeven"/>
+ <l:gentext key="published" text="Uitgegeven"/>
+ <l:gentext key="Question" text="Vraag:"/>
+ <l:gentext key="question" text="Vraag:"/>
+ <l:gentext key="RefEntry" text="Referentielemma"/>
+ <l:gentext key="refentry" text="Referentielemma"/>
+ <l:gentext key="Reference" text="Referentie"/>
+ <l:gentext key="reference" text="Referentie"/>
+ <l:gentext key="RefName" text="Referentienaam"/>
+ <l:gentext key="refname" text="Referentienaam"/>
+ <l:gentext key="RefSection" text="Referentieparagraaf"/>
+ <l:gentext key="refsection" text="Referentieparagraaf"/>
+ <l:gentext key="RefSynopsisDiv" text="Referentiesamenvatting"/>
+ <l:gentext key="refsynopsisdiv" text="Referentiesamenvatting"/>
+ <l:gentext key="RevHistory" text="Wijzigingen"/>
+ <l:gentext key="revhistory" text="Wijzigingen"/>
+ <l:gentext key="Revision" text="Herziening"/>
+ <l:gentext key="revision" text="Herziening"/>
+ <l:gentext key="sect1" text="Paragraaf"/>
+ <l:gentext key="sect2" text="Paragraaf"/>
+ <l:gentext key="sect3" text="Paragraaf"/>
+ <l:gentext key="sect4" text="Paragraaf"/>
+ <l:gentext key="sect5" text="Paragraaf"/>
+ <l:gentext key="Section" text="Paragraaf"/>
+ <l:gentext key="section" text="paragraaf"/>
+ <l:gentext key="See" text="Zie"/>
+ <l:gentext key="see" text="Zie"/>
+ <l:gentext key="SeeAlso" text="Zie ook"/>
+ <l:gentext key="Seealso" text="Zie ook"/>
+ <l:gentext key="seealso" text="Zie ook"/>
+ <l:gentext key="Set" text="Verzameling"/>
+ <l:gentext key="set" text="Verzameling"/>
+ <l:gentext key="SetIndex" text="Hoofdregister"/>
+ <l:gentext key="setindex" text="Hoofdregister"/>
+ <l:gentext key="Sidebar" text="Excursie"/>
+ <l:gentext key="sidebar" text="excursie"/>
+ <l:gentext key="Step" text="Stap"/>
+ <l:gentext key="step" text="stap"/>
+ <l:gentext key="Table" text="Tabel"/>
+ <l:gentext key="table" text="Tabel"/>
+ <l:gentext key="TIP" text="TIP"/>
+ <l:gentext key="Tip" text="Tip"/>
+ <l:gentext key="tip" text="Tip"/>
+ <l:gentext key="WARNING" text="WAARSCHUWING"/>
+ <l:gentext key="Warning" text="Waarschuwing"/>
+ <l:gentext key="warning" text="Waarschuwing"/>
+ <l:gentext key="and" text="en"/>
+ <l:gentext key="by" text="door"/>
+ <l:gentext key="Edited" text="Redactie"/>
+ <l:gentext key="edited" text="Redactie"/>
+ <l:gentext key="Editedby" text="Redactie door"/>
+ <l:gentext key="editedby" text="Redactie door"/>
+ <l:gentext key="in" text="in"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="niet bestaand element"/>
+ <l:gentext key="notes" text="Noten"/>
+ <l:gentext key="Notes" text="Noten"/>
+ <l:gentext key="Pgs" text="blz."/>
+ <l:gentext key="pgs" text="blz."/>
+ <l:gentext key="Revisedby" text="Herzien door: "/>
+ <l:gentext key="revisedby" text="Herzien door: "/>
+ <l:gentext key="TableNotes" text="Opmerkingen"/>
+ <l:gentext key="tablenotes" text="Opmerkingen"/>
+ <l:gentext key="TableofContents" text="Inhoudsopgave"/>
+ <l:gentext key="tableofcontents" text="Inhoudsopgave"/>
+ <l:gentext key="unexpectedelementname" text="ONVERWACHT-ELEMENT"/>
+ <l:gentext key="unsupported" text="niet ondersteund"/>
+ <l:gentext key="xrefto" text="verwijzing naar"/>
+ <l:gentext key="listofequations" text="Lijst van vergelijkingen"/>
+ <l:gentext key="ListofEquations" text="Lijst van vergelijkingen"/>
+ <l:gentext key="ListofExamples" text="Lijst van voorbeelden"/>
+ <l:gentext key="listofexamples" text="Lijst van voorbeelden"/>
+ <l:gentext key="ListofFigures" text="Lijst van figuren"/>
+ <l:gentext key="listoffigures" text="Lijst van figuren"/>
+ <l:gentext key="listoftables" text="Lijst van tabellen"/>
+ <l:gentext key="ListofTables" text="Lijst van tabellen"/>
+ <l:gentext key="ListofUnknown" text="Lijst van ???"/>
+ <l:gentext key="listofunknown" text="Lijst van ???"/>
+ <l:gentext key="nav-home" text="Begin"/>
+ <l:gentext key="nav-next" text="Volgende"/>
+ <l:gentext key="nav-next-sibling" text="Verder vooruit"/>
+ <l:gentext key="nav-prev" text="Terug"/>
+ <l:gentext key="nav-prev-sibling" text="Verder terug"/>
+ <l:gentext key="nav-up" text="Omhoog"/>
+ <l:gentext key="Draft" text="Ontwerp"/>
+ <l:gentext key="above" text="boven"/>
+ <l:gentext key="below" text="onder"/>
+ <l:gentext key="index symbols" text="Symbolen"/>
+ <l:gentext key="sectioncalled" text="de paragraaf"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz&#235;&#239;&#233;"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ&#203;&#207;&#201;"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Aanhangsel %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Hoofdstuk %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Vergelijking %n. %t"/>
+ <l:template name="example" text="Voorbeeld %n. %t"/>
+ <l:template name="figure" text="Figuur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Deel %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedure&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Aanhangsel %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="Hoofdstuk %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Antwoord:&#160;%n"/>
+ <l:template name="appendix" text="Aanhangsel %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Hoofdstuk %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Vergelijking&#160;%n"/>
+ <l:template name="example" text="Voorbeeld %n. %t"/>
+ <l:template name="figure" text="Figuur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Deel %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedure&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Vraag:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Vraag:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="section" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="de paragraaf &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="de paragraaf &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Paragraaf %n"/>
+ <l:template name="sect2" text="Paragraaf %n"/>
+ <l:template name="sect3" text="Paragraaf %n"/>
+ <l:template name="sect4" text="Paragraaf %n"/>
+ <l:template name="sect5" text="Paragraaf %n"/>
+ <l:template name="section" text="Paragraaf %n"/>
+ <l:template name="simplesect" text="de paragraaf &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" en "/>
+ <l:template name="seplast" text=", en "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Zie "/>
+ <l:template name="seealso" text="Zie ook "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Doelgroep: "/>
+ <l:template name="MsgLevel" text="Niveau: "/>
+ <l:template name="MsgOrig" text="Herkomst: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nn.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nn.xml
new file mode 100644
index 0000000..de5cf9f
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/nn.xml
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nn" english-language-name="Nynorsk">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Samandrag"/>
+ <l:gentext key="abstract" text="Samandrag"/>
+ <l:gentext key="Answer" text="Svar"/>
+ <l:gentext key="answer" text="svar"/>
+ <l:gentext key="Appendix" text="Tillegg"/>
+ <l:gentext key="appendix" text="tillegg"/>
+ <l:gentext key="Article" text="Artikkel"/>
+ <l:gentext key="article" text="artikkel"/>
+ <l:gentext key="Bibliography" text="Bibliografi"/>
+ <l:gentext key="bibliography" text="bibliografi"/>
+ <l:gentext key="Book" text="Bok"/>
+ <l:gentext key="book" text="bok"/>
+ <l:gentext key="CAUTION" text="OBS"/>
+ <l:gentext key="Caution" text="Obs"/>
+ <l:gentext key="caution" text="OBS"/>
+ <l:gentext key="caution" text="Obs"/>
+ <l:gentext key="Chapter" text="Kapittel"/>
+ <l:gentext key="chapter" text="kapittel"/>
+ <l:gentext key="Colophon" text="Kolofon"/>
+ <l:gentext key="colophon" text="kolofon"/>
+ <l:gentext key="Copyright" text="Opphavsrett"/>
+ <l:gentext key="copyright" text="opphavsrett"/>
+ <l:gentext key="Dedication" text="Dedikasjon"/>
+ <l:gentext key="dedication" text="dedikasjon"/>
+ <l:gentext key="Edition" text="Utg&#229;ve"/>
+ <l:gentext key="edition" text="utg&#229;ve"/>
+ <l:gentext key="Equation" text="Formel"/>
+ <l:gentext key="equation" text="formel"/>
+ <l:gentext key="Example" text="D&#248;me"/>
+ <l:gentext key="example" text="d&#248;me"/>
+ <l:gentext key="Figure" text="Figur"/>
+ <l:gentext key="figure" text="figur"/>
+ <l:gentext key="Glossary" text="Ordliste"/>
+ <l:gentext key="glossary" text="ordliste"/>
+ <l:gentext key="GlossSee" text="Sj&#229;"/>
+ <l:gentext key="glosssee" text="sj&#229;"/>
+ <l:gentext key="GlossSeeAlso" text="Sj&#229; &#242;g"/>
+ <l:gentext key="glossseealso" text="sj&#229; &#242;g"/>
+ <l:gentext key="IMPORTANT" text="VIKTIG"/>
+ <l:gentext key="Important" text="Viktig"/>
+ <l:gentext key="important" text="viktig"/>
+ <l:gentext key="important" text="viktig"/>
+ <l:gentext key="Index" text="Indeks"/>
+ <l:gentext key="index" text="indeks"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text="Publikum"/>
+ <l:gentext key="msgaud" text="publikum"/>
+ <l:gentext key="MsgLevel" text="Niv&#229;"/>
+ <l:gentext key="msglevel" text="niv&#229;"/>
+ <l:gentext key="MsgOrig" text="Opphav"/>
+ <l:gentext key="msgorig" text="Opphav"/>
+ <l:gentext key="NOTE" text="NOTAT"/>
+ <l:gentext key="Note" text="Notat"/>
+ <l:gentext key="note" text="NOTAT"/>
+ <l:gentext key="note" text="Notat"/>
+ <l:gentext key="Part" text="Del"/>
+ <l:gentext key="part" text="del"/>
+ <l:gentext key="Preface" text="Forord"/>
+ <l:gentext key="preface" text="forord"/>
+ <l:gentext key="Procedure" text="Prosedyre"/>
+ <l:gentext key="procedure" text="prosedyre"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Utgitt"/>
+ <l:gentext key="published" text="utgitt"/>
+ <l:gentext key="Question" text="Sp&#248;rsm&#229;l"/>
+ <l:gentext key="question" text="sp&#248;rsm&#229;l"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Referanse"/>
+ <l:gentext key="reference" text="referanse"/>
+ <l:gentext key="RefName" text="Namn"/>
+ <l:gentext key="refname" text="namn"/>
+ <l:gentext key="RefSection" text="Del"/>
+ <l:gentext key="refsection" text="del"/>
+ <l:gentext key="RefSynopsisDiv" text="Oversyn"/>
+ <l:gentext key="refsynopsisdiv" text="oversyn"/>
+ <l:gentext key="RevHistory" text="Revisjonshistorie"/>
+ <l:gentext key="revhistory" text="revisjonshistorie"/>
+ <l:gentext key="Revision" text="Revisjon"/>
+ <l:gentext key="revision" text="revisjon"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Del"/>
+ <l:gentext key="section" text="del"/>
+ <l:gentext key="See" text="Sj&#229;"/>
+ <l:gentext key="see" text="sj&#229;"/>
+ <l:gentext key="SeeAlso" text="Sj&#229; &#242;g"/>
+ <l:gentext key="seealso" text="sj&#229; &#242;g"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="set"/>
+ <l:gentext key="SetIndex" text="Indeks"/>
+ <l:gentext key="setindex" text="Indeks"/>
+ <l:gentext key="Sidebar" text="Sidestolpe"/>
+ <l:gentext key="sidebar" text="sidestolpe"/>
+ <l:gentext key="Step" text="Steg"/>
+ <l:gentext key="step" text="steg"/>
+ <l:gentext key="Table" text="Tabell"/>
+ <l:gentext key="table" text="tabell"/>
+ <l:gentext key="TIP" text="TIPS"/>
+ <l:gentext key="Tip" text="Tips"/>
+ <l:gentext key="tip" text="tips"/>
+ <l:gentext key="tip" text="tips"/>
+ <l:gentext key="WARNING" text="&#197;TVARING"/>
+ <l:gentext key="Warning" text="&#197;tvaring"/>
+ <l:gentext key="warning" text="&#229;tvaring"/>
+ <l:gentext key="warning" text="&#229;tvaring"/>
+ <l:gentext key="Seealso" text="Sj&#229; &#242;g"/>
+ <l:gentext key="seealso" text="sj&#229; &#242;g"/>
+ <l:gentext key="TableofContents" text="Innhald"/>
+ <l:gentext key="tableofcontents" text="Innhald"/>
+ <l:gentext key="in" text="i"/>
+ <l:gentext key="by" text="av"/>
+ <l:gentext key="Edited" text="Redigert"/>
+ <l:gentext key="edited" text="redigert"/>
+ <l:gentext key="Editedby" text="Redigert av"/>
+ <l:gentext key="editedby" text="redigert av"/>
+ <l:gentext key="and" text="og"/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="Notes" text="Merknader"/>
+ <l:gentext key="notes" text="merknader"/>
+ <l:gentext key="TableNotes" text="Merknader"/>
+ <l:gentext key="tablenotes" text="merknader"/>
+ <l:gentext key="nonexistantelement" text="ikkje-eksisterande element"/>
+ <l:gentext key="Pgs" text="Sider"/>
+ <l:gentext key="pgs" text="sider"/>
+ <l:gentext key="unsupported" text="ikkje st&#248;tta"/>
+ <l:gentext key="xrefto" text="xref til"/>
+ <l:gentext key="unexpectedelementname" text="UVENTA-ELEMENTNAVN"/>
+ <l:gentext key="Revisedby" text="Revidert av: "/>
+ <l:gentext key="revisedby" text="revidert av: "/>
+ <l:gentext key="ListofTables" text="Tabelloversikt"/>
+ <l:gentext key="listoftables" text="tabelloversikt"/>
+ <l:gentext key="ListofExamples" text="D&#248;meoversikt"/>
+ <l:gentext key="listofexamples" text="d&#248;meoversikt"/>
+ <l:gentext key="ListofFigures" text="Figuroversikt"/>
+ <l:gentext key="listoffigures" text="figuroversikt"/>
+ <l:gentext key="ListofEquations" text="Formeloversikt"/>
+ <l:gentext key="listofequations" text="formeloversikt"/>
+ <l:gentext key="ListofUnknown" text="???-oversikt"/>
+ <l:gentext key="listofunknown" text="???-oversikt"/>
+ <l:gentext key="nav-prev" text="Att"/>
+ <l:gentext key="nav-prev-sibling" text="Raskt bakover"/>
+ <l:gentext key="nav-next-sibling" text="Raskt framover"/>
+ <l:gentext key="nav-next" text="Fram"/>
+ <l:gentext key="nav-up" text="Opp"/>
+ <l:gentext key="nav-home" text="Heim"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Tillegg %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapittel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Formel %n. %t"/>
+ <l:template name="example" text="D&#248;me %n. %t"/>
+ <l:template name="figure" text="Figur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Prosedyre&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabell %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Tillegg %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Kapittel %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Svar&#160;%n"/>
+ <l:template name="appendix" text="Tillegg %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapittel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Formel&#160;%n"/>
+ <l:template name="example" text="D&#248;me %n. %t"/>
+ <l:template name="figure" text="Figur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Prosedyre&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Sp&#248;rsm&#229;l&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Sp&#248;rsm&#229;l&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabell %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Del %n"/>
+ <l:template name="sect2" text="Del %n"/>
+ <l:template name="sect3" text="Del %n"/>
+ <l:template name="sect4" text="Del %n"/>
+ <l:template name="sect5" text="Del %n"/>
+ <l:template name="section" text="Del %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" og "/>
+ <l:template name="seplast" text=", og "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Sj&#229; "/>
+ <l:template name="seealso" text="Sj&#229; &#242;g "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgLevel" text="Niv&#229;: "/>
+ <l:template name="MsgOrig" text="Opphav: "/>
+ <l:template name="MsgAud" text="Publikum: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/no.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/no.xml
new file mode 100644
index 0000000..cd7ed43
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/no.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="no" english-language-name="Norwegian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Abstract"/>
+ <l:gentext key="abstract" text="Abstract"/>
+ <l:gentext key="Answer" text="A:"/>
+ <l:gentext key="answer" text="A:"/>
+ <l:gentext key="Appendix" text="Tillegg"/>
+ <l:gentext key="appendix" text="Tillegg"/>
+ <l:gentext key="Article" text=""/>
+ <l:gentext key="article" text=""/>
+ <l:gentext key="Bibliography" text="Bibliografi"/>
+ <l:gentext key="bibliography" text="Bibliografi"/>
+ <l:gentext key="Book" text=""/>
+ <l:gentext key="book" text=""/>
+ <l:gentext key="CAUTION" text="OBS"/>
+ <l:gentext key="Caution" text="Obs"/>
+ <l:gentext key="caution" text="Obs"/>
+ <l:gentext key="Chapter" text="Kapittel"/>
+ <l:gentext key="chapter" text="Kapittel"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedikasjon"/>
+ <l:gentext key="dedication" text="Dedikasjon"/>
+ <l:gentext key="Edition" text=""/>
+ <l:gentext key="edition" text=""/>
+ <l:gentext key="Equation" text="Formel"/>
+ <l:gentext key="equation" text="Formel"/>
+ <l:gentext key="Example" text="Eksempel"/>
+ <l:gentext key="example" text="Eksempel"/>
+ <l:gentext key="Figure" text="Figur"/>
+ <l:gentext key="figure" text="Figur"/>
+ <l:gentext key="Glossary" text="Ordliste"/>
+ <l:gentext key="glossary" text="Ordliste"/>
+ <l:gentext key="GlossSee" text="Se"/>
+ <l:gentext key="glosssee" text="Se"/>
+ <l:gentext key="GlossSeeAlso" text="Se Ogs&#229;"/>
+ <l:gentext key="glossseealso" text="Se Ogs&#229;"/>
+ <l:gentext key="IMPORTANT" text="VIKTIG"/>
+ <l:gentext key="Important" text="Viktig"/>
+ <l:gentext key="important" text="Viktig"/>
+ <l:gentext key="Index" text="Indeks"/>
+ <l:gentext key="index" text="Indeks"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text="Publikum"/>
+ <l:gentext key="msgaud" text="Publikum"/>
+ <l:gentext key="MsgLevel" text="Niv&#229;"/>
+ <l:gentext key="msglevel" text="Niv&#229;"/>
+ <l:gentext key="MsgOrig" text="Opphav"/>
+ <l:gentext key="msgorig" text="Opphav"/>
+ <l:gentext key="NOTE" text="NOTAT"/>
+ <l:gentext key="Note" text="Notat"/>
+ <l:gentext key="note" text="Notat"/>
+ <l:gentext key="Part" text="Del"/>
+ <l:gentext key="part" text="Del"/>
+ <l:gentext key="Preface" text="Forord"/>
+ <l:gentext key="preface" text="Forord"/>
+ <l:gentext key="Procedure" text="Prosedyre"/>
+ <l:gentext key="procedure" text="Prosedyre"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text=""/>
+ <l:gentext key="published" text=""/>
+ <l:gentext key="Question" text="Q:"/>
+ <l:gentext key="question" text="Q:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Referanse"/>
+ <l:gentext key="reference" text="Referanse"/>
+ <l:gentext key="RefName" text="Navn"/>
+ <l:gentext key="refname" text="Navn"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Revisjonshistorie"/>
+ <l:gentext key="revhistory" text="Revisjonshistorie"/>
+ <l:gentext key="Revision" text="Revisjon"/>
+ <l:gentext key="revision" text="Revisjon"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Seksjon"/>
+ <l:gentext key="section" text="seksjon"/>
+ <l:gentext key="See" text="Se"/>
+ <l:gentext key="see" text="Se"/>
+ <l:gentext key="SeeAlso" text="Se Ogs&#229;"/>
+ <l:gentext key="Seealso" text="Se ogs&#229;"/>
+ <l:gentext key="seealso" text="Se Ogs&#229;"/>
+ <l:gentext key="Set" text=""/>
+ <l:gentext key="set" text=""/>
+ <l:gentext key="SetIndex" text="Indeks"/>
+ <l:gentext key="setindex" text="Indeks"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text=""/>
+ <l:gentext key="Step" text="Steg"/>
+ <l:gentext key="step" text="steg"/>
+ <l:gentext key="Table" text="Tabell"/>
+ <l:gentext key="table" text="Tabell"/>
+ <l:gentext key="TIP" text="TIPS"/>
+ <l:gentext key="Tip" text="Tips"/>
+ <l:gentext key="tip" text="Tips"/>
+ <l:gentext key="WARNING" text="ADVARSEL"/>
+ <l:gentext key="Warning" text="Advarsel"/>
+ <l:gentext key="warning" text="Advarsel"/>
+ <l:gentext key="and" text="og"/>
+ <l:gentext key="by" text="av"/>
+ <l:gentext key="Edited" text="Redigert"/>
+ <l:gentext key="edited" text="Redigert"/>
+ <l:gentext key="Editedby" text="Redigert av"/>
+ <l:gentext key="editedby" text="Redigert av"/>
+ <l:gentext key="in" text="i"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="ikke-eksisterende element"/>
+ <l:gentext key="notes" text="Sluttnotater"/>
+ <l:gentext key="Notes" text="Sluttnotater"/>
+ <l:gentext key="Pgs" text="Sdr."/>
+ <l:gentext key="pgs" text="Sdr."/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Notater"/>
+ <l:gentext key="tablenotes" text="Notater"/>
+ <l:gentext key="TableofContents" text="Innholdsfortegnelse"/>
+ <l:gentext key="tableofcontents" text="Innholdsfortegnelse"/>
+ <l:gentext key="unexpectedelementname" text="UVENTET-ELEMENTNAVN"/>
+ <l:gentext key="unsupported" text="ikke st&#248;ttet"/>
+ <l:gentext key="xrefto" text="xref til"/>
+ <l:gentext key="listofequations" text="Formeloversikt"/>
+ <l:gentext key="ListofEquations" text="Formeloversikt"/>
+ <l:gentext key="ListofExamples" text="Eksempeloversikt"/>
+ <l:gentext key="listofexamples" text="Eksempeloversikt"/>
+ <l:gentext key="ListofFigures" text="Figuroversikt"/>
+ <l:gentext key="listoffigures" text="Figuroversikt"/>
+ <l:gentext key="listoftables" text="Tabelloversikt"/>
+ <l:gentext key="ListofTables" text="Tabelloversikt"/>
+ <l:gentext key="ListofUnknown" text="???-oversikt"/>
+ <l:gentext key="listofunknown" text="???-oversikt"/>
+ <l:gentext key="nav-home" text="Hjem"/>
+ <l:gentext key="nav-next" text="Neste"/>
+ <l:gentext key="nav-next-sibling" text="Raskt Fremover"/>
+ <l:gentext key="nav-prev" text="Forrige"/>
+ <l:gentext key="nav-prev-sibling" text="Raskt Bakover"/>
+ <l:gentext key="nav-up" text="Opp"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Tillegg %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapittel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Formel %n. %t"/>
+ <l:template name="example" text="Eksempel %n. %t"/>
+ <l:template name="figure" text="Figur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Prosedyre&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabell %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Tillegg %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Kapittel %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="A:&#160;%n"/>
+ <l:template name="appendix" text="Tillegg %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapittel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Formel&#160;%n"/>
+ <l:template name="example" text="Eksempel %n. %t"/>
+ <l:template name="figure" text="Figur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Prosedyre&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Q:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Q:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabell %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Seksjon %n"/>
+ <l:template name="sect2" text="Seksjon %n"/>
+ <l:template name="sect3" text="Seksjon %n"/>
+ <l:template name="sect4" text="Seksjon %n"/>
+ <l:template name="sect5" text="Seksjon %n"/>
+ <l:template name="section" text="Seksjon %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" og "/>
+ <l:template name="seplast" text=", og "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Se "/>
+ <l:template name="seealso" text="Se Ogs&#229; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Publikum: "/>
+ <l:template name="MsgLevel" text="Niv&#229;: "/>
+ <l:template name="MsgOrig" text="Opphav: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pl.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pl.xml
new file mode 100644
index 0000000..df8f879
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pl.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pl" english-language-name="Polish">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Abstrakt"/>
+ <l:gentext key="abstract" text="Abstrakt"/>
+ <l:gentext key="Answer" text="Odp:"/>
+ <l:gentext key="answer" text="Odp:"/>
+ <l:gentext key="Appendix" text="Dodatek"/>
+ <l:gentext key="appendix" text="dodatek"/>
+ <l:gentext key="Article" text="Artyku&#322;"/>
+ <l:gentext key="article" text="Artyku&#322;"/>
+ <l:gentext key="Bibliography" text="Bibliografia"/>
+ <l:gentext key="bibliography" text="Bibliografia"/>
+ <l:gentext key="Book" text="Ksi&#261;&#380;ka"/>
+ <l:gentext key="book" text="Ksi&#261;&#380;ka"/>
+ <l:gentext key="CAUTION" text="PRZYPADEK"/>
+ <l:gentext key="Caution" text="Uwaga!"/>
+ <l:gentext key="caution" text="Uwaga!"/>
+ <l:gentext key="Chapter" text="Rozdzia&#322;"/>
+ <l:gentext key="chapter" text="rozdzia&#322;;"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedykacja"/>
+ <l:gentext key="dedication" text="Dedykacja"/>
+ <l:gentext key="Edition" text="Wydanie"/>
+ <l:gentext key="edition" text="Wydanie"/>
+ <l:gentext key="Equation" text="R&#243;wnanie"/>
+ <l:gentext key="equation" text="R&#243;wnanie"/>
+ <l:gentext key="Example" text="Przyk&#322;ad"/>
+ <l:gentext key="example" text="Przyk&#322;ad"/>
+ <l:gentext key="Figure" text="Rysunek"/>
+ <l:gentext key="figure" text="Rysunek"/>
+ <l:gentext key="Glossary" text="Glossary"/>
+ <l:gentext key="glossary" text="Glossary"/>
+ <l:gentext key="GlossSee" text="Patrz"/>
+ <l:gentext key="glosssee" text="Patrz"/>
+ <l:gentext key="GlossSeeAlso" text="Patrz te&#380;"/>
+ <l:gentext key="glossseealso" text="Patrz te&#380;"/>
+ <l:gentext key="IMPORTANT" text="WA&#379;NE"/>
+ <l:gentext key="Important" text="WA&#379;NE"/>
+ <l:gentext key="important" text="WA&#379;NE"/>
+ <l:gentext key="Index" text="Indeks"/>
+ <l:gentext key="index" text="Indeks"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text="Odbiorcy"/>
+ <l:gentext key="msgaud" text="Odbiorcy"/>
+ <l:gentext key="MsgLevel" text="Poziom"/>
+ <l:gentext key="msglevel" text="Poziom"/>
+ <l:gentext key="MsgOrig" text="Nadawca"/>
+ <l:gentext key="msgorig" text="Nadawca"/>
+ <l:gentext key="NOTE" text="Notatka"/>
+ <l:gentext key="Note" text="Notatka"/>
+ <l:gentext key="note" text="Notatka"/>
+ <l:gentext key="Part" text="Cz&#281;&#347;&#263;"/>
+ <l:gentext key="part" text="Cz&#281;&#347;&#263;"/>
+ <l:gentext key="Preface" text="Przedmowa"/>
+ <l:gentext key="preface" text="Przedmowa"/>
+ <l:gentext key="Procedure" text="Procedura"/>
+ <l:gentext key="procedure" text="Procedura"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Data wydania"/>
+ <l:gentext key="published" text="Data wydania"/>
+ <l:gentext key="question" text="Pyt:"/>
+ <l:gentext key="Question" text="Pyt:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Materia&#322;y &#378;r&#243;d&#322;owe"/>
+ <l:gentext key="reference" text="Materia&#322;y &#378;r&#243;d&#322;owe"/>
+ <l:gentext key="RefName" text="Nazwa"/>
+ <l:gentext key="refname" text="Nazwa"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Historia zmian"/>
+ <l:gentext key="revhistory" text="Historia zmian"/>
+ <l:gentext key="Revision" text="Zmiana"/>
+ <l:gentext key="revision" text="Zmiana"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Sekcja"/>
+ <l:gentext key="section" text="sekcja"/>
+ <l:gentext key="See" text="Patrz"/>
+ <l:gentext key="see" text="Patrz"/>
+ <l:gentext key="SeeAlso" text="Patrz te&#380;"/>
+ <l:gentext key="Seealso" text="Patrz te&#380;"/>
+ <l:gentext key="seealso" text="Patrz te&#380;"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="SetIndex" text="Indeks"/>
+ <l:gentext key="setindex" text="Indeks"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text=""/>
+ <l:gentext key="Step" text="krok"/>
+ <l:gentext key="step" text="krok"/>
+ <l:gentext key="Table" text="Tabela"/>
+ <l:gentext key="table" text="Tabela"/>
+ <l:gentext key="TIP" text="Podpowied&#378;"/>
+ <l:gentext key="Tip" text="Podpowied&#378;"/>
+ <l:gentext key="tip" text="Podpowied&#378;"/>
+ <l:gentext key="WARNING" text="Ostrze&#380;enie"/>
+ <l:gentext key="Warning" text="Ostrze&#380;enie"/>
+ <l:gentext key="warning" text="Ostrze&#380;enie"/>
+ <l:gentext key="and" text="i"/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="Edited"/>
+ <l:gentext key="edited" text="Edited"/>
+ <l:gentext key="Editedby" text="Redakcja: "/>
+ <l:gentext key="editedby" text="Redakcja: "/>
+ <l:gentext key="in" text="w"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="nie istniej&#261;cy element"/>
+ <l:gentext key="notes" text="Przypisy"/>
+ <l:gentext key="Notes" text="Przypisy"/>
+ <l:gentext key="Pgs" text="stron"/>
+ <l:gentext key="pgs" text="stron"/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Przypisy"/>
+ <l:gentext key="tablenotes" text="Przypisy"/>
+ <l:gentext key="TableofContents" text="Spis tre&#347;ci"/>
+ <l:gentext key="tableofcontents" text="Spis tre&#347;ci"/>
+ <l:gentext key="unexpectedelementname" text="Unexpected element name"/>
+ <l:gentext key="unsupported" text="nie wspierany"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="Spis r&#243;wna&#324;"/>
+ <l:gentext key="ListofEquations" text="Spis r&#243;wna&#324;"/>
+ <l:gentext key="ListofExamples" text="Spis przyk&#322;ad&#243;w"/>
+ <l:gentext key="listofexamples" text="Spis przyk&#322;ad&#243;w"/>
+ <l:gentext key="ListofFigures" text="Spis rysunk&#243;w"/>
+ <l:gentext key="listoffigures" text="Spis rysunk&#243;w"/>
+ <l:gentext key="listoftables" text="Spis tabel"/>
+ <l:gentext key="ListofTables" text="Spis tabel"/>
+ <l:gentext key="ListofUnknown" text="Spis ???"/>
+ <l:gentext key="listofunknown" text="Spis ???"/>
+ <l:gentext key="nav-home" text="Spis tre&#347;ci"/>
+ <l:gentext key="nav-next" text="Nast&#281;pny"/>
+ <l:gentext key="nav-next-sibling" text="Nast&#281;pny rozdzia&#322;"/>
+ <l:gentext key="nav-prev" text="Poprzedni"/>
+ <l:gentext key="nav-prev-sibling" text="Poprzedni rozdzia&#322;"/>
+ <l:gentext key="nav-up" text="Pocz&#261;tek rozdzia&#322;u"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8222;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#171;"/>
+ <l:dingbat key="nestedendquote" text="&#187;"/>
+ <l:dingbat key="bullet" text="&#2022;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Dodatek %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Rozdzia&#322; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="R&#243;wnanie %n. %t"/>
+ <l:template name="example" text="Przyk&#322;ad %n. %t"/>
+ <l:template name="figure" text="Rysunek %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Cz&#281;&#347;&#263; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedura&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Dodatek %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Rozdzia&#322; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Odp:&#160;%n"/>
+ <l:template name="appendix" text="Dodatek %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Rozdzia&#322; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="R&#243;wnanie&#160;%n"/>
+ <l:template name="example" text="Przyk&#322;ad %n. %t"/>
+ <l:template name="figure" text="Rysunek %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Cz&#281;&#347;&#263; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedura&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Pyt:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Pyt:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Sekcja %n"/>
+ <l:template name="sect2" text="Sekcja %n"/>
+ <l:template name="sect3" text="Sekcja %n"/>
+ <l:template name="sect4" text="Sekcja %n"/>
+ <l:template name="sect5" text="Sekcja %n"/>
+ <l:template name="section" text="Sekcja %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" i "/>
+ <l:template name="seplast" text=", i "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Patrz "/>
+ <l:template name="seealso" text="Patrz te&#380; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Odbiorcy: "/>
+ <l:template name="MsgLevel" text="Poziom: "/>
+ <l:template name="MsgOrig" text="Nadawca: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt.xml
new file mode 100644
index 0000000..7a1c7e1
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pt" english-language-name="Portuguese">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Resumo"/>
+ <l:gentext key="abstract" text="Resumo"/>
+ <l:gentext key="Answer" text="R:"/>
+ <l:gentext key="answer" text="R:"/>
+ <l:gentext key="Appendix" text="Ap&#234;ndice"/>
+ <l:gentext key="appendix" text="ap&#234;ndice"/>
+ <l:gentext key="Article" text="Artigo"/>
+ <l:gentext key="article" text="Artigo"/>
+ <l:gentext key="Bibliography" text="Bibliografia"/>
+ <l:gentext key="bibliography" text="Bibliografia"/>
+ <l:gentext key="Book" text="Livro"/>
+ <l:gentext key="book" text="Livro"/>
+ <l:gentext key="CAUTION" text="CAUTELA"/>
+ <l:gentext key="Caution" text="Cautela"/>
+ <l:gentext key="caution" text="Cautela"/>
+ <l:gentext key="Chapter" text="Cap&#237;tulo"/>
+ <l:gentext key="chapter" text="cap&#237;tulo"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedicat&#243;ria"/>
+ <l:gentext key="dedication" text="Dedicat&#243;ria"/>
+ <l:gentext key="Edition" text="Edi&#231;&#227;o"/>
+ <l:gentext key="edition" text="Edi&#231;&#227;o"/>
+ <l:gentext key="Equation" text="Equa&#231;&#227;o"/>
+ <l:gentext key="equation" text="Equa&#231;&#227;o"/>
+ <l:gentext key="Example" text="Exemplo"/>
+ <l:gentext key="example" text="Exemplo"/>
+ <l:gentext key="Figure" text="Figura"/>
+ <l:gentext key="figure" text="Figura"/>
+ <l:gentext key="Glossary" text="Glossario"/>
+ <l:gentext key="glossary" text="Glossario"/>
+ <l:gentext key="GlossSee" text="Ver"/>
+ <l:gentext key="glosssee" text="Ver"/>
+ <l:gentext key="GlossSeeAlso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="glossseealso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+ <l:gentext key="Important" text="Importante"/>
+ <l:gentext key="important" text="Importante"/>
+ <l:gentext key="Index" text="Index"/>
+ <l:gentext key="index" text="Index"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text="Audi&#234;ncia"/>
+ <l:gentext key="msgaud" text="Audi&#234;ncia"/>
+ <l:gentext key="MsgLevel" text="N&#237;vel"/>
+ <l:gentext key="msglevel" text="N&#237;vel"/>
+ <l:gentext key="MsgOrig" text="Origem"/>
+ <l:gentext key="msgorig" text="Origem"/>
+ <l:gentext key="NOTE" text="NOTA"/>
+ <l:gentext key="Note" text="Nota"/>
+ <l:gentext key="note" text="Nota"/>
+ <l:gentext key="Part" text="Parte"/>
+ <l:gentext key="part" text="Parte"/>
+ <l:gentext key="Preface" text="Pref&#225;cio"/>
+ <l:gentext key="preface" text="Pref&#225;cio"/>
+ <l:gentext key="Procedure" text="Procedimento"/>
+ <l:gentext key="procedure" text="Procedimento"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="PubDate" text="Editado"/>
+ <l:gentext key="pubdate" text="Editado"/>
+ <l:gentext key="Published" text="Publicado"/>
+ <l:gentext key="published" text="Publicado"/>
+ <l:gentext key="Question" text="P:"/>
+ <l:gentext key="question" text="P:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Refer&#234;ncia"/>
+ <l:gentext key="reference" text="Refer&#234;ncia"/>
+ <l:gentext key="RefName" text="Nome"/>
+ <l:gentext key="refname" text="Nome"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Hitorial de Revis&#245;es"/>
+ <l:gentext key="revhistory" text="Hitorial de Revis&#245;es"/>
+ <l:gentext key="Revision" text="Revis&#227;o"/>
+ <l:gentext key="revision" text="Revis&#227;o"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Sec&#231;&#227;o"/>
+ <l:gentext key="section" text="sec&#231;&#227;o"/>
+ <l:gentext key="See" text="Ver"/>
+ <l:gentext key="see" text="Ver"/>
+ <l:gentext key="SeeAlso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="Seealso" text="ver tamb&#233;m"/>
+ <l:gentext key="seealso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="SetIndex" text="Set Index"/>
+ <l:gentext key="setindex" text="Set Index"/>
+ <l:gentext key="Sidebar" text="Sidebar"/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="Step" text="Passo"/>
+ <l:gentext key="step" text="passo"/>
+ <l:gentext key="Table" text="Tabela"/>
+ <l:gentext key="table" text="Tabela"/>
+ <l:gentext key="TIP" text="DICA"/>
+ <l:gentext key="Tip" text="Dica"/>
+ <l:gentext key="tip" text="Dica"/>
+ <l:gentext key="WARNING" text="ATEN&#199;&#195;O"/>
+ <l:gentext key="Warning" text="Aten&#231;&#227;o"/>
+ <l:gentext key="warning" text="Aten&#231;&#227;o"/>
+ <l:gentext key="and" text="e"/>
+ <l:gentext key="by" text="por"/>
+ <l:gentext key="Edited" text="Editado"/>
+ <l:gentext key="edited" text="Editado"/>
+ <l:gentext key="Editedby" text="Editado por"/>
+ <l:gentext key="editedby" text="Editado por"/>
+ <l:gentext key="in" text=""/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="non-existant element"/>
+ <l:gentext key="notes" text="Notas"/>
+ <l:gentext key="Notes" text="Notas"/>
+ <l:gentext key="Pgs" text="P&#225;ginas"/>
+ <l:gentext key="pgs" text="P&#225;ginas"/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Notas"/>
+ <l:gentext key="tablenotes" text="Notas"/>
+ <l:gentext key="TableofContents" text="&#205;ndice"/>
+ <l:gentext key="tableofcontents" text="&#205;ndice"/>
+ <l:gentext key="unexpectedelementname" text="Unexpected element name"/>
+ <l:gentext key="unsupported" text="unsupported"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="Lista de Equa&#231;&#245;es"/>
+ <l:gentext key="ListofEquations" text="Lista de Equa&#231;&#245;es"/>
+ <l:gentext key="ListofExamples" text="Lista de Exemplos"/>
+ <l:gentext key="listofexamples" text="Lista de Exemplos"/>
+ <l:gentext key="ListofFigures" text="Lista de Figuras"/>
+ <l:gentext key="listoffigures" text="Lista de Figuras"/>
+ <l:gentext key="listoftables" text="Lista de Tabelas"/>
+ <l:gentext key="ListofTables" text="Lista de Tabelas"/>
+ <l:gentext key="ListofUnknown" text="List of ???"/>
+ <l:gentext key="listofunknown" text="List of ???"/>
+ <l:gentext key="nav-home" text="Home"/>
+ <l:gentext key="nav-next" text="Next"/>
+ <l:gentext key="nav-next-sibling" text="Fast Forward"/>
+ <l:gentext key="nav-prev" text="Prev"/>
+ <l:gentext key="nav-prev-sibling" text="Fast Backward"/>
+ <l:gentext key="nav-up" text="Up"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Ap&#234;ndice %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equa&#231;&#227;o %n. %t"/>
+ <l:template name="example" text="Exemplo %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedimento&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Pergunta %n"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Ap&#234;ndice %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="R:&#160;%n"/>
+ <l:template name="appendix" text="Ap&#234;ndice %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equa&#231;&#227;o&#160;%n"/>
+ <l:template name="example" text="Exemplo %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedimento&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="P:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="P:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Sec&#231;&#227;o %n"/>
+ <l:template name="sect2" text="Sec&#231;&#227;o %n"/>
+ <l:template name="sect3" text="Sec&#231;&#227;o %n"/>
+ <l:template name="sect4" text="Sec&#231;&#227;o %n"/>
+ <l:template name="sect5" text="Sec&#231;&#227;o %n"/>
+ <l:template name="section" text="Sec&#231;&#227;o %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" e "/>
+ <l:template name="seplast" text=", e "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Ver "/>
+ <l:template name="seealso" text="Ver Tamb&#233;m "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audi&#234;ncia: "/>
+ <l:template name="MsgLevel" text="N&#237;vel: "/>
+ <l:template name="MsgOrig" text="Origem: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt_br.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt_br.xml
new file mode 100644
index 0000000..6b927c3
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/pt_br.xml
@@ -0,0 +1,451 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pt_br" english-language-name="Portuguese (Brazil)">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Resumo"/>
+ <l:gentext key="abstract" text="Resumo"/>
+ <l:gentext key="Answer" text="R:"/>
+ <l:gentext key="answer" text="R:"/>
+ <l:gentext key="Appendix" text="Ap&#234;ndice"/>
+ <l:gentext key="appendix" text="ap&#234;ndice"/>
+ <l:gentext key="Article" text="Artigo"/>
+ <l:gentext key="article" text="Artigo"/>
+ <l:gentext key="Bibliography" text="Bibliografia"/>
+ <l:gentext key="bibliography" text="Bibliografia"/>
+ <l:gentext key="Book" text="Livro"/>
+ <l:gentext key="book" text="Livro"/>
+ <l:gentext key="CAUTION" text="CUIDADO"/>
+ <l:gentext key="Caution" text="Cuidado"/>
+ <l:gentext key="caution" text="Cuidado"/>
+ <l:gentext key="Chapter" text="Cap&#237;tulo"/>
+ <l:gentext key="chapter" text="cap&#237;tulo"/>
+ <l:gentext key="Colophon" text="Considera&#231;&#245;es finais"/>
+ <l:gentext key="colophon" text="Considera&#231;&#245;es finais"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedicat&#243;ria"/>
+ <l:gentext key="dedication" text="Dedicat&#243;ria"/>
+ <l:gentext key="Edition" text="Edi&#231;&#227;o"/>
+ <l:gentext key="edition" text="Edi&#231;&#227;o"/>
+ <l:gentext key="Equation" text="Equa&#231;&#227;o"/>
+ <l:gentext key="equation" text="Equa&#231;&#227;o"/>
+ <l:gentext key="Example" text="Exemplo"/>
+ <l:gentext key="example" text="Exemplo"/>
+ <l:gentext key="Figure" text="Figura"/>
+ <l:gentext key="figure" text="Figura"/>
+ <l:gentext key="Glossary" text="Gloss&#225;rio"/>
+ <l:gentext key="glossary" text="Gloss&#225;rio"/>
+ <l:gentext key="GlossSee" text="Ver"/>
+ <l:gentext key="glosssee" text="Ver"/>
+ <l:gentext key="GlossSeeAlso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="glossseealso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+ <l:gentext key="Important" text="Importante"/>
+ <l:gentext key="important" text="Importante"/>
+ <l:gentext key="Index" text="&#205;ndice Remissivo"/>
+ <l:gentext key="index" text="&#205;ndice Remissivo"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Nota Legal"/>
+ <l:gentext key="legalnotice" text="Nota Legal"/>
+ <l:gentext key="MsgAud" text="Audi&#234;ncia"/>
+ <l:gentext key="msgaud" text="Audi&#234;ncia"/>
+ <l:gentext key="MsgLevel" text="N&#237;vel"/>
+ <l:gentext key="msglevel" text="N&#237;vel"/>
+ <l:gentext key="MsgOrig" text="Origem"/>
+ <l:gentext key="msgorig" text="Origem"/>
+ <l:gentext key="NOTE" text="NOTA"/>
+ <l:gentext key="Note" text="Nota"/>
+ <l:gentext key="note" text="Nota"/>
+ <l:gentext key="Part" text="Parte"/>
+ <l:gentext key="part" text="Parte"/>
+ <l:gentext key="Preface" text="Pref&#225;cio"/>
+ <l:gentext key="preface" text="Pref&#225;cio"/>
+ <l:gentext key="Procedure" text="Procedimento"/>
+ <l:gentext key="procedure" text="Procedimento"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="PubDate" text="Data de Publica&#231;&#227;o"/>
+ <l:gentext key="pubdate" text="Data de Publica&#231;&#227;o"/>
+ <l:gentext key="Published" text="Publicado"/>
+ <l:gentext key="published" text="Publicado"/>
+ <l:gentext key="Question" text="P:"/>
+ <l:gentext key="question" text="P:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Refer&#234;ncia"/>
+ <l:gentext key="reference" text="Refer&#234;ncia"/>
+ <l:gentext key="RefName" text="Nome"/>
+ <l:gentext key="refname" text="Nome"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+ <l:gentext key="refsynopsisdiv" text="Sinopse"/>
+ <l:gentext key="RevHistory" text="Hist&#243;rico de Revis&#245;es"/>
+ <l:gentext key="revhistory" text="Hist&#243;rico de Revis&#245;es"/>
+ <l:gentext key="Revision" text="Revis&#227;o"/>
+ <l:gentext key="revision" text="Revis&#227;o"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Se&#231;&#227;o"/>
+ <l:gentext key="section" text="se&#231;&#227;o"/>
+ <l:gentext key="See" text="Ver"/>
+ <l:gentext key="see" text="Ver"/>
+ <l:gentext key="SeeAlso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="Seealso" text="ver tamb&#233;m"/>
+ <l:gentext key="seealso" text="Ver Tamb&#233;m"/>
+ <l:gentext key="Set" text="Conjunto"/>
+ <l:gentext key="set" text="Conjunto"/>
+ <l:gentext key="SetIndex" text="&#205;ndice do Conjunto"/>
+ <l:gentext key="setindex" text="&#205;ndice do Conjunto"/>
+ <l:gentext key="Sidebar" text="Quadro Lateral"/>
+ <l:gentext key="sidebar" text="quadro lateral"/>
+ <l:gentext key="Step" text="Passo"/>
+ <l:gentext key="step" text="passo"/>
+ <l:gentext key="Table" text="Tabela"/>
+ <l:gentext key="table" text="Tabela"/>
+ <l:gentext key="TIP" text="DICA"/>
+ <l:gentext key="Tip" text="Dica"/>
+ <l:gentext key="tip" text="Dica"/>
+ <l:gentext key="WARNING" text="ATEN&#199;&#195;O"/>
+ <l:gentext key="Warning" text="Aten&#231;&#227;o"/>
+ <l:gentext key="warning" text="Aten&#231;&#227;o"/>
+ <l:gentext key="and" text="e"/>
+ <l:gentext key="by" text="por"/>
+ <l:gentext key="edited" text="Editado"/>
+ <l:gentext key="Edited" text="Editado"/>
+ <l:gentext key="editedby" text="Editado por"/>
+ <l:gentext key="Editedby" text="Editado por"/>
+ <l:gentext key="in" text=""/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="elemento inexistente"/>
+ <l:gentext key="Notes" text="Notas"/>
+ <l:gentext key="notes" text="Notas"/>
+ <l:gentext key="Pgs" text="P&#225;ginas"/>
+ <l:gentext key="pgs" text="P&#225;ginas"/>
+ <l:gentext key="Revisedby" text="Revisado por: "/>
+ <l:gentext key="revisedby" text="Revisado por: "/>
+ <l:gentext key="tablenotes" text="Notas"/>
+ <l:gentext key="TableNotes" text="Notas"/>
+ <l:gentext key="TableofContents" text="&#205;ndice"/>
+ <l:gentext key="tableofcontents" text="&#205;ndice"/>
+ <l:gentext key="unexpectedelementname" text="Nome de elemento inesperado"/>
+ <l:gentext key="unsupported" text="n&#227;o suportado"/>
+ <l:gentext key="xrefto" text="refer&#234;ncia para"/>
+ <l:gentext key="listofequations" text="Lista de Equa&#231;&#245;es"/>
+ <l:gentext key="ListofEquations" text="Lista de Equa&#231;&#245;es"/>
+ <l:gentext key="ListofExamples" text="Lista de Exemplos"/>
+ <l:gentext key="listofexamples" text="Lista de Exemplos"/>
+ <l:gentext key="ListofFigures" text="Lista de Figuras"/>
+ <l:gentext key="listoffigures" text="Lista de Figuras"/>
+ <l:gentext key="listoftables" text="Lista de Tabelas"/>
+ <l:gentext key="ListofTables" text="Lista de Tabelas"/>
+ <l:gentext key="ListofUnknown" text="Lista de ???"/>
+ <l:gentext key="listofunknown" text="Lista de ???"/>
+ <l:gentext key="nav-home" text="Principal"/>
+ <l:gentext key="nav-next" text="Pr&#243;xima"/>
+ <l:gentext key="nav-next-sibling" text="Fim"/>
+ <l:gentext key="nav-prev" text="Anterior"/>
+ <l:gentext key="nav-prev-sibling" text="In&#237;cio"/>
+ <l:gentext key="nav-up" text="Acima"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Ap&#234;ndice %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equa&#231;&#227;o %n. %t"/>
+ <l:template name="example" text="Exemplo %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedimento&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Ap&#234;ndice %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="R:&#160;%n"/>
+ <l:template name="appendix" text="Ap&#234;ndice %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap&#237;tulo %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Equa&#231;&#227;o&#160;%n"/>
+ <l:template name="example" text="Exemplo %n. %t"/>
+ <l:template name="figure" text="Figura %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedimento&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="P:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="P:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Se&#231;&#227;o %n"/>
+ <l:template name="sect2" text="Se&#231;&#227;o %n"/>
+ <l:template name="sect3" text="Se&#231;&#227;o %n"/>
+ <l:template name="sect4" text="Se&#231;&#227;o %n"/>
+ <l:template name="sect5" text="Se&#231;&#227;o %n"/>
+ <l:template name="section" text="Se&#231;&#227;o %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" e "/>
+ <l:template name="seplast" text=", e "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Ver "/>
+ <l:template name="seealso" text="Ver Tamb&#233;m "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audi&#234;ncia: "/>
+ <l:template name="MsgLevel" text="N&#237;vel: "/>
+ <l:template name="MsgOrig" text="Origem: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ro.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ro.xml
new file mode 100644
index 0000000..1fac0ed
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ro.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ro" english-language-name="Romanian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Rezumat"/>
+ <l:gentext key="abstract" text="Rezumat"/>
+ <l:gentext key="Answer" text="A:"/>
+ <l:gentext key="answer" text="A:"/>
+ <l:gentext key="Appendix" text="Anexa"/>
+ <l:gentext key="appendix" text="anexa"/>
+ <l:gentext key="Article" text="Articol"/>
+ <l:gentext key="article" text="Articol"/>
+ <l:gentext key="Bibliography" text="Bibliografie"/>
+ <l:gentext key="bibliography" text="Bibliografie"/>
+ <l:gentext key="Book" text="Carte"/>
+ <l:gentext key="book" text="Carte"/>
+ <l:gentext key="CAUTION" text="ATEN&#222;IE"/>
+ <l:gentext key="Caution" text="Aten&#254;ie"/>
+ <l:gentext key="caution" text="Aten&#254;ie"/>
+ <l:gentext key="Chapter" text="Cap."/>
+ <l:gentext key="chapter" text="cap."/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedica&#254;ie"/>
+ <l:gentext key="dedication" text="Dedica&#254;ie"/>
+ <l:gentext key="Edition" text="Edi&#254;ie"/>
+ <l:gentext key="edition" text="Edi&#254;ie"/>
+ <l:gentext key="Equation" text="ecua&#254;ia"/>
+ <l:gentext key="equation" text="ecua&#254;ia"/>
+ <l:gentext key="Example" text="Exemplu"/>
+ <l:gentext key="example" text="Exemplu"/>
+ <l:gentext key="Figure" text="Fig."/>
+ <l:gentext key="figure" text="Fig."/>
+ <l:gentext key="Glossary" text="Glosar"/>
+ <l:gentext key="glossary" text="Glosar"/>
+ <l:gentext key="GlossSee" text="Vezi"/>
+ <l:gentext key="glosssee" text="Vezi"/>
+ <l:gentext key="GlossSeeAlso" text="Vezi &#351;i"/>
+ <l:gentext key="glossseealso" text="Vezi &#351;i"/>
+ <l:gentext key="IMPORTANT" text="IMPORTANT"/>
+ <l:gentext key="Important" text="Important"/>
+ <l:gentext key="important" text="Important"/>
+ <l:gentext key="Index" text="Index"/>
+ <l:gentext key="index" text="Index"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text=""/>
+ <l:gentext key="legalnotice" text=""/>
+ <l:gentext key="MsgAud" text=""/>
+ <l:gentext key="msgaud" text=""/>
+ <l:gentext key="MsgLevel" text="Nivel"/>
+ <l:gentext key="msglevel" text="Nivel"/>
+ <l:gentext key="MsgOrig" text="Origine"/>
+ <l:gentext key="msgorig" text="Origine"/>
+ <l:gentext key="NOTE" text="NOT&#195;"/>
+ <l:gentext key="Note" text="Not&#227;"/>
+ <l:gentext key="note" text="Not&#227;"/>
+ <l:gentext key="Part" text="Parte"/>
+ <l:gentext key="part" text="Parte"/>
+ <l:gentext key="Preface" text="Prefa&#254;&#227;"/>
+ <l:gentext key="preface" text="Prefa&#254;&#227;"/>
+ <l:gentext key="Procedure" text="Procedur&#227;"/>
+ <l:gentext key="procedure" text="Procedur&#227;"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Publicat"/>
+ <l:gentext key="published" text="Publicat"/>
+ <l:gentext key="Question" text="Q:"/>
+ <l:gentext key="question" text="Q:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Referin&#254;&#227;"/>
+ <l:gentext key="reference" text="Referin&#254;&#227;"/>
+ <l:gentext key="RefName" text="Nume"/>
+ <l:gentext key="refname" text="Nume"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Rezumat"/>
+ <l:gentext key="refsynopsisdiv" text="Rezumat"/>
+ <l:gentext key="RevHistory" text="Istoricul versiunilor"/>
+ <l:gentext key="revhistory" text="Istoricul versiunilor"/>
+ <l:gentext key="Revision" text="Versiune"/>
+ <l:gentext key="revision" text="Versiune"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Sec&#254;iune"/>
+ <l:gentext key="section" text="sec."/>
+ <l:gentext key="See" text="Vezi"/>
+ <l:gentext key="see" text="Vezi"/>
+ <l:gentext key="SeeAlso" text="Vezi &#351;i"/>
+ <l:gentext key="Seealso" text="Vezi &#351;i"/>
+ <l:gentext key="seealso" text="Vezi &#351;i"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="SetIndex" text="Index"/>
+ <l:gentext key="setindex" text="Index"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="Step" text="Opera&#254;ie"/>
+ <l:gentext key="step" text="opera&#254;iune"/>
+ <l:gentext key="Table" text="Tabel"/>
+ <l:gentext key="table" text="Tabel"/>
+ <l:gentext key="TIP" text="INDICA&#222;IE"/>
+ <l:gentext key="Tip" text="Indica&#254;ie"/>
+ <l:gentext key="tip" text="Indica&#254;ie"/>
+ <l:gentext key="WARNING" text="AVERTISMENT"/>
+ <l:gentext key="Warning" text="Avertisment"/>
+ <l:gentext key="warning" text="Avertisment"/>
+ <l:gentext key="and" text="&#351;i"/>
+ <l:gentext key="by" text="de"/>
+ <l:gentext key="Edited" text="Publicat"/>
+ <l:gentext key="edited" text="Publicat"/>
+ <l:gentext key="Editedby" text="Publicat de"/>
+ <l:gentext key="editedby" text="Publicat de"/>
+ <l:gentext key="in" text="&#238;n"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="element inexistent"/>
+ <l:gentext key="notes" text="Note"/>
+ <l:gentext key="Notes" text="Note"/>
+ <l:gentext key="Pgs" text="Pagini"/>
+ <l:gentext key="pgs" text="Pagini"/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Remarci"/>
+ <l:gentext key="tablenotes" text="Remarci"/>
+ <l:gentext key="TableofContents" text="Cuprins"/>
+ <l:gentext key="tableofcontents" text="Cuprins"/>
+ <l:gentext key="unexpectedelementname" text="Nume de element nea&#351;teptat"/>
+ <l:gentext key="unsupported" text="nerecunoscut de sisitem"/>
+ <l:gentext key="xrefto" text="referin&#254;&#227; c&#227;tre"/>
+ <l:gentext key="listofequations" text="List&#227; de ecua&#254;ii"/>
+ <l:gentext key="ListofEquations" text="List&#227; de ecua&#254;ii"/>
+ <l:gentext key="ListofExamples" text="List&#227; de exemple"/>
+ <l:gentext key="listofexamples" text="List&#227; de exemple"/>
+ <l:gentext key="ListofFigures" text="List&#227; de figuri"/>
+ <l:gentext key="listoffigures" text="List&#227; de figuri"/>
+ <l:gentext key="listoftables" text="List&#227; de tabele"/>
+ <l:gentext key="ListofTables" text="List&#227; de tabele"/>
+ <l:gentext key="ListofUnknown" text="List&#227; de necunoscute"/>
+ <l:gentext key="listofunknown" text="List&#227; de necunoscute"/>
+ <l:gentext key="nav-home" text="Acas&#227;"/>
+ <l:gentext key="nav-next" text="&#206;nainte"/>
+ <l:gentext key="nav-next-sibling" text="Repede &#239;nainte"/>
+ <l:gentext key="nav-prev" text="&#206;napoi"/>
+ <l:gentext key="nav-prev-sibling" text="Repede &#238;napoi"/>
+ <l:gentext key="nav-up" text="Sus"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Anexa %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap. %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="ecua&#254;ia %n. %t"/>
+ <l:template name="example" text="Exemplu %n. %t"/>
+ <l:template name="figure" text="Fig. %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedur&#227;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Anexa %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Cap. %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="A:&#160;%n"/>
+ <l:template name="appendix" text="Anexa %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Cap. %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="ecua&#254;ia&#160;%n"/>
+ <l:template name="example" text="Exemplu %n. %t"/>
+ <l:template name="figure" text="Fig. %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Parte %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedur&#227;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Q:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Q:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabel %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Sec&#254;iune %n"/>
+ <l:template name="sect2" text="Sec&#254;iune %n"/>
+ <l:template name="sect3" text="Sec&#254;iune %n"/>
+ <l:template name="sect4" text="Sec&#254;iune %n"/>
+ <l:template name="sect5" text="Sec&#254;iune %n"/>
+ <l:template name="section" text="Sec&#254;iune %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#351;i "/>
+ <l:template name="seplast" text=", &#351;i "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Vezi "/>
+ <l:template name="seealso" text="Vezi &#351;i "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text=": "/>
+ <l:template name="MsgLevel" text="Nivel: "/>
+ <l:template name="MsgOrig" text="Origine: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ru.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ru.xml
new file mode 100644
index 0000000..b7d26fc
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/ru.xml
@@ -0,0 +1,484 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ru" english-language-name="Russian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#1040;&#1085;&#1085;&#1086;&#1090;&#1072;&#1094;&#1080;&#1103;"/>
+ <l:gentext key="abstract" text="&#1040;&#1085;&#1085;&#1086;&#1090;&#1072;&#1094;&#1080;&#1103;"/>
+ <l:gentext key="Answer" text="&#1054;:"/>
+ <l:gentext key="answer" text="&#1054;:"/>
+ <l:gentext key="Appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="appendix" text="&#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Appendix.abr" text="&#1055;&#1088;&#1080;&#1083;."/>
+ <l:gentext key="appendix.abr" text="&#1055;&#1088;&#1080;&#1083;."/>
+ <l:gentext key="Article" text="&#1057;&#1090;&#1072;&#1090;&#1100;&#1103;"/>
+ <l:gentext key="article" text="&#1057;&#1090;&#1072;&#1090;&#1100;&#1103;"/>
+ <l:gentext key="Audience" text="&#1040;&#1091;&#1076;&#1080;&#1090;&#1086;&#1088;&#1080;&#1103;"/>
+ <l:gentext key="audience" text="&#1040;&#1091;&#1076;&#1080;&#1090;&#1086;&#1088;&#1080;&#1103;"/>
+ <l:gentext key="Bibliography" text="&#1051;&#1080;&#1090;&#1077;&#1088;&#1072;&#1090;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="bibliography" text="&#1051;&#1080;&#1090;&#1077;&#1088;&#1072;&#1090;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="Book" text="&#1050;&#1085;&#1080;&#1075;&#1072;"/>
+ <l:gentext key="book" text="&#1050;&#1085;&#1080;&#1075;&#1072;"/>
+ <l:gentext key="CAUTION" text="&#1055;&#1056;&#1045;&#1044;&#1054;&#1057;&#1058;&#1045;&#1056;&#1045;&#1046;&#1045;&#1053;&#1048;&#1045;"/>
+ <l:gentext key="Caution" text="&#1055;&#1088;&#1077;&#1076;&#1086;&#1089;&#1090;&#1077;&#1088;&#1077;&#1078;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="caution" text="&#1055;&#1088;&#1077;&#1076;&#1086;&#1089;&#1090;&#1077;&#1088;&#1077;&#1078;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="chapter" text="&#1075;&#1083;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="Chapter.abr" text="&#1043;&#1083;."/>
+ <l:gentext key="chapter.abr" text="&#1043;&#1083;."/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="&#1055;&#1086;&#1089;&#1074;&#1103;&#1097;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="dedication" text="&#1055;&#1086;&#1089;&#1074;&#1103;&#1097;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Edition" text="&#1056;&#1077;&#1076;&#1072;&#1082;&#1094;&#1080;&#1103;"/>
+ <l:gentext key="edition" text="&#1056;&#1077;&#1076;&#1072;&#1082;&#1094;&#1080;&#1103;"/>
+ <l:gentext key="Equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;"/>
+ <l:gentext key="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;"/>
+ <l:gentext key="Equation.abr" text="&#1060;."/>
+ <l:gentext key="equation.abr" text="&#1060;."/>
+ <l:gentext key="Example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088;"/>
+ <l:gentext key="example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088;"/>
+ <l:gentext key="Example.abr" text="&#1055;&#1088;&#1080;&#1084;."/>
+ <l:gentext key="example.abr" text="&#1055;&#1088;&#1080;&#1084;."/>
+ <l:gentext key="Figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082;"/>
+ <l:gentext key="figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082;"/>
+ <l:gentext key="Figure.abr" text="&#1056;&#1080;&#1089;."/>
+ <l:gentext key="figure.abr" text="&#1056;&#1080;&#1089;."/>
+ <l:gentext key="Glossary" text="&#1043;&#1083;&#1086;&#1089;&#1089;&#1072;&#1088;&#1080;&#1081;"/>
+ <l:gentext key="glossary" text="&#1043;&#1083;&#1086;&#1089;&#1089;&#1072;&#1088;&#1080;&#1081;"/>
+ <l:gentext key="GlossSee" text="&#1057;&#1084;."/>
+ <l:gentext key="glosssee" text="&#1057;&#1084;."/>
+ <l:gentext key="GlossSeeAlso" text="&#1057;&#1084;. &#1090;&#1072;&#1082;&#1078;&#1077;"/>
+ <l:gentext key="glossseealso" text="&#1057;&#1084;. &#1090;&#1072;&#1082;&#1078;&#1077;"/>
+ <l:gentext key="IMPORTANT" text="&#1042;&#1040;&#1046;&#1053;&#1054;"/>
+ <l:gentext key="Important" text="&#1042;&#1072;&#1078;&#1085;&#1086;"/>
+ <l:gentext key="important" text="&#1042;&#1072;&#1078;&#1085;&#1086;"/>
+ <l:gentext key="Index" text="&#1055;&#1088;&#1077;&#1076;&#1084;&#1077;&#1090;&#1085;&#1099;&#1081; &#1091;&#1082;&#1072;&#1079;&#1072;&#1090;&#1077;&#1083;&#1100;"/>
+ <l:gentext key="index" text="&#1055;&#1088;&#1077;&#1076;&#1084;&#1077;&#1090;&#1085;&#1099;&#1081; &#1091;&#1082;&#1072;&#1079;&#1072;&#1090;&#1077;&#1083;&#1100;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="&#1040;&#1074;&#1090;&#1086;&#1088;&#1089;&#1082;&#1080;&#1077; &#1087;&#1088;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="legalnotice" text="&#1040;&#1074;&#1090;&#1086;&#1088;&#1089;&#1082;&#1080;&#1077; &#1087;&#1088;&#1072;&#1074;&#1072;"/>
+ <l:gentext key="Level" text="&#1059;&#1088;&#1086;&#1074;&#1077;&#1085;&#1100;"/>
+ <l:gentext key="level" text="&#1059;&#1088;&#1086;&#1074;&#1077;&#1085;&#1100;"/>
+ <l:gentext key="MsgAud" text="Audience"/>
+ <l:gentext key="msgaud" text="Audience"/>
+ <l:gentext key="MsgLevel" text="Level"/>
+ <l:gentext key="msglevel" text="Level"/>
+ <l:gentext key="MsgOrig" text="Origin"/>
+ <l:gentext key="msgorig" text="Origin"/>
+ <l:gentext key="Name" text="&#1048;&#1084;&#1103;"/>
+ <l:gentext key="name" text="&#1048;&#1084;&#1103;"/>
+ <l:gentext key="NOTE" text="&#1047;&#1040;&#1052;&#1045;&#1063;&#1040;&#1053;&#1048;&#1045;"/>
+ <l:gentext key="Note" text="&#1047;&#1072;&#1084;&#1077;&#1095;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="note" text="&#1047;&#1072;&#1084;&#1077;&#1095;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Origin" text="&#1048;&#1089;&#1090;&#1086;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="origin" text="&#1048;&#1089;&#1090;&#1086;&#1095;&#1085;&#1080;&#1082;"/>
+ <l:gentext key="Part" text="&#1063;&#1072;&#1089;&#1090;&#1100;"/>
+ <l:gentext key="part" text="&#1063;&#1072;&#1089;&#1090;&#1100;"/>
+ <l:gentext key="Part.abr" text="&#1063;."/>
+ <l:gentext key="part.abr" text="&#1063;."/>
+ <l:gentext key="Preface" text="&#1055;&#1088;&#1077;&#1076;&#1080;&#1089;&#1083;&#1086;&#1074;&#1080;&#1077;"/>
+ <l:gentext key="preface" text="&#1055;&#1088;&#1077;&#1076;&#1080;&#1089;&#1083;&#1086;&#1074;&#1080;&#1077;"/>
+ <l:gentext key="Procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="Procedure.abr" text="&#1055;&#1088;&#1086;&#1094;."/>
+ <l:gentext key="procedure.abr" text="&#1055;&#1088;&#1086;&#1094;."/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="&#1054;&#1087;&#1091;&#1073;&#1083;&#1080;&#1082;&#1086;&#1074;&#1072;&#1085;&#1086;"/>
+ <l:gentext key="published" text="&#1054;&#1087;&#1091;&#1073;&#1083;&#1080;&#1082;&#1086;&#1074;&#1072;&#1085;&#1086;"/>
+ <l:gentext key="Question" text="&#1042;:"/>
+ <l:gentext key="question" text="&#1042;:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#1057;&#1089;&#1099;&#1083;&#1082;&#1072;"/>
+ <l:gentext key="reference" text="&#1057;&#1089;&#1099;&#1083;&#1082;&#1072;"/>
+ <l:gentext key="RefName" text="&#1053;&#1072;&#1079;&#1074;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="refname" text="&#1053;&#1072;&#1079;&#1074;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#1057;&#1080;&#1085;&#1090;&#1072;&#1082;&#1089;&#1080;&#1089;"/>
+ <l:gentext key="refsynopsisdiv" text="&#1057;&#1080;&#1085;&#1090;&#1072;&#1082;&#1089;&#1080;&#1089;"/>
+ <l:gentext key="RevHistory" text="&#1048;&#1089;&#1090;&#1086;&#1088;&#1080;&#1103; &#1087;&#1077;&#1088;&#1077;&#1080;&#1079;&#1076;&#1072;&#1085;&#1080;&#1103;"/>
+ <l:gentext key="revhistory" text="&#1048;&#1089;&#1090;&#1086;&#1088;&#1080;&#1103; &#1087;&#1077;&#1088;&#1077;&#1080;&#1079;&#1076;&#1072;&#1085;&#1080;&#1103;"/>
+ <l:gentext key="Revision" text="&#1048;&#1079;&#1076;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="revision" text="&#1048;&#1079;&#1076;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="sect1" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect2" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect3" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect4" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="sect5" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="Section" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="section" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="Section.abr" text="&#1056;&#1072;&#1079;&#1076;."/>
+ <l:gentext key="section.abr" text="&#1056;&#1072;&#1079;&#1076;."/>
+ <l:gentext key="See" text="&#1057;&#1084;."/>
+ <l:gentext key="see" text="&#1057;&#1084;."/>
+ <l:gentext key="SeeAlso" text="&#1057;&#1084;. &#1090;&#1072;&#1082;&#1078;&#1077;"/>
+ <l:gentext key="Seealso" text="&#1057;&#1084;. &#1090;&#1072;&#1082;&#1078;&#1077;"/>
+ <l:gentext key="seealso" text="&#1057;&#1084;. &#1090;&#1072;&#1082;&#1078;&#1077;"/>
+ <l:gentext key="Set" text="&#1055;&#1086;&#1076;&#1073;&#1086;&#1088;&#1082;&#1072;"/>
+ <l:gentext key="set" text="&#1055;&#1086;&#1076;&#1073;&#1086;&#1088;&#1082;&#1072;"/>
+ <l:gentext key="SetIndex" text="&#1048;&#1085;&#1076;&#1077;&#1082;&#1089; &#1087;&#1086;&#1076;&#1073;&#1086;&#1088;&#1082;&#1080;"/>
+ <l:gentext key="setindex" text="&#1048;&#1085;&#1076;&#1077;&#1082;&#1089; &#1087;&#1086;&#1076;&#1073;&#1086;&#1088;&#1082;&#1080;"/>
+ <l:gentext key="Sidebar" text="&#1042;&#1099;&#1076;&#1077;&#1083;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="sidebar" text="&#1074;&#1099;&#1076;&#1077;&#1083;&#1077;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="Step" text="&#1064;&#1072;&#1075;"/>
+ <l:gentext key="step" text="&#1096;&#1072;&#1075;"/>
+ <l:gentext key="Table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;"/>
+ <l:gentext key="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;"/>
+ <l:gentext key="Table.abr" text="&#1058;&#1072;&#1073;&#1083;."/>
+ <l:gentext key="table.abr" text="&#1058;&#1072;&#1073;&#1083;."/>
+ <l:gentext key="TIP" text="&#1055;&#1054;&#1044;&#1057;&#1050;&#1040;&#1047;&#1050;&#1040;"/>
+ <l:gentext key="Tip" text="&#1055;&#1086;&#1076;&#1089;&#1082;&#1072;&#1079;&#1082;&#1072;"/>
+ <l:gentext key="tip" text="&#1055;&#1086;&#1076;&#1089;&#1082;&#1072;&#1079;&#1082;&#1072;"/>
+ <l:gentext key="WARNING" text="&#1042;&#1053;&#1048;&#1052;&#1040;&#1053;&#1048;&#1045;"/>
+ <l:gentext key="Warning" text="&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="warning" text="&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="and" text=""/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="called" text=""/>
+ <l:gentext key="edited" text="&#1055;&#1086;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1080;&#1077;&#1081;"/>
+ <l:gentext key="Edited" text="&#1055;&#1086;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1080;&#1077;&#1081;"/>
+ <l:gentext key="Editedby" text="&#1055;&#1086;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1080;&#1077;&#1081;"/>
+ <l:gentext key="editedby" text="&#1055;&#1086;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1080;&#1077;&#1081;"/>
+ <l:gentext key="in" text="&#1074;"/>
+ <l:gentext key="TableofContents" text="&#1057;&#1086;&#1076;&#1077;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="tableofcontents" text="&#1057;&#1086;&#1076;&#1077;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="Notes" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1095;&#1072;&#1085;&#1080;&#1103;"/>
+ <l:gentext key="notes" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1095;&#1072;&#1085;&#1080;&#1103;"/>
+ <l:gentext key="TableNotes" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1095;&#1072;&#1085;&#1080;&#1103;"/>
+ <l:gentext key="tablenotes" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1095;&#1072;&#1085;&#1080;&#1103;"/>
+ <l:gentext key="nonexistantelement" text="non-existant element"/>
+ <l:gentext key="pgs" text="&#1057;&#1090;&#1088;."/>
+ <l:gentext key="Pgs" text="&#1057;&#1090;&#1088;."/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="the" text=""/>
+ <l:gentext key="unexpectedelementname" text="unexpected element name"/>
+ <l:gentext key="unsupported" text="unsupported"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1092;&#1086;&#1088;&#1084;&#1091;&#1083;"/>
+ <l:gentext key="ListofEquations" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1092;&#1086;&#1088;&#1084;&#1091;&#1083;"/>
+ <l:gentext key="ListofExamples" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1086;&#1074;"/>
+ <l:gentext key="listofexamples" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1086;&#1074;"/>
+ <l:gentext key="ListofFigures" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1080;&#1083;&#1083;&#1102;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1081;"/>
+ <l:gentext key="listoffigures" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1080;&#1083;&#1083;&#1102;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1081;"/>
+ <l:gentext key="listoftables" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;"/>
+ <l:gentext key="ListofTables" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;"/>
+ <l:gentext key="ListofUnknown" text="&#1053;&#1077;&#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1099;&#1081; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082;"/>
+ <l:gentext key="listofunknown" text="&#1053;&#1077;&#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1099;&#1081; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082;"/>
+ <l:gentext key="nav-next" text="&#1057;&#1083;&#1077;&#1076;."/>
+ <l:gentext key="nav-next-sibling" text="&#1057;&#1083;&#1077;&#1076;. &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="nav-prev" text="&#1055;&#1088;&#1077;&#1076;."/>
+ <l:gentext key="nav-prev-sibling" text="&#1055;&#1088;&#1077;&#1076;. &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1076;&#1077;&#1083;"/>
+ <l:gentext key="x-nav-next" text="&#1057;&#1083;&#1077;&#1076;."/>
+ <l:gentext key="nav-home" text="&#1053;&#1072;&#1095;&#1072;&#1083;&#1086;"/>
+ <l:gentext key="nav-up" text="&#1059;&#1088;&#1086;&#1074;&#1077;&#1085;&#1100; &#1074;&#1099;&#1096;&#1077;"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="&#1063;&#1077;&#1088;&#1085;&#1086;&#1074;&#1080;&#1082;"/>
+ <l:gentext key="above" text="&#1074;&#1099;&#1096;&#1077;"/>
+ <l:gentext key="below" text="&#1085;&#1080;&#1078;&#1077;"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="&#1072;&#1073;&#1074;&#1075;&#1076;&#1077;&#1105;&#1078;&#1079;&#1080;&#1081;&#1082;&#1083;&#1084;&#1085;&#1086;&#1087;&#1088;&#1089;&#1090;&#1091;&#1092;&#1093;&#1094;&#1095;&#1096;&#1097;&#1098;&#1099;&#1100;&#1101;&#1102;&#1103;"/>
+ <l:gentext key="uppercase.alpha" text="&#1040;&#1041;&#1042;&#1043;&#1044;&#1045;&#1025;&#1046;&#1047;&#1048;&#1049;&#1050;&#1051;&#1052;&#1053;&#1054;&#1055;&#1056;&#1057;&#1058;&#1059;&#1060;&#1061;&#1062;&#1063;&#1064;&#1065;&#1066;&#1067;&#1068;&#1069;&#1070;&#1071;"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1103; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="article" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1089;&#1090;&#1072;&#1090;&#1100;&#1080; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="bibliodiv" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1073;&#1080;&#1073;&#1083;&#1080;&#1086;&#1075;&#1088;&#1072;&#1092;&#1080;&#1080; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="book" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1082;&#1085;&#1080;&#1075;&#1080; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="chapter" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1075;&#1083;&#1072;&#1074;&#1099; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="columns" text="&#1057;&#1090;&#1086;&#1083;&#1073;&#1094;&#1099;"/>
+ <l:template name="draftarea" text="&#1055;&#1088;&#1077;&#1076;&#1074;&#1072;&#1088;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;&#1077; &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1084;&#1077;&#1090;&#1072;&#1076;&#1072;&#1085;&#1085;&#1099;&#1093;"/>
+ <l:template name="edit-attrs" text="&#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1091;&#1081;&#1090;&#1077; &#1072;&#1090;&#1090;&#1088;&#1080;&#1073;&#1091;&#1090;&#1099; &#1089;&#1086;&#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1097;&#1080;&#1093; &#1101;&#1083;&#1077;&#1084;&#1077;&#1085;&#1090;&#1086;&#1074;"/>
+ <l:template name="footnote" text="&#1057;&#1085;&#1086;&#1089;&#1082;&#1072;"/>
+ <l:template name="metainfo" text=""/>
+ <l:template name="preface" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1087;&#1088;&#1077;&#1076;&#1080;&#1089;&#1083;&#1086;&#1074;&#1080;&#1103; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="part" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1095;&#1072;&#1089;&#1090;&#1080; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="section" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1072; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="sect1" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1072; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="sect2" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1072; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="sect3" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1072; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="sect4" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1072; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="sect5" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1072; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="set" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1087;&#1086;&#1076;&#1073;&#1086;&#1088;&#1082;&#1080; (&#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;)"/>
+ <l:template name="title" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;: "/>
+ <l:template name="titles" text="&#1069;&#1083;&#1077;&#1084;&#1077;&#1085;&#1090;&#1099; &#1079;&#1072;&#1075;&#1083;&#1072;&#1074;&#1085;&#1086;&#1081; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099; &#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1090;"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ <l:template name="reference" text="Reference (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072; %n. %t"/>
+ <l:template name="example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088; %n. %t"/>
+ <l:template name="figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1063;&#1072;&#1089;&#1090;&#1100; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077; %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#1054;:&#160;%n"/>
+ <l:template name="appendix" text="&#1055;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1043;&#1083;&#1072;&#1074;&#1072; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;&#160;%n"/>
+ <l:template name="example" text="&#1055;&#1088;&#1080;&#1084;&#1077;&#1088; %n. %t"/>
+ <l:template name="figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1063;&#1072;&#1089;&#1090;&#1100; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#1042;:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#1042;:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; %n"/>
+ <l:template name="sect2" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; %n"/>
+ <l:template name="sect3" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; %n"/>
+ <l:template name="sect4" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; %n"/>
+ <l:template name="sect5" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; %n"/>
+ <l:template name="section" text="&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" "/>
+ <l:template name="seplast" text=", "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#1057;&#1084;. "/>
+ <l:template name="seealso" text="&#1057;&#1084;. &#1090;&#1072;&#1082;&#1078;&#1077; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Audience: "/>
+ <l:template name="MsgLevel" text="Level: "/>
+ <l:template name="MsgOrig" text="Origin: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sk.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sk.xml
new file mode 100644
index 0000000..3bccd32
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sk.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sk" english-language-name="Slovak">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Obsah"/>
+ <l:gentext key="abstract" text="Obsah"/>
+ <l:gentext key="Answer" text="A:"/>
+ <l:gentext key="answer" text="A:"/>
+ <l:gentext key="Appendix" text="Dodatok"/>
+ <l:gentext key="appendix" text="dodatok"/>
+ <l:gentext key="Article" text="&#268;l&#225;nok"/>
+ <l:gentext key="article" text="&#268;l&#225;nok"/>
+ <l:gentext key="Bibliography" text="Bibliografia"/>
+ <l:gentext key="bibliography" text="Bibliografia"/>
+ <l:gentext key="Book" text="Kniha"/>
+ <l:gentext key="book" text="Kniha"/>
+ <l:gentext key="CAUTION" text="V&#221;STRAHA"/>
+ <l:gentext key="Caution" text="V&#253;straha"/>
+ <l:gentext key="caution" text="V&#253;straha"/>
+ <l:gentext key="Chapter" text="Kapitola"/>
+ <l:gentext key="chapter" text="kapitola"/>
+ <l:gentext key="Colophon" text="Tir&#225;&#382;"/>
+ <l:gentext key="colophon" text="Tir&#225;&#382;"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Venovanie"/>
+ <l:gentext key="dedication" text="Venovanie"/>
+ <l:gentext key="Edition" text="Vydanie"/>
+ <l:gentext key="edition" text="Vydanie"/>
+ <l:gentext key="Equation" text="Rovnice"/>
+ <l:gentext key="equation" text="Rovnice"/>
+ <l:gentext key="Example" text="Pr&#237;klad"/>
+ <l:gentext key="example" text="Pr&#237;klad"/>
+ <l:gentext key="Figure" text="Obr&#225;zok"/>
+ <l:gentext key="figure" text="Obr&#225;zok"/>
+ <l:gentext key="Glossary" text="Slovn&#237;k"/>
+ <l:gentext key="glossary" text="Slovn&#237;k"/>
+ <l:gentext key="GlossSee" text="Pozri"/>
+ <l:gentext key="glosssee" text="Pozri"/>
+ <l:gentext key="GlossSeeAlso" text="Pozri tie&#382;"/>
+ <l:gentext key="glossseealso" text="Pozri tie&#382;"/>
+ <l:gentext key="IMPORTANT" text="D&#212;LE&#381;IT&#201;"/>
+ <l:gentext key="Important" text="D&#244;le&#382;it&#233;"/>
+ <l:gentext key="important" text="D&#244;le&#382;it&#233;"/>
+ <l:gentext key="Index" text="Zoznam"/>
+ <l:gentext key="index" text="Zoznam"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Pr&#225;vna pozn&#225;mka"/>
+ <l:gentext key="legalnotice" text="Pr&#225;vna pozn&#225;mka"/>
+ <l:gentext key="MsgAud" text="Publikum"/>
+ <l:gentext key="msgaud" text="Publikum"/>
+ <l:gentext key="MsgLevel" text="&#218;rove&#328;"/>
+ <l:gentext key="msglevel" text="&#218;rove&#328;"/>
+ <l:gentext key="MsgOrig" text="P&#244;vod"/>
+ <l:gentext key="msgorig" text="P&#244;vod"/>
+ <l:gentext key="NOTE" text="POZN&#193;MKA"/>
+ <l:gentext key="Note" text="Pozn&#225;mka"/>
+ <l:gentext key="note" text="Pozn&#225;mka"/>
+ <l:gentext key="Part" text="&#268;as&#357;"/>
+ <l:gentext key="part" text="&#268;as&#357;"/>
+ <l:gentext key="Preface" text="&#218;vod"/>
+ <l:gentext key="preface" text="&#218;vod"/>
+ <l:gentext key="Procedure" text="Postup"/>
+ <l:gentext key="procedure" text="Postup"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Vydan&#233;"/>
+ <l:gentext key="published" text="Vydan&#233;"/>
+ <l:gentext key="Question" text="Q:"/>
+ <l:gentext key="question" text="Q:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Odkaz"/>
+ <l:gentext key="reference" text="Odkaz"/>
+ <l:gentext key="RefName" text="Meno"/>
+ <l:gentext key="refname" text="Meno"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Preh&#318;ad"/>
+ <l:gentext key="refsynopsisdiv" text="Preh&#318;ad"/>
+ <l:gentext key="RevHistory" text="Preh&#318;ad rev&#237;zi&#237;"/>
+ <l:gentext key="revhistory" text="Preh&#318;ad rev&#237;zi&#237;"/>
+ <l:gentext key="Revision" text="Rev&#237;zia"/>
+ <l:gentext key="revision" text="Rev&#237;zia"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Oddiel"/>
+ <l:gentext key="section" text="oddiel"/>
+ <l:gentext key="See" text="Pozri"/>
+ <l:gentext key="see" text="Pozri"/>
+ <l:gentext key="SeeAlso" text="Pozri tie&#382;"/>
+ <l:gentext key="Seealso" text="Pozri tie&#382;"/>
+ <l:gentext key="seealso" text="Pozri tie&#382;"/>
+ <l:gentext key="Set" text="Nastavi&#357;"/>
+ <l:gentext key="set" text="Nastavi&#357;"/>
+ <l:gentext key="SetIndex" text="Nastavi&#357; index"/>
+ <l:gentext key="setindex" text="Nastavi&#357; index"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="bo&#269;n&#237; li&#353;ta"/>
+ <l:gentext key="Step" text="Krok"/>
+ <l:gentext key="step" text="krok"/>
+ <l:gentext key="Table" text="Tabu&#318;ka"/>
+ <l:gentext key="table" text="Tabu&#318;ka"/>
+ <l:gentext key="TIP" text="TIP"/>
+ <l:gentext key="Tip" text="Tip"/>
+ <l:gentext key="tip" text="Tip"/>
+ <l:gentext key="WARNING" text="VAROVANIE"/>
+ <l:gentext key="Warning" text="Varovanie"/>
+ <l:gentext key="warning" text="Varovanie"/>
+ <l:gentext key="and" text="a"/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="Vydan&#233;"/>
+ <l:gentext key="edited" text="Vydan&#233;"/>
+ <l:gentext key="Editedby" text="Vydan&#233;"/>
+ <l:gentext key="editedby" text="Vydan&#233;"/>
+ <l:gentext key="in" text="v"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="neexistuj&#250;ci prvok"/>
+ <l:gentext key="notes" text="Pozn&#225;mky"/>
+ <l:gentext key="Notes" text="Pozn&#225;mky"/>
+ <l:gentext key="Pgs" text="Str."/>
+ <l:gentext key="pgs" text="Str."/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Pozn&#225;mky"/>
+ <l:gentext key="tablenotes" text="Pozn&#225;mky"/>
+ <l:gentext key="TableofContents" text="Obsah"/>
+ <l:gentext key="tableofcontents" text="Obsah"/>
+ <l:gentext key="unexpectedelementname" text="Neo&#269;ak&#225;van&#233; meno prvku"/>
+ <l:gentext key="unsupported" text="nepodporovan&#253;"/>
+ <l:gentext key="xrefto" text="xref k"/>
+ <l:gentext key="listofequations" text="Zoznam rovn&#237;c"/>
+ <l:gentext key="ListofEquations" text="Zoznam rovn&#237;c"/>
+ <l:gentext key="ListofExamples" text="Zoznam pr&#237;kladov"/>
+ <l:gentext key="listofexamples" text="Zoznam pr&#237;kladov"/>
+ <l:gentext key="ListofFigures" text="Zoznam obr&#225;zkov"/>
+ <l:gentext key="listoffigures" text="Zoznam obr&#225;zkov"/>
+ <l:gentext key="listoftables" text="Zoznam tabuliek"/>
+ <l:gentext key="ListofTables" text="Zoznam tabuliek"/>
+ <l:gentext key="ListofUnknown" text="Zoznam nezn&#225;meho"/>
+ <l:gentext key="listofunknown" text="Zoznam nezn&#225;meho"/>
+ <l:gentext key="nav-home" text="Domov"/>
+ <l:gentext key="nav-next" text="Nasleduj&#250;ci"/>
+ <l:gentext key="nav-next-sibling" text="R&#253;chlo dopredu"/>
+ <l:gentext key="nav-prev" text="Predch&#225;dzaj&#250;ci"/>
+ <l:gentext key="nav-prev-sibling" text="R&#253;chlo nazp&#228;t"/>
+ <l:gentext key="nav-up" text="Hore"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Dodatok %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitola %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Rovnice %n. %t"/>
+ <l:template name="example" text="Pr&#237;klad %n. %t"/>
+ <l:template name="figure" text="Obr&#225;zok %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#268;as&#357; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Postup&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabu&#318;ka %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Dodatok %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Kapitola %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="A:&#160;%n"/>
+ <l:template name="appendix" text="Dodatok %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitola %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Rovnice&#160;%n"/>
+ <l:template name="example" text="Pr&#237;klad %n. %t"/>
+ <l:template name="figure" text="Obr&#225;zok %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#268;as&#357; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Postup&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Q:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Q:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabu&#318;ka %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Oddiel %n"/>
+ <l:template name="sect2" text="Oddiel %n"/>
+ <l:template name="sect3" text="Oddiel %n"/>
+ <l:template name="sect4" text="Oddiel %n"/>
+ <l:template name="sect5" text="Oddiel %n"/>
+ <l:template name="section" text="Oddiel %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" a "/>
+ <l:template name="seplast" text=", a "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Pozri "/>
+ <l:template name="seealso" text="Pozri tie&#382; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Publikum: "/>
+ <l:template name="MsgLevel" text="&#218;rove&#328;: "/>
+ <l:template name="MsgOrig" text="P&#244;vod: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sl.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sl.xml
new file mode 100644
index 0000000..c4bf197
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sl.xml
@@ -0,0 +1,451 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sl" english-language-name="Slovenian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Povzetek"/>
+ <l:gentext key="abstract" text="Povzetek"/>
+ <l:gentext key="Answer" text="O:"/>
+ <l:gentext key="answer" text="O:"/>
+ <l:gentext key="Appendix" text="Dodatek"/>
+ <l:gentext key="appendix" text="dodatek"/>
+ <l:gentext key="Article" text="&#268;lanek"/>
+ <l:gentext key="article" text="&#268;lanek"/>
+ <l:gentext key="Bibliography" text="Literatura"/>
+ <l:gentext key="bibliography" text="Literatura"/>
+ <l:gentext key="Book" text="Knjiga"/>
+ <l:gentext key="book" text="Knjiga"/>
+ <l:gentext key="Caution" text="Opozorilo"/>
+ <l:gentext key="caution" text="Opozorilo"/>
+ <l:gentext key="CAUTION" text="OPOZORILO"/>
+ <l:gentext key="Chapter" text="Poglavje"/>
+ <l:gentext key="chapter" text="poglavje"/>
+ <l:gentext key="Colophon" text="Kolofon"/>
+ <l:gentext key="colophon" text="Kolofon"/>
+ <l:gentext key="Copyright" text="Pravna za&#353;&#269;ita"/>
+ <l:gentext key="copyright" text="Pravna za&#353;&#269;ita"/>
+ <l:gentext key="Dedication" text="Posvetilo"/>
+ <l:gentext key="dedication" text="Posvetilo"/>
+ <l:gentext key="Edition" text="Izdaja"/>
+ <l:gentext key="edition" text="Izdaja"/>
+ <l:gentext key="Equation" text="Ena&#269;ba"/>
+ <l:gentext key="equation" text="Ena&#269;ba"/>
+ <l:gentext key="Example" text="Primer"/>
+ <l:gentext key="example" text="Primer"/>
+ <l:gentext key="Figure" text="Slika"/>
+ <l:gentext key="figure" text="Slika"/>
+ <l:gentext key="Glossary" text="Slovar&#269;ek"/>
+ <l:gentext key="glossary" text="Slovar&#269;ek"/>
+ <l:gentext key="GlossSee" text="glej"/>
+ <l:gentext key="glosssee" text="glej"/>
+ <l:gentext key="GlossSeeAlso" text="glej tudi"/>
+ <l:gentext key="glossseealso" text="glej tudi"/>
+ <l:gentext key="IMPORTANT" text="POMEMBNO"/>
+ <l:gentext key="Important" text="Pomembno"/>
+ <l:gentext key="important" text="Pomembno"/>
+ <l:gentext key="Index" text="Stvarno kazalo"/>
+ <l:gentext key="index" text="Stvarno kazalo"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Pravno sporo&#269;ilo"/>
+ <l:gentext key="legalnotice" text="Pravno sporo&#269;ilo"/>
+ <l:gentext key="MsgAud" text="Ob&#269;instvo"/>
+ <l:gentext key="msgaud" text="Ob&#269;instvo"/>
+ <l:gentext key="MsgLevel" text="Raven"/>
+ <l:gentext key="msglevel" text="Raven"/>
+ <l:gentext key="MsgOrig" text="Izvor"/>
+ <l:gentext key="msgorig" text="Izvor"/>
+ <l:gentext key="note" text="Opomba"/>
+ <l:gentext key="NOTE" text="OPOMBA"/>
+ <l:gentext key="Note" text="Opomba"/>
+ <l:gentext key="Part" text="Del"/>
+ <l:gentext key="part" text="Del"/>
+ <l:gentext key="Preface" text="Predgovor"/>
+ <l:gentext key="preface" text="Predgovor"/>
+ <l:gentext key="Procedure" text="Postopek"/>
+ <l:gentext key="procedure" text="Postopek"/>
+ <l:gentext key="ProductionSet" text="Izdelava"/>
+ <l:gentext key="Published" text="Izdano"/>
+ <l:gentext key="published" text="Izdano"/>
+ <l:gentext key="Question" text="V:"/>
+ <l:gentext key="question" text="V:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Sklic"/>
+ <l:gentext key="reference" text="Sklic"/>
+ <l:gentext key="RefName" text="Ime"/>
+ <l:gentext key="refname" text="Ime"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Sinopsis"/>
+ <l:gentext key="RevHistory" text="Zgodovina razli&#269;ic"/>
+ <l:gentext key="revhistory" text="Zgodovina razli&#269;ic"/>
+ <l:gentext key="Revision" text="Razli&#269;ica"/>
+ <l:gentext key="revision" text="Razli&#269;ica"/>
+ <l:gentext key="sect1" text="Razdelek"/>
+ <l:gentext key="sect2" text="Razdelek"/>
+ <l:gentext key="sect3" text="Razdelek"/>
+ <l:gentext key="sect4" text="Razdelek"/>
+ <l:gentext key="sect5" text="Razdelek"/>
+ <l:gentext key="Section" text="Razdelek"/>
+ <l:gentext key="section" text="razdelek"/>
+ <l:gentext key="see" text="glej"/>
+ <l:gentext key="See" text="glej"/>
+ <l:gentext key="Seealso" text="Glej tudi"/>
+ <l:gentext key="seealso" text="glej tudi"/>
+ <l:gentext key="SeeAlso" text="glej tudi"/>
+ <l:gentext key="Set" text="Postavi"/>
+ <l:gentext key="set" text="Postavi"/>
+ <l:gentext key="SetIndex" text="Postavi stvarno kazalo"/>
+ <l:gentext key="setindex" text="Postavi stvarno kazalo"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="step" text="korak"/>
+ <l:gentext key="Step" text="Korak"/>
+ <l:gentext key="table" text="Tabela"/>
+ <l:gentext key="Table" text="Tabela"/>
+ <l:gentext key="TIP" text="NAMIG"/>
+ <l:gentext key="Tip" text="Namig"/>
+ <l:gentext key="tip" text="Namig"/>
+ <l:gentext key="WARNING" text="POZOR"/>
+ <l:gentext key="Warning" text="Pozor"/>
+ <l:gentext key="warning" text="Pozor"/>
+ <l:gentext key="and" text="in"/>
+ <l:gentext key="by" text="od"/>
+ <l:gentext key="Edited" text="Urejeno"/>
+ <l:gentext key="edited" text="Urejeno"/>
+ <l:gentext key="Editedby" text="Uredil"/>
+ <l:gentext key="editedby" text="Uredil"/>
+ <l:gentext key="in" text="v"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="neobstoje&#269;i element"/>
+ <l:gentext key="Notes" text="Notes"/>
+ <l:gentext key="notes" text="Notes"/>
+ <l:gentext key="Pgs" text="Str."/>
+ <l:gentext key="pgs" text="Str."/>
+ <l:gentext key="Revisedby" text="Pregledal: "/>
+ <l:gentext key="revisedby" text="Pregledal: "/>
+ <l:gentext key="TableNotes" text="Notes"/>
+ <l:gentext key="tablenotes" text="Notes"/>
+ <l:gentext key="TableofContents" text="Kazalo"/>
+ <l:gentext key="tableofcontents" text="Kazalo"/>
+ <l:gentext key="unexpectedelementname" text="Nepri&#269;akovano ime elementa"/>
+ <l:gentext key="unsupported" text="nepodprto"/>
+ <l:gentext key="xrefto" text="xref na"/>
+ <l:gentext key="listofequations" text="Seznam ena&#269;b"/>
+ <l:gentext key="ListofEquations" text="Seznam ena&#269;b"/>
+ <l:gentext key="ListofExamples" text="Seznam primerov"/>
+ <l:gentext key="listofexamples" text="Seznam primerov"/>
+ <l:gentext key="ListofFigures" text="Seznam slik"/>
+ <l:gentext key="listoffigures" text="Seznam slik"/>
+ <l:gentext key="listoftables" text="Seznam tabel"/>
+ <l:gentext key="ListofTables" text="Seznam tabel"/>
+ <l:gentext key="ListofUnknown" text="Seznam neznanih stvari"/>
+ <l:gentext key="listofunknown" text="Seznam neznanih stvari"/>
+ <l:gentext key="nav-home" text="Domov"/>
+ <l:gentext key="nav-next" text="Naprej"/>
+ <l:gentext key="nav-next-sibling" text="Hitro naprej"/>
+ <l:gentext key="nav-prev" text="Nazaj"/>
+ <l:gentext key="nav-prev-sibling" text="Hitro nazaj"/>
+ <l:gentext key="nav-up" text="Gor"/>
+ <l:gentext key="sectioncalled" text="razdelek, imenovan"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Simboli"/>
+ <l:gentext key="lowercase.alpha" text="abc&#269;defghijklmnopqrs&#353;tuvwxyz&#382;"/>
+ <l:gentext key="uppercase.alpha" text="ABC&#268;DEFGHIJKLMNOPQRS&#352;TUVWXYZ&#381;"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Dodatek %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Poglavje %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ena&#269;ba %n. %t"/>
+ <l:template name="example" text="Primer %n. %t"/>
+ <l:template name="figure" text="Slika %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Postopek %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Izdelava %n"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Dodatek %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Poglavje %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="O:&#160;%n"/>
+ <l:template name="appendix" text="Dodatek %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Poglavje %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ena&#269;ba&#160;%n"/>
+ <l:template name="example" text="Primer %n. %t"/>
+ <l:template name="figure" text="Slika %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Postopek&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="V:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="V:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Razdelek %n"/>
+ <l:template name="sect2" text="Razdelek %n"/>
+ <l:template name="sect3" text="Razdelek %n"/>
+ <l:template name="sect4" text="Razdelek %n"/>
+ <l:template name="sect5" text="Razdelek %n"/>
+ <l:template name="section" text="Razdelek %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" in "/>
+ <l:template name="seplast" text=", in "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="glej "/>
+ <l:template name="seealso" text="glej tudi "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Ob&#269;instvo: "/>
+ <l:template name="MsgLevel" text="Raven: "/>
+ <l:template name="MsgOrig" text="Izvor: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sr.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sr.xml
new file mode 100644
index 0000000..86f92bd
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sr.xml
@@ -0,0 +1,450 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sr" english-language-name="Serbian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Pregled"/>
+ <l:gentext key="abstract" text="Pregled"/>
+ <l:gentext key="Answer" text="O:"/>
+ <l:gentext key="answer" text="O:"/>
+ <l:gentext key="Appendix" text="Dodatak"/>
+ <l:gentext key="appendix" text="dodatak"/>
+ <l:gentext key="Article" text="&#268;lanak"/>
+ <l:gentext key="article" text="&#268;lanak"/>
+ <l:gentext key="Bibliography" text="Literatura"/>
+ <l:gentext key="bibliography" text="Literatura"/>
+ <l:gentext key="Book" text="Knjiga"/>
+ <l:gentext key="book" text="Knjiga"/>
+ <l:gentext key="CAUTION" text="UPOZORENJE"/>
+ <l:gentext key="Caution" text="Upozorenje"/>
+ <l:gentext key="caution" text="Upozorenje"/>
+ <l:gentext key="Chapter" text="Poglavlje"/>
+ <l:gentext key="chapter" text="poglavlje"/>
+ <l:gentext key="Colophon" text="Kolofon"/>
+ <l:gentext key="colophon" text="Kolofon"/>
+ <l:gentext key="Copyright" text="Pravna za&#353;tita"/>
+ <l:gentext key="copyright" text="Pravna za&#353;tita"/>
+ <l:gentext key="Dedication" text="Posveta"/>
+ <l:gentext key="dedication" text="Posveta"/>
+ <l:gentext key="Edition" text="Izdanje"/>
+ <l:gentext key="edition" text="Izdanje"/>
+ <l:gentext key="Equation" text="Jedna&#269;ina"/>
+ <l:gentext key="equation" text="Jedna&#269;ina"/>
+ <l:gentext key="Example" text="Primer"/>
+ <l:gentext key="example" text="Primer"/>
+ <l:gentext key="Figure" text="Slika"/>
+ <l:gentext key="figure" text="Slika"/>
+ <l:gentext key="Glossary" text="Re&#269;nik"/>
+ <l:gentext key="glossary" text="Re&#269;nik"/>
+ <l:gentext key="GlossSee" text="Vidi"/>
+ <l:gentext key="glosssee" text="Vidi"/>
+ <l:gentext key="GlossSeeAlso" text="Vidi tako&#273;e"/>
+ <l:gentext key="glossseealso" text="Vidi tako&#273;e"/>
+ <l:gentext key="IMPORTANT" text="VA&#381;NO"/>
+ <l:gentext key="Important" text="Va&#382;no"/>
+ <l:gentext key="important" text="Va&#382;no"/>
+ <l:gentext key="Index" text="Indeks"/>
+ <l:gentext key="index" text="Indeks"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Pravno obave&#353;tenje"/>
+ <l:gentext key="legalnotice" text="Pravno obave&#353;tenje"/>
+ <l:gentext key="MsgAud" text="MsgAud"/>
+ <l:gentext key="msgaud" text="MsgAud"/>
+ <l:gentext key="MsgLevel" text="Nivo"/>
+ <l:gentext key="msglevel" text="Nivo"/>
+ <l:gentext key="MsgOrig" text="Izvor"/>
+ <l:gentext key="msgorig" text="Izvor"/>
+ <l:gentext key="NOTE" text="PRIMEDBA"/>
+ <l:gentext key="Note" text="Primedba"/>
+ <l:gentext key="note" text="Primedba"/>
+ <l:gentext key="Part" text="Deo"/>
+ <l:gentext key="part" text="Deo"/>
+ <l:gentext key="Preface" text="Predgovor"/>
+ <l:gentext key="preface" text="Predgovor"/>
+ <l:gentext key="Procedure" text="Postupak"/>
+ <l:gentext key="procedure" text="Postupak"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Izdato"/>
+ <l:gentext key="published" text="Izdato"/>
+ <l:gentext key="Question" text="P:"/>
+ <l:gentext key="question" text="P:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Referenca"/>
+ <l:gentext key="reference" text="Referenca"/>
+ <l:gentext key="RefName" text="Ime"/>
+ <l:gentext key="refname" text="Ime"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Sinopsis"/>
+ <l:gentext key="RevHistory" text="Istorija revizija"/>
+ <l:gentext key="revhistory" text="Istorija revizija"/>
+ <l:gentext key="Revision" text="Revizija"/>
+ <l:gentext key="revision" text="Revizija"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Odeljak"/>
+ <l:gentext key="section" text="sekcija"/>
+ <l:gentext key="See" text="vidi"/>
+ <l:gentext key="see" text="vidi"/>
+ <l:gentext key="SeeAlso" text="vidi tako&#273;e"/>
+ <l:gentext key="Seealso" text="Vidi tako&#273;e"/>
+ <l:gentext key="seealso" text="vidi tako&#273;e"/>
+ <l:gentext key="Set" text="Postavi"/>
+ <l:gentext key="set" text="Postavi"/>
+ <l:gentext key="SetIndex" text="Postavi indeks"/>
+ <l:gentext key="setindex" text="Postavi indeks"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="Step" text="Korak"/>
+ <l:gentext key="step" text="korak"/>
+ <l:gentext key="Table" text="Tabela"/>
+ <l:gentext key="table" text="Tabela"/>
+ <l:gentext key="TIP" text="SAVET"/>
+ <l:gentext key="Tip" text="Savet"/>
+ <l:gentext key="tip" text="Savet"/>
+ <l:gentext key="WARNING" text="UPOZORENJE"/>
+ <l:gentext key="Warning" text="Upozorenje"/>
+ <l:gentext key="warning" text="Upozorenje"/>
+ <l:gentext key="and" text="i"/>
+ <l:gentext key="by" text="od"/>
+ <l:gentext key="Edited" text="Ure&#273;eno"/>
+ <l:gentext key="edited" text="Ure&#273;eno"/>
+ <l:gentext key="Editedby" text="Ure&#273;eno od"/>
+ <l:gentext key="editedby" text="Ure&#273;eno od"/>
+ <l:gentext key="in" text="u"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="nepostoje&#263;i element"/>
+ <l:gentext key="notes" text="Notes"/>
+ <l:gentext key="Notes" text="Notes"/>
+ <l:gentext key="Pgs" text="Str."/>
+ <l:gentext key="pgs" text="Str."/>
+ <l:gentext key="Revisedby" text="Revised by: "/>
+ <l:gentext key="revisedby" text="Revised by: "/>
+ <l:gentext key="TableNotes" text="Notes"/>
+ <l:gentext key="tablenotes" text="Notes"/>
+ <l:gentext key="TableofContents" text="Sadr&#382;aj"/>
+ <l:gentext key="tableofcontents" text="Sadr&#382;aj"/>
+ <l:gentext key="unexpectedelementname" text="Neo&#269;ekivano ime elementa"/>
+ <l:gentext key="unsupported" text="nepodr&#382;ano"/>
+ <l:gentext key="xrefto" text="xref na"/>
+ <l:gentext key="listofequations" text="Spisak jedna&#269;ina"/>
+ <l:gentext key="ListofEquations" text="Spisak jedna&#269;ina"/>
+ <l:gentext key="ListofExamples" text="Spisak primera"/>
+ <l:gentext key="listofexamples" text="Spisak primera"/>
+ <l:gentext key="ListofFigures" text="Spisak slika"/>
+ <l:gentext key="listoffigures" text="Spisak slika"/>
+ <l:gentext key="listoftables" text="Spisak tabela"/>
+ <l:gentext key="ListofTables" text="Spisak tabela"/>
+ <l:gentext key="ListofUnknown" text="Spisak nepoznanica"/>
+ <l:gentext key="listofunknown" text="Spisak nepoznanica"/>
+ <l:gentext key="nav-home" text="Ku&#263;i"/>
+ <l:gentext key="nav-next" text="Napred"/>
+ <l:gentext key="nav-next-sibling" text="Brzo napred"/>
+ <l:gentext key="nav-prev" text="Nazad"/>
+ <l:gentext key="nav-prev-sibling" text="Brzo nazad"/>
+ <l:gentext key="nav-up" text="Gore"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Dodatak %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Poglavlje %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Jedna&#269;ina %n. %t"/>
+ <l:template name="example" text="Primer %n. %t"/>
+ <l:template name="figure" text="Slika %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Deo %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Postupak&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Dodatak %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Poglavlje %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="O:&#160;%n"/>
+ <l:template name="appendix" text="Dodatak %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Poglavlje %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Jedna&#269;ina&#160;%n"/>
+ <l:template name="example" text="Primer %n. %t"/>
+ <l:template name="figure" text="Slika %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Deo %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Postupak&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="P:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="P:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabela %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Odeljak %n"/>
+ <l:template name="sect2" text="Odeljak %n"/>
+ <l:template name="sect3" text="Odeljak %n"/>
+ <l:template name="sect4" text="Odeljak %n"/>
+ <l:template name="sect5" text="Odeljak %n"/>
+ <l:template name="section" text="Odeljak %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" i "/>
+ <l:template name="seplast" text=", i "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Vidi "/>
+ <l:template name="seealso" text="Vidi tako&#273;e "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="MsgAud: "/>
+ <l:template name="MsgLevel" text="Nivo: "/>
+ <l:template name="MsgOrig" text="Izvor: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sv.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sv.xml
new file mode 100644
index 0000000..93a03c5
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/sv.xml
@@ -0,0 +1,451 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sv" english-language-name="Swedish">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Sammanfattning"/>
+ <l:gentext key="abstract" text="Sammanfattning"/>
+ <l:gentext key="Answer" text="A:"/>
+ <l:gentext key="answer" text="A:"/>
+ <l:gentext key="Appendix" text="Appendix"/>
+ <l:gentext key="appendix" text="appendix"/>
+ <l:gentext key="Article" text="Artikel"/>
+ <l:gentext key="article" text="Artikel"/>
+ <l:gentext key="Bibliography" text="Bibliografi"/>
+ <l:gentext key="bibliography" text="Bibliografi"/>
+ <l:gentext key="Book" text="Bok"/>
+ <l:gentext key="book" text="Bok"/>
+ <l:gentext key="CAUTION" text="OBSERVERA"/>
+ <l:gentext key="Caution" text="Observera"/>
+ <l:gentext key="caution" text="Observera"/>
+ <l:gentext key="Chapter" text="Kapitel"/>
+ <l:gentext key="chapter" text="kapitel"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="Copyright"/>
+ <l:gentext key="copyright" text="Copyright"/>
+ <l:gentext key="Dedication" text="Dedikation"/>
+ <l:gentext key="dedication" text="Dedikation"/>
+ <l:gentext key="Edition" text="Utg&#229;va"/>
+ <l:gentext key="edition" text="Utg&#229;va"/>
+ <l:gentext key="Equation" text="Ekvation"/>
+ <l:gentext key="equation" text="Ekvation"/>
+ <l:gentext key="Example" text="Exempel"/>
+ <l:gentext key="example" text="Exempel"/>
+ <l:gentext key="Figure" text="Figur"/>
+ <l:gentext key="figure" text="Figur"/>
+ <l:gentext key="Glossary" text="Gloslista"/>
+ <l:gentext key="glossary" text="Gloslista"/>
+ <l:gentext key="GlossSee" text="Se"/>
+ <l:gentext key="glosssee" text="Se"/>
+ <l:gentext key="GlossSeeAlso" text="Se &#196;ven"/>
+ <l:gentext key="glossseealso" text="Se &#196;ven"/>
+ <l:gentext key="IMPORTANT" text="VIKTIGT"/>
+ <l:gentext key="Important" text="Viktigt"/>
+ <l:gentext key="important" text="Viktigt"/>
+ <l:gentext key="Index" text="Index"/>
+ <l:gentext key="index" text="Index"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Legal Notice"/>
+ <l:gentext key="legalnotice" text="Legal Notice"/>
+ <l:gentext key="MsgAud" text="M&#229;lgrupp"/>
+ <l:gentext key="msgaud" text="M&#229;lgrupp"/>
+ <l:gentext key="MsgLevel" text="Niv&#229;"/>
+ <l:gentext key="msglevel" text="Niv&#229;"/>
+ <l:gentext key="MsgOrig" text="Ursprung"/>
+ <l:gentext key="msgorig" text="Ursprung"/>
+ <l:gentext key="NOTE" text="NOT"/>
+ <l:gentext key="Note" text="Not"/>
+ <l:gentext key="note" text="Not"/>
+ <l:gentext key="Part" text="Del"/>
+ <l:gentext key="part" text="Del"/>
+ <l:gentext key="Preface" text="F&#246;retal"/>
+ <l:gentext key="preface" text="F&#246;retal"/>
+ <l:gentext key="Procedure" text="Procedur"/>
+ <l:gentext key="procedure" text="Procedur"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="Publicerad"/>
+ <l:gentext key="published" text="Publicerad"/>
+ <l:gentext key="Question" text="Fr&#229;ga:"/>
+ <l:gentext key="question" text="Fr&#229;ga:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Referens"/>
+ <l:gentext key="reference" text="Referens"/>
+ <l:gentext key="RefName" text="Namn"/>
+ <l:gentext key="refname" text="Namn"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Revisions Historik;"/>
+ <l:gentext key="revhistory" text="Revisions Historik;"/>
+ <l:gentext key="Revision" text="Revision"/>
+ <l:gentext key="revision" text="Revision"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="Avsnitt"/>
+ <l:gentext key="section" text="avsnitt"/>
+ <l:gentext key="See" text="Se"/>
+ <l:gentext key="see" text="Se"/>
+ <l:gentext key="SeeAlso" text="Se &#196;ven"/>
+ <l:gentext key="seealso" text="Se &#196;ven"/>
+ <l:gentext key="Seealso" text="Se &#228;ven"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="SetIndex" text="Set Index"/>
+ <l:gentext key="setindex" text="Set Index"/>
+ <l:gentext key="Sidebar" text="Sidebar"/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="Step" text="Steg"/>
+ <l:gentext key="step" text="steg"/>
+ <l:gentext key="Table" text="Tabell"/>
+ <l:gentext key="table" text="Tabell"/>
+ <l:gentext key="TIP" text="TIPS"/>
+ <l:gentext key="Tip" text="Tips"/>
+ <l:gentext key="tip" text="Tips"/>
+ <l:gentext key="WARNING" text="VARNING"/>
+ <l:gentext key="Warning" text="Varning"/>
+ <l:gentext key="warning" text="Varning"/>
+ <l:gentext key="and" text="och"/>
+ <l:gentext key="by" text="av"/>
+ <l:gentext key="called" text="kallas"/>
+ <l:gentext key="edited" text="Redigerad"/>
+ <l:gentext key="Edited" text="Redigerad"/>
+ <l:gentext key="Editedby" text="Redigerad av"/>
+ <l:gentext key="editedby" text="Redigerad av"/>
+ <l:gentext key="in" text="i"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="non-existant element"/>
+ <l:gentext key="Notes" text="Noter"/>
+ <l:gentext key="notes" text="Noter"/>
+ <l:gentext key="Pgs" text="Sid."/>
+ <l:gentext key="pgs" text="Sid."/>
+ <l:gentext key="Revisedby" text="Reviderad av: "/>
+ <l:gentext key="revisedby" text="Reviderad av: "/>
+ <l:gentext key="TableNotes" text="Noter"/>
+ <l:gentext key="tablenotes" text="Noter"/>
+ <l:gentext key="TableofContents" text="Inneh&#229;llsf&#246;rteckning"/>
+ <l:gentext key="tableofcontents" text="Inneh&#229;llsf&#246;rteckning"/>
+ <l:gentext key="the" text=""/>
+ <l:gentext key="unexpectedelementname" text="Unexpected element name"/>
+ <l:gentext key="unsupported" text="unsupported"/>
+ <l:gentext key="xrefto" text="xref till"/>
+ <l:gentext key="listofequations" text="Ekvationsf&#246;rteckning"/>
+ <l:gentext key="ListofEquations" text="Ekvationsf&#246;rteckning"/>
+ <l:gentext key="ListofExamples" text="Exempelf&#246;rteckning"/>
+ <l:gentext key="listofexamples" text="Exempelf&#246;rteckning"/>
+ <l:gentext key="ListofFigures" text="Figurf&#246;rteckning"/>
+ <l:gentext key="listoffigures" text="Figurf&#246;rteckning"/>
+ <l:gentext key="listoftables" text="Tabellf&#246;rteckning"/>
+ <l:gentext key="ListofTables" text="Tabellf&#246;rteckning"/>
+ <l:gentext key="ListofUnknown" text="F&#246;rteckning av ok&#228;nda"/>
+ <l:gentext key="listofunknown" text="F&#246;rteckning av ok&#228;nda"/>
+ <l:gentext key="nav-home" text="Hem"/>
+ <l:gentext key="nav-next" text="N&#228;sta"/>
+ <l:gentext key="nav-next-sibling" text="Snabbt bak&#229;t"/>
+ <l:gentext key="nav-prev" text="F&#246;reg&#229;ende"/>
+ <l:gentext key="nav-prev-sibling" text="Snabbt fram&#229;t"/>
+ <l:gentext key="nav-up" text="Upp"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Appendix %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ekvation %n. %t"/>
+ <l:template name="example" text="Exempel %n. %t"/>
+ <l:template name="figure" text="Figur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Procedur&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tabell %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Appendix %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="A:&#160;%n"/>
+ <l:template name="appendix" text="Appendix %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Kapitel %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ekvation&#160;%n"/>
+ <l:template name="example" text="Exempel %n. %t"/>
+ <l:template name="figure" text="Figur %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Del %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Procedur&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Fr&#229;ga:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Fr&#229;ga:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tabell %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Avsnitt %n"/>
+ <l:template name="sect2" text="Avsnitt %n"/>
+ <l:template name="sect3" text="Avsnitt %n"/>
+ <l:template name="sect4" text="Avsnitt %n"/>
+ <l:template name="sect5" text="Avsnitt %n"/>
+ <l:template name="section" text="Avsnitt %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" och "/>
+ <l:template name="seplast" text=", och "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Se "/>
+ <l:template name="seealso" text="Se &#196;ven "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="M&#229;lgrupp: "/>
+ <l:template name="MsgLevel" text="Niv&#229;: "/>
+ <l:template name="MsgOrig" text="Ursprung: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/th.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/th.xml
new file mode 100644
index 0000000..8a78174
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/th.xml
@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="th" english-language-name="Thai">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#3610;&#3607;&#3588;&#3633;&#3604;&#3618;&#3656;&#3629;"/>
+ <l:gentext key="abstract" text="&#3610;&#3607;&#3588;&#3633;&#3604;&#3618;&#3656;&#3629;"/>
+ <l:gentext key="Answer" text="&#3605;&#3629;&#3610;:"/>
+ <l:gentext key="answer" text="&#3605;&#3629;&#3610;:"/>
+ <l:gentext key="Appendix" text="&#3616;&#3634;&#3588;&#3612;&#3609;&#3623;&#3585;"/>
+ <l:gentext key="appendix" text="&#3616;&#3634;&#3588;&#3612;&#3609;&#3623;&#3585;"/>
+ <l:gentext key="Article" text="&#3610;&#3607;&#3588;&#3623;&#3634;&#3617;"/>
+ <l:gentext key="article" text="&#3610;&#3607;&#3588;&#3623;&#3634;&#3617;"/>
+ <l:gentext key="Bibliography" text="&#3610;&#3619;&#3619;&#3603;&#3634;&#3609;&#3640;&#3585;&#3619;&#3617;"/>
+ <l:gentext key="bibliography" text="&#3610;&#3619;&#3619;&#3603;&#3634;&#3609;&#3640;&#3585;&#3619;&#3617;"/>
+ <l:gentext key="Book" text="&#3627;&#3609;&#3633;&#3591;&#3626;&#3639;&#3629;"/>
+ <l:gentext key="book" text="&#3627;&#3609;&#3633;&#3591;&#3626;&#3639;&#3629;"/>
+ <l:gentext key="CAUTION" text="&#3588;&#3635;&#3648;&#3605;&#3639;&#3629;&#3609;"/>
+ <l:gentext key="Caution" text="&#3588;&#3635;&#3648;&#3605;&#3639;&#3629;&#3609;"/>
+ <l:gentext key="caution" text="&#3588;&#3635;&#3648;&#3605;&#3639;&#3629;&#3609;"/>
+ <l:gentext key="Chapter" text="&#3610;&#3607;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="chapter" text="&#3610;&#3607;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="Colophon" text="&#3648;&#3610;&#3639;&#3657;&#3629;&#3591;&#3627;&#3621;&#3633;&#3591;"/>
+ <l:gentext key="colophon" text="&#3648;&#3610;&#3639;&#3657;&#3629;&#3591;&#3627;&#3621;&#3633;&#3591;"/>
+ <l:gentext key="Copyright" text="&#3626;&#3591;&#3623;&#3609;&#3626;&#3636;&#3586;&#3626;&#3636;&#3607;&#3608;&#3636;&#3660;"/>
+ <l:gentext key="copyright" text="&#3626;&#3591;&#3623;&#3609;&#3626;&#3636;&#3586;&#3626;&#3636;&#3607;&#3608;&#3636;&#3660;"/>
+ <l:gentext key="Dedication" text="&#3588;&#3635;&#3629;&#3640;&#3607;&#3636;&#3624;"/>
+ <l:gentext key="dedication" text="&#3588;&#3635;&#3629;&#3640;&#3607;&#3636;&#3624;"/>
+ <l:gentext key="Edition" text="&#3593;&#3610;&#3633;&#3610;"/>
+ <l:gentext key="edition" text="&#3593;&#3610;&#3633;&#3610;"/>
+ <l:gentext key="Equation" text="&#3626;&#3617;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="equation" text="&#3626;&#3617;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="Example" text="&#3605;&#3633;&#3623;&#3629;&#3618;&#3656;&#3634;&#3591;"/>
+ <l:gentext key="example" text="&#3605;&#3633;&#3623;&#3629;&#3618;&#3656;&#3634;&#3591;"/>
+ <l:gentext key="Figure" text="&#3619;&#3641;&#3611;"/>
+ <l:gentext key="figure" text="&#3619;&#3641;&#3611;"/>
+ <l:gentext key="Glossary" text="&#3629;&#3616;&#3636;&#3607;&#3634;&#3609;&#3624;&#3633;&#3614;&#3607;&#3660;"/>
+ <l:gentext key="glossary" text="&#3629;&#3616;&#3636;&#3607;&#3634;&#3609;&#3624;&#3633;&#3614;&#3607;&#3660;"/>
+ <l:gentext key="GlossSee" text="&#3604;&#3641;"/>
+ <l:gentext key="glosssee" text="&#3604;&#3641;"/>
+ <l:gentext key="GlossSeeAlso" text="&#3604;&#3641;&#3648;&#3614;&#3636;&#3656;&#3617;&#3648;&#3605;&#3636;&#3617;"/>
+ <l:gentext key="glossseealso" text="&#3604;&#3641;&#3648;&#3614;&#3636;&#3656;&#3617;&#3648;&#3605;&#3636;&#3617;"/>
+ <l:gentext key="IMPORTANT" text="&#3586;&#3657;&#3629;&#3588;&#3623;&#3619;&#3592;&#3635;"/>
+ <l:gentext key="important" text="&#3586;&#3657;&#3629;&#3588;&#3623;&#3619;&#3592;&#3635;"/>
+ <l:gentext key="Important" text="&#3586;&#3657;&#3629;&#3588;&#3623;&#3619;&#3592;&#3635;"/>
+ <l:gentext key="Index" text="&#3604;&#3619;&#3619;&#3594;&#3609;&#3637;"/>
+ <l:gentext key="index" text="&#3604;&#3619;&#3619;&#3594;&#3609;&#3637;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="&#3586;&#3657;&#3629;&#3612;&#3641;&#3585;&#3614;&#3633;&#3609;&#3605;&#3634;&#3617;&#3585;&#3598;&#3627;&#3617;&#3634;&#3618;"/>
+ <l:gentext key="legalnotice" text="&#3586;&#3657;&#3629;&#3612;&#3641;&#3585;&#3614;&#3633;&#3609;&#3605;&#3634;&#3617;&#3585;&#3598;&#3627;&#3617;&#3634;&#3618;"/>
+ <l:gentext key="MsgAud" text="&#3612;&#3641;&#3657;&#3629;&#3656;&#3634;&#3609;"/>
+ <l:gentext key="msgaud" text="&#3612;&#3641;&#3657;&#3629;&#3656;&#3634;&#3609;"/>
+ <l:gentext key="MsgLevel" text="&#3619;&#3632;&#3604;&#3633;&#3610;"/>
+ <l:gentext key="msglevel" text="&#3619;&#3632;&#3604;&#3633;&#3610;"/>
+ <l:gentext key="MsgOrig" text="&#3607;&#3637;&#3656;&#3617;&#3634;"/>
+ <l:gentext key="msgorig" text="&#3607;&#3637;&#3656;&#3617;&#3634;"/>
+ <l:gentext key="NOTE" text="&#3627;&#3617;&#3634;&#3618;&#3648;&#3627;&#3605;&#3640;"/>
+ <l:gentext key="Note" text="&#3627;&#3617;&#3634;&#3618;&#3648;&#3627;&#3605;&#3640;"/>
+ <l:gentext key="note" text="&#3627;&#3617;&#3634;&#3618;&#3648;&#3627;&#3605;&#3640;"/>
+ <l:gentext key="Part" text="&#3616;&#3634;&#3588;"/>
+ <l:gentext key="part" text="&#3616;&#3634;&#3588;"/>
+ <l:gentext key="Preface" text="&#3588;&#3635;&#3609;&#3635;"/>
+ <l:gentext key="preface" text="&#3588;&#3635;&#3609;&#3635;"/>
+ <l:gentext key="Procedure" text="&#3619;&#3632;&#3648;&#3610;&#3637;&#3618;&#3610;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="procedure" text="&#3619;&#3632;&#3648;&#3610;&#3637;&#3618;&#3610;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="ProductionSet" text="&#3612;&#3621;&#3636;&#3605;"/>
+ <l:gentext key="Published" text="&#3605;&#3637;&#3614;&#3636;&#3617;&#3614;&#3660;"/>
+ <l:gentext key="published" text="&#3605;&#3637;&#3614;&#3636;&#3617;&#3614;&#3660;"/>
+ <l:gentext key="Question" text="&#3606;&#3634;&#3617;:"/>
+ <l:gentext key="question" text="&#3606;&#3634;&#3617;:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#3627;&#3609;&#3633;&#3591;&#3626;&#3639;&#3629;&#3629;&#3657;&#3634;&#3591;&#3629;&#3636;&#3591;"/>
+ <l:gentext key="reference" text="&#3627;&#3609;&#3633;&#3591;&#3626;&#3639;&#3629;&#3629;&#3657;&#3634;&#3591;&#3629;&#3636;&#3591;"/>
+ <l:gentext key="RefName" text="&#3594;&#3639;&#3656;&#3629;"/>
+ <l:gentext key="refname" text="&#3594;&#3639;&#3656;&#3629;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#3626;&#3634;&#3619;&#3632;&#3626;&#3635;&#3588;&#3633;&#3597;"/>
+ <l:gentext key="refsynopsisdiv" text="&#3626;&#3634;&#3619;&#3632;&#3626;&#3635;&#3588;&#3633;&#3597;"/>
+ <l:gentext key="RevHistory" text="&#3610;&#3633;&#3609;&#3607;&#3638;&#3585;&#3619;&#3640;&#3656;&#3609;"/>
+ <l:gentext key="revhistory" text="&#3610;&#3633;&#3609;&#3607;&#3638;&#3585;&#3619;&#3640;&#3656;&#3609;"/>
+ <l:gentext key="revision" text="&#3619;&#3640;&#3656;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="Revision" text="&#3619;&#3640;&#3656;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="sect1" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="sect2" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="sect3" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="sect4" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="sect5" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="section" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="Section" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656;"/>
+ <l:gentext key="See" text="&#3604;&#3641;"/>
+ <l:gentext key="see" text="&#3604;&#3641;"/>
+ <l:gentext key="SeeAlso" text="&#3604;&#3641;&#3648;&#3614;&#3636;&#3656;&#3617;&#3648;&#3605;&#3636;&#3617;"/>
+ <l:gentext key="seealso" text="&#3604;&#3641;&#3648;&#3614;&#3636;&#3656;&#3617;&#3648;&#3605;&#3636;&#3617;"/>
+ <l:gentext key="Seealso" text="&#3604;&#3641;&#3648;&#3614;&#3636;&#3656;&#3617;&#3648;&#3605;&#3636;&#3617;"/>
+ <l:gentext key="set" text="&#3594;&#3640;&#3604;"/>
+ <l:gentext key="Set" text="&#3594;&#3640;&#3604;"/>
+ <l:gentext key="setindex" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3594;&#3640;&#3604;"/>
+ <l:gentext key="SetIndex" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3594;&#3640;&#3604;"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="step" text="&#3621;&#3635;&#3604;&#3633;&#3610;"/>
+ <l:gentext key="Step" text="&#3621;&#3635;&#3604;&#3633;&#3610;"/>
+ <l:gentext key="Table" text="&#3605;&#3634;&#3619;&#3634;&#3591;"/>
+ <l:gentext key="table" text="&#3605;&#3634;&#3619;&#3634;&#3591;"/>
+ <l:gentext key="tip" text="&#3588;&#3635;&#3649;&#3609;&#3632;&#3609;&#3635;"/>
+ <l:gentext key="TIP" text="&#3588;&#3635;&#3649;&#3609;&#3632;&#3609;&#3635;"/>
+ <l:gentext key="Tip" text="&#3588;&#3635;&#3649;&#3609;&#3632;&#3609;&#3635;"/>
+ <l:gentext key="Warning" text="&#3650;&#3611;&#3619;&#3604;&#3619;&#3632;&#3623;&#3633;&#3591;"/>
+ <l:gentext key="warning" text="&#3650;&#3611;&#3619;&#3604;&#3619;&#3632;&#3623;&#3633;&#3591;"/>
+ <l:gentext key="WARNING" text="&#3650;&#3611;&#3619;&#3604;&#3619;&#3632;&#3623;&#3633;&#3591;"/>
+ <l:gentext key="and" text="&#3649;&#3621;&#3632;"/>
+ <l:gentext key="by" text="&#3650;&#3604;&#3618;"/>
+ <l:gentext key="Edited" text="&#3648;&#3619;&#3637;&#3618;&#3610;&#3648;&#3619;&#3637;&#3618;&#3591;"/>
+ <l:gentext key="edited" text="&#3648;&#3619;&#3637;&#3618;&#3610;&#3648;&#3619;&#3637;&#3618;&#3591;"/>
+ <l:gentext key="Editedby" text="&#3648;&#3619;&#3637;&#3618;&#3610;&#3648;&#3619;&#3637;&#3618;&#3591;&#3650;&#3604;&#3610;"/>
+ <l:gentext key="editedby" text="&#3648;&#3619;&#3637;&#3618;&#3610;&#3648;&#3619;&#3637;&#3618;&#3591;&#3650;&#3604;&#3610;"/>
+ <l:gentext key="in" text="&#3651;&#3609;"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="&#3652;&#3617;&#3656;&#3614;&#3610;&#3626;&#3656;&#3623;&#3609;&#3607;&#3637;&#3656;&#3605;&#3657;&#3629;&#3591;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="notes" text="&#3627;&#3617;&#3634;&#3618;&#3648;&#3627;&#3605;&#3640;"/>
+ <l:gentext key="Notes" text="&#3627;&#3617;&#3634;&#3618;&#3648;&#3627;&#3605;&#3640;"/>
+ <l:gentext key="Pgs" text="&#3627;&#3609;&#3657;&#3634;"/>
+ <l:gentext key="pgs" text="&#3627;&#3609;&#3657;&#3634;"/>
+ <l:gentext key="Revisedby" text="&#3649;&#3585;&#3657;&#3652;&#3586;&#3611;&#3619;&#3633;&#3610;&#3611;&#3619;&#3640;&#3591;&#3650;&#3604;&#3618;: "/>
+ <l:gentext key="revisedby" text="&#3649;&#3585;&#3657;&#3652;&#3586;&#3611;&#3619;&#3633;&#3610;&#3611;&#3619;&#3640;&#3591;&#3650;&#3604;&#3618;: "/>
+ <l:gentext key="TableNotes" text="&#3627;&#3617;&#3634;&#3618;&#3648;&#3627;&#3605;&#3640;"/>
+ <l:gentext key="tablenotes" text="&#3627;&#3617;&#3634;&#3618;&#3648;&#3627;&#3605;&#3640;"/>
+ <l:gentext key="TableofContents" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;"/>
+ <l:gentext key="tableofcontents" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;"/>
+ <l:gentext key="unexpectedelementname" text="&#3614;&#3610;&#3626;&#3656;&#3623;&#3609;&#3607;&#3637;&#3656;&#3652;&#3617;&#3656;&#3605;&#3657;&#3629;&#3591;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="unsupported" text="&#3652;&#3617;&#3656;&#3626;&#3609;&#3633;&#3610;&#3626;&#3609;&#3640;&#3609;"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3626;&#3617;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="ListofEquations" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3626;&#3617;&#3585;&#3634;&#3619;"/>
+ <l:gentext key="ListofExamples" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3605;&#3633;&#3623;&#3629;&#3618;&#3656;&#3634;&#3591;"/>
+ <l:gentext key="listofexamples" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3605;&#3633;&#3623;&#3629;&#3618;&#3656;&#3634;&#3591;"/>
+ <l:gentext key="ListofFigures" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3619;&#3641;&#3611;"/>
+ <l:gentext key="listoffigures" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3619;&#3641;&#3611;"/>
+ <l:gentext key="listoftables" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3605;&#3634;&#3619;&#3634;&#3591;"/>
+ <l:gentext key="ListofTables" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3605;&#3634;&#3619;&#3634;&#3591;"/>
+ <l:gentext key="ListofUnknown" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3629;&#3639;&#3656;&#3609; &#3654;"/>
+ <l:gentext key="listofunknown" text="&#3626;&#3634;&#3619;&#3610;&#3633;&#3597;&#3629;&#3639;&#3656;&#3609; &#3654;"/>
+ <l:gentext key="nav-home" text="&#3627;&#3609;&#3657;&#3634;&#3649;&#3619;&#3585;"/>
+ <l:gentext key="nav-next" text="&#3605;&#3656;&#3629;&#3652;&#3611;"/>
+ <l:gentext key="nav-next-sibling" text="&#3605;&#3656;&#3629;&#3652;&#3611;"/>
+ <l:gentext key="nav-prev" text="&#3585;&#3656;&#3629;&#3609;&#3627;&#3609;&#3657;&#3634;"/>
+ <l:gentext key="nav-prev-sibling" text="&#3585;&#3656;&#3629;&#3609;&#3627;&#3609;&#3657;&#3634;"/>
+ <l:gentext key="nav-up" text="&#3585;&#3621;&#3633;&#3610;"/>
+ <l:gentext key="sectioncalled" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634;"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="&#3626;&#3633;&#3597;&#3621;&#3633;&#3585;&#3625;&#3603;&#3660;"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#3616;&#3634;&#3588;&#3612;&#3609;&#3623;&#3585; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#3610;&#3607;&#3607;&#3637;&#3656; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#3626;&#3617;&#3585;&#3634;&#3619; %n. %t"/>
+ <l:template name="example" text="&#3605;&#3633;&#3623;&#3629;&#3618;&#3656;&#3634;&#3591; %n. %t"/>
+ <l:template name="figure" text="&#3619;&#3641;&#3611; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#3616;&#3634;&#3588; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#3619;&#3632;&#3648;&#3610;&#3637;&#3618;&#3610;&#3585;&#3634;&#3619; %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="&#3612;&#3621;&#3636;&#3605; %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#3605;&#3634;&#3619;&#3634;&#3591; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#3616;&#3634;&#3588;&#3612;&#3609;&#3623;&#3585; %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="&#3610;&#3607;&#3607;&#3637;&#3656; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#3605;&#3629;&#3610;: %n"/>
+ <l:template name="answer" text="&#3605;&#3629;&#3610;:&#160;%n"/>
+ <l:template name="appendix" text="&#3616;&#3634;&#3588;&#3612;&#3609;&#3623;&#3585; %n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#3610;&#3607;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#3626;&#3617;&#3585;&#3634;&#3619; %n"/>
+ <l:template name="equation" text="&#3626;&#3617;&#3585;&#3634;&#3619;&#160;%n"/>
+ <l:template name="example" text="&#3605;&#3633;&#3623;&#3629;&#3618;&#3656;&#3634;&#3591; %n"/>
+ <l:template name="figure" text="&#3619;&#3641;&#3611; %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#3616;&#3634;&#3588; %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#3619;&#3632;&#3648;&#3610;&#3637;&#3618;&#3610;&#3585;&#3634;&#3619; %n"/>
+ <l:template name="procedure" text="&#3619;&#3632;&#3648;&#3610;&#3637;&#3618;&#3610;&#3585;&#3634;&#3619;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#3606;&#3634;&#3617;: %n"/>
+ <l:template name="qandaentry" text="&#3606;&#3634;&#3617;:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#3606;&#3634;&#3617;: %n"/>
+ <l:template name="question" text="&#3606;&#3634;&#3617;:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#3605;&#3634;&#3619;&#3634;&#3591; %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="section" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="refsection" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="sect2" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="sect3" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="sect4" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="sect5" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="section" text="&#3605;&#3629;&#3609;&#3607;&#3637;&#3656; %n"/>
+ <l:template name="simplesect" text="&#3605;&#3629;&#3609;&#3609;&#3637;&#3657;&#3648;&#3657;&#3619;&#3637;&#3618;&#3585;&#3623;&#3656;&#3634; &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#3649;&#3621;&#3632; "/>
+ <l:template name="seplast" text=", &#3649;&#3621;&#3632; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#3604;&#3641; "/>
+ <l:template name="seealso" text="&#3604;&#3641;&#3648;&#3614;&#3636;&#3656;&#3617;&#3648;&#3605;&#3636;&#3617; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#3612;&#3641;&#3657;&#3629;&#3656;&#3634;&#3609;: "/>
+ <l:template name="MsgLevel" text="&#3619;&#3632;&#3604;&#3633;&#3610;: "/>
+ <l:template name="MsgOrig" text="&#3607;&#3637;&#3656;&#3617;&#3634;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/tr.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/tr.xml
new file mode 100644
index 0000000..5fb397f
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/tr.xml
@@ -0,0 +1,458 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="tr" english-language-name="Turkish">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#214;zet"/>
+ <l:gentext key="abstract" text="&#214;zet"/>
+ <l:gentext key="Answer" text="Cevap:"/>
+ <l:gentext key="answer" text="Cevap:"/>
+ <l:gentext key="Appendix" text="Ek"/>
+ <l:gentext key="appendix" text="ek"/>
+ <l:gentext key="Article" text="Makale"/>
+ <l:gentext key="article" text="Makale"/>
+ <l:gentext key="Bibliography" text="Kaynak&#231;a"/>
+ <l:gentext key="bibliography" text="Kaynak&#231;a"/>
+ <l:gentext key="Book" text="Kitap"/>
+ <l:gentext key="book" text="Kitap"/>
+ <l:gentext key="CAUTION" text="D&#304;KKAT"/>
+ <l:gentext key="Caution" text="Dikkat"/>
+ <l:gentext key="caution" text="Dikkat"/>
+ <l:gentext key="Chapter" text="B&#246;l&#252;m"/>
+ <l:gentext key="chapter" text="b&#246;l&#252;m"/>
+ <l:gentext key="Colophon" text="Kitap hakk&#305;nda"/>
+ <l:gentext key="colophon" text="Kitap hakk&#305;nda"/>
+ <l:gentext key="Copyright" text="Telif Hakk&#305;"/>
+ <l:gentext key="copyright" text="Telif Hakk&#305;"/>
+ <l:gentext key="Dedication" text="&#304;thaf"/>
+ <l:gentext key="dedication" text="&#304;thaf"/>
+ <l:gentext key="Edition" text="Bask&#305;"/>
+ <l:gentext key="edition" text="Bask&#305;"/>
+ <l:gentext key="Equation" text="Denklem"/>
+ <l:gentext key="equation" text="Denklem"/>
+ <l:gentext key="Example" text="&#214;rnek"/>
+ <l:gentext key="example" text="&#214;rnek"/>
+ <l:gentext key="Figure" text="&#350;ekil"/>
+ <l:gentext key="figure" text="&#350;ekil"/>
+ <l:gentext key="Glossary" text="S&#246;zl&#252;k"/>
+ <l:gentext key="glossary" text="S&#246;zl&#252;k"/>
+ <l:gentext key="GlossSee" text="Bkz."/>
+ <l:gentext key="glosssee" text="Bkz."/>
+ <l:gentext key="GlossSeeAlso" text="Bkz."/>
+ <l:gentext key="glossseealso" text="Bkz."/>
+ <l:gentext key="IMPORTANT" text="&#214;NEML&#304;"/>
+ <l:gentext key="important" text="&#214;nemli"/>
+ <l:gentext key="Important" text="&#214;nemli"/>
+ <l:gentext key="Index" text="Dizin"/>
+ <l:gentext key="index" text="Dizin"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Yasal Uyar&#305;"/>
+ <l:gentext key="legalnotice" text="Yasal Uyar&#305;"/>
+ <l:gentext key="MsgAud" text="Hedef Okuyucu"/>
+ <l:gentext key="msgaud" text="Hedef Okuyucu"/>
+ <l:gentext key="MsgLevel" text="Level"/>
+ <l:gentext key="msglevel" text="D&#252;zey"/>
+ <l:gentext key="MsgOrig" text="D&#252;zey"/>
+ <l:gentext key="msgorig" text="Kaynak"/>
+ <l:gentext key="NOTE" text="NOT"/>
+ <l:gentext key="Note" text="Not"/>
+ <l:gentext key="note" text="Not"/>
+ <l:gentext key="Part" text="K&#305;s&#305;m"/>
+ <l:gentext key="part" text="K&#305;s&#305;m"/>
+ <l:gentext key="Preface" text="&#214;ns&#246;z"/>
+ <l:gentext key="preface" text="&#214;ns&#246;z"/>
+ <l:gentext key="Procedure" text="Y&#246;nerge"/>
+ <l:gentext key="procedure" text="Y&#246;nerge"/>
+ <l:gentext key="ProductionSet" text="Prod&#252;ksiyon"/>
+ <l:gentext key="Published" text="Yay&#305;mlanma"/>
+ <l:gentext key="published" text="Yay&#305;mlanma"/>
+ <l:gentext key="Question" text="Soru:"/>
+ <l:gentext key="question" text="Soru:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Referans"/>
+ <l:gentext key="reference" text="Referans"/>
+ <l:gentext key="RefName" text="Referans Ad&#305;"/>
+ <l:gentext key="refname" text="Referans Ad&#305;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+ <l:gentext key="refsynopsisdiv" text="Synopsis"/>
+ <l:gentext key="RevHistory" text="Bask&#305; Tarih&#231;esi"/>
+ <l:gentext key="revhistory" text="Bask&#305; Tarih&#231;esi"/>
+ <l:gentext key="revision" text="Bask&#305;"/>
+ <l:gentext key="Revision" text="Bask&#305;"/>
+ <l:gentext key="sect1" text="K&#305;s&#305;m"/>
+ <l:gentext key="sect2" text="K&#305;s&#305;m"/>
+ <l:gentext key="sect3" text="K&#305;s&#305;m"/>
+ <l:gentext key="sect4" text="K&#305;s&#305;m"/>
+ <l:gentext key="sect5" text="K&#305;s&#305;m"/>
+ <l:gentext key="section" text="K&#305;s&#305;m"/>
+ <l:gentext key="Section" text="K&#305;s&#305;m"/>
+ <l:gentext key="see" text="Bkz."/>
+ <l:gentext key="seealso" text="Bkz."/>
+ <l:gentext key="set" text="Tak&#305;m"/>
+ <l:gentext key="Set" text="Tak&#305;m"/>
+ <l:gentext key="setindex" text="Tak&#305;m Dizini"/>
+ <l:gentext key="SetIndex" text="Tak&#305;m Dizini"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text=""/>
+ <l:gentext key="step" text="ad&#305;m"/>
+ <l:gentext key="Step" text="Ad&#305;m"/>
+ <l:gentext key="Table" text="Tablo"/>
+ <l:gentext key="table" text="Tablo"/>
+ <l:gentext key="tip" text="&#304;pucu"/>
+ <l:gentext key="TIP" text="&#304;PUCU"/>
+ <l:gentext key="Tip" text="&#304;pucu"/>
+ <l:gentext key="Warning" text="Uyar&#305;"/>
+ <l:gentext key="warning" text="Uyar&#305;"/>
+ <l:gentext key="WARNING" text="UYARI"/>
+ <l:gentext key="and" text="ve"/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="Edited" text="Yay&#305;na haz&#305;rlayan"/>
+ <l:gentext key="edited" text="yay&#305;na haz&#305;rlayan"/>
+ <l:gentext key="Editedby" text="Yay&#305;na haz&#305;rlayan"/>
+ <l:gentext key="editedby" text="yay&#305;na haz&#305;rlayan"/>
+ <l:gentext key="in" text=""/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="varolmayan eleman"/>
+ <l:gentext key="notes" text="Notlar"/>
+ <l:gentext key="Notes" text="Notlar"/>
+ <l:gentext key="Pgs" text="Sayfa"/>
+ <l:gentext key="pgs" text="Sayfa"/>
+ <l:gentext key="Revisedby" text="D&#252;zeltmeler: "/>
+ <l:gentext key="revisedby" text="D&#252;zeltmeler: "/>
+ <l:gentext key="TableNotes" text="Notlar"/>
+ <l:gentext key="tablenotes" text="Notlar"/>
+ <l:gentext key="TableofContents" text="&#304;&#231;indekiler"/>
+ <l:gentext key="tableofcontents" text="&#304;&#231;indekiler"/>
+ <l:gentext key="unexpectedelementname" text="Beklenmeyen eleman ad&#305;"/>
+ <l:gentext key="unsupported" text="desteklenmiyor"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="Denklemler"/>
+ <l:gentext key="ListofEquations" text="Denklemler"/>
+ <l:gentext key="ListofExamples" text="&#214;rnekler"/>
+ <l:gentext key="listofexamples" text="&#214;rnekler"/>
+ <l:gentext key="ListofFigures" text="&#350;ekiller"/>
+ <l:gentext key="listoffigures" text="&#350;ekiller"/>
+ <l:gentext key="listoftables" text="Tablolar"/>
+ <l:gentext key="ListofTables" text="Tablolar"/>
+ <l:gentext key="ListofProcedures" text="Y&#246;nergeler"/>
+ <l:gentext key="listofprocedures" text="Y&#246;nergeler"/>
+ <l:gentext key="ListofUnknown" text="Bilinmeyenler"/>
+ <l:gentext key="listofunknown" text="Bilinmeyenler"/>
+ <l:gentext key="nav-home" text="Ba&#351;lang&#305;&#231;"/>
+ <l:gentext key="nav-next" text="Sonraki"/>
+ <l:gentext key="nav-next-sibling" text="Sonraki B&#246;l&#252;m"/>
+ <l:gentext key="nav-prev" text="&#214;nceki"/>
+ <l:gentext key="nav-prev-sibling" text="&#214;nceki B&#246;l&#252;m"/>
+ <l:gentext key="nav-up" text="Yukar&#305;"/>
+ <l:gentext key="nav-toc" text="&#304;&#231;indekiler"/>
+ <l:gentext key="sectioncalled" text=""/>
+ <l:gentext key="Draft" text="Taslak"/>
+ <l:gentext key="above" text="&#252;st&#252;nde"/>
+ <l:gentext key="below" text="alt&#305;nda"/>
+ <l:gentext key="index symbols" text="Semboller"/>
+ <l:gentext key="lowercase.alpha" text="abc&#231;defg&#287;h&#305;ijklmno&#246;prs&#351;tu&#252;vyz"/>
+ <l:gentext key="uppercase.alpha" text="ABC&#199;DEFG&#286;HI&#304;JKLMNO&#214;PRS&#350;TU&#220;VYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Ek %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="B&#246;l&#252;m %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Denklem %n. %t"/>
+ <l:template name="example" text="&#214;rnek %n. %t"/>
+ <l:template name="figure" text="&#350;ekil %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="glossentry" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="K&#305;s&#305;m %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Y&#246;nerge %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Prod&#252;ksiyon %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Tablo %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="article/appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Ek %n. %t"/>
+ <l:template name="article/appendix" text="%n.&#160;%t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="B&#246;l&#252;m %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="Cevap: %n"/>
+ <l:template name="appendix" text="Ek %n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="B&#246;l&#252;m %n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Denklem %n"/>
+ <l:template name="example" text="&#214;rnek %n"/>
+ <l:template name="figure" text="&#350;ekil %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="K&#305;s&#305;m %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Y&#246;nerge %n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="Soru: %n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="Soru: %n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Tablo %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsection" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text=" &#8220;%t&#8221;"/>
+ <l:template name="sect1" text=" &#8220;%t&#8221;"/>
+ <l:template name="sect2" text=" &#8220;%t&#8221;"/>
+ <l:template name="sect3" text=" &#8220;%t&#8221;"/>
+ <l:template name="sect4" text=" &#8220;%t&#8221;"/>
+ <l:template name="sect5" text=" &#8220;%t&#8221;"/>
+ <l:template name="section" text=" &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text=" &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="K&#305;s&#305;m %n"/>
+ <l:template name="refsection" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text=" &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text=" &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="K&#305;s&#305;m %n"/>
+ <l:template name="sect2" text="K&#305;s&#305;m %n"/>
+ <l:template name="sect3" text="K&#305;s&#305;m %n"/>
+ <l:template name="sect4" text="K&#305;s&#305;m %n"/>
+ <l:template name="sect5" text="K&#305;s&#305;m %n"/>
+ <l:template name="section" text="K&#305;s&#305;m %n"/>
+ <l:template name="simplesect" text=" &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" ve "/>
+ <l:template name="seplast" text=", ve "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Bkz. "/>
+ <l:template name="seealso" text="Bkz. "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Hedef Okuyucu: "/>
+ <l:template name="MsgLevel" text="Level: "/>
+ <l:template name="MsgOrig" text="D&#252;zey: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/uk.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/uk.xml
new file mode 100644
index 0000000..6acb421
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/uk.xml
@@ -0,0 +1,484 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="uk" english-language-name="Ukranian">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#1040;&#1085;&#1086;&#1090;&#1072;&#1094;&#1110;&#1103;"/>
+ <l:gentext key="abstract" text="&#1040;&#1085;&#1086;&#1090;&#1072;&#1094;&#1110;&#1103;"/>
+ <l:gentext key="Answer" text="&#1042;:"/>
+ <l:gentext key="answer" text="&#1074;:"/>
+ <l:gentext key="Appendix" text="&#1044;&#1086;&#1076;&#1072;&#1090;&#1086;&#1082;"/>
+ <l:gentext key="appendix" text="&#1076;&#1086;&#1076;&#1072;&#1090;&#1086;&#1082;"/>
+ <l:gentext key="Appendix.abr" text="&#1044;&#1086;&#1076;."/>
+ <l:gentext key="appendix.abr" text="&#1076;&#1086;&#1076;."/>
+ <l:gentext key="Article" text="&#1057;&#1090;&#1072;&#1090;&#1090;&#1103;"/>
+ <l:gentext key="article" text="&#1089;&#1090;&#1072;&#1090;&#1090;&#1103;"/>
+ <l:gentext key="Audience" text="&#1040;&#1091;&#1076;&#1080;&#1090;&#1086;&#1088;&#1110;&#1103;"/>
+ <l:gentext key="audience" text="&#1040;&#1091;&#1076;&#1080;&#1090;&#1086;&#1088;&#1110;&#1103;"/>
+ <l:gentext key="Bibliography" text="&#1051;&#1080;&#1090;&#1077;&#1088;&#1072;&#1090;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="bibliography" text="&#1083;&#1080;&#1090;&#1077;&#1088;&#1072;&#1090;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="Book" text="&#1050;&#1085;&#1080;&#1075;&#1072;"/>
+ <l:gentext key="book" text="&#1082;&#1085;&#1080;&#1075;&#1072;"/>
+ <l:gentext key="CAUTION" text="&#1047;&#1040;&#1057;&#1058;&#1045;&#1056;&#1045;&#1046;&#1045;&#1053;&#1053;&#1071;"/>
+ <l:gentext key="Caution" text="&#1047;&#1072;&#1089;&#1090;&#1077;&#1088;&#1077;&#1078;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="caution" text="&#1079;&#1072;&#1089;&#1090;&#1077;&#1088;&#1077;&#1078;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="Chapter" text="&#1056;&#1086;&#1079;&#1076;&#1110;&#1083;"/>
+ <l:gentext key="chapter" text="&#1088;&#1086;&#1079;&#1076;&#1110;&#1083;"/>
+ <l:gentext key="Chapter.abr" text="&#1056;&#1086;&#1079;&#1076;."/>
+ <l:gentext key="chapter.abr" text="&#1088;&#1086;&#1079;&#1076;."/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="&#1040;&#1074;&#1090;&#1086;&#1088;&#1089;&#1100;&#1082;&#1077; &#1087;&#1088;&#1072;&#1074;&#1086;"/>
+ <l:gentext key="copyright" text="&#1072;&#1074;&#1090;&#1086;&#1088;&#1089;&#1100;&#1082;&#1077; &#1087;&#1088;&#1072;&#1074;&#1086;"/>
+ <l:gentext key="Dedication" text="&#1055;&#1088;&#1080;&#1089;&#1074;&#1103;&#1095;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="dedication" text="&#1087;&#1088;&#1080;&#1089;&#1074;&#1103;&#1095;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="Edition" text="&#1042;&#1080;&#1076;&#1072;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="edition" text="&#1074;&#1080;&#1076;&#1072;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="Equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;"/>
+ <l:gentext key="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;"/>
+ <l:gentext key="Equation.abr" text="&#1060;."/>
+ <l:gentext key="equation.abr" text="&#1060;."/>
+ <l:gentext key="Example" text="&#1055;&#1088;&#1080;&#1082;&#1083;&#1072;&#1076;"/>
+ <l:gentext key="example" text="&#1087;&#1088;&#1080;&#1082;&#1083;&#1072;&#1076;"/>
+ <l:gentext key="Example.abr" text="&#1055;&#1088;&#1080;&#1082;&#1083;."/>
+ <l:gentext key="example.abr" text="&#1087;&#1088;&#1080;&#1082;&#1083;."/>
+ <l:gentext key="Figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082;"/>
+ <l:gentext key="figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082;"/>
+ <l:gentext key="Figure.abr" text="&#1056;&#1080;&#1089;."/>
+ <l:gentext key="figure.abr" text="&#1056;&#1080;&#1089;."/>
+ <l:gentext key="Glossary" text="&#1043;&#1083;&#1086;&#1089;&#1072;&#1088;&#1110;&#1081;"/>
+ <l:gentext key="glossary" text="&#1075;&#1083;&#1086;&#1089;&#1072;&#1088;&#1110;&#1081;"/>
+ <l:gentext key="GlossSee" text="&#1044;&#1080;&#1074;."/>
+ <l:gentext key="glosssee" text="&#1076;&#1080;&#1074;."/>
+ <l:gentext key="GlossSeeAlso" text="&#1044;&#1080;&#1074;. &#1090;&#1072;&#1082;&#1086;&#1078;"/>
+ <l:gentext key="glossSeeAlso" text="&#1076;&#1080;&#1074;. &#1090;&#1072;&#1082;&#1086;&#1078;"/>
+ <l:gentext key="glossseealso" text="&#1076;&#1080;&#1074;. &#1090;&#1072;&#1082;&#1086;&#1078;"/>
+ <l:gentext key="IMPORTANT" text="&#1042;&#1040;&#1046;&#1051;&#1048;&#1042;&#1054;"/>
+ <l:gentext key="Important" text="&#1042;&#1072;&#1078;&#1083;&#1080;&#1074;&#1086;"/>
+ <l:gentext key="important" text="&#1074;&#1072;&#1078;&#1083;&#1080;&#1074;&#1086;"/>
+ <l:gentext key="Index" text="&#1055;&#1088;&#1077;&#1076;&#1084;&#1077;&#1090;&#1085;&#1099;&#1081; &#1087;&#1086;&#1082;&#1072;&#1078;chcy;&#1080;&#1082;"/>
+ <l:gentext key="index" text="&#1087;&#1088;&#1077;&#1076;&#1084;&#1077;&#1090;&#1085;&#1099;&#1081; &#1087;&#1086;&#1082;&#1072;&#1078;chcy;&#1080;&#1082;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="&#1055;&#1088;&#1072;&#1074;&#1086;&#1074;&#1072; &#1087;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1072;"/>
+ <l:gentext key="legalnotice" text="&#1087;&#1088;&#1072;&#1074;&#1086;&#1074;&#1072; &#1087;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1072;"/>
+ <l:gentext key="Level" text="&#1056;&#1110;&#1074;&#1077;&#1085;&#1100;"/>
+ <l:gentext key="level" text="&#1088;&#1110;&#1074;&#1077;&#1085;&#1100;"/>
+ <l:gentext key="MsgAud" text="&#1040;&#1091;&#1076;&#1080;&#1090;&#1086;&#1088;&#1110;&#1103;"/>
+ <l:gentext key="msgaud" text="&#1072;&#1091;&#1076;&#1080;&#1090;&#1086;&#1088;&#1110;&#1103;"/>
+ <l:gentext key="MsgLevel" text="&#1056;&#1110;&#1074;&#1077;&#1085;&#1100;"/>
+ <l:gentext key="msglevel" text="&#1088;&#1110;&#1074;&#1077;&#1085;&#1100;"/>
+ <l:gentext key="MsgOrig" text="&#1044;&#1078;&#1077;&#1088;&#1077;&#1083;&#1086;"/>
+ <l:gentext key="msgorig" text="&#1076;&#1078;&#1077;&#1088;&#1077;&#1083;&#1086;"/>
+ <l:gentext key="Name" text="&#1030;&#1084;';&#1103;"/>
+ <l:gentext key="name" text="&#1110;&#1084;';&#1103;"/>
+ <l:gentext key="NOTE" text="&#1055;&#1056;&#1048;&#1052;&#1030;&#1058;&#1050;&#1040;"/>
+ <l:gentext key="Note" text="&#1055;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1072;"/>
+ <l:gentext key="note" text="&#1087;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1072;"/>
+ <l:gentext key="Origin" text="&#1044;&#1078;&#1077;&#1088;&#1077;&#1083;&#1086;"/>
+ <l:gentext key="origin" text="&#1076;&#1078;&#1077;&#1088;&#1077;&#1083;&#1086;"/>
+ <l:gentext key="Part" text="&#1063;&#1072;&#1089;&#1090;&#1080;&#1085;&#1072;"/>
+ <l:gentext key="part" text="&#1095;&#1072;&#1089;&#1090;&#1080;&#1085;&#1072;"/>
+ <l:gentext key="Part.abr" text="&#1063;."/>
+ <l:gentext key="part.abr" text="&#1063;."/>
+ <l:gentext key="Preface" text="&#1055;&#1077;&#1088;&#1077;&#1076;&#1084;&#1086;&#1074;&#1072;"/>
+ <l:gentext key="preface" text="&#1087;&#1077;&#1088;&#1077;&#1076;&#1084;&#1086;&#1074;&#1072;"/>
+ <l:gentext key="Procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;"/>
+ <l:gentext key="Procedure.abr" text="&#1055;&#1088;&#1086;&#1094;."/>
+ <l:gentext key="procedure.abr" text="&#1055;&#1088;&#1086;&#1094;."/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="&#1054;&#1087;&#1091;&#1073;&#1083;&#1110;&#1082;&#1086;&#1074;&#1072;&#1085;&#1086;"/>
+ <l:gentext key="published" text="&#1086;&#1087;&#1091;&#1073;&#1083;&#1110;&#1082;&#1086;&#1074;&#1072;&#1085;&#1086;"/>
+ <l:gentext key="Question" text="&#1055;"/>
+ <l:gentext key="question" text="&#1087;"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#1055;&#1086;&#1089;&#1080;&#1083;&#1072;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="reference" text="&#1087;&#1086;&#1089;&#1080;&#1083;&#1072;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="RefName" text="Name"/>
+ <l:gentext key="refname" text="Name"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#1050;&#1086;&#1088;&#1086;&#1090;&#1082;&#1080;&#1081; &#1086;&#1075;&#1083;&#1103;&#1076;"/>
+ <l:gentext key="refsynopsisdiv" text="&#1082;&#1086;&#1088;&#1086;&#1090;&#1082;&#1080;&#1081; &#1086;&#1075;&#1083;&#1103;&#1076;"/>
+ <l:gentext key="RevHistory" text="&#1054;&#1087;&#1080;&#1089; zcy;&#1084;&#1110;&#1085;"/>
+ <l:gentext key="revhistory" text="&#1086;&#1087;&#1080;&#1089; zcy;&#1084;&#1110;&#1085;"/>
+ <l:gentext key="Revision" text="&#1055;&#1077;&#1088;&#1077;&#1075;&#1083;&#1103;&#1076;"/>
+ <l:gentext key="revision" text="&#1087;&#1077;&#1088;&#1077;&#1075;&#1083;&#1103;&#1076;"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="&#1055;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092;"/>
+ <l:gentext key="section" text="&#1087;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092;"/>
+ <l:gentext key="Section.abr" text="&#1055;&#1072;&#1088;."/>
+ <l:gentext key="section.abr" text="&#1087;&#1072;&#1088;."/>
+ <l:gentext key="See" text="&#1044;&#1080;&#1074;."/>
+ <l:gentext key="see" text="&#1076;&#1080;&#1074;."/>
+ <l:gentext key="SeeAlso" text="&#1044;&#1080;&#1074;. tcy;&#1072;&#1082;&#1086;&#1078;"/>
+ <l:gentext key="Seealso" text="&#1044;&#1080;&#1074;. tcy;&#1072;&#1082;&#1086;&#1078;"/>
+ <l:gentext key="seealso" text="&#1089;&#1080;&#1074;. tcy;&#1072;&#1082;&#1086;&#1078;"/>
+ <l:gentext key="Set" text="&#1042;&#1080;&#1073;&#1110;&#1088;&#1082;&#1072;"/>
+ <l:gentext key="set" text="&#1074;&#1080;&#1073;&#1110;&#1088;&#1082;&#1072;"/>
+ <l:gentext key="SetIndex" text="&#1048;&#1085;&#1076;&#1077;&#1082;&#1089; &#1074;&#1080;&#1073;&#1110;&#1088;&#1082;&#1080;"/>
+ <l:gentext key="setindex" text="&#1080;&#1085;&#1076;&#1077;&#1082;&#1089; &#1074;&#1080;&#1073;&#1110;&#1088;&#1082;&#1080;"/>
+ <l:gentext key="Sidebar" text="&#1042;&#1099;&#1076;&#1110;&#1083;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="sidebar" text="&#1074;&#1099;&#1076;&#1110;&#1083;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="Step" text="&#1050;&#1088;&#1086;&#1082;"/>
+ <l:gentext key="step" text="&#1082;&#1088;&#1086;&#1082;"/>
+ <l:gentext key="Table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1103;"/>
+ <l:gentext key="table" text="&#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1103;"/>
+ <l:gentext key="Table.abr" text="&#1058;&#1072;&#1073;&#1083;."/>
+ <l:gentext key="table.abr" text="&#1090;&#1072;&#1073;&#1083;."/>
+ <l:gentext key="TIP" text="&#1055;&#1030;&#1044;&#1050;&#1040;&#1047;&#1050;&#1040;"/>
+ <l:gentext key="Tip" text="&#1055;&#1110;&#1076;&#1082;&#1072;&#1079;&#1082;&#1072;"/>
+ <l:gentext key="tip" text="&#1087;&#1110;&#1076;&#1082;&#1072;&#1079;&#1082;&#1072;"/>
+ <l:gentext key="WARNING" text="&#1047;&#1040;&#1057;&#1058;&#1045;&#1056;&#1045;&#1046;&#1045;&#1053;&#1053;&#1071;"/>
+ <l:gentext key="Warning" text="&#1047;&#1072;&#1089;&#1090;&#1077;&#1088;&#1077;&#1078;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="warning" text="&#1079;&#1072;&#1089;&#1090;&#1077;&#1088;&#1077;&#1078;&#1077;&#1085;&#1085;&#1103;"/>
+ <l:gentext key="and" text=""/>
+ <l:gentext key="by" text=""/>
+ <l:gentext key="called" text=""/>
+ <l:gentext key="edited" text="&#1087;&#1080;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1110;&#1108;&#1102;"/>
+ <l:gentext key="Edited" text="&#1055;&#1080;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1110;&#1108;&#1102;"/>
+ <l:gentext key="Editedby" text="&#1055;&#1080;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1110;&#1108;&#1102;"/>
+ <l:gentext key="editedby" text="&#1087;&#1080;&#1076; &#1088;&#1077;&#1076;&#1072;&#1082;&#1094;&#1110;&#1108;&#1102;"/>
+ <l:gentext key="in" text="&#1074;"/>
+ <l:gentext key="TableofContents" text="&#1047;&#1084;&#1110;&#1089;&#1090;"/>
+ <l:gentext key="tableofcontents" text="&#1079;&#1084;&#1110;&#1089;&#1090;"/>
+ <l:gentext key="lastlistcomma" text="."/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="Notes" text="&#1055;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1080;"/>
+ <l:gentext key="notes" text="&#1087;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1080;"/>
+ <l:gentext key="TableNotes" text="&#1055;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1080;"/>
+ <l:gentext key="tablenotes" text="&#1087;&#1088;&#1080;&#1084;&#1110;&#1090;&#1082;&#1080;"/>
+ <l:gentext key="nonexistantelement" text="non-existant element"/>
+ <l:gentext key="pgs" text="&#1089;&#1090;&#1086;&#1088;."/>
+ <l:gentext key="Pgs" text="&#1057;&#1090;&#1086;&#1088;."/>
+ <l:gentext key="Revisedby" text="&#1050;&#1086;&#1088;&#1077;&#1082;&#1090;&#1091;&#1088;&#1072;:;"/>
+ <l:gentext key="revisedby" text="&#1082;&#1086;&#1088;&#1077;&#1082;&#1090;&#1091;&#1088;&#1072;:;"/>
+ <l:gentext key="the" text=""/>
+ <l:gentext key="unexpectedelementname" text="unexpected element name"/>
+ <l:gentext key="unsupported" text="unsupported"/>
+ <l:gentext key="xrefto" text="xref to"/>
+ <l:gentext key="listofequations" text="&#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1092;&#1086;&#1088;&#1084;&#1091;&#1083;"/>
+ <l:gentext key="ListofEquations" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1092;&#1086;&#1088;&#1084;&#1091;&#1083;"/>
+ <l:gentext key="ListofExamples" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1087;&#1088;&#1080;&#1082;&#1083;&#1072;&#1076;&#1110;&#1074;"/>
+ <l:gentext key="listofexamples" text="&#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1087;&#1088;&#1080;&#1082;&#1083;&#1072;&#1076;&#1110;&#1074;"/>
+ <l:gentext key="ListofFigures" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1110;&#1083;&#1102;&#1089;&#1090;&#1088;&#1072;&#1094;&#1110;&#1081;"/>
+ <l:gentext key="listoffigures" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1110;&#1083;&#1102;&#1089;&#1090;&#1088;&#1072;&#1094;&#1110;&#1081;"/>
+ <l:gentext key="listoftables" text="&#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1100;"/>
+ <l:gentext key="ListofTables" text="&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;;&#1100;"/>
+ <l:gentext key="ListofUnknown" text="&#1053;&#1077;&#1074;&#1080;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082;"/>
+ <l:gentext key="listofunknown" text="&#1085;&#1077;&#1074;&#1080;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082;"/>
+ <l:gentext key="nav-next" text="&#1076;&#1072;&#1083;&#1110;"/>
+ <l:gentext key="nav-next-sibling" text="&#1076;&#1072;&#1083;&#1110; &#1087;&#1086; &#1088;&#1110;&#1074;&#1085;&#1102;"/>
+ <l:gentext key="nav-prev" text="&#1085;&#1072;&#1079;&#1072;&#1076;"/>
+ <l:gentext key="nav-prev-sibling" text="&#1085;&#1072;&#1079;&#1072;&#1076; &#1087;&#1086; &#1088;&#1110;&#1074;&#1085;&#1102;"/>
+ <l:gentext key="x-nav-next" text="&#1076;&#1072;&#1083;&#1110;"/>
+ <l:gentext key="nav-home" text="&#1055;&#1086;&#1095;&#1072;&#1090;&#1086;&#1082;"/>
+ <l:gentext key="nav-up" text="&#1044;&#1086;&#1075;&#1086;&#1088;&#1080;"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1076;&#1086;&#1076;&#1072;&#1090;&#1082;&#1091; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="article" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1089;&#1090;&#1072;&#1090;&#1090;&#1110; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="bibliodiv" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1073;&#1110;&#1073;&#1083;&#1110;&#1086;&#1075;&#1088;&#1072;&#1092;&#1110;&#1111; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="book" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1082;&#1085;&#1080;&#1075;&#1080; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="chapter" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1075;&#1083;&#1072;&#1074;&#1080; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="columns" text="&#1057;&#1090;&#1086;&#1074;&#1087;&#1094;&#1110;"/>
+ <l:template name="draftarea" text="&#1055;&#1086;&#1087;&#1077;&#1088;&#1077;&#1076;&#1085;&#1108; &#1088;&#1077;&#1076;&#1072;&#1075;&#1091;&#1074;&#1072;&#1085;&#1085;&#1103; &#1084;&#1077;&#1090;&#1072;&#1076;&#1072;&#1085;&#1080;&#1093;"/>
+ <l:template name="edit-attrs" text="&#1088;&#1077;&#1076;&#1072;&#1075;&#1091;&#1081;&#1090;&#1077; &#1072;&#1090;&#1088;&#1080;&#1073;&#1091;&#1090;&#1080; &#1074;&#1110;&#1076;&#1087;&#1086;&#1074;&#1110;&#1076;&#1085;&#1080;&#1093; &#1077;&#1083;&#1077;&#1084;&#1077;&#1085;&#1090;&#1110;&#1074;"/>
+ <l:template name="footnote" text="&#1042;&#1080;&#1085;&#1086;&#1089;&#1082;&#1072;"/>
+ <l:template name="metainfo" text=""/>
+ <l:template name="preface" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1087;&#1077;&#1088;&#1077;&#1076;&#1084;&#1086;&#1074;&#1080; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="part" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1095;&#1072;&#1089;&#1090;&#1080;&#1085;&#1080; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="section" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1086;&#1079;&#1076;&#1110;&#1083;&#1091; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="sect1" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1086;&#1079;&#1076;&#1110;&#1083;&#1091; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="sect2" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1086;&#1079;&#1076;&#1110;&#1083;&#1091; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="sect3" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1086;&#1079;&#1076;&#1110;&#1083;&#1091; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="sect4" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1086;&#1079;&#1076;&#1110;&#1083;&#1091; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="sect5" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1088;&#1086;&#1079;&#1076;&#1110;&#1083;&#1091; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="set" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1080; &#1076;&#1086;&#1073;&#1110;&#1088;&#1082;&#1080; (&#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;)"/>
+ <l:template name="title" text="&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;: "/>
+ <l:template name="titles" text="&#1045;&#1083;&#1077;&#1084;&#1077;&#1085;&#1090;&#1080; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1085;&#1086;&#1111; &#1089;&#1090;&#1086;&#1088;&#1110;&#1085;&#1082;&#1080; &#1074;&#1110;&#1076;&#1089;&#1091;&#1090;&#1085;&#1110;"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#1044;&#1086;&#1076;&#1072;&#1090;&#1086;&#1082; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1056;&#1086;&#1079;&#1076;&#1110;&#1083; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072; %n. %t"/>
+ <l:template name="example" text="&#1055;&#1088;&#1080;&#1082;&#1083;&#1072;&#1076; %n. %t"/>
+ <l:template name="figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1063;&#1072;&#1089;&#1090;&#1080;&#1085;&#1072; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1103; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#1044;&#1086;&#1076;&#1072;&#1090;&#1086;&#1082; %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="&#1056;&#1086;&#1079;&#1076;&#1110;&#1083; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#1042;:&#160;%n"/>
+ <l:template name="appendix" text="&#1044;&#1086;&#1076;&#1072;&#1090;&#1086;&#1082; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#1056;&#1086;&#1079;&#1076;&#1110;&#1083; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#1060;&#1086;&#1088;&#1084;&#1091;&#1083;&#1072;&#160;%n"/>
+ <l:template name="example" text="&#1055;&#1088;&#1080;&#1082;&#1083;&#1072;&#1076; %n. %t"/>
+ <l:template name="figure" text="&#1056;&#1080;&#1089;&#1091;&#1085;&#1086;&#1082; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#1063;&#1072;&#1089;&#1090;&#1080;&#1085;&#1072; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#1055;&#1088;&#1086;&#1094;&#1077;&#1076;&#1091;&#1088;&#1072;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#1055;&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#1055;&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1103; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsection" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#1055;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092; %n"/>
+ <l:template name="sect2" text="&#1055;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092; %n"/>
+ <l:template name="sect3" text="&#1055;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092; %n"/>
+ <l:template name="sect4" text="&#1055;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092; %n"/>
+ <l:template name="sect5" text="&#1055;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092; %n"/>
+ <l:template name="section" text="&#1055;&#1072;&#1088;&#1072;&#1075;&#1088;&#1072;&#1092; %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" "/>
+ <l:template name="seplast" text=". "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#1044;&#1080;&#1074;. "/>
+ <l:template name="seealso" text="&#1044;&#1080;&#1074;. &#1090;&#1072;&#1082;&#1086;&#1078; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#1040;&#1091;&#1076;&#1080;&#1090;&#1086;&#1088;&#1110;&#1103;: "/>
+ <l:template name="MsgLevel" text="&#1056;&#1110;&#1074;&#1077;&#1085;&#1100;: "/>
+ <l:template name="MsgOrig" text="&#1044;&#1078;&#1077;&#1088;&#1077;&#1083;&#1086;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/vi.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/vi.xml
new file mode 100644
index 0000000..8607488
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/vi.xml
@@ -0,0 +1,453 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="vi" english-language-name="Vietnamese">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="T&#7893;ng quan"/>
+ <l:gentext key="abstract" text="T&#7893;ng quan"/>
+ <l:gentext key="Answer" text="&#272;:"/>
+ <l:gentext key="answer" text="&#272;:"/>
+ <l:gentext key="Appendix" text="Ph&#7909; l&#7909;c"/>
+ <l:gentext key="appendix" text="ph&#7909; l&#7909;c"/>
+ <l:gentext key="Article" text="B&#224;i vi&#7871;t"/>
+ <l:gentext key="article" text="B&#224;i vi&#7871;t"/>
+ <l:gentext key="Bibliography" text="Th&#432; m&#7909;c"/>
+ <l:gentext key="bibliography" text="Th&#432; m&#7909;c"/>
+ <l:gentext key="Book" text="S&#225;ch"/>
+ <l:gentext key="book" text="S&#225;ch"/>
+ <l:gentext key="CAUTION" text="C&#7848;N TH&#7852;N"/>
+ <l:gentext key="Caution" text="C&#7849;n th&#7853;n"/>
+ <l:gentext key="caution" text="C&#7849;n th&#7853;n"/>
+ <l:gentext key="Chapter" text="Ch&#432;&#417;ng"/>
+ <l:gentext key="chapter" text="ch&#432;&#417;ng"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="B&#7843;n quy&#7873;n"/>
+ <l:gentext key="copyright" text="B&#7843;n quy&#7873;n"/>
+ <l:gentext key="Dedication" text="T&#7863;ng"/>
+ <l:gentext key="dedication" text="T&#7863;ng"/>
+ <l:gentext key="Edition" text="Edition"/>
+ <l:gentext key="edition" text="Edition"/>
+ <l:gentext key="Equation" text="Ph&#432;&#417;ng tr&#236;nh"/>
+ <l:gentext key="equation" text="Ph&#432;&#417;ng tr&#236;nh"/>
+ <l:gentext key="Example" text="V&#237; d&#7909;"/>
+ <l:gentext key="example" text="V&#237; d&#7909;"/>
+ <l:gentext key="Figure" text="H&#236;nh"/>
+ <l:gentext key="figure" text="H&#236;nh"/>
+ <l:gentext key="Glossary" text="Thu&#7853;t ng&#7919;"/>
+ <l:gentext key="glossary" text="Thu&#7853;t ng&#7919;"/>
+ <l:gentext key="GlossSee" text="Xem"/>
+ <l:gentext key="glosssee" text="Xem"/>
+ <l:gentext key="GlossSeeAlso" text="Xem th&#234;m"/>
+ <l:gentext key="glossseealso" text="Xem th&#234;m"/>
+ <l:gentext key="IMPORTANT" text="QUAN TR&#7884;NG"/>
+ <l:gentext key="important" text="Quan tr&#7885;ng"/>
+ <l:gentext key="Important" text="Quan tr&#7885;ng"/>
+ <l:gentext key="Index" text="Ch&#7881; m&#7909;c"/>
+ <l:gentext key="index" text="Ch&#7881; m&#7909;c"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="Legal Notice"/>
+ <l:gentext key="legalnotice" text="Legal Notice"/>
+ <l:gentext key="MsgAud" text="&#272;&#7885;c gi&#7843;"/>
+ <l:gentext key="msgaud" text="&#272;&#7885;c gi&#7843;"/>
+ <l:gentext key="MsgLevel" text="C&#7845;p"/>
+ <l:gentext key="msglevel" text="C&#7845;p"/>
+ <l:gentext key="MsgOrig" text="G&#7889;c"/>
+ <l:gentext key="msgorig" text="G&#7889;c"/>
+ <l:gentext key="NOTE" text="GHI CH&#218;"/>
+ <l:gentext key="Note" text="Ghi ch&#250;"/>
+ <l:gentext key="note" text="Ghi ch&#250;"/>
+ <l:gentext key="Part" text="Ph&#7847;n"/>
+ <l:gentext key="part" text="Ph&#7847;n"/>
+ <l:gentext key="Preface" text="M&#7903; &#273;&#7847;u"/>
+ <l:gentext key="preface" text="M&#7903; &#273;&#7847;u"/>
+ <l:gentext key="Procedure" text="Th&#7911; t&#7909;c"/>
+ <l:gentext key="procedure" text="Th&#7911; t&#7909;c"/>
+ <l:gentext key="ProductionSet" text="S&#7843;n ph&#7849;m"/>
+ <l:gentext key="Published" text="Xu&#7845;t b&#7843;n"/>
+ <l:gentext key="published" text="Xu&#7845;t b&#7843;n"/>
+ <l:gentext key="Question" text="H:"/>
+ <l:gentext key="question" text="H:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Tham kh&#7843;o"/>
+ <l:gentext key="reference" text="Tham kh&#7843;o"/>
+ <l:gentext key="RefName" text="T&#234;n"/>
+ <l:gentext key="refname" text="T&#234;n"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="T&#243;m t&#7855;t"/>
+ <l:gentext key="refsynopsisdiv" text="T&#243;m t&#7855;t"/>
+ <l:gentext key="RevHistory" text="Revision History"/>
+ <l:gentext key="revhistory" text="Revision History"/>
+ <l:gentext key="revision" text="B&#7843;n hi&#7879;u ch&#7881;nh"/>
+ <l:gentext key="Revision" text="B&#7843;n hi&#7879;u ch&#7881;nh"/>
+ <l:gentext key="sect1" text="Ph&#7847;n"/>
+ <l:gentext key="sect2" text="Ph&#7847;n"/>
+ <l:gentext key="sect3" text="Ph&#7847;n"/>
+ <l:gentext key="sect4" text="Ph&#7847;n"/>
+ <l:gentext key="sect5" text="Ph&#7847;n"/>
+ <l:gentext key="section" text="Ph&#7847;n"/>
+ <l:gentext key="Section" text="Ph&#7847;n"/>
+ <l:gentext key="see" text="xem"/>
+ <l:gentext key="seealso" text="xem th&#234;m"/>
+ <l:gentext key="set" text="&#272;&#7863;t"/>
+ <l:gentext key="Set" text="&#272;&#7863;t"/>
+ <l:gentext key="setindex" text="&#272;&#7863;t ch&#7881; m&#7909;c"/>
+ <l:gentext key="SetIndex" text="&#272;&#7863;t ch&#7881; m&#7909;c"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="thanh b&#234;n"/>
+ <l:gentext key="step" text="b&#432;&#7899;c"/>
+ <l:gentext key="Step" text="B&#432;&#7899;c"/>
+ <l:gentext key="Table" text="B&#7843;ng"/>
+ <l:gentext key="table" text="B&#7843;ng"/>
+ <l:gentext key="tip" text="M&#7865;o"/>
+ <l:gentext key="TIP" text="M&#7864;O"/>
+ <l:gentext key="Tip" text="M&#7865;o"/>
+ <l:gentext key="Warning" text="C&#7843;nh b&#225;o"/>
+ <l:gentext key="warning" text="C&#7843;nh b&#225;o"/>
+ <l:gentext key="WARNING" text="C&#7842;NH B&#193;O"/>
+ <l:gentext key="and" text="v&#224;"/>
+ <l:gentext key="by" text="b&#7903;i"/>
+ <l:gentext key="Edited" text="&#272;&#432;&#7907;c bi&#234;n so&#7841;n"/>
+ <l:gentext key="edited" text="&#272;&#432;&#7907;c bi&#234;n so&#7841;n"/>
+ <l:gentext key="Editedby" text="&#272;&#432;&#7907;c bi&#234;n so&#7841;n b&#7903;i"/>
+ <l:gentext key="editedby" text="&#272;&#432;&#7907;c bi&#234;n so&#7841;n b&#7903;i"/>
+ <l:gentext key="in" text="trong"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="ph&#7847;n t&#7917; kh&#244;ng c&#243;"/>
+ <l:gentext key="notes" text="Ghi ch&#250;"/>
+ <l:gentext key="Notes" text="Ghi ch&#250;"/>
+ <l:gentext key="Pgs" text="Pgs."/>
+ <l:gentext key="pgs" text="Pgs."/>
+ <l:gentext key="Revisedby" text="Hi&#7879;u ch&#7881;nh b&#7903;i: "/>
+ <l:gentext key="revisedby" text="Hi&#7879;u ch&#7881;nh b&#7903;i: "/>
+ <l:gentext key="TableNotes" text="Ghi ch&#250;"/>
+ <l:gentext key="tablenotes" text="Ghi ch&#250;"/>
+ <l:gentext key="TableofContents" text="M&#7909;c l&#7909;c"/>
+ <l:gentext key="tableofcontents" text="M&#7909;c l&#7909;c"/>
+ <l:gentext key="unexpectedelementname" text="T&#234;n ph&#7847;n t&#7917; kh&#244;ng &#273;&#250;ng"/>
+ <l:gentext key="unsupported" text="kh&#244;ng h&#7895; tr&#7907;"/>
+ <l:gentext key="xrefto" text="xref t&#7899;i"/>
+ <l:gentext key="listofequations" text="Danh s&#225;ch Ph&#432;&#417;ng tr&#236;nh"/>
+ <l:gentext key="ListofEquations" text="Danh s&#225;ch Ph&#432;&#417;ng tr&#236;nh"/>
+ <l:gentext key="ListofExamples" text="Danh s&#225;ch V&#237; d&#7909;"/>
+ <l:gentext key="listofexamples" text="Danh s&#225;ch V&#237; d&#7909;"/>
+ <l:gentext key="ListofFigures" text="Danh s&#225;ch H&#236;nh"/>
+ <l:gentext key="listoffigures" text="Danh s&#225;ch H&#236;nh"/>
+ <l:gentext key="listoftables" text="Danh s&#225;ch B&#7843;ng"/>
+ <l:gentext key="ListofTables" text="Danh s&#225;ch B&#7843;ng"/>
+ <l:gentext key="ListofUnknown" text="Danh s&#225;ch L&#7841;"/>
+ <l:gentext key="listofunknown" text="Danh s&#225;ch L&#7841;"/>
+ <l:gentext key="nav-home" text="&#272;&#7847;u"/>
+ <l:gentext key="nav-next" text="K&#7871; ti&#7871;p"/>
+ <l:gentext key="nav-next-sibling" text="T&#7899;i nhanh"/>
+ <l:gentext key="nav-prev" text="Tr&#432;&#7899;c &#273;&#243;"/>
+ <l:gentext key="nav-prev-sibling" text="L&#249;i nhanh"/>
+ <l:gentext key="nav-up" text="L&#234;n"/>
+ <l:gentext key="nav-toc" text="M&#7909;c l&#7909;c"/>
+ <l:gentext key="Draft" text="B&#7843;n th&#7843;o"/>
+ <l:gentext key="above" text="tr&#234;n"/>
+ <l:gentext key="below" text="d&#432;&#7899;i"/>
+ <l:gentext key="sectioncalled" text="ph&#7847;n"/>
+ <l:gentext key="index symbols" text="K&#253; hi&#7879;u"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="last-first"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Ph&#7909; l&#7909;c&#160;%n.&#160;%t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Ch&#432;&#417;ng&#160;%n.&#160;%t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ph&#432;&#417;ng tr&#236;nh&#160;%n.&#160;%t"/>
+ <l:template name="example" text="V&#237; d&#7909;&#160;%n.&#160;%t"/>
+ <l:template name="figure" text="H&#236;nh&#160;%n.&#160;%t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Ph&#7847;n&#160;%n.&#160;%t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Th&#7911; t&#7909;c&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="S&#7843;n ph&#7849;m&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="B&#7843;ng&#160;%n.&#160;%t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Ph&#7909; l&#7909;c&#160;%n.&#160;%t"/>
+ <l:template name="bridgehead" text="%n.&#160;%t"/>
+ <l:template name="chapter" text="Ch&#432;&#417;ng&#160;%n.&#160;%t"/>
+ <l:template name="sect1" text="%n.&#160;%t"/>
+ <l:template name="sect2" text="%n.&#160;%t"/>
+ <l:template name="sect3" text="%n.&#160;%t"/>
+ <l:template name="sect4" text="%n.&#160;%t"/>
+ <l:template name="sect5" text="%n.&#160;%t"/>
+ <l:template name="section" text="%n.&#160;%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#272;:&#160;%n"/>
+ <l:template name="appendix" text="Ph&#7909; l&#7909;c&#160;%n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Ch&#432;&#417;ng&#160;%n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ph&#432;&#417;ng tr&#236;nh&#160;%n"/>
+ <l:template name="example" text="V&#237; d&#7909;&#160;%n"/>
+ <l:template name="figure" text="H&#236;nh&#160;%n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Th&#7911; t&#7909;c&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="H:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="H:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="B&#7843;ng&#160;%n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="section" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="ph&#7847;n &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="refsection" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="ph&#7847;n &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="sect2" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="sect3" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="sect4" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="sect5" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="section" text="Ph&#7847;n&#160;%n"/>
+ <l:template name="simplesect" text="ph&#7847;n &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" v&#224; "/>
+ <l:template name="seplast" text=", v&#224; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Xem "/>
+ <l:template name="seealso" text="Xem th&#234;m "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#272;&#7885;c gi&#7843;: "/>
+ <l:template name="MsgLevel" text="C&#7845;p: "/>
+ <l:template name="MsgOrig" text="G&#7889;c: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/xh.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/xh.xml
new file mode 100644
index 0000000..e296b5d
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/xh.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="xh" english-language-name="Xhosa">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="Isiqalo"/>
+ <l:gentext key="abstract" text="Isiqalo"/>
+ <l:gentext key="Answer" text="I:"/>
+ <l:gentext key="answer" text="I:"/>
+ <l:gentext key="Appendix" text="Isivalo"/>
+ <l:gentext key="appendix" text="isivalo"/>
+ <l:gentext key="Article" text="Umba"/>
+ <l:gentext key="article" text="Umba"/>
+ <l:gentext key="Bibliography" text="Ezobunzululwazi"/>
+ <l:gentext key="bibliography" text="Ezobunzululwazi"/>
+ <l:gentext key="Book" text="Incwadi"/>
+ <l:gentext key="book" text="Incwadi"/>
+ <l:gentext key="CAUTION" text="ISILUMKISO"/>
+ <l:gentext key="Caution" text="Isilumkiso"/>
+ <l:gentext key="caution" text="Isilumkiso"/>
+ <l:gentext key="Chapter" text="Isiqendu"/>
+ <l:gentext key="chapter" text="isiqendu"/>
+ <l:gentext key="Colophon" text="Ikolophon"/>
+ <l:gentext key="colophon" text="Ikolophon"/>
+ <l:gentext key="Copyright" text="Ushicilelo olusemthethweni"/>
+ <l:gentext key="copyright" text="Ushicilelo olusemthethweni"/>
+ <l:gentext key="Dedication" text="Ulwaziso"/>
+ <l:gentext key="dedication" text="Ulwaziso"/>
+ <l:gentext key="Edition" text="Uhlelo"/>
+ <l:gentext key="edition" text="Uhlelo"/>
+ <l:gentext key="Equation" text="Ulinganiselo"/>
+ <l:gentext key="equation" text="Ulinganiselo"/>
+ <l:gentext key="Example" text="Umzekelo"/>
+ <l:gentext key="example" text="Umzekelo"/>
+ <l:gentext key="Figure" text="Ulungu"/>
+ <l:gentext key="figure" text="Ulungu"/>
+ <l:gentext key="Glossary" text="Inkcazelo yamagama"/>
+ <l:gentext key="glossary" text="Inkcazelo yamagama"/>
+ <l:gentext key="GlossSee" text="Bona"/>
+ <l:gentext key="glosssee" text="Bona"/>
+ <l:gentext key="GlossSeeAlso" text="Bona Kwakhona"/>
+ <l:gentext key="glossseealso" text="Bona Kwakhona"/>
+ <l:gentext key="IMPORTANT" text="IBALULEKILE"/>
+ <l:gentext key="important" text="Ibalulekile"/>
+ <l:gentext key="Important" text="Ibalulekile"/>
+ <l:gentext key="Index" text="Isalathiso"/>
+ <l:gentext key="index" text="Isalathiso"/>
+ <l:gentext key="ISBN" text="iISBN"/>
+ <l:gentext key="isbn" text="iISBN"/>
+ <l:gentext key="LegalNotice" text="Isaziso Esesimthethweni"/>
+ <l:gentext key="legalnotice" text="Isaziso Esesimthethweni"/>
+ <l:gentext key="MsgAud" text="Ababhali"/>
+ <l:gentext key="msgaud" text="Ababhali"/>
+ <l:gentext key="MsgLevel" text="Umphakamo"/>
+ <l:gentext key="msglevel" text="Umphakamo"/>
+ <l:gentext key="MsgOrig" text="Uqobo"/>
+ <l:gentext key="msgorig" text="Uqobo"/>
+ <l:gentext key="NOTE" text="QAPHELA"/>
+ <l:gentext key="Note" text="Qaphela"/>
+ <l:gentext key="note" text="Qaphela"/>
+ <l:gentext key="Part" text="Inxenye"/>
+ <l:gentext key="part" text="Inxenye"/>
+ <l:gentext key="Preface" text="Isihloko"/>
+ <l:gentext key="preface" text="Isihloko"/>
+ <l:gentext key="Procedure" text="Inkqubo"/>
+ <l:gentext key="procedure" text="Inkqubo"/>
+ <l:gentext key="ProductionSet" text="Imveliso"/>
+ <l:gentext key="Published" text="Ipapashwe"/>
+ <l:gentext key="published" text="Ipapashwe"/>
+ <l:gentext key="Question" text="U:"/>
+ <l:gentext key="question" text="U:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="Uthelekiso"/>
+ <l:gentext key="reference" text="Uthelekiso"/>
+ <l:gentext key="RefName" text="Igama lothelekiso"/>
+ <l:gentext key="refname" text="Igama lothelekiso"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="Isinopsisi"/>
+ <l:gentext key="refsynopsisdiv" text="Isinopsisi"/>
+ <l:gentext key="RevHistory" text="Imbali yophindo"/>
+ <l:gentext key="revhistory" text="Imbali yophindo"/>
+ <l:gentext key="revision" text="Iphindo"/>
+ <l:gentext key="Revision" text="Iphindo"/>
+ <l:gentext key="sect1" text="Icandelo"/>
+ <l:gentext key="sect2" text="Icandelo"/>
+ <l:gentext key="sect3" text="Icandelo"/>
+ <l:gentext key="sect4" text="Icandelo"/>
+ <l:gentext key="sect5" text="Icandelo"/>
+ <l:gentext key="section" text="Icandelo"/>
+ <l:gentext key="Section" text="Icandelo"/>
+ <l:gentext key="See" text="Bona"/>
+ <l:gentext key="see" text="Bona"/>
+ <l:gentext key="SeeAlso" text="Bona Kwakhona"/>
+ <l:gentext key="seealso" text="Bona Kwakhona"/>
+ <l:gentext key="Seealso" text="Bona Kwakhona"/>
+ <l:gentext key="set" text="Cwangcisa"/>
+ <l:gentext key="Set" text="Cwangcisa"/>
+ <l:gentext key="setindex" text="Cwangcisa Isalathiso"/>
+ <l:gentext key="SetIndex" text="Cwangcisa Isalathiso"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="ibar esecaleni"/>
+ <l:gentext key="step" text="inqwanqwa"/>
+ <l:gentext key="Step" text="Inqwanqwa"/>
+ <l:gentext key="Table" text="Indlela Yokwenza Imigca"/>
+ <l:gentext key="table" text="Indlela Yokwenza Imigca"/>
+ <l:gentext key="tip" text="Incam"/>
+ <l:gentext key="TIP" text="INCAM"/>
+ <l:gentext key="Tip" text="Incam"/>
+ <l:gentext key="Warning" text="Isilumkiso"/>
+ <l:gentext key="warning" text="Isilumkiso"/>
+ <l:gentext key="WARNING" text="ISILUMKISO"/>
+ <l:gentext key="and" text="no"/>
+ <l:gentext key="by" text="by"/>
+ <l:gentext key="Edited" text="Ihleliwe"/>
+ <l:gentext key="edited" text="Ihleliwe"/>
+ <l:gentext key="Editedby" text="Ihlelwe"/>
+ <l:gentext key="editedby" text="Ihlelwe"/>
+ <l:gentext key="in" text="in"/>
+ <l:gentext key="lastlistcomma" text=", "/>
+ <l:gentext key="listcomma" text=", "/>
+ <l:gentext key="nonexistantelement" text="isiqalelo esingekhayo"/>
+ <l:gentext key="notes" text="Iziqaphelo"/>
+ <l:gentext key="Notes" text="Iziqaphelo"/>
+ <l:gentext key="Pgs" text="Amaphepha"/>
+ <l:gentext key="pgs" text="Amaphepha"/>
+ <l:gentext key="Revisedby" text="Iphindwe ngu: "/>
+ <l:gentext key="revisedby" text="Iphindwe ngu:"/>
+ <l:gentext key="TableNotes" text="Iziqaphelo"/>
+ <l:gentext key="tablenotes" text="Iziqaphelo"/>
+ <l:gentext key="TableofContents" text="Imigca Yemixholo"/>
+ <l:gentext key="tableofcontents" text="Imigca Yemixholo"/>
+ <l:gentext key="unexpectedelementname" text="Igama lesiqalelo esingalindelwanga"/>
+ <l:gentext key="unsupported" text="ayixhaswanga"/>
+ <l:gentext key="xrefto" text="thelekiso ku"/>
+ <l:gentext key="listofequations" text="Uluhlu Lemilinganiselo"/>
+ <l:gentext key="ListofEquations" text="Uluhlu Lemilinganiselo"/>
+ <l:gentext key="ListofExamples" text="Uluhlu Lemizekelo"/>
+ <l:gentext key="listofexamples" text="Uluhlu Lemizekelo"/>
+ <l:gentext key="ListofFigures" text="Uluhlu Lamalungu"/>
+ <l:gentext key="listoffigures" text="Uluhlu Lamalungu"/>
+ <l:gentext key="listoftables" text="Uluhlu Lendlela Yokwenza Imigca"/>
+ <l:gentext key="ListofTables" text="Uluhlu Lendlela Yokwenza Imigca"/>
+ <l:gentext key="ListofUnknown" text="Uluhlu Lokungaziwayo"/>
+ <l:gentext key="listofunknown" text="Uluhlu Lokungaziwayo"/>
+ <l:gentext key="nav-home" text="Ikhaya"/>
+ <l:gentext key="nav-next" text="Elandelayo"/>
+ <l:gentext key="nav-next-sibling" text="Yisa Phambili"/>
+ <l:gentext key="nav-prev" text="Edlulileyo"/>
+ <l:gentext key="nav-prev-sibling" text="Yisa Emva"/>
+ <l:gentext key="nav-up" text="Phezulu"/>
+ <l:gentext key="sectioncalled" text="icandelo libizwa ngokuba"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Iimpawu"/>
+ <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+ <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+ <l:dingbat key="startquote" text="&#8220;"/>
+ <l:dingbat key="endquote" text="&#8221;"/>
+ <l:dingbat key="nestedstartquote" text="&#8216;"/>
+ <l:dingbat key="nestedendquote" text="&#8217;"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="Isivalo %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Isiqendu %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ulinganiselo %n. %t"/>
+ <l:template name="example" text="Umzekelo %n. %t"/>
+ <l:template name="figure" text="Ulungu %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Inxenye %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="Inkqubo %n. %t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Imveliso %n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="Indlela Yokwenza Imigca %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text=""/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="Isivalo %n. %t"/>
+ <l:template name="bridgehead" text="%n. %t"/>
+ <l:template name="chapter" text="Isiqendu %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsection" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="I:&#160;%n"/>
+ <l:template name="appendix" text="Isivalo %n"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="Isiqendu %n"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="Ulinganiselo&#160;%n"/>
+ <l:template name="example" text="Umzekelo %n"/>
+ <l:template name="figure" text="Ulungu %n"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="Inxenye %n"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="Inkqubo&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="U:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="U:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsection" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="Indlela Yokwenza Imigca %n"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="refsection" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="sect2" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="sect3" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="sect4" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="sect5" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="section" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="Icandelo %n"/>
+ <l:template name="refsection" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ <l:template name="sect1" text="Icandelo %n"/>
+ <l:template name="sect2" text="Icandelo %n"/>
+ <l:template name="sect3" text="Icandelo %n"/>
+ <l:template name="sect4" text="Icandelo %n"/>
+ <l:template name="sect5" text="Icandelo %n"/>
+ <l:template name="section" text="Icandelo %n"/>
+ <l:template name="simplesect" text="icandelo libizwa ngokuba &#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=" no "/>
+ <l:template name="sep2" text=" no "/>
+ <l:template name="seplast" text=" no "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="Bona "/>
+ <l:template name="seealso" text="Bona Kwakhona "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="Ababhali: "/>
+ <l:template name="MsgLevel" text="Umphakamo: "/>
+ <l:template name="MsgOrig" text="Uqobo: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_cn.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_cn.xml
new file mode 100644
index 0000000..6754a62
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_cn.xml
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh_cn" english-language-name="Chinese (Continental)">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#25688;&#35201;"/>
+ <l:gentext key="abstract" text="&#25688;&#35201;"/>
+ <l:gentext key="Answer" text="&#31572;:"/>
+ <l:gentext key="answer" text="&#31572;:"/>
+ <l:gentext key="Appendix" text="&#38468;&#24405;"/>
+ <l:gentext key="appendix" text="&#38468;&#24405;"/>
+ <l:gentext key="Article" text="&#25991;&#31456;"/>
+ <l:gentext key="article" text="&#25991;&#31456;"/>
+ <l:gentext key="Bibliography" text="&#21442;&#32771;&#20070;&#30446;"/>
+ <l:gentext key="bibliography" text="&#21442;&#32771;&#20070;&#30446;"/>
+ <l:gentext key="Book" text="&#20070;&#30446;"/>
+ <l:gentext key="book" text="&#20070;&#30446;"/>
+ <l:gentext key="CAUTION" text="&#27880;&#24847;"/>
+ <l:gentext key="Caution" text="&#27880;&#24847;"/>
+ <l:gentext key="caution" text="&#27880;&#24847;"/>
+ <l:gentext key="Chapter" text="&#31456;"/>
+ <l:gentext key="chapter" text="&#31456;"/>
+ <l:gentext key="Colophon" text="Colophon"/>
+ <l:gentext key="colophon" text="Colophon"/>
+ <l:gentext key="Copyright" text="&#29256;&#26435;"/>
+ <l:gentext key="copyright" text="&#29256;&#26435;"/>
+ <l:gentext key="Dedication" text="&#22857;&#29486;"/>
+ <l:gentext key="dedication" text="&#22857;&#29486;"/>
+ <l:gentext key="Edition" text="&#29256;"/>
+ <l:gentext key="edition" text="&#29256;"/>
+ <l:gentext key="Equation" text="&#26041;&#31243;"/>
+ <l:gentext key="equation" text="&#26041;&#31243;"/>
+ <l:gentext key="Example" text="&#20363;&#23376;"/>
+ <l:gentext key="example" text="&#20363;&#23376;"/>
+ <l:gentext key="Figure" text="&#22270;&#24418;"/>
+ <l:gentext key="figure" text="&#22270;&#24418;"/>
+ <l:gentext key="Glossary" text="&#26415;&#35821;&#34920;"/>
+ <l:gentext key="glossary" text="&#26415;&#35821;&#34920;"/>
+ <l:gentext key="GlossSee" text="&#35265;"/>
+ <l:gentext key="glosssee" text="&#35265;"/>
+ <l:gentext key="GlossSeeAlso" text="&#21478;&#35265;"/>
+ <l:gentext key="glossseealso" text="&#21478;&#35265;"/>
+ <l:gentext key="IMPORTANT" text="&#37325;&#35201;"/>
+ <l:gentext key="Important" text="&#37325;&#35201;"/>
+ <l:gentext key="important" text="&#37325;&#35201;"/>
+ <l:gentext key="Index" text="&#32034;&#24341;"/>
+ <l:gentext key="index" text="&#32034;&#24341;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="&#27861;&#24459;&#24067;&#21578;"/>
+ <l:gentext key="legalnotice" text="&#27861;&#24459;&#24067;&#21578;"/>
+ <l:gentext key="MsgAud" text="&#35835;&#32773;"/>
+ <l:gentext key="msgaud" text="&#35835;&#32773;"/>
+ <l:gentext key="MsgLevel" text="&#38590;&#24230;"/>
+ <l:gentext key="msglevel" text="&#38590;&#24230;"/>
+ <l:gentext key="MsgOrig" text="&#20986;&#22788;"/>
+ <l:gentext key="msgorig" text="&#20986;&#22788;"/>
+ <l:gentext key="NOTE" text="&#27880;"/>
+ <l:gentext key="Note" text="&#27880;"/>
+ <l:gentext key="note" text="&#27880;"/>
+ <l:gentext key="Part" text="&#37096;&#20998;"/>
+ <l:gentext key="part" text="&#37096;&#20998;"/>
+ <l:gentext key="Preface" text="&#21069;&#35328;"/>
+ <l:gentext key="preface" text="&#21069;&#35328;"/>
+ <l:gentext key="Procedure" text="&#36807;&#31243;"/>
+ <l:gentext key="procedure" text="&#36807;&#31243;"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="&#20986;&#29256;"/>
+ <l:gentext key="published" text="&#20986;&#29256;"/>
+ <l:gentext key="Question" text="&#38382;:"/>
+ <l:gentext key="question" text="&#38382;:"/>
+ <l:gentext key="RefEntry" text=""/>
+ <l:gentext key="refentry" text=""/>
+ <l:gentext key="Reference" text="&#21442;&#32771;"/>
+ <l:gentext key="reference" text="&#21442;&#32771;"/>
+ <l:gentext key="RefName" text="&#21517;&#23383;"/>
+ <l:gentext key="refname" text="&#21517;&#23383;"/>
+ <l:gentext key="RefSection" text=""/>
+ <l:gentext key="refsection" text=""/>
+ <l:gentext key="RefSynopsisDiv" text="&#22823;&#32434;"/>
+ <l:gentext key="refsynopsisdiv" text="&#22823;&#32434;"/>
+ <l:gentext key="RevHistory" text="&#20462;&#35746;&#21382;&#21490;"/>
+ <l:gentext key="revhistory" text="&#20462;&#35746;&#21382;&#21490;"/>
+ <l:gentext key="Revision" text="&#20462;&#35746;"/>
+ <l:gentext key="revision" text="&#20462;&#35746;"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="&#33410;"/>
+ <l:gentext key="section" text="&#33410;"/>
+ <l:gentext key="See" text="&#35265;"/>
+ <l:gentext key="see" text="&#35265;"/>
+ <l:gentext key="SeeAlso" text="&#21478;&#35265;"/>
+ <l:gentext key="Seealso" text="&#21478;&#35265;"/>
+ <l:gentext key="seealso" text="&#21478;&#35265;"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="SetIndex" text="Set Index"/>
+ <l:gentext key="setindex" text="Set Index"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text="sidebar"/>
+ <l:gentext key="Step" text="&#27493;&#39588;"/>
+ <l:gentext key="step" text="&#27493;&#39588;"/>
+ <l:gentext key="Table" text="&#34920;&#26684;"/>
+ <l:gentext key="table" text="&#34920;&#26684;"/>
+ <l:gentext key="TIP" text="&#25552;&#31034;"/>
+ <l:gentext key="Tip" text="&#25552;&#31034;"/>
+ <l:gentext key="tip" text="&#25552;&#31034;"/>
+ <l:gentext key="WARNING" text="&#35686;&#21578;"/>
+ <l:gentext key="Warning" text="&#35686;&#21578;"/>
+ <l:gentext key="warning" text="&#35686;&#21578;"/>
+ <l:gentext key="and" text="&#21644;"/>
+ <l:gentext key="by" text="&#30001;"/>
+ <l:gentext key="Edited" text="&#32534;&#36753;"/>
+ <l:gentext key="edited" text="&#32534;&#36753;"/>
+ <l:gentext key="Editedby" text="&#32534;&#36753;"/>
+ <l:gentext key="editedby" text="&#32534;&#36753;"/>
+ <l:gentext key="in" text="&#22312;"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="&#19981;&#23384;&#22312;&#30340;&#20803;&#32032;"/>
+ <l:gentext key="Notes" text="&#27880;"/>
+ <l:gentext key="notes" text="&#27880;"/>
+ <l:gentext key="Pgs" text="&#39029;"/>
+ <l:gentext key="pgs" text="&#39029;"/>
+ <l:gentext key="Revisedby" text="&#20462;&#35746;"/>
+ <l:gentext key="revisedby" text="&#20462;&#35746;"/>
+ <l:gentext key="TableNotes" text="&#27880;"/>
+ <l:gentext key="tablenotes" text="&#27880;"/>
+ <l:gentext key="TableofContents" text="&#30446;&#24405;"/>
+ <l:gentext key="tableofcontents" text="&#30446;&#24405;"/>
+ <l:gentext key="unexpectedelementname" text="&#26410;&#39044;&#26009;&#21040;&#30340;&#20803;&#32032;&#21517;"/>
+ <l:gentext key="unsupported" text="&#19981;&#25903;&#25345;"/>
+ <l:gentext key="xrefto" text="&#21442;&#29031;"/>
+ <l:gentext key="ListofEquations" text="&#26041;&#31243;&#24335;&#21015;&#34920;"/>
+ <l:gentext key="listofequations" text="&#26041;&#31243;&#24335;&#21015;&#34920;"/>
+ <l:gentext key="ListofExamples" text="&#31034;&#20363;&#21015;&#34920;"/>
+ <l:gentext key="listofexamples" text="&#31034;&#20363;&#21015;&#34920;"/>
+ <l:gentext key="ListofFigures" text="&#22270;&#24418;&#21015;&#34920;"/>
+ <l:gentext key="listoffigures" text="&#22270;&#24418;&#21015;&#34920;"/>
+ <l:gentext key="ListofTables" text="&#34920;&#26684;&#21015;&#34920;"/>
+ <l:gentext key="listoftables" text="&#34920;&#26684;&#21015;&#34920;"/>
+ <l:gentext key="ListofUnknown" text="&#20854;&#20182;&#20869;&#23481;&#21015;&#34920;"/>
+ <l:gentext key="listofunknown" text="&#20854;&#20182;&#20869;&#23481;&#21015;&#34920;"/>
+ <l:gentext key="nav-home" text="&#36215;&#28857;"/>
+ <l:gentext key="nav-next" text="&#21069;&#36827;"/>
+ <l:gentext key="nav-next-sibling" text="&#24555;&#36895;&#21069;&#36827;"/>
+ <l:gentext key="nav-prev" text="&#21518;&#36864;"/>
+ <l:gentext key="nav-prev-sibling" text="&#24555;&#36895;&#21518;&#36864;"/>
+ <l:gentext key="nav-up" text="&#19978;&#19968;&#32423;"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:dingbat key="startquote" text="&#34;"/>
+ <l:dingbat key="endquote" text="&#34;"/>
+ <l:dingbat key="nestedstartquote" text="'"/>
+ <l:dingbat key="nestedendquote" text="'"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#38468;&#24405; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#31456; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#26041;&#31243; %n. %t"/>
+ <l:template name="example" text="&#20363;&#23376; %n. %t"/>
+ <l:template name="figure" text="&#22270;&#24418; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#37096;&#20998; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#36807;&#31243;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#34920;&#26684; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#38468;&#24405; %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="&#31456; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#31572;:&#160;%n"/>
+ <l:template name="appendix" text="&#38468;&#24405; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#31456; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#26041;&#31243;&#160;%n"/>
+ <l:template name="example" text="&#20363;&#23376; %n. %t"/>
+ <l:template name="figure" text="&#22270;&#24418; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#37096;&#20998; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#36807;&#31243;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#38382;:&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#38382;:&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#34920;&#26684; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#33410; %n"/>
+ <l:template name="sect2" text="&#33410; %n"/>
+ <l:template name="sect3" text="&#33410; %n"/>
+ <l:template name="sect4" text="&#33410; %n"/>
+ <l:template name="sect5" text="&#33410; %n"/>
+ <l:template name="section" text="&#33410; %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#21644; "/>
+ <l:template name="seplast" text=", &#21644; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#35265; "/>
+ <l:template name="seealso" text="&#21478;&#35265; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#35835;&#32773;: "/>
+ <l:template name="MsgLevel" text="&#38590;&#24230;: "/>
+ <l:template name="MsgOrig" text="&#20986;&#22788;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_tw.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_tw.xml
new file mode 100644
index 0000000..13a24af
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/l10n/zh_tw.xml
@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh_tw" english-language-name="Chinese (Traditional)">
+
+<!-- This file is generated automatically. -->
+<!-- Do not edit this file by hand! -->
+<!-- See http://docbook.sourceforge.net/ -->
+<!-- To update this file: edit the corresponding document at -->
+<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ -->
+
+ <l:gentext key="Abstract" text="&#25688;&#35201;"/>
+ <l:gentext key="abstract" text="&#25688;&#35201;"/>
+ <l:gentext key="Answer" text="&#31572;&#65306;"/>
+ <l:gentext key="answer" text="&#31572;&#65306;"/>
+ <l:gentext key="Appendix" text="&#38468;&#37636;"/>
+ <l:gentext key="appendix" text="&#38468;&#37636;"/>
+ <l:gentext key="Article" text="&#25991;&#31456;"/>
+ <l:gentext key="article" text="&#25991;&#31456;"/>
+ <l:gentext key="Bibliography" text="&#21443;&#32771;&#25991;&#29563;"/>
+ <l:gentext key="bibliography" text="&#21443;&#32771;&#25991;&#29563;"/>
+ <l:gentext key="Book" text="&#26360;&#30446;"/>
+ <l:gentext key="book" text="&#26360;&#30446;"/>
+ <l:gentext key="CAUTION" text="&#27880;&#24847;"/>
+ <l:gentext key="Caution" text="&#27880;&#24847;"/>
+ <l:gentext key="caution" text="&#27880;&#24847;"/>
+ <l:gentext key="Chapter" text="&#31456;"/>
+ <l:gentext key="chapter" text="&#31456;"/>
+ <l:gentext key="Colophon" text="&#29256;&#26412;&#35352;&#37636;"/>
+ <l:gentext key="colophon" text="&#29256;&#26412;&#35352;&#37636;"/>
+ <l:gentext key="Copyright" text="&#29256;&#27402;"/>
+ <l:gentext key="copyright" text="&#29256;&#27402;"/>
+ <l:gentext key="Dedication" text="&#22857;&#29563;"/>
+ <l:gentext key="dedication" text="&#22857;&#29563;"/>
+ <l:gentext key="Edition" text="&#29256;"/>
+ <l:gentext key="edition" text="&#29256;"/>
+ <l:gentext key="Equation" text="&#26041;&#31243;&#24335;"/>
+ <l:gentext key="equation" text="&#26041;&#31243;&#24335;"/>
+ <l:gentext key="Example" text="&#31684;&#20363;"/>
+ <l:gentext key="example" text="&#31684;&#20363;"/>
+ <l:gentext key="Figure" text="&#22294;&#24418;"/>
+ <l:gentext key="figure" text="&#22294;&#24418;"/>
+ <l:gentext key="Glossary" text="&#23567;&#36781;&#24409;"/>
+ <l:gentext key="glossary" text="&#23567;&#36781;&#24409;"/>
+ <l:gentext key="GlossSee" text="&#21443;&#35211;"/>
+ <l:gentext key="glosssee" text="&#21443;&#35211;"/>
+ <l:gentext key="GlossSeeAlso" text="&#21478;&#21443;&#35211;"/>
+ <l:gentext key="glossseealso" text="&#21478;&#21443;&#35211;"/>
+ <l:gentext key="IMPORTANT" text="&#37325;&#35201;"/>
+ <l:gentext key="Important" text="&#37325;&#35201;"/>
+ <l:gentext key="important" text="&#37325;&#35201;"/>
+ <l:gentext key="Index" text="&#32034;&#24341;"/>
+ <l:gentext key="index" text="&#32034;&#24341;"/>
+ <l:gentext key="ISBN" text="ISBN"/>
+ <l:gentext key="isbn" text="ISBN"/>
+ <l:gentext key="LegalNotice" text="&#27861;&#24459;&#32882;&#26126;"/>
+ <l:gentext key="legalnotice" text="&#27861;&#24459;&#32882;&#26126;"/>
+ <l:gentext key="MsgAud" text="&#35712;&#32773;"/>
+ <l:gentext key="msgaud" text="&#35712;&#32773;"/>
+ <l:gentext key="MsgLevel" text="&#31243;&#24230;"/>
+ <l:gentext key="msglevel" text="&#31243;&#24230;"/>
+ <l:gentext key="MsgOrig" text="&#20986;&#34389;"/>
+ <l:gentext key="msgorig" text="&#20986;&#34389;"/>
+ <l:gentext key="NOTE" text="&#27880;"/>
+ <l:gentext key="Note" text="&#27880;"/>
+ <l:gentext key="note" text="&#27880;"/>
+ <l:gentext key="Part" text="&#37096;"/>
+ <l:gentext key="part" text="&#37096;"/>
+ <l:gentext key="Preface" text="&#24207;&#35328;"/>
+ <l:gentext key="preface" text="&#24207;&#35328;"/>
+ <l:gentext key="Procedure" text="&#36942;&#31243;"/>
+ <l:gentext key="procedure" text="&#36942;&#31243;"/>
+ <l:gentext key="ProductionSet" text="Production"/>
+ <l:gentext key="Published" text="&#20986;&#29256;"/>
+ <l:gentext key="published" text="&#20986;&#29256;"/>
+ <l:gentext key="Question" text="&#21839;&#65306;"/>
+ <l:gentext key="question" text="&#21839;&#65306;"/>
+ <l:gentext key="RefEntry" text="&#21443;&#29031;&#38917;&#30446;"/>
+ <l:gentext key="refentry" text="&#21443;&#29031;&#38917;&#30446;"/>
+ <l:gentext key="Reference" text="&#21443;&#32771;"/>
+ <l:gentext key="reference" text="&#21443;&#32771;"/>
+ <l:gentext key="RefName" text="&#21443;&#32771;&#21517;"/>
+ <l:gentext key="refname" text="&#21443;&#32771;&#21517;"/>
+ <l:gentext key="RefSection" text="&#21443;&#29031;&#31456;&#31680;"/>
+ <l:gentext key="refsection" text="&#21443;&#29031;&#31456;&#31680;"/>
+ <l:gentext key="RefSynopsisDiv" text="&#22823;&#32177;"/>
+ <l:gentext key="refsynopsisdiv" text="&#22823;&#32177;"/>
+ <l:gentext key="RevHistory" text="&#20462;&#35330;&#35352;&#37636;"/>
+ <l:gentext key="revhistory" text="&#20462;&#35330;&#35352;&#37636;"/>
+ <l:gentext key="Revision" text="&#20462;&#35330;"/>
+ <l:gentext key="revision" text="&#20462;&#35330;"/>
+ <l:gentext key="sect1" text="Section"/>
+ <l:gentext key="sect2" text="Section"/>
+ <l:gentext key="sect3" text="Section"/>
+ <l:gentext key="sect4" text="Section"/>
+ <l:gentext key="sect5" text="Section"/>
+ <l:gentext key="Section" text="&#31680;"/>
+ <l:gentext key="section" text="&#31680;"/>
+ <l:gentext key="See" text="&#35211;"/>
+ <l:gentext key="see" text="&#35211;"/>
+ <l:gentext key="SeeAlso" text="&#21478;&#35211;"/>
+ <l:gentext key="Seealso" text="&#21478;&#35211;"/>
+ <l:gentext key="seealso" text="&#21478;&#35211;"/>
+ <l:gentext key="Set" text="Set"/>
+ <l:gentext key="set" text="Set"/>
+ <l:gentext key="SetIndex" text="Set Index"/>
+ <l:gentext key="setindex" text="Set Index"/>
+ <l:gentext key="Sidebar" text=""/>
+ <l:gentext key="sidebar" text=""/>
+ <l:gentext key="Step" text="&#27493;&#39519;"/>
+ <l:gentext key="step" text="&#27493;&#39519;"/>
+ <l:gentext key="Table" text="&#34920;&#26684;"/>
+ <l:gentext key="table" text="&#34920;&#26684;"/>
+ <l:gentext key="TIP" text="&#25552;&#31034;"/>
+ <l:gentext key="Tip" text="&#25552;&#31034;"/>
+ <l:gentext key="tip" text="&#25552;&#31034;"/>
+ <l:gentext key="WARNING" text="&#35686;&#21578;"/>
+ <l:gentext key="Warning" text="&#35686;&#21578;"/>
+ <l:gentext key="warning" text="&#35686;&#21578;"/>
+ <l:gentext key="edited" text="&#32232;&#36655;"/>
+ <l:gentext key="Edited" text="&#32232;&#36655;"/>
+ <l:gentext key="editedby" text="&#32232;&#36655;"/>
+ <l:gentext key="Editedby" text="&#32232;&#36655;"/>
+ <l:gentext key="Notes" text="&#27880;"/>
+ <l:gentext key="notes" text="&#27880;"/>
+ <l:gentext key="Pgs" text="&#38913;"/>
+ <l:gentext key="pgs" text="&#38913;"/>
+ <l:gentext key="Revisedby" text="&#20462;&#35330;"/>
+ <l:gentext key="revisedby" text="&#20462;&#35330;"/>
+ <l:gentext key="TableNotes" text="&#27880;&#37323;"/>
+ <l:gentext key="tablenotes" text="&#27880;&#37323;"/>
+ <l:gentext key="TableofContents" text="&#20839;&#23481;&#30446;&#37636;"/>
+ <l:gentext key="tableofcontents" text="&#20839;&#23481;&#30446;&#37636;"/>
+ <l:gentext key="and" text="&#19988;"/>
+ <l:gentext key="by" text="&#30001;"/>
+ <l:gentext key="in" text="&#22312;"/>
+ <l:gentext key="lastlistcomma" text=","/>
+ <l:gentext key="listcomma" text=","/>
+ <l:gentext key="nonexistantelement" text="&#19981;&#23384;&#22312;&#30340;&#20803;&#32032;"/>
+ <l:gentext key="page.citation" text="&#38913;"/>
+ <l:gentext key="unexpectedelementname" text="&#38750;&#38928;&#26399;&#30340;&#20803;&#32032;&#21517;"/>
+ <l:gentext key="unsupported" text="&#26410;&#25903;&#25588;"/>
+ <l:gentext key="xrefto" text="&#21443;&#29031;"/>
+ <l:gentext key="ListofEquations" text="&#20844;&#24335;&#30446;&#37636;"/>
+ <l:gentext key="listofequations" text="&#20844;&#24335;&#30446;&#37636;"/>
+ <l:gentext key="ListofExamples" text="&#31684;&#20363;&#30446;&#37636;"/>
+ <l:gentext key="listofexamples" text="&#31684;&#20363;&#30446;&#37636;"/>
+ <l:gentext key="ListofFigures" text="&#38468;&#22294;&#30446;&#37636;"/>
+ <l:gentext key="listoffigures" text="&#38468;&#22294;&#30446;&#37636;"/>
+ <l:gentext key="ListofTables" text="&#38468;&#34920;&#30446;&#37636;"/>
+ <l:gentext key="listoftables" text="&#38468;&#34920;&#30446;&#37636;"/>
+ <l:gentext key="ListofUnknown" text="&#20854;&#23427;&#20839;&#23481;&#30446;&#37636;"/>
+ <l:gentext key="listofunknown" text="&#20854;&#23427;&#20839;&#23481;&#30446;&#37636;"/>
+ <l:gentext key="nav-home" text="&#20839;&#23481;"/>
+ <l:gentext key="nav-next" text="&#19979;&#19968;&#38913;"/>
+ <l:gentext key="nav-next-sibling" text="&#24555;&#36895;&#21521;&#24460;"/>
+ <l:gentext key="nav-prev" text="&#21069;&#19968;&#38913;"/>
+ <l:gentext key="nav-prev-sibling" text="&#24555;&#36895;&#21521;&#21069;"/>
+ <l:gentext key="nav-up" text="&#19978;&#19968;&#23652;"/>
+ <l:gentext key="sectioncalled" text="the section called"/>
+ <l:gentext key="Draft" text="Draft"/>
+ <l:gentext key="above" text="above"/>
+ <l:gentext key="below" text="below"/>
+ <l:gentext key="index symbols" text="Symbols"/>
+ <l:dingbat key="startquote" text="&#34;"/>
+ <l:dingbat key="endquote" text="&#34;"/>
+ <l:dingbat key="nestedstartquote" text="'"/>
+ <l:dingbat key="nestedendquote" text="'"/>
+ <l:dingbat key="bullet" text="&#8226;"/>
+
+ <l:gentext key="itemizedlist" text=""/>
+ <l:gentext key="variablelist" text=""/>
+ <l:gentext key="procedure" text=""/>
+
+ <l:context name="empty">
+ <l:template name="appendix" text="Appendix Titles (empty)"/>
+ <l:template name="article" text="Article Titles (empty)"/>
+ <l:template name="bibliodiv" text="Bibliodiv Titles (empty)"/>
+ <l:template name="book" text="Book Titles (empty)"/>
+ <l:template name="chapter" text="Chapter Titles (empty)"/>
+ <l:template name="columns" text="Columns"/>
+ <l:template name="draftarea" text="Draft area for"/>
+ <l:template name="edit-attrs" text="edit attributes of corresponding elements"/>
+ <l:template name="footnote" text="Footnote"/>
+ <l:template name="metainfo" text="metainfo"/>
+ <l:template name="preface" text="Preface Titles (empty)"/>
+ <l:template name="part" text="Part Titles (empty)"/>
+ <l:template name="section" text="Section Titles (empty)"/>
+ <l:template name="sect1" text="Section Titles (empty)"/>
+ <l:template name="sect2" text="Section Titles (empty)"/>
+ <l:template name="sect3" text="Section Titles (empty)"/>
+ <l:template name="sect4" text="Section Titles (empty)"/>
+ <l:template name="sect5" text="Section Titles (empty)"/>
+ <l:template name="set" text="Set Titles (empty)"/>
+ <l:template name="title" text="Title: "/>
+ <l:template name="titles" text="No Titlepage Elements"/>
+ <l:template name="glossary" text="Glossary Titles (empty)"/>
+ </l:context>
+
+ <l:context name="styles">
+ <l:template name="person-name" text="first-last"/>
+ </l:context>
+
+ <l:context name="title">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="%t"/>
+ <l:template name="appendix" text="&#38468;&#37636; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="biblioentry" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomixed" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#31456; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#26041;&#31243;&#24335; %n. %t"/>
+ <l:template name="example" text="&#31684;&#20363; %n. %t"/>
+ <l:template name="figure" text="&#22294;&#24418; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text=""/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#37096; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="%t"/>
+ <l:template name="procedure.formal" text="&#36942;&#31243;&#160;%n.&#160;%t"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="productionset.formal" text="Production&#160;%n"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="%t"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="%t"/>
+ <l:template name="refentry" text="%t"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="refsynopsisdivinfo" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="step" text="%t"/>
+ <l:template name="table" text="&#34920;&#26684; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="warning" text="%t"/>
+ </l:context>
+
+ <l:context name="title-unnumbered">
+ <l:template name="appendix" text="%t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="%t"/>
+ <l:template name="sect1" text="%t"/>
+ <l:template name="sect2" text="%t"/>
+ <l:template name="sect3" text="%t"/>
+ <l:template name="sect4" text="%t"/>
+ <l:template name="sect5" text="%t"/>
+ <l:template name="section" text="%t"/>
+ <l:template name="simplesect" text="%t"/>
+ </l:context>
+
+ <l:context name="title-numbered">
+ <l:template name="appendix" text="&#38468;&#37636; %n. %t"/>
+ <l:template name="bridgehead" text="%t"/>
+ <l:template name="chapter" text="&#31456; %n. %t"/>
+ <l:template name="sect1" text="%n. %t"/>
+ <l:template name="sect2" text="%n. %t"/>
+ <l:template name="sect3" text="%n. %t"/>
+ <l:template name="sect4" text="%n. %t"/>
+ <l:template name="sect5" text="%n. %t"/>
+ <l:template name="section" text="%n. %t"/>
+ <l:template name="simplesect" text="%n. %t"/>
+ </l:context>
+
+ <l:context name="subtitle">
+ <l:template name="appendix" text="%s"/>
+ <l:template name="article" text="%s"/>
+ <l:template name="bibliodiv" text="%s"/>
+ <l:template name="biblioentry" text="%s"/>
+ <l:template name="bibliography" text="%s"/>
+ <l:template name="bibliomixed" text="%s"/>
+ <l:template name="bibliomset" text="%s"/>
+ <l:template name="biblioset" text="%s"/>
+ <l:template name="book" text="%s"/>
+ <l:template name="chapter" text="%s"/>
+ <l:template name="colophon" text="%s"/>
+ <l:template name="dedication" text="%s"/>
+ <l:template name="glossary" text="%s"/>
+ <l:template name="glossdiv" text="%s"/>
+ <l:template name="index" text="%s"/>
+ <l:template name="indexdiv" text="%s"/>
+ <l:template name="lot" text="%s"/>
+ <l:template name="part" text="%s"/>
+ <l:template name="partintro" text="%s"/>
+ <l:template name="preface" text="%s"/>
+ <l:template name="refentry" text="%s"/>
+ <l:template name="reference" text="%s"/>
+ <l:template name="refsect1" text="%s"/>
+ <l:template name="refsect2" text="%s"/>
+ <l:template name="refsect3" text="%s"/>
+ <l:template name="refsynopsisdiv" text="%s"/>
+ <l:template name="sect1" text="%s"/>
+ <l:template name="sect2" text="%s"/>
+ <l:template name="sect3" text="%s"/>
+ <l:template name="sect4" text="%s"/>
+ <l:template name="sect5" text="%s"/>
+ <l:template name="section" text="%s"/>
+ <l:template name="set" text="%s"/>
+ <l:template name="setindex" text="%s"/>
+ <l:template name="sidebar" text="%s"/>
+ <l:template name="simplesect" text="%s"/>
+ <l:template name="toc" text="%s"/>
+ </l:context>
+
+ <l:context name="xref">
+ <l:template name="abstract" text="%t"/>
+ <l:template name="answer" text="&#31572;&#65306;&#160;%n"/>
+ <l:template name="appendix" text="&#38468;&#37636; %n. %t"/>
+ <l:template name="article" text="%t"/>
+ <l:template name="authorblurb" text="%t"/>
+ <l:template name="bibliodiv" text="%t"/>
+ <l:template name="bibliography" text="%t"/>
+ <l:template name="bibliomset" text="%t"/>
+ <l:template name="biblioset" text="%t"/>
+ <l:template name="blockquote" text="%t"/>
+ <l:template name="book" text="%t"/>
+ <l:template name="calloutlist" text="%t"/>
+ <l:template name="caution" text="%t"/>
+ <l:template name="chapter" text="&#31456; %n. %t"/>
+ <l:template name="colophon" text="%t"/>
+ <l:template name="constraintdef" text="%t"/>
+ <l:template name="dedication" text="%t"/>
+ <l:template name="equation" text="&#26041;&#31243;&#24335;&#160;%n"/>
+ <l:template name="example" text="&#31684;&#20363; %n. %t"/>
+ <l:template name="figure" text="&#22294;&#24418; %n. %t"/>
+ <l:template name="formalpara" text="%t"/>
+ <l:template name="glossary" text="%t"/>
+ <l:template name="glossdiv" text="%t"/>
+ <l:template name="important" text="%t"/>
+ <l:template name="index" text="%t"/>
+ <l:template name="indexdiv" text="%t"/>
+ <l:template name="itemizedlist" text="%t"/>
+ <l:template name="legalnotice" text="%t"/>
+ <l:template name="listitem" text="%n"/>
+ <l:template name="lot" text="%t"/>
+ <l:template name="msg" text="%t"/>
+ <l:template name="msgexplan" text="%t"/>
+ <l:template name="msgmain" text="%t"/>
+ <l:template name="msgrel" text="%t"/>
+ <l:template name="msgset" text="%t"/>
+ <l:template name="msgsub" text="%t"/>
+ <l:template name="note" text="%t"/>
+ <l:template name="orderedlist" text="%t"/>
+ <l:template name="part" text="&#37096; %n. %t"/>
+ <l:template name="partintro" text="%t"/>
+ <l:template name="preface" text="%t"/>
+ <l:template name="procedure" text="&#36942;&#31243;&#160;%n"/>
+ <l:template name="productionset" text="%t"/>
+ <l:template name="qandadiv" text="%t"/>
+ <l:template name="qandaentry" text="&#21839;&#65306;&#160;%n"/>
+ <l:template name="qandaset" text="%t"/>
+ <l:template name="question" text="&#21839;&#65306;&#160;%n"/>
+ <l:template name="reference" text="%t"/>
+ <l:template name="refsect1" text="%t"/>
+ <l:template name="refsect2" text="%t"/>
+ <l:template name="refsect3" text="%t"/>
+ <l:template name="refsynopsisdiv" text="%t"/>
+ <l:template name="segmentedlist" text="%t"/>
+ <l:template name="set" text="%t"/>
+ <l:template name="setindex" text="%t"/>
+ <l:template name="sidebar" text="%t"/>
+ <l:template name="table" text="&#34920;&#26684; %n. %t"/>
+ <l:template name="tip" text="%t"/>
+ <l:template name="toc" text="%t"/>
+ <l:template name="variablelist" text="%t"/>
+ <l:template name="varlistentry" text="%n"/>
+ <l:template name="warning" text="%t"/>
+ <l:template name="page.citation" text=" [%p]"/>
+ </l:context>
+
+ <l:context name="section-xref">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#8220;%t&#8221;"/>
+ <l:template name="sect2" text="&#8220;%t&#8221;"/>
+ <l:template name="sect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect4" text="&#8220;%t&#8221;"/>
+ <l:template name="sect5" text="&#8220;%t&#8221;"/>
+ <l:template name="section" text="&#8220;%t&#8221;"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="section-xref-numbered">
+ <l:template name="bridgehead" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect1" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect2" text="&#8220;%t&#8221;"/>
+ <l:template name="refsect3" text="&#8220;%t&#8221;"/>
+ <l:template name="sect1" text="&#31680; %n"/>
+ <l:template name="sect2" text="&#31680; %n"/>
+ <l:template name="sect3" text="&#31680; %n"/>
+ <l:template name="sect4" text="&#31680; %n"/>
+ <l:template name="sect5" text="&#31680; %n"/>
+ <l:template name="section" text="&#31680; %n"/>
+ <l:template name="simplesect" text="&#8220;%t&#8221;"/>
+ </l:context>
+
+ <l:context name="authorgroup">
+ <l:template name="sep" text=", "/>
+ <l:template name="sep2" text=" &#19988; "/>
+ <l:template name="seplast" text=", &#19988; "/>
+ </l:context>
+
+ <l:context name="glossary">
+ <l:template name="see" text="&#21443;&#35211; "/>
+ <l:template name="seealso" text="&#21478;&#21443;&#35211; "/>
+ </l:context>
+
+ <l:context name="msgset">
+ <l:template name="MsgAud" text="&#35712;&#32773;: "/>
+ <l:template name="MsgLevel" text="&#31243;&#24230;: "/>
+ <l:template name="MsgOrig" text="&#20986;&#34389;: "/>
+ </l:context>
+</l:l10n>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/lists.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/lists.xsl
new file mode 100644
index 0000000..c1fd19c
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/lists.xsl
@@ -0,0 +1,803 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="xse dtm"
+ version='1.0'>
+
+ <!-- TODO: move to params -->
+ <xsl:variable name="label-width">1.5em</xsl:variable>
+ <xsl:variable name="presentation"></xsl:variable>
+ <xsl:variable name="term-width">10em</xsl:variable>
+
+ <!-- TODO: Move to common -->
+<dtm:doc dtm:idref="next.itemsymbol"/>
+<xsl:template name="next.itemsymbol" dtm:id="next.itemsymbol">
+ <xsl:param name="itemsymbol" select="'default'"/>
+ <xsl:choose>
+ <!-- Change this list if you want to change the order of symbols -->
+ <xsl:when test="$itemsymbol = 'disc'">circle</xsl:when>
+ <xsl:when test="$itemsymbol = 'round'">square</xsl:when>
+ <xsl:otherwise>disc</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="list.itemsymbol"/>
+<xsl:template name="list.itemsymbol" dtm:id="list.itemsymbol">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$node/@mark">
+ <xsl:value-of select="$node/@mark"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$node/ancestor::itemizedlist">
+ <xsl:call-template name="next.itemsymbol">
+ <xsl:with-param name="itemsymbol">
+ <xsl:call-template name="list.itemsymbol">
+ <xsl:with-param name="node" select="$node/ancestor::itemizedlist[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="next.itemsymbol"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="next.numeration"/>
+<xsl:template name="next.numeration" dtm:id="next.numeration">
+ <xsl:param name="numeration" select="'default'"/>
+ <xsl:choose>
+ <!-- Change this list if you want to change the order of numerations -->
+ <xsl:when test="$numeration = 'arabic'">loweralpha</xsl:when>
+ <xsl:when test="$numeration = 'loweralpha'">lowerroman</xsl:when>
+ <xsl:when test="$numeration = 'lowerroman'">upperalpha</xsl:when>
+ <xsl:when test="$numeration = 'upperalpha'">upperroman</xsl:when>
+ <xsl:when test="$numeration = 'upperroman'">arabic</xsl:when>
+ <xsl:otherwise>arabic</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="list.numeration"/>
+<xsl:template name="list.numeration" dtm:id="list.numeration">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$node/@numeration">
+ <xsl:value-of select="$node/@numeration"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$node/ancestor::orderedlist">
+ <xsl:call-template name="next.numeration">
+ <xsl:with-param name="numeration">
+ <xsl:call-template name="list.numeration">
+ <xsl:with-param name="node" select="$node/ancestor::orderedlist[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="next.numeration"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="itemizedlist"/>
+<xsl:template match="itemizedlist" dtm:id="itemizedlist">
+ <fo:block xsl:use-attribute-sets="list.block.spacing">
+ <xsl:apply-templates
+ select="title[not(self::processing-instruction('se:choice'))]"
+ mode="plain.formal.title.mode"/>
+
+ <xsl:variable name="itemsymbol">
+ <xsl:call-template name="list.itemsymbol">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="itemchar">
+ <xsl:choose>
+ <xsl:when test="$itemsymbol='disc'">&#x2022;</xsl:when>
+ <xsl:when test="$itemsymbol='bullet'">&#x2022;</xsl:when>
+ <!-- why do these symbols not work? -->
+ <!--
+ <xsl:when test="$itemsymbol='circle'">&#x2218;</xsl:when>
+ <xsl:when test="$itemsymbol='round'">&#x2218;</xsl:when>
+ <xsl:when test="$itemsymbol='square'">&#x2610;</xsl:when>
+ <xsl:when test="$itemsymbol='box'">&#x2610;</xsl:when>
+ -->
+ <xsl:otherwise>&#x2022;</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:apply-templates select="*[not(self::listitem or self::title)]"/>
+
+ <fo:list-block provisional-label-separation="0.2em"
+ provisional-distance-between-starts="{$label-width}">
+ <xsl:apply-templates select="listitem">
+ <xsl:with-param name="itemsymbol" select="$itemchar"/>
+ </xsl:apply-templates>
+ </fo:list-block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.lists"/>
+<xsl:template match="itemizedlist/title|orderedlist/title" dtm:id="title.lists"/>
+
+<dtm:doc dtm:idref="listitem.itemizedlist"/>
+<xsl:template match="itemizedlist/listitem" dtm:id="listitem.itemizedlist">
+ <xsl:param name="itemsymbol"/>
+
+ <xsl:choose>
+ <xsl:when test="parent::*/@spacing = 'compact'">
+ <fo:list-item xsl:use-attribute-sets="compact.list.item.spacing">
+ <xsl:call-template name="itemizedlist.item.contents">
+ <xsl:with-param name="itemsymbol" select="$itemsymbol"/>
+ </xsl:call-template>
+ </fo:list-item>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <xsl:call-template name="itemizedlist.item.contents">
+ <xsl:with-param name="itemsymbol" select="$itemsymbol"/>
+ </xsl:call-template>
+ </fo:list-item>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="itemizedlist.item.contents"/>
+<xsl:template name="itemizedlist.item.contents" dtm:id="itemizedlist.item.contents">
+ <xsl:param name="itemsymbol"/>
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <xsl:value-of select="$itemsymbol"/>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:list-item-body>
+</xsl:template>
+
+<dtm:doc dtm:idref="orderedlist"/>
+<xsl:template match="orderedlist" dtm:id="orderedlist">
+ <fo:block>
+ <xsl:apply-templates
+ select="title[not(self::processing-instruction('se:choice'))]"
+ mode="plain.formal.title.mode"/>
+
+ <xsl:variable name="starting.number">
+ <xsl:call-template name="orderedlist-starting-number"/>
+ </xsl:variable>
+
+ <xsl:apply-templates select="*[not(self::listitem or self::title)]"/>
+
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-label-separation="0.2em"
+ provisional-distance-between-starts="{$label-width}">
+ <xsl:if test="$numeration='upperroman'">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:value-of select="concat($label-width, '+1em')"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="listitem">
+ <xsl:with-param name="starting.number" select="$starting.number"/>
+ <xsl:with-param name="numeration" select="$numeration"/>
+ </xsl:apply-templates>
+ </fo:list-block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="listitem.orderedlist.item-number"/>
+<xsl:template match="orderedlist/listitem" mode="item-number" dtm:id="listitem.orderedlist.item-number">
+ <xsl:param name="starting.number"/>
+ <xsl:param name="numeration"/>
+
+ <xsl:variable name="item-number">
+ <xsl:choose>
+ <xsl:when test="$use-serna-extensions">
+ <xsl:value-of
+ select="xse:docbook-orderedlist-itemnumber($starting.number)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="orderedlist-item-number">
+ <xsl:with-param name="starting.number" select="$starting.number"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="parent::orderedlist/@inheritnum='inherit'
+ and ancestor::listitem[parent::orderedlist]">
+ <xsl:apply-templates select="ancestor::listitem[parent::orderedlist][1]"
+ mode="item-number">
+ <xsl:with-param name="starting.number" select="$starting.number"/>
+ <xsl:with-param name="numeration" select="$numeration"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">
+ <xsl:number value="$item-number" format="1."/>
+ </xsl:when>
+ <xsl:when test="$numeration='loweralpha'">
+ <xsl:number value="$item-number" format="a."/>
+ </xsl:when>
+ <xsl:when test="$numeration='lowerroman'">
+ <xsl:number value="$item-number" format="i."/>
+ </xsl:when>
+ <xsl:when test="$numeration='upperalpha'">
+ <xsl:number value="$item-number" format="A."/>
+ </xsl:when>
+ <xsl:when test="$numeration='upperroman'">
+ <xsl:number value="$item-number" format="I."/>
+ </xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:text>Unexpected: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ <xsl:value-of select="1."/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="listitem.orderedlist"/>
+<xsl:template match="orderedlist/listitem" dtm:id="listitem.orderedlist">
+ <xsl:param name="starting.number"/>
+ <xsl:param name="numeration"/>
+
+ <xsl:choose>
+ <xsl:when test="parent::*/@spacing = 'compact'">
+ <fo:list-item xsl:use-attribute-sets="compact.list.item.spacing">
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <xsl:apply-templates select="." mode="item-number">
+ <xsl:with-param name="starting.number"
+ select="$starting.number"/>
+ <xsl:with-param name="numeration" select="$numeration"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:apply-templates/>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <xsl:apply-templates select="." mode="item-number">
+ <xsl:with-param name="starting.number"
+ select="$starting.number"/>
+ <xsl:with-param name="numeration" select="$numeration"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:apply-templates/>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="orderedlist-starting-number"/>
+<xsl:template name="orderedlist-starting-number" dtm:id="orderedlist-starting-number">
+ <xsl:param name="list" select="."/>
+ <xsl:choose>
+ <xsl:when test="not($list/@continuation = 'continues')">1</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlist"
+ select="$list/preceding::orderedlist[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($prevlist) = 0">2</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlength" select="count($prevlist/listitem)"/>
+ <xsl:variable name="prevstart">
+ <xsl:call-template name="orderedlist-starting-number">
+ <xsl:with-param name="list" select="$prevlist"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prevstart + $prevlength + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="orderedlist-item-number"/>
+<xsl:template name="orderedlist-item-number" dtm:id="orderedlist-item-number">
+ <!-- context node must be a listitem in an orderedlist -->
+ <xsl:param name="node" select="."/>
+ <xsl:param name="starting.number"/>
+
+ <xsl:choose>
+ <xsl:when test="$node/@override">
+ <xsl:value-of select="$node/@override"/>
+ </xsl:when>
+ <xsl:when test="$node/preceding-sibling::listitem">
+ <xsl:variable name="pnum">
+ <xsl:call-template name="orderedlist-item-number">
+ <xsl:with-param name="node"
+ select="$node/preceding-sibling::listitem[1]"/>
+ <xsl:with-param name="starting.number" select="$starting.number"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$pnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$starting.number"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="variablelist"/>
+<xsl:template match="variablelist" dtm:id="variablelist">
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates select="." mode="vl.as.list"/>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks'">
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+ </xsl:when>
+ <xsl:when test="$variablelist.as.blocks">
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="vl.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.variablelist.vl-as-list"/>
+<xsl:template match="variablelist/title" mode="vl.as.list" dtm:id="title.variablelist.vl-as-list"/>
+
+<dtm:doc dtm:idref="title.variablelist.vl-as-blocks"/>
+<xsl:template match="variablelist/title" mode="vl.as.blocks" dtm:id="title.variablelist.vl-as-blocks"/>
+
+<dtm:doc dtm:idref="variablelist.vl-as-list"/>
+<xsl:template match="variablelist" mode="vl.as.list" dtm:id="variablelist.vl-as-list">
+ <xsl:variable name="termlength">
+ <xsl:choose>
+ <xsl:when test="$term-width != ''">
+ <xsl:value-of select="$term-width"/>
+ </xsl:when>
+ <xsl:when test="@termlength">
+ <xsl:variable name="termlength.is.number">
+ <xsl:value-of select="@termlength + 0"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$termlength.is.number = 'NaN'">
+ <!-- if the term length isn't just a number, assume it's a measurement -->
+ <xsl:value-of select="@termlength"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@termlength"/>
+ <xsl:text>em</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- FIXME: this should be a parameter! -->
+ <xsl:call-template name="longest.term">
+ <xsl:with-param name="terms" select="varlistentry/term"/>
+ <xsl:with-param name="maxlength" select="12"/>
+ </xsl:call-template>
+ <xsl:text>em</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:block>
+ <xsl:if test="title[not(self::processing-instruction('se:choice'))]">
+ <xsl:apply-templates select="title" mode="list.title.mode"/>
+ </xsl:if>
+
+ <fo:list-block provisional-distance-between-starts="{$termlength}"
+ provisional-label-separation="0.25in"
+ xsl:use-attribute-sets="list.block.spacing">
+ <xsl:apply-templates mode="vl.as.list"/>
+ </fo:list-block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="longest.term"/>
+<xsl:template name="longest.term" dtm:id="longest.term">
+ <xsl:param name="longest" select="0"/>
+ <xsl:param name="terms" select="."/>
+ <xsl:param name="maxlength" select="-1"/>
+
+ <xsl:choose>
+ <xsl:when test="$longest &gt; $maxlength and $maxlength &gt; 0">
+ <xsl:value-of select="$maxlength"/>
+ </xsl:when>
+ <xsl:when test="not($terms)">
+ <xsl:value-of select="$longest"/>
+ </xsl:when>
+ <xsl:when test="string-length($terms[1]) &gt; $longest">
+ <xsl:call-template name="longest.term">
+ <xsl:with-param name="longest" select="string-length($terms[1])"/>
+ <xsl:with-param name="maxlength" select="$maxlength"/>
+ <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="longest.term">
+ <xsl:with-param name="longest" select="$longest"/>
+ <xsl:with-param name="maxlength" select="$maxlength"/>
+ <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="varlistentry.vl-as-list"/>
+<xsl:template match="varlistentry" mode="vl.as.list" dtm:id="varlistentry.vl-as-list">
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label end-indent="label-end()" text-align="start">
+ <fo:block>
+ <xsl:apply-templates select="term"/>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates select="listitem"/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<dtm:doc dtm:idref="variablelist.vl-as-blocks"/>
+<xsl:template match="variablelist" mode="vl.as.blocks" dtm:id="variablelist.vl-as-blocks">
+ <fo:block>
+ <xsl:if test="title[not(self::processing-instruction('se:choice'))]">
+ <xsl:apply-templates select="title" mode="list.title.mode"/>
+ </xsl:if>
+
+ <fo:block xsl:use-attribute-sets="list.block.spacing">
+ <xsl:apply-templates mode="vl.as.blocks"/>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="varlistentry.vl-as-blocks"/>
+<xsl:template match="varlistentry" mode="vl.as.blocks" dtm:id="varlistentry.vl-as-blocks">
+ <fo:block>
+ <fo:block xsl:use-attribute-sets="list.item.spacing"
+ keep-together.within-column="always"
+ keep-with-next.within-column="always">
+ <xsl:apply-templates select="term[not(self::processing-instruction('se:choice'))]"/>
+ </fo:block>
+ <fo:block start-indent="0.25in">
+ <xsl:apply-templates select="listitem"/>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="term.varlistentry"/>
+<xsl:template match="varlistentry/term" dtm:id="term.varlistentry">
+ <xsl:choose>
+ <xsl:when test="not(position() = last()) and not(following-sibling::*[1][self::processing-instruction('se:choice')])">
+ <fo:inline><xsl:apply-templates/></fo:inline><xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline><xsl:apply-templates/></fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="listitem.varlistentry"/>
+<xsl:template match="varlistentry/listitem" dtm:id="listitem.varlistentry">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<dtm:doc dtm:idref="title.list-title-mode"/>
+<xsl:template match="title" mode="list.title.mode" dtm:id="title.list-title-mode">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="procedure"/>
+<xsl:template match="procedure" dtm:id="procedure">
+
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::step or self::title)]"/>
+
+ <fo:block xsl:use-attribute-sets="list.block.spacing">
+ <xsl:if test="./title and $placement = 'before'">
+ <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
+ <!-- heading even though we called formal.object.heading. odd but true. -->
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-distance-between-starts="2em"
+ provisional-label-separation="0.2em">
+ <xsl:apply-templates select="step"/>
+ </fo:list-block>
+
+ <xsl:if test="./title and $placement != 'before'">
+ <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
+ <!-- heading even though we called formal.object.heading. odd but true. -->
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.procedure"/>
+<xsl:template match="procedure/title" dtm:id="title.procedure">
+</xsl:template>
+
+<dtm:doc dtm:idref="substeps"/>
+<xsl:template match="substeps" dtm:id="substeps">
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-distance-between-starts="2em"
+ provisional-label-separation="0.2em">
+ <xsl:apply-templates/>
+ </fo:list-block>
+</xsl:template>
+
+<dtm:doc dtm:idref="step"/>
+<xsl:template match="step" dtm:id="step">
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <!-- dwc: fix for one step procedures. Use a bullet if there's no step 2 -->
+ <xsl:choose>
+ <xsl:when test="count(../step) = 1">
+ <xsl:text>&#x2022;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="number">
+ <xsl:with-param name="recursive" select="0"/>
+ </xsl:apply-templates>.
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:apply-templates/>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<dtm:doc dtm:idref="step.number"/>
+<xsl:template match="step" mode="number" dtm:id="step.number">
+
+ <xsl:param name="rest" select="''"/>
+ <xsl:param name="recursive" select="1"/>
+ <xsl:variable name="format">
+ <xsl:call-template name="procedure.step.numeration"/>
+ </xsl:variable>
+ <xsl:variable name="num">
+ <xsl:number count="step" format="{$format}"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$recursive != 0 and ancestor::step">
+ <xsl:apply-templates select="ancestor::step[1]" mode="number">
+ <xsl:with-param name="rest" select="concat('.', $num, $rest)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($num, $rest)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:param name="procedure.step.numeration.formats" select="'1aiAI'"/>
+
+<dtm:doc dtm:idref="procedure.step.numeration"/>
+<xsl:template name="procedure.step.numeration" dtm:id="procedure.step.numeration">
+ <xsl:param name="context" select="."/>
+ <xsl:variable name="format.length"
+ select="string-length($procedure.step.numeration.formats)"/>
+ <xsl:choose>
+ <xsl:when test="local-name($context) = 'substeps'">
+ <xsl:variable name="ssdepth"
+ select="count($context/ancestor::substeps)"/>
+ <xsl:variable name="sstype" select="($ssdepth mod $format.length)+2"/>
+ <xsl:choose>
+ <xsl:when test="$sstype &gt; $format.length">
+ <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring($procedure.step.numeration.formats,$sstype,1)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name($context) = 'step'">
+ <xsl:variable name="sdepth"
+ select="count($context/ancestor::substeps)"/>
+ <xsl:variable name="stype" select="($sdepth mod $format.length)+1"/>
+ <xsl:value-of select="substring($procedure.step.numeration.formats,$stype,1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected context in procedure.step.numeration: </xsl:text>
+ <xsl:value-of select="local-name($context)"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.step"/>
+<xsl:template match="step/title" dtm:id="title.step">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="simplelist"/>
+<xsl:template match="simplelist" dtm:id="simplelist">
+ <xsl:variable name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <fo:table xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:call-template name="simplelist.table.columns">
+ <xsl:with-param name="cols" select="$cols"/>
+ </xsl:call-template>
+ <fo:table-body>
+ <xsl:choose>
+ <xsl:when test="@type='horiz'">
+ <xsl:for-each select="member">
+ <xsl:if test="(position() + $cols - 1) mod $cols = 0">
+ <xsl:variable name="from" select="position()"/>
+ <xsl:variable name="to" select="$from + $cols"/>
+ <fo:table-row>
+ <xsl:apply-templates select="../member[(position() &gt;= $from) and (position() &lt; $to)]"/>
+ </fo:table-row>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="rows" select="floor((count(member)+$cols - 1) div $cols)"/>
+ <xsl:for-each select="member">
+ <xsl:if test="position() &lt;= $rows">
+ <xsl:variable name="pos" select="position()-1"/>
+ <fo:table-row>
+ <xsl:apply-templates select="../member[(position() - $pos + $rows - 1) mod $rows = 0]"/>
+ </fo:table-row>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<dtm:doc dtm:idref="inline.simplelist"/>
+<xsl:template match="simplelist[@type='inline']" dtm:id="inline.simplelist">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="simplelist.table.columns"/>
+<xsl:template name="simplelist.table.columns" dtm:id="simplelist.table.columns">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="curcol" select="1"/>
+ <fo:table-column column-number="{$curcol}"/>
+ <xsl:if test="$curcol &lt; $cols">
+ <xsl:call-template name="simplelist.table.columns">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="curcol" select="$curcol + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="member-seg"/>
+<xsl:template match="member|seg" dtm:id="member-seg">
+ <fo:table-cell>
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+<dtm:doc dtm:idref="member.inlinesimplelist"/>
+<xsl:template match="simplelist[@type='inline']/member" dtm:id="member.inlinesimplelist">
+ <fo:inline>
+ <xsl:apply-templates/>
+ <xsl:text>, </xsl:text>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="lastmember.inlinesimplelist"/>
+<xsl:template match="simplelist[@type='inline']/member[position()=last()]"
+ priority="2" dtm:id="lastmember.inlinesimplelist">
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="segmentedlist"/>
+<xsl:template match="segmentedlist" dtm:id="segmentedlist">
+ <fo:block>
+ <xsl:apply-templates
+ select="title[not(self::processing-instruction('se:choice'))]"
+ mode="plain.formal.title.mode"/>
+ <xsl:choose>
+ <xsl:when test="segtitle[not(self::processing-instruction('se:choice'))]">
+ <fo:table xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:call-template name="simplelist.table.columns">
+ <xsl:with-param name="cols" select="count(segtitle)"/>
+ </xsl:call-template>
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:apply-templates select="segtitle[not(self::processing-instruction('se:choice'))]"/>
+ </fo:table-row>
+ <xsl:for-each select="seglistitem[not(self::processing-instruction('se:choice'))]">
+ <fo:table-row>
+ <xsl:apply-templates select="seg"/>
+ </fo:table-row>
+ </xsl:for-each>
+ </fo:table-body>
+ </fo:table>
+ </xsl:when>
+ <xsl:when test="title[not(self::processing-instruction('se:choice'))]">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="segtitle"/>
+<xsl:template match="segtitle" dtm:id="segtitle">
+ <fo:table-cell>
+ <fo:block font-weight="bold">
+ <xsl:apply-templates select="*[not(self::processing-instruction('se:choice'))]"/>
+ </fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+<!-- ==================================================================== -->
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/parameters.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/parameters.xsl
new file mode 100644
index 0000000..f558ee2
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/parameters.xsl
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ version="1.0">
+ <!--XSLT Params-->
+ <xsl:param name="show.preamble.editing" select="1" xse:type="numeric"
+ xse:annotation="Show draft areas?"/>
+ <xsl:param name="appendix.autolabel" select="1" xse:type="numeric"
+ xse:annotation="Are Appendixes automatically enumerated?"/>
+ <xsl:param name="chapter.autolabel" select="1" xse:type="numeric"
+ xse:annotation="Are chapters automatically enumerated?"/>
+ <xsl:param name="part.autolabel" select="1" xse:type="numeric"
+ xse:annotation="Are parts and references enumerated?"/>
+ <xsl:param name="preface.autolabel" select="0" xse:type="numeric"
+ xse:annotation="Are prefaces enumerated?"/>
+ <xsl:param name="qandadiv.autolabel" select="1" xse:type="numeric"
+ xse:annotation="Are divisions in QAndASets enumerated?"/>
+ <xsl:param name="label.from.part" select="'1'" xse:type="numeric"
+ xse:annotation="Renumber chapters in each part?"/>
+ <xsl:param name="section.autolabel" select="1" xse:type="numeric"
+ xse:annotation="Are sections enumerated?"/>
+ <xsl:param name="section.label.includes.component.label" select="1" xse:type="numeric"
+ xse:annotation="Do section labels include the component label?"/>
+ <xsl:param name="formal.title.placement" select="'
+ figure before
+ example before
+ equation before
+ table before
+ procedure before'" xse:type="string"
+ xse:annotation="Specifies where formal object titles should occur"/>
+ <xsl:param name="toc.indent.width" select="24" xse:type="numeric"
+ xse:annotation="Amount of indentation for TOC entries"/>
+ <xsl:param name="toc.section.depth" select="5" xse:type="numeric"
+ xse:annotation="How deep should recursive sections appear in the TOC?"/>
+ <xsl:param name="autotoc.label.separator" select="'. '" xse:type="string"
+ xse:annotation="Separator between labels and titles in the ToC"/>
+ <xsl:param name="qanda.defaultlabel" select="'number'"
+ xse:annotation="What labels do qanda entries have?" xse:type="string"/>
+ <xsl:param name="qanda.inherit.numeration" select="1" xse:type="numeric"
+ xse:annotation="Does enumeration of QandASet components inherit the numeration of parent elements?"/>
+ <xsl:param name="variablelist.as.blocks" select="1" xse:type="numeric"
+ xse:annotation="Format variablelists lists as blocks?"/>
+ <!-- TOC generation table. After division keyword (e.g "part") there
+ should be a list of non-whitespace separated tokens (like "toc,lot"),
+ that state what will be shown in the division. -->
+
+ <xsl:param name="generate.toc" select="normalize-space('
+ set toc
+ book toc
+ part toc
+ ')" xse:type="string"
+ xse:annotation="Control generation of ToCs and LoTs"/>
+
+ <!-- General -->
+
+ <xsl:variable name="default.indent.shift" select="'20'"/>
+ <xsl:param name="default.units" select="'pt'"/>
+ <xsl:param name="show.remarks" select="'1'"/>
+ <xsl:param name="make.single.year.ranges" select="0"/>
+ <xsl:param name="make.year.ranges" select="0"/>
+ <xsl:param name="punct.honorific" select="'.'"/>
+ <xsl:param name="author.othername.in.middle" select="1"/>
+ <xsl:param name="ignore.image.scaling" select="0"/>
+ <xsl:param name="l10n.gentext.default.language" select="'en'"/>
+ <xsl:param name="l10n.gentext.language" select="''"/>
+ <xsl:param name="l10n.gentext.use.xref.language" select="0"/>
+ <xsl:param name="formal.procedures" select="1"/>
+
+ <xsl:param name="body.margin.bottom" select="'0.5in'"/>
+ <xsl:param name="body.margin.top" select="'0.5in'"/>
+ <xsl:param name="page.margin.bottom" select="'0.5in'"/>
+ <xsl:param name="page.margin.inner" select="'1in'"/>
+ <xsl:param name="page.margin.outer" select="'1in'"/>
+ <xsl:param name="page.margin.top" select="'0.5in'"/>
+ <xsl:param name="page.margin.left" select="'1in'"/>
+ <xsl:param name="page.margin.right" select="'1in'"/>
+ <xsl:param name="page.orientation" select="'portrait'"/>
+ <xsl:param name="paper.type" select="'A4'"/>
+
+ <xsl:param name="body.font.size">
+ <xsl:value-of select="$body.font.master"/><xsl:text>pt</xsl:text>
+ </xsl:param>
+
+ <xsl:param name="title1.font.size">
+ <xsl:value-of select="$body.font.master * 2.07"/><xsl:text>pt</xsl:text>
+ </xsl:param>
+ <xsl:param name="title2.font.size">
+ <xsl:value-of select="$body.font.master * 1.73"/><xsl:text>pt</xsl:text>
+ </xsl:param>
+ <xsl:param name="title3.font.size">
+ <xsl:value-of select="$body.font.master * 1.2"/><xsl:text>pt</xsl:text>
+ </xsl:param>
+ <xsl:param name="footnote.font.size">
+ <xsl:value-of select="$body.font.master * 0.7"/><xsl:text>pt</xsl:text>
+ </xsl:param>
+
+ <xsl:attribute-set name="root">
+ <xsl:attribute name="font-family"><xsl:value-of select="$body.font.family"/></xsl:attribute>
+ <xsl:attribute name="font-size"><xsl:value-of select="$body.font.size"/></xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Title General -->
+ <xsl:param name="title.margin.left" select="'-2pc'"/>
+
+ <xsl:attribute-set name="title.content.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-right">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="titlepage.verso.style">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 0.8"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="preamble.attributes">
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-top-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-left-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-right-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-top-color">#000000</xsl:attribute>
+ <xsl:attribute name="border-bottom-color">#000000</xsl:attribute>
+ <xsl:attribute name="border-left-color">#000000</xsl:attribute>
+ <xsl:attribute name="border-right-color">#000000</xsl:attribute>
+ <xsl:attribute name="background-color">#e0e0e0</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 0.8"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Divisions -->
+
+ <xsl:param name="division.title.font.master">
+ <xsl:value-of select="$body.font.master * 2.8"/>
+ </xsl:param>
+
+ <xsl:attribute-set name="division.title.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$division.title.font.master"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="padding-bottom">
+ <xsl:value-of select="$division.title.font.master * 0.5"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="division.subtitle.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$division.title.font.master * 0.96"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="padding-bottom">
+ <xsl:value-of select="$division.title.font.master * 0.5"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="book.titlepage.recto.style">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Components -->
+
+ <xsl:param name="component.title.font.master">
+ <xsl:value-of select="$body.font.master * 2.4"/>
+ </xsl:param>
+
+ <xsl:attribute-set name="component.title.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$component.title.font.master"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="padding-bottom">
+ <xsl:value-of select="$component.title.font.master * 0.7"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="component.block.properties">
+ <xsl:attribute name="padding-bottom">
+ <xsl:value-of select="0"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Sections -->
+
+ <xsl:attribute-set name="section.block.properties">
+ <xsl:attribute name="padding">0.2em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="section.title.level1.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 2.0736"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="padding-bottom">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="section.title.level2.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.728"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="section.title.level3.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.44"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="section.title.level4.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="section.title.level5.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="section.title.level6.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Glossary -->
+
+ <xsl:param name="glossary.presentation" select="'lists'"/>
+ <xsl:param name="glossary.as.blocks" select="0"/>
+ <xsl:param name="glossary.collection" select="''"/>
+ <xsl:param name="glossentry.show.acronym" select="'yes'"/>
+ <xsl:param name="glosslist.as.blocks" select="0"/>
+ <xsl:param name="glossterm.auto.link" select="'0'"/>
+ <xsl:param name="glossterm.separation" select="'0.25in'"/>
+ <xsl:param name="glossterm.width" select="'2in'"/>
+
+
+ <!-- Refentry & Synopsis -->
+
+ <xsl:param name="refentry.generate.name" select="1"/>
+ <xsl:param name="refentry.generate.title" select="0"/>
+ <xsl:attribute-set name="refentry.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.5"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="padding-bottom">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:param name="funcsynopsis.decoration" select="1"/>
+ <xsl:param name="funcsynopsis.style">kr</xsl:param>
+
+ <!-- Blocks -->
+
+ <xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-color">black</xsl:attribute>
+ <xsl:attribute name="background-color">#e0e0e0</xsl:attribute>
+ <xsl:attribute name="padding-left">12pt</xsl:attribute>
+ <xsl:attribute name="padding-right">12pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">6pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="normal.para.properties">
+ <xsl:attribute name="padding-bottom">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="blockquote.properties">
+ <xsl:attribute name="start-indent">0.5in</xsl:attribute>
+ <xsl:attribute name="end-indent">0.5in</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="note.properties">
+ <xsl:attribute name="padding-bottom">1em</xsl:attribute>
+ <xsl:attribute name="start-indent">0.5in</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="list.block.properties">
+ <xsl:attribute name="padding-bottom">1em</xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="list.item.properties">
+ <xsl:attribute name="padding-bottom">1em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="admonition.title.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="verbatim.properties">
+ <xsl:attribute name="border-top-width">1em</xsl:attribute>
+ <xsl:attribute name="border-bottom-width">1em</xsl:attribute>
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$monospace.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="monospace.verbatim.properties"
+ use-attribute-sets="verbatim.properties monospace.properties">
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="background-color">#E0E0E0</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Formals -->
+
+ <xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"/>
+ <xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"/>
+ <xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"/>
+ <xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"/>
+ <xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties"/>
+
+ <xsl:attribute-set name="formal.title.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="padding-bottom">
+ <xsl:value-of select="$body.font.master * 0.5"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="formal.object.properties">
+ <xsl:attribute name="padding-bottom">1em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- TOC -->
+ <xsl:attribute-set name="toc.margin.properties">
+ <xsl:attribute name="padding-bottom">1em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Tables -->
+ <xsl:param name="table.cell.border.color" select="'#000000'"/>
+ <xsl:param name="table.cell.border.style" select="'solid'"/>
+ <xsl:param name="table.cell.border.thickness" select="'1px'"/>
+ <xsl:attribute-set name="table.cell.padding">
+ <xsl:attribute name="padding-left">2pt</xsl:attribute>
+ <xsl:attribute name="padding-right">2pt</xsl:attribute>
+ <xsl:attribute name="padding-top">2pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">2pt</xsl:attribute>
+ </xsl:attribute-set>
+
+
+ <xsl:param name="default.table.width" select="''"/>
+ <xsl:param name="table.footnote.number.format" select="'a'"/>
+ <xsl:param name="table.footnote.number.symbols" select="''"/>
+
+ <xsl:param name="table.frame.border.color" select="'#000000'"/>
+ <xsl:param name="table.frame.border.style" select="'solid'"/>
+ <xsl:param name="table.frame.border.thickness" select="'1px'"/>
+ <xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"/>
+
+ <!-- Misc -->
+ <xsl:param name="bibliography.collection" select="''"/>
+
+
+ <xsl:param name="menuchoice.menu.separator" select="'-&gt;'"/>
+ <xsl:param name="menuchoice.separator" select="'+'"/>
+
+ <xsl:param name="shade.verbatim" select="1"/>
+
+ <xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="background-color">#E0E0E0</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="monospace.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$monospace.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 0.9"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:param name="title.end.punct" select="'.!?:'"/>
+ <xsl:param name="default.title.end.punct" select="'.'"/>
+
+ <xsl:param name="biblioentry.item.separator">. </xsl:param>
+ <xsl:param name="bibliography.numbered" select="0"/>
+
+ <xsl:attribute-set name="list.block.spacing">
+ <xsl:attribute name="padding-bottom">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="list.item.spacing">
+ <xsl:attribute name="padding-top">0.3em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="compact.list.item.spacing">
+ <xsl:attribute name="padding-top">0.3em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="normal.para.spacing">
+ <xsl:attribute name="padding-bottom">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="xref.properties"/>
+ <xsl:param name="use.role.as.xrefstyle" select="1"/>
+ <xsl:param name="xref.with.number.and.title" select="1"/>
+ <xsl:param name="insert.xref.page.number" select="0"/>
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/qandaset.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/qandaset.xsl
new file mode 100644
index 0000000..46de980
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/qandaset.xsl
@@ -0,0 +1,216 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<!-- ==================================================================== -->
+
+<dtm:doc dtm:idref="qandqset"/>
+<xsl:template match="qandaset" dtm:id="qandqset">
+
+ <fo:block>
+ <xsl:apply-templates
+ select="title[not(self::processing-instruction('se:choice'))]"/>
+
+ <xsl:apply-templates
+ select="*[not(self::title or self::qandadiv or self::qandaentry
+ or self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates
+ select="qandadiv[not(self::processing-instruction('se:choice'))]"/>
+
+ <xsl:if test="qandaentry">
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-distance-between-starts="2.5em"
+ provisional-label-separation="0.2em">
+ <xsl:apply-templates select="qandaentry"/>
+ </fo:list-block>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.qandqset"/>
+<xsl:template match="qandaset/title" dtm:id="title.qandqset">
+ <xsl:variable name="enclsect" select="(ancestor::section
+ | ancestor::simplesect
+ | ancestor::sect5
+ | ancestor::sect4
+ | ancestor::sect3
+ | ancestor::sect2
+ | ancestor::sect1
+ | ancestor::refsect3
+ | ancestor::refsect2
+ | ancestor::refsect1)[last()]"/>
+ <xsl:variable name="sect.level">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="parent" select="$enclsect">
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <fo:block
+ font-family="{$title.font.family}"
+ xsl:use-attribute-sets="component.title.properties">
+ <xsl:apply-templates select="." mode="section.titles.mode">
+ <xsl:with-param name="level" select="$sect.level + 1"/>
+ <xsl:with-param name="heading" select="''">
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="qandadiv"/>
+<xsl:template match="qandadiv" dtm:id="qandadiv">
+ <fo:block>
+ <xsl:apply-templates
+ select="title[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates
+ select="*[not(self::title or self::qandadiv or self::qandaentry
+ or self::processing-instruction('se:choice'))]"/>
+ <fo:block start-indent="{count(ancestor::qandadiv)*2}pc">
+ <xsl:apply-templates
+ select="qandadiv"/>
+
+ <xsl:if test="qandaentry[not(self::processing-instruction('se:choice'))]">
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-distance-between-starts="4em"
+ provisional-label-separation="0.2em">
+ <xsl:apply-templates select="qandaentry"/>
+ </fo:list-block>
+ </xsl:if>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.qandadiv"/>
+<xsl:template match="qandadiv/title" dtm:id="title.qandadiv">
+ <xsl:variable name="enclsect" select="(ancestor::section
+ | ancestor::simplesect
+ | ancestor::sect5
+ | ancestor::sect4
+ | ancestor::sect3
+ | ancestor::sect2
+ | ancestor::sect1
+ | ancestor::refsect3
+ | ancestor::refsect2
+ | ancestor::refsect1)[last()]"/>
+
+ <xsl:variable name="sect.level">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="parent" select="$enclsect">
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <fo:block
+ font-family="{$title.font.family}"
+ xsl:use-attribute-sets="component.title.properties">
+ <xsl:apply-templates select="." mode="section.titles.mode">
+ <xsl:with-param name="level" select="$sect.level + 1 + count(ancestor::qandadiv)"/>
+ <xsl:with-param name="heading" select="''">
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="qandaentry"/>
+<xsl:template match="qandaentry" dtm:id="qandaentry">
+ <!-- We wrap the result into a block if we use Serna to see it in
+ within one tag -->
+ <xsl:choose>
+ <xsl:when test="$use-serna-extensions">
+ <fo:block>
+ <xsl:apply-templates select="question"/>
+ <xsl:apply-templates select="answer"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="question"/>
+ <xsl:apply-templates select="answer"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="question"/>
+<xsl:template match="question" dtm:id="question">
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label end-indent="label-end()">
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'none'">
+ <fo:block> </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block padding-bottom="1pt">
+ <xsl:apply-templates
+ select="self::*[not(self::processing-instruction('se:choice'))]"
+ mode="label.markup"/>
+ <xsl:if test="$deflabel = 'number'">
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block font-weight="bold" padding-top="0pt">
+ <xsl:apply-templates select="*[local-name(.)!='label']"/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<dtm:doc dtm:idref="answer"/>
+<xsl:template match="answer" dtm:id="answer">
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label end-indent="label-end()">
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'none'">
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block padding-bottom="1pt">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="$deflabel = 'number'">
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates select="*[not(self::label)]"/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<dtm:doc dtm:idref="label"/>
+<xsl:template match="label" dtm:id="label">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/refentry.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/refentry.xsl
new file mode 100644
index 0000000..178709c
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/refentry.xsl
@@ -0,0 +1,189 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<dtm:doc dtm:idref="reference"/>
+<xsl:template match="reference" dtm:id="reference">
+ <xsl:variable name="preamble"
+ select="docinfo|title|subtitle|titleabbrev|partintro"/>
+ <xsl:variable name="content"
+ select="*[not(self::docinfo or self::title or self::subtitle
+ or self::titleabbrev or self::partintro)]"/>
+ <fo:block
+ xsl:use-attribute-sets="component.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="reference.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="refentryinfo.refentry"/>
+<xsl:template match="refentry/refentryinfo" dtm:id="refentryinfo.refentry"></xsl:template>
+
+ <dtm:doc dtm:idref="partintro.reference"/>
+ <xsl:template match="reference/partintro" dtm:id="partintro.reference">
+ <fo:block>
+ <xsl:if test="title">
+ <xsl:call-template name="partintro.titlepage"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+<dtm:doc dtm:idref="refentry.refmeta"/>
+<xsl:template match="refentry|refmeta" dtm:id="refentry.refmeta">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="manvolnum"/>
+<xsl:template match="manvolnum" dtm:id="manvolnum">
+ <fo:inline>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="refmiscinfo"/>
+<xsl:template match="refmiscinfo" dtm:id="refmiscinfo">
+</xsl:template>
+
+<dtm:doc dtm:idref="refentrytitle"/>
+<xsl:template match="refentrytitle" dtm:id="refentrytitle">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="refnamediv"/>
+<xsl:template match="refnamediv" dtm:id="refnamediv">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="$refentry.generate.name != 0">
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'refname'"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:when>
+
+ <xsl:when test="$refentry.generate.title != 0">
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates
+ select="../refmeta/refentrytitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates
+ select="refname[not(self::processing-instruction('se:choice'))][1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:when>
+ </xsl:choose>
+ <fo:block space-after="1em">
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates
+ select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates
+ select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="refpurpose"/>
+ </fo:block>
+ <xsl:if test="string-length(refname) and count(refname) > 1">
+ <fo:block>
+ <xsl:for-each select="refname[not(self::processing-instruction('se:choice'))]">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="following-sibling::refname[not(self::processing-instruction('se:choice'))][1]">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </fo:block>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="refname"/>
+<xsl:template match="refname" dtm:id="refname">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="refpurpose"/>
+<xsl:template match="refpurpose" dtm:id="refpurpose">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">em-dash</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="refdescriptor"/>
+<xsl:template match="refdescriptor" dtm:id="refdescriptor">
+ <!-- todo: finish this -->
+</xsl:template>
+
+<dtm:doc dtm:idref="refclass"/>
+<xsl:template match="refclass" dtm:id="refclass">
+ <fo:block font-weight="bold">
+ <xsl:if test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="refsynopsisdiv"/>
+<xsl:template match="refsynopsisdiv" dtm:id="refsynopsisdiv">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle or self::titleabbrev)]"/>
+ <fo:block
+ xsl:use-attribute-sets="section.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="refsynopsisdiv.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="refsections"/>
+<xsl:template match="refsection|refsect1|refsect2|refsect3" dtm:id="refsections">
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev"/>
+ <xsl:variable name="content"
+ select="*[not(self::title or self::subtitle or self::titleabbrev)]"/>
+ <fo:block
+ xsl:use-attribute-sets="section.block.properties">
+ <xsl:call-template name="handle.empty">
+ <xsl:with-param name="titles">
+ <xsl:call-template name="refsection.titlepage"/>
+ </xsl:with-param>
+ <xsl:with-param name="preamble" select="$preamble"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/serna-table.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/serna-table.xsl
new file mode 100644
index 0000000..ba08994
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/serna-table.xsl
@@ -0,0 +1,641 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="xse dtm"
+ version='1.0'>
+
+<dtm:doc dtm:idref="tables"/>
+<xsl:template match="table|informaltable" dtm:id="tables">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <fo:block>
+ <xsl:attribute name="span">
+ <xsl:choose>
+ <xsl:when test="@pgwide=1">all</xsl:when>
+ <xsl:otherwise>none</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <fo:block xsl:use-attribute-sets="formal.object.properties">
+ <xsl:if test="$placement = 'before' and not(self::informaltable)">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="$placement != 'before' and not(self::informaltable)">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="tgroups"/>
+<xsl:template match="table/tgroup|informaltable/tgroup" dtm:id="tgroups">
+ <xsl:if test="$show.preamble.editing">
+ <fo:block xsl:use-attribute-sets="preamble.attributes">
+ <fo:block background-color="transparent"
+ xsl:use-attribute-sets="title.content.properties
+ formal.title.properties">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'draftarea'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>" </xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'metainfo'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>. </xsl:text>
+ <xsl:if test="@cols">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'columns'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@cols"/>
+ </xsl:if>
+ <xsl:text>. (</xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'edit-attrs'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </fo:block>
+ <xsl:apply-templates select="colspec|spanspec" mode="cals-table-specs"/>
+ </fo:block>
+ </xsl:if>
+ <fo:table border-collapse="collapse">
+ <xsl:call-template name="table.frame"/>
+ <xsl:if test="following-sibling::tgroup">
+ <xsl:attribute name="border-bottom-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="padding-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0pt</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="preceding-sibling::tgroup">
+ <xsl:attribute name="border-top-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="padding-top">0pt</xsl:attribute>
+ <xsl:attribute name="margin-top">0pt</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0pt</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="(colspec|thead/colspec|tfoot/colspec|tbody/colspec)[contains(@colwidth, '*')]">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ </xsl:if>
+ <xse:cals-table-group>
+ <xsl:call-template name="tgroup"/>
+ </xse:cals-table-group>
+ </fo:table>
+</xsl:template>
+
+<dtm:doc dtm:idref="specs.cals-table-specs"/>
+<xsl:template match="colspec|spanspec" mode="cals-table-specs" dtm:id="specs.cals-table-specs">
+ <fo:block white-space-treatment='preserve' white-space-collapse='false'>
+ <xsl:value-of select="concat(translate(local-name(.),
+ 'colspean', 'COLSPEAN'), ': ')"/>
+ <fo:inline font-style="italic">
+ <xsl:for-each select="@*">
+ <xsl:value-of select="concat(local-name(.), '=', ., ' ')"/>
+ </xsl:for-each>
+ </fo:inline>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="table.frame"/>
+<xsl:template name="table.frame" dtm:id="table.frame">
+ <xsl:variable name="frame">
+ <xsl:choose>
+ <xsl:when test="../@frame">
+ <xsl:value-of select="../@frame"/>
+ </xsl:when>
+ <xsl:otherwise>all</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$frame='all'">
+ <xsl:attribute name="border-left-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-left-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-left-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='bottom'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='sides'">
+ <xsl:attribute name="border-left-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-left-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-left-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='top'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='topbot'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='none'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="cals-table-empty-cell"/>
+<xsl:template name="cals-table-empty-cell" dtm:id="cals-table-empty-cell">
+ <xsl:variable name="rowsep" select="xse:cals-attribute('rowsep', '1')"/>
+ <xsl:variable name="colsep" select="xse:cals-attribute('colsep', '1')"/>
+ <xsl:variable name="colnum" select="xse:cals-attribute('cals:colnum')"/>
+
+ <fo:table-cell text-align="center"
+ display-align="center"
+ xsl:use-attribute-sets="table.cell.padding">
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colsep &gt; 0 and $colnum &lt; ancestor::tgroup/@cols">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- fo:table-cell should not be empty -->
+ <fo:block>
+ <xsl:text> </xsl:text>
+ </fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="border"/>
+<xsl:template name="border" dtm:id="border">
+ <xsl:param name="side" select="'left'"/>
+
+ <xsl:attribute name="border-{$side}-width">
+ <xsl:value-of select="$table.cell.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-{$side}-style">
+ <xsl:value-of select="$table.cell.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-{$side}-color">
+ <xsl:value-of select="$table.cell.border.color"/>
+ </xsl:attribute>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="tgroup"/>
+<xsl:template name="tgroup" dtm:id="tgroup">
+ <xsl:variable name="cols">
+ <xsl:variable name="ncols" select='number(@cols)'/>
+ <xsl:choose>
+ <xsl:when test="$ncols = 'NaN' or (floor($ncols) - $ncols != 0)
+ or $ncols &lt; 1 or $ncols &gt; 100">
+ <!--xsl:message>Bad COLS attribute value</xsl:message -->
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$ncols"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="position() = 1">
+ <!-- If this is the first tgroup, output the width attribute for the -->
+ <!-- surrounding fo:table. (If this isn't the first tgroup, trying -->
+ <!-- to output the attribute will cause an error.) -->
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="thead|tbody|
+ processing-instruction('se:choice')" mode="cals-table-head"/>
+ <xsl:apply-templates select="tfoot|
+ processing-instruction('se:choice')" mode="cals-table-head"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="thead.cals-table-head"/>
+<xsl:template match="thead" mode="cals-table-head">
+ <fo:table-header>
+ <xsl:apply-templates select="row|processing-instruction('se:choice')"
+ mode="cals-table-row"/>
+ </fo:table-header>
+</xsl:template>
+
+<dtm:doc dtm:idref="tfoot.cals-table-head"/>
+<xsl:template match="tfoot" mode="cals-table-head" dtm:id="tfoot.cals-table-head">
+ <fo:table-footer>
+ <xsl:apply-templates select="row|processing-instruction('se:choice')"
+ mode="cals-table-row"/>
+ </fo:table-footer>
+</xsl:template>
+
+<dtm:doc dtm:idref="tbody.cals-table-head"/>
+<xsl:template match="tbody" mode="cals-table-head" dtm:id="tbody.cals-table-head">
+ <fo:table-body start-indent="0pt">
+ <xsl:apply-templates select="row|processing-instruction('se:choice')"
+ mode="cals-table-row"/>
+ </fo:table-body>
+</xsl:template>
+
+<dtm:doc dtm:idref="row.cals-table-row"/>
+<xsl:template match="row" mode="cals-table-row" dtm:id="row.cals-table-head">
+ <!-- Build current row with the incoming mnemonic row in "span" -->
+ <fo:table-row>
+ <xse:cals-table-row>
+ <xsl:apply-templates select="entry|entrytbl|
+ processing-instruction('se:choice')" mode="cals-table-entry"/>
+ </xse:cals-table-row>
+ </fo:table-row>
+</xsl:template>
+
+<dtm:doc dtm:idref="entry.cals-table-entry"/>
+<xsl:template match="entry|entrytbl" mode="cals-table-entry" dtm:id="entry.cals-table-entry">
+
+ <xse:cals-table-cell>
+ <xsl:variable name="rowsep" select="xse:cals-attribute('rowsep', '1')"/>
+ <xsl:variable name="colsep" select="xse:cals-attribute('colsep', '1')"/>
+ <xsl:variable name="valign" select="xse:cals-attribute('valign', '')"/>
+ <xsl:variable name="align" select="xse:cals-attribute('align', '')"/>
+ <xsl:variable name="char" select="xse:cals-attribute('char', '')"/>
+ <xsl:variable name="colspan" select="xse:cals-attribute('cals:colspan')"/>
+
+ <fo:table-cell xsl:use-attribute-sets="table.cell.padding">
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colsep &gt; 0 and
+ xse:cals-attribute('cals:colnum') &lt; ancestor::tgroup/@cols">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colspan &gt; 1">
+ <xsl:attribute name="number-columns-spanned">
+ <xsl:value-of select="$colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@morerows">
+ <xsl:attribute name="number-rows-spanned">
+ <xsl:value-of select="@morerows+1"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$valign != ''">
+ <xsl:attribute name="display-align">
+ <xsl:choose>
+ <xsl:when test="$valign='top'">before</xsl:when>
+ <xsl:when test="$valign='middle'">center</xsl:when>
+ <xsl:when test="$valign='bottom'">after</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>center</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$char != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <fo:block>
+ <!-- highlight this entry? -->
+ <xsl:if test="ancestor::thead">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:if>
+
+ <!-- are we missing any indexterms? -->
+ <xsl:if test="not(preceding-sibling::entry)
+ and not(parent::row/preceding-sibling::row)">
+ <!-- this is the first entry of the first row -->
+ <xsl:if test="ancestor::thead or
+ (ancestor::tbody
+ and not(ancestor::tbody/preceding-sibling::thead
+ or ancestor::tbody/preceding-sibling::tbody))">
+ <!-- of the thead or the first tbody -->
+ <xsl:apply-templates select="ancestor::tgroup/preceding-sibling::indexterm"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:choose>
+ <!-- Generate whitespace if no children -->
+ <xsl:when test="not(node())">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+
+ <!-- Generate table if it is entrytbl -->
+ <xsl:when test="self::entrytbl">
+ <fo:table border-collapse="collapse">
+ <xsl:if test="(colspec|thead/colspec|tbody/colspec)[contains(@colwidth, '*')]">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ </xsl:if>
+ <xse:cals-table-group>
+ <xsl:call-template name="tgroup"/>
+ </xse:cals-table-group>
+ </fo:table>
+ </xsl:when>
+
+ <!-- Otherwise build the content -->
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:table-cell>
+ </xse:cals-table-cell>
+</xsl:template>
+
+<xsl:template name="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>$cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ <xsl:with-param name="colspecs" select="colspec"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="generate.col"/>
+<xsl:template name="generate.col" dtm:id="generate.col">
+ <!-- generate the table-column for column countcol -->
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:variable name="colwidth">
+ <xsl:call-template name="calc.column.width"/>
+ </xsl:variable>
+ <xsl:if test="$colwidth != 'proportional-column-width(1)'">
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colspec.colwidth">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>1*</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:variable name="colwidth">
+ <xsl:call-template name="calc.column.width">
+ <xsl:with-param name="colwidth">
+ <xsl:value-of select="$colspec.colwidth"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$colwidth != 'proportional-column-width(1)'">
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="calc.column.width"/>
+<xsl:template name="calc.column.width" dtm:id="calc.column.width">
+ <xsl:param name="colwidth">1*</xsl:param>
+
+ <xsl:if test="contains($colwidth, '*')">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:value-of select="substring-before($colwidth, '*')"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+
+ <xsl:variable name="width-units">
+ <xsl:choose>
+ <xsl:when test="contains($colwidth, '*')">
+ <xsl:value-of
+ select="normalize-space(substring-after($colwidth, '*'))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($colwidth)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="width"
+ select="normalize-space(translate($width-units,
+ '+-0123456789.abcdefghijklmnopqrstuvwxyz',
+ '+-0123456789.'))"/>
+
+ <xsl:variable name="units"
+ select="normalize-space(translate($width-units,
+ 'abcdefghijklmnopqrstuvwxyz+-0123456789.',
+ 'abcdefghijklmnopqrstuvwxyz'))"/>
+
+ <xsl:value-of select="$width"/>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'pi'">pc</xsl:when>
+ <xsl:when test="$units = '' and $width != ''">pt</xsl:when>
+ <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/synopsis.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/synopsis.xsl
new file mode 100644
index 0000000..c6ae2cb
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/synopsis.xsl
@@ -0,0 +1,998 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY RE "&#10;">
+<!ENTITY nbsp "&#160;">
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<dtm:doc dtm:idref="cmdsynopsis"/>
+<xsl:template match="cmdsynopsis" dtm:id="cmdsynopsis">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="cmdsynopsis.command"/>
+<xsl:template match="cmdsynopsis/command" dtm:id="cmdsynopsis.command">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:idref="cmdsynopsis.command[1]"/>
+<xsl:template match="cmdsynopsis/command[1]" priority="2" dtm:id="cmdsynopsis.command[1]">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:idref="grouporarg"/>
+<xsl:template match="group|arg" name="group-or-arg" dtm:id="grouporarg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="position()>1"><xsl:value-of select="$sepchar"/></xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="arg.group"/>
+<xsl:template match="group/arg" dtm:id="arg.group">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="position()>1"><xsl:value-of select="$arg.or.sep"/></xsl:if>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="sbr"/>
+<xsl:template match="sbr" dtm:id="sbr">
+ <fo:block><xsl:text> </xsl:text></fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<dtm:doc dtm:idref="synopfragmentref"/>
+<xsl:template match="synopfragmentref" dtm:id="synopfragmentref">
+ <xsl:variable name="ref" select="id(@linkend)"/>
+ <fo:inline font-style="italic">
+ <xsl:for-each select="$ref/parent::*[1]/synopfragment">
+ <xsl:if test="self::synopfragment/@id = $ref/@id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="position()"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number" dtm:id="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<dtm:doc dtm:elements="synopfragment" dtm:idref="synopfragment synopfragment.number"/>
+<xsl:template match="synopfragment" dtm:id="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <fo:block>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="funcsynopsis"/>
+<xsl:template match="funcsynopsis" dtm:id="funcsynopsis">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="funcsynopsisinfo"/>
+<xsl:template match="funcsynopsisinfo" dtm:id="funcsynopsisinfo">
+ <fo:block padding-bottom="1em">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="funcprototype"/>
+<xsl:template match="funcprototype" dtm:id="funcprototype">
+ <fo:block font-family="{$monospace.font.family}">
+ <xsl:apply-templates/>
+ <xsl:if test="$funcsynopsis.style='kr'">
+ <xsl:apply-templates select="./paramdef" mode="kr-funcsynopsis-mode"/>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="funcdef"/>
+<xsl:template match="funcdef" dtm:id="funcdef">
+ <fo:inline font-family="{$monospace.font.family}">
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="funcdef.function"/>
+<xsl:template match="funcdef/function" dtm:id="funcdef.function">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <fo:inline font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline><xsl:apply-templates/></fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="void"/>
+<xsl:template match="void" dtm:id="void">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.style='ansi'">
+ <xsl:text>(void);</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>();</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="varargs"/>
+<xsl:template match="varargs" dtm:id="varargs">
+ <xsl:text>(...);</xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:idref="paramdef paramdef.funcsynopsys.mode"/>
+<xsl:template match="paramdef" dtm:id="paramdef">
+ <xsl:variable name="paramnum">
+ <xsl:number count="paramdef" format="1"/>
+ </xsl:variable>
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="$paramnum=1">(</xsl:if>
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.style='ansi'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="./parameter"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="following-sibling::paramdef">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>);</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="paramdef.parameter"/>
+<xsl:template match="paramdef/parameter" dtm:id="paramdef.parameter">
+ <fo:inline>
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="following-sibling::parameter">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode" dtm:id="paramdef.funcsynopsys.mode">
+ <fo:block>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="funcparams"/>
+<xsl:template match="funcparams" dtm:id="funcparams">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<dtm:doc dtm:idref="synopsises"/>
+<xsl:template match="classsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |constructorsynopsis
+ |destructorsynopsis" dtm:id="synopsises">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$language='java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language"
+ select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="(parent::classsynopsis
+ or (following-sibling::fieldsynopsis
+ |following-sibling::methodsynopsis
+ |following-sibling::constructorsynopsis
+ |following-sibling::destructorsynopsis)) and node()">
+ <xsl:text>&RE;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ===== Java ======================================================== -->
+
+<dtm:doc dtm:elements="classsynopsis" dtm:idref="classsynopsis.java classsynopsis.cpp classsynopsis.idl classsynopsis.perl"/>
+<xsl:template match="classsynopsis" mode="java" dtm:id="classsynopsis.java">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[position() &gt; 1]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{&RE;</xsl:text>
+ <xsl:apply-templates select="classname
+ |extends
+ |implements
+ |indexterm
+ |members
+ |modifiers
+ |throws
+ |type
+ |constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo
+ |processing-instruction('se:choice')" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="classsynopsisinfo" dtm:idref="classsynopsisinfo.java classsynopsisinfo.cpp classsynopsisinfo.idl classsynopsisinfo.perl"/>
+<xsl:template match="classsynopsisinfo" mode="java" dtm:id="classsynopsisinfo.java">
+ <fo:block>
+ <xsl:apply-templates mode="java"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="ooclass|oointerface|ooexception" dtm:idref="ooelements.java ooelements.cpp ooelements.idl ooelements.perl"/>
+<xsl:template match="ooclass|oointerface|ooexception" mode="java" dtm:id="ooelements.java">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:choose>
+ <xsl:when test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="java"/>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="meitt.java"/>
+<xsl:template match="modifiers|extends|implements|throws|type" mode="java" dtm:id="meitt.java">
+ <fo:inline>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="classname" dtm:idref="classname.java classname.cpp classname.idl classname.perl"/>
+<xsl:template match="classname" mode="java" dtm:id="classname.java">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="interfacename" dtm:idref="interfacename.java interfacename.cpp interfacename.idl interfacename.perl"/>
+<xsl:template match="interfacename" mode="java" dtm:id="interfacename.java">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="exceptionname" dtm:idref="exceptionname.java exceptionname.cpp exceptionname.idl exceptionname.perl"/>
+<xsl:template match="exceptionname" mode="java" dtm:id="exceptionname.java">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="fieldsynopsis" dtm:idref="fieldsynopsis.java fieldsynopsis.cpp fieldsynopsis.idl fieldsynopsis.perl"/>
+<xsl:template match="fieldsynopsis" mode="java" dtm:id="fieldsynopsis.java">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ <xsl:call-template name="synop-break"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="varname" dtm:idref="varname.java varname.cpp varname.idl varname.perl"/>
+<xsl:template match="varname" mode="java" dtm:id="varname.java">
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:elements="initializer" dtm:idref="initializer.java initializer.cpp initializer.idl initializer.perl"/>
+<xsl:template match="initializer" mode="java" dtm:id="initializer.java">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<dtm:doc dtm:elements="void" dtm:idref="void.java void.cpp void.idl void.perl"/>
+<xsl:template match="void" mode="java" dtm:id="void.java">
+ <xsl:text>void&nbsp;</xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:elements="methodname" dtm:idref="methodname.java methodname.cpp methodname.idl methodname.perl"/>
+<xsl:template match="methodname" mode="java" dtm:id="methodname.java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<dtm:doc dtm:elements="methodparam" dtm:idref="methodparam.java methodparam.cpp methodparam.idl methodparam.perl"/>
+<xsl:template match="methodparam" mode="java" dtm:id="methodparam.java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>,&RE;</xsl:text>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">&nbsp;</xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<dtm:doc dtm:elements="parameter" dtm:idref="parameter.java parameter.cpp parameter.idl parameter.perl"/>
+<xsl:template match="parameter" mode="java" dtm:id="parameter.java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<dtm:doc dtm:elements="constructorsynopsis|destructorsynopsis|methodsynopsis" dtm:idref="synopsises.java synopsises.cpp synopsises.idl synopsises.perl"/>
+<xsl:template mode="java"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis" dtm:id="synopsises.java">
+ <xsl:variable name="modifiers" select="modifier"/>
+ <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
+ <xsl:variable name="decl">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp" dtm:id="classsynopsis.cpp">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[position() &gt; 1]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo">
+ <xsl:text>&nbsp;{&RE;</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp" dtm:id="classsynopsisinfo.cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp" dtm:id="ooelements.cpp">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:elements="modifier" dtm:idref="modifier.cpp modifier.idl modifier.perl"/>
+<xsl:template match="modifier" mode="cpp" dtm:id="modifier.cpp">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp" dtm:id="classname.cpp">
+ <fo:inline>
+ <xsl:if test="node()">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ </xsl:if>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp" dtm:id="interfacename.cpp">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp" dtm:id="exceptionname.cpp">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp" dtm:id="fieldsynopsis.cpp">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<dtm:doc dtm:elements="type" dtm:idref="type.cpp type.idl type.perl"/>
+<xsl:template match="type" mode="cpp" dtm:id="type.cpp">
+<fo:inline>
+ <xsl:if test="node()">
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+</fo:inline>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp" dtm:id="varname.cpp">
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp" dtm:id="initializer.cpp">
+<fo:inline>
+ <xsl:if test="node()">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ </xsl:if>
+</fo:inline>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp" dtm:id="void.cpp">
+ <fo:inline><xsl:text>void&nbsp;</xsl:text></fo:inline>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp" dtm:id="methodname.cpp">
+ <fo:inline><xsl:apply-templates mode="cpp"/></fo:inline>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp" dtm:id="methodparam.cpp">
+ <fo:inline>
+ <xsl:if test="(position() &gt; 1) and node()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp" dtm:id="parameter.cpp">
+ <fo:inline>
+ <xsl:apply-templates mode="cpp"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template mode="cpp"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis" dtm:id="synopsises.cpp">
+ <xsl:variable name="modifiers" select="modifier"/>
+ <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
+
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:if test="node()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:if test="methodparam">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="exceptionname">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="node()">
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="synop-break"/>
+ </fo:block>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl" dtm:id="classsynopsis.idl">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[position() &gt; 1]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{&RE;</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl" dtm:id="classsynopsisinfo.idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl" dtm:id="ooelements.idl">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="modifier" mode="idl" dtm:id="modifier.idl">
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl" dtm:id="classname.idl">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl" dtm:id="interfacename.idl">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl" dtm:id="exceptionname.idl">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl" dtm:id="fieldsynopsis.idl">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl" dtm:id="type.idl">
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl" dtm:id="varname.idl">
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl" dtm:id="initializer.idl">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="void" mode="idl" dtm:id="void.idl">
+ <xsl:text>void&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl" dtm:id="methodname.idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl" dtm:id="methodparam.idl">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl" dtm:id="parameter.idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template mode="idl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis" dtm:id="synopsises.idl">
+ <xsl:variable name="modifiers" select="modifier"/>
+ <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
+
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl" dtm:id="classsynopses.perl">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;&RE;</xsl:text>
+
+ <xsl:if test="ooclass[position() &gt; 1]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="perl"/>
+ <xsl:text>);&RE;</xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="perl"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl" dtm:id="classsynopsesinfo.perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl" dtm:id="ooelements.perl">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="modifier" mode="perl" dtm:id="modifier.perl">
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl" dtm:id="classname.perl">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl" dtm:id="interfacename.perl">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl" dtm:id="exceptionname.perl">
+ <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl" dtm:id="fieldsynopsis.perl">
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl" dtm:id="type.perl">
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl" dtm:id="varname.perl">
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl" dtm:id="initializer.perl">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="void" mode="perl" dtm:id="void.perl">
+ <xsl:text>void&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl" dtm:id="methodname.perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl" dtm:id="methodparam.perl">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl" dtm:id="parameter.perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template mode="perl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis" dtm:id="synopsises.perl">
+ <xsl:variable name="modifiers" select="modifier"/>
+ <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
+
+ <fo:block
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ <xsl:call-template name="synop-break"/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/table.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/table.xsl
new file mode 100644
index 0000000..f4f192c
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/table.xsl
@@ -0,0 +1,1103 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="xse dtm"
+ version='1.0'>
+
+<xsl:include href="common-table.xsl"/>
+
+<dtm:doc dtm:idref="tables"/>
+<xsl:template match="table|informaltable" dtm:id="tables">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <fo:block>
+ <xsl:attribute name="span">
+ <xsl:choose>
+ <xsl:when test="@pgwide=1">all</xsl:when>
+ <xsl:otherwise>none</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <fo:block xsl:use-attribute-sets="formal.object.properties">
+ <xsl:if test="$placement = 'before' and not(self::informaltable)">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates select="tgroup" mode="main"/>
+
+ <xsl:if test="$placement != 'before' and not(self::informaltable)">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="tgroup.main"/>
+<xsl:template match="tgroup" mode="main" dtm:id="tgroup.main">
+ <xsl:if test="$show.preamble.editing">
+ <fo:block xsl:use-attribute-sets="preamble.attributes">
+ <fo:block background-color="transparent"
+ xsl:use-attribute-sets="title.content.properties formal.title.properties">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'draftarea'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>" </xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'metainfo'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>. </xsl:text>
+ <xsl:if test="@cols">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'columns'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@cols"/>
+ </xsl:if>
+ <xsl:text>. (</xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'edit-attrs'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </fo:block>
+ <xsl:apply-templates select="colspec|spanspec"/>
+ </fo:block>
+ </xsl:if>
+ <fo:table border-collapse="collapse">
+ <xsl:call-template name="table.frame"/>
+ <xsl:if test="following-sibling::tgroup">
+ <xsl:attribute name="border-bottom-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="padding-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0pt</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="preceding-sibling::tgroup">
+ <xsl:attribute name="border-top-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="padding-top">0pt</xsl:attribute>
+ <xsl:attribute name="margin-top">0pt</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0pt</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="(colspec|thead/colspec|tfoot/colspec|tbody/colspec)[contains(@colwidth, '*')]">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </fo:table>
+</xsl:template>
+
+<dtm:doc dtm:idref="specs"/>
+<xsl:template match="colspec|spanspec" dtm:id="specs">
+ <fo:block white-space-treatment='preserve' white-space-collapse='false'>
+ <xsl:value-of select="concat(translate(local-name(.),
+ 'colspean', 'COLSPEAN'), ': ')"/>
+ <fo:inline font-style="italic">
+ <xsl:for-each select="@*">
+ <xsl:value-of select="concat(local-name(.), '=', ., ' ')"/>
+ </xsl:for-each>
+ </fo:inline>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="table.frame"/>
+<xsl:template name="table.frame" dtm:id="table.frame">
+ <xsl:variable name="frame">
+ <xsl:choose>
+ <xsl:when test="../@frame">
+ <xsl:value-of select="../@frame"/>
+ </xsl:when>
+ <xsl:otherwise>all</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$frame='all'">
+ <xsl:attribute name="border-left-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-left-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-left-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='bottom'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='sides'">
+ <xsl:attribute name="border-left-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-left-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-left-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-right-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='top'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='topbot'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='none'">
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border-left-style">none</xsl:attribute>
+ <xsl:attribute name="border-right-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="empty.table.cell"/>
+<xsl:template name="empty.table.cell" dtm:id="empty.table.cell">
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:variable name="rowsep">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:table-cell text-align="center"
+ display-align="center"
+ xsl:use-attribute-sets="table.cell.padding">
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colsep &gt; 0 and $colnum &lt; ancestor::tgroup/@cols">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- fo:table-cell should not be empty -->
+ <fo:block><xsl:text> </xsl:text></fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="border"/>
+<xsl:template name="border" dtm:id="border">
+ <xsl:param name="side" select="'left'"/>
+
+ <xsl:attribute name="border-{$side}-width">
+ <xsl:value-of select="$table.cell.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-{$side}-style">
+ <xsl:value-of select="$table.cell.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-{$side}-color">
+ <xsl:value-of select="$table.cell.border.color"/>
+ </xsl:attribute>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="tgroup"/>
+<xsl:template match="tgroup" name="tgroup" dtm:id="tgroup">
+
+ <xsl:if test="$use-serna-extensions">
+ <xse:cals-process-tgroup/>
+ </xsl:if>
+
+ <xsl:variable name="cols">
+ <xsl:variable name="ncols" select='number(@cols)'/>
+ <xsl:choose>
+ <xsl:when test="$ncols = 'NaN' or (floor($ncols) - $ncols != 0)
+ or $ncols &lt; 1 or $ncols &gt; 100">
+ <!--xsl:message>Bad COLS attribute value</xsl:message -->
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$ncols"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="position() = 1">
+ <!-- If this is the first tgroup, output the width attribute for the -->
+ <!-- surrounding fo:table. (If this isn't the first tgroup, trying -->
+ <!-- to output the attribute will cause an error.) -->
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="thead|tbody|tfoot"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="thead"/>
+<xsl:template match="thead" dtm:id="thead">
+ <fo:table-header>
+ <xsl:call-template name="row.holder"/>
+ </fo:table-header>
+</xsl:template>
+
+<dtm:doc dtm:idref="tfoot"/>
+<xsl:template match="tfoot" dtm:id="tfoot">
+ <fo:table-footer>
+ <xsl:call-template name="row.holder"/>
+ </fo:table-footer>
+</xsl:template>
+
+<dtm:doc dtm:idref="tbody"/>
+<xsl:template match="tbody" dtm:id="tbody">
+ <fo:table-body start-indent="0pt">
+ <xsl:call-template name="row.holder"/>
+ </fo:table-body>
+</xsl:template>
+
+<dtm:doc dtm:idref="row.holder"/>
+<xsl:template name="row.holder" dtm:id="row.holder">
+ <xsl:apply-templates select="row[1]" xse:sections="preserve-left">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="row"/>
+<xsl:template match="row" dtm:id="row">
+ <xsl:param name="spans"/>
+
+ <!-- Build current row with the incoming mnemonic row in "span" -->
+ <fo:table-row>
+ <xsl:apply-templates select="(entry|entrytbl)[1]">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </fo:table-row>
+
+ <xsl:if test="following-sibling::row">
+ <!-- For the next row build mnemonics out of situation in the
+ current row... -->
+ <xsl:variable name="nextspans">
+ <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <!-- And provide this mnemonics to the next row -->
+ <xsl:apply-templates select="following-sibling::row[1]"
+ xse:sections="preserve-left">
+ <xsl:with-param name="spans" select="$nextspans"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="entry"/>
+<xsl:template match="entry|entrytbl" name="entry" dtm:id="entry">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="named.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <!-- Entry number will be the one explicitely stated in namest, or
+ the current column number (col) if explicitely was not stated. -->
+
+ <xsl:variable name="entry.colnum">
+ <xsl:choose>
+ <xsl:when test="$named.colnum &gt; 0">
+ <xsl:value-of select="$named.colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$col"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Width of cell's span -->
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Mnemonics for the rest of the cells in the row -->
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+
+ <!-- If in the span mnemonics my cell is not 0 that means here is
+ vertical span from row above. Increase col number and try
+ rerendering this cell -->
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- If the entry number is greater then current col number, then
+ generate an empty cell and try to generate this cell in new position. -->
+ <xsl:when test="$entry.colnum &gt; $col">
+ <xsl:call-template name="empty.table.cell">
+ <xsl:with-param name="colnum" select="$col"/>
+ </xsl:call-template>
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Otherwise go generating a cell -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$use-serna-extensions">
+ <xsl:call-template name="make-cell">
+ <xsl:with-param
+ name="rowsep"
+ select="xse:cals-inherited-attribute(., $entry.colnum, 'rowsep', '1')"/>
+ <xsl:with-param
+ name="colsep"
+ select="xse:cals-inherited-attribute(., $entry.colnum, 'colsep', '1')"/>
+ <xsl:with-param
+ name="valign"
+ select="xse:cals-inherited-attribute(., $entry.colnum, 'valign', '')"/>
+ <xsl:with-param
+ name="align"
+ select="xse:cals-inherited-attribute(., $entry.colnum, 'align', '')"/>
+ <xsl:with-param
+ name="char"
+ select="xse:cals-inherited-attribute(., $entry.colnum, 'char', '')"/>
+ <xsl:with-param name="col" select="$col"/>
+ <xsl:with-param name="entry.colspan" select="$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="make-cell">
+ <xsl:with-param name="rowsep">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="colsep">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="valign">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'valign'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="align">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'align'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="char">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'char'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="col" select="$col"/>
+ <xsl:with-param name="entry.colspan" select="$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <!-- Go generating next entries if there are any. -->
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- Or generate empty cells if span is not exhausted. -->
+ <xsl:otherwise>
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="make-cell"/>
+<xsl:template name="make-cell" dtm:id="make-cell">
+ <xsl:param name="rowsep"/>
+ <xsl:param name="colsep"/>
+ <xsl:param name="valign"/>
+ <xsl:param name="align"/>
+ <xsl:param name="char"/>
+ <xsl:param name="col"/>
+ <xsl:param name="entry.colspan"/>
+
+ <fo:table-cell xsl:use-attribute-sets="table.cell.padding">
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colsep &gt; 0 and $col &lt; ancestor::tgroup/@cols">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="@morerows">
+ <xsl:attribute name="number-rows-spanned">
+ <xsl:value-of select="@morerows+1"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$entry.colspan &gt; 1">
+ <xsl:attribute name="number-columns-spanned">
+ <xsl:value-of select="$entry.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$valign != ''">
+ <xsl:attribute name="display-align">
+ <xsl:choose>
+ <xsl:when test="$valign='top'">before</xsl:when>
+ <xsl:when test="$valign='middle'">center</xsl:when>
+ <xsl:when test="$valign='bottom'">after</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>center</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$char != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <fo:block>
+ <!-- highlight this entry? -->
+ <xsl:if test="ancestor::thead">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:if>
+
+ <!-- are we missing any indexterms? -->
+ <xsl:if test="not(preceding-sibling::entry)
+ and not(parent::row/preceding-sibling::row)">
+ <!-- this is the first entry of the first row -->
+ <xsl:if test="ancestor::thead or
+ (ancestor::tbody
+ and not(ancestor::tbody/preceding-sibling::thead
+ or ancestor::tbody/preceding-sibling::tbody))">
+ <!-- of the thead or the first tbody -->
+ <xsl:apply-templates select="ancestor::tgroup/preceding-sibling::indexterm"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:choose>
+ <!-- Generate whitespace if no children -->
+ <xsl:when test="not(node())">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+
+ <!-- Generate table if it is entrytbl -->
+ <xsl:when test="self::entrytbl">
+ <fo:table border-collapse="collapse">
+ <xsl:if test="(colspec|thead/colspec|tbody/colspec)[contains(@colwidth, '*')]">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="tgroup"/>
+ </fo:table>
+ </xsl:when>
+
+ <!-- Otherwise build the content -->
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+
+<!-- This template builds mnemonic row that designates spans valuable
+ for the next row -->
+<dtm:doc dtm:idref="sentry"/>
+<xsl:template match="entry|entrytbl" name="sentry" mode="span" dtm:id="sentry">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+
+ <!-- Column number of the entry if explicitely stated in the entry -->
+ <xsl:variable name="entry.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <!-- The width of the span of the entry -->
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- The rest of width of table (span) left in terms of "0:" -->
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- If spans is not exhausted and the first mnemonics has vertical span,
+ then decrease this span for 1. -->
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- If entry was explicitely shifted further then current col,
+ generate 0:, generate next mnemonic for col increased on
+ entry.colspan with span of the following spans. -->
+ <xsl:when test="$entry.colnum &gt; $col">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="count" select="$entry.colspan"/>
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <!-- Create a mnemonic for vertical span row -->
+ <xsl:when test="@morerows">
+ <xsl:value-of select="@morerows"/>
+ </xsl:when>
+ <!-- Create a mnemonic for no vertical span row -->
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>:</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <!-- Create a mnemonic for the next cell if it exist.
+ Its column number will be current column number +
+ current span length -->
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]"
+ mode="span">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- If there is no next cell, but following spans left, then
+ the rest of mnemonics will be 1 morerow shorter. -->
+ <xsl:otherwise>
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="generate.colgroup.raw"/>
+<xsl:template name="generate.colgroup.raw" dtm:id="generate.colgroup.raw">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>$cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col.raw">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup.raw">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="generate.colgroup"/>
+<xsl:template name="generate.colgroup" dtm:id="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>$cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ <xsl:with-param name="colspecs" select="colspec"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="generate.col.raw"/>
+<xsl:template name="generate.col.raw" dtm:id="generate.col.raw">
+ <!-- generate the table-column for column countcol -->
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <fo:table-column column-number="{$countcol}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colspec.colwidth">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>1*</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colspec.colwidth"/>
+ </xsl:attribute>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col.raw">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="generate.col"/>
+<xsl:template name="generate.col" dtm:id="generate.col">
+ <!-- generate the table-column for column countcol -->
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:variable name="colwidth">
+ <xsl:call-template name="calc.column.width"/>
+ </xsl:variable>
+ <xsl:if test="$colwidth != 'proportional-column-width(1)'">
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colspec.colwidth">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>1*</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:variable name="colwidth">
+ <xsl:call-template name="calc.column.width">
+ <xsl:with-param name="colwidth">
+ <xsl:value-of select="$colspec.colwidth"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$colwidth != 'proportional-column-width(1)'">
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- doc:template name="calc.column.width" xmlns="">
+<refpurpose>Calculate an XSL FO table column width specification from a
+CALS table column width specification.</refpurpose>
+
+<refdescription>
+<para>CALS expresses table column widths in the following basic
+forms:</para>
+
+<itemizedlist>
+<listitem>
+<para><emphasis>99.99units</emphasis>, a fixed length specifier.</para>
+</listitem>
+<listitem>
+<para><emphasis>99.99</emphasis>, a fixed length specifier without any units.</para>
+</listitem>
+<listitem>
+<para><emphasis>99.99*</emphasis>, a relative length specifier.</para>
+</listitem>
+<listitem>
+<para><emphasis>99.99*+99.99units</emphasis>, a combination of both.</para>
+</listitem>
+</itemizedlist>
+
+<para>The CALS units are points (pt), picas (pi), centimeters (cm),
+millimeters (mm), and inches (in). These are the same units as XSL,
+except that XSL abbreviates picas "pc" instead of "pi". If a length
+specifier has no units, the CALS default unit (pt) is assumed.</para>
+
+<para>Relative length specifiers are represented in XSL with the
+proportional-column-width() function.</para>
+
+<para>Here are some examples:</para>
+
+<itemizedlist>
+<listitem>
+<para>"36pt" becomes "36pt"</para>
+</listitem>
+<listitem>
+<para>"3pi" becomes "3pc"</para>
+</listitem>
+<listitem>
+<para>"36" becomes "36pt"</para>
+</listitem>
+<listitem>
+<para>"3*" becomes "proportional-column-width(3)"</para>
+</listitem>
+<listitem>
+<para>"3*+2pi" becomes "proportional-column-width(3)+2pc"</para>
+</listitem>
+<listitem>
+<para>"1*+2" becomes "proportional-column-width(1)+2pt"</para>
+</listitem>
+</itemizedlist>
+</refdescription>
+
+<refparameter>
+<variablelist>
+<varlistentry><term>colwidth</term>
+<listitem>
+<para>The CALS column width specification.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn>
+<para>The XSL column width specification.</para>
+</refreturn>
+</doc:template -->
+
+<dtm:doc dtm:idref="calc.column.width"/>
+<xsl:template name="calc.column.width" dtm:id="calc.column.width">
+ <xsl:param name="colwidth">1*</xsl:param>
+
+ <!-- Ok, the colwidth could have any one of the following forms: -->
+ <!-- 1* = proportional width -->
+ <!-- 1unit = 1.0 units wide -->
+ <!-- 1 = 1pt wide -->
+ <!-- 1*+1unit = proportional width + some fixed width -->
+ <!-- 1*+1 = proportional width + some fixed width -->
+
+ <!-- If it has a proportional width, translate it to XSL -->
+ <xsl:if test="contains($colwidth, '*')">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:choose>
+ <xsl:when test="'*' = $colwidth">1</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($colwidth, '*')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+
+ <!-- Now grab the non-proportional part of the specification -->
+ <xsl:variable name="width-units">
+ <xsl:choose>
+ <xsl:when test="contains($colwidth, '*')">
+ <xsl:value-of
+ select="normalize-space(substring-after($colwidth, '*'))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($colwidth)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Ok, now the width-units could have any one of the following forms: -->
+ <!-- = <empty string> -->
+ <!-- 1unit = 1.0 units wide -->
+ <!-- 1 = 1pt wide -->
+ <!-- with an optional leading sign -->
+
+ <!-- Grab the width part by blanking out the units part and discarding -->
+ <!-- whitespace. It's not pretty, but it works. -->
+ <xsl:variable name="width"
+ select="normalize-space(translate($width-units,
+ '+-0123456789.abcdefghijklmnopqrstuvwxyz',
+ '+-0123456789.'))"/>
+
+ <!-- Grab the units part by blanking out the width part and discarding -->
+ <!-- whitespace. It's not pretty, but it works. -->
+ <xsl:variable name="units"
+ select="normalize-space(translate($width-units,
+ 'abcdefghijklmnopqrstuvwxyz+-0123456789.',
+ 'abcdefghijklmnopqrstuvwxyz'))"/>
+
+ <!-- Output the width -->
+ <xsl:value-of select="$width"/>
+
+ <!-- Output the units, translated appropriately -->
+ <xsl:choose>
+ <xsl:when test="$units = 'pi'">pc</xsl:when>
+ <xsl:when test="$units = '' and $width != ''">pt</xsl:when>
+ <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.generator.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.generator.xsl
new file mode 100644
index 0000000..24e6719
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.generator.xsl
@@ -0,0 +1,1218 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:ax="http://www.w3.org/1999/XSL/TransformAlias"
+ xmlns:se="http://syntext.com/XSL/Format-1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ exclude-result-prefixes="doc t param"
+ version='1.0'>
+
+<!-- ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<doc:reference xmlns="">
+<referenceinfo>
+<releaseinfo role="meta">
+
+</releaseinfo>
+<author><surname>Walsh</surname>
+<firstname>Norman</firstname></author>
+<copyright><year>1999</year><year>2000</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</referenceinfo>
+<title>Template Stylesheet Reference</title>
+
+<partintro>
+<section><title>Introduction</title>
+
+<para>This is technical reference documentation for the DocBook XSL
+Stylesheets; it documents (some of) the parameters, templates, and
+other elements of the stylesheets.</para>
+
+<para>This is not intended to be <quote>user</quote> documentation.
+It is provided for developers writing customization layers for the
+stylesheets, and for anyone who's interested in <quote>how it
+works</quote>.</para>
+
+<para>Although I am trying to be thorough, this documentation is known
+to be incomplete. Don't forget to read the source, too :-)</para>
+</section>
+</partintro>
+
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<xsl:preserve-space elements="*"/>
+<xsl:strip-space elements="xsl:* t:*"/>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:templates" xmlns="">
+<refpurpose>Construct a stylesheet for the templates provided</refpurpose>
+
+<refdescription>
+<para>The <literal>t:templates</literal> element is the root of a
+set of templates. This template creates an appropriate
+<literal>xsl:stylesheet</literal> for the templates.</para>
+
+<para>If the <literal>t:templates</literal> element has a
+<literal>base-stylesheet</literal> attribute, an
+<literal>xsl:import</literal> statement is constructed for it.</para>
+</refdescription>
+</doc:template>
+
+<xsl:namespace-alias stylesheet-prefix="ax" result-prefix="xsl"/>
+
+<dtm:doc dtm:idref="t.templates"/>
+<xsl:template match="t:templates" dtm:id="t.templates">
+ <ax:stylesheet version="1.0">
+
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:comment>
+ <xsl:text> This stylesheet was created by </xsl:text>
+ <xsl:text>template/titlepage.xsl; </xsl:text>
+ <xsl:text>do not edit it by hand. </xsl:text>
+ </xsl:comment>
+
+ <xsl:if test="@t:base-stylesheet">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:import">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@t:base-stylesheet"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ </ax:stylesheet>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="xsl:*" xmlns="">
+<refpurpose>Copy xsl: elements straight through</refpurpose>
+
+<refdescription>
+<para>This template simply copies the xsl: elements
+straight through into the result tree.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="xslchilds"/>
+<xsl:template match="xsl:*" dtm:id="xslchilds">
+ <xsl:apply-templates select="." mode="copy"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage" xmlns="">
+<refpurpose>Create the templates necessary to construct a title page</refpurpose>
+
+<refdescription>
+<para>The <literal>t:titlepage</literal> element creates a set of
+templates for processing the titlepage for an element. The
+<quote>root</quote> of this template set is the template named
+<quote><literal>wrapper.titlepage</literal></quote>. That is the
+template that should be called to generate the title page.
+</para>
+
+<para>The <literal>t:titlepage</literal> element has three attributes:
+
+<variablelist>
+<varlistentry><term>element</term>
+<listitem><para>The name of the source document element for which
+these templates apply. In other words, to make a title page for the
+<sgmltag>article</sgmltag> element, set the
+<sgmltag class="attribute">element</sgmltag> attribute to
+<quote><literal>article</literal></quote>. This attribute is required.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>wrapper</term>
+<listitem><para>The entire title page can be wrapped with an element.
+This attribute identifies that element.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>class</term>
+<listitem><para>If the <sgmltag class="attribute">class</sgmltag> attribute
+is set, a <sgmltag class="attribute">class</sgmltag> attribute with this
+value will be added to the wrapper element that surrounds the entire
+title page.
+</para></listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para>Any other attributes are copied through literally to the
+wrapper element.</para>
+
+<para>The content of a <literal>t:titlepage</literal> is one or
+more <literal>t:titlepage-content</literal>,
+<literal>t:titlepage-separator</literal>, and
+<literal>t:titlepage-before</literal> elements.</para>
+
+<para>Each of these elements may be provided for the <quote>recto</quote>
+and <quote>verso</quote> sides of the title page.</para>
+
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="t.titlepage"/>
+<xsl:template match="t:titlepage" dtm:id="t.titlepage">
+ <!-- process the children to make the templates for the content,
+ separator, and before elements -->
+ <xsl:apply-templates/>
+
+ <!-- output the title page template -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+
+ <ax:variable name="result">
+ <xsl:if test="t:titlepage-before[@t:side='recto']">
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.before.recto</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.recto</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+
+ <xsl:text>&#xA; </xsl:text>
+
+ <!-- Added if to exlude extra pages templates if title-content|before
+ not used -->
+ <xsl:if test="t:titlepage-content[@t:side='verso']|t:titlepage-before[@t:side='verso']">
+ <xsl:text>&#xA; </xsl:text>
+
+ <xsl:if test="t:titlepage-before[@t:side='verso']">
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.before.verso</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.verso</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:if>
+
+ <xsl:text>&#xA; </xsl:text>
+
+ <!-- Added if to exclude separator template if not used -->
+ <xsl:if test="t:titlepage-separator">
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.separator</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:if>
+ </ax:variable>
+
+ <ax:if test="string-length($result)">
+ <xsl:element name="{@t:wrapper}">
+ <xsl:apply-templates select="@*" mode="copy.literal.atts"/>
+ <xsl:text>&#xA; </xsl:text>
+ <ax:copy-of select="$result"/>
+ </xsl:element>
+ </ax:if>
+
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+
+ <!-- If we're not importing a base stylesheet, output a default rule
+ for the recto- and verso-mode elements. (If we are importing a
+ base stylesheet, don't do this since the *-rules in the stylesheet
+ will totally override the rules that would otherwise be imported.)
+ -->
+
+ <xsl:if test="not(../@t:base-stylesheet)">
+
+ <!-- output a fold template -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">
+ <xsl:value-of select="@t:element"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">serna.fold</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <fo:block se:fold="" color="gray">
+ <xsl:text>&#xA; </xsl:text>
+ <se:fold show-element-name="false"/>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">title</xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.recto.auto.mode</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </fo:block>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+
+ <!-- output a default rule for the recto-modes elements -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">*</xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.recto.mode</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> if an element isn't found in this mode, </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> try the generic titlepage.mode </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">.</xsl:attribute>
+ <xsl:attribute name="mode">titlepage.mode</xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+
+ <!-- output a default rule for the verso-modes elements -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">*</xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.verso.mode</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> if an element isn't found in this mode, </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> try the generic titlepage.mode </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">.</xsl:attribute>
+ <xsl:attribute name="mode">titlepage.mode</xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+
+ <!-- output default templates for each of the elements listed in -->
+ <!-- the titlepage-content. If a template is suppressed or forced -->
+ <!-- to be off, or has already been output, don't output it. -->
+ <xsl:for-each select="t:titlepage-content/*">
+ <xsl:variable name="thisnode" select="."/>
+ <xsl:if test="(not(@t:suppress-template) or @t:suppress-template='0')
+ and (not(@t:force) or @t:force='0')
+ and (not(preceding-sibling::*[name(.)=name($thisnode)]))">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="{../../@t:wrapper}">
+ <xsl:attribute name="xsl:use-attribute-sets">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.style</xsl:text>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="not(starts-with(namespace-uri(.),
+ 'http://nwalsh.com/docbook/xsl/template/1.0'))">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@t:named-template">
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:named-template"/>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="xsl:with-param">
+ <xsl:attribute name="name">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="@t:named-mode">
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="@t:named-mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">.</xsl:attribute>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">.</xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.mode</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<doc:template match="@*" mode="copy.literal.atts" xmlns="">
+<refpurpose>Copy t:titlepage attributes</refpurpose>
+
+<refdescription>
+<para>This template copies all of the <quote>other</quote> attributes
+from a <literal>t:titlepage</literal> element onto the specified
+wrapper.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="attrs.copy-literal-atts"/>
+<xsl:template match="@*" mode="copy.literal.atts" dtm:id="attrs.copy-literal-atts">
+ <xsl:if test="not(starts-with(namespace-uri(.),
+ 'http://nwalsh.com/docbook/xsl/template/1.0'))">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage-content">
+<refpurpose>Create templates for the content of one side of a title page</refpurpose>
+
+<refdescription>
+<para>The title page content, that is, the elements from the source
+document that are rendered on the title page, can be controlled independently
+for the recto and verso sides of the title page.</para>
+
+<para>The <literal>t:titlepage-content</literal> element has two attributes:
+
+<variablelist>
+<varlistentry><term>side</term>
+<listitem><para>Identifies the side of the page to which this title
+page content applies. The
+<sgmltag class="attribute">side</sgmltag> attribute is required and
+must be set to either
+<quote><literal>recto</literal></quote> or
+<quote><literal>verso</literal></quote>. In addition, you must specify
+exactly one <literal>t:titlepage-content</literal> for each side
+within each <literal>t:titlepage</literal>.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>order</term>
+<listitem><para>Indicates how the order of the elements presented on
+the title page is determined. If the
+<sgmltag class="attribute">order</sgmltag> is
+<quote><literal>document</literal></quote>, the elements are presented
+in document order. Otherwise (if the
+<sgmltag class="attribute">order</sgmltag> is
+<quote><literal>stylesheet</literal></quote>), the elements are presented
+in the order that they appear in the template (and consequently in
+the stylesheet).</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para>The content of a <literal>t:titlepage-content</literal> element is
+a list of element names. These names should be unqualified. They identify
+the elements in the source document that should appear on the title page.
+</para>
+
+<para>Each element may have a single attribute:
+<sgmltag class="attribute">predicate</sgmltag>. The value of this
+attribute is used as a predicate for the expression that matches
+the element on which it occurs.</para>
+
+<para>In other words, to put only the first three authors on the
+recto-side of a title
+page, you could specify:
+
+<screen><![CDATA[
+ <t:titlepage-contents side="recto">
+ <!-- other titlepage elements -->
+ <author predicate="[count(previous-sibling::author)<2]"/>
+ <!-- other titlepage elements -->
+ </t:titlepage-contents>
+]]></screen>
+</para>
+
+<para>Usually, the elements so named are empty. But it is possible to
+make one level of selection within them. Suppose that you want to
+process <literal>authorgroup</literal> elements on the title page, but
+you want to select only proper authors, editors, or corporate authors,
+not collaborators or other credited authors.</para>
+
+<para>In that case, you can put a <literal>t:or</literal> group inside
+the <literal>authorgroup</literal> element:
+
+<screen><![CDATA[
+ <t:titlepage-contents side="recto">
+ <!-- other titlepage elements -->
+ <authorgroup>
+ <t:or>
+ <author/>
+ <editor/>
+ <corpauthor/>
+ </t:or>
+ </authorgroup>
+ <!-- other titlepage elements -->
+ </t:titlepage-contents>
+]]></screen>
+</para>
+
+<para>This will have the effect of automatically generating a template
+for processing <literal>authorgroup</literal>s in the title page mode,
+selecting only the specified children. If you need more complex processing,
+you'll have to construct the templates by hand.</para>
+
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="t.titlepage-content"/>
+<xsl:template match="t:titlepage-content" dtm:id="t.titlepage-content">
+
+ <xsl:variable name="wrapper" select="../@t:wrapper"/>
+
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="@t:side='recto' or @t:side='verso'">
+ <xsl:value-of select="@t:side"/>
+ </xsl:when>
+ <xsl:when test="@t:side">
+ <xsl:message terminate="yes">
+ <xsl:text>Illegal value specified for @t:side </xsl:text>
+ <xsl:text>on t:titlepage-content: </xsl:text>
+ <xsl:value-of select="@t:side"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>The @t:side attribute is required on </xsl:text>
+ <xsl:text>t:titlepage-content.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ </xsl:attribute>
+
+ <xsl:text>&#xA; </xsl:text>
+
+ <ax:variable name="result">
+ <xsl:choose>
+ <!-- if document order is selected, make a huge select statement
+ on a single xsl:apply-templates to pick out the right elements
+ for the title page. -->
+ <xsl:when test="@t:order='document'">
+ <xsl:if test="count(child::*)&gt;0">
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:apply-templates mode="document.order"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:when>
+
+ <!-- otherwise, select each of the elements in the specified order -->
+ <xsl:otherwise>
+ <xsl:apply-templates mode="stylesheet.order"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </ax:variable>
+
+ <xsl:text>&#xA;&#xA; </xsl:text>
+ <ax:if test="string-length($result)">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="{$wrapper}">
+ <xsl:apply-templates select="@*" mode="copy.literal.atts"/>
+ <ax:copy-of select="$result"/>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </ax:if>
+
+ <xsl:apply-templates mode="titlepage.specialrules"/>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage-separator">
+<refpurpose>Create templates for the separator</refpurpose>
+
+<refdescription>
+<para>The title page is separated from the content which follows it by
+the markup specified in the <literal>t:titlepage-separator</literal>
+element.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="t.titlepage-separator"/>
+<xsl:template match="t:titlepage-separator" dtm:id="t.titlepage-separator">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.separator</xsl:text>
+ </xsl:attribute>
+
+ <xsl:apply-templates mode="copy"/>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage-before">
+<refpurpose>Create templates for what precedes a title page</refpurpose>
+
+<refdescription>
+<para>Each side of the title page is preceded by the markup specified
+in the <literal>t:titlepage-before</literal> element for that
+side.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="t.titlepage-before"/>
+<xsl:template match="t:titlepage-before" dtm:id="t.titlepage-before">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.before.</xsl:text>
+ <xsl:value-of select="@t:side"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates mode="copy"/>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="copy" xmlns="">
+<refpurpose>Copy elements</refpurpose>
+
+<refdescription>
+<para>This template simply copies the elements that it applies to
+straight through into the result tree.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="all.copy"/>
+<xsl:template match="*" mode="copy" dtm:id="all.copy">
+ <xsl:element name="{name(.)}">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates mode="copy"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="@*" mode="copy" xmlns="">
+<refpurpose>Copy attributes</refpurpose>
+
+<refdescription>
+<para>This template simply copies the attributes that it applies to
+straight through into the result tree.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="attrs.copy"/>
+<xsl:template match="@*" mode="copy" dtm:id="attrs.copy">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="document.order" xmlns="">
+<refpurpose>Create rules to process titlepage elements in document order</refpurpose>
+
+<refdescription>
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the hairy
+select expression necessary to process each of those elements in
+the title page.</para>
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="all.document.order"/>
+<xsl:template match="*" mode="document.order" dtm:id="all.document.order">
+ <xsl:variable name="docinfo">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>info</xsl:text>
+ </xsl:variable>
+
+ <xsl:variable name="altinfo">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage/@t:element='article'">
+ <xsl:text>artheader</xsl:text>
+ </xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='section'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect1'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect2'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect3'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect4'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect5'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='book'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='set'"></xsl:when>
+ <xsl:otherwise>docinfo</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>recto</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+
+ <xsl:if test="$altinfo != ''">
+ <xsl:text>|</xsl:text>
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="local-name(.) = 'title'
+ or local-name(.) = 'subtitle'
+ or local-name(.) = 'titleabbrev'">
+ <xsl:text>|</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="document.order" xmlns="">
+<refpurpose>Create rules to process titlepage elements in stylesheet order</refpurpose>
+
+<refdescription>
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the set
+of <literal>xsl:apply-templates</literal> elements necessary
+process each of those elements in the title page.</para>
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="all.stylesheet.order"/>
+<xsl:template match="*" mode="stylesheet.order" dtm:id="all.stylesheet.order">
+ <xsl:variable name="docinfo">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>info</xsl:text>
+ </xsl:variable>
+
+ <xsl:variable name="altinfo">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage/@t:element='article'">
+ <xsl:text>artheader</xsl:text>
+ </xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='section'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect1'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect2'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect3'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect4'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect5'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='book'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='set'"></xsl:when>
+ <xsl:otherwise>docinfo</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:text>&#xA; </xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@t:force and @t:force != '0'">
+ <xsl:choose>
+ <xsl:when test="@t:named-template">
+ <xsl:element name="{../../@t:wrapper}">
+ <xsl:attribute name="xsl:use-attribute-sets">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.style</xsl:text>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="not(starts-with(namespace-uri(.),
+ 'http://nwalsh.com/docbook/xsl/template/1.0'))">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:named-template"/>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="xsl:with-param">
+ <xsl:attribute name="name">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Force can only be used with named-templates.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'title'
+ or local-name(.) = 'subtitle'
+ or local-name(.) = 'titleabbrev'">
+ <!-- the title, subtitle, and titleabbrev elements are special -->
+ <xsl:element name="xsl:choose">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ <xsl:text>[not(self::processing-instruction('se:choice'))]</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+
+ <xsl:if test="$altinfo != ''">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ <xsl:text>[not(self::processing-instruction('se:choice'))]</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ <xsl:text>[not(self::processing-instruction('se:choice'))]</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+
+ <!-- first take care of the $docinfo version -->
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ <xsl:text>[not(self::processing-instruction('se:choice'))]</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- then take care of the $altinfo version -->
+ <xsl:if test="$altinfo != ''">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ <xsl:text>[not(self::processing-instruction('se:choice'))]</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="titlepage.specialrules" xmlns="">
+<refpurpose>Create templates for special rules</refpurpose>
+
+<refdescription>
+<para>This template is called to process all of the descendants of the
+<literal>t:titlepage-content</literal> element that require special
+processing. At present, that's just <literal>t:or</literal> elements.
+</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="all.titlepage.specialrules"/>
+<xsl:template match="*" mode="titlepage.specialrules" dtm:id="all.titlepage.specialrules">
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="name(.)='t:or'">
+ <xsl:apply-templates select="*" mode="titlepage.specialrules"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="*"><!-- does this element have children? -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="*" mode="titlepage.subrules"/>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="titlepage.subrules" xmlns="">
+<refpurpose>Create template for individual special rules</refpurpose>
+
+<refdescription>
+<para>This template is called to process the children of special
+template elements.
+</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="all.titlepage.subrules"/>
+<xsl:template match="*" mode="titlepage.subrules" dtm:id="all.titlepage.subrules">
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:or" xmlns="">
+<refpurpose>Process the t:or special rule</refpurpose>
+
+<refdescription>
+<para>This template processes t:or.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="t.or"/>
+<xsl:template match="t:or" dtm:id="t.or">
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">
+ <xsl:call-template name="element-or-list"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:or" mode="titlepage.subrules" xmlns="">
+<refpurpose>Process the t:or special rule in
+titlepage.subrules mode</refpurpose>
+
+<refdescription>
+<para>The titlepage.subrules mode doesn't apply to t:or, so just
+reprocess this node in the normal mode.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="t.or.titlepage.subrules"/>
+<xsl:template match="t:or" mode="titlepage.subrules" dtm:id="t.or.titlepage.subrules">
+ <xsl:apply-templates select="."/><!-- use normal mode -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template name="element-or-list" xmlns="">
+<refpurpose>Construct the "or-list" used in the select attribute for
+special rules.</refpurpose>
+
+<refdescription>
+<para>Walk through each of the children of t:or, producing the
+text of the select attribute.</para>
+</refdescription>
+</doc:template>
+<dtm:doc dtm:idref="element-or-list"/>
+<xsl:template name="element-or-list" dtm:id="element-or-list">
+ <xsl:param name="elements" select="*"/>
+ <xsl:param name="element.count" select="count($elements)"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="orlist"></xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>$element.count">
+ <xsl:value-of select="$orlist"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="element-or-list">
+ <xsl:with-param name="elements" select="$elements"/>
+ <xsl:with-param name="element.count" select="$element.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="orlist">
+ <xsl:value-of select="$orlist"/>
+ <xsl:if test="not($orlist='')">|</xsl:if>
+ <xsl:value-of select="name($elements[position()=$count])"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xml b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xml
new file mode 100644
index 0000000..8b5951a
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xml
@@ -0,0 +1,412 @@
+<!DOCTYPE t:templates [
+<!ENTITY hsize0 "10pt">
+<!ENTITY hsize1 "12pt">
+<!ENTITY hsize2 "14.4pt">
+<!ENTITY hsize3 "17.28pt">
+<!ENTITY hsize4 "20.736pt">
+<!ENTITY hsize5 "24.8832pt">
+<!ENTITY hsize0space "7.5pt"> <!-- 0.75 * hsize0 -->
+<!ENTITY hsize1space "9pt"> <!-- 0.75 * hsize1 -->
+<!ENTITY hsize2space "10.8pt"> <!-- 0.75 * hsize2 -->
+<!ENTITY hsize3space "12.96pt"> <!-- 0.75 * hsize3 -->
+<!ENTITY hsize4space "15.552pt"> <!-- 0.75 * hsize4 -->
+<!ENTITY hsize5space "18.6624pt"> <!-- 0.75 * hsize5 -->
+]>
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<t:titlepage t:element="article" t:wrapper="fo:block"
+ font-family="{$title.font.family}">
+
+ <t:titlepage-content t:side="recto"
+ text-align="center">
+
+ <title t:named-mode="article.titles.mode"
+ font-size="&hsize5;"
+ font-weight="bold"/>
+
+ <subtitle/>
+
+ <corpauthor padding-bottom="0.5em"
+ font-size="&hsize2;"/>
+ <authorgroup padding-bottom="0.5em"
+ font-size="&hsize2;"/>
+ <author padding-bottom="0.5em"
+ font-size="&hsize2;"/>
+
+ <othercredit padding-bottom="0.5em"/>
+ <releaseinfo padding-bottom="0.5em"/>
+ <copyright padding-bottom="0.5em"/>
+ <legalnotice text-align="start"
+ margin-left="0.5in"
+ margin-right="0.5in"
+ font-family="{$body.font.family}"/>
+ <pubdate padding-bottom="0.5em"/>
+ <revision padding-bottom="0.5em"/>
+ <revhistory
+ t:named-mode="rev.mode"
+ padding-bottom="0.5em"/>
+ <abstract padding-bottom="0.5em"
+ text-align="start"
+ margin-left="0.5in"
+ margin-right="0.5in"
+ font-family="{$body.font.family}"/>
+ </t:titlepage-content>
+</t:titlepage>
+
+ <t:titlepage t:element="chapter" t:wrapper="fo:block"
+ font-family="{$title.font.family}">
+ <t:titlepage-content t:side="recto" margin-left="{$title.margin.left}">
+ <title t:named-mode="chapter.titles.mode"
+ font-size="&hsize5;"
+ font-weight="bold"/>
+
+ <subtitle padding-bottom="0.5em"
+ font-style="italic"
+ font-size="&hsize2;"
+ font-weight="bold"/>
+
+ <corpauthor padding-bottom="0.5em"
+ space-after="0.5em"
+ font-size="&hsize2;"/>
+
+ <authorgroup padding-bottom="0.5em"
+ space-after="0.5em"
+ font-size="&hsize2;"/>
+
+ <author padding-bottom="0.5em"
+ space-after="0.5em"
+ font-size="&hsize2;"/>
+
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+</t:titlepage>
+
+ <t:titlepage t:element="book" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="book.titles.mode"
+ text-align="center"
+ font-size="&hsize5;"
+ padding-bottom="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ text-align="center"
+ font-size="&hsize4;"
+ padding-bottom="&hsize3space;"
+ font-family="{$title.font.family}"/>
+ <corpauthor font-size="&hsize3;"
+ keep-with-next="always"
+ padding-bottom="1in"/>
+ <authorgroup padding-bottom="1in"/>
+ <author font-size="&hsize3;"
+ padding-bottom="&hsize2space;"
+ keep-with-next="always"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ <corpauthor/>
+ <authorgroup
+ padding-bottom="2em"
+ t:named-template="verso.authorgroup"/>
+ <author/>
+ <othercredit/>
+ <pubdate padding-bottom="1em"/>
+ <copyright/>
+ <revision padding-bottom="0.5em"/>
+ <revhistory
+ t:named-mode="rev.mode"
+ padding-bottom="0.5em"/>
+
+ <abstract/>
+ <legalnotice font-size="8pt"/>
+ </t:titlepage-content>
+ </t:titlepage>
+
+<t:titlepage t:element="part" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="part.titles.mode"
+ text-align="center"
+ font-size="&hsize5;"
+ padding-bottom="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ text-align="center"
+ font-size="&hsize4;"
+ padding-bottom="&hsize4space;"
+ font-weight='bold'
+ font-style='italic'
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+</t:titlepage>
+
+ <t:titlepage t:element="preface" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="preface.titles.mode"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.font.family}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+</t:titlepage>
+
+<t:titlepage t:element="partintro" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ text-align="center"
+ font-size="&hsize5;"
+ font-weight="bold"
+ padding-bottom="1em"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ text-align="center"
+ font-size="&hsize2;"
+ font-weight="bold"
+ font-style="italic"
+ font-family="{$title.font.family}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+</t:titlepage>
+
+<t:titlepage t:element="reference" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="reference.titles.mode"
+ text-align="center"
+ font-size="&hsize5;"
+ padding-bottom="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+
+</t:titlepage>
+
+<t:titlepage t:element="refsynopsisdiv" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="refsynopsisdiv.titles.mode"
+ font-weight="bold"
+ margin-left="{$title.margin.left}"
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+
+</t:titlepage>
+
+<t:titlepage t:element="refsection" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="section.titles.mode"
+ font-weight="bold"
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+
+</t:titlepage>
+
+<t:titlepage t:element="section" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="section.titles.mode"
+ font-weight="bold"
+ margin-left="{$title.margin.left}"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+</t:titlepage>
+
+<t:titlepage t:element="simplesect" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="simplesect.titles.mode"
+ font-weight="bold"
+ margin-left="{$title.margin.left}"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+
+<t:titlepage t:element="set" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="set.titles.mode"
+ text-align="center"
+ font-size="&hsize5;"
+ padding-bottom="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ font-family="{$title.font.family}"
+ text-align="center"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+</t:titlepage>
+
+ <t:titlepage t:element="appendix" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="appendix.titles.mode"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+</t:titlepage>
+
+ <t:titlepage t:element="bibliography" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title t:named-template="bibliography.title"
+ t:force="1"
+ param:node="."
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.font.family}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+
+ </t:titlepage>
+
+ <t:titlepage t:element="bibliodiv" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="bibliodiv.titles.mode"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize4;"
+ font-family="{$title.font.family}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+
+ </t:titlepage>
+
+ <t:titlepage t:element="glossary" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-mode="glossary.title"
+ param:node="ancestor-or-self::glossary[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.font.family}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="glossdiv" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title t:named-mode="glossdiv.titles.mode"
+ param:node="ancestor-or-self::glossdiv[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize4;"
+ font-family="{$title.font.family}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.font.family}"/>
+ </t:titlepage-content>
+ </t:titlepage>
+
+</t:templates>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xsl
new file mode 100644
index 0000000..ada4ff6
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.templates.xsl
@@ -0,0 +1,1969 @@
+<?xml version="1.0" encoding="utf-8"?><ax:stylesheet xmlns:ax="http://www.w3.org/1999/XSL/Transform" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:se="http://syntext.com/XSL/Format-1.0" version="1.0">
+
+<!-- This stylesheet was created by template/titlepage.xsl; do not edit it by hand. -->
+
+<xsl:template name="article.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block text-align="center"><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="article.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="article.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block font-family="{$title.font.family}">
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="article" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="article.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" font-size="{$title1.font.size}" font-weight="bold">
+<xsl:apply-templates mode="article.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em" font-size="{$title3.font.size}">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em" font-size="{$title3.font.size}">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em" font-size="{$title3.font.size}">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.font.family}">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em">
+<xsl:apply-templates mode="rev.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="article.titlepage.recto.style" padding-bottom="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.font.family}">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block margin-left="{$title.margin.left}"><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="chapter.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block font-family="{$title.font.family}">
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="chapter" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="chapter.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="{$title1.font.size}" font-weight="bold">
+<xsl:apply-templates mode="chapter.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style" padding-bottom="0.5em" font-style="italic" font-size="{$title3.font.size}" font-weight="bold">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style" padding-bottom="0.5em" space-after="0.5em" font-size="{$title3.font.size}">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style" padding-bottom="0.5em" space-after="0.5em" font-size="{$title3.font.size}">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style" padding-bottom="0.5em" space-after="0.5em" font-size="{$title3.font.size}">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="book.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+ <ax:variable name="result">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="book.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="book.titlepage.recto"/>
+
+
+ <xsl:call-template name="book.titlepage.verso"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="book" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="book.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="{$title1.font.size}" padding-bottom="18.6624pt" font-weight="bold" font-family="{$title.font.family}">
+<xsl:apply-templates mode="book.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="{$title2.font.size}" padding-bottom="12.96pt" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.recto.style" font-size="{title2.font.size}" keep-with-next="always" padding-bottom="1in">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.recto.style" padding-bottom="1in">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.recto.style" font-size="{title2.font.size}" padding-bottom="10.8pt" keep-with-next="always">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style" padding-bottom="2em">
+<xsl:call-template name="verso.authorgroup">
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style" padding-bottom="1em">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style" padding-bottom="0.5em">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style" padding-bottom="0.5em">
+<xsl:apply-templates mode="rev.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode">
+<fo:block xsl:use-attribute-sets="book.titlepage.verso.style" font-size="8pt">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="partinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="part.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="part.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="part" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="part.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="part.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="{$title1.font.size}" padding-bottom="18.6624pt" font-weight="bold" font-family="{$title.font.family}">
+<xsl:apply-templates mode="part.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="{$title2.font.size}" padding-bottom="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="preface.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="preface" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="preface.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="{$title1.font.size}" font-family="{$title.font.family}" font-weight="bold">
+<xsl:apply-templates mode="preface.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="partintro.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="partintro" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="partintro.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="{$title1.font.size}" font-weight="bold" padding-bottom="1em" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="{$title3.font.size}" font-weight="bold" font-style="italic" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="reference.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="reference" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="reference.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="{$title1.font.size}" padding-bottom="18.6624pt" font-weight="bold" font-family="{$title.font.family}">
+<xsl:apply-templates mode="reference.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="refsynopsisdivinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="refsynopsisdiv.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="refsynopsisdiv.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-weight="bold" margin-left="{$title.margin.left}" font-family="{$title.font.family}">
+<xsl:apply-templates mode="refsynopsisdiv.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="refsectioninfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="refsection.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="refsection.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="refsection" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="refsection.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="refsection.titlepage.recto.style" font-weight="bold" font-family="{$title.font.family}">
+<xsl:apply-templates mode="section.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="section.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="section.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="section" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="section.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style" font-weight="bold" margin-left="{$title.margin.left}" font-family="{$title.font.family}">
+<xsl:apply-templates mode="section.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+ <ax:variable name="result"/>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <ax:variable name="result"><xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="simplesect" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="simplesect.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-weight="bold" margin-left="{$title.margin.left}" font-family="{$title.font.family}">
+<xsl:apply-templates mode="simplesect.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="set.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="set.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="set" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="set.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="{$title1.font.size}" padding-bottom="18.6624pt" font-weight="bold" font-family="{$title.font.family}">
+<xsl:apply-templates mode="set.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.font.family}" text-align="center">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract[not(self::processing-instruction('se:choice'))]"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract[not(self::processing-instruction('se:choice'))]"/></ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="appendix.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="appendix" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="appendix.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="{$title1.font.size}" font-weight="bold" font-family="{$title.font.family}">
+<xsl:apply-templates mode="appendix.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <ax:variable name="result">
+ <fo:block xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="{$title1.font.size}" font-family="{$title.font.family}" font-weight="bold">
+<xsl:call-template name="bibliography.title">
+<xsl:with-param name="node" select="."/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="bibliography.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="bibliodiv.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="bibliodiv.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="bibliodiv" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="bibliodiv.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="{$title2.font.size}" font-family="{$title.font.family}" font-weight="bold">
+<xsl:apply-templates mode="bibliodiv.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/title">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="glossary.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="glossary" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="glossary.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="{$title1.font.size}" font-family="{$title.font.family}" font-weight="bold">
+<xsl:apply-templates mode="glossary.title" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.recto">
+ <ax:variable name="result">
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle[not(self::processing-instruction('se:choice'))]"/>
+ </xsl:when>
+ </xsl:choose>
+</ax:variable>
+
+ <ax:if test="string-length($result)">
+ <fo:block><ax:copy-of select="$result"/>
+ </fo:block>
+ </ax:if>
+ </xsl:template>
+
+<xsl:template name="glossdiv.titlepage">
+ <ax:variable name="result">
+ <xsl:call-template name="glossdiv.titlepage.recto"/>
+
+ </ax:variable><ax:if test="string-length($result)"><fo:block>
+ <ax:copy-of select="$result"/></fo:block></ax:if>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="serna.fold">
+ <fo:block se:fold="" color="gray">
+ <se:fold show-element-name="false"/><xsl:apply-templates select="title" mode="glossdiv.titlepage.recto.auto.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="{$title2.font.size}" font-family="{$title.font.family}" font-weight="bold">
+<xsl:apply-templates mode="glossdiv.titles.mode" select=".">
+</xsl:apply-templates>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.font.family}">
+<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+</ax:stylesheet> \ No newline at end of file
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.xsl
new file mode 100644
index 0000000..a169ec7
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/titlepage.xsl
@@ -0,0 +1,772 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+<xsl:attribute-set name="book.titlepage.recto.style">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="concat($body.font.master,'pt')"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="book.titlepage.verso.style">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="concat(0.83 * $body.font.master,'pt')"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="article.titlepage.recto.style"/>
+<xsl:attribute-set name="article.titlepage.verso.style"/>
+
+<xsl:attribute-set name="set.titlepage.recto.style"/>
+<xsl:attribute-set name="set.titlepage.verso.style"/>
+
+<xsl:attribute-set name="part.titlepage.recto.style">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="part.titlepage.verso.style"/>
+
+<xsl:attribute-set name="partintro.titlepage.recto.style"/>
+<xsl:attribute-set name="partintro.titlepage.verso.style"/>
+
+<xsl:attribute-set name="reference.titlepage.recto.style"/>
+<xsl:attribute-set name="reference.titlepage.verso.style"/>
+
+<xsl:attribute-set name="dedication.titlepage.recto.style"/>
+<xsl:attribute-set name="dedication.titlepage.verso.style"/>
+
+<xsl:attribute-set name="preface.titlepage.recto.style"/>
+<xsl:attribute-set name="preface.titlepage.verso.style"/>
+
+<xsl:attribute-set name="chapter.titlepage.recto.style"/>
+<xsl:attribute-set name="chapter.titlepage.verso.style"/>
+
+<xsl:attribute-set name="appendix.titlepage.recto.style"/>
+<xsl:attribute-set name="appendix.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliography.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliography.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliodiv.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliodiv.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossary.titlepage.recto.style"/>
+<xsl:attribute-set name="glossary.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossdiv.titlepage.recto.style"/>
+<xsl:attribute-set name="glossdiv.titlepage.verso.style"/>
+
+<xsl:attribute-set name="index.titlepage.recto.style"/>
+<xsl:attribute-set name="index.titlepage.verso.style"/>
+
+<xsl:attribute-set name="setindex.titlepage.recto.style"/>
+<xsl:attribute-set name="setindex.titlepage.verso.style"/>
+
+<xsl:attribute-set name="indexdiv.titlepage.recto.style"/>
+<xsl:attribute-set name="indexdiv.titlepage.verso.style"/>
+
+<xsl:attribute-set name="colophon.titlepage.recto.style"/>
+<xsl:attribute-set name="colophon.titlepage.verso.style"/>
+
+<xsl:attribute-set name="section.titlepage.recto.style">
+ <xsl:attribute name="keep-together">always</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="section.titlepage.verso.style">
+ <xsl:attribute name="keep-together">always</xsl:attribute>
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="sect1.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect1.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect2.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect2.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect3.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect3.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect4.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect4.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect5.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect5.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="simplesect.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="simplesect.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsynopsisdiv.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsynopsisdiv.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsection.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsection.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsect1.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsect1.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsect2.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsect2.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsect3.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsect3.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
+<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.procedures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.procedures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
+
+<!-- ==================================================================== -->
+<dtm:doc dtm:idref="all.titlepage-mode"/>
+<xsl:template match="*" mode="titlepage.mode" dtm:id="all.titlepage-mode">
+ <!-- if an element isn't found in this mode, try the default mode -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<dtm:doc dtm:idref="abbrev.titlepage-mode"/>
+<xsl:template match="abbrev" mode="titlepage.mode" dtm:id="abbrev.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="abstract.titlepage-mode"/>
+<xsl:template match="abstract" mode="titlepage.mode" dtm:id="abstract.titlepage-mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="abstract/title" dtm:idref="title.abstract.titlepage-mode title.titlepage-title-mode"/>
+<xsl:template match="abstract/title" mode="titlepage.mode" dtm:id="title.abstract.titlepage-mode"/>
+
+<xsl:template match="abstract/title" mode="titlepage.abstract.title.mode" dtm:id="title.titlepage-title-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="address.titlepage-mode"/>
+<xsl:template match="address" mode="titlepage.mode" dtm:id="address.titlepage-mode">
+ <!-- use the normal address handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<dtm:doc dtm:idref="affiliation.titlepage-mode"/>
+<xsl:template match="affiliation" mode="titlepage.mode" dtm:id="affiliation.titlepage-mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="artpagenums.titlepage-mode"/>
+<xsl:template match="artpagenums" mode="titlepage.mode" dtm:id="artpagenums.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="author.titlepage-mode"/>
+<xsl:template match="author" mode="titlepage.mode" dtm:id="author.titlepage-mode">
+ <fo:block>
+ <xsl:call-template name="person.name"/>
+ <xsl:if test="affiliation/orgname">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/>
+ </xsl:if>
+ <xsl:if test="email|affiliation/address/email">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="(email|affiliation/address/email)[1]"/>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="authorblurb.titlepage-mode"/>
+<xsl:template match="authorblurb" mode="titlepage.mode" dtm:id="authorblurb.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="authorgroup.titlepage-mode"/>
+<xsl:template match="authorgroup" mode="titlepage.mode" dtm:id="authorgroup.titlepage-mode">
+ <fo:wrapper>
+ <xsl:if test="@id">
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:wrapper>
+</xsl:template>
+
+<dtm:doc dtm:idref="authorinitials.titlepage-mode"/>
+<xsl:template match="authorinitials" mode="titlepage.mode" dtm:id="authorinitials.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="bibliomisc.titlepage-mode"/>
+<xsl:template match="bibliomisc" mode="titlepage.mode" dtm:id="bibliomisc.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="bibliomset.titlepage-mode"/>
+<xsl:template match="bibliomset" mode="titlepage.mode" dtm:id="bibliomset.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="collab.titlepage-mode"/>
+<xsl:template match="collab" mode="titlepage.mode" dtm:id="collab.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="confgroup.titlepage-mode"/>
+<xsl:template match="confgroup" mode="titlepage.mode" dtm:id="confgroup.titlepage-mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="confdates.titlepage-mode"/>
+<xsl:template match="confdates" mode="titlepage.mode" dtm:id="confdates.titlepage-mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="conftitle.titlepage-mode"/>
+<xsl:template match="conftitle" mode="titlepage.mode" dtm:id="conftitle.titlepage-mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="confnum.titlepage-mode"/>
+<xsl:template match="confnum" mode="titlepage.mode" dtm:id="confnum.titlepage-mode">
+ <!-- suppress -->
+</xsl:template>
+
+<dtm:doc dtm:idref="contractnum.titlepage-mode"/>
+<xsl:template match="contractnum" mode="titlepage.mode" dtm:id="contractnum.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="contractsponsor.titlepage-mode"/>
+<xsl:template match="contractsponsor" mode="titlepage.mode" dtm:id="contractsponsor.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="contrib.titlepage-mode"/>
+<xsl:template match="contrib" mode="titlepage.mode" dtm:id="contrib.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="copyright.titlepage-mode"/>
+<xsl:template match="copyright" mode="titlepage.mode" dtm:id="copyright.titlepage-mode">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'copyright'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="year.titlepage-mode"/>
+<xsl:template match="year" mode="titlepage.mode" dtm:id="year.titlepage-mode">
+ <fo:inline
+ border-left-width="0pt"
+ border-right-width="0pt"><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="holder.titlepage-mode"/>
+<xsl:template match="holder" mode="titlepage.mode" dtm:id="holder.titlepage-mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="corpauthor.titlepage-mode"/>
+<xsl:template match="corpauthor" mode="titlepage.mode" dtm:id="corpauthor.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="corpname.titlepage-mode"/>
+<xsl:template match="corpname" mode="titlepage.mode" dtm:id="corpname.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="date.titlepage-mode"/>
+<xsl:template match="date" mode="titlepage.mode" dtm:id="date.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="edition.titlepage-mode"/>
+<xsl:template match="edition" mode="titlepage.mode" dtm:id="edition.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'edition'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="editor.titlepage-mode"/>
+<xsl:template match="editor" mode="titlepage.mode" dtm:id="editor.titlepage-mode">
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="editor[1].titlepage-mode"/>
+<xsl:template match="editor[1]" priority="2" mode="titlepage.mode" dtm:id="editor[1].titlepage-mode">
+ <xsl:text>TODO: edited by </xsl:text>
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="firstname.titlepage-mode"/>
+<xsl:template match="firstname" mode="titlepage.mode" dtm:id="firstname.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="graphic.titlepage-mode"/>
+<xsl:template match="graphic" mode="titlepage.mode" dtm:id="graphic.titlepage-mode">
+ <!-- use the normal graphic handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<dtm:doc dtm:idref="honorific.titlepage-mode"/>
+<xsl:template match="honorific" mode="titlepage.mode" dtm:id="honorific.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="isbn.titlepage-mode"/>
+<xsl:template match="isbn" mode="titlepage.mode" dtm:id="isbn.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="issn.titlepage-mode"/>
+<xsl:template match="issn" mode="titlepage.mode" dtm:id="issn.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="biblioid.titlepage-mode"/>
+<xsl:template match="biblioid" mode="titlepage.mode" dtm:id="biblioid.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="itermset.titlepage-mode"/>
+<xsl:template match="itermset" mode="titlepage.mode" dtm:id="itermset.titlepage-mode">
+ <!-- discard -->
+</xsl:template>
+
+<dtm:doc dtm:idref="invpartnumber.titlepage-mode"/>
+<xsl:template match="invpartnumber" mode="titlepage.mode" dtm:id="invpartnumber.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="issuenum.titlepage-mode"/>
+<xsl:template match="issuenum" mode="titlepage.mode" dtm:id="issuenum.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="jobtitle.titlepage-mode"/>
+<xsl:template match="jobtitle" mode="titlepage.mode" dtm:id="jobtitle.titlepage-mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="keywordset.titlepage-mode"/>
+<xsl:template match="keywordset" mode="titlepage.mode" dtm:id="keywordset.titlepage-mode">
+</xsl:template>
+
+<dtm:doc dtm:idref="legalnotice.titlepage-mode"/>
+<xsl:template match="legalnotice" mode="titlepage.mode" dtm:id="legalnotice.titlepage-mode">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="plain.formal.title.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="formal.title.gentext">
+ <xsl:with-param name="key" select="'legalnotice'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="*[local-name(.) != 'title']"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:elements="legalnotice/title" dtm:idref="title.legalnotice.titlepage-mode title.legalnotice.titlepage-title-mode"/>
+<xsl:template match="legalnotice/title" mode="titlepage.mode" dtm:id="title.legalnotice.titlepage-mode">
+</xsl:template>
+
+<xsl:template match="legalnotice/title" mode="titlepage.legalnotice.title.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="lineage.titlepage-mode"/>
+<xsl:template match="lineage" mode="titlepage.mode" dtm:id="lineage.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="modespec.titlepage-mode"/>
+<xsl:template match="modespec" mode="titlepage.mode" dtm:id="modespec.titlepage-mode">
+ <!-- discard -->
+</xsl:template>
+
+<dtm:doc dtm:idref="orgdiv.titlepage-mode"/>
+<xsl:template match="orgdiv" mode="titlepage.mode" dtm:id="orgdiv.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="orgname.titlepage-mode"/>
+<xsl:template match="orgname" mode="titlepage.mode" dtm:id="orgname.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="othercredit.titlepage-mode"/>
+<xsl:template match="othercredit" mode="titlepage.mode" dtm:id="othercredit.titlepage-mode">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
+ </fo:block>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><xsl:call-template name="person.name"/></fo:block>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="othercredit.titlepage-othercredits"/>
+<xsl:template match="othercredit" mode="titlepage.othercredits" dtm:id="othercredit.titlepage-othercredits">
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="othername.titlepage-mode"/>
+<xsl:template match="othername" mode="titlepage.mode" dtm:id="othername.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="pagenums.titlepage-mode"/>
+<xsl:template match="pagenums" mode="titlepage.mode" dtm:id="pagenums.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="printhistory.titlepage-mode"/>
+<xsl:template match="printhistory" mode="titlepage.mode" dtm:id="printhistory.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="productname.titlepage-mode"/>
+<xsl:template match="productname" mode="titlepage.mode" dtm:id="productname.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="productnumber.titlepage-mode"/>
+<xsl:template match="productnumber" mode="titlepage.mode" dtm:id="productnumber.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="pubdate.titlepage-mode"/>
+<xsl:template match="pubdate" mode="titlepage.mode" dtm:id="pubdate.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="publisher.titlepage-mode"/>
+<xsl:template match="publisher" mode="titlepage.mode" dtm:id="publisher.titlepage-mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="publishername.titlepage-mode"/>
+<xsl:template match="publishername" mode="titlepage.mode" dtm:id="publishername.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="pubsnumber.titlepage-mode"/>
+<xsl:template match="pubsnumber" mode="titlepage.mode" dtm:id="pubsnumber.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="releaseinfo.titlepage-mode"/>
+<xsl:template match="releaseinfo" mode="titlepage.mode" dtm:id="releaseinfo.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="revhistory.titlepage-mode"/>
+<xsl:template match="revhistory" mode="titlepage.mode" dtm:id="revhistory.titlepage-mode">
+ <fo:table table-layout="fixed">
+ <fo:table-column column-number="1" column-width="33%"/>
+ <fo:table-column column-number="2" column-width="33%"/>
+ <fo:table-column column-number="3" column-width="33%"/>
+ <fo:table-body>
+ <fo:table-row>
+ <fo:table-cell number-columns-spanned="3">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'revhistory'"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<dtm:doc dtm:idref="revision.revhistory.titlepage-mode"/>
+<xsl:template match="revhistory/revision" mode="titlepage.mode" dtm:id="revision.revhistory.titlepage-mode">
+ <xsl:variable name="revnumber" select=".//revnumber"/>
+ <xsl:variable name="revdate" select=".//date"/>
+ <xsl:variable name="revauthor" select=".//authorinitials"/>
+ <xsl:variable name="revremark" select=".//revremark|.//revdescription"/>
+ <fo:table-row>
+ <fo:table-cell>
+ <fo:block>
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'revision'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
+ </xsl:if>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block>
+ <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block>
+ <xsl:apply-templates select="$revauthor[1]" mode="titlepage.mode"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <xsl:if test="$revremark">
+ <fo:table-row>
+ <fo:table-cell number-columns-spanned="3">
+ <fo:block>
+ <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="revnumber.revision.titlepage-mode"/>
+<xsl:template match="revision/revnumber" mode="titlepage.mode" dtm:id="revnumber.revision.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="date.revision.titlepage-mode"/>
+<xsl:template match="revision/date" mode="titlepage.mode" dtm:id="date.revision.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="authorinitials.revision.titlepage-mode"/>
+<xsl:template match="revision/authorinitials" mode="titlepage.mode" dtm:id="authorinitials.revision.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="revremark.revision.titlepage-mode"/>
+<xsl:template match="revision/revremark" mode="titlepage.mode" dtm:id="revremark.revision.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="revdescription.revision.titlepage-mode"/>
+<xsl:template match="revision/revdescription" mode="titlepage.mode" dtm:id="revdescription.revision.titlepage-mode">
+ <fo:block text-align="left">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="seriesvolnums.titlepage-mode"/>
+<xsl:template match="seriesvolnums" mode="titlepage.mode" dtm:id="seriesvolnums.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="shortaffil.titlepage-mode"/>
+<xsl:template match="shortaffil" mode="titlepage.mode" dtm:id="shortaffil.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="subjectset.titlepage-mode"/>
+<xsl:template match="subjectset" mode="titlepage.mode" dtm:id="subjectset.titlepage-mode">
+ <!-- discard -->
+</xsl:template>
+
+<dtm:doc dtm:idref="subtitle.titlepage-mode"/>
+<xsl:template match="subtitle" mode="titlepage.mode" dtm:id="subtitle.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="surname.titlepage-mode"/>
+<xsl:template match="surname" mode="titlepage.mode" dtm:id="surname.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.titlepage-mode"/>
+<xsl:template match="title" mode="titlepage.mode" dtm:id="title.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="titleabbrev.titlepage-mode"/>
+<xsl:template match="titleabbrev" mode="titlepage.mode" dtm:id="titleabbrev.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="volumenum.titlepage-mode"/>
+<xsl:template match="volumenum" mode="titlepage.mode" dtm:id="volumenum.titlepage-mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Book templates -->
+
+<!-- Note: these templates cannot use *.titlepage.recto.mode or
+ *.titlepage.verso.mode. If they do then subsequent use of a custom
+ titlepage.templates.xml file will not work correctly. -->
+
+<!-- book recto -->
+<dtm:doc dtm:idref="authorgroup.bookinfo.titlepage-mode"/>
+<xsl:template match="bookinfo/authorgroup" mode="titlepage.mode" priority="2" dtm:id="authorgroup.bookinfo.titlepage-mode">
+ <fo:block>
+ <xsl:if test="@id">
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="person.name.list"/>
+ </fo:block>
+</xsl:template>
+
+<!-- book verso -->
+<dtm:doc dtm:idref="book.verso.title"/>
+<xsl:template name="book.verso.title" dtm:id="book.verso.title">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+
+ <xsl:if test="following-sibling::subtitle
+ |following-sibling::bookinfo/subtitle">
+ <xsl:text>: </xsl:text>
+
+ <xsl:apply-templates select="(following-sibling::subtitle
+ |following-sibling::bookinfo/subtitle)[1]"
+ mode="book.verso.subtitle.mode"/>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="subtitle.book.verso.mode"/>
+<xsl:template match="subtitle" mode="book.verso.subtitle.mode" dtm:id="subtitle.book.verso.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:if test="following-sibling::subtitle">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="following-sibling::subtitle[1]"
+ mode="book.verso.subtitle.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="verso.authorgroup"/>
+<xsl:template name="verso.authorgroup" dtm:id="verso.authorgroup">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="person.name.list"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="author.bookinfo.titlepage-mode"/>
+<xsl:template match="bookinfo/author" mode="titlepage.mode" priority="2" dtm:id="author.bookinfo.titlepage-mode">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="person.name"/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="corpauthor.bookinfo.titlepage-mode"/>
+<xsl:template match="bookinfo/corpauthor" mode="titlepage.mode" priority="2" dtm:id="corpauthor.bookinfo.titlepage-mode">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="pubdate.bookinfo.titlepage-mode"/>
+<xsl:template match="bookinfo/pubdate" mode="titlepage.mode" priority="2" dtm:id="pubdate.bookinfo.titlepage-mode">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'published'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/titles.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/titles.xsl
new file mode 100644
index 0000000..86799e4
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/titles.xsl
@@ -0,0 +1,511 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ xmlns:se="http://syntext.com/XSL/Format-1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ version='1.0'>
+
+ <!-- This template helps to see chapter when its titlethings are
+ still empty -->
+
+ <dtm:doc dtm:idref="handle.empty"/>
+ <xsl:template name="handle.empty" dtm:id="handle.empty">
+ <xsl:param name="titles" select="''"/>
+ <xsl:param name="preamble" select="''"/>
+ <xsl:param name="content" select="*"/>
+
+ <xsl:variable name="toc">
+ <xsl:call-template name="decorations"/>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:call-template name="get.type"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($titles)">
+ <xsl:copy-of select="$titles"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="empty.title.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="contains($toc, 'toc')">
+ <xsl:choose>
+ <xsl:when test="self::set">
+ <xsl:call-template name="set.toc"/>
+ </xsl:when>
+ <xsl:when test="$type = 'division'">
+ <xsl:call-template name="division.toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="component.toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$show.preamble.editing">
+ <fo:block padding-bottom="0.5em">
+ <fo:block xsl:use-attribute-sets="preamble.attributes">
+ <fo:block background-color="transparent"
+ xsl:use-attribute-sets="title.content.properties formal.title.properties">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'draftarea'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>" </xsl:text>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'metainfo'"/>
+ <xsl:with-param name="context" select="'empty'"/>
+ </xsl:call-template>
+ <xsl:text>. </xsl:text>
+ </fo:block>
+ <xsl:apply-templates select="$preamble"/>
+ </fo:block>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="processing-instruction('se:choice')">
+ <fo:block>
+ <xsl:apply-templates select="processing-instruction('se:choice')"/>
+ </fo:block>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates select="$content"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="sbpr.empty-title-mode"/>
+ <xsl:template match="set|book|part|reference" mode="empty.title.mode" dtm:id="sbpr.empty-title-mode">
+ <fo:block
+ background-color="#e0e0e0"
+ xsl:use-attribute-sets="title.content.properties
+ division.title.properties">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'empty'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="aacp.empty-title-mode"/>
+ <xsl:template match="appendix|article|chapter|preface" mode="empty.title.mode" dtm:id="aacp.empty-title-mode">
+ <fo:block
+ background-color="#e0e0e0"
+ xsl:use-attribute-sets="title.content.properties
+ component.title.properties">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'empty'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="sections.empty-title-mode"/>
+ <xsl:template match="section|sect1|sect2|sect3|sect4|sect5|bibliodiv|glossary"
+ mode="empty.title.mode" dtm:id="sections.empty-title-mode">
+ <fo:block
+ background-color="#e0e0e0"
+ xsl:use-attribute-sets="title.content.properties
+ section.title.level1.properties">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'empty'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="all.empty-title-mode"/>
+ <xsl:template match="*" mode="empty.title.mode" dtm:id="all.empty-title-mode">
+ <fo:block>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'empty'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="empty-title"/>
+ <xsl:template name="empty-title" dtm:id="empty-title">
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'empty'"/>
+ <xsl:with-param name="name" select="'title'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Commonly met elements -->
+
+ <dtm:doc dtm:idref="titles.count"/>
+ <xsl:template name="count.title" dtm:id="titles.count">
+ <xsl:param name="need.dot"/>
+ <xsl:choose>
+ <xsl:when test="self::title or self::subtitle">
+ <xsl:for-each select="..">
+ <xsl:call-template name="count.title">
+ <xsl:with-param name="need.dot" select="$need.dot"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="ancestor::appendix">
+ <xsl:number level="multiple" count="appendix|section|sect1|
+ sect2|sect3|sect4|sect5|simplesect" format="A.1."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="multiple" count="chapter|section|sect1|
+ sect2|sect3|sect4|sect5|simplesect" format="1.1."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$need.dot">
+ <xsl:number level="any" from="chapter|article|book|part"
+ format="1. "/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="chapter|article|book|part"
+ format="1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="title.formal-title-mode"/>
+ <xsl:template match="title" mode="formal.title.mode" dtm:id="title.formal-title-mode">
+ <xsl:param name="key" select="''"/>
+ <xsl:variable name="title">
+ <fo:inline>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$key"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="count.title">
+ <xsl:with-param name="need.dot" select="1"/>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <fo:block
+ xsl:use-attribute-sets="title.content.properties formal.title.properties">
+ <xsl:choose>
+ <xsl:when test="string-length($title)">
+ <xsl:copy-of select="$title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Title:</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="title.formal-title-mode"/>
+ <xsl:template match="title" mode="plain.formal.title.mode">
+ <fo:block
+ xsl:use-attribute-sets="title.content.properties formal.title.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="formal-title-gentext"/>
+ <xsl:template name="formal.title.gentext" dtm:id="formal-title-gentext">
+ <xsl:param name="key" select="''"/>
+ <fo:block
+ xsl:use-attribute-sets="title.content.properties formal.title.properties">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$key"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Article Titles -->
+ <dtm:doc dtm:idref="title.article-titles-mode"/>
+ <xsl:template match="title" mode="article.titles.mode" dtm:id="title.article-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Appendix Titles -->
+ <dtm:doc dtm:idref="title.appendix-titles-mode"/>
+ <xsl:template match="title" mode="appendix.titles.mode" dtm:id="title.appendix-titles-mode">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="$appendix.autolabel">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'appendix'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:number level="single" count="appendix" format="A. "/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="empty-title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Part Titles -->
+ <dtm:doc dtm:idref="title.part-titles-mode"/>
+ <xsl:template match="title" mode="part.titles.mode" dtm:id="title.part-titles-mode">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="$part.autolabel">
+ <xsl:number level="single" count="part" format="I. "/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="empty-title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="title.reference-titles-mode"/>
+ <xsl:template match="title" mode="reference.titles.mode" dtm:id="title.reference-titles-mode">
+ <fo:block
+ xsl:use-attribute-sets="title.content.properties
+ division.title.properties">
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Chapter Titles -->
+ <dtm:doc dtm:idref="title.chapter-titles-mode"/>
+ <xsl:template match="title" mode="chapter.titles.mode" dtm:id="title.chapter-titles-mode">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="$chapter.autolabel">
+ <fo:inline>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'chapter'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:number level="single" count="chapter" format="1. "/>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="empty-title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Simplesect titles -->
+ <dtm:doc dtm:idref="title.simplesect-titles-mode"/>
+ <xsl:template match="title" mode="simplesect.titles.mode" dtm:id="title.simplesect-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Preface Titles -->
+ <dtm:doc dtm:idref="title.preface-titles-mode"/>
+ <xsl:template match="title" mode="preface.titles.mode" dtm:id="title.preface-titles-mode">
+ <fo:block>
+ <xsl:choose>
+ <xsl:when test="$preface.autolabel">
+ <fo:inline>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'preface'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:number level="single" count="preface" format="I. "/>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="empty-title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Section Titles -->
+ <dtm:doc dtm:idref="title.section-titles-mode"/>
+ <xsl:template match="title" mode="section.titles.mode" dtm:id="title.section-titles-mode">
+ <xsl:param name="level">
+ <xsl:call-template name="section.level"/>
+ </xsl:param>
+ <xsl:param name="heading">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'section'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ </xsl:param>
+ <xsl:variable name="title.content">
+ <xsl:choose>
+ <xsl:when test="$section.autolabel">
+ <xsl:if test="not(ancestor::refentry)">
+ <xsl:value-of select="$heading"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$section.label.includes.component.label">
+ <xsl:choose>
+ <xsl:when test="ancestor::appendix">
+ <xsl:number
+ level="multiple"
+ count="appendix|section|sect1|sect2|sect3|sect4|sect5|
+ refsect1|refsect2|refsect3"
+ format="A.1. "/>
+ </xsl:when>
+ <xsl:when test="ancestor::refentry">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number
+ level="multiple"
+ count="chapter|qandadiv|section|
+ sect1|sect2|sect3|sect4|sect5|
+ refsect1|refsect2|refsect3"
+ format="1. "/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number
+ level="multiple"
+ count="qandadiv|section|sect1|sect2|sect3|sect4|sect5|
+ refsect1|refsect2|refsect3"
+ format="1. "/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="empty-title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$level = 1">
+ <fo:block
+ xsl:use-attribute-sets="section.title.level1.properties">
+ <xsl:copy-of select="$title.content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level = 2">
+ <fo:block
+ xsl:use-attribute-sets="section.title.level2.properties">
+ <xsl:copy-of select="$title.content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level = 3">
+ <fo:block
+ xsl:use-attribute-sets="section.title.level3.properties">
+ <xsl:copy-of select="$title.content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level = 4">
+ <fo:block
+ xsl:use-attribute-sets="section.title.level4.properties">
+ <xsl:copy-of select="$title.content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level = 5">
+ <fo:block
+ xsl:use-attribute-sets="section.title.level5.properties">
+ <xsl:copy-of select="$title.content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block
+ xsl:use-attribute-sets="section.title.level5.properties">
+ <xsl:copy-of select="$title.content"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Set Titles -->
+ <dtm:doc dtm:idref="title.set-titles-mode"/>
+ <xsl:template match="title" mode="set.titles.mode" dtm:id="title.set-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Book Titles -->
+ <dtm:doc dtm:idref="title.book-titles-mode"/>
+ <xsl:template match="title" mode="book.titles.mode" dtm:id="title.book-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Bibliodiv Titles -->
+ <dtm:doc dtm:idref="title.bibliodiv-titles-mode"/>
+ <xsl:template match="title" mode="bibliodiv.titles.mode" dtm:id="title.bibliodiv-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Bibliography Titles -->
+ <dtm:doc dtm:idref="bibliography.title"/>
+ <xsl:template name="bibliography.title" dtm:id="bibliography.title">
+ <xsl:param name="node" select="."/>
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'bibliography'"/>
+ </xsl:call-template>
+ </fo:block>
+ <xsl:apply-templates select="title"/>
+ </xsl:template>
+
+ <!-- Glossary Titles -->
+ <dtm:doc dtm:idref="title.glossary-titles-mode"/>
+ <xsl:template name="title" mode="glossary.titles.mode" dtm:id="title.glossary-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Glossdiv Titles -->
+ <dtm:doc dtm:idref="title.glossdiv-titles-mode"/>
+ <xsl:template match="title" mode="glossdiv.titles.mode" dtm:id="title.glossdiv-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Information wrappers -->
+ <dtm:doc dtm:idref="infoes"/>
+ <xsl:template match="articleinfo|artheader|bookbiblio|docinfo|objectinfo|refsynopsisdivinfo|sect1info|sect2info|sect3info|sect4info|sect5info|sectioninfo|setinfo" dtm:id="infoes">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="title.refsynopsisdiv-titles-mode"/>
+ <xsl:template match="title" mode="refsynopsisdiv.titles.mode" dtm:id="title.refsynopsisdiv-titles-mode">
+ <fo:block>
+ <xsl:call-template name="empty-title"/>
+ </fo:block>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="serna.fold.template"/>
+ <xsl:template name="serna.fold.template" dtm:id="serna.fold.template">
+ <xsl:apply-templates select="." mode="serna.fold"
+ xse:apply-serna-fold-template="false"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="all.serna-fold"/>
+ <xsl:template match="*" mode="serna.fold" dtm:id="all.serna-fold">
+ <se:fold se:fold=""/>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.labels.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.labels.xsl
new file mode 100644
index 0000000..92a9fc7
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.labels.xsl
@@ -0,0 +1,553 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<dtm:doc dtm:idref="all.intralabel-punctuation"/>
+<xsl:template match="*" mode="intralabel.punctuation" dtm:id="all.intralabel-punctuation">
+ <xsl:text>.</xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.label-markup"/>
+<xsl:template match="*" mode="label.markup" dtm:id="all.label-markup">
+ <xsl:text>UNKNOWN LABEL MARKUP</xsl:text>
+</xsl:template>
+
+<dtm:doc dtm:idref="sb.label-markup"/>
+<xsl:template match="set|book" mode="label.markup" dtm:id="sb.label-markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="part.label-markup"/>
+<xsl:template match="part" mode="label.markup" dtm:id="part.label-markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$part.autolabel != 0">
+ <xsl:number from="book" count="part" format="I"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="partintro.label-markup"/>
+<xsl:template match="partintro" mode="label.markup" dtm:id="partintro.label-markup">
+ <!-- no label -->
+</xsl:template>
+
+<dtm:doc dtm:idref="preface.label-markup"/>
+<xsl:template match="preface" mode="label.markup" dtm:id="preface.label-markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$preface.autolabel != 0">
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="preface" format="1" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="preface" format="1" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="chapter.label-markup"/>
+<xsl:template match="chapter" mode="label.markup" dtm:id="chapter.label-markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$chapter.autolabel != 0">
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="chapter" format="1" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="chapter" format="1" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="appendix.label-markup"/>
+<xsl:template match="appendix" mode="label.markup" dtm:id="appendix.label-markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$appendix.autolabel != 0">
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="appendix" format="A" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book|article"
+ count="appendix" format="A" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="article.label-markup"/>
+<xsl:template match="article" mode="label.markup" dtm:id="article.label-markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="dc.label-markup"/>
+<xsl:template match="dedication|colophon" mode="label.markup" dtm:id="dc.label-markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="reference.label-markup"/>
+<xsl:template match="reference" mode="label.markup" dtm:id="reference.label-markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$part.autolabel != 0">
+ <xsl:number from="book" count="reference" format="I" level="any"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="refentry.label-markup"/>
+<xsl:template match="refentry" mode="label.markup" dtm:id="refentry.label-markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="section.label-markup"/>
+<xsl:template match="section" mode="label.markup" dtm:id="section.label-markup">
+ <!-- if this is a nested section, label the parent -->
+ <xsl:if test="local-name(..) = 'section'">
+ <xsl:variable name="parent.section.label">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- does this section get labelled? -->
+ <xsl:variable name="label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:if>
+
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$label != 0">
+ <xsl:number count="section"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="sect1.label-markup"/>
+<xsl:template match="sect1" mode="label.markup" dtm:id="sect1.label-markup">
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:number count="sect1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="sections.label-markup"/>
+<xsl:template match="sect2|sect3|sect4|sect5" mode="label.markup" dtm:id="sections.label-markup">
+ <!-- label the parent -->
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'sect2'">
+ <xsl:number count="sect2"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect3'">
+ <xsl:number count="sect3"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect4'">
+ <xsl:number count="sect4"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect5'">
+ <xsl:number count="sect5"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="bridgehead.label-markup"/>
+<xsl:template match="bridgehead" mode="label.markup" dtm:id="bridgehead.label-markup">
+ <!-- FIXME: could we do a better job here? -->
+ <xsl:variable name="contsec"
+ select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface)[last()]"/>
+
+ <xsl:apply-templates select="$contsec" mode="label.markup" xse:apply-serna-fold-template="false"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="refsect1.label-markup"/>
+<xsl:template match="refsect1" mode="label.markup" dtm:id="refsect1.label-markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:number count="refsect1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="refsects.label-markup"/>
+<xsl:template match="refsect2|refsect3" mode="label.markup" dtm:id="refsects.label-markup">
+ <!-- label the parent -->
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'refsect2'">
+ <xsl:number count="refsect2"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number count="refsect3"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="simplesect.label-markup"/>
+<xsl:template match="simplesect" mode="label.markup" dtm:id="simplesect.label-markup">
+ <!-- if this is a nested section, label the parent -->
+ <xsl:if test="local-name(..) = 'section'
+ or local-name(..) = 'sect1'
+ or local-name(..) = 'sect2'
+ or local-name(..) = 'sect3'
+ or local-name(..) = 'sect4'
+ or local-name(..) = 'sect5'">
+ <xsl:variable name="parent.section.label">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- does this section get labelled? -->
+ <xsl:variable name="label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$label != 0">
+ <xsl:number count="simplesect"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="qandadiv.label-markup"/>
+<xsl:template match="qandadiv" mode="label.markup" dtm:id="qandadiv.label-markup">
+ <xsl:variable name="lparent" select="(ancestor::set
+ |ancestor::book
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3)[last()]"/>
+
+ <xsl:variable name="lparent.prefix">
+ <xsl:apply-templates select="$lparent" mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="$qanda.inherit.numeration != 0">
+ <xsl:if test="$lparent.prefix != ''">
+ <xsl:apply-templates select="$lparent" mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select="$lparent" mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="$prefix"/>
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$qandadiv.autolabel != 0">
+ <xsl:value-of select="$prefix"/>
+ <xsl:number level="multiple" count="qandadiv" format="1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="bgis.label-markup"/>
+<xsl:template match="bibliography|glossary|index|setindex" mode="label.markup" dtm:id="bgis.label-markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="ftep.label-markup"/>
+<xsl:template match="figure|table|example|procedure" mode="label.markup" dtm:id="ftep.label-markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'procedure' and
+ $formal.procedures = 0">
+ <!-- No label -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="count.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<dtm:doc dtm:idref="equation.label-markup"/>
+<xsl:template match="equation" mode="label.markup" dtm:id="equation.label-markup">
+ <xsl:variable name="pchap"
+ select="ancestor::chapter
+ |ancestor::appendix
+ |ancestor::article[ancestor::book]"/>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="count($pchap) &gt; 0">
+ <xsl:apply-templates select="$pchap" mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="count($pchap)>0">
+ <xsl:if test="$prefix != ''">
+ <xsl:apply-templates select="$pchap" mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select="$pchap" mode="intralabel.punctuation" xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ <xsl:number format="1" count="equation[title]" from="chapter|appendix" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number format="1" count="equation[title]" from="book|article" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="abstract.label-markup"/>
+<xsl:template match="abstract" mode="label.markup" dtm:id="abstract.label-markup">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="label.this.sect"/>
+<xsl:template name="label.this.section" dtm:id="label.this.sect">
+ <xsl:param name="section" select="."/>
+ <xsl:value-of select="$section.autolabel"/>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="qa.label-markup"/>
+<xsl:template match="question|answer" mode="label.markup" dtm:id="qa.label-markup">
+ <!-- xsl:variable name="lparent" select="(ancestor::set
+ |ancestor::book
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3)[last()]"/ -->
+
+ <!-- xsl:variable name="lparent.prefix">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ </xsl:variable -->
+
+ <xsl:variable name="prefix">
+ <xsl:if test="$qanda.inherit.numeration != 0">
+ <!-- xsl:if test="$lparent.prefix != ''">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ <xsl:apply-templates select="$lparent" mode="intralabel.punctuation"/>
+ </xsl:if -->
+ <xsl:if test="ancestor::qandadiv">
+ <xsl:apply-templates select="ancestor::qandadiv[1]" mode="label.markup" xse:apply-serna-fold-template="false"/>
+ <xsl:apply-templates select="ancestor::qandadiv[1]"
+ mode="intralabel.punctuation"
+ xse:apply-serna-fold-template="false"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="inhlabel"
+ select="ancestor-or-self::qandaset/@defaultlabel[1]"/>
+
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="$inhlabel != ''">
+ <xsl:value-of select="$inhlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="label" select="label[not(self::processing-instruction('se:choice'))]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($label)>0">
+ <xsl:apply-templates select="$label" xse:apply-serna-fold-template="false"/>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'qanda' and self::question">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Question'"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'qanda' and self::answer">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Answer'"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'number' and self::question">
+ <xsl:value-of select="$prefix"/>
+ <xsl:number level="multiple" count="qandaentry" format="1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.titles.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.titles.xsl
new file mode 100644
index 0000000..0c877a2
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.titles.xsl
@@ -0,0 +1,525 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<dtm:doc dtm:idref="all.title-markup"/>
+<xsl:template match="*" mode="title.markup" dtm:id="title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="self::partintro">
+ <!-- partintro's don't have titles, use the parent (part or reference)
+ title instead. -->
+ <xsl:apply-templates select="parent::*" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???TITLE???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.title-markup"/>
+<xsl:template match="title" mode="title.markup" dtm:id="title.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="set.title-markup"/>
+<xsl:template match="set" mode="title.markup" dtm:id="set.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(setinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="book.title-markup"/>
+<xsl:template match="book" mode="title.markup" dtm:id="book.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(bookinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="part.title-markup"/>
+<xsl:template match="part" mode="title.markup" dtm:id="part.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="((partinfo|docinfo)/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="pca.title-markup"/>
+<xsl:template match="preface|chapter|appendix" mode="title.markup" dtm:id="pca.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:variable name="title" select="((docinfo|prefaceinfo
+ |chapterinfo|appendixinfo)/title
+ |title)[1]"/>
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="dedication.title-markup"/>
+<xsl:template match="dedication" mode="title.markup" dtm:id="dedication.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Dedication'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="colophon.title-markup"/>
+<xsl:template match="colophon" mode="title.markup" dtm:id="colophon.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Colophon'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="article.title-markup"/>
+<xsl:template match="article" mode="title.markup" dtm:id="article.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="((artheader|articleinfo)/title
+ |title)[1]"/>
+
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="reference.title-markup"/>
+<xsl:template match="reference" mode="title.markup" dtm:id="reference.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="((referenceinfo|docinfo)/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="refentry.title-markup"/>
+<xsl:template match="refentry" mode="title.markup" dtm:id="refentry.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="refmeta" select=".//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select=".//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="title.markup"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>REFENTRY WITHOUT TITLE???</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:copy-of select="$title"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="rr.title-markup"/>
+<xsl:template match="refentrytitle|refname" mode="title.markup" dtm:id="rr.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="sections.title-markup"/>
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3
+ |simplesect"
+ mode="title.markup" dtm:id="sections.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="((sectioninfo|sect1info
+ |sect2info|sect3info
+ |sect4info|sect5info
+ |refsect1info|refsect2info
+ |refsect3info)/title
+ |title)[1]"/>
+
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="bridgehead.title-markup"/>
+<xsl:template match="bridgehead" mode="title.markup" dtm:id="bridgehead.title-markup">
+ <xsl:apply-templates mode="title.markup"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="refsynopsisdiv.title-markup"/>
+<xsl:template match="refsynopsisdiv" mode="title.markup" dtm:id="refsynopsisdiv.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="bibliography.title-markup"/>
+<xsl:template match="bibliography" mode="title.markup" dtm:id="bibliography.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(bibliographyinfo/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Bibliography'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="index.title-markup"/>
+<xsl:template match="index" mode="title.markup" dtm:id="index.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(indexinfo/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Index'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="setindex.title-markup"/>
+<xsl:template match="setindex" mode="title.markup" dtm:id="setindex.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(setindexinfo/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'SetIndex'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="ftee.title-markup"/>
+<xsl:template match="figure|table|example|equation" mode="title.markup" dtm:id="ftee.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="procedure.title-markup"/>
+<xsl:template match="procedure" mode="title.markup" dtm:id="procedure.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<dtm:doc dtm:idref="abstract.title-markup"/>
+<xsl:template match="abstract" mode="title.markup" dtm:id="abstract.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Abstract'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="ctwin.title-markup"/>
+<xsl:template match="caution|tip|warning|important|note" mode="title.markup" dtm:idref="ctwin.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="title[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="self::note">Note</xsl:when>
+ <xsl:when test="self::important">Important</xsl:when>
+ <xsl:when test="self::caution">Caution</xsl:when>
+ <xsl:when test="self::warning">Warning</xsl:when>
+ <xsl:when test="self::tip">Tip</xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="question.title-markup"/>
+<xsl:template match="question" mode="title.markup" dtm:id="question.title-markup">
+ <!-- questions don't have titles -->
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'question'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="answer.title-markup"/>
+<xsl:template match="answer" mode="title.markup" dtm:id="answer.title-markup">
+ <!-- answers don't have titles -->
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'answer'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="qandaentry.title-markup"/>
+<xsl:template match="qandaentry" mode="title.markup" dtm:id="qandaentry.title-markup">
+ <!-- qandaentrys are represented by the first question in them -->
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'question'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<dtm:doc dtm:idref="legalnotice.title-markup"/>
+<xsl:template match="legalnotice" mode="title.markup" dtm:id="legalnotice.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'LegalNotice'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.titleabbrev-markup"/>
+<xsl:template match="*" mode="titleabbrev.markup" dtm:id="all.titleabbrev-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="pca.titleabbrev-markup"/>
+<xsl:template match="preface|chapter|appendix" mode="titleabbrev.markup" dtm:id="pca.titleabbrev-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="((docinfo|prefaceinfo
+ |chapterinfo
+ |appendixinfo)/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="article.titleabbrev-markup"/>
+<xsl:template match="article" mode="titleabbrev.markup" dtm:id="article.titleabbrev-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="((artheader|articleinfo)/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="sections.titleabbrev-markup"/>
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3
+ |simplesect"
+ mode="titleabbrev.markup" dtm:id="sections.titleabbrev-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="((sectioninfo|sect1info
+ |sect2info|sect3info
+ |sect4info|sect5info
+ |refsect1info|refsect2info
+ |refsect3info)/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="titleabbrev.title-markup"/>
+<xsl:template match="titleabbrev" mode="title.markup" dtm:id="titleabbrev.title-markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<dtm:doc dtm:idref="all.no-anchor-mode"/>
+<xsl:template match="*" mode="no.anchor.mode" dtm:id="all.no-anchor-mode">
+ <xsl:apply-templates mode="no.anchor.mode"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="footnote.no-anchor-mode"/>
+<xsl:template match="footnote" mode="no.anchor.mode" dtm:id="footnote.no-anchor-mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<dtm:doc dtm:idref="anchor.no-anchor-mode"/>
+<xsl:template match="anchor" mode="no.anchor.mode" dtm:id="anchor.no-anchor-mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<dtm:doc dtm:idref="ulink.no-anchor-mode"/>
+<xsl:template match="ulink" mode="no.anchor.mode" dtm:id="ulink.no-anchor-mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="link.no-anchor-mode"/>
+<xsl:template match="link" mode="no.anchor.mode" dtm:id="link.no-anchor-mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="olink.no-anchor-mode"/>
+<xsl:template match="olink" mode="no.anchor.mode" dtm:id="olink.no-anchor-mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="indexterm.no-anchor-mode"/>
+<xsl:template match="indexterm" mode="no.anchor.mode" dtm:id="indexterm.no-anchor-mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<dtm:doc dtm:idref="xref.no-anchor-mode"/>
+<xsl:template match="xref" mode="no.anchor.mode" dtm:id="xref.no-anchor-mode">
+ <!-- FIXME: this should generate the text without the link... -->
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.xsl
new file mode 100644
index 0000000..27dbdf4
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/toc.xsl
@@ -0,0 +1,304 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ extension-element-prefixes="dtm xse"
+ version='1.0'>
+
+<dtm:doc dtm:idref="set.toc"/>
+<xsl:template name="set.toc" dtm:id="set.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:variable name="nodes" select="book|setindex"/>
+
+ <fo:block
+ xsl:use-attribute-sets="title.content.properties component.title.properties">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'tableofcontents'"/>
+ </xsl:call-template>
+ </fo:block>
+
+ <xsl:if test="$nodes">
+ <fo:block xsl:use-attribute-sets="toc.margin.properties">
+ <xsl:apply-templates select="$nodes" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="division.toc"/>
+<xsl:template name="division.toc" dtm:id="division.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:variable name="nodes"
+ select="$toc-context/part
+ |$toc-context/reference
+ |$toc-context/preface
+ |$toc-context/chapter
+ |$toc-context/appendix
+ |$toc-context/article
+ |$toc-context/bibliography
+ |$toc-context/glossary
+ |$toc-context/index"/>
+ <fo:block
+ xsl:use-attribute-sets="title.content.properties component.title.properties">
+ <fo:inline>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'tableofcontents'"/>
+ </xsl:call-template>
+ </fo:inline>
+ </fo:block>
+
+ <xsl:if test="$nodes">
+ <fo:block
+ xsl:use-attribute-sets="toc.margin.properties">
+ <xsl:apply-templates select="$nodes" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="component.toc"/>
+<xsl:template name="component.toc" dtm:id="component.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="nodes" select="section|sect1|refentry
+ |article|bibliography|glossary
+ |appendix"/>
+ <!-- fo:block
+ xsl:use-attribute-sets="title.content.properties section.title.level1.properties">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'toc'"/>
+ </xsl:call-template>
+ </fo:block -->
+
+ <xsl:if test="$nodes">
+ <fo:block xsl:use-attribute-sets="toc.margin.properties">
+ <xsl:apply-templates select="$nodes" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="toc.line"/>
+<xsl:template name="toc.line" dtm:id="toc.line">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup" xse:apply-serna-fold-template="false"/>
+ </xsl:variable>
+ <xsl:variable name="is.component">
+ <xsl:call-template name="is.component">
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:block
+ end-indent="{$toc.indent.width}pt">
+ <xsl:if test="$is.component = 1 or
+ local-name(.) = 'part' or local-name(.) = 'book'">
+ <xsl:attribute name="font-weight">
+ <xsl:text>bold</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <fo:inline>
+ <xsl:if test="$label != ''">
+ <xsl:copy-of select="$label"/>
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup" xse:apply-serna-fold-template="false"/>
+ </fo:inline>
+ </fo:block>
+</xsl:template>
+
+<dtm:doc dtm:idref="bs.toc"/>
+<xsl:template match="book|setindex" mode="toc" dtm:id="bs.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:variable name="nodes" select="glossary|bibliography|preface|chapter
+ |reference|part|article|appendix|index"/>
+
+ <xsl:if test="$toc.section.depth &gt; 0 and $nodes">
+ <fo:block start-indent="{count(ancestor::*)*$toc.indent.width}pt">
+ <xsl:apply-templates select="$nodes" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="part.toc"/>
+<xsl:template match="part" mode="toc" dtm:id="part.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:variable name="nodes" select="chapter|appendix|preface|reference|article"/>
+
+ <xsl:if test="$toc.section.depth &gt; 0 and $nodes">
+ <fo:block start-indent="{count(ancestor::*)*$toc.indent.width}pt">
+ <xsl:apply-templates select="$nodes" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="rb.toc"/>
+<xsl:template match="refentry|book" mode="toc" dtm:id="rb.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="pcaa.toc"/>
+<xsl:template match="preface|chapter|appendix|article"
+ mode="toc" dtm:id="pcaa.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:variable name="nodes" select="section|sect1"/>
+
+ <xsl:if test="$toc.section.depth &gt; 0 and $nodes">
+ <fo:block start-indent="{count(ancestor::*)*$toc.indent.width}pt">
+ <xsl:apply-templates select="$nodes" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="sect1.toc"/>
+<xsl:template match="sect1" mode="toc" dtm:id="sect1.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:if test="$toc.section.depth &gt; 1 and sect2">
+ <fo:block
+ start-indent="{count(ancestor::*)*$toc.indent.width}pt">
+ <xsl:apply-templates select="sect2" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="sect2.toc"/>
+<xsl:template match="sect2" mode="toc" dtm:id="sect2.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth &gt; 2 and sect3">
+ <fo:block
+ start-indent="{$reldepth*$toc.indent.width}pt">
+ <xsl:apply-templates select="sect3" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="sect3.toc"/>
+<xsl:template match="sect3" mode="toc" dtm:id="sect3.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth &gt; 3 and sect4">
+ <fo:block
+ start-indent="{$reldepth*$toc.indent.width}pt">
+ <xsl:apply-templates select="sect4" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="sect4.toc"/>
+<xsl:template match="sect4" mode="toc" dtm:id="sect4.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth &gt; 4 and sect5">
+ <fo:block
+ start-indent="{$reldepth*$toc.indent.width}pt">
+ <xsl:apply-templates select="sect5" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="sect5.toc"/>
+<xsl:template match="sect5" mode="toc" dtm:id="sect5.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="section.toc"/>
+<xsl:template match="section" mode="toc" dtm:id="section.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="depth" select="count(ancestor::section) + 1"/>
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth &gt;= $depth">
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:if test="$toc.section.depth &gt; $depth and section">
+ <fo:block
+ start-indent="{$reldepth*$toc.indent.width}pt">
+ <xsl:apply-templates select="section" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="bg.toc"/>
+<xsl:template match="bibliography|glossary"
+ mode="toc" dtm:id="bg.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="reference.toc"/>
+<xsl:template match="reference" mode="toc" dtm:id="reference.toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line"/>
+
+ <xsl:if test="$toc.section.depth &gt; 0 and refentry">
+ <fo:block
+ start-indent="{count(ancestor::*)*$toc.indent.width}pt">
+ <xsl:apply-templates select="refentry" mode="toc" xse:apply-serna-fold-template="false">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<dtm:doc dtm:idref="title.toc"/>
+<xsl:template match="title" mode="toc" dtm:id="title.toc">
+ <xsl:apply-templates xse:apply-serna-fold-template="false"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/xref.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/xref.xsl
new file mode 100644
index 0000000..1566d46
--- /dev/null
+++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/xref.xsl
@@ -0,0 +1,624 @@
+<?xml version='1.0' encoding='utf-8'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0"
+ xmlns:xse="http://www.syntext.com/Extensions/XSLT-1.0"
+ extension-element-prefixes="dtm"
+ exclude-result-prefixes="xse exsl" version="1.0">
+
+ <xsl:include href="gentext.xsl"/>
+
+ <dtm:doc dtm:idref="xref"/>
+ <xsl:template match="xref" name="xref" dtm:id="xref">
+ <xsl:variable name="target" select="id(@linkend)"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <fo:inline>
+ <xsl:choose>
+ <xsl:when test="not($refelem)">
+ <fo:inline color="#F00000">[XRef: Nonexistent linkend ID "<xsl:value-of select="@linkend"/>"]</fo:inline>
+ </xsl:when>
+ <xsl:when test="@endterm">
+ <fo:inline xsl:use-attribute-sets="xref.properties">
+ <xsl:variable name="etarget" select="id(@endterm)"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <fo:inline color="#F00000">[XRef: Nonexistent endterm ID "<xsl:value-of select="@endterm"/>"]</fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"
+ xse:apply-serna-fold-template="false"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="$target/@xreflabel">
+ <fo:inline xsl:use-attribute-sets="xref.properties">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="@xreflabel">
+ <fo:inline xsl:use-attribute-sets="xref.properties">
+ <xsl:value-of select="@xreflabel"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline xsl:use-attribute-sets="xref.properties">
+ <xsl:apply-templates select="$target" mode="xref-to"
+ xse:apply-serna-fold-template="false">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$insert.xref.page.number != 0 or local-name($target) = 'para'">
+ <xsl:apply-templates select="$target" mode="page.citation"
+ xse:apply-serna-fold-template="false">
+ <xsl:with-param name="id" select="@linkend"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </fo:inline>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="endterm.childs"/>
+ <xsl:template match="*" mode="endterm" dtm:id="endterm.childs">
+ <!-- Process the children of the endterm element -->
+ <xsl:variable name="endterm">
+ <xsl:apply-templates select="child::node()"/>
+ </xsl:variable>
+ <xsl:apply-templates select="$endterm" mode="remove-ids"/>
+ </xsl:template>
+ <xsl:template match="*" mode="remove-ids">
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of select="name(.)"/>
+</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="all.xref-to"/>
+ <xsl:template match="*" mode="xref-to" dtm:id="all.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:message>
+ <xsl:text>Don&apos;t know what gentext to create for xref to: &quot;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&quot;</xsl:text>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:template>
+ <xsl:template match="title" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <!-- if you xref to a title, xref to the parent... -->
+ <xsl:choose>
+ <!-- FIXME: how reliable is this? -->
+ <xsl:when test="contains(local-name(parent::*), 'info')">
+ <xsl:apply-templates select="parent::*[2]" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="elements.xref-to"/>
+ <xsl:template match="abstract|article|authorblurb|bibliodiv|bibliomset|
+ biblioset|blockquote|calloutlist|caution|colophon|
+ constraintdef|formalpara|glossdiv|important|indexdiv|
+ itemizedlist|legalnotice|lot|msg|msgexplan|msgmain|
+ msgrel|msgset|msgsub|note|orderedlist|partintro|
+ productionset|qandadiv|refsynopsisdiv|segmentedlist|
+ set|setindex|sidebar|tip|toc|variablelist|warning" mode="xref-to" dtm:id="elements.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <!-- catch-all for things with (possibly optional) titles --> <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="aeop.xref-to"/>
+ <xsl:template match="author|editor|othercredit|personname" mode="xref-to" dtm:id="aeop.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:call-template name="person.name"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="authorgroup.xref-to"/>
+ <xsl:template match="authorgroup" mode="xref-to" dtm:id="authorgroup.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:call-template name="person.name.list"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="fete.xref-to"/>
+ <xsl:template match="figure|example|table|equation" mode="xref-to" dtm:id="fete.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="procedure.xref-to"/>
+ <xsl:template match="procedure" mode="xref-to" dtm:id="procedure.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="cmdsynopsis.xref-to"/>
+ <xsl:template match="cmdsynopsis" mode="xref-to" dtm:id="cmdsynopsis.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="funcsynopsis.xref-to"/>
+ <xsl:template match="funcsynopsis" mode="xref-to" dtm:id="funcsynopsis.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="dpca.xref-to"/>
+ <xsl:template match="dedication|preface|chapter|appendix" mode="xref-to" dtm:id="dpca.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="bibliography.xref-to"/>
+ <xsl:template match="bibliography" mode="xref-to" dtm:id="bibliography.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="biblio.xref-to"/>
+ <xsl:template match="biblioentry|bibliomixed" mode="xref-to" dtm:id="biblio.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:text>[</xsl:text>
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection)"/>
+ <xsl:variable name="id" select="@id"/>
+ <xsl:variable name="entry" select="$bib/bibliography/*[@id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name($entry/*[1]) = 'abbrev'">
+ <xsl:apply-templates select="$entry/*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <xsl:value-of select="@id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>]</xsl:text>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="glossary.xref-to"/>
+ <xsl:template match="glossary" mode="xref-to" dtm:id="glossary.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="glossentry.xref-to"/>
+ <xsl:template match="glossentry" mode="xref-to" dtm:id="glossentry.xref-to">
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="(acronym|abbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="glossterm.xref-to"/>
+ <xsl:template match="glossterm" mode="xref-to" dtm:id="glossterm.xref-to">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="index.xref-to"/>
+ <xsl:template match="index" mode="xref-to" dtm:id="index.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="listitem.xref-to"/>
+ <xsl:template match="listitem" mode="xref-to" dtm:id="listitem.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="sections.xref-to"/>
+ <xsl:template match="section|simplesect|sect1|sect2|sect3|sect4|
+ sect5|refsect1|refsect2|refsect3" mode="xref-to" dtm:id="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ <!-- What about "in Chapter X"? -->
+ </xsl:template>
+
+ <dtm:doc dtm:idref="bridgehead.xref-to"/>
+ <xsl:template match="bridgehead" mode="xref-to" dtm:id="bridgehead.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ <!-- What about "in Chapter X"? -->
+ </xsl:template>
+
+ <dtm:doc dtm:idref="qandaset.xref-to"/>
+ <xsl:template match="qandaset" mode="xref-to" dtm:id="qandaset.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="qandadiv.xref-to"/>
+ <xsl:template match="qandadiv" mode="xref-to" dtm:id="qandadiv.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="qandaentry.xref-to"/>
+ <xsl:template match="qandaentry" mode="xref-to" dtm:id="qandaentry.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="question[1]" mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="qa.xref-to"/>
+ <xsl:template match="question|answer" mode="xref-to" dtm:id="qa.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="pr.xref-to"/>
+ <xsl:template match="part|reference" mode="xref-to" dtm:id="pr.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="refentry.xref-to"/>
+ <xsl:template match="refentry" mode="xref-to" dtm:id="refentry.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:apply-templates select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refnamediv/refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="refmeta/manvolnum"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="refnamediv.xref-to"/>
+ <xsl:template match="refnamediv" mode="xref-to" dtm:id="refnamediv.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="refname[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="refname.xref-to"/>
+ <xsl:template match="refname" mode="xref-to" dtm:id="refname.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="step.xref-to"/>
+ <xsl:template match="step" mode="xref-to" dtm:id="step.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text/>
+ <xsl:apply-templates select="." mode="number"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="varlistentry.xref-to"/>
+ <xsl:template match="varlistentry" mode="xref-to" dtm:id="varlistentry.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="term[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="term.varlistentry.xref-to"/>
+ <xsl:template match="varlistentry/term" mode="xref-to" dtm:id="term.varlistentry.xref-to">
+ <!-- to avoid the comma that will be generated if there are several terms -->
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="co.xref-to"/>
+ <xsl:template match="co" mode="xref-to" dtm:id="co.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="book.xref-to"/>
+ <xsl:template match="book" mode="xref-to" dtm:id="book.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <dtm:doc dtm:idref="para.xref-to"/>
+ <xsl:template match="para" mode="xref-to" dtm:id="para.xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:variable name="context" select="(ancestor::simplesect|ancestor::section|ancestor::sect1|ancestor::sect2|ancestor::sect3|ancestor::sect4|ancestor::sect5|ancestor::refsection |ancestor::refsect1 |ancestor::refsect2 |ancestor::refsect3 |ancestor::chapter |ancestor::appendix|ancestor::preface|ancestor::partintro|ancestor::dedication|ancestor::colophon|ancestor::bibliography|ancestor::index|ancestor::glossary|ancestor::glossentry|ancestor::listitem|ancestor::varlistentry)[last()]"/>
+ <xsl:apply-templates select="$context" mode="xref-to"/>
+ <!--
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+-->
+ </xsl:template>
+
+<dtm:doc dtm:idref="title.xref"/>
+<xsl:template match="title" mode="xref" dtm:id="title.xref">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<dtm:doc dtm:idref="command.xref"/>
+<xsl:template match="command" mode="xref" dtm:id="command.xref">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="function.xref"/>
+<xsl:template match="function" mode="xref" dtm:id="function.xref">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.page-citation"/>
+<xsl:template match="*" mode="page.citation" dtm:id="all.page-citation">
+ <xsl:param name="id" select="'???'"/>
+ <fo:inline keep-together.within-line="always">
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'page.citation'"/>
+ <xsl:with-param name="context" select="'xref'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:inline>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.pagenumber-markup"/>
+<xsl:template match="*" mode="pagenumber.markup" dtm:id="all.pagenumber-markup">
+ <!--fo:page-number-citation ref-id="{@id}"/-->
+</xsl:template>
+
+<dtm:doc dtm:elements="xref/@xreflabel" dtm:idref="xref.xreflabel"/>
+<xsl:template name="xref.xreflabel" dtm:id="xref.xreflabel">
+ <!-- called to process an xreflabel...you might use this to make -->
+ <!-- xreflabels come out in the right font for different targets, -->
+ <!-- for example. -->
+ <xsl:param name="target" select="."/>
+ <xsl:value-of select="$target/@xreflabel"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.insert-title-markup"/>
+<xsl:template match="*" mode="insert.title.markup" dtm:id="all.insert-title-markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <!-- FIXME: what about the case where titleabbrev is inside the info? -->
+ <xsl:when test="$purpose = 'xref' and titleabbrev">
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="ca.insert-title-markup"/>
+<xsl:template match="chapter|appendix" mode="insert.title.markup" dtm:id="ca.insert-title-markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <xsl:when test="$purpose = 'xref'">
+ <fo:inline font-style="italic">
+ <xsl:value-of select="$title"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.insert-subtitle-markup"/>
+<xsl:template match="*" mode="insert.subtitle.markup" dtm:id="all.insert-subtitle-markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="subtitle"/>
+
+ <xsl:value-of select="$subtitle"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.insert-pagenumber-markup"/>
+<xsl:template match="*" mode="insert.pagenumber.markup" dtm:id="all.insert-pagenumber-markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="pagenumber"/>
+
+ <xsl:value-of select="$pagenumber"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.insert-direction-markup"/>
+<xsl:template match="*" mode="insert.direction.markup" dtm:id="all.insert-direction-markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="direction"/>
+
+ <xsl:value-of select="$direction"/>
+</xsl:template>
+
+<dtm:doc dtm:idref="all.insert-label-markup"/>
+<xsl:template match="*" mode="insert.label.markup" dtm:id="all.insert-label-markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="label"/>
+
+ <xsl:value-of select="$label"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/editor_configs/serna/scons/dtd/README b/doc/editor_configs/serna/scons/dtd/README
new file mode 100644
index 0000000..6fc60c4
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/README
@@ -0,0 +1,8 @@
+README for the DocBook XML DTD
+
+For more information about DocBook, please see
+
+ http://www.oasis-open.org/docbook/
+
+Please send all questions, comments, concerns, and bug reports to the
+DocBook mailing list: docbook@lists.oasis-open.org
diff --git a/doc/editor_configs/serna/scons/dtd/calstblx.dtd b/doc/editor_configs/serna/scons/dtd/calstblx.dtd
new file mode 100644
index 0000000..eef08c9
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/calstblx.dtd
@@ -0,0 +1,215 @@
+<!-- ...................................................................... -->
+<!-- DocBook CALS Table Model V4.5 ........................................ -->
+<!-- File calstblx.mod .................................................... -->
+
+<!-- Copyright 1992-2002 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ This DTD is based on the CALS Table Model
+ PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
+
+ $Id: calstblx.dtd,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the definitions for the CALS Table Model
+ converted to XML. It has been modified slightly for use in the
+ combined HTML/CALS models supported by DocBook V4.5.
+-->
+
+<!-- These definitions are not directly related to the table model, but are
+ used in the default CALS table model and are usually defined elsewhere
+ (and prior to the inclusion of this table module) in a CALS DTD. -->
+
+<!ENTITY % bodyatt "">
+<!ENTITY % secur "">
+
+<!-- no if zero(s),
+ yes if any other digits value -->
+
+<!ENTITY % yesorno 'CDATA'>
+<!ENTITY % titles 'title?'>
+
+<!-- default for use in entry content -->
+
+<!ENTITY % paracon '#PCDATA'>
+
+<!--
+The parameter entities as defined below provide the CALS table model
+as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+These following declarations provide the CALS-compliant default definitions
+for these entities. However, these entities can and should be redefined
+(by giving the appropriate parameter entity declaration(s) prior to the
+reference to this Table Model declaration set entity) to fit the needs
+of the current application.
+-->
+
+<!ENTITY % tbl.table.name "(table|chart)">
+<!ENTITY % tbl.table-titles.mdl "%titles;,">
+<!ENTITY % tbl.table-main.mdl "(tgroup+|graphic+)">
+<!ENTITY % tbl.table.mdl "%tbl.table-titles.mdl; %tbl.table-main.mdl;">
+<!ENTITY % tbl.table.att '
+ tabstyle CDATA #IMPLIED
+ tocentry %yesorno; #IMPLIED
+ shortentry %yesorno; #IMPLIED
+ orient (port|land) #IMPLIED
+ pgwide %yesorno; #IMPLIED '>
+<!ENTITY % tbl.tgroup.mdl "colspec*,spanspec*,thead?,tfoot?,tbody">
+<!ENTITY % tbl.tgroup.att '
+ tgroupstyle CDATA #IMPLIED '>
+<!ENTITY % tbl.hdft.mdl "colspec*,row+">
+<!ENTITY % tbl.row.mdl "(entry|entrytbl)+">
+<!ENTITY % tbl.entrytbl.mdl "colspec*,spanspec*,thead?,tbody">
+<!ENTITY % tbl.entry.mdl "(para|warning|caution|note|legend|%paracon;)*">
+
+<!ENTITY % tbl.frame.attval "top|bottom|topbot|all|sides|none">
+<!ENTITY % tbl.tbody.mdl "row+">
+
+<!-- ===== Element and attribute declarations follow. ===== -->
+
+<!--doc:A formal table in a document.-->
+<!ELEMENT table %ho; (%tbl.table.mdl;)>
+
+<!ATTLIST table
+ frame (%tbl.frame.attval;) #IMPLIED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ %tbl.table.att;
+ %bodyatt;
+ %secur;
+>
+
+<!--doc:A wrapper for the main content of a table, or part of a table.-->
+<!ELEMENT tgroup %ho; (%tbl.tgroup.mdl;) >
+
+<!ATTLIST tgroup
+ cols CDATA #REQUIRED
+ %tbl.tgroup.att;
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED
+ %secur;
+>
+
+<!--doc:Specifications for a column in a table.-->
+<!ELEMENT colspec %ho; EMPTY >
+
+<!ATTLIST colspec
+ colnum CDATA #IMPLIED
+ colname CDATA #IMPLIED
+ colwidth CDATA #IMPLIED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED
+>
+
+<!--doc:Formatting information for a spanned column in a table.-->
+<!ELEMENT spanspec %ho; EMPTY >
+
+<!ATTLIST spanspec
+ namest CDATA #REQUIRED
+ nameend CDATA #REQUIRED
+ spanname CDATA #REQUIRED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED
+>
+
+<!--doc:A table header consisting of one or more rows.-->
+<!ELEMENT thead %ho; (%tbl.hdft.mdl;)>
+<!ATTLIST thead
+ valign (top|middle|bottom) #IMPLIED
+ %secur;
+>
+
+<!--doc:A table footer consisting of one or more rows.-->
+<!ELEMENT tfoot %ho; (%tbl.hdft.mdl;)>
+<!ATTLIST tfoot
+ valign (top|middle|bottom) #IMPLIED
+ %secur;
+>
+
+<!--doc:A wrapper for the rows of a table or informal table.-->
+<!ELEMENT tbody %ho; (%tbl.tbody.mdl;)>
+
+<!ATTLIST tbody
+ valign (top|middle|bottom) #IMPLIED
+ %secur;
+>
+
+<!--doc:A row in a table.-->
+<!ELEMENT row %ho; (%tbl.row.mdl;)>
+
+<!ATTLIST row
+ rowsep %yesorno; #IMPLIED
+ valign (top|middle|bottom) #IMPLIED
+ %secur;
+>
+
+<!--doc:A subtable appearing in place of an Entry in a table.-->
+<!ELEMENT entrytbl %ho; (%tbl.entrytbl.mdl;)>
+
+<!ATTLIST entrytbl
+ cols CDATA #REQUIRED
+ %tbl.tgroup.att;
+ colname CDATA #IMPLIED
+ spanname CDATA #IMPLIED
+ namest CDATA #IMPLIED
+ nameend CDATA #IMPLIED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED
+ %secur;
+>
+
+<!--doc:A cell in a table.-->
+<!ELEMENT entry %ho; (%tbl.entry.mdl;)*>
+
+<!ATTLIST entry
+ colname CDATA #IMPLIED
+ namest CDATA #IMPLIED
+ nameend CDATA #IMPLIED
+ spanname CDATA #IMPLIED
+ morerows CDATA #IMPLIED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED
+ rotate %yesorno; #IMPLIED
+ valign (top|middle|bottom) #IMPLIED
+ %secur;
+>
+
+<!-- End of DocBook CALS Table Model V4.5 ................................. -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/calstblx.rng b/doc/editor_configs/serna/scons/dtd/calstblx.rng
new file mode 100644
index 0000000..e64b29c
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/calstblx.rng
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- DocBook CALS Table Model V4.5 ........................................ -->
+<!-- File calstblx.mod .................................................... -->
+<!--
+ Copyright 1992-2002 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ This DTD is based on the CALS Table Model
+ PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
+
+ $Id: calstblx.dtd,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the CALS Table Model
+ converted to XML. It has been modified slightly for use in the
+ combined HTML/CALS models supported by DocBook V4.5.
+-->
+<!--
+ These definitions are not directly related to the table model, but are
+ used in the default CALS table model and are usually defined elsewhere
+ (and prior to the inclusion of this table module) in a CALS DTD.
+-->
+<!--
+ no if zero(s),
+ yes if any other digits value
+-->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="">
+ <define name="yesorno">
+ <data type="string"/>
+ </define>
+ <define name="titles">
+ <optional>
+ <ref name="title"/>
+ </optional>
+ </define>
+ <!-- default for use in entry content -->
+ <!--
+ The parameter entities as defined below provide the CALS table model
+ as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+ These following declarations provide the CALS-compliant default definitions
+ for these entities. However, these entities can and should be redefined
+ (by giving the appropriate parameter entity declaration(s) prior to the
+ reference to this Table Model declaration set entity) to fit the needs
+ of the current application.
+ -->
+ <define name="tbl.table-titles.mdl">
+ <ref name="titles"/>
+ </define>
+ <define name="tbl.table-main.mdl">
+ <choice>
+ <oneOrMore>
+ <ref name="tgroup"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="graphic"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="tbl.tgroup.mdl">
+ <zeroOrMore>
+ <ref name="colspec"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="spanspec"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="thead"/>
+ </optional>
+ <optional>
+ <ref name="tfoot"/>
+ </optional>
+ <ref name="tbody"/>
+ </define>
+ <define name="tbl.tgroup.att">
+ <optional>
+ <attribute name="tgroupstyle"/>
+ </optional>
+ </define>
+ <define name="tbl.row.mdl">
+ <oneOrMore>
+ <choice>
+ <ref name="entry"/>
+ <ref name="entrytbl"/>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="tbl.entrytbl.mdl">
+ <zeroOrMore>
+ <ref name="colspec"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="spanspec"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="thead"/>
+ </optional>
+ <ref name="tbody"/>
+ </define>
+ <!-- ===== Element and attribute declarations follow. ===== -->
+ <!-- doc:A formal table in a document. -->
+ <define name="table">
+ <element name="table">
+ <ref name="table.attlist"/>
+ <ref name="tbl.table.mdl"/>
+ </element>
+ </define>
+ <define name="table.attlist" combine="interleave">
+ <optional>
+ <attribute name="frame">
+ <choice>
+ <ref name="tbl.frame.attval"/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <ref name="tbl.table.att"/>
+ <ref name="bodyatt"/>
+ <ref name="secur"/>
+ </define>
+ <!-- doc:A wrapper for the main content of a table, or part of a table. -->
+ <define name="tgroup">
+ <element name="tgroup">
+ <ref name="tgroup.attlist"/>
+ <ref name="tbl.tgroup.mdl"/>
+ </element>
+ </define>
+ <define name="tgroup.attlist" combine="interleave">
+ <attribute name="cols"/>
+ <ref name="tbl.tgroup.att"/>
+ <optional>
+ <attribute name="colsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char"/>
+ </optional>
+ <optional>
+ <attribute name="charoff"/>
+ </optional>
+ <ref name="secur"/>
+ </define>
+ <!-- doc:Specifications for a column in a table. -->
+ <define name="colspec">
+ <element name="colspec">
+ <ref name="colspec.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="colspec.attlist" combine="interleave">
+ <optional>
+ <attribute name="colnum"/>
+ </optional>
+ <optional>
+ <attribute name="colname"/>
+ </optional>
+ <optional>
+ <attribute name="colwidth"/>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char"/>
+ </optional>
+ <optional>
+ <attribute name="charoff"/>
+ </optional>
+ </define>
+ <!-- doc:Formatting information for a spanned column in a table. -->
+ <define name="spanspec">
+ <element name="spanspec">
+ <ref name="spanspec.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="spanspec.attlist" combine="interleave">
+ <attribute name="namest"/>
+ <attribute name="nameend"/>
+ <attribute name="spanname"/>
+ <optional>
+ <attribute name="colsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char"/>
+ </optional>
+ <optional>
+ <attribute name="charoff"/>
+ </optional>
+ </define>
+ <!-- doc:A table header consisting of one or more rows. -->
+ <define name="thead">
+ <element name="thead">
+ <ref name="thead.attlist"/>
+ <ref name="tbl.hdft.mdl"/>
+ </element>
+ </define>
+ <define name="thead.attlist" combine="interleave">
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="secur"/>
+ </define>
+ <!-- doc:A table footer consisting of one or more rows. -->
+ <define name="tfoot">
+ <element name="tfoot">
+ <ref name="tfoot.attlist"/>
+ <ref name="tbl.hdft.mdl"/>
+ </element>
+ </define>
+ <define name="tfoot.attlist" combine="interleave">
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="secur"/>
+ </define>
+ <!-- doc:A wrapper for the rows of a table or informal table. -->
+ <define name="tbody">
+ <element name="tbody">
+ <ref name="tbody.attlist"/>
+ <ref name="tbl.tbody.mdl"/>
+ </element>
+ </define>
+ <define name="tbody.attlist" combine="interleave">
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="secur"/>
+ </define>
+ <!-- doc:A row in a table. -->
+ <define name="row">
+ <element name="row">
+ <ref name="row.attlist"/>
+ <ref name="tbl.row.mdl"/>
+ </element>
+ </define>
+ <define name="row.attlist" combine="interleave">
+ <optional>
+ <attribute name="rowsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="secur"/>
+ </define>
+ <!-- doc:A subtable appearing in place of an Entry in a table. -->
+ <define name="entrytbl">
+ <element name="entrytbl">
+ <ref name="entrytbl.attlist"/>
+ <ref name="tbl.entrytbl.mdl"/>
+ </element>
+ </define>
+ <define name="entrytbl.attlist" combine="interleave">
+ <attribute name="cols"/>
+ <ref name="tbl.tgroup.att"/>
+ <optional>
+ <attribute name="colname"/>
+ </optional>
+ <optional>
+ <attribute name="spanname"/>
+ </optional>
+ <optional>
+ <attribute name="namest"/>
+ </optional>
+ <optional>
+ <attribute name="nameend"/>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char"/>
+ </optional>
+ <optional>
+ <attribute name="charoff"/>
+ </optional>
+ <ref name="secur"/>
+ </define>
+ <!-- doc:A cell in a table. -->
+ <define name="entry">
+ <element name="entry">
+ <ref name="entry.attlist"/>
+ <zeroOrMore>
+ <ref name="tbl.entry.mdl"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="entry.attlist" combine="interleave">
+ <optional>
+ <attribute name="colname"/>
+ </optional>
+ <optional>
+ <attribute name="namest"/>
+ </optional>
+ <optional>
+ <attribute name="nameend"/>
+ </optional>
+ <optional>
+ <attribute name="spanname"/>
+ </optional>
+ <optional>
+ <attribute name="morerows"/>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char"/>
+ </optional>
+ <optional>
+ <attribute name="charoff"/>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="yesorno"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="secur"/>
+ </define>
+</grammar>
+<!-- End of DocBook CALS Table Model V4.5 ................................. -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/dbcentx.mod b/doc/editor_configs/serna/scons/dtd/dbcentx.mod
new file mode 100644
index 0000000..cd6a756
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/dbcentx.mod
@@ -0,0 +1,384 @@
+<!-- ...................................................................... -->
+<!-- DocBook character entities module V4.5 ............................... -->
+<!-- File dbcentx.mod ..................................................... -->
+
+<!-- Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbcentx.mod,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the entity declarations for the standard ISO
+ entity sets used by DocBook.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbcent PUBLIC
+ "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN"
+ "dbcentx.mod">
+ %dbcent;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+
+<!-- ...................................................................... -->
+
+<![%sgml.features;[
+
+<!ENTITY % ISOamsa.module "INCLUDE">
+<![ %ISOamsa.module; [
+<!ENTITY % ISOamsa PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN">
+<!--end of ISOamsa.module-->]]>
+
+<!ENTITY % ISOamsb.module "INCLUDE">
+<![ %ISOamsb.module; [
+<!ENTITY % ISOamsb PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN">
+<!--end of ISOamsb.module-->]]>
+
+<!ENTITY % ISOamsc.module "INCLUDE">
+<![ %ISOamsc.module; [
+<!ENTITY % ISOamsc PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN">
+<!--end of ISOamsc.module-->]]>
+
+<!ENTITY % ISOamsn.module "INCLUDE">
+<![ %ISOamsn.module; [
+<!ENTITY % ISOamsn PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN">
+<!--end of ISOamsn.module-->]]>
+
+<!ENTITY % ISOamso.module "INCLUDE">
+<![ %ISOamso.module; [
+<!ENTITY % ISOamso PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN">
+<!--end of ISOamso.module-->]]>
+
+<!ENTITY % ISOamsr.module "INCLUDE">
+<![ %ISOamsr.module; [
+<!ENTITY % ISOamsr PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN">
+<!--end of ISOamsr.module-->]]>
+
+<!ENTITY % ISObox.module "INCLUDE">
+<![ %ISObox.module; [
+<!ENTITY % ISObox PUBLIC
+"ISO 8879:1986//ENTITIES Box and Line Drawing//EN">
+<!--end of ISObox.module-->]]>
+
+<!ENTITY % ISOcyr1.module "INCLUDE">
+<![ %ISOcyr1.module; [
+<!ENTITY % ISOcyr1 PUBLIC
+"ISO 8879:1986//ENTITIES Russian Cyrillic//EN">
+<!--end of ISOcyr1.module-->]]>
+
+<!ENTITY % ISOcyr2.module "INCLUDE">
+<![ %ISOcyr2.module; [
+<!ENTITY % ISOcyr2 PUBLIC
+"ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN">
+<!--end of ISOcyr2.module-->]]>
+
+<!ENTITY % ISOdia.module "INCLUDE">
+<![ %ISOdia.module; [
+<!ENTITY % ISOdia PUBLIC
+"ISO 8879:1986//ENTITIES Diacritical Marks//EN">
+<!--end of ISOdia.module-->]]>
+
+<!ENTITY % ISOgrk1.module "INCLUDE">
+<![ %ISOgrk1.module; [
+<!ENTITY % ISOgrk1 PUBLIC
+"ISO 8879:1986//ENTITIES Greek Letters//EN">
+<!--end of ISOgrk1.module-->]]>
+
+<!ENTITY % ISOgrk2.module "INCLUDE">
+<![ %ISOgrk2.module; [
+<!ENTITY % ISOgrk2 PUBLIC
+"ISO 8879:1986//ENTITIES Monotoniko Greek//EN">
+<!--end of ISOgrk2.module-->]]>
+
+<!ENTITY % ISOgrk3.module "INCLUDE">
+<![ %ISOgrk3.module; [
+<!ENTITY % ISOgrk3 PUBLIC
+"ISO 8879:1986//ENTITIES Greek Symbols//EN">
+<!--end of ISOgrk3.module-->]]>
+
+<!ENTITY % ISOgrk4.module "INCLUDE">
+<![ %ISOgrk4.module; [
+<!ENTITY % ISOgrk4 PUBLIC
+"ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN">
+<!--end of ISOgrk4.module-->]]>
+
+<!ENTITY % ISOlat1.module "INCLUDE">
+<![ %ISOlat1.module; [
+<!ENTITY % ISOlat1 PUBLIC
+"ISO 8879:1986//ENTITIES Added Latin 1//EN">
+<!--end of ISOlat1.module-->]]>
+
+<!ENTITY % ISOlat2.module "INCLUDE">
+<![ %ISOlat2.module; [
+<!ENTITY % ISOlat2 PUBLIC
+"ISO 8879:1986//ENTITIES Added Latin 2//EN">
+<!--end of ISOlat2.module-->]]>
+
+<!ENTITY % ISOnum.module "INCLUDE">
+<![ %ISOnum.module; [
+<!ENTITY % ISOnum PUBLIC
+"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN">
+<!--end of ISOnum.module-->]]>
+
+<!ENTITY % ISOpub.module "INCLUDE">
+<![ %ISOpub.module; [
+<!ENTITY % ISOpub PUBLIC
+"ISO 8879:1986//ENTITIES Publishing//EN">
+<!--end of ISOpub.module-->]]>
+
+<!ENTITY % ISOtech.module "INCLUDE">
+<![ %ISOtech.module; [
+<!ENTITY % ISOtech PUBLIC
+"ISO 8879:1986//ENTITIES General Technical//EN">
+<!--end of ISOtech.module-->]]>
+
+<!--end of sgml.features-->]]>
+
+<![%xml.features;[
+
+<!ENTITY % ISOamsa.module "INCLUDE">
+<![%ISOamsa.module;[
+<!ENTITY % ISOamsa PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML"
+"ent/isoamsa.ent">
+<!--end of ISOamsa.module-->]]>
+
+<!ENTITY % ISOamsb.module "INCLUDE">
+<![%ISOamsb.module;[
+<!ENTITY % ISOamsb PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML"
+"ent/isoamsb.ent">
+<!--end of ISOamsb.module-->]]>
+
+<!ENTITY % ISOamsc.module "INCLUDE">
+<![%ISOamsc.module;[
+<!ENTITY % ISOamsc PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML"
+"ent/isoamsc.ent">
+<!--end of ISOamsc.module-->]]>
+
+<!ENTITY % ISOamsn.module "INCLUDE">
+<![%ISOamsn.module;[
+<!ENTITY % ISOamsn PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML"
+"ent/isoamsn.ent">
+<!--end of ISOamsn.module-->]]>
+
+<!ENTITY % ISOamso.module "INCLUDE">
+<![%ISOamso.module;[
+<!ENTITY % ISOamso PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML"
+"ent/isoamso.ent">
+<!--end of ISOamso.module-->]]>
+
+<!ENTITY % ISOamsr.module "INCLUDE">
+<![%ISOamsr.module;[
+<!ENTITY % ISOamsr PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML"
+"ent/isoamsr.ent">
+<!--end of ISOamsr.module-->]]>
+
+<!ENTITY % ISObox.module "INCLUDE">
+<![%ISObox.module;[
+<!ENTITY % ISObox PUBLIC
+"ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML"
+"ent/isobox.ent">
+<!--end of ISObox.module-->]]>
+
+<!ENTITY % ISOcyr1.module "INCLUDE">
+<![%ISOcyr1.module;[
+<!ENTITY % ISOcyr1 PUBLIC
+"ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML"
+"ent/isocyr1.ent">
+<!--end of ISOcyr1.module-->]]>
+
+<!ENTITY % ISOcyr2.module "INCLUDE">
+<![%ISOcyr2.module;[
+<!ENTITY % ISOcyr2 PUBLIC
+"ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML"
+"ent/isocyr2.ent">
+<!--end of ISOcyr2.module-->]]>
+
+<!ENTITY % ISOdia.module "INCLUDE">
+<![%ISOdia.module;[
+<!ENTITY % ISOdia PUBLIC
+"ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
+"ent/isodia.ent">
+<!--end of ISOdia.module-->]]>
+
+<!ENTITY % ISOgrk1.module "INCLUDE">
+<![%ISOgrk1.module;[
+<!ENTITY % ISOgrk1 PUBLIC
+"ISO 8879:1986//ENTITIES Greek Letters//EN//XML"
+"ent/isogrk1.ent">
+<!--end of ISOgrk1.module-->]]>
+
+<!ENTITY % ISOgrk2.module "INCLUDE">
+<![%ISOgrk2.module;[
+<!ENTITY % ISOgrk2 PUBLIC
+"ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML"
+"ent/isogrk2.ent">
+<!--end of ISOgrk2.module-->]]>
+
+<!ENTITY % ISOgrk3.module "INCLUDE">
+<![%ISOgrk3.module;[
+<!ENTITY % ISOgrk3 PUBLIC
+"ISO 8879:1986//ENTITIES Greek Symbols//EN//XML"
+"ent/isogrk3.ent">
+<!--end of ISOgrk3.module-->]]>
+
+<!ENTITY % ISOgrk4.module "INCLUDE">
+<![%ISOgrk4.module;[
+<!ENTITY % ISOgrk4 PUBLIC
+"ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML"
+"ent/isogrk4.ent">
+<!--end of ISOgrk4.module-->]]>
+
+<!ENTITY % ISOlat1.module "INCLUDE">
+<![%ISOlat1.module;[
+<!ENTITY % ISOlat1 PUBLIC
+"ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
+"ent/isolat1.ent">
+<!--end of ISOlat1.module-->]]>
+
+<!ENTITY % ISOlat2.module "INCLUDE">
+<![%ISOlat2.module;[
+<!ENTITY % ISOlat2 PUBLIC
+"ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
+"ent/isolat2.ent">
+<!--end of ISOlat2.module-->]]>
+
+<!ENTITY % ISOnum.module "INCLUDE">
+<![%ISOnum.module;[
+<!ENTITY % ISOnum PUBLIC
+"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
+"ent/isonum.ent">
+<!--end of ISOnum.module-->]]>
+
+<!ENTITY % ISOpub.module "INCLUDE">
+<![%ISOpub.module;[
+<!ENTITY % ISOpub PUBLIC
+"ISO 8879:1986//ENTITIES Publishing//EN//XML"
+"ent/isopub.ent">
+<!--end of ISOpub.module-->]]>
+
+<!ENTITY % ISOtech.module "INCLUDE">
+<![%ISOtech.module;[
+<!ENTITY % ISOtech PUBLIC
+"ISO 8879:1986//ENTITIES General Technical//EN//XML"
+"ent/isotech.ent">
+<!--end of ISOtech.module-->]]>
+
+<!--end of xml.features-->]]>
+
+<![ %ISOamsa.module; [
+%ISOamsa;
+]]>
+
+<![ %ISOamsb.module; [
+%ISOamsb;
+]]>
+
+<![ %ISOamsc.module; [
+%ISOamsc;
+]]>
+
+<![ %ISOamsn.module; [
+%ISOamsn;
+]]>
+
+<![ %ISOamso.module; [
+%ISOamso;
+]]>
+
+<![ %ISOamsr.module; [
+%ISOamsr;
+]]>
+
+<![ %ISObox.module; [
+%ISObox;
+]]>
+
+<![ %ISOcyr1.module; [
+%ISOcyr1;
+]]>
+
+<![ %ISOcyr2.module; [
+%ISOcyr2;
+]]>
+
+<![ %ISOdia.module; [
+%ISOdia;
+]]>
+
+<![ %ISOgrk1.module; [
+%ISOgrk1;
+]]>
+
+<![ %ISOgrk2.module; [
+%ISOgrk2;
+]]>
+
+<![ %ISOgrk3.module; [
+%ISOgrk3;
+]]>
+
+<![ %ISOgrk4.module; [
+%ISOgrk4;
+]]>
+
+<![ %ISOlat1.module; [
+%ISOlat1;
+]]>
+
+<![ %ISOlat2.module; [
+%ISOlat2;
+]]>
+
+<![ %ISOnum.module; [
+%ISOnum;
+]]>
+
+<![ %ISOpub.module; [
+%ISOpub;
+]]>
+
+<![ %ISOtech.module; [
+%ISOtech;
+]]>
+
+<!-- End of DocBook character entity sets module V4.5 ..................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/dbgenent.mod b/doc/editor_configs/serna/scons/dtd/dbgenent.mod
new file mode 100644
index 0000000..ff5ba90
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/dbgenent.mod
@@ -0,0 +1,41 @@
+<!-- ...................................................................... -->
+<!-- DocBook additional general entities V4.5 ............................. -->
+
+<!-- Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbgenent PUBLIC
+ "-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN"
+ "dbgenent.mod">
+ %dbgenent;
+-->
+
+<!-- File dbgenent.mod .................................................... -->
+
+<!-- You can edit this file to add the following:
+
+ o General entity declarations of any kind. For example:
+
+ <!ENTITY productname "WinWidget"> (small boilerplate)
+ <!ENTITY legal-notice SYSTEM "notice.sgm"> (large boilerplate)
+
+ o Notation declarations. For example:
+
+ <!NOTATION chicken-scratch SYSTEM>
+
+ o Declarations for and references to external parameter entities
+ containing collections of any of the above. For example:
+
+ <!ENTITY % all-titles PUBLIC "-//DocTools//ELEMENTS Book Titles//EN"
+ "booktitles.ent">
+ %all-titles;
+-->
+
+<!-- End of DocBook additional general entities V4.5 ...................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/dbhierx.mod b/doc/editor_configs/serna/scons/dtd/dbhierx.mod
new file mode 100644
index 0000000..0026eb0
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/dbhierx.mod
@@ -0,0 +1,2193 @@
+<!-- ...................................................................... -->
+<!-- DocBook document hierarchy module V4.5 ............................... -->
+<!-- File dbhierx.mod ..................................................... -->
+
+<!-- Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbhierx.mod,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the definitions for the overall document
+ hierarchies of DocBook documents. It covers computer documentation
+ manuals and manual fragments, as well as reference entries (such as
+ man pages) and technical journals or anthologies containing
+ articles.
+
+ This module depends on the DocBook information pool module. All
+ elements and entities referenced but not defined here are assumed
+ to be defined in the information pool module.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbhier PUBLIC
+ "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN"
+ "dbhierx.mod">
+ %dbhier;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+
+<!ENTITY % dbhier.redecl.module "IGNORE">
+<!ENTITY % dbhier.redecl2.module "IGNORE">
+
+<!-- ...................................................................... -->
+<!-- Entities for element classes ......................................... -->
+
+<!ENTITY % local.appendix.class "">
+<!ENTITY % appendix.class "appendix %local.appendix.class;">
+
+<!ENTITY % local.article.class "">
+<!ENTITY % article.class "article %local.article.class;">
+
+<!ENTITY % local.book.class "">
+<!ENTITY % book.class "book %local.book.class;">
+
+<!ENTITY % local.chapter.class "">
+<!ENTITY % chapter.class "chapter %local.chapter.class;">
+
+<!ENTITY % local.index.class "">
+<!ENTITY % index.class "index|setindex %local.index.class;">
+
+<!ENTITY % local.refentry.class "">
+<!ENTITY % refentry.class "refentry %local.refentry.class;">
+
+<!ENTITY % local.section.class "">
+<!ENTITY % section.class "section %local.section.class;">
+
+<!ENTITY % local.nav.class "">
+<!ENTITY % nav.class "toc|lot|index|glossary|bibliography
+ %local.nav.class;">
+
+<!-- Redeclaration placeholder ............................................ -->
+
+<!-- For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point -->
+
+<![%dbhier.redecl.module;[
+<!-- Defining rdbhier here makes some buggy XML parsers happy. -->
+<!ENTITY % rdbhier "">
+%rdbhier;
+<!--end of dbhier.redecl.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Entities for element mixtures ........................................ -->
+
+<!ENTITY % local.divcomponent.mix "">
+<!ENTITY % divcomponent.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class; |%compound.class;
+ |%genobj.class; |%descobj.class;
+ |%ndxterm.class; |beginpage
+ %forms.hook;
+ %local.divcomponent.mix;">
+
+<!ENTITY % local.refcomponent.mix "">
+<!ENTITY % refcomponent.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class; |%compound.class;
+ |%genobj.class; |%descobj.class;
+ |%ndxterm.class; |beginpage
+ %forms.hook;
+ %local.refcomponent.mix;">
+
+<!ENTITY % local.indexdivcomponent.mix "">
+<!ENTITY % indexdivcomponent.mix
+ "itemizedlist|orderedlist|variablelist|simplelist
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |anchor|remark
+ |%link.char.class;
+ |beginpage
+ %local.indexdivcomponent.mix;">
+
+<!ENTITY % local.refname.char.mix "">
+<!ENTITY % refname.char.mix
+ "#PCDATA
+ |%tech.char.class;
+ %local.refname.char.mix;">
+
+<!ENTITY % local.partcontent.mix "">
+<!ENTITY % partcontent.mix
+ "%appendix.class;|%chapter.class;|%nav.class;|%article.class;
+ |preface|%refentry.class;|reference %local.partcontent.mix;">
+
+<!ENTITY % local.refinline.char.mix "">
+<!ENTITY % refinline.char.mix
+ "#PCDATA
+ |%xref.char.class; |%gen.char.class;
+ |%link.char.class; |%tech.char.class;
+ |%base.char.class; |%docinfo.char.class;
+ |%other.char.class;
+ |%ndxterm.class; |beginpage
+ %local.refinline.char.mix;">
+
+<!ENTITY % local.refclass.char.mix "">
+<!ENTITY % refclass.char.mix
+ "#PCDATA
+ |application
+ %local.refclass.char.mix;">
+
+<!-- Redeclaration placeholder 2 .......................................... -->
+
+<!-- For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point -->
+
+<![%dbhier.redecl2.module;[
+<!-- Defining rdbhier2 here makes some buggy XML parsers happy. -->
+<!ENTITY % rdbhier2 "">
+%rdbhier2;
+<!--end of dbhier.redecl2.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+<!ENTITY % div.title.content
+ "title, subtitle?, titleabbrev?">
+
+<!ENTITY % bookcomponent.title.content
+ "title, subtitle?, titleabbrev?">
+
+<!ENTITY % sect.title.content
+ "title, subtitle?, titleabbrev?">
+
+<!ENTITY % refsect.title.content
+ "title, subtitle?, titleabbrev?">
+
+<!ENTITY % bookcomponent.content
+ "((%divcomponent.mix;)+,
+ (sect1*|(%refentry.class;)*|simplesect*|(%section.class;)*))
+ | (sect1+|(%refentry.class;)+|simplesect+|(%section.class;)+)">
+
+<!-- ...................................................................... -->
+<!-- Set and SetInfo ...................................................... -->
+
+<!ENTITY % set.content.module "INCLUDE">
+<![%set.content.module;[
+<!ENTITY % set.module "INCLUDE">
+<![%set.module;[
+<!ENTITY % local.set.attrib "">
+<!ENTITY % set.role.attrib "%role.attrib;">
+
+<!ENTITY % set.element "INCLUDE">
+<![%set.element;[
+<!--doc:A collection of books.-->
+<!ELEMENT set %ho; ((%div.title.content;)?, setinfo?, toc?, (set|%book.class;)+,
+ setindex?)
+ %ubiq.inclusion;>
+<!--end of set.element-->]]>
+
+<!-- FPI: SGML formal public identifier -->
+
+
+<!ENTITY % set.attlist "INCLUDE">
+<![%set.attlist;[
+<!ATTLIST set
+ fpi CDATA #IMPLIED
+ %status.attrib;
+ %common.attrib;
+ %set.role.attrib;
+ %local.set.attrib;
+>
+<!--end of set.attlist-->]]>
+<!--end of set.module-->]]>
+
+<!ENTITY % setinfo.module "INCLUDE">
+<![%setinfo.module;[
+<!ENTITY % local.setinfo.attrib "">
+<!ENTITY % setinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % setinfo.element "INCLUDE">
+<![%setinfo.element;[
+<!--doc:Meta-information for a Set.-->
+<!ELEMENT setinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of setinfo.element-->]]>
+
+<!-- Contents: IDs of the ToC, Books, and SetIndex that comprise
+ the set, in the order of their appearance -->
+
+
+<!ENTITY % setinfo.attlist "INCLUDE">
+<![%setinfo.attlist;[
+<!ATTLIST setinfo
+ contents IDREFS #IMPLIED
+ %common.attrib;
+ %setinfo.role.attrib;
+ %local.setinfo.attrib;
+>
+<!--end of setinfo.attlist-->]]>
+<!--end of setinfo.module-->]]>
+<!--end of set.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Book and BookInfo .................................................... -->
+
+<!ENTITY % book.content.module "INCLUDE">
+<![%book.content.module;[
+<!ENTITY % book.module "INCLUDE">
+<![%book.module;[
+
+<!ENTITY % local.book.attrib "">
+<!ENTITY % book.role.attrib "%role.attrib;">
+
+<!ENTITY % book.element "INCLUDE">
+<![%book.element;[
+<!--doc:A book.-->
+<!ELEMENT book %ho; ((%div.title.content;)?, bookinfo?,
+ (dedication | toc | lot
+ | glossary | bibliography | preface
+ | %chapter.class; | reference | part
+ | %article.class;
+ | %appendix.class;
+ | %index.class;
+ | colophon)*)
+ %ubiq.inclusion;>
+<!--end of book.element-->]]>
+
+<!-- FPI: SGML formal public identifier -->
+
+
+<!ENTITY % book.attlist "INCLUDE">
+<![%book.attlist;[
+<!ATTLIST book fpi CDATA #IMPLIED
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %book.role.attrib;
+ %local.book.attrib;
+>
+<!--end of book.attlist-->]]>
+<!--end of book.module-->]]>
+
+<!ENTITY % bookinfo.module "INCLUDE">
+<![%bookinfo.module;[
+<!ENTITY % local.bookinfo.attrib "">
+<!ENTITY % bookinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % bookinfo.element "INCLUDE">
+<![%bookinfo.element;[
+<!--doc:Meta-information for a Book.-->
+<!ELEMENT bookinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of bookinfo.element-->]]>
+
+<!-- Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
+ Appendixes, References, GLossary, Bibliography, and indexes
+ comprising the Book, in the order of their appearance -->
+
+
+<!ENTITY % bookinfo.attlist "INCLUDE">
+<![%bookinfo.attlist;[
+<!ATTLIST bookinfo
+ contents IDREFS #IMPLIED
+ %common.attrib;
+ %bookinfo.role.attrib;
+ %local.bookinfo.attrib;
+>
+<!--end of bookinfo.attlist-->]]>
+<!--end of bookinfo.module-->]]>
+<!--end of book.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Dedication, ToC, and LoT ............................................. -->
+
+<!ENTITY % dedication.module "INCLUDE">
+<![%dedication.module;[
+<!ENTITY % local.dedication.attrib "">
+<!ENTITY % dedication.role.attrib "%role.attrib;">
+
+<!ENTITY % dedication.element "INCLUDE">
+<![%dedication.element;[
+<!--doc:A wrapper for the dedication section of a book.-->
+<!ELEMENT dedication %ho; ((%sect.title.content;)?, (%legalnotice.mix;)+)>
+<!--end of dedication.element-->]]>
+
+<!ENTITY % dedication.attlist "INCLUDE">
+<![%dedication.attlist;[
+<!ATTLIST dedication
+ %status.attrib;
+ %common.attrib;
+ %dedication.role.attrib;
+ %local.dedication.attrib;
+>
+<!--end of dedication.attlist-->]]>
+<!--end of dedication.module-->]]>
+
+<!ENTITY % colophon.module "INCLUDE">
+<![ %colophon.module; [
+<!ENTITY % local.colophon.attrib "">
+<!ENTITY % colophon.role.attrib "%role.attrib;">
+
+<!ENTITY % colophon.element "INCLUDE">
+<![ %colophon.element; [
+<!--doc:Text at the back of a book describing facts about its production.-->
+<!ELEMENT colophon %ho; ((%sect.title.content;)?, (%textobject.mix;)+)>
+<!--end of colophon.element-->]]>
+
+<!ENTITY % colophon.attlist "INCLUDE">
+<![ %colophon.attlist; [
+<!ATTLIST colophon
+ %status.attrib;
+ %common.attrib;
+ %colophon.role.attrib;
+ %local.colophon.attrib;>
+<!--end of colophon.attlist-->]]>
+<!--end of colophon.module-->]]>
+
+<!ENTITY % toc.content.module "INCLUDE">
+<![%toc.content.module;[
+<!ENTITY % toc.module "INCLUDE">
+<![%toc.module;[
+<!ENTITY % local.toc.attrib "">
+<!ENTITY % toc.role.attrib "%role.attrib;">
+
+<!ENTITY % toc.element "INCLUDE">
+<![%toc.element;[
+<!--doc:A table of contents.-->
+<!ELEMENT toc %ho; (beginpage?,
+ (%bookcomponent.title.content;)?,
+ tocfront*,
+ (tocpart | tocchap)*, tocback*)>
+<!--end of toc.element-->]]>
+
+<!ENTITY % toc.attlist "INCLUDE">
+<![%toc.attlist;[
+<!ATTLIST toc
+ %pagenum.attrib;
+ %common.attrib;
+ %toc.role.attrib;
+ %local.toc.attrib;
+>
+<!--end of toc.attlist-->]]>
+<!--end of toc.module-->]]>
+
+<!ENTITY % tocfront.module "INCLUDE">
+<![%tocfront.module;[
+<!ENTITY % local.tocfront.attrib "">
+<!ENTITY % tocfront.role.attrib "%role.attrib;">
+
+<!ENTITY % tocfront.element "INCLUDE">
+<![%tocfront.element;[
+<!--doc:An entry in a table of contents for a front matter component.-->
+<!ELEMENT tocfront %ho; (%para.char.mix;)*>
+<!--end of tocfront.element-->]]>
+
+<!-- to element that this entry represents -->
+
+
+<!ENTITY % tocfront.attlist "INCLUDE">
+<![%tocfront.attlist;[
+<!ATTLIST tocfront
+ %label.attrib;
+ %linkend.attrib; %pagenum.attrib;
+ %common.attrib;
+ %tocfront.role.attrib;
+ %local.tocfront.attrib;
+>
+<!--end of tocfront.attlist-->]]>
+<!--end of tocfront.module-->]]>
+
+<!ENTITY % tocentry.module "INCLUDE">
+<![%tocentry.module;[
+<!ENTITY % local.tocentry.attrib "">
+<!ENTITY % tocentry.role.attrib "%role.attrib;">
+
+<!ENTITY % tocentry.element "INCLUDE">
+<![%tocentry.element;[
+<!--doc:A component title in a table of contents.-->
+<!ELEMENT tocentry %ho; (%para.char.mix;)*>
+<!--end of tocentry.element-->]]>
+
+<!-- to element that this entry represents -->
+
+
+<!ENTITY % tocentry.attlist "INCLUDE">
+<![%tocentry.attlist;[
+<!ATTLIST tocentry
+ %linkend.attrib; %pagenum.attrib;
+ %common.attrib;
+ %tocentry.role.attrib;
+ %local.tocentry.attrib;
+>
+<!--end of tocentry.attlist-->]]>
+<!--end of tocentry.module-->]]>
+
+<!ENTITY % tocpart.module "INCLUDE">
+<![%tocpart.module;[
+<!ENTITY % local.tocpart.attrib "">
+<!ENTITY % tocpart.role.attrib "%role.attrib;">
+
+<!ENTITY % tocpart.element "INCLUDE">
+<![%tocpart.element;[
+<!--doc:An entry in a table of contents for a part of a book.-->
+<!ELEMENT tocpart %ho; (tocentry+, tocchap*)>
+<!--end of tocpart.element-->]]>
+
+<!ENTITY % tocpart.attlist "INCLUDE">
+<![%tocpart.attlist;[
+<!ATTLIST tocpart
+ %common.attrib;
+ %tocpart.role.attrib;
+ %local.tocpart.attrib;
+>
+<!--end of tocpart.attlist-->]]>
+<!--end of tocpart.module-->]]>
+
+<!ENTITY % tocchap.module "INCLUDE">
+<![%tocchap.module;[
+<!ENTITY % local.tocchap.attrib "">
+<!ENTITY % tocchap.role.attrib "%role.attrib;">
+
+<!ENTITY % tocchap.element "INCLUDE">
+<![%tocchap.element;[
+<!--doc:An entry in a table of contents for a component in the body of a document.-->
+<!ELEMENT tocchap %ho; (tocentry+, toclevel1*)>
+<!--end of tocchap.element-->]]>
+
+<!ENTITY % tocchap.attlist "INCLUDE">
+<![%tocchap.attlist;[
+<!ATTLIST tocchap
+ %label.attrib;
+ %common.attrib;
+ %tocchap.role.attrib;
+ %local.tocchap.attrib;
+>
+<!--end of tocchap.attlist-->]]>
+<!--end of tocchap.module-->]]>
+
+<!ENTITY % toclevel1.module "INCLUDE">
+<![%toclevel1.module;[
+<!ENTITY % local.toclevel1.attrib "">
+<!ENTITY % toclevel1.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel1.element "INCLUDE">
+<![%toclevel1.element;[
+<!--doc:A top-level entry within a table of contents entry for a chapter-like component.-->
+<!ELEMENT toclevel1 %ho; (tocentry+, toclevel2*)>
+<!--end of toclevel1.element-->]]>
+
+<!ENTITY % toclevel1.attlist "INCLUDE">
+<![%toclevel1.attlist;[
+<!ATTLIST toclevel1
+ %common.attrib;
+ %toclevel1.role.attrib;
+ %local.toclevel1.attrib;
+>
+<!--end of toclevel1.attlist-->]]>
+<!--end of toclevel1.module-->]]>
+
+<!ENTITY % toclevel2.module "INCLUDE">
+<![%toclevel2.module;[
+<!ENTITY % local.toclevel2.attrib "">
+<!ENTITY % toclevel2.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel2.element "INCLUDE">
+<![%toclevel2.element;[
+<!--doc:A second-level entry within a table of contents entry for a chapter-like component.-->
+<!ELEMENT toclevel2 %ho; (tocentry+, toclevel3*)>
+<!--end of toclevel2.element-->]]>
+
+<!ENTITY % toclevel2.attlist "INCLUDE">
+<![%toclevel2.attlist;[
+<!ATTLIST toclevel2
+ %common.attrib;
+ %toclevel2.role.attrib;
+ %local.toclevel2.attrib;
+>
+<!--end of toclevel2.attlist-->]]>
+<!--end of toclevel2.module-->]]>
+
+<!ENTITY % toclevel3.module "INCLUDE">
+<![%toclevel3.module;[
+<!ENTITY % local.toclevel3.attrib "">
+<!ENTITY % toclevel3.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel3.element "INCLUDE">
+<![%toclevel3.element;[
+<!--doc:A third-level entry within a table of contents entry for a chapter-like component.-->
+<!ELEMENT toclevel3 %ho; (tocentry+, toclevel4*)>
+<!--end of toclevel3.element-->]]>
+
+<!ENTITY % toclevel3.attlist "INCLUDE">
+<![%toclevel3.attlist;[
+<!ATTLIST toclevel3
+ %common.attrib;
+ %toclevel3.role.attrib;
+ %local.toclevel3.attrib;
+>
+<!--end of toclevel3.attlist-->]]>
+<!--end of toclevel3.module-->]]>
+
+<!ENTITY % toclevel4.module "INCLUDE">
+<![%toclevel4.module;[
+<!ENTITY % local.toclevel4.attrib "">
+<!ENTITY % toclevel4.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel4.element "INCLUDE">
+<![%toclevel4.element;[
+<!--doc:A fourth-level entry within a table of contents entry for a chapter-like component.-->
+<!ELEMENT toclevel4 %ho; (tocentry+, toclevel5*)>
+<!--end of toclevel4.element-->]]>
+
+<!ENTITY % toclevel4.attlist "INCLUDE">
+<![%toclevel4.attlist;[
+<!ATTLIST toclevel4
+ %common.attrib;
+ %toclevel4.role.attrib;
+ %local.toclevel4.attrib;
+>
+<!--end of toclevel4.attlist-->]]>
+<!--end of toclevel4.module-->]]>
+
+<!ENTITY % toclevel5.module "INCLUDE">
+<![%toclevel5.module;[
+<!ENTITY % local.toclevel5.attrib "">
+<!ENTITY % toclevel5.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel5.element "INCLUDE">
+<![%toclevel5.element;[
+<!--doc:A fifth-level entry within a table of contents entry for a chapter-like component.-->
+<!ELEMENT toclevel5 %ho; (tocentry+)>
+<!--end of toclevel5.element-->]]>
+
+<!ENTITY % toclevel5.attlist "INCLUDE">
+<![%toclevel5.attlist;[
+<!ATTLIST toclevel5
+ %common.attrib;
+ %toclevel5.role.attrib;
+ %local.toclevel5.attrib;
+>
+<!--end of toclevel5.attlist-->]]>
+<!--end of toclevel5.module-->]]>
+
+<!ENTITY % tocback.module "INCLUDE">
+<![%tocback.module;[
+<!ENTITY % local.tocback.attrib "">
+<!ENTITY % tocback.role.attrib "%role.attrib;">
+
+<!ENTITY % tocback.element "INCLUDE">
+<![%tocback.element;[
+<!--doc:An entry in a table of contents for a back matter component.-->
+<!ELEMENT tocback %ho; (%para.char.mix;)*>
+<!--end of tocback.element-->]]>
+
+<!-- to element that this entry represents -->
+
+
+<!ENTITY % tocback.attlist "INCLUDE">
+<![%tocback.attlist;[
+<!ATTLIST tocback
+ %label.attrib;
+ %linkend.attrib; %pagenum.attrib;
+ %common.attrib;
+ %tocback.role.attrib;
+ %local.tocback.attrib;
+>
+<!--end of tocback.attlist-->]]>
+<!--end of tocback.module-->]]>
+<!--end of toc.content.module-->]]>
+
+<!ENTITY % lot.content.module "INCLUDE">
+<![%lot.content.module;[
+<!ENTITY % lot.module "INCLUDE">
+<![%lot.module;[
+<!ENTITY % local.lot.attrib "">
+<!ENTITY % lot.role.attrib "%role.attrib;">
+
+<!ENTITY % lot.element "INCLUDE">
+<![%lot.element;[
+<!--doc:A list of the titles of formal objects (as tables or figures) in a document.-->
+<!ELEMENT lot %ho; (beginpage?, (%bookcomponent.title.content;)?, lotentry*)>
+<!--end of lot.element-->]]>
+
+<!ENTITY % lot.attlist "INCLUDE">
+<![%lot.attlist;[
+<!ATTLIST lot
+ %label.attrib;
+ %common.attrib;
+ %lot.role.attrib;
+ %local.lot.attrib;
+>
+<!--end of lot.attlist-->]]>
+<!--end of lot.module-->]]>
+
+<!ENTITY % lotentry.module "INCLUDE">
+<![%lotentry.module;[
+<!ENTITY % local.lotentry.attrib "">
+<!ENTITY % lotentry.role.attrib "%role.attrib;">
+
+<!ENTITY % lotentry.element "INCLUDE">
+<![%lotentry.element;[
+<!--doc:An entry in a list of titles.-->
+<!ELEMENT lotentry %ho; (%para.char.mix;)*>
+<!--end of lotentry.element-->]]>
+
+<!-- SrcCredit: Information about the source of the entry,
+ as for a list of illustrations -->
+<!-- linkend: to element that this entry represents-->
+<!ENTITY % lotentry.attlist "INCLUDE">
+<![%lotentry.attlist;[
+<!ATTLIST lotentry
+ %linkend.attrib;
+ %pagenum.attrib;
+ srccredit CDATA #IMPLIED
+ %common.attrib;
+ %lotentry.role.attrib;
+ %local.lotentry.attrib;
+>
+<!--end of lotentry.attlist-->]]>
+<!--end of lotentry.module-->]]>
+<!--end of lot.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+
+<!ENTITY % appendix.module "INCLUDE">
+<![%appendix.module;[
+<!ENTITY % local.appendix.attrib "">
+<!ENTITY % appendix.role.attrib "%role.attrib;">
+
+<!ENTITY % appendix.element "INCLUDE">
+<![%appendix.element;[
+<!--doc:An appendix in a Book or Article.-->
+<!ELEMENT appendix %ho; (beginpage?,
+ appendixinfo?,
+ (%bookcomponent.title.content;),
+ (%nav.class;)*,
+ tocchap?,
+ (%bookcomponent.content;),
+ (%nav.class;)*)
+ %ubiq.inclusion;>
+<!--end of appendix.element-->]]>
+
+<!ENTITY % appendix.attlist "INCLUDE">
+<![%appendix.attlist;[
+<!ATTLIST appendix
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %appendix.role.attrib;
+ %local.appendix.attrib;
+>
+<!--end of appendix.attlist-->]]>
+<!--end of appendix.module-->]]>
+
+<!ENTITY % chapter.module "INCLUDE">
+<![%chapter.module;[
+<!ENTITY % local.chapter.attrib "">
+<!ENTITY % chapter.role.attrib "%role.attrib;">
+
+<!ENTITY % chapter.element "INCLUDE">
+<![%chapter.element;[
+<!--doc:A chapter, as of a book.-->
+<!ELEMENT chapter %ho; (beginpage?,
+ chapterinfo?,
+ (%bookcomponent.title.content;),
+ (%nav.class;)*,
+ tocchap?,
+ (%bookcomponent.content;),
+ (%nav.class;)*)
+ %ubiq.inclusion;>
+<!--end of chapter.element-->]]>
+
+<!ENTITY % chapter.attlist "INCLUDE">
+<![%chapter.attlist;[
+<!ATTLIST chapter
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %chapter.role.attrib;
+ %local.chapter.attrib;
+>
+<!--end of chapter.attlist-->]]>
+<!--end of chapter.module-->]]>
+
+<!ENTITY % part.module "INCLUDE">
+<![%part.module;[
+
+<!-- Note that Part was to have its content model reduced in V4.5. This
+change will not be made after all. -->
+
+<!ENTITY % local.part.attrib "">
+<!ENTITY % part.role.attrib "%role.attrib;">
+
+<!ENTITY % part.element "INCLUDE">
+<![%part.element;[
+<!--doc:A division in a book.-->
+<!ELEMENT part %ho; (beginpage?,
+ partinfo?, (%bookcomponent.title.content;), partintro?,
+ (%partcontent.mix;)+)
+ %ubiq.inclusion;>
+<!--end of part.element-->]]>
+
+<!ENTITY % part.attlist "INCLUDE">
+<![%part.attlist;[
+<!ATTLIST part
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %part.role.attrib;
+ %local.part.attrib;
+>
+<!--end of part.attlist-->]]>
+<!--ELEMENT PartIntro (defined below)-->
+<!--end of part.module-->]]>
+
+<!ENTITY % preface.module "INCLUDE">
+<![%preface.module;[
+<!ENTITY % local.preface.attrib "">
+<!ENTITY % preface.role.attrib "%role.attrib;">
+
+<!ENTITY % preface.element "INCLUDE">
+<![%preface.element;[
+<!--doc:Introductory matter preceding the first chapter of a book.-->
+<!ELEMENT preface %ho; (beginpage?,
+ prefaceinfo?,
+ (%bookcomponent.title.content;),
+ (%nav.class;)*,
+ tocchap?,
+ (%bookcomponent.content;),
+ (%nav.class;)*)
+ %ubiq.inclusion;>
+<!--end of preface.element-->]]>
+
+<!ENTITY % preface.attlist "INCLUDE">
+<![%preface.attlist;[
+<!ATTLIST preface
+ %status.attrib;
+ %common.attrib;
+ %preface.role.attrib;
+ %local.preface.attrib;
+>
+<!--end of preface.attlist-->]]>
+<!--end of preface.module-->]]>
+
+<!ENTITY % reference.module "INCLUDE">
+<![%reference.module;[
+<!ENTITY % local.reference.attrib "">
+<!ENTITY % reference.role.attrib "%role.attrib;">
+
+<!ENTITY % reference.element "INCLUDE">
+<![%reference.element;[
+<!--doc:A collection of reference entries.-->
+<!ELEMENT reference %ho; (beginpage?,
+ referenceinfo?,
+ (%bookcomponent.title.content;), partintro?,
+ (%refentry.class;)+)
+ %ubiq.inclusion;>
+<!--end of reference.element-->]]>
+
+<!ENTITY % reference.attlist "INCLUDE">
+<![%reference.attlist;[
+<!ATTLIST reference
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %reference.role.attrib;
+ %local.reference.attrib;
+>
+<!--end of reference.attlist-->]]>
+<!--ELEMENT PartIntro (defined below)-->
+<!--end of reference.module-->]]>
+
+<!ENTITY % partintro.module "INCLUDE">
+<![%partintro.module;[
+<!ENTITY % local.partintro.attrib "">
+<!ENTITY % partintro.role.attrib "%role.attrib;">
+
+<!ENTITY % partintro.element "INCLUDE">
+<![%partintro.element;[
+<!--doc:An introduction to the contents of a part.-->
+<!ELEMENT partintro %ho; ((%div.title.content;)?, (%bookcomponent.content;))
+ %ubiq.inclusion;>
+<!--end of partintro.element-->]]>
+
+<!ENTITY % partintro.attlist "INCLUDE">
+<![%partintro.attlist;[
+<!ATTLIST partintro
+ %label.attrib;
+ %common.attrib;
+ %partintro.role.attrib;
+ %local.partintro.attrib;
+>
+<!--end of partintro.attlist-->]]>
+<!--end of partintro.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Other Info elements .................................................. -->
+
+<!ENTITY % appendixinfo.module "INCLUDE">
+<![ %appendixinfo.module; [
+<!ENTITY % local.appendixinfo.attrib "">
+<!ENTITY % appendixinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % appendixinfo.element "INCLUDE">
+<![ %appendixinfo.element; [
+<!--doc:Meta-information for an Appendix.-->
+<!ELEMENT appendixinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of appendixinfo.element-->]]>
+
+<!ENTITY % appendixinfo.attlist "INCLUDE">
+<![ %appendixinfo.attlist; [
+<!ATTLIST appendixinfo
+ %common.attrib;
+ %appendixinfo.role.attrib;
+ %local.appendixinfo.attrib;
+>
+<!--end of appendixinfo.attlist-->]]>
+<!--end of appendixinfo.module-->]]>
+
+<!ENTITY % bibliographyinfo.module "INCLUDE">
+<![ %bibliographyinfo.module; [
+<!ENTITY % local.bibliographyinfo.attrib "">
+<!ENTITY % bibliographyinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliographyinfo.element "INCLUDE">
+<![ %bibliographyinfo.element; [
+<!--doc:Meta-information for a Bibliography.-->
+<!ELEMENT bibliographyinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of bibliographyinfo.element-->]]>
+
+<!ENTITY % bibliographyinfo.attlist "INCLUDE">
+<![ %bibliographyinfo.attlist; [
+<!ATTLIST bibliographyinfo
+ %common.attrib;
+ %bibliographyinfo.role.attrib;
+ %local.bibliographyinfo.attrib;
+>
+<!--end of bibliographyinfo.attlist-->]]>
+<!--end of bibliographyinfo.module-->]]>
+
+<!ENTITY % chapterinfo.module "INCLUDE">
+<![ %chapterinfo.module; [
+<!ENTITY % local.chapterinfo.attrib "">
+<!ENTITY % chapterinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % chapterinfo.element "INCLUDE">
+<![ %chapterinfo.element; [
+<!--doc:Meta-information for a Chapter.-->
+<!ELEMENT chapterinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of chapterinfo.element-->]]>
+
+<!ENTITY % chapterinfo.attlist "INCLUDE">
+<![ %chapterinfo.attlist; [
+<!ATTLIST chapterinfo
+ %common.attrib;
+ %chapterinfo.role.attrib;
+ %local.chapterinfo.attrib;
+>
+<!--end of chapterinfo.attlist-->]]>
+<!--end of chapterinfo.module-->]]>
+
+<!ENTITY % glossaryinfo.module "INCLUDE">
+<![ %glossaryinfo.module; [
+<!ENTITY % local.glossaryinfo.attrib "">
+<!ENTITY % glossaryinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % glossaryinfo.element "INCLUDE">
+<![ %glossaryinfo.element; [
+<!--doc:Meta-information for a Glossary.-->
+<!ELEMENT glossaryinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of glossaryinfo.element-->]]>
+
+<!ENTITY % glossaryinfo.attlist "INCLUDE">
+<![ %glossaryinfo.attlist; [
+<!ATTLIST glossaryinfo
+ %common.attrib;
+ %glossaryinfo.role.attrib;
+ %local.glossaryinfo.attrib;
+>
+<!--end of glossaryinfo.attlist-->]]>
+<!--end of glossaryinfo.module-->]]>
+
+<!ENTITY % indexinfo.module "INCLUDE">
+<![ %indexinfo.module; [
+<!ENTITY % local.indexinfo.attrib "">
+<!ENTITY % indexinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % indexinfo.element "INCLUDE">
+<![ %indexinfo.element; [
+<!--doc:Meta-information for an Index.-->
+<!ELEMENT indexinfo %ho; ((%info.class;)+)>
+<!--end of indexinfo.element-->]]>
+
+<!ENTITY % indexinfo.attlist "INCLUDE">
+<![ %indexinfo.attlist; [
+<!ATTLIST indexinfo
+ %common.attrib;
+ %indexinfo.role.attrib;
+ %local.indexinfo.attrib;
+>
+<!--end of indexinfo.attlist-->]]>
+<!--end of indexinfo.module-->]]>
+
+<!ENTITY % setindexinfo.module "INCLUDE">
+<![ %setindexinfo.module; [
+<!ENTITY % local.setindexinfo.attrib "">
+<!ENTITY % setindexinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % setindexinfo.element "INCLUDE">
+<![ %setindexinfo.element; [
+<!--doc:Meta-information for a SetIndex.-->
+<!ELEMENT setindexinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of setindexinfo.element-->]]>
+
+<!ENTITY % setindexinfo.attlist "INCLUDE">
+<![ %setindexinfo.attlist; [
+<!ATTLIST setindexinfo
+ %common.attrib;
+ %setindexinfo.role.attrib;
+ %local.setindexinfo.attrib;
+>
+<!--end of setindexinfo.attlist-->]]>
+<!--end of setindexinfo.module-->]]>
+
+<!ENTITY % partinfo.module "INCLUDE">
+<![ %partinfo.module; [
+<!ENTITY % local.partinfo.attrib "">
+<!ENTITY % partinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % partinfo.element "INCLUDE">
+<![ %partinfo.element; [
+<!--doc:Meta-information for a Part.-->
+<!ELEMENT partinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of partinfo.element-->]]>
+
+<!ENTITY % partinfo.attlist "INCLUDE">
+<![ %partinfo.attlist; [
+<!ATTLIST partinfo
+ %common.attrib;
+ %partinfo.role.attrib;
+ %local.partinfo.attrib;
+>
+<!--end of partinfo.attlist-->]]>
+<!--end of partinfo.module-->]]>
+
+<!ENTITY % prefaceinfo.module "INCLUDE">
+<![ %prefaceinfo.module; [
+<!ENTITY % local.prefaceinfo.attrib "">
+<!ENTITY % prefaceinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % prefaceinfo.element "INCLUDE">
+<![ %prefaceinfo.element; [
+<!--doc:Meta-information for a Preface.-->
+<!ELEMENT prefaceinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of prefaceinfo.element-->]]>
+
+<!ENTITY % prefaceinfo.attlist "INCLUDE">
+<![ %prefaceinfo.attlist; [
+<!ATTLIST prefaceinfo
+ %common.attrib;
+ %prefaceinfo.role.attrib;
+ %local.prefaceinfo.attrib;
+>
+<!--end of prefaceinfo.attlist-->]]>
+<!--end of prefaceinfo.module-->]]>
+
+<!ENTITY % refentryinfo.module "INCLUDE">
+<![ %refentryinfo.module; [
+<!ENTITY % local.refentryinfo.attrib "">
+<!ENTITY % refentryinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % refentryinfo.element "INCLUDE">
+<![ %refentryinfo.element; [
+<!--doc:Meta-information for a Refentry.-->
+<!ELEMENT refentryinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of refentryinfo.element-->]]>
+
+<!ENTITY % refentryinfo.attlist "INCLUDE">
+<![ %refentryinfo.attlist; [
+<!ATTLIST refentryinfo
+ %common.attrib;
+ %refentryinfo.role.attrib;
+ %local.refentryinfo.attrib;
+>
+<!--end of refentryinfo.attlist-->]]>
+<!--end of refentryinfo.module-->]]>
+
+<!ENTITY % refsectioninfo.module "INCLUDE">
+<![ %refsectioninfo.module; [
+<!ENTITY % local.refsectioninfo.attrib "">
+<!ENTITY % refsectioninfo.role.attrib "%role.attrib;">
+
+<!ENTITY % refsectioninfo.element "INCLUDE">
+<![ %refsectioninfo.element; [
+<!--doc:Meta-information for a refsection.-->
+<!ELEMENT refsectioninfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of refsectioninfo.element-->]]>
+
+<!ENTITY % refsectioninfo.attlist "INCLUDE">
+<![ %refsectioninfo.attlist; [
+<!ATTLIST refsectioninfo
+ %common.attrib;
+ %refsectioninfo.role.attrib;
+ %local.refsectioninfo.attrib;
+>
+<!--end of refsectioninfo.attlist-->]]>
+<!--end of refsectioninfo.module-->]]>
+
+<!ENTITY % refsect1info.module "INCLUDE">
+<![ %refsect1info.module; [
+<!ENTITY % local.refsect1info.attrib "">
+<!ENTITY % refsect1info.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect1info.element "INCLUDE">
+<![ %refsect1info.element; [
+<!--doc:Meta-information for a RefSect1.-->
+<!ELEMENT refsect1info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of refsect1info.element-->]]>
+
+<!ENTITY % refsect1info.attlist "INCLUDE">
+<![ %refsect1info.attlist; [
+<!ATTLIST refsect1info
+ %common.attrib;
+ %refsect1info.role.attrib;
+ %local.refsect1info.attrib;
+>
+<!--end of refsect1info.attlist-->]]>
+<!--end of refsect1info.module-->]]>
+
+<!ENTITY % refsect2info.module "INCLUDE">
+<![ %refsect2info.module; [
+<!ENTITY % local.refsect2info.attrib "">
+<!ENTITY % refsect2info.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect2info.element "INCLUDE">
+<![ %refsect2info.element; [
+<!--doc:Meta-information for a RefSect2.-->
+<!ELEMENT refsect2info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of refsect2info.element-->]]>
+
+<!ENTITY % refsect2info.attlist "INCLUDE">
+<![ %refsect2info.attlist; [
+<!ATTLIST refsect2info
+ %common.attrib;
+ %refsect2info.role.attrib;
+ %local.refsect2info.attrib;
+>
+<!--end of refsect2info.attlist-->]]>
+<!--end of refsect2info.module-->]]>
+
+<!ENTITY % refsect3info.module "INCLUDE">
+<![ %refsect3info.module; [
+<!ENTITY % local.refsect3info.attrib "">
+<!ENTITY % refsect3info.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect3info.element "INCLUDE">
+<![ %refsect3info.element; [
+<!--doc:Meta-information for a RefSect3.-->
+<!ELEMENT refsect3info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of refsect3info.element-->]]>
+
+<!ENTITY % refsect3info.attlist "INCLUDE">
+<![ %refsect3info.attlist; [
+<!ATTLIST refsect3info
+ %common.attrib;
+ %refsect3info.role.attrib;
+ %local.refsect3info.attrib;
+>
+<!--end of refsect3info.attlist-->]]>
+<!--end of refsect3info.module-->]]>
+
+<!ENTITY % refsynopsisdivinfo.module "INCLUDE">
+<![ %refsynopsisdivinfo.module; [
+<!ENTITY % local.refsynopsisdivinfo.attrib "">
+<!ENTITY % refsynopsisdivinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % refsynopsisdivinfo.element "INCLUDE">
+<![ %refsynopsisdivinfo.element; [
+<!--doc:Meta-information for a RefSynopsisDiv.-->
+<!ELEMENT refsynopsisdivinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of refsynopsisdivinfo.element-->]]>
+
+<!ENTITY % refsynopsisdivinfo.attlist "INCLUDE">
+<![ %refsynopsisdivinfo.attlist; [
+<!ATTLIST refsynopsisdivinfo
+ %common.attrib;
+ %refsynopsisdivinfo.role.attrib;
+ %local.refsynopsisdivinfo.attrib;
+>
+<!--end of refsynopsisdivinfo.attlist-->]]>
+<!--end of refsynopsisdivinfo.module-->]]>
+
+<!ENTITY % referenceinfo.module "INCLUDE">
+<![ %referenceinfo.module; [
+<!ENTITY % local.referenceinfo.attrib "">
+<!ENTITY % referenceinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % referenceinfo.element "INCLUDE">
+<![ %referenceinfo.element; [
+<!--doc:Meta-information for a Reference.-->
+<!ELEMENT referenceinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of referenceinfo.element-->]]>
+
+<!ENTITY % referenceinfo.attlist "INCLUDE">
+<![ %referenceinfo.attlist; [
+<!ATTLIST referenceinfo
+ %common.attrib;
+ %referenceinfo.role.attrib;
+ %local.referenceinfo.attrib;
+>
+<!--end of referenceinfo.attlist-->]]>
+<!--end of referenceinfo.module-->]]>
+
+<!ENTITY % local.sect1info.attrib "">
+<!ENTITY % sect1info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect1info.element "INCLUDE">
+<![%sect1info.element;[
+<!--doc:Meta-information for a Sect1.-->
+<!ELEMENT sect1info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of sect1info.element-->]]>
+
+<!ENTITY % sect1info.attlist "INCLUDE">
+<![%sect1info.attlist;[
+<!ATTLIST sect1info
+ %common.attrib;
+ %sect1info.role.attrib;
+ %local.sect1info.attrib;
+>
+<!--end of sect1info.attlist-->]]>
+
+<!ENTITY % local.sect2info.attrib "">
+<!ENTITY % sect2info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect2info.element "INCLUDE">
+<![%sect2info.element;[
+<!--doc:Meta-information for a Sect2.-->
+<!ELEMENT sect2info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of sect2info.element-->]]>
+
+<!ENTITY % sect2info.attlist "INCLUDE">
+<![%sect2info.attlist;[
+<!ATTLIST sect2info
+ %common.attrib;
+ %sect2info.role.attrib;
+ %local.sect2info.attrib;
+>
+<!--end of sect2info.attlist-->]]>
+
+<!ENTITY % local.sect3info.attrib "">
+<!ENTITY % sect3info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect3info.element "INCLUDE">
+<![%sect3info.element;[
+<!--doc:Meta-information for a Sect3.-->
+<!ELEMENT sect3info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of sect3info.element-->]]>
+
+<!ENTITY % sect3info.attlist "INCLUDE">
+<![%sect3info.attlist;[
+<!ATTLIST sect3info
+ %common.attrib;
+ %sect3info.role.attrib;
+ %local.sect3info.attrib;
+>
+<!--end of sect3info.attlist-->]]>
+
+<!ENTITY % local.sect4info.attrib "">
+<!ENTITY % sect4info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect4info.element "INCLUDE">
+<![%sect4info.element;[
+<!--doc:Meta-information for a Sect4.-->
+<!ELEMENT sect4info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of sect4info.element-->]]>
+
+<!ENTITY % sect4info.attlist "INCLUDE">
+<![%sect4info.attlist;[
+<!ATTLIST sect4info
+ %common.attrib;
+ %sect4info.role.attrib;
+ %local.sect4info.attrib;
+>
+<!--end of sect4info.attlist-->]]>
+
+<!ENTITY % local.sect5info.attrib "">
+<!ENTITY % sect5info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect5info.element "INCLUDE">
+<![%sect5info.element;[
+<!--doc:Meta-information for a Sect5.-->
+<!ELEMENT sect5info %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of sect5info.element-->]]>
+
+<!ENTITY % sect5info.attlist "INCLUDE">
+<![%sect5info.attlist;[
+<!ATTLIST sect5info
+ %common.attrib;
+ %sect5info.role.attrib;
+ %local.sect5info.attrib;
+>
+<!--end of sect5info.attlist-->]]>
+
+<!-- ...................................................................... -->
+<!-- Section (parallel to Sect*) ......................................... -->
+
+<!ENTITY % section.content.module "INCLUDE">
+<![ %section.content.module; [
+<!ENTITY % section.module "INCLUDE">
+<![ %section.module; [
+<!ENTITY % local.section.attrib "">
+<!ENTITY % section.role.attrib "%role.attrib;">
+
+<!ENTITY % section.element "INCLUDE">
+<![ %section.element; [
+<!--doc:A recursive section.-->
+<!ELEMENT section %ho; (sectioninfo?,
+ (%sect.title.content;),
+ (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)*|(%section.class;)*|simplesect*))
+ | (%refentry.class;)+|(%section.class;)+|simplesect+),
+ (%nav.class;)*)
+ %ubiq.inclusion;>
+<!--end of section.element-->]]>
+
+<!ENTITY % section.attlist "INCLUDE">
+<![ %section.attlist; [
+<!ATTLIST section
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %section.role.attrib;
+ %local.section.attrib;
+>
+<!--end of section.attlist-->]]>
+<!--end of section.module-->]]>
+
+<!ENTITY % sectioninfo.module "INCLUDE">
+<![ %sectioninfo.module; [
+<!ENTITY % sectioninfo.role.attrib "%role.attrib;">
+<!ENTITY % local.sectioninfo.attrib "">
+
+<!ENTITY % sectioninfo.element "INCLUDE">
+<![ %sectioninfo.element; [
+<!--doc:Meta-information for a recursive section.-->
+<!ELEMENT sectioninfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of sectioninfo.element-->]]>
+
+<!ENTITY % sectioninfo.attlist "INCLUDE">
+<![ %sectioninfo.attlist; [
+<!ATTLIST sectioninfo
+ %common.attrib;
+ %sectioninfo.role.attrib;
+ %local.sectioninfo.attrib;
+>
+<!--end of sectioninfo.attlist-->]]>
+<!--end of sectioninfo.module-->]]>
+<!--end of section.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+
+<!ENTITY % sect1.module "INCLUDE">
+<![%sect1.module;[
+<!ENTITY % local.sect1.attrib "">
+<!ENTITY % sect1.role.attrib "%role.attrib;">
+
+<!ENTITY % sect1.element "INCLUDE">
+<![%sect1.element;[
+<!--doc:A top-level section of document.-->
+<!ELEMENT sect1 %ho; (sect1info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect2* | simplesect*))
+ | (%refentry.class;)+ | sect2+ | simplesect+), (%nav.class;)*)
+ %ubiq.inclusion;>
+<!--end of sect1.element-->]]>
+
+<!-- Renderas: Indicates the format in which the heading should
+ appear -->
+
+
+<!ENTITY % sect1.attlist "INCLUDE">
+<![%sect1.attlist;[
+<!ATTLIST sect1
+ renderas (sect2
+ |sect3
+ |sect4
+ |sect5) #IMPLIED
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %sect1.role.attrib;
+ %local.sect1.attrib;
+>
+<!--end of sect1.attlist-->]]>
+<!--end of sect1.module-->]]>
+
+<!ENTITY % sect2.module "INCLUDE">
+<![%sect2.module;[
+<!ENTITY % local.sect2.attrib "">
+<!ENTITY % sect2.role.attrib "%role.attrib;">
+
+<!ENTITY % sect2.element "INCLUDE">
+<![%sect2.element;[
+<!--doc:A subsection within a Sect1.-->
+<!ELEMENT sect2 %ho; (sect2info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect3* | simplesect*))
+ | (%refentry.class;)+ | sect3+ | simplesect+), (%nav.class;)*)>
+<!--end of sect2.element-->]]>
+
+<!-- Renderas: Indicates the format in which the heading should
+ appear -->
+
+
+<!ENTITY % sect2.attlist "INCLUDE">
+<![%sect2.attlist;[
+<!ATTLIST sect2
+ renderas (sect1
+ |sect3
+ |sect4
+ |sect5) #IMPLIED
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %sect2.role.attrib;
+ %local.sect2.attrib;
+>
+<!--end of sect2.attlist-->]]>
+<!--end of sect2.module-->]]>
+
+<!ENTITY % sect3.module "INCLUDE">
+<![%sect3.module;[
+<!ENTITY % local.sect3.attrib "">
+<!ENTITY % sect3.role.attrib "%role.attrib;">
+
+<!ENTITY % sect3.element "INCLUDE">
+<![%sect3.element;[
+<!--doc:A subsection within a Sect2.-->
+<!ELEMENT sect3 %ho; (sect3info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect4* | simplesect*))
+ | (%refentry.class;)+ | sect4+ | simplesect+), (%nav.class;)*)>
+<!--end of sect3.element-->]]>
+
+<!-- Renderas: Indicates the format in which the heading should
+ appear -->
+
+
+<!ENTITY % sect3.attlist "INCLUDE">
+<![%sect3.attlist;[
+<!ATTLIST sect3
+ renderas (sect1
+ |sect2
+ |sect4
+ |sect5) #IMPLIED
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %sect3.role.attrib;
+ %local.sect3.attrib;
+>
+<!--end of sect3.attlist-->]]>
+<!--end of sect3.module-->]]>
+
+<!ENTITY % sect4.module "INCLUDE">
+<![%sect4.module;[
+<!ENTITY % local.sect4.attrib "">
+<!ENTITY % sect4.role.attrib "%role.attrib;">
+
+<!ENTITY % sect4.element "INCLUDE">
+<![%sect4.element;[
+<!--doc:A subsection within a Sect3.-->
+<!ELEMENT sect4 %ho; (sect4info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect5* | simplesect*))
+ | (%refentry.class;)+ | sect5+ | simplesect+), (%nav.class;)*)>
+<!--end of sect4.element-->]]>
+
+<!-- Renderas: Indicates the format in which the heading should
+ appear -->
+
+
+<!ENTITY % sect4.attlist "INCLUDE">
+<![%sect4.attlist;[
+<!ATTLIST sect4
+ renderas (sect1
+ |sect2
+ |sect3
+ |sect5) #IMPLIED
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %sect4.role.attrib;
+ %local.sect4.attrib;
+>
+<!--end of sect4.attlist-->]]>
+<!--end of sect4.module-->]]>
+
+<!ENTITY % sect5.module "INCLUDE">
+<![%sect5.module;[
+<!ENTITY % local.sect5.attrib "">
+<!ENTITY % sect5.role.attrib "%role.attrib;">
+
+<!ENTITY % sect5.element "INCLUDE">
+<![%sect5.element;[
+<!--doc:A subsection within a Sect4.-->
+<!ELEMENT sect5 %ho; (sect5info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+, ((%refentry.class;)* | simplesect*))
+ | (%refentry.class;)+ | simplesect+), (%nav.class;)*)>
+<!--end of sect5.element-->]]>
+
+<!-- Renderas: Indicates the format in which the heading should
+ appear -->
+
+
+<!ENTITY % sect5.attlist "INCLUDE">
+<![%sect5.attlist;[
+<!ATTLIST sect5
+ renderas (sect1
+ |sect2
+ |sect3
+ |sect4) #IMPLIED
+ %label.attrib;
+ %status.attrib;
+ %common.attrib;
+ %sect5.role.attrib;
+ %local.sect5.attrib;
+>
+<!--end of sect5.attlist-->]]>
+<!--end of sect5.module-->]]>
+
+<!ENTITY % simplesect.module "INCLUDE">
+<![%simplesect.module;[
+<!ENTITY % local.simplesect.attrib "">
+<!ENTITY % simplesect.role.attrib "%role.attrib;">
+
+<!ENTITY % simplesect.element "INCLUDE">
+<![%simplesect.element;[
+<!--doc:A section of a document with no subdivisions.-->
+<!ELEMENT simplesect %ho; ((%sect.title.content;), (%divcomponent.mix;)+)
+ %ubiq.inclusion;>
+<!--end of simplesect.element-->]]>
+
+<!ENTITY % simplesect.attlist "INCLUDE">
+<![%simplesect.attlist;[
+<!ATTLIST simplesect
+ %common.attrib;
+ %simplesect.role.attrib;
+ %local.simplesect.attrib;
+>
+<!--end of simplesect.attlist-->]]>
+<!--end of simplesect.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Bibliography ......................................................... -->
+
+<!ENTITY % bibliography.content.module "INCLUDE">
+<![%bibliography.content.module;[
+<!ENTITY % bibliography.module "INCLUDE">
+<![%bibliography.module;[
+<!ENTITY % local.bibliography.attrib "">
+<!ENTITY % bibliography.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliography.element "INCLUDE">
+<![%bibliography.element;[
+<!--doc:A bibliography.-->
+<!ELEMENT bibliography %ho; (bibliographyinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*,
+ (bibliodiv+ | (biblioentry|bibliomixed)+))>
+<!--end of bibliography.element-->]]>
+
+<!ENTITY % bibliography.attlist "INCLUDE">
+<![%bibliography.attlist;[
+<!ATTLIST bibliography
+ %status.attrib;
+ %common.attrib;
+ %bibliography.role.attrib;
+ %local.bibliography.attrib;
+>
+<!--end of bibliography.attlist-->]]>
+<!--end of bibliography.module-->]]>
+
+<!ENTITY % bibliodiv.module "INCLUDE">
+<![%bibliodiv.module;[
+<!ENTITY % local.bibliodiv.attrib "">
+<!ENTITY % bibliodiv.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliodiv.element "INCLUDE">
+<![%bibliodiv.element;[
+<!--doc:A section of a Bibliography.-->
+<!ELEMENT bibliodiv %ho; ((%sect.title.content;)?, (%component.mix;)*,
+ (biblioentry|bibliomixed)+)>
+<!--end of bibliodiv.element-->]]>
+
+<!ENTITY % bibliodiv.attlist "INCLUDE">
+<![%bibliodiv.attlist;[
+<!ATTLIST bibliodiv
+ %status.attrib;
+ %common.attrib;
+ %bibliodiv.role.attrib;
+ %local.bibliodiv.attrib;
+>
+<!--end of bibliodiv.attlist-->]]>
+<!--end of bibliodiv.module-->]]>
+<!--end of bibliography.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Glossary ............................................................. -->
+
+<!ENTITY % glossary.content.module "INCLUDE">
+<![%glossary.content.module;[
+<!ENTITY % glossary.module "INCLUDE">
+<![%glossary.module;[
+<!ENTITY % local.glossary.attrib "">
+<!ENTITY % glossary.role.attrib "%role.attrib;">
+
+<!ENTITY % glossary.element "INCLUDE">
+<![%glossary.element;[
+<!--doc:A glossary.-->
+<!ELEMENT glossary %ho; (glossaryinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*,
+ (glossdiv+ | glossentry+), bibliography?)>
+<!--end of glossary.element-->]]>
+
+<!ENTITY % glossary.attlist "INCLUDE">
+<![%glossary.attlist;[
+<!ATTLIST glossary
+ %status.attrib;
+ %common.attrib;
+ %glossary.role.attrib;
+ %local.glossary.attrib;
+>
+<!--end of glossary.attlist-->]]>
+<!--end of glossary.module-->]]>
+
+<!ENTITY % glossdiv.module "INCLUDE">
+<![%glossdiv.module;[
+<!ENTITY % local.glossdiv.attrib "">
+<!ENTITY % glossdiv.role.attrib "%role.attrib;">
+
+<!ENTITY % glossdiv.element "INCLUDE">
+<![%glossdiv.element;[
+<!--doc:A division in a Glossary.-->
+<!ELEMENT glossdiv %ho; ((%sect.title.content;), (%component.mix;)*,
+ glossentry+)>
+<!--end of glossdiv.element-->]]>
+
+<!ENTITY % glossdiv.attlist "INCLUDE">
+<![%glossdiv.attlist;[
+<!ATTLIST glossdiv
+ %status.attrib;
+ %common.attrib;
+ %glossdiv.role.attrib;
+ %local.glossdiv.attrib;
+>
+<!--end of glossdiv.attlist-->]]>
+<!--end of glossdiv.module-->]]>
+<!--end of glossary.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Index and SetIndex ................................................... -->
+
+<!ENTITY % index.content.module "INCLUDE">
+<![%index.content.module;[
+<!ENTITY % indexes.module "INCLUDE">
+<![%indexes.module;[
+<!ENTITY % local.indexes.attrib "">
+<!ENTITY % indexes.role.attrib "%role.attrib;">
+
+<!ENTITY % index.element "INCLUDE">
+<![%index.element;[
+<!--doc:An index.-->
+<!ELEMENT index %ho; (indexinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*,
+ (indexdiv* | indexentry*))
+ %ndxterm.exclusion;>
+<!--end of index.element-->]]>
+
+<!ENTITY % index.attlist "INCLUDE">
+<![%index.attlist;[
+<!ATTLIST index
+ type CDATA #IMPLIED
+ %common.attrib;
+ %indexes.role.attrib;
+ %local.indexes.attrib;
+>
+<!--end of index.attlist-->]]>
+
+<!ENTITY % setindex.element "INCLUDE">
+<![%setindex.element;[
+<!--doc:An index to a set of books.-->
+<!ELEMENT setindex %ho; (setindexinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*,
+ (indexdiv* | indexentry*))
+ %ndxterm.exclusion;>
+<!--end of setindex.element-->]]>
+
+<!ENTITY % setindex.attlist "INCLUDE">
+<![%setindex.attlist;[
+<!ATTLIST setindex
+ %common.attrib;
+ %indexes.role.attrib;
+ %local.indexes.attrib;
+>
+<!--end of setindex.attlist-->]]>
+<!--end of indexes.module-->]]>
+
+<!ENTITY % indexdiv.module "INCLUDE">
+<![%indexdiv.module;[
+
+<!-- SegmentedList in this content is useful for marking up permuted
+ indices. -->
+
+<!ENTITY % local.indexdiv.attrib "">
+<!ENTITY % indexdiv.role.attrib "%role.attrib;">
+
+<!ENTITY % indexdiv.element "INCLUDE">
+<![%indexdiv.element;[
+<!--doc:A division in an index.-->
+<!ELEMENT indexdiv %ho; ((%sect.title.content;)?, ((%indexdivcomponent.mix;)*,
+ (indexentry+ | segmentedlist)))>
+<!--end of indexdiv.element-->]]>
+
+<!ENTITY % indexdiv.attlist "INCLUDE">
+<![%indexdiv.attlist;[
+<!ATTLIST indexdiv
+ %common.attrib;
+ %indexdiv.role.attrib;
+ %local.indexdiv.attrib;
+>
+<!--end of indexdiv.attlist-->]]>
+<!--end of indexdiv.module-->]]>
+
+<!ENTITY % indexentry.module "INCLUDE">
+<![%indexentry.module;[
+<!-- Index entries appear in the index, not the text. -->
+
+<!ENTITY % local.indexentry.attrib "">
+<!ENTITY % indexentry.role.attrib "%role.attrib;">
+
+<!ENTITY % indexentry.element "INCLUDE">
+<![%indexentry.element;[
+<!--doc:An entry in an index.-->
+<!ELEMENT indexentry %ho; (primaryie, (seeie|seealsoie)*,
+ (secondaryie, (seeie|seealsoie|tertiaryie)*)*)>
+<!--end of indexentry.element-->]]>
+
+<!ENTITY % indexentry.attlist "INCLUDE">
+<![%indexentry.attlist;[
+<!ATTLIST indexentry
+ %common.attrib;
+ %indexentry.role.attrib;
+ %local.indexentry.attrib;
+>
+<!--end of indexentry.attlist-->]]>
+<!--end of indexentry.module-->]]>
+
+<!ENTITY % primsecterie.module "INCLUDE">
+<![%primsecterie.module;[
+<!ENTITY % local.primsecterie.attrib "">
+<!ENTITY % primsecterie.role.attrib "%role.attrib;">
+
+<!ENTITY % primaryie.element "INCLUDE">
+<![%primaryie.element;[
+<!--doc:A primary term in an index entry, not in the text.-->
+<!ELEMENT primaryie %ho; (%ndxterm.char.mix;)*>
+<!--end of primaryie.element-->]]>
+
+<!-- to IndexTerms that these entries represent -->
+
+<!ENTITY % primaryie.attlist "INCLUDE">
+<![%primaryie.attlist;[
+<!ATTLIST primaryie
+ %linkends.attrib; %common.attrib;
+ %primsecterie.role.attrib;
+ %local.primsecterie.attrib;
+>
+<!--end of primaryie.attlist-->]]>
+
+<!ENTITY % secondaryie.element "INCLUDE">
+<![%secondaryie.element;[
+<!--doc:A secondary term in an index entry, rather than in the text.-->
+<!ELEMENT secondaryie %ho; (%ndxterm.char.mix;)*>
+<!--end of secondaryie.element-->]]>
+
+<!-- to IndexTerms that these entries represent -->
+
+<!ENTITY % secondaryie.attlist "INCLUDE">
+<![%secondaryie.attlist;[
+<!ATTLIST secondaryie
+ %linkends.attrib; %common.attrib;
+ %primsecterie.role.attrib;
+ %local.primsecterie.attrib;
+>
+<!--end of secondaryie.attlist-->]]>
+
+<!ENTITY % tertiaryie.element "INCLUDE">
+<![%tertiaryie.element;[
+<!--doc:A tertiary term in an index entry, rather than in the text.-->
+<!ELEMENT tertiaryie %ho; (%ndxterm.char.mix;)*>
+<!--end of tertiaryie.element-->]]>
+
+<!-- to IndexTerms that these entries represent -->
+
+<!ENTITY % tertiaryie.attlist "INCLUDE">
+<![%tertiaryie.attlist;[
+<!ATTLIST tertiaryie
+ %linkends.attrib; %common.attrib;
+ %primsecterie.role.attrib;
+ %local.primsecterie.attrib;
+>
+<!--end of tertiaryie.attlist-->]]>
+
+<!--end of primsecterie.module-->]]>
+
+<!ENTITY % seeie.module "INCLUDE">
+<![%seeie.module;[
+<!ENTITY % local.seeie.attrib "">
+<!ENTITY % seeie.role.attrib "%role.attrib;">
+
+<!ENTITY % seeie.element "INCLUDE">
+<![%seeie.element;[
+<!--doc:A See entry in an index, rather than in the text.-->
+<!ELEMENT seeie %ho; (%ndxterm.char.mix;)*>
+<!--end of seeie.element-->]]>
+
+<!-- to IndexEntry to look up -->
+
+
+<!ENTITY % seeie.attlist "INCLUDE">
+<![%seeie.attlist;[
+<!ATTLIST seeie
+ %linkend.attrib; %common.attrib;
+ %seeie.role.attrib;
+ %local.seeie.attrib;
+>
+<!--end of seeie.attlist-->]]>
+<!--end of seeie.module-->]]>
+
+<!ENTITY % seealsoie.module "INCLUDE">
+<![%seealsoie.module;[
+<!ENTITY % local.seealsoie.attrib "">
+<!ENTITY % seealsoie.role.attrib "%role.attrib;">
+
+<!ENTITY % seealsoie.element "INCLUDE">
+<![%seealsoie.element;[
+<!--doc:A See also entry in an index, rather than in the text.-->
+<!ELEMENT seealsoie %ho; (%ndxterm.char.mix;)*>
+<!--end of seealsoie.element-->]]>
+
+<!-- to related IndexEntries -->
+
+
+<!ENTITY % seealsoie.attlist "INCLUDE">
+<![%seealsoie.attlist;[
+<!ATTLIST seealsoie
+ %linkends.attrib; %common.attrib;
+ %seealsoie.role.attrib;
+ %local.seealsoie.attrib;
+>
+<!--end of seealsoie.attlist-->]]>
+<!--end of seealsoie.module-->]]>
+<!--end of index.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- RefEntry ............................................................. -->
+
+<!ENTITY % refentry.content.module "INCLUDE">
+<![%refentry.content.module;[
+<!ENTITY % refentry.module "INCLUDE">
+<![%refentry.module;[
+<!ENTITY % local.refentry.attrib "">
+<!ENTITY % refentry.role.attrib "%role.attrib;">
+
+<!ENTITY % refentry.element "INCLUDE">
+<![%refentry.element;[
+<!--doc:A reference page (originally a UNIX man-style reference page).-->
+<!ELEMENT refentry %ho; (beginpage?,
+ (%ndxterm.class;)*,
+ refentryinfo?, refmeta?, (remark|%link.char.class;)*,
+ refnamediv+, refsynopsisdiv?, (refsect1+|refsection+))
+ %ubiq.inclusion;>
+<!--end of refentry.element-->]]>
+
+<!ENTITY % refentry.attlist "INCLUDE">
+<![%refentry.attlist;[
+<!ATTLIST refentry
+ %status.attrib;
+ %common.attrib;
+ %refentry.role.attrib;
+ %local.refentry.attrib;
+>
+<!--end of refentry.attlist-->]]>
+<!--end of refentry.module-->]]>
+
+<!ENTITY % refmeta.module "INCLUDE">
+<![%refmeta.module;[
+<!ENTITY % local.refmeta.attrib "">
+<!ENTITY % refmeta.role.attrib "%role.attrib;">
+
+<!ENTITY % refmeta.element "INCLUDE">
+<![%refmeta.element;[
+<!--doc:Meta-information for a reference entry.-->
+<!ELEMENT refmeta %ho; ((%ndxterm.class;)*,
+ refentrytitle, manvolnum?, refmiscinfo*,
+ (%ndxterm.class;)*)
+ %beginpage.exclusion;>
+<!--end of refmeta.element-->]]>
+
+<!ENTITY % refmeta.attlist "INCLUDE">
+<![%refmeta.attlist;[
+<!ATTLIST refmeta
+ %common.attrib;
+ %refmeta.role.attrib;
+ %local.refmeta.attrib;
+>
+<!--end of refmeta.attlist-->]]>
+<!--end of refmeta.module-->]]>
+
+<!ENTITY % refmiscinfo.module "INCLUDE">
+<![%refmiscinfo.module;[
+<!ENTITY % local.refmiscinfo.attrib "">
+<!ENTITY % refmiscinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % refmiscinfo.element "INCLUDE">
+<![%refmiscinfo.element;[
+<!--doc:Meta-information for a reference entry other than the title and volume number.-->
+<!ELEMENT refmiscinfo %ho; (%docinfo.char.mix;)*>
+<!--end of refmiscinfo.element-->]]>
+
+<!-- Class: Freely assignable parameter; no default -->
+
+
+<!ENTITY % refmiscinfo.attlist "INCLUDE">
+<![%refmiscinfo.attlist;[
+<!ATTLIST refmiscinfo
+ class CDATA #IMPLIED
+ %common.attrib;
+ %refmiscinfo.role.attrib;
+ %local.refmiscinfo.attrib;
+>
+<!--end of refmiscinfo.attlist-->]]>
+<!--end of refmiscinfo.module-->]]>
+
+<!ENTITY % refnamediv.module "INCLUDE">
+<![%refnamediv.module;[
+<!ENTITY % local.refnamediv.attrib "">
+<!ENTITY % refnamediv.role.attrib "%role.attrib;">
+
+<!ENTITY % refnamediv.element "INCLUDE">
+<![%refnamediv.element;[
+<!--doc:The name, purpose, and classification of a reference page.-->
+<!ELEMENT refnamediv %ho; (refdescriptor?, refname+, refpurpose, refclass*,
+ (remark|%link.char.class;)*)>
+<!--end of refnamediv.element-->]]>
+
+<!ENTITY % refnamediv.attlist "INCLUDE">
+<![%refnamediv.attlist;[
+<!ATTLIST refnamediv
+ %common.attrib;
+ %refnamediv.role.attrib;
+ %local.refnamediv.attrib;
+>
+<!--end of refnamediv.attlist-->]]>
+<!--end of refnamediv.module-->]]>
+
+<!ENTITY % refdescriptor.module "INCLUDE">
+<![%refdescriptor.module;[
+<!ENTITY % local.refdescriptor.attrib "">
+<!ENTITY % refdescriptor.role.attrib "%role.attrib;">
+
+<!ENTITY % refdescriptor.element "INCLUDE">
+<![%refdescriptor.element;[
+<!--doc:A description of the topic of a reference page.-->
+<!ELEMENT refdescriptor %ho; (%refname.char.mix;)*>
+<!--end of refdescriptor.element-->]]>
+
+<!ENTITY % refdescriptor.attlist "INCLUDE">
+<![%refdescriptor.attlist;[
+<!ATTLIST refdescriptor
+ %common.attrib;
+ %refdescriptor.role.attrib;
+ %local.refdescriptor.attrib;
+>
+<!--end of refdescriptor.attlist-->]]>
+<!--end of refdescriptor.module-->]]>
+
+<!ENTITY % refname.module "INCLUDE">
+<![%refname.module;[
+<!ENTITY % local.refname.attrib "">
+<!ENTITY % refname.role.attrib "%role.attrib;">
+
+<!ENTITY % refname.element "INCLUDE">
+<![%refname.element;[
+<!--doc:The name of (one of) the subject(s) of a reference page.-->
+<!ELEMENT refname %ho; (%refname.char.mix;)*>
+<!--end of refname.element-->]]>
+
+<!ENTITY % refname.attlist "INCLUDE">
+<![%refname.attlist;[
+<!ATTLIST refname
+ %common.attrib;
+ %refname.role.attrib;
+ %local.refname.attrib;
+>
+<!--end of refname.attlist-->]]>
+<!--end of refname.module-->]]>
+
+<!ENTITY % refpurpose.module "INCLUDE">
+<![%refpurpose.module;[
+<!ENTITY % local.refpurpose.attrib "">
+<!ENTITY % refpurpose.role.attrib "%role.attrib;">
+
+<!ENTITY % refpurpose.element "INCLUDE">
+<![%refpurpose.element;[
+<!--doc:A short (one sentence) synopsis of the topic of a reference page.-->
+<!ELEMENT refpurpose %ho; (%refinline.char.mix;)*>
+<!--end of refpurpose.element-->]]>
+
+<!ENTITY % refpurpose.attlist "INCLUDE">
+<![%refpurpose.attlist;[
+<!ATTLIST refpurpose
+ %common.attrib;
+ %refpurpose.role.attrib;
+ %local.refpurpose.attrib;
+>
+<!--end of refpurpose.attlist-->]]>
+<!--end of refpurpose.module-->]]>
+
+<!ENTITY % refclass.module "INCLUDE">
+<![%refclass.module;[
+<!ENTITY % local.refclass.attrib "">
+<!ENTITY % refclass.role.attrib "%role.attrib;">
+
+<!ENTITY % refclass.element "INCLUDE">
+<![%refclass.element;[
+<!--doc:The scope or other indication of applicability of a reference entry.-->
+<!ELEMENT refclass %ho; (%refclass.char.mix;)*>
+<!--end of refclass.element-->]]>
+
+<!ENTITY % refclass.attlist "INCLUDE">
+<![%refclass.attlist;[
+<!ATTLIST refclass
+ %common.attrib;
+ %refclass.role.attrib;
+ %local.refclass.attrib;
+>
+<!--end of refclass.attlist-->]]>
+<!--end of refclass.module-->]]>
+
+<!ENTITY % refsynopsisdiv.module "INCLUDE">
+<![%refsynopsisdiv.module;[
+<!ENTITY % local.refsynopsisdiv.attrib "">
+<!ENTITY % refsynopsisdiv.role.attrib "%role.attrib;">
+
+<!ENTITY % refsynopsisdiv.element "INCLUDE">
+<![%refsynopsisdiv.element;[
+<!--doc:A syntactic synopsis of the subject of the reference page.-->
+<!ELEMENT refsynopsisdiv %ho; (refsynopsisdivinfo?, (%refsect.title.content;)?,
+ (((%refcomponent.mix;)+, refsect2*) | (refsect2+)))>
+<!--end of refsynopsisdiv.element-->]]>
+
+<!ENTITY % refsynopsisdiv.attlist "INCLUDE">
+<![%refsynopsisdiv.attlist;[
+<!ATTLIST refsynopsisdiv
+ %common.attrib;
+ %refsynopsisdiv.role.attrib;
+ %local.refsynopsisdiv.attrib;
+>
+<!--end of refsynopsisdiv.attlist-->]]>
+<!--end of refsynopsisdiv.module-->]]>
+
+<!ENTITY % refsection.module "INCLUDE">
+<![%refsection.module;[
+<!ENTITY % local.refsection.attrib "">
+<!ENTITY % refsection.role.attrib "%role.attrib;">
+
+<!ENTITY % refsection.element "INCLUDE">
+<![%refsection.element;[
+<!--doc:A recursive section in a refentry.-->
+<!ELEMENT refsection %ho; (refsectioninfo?, (%refsect.title.content;),
+ (((%refcomponent.mix;)+, refsection*) | refsection+))>
+<!--end of refsection.element-->]]>
+
+<!ENTITY % refsection.attlist "INCLUDE">
+<![%refsection.attlist;[
+<!ATTLIST refsection
+ %status.attrib;
+ %common.attrib;
+ %refsection.role.attrib;
+ %local.refsection.attrib;
+>
+<!--end of refsection.attlist-->]]>
+<!--end of refsection.module-->]]>
+
+<!ENTITY % refsect1.module "INCLUDE">
+<![%refsect1.module;[
+<!ENTITY % local.refsect1.attrib "">
+<!ENTITY % refsect1.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect1.element "INCLUDE">
+<![%refsect1.element;[
+<!--doc:A major subsection of a reference entry.-->
+<!ELEMENT refsect1 %ho; (refsect1info?, (%refsect.title.content;),
+ (((%refcomponent.mix;)+, refsect2*) | refsect2+))>
+<!--end of refsect1.element-->]]>
+
+<!ENTITY % refsect1.attlist "INCLUDE">
+<![%refsect1.attlist;[
+<!ATTLIST refsect1
+ %status.attrib;
+ %common.attrib;
+ %refsect1.role.attrib;
+ %local.refsect1.attrib;
+>
+<!--end of refsect1.attlist-->]]>
+<!--end of refsect1.module-->]]>
+
+<!ENTITY % refsect2.module "INCLUDE">
+<![%refsect2.module;[
+<!ENTITY % local.refsect2.attrib "">
+<!ENTITY % refsect2.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect2.element "INCLUDE">
+<![%refsect2.element;[
+<!--doc:A subsection of a RefSect1.-->
+<!ELEMENT refsect2 %ho; (refsect2info?, (%refsect.title.content;),
+ (((%refcomponent.mix;)+, refsect3*) | refsect3+))>
+<!--end of refsect2.element-->]]>
+
+<!ENTITY % refsect2.attlist "INCLUDE">
+<![%refsect2.attlist;[
+<!ATTLIST refsect2
+ %status.attrib;
+ %common.attrib;
+ %refsect2.role.attrib;
+ %local.refsect2.attrib;
+>
+<!--end of refsect2.attlist-->]]>
+<!--end of refsect2.module-->]]>
+
+<!ENTITY % refsect3.module "INCLUDE">
+<![%refsect3.module;[
+<!ENTITY % local.refsect3.attrib "">
+<!ENTITY % refsect3.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect3.element "INCLUDE">
+<![%refsect3.element;[
+<!--doc:A subsection of a RefSect2.-->
+<!ELEMENT refsect3 %ho; (refsect3info?, (%refsect.title.content;),
+ (%refcomponent.mix;)+)>
+<!--end of refsect3.element-->]]>
+
+<!ENTITY % refsect3.attlist "INCLUDE">
+<![%refsect3.attlist;[
+<!ATTLIST refsect3
+ %status.attrib;
+ %common.attrib;
+ %refsect3.role.attrib;
+ %local.refsect3.attrib;
+>
+<!--end of refsect3.attlist-->]]>
+<!--end of refsect3.module-->]]>
+<!--end of refentry.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Article .............................................................. -->
+
+<!ENTITY % article.module "INCLUDE">
+<![%article.module;[
+<!-- An Article is a chapter-level, stand-alone document that is often,
+ but need not be, collected into a Book. -->
+
+<!ENTITY % local.article.attrib "">
+<!ENTITY % article.role.attrib "%role.attrib;">
+
+<!ENTITY % article.element "INCLUDE">
+<![%article.element;[
+<!--doc:An article.-->
+<!ELEMENT article %ho; ((%div.title.content;)?, articleinfo?, tocchap?, lot*,
+ (%bookcomponent.content;),
+ (%nav.class;|%appendix.class;|colophon|ackno)*)
+ %ubiq.inclusion;>
+<!--end of article.element-->]]>
+
+<!-- Class: Indicates the type of a particular article;
+ all articles have the same structure and general purpose.
+ No default. -->
+<!-- ParentBook: ID of the enclosing Book -->
+
+
+<!ENTITY % article.attlist "INCLUDE">
+<![%article.attlist;[
+<!ATTLIST article
+ class (journalarticle
+ |productsheet
+ |whitepaper
+ |techreport
+ |specification
+ |faq) #IMPLIED
+ parentbook IDREF #IMPLIED
+ %status.attrib;
+ %common.attrib;
+ %article.role.attrib;
+ %local.article.attrib;
+>
+<!--end of article.attlist-->]]>
+<!--end of article.module-->]]>
+
+<!-- End of DocBook document hierarchy module V4.5 ........................ -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/dbnotnx.mod b/doc/editor_configs/serna/scons/dtd/dbnotnx.mod
new file mode 100644
index 0000000..9f3b78e
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/dbnotnx.mod
@@ -0,0 +1,101 @@
+<!-- ...................................................................... -->
+<!-- DocBook notations module V4.5 ........................................ -->
+<!-- File dbnotnx.mod ..................................................... -->
+
+<!-- Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbnotnx.mod,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the notation declarations used by DocBook.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbnotn PUBLIC
+ "-//OASIS//ENTITIES DocBook Notations V4.5//EN"
+ "dbnotnx.mod">
+ %dbnotn;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+
+<!ENTITY % local.notation.class "">
+<!ENTITY % notation.class
+ "BMP| CGM-CHAR | CGM-BINARY | CGM-CLEAR | DITROFF | DVI
+ | EPS | EQN | FAX | GIF | GIF87a | GIF89a
+ | JPG | JPEG | IGES | PCX
+ | PIC | PNG | PS | SGML | TBL | TEX | TIFF | WMF | WPG
+ | SVG | PDF | SWF
+ | linespecific
+ %local.notation.class;">
+
+<!NOTATION BMP PUBLIC
+"+//ISBN 0-7923-94.2-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN">
+<!NOTATION CGM-CHAR PUBLIC "ISO 8632/2//NOTATION Character encoding//EN">
+<!NOTATION CGM-BINARY PUBLIC "ISO 8632/3//NOTATION Binary encoding//EN">
+<!NOTATION CGM-CLEAR PUBLIC "ISO 8632/4//NOTATION Clear text encoding//EN">
+<!NOTATION DITROFF SYSTEM "DITROFF">
+<!NOTATION DVI SYSTEM "DVI">
+<!NOTATION EPS PUBLIC
+"+//ISBN 0-201-18127-4::Adobe//NOTATION PostScript Language Ref. Manual//EN">
+<!NOTATION EQN SYSTEM "EQN">
+<!NOTATION FAX PUBLIC
+"-//USA-DOD//NOTATION CCITT Group 4 Facsimile Type 1 Untiled Raster//EN">
+<!NOTATION GIF SYSTEM "GIF">
+<!NOTATION GIF87a PUBLIC
+"-//CompuServe//NOTATION Graphics Interchange Format 87a//EN">
+
+<!NOTATION GIF89a PUBLIC
+"-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">
+<!NOTATION JPG SYSTEM "JPG">
+<!NOTATION JPEG SYSTEM "JPG">
+<!NOTATION IGES PUBLIC
+"-//USA-DOD//NOTATION (ASME/ANSI Y14.26M-1987) Initial Graphics Exchange Specification//EN">
+<!NOTATION PCX PUBLIC
+"+//ISBN 0-7923-94.2-1::Graphic Notation//NOTATION ZSoft PCX bitmap//EN">
+<!NOTATION PIC SYSTEM "PIC">
+<!NOTATION PNG SYSTEM "http://www.w3.org/TR/REC-png">
+<!NOTATION PS SYSTEM "PS">
+<!NOTATION SGML PUBLIC
+"ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN">
+<!NOTATION TBL SYSTEM "TBL">
+<!NOTATION TEX PUBLIC
+"+//ISBN 0-201-13448-9::Knuth//NOTATION The TeXbook//EN">
+<!NOTATION TIFF SYSTEM "TIFF">
+<!NOTATION WMF PUBLIC
+"+//ISBN 0-7923-94.2-1::Graphic Notation//NOTATION Microsoft Windows Metafile//EN">
+<!NOTATION WPG SYSTEM "WPG"> <!--WordPerfect Graphic format-->
+<!NOTATION SVG SYSTEM "http://www.w3.org/TR/SVG/">
+<!NOTATION PDF SYSTEM "http://www.adobe.com/products/acrobat/adobepdf.html">
+<!NOTATION SWF SYSTEM "http://www.macromedia.com/software/flash">
+<!NOTATION linespecific SYSTEM "linespecific">
+
+<!-- End of DocBook notations module V4.5 ................................. -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/dbpoolx.mod b/doc/editor_configs/serna/scons/dtd/dbpoolx.mod
new file mode 100644
index 0000000..114771f
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/dbpoolx.mod
@@ -0,0 +1,8870 @@
+<!-- ...................................................................... -->
+<!-- DocBook XML information pool module V4.5 ............................. -->
+<!-- File dbpoolx.mod ..................................................... -->
+
+<!-- Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbpoolx.mod,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook XML DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook XML DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the definitions for the objects, inline
+ elements, and so on that are available to be used as the main
+ content of DocBook documents. Some elements are useful for general
+ publishing, and others are useful specifically for computer
+ documentation.
+
+ This module has the following dependencies on other modules:
+
+ o It assumes that a %notation.class; entity is defined by the
+ driver file or other high-level module. This entity is
+ referenced in the NOTATION attributes for the graphic-related and
+ ModeSpec elements.
+
+ o It assumes that an appropriately parameterized table module is
+ available for use with the table-related elements.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbpool PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN"
+ "dbpoolx.mod">
+ %dbpool;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+
+<!-- ...................................................................... -->
+<!-- Forms entities ....................................................... -->
+<!-- These PEs provide the hook by which the forms module can be inserted -->
+<!-- into the DTD. -->
+<!ENTITY % forminlines.hook "">
+<!ENTITY % forms.hook "">
+
+<!-- ...................................................................... -->
+<!-- General-purpose semantics entities ................................... -->
+
+<!ENTITY % yesorno.attvals "CDATA">
+
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+
+<!ENTITY % dbpool.redecl.module "IGNORE">
+
+<!-- ...................................................................... -->
+<!-- Entities for element classes and mixtures ............................ -->
+
+<!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+
+<!ENTITY % local.ndxterm.class "">
+<!ENTITY % ndxterm.class
+ "indexterm %local.ndxterm.class;">
+
+<!-- Object-level classes ................................................. -->
+
+<!ENTITY % local.list.class "">
+<!ENTITY % list.class
+ "calloutlist|glosslist|bibliolist|itemizedlist|orderedlist|segmentedlist
+ |simplelist|variablelist %local.list.class;">
+
+<!ENTITY % local.admon.class "">
+<!ENTITY % admon.class
+ "caution|important|note|tip|warning %local.admon.class;">
+
+<!ENTITY % local.linespecific.class "">
+<!ENTITY % linespecific.class
+ "literallayout|programlisting|programlistingco|screen
+ |screenco|screenshot %local.linespecific.class;">
+
+<!ENTITY % local.method.synop.class "">
+<!ENTITY % method.synop.class
+ "constructorsynopsis
+ |destructorsynopsis
+ |methodsynopsis %local.method.synop.class;">
+
+<!ENTITY % local.synop.class "">
+<!ENTITY % synop.class
+ "synopsis|cmdsynopsis|funcsynopsis
+ |classsynopsis|fieldsynopsis
+ |%method.synop.class; %local.synop.class;">
+
+<!ENTITY % local.para.class "">
+<!ENTITY % para.class
+ "formalpara|para|simpara
+ |sconstruct|scons_example
+ |scons_example_file|scons_output %local.para.class;">
+
+<!ENTITY % local.informal.class "">
+<!ENTITY % informal.class
+ "address|blockquote
+ |graphic|graphicco|mediaobject|mediaobjectco
+ |informalequation
+ |informalexample
+ |informalfigure
+ |informaltable %local.informal.class;">
+
+<!ENTITY % local.formal.class "">
+<!ENTITY % formal.class
+ "equation|example|figure|table %local.formal.class;">
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!ENTITY % ebnf.block.hook "">
+
+<!ENTITY % local.compound.class "">
+<!ENTITY % compound.class
+ "msgset|procedure|sidebar|qandaset|task
+ %ebnf.block.hook;
+ %local.compound.class;">
+
+<!ENTITY % local.genobj.class "">
+<!ENTITY % genobj.class
+ "anchor|bridgehead|remark|highlights
+ %local.genobj.class;">
+
+<!ENTITY % local.descobj.class "">
+<!ENTITY % descobj.class
+ "abstract|authorblurb|epigraph
+ %local.descobj.class;">
+
+<!-- Character-level classes .............................................. -->
+
+<!ENTITY % local.xref.char.class "">
+<!ENTITY % xref.char.class
+ "footnoteref|xref|biblioref %local.xref.char.class;">
+
+<!ENTITY % local.gen.char.class "">
+<!ENTITY % gen.char.class
+ "abbrev|acronym|citation|citerefentry|citetitle|citebiblioid|emphasis
+ |firstterm|foreignphrase|glossterm|termdef|footnote|phrase
+ |orgname|quote|trademark|wordasword
+ |personname %local.gen.char.class;">
+
+<!ENTITY % local.link.char.class "">
+<!ENTITY % link.char.class
+ "link|olink|ulink %local.link.char.class;">
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!ENTITY % ebnf.inline.hook "">
+
+<!ENTITY % local.tech.char.class "">
+<!ENTITY % tech.char.class
+ "action|application
+ |classname|methodname|interfacename|exceptionname
+ |ooclass|oointerface|ooexception
+ |package
+ |command|computeroutput
+ |database|email|envar|errorcode|errorname|errortype|errortext|filename
+ |function|guibutton|guiicon|guilabel|guimenu|guimenuitem
+ |guisubmenu|hardware|interface|keycap
+ |keycode|keycombo|keysym|literal|code|constant|markup|medialabel
+ |menuchoice|mousebutton|option|optional|parameter
+ |prompt|property|replaceable|returnvalue|sgmltag|structfield
+ |structname|symbol|systemitem|uri|token|type|userinput|varname
+ %ebnf.inline.hook;
+ %local.tech.char.class;">
+
+<!ENTITY % local.base.char.class "">
+<!ENTITY % base.char.class
+ "anchor %local.base.char.class;">
+
+<!ENTITY % local.docinfo.char.class "">
+<!ENTITY % docinfo.char.class
+ "author|authorinitials|corpauthor|corpcredit|modespec|othercredit
+ |productname|productnumber|revhistory
+ %local.docinfo.char.class;">
+
+<!ENTITY % local.other.char.class "">
+<!ENTITY % other.char.class
+ "remark|subscript|superscript %local.other.char.class;">
+
+<!ENTITY % local.inlineobj.char.class "">
+<!ENTITY % inlineobj.char.class
+ "inlinegraphic|inlinemediaobject|inlineequation %local.inlineobj.char.class;">
+
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+<!ENTITY % formalobject.title.content "title, titleabbrev?">
+
+<!-- Redeclaration placeholder ............................................ -->
+
+<!-- For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point -->
+
+<![%dbpool.redecl.module;[
+<!-- Defining rdbpool here makes some buggy XML parsers happy. -->
+<!ENTITY % rdbpool "">
+%rdbpool;
+<!--end of dbpool.redecl.module-->]]>
+
+<!-- Object-level mixtures ................................................ -->
+
+<!--
+ list admn line synp para infm form cmpd gen desc
+Component mixture X X X X X X X X X X
+Sidebar mixture X X X X X X X a X
+Footnote mixture X X X X X
+Example mixture X X X X X
+Highlights mixture X X X
+Paragraph mixture X X X X
+Admonition mixture X X X X X X b c
+Figure mixture X X X
+Table entry mixture X X X X d
+Glossary def mixture X X X X X e
+Legal notice mixture X X X X f
+
+a. Just Procedure; not Sidebar itself or MsgSet.
+b. No MsgSet.
+c. No Highlights.
+d. Just Graphic; no other informal objects.
+e. No Anchor, BridgeHead, or Highlights.
+f. Just BlockQuote; no other informal objects.
+-->
+
+<!ENTITY % local.component.mix "">
+<!ENTITY % component.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class; |%compound.class;
+ |%genobj.class; |%descobj.class;
+ |%ndxterm.class; |beginpage
+ %forms.hook;
+ %local.component.mix;">
+
+<!ENTITY % local.sidebar.mix "">
+<!ENTITY % sidebar.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class; |procedure
+ |%genobj.class;
+ |%ndxterm.class; |beginpage
+ %forms.hook;
+ %local.sidebar.mix;">
+
+<!ENTITY % local.qandaset.mix "">
+<!ENTITY % qandaset.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class; |procedure
+ |%genobj.class;
+ |%ndxterm.class;
+ %forms.hook;
+ %local.qandaset.mix;">
+
+<!ENTITY % local.revdescription.mix "">
+<!ENTITY % revdescription.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class; |procedure
+ |%genobj.class;
+ |%ndxterm.class;
+ %local.revdescription.mix;">
+
+<!ENTITY % local.footnote.mix "">
+<!ENTITY % footnote.mix
+ "%list.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ %local.footnote.mix;">
+
+<!ENTITY % local.example.mix "">
+<!ENTITY % example.mix
+ "%list.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%ndxterm.class; |beginpage
+ |procedure
+ %forms.hook;
+ %local.example.mix;">
+
+<!ENTITY % local.highlights.mix "">
+<!ENTITY % highlights.mix
+ "%list.class; |%admon.class;
+ |%para.class;
+ |%ndxterm.class;
+ %local.highlights.mix;">
+
+<!-- %formal.class; is explicitly excluded from many contexts in which
+ paragraphs are used -->
+<!ENTITY % local.para.mix "">
+<!ENTITY % para.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class;
+ |%informal.class;
+ |%formal.class;
+ %local.para.mix;">
+
+<!ENTITY % local.admon.mix "">
+<!ENTITY % admon.mix
+ "%list.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class; |procedure|sidebar
+ |anchor|bridgehead|remark
+ |%ndxterm.class; |beginpage
+ %forms.hook;
+ %local.admon.mix;">
+
+<!ENTITY % local.figure.mix "">
+<!ENTITY % figure.mix
+ "%linespecific.class; |%synop.class;
+ |%informal.class;
+ |%ndxterm.class; |beginpage
+ %forms.hook;
+ %local.figure.mix;">
+
+<!ENTITY % local.tabentry.mix "">
+<!ENTITY % tabentry.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class;
+ |%para.class; |graphic|mediaobject
+ %forms.hook;
+ %local.tabentry.mix;">
+
+<!ENTITY % local.glossdef.mix "">
+<!ENTITY % glossdef.mix
+ "%list.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%formal.class;
+ |remark
+ |%ndxterm.class; |beginpage
+ %local.glossdef.mix;">
+
+<!ENTITY % local.legalnotice.mix "">
+<!ENTITY % legalnotice.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class;
+ |%para.class; |blockquote
+ |%ndxterm.class; |beginpage
+ %local.legalnotice.mix;">
+
+<!ENTITY % local.textobject.mix "">
+<!ENTITY % textobject.mix
+ "%list.class; |%admon.class;
+ |%linespecific.class;
+ |%para.class; |blockquote
+ %local.textobject.mix;">
+
+<!ENTITY % local.mediaobject.mix "">
+<!ENTITY % mediaobject.mix
+ "videoobject|audioobject|imageobject|imageobjectco|textobject %local.mediaobject.mix;">
+
+<!ENTITY % local.listpreamble.mix "">
+<!ENTITY % listpreamble.mix
+ " %admon.class;
+ |%linespecific.class; |%synop.class;
+ |%para.class; |%informal.class;
+ |%genobj.class; |%descobj.class;
+ |%ndxterm.class; |beginpage
+ %forms.hook;
+ %local.listpreamble.mix;">
+
+<!-- Character-level mixtures ............................................. -->
+
+<![%sgml.features;[
+<!ENTITY % local.ubiq.mix "">
+<!ENTITY % ubiq.mix "%ndxterm.class;|beginpage %local.ubiq.mix;">
+
+<!ENTITY % ubiq.exclusion "-(%ubiq.mix)">
+<!ENTITY % ubiq.inclusion "+(%ubiq.mix)">
+
+<!ENTITY % footnote.exclusion "-(footnote|%formal.class;)">
+<!ENTITY % highlights.exclusion "-(%ubiq.mix;|%formal.class;)">
+<!ENTITY % admon.exclusion "-(%admon.class;)">
+<!ENTITY % formal.exclusion "-(%formal.class;)">
+<!ENTITY % acronym.exclusion "-(acronym)">
+<!ENTITY % beginpage.exclusion "-(beginpage)">
+<!ENTITY % ndxterm.exclusion "-(%ndxterm.class;)">
+<!ENTITY % blockquote.exclusion "-(epigraph)">
+<!ENTITY % remark.exclusion "-(remark|%ubiq.mix;)">
+<!ENTITY % glossterm.exclusion "-(glossterm)">
+<!ENTITY % links.exclusion "-(link|olink|ulink|xref|biblioref)">
+]]><!-- sgml.features -->
+
+<!-- not [sgml.features[ -->
+<!ENTITY % local.ubiq.mix "">
+<!ENTITY % ubiq.mix "">
+
+<!ENTITY % ubiq.exclusion "">
+<!ENTITY % ubiq.inclusion "">
+
+<!ENTITY % footnote.exclusion "">
+<!ENTITY % highlights.exclusion "">
+<!ENTITY % admon.exclusion "">
+<!ENTITY % formal.exclusion "">
+<!ENTITY % acronym.exclusion "">
+<!ENTITY % beginpage.exclusion "">
+<!ENTITY % ndxterm.exclusion "">
+<!ENTITY % blockquote.exclusion "">
+<!ENTITY % remark.exclusion "">
+<!ENTITY % glossterm.exclusion "">
+<!ENTITY % links.exclusion "">
+<!-- ]] not sgml.features -->
+
+<!--
+ #PCD xref word link cptr base dnfo othr inob (synop)
+para.char.mix X X X X X X X X X
+title.char.mix X X X X X X X X X
+ndxterm.char.mix X X X X X X X X a
+cptr.char.mix X X X X X a
+smallcptr.char.mix X b a
+word.char.mix X c X X X a
+docinfo.char.mix X d X b X a
+
+a. Just InlineGraphic; no InlineEquation.
+b. Just Replaceable; no other computer terms.
+c. Just Emphasis and Trademark; no other word elements.
+d. Just Acronym, Emphasis, and Trademark; no other word elements.
+-->
+
+<!ENTITY % local.para.char.mix "">
+<!ENTITY % para.char.mix
+ "#PCDATA
+ |%xref.char.class; |%gen.char.class;
+ |%link.char.class; |%tech.char.class;
+ |%base.char.class; |%docinfo.char.class;
+ |%other.char.class; |%inlineobj.char.class;
+ |%synop.class;
+ |%ndxterm.class; |beginpage
+ %forminlines.hook;
+ %local.para.char.mix;">
+
+<!ENTITY % local.title.char.mix "">
+<!ENTITY % title.char.mix
+ "#PCDATA
+ |%xref.char.class; |%gen.char.class;
+ |%link.char.class; |%tech.char.class;
+ |%base.char.class; |%docinfo.char.class;
+ |%other.char.class; |%inlineobj.char.class;
+ |%ndxterm.class;
+ %local.title.char.mix;">
+
+<!ENTITY % local.ndxterm.char.mix "">
+<!ENTITY % ndxterm.char.mix
+ "#PCDATA
+ |%xref.char.class; |%gen.char.class;
+ |%link.char.class; |%tech.char.class;
+ |%base.char.class; |%docinfo.char.class;
+ |%other.char.class; |inlinegraphic|inlinemediaobject
+ %local.ndxterm.char.mix;">
+
+<!ENTITY % local.cptr.char.mix "">
+<!ENTITY % cptr.char.mix
+ "#PCDATA
+ |%link.char.class; |%tech.char.class;
+ |%base.char.class;
+ |%other.char.class; |inlinegraphic|inlinemediaobject
+ |%ndxterm.class; |beginpage
+ %local.cptr.char.mix;">
+
+<!ENTITY % local.smallcptr.char.mix "">
+<!ENTITY % smallcptr.char.mix
+ "#PCDATA
+ |replaceable
+ |inlinegraphic|inlinemediaobject
+ |%ndxterm.class; |beginpage
+ %local.smallcptr.char.mix;">
+
+<!ENTITY % local.word.char.mix "">
+<!ENTITY % word.char.mix
+ "#PCDATA
+ |acronym|emphasis|trademark
+ |%link.char.class;
+ |%base.char.class;
+ |%other.char.class; |inlinegraphic|inlinemediaobject
+ |%ndxterm.class; |beginpage
+ %local.word.char.mix;">
+
+<!ENTITY % local.docinfo.char.mix "">
+<!ENTITY % docinfo.char.mix
+ "#PCDATA
+ |%link.char.class;
+ |emphasis|trademark
+ |replaceable
+ |%other.char.class; |inlinegraphic|inlinemediaobject
+ |%ndxterm.class;
+ %local.docinfo.char.mix;">
+<!--ENTITY % bibliocomponent.mix (see Bibliographic section, below)-->
+<!--ENTITY % person.ident.mix (see Bibliographic section, below)-->
+
+<!-- ...................................................................... -->
+<!-- Entities for attributes and attribute components ..................... -->
+
+<!-- Effectivity attributes ............................................... -->
+
+
+<!-- Arch: Computer or chip architecture to which element applies; no
+ default -->
+
+<!ENTITY % arch.attrib
+ "arch CDATA #IMPLIED">
+
+<!-- Condition: General-purpose effectivity attribute -->
+
+<!ENTITY % condition.attrib
+ "condition CDATA #IMPLIED">
+
+<!-- Conformance: Standards conformance characteristics -->
+
+<!ENTITY % conformance.attrib
+ "conformance NMTOKENS #IMPLIED">
+
+
+<!-- OS: Operating system to which element applies; no default -->
+
+<!ENTITY % os.attrib
+ "os CDATA #IMPLIED">
+
+
+<!-- Revision: Editorial revision to which element belongs; no default -->
+
+<!ENTITY % revision.attrib
+ "revision CDATA #IMPLIED">
+
+<!-- Security: Security classification; no default -->
+
+<!ENTITY % security.attrib
+ "security CDATA #IMPLIED">
+
+<!-- UserLevel: Level of user experience to which element applies; no
+ default -->
+
+<!ENTITY % userlevel.attrib
+ "userlevel CDATA #IMPLIED">
+
+<!-- Vendor: Computer vendor to which element applies; no default -->
+
+<!ENTITY % vendor.attrib
+ "vendor CDATA #IMPLIED">
+
+<!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default -->
+
+<!ENTITY % wordsize.attrib
+ "wordsize CDATA #IMPLIED">
+
+<!ENTITY % local.effectivity.attrib "">
+<!ENTITY % effectivity.attrib
+ "%arch.attrib;
+ %condition.attrib;
+ %conformance.attrib;
+ %os.attrib;
+ %revision.attrib;
+ %security.attrib;
+ %userlevel.attrib;
+ %vendor.attrib;
+ %wordsize.attrib;
+ %local.effectivity.attrib;"
+>
+
+<!-- Common attributes .................................................... -->
+
+
+<!-- Id: Unique identifier of element; no default -->
+
+<!ENTITY % id.attrib
+ "id ID #IMPLIED">
+
+
+<!-- Id: Unique identifier of element; a value must be supplied; no
+ default -->
+
+<!ENTITY % idreq.attrib
+ "id ID #REQUIRED">
+
+
+<!-- Lang: Indicator of language in which element is written, for
+ translation, character set management, etc.; no default -->
+
+<!ENTITY % lang.attrib
+ "lang CDATA #IMPLIED">
+
+
+<!-- Remap: Previous role of element before conversion; no default -->
+
+<!ENTITY % remap.attrib
+ "remap CDATA #IMPLIED">
+
+
+<!-- Role: New role of element in local environment; no default -->
+
+<!ENTITY % role.attrib
+ "role CDATA #IMPLIED">
+
+
+<!-- XRefLabel: Alternate labeling string for XRef text generation;
+ default is usually title or other appropriate label text already
+ contained in element -->
+
+<!ENTITY % xreflabel.attrib
+ "xreflabel CDATA #IMPLIED">
+
+
+<!-- RevisionFlag: Revision status of element; default is that element
+ wasn't revised -->
+
+<!ENTITY % revisionflag.attrib
+ "revisionflag (changed
+ |added
+ |deleted
+ |off) #IMPLIED">
+
+<!ENTITY % local.common.attrib "">
+
+<!-- dir: Bidirectional override -->
+
+<!ENTITY % dir.attrib
+ "dir (ltr
+ |rtl
+ |lro
+ |rlo) #IMPLIED">
+
+<!-- xml:base: base URI -->
+
+<![%sgml.features;[
+<!ENTITY % xml-base.attrib "">
+]]>
+<!ENTITY % xml-base.attrib
+ "xml:base CDATA #IMPLIED">
+
+<!-- Role is included explicitly on each element -->
+
+<!ENTITY % common.attrib
+ "%id.attrib;
+ %lang.attrib;
+ %remap.attrib;
+ %xreflabel.attrib;
+ %revisionflag.attrib;
+ %effectivity.attrib;
+ %dir.attrib;
+ %xml-base.attrib;
+ %local.common.attrib;"
+>
+
+<!-- Role is included explicitly on each element -->
+
+<!ENTITY % idreq.common.attrib
+ "%idreq.attrib;
+ %lang.attrib;
+ %remap.attrib;
+ %xreflabel.attrib;
+ %revisionflag.attrib;
+ %effectivity.attrib;
+ %dir.attrib;
+ %xml-base.attrib;
+ %local.common.attrib;"
+>
+
+<!-- Semi-common attributes and other attribute entities .................. -->
+
+<!ENTITY % local.graphics.attrib "">
+
+<!-- EntityRef: Name of an external entity containing the content
+ of the graphic -->
+<!-- FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the graphic -->
+<!-- Format: Notation of the element content, if any -->
+<!-- SrcCredit: Information about the source of the Graphic -->
+<!-- Width: Same as CALS reprowid (desired width) -->
+<!-- Depth: Same as CALS reprodep (desired depth) -->
+<!-- Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific -->
+<!-- Scale: Conflation of CALS hscale and vscale -->
+<!-- Scalefit: Same as CALS scalefit -->
+
+<!ENTITY % graphics.attrib
+ "
+ entityref ENTITY #IMPLIED
+ fileref CDATA #IMPLIED
+ format (%notation.class;) #IMPLIED
+ srccredit CDATA #IMPLIED
+ width CDATA #IMPLIED
+ contentwidth CDATA #IMPLIED
+ depth CDATA #IMPLIED
+ contentdepth CDATA #IMPLIED
+ align (left
+ |right
+ |center) #IMPLIED
+ valign (top
+ |middle
+ |bottom) #IMPLIED
+ scale CDATA #IMPLIED
+ scalefit %yesorno.attvals;
+ #IMPLIED
+ %local.graphics.attrib;"
+>
+
+<!ENTITY % local.keyaction.attrib "">
+
+<!-- Action: Key combination type; default is unspecified if one
+ child element, Simul if there is more than one; if value is
+ Other, the OtherAction attribute must have a nonempty value -->
+<!-- OtherAction: User-defined key combination type -->
+
+<!ENTITY % keyaction.attrib
+ "
+ action (click
+ |double-click
+ |press
+ |seq
+ |simul
+ |other) #IMPLIED
+ otheraction CDATA #IMPLIED
+ %local.keyaction.attrib;"
+>
+
+
+<!-- Label: Identifying number or string; default is usually the
+ appropriate number or string autogenerated by a formatter -->
+
+<!ENTITY % label.attrib
+ "label CDATA #IMPLIED">
+
+
+<!-- xml:space: whitespace treatment -->
+
+<![%sgml.features;[
+<!ENTITY % xml-space.attrib "">
+]]>
+<!ENTITY % xml-space.attrib
+ "xml:space (preserve) #IMPLIED">
+
+<!-- Format: whether element is assumed to contain significant white
+ space -->
+
+<!ENTITY % linespecific.attrib
+ "format NOTATION
+ (linespecific) 'linespecific'
+ %xml-space.attrib;
+ linenumbering (numbered|unnumbered) #IMPLIED
+ continuation (continues|restarts) #IMPLIED
+ startinglinenumber CDATA #IMPLIED
+ language CDATA #IMPLIED">
+
+<!-- Linkend: link to related information; no default -->
+
+<!ENTITY % linkend.attrib
+ "linkend IDREF #IMPLIED">
+
+
+<!-- Linkend: required link to related information -->
+
+<!ENTITY % linkendreq.attrib
+ "linkend IDREF #REQUIRED">
+
+
+<!-- Linkends: link to one or more sets of related information; no
+ default -->
+
+<!ENTITY % linkends.attrib
+ "linkends IDREFS #IMPLIED">
+
+
+<!ENTITY % local.mark.attrib "">
+<!ENTITY % mark.attrib
+ "mark CDATA #IMPLIED
+ %local.mark.attrib;"
+>
+
+
+<!-- MoreInfo: whether element's content has an associated RefEntry -->
+
+<!ENTITY % moreinfo.attrib
+ "moreinfo (refentry|none) 'none'">
+
+
+<!-- Pagenum: number of page on which element appears; no default -->
+
+<!ENTITY % pagenum.attrib
+ "pagenum CDATA #IMPLIED">
+
+<!ENTITY % local.status.attrib "">
+
+<!-- Status: Editorial or publication status of the element
+ it applies to, such as "in review" or "approved for distribution" -->
+
+<!ENTITY % status.attrib
+ "status CDATA #IMPLIED
+ %local.status.attrib;"
+>
+
+
+<!-- Width: width of the longest line in the element to which it
+ pertains, in number of characters -->
+
+<!ENTITY % width.attrib
+ "width CDATA #IMPLIED">
+
+<!-- ...................................................................... -->
+<!-- Title elements ....................................................... -->
+
+<!ENTITY % title.module "INCLUDE">
+<![%title.module;[
+<!ENTITY % local.title.attrib "">
+<!ENTITY % title.role.attrib "%role.attrib;">
+
+<!ENTITY % title.element "INCLUDE">
+<![%title.element;[
+<!--doc:The text of the title of a section of a document or of a formal block-level element.-->
+<!ELEMENT title %ho; (%title.char.mix;)*>
+<!--end of title.element-->]]>
+
+<!ENTITY % title.attlist "INCLUDE">
+<![%title.attlist;[
+<!ATTLIST title
+ %pagenum.attrib;
+ %common.attrib;
+ %title.role.attrib;
+ %local.title.attrib;
+>
+<!--end of title.attlist-->]]>
+<!--end of title.module-->]]>
+
+<!ENTITY % titleabbrev.module "INCLUDE">
+<![%titleabbrev.module;[
+<!ENTITY % local.titleabbrev.attrib "">
+<!ENTITY % titleabbrev.role.attrib "%role.attrib;">
+
+<!ENTITY % titleabbrev.element "INCLUDE">
+<![%titleabbrev.element;[
+<!--doc:The abbreviation of a Title.-->
+<!ELEMENT titleabbrev %ho; (%title.char.mix;)*>
+<!--end of titleabbrev.element-->]]>
+
+<!ENTITY % titleabbrev.attlist "INCLUDE">
+<![%titleabbrev.attlist;[
+<!ATTLIST titleabbrev
+ %common.attrib;
+ %titleabbrev.role.attrib;
+ %local.titleabbrev.attrib;
+>
+<!--end of titleabbrev.attlist-->]]>
+<!--end of titleabbrev.module-->]]>
+
+<!ENTITY % subtitle.module "INCLUDE">
+<![%subtitle.module;[
+<!ENTITY % local.subtitle.attrib "">
+<!ENTITY % subtitle.role.attrib "%role.attrib;">
+
+<!ENTITY % subtitle.element "INCLUDE">
+<![%subtitle.element;[
+<!--doc:The subtitle of a document.-->
+<!ELEMENT subtitle %ho; (%title.char.mix;)*>
+<!--end of subtitle.element-->]]>
+
+<!ENTITY % subtitle.attlist "INCLUDE">
+<![%subtitle.attlist;[
+<!ATTLIST subtitle
+ %common.attrib;
+ %subtitle.role.attrib;
+ %local.subtitle.attrib;
+>
+<!--end of subtitle.attlist-->]]>
+<!--end of subtitle.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Bibliographic entities and elements .................................. -->
+
+<!-- The bibliographic elements are typically used in the document
+ hierarchy. They do not appear in content models of information
+ pool elements. See also the document information elements,
+ below. -->
+
+<!ENTITY % local.person.ident.mix "">
+<!ENTITY % person.ident.mix
+ "honorific|firstname|surname|lineage|othername|affiliation
+ |authorblurb|contrib %local.person.ident.mix;">
+
+<!ENTITY % local.bibliocomponent.mix "">
+<!ENTITY % bibliocomponent.mix
+ "abbrev|abstract|address|artpagenums|author
+ |authorgroup|authorinitials|bibliomisc|biblioset
+ |collab|confgroup|contractnum|contractsponsor
+ |copyright|corpauthor|corpname|corpcredit|date|edition
+ |editor|invpartnumber|isbn|issn|issuenum|orgname
+ |biblioid|citebiblioid|bibliosource|bibliorelation|bibliocoverage
+ |othercredit|pagenums|printhistory|productname
+ |productnumber|pubdate|publisher|publishername
+ |pubsnumber|releaseinfo|revhistory|seriesvolnums
+ |subtitle|title|titleabbrev|volumenum|citetitle
+ |personname|%person.ident.mix;
+ |%ndxterm.class;
+ %local.bibliocomponent.mix;">
+
+<!-- I don't think this is well placed, but it needs to be here because of -->
+<!-- the reference to bibliocomponent.mix -->
+<!ENTITY % local.info.class "">
+<!ENTITY % info.class
+ "graphic | mediaobject | legalnotice | modespec
+ | subjectset | keywordset | itermset | %bibliocomponent.mix;
+ %local.info.class;">
+
+
+<!-- BiblioList ........................ -->
+
+<!ENTITY % bibliolist.module "INCLUDE">
+<![%bibliolist.module;[
+<!ENTITY % local.bibliolist.attrib "">
+<!ENTITY % bibliolist.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliolist.element "INCLUDE">
+<![%bibliolist.element;[
+<!--doc:A wrapper for a set of bibliography entries.-->
+<!ELEMENT bibliolist %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (biblioentry|bibliomixed)+)>
+<!--end of bibliolist.element-->]]>
+
+<!ENTITY % bibliolist.attlist "INCLUDE">
+<![%bibliolist.attlist;[
+<!ATTLIST bibliolist
+ %common.attrib;
+ %bibliolist.role.attrib;
+ %local.bibliolist.attrib;
+>
+<!--end of bibliolist.attlist-->]]>
+<!--end of bibliolist.module-->]]>
+
+<!ENTITY % biblioentry.module "INCLUDE">
+<![%biblioentry.module;[
+<!ENTITY % local.biblioentry.attrib "">
+<!ENTITY % biblioentry.role.attrib "%role.attrib;">
+
+<!ENTITY % biblioentry.element "INCLUDE">
+<![%biblioentry.element;[
+<!--doc:An entry in a Bibliography.-->
+<!ELEMENT biblioentry %ho; ((articleinfo | (%bibliocomponent.mix;))+)
+ %ubiq.exclusion;>
+<!--end of biblioentry.element-->]]>
+
+<!ENTITY % biblioentry.attlist "INCLUDE">
+<![%biblioentry.attlist;[
+<!ATTLIST biblioentry
+ %common.attrib;
+ %biblioentry.role.attrib;
+ %local.biblioentry.attrib;
+>
+<!--end of biblioentry.attlist-->]]>
+<!--end of biblioentry.module-->]]>
+
+<!ENTITY % bibliomixed.module "INCLUDE">
+<![%bibliomixed.module;[
+<!ENTITY % local.bibliomixed.attrib "">
+<!ENTITY % bibliomixed.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliomixed.element "INCLUDE">
+<![%bibliomixed.element;[
+<!--doc:An entry in a Bibliography.-->
+<!ELEMENT bibliomixed %ho; (#PCDATA | %bibliocomponent.mix; | bibliomset)*
+ %ubiq.exclusion;>
+<!--end of bibliomixed.element-->]]>
+
+<!ENTITY % bibliomixed.attlist "INCLUDE">
+<![%bibliomixed.attlist;[
+<!ATTLIST bibliomixed
+ %common.attrib;
+ %bibliomixed.role.attrib;
+ %local.bibliomixed.attrib;
+>
+<!--end of bibliomixed.attlist-->]]>
+<!--end of bibliomixed.module-->]]>
+
+<!ENTITY % articleinfo.module "INCLUDE">
+<![%articleinfo.module;[
+<!ENTITY % local.articleinfo.attrib "">
+<!ENTITY % articleinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % articleinfo.element "INCLUDE">
+<![%articleinfo.element;[
+<!--doc:Meta-information for an Article.-->
+<!ELEMENT articleinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of articleinfo.element-->]]>
+
+<!ENTITY % articleinfo.attlist "INCLUDE">
+<![%articleinfo.attlist;[
+<!ATTLIST articleinfo
+ %common.attrib;
+ %articleinfo.role.attrib;
+ %local.articleinfo.attrib;
+>
+<!--end of articleinfo.attlist-->]]>
+<!--end of articleinfo.module-->]]>
+
+<!ENTITY % biblioset.module "INCLUDE">
+<![%biblioset.module;[
+<!ENTITY % local.biblioset.attrib "">
+<!ENTITY % biblioset.role.attrib "%role.attrib;">
+
+<!ENTITY % biblioset.element "INCLUDE">
+<![%biblioset.element;[
+<!--doc:A "raw" container for related bibliographic information.-->
+<!ELEMENT biblioset %ho; ((%bibliocomponent.mix;)+)
+ %ubiq.exclusion;>
+<!--end of biblioset.element-->]]>
+
+<!-- Relation: Relationship of elements contained within BiblioSet -->
+
+
+<!ENTITY % biblioset.attlist "INCLUDE">
+<![%biblioset.attlist;[
+<!ATTLIST biblioset
+ relation CDATA #IMPLIED
+ %common.attrib;
+ %biblioset.role.attrib;
+ %local.biblioset.attrib;
+>
+<!--end of biblioset.attlist-->]]>
+<!--end of biblioset.module-->]]>
+
+<!ENTITY % bibliomset.module "INCLUDE">
+<![%bibliomset.module;[
+<!ENTITY % bibliomset.role.attrib "%role.attrib;">
+<!ENTITY % local.bibliomset.attrib "">
+
+<!ENTITY % bibliomset.element "INCLUDE">
+<![%bibliomset.element;[
+<!--doc:A "cooked" container for related bibliographic information.-->
+<!ELEMENT bibliomset %ho; (#PCDATA | %bibliocomponent.mix; | bibliomset)*
+ %ubiq.exclusion;>
+<!--end of bibliomset.element-->]]>
+
+<!-- Relation: Relationship of elements contained within BiblioMSet -->
+
+
+<!ENTITY % bibliomset.attlist "INCLUDE">
+<![%bibliomset.attlist;[
+<!ATTLIST bibliomset
+ relation CDATA #IMPLIED
+ %common.attrib;
+ %bibliomset.role.attrib;
+ %local.bibliomset.attrib;
+>
+<!--end of bibliomset.attlist-->]]>
+<!--end of bibliomset.module-->]]>
+
+<!ENTITY % bibliomisc.module "INCLUDE">
+<![%bibliomisc.module;[
+<!ENTITY % local.bibliomisc.attrib "">
+<!ENTITY % bibliomisc.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliomisc.element "INCLUDE">
+<![%bibliomisc.element;[
+<!--doc:Untyped bibliographic information.-->
+<!ELEMENT bibliomisc %ho; (%para.char.mix;)*>
+<!--end of bibliomisc.element-->]]>
+
+<!ENTITY % bibliomisc.attlist "INCLUDE">
+<![%bibliomisc.attlist;[
+<!ATTLIST bibliomisc
+ %common.attrib;
+ %bibliomisc.role.attrib;
+ %local.bibliomisc.attrib;
+>
+<!--end of bibliomisc.attlist-->]]>
+<!--end of bibliomisc.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Subject, Keyword, and ITermSet elements .............................. -->
+
+<!ENTITY % subjectset.content.module "INCLUDE">
+<![%subjectset.content.module;[
+<!ENTITY % subjectset.module "INCLUDE">
+<![%subjectset.module;[
+<!ENTITY % local.subjectset.attrib "">
+<!ENTITY % subjectset.role.attrib "%role.attrib;">
+
+<!ENTITY % subjectset.element "INCLUDE">
+<![%subjectset.element;[
+<!--doc:A set of terms describing the subject matter of a document.-->
+<!ELEMENT subjectset %ho; (subject+)>
+<!--end of subjectset.element-->]]>
+
+<!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+
+
+<!ENTITY % subjectset.attlist "INCLUDE">
+<![%subjectset.attlist;[
+<!ATTLIST subjectset
+ scheme NMTOKEN #IMPLIED
+ %common.attrib;
+ %subjectset.role.attrib;
+ %local.subjectset.attrib;
+>
+<!--end of subjectset.attlist-->]]>
+<!--end of subjectset.module-->]]>
+
+<!ENTITY % subject.module "INCLUDE">
+<![%subject.module;[
+<!ENTITY % local.subject.attrib "">
+<!ENTITY % subject.role.attrib "%role.attrib;">
+
+<!ENTITY % subject.element "INCLUDE">
+<![%subject.element;[
+<!--doc:One of a group of terms describing the subject matter of a document.-->
+<!ELEMENT subject %ho; (subjectterm+)>
+<!--end of subject.element-->]]>
+
+<!-- Weight: Ranking of this group of SubjectTerms relative
+ to others, 0 is low, no highest value specified -->
+
+
+<!ENTITY % subject.attlist "INCLUDE">
+<![%subject.attlist;[
+<!ATTLIST subject
+ weight CDATA #IMPLIED
+ %common.attrib;
+ %subject.role.attrib;
+ %local.subject.attrib;
+>
+<!--end of subject.attlist-->]]>
+<!--end of subject.module-->]]>
+
+<!ENTITY % subjectterm.module "INCLUDE">
+<![%subjectterm.module;[
+<!ENTITY % local.subjectterm.attrib "">
+<!ENTITY % subjectterm.role.attrib "%role.attrib;">
+
+<!ENTITY % subjectterm.element "INCLUDE">
+<![%subjectterm.element;[
+<!--doc:A term in a group of terms describing the subject matter of a document.-->
+<!ELEMENT subjectterm %ho; (#PCDATA)>
+<!--end of subjectterm.element-->]]>
+
+<!ENTITY % subjectterm.attlist "INCLUDE">
+<![%subjectterm.attlist;[
+<!ATTLIST subjectterm
+ %common.attrib;
+ %subjectterm.role.attrib;
+ %local.subjectterm.attrib;
+>
+<!--end of subjectterm.attlist-->]]>
+<!--end of subjectterm.module-->]]>
+<!--end of subjectset.content.module-->]]>
+
+<!ENTITY % keywordset.content.module "INCLUDE">
+<![%keywordset.content.module;[
+<!ENTITY % keywordset.module "INCLUDE">
+<![%keywordset.module;[
+<!ENTITY % local.keywordset.attrib "">
+<!ENTITY % keywordset.role.attrib "%role.attrib;">
+
+<!ENTITY % keywordset.element "INCLUDE">
+<![%keywordset.element;[
+<!--doc:A set of keywords describing the content of a document.-->
+<!ELEMENT keywordset %ho; (keyword+)>
+<!--end of keywordset.element-->]]>
+
+<!ENTITY % keywordset.attlist "INCLUDE">
+<![%keywordset.attlist;[
+<!ATTLIST keywordset
+ %common.attrib;
+ %keywordset.role.attrib;
+ %local.keywordset.attrib;
+>
+<!--end of keywordset.attlist-->]]>
+<!--end of keywordset.module-->]]>
+
+<!ENTITY % keyword.module "INCLUDE">
+<![%keyword.module;[
+<!ENTITY % local.keyword.attrib "">
+<!ENTITY % keyword.role.attrib "%role.attrib;">
+
+<!ENTITY % keyword.element "INCLUDE">
+<![%keyword.element;[
+<!--doc:One of a set of keywords describing the content of a document.-->
+<!ELEMENT keyword %ho; (#PCDATA)>
+<!--end of keyword.element-->]]>
+
+<!ENTITY % keyword.attlist "INCLUDE">
+<![%keyword.attlist;[
+<!ATTLIST keyword
+ %common.attrib;
+ %keyword.role.attrib;
+ %local.keyword.attrib;
+>
+<!--end of keyword.attlist-->]]>
+<!--end of keyword.module-->]]>
+<!--end of keywordset.content.module-->]]>
+
+<!ENTITY % itermset.module "INCLUDE">
+<![%itermset.module;[
+<!ENTITY % local.itermset.attrib "">
+<!ENTITY % itermset.role.attrib "%role.attrib;">
+
+<!ENTITY % itermset.element "INCLUDE">
+<![%itermset.element;[
+<!--doc:A set of index terms in the meta-information of a document.-->
+<!ELEMENT itermset %ho; (indexterm+)>
+<!--end of itermset.element-->]]>
+
+<!ENTITY % itermset.attlist "INCLUDE">
+<![%itermset.attlist;[
+<!ATTLIST itermset
+ %common.attrib;
+ %itermset.role.attrib;
+ %local.itermset.attrib;
+>
+<!--end of itermset.attlist-->]]>
+<!--end of itermset.module-->]]>
+
+<!-- Bibliographic info for "blocks" -->
+
+<!ENTITY % blockinfo.module "INCLUDE">
+<![ %blockinfo.module; [
+<!ENTITY % local.blockinfo.attrib "">
+<!ENTITY % blockinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % blockinfo.element "INCLUDE">
+<![ %blockinfo.element; [
+<!--doc:Meta-information for a block element.-->
+<!ELEMENT blockinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of blockinfo.element-->]]>
+
+<!ENTITY % blockinfo.attlist "INCLUDE">
+<![ %blockinfo.attlist; [
+<!ATTLIST blockinfo
+ %common.attrib;
+ %blockinfo.role.attrib;
+ %local.blockinfo.attrib;
+>
+<!--end of blockinfo.attlist-->]]>
+<!--end of blockinfo.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Compound (section-ish) elements ...................................... -->
+
+<!-- Message set ...................... -->
+
+<!ENTITY % msgset.content.module "INCLUDE">
+<![%msgset.content.module;[
+<!ENTITY % msgset.module "INCLUDE">
+<![%msgset.module;[
+<!ENTITY % local.msgset.attrib "">
+<!ENTITY % msgset.role.attrib "%role.attrib;">
+
+<!ENTITY % msgset.element "INCLUDE">
+<![%msgset.element;[
+<!--doc:A detailed set of messages, usually error messages.-->
+<!ELEMENT msgset %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (msgentry+|simplemsgentry+))>
+<!--end of msgset.element-->]]>
+
+<!ENTITY % msgset.attlist "INCLUDE">
+<![%msgset.attlist;[
+<!ATTLIST msgset
+ %common.attrib;
+ %msgset.role.attrib;
+ %local.msgset.attrib;
+>
+<!--end of msgset.attlist-->]]>
+<!--end of msgset.module-->]]>
+
+<!ENTITY % msgentry.module "INCLUDE">
+<![%msgentry.module;[
+<!ENTITY % local.msgentry.attrib "">
+<!ENTITY % msgentry.role.attrib "%role.attrib;">
+
+<!ENTITY % msgentry.element "INCLUDE">
+<![%msgentry.element;[
+<!--doc:A wrapper for an entry in a message set.-->
+<!ELEMENT msgentry %ho; (msg+, msginfo?, msgexplan*)>
+<!--end of msgentry.element-->]]>
+
+<!ENTITY % msgentry.attlist "INCLUDE">
+<![%msgentry.attlist;[
+<!ATTLIST msgentry
+ %common.attrib;
+ %msgentry.role.attrib;
+ %local.msgentry.attrib;
+>
+<!--end of msgentry.attlist-->]]>
+<!--end of msgentry.module-->]]>
+
+<!ENTITY % simplemsgentry.module "INCLUDE">
+<![ %simplemsgentry.module; [
+<!ENTITY % local.simplemsgentry.attrib "">
+<!ENTITY % simplemsgentry.role.attrib "%role.attrib;">
+
+<!ENTITY % simplemsgentry.element "INCLUDE">
+<![ %simplemsgentry.element; [
+<!--doc:A wrapper for a simpler entry in a message set.-->
+<!ELEMENT simplemsgentry %ho; (msgtext, msgexplan+)>
+<!--end of simplemsgentry.element-->]]>
+
+<!ENTITY % simplemsgentry.attlist "INCLUDE">
+<![ %simplemsgentry.attlist; [
+<!ATTLIST simplemsgentry
+ audience CDATA #IMPLIED
+ level CDATA #IMPLIED
+ origin CDATA #IMPLIED
+ %common.attrib;
+ %simplemsgentry.role.attrib;
+ %local.simplemsgentry.attrib;
+>
+<!--end of simplemsgentry.attlist-->]]>
+<!--end of simplemsgentry.module-->]]>
+
+<!ENTITY % msg.module "INCLUDE">
+<![%msg.module;[
+<!ENTITY % local.msg.attrib "">
+<!ENTITY % msg.role.attrib "%role.attrib;">
+
+<!ENTITY % msg.element "INCLUDE">
+<![%msg.element;[
+<!--doc:A message in a message set.-->
+<!ELEMENT msg %ho; (title?, msgmain, (msgsub | msgrel)*)>
+<!--end of msg.element-->]]>
+
+<!ENTITY % msg.attlist "INCLUDE">
+<![%msg.attlist;[
+<!ATTLIST msg
+ %common.attrib;
+ %msg.role.attrib;
+ %local.msg.attrib;
+>
+<!--end of msg.attlist-->]]>
+<!--end of msg.module-->]]>
+
+<!ENTITY % msgmain.module "INCLUDE">
+<![%msgmain.module;[
+<!ENTITY % local.msgmain.attrib "">
+<!ENTITY % msgmain.role.attrib "%role.attrib;">
+
+<!ENTITY % msgmain.element "INCLUDE">
+<![%msgmain.element;[
+<!--doc:The primary component of a message in a message set.-->
+<!ELEMENT msgmain %ho; (title?, msgtext)>
+<!--end of msgmain.element-->]]>
+
+<!ENTITY % msgmain.attlist "INCLUDE">
+<![%msgmain.attlist;[
+<!ATTLIST msgmain
+ %common.attrib;
+ %msgmain.role.attrib;
+ %local.msgmain.attrib;
+>
+<!--end of msgmain.attlist-->]]>
+<!--end of msgmain.module-->]]>
+
+<!ENTITY % msgsub.module "INCLUDE">
+<![%msgsub.module;[
+<!ENTITY % local.msgsub.attrib "">
+<!ENTITY % msgsub.role.attrib "%role.attrib;">
+
+<!ENTITY % msgsub.element "INCLUDE">
+<![%msgsub.element;[
+<!--doc:A subcomponent of a message in a message set.-->
+<!ELEMENT msgsub %ho; (title?, msgtext)>
+<!--end of msgsub.element-->]]>
+
+<!ENTITY % msgsub.attlist "INCLUDE">
+<![%msgsub.attlist;[
+<!ATTLIST msgsub
+ %common.attrib;
+ %msgsub.role.attrib;
+ %local.msgsub.attrib;
+>
+<!--end of msgsub.attlist-->]]>
+<!--end of msgsub.module-->]]>
+
+<!ENTITY % msgrel.module "INCLUDE">
+<![%msgrel.module;[
+<!ENTITY % local.msgrel.attrib "">
+<!ENTITY % msgrel.role.attrib "%role.attrib;">
+
+<!ENTITY % msgrel.element "INCLUDE">
+<![%msgrel.element;[
+<!--doc:A related component of a message in a message set.-->
+<!ELEMENT msgrel %ho; (title?, msgtext)>
+<!--end of msgrel.element-->]]>
+
+<!ENTITY % msgrel.attlist "INCLUDE">
+<![%msgrel.attlist;[
+<!ATTLIST msgrel
+ %common.attrib;
+ %msgrel.role.attrib;
+ %local.msgrel.attrib;
+>
+<!--end of msgrel.attlist-->]]>
+<!--end of msgrel.module-->]]>
+
+<!-- MsgText (defined in the Inlines section, below)-->
+
+<!ENTITY % msginfo.module "INCLUDE">
+<![%msginfo.module;[
+<!ENTITY % local.msginfo.attrib "">
+<!ENTITY % msginfo.role.attrib "%role.attrib;">
+
+<!ENTITY % msginfo.element "INCLUDE">
+<![%msginfo.element;[
+<!--doc:Information about a message in a message set.-->
+<!ELEMENT msginfo %ho; ((msglevel | msgorig | msgaud)*)>
+<!--end of msginfo.element-->]]>
+
+<!ENTITY % msginfo.attlist "INCLUDE">
+<![%msginfo.attlist;[
+<!ATTLIST msginfo
+ %common.attrib;
+ %msginfo.role.attrib;
+ %local.msginfo.attrib;
+>
+<!--end of msginfo.attlist-->]]>
+<!--end of msginfo.module-->]]>
+
+<!ENTITY % msglevel.module "INCLUDE">
+<![%msglevel.module;[
+<!ENTITY % local.msglevel.attrib "">
+<!ENTITY % msglevel.role.attrib "%role.attrib;">
+
+<!ENTITY % msglevel.element "INCLUDE">
+<![%msglevel.element;[
+<!--doc:The level of importance or severity of a message in a message set.-->
+<!ELEMENT msglevel %ho; (%smallcptr.char.mix;)*>
+<!--end of msglevel.element-->]]>
+
+<!ENTITY % msglevel.attlist "INCLUDE">
+<![%msglevel.attlist;[
+<!ATTLIST msglevel
+ %common.attrib;
+ %msglevel.role.attrib;
+ %local.msglevel.attrib;
+>
+<!--end of msglevel.attlist-->]]>
+<!--end of msglevel.module-->]]>
+
+<!ENTITY % msgorig.module "INCLUDE">
+<![%msgorig.module;[
+<!ENTITY % local.msgorig.attrib "">
+<!ENTITY % msgorig.role.attrib "%role.attrib;">
+
+<!ENTITY % msgorig.element "INCLUDE">
+<![%msgorig.element;[
+<!--doc:The origin of a message in a message set.-->
+<!ELEMENT msgorig %ho; (%smallcptr.char.mix;)*>
+<!--end of msgorig.element-->]]>
+
+<!ENTITY % msgorig.attlist "INCLUDE">
+<![%msgorig.attlist;[
+<!ATTLIST msgorig
+ %common.attrib;
+ %msgorig.role.attrib;
+ %local.msgorig.attrib;
+>
+<!--end of msgorig.attlist-->]]>
+<!--end of msgorig.module-->]]>
+
+<!ENTITY % msgaud.module "INCLUDE">
+<![%msgaud.module;[
+<!ENTITY % local.msgaud.attrib "">
+<!ENTITY % msgaud.role.attrib "%role.attrib;">
+
+<!ENTITY % msgaud.element "INCLUDE">
+<![%msgaud.element;[
+<!--doc:The audience to which a message in a message set is relevant.-->
+<!ELEMENT msgaud %ho; (%para.char.mix;)*>
+<!--end of msgaud.element-->]]>
+
+<!ENTITY % msgaud.attlist "INCLUDE">
+<![%msgaud.attlist;[
+<!ATTLIST msgaud
+ %common.attrib;
+ %msgaud.role.attrib;
+ %local.msgaud.attrib;
+>
+<!--end of msgaud.attlist-->]]>
+<!--end of msgaud.module-->]]>
+
+<!ENTITY % msgexplan.module "INCLUDE">
+<![%msgexplan.module;[
+<!ENTITY % local.msgexplan.attrib "">
+<!ENTITY % msgexplan.role.attrib "%role.attrib;">
+
+<!ENTITY % msgexplan.element "INCLUDE">
+<![%msgexplan.element;[
+<!--doc:Explanatory material relating to a message in a message set.-->
+<!ELEMENT msgexplan %ho; (title?, (%component.mix;)+)>
+<!--end of msgexplan.element-->]]>
+
+<!ENTITY % msgexplan.attlist "INCLUDE">
+<![%msgexplan.attlist;[
+<!ATTLIST msgexplan
+ %common.attrib;
+ %msgexplan.role.attrib;
+ %local.msgexplan.attrib;
+>
+<!--end of msgexplan.attlist-->]]>
+<!--end of msgexplan.module-->]]>
+<!--end of msgset.content.module-->]]>
+
+<!ENTITY % task.content.module "INCLUDE">
+<![%task.content.module;[
+<!ENTITY % task.module "INCLUDE">
+<![%task.module;[
+<!ENTITY % local.task.attrib "">
+<!ENTITY % task.role.attrib "%role.attrib;">
+
+<!ENTITY % task.element "INCLUDE">
+<![%task.element;[
+<!--doc:A task to be completed.-->
+<!ELEMENT task %ho; (blockinfo?,(%ndxterm.class;)*,
+ (%formalobject.title.content;),
+ tasksummary?,
+ taskprerequisites?,
+ procedure,
+ example*,
+ taskrelated?)>
+<!--end of task.element-->]]>
+
+<!ENTITY % task.attlist "INCLUDE">
+<![%task.attlist;[
+<!ATTLIST task
+ %common.attrib;
+ %task.role.attrib;
+ %local.task.attrib;
+>
+<!--end of task.attlist-->]]>
+<!--end of task.module-->]]>
+
+<!ENTITY % tasksummary.module "INCLUDE">
+<![%tasksummary.module;[
+<!ENTITY % local.tasksummary.attrib "">
+<!ENTITY % tasksummary.role.attrib "%role.attrib;">
+
+<!ENTITY % tasksummary.element "INCLUDE">
+<![%tasksummary.element;[
+<!--doc:A summary of a task.-->
+<!ELEMENT tasksummary %ho; (blockinfo?,
+ (%formalobject.title.content;)?,
+ (%component.mix;)+)>
+<!--end of tasksummary.element-->]]>
+
+<!ENTITY % tasksummary.attlist "INCLUDE">
+<![%tasksummary.attlist;[
+<!ATTLIST tasksummary
+ %common.attrib;
+ %tasksummary.role.attrib;
+ %local.tasksummary.attrib;
+>
+<!--end of tasksummary.attlist-->]]>
+<!--end of tasksummary.module-->]]>
+
+<!ENTITY % taskprerequisites.module "INCLUDE">
+<![%taskprerequisites.module;[
+<!ENTITY % local.taskprerequisites.attrib "">
+<!ENTITY % taskprerequisites.role.attrib "%role.attrib;">
+
+<!ENTITY % taskprerequisites.element "INCLUDE">
+<![%taskprerequisites.element;[
+<!--doc:The prerequisites for a task.-->
+<!ELEMENT taskprerequisites %ho; (blockinfo?,
+ (%formalobject.title.content;)?,
+ (%component.mix;)+)>
+<!--end of taskprerequisites.element-->]]>
+
+<!ENTITY % taskprerequisites.attlist "INCLUDE">
+<![%taskprerequisites.attlist;[
+<!ATTLIST taskprerequisites
+ %common.attrib;
+ %taskprerequisites.role.attrib;
+ %local.taskprerequisites.attrib;
+>
+<!--end of taskprerequisites.attlist-->]]>
+<!--end of taskprerequisites.module-->]]>
+
+<!ENTITY % taskrelated.module "INCLUDE">
+<![%taskrelated.module;[
+<!ENTITY % local.taskrelated.attrib "">
+<!ENTITY % taskrelated.role.attrib "%role.attrib;">
+
+<!ENTITY % taskrelated.element "INCLUDE">
+<![%taskrelated.element;[
+<!--doc:Information related to a task.-->
+<!ELEMENT taskrelated %ho; (blockinfo?,
+ (%formalobject.title.content;)?,
+ (%component.mix;)+)>
+<!--end of taskrelated.element-->]]>
+
+<!ENTITY % taskrelated.attlist "INCLUDE">
+<![%taskrelated.attlist;[
+<!ATTLIST taskrelated
+ %common.attrib;
+ %taskrelated.role.attrib;
+ %local.taskrelated.attrib;
+>
+<!--end of taskrelated.attlist-->]]>
+<!--end of taskrelated.module-->]]>
+<!--end of task.content.module-->]]>
+
+<!-- QandASet ........................ -->
+<!ENTITY % qandaset.content.module "INCLUDE">
+<![ %qandaset.content.module; [
+<!ENTITY % qandaset.module "INCLUDE">
+<![ %qandaset.module; [
+<!ENTITY % local.qandaset.attrib "">
+<!ENTITY % qandaset.role.attrib "%role.attrib;">
+
+<!ENTITY % qandaset.element "INCLUDE">
+<![ %qandaset.element; [
+<!--doc:A question-and-answer set.-->
+<!ELEMENT qandaset %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (%qandaset.mix;)*,
+ (qandadiv+|qandaentry+))>
+<!--end of qandaset.element-->]]>
+
+<!ENTITY % qandaset.attlist "INCLUDE">
+<![ %qandaset.attlist; [
+<!ATTLIST qandaset
+ defaultlabel (qanda|number|none) #IMPLIED
+ %common.attrib;
+ %qandaset.role.attrib;
+ %local.qandaset.attrib;>
+<!--end of qandaset.attlist-->]]>
+<!--end of qandaset.module-->]]>
+
+<!ENTITY % qandadiv.module "INCLUDE">
+<![ %qandadiv.module; [
+<!ENTITY % local.qandadiv.attrib "">
+<!ENTITY % qandadiv.role.attrib "%role.attrib;">
+
+<!ENTITY % qandadiv.element "INCLUDE">
+<![ %qandadiv.element; [
+<!--doc:A titled division in a QandASet.-->
+<!ELEMENT qandadiv %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (%qandaset.mix;)*,
+ (qandadiv+|qandaentry+))>
+<!--end of qandadiv.element-->]]>
+
+<!ENTITY % qandadiv.attlist "INCLUDE">
+<![ %qandadiv.attlist; [
+<!ATTLIST qandadiv
+ %common.attrib;
+ %qandadiv.role.attrib;
+ %local.qandadiv.attrib;>
+<!--end of qandadiv.attlist-->]]>
+<!--end of qandadiv.module-->]]>
+
+<!ENTITY % qandaentry.module "INCLUDE">
+<![ %qandaentry.module; [
+<!ENTITY % local.qandaentry.attrib "">
+<!ENTITY % qandaentry.role.attrib "%role.attrib;">
+
+<!ENTITY % qandaentry.element "INCLUDE">
+<![ %qandaentry.element; [
+<!--doc:A question/answer set within a QandASet.-->
+<!ELEMENT qandaentry %ho; (blockinfo?, revhistory?, question, answer*)>
+<!--end of qandaentry.element-->]]>
+
+<!ENTITY % qandaentry.attlist "INCLUDE">
+<![ %qandaentry.attlist; [
+<!ATTLIST qandaentry
+ %common.attrib;
+ %qandaentry.role.attrib;
+ %local.qandaentry.attrib;>
+<!--end of qandaentry.attlist-->]]>
+<!--end of qandaentry.module-->]]>
+
+<!ENTITY % question.module "INCLUDE">
+<![ %question.module; [
+<!ENTITY % local.question.attrib "">
+<!ENTITY % question.role.attrib "%role.attrib;">
+
+<!ENTITY % question.element "INCLUDE">
+<![ %question.element; [
+<!--doc:A question in a QandASet.-->
+<!ELEMENT question %ho; (label?, (%qandaset.mix;)+)>
+<!--end of question.element-->]]>
+
+<!ENTITY % question.attlist "INCLUDE">
+<![ %question.attlist; [
+<!ATTLIST question
+ %common.attrib;
+ %question.role.attrib;
+ %local.question.attrib;
+>
+<!--end of question.attlist-->]]>
+<!--end of question.module-->]]>
+
+<!ENTITY % answer.module "INCLUDE">
+<![ %answer.module; [
+<!ENTITY % local.answer.attrib "">
+<!ENTITY % answer.role.attrib "%role.attrib;">
+
+<!ENTITY % answer.element "INCLUDE">
+<![ %answer.element; [
+<!--doc:An answer to a question posed in a QandASet.-->
+<!ELEMENT answer %ho; (label?, (%qandaset.mix;)*, qandaentry*)>
+<!--end of answer.element-->]]>
+
+<!ENTITY % answer.attlist "INCLUDE">
+<![ %answer.attlist; [
+<!ATTLIST answer
+ %common.attrib;
+ %answer.role.attrib;
+ %local.answer.attrib;
+>
+<!--end of answer.attlist-->]]>
+<!--end of answer.module-->]]>
+
+<!ENTITY % label.module "INCLUDE">
+<![ %label.module; [
+<!ENTITY % local.label.attrib "">
+<!ENTITY % label.role.attrib "%role.attrib;">
+
+<!ENTITY % label.element "INCLUDE">
+<![ %label.element; [
+<!--doc:A label on a Question or Answer.-->
+<!ELEMENT label %ho; (%word.char.mix;)*>
+<!--end of label.element-->]]>
+
+<!ENTITY % label.attlist "INCLUDE">
+<![ %label.attlist; [
+<!ATTLIST label
+ %common.attrib;
+ %label.role.attrib;
+ %local.label.attrib;
+>
+<!--end of label.attlist-->]]>
+<!--end of label.module-->]]>
+<!--end of qandaset.content.module-->]]>
+
+<!-- Procedure ........................ -->
+
+<!ENTITY % procedure.content.module "INCLUDE">
+<![%procedure.content.module;[
+<!ENTITY % procedure.module "INCLUDE">
+<![%procedure.module;[
+<!ENTITY % local.procedure.attrib "">
+<!ENTITY % procedure.role.attrib "%role.attrib;">
+
+<!ENTITY % procedure.element "INCLUDE">
+<![%procedure.element;[
+<!--doc:A list of operations to be performed in a well-defined sequence.-->
+<!ELEMENT procedure %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (%component.mix;)*, step+)>
+<!--end of procedure.element-->]]>
+
+<!ENTITY % procedure.attlist "INCLUDE">
+<![%procedure.attlist;[
+<!ATTLIST procedure
+ %common.attrib;
+ %procedure.role.attrib;
+ %local.procedure.attrib;
+>
+<!--end of procedure.attlist-->]]>
+<!--end of procedure.module-->]]>
+
+<!ENTITY % step.module "INCLUDE">
+<![%step.module;[
+<!ENTITY % local.step.attrib "">
+<!ENTITY % step.role.attrib "%role.attrib;">
+
+<!ENTITY % step.element "INCLUDE">
+<![%step.element;[
+<!--doc:A unit of action in a procedure.-->
+<!ELEMENT step %ho; (title?, (((%component.mix;)+, ((substeps|stepalternatives), (%component.mix;)*)?)
+ | ((substeps|stepalternatives), (%component.mix;)*)))>
+<!--end of step.element-->]]>
+
+<!-- Performance: Whether the Step must be performed -->
+<!-- not #REQUIRED! -->
+
+
+<!ENTITY % step.attlist "INCLUDE">
+<![%step.attlist;[
+<!ATTLIST step
+ performance (optional
+ |required) "required"
+ %common.attrib;
+ %step.role.attrib;
+ %local.step.attrib;
+>
+<!--end of step.attlist-->]]>
+<!--end of step.module-->]]>
+
+<!ENTITY % substeps.module "INCLUDE">
+<![%substeps.module;[
+<!ENTITY % local.substeps.attrib "">
+<!ENTITY % substeps.role.attrib "%role.attrib;">
+
+<!ENTITY % substeps.element "INCLUDE">
+<![%substeps.element;[
+<!--doc:A wrapper for steps that occur within steps in a procedure.-->
+<!ELEMENT substeps %ho; (step+)>
+<!--end of substeps.element-->]]>
+
+<!-- Performance: whether entire set of substeps must be performed -->
+<!-- not #REQUIRED! -->
+
+<!ENTITY % substeps.attlist "INCLUDE">
+<![%substeps.attlist;[
+<!ATTLIST substeps
+ performance (optional
+ |required) "required"
+ %common.attrib;
+ %substeps.role.attrib;
+ %local.substeps.attrib;
+>
+<!--end of substeps.attlist-->]]>
+<!--end of substeps.module-->]]>
+
+<!ENTITY % stepalternatives.module "INCLUDE">
+<![%stepalternatives.module;[
+<!ENTITY % local.stepalternatives.attrib "">
+<!ENTITY % stepalternatives.role.attrib "%role.attrib;">
+
+<!ENTITY % stepalternatives.element "INCLUDE">
+<![%stepalternatives.element;[
+<!--doc:Alternative steps in a procedure.-->
+<!ELEMENT stepalternatives %ho; (step+)>
+<!--end of stepalternatives.element-->]]>
+
+<!-- Performance: Whether (one of) the alternatives must be performed -->
+<!-- not #REQUIRED! -->
+
+<!ENTITY % stepalternatives.attlist "INCLUDE">
+<![%stepalternatives.attlist;[
+<!ATTLIST stepalternatives
+ performance (optional
+ |required) "required"
+ %common.attrib;
+ %stepalternatives.role.attrib;
+ %local.stepalternatives.attrib;
+>
+<!--end of stepalternatives.attlist-->]]>
+<!--end of stepalternatives.module-->]]>
+<!--end of procedure.content.module-->]]>
+
+<!-- Sidebar .......................... -->
+
+<!ENTITY % sidebar.content.model "INCLUDE">
+<![ %sidebar.content.model; [
+
+<!ENTITY % sidebarinfo.module "INCLUDE">
+<![ %sidebarinfo.module; [
+<!ENTITY % local.sidebarinfo.attrib "">
+<!ENTITY % sidebarinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % sidebarinfo.element "INCLUDE">
+<![ %sidebarinfo.element; [
+<!--doc:Meta-information for a Sidebar.-->
+<!ELEMENT sidebarinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of sidebarinfo.element-->]]>
+
+<!ENTITY % sidebarinfo.attlist "INCLUDE">
+<![ %sidebarinfo.attlist; [
+<!ATTLIST sidebarinfo
+ %common.attrib;
+ %sidebarinfo.role.attrib;
+ %local.sidebarinfo.attrib;
+>
+<!--end of sidebarinfo.attlist-->]]>
+<!--end of sidebarinfo.module-->]]>
+
+<!ENTITY % sidebar.module "INCLUDE">
+<![%sidebar.module;[
+<!ENTITY % local.sidebar.attrib "">
+<!ENTITY % sidebar.role.attrib "%role.attrib;">
+
+<!ENTITY % sidebar.element "INCLUDE">
+<![%sidebar.element;[
+<!--doc:A portion of a document that is isolated from the main narrative flow.-->
+<!ELEMENT sidebar %ho; (sidebarinfo?,
+ (%formalobject.title.content;)?,
+ (%sidebar.mix;)+)>
+<!--end of sidebar.element-->]]>
+
+<!ENTITY % sidebar.attlist "INCLUDE">
+<![%sidebar.attlist;[
+<!ATTLIST sidebar
+ %common.attrib;
+ %sidebar.role.attrib;
+ %local.sidebar.attrib;
+>
+<!--end of sidebar.attlist-->]]>
+<!--end of sidebar.module-->]]>
+<!--end of sidebar.content.model-->]]>
+
+<!-- ...................................................................... -->
+<!-- Paragraph-related elements ........................................... -->
+
+<!ENTITY % abstract.module "INCLUDE">
+<![%abstract.module;[
+<!ENTITY % local.abstract.attrib "">
+<!ENTITY % abstract.role.attrib "%role.attrib;">
+
+<!ENTITY % abstract.element "INCLUDE">
+<![%abstract.element;[
+<!--doc:A summary.-->
+<!ELEMENT abstract %ho; (title?, (%para.class;)+)>
+<!--end of abstract.element-->]]>
+
+<!ENTITY % abstract.attlist "INCLUDE">
+<![%abstract.attlist;[
+<!ATTLIST abstract
+ %common.attrib;
+ %abstract.role.attrib;
+ %local.abstract.attrib;
+>
+<!--end of abstract.attlist-->]]>
+<!--end of abstract.module-->]]>
+
+<!ENTITY % authorblurb.module "INCLUDE">
+<![%authorblurb.module;[
+<!ENTITY % local.authorblurb.attrib "">
+<!ENTITY % authorblurb.role.attrib "%role.attrib;">
+
+<!ENTITY % authorblurb.element "INCLUDE">
+<![%authorblurb.element;[
+<!--doc:A short description or note about an author.-->
+<!ELEMENT authorblurb %ho; (title?, (%para.class;)+)>
+<!--end of authorblurb.element-->]]>
+
+<!ENTITY % authorblurb.attlist "INCLUDE">
+<![%authorblurb.attlist;[
+<!ATTLIST authorblurb
+ %common.attrib;
+ %authorblurb.role.attrib;
+ %local.authorblurb.attrib;
+>
+<!--end of authorblurb.attlist-->]]>
+<!--end of authorblurb.module-->]]>
+
+<!ENTITY % personblurb.module "INCLUDE">
+<![%personblurb.module;[
+<!ENTITY % local.personblurb.attrib "">
+<!ENTITY % personblurb.role.attrib "%role.attrib;">
+
+<!ENTITY % personblurb.element "INCLUDE">
+<![%personblurb.element;[
+<!--doc:A short description or note about a person.-->
+<!ELEMENT personblurb %ho; (title?, (%para.class;)+)>
+<!--end of personblurb.element-->]]>
+
+<!ENTITY % personblurb.attlist "INCLUDE">
+<![%personblurb.attlist;[
+<!ATTLIST personblurb
+ %common.attrib;
+ %personblurb.role.attrib;
+ %local.personblurb.attrib;
+>
+<!--end of personblurb.attlist-->]]>
+<!--end of personblurb.module-->]]>
+
+<!ENTITY % blockquote.module "INCLUDE">
+<![%blockquote.module;[
+
+<!ENTITY % local.blockquote.attrib "">
+<!ENTITY % blockquote.role.attrib "%role.attrib;">
+
+<!ENTITY % blockquote.element "INCLUDE">
+<![%blockquote.element;[
+<!--doc:A quotation set off from the main text.-->
+<!ELEMENT blockquote %ho; (blockinfo?, title?, attribution?, (%component.mix;)+)
+ %blockquote.exclusion;>
+<!--end of blockquote.element-->]]>
+
+<!ENTITY % blockquote.attlist "INCLUDE">
+<![%blockquote.attlist;[
+<!ATTLIST blockquote
+ %common.attrib;
+ %blockquote.role.attrib;
+ %local.blockquote.attrib;
+>
+<!--end of blockquote.attlist-->]]>
+<!--end of blockquote.module-->]]>
+
+<!ENTITY % attribution.module "INCLUDE">
+<![%attribution.module;[
+<!ENTITY % local.attribution.attrib "">
+<!ENTITY % attribution.role.attrib "%role.attrib;">
+
+<!ENTITY % attribution.element "INCLUDE">
+<![%attribution.element;[
+<!--doc:The source of a block quote or epigraph.-->
+<!ELEMENT attribution %ho; (%para.char.mix;)*>
+<!--end of attribution.element-->]]>
+
+<!ENTITY % attribution.attlist "INCLUDE">
+<![%attribution.attlist;[
+<!ATTLIST attribution
+ %common.attrib;
+ %attribution.role.attrib;
+ %local.attribution.attrib;
+>
+<!--end of attribution.attlist-->]]>
+<!--end of attribution.module-->]]>
+
+<!ENTITY % bridgehead.module "INCLUDE">
+<![%bridgehead.module;[
+<!ENTITY % local.bridgehead.attrib "">
+<!ENTITY % bridgehead.role.attrib "%role.attrib;">
+
+<!ENTITY % bridgehead.element "INCLUDE">
+<![%bridgehead.element;[
+<!--doc:A free-floating heading.-->
+<!ELEMENT bridgehead %ho; (%title.char.mix;)*>
+<!--end of bridgehead.element-->]]>
+
+<!-- Renderas: Indicates the format in which the BridgeHead
+ should appear -->
+
+
+<!ENTITY % bridgehead.attlist "INCLUDE">
+<![%bridgehead.attlist;[
+<!ATTLIST bridgehead
+ renderas (other
+ |sect1
+ |sect2
+ |sect3
+ |sect4
+ |sect5) #IMPLIED
+ %common.attrib;
+ %bridgehead.role.attrib;
+ %local.bridgehead.attrib;
+>
+<!--end of bridgehead.attlist-->]]>
+<!--end of bridgehead.module-->]]>
+
+<!ENTITY % remark.module "INCLUDE">
+<![%remark.module;[
+<!ENTITY % local.remark.attrib "">
+<!ENTITY % remark.role.attrib "%role.attrib;">
+
+<!ENTITY % remark.element "INCLUDE">
+<![%remark.element;[
+<!--doc:A remark (or comment) intended for presentation in a draft manuscript.-->
+<!ELEMENT remark %ho; (%para.char.mix;)*
+ %remark.exclusion;>
+<!--end of remark.element-->]]>
+
+<!ENTITY % remark.attlist "INCLUDE">
+<![%remark.attlist;[
+<!ATTLIST remark
+ %common.attrib;
+ %remark.role.attrib;
+ %local.remark.attrib;
+>
+<!--end of remark.attlist-->]]>
+<!--end of remark.module-->]]>
+
+<!ENTITY % epigraph.module "INCLUDE">
+<![%epigraph.module;[
+<!ENTITY % local.epigraph.attrib "">
+<!ENTITY % epigraph.role.attrib "%role.attrib;">
+
+<!ENTITY % epigraph.element "INCLUDE">
+<![%epigraph.element;[
+<!--doc:A short inscription at the beginning of a document or component.-->
+<!ELEMENT epigraph %ho; (attribution?, ((%para.class;)|literallayout)+)>
+<!--end of epigraph.element-->]]>
+
+<!ENTITY % epigraph.attlist "INCLUDE">
+<![%epigraph.attlist;[
+<!ATTLIST epigraph
+ %common.attrib;
+ %epigraph.role.attrib;
+ %local.epigraph.attrib;
+>
+<!--end of epigraph.attlist-->]]>
+<!-- Attribution (defined above)-->
+<!--end of epigraph.module-->]]>
+
+<!ENTITY % footnote.module "INCLUDE">
+<![%footnote.module;[
+<!ENTITY % local.footnote.attrib "">
+<!ENTITY % footnote.role.attrib "%role.attrib;">
+
+<!ENTITY % footnote.element "INCLUDE">
+<![%footnote.element;[
+<!--doc:A footnote.-->
+<!ELEMENT footnote %ho; ((%footnote.mix;)+)
+ %footnote.exclusion;>
+<!--end of footnote.element-->]]>
+
+<!ENTITY % footnote.attlist "INCLUDE">
+<![%footnote.attlist;[
+<!ATTLIST footnote
+ %label.attrib;
+ %common.attrib;
+ %footnote.role.attrib;
+ %local.footnote.attrib;
+>
+<!--end of footnote.attlist-->]]>
+<!--end of footnote.module-->]]>
+
+<!ENTITY % highlights.module "INCLUDE">
+<![%highlights.module;[
+<!ENTITY % local.highlights.attrib "">
+<!ENTITY % highlights.role.attrib "%role.attrib;">
+
+<!ENTITY % highlights.element "INCLUDE">
+<![%highlights.element;[
+<!--doc:A summary of the main points of the discussed component.-->
+<!ELEMENT highlights %ho; ((%highlights.mix;)+)
+ %highlights.exclusion;>
+<!--end of highlights.element-->]]>
+
+<!ENTITY % highlights.attlist "INCLUDE">
+<![%highlights.attlist;[
+<!ATTLIST highlights
+ %common.attrib;
+ %highlights.role.attrib;
+ %local.highlights.attrib;
+>
+<!--end of highlights.attlist-->]]>
+<!--end of highlights.module-->]]>
+
+<!ENTITY % formalpara.module "INCLUDE">
+<![%formalpara.module;[
+<!ENTITY % local.formalpara.attrib "">
+<!ENTITY % formalpara.role.attrib "%role.attrib;">
+
+<!ENTITY % formalpara.element "INCLUDE">
+<![%formalpara.element;[
+<!--doc:A paragraph with a title.-->
+<!ELEMENT formalpara %ho; (title, (%ndxterm.class;)*, para)>
+<!--end of formalpara.element-->]]>
+
+<!ENTITY % formalpara.attlist "INCLUDE">
+<![%formalpara.attlist;[
+<!ATTLIST formalpara
+ %common.attrib;
+ %formalpara.role.attrib;
+ %local.formalpara.attrib;
+>
+<!--end of formalpara.attlist-->]]>
+<!--end of formalpara.module-->]]>
+
+<!ENTITY % para.module "INCLUDE">
+<![%para.module;[
+<!ENTITY % local.para.attrib "">
+<!ENTITY % para.role.attrib "%role.attrib;">
+
+<!ENTITY % para.element "INCLUDE">
+<![%para.element;[
+<!--doc:A paragraph.-->
+<!ELEMENT para %ho; (%para.char.mix; | %para.mix;)*>
+<!--end of para.element-->]]>
+
+<!ENTITY % para.attlist "INCLUDE">
+<![%para.attlist;[
+<!ATTLIST para
+ %common.attrib;
+ %para.role.attrib;
+ %local.para.attrib;
+>
+<!--end of para.attlist-->]]>
+<!--end of para.module-->]]>
+
+<!ENTITY % simpara.module "INCLUDE">
+<![%simpara.module;[
+<!ENTITY % local.simpara.attrib "">
+<!ENTITY % simpara.role.attrib "%role.attrib;">
+
+<!ENTITY % simpara.element "INCLUDE">
+<![%simpara.element;[
+<!--doc:A paragraph that contains only text and inline markup, no block elements.-->
+<!ELEMENT simpara %ho; (%para.char.mix;)*>
+<!--end of simpara.element-->]]>
+
+<!ENTITY % simpara.attlist "INCLUDE">
+<![%simpara.attlist;[
+<!ATTLIST simpara
+ %common.attrib;
+ %simpara.role.attrib;
+ %local.simpara.attrib;
+>
+<!--end of simpara.attlist-->]]>
+<!--end of simpara.module-->]]>
+
+<!ENTITY % admon.module "INCLUDE">
+<![%admon.module;[
+<!ENTITY % local.admon.attrib "">
+<!ENTITY % admon.role.attrib "%role.attrib;">
+
+
+<!ENTITY % caution.element "INCLUDE">
+<![%caution.element;[
+<!--doc:A note of caution.-->
+<!ELEMENT caution %ho; (title?, (%admon.mix;)+)
+ %admon.exclusion;>
+<!--end of caution.element-->]]>
+
+<!ENTITY % caution.attlist "INCLUDE">
+<![%caution.attlist;[
+<!ATTLIST caution
+ %common.attrib;
+ %admon.role.attrib;
+ %local.admon.attrib;
+>
+<!--end of caution.attlist-->]]>
+
+
+<!ENTITY % important.element "INCLUDE">
+<![%important.element;[
+<!--doc:An admonition set off from the text.-->
+<!ELEMENT important %ho; (title?, (%admon.mix;)+)
+ %admon.exclusion;>
+<!--end of important.element-->]]>
+
+<!ENTITY % important.attlist "INCLUDE">
+<![%important.attlist;[
+<!ATTLIST important
+ %common.attrib;
+ %admon.role.attrib;
+ %local.admon.attrib;
+>
+<!--end of important.attlist-->]]>
+
+
+<!ENTITY % note.element "INCLUDE">
+<![%note.element;[
+<!--doc:A message set off from the text.-->
+<!ELEMENT note %ho; (title?, (%admon.mix;)+)
+ %admon.exclusion;>
+<!--end of note.element-->]]>
+
+<!ENTITY % note.attlist "INCLUDE">
+<![%note.attlist;[
+<!ATTLIST note
+ %common.attrib;
+ %admon.role.attrib;
+ %local.admon.attrib;
+>
+<!--end of note.attlist-->]]>
+
+<!ENTITY % tip.element "INCLUDE">
+<![%tip.element;[
+<!--doc:A suggestion to the user, set off from the text.-->
+<!ELEMENT tip %ho; (title?, (%admon.mix;)+)
+ %admon.exclusion;>
+<!--end of tip.element-->]]>
+
+<!ENTITY % tip.attlist "INCLUDE">
+<![%tip.attlist;[
+<!ATTLIST tip
+ %common.attrib;
+ %admon.role.attrib;
+ %local.admon.attrib;
+>
+<!--end of tip.attlist-->]]>
+
+
+<!ENTITY % warning.element "INCLUDE">
+<![%warning.element;[
+<!--doc:An admonition set off from the text.-->
+<!ELEMENT warning %ho; (title?, (%admon.mix;)+)
+ %admon.exclusion;>
+<!--end of warning.element-->]]>
+
+<!ENTITY % warning.attlist "INCLUDE">
+<![%warning.attlist;[
+<!ATTLIST warning
+ %common.attrib;
+ %admon.role.attrib;
+ %local.admon.attrib;
+>
+<!--end of warning.attlist-->]]>
+
+<!--end of admon.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Lists ................................................................ -->
+
+<!-- GlossList ........................ -->
+
+<!ENTITY % glosslist.module "INCLUDE">
+<![%glosslist.module;[
+<!ENTITY % local.glosslist.attrib "">
+<!ENTITY % glosslist.role.attrib "%role.attrib;">
+
+<!ENTITY % glosslist.element "INCLUDE">
+<![%glosslist.element;[
+<!--doc:A wrapper for a set of GlossEntrys.-->
+<!ELEMENT glosslist %ho; (blockinfo?, (%formalobject.title.content;)?, glossentry+)>
+<!--end of glosslist.element-->]]>
+
+<!ENTITY % glosslist.attlist "INCLUDE">
+<![%glosslist.attlist;[
+<!ATTLIST glosslist
+ %common.attrib;
+ %glosslist.role.attrib;
+ %local.glosslist.attrib;
+>
+<!--end of glosslist.attlist-->]]>
+<!--end of glosslist.module-->]]>
+
+<!ENTITY % glossentry.content.module "INCLUDE">
+<![%glossentry.content.module;[
+<!ENTITY % glossentry.module "INCLUDE">
+<![%glossentry.module;[
+<!ENTITY % local.glossentry.attrib "">
+<!ENTITY % glossentry.role.attrib "%role.attrib;">
+
+<!ENTITY % glossentry.element "INCLUDE">
+<![%glossentry.element;[
+<!--doc:An entry in a Glossary or GlossList.-->
+<!ELEMENT glossentry %ho; (glossterm, acronym?, abbrev?,
+ (%ndxterm.class;)*,
+ revhistory?, (glosssee|glossdef+))>
+<!--end of glossentry.element-->]]>
+
+<!-- SortAs: String by which the GlossEntry is to be sorted
+ (alphabetized) in lieu of its proper content -->
+
+
+<!ENTITY % glossentry.attlist "INCLUDE">
+<![%glossentry.attlist;[
+<!ATTLIST glossentry
+ sortas CDATA #IMPLIED
+ %common.attrib;
+ %glossentry.role.attrib;
+ %local.glossentry.attrib;
+>
+<!--end of glossentry.attlist-->]]>
+<!--end of glossentry.module-->]]>
+
+<!-- GlossTerm (defined in the Inlines section, below)-->
+<!ENTITY % glossdef.module "INCLUDE">
+<![%glossdef.module;[
+<!ENTITY % local.glossdef.attrib "">
+<!ENTITY % glossdef.role.attrib "%role.attrib;">
+
+<!ENTITY % glossdef.element "INCLUDE">
+<![%glossdef.element;[
+<!--doc:A definition in a GlossEntry.-->
+<!ELEMENT glossdef %ho; ((%glossdef.mix;)+, glossseealso*)>
+<!--end of glossdef.element-->]]>
+
+<!-- Subject: List of subjects; keywords for the definition -->
+
+
+<!ENTITY % glossdef.attlist "INCLUDE">
+<![%glossdef.attlist;[
+<!ATTLIST glossdef
+ subject CDATA #IMPLIED
+ %common.attrib;
+ %glossdef.role.attrib;
+ %local.glossdef.attrib;
+>
+<!--end of glossdef.attlist-->]]>
+<!--end of glossdef.module-->]]>
+
+<!ENTITY % glosssee.module "INCLUDE">
+<![%glosssee.module;[
+<!ENTITY % local.glosssee.attrib "">
+<!ENTITY % glosssee.role.attrib "%role.attrib;">
+
+<!ENTITY % glosssee.element "INCLUDE">
+<![%glosssee.element;[
+<!--doc:A cross-reference from one GlossEntry to another.-->
+<!ELEMENT glosssee %ho; (%para.char.mix;)*>
+<!--end of glosssee.element-->]]>
+
+<!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSee -->
+
+
+<!ENTITY % glosssee.attlist "INCLUDE">
+<![%glosssee.attlist;[
+<!ATTLIST glosssee
+ otherterm IDREF #IMPLIED
+ %common.attrib;
+ %glosssee.role.attrib;
+ %local.glosssee.attrib;
+>
+<!--end of glosssee.attlist-->]]>
+<!--end of glosssee.module-->]]>
+
+<!ENTITY % glossseealso.module "INCLUDE">
+<![%glossseealso.module;[
+<!ENTITY % local.glossseealso.attrib "">
+<!ENTITY % glossseealso.role.attrib "%role.attrib;">
+
+<!ENTITY % glossseealso.element "INCLUDE">
+<![%glossseealso.element;[
+<!--doc:A cross-reference from one GlossEntry to another.-->
+<!ELEMENT glossseealso %ho; (%para.char.mix;)*>
+<!--end of glossseealso.element-->]]>
+
+<!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSeeAlso -->
+
+
+<!ENTITY % glossseealso.attlist "INCLUDE">
+<![%glossseealso.attlist;[
+<!ATTLIST glossseealso
+ otherterm IDREF #IMPLIED
+ %common.attrib;
+ %glossseealso.role.attrib;
+ %local.glossseealso.attrib;
+>
+<!--end of glossseealso.attlist-->]]>
+<!--end of glossseealso.module-->]]>
+<!--end of glossentry.content.module-->]]>
+
+<!-- ItemizedList and OrderedList ..... -->
+
+<!ENTITY % itemizedlist.module "INCLUDE">
+<![%itemizedlist.module;[
+<!ENTITY % local.itemizedlist.attrib "">
+<!ENTITY % itemizedlist.role.attrib "%role.attrib;">
+
+<!ENTITY % itemizedlist.element "INCLUDE">
+<![%itemizedlist.element;[
+<!--doc:A list in which each entry is marked with a bullet or other dingbat.-->
+<!ELEMENT itemizedlist %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (%listpreamble.mix;)*, listitem+)>
+
+<!--end of itemizedlist.element-->]]>
+
+<!-- Spacing: Whether the vertical space in the list should be
+ compressed -->
+<!-- Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific -->
+
+
+<!ENTITY % itemizedlist.attlist "INCLUDE">
+<![%itemizedlist.attlist;[
+<!ATTLIST itemizedlist
+ spacing (normal
+ |compact) #IMPLIED
+ %mark.attrib;
+ %common.attrib;
+ %itemizedlist.role.attrib;
+ %local.itemizedlist.attrib;
+>
+<!--end of itemizedlist.attlist-->]]>
+<!--end of itemizedlist.module-->]]>
+
+<!ENTITY % orderedlist.module "INCLUDE">
+<![%orderedlist.module;[
+<!ENTITY % local.orderedlist.attrib "">
+<!ENTITY % orderedlist.role.attrib "%role.attrib;">
+
+<!ENTITY % orderedlist.element "INCLUDE">
+<![%orderedlist.element;[
+<!--doc:A list in which each entry is marked with a sequentially incremented label.-->
+<!ELEMENT orderedlist %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (%listpreamble.mix;)*, listitem+)>
+
+<!--end of orderedlist.element-->]]>
+
+<!-- Numeration: Style of ListItem numbered; default is expected
+ to be Arabic -->
+<!-- InheritNum: Specifies for a nested list that the numbering
+ of ListItems should include the number of the item
+ within which they are nested (e.g., 1a and 1b within 1,
+ rather than a and b) -->
+<!-- Continuation: Where list numbering begins afresh (Restarts,
+ the default) or continues that of the immediately preceding
+ list (Continues) -->
+<!-- Spacing: Whether the vertical space in the list should be
+ compressed -->
+
+
+<!ENTITY % orderedlist.attlist "INCLUDE">
+<![%orderedlist.attlist;[
+<!ATTLIST orderedlist
+ numeration (arabic
+ |upperalpha
+ |loweralpha
+ |upperroman
+ |lowerroman) #IMPLIED
+ inheritnum (inherit
+ |ignore) "ignore"
+ continuation (continues
+ |restarts) "restarts"
+ spacing (normal
+ |compact) #IMPLIED
+ %common.attrib;
+ %orderedlist.role.attrib;
+ %local.orderedlist.attrib;
+>
+<!--end of orderedlist.attlist-->]]>
+<!--end of orderedlist.module-->]]>
+
+<!ENTITY % listitem.module "INCLUDE">
+<![%listitem.module;[
+<!ENTITY % local.listitem.attrib "">
+<!ENTITY % listitem.role.attrib "%role.attrib;">
+
+<!ENTITY % listitem.element "INCLUDE">
+<![%listitem.element;[
+<!--doc:A wrapper for the elements of a list item.-->
+<!ELEMENT listitem %ho; ((%component.mix;)+)>
+<!--end of listitem.element-->]]>
+
+<!-- Override: Indicates the mark to be used for this ListItem
+ instead of the default mark or the mark specified by
+ the Mark attribute on the enclosing ItemizedList -->
+
+
+<!ENTITY % listitem.attlist "INCLUDE">
+<![%listitem.attlist;[
+<!ATTLIST listitem
+ override CDATA #IMPLIED
+ %common.attrib;
+ %listitem.role.attrib;
+ %local.listitem.attrib;
+>
+<!--end of listitem.attlist-->]]>
+<!--end of listitem.module-->]]>
+
+<!-- SegmentedList .................... -->
+<!ENTITY % segmentedlist.content.module "INCLUDE">
+<![%segmentedlist.content.module;[
+<!ENTITY % segmentedlist.module "INCLUDE">
+<![%segmentedlist.module;[
+<!ENTITY % local.segmentedlist.attrib "">
+<!ENTITY % segmentedlist.role.attrib "%role.attrib;">
+
+<!ENTITY % segmentedlist.element "INCLUDE">
+<![%segmentedlist.element;[
+<!--doc:A segmented list, a list of sets of elements.-->
+<!ELEMENT segmentedlist %ho; ((%formalobject.title.content;)?,
+ segtitle+,
+ seglistitem+)>
+<!--end of segmentedlist.element-->]]>
+
+<!ENTITY % segmentedlist.attlist "INCLUDE">
+<![%segmentedlist.attlist;[
+<!ATTLIST segmentedlist
+ %common.attrib;
+ %segmentedlist.role.attrib;
+ %local.segmentedlist.attrib;
+>
+<!--end of segmentedlist.attlist-->]]>
+<!--end of segmentedlist.module-->]]>
+
+<!ENTITY % segtitle.module "INCLUDE">
+<![%segtitle.module;[
+<!ENTITY % local.segtitle.attrib "">
+<!ENTITY % segtitle.role.attrib "%role.attrib;">
+
+<!ENTITY % segtitle.element "INCLUDE">
+<![%segtitle.element;[
+<!--doc:The title of an element of a list item in a segmented list.-->
+<!ELEMENT segtitle %ho; (%title.char.mix;)*>
+<!--end of segtitle.element-->]]>
+
+<!ENTITY % segtitle.attlist "INCLUDE">
+<![%segtitle.attlist;[
+<!ATTLIST segtitle
+ %common.attrib;
+ %segtitle.role.attrib;
+ %local.segtitle.attrib;
+>
+<!--end of segtitle.attlist-->]]>
+<!--end of segtitle.module-->]]>
+
+<!ENTITY % seglistitem.module "INCLUDE">
+<![%seglistitem.module;[
+<!ENTITY % local.seglistitem.attrib "">
+<!ENTITY % seglistitem.role.attrib "%role.attrib;">
+
+<!ENTITY % seglistitem.element "INCLUDE">
+<![%seglistitem.element;[
+<!--doc:A list item in a segmented list.-->
+<!ELEMENT seglistitem %ho; (seg+)>
+<!--end of seglistitem.element-->]]>
+
+<!ENTITY % seglistitem.attlist "INCLUDE">
+<![%seglistitem.attlist;[
+<!ATTLIST seglistitem
+ %common.attrib;
+ %seglistitem.role.attrib;
+ %local.seglistitem.attrib;
+>
+<!--end of seglistitem.attlist-->]]>
+<!--end of seglistitem.module-->]]>
+
+<!ENTITY % seg.module "INCLUDE">
+<![%seg.module;[
+<!ENTITY % local.seg.attrib "">
+<!ENTITY % seg.role.attrib "%role.attrib;">
+
+<!ENTITY % seg.element "INCLUDE">
+<![%seg.element;[
+<!--doc:An element of a list item in a segmented list.-->
+<!ELEMENT seg %ho; (%para.char.mix;)*>
+<!--end of seg.element-->]]>
+
+<!ENTITY % seg.attlist "INCLUDE">
+<![%seg.attlist;[
+<!ATTLIST seg
+ %common.attrib;
+ %seg.role.attrib;
+ %local.seg.attrib;
+>
+<!--end of seg.attlist-->]]>
+<!--end of seg.module-->]]>
+<!--end of segmentedlist.content.module-->]]>
+
+<!-- SimpleList ....................... -->
+
+<!ENTITY % simplelist.content.module "INCLUDE">
+<![%simplelist.content.module;[
+<!ENTITY % simplelist.module "INCLUDE">
+<![%simplelist.module;[
+<!ENTITY % local.simplelist.attrib "">
+<!ENTITY % simplelist.role.attrib "%role.attrib;">
+
+<!ENTITY % simplelist.element "INCLUDE">
+<![%simplelist.element;[
+<!--doc:An undecorated list of single words or short phrases.-->
+<!ELEMENT simplelist %ho; (member+)>
+<!--end of simplelist.element-->]]>
+
+<!-- Columns: The number of columns the array should contain -->
+<!-- Type: How the Members of the SimpleList should be
+ formatted: Inline (members separated with commas etc.
+ inline), Vert (top to bottom in n Columns), or Horiz (in
+ the direction of text flow) in n Columns. If Column
+ is 1 or implied, Type=Vert and Type=Horiz give the same
+ results. -->
+
+
+<!ENTITY % simplelist.attlist "INCLUDE">
+<![%simplelist.attlist;[
+<!ATTLIST simplelist
+ columns CDATA #IMPLIED
+ type (inline
+ |vert
+ |horiz) "vert"
+ %common.attrib;
+ %simplelist.role.attrib;
+ %local.simplelist.attrib;
+>
+<!--end of simplelist.attlist-->]]>
+<!--end of simplelist.module-->]]>
+
+<!ENTITY % member.module "INCLUDE">
+<![%member.module;[
+<!ENTITY % local.member.attrib "">
+<!ENTITY % member.role.attrib "%role.attrib;">
+
+<!ENTITY % member.element "INCLUDE">
+<![%member.element;[
+<!--doc:An element of a simple list.-->
+<!ELEMENT member %ho; (%para.char.mix;)*>
+<!--end of member.element-->]]>
+
+<!ENTITY % member.attlist "INCLUDE">
+<![%member.attlist;[
+<!ATTLIST member
+ %common.attrib;
+ %member.role.attrib;
+ %local.member.attrib;
+>
+<!--end of member.attlist-->]]>
+<!--end of member.module-->]]>
+<!--end of simplelist.content.module-->]]>
+
+<!-- VariableList ..................... -->
+
+<!ENTITY % variablelist.content.module "INCLUDE">
+<![%variablelist.content.module;[
+<!ENTITY % variablelist.module "INCLUDE">
+<![%variablelist.module;[
+<!ENTITY % local.variablelist.attrib "">
+<!ENTITY % variablelist.role.attrib "%role.attrib;">
+
+<!ENTITY % variablelist.element "INCLUDE">
+<![%variablelist.element;[
+<!--doc:A list in which each entry is composed of a set of one or more terms and an associated description.-->
+<!ELEMENT variablelist %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (%listpreamble.mix;)*, varlistentry+)>
+<!--end of variablelist.element-->]]>
+
+<!-- TermLength: Length beyond which the presentation engine
+ may consider the Term too long and select an alternate
+ presentation of the Term and, or, its associated ListItem. -->
+
+
+<!ENTITY % variablelist.attlist "INCLUDE">
+<![%variablelist.attlist;[
+<!ATTLIST variablelist
+ termlength CDATA #IMPLIED
+ spacing (normal
+ |compact) #IMPLIED
+ %common.attrib;
+ %variablelist.role.attrib;
+ %local.variablelist.attrib;
+>
+<!--end of variablelist.attlist-->]]>
+<!--end of variablelist.module-->]]>
+
+<!ENTITY % varlistentry.module "INCLUDE">
+<![%varlistentry.module;[
+<!ENTITY % local.varlistentry.attrib "">
+<!ENTITY % varlistentry.role.attrib "%role.attrib;">
+
+<!ENTITY % varlistentry.element "INCLUDE">
+<![%varlistentry.element;[
+<!--doc:A wrapper for a set of terms and the associated description in a variable list.-->
+<!ELEMENT varlistentry %ho; (term+, listitem)>
+<!--end of varlistentry.element-->]]>
+
+<!ENTITY % varlistentry.attlist "INCLUDE">
+<![%varlistentry.attlist;[
+<!ATTLIST varlistentry
+ %common.attrib;
+ %varlistentry.role.attrib;
+ %local.varlistentry.attrib;
+>
+<!--end of varlistentry.attlist-->]]>
+<!--end of varlistentry.module-->]]>
+
+<!ENTITY % term.module "INCLUDE">
+<![%term.module;[
+<!ENTITY % local.term.attrib "">
+<!ENTITY % term.role.attrib "%role.attrib;">
+
+<!ENTITY % term.element "INCLUDE">
+<![%term.element;[
+<!--doc:The word or phrase being defined or described in a variable list.-->
+<!ELEMENT term %ho; (%para.char.mix;)*>
+<!--end of term.element-->]]>
+
+<!ENTITY % term.attlist "INCLUDE">
+<![%term.attlist;[
+<!ATTLIST term
+ %common.attrib;
+ %term.role.attrib;
+ %local.term.attrib;
+>
+<!--end of term.attlist-->]]>
+<!--end of term.module-->]]>
+
+<!-- ListItem (defined above)-->
+<!--end of variablelist.content.module-->]]>
+
+<!-- CalloutList ...................... -->
+
+<!ENTITY % calloutlist.content.module "INCLUDE">
+<![%calloutlist.content.module;[
+<!ENTITY % calloutlist.module "INCLUDE">
+<![%calloutlist.module;[
+<!ENTITY % local.calloutlist.attrib "">
+<!ENTITY % calloutlist.role.attrib "%role.attrib;">
+
+<!ENTITY % calloutlist.element "INCLUDE">
+<![%calloutlist.element;[
+<!--doc:A list of Callouts.-->
+<!ELEMENT calloutlist %ho; ((%formalobject.title.content;)?, callout+)>
+<!--end of calloutlist.element-->]]>
+
+<!ENTITY % calloutlist.attlist "INCLUDE">
+<![%calloutlist.attlist;[
+<!ATTLIST calloutlist
+ %common.attrib;
+ %calloutlist.role.attrib;
+ %local.calloutlist.attrib;
+>
+<!--end of calloutlist.attlist-->]]>
+<!--end of calloutlist.module-->]]>
+
+<!ENTITY % callout.module "INCLUDE">
+<![%callout.module;[
+<!ENTITY % local.callout.attrib "">
+<!ENTITY % callout.role.attrib "%role.attrib;">
+
+<!ENTITY % callout.element "INCLUDE">
+<![%callout.element;[
+<!--doc:A &ldquo;called out&rdquo; description of a marked Area.-->
+<!ELEMENT callout %ho; ((%component.mix;)+)>
+<!--end of callout.element-->]]>
+
+<!-- AreaRefs: IDs of one or more Areas or AreaSets described
+ by this Callout -->
+
+
+<!ENTITY % callout.attlist "INCLUDE">
+<![%callout.attlist;[
+<!ATTLIST callout
+ arearefs IDREFS #REQUIRED
+ %common.attrib;
+ %callout.role.attrib;
+ %local.callout.attrib;
+>
+<!--end of callout.attlist-->]]>
+<!--end of callout.module-->]]>
+<!--end of calloutlist.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Objects .............................................................. -->
+
+<!-- Examples etc. .................... -->
+
+<!ENTITY % example.module "INCLUDE">
+<![%example.module;[
+<!ENTITY % local.example.attrib "">
+<!ENTITY % example.role.attrib "%role.attrib;">
+
+<!ENTITY % example.element "INCLUDE">
+<![%example.element;[
+<!--doc:A formal example, with a title.-->
+<!ELEMENT example %ho; (blockinfo?, (%formalobject.title.content;), (%example.mix;)+)
+ %formal.exclusion;>
+<!--end of example.element-->]]>
+
+<!ENTITY % example.attlist "INCLUDE">
+<![%example.attlist;[
+<!ATTLIST example
+ floatstyle CDATA #IMPLIED
+ %label.attrib;
+ %width.attrib;
+ %common.attrib;
+ %example.role.attrib;
+ %local.example.attrib;
+>
+<!--end of example.attlist-->]]>
+<!--end of example.module-->]]>
+
+<!ENTITY % informalexample.module "INCLUDE">
+<![%informalexample.module;[
+<!ENTITY % local.informalexample.attrib "">
+<!ENTITY % informalexample.role.attrib "%role.attrib;">
+
+<!ENTITY % informalexample.element "INCLUDE">
+<![%informalexample.element;[
+<!--doc:A displayed example without a title.-->
+<!ELEMENT informalexample %ho; (blockinfo?, (%example.mix;)+)>
+<!--end of informalexample.element-->]]>
+
+<!ENTITY % informalexample.attlist "INCLUDE">
+<![%informalexample.attlist;[
+<!ATTLIST informalexample
+ floatstyle CDATA #IMPLIED
+ %width.attrib;
+ %common.attrib;
+ %informalexample.role.attrib;
+ %local.informalexample.attrib;
+>
+<!--end of informalexample.attlist-->]]>
+<!--end of informalexample.module-->]]>
+
+<!ENTITY % programlistingco.module "INCLUDE">
+<![%programlistingco.module;[
+<!ENTITY % local.programlistingco.attrib "">
+<!ENTITY % programlistingco.role.attrib "%role.attrib;">
+
+<!ENTITY % programlistingco.element "INCLUDE">
+<![%programlistingco.element;[
+<!--doc:A program listing with associated areas used in callouts.-->
+<!ELEMENT programlistingco %ho; (areaspec, programlisting, calloutlist*)>
+<!--end of programlistingco.element-->]]>
+
+<!ENTITY % programlistingco.attlist "INCLUDE">
+<![%programlistingco.attlist;[
+<!ATTLIST programlistingco
+ %common.attrib;
+ %programlistingco.role.attrib;
+ %local.programlistingco.attrib;
+>
+<!--end of programlistingco.attlist-->]]>
+<!-- CalloutList (defined above in Lists)-->
+<!--end of informalexample.module-->]]>
+
+<!ENTITY % areaspec.content.module "INCLUDE">
+<![%areaspec.content.module;[
+<!ENTITY % areaspec.module "INCLUDE">
+<![%areaspec.module;[
+<!ENTITY % local.areaspec.attrib "">
+<!ENTITY % areaspec.role.attrib "%role.attrib;">
+
+<!ENTITY % areaspec.element "INCLUDE">
+<![%areaspec.element;[
+<!--doc:A collection of regions in a graphic or code example.-->
+<!ELEMENT areaspec %ho; ((area|areaset)+)>
+<!--end of areaspec.element-->]]>
+
+<!-- Units: global unit of measure in which coordinates in
+ this spec are expressed:
+
+ - CALSPair "x1,y1 x2,y2": lower-left and upper-right
+ coordinates in a rectangle describing repro area in which
+ graphic is placed, where X and Y dimensions are each some
+ number 0..10000 (taken from CALS graphic attributes)
+
+ - LineColumn "line column": line number and column number
+ at which to start callout text in "linespecific" content
+
+ - LineRange "startline endline": whole lines from startline
+ to endline in "linespecific" content
+
+ - LineColumnPair "line1 col1 line2 col2": starting and ending
+ points of area in "linespecific" content that starts at
+ first position and ends at second position (including the
+ beginnings of any intervening lines)
+
+ - Other: directive to look at value of OtherUnits attribute
+ to get implementation-specific keyword
+
+ The default is implementation-specific; usually dependent on
+ the parent element (GraphicCO gets CALSPair, ProgramListingCO
+ and ScreenCO get LineColumn) -->
+<!-- OtherUnits: User-defined units -->
+
+
+<!ENTITY % areaspec.attlist "INCLUDE">
+<![%areaspec.attlist;[
+<!ATTLIST areaspec
+ units (calspair
+ |linecolumn
+ |linerange
+ |linecolumnpair
+ |other) #IMPLIED
+ otherunits NMTOKEN #IMPLIED
+ %common.attrib;
+ %areaspec.role.attrib;
+ %local.areaspec.attrib;
+>
+<!--end of areaspec.attlist-->]]>
+<!--end of areaspec.module-->]]>
+
+<!ENTITY % area.module "INCLUDE">
+<![%area.module;[
+<!ENTITY % local.area.attrib "">
+<!ENTITY % area.role.attrib "%role.attrib;">
+
+<!ENTITY % area.element "INCLUDE">
+<![%area.element;[
+<!--doc:A region defined for a Callout in a graphic or code example.-->
+<!ELEMENT area %ho; EMPTY>
+<!--end of area.element-->]]>
+
+<!-- bug number/symbol override or initialization -->
+<!-- to any related information -->
+<!-- Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec -->
+<!-- OtherUnits: User-defined units -->
+
+
+<!ENTITY % area.attlist "INCLUDE">
+<![%area.attlist;[
+<!ATTLIST area
+ %label.attrib;
+ %linkends.attrib;
+ units (calspair
+ |linecolumn
+ |linerange
+ |linecolumnpair
+ |other) #IMPLIED
+ otherunits NMTOKEN #IMPLIED
+ coords CDATA #REQUIRED
+ %idreq.common.attrib;
+ %area.role.attrib;
+ %local.area.attrib;
+>
+<!--end of area.attlist-->]]>
+<!--end of area.module-->]]>
+
+<!ENTITY % areaset.module "INCLUDE">
+<![%areaset.module;[
+<!ENTITY % local.areaset.attrib "">
+<!ENTITY % areaset.role.attrib "%role.attrib;">
+
+<!ENTITY % areaset.element "INCLUDE">
+<![%areaset.element;[
+<!--doc:A set of related areas in a graphic or code example.-->
+<!ELEMENT areaset %ho; (area+)>
+<!--end of areaset.element-->]]>
+
+<!-- bug number/symbol override or initialization -->
+<!-- Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSpec -->
+
+
+<!ENTITY % areaset.attlist "INCLUDE">
+<![%areaset.attlist;[
+<!ATTLIST areaset
+ %label.attrib;
+ units (calspair
+ |linecolumn
+ |linerange
+ |linecolumnpair
+ |other) #IMPLIED
+ otherunits NMTOKEN #IMPLIED
+ coords CDATA #REQUIRED
+ %idreq.common.attrib;
+ %areaset.role.attrib;
+ %local.areaset.attrib;
+>
+<!--end of areaset.attlist-->]]>
+<!--end of areaset.module-->]]>
+<!--end of areaspec.content.module-->]]>
+
+<!ENTITY % programlisting.module "INCLUDE">
+<![%programlisting.module;[
+<!ENTITY % local.programlisting.attrib "">
+<!ENTITY % programlisting.role.attrib "%role.attrib;">
+
+<!ENTITY % programlisting.element "INCLUDE">
+<![%programlisting.element;[
+<!--doc:A literal listing of all or part of a program.-->
+<!ELEMENT programlisting %ho; (%para.char.mix;|co|coref|lineannotation|textobject)*>
+<!--end of programlisting.element-->]]>
+
+<!ENTITY % programlisting.attlist "INCLUDE">
+<![%programlisting.attlist;[
+<!ATTLIST programlisting
+ %width.attrib;
+ %linespecific.attrib;
+ %common.attrib;
+ %programlisting.role.attrib;
+ %local.programlisting.attrib;
+>
+<!--end of programlisting.attlist-->]]>
+<!--end of programlisting.module-->]]>
+
+<!ENTITY % literallayout.module "INCLUDE">
+<![%literallayout.module;[
+<!ENTITY % local.literallayout.attrib "">
+<!ENTITY % literallayout.role.attrib "%role.attrib;">
+
+<!ENTITY % literallayout.element "INCLUDE">
+<![%literallayout.element;[
+<!--doc:A block of text in which line breaks and white space are to be reproduced faithfully.-->
+<!ELEMENT literallayout %ho; (%para.char.mix;|co|coref|textobject|lineannotation)*>
+<!--end of literallayout.element-->]]>
+
+<!ENTITY % literallayout.attlist "INCLUDE">
+<![%literallayout.attlist;[
+<!ATTLIST literallayout
+ %width.attrib;
+ %linespecific.attrib;
+ class (monospaced|normal) "normal"
+ %common.attrib;
+ %literallayout.role.attrib;
+ %local.literallayout.attrib;
+>
+<!--end of literallayout.attlist-->]]>
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!--end of literallayout.module-->]]>
+
+<!ENTITY % sconstruct.module "INCLUDE">
+<![%sconstruct.module;[
+<!ENTITY % local.sconstruct.attrib "">
+<!ENTITY % sconstruct.role.attrib "%role.attrib;">
+
+<!ENTITY % sconstruct.element "INCLUDE">
+<![%sconstruct.element;[
+<!--doc:Text that an SCons user sees or might see on a computer screen.-->
+<!ELEMENT sconstruct %ho; (%para.char.mix;|co|coref|textobject|lineannotation)*>
+<!--end of sconstruct.element-->]]>
+
+<!ENTITY % sconstruct.attlist "INCLUDE">
+<![%sconstruct.attlist;[
+<!ATTLIST sconstruct
+ %width.attrib;
+ %linespecific.attrib;
+ %common.attrib;
+ %sconstruct.role.attrib;
+ %local.sconstruct.attrib;
+>
+<!--end of sconstruct.attlist-->]]>
+<!--end of sconstruct.module-->]]>
+
+<!ENTITY % scons_output.module "INCLUDE">
+<![%scons_output.module;[
+<!ENTITY % local.scons_output.attrib "">
+<!ENTITY % scons_output.role.attrib "%role.attrib;">
+
+<!ENTITY % scons_output.element "INCLUDE">
+<![%scons_output.element;[
+<!--doc:The list of scons_output_commands to execute.-->
+<!ELEMENT scons_output %ho; (scons_output_command+)>
+
+<!--end of scons_output.element-->]]>
+
+<!ENTITY % scons_output.attlist "INCLUDE">
+<![%scons_output.attlist;[
+<!ATTLIST scons_output
+ tools CDATA #IMPLIED
+ example CDATA #IMPLIED
+ os CDATA #IMPLIED
+ %scons_output.role.attrib;
+ %local.scons_output.attrib;
+>
+<!--end of scons_output.attlist-->]]>
+<!--end of scons_output.module-->]]>
+
+<!ENTITY % scons_output_command.module "INCLUDE">
+<![%scons_output_command.module;[
+<!ENTITY % local.scons_output_command.attrib "">
+<!ENTITY % scons_output_command.role.attrib "%role.attrib;">
+
+<!ENTITY % scons_output_command.element "INCLUDE">
+<![%scons_output_command.element;[
+<!--doc:A single SCons command to execute.-->
+<!ELEMENT scons_output_command %ho; (%cptr.char.mix;)*>
+
+<!--end of scons_output_command.element-->]]>
+
+<!ENTITY % scons_output_command.attlist "INCLUDE">
+<![%scons_output_command.attlist;[
+<!ATTLIST scons_output_command
+ edit CDATA #IMPLIED
+ environment CDATA #IMPLIED
+ output CDATA #IMPLIED
+ %scons_output_command.role.attrib;
+ %local.scons_output_command.attrib;
+>
+<!--end of scons_output_command.attlist-->]]>
+<!--end of scons_output_command.module-->]]>
+
+
+<!ENTITY % scons_example_file.module "INCLUDE">
+<![%scons_example_file.module;[
+<!ENTITY % local.scons_example_file.attrib "">
+<!ENTITY % scons_example_file.role.attrib "%role.attrib;">
+
+<!ENTITY % scons_example_file.element "INCLUDE">
+<![%scons_example_file.element;[
+<!--doc:A single SCons example file.-->
+<!ELEMENT scons_example_file %ho; (%cptr.char.mix;)*>
+
+<!--end of scons_example_file.element-->]]>
+
+<!ENTITY % scons_example_file.attlist "INCLUDE">
+<![%scons_example_file.attlist;[
+<!ATTLIST scons_example_file
+ example CDATA #IMPLIED
+ name CDATA #IMPLIED
+ %scons_example_file.role.attrib;
+ %local.scons_example_file.attrib;
+>
+<!--end of scons_example_file.attlist-->]]>
+<!--end of scons_example_file.module-->]]>
+
+
+<!ENTITY % scons_example.module "INCLUDE">
+<![%scons_example.module;[
+<!ENTITY % local.scons_example.attrib "">
+<!ENTITY % scons_example.role.attrib "%role.attrib;">
+
+<!ENTITY % scons_example.element "INCLUDE">
+<![%scons_example.element;[
+<!--doc:An SCons example.-->
+<!ELEMENT scons_example %ho; ((file|directory)*)>
+
+<!--end of scons_example.element-->]]>
+
+<!ENTITY % scons_example.attlist "INCLUDE">
+<![%scons_example.attlist;[
+<!ATTLIST scons_example
+ name CDATA #IMPLIED
+ printme CDATA #IMPLIED
+ %scons_example.role.attrib;
+ %local.scons_example.attrib;
+>
+<!--end of scons_example.attlist-->]]>
+<!--end of scons_example.module-->]]>
+
+
+<!ENTITY % directory.module "INCLUDE">
+<![%directory.module;[
+<!ENTITY % local.directory.attrib "">
+<!ENTITY % directory.role.attrib "%role.attrib;">
+
+<!ENTITY % directory.element "INCLUDE">
+<![%directory.element;[
+<!--doc:A single SCons example directory.-->
+<!ELEMENT directory %ho; (%cptr.char.mix;)*>
+
+<!--end of directory.element-->]]>
+
+<!ENTITY % directory.attlist "INCLUDE">
+<![%directory.attlist;[
+<!ATTLIST directory
+ name CDATA #IMPLIED
+ %directory.role.attrib;
+ %local.directory.attrib;
+>
+<!--end of directory.attlist-->]]>
+<!--end of directory.module-->]]>
+
+<!ENTITY % file.module "INCLUDE">
+<![%file.module;[
+<!ENTITY % local.file.attrib "">
+<!ENTITY % file.role.attrib "%role.attrib;">
+
+<!ENTITY % file.element "INCLUDE">
+<![%file.element;[
+<!--doc:A single SCons example file.-->
+<!ELEMENT file %ho; (%cptr.char.mix;)*>
+
+<!--end of file.element-->]]>
+
+<!ENTITY % file.attlist "INCLUDE">
+<![%file.attlist;[
+<!ATTLIST file
+ name CDATA #IMPLIED
+ chmod CDATA #IMPLIED
+ printme CDATA #IMPLIED
+ %file.role.attrib;
+ %local.file.attrib;
+>
+<!--end of file.attlist-->]]>
+<!--end of file.module-->]]>
+
+
+<!ENTITY % screenco.module "INCLUDE">
+<![%screenco.module;[
+<!ENTITY % local.screenco.attrib "">
+<!ENTITY % screenco.role.attrib "%role.attrib;">
+
+<!ENTITY % screenco.element "INCLUDE">
+<![%screenco.element;[
+<!--doc:A screen with associated areas used in callouts.-->
+<!ELEMENT screenco %ho; (areaspec, screen, calloutlist*)>
+<!--end of screenco.element-->]]>
+
+<!ENTITY % screenco.attlist "INCLUDE">
+<![%screenco.attlist;[
+<!ATTLIST screenco
+ %common.attrib;
+ %screenco.role.attrib;
+ %local.screenco.attrib;
+>
+<!--end of screenco.attlist-->]]>
+<!-- AreaSpec (defined above)-->
+<!-- CalloutList (defined above in Lists)-->
+<!--end of screenco.module-->]]>
+
+<!ENTITY % screen.module "INCLUDE">
+<![%screen.module;[
+<!ENTITY % local.screen.attrib "">
+<!ENTITY % screen.role.attrib "%role.attrib;">
+
+<!ENTITY % screen.element "INCLUDE">
+<![%screen.element;[
+<!--doc:Text that a user sees or might see on a computer screen.-->
+<!ELEMENT screen %ho; (%para.char.mix;|co|coref|textobject|lineannotation)*>
+<!--end of screen.element-->]]>
+
+<!ENTITY % screen.attlist "INCLUDE">
+<![%screen.attlist;[
+<!ATTLIST screen
+ %width.attrib;
+ %linespecific.attrib;
+ %common.attrib;
+ %screen.role.attrib;
+ %local.screen.attrib;
+>
+<!--end of screen.attlist-->]]>
+<!--end of screen.module-->]]>
+
+<!ENTITY % screenshot.content.module "INCLUDE">
+<![%screenshot.content.module;[
+<!ENTITY % screenshot.module "INCLUDE">
+<![%screenshot.module;[
+<!ENTITY % local.screenshot.attrib "">
+<!ENTITY % screenshot.role.attrib "%role.attrib;">
+
+<!ENTITY % screenshot.element "INCLUDE">
+<![%screenshot.element;[
+<!--doc:A representation of what the user sees or might see on a computer screen.-->
+<!ELEMENT screenshot %ho; (screeninfo?,
+ (graphic|graphicco
+ |mediaobject|mediaobjectco))>
+<!--end of screenshot.element-->]]>
+
+<!ENTITY % screenshot.attlist "INCLUDE">
+<![%screenshot.attlist;[
+<!ATTLIST screenshot
+ %common.attrib;
+ %screenshot.role.attrib;
+ %local.screenshot.attrib;
+>
+<!--end of screenshot.attlist-->]]>
+<!--end of screenshot.module-->]]>
+
+<!ENTITY % screeninfo.module "INCLUDE">
+<![%screeninfo.module;[
+<!ENTITY % local.screeninfo.attrib "">
+<!ENTITY % screeninfo.role.attrib "%role.attrib;">
+
+<!ENTITY % screeninfo.element "INCLUDE">
+<![%screeninfo.element;[
+<!--doc:Information about how a screen shot was produced.-->
+<!ELEMENT screeninfo %ho; (%para.char.mix;)*
+ %ubiq.exclusion;>
+<!--end of screeninfo.element-->]]>
+
+<!ENTITY % screeninfo.attlist "INCLUDE">
+<![%screeninfo.attlist;[
+<!ATTLIST screeninfo
+ %common.attrib;
+ %screeninfo.role.attrib;
+ %local.screeninfo.attrib;
+>
+<!--end of screeninfo.attlist-->]]>
+<!--end of screeninfo.module-->]]>
+<!--end of screenshot.content.module-->]]>
+
+<!-- Figures etc. ..................... -->
+
+<!ENTITY % figure.module "INCLUDE">
+<![%figure.module;[
+<!ENTITY % local.figure.attrib "">
+<!ENTITY % figure.role.attrib "%role.attrib;">
+
+<!ENTITY % figure.element "INCLUDE">
+<![%figure.element;[
+<!--doc:A formal figure, generally an illustration, with a title.-->
+<!ELEMENT figure %ho; (blockinfo?, (%formalobject.title.content;),
+ (%figure.mix; | %link.char.class;)+)>
+<!--end of figure.element-->]]>
+
+<!-- Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default) -->
+
+
+<!ENTITY % figure.attlist "INCLUDE">
+<![%figure.attlist;[
+<!ATTLIST figure
+ float %yesorno.attvals; '0'
+ floatstyle CDATA #IMPLIED
+ pgwide %yesorno.attvals; #IMPLIED
+ %label.attrib;
+ %common.attrib;
+ %figure.role.attrib;
+ %local.figure.attrib;
+>
+<!--end of figure.attlist-->]]>
+<!--end of figure.module-->]]>
+
+<!ENTITY % informalfigure.module "INCLUDE">
+<![ %informalfigure.module; [
+<!ENTITY % local.informalfigure.attrib "">
+<!ENTITY % informalfigure.role.attrib "%role.attrib;">
+
+<!ENTITY % informalfigure.element "INCLUDE">
+<![ %informalfigure.element; [
+<!--doc:A untitled figure.-->
+<!ELEMENT informalfigure %ho; (blockinfo?, (%figure.mix; | %link.char.class;)+)>
+<!--end of informalfigure.element-->]]>
+
+<!ENTITY % informalfigure.attlist "INCLUDE">
+<![ %informalfigure.attlist; [
+<!--
+Float: Whether the Figure is supposed to be rendered
+where convenient (yes (1) value) or at the place it occurs
+in the text (no (0) value, the default)
+-->
+<!ATTLIST informalfigure
+ float %yesorno.attvals; "0"
+ floatstyle CDATA #IMPLIED
+ pgwide %yesorno.attvals; #IMPLIED
+ %label.attrib;
+ %common.attrib;
+ %informalfigure.role.attrib;
+ %local.informalfigure.attrib;
+>
+<!--end of informalfigure.attlist-->]]>
+<!--end of informalfigure.module-->]]>
+
+<!ENTITY % graphicco.module "INCLUDE">
+<![%graphicco.module;[
+<!ENTITY % local.graphicco.attrib "">
+<!ENTITY % graphicco.role.attrib "%role.attrib;">
+
+<!ENTITY % graphicco.element "INCLUDE">
+<![%graphicco.element;[
+<!--doc:A graphic that contains callout areas.-->
+<!ELEMENT graphicco %ho; (areaspec, graphic, calloutlist*)>
+<!--end of graphicco.element-->]]>
+
+<!ENTITY % graphicco.attlist "INCLUDE">
+<![%graphicco.attlist;[
+<!ATTLIST graphicco
+ %common.attrib;
+ %graphicco.role.attrib;
+ %local.graphicco.attrib;
+>
+<!--end of graphicco.attlist-->]]>
+<!-- AreaSpec (defined above in Examples)-->
+<!-- CalloutList (defined above in Lists)-->
+<!--end of graphicco.module-->]]>
+
+<!-- Graphical data can be the content of Graphic, or you can reference
+ an external file either as an entity (Entitref) or a filename
+ (Fileref). -->
+
+<!ENTITY % graphic.module "INCLUDE">
+<![%graphic.module;[
+<!ENTITY % local.graphic.attrib "">
+<!ENTITY % graphic.role.attrib "%role.attrib;">
+
+<!ENTITY % graphic.element "INCLUDE">
+<![%graphic.element;[
+<!--doc:A displayed graphical object (not an inline).-->
+<!ELEMENT graphic %ho; EMPTY>
+<!--end of graphic.element-->]]>
+
+<!ENTITY % graphic.attlist "INCLUDE">
+<![%graphic.attlist;[
+<!ATTLIST graphic
+ %graphics.attrib;
+ %common.attrib;
+ %graphic.role.attrib;
+ %local.graphic.attrib;
+>
+<!--end of graphic.attlist-->]]>
+<!--end of graphic.module-->]]>
+
+<!ENTITY % inlinegraphic.module "INCLUDE">
+<![%inlinegraphic.module;[
+<!ENTITY % local.inlinegraphic.attrib "">
+<!ENTITY % inlinegraphic.role.attrib "%role.attrib;">
+
+<!ENTITY % inlinegraphic.element "INCLUDE">
+<![%inlinegraphic.element;[
+<!--doc:An object containing or pointing to graphical data that will be rendered inline.-->
+<!ELEMENT inlinegraphic %ho; EMPTY>
+<!--end of inlinegraphic.element-->]]>
+
+<!ENTITY % inlinegraphic.attlist "INCLUDE">
+<![%inlinegraphic.attlist;[
+<!ATTLIST inlinegraphic
+ %graphics.attrib;
+ %common.attrib;
+ %inlinegraphic.role.attrib;
+ %local.inlinegraphic.attrib;
+>
+<!--end of inlinegraphic.attlist-->]]>
+<!--end of inlinegraphic.module-->]]>
+
+<!ENTITY % mediaobject.content.module "INCLUDE">
+<![ %mediaobject.content.module; [
+
+<!ENTITY % mediaobject.module "INCLUDE">
+<![ %mediaobject.module; [
+<!ENTITY % local.mediaobject.attrib "">
+<!ENTITY % mediaobject.role.attrib "%role.attrib;">
+
+<!ENTITY % mediaobject.element "INCLUDE">
+<![ %mediaobject.element; [
+<!--doc:A displayed media object (video, audio, image, etc.).-->
+<!ELEMENT mediaobject %ho; (objectinfo?,
+ (%mediaobject.mix;)+,
+ caption?)>
+<!--end of mediaobject.element-->]]>
+
+<!ENTITY % mediaobject.attlist "INCLUDE">
+<![ %mediaobject.attlist; [
+<!ATTLIST mediaobject
+ %common.attrib;
+ %mediaobject.role.attrib;
+ %local.mediaobject.attrib;
+>
+<!--end of mediaobject.attlist-->]]>
+<!--end of mediaobject.module-->]]>
+
+<!ENTITY % inlinemediaobject.module "INCLUDE">
+<![ %inlinemediaobject.module; [
+<!ENTITY % local.inlinemediaobject.attrib "">
+<!ENTITY % inlinemediaobject.role.attrib "%role.attrib;">
+
+<!ENTITY % inlinemediaobject.element "INCLUDE">
+<![ %inlinemediaobject.element; [
+<!--doc:An inline media object (video, audio, image, and so on).-->
+<!ELEMENT inlinemediaobject %ho; (objectinfo?,
+ (%mediaobject.mix;)+)>
+<!--end of inlinemediaobject.element-->]]>
+
+<!ENTITY % inlinemediaobject.attlist "INCLUDE">
+<![ %inlinemediaobject.attlist; [
+<!ATTLIST inlinemediaobject
+ %common.attrib;
+ %inlinemediaobject.role.attrib;
+ %local.inlinemediaobject.attrib;
+>
+<!--end of inlinemediaobject.attlist-->]]>
+<!--end of inlinemediaobject.module-->]]>
+
+<!ENTITY % videoobject.module "INCLUDE">
+<![ %videoobject.module; [
+<!ENTITY % local.videoobject.attrib "">
+<!ENTITY % videoobject.role.attrib "%role.attrib;">
+
+<!ENTITY % videoobject.element "INCLUDE">
+<![ %videoobject.element; [
+<!--doc:A wrapper for video data and its associated meta-information.-->
+<!ELEMENT videoobject %ho; (objectinfo?, videodata)>
+<!--end of videoobject.element-->]]>
+
+<!ENTITY % videoobject.attlist "INCLUDE">
+<![ %videoobject.attlist; [
+<!ATTLIST videoobject
+ %common.attrib;
+ %videoobject.role.attrib;
+ %local.videoobject.attrib;
+>
+<!--end of videoobject.attlist-->]]>
+<!--end of videoobject.module-->]]>
+
+<!ENTITY % audioobject.module "INCLUDE">
+<![ %audioobject.module; [
+<!ENTITY % local.audioobject.attrib "">
+<!ENTITY % audioobject.role.attrib "%role.attrib;">
+
+<!ENTITY % audioobject.element "INCLUDE">
+<![ %audioobject.element; [
+<!--doc:A wrapper for audio data and its associated meta-information.-->
+<!ELEMENT audioobject %ho; (objectinfo?, audiodata)>
+<!--end of audioobject.element-->]]>
+
+<!ENTITY % audioobject.attlist "INCLUDE">
+<![ %audioobject.attlist; [
+<!ATTLIST audioobject
+ %common.attrib;
+ %audioobject.role.attrib;
+ %local.audioobject.attrib;
+>
+<!--end of audioobject.attlist-->]]>
+<!--end of audioobject.module-->]]>
+
+<!ENTITY % imageobject.module "INCLUDE">
+<![ %imageobject.module; [
+<!ENTITY % local.imageobject.attrib "">
+<!ENTITY % imageobject.role.attrib "%role.attrib;">
+
+<!ENTITY % imageobject.element "INCLUDE">
+<![ %imageobject.element; [
+<!--doc:A wrapper for image data and its associated meta-information.-->
+<!ELEMENT imageobject %ho; (objectinfo?, imagedata)>
+<!--end of imageobject.element-->]]>
+
+<!ENTITY % imageobject.attlist "INCLUDE">
+<![ %imageobject.attlist; [
+<!ATTLIST imageobject
+ %common.attrib;
+ %imageobject.role.attrib;
+ %local.imageobject.attrib;
+>
+<!--end of imageobject.attlist-->]]>
+<!--end of imageobject.module-->]]>
+
+<!ENTITY % textobject.module "INCLUDE">
+<![ %textobject.module; [
+<!ENTITY % local.textobject.attrib "">
+<!ENTITY % textobject.role.attrib "%role.attrib;">
+
+<!ENTITY % textobject.element "INCLUDE">
+<![ %textobject.element; [
+<!--doc:A wrapper for a text description of an object and its associated meta-information.-->
+<!ELEMENT textobject %ho; (objectinfo?, (phrase|textdata|(%textobject.mix;)+))>
+<!--end of textobject.element-->]]>
+
+<!ENTITY % textobject.attlist "INCLUDE">
+<![ %textobject.attlist; [
+<!ATTLIST textobject
+ %common.attrib;
+ %textobject.role.attrib;
+ %local.textobject.attrib;
+>
+<!--end of textobject.attlist-->]]>
+<!--end of textobject.module-->]]>
+
+<!ENTITY % objectinfo.module "INCLUDE">
+<![ %objectinfo.module; [
+<!ENTITY % local.objectinfo.attrib "">
+<!ENTITY % objectinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % objectinfo.element "INCLUDE">
+<![ %objectinfo.element; [
+<!--doc:Meta-information for an object.-->
+<!ELEMENT objectinfo %ho; ((%info.class;)+)
+ %beginpage.exclusion;>
+<!--end of objectinfo.element-->]]>
+
+<!ENTITY % objectinfo.attlist "INCLUDE">
+<![ %objectinfo.attlist; [
+<!ATTLIST objectinfo
+ %common.attrib;
+ %objectinfo.role.attrib;
+ %local.objectinfo.attrib;
+>
+<!--end of objectinfo.attlist-->]]>
+<!--end of objectinfo.module-->]]>
+
+<!--EntityRef: Name of an external entity containing the content
+ of the object data-->
+<!--FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the object data-->
+<!--Format: Notation of the element content, if any-->
+<!--SrcCredit: Information about the source of the image-->
+<!ENTITY % local.objectdata.attrib "">
+<!ENTITY % objectdata.attrib
+ "
+ entityref ENTITY #IMPLIED
+ fileref CDATA #IMPLIED
+ format (%notation.class;)
+ #IMPLIED
+ srccredit CDATA #IMPLIED
+ %local.objectdata.attrib;"
+>
+
+<!ENTITY % videodata.module "INCLUDE">
+<![ %videodata.module; [
+<!ENTITY % local.videodata.attrib "">
+<!ENTITY % videodata.role.attrib "%role.attrib;">
+
+<!ENTITY % videodata.element "INCLUDE">
+<![ %videodata.element; [
+<!--doc:Pointer to external video data.-->
+<!ELEMENT videodata %ho; EMPTY>
+<!--end of videodata.element-->]]>
+
+<!ENTITY % videodata.attlist "INCLUDE">
+<![ %videodata.attlist; [
+
+<!--Width: Same as CALS reprowid (desired width)-->
+<!--Depth: Same as CALS reprodep (desired depth)-->
+<!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific-->
+<!--Scale: Conflation of CALS hscale and vscale-->
+<!--Scalefit: Same as CALS scalefit-->
+<!ATTLIST videodata
+ width CDATA #IMPLIED
+ contentwidth CDATA #IMPLIED
+ depth CDATA #IMPLIED
+ contentdepth CDATA #IMPLIED
+ align (left
+ |right
+ |center) #IMPLIED
+ valign (top
+ |middle
+ |bottom) #IMPLIED
+ scale CDATA #IMPLIED
+ scalefit %yesorno.attvals;
+ #IMPLIED
+ %objectdata.attrib;
+ %common.attrib;
+ %videodata.role.attrib;
+ %local.videodata.attrib;
+>
+<!--end of videodata.attlist-->]]>
+<!--end of videodata.module-->]]>
+
+<!ENTITY % audiodata.module "INCLUDE">
+<![ %audiodata.module; [
+<!ENTITY % local.audiodata.attrib "">
+<!ENTITY % audiodata.role.attrib "%role.attrib;">
+
+<!ENTITY % audiodata.element "INCLUDE">
+<![ %audiodata.element; [
+<!--doc:Pointer to external audio data.-->
+<!ELEMENT audiodata %ho; EMPTY>
+<!--end of audiodata.element-->]]>
+
+<!ENTITY % audiodata.attlist "INCLUDE">
+<![ %audiodata.attlist; [
+<!ATTLIST audiodata
+ %objectdata.attrib;
+ %common.attrib;
+ %audiodata.role.attrib;
+ %local.audiodata.attrib;
+>
+<!--end of audiodata.attlist-->]]>
+<!--end of audiodata.module-->]]>
+
+<!ENTITY % imagedata.module "INCLUDE">
+<![ %imagedata.module; [
+<!ENTITY % local.imagedata.attrib "">
+<!ENTITY % imagedata.role.attrib "%role.attrib;">
+
+<!ENTITY % imagedata.element "INCLUDE">
+<![ %imagedata.element; [
+<!--doc:Pointer to external image data.-->
+<!ELEMENT imagedata %ho; EMPTY>
+<!--end of imagedata.element-->]]>
+
+<!ENTITY % imagedata.attlist "INCLUDE">
+<![ %imagedata.attlist; [
+
+<!--Width: Same as CALS reprowid (desired width)-->
+<!--Depth: Same as CALS reprodep (desired depth)-->
+<!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific-->
+<!--Scale: Conflation of CALS hscale and vscale-->
+<!--Scalefit: Same as CALS scalefit-->
+<!ATTLIST imagedata
+ width CDATA #IMPLIED
+ contentwidth CDATA #IMPLIED
+ depth CDATA #IMPLIED
+ contentdepth CDATA #IMPLIED
+ align (left
+ |right
+ |center) #IMPLIED
+ valign (top
+ |middle
+ |bottom) #IMPLIED
+ scale CDATA #IMPLIED
+ scalefit %yesorno.attvals;
+ #IMPLIED
+ %objectdata.attrib;
+ %common.attrib;
+ %imagedata.role.attrib;
+ %local.imagedata.attrib;
+>
+<!--end of imagedata.attlist-->]]>
+<!--end of imagedata.module-->]]>
+
+<!ENTITY % textdata.module "INCLUDE">
+<![ %textdata.module; [
+<!ENTITY % local.textdata.attrib "">
+<!ENTITY % textdata.role.attrib "%role.attrib;">
+
+<!ENTITY % textdata.element "INCLUDE">
+<![ %textdata.element; [
+<!--doc:Pointer to external text data.-->
+<!ELEMENT textdata %ho; EMPTY>
+<!--end of textdata.element-->]]>
+
+<!ENTITY % textdata.attlist "INCLUDE">
+<![ %textdata.attlist; [
+<!ATTLIST textdata
+ encoding CDATA #IMPLIED
+ %objectdata.attrib;
+ %common.attrib;
+ %textdata.role.attrib;
+ %local.textdata.attrib;
+>
+<!--end of textdata.attlist-->]]>
+<!--end of textdata.module-->]]>
+
+<!ENTITY % mediaobjectco.module "INCLUDE">
+<![ %mediaobjectco.module; [
+<!ENTITY % local.mediaobjectco.attrib "">
+<!ENTITY % mediaobjectco.role.attrib "%role.attrib;">
+
+<!ENTITY % mediaobjectco.element "INCLUDE">
+<![ %mediaobjectco.element; [
+<!--doc:A media object that contains callouts.-->
+<!ELEMENT mediaobjectco %ho; (objectinfo?, imageobjectco,
+ (imageobjectco|textobject)*)>
+<!--end of mediaobjectco.element-->]]>
+
+<!ENTITY % mediaobjectco.attlist "INCLUDE">
+<![ %mediaobjectco.attlist; [
+<!ATTLIST mediaobjectco
+ %common.attrib;
+ %mediaobjectco.role.attrib;
+ %local.mediaobjectco.attrib;
+>
+<!--end of mediaobjectco.attlist-->]]>
+<!--end of mediaobjectco.module-->]]>
+
+<!ENTITY % imageobjectco.module "INCLUDE">
+<![ %imageobjectco.module; [
+<!ENTITY % local.imageobjectco.attrib "">
+<!ENTITY % imageobjectco.role.attrib "%role.attrib;">
+
+<!ENTITY % imageobjectco.element "INCLUDE">
+<![ %imageobjectco.element; [
+<!--doc:A wrapper for an image object with callouts.-->
+<!ELEMENT imageobjectco %ho; (areaspec, imageobject, calloutlist*)>
+<!--end of imageobjectco.element-->]]>
+
+<!ENTITY % imageobjectco.attlist "INCLUDE">
+<![ %imageobjectco.attlist; [
+<!ATTLIST imageobjectco
+ %common.attrib;
+ %imageobjectco.role.attrib;
+ %local.imageobjectco.attrib;
+>
+<!--end of imageobjectco.attlist-->]]>
+<!--end of imageobjectco.module-->]]>
+<!--end of mediaobject.content.module-->]]>
+
+<!-- Equations ........................ -->
+
+<!-- This PE provides a mechanism for replacing equation content, -->
+<!-- perhaps adding a new or different model (e.g., MathML) -->
+<!ENTITY % equation.content "(alt?, (graphic+|mediaobject+|mathphrase+))">
+<!ENTITY % inlineequation.content "(alt?, (graphic+|inlinemediaobject+|mathphrase+))">
+
+<!ENTITY % equation.module "INCLUDE">
+<![%equation.module;[
+<!ENTITY % local.equation.attrib "">
+<!ENTITY % equation.role.attrib "%role.attrib;">
+
+<!ENTITY % equation.element "INCLUDE">
+<![%equation.element;[
+<!--doc:A displayed mathematical equation.-->
+<!ELEMENT equation %ho; (blockinfo?, (%formalobject.title.content;)?,
+ (informalequation | %equation.content;))>
+<!--end of equation.element-->]]>
+
+<!ENTITY % equation.attlist "INCLUDE">
+<![%equation.attlist;[
+<!ATTLIST equation
+ floatstyle CDATA #IMPLIED
+ %label.attrib;
+ %common.attrib;
+ %equation.role.attrib;
+ %local.equation.attrib;
+>
+<!--end of equation.attlist-->]]>
+<!--end of equation.module-->]]>
+
+<!ENTITY % informalequation.module "INCLUDE">
+<![%informalequation.module;[
+<!ENTITY % local.informalequation.attrib "">
+<!ENTITY % informalequation.role.attrib "%role.attrib;">
+
+<!ENTITY % informalequation.element "INCLUDE">
+<![%informalequation.element;[
+<!--doc:A displayed mathematical equation without a title.-->
+<!ELEMENT informalequation %ho; (blockinfo?, %equation.content;) >
+<!--end of informalequation.element-->]]>
+
+<!ENTITY % informalequation.attlist "INCLUDE">
+<![%informalequation.attlist;[
+<!ATTLIST informalequation
+ floatstyle CDATA #IMPLIED
+ %common.attrib;
+ %informalequation.role.attrib;
+ %local.informalequation.attrib;
+>
+<!--end of informalequation.attlist-->]]>
+<!--end of informalequation.module-->]]>
+
+<!ENTITY % inlineequation.module "INCLUDE">
+<![%inlineequation.module;[
+<!ENTITY % local.inlineequation.attrib "">
+<!ENTITY % inlineequation.role.attrib "%role.attrib;">
+
+<!ENTITY % inlineequation.element "INCLUDE">
+<![%inlineequation.element;[
+<!--doc:A mathematical equation or expression occurring inline.-->
+<!ELEMENT inlineequation %ho; (%inlineequation.content;)>
+<!--end of inlineequation.element-->]]>
+
+<!ENTITY % inlineequation.attlist "INCLUDE">
+<![%inlineequation.attlist;[
+<!ATTLIST inlineequation
+ %common.attrib;
+ %inlineequation.role.attrib;
+ %local.inlineequation.attrib;
+>
+<!--end of inlineequation.attlist-->]]>
+<!--end of inlineequation.module-->]]>
+
+<!ENTITY % alt.module "INCLUDE">
+<![%alt.module;[
+<!ENTITY % local.alt.attrib "">
+<!ENTITY % alt.role.attrib "%role.attrib;">
+
+<!ENTITY % alt.element "INCLUDE">
+<![%alt.element;[
+<!--doc:Text representation for a graphical element.-->
+<!ELEMENT alt %ho; (#PCDATA)>
+<!--end of alt.element-->]]>
+
+<!ENTITY % alt.attlist "INCLUDE">
+<![%alt.attlist;[
+<!ATTLIST alt
+ %common.attrib;
+ %alt.role.attrib;
+ %local.alt.attrib;
+>
+<!--end of alt.attlist-->]]>
+<!--end of alt.module-->]]>
+
+<!ENTITY % mathphrase.module "INCLUDE">
+<![%mathphrase.module;[
+<!ENTITY % local.mathphrase.attrib "">
+<!ENTITY % mathphrase.role.attrib "%role.attrib;">
+
+<!ENTITY % mathphrase.element "INCLUDE">
+<![%mathphrase.element;[
+<!--doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup.-->
+<!ELEMENT mathphrase %ho; (#PCDATA|subscript|superscript|emphasis)*>
+<!--end of mathphrase.element-->]]>
+
+<!ENTITY % mathphrase.attlist "INCLUDE">
+<![%mathphrase.attlist;[
+<!ATTLIST mathphrase
+ %common.attrib;
+ %mathphrase.role.attrib;
+ %local.mathphrase.attrib;
+>
+<!--end of mathphrase.attlist-->]]>
+<!--end of mathphrase.module-->]]>
+
+<!-- Tables ........................... -->
+
+<!ENTITY % table.module "INCLUDE">
+<![%table.module;[
+
+<!-- Choose a table model. CALS or OASIS XML Exchange -->
+
+<!ENTITY % cals.table.module "INCLUDE">
+<![%cals.table.module;[
+<!ENTITY % exchange.table.module "IGNORE">
+]]>
+<!ENTITY % exchange.table.module "INCLUDE">
+
+<!-- Do we allow the HTML table model as well? -->
+<!ENTITY % allow.html.tables "INCLUDE">
+<![%allow.html.tables;[
+ <!-- ====================================================== -->
+ <!-- xhtmltbl.mod defines HTML tables and sets parameter
+ entities so that, when the CALS table module is read,
+ we end up allowing any table to be CALS or HTML.
+ i.e. This include must come first! -->
+ <!-- ====================================================== -->
+
+<!ENTITY % htmltbl
+ PUBLIC "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+ "htmltblx.mod">
+%htmltbl;
+<!--end of allow.html.tables-->]]>
+
+<!ENTITY % tables.role.attrib "%role.attrib;">
+
+<![%cals.table.module;[
+<!-- Add label and role attributes to table and informaltable -->
+<!ENTITY % bodyatt "
+ floatstyle CDATA #IMPLIED
+ rowheader (firstcol|norowheader) #IMPLIED
+ %label.attrib;"
+>
+
+<!-- Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element). -->
+<!ENTITY % secur
+ "%common.attrib;
+ %tables.role.attrib;">
+
+<!ENTITY % common.table.attribs
+ "%bodyatt;
+ %secur;">
+
+<!-- Content model for Table. -->
+<!ENTITY % tbl.table.mdl
+ "(blockinfo?, (%formalobject.title.content;), (%ndxterm.class;)*,
+ textobject*,
+ (graphic+|mediaobject+|tgroup+))">
+
+<!-- Allow either objects or inlines; beware of REs between elements. -->
+<!ENTITY % tbl.entry.mdl "%para.char.mix; | %tabentry.mix;">
+
+<!-- Reference CALS Table Model -->
+<!ENTITY % tablemodel
+ PUBLIC "-//OASIS//DTD DocBook CALS Table Model V4.5//EN"
+ "calstblx.dtd">
+]]>
+
+<![%exchange.table.module;[
+<!-- Add common attributes and the Label attribute to Table and -->
+<!-- InformalTable. -->
+<!ENTITY % bodyatt
+ "%common.attrib;
+ rowheader (firstcol|norowheader) #IMPLIED
+ %label.attrib;
+ %tables.role.attrib;">
+
+<!ENTITY % common.table.attribs
+ "%bodyatt;">
+
+<!-- Add common attributes to TGroup, ColSpec, TBody, THead, Row, Entry -->
+
+<!ENTITY % tbl.tgroup.att "%common.attrib;">
+<!ENTITY % tbl.colspec.att "%common.attrib;">
+<!ENTITY % tbl.tbody.att "%common.attrib;">
+<!ENTITY % tbl.thead.att "%common.attrib;">
+<!ENTITY % tbl.row.att "%common.attrib;">
+<!ENTITY % tbl.entry.att "%common.attrib;">
+
+<!-- Content model for Table. -->
+<!ENTITY % tbl.table.mdl
+ "(blockinfo?, (%formalobject.title.content;), (%ndxterm.class;)*,
+ textobject*,
+ (graphic+|mediaobject+|tgroup+))">
+
+<!-- Allow either objects or inlines; beware of REs between elements. -->
+<!ENTITY % tbl.entry.mdl "(%para.char.mix; | %tabentry.mix;)*">
+
+<!-- Reference OASIS Exchange Table Model -->
+<!ENTITY % tablemodel
+ PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN"
+ "soextblx.dtd">
+]]>
+
+%tablemodel;
+
+<!--end of table.module-->]]>
+
+<!ENTITY % informaltable.module "INCLUDE">
+<![%informaltable.module;[
+
+<!-- Note that InformalTable is dependent on some of the entity
+ declarations that customize Table. -->
+
+<!ENTITY % local.informaltable.attrib "">
+
+<!-- the following entity may have been declared by the XHTML table module -->
+<!ENTITY % informal.tbl.table.mdl "textobject*, (graphic+|mediaobject+|tgroup+)">
+
+<!ENTITY % informaltable.element "INCLUDE">
+<![%informaltable.element;[
+<!--doc:A table without a title.-->
+<!ELEMENT informaltable %ho; (blockinfo?, (%informal.tbl.table.mdl;))>
+<!--end of informaltable.element-->]]>
+
+<!-- Frame, Colsep, and Rowsep must be repeated because
+ they are not in entities in the table module. -->
+<!-- includes TabStyle, ToCentry, ShortEntry,
+ Orient, PgWide -->
+<!-- includes Label -->
+<!-- includes common attributes -->
+
+<!ENTITY % informaltable.attlist "INCLUDE">
+<![%informaltable.attlist;[
+<!ATTLIST informaltable
+ frame (%tbl.frame.attval;) #IMPLIED
+ colsep %yesorno.attvals; #IMPLIED
+ rowsep %yesorno.attvals; #IMPLIED
+ %common.table.attribs;
+ %tbl.table.att;
+ %local.informaltable.attrib;
+>
+<!--end of informaltable.attlist-->]]>
+<!--end of informaltable.module-->]]>
+
+<!ENTITY % caption.module "INCLUDE">
+<![ %caption.module; [
+<!ENTITY % local.caption.attrib "">
+<!ENTITY % caption.role.attrib "%role.attrib;">
+
+<!ENTITY % caption.element "INCLUDE">
+<![ %caption.element; [
+<!--doc:A caption.-->
+<!ELEMENT caption %ho; (#PCDATA | %textobject.mix;)*>
+<!--end of caption.element-->]]>
+
+<!ENTITY % caption.attlist "INCLUDE">
+<![ %caption.attlist; [
+<!-- attrs comes from HTML tables ... -->
+
+<![ %allow.html.tables; [
+<!-- common.attrib, but without ID because ID is in attrs -->
+<!ENTITY % caption.attlist.content "
+ %caption.role.attrib;
+ %attrs;
+ align (top|bottom|left|right) #IMPLIED
+ %local.caption.attrib;
+">
+]]>
+<!ENTITY % caption.attlist.content "
+ %common.attrib;
+ %caption.role.attrib;
+ %local.caption.attrib;
+">
+
+<!ATTLIST caption %caption.attlist.content;>
+
+<!--end of caption.attlist-->]]>
+<!--end of caption.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Synopses ............................................................. -->
+
+<!-- Synopsis ......................... -->
+
+<!ENTITY % synopsis.module "INCLUDE">
+<![%synopsis.module;[
+<!ENTITY % local.synopsis.attrib "">
+<!ENTITY % synopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % synopsis.element "INCLUDE">
+<![%synopsis.element;[
+<!--doc:A general-purpose element for representing the syntax of commands or functions.-->
+<!ELEMENT synopsis %ho; (%para.char.mix;|graphic|mediaobject|co|coref|textobject|lineannotation)*>
+<!--end of synopsis.element-->]]>
+
+<!ENTITY % synopsis.attlist "INCLUDE">
+<![%synopsis.attlist;[
+<!ATTLIST synopsis
+ %label.attrib;
+ %linespecific.attrib;
+ %common.attrib;
+ %synopsis.role.attrib;
+ %local.synopsis.attrib;
+>
+<!--end of synopsis.attlist-->]]>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!--end of synopsis.module-->]]>
+
+<!-- CmdSynopsis ...................... -->
+
+<!ENTITY % cmdsynopsis.content.module "INCLUDE">
+<![%cmdsynopsis.content.module;[
+<!ENTITY % cmdsynopsis.module "INCLUDE">
+<![%cmdsynopsis.module;[
+<!ENTITY % local.cmdsynopsis.attrib "">
+<!ENTITY % cmdsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % cmdsynopsis.element "INCLUDE">
+<![%cmdsynopsis.element;[
+<!--doc:A syntax summary for a software command.-->
+<!ELEMENT cmdsynopsis %ho; ((command | arg | group | sbr)+, synopfragment*)>
+<!--end of cmdsynopsis.element-->]]>
+
+<!-- Sepchar: Character that should separate command and all
+ top-level arguments; alternate value might be e.g., &Delta; -->
+
+
+<!ENTITY % cmdsynopsis.attlist "INCLUDE">
+<![%cmdsynopsis.attlist;[
+<!ATTLIST cmdsynopsis
+ %label.attrib;
+ sepchar CDATA " "
+ cmdlength CDATA #IMPLIED
+ %common.attrib;
+ %cmdsynopsis.role.attrib;
+ %local.cmdsynopsis.attrib;
+>
+<!--end of cmdsynopsis.attlist-->]]>
+<!--end of cmdsynopsis.module-->]]>
+
+<!ENTITY % arg.module "INCLUDE">
+<![%arg.module;[
+<!ENTITY % local.arg.attrib "">
+<!ENTITY % arg.role.attrib "%role.attrib;">
+
+<!ENTITY % arg.element "INCLUDE">
+<![%arg.element;[
+<!--doc:An argument in a CmdSynopsis.-->
+<!ELEMENT arg %ho; (#PCDATA
+ | arg
+ | group
+ | option
+ | synopfragmentref
+ | replaceable
+ | sbr)*>
+<!--end of arg.element-->]]>
+
+<!-- Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+<!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...) -->
+
+
+<!ENTITY % arg.attlist "INCLUDE">
+<![%arg.attlist;[
+<!ATTLIST arg
+ choice (opt
+ |req
+ |plain) 'opt'
+ rep (norepeat
+ |repeat) 'norepeat'
+ %common.attrib;
+ %arg.role.attrib;
+ %local.arg.attrib;
+>
+<!--end of arg.attlist-->]]>
+<!--end of arg.module-->]]>
+
+<!ENTITY % group.module "INCLUDE">
+<![%group.module;[
+
+<!ENTITY % local.group.attrib "">
+<!ENTITY % group.role.attrib "%role.attrib;">
+
+<!ENTITY % group.element "INCLUDE">
+<![%group.element;[
+<!--doc:A group of elements in a CmdSynopsis.-->
+<!ELEMENT group %ho; ((arg | group | option | synopfragmentref
+ | replaceable | sbr)+)>
+<!--end of group.element-->]]>
+
+<!-- Choice: Whether Group must be supplied: Opt (optional to
+ supply, e.g. [g1|g2|g3]; the default), Req (required to
+ supply, e.g. {g1|g2|g3}), Plain (required to supply,
+ e.g. g1|g2|g3), OptMult (can supply zero or more, e.g.
+ [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
+ {{g1|g2|g3}}) -->
+<!-- Rep: whether Group is repeatable: Norepeat (e.g. group
+ without ellipsis; the default), or Repeat (e.g. group...) -->
+
+
+<!ENTITY % group.attlist "INCLUDE">
+<![%group.attlist;[
+<!ATTLIST group
+ choice (opt
+ |req
+ |plain) 'opt'
+ rep (norepeat
+ |repeat) 'norepeat'
+ %common.attrib;
+ %group.role.attrib;
+ %local.group.attrib;
+>
+<!--end of group.attlist-->]]>
+<!--end of group.module-->]]>
+
+<!ENTITY % sbr.module "INCLUDE">
+<![%sbr.module;[
+<!ENTITY % local.sbr.attrib "">
+<!-- Synopsis break -->
+<!ENTITY % sbr.role.attrib "%role.attrib;">
+
+<!ENTITY % sbr.element "INCLUDE">
+<![%sbr.element;[
+<!--doc:An explicit line break in a command synopsis.-->
+<!ELEMENT sbr %ho; EMPTY>
+<!--end of sbr.element-->]]>
+
+<!ENTITY % sbr.attlist "INCLUDE">
+<![%sbr.attlist;[
+<!ATTLIST sbr
+ %common.attrib;
+ %sbr.role.attrib;
+ %local.sbr.attrib;
+>
+<!--end of sbr.attlist-->]]>
+<!--end of sbr.module-->]]>
+
+<!ENTITY % synopfragmentref.module "INCLUDE">
+<![%synopfragmentref.module;[
+<!ENTITY % local.synopfragmentref.attrib "">
+<!ENTITY % synopfragmentref.role.attrib "%role.attrib;">
+
+<!ENTITY % synopfragmentref.element "INCLUDE">
+<![%synopfragmentref.element;[
+<!--doc:A reference to a fragment of a command synopsis.-->
+<!ELEMENT synopfragmentref %ho; (#PCDATA)>
+<!--end of synopfragmentref.element-->]]>
+
+<!-- to SynopFragment of complex synopsis
+ material for separate referencing -->
+
+
+<!ENTITY % synopfragmentref.attlist "INCLUDE">
+<![%synopfragmentref.attlist;[
+<!ATTLIST synopfragmentref
+ %linkendreq.attrib; %common.attrib;
+ %synopfragmentref.role.attrib;
+ %local.synopfragmentref.attrib;
+>
+<!--end of synopfragmentref.attlist-->]]>
+<!--end of synopfragmentref.module-->]]>
+
+<!ENTITY % synopfragment.module "INCLUDE">
+<![%synopfragment.module;[
+<!ENTITY % local.synopfragment.attrib "">
+<!ENTITY % synopfragment.role.attrib "%role.attrib;">
+
+<!ENTITY % synopfragment.element "INCLUDE">
+<![%synopfragment.element;[
+<!--doc:A portion of a CmdSynopsis broken out from the main body of the synopsis.-->
+<!ELEMENT synopfragment %ho; ((arg | group)+)>
+<!--end of synopfragment.element-->]]>
+
+<!ENTITY % synopfragment.attlist "INCLUDE">
+<![%synopfragment.attlist;[
+<!ATTLIST synopfragment
+ %idreq.common.attrib;
+ %synopfragment.role.attrib;
+ %local.synopfragment.attrib;
+>
+<!--end of synopfragment.attlist-->]]>
+<!--end of synopfragment.module-->]]>
+
+<!-- Command (defined in the Inlines section, below)-->
+<!-- Option (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!--end of cmdsynopsis.content.module-->]]>
+
+<!-- FuncSynopsis ..................... -->
+
+<!ENTITY % funcsynopsis.content.module "INCLUDE">
+<![%funcsynopsis.content.module;[
+<!ENTITY % funcsynopsis.module "INCLUDE">
+<![%funcsynopsis.module;[
+
+<!ENTITY % local.funcsynopsis.attrib "">
+<!ENTITY % funcsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % funcsynopsis.element "INCLUDE">
+<![%funcsynopsis.element;[
+<!--doc:The syntax summary for a function definition.-->
+<!ELEMENT funcsynopsis %ho; ((funcsynopsisinfo | funcprototype)+)>
+<!--end of funcsynopsis.element-->]]>
+
+<!ENTITY % funcsynopsis.attlist "INCLUDE">
+<![%funcsynopsis.attlist;[
+<!ATTLIST funcsynopsis
+ %label.attrib;
+ %common.attrib;
+ %funcsynopsis.role.attrib;
+ %local.funcsynopsis.attrib;
+>
+<!--end of funcsynopsis.attlist-->]]>
+<!--end of funcsynopsis.module-->]]>
+
+<!ENTITY % funcsynopsisinfo.module "INCLUDE">
+<![%funcsynopsisinfo.module;[
+<!ENTITY % local.funcsynopsisinfo.attrib "">
+<!ENTITY % funcsynopsisinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % funcsynopsisinfo.element "INCLUDE">
+<![%funcsynopsisinfo.element;[
+<!--doc:Information supplementing the FuncDefs of a FuncSynopsis.-->
+<!ELEMENT funcsynopsisinfo %ho; (%cptr.char.mix;|textobject|lineannotation)*>
+<!--end of funcsynopsisinfo.element-->]]>
+
+<!ENTITY % funcsynopsisinfo.attlist "INCLUDE">
+<![%funcsynopsisinfo.attlist;[
+<!ATTLIST funcsynopsisinfo
+ %linespecific.attrib;
+ %common.attrib;
+ %funcsynopsisinfo.role.attrib;
+ %local.funcsynopsisinfo.attrib;
+>
+<!--end of funcsynopsisinfo.attlist-->]]>
+<!--end of funcsynopsisinfo.module-->]]>
+
+<!ENTITY % funcprototype.module "INCLUDE">
+<![%funcprototype.module;[
+<!ENTITY % local.funcprototype.attrib "">
+<!ENTITY % funcprototype.role.attrib "%role.attrib;">
+
+<!ENTITY % funcprototype.element "INCLUDE">
+<![%funcprototype.element;[
+<!--doc:The prototype of a function.-->
+<!ELEMENT funcprototype %ho; (modifier*,
+ funcdef,
+ (void|varargs|(paramdef+, varargs?)),
+ modifier*)>
+
+<!--end of funcprototype.element-->]]>
+
+<!ENTITY % funcprototype.attlist "INCLUDE">
+<![%funcprototype.attlist;[
+<!ATTLIST funcprototype
+ %common.attrib;
+ %funcprototype.role.attrib;
+ %local.funcprototype.attrib;
+>
+<!--end of funcprototype.attlist-->]]>
+<!--end of funcprototype.module-->]]>
+
+<!ENTITY % funcdef.module "INCLUDE">
+<![%funcdef.module;[
+<!ENTITY % local.funcdef.attrib "">
+<!ENTITY % funcdef.role.attrib "%role.attrib;">
+
+<!ENTITY % funcdef.element "INCLUDE">
+<![%funcdef.element;[
+<!--doc:A function (subroutine) name and its return type.-->
+<!ELEMENT funcdef %ho; (#PCDATA
+ | type
+ | replaceable
+ | function)*>
+<!--end of funcdef.element-->]]>
+
+<!ENTITY % funcdef.attlist "INCLUDE">
+<![%funcdef.attlist;[
+<!ATTLIST funcdef
+ %common.attrib;
+ %funcdef.role.attrib;
+ %local.funcdef.attrib;
+>
+<!--end of funcdef.attlist-->]]>
+<!--end of funcdef.module-->]]>
+
+<!ENTITY % void.module "INCLUDE">
+<![%void.module;[
+<!ENTITY % local.void.attrib "">
+<!ENTITY % void.role.attrib "%role.attrib;">
+
+<!ENTITY % void.element "INCLUDE">
+<![%void.element;[
+<!--doc:An empty element in a function synopsis indicating that the function in question takes no arguments.-->
+<!ELEMENT void %ho; EMPTY>
+<!--end of void.element-->]]>
+
+<!ENTITY % void.attlist "INCLUDE">
+<![%void.attlist;[
+<!ATTLIST void
+ %common.attrib;
+ %void.role.attrib;
+ %local.void.attrib;
+>
+<!--end of void.attlist-->]]>
+<!--end of void.module-->]]>
+
+<!ENTITY % varargs.module "INCLUDE">
+<![%varargs.module;[
+<!ENTITY % local.varargs.attrib "">
+<!ENTITY % varargs.role.attrib "%role.attrib;">
+
+<!ENTITY % varargs.element "INCLUDE">
+<![%varargs.element;[
+<!--doc:An empty element in a function synopsis indicating a variable number of arguments.-->
+<!ELEMENT varargs %ho; EMPTY>
+<!--end of varargs.element-->]]>
+
+<!ENTITY % varargs.attlist "INCLUDE">
+<![%varargs.attlist;[
+<!ATTLIST varargs
+ %common.attrib;
+ %varargs.role.attrib;
+ %local.varargs.attrib;
+>
+<!--end of varargs.attlist-->]]>
+<!--end of varargs.module-->]]>
+
+<!-- Processing assumes that only one Parameter will appear in a
+ ParamDef, and that FuncParams will be used at most once, for
+ providing information on the "inner parameters" for parameters that
+ are pointers to functions. -->
+
+<!ENTITY % paramdef.module "INCLUDE">
+<![%paramdef.module;[
+<!ENTITY % local.paramdef.attrib "">
+<!ENTITY % paramdef.role.attrib "%role.attrib;">
+
+<!ENTITY % paramdef.element "INCLUDE">
+<![%paramdef.element;[
+<!--doc:Information about a function parameter in a programming language.-->
+<!ELEMENT paramdef %ho; (#PCDATA
+ | initializer
+ | type
+ | replaceable
+ | parameter
+ | funcparams)*>
+<!--end of paramdef.element-->]]>
+
+<!ENTITY % paramdef.attlist "INCLUDE">
+<![%paramdef.attlist;[
+<!ATTLIST paramdef
+ choice (opt
+ |req) #IMPLIED
+ %common.attrib;
+ %paramdef.role.attrib;
+ %local.paramdef.attrib;
+>
+<!--end of paramdef.attlist-->]]>
+<!--end of paramdef.module-->]]>
+
+<!ENTITY % funcparams.module "INCLUDE">
+<![%funcparams.module;[
+<!ENTITY % local.funcparams.attrib "">
+<!ENTITY % funcparams.role.attrib "%role.attrib;">
+
+<!ENTITY % funcparams.element "INCLUDE">
+<![%funcparams.element;[
+<!--doc:Parameters for a function referenced through a function pointer in a synopsis.-->
+<!ELEMENT funcparams %ho; (%cptr.char.mix;)*>
+<!--end of funcparams.element-->]]>
+
+<!ENTITY % funcparams.attlist "INCLUDE">
+<![%funcparams.attlist;[
+<!ATTLIST funcparams
+ %common.attrib;
+ %funcparams.role.attrib;
+ %local.funcparams.attrib;
+>
+<!--end of funcparams.attlist-->]]>
+<!--end of funcparams.module-->]]>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!-- Function (defined in the Inlines section, below)-->
+<!-- Parameter (defined in the Inlines section, below)-->
+<!--end of funcsynopsis.content.module-->]]>
+
+<!-- ClassSynopsis ..................... -->
+
+<!ENTITY % classsynopsis.content.module "INCLUDE">
+<![%classsynopsis.content.module;[
+
+<!ENTITY % classsynopsis.module "INCLUDE">
+<![%classsynopsis.module;[
+<!ENTITY % local.classsynopsis.attrib "">
+<!ENTITY % classsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % classsynopsis.element "INCLUDE">
+<![%classsynopsis.element;[
+<!--doc:The syntax summary for a class definition.-->
+<!ELEMENT classsynopsis %ho; ((ooclass|oointerface|ooexception)+,
+ (classsynopsisinfo
+ |fieldsynopsis|%method.synop.class;)*)>
+<!--end of classsynopsis.element-->]]>
+
+<!ENTITY % classsynopsis.attlist "INCLUDE">
+<![%classsynopsis.attlist;[
+<!ATTLIST classsynopsis
+ language CDATA #IMPLIED
+ class (class|interface) "class"
+ %common.attrib;
+ %classsynopsis.role.attrib;
+ %local.classsynopsis.attrib;
+>
+<!--end of classsynopsis.attlist-->]]>
+<!--end of classsynopsis.module-->]]>
+
+<!ENTITY % classsynopsisinfo.module "INCLUDE">
+<![ %classsynopsisinfo.module; [
+<!ENTITY % local.classsynopsisinfo.attrib "">
+<!ENTITY % classsynopsisinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % classsynopsisinfo.element "INCLUDE">
+<![ %classsynopsisinfo.element; [
+<!--doc:Information supplementing the contents of a ClassSynopsis.-->
+<!ELEMENT classsynopsisinfo %ho; (%cptr.char.mix;|textobject|lineannotation)*>
+<!--end of classsynopsisinfo.element-->]]>
+
+<!ENTITY % classsynopsisinfo.attlist "INCLUDE">
+<![ %classsynopsisinfo.attlist; [
+<!ATTLIST classsynopsisinfo
+ %linespecific.attrib;
+ %common.attrib;
+ %classsynopsisinfo.role.attrib;
+ %local.classsynopsisinfo.attrib;
+>
+<!--end of classsynopsisinfo.attlist-->]]>
+<!--end of classsynopsisinfo.module-->]]>
+
+<!ENTITY % ooclass.module "INCLUDE">
+<![%ooclass.module;[
+<!ENTITY % local.ooclass.attrib "">
+<!ENTITY % ooclass.role.attrib "%role.attrib;">
+
+<!ENTITY % ooclass.element "INCLUDE">
+<![%ooclass.element;[
+<!--doc:A class in an object-oriented programming language.-->
+<!ELEMENT ooclass %ho; ((modifier|package)*, classname)>
+<!--end of ooclass.element-->]]>
+
+<!ENTITY % ooclass.attlist "INCLUDE">
+<![%ooclass.attlist;[
+<!ATTLIST ooclass
+ %common.attrib;
+ %ooclass.role.attrib;
+ %local.ooclass.attrib;
+>
+<!--end of ooclass.attlist-->]]>
+<!--end of ooclass.module-->]]>
+
+<!ENTITY % oointerface.module "INCLUDE">
+<![%oointerface.module;[
+<!ENTITY % local.oointerface.attrib "">
+<!ENTITY % oointerface.role.attrib "%role.attrib;">
+
+<!ENTITY % oointerface.element "INCLUDE">
+<![%oointerface.element;[
+<!--doc:An interface in an object-oriented programming language.-->
+<!ELEMENT oointerface %ho; ((modifier|package)*, interfacename)>
+<!--end of oointerface.element-->]]>
+
+<!ENTITY % oointerface.attlist "INCLUDE">
+<![%oointerface.attlist;[
+<!ATTLIST oointerface
+ %common.attrib;
+ %oointerface.role.attrib;
+ %local.oointerface.attrib;
+>
+<!--end of oointerface.attlist-->]]>
+<!--end of oointerface.module-->]]>
+
+<!ENTITY % ooexception.module "INCLUDE">
+<![%ooexception.module;[
+<!ENTITY % local.ooexception.attrib "">
+<!ENTITY % ooexception.role.attrib "%role.attrib;">
+
+<!ENTITY % ooexception.element "INCLUDE">
+<![%ooexception.element;[
+<!--doc:An exception in an object-oriented programming language.-->
+<!ELEMENT ooexception %ho; ((modifier|package)*, exceptionname)>
+<!--end of ooexception.element-->]]>
+
+<!ENTITY % ooexception.attlist "INCLUDE">
+<![%ooexception.attlist;[
+<!ATTLIST ooexception
+ %common.attrib;
+ %ooexception.role.attrib;
+ %local.ooexception.attrib;
+>
+<!--end of ooexception.attlist-->]]>
+<!--end of ooexception.module-->]]>
+
+<!ENTITY % modifier.module "INCLUDE">
+<![%modifier.module;[
+<!ENTITY % local.modifier.attrib "">
+<!ENTITY % modifier.role.attrib "%role.attrib;">
+
+<!ENTITY % modifier.element "INCLUDE">
+<![%modifier.element;[
+<!--doc:Modifiers in a synopsis.-->
+<!ELEMENT modifier %ho; (%smallcptr.char.mix;)*>
+<!--end of modifier.element-->]]>
+
+<!ENTITY % modifier.attlist "INCLUDE">
+<![%modifier.attlist;[
+<!ATTLIST modifier
+ %common.attrib;
+ %modifier.role.attrib;
+ %local.modifier.attrib;
+>
+<!--end of modifier.attlist-->]]>
+<!--end of modifier.module-->]]>
+
+<!ENTITY % interfacename.module "INCLUDE">
+<![%interfacename.module;[
+<!ENTITY % local.interfacename.attrib "">
+<!ENTITY % interfacename.role.attrib "%role.attrib;">
+
+<!ENTITY % interfacename.element "INCLUDE">
+<![%interfacename.element;[
+<!--doc:The name of an interface.-->
+<!ELEMENT interfacename %ho; (%cptr.char.mix;)*>
+<!--end of interfacename.element-->]]>
+
+<!ENTITY % interfacename.attlist "INCLUDE">
+<![%interfacename.attlist;[
+<!ATTLIST interfacename
+ %common.attrib;
+ %interfacename.role.attrib;
+ %local.interfacename.attrib;
+>
+<!--end of interfacename.attlist-->]]>
+<!--end of interfacename.module-->]]>
+
+<!ENTITY % exceptionname.module "INCLUDE">
+<![%exceptionname.module;[
+<!ENTITY % local.exceptionname.attrib "">
+<!ENTITY % exceptionname.role.attrib "%role.attrib;">
+
+<!ENTITY % exceptionname.element "INCLUDE">
+<![%exceptionname.element;[
+<!--doc:The name of an exception.-->
+<!ELEMENT exceptionname %ho; (%smallcptr.char.mix;)*>
+<!--end of exceptionname.element-->]]>
+
+<!ENTITY % exceptionname.attlist "INCLUDE">
+<![%exceptionname.attlist;[
+<!ATTLIST exceptionname
+ %common.attrib;
+ %exceptionname.role.attrib;
+ %local.exceptionname.attrib;
+>
+<!--end of exceptionname.attlist-->]]>
+<!--end of exceptionname.module-->]]>
+
+<!ENTITY % fieldsynopsis.module "INCLUDE">
+<![%fieldsynopsis.module;[
+<!ENTITY % local.fieldsynopsis.attrib "">
+<!ENTITY % fieldsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % fieldsynopsis.element "INCLUDE">
+<![%fieldsynopsis.element;[
+<!--doc:The name of a field in a class definition.-->
+<!ELEMENT fieldsynopsis %ho; (modifier*, type?, varname, initializer?)>
+<!--end of fieldsynopsis.element-->]]>
+
+<!ENTITY % fieldsynopsis.attlist "INCLUDE">
+<![%fieldsynopsis.attlist;[
+<!ATTLIST fieldsynopsis
+ language CDATA #IMPLIED
+ %common.attrib;
+ %fieldsynopsis.role.attrib;
+ %local.fieldsynopsis.attrib;
+>
+<!--end of fieldsynopsis.attlist-->]]>
+<!--end of fieldsynopsis.module-->]]>
+
+<!ENTITY % initializer.module "INCLUDE">
+<![%initializer.module;[
+<!ENTITY % local.initializer.attrib "">
+<!ENTITY % initializer.role.attrib "%role.attrib;">
+
+<!ENTITY % initializer.element "INCLUDE">
+<![%initializer.element;[
+<!--doc:The initializer for a FieldSynopsis.-->
+<!ELEMENT initializer %ho; (%smallcptr.char.mix;)*>
+<!--end of initializer.element-->]]>
+
+<!ENTITY % initializer.attlist "INCLUDE">
+<![%initializer.attlist;[
+<!ATTLIST initializer
+ %common.attrib;
+ %initializer.role.attrib;
+ %local.initializer.attrib;
+>
+<!--end of initializer.attlist-->]]>
+<!--end of initializer.module-->]]>
+
+<!ENTITY % constructorsynopsis.module "INCLUDE">
+<![%constructorsynopsis.module;[
+<!ENTITY % local.constructorsynopsis.attrib "">
+<!ENTITY % constructorsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % constructorsynopsis.element "INCLUDE">
+<![%constructorsynopsis.element;[
+<!--doc:A syntax summary for a constructor.-->
+<!ELEMENT constructorsynopsis %ho; (modifier*,
+ methodname?,
+ (methodparam+|void?),
+ exceptionname*)>
+<!--end of constructorsynopsis.element-->]]>
+
+<!ENTITY % constructorsynopsis.attlist "INCLUDE">
+<![%constructorsynopsis.attlist;[
+<!ATTLIST constructorsynopsis
+ language CDATA #IMPLIED
+ %common.attrib;
+ %constructorsynopsis.role.attrib;
+ %local.constructorsynopsis.attrib;
+>
+<!--end of constructorsynopsis.attlist-->]]>
+<!--end of constructorsynopsis.module-->]]>
+
+<!ENTITY % destructorsynopsis.module "INCLUDE">
+<![%destructorsynopsis.module;[
+<!ENTITY % local.destructorsynopsis.attrib "">
+<!ENTITY % destructorsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % destructorsynopsis.element "INCLUDE">
+<![%destructorsynopsis.element;[
+<!--doc:A syntax summary for a destructor.-->
+<!ELEMENT destructorsynopsis %ho; (modifier*,
+ methodname?,
+ (methodparam+|void?),
+ exceptionname*)>
+<!--end of destructorsynopsis.element-->]]>
+
+<!ENTITY % destructorsynopsis.attlist "INCLUDE">
+<![%destructorsynopsis.attlist;[
+<!ATTLIST destructorsynopsis
+ language CDATA #IMPLIED
+ %common.attrib;
+ %destructorsynopsis.role.attrib;
+ %local.destructorsynopsis.attrib;
+>
+<!--end of destructorsynopsis.attlist-->]]>
+<!--end of destructorsynopsis.module-->]]>
+
+<!ENTITY % methodsynopsis.module "INCLUDE">
+<![%methodsynopsis.module;[
+<!ENTITY % local.methodsynopsis.attrib "">
+<!ENTITY % methodsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % methodsynopsis.element "INCLUDE">
+<![%methodsynopsis.element;[
+<!--doc:A syntax summary for a method.-->
+<!ELEMENT methodsynopsis %ho; (modifier*,
+ (type|void)?,
+ methodname,
+ (methodparam+|void?),
+ exceptionname*,
+ modifier*)>
+<!--end of methodsynopsis.element-->]]>
+
+<!ENTITY % methodsynopsis.attlist "INCLUDE">
+<![%methodsynopsis.attlist;[
+<!ATTLIST methodsynopsis
+ language CDATA #IMPLIED
+ %common.attrib;
+ %methodsynopsis.role.attrib;
+ %local.methodsynopsis.attrib;
+>
+<!--end of methodsynopsis.attlist-->]]>
+<!--end of methodsynopsis.module-->]]>
+
+<!ENTITY % methodname.module "INCLUDE">
+<![%methodname.module;[
+<!ENTITY % local.methodname.attrib "">
+<!ENTITY % methodname.role.attrib "%role.attrib;">
+
+<!ENTITY % methodname.element "INCLUDE">
+<![%methodname.element;[
+<!--doc:The name of a method.-->
+<!ELEMENT methodname %ho; (%smallcptr.char.mix;)*>
+<!--end of methodname.element-->]]>
+
+<!ENTITY % methodname.attlist "INCLUDE">
+<![%methodname.attlist;[
+<!ATTLIST methodname
+ %common.attrib;
+ %methodname.role.attrib;
+ %local.methodname.attrib;
+>
+<!--end of methodname.attlist-->]]>
+<!--end of methodname.module-->]]>
+
+<!ENTITY % methodparam.module "INCLUDE">
+<![%methodparam.module;[
+<!ENTITY % local.methodparam.attrib "">
+<!ENTITY % methodparam.role.attrib "%role.attrib;">
+
+<!ENTITY % methodparam.element "INCLUDE">
+<![%methodparam.element;[
+<!--doc:Parameters to a method.-->
+<!ELEMENT methodparam %ho; (modifier*,
+ type?,
+ ((parameter,initializer?)|funcparams),
+ modifier*)>
+<!--end of methodparam.element-->]]>
+
+<!ENTITY % methodparam.attlist "INCLUDE">
+<![%methodparam.attlist;[
+<!ATTLIST methodparam
+ choice (opt
+ |req
+ |plain) "req"
+ rep (norepeat
+ |repeat) "norepeat"
+ %common.attrib;
+ %methodparam.role.attrib;
+ %local.methodparam.attrib;
+>
+<!--end of methodparam.attlist-->]]>
+<!--end of methodparam.module-->]]>
+<!--end of classsynopsis.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Document information entities and elements ........................... -->
+
+<!-- The document information elements include some elements that are
+ currently used only in the document hierarchy module. They are
+ defined here so that they will be available for use in customized
+ document hierarchies. -->
+
+<!-- .................................. -->
+
+<!ENTITY % docinfo.content.module "INCLUDE">
+<![%docinfo.content.module;[
+
+<!-- Ackno ............................ -->
+
+<!ENTITY % ackno.module "INCLUDE">
+<![%ackno.module;[
+<!ENTITY % local.ackno.attrib "">
+<!ENTITY % ackno.role.attrib "%role.attrib;">
+
+<!ENTITY % ackno.element "INCLUDE">
+<![%ackno.element;[
+<!--doc:Acknowledgements in an Article.-->
+<!ELEMENT ackno %ho; (%docinfo.char.mix;)*>
+<!--end of ackno.element-->]]>
+
+<!ENTITY % ackno.attlist "INCLUDE">
+<![%ackno.attlist;[
+<!ATTLIST ackno
+ %common.attrib;
+ %ackno.role.attrib;
+ %local.ackno.attrib;
+>
+<!--end of ackno.attlist-->]]>
+<!--end of ackno.module-->]]>
+
+<!-- Address .......................... -->
+
+<!ENTITY % address.content.module "INCLUDE">
+<![%address.content.module;[
+<!ENTITY % address.module "INCLUDE">
+<![%address.module;[
+<!ENTITY % local.address.attrib "">
+<!ENTITY % address.role.attrib "%role.attrib;">
+
+<!ENTITY % address.element "INCLUDE">
+<![%address.element;[
+<!--doc:A real-world address, generally a postal address.-->
+<!ELEMENT address %ho; (#PCDATA|personname|%person.ident.mix;
+ |street|pob|postcode|city|state|country|phone
+ |fax|email|otheraddr)*>
+<!--end of address.element-->]]>
+
+<!ENTITY % address.attlist "INCLUDE">
+<![%address.attlist;[
+<!ATTLIST address
+ %linespecific.attrib;
+ %common.attrib;
+ %address.role.attrib;
+ %local.address.attrib;
+>
+<!--end of address.attlist-->]]>
+<!--end of address.module-->]]>
+
+ <!ENTITY % street.module "INCLUDE">
+ <![%street.module;[
+ <!ENTITY % local.street.attrib "">
+ <!ENTITY % street.role.attrib "%role.attrib;">
+
+<!ENTITY % street.element "INCLUDE">
+<![%street.element;[
+<!--doc:A street address in an address.-->
+<!ELEMENT street %ho; (%docinfo.char.mix;)*>
+<!--end of street.element-->]]>
+
+<!ENTITY % street.attlist "INCLUDE">
+<![%street.attlist;[
+<!ATTLIST street
+ %common.attrib;
+ %street.role.attrib;
+ %local.street.attrib;
+>
+<!--end of street.attlist-->]]>
+ <!--end of street.module-->]]>
+
+ <!ENTITY % pob.module "INCLUDE">
+ <![%pob.module;[
+ <!ENTITY % local.pob.attrib "">
+ <!ENTITY % pob.role.attrib "%role.attrib;">
+
+<!ENTITY % pob.element "INCLUDE">
+<![%pob.element;[
+<!--doc:A post office box in an address.-->
+<!ELEMENT pob %ho; (%docinfo.char.mix;)*>
+<!--end of pob.element-->]]>
+
+<!ENTITY % pob.attlist "INCLUDE">
+<![%pob.attlist;[
+<!ATTLIST pob
+ %common.attrib;
+ %pob.role.attrib;
+ %local.pob.attrib;
+>
+<!--end of pob.attlist-->]]>
+ <!--end of pob.module-->]]>
+
+ <!ENTITY % postcode.module "INCLUDE">
+ <![%postcode.module;[
+ <!ENTITY % local.postcode.attrib "">
+ <!ENTITY % postcode.role.attrib "%role.attrib;">
+
+<!ENTITY % postcode.element "INCLUDE">
+<![%postcode.element;[
+<!--doc:A postal code in an address.-->
+<!ELEMENT postcode %ho; (%docinfo.char.mix;)*>
+<!--end of postcode.element-->]]>
+
+<!ENTITY % postcode.attlist "INCLUDE">
+<![%postcode.attlist;[
+<!ATTLIST postcode
+ %common.attrib;
+ %postcode.role.attrib;
+ %local.postcode.attrib;
+>
+<!--end of postcode.attlist-->]]>
+ <!--end of postcode.module-->]]>
+
+ <!ENTITY % city.module "INCLUDE">
+ <![%city.module;[
+ <!ENTITY % local.city.attrib "">
+ <!ENTITY % city.role.attrib "%role.attrib;">
+
+<!ENTITY % city.element "INCLUDE">
+<![%city.element;[
+<!--doc:The name of a city in an address.-->
+<!ELEMENT city %ho; (%docinfo.char.mix;)*>
+<!--end of city.element-->]]>
+
+<!ENTITY % city.attlist "INCLUDE">
+<![%city.attlist;[
+<!ATTLIST city
+ %common.attrib;
+ %city.role.attrib;
+ %local.city.attrib;
+>
+<!--end of city.attlist-->]]>
+ <!--end of city.module-->]]>
+
+ <!ENTITY % state.module "INCLUDE">
+ <![%state.module;[
+ <!ENTITY % local.state.attrib "">
+ <!ENTITY % state.role.attrib "%role.attrib;">
+
+<!ENTITY % state.element "INCLUDE">
+<![%state.element;[
+<!--doc:A state or province in an address.-->
+<!ELEMENT state %ho; (%docinfo.char.mix;)*>
+<!--end of state.element-->]]>
+
+<!ENTITY % state.attlist "INCLUDE">
+<![%state.attlist;[
+<!ATTLIST state
+ %common.attrib;
+ %state.role.attrib;
+ %local.state.attrib;
+>
+<!--end of state.attlist-->]]>
+ <!--end of state.module-->]]>
+
+ <!ENTITY % country.module "INCLUDE">
+ <![%country.module;[
+ <!ENTITY % local.country.attrib "">
+ <!ENTITY % country.role.attrib "%role.attrib;">
+
+<!ENTITY % country.element "INCLUDE">
+<![%country.element;[
+<!--doc:The name of a country.-->
+<!ELEMENT country %ho; (%docinfo.char.mix;)*>
+<!--end of country.element-->]]>
+
+<!ENTITY % country.attlist "INCLUDE">
+<![%country.attlist;[
+<!ATTLIST country
+ %common.attrib;
+ %country.role.attrib;
+ %local.country.attrib;
+>
+<!--end of country.attlist-->]]>
+ <!--end of country.module-->]]>
+
+ <!ENTITY % phone.module "INCLUDE">
+ <![%phone.module;[
+ <!ENTITY % local.phone.attrib "">
+ <!ENTITY % phone.role.attrib "%role.attrib;">
+
+<!ENTITY % phone.element "INCLUDE">
+<![%phone.element;[
+<!--doc:A telephone number.-->
+<!ELEMENT phone %ho; (%docinfo.char.mix;)*>
+<!--end of phone.element-->]]>
+
+<!ENTITY % phone.attlist "INCLUDE">
+<![%phone.attlist;[
+<!ATTLIST phone
+ %common.attrib;
+ %phone.role.attrib;
+ %local.phone.attrib;
+>
+<!--end of phone.attlist-->]]>
+ <!--end of phone.module-->]]>
+
+ <!ENTITY % fax.module "INCLUDE">
+ <![%fax.module;[
+ <!ENTITY % local.fax.attrib "">
+ <!ENTITY % fax.role.attrib "%role.attrib;">
+
+<!ENTITY % fax.element "INCLUDE">
+<![%fax.element;[
+<!--doc:A fax number.-->
+<!ELEMENT fax %ho; (%docinfo.char.mix;)*>
+<!--end of fax.element-->]]>
+
+<!ENTITY % fax.attlist "INCLUDE">
+<![%fax.attlist;[
+<!ATTLIST fax
+ %common.attrib;
+ %fax.role.attrib;
+ %local.fax.attrib;
+>
+<!--end of fax.attlist-->]]>
+ <!--end of fax.module-->]]>
+
+ <!-- Email (defined in the Inlines section, below)-->
+
+ <!ENTITY % otheraddr.module "INCLUDE">
+ <![%otheraddr.module;[
+ <!ENTITY % local.otheraddr.attrib "">
+ <!ENTITY % otheraddr.role.attrib "%role.attrib;">
+
+<!ENTITY % otheraddr.element "INCLUDE">
+<![%otheraddr.element;[
+<!--doc:Uncategorized information in address.-->
+<!ELEMENT otheraddr %ho; (%docinfo.char.mix;)*>
+<!--end of otheraddr.element-->]]>
+
+<!ENTITY % otheraddr.attlist "INCLUDE">
+<![%otheraddr.attlist;[
+<!ATTLIST otheraddr
+ %common.attrib;
+ %otheraddr.role.attrib;
+ %local.otheraddr.attrib;
+>
+<!--end of otheraddr.attlist-->]]>
+ <!--end of otheraddr.module-->]]>
+<!--end of address.content.module-->]]>
+
+<!-- Affiliation ...................... -->
+
+<!ENTITY % affiliation.content.module "INCLUDE">
+<![%affiliation.content.module;[
+<!ENTITY % affiliation.module "INCLUDE">
+<![%affiliation.module;[
+<!ENTITY % local.affiliation.attrib "">
+<!ENTITY % affiliation.role.attrib "%role.attrib;">
+
+<!ENTITY % affiliation.element "INCLUDE">
+<![%affiliation.element;[
+<!--doc:The institutional affiliation of an individual.-->
+<!ELEMENT affiliation %ho; (shortaffil?, jobtitle*, orgname?, orgdiv*,
+ address*)>
+<!--end of affiliation.element-->]]>
+
+<!ENTITY % affiliation.attlist "INCLUDE">
+<![%affiliation.attlist;[
+<!ATTLIST affiliation
+ %common.attrib;
+ %affiliation.role.attrib;
+ %local.affiliation.attrib;
+>
+<!--end of affiliation.attlist-->]]>
+<!--end of affiliation.module-->]]>
+
+ <!ENTITY % shortaffil.module "INCLUDE">
+ <![%shortaffil.module;[
+ <!ENTITY % local.shortaffil.attrib "">
+ <!ENTITY % shortaffil.role.attrib "%role.attrib;">
+
+<!ENTITY % shortaffil.element "INCLUDE">
+<![%shortaffil.element;[
+<!--doc:A brief description of an affiliation.-->
+<!ELEMENT shortaffil %ho; (%docinfo.char.mix;)*>
+<!--end of shortaffil.element-->]]>
+
+<!ENTITY % shortaffil.attlist "INCLUDE">
+<![%shortaffil.attlist;[
+<!ATTLIST shortaffil
+ %common.attrib;
+ %shortaffil.role.attrib;
+ %local.shortaffil.attrib;
+>
+<!--end of shortaffil.attlist-->]]>
+ <!--end of shortaffil.module-->]]>
+
+ <!ENTITY % jobtitle.module "INCLUDE">
+ <![%jobtitle.module;[
+ <!ENTITY % local.jobtitle.attrib "">
+ <!ENTITY % jobtitle.role.attrib "%role.attrib;">
+
+<!ENTITY % jobtitle.element "INCLUDE">
+<![%jobtitle.element;[
+<!--doc:The title of an individual in an organization.-->
+<!ELEMENT jobtitle %ho; (%docinfo.char.mix;)*>
+<!--end of jobtitle.element-->]]>
+
+<!ENTITY % jobtitle.attlist "INCLUDE">
+<![%jobtitle.attlist;[
+<!ATTLIST jobtitle
+ %common.attrib;
+ %jobtitle.role.attrib;
+ %local.jobtitle.attrib;
+>
+<!--end of jobtitle.attlist-->]]>
+ <!--end of jobtitle.module-->]]>
+
+ <!-- OrgName (defined elsewhere in this section)-->
+
+ <!ENTITY % orgdiv.module "INCLUDE">
+ <![%orgdiv.module;[
+ <!ENTITY % local.orgdiv.attrib "">
+ <!ENTITY % orgdiv.role.attrib "%role.attrib;">
+
+<!ENTITY % orgdiv.element "INCLUDE">
+<![%orgdiv.element;[
+<!--doc:A division of an organization.-->
+<!ELEMENT orgdiv %ho; (%docinfo.char.mix;)*>
+<!--end of orgdiv.element-->]]>
+
+<!ENTITY % orgdiv.attlist "INCLUDE">
+<![%orgdiv.attlist;[
+<!ATTLIST orgdiv
+ %common.attrib;
+ %orgdiv.role.attrib;
+ %local.orgdiv.attrib;
+>
+<!--end of orgdiv.attlist-->]]>
+ <!--end of orgdiv.module-->]]>
+
+ <!-- Address (defined elsewhere in this section)-->
+<!--end of affiliation.content.module-->]]>
+
+<!-- ArtPageNums ...................... -->
+
+<!ENTITY % artpagenums.module "INCLUDE">
+<![%artpagenums.module;[
+<!ENTITY % local.artpagenums.attrib "">
+<!ENTITY % artpagenums.role.attrib "%role.attrib;">
+
+<!ENTITY % artpagenums.element "INCLUDE">
+<![%artpagenums.element;[
+<!--doc:The page numbers of an article as published.-->
+<!ELEMENT artpagenums %ho; (%docinfo.char.mix;)*>
+<!--end of artpagenums.element-->]]>
+
+<!ENTITY % artpagenums.attlist "INCLUDE">
+<![%artpagenums.attlist;[
+<!ATTLIST artpagenums
+ %common.attrib;
+ %artpagenums.role.attrib;
+ %local.artpagenums.attrib;
+>
+<!--end of artpagenums.attlist-->]]>
+<!--end of artpagenums.module-->]]>
+
+<!-- PersonName -->
+
+<!ENTITY % personname.module "INCLUDE">
+<![%personname.module;[
+<!ENTITY % local.personname.attrib "">
+<!ENTITY % personname.role.attrib "%role.attrib;">
+
+<!ENTITY % personname.element "INCLUDE">
+<![%personname.element;[
+<!--doc:The personal name of an individual.-->
+<!ELEMENT personname %ho; ((honorific|firstname|surname|lineage|othername)+)>
+<!--end of personname.element-->]]>
+
+<!ENTITY % personname.attlist "INCLUDE">
+<![%personname.attlist;[
+<!ATTLIST personname
+ %common.attrib;
+ %personname.role.attrib;
+ %local.personname.attrib;
+>
+<!--end of personname.attlist-->]]>
+<!--end of personname.module-->]]>
+
+<!-- Author ........................... -->
+
+<!ENTITY % author.module "INCLUDE">
+<![%author.module;[
+<!ENTITY % local.author.attrib "">
+<!ENTITY % author.role.attrib "%role.attrib;">
+
+<!ENTITY % author.element "INCLUDE">
+<![%author.element;[
+<!--doc:The name of an individual author.-->
+<!ELEMENT author %ho; ((personname|(%person.ident.mix;)+),(personblurb|email|address)*)>
+<!--end of author.element-->]]>
+
+<!ENTITY % author.attlist "INCLUDE">
+<![%author.attlist;[
+<!ATTLIST author
+ %common.attrib;
+ %author.role.attrib;
+ %local.author.attrib;
+>
+<!--end of author.attlist-->]]>
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of author.module-->]]>
+
+<!-- AuthorGroup ...................... -->
+
+<!ENTITY % authorgroup.content.module "INCLUDE">
+<![%authorgroup.content.module;[
+<!ENTITY % authorgroup.module "INCLUDE">
+<![%authorgroup.module;[
+<!ENTITY % local.authorgroup.attrib "">
+<!ENTITY % authorgroup.role.attrib "%role.attrib;">
+
+<!ENTITY % authorgroup.element "INCLUDE">
+<![%authorgroup.element;[
+<!--doc:Wrapper for author information when a document has multiple authors or collabarators.-->
+<!ELEMENT authorgroup %ho; ((author|editor|collab|corpauthor|corpcredit|othercredit)+)>
+<!--end of authorgroup.element-->]]>
+
+<!ENTITY % authorgroup.attlist "INCLUDE">
+<![%authorgroup.attlist;[
+<!ATTLIST authorgroup
+ %common.attrib;
+ %authorgroup.role.attrib;
+ %local.authorgroup.attrib;
+>
+<!--end of authorgroup.attlist-->]]>
+<!--end of authorgroup.module-->]]>
+
+ <!-- Author (defined elsewhere in this section)-->
+ <!-- Editor (defined elsewhere in this section)-->
+
+ <!ENTITY % collab.content.module "INCLUDE">
+ <![%collab.content.module;[
+ <!ENTITY % collab.module "INCLUDE">
+ <![%collab.module;[
+ <!ENTITY % local.collab.attrib "">
+ <!ENTITY % collab.role.attrib "%role.attrib;">
+
+<!ENTITY % collab.element "INCLUDE">
+<![%collab.element;[
+<!--doc:Identifies a collaborator.-->
+<!ELEMENT collab %ho; (collabname, affiliation*)>
+<!--end of collab.element-->]]>
+
+<!ENTITY % collab.attlist "INCLUDE">
+<![%collab.attlist;[
+<!ATTLIST collab
+ %common.attrib;
+ %collab.role.attrib;
+ %local.collab.attrib;
+>
+<!--end of collab.attlist-->]]>
+ <!--end of collab.module-->]]>
+
+ <!ENTITY % collabname.module "INCLUDE">
+ <![%collabname.module;[
+ <!ENTITY % local.collabname.attrib "">
+ <!ENTITY % collabname.role.attrib "%role.attrib;">
+
+<!ENTITY % collabname.element "INCLUDE">
+<![%collabname.element;[
+<!--doc:The name of a collaborator.-->
+<!ELEMENT collabname %ho; (%docinfo.char.mix;)*>
+<!--end of collabname.element-->]]>
+
+<!ENTITY % collabname.attlist "INCLUDE">
+<![%collabname.attlist;[
+<!ATTLIST collabname
+ %common.attrib;
+ %collabname.role.attrib;
+ %local.collabname.attrib;
+>
+<!--end of collabname.attlist-->]]>
+ <!--end of collabname.module-->]]>
+
+ <!-- Affiliation (defined elsewhere in this section)-->
+ <!--end of collab.content.module-->]]>
+
+ <!-- CorpAuthor (defined elsewhere in this section)-->
+ <!-- OtherCredit (defined elsewhere in this section)-->
+
+<!--end of authorgroup.content.module-->]]>
+
+<!-- AuthorInitials ................... -->
+
+<!ENTITY % authorinitials.module "INCLUDE">
+<![%authorinitials.module;[
+<!ENTITY % local.authorinitials.attrib "">
+<!ENTITY % authorinitials.role.attrib "%role.attrib;">
+
+<!ENTITY % authorinitials.element "INCLUDE">
+<![%authorinitials.element;[
+<!--doc:The initials or other short identifier for an author.-->
+<!ELEMENT authorinitials %ho; (%docinfo.char.mix;)*>
+<!--end of authorinitials.element-->]]>
+
+<!ENTITY % authorinitials.attlist "INCLUDE">
+<![%authorinitials.attlist;[
+<!ATTLIST authorinitials
+ %common.attrib;
+ %authorinitials.role.attrib;
+ %local.authorinitials.attrib;
+>
+<!--end of authorinitials.attlist-->]]>
+<!--end of authorinitials.module-->]]>
+
+<!-- ConfGroup ........................ -->
+
+<!ENTITY % confgroup.content.module "INCLUDE">
+<![%confgroup.content.module;[
+<!ENTITY % confgroup.module "INCLUDE">
+<![%confgroup.module;[
+<!ENTITY % local.confgroup.attrib "">
+<!ENTITY % confgroup.role.attrib "%role.attrib;">
+
+<!ENTITY % confgroup.element "INCLUDE">
+<![%confgroup.element;[
+<!--doc:A wrapper for document meta-information about a conference.-->
+<!ELEMENT confgroup %ho; ((confdates|conftitle|confnum|address|confsponsor)*)>
+<!--end of confgroup.element-->]]>
+
+<!ENTITY % confgroup.attlist "INCLUDE">
+<![%confgroup.attlist;[
+<!ATTLIST confgroup
+ %common.attrib;
+ %confgroup.role.attrib;
+ %local.confgroup.attrib;
+>
+<!--end of confgroup.attlist-->]]>
+<!--end of confgroup.module-->]]>
+
+ <!ENTITY % confdates.module "INCLUDE">
+ <![%confdates.module;[
+ <!ENTITY % local.confdates.attrib "">
+ <!ENTITY % confdates.role.attrib "%role.attrib;">
+
+<!ENTITY % confdates.element "INCLUDE">
+<![%confdates.element;[
+<!--doc:The dates of a conference for which a document was written.-->
+<!ELEMENT confdates %ho; (%docinfo.char.mix;)*>
+<!--end of confdates.element-->]]>
+
+<!ENTITY % confdates.attlist "INCLUDE">
+<![%confdates.attlist;[
+<!ATTLIST confdates
+ %common.attrib;
+ %confdates.role.attrib;
+ %local.confdates.attrib;
+>
+<!--end of confdates.attlist-->]]>
+ <!--end of confdates.module-->]]>
+
+ <!ENTITY % conftitle.module "INCLUDE">
+ <![%conftitle.module;[
+ <!ENTITY % local.conftitle.attrib "">
+ <!ENTITY % conftitle.role.attrib "%role.attrib;">
+
+<!ENTITY % conftitle.element "INCLUDE">
+<![%conftitle.element;[
+<!--doc:The title of a conference for which a document was written.-->
+<!ELEMENT conftitle %ho; (%docinfo.char.mix;)*>
+<!--end of conftitle.element-->]]>
+
+<!ENTITY % conftitle.attlist "INCLUDE">
+<![%conftitle.attlist;[
+<!ATTLIST conftitle
+ %common.attrib;
+ %conftitle.role.attrib;
+ %local.conftitle.attrib;
+>
+<!--end of conftitle.attlist-->]]>
+ <!--end of conftitle.module-->]]>
+
+ <!ENTITY % confnum.module "INCLUDE">
+ <![%confnum.module;[
+ <!ENTITY % local.confnum.attrib "">
+ <!ENTITY % confnum.role.attrib "%role.attrib;">
+
+<!ENTITY % confnum.element "INCLUDE">
+<![%confnum.element;[
+<!--doc:An identifier, frequently numerical, associated with a conference for which a document was written.-->
+<!ELEMENT confnum %ho; (%docinfo.char.mix;)*>
+<!--end of confnum.element-->]]>
+
+<!ENTITY % confnum.attlist "INCLUDE">
+<![%confnum.attlist;[
+<!ATTLIST confnum
+ %common.attrib;
+ %confnum.role.attrib;
+ %local.confnum.attrib;
+>
+<!--end of confnum.attlist-->]]>
+ <!--end of confnum.module-->]]>
+
+ <!-- Address (defined elsewhere in this section)-->
+
+ <!ENTITY % confsponsor.module "INCLUDE">
+ <![%confsponsor.module;[
+ <!ENTITY % local.confsponsor.attrib "">
+ <!ENTITY % confsponsor.role.attrib "%role.attrib;">
+
+<!ENTITY % confsponsor.element "INCLUDE">
+<![%confsponsor.element;[
+<!--doc:The sponsor of a conference for which a document was written.-->
+<!ELEMENT confsponsor %ho; (%docinfo.char.mix;)*>
+<!--end of confsponsor.element-->]]>
+
+<!ENTITY % confsponsor.attlist "INCLUDE">
+<![%confsponsor.attlist;[
+<!ATTLIST confsponsor
+ %common.attrib;
+ %confsponsor.role.attrib;
+ %local.confsponsor.attrib;
+>
+<!--end of confsponsor.attlist-->]]>
+ <!--end of confsponsor.module-->]]>
+<!--end of confgroup.content.module-->]]>
+
+<!-- ContractNum ...................... -->
+
+<!ENTITY % contractnum.module "INCLUDE">
+<![%contractnum.module;[
+<!ENTITY % local.contractnum.attrib "">
+<!ENTITY % contractnum.role.attrib "%role.attrib;">
+
+<!ENTITY % contractnum.element "INCLUDE">
+<![%contractnum.element;[
+<!--doc:The contract number of a document.-->
+<!ELEMENT contractnum %ho; (%docinfo.char.mix;)*>
+<!--end of contractnum.element-->]]>
+
+<!ENTITY % contractnum.attlist "INCLUDE">
+<![%contractnum.attlist;[
+<!ATTLIST contractnum
+ %common.attrib;
+ %contractnum.role.attrib;
+ %local.contractnum.attrib;
+>
+<!--end of contractnum.attlist-->]]>
+<!--end of contractnum.module-->]]>
+
+<!-- ContractSponsor .................. -->
+
+<!ENTITY % contractsponsor.module "INCLUDE">
+<![%contractsponsor.module;[
+<!ENTITY % local.contractsponsor.attrib "">
+<!ENTITY % contractsponsor.role.attrib "%role.attrib;">
+
+<!ENTITY % contractsponsor.element "INCLUDE">
+<![%contractsponsor.element;[
+<!--doc:The sponsor of a contract.-->
+<!ELEMENT contractsponsor %ho; (%docinfo.char.mix;)*>
+<!--end of contractsponsor.element-->]]>
+
+<!ENTITY % contractsponsor.attlist "INCLUDE">
+<![%contractsponsor.attlist;[
+<!ATTLIST contractsponsor
+ %common.attrib;
+ %contractsponsor.role.attrib;
+ %local.contractsponsor.attrib;
+>
+<!--end of contractsponsor.attlist-->]]>
+<!--end of contractsponsor.module-->]]>
+
+<!-- Copyright ........................ -->
+
+<!ENTITY % copyright.content.module "INCLUDE">
+<![%copyright.content.module;[
+<!ENTITY % copyright.module "INCLUDE">
+<![%copyright.module;[
+<!ENTITY % local.copyright.attrib "">
+<!ENTITY % copyright.role.attrib "%role.attrib;">
+
+<!ENTITY % copyright.element "INCLUDE">
+<![%copyright.element;[
+<!--doc:Copyright information about a document.-->
+<!ELEMENT copyright %ho; (year+, holder*)>
+<!--end of copyright.element-->]]>
+
+<!ENTITY % copyright.attlist "INCLUDE">
+<![%copyright.attlist;[
+<!ATTLIST copyright
+ %common.attrib;
+ %copyright.role.attrib;
+ %local.copyright.attrib;
+>
+<!--end of copyright.attlist-->]]>
+<!--end of copyright.module-->]]>
+
+ <!ENTITY % year.module "INCLUDE">
+ <![%year.module;[
+ <!ENTITY % local.year.attrib "">
+ <!ENTITY % year.role.attrib "%role.attrib;">
+
+<!ENTITY % year.element "INCLUDE">
+<![%year.element;[
+<!--doc:The year of publication of a document.-->
+<!ELEMENT year %ho; (%docinfo.char.mix;)*>
+<!--end of year.element-->]]>
+
+<!ENTITY % year.attlist "INCLUDE">
+<![%year.attlist;[
+<!ATTLIST year
+ %common.attrib;
+ %year.role.attrib;
+ %local.year.attrib;
+>
+<!--end of year.attlist-->]]>
+ <!--end of year.module-->]]>
+
+ <!ENTITY % holder.module "INCLUDE">
+ <![%holder.module;[
+ <!ENTITY % local.holder.attrib "">
+ <!ENTITY % holder.role.attrib "%role.attrib;">
+
+<!ENTITY % holder.element "INCLUDE">
+<![%holder.element;[
+<!--doc:The name of the individual or organization that holds a copyright.-->
+<!ELEMENT holder %ho; (%docinfo.char.mix;)*>
+<!--end of holder.element-->]]>
+
+<!ENTITY % holder.attlist "INCLUDE">
+<![%holder.attlist;[
+<!ATTLIST holder
+ %common.attrib;
+ %holder.role.attrib;
+ %local.holder.attrib;
+>
+<!--end of holder.attlist-->]]>
+ <!--end of holder.module-->]]>
+<!--end of copyright.content.module-->]]>
+
+<!-- CorpAuthor ....................... -->
+
+<!ENTITY % corpauthor.module "INCLUDE">
+<![%corpauthor.module;[
+<!ENTITY % local.corpauthor.attrib "">
+<!ENTITY % corpauthor.role.attrib "%role.attrib;">
+
+<!ENTITY % corpauthor.element "INCLUDE">
+<![%corpauthor.element;[
+<!--doc:A corporate author, as opposed to an individual.-->
+<!ELEMENT corpauthor %ho; (%docinfo.char.mix;)*>
+<!--end of corpauthor.element-->]]>
+
+<!ENTITY % corpauthor.attlist "INCLUDE">
+<![%corpauthor.attlist;[
+<!ATTLIST corpauthor
+ %common.attrib;
+ %corpauthor.role.attrib;
+ %local.corpauthor.attrib;
+>
+<!--end of corpauthor.attlist-->]]>
+<!--end of corpauthor.module-->]]>
+
+<!-- CorpCredit ...................... -->
+
+<!ENTITY % corpcredit.module "INCLUDE">
+<![%corpcredit.module;[
+<!ENTITY % local.corpcredit.attrib "">
+<!ENTITY % corpcredit.role.attrib "%role.attrib;">
+
+<!ENTITY % corpcredit.element "INCLUDE">
+<![%corpcredit.element;[
+<!--doc:A corporation or organization credited in a document.-->
+<!ELEMENT corpcredit %ho; (%docinfo.char.mix;)*>
+<!--end of corpcredit.element-->]]>
+
+<!ENTITY % corpcredit.attlist "INCLUDE">
+<![%corpcredit.attlist;[
+<!ATTLIST corpcredit
+ class (graphicdesigner
+ |productioneditor
+ |copyeditor
+ |technicaleditor
+ |translator
+ |other) #IMPLIED
+ %common.attrib;
+ %corpcredit.role.attrib;
+ %local.corpcredit.attrib;
+>
+<!--end of corpcredit.attlist-->]]>
+<!--end of corpcredit.module-->]]>
+
+<!-- CorpName ......................... -->
+
+<!ENTITY % corpname.module "INCLUDE">
+<![%corpname.module;[
+<!ENTITY % local.corpname.attrib "">
+
+<!ENTITY % corpname.element "INCLUDE">
+<![%corpname.element;[
+<!--doc:The name of a corporation.-->
+<!ELEMENT corpname %ho; (%docinfo.char.mix;)*>
+<!--end of corpname.element-->]]>
+<!ENTITY % corpname.role.attrib "%role.attrib;">
+
+<!ENTITY % corpname.attlist "INCLUDE">
+<![%corpname.attlist;[
+<!ATTLIST corpname
+ %common.attrib;
+ %corpname.role.attrib;
+ %local.corpname.attrib;
+>
+<!--end of corpname.attlist-->]]>
+<!--end of corpname.module-->]]>
+
+<!-- Date ............................. -->
+
+<!ENTITY % date.module "INCLUDE">
+<![%date.module;[
+<!ENTITY % local.date.attrib "">
+<!ENTITY % date.role.attrib "%role.attrib;">
+
+<!ENTITY % date.element "INCLUDE">
+<![%date.element;[
+<!--doc:The date of publication or revision of a document.-->
+<!ELEMENT date %ho; (%docinfo.char.mix;)*>
+<!--end of date.element-->]]>
+
+<!ENTITY % date.attlist "INCLUDE">
+<![%date.attlist;[
+<!ATTLIST date
+ %common.attrib;
+ %date.role.attrib;
+ %local.date.attrib;
+>
+<!--end of date.attlist-->]]>
+<!--end of date.module-->]]>
+
+<!-- Edition .......................... -->
+
+<!ENTITY % edition.module "INCLUDE">
+<![%edition.module;[
+<!ENTITY % local.edition.attrib "">
+<!ENTITY % edition.role.attrib "%role.attrib;">
+
+<!ENTITY % edition.element "INCLUDE">
+<![%edition.element;[
+<!--doc:The name or number of an edition of a document.-->
+<!ELEMENT edition %ho; (%docinfo.char.mix;)*>
+<!--end of edition.element-->]]>
+
+<!ENTITY % edition.attlist "INCLUDE">
+<![%edition.attlist;[
+<!ATTLIST edition
+ %common.attrib;
+ %edition.role.attrib;
+ %local.edition.attrib;
+>
+<!--end of edition.attlist-->]]>
+<!--end of edition.module-->]]>
+
+<!-- Editor ........................... -->
+
+<!ENTITY % editor.module "INCLUDE">
+<![%editor.module;[
+<!ENTITY % local.editor.attrib "">
+<!ENTITY % editor.role.attrib "%role.attrib;">
+
+<!ENTITY % editor.element "INCLUDE">
+<![%editor.element;[
+<!--doc:The name of the editor of a document.-->
+<!ELEMENT editor %ho; ((personname|(%person.ident.mix;)+),(personblurb|email|address)*)>
+<!--end of editor.element-->]]>
+
+<!ENTITY % editor.attlist "INCLUDE">
+<![%editor.attlist;[
+<!ATTLIST editor
+ %common.attrib;
+ %editor.role.attrib;
+ %local.editor.attrib;
+>
+<!--end of editor.attlist-->]]>
+ <!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of editor.module-->]]>
+
+<!-- ISBN ............................. -->
+
+<!ENTITY % isbn.module "INCLUDE">
+<![%isbn.module;[
+<!ENTITY % local.isbn.attrib "">
+<!ENTITY % isbn.role.attrib "%role.attrib;">
+
+<!ENTITY % isbn.element "INCLUDE">
+<![%isbn.element;[
+<!--doc:The International Standard Book Number of a document.-->
+<!ELEMENT isbn %ho; (%docinfo.char.mix;)*>
+<!--end of isbn.element-->]]>
+
+<!ENTITY % isbn.attlist "INCLUDE">
+<![%isbn.attlist;[
+<!ATTLIST isbn
+ %common.attrib;
+ %isbn.role.attrib;
+ %local.isbn.attrib;
+>
+<!--end of isbn.attlist-->]]>
+<!--end of isbn.module-->]]>
+
+<!-- ISSN ............................. -->
+
+<!ENTITY % issn.module "INCLUDE">
+<![%issn.module;[
+<!ENTITY % local.issn.attrib "">
+<!ENTITY % issn.role.attrib "%role.attrib;">
+
+<!ENTITY % issn.element "INCLUDE">
+<![%issn.element;[
+<!--doc:The International Standard Serial Number of a periodical.-->
+<!ELEMENT issn %ho; (%docinfo.char.mix;)*>
+<!--end of issn.element-->]]>
+
+<!ENTITY % issn.attlist "INCLUDE">
+<![%issn.attlist;[
+<!ATTLIST issn
+ %common.attrib;
+ %issn.role.attrib;
+ %local.issn.attrib;
+>
+<!--end of issn.attlist-->]]>
+<!--end of issn.module-->]]>
+
+<!-- BiblioId ................. -->
+<!ENTITY % biblio.class.attrib
+ "class (uri
+ |doi
+ |isbn
+ |isrn
+ |issn
+ |libraryofcongress
+ |pubnumber
+ |other) #IMPLIED
+ otherclass CDATA #IMPLIED"
+>
+
+<!ENTITY % biblioid.module "INCLUDE">
+<![%biblioid.module;[
+<!ENTITY % local.biblioid.attrib "">
+<!ENTITY % biblioid.role.attrib "%role.attrib;">
+
+<!ENTITY % biblioid.element "INCLUDE">
+<![%biblioid.element;[
+<!--doc:An identifier for a document.-->
+<!ELEMENT biblioid %ho; (%docinfo.char.mix;)*>
+<!--end of biblioid.element-->]]>
+
+<!ENTITY % biblioid.attlist "INCLUDE">
+<![%biblioid.attlist;[
+<!ATTLIST biblioid
+ %biblio.class.attrib;
+ %common.attrib;
+ %biblioid.role.attrib;
+ %local.biblioid.attrib;
+>
+<!--end of biblioid.attlist-->]]>
+<!--end of biblioid.module-->]]>
+
+<!-- CiteBiblioId ................. -->
+
+<!ENTITY % citebiblioid.module "INCLUDE">
+<![%citebiblioid.module;[
+<!ENTITY % local.citebiblioid.attrib "">
+<!ENTITY % citebiblioid.role.attrib "%role.attrib;">
+
+<!ENTITY % citebiblioid.element "INCLUDE">
+<![%citebiblioid.element;[
+<!--doc:A citation of a bibliographic identifier.-->
+<!ELEMENT citebiblioid %ho; (%docinfo.char.mix;)*>
+<!--end of citebiblioid.element-->]]>
+
+<!ENTITY % citebiblioid.attlist "INCLUDE">
+<![%citebiblioid.attlist;[
+<!ATTLIST citebiblioid
+ %biblio.class.attrib;
+ %common.attrib;
+ %citebiblioid.role.attrib;
+ %local.citebiblioid.attrib;
+>
+<!--end of citebiblioid.attlist-->]]>
+<!--end of citebiblioid.module-->]]>
+
+<!-- BiblioSource ................. -->
+
+<!ENTITY % bibliosource.module "INCLUDE">
+<![%bibliosource.module;[
+<!ENTITY % local.bibliosource.attrib "">
+<!ENTITY % bibliosource.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliosource.element "INCLUDE">
+<![%bibliosource.element;[
+<!--doc:The source of a document.-->
+<!ELEMENT bibliosource %ho; (%docinfo.char.mix;)*>
+<!--end of bibliosource.element-->]]>
+
+<!ENTITY % bibliosource.attlist "INCLUDE">
+<![%bibliosource.attlist;[
+<!ATTLIST bibliosource
+ %biblio.class.attrib;
+ %common.attrib;
+ %bibliosource.role.attrib;
+ %local.bibliosource.attrib;
+>
+<!--end of bibliosource.attlist-->]]>
+<!--end of bibliosource.module-->]]>
+
+<!-- BiblioRelation ................. -->
+
+<!ENTITY % bibliorelation.module "INCLUDE">
+<![%bibliorelation.module;[
+<!ENTITY % local.bibliorelation.attrib "">
+<!ENTITY % local.bibliorelation.types "">
+
+<!ENTITY % bibliorelation.type.attrib
+ "type (isversionof
+ |hasversion
+ |isreplacedby
+ |replaces
+ |isrequiredby
+ |requires
+ |ispartof
+ |haspart
+ |isreferencedby
+ |references
+ |isformatof
+ |hasformat
+ |othertype
+ %local.bibliorelation.types;) #IMPLIED
+ othertype CDATA #IMPLIED
+">
+
+<!ENTITY % bibliorelation.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliorelation.element "INCLUDE">
+<![%bibliorelation.element;[
+<!--doc:The relationship of a document to another.-->
+<!ELEMENT bibliorelation %ho; (%docinfo.char.mix;)*>
+<!--end of bibliorelation.element-->]]>
+
+<!ENTITY % bibliorelation.attlist "INCLUDE">
+<![%bibliorelation.attlist;[
+<!ATTLIST bibliorelation
+ %biblio.class.attrib;
+ %bibliorelation.type.attrib;
+ %common.attrib;
+ %bibliorelation.role.attrib;
+ %local.bibliorelation.attrib;
+>
+<!--end of bibliorelation.attlist-->]]>
+<!--end of bibliorelation.module-->]]>
+
+<!-- BiblioCoverage ................. -->
+
+<!ENTITY % bibliocoverage.module "INCLUDE">
+<![%bibliocoverage.module;[
+<!ENTITY % local.bibliocoverage.attrib "">
+<!ENTITY % bibliocoverage.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliocoverage.element "INCLUDE">
+<![%bibliocoverage.element;[
+<!--doc:The spatial or temporal coverage of a document.-->
+<!ELEMENT bibliocoverage %ho; (%docinfo.char.mix;)*>
+<!--end of bibliocoverage.element-->]]>
+
+<!ENTITY % bibliocoverage.attlist "INCLUDE">
+<![%bibliocoverage.attlist;[
+<!ATTLIST bibliocoverage
+ spatial (dcmipoint|iso3166|dcmibox|tgn|otherspatial) #IMPLIED
+ otherspatial CDATA #IMPLIED
+ temporal (dcmiperiod|w3c-dtf|othertemporal) #IMPLIED
+ othertemporal CDATA #IMPLIED
+ %common.attrib;
+ %bibliocoverage.role.attrib;
+ %local.bibliocoverage.attrib;
+>
+<!--end of bibliocoverage.attlist-->]]>
+<!--end of bibliocoverage.module-->]]>
+
+<!-- InvPartNumber .................... -->
+
+<!ENTITY % invpartnumber.module "INCLUDE">
+<![%invpartnumber.module;[
+<!ENTITY % local.invpartnumber.attrib "">
+<!ENTITY % invpartnumber.role.attrib "%role.attrib;">
+
+<!ENTITY % invpartnumber.element "INCLUDE">
+<![%invpartnumber.element;[
+<!--doc:An inventory part number.-->
+<!ELEMENT invpartnumber %ho; (%docinfo.char.mix;)*>
+<!--end of invpartnumber.element-->]]>
+
+<!ENTITY % invpartnumber.attlist "INCLUDE">
+<![%invpartnumber.attlist;[
+<!ATTLIST invpartnumber
+ %common.attrib;
+ %invpartnumber.role.attrib;
+ %local.invpartnumber.attrib;
+>
+<!--end of invpartnumber.attlist-->]]>
+<!--end of invpartnumber.module-->]]>
+
+<!-- IssueNum ......................... -->
+
+<!ENTITY % issuenum.module "INCLUDE">
+<![%issuenum.module;[
+<!ENTITY % local.issuenum.attrib "">
+<!ENTITY % issuenum.role.attrib "%role.attrib;">
+
+<!ENTITY % issuenum.element "INCLUDE">
+<![%issuenum.element;[
+<!--doc:The number of an issue of a journal.-->
+<!ELEMENT issuenum %ho; (%docinfo.char.mix;)*>
+<!--end of issuenum.element-->]]>
+
+<!ENTITY % issuenum.attlist "INCLUDE">
+<![%issuenum.attlist;[
+<!ATTLIST issuenum
+ %common.attrib;
+ %issuenum.role.attrib;
+ %local.issuenum.attrib;
+>
+<!--end of issuenum.attlist-->]]>
+<!--end of issuenum.module-->]]>
+
+<!-- LegalNotice ...................... -->
+
+<!ENTITY % legalnotice.module "INCLUDE">
+<![%legalnotice.module;[
+<!ENTITY % local.legalnotice.attrib "">
+<!ENTITY % legalnotice.role.attrib "%role.attrib;">
+
+<!ENTITY % legalnotice.element "INCLUDE">
+<![%legalnotice.element;[
+<!--doc:A statement of legal obligations or requirements.-->
+<!ELEMENT legalnotice %ho; (blockinfo?, title?, (%legalnotice.mix;)+)
+ %formal.exclusion;>
+<!--end of legalnotice.element-->]]>
+
+<!ENTITY % legalnotice.attlist "INCLUDE">
+<![%legalnotice.attlist;[
+<!ATTLIST legalnotice
+ %common.attrib;
+ %legalnotice.role.attrib;
+ %local.legalnotice.attrib;
+>
+<!--end of legalnotice.attlist-->]]>
+<!--end of legalnotice.module-->]]>
+
+<!-- ModeSpec ......................... -->
+
+<!ENTITY % modespec.module "INCLUDE">
+<![%modespec.module;[
+<!ENTITY % local.modespec.attrib "">
+<!ENTITY % modespec.role.attrib "%role.attrib;">
+
+<!ENTITY % modespec.element "INCLUDE">
+<![%modespec.element;[
+<!--doc:Application-specific information necessary for the completion of an OLink.-->
+<!ELEMENT modespec %ho; (%docinfo.char.mix;)*
+ %ubiq.exclusion;>
+<!--end of modespec.element-->]]>
+
+<!-- Application: Type of action required for completion
+ of the links to which the ModeSpec is relevant (e.g.,
+ retrieval query) -->
+
+
+<!ENTITY % modespec.attlist "INCLUDE">
+<![%modespec.attlist;[
+<!ATTLIST modespec
+ application NOTATION
+ (%notation.class;) #IMPLIED
+ %common.attrib;
+ %modespec.role.attrib;
+ %local.modespec.attrib;
+>
+<!--end of modespec.attlist-->]]>
+<!--end of modespec.module-->]]>
+
+<!-- OrgName .......................... -->
+
+<!ENTITY % orgname.module "INCLUDE">
+<![%orgname.module;[
+<!ENTITY % local.orgname.attrib "">
+<!ENTITY % orgname.role.attrib "%role.attrib;">
+
+<!ENTITY % orgname.element "INCLUDE">
+<![%orgname.element;[
+<!--doc:The name of an organization other than a corporation.-->
+<!ELEMENT orgname %ho; (%docinfo.char.mix;)*>
+<!--end of orgname.element-->]]>
+
+<!ENTITY % orgname.attlist "INCLUDE">
+<![%orgname.attlist;[
+<!ATTLIST orgname
+ %common.attrib;
+ class (corporation|nonprofit|consortium|informal|other) #IMPLIED
+ otherclass CDATA #IMPLIED
+ %orgname.role.attrib;
+ %local.orgname.attrib;
+>
+<!--end of orgname.attlist-->]]>
+<!--end of orgname.module-->]]>
+
+<!-- OtherCredit ...................... -->
+
+<!ENTITY % othercredit.module "INCLUDE">
+<![%othercredit.module;[
+<!ENTITY % local.othercredit.attrib "">
+<!ENTITY % othercredit.role.attrib "%role.attrib;">
+
+<!ENTITY % othercredit.element "INCLUDE">
+<![%othercredit.element;[
+<!--doc:A person or entity, other than an author or editor, credited in a document.-->
+<!ELEMENT othercredit %ho; ((personname|(%person.ident.mix;)+),
+ (personblurb|email|address)*)>
+<!--end of othercredit.element-->]]>
+
+<!ENTITY % othercredit.attlist "INCLUDE">
+<![%othercredit.attlist;[
+<!ATTLIST othercredit
+ class (graphicdesigner
+ |productioneditor
+ |copyeditor
+ |technicaleditor
+ |translator
+ |other) #IMPLIED
+ %common.attrib;
+ %othercredit.role.attrib;
+ %local.othercredit.attrib;
+>
+<!--end of othercredit.attlist-->]]>
+ <!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of othercredit.module-->]]>
+
+<!-- PageNums ......................... -->
+
+<!ENTITY % pagenums.module "INCLUDE">
+<![%pagenums.module;[
+<!ENTITY % local.pagenums.attrib "">
+<!ENTITY % pagenums.role.attrib "%role.attrib;">
+
+<!ENTITY % pagenums.element "INCLUDE">
+<![%pagenums.element;[
+<!--doc:The numbers of the pages in a book, for use in a bibliographic entry.-->
+<!ELEMENT pagenums %ho; (%docinfo.char.mix;)*>
+<!--end of pagenums.element-->]]>
+
+<!ENTITY % pagenums.attlist "INCLUDE">
+<![%pagenums.attlist;[
+<!ATTLIST pagenums
+ %common.attrib;
+ %pagenums.role.attrib;
+ %local.pagenums.attrib;
+>
+<!--end of pagenums.attlist-->]]>
+<!--end of pagenums.module-->]]>
+
+<!-- Personal identity elements ....... -->
+
+<!-- These elements are used only within Author, Editor, and
+OtherCredit. -->
+
+<!ENTITY % person.ident.module "INCLUDE">
+<![%person.ident.module;[
+ <!ENTITY % contrib.module "INCLUDE">
+ <![%contrib.module;[
+ <!ENTITY % local.contrib.attrib "">
+ <!ENTITY % contrib.role.attrib "%role.attrib;">
+
+<!ENTITY % contrib.element "INCLUDE">
+<![%contrib.element;[
+<!--doc:A summary of the contributions made to a document by a credited source.-->
+<!ELEMENT contrib %ho; (%docinfo.char.mix;)*>
+<!--end of contrib.element-->]]>
+
+<!ENTITY % contrib.attlist "INCLUDE">
+<![%contrib.attlist;[
+<!ATTLIST contrib
+ %common.attrib;
+ %contrib.role.attrib;
+ %local.contrib.attrib;
+>
+<!--end of contrib.attlist-->]]>
+ <!--end of contrib.module-->]]>
+
+ <!ENTITY % firstname.module "INCLUDE">
+ <![%firstname.module;[
+ <!ENTITY % local.firstname.attrib "">
+ <!ENTITY % firstname.role.attrib "%role.attrib;">
+
+<!ENTITY % firstname.element "INCLUDE">
+<![%firstname.element;[
+<!--doc:The first name of a person.-->
+<!ELEMENT firstname %ho; (%docinfo.char.mix;)*>
+<!--end of firstname.element-->]]>
+
+<!ENTITY % firstname.attlist "INCLUDE">
+<![%firstname.attlist;[
+<!ATTLIST firstname
+ %common.attrib;
+ %firstname.role.attrib;
+ %local.firstname.attrib;
+>
+<!--end of firstname.attlist-->]]>
+ <!--end of firstname.module-->]]>
+
+ <!ENTITY % honorific.module "INCLUDE">
+ <![%honorific.module;[
+ <!ENTITY % local.honorific.attrib "">
+ <!ENTITY % honorific.role.attrib "%role.attrib;">
+
+<!ENTITY % honorific.element "INCLUDE">
+<![%honorific.element;[
+<!--doc:The title of a person.-->
+<!ELEMENT honorific %ho; (%docinfo.char.mix;)*>
+<!--end of honorific.element-->]]>
+
+<!ENTITY % honorific.attlist "INCLUDE">
+<![%honorific.attlist;[
+<!ATTLIST honorific
+ %common.attrib;
+ %honorific.role.attrib;
+ %local.honorific.attrib;
+>
+<!--end of honorific.attlist-->]]>
+ <!--end of honorific.module-->]]>
+
+ <!ENTITY % lineage.module "INCLUDE">
+ <![%lineage.module;[
+ <!ENTITY % local.lineage.attrib "">
+ <!ENTITY % lineage.role.attrib "%role.attrib;">
+
+<!ENTITY % lineage.element "INCLUDE">
+<![%lineage.element;[
+<!--doc:The portion of a person's name indicating a relationship to ancestors.-->
+<!ELEMENT lineage %ho; (%docinfo.char.mix;)*>
+<!--end of lineage.element-->]]>
+
+<!ENTITY % lineage.attlist "INCLUDE">
+<![%lineage.attlist;[
+<!ATTLIST lineage
+ %common.attrib;
+ %lineage.role.attrib;
+ %local.lineage.attrib;
+>
+<!--end of lineage.attlist-->]]>
+ <!--end of lineage.module-->]]>
+
+ <!ENTITY % othername.module "INCLUDE">
+ <![%othername.module;[
+ <!ENTITY % local.othername.attrib "">
+ <!ENTITY % othername.role.attrib "%role.attrib;">
+
+<!ENTITY % othername.element "INCLUDE">
+<![%othername.element;[
+<!--doc:A component of a persons name that is not a first name, surname, or lineage.-->
+<!ELEMENT othername %ho; (%docinfo.char.mix;)*>
+<!--end of othername.element-->]]>
+
+<!ENTITY % othername.attlist "INCLUDE">
+<![%othername.attlist;[
+<!ATTLIST othername
+ %common.attrib;
+ %othername.role.attrib;
+ %local.othername.attrib;
+>
+<!--end of othername.attlist-->]]>
+ <!--end of othername.module-->]]>
+
+ <!ENTITY % surname.module "INCLUDE">
+ <![%surname.module;[
+ <!ENTITY % local.surname.attrib "">
+ <!ENTITY % surname.role.attrib "%role.attrib;">
+
+<!ENTITY % surname.element "INCLUDE">
+<![%surname.element;[
+<!--doc:A family name; in western cultures the last name.-->
+<!ELEMENT surname %ho; (%docinfo.char.mix;)*>
+<!--end of surname.element-->]]>
+
+<!ENTITY % surname.attlist "INCLUDE">
+<![%surname.attlist;[
+<!ATTLIST surname
+ %common.attrib;
+ %surname.role.attrib;
+ %local.surname.attrib;
+>
+<!--end of surname.attlist-->]]>
+ <!--end of surname.module-->]]>
+<!--end of person.ident.module-->]]>
+
+<!-- PrintHistory ..................... -->
+
+<!ENTITY % printhistory.module "INCLUDE">
+<![%printhistory.module;[
+<!ENTITY % local.printhistory.attrib "">
+<!ENTITY % printhistory.role.attrib "%role.attrib;">
+
+<!ENTITY % printhistory.element "INCLUDE">
+<![%printhistory.element;[
+<!--doc:The printing history of a document.-->
+<!ELEMENT printhistory %ho; ((%para.class;)+)>
+<!--end of printhistory.element-->]]>
+
+<!ENTITY % printhistory.attlist "INCLUDE">
+<![%printhistory.attlist;[
+<!ATTLIST printhistory
+ %common.attrib;
+ %printhistory.role.attrib;
+ %local.printhistory.attrib;
+>
+<!--end of printhistory.attlist-->]]>
+<!--end of printhistory.module-->]]>
+
+<!-- ProductName ...................... -->
+
+<!ENTITY % productname.module "INCLUDE">
+<![%productname.module;[
+<!ENTITY % local.productname.attrib "">
+<!ENTITY % productname.role.attrib "%role.attrib;">
+
+<!ENTITY % productname.element "INCLUDE">
+<![%productname.element;[
+<!--doc:The formal name of a product.-->
+<!ELEMENT productname %ho; (%para.char.mix;)*>
+<!--end of productname.element-->]]>
+
+<!-- Class: More precisely identifies the item the element names -->
+
+
+<!ENTITY % productname.attlist "INCLUDE">
+<![%productname.attlist;[
+<!ATTLIST productname
+ class (service
+ |trade
+ |registered
+ |copyright) 'trade'
+ %common.attrib;
+ %productname.role.attrib;
+ %local.productname.attrib;
+>
+<!--end of productname.attlist-->]]>
+<!--end of productname.module-->]]>
+
+<!-- ProductNumber .................... -->
+
+<!ENTITY % productnumber.module "INCLUDE">
+<![%productnumber.module;[
+<!ENTITY % local.productnumber.attrib "">
+<!ENTITY % productnumber.role.attrib "%role.attrib;">
+
+<!ENTITY % productnumber.element "INCLUDE">
+<![%productnumber.element;[
+<!--doc:A number assigned to a product.-->
+<!ELEMENT productnumber %ho; (%docinfo.char.mix;)*>
+<!--end of productnumber.element-->]]>
+
+<!ENTITY % productnumber.attlist "INCLUDE">
+<![%productnumber.attlist;[
+<!ATTLIST productnumber
+ %common.attrib;
+ %productnumber.role.attrib;
+ %local.productnumber.attrib;
+>
+<!--end of productnumber.attlist-->]]>
+<!--end of productnumber.module-->]]>
+
+<!-- PubDate .......................... -->
+
+<!ENTITY % pubdate.module "INCLUDE">
+<![%pubdate.module;[
+<!ENTITY % local.pubdate.attrib "">
+<!ENTITY % pubdate.role.attrib "%role.attrib;">
+
+<!ENTITY % pubdate.element "INCLUDE">
+<![%pubdate.element;[
+<!--doc:The date of publication of a document.-->
+<!ELEMENT pubdate %ho; (%docinfo.char.mix;)*>
+<!--end of pubdate.element-->]]>
+
+<!ENTITY % pubdate.attlist "INCLUDE">
+<![%pubdate.attlist;[
+<!ATTLIST pubdate
+ %common.attrib;
+ %pubdate.role.attrib;
+ %local.pubdate.attrib;
+>
+<!--end of pubdate.attlist-->]]>
+<!--end of pubdate.module-->]]>
+
+<!-- Publisher ........................ -->
+
+<!ENTITY % publisher.content.module "INCLUDE">
+<![%publisher.content.module;[
+<!ENTITY % publisher.module "INCLUDE">
+<![%publisher.module;[
+<!ENTITY % local.publisher.attrib "">
+<!ENTITY % publisher.role.attrib "%role.attrib;">
+
+<!ENTITY % publisher.element "INCLUDE">
+<![%publisher.element;[
+<!--doc:The publisher of a document.-->
+<!ELEMENT publisher %ho; (publishername, address*)>
+<!--end of publisher.element-->]]>
+
+<!ENTITY % publisher.attlist "INCLUDE">
+<![%publisher.attlist;[
+<!ATTLIST publisher
+ %common.attrib;
+ %publisher.role.attrib;
+ %local.publisher.attrib;
+>
+<!--end of publisher.attlist-->]]>
+<!--end of publisher.module-->]]>
+
+ <!ENTITY % publishername.module "INCLUDE">
+ <![%publishername.module;[
+ <!ENTITY % local.publishername.attrib "">
+ <!ENTITY % publishername.role.attrib "%role.attrib;">
+
+<!ENTITY % publishername.element "INCLUDE">
+<![%publishername.element;[
+<!--doc:The name of the publisher of a document.-->
+<!ELEMENT publishername %ho; (%docinfo.char.mix;)*>
+<!--end of publishername.element-->]]>
+
+<!ENTITY % publishername.attlist "INCLUDE">
+<![%publishername.attlist;[
+<!ATTLIST publishername
+ %common.attrib;
+ %publishername.role.attrib;
+ %local.publishername.attrib;
+>
+<!--end of publishername.attlist-->]]>
+ <!--end of publishername.module-->]]>
+
+ <!-- Address (defined elsewhere in this section)-->
+<!--end of publisher.content.module-->]]>
+
+<!-- PubsNumber ....................... -->
+
+<!ENTITY % pubsnumber.module "INCLUDE">
+<![%pubsnumber.module;[
+<!ENTITY % local.pubsnumber.attrib "">
+<!ENTITY % pubsnumber.role.attrib "%role.attrib;">
+
+<!ENTITY % pubsnumber.element "INCLUDE">
+<![%pubsnumber.element;[
+<!--doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number.-->
+<!ELEMENT pubsnumber %ho; (%docinfo.char.mix;)*>
+<!--end of pubsnumber.element-->]]>
+
+<!ENTITY % pubsnumber.attlist "INCLUDE">
+<![%pubsnumber.attlist;[
+<!ATTLIST pubsnumber
+ %common.attrib;
+ %pubsnumber.role.attrib;
+ %local.pubsnumber.attrib;
+>
+<!--end of pubsnumber.attlist-->]]>
+<!--end of pubsnumber.module-->]]>
+
+<!-- ReleaseInfo ...................... -->
+
+<!ENTITY % releaseinfo.module "INCLUDE">
+<![%releaseinfo.module;[
+<!ENTITY % local.releaseinfo.attrib "">
+<!ENTITY % releaseinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % releaseinfo.element "INCLUDE">
+<![%releaseinfo.element;[
+<!--doc:Information about a particular release of a document.-->
+<!ELEMENT releaseinfo %ho; (%docinfo.char.mix;)*>
+<!--end of releaseinfo.element-->]]>
+
+<!ENTITY % releaseinfo.attlist "INCLUDE">
+<![%releaseinfo.attlist;[
+<!ATTLIST releaseinfo
+ %common.attrib;
+ %releaseinfo.role.attrib;
+ %local.releaseinfo.attrib;
+>
+<!--end of releaseinfo.attlist-->]]>
+<!--end of releaseinfo.module-->]]>
+
+<!-- RevHistory ....................... -->
+
+<!ENTITY % revhistory.content.module "INCLUDE">
+<![%revhistory.content.module;[
+<!ENTITY % revhistory.module "INCLUDE">
+<![%revhistory.module;[
+<!ENTITY % local.revhistory.attrib "">
+<!ENTITY % revhistory.role.attrib "%role.attrib;">
+
+<!ENTITY % revhistory.element "INCLUDE">
+<![%revhistory.element;[
+<!--doc:A history of the revisions to a document.-->
+<!ELEMENT revhistory %ho; (revision+)>
+<!--end of revhistory.element-->]]>
+
+<!ENTITY % revhistory.attlist "INCLUDE">
+<![%revhistory.attlist;[
+<!ATTLIST revhistory
+ %common.attrib;
+ %revhistory.role.attrib;
+ %local.revhistory.attrib;
+>
+<!--end of revhistory.attlist-->]]>
+<!--end of revhistory.module-->]]>
+
+<!ENTITY % revision.module "INCLUDE">
+<![%revision.module;[
+<!ENTITY % local.revision.attrib "">
+<!ENTITY % revision.role.attrib "%role.attrib;">
+
+<!ENTITY % revision.element "INCLUDE">
+<![%revision.element;[
+<!--doc:An entry describing a single revision in the history of the revisions to a document.-->
+<!ELEMENT revision %ho; (revnumber?, date, (author|authorinitials)*,
+ (revremark|revdescription)?)>
+<!--end of revision.element-->]]>
+
+<!ENTITY % revision.attlist "INCLUDE">
+<![%revision.attlist;[
+<!ATTLIST revision
+ %common.attrib;
+ %revision.role.attrib;
+ %local.revision.attrib;
+>
+<!--end of revision.attlist-->]]>
+<!--end of revision.module-->]]>
+
+<!ENTITY % revnumber.module "INCLUDE">
+<![%revnumber.module;[
+<!ENTITY % local.revnumber.attrib "">
+<!ENTITY % revnumber.role.attrib "%role.attrib;">
+
+<!ENTITY % revnumber.element "INCLUDE">
+<![%revnumber.element;[
+<!--doc:A document revision number.-->
+<!ELEMENT revnumber %ho; (%docinfo.char.mix;)*>
+<!--end of revnumber.element-->]]>
+
+<!ENTITY % revnumber.attlist "INCLUDE">
+<![%revnumber.attlist;[
+<!ATTLIST revnumber
+ %common.attrib;
+ %revnumber.role.attrib;
+ %local.revnumber.attrib;
+>
+<!--end of revnumber.attlist-->]]>
+<!--end of revnumber.module-->]]>
+
+<!-- Date (defined elsewhere in this section)-->
+<!-- AuthorInitials (defined elsewhere in this section)-->
+
+<!ENTITY % revremark.module "INCLUDE">
+<![%revremark.module;[
+<!ENTITY % local.revremark.attrib "">
+<!ENTITY % revremark.role.attrib "%role.attrib;">
+
+<!ENTITY % revremark.element "INCLUDE">
+<![%revremark.element;[
+<!--doc:A description of a revision to a document.-->
+<!ELEMENT revremark %ho; (%docinfo.char.mix;)*>
+<!--end of revremark.element-->]]>
+
+<!ENTITY % revremark.attlist "INCLUDE">
+<![%revremark.attlist;[
+<!ATTLIST revremark
+ %common.attrib;
+ %revremark.role.attrib;
+ %local.revremark.attrib;
+>
+<!--end of revremark.attlist-->]]>
+<!--end of revremark.module-->]]>
+
+<!ENTITY % revdescription.module "INCLUDE">
+<![ %revdescription.module; [
+<!ENTITY % local.revdescription.attrib "">
+<!ENTITY % revdescription.role.attrib "%role.attrib;">
+
+<!ENTITY % revdescription.element "INCLUDE">
+<![ %revdescription.element; [
+<!--doc:A extended description of a revision to a document.-->
+<!ELEMENT revdescription %ho; ((%revdescription.mix;)+)>
+<!--end of revdescription.element-->]]>
+
+<!ENTITY % revdescription.attlist "INCLUDE">
+<![ %revdescription.attlist; [
+<!ATTLIST revdescription
+ %common.attrib;
+ %revdescription.role.attrib;
+ %local.revdescription.attrib;
+>
+<!--end of revdescription.attlist-->]]>
+<!--end of revdescription.module-->]]>
+<!--end of revhistory.content.module-->]]>
+
+<!-- SeriesVolNums .................... -->
+
+<!ENTITY % seriesvolnums.module "INCLUDE">
+<![%seriesvolnums.module;[
+<!ENTITY % local.seriesvolnums.attrib "">
+<!ENTITY % seriesvolnums.role.attrib "%role.attrib;">
+
+<!ENTITY % seriesvolnums.element "INCLUDE">
+<![%seriesvolnums.element;[
+<!--doc:Numbers of the volumes in a series of books.-->
+<!ELEMENT seriesvolnums %ho; (%docinfo.char.mix;)*>
+<!--end of seriesvolnums.element-->]]>
+
+<!ENTITY % seriesvolnums.attlist "INCLUDE">
+<![%seriesvolnums.attlist;[
+<!ATTLIST seriesvolnums
+ %common.attrib;
+ %seriesvolnums.role.attrib;
+ %local.seriesvolnums.attrib;
+>
+<!--end of seriesvolnums.attlist-->]]>
+<!--end of seriesvolnums.module-->]]>
+
+<!-- VolumeNum ........................ -->
+
+<!ENTITY % volumenum.module "INCLUDE">
+<![%volumenum.module;[
+<!ENTITY % local.volumenum.attrib "">
+<!ENTITY % volumenum.role.attrib "%role.attrib;">
+
+<!ENTITY % volumenum.element "INCLUDE">
+<![%volumenum.element;[
+<!--doc:The volume number of a document in a set (as of books in a set or articles in a journal).-->
+<!ELEMENT volumenum %ho; (%docinfo.char.mix;)*>
+<!--end of volumenum.element-->]]>
+
+<!ENTITY % volumenum.attlist "INCLUDE">
+<![%volumenum.attlist;[
+<!ATTLIST volumenum
+ %common.attrib;
+ %volumenum.role.attrib;
+ %local.volumenum.attrib;
+>
+<!--end of volumenum.attlist-->]]>
+<!--end of volumenum.module-->]]>
+
+<!-- .................................. -->
+
+<!--end of docinfo.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Inline, link, and ubiquitous elements ................................ -->
+
+<!-- Technical and computer terms ......................................... -->
+
+<!ENTITY % accel.module "INCLUDE">
+<![%accel.module;[
+<!ENTITY % local.accel.attrib "">
+<!ENTITY % accel.role.attrib "%role.attrib;">
+
+<!ENTITY % accel.element "INCLUDE">
+<![%accel.element;[
+<!--doc:A graphical user interface (GUI) keyboard shortcut.-->
+<!ELEMENT accel %ho; (%smallcptr.char.mix;)*>
+<!--end of accel.element-->]]>
+
+<!ENTITY % accel.attlist "INCLUDE">
+<![%accel.attlist;[
+<!ATTLIST accel
+ %common.attrib;
+ %accel.role.attrib;
+ %local.accel.attrib;
+>
+<!--end of accel.attlist-->]]>
+<!--end of accel.module-->]]>
+
+<!ENTITY % action.module "INCLUDE">
+<![%action.module;[
+<!ENTITY % local.action.attrib "">
+<!ENTITY % action.role.attrib "%role.attrib;">
+
+<!ENTITY % action.element "INCLUDE">
+<![%action.element;[
+<!--doc:A response to a user event.-->
+<!ELEMENT action %ho; (%cptr.char.mix;)*>
+<!--end of action.element-->]]>
+
+<!ENTITY % action.attlist "INCLUDE">
+<![%action.attlist;[
+<!ATTLIST action
+ %moreinfo.attrib;
+ %common.attrib;
+ %action.role.attrib;
+ %local.action.attrib;
+>
+<!--end of action.attlist-->]]>
+<!--end of action.module-->]]>
+
+<!ENTITY % application.module "INCLUDE">
+<![%application.module;[
+<!ENTITY % local.application.attrib "">
+<!ENTITY % application.role.attrib "%role.attrib;">
+
+<!ENTITY % application.element "INCLUDE">
+<![%application.element;[
+<!--doc:The name of a software program.-->
+<!ELEMENT application %ho; (%para.char.mix;)*>
+<!--end of application.element-->]]>
+
+<!ENTITY % application.attlist "INCLUDE">
+<![%application.attlist;[
+<!ATTLIST application
+ class (hardware
+ |software) #IMPLIED
+ %moreinfo.attrib;
+ %common.attrib;
+ %application.role.attrib;
+ %local.application.attrib;
+>
+<!--end of application.attlist-->]]>
+<!--end of application.module-->]]>
+
+<!ENTITY % classname.module "INCLUDE">
+<![%classname.module;[
+<!ENTITY % local.classname.attrib "">
+<!ENTITY % classname.role.attrib "%role.attrib;">
+
+<!ENTITY % classname.element "INCLUDE">
+<![%classname.element;[
+<!--doc:The name of a class, in the object-oriented programming sense.-->
+<!ELEMENT classname %ho; (%smallcptr.char.mix;)*>
+<!--end of classname.element-->]]>
+
+<!ENTITY % classname.attlist "INCLUDE">
+<![%classname.attlist;[
+<!ATTLIST classname
+ %common.attrib;
+ %classname.role.attrib;
+ %local.classname.attrib;
+>
+<!--end of classname.attlist-->]]>
+<!--end of classname.module-->]]>
+
+<!ENTITY % package.module "INCLUDE">
+<![%package.module;[
+<!ENTITY % local.package.attrib "">
+<!ENTITY % package.role.attrib "%role.attrib;">
+
+<!ENTITY % package.element "INCLUDE">
+<![%package.element;[
+<!--doc:A package.-->
+<!ELEMENT package %ho; (%smallcptr.char.mix;)*>
+<!--end of package.element-->]]>
+
+<!ENTITY % package.attlist "INCLUDE">
+<![%package.attlist;[
+<!ATTLIST package
+ %common.attrib;
+ %package.role.attrib;
+ %local.package.attrib;
+>
+<!--end of package.attlist-->]]>
+<!--end of package.module-->]]>
+
+<!ENTITY % co.module "INCLUDE">
+<![%co.module;[
+<!ENTITY % local.co.attrib "">
+<!-- CO is a callout area of the LineColumn unit type (a single character
+ position); the position is directly indicated by the location of CO. -->
+<!ENTITY % co.role.attrib "%role.attrib;">
+
+<!ENTITY % co.element "INCLUDE">
+<![%co.element;[
+<!--doc:The location of a callout embedded in text.-->
+<!ELEMENT co %ho; EMPTY>
+<!--end of co.element-->]]>
+
+<!-- bug number/symbol override or initialization -->
+<!-- to any related information -->
+
+
+<!ENTITY % co.attlist "INCLUDE">
+<![%co.attlist;[
+<!ATTLIST co
+ %label.attrib;
+ %linkends.attrib;
+ %idreq.common.attrib;
+ %co.role.attrib;
+ %local.co.attrib;
+>
+<!--end of co.attlist-->]]>
+<!--end of co.module-->]]>
+
+<!ENTITY % coref.module "INCLUDE">
+<![%coref.module;[
+<!ENTITY % local.coref.attrib "">
+<!-- COREF is a reference to a CO -->
+<!ENTITY % coref.role.attrib "%role.attrib;">
+
+<!ENTITY % coref.element "INCLUDE">
+<![%coref.element;[
+<!--doc:A cross reference to a co.-->
+<!ELEMENT coref %ho; EMPTY>
+<!--end of coref.element-->]]>
+
+<!-- bug number/symbol override or initialization -->
+<!-- to any related information -->
+
+<!ENTITY % coref.attlist "INCLUDE">
+<![%coref.attlist;[
+<!ATTLIST coref
+ %label.attrib;
+ %linkendreq.attrib;
+ %common.attrib;
+ %coref.role.attrib;
+ %local.coref.attrib;
+>
+<!--end of coref.attlist-->]]>
+<!--end of coref.module-->]]>
+
+<!ENTITY % command.module "INCLUDE">
+<![%command.module;[
+<!ENTITY % local.command.attrib "">
+<!ENTITY % command.role.attrib "%role.attrib;">
+
+<!ENTITY % command.element "INCLUDE">
+<![%command.element;[
+<!--doc:The name of an executable program or other software command.-->
+<!ELEMENT command %ho; (%cptr.char.mix;)*>
+<!--end of command.element-->]]>
+
+<!ENTITY % command.attlist "INCLUDE">
+<![%command.attlist;[
+<!ATTLIST command
+ %moreinfo.attrib;
+ %common.attrib;
+ %command.role.attrib;
+ %local.command.attrib;
+>
+<!--end of command.attlist-->]]>
+<!--end of command.module-->]]>
+
+<!ENTITY % computeroutput.module "INCLUDE">
+<![%computeroutput.module;[
+<!ENTITY % local.computeroutput.attrib "">
+<!ENTITY % computeroutput.role.attrib "%role.attrib;">
+
+<!ENTITY % computeroutput.element "INCLUDE">
+<![%computeroutput.element;[
+<!--doc:Data, generally text, displayed or presented by a computer.-->
+<!ELEMENT computeroutput %ho; (%cptr.char.mix;|co)*>
+<!--end of computeroutput.element-->]]>
+
+<!ENTITY % computeroutput.attlist "INCLUDE">
+<![%computeroutput.attlist;[
+<!ATTLIST computeroutput
+ %moreinfo.attrib;
+ %common.attrib;
+ %computeroutput.role.attrib;
+ %local.computeroutput.attrib;
+>
+<!--end of computeroutput.attlist-->]]>
+<!--end of computeroutput.module-->]]>
+
+<!ENTITY % database.module "INCLUDE">
+<![%database.module;[
+<!ENTITY % local.database.attrib "">
+<!ENTITY % database.role.attrib "%role.attrib;">
+
+<!ENTITY % database.element "INCLUDE">
+<![%database.element;[
+<!--doc:The name of a database, or part of a database.-->
+<!ELEMENT database %ho; (%cptr.char.mix;)*>
+<!--end of database.element-->]]>
+
+<!-- Class: Type of database the element names; no default -->
+
+
+<!ENTITY % database.attlist "INCLUDE">
+<![%database.attlist;[
+<!ATTLIST database
+ class (name
+ |table
+ |field
+ |key1
+ |key2
+ |record
+ |index
+ |view
+ |primarykey
+ |secondarykey
+ |foreignkey
+ |altkey
+ |procedure
+ |datatype
+ |constraint
+ |rule
+ |user
+ |group) #IMPLIED
+ %moreinfo.attrib;
+ %common.attrib;
+ %database.role.attrib;
+ %local.database.attrib;
+>
+<!--end of database.attlist-->]]>
+<!--end of database.module-->]]>
+
+<!ENTITY % email.module "INCLUDE">
+<![%email.module;[
+<!ENTITY % local.email.attrib "">
+<!ENTITY % email.role.attrib "%role.attrib;">
+
+<!ENTITY % email.element "INCLUDE">
+<![%email.element;[
+<!--doc:An email address.-->
+<!ELEMENT email %ho; (%docinfo.char.mix;)*>
+<!--end of email.element-->]]>
+
+<!ENTITY % email.attlist "INCLUDE">
+<![%email.attlist;[
+<!ATTLIST email
+ %common.attrib;
+ %email.role.attrib;
+ %local.email.attrib;
+>
+<!--end of email.attlist-->]]>
+<!--end of email.module-->]]>
+
+<!ENTITY % envar.module "INCLUDE">
+<![%envar.module;[
+<!ENTITY % local.envar.attrib "">
+<!ENTITY % envar.role.attrib "%role.attrib;">
+
+<!ENTITY % envar.element "INCLUDE">
+<![%envar.element;[
+<!--doc:A software environment variable.-->
+<!ELEMENT envar %ho; (%smallcptr.char.mix;)*>
+<!--end of envar.element-->]]>
+
+<!ENTITY % envar.attlist "INCLUDE">
+<![%envar.attlist;[
+<!ATTLIST envar
+ %common.attrib;
+ %envar.role.attrib;
+ %local.envar.attrib;
+>
+<!--end of envar.attlist-->]]>
+<!--end of envar.module-->]]>
+
+
+<!ENTITY % errorcode.module "INCLUDE">
+<![%errorcode.module;[
+<!ENTITY % local.errorcode.attrib "">
+<!ENTITY % errorcode.role.attrib "%role.attrib;">
+
+<!ENTITY % errorcode.element "INCLUDE">
+<![%errorcode.element;[
+<!--doc:An error code.-->
+<!ELEMENT errorcode %ho; (%smallcptr.char.mix;)*>
+<!--end of errorcode.element-->]]>
+
+<!ENTITY % errorcode.attlist "INCLUDE">
+<![%errorcode.attlist;[
+<!ATTLIST errorcode
+ %moreinfo.attrib;
+ %common.attrib;
+ %errorcode.role.attrib;
+ %local.errorcode.attrib;
+>
+<!--end of errorcode.attlist-->]]>
+<!--end of errorcode.module-->]]>
+
+<!ENTITY % errorname.module "INCLUDE">
+<![%errorname.module;[
+<!ENTITY % local.errorname.attrib "">
+<!ENTITY % errorname.role.attrib "%role.attrib;">
+
+<!ENTITY % errorname.element "INCLUDE">
+<![%errorname.element;[
+<!--doc:An error name.-->
+<!ELEMENT errorname %ho; (%smallcptr.char.mix;)*>
+<!--end of errorname.element-->]]>
+
+<!ENTITY % errorname.attlist "INCLUDE">
+<![%errorname.attlist;[
+<!ATTLIST errorname
+ %common.attrib;
+ %errorname.role.attrib;
+ %local.errorname.attrib;
+>
+<!--end of errorname.attlist-->]]>
+<!--end of errorname.module-->]]>
+
+<!ENTITY % errortext.module "INCLUDE">
+<![%errortext.module;[
+<!ENTITY % local.errortext.attrib "">
+<!ENTITY % errortext.role.attrib "%role.attrib;">
+
+<!ENTITY % errortext.element "INCLUDE">
+<![%errortext.element;[
+<!--doc:An error message..-->
+<!ELEMENT errortext %ho; (%smallcptr.char.mix;)*>
+<!--end of errortext.element-->]]>
+
+<!ENTITY % errortext.attlist "INCLUDE">
+<![%errortext.attlist;[
+<!ATTLIST errortext
+ %common.attrib;
+ %errortext.role.attrib;
+ %local.errortext.attrib;
+>
+<!--end of errortext.attlist-->]]>
+<!--end of errortext.module-->]]>
+
+<!ENTITY % errortype.module "INCLUDE">
+<![%errortype.module;[
+<!ENTITY % local.errortype.attrib "">
+<!ENTITY % errortype.role.attrib "%role.attrib;">
+
+<!ENTITY % errortype.element "INCLUDE">
+<![%errortype.element;[
+<!--doc:The classification of an error message.-->
+<!ELEMENT errortype %ho; (%smallcptr.char.mix;)*>
+<!--end of errortype.element-->]]>
+
+<!ENTITY % errortype.attlist "INCLUDE">
+<![%errortype.attlist;[
+<!ATTLIST errortype
+ %common.attrib;
+ %errortype.role.attrib;
+ %local.errortype.attrib;
+>
+<!--end of errortype.attlist-->]]>
+<!--end of errortype.module-->]]>
+
+<!ENTITY % filename.module "INCLUDE">
+<![%filename.module;[
+<!ENTITY % local.filename.attrib "">
+<!ENTITY % filename.role.attrib "%role.attrib;">
+
+<!ENTITY % filename.element "INCLUDE">
+<![%filename.element;[
+<!--doc:The name of a file.-->
+<!ELEMENT filename %ho; (%cptr.char.mix;)*>
+<!--end of filename.element-->]]>
+
+<!-- Class: Type of filename the element names; no default -->
+<!-- Path: Search path (possibly system-specific) in which
+ file can be found -->
+
+
+<!ENTITY % filename.attlist "INCLUDE">
+<![%filename.attlist;[
+<!ATTLIST filename
+ class (headerfile
+ |partition
+ |devicefile
+ |libraryfile
+ |directory
+ |extension
+ |symlink) #IMPLIED
+ path CDATA #IMPLIED
+ %moreinfo.attrib;
+ %common.attrib;
+ %filename.role.attrib;
+ %local.filename.attrib;
+>
+<!--end of filename.attlist-->]]>
+<!--end of filename.module-->]]>
+
+<!ENTITY % function.module "INCLUDE">
+<![%function.module;[
+<!ENTITY % local.function.attrib "">
+<!ENTITY % function.role.attrib "%role.attrib;">
+
+<!ENTITY % function.element "INCLUDE">
+<![%function.element;[
+<!--doc:The name of a function or subroutine, as in a programming language.-->
+<!ELEMENT function %ho; (%cptr.char.mix;)*>
+<!--end of function.element-->]]>
+
+<!ENTITY % function.attlist "INCLUDE">
+<![%function.attlist;[
+<!ATTLIST function
+ %moreinfo.attrib;
+ %common.attrib;
+ %function.role.attrib;
+ %local.function.attrib;
+>
+<!--end of function.attlist-->]]>
+<!--end of function.module-->]]>
+
+<!ENTITY % guibutton.module "INCLUDE">
+<![%guibutton.module;[
+<!ENTITY % local.guibutton.attrib "">
+<!ENTITY % guibutton.role.attrib "%role.attrib;">
+
+<!ENTITY % guibutton.element "INCLUDE">
+<![%guibutton.element;[
+<!--doc:The text on a button in a GUI.-->
+<!ELEMENT guibutton %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*>
+<!--end of guibutton.element-->]]>
+
+<!ENTITY % guibutton.attlist "INCLUDE">
+<![%guibutton.attlist;[
+<!ATTLIST guibutton
+ %moreinfo.attrib;
+ %common.attrib;
+ %guibutton.role.attrib;
+ %local.guibutton.attrib;
+>
+<!--end of guibutton.attlist-->]]>
+<!--end of guibutton.module-->]]>
+
+<!ENTITY % guiicon.module "INCLUDE">
+<![%guiicon.module;[
+<!ENTITY % local.guiicon.attrib "">
+<!ENTITY % guiicon.role.attrib "%role.attrib;">
+
+<!ENTITY % guiicon.element "INCLUDE">
+<![%guiicon.element;[
+<!--doc:Graphic and/or text appearing as a icon in a GUI.-->
+<!ELEMENT guiicon %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*>
+<!--end of guiicon.element-->]]>
+
+<!ENTITY % guiicon.attlist "INCLUDE">
+<![%guiicon.attlist;[
+<!ATTLIST guiicon
+ %moreinfo.attrib;
+ %common.attrib;
+ %guiicon.role.attrib;
+ %local.guiicon.attrib;
+>
+<!--end of guiicon.attlist-->]]>
+<!--end of guiicon.module-->]]>
+
+<!ENTITY % guilabel.module "INCLUDE">
+<![%guilabel.module;[
+<!ENTITY % local.guilabel.attrib "">
+<!ENTITY % guilabel.role.attrib "%role.attrib;">
+
+<!ENTITY % guilabel.element "INCLUDE">
+<![%guilabel.element;[
+<!--doc:The text of a label in a GUI.-->
+<!ELEMENT guilabel %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*>
+<!--end of guilabel.element-->]]>
+
+<!ENTITY % guilabel.attlist "INCLUDE">
+<![%guilabel.attlist;[
+<!ATTLIST guilabel
+ %moreinfo.attrib;
+ %common.attrib;
+ %guilabel.role.attrib;
+ %local.guilabel.attrib;
+>
+<!--end of guilabel.attlist-->]]>
+<!--end of guilabel.module-->]]>
+
+<!ENTITY % guimenu.module "INCLUDE">
+<![%guimenu.module;[
+<!ENTITY % local.guimenu.attrib "">
+<!ENTITY % guimenu.role.attrib "%role.attrib;">
+
+<!ENTITY % guimenu.element "INCLUDE">
+<![%guimenu.element;[
+<!--doc:The name of a menu in a GUI.-->
+<!ELEMENT guimenu %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*>
+<!--end of guimenu.element-->]]>
+
+<!ENTITY % guimenu.attlist "INCLUDE">
+<![%guimenu.attlist;[
+<!ATTLIST guimenu
+ %moreinfo.attrib;
+ %common.attrib;
+ %guimenu.role.attrib;
+ %local.guimenu.attrib;
+>
+<!--end of guimenu.attlist-->]]>
+<!--end of guimenu.module-->]]>
+
+<!ENTITY % guimenuitem.module "INCLUDE">
+<![%guimenuitem.module;[
+<!ENTITY % local.guimenuitem.attrib "">
+<!ENTITY % guimenuitem.role.attrib "%role.attrib;">
+
+<!ENTITY % guimenuitem.element "INCLUDE">
+<![%guimenuitem.element;[
+<!--doc:The name of a terminal menu item in a GUI.-->
+<!ELEMENT guimenuitem %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*>
+<!--end of guimenuitem.element-->]]>
+
+<!ENTITY % guimenuitem.attlist "INCLUDE">
+<![%guimenuitem.attlist;[
+<!ATTLIST guimenuitem
+ %moreinfo.attrib;
+ %common.attrib;
+ %guimenuitem.role.attrib;
+ %local.guimenuitem.attrib;
+>
+<!--end of guimenuitem.attlist-->]]>
+<!--end of guimenuitem.module-->]]>
+
+<!ENTITY % guisubmenu.module "INCLUDE">
+<![%guisubmenu.module;[
+<!ENTITY % local.guisubmenu.attrib "">
+<!ENTITY % guisubmenu.role.attrib "%role.attrib;">
+
+<!ENTITY % guisubmenu.element "INCLUDE">
+<![%guisubmenu.element;[
+<!--doc:The name of a submenu in a GUI.-->
+<!ELEMENT guisubmenu %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*>
+<!--end of guisubmenu.element-->]]>
+
+<!ENTITY % guisubmenu.attlist "INCLUDE">
+<![%guisubmenu.attlist;[
+<!ATTLIST guisubmenu
+ %moreinfo.attrib;
+ %common.attrib;
+ %guisubmenu.role.attrib;
+ %local.guisubmenu.attrib;
+>
+<!--end of guisubmenu.attlist-->]]>
+<!--end of guisubmenu.module-->]]>
+
+<!ENTITY % hardware.module "INCLUDE">
+<![%hardware.module;[
+<!ENTITY % local.hardware.attrib "">
+<!ENTITY % hardware.role.attrib "%role.attrib;">
+
+<!ENTITY % hardware.element "INCLUDE">
+<![%hardware.element;[
+<!--doc:A physical part of a computer system.-->
+<!ELEMENT hardware %ho; (%cptr.char.mix;)*>
+<!--end of hardware.element-->]]>
+
+<!ENTITY % hardware.attlist "INCLUDE">
+<![%hardware.attlist;[
+<!ATTLIST hardware
+ %moreinfo.attrib;
+ %common.attrib;
+ %hardware.role.attrib;
+ %local.hardware.attrib;
+>
+<!--end of hardware.attlist-->]]>
+<!--end of hardware.module-->]]>
+
+<!ENTITY % interface.module "INCLUDE">
+<![%interface.module;[
+<!ENTITY % local.interface.attrib "">
+<!ENTITY % interface.role.attrib "%role.attrib;">
+
+<!ENTITY % interface.element "INCLUDE">
+<![%interface.element;[
+<!--doc:An element of a GUI.-->
+<!ELEMENT interface %ho; (%smallcptr.char.mix;|accel)*>
+<!--end of interface.element-->]]>
+
+<!-- Class: Type of the Interface item; no default -->
+
+
+<!ENTITY % interface.attlist "INCLUDE">
+<![%interface.attlist;[
+<!ATTLIST interface
+ %moreinfo.attrib;
+ %common.attrib;
+ %interface.role.attrib;
+ %local.interface.attrib;
+>
+<!--end of interface.attlist-->]]>
+<!--end of interface.module-->]]>
+
+<!ENTITY % keycap.module "INCLUDE">
+<![%keycap.module;[
+<!ENTITY % local.keycap.attrib "">
+<!ENTITY % keycap.role.attrib "%role.attrib;">
+
+<!ENTITY % keycap.element "INCLUDE">
+<![%keycap.element;[
+<!--doc:The text printed on a key on a keyboard.-->
+<!ELEMENT keycap %ho; (%cptr.char.mix;)*>
+<!--end of keycap.element-->]]>
+
+<!ENTITY % keycap.attlist "INCLUDE">
+<![%keycap.attlist;[
+<!ATTLIST keycap
+ function (alt
+ |control
+ |shift
+ |meta
+ |escape
+ |enter
+ |tab
+ |backspace
+ |command
+ |option
+ |space
+ |delete
+ |insert
+ |up
+ |down
+ |left
+ |right
+ |home
+ |end
+ |pageup
+ |pagedown
+ |other) #IMPLIED
+ otherfunction CDATA #IMPLIED
+ %moreinfo.attrib;
+ %common.attrib;
+ %keycap.role.attrib;
+ %local.keycap.attrib;
+>
+<!--end of keycap.attlist-->]]>
+<!--end of keycap.module-->]]>
+
+<!ENTITY % keycode.module "INCLUDE">
+<![%keycode.module;[
+<!ENTITY % local.keycode.attrib "">
+<!ENTITY % keycode.role.attrib "%role.attrib;">
+
+<!ENTITY % keycode.element "INCLUDE">
+<![%keycode.element;[
+<!--doc:The internal, frequently numeric, identifier for a key on a keyboard.-->
+<!ELEMENT keycode %ho; (%smallcptr.char.mix;)*>
+<!--end of keycode.element-->]]>
+
+<!ENTITY % keycode.attlist "INCLUDE">
+<![%keycode.attlist;[
+<!ATTLIST keycode
+ %common.attrib;
+ %keycode.role.attrib;
+ %local.keycode.attrib;
+>
+<!--end of keycode.attlist-->]]>
+<!--end of keycode.module-->]]>
+
+<!ENTITY % keycombo.module "INCLUDE">
+<![%keycombo.module;[
+<!ENTITY % local.keycombo.attrib "">
+<!ENTITY % keycombo.role.attrib "%role.attrib;">
+
+<!ENTITY % keycombo.element "INCLUDE">
+<![%keycombo.element;[
+<!--doc:A combination of input actions.-->
+<!ELEMENT keycombo %ho; ((keycap|keycombo|keysym|mousebutton)+)>
+<!--end of keycombo.element-->]]>
+
+<!ENTITY % keycombo.attlist "INCLUDE">
+<![%keycombo.attlist;[
+<!ATTLIST keycombo
+ %keyaction.attrib;
+ %moreinfo.attrib;
+ %common.attrib;
+ %keycombo.role.attrib;
+ %local.keycombo.attrib;
+>
+<!--end of keycombo.attlist-->]]>
+<!--end of keycombo.module-->]]>
+
+<!ENTITY % keysym.module "INCLUDE">
+<![%keysym.module;[
+<!ENTITY % local.keysym.attrib "">
+<!ENTITY % keysysm.role.attrib "%role.attrib;">
+
+<!ENTITY % keysym.element "INCLUDE">
+<![%keysym.element;[
+<!--doc:The symbolic name of a key on a keyboard.-->
+<!ELEMENT keysym %ho; (%smallcptr.char.mix;)*>
+<!--end of keysym.element-->]]>
+
+<!ENTITY % keysym.attlist "INCLUDE">
+<![%keysym.attlist;[
+<!ATTLIST keysym
+ %common.attrib;
+ %keysysm.role.attrib;
+ %local.keysym.attrib;
+>
+<!--end of keysym.attlist-->]]>
+<!--end of keysym.module-->]]>
+
+<!ENTITY % lineannotation.module "INCLUDE">
+<![%lineannotation.module;[
+<!ENTITY % local.lineannotation.attrib "">
+<!ENTITY % lineannotation.role.attrib "%role.attrib;">
+
+<!ENTITY % lineannotation.element "INCLUDE">
+<![%lineannotation.element;[
+<!--doc:A comment on a line in a verbatim listing.-->
+<!ELEMENT lineannotation %ho; (%para.char.mix;)*>
+<!--end of lineannotation.element-->]]>
+
+<!ENTITY % lineannotation.attlist "INCLUDE">
+<![%lineannotation.attlist;[
+<!ATTLIST lineannotation
+ %common.attrib;
+ %lineannotation.role.attrib;
+ %local.lineannotation.attrib;
+>
+<!--end of lineannotation.attlist-->]]>
+<!--end of lineannotation.module-->]]>
+
+<!ENTITY % literal.module "INCLUDE">
+<![%literal.module;[
+<!ENTITY % local.literal.attrib "">
+<!ENTITY % literal.role.attrib "%role.attrib;">
+
+<!ENTITY % literal.element "INCLUDE">
+<![%literal.element;[
+<!--doc:Inline text that is some literal value.-->
+<!ELEMENT literal %ho; (%cptr.char.mix;)*>
+<!--end of literal.element-->]]>
+
+<!ENTITY % literal.attlist "INCLUDE">
+<![%literal.attlist;[
+<!ATTLIST literal
+ %moreinfo.attrib;
+ %common.attrib;
+ %literal.role.attrib;
+ %local.literal.attrib;
+>
+<!--end of literal.attlist-->]]>
+<!--end of literal.module-->]]>
+
+<!ENTITY % code.module "INCLUDE">
+<![%code.module;[
+<!ENTITY % local.code.attrib "">
+<!ENTITY % code.role.attrib "%role.attrib;">
+
+<!ENTITY % code.element "INCLUDE">
+<![%code.element;[
+<!--doc:An inline code fragment.-->
+<!ELEMENT code %ho; (%cptr.char.mix;)*>
+<!--end of code.element-->]]>
+
+<!ENTITY % code.attlist "INCLUDE">
+<![%code.attlist;[
+<!ATTLIST code
+ language CDATA #IMPLIED
+ %common.attrib;
+ %code.role.attrib;
+ %local.code.attrib;
+>
+<!--end of code.attlist-->]]>
+<!--end of code.module-->]]>
+
+<!ENTITY % constant.module "INCLUDE">
+<![ %constant.module; [
+<!ENTITY % local.constant.attrib "">
+<!ENTITY % constant.role.attrib "%role.attrib;">
+
+<!ENTITY % constant.element "INCLUDE">
+<![ %constant.element; [
+<!--doc:A programming or system constant.-->
+<!ELEMENT constant %ho; (%smallcptr.char.mix;)*>
+<!--end of constant.element-->]]>
+
+<!ENTITY % constant.attlist "INCLUDE">
+<![ %constant.attlist; [
+<!ATTLIST constant
+ class (limit) #IMPLIED
+ %common.attrib;
+ %constant.role.attrib;
+ %local.constant.attrib;
+>
+<!--end of constant.attlist-->]]>
+<!--end of constant.module-->]]>
+
+<!ENTITY % varname.module "INCLUDE">
+<![ %varname.module; [
+<!ENTITY % local.varname.attrib "">
+<!ENTITY % varname.role.attrib "%role.attrib;">
+
+<!ENTITY % varname.element "INCLUDE">
+<![ %varname.element; [
+<!--doc:The name of a variable.-->
+<!ELEMENT varname %ho; (%smallcptr.char.mix;)*>
+<!--end of varname.element-->]]>
+
+<!ENTITY % varname.attlist "INCLUDE">
+<![ %varname.attlist; [
+<!ATTLIST varname
+ %common.attrib;
+ %varname.role.attrib;
+ %local.varname.attrib;
+>
+<!--end of varname.attlist-->]]>
+<!--end of varname.module-->]]>
+
+<!ENTITY % markup.module "INCLUDE">
+<![%markup.module;[
+<!ENTITY % local.markup.attrib "">
+<!ENTITY % markup.role.attrib "%role.attrib;">
+
+<!ENTITY % markup.element "INCLUDE">
+<![%markup.element;[
+<!--doc:A string of formatting markup in text that is to be represented literally.-->
+<!ELEMENT markup %ho; (%smallcptr.char.mix;)*>
+<!--end of markup.element-->]]>
+
+<!ENTITY % markup.attlist "INCLUDE">
+<![%markup.attlist;[
+<!ATTLIST markup
+ %common.attrib;
+ %markup.role.attrib;
+ %local.markup.attrib;
+>
+<!--end of markup.attlist-->]]>
+<!--end of markup.module-->]]>
+
+<!ENTITY % medialabel.module "INCLUDE">
+<![%medialabel.module;[
+<!ENTITY % local.medialabel.attrib "">
+<!ENTITY % medialabel.role.attrib "%role.attrib;">
+
+<!ENTITY % medialabel.element "INCLUDE">
+<![%medialabel.element;[
+<!--doc:A name that identifies the physical medium on which some information resides.-->
+<!ELEMENT medialabel %ho; (%smallcptr.char.mix;)*>
+<!--end of medialabel.element-->]]>
+
+<!-- Class: Type of medium named by the element; no default -->
+
+
+<!ENTITY % medialabel.attlist "INCLUDE">
+<![%medialabel.attlist;[
+<!ATTLIST medialabel
+ class (cartridge
+ |cdrom
+ |disk
+ |tape) #IMPLIED
+ %common.attrib;
+ %medialabel.role.attrib;
+ %local.medialabel.attrib;
+>
+<!--end of medialabel.attlist-->]]>
+<!--end of medialabel.module-->]]>
+
+<!ENTITY % menuchoice.content.module "INCLUDE">
+<![%menuchoice.content.module;[
+<!ENTITY % menuchoice.module "INCLUDE">
+<![%menuchoice.module;[
+<!ENTITY % local.menuchoice.attrib "">
+<!ENTITY % menuchoice.role.attrib "%role.attrib;">
+
+<!ENTITY % menuchoice.element "INCLUDE">
+<![%menuchoice.element;[
+<!--doc:A selection or series of selections from a menu.-->
+<!ELEMENT menuchoice %ho; (shortcut?, (guibutton|guiicon|guilabel
+ |guimenu|guimenuitem|guisubmenu|interface)+)>
+<!--end of menuchoice.element-->]]>
+
+<!ENTITY % menuchoice.attlist "INCLUDE">
+<![%menuchoice.attlist;[
+<!ATTLIST menuchoice
+ %moreinfo.attrib;
+ %common.attrib;
+ %menuchoice.role.attrib;
+ %local.menuchoice.attrib;
+>
+<!--end of menuchoice.attlist-->]]>
+<!--end of menuchoice.module-->]]>
+
+<!ENTITY % shortcut.module "INCLUDE">
+<![%shortcut.module;[
+<!-- See also KeyCombo -->
+<!ENTITY % local.shortcut.attrib "">
+<!ENTITY % shortcut.role.attrib "%role.attrib;">
+
+<!ENTITY % shortcut.element "INCLUDE">
+<![%shortcut.element;[
+<!--doc:A key combination for an action that is also accessible through a menu.-->
+<!ELEMENT shortcut %ho; ((keycap|keycombo|keysym|mousebutton)+)>
+<!--end of shortcut.element-->]]>
+
+<!ENTITY % shortcut.attlist "INCLUDE">
+<![%shortcut.attlist;[
+<!ATTLIST shortcut
+ %keyaction.attrib;
+ %moreinfo.attrib;
+ %common.attrib;
+ %shortcut.role.attrib;
+ %local.shortcut.attrib;
+>
+<!--end of shortcut.attlist-->]]>
+<!--end of shortcut.module-->]]>
+<!--end of menuchoice.content.module-->]]>
+
+<!ENTITY % mousebutton.module "INCLUDE">
+<![%mousebutton.module;[
+<!ENTITY % local.mousebutton.attrib "">
+<!ENTITY % mousebutton.role.attrib "%role.attrib;">
+
+<!ENTITY % mousebutton.element "INCLUDE">
+<![%mousebutton.element;[
+<!--doc:The conventional name of a mouse button.-->
+<!ELEMENT mousebutton %ho; (%smallcptr.char.mix;)*>
+<!--end of mousebutton.element-->]]>
+
+<!ENTITY % mousebutton.attlist "INCLUDE">
+<![%mousebutton.attlist;[
+<!ATTLIST mousebutton
+ %moreinfo.attrib;
+ %common.attrib;
+ %mousebutton.role.attrib;
+ %local.mousebutton.attrib;
+>
+<!--end of mousebutton.attlist-->]]>
+<!--end of mousebutton.module-->]]>
+
+<!ENTITY % msgtext.module "INCLUDE">
+<![%msgtext.module;[
+<!ENTITY % local.msgtext.attrib "">
+<!ENTITY % msgtext.role.attrib "%role.attrib;">
+
+<!ENTITY % msgtext.element "INCLUDE">
+<![%msgtext.element;[
+<!--doc:The actual text of a message component in a message set.-->
+<!ELEMENT msgtext %ho; ((%component.mix;)+)>
+<!--end of msgtext.element-->]]>
+
+<!ENTITY % msgtext.attlist "INCLUDE">
+<![%msgtext.attlist;[
+<!ATTLIST msgtext
+ %common.attrib;
+ %msgtext.role.attrib;
+ %local.msgtext.attrib;
+>
+<!--end of msgtext.attlist-->]]>
+<!--end of msgtext.module-->]]>
+
+<!ENTITY % option.module "INCLUDE">
+<![%option.module;[
+<!ENTITY % local.option.attrib "">
+<!ENTITY % option.role.attrib "%role.attrib;">
+
+<!ENTITY % option.element "INCLUDE">
+<![%option.element;[
+<!--doc:An option for a software command.-->
+<!ELEMENT option %ho; (%cptr.char.mix;)*>
+<!--end of option.element-->]]>
+
+<!ENTITY % option.attlist "INCLUDE">
+<![%option.attlist;[
+<!ATTLIST option
+ %common.attrib;
+ %option.role.attrib;
+ %local.option.attrib;
+>
+<!--end of option.attlist-->]]>
+<!--end of option.module-->]]>
+
+<!ENTITY % optional.module "INCLUDE">
+<![%optional.module;[
+<!ENTITY % local.optional.attrib "">
+<!ENTITY % optional.role.attrib "%role.attrib;">
+
+<!ENTITY % optional.element "INCLUDE">
+<![%optional.element;[
+<!--doc:Optional information.-->
+<!ELEMENT optional %ho; (%cptr.char.mix;)*>
+<!--end of optional.element-->]]>
+
+<!ENTITY % optional.attlist "INCLUDE">
+<![%optional.attlist;[
+<!ATTLIST optional
+ %common.attrib;
+ %optional.role.attrib;
+ %local.optional.attrib;
+>
+<!--end of optional.attlist-->]]>
+<!--end of optional.module-->]]>
+
+<!ENTITY % parameter.module "INCLUDE">
+<![%parameter.module;[
+<!ENTITY % local.parameter.attrib "">
+<!ENTITY % parameter.role.attrib "%role.attrib;">
+
+<!ENTITY % parameter.element "INCLUDE">
+<![%parameter.element;[
+<!--doc:A value or a symbolic reference to a value.-->
+<!ELEMENT parameter %ho; (%cptr.char.mix;)*>
+<!--end of parameter.element-->]]>
+
+<!-- Class: Type of the Parameter; no default -->
+
+
+<!ENTITY % parameter.attlist "INCLUDE">
+<![%parameter.attlist;[
+<!ATTLIST parameter
+ class (command
+ |function
+ |option) #IMPLIED
+ %moreinfo.attrib;
+ %common.attrib;
+ %parameter.role.attrib;
+ %local.parameter.attrib;
+>
+<!--end of parameter.attlist-->]]>
+<!--end of parameter.module-->]]>
+
+<!ENTITY % prompt.module "INCLUDE">
+<![%prompt.module;[
+<!ENTITY % local.prompt.attrib "">
+<!ENTITY % prompt.role.attrib "%role.attrib;">
+
+<!ENTITY % prompt.element "INCLUDE">
+<![%prompt.element;[
+<!--doc:A character or string indicating the start of an input field in a computer display.-->
+<!ELEMENT prompt %ho; (%smallcptr.char.mix;|co)*>
+<!--end of prompt.element-->]]>
+
+<!ENTITY % prompt.attlist "INCLUDE">
+<![%prompt.attlist;[
+<!ATTLIST prompt
+ %moreinfo.attrib;
+ %common.attrib;
+ %prompt.role.attrib;
+ %local.prompt.attrib;
+>
+<!--end of prompt.attlist-->]]>
+<!--end of prompt.module-->]]>
+
+<!ENTITY % property.module "INCLUDE">
+<![%property.module;[
+<!ENTITY % local.property.attrib "">
+<!ENTITY % property.role.attrib "%role.attrib;">
+
+<!ENTITY % property.element "INCLUDE">
+<![%property.element;[
+<!--doc:A unit of data associated with some part of a computer system.-->
+<!ELEMENT property %ho; (%cptr.char.mix;)*>
+<!--end of property.element-->]]>
+
+<!ENTITY % property.attlist "INCLUDE">
+<![%property.attlist;[
+<!ATTLIST property
+ %moreinfo.attrib;
+ %common.attrib;
+ %property.role.attrib;
+ %local.property.attrib;
+>
+<!--end of property.attlist-->]]>
+<!--end of property.module-->]]>
+
+<!ENTITY % replaceable.module "INCLUDE">
+<![%replaceable.module;[
+<!ENTITY % local.replaceable.attrib "">
+<!ENTITY % replaceable.role.attrib "%role.attrib;">
+
+<!ENTITY % replaceable.element "INCLUDE">
+<![%replaceable.element;[
+<!--doc:Content that may or must be replaced by the user.-->
+<!ELEMENT replaceable %ho; (#PCDATA
+ | %link.char.class;
+ | optional
+ | %base.char.class;
+ | %other.char.class;
+ | inlinegraphic
+ | inlinemediaobject
+ | co)*>
+<!--end of replaceable.element-->]]>
+
+<!-- Class: Type of information the element represents; no
+ default -->
+
+
+<!ENTITY % replaceable.attlist "INCLUDE">
+<![%replaceable.attlist;[
+<!ATTLIST replaceable
+ class (command
+ |function
+ |option
+ |parameter) #IMPLIED
+ %common.attrib;
+ %replaceable.role.attrib;
+ %local.replaceable.attrib;
+>
+<!--end of replaceable.attlist-->]]>
+<!--end of replaceable.module-->]]>
+
+<!ENTITY % returnvalue.module "INCLUDE">
+<![%returnvalue.module;[
+<!ENTITY % local.returnvalue.attrib "">
+<!ENTITY % returnvalue.role.attrib "%role.attrib;">
+
+<!ENTITY % returnvalue.element "INCLUDE">
+<![%returnvalue.element;[
+<!--doc:The value returned by a function.-->
+<!ELEMENT returnvalue %ho; (%smallcptr.char.mix;)*>
+<!--end of returnvalue.element-->]]>
+
+<!ENTITY % returnvalue.attlist "INCLUDE">
+<![%returnvalue.attlist;[
+<!ATTLIST returnvalue
+ %common.attrib;
+ %returnvalue.role.attrib;
+ %local.returnvalue.attrib;
+>
+<!--end of returnvalue.attlist-->]]>
+<!--end of returnvalue.module-->]]>
+
+<!ENTITY % sgmltag.module "INCLUDE">
+<![%sgmltag.module;[
+<!ENTITY % local.sgmltag.attrib "">
+<!ENTITY % sgmltag.role.attrib "%role.attrib;">
+
+<!ENTITY % sgmltag.element "INCLUDE">
+<![%sgmltag.element;[
+<!--doc:A component of SGML markup.-->
+<!ELEMENT sgmltag %ho; (%smallcptr.char.mix;)*>
+<!--end of sgmltag.element-->]]>
+
+<!-- Class: Type of SGML construct the element names; no default -->
+
+
+<!ENTITY % sgmltag.attlist "INCLUDE">
+<![%sgmltag.attlist;[
+<!ATTLIST sgmltag
+ class (attribute
+ |attvalue
+ |element
+ |endtag
+ |emptytag
+ |genentity
+ |numcharref
+ |paramentity
+ |pi
+ |xmlpi
+ |starttag
+ |sgmlcomment
+ |prefix
+ |namespace
+ |localname) #IMPLIED
+ namespace CDATA #IMPLIED
+ %common.attrib;
+ %sgmltag.role.attrib;
+ %local.sgmltag.attrib;
+>
+<!--end of sgmltag.attlist-->]]>
+<!--end of sgmltag.module-->]]>
+
+<!ENTITY % structfield.module "INCLUDE">
+<![%structfield.module;[
+<!ENTITY % local.structfield.attrib "">
+<!ENTITY % structfield.role.attrib "%role.attrib;">
+
+<!ENTITY % structfield.element "INCLUDE">
+<![%structfield.element;[
+<!--doc:A field in a structure (in the programming language sense).-->
+<!ELEMENT structfield %ho; (%smallcptr.char.mix;)*>
+<!--end of structfield.element-->]]>
+
+<!ENTITY % structfield.attlist "INCLUDE">
+<![%structfield.attlist;[
+<!ATTLIST structfield
+ %common.attrib;
+ %structfield.role.attrib;
+ %local.structfield.attrib;
+>
+<!--end of structfield.attlist-->]]>
+<!--end of structfield.module-->]]>
+
+<!ENTITY % structname.module "INCLUDE">
+<![%structname.module;[
+<!ENTITY % local.structname.attrib "">
+<!ENTITY % structname.role.attrib "%role.attrib;">
+
+<!ENTITY % structname.element "INCLUDE">
+<![%structname.element;[
+<!--doc:The name of a structure (in the programming language sense).-->
+<!ELEMENT structname %ho; (%smallcptr.char.mix;)*>
+<!--end of structname.element-->]]>
+
+<!ENTITY % structname.attlist "INCLUDE">
+<![%structname.attlist;[
+<!ATTLIST structname
+ %common.attrib;
+ %structname.role.attrib;
+ %local.structname.attrib;
+>
+<!--end of structname.attlist-->]]>
+<!--end of structname.module-->]]>
+
+<!ENTITY % symbol.module "INCLUDE">
+<![%symbol.module;[
+<!ENTITY % local.symbol.attrib "">
+<!ENTITY % symbol.role.attrib "%role.attrib;">
+
+<!ENTITY % symbol.element "INCLUDE">
+<![%symbol.element;[
+<!--doc:A name that is replaced by a value before processing.-->
+<!ELEMENT symbol %ho; (%smallcptr.char.mix;)*>
+<!--end of symbol.element-->]]>
+
+<!-- Class: Type of symbol; no default -->
+
+
+<!ENTITY % symbol.attlist "INCLUDE">
+<![%symbol.attlist;[
+<!ATTLIST symbol
+ class (limit) #IMPLIED
+ %common.attrib;
+ %symbol.role.attrib;
+ %local.symbol.attrib;
+>
+<!--end of symbol.attlist-->]]>
+<!--end of symbol.module-->]]>
+
+<!ENTITY % systemitem.module "INCLUDE">
+<![%systemitem.module;[
+<!ENTITY % local.systemitem.attrib "">
+<!ENTITY % systemitem.role.attrib "%role.attrib;">
+
+<!ENTITY % systemitem.element "INCLUDE">
+<![%systemitem.element;[
+<!--doc:A system-related item or term.-->
+<!ELEMENT systemitem %ho; (%cptr.char.mix; | acronym | co)*>
+<!--end of systemitem.element-->]]>
+
+<!-- Class: Type of system item the element names; no default -->
+
+<!ENTITY % systemitem.attlist "INCLUDE">
+<![%systemitem.attlist;[
+<!ATTLIST systemitem
+ class (constant
+ |daemon
+ |domainname
+ |etheraddress
+ |event
+ |eventhandler
+ |filesystem
+ |fqdomainname
+ |groupname
+ |ipaddress
+ |library
+ |macro
+ |netmask
+ |newsgroup
+ |osname
+ |protocol
+ |resource
+ |systemname
+ |username
+ |process
+ |server
+ |service) #IMPLIED
+ %moreinfo.attrib;
+ %common.attrib;
+ %systemitem.role.attrib;
+ %local.systemitem.attrib;
+>
+<!--end of systemitem.attlist-->]]>
+<!--end of systemitem.module-->]]>
+
+<!ENTITY % uri.module "INCLUDE">
+<![%uri.module;[
+<!ENTITY % local.uri.attrib "">
+<!ENTITY % uri.role.attrib "%role.attrib;">
+
+<!ENTITY % uri.element "INCLUDE">
+<![%uri.element;[
+<!--doc:A Uniform Resource Identifier.-->
+<!ELEMENT uri %ho; (%smallcptr.char.mix;)*>
+<!--end of uri.element-->]]>
+
+<!-- Type: Type of URI; no default -->
+
+<!ENTITY % uri.attlist "INCLUDE">
+<![%uri.attlist;[
+<!ATTLIST uri
+ type CDATA #IMPLIED
+ %common.attrib;
+ %uri.role.attrib;
+ %local.uri.attrib;
+>
+<!--end of uri.attlist-->]]>
+<!--end of uri.module-->]]>
+
+<!ENTITY % token.module "INCLUDE">
+<![%token.module;[
+<!ENTITY % local.token.attrib "">
+<!ENTITY % token.role.attrib "%role.attrib;">
+
+<!ENTITY % token.element "INCLUDE">
+<![%token.element;[
+<!--doc:A unit of information.-->
+<!ELEMENT token %ho; (%smallcptr.char.mix;)*>
+<!--end of token.element-->]]>
+
+<!ENTITY % token.attlist "INCLUDE">
+<![%token.attlist;[
+<!ATTLIST token
+ %common.attrib;
+ %token.role.attrib;
+ %local.token.attrib;
+>
+<!--end of token.attlist-->]]>
+<!--end of token.module-->]]>
+
+<!ENTITY % type.module "INCLUDE">
+<![%type.module;[
+<!ENTITY % local.type.attrib "">
+<!ENTITY % type.role.attrib "%role.attrib;">
+
+<!ENTITY % type.element "INCLUDE">
+<![%type.element;[
+<!--doc:The classification of a value.-->
+<!ELEMENT type %ho; (%smallcptr.char.mix;)*>
+<!--end of type.element-->]]>
+
+<!ENTITY % type.attlist "INCLUDE">
+<![%type.attlist;[
+<!ATTLIST type
+ %common.attrib;
+ %type.role.attrib;
+ %local.type.attrib;
+>
+<!--end of type.attlist-->]]>
+<!--end of type.module-->]]>
+
+<!ENTITY % userinput.module "INCLUDE">
+<![%userinput.module;[
+<!ENTITY % local.userinput.attrib "">
+<!ENTITY % userinput.role.attrib "%role.attrib;">
+
+<!ENTITY % userinput.element "INCLUDE">
+<![%userinput.element;[
+<!--doc:Data entered by the user.-->
+<!ELEMENT userinput %ho; (%cptr.char.mix;|co)*>
+<!--end of userinput.element-->]]>
+
+<!ENTITY % userinput.attlist "INCLUDE">
+<![%userinput.attlist;[
+<!ATTLIST userinput
+ %moreinfo.attrib;
+ %common.attrib;
+ %userinput.role.attrib;
+ %local.userinput.attrib;
+>
+<!--end of userinput.attlist-->]]>
+<!--end of userinput.module-->]]>
+
+<!ENTITY % termdef.module "INCLUDE">
+<![%termdef.module;[
+<!ENTITY % local.termdef.attrib "">
+<!ENTITY % termdef.role.attrib "%role.attrib;">
+
+<!ENTITY % termdef.element "INCLUDE">
+<![%termdef.element;[
+<!--doc:An inline definition of a term.-->
+<!ELEMENT termdef %ho; (%para.char.mix;)*>
+<!--end of termdef.element-->]]>
+
+<!ENTITY % termdef.attlist "INCLUDE">
+<![%termdef.attlist;[
+<!ATTLIST termdef
+ %common.attrib;
+ %termdef.role.attrib;
+ %local.termdef.attrib;
+>
+<!--end of termdef.attlist-->]]>
+<!--end of termdef.module-->]]>
+
+<!-- General words and phrases ............................................ -->
+
+<!ENTITY % abbrev.module "INCLUDE">
+<![%abbrev.module;[
+<!ENTITY % local.abbrev.attrib "">
+<!ENTITY % abbrev.role.attrib "%role.attrib;">
+
+<!ENTITY % abbrev.element "INCLUDE">
+<![%abbrev.element;[
+<!--doc:An abbreviation, especially one followed by a period.-->
+<!ELEMENT abbrev %ho; (%word.char.mix;)*>
+<!--end of abbrev.element-->]]>
+
+<!ENTITY % abbrev.attlist "INCLUDE">
+<![%abbrev.attlist;[
+<!ATTLIST abbrev
+ %common.attrib;
+ %abbrev.role.attrib;
+ %local.abbrev.attrib;
+>
+<!--end of abbrev.attlist-->]]>
+<!--end of abbrev.module-->]]>
+
+<!ENTITY % acronym.module "INCLUDE">
+<![%acronym.module;[
+<!ENTITY % local.acronym.attrib "">
+<!ENTITY % acronym.role.attrib "%role.attrib;">
+
+<!ENTITY % acronym.element "INCLUDE">
+<![%acronym.element;[
+<!--doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase.-->
+<!ELEMENT acronym %ho; (%word.char.mix;)*
+ %acronym.exclusion;>
+<!--end of acronym.element-->]]>
+
+<!ENTITY % acronym.attlist "INCLUDE">
+<![%acronym.attlist;[
+<!ATTLIST acronym
+ %common.attrib;
+ %acronym.role.attrib;
+ %local.acronym.attrib;
+>
+<!--end of acronym.attlist-->]]>
+<!--end of acronym.module-->]]>
+
+<!ENTITY % citation.module "INCLUDE">
+<![%citation.module;[
+<!ENTITY % local.citation.attrib "">
+<!ENTITY % citation.role.attrib "%role.attrib;">
+
+<!ENTITY % citation.element "INCLUDE">
+<![%citation.element;[
+<!--doc:An inline bibliographic reference to another published work.-->
+<!ELEMENT citation %ho; (%para.char.mix;)*>
+<!--end of citation.element-->]]>
+
+<!ENTITY % citation.attlist "INCLUDE">
+<![%citation.attlist;[
+<!ATTLIST citation
+ %common.attrib;
+ %citation.role.attrib;
+ %local.citation.attrib;
+>
+<!--end of citation.attlist-->]]>
+<!--end of citation.module-->]]>
+
+<!ENTITY % citerefentry.module "INCLUDE">
+<![%citerefentry.module;[
+<!ENTITY % local.citerefentry.attrib "">
+<!ENTITY % citerefentry.role.attrib "%role.attrib;">
+
+<!ENTITY % citerefentry.element "INCLUDE">
+<![%citerefentry.element;[
+<!--doc:A citation to a reference page.-->
+<!ELEMENT citerefentry %ho; (refentrytitle, manvolnum?)>
+<!--end of citerefentry.element-->]]>
+
+<!ENTITY % citerefentry.attlist "INCLUDE">
+<![%citerefentry.attlist;[
+<!ATTLIST citerefentry
+ %common.attrib;
+ %citerefentry.role.attrib;
+ %local.citerefentry.attrib;
+>
+<!--end of citerefentry.attlist-->]]>
+<!--end of citerefentry.module-->]]>
+
+<!ENTITY % refentrytitle.module "INCLUDE">
+<![%refentrytitle.module;[
+<!ENTITY % local.refentrytitle.attrib "">
+<!ENTITY % refentrytitle.role.attrib "%role.attrib;">
+
+<!ENTITY % refentrytitle.element "INCLUDE">
+<![%refentrytitle.element;[
+<!--doc:The title of a reference page.-->
+<!ELEMENT refentrytitle %ho; (%para.char.mix;)*>
+<!--end of refentrytitle.element-->]]>
+
+<!ENTITY % refentrytitle.attlist "INCLUDE">
+<![%refentrytitle.attlist;[
+<!ATTLIST refentrytitle
+ %common.attrib;
+ %refentrytitle.role.attrib;
+ %local.refentrytitle.attrib;
+>
+<!--end of refentrytitle.attlist-->]]>
+<!--end of refentrytitle.module-->]]>
+
+<!ENTITY % manvolnum.module "INCLUDE">
+<![%manvolnum.module;[
+<!ENTITY % local.manvolnum.attrib "">
+<!ENTITY % namvolnum.role.attrib "%role.attrib;">
+
+<!ENTITY % manvolnum.element "INCLUDE">
+<![%manvolnum.element;[
+<!--doc:A reference volume number.-->
+<!ELEMENT manvolnum %ho; (%word.char.mix;)*>
+<!--end of manvolnum.element-->]]>
+
+<!ENTITY % manvolnum.attlist "INCLUDE">
+<![%manvolnum.attlist;[
+<!ATTLIST manvolnum
+ %common.attrib;
+ %namvolnum.role.attrib;
+ %local.manvolnum.attrib;
+>
+<!--end of manvolnum.attlist-->]]>
+<!--end of manvolnum.module-->]]>
+
+<!ENTITY % citetitle.module "INCLUDE">
+<![%citetitle.module;[
+<!ENTITY % local.citetitle.attrib "">
+<!ENTITY % citetitle.role.attrib "%role.attrib;">
+
+<!ENTITY % citetitle.element "INCLUDE">
+<![%citetitle.element;[
+<!--doc:The title of a cited work.-->
+<!ELEMENT citetitle %ho; (%para.char.mix;)*>
+<!--end of citetitle.element-->]]>
+
+<!-- Pubwork: Genre of published work cited; no default -->
+
+
+<!ENTITY % citetitle.attlist "INCLUDE">
+<![%citetitle.attlist;[
+<!ATTLIST citetitle
+ pubwork (article
+ |book
+ |chapter
+ |part
+ |refentry
+ |section
+ |journal
+ |series
+ |set
+ |manuscript
+ |cdrom
+ |dvd
+ |wiki
+ |gopher
+ |bbs
+ |emailmessage
+ |webpage
+ |newsposting) #IMPLIED
+ %common.attrib;
+ %citetitle.role.attrib;
+ %local.citetitle.attrib;
+>
+<!--end of citetitle.attlist-->]]>
+<!--end of citetitle.module-->]]>
+
+<!ENTITY % emphasis.module "INCLUDE">
+<![%emphasis.module;[
+<!ENTITY % local.emphasis.attrib "">
+<!ENTITY % emphasis.role.attrib "%role.attrib;">
+
+<!ENTITY % emphasis.element "INCLUDE">
+<![%emphasis.element;[
+<!--doc:Emphasized text.-->
+<!ELEMENT emphasis %ho; (%para.char.mix;)*>
+<!--end of emphasis.element-->]]>
+
+<!ENTITY % emphasis.attlist "INCLUDE">
+<![%emphasis.attlist;[
+<!ATTLIST emphasis
+ %common.attrib;
+ %emphasis.role.attrib;
+ %local.emphasis.attrib;
+>
+<!--end of emphasis.attlist-->]]>
+<!--end of emphasis.module-->]]>
+
+<!ENTITY % foreignphrase.module "INCLUDE">
+<![%foreignphrase.module;[
+<!ENTITY % local.foreignphrase.attrib "">
+<!ENTITY % foreignphrase.role.attrib "%role.attrib;">
+
+<!ENTITY % foreignphrase.element "INCLUDE">
+<![%foreignphrase.element;[
+<!--doc:A word or phrase in a language other than the primary language of the document.-->
+<!ELEMENT foreignphrase %ho; (%para.char.mix;)*>
+<!--end of foreignphrase.element-->]]>
+
+<!ENTITY % foreignphrase.attlist "INCLUDE">
+<![%foreignphrase.attlist;[
+<!ATTLIST foreignphrase
+ %common.attrib;
+ %foreignphrase.role.attrib;
+ %local.foreignphrase.attrib;
+>
+<!--end of foreignphrase.attlist-->]]>
+<!--end of foreignphrase.module-->]]>
+
+<!ENTITY % glossterm.module "INCLUDE">
+<![%glossterm.module;[
+<!ENTITY % local.glossterm.attrib "">
+<!ENTITY % glossterm.role.attrib "%role.attrib;">
+
+<!ENTITY % glossterm.element "INCLUDE">
+<![%glossterm.element;[
+<!--doc:A glossary term.-->
+<!ELEMENT glossterm %ho; (%para.char.mix;)*
+ %glossterm.exclusion;>
+<!--end of glossterm.element-->]]>
+
+<!-- to GlossEntry if Glossterm used in text -->
+<!-- BaseForm: Provides the form of GlossTerm to be used
+ for indexing -->
+
+<!ENTITY % glossterm.attlist "INCLUDE">
+<![%glossterm.attlist;[
+<!ATTLIST glossterm
+ baseform CDATA #IMPLIED
+ %linkend.attrib;
+ %common.attrib;
+ %glossterm.role.attrib;
+ %local.glossterm.attrib;
+>
+<!--end of glossterm.attlist-->]]>
+<!--end of glossterm.module-->]]>
+
+<!ENTITY % firstterm.module "INCLUDE">
+<![%firstterm.module;[
+<!ENTITY % local.firstterm.attrib "">
+<!ENTITY % firstterm.role.attrib "%role.attrib;">
+
+<!ENTITY % firstterm.element "INCLUDE">
+<![%firstterm.element;[
+<!--doc:The first occurrence of a term.-->
+<!ELEMENT firstterm %ho; (%para.char.mix;)*
+ %glossterm.exclusion;>
+<!--end of firstterm.element-->]]>
+
+<!-- to GlossEntry or other explanation -->
+
+
+<!ENTITY % firstterm.attlist "INCLUDE">
+<![%firstterm.attlist;[
+<!ATTLIST firstterm
+ baseform CDATA #IMPLIED
+ %linkend.attrib;
+ %common.attrib;
+ %firstterm.role.attrib;
+ %local.firstterm.attrib;
+>
+<!--end of firstterm.attlist-->]]>
+<!--end of firstterm.module-->]]>
+
+<!ENTITY % phrase.module "INCLUDE">
+<![%phrase.module;[
+<!ENTITY % local.phrase.attrib "">
+<!ENTITY % phrase.role.attrib "%role.attrib;">
+
+<!ENTITY % phrase.element "INCLUDE">
+<![%phrase.element;[
+<!--doc:A span of text.-->
+<!ELEMENT phrase %ho; (%para.char.mix;)*>
+<!--end of phrase.element-->]]>
+
+<!ENTITY % phrase.attlist "INCLUDE">
+<![%phrase.attlist;[
+<!ATTLIST phrase
+ %common.attrib;
+ %phrase.role.attrib;
+ %local.phrase.attrib;
+>
+<!--end of phrase.attlist-->]]>
+<!--end of phrase.module-->]]>
+
+<!ENTITY % quote.module "INCLUDE">
+<![%quote.module;[
+<!ENTITY % local.quote.attrib "">
+<!ENTITY % quote.role.attrib "%role.attrib;">
+
+<!ENTITY % quote.element "INCLUDE">
+<![%quote.element;[
+<!--doc:An inline quotation.-->
+<!ELEMENT quote %ho; (%para.char.mix;)*>
+<!--end of quote.element-->]]>
+
+<!ENTITY % quote.attlist "INCLUDE">
+<![%quote.attlist;[
+<!ATTLIST quote
+ %common.attrib;
+ %quote.role.attrib;
+ %local.quote.attrib;
+>
+<!--end of quote.attlist-->]]>
+<!--end of quote.module-->]]>
+
+<!ENTITY % ssscript.module "INCLUDE">
+<![%ssscript.module;[
+<!ENTITY % local.ssscript.attrib "">
+<!ENTITY % ssscript.role.attrib "%role.attrib;">
+
+<!ENTITY % subscript.element "INCLUDE">
+<![%subscript.element;[
+<!--doc:A subscript (as in H{^2}O, the molecular formula for water).-->
+<!ELEMENT subscript %ho; (#PCDATA
+ | %link.char.class;
+ | emphasis
+ | replaceable
+ | symbol
+ | inlinegraphic
+ | inlinemediaobject
+ | %base.char.class;
+ | %other.char.class;)*
+ %ubiq.exclusion;>
+<!--end of subscript.element-->]]>
+
+<!ENTITY % subscript.attlist "INCLUDE">
+<![%subscript.attlist;[
+<!ATTLIST subscript
+ %common.attrib;
+ %ssscript.role.attrib;
+ %local.ssscript.attrib;
+>
+<!--end of subscript.attlist-->]]>
+
+<!ENTITY % superscript.element "INCLUDE">
+<![%superscript.element;[
+<!--doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself).-->
+<!ELEMENT superscript %ho; (#PCDATA
+ | %link.char.class;
+ | emphasis
+ | replaceable
+ | symbol
+ | inlinegraphic
+ | inlinemediaobject
+ | %base.char.class;
+ | %other.char.class;)*
+ %ubiq.exclusion;>
+<!--end of superscript.element-->]]>
+
+<!ENTITY % superscript.attlist "INCLUDE">
+<![%superscript.attlist;[
+<!ATTLIST superscript
+ %common.attrib;
+ %ssscript.role.attrib;
+ %local.ssscript.attrib;
+>
+<!--end of superscript.attlist-->]]>
+<!--end of ssscript.module-->]]>
+
+<!ENTITY % trademark.module "INCLUDE">
+<![%trademark.module;[
+<!ENTITY % local.trademark.attrib "">
+<!ENTITY % trademark.role.attrib "%role.attrib;">
+
+<!ENTITY % trademark.element "INCLUDE">
+<![%trademark.element;[
+<!--doc:A trademark.-->
+<!ELEMENT trademark %ho; (#PCDATA
+ | %link.char.class;
+ | %tech.char.class;
+ | %base.char.class;
+ | %other.char.class;
+ | inlinegraphic
+ | inlinemediaobject
+ | emphasis)*>
+<!--end of trademark.element-->]]>
+
+<!-- Class: More precisely identifies the item the element names -->
+
+
+<!ENTITY % trademark.attlist "INCLUDE">
+<![%trademark.attlist;[
+<!ATTLIST trademark
+ class (service
+ |trade
+ |registered
+ |copyright) 'trade'
+ %common.attrib;
+ %trademark.role.attrib;
+ %local.trademark.attrib;
+>
+<!--end of trademark.attlist-->]]>
+<!--end of trademark.module-->]]>
+
+<!ENTITY % wordasword.module "INCLUDE">
+<![%wordasword.module;[
+<!ENTITY % local.wordasword.attrib "">
+<!ENTITY % wordasword.role.attrib "%role.attrib;">
+
+<!ENTITY % wordasword.element "INCLUDE">
+<![%wordasword.element;[
+<!--doc:A word meant specifically as a word and not representing anything else.-->
+<!ELEMENT wordasword %ho; (%word.char.mix;)*>
+<!--end of wordasword.element-->]]>
+
+<!ENTITY % wordasword.attlist "INCLUDE">
+<![%wordasword.attlist;[
+<!ATTLIST wordasword
+ %common.attrib;
+ %wordasword.role.attrib;
+ %local.wordasword.attrib;
+>
+<!--end of wordasword.attlist-->]]>
+<!--end of wordasword.module-->]]>
+
+<!-- Links and cross-references ........................................... -->
+
+<!ENTITY % link.module "INCLUDE">
+<![%link.module;[
+<!ENTITY % local.link.attrib "">
+<!ENTITY % link.role.attrib "%role.attrib;">
+
+<!ENTITY % link.element "INCLUDE">
+<![%link.element;[
+<!--doc:A hypertext link.-->
+<!ELEMENT link %ho; (%para.char.mix;)*
+ %links.exclusion;>
+<!--end of link.element-->]]>
+
+<!-- Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element -->
+<!-- to linked-to object -->
+<!-- Type: Freely assignable parameter -->
+
+
+<!ENTITY % link.attlist "INCLUDE">
+<![%link.attlist;[
+<!ATTLIST link
+ endterm IDREF #IMPLIED
+ xrefstyle CDATA #IMPLIED
+ type CDATA #IMPLIED
+ %linkendreq.attrib;
+ %common.attrib;
+ %link.role.attrib;
+ %local.link.attrib;
+>
+<!--end of link.attlist-->]]>
+<!--end of link.module-->]]>
+
+<!ENTITY % olink.module "INCLUDE">
+<![%olink.module;[
+<!ENTITY % local.olink.attrib "">
+<!ENTITY % olink.role.attrib "%role.attrib;">
+
+<!ENTITY % olink.element "INCLUDE">
+<![%olink.element;[
+<!--doc:A link that addresses its target indirectly, through an entity.-->
+<!ELEMENT olink %ho; (%para.char.mix;)*
+ %links.exclusion;>
+<!--end of olink.element-->]]>
+
+<!-- TargetDocEnt: Name of an entity to be the target of the link -->
+<!-- LinkMode: ID of a ModeSpec containing instructions for
+ operating on the entity named by TargetDocEnt -->
+<!-- LocalInfo: Information that may be passed to ModeSpec -->
+<!-- Type: Freely assignable parameter -->
+
+
+<!ENTITY % olink.attlist "INCLUDE">
+<![%olink.attlist;[
+<!ATTLIST olink
+ targetdocent ENTITY #IMPLIED
+ linkmode IDREF #IMPLIED
+ localinfo CDATA #IMPLIED
+ type CDATA #IMPLIED
+ targetdoc CDATA #IMPLIED
+ targetptr CDATA #IMPLIED
+ xrefstyle CDATA #IMPLIED
+ %common.attrib;
+ %olink.role.attrib;
+ %local.olink.attrib;
+>
+<!--end of olink.attlist-->]]>
+<!--end of olink.module-->]]>
+
+<!ENTITY % ulink.module "INCLUDE">
+<![%ulink.module;[
+<!ENTITY % local.ulink.attrib "">
+<!ENTITY % ulink.role.attrib "%role.attrib;">
+
+<!ENTITY % ulink.element "INCLUDE">
+<![%ulink.element;[
+<!--doc:A link that addresses its target by means of a URL (Uniform Resource Locator).-->
+<!ELEMENT ulink %ho; (%para.char.mix;)*
+ %links.exclusion;>
+<!--end of ulink.element-->]]>
+
+<!-- URL: uniform resource locator; the target of the ULink -->
+<!-- Type: Freely assignable parameter -->
+
+
+<!ENTITY % ulink.attlist "INCLUDE">
+<![%ulink.attlist;[
+<!ATTLIST ulink
+ url CDATA #REQUIRED
+ type CDATA #IMPLIED
+ xrefstyle CDATA #IMPLIED
+ %common.attrib;
+ %ulink.role.attrib;
+ %local.ulink.attrib;
+>
+<!--end of ulink.attlist-->]]>
+<!--end of ulink.module-->]]>
+
+<!ENTITY % footnoteref.module "INCLUDE">
+<![%footnoteref.module;[
+<!ENTITY % local.footnoteref.attrib "">
+<!ENTITY % footnoteref.role.attrib "%role.attrib;">
+
+<!ENTITY % footnoteref.element "INCLUDE">
+<![%footnoteref.element;[
+<!--doc:A cross reference to a footnote (a footnote mark).-->
+<!ELEMENT footnoteref %ho; EMPTY>
+<!--end of footnoteref.element-->]]>
+
+<!-- to footnote content supplied elsewhere -->
+
+
+<!ENTITY % footnoteref.attlist "INCLUDE">
+<![%footnoteref.attlist;[
+<!ATTLIST footnoteref
+ %linkendreq.attrib; %label.attrib;
+ %common.attrib;
+ %footnoteref.role.attrib;
+ %local.footnoteref.attrib;
+>
+<!--end of footnoteref.attlist-->]]>
+<!--end of footnoteref.module-->]]>
+
+<!ENTITY % xref.module "INCLUDE">
+<![%xref.module;[
+<!ENTITY % local.xref.attrib "">
+<!ENTITY % xref.role.attrib "%role.attrib;">
+
+<!ENTITY % xref.element "INCLUDE">
+<![%xref.element;[
+<!--doc:A cross reference to another part of the document.-->
+<!ELEMENT xref %ho; EMPTY>
+<!--end of xref.element-->]]>
+
+<!-- Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element -->
+<!-- to linked-to object -->
+
+
+<!ENTITY % xref.attlist "INCLUDE">
+<![%xref.attlist;[
+<!ATTLIST xref
+ endterm IDREF #IMPLIED
+ xrefstyle CDATA #IMPLIED
+ %common.attrib;
+ %linkendreq.attrib;
+ %xref.role.attrib;
+ %local.xref.attrib;
+>
+<!--end of xref.attlist-->]]>
+<!--end of xref.module-->]]>
+
+<!ENTITY % biblioref.module "INCLUDE">
+<![%biblioref.module;[
+<!ENTITY % local.biblioref.attrib "">
+<!ENTITY % biblioref.role.attrib "%role.attrib;">
+
+<!ENTITY % biblioref.element "INCLUDE">
+<![%biblioref.element;[
+<!--doc:A cross reference to a bibliographic entry.-->
+<!ELEMENT biblioref %ho; EMPTY>
+<!--end of biblioref.element-->]]>
+
+<!ENTITY % biblioref.attlist "INCLUDE">
+<![%biblioref.attlist;[
+<!ATTLIST biblioref
+ endterm IDREF #IMPLIED
+ xrefstyle CDATA #IMPLIED
+ units CDATA #IMPLIED
+ begin CDATA #IMPLIED
+ end CDATA #IMPLIED
+ %common.attrib;
+ %linkendreq.attrib;
+ %biblioref.role.attrib;
+ %local.biblioref.attrib;
+>
+<!--end of biblioref.attlist-->]]>
+<!--end of biblioref.module-->]]>
+
+<!-- Ubiquitous elements .................................................. -->
+
+<!ENTITY % anchor.module "INCLUDE">
+<![%anchor.module;[
+<!ENTITY % local.anchor.attrib "">
+<!ENTITY % anchor.role.attrib "%role.attrib;">
+
+<!ENTITY % anchor.element "INCLUDE">
+<![%anchor.element;[
+<!--doc:A spot in the document.-->
+<!ELEMENT anchor %ho; EMPTY>
+<!--end of anchor.element-->]]>
+
+<!-- required -->
+<!-- replaces Lang -->
+
+
+<!ENTITY % anchor.attlist "INCLUDE">
+<![%anchor.attlist;[
+<!ATTLIST anchor
+ %idreq.attrib; %pagenum.attrib; %remap.attrib;
+ %xreflabel.attrib;
+ %revisionflag.attrib;
+ %effectivity.attrib;
+ %anchor.role.attrib;
+ %local.anchor.attrib;
+>
+<!--end of anchor.attlist-->]]>
+<!--end of anchor.module-->]]>
+
+<!ENTITY % beginpage.module "INCLUDE">
+<![%beginpage.module;[
+<!ENTITY % local.beginpage.attrib "">
+<!ENTITY % beginpage.role.attrib "%role.attrib;">
+
+<!ENTITY % beginpage.element "INCLUDE">
+<![%beginpage.element;[
+<!--doc:The location of a page break in a print version of the document.-->
+<!ELEMENT beginpage %ho; EMPTY>
+<!--end of beginpage.element-->]]>
+
+<!-- PageNum: Number of page that begins at this point -->
+
+
+<!ENTITY % beginpage.attlist "INCLUDE">
+<![%beginpage.attlist;[
+<!ATTLIST beginpage
+ %pagenum.attrib;
+ %common.attrib;
+ %beginpage.role.attrib;
+ %local.beginpage.attrib;
+>
+<!--end of beginpage.attlist-->]]>
+<!--end of beginpage.module-->]]>
+
+<!-- IndexTerms appear in the text flow for generating or linking an
+ index. -->
+
+<!ENTITY % indexterm.content.module "INCLUDE">
+<![%indexterm.content.module;[
+<!ENTITY % indexterm.module "INCLUDE">
+<![%indexterm.module;[
+<!ENTITY % local.indexterm.attrib "">
+<!ENTITY % indexterm.role.attrib "%role.attrib;">
+
+<!ENTITY % indexterm.element "INCLUDE">
+<![%indexterm.element;[
+<!--doc:A wrapper for terms to be indexed.-->
+<!ELEMENT indexterm %ho; (primary?, ((secondary, ((tertiary, (see|seealso+)?)
+ | see | seealso+)?) | see | seealso+)?)
+ %ubiq.exclusion;>
+<!--end of indexterm.element-->]]>
+
+<!-- Scope: Indicates which generated indices the IndexTerm
+ should appear in: Global (whole document set), Local (this
+ document only), or All (both) -->
+<!-- Significance: Whether this IndexTerm is the most pertinent
+ of its series (Preferred) or not (Normal, the default) -->
+<!-- Class: Indicates type of IndexTerm; default is Singular,
+ or EndOfRange if StartRef is supplied; StartOfRange value
+ must be supplied explicitly on starts of ranges -->
+<!-- StartRef: ID of the IndexTerm that starts the indexing
+ range ended by this IndexTerm -->
+<!-- Zone: IDs of the elements to which the IndexTerm applies,
+ and indicates that the IndexTerm applies to those entire
+ elements rather than the point at which the IndexTerm
+ occurs -->
+
+
+<!ENTITY % indexterm.attlist "INCLUDE">
+<![%indexterm.attlist;[
+<!ATTLIST indexterm
+ %pagenum.attrib;
+ scope (all
+ |global
+ |local) #IMPLIED
+ significance (preferred
+ |normal) "normal"
+ class (singular
+ |startofrange
+ |endofrange) #IMPLIED
+ startref IDREF #IMPLIED
+ zone IDREFS #IMPLIED
+ type CDATA #IMPLIED
+ %common.attrib;
+ %indexterm.role.attrib;
+ %local.indexterm.attrib;
+>
+<!--end of indexterm.attlist-->]]>
+<!--end of indexterm.module-->]]>
+
+<!ENTITY % primsecter.module "INCLUDE">
+<![%primsecter.module;[
+<!ENTITY % local.primsecter.attrib "">
+<!ENTITY % primsecter.role.attrib "%role.attrib;">
+
+
+<!ENTITY % primary.element "INCLUDE">
+<![%primary.element;[
+<!--doc:The primary word or phrase under which an index term should be sorted.-->
+<!ELEMENT primary %ho; (%ndxterm.char.mix;)*>
+<!--end of primary.element-->]]>
+<!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+
+<!ENTITY % primary.attlist "INCLUDE">
+<![%primary.attlist;[
+<!ATTLIST primary
+ sortas CDATA #IMPLIED
+ %common.attrib;
+ %primsecter.role.attrib;
+ %local.primsecter.attrib;
+>
+<!--end of primary.attlist-->]]>
+
+
+<!ENTITY % secondary.element "INCLUDE">
+<![%secondary.element;[
+<!--doc:A secondary word or phrase in an index term.-->
+<!ELEMENT secondary %ho; (%ndxterm.char.mix;)*>
+<!--end of secondary.element-->]]>
+<!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+
+<!ENTITY % secondary.attlist "INCLUDE">
+<![%secondary.attlist;[
+<!ATTLIST secondary
+ sortas CDATA #IMPLIED
+ %common.attrib;
+ %primsecter.role.attrib;
+ %local.primsecter.attrib;
+>
+<!--end of secondary.attlist-->]]>
+
+
+<!ENTITY % tertiary.element "INCLUDE">
+<![%tertiary.element;[
+<!--doc:A tertiary word or phrase in an index term.-->
+<!ELEMENT tertiary %ho; (%ndxterm.char.mix;)*>
+<!--end of tertiary.element-->]]>
+<!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+
+<!ENTITY % tertiary.attlist "INCLUDE">
+<![%tertiary.attlist;[
+<!ATTLIST tertiary
+ sortas CDATA #IMPLIED
+ %common.attrib;
+ %primsecter.role.attrib;
+ %local.primsecter.attrib;
+>
+<!--end of tertiary.attlist-->]]>
+
+<!--end of primsecter.module-->]]>
+
+<!ENTITY % seeseealso.module "INCLUDE">
+<![%seeseealso.module;[
+<!ENTITY % local.seeseealso.attrib "">
+<!ENTITY % seeseealso.role.attrib "%role.attrib;">
+
+<!ENTITY % see.element "INCLUDE">
+<![%see.element;[
+<!--doc:Part of an index term directing the reader instead to another entry in the index.-->
+<!ELEMENT see %ho; (%ndxterm.char.mix;)*>
+<!--end of see.element-->]]>
+
+<!ENTITY % see.attlist "INCLUDE">
+<![%see.attlist;[
+<!ATTLIST see
+ %common.attrib;
+ %seeseealso.role.attrib;
+ %local.seeseealso.attrib;
+>
+<!--end of see.attlist-->]]>
+
+<!ENTITY % seealso.element "INCLUDE">
+<![%seealso.element;[
+<!--doc:Part of an index term directing the reader also to another entry in the index.-->
+<!ELEMENT seealso %ho; (%ndxterm.char.mix;)*>
+<!--end of seealso.element-->]]>
+
+<!ENTITY % seealso.attlist "INCLUDE">
+<![%seealso.attlist;[
+<!ATTLIST seealso
+ %common.attrib;
+ %seeseealso.role.attrib;
+ %local.seeseealso.attrib;
+>
+<!--end of seealso.attlist-->]]>
+<!--end of seeseealso.module-->]]>
+<!--end of indexterm.content.module-->]]>
+
+<!-- End of DocBook XML information pool module V4.5 ...................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/docbook.cat b/doc/editor_configs/serna/scons/dtd/docbook.cat
new file mode 100644
index 0000000..dc5cfb9
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/docbook.cat
@@ -0,0 +1,113 @@
+ -- ...................................................................... --
+ -- Catalog data for DocBook XML V4.5 .................................... --
+ -- File docbook.cat ..................................................... --
+
+ -- Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/.
+ --
+
+ -- This is the catalog data file for DocBook XML V4.5. It is provided as
+ a convenience in building your own catalog files. You need not use
+ the filenames listed here, and need not use the filename method of
+ identifying storage objects at all. See the documentation for
+ detailed information on the files associated with the DocBook DTD.
+ See SGML Open Technical Resolution 9401 for detailed information
+ on supplying and using catalog data.
+ --
+
+ -- ...................................................................... --
+ -- DocBook driver file .................................................. --
+
+PUBLIC "-//OASIS//DTD DocBook SCons XML V4.5//EN"
+ "scons.dtd"
+
+ -- ...................................................................... --
+ -- DocBook modules ...................................................... --
+
+PUBLIC "-//OASIS//DTD DocBook CALS Table Model V4.5//EN"
+ "calstblx.dtd"
+
+PUBLIC "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+ "htmltblx.mod"
+
+PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN"
+ "soextblx.dtd"
+
+PUBLIC "-//OASIS//ELEMENTS DocBook Information Pool V4.5//EN"
+ "dbpoolx.mod"
+
+PUBLIC "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN"
+ "dbhierx.mod"
+
+PUBLIC "-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN"
+ "dbgenent.mod"
+
+PUBLIC "-//OASIS//ENTITIES DocBook Notations V4.5//EN"
+ "dbnotnx.mod"
+
+PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN"
+ "dbcentx.mod"
+
+ -- ...................................................................... --
+ -- ISO entity sets ...................................................... --
+
+PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
+ "ent/isodia.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
+ "ent/isonum.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN//XML"
+ "ent/isopub.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN//XML"
+ "ent/isotech.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
+ "ent/isolat1.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
+ "ent/isolat2.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN//XML"
+ "ent/isogrk1.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML"
+ "ent/isogrk2.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN//XML"
+ "ent/isogrk3.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML"
+ "ent/isogrk4.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML"
+ "ent/isoamsa.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML"
+ "ent/isoamsb.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML"
+ "ent/isoamsc.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML"
+ "ent/isoamsn.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML"
+ "ent/isoamso.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML"
+ "ent/isoamsr.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML"
+ "ent/isobox.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML"
+ "ent/isocyr1.ent"
+
+PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML"
+ "ent/isocyr2.ent"
+
+ -- End of catalog data for DocBook XML V4.5 ............................. --
+ -- ...................................................................... --
diff --git a/doc/editor_configs/serna/scons/dtd/ent/README b/doc/editor_configs/serna/scons/dtd/ent/README
new file mode 100644
index 0000000..c0da542
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/README
@@ -0,0 +1,14 @@
+XML Entity Declarations for Characters
+
+The character entity sets distributed with DocBook XML are direct
+copies of the official entities located at
+
+ http://www.w3.org/2003/entities/
+
+They are distributed for historical compatibility and user convenience.
+The DocBook Technical Committee no longer attempts to maintain these
+definitions and will periodically update them from the W3C site if and
+as they are updated there.
+
+Please direct all questions or comments about the entities to the
+individuals or working groups who maintain the official sets.
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isoamsa.ent b/doc/editor_configs/serna/scons/dtd/ent/isoamsa.ent
new file mode 100644
index 0000000..daf09e9
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isoamsa.ent
@@ -0,0 +1,97 @@
+
+<!--
+ File isoamsa.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isoamsa.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isoamsa.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isoamsa PUBLIC
+ "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isoamsa.ent"
+ >
+ %isoamsa;
+
+-->
+
+<!ENTITY cularr "&#x021B6;" ><!--ANTICLOCKWISE TOP SEMICIRCLE ARROW -->
+<!ENTITY curarr "&#x021B7;" ><!--CLOCKWISE TOP SEMICIRCLE ARROW -->
+<!ENTITY dArr "&#x021D3;" ><!--DOWNWARDS DOUBLE ARROW -->
+<!ENTITY darr2 "&#x021CA;" ><!--DOWNWARDS PAIRED ARROWS -->
+<!ENTITY dharl "&#x021C3;" ><!--DOWNWARDS HARPOON WITH BARB LEFTWARDS -->
+<!ENTITY dharr "&#x021C2;" ><!--DOWNWARDS HARPOON WITH BARB RIGHTWARDS -->
+<!ENTITY dlarr "&#x02199;" ><!--SOUTH WEST ARROW -->
+<!ENTITY drarr "&#x02198;" ><!--SOUTH EAST ARROW -->
+<!ENTITY hArr "&#x021D4;" ><!--LEFT RIGHT DOUBLE ARROW -->
+<!ENTITY harr "&#x02194;" ><!--LEFT RIGHT ARROW -->
+<!ENTITY harrw "&#x021AD;" ><!--LEFT RIGHT WAVE ARROW -->
+<!ENTITY lAarr "&#x021DA;" ><!--LEFTWARDS TRIPLE ARROW -->
+<!ENTITY Larr "&#x0219E;" ><!--LEFTWARDS TWO HEADED ARROW -->
+<!ENTITY larr2 "&#x021C7;" ><!--LEFTWARDS PAIRED ARROWS -->
+<!ENTITY larrhk "&#x021A9;" ><!--LEFTWARDS ARROW WITH HOOK -->
+<!ENTITY larrlp "&#x021AB;" ><!--LEFTWARDS ARROW WITH LOOP -->
+<!ENTITY larrtl "&#x021A2;" ><!--LEFTWARDS ARROW WITH TAIL -->
+<!ENTITY lhard "&#x021BD;" ><!--LEFTWARDS HARPOON WITH BARB DOWNWARDS -->
+<!ENTITY lharu "&#x021BC;" ><!--LEFTWARDS HARPOON WITH BARB UPWARDS -->
+<!ENTITY lrarr2 "&#x021C6;" ><!--LEFTWARDS ARROW OVER RIGHTWARDS ARROW -->
+<!ENTITY lrhar2 "&#x021CB;" ><!--LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON -->
+<!ENTITY lsh "&#x021B0;" ><!--UPWARDS ARROW WITH TIP LEFTWARDS -->
+<!ENTITY map "&#x021A6;" ><!--RIGHTWARDS ARROW FROM BAR -->
+<!ENTITY mumap "&#x022B8;" ><!--MULTIMAP -->
+<!ENTITY nearr "&#x02197;" ><!--NORTH EAST ARROW -->
+<!ENTITY nhArr "&#x021CE;" ><!--LEFT RIGHT DOUBLE ARROW WITH STROKE -->
+<!ENTITY nharr "&#x021AE;" ><!--LEFT RIGHT ARROW WITH STROKE -->
+<!ENTITY nlArr "&#x021CD;" ><!--LEFTWARDS DOUBLE ARROW WITH STROKE -->
+<!ENTITY nlarr "&#x0219A;" ><!--LEFTWARDS ARROW WITH STROKE -->
+<!ENTITY nrArr "&#x021CF;" ><!--RIGHTWARDS DOUBLE ARROW WITH STROKE -->
+<!ENTITY nrarr "&#x0219B;" ><!--RIGHTWARDS ARROW WITH STROKE -->
+<!ENTITY nwarr "&#x02196;" ><!--NORTH WEST ARROW -->
+<!ENTITY olarr "&#x021BA;" ><!--ANTICLOCKWISE OPEN CIRCLE ARROW -->
+<!ENTITY orarr "&#x021BB;" ><!--CLOCKWISE OPEN CIRCLE ARROW -->
+<!ENTITY rAarr "&#x021DB;" ><!--RIGHTWARDS TRIPLE ARROW -->
+<!ENTITY Rarr "&#x021A0;" ><!--RIGHTWARDS TWO HEADED ARROW -->
+<!ENTITY rarr2 "&#x021C9;" ><!--RIGHTWARDS PAIRED ARROWS -->
+<!ENTITY rarrhk "&#x021AA;" ><!--RIGHTWARDS ARROW WITH HOOK -->
+<!ENTITY rarrlp "&#x021AC;" ><!--RIGHTWARDS ARROW WITH LOOP -->
+<!ENTITY rarrtl "&#x021A3;" ><!--RIGHTWARDS ARROW WITH TAIL -->
+<!ENTITY rarrw "&#x0219D;" ><!--RIGHTWARDS WAVE ARROW -->
+<!ENTITY rhard "&#x021C1;" ><!--RIGHTWARDS HARPOON WITH BARB DOWNWARDS -->
+<!ENTITY rharu "&#x021C0;" ><!--RIGHTWARDS HARPOON WITH BARB UPWARDS -->
+<!ENTITY rlarr2 "&#x021C4;" ><!--RIGHTWARDS ARROW OVER LEFTWARDS ARROW -->
+<!ENTITY rlhar2 "&#x021CC;" ><!--RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON -->
+<!ENTITY rsh "&#x021B1;" ><!--UPWARDS ARROW WITH TIP RIGHTWARDS -->
+<!ENTITY uArr "&#x021D1;" ><!--UPWARDS DOUBLE ARROW -->
+<!ENTITY uarr2 "&#x021C8;" ><!--UPWARDS PAIRED ARROWS -->
+<!ENTITY uharl "&#x021BF;" ><!--UPWARDS HARPOON WITH BARB LEFTWARDS -->
+<!ENTITY uharr "&#x021BE;" ><!--UPWARDS HARPOON WITH BARB RIGHTWARDS -->
+<!ENTITY vArr "&#x021D5;" ><!--UP DOWN DOUBLE ARROW -->
+<!ENTITY varr "&#x02195;" ><!--UP DOWN ARROW -->
+<!ENTITY xhArr "&#x027FA;" ><!--LONG LEFT RIGHT DOUBLE ARROW -->
+<!ENTITY xharr "&#x027F7;" ><!--LONG LEFT RIGHT ARROW -->
+<!ENTITY xlArr "&#x027F8;" ><!--LONG LEFTWARDS DOUBLE ARROW -->
+<!ENTITY xrArr "&#x027F9;" ><!--LONG RIGHTWARDS DOUBLE ARROW -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isoamsb.ent b/doc/editor_configs/serna/scons/dtd/ent/isoamsb.ent
new file mode 100644
index 0000000..717d63a
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isoamsb.ent
@@ -0,0 +1,83 @@
+
+<!--
+ File isoamsb.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isoamsb.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isoamsb.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isoamsb PUBLIC
+ "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isoamsb.ent"
+ >
+ %isoamsb;
+
+-->
+
+<!ENTITY amalg "&#x02A3F;" ><!--AMALGAMATION OR COPRODUCT -->
+<!ENTITY Barwed "&#x02306;" ><!--PERSPECTIVE -->
+<!ENTITY barwed "&#x02305;" ><!--PROJECTIVE -->
+<!ENTITY Cap "&#x022D2;" ><!--DOUBLE INTERSECTION -->
+<!ENTITY coprod "&#x02210;" ><!--N-ARY COPRODUCT -->
+<!ENTITY Cup "&#x022D3;" ><!--DOUBLE UNION -->
+<!ENTITY cuvee "&#x022CE;" ><!--CURLY LOGICAL OR -->
+<!ENTITY cuwed "&#x022CF;" ><!--CURLY LOGICAL AND -->
+<!ENTITY diam "&#x022C4;" ><!--DIAMOND OPERATOR -->
+<!ENTITY divonx "&#x022C7;" ><!--DIVISION TIMES -->
+<!ENTITY intcal "&#x022BA;" ><!--INTERCALATE -->
+<!ENTITY lthree "&#x022CB;" ><!--LEFT SEMIDIRECT PRODUCT -->
+<!ENTITY ltimes "&#x022C9;" ><!--LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -->
+<!ENTITY minusb "&#x0229F;" ><!--SQUARED MINUS -->
+<!ENTITY oast "&#x0229B;" ><!--CIRCLED ASTERISK OPERATOR -->
+<!ENTITY ocir "&#x0229A;" ><!--CIRCLED RING OPERATOR -->
+<!ENTITY odash "&#x0229D;" ><!--CIRCLED DASH -->
+<!ENTITY odot "&#x02299;" ><!--CIRCLED DOT OPERATOR -->
+<!ENTITY ominus "&#x02296;" ><!--CIRCLED MINUS -->
+<!ENTITY oplus "&#x02295;" ><!--CIRCLED PLUS -->
+<!ENTITY osol "&#x02298;" ><!--CIRCLED DIVISION SLASH -->
+<!ENTITY otimes "&#x02297;" ><!--CIRCLED TIMES -->
+<!ENTITY plusb "&#x0229E;" ><!--SQUARED PLUS -->
+<!ENTITY plusdo "&#x02214;" ><!--DOT PLUS -->
+<!ENTITY prod "&#x0220F;" ><!--N-ARY PRODUCT -->
+<!ENTITY rthree "&#x022CC;" ><!--RIGHT SEMIDIRECT PRODUCT -->
+<!ENTITY rtimes "&#x022CA;" ><!--RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -->
+<!ENTITY sdot "&#x022C5;" ><!--DOT OPERATOR -->
+<!ENTITY sdotb "&#x022A1;" ><!--SQUARED DOT OPERATOR -->
+<!ENTITY setmn "&#x02216;" ><!--SET MINUS -->
+<!ENTITY sqcap "&#x02293;" ><!--SQUARE CAP -->
+<!ENTITY sqcup "&#x02294;" ><!--SQUARE CUP -->
+<!ENTITY ssetmn "&#x02216;" ><!--SET MINUS -->
+<!ENTITY sstarf "&#x022C6;" ><!--STAR OPERATOR -->
+<!ENTITY sum "&#x02211;" ><!--N-ARY SUMMATION -->
+<!ENTITY timesb "&#x022A0;" ><!--SQUARED TIMES -->
+<!ENTITY top "&#x022A4;" ><!--DOWN TACK -->
+<!ENTITY uplus "&#x0228E;" ><!--MULTISET UNION -->
+<!ENTITY wreath "&#x02240;" ><!--WREATH PRODUCT -->
+<!ENTITY xcirc "&#x025EF;" ><!--LARGE CIRCLE -->
+<!ENTITY xdtri "&#x025BD;" ><!--WHITE DOWN-POINTING TRIANGLE -->
+<!ENTITY xutri "&#x025B3;" ><!--WHITE UP-POINTING TRIANGLE -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isoamsc.ent b/doc/editor_configs/serna/scons/dtd/ent/isoamsc.ent
new file mode 100644
index 0000000..c218560
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isoamsc.ent
@@ -0,0 +1,51 @@
+
+<!--
+ File isoamsc.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isoamsc.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isoamsc.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isoamsc PUBLIC
+ "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isoamsc.ent"
+ >
+ %isoamsc;
+
+-->
+
+<!ENTITY dlcorn "&#x0231E;" ><!--BOTTOM LEFT CORNER -->
+<!ENTITY drcorn "&#x0231F;" ><!--BOTTOM RIGHT CORNER -->
+<!ENTITY lceil "&#x02308;" ><!--LEFT CEILING -->
+<!ENTITY lfloor "&#x0230A;" ><!--LEFT FLOOR -->
+<!ENTITY lpargt "&#x029A0;" ><!--SPHERICAL ANGLE OPENING LEFT -->
+<!ENTITY rceil "&#x02309;" ><!--RIGHT CEILING -->
+<!ENTITY rfloor "&#x0230B;" ><!--RIGHT FLOOR -->
+<!ENTITY rpargt "&#x02994;" ><!--RIGHT ARC GREATER-THAN BRACKET -->
+<!ENTITY ulcorn "&#x0231C;" ><!--TOP LEFT CORNER -->
+<!ENTITY urcorn "&#x0231D;" ><!--TOP RIGHT CORNER -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isoamsn.ent b/doc/editor_configs/serna/scons/dtd/ent/isoamsn.ent
new file mode 100644
index 0000000..0bca668
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isoamsn.ent
@@ -0,0 +1,103 @@
+
+<!--
+ File isoamsn.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ References to the VARIANT SELECTOR 1 character (&#x0FE00;)
+ should match the uses listed in Unicode Technical Report 25.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isoamsn.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isoamsn.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isoamsn PUBLIC
+ "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isoamsn.ent"
+ >
+ %isoamsn;
+
+-->
+
+<!ENTITY gnap "&#x02A8A;" ><!--GREATER-THAN AND NOT APPROXIMATE -->
+<!ENTITY gnE "&#x02269;" ><!--GREATER-THAN BUT NOT EQUAL TO -->
+<!ENTITY gne "&#x02A88;" ><!--GREATER-THAN AND SINGLE-LINE NOT EQUAL TO -->
+<!ENTITY gnsim "&#x022E7;" ><!--GREATER-THAN BUT NOT EQUIVALENT TO -->
+<!ENTITY gvnE "&#x02269;&#x0FE00;" ><!--GREATER-THAN BUT NOT EQUAL TO - with vertical stroke -->
+<!ENTITY lnap "&#x02A89;" ><!--LESS-THAN AND NOT APPROXIMATE -->
+<!ENTITY lnE "&#x02268;" ><!--LESS-THAN BUT NOT EQUAL TO -->
+<!ENTITY lne "&#x02A87;" ><!--LESS-THAN AND SINGLE-LINE NOT EQUAL TO -->
+<!ENTITY lnsim "&#x022E6;" ><!--LESS-THAN BUT NOT EQUIVALENT TO -->
+<!ENTITY lvnE "&#x02268;&#x0FE00;" ><!--LESS-THAN BUT NOT EQUAL TO - with vertical stroke -->
+<!ENTITY nap "&#x02249;" ><!--NOT ALMOST EQUAL TO -->
+<!ENTITY ncong "&#x02247;" ><!--NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO -->
+<!ENTITY nequiv "&#x02262;" ><!--NOT IDENTICAL TO -->
+<!ENTITY ngE "&#x02267;&#x00338;" ><!--GREATER-THAN OVER EQUAL TO with slash -->
+<!ENTITY nge "&#x02271;" ><!--NEITHER GREATER-THAN NOR EQUAL TO -->
+<!ENTITY nges "&#x02A7E;&#x00338;" ><!--GREATER-THAN OR SLANTED EQUAL TO with slash -->
+<!ENTITY ngt "&#x0226F;" ><!--NOT GREATER-THAN -->
+<!ENTITY nlE "&#x02266;&#x00338;" ><!--LESS-THAN OVER EQUAL TO with slash -->
+<!ENTITY nle "&#x02270;" ><!--NEITHER LESS-THAN NOR EQUAL TO -->
+<!ENTITY nles "&#x02A7D;&#x00338;" ><!--LESS-THAN OR SLANTED EQUAL TO with slash -->
+<!ENTITY nlt "&#x0226E;" ><!--NOT LESS-THAN -->
+<!ENTITY nltri "&#x022EA;" ><!--NOT NORMAL SUBGROUP OF -->
+<!ENTITY nltrie "&#x022EC;" ><!--NOT NORMAL SUBGROUP OF OR EQUAL TO -->
+<!ENTITY nmid "&#x02224;" ><!--DOES NOT DIVIDE -->
+<!ENTITY npar "&#x02226;" ><!--NOT PARALLEL TO -->
+<!ENTITY npr "&#x02280;" ><!--DOES NOT PRECEDE -->
+<!ENTITY npre "&#x02AAF;&#x00338;" ><!--PRECEDES ABOVE SINGLE-LINE EQUALS SIGN with slash -->
+<!ENTITY nrtri "&#x022EB;" ><!--DOES NOT CONTAIN AS NORMAL SUBGROUP -->
+<!ENTITY nrtrie "&#x022ED;" ><!--DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL -->
+<!ENTITY nsc "&#x02281;" ><!--DOES NOT SUCCEED -->
+<!ENTITY nsce "&#x02AB0;&#x00338;" ><!--SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN with slash -->
+<!ENTITY nsim "&#x02241;" ><!--NOT TILDE -->
+<!ENTITY nsime "&#x02244;" ><!--NOT ASYMPTOTICALLY EQUAL TO -->
+<!ENTITY nsmid "&#x02224;" ><!--DOES NOT DIVIDE -->
+<!ENTITY nspar "&#x02226;" ><!--NOT PARALLEL TO -->
+<!ENTITY nsub "&#x02284;" ><!--NOT A SUBSET OF -->
+<!ENTITY nsubE "&#x02AC5;&#x00338;" ><!--SUBSET OF ABOVE EQUALS SIGN with slash -->
+<!ENTITY nsube "&#x02288;" ><!--NEITHER A SUBSET OF NOR EQUAL TO -->
+<!ENTITY nsup "&#x02285;" ><!--NOT A SUPERSET OF -->
+<!ENTITY nsupE "&#x02AC6;&#x00338;" ><!--SUPERSET OF ABOVE EQUALS SIGN with slash -->
+<!ENTITY nsupe "&#x02289;" ><!--NEITHER A SUPERSET OF NOR EQUAL TO -->
+<!ENTITY nVDash "&#x022AF;" ><!--NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -->
+<!ENTITY nVdash "&#x022AE;" ><!--DOES NOT FORCE -->
+<!ENTITY nvDash "&#x022AD;" ><!--NOT TRUE -->
+<!ENTITY nvdash "&#x022AC;" ><!--DOES NOT PROVE -->
+<!ENTITY prnap "&#x02AB9;" ><!--PRECEDES ABOVE NOT ALMOST EQUAL TO -->
+<!ENTITY prnE "&#x02AB5;" ><!--PRECEDES ABOVE NOT EQUAL TO -->
+<!ENTITY prnsim "&#x022E8;" ><!--PRECEDES BUT NOT EQUIVALENT TO -->
+<!ENTITY scnap "&#x02ABA;" ><!--SUCCEEDS ABOVE NOT ALMOST EQUAL TO -->
+<!ENTITY scnE "&#x02AB6;" ><!--SUCCEEDS ABOVE NOT EQUAL TO -->
+<!ENTITY scnsim "&#x022E9;" ><!--SUCCEEDS BUT NOT EQUIVALENT TO -->
+<!ENTITY subnE "&#x02ACB;" ><!--SUBSET OF ABOVE NOT EQUAL TO -->
+<!ENTITY subne "&#x0228A;" ><!--SUBSET OF WITH NOT EQUAL TO -->
+<!ENTITY supnE "&#x02ACC;" ><!--SUPERSET OF ABOVE NOT EQUAL TO -->
+<!ENTITY supne "&#x0228B;" ><!--SUPERSET OF WITH NOT EQUAL TO -->
+<!ENTITY vsubnE "&#x02ACB;&#x0FE00;" ><!--SUBSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members -->
+<!ENTITY vsubne "&#x0228A;&#x0FE00;" ><!--SUBSET OF WITH NOT EQUAL TO - variant with stroke through bottom members -->
+<!ENTITY vsupnE "&#x02ACC;&#x0FE00;" ><!--SUPERSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members -->
+<!ENTITY vsupne "&#x0228B;&#x0FE00;" ><!--SUPERSET OF WITH NOT EQUAL TO - variant with stroke through bottom members -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isoamso.ent b/doc/editor_configs/serna/scons/dtd/ent/isoamso.ent
new file mode 100644
index 0000000..1802e6e
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isoamso.ent
@@ -0,0 +1,59 @@
+
+<!--
+ File isoamso.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isoamso.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isoamso.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isoamso PUBLIC
+ "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isoamso.ent"
+ >
+ %isoamso;
+
+-->
+
+<!ENTITY ang "&#x02220;" ><!--ANGLE -->
+<!ENTITY angmsd "&#x02221;" ><!--MEASURED ANGLE -->
+<!ENTITY beth "&#x02136;" ><!--BET SYMBOL -->
+<!ENTITY bprime "&#x02035;" ><!--REVERSED PRIME -->
+<!ENTITY comp "&#x02201;" ><!--COMPLEMENT -->
+<!ENTITY daleth "&#x02138;" ><!--DALET SYMBOL -->
+<!ENTITY ell "&#x02113;" ><!--SCRIPT SMALL L -->
+<!ENTITY empty "&#x02205;" ><!--EMPTY SET -->
+<!ENTITY gimel "&#x02137;" ><!--GIMEL SYMBOL -->
+<!ENTITY inodot "&#x00131;" ><!--LATIN SMALL LETTER DOTLESS I -->
+<!ENTITY jnodot "&#x0006A;" ><!--LATIN SMALL LETTER J -->
+<!ENTITY nexist "&#x02204;" ><!--THERE DOES NOT EXIST -->
+<!ENTITY oS "&#x024C8;" ><!--CIRCLED LATIN CAPITAL LETTER S -->
+<!ENTITY planck "&#x0210F;" ><!--PLANCK CONSTANT OVER TWO PI -->
+<!ENTITY real "&#x0211C;" ><!--BLACK-LETTER CAPITAL R -->
+<!ENTITY sbsol "&#x0FE68;" ><!--SMALL REVERSE SOLIDUS -->
+<!ENTITY vprime "&#x02032;" ><!--PRIME -->
+<!ENTITY weierp "&#x02118;" ><!--SCRIPT CAPITAL P -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isoamsr.ent b/doc/editor_configs/serna/scons/dtd/ent/isoamsr.ent
new file mode 100644
index 0000000..9040833
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isoamsr.ent
@@ -0,0 +1,125 @@
+
+<!--
+ File isoamsr.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isoamsr.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isoamsr.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isoamsr PUBLIC
+ "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isoamsr.ent"
+ >
+ %isoamsr;
+
+-->
+
+<!ENTITY ape "&#x0224A;" ><!--ALMOST EQUAL OR EQUAL TO -->
+<!ENTITY asymp "&#x02248;" ><!--ALMOST EQUAL TO -->
+<!ENTITY bcong "&#x0224C;" ><!--ALL EQUAL TO -->
+<!ENTITY bepsi "&#x003F6;" ><!--GREEK REVERSED LUNATE EPSILON SYMBOL -->
+<!ENTITY bowtie "&#x022C8;" ><!--BOWTIE -->
+<!ENTITY bsim "&#x0223D;" ><!--REVERSED TILDE -->
+<!ENTITY bsime "&#x022CD;" ><!--REVERSED TILDE EQUALS -->
+<!ENTITY bump "&#x0224E;" ><!--GEOMETRICALLY EQUIVALENT TO -->
+<!ENTITY bumpe "&#x0224F;" ><!--DIFFERENCE BETWEEN -->
+<!ENTITY cire "&#x02257;" ><!--RING EQUAL TO -->
+<!ENTITY colone "&#x02254;" ><!--COLON EQUALS -->
+<!ENTITY cuepr "&#x022DE;" ><!--EQUAL TO OR PRECEDES -->
+<!ENTITY cuesc "&#x022DF;" ><!--EQUAL TO OR SUCCEEDS -->
+<!ENTITY cupre "&#x0227C;" ><!--PRECEDES OR EQUAL TO -->
+<!ENTITY dashv "&#x022A3;" ><!--LEFT TACK -->
+<!ENTITY ecir "&#x02256;" ><!--RING IN EQUAL TO -->
+<!ENTITY ecolon "&#x02255;" ><!--EQUALS COLON -->
+<!ENTITY eDot "&#x02251;" ><!--GEOMETRICALLY EQUAL TO -->
+<!ENTITY efDot "&#x02252;" ><!--APPROXIMATELY EQUAL TO OR THE IMAGE OF -->
+<!ENTITY egs "&#x02A96;" ><!--SLANTED EQUAL TO OR GREATER-THAN -->
+<!ENTITY els "&#x02A95;" ><!--SLANTED EQUAL TO OR LESS-THAN -->
+<!ENTITY erDot "&#x02253;" ><!--IMAGE OF OR APPROXIMATELY EQUAL TO -->
+<!ENTITY esdot "&#x02250;" ><!--APPROACHES THE LIMIT -->
+<!ENTITY fork "&#x022D4;" ><!--PITCHFORK -->
+<!ENTITY frown "&#x02322;" ><!--FROWN -->
+<!ENTITY gap "&#x02A86;" ><!--GREATER-THAN OR APPROXIMATE -->
+<!ENTITY gE "&#x02267;" ><!--GREATER-THAN OVER EQUAL TO -->
+<!ENTITY gEl "&#x02A8C;" ><!--GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN -->
+<!ENTITY gel "&#x022DB;" ><!--GREATER-THAN EQUAL TO OR LESS-THAN -->
+<!ENTITY ges "&#x02A7E;" ><!--GREATER-THAN OR SLANTED EQUAL TO -->
+<!ENTITY Gg "&#x022D9;" ><!--VERY MUCH GREATER-THAN -->
+<!ENTITY gl "&#x02277;" ><!--GREATER-THAN OR LESS-THAN -->
+<!ENTITY gsdot "&#x022D7;" ><!--GREATER-THAN WITH DOT -->
+<!ENTITY gsim "&#x02273;" ><!--GREATER-THAN OR EQUIVALENT TO -->
+<!ENTITY Gt "&#x0226B;" ><!--MUCH GREATER-THAN -->
+<!ENTITY lap "&#x02A85;" ><!--LESS-THAN OR APPROXIMATE -->
+<!ENTITY ldot "&#x022D6;" ><!--LESS-THAN WITH DOT -->
+<!ENTITY lE "&#x02266;" ><!--LESS-THAN OVER EQUAL TO -->
+<!ENTITY lEg "&#x02A8B;" ><!--LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN -->
+<!ENTITY leg "&#x022DA;" ><!--LESS-THAN EQUAL TO OR GREATER-THAN -->
+<!ENTITY les "&#x02A7D;" ><!--LESS-THAN OR SLANTED EQUAL TO -->
+<!ENTITY lg "&#x02276;" ><!--LESS-THAN OR GREATER-THAN -->
+<!ENTITY Ll "&#x022D8;" ><!--VERY MUCH LESS-THAN -->
+<!ENTITY lsim "&#x02272;" ><!--LESS-THAN OR EQUIVALENT TO -->
+<!ENTITY Lt "&#x0226A;" ><!--MUCH LESS-THAN -->
+<!ENTITY ltrie "&#x022B4;" ><!--NORMAL SUBGROUP OF OR EQUAL TO -->
+<!ENTITY mid "&#x02223;" ><!--DIVIDES -->
+<!ENTITY models "&#x022A7;" ><!--MODELS -->
+<!ENTITY pr "&#x0227A;" ><!--PRECEDES -->
+<!ENTITY prap "&#x02AB7;" ><!--PRECEDES ABOVE ALMOST EQUAL TO -->
+<!ENTITY pre "&#x02AAF;" ><!--PRECEDES ABOVE SINGLE-LINE EQUALS SIGN -->
+<!ENTITY prsim "&#x0227E;" ><!--PRECEDES OR EQUIVALENT TO -->
+<!ENTITY rtrie "&#x022B5;" ><!--CONTAINS AS NORMAL SUBGROUP OR EQUAL TO -->
+<!ENTITY samalg "&#x02210;" ><!--N-ARY COPRODUCT -->
+<!ENTITY sc "&#x0227B;" ><!--SUCCEEDS -->
+<!ENTITY scap "&#x02AB8;" ><!--SUCCEEDS ABOVE ALMOST EQUAL TO -->
+<!ENTITY sccue "&#x0227D;" ><!--SUCCEEDS OR EQUAL TO -->
+<!ENTITY sce "&#x02AB0;" ><!--SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN -->
+<!ENTITY scsim "&#x0227F;" ><!--SUCCEEDS OR EQUIVALENT TO -->
+<!ENTITY sfrown "&#x02322;" ><!--FROWN -->
+<!ENTITY smid "&#x02223;" ><!--DIVIDES -->
+<!ENTITY smile "&#x02323;" ><!--SMILE -->
+<!ENTITY spar "&#x02225;" ><!--PARALLEL TO -->
+<!ENTITY sqsub "&#x0228F;" ><!--SQUARE IMAGE OF -->
+<!ENTITY sqsube "&#x02291;" ><!--SQUARE IMAGE OF OR EQUAL TO -->
+<!ENTITY sqsup "&#x02290;" ><!--SQUARE ORIGINAL OF -->
+<!ENTITY sqsupe "&#x02292;" ><!--SQUARE ORIGINAL OF OR EQUAL TO -->
+<!ENTITY ssmile "&#x02323;" ><!--SMILE -->
+<!ENTITY Sub "&#x022D0;" ><!--DOUBLE SUBSET -->
+<!ENTITY subE "&#x02AC5;" ><!--SUBSET OF ABOVE EQUALS SIGN -->
+<!ENTITY Sup "&#x022D1;" ><!--DOUBLE SUPERSET -->
+<!ENTITY supE "&#x02AC6;" ><!--SUPERSET OF ABOVE EQUALS SIGN -->
+<!ENTITY thkap "&#x02248;" ><!--ALMOST EQUAL TO -->
+<!ENTITY thksim "&#x0223C;" ><!--TILDE OPERATOR -->
+<!ENTITY trie "&#x0225C;" ><!--DELTA EQUAL TO -->
+<!ENTITY twixt "&#x0226C;" ><!--BETWEEN -->
+<!ENTITY Vdash "&#x022A9;" ><!--FORCES -->
+<!ENTITY vDash "&#x022A8;" ><!--TRUE -->
+<!ENTITY vdash "&#x022A2;" ><!--RIGHT TACK -->
+<!ENTITY veebar "&#x022BB;" ><!--XOR -->
+<!ENTITY vltri "&#x022B2;" ><!--NORMAL SUBGROUP OF -->
+<!ENTITY vprop "&#x0221D;" ><!--PROPORTIONAL TO -->
+<!ENTITY vrtri "&#x022B3;" ><!--CONTAINS AS NORMAL SUBGROUP -->
+<!ENTITY Vvdash "&#x022AA;" ><!--TRIPLE VERTICAL BAR RIGHT TURNSTILE -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isobox.ent b/doc/editor_configs/serna/scons/dtd/ent/isobox.ent
new file mode 100644
index 0000000..a365add
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isobox.ent
@@ -0,0 +1,81 @@
+
+<!--
+ File isobox.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isobox.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isobox.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isobox PUBLIC
+ "ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isobox.ent"
+ >
+ %isobox;
+
+-->
+
+<!ENTITY boxDL "&#x02557;" ><!--BOX DRAWINGS DOUBLE DOWN AND LEFT -->
+<!ENTITY boxDl "&#x02556;" ><!--BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -->
+<!ENTITY boxdL "&#x02555;" ><!--BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -->
+<!ENTITY boxdl "&#x02510;" ><!--BOX DRAWINGS LIGHT DOWN AND LEFT -->
+<!ENTITY boxDR "&#x02554;" ><!--BOX DRAWINGS DOUBLE DOWN AND RIGHT -->
+<!ENTITY boxDr "&#x02553;" ><!--BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -->
+<!ENTITY boxdR "&#x02552;" ><!--BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -->
+<!ENTITY boxdr "&#x0250C;" ><!--BOX DRAWINGS LIGHT DOWN AND RIGHT -->
+<!ENTITY boxH "&#x02550;" ><!--BOX DRAWINGS DOUBLE HORIZONTAL -->
+<!ENTITY boxh "&#x02500;" ><!--BOX DRAWINGS LIGHT HORIZONTAL -->
+<!ENTITY boxHD "&#x02566;" ><!--BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -->
+<!ENTITY boxHd "&#x02564;" ><!--BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -->
+<!ENTITY boxhD "&#x02565;" ><!--BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -->
+<!ENTITY boxhd "&#x0252C;" ><!--BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -->
+<!ENTITY boxHU "&#x02569;" ><!--BOX DRAWINGS DOUBLE UP AND HORIZONTAL -->
+<!ENTITY boxHu "&#x02567;" ><!--BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -->
+<!ENTITY boxhU "&#x02568;" ><!--BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -->
+<!ENTITY boxhu "&#x02534;" ><!--BOX DRAWINGS LIGHT UP AND HORIZONTAL -->
+<!ENTITY boxUL "&#x0255D;" ><!--BOX DRAWINGS DOUBLE UP AND LEFT -->
+<!ENTITY boxUl "&#x0255C;" ><!--BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -->
+<!ENTITY boxuL "&#x0255B;" ><!--BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -->
+<!ENTITY boxul "&#x02518;" ><!--BOX DRAWINGS LIGHT UP AND LEFT -->
+<!ENTITY boxUR "&#x0255A;" ><!--BOX DRAWINGS DOUBLE UP AND RIGHT -->
+<!ENTITY boxUr "&#x02559;" ><!--BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -->
+<!ENTITY boxuR "&#x02558;" ><!--BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -->
+<!ENTITY boxur "&#x02514;" ><!--BOX DRAWINGS LIGHT UP AND RIGHT -->
+<!ENTITY boxV "&#x02551;" ><!--BOX DRAWINGS DOUBLE VERTICAL -->
+<!ENTITY boxv "&#x02502;" ><!--BOX DRAWINGS LIGHT VERTICAL -->
+<!ENTITY boxVH "&#x0256C;" ><!--BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -->
+<!ENTITY boxVh "&#x0256B;" ><!--BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -->
+<!ENTITY boxvH "&#x0256A;" ><!--BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -->
+<!ENTITY boxvh "&#x0253C;" ><!--BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -->
+<!ENTITY boxVL "&#x02563;" ><!--BOX DRAWINGS DOUBLE VERTICAL AND LEFT -->
+<!ENTITY boxVl "&#x02562;" ><!--BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -->
+<!ENTITY boxvL "&#x02561;" ><!--BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -->
+<!ENTITY boxvl "&#x02524;" ><!--BOX DRAWINGS LIGHT VERTICAL AND LEFT -->
+<!ENTITY boxVR "&#x02560;" ><!--BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -->
+<!ENTITY boxVr "&#x0255F;" ><!--BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -->
+<!ENTITY boxvR "&#x0255E;" ><!--BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -->
+<!ENTITY boxvr "&#x0251C;" ><!--BOX DRAWINGS LIGHT VERTICAL AND RIGHT -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isocyr1.ent b/doc/editor_configs/serna/scons/dtd/ent/isocyr1.ent
new file mode 100644
index 0000000..8da3cfb
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isocyr1.ent
@@ -0,0 +1,108 @@
+
+<!--
+ File isocyr1.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isocyr1.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isocyr1.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isocyr1 PUBLIC
+ "ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isocyr1.ent"
+ >
+ %isocyr1;
+
+-->
+
+<!ENTITY Acy "&#x00410;" ><!--CYRILLIC CAPITAL LETTER A -->
+<!ENTITY acy "&#x00430;" ><!--CYRILLIC SMALL LETTER A -->
+<!ENTITY Bcy "&#x00411;" ><!--CYRILLIC CAPITAL LETTER BE -->
+<!ENTITY bcy "&#x00431;" ><!--CYRILLIC SMALL LETTER BE -->
+<!ENTITY CHcy "&#x00427;" ><!--CYRILLIC CAPITAL LETTER CHE -->
+<!ENTITY chcy "&#x00447;" ><!--CYRILLIC SMALL LETTER CHE -->
+<!ENTITY Dcy "&#x00414;" ><!--CYRILLIC CAPITAL LETTER DE -->
+<!ENTITY dcy "&#x00434;" ><!--CYRILLIC SMALL LETTER DE -->
+<!ENTITY Ecy "&#x0042D;" ><!--CYRILLIC CAPITAL LETTER E -->
+<!ENTITY ecy "&#x0044D;" ><!--CYRILLIC SMALL LETTER E -->
+<!ENTITY Fcy "&#x00424;" ><!--CYRILLIC CAPITAL LETTER EF -->
+<!ENTITY fcy "&#x00444;" ><!--CYRILLIC SMALL LETTER EF -->
+<!ENTITY Gcy "&#x00413;" ><!--CYRILLIC CAPITAL LETTER GHE -->
+<!ENTITY gcy "&#x00433;" ><!--CYRILLIC SMALL LETTER GHE -->
+<!ENTITY HARDcy "&#x0042A;" ><!--CYRILLIC CAPITAL LETTER HARD SIGN -->
+<!ENTITY hardcy "&#x0044A;" ><!--CYRILLIC SMALL LETTER HARD SIGN -->
+<!ENTITY Icy "&#x00418;" ><!--CYRILLIC CAPITAL LETTER I -->
+<!ENTITY icy "&#x00438;" ><!--CYRILLIC SMALL LETTER I -->
+<!ENTITY IEcy "&#x00415;" ><!--CYRILLIC CAPITAL LETTER IE -->
+<!ENTITY iecy "&#x00435;" ><!--CYRILLIC SMALL LETTER IE -->
+<!ENTITY IOcy "&#x00401;" ><!--CYRILLIC CAPITAL LETTER IO -->
+<!ENTITY iocy "&#x00451;" ><!--CYRILLIC SMALL LETTER IO -->
+<!ENTITY Jcy "&#x00419;" ><!--CYRILLIC CAPITAL LETTER SHORT I -->
+<!ENTITY jcy "&#x00439;" ><!--CYRILLIC SMALL LETTER SHORT I -->
+<!ENTITY Kcy "&#x0041A;" ><!--CYRILLIC CAPITAL LETTER KA -->
+<!ENTITY kcy "&#x0043A;" ><!--CYRILLIC SMALL LETTER KA -->
+<!ENTITY KHcy "&#x00425;" ><!--CYRILLIC CAPITAL LETTER HA -->
+<!ENTITY khcy "&#x00445;" ><!--CYRILLIC SMALL LETTER HA -->
+<!ENTITY Lcy "&#x0041B;" ><!--CYRILLIC CAPITAL LETTER EL -->
+<!ENTITY lcy "&#x0043B;" ><!--CYRILLIC SMALL LETTER EL -->
+<!ENTITY Mcy "&#x0041C;" ><!--CYRILLIC CAPITAL LETTER EM -->
+<!ENTITY mcy "&#x0043C;" ><!--CYRILLIC SMALL LETTER EM -->
+<!ENTITY Ncy "&#x0041D;" ><!--CYRILLIC CAPITAL LETTER EN -->
+<!ENTITY ncy "&#x0043D;" ><!--CYRILLIC SMALL LETTER EN -->
+<!ENTITY numero "&#x02116;" ><!--NUMERO SIGN -->
+<!ENTITY Ocy "&#x0041E;" ><!--CYRILLIC CAPITAL LETTER O -->
+<!ENTITY ocy "&#x0043E;" ><!--CYRILLIC SMALL LETTER O -->
+<!ENTITY Pcy "&#x0041F;" ><!--CYRILLIC CAPITAL LETTER PE -->
+<!ENTITY pcy "&#x0043F;" ><!--CYRILLIC SMALL LETTER PE -->
+<!ENTITY Rcy "&#x00420;" ><!--CYRILLIC CAPITAL LETTER ER -->
+<!ENTITY rcy "&#x00440;" ><!--CYRILLIC SMALL LETTER ER -->
+<!ENTITY Scy "&#x00421;" ><!--CYRILLIC CAPITAL LETTER ES -->
+<!ENTITY scy "&#x00441;" ><!--CYRILLIC SMALL LETTER ES -->
+<!ENTITY SHCHcy "&#x00429;" ><!--CYRILLIC CAPITAL LETTER SHCHA -->
+<!ENTITY shchcy "&#x00449;" ><!--CYRILLIC SMALL LETTER SHCHA -->
+<!ENTITY SHcy "&#x00428;" ><!--CYRILLIC CAPITAL LETTER SHA -->
+<!ENTITY shcy "&#x00448;" ><!--CYRILLIC SMALL LETTER SHA -->
+<!ENTITY SOFTcy "&#x0042C;" ><!--CYRILLIC CAPITAL LETTER SOFT SIGN -->
+<!ENTITY softcy "&#x0044C;" ><!--CYRILLIC SMALL LETTER SOFT SIGN -->
+<!ENTITY Tcy "&#x00422;" ><!--CYRILLIC CAPITAL LETTER TE -->
+<!ENTITY tcy "&#x00442;" ><!--CYRILLIC SMALL LETTER TE -->
+<!ENTITY TScy "&#x00426;" ><!--CYRILLIC CAPITAL LETTER TSE -->
+<!ENTITY tscy "&#x00446;" ><!--CYRILLIC SMALL LETTER TSE -->
+<!ENTITY Ucy "&#x00423;" ><!--CYRILLIC CAPITAL LETTER U -->
+<!ENTITY ucy "&#x00443;" ><!--CYRILLIC SMALL LETTER U -->
+<!ENTITY Vcy "&#x00412;" ><!--CYRILLIC CAPITAL LETTER VE -->
+<!ENTITY vcy "&#x00432;" ><!--CYRILLIC SMALL LETTER VE -->
+<!ENTITY YAcy "&#x0042F;" ><!--CYRILLIC CAPITAL LETTER YA -->
+<!ENTITY yacy "&#x0044F;" ><!--CYRILLIC SMALL LETTER YA -->
+<!ENTITY Ycy "&#x0042B;" ><!--CYRILLIC CAPITAL LETTER YERU -->
+<!ENTITY ycy "&#x0044B;" ><!--CYRILLIC SMALL LETTER YERU -->
+<!ENTITY YUcy "&#x0042E;" ><!--CYRILLIC CAPITAL LETTER YU -->
+<!ENTITY yucy "&#x0044E;" ><!--CYRILLIC SMALL LETTER YU -->
+<!ENTITY Zcy "&#x00417;" ><!--CYRILLIC CAPITAL LETTER ZE -->
+<!ENTITY zcy "&#x00437;" ><!--CYRILLIC SMALL LETTER ZE -->
+<!ENTITY ZHcy "&#x00416;" ><!--CYRILLIC CAPITAL LETTER ZHE -->
+<!ENTITY zhcy "&#x00436;" ><!--CYRILLIC SMALL LETTER ZHE -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isocyr2.ent b/doc/editor_configs/serna/scons/dtd/ent/isocyr2.ent
new file mode 100644
index 0000000..00f869d
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isocyr2.ent
@@ -0,0 +1,67 @@
+
+<!--
+ File isocyr2.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isocyr2.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isocyr2.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isocyr2 PUBLIC
+ "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isocyr2.ent"
+ >
+ %isocyr2;
+
+-->
+
+<!ENTITY DJcy "&#x00402;" ><!--CYRILLIC CAPITAL LETTER DJE -->
+<!ENTITY djcy "&#x00452;" ><!--CYRILLIC SMALL LETTER DJE -->
+<!ENTITY DScy "&#x00405;" ><!--CYRILLIC CAPITAL LETTER DZE -->
+<!ENTITY dscy "&#x00455;" ><!--CYRILLIC SMALL LETTER DZE -->
+<!ENTITY DZcy "&#x0040F;" ><!--CYRILLIC CAPITAL LETTER DZHE -->
+<!ENTITY dzcy "&#x0045F;" ><!--CYRILLIC SMALL LETTER DZHE -->
+<!ENTITY GJcy "&#x00403;" ><!--CYRILLIC CAPITAL LETTER GJE -->
+<!ENTITY gjcy "&#x00453;" ><!--CYRILLIC SMALL LETTER GJE -->
+<!ENTITY Iukcy "&#x00406;" ><!--CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -->
+<!ENTITY iukcy "&#x00456;" ><!--CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
+<!ENTITY Jsercy "&#x00408;" ><!--CYRILLIC CAPITAL LETTER JE -->
+<!ENTITY jsercy "&#x00458;" ><!--CYRILLIC SMALL LETTER JE -->
+<!ENTITY Jukcy "&#x00404;" ><!--CYRILLIC CAPITAL LETTER UKRAINIAN IE -->
+<!ENTITY jukcy "&#x00454;" ><!--CYRILLIC SMALL LETTER UKRAINIAN IE -->
+<!ENTITY KJcy "&#x0040C;" ><!--CYRILLIC CAPITAL LETTER KJE -->
+<!ENTITY kjcy "&#x0045C;" ><!--CYRILLIC SMALL LETTER KJE -->
+<!ENTITY LJcy "&#x00409;" ><!--CYRILLIC CAPITAL LETTER LJE -->
+<!ENTITY ljcy "&#x00459;" ><!--CYRILLIC SMALL LETTER LJE -->
+<!ENTITY NJcy "&#x0040A;" ><!--CYRILLIC CAPITAL LETTER NJE -->
+<!ENTITY njcy "&#x0045A;" ><!--CYRILLIC SMALL LETTER NJE -->
+<!ENTITY TSHcy "&#x0040B;" ><!--CYRILLIC CAPITAL LETTER TSHE -->
+<!ENTITY tshcy "&#x0045B;" ><!--CYRILLIC SMALL LETTER TSHE -->
+<!ENTITY Ubrcy "&#x0040E;" ><!--CYRILLIC CAPITAL LETTER SHORT U -->
+<!ENTITY ubrcy "&#x0045E;" ><!--CYRILLIC SMALL LETTER SHORT U -->
+<!ENTITY YIcy "&#x00407;" ><!--CYRILLIC CAPITAL LETTER YI -->
+<!ENTITY yicy "&#x00457;" ><!--CYRILLIC SMALL LETTER YI -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isodia.ent b/doc/editor_configs/serna/scons/dtd/ent/isodia.ent
new file mode 100644
index 0000000..b70c4bf
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isodia.ent
@@ -0,0 +1,55 @@
+
+<!--
+ File isodia.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isodia.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isodia.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isodia PUBLIC
+ "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isodia.ent"
+ >
+ %isodia;
+
+-->
+
+<!ENTITY acute "&#x000B4;" ><!--ACUTE ACCENT -->
+<!ENTITY breve "&#x002D8;" ><!--BREVE -->
+<!ENTITY caron "&#x002C7;" ><!--CARON -->
+<!ENTITY cedil "&#x000B8;" ><!--CEDILLA -->
+<!ENTITY circ "&#x002C6;" ><!--MODIFIER LETTER CIRCUMFLEX ACCENT -->
+<!ENTITY dblac "&#x002DD;" ><!--DOUBLE ACUTE ACCENT -->
+<!ENTITY die "&#x000A8;" ><!--DIAERESIS -->
+<!ENTITY dot "&#x002D9;" ><!--DOT ABOVE -->
+<!ENTITY grave "&#x00060;" ><!--GRAVE ACCENT -->
+<!ENTITY macr "&#x000AF;" ><!--MACRON -->
+<!ENTITY ogon "&#x002DB;" ><!--OGONEK -->
+<!ENTITY ring "&#x002DA;" ><!--RING ABOVE -->
+<!ENTITY tilde "&#x002DC;" ><!--SMALL TILDE -->
+<!ENTITY uml "&#x000A8;" ><!--DIAERESIS -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isogrk1.ent b/doc/editor_configs/serna/scons/dtd/ent/isogrk1.ent
new file mode 100644
index 0000000..c1d7d81
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isogrk1.ent
@@ -0,0 +1,90 @@
+
+<!--
+ File isogrk1.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isogrk1.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Greek Letters//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isogrk1.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isogrk1 PUBLIC
+ "ISO 8879:1986//ENTITIES Greek Letters//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isogrk1.ent"
+ >
+ %isogrk1;
+
+-->
+
+<!ENTITY Agr "&#x00391;" ><!--GREEK CAPITAL LETTER ALPHA -->
+<!ENTITY agr "&#x003B1;" ><!--GREEK SMALL LETTER ALPHA -->
+<!ENTITY Bgr "&#x00392;" ><!--GREEK CAPITAL LETTER BETA -->
+<!ENTITY bgr "&#x003B2;" ><!--GREEK SMALL LETTER BETA -->
+<!ENTITY Dgr "&#x00394;" ><!--GREEK CAPITAL LETTER DELTA -->
+<!ENTITY dgr "&#x003B4;" ><!--GREEK SMALL LETTER DELTA -->
+<!ENTITY EEgr "&#x00397;" ><!--GREEK CAPITAL LETTER ETA -->
+<!ENTITY eegr "&#x003B7;" ><!--GREEK SMALL LETTER ETA -->
+<!ENTITY Egr "&#x00395;" ><!--GREEK CAPITAL LETTER EPSILON -->
+<!ENTITY egr "&#x003B5;" ><!--GREEK SMALL LETTER EPSILON -->
+<!ENTITY Ggr "&#x00393;" ><!--GREEK CAPITAL LETTER GAMMA -->
+<!ENTITY ggr "&#x003B3;" ><!--GREEK SMALL LETTER GAMMA -->
+<!ENTITY Igr "&#x00399;" ><!--GREEK CAPITAL LETTER IOTA -->
+<!ENTITY igr "&#x003B9;" ><!--GREEK SMALL LETTER IOTA -->
+<!ENTITY Kgr "&#x0039A;" ><!--GREEK CAPITAL LETTER KAPPA -->
+<!ENTITY kgr "&#x003BA;" ><!--GREEK SMALL LETTER KAPPA -->
+<!ENTITY KHgr "&#x003A7;" ><!--GREEK CAPITAL LETTER CHI -->
+<!ENTITY khgr "&#x003C7;" ><!--GREEK SMALL LETTER CHI -->
+<!ENTITY Lgr "&#x0039B;" ><!--GREEK CAPITAL LETTER LAMDA -->
+<!ENTITY lgr "&#x003BB;" ><!--GREEK SMALL LETTER LAMDA -->
+<!ENTITY Mgr "&#x0039C;" ><!--GREEK CAPITAL LETTER MU -->
+<!ENTITY mgr "&#x003BC;" ><!--GREEK SMALL LETTER MU -->
+<!ENTITY Ngr "&#x0039D;" ><!--GREEK CAPITAL LETTER NU -->
+<!ENTITY ngr "&#x003BD;" ><!--GREEK SMALL LETTER NU -->
+<!ENTITY Ogr "&#x0039F;" ><!--GREEK CAPITAL LETTER OMICRON -->
+<!ENTITY ogr "&#x003BF;" ><!--GREEK SMALL LETTER OMICRON -->
+<!ENTITY OHgr "&#x003A9;" ><!--GREEK CAPITAL LETTER OMEGA -->
+<!ENTITY ohgr "&#x003C9;" ><!--GREEK SMALL LETTER OMEGA -->
+<!ENTITY Pgr "&#x003A0;" ><!--GREEK CAPITAL LETTER PI -->
+<!ENTITY pgr "&#x003C0;" ><!--GREEK SMALL LETTER PI -->
+<!ENTITY PHgr "&#x003A6;" ><!--GREEK CAPITAL LETTER PHI -->
+<!ENTITY phgr "&#x003C6;" ><!--GREEK SMALL LETTER PHI -->
+<!ENTITY PSgr "&#x003A8;" ><!--GREEK CAPITAL LETTER PSI -->
+<!ENTITY psgr "&#x003C8;" ><!--GREEK SMALL LETTER PSI -->
+<!ENTITY Rgr "&#x003A1;" ><!--GREEK CAPITAL LETTER RHO -->
+<!ENTITY rgr "&#x003C1;" ><!--GREEK SMALL LETTER RHO -->
+<!ENTITY sfgr "&#x003C2;" ><!--GREEK SMALL LETTER FINAL SIGMA -->
+<!ENTITY Sgr "&#x003A3;" ><!--GREEK CAPITAL LETTER SIGMA -->
+<!ENTITY sgr "&#x003C3;" ><!--GREEK SMALL LETTER SIGMA -->
+<!ENTITY Tgr "&#x003A4;" ><!--GREEK CAPITAL LETTER TAU -->
+<!ENTITY tgr "&#x003C4;" ><!--GREEK SMALL LETTER TAU -->
+<!ENTITY THgr "&#x00398;" ><!--GREEK CAPITAL LETTER THETA -->
+<!ENTITY thgr "&#x003B8;" ><!--GREEK SMALL LETTER THETA -->
+<!ENTITY Ugr "&#x003A5;" ><!--GREEK CAPITAL LETTER UPSILON -->
+<!ENTITY ugr "&#x003C5;" ><!--GREEK SMALL LETTER UPSILON -->
+<!ENTITY Xgr "&#x0039E;" ><!--GREEK CAPITAL LETTER XI -->
+<!ENTITY xgr "&#x003BE;" ><!--GREEK SMALL LETTER XI -->
+<!ENTITY Zgr "&#x00396;" ><!--GREEK CAPITAL LETTER ZETA -->
+<!ENTITY zgr "&#x003B6;" ><!--GREEK SMALL LETTER ZETA -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isogrk2.ent b/doc/editor_configs/serna/scons/dtd/ent/isogrk2.ent
new file mode 100644
index 0000000..1874082
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isogrk2.ent
@@ -0,0 +1,61 @@
+
+<!--
+ File isogrk2.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isogrk2.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isogrk2.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isogrk2 PUBLIC
+ "ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isogrk2.ent"
+ >
+ %isogrk2;
+
+-->
+
+<!ENTITY Aacgr "&#x00386;" ><!--GREEK CAPITAL LETTER ALPHA WITH TONOS -->
+<!ENTITY aacgr "&#x003AC;" ><!--GREEK SMALL LETTER ALPHA WITH TONOS -->
+<!ENTITY Eacgr "&#x00388;" ><!--GREEK CAPITAL LETTER EPSILON WITH TONOS -->
+<!ENTITY eacgr "&#x003AD;" ><!--GREEK SMALL LETTER EPSILON WITH TONOS -->
+<!ENTITY EEacgr "&#x00389;" ><!--GREEK CAPITAL LETTER ETA WITH TONOS -->
+<!ENTITY eeacgr "&#x003AE;" ><!--GREEK SMALL LETTER ETA WITH TONOS -->
+<!ENTITY Iacgr "&#x0038A;" ><!--GREEK CAPITAL LETTER IOTA WITH TONOS -->
+<!ENTITY iacgr "&#x003AF;" ><!--GREEK SMALL LETTER IOTA WITH TONOS -->
+<!ENTITY idiagr "&#x00390;" ><!--GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -->
+<!ENTITY Idigr "&#x003AA;" ><!--GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -->
+<!ENTITY idigr "&#x003CA;" ><!--GREEK SMALL LETTER IOTA WITH DIALYTIKA -->
+<!ENTITY Oacgr "&#x0038C;" ><!--GREEK CAPITAL LETTER OMICRON WITH TONOS -->
+<!ENTITY oacgr "&#x003CC;" ><!--GREEK SMALL LETTER OMICRON WITH TONOS -->
+<!ENTITY OHacgr "&#x0038F;" ><!--GREEK CAPITAL LETTER OMEGA WITH TONOS -->
+<!ENTITY ohacgr "&#x003CE;" ><!--GREEK SMALL LETTER OMEGA WITH TONOS -->
+<!ENTITY Uacgr "&#x0038E;" ><!--GREEK CAPITAL LETTER UPSILON WITH TONOS -->
+<!ENTITY uacgr "&#x003CD;" ><!--GREEK SMALL LETTER UPSILON WITH TONOS -->
+<!ENTITY udiagr "&#x003B0;" ><!--GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -->
+<!ENTITY Udigr "&#x003AB;" ><!--GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -->
+<!ENTITY udigr "&#x003CB;" ><!--GREEK SMALL LETTER UPSILON WITH DIALYTIKA -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isogrk3.ent b/doc/editor_configs/serna/scons/dtd/ent/isogrk3.ent
new file mode 100644
index 0000000..7fdb12b
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isogrk3.ent
@@ -0,0 +1,84 @@
+
+<!--
+ File isogrk3.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isogrk3.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Greek Symbols//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isogrk3.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isogrk3 PUBLIC
+ "ISO 8879:1986//ENTITIES Greek Symbols//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isogrk3.ent"
+ >
+ %isogrk3;
+
+-->
+
+<!ENTITY alpha "&#x003B1;" ><!--GREEK SMALL LETTER ALPHA -->
+<!ENTITY beta "&#x003B2;" ><!--GREEK SMALL LETTER BETA -->
+<!ENTITY chi "&#x003C7;" ><!--GREEK SMALL LETTER CHI -->
+<!ENTITY Delta "&#x00394;" ><!--GREEK CAPITAL LETTER DELTA -->
+<!ENTITY delta "&#x003B4;" ><!--GREEK SMALL LETTER DELTA -->
+<!ENTITY epsi "&#x003F5;" ><!--GREEK LUNATE EPSILON SYMBOL -->
+<!ENTITY epsis "&#x003F5;" ><!--GREEK LUNATE EPSILON SYMBOL -->
+<!ENTITY epsiv "&#x003B5;" ><!--GREEK SMALL LETTER EPSILON -->
+<!ENTITY eta "&#x003B7;" ><!--GREEK SMALL LETTER ETA -->
+<!ENTITY Gamma "&#x00393;" ><!--GREEK CAPITAL LETTER GAMMA -->
+<!ENTITY gamma "&#x003B3;" ><!--GREEK SMALL LETTER GAMMA -->
+<!ENTITY gammad "&#x003DD;" ><!--GREEK SMALL LETTER DIGAMMA -->
+<!ENTITY iota "&#x003B9;" ><!--GREEK SMALL LETTER IOTA -->
+<!ENTITY kappa "&#x003BA;" ><!--GREEK SMALL LETTER KAPPA -->
+<!ENTITY kappav "&#x003F0;" ><!--GREEK KAPPA SYMBOL -->
+<!ENTITY Lambda "&#x0039B;" ><!--GREEK CAPITAL LETTER LAMDA -->
+<!ENTITY lambda "&#x003BB;" ><!--GREEK SMALL LETTER LAMDA -->
+<!ENTITY mu "&#x003BC;" ><!--GREEK SMALL LETTER MU -->
+<!ENTITY nu "&#x003BD;" ><!--GREEK SMALL LETTER NU -->
+<!ENTITY Omega "&#x003A9;" ><!--GREEK CAPITAL LETTER OMEGA -->
+<!ENTITY omega "&#x003C9;" ><!--GREEK SMALL LETTER OMEGA -->
+<!ENTITY Phi "&#x003A6;" ><!--GREEK CAPITAL LETTER PHI -->
+<!ENTITY phis "&#x003D5;" ><!--GREEK PHI SYMBOL -->
+<!ENTITY phiv "&#x003C6;" ><!--GREEK SMALL LETTER PHI -->
+<!ENTITY Pi "&#x003A0;" ><!--GREEK CAPITAL LETTER PI -->
+<!ENTITY pi "&#x003C0;" ><!--GREEK SMALL LETTER PI -->
+<!ENTITY piv "&#x003D6;" ><!--GREEK PI SYMBOL -->
+<!ENTITY Psi "&#x003A8;" ><!--GREEK CAPITAL LETTER PSI -->
+<!ENTITY psi "&#x003C8;" ><!--GREEK SMALL LETTER PSI -->
+<!ENTITY rho "&#x003C1;" ><!--GREEK SMALL LETTER RHO -->
+<!ENTITY rhov "&#x003F1;" ><!--GREEK RHO SYMBOL -->
+<!ENTITY Sigma "&#x003A3;" ><!--GREEK CAPITAL LETTER SIGMA -->
+<!ENTITY sigma "&#x003C3;" ><!--GREEK SMALL LETTER SIGMA -->
+<!ENTITY sigmav "&#x003C2;" ><!--GREEK SMALL LETTER FINAL SIGMA -->
+<!ENTITY tau "&#x003C4;" ><!--GREEK SMALL LETTER TAU -->
+<!ENTITY Theta "&#x00398;" ><!--GREEK CAPITAL LETTER THETA -->
+<!ENTITY thetas "&#x003B8;" ><!--GREEK SMALL LETTER THETA -->
+<!ENTITY thetav "&#x003D1;" ><!--GREEK THETA SYMBOL -->
+<!ENTITY Upsi "&#x003D2;" ><!--GREEK UPSILON WITH HOOK SYMBOL -->
+<!ENTITY upsi "&#x003C5;" ><!--GREEK SMALL LETTER UPSILON -->
+<!ENTITY Xi "&#x0039E;" ><!--GREEK CAPITAL LETTER XI -->
+<!ENTITY xi "&#x003BE;" ><!--GREEK SMALL LETTER XI -->
+<!ENTITY zeta "&#x003B6;" ><!--GREEK SMALL LETTER ZETA -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isogrk4.ent b/doc/editor_configs/serna/scons/dtd/ent/isogrk4.ent
new file mode 100644
index 0000000..7ee90d9
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isogrk4.ent
@@ -0,0 +1,85 @@
+<!-- ...................................................................... -->
+<!-- ISO Alternative Greek Symbols Entities V0.3 .......................... -->
+<!-- File iso-grk4.ent .................................................... -->
+
+<!-- Copyright (C) 2001, 2002 Organization for the Advancement of Structured
+ Information Standards (OASIS).
+
+ $Id: iso-grk4.ent,v 1.2 2002/06/13 17:39:20 nwalsh Exp $
+
+ Permission to use, copy, modify and distribute this entity set
+ and its accompanying documentation for any purpose and without
+ fee is hereby granted in perpetuity, provided that the above
+ copyright notice and this paragraph appear in all copies. The
+ copyright holders make no representation about the suitability of
+ the entities for any purpose. It is provided "as is" without
+ expressed or implied warranty.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ Derived, in part, from:
+
+ * iso-grk4.gml
+
+ Copyright (C) 1986 International Organization for Standardization
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+ * http://www.tug.org/applications/jadetex/unicode.xml
+
+ * ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/SGML.TXT
+
+ Please use the following formal public identifier to identify it:
+
+ ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML
+-->
+
+<!ENTITY b.alpha "&#x03B1;"> <!-- -->
+<!ENTITY b.beta "&#x03B2;"> <!-- GREEK SMALL LETTER BETA -->
+<!ENTITY b.gamma "&#x03B3;"> <!-- GREEK SMALL LETTER GAMMA -->
+<!ENTITY b.Gamma "&#x0393;"> <!-- GREEK CAPITAL LETTER GAMMA -->
+<!ENTITY b.gammad "&#x03DC;"> <!-- GREEK LETTER DIGAMMA -->
+<!ENTITY b.delta "&#x03B4;"> <!-- GREEK SMALL LETTER DELTA -->
+<!ENTITY b.Delta "&#x0394;"> <!-- GREEK CAPITAL LETTER DELTA -->
+<!ENTITY b.epsi "&#x03B5;"> <!-- -->
+<!ENTITY b.epsiv "&#x03B5;"> <!-- -->
+<!ENTITY b.epsis "&#x03B5;"> <!-- -->
+<!ENTITY b.zeta "&#x03B6;"> <!-- GREEK SMALL LETTER ZETA -->
+<!ENTITY b.eta "&#x03B7;"> <!-- GREEK SMALL LETTER ETA -->
+<!ENTITY b.thetas "&#x03B8;"> <!-- -->
+<!ENTITY b.Theta "&#x0398;"> <!-- GREEK CAPITAL LETTER THETA -->
+<!ENTITY b.thetav "&#x03D1;"> <!-- -->
+<!ENTITY b.iota "&#x03B9;"> <!-- GREEK SMALL LETTER IOTA -->
+<!ENTITY b.kappa "&#x03BA;"> <!-- GREEK SMALL LETTER KAPPA -->
+<!ENTITY b.kappav "&#x03F0;"> <!-- GREEK KAPPA SYMBOL -->
+<!ENTITY b.lambda "&#x03BB;"> <!-- GREEK SMALL LETTER LAMDA -->
+<!ENTITY b.Lambda "&#x039B;"> <!-- GREEK CAPITAL LETTER LAMDA -->
+<!ENTITY b.mu "&#x03BC;"> <!-- GREEK SMALL LETTER MU -->
+<!ENTITY b.nu "&#x03BD;"> <!-- GREEK SMALL LETTER NU -->
+<!ENTITY b.xi "&#x03BE;"> <!-- GREEK SMALL LETTER XI -->
+<!ENTITY b.Xi "&#x039E;"> <!-- GREEK CAPITAL LETTER XI -->
+<!ENTITY b.pi "&#x03C0;"> <!-- GREEK SMALL LETTER PI -->
+<!ENTITY b.Pi "&#x03A0;"> <!-- GREEK CAPITAL LETTER PI -->
+<!ENTITY b.piv "&#x03D6;"> <!-- GREEK PI SYMBOL -->
+<!ENTITY b.rho "&#x03C1;"> <!-- GREEK SMALL LETTER RHO -->
+<!ENTITY b.rhov "&#x03F1;"> <!-- GREEK RHO SYMBOL -->
+<!ENTITY b.sigma "&#x03C3;"> <!-- GREEK SMALL LETTER SIGMA -->
+<!ENTITY b.Sigma "&#x03A3;"> <!-- GREEK CAPITAL LETTER SIGMA -->
+<!ENTITY b.sigmav "&#x03C2;"> <!-- -->
+<!ENTITY b.tau "&#x03C4;"> <!-- GREEK SMALL LETTER TAU -->
+<!ENTITY b.upsi "&#x03C5;"> <!-- GREEK SMALL LETTER UPSILON -->
+<!ENTITY b.Upsi "&#x03D2;"> <!-- -->
+<!ENTITY b.phis "&#x03C6;"> <!-- GREEK SMALL LETTER PHI -->
+<!ENTITY b.Phi "&#x03A6;"> <!-- GREEK CAPITAL LETTER PHI -->
+<!ENTITY b.phiv "&#x03D5;"> <!-- GREEK PHI SYMBOL -->
+<!ENTITY b.chi "&#x03C7;"> <!-- GREEK SMALL LETTER CHI -->
+<!ENTITY b.psi "&#x03C8;"> <!-- GREEK SMALL LETTER PSI -->
+<!ENTITY b.Psi "&#x03A8;"> <!-- GREEK CAPITAL LETTER PSI -->
+<!ENTITY b.omega "&#x03C9;"> <!-- GREEK SMALL LETTER OMEGA -->
+<!ENTITY b.Omega "&#x03A9;"> <!-- GREEK CAPITAL LETTER OMEGA -->
+
+<!-- End of ISO Alternative Greek Symbols Entities V0.3 ................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isolat1.ent b/doc/editor_configs/serna/scons/dtd/ent/isolat1.ent
new file mode 100644
index 0000000..93508f0
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isolat1.ent
@@ -0,0 +1,103 @@
+
+<!--
+ File isolat1.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isolat1.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Latin 1//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isolat1.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isolat1 PUBLIC
+ "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isolat1.ent"
+ >
+ %isolat1;
+
+-->
+
+<!ENTITY Aacute "&#x000C1;" ><!--LATIN CAPITAL LETTER A WITH ACUTE -->
+<!ENTITY aacute "&#x000E1;" ><!--LATIN SMALL LETTER A WITH ACUTE -->
+<!ENTITY Acirc "&#x000C2;" ><!--LATIN CAPITAL LETTER A WITH CIRCUMFLEX -->
+<!ENTITY acirc "&#x000E2;" ><!--LATIN SMALL LETTER A WITH CIRCUMFLEX -->
+<!ENTITY AElig "&#x000C6;" ><!--LATIN CAPITAL LETTER AE -->
+<!ENTITY aelig "&#x000E6;" ><!--LATIN SMALL LETTER AE -->
+<!ENTITY Agrave "&#x000C0;" ><!--LATIN CAPITAL LETTER A WITH GRAVE -->
+<!ENTITY agrave "&#x000E0;" ><!--LATIN SMALL LETTER A WITH GRAVE -->
+<!ENTITY Aring "&#x000C5;" ><!--LATIN CAPITAL LETTER A WITH RING ABOVE -->
+<!ENTITY aring "&#x000E5;" ><!--LATIN SMALL LETTER A WITH RING ABOVE -->
+<!ENTITY Atilde "&#x000C3;" ><!--LATIN CAPITAL LETTER A WITH TILDE -->
+<!ENTITY atilde "&#x000E3;" ><!--LATIN SMALL LETTER A WITH TILDE -->
+<!ENTITY Auml "&#x000C4;" ><!--LATIN CAPITAL LETTER A WITH DIAERESIS -->
+<!ENTITY auml "&#x000E4;" ><!--LATIN SMALL LETTER A WITH DIAERESIS -->
+<!ENTITY Ccedil "&#x000C7;" ><!--LATIN CAPITAL LETTER C WITH CEDILLA -->
+<!ENTITY ccedil "&#x000E7;" ><!--LATIN SMALL LETTER C WITH CEDILLA -->
+<!ENTITY Eacute "&#x000C9;" ><!--LATIN CAPITAL LETTER E WITH ACUTE -->
+<!ENTITY eacute "&#x000E9;" ><!--LATIN SMALL LETTER E WITH ACUTE -->
+<!ENTITY Ecirc "&#x000CA;" ><!--LATIN CAPITAL LETTER E WITH CIRCUMFLEX -->
+<!ENTITY ecirc "&#x000EA;" ><!--LATIN SMALL LETTER E WITH CIRCUMFLEX -->
+<!ENTITY Egrave "&#x000C8;" ><!--LATIN CAPITAL LETTER E WITH GRAVE -->
+<!ENTITY egrave "&#x000E8;" ><!--LATIN SMALL LETTER E WITH GRAVE -->
+<!ENTITY ETH "&#x000D0;" ><!--LATIN CAPITAL LETTER ETH -->
+<!ENTITY eth "&#x000F0;" ><!--LATIN SMALL LETTER ETH -->
+<!ENTITY Euml "&#x000CB;" ><!--LATIN CAPITAL LETTER E WITH DIAERESIS -->
+<!ENTITY euml "&#x000EB;" ><!--LATIN SMALL LETTER E WITH DIAERESIS -->
+<!ENTITY Iacute "&#x000CD;" ><!--LATIN CAPITAL LETTER I WITH ACUTE -->
+<!ENTITY iacute "&#x000ED;" ><!--LATIN SMALL LETTER I WITH ACUTE -->
+<!ENTITY Icirc "&#x000CE;" ><!--LATIN CAPITAL LETTER I WITH CIRCUMFLEX -->
+<!ENTITY icirc "&#x000EE;" ><!--LATIN SMALL LETTER I WITH CIRCUMFLEX -->
+<!ENTITY Igrave "&#x000CC;" ><!--LATIN CAPITAL LETTER I WITH GRAVE -->
+<!ENTITY igrave "&#x000EC;" ><!--LATIN SMALL LETTER I WITH GRAVE -->
+<!ENTITY Iuml "&#x000CF;" ><!--LATIN CAPITAL LETTER I WITH DIAERESIS -->
+<!ENTITY iuml "&#x000EF;" ><!--LATIN SMALL LETTER I WITH DIAERESIS -->
+<!ENTITY Ntilde "&#x000D1;" ><!--LATIN CAPITAL LETTER N WITH TILDE -->
+<!ENTITY ntilde "&#x000F1;" ><!--LATIN SMALL LETTER N WITH TILDE -->
+<!ENTITY Oacute "&#x000D3;" ><!--LATIN CAPITAL LETTER O WITH ACUTE -->
+<!ENTITY oacute "&#x000F3;" ><!--LATIN SMALL LETTER O WITH ACUTE -->
+<!ENTITY Ocirc "&#x000D4;" ><!--LATIN CAPITAL LETTER O WITH CIRCUMFLEX -->
+<!ENTITY ocirc "&#x000F4;" ><!--LATIN SMALL LETTER O WITH CIRCUMFLEX -->
+<!ENTITY Ograve "&#x000D2;" ><!--LATIN CAPITAL LETTER O WITH GRAVE -->
+<!ENTITY ograve "&#x000F2;" ><!--LATIN SMALL LETTER O WITH GRAVE -->
+<!ENTITY Oslash "&#x000D8;" ><!--LATIN CAPITAL LETTER O WITH STROKE -->
+<!ENTITY oslash "&#x000F8;" ><!--LATIN SMALL LETTER O WITH STROKE -->
+<!ENTITY Otilde "&#x000D5;" ><!--LATIN CAPITAL LETTER O WITH TILDE -->
+<!ENTITY otilde "&#x000F5;" ><!--LATIN SMALL LETTER O WITH TILDE -->
+<!ENTITY Ouml "&#x000D6;" ><!--LATIN CAPITAL LETTER O WITH DIAERESIS -->
+<!ENTITY ouml "&#x000F6;" ><!--LATIN SMALL LETTER O WITH DIAERESIS -->
+<!ENTITY szlig "&#x000DF;" ><!--LATIN SMALL LETTER SHARP S -->
+<!ENTITY THORN "&#x000DE;" ><!--LATIN CAPITAL LETTER THORN -->
+<!ENTITY thorn "&#x000FE;" ><!--LATIN SMALL LETTER THORN -->
+<!ENTITY Uacute "&#x000DA;" ><!--LATIN CAPITAL LETTER U WITH ACUTE -->
+<!ENTITY uacute "&#x000FA;" ><!--LATIN SMALL LETTER U WITH ACUTE -->
+<!ENTITY Ucirc "&#x000DB;" ><!--LATIN CAPITAL LETTER U WITH CIRCUMFLEX -->
+<!ENTITY ucirc "&#x000FB;" ><!--LATIN SMALL LETTER U WITH CIRCUMFLEX -->
+<!ENTITY Ugrave "&#x000D9;" ><!--LATIN CAPITAL LETTER U WITH GRAVE -->
+<!ENTITY ugrave "&#x000F9;" ><!--LATIN SMALL LETTER U WITH GRAVE -->
+<!ENTITY Uuml "&#x000DC;" ><!--LATIN CAPITAL LETTER U WITH DIAERESIS -->
+<!ENTITY uuml "&#x000FC;" ><!--LATIN SMALL LETTER U WITH DIAERESIS -->
+<!ENTITY Yacute "&#x000DD;" ><!--LATIN CAPITAL LETTER Y WITH ACUTE -->
+<!ENTITY yacute "&#x000FD;" ><!--LATIN SMALL LETTER Y WITH ACUTE -->
+<!ENTITY yuml "&#x000FF;" ><!--LATIN SMALL LETTER Y WITH DIAERESIS -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isolat2.ent b/doc/editor_configs/serna/scons/dtd/ent/isolat2.ent
new file mode 100644
index 0000000..89d87cd
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isolat2.ent
@@ -0,0 +1,162 @@
+
+<!--
+ File isolat2.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isolat2.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Added Latin 2//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isolat2.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isolat2 PUBLIC
+ "ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isolat2.ent"
+ >
+ %isolat2;
+
+-->
+
+<!ENTITY Abreve "&#x00102;" ><!--LATIN CAPITAL LETTER A WITH BREVE -->
+<!ENTITY abreve "&#x00103;" ><!--LATIN SMALL LETTER A WITH BREVE -->
+<!ENTITY Amacr "&#x00100;" ><!--LATIN CAPITAL LETTER A WITH MACRON -->
+<!ENTITY amacr "&#x00101;" ><!--LATIN SMALL LETTER A WITH MACRON -->
+<!ENTITY Aogon "&#x00104;" ><!--LATIN CAPITAL LETTER A WITH OGONEK -->
+<!ENTITY aogon "&#x00105;" ><!--LATIN SMALL LETTER A WITH OGONEK -->
+<!ENTITY Cacute "&#x00106;" ><!--LATIN CAPITAL LETTER C WITH ACUTE -->
+<!ENTITY cacute "&#x00107;" ><!--LATIN SMALL LETTER C WITH ACUTE -->
+<!ENTITY Ccaron "&#x0010C;" ><!--LATIN CAPITAL LETTER C WITH CARON -->
+<!ENTITY ccaron "&#x0010D;" ><!--LATIN SMALL LETTER C WITH CARON -->
+<!ENTITY Ccirc "&#x00108;" ><!--LATIN CAPITAL LETTER C WITH CIRCUMFLEX -->
+<!ENTITY ccirc "&#x00109;" ><!--LATIN SMALL LETTER C WITH CIRCUMFLEX -->
+<!ENTITY Cdot "&#x0010A;" ><!--LATIN CAPITAL LETTER C WITH DOT ABOVE -->
+<!ENTITY cdot "&#x0010B;" ><!--LATIN SMALL LETTER C WITH DOT ABOVE -->
+<!ENTITY Dcaron "&#x0010E;" ><!--LATIN CAPITAL LETTER D WITH CARON -->
+<!ENTITY dcaron "&#x0010F;" ><!--LATIN SMALL LETTER D WITH CARON -->
+<!ENTITY Dstrok "&#x00110;" ><!--LATIN CAPITAL LETTER D WITH STROKE -->
+<!ENTITY dstrok "&#x00111;" ><!--LATIN SMALL LETTER D WITH STROKE -->
+<!ENTITY Ecaron "&#x0011A;" ><!--LATIN CAPITAL LETTER E WITH CARON -->
+<!ENTITY ecaron "&#x0011B;" ><!--LATIN SMALL LETTER E WITH CARON -->
+<!ENTITY Edot "&#x00116;" ><!--LATIN CAPITAL LETTER E WITH DOT ABOVE -->
+<!ENTITY edot "&#x00117;" ><!--LATIN SMALL LETTER E WITH DOT ABOVE -->
+<!ENTITY Emacr "&#x00112;" ><!--LATIN CAPITAL LETTER E WITH MACRON -->
+<!ENTITY emacr "&#x00113;" ><!--LATIN SMALL LETTER E WITH MACRON -->
+<!ENTITY ENG "&#x0014A;" ><!--LATIN CAPITAL LETTER ENG -->
+<!ENTITY eng "&#x0014B;" ><!--LATIN SMALL LETTER ENG -->
+<!ENTITY Eogon "&#x00118;" ><!--LATIN CAPITAL LETTER E WITH OGONEK -->
+<!ENTITY eogon "&#x00119;" ><!--LATIN SMALL LETTER E WITH OGONEK -->
+<!ENTITY gacute "&#x001F5;" ><!--LATIN SMALL LETTER G WITH ACUTE -->
+<!ENTITY Gbreve "&#x0011E;" ><!--LATIN CAPITAL LETTER G WITH BREVE -->
+<!ENTITY gbreve "&#x0011F;" ><!--LATIN SMALL LETTER G WITH BREVE -->
+<!ENTITY Gcedil "&#x00122;" ><!--LATIN CAPITAL LETTER G WITH CEDILLA -->
+<!ENTITY Gcirc "&#x0011C;" ><!--LATIN CAPITAL LETTER G WITH CIRCUMFLEX -->
+<!ENTITY gcirc "&#x0011D;" ><!--LATIN SMALL LETTER G WITH CIRCUMFLEX -->
+<!ENTITY Gdot "&#x00120;" ><!--LATIN CAPITAL LETTER G WITH DOT ABOVE -->
+<!ENTITY gdot "&#x00121;" ><!--LATIN SMALL LETTER G WITH DOT ABOVE -->
+<!ENTITY Hcirc "&#x00124;" ><!--LATIN CAPITAL LETTER H WITH CIRCUMFLEX -->
+<!ENTITY hcirc "&#x00125;" ><!--LATIN SMALL LETTER H WITH CIRCUMFLEX -->
+<!ENTITY Hstrok "&#x00126;" ><!--LATIN CAPITAL LETTER H WITH STROKE -->
+<!ENTITY hstrok "&#x00127;" ><!--LATIN SMALL LETTER H WITH STROKE -->
+<!ENTITY Idot "&#x00130;" ><!--LATIN CAPITAL LETTER I WITH DOT ABOVE -->
+<!ENTITY IJlig "&#x00132;" ><!--LATIN CAPITAL LIGATURE IJ -->
+<!ENTITY ijlig "&#x00133;" ><!--LATIN SMALL LIGATURE IJ -->
+<!ENTITY Imacr "&#x0012A;" ><!--LATIN CAPITAL LETTER I WITH MACRON -->
+<!ENTITY imacr "&#x0012B;" ><!--LATIN SMALL LETTER I WITH MACRON -->
+<!ENTITY inodot "&#x00131;" ><!--LATIN SMALL LETTER DOTLESS I -->
+<!ENTITY Iogon "&#x0012E;" ><!--LATIN CAPITAL LETTER I WITH OGONEK -->
+<!ENTITY iogon "&#x0012F;" ><!--LATIN SMALL LETTER I WITH OGONEK -->
+<!ENTITY Itilde "&#x00128;" ><!--LATIN CAPITAL LETTER I WITH TILDE -->
+<!ENTITY itilde "&#x00129;" ><!--LATIN SMALL LETTER I WITH TILDE -->
+<!ENTITY Jcirc "&#x00134;" ><!--LATIN CAPITAL LETTER J WITH CIRCUMFLEX -->
+<!ENTITY jcirc "&#x00135;" ><!--LATIN SMALL LETTER J WITH CIRCUMFLEX -->
+<!ENTITY Kcedil "&#x00136;" ><!--LATIN CAPITAL LETTER K WITH CEDILLA -->
+<!ENTITY kcedil "&#x00137;" ><!--LATIN SMALL LETTER K WITH CEDILLA -->
+<!ENTITY kgreen "&#x00138;" ><!--LATIN SMALL LETTER KRA -->
+<!ENTITY Lacute "&#x00139;" ><!--LATIN CAPITAL LETTER L WITH ACUTE -->
+<!ENTITY lacute "&#x0013A;" ><!--LATIN SMALL LETTER L WITH ACUTE -->
+<!ENTITY Lcaron "&#x0013D;" ><!--LATIN CAPITAL LETTER L WITH CARON -->
+<!ENTITY lcaron "&#x0013E;" ><!--LATIN SMALL LETTER L WITH CARON -->
+<!ENTITY Lcedil "&#x0013B;" ><!--LATIN CAPITAL LETTER L WITH CEDILLA -->
+<!ENTITY lcedil "&#x0013C;" ><!--LATIN SMALL LETTER L WITH CEDILLA -->
+<!ENTITY Lmidot "&#x0013F;" ><!--LATIN CAPITAL LETTER L WITH MIDDLE DOT -->
+<!ENTITY lmidot "&#x00140;" ><!--LATIN SMALL LETTER L WITH MIDDLE DOT -->
+<!ENTITY Lstrok "&#x00141;" ><!--LATIN CAPITAL LETTER L WITH STROKE -->
+<!ENTITY lstrok "&#x00142;" ><!--LATIN SMALL LETTER L WITH STROKE -->
+<!ENTITY Nacute "&#x00143;" ><!--LATIN CAPITAL LETTER N WITH ACUTE -->
+<!ENTITY nacute "&#x00144;" ><!--LATIN SMALL LETTER N WITH ACUTE -->
+<!ENTITY napos "&#x00149;" ><!--LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -->
+<!ENTITY Ncaron "&#x00147;" ><!--LATIN CAPITAL LETTER N WITH CARON -->
+<!ENTITY ncaron "&#x00148;" ><!--LATIN SMALL LETTER N WITH CARON -->
+<!ENTITY Ncedil "&#x00145;" ><!--LATIN CAPITAL LETTER N WITH CEDILLA -->
+<!ENTITY ncedil "&#x00146;" ><!--LATIN SMALL LETTER N WITH CEDILLA -->
+<!ENTITY Odblac "&#x00150;" ><!--LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -->
+<!ENTITY odblac "&#x00151;" ><!--LATIN SMALL LETTER O WITH DOUBLE ACUTE -->
+<!ENTITY OElig "&#x00152;" ><!--LATIN CAPITAL LIGATURE OE -->
+<!ENTITY oelig "&#x00153;" ><!--LATIN SMALL LIGATURE OE -->
+<!ENTITY Omacr "&#x0014C;" ><!--LATIN CAPITAL LETTER O WITH MACRON -->
+<!ENTITY omacr "&#x0014D;" ><!--LATIN SMALL LETTER O WITH MACRON -->
+<!ENTITY Racute "&#x00154;" ><!--LATIN CAPITAL LETTER R WITH ACUTE -->
+<!ENTITY racute "&#x00155;" ><!--LATIN SMALL LETTER R WITH ACUTE -->
+<!ENTITY Rcaron "&#x00158;" ><!--LATIN CAPITAL LETTER R WITH CARON -->
+<!ENTITY rcaron "&#x00159;" ><!--LATIN SMALL LETTER R WITH CARON -->
+<!ENTITY Rcedil "&#x00156;" ><!--LATIN CAPITAL LETTER R WITH CEDILLA -->
+<!ENTITY rcedil "&#x00157;" ><!--LATIN SMALL LETTER R WITH CEDILLA -->
+<!ENTITY Sacute "&#x0015A;" ><!--LATIN CAPITAL LETTER S WITH ACUTE -->
+<!ENTITY sacute "&#x0015B;" ><!--LATIN SMALL LETTER S WITH ACUTE -->
+<!ENTITY Scaron "&#x00160;" ><!--LATIN CAPITAL LETTER S WITH CARON -->
+<!ENTITY scaron "&#x00161;" ><!--LATIN SMALL LETTER S WITH CARON -->
+<!ENTITY Scedil "&#x0015E;" ><!--LATIN CAPITAL LETTER S WITH CEDILLA -->
+<!ENTITY scedil "&#x0015F;" ><!--LATIN SMALL LETTER S WITH CEDILLA -->
+<!ENTITY Scirc "&#x0015C;" ><!--LATIN CAPITAL LETTER S WITH CIRCUMFLEX -->
+<!ENTITY scirc "&#x0015D;" ><!--LATIN SMALL LETTER S WITH CIRCUMFLEX -->
+<!ENTITY Tcaron "&#x00164;" ><!--LATIN CAPITAL LETTER T WITH CARON -->
+<!ENTITY tcaron "&#x00165;" ><!--LATIN SMALL LETTER T WITH CARON -->
+<!ENTITY Tcedil "&#x00162;" ><!--LATIN CAPITAL LETTER T WITH CEDILLA -->
+<!ENTITY tcedil "&#x00163;" ><!--LATIN SMALL LETTER T WITH CEDILLA -->
+<!ENTITY Tstrok "&#x00166;" ><!--LATIN CAPITAL LETTER T WITH STROKE -->
+<!ENTITY tstrok "&#x00167;" ><!--LATIN SMALL LETTER T WITH STROKE -->
+<!ENTITY Ubreve "&#x0016C;" ><!--LATIN CAPITAL LETTER U WITH BREVE -->
+<!ENTITY ubreve "&#x0016D;" ><!--LATIN SMALL LETTER U WITH BREVE -->
+<!ENTITY Udblac "&#x00170;" ><!--LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -->
+<!ENTITY udblac "&#x00171;" ><!--LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
+<!ENTITY Umacr "&#x0016A;" ><!--LATIN CAPITAL LETTER U WITH MACRON -->
+<!ENTITY umacr "&#x0016B;" ><!--LATIN SMALL LETTER U WITH MACRON -->
+<!ENTITY Uogon "&#x00172;" ><!--LATIN CAPITAL LETTER U WITH OGONEK -->
+<!ENTITY uogon "&#x00173;" ><!--LATIN SMALL LETTER U WITH OGONEK -->
+<!ENTITY Uring "&#x0016E;" ><!--LATIN CAPITAL LETTER U WITH RING ABOVE -->
+<!ENTITY uring "&#x0016F;" ><!--LATIN SMALL LETTER U WITH RING ABOVE -->
+<!ENTITY Utilde "&#x00168;" ><!--LATIN CAPITAL LETTER U WITH TILDE -->
+<!ENTITY utilde "&#x00169;" ><!--LATIN SMALL LETTER U WITH TILDE -->
+<!ENTITY Wcirc "&#x00174;" ><!--LATIN CAPITAL LETTER W WITH CIRCUMFLEX -->
+<!ENTITY wcirc "&#x00175;" ><!--LATIN SMALL LETTER W WITH CIRCUMFLEX -->
+<!ENTITY Ycirc "&#x00176;" ><!--LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -->
+<!ENTITY ycirc "&#x00177;" ><!--LATIN SMALL LETTER Y WITH CIRCUMFLEX -->
+<!ENTITY Yuml "&#x00178;" ><!--LATIN CAPITAL LETTER Y WITH DIAERESIS -->
+<!ENTITY Zacute "&#x00179;" ><!--LATIN CAPITAL LETTER Z WITH ACUTE -->
+<!ENTITY zacute "&#x0017A;" ><!--LATIN SMALL LETTER Z WITH ACUTE -->
+<!ENTITY Zcaron "&#x0017D;" ><!--LATIN CAPITAL LETTER Z WITH CARON -->
+<!ENTITY zcaron "&#x0017E;" ><!--LATIN SMALL LETTER Z WITH CARON -->
+<!ENTITY Zdot "&#x0017B;" ><!--LATIN CAPITAL LETTER Z WITH DOT ABOVE -->
+<!ENTITY zdot "&#x0017C;" ><!--LATIN SMALL LETTER Z WITH DOT ABOVE -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isonum.ent b/doc/editor_configs/serna/scons/dtd/ent/isonum.ent
new file mode 100644
index 0000000..c1536af
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isonum.ent
@@ -0,0 +1,117 @@
+
+<!--
+ File isonum.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isonum.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isonum.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isonum PUBLIC
+ "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isonum.ent"
+ >
+ %isonum;
+
+-->
+
+<!ENTITY amp "&#38;#38;" ><!--AMPERSAND -->
+<!ENTITY apos "&#x00027;" ><!--APOSTROPHE -->
+<!ENTITY ast "&#x0002A;" ><!--ASTERISK -->
+<!ENTITY brvbar "&#x000A6;" ><!--BROKEN BAR -->
+<!ENTITY bsol "&#x0005C;" ><!--REVERSE SOLIDUS -->
+<!ENTITY cent "&#x000A2;" ><!--CENT SIGN -->
+<!ENTITY colon "&#x0003A;" ><!--COLON -->
+<!ENTITY comma "&#x0002C;" ><!--COMMA -->
+<!ENTITY commat "&#x00040;" ><!--COMMERCIAL AT -->
+<!ENTITY copy "&#x000A9;" ><!--COPYRIGHT SIGN -->
+<!ENTITY curren "&#x000A4;" ><!--CURRENCY SIGN -->
+<!ENTITY darr "&#x02193;" ><!--DOWNWARDS ARROW -->
+<!ENTITY deg "&#x000B0;" ><!--DEGREE SIGN -->
+<!ENTITY divide "&#x000F7;" ><!--DIVISION SIGN -->
+<!ENTITY dollar "&#x00024;" ><!--DOLLAR SIGN -->
+<!ENTITY equals "&#x0003D;" ><!--EQUALS SIGN -->
+<!ENTITY excl "&#x00021;" ><!--EXCLAMATION MARK -->
+<!ENTITY frac12 "&#x000BD;" ><!--VULGAR FRACTION ONE HALF -->
+<!ENTITY frac14 "&#x000BC;" ><!--VULGAR FRACTION ONE QUARTER -->
+<!ENTITY frac18 "&#x0215B;" ><!--VULGAR FRACTION ONE EIGHTH -->
+<!ENTITY frac34 "&#x000BE;" ><!--VULGAR FRACTION THREE QUARTERS -->
+<!ENTITY frac38 "&#x0215C;" ><!--VULGAR FRACTION THREE EIGHTHS -->
+<!ENTITY frac58 "&#x0215D;" ><!--VULGAR FRACTION FIVE EIGHTHS -->
+<!ENTITY frac78 "&#x0215E;" ><!--VULGAR FRACTION SEVEN EIGHTHS -->
+<!ENTITY gt "&#x0003E;" ><!--GREATER-THAN SIGN -->
+<!ENTITY half "&#x000BD;" ><!--VULGAR FRACTION ONE HALF -->
+<!ENTITY horbar "&#x02015;" ><!--HORIZONTAL BAR -->
+<!ENTITY hyphen "&#x02010;" ><!--HYPHEN -->
+<!ENTITY iexcl "&#x000A1;" ><!--INVERTED EXCLAMATION MARK -->
+<!ENTITY iquest "&#x000BF;" ><!--INVERTED QUESTION MARK -->
+<!ENTITY laquo "&#x000AB;" ><!--LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+<!ENTITY larr "&#x02190;" ><!--LEFTWARDS ARROW -->
+<!ENTITY lcub "&#x0007B;" ><!--LEFT CURLY BRACKET -->
+<!ENTITY ldquo "&#x0201C;" ><!--LEFT DOUBLE QUOTATION MARK -->
+<!ENTITY lowbar "&#x0005F;" ><!--LOW LINE -->
+<!ENTITY lpar "&#x00028;" ><!--LEFT PARENTHESIS -->
+<!ENTITY lsqb "&#x0005B;" ><!--LEFT SQUARE BRACKET -->
+<!ENTITY lsquo "&#x02018;" ><!--LEFT SINGLE QUOTATION MARK -->
+<!ENTITY lt "&#38;#60;" ><!--LESS-THAN SIGN -->
+<!ENTITY micro "&#x000B5;" ><!--MICRO SIGN -->
+<!ENTITY middot "&#x000B7;" ><!--MIDDLE DOT -->
+<!ENTITY nbsp "&#x000A0;" ><!--NO-BREAK SPACE -->
+<!ENTITY not "&#x000AC;" ><!--NOT SIGN -->
+<!ENTITY num "&#x00023;" ><!--NUMBER SIGN -->
+<!ENTITY ohm "&#x02126;" ><!--OHM SIGN -->
+<!ENTITY ordf "&#x000AA;" ><!--FEMININE ORDINAL INDICATOR -->
+<!ENTITY ordm "&#x000BA;" ><!--MASCULINE ORDINAL INDICATOR -->
+<!ENTITY para "&#x000B6;" ><!--PILCROW SIGN -->
+<!ENTITY percnt "&#x00025;" ><!--PERCENT SIGN -->
+<!ENTITY period "&#x0002E;" ><!--FULL STOP -->
+<!ENTITY plus "&#x0002B;" ><!--PLUS SIGN -->
+<!ENTITY plusmn "&#x000B1;" ><!--PLUS-MINUS SIGN -->
+<!ENTITY pound "&#x000A3;" ><!--POUND SIGN -->
+<!ENTITY quest "&#x0003F;" ><!--QUESTION MARK -->
+<!ENTITY quot "&#x00022;" ><!--QUOTATION MARK -->
+<!ENTITY raquo "&#x000BB;" ><!--RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+<!ENTITY rarr "&#x02192;" ><!--RIGHTWARDS ARROW -->
+<!ENTITY rcub "&#x0007D;" ><!--RIGHT CURLY BRACKET -->
+<!ENTITY rdquo "&#x0201D;" ><!--RIGHT DOUBLE QUOTATION MARK -->
+<!ENTITY reg "&#x000AE;" ><!--REGISTERED SIGN -->
+<!ENTITY rpar "&#x00029;" ><!--RIGHT PARENTHESIS -->
+<!ENTITY rsqb "&#x0005D;" ><!--RIGHT SQUARE BRACKET -->
+<!ENTITY rsquo "&#x02019;" ><!--RIGHT SINGLE QUOTATION MARK -->
+<!ENTITY sect "&#x000A7;" ><!--SECTION SIGN -->
+<!ENTITY semi "&#x0003B;" ><!--SEMICOLON -->
+<!ENTITY shy "&#x000AD;" ><!--SOFT HYPHEN -->
+<!ENTITY sol "&#x0002F;" ><!--SOLIDUS -->
+<!ENTITY sung "&#x0266A;" ><!--EIGHTH NOTE -->
+<!ENTITY sup1 "&#x000B9;" ><!--SUPERSCRIPT ONE -->
+<!ENTITY sup2 "&#x000B2;" ><!--SUPERSCRIPT TWO -->
+<!ENTITY sup3 "&#x000B3;" ><!--SUPERSCRIPT THREE -->
+<!ENTITY times "&#x000D7;" ><!--MULTIPLICATION SIGN -->
+<!ENTITY trade "&#x02122;" ><!--TRADE MARK SIGN -->
+<!ENTITY uarr "&#x02191;" ><!--UPWARDS ARROW -->
+<!ENTITY verbar "&#x0007C;" ><!--VERTICAL LINE -->
+<!ENTITY yen "&#x000A5;" ><!--YEN SIGN -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isopub.ent b/doc/editor_configs/serna/scons/dtd/ent/isopub.ent
new file mode 100644
index 0000000..ec4fe7c
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isopub.ent
@@ -0,0 +1,125 @@
+
+<!--
+ File isopub.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isopub.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES Publishing//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isopub.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isopub PUBLIC
+ "ISO 8879:1986//ENTITIES Publishing//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isopub.ent"
+ >
+ %isopub;
+
+-->
+
+<!ENTITY blank "&#x02423;" ><!--OPEN BOX -->
+<!ENTITY blk12 "&#x02592;" ><!--MEDIUM SHADE -->
+<!ENTITY blk14 "&#x02591;" ><!--LIGHT SHADE -->
+<!ENTITY blk34 "&#x02593;" ><!--DARK SHADE -->
+<!ENTITY block "&#x02588;" ><!--FULL BLOCK -->
+<!ENTITY bull "&#x02022;" ><!--BULLET -->
+<!ENTITY caret "&#x02041;" ><!--CARET INSERTION POINT -->
+<!ENTITY check "&#x02713;" ><!--CHECK MARK -->
+<!ENTITY cir "&#x025CB;" ><!--WHITE CIRCLE -->
+<!ENTITY clubs "&#x02663;" ><!--BLACK CLUB SUIT -->
+<!ENTITY copysr "&#x02117;" ><!--SOUND RECORDING COPYRIGHT -->
+<!ENTITY cross "&#x02717;" ><!--BALLOT X -->
+<!ENTITY Dagger "&#x02021;" ><!--DOUBLE DAGGER -->
+<!ENTITY dagger "&#x02020;" ><!--DAGGER -->
+<!ENTITY dash "&#x02010;" ><!--HYPHEN -->
+<!ENTITY diams "&#x02666;" ><!--BLACK DIAMOND SUIT -->
+<!ENTITY dlcrop "&#x0230D;" ><!--BOTTOM LEFT CROP -->
+<!ENTITY drcrop "&#x0230C;" ><!--BOTTOM RIGHT CROP -->
+<!ENTITY dtri "&#x025BF;" ><!--WHITE DOWN-POINTING SMALL TRIANGLE -->
+<!ENTITY dtrif "&#x025BE;" ><!--BLACK DOWN-POINTING SMALL TRIANGLE -->
+<!ENTITY emsp "&#x02003;" ><!--EM SPACE -->
+<!ENTITY emsp13 "&#x02004;" ><!--THREE-PER-EM SPACE -->
+<!ENTITY emsp14 "&#x02005;" ><!--FOUR-PER-EM SPACE -->
+<!ENTITY ensp "&#x02002;" ><!--EN SPACE -->
+<!ENTITY female "&#x02640;" ><!--FEMALE SIGN -->
+<!ENTITY ffilig "&#x0FB03;" ><!--LATIN SMALL LIGATURE FFI -->
+<!ENTITY fflig "&#x0FB00;" ><!--LATIN SMALL LIGATURE FF -->
+<!ENTITY ffllig "&#x0FB04;" ><!--LATIN SMALL LIGATURE FFL -->
+<!ENTITY filig "&#x0FB01;" ><!--LATIN SMALL LIGATURE FI -->
+<!ENTITY flat "&#x0266D;" ><!--MUSIC FLAT SIGN -->
+<!ENTITY fllig "&#x0FB02;" ><!--LATIN SMALL LIGATURE FL -->
+<!ENTITY frac13 "&#x02153;" ><!--VULGAR FRACTION ONE THIRD -->
+<!ENTITY frac15 "&#x02155;" ><!--VULGAR FRACTION ONE FIFTH -->
+<!ENTITY frac16 "&#x02159;" ><!--VULGAR FRACTION ONE SIXTH -->
+<!ENTITY frac23 "&#x02154;" ><!--VULGAR FRACTION TWO THIRDS -->
+<!ENTITY frac25 "&#x02156;" ><!--VULGAR FRACTION TWO FIFTHS -->
+<!ENTITY frac35 "&#x02157;" ><!--VULGAR FRACTION THREE FIFTHS -->
+<!ENTITY frac45 "&#x02158;" ><!--VULGAR FRACTION FOUR FIFTHS -->
+<!ENTITY frac56 "&#x0215A;" ><!--VULGAR FRACTION FIVE SIXTHS -->
+<!ENTITY hairsp "&#x0200A;" ><!--HAIR SPACE -->
+<!ENTITY hearts "&#x02665;" ><!--BLACK HEART SUIT -->
+<!ENTITY hellip "&#x02026;" ><!--HORIZONTAL ELLIPSIS -->
+<!ENTITY hybull "&#x02043;" ><!--HYPHEN BULLET -->
+<!ENTITY incare "&#x02105;" ><!--CARE OF -->
+<!ENTITY ldquor "&#x0201E;" ><!--DOUBLE LOW-9 QUOTATION MARK -->
+<!ENTITY lhblk "&#x02584;" ><!--LOWER HALF BLOCK -->
+<!ENTITY loz "&#x025CA;" ><!--LOZENGE -->
+<!ENTITY lozf "&#x029EB;" ><!--BLACK LOZENGE -->
+<!ENTITY lsquor "&#x0201A;" ><!--SINGLE LOW-9 QUOTATION MARK -->
+<!ENTITY ltri "&#x025C3;" ><!--WHITE LEFT-POINTING SMALL TRIANGLE -->
+<!ENTITY ltrif "&#x025C2;" ><!--BLACK LEFT-POINTING SMALL TRIANGLE -->
+<!ENTITY male "&#x02642;" ><!--MALE SIGN -->
+<!ENTITY malt "&#x02720;" ><!--MALTESE CROSS -->
+<!ENTITY marker "&#x025AE;" ><!--BLACK VERTICAL RECTANGLE -->
+<!ENTITY mdash "&#x02014;" ><!--EM DASH -->
+<!ENTITY mldr "&#x02026;" ><!--HORIZONTAL ELLIPSIS -->
+<!ENTITY natur "&#x0266E;" ><!--MUSIC NATURAL SIGN -->
+<!ENTITY ndash "&#x02013;" ><!--EN DASH -->
+<!ENTITY nldr "&#x02025;" ><!--TWO DOT LEADER -->
+<!ENTITY numsp "&#x02007;" ><!--FIGURE SPACE -->
+<!ENTITY phone "&#x0260E;" ><!--BLACK TELEPHONE -->
+<!ENTITY puncsp "&#x02008;" ><!--PUNCTUATION SPACE -->
+<!ENTITY rdquor "&#x0201D;" ><!--RIGHT DOUBLE QUOTATION MARK -->
+<!ENTITY rect "&#x025AD;" ><!--WHITE RECTANGLE -->
+<!ENTITY rsquor "&#x02019;" ><!--RIGHT SINGLE QUOTATION MARK -->
+<!ENTITY rtri "&#x025B9;" ><!--WHITE RIGHT-POINTING SMALL TRIANGLE -->
+<!ENTITY rtrif "&#x025B8;" ><!--BLACK RIGHT-POINTING SMALL TRIANGLE -->
+<!ENTITY rx "&#x0211E;" ><!--PRESCRIPTION TAKE -->
+<!ENTITY sext "&#x02736;" ><!--SIX POINTED BLACK STAR -->
+<!ENTITY sharp "&#x0266F;" ><!--MUSIC SHARP SIGN -->
+<!ENTITY spades "&#x02660;" ><!--BLACK SPADE SUIT -->
+<!ENTITY squ "&#x025A1;" ><!--WHITE SQUARE -->
+<!ENTITY squf "&#x025AA;" ><!--BLACK SMALL SQUARE -->
+<!ENTITY star "&#x02606;" ><!--WHITE STAR -->
+<!ENTITY starf "&#x02605;" ><!--BLACK STAR -->
+<!ENTITY target "&#x02316;" ><!--POSITION INDICATOR -->
+<!ENTITY telrec "&#x02315;" ><!--TELEPHONE RECORDER -->
+<!ENTITY thinsp "&#x02009;" ><!--THIN SPACE -->
+<!ENTITY uhblk "&#x02580;" ><!--UPPER HALF BLOCK -->
+<!ENTITY ulcrop "&#x0230F;" ><!--TOP LEFT CROP -->
+<!ENTITY urcrop "&#x0230E;" ><!--TOP RIGHT CROP -->
+<!ENTITY utri "&#x025B5;" ><!--WHITE UP-POINTING SMALL TRIANGLE -->
+<!ENTITY utrif "&#x025B4;" ><!--BLACK UP-POINTING SMALL TRIANGLE -->
+<!ENTITY vellip "&#x022EE;" ><!--VERTICAL ELLIPSIS -->
diff --git a/doc/editor_configs/serna/scons/dtd/ent/isotech.ent b/doc/editor_configs/serna/scons/dtd/ent/isotech.ent
new file mode 100644
index 0000000..3493ded
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/ent/isotech.ent
@@ -0,0 +1,103 @@
+
+<!--
+ File isotech.ent produced by the XSL script entities.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to David Carlisle
+ via the public W3C list www-math@w3.org.
+
+ The numeric character values assigned to each entity
+ (should) match the Unicode assignments in Unicode 4.0.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+
+<!--
+ Version: $Id: isotech.ent,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Public identifier: ISO 8879:1986//ENTITIES General Technical//EN//XML
+ System identifier: http://www.w3.org/2003/entities/iso8879/isotech.ent
+
+ The public identifier should always be used verbatim.
+ The system identifier may be changed to suit local requirements.
+
+ Typical invocation:
+
+ <!ENTITY % isotech PUBLIC
+ "ISO 8879:1986//ENTITIES General Technical//EN//XML"
+ "http://www.w3.org/2003/entities/iso8879/isotech.ent"
+ >
+ %isotech;
+
+-->
+
+<!ENTITY aleph "&#x02135;" ><!--ALEF SYMBOL -->
+<!ENTITY and "&#x02227;" ><!--LOGICAL AND -->
+<!ENTITY ang90 "&#x0221F;" ><!--RIGHT ANGLE -->
+<!ENTITY angsph "&#x02222;" ><!--SPHERICAL ANGLE -->
+<!ENTITY angst "&#x0212B;" ><!--ANGSTROM SIGN -->
+<!ENTITY ap "&#x02248;" ><!--ALMOST EQUAL TO -->
+<!ENTITY becaus "&#x02235;" ><!--BECAUSE -->
+<!ENTITY bernou "&#x0212C;" ><!--SCRIPT CAPITAL B -->
+<!ENTITY bottom "&#x022A5;" ><!--UP TACK -->
+<!ENTITY cap "&#x02229;" ><!--INTERSECTION -->
+<!ENTITY compfn "&#x02218;" ><!--RING OPERATOR -->
+<!ENTITY cong "&#x02245;" ><!--APPROXIMATELY EQUAL TO -->
+<!ENTITY conint "&#x0222E;" ><!--CONTOUR INTEGRAL -->
+<!ENTITY cup "&#x0222A;" ><!--UNION -->
+<!ENTITY Dot "&#x000A8;" ><!--DIAERESIS -->
+<!ENTITY DotDot " &#x020DC;" ><!--COMBINING FOUR DOTS ABOVE -->
+<!ENTITY equiv "&#x02261;" ><!--IDENTICAL TO -->
+<!ENTITY exist "&#x02203;" ><!--THERE EXISTS -->
+<!ENTITY fnof "&#x00192;" ><!--LATIN SMALL LETTER F WITH HOOK -->
+<!ENTITY forall "&#x02200;" ><!--FOR ALL -->
+<!ENTITY ge "&#x02265;" ><!--GREATER-THAN OR EQUAL TO -->
+<!ENTITY hamilt "&#x0210B;" ><!--SCRIPT CAPITAL H -->
+<!ENTITY iff "&#x021D4;" ><!--LEFT RIGHT DOUBLE ARROW -->
+<!ENTITY infin "&#x0221E;" ><!--INFINITY -->
+<!ENTITY int "&#x0222B;" ><!--INTEGRAL -->
+<!ENTITY isin "&#x02208;" ><!--ELEMENT OF -->
+<!ENTITY lagran "&#x02112;" ><!--SCRIPT CAPITAL L -->
+<!ENTITY lang "&#x02329;" ><!--LEFT-POINTING ANGLE BRACKET -->
+<!ENTITY lArr "&#x021D0;" ><!--LEFTWARDS DOUBLE ARROW -->
+<!ENTITY le "&#x02264;" ><!--LESS-THAN OR EQUAL TO -->
+<!ENTITY lowast "&#x02217;" ><!--ASTERISK OPERATOR -->
+<!ENTITY minus "&#x02212;" ><!--MINUS SIGN -->
+<!ENTITY mnplus "&#x02213;" ><!--MINUS-OR-PLUS SIGN -->
+<!ENTITY nabla "&#x02207;" ><!--NABLA -->
+<!ENTITY ne "&#x02260;" ><!--NOT EQUAL TO -->
+<!ENTITY ni "&#x0220B;" ><!--CONTAINS AS MEMBER -->
+<!ENTITY notin "&#x02209;" ><!--NOT AN ELEMENT OF -->
+<!ENTITY or "&#x02228;" ><!--LOGICAL OR -->
+<!ENTITY order "&#x02134;" ><!--SCRIPT SMALL O -->
+<!ENTITY par "&#x02225;" ><!--PARALLEL TO -->
+<!ENTITY part "&#x02202;" ><!--PARTIAL DIFFERENTIAL -->
+<!ENTITY permil "&#x02030;" ><!--PER MILLE SIGN -->
+<!ENTITY perp "&#x022A5;" ><!--UP TACK -->
+<!ENTITY phmmat "&#x02133;" ><!--SCRIPT CAPITAL M -->
+<!ENTITY Prime "&#x02033;" ><!--DOUBLE PRIME -->
+<!ENTITY prime "&#x02032;" ><!--PRIME -->
+<!ENTITY prop "&#x0221D;" ><!--PROPORTIONAL TO -->
+<!ENTITY radic "&#x0221A;" ><!--SQUARE ROOT -->
+<!ENTITY rang "&#x0232A;" ><!--RIGHT-POINTING ANGLE BRACKET -->
+<!ENTITY rArr "&#x021D2;" ><!--RIGHTWARDS DOUBLE ARROW -->
+<!ENTITY sim "&#x0223C;" ><!--TILDE OPERATOR -->
+<!ENTITY sime "&#x02243;" ><!--ASYMPTOTICALLY EQUAL TO -->
+<!ENTITY square "&#x025A1;" ><!--WHITE SQUARE -->
+<!ENTITY sub "&#x02282;" ><!--SUBSET OF -->
+<!ENTITY sube "&#x02286;" ><!--SUBSET OF OR EQUAL TO -->
+<!ENTITY sup "&#x02283;" ><!--SUPERSET OF -->
+<!ENTITY supe "&#x02287;" ><!--SUPERSET OF OR EQUAL TO -->
+<!ENTITY tdot " &#x020DB;" ><!--COMBINING THREE DOTS ABOVE -->
+<!ENTITY there4 "&#x02234;" ><!--THEREFORE -->
+<!ENTITY tprime "&#x02034;" ><!--TRIPLE PRIME -->
+<!ENTITY Verbar "&#x02016;" ><!--DOUBLE VERTICAL LINE -->
+<!ENTITY wedgeq "&#x02259;" ><!--ESTIMATES -->
diff --git a/doc/editor_configs/serna/scons/dtd/htmltblx.mod b/doc/editor_configs/serna/scons/dtd/htmltblx.mod
new file mode 100644
index 0000000..811e955
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/htmltblx.mod
@@ -0,0 +1,245 @@
+<!-- ...................................................................... -->
+<!-- DocBook XML HTML Table Module V4.5 ................................... -->
+<!-- File htmltblx.mod .................................................... -->
+
+<!-- Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems,
+ Inc., and the Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: htmltblx.mod,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook XML DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook XML DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the definitions for elements that are
+ isomorphic to the HTML elements. One could argue we should
+ instead have based ourselves on the XHTML Table Module, but the
+ HTML one is more like what browsers are likely to accept today
+ and users are likely to use.
+
+ This module has been developed for use with the DocBook V4.5
+ "union table model" in which elements and attlists common to both
+ models are defined (as the union) in the CALS table module by
+ setting various parameter entities appropriately in this file.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % htmltbl PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+ "htmltblx.mod">
+ %htmltbl;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+
+<!--======================= XHTML Tables =======================================-->
+
+<!ENTITY % html.coreattrs
+ "%common.attrib;
+ class CDATA #IMPLIED
+ style CDATA #IMPLIED
+ title CDATA #IMPLIED"
+ >
+
+<!-- Does not contain lang or dir because they are in %common.attribs -->
+<![%sgml.features;[
+<!ENTITY % i18n "">
+]]>
+<!ENTITY % i18n
+ "xml:lang NMTOKEN #IMPLIED"
+ >
+
+<!ENTITY % events
+ "onclick CDATA #IMPLIED
+ ondblclick CDATA #IMPLIED
+ onmousedown CDATA #IMPLIED
+ onmouseup CDATA #IMPLIED
+ onmouseover CDATA #IMPLIED
+ onmousemove CDATA #IMPLIED
+ onmouseout CDATA #IMPLIED
+ onkeypress CDATA #IMPLIED
+ onkeydown CDATA #IMPLIED
+ onkeyup CDATA #IMPLIED"
+ >
+
+<!ENTITY % attrs "%html.coreattrs; %i18n; %events;">
+
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED"
+ >
+
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!--doc:A group of columns in an HTML table.-->
+<!ELEMENT colgroup %ho; (col)*>
+<!--doc:Specifications for a column in an HTML table.-->
+<!ELEMENT col %ho; EMPTY>
+<!--doc:A row in an HTML table.-->
+<!ELEMENT tr %ho; (th|td)+>
+<!--doc:A table header entry in an HTML table.-->
+<!ELEMENT th %ho; (%para.char.mix; | %tabentry.mix; | table | informaltable)*>
+<!--doc:A table ntry in an HTML table.-->
+<!ELEMENT td %ho; (%para.char.mix; | %tabentry.mix; | table | informaltable)*>
+
+<!ATTLIST colgroup
+ %attrs;
+ span CDATA "1"
+ width CDATA #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST col
+ %attrs;
+ span CDATA "1"
+ width CDATA #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ bgcolor CDATA #IMPLIED
+ >
+
+<!ATTLIST th
+ %attrs;
+ abbr CDATA #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope (row|col|rowgroup|colgroup) #IMPLIED
+ rowspan CDATA "1"
+ colspan CDATA "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor CDATA #IMPLIED
+ width CDATA #IMPLIED
+ height CDATA #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr CDATA #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope (row|col|rowgroup|colgroup) #IMPLIED
+ rowspan CDATA "1"
+ colspan CDATA "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor CDATA #IMPLIED
+ width CDATA #IMPLIED
+ height CDATA #IMPLIED
+ >
+
+<!-- ====================================================== -->
+<!-- Set up to read in the CALS model configured to
+ merge with the XHTML table model -->
+<!-- ====================================================== -->
+
+<!ENTITY % tables.role.attrib "%role.attrib;">
+
+<!-- Add label and role attributes to table and informaltable -->
+<!ENTITY % bodyatt "
+ floatstyle CDATA #IMPLIED
+ rowheader (firstcol|norowheader) #IMPLIED
+ %label.attrib;"
+>
+
+<!-- Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element). -->
+
+<!ENTITY % secur "
+ %common.attrib;
+ class CDATA #IMPLIED
+ style CDATA #IMPLIED
+ title CDATA #IMPLIED
+ %i18n;
+ %events;
+ %tables.role.attrib;">
+
+<!ENTITY % common.table.attribs
+ "%bodyatt;
+ %secur;">
+
+<!-- Content model for Table (that also allows HTML tables) -->
+<!ENTITY % tbl.table.mdl
+ "((blockinfo?,
+ (%formalobject.title.content;),
+ (%ndxterm.class;)*,
+ textobject*,
+ (graphic+|mediaobject+|tgroup+))
+ |(caption, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+)))">
+
+<!ENTITY % informal.tbl.table.mdl
+ "(textobject*,
+ (graphic+|mediaobject+|tgroup+))
+ | ((col*|colgroup*), thead?, tfoot?, (tbody+|tr+))">
+
+<!-- Attributes for Table (including HTML ones) -->
+
+<!-- N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd -->
+<!-- that way because 'all' already occurs in a different enumeration in -->
+<!-- CALS tables (frame). -->
+
+<!ENTITY % tbl.table.att '
+ tabstyle CDATA #IMPLIED
+ tocentry %yesorno.attvals; #IMPLIED
+ shortentry %yesorno.attvals; #IMPLIED
+ orient (port|land) #IMPLIED
+ pgwide %yesorno.attvals; #IMPLIED
+ summary CDATA #IMPLIED
+ width CDATA #IMPLIED
+ border CDATA #IMPLIED
+ rules CDATA #IMPLIED
+ cellspacing CDATA #IMPLIED
+ cellpadding CDATA #IMPLIED
+ align (left|center|right) #IMPLIED
+ bgcolor CDATA #IMPLIED
+'>
+
+<!ENTITY % tbl.frame.attval "void|above|below|hsides|lhs|rhs|vsides|box|border|
+top|bottom|topbot|all|sides|none">
+
+<!-- Allow either objects or inlines; beware of REs between elements. -->
+<!ENTITY % tbl.entry.mdl "%para.char.mix; | %tabentry.mix;">
+
+<!-- thead, tfoot, and tbody are defined in both table models,
+ so we set up parameter entities to define union models for them
+ -->
+
+<!ENTITY % tbl.hdft.mdl "(tr+|(colspec*,row+))">
+<!ENTITY % tbl.tbody.mdl "(tr+|row+)">
+<!ENTITY % tbl.valign.attval "top|middle|bottom|baseline">
+
+<!-- End of DocBook XML HTML Table Module V4.5 ............................ -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/scons.dtd b/doc/editor_configs/serna/scons/dtd/scons.dtd
new file mode 100644
index 0000000..5680838
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/scons.dtd
@@ -0,0 +1,170 @@
+<!-- ...................................................................... -->
+<!-- DocBook SCons XML DTD V4.5 ................................................. -->
+<!-- File docbookx.dtd .................................................... -->
+
+<!-- Copyright 1992-2006 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ See also http://docbook.org/specs/
+
+ $Id: docbookx.dtd,v 1.1 2009-03-30 14:59:35 sorin Exp $
+
+ Permission to use, copy, modify and distribute the DocBook SCons XML DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This is the driver file for V4.5 of the DocBook DTD.
+ Please use the following formal public identifier to identify it:
+
+ "-//OASIS//DTD DocBook SCons XML V4.5//EN"
+
+ For example, if your document's top-level element is Book, and
+ you are using DocBook directly, use the FPI in the DOCTYPE
+ declaration:
+
+ <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook SCons XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+ [...]>
+
+ Or, if you have a higher-level driver file that customizes DocBook,
+ use the FPI in the parameter entity declaration:
+
+ <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook SCons XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+ %DocBookDTD;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+
+<!-- ...................................................................... -->
+<!-- Enable SGML features ................................................. -->
+
+<!ENTITY % sgml.features "IGNORE">
+<![%sgml.features;[
+<!ENTITY % xml.features "IGNORE">
+]]>
+<!ENTITY % xml.features "INCLUDE">
+
+<![%sgml.features;[
+<![%xml.features;[
+
+<!-- ERROR: Exactly one of xml.features and sgml.features must be turned on! -->
+<!ENTITY % dbnotn SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt">
+<!ENTITY % dbcent SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt">
+<!ENTITY % dbpool SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt">
+<!ENTITY % dbhier SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt">
+<!ENTITY % dbgenent SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt">
+
+]]>
+]]>
+
+<![%sgml.features;[
+<!ENTITY % ho "- O">
+<!ENTITY % hh "- -">
+]]>
+
+<![%xml.features;[
+<!ENTITY % ho "">
+<!ENTITY % hh "">
+]]>
+
+<!-- ...................................................................... -->
+<!-- Notation declarations ................................................ -->
+
+<!ENTITY % dbnotn.module "INCLUDE">
+<![%dbnotn.module;[
+<!ENTITY % dbnotn PUBLIC
+"-//OASIS//ENTITIES DocBook Notations V4.5//EN"
+"dbnotnx.mod">
+%dbnotn;
+]]>
+
+<!-- ...................................................................... -->
+<!-- ISO character entity sets ............................................ -->
+
+<!ENTITY % dbcent.module "INCLUDE">
+<![%dbcent.module;[
+
+<!ENTITY % dbcent.euro "INCLUDE">
+<![%dbcent.euro;[
+<![%sgml.features;[
+<!ENTITY euro SDATA "[euro ]"><!-- euro sign -->
+]]>
+<![%xml.features;[
+<!ENTITY euro "&#x20AC;"><!-- euro sign, U+20AC NEW -->
+]]>
+]]>
+
+<!ENTITY % dbcent PUBLIC
+"-//OASIS//ENTITIES DocBook Character Entities V4.5//EN"
+"dbcentx.mod">
+%dbcent;
+]]>
+
+<!-- ...................................................................... -->
+<!-- DTD modules .......................................................... -->
+
+<!-- Information pool .............. -->
+
+<!ENTITY % dbpool.module "INCLUDE">
+<![ %dbpool.module; [
+<!ENTITY % dbpool PUBLIC
+"-//OASIS//ELEMENTS DocBook SCons Information Pool V4.5//EN"
+"dbpoolx.mod">
+%dbpool;
+]]>
+
+<!-- Redeclaration placeholder ..... -->
+
+<!ENTITY % intermod.redecl.module "IGNORE">
+<![%intermod.redecl.module;[
+<!-- Defining rdbmods here makes some buggy XML parsers happy. -->
+<!ENTITY % rdbmods "">
+%rdbmods;
+<!--end of intermod.redecl.module-->]]>
+
+<!-- Document hierarchy ............ -->
+
+<!ENTITY % dbhier.module "INCLUDE">
+<![ %dbhier.module; [
+<!ENTITY % dbhier PUBLIC
+"-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN"
+"dbhierx.mod">
+%dbhier;
+]]>
+
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+
+<!ENTITY % dbgenent.module "INCLUDE">
+<![ %dbgenent.module; [
+<!ENTITY % dbgenent PUBLIC
+"-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN"
+"dbgenent.mod">
+%dbgenent;
+]]>
+
+<!-- End of DocBook SCons XML DTD V4.5 .......................................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/dtd/soextblx.dtd b/doc/editor_configs/serna/scons/dtd/soextblx.dtd
new file mode 100644
index 0000000..4a92e11
--- /dev/null
+++ b/doc/editor_configs/serna/scons/dtd/soextblx.dtd
@@ -0,0 +1,321 @@
+<!-- XML EXCHANGE TABLE MODEL DECLARATION MODULE -->
+
+<!-- This set of declarations defines the XML version of the Exchange
+ Table Model as of the date shown in the Formal Public Identifier
+ (FPI) for this entity.
+
+ This set of declarations may be referred to using a public external
+ entity declaration and reference as shown in the following three
+ lines:
+
+ <!ENTITY % calstblx
+ PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN">
+ %calstblx;
+
+ If various parameter entities used within this set of declarations
+ are to be given non-default values, the appropriate declarations
+ should be given before calling in this package (i.e., before the
+ "%calstblx;" reference).
+-->
+
+<!-- The motivation for this XML version of the Exchange Table Model
+ is simply to create an XML version of the SGML Exchange Table
+ Model. By design, no effort has been made to "improve" the model.
+
+ This XML version incorporates the logical bare minimum changes
+ necessary to make the Exchange Table Model a valid XML DTD.
+
+ It has been modified slightly for use in the combined HTML/CALS models
+ supported by DocBook V4.3 and later.
+-->
+
+<!-- The XML version of the Exchange Table Model differs from
+ the SGML version in the following ways:
+
+ The following parameter entities have been removed:
+
+ - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep
+ There are no exceptions in XML. The following normative statement
+ is made in lieu of exceptions: the exchange table model explicitly
+ forbids a table from occurring within another table. If the
+ content model of an entry includes a table element, then this
+ cannot be enforced by the DTD, but it is a deviation from the
+ exchange table model to include a table within a table.
+
+ - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att
+ The motivation for these elements was to change the table
+ header/footer elements. Since XML does not allow element declarations
+ to contain name groups, and the exchange table model does not
+ allow a table to contain footers, the continued presence of these
+ attributes seems unnecessary.
+
+ The following parameter entity has been added:
+
+ - tbl.thead.att
+ This entity parameterizes the attributes on thead. It replaces
+ the tbl.hdft.att parameter entity.
+
+ Other miscellaneous changes:
+
+ - Tag ommission indicators have been removed
+ - Comments have been removed from declarations
+ - NUMBER attributes have been changed to NMTOKEN
+ - NUTOKEN attributes have been to changed to NMTOKEN
+ - Removed the grouping characters around the content model
+ parameter entry for the 'entry' element. This is necessary
+ so that an entry can contain #PCDATA and be defined as an
+ optional, repeatable OR group beginning with #PCDATA.
+-->
+
+<!-- This entity includes a set of element and attribute declarations
+ that partially defines the Exchange table model. However, the model
+ is not well-defined without the accompanying natural language
+ description of the semantics (meanings) of these various elements,
+ attributes, and attribute values. The semantic writeup, also available
+ from SGML Open, should be used in conjunction with this entity.
+-->
+
+<!-- In order to use the Exchange table model, various parameter entity
+ declarations are required. A brief description is as follows:
+
+ ENTITY NAME WHERE USED WHAT IT IS
+
+ %yesorno In ATTLIST of: An attribute declared value
+ almost all elements for a "boolean" attribute
+
+ %paracon In content model of: The "text" (logical content)
+ <entry> of the model group for <entry>
+
+ %titles In content model of: The "title" part of the model
+ table element group for the table element
+
+ %tbl.table.name In declaration of: The name of the "table"
+ table element element
+
+ %tbl.table-titles.mdl In content model of: The model group for the title
+ table elements part of the content model for
+ table element
+
+ %tbl.table.mdl In content model of: The model group for the content
+ table elements model for table element,
+ often (and by default) defined
+ in terms of %tbl.table-titles.mdl
+ and tgroup
+
+ %tbl.table.att In ATTLIST of: Additional attributes on the
+ table element table element
+
+ %bodyatt In ATTLIST of: Additional attributes on the
+ table element table element (for backward
+ compatibility with the SGML
+ model)
+
+ %tbl.tgroup.mdl In content model of: The model group for the content
+ <tgroup> model for <tgroup>
+
+ %tbl.tgroup.att In ATTLIST of: Additional attributes on the
+ <tgroup> <tgroup> element
+
+ %tbl.thead.att In ATTLIST of: Additional attributes on the
+ <thead> <thead> element
+
+ %tbl.tbody.att In ATTLIST of: Additional attributes on the
+ <tbody> <tbody> element
+
+ %tbl.colspec.att In ATTLIST of: Additional attributes on the
+ <colspec> <colspec> element
+
+ %tbl.row.mdl In content model of: The model group for the content
+ <row> model for <row>
+
+ %tbl.row.att In ATTLIST of: Additional attributes on the
+ <row> <row> element
+
+ %tbl.entry.mdl In content model of: The model group for the content
+ <entry> model for <entry>
+
+ %tbl.entry.att In ATTLIST of: Additional attributes on the
+ <entry> <entry> element
+
+ This set of declarations will use the default definitions shown below
+ for any of these parameter entities that are not declared before this
+ set of declarations is referenced.
+-->
+
+<!-- These definitions are not directly related to the table model, but are
+ used in the default CALS table model and may be defined elsewhere (and
+ prior to the inclusion of this table module) in the referencing DTD. -->
+
+<!ENTITY % yesorno 'NMTOKEN'> <!-- no if zero(s), yes if any other value -->
+<!ENTITY % titles 'title?'>
+<!ENTITY % pcd "#PCDATA">
+<!ENTITY % paracon '%pcd;'> <!-- default for use in entry content -->
+
+<!--
+The parameter entities as defined below change and simplify the CALS table
+model as published (as part of the Example DTD) in MIL-HDBK-28001. The
+resulting simplified DTD has support from the SGML Open vendors and is
+therefore more interoperable among different systems.
+
+These following declarations provide the Exchange default definitions
+for these entities. However, these entities can be redefined (by giving
+the appropriate parameter entity declaration(s) prior to the reference
+to this Table Model declaration set entity) to fit the needs of the
+current application.
+
+Note, however, that changes may have significant effect on the ability to
+interchange table information. These changes may manifest themselves
+in useability, presentation, and possible structure information degradation.
+-->
+
+<!ENTITY % tbl.table.name "table">
+<!ENTITY % tbl.table-titles.mdl "%titles;,">
+<!ENTITY % tbl.table-main.mdl "tgroup+">
+<!ENTITY % tbl.table.mdl "%tbl.table-titles.mdl; %tbl.table-main.mdl;">
+<!ENTITY % tbl.table.att "
+ pgwide %yesorno; #IMPLIED ">
+<!ENTITY % bodyatt "">
+<!ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody">
+<!ENTITY % tbl.tgroup.att "">
+<!ENTITY % tbl.thead.att "">
+<!ENTITY % tbl.tbody.att "">
+<!ENTITY % tbl.colspec.att "">
+<!ENTITY % tbl.row.mdl "entry+">
+<!ENTITY % tbl.row.att "">
+<!ENTITY % tbl.entry.mdl "(%paracon;)*">
+<!ENTITY % tbl.entry.att "">
+
+<!ENTITY % tbl.frame.attval "top|bottom|topbot|all|sides|none">
+<!ENTITY % tbl.tbody.mdl "row+">
+
+<!-- ===== Element and attribute declarations follow. ===== -->
+
+<!--
+ Default declarations previously defined in this entity and
+ referenced below include:
+ ENTITY % tbl.table.name "table"
+ ENTITY % tbl.table-titles.mdl "%titles;,"
+ ENTITY % tbl.table.mdl "%tbl.table-titles; tgroup+"
+ ENTITY % tbl.table.att "
+ pgwide %yesorno; #IMPLIED "
+-->
+
+<!--doc:???-->
+<!ELEMENT %tbl.table.name; (%tbl.table.mdl;)>
+
+<!ATTLIST %tbl.table.name;
+ frame (%tbl.frame.attval;) #IMPLIED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ %tbl.table.att;
+ %bodyatt;
+>
+
+<!--
+ Default declarations previously defined in this entity and
+ referenced below include:
+ ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody"
+ ENTITY % tbl.tgroup.att ""
+-->
+
+<!--doc:A wrapper for the main content of a table, or part of a table.-->
+<!ELEMENT tgroup (%tbl.tgroup.mdl;) >
+
+<!ATTLIST tgroup
+ cols NMTOKEN #REQUIRED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ %tbl.tgroup.att;
+>
+
+<!--
+ Default declarations previously defined in this entity and
+ referenced below include:
+ ENTITY % tbl.colspec.att ""
+-->
+
+<!--doc:Specifications for a column in a table.-->
+<!ELEMENT colspec EMPTY >
+
+<!ATTLIST colspec
+ colnum NMTOKEN #IMPLIED
+ colname NMTOKEN #IMPLIED
+ colwidth CDATA #IMPLIED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff NMTOKEN #IMPLIED
+ %tbl.colspec.att;
+>
+
+<!--
+ Default declarations previously defined in this entity and
+ referenced below include:
+ ENTITY % tbl.thead.att ""
+-->
+
+<!--doc:A table header consisting of one or more rows.-->
+<!ELEMENT thead (row+)>
+
+<!ATTLIST thead
+ valign (top|middle|bottom) #IMPLIED
+ %tbl.thead.att;
+>
+
+<!--
+ Default declarations previously defined in this entity and
+ referenced below include:
+ ENTITY % tbl.tbody.att ""
+-->
+
+<!--doc:A wrapper for the rows of a table or informal table.-->
+<!ELEMENT tbody (%tbl.tbody.mdl;)>
+
+<!ATTLIST tbody
+ valign (top|middle|bottom) #IMPLIED
+ %tbl.tbody.att;
+>
+
+<!--
+ Default declarations previously defined in this entity and
+ referenced below include:
+ ENTITY % tbl.row.mdl "entry+"
+ ENTITY % tbl.row.att ""
+-->
+
+<!--doc:A row in a table.-->
+<!ELEMENT row (%tbl.row.mdl;)>
+
+<!ATTLIST row
+ rowsep %yesorno; #IMPLIED
+ valign (top|middle|bottom) #IMPLIED
+ %tbl.row.att;
+>
+
+
+<!--
+ Default declarations previously defined in this entity and
+ referenced below include:
+ ENTITY % paracon "#PCDATA"
+ ENTITY % tbl.entry.mdl "(%paracon;)*"
+ ENTITY % tbl.entry.att ""
+-->
+
+<!--doc:A cell in a table.-->
+<!ELEMENT entry (%tbl.entry.mdl;)*>
+
+<!ATTLIST entry
+ colname NMTOKEN #IMPLIED
+ namest NMTOKEN #IMPLIED
+ nameend NMTOKEN #IMPLIED
+ morerows NMTOKEN #IMPLIED
+ colsep %yesorno; #IMPLIED
+ rowsep %yesorno; #IMPLIED
+ align (left|right|center|justify|char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff NMTOKEN #IMPLIED
+ valign (top|middle|bottom) #IMPLIED
+ %tbl.entry.att;
+>
diff --git a/doc/editor_configs/serna/scons/scons.csl b/doc/editor_configs/serna/scons/scons.csl
new file mode 100644
index 0000000..da15f71
--- /dev/null
+++ b/doc/editor_configs/serna/scons/scons.csl
@@ -0,0 +1,199 @@
+<?xml version='1.0'?>
+<csl:stylesheet xmlns:csl="http://www.syntext.com/Extensions/CSL-1.0">
+
+ <csl:profile icon="ContentMap_small" inscription="ContentMap"/>
+ <csl:profile name="toc" inscription="TOC"/>
+
+ <csl:define name="any.title.template">
+ <csl:template match="%elem"
+ font-style="italic" font-weight="bold">
+ <csl:number level="multiple"
+ count="section|sect1|sect2|sect3|
+ sect4|sect5|simplesect"
+ from="chapter|article|book|part"
+ format="1."/>
+ <csl:number level="any" count="%elem" format="1. "/>
+ </csl:template>
+ </csl:define>
+
+ <csl:use ref="any.title.template" elem="figure"/>
+ <csl:use ref="any.title.template" elem="table"/>
+ <csl:use ref="any.title.template" elem="equation"/>
+ <csl:use ref="any.title.template" elem="example"/>
+
+ <csl:template match="synopfragment | paramdef">
+ <csl:number format="1"/>
+ <csl:when-closed>
+ <csl:number format="1"/>
+ <csl:text> </csl:text>
+ <csl:collect-text/>
+ </csl:when-closed>
+ </csl:template>
+
+ <!-- Ordered lists -->
+ <csl:define name="ordlist.template">
+ <csl:template match="orderedlist/listitem[
+ (count(ancestor-or-self::orderedlist) mod 5) = %depth]">
+ <csl:number level="single" count="listitem" format="%fmt"/>
+ <csl:when-closed>
+ <csl:number level="single" count="listitem" format="%fmt"/>
+ <csl:text> </csl:text>
+ <csl:collect-text/>
+ </csl:when-closed>
+ </csl:template>
+ </csl:define>
+ <csl:use ref="ordlist.template" depth="0" fmt="I."/>
+ <csl:use ref="ordlist.template" depth="1" fmt="1."/>
+ <csl:use ref="ordlist.template" depth="2" fmt="a."/>
+ <csl:use ref="ordlist.template" depth="3" fmt="i."/>
+ <csl:use ref="ordlist.template" depth="4" fmt="A."/>
+
+ <!-- Steps -->
+ <csl:template match="step[count(../step) = 1]">
+ <csl:text>&#x2022;</csl:text>
+ </csl:template>
+
+ <csl:define name="step.template">
+ <csl:template
+ match="step[(count(ancestor-or-self::step) mod 5) = %depth]">
+ <csl:number count="step" format="%fmt"/>
+ <csl:when-closed>
+ <csl:number count="step" format="%fmt"/>
+ <csl:text> </csl:text>
+ <csl:collect-text/>
+ </csl:when-closed>
+ </csl:template>
+ </csl:define>
+ <csl:use ref="step.template" depth="0" fmt="I."/>
+ <csl:use ref="step.template" depth="1" fmt="1."/>
+ <csl:use ref="step.template" depth="2" fmt="a."/>
+ <csl:use ref="step.template" depth="3" fmt="i."/>
+ <csl:use ref="step.template" depth="4" fmt="A."/>
+
+ <!-- Appendix Titles -->
+ <csl:template match="appendix//chapter | appendix//section |
+ appendix//sect1 | appendix//sect2 |
+ appendix//sect3 | appendix//sect4 |
+ appendix//sect5 | appendix//simplesect"
+ font-style="italic" font-weight="bold">
+ <csl:number level="multiple"
+ count="chapter|section|sect1|sect2|sect3|
+ sect4|sect5|simplesect"
+ format="A."/>
+ <csl:when-closed>
+ <csl:number level="multiple"
+ count="chapter|section|sect1|sect2|sect3|
+ sect4|sect5|simplesect"
+ format="A."/>
+ <csl:text> </csl:text>
+ <csl:collect-text select="title"/>
+ </csl:when-closed>
+ </csl:template>
+
+ <csl:template profiles="toc"
+ match="appendix//chapter | appendix//section |
+ appendix//sect1 | appendix//sect2 |
+ appendix//sect3 | appendix//sect4 |
+ appendix//sect5 | appendix//simplesect">
+ <csl:number level="multiple"
+ count="chapter|section|sect1|sect2|sect3|
+ sect4|sect5|simplesect"
+ format="A."/>
+ <csl:text> </csl:text>
+ <csl:collect-text select="title|subtitle"/>
+ </csl:template>
+
+ <!-- Chapter, Section, etc numbering -->
+ <csl:template match="section | sect1 | sect2 |
+ sect3 | sect4 | sect5 | simplesect"
+ font-style="italic" font-weight="bold">
+ <csl:number level="multiple"
+ count="section|sect1|sect2|sect3|
+ sect4|sect5|simplesect"
+ format="1."/>
+ <csl:when-closed>
+ <csl:number level="multiple"
+ count="section|sect1|sect2|sect3|
+ sect4|sect5|simplesect"
+ format="1."/>
+ <csl:text> </csl:text>
+ <csl:collect-text select="title"/>
+ </csl:when-closed>
+ </csl:template>
+
+ <csl:template match="chapter|preface"
+ font-style="italic" font-weight="bold">
+ <csl:number level="any"
+ count="chapter|preface" format="1."/>
+ <csl:when-closed>
+ <csl:number level="any"
+ count="chapter|preface" format="1."/>
+ <csl:text> </csl:text>
+ <csl:collect-text select="title"/>
+ </csl:when-closed>
+ </csl:template>
+
+ <!-- Chapter, Section, etc titles -->
+ <csl:template match="chapter/title | section/title | sect1/title |
+ sect2/title | sect3/title | sect4/title |
+ sect5/title | simplesect/title"
+ font-style="italic" font-weight="bold">
+ <csl:collect-text/>
+ </csl:template>
+
+ <!-- Tables -->
+ <csl:template match="colspec" font-style="italic">
+ <csl:value-of select="concat(@colname, ' {', @colwidth, '}')"/>
+ </csl:template>
+
+ <!-- Defaults -->
+ <csl:template match="*" mixed-only="true">
+ <csl:collect-text/>
+ </csl:template>
+
+ <csl:template match="*">
+ <csl:when-closed>
+ <csl:collect-text/>
+ </csl:when-closed>
+ </csl:template>
+
+ <csl:template match="processing-instruction()|
+ processing-instruction('se:choice')|comment()"/>
+
+ <!-- TOC Profile -->
+
+ <csl:template profiles="toc" match="figure|table|chapter|equation"
+ font-style="italic">
+ <csl:number level="any" format="1. "/>
+ <csl:collect-text select="title"/>
+ </csl:template>
+
+ <csl:template profiles="toc" match="section | sect1 | sect2 |
+ sect3 | sect4 | sect5 | simplesect">
+ <csl:number level="multiple"
+ count="section|sect1|sect2|sect3|
+ sect4|sect5|simplesect"
+ format="1."/>
+ <csl:text> </csl:text>
+ <csl:collect-text select="title|subtitle"/>
+ </csl:template>
+
+
+ <csl:template profiles="toc"
+ match="artheader|appendix|article|bookinfo|bibliography|
+ bibliodiv|book|colophon|docinfo|dedication|equation|
+ glossary|index|objectinfo|partintro|part|
+ preface|procedure|reference|refentry|refsect1|
+ refsect2|refsect3|refsect1info|refsect2info|
+ refsect3info|set|setindex|setinfo|sect1info|sect2info|
+ sect3info|sect4info|sect5info|qandaset">
+ <csl:collect-text select="title|subtitle"/>
+ </csl:template>
+
+ <csl:template match="/*" profiles="toc">
+ <csl:when-closed>
+ <csl:collect-text/>
+ </csl:when-closed>
+ </csl:template>
+
+</csl:stylesheet>
diff --git a/doc/editor_configs/serna/scons/scons.sdt b/doc/editor_configs/serna/scons/scons.sdt
new file mode 100644
index 0000000..4e35356
--- /dev/null
+++ b/doc/editor_configs/serna/scons/scons.sdt
@@ -0,0 +1,95 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE t:document-template PUBLIC "-//Syntext//DTD Syntext Document Template V2.0//EN" "doctemplate.dtd" []>
+<t:document-template xmlns:t="http://www.syntext.com/Extensions/DocTemplate-2.0">
+ <t:name>SCons Docbook</t:name>
+ <t:category>SCons Docbook V4.5-Based extension V1.0</t:category>
+
+ <t:xml-stylesheet>$SERNA_TEMPLATE_DIR/docbook-xsl-serna/docbook.xsl</t:xml-stylesheet>
+ <t:xml-schema>$SERNA_TEMPLATE_DIR/xsd/scons.xsd</t:xml-schema>
+ <t:dtd-pubid>-//SCONS//DTD DocBook V4.5-Based extension V1.0//EN</t:dtd-pubid>
+ <t:dtd-sysid>http://www.scons.org/dtd/scons.dtd</t:dtd-sysid>
+
+ <t:csl-stylesheet>$SERNA_TEMPLATE_DIR/scons.csl</t:csl-stylesheet>
+
+ <t:xml-catalogs>$SERNA_TEMPLATE_DIR/catalog.xml</t:xml-catalogs>
+
+ <t:folding-rules>
+ <t:elems-per-page>60</t:elems-per-page>
+ <t:fold-if-large>appendix article book chapter glossary index qandaset reference section refsect1 refsect2 refsect3 sect1 sect2 sect3 sect4 sect5 section set</t:fold-if-large>
+ <t:folding-list>appendix article bibliodiv bibliography bibliomisc biblioset book bookinfo chapter example figure glossary glossdiv index indexdiv qandadiv qandaset reference refsect1 refsect2 refsect3 sect1 sect2 sect3 sect4 sect5 section set table </t:folding-list>
+ </t:folding-rules>
+
+ <t:category-pixmap>docbook_4_5_template</t:category-pixmap>
+
+ <t:element-help>$SERNA_TEMPLATE_DIR/docbook-help/docbook.sehelp</t:element-help>
+
+ <t:spellcheck>
+ <t:skip-elements> programlisting literal sgmltag keycombo filename methodname methodparam classname command computeroutput database email envar function keycode varname structname </t:skip-elements>
+ </t:spellcheck>
+
+ <t:publish>
+ <t:name>htmlSingle</t:name>
+ <t:inscription>HTML (Single Chunk)</t:inscription>
+ <t:extension>htm</t:extension>
+ <t:script>runXslt</t:script>
+ <t:stylesheet>$SERNA_STYLESHEETS/docbook-xsl-1.68.1/html/docbook.xsl</t:stylesheet>
+ </t:publish>
+ <t:publish>
+ <t:name>htmlMulti</t:name>
+ <t:inscription>HTML (Multiple Chunks)</t:inscription>
+ <t:extension>htm</t:extension>
+ <t:script>runXslt</t:script>
+ <t:stylesheet>$SERNA_STYLESHEETS/docbook-xsl-1.68.1/html/chunk.xsl</t:stylesheet>
+ </t:publish>
+
+ <t:publish>
+ <t:name>pdfFop</t:name>
+ <t:inscription>PDF (with FOP)</t:inscription>
+ <t:extension>pdf</t:extension>
+ <t:script>runFop</t:script>
+ <t:stylesheet>$SERNA_STYLESHEETS/docbook-xsl-1.68.1/fo/docbook.xsl</t:stylesheet>
+ </t:publish>
+ <t:publish>
+ <t:name>pdfXep</t:name>
+ <t:inscription>PDF (with XEP)</t:inscription>
+ <t:extension>pdf</t:extension>
+ <t:script>runXep</t:script>
+ <t:stylesheet>$SERNA_STYLESHEETS/docbook-xsl-1.68.1/fo/docbook.xsl</t:stylesheet>
+ </t:publish>
+
+ <t:root-elements>appendix article book.class chapter part section set reference</t:root-elements>
+
+ <t:load-plugins>TablePlugin</t:load-plugins>
+
+ <t:template-showup-priority>11</t:template-showup-priority>
+
+ <t:dtd-guess-string>//SCONS//DTD DocBook</t:dtd-guess-string>
+
+ <t:document-skeleton>
+ <t:name>All</t:name>
+ </t:document-skeleton>
+ <t:document-skeleton>
+ <t:name>Article</t:name>
+ <t:content>
+ <article>
+ <title/>
+ </article>
+ </t:content>
+ </t:document-skeleton>
+ <t:document-skeleton>
+ <t:name>Chapter</t:name>
+ <t:content>
+ <chapter>
+ <title/>
+ </chapter>
+ </t:content>
+ </t:document-skeleton>
+ <t:document-skeleton>
+ <t:name>Book</t:name>
+ <t:content>
+ <book>
+ <title/>
+ </book>
+ </t:content>
+ </t:document-skeleton>
+</t:document-template>
diff --git a/doc/editor_configs/serna/scons/xsd/calstblx.xsd b/doc/editor_configs/serna/scons/xsd/calstblx.xsd
new file mode 100644
index 0000000..6f899a3
--- /dev/null
+++ b/doc/editor_configs/serna/scons/xsd/calstblx.xsd
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 .... -->
+<!-- File calstblx.xsd .................................................... -->
+
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook CALS Table Model V4.5 with:
+
+ Copyright 1992-2002 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ This DTD is based on the CALS Table Model
+ PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
+
+ $Id: calstblx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the CALS Table Model
+ converted to XML. It has been modified slightly for use in the
+ combined HTML/CALS models supported by DocBook V4.5.
+-->
+<!--
+ These definitions are not directly related to the table model, but are
+ used in the default CALS table model and are usually defined elsewhere
+ (and prior to the inclusion of this table module) in a CALS DTD.
+-->
+<!--
+ no if zero(s),
+ yes if any other digits value
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="yesorno">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:group name="titles">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- default for use in entry content -->
+ <!--
+ The parameter entities as defined below provide the CALS table model
+ as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+ These following declarations provide the CALS-compliant default definitions
+ for these entities. However, these entities can and should be redefined
+ (by giving the appropriate parameter entity declaration(s) prior to the
+ reference to this Table Model declaration set entity) to fit the needs
+ of the current application.
+ -->
+ <xs:group name="tbl.table-titles.mdl">
+ <xs:sequence>
+ <xs:group ref="titles"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="tbl.table-main.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="tbl.tgroup.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="tbl.tgroup.att">
+ <xs:attribute name="tgroupstyle"/>
+ </xs:attributeGroup>
+ <xs:complexType name="tbl.row.mdl">
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="entry"/>
+ <xs:element ref="entrytbl"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.entrytbl.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ===== Element and attribute declarations follow. ===== -->
+ <!-- doc:A formal table in a document. -->
+ <xs:element name="table" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.table.mdl">
+ <xs:attributeGroup ref="table.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="table.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the main content of a table, or part of a table. -->
+ <xs:element name="tgroup">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tgroup.mdl">
+ <xs:attributeGroup ref="tgroup.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tgroup.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:Specifications for a column in a table. -->
+ <xs:element name="colspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="colspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colspec.attlist">
+ <xs:attribute name="colnum"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="colwidth"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:Formatting information for a spanned column in a table. -->
+ <xs:element name="spanspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="spanspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="spanspec.attlist">
+ <xs:attribute name="namest" use="required"/>
+ <xs:attribute name="nameend" use="required"/>
+ <xs:attribute name="spanname" use="required"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:A table header consisting of one or more rows. -->
+ <xs:element name="thead">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="thead.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="thead.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A table footer consisting of one or more rows. -->
+ <xs:element name="tfoot">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="tfoot.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tfoot.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the rows of a table or informal table. -->
+ <xs:element name="tbody">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tbody.mdl">
+ <xs:attributeGroup ref="tbody.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tbody.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A row in a table. -->
+ <xs:element name="row">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.row.mdl">
+ <xs:attributeGroup ref="row.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="row.attlist">
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A subtable appearing in place of an Entry in a table. -->
+ <xs:element name="entrytbl">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.entrytbl.mdl">
+ <xs:attributeGroup ref="entrytbl.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entrytbl.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A cell in a table. -->
+ <xs:element name="entry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="tbl.entry.mdl"/>
+ <xs:attributeGroup ref="entry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entry.attlist">
+ <xs:attribute name="colname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="morerows"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attribute name="rotate" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 ... -->
+<!-- ............................................................................ -->
diff --git a/doc/editor_configs/serna/scons/xsd/dbhierx.xsd b/doc/editor_configs/serna/scons/xsd/dbhierx.xsd
new file mode 100644
index 0000000..af99df6
--- /dev/null
+++ b/doc/editor_configs/serna/scons/xsd/dbhierx.xsd
@@ -0,0 +1,2186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- .............................................................................. -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 ... -->
+<!-- File dbhierx.xsd ............................................................. -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook document hierarchy
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbhierx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the overall document
+ hierarchies of DocBook documents. It covers computer documentation
+ manuals and manual fragments, as well as reference entries (such as
+ man pages) and technical journals or anthologies containing
+ articles.
+
+ This module depends on the DocBook information pool module. All
+ elements and entities referenced but not defined here are assumed
+ to be defined in the information pool module.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbhier PUBLIC
+ "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN"
+ "dbhierx.mod">
+ %dbhier;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+<!-- ...................................................................... -->
+<!-- Entities for element classes ......................................... -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="appendix.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="appendixinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="appendix.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="article.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="articleinfo"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lot"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="nav.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="colophon"/>
+ <xs:element ref="ackno"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="article.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="book.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="bookinfo"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="dedication"/>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="chapter.class"/>
+ <xs:element ref="reference"/>
+ <xs:element ref="part"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:group ref="index.class"/>
+ <xs:element ref="colophon"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="book.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="chapter.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="chapterinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="chapter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="index.class">
+ <xs:choice>
+ <xs:element ref="index"/>
+ <xs:element ref="setindex"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="refentry.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="refentryinfo"/>
+ <xs:element minOccurs="0" ref="refmeta"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refnamediv"/>
+ <xs:element minOccurs="0" ref="refsynopsisdiv"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refsect1"/>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="section.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sectioninfo"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="section.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="nav.class">
+ <xs:choice>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="index"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element mixtures ........................................ -->
+ <xs:group name="divcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="indexdivcomponent.mix">
+ <xs:choice>
+ <xs:element ref="itemizedlist"/>
+ <xs:element ref="orderedlist"/>
+ <xs:element ref="variablelist"/>
+ <xs:element ref="simplelist"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refname.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="tech.char.class"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="partcontent.mix">
+ <xs:choice>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="chapter.class"/>
+ <xs:group ref="nav.class"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="refentry.class"/>
+ <xs:element ref="reference"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refinline.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refclass.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="application"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder 2 .......................................... -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="div.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="sect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refsect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.content">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect1"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="sect1"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <!-- ...................................................................... -->
+ <!-- Set and SetInfo ...................................................... -->
+ <xs:attributeGroup name="set.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of books. -->
+ <xs:element name="set">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="setinfo"/>
+ <xs:element minOccurs="0" ref="toc"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="set"/>
+ <xs:element ref="book.class"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="setindex"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="set.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of set.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="set.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="set.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of set.attlist -->
+ <!-- end of set.module -->
+ <xs:attributeGroup name="setinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Set. -->
+ <xs:element name="setinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setinfo.element -->
+ <!--
+ Contents: IDs of the ToC, Books, and SetIndex that comprise
+ the set, in the order of their appearance
+ -->
+ <xs:attributeGroup name="setinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setinfo.attlist -->
+ <!-- end of setinfo.module -->
+ <!-- end of set.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Book and BookInfo .................................................... -->
+ <xs:attributeGroup name="book.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A book. -->
+ <xs:element name="book" substitutionGroup="book.class"/>
+ <!-- end of book.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="book.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="book.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of book.attlist -->
+ <!-- end of book.module -->
+ <xs:attributeGroup name="bookinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Book. -->
+ <xs:element name="bookinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bookinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bookinfo.element -->
+ <!--
+ Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
+ Appendixes, References, GLossary, Bibliography, and indexes
+ comprising the Book, in the order of their appearance
+ -->
+ <xs:attributeGroup name="bookinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bookinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bookinfo.attlist -->
+ <!-- end of bookinfo.module -->
+ <!-- end of book.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Dedication, ToC, and LoT ............................................. -->
+ <xs:attributeGroup name="dedication.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the dedication section of a book. -->
+ <xs:element name="dedication">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="dedication.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of dedication.element -->
+ <xs:attributeGroup name="dedication.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="dedication.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of dedication.attlist -->
+ <!-- end of dedication.module -->
+ <xs:attributeGroup name="colophon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text at the back of a book describing facts about its production. -->
+ <xs:element name="colophon">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colophon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of colophon.element -->
+ <xs:attributeGroup name="colophon.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="colophon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of colophon.attlist -->
+ <!-- end of colophon.module -->
+ <xs:attributeGroup name="toc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A table of contents. -->
+ <xs:element name="toc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocfront"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tocpart"/>
+ <xs:element ref="tocchap"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocback"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toc.element -->
+ <xs:attributeGroup name="toc.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toc.attlist -->
+ <!-- end of toc.module -->
+ <xs:attributeGroup name="tocfront.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a front matter component. -->
+ <xs:element name="tocfront">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocfront.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocfront.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocfront.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocfront.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocfront.attlist -->
+ <!-- end of tocfront.module -->
+ <xs:attributeGroup name="tocentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component title in a table of contents. -->
+ <xs:element name="tocentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocentry.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocentry.attlist -->
+ <!-- end of tocentry.module -->
+ <xs:attributeGroup name="tocpart.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a part of a book. -->
+ <xs:element name="tocpart">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocchap"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocpart.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocpart.element -->
+ <xs:attributeGroup name="tocpart.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocpart.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocpart.attlist -->
+ <!-- end of tocpart.module -->
+ <xs:attributeGroup name="tocchap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a component in the body of a document. -->
+ <xs:element name="tocchap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel1"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocchap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocchap.element -->
+ <xs:attributeGroup name="tocchap.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocchap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocchap.attlist -->
+ <!-- end of tocchap.module -->
+ <xs:attributeGroup name="toclevel1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel2"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel1.element -->
+ <xs:attributeGroup name="toclevel1.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel1.attlist -->
+ <!-- end of toclevel1.module -->
+ <xs:attributeGroup name="toclevel2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A second-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel3"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel2.element -->
+ <xs:attributeGroup name="toclevel2.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel2.attlist -->
+ <!-- end of toclevel2.module -->
+ <xs:attributeGroup name="toclevel3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A third-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel4"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel3.element -->
+ <xs:attributeGroup name="toclevel3.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel3.attlist -->
+ <!-- end of toclevel3.module -->
+ <xs:attributeGroup name="toclevel4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fourth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel5"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel4.element -->
+ <xs:attributeGroup name="toclevel4.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel4.attlist -->
+ <!-- end of toclevel4.module -->
+ <xs:attributeGroup name="toclevel5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fifth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel5.element -->
+ <xs:attributeGroup name="toclevel5.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel5.attlist -->
+ <!-- end of toclevel5.module -->
+ <xs:attributeGroup name="tocback.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a back matter component. -->
+ <xs:element name="tocback">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocback.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocback.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocback.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocback.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocback.attlist -->
+ <!-- end of tocback.module -->
+ <!-- end of toc.content.module -->
+ <xs:attributeGroup name="lot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of the titles of formal objects (as tables or figures) in a document. -->
+ <xs:element name="lot">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lotentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="lot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lot.element -->
+ <xs:attributeGroup name="lot.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lot.attlist -->
+ <!-- end of lot.module -->
+ <xs:attributeGroup name="lotentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a list of titles. -->
+ <xs:element name="lotentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lotentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lotentry.element -->
+ <!--
+ SrcCredit: Information about the source of the entry,
+ as for a list of illustrations
+ -->
+ <!-- linkend: to element that this entry represents -->
+ <xs:attributeGroup name="lotentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lotentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lotentry.attlist -->
+ <!-- end of lotentry.module -->
+ <!-- end of lot.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+ <xs:attributeGroup name="appendix.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An appendix in a Book or Article. -->
+ <xs:element name="appendix" substitutionGroup="appendix.class"/>
+ <!-- end of appendix.element -->
+ <xs:attributeGroup name="appendix.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendix.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendix.attlist -->
+ <!-- end of appendix.module -->
+ <xs:attributeGroup name="chapter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A chapter, as of a book. -->
+ <xs:element name="chapter" substitutionGroup="chapter.class"/>
+ <!-- end of chapter.element -->
+ <xs:attributeGroup name="chapter.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapter.attlist -->
+ <!-- end of chapter.module -->
+ <!--
+ Note that Part was to have its content model reduced in V4.5. This
+ change will not be made after all.
+ -->
+ <xs:attributeGroup name="part.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a book. -->
+ <xs:element name="part">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="partinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:group maxOccurs="unbounded" ref="partcontent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="part.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of part.element -->
+ <xs:attributeGroup name="part.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="part.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of part.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of part.module -->
+ <xs:attributeGroup name="preface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Introductory matter preceding the first chapter of a book. -->
+ <xs:element name="preface">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="prefaceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="preface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of preface.element -->
+ <xs:attributeGroup name="preface.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="preface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of preface.attlist -->
+ <!-- end of preface.module -->
+ <xs:attributeGroup name="reference.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of reference entries. -->
+ <xs:element name="reference">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="referenceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="reference.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of reference.element -->
+ <xs:attributeGroup name="reference.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="reference.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of reference.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of reference.module -->
+ <xs:attributeGroup name="partintro.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An introduction to the contents of a part. -->
+ <xs:element name="partintro">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:group ref="bookcomponent.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="partintro.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partintro.element -->
+ <xs:attributeGroup name="partintro.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partintro.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partintro.attlist -->
+ <!-- end of partintro.module -->
+ <!-- ...................................................................... -->
+ <!-- Other Info elements .................................................. -->
+ <xs:attributeGroup name="appendixinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Appendix. -->
+ <xs:element name="appendixinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="appendixinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of appendixinfo.element -->
+ <xs:attributeGroup name="appendixinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendixinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendixinfo.attlist -->
+ <!-- end of appendixinfo.module -->
+ <xs:attributeGroup name="bibliographyinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Bibliography. -->
+ <xs:element name="bibliographyinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bibliographyinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliographyinfo.element -->
+ <xs:attributeGroup name="bibliographyinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliographyinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliographyinfo.attlist -->
+ <!-- end of bibliographyinfo.module -->
+ <xs:attributeGroup name="chapterinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Chapter. -->
+ <xs:element name="chapterinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="chapterinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of chapterinfo.element -->
+ <xs:attributeGroup name="chapterinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapterinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapterinfo.attlist -->
+ <!-- end of chapterinfo.module -->
+ <xs:attributeGroup name="glossaryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Glossary. -->
+ <xs:element name="glossaryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="glossaryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossaryinfo.element -->
+ <xs:attributeGroup name="glossaryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossaryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossaryinfo.attlist -->
+ <!-- end of glossaryinfo.module -->
+ <xs:attributeGroup name="indexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Index. -->
+ <xs:element name="indexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="indexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexinfo.element -->
+ <xs:attributeGroup name="indexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexinfo.attlist -->
+ <!-- end of indexinfo.module -->
+ <xs:attributeGroup name="setindexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a SetIndex. -->
+ <xs:element name="setindexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setindexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindexinfo.element -->
+ <xs:attributeGroup name="setindexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setindexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindexinfo.attlist -->
+ <!-- end of setindexinfo.module -->
+ <xs:attributeGroup name="partinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Part. -->
+ <xs:element name="partinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="partinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partinfo.element -->
+ <xs:attributeGroup name="partinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partinfo.attlist -->
+ <!-- end of partinfo.module -->
+ <xs:attributeGroup name="prefaceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Preface. -->
+ <xs:element name="prefaceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="prefaceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prefaceinfo.element -->
+ <xs:attributeGroup name="prefaceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prefaceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prefaceinfo.attlist -->
+ <!-- end of prefaceinfo.module -->
+ <xs:attributeGroup name="refentryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Refentry. -->
+ <xs:element name="refentryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refentryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentryinfo.element -->
+ <xs:attributeGroup name="refentryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentryinfo.attlist -->
+ <!-- end of refentryinfo.module -->
+ <xs:attributeGroup name="refsectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a refsection. -->
+ <xs:element name="refsectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsectioninfo.element -->
+ <xs:attributeGroup name="refsectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsectioninfo.attlist -->
+ <!-- end of refsectioninfo.module -->
+ <xs:attributeGroup name="refsect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect1. -->
+ <xs:element name="refsect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1info.element -->
+ <xs:attributeGroup name="refsect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1info.attlist -->
+ <!-- end of refsect1info.module -->
+ <xs:attributeGroup name="refsect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect2. -->
+ <xs:element name="refsect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2info.element -->
+ <xs:attributeGroup name="refsect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2info.attlist -->
+ <!-- end of refsect2info.module -->
+ <xs:attributeGroup name="refsect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect3. -->
+ <xs:element name="refsect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3info.element -->
+ <xs:attributeGroup name="refsect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3info.attlist -->
+ <!-- end of refsect3info.module -->
+ <xs:attributeGroup name="refsynopsisdivinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSynopsisDiv. -->
+ <xs:element name="refsynopsisdivinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdivinfo.element -->
+ <xs:attributeGroup name="refsynopsisdivinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdivinfo.attlist -->
+ <!-- end of refsynopsisdivinfo.module -->
+ <xs:attributeGroup name="referenceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Reference. -->
+ <xs:element name="referenceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="referenceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of referenceinfo.element -->
+ <xs:attributeGroup name="referenceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="referenceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of referenceinfo.attlist -->
+ <!-- end of referenceinfo.module -->
+ <xs:attributeGroup name="sect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect1. -->
+ <xs:element name="sect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1info.element -->
+ <xs:attributeGroup name="sect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1info.attlist -->
+ <xs:attributeGroup name="sect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect2. -->
+ <xs:element name="sect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2info.element -->
+ <xs:attributeGroup name="sect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2info.attlist -->
+ <xs:attributeGroup name="sect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect3. -->
+ <xs:element name="sect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3info.element -->
+ <xs:attributeGroup name="sect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3info.attlist -->
+ <xs:attributeGroup name="sect4info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect4. -->
+ <xs:element name="sect4info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect4info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4info.element -->
+ <xs:attributeGroup name="sect4info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4info.attlist -->
+ <xs:attributeGroup name="sect5info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect5. -->
+ <xs:element name="sect5info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect5info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5info.element -->
+ <xs:attributeGroup name="sect5info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5info.attlist -->
+ <!-- ...................................................................... -->
+ <!-- Section (parallel to Sect*) ......................................... -->
+ <xs:attributeGroup name="section.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section. -->
+ <xs:element name="section" substitutionGroup="section.class"/>
+ <!-- end of section.element -->
+ <xs:attributeGroup name="section.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="section.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of section.attlist -->
+ <!-- end of section.module -->
+ <xs:attributeGroup name="sectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a recursive section. -->
+ <xs:element name="sectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sectioninfo.element -->
+ <xs:attributeGroup name="sectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sectioninfo.attlist -->
+ <!-- end of sectioninfo.module -->
+ <!-- end of section.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+ <xs:attributeGroup name="sect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level section of document. -->
+ <xs:element name="sect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect1info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect2"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect2"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect1.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1.attlist -->
+ <!-- end of sect1.module -->
+ <xs:attributeGroup name="sect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect1. -->
+ <xs:element name="sect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect2info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect3"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect3"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect2.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2.attlist -->
+ <!-- end of sect2.module -->
+ <xs:attributeGroup name="sect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect2. -->
+ <xs:element name="sect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect3info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect4"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect4"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect3.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3.attlist -->
+ <!-- end of sect3.module -->
+ <xs:attributeGroup name="sect4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect3. -->
+ <xs:element name="sect4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect4info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect5"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect5"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect4.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4.attlist -->
+ <!-- end of sect4.module -->
+ <xs:attributeGroup name="sect5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect4. -->
+ <xs:element name="sect5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect5info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect5.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5.attlist -->
+ <!-- end of sect5.module -->
+ <xs:attributeGroup name="simplesect.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a document with no subdivisions. -->
+ <xs:element name="simplesect">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplesect.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplesect.element -->
+ <xs:attributeGroup name="simplesect.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplesect.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplesect.attlist -->
+ <!-- end of simplesect.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliography ......................................................... -->
+ <xs:attributeGroup name="bibliography.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A bibliography. -->
+ <xs:element name="bibliography">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="bibliographyinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="bibliodiv"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliography.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliography.element -->
+ <xs:attributeGroup name="bibliography.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliography.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliography.attlist -->
+ <!-- end of bibliography.module -->
+ <xs:attributeGroup name="bibliodiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a Bibliography. -->
+ <xs:element name="bibliodiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliodiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliodiv.element -->
+ <xs:attributeGroup name="bibliodiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliodiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliodiv.attlist -->
+ <!-- end of bibliodiv.module -->
+ <!-- end of bibliography.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Glossary ............................................................. -->
+ <xs:attributeGroup name="glossary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary. -->
+ <xs:element name="glossary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="glossaryinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="glossdiv"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="bibliography"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossary.element -->
+ <xs:attributeGroup name="glossary.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossary.attlist -->
+ <!-- end of glossary.module -->
+ <xs:attributeGroup name="glossdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a Glossary. -->
+ <xs:element name="glossdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdiv.element -->
+ <xs:attributeGroup name="glossdiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdiv.attlist -->
+ <!-- end of glossdiv.module -->
+ <!-- end of glossary.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Index and SetIndex ................................................... -->
+ <xs:attributeGroup name="indexes.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An index. -->
+ <xs:element name="index">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="indexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="index.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of index.element -->
+ <xs:attributeGroup name="index.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of index.attlist -->
+ <!-- doc:An index to a set of books. -->
+ <xs:element name="setindex">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="setindexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="setindex.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindex.element -->
+ <xs:attributeGroup name="setindex.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindex.attlist -->
+ <!-- end of indexes.module -->
+ <!--
+ SegmentedList in this content is useful for marking up permuted
+ indices.
+ -->
+ <xs:attributeGroup name="indexdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in an index. -->
+ <xs:element name="indexdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="indexdivcomponent.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="indexentry"/>
+ <xs:element ref="segmentedlist"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexdiv.element -->
+ <xs:attributeGroup name="indexdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexdiv.attlist -->
+ <!-- end of indexdiv.module -->
+ <!-- Index entries appear in the index, not the text. -->
+ <xs:attributeGroup name="indexentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in an index. -->
+ <xs:element name="indexentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="primaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="secondaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ <xs:element ref="tertiaryie"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexentry.element -->
+ <xs:attributeGroup name="indexentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexentry.attlist -->
+ <!-- end of indexentry.module -->
+ <xs:attributeGroup name="primsecterie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A primary term in an index entry, not in the text. -->
+ <xs:element name="primaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="primaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primaryie.attlist -->
+ <!-- doc:A secondary term in an index entry, rather than in the text. -->
+ <xs:element name="secondaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="secondaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondaryie.attlist -->
+ <!-- doc:A tertiary term in an index entry, rather than in the text. -->
+ <xs:element name="tertiaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="tertiaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiaryie.attlist -->
+ <!-- end of primsecterie.module -->
+ <xs:attributeGroup name="seeie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See entry in an index, rather than in the text. -->
+ <xs:element name="seeie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seeie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seeie.element -->
+ <!-- to IndexEntry to look up -->
+ <xs:attributeGroup name="seeie.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seeie.attlist -->
+ <!-- end of seeie.module -->
+ <xs:attributeGroup name="seealsoie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See also entry in an index, rather than in the text. -->
+ <xs:element name="seealsoie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealsoie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealsoie.element -->
+ <!-- to related IndexEntries -->
+ <xs:attributeGroup name="seealsoie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seealsoie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seealsoie.attlist -->
+ <!-- end of seealsoie.module -->
+ <!-- end of index.content.module -->
+ <!-- ...................................................................... -->
+ <!-- RefEntry ............................................................. -->
+ <xs:attributeGroup name="refentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference page (originally a UNIX man-style reference page). -->
+ <xs:element name="refentry" substitutionGroup="refentry.class"/>
+ <!-- end of refentry.element -->
+ <xs:attributeGroup name="refentry.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentry.attlist -->
+ <!-- end of refentry.module -->
+ <xs:attributeGroup name="refmeta.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry. -->
+ <xs:element name="refmeta">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refmiscinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refmeta.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmeta.element -->
+ <xs:attributeGroup name="refmeta.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmeta.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmeta.attlist -->
+ <!-- end of refmeta.module -->
+ <xs:attributeGroup name="refmiscinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry other than the title and volume number. -->
+ <xs:element name="refmiscinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="refmiscinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmiscinfo.element -->
+ <!-- Class: Freely assignable parameter; no default -->
+ <xs:attributeGroup name="refmiscinfo.attlist">
+ <xs:attribute name="class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmiscinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmiscinfo.attlist -->
+ <!-- end of refmiscinfo.module -->
+ <xs:attributeGroup name="refnamediv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name, purpose, and classification of a reference page. -->
+ <xs:element name="refnamediv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refdescriptor"/>
+ <xs:element maxOccurs="unbounded" ref="refname"/>
+ <xs:element ref="refpurpose"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refclass"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refnamediv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refnamediv.element -->
+ <xs:attributeGroup name="refnamediv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refnamediv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refnamediv.attlist -->
+ <!-- end of refnamediv.module -->
+ <xs:attributeGroup name="refdescriptor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of the topic of a reference page. -->
+ <xs:element name="refdescriptor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refdescriptor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refdescriptor.element -->
+ <xs:attributeGroup name="refdescriptor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refdescriptor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refdescriptor.attlist -->
+ <!-- end of refdescriptor.module -->
+ <xs:attributeGroup name="refname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of (one of) the subject(s) of a reference page. -->
+ <xs:element name="refname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refname.element -->
+ <xs:attributeGroup name="refname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refname.attlist -->
+ <!-- end of refname.module -->
+ <xs:attributeGroup name="refpurpose.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short (one sentence) synopsis of the topic of a reference page. -->
+ <xs:element name="refpurpose">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refinline.char.mix"/>
+ <xs:attributeGroup ref="refpurpose.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refpurpose.element -->
+ <xs:attributeGroup name="refpurpose.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refpurpose.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refpurpose.attlist -->
+ <!-- end of refpurpose.module -->
+ <xs:attributeGroup name="refclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The scope or other indication of applicability of a reference entry. -->
+ <xs:element name="refclass">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refclass.char.mix"/>
+ <xs:attributeGroup ref="refclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refclass.element -->
+ <xs:attributeGroup name="refclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refclass.attlist -->
+ <!-- end of refclass.module -->
+ <xs:attributeGroup name="refsynopsisdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntactic synopsis of the subject of the reference page. -->
+ <xs:element name="refsynopsisdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsynopsisdivinfo"/>
+ <xs:group minOccurs="0" ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsynopsisdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdiv.element -->
+ <xs:attributeGroup name="refsynopsisdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdiv.attlist -->
+ <!-- end of refsynopsisdiv.module -->
+ <xs:attributeGroup name="refsection.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section in a refentry. -->
+ <xs:element name="refsection">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsectioninfo"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsection"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsection.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsection.element -->
+ <xs:attributeGroup name="refsection.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsection.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsection.attlist -->
+ <!-- end of refsection.module -->
+ <xs:attributeGroup name="refsect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A major subsection of a reference entry. -->
+ <xs:element name="refsect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect1info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1.element -->
+ <xs:attributeGroup name="refsect1.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1.attlist -->
+ <!-- end of refsect1.module -->
+ <xs:attributeGroup name="refsect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect1. -->
+ <xs:element name="refsect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect2info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect3"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect3"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2.element -->
+ <xs:attributeGroup name="refsect2.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2.attlist -->
+ <!-- end of refsect2.module -->
+ <xs:attributeGroup name="refsect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect2. -->
+ <xs:element name="refsect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect3info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3.element -->
+ <xs:attributeGroup name="refsect3.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3.attlist -->
+ <!-- end of refsect3.module -->
+ <!-- end of refentry.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Article .............................................................. -->
+ <!--
+ An Article is a chapter-level, stand-alone document that is often,
+ but need not be, collected into a Book.
+ -->
+ <xs:attributeGroup name="article.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An article. -->
+ <xs:element name="article" substitutionGroup="article.class"/>
+ <!-- end of article.element -->
+ <!--
+ Class: Indicates the type of a particular article;
+ all articles have the same structure and general purpose.
+ No default.
+ -->
+ <!-- ParentBook: ID of the enclosing Book -->
+ <xs:attributeGroup name="article.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="journalarticle"/>
+ <xs:enumeration value="productsheet"/>
+ <xs:enumeration value="whitepaper"/>
+ <xs:enumeration value="techreport"/>
+ <xs:enumeration value="specification"/>
+ <xs:enumeration value="faq"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="parentbook" type="xs:IDREF"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="article.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of article.attlist -->
+<!-- end of article.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 -->
+<!-- ................................................................................. -->
diff --git a/doc/editor_configs/serna/scons/xsd/dbnotnx.xsd b/doc/editor_configs/serna/scons/xsd/dbnotnx.xsd
new file mode 100644
index 0000000..36f690f
--- /dev/null
+++ b/doc/editor_configs/serna/scons/xsd/dbnotnx.xsd
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML notations ................ -->
+<!-- File dbnotnx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook notations module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbnotnx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the notation declarations used by DocBook.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbnotn PUBLIC
+ "-//OASIS//ENTITIES DocBook Notations V4.5//EN"
+ "dbnotnx.mod">
+ %dbnotn;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="notation.class">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="BMP"/>
+ <xs:enumeration value="CGM-CHAR"/>
+ <xs:enumeration value="CGM-BINARY"/>
+ <xs:enumeration value="CGM-CLEAR"/>
+ <xs:enumeration value="DITROFF"/>
+ <xs:enumeration value="DVI"/>
+ <xs:enumeration value="EPS"/>
+ <xs:enumeration value="EQN"/>
+ <xs:enumeration value="FAX"/>
+ <xs:enumeration value="GIF"/>
+ <xs:enumeration value="GIF87a"/>
+ <xs:enumeration value="GIF89a"/>
+ <xs:enumeration value="JPG"/>
+ <xs:enumeration value="JPEG"/>
+ <xs:enumeration value="IGES"/>
+ <xs:enumeration value="PCX"/>
+ <xs:enumeration value="PIC"/>
+ <xs:enumeration value="PNG"/>
+ <xs:enumeration value="PS"/>
+ <xs:enumeration value="SGML"/>
+ <xs:enumeration value="TBL"/>
+ <xs:enumeration value="TEX"/>
+ <xs:enumeration value="TIFF"/>
+ <xs:enumeration value="WMF"/>
+ <xs:enumeration value="WPG"/>
+ <xs:enumeration value="SVG"/>
+ <xs:enumeration value="PDF"/>
+ <xs:enumeration value="SWF"/>
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
+<!-- WordPerfect Graphic format -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML notations ......... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/xsd/dbpoolx.xsd b/doc/editor_configs/serna/scons/xsd/dbpoolx.xsd
new file mode 100644
index 0000000..0ce5cb7
--- /dev/null
+++ b/doc/editor_configs/serna/scons/xsd/dbpoolx.xsd
@@ -0,0 +1,8682 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML information pool module .. -->
+<!-- File dbpoolx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the Docbook XML information pool
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the objects, inline
+ elements, and so on that are available to be used as the main
+ content of DocBook documents. Some elements are useful for general
+ publishing, and others are useful specifically for computer
+ documentation.
+
+ This module has the following dependencies on other modules:
+
+ o It assumes that a %notation.class; entity is defined by the
+ driver file or other high-level module. This entity is
+ referenced in the NOTATION attributes for the graphic-related and
+ ModeSpec elements.
+
+ o It assumes that an appropriately parameterized table module is
+ available for use with the table-related elements.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbpool PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN"
+ "dbpoolx.mod">
+ %dbpool;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Forms entities ....................................................... -->
+<!-- These PEs provide the hook by which the forms module can be inserted -->
+<!-- into the DTD. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:include schemaLocation="htmltblx.xsd"/>
+ <xs:include schemaLocation="calstblx.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- General-purpose semantics entities ................................... -->
+ <xs:simpleType name="yesorno.attvals">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- ...................................................................... -->
+ <!-- Entities for module inclusions ....................................... -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element classes and mixtures ............................ -->
+ <!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+ <xs:element name="ndxterm.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="primary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="secondary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="tertiary"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Object-level classes ................................................. -->
+ <xs:element name="list.class" abstract="true"/>
+ <xs:element name="admon.class" abstract="true"/>
+ <xs:element name="linespecific.class" abstract="true"/>
+ <xs:element name="method.synop.class" abstract="true" substitutionGroup="synop.class"/>
+ <xs:element name="synop.class" abstract="true"/>
+ <xs:element name="para.class" abstract="true"/>
+ <xs:element name="informal.class" abstract="true"/>
+ <xs:element name="formal.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="compound.class" abstract="true"/>
+ <xs:group name="genobj.class">
+ <xs:choice>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="highlights"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="descobj.class">
+ <xs:choice>
+ <xs:element ref="abstract"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="epigraph"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level classes .............................................. -->
+ <xs:element name="xref.char.class" abstract="true"/>
+ <xs:element name="gen.char.class" abstract="true"/>
+ <xs:element name="link.char.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="tech.char.class" abstract="true"/>
+ <xs:group name="base.char.class">
+ <xs:sequence>
+ <xs:element ref="anchor"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="docinfo.char.class" abstract="true"/>
+ <xs:group name="other.char.class">
+ <xs:choice>
+ <xs:element ref="remark"/>
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="inlineobj.char.class" abstract="true"/>
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="formalobject.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- Object-level mixtures ................................................ -->
+ <!--
+ list admn line synp para infm form cmpd gen desc
+ Component mixture X X X X X X X X X X
+ Sidebar mixture X X X X X X X a X
+ Footnote mixture X X X X X
+ Example mixture X X X X X
+ Highlights mixture X X X
+ Paragraph mixture X X X X
+ Admonition mixture X X X X X X b c
+ Figure mixture X X X
+ Table entry mixture X X X X d
+ Glossary def mixture X X X X X e
+ Legal notice mixture X X X X f
+
+ a. Just Procedure; not Sidebar itself or MsgSet.
+ b. No MsgSet.
+ c. No Highlights.
+ d. Just Graphic; no other informal objects.
+ e. No Anchor, BridgeHead, or Highlights.
+ f. Just BlockQuote; no other informal objects.
+ -->
+ <xs:group name="component.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="sidebar.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="qandaset.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="revdescription.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="footnote.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="example.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ <xs:element ref="procedure"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="highlights.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ %formal.class; is explicitly excluded from many contexts in which
+ paragraphs are used
+ -->
+ <xs:group name="para.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="sconstruct"/>
+ <xs:element ref="scons_example"/>
+ <xs:element ref="scons_example_file"/>
+ <xs:element ref="scons_output"/>
+ <xs:element ref="sconsdoc"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="summary.mix">
+ <xs:choice>
+ <xs:element ref="example_commands"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tool.mix">
+ <xs:choice>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="scons_function.mix">
+ <xs:choice>
+ <xs:element ref="arguments"/>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="admon.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:element ref="sidebar"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="figure.mix">
+ <xs:choice>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tabentry.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="glossdef.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="legalnotice.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="textobject.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="mediaobject.mix" abstract="true"/>
+ <xs:group name="listpreamble.mix">
+ <xs:choice>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level mixtures ............................................. -->
+ <!-- sgml.features -->
+ <!-- not [sgml.features[ -->
+ <!-- ]] not sgml.features -->
+ <!--
+ #PCD xref word link cptr base dnfo othr inob (synop)
+ para.char.mix X X X X X X X X X
+ title.char.mix X X X X X X X X X
+ ndxterm.char.mix X X X X X X X X a
+ cptr.char.mix X X X X X a
+ smallcptr.char.mix X b a
+ word.char.mix X c X X X a
+ docinfo.char.mix X d X b X a
+
+ a. Just InlineGraphic; no InlineEquation.
+ b. Just Replaceable; no other computer terms.
+ c. Just Emphasis and Trademark; no other word elements.
+ d. Just Acronym, Emphasis, and Trademark; no other word elements.
+ -->
+ <xs:group name="para.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="title.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="ndxterm.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="cptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="smallcptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="replaceable"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="word.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="acronym"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="docinfo.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="replaceable"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <!-- ENTITY % bibliocomponent.mix (see Bibliographic section, below) -->
+ <!-- ENTITY % person.ident.mix (see Bibliographic section, below) -->
+ <!-- ...................................................................... -->
+ <!-- Entities for attributes and attribute components ..................... -->
+ <!-- Effectivity attributes ............................................... -->
+ <!--
+ Arch: Computer or chip architecture to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="arch.attrib">
+ <xs:attribute name="arch"/>
+ </xs:attributeGroup>
+ <!-- Condition: General-purpose effectivity attribute -->
+ <xs:attributeGroup name="condition.attrib">
+ <xs:attribute name="condition"/>
+ </xs:attributeGroup>
+ <!-- Conformance: Standards conformance characteristics -->
+ <xs:attributeGroup name="conformance.attrib">
+ <xs:attribute name="conformance" type="xs:NMTOKENS"/>
+ </xs:attributeGroup>
+ <!-- OS: Operating system to which element applies; no default -->
+ <xs:attributeGroup name="os.attrib">
+ <xs:attribute name="os"/>
+ </xs:attributeGroup>
+ <!-- Revision: Editorial revision to which element belongs; no default -->
+ <xs:attributeGroup name="revision.attrib">
+ <xs:attribute name="revision"/>
+ </xs:attributeGroup>
+ <!-- Security: Security classification; no default -->
+ <xs:attributeGroup name="security.attrib">
+ <xs:attribute name="security"/>
+ </xs:attributeGroup>
+ <!--
+ UserLevel: Level of user experience to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="userlevel.attrib">
+ <xs:attribute name="userlevel"/>
+ </xs:attributeGroup>
+ <!-- Vendor: Computer vendor to which element applies; no default -->
+ <xs:attributeGroup name="vendor.attrib">
+ <xs:attribute name="vendor"/>
+ </xs:attributeGroup>
+ <!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default -->
+ <xs:attributeGroup name="wordsize.attrib">
+ <xs:attribute name="wordsize"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="effectivity.attrib">
+ <xs:attributeGroup ref="arch.attrib"/>
+ <xs:attributeGroup ref="condition.attrib"/>
+ <xs:attributeGroup ref="conformance.attrib"/>
+ <xs:attributeGroup ref="os.attrib"/>
+ <xs:attributeGroup ref="revision.attrib"/>
+ <xs:attributeGroup ref="security.attrib"/>
+ <xs:attributeGroup ref="userlevel.attrib"/>
+ <xs:attributeGroup ref="vendor.attrib"/>
+ <xs:attributeGroup ref="wordsize.attrib"/>
+ </xs:attributeGroup>
+ <!-- Common attributes .................................................... -->
+ <!-- Id: Unique identifier of element; no default -->
+ <xs:attributeGroup name="id.attrib">
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Id: Unique identifier of element; a value must be supplied; no
+ default
+ -->
+ <xs:attributeGroup name="idreq.attrib">
+ <xs:attribute name="id" use="required" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Lang: Indicator of language in which element is written, for
+ translation, character set management, etc.; no default
+ -->
+ <xs:attributeGroup name="lang.attrib">
+ <xs:attribute name="lang"/>
+ </xs:attributeGroup>
+ <!-- Remap: Previous role of element before conversion; no default -->
+ <xs:attributeGroup name="remap.attrib">
+ <xs:attribute name="remap"/>
+ </xs:attributeGroup>
+ <!-- Role: New role of element in local environment; no default -->
+ <xs:attributeGroup name="role.attrib">
+ <xs:attribute name="role"/>
+ </xs:attributeGroup>
+ <!--
+ XRefLabel: Alternate labeling string for XRef text generation;
+ default is usually title or other appropriate label text already
+ contained in element
+ -->
+ <xs:attributeGroup name="xreflabel.attrib">
+ <xs:attribute name="xreflabel"/>
+ </xs:attributeGroup>
+ <!--
+ RevisionFlag: Revision status of element; default is that element
+ wasn't revised
+ -->
+ <xs:attributeGroup name="revisionflag.attrib">
+ <xs:attribute name="revisionflag">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="changed"/>
+ <xs:enumeration value="added"/>
+ <xs:enumeration value="deleted"/>
+ <xs:enumeration value="off"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- dir: Bidirectional override -->
+ <xs:attributeGroup name="dir.attrib">
+ <xs:attribute name="dir">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ltr"/>
+ <xs:enumeration value="rtl"/>
+ <xs:enumeration value="lro"/>
+ <xs:enumeration value="rlo"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- xml:base: base URI -->
+ <xs:attributeGroup name="xml-base.attrib">
+ <xs:attribute ref="xml:base"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="common.attrib">
+ <xs:attributeGroup ref="id.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="idreq.common.attrib">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Semi-common attributes and other attribute entities .................. -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the graphic
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the graphic
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the Graphic -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="graphics.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ </xs:attributeGroup>
+ <!--
+ Action: Key combination type; default is unspecified if one
+ child element, Simul if there is more than one; if value is
+ Other, the OtherAction attribute must have a nonempty value
+ -->
+ <!-- OtherAction: User-defined key combination type -->
+ <xs:attributeGroup name="keyaction.attrib">
+ <xs:attribute name="action">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="click"/>
+ <xs:enumeration value="double-click"/>
+ <xs:enumeration value="press"/>
+ <xs:enumeration value="seq"/>
+ <xs:enumeration value="simul"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otheraction"/>
+ </xs:attributeGroup>
+ <!--
+ Label: Identifying number or string; default is usually the
+ appropriate number or string autogenerated by a formatter
+ -->
+ <xs:attributeGroup name="label.attrib">
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <!-- xml:space: whitespace treatment -->
+ <xs:attributeGroup name="xml-space.attrib">
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+ <!--
+ Format: whether element is assumed to contain significant white
+ space
+ -->
+ <xs:attributeGroup name="linespecific.attrib">
+ <xs:attribute name="format" default="linespecific">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="xml-space.attrib"/>
+ <xs:attribute name="linenumbering">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="numbered"/>
+ <xs:enumeration value="unnumbered"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startinglinenumber"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <!-- Linkend: link to related information; no default -->
+ <xs:attributeGroup name="linkend.attrib">
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!-- Linkend: required link to related information -->
+ <xs:attributeGroup name="linkendreq.attrib">
+ <xs:attribute name="linkend" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!--
+ Linkends: link to one or more sets of related information; no
+ default
+ -->
+ <xs:attributeGroup name="linkends.attrib">
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="mark.attrib">
+ <xs:attribute name="mark"/>
+ </xs:attributeGroup>
+ <!-- MoreInfo: whether element's content has an associated RefEntry -->
+ <xs:attributeGroup name="moreinfo.attrib">
+ <xs:attribute name="moreinfo" default="none">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- Pagenum: number of page on which element appears; no default -->
+ <xs:attributeGroup name="pagenum.attrib">
+ <xs:attribute name="pagenum"/>
+ </xs:attributeGroup>
+ <!--
+ Status: Editorial or publication status of the element
+ it applies to, such as "in review" or "approved for distribution"
+ -->
+ <xs:attributeGroup name="status.attrib">
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <!--
+ Width: width of the longest line in the element to which it
+ pertains, in number of characters
+ -->
+ <xs:attributeGroup name="width.attrib">
+ <xs:attribute name="width"/>
+ </xs:attributeGroup>
+ <!-- ...................................................................... -->
+ <!-- Title elements ....................................................... -->
+ <xs:attributeGroup name="title.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of the title of a section of a document or of a formal block-level element. -->
+ <xs:element name="title">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="title.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of title.element -->
+ <xs:attributeGroup name="title.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="title.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of title.attlist -->
+ <!-- end of title.module -->
+ <xs:attributeGroup name="titleabbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The abbreviation of a Title. -->
+ <xs:element name="titleabbrev">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="titleabbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of titleabbrev.element -->
+ <xs:attributeGroup name="titleabbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="titleabbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of titleabbrev.attlist -->
+ <!-- end of titleabbrev.module -->
+ <xs:attributeGroup name="subtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The subtitle of a document. -->
+ <xs:element name="subtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="subtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subtitle.element -->
+ <xs:attributeGroup name="subtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subtitle.attlist -->
+ <!-- end of subtitle.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliographic entities and elements .................................. -->
+ <!--
+ The bibliographic elements are typically used in the document
+ hierarchy. They do not appear in content models of information
+ pool elements. See also the document information elements,
+ below.
+ -->
+ <xs:group name="person.ident.mix">
+ <xs:choice>
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ <xs:element ref="affiliation"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="contrib"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="bibliocomponent.mix">
+ <xs:choice>
+ <xs:element ref="abbrev"/>
+ <xs:element ref="abstract"/>
+ <xs:element ref="address"/>
+ <xs:element ref="artpagenums"/>
+ <xs:element ref="author"/>
+ <xs:element ref="authorgroup"/>
+ <xs:element ref="authorinitials"/>
+ <xs:element ref="bibliomisc"/>
+ <xs:element ref="biblioset"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="confgroup"/>
+ <xs:element ref="contractnum"/>
+ <xs:element ref="contractsponsor"/>
+ <xs:element ref="copyright"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpname"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="date"/>
+ <xs:element ref="edition"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="invpartnumber"/>
+ <xs:element ref="isbn"/>
+ <xs:element ref="issn"/>
+ <xs:element ref="issuenum"/>
+ <xs:element ref="orgname"/>
+ <xs:element ref="biblioid"/>
+ <xs:element ref="citebiblioid"/>
+ <xs:element ref="bibliosource"/>
+ <xs:element ref="bibliorelation"/>
+ <xs:element ref="bibliocoverage"/>
+ <xs:element ref="othercredit"/>
+ <xs:element ref="pagenums"/>
+ <xs:element ref="printhistory"/>
+ <xs:element ref="productname"/>
+ <xs:element ref="productnumber"/>
+ <xs:element ref="pubdate"/>
+ <xs:element ref="publisher"/>
+ <xs:element ref="publishername"/>
+ <xs:element ref="pubsnumber"/>
+ <xs:element ref="releaseinfo"/>
+ <xs:element ref="revhistory"/>
+ <xs:element ref="seriesvolnums"/>
+ <xs:element ref="subtitle"/>
+ <xs:element ref="title"/>
+ <xs:element ref="titleabbrev"/>
+ <xs:element ref="volumenum"/>
+ <xs:element ref="citetitle"/>
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!-- I don't think this is well placed, but it needs to be here because of -->
+ <!-- the reference to bibliocomponent.mix -->
+ <xs:group name="info.class">
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="legalnotice"/>
+ <xs:element ref="modespec"/>
+ <xs:element ref="subjectset"/>
+ <xs:element ref="keywordset"/>
+ <xs:element ref="itermset"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!-- BiblioList ........................ -->
+ <xs:attributeGroup name="bibliolist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of bibliography entries. -->
+ <xs:element name="bibliolist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliolist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliolist.element -->
+ <xs:attributeGroup name="bibliolist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliolist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliolist.attlist -->
+ <!-- end of bibliolist.module -->
+ <xs:attributeGroup name="biblioentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="biblioentry">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="articleinfo"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="biblioentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioentry.element -->
+ <xs:attributeGroup name="biblioentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioentry.attlist -->
+ <!-- end of biblioentry.module -->
+ <xs:attributeGroup name="bibliomixed.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="bibliomixed">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomixed.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomixed.element -->
+ <xs:attributeGroup name="bibliomixed.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomixed.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomixed.attlist -->
+ <!-- end of bibliomixed.module -->
+ <xs:attributeGroup name="articleinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Article. -->
+ <xs:element name="articleinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="articleinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of articleinfo.element -->
+ <xs:attributeGroup name="articleinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="articleinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of articleinfo.attlist -->
+ <!-- end of articleinfo.module -->
+ <xs:attributeGroup name="biblioset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "raw" container for related bibliographic information. -->
+ <xs:element name="biblioset">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="bibliocomponent.mix"/>
+ <xs:attributeGroup ref="biblioset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioSet -->
+ <xs:attributeGroup name="biblioset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioset.attlist -->
+ <!-- end of biblioset.module -->
+ <xs:attributeGroup name="bibliomset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "cooked" container for related bibliographic information. -->
+ <xs:element name="bibliomset">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioMSet -->
+ <xs:attributeGroup name="bibliomset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomset.attlist -->
+ <!-- end of bibliomset.module -->
+ <xs:attributeGroup name="bibliomisc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Untyped bibliographic information. -->
+ <xs:element name="bibliomisc">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="bibliomisc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomisc.element -->
+ <xs:attributeGroup name="bibliomisc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomisc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomisc.attlist -->
+ <!-- end of bibliomisc.module -->
+ <!-- ...................................................................... -->
+ <!-- Subject, Keyword, and ITermSet elements .............................. -->
+ <xs:attributeGroup name="subjectset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of terms describing the subject matter of a document. -->
+ <xs:element name="subjectset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subject"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subjectset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectset.element -->
+ <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+ <xs:attributeGroup name="subjectset.attlist">
+ <xs:attribute name="scheme" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectset.attlist -->
+ <!-- end of subjectset.module -->
+ <xs:attributeGroup name="subject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a group of terms describing the subject matter of a document. -->
+ <xs:element name="subject">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subjectterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subject.element -->
+ <!--
+ Weight: Ranking of this group of SubjectTerms relative
+ to others, 0 is low, no highest value specified
+ -->
+ <xs:attributeGroup name="subject.attlist">
+ <xs:attribute name="weight"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subject.attlist -->
+ <!-- end of subject.module -->
+ <xs:attributeGroup name="subjectterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A term in a group of terms describing the subject matter of a document. -->
+ <xs:element name="subjectterm">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="subjectterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectterm.element -->
+ <xs:attributeGroup name="subjectterm.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectterm.attlist -->
+ <!-- end of subjectterm.module -->
+ <!-- end of subjectset.content.module -->
+ <xs:attributeGroup name="keywordset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of keywords describing the content of a document. -->
+ <xs:element name="keywordset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="keyword"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="keywordset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keywordset.element -->
+ <xs:attributeGroup name="keywordset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keywordset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keywordset.attlist -->
+ <!-- end of keywordset.module -->
+ <xs:attributeGroup name="keyword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a set of keywords describing the content of a document. -->
+ <xs:element name="keyword">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="keyword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keyword.element -->
+ <xs:attributeGroup name="keyword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keyword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keyword.attlist -->
+ <!-- end of keyword.module -->
+ <!-- end of keywordset.content.module -->
+ <xs:attributeGroup name="itermset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of index terms in the meta-information of a document. -->
+ <xs:element name="itermset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="indexterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itermset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itermset.element -->
+ <xs:attributeGroup name="itermset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itermset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itermset.attlist -->
+ <!-- end of itermset.module -->
+ <!-- Bibliographic info for "blocks" -->
+ <xs:attributeGroup name="blockinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a block element. -->
+ <xs:element name="blockinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="blockinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockinfo.element -->
+ <xs:attributeGroup name="blockinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockinfo.attlist -->
+ <!-- end of blockinfo.module -->
+ <!-- ...................................................................... -->
+ <!-- Compound (section-ish) elements ...................................... -->
+ <!-- Message set ...................... -->
+ <xs:attributeGroup name="msgset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A detailed set of messages, usually error messages. -->
+ <xs:element name="msgset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="msgentry"/>
+ <xs:element maxOccurs="unbounded" ref="simplemsgentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgset.element -->
+ <xs:attributeGroup name="msgset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgset.attlist -->
+ <!-- end of msgset.module -->
+ <xs:attributeGroup name="msgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an entry in a message set. -->
+ <xs:element name="msgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="msg"/>
+ <xs:element minOccurs="0" ref="msginfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgentry.element -->
+ <xs:attributeGroup name="msgentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgentry.attlist -->
+ <!-- end of msgentry.module -->
+ <xs:attributeGroup name="simplemsgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a simpler entry in a message set. -->
+ <xs:element name="simplemsgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="msgtext"/>
+ <xs:element maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplemsgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplemsgentry.element -->
+ <xs:attributeGroup name="simplemsgentry.attlist">
+ <xs:attribute name="audience"/>
+ <xs:attribute name="level"/>
+ <xs:attribute name="origin"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplemsgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplemsgentry.attlist -->
+ <!-- end of simplemsgentry.module -->
+ <xs:attributeGroup name="msg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A message in a message set. -->
+ <xs:element name="msg">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgmain"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msgsub"/>
+ <xs:element ref="msgrel"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msg.element -->
+ <xs:attributeGroup name="msg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msg.attlist -->
+ <!-- end of msg.module -->
+ <xs:attributeGroup name="msgmain.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary component of a message in a message set. -->
+ <xs:element name="msgmain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgmain.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgmain.element -->
+ <xs:attributeGroup name="msgmain.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgmain.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgmain.attlist -->
+ <!-- end of msgmain.module -->
+ <xs:attributeGroup name="msgsub.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subcomponent of a message in a message set. -->
+ <xs:element name="msgsub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgsub.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgsub.element -->
+ <xs:attributeGroup name="msgsub.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgsub.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgsub.attlist -->
+ <!-- end of msgsub.module -->
+ <xs:attributeGroup name="msgrel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A related component of a message in a message set. -->
+ <xs:element name="msgrel">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgrel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgrel.element -->
+ <xs:attributeGroup name="msgrel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgrel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgrel.attlist -->
+ <!-- end of msgrel.module -->
+ <!-- MsgText (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="msginfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a message in a message set. -->
+ <xs:element name="msginfo">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msglevel"/>
+ <xs:element ref="msgorig"/>
+ <xs:element ref="msgaud"/>
+ </xs:choice>
+ <xs:attributeGroup ref="msginfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msginfo.element -->
+ <xs:attributeGroup name="msginfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msginfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msginfo.attlist -->
+ <!-- end of msginfo.module -->
+ <xs:attributeGroup name="msglevel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The level of importance or severity of a message in a message set. -->
+ <xs:element name="msglevel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msglevel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msglevel.element -->
+ <xs:attributeGroup name="msglevel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msglevel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msglevel.attlist -->
+ <!-- end of msglevel.module -->
+ <xs:attributeGroup name="msgorig.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The origin of a message in a message set. -->
+ <xs:element name="msgorig">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msgorig.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgorig.element -->
+ <xs:attributeGroup name="msgorig.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgorig.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgorig.attlist -->
+ <!-- end of msgorig.module -->
+ <xs:attributeGroup name="msgaud.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The audience to which a message in a message set is relevant. -->
+ <xs:element name="msgaud">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="msgaud.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgaud.element -->
+ <xs:attributeGroup name="msgaud.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgaud.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgaud.attlist -->
+ <!-- end of msgaud.module -->
+ <xs:attributeGroup name="msgexplan.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Explanatory material relating to a message in a message set. -->
+ <xs:element name="msgexplan">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgexplan.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgexplan.element -->
+ <xs:attributeGroup name="msgexplan.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgexplan.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgexplan.attlist -->
+ <!-- end of msgexplan.module -->
+ <!-- end of msgset.content.module -->
+ <xs:attributeGroup name="task.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A task to be completed. -->
+ <xs:element name="task" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" ref="tasksummary"/>
+ <xs:element minOccurs="0" ref="taskprerequisites"/>
+ <xs:element ref="procedure"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="example"/>
+ <xs:element minOccurs="0" ref="taskrelated"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="task.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of task.element -->
+ <xs:attributeGroup name="task.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="task.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of task.attlist -->
+ <!-- end of task.module -->
+ <xs:attributeGroup name="tasksummary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of a task. -->
+ <xs:element name="tasksummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tasksummary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tasksummary.element -->
+ <xs:attributeGroup name="tasksummary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tasksummary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tasksummary.attlist -->
+ <!-- end of tasksummary.module -->
+ <xs:attributeGroup name="taskprerequisites.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prerequisites for a task. -->
+ <xs:element name="taskprerequisites">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskprerequisites.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskprerequisites.element -->
+ <xs:attributeGroup name="taskprerequisites.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskprerequisites.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskprerequisites.attlist -->
+ <!-- end of taskprerequisites.module -->
+ <xs:attributeGroup name="taskrelated.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information related to a task. -->
+ <xs:element name="taskrelated">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskrelated.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskrelated.element -->
+ <xs:attributeGroup name="taskrelated.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskrelated.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskrelated.attlist -->
+ <!-- end of taskrelated.module -->
+ <!-- end of task.content.module -->
+ <!-- QandASet ........................ -->
+ <xs:attributeGroup name="qandaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question-and-answer set. -->
+ <xs:element name="qandaset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaset.element -->
+ <xs:attributeGroup name="qandaset.attlist">
+ <xs:attribute name="defaultlabel">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="qanda"/>
+ <xs:enumeration value="number"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaset.attlist -->
+ <!-- end of qandaset.module -->
+ <xs:attributeGroup name="qandadiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A titled division in a QandASet. -->
+ <xs:element name="qandadiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandadiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandadiv.element -->
+ <xs:attributeGroup name="qandadiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandadiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandadiv.attlist -->
+ <!-- end of qandadiv.module -->
+ <xs:attributeGroup name="qandaentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question/answer set within a QandASet. -->
+ <xs:element name="qandaentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:element ref="question"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="answer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaentry.element -->
+ <xs:attributeGroup name="qandaentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaentry.attlist -->
+ <!-- end of qandaentry.module -->
+ <xs:attributeGroup name="question.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question in a QandASet. -->
+ <xs:element name="question">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group maxOccurs="unbounded" ref="qandaset.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="question.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of question.element -->
+ <xs:attributeGroup name="question.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="question.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of question.attlist -->
+ <!-- end of question.module -->
+ <xs:attributeGroup name="answer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An answer to a question posed in a QandASet. -->
+ <xs:element name="answer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="answer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of answer.element -->
+ <xs:attributeGroup name="answer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="answer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of answer.attlist -->
+ <!-- end of answer.module -->
+ <xs:attributeGroup name="label.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A label on a Question or Answer. -->
+ <xs:element name="label">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="label.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of label.element -->
+ <xs:attributeGroup name="label.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="label.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of label.attlist -->
+ <!-- end of label.module -->
+ <!-- end of qandaset.content.module -->
+ <!-- Procedure ........................ -->
+ <xs:attributeGroup name="procedure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of operations to be performed in a well-defined sequence. -->
+ <xs:element name="procedure" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="procedure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of procedure.element -->
+ <xs:attributeGroup name="procedure.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="procedure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of procedure.attlist -->
+ <!-- end of procedure.module -->
+ <xs:attributeGroup name="step.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of action in a procedure. -->
+ <xs:element name="step">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:sequence minOccurs="0">
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="step.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of step.element -->
+ <!-- Performance: Whether the Step must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="step.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="step.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of step.attlist -->
+ <!-- end of step.module -->
+ <xs:attributeGroup name="substeps.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for steps that occur within steps in a procedure. -->
+ <xs:element name="substeps">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="substeps.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of substeps.element -->
+ <!-- Performance: whether entire set of substeps must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="substeps.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="substeps.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of substeps.attlist -->
+ <!-- end of substeps.module -->
+ <xs:attributeGroup name="stepalternatives.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Alternative steps in a procedure. -->
+ <xs:element name="stepalternatives">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="stepalternatives.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of stepalternatives.element -->
+ <!-- Performance: Whether (one of) the alternatives must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="stepalternatives.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="stepalternatives.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of stepalternatives.attlist -->
+ <!-- end of stepalternatives.module -->
+ <!-- end of procedure.content.module -->
+ <!-- Sidebar .......................... -->
+ <xs:attributeGroup name="sidebarinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sidebar. -->
+ <xs:element name="sidebarinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sidebarinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebarinfo.element -->
+ <xs:attributeGroup name="sidebarinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebarinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebarinfo.attlist -->
+ <!-- end of sidebarinfo.module -->
+ <xs:attributeGroup name="sidebar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a document that is isolated from the main narrative flow. -->
+ <xs:element name="sidebar" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sidebarinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="sidebar.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sidebar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebar.element -->
+ <xs:attributeGroup name="sidebar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebar.attlist -->
+ <!-- end of sidebar.module -->
+ <!-- end of sidebar.content.model -->
+ <!-- ...................................................................... -->
+ <!-- Paragraph-related elements ........................................... -->
+ <xs:attributeGroup name="abstract.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="abstract">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="abstract.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abstract.element -->
+ <xs:attributeGroup name="abstract.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abstract.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abstract.attlist -->
+ <!-- end of abstract.module -->
+ <xs:attributeGroup name="authorblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about an author. -->
+ <xs:element name="authorblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="authorblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorblurb.element -->
+ <xs:attributeGroup name="authorblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorblurb.attlist -->
+ <!-- end of authorblurb.module -->
+ <xs:attributeGroup name="personblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about a person. -->
+ <xs:element name="personblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="personblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personblurb.element -->
+ <xs:attributeGroup name="personblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personblurb.attlist -->
+ <!-- end of personblurb.module -->
+ <xs:attributeGroup name="blockquote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A quotation set off from the main text. -->
+ <xs:element name="blockquote" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="blockquote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockquote.element -->
+ <xs:attributeGroup name="blockquote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockquote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockquote.attlist -->
+ <!-- end of blockquote.module -->
+ <xs:attributeGroup name="attribution.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a block quote or epigraph. -->
+ <xs:element name="attribution">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="attribution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of attribution.element -->
+ <xs:attributeGroup name="attribution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="attribution.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of attribution.attlist -->
+ <!-- end of attribution.module -->
+ <xs:attributeGroup name="bridgehead.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A free-floating heading. -->
+ <xs:element name="bridgehead">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="bridgehead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bridgehead.element -->
+ <!--
+ Renderas: Indicates the format in which the BridgeHead
+ should appear
+ -->
+ <xs:attributeGroup name="bridgehead.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other"/>
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bridgehead.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bridgehead.attlist -->
+ <!-- end of bridgehead.module -->
+ <xs:attributeGroup name="remark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A remark (or comment) intended for presentation in a draft manuscript. -->
+ <xs:element name="remark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="remark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of remark.element -->
+ <xs:attributeGroup name="remark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="remark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of remark.attlist -->
+ <!-- end of remark.module -->
+ <xs:attributeGroup name="epigraph.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short inscription at the beginning of a document or component. -->
+ <xs:element name="epigraph">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="para.class"/>
+ <xs:element ref="literallayout"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="epigraph.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of epigraph.element -->
+ <xs:attributeGroup name="epigraph.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="epigraph.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of epigraph.attlist -->
+ <!-- Attribution (defined above) -->
+ <!-- end of epigraph.module -->
+ <xs:attributeGroup name="footnote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A footnote. -->
+ <xs:element name="footnote" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="footnote.mix"/>
+ <xs:attributeGroup ref="footnote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnote.element -->
+ <xs:attributeGroup name="footnote.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnote.attlist -->
+ <!-- end of footnote.module -->
+ <xs:attributeGroup name="highlights.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the main points of the discussed component. -->
+ <xs:element name="highlights">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="highlights.mix"/>
+ <xs:attributeGroup ref="highlights.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of highlights.element -->
+ <xs:attributeGroup name="highlights.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="highlights.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of highlights.attlist -->
+ <!-- end of highlights.module -->
+ <xs:attributeGroup name="formalpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph with a title. -->
+ <xs:element name="formalpara" substitutionGroup="para.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="para"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="formalpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of formalpara.element -->
+ <xs:attributeGroup name="formalpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="formalpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of formalpara.attlist -->
+ <!-- end of formalpara.module -->
+ <xs:attributeGroup name="para.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="para" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="para.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of para.element -->
+ <xs:attributeGroup name="para.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="para.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of para.attlist -->
+ <!-- end of para.module -->
+ <xs:attributeGroup name="simpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph that contains only text and inline markup, no block elements. -->
+ <xs:element name="simpara" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="simpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simpara.element -->
+ <xs:attributeGroup name="simpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simpara.attlist -->
+ <!-- end of simpara.module -->
+ <xs:attributeGroup name="sconstruct.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SConstruct example file. -->
+ <xs:element name="sconstruct" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconstruct.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconstruct.element -->
+ <xs:attributeGroup name="sconstruct.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconstruct.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconstruct.attlist -->
+ <!-- end of sconstruct.module -->
+ <xs:attributeGroup name="scons_example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example. -->
+ <xs:element name="scons_example" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="file"/>
+ <xs:element ref="directory"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example.element -->
+ <xs:attributeGroup name="scons_example.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_example.attlist -->
+ <!-- end of scons_example.module -->
+ <xs:attributeGroup name="file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example file. -->
+ <xs:element name="file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of file.element -->
+ <xs:attributeGroup name="file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="optional" />
+ <xs:attribute name="chmod" type="xs:string" use="optional" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of file.attlist -->
+ <!-- end of file.module -->
+ <xs:attributeGroup name="directory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example directory. -->
+ <xs:element name="directory" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="directory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of directory.element -->
+ <xs:attributeGroup name="directory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="directory.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of directory.attlist -->
+ <!-- end of directory.module -->
+ <xs:attributeGroup name="scons_example_file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_example_file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example_file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example_file.element -->
+ <xs:attributeGroup name="scons_example_file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example_file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_example_file.attlist -->
+ <!-- end of scons_example_file.module -->
+ <xs:attributeGroup name="scons_output.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The output of a SCons command/example. -->
+ <xs:element name="scons_output" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="scons_output_command"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output.element -->
+ <xs:attributeGroup name="scons_output.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" />
+ <xs:attribute name="tools" type="xs:string" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ <xs:attribute name="suffix" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_output.attlist -->
+ <!-- end of scons_output.module -->
+ <xs:attributeGroup name="scons_output_command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_output_command" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output_command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output_command.element -->
+ <xs:attributeGroup name="scons_output_command.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output_command.role.attrib"/>
+ <xs:attribute name="edit" type="xs:string" use="optional" />
+ <xs:attribute name="environment" type="xs:string" use="optional" />
+ <xs:attribute name="output" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_output_command.attlist -->
+ <!-- end of scons_output_command.module -->
+ <xs:attributeGroup name="sconsdoc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A sconsdoc. -->
+ <xs:element name="sconsdoc" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tool"/>
+ <xs:element ref="builder"/>
+ <xs:element ref="scons_function"/>
+ <xs:element ref="cvar"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconsdoc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconsdoc.element -->
+ <xs:attributeGroup name="sconsdoc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconsdoc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconsdoc.attlist -->
+ <!-- end of sconsdoc.module -->
+ <xs:attributeGroup name="example_commands.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="example_commands" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="example_commands.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example_commands.element -->
+ <xs:attributeGroup name="example_commands.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example_commands.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example_commands.attlist -->
+ <!-- end of example_commands.module -->
+ <xs:attributeGroup name="summary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="summary" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="component.mix"/>
+ <xs:group ref="summary.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="summary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of summary.element -->
+ <xs:attributeGroup name="summary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="summary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of summary.attlist -->
+ <!-- end of summary.module -->
+
+ <xs:attributeGroup name="item.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A item. -->
+ <xs:element name="item">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="item.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of item.element -->
+ <xs:attributeGroup name="item.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="item.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of item.attlist -->
+ <!-- end of item.module -->
+ <xs:attributeGroup name="sets.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="sets" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sets.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sets.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="sets.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sets.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sets.attlist -->
+ <!-- end of sets.module -->
+ <xs:attributeGroup name="uses.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="uses" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="uses.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uses.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="uses.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uses.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uses.attlist -->
+ <!-- end of uses.module -->
+ <xs:attributeGroup name="tool.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="tool" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tool.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tool.element -->
+ <xs:attributeGroup name="tool.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tool.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of tool.attlist -->
+ <!-- end of tool.module -->
+ <xs:attributeGroup name="builder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="builder" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="builder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of builder.element -->
+ <xs:attributeGroup name="builder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="builder.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of builder.attlist -->
+ <!-- end of builder.module -->
+
+ <xs:attributeGroup name="cvar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="cvar" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:element ref="summary"/>
+ </xs:choice>
+ <xs:attributeGroup ref="cvar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cvar.element -->
+ <xs:attributeGroup name="cvar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cvar.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of cvar.attlist -->
+ <!-- end of cvar.module -->
+ <xs:attributeGroup name="arguments.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="arguments" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arguments.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arguments.element -->
+ <xs:attributeGroup name="arguments.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arguments.role.attrib"/>
+ <xs:attribute name="signature" type="xs:string" use="optional" />
+ <xs:attribute name="both" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of arguments.attlist -->
+ <!-- end of arguments.module -->
+ <xs:attributeGroup name="scons_function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="scons_function" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ <xs:group ref="scons_function.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_function.element -->
+ <xs:attributeGroup name="scons_function.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_function.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_function.attlist -->
+ <!-- end of scons_function.module -->
+ <xs:attributeGroup name="admon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A note of caution. -->
+ <xs:element name="caution" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="caution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caution.element -->
+ <xs:attributeGroup name="caution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of caution.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="important" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="important.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of important.element -->
+ <xs:attributeGroup name="important.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of important.attlist -->
+ <!-- doc:A message set off from the text. -->
+ <xs:element name="note" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="note.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of note.element -->
+ <xs:attributeGroup name="note.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of note.attlist -->
+ <!-- doc:A suggestion to the user, set off from the text. -->
+ <xs:element name="tip" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tip.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tip.element -->
+ <xs:attributeGroup name="tip.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tip.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="warning" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="warning.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of warning.element -->
+ <xs:attributeGroup name="warning.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of warning.attlist -->
+ <!-- end of admon.module -->
+ <!-- ...................................................................... -->
+ <!-- Lists ................................................................ -->
+ <!-- GlossList ........................ -->
+ <xs:attributeGroup name="glosslist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of GlossEntrys. -->
+ <xs:element name="glosslist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glosslist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosslist.element -->
+ <xs:attributeGroup name="glosslist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosslist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosslist.attlist -->
+ <!-- end of glosslist.module -->
+ <xs:attributeGroup name="glossentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Glossary or GlossList. -->
+ <xs:element name="glossentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="glossterm"/>
+ <xs:element minOccurs="0" ref="acronym"/>
+ <xs:element minOccurs="0" ref="abbrev"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:choice>
+ <xs:element ref="glosssee"/>
+ <xs:element maxOccurs="unbounded" ref="glossdef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossentry.element -->
+ <!--
+ SortAs: String by which the GlossEntry is to be sorted
+ (alphabetized) in lieu of its proper content
+ -->
+ <xs:attributeGroup name="glossentry.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossentry.attlist -->
+ <!-- end of glossentry.module -->
+ <!-- GlossTerm (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="glossdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A definition in a GlossEntry. -->
+ <xs:element name="glossdef">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="glossdef.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="glossseealso"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdef.element -->
+ <!-- Subject: List of subjects; keywords for the definition -->
+ <xs:attributeGroup name="glossdef.attlist">
+ <xs:attribute name="subject"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdef.attlist -->
+ <!-- end of glossdef.module -->
+ <xs:attributeGroup name="glosssee.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glosssee">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glosssee.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosssee.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSee
+ -->
+ <xs:attributeGroup name="glosssee.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosssee.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosssee.attlist -->
+ <!-- end of glosssee.module -->
+ <xs:attributeGroup name="glossseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glossseealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossseealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossseealso.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSeeAlso
+ -->
+ <xs:attributeGroup name="glossseealso.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossseealso.attlist -->
+ <!-- end of glossseealso.module -->
+ <!-- end of glossentry.content.module -->
+ <!-- ItemizedList and OrderedList ..... -->
+ <xs:attributeGroup name="itemizedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="itemizedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itemizedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itemizedlist.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="itemizedlist.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itemizedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itemizedlist.attlist -->
+ <!-- end of itemizedlist.module -->
+ <xs:attributeGroup name="orderedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a sequentially incremented label. -->
+ <xs:element name="orderedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="orderedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orderedlist.element -->
+ <!--
+ Numeration: Style of ListItem numbered; default is expected
+ to be Arabic
+ -->
+ <!--
+ InheritNum: Specifies for a nested list that the numbering
+ of ListItems should include the number of the item
+ within which they are nested (e.g., 1a and 1b within 1,
+ rather than a and b)
+ -->
+ <!--
+ Continuation: Where list numbering begins afresh (Restarts,
+ the default) or continues that of the immediately preceding
+ list (Continues)
+ -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <xs:attributeGroup name="orderedlist.attlist">
+ <xs:attribute name="numeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="arabic"/>
+ <xs:enumeration value="upperalpha"/>
+ <xs:enumeration value="loweralpha"/>
+ <xs:enumeration value="upperroman"/>
+ <xs:enumeration value="lowerroman"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="inheritnum" default="ignore">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inherit"/>
+ <xs:enumeration value="ignore"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation" default="restarts">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orderedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orderedlist.attlist -->
+ <!-- end of orderedlist.module -->
+ <xs:attributeGroup name="listitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the elements of a list item. -->
+ <xs:element name="listitem">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="listitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of listitem.element -->
+ <!--
+ Override: Indicates the mark to be used for this ListItem
+ instead of the default mark or the mark specified by
+ the Mark attribute on the enclosing ItemizedList
+ -->
+ <xs:attributeGroup name="listitem.attlist">
+ <xs:attribute name="override"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="listitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of listitem.attlist -->
+ <!-- end of listitem.module -->
+ <!-- SegmentedList .................... -->
+ <xs:attributeGroup name="segmentedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A segmented list, a list of sets of elements. -->
+ <xs:element name="segmentedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="segtitle"/>
+ <xs:element maxOccurs="unbounded" ref="seglistitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="segmentedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segmentedlist.element -->
+ <xs:attributeGroup name="segmentedlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segmentedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segmentedlist.attlist -->
+ <!-- end of segmentedlist.module -->
+ <xs:attributeGroup name="segtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an element of a list item in a segmented list. -->
+ <xs:element name="segtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="segtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segtitle.element -->
+ <xs:attributeGroup name="segtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segtitle.attlist -->
+ <!-- end of segtitle.module -->
+ <xs:attributeGroup name="seglistitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list item in a segmented list. -->
+ <xs:element name="seglistitem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="seg"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="seglistitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seglistitem.element -->
+ <xs:attributeGroup name="seglistitem.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seglistitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seglistitem.attlist -->
+ <!-- end of seglistitem.module -->
+ <xs:attributeGroup name="seg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a list item in a segmented list. -->
+ <xs:element name="seg">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="seg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seg.element -->
+ <xs:attributeGroup name="seg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seg.attlist -->
+ <!-- end of seg.module -->
+ <!-- end of segmentedlist.content.module -->
+ <!-- SimpleList ....................... -->
+ <xs:attributeGroup name="simplelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An undecorated list of single words or short phrases. -->
+ <xs:element name="simplelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="member"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplelist.element -->
+ <!-- Columns: The number of columns the array should contain -->
+ <!--
+ Type: How the Members of the SimpleList should be
+ formatted: Inline (members separated with commas etc.
+ inline), Vert (top to bottom in n Columns), or Horiz (in
+ the direction of text flow) in n Columns. If Column
+ is 1 or implied, Type=Vert and Type=Horiz give the same
+ results.
+ -->
+ <xs:attributeGroup name="simplelist.attlist">
+ <xs:attribute name="columns"/>
+ <xs:attribute name="type" default="vert">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inline"/>
+ <xs:enumeration value="vert"/>
+ <xs:enumeration value="horiz"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplelist.attlist -->
+ <!-- end of simplelist.module -->
+ <xs:attributeGroup name="member.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a simple list. -->
+ <xs:element name="member">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="member.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of member.element -->
+ <xs:attributeGroup name="member.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="member.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of member.attlist -->
+ <!-- end of member.module -->
+ <!-- end of simplelist.content.module -->
+ <!-- VariableList ..................... -->
+ <xs:attributeGroup name="variablelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is composed of a set of one or more terms and an associated description. -->
+ <xs:element name="variablelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="varlistentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="variablelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of variablelist.element -->
+ <!--
+ TermLength: Length beyond which the presentation engine
+ may consider the Term too long and select an alternate
+ presentation of the Term and, or, its associated ListItem.
+ -->
+ <xs:attributeGroup name="variablelist.attlist">
+ <xs:attribute name="termlength"/>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="variablelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of variablelist.attlist -->
+ <!-- end of variablelist.module -->
+ <xs:attributeGroup name="varlistentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of terms and the associated description in a variable list. -->
+ <xs:element name="varlistentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="term"/>
+ <xs:element ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="varlistentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varlistentry.element -->
+ <xs:attributeGroup name="varlistentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varlistentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varlistentry.attlist -->
+ <!-- end of varlistentry.module -->
+ <xs:attributeGroup name="term.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The word or phrase being defined or described in a variable list. -->
+ <xs:element name="term">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="term.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of term.element -->
+ <xs:attributeGroup name="term.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="term.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of term.attlist -->
+ <!-- end of term.module -->
+ <!-- ListItem (defined above) -->
+ <!-- end of variablelist.content.module -->
+ <!-- CalloutList ...................... -->
+ <xs:attributeGroup name="calloutlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of Callouts. -->
+ <xs:element name="calloutlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="callout"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="calloutlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of calloutlist.element -->
+ <xs:attributeGroup name="calloutlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="calloutlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of calloutlist.attlist -->
+ <!-- end of calloutlist.module -->
+ <xs:attributeGroup name="callout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A &ldquo;called out&rdquo; description of a marked Area. -->
+ <xs:element name="callout">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="callout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of callout.element -->
+ <!--
+ AreaRefs: IDs of one or more Areas or AreaSets described
+ by this Callout
+ -->
+ <xs:attributeGroup name="callout.attlist">
+ <xs:attribute name="arearefs" use="required" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="callout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of callout.attlist -->
+ <!-- end of callout.module -->
+ <!-- end of calloutlist.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Objects .............................................................. -->
+ <!-- Examples etc. .................... -->
+ <xs:attributeGroup name="example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal example, with a title. -->
+ <xs:element name="example" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example.element -->
+ <xs:attributeGroup name="example.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example.attlist -->
+ <!-- end of example.module -->
+ <xs:attributeGroup name="informalexample.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed example without a title. -->
+ <xs:element name="informalexample" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalexample.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalexample.element -->
+ <xs:attributeGroup name="informalexample.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalexample.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalexample.attlist -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="programlistingco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A program listing with associated areas used in callouts. -->
+ <xs:element name="programlistingco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="programlisting"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="programlistingco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlistingco.element -->
+ <xs:attributeGroup name="programlistingco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlistingco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlistingco.attlist -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="areaspec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of regions in a graphic or code example. -->
+ <xs:element name="areaspec">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="area"/>
+ <xs:element ref="areaset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="areaspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaspec.element -->
+ <!--
+ Units: global unit of measure in which coordinates in
+ this spec are expressed:
+
+ - CALSPair "x1,y1 x2,y2": lower-left and upper-right
+ coordinates in a rectangle describing repro area in which
+ graphic is placed, where X and Y dimensions are each some
+ number 0..10000 (taken from CALS graphic attributes)
+
+ - LineColumn "line column": line number and column number
+ at which to start callout text in "linespecific" content
+
+ - LineRange "startline endline": whole lines from startline
+ to endline in "linespecific" content
+
+ - LineColumnPair "line1 col1 line2 col2": starting and ending
+ points of area in "linespecific" content that starts at
+ first position and ends at second position (including the
+ beginnings of any intervening lines)
+
+ - Other: directive to look at value of OtherUnits attribute
+ to get implementation-specific keyword
+
+ The default is implementation-specific; usually dependent on
+ the parent element (GraphicCO gets CALSPair, ProgramListingCO
+ and ScreenCO get LineColumn)
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="areaspec.attlist">
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="areaspec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaspec.attlist -->
+ <!-- end of areaspec.module -->
+ <xs:attributeGroup name="area.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A region defined for a Callout in a graphic or code example. -->
+ <xs:element name="area">
+ <xs:complexType>
+ <xs:attributeGroup ref="area.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of area.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="area.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="area.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of area.attlist -->
+ <!-- end of area.module -->
+ <xs:attributeGroup name="areaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of related areas in a graphic or code example. -->
+ <xs:element name="areaset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="area"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="areaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaset.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSpec
+ -->
+ <xs:attributeGroup name="areaset.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="areaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaset.attlist -->
+ <!-- end of areaset.module -->
+ <!-- end of areaspec.content.module -->
+ <xs:attributeGroup name="programlisting.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A literal listing of all or part of a program. -->
+ <xs:element name="programlisting" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="programlisting.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlisting.element -->
+ <xs:attributeGroup name="programlisting.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlisting.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlisting.attlist -->
+ <!-- end of programlisting.module -->
+ <xs:attributeGroup name="literallayout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A block of text in which line breaks and white space are to be reproduced faithfully. -->
+ <xs:element name="literallayout" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="literallayout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literallayout.element -->
+ <xs:attributeGroup name="literallayout.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attribute name="class" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="monospaced"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literallayout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literallayout.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of literallayout.module -->
+ <xs:attributeGroup name="screenco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A screen with associated areas used in callouts. -->
+ <xs:element name="screenco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="screen"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenco.element -->
+ <xs:attributeGroup name="screenco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenco.attlist -->
+ <!-- AreaSpec (defined above) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of screenco.module -->
+ <xs:attributeGroup name="screen.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="screen" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="screen.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screen.element -->
+ <xs:attributeGroup name="screen.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screen.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screen.attlist -->
+ <!-- end of screen.module -->
+ <xs:attributeGroup name="screenshot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A representation of what the user sees or might see on a computer screen. -->
+ <xs:element name="screenshot" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="screeninfo"/>
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="graphicco"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="mediaobjectco"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenshot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenshot.element -->
+ <xs:attributeGroup name="screenshot.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenshot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenshot.attlist -->
+ <!-- end of screenshot.module -->
+ <xs:attributeGroup name="screeninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about how a screen shot was produced. -->
+ <xs:element name="screeninfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="screeninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screeninfo.element -->
+ <xs:attributeGroup name="screeninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screeninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screeninfo.attlist -->
+ <!-- end of screeninfo.module -->
+ <!-- end of screenshot.content.module -->
+ <!-- Figures etc. ..................... -->
+ <xs:attributeGroup name="figure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal figure, generally an illustration, with a title. -->
+ <xs:element name="figure" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="figure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of figure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="figure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="figure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of figure.attlist -->
+ <!-- end of figure.module -->
+ <xs:attributeGroup name="informalfigure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A untitled figure. -->
+ <xs:element name="informalfigure" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalfigure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalfigure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="informalfigure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalfigure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalfigure.attlist -->
+ <!-- end of informalfigure.module -->
+ <xs:attributeGroup name="graphicco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphic that contains callout areas. -->
+ <xs:element name="graphicco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="graphic"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="graphicco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphicco.element -->
+ <xs:attributeGroup name="graphicco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphicco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphicco.attlist -->
+ <!-- AreaSpec (defined above in Examples) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of graphicco.module -->
+ <!--
+ Graphical data can be the content of Graphic, or you can reference
+ an external file either as an entity (Entitref) or a filename
+ (Fileref).
+ -->
+ <xs:attributeGroup name="graphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed graphical object (not an inline). -->
+ <xs:element name="graphic" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="graphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphic.element -->
+ <xs:attributeGroup name="graphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphic.attlist -->
+ <!-- end of graphic.module -->
+ <xs:attributeGroup name="inlinegraphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An object containing or pointing to graphical data that will be rendered inline. -->
+ <xs:element name="inlinegraphic" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="inlinegraphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinegraphic.element -->
+ <xs:attributeGroup name="inlinegraphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinegraphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinegraphic.attlist -->
+ <!-- end of inlinegraphic.module -->
+ <xs:attributeGroup name="mediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed media object (video, audio, image, etc.). -->
+ <xs:element name="mediaobject" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ <xs:element minOccurs="0" ref="caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobject.element -->
+ <xs:attributeGroup name="mediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobject.attlist -->
+ <!-- end of mediaobject.module -->
+ <xs:attributeGroup name="inlinemediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline media object (video, audio, image, and so on). -->
+ <xs:element name="inlinemediaobject" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="inlinemediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinemediaobject.element -->
+ <xs:attributeGroup name="inlinemediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinemediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinemediaobject.attlist -->
+ <!-- end of inlinemediaobject.module -->
+ <xs:attributeGroup name="videoobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for video data and its associated meta-information. -->
+ <xs:element name="videoobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="videodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="videoobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videoobject.element -->
+ <xs:attributeGroup name="videoobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videoobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videoobject.attlist -->
+ <!-- end of videoobject.module -->
+ <xs:attributeGroup name="audioobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for audio data and its associated meta-information. -->
+ <xs:element name="audioobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="audiodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="audioobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audioobject.element -->
+ <xs:attributeGroup name="audioobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audioobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audioobject.attlist -->
+ <!-- end of audioobject.module -->
+ <xs:attributeGroup name="imageobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for image data and its associated meta-information. -->
+ <xs:element name="imageobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imagedata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobject.element -->
+ <xs:attributeGroup name="imageobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobject.attlist -->
+ <!-- end of imageobject.module -->
+ <xs:attributeGroup name="textobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a text description of an object and its associated meta-information. -->
+ <xs:element name="textobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:choice>
+ <xs:element ref="phrase"/>
+ <xs:element ref="textdata"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="textobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textobject.element -->
+ <xs:attributeGroup name="textobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textobject.attlist -->
+ <!-- end of textobject.module -->
+ <xs:attributeGroup name="objectinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an object. -->
+ <xs:element name="objectinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="objectinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of objectinfo.element -->
+ <xs:attributeGroup name="objectinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="objectinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of objectinfo.attlist -->
+ <!-- end of objectinfo.module -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the object data
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the object data
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the image -->
+ <xs:attributeGroup name="objectdata.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="videodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external video data. -->
+ <xs:element name="videodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="videodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videodata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="videodata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videodata.attlist -->
+ <!-- end of videodata.module -->
+ <xs:attributeGroup name="audiodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external audio data. -->
+ <xs:element name="audiodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="audiodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audiodata.element -->
+ <xs:attributeGroup name="audiodata.attlist">
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audiodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audiodata.attlist -->
+ <!-- end of audiodata.module -->
+ <xs:attributeGroup name="imagedata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external image data. -->
+ <xs:element name="imagedata">
+ <xs:complexType>
+ <xs:attributeGroup ref="imagedata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imagedata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="imagedata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imagedata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imagedata.attlist -->
+ <!-- end of imagedata.module -->
+ <xs:attributeGroup name="textdata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external text data. -->
+ <xs:element name="textdata">
+ <xs:complexType>
+ <xs:attributeGroup ref="textdata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textdata.element -->
+ <xs:attributeGroup name="textdata.attlist">
+ <xs:attribute name="encoding"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textdata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textdata.attlist -->
+ <!-- end of textdata.module -->
+ <xs:attributeGroup name="mediaobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A media object that contains callouts. -->
+ <xs:element name="mediaobjectco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imageobjectco"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="imageobjectco"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobjectco.element -->
+ <xs:attributeGroup name="mediaobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobjectco.attlist -->
+ <!-- end of mediaobjectco.module -->
+ <xs:attributeGroup name="imageobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an image object with callouts. -->
+ <xs:element name="imageobjectco" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="imageobject"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobjectco.element -->
+ <xs:attributeGroup name="imageobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobjectco.attlist -->
+ <!-- end of imageobjectco.module -->
+ <!-- end of mediaobject.content.module -->
+ <!-- Equations ........................ -->
+ <!-- This PE provides a mechanism for replacing equation content, -->
+ <!-- perhaps adding a new or different model (e.g., MathML) -->
+ <xs:group name="equation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="inlineequation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="inlinemediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="equation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation. -->
+ <xs:element name="equation" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element ref="informalequation"/>
+ <xs:group ref="equation.content"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="equation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of equation.element -->
+ <xs:attributeGroup name="equation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="equation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of equation.attlist -->
+ <!-- end of equation.module -->
+ <xs:attributeGroup name="informalequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation without a title. -->
+ <xs:element name="informalequation" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="equation.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalequation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalequation.element -->
+ <xs:attributeGroup name="informalequation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalequation.attlist -->
+ <!-- end of informalequation.module -->
+ <xs:attributeGroup name="inlineequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical equation or expression occurring inline. -->
+ <xs:element name="inlineequation" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="inlineequation.content">
+ <xs:attributeGroup ref="inlineequation.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlineequation.element -->
+ <xs:attributeGroup name="inlineequation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlineequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlineequation.attlist -->
+ <!-- end of inlineequation.module -->
+ <xs:attributeGroup name="alt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text representation for a graphical element. -->
+ <xs:element name="alt">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="alt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of alt.element -->
+ <xs:attributeGroup name="alt.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="alt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of alt.attlist -->
+ <!-- end of alt.module -->
+ <xs:attributeGroup name="mathphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup. -->
+ <xs:element name="mathphrase">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="mathphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mathphrase.element -->
+ <xs:attributeGroup name="mathphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mathphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mathphrase.attlist -->
+ <!-- end of mathphrase.module -->
+ <!-- Tables ........................... -->
+ <!-- Choose a table model. CALS or OASIS XML Exchange -->
+ <!-- Do we allow the HTML table model as well? -->
+ <!-- ====================================================== -->
+ <!--
+ xhtmltbl.mod defines HTML tables and sets parameter
+ entities so that, when the CALS table module is read,
+ we end up allowing any table to be CALS or HTML.
+ i.e. This include must come first!
+ -->
+ <!-- ====================================================== -->
+ <!-- end of allow.html.tables -->
+ <!-- Add label and role attributes to table and informaltable -->
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <!-- Content model for Table. -->
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <!-- Reference CALS Table Model -->
+ <!-- end of table.module -->
+ <!--
+ Note that InformalTable is dependent on some of the entity
+ declarations that customize Table.
+ -->
+ <!-- the following entity may have been declared by the XHTML table module -->
+ <!-- doc:A table without a title. -->
+ <xs:element name="informaltable" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="informal.tbl.table.mdl"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informaltable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informaltable.element -->
+ <!--
+ Frame, Colsep, and Rowsep must be repeated because
+ they are not in entities in the table module.
+ -->
+ <!--
+ includes TabStyle, ToCentry, ShortEntry,
+ Orient, PgWide
+ -->
+ <!-- includes Label -->
+ <!-- includes common attributes -->
+ <xs:attributeGroup name="informaltable.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno.attvals"/>
+ <xs:attribute name="rowsep" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="common.table.attribs"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ </xs:attributeGroup>
+ <!-- end of informaltable.attlist -->
+ <!-- end of informaltable.module -->
+ <xs:attributeGroup name="caption.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A caption. -->
+ <xs:element name="caption">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="textobject.mix"/>
+ <xs:attributeGroup ref="caption.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caption.element -->
+ <!-- attrs comes from HTML tables ... -->
+ <!-- common.attrib, but without ID because ID is in attrs -->
+ <xs:attributeGroup name="caption.attlist.content">
+ <xs:attributeGroup ref="caption.role.attrib"/>
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="caption.attlist">
+ <xs:attributeGroup ref="caption.attlist.content"/>
+ </xs:attributeGroup>
+ <!-- end of caption.attlist -->
+ <!-- end of caption.module -->
+ <!-- ...................................................................... -->
+ <!-- Synopses ............................................................. -->
+ <!-- Synopsis ......................... -->
+ <xs:attributeGroup name="synopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="synopsis" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopsis.element -->
+ <xs:attributeGroup name="synopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopsis.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of synopsis.module -->
+ <!-- CmdSynopsis ...................... -->
+ <xs:attributeGroup name="cmdsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a software command. -->
+ <xs:element name="cmdsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="command"/>
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="synopfragment"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="cmdsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cmdsynopsis.element -->
+ <!--
+ Sepchar: Character that should separate command and all
+ top-level arguments; alternate value might be e.g., &Delta;
+ -->
+ <xs:attributeGroup name="cmdsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="sepchar" default=" "/>
+ <xs:attribute name="cmdlength"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cmdsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of cmdsynopsis.attlist -->
+ <!-- end of cmdsynopsis.module -->
+ <xs:attributeGroup name="arg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An argument in a CmdSynopsis. -->
+ <xs:element name="arg">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arg.element -->
+ <!--
+ Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg)
+ -->
+ <!--
+ Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...)
+ -->
+ <xs:attributeGroup name="arg.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of arg.attlist -->
+ <!-- end of arg.module -->
+ <xs:attributeGroup name="group.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A group of elements in a CmdSynopsis. -->
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="group.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of group.element -->
+ <!--
+ Choice: Whether Group must be supplied: Opt (optional to
+ supply, e.g. [g1|g2|g3]; the default), Req (required to
+ supply, e.g. {g1|g2|g3}), Plain (required to supply,
+ e.g. g1|g2|g3), OptMult (can supply zero or more, e.g.
+ [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
+ {{g1|g2|g3}})
+ -->
+ <!--
+ Rep: whether Group is repeatable: Norepeat (e.g. group
+ without ellipsis; the default), or Repeat (e.g. group...)
+ -->
+ <xs:attributeGroup name="group.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="group.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of group.attlist -->
+ <!-- end of group.module -->
+ <!-- Synopsis break -->
+ <xs:attributeGroup name="sbr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An explicit line break in a command synopsis. -->
+ <xs:element name="sbr">
+ <xs:complexType>
+ <xs:attributeGroup ref="sbr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sbr.element -->
+ <xs:attributeGroup name="sbr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sbr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sbr.attlist -->
+ <!-- end of sbr.module -->
+ <xs:attributeGroup name="synopfragmentref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference to a fragment of a command synopsis. -->
+ <xs:element name="synopfragmentref">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="synopfragmentref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragmentref.element -->
+ <!--
+ to SynopFragment of complex synopsis
+ material for separate referencing
+ -->
+ <xs:attributeGroup name="synopfragmentref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopfragmentref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragmentref.attlist -->
+ <!-- end of synopfragmentref.module -->
+ <xs:attributeGroup name="synopfragment.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a CmdSynopsis broken out from the main body of the synopsis. -->
+ <xs:element name="synopfragment">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopfragment.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragment.element -->
+ <xs:attributeGroup name="synopfragment.attlist">
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="synopfragment.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragment.attlist -->
+ <!-- end of synopfragment.module -->
+ <!-- Command (defined in the Inlines section, below) -->
+ <!-- Option (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- end of cmdsynopsis.content.module -->
+ <!-- FuncSynopsis ..................... -->
+ <xs:attributeGroup name="funcsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a function definition. -->
+ <xs:element name="funcsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="funcsynopsisinfo"/>
+ <xs:element ref="funcprototype"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsis.element -->
+ <xs:attributeGroup name="funcsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsis.attlist -->
+ <!-- end of funcsynopsis.module -->
+ <xs:attributeGroup name="funcsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the FuncDefs of a FuncSynopsis. -->
+ <xs:element name="funcsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsisinfo.element -->
+ <xs:attributeGroup name="funcsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsisinfo.attlist -->
+ <!-- end of funcsynopsisinfo.module -->
+ <xs:attributeGroup name="funcprototype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prototype of a function. -->
+ <xs:element name="funcprototype">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element ref="funcdef"/>
+ <xs:choice>
+ <xs:element ref="void"/>
+ <xs:element ref="varargs"/>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="paramdef"/>
+ <xs:element minOccurs="0" ref="varargs"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="funcprototype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcprototype.element -->
+ <xs:attributeGroup name="funcprototype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcprototype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcprototype.attlist -->
+ <!-- end of funcprototype.module -->
+ <xs:attributeGroup name="funcdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A function (subroutine) name and its return type. -->
+ <xs:element name="funcdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="function"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcdef.element -->
+ <xs:attributeGroup name="funcdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcdef.attlist -->
+ <!-- end of funcdef.module -->
+ <xs:attributeGroup name="void.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating that the function in question takes no arguments. -->
+ <xs:element name="void">
+ <xs:complexType>
+ <xs:attributeGroup ref="void.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of void.element -->
+ <xs:attributeGroup name="void.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="void.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of void.attlist -->
+ <!-- end of void.module -->
+ <xs:attributeGroup name="varargs.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating a variable number of arguments. -->
+ <xs:element name="varargs">
+ <xs:complexType>
+ <xs:attributeGroup ref="varargs.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varargs.element -->
+ <xs:attributeGroup name="varargs.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varargs.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varargs.attlist -->
+ <!-- end of varargs.module -->
+ <!--
+ Processing assumes that only one Parameter will appear in a
+ ParamDef, and that FuncParams will be used at most once, for
+ providing information on the "inner parameters" for parameters that
+ are pointers to functions.
+ -->
+ <xs:attributeGroup name="paramdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a function parameter in a programming language. -->
+ <xs:element name="paramdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="initializer"/>
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="parameter"/>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:attributeGroup ref="paramdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of paramdef.element -->
+ <xs:attributeGroup name="paramdef.attlist">
+ <xs:attribute name="choice">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="paramdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of paramdef.attlist -->
+ <!-- end of paramdef.module -->
+ <xs:attributeGroup name="funcparams.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters for a function referenced through a function pointer in a synopsis. -->
+ <xs:element name="funcparams">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="funcparams.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcparams.element -->
+ <xs:attributeGroup name="funcparams.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcparams.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcparams.attlist -->
+ <!-- end of funcparams.module -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- Function (defined in the Inlines section, below) -->
+ <!-- Parameter (defined in the Inlines section, below) -->
+ <!-- end of funcsynopsis.content.module -->
+ <!-- ClassSynopsis ..................... -->
+ <xs:attributeGroup name="classsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a class definition. -->
+ <xs:element name="classsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="ooclass"/>
+ <xs:element ref="oointerface"/>
+ <xs:element ref="ooexception"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="classsynopsisinfo"/>
+ <xs:element ref="fieldsynopsis"/>
+ <xs:element ref="method.synop.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="classsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsis.element -->
+ <xs:attributeGroup name="classsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attribute name="class" default="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="class"/>
+ <xs:enumeration value="interface"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsis.attlist -->
+ <!-- end of classsynopsis.module -->
+ <xs:attributeGroup name="classsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the contents of a ClassSynopsis. -->
+ <xs:element name="classsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="classsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsisinfo.element -->
+ <xs:attributeGroup name="classsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsisinfo.attlist -->
+ <!-- end of classsynopsisinfo.module -->
+ <xs:attributeGroup name="ooclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A class in an object-oriented programming language. -->
+ <xs:element name="ooclass" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="classname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooclass.element -->
+ <xs:attributeGroup name="ooclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooclass.attlist -->
+ <!-- end of ooclass.module -->
+ <xs:attributeGroup name="oointerface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An interface in an object-oriented programming language. -->
+ <xs:element name="oointerface" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="interfacename"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="oointerface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of oointerface.element -->
+ <xs:attributeGroup name="oointerface.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="oointerface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of oointerface.attlist -->
+ <!-- end of oointerface.module -->
+ <xs:attributeGroup name="ooexception.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An exception in an object-oriented programming language. -->
+ <xs:element name="ooexception" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooexception.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooexception.element -->
+ <xs:attributeGroup name="ooexception.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooexception.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooexception.attlist -->
+ <!-- end of ooexception.module -->
+ <xs:attributeGroup name="modifier.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Modifiers in a synopsis. -->
+ <xs:element name="modifier">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="modifier.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modifier.element -->
+ <xs:attributeGroup name="modifier.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modifier.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modifier.attlist -->
+ <!-- end of modifier.module -->
+ <xs:attributeGroup name="interfacename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an interface. -->
+ <xs:element name="interfacename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="interfacename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interfacename.element -->
+ <xs:attributeGroup name="interfacename.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interfacename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interfacename.attlist -->
+ <!-- end of interfacename.module -->
+ <xs:attributeGroup name="exceptionname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an exception. -->
+ <xs:element name="exceptionname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="exceptionname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of exceptionname.element -->
+ <xs:attributeGroup name="exceptionname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="exceptionname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of exceptionname.attlist -->
+ <!-- end of exceptionname.module -->
+ <xs:attributeGroup name="fieldsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a field in a class definition. -->
+ <xs:element name="fieldsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:element ref="varname"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="fieldsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fieldsynopsis.element -->
+ <xs:attributeGroup name="fieldsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fieldsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fieldsynopsis.attlist -->
+ <!-- end of fieldsynopsis.module -->
+ <xs:attributeGroup name="initializer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initializer for a FieldSynopsis. -->
+ <xs:element name="initializer">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="initializer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of initializer.element -->
+ <xs:attributeGroup name="initializer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="initializer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of initializer.attlist -->
+ <!-- end of initializer.module -->
+ <xs:attributeGroup name="constructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a constructor. -->
+ <xs:element name="constructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="constructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constructorsynopsis.element -->
+ <xs:attributeGroup name="constructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constructorsynopsis.attlist -->
+ <!-- end of constructorsynopsis.module -->
+ <xs:attributeGroup name="destructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a destructor. -->
+ <xs:element name="destructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="destructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of destructorsynopsis.element -->
+ <xs:attributeGroup name="destructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="destructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of destructorsynopsis.attlist -->
+ <!-- end of destructorsynopsis.module -->
+ <xs:attributeGroup name="methodsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a method. -->
+ <xs:element name="methodsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="type"/>
+ <xs:element ref="void"/>
+ </xs:choice>
+ <xs:element ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodsynopsis.element -->
+ <xs:attributeGroup name="methodsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodsynopsis.attlist -->
+ <!-- end of methodsynopsis.module -->
+ <xs:attributeGroup name="methodname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a method. -->
+ <xs:element name="methodname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="methodname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodname.element -->
+ <xs:attributeGroup name="methodname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodname.attlist -->
+ <!-- end of methodname.module -->
+ <xs:attributeGroup name="methodparam.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters to a method. -->
+ <xs:element name="methodparam">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="parameter"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodparam.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodparam.element -->
+ <xs:attributeGroup name="methodparam.attlist">
+ <xs:attribute name="choice" default="req">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodparam.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodparam.attlist -->
+ <!-- end of methodparam.module -->
+ <!-- end of classsynopsis.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Document information entities and elements ........................... -->
+ <!--
+ The document information elements include some elements that are
+ currently used only in the document hierarchy module. They are
+ defined here so that they will be available for use in customized
+ document hierarchies.
+ -->
+ <!-- .................................. -->
+ <!-- Ackno ............................ -->
+ <xs:attributeGroup name="ackno.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Acknowledgements in an Article. -->
+ <xs:element name="ackno">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="ackno.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ackno.element -->
+ <xs:attributeGroup name="ackno.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ackno.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ackno.attlist -->
+ <!-- end of ackno.module -->
+ <!-- Address .......................... -->
+ <xs:attributeGroup name="address.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A real-world address, generally a postal address. -->
+ <xs:element name="address" substitutionGroup="informal.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="street"/>
+ <xs:element ref="pob"/>
+ <xs:element ref="postcode"/>
+ <xs:element ref="city"/>
+ <xs:element ref="state"/>
+ <xs:element ref="country"/>
+ <xs:element ref="phone"/>
+ <xs:element ref="fax"/>
+ <xs:element ref="email"/>
+ <xs:element ref="otheraddr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="address.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of address.element -->
+ <xs:attributeGroup name="address.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="address.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of address.attlist -->
+ <!-- end of address.module -->
+ <xs:attributeGroup name="street.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A street address in an address. -->
+ <xs:element name="street">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="street.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of street.element -->
+ <xs:attributeGroup name="street.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="street.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of street.attlist -->
+ <!-- end of street.module -->
+ <xs:attributeGroup name="pob.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A post office box in an address. -->
+ <xs:element name="pob">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pob.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pob.element -->
+ <xs:attributeGroup name="pob.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pob.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pob.attlist -->
+ <!-- end of pob.module -->
+ <xs:attributeGroup name="postcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A postal code in an address. -->
+ <xs:element name="postcode">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="postcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of postcode.element -->
+ <xs:attributeGroup name="postcode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="postcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of postcode.attlist -->
+ <!-- end of postcode.module -->
+ <xs:attributeGroup name="city.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a city in an address. -->
+ <xs:element name="city">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="city.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of city.element -->
+ <xs:attributeGroup name="city.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="city.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of city.attlist -->
+ <!-- end of city.module -->
+ <xs:attributeGroup name="state.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A state or province in an address. -->
+ <xs:element name="state">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="state.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of state.element -->
+ <xs:attributeGroup name="state.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="state.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of state.attlist -->
+ <!-- end of state.module -->
+ <xs:attributeGroup name="country.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a country. -->
+ <xs:element name="country">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="country.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of country.element -->
+ <xs:attributeGroup name="country.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="country.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of country.attlist -->
+ <!-- end of country.module -->
+ <xs:attributeGroup name="phone.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A telephone number. -->
+ <xs:element name="phone">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="phone.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phone.element -->
+ <xs:attributeGroup name="phone.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phone.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phone.attlist -->
+ <!-- end of phone.module -->
+ <xs:attributeGroup name="fax.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fax number. -->
+ <xs:element name="fax">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="fax.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fax.element -->
+ <xs:attributeGroup name="fax.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fax.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fax.attlist -->
+ <!-- end of fax.module -->
+ <!-- Email (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="otheraddr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Uncategorized information in address. -->
+ <xs:element name="otheraddr">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="otheraddr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of otheraddr.element -->
+ <xs:attributeGroup name="otheraddr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="otheraddr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of otheraddr.attlist -->
+ <!-- end of otheraddr.module -->
+ <!-- end of address.content.module -->
+ <!-- Affiliation ...................... -->
+ <xs:attributeGroup name="affiliation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The institutional affiliation of an individual. -->
+ <xs:element name="affiliation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortaffil"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="jobtitle"/>
+ <xs:element minOccurs="0" ref="orgname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="orgdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="affiliation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of affiliation.element -->
+ <xs:attributeGroup name="affiliation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="affiliation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of affiliation.attlist -->
+ <!-- end of affiliation.module -->
+ <xs:attributeGroup name="shortaffil.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A brief description of an affiliation. -->
+ <xs:element name="shortaffil">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="shortaffil.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortaffil.element -->
+ <xs:attributeGroup name="shortaffil.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortaffil.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortaffil.attlist -->
+ <!-- end of shortaffil.module -->
+ <xs:attributeGroup name="jobtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an individual in an organization. -->
+ <xs:element name="jobtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="jobtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of jobtitle.element -->
+ <xs:attributeGroup name="jobtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="jobtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of jobtitle.attlist -->
+ <!-- end of jobtitle.module -->
+ <!-- OrgName (defined elsewhere in this section) -->
+ <xs:attributeGroup name="orgdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division of an organization. -->
+ <xs:element name="orgdiv">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgdiv.element -->
+ <xs:attributeGroup name="orgdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orgdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgdiv.attlist -->
+ <!-- end of orgdiv.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of affiliation.content.module -->
+ <!-- ArtPageNums ...................... -->
+ <xs:attributeGroup name="artpagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The page numbers of an article as published. -->
+ <xs:element name="artpagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="artpagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of artpagenums.element -->
+ <xs:attributeGroup name="artpagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="artpagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of artpagenums.attlist -->
+ <!-- end of artpagenums.module -->
+ <!-- PersonName -->
+ <xs:attributeGroup name="personname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The personal name of an individual. -->
+ <xs:element name="personname" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ </xs:choice>
+ <xs:attributeGroup ref="personname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personname.element -->
+ <xs:attributeGroup name="personname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personname.attlist -->
+ <!-- end of personname.module -->
+ <!-- Author ........................... -->
+ <xs:attributeGroup name="author.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an individual author. -->
+ <xs:element name="author" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="author.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of author.element -->
+ <xs:attributeGroup name="author.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="author.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of author.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of author.module -->
+ <!-- AuthorGroup ...................... -->
+ <xs:attributeGroup name="authorgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Wrapper for author information when a document has multiple authors or collabarators. -->
+ <xs:element name="authorgroup">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="othercredit"/>
+ </xs:choice>
+ <xs:attributeGroup ref="authorgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorgroup.element -->
+ <xs:attributeGroup name="authorgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorgroup.attlist -->
+ <!-- end of authorgroup.module -->
+ <!-- Author (defined elsewhere in this section) -->
+ <!-- Editor (defined elsewhere in this section) -->
+ <xs:attributeGroup name="collab.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Identifies a collaborator. -->
+ <xs:element name="collab">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="collabname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="affiliation"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="collab.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collab.element -->
+ <xs:attributeGroup name="collab.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collab.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collab.attlist -->
+ <!-- end of collab.module -->
+ <xs:attributeGroup name="collabname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a collaborator. -->
+ <xs:element name="collabname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="collabname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collabname.element -->
+ <xs:attributeGroup name="collabname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collabname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collabname.attlist -->
+ <!-- end of collabname.module -->
+ <!-- Affiliation (defined elsewhere in this section) -->
+ <!-- end of collab.content.module -->
+ <!-- CorpAuthor (defined elsewhere in this section) -->
+ <!-- OtherCredit (defined elsewhere in this section) -->
+ <!-- end of authorgroup.content.module -->
+ <!-- AuthorInitials ................... -->
+ <xs:attributeGroup name="authorinitials.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initials or other short identifier for an author. -->
+ <xs:element name="authorinitials" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="authorinitials.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorinitials.element -->
+ <xs:attributeGroup name="authorinitials.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorinitials.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorinitials.attlist -->
+ <!-- end of authorinitials.module -->
+ <!-- ConfGroup ........................ -->
+ <xs:attributeGroup name="confgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for document meta-information about a conference. -->
+ <xs:element name="confgroup">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="confdates"/>
+ <xs:element ref="conftitle"/>
+ <xs:element ref="confnum"/>
+ <xs:element ref="address"/>
+ <xs:element ref="confsponsor"/>
+ </xs:choice>
+ <xs:attributeGroup ref="confgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confgroup.element -->
+ <xs:attributeGroup name="confgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confgroup.attlist -->
+ <!-- end of confgroup.module -->
+ <xs:attributeGroup name="confdates.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The dates of a conference for which a document was written. -->
+ <xs:element name="confdates">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confdates.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confdates.element -->
+ <xs:attributeGroup name="confdates.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confdates.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confdates.attlist -->
+ <!-- end of confdates.module -->
+ <xs:attributeGroup name="conftitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a conference for which a document was written. -->
+ <xs:element name="conftitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="conftitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of conftitle.element -->
+ <xs:attributeGroup name="conftitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="conftitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of conftitle.attlist -->
+ <!-- end of conftitle.module -->
+ <xs:attributeGroup name="confnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier, frequently numerical, associated with a conference for which a document was written. -->
+ <xs:element name="confnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confnum.element -->
+ <xs:attributeGroup name="confnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confnum.attlist -->
+ <!-- end of confnum.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <xs:attributeGroup name="confsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a conference for which a document was written. -->
+ <xs:element name="confsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confsponsor.element -->
+ <xs:attributeGroup name="confsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confsponsor.attlist -->
+ <!-- end of confsponsor.module -->
+ <!-- end of confgroup.content.module -->
+ <!-- ContractNum ...................... -->
+ <xs:attributeGroup name="contractnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The contract number of a document. -->
+ <xs:element name="contractnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractnum.element -->
+ <xs:attributeGroup name="contractnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractnum.attlist -->
+ <!-- end of contractnum.module -->
+ <!-- ContractSponsor .................. -->
+ <xs:attributeGroup name="contractsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a contract. -->
+ <xs:element name="contractsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractsponsor.element -->
+ <xs:attributeGroup name="contractsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractsponsor.attlist -->
+ <!-- end of contractsponsor.module -->
+ <!-- Copyright ........................ -->
+ <xs:attributeGroup name="copyright.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Copyright information about a document. -->
+ <xs:element name="copyright">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="year"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="holder"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="copyright.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of copyright.element -->
+ <xs:attributeGroup name="copyright.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="copyright.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of copyright.attlist -->
+ <!-- end of copyright.module -->
+ <xs:attributeGroup name="year.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The year of publication of a document. -->
+ <xs:element name="year">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="year.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of year.element -->
+ <xs:attributeGroup name="year.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="year.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of year.attlist -->
+ <!-- end of year.module -->
+ <xs:attributeGroup name="holder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the individual or organization that holds a copyright. -->
+ <xs:element name="holder">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="holder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of holder.element -->
+ <xs:attributeGroup name="holder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="holder.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of holder.attlist -->
+ <!-- end of holder.module -->
+ <!-- end of copyright.content.module -->
+ <!-- CorpAuthor ....................... -->
+ <xs:attributeGroup name="corpauthor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporate author, as opposed to an individual. -->
+ <xs:element name="corpauthor" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpauthor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpauthor.element -->
+ <xs:attributeGroup name="corpauthor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpauthor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpauthor.attlist -->
+ <!-- end of corpauthor.module -->
+ <!-- CorpCredit ...................... -->
+ <xs:attributeGroup name="corpcredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporation or organization credited in a document. -->
+ <xs:element name="corpcredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpcredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpcredit.element -->
+ <xs:attributeGroup name="corpcredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpcredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpcredit.attlist -->
+ <!-- end of corpcredit.module -->
+ <!-- CorpName ......................... -->
+ <!-- doc:The name of a corporation. -->
+ <xs:element name="corpname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpname.element -->
+ <xs:attributeGroup name="corpname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="corpname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpname.attlist -->
+ <!-- end of corpname.module -->
+ <!-- Date ............................. -->
+ <xs:attributeGroup name="date.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication or revision of a document. -->
+ <xs:element name="date">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="date.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of date.element -->
+ <xs:attributeGroup name="date.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="date.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of date.attlist -->
+ <!-- end of date.module -->
+ <!-- Edition .......................... -->
+ <xs:attributeGroup name="edition.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name or number of an edition of a document. -->
+ <xs:element name="edition">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="edition.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of edition.element -->
+ <xs:attributeGroup name="edition.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="edition.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of edition.attlist -->
+ <!-- end of edition.module -->
+ <!-- Editor ........................... -->
+ <xs:attributeGroup name="editor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the editor of a document. -->
+ <xs:element name="editor">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="editor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of editor.element -->
+ <xs:attributeGroup name="editor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="editor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of editor.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of editor.module -->
+ <!-- ISBN ............................. -->
+ <xs:attributeGroup name="isbn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Book Number of a document. -->
+ <xs:element name="isbn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="isbn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of isbn.element -->
+ <xs:attributeGroup name="isbn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="isbn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of isbn.attlist -->
+ <!-- end of isbn.module -->
+ <!-- ISSN ............................. -->
+ <xs:attributeGroup name="issn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Serial Number of a periodical. -->
+ <xs:element name="issn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issn.element -->
+ <xs:attributeGroup name="issn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issn.attlist -->
+ <!-- end of issn.module -->
+ <!-- BiblioId ................. -->
+ <xs:attributeGroup name="biblio.class.attrib">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="uri"/>
+ <xs:enumeration value="doi"/>
+ <xs:enumeration value="isbn"/>
+ <xs:enumeration value="isrn"/>
+ <xs:enumeration value="issn"/>
+ <xs:enumeration value="libraryofcongress"/>
+ <xs:enumeration value="pubnumber"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="biblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier for a document. -->
+ <xs:element name="biblioid">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="biblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioid.element -->
+ <xs:attributeGroup name="biblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioid.attlist -->
+ <!-- end of biblioid.module -->
+ <!-- CiteBiblioId ................. -->
+ <xs:attributeGroup name="citebiblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation of a bibliographic identifier. -->
+ <xs:element name="citebiblioid" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="citebiblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citebiblioid.element -->
+ <xs:attributeGroup name="citebiblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citebiblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citebiblioid.attlist -->
+ <!-- end of citebiblioid.module -->
+ <!-- BiblioSource ................. -->
+ <xs:attributeGroup name="bibliosource.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a document. -->
+ <xs:element name="bibliosource">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliosource.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliosource.element -->
+ <xs:attributeGroup name="bibliosource.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliosource.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliosource.attlist -->
+ <!-- end of bibliosource.module -->
+ <!-- BiblioRelation ................. -->
+ <xs:attributeGroup name="bibliorelation.type.attrib">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="isversionof"/>
+ <xs:enumeration value="hasversion"/>
+ <xs:enumeration value="isreplacedby"/>
+ <xs:enumeration value="replaces"/>
+ <xs:enumeration value="isrequiredby"/>
+ <xs:enumeration value="requires"/>
+ <xs:enumeration value="ispartof"/>
+ <xs:enumeration value="haspart"/>
+ <xs:enumeration value="isreferencedby"/>
+ <xs:enumeration value="references"/>
+ <xs:enumeration value="isformatof"/>
+ <xs:enumeration value="hasformat"/>
+ <xs:enumeration value="othertype"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertype"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="bibliorelation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The relationship of a document to another. -->
+ <xs:element name="bibliorelation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliorelation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliorelation.element -->
+ <xs:attributeGroup name="bibliorelation.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.type.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliorelation.attlist -->
+ <!-- end of bibliorelation.module -->
+ <!-- BiblioCoverage ................. -->
+ <xs:attributeGroup name="bibliocoverage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The spatial or temporal coverage of a document. -->
+ <xs:element name="bibliocoverage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliocoverage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliocoverage.element -->
+ <xs:attributeGroup name="bibliocoverage.attlist">
+ <xs:attribute name="spatial">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmipoint"/>
+ <xs:enumeration value="iso3166"/>
+ <xs:enumeration value="dcmibox"/>
+ <xs:enumeration value="tgn"/>
+ <xs:enumeration value="otherspatial"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherspatial"/>
+ <xs:attribute name="temporal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmiperiod"/>
+ <xs:enumeration value="w3c-dtf"/>
+ <xs:enumeration value="othertemporal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertemporal"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliocoverage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliocoverage.attlist -->
+ <!-- end of bibliocoverage.module -->
+ <!-- InvPartNumber .................... -->
+ <xs:attributeGroup name="invpartnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inventory part number. -->
+ <xs:element name="invpartnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="invpartnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of invpartnumber.element -->
+ <xs:attributeGroup name="invpartnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="invpartnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of invpartnumber.attlist -->
+ <!-- end of invpartnumber.module -->
+ <!-- IssueNum ......................... -->
+ <xs:attributeGroup name="issuenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The number of an issue of a journal. -->
+ <xs:element name="issuenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issuenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issuenum.element -->
+ <xs:attributeGroup name="issuenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issuenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issuenum.attlist -->
+ <!-- end of issuenum.module -->
+ <!-- LegalNotice ...................... -->
+ <xs:attributeGroup name="legalnotice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A statement of legal obligations or requirements. -->
+ <xs:element name="legalnotice">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="legalnotice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of legalnotice.element -->
+ <xs:attributeGroup name="legalnotice.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="legalnotice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of legalnotice.attlist -->
+ <!-- end of legalnotice.module -->
+ <!-- ModeSpec ......................... -->
+ <xs:attributeGroup name="modespec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Application-specific information necessary for the completion of an OLink. -->
+ <xs:element name="modespec" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="modespec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modespec.element -->
+ <!--
+ Application: Type of action required for completion
+ of the links to which the ModeSpec is relevant (e.g.,
+ retrieval query)
+ -->
+ <xs:attributeGroup name="modespec.attlist">
+ <xs:attribute name="application" type="notation.class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modespec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modespec.attlist -->
+ <!-- end of modespec.module -->
+ <!-- OrgName .......................... -->
+ <xs:attributeGroup name="orgname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an organization other than a corporation. -->
+ <xs:element name="orgname" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgname.element -->
+ <xs:attributeGroup name="orgname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="corporation"/>
+ <xs:enumeration value="nonprofit"/>
+ <xs:enumeration value="consortium"/>
+ <xs:enumeration value="informal"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ <xs:attributeGroup ref="orgname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgname.attlist -->
+ <!-- end of orgname.module -->
+ <!-- OtherCredit ...................... -->
+ <xs:attributeGroup name="othercredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A person or entity, other than an author or editor, credited in a document. -->
+ <xs:element name="othercredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="othercredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othercredit.element -->
+ <xs:attributeGroup name="othercredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othercredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othercredit.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of othercredit.module -->
+ <!-- PageNums ......................... -->
+ <xs:attributeGroup name="pagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The numbers of the pages in a book, for use in a bibliographic entry. -->
+ <xs:element name="pagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pagenums.element -->
+ <xs:attributeGroup name="pagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pagenums.attlist -->
+ <!-- end of pagenums.module -->
+ <!-- Personal identity elements ....... -->
+ <!--
+ These elements are used only within Author, Editor, and
+ OtherCredit.
+ -->
+ <xs:attributeGroup name="contrib.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the contributions made to a document by a credited source. -->
+ <xs:element name="contrib">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contrib.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contrib.element -->
+ <xs:attributeGroup name="contrib.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contrib.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contrib.attlist -->
+ <!-- end of contrib.module -->
+ <xs:attributeGroup name="firstname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first name of a person. -->
+ <xs:element name="firstname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="firstname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstname.element -->
+ <xs:attributeGroup name="firstname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstname.attlist -->
+ <!-- end of firstname.module -->
+ <xs:attributeGroup name="honorific.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a person. -->
+ <xs:element name="honorific">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="honorific.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of honorific.element -->
+ <xs:attributeGroup name="honorific.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="honorific.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of honorific.attlist -->
+ <!-- end of honorific.module -->
+ <xs:attributeGroup name="lineage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The portion of a person's name indicating a relationship to ancestors. -->
+ <xs:element name="lineage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="lineage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineage.element -->
+ <xs:attributeGroup name="lineage.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineage.attlist -->
+ <!-- end of lineage.module -->
+ <xs:attributeGroup name="othername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of a persons name that is not a first name, surname, or lineage. -->
+ <xs:element name="othername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="othername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othername.element -->
+ <xs:attributeGroup name="othername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othername.attlist -->
+ <!-- end of othername.module -->
+ <xs:attributeGroup name="surname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A family name; in western cultures the last name. -->
+ <xs:element name="surname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="surname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of surname.element -->
+ <xs:attributeGroup name="surname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="surname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of surname.attlist -->
+ <!-- end of surname.module -->
+ <!-- end of person.ident.module -->
+ <!-- PrintHistory ..................... -->
+ <xs:attributeGroup name="printhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The printing history of a document. -->
+ <xs:element name="printhistory">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="printhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of printhistory.element -->
+ <xs:attributeGroup name="printhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="printhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of printhistory.attlist -->
+ <!-- end of printhistory.module -->
+ <!-- ProductName ...................... -->
+ <xs:attributeGroup name="productname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The formal name of a product. -->
+ <xs:element name="productname" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="productname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productname.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="productname.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productname.attlist -->
+ <!-- end of productname.module -->
+ <!-- ProductNumber .................... -->
+ <xs:attributeGroup name="productnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a product. -->
+ <xs:element name="productnumber" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="productnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productnumber.element -->
+ <xs:attributeGroup name="productnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productnumber.attlist -->
+ <!-- end of productnumber.module -->
+ <!-- PubDate .......................... -->
+ <xs:attributeGroup name="pubdate.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication of a document. -->
+ <xs:element name="pubdate">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubdate.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubdate.element -->
+ <xs:attributeGroup name="pubdate.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubdate.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubdate.attlist -->
+ <!-- end of pubdate.module -->
+ <!-- Publisher ........................ -->
+ <xs:attributeGroup name="publisher.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The publisher of a document. -->
+ <xs:element name="publisher">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="publishername"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="publisher.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publisher.element -->
+ <xs:attributeGroup name="publisher.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publisher.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publisher.attlist -->
+ <!-- end of publisher.module -->
+ <xs:attributeGroup name="publishername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the publisher of a document. -->
+ <xs:element name="publishername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="publishername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publishername.element -->
+ <xs:attributeGroup name="publishername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publishername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publishername.attlist -->
+ <!-- end of publishername.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of publisher.content.module -->
+ <!-- PubsNumber ....................... -->
+ <xs:attributeGroup name="pubsnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number. -->
+ <xs:element name="pubsnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubsnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubsnumber.element -->
+ <xs:attributeGroup name="pubsnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubsnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubsnumber.attlist -->
+ <!-- end of pubsnumber.module -->
+ <!-- ReleaseInfo ...................... -->
+ <xs:attributeGroup name="releaseinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a particular release of a document. -->
+ <xs:element name="releaseinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="releaseinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of releaseinfo.element -->
+ <xs:attributeGroup name="releaseinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="releaseinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of releaseinfo.attlist -->
+ <!-- end of releaseinfo.module -->
+ <!-- RevHistory ....................... -->
+ <xs:attributeGroup name="revhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A history of the revisions to a document. -->
+ <xs:element name="revhistory" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="revision"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="revhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revhistory.element -->
+ <xs:attributeGroup name="revhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revhistory.attlist -->
+ <!-- end of revhistory.module -->
+ <xs:attributeGroup name="revision.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry describing a single revision in the history of the revisions to a document. -->
+ <xs:element name="revision">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="revnumber"/>
+ <xs:element ref="date"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="authorinitials"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element ref="revremark"/>
+ <xs:element ref="revdescription"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="revision.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revision.element -->
+ <xs:attributeGroup name="revision.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revision.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revision.attlist -->
+ <!-- end of revision.module -->
+ <xs:attributeGroup name="revnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A document revision number. -->
+ <xs:element name="revnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revnumber.element -->
+ <xs:attributeGroup name="revnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revnumber.attlist -->
+ <!-- end of revnumber.module -->
+ <!-- Date (defined elsewhere in this section) -->
+ <!-- AuthorInitials (defined elsewhere in this section) -->
+ <xs:attributeGroup name="revremark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of a revision to a document. -->
+ <xs:element name="revremark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revremark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revremark.element -->
+ <xs:attributeGroup name="revremark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revremark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revremark.attlist -->
+ <!-- end of revremark.module -->
+ <xs:attributeGroup name="revdescription.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A extended description of a revision to a document. -->
+ <xs:element name="revdescription">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="revdescription.mix"/>
+ <xs:attributeGroup ref="revdescription.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revdescription.element -->
+ <xs:attributeGroup name="revdescription.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revdescription.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revdescription.attlist -->
+ <!-- end of revdescription.module -->
+ <!-- end of revhistory.content.module -->
+ <!-- SeriesVolNums .................... -->
+ <xs:attributeGroup name="seriesvolnums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Numbers of the volumes in a series of books. -->
+ <xs:element name="seriesvolnums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="seriesvolnums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seriesvolnums.element -->
+ <xs:attributeGroup name="seriesvolnums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seriesvolnums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seriesvolnums.attlist -->
+ <!-- end of seriesvolnums.module -->
+ <!-- VolumeNum ........................ -->
+ <xs:attributeGroup name="volumenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The volume number of a document in a set (as of books in a set or articles in a journal). -->
+ <xs:element name="volumenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="volumenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of volumenum.element -->
+ <xs:attributeGroup name="volumenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="volumenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of volumenum.attlist -->
+ <!-- end of volumenum.module -->
+ <!-- .................................. -->
+ <!-- end of docinfo.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Inline, link, and ubiquitous elements ................................ -->
+ <!-- Technical and computer terms ......................................... -->
+ <xs:attributeGroup name="accel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphical user interface (GUI) keyboard shortcut. -->
+ <xs:element name="accel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="accel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of accel.element -->
+ <xs:attributeGroup name="accel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="accel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of accel.attlist -->
+ <!-- end of accel.module -->
+ <xs:attributeGroup name="action.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A response to a user event. -->
+ <xs:element name="action" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="action.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of action.element -->
+ <xs:attributeGroup name="action.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="action.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of action.attlist -->
+ <!-- end of action.module -->
+ <xs:attributeGroup name="application.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a software program. -->
+ <xs:element name="application" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="application.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of application.element -->
+ <xs:attributeGroup name="application.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="hardware"/>
+ <xs:enumeration value="software"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="application.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of application.attlist -->
+ <!-- end of application.module -->
+ <xs:attributeGroup name="classname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a class, in the object-oriented programming sense. -->
+ <xs:element name="classname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="classname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classname.element -->
+ <xs:attributeGroup name="classname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classname.attlist -->
+ <!-- end of classname.module -->
+ <xs:attributeGroup name="package.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A package. -->
+ <xs:element name="package" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="package.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of package.element -->
+ <xs:attributeGroup name="package.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="package.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of package.attlist -->
+ <!-- end of package.module -->
+ <!--
+ CO is a callout area of the LineColumn unit type (a single character
+ position); the position is directly indicated by the location of CO.
+ -->
+ <xs:attributeGroup name="co.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a callout embedded in text. -->
+ <xs:element name="co">
+ <xs:complexType>
+ <xs:attributeGroup ref="co.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of co.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="co.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="co.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of co.attlist -->
+ <!-- end of co.module -->
+ <!-- COREF is a reference to a CO -->
+ <xs:attributeGroup name="coref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a co. -->
+ <xs:element name="coref">
+ <xs:complexType>
+ <xs:attributeGroup ref="coref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of coref.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="coref.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="coref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of coref.attlist -->
+ <!-- end of coref.module -->
+ <xs:attributeGroup name="command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an executable program or other software command. -->
+ <xs:element name="command" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of command.element -->
+ <xs:attributeGroup name="command.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="command.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of command.attlist -->
+ <!-- end of command.module -->
+ <xs:attributeGroup name="computeroutput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data, generally text, displayed or presented by a computer. -->
+ <xs:element name="computeroutput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="computeroutput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of computeroutput.element -->
+ <xs:attributeGroup name="computeroutput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="computeroutput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of computeroutput.attlist -->
+ <!-- end of computeroutput.module -->
+ <xs:attributeGroup name="database.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a database, or part of a database. -->
+ <xs:element name="database" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="database.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of database.element -->
+ <!-- Class: Type of database the element names; no default -->
+ <xs:attributeGroup name="database.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="name"/>
+ <xs:enumeration value="table"/>
+ <xs:enumeration value="field"/>
+ <xs:enumeration value="key1"/>
+ <xs:enumeration value="key2"/>
+ <xs:enumeration value="record"/>
+ <xs:enumeration value="index"/>
+ <xs:enumeration value="view"/>
+ <xs:enumeration value="primarykey"/>
+ <xs:enumeration value="secondarykey"/>
+ <xs:enumeration value="foreignkey"/>
+ <xs:enumeration value="altkey"/>
+ <xs:enumeration value="procedure"/>
+ <xs:enumeration value="datatype"/>
+ <xs:enumeration value="constraint"/>
+ <xs:enumeration value="rule"/>
+ <xs:enumeration value="user"/>
+ <xs:enumeration value="group"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="database.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of database.attlist -->
+ <!-- end of database.module -->
+ <xs:attributeGroup name="email.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An email address. -->
+ <xs:element name="email" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="email.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of email.element -->
+ <xs:attributeGroup name="email.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="email.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of email.attlist -->
+ <!-- end of email.module -->
+ <xs:attributeGroup name="envar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A software environment variable. -->
+ <xs:element name="envar" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="envar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of envar.element -->
+ <xs:attributeGroup name="envar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="envar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of envar.attlist -->
+ <!-- end of envar.module -->
+ <xs:attributeGroup name="errorcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error code. -->
+ <xs:element name="errorcode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorcode.element -->
+ <xs:attributeGroup name="errorcode.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorcode.attlist -->
+ <!-- end of errorcode.module -->
+ <xs:attributeGroup name="errorname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error name. -->
+ <xs:element name="errorname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorname.element -->
+ <xs:attributeGroup name="errorname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorname.attlist -->
+ <!-- end of errorname.module -->
+ <xs:attributeGroup name="errortext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error message.. -->
+ <xs:element name="errortext" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortext.element -->
+ <xs:attributeGroup name="errortext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortext.attlist -->
+ <!-- end of errortext.module -->
+ <xs:attributeGroup name="errortype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of an error message. -->
+ <xs:element name="errortype" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortype.element -->
+ <xs:attributeGroup name="errortype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortype.attlist -->
+ <!-- end of errortype.module -->
+ <xs:attributeGroup name="filename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a file. -->
+ <xs:element name="filename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="filename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of filename.element -->
+ <!-- Class: Type of filename the element names; no default -->
+ <!--
+ Path: Search path (possibly system-specific) in which
+ file can be found
+ -->
+ <xs:attributeGroup name="filename.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="headerfile"/>
+ <xs:enumeration value="partition"/>
+ <xs:enumeration value="devicefile"/>
+ <xs:enumeration value="libraryfile"/>
+ <xs:enumeration value="directory"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="symlink"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="path"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="filename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of filename.attlist -->
+ <!-- end of filename.module -->
+ <xs:attributeGroup name="function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a function or subroutine, as in a programming language. -->
+ <xs:element name="function" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of function.element -->
+ <xs:attributeGroup name="function.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="function.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of function.attlist -->
+ <!-- end of function.module -->
+ <xs:attributeGroup name="guibutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text on a button in a GUI. -->
+ <xs:element name="guibutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guibutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guibutton.element -->
+ <xs:attributeGroup name="guibutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guibutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guibutton.attlist -->
+ <!-- end of guibutton.module -->
+ <xs:attributeGroup name="guiicon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Graphic and/or text appearing as a icon in a GUI. -->
+ <xs:element name="guiicon" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guiicon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guiicon.element -->
+ <xs:attributeGroup name="guiicon.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guiicon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guiicon.attlist -->
+ <!-- end of guiicon.module -->
+ <xs:attributeGroup name="guilabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of a label in a GUI. -->
+ <xs:element name="guilabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guilabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guilabel.element -->
+ <xs:attributeGroup name="guilabel.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guilabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guilabel.attlist -->
+ <!-- end of guilabel.module -->
+ <xs:attributeGroup name="guimenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a menu in a GUI. -->
+ <xs:element name="guimenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenu.element -->
+ <xs:attributeGroup name="guimenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenu.attlist -->
+ <!-- end of guimenu.module -->
+ <xs:attributeGroup name="guimenuitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a terminal menu item in a GUI. -->
+ <xs:element name="guimenuitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenuitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenuitem.element -->
+ <xs:attributeGroup name="guimenuitem.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenuitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenuitem.attlist -->
+ <!-- end of guimenuitem.module -->
+ <xs:attributeGroup name="guisubmenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a submenu in a GUI. -->
+ <xs:element name="guisubmenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guisubmenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guisubmenu.element -->
+ <xs:attributeGroup name="guisubmenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guisubmenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guisubmenu.attlist -->
+ <!-- end of guisubmenu.module -->
+ <xs:attributeGroup name="hardware.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A physical part of a computer system. -->
+ <xs:element name="hardware" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="hardware.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of hardware.element -->
+ <xs:attributeGroup name="hardware.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="hardware.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of hardware.attlist -->
+ <!-- end of hardware.module -->
+ <xs:attributeGroup name="interface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a GUI. -->
+ <xs:element name="interface" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ </xs:choice>
+ <xs:attributeGroup ref="interface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interface.element -->
+ <!-- Class: Type of the Interface item; no default -->
+ <xs:attributeGroup name="interface.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interface.attlist -->
+ <!-- end of interface.module -->
+ <xs:attributeGroup name="keycap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text printed on a key on a keyboard. -->
+ <xs:element name="keycap" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="keycap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycap.element -->
+ <xs:attributeGroup name="keycap.attlist">
+ <xs:attribute name="function">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="alt"/>
+ <xs:enumeration value="control"/>
+ <xs:enumeration value="shift"/>
+ <xs:enumeration value="meta"/>
+ <xs:enumeration value="escape"/>
+ <xs:enumeration value="enter"/>
+ <xs:enumeration value="tab"/>
+ <xs:enumeration value="backspace"/>
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="space"/>
+ <xs:enumeration value="delete"/>
+ <xs:enumeration value="insert"/>
+ <xs:enumeration value="up"/>
+ <xs:enumeration value="down"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="home"/>
+ <xs:enumeration value="end"/>
+ <xs:enumeration value="pageup"/>
+ <xs:enumeration value="pagedown"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherfunction"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycap.attlist -->
+ <!-- end of keycap.module -->
+ <xs:attributeGroup name="keycode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The internal, frequently numeric, identifier for a key on a keyboard. -->
+ <xs:element name="keycode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keycode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycode.element -->
+ <xs:attributeGroup name="keycode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycode.attlist -->
+ <!-- end of keycode.module -->
+ <xs:attributeGroup name="keycombo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A combination of input actions. -->
+ <xs:element name="keycombo" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="keycombo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycombo.element -->
+ <xs:attributeGroup name="keycombo.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycombo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycombo.attlist -->
+ <!-- end of keycombo.module -->
+ <xs:attributeGroup name="keysysm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The symbolic name of a key on a keyboard. -->
+ <xs:element name="keysym" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keysym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keysym.element -->
+ <xs:attributeGroup name="keysym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keysysm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keysym.attlist -->
+ <!-- end of keysym.module -->
+ <xs:attributeGroup name="lineannotation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A comment on a line in a verbatim listing. -->
+ <xs:element name="lineannotation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lineannotation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineannotation.element -->
+ <xs:attributeGroup name="lineannotation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineannotation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineannotation.attlist -->
+ <!-- end of lineannotation.module -->
+ <xs:attributeGroup name="literal.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Inline text that is some literal value. -->
+ <xs:element name="literal" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="literal.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literal.element -->
+ <xs:attributeGroup name="literal.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literal.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literal.attlist -->
+ <!-- end of literal.module -->
+ <xs:attributeGroup name="code.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline code fragment. -->
+ <xs:element name="code" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="code.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of code.element -->
+ <xs:attributeGroup name="code.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="code.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of code.attlist -->
+ <!-- end of code.module -->
+ <xs:attributeGroup name="constant.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A programming or system constant. -->
+ <xs:element name="constant" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="constant.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constant.element -->
+ <xs:attributeGroup name="constant.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constant.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constant.attlist -->
+ <!-- end of constant.module -->
+ <xs:attributeGroup name="varname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a variable. -->
+ <xs:element name="varname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="varname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varname.element -->
+ <xs:attributeGroup name="varname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varname.attlist -->
+ <!-- end of varname.module -->
+ <xs:attributeGroup name="markup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A string of formatting markup in text that is to be represented literally. -->
+ <xs:element name="markup" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="markup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of markup.element -->
+ <xs:attributeGroup name="markup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="markup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of markup.attlist -->
+ <!-- end of markup.module -->
+ <xs:attributeGroup name="medialabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that identifies the physical medium on which some information resides. -->
+ <xs:element name="medialabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="medialabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of medialabel.element -->
+ <!-- Class: Type of medium named by the element; no default -->
+ <xs:attributeGroup name="medialabel.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="cartridge"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="disk"/>
+ <xs:enumeration value="tape"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="medialabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of medialabel.attlist -->
+ <!-- end of medialabel.module -->
+ <xs:attributeGroup name="menuchoice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A selection or series of selections from a menu. -->
+ <xs:element name="menuchoice" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortcut"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="guibutton"/>
+ <xs:element ref="guiicon"/>
+ <xs:element ref="guilabel"/>
+ <xs:element ref="guimenu"/>
+ <xs:element ref="guimenuitem"/>
+ <xs:element ref="guisubmenu"/>
+ <xs:element ref="interface"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="menuchoice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of menuchoice.element -->
+ <xs:attributeGroup name="menuchoice.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="menuchoice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of menuchoice.attlist -->
+ <!-- end of menuchoice.module -->
+ <!-- See also KeyCombo -->
+ <xs:attributeGroup name="shortcut.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A key combination for an action that is also accessible through a menu. -->
+ <xs:element name="shortcut">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="shortcut.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortcut.element -->
+ <xs:attributeGroup name="shortcut.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortcut.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortcut.attlist -->
+ <!-- end of shortcut.module -->
+ <!-- end of menuchoice.content.module -->
+ <xs:attributeGroup name="mousebutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The conventional name of a mouse button. -->
+ <xs:element name="mousebutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="mousebutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mousebutton.element -->
+ <xs:attributeGroup name="mousebutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mousebutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mousebutton.attlist -->
+ <!-- end of mousebutton.module -->
+ <xs:attributeGroup name="msgtext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The actual text of a message component in a message set. -->
+ <xs:element name="msgtext">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="msgtext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgtext.element -->
+ <xs:attributeGroup name="msgtext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgtext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgtext.attlist -->
+ <!-- end of msgtext.module -->
+ <xs:attributeGroup name="option.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An option for a software command. -->
+ <xs:element name="option" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="option.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of option.element -->
+ <xs:attributeGroup name="option.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="option.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of option.attlist -->
+ <!-- end of option.module -->
+ <xs:attributeGroup name="optional.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Optional information. -->
+ <xs:element name="optional" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="optional.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of optional.element -->
+ <xs:attributeGroup name="optional.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="optional.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of optional.attlist -->
+ <!-- end of optional.module -->
+ <xs:attributeGroup name="parameter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A value or a symbolic reference to a value. -->
+ <xs:element name="parameter" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="parameter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of parameter.element -->
+ <!-- Class: Type of the Parameter; no default -->
+ <xs:attributeGroup name="parameter.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="parameter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of parameter.attlist -->
+ <!-- end of parameter.module -->
+ <xs:attributeGroup name="prompt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A character or string indicating the start of an input field in a computer display. -->
+ <xs:element name="prompt" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="prompt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prompt.element -->
+ <xs:attributeGroup name="prompt.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prompt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prompt.attlist -->
+ <!-- end of prompt.module -->
+ <xs:attributeGroup name="property.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of data associated with some part of a computer system. -->
+ <xs:element name="property" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="property.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of property.element -->
+ <xs:attributeGroup name="property.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="property.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of property.attlist -->
+ <!-- end of property.module -->
+ <xs:attributeGroup name="replaceable.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Content that may or must be replaced by the user. -->
+ <xs:element name="replaceable" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="optional"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="replaceable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of replaceable.element -->
+ <!--
+ Class: Type of information the element represents; no
+ default
+ -->
+ <xs:attributeGroup name="replaceable.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="parameter"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="replaceable.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of replaceable.attlist -->
+ <!-- end of replaceable.module -->
+ <xs:attributeGroup name="returnvalue.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The value returned by a function. -->
+ <xs:element name="returnvalue" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="returnvalue.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of returnvalue.element -->
+ <xs:attributeGroup name="returnvalue.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="returnvalue.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of returnvalue.attlist -->
+ <!-- end of returnvalue.module -->
+ <xs:attributeGroup name="sgmltag.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of SGML markup. -->
+ <xs:element name="sgmltag" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="sgmltag.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sgmltag.element -->
+ <!-- Class: Type of SGML construct the element names; no default -->
+ <xs:attributeGroup name="sgmltag.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="attribute"/>
+ <xs:enumeration value="attvalue"/>
+ <xs:enumeration value="element"/>
+ <xs:enumeration value="endtag"/>
+ <xs:enumeration value="emptytag"/>
+ <xs:enumeration value="genentity"/>
+ <xs:enumeration value="numcharref"/>
+ <xs:enumeration value="paramentity"/>
+ <xs:enumeration value="pi"/>
+ <xs:enumeration value="xmlpi"/>
+ <xs:enumeration value="starttag"/>
+ <xs:enumeration value="sgmlcomment"/>
+ <xs:enumeration value="prefix"/>
+ <xs:enumeration value="namespace"/>
+ <xs:enumeration value="localname"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="namespace"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sgmltag.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sgmltag.attlist -->
+ <!-- end of sgmltag.module -->
+ <xs:attributeGroup name="structfield.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A field in a structure (in the programming language sense). -->
+ <xs:element name="structfield" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structfield.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structfield.element -->
+ <xs:attributeGroup name="structfield.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structfield.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structfield.attlist -->
+ <!-- end of structfield.module -->
+ <xs:attributeGroup name="structname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a structure (in the programming language sense). -->
+ <xs:element name="structname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structname.element -->
+ <xs:attributeGroup name="structname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structname.attlist -->
+ <!-- end of structname.module -->
+ <xs:attributeGroup name="symbol.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that is replaced by a value before processing. -->
+ <xs:element name="symbol" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="symbol.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of symbol.element -->
+ <!-- Class: Type of symbol; no default -->
+ <xs:attributeGroup name="symbol.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="symbol.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of symbol.attlist -->
+ <!-- end of symbol.module -->
+ <xs:attributeGroup name="systemitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A system-related item or term. -->
+ <xs:element name="systemitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="acronym"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="systemitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of systemitem.element -->
+ <!-- Class: Type of system item the element names; no default -->
+ <xs:attributeGroup name="systemitem.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="constant"/>
+ <xs:enumeration value="daemon"/>
+ <xs:enumeration value="domainname"/>
+ <xs:enumeration value="etheraddress"/>
+ <xs:enumeration value="event"/>
+ <xs:enumeration value="eventhandler"/>
+ <xs:enumeration value="filesystem"/>
+ <xs:enumeration value="fqdomainname"/>
+ <xs:enumeration value="groupname"/>
+ <xs:enumeration value="ipaddress"/>
+ <xs:enumeration value="library"/>
+ <xs:enumeration value="macro"/>
+ <xs:enumeration value="netmask"/>
+ <xs:enumeration value="newsgroup"/>
+ <xs:enumeration value="osname"/>
+ <xs:enumeration value="protocol"/>
+ <xs:enumeration value="resource"/>
+ <xs:enumeration value="systemname"/>
+ <xs:enumeration value="username"/>
+ <xs:enumeration value="process"/>
+ <xs:enumeration value="server"/>
+ <xs:enumeration value="service"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="systemitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of systemitem.attlist -->
+ <!-- end of systemitem.module -->
+ <xs:attributeGroup name="uri.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A Uniform Resource Identifier. -->
+ <xs:element name="uri" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="uri.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uri.element -->
+ <!-- Type: Type of URI; no default -->
+ <xs:attributeGroup name="uri.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uri.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uri.attlist -->
+ <!-- end of uri.module -->
+ <xs:attributeGroup name="token.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of information. -->
+ <xs:element name="token" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="token.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of token.element -->
+ <xs:attributeGroup name="token.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="token.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of token.attlist -->
+ <!-- end of token.module -->
+ <xs:attributeGroup name="type.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of a value. -->
+ <xs:element name="type" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="type.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of type.element -->
+ <xs:attributeGroup name="type.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="type.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of type.attlist -->
+ <!-- end of type.module -->
+ <xs:attributeGroup name="userinput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data entered by the user. -->
+ <xs:element name="userinput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="userinput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of userinput.element -->
+ <xs:attributeGroup name="userinput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="userinput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of userinput.attlist -->
+ <!-- end of userinput.module -->
+ <xs:attributeGroup name="termdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline definition of a term. -->
+ <xs:element name="termdef" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="termdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of termdef.element -->
+ <xs:attributeGroup name="termdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="termdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of termdef.attlist -->
+ <!-- end of termdef.module -->
+ <!-- General words and phrases ............................................ -->
+ <xs:attributeGroup name="abbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An abbreviation, especially one followed by a period. -->
+ <xs:element name="abbrev" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="abbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abbrev.element -->
+ <xs:attributeGroup name="abbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abbrev.attlist -->
+ <!-- end of abbrev.module -->
+ <xs:attributeGroup name="acronym.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase. -->
+ <xs:element name="acronym" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="acronym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of acronym.element -->
+ <xs:attributeGroup name="acronym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="acronym.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of acronym.attlist -->
+ <!-- end of acronym.module -->
+ <xs:attributeGroup name="citation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline bibliographic reference to another published work. -->
+ <xs:element name="citation" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citation.element -->
+ <xs:attributeGroup name="citation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citation.attlist -->
+ <!-- end of citation.module -->
+ <xs:attributeGroup name="citerefentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation to a reference page. -->
+ <xs:element name="citerefentry" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="citerefentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citerefentry.element -->
+ <xs:attributeGroup name="citerefentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citerefentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citerefentry.attlist -->
+ <!-- end of citerefentry.module -->
+ <xs:attributeGroup name="refentrytitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a reference page. -->
+ <xs:element name="refentrytitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="refentrytitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentrytitle.element -->
+ <xs:attributeGroup name="refentrytitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentrytitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentrytitle.attlist -->
+ <!-- end of refentrytitle.module -->
+ <xs:attributeGroup name="namvolnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference volume number. -->
+ <xs:element name="manvolnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="manvolnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of manvolnum.element -->
+ <xs:attributeGroup name="manvolnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="namvolnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of manvolnum.attlist -->
+ <!-- end of manvolnum.module -->
+ <xs:attributeGroup name="citetitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a cited work. -->
+ <xs:element name="citetitle" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citetitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citetitle.element -->
+ <!-- Pubwork: Genre of published work cited; no default -->
+ <xs:attributeGroup name="citetitle.attlist">
+ <xs:attribute name="pubwork">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="article"/>
+ <xs:enumeration value="book"/>
+ <xs:enumeration value="chapter"/>
+ <xs:enumeration value="part"/>
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="section"/>
+ <xs:enumeration value="journal"/>
+ <xs:enumeration value="series"/>
+ <xs:enumeration value="set"/>
+ <xs:enumeration value="manuscript"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="dvd"/>
+ <xs:enumeration value="wiki"/>
+ <xs:enumeration value="gopher"/>
+ <xs:enumeration value="bbs"/>
+ <xs:enumeration value="emailmessage"/>
+ <xs:enumeration value="webpage"/>
+ <xs:enumeration value="newsposting"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citetitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citetitle.attlist -->
+ <!-- end of citetitle.module -->
+ <xs:attributeGroup name="emphasis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Emphasized text. -->
+ <xs:element name="emphasis" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="emphasis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of emphasis.element -->
+ <xs:attributeGroup name="emphasis.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="emphasis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of emphasis.attlist -->
+ <!-- end of emphasis.module -->
+ <xs:attributeGroup name="foreignphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word or phrase in a language other than the primary language of the document. -->
+ <xs:element name="foreignphrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="foreignphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of foreignphrase.element -->
+ <xs:attributeGroup name="foreignphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="foreignphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of foreignphrase.attlist -->
+ <!-- end of foreignphrase.module -->
+ <xs:attributeGroup name="glossterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary term. -->
+ <xs:element name="glossterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossterm.element -->
+ <!-- to GlossEntry if Glossterm used in text -->
+ <!--
+ BaseForm: Provides the form of GlossTerm to be used
+ for indexing
+ -->
+ <xs:attributeGroup name="glossterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossterm.attlist -->
+ <!-- end of glossterm.module -->
+ <xs:attributeGroup name="firstterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first occurrence of a term. -->
+ <xs:element name="firstterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="firstterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstterm.element -->
+ <!-- to GlossEntry or other explanation -->
+ <xs:attributeGroup name="firstterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstterm.attlist -->
+ <!-- end of firstterm.module -->
+ <xs:attributeGroup name="phrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A span of text. -->
+ <xs:element name="phrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="phrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phrase.element -->
+ <xs:attributeGroup name="phrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phrase.attlist -->
+ <!-- end of phrase.module -->
+ <xs:attributeGroup name="quote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline quotation. -->
+ <xs:element name="quote" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="quote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of quote.element -->
+ <xs:attributeGroup name="quote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="quote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of quote.attlist -->
+ <!-- end of quote.module -->
+ <xs:attributeGroup name="ssscript.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subscript (as in H{^2}O, the molecular formula for water). -->
+ <xs:element name="subscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="subscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subscript.element -->
+ <xs:attributeGroup name="subscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subscript.attlist -->
+ <!-- doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself). -->
+ <xs:element name="superscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="superscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of superscript.element -->
+ <xs:attributeGroup name="superscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of superscript.attlist -->
+ <!-- end of ssscript.module -->
+ <xs:attributeGroup name="trademark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A trademark. -->
+ <xs:element name="trademark" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="trademark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of trademark.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="trademark.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="trademark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of trademark.attlist -->
+ <!-- end of trademark.module -->
+ <xs:attributeGroup name="wordasword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word meant specifically as a word and not representing anything else. -->
+ <xs:element name="wordasword" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="wordasword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of wordasword.element -->
+ <xs:attributeGroup name="wordasword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="wordasword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of wordasword.attlist -->
+ <!-- end of wordasword.module -->
+ <!-- Links and cross-references ........................................... -->
+ <xs:attributeGroup name="link.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A hypertext link. -->
+ <xs:element name="link" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="link.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of link.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="link.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="link.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of link.attlist -->
+ <!-- end of link.module -->
+ <xs:attributeGroup name="olink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target indirectly, through an entity. -->
+ <xs:element name="olink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="olink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of olink.element -->
+ <!-- TargetDocEnt: Name of an entity to be the target of the link -->
+ <!--
+ LinkMode: ID of a ModeSpec containing instructions for
+ operating on the entity named by TargetDocEnt
+ -->
+ <!-- LocalInfo: Information that may be passed to ModeSpec -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="olink.attlist">
+ <xs:attribute name="targetdocent" type="xs:ENTITY"/>
+ <xs:attribute name="linkmode" type="xs:IDREF"/>
+ <xs:attribute name="localinfo"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="targetdoc"/>
+ <xs:attribute name="targetptr"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="olink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of olink.attlist -->
+ <!-- end of olink.module -->
+ <xs:attributeGroup name="ulink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target by means of a URL (Uniform Resource Locator). -->
+ <xs:element name="ulink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="ulink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ulink.element -->
+ <!-- URL: uniform resource locator; the target of the ULink -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="ulink.attlist">
+ <xs:attribute name="url" use="required"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ulink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ulink.attlist -->
+ <!-- end of ulink.module -->
+ <xs:attributeGroup name="footnoteref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a footnote (a footnote mark). -->
+ <xs:element name="footnoteref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="footnoteref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnoteref.element -->
+ <!-- to footnote content supplied elsewhere -->
+ <xs:attributeGroup name="footnoteref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnoteref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnoteref.attlist -->
+ <!-- end of footnoteref.module -->
+ <xs:attributeGroup name="xref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to another part of the document. -->
+ <xs:element name="xref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="xref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of xref.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <xs:attributeGroup name="xref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="xref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of xref.attlist -->
+ <!-- end of xref.module -->
+ <xs:attributeGroup name="biblioref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a bibliographic entry. -->
+ <xs:element name="biblioref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="biblioref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioref.element -->
+ <xs:attributeGroup name="biblioref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="units"/>
+ <xs:attribute name="begin"/>
+ <xs:attribute name="end"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="biblioref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioref.attlist -->
+ <!-- end of biblioref.module -->
+ <!-- Ubiquitous elements .................................................. -->
+ <xs:attributeGroup name="anchor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A spot in the document. -->
+ <xs:element name="anchor">
+ <xs:complexType>
+ <xs:attributeGroup ref="anchor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of anchor.element -->
+ <!-- required -->
+ <!-- replaces Lang -->
+ <xs:attributeGroup name="anchor.attlist">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="anchor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of anchor.attlist -->
+ <!-- end of anchor.module -->
+ <xs:attributeGroup name="beginpage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a page break in a print version of the document. -->
+ <xs:element name="beginpage">
+ <xs:complexType>
+ <xs:attributeGroup ref="beginpage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of beginpage.element -->
+ <!-- PageNum: Number of page that begins at this point -->
+ <xs:attributeGroup name="beginpage.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="beginpage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of beginpage.attlist -->
+ <!-- end of beginpage.module -->
+ <!--
+ IndexTerms appear in the text flow for generating or linking an
+ index.
+ -->
+ <xs:attributeGroup name="indexterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for terms to be indexed. -->
+ <xs:element name="indexterm" substitutionGroup="ndxterm.class"/>
+ <!-- end of indexterm.element -->
+ <!--
+ Scope: Indicates which generated indices the IndexTerm
+ should appear in: Global (whole document set), Local (this
+ document only), or All (both)
+ -->
+ <!--
+ Significance: Whether this IndexTerm is the most pertinent
+ of its series (Preferred) or not (Normal, the default)
+ -->
+ <!--
+ Class: Indicates type of IndexTerm; default is Singular,
+ or EndOfRange if StartRef is supplied; StartOfRange value
+ must be supplied explicitly on starts of ranges
+ -->
+ <!--
+ StartRef: ID of the IndexTerm that starts the indexing
+ range ended by this IndexTerm
+ -->
+ <!--
+ Zone: IDs of the elements to which the IndexTerm applies,
+ and indicates that the IndexTerm applies to those entire
+ elements rather than the point at which the IndexTerm
+ occurs
+ -->
+ <xs:attributeGroup name="indexterm.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="global"/>
+ <xs:enumeration value="local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="significance" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preferred"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="singular"/>
+ <xs:enumeration value="startofrange"/>
+ <xs:enumeration value="endofrange"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startref" type="xs:IDREF"/>
+ <xs:attribute name="zone" type="xs:IDREFS"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexterm.attlist -->
+ <!-- end of indexterm.module -->
+ <xs:attributeGroup name="primsecter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary word or phrase under which an index term should be sorted. -->
+ <xs:element name="primary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="primary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primary.attlist -->
+ <!-- doc:A secondary word or phrase in an index term. -->
+ <xs:element name="secondary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="secondary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondary.attlist -->
+ <!-- doc:A tertiary word or phrase in an index term. -->
+ <xs:element name="tertiary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="tertiary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiary.attlist -->
+ <!-- end of primsecter.module -->
+ <xs:attributeGroup name="seeseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Part of an index term directing the reader instead to another entry in the index. -->
+ <xs:element name="see">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="see.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of see.element -->
+ <xs:attributeGroup name="see.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of see.attlist -->
+ <!-- doc:Part of an index term directing the reader also to another entry in the index. -->
+ <xs:element name="seealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealso.element -->
+ <xs:attributeGroup name="seealso.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of seealso.attlist -->
+<!-- end of seeseealso.module -->
+<!-- end of indexterm.content.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML information pool module ... -->
+<!-- .............................................................................. -->
diff --git a/doc/editor_configs/serna/scons/xsd/htmltblx.xsd b/doc/editor_configs/serna/scons/xsd/htmltblx.xsd
new file mode 100644
index 0000000..9f82a02
--- /dev/null
+++ b/doc/editor_configs/serna/scons/xsd/htmltblx.xsd
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module ........ -->
+<!-- File htmltblx.xsd .................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook XML HTML Table
+ Module V4.5 with:
+
+ Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems,
+ Inc., and the Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: htmltblx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for elements that are
+ isomorphic to the HTML elements. One could argue we should
+ instead have based ourselves on the XHTML Table Module, but the
+ HTML one is more like what browsers are likely to accept today
+ and users are likely to use.
+
+ This module has been developed for use with the DocBook V4.5
+ "union table model" in which elements and attlists common to both
+ models are defined (as the union) in the CALS table module by
+ setting various parameter entities appropriately in this file.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % htmltbl PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+ "htmltblx.mod">
+ %htmltbl;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ======================= XHTML Tables ======================================= -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="html.coreattrs">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ </xs:attributeGroup>
+ <!-- Does not contain lang or dir because they are in %common.attribs -->
+ <xs:attributeGroup name="i18n">
+ <xs:attribute ref="xml:lang"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="events">
+ <xs:attribute name="onclick"/>
+ <xs:attribute name="ondblclick"/>
+ <xs:attribute name="onmousedown"/>
+ <xs:attribute name="onmouseup"/>
+ <xs:attribute name="onmouseover"/>
+ <xs:attribute name="onmousemove"/>
+ <xs:attribute name="onmouseout"/>
+ <xs:attribute name="onkeypress"/>
+ <xs:attribute name="onkeydown"/>
+ <xs:attribute name="onkeyup"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="attrs">
+ <xs:attributeGroup ref="html.coreattrs"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellhalign">
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellvalign">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="baseline"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- doc:A group of columns in an HTML table. -->
+ <xs:element name="colgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:Specifications for a column in an HTML table. -->
+ <xs:element name="col">
+ <xs:complexType>
+ <xs:attributeGroup ref="col.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A row in an HTML table. -->
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="th"/>
+ <xs:element ref="td"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table header entry in an HTML table. -->
+ <xs:element name="th">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="th.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table ntry in an HTML table. -->
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="td.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colgroup.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="col.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="tr.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="th.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="td.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <!-- ====================================================== -->
+ <!--
+ Set up to read in the CALS model configured to
+ merge with the XHTML table model
+ -->
+ <!-- ====================================================== -->
+ <xs:attributeGroup name="tables.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- Add label and role attributes to table and informaltable -->
+ <xs:attributeGroup name="bodyatt">
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="rowheader">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="firstcol"/>
+ <xs:enumeration value="norowheader"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ </xs:attributeGroup>
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <xs:attributeGroup name="secur">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ <xs:attributeGroup ref="tables.role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="common.table.attribs">
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- Content model for Table (that also allows HTML tables) -->
+ <xs:complexType name="tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element ref="caption"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:group name="informal.tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+ <!-- Attributes for Table (including HTML ones) -->
+ <!-- N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd -->
+ <!-- that way because 'all' already occurs in a different enumeration in -->
+ <!-- CALS tables (frame). -->
+ <xs:attributeGroup name="tbl.table.att">
+ <xs:attribute name="tabstyle"/>
+ <xs:attribute name="tocentry" type="yesorno.attvals"/>
+ <xs:attribute name="shortentry" type="yesorno.attvals"/>
+ <xs:attribute name="orient">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="port"/>
+ <xs:enumeration value="land"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attribute name="summary"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="border"/>
+ <xs:attribute name="rules"/>
+ <xs:attribute name="cellspacing"/>
+ <xs:attribute name="cellpadding"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="tbl.frame.attval">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="void"/>
+ <xs:enumeration value="above"/>
+ <xs:enumeration value="below"/>
+ <xs:enumeration value="hsides"/>
+ <xs:enumeration value="lhs"/>
+ <xs:enumeration value="rhs"/>
+ <xs:enumeration value="vsides"/>
+ <xs:enumeration value="box"/>
+ <xs:enumeration value="border"/>
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="topbot"/>
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="sides"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <xs:group name="tbl.entry.mdl">
+ <xs:choice>
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ thead, tfoot, and tbody are defined in both table models,
+ so we set up parameter entities to define union models for them
+ -->
+ <xs:complexType name="tbl.hdft.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.tbody.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:choice>
+ </xs:complexType>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module . -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/xsd/scons.xsd b/doc/editor_configs/serna/scons/xsd/scons.xsd
new file mode 100644
index 0000000..481c2d4
--- /dev/null
+++ b/doc/editor_configs/serna/scons/xsd/scons.xsd
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 .............................. -->
+<!-- File scons.xsd ....................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook V4.5 DTD with:
+
+ Copyright 1992-2006 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ See also http://docbook.org/specs/
+
+ $Id: docbookx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This is the driver file for V4.5 of the DocBook DTD.
+ Please use the following formal public identifier to identify it:
+
+ "-//OASIS//DTD DocBook XML V4.5//EN"
+
+ For example, if your document's top-level element is Book, and
+ you are using DocBook directly, use the FPI in the DOCTYPE
+ declaration:
+
+ <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+ [...]>
+
+ Or, if you have a higher-level driver file that customizes DocBook,
+ use the FPI in the parameter entity declaration:
+
+ <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+ %DocBookDTD;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Enable SGML features ................................................. -->
+<!-- ...................................................................... -->
+<!-- Notation declarations ................................................ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.scons.org/dbxsd/v1.0"
+ elementFormDefault="qualified">
+ <xs:include schemaLocation="dbnotnx.xsd"/>
+ <xs:include schemaLocation="dbpoolx.xsd"/>
+ <xs:include schemaLocation="dbhierx.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- ISO character entity sets ............................................ -->
+ <!-- euro sign, U+20AC NEW -->
+ <!-- ...................................................................... -->
+ <!-- DTD modules .......................................................... -->
+ <!-- Information pool .............. -->
+ <!-- Redeclaration placeholder ..... -->
+ <!-- Document hierarchy ............ -->
+</xs:schema>
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 ....................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/serna/scons/xsd/xml.xsd b/doc/editor_configs/serna/scons/xsd/xml.xsd
new file mode 100644
index 0000000..600f399
--- /dev/null
+++ b/doc/editor_configs/serna/scons/xsd/xml.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://www.w3.org/XML/1998/namespace">
+ <xs:import schemaLocation="scons.xsd"/>
+ <xs:attribute name="base"/>
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="lang" type="xs:NMTOKEN"/>
+</xs:schema>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/common.incl b/doc/editor_configs/xmlmind/addon/config/scons/common.incl
new file mode 100644
index 0000000..d03f74c
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/common.incl
@@ -0,0 +1,654 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <translation location="docbook_en.properties" />
+
+ <inclusionScheme name="XInclude">
+ <class>com.xmlmind.xml.xinclude.XIncludeScheme</class>
+ </inclusionScheme>
+
+ <cfg:preserveSpace xmlns=""
+ elements="address funcsynopsisinfo classsynopsisinfo
+ literallayout programlisting screen synopsis
+ sconstruct scons_example_file example_commands
+ scons_output_command file directory" />
+
+ <cfg:documentResources xmlns="">
+ <cfg:resource path="//@fileref" />
+ </cfg:documentResources>
+
+ <!-- Fixes the cols attribute of tgroup and entrytbl if needed to -->
+ <validateHook>
+ <class>com.xmlmind.xmleditext.docbook.table.ValidateHookImpl</class>
+ </validateHook>
+
+ <cfg:spellCheckOptions xmlns=""
+ useAutomaticSpellChecker="true"
+ languageAttribute="lang"
+ skippedElements="address programlisting screen synopsis code sgmltag
+ classsynopsisinfo modifier package classname
+ interfacename exceptionname varname methodname
+ funcsynopsisinfo modifier type function
+ initializer parameter funcparams
+ lhs rhs nonterminal" />
+
+ <!-- Menu ============================================================== -->
+
+ <command name="docb.tableEdit">
+ <class>com.xmlmind.xmleditext.docbook.DBTableEdit</class>
+ </command>
+
+ <command name="docb.promote">
+ <class>com.xmlmind.xmleditext.docbook.Promote</class>
+ </command>
+ <command name="docb.demote">
+ <class>com.xmlmind.xmleditext.docbook.Demote</class>
+ </command>
+
+ <command name="docb.toggleInformal">
+ <macro undoable="true"
+ label="Convert informal&lt;element&gt; to/from &lt;element&gt;">
+ <choice>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement]
+ informaltable informalfigure informalexample" />
+
+ <!-- DocBook 4.3 supports HTML tables and we will *not* attempt to
+ transform an HTML informaltable to a HTML table
+ with a caption. -->
+
+ <test context="$selected"
+ expression="local-name() != 'informaltable' or ./tgroup" />
+
+ <command name="selectNode" parameter="children" />
+ <command name="copy" />
+ <command name="selectNode" parameter="parent" />
+ <get context="$selected"
+ expression="substring-after(local-name(), 'informal')" />
+ <command name="replace" parameter="%_" />
+ <set variable="selectedNodes" context="$selected"
+ expression="./*[position() &gt; 1]" />
+ <command name="paste" parameter="to" />
+ </sequence>
+
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] table figure example" />
+ <!-- Assumes that first child is a title and not a blockinfo. -->
+ <set variable="selectedNodes" context="$selected"
+ expression="./*[position() &gt; 1]" />
+ <command name="copy" />
+ <command name="selectNode" parameter="parent" />
+ <get context="$selected"
+ expression="concat('informal', local-name())" />
+ <command name="replace" parameter="%_" />
+ <command name="selectNode" parameter="children" />
+ <command name="paste" parameter="to" />
+ </sequence>
+ </choice>
+ </macro>
+ </command>
+
+ <menu label="_DocBook">
+ <menu label="C_olumn">
+ <item label="_Insert Before"
+ icon="scons_icons/insertColumnBefore.png"
+ command="docb.tableEdit" parameter="insertColumnBefore"/>
+ <item label="I_nsert After"
+ icon="scons_icons/insertColumnAfter.png"
+ command="docb.tableEdit" parameter="insertColumnAfter"/>
+ <separator />
+ <item label="_Cut"
+ icon="scons_icons/cut.png"
+ command="docb.tableEdit" parameter="cutColumn"/>
+ <item label="C_opy"
+ icon="scons_icons/copy.png"
+ command="docb.tableEdit" parameter="copyColumn"/>
+ <item label="_Paste Before"
+ icon="scons_icons/pasteBefore.png"
+ command="docb.tableEdit" parameter="pasteColumnBefore"/>
+ <item label="P_aste After"
+ icon="scons_icons/pasteAfter.png"
+ command="docb.tableEdit" parameter="pasteColumnAfter"/>
+ <item label="_Delete"
+ icon="scons_icons/deleteColumn.png"
+ command="docb.tableEdit" parameter="deleteColumn"/>
+ </menu>
+ <menu label="_Row">
+ <item label="_Insert Before"
+ icon="scons_icons/insertRowBefore.png"
+ command="docb.tableEdit" parameter="insertRowBefore"/>
+ <item label="I_nsert After"
+ icon="scons_icons/insertRowAfter.png"
+ command="docb.tableEdit" parameter="insertRowAfter"/>
+ <separator />
+ <item label="_Cut"
+ icon="scons_icons/cut.png"
+ command="docb.tableEdit" parameter="cutRow"/>
+ <item label="C_opy"
+ icon="scons_icons/copy.png"
+ command="docb.tableEdit" parameter="copyRow"/>
+ <item label="_Paste Before"
+ icon="scons_icons/pasteBefore.png"
+ command="docb.tableEdit" parameter="pasteRowBefore"/>
+ <item label="P_aste After"
+ icon="scons_icons/pasteAfter.png"
+ command="docb.tableEdit" parameter="pasteRowAfter"/>
+ <item label="_Delete"
+ icon="scons_icons/deleteRow.png"
+ command="docb.tableEdit" parameter="deleteRow"/>
+ </menu>
+ <menu label="C_ell">
+ <item label="_Increment Column Span"
+ icon="scons_icons/incrementColumnSpan.png"
+ command="docb.tableEdit" parameter="incrColumnSpan"/>
+ <item label="_Decrement Column Span"
+ icon="scons_icons/decrementColumnSpan.png"
+ command="docb.tableEdit" parameter="decrColumnSpan"/>
+ <separator />
+ <item label="I_ncrement Row Span"
+ icon="scons_icons/incrementRowSpan.png"
+ command="docb.tableEdit" parameter="incrRowSpan"/>
+ <item label="D_ecrement Row Span"
+ icon="scons_icons/decrementRowSpan.png"
+ command="docb.tableEdit" parameter="decrRowSpan"/>
+ </menu>
+ <separator />
+ <item label="Convert in_formal&lt;element&gt; to/from &lt;element&gt;"
+ command="docb.toggleInformal"/>
+ <separator />
+ <item label="_Go to Opposite Link End"
+ command="selectById" parameter="swapIdAndReference"/>
+ <item label="Go to _Next Link"
+ command="selectById" parameter="nextReference"/>
+ <item label="Go to _Previous Link"
+ command="selectById" parameter="previousReference"/>
+ <separator />
+ <item label="Move _Up"
+ icon="scons_icons/up.png"
+ command="moveElement" parameter="up" />
+ <item label="Move Do_wn"
+ icon="scons_icons/down.png"
+ command="moveElement" parameter="down" />
+ </menu>
+
+ <!-- Toolbar ============================================================ -->
+
+ <command name="docb.convertWithAttribute">
+ <macro repeatable="true" undoable="true" label="Convert">
+ <sequence>
+ <choice>
+ <command name="selectNode"
+ parameter="self[implicitElement] %0" />
+ <command name="convert"
+ parameter="[implicitElement] %0" />
+ </choice>
+ <command name="putAttribute" parameter="%1 %2" />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- Easier to implement with "add" instead of "insertNode" but slower. -->
+
+ <command name="docb.addListItem">
+ <macro>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestor[implicitElement] itemizedlist orderedlist
+ variablelist calloutlist procedure substeps
+ simplelist segmentedlist" />
+ <command name="selectNode" parameter="child" />
+ <command name="insertNode" parameter="sameElement%0" />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- This macro is required for DocBook where a para can contains
+ lists, tables, etc.
+ Note that this is not the case of para in Simplified DocBook. -->
+
+ <command name="docb.addAfter">
+ <macro>
+ <choice>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] para" />
+ <command name="insert" parameter="after[implicitElement] %0" />
+ </sequence>
+ <command name="add" parameter="after[implicitElement] %0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Bindings =========================================================== -->
+
+ <binding>
+ <keyPressed code="F2" />
+ <keyPressed code="UP" />
+ <command name="moveElement" parameter="up" />
+ </binding>
+
+ <binding>
+ <keyPressed code="F2" />
+ <keyPressed code="DOWN" />
+ <command name="moveElement" parameter="down" />
+ </binding>
+
+ <!-- Inside a para or simpara (and only inside a para or simpara),
+ XXE attempts to behave like a word-processor. -->
+
+ <binding>
+ <keyPressed code="ENTER" />
+ <command name="docb.splitOrInsertNewLine" />
+ </binding>
+
+ <binding>
+ <keyPressed code="DELETE" />
+ <command name="docb.joinOrDeleteChar" />
+ </binding>
+
+ <binding>
+ <keyPressed code="BACK_SPACE" />
+ <command name="docb.joinOrDeleteChar" parameter="backwards" />
+ </binding>
+
+ <command name="docb.splitOrInsertNewLine">
+ <macro>
+ <choice>
+ <command name="insertControlChar" parameter="\n" />
+
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] simpara para" />
+ <command name="split" />
+ </sequence>
+ </choice>
+ </macro>
+ </command>
+
+ <command name="docb.joinOrDeleteChar">
+ <macro>
+ <choice>
+ <sequence>
+ <test
+ expression="($dot/ancestor::para or $dot/ancestor::simpara) and
+ not($selected) and not($mark)" />
+ <command name="deleteSelectionOrJoinOrDeleteChar" parameter="%0" />
+ </sequence>
+
+ <command name="deleteSelectionOrDeleteChar" parameter="%0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Easy way to add paragraphs and list items -->
+
+ <binding>
+ <keyPressed code="ENTER" modifiers="mod" />
+ <command name="docb.addSame" parameter="After" />
+ </binding>
+
+ <binding>
+ <keyPressed code="ENTER" modifiers="mod shift" />
+ <command name="docb.addSame" parameter="Before" />
+ </binding>
+
+ <command name="docb.addSame">
+ <macro>
+ <choice>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] simpara para" />
+
+ <choice>
+ <sequence>
+ <match context="$selected"
+ pattern="listitem/*[position() = 1]|
+ callout/*[position() = 1]|
+ step/*[position() = 1]" />
+ <command name="docb.addListItem" parameter="%0" />
+ </sequence>
+
+ <command name="insertNode" parameter="sameElement%0" />
+ </choice>
+ </sequence>
+
+ <command name="docb.addListItem" parameter="%0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Note that Shift-Enter is not bound. -->
+
+ <!-- An easy way to paste paragraphs copied from another application. -->
+
+ <command name="docb.pasteAfterAsParagraphs">
+ <macro>
+ <sequence>
+ <command name="makeParagraphs" parameter="%0" />
+ <command name="paste" parameter="after[implicitElement] %_" />
+ </sequence>
+ </macro>
+ </command>
+
+ <binding>
+ <keyPressed code="ESCAPE" />
+ <charTyped char="w" />
+ <command name="docb.pasteAfterAsParagraphs" parameter="para" />
+ </binding>
+
+ <!-- An easy way to specify the URL in ulink -->
+
+ <binding>
+ <appEvent name="drop" />
+ <command name="docb.fileDrop" parameter="'%{value}'" />
+ </binding>
+
+ <command name="docb.fileDrop">
+ <macro>
+ <choice>
+ <sequence>
+ <match context="$clickedElement" pattern="ulink" />
+ <set variable="selectedElement" expression="$clickedElement" />
+
+ <set variable="dropped" context="$selectedElement"
+ expression="relativize-uri(uri-or-file-name('%0'))" />
+ <get expression="$dropped" />
+ <command name="putAttribute" parameter="url '%_'" />
+
+ <get expression="$dropped" />
+ <command name="status" parameter="url='%_'" />
+ </sequence>
+
+ <command name="XXE.open" parameter="%0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Element templates ================================================== -->
+
+ <!-- Unlike graphic, mediaobject/imageobject is also supported by
+ simplified docbook. -->
+
+ <elementTemplate name="image" selectable="override">
+ <figure xmlns="">
+ <title></title>
+ <mediaobject cfg:template="image" />
+ </figure>
+ </elementTemplate>
+
+ <elementTemplate name="screenshot">
+ <figure xmlns="">
+ <title></title>
+ <screenshot cfg:template="simple" />
+ </figure>
+ </elementTemplate>
+
+ <elementTemplate name="simple" selectable="override">
+ <screenshot xmlns="">
+ <screeninfo></screeninfo>
+ <mediaobject cfg:template="image" />
+ </screenshot>
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated mediaobject
+ (which contains a textobject) -->
+
+ <elementTemplate name="image" selectable="override">
+ <mediaobject xmlns="">
+ <imageobject><imagedata cfg:template="simple" /></imageobject>
+ </mediaobject>
+ </elementTemplate>
+
+ <elementTemplate name="image" selectable="override">
+ <inlinemediaobject xmlns="">
+ <imageobject><imagedata cfg:template="simple" /></imageobject>
+ </inlinemediaobject>
+ </elementTemplate>
+
+ <!-- fileref is not a mandatory attribute of imagedata -->
+
+ <elementTemplate name="simple" selectable="override">
+ <imagedata xmlns="" fileref="???" />
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated caption of a mediaobject
+ (which is empty) -->
+
+ <elementTemplate name="simple" selectable="override">
+ <caption xmlns="">
+ <para></para>
+ </caption>
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated table
+ (which contains a graphic) -->
+
+ <elementTemplate name="simple" selectable="override">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+<!--
+ <elementTemplate name="withPara" selectable="override">
+ <entry xmlns=""><para></para></entry>
+ </elementTemplate>
+
+ <elementTemplate name="withPara" selectable="override">
+ <entrytbl xmlns="" cols="2">
+ <tbody>
+ <row>
+ <entry><para></para></entry><entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para></para></entry><entry><para></para></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+-->
+
+ <elementTemplate name="head_row">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="head_column">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <colspec align="center"/>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="head_row_column">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <colspec align="center" />
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated informaltable
+ (which contains a graphic) -->
+
+ <elementTemplate name="simple" selectable="override">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="head_row">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="head_column">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <colspec align="center"/>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="head_row_column">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <colspec align="center" />
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="1x2">
+ <entrytbl xmlns="" cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+
+ <elementTemplate name="2x1">
+ <entrytbl xmlns="" cols="1">
+ <tbody>
+ <row>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+
+ <elementTemplate name="2x2">
+ <entrytbl xmlns="" cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+
+ <!-- indexterm -->
+
+ <elementTemplate name="singular" selectable="override">
+ <indexterm xmlns=""><primary></primary></indexterm>
+ </elementTemplate>
+
+ <elementTemplate name="startofrange">
+ <indexterm xmlns="" id="???"
+ class="startofrange"><primary></primary></indexterm>
+ </elementTemplate>
+
+ <elementTemplate name="endofrange">
+ <indexterm xmlns="" class="endofrange" startref="???" />
+ </elementTemplate>
+
+ <!-- DocBook 4.3, Simplified DocBook 1.1, etc, support
+ both HTML and CALS tables. -->
+ <include location="htmlTable.incl" />
+</configuration>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/cals_table.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/cals_table.imp
new file mode 100644
index 0000000..6e02a94
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/cals_table.imp
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2005-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for CALS tables (up to DocBook 4.2).
+ */
+
+@import "table.imp";
+
+/*
+ * "black" is the color used to draw a border around the table and its cells
+ * based on values of attributes such as frame, rowsep and colsep.
+ *
+ * "rgb(238,238,224)" (a very light gray) is the color used to draw
+ * a border around each cell whether the cell actually has borders or not.
+ * Remove this parameter if this ``cell footprint'' disturbs you.
+ *
+ * For more information about table support for DocBook, see
+ * XMLmind XML Editor - Configuration and Deployment.
+ */
+@extension "com.xmlmind.xmleditext.docbook.table.TableSupport black rgb(238,238,224)";
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/collapsible.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/collapsible.imp
new file mode 100644
index 0000000..443f990
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/collapsible.imp
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2003-2007 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for making sections and blocks with titles collapsible.
+ */
+
+set,
+book,
+part,
+reference,
+chapter,
+preface,
+article,
+sect1,
+sect2,
+sect3,
+sect4,
+section,
+appendix,
+figure,
+example,
+table {
+ collapsible: yes;
+ not-collapsible-head: 1; /* title or metainfo */
+}
+
+figure {
+ collapsed-content: url(icons/figure.png);
+ collapsed-content-align: center;
+}
+
+example {
+ collapsed-content: url(icons/para.png);
+ collapsed-content-align: center;
+}
+
+table {
+ collapsed-content: url(icons/table.png);
+ collapsed-content-align: center;
+}
+
+set > title:first-child:before,
+book > title:first-child:before,
+reference > title:first-child:before,
+preface > title:first-child:before,
+article > title:first-child:before,
+figure > title:before,
+example > title:before,
+table > title:before {
+ content: collapser() " ";
+}
+
+part > title:first-child:before {
+ content: collapser() " Part " simple-counter(n-, upper-roman) ": ";
+}
+
+chapter > title:first-child:before {
+ content: collapser() " Chapter " simple-counter(n-, decimal) ": ";
+}
+
+sect1 > title:first-child:before {
+ content: collapser() " " simple-counter(n-) " ";
+}
+
+sect2 > title:first-child:before {
+ content: collapser() " " simple-counter(nn-) " ";
+}
+
+sect3 > title:first-child:before {
+ content: collapser() " " simple-counter(nnn-) " ";
+}
+
+sect4 > title:first-child:before {
+ content: collapser() " " simple-counter(nnnn-) " ";
+}
+
+section > title:first-child:before {
+ content: collapser() " " simple-counter(n-) " ";
+}
+
+section section > title:first-child:before {
+ content: collapser() " " simple-counter(nn-) " ";
+}
+
+section section section > title:first-child:before {
+ content: collapser() " " simple-counter(nnn-) " ";
+}
+
+section section section section > title:first-child:before {
+ content: collapser() " " simple-counter(nnnn-) " ";
+}
+
+section section section * section > title:first-child:before {
+ content: "";
+}
+
+appendix > title:first-child:before {
+ content: collapser() " Appendix " simple-counter(n-, upper-alpha) ": ";
+}
+
+appendixinfo:first-child,
+articleinfo:first-child,
+bookinfo:first-child,
+chapterinfo:first-child,
+partinfo:first-child,
+prefaceinfo:first-child,
+referenceinfo:first-child,
+sect1info:first-child,
+sect2info:first-child,
+sect3info:first-child,
+sect4info:first-child,
+sectioninfo:first-child,
+setinfo:first-child {
+ margin-left: 20px;
+}
+
+appendixinfo:first-child:before,
+articleinfo:first-child:before,
+bookinfo:first-child:before,
+chapterinfo:first-child:before,
+partinfo:first-child:before,
+prefaceinfo:first-child:before,
+referenceinfo:first-child:before,
+sect1info:first-child:before,
+sect2info:first-child:before,
+sect3info:first-child:before,
+sect4info:first-child:before,
+sectioninfo:first-child:before,
+setinfo:first-child:before {
+ content: collapser();
+ display: marker;
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/docbook1.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/docbook1.imp
new file mode 100644
index 0000000..27a7561
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/docbook1.imp
@@ -0,0 +1,1157 @@
+/*
+ * Copyright (c) 2003-2010 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for elements other than those found in Simplified DocBook.
+ */
+
+/* =====================================
+ Book structure
+===================================== */
+
+set {
+ display: block;
+}
+
+set > title {
+ font-size: 2.5em;
+ margin: 0.25ex 0;
+ border-width: 4px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+book {
+ display: block;
+}
+
+book > title {
+ font-size: 2.5em;
+ margin: 0.25ex 0;
+ border-width: 3px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+dedication,
+colophon {
+ display: block;
+ /* content of dedication has a margin */
+}
+
+part,
+reference {
+ display: block;
+}
+
+part > title,
+reference > title {
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 2px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+part > title:before {
+ content: "Part " simple-counter(n-, upper-roman) ": ";
+}
+
+partintro {
+ display: block;
+ /* content of partintro has a margin */
+}
+
+chapter,
+preface {
+ display: block;
+}
+
+chapter > title,
+preface > title {
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+chapter > title:before {
+ content: "Chapter " simple-counter(n-, decimal) ": ";
+}
+
+/* -------------------------------------
+ TOC
+------------------------------------- */
+
+toc {
+ display: block;
+ /* content of toc has a margin */
+}
+
+tocchap,
+tocpart {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+tocfront,
+tocback,
+tocentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+toclevel1,
+toclevel2,
+toclevel3,
+toclevel4,
+toclevel5 {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+toclevel2,
+toclevel3,
+toclevel4,
+toclevel5 {
+ margin-left: 4ex;
+}
+
+/* -------------------------------------
+ LOT
+------------------------------------- */
+
+lot {
+ display: block;
+ /* content of lot has a margin */
+}
+
+lotentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+/* -------------------------------------
+ Glossary
+------------------------------------- */
+
+glossary,
+glossdiv {
+ display: block;
+ /* content of glossary has a margin */
+}
+
+glosslist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+glossentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+glossterm {
+ display: inline;
+ font-style: italic;
+}
+
+glossentry > acronym,
+glossentry > abbrev,
+glossentry > indexterm,
+glossentry > revhistory {
+ display: block;
+ margin-left: 4ex;
+ margin-top: 0;
+ margin-bottom: 1.33ex;
+}
+
+glossdef,
+glosssee {
+ display: block;
+ margin-left: 4ex;
+ margin-bottom: 1.33ex;
+}
+
+glossdef > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+glossseealso {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+glosssee:before,
+glossseealso:before {
+ display: inline;
+ font-size: small;
+ color: #004080;
+}
+
+glosssee:before {
+ content: "See ";
+}
+
+glossseealso:before {
+ content: "See also ";
+}
+
+/* -------------------------------------
+ Index
+------------------------------------- */
+
+index,
+setindex,
+indexdiv {
+ display: block;
+ /* content of index has a margin */
+}
+
+indexentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+primaryie,
+secondaryie,
+tertiaryie,
+seeie,
+seealsoie {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+secondaryie {
+ margin-left: 2ex;
+}
+
+tertiaryie {
+ margin-left: 4ex;
+}
+
+seeie,
+seealsoie {
+ margin-left: 6ex;
+}
+
+seeie:before,
+seealsoie:before {
+ display: inline;
+ font-size: small;
+ color: #004080;
+}
+
+seeie:before {
+ content: "See ";
+}
+
+seealsoie:before {
+ content: "See also ";
+}
+
+/* =====================================
+ Paragraphs
+===================================== */
+
+ackno {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+address {
+ display: block;
+ white-space: pre;
+ margin: 1.33ex 0;
+}
+
+street,
+pob,
+postcode,
+city,
+state,
+country,
+phone,
+fax,
+otheraddr {
+ display: inline;
+}
+
+formalpara {
+ display: block;
+ /* content of formalpara has a margin */
+}
+
+/* =====================================
+ Lists
+===================================== */
+
+procedure {
+ display: block;
+ margin-left: 2ex; /* all lists are slightly indented */
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+stepalternatives,
+substeps {
+ display: block;
+}
+
+stepalternatives > *:first-child,
+substeps > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+step {
+ display: block;
+ margin-left: 6ex;
+}
+
+step > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+step:before {
+ display: marker;
+ content: simple-counter(n, decimal) ".";
+ font-weight: bold;
+ color: #004080;
+}
+
+step step:before {
+ content: simple-counter(n, lower-alpha) ".";
+}
+step step step:before {
+ content: simple-counter(n, decimal) ".";
+}
+step step step step:before {
+ content: simple-counter(n, lower-alpha) ".";
+}
+step step step step step:before {
+ content: simple-counter(n, decimal) ".";
+}
+
+segmentedlist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+segmentedlist > title {
+ margin-top: 0;
+}
+
+segtitle {
+ display: inline;
+ font-weight: bold;
+ color: #004080;
+}
+
+seglistitem {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+seg {
+ display: inline;
+}
+
+segtitle:before,
+seg:before {
+ content: " ";
+}
+
+segtitle:first-child:before,
+title + segtitle:before,
+seg:first-child:before {
+ content: "";
+}
+
+simplelist { /* also works for type=vert */
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+member {
+ display: block;
+}
+
+simplelist[type=inline] > member,
+simplelist[type=horiz] > member {
+ display: inline;
+}
+
+simplelist[type=inline] > member:before {
+ content: ", ";
+ color: gray;
+}
+
+simplelist[type=horiz] > member:before {
+ content: " ";
+}
+
+simplelist[type=inline] > member:first-child:before,
+simplelist[type=horiz] > member:first-child:before {
+ content: "";
+}
+
+/* =====================================
+ Figures
+===================================== */
+
+graphic {
+ display: block;
+ margin: 1.33ex auto;
+}
+
+inlinegraphic {
+ display: inline;
+}
+
+/*
+ * Replaced content of graphic and inlinegraphic
+ * is defined in image.imp.
+ */
+
+equation,
+informalequation {
+ display: block;
+ margin: 1.33ex auto;
+}
+
+equation > title {
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 0; /* content of equation generally already has a margin */
+}
+
+mathphrase,
+alt {
+ display: block;
+ text-align: center;
+ margin: 1.33ex 0;
+}
+
+mathphrase {
+ font-style: italic;
+}
+
+alt {
+ font-size: small;
+ background-color: #EEEEFF;
+}
+
+inlineequation {
+ display: inline;
+}
+
+inlineequation > mathphrase,
+inlineequation > alt,
+inlineequation > graphic { /* inlineequation > graphic is a DTD bug */
+ display: inline;
+}
+
+screenshot {
+ display: block;
+ /* content of screenshot has a margin */
+}
+
+screeninfo {
+ display: block;
+ margin: 1.33ex 0;
+ font-size: small;
+ background-color: #EEEEFF;
+ text-align: center;
+}
+
+/* -------------------------------------
+ Callouts
+------------------------------------- */
+
+mediaobjectco {
+ display: block;
+ /* content of mediaobjectco has a margin */
+}
+
+graphicco,
+imageobjectco,
+programlistingco,
+screenco {
+ display: block;
+ /* content of graphicco has a margin */
+}
+
+areaspec,
+areaset,
+area {
+ display: tree;
+}
+
+co {
+ display: inline;
+ content: icon(left-half-disc) simple-counter(n) icon(right-half-disc);
+ color: #004080;
+}
+
+coref {
+ display: inline;
+ content: icon(left-half-disc) attr(linkend) icon(right-half-disc);
+ color: #004080;
+}
+
+calloutlist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+callout {
+ display: block;
+ margin-left: 6ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+callout > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+calloutlist > callout:before {
+ display: marker;
+ content: icon(left-half-disc) simple-counter(n) icon(right-half-disc);
+ color: #004080;
+}
+
+/* =====================================
+ Divisions
+===================================== */
+
+highlights {
+ display: block;
+ margin-bottom: 1.33ex;
+ background-color: #F8E0F8;
+ border: thin solid #F880F8;
+ padding: 2px;
+}
+
+highlights:before {
+ display: block;
+ content: element-label();
+ font-weight: bold;
+ color: #E840E8;
+ margin-top: 1.33ex;
+}
+
+/* =====================================
+ Special sections
+===================================== */
+
+/* -------------------------------------
+ Task
+------------------------------------- */
+
+task {
+ display: block;
+ /* content of task has a margin */
+}
+
+tasksummary,
+taskprerequisites,
+taskrelated,
+task > procedure {
+ display: block;
+ margin-left: 2ex;
+ /* content of taskxxx has a margin */
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+/* -------------------------------------
+ Question-and-answer set
+------------------------------------- */
+
+qandaset,
+qandadiv {
+ display: block;
+ /* content of qandaset has a margin */
+}
+
+qandaentry {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+question,
+answer {
+ display: block;
+ margin-left: 4ex;
+ /* content of question has a margin */
+}
+
+question > *:first-child,
+answer > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+question:before,
+answer:before {
+ display: marker;
+ color: #004080;
+ font-weight: bold;
+}
+
+question:before {
+ content: "Q:";
+}
+
+answer:before {
+ content: "A:";
+}
+
+label {
+ display: block;
+ margin: 1.33ex 0;
+ color: #004080;
+ font-weight: bold;
+}
+
+/* -------------------------------------
+ Set of messages
+------------------------------------- */
+
+msgset {
+ display: block;
+ /* content of msgset has a margin */
+}
+
+msgentry,
+simplemsgentry {
+ display: block;
+ margin: 1.33ex 0;
+ border: thin solid gray;
+ padding: 2px;
+}
+
+msg,
+msgmain,
+msgsub,
+msgrel,
+msgtext,
+msgexplan,
+msginfo {
+ display: block;
+ margin-left: 10ex;
+ /* content of msg has a margin */
+}
+
+msg > *:first-child,
+msgmain > *:first-child,
+msgsub > *:first-child,
+msgrel > *:first-child,
+msgtext > *:first-child,
+msgexplan > *:first-child,
+msginfo > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+msg:before,
+msgmain:before,
+msgsub:before,
+msgrel:before,
+simplemsgentry > msgtext:before,
+msgexplan:before,
+msginfo:before {
+ display: marker;
+ content: element-label();
+ font-size: small;
+ color: #004080;
+}
+
+msglevel,
+msgorig,
+msgaud {
+ display: inline;
+}
+
+msglevel:before,
+msgorig:before,
+msgaud:before {
+ content: icon(left-half-disc) element-local-name() " ";
+ font-size: small;
+ color: gray;
+}
+
+msglevel:after,
+msgorig:after,
+msgaud:after {
+ content: icon(right-half-disc);
+ color: gray;
+}
+
+/* -------------------------------------
+ Bibliography
+ (complements docbook2.imp)
+------------------------------------- */
+
+bibliocoverage,
+bibliorelation,
+bibliosource {
+ display: inline;
+}
+
+biblioid,
+isbn,
+issn,
+pubsnumber {
+ display: inline;
+}
+
+citebiblioid {
+ display: inline;
+}
+
+biblioref {
+ content: attr(linkend) icon(right-link);
+ vertical-align: text-top; /* for the icon */
+ color: navy;
+}
+
+/* -------------------------------------
+ Meta-information
+ (complements docbook2.imp)
+------------------------------------- */
+
+artpagenums,
+pagenums,
+seriesvolnums,
+invpartnumber {
+ display: inline;
+}
+
+itermset {
+ /* Could be block but inline is safer when used in strange places
+ and when used in meta-info, display is forced to be block. */
+ display: inline;
+}
+
+collab {
+ display: block; /* can contain affiliation */
+ margin: 1.33ex 0;
+}
+
+collabname {
+ display: inline;
+}
+
+confgroup {
+ display: block; /* can contain address */
+ margin: 1.33ex 0;
+}
+
+confdates,
+conftitle,
+confnum,
+confsponsor {
+ display: inline;
+}
+
+confdates:after,
+conftitle:after,
+confnum:after,
+confsponsor:after {
+ content: " ";
+}
+
+contractnum,
+contractsponsor {
+ display: inline;
+}
+
+publisher {
+ display: block; /* can contain address */
+ margin: 1.33ex 0;
+}
+
+printhistory {
+ display: block;
+ /* content of printhistory has a margin */
+}
+
+/* =====================================
+ Other elements
+===================================== */
+
+bridgehead {
+ display: block;
+ font-weight: bold;
+ color: #004080;
+ margin: 1.33ex 0;
+}
+
+bridgehead[renderas=sect1] {
+ font-size: 1.5em;
+ margin: .83ex 0;
+}
+
+bridgehead[renderas=sect2] {
+ font-size: 1.3em;
+ margin: 1ex 0;
+}
+
+/* ---------------------------------------------------------------------------
+ Inlined elements other than those belonging to modules
+
+ Note that default display is inline, so there is no need to specify it.
+--------------------------------------------------------------------------- */
+
+/* -------------------------------------
+ Technical
+------------------------------------- */
+
+keycombo {
+ display: inline;
+}
+
+keycombo > *:before {
+ content: icon(plus);
+ color: gray;
+}
+
+keycombo[action] > *:before {
+ content: " ";
+}
+
+keycombo[action=simul] > *:before {
+ content: icon(plus);
+}
+
+keycombo > *:first-child:before {
+ content: "";
+}
+
+keycap,
+keysym,
+mousebutton {
+ font-weight: bold;
+}
+
+keycode {
+ font-family: monospace;
+}
+
+menuchoice {
+ display: inline;
+}
+
+menuchoice > *:before {
+ content: icon(pop-right);
+ color: gray;
+}
+
+menuchoice > *:first-child:before,
+menuchoice > shortcut + *:before {
+ content: "";
+}
+
+shortcut {
+ display: inline;
+}
+
+/* shortcut:before should be enough but this selector makes this rule more
+ specific than the above one */
+
+menuchoice > shortcut:first-child:before {
+ content: "(";
+ color: gray;
+}
+
+shortcut:after {
+ content: ") ";
+ color: gray;
+}
+
+shortcut > *:before {
+ content: " ";
+}
+
+shortcut > *:first-child:before {
+ content: "";
+}
+
+guimenu,
+guisubmenu,
+guimenuitem,
+guibutton,
+guilabel,
+guiicon,
+accel,
+interface {
+ font-weight: bold;
+}
+
+accel {
+ text-decoration: underline;
+}
+
+action {
+ display: inline;
+}
+
+application,
+hardware,
+database,
+productnumber {
+ display: inline;
+}
+
+medialabel {
+ font-weight: bold;
+}
+
+package,
+uri,
+code,
+constant,
+envar,
+markup,
+prompt,
+property,
+sgmltag,
+token,
+type,
+function,
+parameter,
+varname,
+returnvalue,
+errorcode,
+errorname,
+errortext,
+errortype,
+exceptionname,
+classname,
+methodname,
+interfacename,
+structfield,
+structname,
+symbol {
+ font-family: monospace;
+}
+
+optional {
+ display: inline;
+}
+synopsis > optional:before {
+ content: "[";
+ color: gray;
+}
+synopsis > optional:after {
+ content: "]";
+ color: gray;
+}
+
+sgmltag:before,
+sgmltag:after {
+ color: gray;
+}
+
+sgmltag[class=attvalue]:before {
+ content: '"';
+}
+sgmltag[class=attvalue]:after {
+ content: '"';
+}
+
+sgmltag[class=starttag]:before,
+sgmltag[class=emptytag]:before {
+ content: "<";
+}
+sgmltag[class=endtag]:before {
+ content: "</";
+}
+sgmltag[class=endtag]:after,
+sgmltag[class=starttag]:after {
+ content: ">";
+}
+sgmltag[class=emptytag]:after {
+ content: "/>";
+}
+
+sgmltag[class=pi]:before,
+sgmltag[class=xmlpi]:before {
+ content: "<?";
+}
+sgmltag[class=pi]:after,
+sgmltag[class=xmlpi]:after {
+ content: "?>";
+}
+
+sgmltag[class=sgmlcomment]:before {
+ content: "<!--";
+}
+sgmltag[class=sgmlcomment]:after {
+ content: "-->";
+}
+
+sgmltag[class=paramentity]:before {
+ content: "%";
+}
+sgmltag[class=genentity]:before {
+ content: "&";
+}
+sgmltag[class=numcharref]:before {
+ content: "&#";
+}
+sgmltag[class=paramentity]:after,
+sgmltag[class=genentity]:after,
+sgmltag[class=numcharref]:after {
+ content: ";";
+}
+
+/* -------------------------------------
+ General
+------------------------------------- */
+
+remark {
+ font-style: italic;
+ color: #880000;
+}
+
+firstterm,
+foreignphrase {
+ font-style: italic;
+}
+
+citation:before {
+ content: "[";
+ color: gray;
+}
+
+citation:after {
+ content: "]";
+ color: gray;
+}
+
+wordasword {
+ font-family: sans-serif;
+ font-size: medium;
+ font-style: normal;
+ font-weight: normal;
+ color: black;
+}
+
+olink {
+ color: navy;
+ text-decoration: underline;
+}
+
+olink:after {
+ vertical-align: text-top; /* for the icon */
+}
+
+olink[targetdoc]:after {
+ content: icon(left-link) attr(targetdoc);
+}
+
+olink[targetdoc][targetptr]:after {
+ content: icon(left-link) attr(targetdoc) ":" attr(targetptr);
+}
+
+modespec {
+ display: inline;
+}
+
+indexterm,
+primary,
+secondary,
+tertiary,
+see,
+seealso {
+ display: inline;
+ font-size: small;
+}
+
+indexterm:before {
+ content: icon(left-half-disc);
+ color: gray;
+}
+
+indexterm:after {
+ content: icon(right-half-disc);
+ color: gray;
+}
+
+indexterm[class=startofrange][id]:before {
+ content: icon(left-half-disc) attr(id) icon(half-disc-separator);
+}
+
+indexterm[class=startofrange][xml|id]:before {
+ content: icon(left-half-disc) attr(xml|id) icon(half-disc-separator);
+}
+
+indexterm[class=endofrange]:after {
+ content: icon(half-disc-separator) attr(startref) icon(right-half-disc);
+}
+
+indexterm > *:before {
+ content: "; ";
+ color: gray;
+ font-weight: bold;
+}
+
+indexterm > see:before {
+ content: " see ";
+}
+
+indexterm > seealso:before {
+ content: " see also ";
+}
+
+indexterm > *:first-child:before {
+ content: "";
+}
+
+termdef {
+ display: inline;
+}
+
+termdef:before {
+ content: icon(right) element-local-name() " ";
+ color: gray;
+}
+
+termdef:after {
+ content: icon(left);
+ color: gray;
+}
+
+/* -------------------------------------
+ Other
+------------------------------------- */
+
+beginpage {
+ display: inline;
+ content: url(icons/beginpage.png);
+}
+
+sbr {
+ display: inline;
+ content: "\A";
+ color: gray;
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/docbook2.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/docbook2.imp
new file mode 100644
index 0000000..d558ca7
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/docbook2.imp
@@ -0,0 +1,1292 @@
+/*
+ * Copyright (c) 2003-2010 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for elements found in Simplified DocBook
+ * (and closely related elements even if not found in Simplified DocBook).
+ */
+
+/* =====================================
+ Article structure
+===================================== */
+
+sconsdoc,
+article {
+ display: block;
+}
+
+article > title {
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+title,
+subtitle,
+titleabbrev {
+ display: block;
+ color: #004080;
+ margin: 1.33ex 0;
+}
+
+title,
+subtitle {
+ font-weight: bold;
+}
+
+/* -------------------------------------
+ Sections
+------------------------------------- */
+
+section,
+sect1,
+sect2,
+sect3,
+sect4,
+sect5,
+simplesect {
+ display: block;
+}
+
+tool,
+builder,
+scons_function,
+cvar {
+ display: block;
+}
+
+sconsdoc > tool:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "Tool '" attr(name) "'";
+}
+
+sconsdoc > builder:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "Builder '" attr(name) "'";
+}
+
+sconsdoc > scons_function:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "Function '" attr(name) "'";
+}
+
+sconsdoc > cvar:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "CVar '" attr(name) "'";
+}
+
+cvar > summary:before,
+scons_function > summary:before,
+builder > summary:before,
+tool > summary:before {
+ font-size: 1.3em;
+ font-weight: bold;
+ margin: .83ex 0;
+ display: block;
+ content: "Summary: ";
+}
+
+scons_function > arguments:before {
+ font-size: 1.2em;
+ margin: .83ex 0;
+ display: block;
+ content: "Arguments";
+}
+
+section > title,
+sect1 > title {
+ font-size: 1.5em;
+ margin: .83ex 0;
+}
+
+section > title:before,
+sect1 > title:before {
+ content: simple-counter(n-) " ";
+}
+
+section section > title,
+sect2 > title {
+ font-size: 1.3em;
+ margin: 1ex 0;
+}
+
+section * section > title {
+ font-size: 1em;
+ margin: 1.33ex 0;
+}
+
+section section > title:before,
+sect2 > title:before {
+ content: simple-counter(nn-) " ";
+}
+
+section section section > title:before,
+sect3 > title:before {
+ content: simple-counter(nnn-) " ";
+}
+
+section section section section > title:before,
+sect4 > title:before {
+ content: simple-counter(nnnn-) " ";
+}
+
+section section section * section > title:before {
+ content: "";
+}
+
+/* -------------------------------------
+ Appendix
+------------------------------------- */
+
+appendix {
+ display: block;
+}
+
+appendix > title { /* in a book or in a part */
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+article > appendix > title {
+ font-size: 1.5em;
+ margin: 0.83ex 0;
+ border-width: 0;
+ border-style: none;
+}
+
+appendix > title:before {
+ content: "Appendix " simple-counter(n-, upper-alpha) ": ";
+}
+
+/* =====================================
+ Paragraphs
+===================================== */
+
+para,
+simpara {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+/* =====================================
+ Lists
+===================================== */
+
+/* -------------------------------------
+ itemizedlist
+------------------------------------- */
+
+uses,
+sets,
+itemizedlist {
+ display: block;
+ margin-left: 2ex; /* all lists are slightly indented */
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+listitem {
+ display: block;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+uses[spacing=compact] > listitem,
+sets[spacing=compact] > listitem,
+itemizedlist[spacing=compact] > listitem,
+orderedlist[spacing=compact] > listitem {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+listitem > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+uses > listitem,
+sets > listitem,
+itemizedlist > listitem {
+ margin-left: 2.5ex;
+}
+
+uses > listitem:before,
+sets > listitem:before,
+itemizedlist > listitem:before {
+ display: marker;
+ content: disc;
+ color: #004080;
+}
+
+itemizedlist > listitem itemizedlist > listitem:before {
+ content: square;
+}
+
+itemizedlist > listitem itemizedlist > listitem itemizedlist >
+listitem:before {
+ content: icon(diamond);
+}
+
+itemizedlist > listitem itemizedlist > listitem itemizedlist >
+listitem itemizedlist > listitem:before {
+ content: circle;
+}
+
+/* -------------------------------------
+ orderedlist
+------------------------------------- */
+
+orderedlist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+ counter-reset: item;
+}
+
+orderedlist[continuation=continues] {
+ counter-reset: none;
+}
+
+orderedlist > listitem {
+ margin-left: 6ex;
+ counter-increment: item;
+}
+
+orderedlist > listitem:before {
+ display: marker;
+ content: counter(item, decimal) ".";
+ font-weight: bold;
+ color: #004080;
+}
+
+orderedlist[numeration=loweralpha] > listitem:before {
+ content: counter(item, lower-alpha) ".";
+}
+
+orderedlist[numeration=upperalpha] > listitem:before {
+ content: counter(item, upper-alpha) ".";
+}
+
+orderedlist[numeration=lowerroman] > listitem:before {
+ content: counter(item, lower-roman) ".";
+}
+
+orderedlist[numeration=upperroman] > listitem:before {
+ content: counter(item, upper-roman) ".";
+}
+
+orderedlist[inheritnum=inherit] > listitem:before,
+orderedlist[inheritnum=inherit][numeration=arabic] > listitem:before {
+ content: counters(item, ".", decimal) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=loweralpha] > listitem:before {
+ content: counters(item, ".", lower-alpha) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=upperalpha] > listitem:before {
+ content: counters(item, ".", upper-alpha) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=lowerroman] > listitem:before {
+ content: counters(item, ".", lower-roman) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=upperroman] > listitem:before {
+ content: counters(item, ".", upper-roman) ".";
+}
+
+/* -------------------------------------
+ variablelist
+------------------------------------- */
+
+variablelist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+varlistentry {
+ display: block;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+variablelist[spacing=compact] > varlistentry {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+term {
+ display: block;
+ font-weight: bold;
+}
+
+varlistentry > listitem {
+ margin-left: 4ex;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+/* =====================================
+ Figures
+===================================== */
+
+programlisting,
+screen,
+scons_example,
+scons_example_file,
+example_commands,
+sconstruct,
+scons_output,
+scons_output_command,
+file,
+directory,
+literallayout,
+synopsis {
+ display: block;
+ white-space: pre;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+example_commands,
+programlisting {
+ background-color: #EEEEEE;
+ border: thin solid gray;
+ padding: 2px;
+}
+
+scons_example,
+sconstruct,
+scons_output {
+ background-color: #94CAEE;
+ border: thin solid gray;
+ padding: 2px;
+}
+
+file,
+directory,
+scons_example_file {
+ background-color: #EED27B;
+}
+
+screen {
+ background-color: #EEEEFF;
+ border: thin solid #8888FF;
+ padding: 2px;
+}
+
+figure,
+informalfigure,
+example,
+informalexample {
+ display: block;
+ margin: 1.33ex auto;
+}
+
+figure > title,
+example > title {
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 0; /* content of figure generally already has a margin */
+}
+
+mediaobject {
+ display: table;
+ border-spacing: 2px;
+ margin: 1.33ex auto;
+}
+
+inlinemediaobject {
+ display: inline-table;
+ border-spacing: 2px;
+}
+
+caption {
+ display: table-caption;
+ color: #004080;
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ /* content of caption already has a margin */
+}
+
+audioobject,
+videoobject,
+imageobject,
+textobject {
+ display: table-cell; /* this will create one row per cell */
+ text-align: center;
+}
+
+objectinfo {
+ text-align: left;
+}
+
+mediaobject > objectinfo {
+ display: table-cell;
+}
+
+audiodata {
+ display: inline;
+ content: url(icons/audio.png);
+}
+
+videodata {
+ display: inline;
+ content: url(icons/video.png);
+}
+
+/*
+ * imagedata is defined in image.imp.
+ */
+
+textdata {
+ display: inline;
+ content: url(icons/text.png);
+}
+
+/* =====================================
+ Divisions
+===================================== */
+
+abstract {
+ display: block;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+abstract > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+abstract:before {
+ display: marker;
+ content: element-label();
+ font-weight: bold;
+ color: #004080;
+}
+
+blockquote,
+epigraph {
+ display: block;
+ margin: 1.33ex 10ex;
+}
+
+blockquote > title {
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 0; /* content of blockquote already has a margin */
+}
+
+attribution {
+ display: block;
+ text-align: right;
+}
+
+attribution:before {
+ content: " -- ";
+}
+
+footnote {
+ display: block;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+ margin-right: 10ex;
+ font-size: small;
+ padding: 2px;
+ background-color: #F0F0FF;
+}
+
+footnote > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+footnote:before {
+ display: marker;
+ content: element-label();
+ color: #004080;
+}
+
+footnote[label]:before {
+ content: "[" attr(label) "]";
+}
+
+note,
+caution,
+important,
+tip,
+warning {
+ display: block;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+note > *:first-child,
+caution > *:first-child,
+important > *:first-child,
+tip > *:first-child,
+warning > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+note:before,
+caution:before,
+important:before,
+tip:before,
+warning:before {
+ display: marker;
+ content: element-label();
+ font-weight: bold;
+ color: #004080;
+}
+
+sidebar {
+ display: block;
+ margin: 1.33ex 0;
+ border: thin solid #80F880;
+ background-color: #E0F8E0;
+ padding: 2px;
+}
+
+sidebar > title {
+ margin: 0; /* content of sidebar already has a margin */
+}
+
+/* =====================================
+ Special sections
+===================================== */
+
+/* -------------------------------------
+ Bibliography
+ (complemented in docbook1.imp)
+------------------------------------- */
+
+bibliography,
+bibliodiv,
+bibliolist {
+ display: block;
+ /* content of bibliography has a margin */
+}
+
+bibliomixed,
+bibliomset,
+biblioentry,
+biblioset {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+bibliomixed,
+biblioentry {
+ border: thin solid gray;
+ padding: 2px;
+}
+
+bibliomixed > title,
+bibliomixed > subtitle,
+bibliomixed > titleabbrev,
+bibliomset > title,
+bibliomset > subtitle,
+bibliomset > titleabbrev,
+biblioentry > title,
+biblioentry > subtitle,
+biblioentry > titleabbrev,
+biblioset > title,
+biblioset > subtitle,
+biblioset > titleabbrev {
+ /* title of a bibliography entry, not ``caption'' of a formal block */
+ font-weight: normal;
+ font-size: 1em;
+ color: black;
+}
+
+bibliomixed > title,
+bibliomixed > subtitle,
+bibliomixed > titleabbrev,
+bibliomset > title,
+bibliomset > subtitle,
+bibliomset > titleabbrev {
+ display: inline;
+}
+
+bibliomixed > title,
+bibliomixed > subtitle,
+bibliomset > title,
+bibliomset > subtitle {
+ font-style: italic;
+}
+
+bibliomisc {
+ display: inline;
+}
+
+/* -------------------------------------
+ Meta-information
+ (complemented in docbook1.imp)
+------------------------------------- */
+
+appendixinfo,
+articleinfo,
+bibliographyinfo,
+blockinfo,
+bookinfo,
+chapterinfo,
+glossaryinfo,
+indexinfo,
+objectinfo,
+partinfo,
+prefaceinfo,
+refentryinfo,
+refmeta,
+referenceinfo,
+refsect1info,
+refsect2info,
+refsect3info,
+refsectioninfo,
+refsynopsisdivinfo,
+sect1info,
+sect2info,
+sect3info,
+sect4info,
+sect5info,
+sectioninfo,
+setindexinfo,
+setinfo,
+sidebarinfo {
+ display: block;
+ margin: 1.33ex 0;
+ border: thin solid #C0F8F8;
+ background-color: #E0F8F8;
+ padding: 2px;
+}
+
+authorgroup {
+ display: block;
+ /* content of authorgroup has a margin */
+}
+
+author,
+editor,
+othercredit {
+ display: block; /* can contain authorblurb, address */
+ margin: 1.33ex 0;
+}
+
+personname {
+ display: inline;
+}
+
+honorific,
+firstname,
+surname,
+lineage,
+othername {
+ display: inline;
+}
+
+honorific:after,
+firstname:after,
+surname:after,
+lineage:after,
+othername:after {
+ content: " ";
+}
+
+contrib {
+ display: inline;
+}
+
+authorblurb,
+personblurb {
+ display: block;
+ /* content of authorblurb has a margin */
+}
+
+corpauthor,
+corpname {
+ /* Could be block but inline is safer when used in strange places
+ and when used in meta-info, display is forced to be block. */
+ display: inline;
+}
+
+affiliation {
+ display: block; /* can contain address */
+ margin: 1.33ex 0;
+}
+
+shortaffil,
+jobtitle,
+orgname,
+orgdiv {
+ display: inline;
+}
+
+shortaffil:after,
+affiliation > jobtitle:after,
+affiliation > orgname:after,
+orgdiv:after {
+ content: " ";
+}
+
+copyright {
+ display: inline;
+}
+
+year,
+holder {
+ display: inline;
+}
+
+year:after,
+holder:after {
+ content: " ";
+}
+
+date,
+pubdate {
+ display: inline;
+}
+
+edition {
+ display: inline;
+}
+
+issuenum {
+ display: inline;
+}
+
+keywordset,
+subjectset {
+ display: inline;
+}
+
+keyword,
+subject,
+subjectterm {
+ display: inline;
+}
+
+keyword:after,
+subjectterm:after {
+ content: " ";
+}
+
+legalnotice {
+ display: block;
+ /* content of legalnotice has a margin */
+}
+
+publishername {
+ display: inline;
+}
+
+releaseinfo {
+ display: inline;
+}
+
+revhistory {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+revision {
+ display: block;
+ margin-left: 2.5ex;
+}
+
+revision:before {
+ display: marker;
+ content: icon(right);
+ color: #004080;
+}
+
+revision > author,
+authorinitials {
+ display: inline;
+ font-weight: bold;
+}
+
+revnumber,
+revremark {
+ display: inline;
+}
+
+revnumber:after,
+revision > date:after,
+revision > author:after,
+revision > authorinitials:after {
+ content: " ";
+}
+
+revdescription {
+ display: block;
+ /* content of revdescription has a margin */
+}
+
+volumenum {
+ display: inline;
+}
+
+/* ---------------------------------------------------------------------------
+ Inlined elements other than those belonging to modules
+
+ Note that default display is inline, so there is no need to specify it.
+--------------------------------------------------------------------------- */
+
+emphasis {
+ font-style: italic;
+}
+emphasis[role=bold] {
+ font-style: normal;
+ font-weight: bold;
+}
+emphasis[role=underline] {
+ font-style: normal;
+ text-decoration: underline;
+}
+emphasis[role=strikethrough] {
+ font-style: normal;
+ text-decoration: line-through;
+}
+
+emphasis > emphasis {
+ font-style: normal;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+directory,
+literal {
+ font-family: monospace;
+}
+
+link,
+ulink,
+email {
+ color: navy;
+ text-decoration: underline;
+}
+
+/* -------------------------------------
+ Technical
+------------------------------------- */
+
+command,
+computeroutput,
+filename,
+option,
+systemitem,
+userinput {
+ font-family: monospace;
+}
+
+computeroutput,
+userinput {
+ background-color: #EEEEEE;
+}
+
+command,
+option {
+ font-weight: bold;
+}
+
+lineannotation {
+ font-style: italic;
+ font-size: medium; /* occurs in verbatim, fixed font, blocks */
+}
+
+replaceable {
+ font-style: italic;
+}
+
+/* -------------------------------------
+ General
+------------------------------------- */
+
+anchor {
+ content: icon(right-target);
+ color: gray;
+}
+
+subscript,
+superscript {
+ display: inline-block;
+ white-space: nowrap;
+ font-size: small;
+}
+subscript {
+ vertical-align: sub;
+}
+superscript {
+ vertical-align: super;
+}
+
+abbrev,
+acronym {
+ font-weight: bold;
+}
+
+citetitle {
+ font-style: italic;
+}
+
+footnoteref {
+ content: "[" attr(linkend) "]";
+ font-size: small;
+ vertical-align: super;
+ color: navy;
+}
+
+footnoteref[label] {
+ content: "[" attr(label) "]";
+}
+
+phrase[revisionflag=deleted] {
+ text-decoration: line-through;
+}
+
+phrase[revisionflag=added] {
+ text-decoration: underline;
+}
+
+quote:before {
+ content: open-quote;
+ font-weight: bold;
+ color: gray;
+}
+
+quote:after {
+ content: close-quote;
+ font-weight: bold;
+ color: gray;
+}
+
+trademark,
+productname {
+ color: #004080;
+}
+
+trademark:after,
+productname:after {
+ font-size: small;
+ color: gray;
+}
+
+trademark:after, /* also works for class=trade */
+productname[class=trade]:after {
+ content: "[tm]";
+}
+
+trademark[class=copyright]:after,
+productname[class=copyright]:after {
+ content: "\A9";
+ font-size: medium;
+}
+
+trademark[class=registered]:after,
+productname[class=registered]:after {
+ content: "\AE";
+ font-size: medium;
+}
+
+trademark[class=service]:after,
+productname[class=service]:after {
+ content: "[sm]";
+}
+
+xref {
+ content: icon(left-link)
+ xpath("if(id(@linkend)/@xreflabel, id(@linkend)/@xreflabel, @linkend)");
+ vertical-align: text-top; /* for the icon */
+ color: navy;
+}
+
+xref[endterm] {
+ content: icon(left-link) xpath("if(id(@endterm), id(@endterm), @endterm)");
+}
+
+/* ---------------------------------------------------------------------------
+ Overrides natural display of elements in special sections
+ (must be at the very end of the style sheet)
+--------------------------------------------------------------------------- */
+
+/* -------------------------------------
+ Bibliography
+------------------------------------- */
+
+biblioentry > *,
+biblioset > * {
+ display: block;
+ text-align: left; /* Reset paragraph styles */
+ font: normal normal 1em sans-serif;
+ color: black;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+biblioentry > *:first-child,
+biblioset > *:first-child { /* nicer */
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+biblioentry > *:before,
+biblioset > *:before {
+ display: marker;
+ content: element-label();
+ font: normal normal small sans-serif;
+ color: #004080;
+}
+
+biblioentry > *:after,
+biblioset > *:after {
+ content: "";
+}
+
+biblioentry > biblioset,
+biblioset > biblioset {
+ margin-left: 0;
+}
+
+biblioentry > biblioset:before,
+biblioset > biblioset:before {
+ content: "";
+}
+
+/* -------------------------------------
+ Meta-information
+------------------------------------- */
+
+appendixinfo > *,
+articleinfo > *,
+bibliographyinfo > *,
+blockinfo > *,
+bookinfo > *,
+chapterinfo > *,
+glossaryinfo > *,
+indexinfo > *,
+objectinfo > *,
+partinfo > *,
+prefaceinfo > *,
+refentryinfo > *,
+refmeta > *,
+referenceinfo > *,
+refsect1info > *,
+refsect2info > *,
+refsect3info > *,
+refsectioninfo > *,
+refsynopsisdivinfo > *,
+sect1info > *,
+sect2info > *,
+sect3info > *,
+sect4info > *,
+sect5info > *,
+sectioninfo > *,
+setindexinfo > *,
+setinfo > *,
+sidebarinfo > * {
+ display: block;
+ text-align: left; /* Reset paragraph styles */
+ font: normal normal 1em sans-serif;
+ color: black;
+ margin-left: 18ex;
+ margin-right: 0;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+appendixinfo > *:first-child,
+articleinfo > *:first-child,
+bibliographyinfo > *:first-child,
+blockinfo > *:first-child,
+bookinfo > *:first-child,
+chapterinfo > *:first-child,
+glossaryinfo > *:first-child,
+indexinfo > *:first-child,
+objectinfo > *:first-child,
+partinfo > *:first-child,
+prefaceinfo > *:first-child,
+refentryinfo > *:first-child,
+refmeta > *:first-child,
+referenceinfo > *:first-child,
+refsect1info > *:first-child,
+refsect2info > *:first-child,
+refsect3info > *:first-child,
+refsectioninfo > *:first-child,
+refsynopsisdivinfo > *:first-child,
+sect1info > *:first-child,
+sect2info > *:first-child,
+sect3info > *:first-child,
+sect4info > *:first-child,
+sect5info > *:first-child,
+sectioninfo > *:first-child,
+setindexinfo > *:first-child,
+setinfo > *:first-child,
+sidebarinfo > *:first-child { /* nicer */
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+appendixinfo > *:before,
+articleinfo > *:before,
+bibliographyinfo > *:before,
+blockinfo > *:before,
+bookinfo > *:before,
+chapterinfo > *:before,
+glossaryinfo > *:before,
+indexinfo > *:before,
+objectinfo > *:before,
+partinfo > *:before,
+prefaceinfo > *:before,
+refentryinfo > *:before,
+refmeta > *:before,
+referenceinfo > *:before,
+refsect1info > *:before,
+refsect2info > *:before,
+refsect3info > *:before,
+refsectioninfo > *:before,
+refsynopsisdivinfo > *:before,
+sect1info > *:before,
+sect2info > *:before,
+sect3info > *:before,
+sect4info > *:before,
+sect5info > *:before,
+sectioninfo > *:before,
+setindexinfo > *:before,
+setinfo > *:before,
+sidebarinfo > *:before {
+ display: marker;
+ content: element-label();
+ font: normal normal small sans-serif;
+ color: #004080;
+}
+
+appendixinfo > *:after,
+articleinfo > *:after,
+bibliographyinfo > *:after,
+blockinfo > *:after,
+bookinfo > *:after,
+chapterinfo > *:after,
+glossaryinfo > *:after,
+indexinfo > *:after,
+objectinfo > *:after,
+partinfo > *:after,
+prefaceinfo > *:after,
+refentryinfo > *:after,
+refmeta > *:after,
+referenceinfo > *:after,
+refsect1info > *:after,
+refsect2info > *:after,
+refsect3info > *:after,
+refsectioninfo > *:after,
+refsynopsisdivinfo > *:after,
+sect1info > *:after,
+sect2info > *:after,
+sect3info > *:after,
+sect4info > *:after,
+sect5info > *:after,
+sectioninfo > *:after,
+setindexinfo > *:after,
+setinfo > *:after,
+sidebarinfo > *:after {
+ content: "";
+}
+
+appendixinfo > title,
+articleinfo > title,
+bibliographyinfo > title,
+blockinfo > title,
+bookinfo > title,
+chapterinfo > title,
+glossaryinfo > title,
+indexinfo > title,
+objectinfo > title,
+partinfo > title,
+prefaceinfo > title,
+refentryinfo > title, /* refmeta has no title */
+referenceinfo > title,
+refsect1info > title,
+refsect2info > title,
+refsect3info > title,
+refsectioninfo > title,
+refsynopsisdivinfo > title,
+sect1info > title,
+sect2info > title,
+sect3info > title,
+sect4info > title,
+sect5info > title,
+sectioninfo > title,
+setindexinfo > title,
+setinfo > title,
+sidebarinfo > title {
+ font-size: 1.3em;
+ font-weight: bold;
+ color: #004080;
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: 0;
+ margin-bottom: 1ex;
+}
+
+appendixinfo > title:before,
+articleinfo > title:before,
+bibliographyinfo > title:before,
+blockinfo > title:before,
+bookinfo > title:before,
+chapterinfo > title:before,
+glossaryinfo > title:before,
+indexinfo > title:before,
+objectinfo > title:before,
+partinfo > title:before,
+prefaceinfo > title:before,
+refentryinfo > title:before,
+referenceinfo > title:before,
+refsect1info > title:before,
+refsect2info > title:before,
+refsect3info > title:before,
+refsectioninfo > title:before,
+refsynopsisdivinfo > title:before,
+sect1info > title:before,
+sect2info > title:before,
+sect3info > title:before,
+sect4info > title:before,
+sect5info > title:before,
+sectioninfo > title:before,
+setindexinfo > title:before,
+setinfo > title:before,
+sidebarinfo > title:before {
+ content: "";
+}
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/example1.css b/doc/editor_configs/xmlmind/addon/config/scons/css/example1.css
new file mode 100644
index 0000000..857d561
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/example1.css
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2003-2008 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * A CSS style sheet for DocBook V4.5.
+ */
+
+doc,
+para {
+ display: block;
+}
+para {
+ margin: 1ex 0;
+}
+para[align] {
+ text-align: concatenate(attr(align));
+}
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/html_cals_table.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/html_cals_table.imp
new file mode 100644
index 0000000..dd62d3d
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/html_cals_table.imp
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2005-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for both HTML and CALS tables (DocBook 4.3+).
+ */
+
+@import "table.imp";
+
+/*
+ * "black" is the color used to draw a border around the table and its cells
+ * based on values of attributes such as frame, rowsep and colsep.
+ *
+ * "rgb(238,238,224)" (a very light gray) is the color used to draw
+ * a border around each cell whether the cell actually has borders or not.
+ * Remove this parameter if this ``cell footprint'' disturbs you.
+ *
+ * For more information about table support for DocBook, see
+ * XMLmind XML Editor - Configuration and Deployment.
+ */
+@extension "com.xmlmind.xmleditext.docbook.TableSupport black rgb(238,238,224)";
+
+/*
+ * Real DocBook tables (CALS) contain (graphic+|mediaobject+|tgroup+)
+ * not (tbody+|tr+).
+ */
+
+table:contains-element(tr),
+table:contains-element(tbody),
+informaltable:contains-element(tr),
+informaltable:contains-element(tbody) {
+ display: table;
+ border-style: solid;
+ border-width: 1;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+table:contains-element(tr) > caption,
+table:contains-element(tbody) > caption,
+informaltable:contains-element(tr) > caption,
+informaltable:contains-element(tbody) > caption {
+ display: table-caption;
+ color: #004080;
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 2px 2ex 2px 2ex;
+}
+
+colgroup {
+ display: table-column-group;
+ collapsed: yes;
+}
+
+col {
+ display: table-column;
+ collapsed: yes;
+}
+
+/*
+ * thead, tbody, tfoot, already properly styled in table.imp.
+ */
+
+table:contains-element(tbody) > thead,
+table:contains-element(tbody) > tfoot {
+ /*
+ * In CALS tables, header and footer rows are often presented
+ * in an alternate typographic style, such as boldface.
+ * There is no such processing expectation for HTML tables.
+ * Explicitly use th instead of td when boldface is needed.
+ */
+ font-weight: normal;
+}
+
+tr {
+ display: table-row;
+ background-color: inherit; /*e.g. from read-only tbody*/
+}
+
+td,
+th {
+ display: table-cell;
+ background-color: inherit; /*e.g. from read-only row*/
+ border-style: solid;
+ border-width: 1;
+ padding: 2;
+}
+
+th {
+ font-weight: bold;
+}
+
+@media print {
+ colgroup,
+ col {
+ display: none;
+ }
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/image.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/image.imp
new file mode 100644
index 0000000..dd1d65f
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/image.imp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2004-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Display of images.
+ */
+
+mediaobject imagedata {
+ display: block; /* without this, a viewport specified as % will not work */
+ margin: 0 auto;
+}
+
+inlinemediaobject imagedata {
+ display: inline;
+}
+
+graphic,
+inlinegraphic,
+imagedata {
+ content: gadget("com.xmlmind.xmleditext.docbook.Graphic");
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/print.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/print.imp
new file mode 100644
index 0000000..d12a18b
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/print.imp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2003-2005 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Customizes DocBook CSS style sheet for printing.
+ */
+
+@media print {
+ * {
+ background-color: transparent;
+ line-height: 1.2;
+ }
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/refentry.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/refentry.imp
new file mode 100644
index 0000000..80f1890
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/refentry.imp
@@ -0,0 +1,524 @@
+/*
+ * Copyright (c) 2003 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for refentry elements.
+ */
+
+/* =====================================
+ Refentry structure
+===================================== */
+
+refentry {
+ display: block;
+ border-width: 1px;
+ border-style: solid;
+ border-color: silver transparent silver transparent;
+ margin: 3ex 0;
+}
+
+refnamediv,
+refsynopsisdiv {
+ display: block;
+ margin: 1ex 0;
+}
+
+refnamediv:before,
+refsynopsisdiv:before {
+ display: block;
+ font-size: 1.3em;
+ font-weight: bold;
+ color: #004080;
+ margin: 1ex 0;
+}
+
+refnamediv:before {
+ content: "Name";
+}
+
+refnamediv > *:before {
+ content: " ";
+}
+
+refnamediv > *:first-child:before {
+ content: "";
+}
+
+refdescriptor,
+refname,
+refpurpose,
+refclass {
+ display: inline;
+}
+
+refpurpose:before,
+refclass:before {
+ content: " -- ";
+ color: gray;
+}
+
+refsynopsisdiv:before {
+ content: "Synopsis";
+}
+
+refsynopsisdiv:contains-element(title):before,
+refsynopsisdiv:contains-element(info):before {
+ content: "";
+}
+
+refsynopsisdiv > title {
+ font-size: 1.3em;
+ margin-top: 0;
+ margin-bottom: 1ex;
+}
+
+refsection,
+refsect1,
+refsect2,
+refsect3 {
+ display: block;
+}
+
+refsection > title,
+refsect1 > title {
+ font-size: 1.3em;
+ margin: 1ex 0;
+}
+
+refsection refsection > title {
+ font-size: 1em;
+ margin: 1.33ex 0;
+}
+
+/* =====================================
+ Synopsis environments
+===================================== */
+
+/* -------------------------------------
+ cmdsynopsis
+------------------------------------- */
+
+cmdsynopsis {
+ display: block;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+synopfragment {
+ display: block;
+ font-family: monospace;
+ margin-left: 4ex;
+}
+
+arg,
+group {
+ display: inline;
+}
+
+arg:before,
+group:before { /* also works for choice=opt */
+ content: " [";
+ color: gray;
+}
+
+group > arg:before,
+group > group:before {
+ content: " | [";
+}
+
+arg:first-child:before,
+group:first-child:before {
+ content: "[";
+}
+
+arg:after,
+group:after {
+ content: "]";
+ color: gray;
+}
+
+arg[rep=repeat]:after,
+group[rep=repeat]:after {
+ content: "]...";
+ color: gray;
+}
+
+arg[choice=req]:before,
+group[choice=req]:before {
+ content: " {";
+}
+
+group > arg[choice=req]:before,
+group > group[choice=req]:before {
+ content: " | {";
+}
+
+arg[choice=req]:first-child:before,
+group[choice=req]:first-child:before {
+ content: "{";
+}
+
+arg[choice=req]:after,
+group[choice=req]:after {
+ content: "}";
+}
+
+arg[choice=req][rep=repeat]:after,
+group[choice=req][rep=repeat]:after {
+ content: "}...";
+}
+
+arg[choice=plain]:before,
+group[choice=plain]:before {
+ content: " ";
+}
+
+group > arg[choice=plain]:before,
+group > group[choice=plain]:before {
+ content: " | ";
+}
+
+arg[choice=plain]:first-child:before,
+group[choice=plain]:first-child:before {
+ content: "";
+}
+
+arg[choice=plain]:after,
+group[choice=plain]:after {
+ content: "";
+}
+
+arg[choice=plain][rep=repeat]:after,
+group[choice=plain][rep=repeat]:after {
+ content: "...";
+}
+
+synopfragmentref {
+ display: inline;
+ color: navy;
+ text-decoration: underline;
+}
+
+synopfragmentref:after {
+ content: icon(left-link) attr(linkend);
+ vertical-align: text-top; /* for the icon */
+}
+
+/* -------------------------------------
+ funcsynopsis
+------------------------------------- */
+
+funcsynopsis {
+ display: block;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+funcsynopsisinfo {
+ display: block;
+ white-space: pre;
+ margin: 1.33ex 0;
+}
+
+funcprototype {
+ display: block;
+}
+
+funcprototype > *:before {
+ content: " ";
+}
+
+funcprototype > *:first-child:before {
+ content: "";
+}
+
+funcprototype:after {
+ content: ";";
+ color: gray;
+}
+
+funcdef {
+ display: inline;
+}
+
+void {
+ display: inline;
+ content: "void";
+ color: gray;
+}
+
+funcprototype > void {
+ content: "(void)";
+}
+
+varargs {
+ display: inline;
+ content: "(...)";
+ color: gray;
+}
+
+paramdef + varargs {
+ content: ", ...)";
+}
+
+paramdef {
+ display: inline;
+}
+
+paramdef > parameter {
+ font-style: italic;
+}
+
+paramdef:before {
+ content: ", ";
+ color: gray;
+}
+
+paramdef:first-of-type:before {
+ content: " (";
+}
+
+paramdef:last-of-type:after {
+ content: ")";
+ color: gray;
+}
+
+funcparams {
+ display: inline;
+}
+
+paramdef > funcparams:before {
+ content: "(";
+ color: gray;
+}
+
+paramdef > funcparams:after {
+ content: ")";
+ color: gray;
+}
+
+/* -------------------------------------
+ classsynopsis
+------------------------------------- */
+
+classsynopsis {
+ display: block;
+ font-family: monospace;
+ margin-top: 1.33ex;
+}
+
+ooclass + classsynopsisinfo:before,
+oointerface + classsynopsisinfo:before,
+ooexception + classsynopsisinfo:before,
+ooclass + fieldsynopsis:before,
+oointerface + fieldsynopsis:before,
+ooexception + fieldsynopsis:before,
+ooclass + constructorsynopsis:before,
+oointerface + constructorsynopsis:before,
+ooexception + constructorsynopsis:before,
+ooclass + destructorsynopsis:before,
+oointerface + destructorsynopsis:before,
+ooexception + destructorsynopsis:before,
+ooclass + methodsynopsis:before,
+oointerface + methodsynopsis:before,
+ooexception + methodsynopsis:before {
+ display: block;
+ content: "{";
+ color: gray;
+}
+
+classsynopsis:after {
+ display: block;
+ content: "}";
+ color: gray;
+ margin-bottom: 1.33ex;
+}
+
+classsynopsisinfo {
+ display: block;
+ white-space: pre;
+ margin-left: 4ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+ooclass,
+oointerface,
+ooexception {
+ display: inline;
+ font-family: monospace;
+}
+
+classsynopsis > ooclass:after,
+classsynopsis > oointerface:after,
+classsynopsis > ooexception:after {
+ content: " ";
+}
+
+ooclass > *:before,
+oointerface > *:before,
+ooexception > *:before {
+ content: " ";
+}
+
+ooclass > classname:before {
+ content: " class ";
+ color: gray;
+}
+oointerface > interfacename:before {
+ content: " interface ";
+ color: gray;
+}
+ooexception > exceptionname:before {
+ content: " exception ";
+ color: gray;
+}
+
+ooclass > *:first-child:before,
+oointerface > *:first-child:before,
+ooexception > *:first-child:before {
+ content: "";
+}
+
+ooclass > classname:first-child:before {
+ content: "class ";
+ color: gray;
+}
+oointerface > interfacename:first-child:before {
+ content: "interface ";
+ color: gray;
+}
+ooexception > exceptionname:first-child:before {
+ content: "exception ";
+ color: gray;
+}
+
+fieldsynopsis,
+constructorsynopsis,
+destructorsynopsis,
+methodsynopsis {
+ display: block;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+classsynopsis > fieldsynopsis,
+classsynopsis > constructorsynopsis,
+classsynopsis > destructorsynopsis,
+classsynopsis > methodsynopsis {
+ margin-left: 4ex;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+fieldsynopsis:after,
+constructorsynopsis:after,
+destructorsynopsis:after,
+methodsynopsis:after {
+ content: ";";
+ color: gray;
+}
+
+fieldsynopsis > *:before,
+constructorsynopsis > *:before,
+destructorsynopsis > *:before,
+methodsynopsis > *:before {
+ content: " ";
+}
+
+fieldsynopsis > *:first-child:before,
+constructorsynopsis > *:first-child:before,
+destructorsynopsis > *:first-child:before,
+methodsynopsis > *:first-child:before {
+ content: "";
+}
+
+constructorsynopsis > exceptionname:before,
+destructorsynopsis > exceptionname:before,
+methodsynopsis > exceptionname:before { /*In practice, cannot be first child*/
+ content: " throws ";
+ color: gray;
+}
+
+methodname + void {
+ content: "(void)";
+}
+
+methodparam {
+ display: inline;
+ /* rep and choice attributes not visualized */
+}
+
+methodparam:before {
+ content: ", ";
+ color: gray;
+}
+
+methodparam:first-of-type:before {
+ content: " (";
+}
+
+methodparam:last-of-type:after{
+ content: ")";
+ color: gray;
+}
+
+methodparam > parameter {
+ font-style: italic;
+}
+
+methodparam > *:before {
+ content: " ";
+}
+
+methodparam > *:first-child:before {
+ content: "";
+}
+
+modifier {
+ display: inline;
+ font-family: monospace;
+}
+
+initializer {
+ display: inline;
+ font-family: monospace;
+}
+
+initializer:before { /* Cannot be first child */
+ content: " = ";
+ color: gray;
+}
+
+/* ---------------------------------------------------------------------------
+ Inlined elements other than those belonging to modules
+
+ Note that default display is inline, so there is no need to specify it.
+--------------------------------------------------------------------------- */
+
+/* -------------------------------------
+ General
+------------------------------------- */
+
+citerefentry {
+ display: inline;
+ font-style: italic;
+}
+
+citerefentry > manvolnum:before {
+ content: "(";
+ color: gray;
+}
+
+citerefentry > manvolnum:after {
+ content: ")";
+ color: gray;
+}
+
+refentrytitle,
+manvolnum,
+refmiscinfo { /* also found in refmeta */
+ display: inline;
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/scons.css b/doc/editor_configs/xmlmind/addon/config/scons/css/scons.css
new file mode 100644
index 0000000..1597226
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/scons.css
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2003-2008 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * A CSS style sheet for DocBook V4.5.
+ */
+
+@import "docbook1.imp";
+@import "refentry.imp";
+@import "docbook2.imp";
+@import "html_cals_table.imp";
+@import "image.imp";
+@import "collapsible.imp";
+@import "print.imp";
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/structure.css b/doc/editor_configs/xmlmind/addon/config/scons/css/structure.css
new file mode 100644
index 0000000..95f4610
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/structure.css
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2005-2008 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Displays the structure (a little more than a TOC) of a DocBook document.
+ * Titles inside *info (e.g. sectioninfo) elements are not displayed.
+ */
+
+*,
+*:comment,
+*:processing-instruction {
+ display: none;
+}
+
+title {
+ display: block;
+}
+
+title > * {
+ display: inline;
+}
+
+set,
+book,
+part,
+reference,
+refentry,
+preface,
+chapter,
+article,
+appendix,
+section,
+sect1,
+sect2,
+sect3,
+sect4,
+sect5 {
+ display: block;
+ margin-left: 9ex;
+}
+
+set:before,
+book:before,
+part:before,
+reference:before,
+refentry:before,
+preface:before,
+chapter:before,
+article:before,
+appendix:before,
+section:before,
+sect1:before,
+sect2:before,
+sect3:before,
+sect4:before,
+sect5:before {
+ display: marker;
+ marker-offset: fill;
+ content: element-name();
+ font-size: small;
+ color: gray;
+}
+
+part > title:before {
+ content: simple-counter(n-, upper-roman) " ";
+}
+
+chapter > title:before {
+ content: simple-counter(n-, decimal) " ";
+}
+
+appendix > title:before {
+ content: simple-counter(n-, upper-alpha) " ";
+}
+
+refentry {
+ content: xpath("join(.//refname, ', ')");
+ color: gray;
+}
+
+section > title:before,
+sect1 > title:before {
+ content: simple-counter(n-) " ";
+}
+
+section section > title:before,
+sect2 > title:before {
+ content: simple-counter(nn-) " ";
+}
+
+section section section > title:before,
+sect3 > title:before {
+ content: simple-counter(nnn-) " ";
+}
+
+section section section section > title:before,
+sect4 > title:before {
+ content: simple-counter(nnnn-) " ";
+}
+
+section section section section section > title:before,
+sect5 > title:before {
+ content: simple-counter(nnnnn-) " ";
+}
+
+section section section section * section > title:before {
+ content: "";
+}
+
+setinfo,
+setindex,
+bookinfo,
+dedication,
+toc,
+lot,
+glossary,
+bibliography,
+index,
+colophon,
+partinfo,
+partintro,
+referenceinfo,
+prefaceinfo,
+chapterinfo,
+tocchap,
+articleinfo,
+appendixinfo,
+sectioninfo,
+sect1info,
+sect2info,
+sect3info,
+sect4info,
+sect5info {
+ display: block;
+ content: element-name();
+ font-size: small;
+ color: gray;
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/table.imp b/doc/editor_configs/xmlmind/addon/config/scons/css/table.imp
new file mode 100644
index 0000000..0b444bb
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/table.imp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2005-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Partial styles for DocBook tables. Requires an @extension.
+ * DO NOT IMPORT THIS FILE: INSTEAD @import cals_table.imp OR
+ * @import html_cals_table.imp.
+ */
+
+table,
+informaltable {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+table > title {
+ display: block;
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ /* keep margin because tgroup has no margin */
+}
+
+colspec,
+spanspec {
+ display: table-column;
+ collapsed: yes;
+}
+
+tgroup {
+ display: table;
+ border-style: solid;
+ border-width: 1;
+}
+
+thead,
+tfoot {
+ display: table-row-group;
+ font-weight: bold;
+}
+
+thead {
+ background-color: #F0F0F0;
+}
+
+tfoot {
+ background-color: #E0E0E0;
+}
+
+tbody {
+ display: table-row-group;
+ background-color: inherit; /*e.g. from read-only tgroup*/
+}
+
+row {
+ display: table-row;
+ background-color: inherit; /*e.g. from read-only tbody*/
+}
+
+entry {
+ display: table-cell;
+ background-color: inherit; /*e.g. from read-only row*/
+ border-style: solid;
+ border-width: 1;
+ padding: 2;
+}
+
+entry > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+entrytbl {
+ display: subtable;
+ background-color: inherit; /*e.g. from read-only row*/
+ border-style: solid;
+ border-width: 1;
+}
+
+@media print {
+ colspec,
+ spanspec {
+ display: none;
+ }
+}
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/css/visible_inclusions.css b/doc/editor_configs/xmlmind/addon/config/scons/css/visible_inclusions.css
new file mode 100644
index 0000000..f66b094
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/css/visible_inclusions.css
@@ -0,0 +1,9 @@
+/*
+ * Copyright (c) 2003-2004 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ */
+
+@import "docbook.css";
+@import "../../common/css/visible_inclusions.imp"; \ No newline at end of file
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/htmlTable.incl b/doc/editor_configs/xmlmind/addon/config/scons/htmlTable.incl
new file mode 100644
index 0000000..5ea16b8
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/htmlTable.incl
@@ -0,0 +1,195 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <!-- Without this, a tgroup is created with a tbody containing tr. -->
+
+ <cfg:elementTemplate xmlns="" name="CALS" selectable="override"
+ parent="tgroup|entrytbl">
+ <tbody>
+ <row><entry></entry></row>
+ </tbody>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="CALS" selectable="override"
+ parent="tgroup|entrytbl">
+ <thead>
+ <row><entry></entry></row>
+ </thead>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="CALS" selectable="override"
+ parent="tgroup|entrytbl">
+ <tfoot>
+ <row><entry></entry></row>
+ </tfoot>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="HTML" selectable="override"
+ parent="table|informaltable">
+ <tbody>
+ <tr><td></td></tr>
+ </tbody>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="HTML" selectable="override"
+ parent="table|informaltable">
+ <thead>
+ <tr><th></th></tr>
+ </thead>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="HTML" selectable="override"
+ parent="table|informaltable">
+ <tfoot>
+ <tr><th></th></tr>
+ </tfoot>
+ </cfg:elementTemplate>
+
+ <!-- HTML table templates =============================================== -->
+
+ <!-- selectable="false" is used to avoid clutter in the Element menu.
+ Therefore these templates can only be used by the macros triggered
+ by toobar buttons. -->
+
+ <elementTemplate name="HTML" selectable="false">
+ <informaltable xmlns="" border="1">
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row" selectable="false">
+ <informaltable xmlns="" frame="box" rules="all">
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </tbody>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_column" selectable="false">
+ <informaltable xmlns="" frame="box" rules="all">
+ <col align="center" span="1" />
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row_column" selectable="false">
+ <informaltable xmlns="" frame="box" rules="all">
+ <col align="center" span="1" />
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML" selectable="false">
+ <table xmlns="" border="1">
+ <caption></caption>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row" selectable="false">
+ <table xmlns="" frame="box" rules="all">
+ <caption></caption>
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </tbody>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_column" selectable="false">
+ <table xmlns="" frame="box" rules="all">
+ <caption></caption>
+ <col align="center" span="1" />
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row_column" selectable="false">
+ <table xmlns="" frame="box" rules="all">
+ <caption></caption>
+ <col align="center" span="1" />
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </table>
+ </elementTemplate>
+</configuration>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons.css b/doc/editor_configs/xmlmind/addon/config/scons/scons.css
new file mode 100644
index 0000000..8f52269
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons.css
@@ -0,0 +1,11 @@
+doc,
+para {
+ display: block;
+}
+para {
+ margin: 1ex 0;
+}
+para[align] {
+ text-align: concatenate(attr(align));
+}
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons.xxe b/doc/editor_configs/xmlmind/addon/config/scons/scons.xxe
new file mode 100644
index 0000000..8f835cc
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons.xxe
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration name="SCons" mimeType="application/docbook+xml"
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <help location="docbook_help.jar" />
+ <include location="common.incl" />
+
+ <detect>
+ <and>
+ <rootElementNamespace>http://www.scons.org/dbxsd/v1.0</rootElementNamespace>
+ </and>
+ </detect>
+ <schema>
+ <location>http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd</location>
+ </schema>
+ <template name="Book" location="scons_templates/book.xml" />
+ <template name="Article" location="scons_templates/article.xml" />
+ <template name="Part" location="scons_templates/part.xml" />
+ <template name="Chapter" location="scons_templates/chapter.xml" />
+ <template name="Refentry" location="scons_templates/refentry.xml" />
+ <template name="Appendix" location="scons_templates/appendix.xml" />
+ <template name="Glossary" location="scons_templates/glossary.xml" />
+ <template name="Section" location="scons_templates/section.xml" />
+ <template name="Sconsdoc" location="scons_templates/sconsdoc.xml" />
+
+ <css name="SCons" location="css/scons.css" />
+ <css name="Document structure" alternate="true"
+ location="css/structure.css" />
+ <!-- In principle, this is used to debug modular documents
+ but we think that some users may also like this way of
+ making documents modules more visible. -->
+ <css name="Show info about included elements" alternate="true"
+ location="css/visible_inclusions.css" />
+</configuration>
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons2.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons2.xml
new file mode 100644
index 0000000..9ae7978
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<article xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <para></para>
+</article>
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_catalog.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_catalog.xml
new file mode 100644
index 0000000..5146cfa
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_catalog.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" ?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
+ prefer="public">
+ <uri name="http://www.scons.org/dbxsd/v1.0/scons.xsd"
+ uri="scons_xsd/scons.xsd"/>
+ <uriSuffix uriSuffix="scons.xsd"
+ uri="scons_xsd/scons.xsd"/>
+</catalog>
+
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml
new file mode 100644
index 0000000..6091ddc
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<appendix xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+</appendix>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml
new file mode 100644
index 0000000..5bafcd0
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<article xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <articleinfo>
+ <title></title>
+ <author>
+ <firstname></firstname>
+ <surname></surname>
+ <affiliation>
+ <orgname></orgname>
+ </affiliation>
+ </author>
+ <pubdate></pubdate>
+ </articleinfo>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+</article>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml
new file mode 100644
index 0000000..a2fcf14
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <bookinfo>
+ <title></title>
+ <author>
+ <firstname></firstname>
+ <surname></surname>
+ <affiliation>
+ <orgname></orgname>
+ </affiliation>
+ </author>
+ <pubdate></pubdate>
+ </bookinfo>
+ <chapter>
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+ </chapter>
+</book>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml
new file mode 100644
index 0000000..aab17e0
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<chapter xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+</chapter>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml
new file mode 100644
index 0000000..cd3c723
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glossary xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <glossdiv>
+ <title></title>
+
+ <glossentry>
+ <glossterm></glossterm>
+
+ <glossdef>
+ <para></para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+</glossary>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml
new file mode 100644
index 0000000..e8e8de0
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<part xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <title></title>
+ <chapter>
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+ </chapter>
+</part>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml
new file mode 100644
index 0000000..399e346
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<refentry xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <refmeta>
+ <refentrytitle></refentrytitle>
+ <manvolnum></manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname></refname>
+ <refpurpose></refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command></command>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsection>
+ <title>Description</title>
+ <para></para>
+ </refsection>
+</refentry>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml
new file mode 100644
index 0000000..29101bb
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <tool name="Foo">
+ <summary>
+ <para></para>
+ </summary>
+ </tool>
+ <cvar name="BAR">
+ <summary>
+ <para></para>
+ </summary>
+ </cvar>
+</sconsdoc>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml
new file mode 100644
index 0000000..39ccf9e
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<section xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <title></title>
+ <para></para>
+</section>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/calstblx.xsd b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/calstblx.xsd
new file mode 100644
index 0000000..6f899a3
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/calstblx.xsd
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 .... -->
+<!-- File calstblx.xsd .................................................... -->
+
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook CALS Table Model V4.5 with:
+
+ Copyright 1992-2002 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ This DTD is based on the CALS Table Model
+ PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
+
+ $Id: calstblx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the CALS Table Model
+ converted to XML. It has been modified slightly for use in the
+ combined HTML/CALS models supported by DocBook V4.5.
+-->
+<!--
+ These definitions are not directly related to the table model, but are
+ used in the default CALS table model and are usually defined elsewhere
+ (and prior to the inclusion of this table module) in a CALS DTD.
+-->
+<!--
+ no if zero(s),
+ yes if any other digits value
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="yesorno">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:group name="titles">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- default for use in entry content -->
+ <!--
+ The parameter entities as defined below provide the CALS table model
+ as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+ These following declarations provide the CALS-compliant default definitions
+ for these entities. However, these entities can and should be redefined
+ (by giving the appropriate parameter entity declaration(s) prior to the
+ reference to this Table Model declaration set entity) to fit the needs
+ of the current application.
+ -->
+ <xs:group name="tbl.table-titles.mdl">
+ <xs:sequence>
+ <xs:group ref="titles"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="tbl.table-main.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="tbl.tgroup.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="tbl.tgroup.att">
+ <xs:attribute name="tgroupstyle"/>
+ </xs:attributeGroup>
+ <xs:complexType name="tbl.row.mdl">
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="entry"/>
+ <xs:element ref="entrytbl"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.entrytbl.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ===== Element and attribute declarations follow. ===== -->
+ <!-- doc:A formal table in a document. -->
+ <xs:element name="table" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.table.mdl">
+ <xs:attributeGroup ref="table.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="table.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the main content of a table, or part of a table. -->
+ <xs:element name="tgroup">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tgroup.mdl">
+ <xs:attributeGroup ref="tgroup.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tgroup.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:Specifications for a column in a table. -->
+ <xs:element name="colspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="colspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colspec.attlist">
+ <xs:attribute name="colnum"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="colwidth"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:Formatting information for a spanned column in a table. -->
+ <xs:element name="spanspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="spanspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="spanspec.attlist">
+ <xs:attribute name="namest" use="required"/>
+ <xs:attribute name="nameend" use="required"/>
+ <xs:attribute name="spanname" use="required"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:A table header consisting of one or more rows. -->
+ <xs:element name="thead">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="thead.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="thead.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A table footer consisting of one or more rows. -->
+ <xs:element name="tfoot">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="tfoot.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tfoot.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the rows of a table or informal table. -->
+ <xs:element name="tbody">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tbody.mdl">
+ <xs:attributeGroup ref="tbody.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tbody.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A row in a table. -->
+ <xs:element name="row">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.row.mdl">
+ <xs:attributeGroup ref="row.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="row.attlist">
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A subtable appearing in place of an Entry in a table. -->
+ <xs:element name="entrytbl">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.entrytbl.mdl">
+ <xs:attributeGroup ref="entrytbl.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entrytbl.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A cell in a table. -->
+ <xs:element name="entry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="tbl.entry.mdl"/>
+ <xs:attributeGroup ref="entry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entry.attlist">
+ <xs:attribute name="colname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="morerows"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attribute name="rotate" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 ... -->
+<!-- ............................................................................ -->
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbhierx.xsd b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbhierx.xsd
new file mode 100644
index 0000000..af99df6
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbhierx.xsd
@@ -0,0 +1,2186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- .............................................................................. -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 ... -->
+<!-- File dbhierx.xsd ............................................................. -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook document hierarchy
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbhierx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the overall document
+ hierarchies of DocBook documents. It covers computer documentation
+ manuals and manual fragments, as well as reference entries (such as
+ man pages) and technical journals or anthologies containing
+ articles.
+
+ This module depends on the DocBook information pool module. All
+ elements and entities referenced but not defined here are assumed
+ to be defined in the information pool module.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbhier PUBLIC
+ "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN"
+ "dbhierx.mod">
+ %dbhier;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+<!-- ...................................................................... -->
+<!-- Entities for element classes ......................................... -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="appendix.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="appendixinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="appendix.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="article.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="articleinfo"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lot"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="nav.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="colophon"/>
+ <xs:element ref="ackno"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="article.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="book.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="bookinfo"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="dedication"/>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="chapter.class"/>
+ <xs:element ref="reference"/>
+ <xs:element ref="part"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:group ref="index.class"/>
+ <xs:element ref="colophon"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="book.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="chapter.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="chapterinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="chapter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="index.class">
+ <xs:choice>
+ <xs:element ref="index"/>
+ <xs:element ref="setindex"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="refentry.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="refentryinfo"/>
+ <xs:element minOccurs="0" ref="refmeta"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refnamediv"/>
+ <xs:element minOccurs="0" ref="refsynopsisdiv"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refsect1"/>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="section.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sectioninfo"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="section.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="nav.class">
+ <xs:choice>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="index"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element mixtures ........................................ -->
+ <xs:group name="divcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="indexdivcomponent.mix">
+ <xs:choice>
+ <xs:element ref="itemizedlist"/>
+ <xs:element ref="orderedlist"/>
+ <xs:element ref="variablelist"/>
+ <xs:element ref="simplelist"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refname.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="tech.char.class"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="partcontent.mix">
+ <xs:choice>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="chapter.class"/>
+ <xs:group ref="nav.class"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="refentry.class"/>
+ <xs:element ref="reference"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refinline.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refclass.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="application"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder 2 .......................................... -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="div.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="sect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refsect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.content">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect1"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="sect1"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <!-- ...................................................................... -->
+ <!-- Set and SetInfo ...................................................... -->
+ <xs:attributeGroup name="set.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of books. -->
+ <xs:element name="set">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="setinfo"/>
+ <xs:element minOccurs="0" ref="toc"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="set"/>
+ <xs:element ref="book.class"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="setindex"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="set.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of set.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="set.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="set.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of set.attlist -->
+ <!-- end of set.module -->
+ <xs:attributeGroup name="setinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Set. -->
+ <xs:element name="setinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setinfo.element -->
+ <!--
+ Contents: IDs of the ToC, Books, and SetIndex that comprise
+ the set, in the order of their appearance
+ -->
+ <xs:attributeGroup name="setinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setinfo.attlist -->
+ <!-- end of setinfo.module -->
+ <!-- end of set.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Book and BookInfo .................................................... -->
+ <xs:attributeGroup name="book.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A book. -->
+ <xs:element name="book" substitutionGroup="book.class"/>
+ <!-- end of book.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="book.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="book.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of book.attlist -->
+ <!-- end of book.module -->
+ <xs:attributeGroup name="bookinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Book. -->
+ <xs:element name="bookinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bookinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bookinfo.element -->
+ <!--
+ Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
+ Appendixes, References, GLossary, Bibliography, and indexes
+ comprising the Book, in the order of their appearance
+ -->
+ <xs:attributeGroup name="bookinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bookinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bookinfo.attlist -->
+ <!-- end of bookinfo.module -->
+ <!-- end of book.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Dedication, ToC, and LoT ............................................. -->
+ <xs:attributeGroup name="dedication.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the dedication section of a book. -->
+ <xs:element name="dedication">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="dedication.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of dedication.element -->
+ <xs:attributeGroup name="dedication.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="dedication.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of dedication.attlist -->
+ <!-- end of dedication.module -->
+ <xs:attributeGroup name="colophon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text at the back of a book describing facts about its production. -->
+ <xs:element name="colophon">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colophon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of colophon.element -->
+ <xs:attributeGroup name="colophon.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="colophon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of colophon.attlist -->
+ <!-- end of colophon.module -->
+ <xs:attributeGroup name="toc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A table of contents. -->
+ <xs:element name="toc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocfront"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tocpart"/>
+ <xs:element ref="tocchap"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocback"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toc.element -->
+ <xs:attributeGroup name="toc.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toc.attlist -->
+ <!-- end of toc.module -->
+ <xs:attributeGroup name="tocfront.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a front matter component. -->
+ <xs:element name="tocfront">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocfront.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocfront.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocfront.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocfront.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocfront.attlist -->
+ <!-- end of tocfront.module -->
+ <xs:attributeGroup name="tocentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component title in a table of contents. -->
+ <xs:element name="tocentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocentry.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocentry.attlist -->
+ <!-- end of tocentry.module -->
+ <xs:attributeGroup name="tocpart.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a part of a book. -->
+ <xs:element name="tocpart">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocchap"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocpart.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocpart.element -->
+ <xs:attributeGroup name="tocpart.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocpart.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocpart.attlist -->
+ <!-- end of tocpart.module -->
+ <xs:attributeGroup name="tocchap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a component in the body of a document. -->
+ <xs:element name="tocchap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel1"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocchap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocchap.element -->
+ <xs:attributeGroup name="tocchap.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocchap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocchap.attlist -->
+ <!-- end of tocchap.module -->
+ <xs:attributeGroup name="toclevel1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel2"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel1.element -->
+ <xs:attributeGroup name="toclevel1.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel1.attlist -->
+ <!-- end of toclevel1.module -->
+ <xs:attributeGroup name="toclevel2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A second-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel3"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel2.element -->
+ <xs:attributeGroup name="toclevel2.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel2.attlist -->
+ <!-- end of toclevel2.module -->
+ <xs:attributeGroup name="toclevel3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A third-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel4"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel3.element -->
+ <xs:attributeGroup name="toclevel3.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel3.attlist -->
+ <!-- end of toclevel3.module -->
+ <xs:attributeGroup name="toclevel4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fourth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel5"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel4.element -->
+ <xs:attributeGroup name="toclevel4.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel4.attlist -->
+ <!-- end of toclevel4.module -->
+ <xs:attributeGroup name="toclevel5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fifth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel5.element -->
+ <xs:attributeGroup name="toclevel5.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel5.attlist -->
+ <!-- end of toclevel5.module -->
+ <xs:attributeGroup name="tocback.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a back matter component. -->
+ <xs:element name="tocback">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocback.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocback.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocback.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocback.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocback.attlist -->
+ <!-- end of tocback.module -->
+ <!-- end of toc.content.module -->
+ <xs:attributeGroup name="lot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of the titles of formal objects (as tables or figures) in a document. -->
+ <xs:element name="lot">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lotentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="lot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lot.element -->
+ <xs:attributeGroup name="lot.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lot.attlist -->
+ <!-- end of lot.module -->
+ <xs:attributeGroup name="lotentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a list of titles. -->
+ <xs:element name="lotentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lotentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lotentry.element -->
+ <!--
+ SrcCredit: Information about the source of the entry,
+ as for a list of illustrations
+ -->
+ <!-- linkend: to element that this entry represents -->
+ <xs:attributeGroup name="lotentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lotentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lotentry.attlist -->
+ <!-- end of lotentry.module -->
+ <!-- end of lot.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+ <xs:attributeGroup name="appendix.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An appendix in a Book or Article. -->
+ <xs:element name="appendix" substitutionGroup="appendix.class"/>
+ <!-- end of appendix.element -->
+ <xs:attributeGroup name="appendix.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendix.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendix.attlist -->
+ <!-- end of appendix.module -->
+ <xs:attributeGroup name="chapter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A chapter, as of a book. -->
+ <xs:element name="chapter" substitutionGroup="chapter.class"/>
+ <!-- end of chapter.element -->
+ <xs:attributeGroup name="chapter.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapter.attlist -->
+ <!-- end of chapter.module -->
+ <!--
+ Note that Part was to have its content model reduced in V4.5. This
+ change will not be made after all.
+ -->
+ <xs:attributeGroup name="part.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a book. -->
+ <xs:element name="part">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="partinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:group maxOccurs="unbounded" ref="partcontent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="part.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of part.element -->
+ <xs:attributeGroup name="part.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="part.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of part.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of part.module -->
+ <xs:attributeGroup name="preface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Introductory matter preceding the first chapter of a book. -->
+ <xs:element name="preface">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="prefaceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="preface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of preface.element -->
+ <xs:attributeGroup name="preface.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="preface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of preface.attlist -->
+ <!-- end of preface.module -->
+ <xs:attributeGroup name="reference.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of reference entries. -->
+ <xs:element name="reference">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="referenceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="reference.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of reference.element -->
+ <xs:attributeGroup name="reference.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="reference.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of reference.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of reference.module -->
+ <xs:attributeGroup name="partintro.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An introduction to the contents of a part. -->
+ <xs:element name="partintro">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:group ref="bookcomponent.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="partintro.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partintro.element -->
+ <xs:attributeGroup name="partintro.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partintro.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partintro.attlist -->
+ <!-- end of partintro.module -->
+ <!-- ...................................................................... -->
+ <!-- Other Info elements .................................................. -->
+ <xs:attributeGroup name="appendixinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Appendix. -->
+ <xs:element name="appendixinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="appendixinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of appendixinfo.element -->
+ <xs:attributeGroup name="appendixinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendixinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendixinfo.attlist -->
+ <!-- end of appendixinfo.module -->
+ <xs:attributeGroup name="bibliographyinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Bibliography. -->
+ <xs:element name="bibliographyinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bibliographyinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliographyinfo.element -->
+ <xs:attributeGroup name="bibliographyinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliographyinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliographyinfo.attlist -->
+ <!-- end of bibliographyinfo.module -->
+ <xs:attributeGroup name="chapterinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Chapter. -->
+ <xs:element name="chapterinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="chapterinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of chapterinfo.element -->
+ <xs:attributeGroup name="chapterinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapterinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapterinfo.attlist -->
+ <!-- end of chapterinfo.module -->
+ <xs:attributeGroup name="glossaryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Glossary. -->
+ <xs:element name="glossaryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="glossaryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossaryinfo.element -->
+ <xs:attributeGroup name="glossaryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossaryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossaryinfo.attlist -->
+ <!-- end of glossaryinfo.module -->
+ <xs:attributeGroup name="indexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Index. -->
+ <xs:element name="indexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="indexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexinfo.element -->
+ <xs:attributeGroup name="indexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexinfo.attlist -->
+ <!-- end of indexinfo.module -->
+ <xs:attributeGroup name="setindexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a SetIndex. -->
+ <xs:element name="setindexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setindexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindexinfo.element -->
+ <xs:attributeGroup name="setindexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setindexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindexinfo.attlist -->
+ <!-- end of setindexinfo.module -->
+ <xs:attributeGroup name="partinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Part. -->
+ <xs:element name="partinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="partinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partinfo.element -->
+ <xs:attributeGroup name="partinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partinfo.attlist -->
+ <!-- end of partinfo.module -->
+ <xs:attributeGroup name="prefaceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Preface. -->
+ <xs:element name="prefaceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="prefaceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prefaceinfo.element -->
+ <xs:attributeGroup name="prefaceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prefaceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prefaceinfo.attlist -->
+ <!-- end of prefaceinfo.module -->
+ <xs:attributeGroup name="refentryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Refentry. -->
+ <xs:element name="refentryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refentryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentryinfo.element -->
+ <xs:attributeGroup name="refentryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentryinfo.attlist -->
+ <!-- end of refentryinfo.module -->
+ <xs:attributeGroup name="refsectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a refsection. -->
+ <xs:element name="refsectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsectioninfo.element -->
+ <xs:attributeGroup name="refsectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsectioninfo.attlist -->
+ <!-- end of refsectioninfo.module -->
+ <xs:attributeGroup name="refsect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect1. -->
+ <xs:element name="refsect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1info.element -->
+ <xs:attributeGroup name="refsect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1info.attlist -->
+ <!-- end of refsect1info.module -->
+ <xs:attributeGroup name="refsect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect2. -->
+ <xs:element name="refsect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2info.element -->
+ <xs:attributeGroup name="refsect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2info.attlist -->
+ <!-- end of refsect2info.module -->
+ <xs:attributeGroup name="refsect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect3. -->
+ <xs:element name="refsect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3info.element -->
+ <xs:attributeGroup name="refsect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3info.attlist -->
+ <!-- end of refsect3info.module -->
+ <xs:attributeGroup name="refsynopsisdivinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSynopsisDiv. -->
+ <xs:element name="refsynopsisdivinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdivinfo.element -->
+ <xs:attributeGroup name="refsynopsisdivinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdivinfo.attlist -->
+ <!-- end of refsynopsisdivinfo.module -->
+ <xs:attributeGroup name="referenceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Reference. -->
+ <xs:element name="referenceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="referenceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of referenceinfo.element -->
+ <xs:attributeGroup name="referenceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="referenceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of referenceinfo.attlist -->
+ <!-- end of referenceinfo.module -->
+ <xs:attributeGroup name="sect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect1. -->
+ <xs:element name="sect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1info.element -->
+ <xs:attributeGroup name="sect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1info.attlist -->
+ <xs:attributeGroup name="sect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect2. -->
+ <xs:element name="sect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2info.element -->
+ <xs:attributeGroup name="sect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2info.attlist -->
+ <xs:attributeGroup name="sect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect3. -->
+ <xs:element name="sect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3info.element -->
+ <xs:attributeGroup name="sect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3info.attlist -->
+ <xs:attributeGroup name="sect4info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect4. -->
+ <xs:element name="sect4info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect4info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4info.element -->
+ <xs:attributeGroup name="sect4info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4info.attlist -->
+ <xs:attributeGroup name="sect5info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect5. -->
+ <xs:element name="sect5info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect5info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5info.element -->
+ <xs:attributeGroup name="sect5info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5info.attlist -->
+ <!-- ...................................................................... -->
+ <!-- Section (parallel to Sect*) ......................................... -->
+ <xs:attributeGroup name="section.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section. -->
+ <xs:element name="section" substitutionGroup="section.class"/>
+ <!-- end of section.element -->
+ <xs:attributeGroup name="section.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="section.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of section.attlist -->
+ <!-- end of section.module -->
+ <xs:attributeGroup name="sectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a recursive section. -->
+ <xs:element name="sectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sectioninfo.element -->
+ <xs:attributeGroup name="sectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sectioninfo.attlist -->
+ <!-- end of sectioninfo.module -->
+ <!-- end of section.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+ <xs:attributeGroup name="sect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level section of document. -->
+ <xs:element name="sect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect1info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect2"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect2"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect1.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1.attlist -->
+ <!-- end of sect1.module -->
+ <xs:attributeGroup name="sect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect1. -->
+ <xs:element name="sect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect2info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect3"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect3"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect2.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2.attlist -->
+ <!-- end of sect2.module -->
+ <xs:attributeGroup name="sect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect2. -->
+ <xs:element name="sect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect3info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect4"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect4"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect3.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3.attlist -->
+ <!-- end of sect3.module -->
+ <xs:attributeGroup name="sect4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect3. -->
+ <xs:element name="sect4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect4info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect5"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect5"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect4.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4.attlist -->
+ <!-- end of sect4.module -->
+ <xs:attributeGroup name="sect5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect4. -->
+ <xs:element name="sect5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect5info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect5.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5.attlist -->
+ <!-- end of sect5.module -->
+ <xs:attributeGroup name="simplesect.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a document with no subdivisions. -->
+ <xs:element name="simplesect">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplesect.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplesect.element -->
+ <xs:attributeGroup name="simplesect.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplesect.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplesect.attlist -->
+ <!-- end of simplesect.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliography ......................................................... -->
+ <xs:attributeGroup name="bibliography.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A bibliography. -->
+ <xs:element name="bibliography">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="bibliographyinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="bibliodiv"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliography.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliography.element -->
+ <xs:attributeGroup name="bibliography.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliography.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliography.attlist -->
+ <!-- end of bibliography.module -->
+ <xs:attributeGroup name="bibliodiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a Bibliography. -->
+ <xs:element name="bibliodiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliodiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliodiv.element -->
+ <xs:attributeGroup name="bibliodiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliodiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliodiv.attlist -->
+ <!-- end of bibliodiv.module -->
+ <!-- end of bibliography.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Glossary ............................................................. -->
+ <xs:attributeGroup name="glossary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary. -->
+ <xs:element name="glossary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="glossaryinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="glossdiv"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="bibliography"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossary.element -->
+ <xs:attributeGroup name="glossary.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossary.attlist -->
+ <!-- end of glossary.module -->
+ <xs:attributeGroup name="glossdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a Glossary. -->
+ <xs:element name="glossdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdiv.element -->
+ <xs:attributeGroup name="glossdiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdiv.attlist -->
+ <!-- end of glossdiv.module -->
+ <!-- end of glossary.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Index and SetIndex ................................................... -->
+ <xs:attributeGroup name="indexes.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An index. -->
+ <xs:element name="index">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="indexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="index.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of index.element -->
+ <xs:attributeGroup name="index.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of index.attlist -->
+ <!-- doc:An index to a set of books. -->
+ <xs:element name="setindex">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="setindexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="setindex.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindex.element -->
+ <xs:attributeGroup name="setindex.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindex.attlist -->
+ <!-- end of indexes.module -->
+ <!--
+ SegmentedList in this content is useful for marking up permuted
+ indices.
+ -->
+ <xs:attributeGroup name="indexdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in an index. -->
+ <xs:element name="indexdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="indexdivcomponent.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="indexentry"/>
+ <xs:element ref="segmentedlist"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexdiv.element -->
+ <xs:attributeGroup name="indexdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexdiv.attlist -->
+ <!-- end of indexdiv.module -->
+ <!-- Index entries appear in the index, not the text. -->
+ <xs:attributeGroup name="indexentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in an index. -->
+ <xs:element name="indexentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="primaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="secondaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ <xs:element ref="tertiaryie"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexentry.element -->
+ <xs:attributeGroup name="indexentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexentry.attlist -->
+ <!-- end of indexentry.module -->
+ <xs:attributeGroup name="primsecterie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A primary term in an index entry, not in the text. -->
+ <xs:element name="primaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="primaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primaryie.attlist -->
+ <!-- doc:A secondary term in an index entry, rather than in the text. -->
+ <xs:element name="secondaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="secondaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondaryie.attlist -->
+ <!-- doc:A tertiary term in an index entry, rather than in the text. -->
+ <xs:element name="tertiaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="tertiaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiaryie.attlist -->
+ <!-- end of primsecterie.module -->
+ <xs:attributeGroup name="seeie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See entry in an index, rather than in the text. -->
+ <xs:element name="seeie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seeie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seeie.element -->
+ <!-- to IndexEntry to look up -->
+ <xs:attributeGroup name="seeie.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seeie.attlist -->
+ <!-- end of seeie.module -->
+ <xs:attributeGroup name="seealsoie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See also entry in an index, rather than in the text. -->
+ <xs:element name="seealsoie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealsoie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealsoie.element -->
+ <!-- to related IndexEntries -->
+ <xs:attributeGroup name="seealsoie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seealsoie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seealsoie.attlist -->
+ <!-- end of seealsoie.module -->
+ <!-- end of index.content.module -->
+ <!-- ...................................................................... -->
+ <!-- RefEntry ............................................................. -->
+ <xs:attributeGroup name="refentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference page (originally a UNIX man-style reference page). -->
+ <xs:element name="refentry" substitutionGroup="refentry.class"/>
+ <!-- end of refentry.element -->
+ <xs:attributeGroup name="refentry.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentry.attlist -->
+ <!-- end of refentry.module -->
+ <xs:attributeGroup name="refmeta.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry. -->
+ <xs:element name="refmeta">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refmiscinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refmeta.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmeta.element -->
+ <xs:attributeGroup name="refmeta.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmeta.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmeta.attlist -->
+ <!-- end of refmeta.module -->
+ <xs:attributeGroup name="refmiscinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry other than the title and volume number. -->
+ <xs:element name="refmiscinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="refmiscinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmiscinfo.element -->
+ <!-- Class: Freely assignable parameter; no default -->
+ <xs:attributeGroup name="refmiscinfo.attlist">
+ <xs:attribute name="class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmiscinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmiscinfo.attlist -->
+ <!-- end of refmiscinfo.module -->
+ <xs:attributeGroup name="refnamediv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name, purpose, and classification of a reference page. -->
+ <xs:element name="refnamediv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refdescriptor"/>
+ <xs:element maxOccurs="unbounded" ref="refname"/>
+ <xs:element ref="refpurpose"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refclass"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refnamediv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refnamediv.element -->
+ <xs:attributeGroup name="refnamediv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refnamediv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refnamediv.attlist -->
+ <!-- end of refnamediv.module -->
+ <xs:attributeGroup name="refdescriptor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of the topic of a reference page. -->
+ <xs:element name="refdescriptor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refdescriptor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refdescriptor.element -->
+ <xs:attributeGroup name="refdescriptor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refdescriptor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refdescriptor.attlist -->
+ <!-- end of refdescriptor.module -->
+ <xs:attributeGroup name="refname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of (one of) the subject(s) of a reference page. -->
+ <xs:element name="refname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refname.element -->
+ <xs:attributeGroup name="refname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refname.attlist -->
+ <!-- end of refname.module -->
+ <xs:attributeGroup name="refpurpose.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short (one sentence) synopsis of the topic of a reference page. -->
+ <xs:element name="refpurpose">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refinline.char.mix"/>
+ <xs:attributeGroup ref="refpurpose.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refpurpose.element -->
+ <xs:attributeGroup name="refpurpose.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refpurpose.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refpurpose.attlist -->
+ <!-- end of refpurpose.module -->
+ <xs:attributeGroup name="refclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The scope or other indication of applicability of a reference entry. -->
+ <xs:element name="refclass">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refclass.char.mix"/>
+ <xs:attributeGroup ref="refclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refclass.element -->
+ <xs:attributeGroup name="refclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refclass.attlist -->
+ <!-- end of refclass.module -->
+ <xs:attributeGroup name="refsynopsisdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntactic synopsis of the subject of the reference page. -->
+ <xs:element name="refsynopsisdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsynopsisdivinfo"/>
+ <xs:group minOccurs="0" ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsynopsisdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdiv.element -->
+ <xs:attributeGroup name="refsynopsisdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdiv.attlist -->
+ <!-- end of refsynopsisdiv.module -->
+ <xs:attributeGroup name="refsection.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section in a refentry. -->
+ <xs:element name="refsection">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsectioninfo"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsection"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsection.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsection.element -->
+ <xs:attributeGroup name="refsection.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsection.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsection.attlist -->
+ <!-- end of refsection.module -->
+ <xs:attributeGroup name="refsect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A major subsection of a reference entry. -->
+ <xs:element name="refsect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect1info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1.element -->
+ <xs:attributeGroup name="refsect1.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1.attlist -->
+ <!-- end of refsect1.module -->
+ <xs:attributeGroup name="refsect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect1. -->
+ <xs:element name="refsect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect2info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect3"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect3"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2.element -->
+ <xs:attributeGroup name="refsect2.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2.attlist -->
+ <!-- end of refsect2.module -->
+ <xs:attributeGroup name="refsect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect2. -->
+ <xs:element name="refsect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect3info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3.element -->
+ <xs:attributeGroup name="refsect3.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3.attlist -->
+ <!-- end of refsect3.module -->
+ <!-- end of refentry.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Article .............................................................. -->
+ <!--
+ An Article is a chapter-level, stand-alone document that is often,
+ but need not be, collected into a Book.
+ -->
+ <xs:attributeGroup name="article.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An article. -->
+ <xs:element name="article" substitutionGroup="article.class"/>
+ <!-- end of article.element -->
+ <!--
+ Class: Indicates the type of a particular article;
+ all articles have the same structure and general purpose.
+ No default.
+ -->
+ <!-- ParentBook: ID of the enclosing Book -->
+ <xs:attributeGroup name="article.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="journalarticle"/>
+ <xs:enumeration value="productsheet"/>
+ <xs:enumeration value="whitepaper"/>
+ <xs:enumeration value="techreport"/>
+ <xs:enumeration value="specification"/>
+ <xs:enumeration value="faq"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="parentbook" type="xs:IDREF"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="article.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of article.attlist -->
+<!-- end of article.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 -->
+<!-- ................................................................................. -->
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbnotnx.xsd b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbnotnx.xsd
new file mode 100644
index 0000000..36f690f
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbnotnx.xsd
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML notations ................ -->
+<!-- File dbnotnx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook notations module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbnotnx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the notation declarations used by DocBook.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbnotn PUBLIC
+ "-//OASIS//ENTITIES DocBook Notations V4.5//EN"
+ "dbnotnx.mod">
+ %dbnotn;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="notation.class">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="BMP"/>
+ <xs:enumeration value="CGM-CHAR"/>
+ <xs:enumeration value="CGM-BINARY"/>
+ <xs:enumeration value="CGM-CLEAR"/>
+ <xs:enumeration value="DITROFF"/>
+ <xs:enumeration value="DVI"/>
+ <xs:enumeration value="EPS"/>
+ <xs:enumeration value="EQN"/>
+ <xs:enumeration value="FAX"/>
+ <xs:enumeration value="GIF"/>
+ <xs:enumeration value="GIF87a"/>
+ <xs:enumeration value="GIF89a"/>
+ <xs:enumeration value="JPG"/>
+ <xs:enumeration value="JPEG"/>
+ <xs:enumeration value="IGES"/>
+ <xs:enumeration value="PCX"/>
+ <xs:enumeration value="PIC"/>
+ <xs:enumeration value="PNG"/>
+ <xs:enumeration value="PS"/>
+ <xs:enumeration value="SGML"/>
+ <xs:enumeration value="TBL"/>
+ <xs:enumeration value="TEX"/>
+ <xs:enumeration value="TIFF"/>
+ <xs:enumeration value="WMF"/>
+ <xs:enumeration value="WPG"/>
+ <xs:enumeration value="SVG"/>
+ <xs:enumeration value="PDF"/>
+ <xs:enumeration value="SWF"/>
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
+<!-- WordPerfect Graphic format -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML notations ......... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbpoolx.xsd b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbpoolx.xsd
new file mode 100644
index 0000000..0ce5cb7
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/dbpoolx.xsd
@@ -0,0 +1,8682 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML information pool module .. -->
+<!-- File dbpoolx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the Docbook XML information pool
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the objects, inline
+ elements, and so on that are available to be used as the main
+ content of DocBook documents. Some elements are useful for general
+ publishing, and others are useful specifically for computer
+ documentation.
+
+ This module has the following dependencies on other modules:
+
+ o It assumes that a %notation.class; entity is defined by the
+ driver file or other high-level module. This entity is
+ referenced in the NOTATION attributes for the graphic-related and
+ ModeSpec elements.
+
+ o It assumes that an appropriately parameterized table module is
+ available for use with the table-related elements.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbpool PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN"
+ "dbpoolx.mod">
+ %dbpool;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Forms entities ....................................................... -->
+<!-- These PEs provide the hook by which the forms module can be inserted -->
+<!-- into the DTD. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:include schemaLocation="htmltblx.xsd"/>
+ <xs:include schemaLocation="calstblx.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- General-purpose semantics entities ................................... -->
+ <xs:simpleType name="yesorno.attvals">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- ...................................................................... -->
+ <!-- Entities for module inclusions ....................................... -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element classes and mixtures ............................ -->
+ <!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+ <xs:element name="ndxterm.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="primary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="secondary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="tertiary"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Object-level classes ................................................. -->
+ <xs:element name="list.class" abstract="true"/>
+ <xs:element name="admon.class" abstract="true"/>
+ <xs:element name="linespecific.class" abstract="true"/>
+ <xs:element name="method.synop.class" abstract="true" substitutionGroup="synop.class"/>
+ <xs:element name="synop.class" abstract="true"/>
+ <xs:element name="para.class" abstract="true"/>
+ <xs:element name="informal.class" abstract="true"/>
+ <xs:element name="formal.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="compound.class" abstract="true"/>
+ <xs:group name="genobj.class">
+ <xs:choice>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="highlights"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="descobj.class">
+ <xs:choice>
+ <xs:element ref="abstract"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="epigraph"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level classes .............................................. -->
+ <xs:element name="xref.char.class" abstract="true"/>
+ <xs:element name="gen.char.class" abstract="true"/>
+ <xs:element name="link.char.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="tech.char.class" abstract="true"/>
+ <xs:group name="base.char.class">
+ <xs:sequence>
+ <xs:element ref="anchor"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="docinfo.char.class" abstract="true"/>
+ <xs:group name="other.char.class">
+ <xs:choice>
+ <xs:element ref="remark"/>
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="inlineobj.char.class" abstract="true"/>
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="formalobject.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- Object-level mixtures ................................................ -->
+ <!--
+ list admn line synp para infm form cmpd gen desc
+ Component mixture X X X X X X X X X X
+ Sidebar mixture X X X X X X X a X
+ Footnote mixture X X X X X
+ Example mixture X X X X X
+ Highlights mixture X X X
+ Paragraph mixture X X X X
+ Admonition mixture X X X X X X b c
+ Figure mixture X X X
+ Table entry mixture X X X X d
+ Glossary def mixture X X X X X e
+ Legal notice mixture X X X X f
+
+ a. Just Procedure; not Sidebar itself or MsgSet.
+ b. No MsgSet.
+ c. No Highlights.
+ d. Just Graphic; no other informal objects.
+ e. No Anchor, BridgeHead, or Highlights.
+ f. Just BlockQuote; no other informal objects.
+ -->
+ <xs:group name="component.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="sidebar.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="qandaset.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="revdescription.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="footnote.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="example.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ <xs:element ref="procedure"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="highlights.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ %formal.class; is explicitly excluded from many contexts in which
+ paragraphs are used
+ -->
+ <xs:group name="para.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="sconstruct"/>
+ <xs:element ref="scons_example"/>
+ <xs:element ref="scons_example_file"/>
+ <xs:element ref="scons_output"/>
+ <xs:element ref="sconsdoc"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="summary.mix">
+ <xs:choice>
+ <xs:element ref="example_commands"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tool.mix">
+ <xs:choice>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="scons_function.mix">
+ <xs:choice>
+ <xs:element ref="arguments"/>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="admon.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:element ref="sidebar"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="figure.mix">
+ <xs:choice>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tabentry.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="glossdef.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="legalnotice.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="textobject.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="mediaobject.mix" abstract="true"/>
+ <xs:group name="listpreamble.mix">
+ <xs:choice>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level mixtures ............................................. -->
+ <!-- sgml.features -->
+ <!-- not [sgml.features[ -->
+ <!-- ]] not sgml.features -->
+ <!--
+ #PCD xref word link cptr base dnfo othr inob (synop)
+ para.char.mix X X X X X X X X X
+ title.char.mix X X X X X X X X X
+ ndxterm.char.mix X X X X X X X X a
+ cptr.char.mix X X X X X a
+ smallcptr.char.mix X b a
+ word.char.mix X c X X X a
+ docinfo.char.mix X d X b X a
+
+ a. Just InlineGraphic; no InlineEquation.
+ b. Just Replaceable; no other computer terms.
+ c. Just Emphasis and Trademark; no other word elements.
+ d. Just Acronym, Emphasis, and Trademark; no other word elements.
+ -->
+ <xs:group name="para.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="title.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="ndxterm.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="cptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="smallcptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="replaceable"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="word.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="acronym"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="docinfo.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="replaceable"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <!-- ENTITY % bibliocomponent.mix (see Bibliographic section, below) -->
+ <!-- ENTITY % person.ident.mix (see Bibliographic section, below) -->
+ <!-- ...................................................................... -->
+ <!-- Entities for attributes and attribute components ..................... -->
+ <!-- Effectivity attributes ............................................... -->
+ <!--
+ Arch: Computer or chip architecture to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="arch.attrib">
+ <xs:attribute name="arch"/>
+ </xs:attributeGroup>
+ <!-- Condition: General-purpose effectivity attribute -->
+ <xs:attributeGroup name="condition.attrib">
+ <xs:attribute name="condition"/>
+ </xs:attributeGroup>
+ <!-- Conformance: Standards conformance characteristics -->
+ <xs:attributeGroup name="conformance.attrib">
+ <xs:attribute name="conformance" type="xs:NMTOKENS"/>
+ </xs:attributeGroup>
+ <!-- OS: Operating system to which element applies; no default -->
+ <xs:attributeGroup name="os.attrib">
+ <xs:attribute name="os"/>
+ </xs:attributeGroup>
+ <!-- Revision: Editorial revision to which element belongs; no default -->
+ <xs:attributeGroup name="revision.attrib">
+ <xs:attribute name="revision"/>
+ </xs:attributeGroup>
+ <!-- Security: Security classification; no default -->
+ <xs:attributeGroup name="security.attrib">
+ <xs:attribute name="security"/>
+ </xs:attributeGroup>
+ <!--
+ UserLevel: Level of user experience to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="userlevel.attrib">
+ <xs:attribute name="userlevel"/>
+ </xs:attributeGroup>
+ <!-- Vendor: Computer vendor to which element applies; no default -->
+ <xs:attributeGroup name="vendor.attrib">
+ <xs:attribute name="vendor"/>
+ </xs:attributeGroup>
+ <!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default -->
+ <xs:attributeGroup name="wordsize.attrib">
+ <xs:attribute name="wordsize"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="effectivity.attrib">
+ <xs:attributeGroup ref="arch.attrib"/>
+ <xs:attributeGroup ref="condition.attrib"/>
+ <xs:attributeGroup ref="conformance.attrib"/>
+ <xs:attributeGroup ref="os.attrib"/>
+ <xs:attributeGroup ref="revision.attrib"/>
+ <xs:attributeGroup ref="security.attrib"/>
+ <xs:attributeGroup ref="userlevel.attrib"/>
+ <xs:attributeGroup ref="vendor.attrib"/>
+ <xs:attributeGroup ref="wordsize.attrib"/>
+ </xs:attributeGroup>
+ <!-- Common attributes .................................................... -->
+ <!-- Id: Unique identifier of element; no default -->
+ <xs:attributeGroup name="id.attrib">
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Id: Unique identifier of element; a value must be supplied; no
+ default
+ -->
+ <xs:attributeGroup name="idreq.attrib">
+ <xs:attribute name="id" use="required" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Lang: Indicator of language in which element is written, for
+ translation, character set management, etc.; no default
+ -->
+ <xs:attributeGroup name="lang.attrib">
+ <xs:attribute name="lang"/>
+ </xs:attributeGroup>
+ <!-- Remap: Previous role of element before conversion; no default -->
+ <xs:attributeGroup name="remap.attrib">
+ <xs:attribute name="remap"/>
+ </xs:attributeGroup>
+ <!-- Role: New role of element in local environment; no default -->
+ <xs:attributeGroup name="role.attrib">
+ <xs:attribute name="role"/>
+ </xs:attributeGroup>
+ <!--
+ XRefLabel: Alternate labeling string for XRef text generation;
+ default is usually title or other appropriate label text already
+ contained in element
+ -->
+ <xs:attributeGroup name="xreflabel.attrib">
+ <xs:attribute name="xreflabel"/>
+ </xs:attributeGroup>
+ <!--
+ RevisionFlag: Revision status of element; default is that element
+ wasn't revised
+ -->
+ <xs:attributeGroup name="revisionflag.attrib">
+ <xs:attribute name="revisionflag">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="changed"/>
+ <xs:enumeration value="added"/>
+ <xs:enumeration value="deleted"/>
+ <xs:enumeration value="off"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- dir: Bidirectional override -->
+ <xs:attributeGroup name="dir.attrib">
+ <xs:attribute name="dir">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ltr"/>
+ <xs:enumeration value="rtl"/>
+ <xs:enumeration value="lro"/>
+ <xs:enumeration value="rlo"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- xml:base: base URI -->
+ <xs:attributeGroup name="xml-base.attrib">
+ <xs:attribute ref="xml:base"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="common.attrib">
+ <xs:attributeGroup ref="id.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="idreq.common.attrib">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Semi-common attributes and other attribute entities .................. -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the graphic
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the graphic
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the Graphic -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="graphics.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ </xs:attributeGroup>
+ <!--
+ Action: Key combination type; default is unspecified if one
+ child element, Simul if there is more than one; if value is
+ Other, the OtherAction attribute must have a nonempty value
+ -->
+ <!-- OtherAction: User-defined key combination type -->
+ <xs:attributeGroup name="keyaction.attrib">
+ <xs:attribute name="action">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="click"/>
+ <xs:enumeration value="double-click"/>
+ <xs:enumeration value="press"/>
+ <xs:enumeration value="seq"/>
+ <xs:enumeration value="simul"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otheraction"/>
+ </xs:attributeGroup>
+ <!--
+ Label: Identifying number or string; default is usually the
+ appropriate number or string autogenerated by a formatter
+ -->
+ <xs:attributeGroup name="label.attrib">
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <!-- xml:space: whitespace treatment -->
+ <xs:attributeGroup name="xml-space.attrib">
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+ <!--
+ Format: whether element is assumed to contain significant white
+ space
+ -->
+ <xs:attributeGroup name="linespecific.attrib">
+ <xs:attribute name="format" default="linespecific">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="xml-space.attrib"/>
+ <xs:attribute name="linenumbering">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="numbered"/>
+ <xs:enumeration value="unnumbered"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startinglinenumber"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <!-- Linkend: link to related information; no default -->
+ <xs:attributeGroup name="linkend.attrib">
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!-- Linkend: required link to related information -->
+ <xs:attributeGroup name="linkendreq.attrib">
+ <xs:attribute name="linkend" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!--
+ Linkends: link to one or more sets of related information; no
+ default
+ -->
+ <xs:attributeGroup name="linkends.attrib">
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="mark.attrib">
+ <xs:attribute name="mark"/>
+ </xs:attributeGroup>
+ <!-- MoreInfo: whether element's content has an associated RefEntry -->
+ <xs:attributeGroup name="moreinfo.attrib">
+ <xs:attribute name="moreinfo" default="none">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- Pagenum: number of page on which element appears; no default -->
+ <xs:attributeGroup name="pagenum.attrib">
+ <xs:attribute name="pagenum"/>
+ </xs:attributeGroup>
+ <!--
+ Status: Editorial or publication status of the element
+ it applies to, such as "in review" or "approved for distribution"
+ -->
+ <xs:attributeGroup name="status.attrib">
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <!--
+ Width: width of the longest line in the element to which it
+ pertains, in number of characters
+ -->
+ <xs:attributeGroup name="width.attrib">
+ <xs:attribute name="width"/>
+ </xs:attributeGroup>
+ <!-- ...................................................................... -->
+ <!-- Title elements ....................................................... -->
+ <xs:attributeGroup name="title.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of the title of a section of a document or of a formal block-level element. -->
+ <xs:element name="title">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="title.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of title.element -->
+ <xs:attributeGroup name="title.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="title.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of title.attlist -->
+ <!-- end of title.module -->
+ <xs:attributeGroup name="titleabbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The abbreviation of a Title. -->
+ <xs:element name="titleabbrev">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="titleabbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of titleabbrev.element -->
+ <xs:attributeGroup name="titleabbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="titleabbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of titleabbrev.attlist -->
+ <!-- end of titleabbrev.module -->
+ <xs:attributeGroup name="subtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The subtitle of a document. -->
+ <xs:element name="subtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="subtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subtitle.element -->
+ <xs:attributeGroup name="subtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subtitle.attlist -->
+ <!-- end of subtitle.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliographic entities and elements .................................. -->
+ <!--
+ The bibliographic elements are typically used in the document
+ hierarchy. They do not appear in content models of information
+ pool elements. See also the document information elements,
+ below.
+ -->
+ <xs:group name="person.ident.mix">
+ <xs:choice>
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ <xs:element ref="affiliation"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="contrib"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="bibliocomponent.mix">
+ <xs:choice>
+ <xs:element ref="abbrev"/>
+ <xs:element ref="abstract"/>
+ <xs:element ref="address"/>
+ <xs:element ref="artpagenums"/>
+ <xs:element ref="author"/>
+ <xs:element ref="authorgroup"/>
+ <xs:element ref="authorinitials"/>
+ <xs:element ref="bibliomisc"/>
+ <xs:element ref="biblioset"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="confgroup"/>
+ <xs:element ref="contractnum"/>
+ <xs:element ref="contractsponsor"/>
+ <xs:element ref="copyright"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpname"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="date"/>
+ <xs:element ref="edition"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="invpartnumber"/>
+ <xs:element ref="isbn"/>
+ <xs:element ref="issn"/>
+ <xs:element ref="issuenum"/>
+ <xs:element ref="orgname"/>
+ <xs:element ref="biblioid"/>
+ <xs:element ref="citebiblioid"/>
+ <xs:element ref="bibliosource"/>
+ <xs:element ref="bibliorelation"/>
+ <xs:element ref="bibliocoverage"/>
+ <xs:element ref="othercredit"/>
+ <xs:element ref="pagenums"/>
+ <xs:element ref="printhistory"/>
+ <xs:element ref="productname"/>
+ <xs:element ref="productnumber"/>
+ <xs:element ref="pubdate"/>
+ <xs:element ref="publisher"/>
+ <xs:element ref="publishername"/>
+ <xs:element ref="pubsnumber"/>
+ <xs:element ref="releaseinfo"/>
+ <xs:element ref="revhistory"/>
+ <xs:element ref="seriesvolnums"/>
+ <xs:element ref="subtitle"/>
+ <xs:element ref="title"/>
+ <xs:element ref="titleabbrev"/>
+ <xs:element ref="volumenum"/>
+ <xs:element ref="citetitle"/>
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!-- I don't think this is well placed, but it needs to be here because of -->
+ <!-- the reference to bibliocomponent.mix -->
+ <xs:group name="info.class">
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="legalnotice"/>
+ <xs:element ref="modespec"/>
+ <xs:element ref="subjectset"/>
+ <xs:element ref="keywordset"/>
+ <xs:element ref="itermset"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!-- BiblioList ........................ -->
+ <xs:attributeGroup name="bibliolist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of bibliography entries. -->
+ <xs:element name="bibliolist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliolist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliolist.element -->
+ <xs:attributeGroup name="bibliolist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliolist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliolist.attlist -->
+ <!-- end of bibliolist.module -->
+ <xs:attributeGroup name="biblioentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="biblioentry">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="articleinfo"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="biblioentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioentry.element -->
+ <xs:attributeGroup name="biblioentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioentry.attlist -->
+ <!-- end of biblioentry.module -->
+ <xs:attributeGroup name="bibliomixed.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="bibliomixed">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomixed.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomixed.element -->
+ <xs:attributeGroup name="bibliomixed.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomixed.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomixed.attlist -->
+ <!-- end of bibliomixed.module -->
+ <xs:attributeGroup name="articleinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Article. -->
+ <xs:element name="articleinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="articleinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of articleinfo.element -->
+ <xs:attributeGroup name="articleinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="articleinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of articleinfo.attlist -->
+ <!-- end of articleinfo.module -->
+ <xs:attributeGroup name="biblioset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "raw" container for related bibliographic information. -->
+ <xs:element name="biblioset">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="bibliocomponent.mix"/>
+ <xs:attributeGroup ref="biblioset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioSet -->
+ <xs:attributeGroup name="biblioset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioset.attlist -->
+ <!-- end of biblioset.module -->
+ <xs:attributeGroup name="bibliomset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "cooked" container for related bibliographic information. -->
+ <xs:element name="bibliomset">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioMSet -->
+ <xs:attributeGroup name="bibliomset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomset.attlist -->
+ <!-- end of bibliomset.module -->
+ <xs:attributeGroup name="bibliomisc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Untyped bibliographic information. -->
+ <xs:element name="bibliomisc">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="bibliomisc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomisc.element -->
+ <xs:attributeGroup name="bibliomisc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomisc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomisc.attlist -->
+ <!-- end of bibliomisc.module -->
+ <!-- ...................................................................... -->
+ <!-- Subject, Keyword, and ITermSet elements .............................. -->
+ <xs:attributeGroup name="subjectset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of terms describing the subject matter of a document. -->
+ <xs:element name="subjectset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subject"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subjectset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectset.element -->
+ <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+ <xs:attributeGroup name="subjectset.attlist">
+ <xs:attribute name="scheme" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectset.attlist -->
+ <!-- end of subjectset.module -->
+ <xs:attributeGroup name="subject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a group of terms describing the subject matter of a document. -->
+ <xs:element name="subject">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subjectterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subject.element -->
+ <!--
+ Weight: Ranking of this group of SubjectTerms relative
+ to others, 0 is low, no highest value specified
+ -->
+ <xs:attributeGroup name="subject.attlist">
+ <xs:attribute name="weight"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subject.attlist -->
+ <!-- end of subject.module -->
+ <xs:attributeGroup name="subjectterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A term in a group of terms describing the subject matter of a document. -->
+ <xs:element name="subjectterm">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="subjectterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectterm.element -->
+ <xs:attributeGroup name="subjectterm.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectterm.attlist -->
+ <!-- end of subjectterm.module -->
+ <!-- end of subjectset.content.module -->
+ <xs:attributeGroup name="keywordset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of keywords describing the content of a document. -->
+ <xs:element name="keywordset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="keyword"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="keywordset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keywordset.element -->
+ <xs:attributeGroup name="keywordset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keywordset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keywordset.attlist -->
+ <!-- end of keywordset.module -->
+ <xs:attributeGroup name="keyword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a set of keywords describing the content of a document. -->
+ <xs:element name="keyword">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="keyword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keyword.element -->
+ <xs:attributeGroup name="keyword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keyword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keyword.attlist -->
+ <!-- end of keyword.module -->
+ <!-- end of keywordset.content.module -->
+ <xs:attributeGroup name="itermset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of index terms in the meta-information of a document. -->
+ <xs:element name="itermset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="indexterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itermset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itermset.element -->
+ <xs:attributeGroup name="itermset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itermset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itermset.attlist -->
+ <!-- end of itermset.module -->
+ <!-- Bibliographic info for "blocks" -->
+ <xs:attributeGroup name="blockinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a block element. -->
+ <xs:element name="blockinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="blockinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockinfo.element -->
+ <xs:attributeGroup name="blockinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockinfo.attlist -->
+ <!-- end of blockinfo.module -->
+ <!-- ...................................................................... -->
+ <!-- Compound (section-ish) elements ...................................... -->
+ <!-- Message set ...................... -->
+ <xs:attributeGroup name="msgset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A detailed set of messages, usually error messages. -->
+ <xs:element name="msgset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="msgentry"/>
+ <xs:element maxOccurs="unbounded" ref="simplemsgentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgset.element -->
+ <xs:attributeGroup name="msgset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgset.attlist -->
+ <!-- end of msgset.module -->
+ <xs:attributeGroup name="msgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an entry in a message set. -->
+ <xs:element name="msgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="msg"/>
+ <xs:element minOccurs="0" ref="msginfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgentry.element -->
+ <xs:attributeGroup name="msgentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgentry.attlist -->
+ <!-- end of msgentry.module -->
+ <xs:attributeGroup name="simplemsgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a simpler entry in a message set. -->
+ <xs:element name="simplemsgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="msgtext"/>
+ <xs:element maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplemsgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplemsgentry.element -->
+ <xs:attributeGroup name="simplemsgentry.attlist">
+ <xs:attribute name="audience"/>
+ <xs:attribute name="level"/>
+ <xs:attribute name="origin"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplemsgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplemsgentry.attlist -->
+ <!-- end of simplemsgentry.module -->
+ <xs:attributeGroup name="msg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A message in a message set. -->
+ <xs:element name="msg">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgmain"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msgsub"/>
+ <xs:element ref="msgrel"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msg.element -->
+ <xs:attributeGroup name="msg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msg.attlist -->
+ <!-- end of msg.module -->
+ <xs:attributeGroup name="msgmain.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary component of a message in a message set. -->
+ <xs:element name="msgmain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgmain.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgmain.element -->
+ <xs:attributeGroup name="msgmain.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgmain.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgmain.attlist -->
+ <!-- end of msgmain.module -->
+ <xs:attributeGroup name="msgsub.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subcomponent of a message in a message set. -->
+ <xs:element name="msgsub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgsub.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgsub.element -->
+ <xs:attributeGroup name="msgsub.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgsub.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgsub.attlist -->
+ <!-- end of msgsub.module -->
+ <xs:attributeGroup name="msgrel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A related component of a message in a message set. -->
+ <xs:element name="msgrel">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgrel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgrel.element -->
+ <xs:attributeGroup name="msgrel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgrel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgrel.attlist -->
+ <!-- end of msgrel.module -->
+ <!-- MsgText (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="msginfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a message in a message set. -->
+ <xs:element name="msginfo">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msglevel"/>
+ <xs:element ref="msgorig"/>
+ <xs:element ref="msgaud"/>
+ </xs:choice>
+ <xs:attributeGroup ref="msginfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msginfo.element -->
+ <xs:attributeGroup name="msginfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msginfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msginfo.attlist -->
+ <!-- end of msginfo.module -->
+ <xs:attributeGroup name="msglevel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The level of importance or severity of a message in a message set. -->
+ <xs:element name="msglevel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msglevel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msglevel.element -->
+ <xs:attributeGroup name="msglevel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msglevel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msglevel.attlist -->
+ <!-- end of msglevel.module -->
+ <xs:attributeGroup name="msgorig.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The origin of a message in a message set. -->
+ <xs:element name="msgorig">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msgorig.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgorig.element -->
+ <xs:attributeGroup name="msgorig.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgorig.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgorig.attlist -->
+ <!-- end of msgorig.module -->
+ <xs:attributeGroup name="msgaud.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The audience to which a message in a message set is relevant. -->
+ <xs:element name="msgaud">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="msgaud.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgaud.element -->
+ <xs:attributeGroup name="msgaud.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgaud.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgaud.attlist -->
+ <!-- end of msgaud.module -->
+ <xs:attributeGroup name="msgexplan.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Explanatory material relating to a message in a message set. -->
+ <xs:element name="msgexplan">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgexplan.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgexplan.element -->
+ <xs:attributeGroup name="msgexplan.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgexplan.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgexplan.attlist -->
+ <!-- end of msgexplan.module -->
+ <!-- end of msgset.content.module -->
+ <xs:attributeGroup name="task.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A task to be completed. -->
+ <xs:element name="task" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" ref="tasksummary"/>
+ <xs:element minOccurs="0" ref="taskprerequisites"/>
+ <xs:element ref="procedure"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="example"/>
+ <xs:element minOccurs="0" ref="taskrelated"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="task.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of task.element -->
+ <xs:attributeGroup name="task.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="task.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of task.attlist -->
+ <!-- end of task.module -->
+ <xs:attributeGroup name="tasksummary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of a task. -->
+ <xs:element name="tasksummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tasksummary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tasksummary.element -->
+ <xs:attributeGroup name="tasksummary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tasksummary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tasksummary.attlist -->
+ <!-- end of tasksummary.module -->
+ <xs:attributeGroup name="taskprerequisites.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prerequisites for a task. -->
+ <xs:element name="taskprerequisites">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskprerequisites.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskprerequisites.element -->
+ <xs:attributeGroup name="taskprerequisites.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskprerequisites.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskprerequisites.attlist -->
+ <!-- end of taskprerequisites.module -->
+ <xs:attributeGroup name="taskrelated.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information related to a task. -->
+ <xs:element name="taskrelated">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskrelated.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskrelated.element -->
+ <xs:attributeGroup name="taskrelated.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskrelated.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskrelated.attlist -->
+ <!-- end of taskrelated.module -->
+ <!-- end of task.content.module -->
+ <!-- QandASet ........................ -->
+ <xs:attributeGroup name="qandaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question-and-answer set. -->
+ <xs:element name="qandaset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaset.element -->
+ <xs:attributeGroup name="qandaset.attlist">
+ <xs:attribute name="defaultlabel">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="qanda"/>
+ <xs:enumeration value="number"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaset.attlist -->
+ <!-- end of qandaset.module -->
+ <xs:attributeGroup name="qandadiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A titled division in a QandASet. -->
+ <xs:element name="qandadiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandadiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandadiv.element -->
+ <xs:attributeGroup name="qandadiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandadiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandadiv.attlist -->
+ <!-- end of qandadiv.module -->
+ <xs:attributeGroup name="qandaentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question/answer set within a QandASet. -->
+ <xs:element name="qandaentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:element ref="question"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="answer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaentry.element -->
+ <xs:attributeGroup name="qandaentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaentry.attlist -->
+ <!-- end of qandaentry.module -->
+ <xs:attributeGroup name="question.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question in a QandASet. -->
+ <xs:element name="question">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group maxOccurs="unbounded" ref="qandaset.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="question.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of question.element -->
+ <xs:attributeGroup name="question.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="question.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of question.attlist -->
+ <!-- end of question.module -->
+ <xs:attributeGroup name="answer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An answer to a question posed in a QandASet. -->
+ <xs:element name="answer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="answer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of answer.element -->
+ <xs:attributeGroup name="answer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="answer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of answer.attlist -->
+ <!-- end of answer.module -->
+ <xs:attributeGroup name="label.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A label on a Question or Answer. -->
+ <xs:element name="label">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="label.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of label.element -->
+ <xs:attributeGroup name="label.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="label.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of label.attlist -->
+ <!-- end of label.module -->
+ <!-- end of qandaset.content.module -->
+ <!-- Procedure ........................ -->
+ <xs:attributeGroup name="procedure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of operations to be performed in a well-defined sequence. -->
+ <xs:element name="procedure" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="procedure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of procedure.element -->
+ <xs:attributeGroup name="procedure.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="procedure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of procedure.attlist -->
+ <!-- end of procedure.module -->
+ <xs:attributeGroup name="step.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of action in a procedure. -->
+ <xs:element name="step">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:sequence minOccurs="0">
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="step.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of step.element -->
+ <!-- Performance: Whether the Step must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="step.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="step.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of step.attlist -->
+ <!-- end of step.module -->
+ <xs:attributeGroup name="substeps.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for steps that occur within steps in a procedure. -->
+ <xs:element name="substeps">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="substeps.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of substeps.element -->
+ <!-- Performance: whether entire set of substeps must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="substeps.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="substeps.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of substeps.attlist -->
+ <!-- end of substeps.module -->
+ <xs:attributeGroup name="stepalternatives.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Alternative steps in a procedure. -->
+ <xs:element name="stepalternatives">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="stepalternatives.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of stepalternatives.element -->
+ <!-- Performance: Whether (one of) the alternatives must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="stepalternatives.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="stepalternatives.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of stepalternatives.attlist -->
+ <!-- end of stepalternatives.module -->
+ <!-- end of procedure.content.module -->
+ <!-- Sidebar .......................... -->
+ <xs:attributeGroup name="sidebarinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sidebar. -->
+ <xs:element name="sidebarinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sidebarinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebarinfo.element -->
+ <xs:attributeGroup name="sidebarinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebarinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebarinfo.attlist -->
+ <!-- end of sidebarinfo.module -->
+ <xs:attributeGroup name="sidebar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a document that is isolated from the main narrative flow. -->
+ <xs:element name="sidebar" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sidebarinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="sidebar.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sidebar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebar.element -->
+ <xs:attributeGroup name="sidebar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebar.attlist -->
+ <!-- end of sidebar.module -->
+ <!-- end of sidebar.content.model -->
+ <!-- ...................................................................... -->
+ <!-- Paragraph-related elements ........................................... -->
+ <xs:attributeGroup name="abstract.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="abstract">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="abstract.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abstract.element -->
+ <xs:attributeGroup name="abstract.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abstract.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abstract.attlist -->
+ <!-- end of abstract.module -->
+ <xs:attributeGroup name="authorblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about an author. -->
+ <xs:element name="authorblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="authorblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorblurb.element -->
+ <xs:attributeGroup name="authorblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorblurb.attlist -->
+ <!-- end of authorblurb.module -->
+ <xs:attributeGroup name="personblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about a person. -->
+ <xs:element name="personblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="personblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personblurb.element -->
+ <xs:attributeGroup name="personblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personblurb.attlist -->
+ <!-- end of personblurb.module -->
+ <xs:attributeGroup name="blockquote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A quotation set off from the main text. -->
+ <xs:element name="blockquote" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="blockquote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockquote.element -->
+ <xs:attributeGroup name="blockquote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockquote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockquote.attlist -->
+ <!-- end of blockquote.module -->
+ <xs:attributeGroup name="attribution.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a block quote or epigraph. -->
+ <xs:element name="attribution">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="attribution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of attribution.element -->
+ <xs:attributeGroup name="attribution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="attribution.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of attribution.attlist -->
+ <!-- end of attribution.module -->
+ <xs:attributeGroup name="bridgehead.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A free-floating heading. -->
+ <xs:element name="bridgehead">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="bridgehead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bridgehead.element -->
+ <!--
+ Renderas: Indicates the format in which the BridgeHead
+ should appear
+ -->
+ <xs:attributeGroup name="bridgehead.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other"/>
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bridgehead.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bridgehead.attlist -->
+ <!-- end of bridgehead.module -->
+ <xs:attributeGroup name="remark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A remark (or comment) intended for presentation in a draft manuscript. -->
+ <xs:element name="remark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="remark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of remark.element -->
+ <xs:attributeGroup name="remark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="remark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of remark.attlist -->
+ <!-- end of remark.module -->
+ <xs:attributeGroup name="epigraph.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short inscription at the beginning of a document or component. -->
+ <xs:element name="epigraph">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="para.class"/>
+ <xs:element ref="literallayout"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="epigraph.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of epigraph.element -->
+ <xs:attributeGroup name="epigraph.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="epigraph.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of epigraph.attlist -->
+ <!-- Attribution (defined above) -->
+ <!-- end of epigraph.module -->
+ <xs:attributeGroup name="footnote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A footnote. -->
+ <xs:element name="footnote" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="footnote.mix"/>
+ <xs:attributeGroup ref="footnote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnote.element -->
+ <xs:attributeGroup name="footnote.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnote.attlist -->
+ <!-- end of footnote.module -->
+ <xs:attributeGroup name="highlights.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the main points of the discussed component. -->
+ <xs:element name="highlights">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="highlights.mix"/>
+ <xs:attributeGroup ref="highlights.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of highlights.element -->
+ <xs:attributeGroup name="highlights.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="highlights.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of highlights.attlist -->
+ <!-- end of highlights.module -->
+ <xs:attributeGroup name="formalpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph with a title. -->
+ <xs:element name="formalpara" substitutionGroup="para.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="para"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="formalpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of formalpara.element -->
+ <xs:attributeGroup name="formalpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="formalpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of formalpara.attlist -->
+ <!-- end of formalpara.module -->
+ <xs:attributeGroup name="para.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="para" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="para.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of para.element -->
+ <xs:attributeGroup name="para.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="para.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of para.attlist -->
+ <!-- end of para.module -->
+ <xs:attributeGroup name="simpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph that contains only text and inline markup, no block elements. -->
+ <xs:element name="simpara" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="simpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simpara.element -->
+ <xs:attributeGroup name="simpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simpara.attlist -->
+ <!-- end of simpara.module -->
+ <xs:attributeGroup name="sconstruct.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SConstruct example file. -->
+ <xs:element name="sconstruct" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconstruct.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconstruct.element -->
+ <xs:attributeGroup name="sconstruct.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconstruct.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconstruct.attlist -->
+ <!-- end of sconstruct.module -->
+ <xs:attributeGroup name="scons_example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example. -->
+ <xs:element name="scons_example" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="file"/>
+ <xs:element ref="directory"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example.element -->
+ <xs:attributeGroup name="scons_example.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_example.attlist -->
+ <!-- end of scons_example.module -->
+ <xs:attributeGroup name="file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example file. -->
+ <xs:element name="file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of file.element -->
+ <xs:attributeGroup name="file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="optional" />
+ <xs:attribute name="chmod" type="xs:string" use="optional" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of file.attlist -->
+ <!-- end of file.module -->
+ <xs:attributeGroup name="directory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example directory. -->
+ <xs:element name="directory" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="directory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of directory.element -->
+ <xs:attributeGroup name="directory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="directory.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of directory.attlist -->
+ <!-- end of directory.module -->
+ <xs:attributeGroup name="scons_example_file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_example_file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example_file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example_file.element -->
+ <xs:attributeGroup name="scons_example_file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example_file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_example_file.attlist -->
+ <!-- end of scons_example_file.module -->
+ <xs:attributeGroup name="scons_output.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The output of a SCons command/example. -->
+ <xs:element name="scons_output" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="scons_output_command"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output.element -->
+ <xs:attributeGroup name="scons_output.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" />
+ <xs:attribute name="tools" type="xs:string" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ <xs:attribute name="suffix" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_output.attlist -->
+ <!-- end of scons_output.module -->
+ <xs:attributeGroup name="scons_output_command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_output_command" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output_command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output_command.element -->
+ <xs:attributeGroup name="scons_output_command.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output_command.role.attrib"/>
+ <xs:attribute name="edit" type="xs:string" use="optional" />
+ <xs:attribute name="environment" type="xs:string" use="optional" />
+ <xs:attribute name="output" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_output_command.attlist -->
+ <!-- end of scons_output_command.module -->
+ <xs:attributeGroup name="sconsdoc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A sconsdoc. -->
+ <xs:element name="sconsdoc" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tool"/>
+ <xs:element ref="builder"/>
+ <xs:element ref="scons_function"/>
+ <xs:element ref="cvar"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconsdoc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconsdoc.element -->
+ <xs:attributeGroup name="sconsdoc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconsdoc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconsdoc.attlist -->
+ <!-- end of sconsdoc.module -->
+ <xs:attributeGroup name="example_commands.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="example_commands" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="example_commands.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example_commands.element -->
+ <xs:attributeGroup name="example_commands.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example_commands.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example_commands.attlist -->
+ <!-- end of example_commands.module -->
+ <xs:attributeGroup name="summary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="summary" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="component.mix"/>
+ <xs:group ref="summary.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="summary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of summary.element -->
+ <xs:attributeGroup name="summary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="summary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of summary.attlist -->
+ <!-- end of summary.module -->
+
+ <xs:attributeGroup name="item.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A item. -->
+ <xs:element name="item">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="item.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of item.element -->
+ <xs:attributeGroup name="item.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="item.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of item.attlist -->
+ <!-- end of item.module -->
+ <xs:attributeGroup name="sets.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="sets" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sets.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sets.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="sets.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sets.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sets.attlist -->
+ <!-- end of sets.module -->
+ <xs:attributeGroup name="uses.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="uses" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="uses.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uses.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="uses.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uses.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uses.attlist -->
+ <!-- end of uses.module -->
+ <xs:attributeGroup name="tool.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="tool" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tool.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tool.element -->
+ <xs:attributeGroup name="tool.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tool.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of tool.attlist -->
+ <!-- end of tool.module -->
+ <xs:attributeGroup name="builder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="builder" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="builder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of builder.element -->
+ <xs:attributeGroup name="builder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="builder.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of builder.attlist -->
+ <!-- end of builder.module -->
+
+ <xs:attributeGroup name="cvar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="cvar" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:element ref="summary"/>
+ </xs:choice>
+ <xs:attributeGroup ref="cvar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cvar.element -->
+ <xs:attributeGroup name="cvar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cvar.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of cvar.attlist -->
+ <!-- end of cvar.module -->
+ <xs:attributeGroup name="arguments.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="arguments" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arguments.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arguments.element -->
+ <xs:attributeGroup name="arguments.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arguments.role.attrib"/>
+ <xs:attribute name="signature" type="xs:string" use="optional" />
+ <xs:attribute name="both" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of arguments.attlist -->
+ <!-- end of arguments.module -->
+ <xs:attributeGroup name="scons_function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="scons_function" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ <xs:group ref="scons_function.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_function.element -->
+ <xs:attributeGroup name="scons_function.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_function.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_function.attlist -->
+ <!-- end of scons_function.module -->
+ <xs:attributeGroup name="admon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A note of caution. -->
+ <xs:element name="caution" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="caution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caution.element -->
+ <xs:attributeGroup name="caution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of caution.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="important" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="important.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of important.element -->
+ <xs:attributeGroup name="important.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of important.attlist -->
+ <!-- doc:A message set off from the text. -->
+ <xs:element name="note" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="note.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of note.element -->
+ <xs:attributeGroup name="note.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of note.attlist -->
+ <!-- doc:A suggestion to the user, set off from the text. -->
+ <xs:element name="tip" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tip.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tip.element -->
+ <xs:attributeGroup name="tip.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tip.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="warning" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="warning.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of warning.element -->
+ <xs:attributeGroup name="warning.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of warning.attlist -->
+ <!-- end of admon.module -->
+ <!-- ...................................................................... -->
+ <!-- Lists ................................................................ -->
+ <!-- GlossList ........................ -->
+ <xs:attributeGroup name="glosslist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of GlossEntrys. -->
+ <xs:element name="glosslist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glosslist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosslist.element -->
+ <xs:attributeGroup name="glosslist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosslist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosslist.attlist -->
+ <!-- end of glosslist.module -->
+ <xs:attributeGroup name="glossentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Glossary or GlossList. -->
+ <xs:element name="glossentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="glossterm"/>
+ <xs:element minOccurs="0" ref="acronym"/>
+ <xs:element minOccurs="0" ref="abbrev"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:choice>
+ <xs:element ref="glosssee"/>
+ <xs:element maxOccurs="unbounded" ref="glossdef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossentry.element -->
+ <!--
+ SortAs: String by which the GlossEntry is to be sorted
+ (alphabetized) in lieu of its proper content
+ -->
+ <xs:attributeGroup name="glossentry.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossentry.attlist -->
+ <!-- end of glossentry.module -->
+ <!-- GlossTerm (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="glossdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A definition in a GlossEntry. -->
+ <xs:element name="glossdef">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="glossdef.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="glossseealso"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdef.element -->
+ <!-- Subject: List of subjects; keywords for the definition -->
+ <xs:attributeGroup name="glossdef.attlist">
+ <xs:attribute name="subject"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdef.attlist -->
+ <!-- end of glossdef.module -->
+ <xs:attributeGroup name="glosssee.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glosssee">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glosssee.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosssee.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSee
+ -->
+ <xs:attributeGroup name="glosssee.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosssee.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosssee.attlist -->
+ <!-- end of glosssee.module -->
+ <xs:attributeGroup name="glossseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glossseealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossseealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossseealso.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSeeAlso
+ -->
+ <xs:attributeGroup name="glossseealso.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossseealso.attlist -->
+ <!-- end of glossseealso.module -->
+ <!-- end of glossentry.content.module -->
+ <!-- ItemizedList and OrderedList ..... -->
+ <xs:attributeGroup name="itemizedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="itemizedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itemizedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itemizedlist.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="itemizedlist.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itemizedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itemizedlist.attlist -->
+ <!-- end of itemizedlist.module -->
+ <xs:attributeGroup name="orderedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a sequentially incremented label. -->
+ <xs:element name="orderedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="orderedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orderedlist.element -->
+ <!--
+ Numeration: Style of ListItem numbered; default is expected
+ to be Arabic
+ -->
+ <!--
+ InheritNum: Specifies for a nested list that the numbering
+ of ListItems should include the number of the item
+ within which they are nested (e.g., 1a and 1b within 1,
+ rather than a and b)
+ -->
+ <!--
+ Continuation: Where list numbering begins afresh (Restarts,
+ the default) or continues that of the immediately preceding
+ list (Continues)
+ -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <xs:attributeGroup name="orderedlist.attlist">
+ <xs:attribute name="numeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="arabic"/>
+ <xs:enumeration value="upperalpha"/>
+ <xs:enumeration value="loweralpha"/>
+ <xs:enumeration value="upperroman"/>
+ <xs:enumeration value="lowerroman"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="inheritnum" default="ignore">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inherit"/>
+ <xs:enumeration value="ignore"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation" default="restarts">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orderedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orderedlist.attlist -->
+ <!-- end of orderedlist.module -->
+ <xs:attributeGroup name="listitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the elements of a list item. -->
+ <xs:element name="listitem">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="listitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of listitem.element -->
+ <!--
+ Override: Indicates the mark to be used for this ListItem
+ instead of the default mark or the mark specified by
+ the Mark attribute on the enclosing ItemizedList
+ -->
+ <xs:attributeGroup name="listitem.attlist">
+ <xs:attribute name="override"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="listitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of listitem.attlist -->
+ <!-- end of listitem.module -->
+ <!-- SegmentedList .................... -->
+ <xs:attributeGroup name="segmentedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A segmented list, a list of sets of elements. -->
+ <xs:element name="segmentedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="segtitle"/>
+ <xs:element maxOccurs="unbounded" ref="seglistitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="segmentedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segmentedlist.element -->
+ <xs:attributeGroup name="segmentedlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segmentedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segmentedlist.attlist -->
+ <!-- end of segmentedlist.module -->
+ <xs:attributeGroup name="segtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an element of a list item in a segmented list. -->
+ <xs:element name="segtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="segtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segtitle.element -->
+ <xs:attributeGroup name="segtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segtitle.attlist -->
+ <!-- end of segtitle.module -->
+ <xs:attributeGroup name="seglistitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list item in a segmented list. -->
+ <xs:element name="seglistitem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="seg"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="seglistitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seglistitem.element -->
+ <xs:attributeGroup name="seglistitem.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seglistitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seglistitem.attlist -->
+ <!-- end of seglistitem.module -->
+ <xs:attributeGroup name="seg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a list item in a segmented list. -->
+ <xs:element name="seg">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="seg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seg.element -->
+ <xs:attributeGroup name="seg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seg.attlist -->
+ <!-- end of seg.module -->
+ <!-- end of segmentedlist.content.module -->
+ <!-- SimpleList ....................... -->
+ <xs:attributeGroup name="simplelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An undecorated list of single words or short phrases. -->
+ <xs:element name="simplelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="member"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplelist.element -->
+ <!-- Columns: The number of columns the array should contain -->
+ <!--
+ Type: How the Members of the SimpleList should be
+ formatted: Inline (members separated with commas etc.
+ inline), Vert (top to bottom in n Columns), or Horiz (in
+ the direction of text flow) in n Columns. If Column
+ is 1 or implied, Type=Vert and Type=Horiz give the same
+ results.
+ -->
+ <xs:attributeGroup name="simplelist.attlist">
+ <xs:attribute name="columns"/>
+ <xs:attribute name="type" default="vert">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inline"/>
+ <xs:enumeration value="vert"/>
+ <xs:enumeration value="horiz"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplelist.attlist -->
+ <!-- end of simplelist.module -->
+ <xs:attributeGroup name="member.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a simple list. -->
+ <xs:element name="member">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="member.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of member.element -->
+ <xs:attributeGroup name="member.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="member.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of member.attlist -->
+ <!-- end of member.module -->
+ <!-- end of simplelist.content.module -->
+ <!-- VariableList ..................... -->
+ <xs:attributeGroup name="variablelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is composed of a set of one or more terms and an associated description. -->
+ <xs:element name="variablelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="varlistentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="variablelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of variablelist.element -->
+ <!--
+ TermLength: Length beyond which the presentation engine
+ may consider the Term too long and select an alternate
+ presentation of the Term and, or, its associated ListItem.
+ -->
+ <xs:attributeGroup name="variablelist.attlist">
+ <xs:attribute name="termlength"/>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="variablelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of variablelist.attlist -->
+ <!-- end of variablelist.module -->
+ <xs:attributeGroup name="varlistentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of terms and the associated description in a variable list. -->
+ <xs:element name="varlistentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="term"/>
+ <xs:element ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="varlistentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varlistentry.element -->
+ <xs:attributeGroup name="varlistentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varlistentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varlistentry.attlist -->
+ <!-- end of varlistentry.module -->
+ <xs:attributeGroup name="term.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The word or phrase being defined or described in a variable list. -->
+ <xs:element name="term">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="term.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of term.element -->
+ <xs:attributeGroup name="term.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="term.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of term.attlist -->
+ <!-- end of term.module -->
+ <!-- ListItem (defined above) -->
+ <!-- end of variablelist.content.module -->
+ <!-- CalloutList ...................... -->
+ <xs:attributeGroup name="calloutlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of Callouts. -->
+ <xs:element name="calloutlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="callout"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="calloutlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of calloutlist.element -->
+ <xs:attributeGroup name="calloutlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="calloutlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of calloutlist.attlist -->
+ <!-- end of calloutlist.module -->
+ <xs:attributeGroup name="callout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A &ldquo;called out&rdquo; description of a marked Area. -->
+ <xs:element name="callout">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="callout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of callout.element -->
+ <!--
+ AreaRefs: IDs of one or more Areas or AreaSets described
+ by this Callout
+ -->
+ <xs:attributeGroup name="callout.attlist">
+ <xs:attribute name="arearefs" use="required" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="callout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of callout.attlist -->
+ <!-- end of callout.module -->
+ <!-- end of calloutlist.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Objects .............................................................. -->
+ <!-- Examples etc. .................... -->
+ <xs:attributeGroup name="example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal example, with a title. -->
+ <xs:element name="example" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example.element -->
+ <xs:attributeGroup name="example.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example.attlist -->
+ <!-- end of example.module -->
+ <xs:attributeGroup name="informalexample.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed example without a title. -->
+ <xs:element name="informalexample" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalexample.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalexample.element -->
+ <xs:attributeGroup name="informalexample.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalexample.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalexample.attlist -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="programlistingco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A program listing with associated areas used in callouts. -->
+ <xs:element name="programlistingco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="programlisting"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="programlistingco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlistingco.element -->
+ <xs:attributeGroup name="programlistingco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlistingco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlistingco.attlist -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="areaspec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of regions in a graphic or code example. -->
+ <xs:element name="areaspec">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="area"/>
+ <xs:element ref="areaset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="areaspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaspec.element -->
+ <!--
+ Units: global unit of measure in which coordinates in
+ this spec are expressed:
+
+ - CALSPair "x1,y1 x2,y2": lower-left and upper-right
+ coordinates in a rectangle describing repro area in which
+ graphic is placed, where X and Y dimensions are each some
+ number 0..10000 (taken from CALS graphic attributes)
+
+ - LineColumn "line column": line number and column number
+ at which to start callout text in "linespecific" content
+
+ - LineRange "startline endline": whole lines from startline
+ to endline in "linespecific" content
+
+ - LineColumnPair "line1 col1 line2 col2": starting and ending
+ points of area in "linespecific" content that starts at
+ first position and ends at second position (including the
+ beginnings of any intervening lines)
+
+ - Other: directive to look at value of OtherUnits attribute
+ to get implementation-specific keyword
+
+ The default is implementation-specific; usually dependent on
+ the parent element (GraphicCO gets CALSPair, ProgramListingCO
+ and ScreenCO get LineColumn)
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="areaspec.attlist">
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="areaspec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaspec.attlist -->
+ <!-- end of areaspec.module -->
+ <xs:attributeGroup name="area.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A region defined for a Callout in a graphic or code example. -->
+ <xs:element name="area">
+ <xs:complexType>
+ <xs:attributeGroup ref="area.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of area.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="area.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="area.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of area.attlist -->
+ <!-- end of area.module -->
+ <xs:attributeGroup name="areaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of related areas in a graphic or code example. -->
+ <xs:element name="areaset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="area"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="areaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaset.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSpec
+ -->
+ <xs:attributeGroup name="areaset.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="areaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaset.attlist -->
+ <!-- end of areaset.module -->
+ <!-- end of areaspec.content.module -->
+ <xs:attributeGroup name="programlisting.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A literal listing of all or part of a program. -->
+ <xs:element name="programlisting" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="programlisting.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlisting.element -->
+ <xs:attributeGroup name="programlisting.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlisting.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlisting.attlist -->
+ <!-- end of programlisting.module -->
+ <xs:attributeGroup name="literallayout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A block of text in which line breaks and white space are to be reproduced faithfully. -->
+ <xs:element name="literallayout" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="literallayout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literallayout.element -->
+ <xs:attributeGroup name="literallayout.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attribute name="class" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="monospaced"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literallayout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literallayout.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of literallayout.module -->
+ <xs:attributeGroup name="screenco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A screen with associated areas used in callouts. -->
+ <xs:element name="screenco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="screen"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenco.element -->
+ <xs:attributeGroup name="screenco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenco.attlist -->
+ <!-- AreaSpec (defined above) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of screenco.module -->
+ <xs:attributeGroup name="screen.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="screen" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="screen.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screen.element -->
+ <xs:attributeGroup name="screen.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screen.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screen.attlist -->
+ <!-- end of screen.module -->
+ <xs:attributeGroup name="screenshot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A representation of what the user sees or might see on a computer screen. -->
+ <xs:element name="screenshot" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="screeninfo"/>
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="graphicco"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="mediaobjectco"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenshot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenshot.element -->
+ <xs:attributeGroup name="screenshot.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenshot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenshot.attlist -->
+ <!-- end of screenshot.module -->
+ <xs:attributeGroup name="screeninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about how a screen shot was produced. -->
+ <xs:element name="screeninfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="screeninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screeninfo.element -->
+ <xs:attributeGroup name="screeninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screeninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screeninfo.attlist -->
+ <!-- end of screeninfo.module -->
+ <!-- end of screenshot.content.module -->
+ <!-- Figures etc. ..................... -->
+ <xs:attributeGroup name="figure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal figure, generally an illustration, with a title. -->
+ <xs:element name="figure" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="figure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of figure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="figure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="figure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of figure.attlist -->
+ <!-- end of figure.module -->
+ <xs:attributeGroup name="informalfigure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A untitled figure. -->
+ <xs:element name="informalfigure" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalfigure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalfigure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="informalfigure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalfigure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalfigure.attlist -->
+ <!-- end of informalfigure.module -->
+ <xs:attributeGroup name="graphicco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphic that contains callout areas. -->
+ <xs:element name="graphicco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="graphic"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="graphicco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphicco.element -->
+ <xs:attributeGroup name="graphicco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphicco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphicco.attlist -->
+ <!-- AreaSpec (defined above in Examples) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of graphicco.module -->
+ <!--
+ Graphical data can be the content of Graphic, or you can reference
+ an external file either as an entity (Entitref) or a filename
+ (Fileref).
+ -->
+ <xs:attributeGroup name="graphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed graphical object (not an inline). -->
+ <xs:element name="graphic" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="graphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphic.element -->
+ <xs:attributeGroup name="graphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphic.attlist -->
+ <!-- end of graphic.module -->
+ <xs:attributeGroup name="inlinegraphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An object containing or pointing to graphical data that will be rendered inline. -->
+ <xs:element name="inlinegraphic" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="inlinegraphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinegraphic.element -->
+ <xs:attributeGroup name="inlinegraphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinegraphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinegraphic.attlist -->
+ <!-- end of inlinegraphic.module -->
+ <xs:attributeGroup name="mediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed media object (video, audio, image, etc.). -->
+ <xs:element name="mediaobject" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ <xs:element minOccurs="0" ref="caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobject.element -->
+ <xs:attributeGroup name="mediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobject.attlist -->
+ <!-- end of mediaobject.module -->
+ <xs:attributeGroup name="inlinemediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline media object (video, audio, image, and so on). -->
+ <xs:element name="inlinemediaobject" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="inlinemediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinemediaobject.element -->
+ <xs:attributeGroup name="inlinemediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinemediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinemediaobject.attlist -->
+ <!-- end of inlinemediaobject.module -->
+ <xs:attributeGroup name="videoobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for video data and its associated meta-information. -->
+ <xs:element name="videoobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="videodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="videoobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videoobject.element -->
+ <xs:attributeGroup name="videoobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videoobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videoobject.attlist -->
+ <!-- end of videoobject.module -->
+ <xs:attributeGroup name="audioobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for audio data and its associated meta-information. -->
+ <xs:element name="audioobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="audiodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="audioobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audioobject.element -->
+ <xs:attributeGroup name="audioobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audioobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audioobject.attlist -->
+ <!-- end of audioobject.module -->
+ <xs:attributeGroup name="imageobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for image data and its associated meta-information. -->
+ <xs:element name="imageobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imagedata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobject.element -->
+ <xs:attributeGroup name="imageobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobject.attlist -->
+ <!-- end of imageobject.module -->
+ <xs:attributeGroup name="textobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a text description of an object and its associated meta-information. -->
+ <xs:element name="textobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:choice>
+ <xs:element ref="phrase"/>
+ <xs:element ref="textdata"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="textobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textobject.element -->
+ <xs:attributeGroup name="textobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textobject.attlist -->
+ <!-- end of textobject.module -->
+ <xs:attributeGroup name="objectinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an object. -->
+ <xs:element name="objectinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="objectinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of objectinfo.element -->
+ <xs:attributeGroup name="objectinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="objectinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of objectinfo.attlist -->
+ <!-- end of objectinfo.module -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the object data
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the object data
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the image -->
+ <xs:attributeGroup name="objectdata.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="videodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external video data. -->
+ <xs:element name="videodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="videodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videodata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="videodata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videodata.attlist -->
+ <!-- end of videodata.module -->
+ <xs:attributeGroup name="audiodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external audio data. -->
+ <xs:element name="audiodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="audiodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audiodata.element -->
+ <xs:attributeGroup name="audiodata.attlist">
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audiodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audiodata.attlist -->
+ <!-- end of audiodata.module -->
+ <xs:attributeGroup name="imagedata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external image data. -->
+ <xs:element name="imagedata">
+ <xs:complexType>
+ <xs:attributeGroup ref="imagedata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imagedata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="imagedata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imagedata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imagedata.attlist -->
+ <!-- end of imagedata.module -->
+ <xs:attributeGroup name="textdata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external text data. -->
+ <xs:element name="textdata">
+ <xs:complexType>
+ <xs:attributeGroup ref="textdata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textdata.element -->
+ <xs:attributeGroup name="textdata.attlist">
+ <xs:attribute name="encoding"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textdata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textdata.attlist -->
+ <!-- end of textdata.module -->
+ <xs:attributeGroup name="mediaobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A media object that contains callouts. -->
+ <xs:element name="mediaobjectco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imageobjectco"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="imageobjectco"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobjectco.element -->
+ <xs:attributeGroup name="mediaobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobjectco.attlist -->
+ <!-- end of mediaobjectco.module -->
+ <xs:attributeGroup name="imageobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an image object with callouts. -->
+ <xs:element name="imageobjectco" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="imageobject"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobjectco.element -->
+ <xs:attributeGroup name="imageobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobjectco.attlist -->
+ <!-- end of imageobjectco.module -->
+ <!-- end of mediaobject.content.module -->
+ <!-- Equations ........................ -->
+ <!-- This PE provides a mechanism for replacing equation content, -->
+ <!-- perhaps adding a new or different model (e.g., MathML) -->
+ <xs:group name="equation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="inlineequation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="inlinemediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="equation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation. -->
+ <xs:element name="equation" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element ref="informalequation"/>
+ <xs:group ref="equation.content"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="equation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of equation.element -->
+ <xs:attributeGroup name="equation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="equation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of equation.attlist -->
+ <!-- end of equation.module -->
+ <xs:attributeGroup name="informalequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation without a title. -->
+ <xs:element name="informalequation" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="equation.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalequation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalequation.element -->
+ <xs:attributeGroup name="informalequation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalequation.attlist -->
+ <!-- end of informalequation.module -->
+ <xs:attributeGroup name="inlineequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical equation or expression occurring inline. -->
+ <xs:element name="inlineequation" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="inlineequation.content">
+ <xs:attributeGroup ref="inlineequation.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlineequation.element -->
+ <xs:attributeGroup name="inlineequation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlineequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlineequation.attlist -->
+ <!-- end of inlineequation.module -->
+ <xs:attributeGroup name="alt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text representation for a graphical element. -->
+ <xs:element name="alt">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="alt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of alt.element -->
+ <xs:attributeGroup name="alt.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="alt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of alt.attlist -->
+ <!-- end of alt.module -->
+ <xs:attributeGroup name="mathphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup. -->
+ <xs:element name="mathphrase">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="mathphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mathphrase.element -->
+ <xs:attributeGroup name="mathphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mathphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mathphrase.attlist -->
+ <!-- end of mathphrase.module -->
+ <!-- Tables ........................... -->
+ <!-- Choose a table model. CALS or OASIS XML Exchange -->
+ <!-- Do we allow the HTML table model as well? -->
+ <!-- ====================================================== -->
+ <!--
+ xhtmltbl.mod defines HTML tables and sets parameter
+ entities so that, when the CALS table module is read,
+ we end up allowing any table to be CALS or HTML.
+ i.e. This include must come first!
+ -->
+ <!-- ====================================================== -->
+ <!-- end of allow.html.tables -->
+ <!-- Add label and role attributes to table and informaltable -->
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <!-- Content model for Table. -->
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <!-- Reference CALS Table Model -->
+ <!-- end of table.module -->
+ <!--
+ Note that InformalTable is dependent on some of the entity
+ declarations that customize Table.
+ -->
+ <!-- the following entity may have been declared by the XHTML table module -->
+ <!-- doc:A table without a title. -->
+ <xs:element name="informaltable" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="informal.tbl.table.mdl"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informaltable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informaltable.element -->
+ <!--
+ Frame, Colsep, and Rowsep must be repeated because
+ they are not in entities in the table module.
+ -->
+ <!--
+ includes TabStyle, ToCentry, ShortEntry,
+ Orient, PgWide
+ -->
+ <!-- includes Label -->
+ <!-- includes common attributes -->
+ <xs:attributeGroup name="informaltable.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno.attvals"/>
+ <xs:attribute name="rowsep" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="common.table.attribs"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ </xs:attributeGroup>
+ <!-- end of informaltable.attlist -->
+ <!-- end of informaltable.module -->
+ <xs:attributeGroup name="caption.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A caption. -->
+ <xs:element name="caption">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="textobject.mix"/>
+ <xs:attributeGroup ref="caption.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caption.element -->
+ <!-- attrs comes from HTML tables ... -->
+ <!-- common.attrib, but without ID because ID is in attrs -->
+ <xs:attributeGroup name="caption.attlist.content">
+ <xs:attributeGroup ref="caption.role.attrib"/>
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="caption.attlist">
+ <xs:attributeGroup ref="caption.attlist.content"/>
+ </xs:attributeGroup>
+ <!-- end of caption.attlist -->
+ <!-- end of caption.module -->
+ <!-- ...................................................................... -->
+ <!-- Synopses ............................................................. -->
+ <!-- Synopsis ......................... -->
+ <xs:attributeGroup name="synopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="synopsis" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopsis.element -->
+ <xs:attributeGroup name="synopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopsis.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of synopsis.module -->
+ <!-- CmdSynopsis ...................... -->
+ <xs:attributeGroup name="cmdsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a software command. -->
+ <xs:element name="cmdsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="command"/>
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="synopfragment"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="cmdsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cmdsynopsis.element -->
+ <!--
+ Sepchar: Character that should separate command and all
+ top-level arguments; alternate value might be e.g., &Delta;
+ -->
+ <xs:attributeGroup name="cmdsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="sepchar" default=" "/>
+ <xs:attribute name="cmdlength"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cmdsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of cmdsynopsis.attlist -->
+ <!-- end of cmdsynopsis.module -->
+ <xs:attributeGroup name="arg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An argument in a CmdSynopsis. -->
+ <xs:element name="arg">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arg.element -->
+ <!--
+ Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg)
+ -->
+ <!--
+ Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...)
+ -->
+ <xs:attributeGroup name="arg.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of arg.attlist -->
+ <!-- end of arg.module -->
+ <xs:attributeGroup name="group.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A group of elements in a CmdSynopsis. -->
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="group.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of group.element -->
+ <!--
+ Choice: Whether Group must be supplied: Opt (optional to
+ supply, e.g. [g1|g2|g3]; the default), Req (required to
+ supply, e.g. {g1|g2|g3}), Plain (required to supply,
+ e.g. g1|g2|g3), OptMult (can supply zero or more, e.g.
+ [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
+ {{g1|g2|g3}})
+ -->
+ <!--
+ Rep: whether Group is repeatable: Norepeat (e.g. group
+ without ellipsis; the default), or Repeat (e.g. group...)
+ -->
+ <xs:attributeGroup name="group.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="group.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of group.attlist -->
+ <!-- end of group.module -->
+ <!-- Synopsis break -->
+ <xs:attributeGroup name="sbr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An explicit line break in a command synopsis. -->
+ <xs:element name="sbr">
+ <xs:complexType>
+ <xs:attributeGroup ref="sbr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sbr.element -->
+ <xs:attributeGroup name="sbr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sbr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sbr.attlist -->
+ <!-- end of sbr.module -->
+ <xs:attributeGroup name="synopfragmentref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference to a fragment of a command synopsis. -->
+ <xs:element name="synopfragmentref">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="synopfragmentref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragmentref.element -->
+ <!--
+ to SynopFragment of complex synopsis
+ material for separate referencing
+ -->
+ <xs:attributeGroup name="synopfragmentref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopfragmentref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragmentref.attlist -->
+ <!-- end of synopfragmentref.module -->
+ <xs:attributeGroup name="synopfragment.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a CmdSynopsis broken out from the main body of the synopsis. -->
+ <xs:element name="synopfragment">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopfragment.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragment.element -->
+ <xs:attributeGroup name="synopfragment.attlist">
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="synopfragment.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragment.attlist -->
+ <!-- end of synopfragment.module -->
+ <!-- Command (defined in the Inlines section, below) -->
+ <!-- Option (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- end of cmdsynopsis.content.module -->
+ <!-- FuncSynopsis ..................... -->
+ <xs:attributeGroup name="funcsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a function definition. -->
+ <xs:element name="funcsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="funcsynopsisinfo"/>
+ <xs:element ref="funcprototype"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsis.element -->
+ <xs:attributeGroup name="funcsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsis.attlist -->
+ <!-- end of funcsynopsis.module -->
+ <xs:attributeGroup name="funcsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the FuncDefs of a FuncSynopsis. -->
+ <xs:element name="funcsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsisinfo.element -->
+ <xs:attributeGroup name="funcsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsisinfo.attlist -->
+ <!-- end of funcsynopsisinfo.module -->
+ <xs:attributeGroup name="funcprototype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prototype of a function. -->
+ <xs:element name="funcprototype">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element ref="funcdef"/>
+ <xs:choice>
+ <xs:element ref="void"/>
+ <xs:element ref="varargs"/>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="paramdef"/>
+ <xs:element minOccurs="0" ref="varargs"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="funcprototype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcprototype.element -->
+ <xs:attributeGroup name="funcprototype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcprototype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcprototype.attlist -->
+ <!-- end of funcprototype.module -->
+ <xs:attributeGroup name="funcdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A function (subroutine) name and its return type. -->
+ <xs:element name="funcdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="function"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcdef.element -->
+ <xs:attributeGroup name="funcdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcdef.attlist -->
+ <!-- end of funcdef.module -->
+ <xs:attributeGroup name="void.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating that the function in question takes no arguments. -->
+ <xs:element name="void">
+ <xs:complexType>
+ <xs:attributeGroup ref="void.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of void.element -->
+ <xs:attributeGroup name="void.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="void.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of void.attlist -->
+ <!-- end of void.module -->
+ <xs:attributeGroup name="varargs.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating a variable number of arguments. -->
+ <xs:element name="varargs">
+ <xs:complexType>
+ <xs:attributeGroup ref="varargs.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varargs.element -->
+ <xs:attributeGroup name="varargs.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varargs.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varargs.attlist -->
+ <!-- end of varargs.module -->
+ <!--
+ Processing assumes that only one Parameter will appear in a
+ ParamDef, and that FuncParams will be used at most once, for
+ providing information on the "inner parameters" for parameters that
+ are pointers to functions.
+ -->
+ <xs:attributeGroup name="paramdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a function parameter in a programming language. -->
+ <xs:element name="paramdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="initializer"/>
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="parameter"/>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:attributeGroup ref="paramdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of paramdef.element -->
+ <xs:attributeGroup name="paramdef.attlist">
+ <xs:attribute name="choice">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="paramdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of paramdef.attlist -->
+ <!-- end of paramdef.module -->
+ <xs:attributeGroup name="funcparams.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters for a function referenced through a function pointer in a synopsis. -->
+ <xs:element name="funcparams">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="funcparams.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcparams.element -->
+ <xs:attributeGroup name="funcparams.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcparams.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcparams.attlist -->
+ <!-- end of funcparams.module -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- Function (defined in the Inlines section, below) -->
+ <!-- Parameter (defined in the Inlines section, below) -->
+ <!-- end of funcsynopsis.content.module -->
+ <!-- ClassSynopsis ..................... -->
+ <xs:attributeGroup name="classsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a class definition. -->
+ <xs:element name="classsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="ooclass"/>
+ <xs:element ref="oointerface"/>
+ <xs:element ref="ooexception"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="classsynopsisinfo"/>
+ <xs:element ref="fieldsynopsis"/>
+ <xs:element ref="method.synop.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="classsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsis.element -->
+ <xs:attributeGroup name="classsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attribute name="class" default="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="class"/>
+ <xs:enumeration value="interface"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsis.attlist -->
+ <!-- end of classsynopsis.module -->
+ <xs:attributeGroup name="classsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the contents of a ClassSynopsis. -->
+ <xs:element name="classsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="classsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsisinfo.element -->
+ <xs:attributeGroup name="classsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsisinfo.attlist -->
+ <!-- end of classsynopsisinfo.module -->
+ <xs:attributeGroup name="ooclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A class in an object-oriented programming language. -->
+ <xs:element name="ooclass" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="classname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooclass.element -->
+ <xs:attributeGroup name="ooclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooclass.attlist -->
+ <!-- end of ooclass.module -->
+ <xs:attributeGroup name="oointerface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An interface in an object-oriented programming language. -->
+ <xs:element name="oointerface" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="interfacename"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="oointerface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of oointerface.element -->
+ <xs:attributeGroup name="oointerface.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="oointerface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of oointerface.attlist -->
+ <!-- end of oointerface.module -->
+ <xs:attributeGroup name="ooexception.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An exception in an object-oriented programming language. -->
+ <xs:element name="ooexception" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooexception.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooexception.element -->
+ <xs:attributeGroup name="ooexception.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooexception.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooexception.attlist -->
+ <!-- end of ooexception.module -->
+ <xs:attributeGroup name="modifier.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Modifiers in a synopsis. -->
+ <xs:element name="modifier">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="modifier.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modifier.element -->
+ <xs:attributeGroup name="modifier.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modifier.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modifier.attlist -->
+ <!-- end of modifier.module -->
+ <xs:attributeGroup name="interfacename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an interface. -->
+ <xs:element name="interfacename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="interfacename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interfacename.element -->
+ <xs:attributeGroup name="interfacename.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interfacename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interfacename.attlist -->
+ <!-- end of interfacename.module -->
+ <xs:attributeGroup name="exceptionname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an exception. -->
+ <xs:element name="exceptionname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="exceptionname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of exceptionname.element -->
+ <xs:attributeGroup name="exceptionname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="exceptionname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of exceptionname.attlist -->
+ <!-- end of exceptionname.module -->
+ <xs:attributeGroup name="fieldsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a field in a class definition. -->
+ <xs:element name="fieldsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:element ref="varname"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="fieldsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fieldsynopsis.element -->
+ <xs:attributeGroup name="fieldsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fieldsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fieldsynopsis.attlist -->
+ <!-- end of fieldsynopsis.module -->
+ <xs:attributeGroup name="initializer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initializer for a FieldSynopsis. -->
+ <xs:element name="initializer">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="initializer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of initializer.element -->
+ <xs:attributeGroup name="initializer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="initializer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of initializer.attlist -->
+ <!-- end of initializer.module -->
+ <xs:attributeGroup name="constructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a constructor. -->
+ <xs:element name="constructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="constructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constructorsynopsis.element -->
+ <xs:attributeGroup name="constructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constructorsynopsis.attlist -->
+ <!-- end of constructorsynopsis.module -->
+ <xs:attributeGroup name="destructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a destructor. -->
+ <xs:element name="destructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="destructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of destructorsynopsis.element -->
+ <xs:attributeGroup name="destructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="destructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of destructorsynopsis.attlist -->
+ <!-- end of destructorsynopsis.module -->
+ <xs:attributeGroup name="methodsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a method. -->
+ <xs:element name="methodsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="type"/>
+ <xs:element ref="void"/>
+ </xs:choice>
+ <xs:element ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodsynopsis.element -->
+ <xs:attributeGroup name="methodsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodsynopsis.attlist -->
+ <!-- end of methodsynopsis.module -->
+ <xs:attributeGroup name="methodname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a method. -->
+ <xs:element name="methodname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="methodname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodname.element -->
+ <xs:attributeGroup name="methodname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodname.attlist -->
+ <!-- end of methodname.module -->
+ <xs:attributeGroup name="methodparam.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters to a method. -->
+ <xs:element name="methodparam">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="parameter"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodparam.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodparam.element -->
+ <xs:attributeGroup name="methodparam.attlist">
+ <xs:attribute name="choice" default="req">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodparam.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodparam.attlist -->
+ <!-- end of methodparam.module -->
+ <!-- end of classsynopsis.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Document information entities and elements ........................... -->
+ <!--
+ The document information elements include some elements that are
+ currently used only in the document hierarchy module. They are
+ defined here so that they will be available for use in customized
+ document hierarchies.
+ -->
+ <!-- .................................. -->
+ <!-- Ackno ............................ -->
+ <xs:attributeGroup name="ackno.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Acknowledgements in an Article. -->
+ <xs:element name="ackno">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="ackno.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ackno.element -->
+ <xs:attributeGroup name="ackno.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ackno.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ackno.attlist -->
+ <!-- end of ackno.module -->
+ <!-- Address .......................... -->
+ <xs:attributeGroup name="address.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A real-world address, generally a postal address. -->
+ <xs:element name="address" substitutionGroup="informal.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="street"/>
+ <xs:element ref="pob"/>
+ <xs:element ref="postcode"/>
+ <xs:element ref="city"/>
+ <xs:element ref="state"/>
+ <xs:element ref="country"/>
+ <xs:element ref="phone"/>
+ <xs:element ref="fax"/>
+ <xs:element ref="email"/>
+ <xs:element ref="otheraddr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="address.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of address.element -->
+ <xs:attributeGroup name="address.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="address.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of address.attlist -->
+ <!-- end of address.module -->
+ <xs:attributeGroup name="street.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A street address in an address. -->
+ <xs:element name="street">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="street.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of street.element -->
+ <xs:attributeGroup name="street.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="street.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of street.attlist -->
+ <!-- end of street.module -->
+ <xs:attributeGroup name="pob.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A post office box in an address. -->
+ <xs:element name="pob">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pob.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pob.element -->
+ <xs:attributeGroup name="pob.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pob.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pob.attlist -->
+ <!-- end of pob.module -->
+ <xs:attributeGroup name="postcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A postal code in an address. -->
+ <xs:element name="postcode">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="postcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of postcode.element -->
+ <xs:attributeGroup name="postcode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="postcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of postcode.attlist -->
+ <!-- end of postcode.module -->
+ <xs:attributeGroup name="city.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a city in an address. -->
+ <xs:element name="city">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="city.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of city.element -->
+ <xs:attributeGroup name="city.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="city.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of city.attlist -->
+ <!-- end of city.module -->
+ <xs:attributeGroup name="state.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A state or province in an address. -->
+ <xs:element name="state">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="state.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of state.element -->
+ <xs:attributeGroup name="state.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="state.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of state.attlist -->
+ <!-- end of state.module -->
+ <xs:attributeGroup name="country.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a country. -->
+ <xs:element name="country">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="country.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of country.element -->
+ <xs:attributeGroup name="country.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="country.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of country.attlist -->
+ <!-- end of country.module -->
+ <xs:attributeGroup name="phone.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A telephone number. -->
+ <xs:element name="phone">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="phone.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phone.element -->
+ <xs:attributeGroup name="phone.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phone.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phone.attlist -->
+ <!-- end of phone.module -->
+ <xs:attributeGroup name="fax.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fax number. -->
+ <xs:element name="fax">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="fax.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fax.element -->
+ <xs:attributeGroup name="fax.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fax.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fax.attlist -->
+ <!-- end of fax.module -->
+ <!-- Email (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="otheraddr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Uncategorized information in address. -->
+ <xs:element name="otheraddr">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="otheraddr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of otheraddr.element -->
+ <xs:attributeGroup name="otheraddr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="otheraddr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of otheraddr.attlist -->
+ <!-- end of otheraddr.module -->
+ <!-- end of address.content.module -->
+ <!-- Affiliation ...................... -->
+ <xs:attributeGroup name="affiliation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The institutional affiliation of an individual. -->
+ <xs:element name="affiliation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortaffil"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="jobtitle"/>
+ <xs:element minOccurs="0" ref="orgname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="orgdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="affiliation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of affiliation.element -->
+ <xs:attributeGroup name="affiliation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="affiliation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of affiliation.attlist -->
+ <!-- end of affiliation.module -->
+ <xs:attributeGroup name="shortaffil.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A brief description of an affiliation. -->
+ <xs:element name="shortaffil">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="shortaffil.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortaffil.element -->
+ <xs:attributeGroup name="shortaffil.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortaffil.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortaffil.attlist -->
+ <!-- end of shortaffil.module -->
+ <xs:attributeGroup name="jobtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an individual in an organization. -->
+ <xs:element name="jobtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="jobtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of jobtitle.element -->
+ <xs:attributeGroup name="jobtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="jobtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of jobtitle.attlist -->
+ <!-- end of jobtitle.module -->
+ <!-- OrgName (defined elsewhere in this section) -->
+ <xs:attributeGroup name="orgdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division of an organization. -->
+ <xs:element name="orgdiv">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgdiv.element -->
+ <xs:attributeGroup name="orgdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orgdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgdiv.attlist -->
+ <!-- end of orgdiv.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of affiliation.content.module -->
+ <!-- ArtPageNums ...................... -->
+ <xs:attributeGroup name="artpagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The page numbers of an article as published. -->
+ <xs:element name="artpagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="artpagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of artpagenums.element -->
+ <xs:attributeGroup name="artpagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="artpagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of artpagenums.attlist -->
+ <!-- end of artpagenums.module -->
+ <!-- PersonName -->
+ <xs:attributeGroup name="personname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The personal name of an individual. -->
+ <xs:element name="personname" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ </xs:choice>
+ <xs:attributeGroup ref="personname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personname.element -->
+ <xs:attributeGroup name="personname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personname.attlist -->
+ <!-- end of personname.module -->
+ <!-- Author ........................... -->
+ <xs:attributeGroup name="author.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an individual author. -->
+ <xs:element name="author" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="author.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of author.element -->
+ <xs:attributeGroup name="author.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="author.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of author.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of author.module -->
+ <!-- AuthorGroup ...................... -->
+ <xs:attributeGroup name="authorgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Wrapper for author information when a document has multiple authors or collabarators. -->
+ <xs:element name="authorgroup">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="othercredit"/>
+ </xs:choice>
+ <xs:attributeGroup ref="authorgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorgroup.element -->
+ <xs:attributeGroup name="authorgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorgroup.attlist -->
+ <!-- end of authorgroup.module -->
+ <!-- Author (defined elsewhere in this section) -->
+ <!-- Editor (defined elsewhere in this section) -->
+ <xs:attributeGroup name="collab.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Identifies a collaborator. -->
+ <xs:element name="collab">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="collabname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="affiliation"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="collab.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collab.element -->
+ <xs:attributeGroup name="collab.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collab.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collab.attlist -->
+ <!-- end of collab.module -->
+ <xs:attributeGroup name="collabname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a collaborator. -->
+ <xs:element name="collabname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="collabname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collabname.element -->
+ <xs:attributeGroup name="collabname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collabname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collabname.attlist -->
+ <!-- end of collabname.module -->
+ <!-- Affiliation (defined elsewhere in this section) -->
+ <!-- end of collab.content.module -->
+ <!-- CorpAuthor (defined elsewhere in this section) -->
+ <!-- OtherCredit (defined elsewhere in this section) -->
+ <!-- end of authorgroup.content.module -->
+ <!-- AuthorInitials ................... -->
+ <xs:attributeGroup name="authorinitials.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initials or other short identifier for an author. -->
+ <xs:element name="authorinitials" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="authorinitials.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorinitials.element -->
+ <xs:attributeGroup name="authorinitials.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorinitials.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorinitials.attlist -->
+ <!-- end of authorinitials.module -->
+ <!-- ConfGroup ........................ -->
+ <xs:attributeGroup name="confgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for document meta-information about a conference. -->
+ <xs:element name="confgroup">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="confdates"/>
+ <xs:element ref="conftitle"/>
+ <xs:element ref="confnum"/>
+ <xs:element ref="address"/>
+ <xs:element ref="confsponsor"/>
+ </xs:choice>
+ <xs:attributeGroup ref="confgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confgroup.element -->
+ <xs:attributeGroup name="confgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confgroup.attlist -->
+ <!-- end of confgroup.module -->
+ <xs:attributeGroup name="confdates.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The dates of a conference for which a document was written. -->
+ <xs:element name="confdates">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confdates.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confdates.element -->
+ <xs:attributeGroup name="confdates.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confdates.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confdates.attlist -->
+ <!-- end of confdates.module -->
+ <xs:attributeGroup name="conftitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a conference for which a document was written. -->
+ <xs:element name="conftitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="conftitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of conftitle.element -->
+ <xs:attributeGroup name="conftitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="conftitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of conftitle.attlist -->
+ <!-- end of conftitle.module -->
+ <xs:attributeGroup name="confnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier, frequently numerical, associated with a conference for which a document was written. -->
+ <xs:element name="confnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confnum.element -->
+ <xs:attributeGroup name="confnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confnum.attlist -->
+ <!-- end of confnum.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <xs:attributeGroup name="confsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a conference for which a document was written. -->
+ <xs:element name="confsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confsponsor.element -->
+ <xs:attributeGroup name="confsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confsponsor.attlist -->
+ <!-- end of confsponsor.module -->
+ <!-- end of confgroup.content.module -->
+ <!-- ContractNum ...................... -->
+ <xs:attributeGroup name="contractnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The contract number of a document. -->
+ <xs:element name="contractnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractnum.element -->
+ <xs:attributeGroup name="contractnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractnum.attlist -->
+ <!-- end of contractnum.module -->
+ <!-- ContractSponsor .................. -->
+ <xs:attributeGroup name="contractsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a contract. -->
+ <xs:element name="contractsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractsponsor.element -->
+ <xs:attributeGroup name="contractsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractsponsor.attlist -->
+ <!-- end of contractsponsor.module -->
+ <!-- Copyright ........................ -->
+ <xs:attributeGroup name="copyright.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Copyright information about a document. -->
+ <xs:element name="copyright">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="year"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="holder"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="copyright.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of copyright.element -->
+ <xs:attributeGroup name="copyright.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="copyright.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of copyright.attlist -->
+ <!-- end of copyright.module -->
+ <xs:attributeGroup name="year.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The year of publication of a document. -->
+ <xs:element name="year">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="year.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of year.element -->
+ <xs:attributeGroup name="year.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="year.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of year.attlist -->
+ <!-- end of year.module -->
+ <xs:attributeGroup name="holder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the individual or organization that holds a copyright. -->
+ <xs:element name="holder">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="holder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of holder.element -->
+ <xs:attributeGroup name="holder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="holder.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of holder.attlist -->
+ <!-- end of holder.module -->
+ <!-- end of copyright.content.module -->
+ <!-- CorpAuthor ....................... -->
+ <xs:attributeGroup name="corpauthor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporate author, as opposed to an individual. -->
+ <xs:element name="corpauthor" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpauthor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpauthor.element -->
+ <xs:attributeGroup name="corpauthor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpauthor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpauthor.attlist -->
+ <!-- end of corpauthor.module -->
+ <!-- CorpCredit ...................... -->
+ <xs:attributeGroup name="corpcredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporation or organization credited in a document. -->
+ <xs:element name="corpcredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpcredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpcredit.element -->
+ <xs:attributeGroup name="corpcredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpcredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpcredit.attlist -->
+ <!-- end of corpcredit.module -->
+ <!-- CorpName ......................... -->
+ <!-- doc:The name of a corporation. -->
+ <xs:element name="corpname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpname.element -->
+ <xs:attributeGroup name="corpname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="corpname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpname.attlist -->
+ <!-- end of corpname.module -->
+ <!-- Date ............................. -->
+ <xs:attributeGroup name="date.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication or revision of a document. -->
+ <xs:element name="date">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="date.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of date.element -->
+ <xs:attributeGroup name="date.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="date.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of date.attlist -->
+ <!-- end of date.module -->
+ <!-- Edition .......................... -->
+ <xs:attributeGroup name="edition.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name or number of an edition of a document. -->
+ <xs:element name="edition">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="edition.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of edition.element -->
+ <xs:attributeGroup name="edition.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="edition.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of edition.attlist -->
+ <!-- end of edition.module -->
+ <!-- Editor ........................... -->
+ <xs:attributeGroup name="editor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the editor of a document. -->
+ <xs:element name="editor">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="editor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of editor.element -->
+ <xs:attributeGroup name="editor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="editor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of editor.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of editor.module -->
+ <!-- ISBN ............................. -->
+ <xs:attributeGroup name="isbn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Book Number of a document. -->
+ <xs:element name="isbn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="isbn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of isbn.element -->
+ <xs:attributeGroup name="isbn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="isbn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of isbn.attlist -->
+ <!-- end of isbn.module -->
+ <!-- ISSN ............................. -->
+ <xs:attributeGroup name="issn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Serial Number of a periodical. -->
+ <xs:element name="issn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issn.element -->
+ <xs:attributeGroup name="issn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issn.attlist -->
+ <!-- end of issn.module -->
+ <!-- BiblioId ................. -->
+ <xs:attributeGroup name="biblio.class.attrib">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="uri"/>
+ <xs:enumeration value="doi"/>
+ <xs:enumeration value="isbn"/>
+ <xs:enumeration value="isrn"/>
+ <xs:enumeration value="issn"/>
+ <xs:enumeration value="libraryofcongress"/>
+ <xs:enumeration value="pubnumber"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="biblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier for a document. -->
+ <xs:element name="biblioid">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="biblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioid.element -->
+ <xs:attributeGroup name="biblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioid.attlist -->
+ <!-- end of biblioid.module -->
+ <!-- CiteBiblioId ................. -->
+ <xs:attributeGroup name="citebiblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation of a bibliographic identifier. -->
+ <xs:element name="citebiblioid" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="citebiblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citebiblioid.element -->
+ <xs:attributeGroup name="citebiblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citebiblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citebiblioid.attlist -->
+ <!-- end of citebiblioid.module -->
+ <!-- BiblioSource ................. -->
+ <xs:attributeGroup name="bibliosource.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a document. -->
+ <xs:element name="bibliosource">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliosource.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliosource.element -->
+ <xs:attributeGroup name="bibliosource.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliosource.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliosource.attlist -->
+ <!-- end of bibliosource.module -->
+ <!-- BiblioRelation ................. -->
+ <xs:attributeGroup name="bibliorelation.type.attrib">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="isversionof"/>
+ <xs:enumeration value="hasversion"/>
+ <xs:enumeration value="isreplacedby"/>
+ <xs:enumeration value="replaces"/>
+ <xs:enumeration value="isrequiredby"/>
+ <xs:enumeration value="requires"/>
+ <xs:enumeration value="ispartof"/>
+ <xs:enumeration value="haspart"/>
+ <xs:enumeration value="isreferencedby"/>
+ <xs:enumeration value="references"/>
+ <xs:enumeration value="isformatof"/>
+ <xs:enumeration value="hasformat"/>
+ <xs:enumeration value="othertype"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertype"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="bibliorelation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The relationship of a document to another. -->
+ <xs:element name="bibliorelation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliorelation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliorelation.element -->
+ <xs:attributeGroup name="bibliorelation.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.type.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliorelation.attlist -->
+ <!-- end of bibliorelation.module -->
+ <!-- BiblioCoverage ................. -->
+ <xs:attributeGroup name="bibliocoverage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The spatial or temporal coverage of a document. -->
+ <xs:element name="bibliocoverage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliocoverage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliocoverage.element -->
+ <xs:attributeGroup name="bibliocoverage.attlist">
+ <xs:attribute name="spatial">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmipoint"/>
+ <xs:enumeration value="iso3166"/>
+ <xs:enumeration value="dcmibox"/>
+ <xs:enumeration value="tgn"/>
+ <xs:enumeration value="otherspatial"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherspatial"/>
+ <xs:attribute name="temporal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmiperiod"/>
+ <xs:enumeration value="w3c-dtf"/>
+ <xs:enumeration value="othertemporal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertemporal"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliocoverage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliocoverage.attlist -->
+ <!-- end of bibliocoverage.module -->
+ <!-- InvPartNumber .................... -->
+ <xs:attributeGroup name="invpartnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inventory part number. -->
+ <xs:element name="invpartnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="invpartnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of invpartnumber.element -->
+ <xs:attributeGroup name="invpartnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="invpartnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of invpartnumber.attlist -->
+ <!-- end of invpartnumber.module -->
+ <!-- IssueNum ......................... -->
+ <xs:attributeGroup name="issuenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The number of an issue of a journal. -->
+ <xs:element name="issuenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issuenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issuenum.element -->
+ <xs:attributeGroup name="issuenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issuenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issuenum.attlist -->
+ <!-- end of issuenum.module -->
+ <!-- LegalNotice ...................... -->
+ <xs:attributeGroup name="legalnotice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A statement of legal obligations or requirements. -->
+ <xs:element name="legalnotice">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="legalnotice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of legalnotice.element -->
+ <xs:attributeGroup name="legalnotice.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="legalnotice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of legalnotice.attlist -->
+ <!-- end of legalnotice.module -->
+ <!-- ModeSpec ......................... -->
+ <xs:attributeGroup name="modespec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Application-specific information necessary for the completion of an OLink. -->
+ <xs:element name="modespec" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="modespec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modespec.element -->
+ <!--
+ Application: Type of action required for completion
+ of the links to which the ModeSpec is relevant (e.g.,
+ retrieval query)
+ -->
+ <xs:attributeGroup name="modespec.attlist">
+ <xs:attribute name="application" type="notation.class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modespec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modespec.attlist -->
+ <!-- end of modespec.module -->
+ <!-- OrgName .......................... -->
+ <xs:attributeGroup name="orgname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an organization other than a corporation. -->
+ <xs:element name="orgname" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgname.element -->
+ <xs:attributeGroup name="orgname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="corporation"/>
+ <xs:enumeration value="nonprofit"/>
+ <xs:enumeration value="consortium"/>
+ <xs:enumeration value="informal"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ <xs:attributeGroup ref="orgname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgname.attlist -->
+ <!-- end of orgname.module -->
+ <!-- OtherCredit ...................... -->
+ <xs:attributeGroup name="othercredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A person or entity, other than an author or editor, credited in a document. -->
+ <xs:element name="othercredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="othercredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othercredit.element -->
+ <xs:attributeGroup name="othercredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othercredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othercredit.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of othercredit.module -->
+ <!-- PageNums ......................... -->
+ <xs:attributeGroup name="pagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The numbers of the pages in a book, for use in a bibliographic entry. -->
+ <xs:element name="pagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pagenums.element -->
+ <xs:attributeGroup name="pagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pagenums.attlist -->
+ <!-- end of pagenums.module -->
+ <!-- Personal identity elements ....... -->
+ <!--
+ These elements are used only within Author, Editor, and
+ OtherCredit.
+ -->
+ <xs:attributeGroup name="contrib.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the contributions made to a document by a credited source. -->
+ <xs:element name="contrib">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contrib.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contrib.element -->
+ <xs:attributeGroup name="contrib.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contrib.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contrib.attlist -->
+ <!-- end of contrib.module -->
+ <xs:attributeGroup name="firstname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first name of a person. -->
+ <xs:element name="firstname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="firstname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstname.element -->
+ <xs:attributeGroup name="firstname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstname.attlist -->
+ <!-- end of firstname.module -->
+ <xs:attributeGroup name="honorific.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a person. -->
+ <xs:element name="honorific">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="honorific.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of honorific.element -->
+ <xs:attributeGroup name="honorific.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="honorific.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of honorific.attlist -->
+ <!-- end of honorific.module -->
+ <xs:attributeGroup name="lineage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The portion of a person's name indicating a relationship to ancestors. -->
+ <xs:element name="lineage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="lineage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineage.element -->
+ <xs:attributeGroup name="lineage.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineage.attlist -->
+ <!-- end of lineage.module -->
+ <xs:attributeGroup name="othername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of a persons name that is not a first name, surname, or lineage. -->
+ <xs:element name="othername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="othername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othername.element -->
+ <xs:attributeGroup name="othername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othername.attlist -->
+ <!-- end of othername.module -->
+ <xs:attributeGroup name="surname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A family name; in western cultures the last name. -->
+ <xs:element name="surname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="surname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of surname.element -->
+ <xs:attributeGroup name="surname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="surname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of surname.attlist -->
+ <!-- end of surname.module -->
+ <!-- end of person.ident.module -->
+ <!-- PrintHistory ..................... -->
+ <xs:attributeGroup name="printhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The printing history of a document. -->
+ <xs:element name="printhistory">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="printhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of printhistory.element -->
+ <xs:attributeGroup name="printhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="printhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of printhistory.attlist -->
+ <!-- end of printhistory.module -->
+ <!-- ProductName ...................... -->
+ <xs:attributeGroup name="productname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The formal name of a product. -->
+ <xs:element name="productname" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="productname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productname.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="productname.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productname.attlist -->
+ <!-- end of productname.module -->
+ <!-- ProductNumber .................... -->
+ <xs:attributeGroup name="productnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a product. -->
+ <xs:element name="productnumber" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="productnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productnumber.element -->
+ <xs:attributeGroup name="productnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productnumber.attlist -->
+ <!-- end of productnumber.module -->
+ <!-- PubDate .......................... -->
+ <xs:attributeGroup name="pubdate.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication of a document. -->
+ <xs:element name="pubdate">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubdate.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubdate.element -->
+ <xs:attributeGroup name="pubdate.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubdate.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubdate.attlist -->
+ <!-- end of pubdate.module -->
+ <!-- Publisher ........................ -->
+ <xs:attributeGroup name="publisher.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The publisher of a document. -->
+ <xs:element name="publisher">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="publishername"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="publisher.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publisher.element -->
+ <xs:attributeGroup name="publisher.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publisher.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publisher.attlist -->
+ <!-- end of publisher.module -->
+ <xs:attributeGroup name="publishername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the publisher of a document. -->
+ <xs:element name="publishername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="publishername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publishername.element -->
+ <xs:attributeGroup name="publishername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publishername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publishername.attlist -->
+ <!-- end of publishername.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of publisher.content.module -->
+ <!-- PubsNumber ....................... -->
+ <xs:attributeGroup name="pubsnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number. -->
+ <xs:element name="pubsnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubsnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubsnumber.element -->
+ <xs:attributeGroup name="pubsnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubsnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubsnumber.attlist -->
+ <!-- end of pubsnumber.module -->
+ <!-- ReleaseInfo ...................... -->
+ <xs:attributeGroup name="releaseinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a particular release of a document. -->
+ <xs:element name="releaseinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="releaseinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of releaseinfo.element -->
+ <xs:attributeGroup name="releaseinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="releaseinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of releaseinfo.attlist -->
+ <!-- end of releaseinfo.module -->
+ <!-- RevHistory ....................... -->
+ <xs:attributeGroup name="revhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A history of the revisions to a document. -->
+ <xs:element name="revhistory" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="revision"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="revhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revhistory.element -->
+ <xs:attributeGroup name="revhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revhistory.attlist -->
+ <!-- end of revhistory.module -->
+ <xs:attributeGroup name="revision.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry describing a single revision in the history of the revisions to a document. -->
+ <xs:element name="revision">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="revnumber"/>
+ <xs:element ref="date"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="authorinitials"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element ref="revremark"/>
+ <xs:element ref="revdescription"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="revision.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revision.element -->
+ <xs:attributeGroup name="revision.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revision.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revision.attlist -->
+ <!-- end of revision.module -->
+ <xs:attributeGroup name="revnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A document revision number. -->
+ <xs:element name="revnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revnumber.element -->
+ <xs:attributeGroup name="revnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revnumber.attlist -->
+ <!-- end of revnumber.module -->
+ <!-- Date (defined elsewhere in this section) -->
+ <!-- AuthorInitials (defined elsewhere in this section) -->
+ <xs:attributeGroup name="revremark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of a revision to a document. -->
+ <xs:element name="revremark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revremark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revremark.element -->
+ <xs:attributeGroup name="revremark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revremark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revremark.attlist -->
+ <!-- end of revremark.module -->
+ <xs:attributeGroup name="revdescription.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A extended description of a revision to a document. -->
+ <xs:element name="revdescription">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="revdescription.mix"/>
+ <xs:attributeGroup ref="revdescription.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revdescription.element -->
+ <xs:attributeGroup name="revdescription.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revdescription.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revdescription.attlist -->
+ <!-- end of revdescription.module -->
+ <!-- end of revhistory.content.module -->
+ <!-- SeriesVolNums .................... -->
+ <xs:attributeGroup name="seriesvolnums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Numbers of the volumes in a series of books. -->
+ <xs:element name="seriesvolnums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="seriesvolnums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seriesvolnums.element -->
+ <xs:attributeGroup name="seriesvolnums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seriesvolnums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seriesvolnums.attlist -->
+ <!-- end of seriesvolnums.module -->
+ <!-- VolumeNum ........................ -->
+ <xs:attributeGroup name="volumenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The volume number of a document in a set (as of books in a set or articles in a journal). -->
+ <xs:element name="volumenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="volumenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of volumenum.element -->
+ <xs:attributeGroup name="volumenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="volumenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of volumenum.attlist -->
+ <!-- end of volumenum.module -->
+ <!-- .................................. -->
+ <!-- end of docinfo.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Inline, link, and ubiquitous elements ................................ -->
+ <!-- Technical and computer terms ......................................... -->
+ <xs:attributeGroup name="accel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphical user interface (GUI) keyboard shortcut. -->
+ <xs:element name="accel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="accel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of accel.element -->
+ <xs:attributeGroup name="accel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="accel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of accel.attlist -->
+ <!-- end of accel.module -->
+ <xs:attributeGroup name="action.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A response to a user event. -->
+ <xs:element name="action" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="action.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of action.element -->
+ <xs:attributeGroup name="action.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="action.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of action.attlist -->
+ <!-- end of action.module -->
+ <xs:attributeGroup name="application.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a software program. -->
+ <xs:element name="application" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="application.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of application.element -->
+ <xs:attributeGroup name="application.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="hardware"/>
+ <xs:enumeration value="software"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="application.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of application.attlist -->
+ <!-- end of application.module -->
+ <xs:attributeGroup name="classname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a class, in the object-oriented programming sense. -->
+ <xs:element name="classname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="classname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classname.element -->
+ <xs:attributeGroup name="classname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classname.attlist -->
+ <!-- end of classname.module -->
+ <xs:attributeGroup name="package.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A package. -->
+ <xs:element name="package" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="package.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of package.element -->
+ <xs:attributeGroup name="package.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="package.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of package.attlist -->
+ <!-- end of package.module -->
+ <!--
+ CO is a callout area of the LineColumn unit type (a single character
+ position); the position is directly indicated by the location of CO.
+ -->
+ <xs:attributeGroup name="co.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a callout embedded in text. -->
+ <xs:element name="co">
+ <xs:complexType>
+ <xs:attributeGroup ref="co.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of co.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="co.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="co.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of co.attlist -->
+ <!-- end of co.module -->
+ <!-- COREF is a reference to a CO -->
+ <xs:attributeGroup name="coref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a co. -->
+ <xs:element name="coref">
+ <xs:complexType>
+ <xs:attributeGroup ref="coref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of coref.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="coref.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="coref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of coref.attlist -->
+ <!-- end of coref.module -->
+ <xs:attributeGroup name="command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an executable program or other software command. -->
+ <xs:element name="command" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of command.element -->
+ <xs:attributeGroup name="command.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="command.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of command.attlist -->
+ <!-- end of command.module -->
+ <xs:attributeGroup name="computeroutput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data, generally text, displayed or presented by a computer. -->
+ <xs:element name="computeroutput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="computeroutput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of computeroutput.element -->
+ <xs:attributeGroup name="computeroutput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="computeroutput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of computeroutput.attlist -->
+ <!-- end of computeroutput.module -->
+ <xs:attributeGroup name="database.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a database, or part of a database. -->
+ <xs:element name="database" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="database.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of database.element -->
+ <!-- Class: Type of database the element names; no default -->
+ <xs:attributeGroup name="database.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="name"/>
+ <xs:enumeration value="table"/>
+ <xs:enumeration value="field"/>
+ <xs:enumeration value="key1"/>
+ <xs:enumeration value="key2"/>
+ <xs:enumeration value="record"/>
+ <xs:enumeration value="index"/>
+ <xs:enumeration value="view"/>
+ <xs:enumeration value="primarykey"/>
+ <xs:enumeration value="secondarykey"/>
+ <xs:enumeration value="foreignkey"/>
+ <xs:enumeration value="altkey"/>
+ <xs:enumeration value="procedure"/>
+ <xs:enumeration value="datatype"/>
+ <xs:enumeration value="constraint"/>
+ <xs:enumeration value="rule"/>
+ <xs:enumeration value="user"/>
+ <xs:enumeration value="group"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="database.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of database.attlist -->
+ <!-- end of database.module -->
+ <xs:attributeGroup name="email.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An email address. -->
+ <xs:element name="email" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="email.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of email.element -->
+ <xs:attributeGroup name="email.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="email.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of email.attlist -->
+ <!-- end of email.module -->
+ <xs:attributeGroup name="envar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A software environment variable. -->
+ <xs:element name="envar" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="envar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of envar.element -->
+ <xs:attributeGroup name="envar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="envar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of envar.attlist -->
+ <!-- end of envar.module -->
+ <xs:attributeGroup name="errorcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error code. -->
+ <xs:element name="errorcode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorcode.element -->
+ <xs:attributeGroup name="errorcode.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorcode.attlist -->
+ <!-- end of errorcode.module -->
+ <xs:attributeGroup name="errorname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error name. -->
+ <xs:element name="errorname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorname.element -->
+ <xs:attributeGroup name="errorname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorname.attlist -->
+ <!-- end of errorname.module -->
+ <xs:attributeGroup name="errortext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error message.. -->
+ <xs:element name="errortext" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortext.element -->
+ <xs:attributeGroup name="errortext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortext.attlist -->
+ <!-- end of errortext.module -->
+ <xs:attributeGroup name="errortype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of an error message. -->
+ <xs:element name="errortype" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortype.element -->
+ <xs:attributeGroup name="errortype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortype.attlist -->
+ <!-- end of errortype.module -->
+ <xs:attributeGroup name="filename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a file. -->
+ <xs:element name="filename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="filename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of filename.element -->
+ <!-- Class: Type of filename the element names; no default -->
+ <!--
+ Path: Search path (possibly system-specific) in which
+ file can be found
+ -->
+ <xs:attributeGroup name="filename.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="headerfile"/>
+ <xs:enumeration value="partition"/>
+ <xs:enumeration value="devicefile"/>
+ <xs:enumeration value="libraryfile"/>
+ <xs:enumeration value="directory"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="symlink"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="path"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="filename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of filename.attlist -->
+ <!-- end of filename.module -->
+ <xs:attributeGroup name="function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a function or subroutine, as in a programming language. -->
+ <xs:element name="function" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of function.element -->
+ <xs:attributeGroup name="function.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="function.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of function.attlist -->
+ <!-- end of function.module -->
+ <xs:attributeGroup name="guibutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text on a button in a GUI. -->
+ <xs:element name="guibutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guibutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guibutton.element -->
+ <xs:attributeGroup name="guibutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guibutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guibutton.attlist -->
+ <!-- end of guibutton.module -->
+ <xs:attributeGroup name="guiicon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Graphic and/or text appearing as a icon in a GUI. -->
+ <xs:element name="guiicon" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guiicon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guiicon.element -->
+ <xs:attributeGroup name="guiicon.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guiicon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guiicon.attlist -->
+ <!-- end of guiicon.module -->
+ <xs:attributeGroup name="guilabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of a label in a GUI. -->
+ <xs:element name="guilabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guilabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guilabel.element -->
+ <xs:attributeGroup name="guilabel.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guilabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guilabel.attlist -->
+ <!-- end of guilabel.module -->
+ <xs:attributeGroup name="guimenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a menu in a GUI. -->
+ <xs:element name="guimenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenu.element -->
+ <xs:attributeGroup name="guimenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenu.attlist -->
+ <!-- end of guimenu.module -->
+ <xs:attributeGroup name="guimenuitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a terminal menu item in a GUI. -->
+ <xs:element name="guimenuitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenuitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenuitem.element -->
+ <xs:attributeGroup name="guimenuitem.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenuitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenuitem.attlist -->
+ <!-- end of guimenuitem.module -->
+ <xs:attributeGroup name="guisubmenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a submenu in a GUI. -->
+ <xs:element name="guisubmenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guisubmenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guisubmenu.element -->
+ <xs:attributeGroup name="guisubmenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guisubmenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guisubmenu.attlist -->
+ <!-- end of guisubmenu.module -->
+ <xs:attributeGroup name="hardware.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A physical part of a computer system. -->
+ <xs:element name="hardware" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="hardware.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of hardware.element -->
+ <xs:attributeGroup name="hardware.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="hardware.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of hardware.attlist -->
+ <!-- end of hardware.module -->
+ <xs:attributeGroup name="interface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a GUI. -->
+ <xs:element name="interface" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ </xs:choice>
+ <xs:attributeGroup ref="interface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interface.element -->
+ <!-- Class: Type of the Interface item; no default -->
+ <xs:attributeGroup name="interface.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interface.attlist -->
+ <!-- end of interface.module -->
+ <xs:attributeGroup name="keycap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text printed on a key on a keyboard. -->
+ <xs:element name="keycap" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="keycap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycap.element -->
+ <xs:attributeGroup name="keycap.attlist">
+ <xs:attribute name="function">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="alt"/>
+ <xs:enumeration value="control"/>
+ <xs:enumeration value="shift"/>
+ <xs:enumeration value="meta"/>
+ <xs:enumeration value="escape"/>
+ <xs:enumeration value="enter"/>
+ <xs:enumeration value="tab"/>
+ <xs:enumeration value="backspace"/>
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="space"/>
+ <xs:enumeration value="delete"/>
+ <xs:enumeration value="insert"/>
+ <xs:enumeration value="up"/>
+ <xs:enumeration value="down"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="home"/>
+ <xs:enumeration value="end"/>
+ <xs:enumeration value="pageup"/>
+ <xs:enumeration value="pagedown"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherfunction"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycap.attlist -->
+ <!-- end of keycap.module -->
+ <xs:attributeGroup name="keycode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The internal, frequently numeric, identifier for a key on a keyboard. -->
+ <xs:element name="keycode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keycode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycode.element -->
+ <xs:attributeGroup name="keycode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycode.attlist -->
+ <!-- end of keycode.module -->
+ <xs:attributeGroup name="keycombo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A combination of input actions. -->
+ <xs:element name="keycombo" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="keycombo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycombo.element -->
+ <xs:attributeGroup name="keycombo.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycombo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycombo.attlist -->
+ <!-- end of keycombo.module -->
+ <xs:attributeGroup name="keysysm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The symbolic name of a key on a keyboard. -->
+ <xs:element name="keysym" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keysym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keysym.element -->
+ <xs:attributeGroup name="keysym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keysysm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keysym.attlist -->
+ <!-- end of keysym.module -->
+ <xs:attributeGroup name="lineannotation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A comment on a line in a verbatim listing. -->
+ <xs:element name="lineannotation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lineannotation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineannotation.element -->
+ <xs:attributeGroup name="lineannotation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineannotation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineannotation.attlist -->
+ <!-- end of lineannotation.module -->
+ <xs:attributeGroup name="literal.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Inline text that is some literal value. -->
+ <xs:element name="literal" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="literal.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literal.element -->
+ <xs:attributeGroup name="literal.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literal.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literal.attlist -->
+ <!-- end of literal.module -->
+ <xs:attributeGroup name="code.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline code fragment. -->
+ <xs:element name="code" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="code.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of code.element -->
+ <xs:attributeGroup name="code.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="code.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of code.attlist -->
+ <!-- end of code.module -->
+ <xs:attributeGroup name="constant.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A programming or system constant. -->
+ <xs:element name="constant" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="constant.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constant.element -->
+ <xs:attributeGroup name="constant.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constant.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constant.attlist -->
+ <!-- end of constant.module -->
+ <xs:attributeGroup name="varname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a variable. -->
+ <xs:element name="varname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="varname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varname.element -->
+ <xs:attributeGroup name="varname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varname.attlist -->
+ <!-- end of varname.module -->
+ <xs:attributeGroup name="markup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A string of formatting markup in text that is to be represented literally. -->
+ <xs:element name="markup" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="markup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of markup.element -->
+ <xs:attributeGroup name="markup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="markup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of markup.attlist -->
+ <!-- end of markup.module -->
+ <xs:attributeGroup name="medialabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that identifies the physical medium on which some information resides. -->
+ <xs:element name="medialabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="medialabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of medialabel.element -->
+ <!-- Class: Type of medium named by the element; no default -->
+ <xs:attributeGroup name="medialabel.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="cartridge"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="disk"/>
+ <xs:enumeration value="tape"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="medialabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of medialabel.attlist -->
+ <!-- end of medialabel.module -->
+ <xs:attributeGroup name="menuchoice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A selection or series of selections from a menu. -->
+ <xs:element name="menuchoice" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortcut"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="guibutton"/>
+ <xs:element ref="guiicon"/>
+ <xs:element ref="guilabel"/>
+ <xs:element ref="guimenu"/>
+ <xs:element ref="guimenuitem"/>
+ <xs:element ref="guisubmenu"/>
+ <xs:element ref="interface"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="menuchoice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of menuchoice.element -->
+ <xs:attributeGroup name="menuchoice.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="menuchoice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of menuchoice.attlist -->
+ <!-- end of menuchoice.module -->
+ <!-- See also KeyCombo -->
+ <xs:attributeGroup name="shortcut.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A key combination for an action that is also accessible through a menu. -->
+ <xs:element name="shortcut">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="shortcut.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortcut.element -->
+ <xs:attributeGroup name="shortcut.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortcut.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortcut.attlist -->
+ <!-- end of shortcut.module -->
+ <!-- end of menuchoice.content.module -->
+ <xs:attributeGroup name="mousebutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The conventional name of a mouse button. -->
+ <xs:element name="mousebutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="mousebutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mousebutton.element -->
+ <xs:attributeGroup name="mousebutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mousebutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mousebutton.attlist -->
+ <!-- end of mousebutton.module -->
+ <xs:attributeGroup name="msgtext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The actual text of a message component in a message set. -->
+ <xs:element name="msgtext">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="msgtext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgtext.element -->
+ <xs:attributeGroup name="msgtext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgtext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgtext.attlist -->
+ <!-- end of msgtext.module -->
+ <xs:attributeGroup name="option.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An option for a software command. -->
+ <xs:element name="option" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="option.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of option.element -->
+ <xs:attributeGroup name="option.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="option.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of option.attlist -->
+ <!-- end of option.module -->
+ <xs:attributeGroup name="optional.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Optional information. -->
+ <xs:element name="optional" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="optional.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of optional.element -->
+ <xs:attributeGroup name="optional.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="optional.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of optional.attlist -->
+ <!-- end of optional.module -->
+ <xs:attributeGroup name="parameter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A value or a symbolic reference to a value. -->
+ <xs:element name="parameter" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="parameter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of parameter.element -->
+ <!-- Class: Type of the Parameter; no default -->
+ <xs:attributeGroup name="parameter.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="parameter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of parameter.attlist -->
+ <!-- end of parameter.module -->
+ <xs:attributeGroup name="prompt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A character or string indicating the start of an input field in a computer display. -->
+ <xs:element name="prompt" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="prompt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prompt.element -->
+ <xs:attributeGroup name="prompt.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prompt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prompt.attlist -->
+ <!-- end of prompt.module -->
+ <xs:attributeGroup name="property.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of data associated with some part of a computer system. -->
+ <xs:element name="property" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="property.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of property.element -->
+ <xs:attributeGroup name="property.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="property.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of property.attlist -->
+ <!-- end of property.module -->
+ <xs:attributeGroup name="replaceable.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Content that may or must be replaced by the user. -->
+ <xs:element name="replaceable" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="optional"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="replaceable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of replaceable.element -->
+ <!--
+ Class: Type of information the element represents; no
+ default
+ -->
+ <xs:attributeGroup name="replaceable.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="parameter"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="replaceable.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of replaceable.attlist -->
+ <!-- end of replaceable.module -->
+ <xs:attributeGroup name="returnvalue.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The value returned by a function. -->
+ <xs:element name="returnvalue" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="returnvalue.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of returnvalue.element -->
+ <xs:attributeGroup name="returnvalue.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="returnvalue.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of returnvalue.attlist -->
+ <!-- end of returnvalue.module -->
+ <xs:attributeGroup name="sgmltag.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of SGML markup. -->
+ <xs:element name="sgmltag" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="sgmltag.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sgmltag.element -->
+ <!-- Class: Type of SGML construct the element names; no default -->
+ <xs:attributeGroup name="sgmltag.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="attribute"/>
+ <xs:enumeration value="attvalue"/>
+ <xs:enumeration value="element"/>
+ <xs:enumeration value="endtag"/>
+ <xs:enumeration value="emptytag"/>
+ <xs:enumeration value="genentity"/>
+ <xs:enumeration value="numcharref"/>
+ <xs:enumeration value="paramentity"/>
+ <xs:enumeration value="pi"/>
+ <xs:enumeration value="xmlpi"/>
+ <xs:enumeration value="starttag"/>
+ <xs:enumeration value="sgmlcomment"/>
+ <xs:enumeration value="prefix"/>
+ <xs:enumeration value="namespace"/>
+ <xs:enumeration value="localname"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="namespace"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sgmltag.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sgmltag.attlist -->
+ <!-- end of sgmltag.module -->
+ <xs:attributeGroup name="structfield.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A field in a structure (in the programming language sense). -->
+ <xs:element name="structfield" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structfield.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structfield.element -->
+ <xs:attributeGroup name="structfield.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structfield.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structfield.attlist -->
+ <!-- end of structfield.module -->
+ <xs:attributeGroup name="structname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a structure (in the programming language sense). -->
+ <xs:element name="structname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structname.element -->
+ <xs:attributeGroup name="structname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structname.attlist -->
+ <!-- end of structname.module -->
+ <xs:attributeGroup name="symbol.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that is replaced by a value before processing. -->
+ <xs:element name="symbol" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="symbol.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of symbol.element -->
+ <!-- Class: Type of symbol; no default -->
+ <xs:attributeGroup name="symbol.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="symbol.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of symbol.attlist -->
+ <!-- end of symbol.module -->
+ <xs:attributeGroup name="systemitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A system-related item or term. -->
+ <xs:element name="systemitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="acronym"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="systemitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of systemitem.element -->
+ <!-- Class: Type of system item the element names; no default -->
+ <xs:attributeGroup name="systemitem.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="constant"/>
+ <xs:enumeration value="daemon"/>
+ <xs:enumeration value="domainname"/>
+ <xs:enumeration value="etheraddress"/>
+ <xs:enumeration value="event"/>
+ <xs:enumeration value="eventhandler"/>
+ <xs:enumeration value="filesystem"/>
+ <xs:enumeration value="fqdomainname"/>
+ <xs:enumeration value="groupname"/>
+ <xs:enumeration value="ipaddress"/>
+ <xs:enumeration value="library"/>
+ <xs:enumeration value="macro"/>
+ <xs:enumeration value="netmask"/>
+ <xs:enumeration value="newsgroup"/>
+ <xs:enumeration value="osname"/>
+ <xs:enumeration value="protocol"/>
+ <xs:enumeration value="resource"/>
+ <xs:enumeration value="systemname"/>
+ <xs:enumeration value="username"/>
+ <xs:enumeration value="process"/>
+ <xs:enumeration value="server"/>
+ <xs:enumeration value="service"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="systemitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of systemitem.attlist -->
+ <!-- end of systemitem.module -->
+ <xs:attributeGroup name="uri.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A Uniform Resource Identifier. -->
+ <xs:element name="uri" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="uri.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uri.element -->
+ <!-- Type: Type of URI; no default -->
+ <xs:attributeGroup name="uri.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uri.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uri.attlist -->
+ <!-- end of uri.module -->
+ <xs:attributeGroup name="token.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of information. -->
+ <xs:element name="token" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="token.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of token.element -->
+ <xs:attributeGroup name="token.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="token.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of token.attlist -->
+ <!-- end of token.module -->
+ <xs:attributeGroup name="type.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of a value. -->
+ <xs:element name="type" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="type.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of type.element -->
+ <xs:attributeGroup name="type.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="type.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of type.attlist -->
+ <!-- end of type.module -->
+ <xs:attributeGroup name="userinput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data entered by the user. -->
+ <xs:element name="userinput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="userinput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of userinput.element -->
+ <xs:attributeGroup name="userinput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="userinput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of userinput.attlist -->
+ <!-- end of userinput.module -->
+ <xs:attributeGroup name="termdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline definition of a term. -->
+ <xs:element name="termdef" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="termdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of termdef.element -->
+ <xs:attributeGroup name="termdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="termdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of termdef.attlist -->
+ <!-- end of termdef.module -->
+ <!-- General words and phrases ............................................ -->
+ <xs:attributeGroup name="abbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An abbreviation, especially one followed by a period. -->
+ <xs:element name="abbrev" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="abbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abbrev.element -->
+ <xs:attributeGroup name="abbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abbrev.attlist -->
+ <!-- end of abbrev.module -->
+ <xs:attributeGroup name="acronym.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase. -->
+ <xs:element name="acronym" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="acronym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of acronym.element -->
+ <xs:attributeGroup name="acronym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="acronym.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of acronym.attlist -->
+ <!-- end of acronym.module -->
+ <xs:attributeGroup name="citation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline bibliographic reference to another published work. -->
+ <xs:element name="citation" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citation.element -->
+ <xs:attributeGroup name="citation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citation.attlist -->
+ <!-- end of citation.module -->
+ <xs:attributeGroup name="citerefentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation to a reference page. -->
+ <xs:element name="citerefentry" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="citerefentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citerefentry.element -->
+ <xs:attributeGroup name="citerefentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citerefentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citerefentry.attlist -->
+ <!-- end of citerefentry.module -->
+ <xs:attributeGroup name="refentrytitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a reference page. -->
+ <xs:element name="refentrytitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="refentrytitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentrytitle.element -->
+ <xs:attributeGroup name="refentrytitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentrytitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentrytitle.attlist -->
+ <!-- end of refentrytitle.module -->
+ <xs:attributeGroup name="namvolnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference volume number. -->
+ <xs:element name="manvolnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="manvolnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of manvolnum.element -->
+ <xs:attributeGroup name="manvolnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="namvolnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of manvolnum.attlist -->
+ <!-- end of manvolnum.module -->
+ <xs:attributeGroup name="citetitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a cited work. -->
+ <xs:element name="citetitle" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citetitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citetitle.element -->
+ <!-- Pubwork: Genre of published work cited; no default -->
+ <xs:attributeGroup name="citetitle.attlist">
+ <xs:attribute name="pubwork">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="article"/>
+ <xs:enumeration value="book"/>
+ <xs:enumeration value="chapter"/>
+ <xs:enumeration value="part"/>
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="section"/>
+ <xs:enumeration value="journal"/>
+ <xs:enumeration value="series"/>
+ <xs:enumeration value="set"/>
+ <xs:enumeration value="manuscript"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="dvd"/>
+ <xs:enumeration value="wiki"/>
+ <xs:enumeration value="gopher"/>
+ <xs:enumeration value="bbs"/>
+ <xs:enumeration value="emailmessage"/>
+ <xs:enumeration value="webpage"/>
+ <xs:enumeration value="newsposting"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citetitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citetitle.attlist -->
+ <!-- end of citetitle.module -->
+ <xs:attributeGroup name="emphasis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Emphasized text. -->
+ <xs:element name="emphasis" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="emphasis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of emphasis.element -->
+ <xs:attributeGroup name="emphasis.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="emphasis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of emphasis.attlist -->
+ <!-- end of emphasis.module -->
+ <xs:attributeGroup name="foreignphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word or phrase in a language other than the primary language of the document. -->
+ <xs:element name="foreignphrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="foreignphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of foreignphrase.element -->
+ <xs:attributeGroup name="foreignphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="foreignphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of foreignphrase.attlist -->
+ <!-- end of foreignphrase.module -->
+ <xs:attributeGroup name="glossterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary term. -->
+ <xs:element name="glossterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossterm.element -->
+ <!-- to GlossEntry if Glossterm used in text -->
+ <!--
+ BaseForm: Provides the form of GlossTerm to be used
+ for indexing
+ -->
+ <xs:attributeGroup name="glossterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossterm.attlist -->
+ <!-- end of glossterm.module -->
+ <xs:attributeGroup name="firstterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first occurrence of a term. -->
+ <xs:element name="firstterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="firstterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstterm.element -->
+ <!-- to GlossEntry or other explanation -->
+ <xs:attributeGroup name="firstterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstterm.attlist -->
+ <!-- end of firstterm.module -->
+ <xs:attributeGroup name="phrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A span of text. -->
+ <xs:element name="phrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="phrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phrase.element -->
+ <xs:attributeGroup name="phrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phrase.attlist -->
+ <!-- end of phrase.module -->
+ <xs:attributeGroup name="quote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline quotation. -->
+ <xs:element name="quote" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="quote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of quote.element -->
+ <xs:attributeGroup name="quote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="quote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of quote.attlist -->
+ <!-- end of quote.module -->
+ <xs:attributeGroup name="ssscript.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subscript (as in H{^2}O, the molecular formula for water). -->
+ <xs:element name="subscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="subscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subscript.element -->
+ <xs:attributeGroup name="subscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subscript.attlist -->
+ <!-- doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself). -->
+ <xs:element name="superscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="superscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of superscript.element -->
+ <xs:attributeGroup name="superscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of superscript.attlist -->
+ <!-- end of ssscript.module -->
+ <xs:attributeGroup name="trademark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A trademark. -->
+ <xs:element name="trademark" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="trademark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of trademark.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="trademark.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="trademark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of trademark.attlist -->
+ <!-- end of trademark.module -->
+ <xs:attributeGroup name="wordasword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word meant specifically as a word and not representing anything else. -->
+ <xs:element name="wordasword" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="wordasword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of wordasword.element -->
+ <xs:attributeGroup name="wordasword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="wordasword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of wordasword.attlist -->
+ <!-- end of wordasword.module -->
+ <!-- Links and cross-references ........................................... -->
+ <xs:attributeGroup name="link.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A hypertext link. -->
+ <xs:element name="link" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="link.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of link.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="link.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="link.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of link.attlist -->
+ <!-- end of link.module -->
+ <xs:attributeGroup name="olink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target indirectly, through an entity. -->
+ <xs:element name="olink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="olink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of olink.element -->
+ <!-- TargetDocEnt: Name of an entity to be the target of the link -->
+ <!--
+ LinkMode: ID of a ModeSpec containing instructions for
+ operating on the entity named by TargetDocEnt
+ -->
+ <!-- LocalInfo: Information that may be passed to ModeSpec -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="olink.attlist">
+ <xs:attribute name="targetdocent" type="xs:ENTITY"/>
+ <xs:attribute name="linkmode" type="xs:IDREF"/>
+ <xs:attribute name="localinfo"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="targetdoc"/>
+ <xs:attribute name="targetptr"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="olink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of olink.attlist -->
+ <!-- end of olink.module -->
+ <xs:attributeGroup name="ulink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target by means of a URL (Uniform Resource Locator). -->
+ <xs:element name="ulink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="ulink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ulink.element -->
+ <!-- URL: uniform resource locator; the target of the ULink -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="ulink.attlist">
+ <xs:attribute name="url" use="required"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ulink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ulink.attlist -->
+ <!-- end of ulink.module -->
+ <xs:attributeGroup name="footnoteref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a footnote (a footnote mark). -->
+ <xs:element name="footnoteref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="footnoteref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnoteref.element -->
+ <!-- to footnote content supplied elsewhere -->
+ <xs:attributeGroup name="footnoteref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnoteref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnoteref.attlist -->
+ <!-- end of footnoteref.module -->
+ <xs:attributeGroup name="xref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to another part of the document. -->
+ <xs:element name="xref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="xref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of xref.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <xs:attributeGroup name="xref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="xref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of xref.attlist -->
+ <!-- end of xref.module -->
+ <xs:attributeGroup name="biblioref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a bibliographic entry. -->
+ <xs:element name="biblioref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="biblioref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioref.element -->
+ <xs:attributeGroup name="biblioref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="units"/>
+ <xs:attribute name="begin"/>
+ <xs:attribute name="end"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="biblioref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioref.attlist -->
+ <!-- end of biblioref.module -->
+ <!-- Ubiquitous elements .................................................. -->
+ <xs:attributeGroup name="anchor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A spot in the document. -->
+ <xs:element name="anchor">
+ <xs:complexType>
+ <xs:attributeGroup ref="anchor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of anchor.element -->
+ <!-- required -->
+ <!-- replaces Lang -->
+ <xs:attributeGroup name="anchor.attlist">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="anchor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of anchor.attlist -->
+ <!-- end of anchor.module -->
+ <xs:attributeGroup name="beginpage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a page break in a print version of the document. -->
+ <xs:element name="beginpage">
+ <xs:complexType>
+ <xs:attributeGroup ref="beginpage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of beginpage.element -->
+ <!-- PageNum: Number of page that begins at this point -->
+ <xs:attributeGroup name="beginpage.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="beginpage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of beginpage.attlist -->
+ <!-- end of beginpage.module -->
+ <!--
+ IndexTerms appear in the text flow for generating or linking an
+ index.
+ -->
+ <xs:attributeGroup name="indexterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for terms to be indexed. -->
+ <xs:element name="indexterm" substitutionGroup="ndxterm.class"/>
+ <!-- end of indexterm.element -->
+ <!--
+ Scope: Indicates which generated indices the IndexTerm
+ should appear in: Global (whole document set), Local (this
+ document only), or All (both)
+ -->
+ <!--
+ Significance: Whether this IndexTerm is the most pertinent
+ of its series (Preferred) or not (Normal, the default)
+ -->
+ <!--
+ Class: Indicates type of IndexTerm; default is Singular,
+ or EndOfRange if StartRef is supplied; StartOfRange value
+ must be supplied explicitly on starts of ranges
+ -->
+ <!--
+ StartRef: ID of the IndexTerm that starts the indexing
+ range ended by this IndexTerm
+ -->
+ <!--
+ Zone: IDs of the elements to which the IndexTerm applies,
+ and indicates that the IndexTerm applies to those entire
+ elements rather than the point at which the IndexTerm
+ occurs
+ -->
+ <xs:attributeGroup name="indexterm.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="global"/>
+ <xs:enumeration value="local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="significance" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preferred"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="singular"/>
+ <xs:enumeration value="startofrange"/>
+ <xs:enumeration value="endofrange"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startref" type="xs:IDREF"/>
+ <xs:attribute name="zone" type="xs:IDREFS"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexterm.attlist -->
+ <!-- end of indexterm.module -->
+ <xs:attributeGroup name="primsecter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary word or phrase under which an index term should be sorted. -->
+ <xs:element name="primary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="primary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primary.attlist -->
+ <!-- doc:A secondary word or phrase in an index term. -->
+ <xs:element name="secondary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="secondary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondary.attlist -->
+ <!-- doc:A tertiary word or phrase in an index term. -->
+ <xs:element name="tertiary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="tertiary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiary.attlist -->
+ <!-- end of primsecter.module -->
+ <xs:attributeGroup name="seeseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Part of an index term directing the reader instead to another entry in the index. -->
+ <xs:element name="see">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="see.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of see.element -->
+ <xs:attributeGroup name="see.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of see.attlist -->
+ <!-- doc:Part of an index term directing the reader also to another entry in the index. -->
+ <xs:element name="seealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealso.element -->
+ <xs:attributeGroup name="seealso.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of seealso.attlist -->
+<!-- end of seeseealso.module -->
+<!-- end of indexterm.content.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML information pool module ... -->
+<!-- .............................................................................. -->
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/htmltblx.xsd b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/htmltblx.xsd
new file mode 100644
index 0000000..9f82a02
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/htmltblx.xsd
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module ........ -->
+<!-- File htmltblx.xsd .................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook XML HTML Table
+ Module V4.5 with:
+
+ Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems,
+ Inc., and the Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: htmltblx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for elements that are
+ isomorphic to the HTML elements. One could argue we should
+ instead have based ourselves on the XHTML Table Module, but the
+ HTML one is more like what browsers are likely to accept today
+ and users are likely to use.
+
+ This module has been developed for use with the DocBook V4.5
+ "union table model" in which elements and attlists common to both
+ models are defined (as the union) in the CALS table module by
+ setting various parameter entities appropriately in this file.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % htmltbl PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+ "htmltblx.mod">
+ %htmltbl;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ======================= XHTML Tables ======================================= -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="html.coreattrs">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ </xs:attributeGroup>
+ <!-- Does not contain lang or dir because they are in %common.attribs -->
+ <xs:attributeGroup name="i18n">
+ <xs:attribute ref="xml:lang"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="events">
+ <xs:attribute name="onclick"/>
+ <xs:attribute name="ondblclick"/>
+ <xs:attribute name="onmousedown"/>
+ <xs:attribute name="onmouseup"/>
+ <xs:attribute name="onmouseover"/>
+ <xs:attribute name="onmousemove"/>
+ <xs:attribute name="onmouseout"/>
+ <xs:attribute name="onkeypress"/>
+ <xs:attribute name="onkeydown"/>
+ <xs:attribute name="onkeyup"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="attrs">
+ <xs:attributeGroup ref="html.coreattrs"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellhalign">
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellvalign">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="baseline"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- doc:A group of columns in an HTML table. -->
+ <xs:element name="colgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:Specifications for a column in an HTML table. -->
+ <xs:element name="col">
+ <xs:complexType>
+ <xs:attributeGroup ref="col.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A row in an HTML table. -->
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="th"/>
+ <xs:element ref="td"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table header entry in an HTML table. -->
+ <xs:element name="th">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="th.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table ntry in an HTML table. -->
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="td.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colgroup.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="col.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="tr.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="th.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="td.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <!-- ====================================================== -->
+ <!--
+ Set up to read in the CALS model configured to
+ merge with the XHTML table model
+ -->
+ <!-- ====================================================== -->
+ <xs:attributeGroup name="tables.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- Add label and role attributes to table and informaltable -->
+ <xs:attributeGroup name="bodyatt">
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="rowheader">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="firstcol"/>
+ <xs:enumeration value="norowheader"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ </xs:attributeGroup>
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <xs:attributeGroup name="secur">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ <xs:attributeGroup ref="tables.role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="common.table.attribs">
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- Content model for Table (that also allows HTML tables) -->
+ <xs:complexType name="tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element ref="caption"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:group name="informal.tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+ <!-- Attributes for Table (including HTML ones) -->
+ <!-- N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd -->
+ <!-- that way because 'all' already occurs in a different enumeration in -->
+ <!-- CALS tables (frame). -->
+ <xs:attributeGroup name="tbl.table.att">
+ <xs:attribute name="tabstyle"/>
+ <xs:attribute name="tocentry" type="yesorno.attvals"/>
+ <xs:attribute name="shortentry" type="yesorno.attvals"/>
+ <xs:attribute name="orient">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="port"/>
+ <xs:enumeration value="land"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attribute name="summary"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="border"/>
+ <xs:attribute name="rules"/>
+ <xs:attribute name="cellspacing"/>
+ <xs:attribute name="cellpadding"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="tbl.frame.attval">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="void"/>
+ <xs:enumeration value="above"/>
+ <xs:enumeration value="below"/>
+ <xs:enumeration value="hsides"/>
+ <xs:enumeration value="lhs"/>
+ <xs:enumeration value="rhs"/>
+ <xs:enumeration value="vsides"/>
+ <xs:enumeration value="box"/>
+ <xs:enumeration value="border"/>
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="topbot"/>
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="sides"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <xs:group name="tbl.entry.mdl">
+ <xs:choice>
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ thead, tfoot, and tbody are defined in both table models,
+ so we set up parameter entities to define union models for them
+ -->
+ <xs:complexType name="tbl.hdft.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.tbody.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:choice>
+ </xs:complexType>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module . -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/scons.xsd b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/scons.xsd
new file mode 100644
index 0000000..481c2d4
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/scons.xsd
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 .............................. -->
+<!-- File scons.xsd ....................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook V4.5 DTD with:
+
+ Copyright 1992-2006 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ See also http://docbook.org/specs/
+
+ $Id: docbookx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This is the driver file for V4.5 of the DocBook DTD.
+ Please use the following formal public identifier to identify it:
+
+ "-//OASIS//DTD DocBook XML V4.5//EN"
+
+ For example, if your document's top-level element is Book, and
+ you are using DocBook directly, use the FPI in the DOCTYPE
+ declaration:
+
+ <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+ [...]>
+
+ Or, if you have a higher-level driver file that customizes DocBook,
+ use the FPI in the parameter entity declaration:
+
+ <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+ %DocBookDTD;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Enable SGML features ................................................. -->
+<!-- ...................................................................... -->
+<!-- Notation declarations ................................................ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.scons.org/dbxsd/v1.0"
+ elementFormDefault="qualified">
+ <xs:include schemaLocation="dbnotnx.xsd"/>
+ <xs:include schemaLocation="dbpoolx.xsd"/>
+ <xs:include schemaLocation="dbhierx.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- ISO character entity sets ............................................ -->
+ <!-- euro sign, U+20AC NEW -->
+ <!-- ...................................................................... -->
+ <!-- DTD modules .......................................................... -->
+ <!-- Information pool .............. -->
+ <!-- Redeclaration placeholder ..... -->
+ <!-- Document hierarchy ............ -->
+</xs:schema>
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 ....................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/xml.xsd b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/xml.xsd
new file mode 100644
index 0000000..600f399
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_xsd/xml.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://www.w3.org/XML/1998/namespace">
+ <xs:import schemaLocation="scons.xsd"/>
+ <xs:attribute name="base"/>
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="lang" type="xs:NMTOKEN"/>
+</xs:schema>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/toolBar.incl b/doc/editor_configs/xmlmind/addon/config/scons/toolBar.incl
new file mode 100644
index 0000000..a610a2d
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/toolBar.incl
@@ -0,0 +1,189 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <toolBar>
+ <button toolTip="Convert to emphasis"
+ icon="../common/icons/emphasisText_menu.png">
+ <menu>
+ <item label="emphasis"
+ command="convert"
+ parameter="[implicitElement] emphasis" />
+ <item label="emphasis[bold]"
+ command="docb.convertWithAttribute"
+ parameter="emphasis role bold" />
+ <item label="firstterm" command="convert"
+ parameter="[implicitElement] firstterm" />
+ <item label="replaceable" command="convert"
+ parameter="[implicitElement] replaceable" />
+ <separator />
+ <item label="literal" command="convert"
+ parameter="[implicitElement] literal" />
+ <item label="filename" command="convert"
+ parameter="[implicitElement] filename" />
+ <separator />
+ <item label="trademark" command="convert"
+ parameter="[implicitElement] trademark" />
+ <item label="trademark[registered]" command="docb.convertWithAttribute"
+ parameter="trademark class registered" />
+ <separator />
+ <item label="guilabel" command="convert"
+ parameter="[implicitElement] guilabel" />
+ <item label="guibutton" command="convert"
+ parameter="[implicitElement] guibutton" />
+ <item label="guimenuitem" command="convert"
+ parameter="[implicitElement] guimenuitem" />
+ <item label="guisubmenu" command="convert"
+ parameter="[implicitElement] guisubmenu" />
+ <item label="guimenu" command="convert"
+ parameter="[implicitElement] guimenu" />
+ <separator />
+ <item label="keycap" command="convert"
+ parameter="[implicitElement] keycap" />
+ <item label="keysym" command="convert"
+ parameter="[implicitElement] keysym" />
+ <separator />
+ <item label="sgmltag[element]" command="docb.convertWithAttribute"
+ parameter="sgmltag class element" />
+ <item label="sgmltag[attribute]" command="docb.convertWithAttribute"
+ parameter="sgmltag class attribute" />
+ <item label="sgmltag[attvalue]" command="docb.convertWithAttribute"
+ parameter="sgmltag class attvalue" />
+ </menu>
+ </button>
+
+ <button toolTip="Convert to link"
+ icon="../common/icons/hyperText_menu.png">
+ <menu>
+ <item label="link" command="convert"
+ parameter="[implicitElement] link" />
+ <item label="ulink" command="convert"
+ parameter="[implicitElement] ulink" />
+ </menu>
+ </button>
+
+ <button toolTip="Convert to plain text"
+ icon="../common/icons/plainText.png">
+ <command name="convert" parameter="[implicitElement] #text" />
+ </button>
+
+ <separator />
+
+ <button toolTip="Add para" icon="../common/icons/paragraph.png">
+ <command name="docb.addAfter" parameter="para" />
+ </button>
+
+ <button toolTip="Add listitem or varlistentry [Ctrl-Enter]"
+ icon="../common/icons/addListItem.png">
+ <command name="docb.addListItem" parameter="After" />
+ </button>
+
+ <button toolTip="Add itemizedlist"
+ icon="../common/icons/itemizedList.png">
+ <command name="docb.addAfter" parameter="itemizedlist" />
+ </button>
+
+ <button toolTip="Add orderedlist"
+ icon="../common/icons/orderedList.png">
+ <command name="docb.addAfter" parameter="orderedlist" />
+ </button>
+
+ <button toolTip="Add variablelist"
+ icon="../common/icons/definitionList.png">
+ <command name="docb.addAfter" parameter="variablelist" />
+ </button>
+
+ <button toolTip="Add table" icon="../common/icons/table_menu.png">
+ <menu>
+ <item label="informaltable" command="docb.addAfter"
+ parameter="informaltable" />
+ <item label="informaltable(head_row)" command="docb.addAfter"
+ parameter="#template(informaltable,head_row)" />
+ <item label="informaltable(head_column)" command="docb.addAfter"
+ parameter="#template(informaltable,head_column)" />
+ <item label="informaltable(head_row_column)" command="docb.addAfter"
+ parameter="#template(informaltable,head_row_column)" />
+ <separator />
+ <item label="table" command="docb.addAfter"
+ parameter="table" />
+ <item label="table(head_row)" command="docb.addAfter"
+ parameter="#template(table,head_row)" />
+ <item label="table(head_column)" command="docb.addAfter"
+ parameter="#template(table,head_column)" />
+ <item label="table(head_row_column)" command="docb.addAfter"
+ parameter="#template(table,head_row_column)" />
+
+ <separator />
+
+ <item label="informaltable(HTML)" command="docb.addAfter"
+ parameter="#template(informaltable,HTML)" />
+ <item label="informaltable(HTML_head_row)" command="docb.addAfter"
+ parameter="#template(informaltable,HTML_head_row)" />
+ <item label="informaltable(HTML_head_column)" command="docb.addAfter"
+ parameter="#template(informaltable,HTML_head_column)" />
+ <item label="informaltable(HTML_head_row_column)"
+ command="docb.addAfter"
+ parameter="#template(informaltable,HTML_head_row_column)" />
+ <separator />
+ <item label="table(HTML)" command="docb.addAfter"
+ parameter="#template(table,HTML)" />
+ <item label="table(HTML_head_row)" command="docb.addAfter"
+ parameter="#template(table,HTML_head_row)" />
+ <item label="table(HTML_head_column)" command="docb.addAfter"
+ parameter="#template(table,HTML_head_column)" />
+ <item label="table(HTML_head_row_column)" command="docb.addAfter"
+ parameter="#template(table,HTML_head_row_column)" />
+ </menu>
+ </button>
+
+ <button toolTip="Add image" icon="../common/icons/figure_menu.png">
+ <menu>
+ <item label="inlinemediaobject" command="insert"
+ parameter="into inlinemediaobject" />
+ <separator />
+ <item label="mediaobject" command="docb.addAfter"
+ parameter="mediaobject" />
+ <separator />
+ <item label="screenshot" command="docb.addAfter"
+ parameter="screenshot" />
+ <separator />
+ <item label="figure" command="docb.addAfter"
+ parameter="figure" />
+ <item label="figure(screenshot)" command="docb.addAfter"
+ parameter="#template(figure,screenshot)" />
+ </menu>
+ </button>
+
+ <button toolTip="Add section" icon="../common/icons/section_menu.png">
+ <menu>
+ <item label="chapter" command="add"
+ parameter="after[implicitElement] chapter" />
+ <separator />
+ <item label="section" command="add"
+ parameter="after[implicitElement] section" />
+ <item label="sect1" command="add"
+ parameter="after[implicitElement] sect1" />
+ <item label="sect2" command="add"
+ parameter="after[implicitElement] sect2" />
+ <item label="sect3" command="add"
+ parameter="after[implicitElement] sect3" />
+ <item label="sect4" command="add"
+ parameter="after[implicitElement] sect4" />
+ <item label="sect5" command="add"
+ parameter="after[implicitElement] sect5" />
+ <separator />
+ <item label="appendix" command="add"
+ parameter="after[implicitElement] appendix" />
+ </menu>
+ </button>
+
+ <separator />
+
+ <button toolTip="Go to opposite link end"
+ icon="../common/icons/navigate.png">
+ <command name="selectById" parameter="swapIdAndReference" />
+ </button>
+ </toolBar>
+
+</configuration>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/xslMenu.incl b/doc/editor_configs/xmlmind/addon/config/scons/xslMenu.incl
new file mode 100644
index 0000000..8b639fb
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/xslMenu.incl
@@ -0,0 +1,688 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <!-- ====== First step used by most process commands defined here ====== -->
+
+ <command name="docb.convertStep1">
+ <process>
+ <mkdir dir="resources" />
+ <mkdir dir="raw" />
+
+ <copyDocument to="__doc.xml">
+ <resources match="(https|http|ftp)://.*" />
+
+ <!-- Support for textdata/@fileref.
+ add your favorite text file extensions here: -->
+ <resources
+ match=".+\.(txt|text|htm|html|xml|h|c|cpp|java|js|tcl|py|pl|rb)"
+ copyTo="." />
+
+ <resources match=".+\.(png|jpg|jpeg|gif)"
+ copyTo="resources" />
+ <resources match="(?:.+/)?(.+)\.(\w+)"
+ copyTo="raw" referenceAs="resources/$1.png" />
+ <resources match=".+"
+ copyTo="resources" />
+ </copyDocument>
+
+ <convertImage from="raw" to="resources" format="png" />
+
+ <mkdir dir="images/callouts" />
+ <copyProcessResources resources="xsl/images/draft.png" to="images" />
+ <copyProcessResources resources="@xsl/images/callouts/png_callouts.list"
+ to="images/callouts" />
+ </process>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toHTML">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/html.css" to="html.css"
+ name="css" />
+
+ <transform stylesheet="xsl/html/chunk.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to multi-page HTML"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">1</parameter>
+
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">html.css</parameter>
+
+ <parameterGroup name="docb.toHTML.transformParameters" />
+ </transform>
+
+ <!-- The real HTML file is index.html -->
+ <delete files="__doc.*" />
+
+ <upload base="%0/">
+ <copyFiles files="*.*" toDir="." />
+ <copyFiles files="resources/*" toDir="resources" />
+ <copyFiles files="images/*" toDir="images" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToHTML">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveDirectoryURL" />
+ <command name="docb.toHTML" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toHTML1">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/html.css" to="html.css"
+ name="css" />
+
+ <transform stylesheet="xsl/html/docbook.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to single-page HTML"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="generate.toc">%0</parameter>
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">%1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">html.css</parameter>
+
+ <parameterGroup name="docb.toHTML1.transformParameters" />
+ </transform>
+
+ <upload base="%2">
+ <copyFile file="__doc.html" to="%2" />
+ <copyFile file="html.css" to="html.css" />
+ <copyFiles files="resources/*" toDir="resources" />
+ <copyFiles files="images/*" toDir="images" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToHTML1">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=html" />
+ <command name="docb.toHTML1" parameter='"%0" "%1" "%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toHTMLHelp">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/htmlhelp.css"
+ to="htmlhelp.css" name="css" />
+
+ <transform stylesheet="xsl/htmlhelp/htmlhelp.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to HTML Help"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+ <parameter name="manifest.in.base.dir">1</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">1</parameter>
+
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">htmlhelp.css</parameter>
+
+ <parameterGroup name="docb.toHTMLHelp.transformParameters" />
+ </transform>
+
+ <!-- Not useful. -->
+ <delete files="__doc.*" />
+
+ <!-- "C:\Program Files\HTML Help Workshop\hhc.exe" is the
+ HTML Help compiler.
+ hhc.exe exit code is 1 even when the compilation is successful.
+ Its exit code should be 0. That's why, without "|| exit 0",
+ the process command thinks hhc.exe has failed. -->
+
+ <shell command="helper(.hhp) htmlhelp.hhp || exit 0"
+ platform="Windows" />
+
+ <upload base="%0">
+ <copyFile file="htmlhelp.chm" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToHTMLHelp">
+ <macro>
+ <sequence>
+ <!-- path.separator==';' only on Windows. -->
+ <test expression="system-property('path.separator') = ';'" />
+
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=chm" />
+ <command name="docb.toHTMLHelp" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toJavaHelpStep1">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/javahelp.css"
+ to="javahelp.css" name="css" />
+
+ <transform stylesheet="xsl/javahelp/javahelp.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to Java Help"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">2</parameter>
+
+ <parameter name="generate.toc"> </parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">javahelp.css</parameter>
+
+ <parameterGroup name="docb.toJavaHelp.transformParameters" />
+ </transform>
+
+ <!-- The real file is not __doc.html -->
+ <delete files="__doc.*" />
+
+ <shell command="helper(application/x-java-help-index) ." />
+ </process>
+ </command>
+
+ <command name="docb.toJavaHelp">
+ <process>
+ <subProcess name="docb.toJavaHelpStep1" />
+
+ <jar archive="__help_jar__">
+ <add files="*.*" />
+ <add files="resources/*" />
+ <add files="images/*" />
+ <add files="JavaHelpSearch/*" />
+ </jar>
+
+ <upload base="%0">
+ <copyFile file="__help_jar__" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <!-- Useful when the application merges several HelpSets -->
+ <command name="docb.toJavaHelpWithPrefix">
+ <process>
+ <subProcess name="docb.toJavaHelpStep1" />
+
+ <mkdir dir="%1" />
+ <copy files="*.*" to="%1" />
+ <copy recurse="true" files="resources" to="%1" />
+ <copy recurse="true" files="images" to="%1" />
+ <copy recurse="true" files="JavaHelpSearch" to="%1" />
+
+ <jar archive="__help_jar__">
+ <add files="%1/*" />
+ </jar>
+
+ <upload base="%0">
+ <copyFile file="__help_jar__" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToJavaHelp">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=jar" />
+ <command name="docb.toJavaHelp" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toEclipseHelp">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/eclipsehelp.css"
+ to="eclipsehelp.css" name="css" />
+
+ <transform stylesheet="xsl/eclipse/eclipse.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to Eclipse Help"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+ <parameter name="manifest.in.base.dir">1</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">3</parameter>
+
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">eclipsehelp.css</parameter>
+
+ <parameter name="eclipse.plugin.name"
+ >REDEFINE THIS: title of this help</parameter>
+ <parameter name="eclipse.plugin.id"
+ >REDEFINE THIS: unique.id.of.this.plugin</parameter>
+ <parameter name="eclipse.plugin.provider"
+ >REDEFINE THIS: author, company or organization</parameter>
+
+ <parameterGroup name="docb.toEclipseHelp.transformParameters" />
+ </transform>
+
+ <!-- Not useful. -->
+ <delete files="__doc.*" />
+
+ <upload base="%0/">
+ <copyFiles files="*.*" toDir="." />
+ <copyFiles files="resources/*" toDir="resources" />
+ <copyFiles files="images/*" toDir="images" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToEclipseHelp">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveDirectoryURL" />
+ <command name="docb.toEclipseHelp" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toEpub">
+ <process>
+ <mkdir dir="raw" />
+ <mkdir dir="images" />
+ <mkdir dir="META-INF" />
+
+ <copyDocument to="__doc.xml">
+ <resources match="(https|http|ftp)://.*" />
+
+ <!-- Support for textdata/@fileref.
+ add your favorite text file extensions here: -->
+ <resources
+ match=".+\.(txt|text|htm|html|xml|h|c|cpp|java|js|tcl|py|pl|rb)"
+ copyTo="." />
+
+ <resources match=".+\.(png|jpg|jpeg|gif)"
+ copyTo="images" />
+ <resources match="(?:.+/)?(.+)\.(\w+)"
+ copyTo="raw" referenceAs="images/$1.png" />
+ <resources match=".+"
+ copyTo="images" />
+ </copyDocument>
+
+ <convertImage from="raw" to="images" format="png" />
+
+ <mkdir dir="images/callouts" />
+ <copyProcessResources resources="xsl/images/draft.png"
+ to="images" />
+ <copyProcessResources resources="@xsl/images/callouts/png_callouts.list"
+ to="images/callouts" />
+
+ <copyProcessResources resources="xsl/css/epub.css"
+ to="epub.css" name="css" />
+ <copyProcessResources resources="xsl/epub/mimetype"
+ to="mimetype" />
+ <copyProcessResources resources="xsl/epub/META-INF/container.xml"
+ to="META-INF/container.xml" />
+
+ <transform stylesheet="xsl/epub/epub.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to Epub"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">3</parameter>
+
+ <parameter name="generate.toc"> </parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">epub.css</parameter>
+
+ <parameterGroup name="docb.toEpub.transformParameters" />
+ </transform>
+
+ <!-- Not useful. -->
+ <delete files="__doc.*" />
+
+ <zip archive="epub.zip">
+ <add files="mimetype" store="true" />
+ <add files="META-INF/*" />
+ <add files="*.html" />
+ <add files="*.css" />
+ <add files="images/*" />
+ <add files="content.opf" />
+ <add files="toc.ncx" />
+ </zip>
+
+ <upload base="%0">
+ <copyFile file="epub.zip" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToEpub">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=epub" />
+ <command name="docb.toEpub" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toRTF">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <transform stylesheet="xsl/fo/docbook.xsl"
+ file="__doc.xml" to="__doc.fo"
+ label="Convert to RTF, WordprocessingML, OOXML, OpenDocument"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/fo/%{parameter.name|paper.type}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="paper.type">A4</parameter>
+
+ <parameter name="generate.toc">%2</parameter>
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">%3</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="shade.verbatim">1</parameter>
+
+ <parameter name="ulink.show">0</parameter>
+
+ <parameterGroup name="docb.toRTF.transformParameters" />
+ </transform>
+
+ <processFO processor="XFC" file="__doc.fo" to="__doc.%0">
+ <parameter name="outputFormat">%0</parameter>
+ <parameter name="outputEncoding">%1</parameter>
+ <parameter name="imageResolution">120</parameter>
+ <parameter name="prescaleImages">false</parameter>
+ <parameterGroup name="docb.toRTF.XFCParameters" />
+ </processFO>
+
+ <upload base="%4">
+ <copyFile file="__doc.%0" to="%4" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToRTF">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=%4" />
+ <command name="docb.toRTF" parameter='"%0" "%1" "%2" "%3" "%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toPS">
+ <process>
+ <mkdir dir="resources" />
+ <mkdir dir="raw" />
+
+ <copyDocument to="__doc.xml">
+ <resources match="(https|http|ftp)://.*" />
+
+ <!-- Support for textdata/@fileref.
+ add your favorite text file extensions here: -->
+ <resources
+ match=".+\.(txt|text|htm|html|xml|h|c|cpp|java|js|tcl|py|pl|rb)"
+ copyTo="." />
+
+ <!-- referenceAs=absolute_URL is used as a workaround for
+ FOP 0.20.5 ``really strange'' image managment.
+ (This is harmless for XEP.) -->
+
+ <resources match="(?:.+/)?(.+)\.(png|jpg|jpeg|gif|mml|svg|svgz%1)"
+ copyTo="resources" referenceAs="%w/resources/$1.$2" />
+ <resources match="(?:.+/)?(.+)\.tex"
+ copyTo="raw" referenceAs="%w/resources/$1.%0" />
+ <resources match="(?:.+/)?(.+)\.(\w+)"
+ copyTo="raw" referenceAs="%w/resources/$1.png" />
+ <resources match="(?:.+/)?(.+)"
+ copyTo="resources" referenceAs="%w/resources/$1" />
+ </copyDocument>
+
+ <convertImage from="raw" to="resources" format="%0 png" />
+
+ <mkdir dir="images/callouts" />
+ <copyProcessResources resources="xsl/images/draft.png" to="images" />
+ <copyProcessResources resources="@xsl/images/callouts/png_callouts.list"
+ to="images/callouts" />
+
+ <transform stylesheet="xsl/fo/docbook.xsl"
+ file="__doc.xml" to="__doc.fo"
+ label="Convert to PDF, PostScript"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/fo/%{parameter.name|paper.type}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="paper.type">A4</parameter>
+
+ <parameter name="generate.toc">%2</parameter>
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">%3</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="shade.verbatim">1</parameter>
+
+ <parameter name="ulink.show">0</parameter>
+
+ <parameterGroup name="docb.toPS.transformParameters" />
+ </transform>
+
+ <processFO processor="XEP" file="__doc.fo" to="__doc.%0">
+ <parameter name="OUTPUT_FORMAT">%0</parameter>
+ <parameter name="PS.LANGUAGE_LEVEL">2</parameter>
+ <parameterGroup name="docb.toPS.XEPParameters" />
+
+ <!-- If XEP plug-in has not been installed, try FOP plug-in. -->
+ <processFO processor="FOP" file="__doc.fo" to="__doc.%0">
+ <parameter name="renderer">%0</parameter>
+ <parameter name="strict-validation">false</parameter>
+ <parameterGroup name="docb.toPS.FOPParameters" />
+ </processFO>
+ </processFO>
+ </process>
+ </command>
+
+ <command name="docb.toPSFile">
+ <process>
+ <subProcess name="docb.toPS" parameter='"%0" "%1" "%2" "%3"' />
+
+ <upload base="%4">
+ <copyFile file="__doc.%0" to="%4" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToPS">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=%0" />
+ <command name="docb.toPSFile" parameter='"%0" "%1" "%2" "%3" "%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toPSPrinter">
+ <process>
+ <subProcess name="docb.toPS" parameter='"%0" "%1" "%2" "%3"' />
+
+ <print file="__doc.%0" printer="%4" />
+ </process>
+ </command>
+
+ <command name="docb.printPS">
+ <macro>
+ <sequence>
+ <command name="selectPrinter" parameter="%0" />
+ <command name="docb.toPSPrinter" parameter='"%0" "%1" "%2" "%3" "%_"'/>
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <menu label="_DocBook"
+ insert="ifDefined(XXE.Edition.Unrestricted)after ##last">
+ <separator />
+ <menu label="_Convert Document">
+ <item label="Convert to _HTML..."
+ command="docb.convertToHTML" />
+ <item label="Convert to HTML [_one page]..."
+ command="docb.convertToHTML1"
+ parameter='"/book toc /article toc" 1' />
+ <item label="Convert to HTML [one page, _no TOC]..."
+ command="docb.convertToHTML1" parameter='" " 0' />
+ <separator />
+ <item label="Convert to HTM_L Help..."
+ command="docb.convertToHTMLHelp" />
+ <separator />
+ <item label="Convert to _Java Help..."
+ command="docb.convertToJavaHelp" />
+ <separator />
+ <item label="Convert to _Eclipse Help..."
+ command="docb.convertToEclipseHelp" />
+ <separator />
+ <item label="Convert to Epu_b..."
+ command="docb.convertToEpub" />
+ <separator />
+ <item label="Convert to _RTF (Word 2000+)..."
+ command="docb.convertToRTF"
+ parameter='rtf Cp1252 "/book toc /article toc" 1 rtf' />
+ <item label="Convert to R_TF [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='rtf Cp1252 " " 0 rtf' />
+ <separator />
+ <item label="Convert to _WordprocessingML (Word 2003+)..."
+ command="docb.convertToRTF"
+ parameter='wml UTF-8 "/book toc /article toc" 1 wml' />
+ <item label="Convert to Wordprocessing_ML [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='wml UTF-8 " " 0 wml' />
+ <separator />
+ <item label="Convert to Office Open _XML (Word 2007+)..."
+ command="docb.convertToRTF"
+ parameter='docx UTF-8 "/book toc /article toc" 1 docx' />
+ <item label="Con_vert to Office Open XML [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='docx UTF-8 " " 0 docx' />
+ <separator />
+ <item label="Convert to Open_Document (OpenOffice.org 2+)..."
+ command="docb.convertToRTF"
+ parameter='odt UTF-8 "/book toc /article toc" 1 odt' />
+ <item label="Convert to OpenDoc_ument [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='odt UTF-8 " " 0 odt' />
+ <separator />
+ <item label="Print Post_Script..."
+ command="docb.printPS"
+ parameter='ps |eps|ps "/book toc /article toc" 1' />
+ <item label="Print PostScr_ipt [no TOC]..."
+ command="docb.printPS"
+ parameter='ps |eps|ps " " 0' />
+ <separator />
+ <item label="Convert to _PDF..."
+ command="docb.convertToPS"
+ parameter='pdf |pdf "/book toc /article toc" 1' />
+ <item label="Convert to PD_F [no TOC]..."
+ command="docb.convertToPS"
+ parameter='pdf |pdf " " 0' />
+ </menu>
+ </menu>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.conversionPreferences">
+ <class>com.xmlmind.xmleditext.docbook.ConversionPreferences</class>
+ </command>
+
+ <menu name="customizeConfig" label="_Customize Configuration">
+ <item label="Document Conversion _Preferences..."
+ command="docb.conversionPreferences" />
+ </menu>
+
+</configuration>
diff --git a/doc/editor_configs/xmlmind/custom/dummy.txt b/doc/editor_configs/xmlmind/custom/dummy.txt
new file mode 100644
index 0000000..f786cef
--- /dev/null
+++ b/doc/editor_configs/xmlmind/custom/dummy.txt
@@ -0,0 +1 @@
+# just to make hg happy \ No newline at end of file
diff --git a/doc/editor_configs/xmlmind/preferences.properties b/doc/editor_configs/xmlmind/preferences.properties
new file mode 100644
index 0000000..47a819a
--- /dev/null
+++ b/doc/editor_configs/xmlmind/preferences.properties
@@ -0,0 +1,108 @@
+#XMLmind XML Editor Personal Edition 4.6.0
+#Thu Feb 28 18:53:33 CET 2013
+ignoreMixedCase=false
+maxUndo=20
+underlineHeader=true
+useSchemaCache=false
+warnAboutAdvancedXInclude=false
+rightTab.insertCharacterPane.selected=false
+addInteractiveMargin=none
+rightTab.checkSpellingPane.atStart=false
+textAntiAliasing=true
+rightTab.editPane.atStart=true
+addonSource=servers
+lastOpenedFiles=
+defaultForeground=0 0 0
+rightTab.textSearchReplacePane.selected=false
+serifFontFamily=Serif
+overrideConfiguration=false
+footerColor=128 128 128
+rightSplit.dividerLocation=990
+button2PastesSystemSelection=false
+ignoreDuplicates=false
+addonInstallDir=best
+rightTab.checkSpellingPane.selected=false
+favorInteroperability=true
+addonDir=
+rightTabs.horizontalRatio=0.33
+addonServers=http\://www.xmlmind.com/xmleditor/_usercontrib/list.xxe_addon\nhttp\://www.xmlmind.net/xmleditor/_download/list-${XXE_VERSION}.xxe_addon\nhttp\://www.xmlmind.net/xmleditor/_download/list.xxe_addon
+overlineFooter=true
+rightTab.checkValidityPane.atStart=false
+ensureSaveFileHasExtension=true
+lockOwner=
+passwords=
+footerBegin=%F
+allowCompound=true
+charsSavedAsEntityRefs=
+useURLChooser=false
+rightTab.checkValidityPane.selected=true
+treeViewPercent=33
+showValidityPaneOnSave=false
+autoSaveTimeout=30
+onlyShowSuggestions=false
+footerEnd=%P
+appendSuggestionMode=manual
+makeBackupFiles=true
+guessIgnorableWhitespace=true
+lockLocalDocuments=false
+features=
+filterDuplicateIDs=true
+updateInclusionsOnSave=true
+treeViewAtRight=false
+autoSaveInterval=-300
+ignoreStyleSheetPI=false
+headerMiddle=
+locale=-
+defaultBackground=255 255 255
+autoSelectAttribute=placeholder
+maxSuggestionForce=false
+monospaceFontFamily=Monospaced
+maxLineLength=78
+helperApplications.entries=\:text/plain\:txt\:\:\:xterm -e vi "%F"
+firstCharDisplayedByTable=0
+singleInstance=false
+activeInputMethodClient=false
+selectedLanguage=en
+rightTab.editPane.selected=true
+defaultFontIsSerif=false
+ignoreCase=false
+fontSize=-1
+sansSerifFontFamily=SansSerif
+headerEnd=
+indent=2
+allowPrefixes=true
+headerColor=128 128 128
+helperApplications.defaultViewer=firefox "%U"
+lockMode=exclusive
+dontIndentUnconstrainedDocs=false
+rightTab.editAttributePane.selected=false
+ignoreURL=true
+geometry=72 52 1161 855
+maximized=no
+headerBegin=
+rightTab.insertCharacterPane.atStart=false
+allowFileExtensions=true
+rightTab.editAttributePane.atStart=false
+footerMiddle=
+startFromCaret=true
+singleInstancePort=49987
+reopenLastOpenedFile=false
+fileChooserSize=500 326
+screenResolutionWhenPrinting=100.0
+saveCharsAsEntityRefs=true
+copyDocumentTemplate=false
+wrapSearch=false
+infoAboutReadOnlyInclusions=true
+lookAndFeelClassName=-
+imageViewportMode=image
+defaultFontSize=12
+checkPunctuation=false
+showBothViews=false
+xxeVersion=4.6.0
+wrapLongWords=false
+rightTab.textSearchReplacePane.atStart=false
+addAutoDocumentType=true
+allowAdvancedXInclude=false
+addOpenLines=true
+encoding=ORIGINAL_ENCODING
+ignoreDigits=true
diff --git a/doc/editor_configs/xmlmind/ser/dummy.txt b/doc/editor_configs/xmlmind/ser/dummy.txt
new file mode 100644
index 0000000..f786cef
--- /dev/null
+++ b/doc/editor_configs/xmlmind/ser/dummy.txt
@@ -0,0 +1 @@
+# just to make hg happy \ No newline at end of file
diff --git a/doc/editor_configs/xmlmind/spell/dummy.txt b/doc/editor_configs/xmlmind/spell/dummy.txt
new file mode 100644
index 0000000..f786cef
--- /dev/null
+++ b/doc/editor_configs/xmlmind/spell/dummy.txt
@@ -0,0 +1 @@
+# just to make hg happy \ No newline at end of file
diff --git a/doc/generated/builders.gen b/doc/generated/builders.gen
new file mode 100644
index 0000000..41239d4
--- /dev/null
+++ b/doc/generated/builders.gen
@@ -0,0 +1,2577 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+ <!ENTITY % builders-mod SYSTEM "builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "variables.mod">
+ %variables-mod;
+]>
+
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <varlistentry id="b-CFile">
+ <term>
+ <function>CFile()</function>
+ </term>
+ <term>
+ <function>env.CFile()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a C source file given a lex (<filename>.l</filename>)
+or yacc (<filename>.y</filename>) input file.
+The suffix specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CFILESUFFIX"><envar>$CFILESUFFIX</envar></link> construction variable
+(<filename>.c</filename> by default)
+is automatically added to the target
+if it is not already present.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# builds foo.c
+env.CFile(target = 'foo.c', source = 'foo.l')
+# builds bar.c
+env.CFile(target = 'bar', source = 'bar.y')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Command">
+ <term>
+ <function>Command()</function>
+ </term>
+ <term>
+ <function>env.Command()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <function xmlns="http://www.scons.org/dbxsd/v1.0">Command</function> "Builder" is actually implemented
+as a function that looks like a Builder,
+but actually takes an additional argument of the action
+from which the Builder should be made.
+See the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Command"><function>Command</function></link> function description
+for the calling syntax and details.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-CXXFile">
+ <term>
+ <function>CXXFile()</function>
+ </term>
+ <term>
+ <function>env.CXXFile()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a C++ source file given a lex (<filename>.ll</filename>)
+or yacc (<filename>.yy</filename>)
+input file.
+The suffix specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXFILESUFFIX"><envar>$CXXFILESUFFIX</envar></link> construction variable
+(<filename>.cc</filename> by default)
+is automatically added to the target
+if it is not already present.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# builds foo.cc
+env.CXXFile(target = 'foo.cc', source = 'foo.ll')
+# builds bar.cc
+env.CXXFile(target = 'bar', source = 'bar.yy')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookEpub">
+ <term>
+ <function>DocbookEpub()</function>
+ </term>
+ <term>
+ <function>env.DocbookEpub()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for EPUB output.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookEpub('manual.epub', 'manual.xml')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+or simply
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookEpub('manual')
+</example_commands>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookHtml">
+ <term>
+ <function>DocbookHtml()</function>
+ </term>
+ <term>
+ <function>env.DocbookHtml()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for HTML output.
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtml('manual.html', 'manual.xml')
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+or simply
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtml('manual')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookHtmlChunked">
+ <term>
+ <function>DocbookHtmlChunked()</function>
+ </term>
+ <term>
+ <function>env.DocbookHtmlChunked()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for chunked HTML output.
+It supports the <literal>base.dir</literal> parameter. The
+<filename>chunkfast.xsl</filename> file (requires "EXSLT") is used as the
+default stylesheet. Basic syntax:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtmlChunked('manual')
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+where <filename>manual.xml</filename> is the input file.
+</para>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">If you use the <literal>root.filename</literal>
+parameter in your own stylesheets you have to specify the new target name.
+This ensures that the dependencies get correct, especially for the cleanup via <quote><literal>scons -c</literal></quote>:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtmlChunked('mymanual.html', 'manual', xsl='htmlchunk.xsl')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Some basic support for the <literal>base.dir</literal> is provided. You
+can add the <literal>base_dir</literal> keyword to your Builder
+call, and the given prefix gets prepended to all the created filenames:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtmlChunked('manual', xsl='htmlchunk.xsl', base_dir='output/')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Make sure that you don't forget the trailing slash for the base folder, else
+your files get renamed only!
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookHtmlhelp">
+ <term>
+ <function>DocbookHtmlhelp()</function>
+ </term>
+ <term>
+ <function>env.DocbookHtmlhelp()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for HTMLHELP output.
+Its basic syntax is:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual')
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+where <filename>manual.xml</filename> is the input file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">If you use the <literal>root.filename</literal>
+parameter in your own stylesheets you have to specify the new target name.
+This ensures that the dependencies get correct, especially for the cleanup via <quote><literal>scons -c</literal></quote>:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('mymanual.html', 'manual', xsl='htmlhelp.xsl')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Some basic support for the <literal>base.dir</literal> parameter
+is provided. You can add the <literal>base_dir</literal> keyword to
+your Builder call, and the given prefix gets prepended to all the
+created filenames:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual', xsl='htmlhelp.xsl', base_dir='output/')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Make sure that you don't forget the trailing slash for the base folder, else
+your files get renamed only!
+</para>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookMan">
+ <term>
+ <function>DocbookMan()</function>
+ </term>
+ <term>
+ <function>env.DocbookMan()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for Man page output.
+Its basic syntax is:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookMan('manual')
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+where <filename>manual.xml</filename> is the input file. Note, that
+you can specify a target name, but the actual output names are automatically
+set from the <literal>refname</literal> entries in your XML source.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookPdf">
+ <term>
+ <function>DocbookPdf()</function>
+ </term>
+ <term>
+ <function>env.DocbookPdf()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for PDF output.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookPdf('manual.pdf', 'manual.xml')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+or simply
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookPdf('manual')
+</example_commands>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookSlidesHtml">
+ <term>
+ <function>DocbookSlidesHtml()</function>
+ </term>
+ <term>
+ <function>env.DocbookSlidesHtml()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for HTML slides output.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookSlidesHtml('manual')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">If you use the <literal>titlefoil.html</literal> parameter in
+your own stylesheets you have to give the new target name. This ensures
+that the dependencies get correct, especially for the cleanup via
+<quote><literal>scons -c</literal></quote>:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookSlidesHtml('mymanual.html','manual', xsl='slideshtml.xsl')
+</screen>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Some basic support for the <literal>base.dir</literal> parameter
+is provided. You
+can add the <literal>base_dir</literal> keyword to your Builder
+call, and the given prefix gets prepended to all the created filenames:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookSlidesHtml('manual', xsl='slideshtml.xsl', base_dir='output/')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Make sure that you don't forget the trailing slash for the base folder, else
+your files get renamed only!
+</para>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookSlidesPdf">
+ <term>
+ <function>DocbookSlidesPdf()</function>
+ </term>
+ <term>
+ <function>env.DocbookSlidesPdf()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, providing a Docbook toolchain for PDF slides output.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookSlidesPdf('manual.pdf', 'manual.xml')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+or simply
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookSlidesPdf('manual')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookXInclude">
+ <term>
+ <function>DocbookXInclude()</function>
+ </term>
+ <term>
+ <function>env.DocbookXInclude()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, for resolving XIncludes in a separate processing step.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookXInclude('manual_xincluded.xml', 'manual.xml')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DocbookXslt">
+ <term>
+ <function>DocbookXslt()</function>
+ </term>
+ <term>
+ <function>env.DocbookXslt()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A pseudo-Builder, applying a given XSL transformation to the input file.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookXslt('manual_transformed.xml', 'manual.xml', xsl='transform.xslt')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Note, that this builder requires the <literal>xsl</literal> parameter
+to be set.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-DVI">
+ <term>
+ <function>DVI()</function>
+ </term>
+ <term>
+ <function>env.DVI()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a <filename>.dvi</filename> file
+from a <filename>.tex</filename>,
+<filename>.ltx</filename> or <filename>.latex</filename> input file.
+If the source file suffix is <filename>.tex</filename>,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will examine the contents of the file;
+if the string
+<literal>\documentclass</literal>
+or
+<literal>\documentstyle</literal>
+is found, the file is assumed to be a LaTeX file and
+the target is built by invoking the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LATEXCOM"><envar>$LATEXCOM</envar></link> command line;
+otherwise, the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-TEXCOM"><envar>$TEXCOM</envar></link> command line is used.
+If the file is a LaTeX file,
+the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">DVI</function>
+builder method will also examine the contents
+of the
+<filename>.aux</filename>
+file and invoke the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-BIBTEX"><envar>$BIBTEX</envar></link> command line
+if the string
+<literal>bibdata</literal>
+is found,
+start <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MAKEINDEX"><envar>$MAKEINDEX</envar></link> to generate an index if a
+<filename>.ind</filename>
+file is found
+and will examine the contents
+<filename>.log</filename>
+file and re-run the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LATEXCOM"><envar>$LATEXCOM</envar></link> command
+if the log file says it is necessary.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix <filename>.dvi</filename>
+(hard-coded within TeX itself)
+is automatically added to the target
+if it is not already present.
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# builds from aaa.tex
+env.DVI(target = 'aaa.dvi', source = 'aaa.tex')
+# builds bbb.dvi
+env.DVI(target = 'bbb', source = 'bbb.ltx')
+# builds from ccc.latex
+env.DVI(target = 'ccc.dvi', source = 'ccc.latex')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Gs">
+ <term>
+ <function>Gs()</function>
+ </term>
+ <term>
+ <function>env.Gs()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A Builder for explicitly calling the <literal>gs</literal> executable.
+Depending on the underlying OS, the different names <literal>gs</literal>,
+<literal>gsos2</literal> and <literal>gswin32c</literal>
+are tried.
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['gs'])
+env.Gs('cover.jpg','scons-scons.pdf',
+ GSFLAGS='-dNOPAUSE -dBATCH -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -q')
+ )
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Install">
+ <term>
+ <function>Install()</function>
+ </term>
+ <term>
+ <function>env.Install()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Installs one or more source files or directories
+in the specified target,
+which must be a directory.
+The names of the specified source files or directories
+remain the same within the destination directory. The
+sources may be given as a string or as a node returned by
+a builder.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Install('/usr/local/bin', source = ['foo', 'bar'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-InstallAs">
+ <term>
+ <function>InstallAs()</function>
+ </term>
+ <term>
+ <function>env.InstallAs()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Installs one or more source files or directories
+to specific names,
+allowing changing a file or directory name
+as part of the installation.
+It is an error if the
+target
+and
+source
+arguments list different numbers of files or directories.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-InstallVersionedLib">
+ <term>
+ <function>InstallVersionedLib()</function>
+ </term>
+ <term>
+ <function>env.InstallVersionedLib()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Installs a versioned shared library. The <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBVERSION"><envar>$SHLIBVERSION</envar></link>
+construction variable should be defined in the environment
+to confirm the version number in the library name.
+The symlinks appropriate to the architecture will be generated.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.InstallAs(target = '/usr/local/bin/foo',
+ source = 'foo_debug')
+env.InstallAs(target = ['../lib/libfoo.a', '../lib/libbar.a'],
+ source = ['libFOO.a', 'libBAR.a'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Jar">
+ <term>
+ <function>Jar()</function>
+ </term>
+ <term>
+ <function>env.Jar()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a Java archive (<filename>.jar</filename>) file
+from the specified list of sources.
+Any directories in the source list
+will be searched for <filename>.class</filename> files).
+Any <filename>.java</filename> files in the source list
+will be compiled to <filename>.class</filename> files
+by calling the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Java"><function>Java</function></link> Builder.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JARCHDIR"><envar>$JARCHDIR</envar></link> value is set, the
+<application xmlns="http://www.scons.org/dbxsd/v1.0">jar</application>
+command will change to the specified directory using the
+<option>-C</option>
+option.
+If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$JARCHDIR</envar> is not set explicitly,
+<application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> will use the top of any subdirectory tree
+in which Java <filename>.class</filename>
+were built by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Java"><function>Java</function></link> Builder.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the contents any of the source files begin with the string
+<literal>Manifest-Version</literal>,
+the file is assumed to be a manifest
+and is passed to the
+<application xmlns="http://www.scons.org/dbxsd/v1.0">jar</application>
+command with the
+<option>m</option>
+option set.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Jar(target = 'foo.jar', source = 'classes')
+
+env.Jar(target = 'bar.jar',
+ source = ['bar1.java', 'bar2.java'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Java">
+ <term>
+ <function>Java()</function>
+ </term>
+ <term>
+ <function>env.Java()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds one or more Java class files.
+The sources may be any combination of explicit
+<filename>.java</filename> files,
+or directory trees which will be scanned
+for <filename>.java</filename> files.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+SCons will parse each source <filename>.java</filename> file
+to find the classes
+(including inner classes)
+defined within that file,
+and from that figure out the
+target <filename>.class</filename> files that will be created.
+The class files will be placed underneath
+the specified target directory.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+SCons will also search each Java file
+for the Java package name,
+which it assumes can be found on a line
+beginning with the string
+<literal>package</literal>
+in the first column;
+the resulting <filename>.class</filename> files
+will be placed in a directory reflecting
+the specified package name.
+For example,
+the file
+<filename>Foo.java</filename>
+defining a single public
+<classname>Foo</classname>
+class and
+containing a package name of
+<classname>sub.dir</classname>
+will generate a corresponding
+<filename>sub/dir/Foo.class</filename>
+class file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Java(target = 'classes', source = 'src')
+env.Java(target = 'classes', source = ['src1', 'src2'])
+env.Java(target = 'classes', source = ['File1.java', 'File2.java'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Java source files can use the native encoding for the underlying OS.
+Since SCons compiles in simple ASCII mode by default,
+the compiler will generate warnings about unmappable characters,
+which may lead to errors as the file is processed further.
+In this case, the user must specify the <literal>LANG</literal>
+environment variable to tell the compiler what encoding is used.
+For portibility, it's best if the encoding is hard-coded
+so that the compile will work if it is done on a system
+with a different encoding.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment()
+env['ENV']['LANG'] = 'en_GB.UTF-8'
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-JavaH">
+ <term>
+ <function>JavaH()</function>
+ </term>
+ <term>
+ <function>env.JavaH()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds C header and source files for
+implementing Java native methods.
+The target can be either a directory
+in which the header files will be written,
+or a header file name which
+will contain all of the definitions.
+The source can be the names of <filename>.class</filename> files,
+the names of <filename>.java</filename> files
+to be compiled into <filename>.class</filename> files
+by calling the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Java"><function>Java</function></link> builder method,
+or the objects returned from the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Java</function>
+builder method.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the construction variable
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JAVACLASSDIR"><envar>$JAVACLASSDIR</envar></link>
+is set, either in the environment
+or in the call to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">JavaH</function>
+builder method itself,
+then the value of the variable
+will be stripped from the
+beginning of any <filename>.class</filename> file names.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# builds java_native.h
+classes = env.Java(target = 'classdir', source = 'src')
+env.JavaH(target = 'java_native.h', source = classes)
+
+# builds include/package_foo.h and include/package_bar.h
+env.JavaH(target = 'include',
+ source = ['package/foo.class', 'package/bar.class'])
+
+# builds export/foo.h and export/bar.h
+env.JavaH(target = 'export',
+ source = ['classes/foo.class', 'classes/bar.class'],
+ JAVACLASSDIR = 'classes')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Library">
+ <term>
+ <function>Library()</function>
+ </term>
+ <term>
+ <function>env.Library()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A synonym for the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">StaticLibrary</function>
+builder method.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-LoadableModule">
+ <term>
+ <function>LoadableModule()</function>
+ </term>
+ <term>
+ <function>env.LoadableModule()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On most systems,
+this is the same as
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SharedLibrary</function>.
+On Mac OS X (Darwin) platforms,
+this creates a loadable module bundle.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-M4">
+ <term>
+ <function>M4()</function>
+ </term>
+ <term>
+ <function>env.M4()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds an output file from an M4 input file.
+This uses a default <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-M4FLAGS"><envar>$M4FLAGS</envar></link> value of
+<option>-E</option>,
+which considers all warnings to be fatal
+and stops on the first warning
+when using the GNU version of m4.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.M4(target = 'foo.c', source = 'foo.c.m4')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Moc">
+ <term>
+ <function>Moc()</function>
+ </term>
+ <term>
+ <function>env.Moc()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds an output file from a moc input file. Moc input files are either
+header files or cxx files. This builder is only available after using the
+tool 'qt'. See the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QTDIR"><envar>$QTDIR</envar></link> variable for more information.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Moc('foo.h') # generates moc_foo.cc
+env.Moc('foo.cpp') # generates foo.moc
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-MOFiles">
+ <term>
+ <function>MOFiles()</function>
+ </term>
+ <term>
+ <function>env.MOFiles()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This builder belongs to <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgfmt"><literal>msgfmt</literal></link> tool. The builder compiles
+<literal>PO</literal> files to <literal>MO</literal> files.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 1</emphasis>.
+Create <filename>pl.mo</filename> and <filename>en.mo</filename> by compiling
+<filename>pl.po</filename> and <filename>en.po</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.MOFiles(['pl', 'en'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 2</emphasis>.
+Compile files for languages defined in <filename>LINGUAS</filename> file:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.MOFiles(LINGUAS_FILE = 1)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 3</emphasis>.
+Create <filename>pl.mo</filename> and <filename>en.mo</filename> by compiling
+<filename>pl.po</filename> and <filename>en.po</filename> plus files for
+languages defined in <filename>LINGUAS</filename> file:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.MOFiles(['pl', 'en'], LINGUAS_FILE = 1)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 4</emphasis>.
+Compile files for languages defined in <filename>LINGUAS</filename> file
+(another version):
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env['LINGUAS_FILE'] = 1
+ env.MOFiles()
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-MSVSProject">
+ <term>
+ <function>MSVSProject()</function>
+ </term>
+ <term>
+ <function>env.MSVSProject()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a Microsoft Visual Studio project file,
+and by default builds a solution file as well.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This builds a Visual Studio project file, based on the version of
+Visual Studio that is configured (either the latest installed version,
+or the version specified by
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSVS_VERSION"><envar>$MSVS_VERSION</envar></link>
+in the Environment constructor).
+For Visual Studio 6, it will generate a
+<filename>.dsp</filename>
+file.
+For Visual Studio 7 (.NET) and later versions, it will generate a
+<filename>.vcproj</filename>
+file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+By default,
+this also generates a solution file
+for the specified project,
+a
+<filename>.dsw</filename>
+file for Visual Studio 6
+or a
+<filename>.sln</filename>
+file for Visual Studio 7 (.NET).
+This behavior may be disabled by specifying
+<literal>auto_build_solution=0</literal>
+when you call
+<function xmlns="http://www.scons.org/dbxsd/v1.0">MSVSProject</function>,
+in which case you presumably want to
+build the solution file(s)
+by calling the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">MSVSSolution</function>
+Builder (see below).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <function xmlns="http://www.scons.org/dbxsd/v1.0">MSVSProject</function> builder
+takes several lists of filenames
+to be placed into the project file.
+These are currently limited to
+<literal>srcs</literal>,
+<literal>incs</literal>,
+<literal>localincs</literal>,
+<literal>resources</literal>,
+and
+<literal>misc</literal>.
+These are pretty self-explanatory, but it should be noted that these
+lists are added to the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SOURCES"><envar>$SOURCES</envar></link> construction variable as strings,
+NOT as SCons File Nodes. This is because they represent file
+names to be added to the project file, not the source files used to
+build the project file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The above filename lists are all optional,
+although at least one must be specified
+for the resulting project file to be non-empty.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+In addition to the above lists of values,
+the following values may be specified:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>target</literal>:
+The name of the target
+<filename>.dsp</filename>
+or
+<filename>.vcproj</filename>
+file.
+The correct
+suffix for the version of Visual Studio must be used,
+but the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSVSPROJECTSUFFIX"><envar>$MSVSPROJECTSUFFIX</envar></link>
+construction variable
+will be defined to the correct value (see example below).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>variant</literal>:
+The name of this particular variant.
+For Visual Studio 7 projects,
+this can also be a list of variant names.
+These are typically things like "Debug" or "Release", but really
+can be anything you want.
+For Visual Studio 7 projects,
+they may also specify a target platform
+separated from the variant name by a
+<literal>|</literal>
+(vertical pipe)
+character:
+<literal>Debug|Xbox</literal>.
+The default target platform is Win32.
+Multiple calls to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">MSVSProject</function>
+with different variants are allowed;
+all variants will be added to the project file with their appropriate
+build targets and sources.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>buildtarget</literal>:
+An optional string, node, or list of strings or nodes
+(one per build variant), to tell the Visual Studio debugger
+what output target to use in what build variant.
+The number of
+<literal>buildtarget</literal>
+entries must match the number of
+<literal>variant</literal>
+entries.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>runfile</literal>:
+The name of the file that Visual Studio 7 and later
+will run and debug.
+This appears as the value of the
+<literal>Output</literal>
+field in the resutling Visual Studio project file.
+If this is not specified,
+the default is the same as the specified
+<literal>buildtarget</literal>
+value.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that because <application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> always executes its build commands
+from the directory in which the <filename xmlns="http://www.scons.org/dbxsd/v1.0">SConstruct</filename> file is located,
+if you generate a project file in a different directory
+than the <filename xmlns="http://www.scons.org/dbxsd/v1.0">SConstruct</filename> directory,
+users will not be able to double-click
+on the file name in compilation error messages
+displayed in the Visual Studio console output window.
+This can be remedied by adding the
+Visual C/C++
+<literal>/FC</literal>
+compiler option to the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCFLAGS"><envar>$CCFLAGS</envar></link> variable
+so that the compiler will print
+the full path name of any
+files that cause compilation errors.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example usage:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+barsrcs = ['bar.cpp'],
+barincs = ['bar.h'],
+barlocalincs = ['StdAfx.h']
+barresources = ['bar.rc','resource.h']
+barmisc = ['bar_readme.txt']
+
+dll = env.SharedLibrary(target = 'bar.dll',
+ source = barsrcs)
+
+env.MSVSProject(target = 'Bar' + env['MSVSPROJECTSUFFIX'],
+ srcs = barsrcs,
+ incs = barincs,
+ localincs = barlocalincs,
+ resources = barresources,
+ misc = barmisc,
+ buildtarget = dll,
+ variant = 'Release')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-MSVSSolution">
+ <term>
+ <function>MSVSSolution()</function>
+ </term>
+ <term>
+ <function>env.MSVSSolution()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a Microsoft Visual Studio solution file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This builds a Visual Studio solution file,
+based on the version of Visual Studio that is configured
+(either the latest installed version,
+or the version specified by
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSVS_VERSION"><envar>$MSVS_VERSION</envar></link>
+in the construction environment).
+For Visual Studio 6, it will generate a
+<filename>.dsw</filename>
+file.
+For Visual Studio 7 (.NET), it will
+generate a
+<filename>.sln</filename>
+file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The following values must be specified:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>target</literal>:
+The name of the target .dsw or .sln file. The correct
+suffix for the version of Visual Studio must be used, but the value
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSVSSOLUTIONSUFFIX"><envar>$MSVSSOLUTIONSUFFIX</envar></link>
+will be defined to the correct value (see example below).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>variant</literal>:
+The name of this particular variant, or a list of variant
+names (the latter is only supported for MSVS 7 solutions). These are
+typically things like "Debug" or "Release", but really can be anything
+you want. For MSVS 7 they may also specify target platform, like this
+"Debug|Xbox". Default platform is Win32.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>projects</literal>:
+A list of project file names, or Project nodes returned by calls to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">MSVSProject</function>
+Builder,
+to be placed into the solution file.
+It should be noted that these file names are NOT added to the $SOURCES
+environment variable in form of files, but rather as strings. This
+is because they represent file names to be added to the solution file,
+not the source files used to build the solution file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example Usage:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.MSVSSolution(target = 'Bar' + env['MSVSSOLUTIONSUFFIX'],
+ projects = ['bar' + env['MSVSPROJECTSUFFIX']],
+ variant = 'Release')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Object">
+ <term>
+ <function>Object()</function>
+ </term>
+ <term>
+ <function>env.Object()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A synonym for the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">StaticObject</function>
+builder method.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Package">
+ <term>
+ <function>Package()</function>
+ </term>
+ <term>
+ <function>env.Package()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a Binary Package of the given source files.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Package(source = FindInstalledFiles())
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds software distribution packages.
+Packages consist of files to install and packaging information.
+The former may be specified with the <varname xmlns="http://www.scons.org/dbxsd/v1.0">source</varname> parameter and may be left out,
+in which case the <function xmlns="http://www.scons.org/dbxsd/v1.0">FindInstalledFiles</function> function will collect
+all files that have an <function xmlns="http://www.scons.org/dbxsd/v1.0">Install</function> or <function xmlns="http://www.scons.org/dbxsd/v1.0">InstallAs</function> Builder attached.
+If the <varname xmlns="http://www.scons.org/dbxsd/v1.0">target</varname> is not specified
+it will be deduced from additional information given to this Builder.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The packaging information is specified
+with the help of construction variables documented below.
+This information is called a tag to stress that
+some of them can also be attached to files with the <function xmlns="http://www.scons.org/dbxsd/v1.0">Tag</function> function.
+The mandatory ones will complain if they were not specified.
+They vary depending on chosen target packager.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The target packager may be selected with the "PACKAGETYPE" command line
+option or with the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$PACKAGETYPE</envar> construction variable. Currently
+the following packagers available:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ * msi - Microsoft Installer
+ * rpm - Redhat Package Manger
+ * ipkg - Itsy Package Management System
+ * tarbz2 - compressed tar
+ * targz - compressed tar
+ * zip - zip file
+ * src_tarbz2 - compressed tar source
+ * src_targz - compressed tar source
+ * src_zip - zip file source
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An updated list is always available under the "package_type" option when
+running "scons --help" on a project that has packaging activated.
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(tools=['default', 'packaging'])
+env.Install('/bin/', 'my_program')
+env.Package( NAME = 'foo',
+ VERSION = '1.2.3',
+ PACKAGEVERSION = 0,
+ PACKAGETYPE = 'rpm',
+ LICENSE = 'gpl',
+ SUMMARY = 'balalalalal',
+ DESCRIPTION = 'this should be really really long',
+ X_RPM_GROUP = 'Application/fu',
+ SOURCE_URL = 'http://foo.org/foo-1.2.3.tar.gz'
+ )
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-PCH">
+ <term>
+ <function>PCH()</function>
+ </term>
+ <term>
+ <function>env.PCH()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a Microsoft Visual C++ precompiled header.
+Calling this builder method
+returns a list of two targets: the PCH as the first element, and the object
+file as the second element. Normally the object file is ignored.
+This builder method is only
+provided when Microsoft Visual C++ is being used as the compiler.
+The PCH builder method is generally used in
+conjuction with the PCH construction variable to force object files to use
+the precompiled header:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env['PCH'] = env.PCH('StdAfx.cpp')[0]
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-PDF">
+ <term>
+ <function>PDF()</function>
+ </term>
+ <term>
+ <function>env.PDF()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a <filename>.pdf</filename> file
+from a <filename>.dvi</filename> input file
+(or, by extension, a <filename>.tex</filename>,
+<filename>.ltx</filename>,
+or
+<filename>.latex</filename> input file).
+The suffix specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PDFSUFFIX"><envar>$PDFSUFFIX</envar></link> construction variable
+(<filename>.pdf</filename> by default)
+is added automatically to the target
+if it is not already present. Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# builds from aaa.tex
+env.PDF(target = 'aaa.pdf', source = 'aaa.tex')
+# builds bbb.pdf from bbb.dvi
+env.PDF(target = 'bbb', source = 'bbb.dvi')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-POInit">
+ <term>
+ <function>POInit()</function>
+ </term>
+ <term>
+ <function>env.POInit()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This builder belongs to <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool. The builder initializes missing
+<literal>PO</literal> file(s) if <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POAUTOINIT"><envar>$POAUTOINIT</envar></link> is set. If
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POAUTOINIT"><envar>$POAUTOINIT</envar></link> is not set (default), <function xmlns="http://www.scons.org/dbxsd/v1.0">POInit</function> prints instruction for
+user (that is supposed to be a translator), telling how the
+<literal>PO</literal> file should be initialized. In normal projects
+<emphasis>you should not use <function xmlns="http://www.scons.org/dbxsd/v1.0">POInit</function> and use <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link>
+instead</emphasis>. <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> chooses intelligently between
+<command>msgmerge(1)</command> and <command>msginit(1)</command>. <function xmlns="http://www.scons.org/dbxsd/v1.0">POInit</function>
+always uses <command>msginit(1)</command> and should be regarded as builder for
+special purposes or for temporary use (e.g. for quick, one time initialization
+of a bunch of <literal>PO</literal> files) or for tests.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Target nodes defined through <function xmlns="http://www.scons.org/dbxsd/v1.0">POInit</function> are not built by default (they're
+<literal>Ignore</literal>d from <literal>'.'</literal> node) but are added to
+special <literal>Alias</literal> (<literal>'po-create'</literal> by default).
+The alias name may be changed through the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POCREATE_ALIAS"><envar>$POCREATE_ALIAS</envar></link>
+construction variable. All <literal>PO</literal> files defined through
+<function xmlns="http://www.scons.org/dbxsd/v1.0">POInit</function> may be easily initialized by <command>scons po-create</command>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 1</emphasis>.
+Initialize <filename>en.po</filename> and <filename>pl.po</filename> from
+<filename>messages.pot</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POInit(['en', 'pl']) # messages.pot --&gt; [en.po, pl.po]
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 2</emphasis>.
+Initialize <filename>en.po</filename> and <filename>pl.po</filename> from
+<filename>foo.pot</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POInit(['en', 'pl'], ['foo']) # foo.pot --&gt; [en.po, pl.po]
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 3</emphasis>.
+Initialize <filename>en.po</filename> and <filename>pl.po</filename> from
+<filename>foo.pot</filename> but using <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POTDOMAIN"><envar>$POTDOMAIN</envar></link> construction
+variable:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POInit(['en', 'pl'], POTDOMAIN='foo') # foo.pot --&gt; [en.po, pl.po]
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 4</emphasis>.
+Initialize <literal>PO</literal> files for languages defined in
+<filename>LINGUAS</filename> file. The files will be initialized from template
+<filename>messages.pot</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POInit(LINGUAS_FILE = 1) # needs 'LINGUAS' file
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 5</emphasis>.
+Initialize <filename>en.po</filename> and <filename>pl.pl</filename>
+<literal>PO</literal> files plus files for languages defined in
+<filename>LINGUAS</filename> file. The files will be initialized from template
+<filename>messages.pot</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POInit(['en', 'pl'], LINGUAS_FILE = 1)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 6</emphasis>.
+You may preconfigure your environment first, and then initialize
+<literal>PO</literal> files:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env['POAUTOINIT'] = 1
+ env['LINGUAS_FILE'] = 1
+ env['POTDOMAIN'] = 'foo'
+ env.POInit()
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+which has same efect as:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POInit(POAUTOINIT = 1, LINGUAS_FILE = 1, POTDOMAIN = 'foo')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-PostScript">
+ <term>
+ <function>PostScript()</function>
+ </term>
+ <term>
+ <function>env.PostScript()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a <filename>.ps</filename> file
+from a <filename>.dvi</filename> input file
+(or, by extension, a <filename>.tex</filename>,
+<filename>.ltx</filename>,
+or
+<filename>.latex</filename> input file).
+The suffix specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PSSUFFIX"><envar>$PSSUFFIX</envar></link> construction variable
+(<filename>.ps</filename> by default)
+is added automatically to the target
+if it is not already present. Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# builds from aaa.tex
+env.PostScript(target = 'aaa.ps', source = 'aaa.tex')
+# builds bbb.ps from bbb.dvi
+env.PostScript(target = 'bbb', source = 'bbb.dvi')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-POTUpdate">
+ <term>
+ <function>POTUpdate()</function>
+ </term>
+ <term>
+ <function>env.POTUpdate()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The builder belongs to <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool. The builder updates target
+<literal>POT</literal> file if exists or creates one if it doesn't. The node is
+not built by default (i.e. it is <literal>Ignore</literal>d from
+<literal>'.'</literal>), but only on demand (i.e. when given
+<literal>POT</literal> file is required or when special alias is invoked). This
+builder adds its targe node (<filename>messages.pot</filename>, say) to a
+special alias (<literal>pot-update</literal> by default, see
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POTUPDATE_ALIAS"><envar>$POTUPDATE_ALIAS</envar></link>) so you can update/create them easily with
+<command>scons pot-update</command>. The file is not written until there is no
+real change in internationalized messages (or in comments that enter
+<literal>POT</literal> file).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<note> <para>You may see <command>xgettext(1)</command> being invoked by the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool even if there is no real change in internationalized
+messages (so the <literal>POT</literal> file is not being updated). This
+happens every time a source file has changed. In such case we invoke
+<command>xgettext(1)</command> and compare its output with the content of
+<literal>POT</literal> file to decide whether the file should be updated or
+not.</para></note>
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 1.</emphasis>
+Let's create <filename>po/</filename> directory and place following
+<filename>SConstruct</filename> script there:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # SConstruct in 'po/' subdir
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(['foo'], ['../a.cpp', '../b.cpp'])
+ env.POTUpdate(['bar'], ['../c.cpp', '../d.cpp'])
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Then invoke scons few times:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ user@host:$ scons # Does not create foo.pot nor bar.pot
+ user@host:$ scons foo.pot # Updates or creates foo.pot
+ user@host:$ scons pot-update # Updates or creates foo.pot and bar.pot
+ user@host:$ scons -c # Does not clean foo.pot nor bar.pot.
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+the results shall be as the comments above say.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 2.</emphasis>
+The <function xmlns="http://www.scons.org/dbxsd/v1.0">POTUpdate</function> builder may be used with no target specified, in which
+case default target <filename>messages.pot</filename> will be used. The
+default target may also be overriden by setting <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POTDOMAIN"><envar>$POTDOMAIN</envar></link> construction
+variable or providing it as an override to <function xmlns="http://www.scons.org/dbxsd/v1.0">POTUpdate</function> builder:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # SConstruct script
+ env = Environment( tools = ['default', 'xgettext'] )
+ env['POTDOMAIN'] = "foo"
+ env.POTUpdate(source = ["a.cpp", "b.cpp"]) # Creates foo.pot ...
+ env.POTUpdate(POTDOMAIN = "bar", source = ["c.cpp", "d.cpp"]) # and bar.pot
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 3.</emphasis>
+The sources may be specified within separate file, for example
+<filename>POTFILES.in</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # POTFILES.in in 'po/' subdirectory
+ ../a.cpp
+ ../b.cpp
+ # end of file
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The name of the file (<filename>POTFILES.in</filename>) containing the list of
+sources is provided via <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-XGETTEXTFROM"><envar>$XGETTEXTFROM</envar></link>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # SConstruct file in 'po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 4.</emphasis>
+You may use <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-XGETTEXTPATH"><envar>$XGETTEXTPATH</envar></link> to define source search path. Assume, for
+example, that you have files <filename>a.cpp</filename>,
+<filename>b.cpp</filename>, <filename>po/SConstruct</filename>,
+<filename>po/POTFILES.in</filename>. Then your <literal>POT</literal>-related
+files could look as below:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # POTFILES.in in 'po/' subdirectory
+ a.cpp
+ b.cpp
+ # end of file
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # SConstruct file in 'po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH='../')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 5.</emphasis>
+Multiple search directories may be defined within a list, i.e.
+<literal>XGETTEXTPATH = ['dir1', 'dir2', ...]</literal>. The order in the list
+determines the search order of source files. The path to the first file found
+is used.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Let's create <filename>0/1/po/SConstruct</filename> script:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # SConstruct file in '0/1/po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../', '../../'])
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+and <filename>0/1/po/POTFILES.in</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # POTFILES.in in '0/1/po/' subdirectory
+ a.cpp
+ # end of file
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Write two <filename>*.cpp</filename> files, the first one is
+<filename>0/a.cpp</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ /* 0/a.cpp */
+ gettext("Hello from ../../a.cpp")
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+and the second is <filename>0/1/a.cpp</filename>:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ /* 0/1/a.cpp */
+ gettext("Hello from ../a.cpp")
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+then run scons. You'll obtain <literal>0/1/po/messages.pot</literal> with the
+message <literal>"Hello from ../a.cpp"</literal>. When you reverse order in
+<varname>$XGETTEXTFOM</varname>, i.e. when you write SConscript as
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # SConstruct file in '0/1/po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../../', '../'])
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+then the <filename>messages.pot</filename> will contain
+<literal>msgid "Hello from ../../a.cpp"</literal> line and not
+<literal>msgid "Hello from ../a.cpp"</literal>.
+</para>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-POUpdate">
+ <term>
+ <function>POUpdate()</function>
+ </term>
+ <term>
+ <function>env.POUpdate()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The builder belongs to <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgmerge"><literal>msgmerge</literal></link> tool. The builder updates
+<literal>PO</literal> files with <command>msgmerge(1)</command>, or initializes
+missing <literal>PO</literal> files as described in documentation of
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder (see also
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POAUTOINIT"><envar>$POAUTOINIT</envar></link>). Note, that <function xmlns="http://www.scons.org/dbxsd/v1.0">POUpdate</function> <emphasis>does not add its
+targets to <literal>po-create</literal> alias</emphasis> as <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link>
+does.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Target nodes defined through <function xmlns="http://www.scons.org/dbxsd/v1.0">POUpdate</function> are not built by default
+(they're <literal>Ignore</literal>d from <literal>'.'</literal> node). Instead,
+they are added automatically to special <literal>Alias</literal>
+(<literal>'po-update'</literal> by default). The alias name may be changed
+through the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POUPDATE_ALIAS"><envar>$POUPDATE_ALIAS</envar></link> construction variable. You can easilly
+update <literal>PO</literal> files in your project by <command>scons
+po-update</command>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 1.</emphasis>
+Update <filename>en.po</filename> and <filename>pl.po</filename> from
+<filename>messages.pot</filename> template (see also <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POTDOMAIN"><envar>$POTDOMAIN</envar></link>),
+assuming that the later one exists or there is rule to build it (see
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link>):
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POUpdate(['en','pl']) # messages.pot --&gt; [en.po, pl.po]
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 2.</emphasis>
+Update <filename>en.po</filename> and <filename>pl.po</filename> from
+<filename>foo.pot</filename> template:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POUpdate(['en', 'pl'], ['foo']) # foo.pot --&gt; [en.po, pl.pl]
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 3.</emphasis>
+Update <filename>en.po</filename> and <filename>pl.po</filename> from
+<filename>foo.pot</filename> (another version):
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POUpdate(['en', 'pl'], POTDOMAIN='foo') # foo.pot -- &gt; [en.po, pl.pl]
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 4.</emphasis>
+Update files for languages defined in <filename>LINGUAS</filename> file. The
+files are updated from <filename>messages.pot</filename> template:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POUpdate(LINGUAS_FILE = 1) # needs 'LINGUAS' file
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 5.</emphasis>
+Same as above, but update from <filename>foo.pot</filename> template:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POUpdate(LINGUAS_FILE = 1, source = ['foo'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 6.</emphasis>
+Update <filename>en.po</filename> and <filename>pl.po</filename> plus files for
+languages defined in <filename>LINGUAS</filename> file. The files are updated
+from <filename>messages.pot</filename> template:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # produce 'en.po', 'pl.po' + files defined in 'LINGUAS':
+ env.POUpdate(['en', 'pl' ], LINGUAS_FILE = 1)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 7.</emphasis>
+Use <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POAUTOINIT"><envar>$POAUTOINIT</envar></link> to automatically initialize <literal>PO</literal> file
+if it doesn't exist:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env.POUpdate(LINGUAS_FILE = 1, POAUTOINIT = 1)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 8.</emphasis>
+Update <literal>PO</literal> files for languages defined in
+<filename>LINGUAS</filename> file. The files are updated from
+<filename>foo.pot</filename> template. All necessary settings are
+pre-configured via environment.
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # ...
+ env['POAUTOINIT'] = 1
+ env['LINGUAS_FILE'] = 1
+ env['POTDOMAIN'] = 'foo'
+ env.POUpdate()
+</example_commands>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Program">
+ <term>
+ <function>Program()</function>
+ </term>
+ <term>
+ <function>env.Program()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds an executable given one or more object files
+or C, C++, D, or Fortran source files.
+If any C, C++, D or Fortran source files are specified,
+then they will be automatically
+compiled to object files using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Object</function>
+builder method;
+see that builder method's description for
+a list of legal source file suffixes
+and how they are interpreted.
+The target executable file prefix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PROGPREFIX"><envar>$PROGPREFIX</envar></link> construction variable; nothing by default)
+and suffix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PROGSUFFIX"><envar>$PROGSUFFIX</envar></link> construction variable;
+by default, <filename>.exe</filename> on Windows systems,
+nothing on POSIX systems)
+are automatically added to the target if not already present.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Program(target = 'foo', source = ['foo.o', 'bar.c', 'baz.f'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-RES">
+ <term>
+ <function>RES()</function>
+ </term>
+ <term>
+ <function>env.RES()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a Microsoft Visual C++ resource file.
+This builder method is only provided
+when Microsoft Visual C++ or MinGW is being used as the compiler. The
+<filename>.res</filename>
+(or
+<filename>.o</filename>
+for MinGW) suffix is added to the target name if no other suffix is given.
+The source
+file is scanned for implicit dependencies as though it were a C file.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.RES('resource.rc')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-RMIC">
+ <term>
+ <function>RMIC()</function>
+ </term>
+ <term>
+ <function>env.RMIC()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds stub and skeleton class files
+for remote objects
+from Java <filename>.class</filename> files.
+The target is a directory
+relative to which the stub
+and skeleton class files will be written.
+The source can be the names of <filename>.class</filename> files,
+or the objects return from the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Java</function>
+builder method.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the construction variable
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JAVACLASSDIR"><envar>$JAVACLASSDIR</envar></link>
+is set, either in the environment
+or in the call to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">RMIC</function>
+builder method itself,
+then the value of the variable
+will be stripped from the
+beginning of any <filename>.class </filename>
+file names.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+classes = env.Java(target = 'classdir', source = 'src')
+env.RMIC(target = 'outdir1', source = classes)
+
+env.RMIC(target = 'outdir2',
+ source = ['package/foo.class', 'package/bar.class'])
+
+env.RMIC(target = 'outdir3',
+ source = ['classes/foo.class', 'classes/bar.class'],
+ JAVACLASSDIR = 'classes')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-RPCGenClient">
+ <term>
+ <function>RPCGenClient()</function>
+ </term>
+ <term>
+ <function>env.RPCGenClient()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Generates an RPC client stub (<filename>_clnt.c</filename>) file
+from a specified RPC (<filename>.x</filename>) source file.
+Because rpcgen only builds output files
+in the local directory,
+the command will be executed
+in the source file's directory by default.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Builds src/rpcif_clnt.c
+env.RPCGenClient('src/rpcif.x')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-RPCGenHeader">
+ <term>
+ <function>RPCGenHeader()</function>
+ </term>
+ <term>
+ <function>env.RPCGenHeader()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Generates an RPC header (<filename>.h</filename>) file
+from a specified RPC (<filename>.x</filename>) source file.
+Because rpcgen only builds output files
+in the local directory,
+the command will be executed
+in the source file's directory by default.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Builds src/rpcif.h
+env.RPCGenHeader('src/rpcif.x')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-RPCGenService">
+ <term>
+ <function>RPCGenService()</function>
+ </term>
+ <term>
+ <function>env.RPCGenService()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Generates an RPC server-skeleton (<filename>_svc.c</filename>) file
+from a specified RPC (<filename>.x</filename>) source file.
+Because rpcgen only builds output files
+in the local directory,
+the command will be executed
+in the source file's directory by default.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Builds src/rpcif_svc.c
+env.RPCGenClient('src/rpcif.x')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-RPCGenXDR">
+ <term>
+ <function>RPCGenXDR()</function>
+ </term>
+ <term>
+ <function>env.RPCGenXDR()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Generates an RPC XDR routine (<filename>_xdr.c</filename>) file
+from a specified RPC (<filename>.x</filename>) source file.
+Because rpcgen only builds output files
+in the local directory,
+the command will be executed
+in the source file's directory by default.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Builds src/rpcif_xdr.c
+env.RPCGenClient('src/rpcif.x')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-SharedLibrary">
+ <term>
+ <function>SharedLibrary()</function>
+ </term>
+ <term>
+ <function>env.SharedLibrary()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a shared library
+(<filename>.so</filename> on a POSIX system,
+<filename>.dll</filename> on Windows)
+given one or more object files
+or C, C++, D or Fortran source files.
+If any source files are given,
+then they will be automatically
+compiled to object files.
+The static library prefix and suffix (if any)
+are automatically added to the target.
+The target library file prefix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBPREFIX"><envar>$SHLIBPREFIX</envar></link> construction variable;
+by default, <filename>lib</filename> on POSIX systems,
+nothing on Windows systems)
+and suffix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBSUFFIX"><envar>$SHLIBSUFFIX</envar></link> construction variable;
+by default, <filename>.dll</filename> on Windows systems,
+<filename>.so</filename> on POSIX systems)
+are automatically added to the target if not already present.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SharedLibrary(target = 'bar', source = ['bar.c', 'foo.o'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Windows systems, the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SharedLibrary</function>
+builder method will always build an import
+(<filename>.lib</filename>) library
+in addition to the shared (<filename>.dll</filename>) library,
+adding a <filename>.lib</filename> library with the same basename
+if there is not already a <filename>.lib</filename> file explicitly
+listed in the targets.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Cygwin systems, the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SharedLibrary</function>
+builder method will always build an import
+(<filename>.dll.a</filename>) library
+in addition to the shared (<filename>.dll</filename>) library,
+adding a <filename>.dll.a</filename> library with the same basename
+if there is not already a <filename>.dll.a</filename> file explicitly
+listed in the targets.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Any object files listed in the
+<literal>source</literal>
+must have been built for a shared library
+(that is, using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SharedObject</function>
+builder method).
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will raise an error if there is any mismatch.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On some platforms, there is a distinction between a shared library
+(loaded automatically by the system to resolve external references)
+and a loadable module (explicitly loaded by user action).
+For maximum portability, use the <function xmlns="http://www.scons.org/dbxsd/v1.0">LoadableModule</function> builder for the latter.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBVERSION"><envar>$SHLIBVERSION</envar></link> construction variable is defined a versioned
+shared library is created. This modifies the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLINKFLAGS"><envar>$SHLINKFLAGS</envar></link> as required,
+adds the version number to the library name, and creates the symlinks that
+are needed. <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBVERSION"><envar>$SHLIBVERSION</envar></link> needs to be of the form X.Y.Z, where X
+and Y are numbers, and Z is a number but can also contain letters to designate
+alpha, beta, or release candidate patch levels.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This builder may create multiple links to the library. On a POSIX system,
+for the shared library libbar.so.2.3.1, the links created would be
+libbar.so and libbar.so.2; on a Darwin (OSX) system
+the library would be libbar.2.3.1.dylib and the link would be
+libbar.dylib.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Windows systems, specifying
+<literal>register=1</literal>
+will cause the <filename>.dll</filename> to be
+registered after it is built using REGSVR32.
+The command that is run
+("regsvr32" by default) is determined by <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-REGSVR"><envar>$REGSVR</envar></link> construction
+variable, and the flags passed are determined by <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-REGSVRFLAGS"><envar>$REGSVRFLAGS</envar></link>. By
+default, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-REGSVRFLAGS"><envar>$REGSVRFLAGS</envar></link> includes the <option>/s</option> option,
+to prevent dialogs from popping
+up and requiring user attention when it is run. If you change
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-REGSVRFLAGS"><envar>$REGSVRFLAGS</envar></link>, be sure to include the <option>/s</option> option.
+For example,
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SharedLibrary(target = 'bar',
+ source = ['bar.cxx', 'foo.obj'],
+ register=1)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+will register <filename>bar.dll</filename> as a COM object
+when it is done linking it.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-SharedObject">
+ <term>
+ <function>SharedObject()</function>
+ </term>
+ <term>
+ <function>env.SharedObject()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds an object file for
+inclusion in a shared library.
+Source files must have one of the same set of extensions
+specified above for the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">StaticObject</function>
+builder method.
+On some platforms building a shared object requires additional
+compiler option
+(e.g. <option>-fPIC</option> for gcc)
+in addition to those needed to build a
+normal (static) object, but on some platforms there is no difference between a
+shared object and a normal (static) one. When there is a difference, SCons
+will only allow shared objects to be linked into a shared library, and will
+use a different suffix for shared objects. On platforms where there is no
+difference, SCons will allow both normal (static)
+and shared objects to be linked into a
+shared library, and will use the same suffix for shared and normal
+(static) objects.
+The target object file prefix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHOBJPREFIX"><envar>$SHOBJPREFIX</envar></link> construction variable;
+by default, the same as <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-OBJPREFIX"><envar>$OBJPREFIX</envar></link>)
+and suffix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHOBJSUFFIX"><envar>$SHOBJSUFFIX</envar></link> construction variable)
+are automatically added to the target if not already present.
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SharedObject(target = 'ddd', source = 'ddd.c')
+env.SharedObject(target = 'eee.o', source = 'eee.cpp')
+env.SharedObject(target = 'fff.obj', source = 'fff.for')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the source files will be scanned
+according to the suffix mappings in the
+<literal>SourceFileScanner</literal>
+object.
+See the section "Scanner Objects,"
+below, for more information.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-StaticLibrary">
+ <term>
+ <function>StaticLibrary()</function>
+ </term>
+ <term>
+ <function>env.StaticLibrary()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a static library given one or more object files
+or C, C++, D or Fortran source files.
+If any source files are given,
+then they will be automatically
+compiled to object files.
+The static library prefix and suffix (if any)
+are automatically added to the target.
+The target library file prefix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBPREFIX"><envar>$LIBPREFIX</envar></link> construction variable;
+by default, <filename>lib</filename> on POSIX systems,
+nothing on Windows systems)
+and suffix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBSUFFIX"><envar>$LIBSUFFIX</envar></link> construction variable;
+by default, <filename>.lib</filename> on Windows systems,
+<filename>.a</filename> on POSIX systems)
+are automatically added to the target if not already present.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.StaticLibrary(target = 'bar', source = ['bar.c', 'foo.o'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Any object files listed in the
+<literal>source</literal>
+must have been built for a static library
+(that is, using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">StaticObject</function>
+builder method).
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will raise an error if there is any mismatch.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-StaticObject">
+ <term>
+ <function>StaticObject()</function>
+ </term>
+ <term>
+ <function>env.StaticObject()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a static object file
+from one or more C, C++, D, or Fortran source files.
+Source files must have one of the following extensions:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ .asm assembly language file
+ .ASM assembly language file
+ .c C file
+ .C Windows: C file
+ POSIX: C++ file
+ .cc C++ file
+ .cpp C++ file
+ .cxx C++ file
+ .cxx C++ file
+ .c++ C++ file
+ .C++ C++ file
+ .d D file
+ .f Fortran file
+ .F Windows: Fortran file
+ POSIX: Fortran file + C pre-processor
+ .for Fortran file
+ .FOR Fortran file
+ .fpp Fortran file + C pre-processor
+ .FPP Fortran file + C pre-processor
+ .m Object C file
+ .mm Object C++ file
+ .s assembly language file
+ .S Windows: assembly language file
+ ARM: CodeSourcery Sourcery Lite
+ .sx assembly language file + C pre-processor
+ POSIX: assembly language file + C pre-processor
+ .spp assembly language file + C pre-processor
+ .SPP assembly language file + C pre-processor
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The target object file prefix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-OBJPREFIX"><envar>$OBJPREFIX</envar></link> construction variable; nothing by default)
+and suffix
+(specified by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-OBJSUFFIX"><envar>$OBJSUFFIX</envar></link> construction variable;
+<filename>.obj</filename> on Windows systems,
+<filename>.o</filename> on POSIX systems)
+are automatically added to the target if not already present.
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.StaticObject(target = 'aaa', source = 'aaa.c')
+env.StaticObject(target = 'bbb.o', source = 'bbb.c++')
+env.StaticObject(target = 'ccc.obj', source = 'ccc.f')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the source files will be scanned
+according to the suffix mappings in
+<literal>SourceFileScanner</literal>
+object.
+See the section "Scanner Objects,"
+below, for more information.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Substfile">
+ <term>
+ <function>Substfile()</function>
+ </term>
+ <term>
+ <function>env.Substfile()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> builder generates a single text file
+by concatenating the source files.
+Nested lists of sources are flattened.
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINESEPARATOR</envar> is used to separate the source files;
+see the description of <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> for details.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If a single source file is present with an <filename>.in</filename> suffix,
+the suffix is stripped and the remainder is used as the default target name.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix and suffix specified by the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SUBSTFILEPREFIX</envar>
+and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SUBSTFILESUFFIX</envar> construction variables
+(the null string by default in both cases)
+are automatically added to the target if they are not already present.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If a construction variable named <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SUBST_DICT</envar> is present,
+it may be either a Python dictionary or a sequence of (key,value) tuples.
+If the former,
+the dictionary is converted into a list of tuples in an arbitrary order,
+so if one key is a prefix of another key
+or if one substitution could be further expanded by another subsitition,
+it is unpredictible whether the expansion will occur.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Any occurences in the source of a key
+are replaced by the corresponding value,
+which may be a Python callable function or a string.
+If a value is a function,
+it is first called (with no arguments) to produce a string.
+The string is <emphasis>subst</emphasis>-expanded
+and the result replaces the key.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(tools = ['default', 'textfile'])
+
+env['prefix'] = '/usr/bin'
+script_dict = {'@prefix@': '/bin', @exec_prefix@: '$prefix'}
+env.Substfile('script.in', SUBST_DICT = script_dict)
+
+conf_dict = {'%VERSION%': '1.2.3', '%BASE%': 'MyProg'}
+env.Substfile('config.h.in', conf_dict, SUBST_DICT = conf_dict)
+
+# UNPREDICTABLE - one key is a prefix of another
+bad_foo = {'$foo': '$foo', '$foobar': '$foobar'}
+env.Substfile('foo.in', SUBST_DICT = bad_foo)
+
+# PREDICTABLE - keys are applied longest first
+good_foo = [('$foobar', '$foobar'), ('$foo', '$foo')]
+env.Substfile('foo.in', SUBST_DICT = good_foo)
+
+# UNPREDICTABLE - one substitution could be futher expanded
+bad_bar = {'@bar@': '@soap@', '@soap@': 'lye'}
+env.Substfile('bar.in', SUBST_DICT = bad_bar)
+
+# PREDICTABLE - substitutions are expanded in order
+good_bar = (('@bar@', '@soap@'), ('@soap@', 'lye'))
+env.Substfile('bar.in', SUBST_DICT = good_bar)
+
+# the SUBST_DICT may be in common (and not an override)
+substutions = {}
+subst = Environment(tools = ['textfile'], SUBST_DICT = substitutions)
+substitutions['@foo@'] = 'foo'
+subst['SUBST_DICT']['@bar@'] = 'bar'
+subst.Substfile('pgm1.c', [Value('#include "@foo@.h"'),
+ Value('#include "@bar@.h"'),
+ "common.in",
+ "pgm1.in"
+ ])
+subst.Substfile('pgm2.c', [Value('#include "@foo@.h"'),
+ Value('#include "@bar@.h"'),
+ "common.in",
+ "pgm2.in"
+ ])
+
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Tar">
+ <term>
+ <function>Tar()</function>
+ </term>
+ <term>
+ <function>env.Tar()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a tar archive of the specified files
+and/or directories.
+Unlike most builder methods,
+the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Tar</function>
+builder method may be called multiple times
+for a given target;
+each additional call
+adds to the list of entries
+that will be built into the archive.
+Any source directories will
+be scanned for changes to
+any on-disk files,
+regardless of whether or not
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+knows about them from other Builder or function calls.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Tar('src.tar', 'src')
+
+# Create the stuff.tar file.
+env.Tar('stuff', ['subdir1', 'subdir2'])
+# Also add "another" to the stuff.tar file.
+env.Tar('stuff', 'another')
+
+# Set TARFLAGS to create a gzip-filtered archive.
+env = Environment(TARFLAGS = '-c -z')
+env.Tar('foo.tar.gz', 'foo')
+
+# Also set the suffix to .tgz.
+env = Environment(TARFLAGS = '-c -z',
+ TARSUFFIX = '.tgz')
+env.Tar('foo')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Textfile">
+ <term>
+ <function>Textfile()</function>
+ </term>
+ <term>
+ <function>env.Textfile()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> builder generates a single text file.
+The source strings constitute the lines;
+nested lists of sources are flattened.
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINESEPARATOR</envar> is used to separate the strings.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If present, the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SUBST_DICT</envar> construction variable
+is used to modify the strings before they are written;
+see the <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> description for details.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix and suffix specified by the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$TEXTFILEPREFIX</envar>
+and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$TEXTFILESUFFIX</envar> construction variables
+(the null string and <filename>.txt</filename> by default, respectively)
+are automatically added to the target if they are not already present.
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# builds/writes foo.txt
+env.Textfile(target = 'foo.txt', source = ['Goethe', 42, 'Schiller'])
+
+# builds/writes bar.txt
+env.Textfile(target = 'bar',
+ source = ['lalala', 'tanteratei'],
+ LINESEPARATOR='|*')
+
+# nested lists are flattened automatically
+env.Textfile(target = 'blob',
+ source = ['lalala', ['Goethe', 42 'Schiller'], 'tanteratei'])
+
+# files may be used as input by wraping them in File()
+env.Textfile(target = 'concat', # concatenate files with a marker between
+ source = [File('concat1'), File('concat2')],
+ LINESEPARATOR = '====================\n')
+
+Results are:
+foo.txt
+ ....8&lt;----
+ Goethe
+ 42
+ Schiller
+ ....8&lt;---- (no linefeed at the end)
+
+bar.txt:
+ ....8&lt;----
+ lalala|*tanteratei
+ ....8&lt;---- (no linefeed at the end)
+
+blob.txt
+ ....8&lt;----
+ lalala
+ Goethe
+ 42
+ Schiller
+ tanteratei
+ ....8&lt;---- (no linefeed at the end)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Translate">
+ <term>
+ <function>Translate()</function>
+ </term>
+ <term>
+ <function>env.Translate()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This pseudo-builder belongs to <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-gettext"><literal>gettext</literal></link> toolset. The builder extracts
+internationalized messages from source files, updates <literal>POT</literal>
+template (if necessary) and then updates <literal>PO</literal> translations (if
+necessary). If <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POAUTOINIT"><envar>$POAUTOINIT</envar></link> is set, missing <literal>PO</literal> files
+will be automatically created (i.e. without translator person intervention).
+The variables <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LINGUAS_FILE"><envar>$LINGUAS_FILE</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-POTDOMAIN"><envar>$POTDOMAIN</envar></link> are taken into
+acount too. All other construction variables used by <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link>, and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> work here too.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 1</emphasis>.
+The simplest way is to specify input files and output languages inline in
+a SCons script when invoking <function xmlns="http://www.scons.org/dbxsd/v1.0">Translate</function>
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# SConscript in 'po/' directory
+env = Environment( tools = ["default", "gettext"] )
+env['POAUTOINIT'] = 1
+env.Translate(['en','pl'], ['../a.cpp','../b.cpp'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 2</emphasis>.
+If you wish, you may also stick to conventional style known from
+<productname>autotools</productname>, i.e. using
+<filename>POTFILES.in</filename> and <filename>LINGUAS</filename> files
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# LINGUAS
+en pl
+#end
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# POTFILES.in
+a.cpp
+b.cpp
+# end
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# SConscript
+env = Environment( tools = ["default", "gettext"] )
+env['POAUTOINIT'] = 1
+env['XGETTEXTPATH'] = ['../']
+env.Translate(LINGUAS_FILE = 1, XGETTEXTFROM = 'POTFILES.in')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The last approach is perhaps the recommended one. It allows easily split
+internationalization/localization onto separate SCons scripts, where a script
+in source tree is responsible for translations (from sources to
+<literal>PO</literal> files) and script(s) under variant directories are
+responsible for compilation of <literal>PO</literal> to <literal>MO</literal>
+files to and for installation of <literal>MO</literal> files. The "gluing
+factor" synchronizing these two scripts is then the content of
+<filename>LINGUAS</filename> file. Note, that the updated
+<literal>POT</literal> and <literal>PO</literal> files are usually going to be
+committed back to the repository, so they must be updated within the source
+directory (and not in variant directories). Additionaly, the file listing of
+<filename>po/</filename> directory contains <filename>LINGUAS</filename> file,
+so the source tree looks familiar to translators, and they may work with the
+project in their usual way.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis>Example 3</emphasis>.
+Let's prepare a development tree as below
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ project/
+ + SConstruct
+ + build/
+ + src/
+ + po/
+ + SConscript
+ + SConscript.i18n
+ + POTFILES.in
+ + LINGUAS
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+with <filename>build</filename> being variant directory. Write the top-level
+<filename>SConstruct</filename> script as follows
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # SConstruct
+ env = Environment( tools = ["default", "gettext"] )
+ VariantDir('build', 'src', duplicate = 0)
+ env['POAUTOINIT'] = 1
+ SConscript('src/po/SConscript.i18n', exports = 'env')
+ SConscript('build/po/SConscript', exports = 'env')
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+the <filename>src/po/SConscript.i18n</filename> as
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # src/po/SConscript.i18n
+ Import('env')
+ env.Translate(LINGUAS_FILE=1, XGETTEXTFROM='POTFILES.in', XGETTEXTPATH=['../'])
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+and the <filename>src/po/SConscript</filename>
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ # src/po/SConscript
+ Import('env')
+ env.MOFiles(LINGUAS_FILE = 1)
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Such setup produces <literal>POT</literal> and <literal>PO</literal> files
+under source tree in <filename>src/po/</filename> and binary
+<literal>MO</literal> files under variant tree in
+<filename>build/po/</filename>. This way the <literal>POT</literal> and
+<literal>PO</literal> files are separated from other output files, which must
+not be committed back to source repositories (e.g. <literal>MO</literal>
+files).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<note><para>In above example, the <literal>PO</literal> files are not updated,
+nor created automatically when you issue <command>scons '.'</command> command.
+The files must be updated (created) by hand via <command>scons
+po-update</command> and then <literal>MO</literal> files can be compiled by
+running <command>scons '.'</command>.</para></note>
+</para>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-TypeLibrary">
+ <term>
+ <function>TypeLibrary()</function>
+ </term>
+ <term>
+ <function>env.TypeLibrary()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a Windows type library (<filename>.tlb</filename>)
+file from an input IDL file (<filename>.idl</filename>).
+In addition, it will build the associated inteface stub and
+proxy source files,
+naming them according to the base name of the <filename>.idl</filename> file.
+For example,
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.TypeLibrary(source="foo.idl")
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Will create <filename>foo.tlb</filename>,
+<filename>foo.h</filename>,
+<filename>foo_i.c</filename>,
+<filename>foo_p.c</filename>
+and
+<filename>foo_data.c</filename>
+files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Uic">
+ <term>
+ <function>Uic()</function>
+ </term>
+ <term>
+ <function>env.Uic()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a header file, an implementation file and a moc file from an ui file.
+and returns the corresponding nodes in the above order.
+This builder is only available after using the tool 'qt'. Note: you can
+specify <filename>.ui</filename> files directly as source
+files to the <function xmlns="http://www.scons.org/dbxsd/v1.0">Program</function>,
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Library</function> and <function xmlns="http://www.scons.org/dbxsd/v1.0">SharedLibrary</function> builders
+without using this builder. Using this builder lets you override the standard
+naming conventions (be careful: prefixes are always prepended to names of
+built files; if you don't want prefixes, you may set them to ``).
+See the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QTDIR"><envar>$QTDIR</envar></link> variable for more information.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Uic('foo.ui') # -&gt; ['foo.h', 'uic_foo.cc', 'moc_foo.cc']
+env.Uic(target = Split('include/foo.h gen/uicfoo.cc gen/mocfoo.cc'),
+ source = 'foo.ui') # -&gt; ['include/foo.h', 'gen/uicfoo.cc', 'gen/mocfoo.cc']
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="b-Zip">
+ <term>
+ <function>Zip()</function>
+ </term>
+ <term>
+ <function>env.Zip()</function>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Builds a zip archive of the specified files
+and/or directories.
+Unlike most builder methods,
+the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Zip</function>
+builder method may be called multiple times
+for a given target;
+each additional call
+adds to the list of entries
+that will be built into the archive.
+Any source directories will
+be scanned for changes to
+any on-disk files,
+regardless of whether or not
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+knows about them from other Builder or function calls.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Zip('src.zip', 'src')
+
+# Create the stuff.zip file.
+env.Zip('stuff', ['subdir1', 'subdir2'])
+# Also add "another" to the stuff.tar file.
+env.Zip('stuff', 'another')
+</example_commands>
+</listitem>
+ </varlistentry>
+</variablelist>
diff --git a/doc/generated/builders.mod b/doc/generated/builders.mod
new file mode 100644
index 0000000..50591b4
--- /dev/null
+++ b/doc/generated/builders.mod
@@ -0,0 +1,243 @@
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Regular builder entities.
+
+-->
+
+<!ENTITY b-CFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CFile</function>">
+<!ENTITY b-Command "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Command</function>">
+<!ENTITY b-CXXFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CXXFile</function>">
+<!ENTITY b-DocbookEpub "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookEpub</function>">
+<!ENTITY b-DocbookHtml "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookHtml</function>">
+<!ENTITY b-DocbookHtmlChunked "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookHtmlChunked</function>">
+<!ENTITY b-DocbookHtmlhelp "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookHtmlhelp</function>">
+<!ENTITY b-DocbookMan "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookMan</function>">
+<!ENTITY b-DocbookPdf "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookPdf</function>">
+<!ENTITY b-DocbookSlidesHtml "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookSlidesHtml</function>">
+<!ENTITY b-DocbookSlidesPdf "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookSlidesPdf</function>">
+<!ENTITY b-DocbookXInclude "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookXInclude</function>">
+<!ENTITY b-DocbookXslt "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DocbookXslt</function>">
+<!ENTITY b-DVI "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DVI</function>">
+<!ENTITY b-Gs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Gs</function>">
+<!ENTITY b-Install "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Install</function>">
+<!ENTITY b-InstallAs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>InstallAs</function>">
+<!ENTITY b-InstallVersionedLib "<function xmlns='http://www.scons.org/dbxsd/v1.0'>InstallVersionedLib</function>">
+<!ENTITY b-Jar "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Jar</function>">
+<!ENTITY b-Java "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Java</function>">
+<!ENTITY b-JavaH "<function xmlns='http://www.scons.org/dbxsd/v1.0'>JavaH</function>">
+<!ENTITY b-Library "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Library</function>">
+<!ENTITY b-LoadableModule "<function xmlns='http://www.scons.org/dbxsd/v1.0'>LoadableModule</function>">
+<!ENTITY b-M4 "<function xmlns='http://www.scons.org/dbxsd/v1.0'>M4</function>">
+<!ENTITY b-Moc "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Moc</function>">
+<!ENTITY b-MOFiles "<function xmlns='http://www.scons.org/dbxsd/v1.0'>MOFiles</function>">
+<!ENTITY b-MSVSProject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>MSVSProject</function>">
+<!ENTITY b-MSVSSolution "<function xmlns='http://www.scons.org/dbxsd/v1.0'>MSVSSolution</function>">
+<!ENTITY b-Object "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Object</function>">
+<!ENTITY b-Package "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Package</function>">
+<!ENTITY b-PCH "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PCH</function>">
+<!ENTITY b-PDF "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PDF</function>">
+<!ENTITY b-POInit "<function xmlns='http://www.scons.org/dbxsd/v1.0'>POInit</function>">
+<!ENTITY b-PostScript "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PostScript</function>">
+<!ENTITY b-POTUpdate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>POTUpdate</function>">
+<!ENTITY b-POUpdate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>POUpdate</function>">
+<!ENTITY b-Program "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Program</function>">
+<!ENTITY b-RES "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RES</function>">
+<!ENTITY b-RMIC "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RMIC</function>">
+<!ENTITY b-RPCGenClient "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RPCGenClient</function>">
+<!ENTITY b-RPCGenHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RPCGenHeader</function>">
+<!ENTITY b-RPCGenService "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RPCGenService</function>">
+<!ENTITY b-RPCGenXDR "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RPCGenXDR</function>">
+<!ENTITY b-SharedLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SharedLibrary</function>">
+<!ENTITY b-SharedObject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SharedObject</function>">
+<!ENTITY b-StaticLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>StaticLibrary</function>">
+<!ENTITY b-StaticObject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>StaticObject</function>">
+<!ENTITY b-Substfile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Substfile</function>">
+<!ENTITY b-Tar "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tar</function>">
+<!ENTITY b-Textfile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Textfile</function>">
+<!ENTITY b-Translate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Translate</function>">
+<!ENTITY b-TypeLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TypeLibrary</function>">
+<!ENTITY b-Uic "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Uic</function>">
+<!ENTITY b-Zip "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Zip</function>">
+
+<!ENTITY b-env-CFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.CFile</function>">
+<!ENTITY b-env-Command "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Command</function>">
+<!ENTITY b-env-CXXFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.CXXFile</function>">
+<!ENTITY b-env-DocbookEpub "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookEpub</function>">
+<!ENTITY b-env-DocbookHtml "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookHtml</function>">
+<!ENTITY b-env-DocbookHtmlChunked "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookHtmlChunked</function>">
+<!ENTITY b-env-DocbookHtmlhelp "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookHtmlhelp</function>">
+<!ENTITY b-env-DocbookMan "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookMan</function>">
+<!ENTITY b-env-DocbookPdf "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookPdf</function>">
+<!ENTITY b-env-DocbookSlidesHtml "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookSlidesHtml</function>">
+<!ENTITY b-env-DocbookSlidesPdf "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookSlidesPdf</function>">
+<!ENTITY b-env-DocbookXInclude "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookXInclude</function>">
+<!ENTITY b-env-DocbookXslt "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DocbookXslt</function>">
+<!ENTITY b-env-DVI "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DVI</function>">
+<!ENTITY b-env-Gs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Gs</function>">
+<!ENTITY b-env-Install "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Install</function>">
+<!ENTITY b-env-InstallAs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.InstallAs</function>">
+<!ENTITY b-env-InstallVersionedLib "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.InstallVersionedLib</function>">
+<!ENTITY b-env-Jar "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Jar</function>">
+<!ENTITY b-env-Java "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Java</function>">
+<!ENTITY b-env-JavaH "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.JavaH</function>">
+<!ENTITY b-env-Library "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Library</function>">
+<!ENTITY b-env-LoadableModule "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.LoadableModule</function>">
+<!ENTITY b-env-M4 "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.M4</function>">
+<!ENTITY b-env-Moc "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Moc</function>">
+<!ENTITY b-env-MOFiles "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.MOFiles</function>">
+<!ENTITY b-env-MSVSProject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.MSVSProject</function>">
+<!ENTITY b-env-MSVSSolution "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.MSVSSolution</function>">
+<!ENTITY b-env-Object "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Object</function>">
+<!ENTITY b-env-Package "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Package</function>">
+<!ENTITY b-env-PCH "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.PCH</function>">
+<!ENTITY b-env-PDF "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.PDF</function>">
+<!ENTITY b-env-POInit "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.POInit</function>">
+<!ENTITY b-env-PostScript "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.PostScript</function>">
+<!ENTITY b-env-POTUpdate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.POTUpdate</function>">
+<!ENTITY b-env-POUpdate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.POUpdate</function>">
+<!ENTITY b-env-Program "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Program</function>">
+<!ENTITY b-env-RES "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.RES</function>">
+<!ENTITY b-env-RMIC "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.RMIC</function>">
+<!ENTITY b-env-RPCGenClient "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.RPCGenClient</function>">
+<!ENTITY b-env-RPCGenHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.RPCGenHeader</function>">
+<!ENTITY b-env-RPCGenService "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.RPCGenService</function>">
+<!ENTITY b-env-RPCGenXDR "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.RPCGenXDR</function>">
+<!ENTITY b-env-SharedLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SharedLibrary</function>">
+<!ENTITY b-env-SharedObject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SharedObject</function>">
+<!ENTITY b-env-StaticLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.StaticLibrary</function>">
+<!ENTITY b-env-StaticObject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.StaticObject</function>">
+<!ENTITY b-env-Substfile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Substfile</function>">
+<!ENTITY b-env-Tar "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Tar</function>">
+<!ENTITY b-env-Textfile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Textfile</function>">
+<!ENTITY b-env-Translate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Translate</function>">
+<!ENTITY b-env-TypeLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.TypeLibrary</function>">
+<!ENTITY b-env-Uic "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Uic</function>">
+<!ENTITY b-env-Zip "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Zip</function>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Entities that are links to the builder entries in the appendix.
+
+-->
+
+<!ENTITY b-link-CFile "<link linkend='b-CFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>CFile</function></link>">
+<!ENTITY b-link-Command "<link linkend='b-Command' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Command</function></link>">
+<!ENTITY b-link-CXXFile "<link linkend='b-CXXFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>CXXFile</function></link>">
+<!ENTITY b-link-DocbookEpub "<link linkend='b-DocbookEpub' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookEpub</function></link>">
+<!ENTITY b-link-DocbookHtml "<link linkend='b-DocbookHtml' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookHtml</function></link>">
+<!ENTITY b-link-DocbookHtmlChunked "<link linkend='b-DocbookHtmlChunked' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookHtmlChunked</function></link>">
+<!ENTITY b-link-DocbookHtmlhelp "<link linkend='b-DocbookHtmlhelp' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookHtmlhelp</function></link>">
+<!ENTITY b-link-DocbookMan "<link linkend='b-DocbookMan' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookMan</function></link>">
+<!ENTITY b-link-DocbookPdf "<link linkend='b-DocbookPdf' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookPdf</function></link>">
+<!ENTITY b-link-DocbookSlidesHtml "<link linkend='b-DocbookSlidesHtml' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookSlidesHtml</function></link>">
+<!ENTITY b-link-DocbookSlidesPdf "<link linkend='b-DocbookSlidesPdf' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookSlidesPdf</function></link>">
+<!ENTITY b-link-DocbookXInclude "<link linkend='b-DocbookXInclude' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookXInclude</function></link>">
+<!ENTITY b-link-DocbookXslt "<link linkend='b-DocbookXslt' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DocbookXslt</function></link>">
+<!ENTITY b-link-DVI "<link linkend='b-DVI' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DVI</function></link>">
+<!ENTITY b-link-Gs "<link linkend='b-Gs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Gs</function></link>">
+<!ENTITY b-link-Install "<link linkend='b-Install' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Install</function></link>">
+<!ENTITY b-link-InstallAs "<link linkend='b-InstallAs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>InstallAs</function></link>">
+<!ENTITY b-link-InstallVersionedLib "<link linkend='b-InstallVersionedLib' xmlns='http://www.scons.org/dbxsd/v1.0'><function>InstallVersionedLib</function></link>">
+<!ENTITY b-link-Jar "<link linkend='b-Jar' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Jar</function></link>">
+<!ENTITY b-link-Java "<link linkend='b-Java' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Java</function></link>">
+<!ENTITY b-link-JavaH "<link linkend='b-JavaH' xmlns='http://www.scons.org/dbxsd/v1.0'><function>JavaH</function></link>">
+<!ENTITY b-link-Library "<link linkend='b-Library' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Library</function></link>">
+<!ENTITY b-link-LoadableModule "<link linkend='b-LoadableModule' xmlns='http://www.scons.org/dbxsd/v1.0'><function>LoadableModule</function></link>">
+<!ENTITY b-link-M4 "<link linkend='b-M4' xmlns='http://www.scons.org/dbxsd/v1.0'><function>M4</function></link>">
+<!ENTITY b-link-Moc "<link linkend='b-Moc' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Moc</function></link>">
+<!ENTITY b-link-MOFiles "<link linkend='b-MOFiles' xmlns='http://www.scons.org/dbxsd/v1.0'><function>MOFiles</function></link>">
+<!ENTITY b-link-MSVSProject "<link linkend='b-MSVSProject' xmlns='http://www.scons.org/dbxsd/v1.0'><function>MSVSProject</function></link>">
+<!ENTITY b-link-MSVSSolution "<link linkend='b-MSVSSolution' xmlns='http://www.scons.org/dbxsd/v1.0'><function>MSVSSolution</function></link>">
+<!ENTITY b-link-Object "<link linkend='b-Object' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Object</function></link>">
+<!ENTITY b-link-Package "<link linkend='b-Package' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Package</function></link>">
+<!ENTITY b-link-PCH "<link linkend='b-PCH' xmlns='http://www.scons.org/dbxsd/v1.0'><function>PCH</function></link>">
+<!ENTITY b-link-PDF "<link linkend='b-PDF' xmlns='http://www.scons.org/dbxsd/v1.0'><function>PDF</function></link>">
+<!ENTITY b-link-POInit "<link linkend='b-POInit' xmlns='http://www.scons.org/dbxsd/v1.0'><function>POInit</function></link>">
+<!ENTITY b-link-PostScript "<link linkend='b-PostScript' xmlns='http://www.scons.org/dbxsd/v1.0'><function>PostScript</function></link>">
+<!ENTITY b-link-POTUpdate "<link linkend='b-POTUpdate' xmlns='http://www.scons.org/dbxsd/v1.0'><function>POTUpdate</function></link>">
+<!ENTITY b-link-POUpdate "<link linkend='b-POUpdate' xmlns='http://www.scons.org/dbxsd/v1.0'><function>POUpdate</function></link>">
+<!ENTITY b-link-Program "<link linkend='b-Program' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Program</function></link>">
+<!ENTITY b-link-RES "<link linkend='b-RES' xmlns='http://www.scons.org/dbxsd/v1.0'><function>RES</function></link>">
+<!ENTITY b-link-RMIC "<link linkend='b-RMIC' xmlns='http://www.scons.org/dbxsd/v1.0'><function>RMIC</function></link>">
+<!ENTITY b-link-RPCGenClient "<link linkend='b-RPCGenClient' xmlns='http://www.scons.org/dbxsd/v1.0'><function>RPCGenClient</function></link>">
+<!ENTITY b-link-RPCGenHeader "<link linkend='b-RPCGenHeader' xmlns='http://www.scons.org/dbxsd/v1.0'><function>RPCGenHeader</function></link>">
+<!ENTITY b-link-RPCGenService "<link linkend='b-RPCGenService' xmlns='http://www.scons.org/dbxsd/v1.0'><function>RPCGenService</function></link>">
+<!ENTITY b-link-RPCGenXDR "<link linkend='b-RPCGenXDR' xmlns='http://www.scons.org/dbxsd/v1.0'><function>RPCGenXDR</function></link>">
+<!ENTITY b-link-SharedLibrary "<link linkend='b-SharedLibrary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SharedLibrary</function></link>">
+<!ENTITY b-link-SharedObject "<link linkend='b-SharedObject' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SharedObject</function></link>">
+<!ENTITY b-link-StaticLibrary "<link linkend='b-StaticLibrary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>StaticLibrary</function></link>">
+<!ENTITY b-link-StaticObject "<link linkend='b-StaticObject' xmlns='http://www.scons.org/dbxsd/v1.0'><function>StaticObject</function></link>">
+<!ENTITY b-link-Substfile "<link linkend='b-Substfile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Substfile</function></link>">
+<!ENTITY b-link-Tar "<link linkend='b-Tar' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Tar</function></link>">
+<!ENTITY b-link-Textfile "<link linkend='b-Textfile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Textfile</function></link>">
+<!ENTITY b-link-Translate "<link linkend='b-Translate' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Translate</function></link>">
+<!ENTITY b-link-TypeLibrary "<link linkend='b-TypeLibrary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>TypeLibrary</function></link>">
+<!ENTITY b-link-Uic "<link linkend='b-Uic' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Uic</function></link>">
+<!ENTITY b-link-Zip "<link linkend='b-Zip' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Zip</function></link>">
+
+<!ENTITY b-link-env-CFile "<link linkend='b-CFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.CFile</function></link>">
+<!ENTITY b-link-env-Command "<link linkend='b-Command' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Command</function></link>">
+<!ENTITY b-link-env-CXXFile "<link linkend='b-CXXFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.CXXFile</function></link>">
+<!ENTITY b-link-env-DocbookEpub "<link linkend='b-DocbookEpub' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookEpub</function></link>">
+<!ENTITY b-link-env-DocbookHtml "<link linkend='b-DocbookHtml' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookHtml</function></link>">
+<!ENTITY b-link-env-DocbookHtmlChunked "<link linkend='b-DocbookHtmlChunked' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookHtmlChunked</function></link>">
+<!ENTITY b-link-env-DocbookHtmlhelp "<link linkend='b-DocbookHtmlhelp' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookHtmlhelp</function></link>">
+<!ENTITY b-link-env-DocbookMan "<link linkend='b-DocbookMan' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookMan</function></link>">
+<!ENTITY b-link-env-DocbookPdf "<link linkend='b-DocbookPdf' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookPdf</function></link>">
+<!ENTITY b-link-env-DocbookSlidesHtml "<link linkend='b-DocbookSlidesHtml' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookSlidesHtml</function></link>">
+<!ENTITY b-link-env-DocbookSlidesPdf "<link linkend='b-DocbookSlidesPdf' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookSlidesPdf</function></link>">
+<!ENTITY b-link-env-DocbookXInclude "<link linkend='b-DocbookXInclude' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookXInclude</function></link>">
+<!ENTITY b-link-env-DocbookXslt "<link linkend='b-DocbookXslt' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DocbookXslt</function></link>">
+<!ENTITY b-link-env-DVI "<link linkend='b-DVI' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DVI</function></link>">
+<!ENTITY b-link-env-Gs "<link linkend='b-Gs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Gs</function></link>">
+<!ENTITY b-link-env-Install "<link linkend='b-Install' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Install</function></link>">
+<!ENTITY b-link-env-InstallAs "<link linkend='b-InstallAs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.InstallAs</function></link>">
+<!ENTITY b-link-env-InstallVersionedLib "<link linkend='b-InstallVersionedLib' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.InstallVersionedLib</function></link>">
+<!ENTITY b-link-env-Jar "<link linkend='b-Jar' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Jar</function></link>">
+<!ENTITY b-link-env-Java "<link linkend='b-Java' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Java</function></link>">
+<!ENTITY b-link-env-JavaH "<link linkend='b-JavaH' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.JavaH</function></link>">
+<!ENTITY b-link-env-Library "<link linkend='b-Library' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Library</function></link>">
+<!ENTITY b-link-env-LoadableModule "<link linkend='b-LoadableModule' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.LoadableModule</function></link>">
+<!ENTITY b-link-env-M4 "<link linkend='b-M4' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.M4</function></link>">
+<!ENTITY b-link-env-Moc "<link linkend='b-Moc' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Moc</function></link>">
+<!ENTITY b-link-env-MOFiles "<link linkend='b-MOFiles' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.MOFiles</function></link>">
+<!ENTITY b-link-env-MSVSProject "<link linkend='b-MSVSProject' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.MSVSProject</function></link>">
+<!ENTITY b-link-env-MSVSSolution "<link linkend='b-MSVSSolution' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.MSVSSolution</function></link>">
+<!ENTITY b-link-env-Object "<link linkend='b-Object' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Object</function></link>">
+<!ENTITY b-link-env-Package "<link linkend='b-Package' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Package</function></link>">
+<!ENTITY b-link-env-PCH "<link linkend='b-PCH' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.PCH</function></link>">
+<!ENTITY b-link-env-PDF "<link linkend='b-PDF' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.PDF</function></link>">
+<!ENTITY b-link-env-POInit "<link linkend='b-POInit' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.POInit</function></link>">
+<!ENTITY b-link-env-PostScript "<link linkend='b-PostScript' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.PostScript</function></link>">
+<!ENTITY b-link-env-POTUpdate "<link linkend='b-POTUpdate' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.POTUpdate</function></link>">
+<!ENTITY b-link-env-POUpdate "<link linkend='b-POUpdate' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.POUpdate</function></link>">
+<!ENTITY b-link-env-Program "<link linkend='b-Program' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Program</function></link>">
+<!ENTITY b-link-env-RES "<link linkend='b-RES' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.RES</function></link>">
+<!ENTITY b-link-env-RMIC "<link linkend='b-RMIC' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.RMIC</function></link>">
+<!ENTITY b-link-env-RPCGenClient "<link linkend='b-RPCGenClient' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.RPCGenClient</function></link>">
+<!ENTITY b-link-env-RPCGenHeader "<link linkend='b-RPCGenHeader' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.RPCGenHeader</function></link>">
+<!ENTITY b-link-env-RPCGenService "<link linkend='b-RPCGenService' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.RPCGenService</function></link>">
+<!ENTITY b-link-env-RPCGenXDR "<link linkend='b-RPCGenXDR' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.RPCGenXDR</function></link>">
+<!ENTITY b-link-env-SharedLibrary "<link linkend='b-SharedLibrary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SharedLibrary</function></link>">
+<!ENTITY b-link-env-SharedObject "<link linkend='b-SharedObject' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SharedObject</function></link>">
+<!ENTITY b-link-env-StaticLibrary "<link linkend='b-StaticLibrary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.StaticLibrary</function></link>">
+<!ENTITY b-link-env-StaticObject "<link linkend='b-StaticObject' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.StaticObject</function></link>">
+<!ENTITY b-link-env-Substfile "<link linkend='b-Substfile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Substfile</function></link>">
+<!ENTITY b-link-env-Tar "<link linkend='b-Tar' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Tar</function></link>">
+<!ENTITY b-link-env-Textfile "<link linkend='b-Textfile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Textfile</function></link>">
+<!ENTITY b-link-env-Translate "<link linkend='b-Translate' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Translate</function></link>">
+<!ENTITY b-link-env-TypeLibrary "<link linkend='b-TypeLibrary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.TypeLibrary</function></link>">
+<!ENTITY b-link-env-Uic "<link linkend='b-Uic' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Uic</function></link>">
+<!ENTITY b-link-env-Zip "<link linkend='b-Zip' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Zip</function></link>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
diff --git a/doc/generated/examples/EnumVariable_map_1.xml b/doc/generated/examples/EnumVariable_map_1.xml
new file mode 100644
index 0000000..2b10a0f
--- /dev/null
+++ b/doc/generated/examples/EnumVariable_map_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=navy foo.o</userinput>
+cc -o foo.o -c -DCOLOR="blue" foo.c
+</screen>
diff --git a/doc/generated/examples/addmethod_ex1_1.xml b/doc/generated/examples/addmethod_ex1_1.xml
new file mode 100644
index 0000000..8d46cc5
--- /dev/null
+++ b/doc/generated/examples/addmethod_ex1_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q /</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+Install file: "hello" as "/usr/bin/hello"
+Install file: "hello" as "install/bin/hello"
+</screen>
diff --git a/doc/generated/examples/addmethod_ex2_1.xml b/doc/generated/examples/addmethod_ex2_1.xml
new file mode 100644
index 0000000..08cf5b4
--- /dev/null
+++ b/doc/generated/examples/addmethod_ex2_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o test_stuff.o -c test_stuff.c
+cc -o tests/test_stuff test_stuff.o
+</screen>
diff --git a/doc/generated/examples/addmethod_ex2_2.xml b/doc/generated/examples/addmethod_ex2_2.xml
new file mode 100644
index 0000000..f7b2110
--- /dev/null
+++ b/doc/generated/examples/addmethod_ex2_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+rc /fores.res res.rc
+cl /Fotest_stuff.obj /c test_stuff.c /nologo
+link /nologo /OUT:tests\test_stuff.exe test_stuff.obj res.res
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/alias_ex1_1.xml b/doc/generated/examples/alias_ex1_1.xml
new file mode 100644
index 0000000..a250016
--- /dev/null
+++ b/doc/generated/examples/alias_ex1_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+Install file: "hello" as "/usr/bin/hello"
+</screen>
diff --git a/doc/generated/examples/alias_ex2_1.xml b/doc/generated/examples/alias_ex2_1.xml
new file mode 100644
index 0000000..e49ba93
--- /dev/null
+++ b/doc/generated/examples/alias_ex2_1.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install-bin</userinput>
+cc -o foo.o -c foo.c
+cc -o foo foo.o
+Install file: "foo" as "/usr/bin/foo"
+% <userinput>scons -Q install-lib</userinput>
+cc -o bar.o -c bar.c
+ar rc libbar.a bar.o
+ranlib libbar.a
+Install file: "libbar.a" as "/usr/lib/libbar.a"
+% <userinput>scons -Q -c /</userinput>
+Removed foo.o
+Removed foo
+Removed /usr/bin/foo
+Removed bar.o
+Removed libbar.a
+Removed /usr/lib/libbar.a
+% <userinput>scons -Q install</userinput>
+cc -o foo.o -c foo.c
+cc -o foo foo.o
+Install file: "foo" as "/usr/bin/foo"
+cc -o bar.o -c bar.c
+ar rc libbar.a bar.o
+ranlib libbar.a
+Install file: "libbar.a" as "/usr/lib/libbar.a"
+</screen>
diff --git a/doc/generated/examples/buildersbuiltin_ex1_1.xml b/doc/generated/examples/buildersbuiltin_ex1_1.xml
new file mode 100644
index 0000000..d3d4a8f
--- /dev/null
+++ b/doc/generated/examples/buildersbuiltin_ex1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+tar -c -f out1.tar file1 file2
+tar -c -f out2.tar directory
+</screen>
diff --git a/doc/generated/examples/buildersbuiltin_ex2_1.xml b/doc/generated/examples/buildersbuiltin_ex2_1.xml
new file mode 100644
index 0000000..4afbe11
--- /dev/null
+++ b/doc/generated/examples/buildersbuiltin_ex2_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+tar -c -z -f out.tar.gz directory
+</screen>
diff --git a/doc/generated/examples/buildersbuiltin_ex3_1.xml b/doc/generated/examples/buildersbuiltin_ex3_1.xml
new file mode 100644
index 0000000..0d2937c
--- /dev/null
+++ b/doc/generated/examples/buildersbuiltin_ex3_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+tar -c -z -f out.tgz directory
+</screen>
diff --git a/doc/generated/examples/buildersbuiltin_ex4_1.xml b/doc/generated/examples/buildersbuiltin_ex4_1.xml
new file mode 100644
index 0000000..e9a170d
--- /dev/null
+++ b/doc/generated/examples/buildersbuiltin_ex4_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+zip(["out.zip"], ["file1", "file2"])
+</screen>
diff --git a/doc/generated/examples/buildersbuiltin_libs_1.xml b/doc/generated/examples/buildersbuiltin_libs_1.xml
new file mode 100644
index 0000000..031e551
--- /dev/null
+++ b/doc/generated/examples/buildersbuiltin_libs_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o goodbye.o -c goodbye.c
+cc -o hello.o -c hello.c
+cc -o hello hello.o goodbye.o -L/usr/dir1 -Ldir2 -lfoo1 -lfoo2
+</screen>
diff --git a/doc/generated/examples/buildersbuiltin_libs_2.xml b/doc/generated/examples/buildersbuiltin_libs_2.xml
new file mode 100644
index 0000000..5c3c1ea
--- /dev/null
+++ b/doc/generated/examples/buildersbuiltin_libs_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fogoodbye.obj /c goodbye.c /nologo
+cl /Fohello.obj /c hello.c /nologo
+link /nologo /OUT:hello.exe /LIBPATH:\usr\dir1 /LIBPATH:dir2 foo1.lib foo2.lib hello.obj goodbye.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/builderscommands_ex1_1.xml b/doc/generated/examples/builderscommands_ex1_1.xml
new file mode 100644
index 0000000..32ab8b8
--- /dev/null
+++ b/doc/generated/examples/builderscommands_ex1_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+sed 's/x/y/' &lt; foo.in &gt; foo.out
+</screen>
diff --git a/doc/generated/examples/builderscommands_ex2_1.xml b/doc/generated/examples/builderscommands_ex2_1.xml
new file mode 100644
index 0000000..fbacb6c
--- /dev/null
+++ b/doc/generated/examples/builderscommands_ex2_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+build(["foo.out"], ["foo.in"])
+</screen>
diff --git a/doc/generated/examples/builderswriting_MY_EMITTER_1.xml b/doc/generated/examples/builderswriting_MY_EMITTER_1.xml
new file mode 100644
index 0000000..da454e8
--- /dev/null
+++ b/doc/generated/examples/builderswriting_MY_EMITTER_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+my_command file1.input modify1.in &gt; file1.foo
+my_command file2.input modify2.in &gt; file2.foo
+</screen>
diff --git a/doc/generated/examples/builderswriting_ex1_1.xml b/doc/generated/examples/builderswriting_ex1_1.xml
new file mode 100644
index 0000000..879bb91
--- /dev/null
+++ b/doc/generated/examples/builderswriting_ex1_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+foobuild &lt; file.input &gt; file.foo
+</screen>
diff --git a/doc/generated/examples/builderswriting_ex2_1.xml b/doc/generated/examples/builderswriting_ex2_1.xml
new file mode 100644
index 0000000..15f7a79
--- /dev/null
+++ b/doc/generated/examples/builderswriting_ex2_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+AttributeError: 'SConsEnvironment' object has no attribute 'Program':
+ File "/home/my/project/SConstruct", line 4:
+ env.Program('hello.c')
+</screen>
diff --git a/doc/generated/examples/builderswriting_ex3_1.xml b/doc/generated/examples/builderswriting_ex3_1.xml
new file mode 100644
index 0000000..b4e2cf7
--- /dev/null
+++ b/doc/generated/examples/builderswriting_ex3_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+foobuild &lt; file.input &gt; file.foo
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/builderswriting_ex4_1.xml b/doc/generated/examples/builderswriting_ex4_1.xml
new file mode 100644
index 0000000..87563c2
--- /dev/null
+++ b/doc/generated/examples/builderswriting_ex4_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+foobuild &lt; file1.input &gt; file1.foo
+foobuild &lt; file2.input &gt; file2.foo
+</screen>
diff --git a/doc/generated/examples/builderswriting_ex5_1.xml b/doc/generated/examples/builderswriting_ex5_1.xml
new file mode 100644
index 0000000..0131734
--- /dev/null
+++ b/doc/generated/examples/builderswriting_ex5_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+build_function(["file.foo"], ["file.input"])
+</screen>
diff --git a/doc/generated/examples/builderswriting_ex6_1.xml b/doc/generated/examples/builderswriting_ex6_1.xml
new file mode 100644
index 0000000..879bb91
--- /dev/null
+++ b/doc/generated/examples/builderswriting_ex6_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+foobuild &lt; file.input &gt; file.foo
+</screen>
diff --git a/doc/generated/examples/builderswriting_ex7_1.xml b/doc/generated/examples/builderswriting_ex7_1.xml
new file mode 100644
index 0000000..34ef7e1
--- /dev/null
+++ b/doc/generated/examples/builderswriting_ex7_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+foobuild file.foo new_target - file.input new_source
+</screen>
diff --git a/doc/generated/examples/caching_ex-random_1.xml b/doc/generated/examples/caching_ex-random_1.xml
new file mode 100644
index 0000000..c70dcb6
--- /dev/null
+++ b/doc/generated/examples/caching_ex-random_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f2.o -c f2.c
+cc -o f5.o -c f5.c
+cc -o f4.o -c f4.c
+cc -o f3.o -c f3.c
+cc -o f1.o -c f1.c
+cc -o prog f1.o f2.o f3.o f4.o f5.o
+</screen>
diff --git a/doc/generated/examples/caching_ex1_1.xml b/doc/generated/examples/caching_ex1_1.xml
new file mode 100644
index 0000000..93ce35d
--- /dev/null
+++ b/doc/generated/examples/caching_ex1_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q -c</userinput>
+Removed hello.o
+Removed hello
+% <userinput>scons -Q</userinput>
+Retrieved `hello.o' from cache
+Retrieved `hello' from cache
+</screen>
diff --git a/doc/generated/examples/caching_ex1_2.xml b/doc/generated/examples/caching_ex1_2.xml
new file mode 100644
index 0000000..e975cf5
--- /dev/null
+++ b/doc/generated/examples/caching_ex1_2.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q -c</userinput>
+Removed hello.o
+Removed hello
+% <userinput>scons -Q --cache-show</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/caching_ex1_4.xml b/doc/generated/examples/caching_ex1_4.xml
new file mode 100644
index 0000000..bca1d53
--- /dev/null
+++ b/doc/generated/examples/caching_ex1_4.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q -c</userinput>
+Removed hello.o
+Removed hello
+% <userinput>scons -Q</userinput>
+Retrieved `hello.o' from cache
+Retrieved `hello' from cache
+% <userinput>scons -Q -c</userinput>
+Removed hello.o
+Removed hello
+% <userinput>scons -Q --cache-disable</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/caching_ex1_5.xml b/doc/generated/examples/caching_ex1_5.xml
new file mode 100644
index 0000000..0d7d00c
--- /dev/null
+++ b/doc/generated/examples/caching_ex1_5.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --cache-disable</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q -c</userinput>
+Removed hello.o
+Removed hello
+% <userinput>scons -Q --cache-disable</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q --cache-force</userinput>
+scons: `.' is up to date.
+% <userinput>scons -Q</userinput>
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/commandline_ARGLIST_1.xml b/doc/generated/examples/commandline_ARGLIST_1.xml
new file mode 100644
index 0000000..071b8a1
--- /dev/null
+++ b/doc/generated/examples/commandline_ARGLIST_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q define=FOO</userinput>
+cc -o prog.o -c -DFOO prog.c
+% <userinput>scons -Q define=FOO define=BAR</userinput>
+cc -o prog.o -c -DFOO -DBAR prog.c
+</screen>
diff --git a/doc/generated/examples/commandline_ARGUMENTS_1.xml b/doc/generated/examples/commandline_ARGUMENTS_1.xml
new file mode 100644
index 0000000..710fa57
--- /dev/null
+++ b/doc/generated/examples/commandline_ARGUMENTS_1.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q debug=0</userinput>
+cc -o prog.o -c prog.c
+cc -o prog prog.o
+% <userinput>scons -Q debug=0</userinput>
+scons: `.' is up to date.
+% <userinput>scons -Q debug=1</userinput>
+cc -o prog.o -c -g prog.c
+cc -o prog prog.o
+% <userinput>scons -Q debug=1</userinput>
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/commandline_AddOption_1.xml b/doc/generated/examples/commandline_AddOption_1.xml
new file mode 100644
index 0000000..302f247
--- /dev/null
+++ b/doc/generated/examples/commandline_AddOption_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -n</userinput>
+Install file: "foo.in" as "/usr/bin/foo.in"
+</screen>
diff --git a/doc/generated/examples/commandline_AddOption_2.xml b/doc/generated/examples/commandline_AddOption_2.xml
new file mode 100644
index 0000000..640fb4e
--- /dev/null
+++ b/doc/generated/examples/commandline_AddOption_2.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -n --prefix=/tmp/install</userinput>
+Install file: "foo.in" as "/tmp/install/usr/bin/foo.in"
+</screen>
diff --git a/doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml b/doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml
new file mode 100644
index 0000000..ac2674f
--- /dev/null
+++ b/doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+BUILD_TARGETS is ['prog1']
+cc -o prog1.o -c prog1.c
+cc -o prog1 prog1.o
+% <userinput>scons -Q prog2</userinput>
+BUILD_TARGETS is ['prog2']
+cc -o prog2.o -c prog2.c
+cc -o prog2 prog2.o
+% <userinput>scons -Q -c .</userinput>
+BUILD_TARGETS is ['.']
+Removed prog1.o
+Removed prog1
+Removed prog2.o
+Removed prog2
+</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_1.xml b/doc/generated/examples/commandline_BoolVariable_1.xml
new file mode 100644
index 0000000..2c17325
--- /dev/null
+++ b/doc/generated/examples/commandline_BoolVariable_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=yes foo.o</userinput>
+cc -o foo.o -c -DRELEASE_BUILD=True foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_2.xml b/doc/generated/examples/commandline_BoolVariable_2.xml
new file mode 100644
index 0000000..86bb6d9
--- /dev/null
+++ b/doc/generated/examples/commandline_BoolVariable_2.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=t foo.o</userinput>
+cc -o foo.o -c -DRELEASE_BUILD=True foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_3.xml b/doc/generated/examples/commandline_BoolVariable_3.xml
new file mode 100644
index 0000000..f85dd56
--- /dev/null
+++ b/doc/generated/examples/commandline_BoolVariable_3.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=no foo.o</userinput>
+cc -o foo.o -c -DRELEASE_BUILD=False foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_4.xml b/doc/generated/examples/commandline_BoolVariable_4.xml
new file mode 100644
index 0000000..2a7cb5f
--- /dev/null
+++ b/doc/generated/examples/commandline_BoolVariable_4.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=f foo.o</userinput>
+cc -o foo.o -c -DRELEASE_BUILD=False foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_5.xml b/doc/generated/examples/commandline_BoolVariable_5.xml
new file mode 100644
index 0000000..387f5ca
--- /dev/null
+++ b/doc/generated/examples/commandline_BoolVariable_5.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=bad_value foo.o</userinput>
+
+scons: *** Error converting option: RELEASE
+Invalid value for boolean option: bad_value
+File "/home/my/project/SConstruct", line 4, in &lt;module&gt;
+</screen>
diff --git a/doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml b/doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml
new file mode 100644
index 0000000..646635e
--- /dev/null
+++ b/doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o foo.o -c foo.c
+cc -o foo foo.o
+% <userinput>scons -Q bar</userinput>
+Don't forget to copy `bar' to the archive!
+cc -o bar.o -c bar.c
+cc -o bar bar.o
+</screen>
diff --git a/doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml b/doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml
new file mode 100644
index 0000000..69a30cb
--- /dev/null
+++ b/doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+DEFAULT_TARGETS is ['prog1']
+scons: done reading SConscript files.
+scons: Building targets ...
+cc -o prog1.o -c prog1.c
+cc -o prog1 prog1.o
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml b/doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml
new file mode 100644
index 0000000..1fd1bc7
--- /dev/null
+++ b/doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+DEFAULT_TARGETS is now ['prog1']
+DEFAULT_TARGETS is now ['prog1', 'prog2']
+scons: done reading SConscript files.
+scons: Building targets ...
+cc -o prog1.o -c prog1.c
+cc -o prog1 prog1.o
+cc -o prog2.o -c prog2.c
+cc -o prog2 prog2.o
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/commandline_Default1_1.xml b/doc/generated/examples/commandline_Default1_1.xml
new file mode 100644
index 0000000..edc1812
--- /dev/null
+++ b/doc/generated/examples/commandline_Default1_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q</userinput>
+scons: `hello' is up to date.
+% <userinput>scons -Q goodbye</userinput>
+cc -o goodbye.o -c goodbye.c
+cc -o goodbye goodbye.o
+</screen>
diff --git a/doc/generated/examples/commandline_Default1_2.xml b/doc/generated/examples/commandline_Default1_2.xml
new file mode 100644
index 0000000..cb5907d
--- /dev/null
+++ b/doc/generated/examples/commandline_Default1_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+cc -o goodbye.o -c goodbye.c
+cc -o goodbye goodbye.o
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/commandline_Default2_1.xml b/doc/generated/examples/commandline_Default2_1.xml
new file mode 100644
index 0000000..1cf267a
--- /dev/null
+++ b/doc/generated/examples/commandline_Default2_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o prog1.o -c prog1.c
+cc -o prog1 prog1.o
+cc -o prog3.o -c prog3.c
+cc -o prog3 prog3.o
+% <userinput>scons -Q .</userinput>
+cc -o prog2.o -c prog2.c
+cc -o prog2 prog2.o
+</screen>
diff --git a/doc/generated/examples/commandline_Default3_1.xml b/doc/generated/examples/commandline_Default3_1.xml
new file mode 100644
index 0000000..5409437
--- /dev/null
+++ b/doc/generated/examples/commandline_Default3_1.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o prog1/foo.o -c prog1/foo.c
+cc -o prog1/main.o -c prog1/main.c
+cc -o prog1/main prog1/main.o prog1/foo.o
+% <userinput>scons -Q</userinput>
+scons: `prog1' is up to date.
+% <userinput>scons -Q .</userinput>
+cc -o prog2/bar.o -c prog2/bar.c
+cc -o prog2/main.o -c prog2/main.c
+cc -o prog2/main prog2/main.o prog2/bar.o
+</screen>
diff --git a/doc/generated/examples/commandline_Default4_1.xml b/doc/generated/examples/commandline_Default4_1.xml
new file mode 100644
index 0000000..81acde4
--- /dev/null
+++ b/doc/generated/examples/commandline_Default4_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+scons: *** No targets specified and no Default() targets found. Stop.
+% <userinput>scons -Q .</userinput>
+cc -o prog1.o -c prog1.c
+cc -o prog1 prog1.o
+cc -o prog2.o -c prog2.c
+cc -o prog2 prog2.o
+</screen>
diff --git a/doc/generated/examples/commandline_EnumVariable_1.xml b/doc/generated/examples/commandline_EnumVariable_1.xml
new file mode 100644
index 0000000..d1d4bed
--- /dev/null
+++ b/doc/generated/examples/commandline_EnumVariable_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=red foo.o</userinput>
+cc -o foo.o -c -DCOLOR="red" foo.c
+% <userinput>scons -Q COLOR=blue foo.o</userinput>
+cc -o foo.o -c -DCOLOR="blue" foo.c
+% <userinput>scons -Q COLOR=green foo.o</userinput>
+cc -o foo.o -c -DCOLOR="green" foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_EnumVariable_2.xml b/doc/generated/examples/commandline_EnumVariable_2.xml
new file mode 100644
index 0000000..e3310ae
--- /dev/null
+++ b/doc/generated/examples/commandline_EnumVariable_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=magenta foo.o</userinput>
+
+scons: *** Invalid value for option COLOR: magenta. Valid values are: ('red', 'green', 'blue')
+File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+</screen>
diff --git a/doc/generated/examples/commandline_EnumVariable_3.xml b/doc/generated/examples/commandline_EnumVariable_3.xml
new file mode 100644
index 0000000..a3928dc
--- /dev/null
+++ b/doc/generated/examples/commandline_EnumVariable_3.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
+
+scons: *** Invalid value for option COLOR: Red. Valid values are: ('red', 'green', 'blue')
+File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+% <userinput>scons -Q COLOR=BLUE foo.o</userinput>
+
+scons: *** Invalid value for option COLOR: BLUE. Valid values are: ('red', 'green', 'blue')
+File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+% <userinput>scons -Q COLOR=nAvY foo.o</userinput>
+
+scons: *** Invalid value for option COLOR: nAvY. Valid values are: ('red', 'green', 'blue')
+File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+</screen>
diff --git a/doc/generated/examples/commandline_EnumVariable_ic1_1.xml b/doc/generated/examples/commandline_EnumVariable_ic1_1.xml
new file mode 100644
index 0000000..4e2a45a
--- /dev/null
+++ b/doc/generated/examples/commandline_EnumVariable_ic1_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
+cc -o foo.o -c -DCOLOR="Red" foo.c
+% <userinput>scons -Q COLOR=BLUE foo.o</userinput>
+cc -o foo.o -c -DCOLOR="BLUE" foo.c
+% <userinput>scons -Q COLOR=nAvY foo.o</userinput>
+cc -o foo.o -c -DCOLOR="blue" foo.c
+% <userinput>scons -Q COLOR=green foo.o</userinput>
+cc -o foo.o -c -DCOLOR="green" foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_EnumVariable_ic2_1.xml b/doc/generated/examples/commandline_EnumVariable_ic2_1.xml
new file mode 100644
index 0000000..407419a
--- /dev/null
+++ b/doc/generated/examples/commandline_EnumVariable_ic2_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
+cc -o foo.o -c -DCOLOR="red" foo.c
+% <userinput>scons -Q COLOR=nAvY foo.o</userinput>
+cc -o foo.o -c -DCOLOR="blue" foo.c
+% <userinput>scons -Q COLOR=GREEN foo.o</userinput>
+cc -o foo.o -c -DCOLOR="green" foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_ListVariable_1.xml b/doc/generated/examples/commandline_ListVariable_1.xml
new file mode 100644
index 0000000..48adb7d
--- /dev/null
+++ b/doc/generated/examples/commandline_ListVariable_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLORS=red,blue foo.o</userinput>
+cc -o foo.o -c -DCOLORS="red blue" foo.c
+% <userinput>scons -Q COLORS=blue,green,red foo.o</userinput>
+cc -o foo.o -c -DCOLORS="blue green red" foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_ListVariable_2.xml b/doc/generated/examples/commandline_ListVariable_2.xml
new file mode 100644
index 0000000..67f3361
--- /dev/null
+++ b/doc/generated/examples/commandline_ListVariable_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLORS=all foo.o</userinput>
+cc -o foo.o -c -DCOLORS="red green blue" foo.c
+% <userinput>scons -Q COLORS=none foo.o</userinput>
+cc -o foo.o -c -DCOLORS="" foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_ListVariable_3.xml b/doc/generated/examples/commandline_ListVariable_3.xml
new file mode 100644
index 0000000..f03f4fe
--- /dev/null
+++ b/doc/generated/examples/commandline_ListVariable_3.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLORS=magenta foo.o</userinput>
+
+scons: *** Error converting option: COLORS
+Invalid value(s) for option: magenta
+File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+</screen>
diff --git a/doc/generated/examples/commandline_PackageVariable_1.xml b/doc/generated/examples/commandline_PackageVariable_1.xml
new file mode 100644
index 0000000..03de914
--- /dev/null
+++ b/doc/generated/examples/commandline_PackageVariable_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q foo.o</userinput>
+cc -o foo.o -c -DPACKAGE="/opt/location" foo.c
+% <userinput>scons -Q PACKAGE=/usr/local/location foo.o</userinput>
+cc -o foo.o -c -DPACKAGE="/usr/local/location" foo.c
+% <userinput>scons -Q PACKAGE=yes foo.o</userinput>
+cc -o foo.o -c -DPACKAGE="True" foo.c
+% <userinput>scons -Q PACKAGE=no foo.o</userinput>
+cc -o foo.o -c -DPACKAGE="False" foo.c
+</screen>
diff --git a/doc/generated/examples/commandline_PathVariable_1.xml b/doc/generated/examples/commandline_PathVariable_1.xml
new file mode 100644
index 0000000..f80a299
--- /dev/null
+++ b/doc/generated/examples/commandline_PathVariable_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q foo.o</userinput>
+cc -o foo.o -c -DCONFIG_FILE="/etc/my_config" foo.c
+% <userinput>scons -Q CONFIG=/usr/local/etc/other_config foo.o</userinput>
+scons: `foo.o' is up to date.
+</screen>
diff --git a/doc/generated/examples/commandline_PathVariable_2.xml b/doc/generated/examples/commandline_PathVariable_2.xml
new file mode 100644
index 0000000..e24f8f2
--- /dev/null
+++ b/doc/generated/examples/commandline_PathVariable_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q CONFIG=/does/not/exist foo.o</userinput>
+
+scons: *** Path for option CONFIG does not exist: /does/not/exist
+File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
+</screen>
diff --git a/doc/generated/examples/commandline_SCONSFLAGS_1.xml b/doc/generated/examples/commandline_SCONSFLAGS_1.xml
new file mode 100644
index 0000000..4261677
--- /dev/null
+++ b/doc/generated/examples/commandline_SCONSFLAGS_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+ ... [build output] ...
+scons: done building targets.
+% <userinput>export SCONSFLAGS="-Q"</userinput>
+% <userinput>scons</userinput>
+ ... [build output] ...
+</screen>
diff --git a/doc/generated/examples/commandline_SetOption_1.xml b/doc/generated/examples/commandline_SetOption_1.xml
new file mode 100644
index 0000000..c3b878e
--- /dev/null
+++ b/doc/generated/examples/commandline_SetOption_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+running with -j 2
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/commandline_SetOption_2.xml b/doc/generated/examples/commandline_SetOption_2.xml
new file mode 100644
index 0000000..d7bbf30
--- /dev/null
+++ b/doc/generated/examples/commandline_SetOption_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>export NUM_CPU="4"</userinput>
+% <userinput>scons -Q</userinput>
+running with -j 4
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/commandline_SetOption_3.xml b/doc/generated/examples/commandline_SetOption_3.xml
new file mode 100644
index 0000000..f4ca2f1
--- /dev/null
+++ b/doc/generated/examples/commandline_SetOption_3.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -j 7</userinput>
+running with -j 7
+scons: `.' is up to date.
+% <userinput>export NUM_CPU="4"</userinput>
+% <userinput>scons -Q -j 3</userinput>
+running with -j 3
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/commandline_UnknownVariables_1.xml b/doc/generated/examples/commandline_UnknownVariables_1.xml
new file mode 100644
index 0000000..c6880d6
--- /dev/null
+++ b/doc/generated/examples/commandline_UnknownVariables_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q NOT_KNOWN=foo</userinput>
+Unknown variables: ['NOT_KNOWN']
+</screen>
diff --git a/doc/generated/examples/commandline_Variables1_1.xml b/doc/generated/examples/commandline_Variables1_1.xml
new file mode 100644
index 0000000..22754a3
--- /dev/null
+++ b/doc/generated/examples/commandline_Variables1_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=1</userinput>
+cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
+cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
+cc -o foo foo.o bar.o
+</screen>
diff --git a/doc/generated/examples/commandline_Variables_Help_1.xml b/doc/generated/examples/commandline_Variables_Help_1.xml
new file mode 100644
index 0000000..0134479
--- /dev/null
+++ b/doc/generated/examples/commandline_Variables_Help_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -h</userinput>
+
+RELEASE: Set to 1 to build for release
+ default: 0
+ actual: 0
+
+Use scons -H for help about command-line options.
+</screen>
diff --git a/doc/generated/examples/commandline_Variables_custom_py_1_1.xml b/doc/generated/examples/commandline_Variables_custom_py_1_1.xml
new file mode 100644
index 0000000..77d3564
--- /dev/null
+++ b/doc/generated/examples/commandline_Variables_custom_py_1_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
+cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
+cc -o foo foo.o bar.o
+</screen>
diff --git a/doc/generated/examples/commandline_Variables_custom_py_1_custom.py b/doc/generated/examples/commandline_Variables_custom_py_1_custom.py
new file mode 100644
index 0000000..ff314fa
--- /dev/null
+++ b/doc/generated/examples/commandline_Variables_custom_py_1_custom.py
@@ -0,0 +1,3 @@
+
+RELEASE = 1
+
diff --git a/doc/generated/examples/commandline_Variables_custom_py_2_1.xml b/doc/generated/examples/commandline_Variables_custom_py_2_1.xml
new file mode 100644
index 0000000..7ab5d74
--- /dev/null
+++ b/doc/generated/examples/commandline_Variables_custom_py_2_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o bar.o -c -DRELEASE_BUILD=0 bar.c
+cc -o foo.o -c -DRELEASE_BUILD=0 foo.c
+cc -o foo foo.o bar.o
+</screen>
diff --git a/doc/generated/examples/depends_AlwaysBuild_1.xml b/doc/generated/examples/depends_AlwaysBuild_1.xml
new file mode 100644
index 0000000..534c297
--- /dev/null
+++ b/doc/generated/examples/depends_AlwaysBuild_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q</userinput>
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/depends_AlwaysBuild_2.xml b/doc/generated/examples/depends_AlwaysBuild_2.xml
new file mode 100644
index 0000000..9a7325f
--- /dev/null
+++ b/doc/generated/examples/depends_AlwaysBuild_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello.o</userinput>
+scons: `hello.o' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_Requires_1.xml b/doc/generated/examples/depends_Requires_1.xml
new file mode 100644
index 0000000..50b2f56
--- /dev/null
+++ b/doc/generated/examples/depends_Requires_1.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o version.o -c version.c
+cc -o hello.o -c hello.c
+cc -o hello version.o hello.o
+% <userinput>sleep 1</userinput>
+% <userinput>scons -Q hello</userinput>
+cc -o version.o -c version.c
+scons: `hello' is up to date.
+% <userinput>sleep 1</userinput>
+% [CHANGE THE CONTENTS OF hello.c]
+% <userinput>scons -Q hello</userinput>
+cc -o version.o -c version.c
+cc -o hello.o -c hello.c
+cc -o hello version.o hello.o
+% <userinput>sleep 1</userinput>
+% <userinput>scons -Q hello</userinput>
+cc -o version.o -c version.c
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex1_1.xml b/doc/generated/examples/depends_ex1_1.xml
new file mode 100644
index 0000000..f9b35dd
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q</userinput>
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex1_2.xml b/doc/generated/examples/depends_ex1_2.xml
new file mode 100644
index 0000000..254f641
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex1_3.xml b/doc/generated/examples/depends_ex1_3.xml
new file mode 100644
index 0000000..a4cf4e3
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_3.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>touch hello.c</userinput>
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex1_4.xml b/doc/generated/examples/depends_ex1_4.xml
new file mode 100644
index 0000000..7e1f860
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_4.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% [CHANGE THE CONTENTS OF hello.c]
+% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/depends_ex1_5.xml b/doc/generated/examples/depends_ex1_5.xml
new file mode 100644
index 0000000..abbe64e
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_5.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% [CHANGE A COMMENT IN hello.c]
+% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex1_6.xml b/doc/generated/examples/depends_ex1_6.xml
new file mode 100644
index 0000000..75e1f80
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_6.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --implicit-cache hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex1_7.xml b/doc/generated/examples/depends_ex1_7.xml
new file mode 100644
index 0000000..2b7e30a
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_7.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --implicit-deps-changed hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex1_8.xml b/doc/generated/examples/depends_ex1_8.xml
new file mode 100644
index 0000000..957707d
--- /dev/null
+++ b/doc/generated/examples/depends_ex1_8.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --implicit-deps-unchanged hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_ex5_1.xml b/doc/generated/examples/depends_ex5_1.xml
new file mode 100644
index 0000000..2d1f868
--- /dev/null
+++ b/doc/generated/examples/depends_ex5_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c -Iinclude -I/home/project/inc hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/depends_ex5_2.xml b/doc/generated/examples/depends_ex5_2.xml
new file mode 100644
index 0000000..57da64f
--- /dev/null
+++ b/doc/generated/examples/depends_ex5_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q hello.exe</userinput>
+cl /Fohello.obj /c hello.c /nologo /Iinclude /I\home\project\inc
+link /nologo /OUT:hello.exe hello.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/depends_ignore_explicit_1.xml b/doc/generated/examples/depends_ignore_explicit_1.xml
new file mode 100644
index 0000000..2607131
--- /dev/null
+++ b/doc/generated/examples/depends_ignore_explicit_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+scons: `.' is up to date.
+% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_include_1.xml b/doc/generated/examples/depends_include_1.xml
new file mode 100644
index 0000000..6f63e9a
--- /dev/null
+++ b/doc/generated/examples/depends_include_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c -I. hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+% [CHANGE THE CONTENTS OF hello.h]
+% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c -I. hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/depends_include_SConstruct b/doc/generated/examples/depends_include_SConstruct
new file mode 100644
index 0000000..2da2ecf
--- /dev/null
+++ b/doc/generated/examples/depends_include_SConstruct
@@ -0,0 +1,3 @@
+
+Program('hello.c', CPPPATH = '.')
+
diff --git a/doc/generated/examples/depends_include_hello.h b/doc/generated/examples/depends_include_hello.h
new file mode 100644
index 0000000..d6032ce
--- /dev/null
+++ b/doc/generated/examples/depends_include_hello.h
@@ -0,0 +1,3 @@
+
+#define string "world"
+
diff --git a/doc/generated/examples/depends_macroinc_1.xml b/doc/generated/examples/depends_macroinc_1.xml
new file mode 100644
index 0000000..8f211cc
--- /dev/null
+++ b/doc/generated/examples/depends_macroinc_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c -I. hello.c
+cc -o hello hello.o
+% [CHANGE CONTENTS OF foo.h]
+% <userinput>scons -Q</userinput>
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/depends_match_1.xml b/doc/generated/examples/depends_match_1.xml
new file mode 100644
index 0000000..c024b2a
--- /dev/null
+++ b/doc/generated/examples/depends_match_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello.o</userinput>
+cc -o hello.o -c hello.c
+% <userinput>touch -t 198901010000 hello.c</userinput>
+% <userinput>scons -Q hello.o</userinput>
+cc -o hello.o -c hello.c
+</screen>
diff --git a/doc/generated/examples/depends_mixing_1.xml b/doc/generated/examples/depends_mixing_1.xml
new file mode 100644
index 0000000..10152b2
--- /dev/null
+++ b/doc/generated/examples/depends_mixing_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o program1.o -c -I. program1.c
+cc -o prog-MD5 program1.o
+cc -o program2.o -c -I. program2.c
+cc -o prog-timestamp program2.o
+% <userinput>touch inc.h</userinput>
+% <userinput>scons -Q</userinput>
+cc -o program2.o -c -I. program2.c
+cc -o prog-timestamp program2.o
+</screen>
diff --git a/doc/generated/examples/depends_newer_1.xml b/doc/generated/examples/depends_newer_1.xml
new file mode 100644
index 0000000..9f13c31
--- /dev/null
+++ b/doc/generated/examples/depends_newer_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello.o</userinput>
+cc -o hello.o -c hello.c
+% <userinput>touch hello.c</userinput>
+% <userinput>scons -Q hello.o</userinput>
+cc -o hello.o -c hello.c
+</screen>
diff --git a/doc/generated/examples/depends_no-Requires_1.xml b/doc/generated/examples/depends_no-Requires_1.xml
new file mode 100644
index 0000000..5e9bb00
--- /dev/null
+++ b/doc/generated/examples/depends_no-Requires_1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o version.o -c version.c
+cc -o hello hello.o version.o
+% <userinput>sleep 1</userinput>
+% <userinput>scons -Q hello</userinput>
+cc -o version.o -c version.c
+cc -o hello hello.o version.o
+% <userinput>sleep 1</userinput>
+% <userinput>scons -Q hello</userinput>
+cc -o version.o -c version.c
+cc -o hello hello.o version.o
+</screen>
diff --git a/doc/generated/examples/depends_parsedep_1.xml b/doc/generated/examples/depends_parsedep_1.xml
new file mode 100644
index 0000000..585e89c
--- /dev/null
+++ b/doc/generated/examples/depends_parsedep_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c -MD -MF hello.d -I. hello.c
+cc -o hello hello.o
+% [CHANGE CONTENTS OF foo.h]
+% <userinput>scons -Q</userinput>
+cc -o hello.o -c -MD -MF hello.d -I. hello.c
+</screen>
diff --git a/doc/generated/examples/environments_Append-nonexistent_1.xml b/doc/generated/examples/environments_Append-nonexistent_1.xml
new file mode 100644
index 0000000..6597dd4
--- /dev/null
+++ b/doc/generated/examples/environments_Append-nonexistent_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+NEW_VARIABLE = added
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/environments_Prepend-nonexistent_1.xml b/doc/generated/examples/environments_Prepend-nonexistent_1.xml
new file mode 100644
index 0000000..6597dd4
--- /dev/null
+++ b/doc/generated/examples/environments_Prepend-nonexistent_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+NEW_VARIABLE = added
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/environments_Replace-nonexistent_1.xml b/doc/generated/examples/environments_Replace-nonexistent_1.xml
new file mode 100644
index 0000000..eb8b95c
--- /dev/null
+++ b/doc/generated/examples/environments_Replace-nonexistent_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+NEW_VARIABLE = xyzzy
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/environments_Replace1_1.xml b/doc/generated/examples/environments_Replace1_1.xml
new file mode 100644
index 0000000..372d6ae
--- /dev/null
+++ b/doc/generated/examples/environments_Replace1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o foo.o -c -DDEFINE2 foo.c
+cc -o foo foo.o
+</screen>
diff --git a/doc/generated/examples/environments_Replace2_1.xml b/doc/generated/examples/environments_Replace2_1.xml
new file mode 100644
index 0000000..fe949ef
--- /dev/null
+++ b/doc/generated/examples/environments_Replace2_1.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+CCFLAGS = -DDEFINE1
+CCFLAGS = -DDEFINE2
+scons: done reading SConscript files.
+scons: Building targets ...
+cc -o bar.o -c -DDEFINE2 bar.c
+cc -o bar bar.o
+cc -o foo.o -c -DDEFINE2 foo.c
+cc -o foo foo.o
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/environments_ex1_1.xml b/doc/generated/examples/environments_ex1_1.xml
new file mode 100644
index 0000000..28bc8ca
--- /dev/null
+++ b/doc/generated/examples/environments_ex1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+gcc -o foo.o -c -O2 foo.c
+gcc -o foo foo.o
+</screen>
diff --git a/doc/generated/examples/environments_ex2_1.xml b/doc/generated/examples/environments_ex2_1.xml
new file mode 100644
index 0000000..248cd28
--- /dev/null
+++ b/doc/generated/examples/environments_ex2_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o bar.o -c -g bar.c
+cc -o bar bar.o
+cc -o foo.o -c -O2 foo.c
+cc -o foo foo.o
+</screen>
diff --git a/doc/generated/examples/environments_ex3_1.xml b/doc/generated/examples/environments_ex3_1.xml
new file mode 100644
index 0000000..1c2d620
--- /dev/null
+++ b/doc/generated/examples/environments_ex3_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+
+scons: *** Two environments with different actions were specified for the same target: foo.o
+File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
+</screen>
diff --git a/doc/generated/examples/environments_ex4_1.xml b/doc/generated/examples/environments_ex4_1.xml
new file mode 100644
index 0000000..69ac649
--- /dev/null
+++ b/doc/generated/examples/environments_ex4_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o foo-dbg.o -c -g foo.c
+cc -o foo-dbg foo-dbg.o
+cc -o foo-opt.o -c -O2 foo.c
+cc -o foo-opt foo-opt.o
+</screen>
diff --git a/doc/generated/examples/environments_ex5_1.xml b/doc/generated/examples/environments_ex5_1.xml
new file mode 100644
index 0000000..d50f349
--- /dev/null
+++ b/doc/generated/examples/environments_ex5_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+gcc -o foo.o -c foo.c
+gcc -o foo foo.o
+gcc -o foo-dbg.o -c -g foo.c
+gcc -o foo-dbg foo-dbg.o
+gcc -o foo-opt.o -c -O2 foo.c
+gcc -o foo-opt foo-opt.o
+</screen>
diff --git a/doc/generated/examples/environments_ex6_1.xml b/doc/generated/examples/environments_ex6_1.xml
new file mode 100644
index 0000000..bef56a3
--- /dev/null
+++ b/doc/generated/examples/environments_ex6_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+CC is: cc
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/environments_ex6b_1.xml b/doc/generated/examples/environments_ex6b_1.xml
new file mode 100644
index 0000000..dbcc502
--- /dev/null
+++ b/doc/generated/examples/environments_ex6b_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+key = OBJSUFFIX, value = .o
+key = LIBSUFFIX, value = .a
+key = PROGSUFFIX, value =
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/environments_ex6b_2.xml b/doc/generated/examples/environments_ex6b_2.xml
new file mode 100644
index 0000000..f6fb554
--- /dev/null
+++ b/doc/generated/examples/environments_ex6b_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+key = OBJSUFFIX, value = .obj
+key = LIBSUFFIX, value = .lib
+key = PROGSUFFIX, value = .exe
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/environments_ex8_1.xml b/doc/generated/examples/environments_ex8_1.xml
new file mode 100644
index 0000000..1749195
--- /dev/null
+++ b/doc/generated/examples/environments_ex8_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o foo.o -c -DMY_VALUE -DLAST foo.c
+cc -o foo foo.o
+</screen>
diff --git a/doc/generated/examples/environments_ex9_1.xml b/doc/generated/examples/environments_ex9_1.xml
new file mode 100644
index 0000000..aebefcc
--- /dev/null
+++ b/doc/generated/examples/environments_ex9_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o foo.o -c -DFIRST -DMY_VALUE foo.c
+cc -o foo foo.o
+</screen>
diff --git a/doc/generated/examples/environments_missing1_1.xml b/doc/generated/examples/environments_missing1_1.xml
new file mode 100644
index 0000000..d58b27b
--- /dev/null
+++ b/doc/generated/examples/environments_missing1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+value is: -&gt;&lt;-
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/environments_missing2_1.xml b/doc/generated/examples/environments_missing2_1.xml
new file mode 100644
index 0000000..911ecd2
--- /dev/null
+++ b/doc/generated/examples/environments_missing2_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+value is:
+scons: *** NameError `MISSING' trying to evaluate `$MISSING'
+File "/home/my/project/SConstruct", line 3, in &lt;module&gt;
+</screen>
diff --git a/doc/generated/examples/environments_missing3_1.xml b/doc/generated/examples/environments_missing3_1.xml
new file mode 100644
index 0000000..d58b27b
--- /dev/null
+++ b/doc/generated/examples/environments_missing3_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+value is: -&gt;&lt;-
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/factories_Chmod_1.xml b/doc/generated/examples/factories_Chmod_1.xml
new file mode 100644
index 0000000..59bccf5
--- /dev/null
+++ b/doc/generated/examples/factories_Chmod_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Copy("file.out", "file.in")
+Chmod("file.out", 0755)
+</screen>
diff --git a/doc/generated/examples/factories_Copy1_1.xml b/doc/generated/examples/factories_Copy1_1.xml
new file mode 100644
index 0000000..c0be7f8
--- /dev/null
+++ b/doc/generated/examples/factories_Copy1_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Copy("file.out", "file.in")
+</screen>
diff --git a/doc/generated/examples/factories_Copy2_1.xml b/doc/generated/examples/factories_Copy2_1.xml
new file mode 100644
index 0000000..c0be7f8
--- /dev/null
+++ b/doc/generated/examples/factories_Copy2_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Copy("file.out", "file.in")
+</screen>
diff --git a/doc/generated/examples/factories_Copy3_1.xml b/doc/generated/examples/factories_Copy3_1.xml
new file mode 100644
index 0000000..20702c8
--- /dev/null
+++ b/doc/generated/examples/factories_Copy3_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Copy("tempfile", "file.in")
+modify tempfile
+Copy("file.out", "tempfile")
+</screen>
diff --git a/doc/generated/examples/factories_Delete1_1.xml b/doc/generated/examples/factories_Delete1_1.xml
new file mode 100644
index 0000000..5cfde55
--- /dev/null
+++ b/doc/generated/examples/factories_Delete1_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Delete("tempfile")
+Copy("tempfile", "file.in")
+modify tempfile
+Copy("file.out", "tempfile")
+</screen>
diff --git a/doc/generated/examples/factories_Delete2_1.xml b/doc/generated/examples/factories_Delete2_1.xml
new file mode 100644
index 0000000..3bdb3f1
--- /dev/null
+++ b/doc/generated/examples/factories_Delete2_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Delete("file.out")
+Copy("file.out", "file.in")
+</screen>
diff --git a/doc/generated/examples/factories_Execute_1.xml b/doc/generated/examples/factories_Execute_1.xml
new file mode 100644
index 0000000..1956439
--- /dev/null
+++ b/doc/generated/examples/factories_Execute_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+Mkdir("/tmp/my_temp_directory")
+scons: done reading SConscript files.
+scons: Building targets ...
+scons: `.' is up to date.
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/factories_Mkdir_1.xml b/doc/generated/examples/factories_Mkdir_1.xml
new file mode 100644
index 0000000..ae58dac
--- /dev/null
+++ b/doc/generated/examples/factories_Mkdir_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Delete("tempdir")
+Mkdir("tempdir")
+Copy("tempdir/file.in", "file.in")
+process tempdir
+Move("file.out", "tempdir/output_file")
+scons: *** [file.out] tempdir/output_file: No such file or directory
+</screen>
diff --git a/doc/generated/examples/factories_Move_1.xml b/doc/generated/examples/factories_Move_1.xml
new file mode 100644
index 0000000..2bd008d
--- /dev/null
+++ b/doc/generated/examples/factories_Move_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Copy("tempfile", "file.in")
+modify tempfile
+Move("file.out", "tempfile")
+</screen>
diff --git a/doc/generated/examples/factories_Touch_1.xml b/doc/generated/examples/factories_Touch_1.xml
new file mode 100644
index 0000000..aacde9e
--- /dev/null
+++ b/doc/generated/examples/factories_Touch_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Copy("file.out", "file.in")
+Touch("file.out")
+</screen>
diff --git a/doc/generated/examples/fileremoval_clean-ex1_1.xml b/doc/generated/examples/fileremoval_clean-ex1_1.xml
new file mode 100644
index 0000000..bb09707
--- /dev/null
+++ b/doc/generated/examples/fileremoval_clean-ex1_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+build -o foo.out foo.in
+% <userinput>scons -Q -c</userinput>
+Removed foo.out
+Removed foo.log
+</screen>
diff --git a/doc/generated/examples/fileremoval_noclean-ex1_1.xml b/doc/generated/examples/fileremoval_noclean-ex1_1.xml
new file mode 100644
index 0000000..ab36c3f
--- /dev/null
+++ b/doc/generated/examples/fileremoval_noclean-ex1_1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f1.o -c f1.c
+cc -o f2.o -c f2.c
+cc -o f3.o -c f3.c
+ar rc libfoo.a f1.o f2.o f3.o
+% <userinput>scons -c</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Cleaning targets ...
+Removed f1.o
+Removed f2.o
+Removed f3.o
+scons: done cleaning targets.
+</screen>
diff --git a/doc/generated/examples/fileremoval_precious-ex1_1.xml b/doc/generated/examples/fileremoval_precious-ex1_1.xml
new file mode 100644
index 0000000..e8227e6
--- /dev/null
+++ b/doc/generated/examples/fileremoval_precious-ex1_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f1.o -c f1.c
+cc -o f2.o -c f2.c
+cc -o f3.o -c f3.c
+ar rc libfoo.a f1.o f2.o f3.o
+</screen>
diff --git a/doc/generated/examples/hierarchy_Return_1.xml b/doc/generated/examples/hierarchy_Return_1.xml
new file mode 100644
index 0000000..64b981a
--- /dev/null
+++ b/doc/generated/examples/hierarchy_Return_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o bar/bar.o -c bar/bar.c
+cc -o foo/foo.o -c foo/foo.c
+ar rc libprog.a foo/foo.o bar/bar.o
+ranlib libprog.a
+</screen>
diff --git a/doc/generated/examples/hierarchy_Return_foo_SConscript b/doc/generated/examples/hierarchy_Return_foo_SConscript
new file mode 100644
index 0000000..4f45c0f
--- /dev/null
+++ b/doc/generated/examples/hierarchy_Return_foo_SConscript
@@ -0,0 +1,5 @@
+
+Import('env')
+obj = env.Object('foo.c')
+Return('obj')
+
diff --git a/doc/generated/examples/hierarchy_ex1_1.xml b/doc/generated/examples/hierarchy_ex1_1.xml
new file mode 100644
index 0000000..50beb93
--- /dev/null
+++ b/doc/generated/examples/hierarchy_ex1_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o prog1/foo1.o -c prog1/foo1.c
+cc -o prog1/foo2.o -c prog1/foo2.c
+cc -o prog1/main.o -c prog1/main.c
+cc -o prog1/prog1 prog1/main.o prog1/foo1.o prog1/foo2.o
+cc -o prog2/bar1.o -c prog2/bar1.c
+cc -o prog2/bar2.o -c prog2/bar2.c
+cc -o prog2/main.o -c prog2/main.c
+cc -o prog2/prog2 prog2/main.o prog2/bar1.o prog2/bar2.o
+</screen>
diff --git a/doc/generated/examples/hierarchy_ex1_prog1_SConscript b/doc/generated/examples/hierarchy_ex1_prog1_SConscript
new file mode 100644
index 0000000..caf2636
--- /dev/null
+++ b/doc/generated/examples/hierarchy_ex1_prog1_SConscript
@@ -0,0 +1,4 @@
+
+env = Environment()
+env.Program('prog1', ['main.c', 'foo1.c', 'foo2.c'])
+
diff --git a/doc/generated/examples/hierarchy_ex1_prog2_SConscript b/doc/generated/examples/hierarchy_ex1_prog2_SConscript
new file mode 100644
index 0000000..88b05a3
--- /dev/null
+++ b/doc/generated/examples/hierarchy_ex1_prog2_SConscript
@@ -0,0 +1,4 @@
+
+env = Environment()
+env.Program('prog2', ['main.c', 'bar1.c', 'bar2.c'])
+
diff --git a/doc/generated/examples/hierarchy_ex2_1.xml b/doc/generated/examples/hierarchy_ex2_1.xml
new file mode 100644
index 0000000..1f781f8
--- /dev/null
+++ b/doc/generated/examples/hierarchy_ex2_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o lib/foo1.o -c lib/foo1.c
+cc -o src/prog/foo2.o -c src/prog/foo2.c
+cc -o src/prog/main.o -c src/prog/main.c
+cc -o src/prog/prog src/prog/main.o lib/foo1.o src/prog/foo2.o
+</screen>
diff --git a/doc/generated/examples/hierarchy_ex3_1.xml b/doc/generated/examples/hierarchy_ex3_1.xml
new file mode 100644
index 0000000..cb5a0ce
--- /dev/null
+++ b/doc/generated/examples/hierarchy_ex3_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o src/prog/foo2.o -c src/prog/foo2.c
+cc -o src/prog/main.o -c src/prog/main.c
+cc -o /usr/joe/lib/foo1.o -c /usr/joe/lib/foo1.c
+cc -o src/prog/prog src/prog/main.o /usr/joe/lib/foo1.o src/prog/foo2.o
+</screen>
diff --git a/doc/generated/examples/install_ex1_1.xml b/doc/generated/examples/install_ex1_1.xml
new file mode 100644
index 0000000..69a9f28
--- /dev/null
+++ b/doc/generated/examples/install_ex1_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q /usr/bin</userinput>
+Install file: "hello" as "/usr/bin/hello"
+</screen>
diff --git a/doc/generated/examples/install_ex2_1.xml b/doc/generated/examples/install_ex2_1.xml
new file mode 100644
index 0000000..66caba3
--- /dev/null
+++ b/doc/generated/examples/install_ex2_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q install</userinput>
+Install file: "hello" as "/usr/bin/hello"
+</screen>
diff --git a/doc/generated/examples/install_ex3_1.xml b/doc/generated/examples/install_ex3_1.xml
new file mode 100644
index 0000000..5e79808
--- /dev/null
+++ b/doc/generated/examples/install_ex3_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+cc -o goodbye.o -c goodbye.c
+cc -o goodbye goodbye.o
+Install file: "goodbye" as "/usr/bin/goodbye"
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+Install file: "hello" as "/usr/bin/hello"
+</screen>
diff --git a/doc/generated/examples/install_ex4_1.xml b/doc/generated/examples/install_ex4_1.xml
new file mode 100644
index 0000000..277ab7a
--- /dev/null
+++ b/doc/generated/examples/install_ex4_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+Install file: "hello" as "/usr/bin/hello-new"
+</screen>
diff --git a/doc/generated/examples/install_ex5_1.xml b/doc/generated/examples/install_ex5_1.xml
new file mode 100644
index 0000000..9cfc178
--- /dev/null
+++ b/doc/generated/examples/install_ex5_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+cc -o goodbye.o -c goodbye.c
+cc -o goodbye goodbye.o
+Install file: "goodbye" as "/usr/bin/goodbye-new"
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+Install file: "hello" as "/usr/bin/hello-new"
+</screen>
diff --git a/doc/generated/examples/java_JAVACLASSDIR_1.xml b/doc/generated/examples/java_JAVACLASSDIR_1.xml
new file mode 100644
index 0000000..e87345e
--- /dev/null
+++ b/doc/generated/examples/java_JAVACLASSDIR_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
+javah -d native -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
+</screen>
diff --git a/doc/generated/examples/java_RMIC_1.xml b/doc/generated/examples/java_RMIC_1.xml
new file mode 100644
index 0000000..be8c953
--- /dev/null
+++ b/doc/generated/examples/java_RMIC_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java
+rmic -d outdir -classpath classes pkg.sub.Example1 pkg.sub.Example2
+</screen>
diff --git a/doc/generated/examples/java_jar1_1.xml b/doc/generated/examples/java_jar1_1.xml
new file mode 100644
index 0000000..6f5afa0
--- /dev/null
+++ b/doc/generated/examples/java_jar1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
+jar cf test.jar classes
+</screen>
diff --git a/doc/generated/examples/java_jar2_1.xml b/doc/generated/examples/java_jar2_1.xml
new file mode 100644
index 0000000..70e161b
--- /dev/null
+++ b/doc/generated/examples/java_jar2_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath prog1 prog1/Example1.java prog1/Example2.java
+javac -d classes -sourcepath prog2 prog2/Example3.java prog2/Example4.java
+jar cf prog1.jar -C classes Example1.class -C classes Example2.class
+jar cf prog2.jar -C classes Example3.class -C classes Example4.class
+</screen>
diff --git a/doc/generated/examples/java_java-classes_1.xml b/doc/generated/examples/java_java-classes_1.xml
new file mode 100644
index 0000000..2ebc85c
--- /dev/null
+++ b/doc/generated/examples/java_java-classes_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
+% <userinput>scons -Q classes</userinput>
+scons: `classes' is up to date.
+</screen>
diff --git a/doc/generated/examples/java_java-classes_2.xml b/doc/generated/examples/java_java-classes_2.xml
new file mode 100644
index 0000000..9a24f70
--- /dev/null
+++ b/doc/generated/examples/java_java-classes_2.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
+% <userinput>scons -Q -c classes</userinput>
+Removed classes/Example1.class
+Removed classes/AdditionalClass1.class
+Removed classes/Example2$Inner2.class
+Removed classes/Example2.class
+Removed classes/Example3.class
+Removed classes/AdditionalClass3.class
+</screen>
diff --git a/doc/generated/examples/java_java_1.xml b/doc/generated/examples/java_java_1.xml
new file mode 100644
index 0000000..a6e69c1
--- /dev/null
+++ b/doc/generated/examples/java_java_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
+</screen>
diff --git a/doc/generated/examples/java_javah_1.xml b/doc/generated/examples/java_javah_1.xml
new file mode 100644
index 0000000..e87345e
--- /dev/null
+++ b/doc/generated/examples/java_javah_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
+javah -d native -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
+</screen>
diff --git a/doc/generated/examples/java_javah_file_1.xml b/doc/generated/examples/java_javah_file_1.xml
new file mode 100644
index 0000000..a0e74d5
--- /dev/null
+++ b/doc/generated/examples/java_javah_file_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
+javah -o native.h -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
+</screen>
diff --git a/doc/generated/examples/lesssimple_ex2_1.xml b/doc/generated/examples/lesssimple_ex2_1.xml
new file mode 100644
index 0000000..834f88c
--- /dev/null
+++ b/doc/generated/examples/lesssimple_ex2_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o file1.o -c file1.c
+cc -o file2.o -c file2.c
+cc -o prog.o -c prog.c
+cc -o prog prog.o file1.o file2.o
+</screen>
diff --git a/doc/generated/examples/lesssimple_ex3_1.xml b/doc/generated/examples/lesssimple_ex3_1.xml
new file mode 100644
index 0000000..415205b
--- /dev/null
+++ b/doc/generated/examples/lesssimple_ex3_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o file1.o -c file1.c
+cc -o file2.o -c file2.c
+cc -o prog.o -c prog.c
+cc -o program prog.o file1.o file2.o
+</screen>
diff --git a/doc/generated/examples/lesssimple_ex3_2.xml b/doc/generated/examples/lesssimple_ex3_2.xml
new file mode 100644
index 0000000..2eee32b
--- /dev/null
+++ b/doc/generated/examples/lesssimple_ex3_2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fofile1.obj /c file1.c /nologo
+cl /Fofile2.obj /c file2.c /nologo
+cl /Foprog.obj /c prog.c /nologo
+link /nologo /OUT:program.exe prog.obj file1.obj file2.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/lesssimple_ex4_1.xml b/doc/generated/examples/lesssimple_ex4_1.xml
new file mode 100644
index 0000000..4d9267e
--- /dev/null
+++ b/doc/generated/examples/lesssimple_ex4_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o bar1.o -c bar1.c
+cc -o bar2.o -c bar2.c
+cc -o bar bar1.o bar2.o
+cc -o foo.o -c foo.c
+cc -o foo foo.o
+</screen>
diff --git a/doc/generated/examples/lesssimple_ex5_1.xml b/doc/generated/examples/lesssimple_ex5_1.xml
new file mode 100644
index 0000000..e1c35d4
--- /dev/null
+++ b/doc/generated/examples/lesssimple_ex5_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o bar1.o -c bar1.c
+cc -o bar2.o -c bar2.c
+cc -o common1.o -c common1.c
+cc -o common2.o -c common2.c
+cc -o bar bar1.o bar2.o common1.o common2.o
+cc -o foo.o -c foo.c
+cc -o foo foo.o common1.o common2.o
+</screen>
diff --git a/doc/generated/examples/lesssimple_target_1.xml b/doc/generated/examples/lesssimple_target_1.xml
new file mode 100644
index 0000000..76f0de9
--- /dev/null
+++ b/doc/generated/examples/lesssimple_target_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o new_hello hello.o
+</screen>
diff --git a/doc/generated/examples/lesssimple_target_2.xml b/doc/generated/examples/lesssimple_target_2.xml
new file mode 100644
index 0000000..0babd04
--- /dev/null
+++ b/doc/generated/examples/lesssimple_target_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fohello.obj /c hello.c /nologo
+link /nologo /OUT:new_hello.exe hello.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/libraries_SharedLibrary_1.xml b/doc/generated/examples/libraries_SharedLibrary_1.xml
new file mode 100644
index 0000000..80df708
--- /dev/null
+++ b/doc/generated/examples/libraries_SharedLibrary_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f1.os -c f1.c
+cc -o f2.os -c f2.c
+cc -o f3.os -c f3.c
+cc -o libfoo.so -shared f1.os f2.os f3.os
+</screen>
diff --git a/doc/generated/examples/libraries_SharedLibrary_2.xml b/doc/generated/examples/libraries_SharedLibrary_2.xml
new file mode 100644
index 0000000..c2894d5
--- /dev/null
+++ b/doc/generated/examples/libraries_SharedLibrary_2.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fof1.obj /c f1.c /nologo
+cl /Fof2.obj /c f2.c /nologo
+cl /Fof3.obj /c f3.c /nologo
+link /nologo /dll /out:foo.dll /implib:foo.lib f1.obj f2.obj f3.obj
+RegServerFunc(target, source, env)
+embedManifestDllCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/libraries_ex1_1.xml b/doc/generated/examples/libraries_ex1_1.xml
new file mode 100644
index 0000000..0449b31
--- /dev/null
+++ b/doc/generated/examples/libraries_ex1_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f1.o -c f1.c
+cc -o f2.o -c f2.c
+cc -o f3.o -c f3.c
+ar rc libfoo.a f1.o f2.o f3.o
+ranlib libfoo.a
+</screen>
diff --git a/doc/generated/examples/libraries_ex1_2.xml b/doc/generated/examples/libraries_ex1_2.xml
new file mode 100644
index 0000000..9256d4f
--- /dev/null
+++ b/doc/generated/examples/libraries_ex1_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fof1.obj /c f1.c /nologo
+cl /Fof2.obj /c f2.c /nologo
+cl /Fof3.obj /c f3.c /nologo
+lib /nologo /OUT:foo.lib f1.obj f2.obj f3.obj
+</screen>
diff --git a/doc/generated/examples/libraries_ex2_1.xml b/doc/generated/examples/libraries_ex2_1.xml
new file mode 100644
index 0000000..7389203
--- /dev/null
+++ b/doc/generated/examples/libraries_ex2_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f1.o -c f1.c
+cc -o f2.o -c f2.c
+cc -o f3.o -c f3.c
+ar rc libfoo.a f1.o f2.o f3.o
+ranlib libfoo.a
+cc -o prog.o -c prog.c
+cc -o prog prog.o -L. -lfoo -lbar
+</screen>
diff --git a/doc/generated/examples/libraries_ex2_2.xml b/doc/generated/examples/libraries_ex2_2.xml
new file mode 100644
index 0000000..17ec5b5
--- /dev/null
+++ b/doc/generated/examples/libraries_ex2_2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fof1.obj /c f1.c /nologo
+cl /Fof2.obj /c f2.c /nologo
+cl /Fof3.obj /c f3.c /nologo
+lib /nologo /OUT:foo.lib f1.obj f2.obj f3.obj
+cl /Foprog.obj /c prog.c /nologo
+link /nologo /OUT:prog.exe /LIBPATH:. foo.lib bar.lib prog.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/libraries_ex3_1.xml b/doc/generated/examples/libraries_ex3_1.xml
new file mode 100644
index 0000000..1b4fb3c
--- /dev/null
+++ b/doc/generated/examples/libraries_ex3_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o prog.o -c prog.c
+cc -o prog prog.o -L/usr/lib -L/usr/local/lib -lm
+</screen>
diff --git a/doc/generated/examples/libraries_ex3_2.xml b/doc/generated/examples/libraries_ex3_2.xml
new file mode 100644
index 0000000..2a64da1
--- /dev/null
+++ b/doc/generated/examples/libraries_ex3_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Foprog.obj /c prog.c /nologo
+link /nologo /OUT:prog.exe /LIBPATH:\usr\lib /LIBPATH:\usr\local\lib m.lib prog.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/libraries_objects_1.xml b/doc/generated/examples/libraries_objects_1.xml
new file mode 100644
index 0000000..97623d9
--- /dev/null
+++ b/doc/generated/examples/libraries_objects_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f1.o -c f1.c
+cc -o f3.o -c f3.c
+ar rc libfoo.a f1.o f2.o f3.o f4.o
+ranlib libfoo.a
+</screen>
diff --git a/doc/generated/examples/mergeflags_MergeFlags1_1.xml b/doc/generated/examples/mergeflags_MergeFlags1_1.xml
new file mode 100644
index 0000000..a5a6915
--- /dev/null
+++ b/doc/generated/examples/mergeflags_MergeFlags1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+['-option', '-O1', '-whatever', '-O3']
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/mergeflags_MergeFlags2_1.xml b/doc/generated/examples/mergeflags_MergeFlags2_1.xml
new file mode 100644
index 0000000..d807d66
--- /dev/null
+++ b/doc/generated/examples/mergeflags_MergeFlags2_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+['/include', '/usr/local/include', '/usr/include', '/usr/opt/include']
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/mergeflags_MergeFlags3_1.xml b/doc/generated/examples/mergeflags_MergeFlags3_1.xml
new file mode 100644
index 0000000..324d960
--- /dev/null
+++ b/doc/generated/examples/mergeflags_MergeFlags3_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+['-option', '-O1', '-whatever', '-O3']
+['/include', '/usr/local/include', '/usr/include', '/usr/opt/include']
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/misc_Exit_1.xml b/doc/generated/examples/misc_Exit_1.xml
new file mode 100644
index 0000000..65ccf9b
--- /dev/null
+++ b/doc/generated/examples/misc_Exit_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q FUTURE=1</userinput>
+The FUTURE option is not supported yet!
+% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/misc_FindFile1a_1.xml b/doc/generated/examples/misc_FindFile1a_1.xml
new file mode 100644
index 0000000..2b18f6e
--- /dev/null
+++ b/doc/generated/examples/misc_FindFile1a_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+None
+&lt;class 'SCons.Node.FS.File'&gt; exists
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/misc_FindFile1b_1.xml b/doc/generated/examples/misc_FindFile1b_1.xml
new file mode 100644
index 0000000..f16dc95
--- /dev/null
+++ b/doc/generated/examples/misc_FindFile1b_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+nonesuch.h: None
+config.h: config.h
+private.h: src/include/private.h
+dist.h: include/dist.h
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/misc_FindFile1d_1.xml b/doc/generated/examples/misc_FindFile1d_1.xml
new file mode 100644
index 0000000..e0e8e8d
--- /dev/null
+++ b/doc/generated/examples/misc_FindFile1d_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+sub1/multiple
+sub2/multiple
+sub3/multiple
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/misc_FindFile2_1.xml b/doc/generated/examples/misc_FindFile2_1.xml
new file mode 100644
index 0000000..5aea252
--- /dev/null
+++ b/doc/generated/examples/misc_FindFile2_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+leaf
+derived
+cat &gt; derived leaf
+</screen>
diff --git a/doc/generated/examples/misc_FindFile2_2.xml b/doc/generated/examples/misc_FindFile2_2.xml
new file mode 100644
index 0000000..5aea252
--- /dev/null
+++ b/doc/generated/examples/misc_FindFile2_2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+leaf
+derived
+cat &gt; derived leaf
+</screen>
diff --git a/doc/generated/examples/misc_FindFile3_1.xml b/doc/generated/examples/misc_FindFile3_1.xml
new file mode 100644
index 0000000..026212c
--- /dev/null
+++ b/doc/generated/examples/misc_FindFile3_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+build/leaf
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/misc_Flatten1_1.xml b/doc/generated/examples/misc_Flatten1_1.xml
new file mode 100644
index 0000000..b25ef5f
--- /dev/null
+++ b/doc/generated/examples/misc_Flatten1_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o prog1.o -c prog1.c
+cc -o prog2.o -c -DFOO prog2.c
+cc -o prog1 prog1.o prog2.o
+</screen>
diff --git a/doc/generated/examples/misc_Flatten2_1.xml b/doc/generated/examples/misc_Flatten2_1.xml
new file mode 100644
index 0000000..5c9502d
--- /dev/null
+++ b/doc/generated/examples/misc_Flatten2_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+AttributeError: 'NodeList' object has no attribute 'abspath':
+ File "/home/my/project/SConstruct", line 8:
+ print object_file.abspath
+</screen>
diff --git a/doc/generated/examples/nodes_GetBuildPath_1.xml b/doc/generated/examples/nodes_GetBuildPath_1.xml
new file mode 100644
index 0000000..d8160f3
--- /dev/null
+++ b/doc/generated/examples/nodes_GetBuildPath_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+['foo.c', 'sub/dir/value']
+scons: `.' is up to date.
+</screen>
diff --git a/doc/generated/examples/nodes_ex1_1.xml b/doc/generated/examples/nodes_ex1_1.xml
new file mode 100644
index 0000000..fc72480
--- /dev/null
+++ b/doc/generated/examples/nodes_ex1_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o goodbye.o -c -DGOODBYE goodbye.c
+cc -o hello.o -c -DHELLO hello.c
+cc -o hello hello.o goodbye.o
+</screen>
diff --git a/doc/generated/examples/nodes_ex1_2.xml b/doc/generated/examples/nodes_ex1_2.xml
new file mode 100644
index 0000000..cc92ae6
--- /dev/null
+++ b/doc/generated/examples/nodes_ex1_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fogoodbye.obj /c goodbye.c -DGOODBYE
+cl /Fohello.obj /c hello.c -DHELLO
+link /nologo /OUT:hello.exe hello.obj goodbye.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/nodes_exists_1.xml b/doc/generated/examples/nodes_exists_1.xml
new file mode 100644
index 0000000..c618a6c
--- /dev/null
+++ b/doc/generated/examples/nodes_exists_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+hello does not exist!
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/nodes_print_1.xml b/doc/generated/examples/nodes_print_1.xml
new file mode 100644
index 0000000..dd8fcbb
--- /dev/null
+++ b/doc/generated/examples/nodes_print_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+The object file is: hello.o
+The program file is: hello
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/nodes_print_2.xml b/doc/generated/examples/nodes_print_2.xml
new file mode 100644
index 0000000..58bb703
--- /dev/null
+++ b/doc/generated/examples/nodes_print_2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+The object file is: hello.obj
+The program file is: hello.exe
+cl /Fohello.obj /c hello.c /nologo
+link /nologo /OUT:hello.exe hello.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/output_Progress-TARGET_1.xml b/doc/generated/examples/output_Progress-TARGET_1.xml
new file mode 100644
index 0000000..29abc9f
--- /dev/null
+++ b/doc/generated/examples/output_Progress-TARGET_1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+Evaluating SConstruct
+Evaluating f1.c
+Evaluating f1.o
+cc -o f1.o -c f1.c
+Evaluating f1
+cc -o f1 f1.o
+Evaluating f2.c
+Evaluating f2.o
+cc -o f2.o -c f2.c
+Evaluating f2
+cc -o f2 f2.o
+Evaluating .
+</screen>
diff --git a/doc/generated/examples/output_ex1_1.xml b/doc/generated/examples/output_ex1_1.xml
new file mode 100644
index 0000000..2576b31
--- /dev/null
+++ b/doc/generated/examples/output_ex1_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -h</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+
+Type: 'scons program' to build the production program,
+ 'scons debug' to build the debug version.
+
+Use scons -H for help about command-line options.
+</screen>
diff --git a/doc/generated/examples/output_ex2_1.xml b/doc/generated/examples/output_ex2_1.xml
new file mode 100644
index 0000000..e206c33
--- /dev/null
+++ b/doc/generated/examples/output_ex2_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -h</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+
+Type: 'scons program' to build the production program.
+
+Type: 'scons windebug' to build the Windows debug version.
+
+Use scons -H for help about command-line options.
+</screen>
diff --git a/doc/generated/examples/output_ex2_2.xml b/doc/generated/examples/output_ex2_2.xml
new file mode 100644
index 0000000..126fc54
--- /dev/null
+++ b/doc/generated/examples/output_ex2_2.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -h</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+
+Type: 'scons program' to build the production program.
+
+Use scons -H for help about command-line options.
+</screen>
diff --git a/doc/generated/examples/output_gbf2_1.xml b/doc/generated/examples/output_gbf2_1.xml
new file mode 100644
index 0000000..e72965f
--- /dev/null
+++ b/doc/generated/examples/output_gbf2_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+scons: `.' is up to date.
+Build succeeded.
+% <userinput>scons -Q fail=1</userinput>
+scons: *** [target] Source `source' not found, needed by target `target'.
+FAILED!!!!
+Failed building target: Source `source' not found, needed by target `target'.
+</screen>
diff --git a/doc/generated/examples/parseflags_ex1_1.xml b/doc/generated/examples/parseflags_ex1_1.xml
new file mode 100644
index 0000000..d385662
--- /dev/null
+++ b/doc/generated/examples/parseflags_ex1_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+CPPPATH ['/opt/include']
+LIBPATH ['/opt/lib']
+LIBS ['foo']
+cc -o f1.o -c -I/opt/include f1.c
+cc -o f1 f1.o -L/opt/lib -lfoo
+</screen>
diff --git a/doc/generated/examples/parseflags_ex1_2.xml b/doc/generated/examples/parseflags_ex1_2.xml
new file mode 100644
index 0000000..29985a2
--- /dev/null
+++ b/doc/generated/examples/parseflags_ex1_2.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+CPPPATH ['/opt/include']
+LIBPATH ['/opt/lib']
+LIBS ['foo']
+cl /Fof1.obj /c f1.c /nologo /I\opt\include
+link /nologo /OUT:f1.exe /LIBPATH:\opt\lib foo.lib f1.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/parseflags_ex2_1.xml b/doc/generated/examples/parseflags_ex2_1.xml
new file mode 100644
index 0000000..8026ca0
--- /dev/null
+++ b/doc/generated/examples/parseflags_ex2_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+CCFLAGS -whatever
+cc -o f1.o -c -whatever f1.c
+cc -o f1 f1.o
+</screen>
diff --git a/doc/generated/examples/parseflags_ex3_1.xml b/doc/generated/examples/parseflags_ex3_1.xml
new file mode 100644
index 0000000..d385662
--- /dev/null
+++ b/doc/generated/examples/parseflags_ex3_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+CPPPATH ['/opt/include']
+LIBPATH ['/opt/lib']
+LIBS ['foo']
+cc -o f1.o -c -I/opt/include f1.c
+cc -o f1 f1.o -L/opt/lib -lfoo
+</screen>
diff --git a/doc/generated/examples/parseflags_ex4_1.xml b/doc/generated/examples/parseflags_ex4_1.xml
new file mode 100644
index 0000000..d385662
--- /dev/null
+++ b/doc/generated/examples/parseflags_ex4_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+CPPPATH ['/opt/include']
+LIBPATH ['/opt/lib']
+LIBS ['foo']
+cc -o f1.o -c -I/opt/include f1.c
+cc -o f1 f1.o -L/opt/lib -lfoo
+</screen>
diff --git a/doc/generated/examples/repositories_CPPPATH3_1.xml b/doc/generated/examples/repositories_CPPPATH3_1.xml
new file mode 100644
index 0000000..558678d
--- /dev/null
+++ b/doc/generated/examples/repositories_CPPPATH3_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c -Idir1 -I/r1/dir1 -I/r2/dir1 -Idir2 -I/r1/dir2 -I/r2/dir2 -Idir3 -I/r1/dir3 -I/r2/dir3 hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/repositories_CPPPATH_1.xml b/doc/generated/examples/repositories_CPPPATH_1.xml
new file mode 100644
index 0000000..f5ad671
--- /dev/null
+++ b/doc/generated/examples/repositories_CPPPATH_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c -I. -I/usr/repository1 hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/repositories_ex1_1.xml b/doc/generated/examples/repositories_ex1_1.xml
new file mode 100644
index 0000000..d1250c2
--- /dev/null
+++ b/doc/generated/examples/repositories_ex1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/repositories_ex2_1.xml b/doc/generated/examples/repositories_ex2_1.xml
new file mode 100644
index 0000000..146a074
--- /dev/null
+++ b/doc/generated/examples/repositories_ex2_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c /usr/repository1/hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/repositories_ex3_1.xml b/doc/generated/examples/repositories_ex3_1.xml
new file mode 100644
index 0000000..b3f07a2
--- /dev/null
+++ b/doc/generated/examples/repositories_ex3_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c /usr/repository2/hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/repositories_ex4_1.xml b/doc/generated/examples/repositories_ex4_1.xml
new file mode 100644
index 0000000..1d3e41a
--- /dev/null
+++ b/doc/generated/examples/repositories_ex4_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>cd /usr/repository1</userinput>
+% <userinput>scons -Q</userinput>
+cc -o file1.o -c file1.c
+cc -o file2.o -c file2.c
+cc -o hello.o -c hello.c
+cc -o hello hello.o file1.o file2.o
+</screen>
diff --git a/doc/generated/examples/repositories_quote1_1.xml b/doc/generated/examples/repositories_quote1_1.xml
new file mode 100644
index 0000000..e9f362d
--- /dev/null
+++ b/doc/generated/examples/repositories_quote1_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o hello.o -c -I. -I/usr/repository1 /usr/repository1/hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/separate_builddir_1.xml b/doc/generated/examples/separate_builddir_1.xml
new file mode 100644
index 0000000..e470a6d
--- /dev/null
+++ b/doc/generated/examples/separate_builddir_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+hello.c
+% <userinput>scons -Q</userinput>
+cc -o build/hello.o -c build/hello.c
+cc -o build/hello build/hello.o
+% <userinput>ls build</userinput>
+hello hello.c hello.o
+</screen>
diff --git a/doc/generated/examples/separate_builddir_sconscript_1.xml b/doc/generated/examples/separate_builddir_sconscript_1.xml
new file mode 100644
index 0000000..34a07bd
--- /dev/null
+++ b/doc/generated/examples/separate_builddir_sconscript_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+SConscript hello.c
+% <userinput>scons -Q</userinput>
+cc -o build/hello.o -c build/hello.c
+cc -o build/hello build/hello.o
+% <userinput>ls build</userinput>
+SConscript hello hello.c hello.o
+</screen>
diff --git a/doc/generated/examples/separate_builddir_sconscript_SConstruct b/doc/generated/examples/separate_builddir_sconscript_SConstruct
new file mode 100644
index 0000000..d53d1c6
--- /dev/null
+++ b/doc/generated/examples/separate_builddir_sconscript_SConstruct
@@ -0,0 +1,4 @@
+
+VariantDir('build', 'src')
+SConscript('build/SConscript')
+
diff --git a/doc/generated/examples/separate_duplicate0_1.xml b/doc/generated/examples/separate_duplicate0_1.xml
new file mode 100644
index 0000000..13a25d3
--- /dev/null
+++ b/doc/generated/examples/separate_duplicate0_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+hello.c
+% <userinput>scons -Q</userinput>
+cc -o build/hello.o -c src/hello.c
+cc -o build/hello build/hello.o
+% <userinput>ls build</userinput>
+hello hello.o
+</screen>
diff --git a/doc/generated/examples/separate_ex1_1.xml b/doc/generated/examples/separate_ex1_1.xml
new file mode 100644
index 0000000..34a07bd
--- /dev/null
+++ b/doc/generated/examples/separate_ex1_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+SConscript hello.c
+% <userinput>scons -Q</userinput>
+cc -o build/hello.o -c build/hello.c
+cc -o build/hello build/hello.o
+% <userinput>ls build</userinput>
+SConscript hello hello.c hello.o
+</screen>
diff --git a/doc/generated/examples/separate_glob_builddir_sconscript_1.xml b/doc/generated/examples/separate_glob_builddir_sconscript_1.xml
new file mode 100644
index 0000000..95b7650
--- /dev/null
+++ b/doc/generated/examples/separate_glob_builddir_sconscript_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+SConscript f1.c f2.c f2.h
+% <userinput>scons -Q</userinput>
+cc -o build/f1.o -c build/f1.c
+cc -o build/f2.o -c build/f2.c
+cc -o build/hello build/f1.o build/f2.o
+% <userinput>ls build</userinput>
+SConscript f1.c f1.o f2.c f2.h f2.o hello
+</screen>
diff --git a/doc/generated/examples/sideeffect_parallel_1.xml b/doc/generated/examples/sideeffect_parallel_1.xml
new file mode 100644
index 0000000..18f834a
--- /dev/null
+++ b/doc/generated/examples/sideeffect_parallel_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
+echo &gt; file1.out data1
+echo &gt; file2.out data2
+</screen>
diff --git a/doc/generated/examples/sideeffect_shared_1.xml b/doc/generated/examples/sideeffect_shared_1.xml
new file mode 100644
index 0000000..11cfec7
--- /dev/null
+++ b/doc/generated/examples/sideeffect_shared_1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
+./build --log logfile.txt file1.in file1.out
+./build --log logfile.txt file2.in file2.out
+</screen>
diff --git a/doc/generated/examples/sideeffect_simple_1.xml b/doc/generated/examples/sideeffect_simple_1.xml
new file mode 100644
index 0000000..9fdf074
--- /dev/null
+++ b/doc/generated/examples/sideeffect_simple_1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
+ File "/home/my/project/SConstruct", line 4
+
+ 'echo &gt;$TARGET data1; echo &gt;log updated file1'))
+
+ ^
+
+SyntaxError: invalid syntax
+</screen>
diff --git a/doc/generated/examples/simple_Object_1.xml b/doc/generated/examples/simple_Object_1.xml
new file mode 100644
index 0000000..33a86a7
--- /dev/null
+++ b/doc/generated/examples/simple_Object_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cc -o hello.o -c hello.c
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/simple_Object_2.xml b/doc/generated/examples/simple_Object_2.xml
new file mode 100644
index 0000000..42b773a
--- /dev/null
+++ b/doc/generated/examples/simple_Object_2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cl /Fohello.obj /c hello.c /nologo
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/simple_clean_1.xml b/doc/generated/examples/simple_clean_1.xml
new file mode 100644
index 0000000..0affa24
--- /dev/null
+++ b/doc/generated/examples/simple_clean_1.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+scons: done building targets.
+% <userinput>scons -c</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Cleaning targets ...
+Removed hello.o
+Removed hello
+scons: done cleaning targets.
+</screen>
diff --git a/doc/generated/examples/simple_clean_2.xml b/doc/generated/examples/simple_clean_2.xml
new file mode 100644
index 0000000..3ccedf4
--- /dev/null
+++ b/doc/generated/examples/simple_clean_2.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cl /Fohello.obj /c hello.c /nologo
+link /nologo /OUT:hello.exe hello.obj
+embedManifestExeCheck(target, source, env)
+scons: done building targets.
+C:\&gt;<userinput>scons -c</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Cleaning targets ...
+Removed hello.obj
+Removed hello.exe
+scons: done cleaning targets.
+</screen>
diff --git a/doc/generated/examples/simple_declarative_1.xml b/doc/generated/examples/simple_declarative_1.xml
new file mode 100644
index 0000000..effcd54
--- /dev/null
+++ b/doc/generated/examples/simple_declarative_1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+Calling Program('hello.c')
+Calling Program('goodbye.c')
+Finished calling Program()
+scons: done reading SConscript files.
+scons: Building targets ...
+cc -o goodbye.o -c goodbye.c
+cc -o goodbye goodbye.o
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/simple_ex1_1.xml b/doc/generated/examples/simple_ex1_1.xml
new file mode 100644
index 0000000..a855deb
--- /dev/null
+++ b/doc/generated/examples/simple_ex1_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/simple_ex1_2.xml b/doc/generated/examples/simple_ex1_2.xml
new file mode 100644
index 0000000..b3d11cd
--- /dev/null
+++ b/doc/generated/examples/simple_ex1_2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cl /Fohello.obj /c hello.c /nologo
+link /nologo /OUT:hello.exe hello.obj
+embedManifestExeCheck(target, source, env)
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/simple_ex1_3.xml b/doc/generated/examples/simple_ex1_3.xml
new file mode 100644
index 0000000..b3d11cd
--- /dev/null
+++ b/doc/generated/examples/simple_ex1_3.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cl /Fohello.obj /c hello.c /nologo
+link /nologo /OUT:hello.exe hello.obj
+embedManifestExeCheck(target, source, env)
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/simple_ex1_4.xml b/doc/generated/examples/simple_ex1_4.xml
new file mode 100644
index 0000000..4087bcf
--- /dev/null
+++ b/doc/generated/examples/simple_ex1_4.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+cl /Fohello.obj /c hello.c /nologo
+link /nologo /OUT:hello.exe hello.obj
+embedManifestExeCheck(target, source, env)
+</screen>
diff --git a/doc/generated/examples/simple_java_1.xml b/doc/generated/examples/simple_java_1.xml
new file mode 100644
index 0000000..53cc8aa
--- /dev/null
+++ b/doc/generated/examples/simple_java_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+javac -d classes -sourcepath src src/hello.java
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/sourcecode_bitkeeper_1.xml b/doc/generated/examples/sourcecode_bitkeeper_1.xml
new file mode 100644
index 0000000..c02c973
--- /dev/null
+++ b/doc/generated/examples/sourcecode_bitkeeper_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+bk get hello.c
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/sourcecode_cvs_1.xml b/doc/generated/examples/sourcecode_cvs_1.xml
new file mode 100644
index 0000000..c2165cb
--- /dev/null
+++ b/doc/generated/examples/sourcecode_cvs_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cvs -d /usr/local/CVS co hello.c
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/sourcecode_rcs_1.xml b/doc/generated/examples/sourcecode_rcs_1.xml
new file mode 100644
index 0000000..75def9c
--- /dev/null
+++ b/doc/generated/examples/sourcecode_rcs_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+co hello.c
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/sourcecode_sccs_1.xml b/doc/generated/examples/sourcecode_sccs_1.xml
new file mode 100644
index 0000000..0be5f83
--- /dev/null
+++ b/doc/generated/examples/sourcecode_sccs_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+sccs get hello.c
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+</screen>
diff --git a/doc/generated/examples/tasks_ex1_1.xml b/doc/generated/examples/tasks_ex1_1.xml
new file mode 100644
index 0000000..f8b323e
--- /dev/null
+++ b/doc/generated/examples/tasks_ex1_1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o app main.cpp
+cat &lt; foo.bar2 &gt; foo.cpp
+cc -o app2 main2.cpp foo.cpp
+cat &lt; test.bar &gt; test.h
+</screen>
diff --git a/doc/generated/examples/tasks_ex1_main.cpp b/doc/generated/examples/tasks_ex1_main.cpp
new file mode 100644
index 0000000..2a37cad
--- /dev/null
+++ b/doc/generated/examples/tasks_ex1_main.cpp
@@ -0,0 +1,3 @@
+
+#include "test.h"
+
diff --git a/doc/generated/examples/troubleshoot_Dump_1.xml b/doc/generated/examples/troubleshoot_Dump_1.xml
new file mode 100644
index 0000000..d1191eb
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_Dump_1.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+{ 'BUILDERS': {'_InternalInstall': &lt;function InstallBuilderWrapper at 0x700000&amp;gt;, '_InternalInstallVersionedLib': &lt;function InstallVersionedBuilderWrapper at 0x700000&amp;gt;, '_InternalInstallAs': &lt;function InstallAsBuilderWrapper at 0x700000&amp;gt;},
+ 'CONFIGUREDIR': '#/.sconf_temp',
+ 'CONFIGURELOG': '#/config.log',
+ 'CPPSUFFIXES': [ '.c',
+ '.C',
+ '.cxx',
+ '.cpp',
+ '.c++',
+ '.cc',
+ '.h',
+ '.H',
+ '.hxx',
+ '.hpp',
+ '.hh',
+ '.F',
+ '.fpp',
+ '.FPP',
+ '.m',
+ '.mm',
+ '.S',
+ '.spp',
+ '.SPP',
+ '.sx'],
+ 'DSUFFIXES': ['.d'],
+ 'Dir': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'Dirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'ENV': { 'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin'},
+ 'ESCAPE': &lt;function escape at 0x700000&amp;gt;,
+ 'File': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'HOST_ARCH': None,
+ 'HOST_OS': None,
+ 'IDLSUFFIXES': ['.idl', '.IDL'],
+ 'INSTALL': &lt;function copyFunc at 0x700000&amp;gt;,
+ 'INSTALLVERSIONEDLIB': &lt;function copyFuncVersionedLib at 0x700000&amp;gt;,
+ 'LIBPREFIX': 'lib',
+ 'LIBPREFIXES': ['$LIBPREFIX'],
+ 'LIBSUFFIX': '.a',
+ 'LIBSUFFIXES': ['$LIBSUFFIX', '$SHLIBSUFFIX'],
+ 'MAXLINELENGTH': 128072,
+ 'OBJPREFIX': '',
+ 'OBJSUFFIX': '.o',
+ 'PLATFORM': 'posix',
+ 'PROGPREFIX': '',
+ 'PROGSUFFIX': '',
+ 'PSPAWN': &lt;function piped_env_spawn at 0x700000&amp;gt;,
+ 'RDirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'SCANNERS': [],
+ 'SHELL': 'sh',
+ 'SHLIBPREFIX': '$LIBPREFIX',
+ 'SHLIBSUFFIX': '.so',
+ 'SHOBJPREFIX': '$OBJPREFIX',
+ 'SHOBJSUFFIX': '$OBJSUFFIX',
+ 'SPAWN': &lt;function spawnvpe_spawn at 0x700000&amp;gt;,
+ 'TARGET_ARCH': None,
+ 'TARGET_OS': None,
+ 'TEMPFILE': &lt;class 'SCons.Platform.TempFileMunge'&gt;,
+ 'TEMPFILEPREFIX': '@',
+ 'TOOLS': ['install', 'install'],
+ '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
+ '_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
+ '_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
+ '_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
+ '__RPATH': '$_RPATH',
+ '_concat': &lt;function _concat at 0x700000&amp;gt;,
+ '_defines': &lt;function _defines at 0x700000&amp;gt;,
+ '_stripixes': &lt;function _stripixes at 0x700000&amp;gt;}
+scons: done reading SConscript files.
+scons: Building targets ...
+scons: `.' is up to date.
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/troubleshoot_Dump_2.xml b/doc/generated/examples/troubleshoot_Dump_2.xml
new file mode 100644
index 0000000..2fdb1bc
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_Dump_2.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+scons: Reading SConscript files ...
+{ 'BUILDERS': {'_InternalInstallVersionedLib': &lt;function InstallVersionedBuilderWrapper at 0x700000&amp;gt;, '_InternalInstall': &lt;function InstallBuilderWrapper at 0x700000&amp;gt;, 'Object': &lt;SCons.Builder.CompositeBuilder object at 0x700000&amp;gt;, 'PCH': &lt;SCons.Builder.BuilderBase object at 0x700000&amp;gt;, 'RES': &lt;SCons.Builder.BuilderBase object at 0x700000&amp;gt;, 'SharedObject': &lt;SCons.Builder.CompositeBuilder object at 0x700000&amp;gt;, 'StaticObject': &lt;SCons.Builder.CompositeBuilder object at 0x700000&amp;gt;, '_InternalInstallAs': &lt;function InstallAsBuilderWrapper at 0x700000&amp;gt;},
+ 'CC': 'cl',
+ 'CCCOM': &lt;SCons.Action.FunctionAction object at 0x700000&amp;gt;,
+ 'CCFLAGS': ['/nologo'],
+ 'CCPCHFLAGS': ['${(PCH and "/Yu%s \\"/Fp%s\\""%(PCHSTOP or "",File(PCH))) or ""}'],
+ 'CCPDBFLAGS': ['${(PDB and "/Z7") or ""}'],
+ 'CFILESUFFIX': '.c',
+ 'CFLAGS': [],
+ 'CONFIGUREDIR': '#/.sconf_temp',
+ 'CONFIGURELOG': '#/config.log',
+ 'CPPDEFPREFIX': '/D',
+ 'CPPDEFSUFFIX': '',
+ 'CPPSUFFIXES': [ '.c',
+ '.C',
+ '.cxx',
+ '.cpp',
+ '.c++',
+ '.cc',
+ '.h',
+ '.H',
+ '.hxx',
+ '.hpp',
+ '.hh',
+ '.F',
+ '.fpp',
+ '.FPP',
+ '.m',
+ '.mm',
+ '.S',
+ '.spp',
+ '.SPP',
+ '.sx'],
+ 'CXX': '$CC',
+ 'CXXCOM': '${TEMPFILE("$CXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $CXXFLAGS $CCFLAGS $_CCCOMCOM")}',
+ 'CXXFILESUFFIX': '.cc',
+ 'CXXFLAGS': ['$(', '/TP', '$)'],
+ 'DSUFFIXES': ['.d'],
+ 'Dir': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'Dirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'ENV': { 'PATH': 'C:\\WINDOWS\\System32',
+ 'PATHEXT': '.COM;.EXE;.BAT;.CMD',
+ 'SystemRoot': 'C:\\WINDOWS'},
+ 'ESCAPE': &lt;function escape at 0x700000&amp;gt;,
+ 'File': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'HOST_ARCH': '',
+ 'HOST_OS': 'win32',
+ 'IDLSUFFIXES': ['.idl', '.IDL'],
+ 'INCPREFIX': '/I',
+ 'INCSUFFIX': '',
+ 'INSTALL': &lt;function copyFunc at 0x700000&amp;gt;,
+ 'INSTALLVERSIONEDLIB': &lt;function copyFuncVersionedLib at 0x700000&amp;gt;,
+ 'LIBPREFIX': '',
+ 'LIBPREFIXES': ['$LIBPREFIX'],
+ 'LIBSUFFIX': '.lib',
+ 'LIBSUFFIXES': ['$LIBSUFFIX'],
+ 'MAXLINELENGTH': 2048,
+ 'MSVC_SETUP_RUN': True,
+ 'OBJPREFIX': '',
+ 'OBJSUFFIX': '.obj',
+ 'PCHCOM': '$CXX /Fo${TARGETS[1]} $CXXFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS $PCHPDBFLAGS',
+ 'PCHPDBFLAGS': ['${(PDB and "/Yd") or ""}'],
+ 'PLATFORM': 'win32',
+ 'PROGPREFIX': '',
+ 'PROGSUFFIX': '.exe',
+ 'PSPAWN': &lt;function piped_spawn at 0x700000&amp;gt;,
+ 'RC': 'rc',
+ 'RCCOM': &lt;SCons.Action.FunctionAction object at 0x700000&amp;gt;,
+ 'RCFLAGS': [],
+ 'RCSUFFIXES': ['.rc', '.rc2'],
+ 'RDirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&amp;gt;,
+ 'SCANNERS': [],
+ 'SHCC': '$CC',
+ 'SHCCCOM': &lt;SCons.Action.FunctionAction object at 0x700000&amp;gt;,
+ 'SHCCFLAGS': ['$CCFLAGS'],
+ 'SHCFLAGS': ['$CFLAGS'],
+ 'SHCXX': '$CXX',
+ 'SHCXXCOM': '${TEMPFILE("$SHCXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM")}',
+ 'SHCXXFLAGS': ['$CXXFLAGS'],
+ 'SHELL': None,
+ 'SHLIBPREFIX': '',
+ 'SHLIBSUFFIX': '.dll',
+ 'SHOBJPREFIX': '$OBJPREFIX',
+ 'SHOBJSUFFIX': '$OBJSUFFIX',
+ 'SPAWN': &lt;function spawn at 0x700000&amp;gt;,
+ 'STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME': 1,
+ 'TARGET_ARCH': '',
+ 'TARGET_OS': 'win32',
+ 'TEMPFILE': &lt;class 'SCons.Platform.TempFileMunge'&gt;,
+ 'TEMPFILEPREFIX': '@',
+ 'TOOLS': ['msvc', 'install', 'install'],
+ '_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $CCPCHFLAGS $CCPDBFLAGS',
+ '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
+ '_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
+ '_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
+ '_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
+ '_MSVC_OUTPUT_FLAG': &lt;function msvc_output_flag at 0x700000&amp;gt;,
+ '_concat': &lt;function _concat at 0x700000&amp;gt;,
+ '_defines': &lt;function _defines at 0x700000&amp;gt;,
+ '_stripixes': &lt;function _stripixes at 0x700000&amp;gt;}
+scons: done reading SConscript files.
+scons: Building targets ...
+scons: `.' is up to date.
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/troubleshoot_Dump_ENV_1.xml b/doc/generated/examples/troubleshoot_Dump_ENV_1.xml
new file mode 100644
index 0000000..818bbcc
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_Dump_ENV_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+scons: Reading SConscript files ...
+{ 'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin'}
+scons: done reading SConscript files.
+scons: Building targets ...
+scons: `.' is up to date.
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/troubleshoot_Dump_ENV_2.xml b/doc/generated/examples/troubleshoot_Dump_ENV_2.xml
new file mode 100644
index 0000000..4ea3a2f
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_Dump_ENV_2.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+scons: Reading SConscript files ...
+{ 'PATH': 'C:\\WINDOWS\\System32',
+ 'PATHEXT': '.COM;.EXE;.BAT;.CMD',
+ 'SystemRoot': 'C:\\WINDOWS'}
+scons: done reading SConscript files.
+scons: Building targets ...
+scons: `.' is up to date.
+scons: done building targets.
+</screen>
diff --git a/doc/generated/examples/troubleshoot_explain1_1.xml b/doc/generated/examples/troubleshoot_explain1_1.xml
new file mode 100644
index 0000000..50fb303
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_explain1_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cp file.in file.oout
+% <userinput>scons -Q</userinput>
+cp file.in file.oout
+% <userinput>scons -Q</userinput>
+cp file.in file.oout
+</screen>
diff --git a/doc/generated/examples/troubleshoot_explain1_2.xml b/doc/generated/examples/troubleshoot_explain1_2.xml
new file mode 100644
index 0000000..a58a2d3
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_explain1_2.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --debug=explain</userinput>
+scons: building `file.out' because it doesn't exist
+cp file.in file.oout
+</screen>
diff --git a/doc/generated/examples/troubleshoot_explain1_3.xml b/doc/generated/examples/troubleshoot_explain1_3.xml
new file mode 100644
index 0000000..b62be87
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_explain1_3.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --warn=target-not-built</userinput>
+scons: building `file.out' because it doesn't exist
+cp file.in file.oout
+
+scons: warning: Cannot find target file.out after building
+</screen>
diff --git a/doc/generated/examples/troubleshoot_explain2_1.xml b/doc/generated/examples/troubleshoot_explain2_1.xml
new file mode 100644
index 0000000..3b5374f
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_explain2_1.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o file1.o -c file1.c
+cc -o file2.o -c file2.c
+cc -o file3.o -c file3.c
+cc -o prog file1.o file2.o file3.o
+% [CHANGE THE CONTENTS OF file2.c]
+% <userinput>scons -Q --debug=explain</userinput>
+scons: rebuilding `file2.o' because `file2.c' changed
+cc -o file2.o -c file2.c
+scons: rebuilding `prog' because `file2.o' changed
+cc -o prog file1.o file2.o file3.o
+</screen>
diff --git a/doc/generated/examples/troubleshoot_explain3_1.xml b/doc/generated/examples/troubleshoot_explain3_1.xml
new file mode 100644
index 0000000..7e89a26
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_explain3_1.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+cc -o file1.o -c -I. file1.c
+cc -o file2.o -c -I. file2.c
+cc -o file3.o -c -I. file3.c
+cc -o prog file1.o file2.o file3.o
+% [CHANGE THE CONTENTS OF hello.h]
+% <userinput>scons -Q --debug=explain</userinput>
+scons: rebuilding `file1.o' because `hello.h' changed
+cc -o file1.o -c -I. file1.c
+scons: rebuilding `file3.o' because `hello.h' changed
+cc -o file3.o -c -I. file3.c
+scons: rebuilding `prog' because:
+ `file1.o' changed
+ `file3.o' changed
+cc -o prog file1.o file2.o file3.o
+</screen>
diff --git a/doc/generated/examples/troubleshoot_findlibs_1.xml b/doc/generated/examples/troubleshoot_findlibs_1.xml
new file mode 100644
index 0000000..0b34b73
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_findlibs_1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --debug=findlibs</userinput>
+ findlibs: looking for 'libfoo.a' in 'libs1' ...
+ findlibs: ... FOUND 'libfoo.a' in 'libs1'
+ findlibs: looking for 'libfoo.so' in 'libs1' ...
+ findlibs: looking for 'libfoo.so' in 'libs2' ...
+ findlibs: looking for 'libbar.a' in 'libs1' ...
+ findlibs: looking for 'libbar.a' in 'libs2' ...
+ findlibs: ... FOUND 'libbar.a' in 'libs2'
+ findlibs: looking for 'libbar.so' in 'libs1' ...
+ findlibs: looking for 'libbar.so' in 'libs2' ...
+cc -o prog.o -c prog.c
+cc -o prog prog.o -Llibs1 -Llibs2 -lfoo -lbar
+</screen>
diff --git a/doc/generated/examples/troubleshoot_stacktrace_1.xml b/doc/generated/examples/troubleshoot_stacktrace_1.xml
new file mode 100644
index 0000000..7228f77
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_stacktrace_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'.
+</screen>
diff --git a/doc/generated/examples/troubleshoot_stacktrace_2.xml b/doc/generated/examples/troubleshoot_stacktrace_2.xml
new file mode 100644
index 0000000..6b88dd1
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_stacktrace_2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --debug=stacktrace</userinput>
+scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'.
+scons: internal stack trace:
+ File "bootstrap/src/engine/SCons/Job.py", line 199, in start
+ task.prepare()
+ File "bootstrap/src/engine/SCons/Script/Main.py", line 168, in prepare
+ return SCons.Taskmaster.OutOfDateTask.prepare(self)
+ File "bootstrap/src/engine/SCons/Taskmaster.py", line 189, in prepare
+ executor.prepare()
+ File "bootstrap/src/engine/SCons/Executor.py", line 392, in prepare
+ raise SCons.Errors.StopError(msg % (s, self.batches[0].targets[0]))
+</screen>
diff --git a/doc/generated/examples/troubleshoot_taskmastertrace_1.xml b/doc/generated/examples/troubleshoot_taskmastertrace_1.xml
new file mode 100644
index 0000000..f1c2582
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_taskmastertrace_1.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --taskmastertrace=- prog</userinput>
+
+Taskmaster: Looking for a node to evaluate
+Taskmaster: Considering node &lt;no_state 0 'prog'&gt; and its children:
+Taskmaster: &lt;no_state 0 'prog.o'&gt;
+Taskmaster: adjusted ref count: &lt;pending 1 'prog'&gt;, child 'prog.o'
+Taskmaster: Considering node &lt;no_state 0 'prog.o'&gt; and its children:
+Taskmaster: &lt;no_state 0 'prog.c'&gt;
+Taskmaster: &lt;no_state 0 'inc.h'&gt;
+Taskmaster: adjusted ref count: &lt;pending 1 'prog.o'&gt;, child 'prog.c'
+Taskmaster: adjusted ref count: &lt;pending 2 'prog.o'&gt;, child 'inc.h'
+Taskmaster: Considering node &lt;no_state 0 'prog.c'&gt; and its children:
+Taskmaster: Evaluating &lt;pending 0 'prog.c'&gt;
+
+Task.make_ready_current(): node &lt;pending 0 'prog.c'&gt;
+Task.prepare(): node &lt;up_to_date 0 'prog.c'&gt;
+Task.executed_with_callbacks(): node &lt;up_to_date 0 'prog.c'&gt;
+Task.postprocess(): node &lt;up_to_date 0 'prog.c'&gt;
+Task.postprocess(): removing &lt;up_to_date 0 'prog.c'&gt;
+Task.postprocess(): adjusted parent ref count &lt;pending 1 'prog.o'&gt;
+
+Taskmaster: Looking for a node to evaluate
+Taskmaster: Considering node &lt;no_state 0 'inc.h'&gt; and its children:
+Taskmaster: Evaluating &lt;pending 0 'inc.h'&gt;
+
+Task.make_ready_current(): node &lt;pending 0 'inc.h'&gt;
+Task.prepare(): node &lt;up_to_date 0 'inc.h'&gt;
+Task.executed_with_callbacks(): node &lt;up_to_date 0 'inc.h'&gt;
+Task.postprocess(): node &lt;up_to_date 0 'inc.h'&gt;
+Task.postprocess(): removing &lt;up_to_date 0 'inc.h'&gt;
+Task.postprocess(): adjusted parent ref count &lt;pending 0 'prog.o'&gt;
+
+Taskmaster: Looking for a node to evaluate
+Taskmaster: Considering node &lt;pending 0 'prog.o'&gt; and its children:
+Taskmaster: &lt;up_to_date 0 'prog.c'&gt;
+Taskmaster: &lt;up_to_date 0 'inc.h'&gt;
+Taskmaster: Evaluating &lt;pending 0 'prog.o'&gt;
+
+Task.make_ready_current(): node &lt;pending 0 'prog.o'&gt;
+Task.prepare(): node &lt;executing 0 'prog.o'&gt;
+Task.execute(): node &lt;executing 0 'prog.o'&gt;
+cc -o prog.o -c -I. prog.c
+Task.executed_with_callbacks(): node &lt;executing 0 'prog.o'&gt;
+Task.postprocess(): node &lt;executed 0 'prog.o'&gt;
+Task.postprocess(): removing &lt;executed 0 'prog.o'&gt;
+Task.postprocess(): adjusted parent ref count &lt;pending 0 'prog'&gt;
+
+Taskmaster: Looking for a node to evaluate
+Taskmaster: Considering node &lt;pending 0 'prog'&gt; and its children:
+Taskmaster: &lt;executed 0 'prog.o'&gt;
+Taskmaster: Evaluating &lt;pending 0 'prog'&gt;
+
+Task.make_ready_current(): node &lt;pending 0 'prog'&gt;
+Task.prepare(): node &lt;executing 0 'prog'&gt;
+Task.execute(): node &lt;executing 0 'prog'&gt;
+cc -o prog prog.o
+Task.executed_with_callbacks(): node &lt;executing 0 'prog'&gt;
+Task.postprocess(): node &lt;executed 0 'prog'&gt;
+
+Taskmaster: Looking for a node to evaluate
+Taskmaster: No candidate anymore.
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree1_1.xml b/doc/generated/examples/troubleshoot_tree1_1.xml
new file mode 100644
index 0000000..c082c0e
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree1_1.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all</userinput>
+cc -o f1.o -c -I. f1.c
+cc -o f2.o -c -I. f2.c
+cc -o f3.o -c -I. f3.c
+cc -o prog f1.o f2.o f3.o
++-.
+ +-SConstruct
+ +-f1.c
+ +-f1.o
+ | +-f1.c
+ | +-inc.h
+ +-f2.c
+ +-f2.o
+ | +-f2.c
+ | +-inc.h
+ +-f3.c
+ +-f3.o
+ | +-f3.c
+ | +-inc.h
+ +-inc.h
+ +-prog
+ +-f1.o
+ | +-f1.c
+ | +-inc.h
+ +-f2.o
+ | +-f2.c
+ | +-inc.h
+ +-f3.o
+ +-f3.c
+ +-inc.h
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree1_2.xml b/doc/generated/examples/troubleshoot_tree1_2.xml
new file mode 100644
index 0000000..0a27f8b
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree1_2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all f2.o</userinput>
+cc -o f2.o -c -I. f2.c
++-f2.o
+ +-f2.c
+ +-inc.h
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree1_3.xml b/doc/generated/examples/troubleshoot_tree1_3.xml
new file mode 100644
index 0000000..7d26ee9
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree1_3.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all f1.o f3.o</userinput>
+cc -o f1.o -c -I. f1.c
++-f1.o
+ +-f1.c
+ +-inc.h
+cc -o f3.o -c -I. f3.c
++-f3.o
+ +-f3.c
+ +-inc.h
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree1_4.xml b/doc/generated/examples/troubleshoot_tree1_4.xml
new file mode 100644
index 0000000..0d974db
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree1_4.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=status</userinput>
+cc -o f1.o -c -I. f1.c
+cc -o f2.o -c -I. f2.c
+cc -o f3.o -c -I. f3.c
+cc -o prog f1.o f2.o f3.o
+ E = exists
+ R = exists in repository only
+ b = implicit builder
+ B = explicit builder
+ S = side effect
+ P = precious
+ A = always build
+ C = current
+ N = no clean
+ H = no cache
+
+[E b ]+-.
+[E C ] +-SConstruct
+[E C ] +-f1.c
+[E B C ] +-f1.o
+[E C ] | +-f1.c
+[E C ] | +-inc.h
+[E C ] +-f2.c
+[E B C ] +-f2.o
+[E C ] | +-f2.c
+[E C ] | +-inc.h
+[E C ] +-f3.c
+[E B C ] +-f3.o
+[E C ] | +-f3.c
+[E C ] | +-inc.h
+[E C ] +-inc.h
+[E B C ] +-prog
+[E B C ] +-f1.o
+[E C ] | +-f1.c
+[E C ] | +-inc.h
+[E B C ] +-f2.o
+[E C ] | +-f2.c
+[E C ] | +-inc.h
+[E B C ] +-f3.o
+[E C ] +-f3.c
+[E C ] +-inc.h
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree1_5.xml b/doc/generated/examples/troubleshoot_tree1_5.xml
new file mode 100644
index 0000000..a219aef
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree1_5.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=derived</userinput>
+cc -o f1.o -c -I. f1.c
+cc -o f2.o -c -I. f2.c
+cc -o f3.o -c -I. f3.c
+cc -o prog f1.o f2.o f3.o
++-.
+ +-f1.o
+ +-f2.o
+ +-f3.o
+ +-prog
+ +-f1.o
+ +-f2.o
+ +-f3.o
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree1_6.xml b/doc/generated/examples/troubleshoot_tree1_6.xml
new file mode 100644
index 0000000..4d3c972
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree1_6.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=derived,status</userinput>
+cc -o f1.o -c -I. f1.c
+cc -o f2.o -c -I. f2.c
+cc -o f3.o -c -I. f3.c
+cc -o prog f1.o f2.o f3.o
+ E = exists
+ R = exists in repository only
+ b = implicit builder
+ B = explicit builder
+ S = side effect
+ P = precious
+ A = always build
+ C = current
+ N = no clean
+ H = no cache
+
+[E b ]+-.
+[E B C ] +-f1.o
+[E B C ] +-f2.o
+[E B C ] +-f3.o
+[E B C ] +-prog
+[E B C ] +-f1.o
+[E B C ] +-f2.o
+[E B C ] +-f3.o
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree2_1.xml b/doc/generated/examples/troubleshoot_tree2_1.xml
new file mode 100644
index 0000000..7b786e3
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree2_1.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all</userinput>
+cc -o f1.o -c -I. f1.c
+cc -o f2.o -c -I. f2.c
+cc -o f3.o -c -I. f3.c
+ar rc libfoo.a f1.o f2.o f3.o
+ranlib libfoo.a
+cc -o prog1.o -c -I. prog1.c
+cc -o prog1 prog1.o -L. -lfoo
+cc -o prog2.o -c -I. prog2.c
+cc -o prog2 prog2.o -L. -lfoo
++-.
+ +-SConstruct
+ +-f1.c
+ +-f1.o
+ | +-f1.c
+ | +-inc.h
+ +-f2.c
+ +-f2.o
+ | +-f2.c
+ | +-inc.h
+ +-f3.c
+ +-f3.o
+ | +-f3.c
+ | +-inc.h
+ +-inc.h
+ +-libfoo.a
+ | +-f1.o
+ | | +-f1.c
+ | | +-inc.h
+ | +-f2.o
+ | | +-f2.c
+ | | +-inc.h
+ | +-f3.o
+ | +-f3.c
+ | +-inc.h
+ +-prog1
+ | +-prog1.o
+ | | +-prog1.c
+ | | +-inc.h
+ | +-libfoo.a
+ | +-f1.o
+ | | +-f1.c
+ | | +-inc.h
+ | +-f2.o
+ | | +-f2.c
+ | | +-inc.h
+ | +-f3.o
+ | +-f3.c
+ | +-inc.h
+ +-prog1.c
+ +-prog1.o
+ | +-prog1.c
+ | +-inc.h
+ +-prog2
+ | +-prog2.o
+ | | +-prog2.c
+ | | +-inc.h
+ | +-libfoo.a
+ | +-f1.o
+ | | +-f1.c
+ | | +-inc.h
+ | +-f2.o
+ | | +-f2.c
+ | | +-inc.h
+ | +-f3.o
+ | +-f3.c
+ | +-inc.h
+ +-prog2.c
+ +-prog2.o
+ +-prog2.c
+ +-inc.h
+</screen>
diff --git a/doc/generated/examples/troubleshoot_tree2_2.xml b/doc/generated/examples/troubleshoot_tree2_2.xml
new file mode 100644
index 0000000..2338622
--- /dev/null
+++ b/doc/generated/examples/troubleshoot_tree2_2.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=prune</userinput>
+cc -o f1.o -c -I. f1.c
+cc -o f2.o -c -I. f2.c
+cc -o f3.o -c -I. f3.c
+ar rc libfoo.a f1.o f2.o f3.o
+ranlib libfoo.a
+cc -o prog1.o -c -I. prog1.c
+cc -o prog1 prog1.o -L. -lfoo
+cc -o prog2.o -c -I. prog2.c
+cc -o prog2 prog2.o -L. -lfoo
++-.
+ +-SConstruct
+ +-f1.c
+ +-f1.o
+ | +-f1.c
+ | +-inc.h
+ +-f2.c
+ +-f2.o
+ | +-f2.c
+ | +-inc.h
+ +-f3.c
+ +-f3.o
+ | +-f3.c
+ | +-inc.h
+ +-inc.h
+ +-libfoo.a
+ | +-[f1.o]
+ | +-[f2.o]
+ | +-[f3.o]
+ +-prog1
+ | +-prog1.o
+ | | +-prog1.c
+ | | +-inc.h
+ | +-[libfoo.a]
+ +-prog1.c
+ +-[prog1.o]
+ +-prog2
+ | +-prog2.o
+ | | +-prog2.c
+ | | +-inc.h
+ | +-[libfoo.a]
+ +-prog2.c
+ +-[prog2.o]
+</screen>
diff --git a/doc/generated/examples/variants_ex_1.xml b/doc/generated/examples/variants_ex_1.xml
new file mode 100644
index 0000000..cbc47ab
--- /dev/null
+++ b/doc/generated/examples/variants_ex_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q OS=linux</userinput>
+Install file: "build/linux/world/world.h" as "export/linux/include/world.h"
+cc -o build/linux/hello/hello.o -c -Iexport/linux/include build/linux/hello/hello.c
+cc -o build/linux/world/world.o -c -Iexport/linux/include build/linux/world/world.c
+ar rc build/linux/world/libworld.a build/linux/world/world.o
+ranlib build/linux/world/libworld.a
+Install file: "build/linux/world/libworld.a" as "export/linux/lib/libworld.a"
+cc -o build/linux/hello/hello build/linux/hello/hello.o -Lexport/linux/lib -lworld
+Install file: "build/linux/hello/hello" as "export/linux/bin/hello"
+</screen>
diff --git a/doc/generated/examples/variants_ex_2.xml b/doc/generated/examples/variants_ex_2.xml
new file mode 100644
index 0000000..ac883de
--- /dev/null
+++ b/doc/generated/examples/variants_ex_2.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q OS=windows</userinput>
+Install file: "build/windows/world/world.h" as "export/windows/include/world.h"
+cl /Fobuild\windows\hello\hello.obj /c build\windows\hello\hello.c /nologo /Iexport\windows\include
+cl /Fobuild\windows\world\world.obj /c build\windows\world\world.c /nologo /Iexport\windows\include
+lib /nologo /OUT:build\windows\world\world.lib build\windows\world\world.obj
+Install file: "build/windows/world/world.lib" as "export/windows/lib/world.lib"
+link /nologo /OUT:build\windows\hello\hello.exe /LIBPATH:export\windows\lib world.lib build\windows\hello\hello.obj
+embedManifestExeCheck(target, source, env)
+Install file: "build/windows/hello/hello.exe" as "export/windows/bin/hello.exe"
+</screen>
diff --git a/doc/generated/functions.gen b/doc/generated/functions.gen
new file mode 100644
index 0000000..072b91c
--- /dev/null
+++ b/doc/generated/functions.gen
@@ -0,0 +1,5120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+ <!ENTITY % builders-mod SYSTEM "builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "variables.mod">
+ %variables-mod;
+]>
+
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <varlistentry id="f-Action">
+ <term>
+ <literal>Action(action, [cmd/str/fun, [var, ...]] [option=value, ...])</literal>
+ </term>
+ <term>
+ <literal>env.Action(action, [cmd/str/fun, [var, ...]] [option=value, ...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Creates an Action object for
+the specified
+<varname>action</varname>.
+See the section "Action Objects,"
+below, for a complete explanation of the arguments and behavior.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the
+<function>env.Action</function>()
+form of the invocation will expand
+construction variables in any argument strings,
+including the
+<varname>action</varname>
+argument, at the time it is called
+using the construction variables in the
+<varname>env</varname>
+construction environment through which
+<function>env.Action</function>()
+was called.
+The
+<function>Action</function>()
+form delays all variable expansion
+until the Action object is actually used.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AddMethod">
+ <term>
+ <literal>AddMethod(object, function, [name])</literal>
+ </term>
+ <term>
+ <literal>env.AddMethod(function, [name])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When called with the
+<function>AddMethod</function>()
+form,
+adds the specified
+<varname>function</varname>
+to the specified
+<varname>object</varname>
+as the specified method
+<varname>name</varname>.
+When called with the
+<function>env.AddMethod</function>()
+form,
+adds the specified
+<varname>function</varname>
+to the construction environment
+<varname>env</varname>
+as the specified method
+<varname>name</varname>.
+In both cases, if
+<varname>name</varname>
+is omitted or
+<literal>None</literal>,
+the name of the
+specified
+<varname>function</varname>
+itself is used for the method name.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Note that the first argument to the function to
+# be attached as a method must be the object through
+# which the method will be called; the Python
+# convention is to call it 'self'.
+def my_method(self, arg):
+ print "my_method() got", arg
+
+# Use the global AddMethod() function to add a method
+# to the Environment class. This
+AddMethod(Environment, my_method)
+env = Environment()
+env.my_method('arg')
+
+# Add the function as a method, using the function
+# name for the method call.
+env = Environment()
+env.AddMethod(my_method, 'other_method_name')
+env.other_method_name('another arg')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AddOption">
+ <term>
+ <literal>AddOption(arguments)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function adds a new command-line option to be recognized.
+The specified
+<varname>arguments</varname>
+are the same as supported by the standard Python
+<function>optparse.add_option</function>()
+method (with a few additional capabilities noted below);
+see the documentation for
+<literal>optparse</literal>
+for a thorough discussion of its option-processing capabities.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+In addition to the arguments and values supported by the
+<function>optparse.add_option</function>()
+method,
+the SCons
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>
+function allows you to set the
+<literal>nargs</literal>
+keyword value to
+<literal>'?'</literal>
+(a string with just the question mark)
+to indicate that the specified long option(s) take(s) an
+<emphasis>optional</emphasis>
+argument.
+When
+<literal>nargs = '?'</literal>
+is passed to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>
+function, the
+<literal>const</literal>
+keyword argument
+may be used to supply the "default"
+value that should be used when the
+option is specified on the command line
+without an explicit argument.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If no
+<literal>default=</literal>
+keyword argument is supplied when calling
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>,
+the option will have a default value of
+<literal>None</literal>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Once a new command-line option has been added with
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>,
+the option value may be accessed using
+<function xmlns="http://www.scons.org/dbxsd/v1.0">GetOption</function>
+or
+<function>env.GetOption</function>().
+The value may also be set, using
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SetOption</function>
+or
+<function>env.SetOption</function>(),
+if conditions in a
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+require overriding any default value.
+Note, however, that a
+value specified on the command line will
+<emphasis>always</emphasis>
+override a value set by any SConscript file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Any specified
+<literal>help=</literal>
+strings for the new option(s)
+will be displayed by the
+<option>-H</option>
+or
+<option>-h</option>
+options
+(the latter only if no other help text is
+specified in the SConscript files).
+The help text for the local options specified by
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>
+will appear below the SCons options themselves,
+under a separate
+<literal>Local Options</literal>
+heading.
+The options will appear in the help text
+in the order in which the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>
+calls occur.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+AddOption('--prefix',
+ dest='prefix',
+ nargs=1, type='string',
+ action='store',
+ metavar='DIR',
+ help='installation prefix')
+env = Environment(PREFIX = GetOption('prefix'))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AddPostAction">
+ <term>
+ <literal>AddPostAction(target, action)</literal>
+ </term>
+ <term>
+ <literal>env.AddPostAction(target, action)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Arranges for the specified
+<varname>action</varname>
+to be performed
+after the specified
+<varname>target</varname>
+has been built.
+The specified action(s) may be
+an Action object, or anything that
+can be converted into an Action object
+(see below).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When multiple targets are supplied,
+the action may be called multiple times,
+once after each action that generates
+one or more targets in the list.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AddPreAction">
+ <term>
+ <literal>AddPreAction(target, action)</literal>
+ </term>
+ <term>
+ <literal>env.AddPreAction(target, action)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Arranges for the specified
+<varname>action</varname>
+to be performed
+before the specified
+<varname>target</varname>
+is built.
+The specified action(s) may be
+an Action object, or anything that
+can be converted into an Action object
+(see below).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When multiple targets are specified,
+the action(s) may be called multiple times,
+once before each action that generates
+one or more targets in the list.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that if any of the targets are built in multiple steps,
+the action will be invoked just
+before the "final" action that specifically
+generates the specified target(s).
+For example, when building an executable program
+from a specified source
+<filename>.c</filename>
+file via an intermediate object file:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+foo = Program('foo.c')
+AddPreAction(foo, 'pre_action')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The specified
+<literal>pre_action</literal>
+would be executed before
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+calls the link command that actually
+generates the executable program binary
+<filename>foo</filename>,
+not before compiling the
+<filename>foo.c</filename>
+file into an object file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Alias">
+ <term>
+ <literal>Alias(alias, [targets, [action]])</literal>
+ </term>
+ <term>
+ <literal>env.Alias(alias, [targets, [action]])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Creates one or more phony targets that
+expand to one or more other targets.
+An optional
+<varname>action</varname>
+(command)
+or list of actions
+can be specified that will be executed
+whenever the any of the alias targets are out-of-date.
+Returns the Node object representing the alias,
+which exists outside of any file system.
+This Node object, or the alias name,
+may be used as a dependency of any other target,
+including another alias.
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Alias</function>
+can be called multiple times for the same
+alias to add additional targets to the alias,
+or additional actions to the list for this alias.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Alias('install')
+Alias('install', '/usr/bin')
+Alias(['install', 'install-lib'], '/usr/local/lib')
+
+env.Alias('install', ['/usr/local/bin', '/usr/local/lib'])
+env.Alias('install', ['/usr/local/man'])
+
+env.Alias('update', ['file1', 'file2'], "update_database $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AllowSubstExceptions">
+ <term>
+ <literal>AllowSubstExceptions([exception, ...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the exceptions that will be allowed
+when expanding construction variables.
+By default,
+any construction variable expansions that generate a
+<literal>NameError</literal>
+or
+<literal>IndexError</literal>
+exception will expand to a
+<literal>''</literal>
+(a null string) and not cause scons to fail.
+All exceptions not in the specified list
+will generate an error message
+and terminate processing.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AllowSubstExceptions</function>
+is called multiple times,
+each call completely overwrites the previous list
+of allowed exceptions.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Requires that all construction variable names exist.
+# (You may wish to do this if you want to enforce strictly
+# that all construction variables must be defined before use.)
+AllowSubstExceptions()
+
+# Also allow a string containing a zero-division expansion
+# like '${1 / 0}' to evalute to ''.
+AllowSubstExceptions(IndexError, NameError, ZeroDivisionError)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AlwaysBuild">
+ <term>
+ <literal>AlwaysBuild(target, ...)</literal>
+ </term>
+ <term>
+ <literal>env.AlwaysBuild(target, ...)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Marks each given
+<varname>target</varname>
+so that it is always assumed to be out of date,
+and will always be rebuilt if needed.
+Note, however, that
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AlwaysBuild</function>
+does not add its target(s) to the default target list,
+so the targets will only be built
+if they are specified on the command line,
+or are a dependent of a target specified on the command line--but
+they will
+<emphasis>always</emphasis>
+be built if so specified.
+Multiple targets can be passed in to a single call to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">AlwaysBuild</function>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Append">
+ <term>
+ <literal>env.Append(key=val, [...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Appends the specified keyword arguments
+to the end of construction variables in the environment.
+If the Environment does not have
+the specified construction variable,
+it is simply added to the environment.
+If the values of the construction variable
+and the keyword argument are the same type,
+then the two values will be simply added together.
+Otherwise, the construction variable
+and the value of the keyword argument
+are both coerced to lists,
+and the lists are added together.
+(See also the Prepend method, below.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Append(CCFLAGS = ' -g', FOO = ['foo.yyy'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AppendENVPath">
+ <term>
+ <literal>env.AppendENVPath(name, newpath, [envname, sep, delete_existing])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This appends new path elements to the given path in the
+specified external environment
+(<literal>ENV</literal>
+by default).
+This will only add
+any particular path once (leaving the last one it encounters and
+ignoring the rest, to preserve path order),
+and to help assure this,
+will normalize all paths (using
+<function>os.path.normpath</function>
+and
+<function>os.path.normcase</function>).
+This can also handle the
+case where the given old path variable is a list instead of a
+string, in which case a list will be returned instead of a string.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If
+<varname>delete_existing</varname>
+is 0, then adding a path that already exists
+will not move it to the end; it will stay where it is in the list.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+print 'before:',env['ENV']['INCLUDE']
+include_path = '/foo/bar:/foo'
+env.AppendENVPath('INCLUDE', include_path)
+print 'after:',env['ENV']['INCLUDE']
+
+yields:
+before: /foo:/biz
+after: /biz:/foo/bar:/foo
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-AppendUnique">
+ <term>
+ <literal>env.AppendUnique(key=val, [...], delete_existing=0)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Appends the specified keyword arguments
+to the end of construction variables in the environment.
+If the Environment does not have
+the specified construction variable,
+it is simply added to the environment.
+If the construction variable being appended to is a list,
+then any value(s) that already exist in the
+construction variable will
+<emphasis>not</emphasis>
+be added again to the list.
+However, if delete_existing is 1,
+existing matching values are removed first, so
+existing values in the arg list move to the end of the list.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-BitKeeper">
+ <term>
+ <literal>env.BitKeeper()</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A factory function that
+returns a Builder object
+to be used to fetch source files
+using BitKeeper.
+The returned Builder
+is intended to be passed to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function is deprecated. For details, see the entry for the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SourceCode('.', env.BitKeeper())
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-BuildDir">
+ <term>
+ <literal>BuildDir(build_dir, src_dir, [duplicate])</literal>
+ </term>
+ <term>
+ <literal>env.BuildDir(build_dir, src_dir, [duplicate])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Deprecated synonyms for
+<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function>
+and
+<function>env.VariantDir</function>().
+The
+<varname>build_dir</varname>
+argument becomes the
+<varname>variant_dir</varname>
+argument of
+<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function>
+or
+<function>env.VariantDir</function>().
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Builder">
+ <term>
+ <literal>Builder(action, [arguments])</literal>
+ </term>
+ <term>
+ <literal>env.Builder(action, [arguments])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Creates a Builder object for
+the specified
+<varname>action</varname>.
+See the section "Builder Objects,"
+below, for a complete explanation of the arguments and behavior.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the
+<function>env.Builder</function>()
+form of the invocation will expand
+construction variables in any arguments strings,
+including the
+<varname>action</varname>
+argument,
+at the time it is called
+using the construction variables in the
+<varname>env</varname>
+construction environment through which
+<function>env.Builder</function>()
+was called.
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Builder</function>
+form delays all variable expansion
+until after the Builder object is actually called.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-CacheDir">
+ <term>
+ <literal>CacheDir(cache_dir)</literal>
+ </term>
+ <term>
+ <literal>env.CacheDir(cache_dir)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies that
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will maintain a cache of derived files in
+<varname>cache_dir</varname>.
+The derived files in the cache will be shared
+among all the builds using the same
+<function xmlns="http://www.scons.org/dbxsd/v1.0">CacheDir</function>
+call.
+Specifying a
+<varname>cache_dir</varname>
+of
+<literal>None</literal>
+disables derived file caching.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Calling
+<function>env.CacheDir</function>()
+will only affect targets built
+through the specified construction environment.
+Calling
+<function xmlns="http://www.scons.org/dbxsd/v1.0">CacheDir</function>
+sets a global default
+that will be used by all targets built
+through construction environments
+that do
+<emphasis>not</emphasis>
+have an
+<function>env.CacheDir</function>()
+specified.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When a
+<function>CacheDir</function>()
+is being used and
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+finds a derived file that needs to be rebuilt,
+it will first look in the cache to see if a
+derived file has already been built
+from identical input files and an identical build action
+(as incorporated into the MD5 build signature).
+If so,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will retrieve the file from the cache.
+If the derived file is not present in the cache,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will rebuild it and
+then place a copy of the built file in the cache
+(identified by its MD5 build signature),
+so that it may be retrieved by other
+builds that need to build the same derived file
+from identical inputs.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Use of a specified
+<function xmlns="http://www.scons.org/dbxsd/v1.0">CacheDir</function>
+may be disabled for any invocation
+by using the
+<option>--cache-disable</option>
+option.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the
+<option>--cache-force</option>
+option is used,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will place a copy of
+<emphasis>all</emphasis>
+derived files in the cache,
+even if they already existed
+and were not built by this invocation.
+This is useful to populate a cache
+the first time
+<function xmlns="http://www.scons.org/dbxsd/v1.0">CacheDir</function>
+is added to a build,
+or after using the
+<option>--cache-disable</option>
+option.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When using
+<function xmlns="http://www.scons.org/dbxsd/v1.0">CacheDir</function>,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will report,
+"Retrieved `file' from cache,"
+unless the
+<option>--cache-show</option>
+option is being used.
+When the
+<option>--cache-show</option>
+option is used,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will print the action that
+<emphasis>would</emphasis>
+have been used to build the file,
+without any indication that
+the file was actually retrieved from the cache.
+This is useful to generate build logs
+that are equivalent regardless of whether
+a given derived file has been built in-place
+or retrieved from the cache.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-NoCache"><function>NoCache</function></link>
+method can be used to disable caching of specific files. This can be
+useful if inputs and/or outputs of some tool are impossible to
+predict or prohibitively large.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Clean">
+ <term>
+ <literal>Clean(targets, files_or_dirs)</literal>
+ </term>
+ <term>
+ <literal>env.Clean(targets, files_or_dirs)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This specifies a list of files or directories which should be removed
+whenever the targets are specified with the
+<option>-c</option>
+command line option.
+The specified targets may be a list
+or an individual target.
+Multiple calls to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Clean</function>
+are legal,
+and create new targets or add files and directories to the
+clean list for the specified targets.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Multiple files or directories should be specified
+either as separate arguments to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Clean</function>
+method, or as a list.
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Clean</function>
+will also accept the return value of any of the construction environment
+Builder methods.
+Examples:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The related
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-NoClean"><function>NoClean</function></link>
+function overrides calling
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Clean</function>
+for the same target,
+and any targets passed to both functions will
+<emphasis>not</emphasis>
+be removed by the
+<option>-c</option>
+option.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Clean('foo', ['bar', 'baz'])
+Clean('dist', env.Program('hello', 'hello.c'))
+Clean(['foo', 'bar'], 'something_else_to_clean')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+In this example,
+installing the project creates a subdirectory for the documentation.
+This statement causes the subdirectory to be removed
+if the project is deinstalled.
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Clean(docdir, os.path.join(docdir, projectname))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Clone">
+ <term>
+ <literal>env.Clone([key=val, ...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns a separate copy of a construction environment.
+If there are any keyword arguments specified,
+they are added to the returned copy,
+overwriting any existing values
+for the keywords.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env2 = env.Clone()
+env3 = env.Clone(CCFLAGS = '-g')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additionally, a list of tools and a toolpath may be specified, as in
+the Environment constructor:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def MyTool(env): env['FOO'] = 'bar'
+env4 = env.Clone(tools = ['msvc', MyTool])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<varname>parse_flags</varname>
+keyword argument is also recognized:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# create an environment for compiling programs that use wxWidgets
+wx_env = env.Clone(parse_flags = '!wx-config --cflags --cxxflags')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Command">
+ <term>
+ <literal>Command(target, source, action, [key=val, ...])</literal>
+ </term>
+ <term>
+ <literal>env.Command(target, source, action, [key=val, ...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Executes a specific action
+(or list of actions)
+to build a target file or files.
+This is more convenient
+than defining a separate Builder object
+for a single special-case build.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+As a special case, the
+<varname>source_scanner</varname>
+keyword argument can
+be used to specify
+a Scanner object
+that will be used to scan the sources.
+(The global
+<literal>DirScanner</literal>
+object can be used
+if any of the sources will be directories
+that must be scanned on-disk for
+changes to files that aren't
+already specified in other Builder of function calls.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Any other keyword arguments specified override any
+same-named existing construction variables.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An action can be an external command,
+specified as a string,
+or a callable Python object;
+see "Action Objects," below,
+for more complete information.
+Also note that a string specifying an external command
+may be preceded by an
+<literal>@</literal>
+(at-sign)
+to suppress printing the command in question,
+or by a
+<literal>-</literal>
+(hyphen)
+to ignore the exit status of the external command.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Command('foo.out', 'foo.in',
+ "$FOO_BUILD &lt; $SOURCES &gt; $TARGET")
+
+env.Command('bar.out', 'bar.in',
+ ["rm -f $TARGET",
+ "$BAR_BUILD &lt; $SOURCES &gt; $TARGET"],
+ ENV = {'PATH' : '/usr/local/bin/'})
+
+def rename(env, target, source):
+ import os
+ os.rename('.tmp', str(target[0]))
+
+env.Command('baz.out', 'baz.in',
+ ["$BAZ_BUILD &lt; $SOURCES &gt; .tmp",
+ rename ])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Command</function>
+function will usually assume, by default,
+that the specified targets and/or sources are Files,
+if no other part of the configuration
+identifies what type of entry it is.
+If necessary, you can explicitly specify
+that targets or source nodes should
+be treated as directoriese
+by using the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Dir"><function>Dir</function></link>
+or
+<function>env.Dir</function>()
+functions.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Command('ddd.list', Dir('ddd'), 'ls -l $SOURCE &gt; $TARGET')
+
+env['DISTDIR'] = 'destination/directory'
+env.Command(env.Dir('$DISTDIR')), None, make_distdir)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+(Also note that SCons will usually
+automatically create any directory necessary to hold a target file,
+so you normally don't need to create directories by hand.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Configure">
+ <term>
+ <literal>Configure(env, [custom_tests, conf_dir, log_file, config_h])</literal>
+ </term>
+ <term>
+ <literal>env.Configure([custom_tests, conf_dir, log_file, config_h])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Creates a Configure object for integrated
+functionality similar to GNU autoconf.
+See the section "Configure Contexts,"
+below, for a complete explanation of the arguments and behavior.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Copy">
+ <term>
+ <literal>env.Copy([key=val, ...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A now-deprecated synonym for
+<function>env.Clone</function>().
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-CVS">
+ <term>
+ <literal>env.CVS(repository, module)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A factory function that
+returns a Builder object
+to be used to fetch source files
+from the specified
+CVS
+<varname>repository</varname>.
+The returned Builder
+is intended to be passed to the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-SourceCode"><function>SourceCode</function></link>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function is deprecated. For details, see the entry for the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The optional specified
+<varname>module</varname>
+will be added to the beginning
+of all repository path names;
+this can be used, in essence,
+to strip initial directory names
+from the repository path names,
+so that you only have to
+replicate part of the repository
+directory hierarchy in your
+local build directory.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Will fetch foo/bar/src.c
+# from /usr/local/CVSROOT/foo/bar/src.c.
+env.SourceCode('.', env.CVS('/usr/local/CVSROOT'))
+
+# Will fetch bar/src.c
+# from /usr/local/CVSROOT/foo/bar/src.c.
+env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo'))
+
+# Will fetch src.c
+# from /usr/local/CVSROOT/foo/bar/src.c.
+env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo/bar'))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Decider">
+ <term>
+ <literal>Decider(function)</literal>
+ </term>
+ <term>
+ <literal>env.Decider(function)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies that all up-to-date decisions for
+targets built through this construction environment
+will be handled by the specified
+<varname>function</varname>.
+The
+<varname>function</varname>
+can be one of the following strings
+that specify the type of decision function
+to be performed:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<variablelist>
+<varlistentry>
+<term><literal>timestamp-newer</literal></term>
+<listitem>
+<para>
+Specifies that a target shall be considered out of date and rebuilt
+if the dependency's timestamp is newer than the target file's timestamp.
+This is the behavior of the classic Make utility,
+and
+<literal>make</literal>
+can be used a synonym for
+<literal>timestamp-newer</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>timestamp-match</literal></term>
+<listitem>
+<para>
+Specifies that a target shall be considered out of date and rebuilt
+if the dependency's timestamp is different than the
+timestamp recorded the last time the target was built.
+This provides behavior very similar to the classic Make utility
+(in particular, files are not opened up so that their
+contents can be checksummed)
+except that the target will also be rebuilt if a
+dependency file has been restored to a version with an
+<emphasis>earlier</emphasis>
+timestamp, such as can happen when restoring files from backup archives.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>MD5</literal></term>
+<listitem>
+<para>
+Specifies that a target shall be considered out of date and rebuilt
+if the dependency's content has changed sine the last time
+the target was built,
+as determined be performing an MD5 checksum
+on the dependency's contents
+and comparing it to the checksum recorded the
+last time the target was built.
+<literal>content</literal>
+can be used as a synonym for
+<literal>MD5</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>MD5-timestamp</literal></term>
+<listitem>
+<para>
+Specifies that a target shall be considered out of date and rebuilt
+if the dependency's content has changed sine the last time
+the target was built,
+except that dependencies with a timestamp that matches
+the last time the target was rebuilt will be
+assumed to be up-to-date and
+<emphasis>not</emphasis>
+rebuilt.
+This provides behavior very similar
+to the
+<literal>MD5</literal>
+behavior of always checksumming file contents,
+with an optimization of not checking
+the contents of files whose timestamps haven't changed.
+The drawback is that SCons will
+<emphasis>not</emphasis>
+detect if a file's content has changed
+but its timestamp is the same,
+as might happen in an automated script
+that runs a build,
+updates a file,
+and runs the build again,
+all within a single second.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Use exact timestamp matches by default.
+Decider('timestamp-match')
+
+# Use MD5 content signatures for any targets built
+# with the attached construction environment.
+env.Decider('content')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+In addition to the above already-available functions,
+the
+<varname>function</varname>
+argument may be an actual Python function
+that takes the following three arguments:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<variablelist>
+<varlistentry>
+<term><parameter>dependency</parameter></term>
+<listitem>
+<para>
+The Node (file) which
+should cause the
+<varname>target</varname>
+to be rebuilt
+if it has "changed" since the last tme
+<varname>target</varname>
+was built.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><parameter>target</parameter></term>
+<listitem>
+<para>
+The Node (file) being built.
+In the normal case,
+this is what should get rebuilt
+if the
+<varname>dependency</varname>
+has "changed."
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><parameter>prev_ni</parameter></term>
+<listitem>
+<para>
+Stored information about the state of the
+<varname>dependency</varname>
+the last time the
+<varname>target</varname>
+was built.
+This can be consulted to match various
+file characteristics
+such as the timestamp,
+size, or content signature.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<varname>function</varname>
+should return a
+<literal>True</literal>
+(non-zero)
+value if the
+<varname>dependency</varname>
+has "changed" since the last time
+the
+<varname>target</varname>
+was built
+(indicating that the target
+<emphasis>should</emphasis>
+be rebuilt),
+and
+<literal>False</literal>
+(zero)
+otherwise
+(indicating that the target should
+<emphasis>not</emphasis>
+be rebuilt).
+Note that the decision can be made
+using whatever criteria are appopriate.
+Ignoring some or all of the function arguments
+is perfectly normal.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def my_decider(dependency, target, prev_ni):
+ return not os.path.exists(str(target))
+
+env.Decider(my_decider)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Default">
+ <term>
+ <literal>Default(targets)</literal>
+ </term>
+ <term>
+ <literal>env.Default(targets)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This specifies a list of default targets,
+which will be built by
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+if no explicit targets are given on the command line.
+Multiple calls to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Default</function>
+are legal,
+and add to the list of default targets.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Multiple targets should be specified as
+separate arguments to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Default</function>
+method, or as a list.
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Default</function>
+will also accept the Node returned by any
+of a construction environment's
+builder methods.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Default('foo', 'bar', 'baz')
+env.Default(['a', 'b', 'c'])
+hello = env.Program('hello', 'hello.c')
+env.Default(hello)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An argument to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Default</function>
+of
+<literal>None</literal>
+will clear all default targets.
+Later calls to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Default</function>
+will add to the (now empty) default-target list
+like normal.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The current list of targets added using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Default</function>
+function or method is available in the
+<literal>DEFAULT_TARGETS</literal>
+list;
+see below.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-DefaultEnvironment">
+ <term>
+ <literal>DefaultEnvironment([args])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Creates and returns a default construction environment object.
+This construction environment is used internally by SCons
+in order to execute many of the global functions in this list,
+and to fetch source files transparently
+from source code management systems.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Depends">
+ <term>
+ <literal>Depends(target, dependency)</literal>
+ </term>
+ <term>
+ <literal>env.Depends(target, dependency)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies an explicit dependency;
+the
+<varname>target</varname>
+will be rebuilt
+whenever the
+<varname>dependency</varname>
+has changed.
+Both the specified
+<varname>target</varname>
+and
+<varname>dependency</varname>
+can be a string
+(usually the path name of a file or directory)
+or Node objects,
+or a list of strings or Node objects
+(such as returned by a Builder call).
+This should only be necessary
+for cases where the dependency
+is not caught by a Scanner
+for the file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Depends('foo', 'other-input-file-for-foo')
+
+mylib = env.Library('mylib.c')
+installed_lib = env.Install('lib', mylib)
+bar = env.Program('bar.c')
+
+# Arrange for the library to be copied into the installation
+# directory before trying to build the "bar" program.
+# (Note that this is for example only. A "real" library
+# dependency would normally be configured through the $LIBS
+# and $LIBPATH variables, not using an env.Depends() call.)
+
+env.Depends(bar, installed_lib)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Dictionary">
+ <term>
+ <literal>env.Dictionary([vars])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns a dictionary object
+containing copies of all of the
+construction variables in the environment.
+If there are any variable names specified,
+only the specified construction
+variables are returned in the dictionary.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+dict = env.Dictionary()
+cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Dir">
+ <term>
+ <literal>Dir(name, [directory])</literal>
+ </term>
+ <term>
+ <literal>env.Dir(name, [directory])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This returns a Directory Node,
+an object that represents the specified directory
+<varname>name</varname>.
+<varname>name</varname>
+can be a relative or absolute path.
+<varname>directory</varname>
+is an optional directory that will be used as the parent directory.
+If no
+<varname>directory</varname>
+is specified, the current script's directory is used as the parent.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If
+<varname>name</varname>
+is a list, SCons returns a list of Dir nodes.
+Construction variables are expanded in
+<varname>name</varname>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Directory Nodes can be used anywhere you
+would supply a string as a directory name
+to a Builder method or function.
+Directory Nodes have attributes and methods
+that are useful in many situations;
+see "File and Directory Nodes," below.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Dump">
+ <term>
+ <literal>env.Dump([key])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns a pretty printable representation of the environment.
+<varname>key</varname>,
+if not
+<literal>None</literal>,
+should be a string containing the name of the variable of interest.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This SConstruct:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env=Environment()
+print env.Dump('CCCOM')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+will print:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+'$CC -c -o $TARGET $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES'
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+While this SConstruct:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env=Environment()
+print env.Dump()
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+will print:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+{ 'AR': 'ar',
+ 'ARCOM': '$AR $ARFLAGS $TARGET $SOURCES\n$RANLIB $RANLIBFLAGS $TARGET',
+ 'ARFLAGS': ['r'],
+ 'AS': 'as',
+ 'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES',
+ 'ASFLAGS': [],
+ ...
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-EnsurePythonVersion">
+ <term>
+ <literal>EnsurePythonVersion(major, minor)</literal>
+ </term>
+ <term>
+ <literal>env.EnsurePythonVersion(major, minor)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Ensure that the Python version is at least
+<varname>major</varname>.<varname>minor</varname>.
+This function will
+print out an error message and exit SCons with a non-zero exit code if the
+actual Python version is not late enough.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+EnsurePythonVersion(2,2)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-EnsureSConsVersion">
+ <term>
+ <literal>EnsureSConsVersion(major, minor, [revision])</literal>
+ </term>
+ <term>
+ <literal>env.EnsureSConsVersion(major, minor, [revision])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Ensure that the SCons version is at least
+<varname>major.minor</varname>,
+or
+<varname>major.minor.revision</varname>.
+if
+<varname>revision</varname>
+is specified.
+This function will
+print out an error message and exit SCons with a non-zero exit code if the
+actual SCons version is not late enough.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+EnsureSConsVersion(0,14)
+
+EnsureSConsVersion(0,96,90)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Environment">
+ <term>
+ <literal>Environment([key=value, ...])</literal>
+ </term>
+ <term>
+ <literal>env.Environment([key=value, ...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Return a new construction environment
+initialized with the specified
+<varname>key</varname><literal>=</literal><varname>value</varname>
+pairs.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Execute">
+ <term>
+ <literal>Execute(action, [strfunction, varlist])</literal>
+ </term>
+ <term>
+ <literal>env.Execute(action, [strfunction, varlist])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Executes an Action object.
+The specified
+<varname>action</varname>
+may be an Action object
+(see the section "Action Objects,"
+below, for a complete explanation of the arguments and behavior),
+or it may be a command-line string,
+list of commands,
+or executable Python function,
+each of which will be converted
+into an Action object
+and then executed.
+The exit value of the command
+or return value of the Python function
+will be returned.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will print an error message if the executed
+<varname>action</varname>
+fails--that is,
+exits with or returns a non-zero value.
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will
+<emphasis>not</emphasis>,
+however,
+automatically terminate the build
+if the specified
+<varname>action</varname>
+fails.
+If you want the build to stop in response to a failed
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Execute</function>
+call,
+you must explicitly check for a non-zero return value:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Execute(Copy('file.out', 'file.in'))
+
+if Execute("mkdir sub/dir/ectory"):
+ # The mkdir failed, don't try to build.
+ Exit(1)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Exit">
+ <term>
+ <literal>Exit([value])</literal>
+ </term>
+ <term>
+ <literal>env.Exit([value])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This tells
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to exit immediately
+with the specified
+<varname>value</varname>.
+A default exit value of
+<literal>0</literal>
+(zero)
+is used if no value is specified.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Export">
+ <term>
+ <literal>Export(vars)</literal>
+ </term>
+ <term>
+ <literal>env.Export(vars)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This tells
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to export a list of variables from the current
+SConscript file to all other SConscript files.
+The exported variables are kept in a global collection,
+so subsequent calls to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Export</function>
+will over-write previous exports that have the same name.
+Multiple variable names can be passed to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Export</function>
+as separate arguments or as a list.
+Keyword arguments can be used to provide names and their values.
+A dictionary can be used to map variables to a different name when exported.
+Both local variables and global variables can be exported.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment()
+# Make env available for all SConscript files to Import().
+Export("env")
+
+package = 'my_name'
+# Make env and package available for all SConscript files:.
+Export("env", "package")
+
+# Make env and package available for all SConscript files:
+Export(["env", "package"])
+
+# Make env available using the name debug:
+Export(debug = env)
+
+# Make env available using the name debug:
+Export({"debug":env})
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</function>
+function supports an
+<varname>exports</varname>
+argument that makes it easier to to export a variable or
+set of variables to a single SConscript file.
+See the description of the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</function>
+function, below.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-File">
+ <term>
+ <literal>File(name, [directory])</literal>
+ </term>
+ <term>
+ <literal>env.File(name, [directory])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This returns a
+File Node,
+an object that represents the specified file
+<varname>name</varname>.
+<varname>name</varname>
+can be a relative or absolute path.
+<varname>directory</varname>
+is an optional directory that will be used as the parent directory.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If
+<varname>name</varname>
+is a list, SCons returns a list of File nodes.
+Construction variables are expanded in
+<varname>name</varname>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+File Nodes can be used anywhere you
+would supply a string as a file name
+to a Builder method or function.
+File Nodes have attributes and methods
+that are useful in many situations;
+see "File and Directory Nodes," below.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-FindFile">
+ <term>
+ <literal>FindFile(file, dirs)</literal>
+ </term>
+ <term>
+ <literal>env.FindFile(file, dirs)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Search for
+<varname>file</varname>
+in the path specified by
+<varname>dirs</varname>.
+<varname>dirs</varname>
+may be a list of directory names or a single directory name.
+In addition to searching for files that exist in the filesystem,
+this function also searches for derived files
+that have not yet been built.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+foo = env.FindFile('foo', ['dir1', 'dir2'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-FindInstalledFiles">
+ <term>
+ <literal>FindInstalledFiles()</literal>
+ </term>
+ <term>
+ <literal>env.FindInstalledFiles()</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns the list of targets set up by the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Install"><function>Install</function></link>
+or
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-InstallAs"><function>InstallAs</function></link>
+builders.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function serves as a convenient method to select the contents of
+a binary package.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Install( '/bin', [ 'executable_a', 'executable_b' ] )
+
+# will return the file node list
+# [ '/bin/executable_a', '/bin/executable_b' ]
+FindInstalledFiles()
+
+Install( '/lib', [ 'some_library' ] )
+
+# will return the file node list
+# [ '/bin/executable_a', '/bin/executable_b', '/lib/some_library' ]
+FindInstalledFiles()
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-FindPathDirs">
+ <term>
+ <literal>FindPathDirs(variable)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns a function
+(actually a callable Python object)
+intended to be used as the
+<varname>path_function</varname>
+of a Scanner object.
+The returned object will look up the specified
+<varname>variable</varname>
+in a construction environment
+and treat the construction variable's value as a list of
+directory paths that should be searched
+(like
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPPATH"><envar>$CPPPATH</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBPATH"><envar>$LIBPATH</envar></link>,
+etc.).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that use of
+<function xmlns="http://www.scons.org/dbxsd/v1.0">FindPathDirs</function>
+is generally preferable to
+writing your own
+<varname>path_function</varname>
+for the following reasons:
+1) The returned list will contain all appropriate directories
+found in source trees
+(when
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-VariantDir"><function>VariantDir</function></link>
+is used)
+or in code repositories
+(when
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Repository</function>
+or the
+<option>-Y</option>
+option are used).
+2) scons will identify expansions of
+<varname>variable</varname>
+that evaluate to the same list of directories as,
+in fact, the same list,
+and avoid re-scanning the directories for files,
+when possible.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def my_scan(node, env, path, arg):
+ # Code to scan file contents goes here...
+ return include_files
+
+scanner = Scanner(name = 'myscanner',
+ function = my_scan,
+ path_function = FindPathDirs('MYPATH'))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-FindSourceFiles">
+ <term>
+ <literal>FindSourceFiles(node='"."')</literal>
+ </term>
+ <term>
+ <literal>env.FindSourceFiles(node='"."')</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns the list of nodes which serve as the source of the built files.
+It does so by inspecting the dependency tree starting at the optional
+argument
+<varname>node</varname>
+which defaults to the '"."'-node. It will then return all leaves of
+<varname>node</varname>.
+These are all children which have no further children.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function is a convenient method to select the contents of a Source
+Package.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Program( 'src/main_a.c' )
+Program( 'src/main_b.c' )
+Program( 'main_c.c' )
+
+# returns ['main_c.c', 'src/main_a.c', 'SConstruct', 'src/main_b.c']
+FindSourceFiles()
+
+# returns ['src/main_b.c', 'src/main_a.c' ]
+FindSourceFiles( 'src' )
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+As you can see build support files (SConstruct in the above example)
+will also be returned by this function.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Flatten">
+ <term>
+ <literal>Flatten(sequence)</literal>
+ </term>
+ <term>
+ <literal>env.Flatten(sequence)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Takes a sequence (that is, a Python list or tuple)
+that may contain nested sequences
+and returns a flattened list containing
+all of the individual elements in any sequence.
+This can be helpful for collecting
+the lists returned by calls to Builders;
+other Builders will automatically
+flatten lists specified as input,
+but direct Python manipulation of
+these lists does not.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+foo = Object('foo.c')
+bar = Object('bar.c')
+
+# Because `foo' and `bar' are lists returned by the Object() Builder,
+# `objects' will be a list containing nested lists:
+objects = ['f1.o', foo, 'f2.o', bar, 'f3.o']
+
+# Passing such a list to another Builder is all right because
+# the Builder will flatten the list automatically:
+Program(source = objects)
+
+# If you need to manipulate the list directly using Python, you need to
+# call Flatten() yourself, or otherwise handle nested lists:
+for object in Flatten(objects):
+ print str(object)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-GetBuildFailures">
+ <term>
+ <literal>GetBuildFailures()</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns a list of exceptions for the
+actions that failed while
+attempting to build targets.
+Each element in the returned list is a
+<classname>BuildError</classname>
+object
+with the following attributes
+that record various aspects
+of the build failure:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>.node</literal>
+The node that was being built
+when the build failure occurred.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>.status</literal>
+The numeric exit status
+returned by the command or Python function
+that failed when trying to build the
+specified Node.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>.errstr</literal>
+The SCons error string
+describing the build failure.
+(This is often a generic
+message like "Error 2"
+to indicate that an executed
+command exited with a status of 2.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>.filename</literal>
+The name of the file or
+directory that actually caused the failure.
+This may be different from the
+<literal>.node</literal>
+attribute.
+For example,
+if an attempt to build a target named
+<filename>sub/dir/target</filename>
+fails because the
+<filename>sub/dir</filename>
+directory could not be created,
+then the
+<literal>.node</literal>
+attribute will be
+<filename>sub/dir/target</filename>
+but the
+<literal>.filename</literal>
+attribute will be
+<filename>sub/dir</filename>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>.executor</literal>
+The SCons Executor object
+for the target Node
+being built.
+This can be used to retrieve
+the construction environment used
+for the failed action.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>.action</literal>
+The actual SCons Action object that failed.
+This will be one specific action
+out of the possible list of
+actions that would have been
+executed to build the target.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>.command</literal>
+The actual expanded command that was executed and failed,
+after expansion of
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-TARGET"><envar>$TARGET</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SOURCE"><envar>$SOURCE</envar></link>,
+and other construction variables.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">GetBuildFailures</function>
+function
+will always return an empty list
+until any build failure has occurred,
+which means that
+<function xmlns="http://www.scons.org/dbxsd/v1.0">GetBuildFailures</function>
+will always return an empty list
+while the
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+files are being read.
+Its primary intended use is
+for functions that will be
+executed before SCons exits
+by passing them to the
+standard Python
+<function>atexit.register</function>()
+function.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+import atexit
+
+def print_build_failures():
+ from SCons.Script import GetBuildFailures
+ for bf in GetBuildFailures():
+ print "%s failed: %s" % (bf.node, bf.errstr)
+
+atexit.register(print_build_failures)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-GetBuildPath">
+ <term>
+ <literal>GetBuildPath(file, [...])</literal>
+ </term>
+ <term>
+ <literal>env.GetBuildPath(file, [...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns the
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+path name (or names) for the specified
+<varname>file</varname>
+(or files).
+The specified
+<varname>file</varname>
+or files
+may be
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+Nodes or strings representing path names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-GetLaunchDir">
+ <term>
+ <literal>GetLaunchDir()</literal>
+ </term>
+ <term>
+ <literal>env.GetLaunchDir()</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns the absolute path name of the directory from which
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+was initially invoked.
+This can be useful when using the
+<option>-u</option>,
+<option>-U</option>
+or
+<option>-D</option>
+options, which internally
+change to the directory in which the
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConstruct</filename>
+file is found.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-GetOption">
+ <term>
+ <literal>GetOption(name)</literal>
+ </term>
+ <term>
+ <literal>env.GetOption(name)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function provides a way to query the value of
+SCons options set on scons command line
+(or set using the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-SetOption"><function>SetOption</function></link>
+function).
+The options supported are:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<variablelist>
+<varlistentry>
+<term><literal>cache_debug</literal></term>
+<listitem>
+<para>
+which corresponds to --cache-debug;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>cache_disable</literal></term>
+<listitem>
+<para>
+which corresponds to --cache-disable;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>cache_force</literal></term>
+<listitem>
+<para>
+which corresponds to --cache-force;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>cache_show</literal></term>
+<listitem>
+<para>
+which corresponds to --cache-show;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>clean</literal></term>
+<listitem>
+<para>
+which corresponds to -c, --clean and --remove;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>config</literal></term>
+<listitem>
+<para>
+which corresponds to --config;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>directory</literal></term>
+<listitem>
+<para>
+which corresponds to -C and --directory;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>diskcheck</literal></term>
+<listitem>
+<para>
+which corresponds to --diskcheck
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>duplicate</literal></term>
+<listitem>
+<para>
+which corresponds to --duplicate;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>file</literal></term>
+<listitem>
+<para>
+which corresponds to -f, --file, --makefile and --sconstruct;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>help</literal></term>
+<listitem>
+<para>
+which corresponds to -h and --help;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>ignore_errors</literal></term>
+<listitem>
+<para>
+which corresponds to --ignore-errors;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>implicit_cache</literal></term>
+<listitem>
+<para>
+which corresponds to --implicit-cache;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>implicit_deps_changed</literal></term>
+<listitem>
+<para>
+which corresponds to --implicit-deps-changed;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>implicit_deps_unchanged</literal></term>
+<listitem>
+<para>
+which corresponds to --implicit-deps-unchanged;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>interactive</literal></term>
+<listitem>
+<para>
+which corresponds to --interact and --interactive;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>keep_going</literal></term>
+<listitem>
+<para>
+which corresponds to -k and --keep-going;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>max_drift</literal></term>
+<listitem>
+<para>
+which corresponds to --max-drift;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no_exec</literal></term>
+<listitem>
+<para>
+which corresponds to -n, --no-exec, --just-print, --dry-run and --recon;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no_site_dir</literal></term>
+<listitem>
+<para>
+which corresponds to --no-site-dir;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>num_jobs</literal></term>
+<listitem>
+<para>
+which corresponds to -j and --jobs;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>profile_file</literal></term>
+<listitem>
+<para>
+which corresponds to --profile;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>question</literal></term>
+<listitem>
+<para>
+which corresponds to -q and --question;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>random</literal></term>
+<listitem>
+<para>
+which corresponds to --random;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>repository</literal></term>
+<listitem>
+<para>
+which corresponds to -Y, --repository and --srcdir;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>silent</literal></term>
+<listitem>
+<para>
+which corresponds to -s, --silent and --quiet;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>site_dir</literal></term>
+<listitem>
+<para>
+which corresponds to --site-dir;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>stack_size</literal></term>
+<listitem>
+<para>
+which corresponds to --stack-size;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>taskmastertrace_file</literal></term>
+<listitem>
+<para>
+which corresponds to --taskmastertrace; and
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>warn</literal></term>
+<listitem>
+<para>
+which corresponds to --warn and --warning.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+See the documentation for the
+corresponding command line object for information about each specific
+option.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Glob">
+ <term>
+ <literal>Glob(pattern, [ondisk, source, strings])</literal>
+ </term>
+ <term>
+ <literal>env.Glob(pattern, [ondisk, source, strings])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns Nodes (or strings) that match the specified
+<varname>pattern</varname>,
+relative to the directory of the current
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+file.
+The
+<function>env.Glob</function>()
+form performs string substition on
+<varname>pattern</varname>
+and returns whatever matches
+the resulting expanded pattern.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The specified
+<varname>pattern</varname>
+uses Unix shell style metacharacters for matching:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ * matches everything
+ ? matches any single character
+ [seq] matches any character in seq
+ [!seq] matches any char not in seq
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the first character of a filename is a dot,
+it must be matched explicitly.
+Character matches do
+<emphasis>not</emphasis>
+span directory separators.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Glob</function>
+knows about
+repositories
+(see the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Repository"><function>Repository</function></link>
+function)
+and source directories
+(see the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-VariantDir"><function>VariantDir</function></link>
+function)
+and
+returns a Node (or string, if so configured)
+in the local (SConscript) directory
+if matching Node is found
+anywhere in a corresponding
+repository or source directory.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<varname>ondisk</varname>
+argument may be set to
+<literal>False</literal>
+(or any other non-true value)
+to disable the search for matches on disk,
+thereby only returning matches among
+already-configured File or Dir Nodes.
+The default behavior is to
+return corresponding Nodes
+for any on-disk matches found.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<varname>source</varname>
+argument may be set to
+<literal>True</literal>
+(or any equivalent value)
+to specify that,
+when the local directory is a
+<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function>,
+the returned Nodes should be from the
+corresponding source directory,
+not the local directory.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<varname>strings</varname>
+argument may be set to
+<literal>True</literal>
+(or any equivalent value)
+to have the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Glob</function>
+function return strings, not Nodes,
+that represent the matched files or directories.
+The returned strings will be relative to
+the local (SConscript) directory.
+(Note that This may make it easier to perform
+arbitrary manipulation of file names,
+but if the returned strings are
+passed to a different
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+file,
+any Node translation will be relative
+to the other
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+directory,
+not the original
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+directory.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Program('foo', Glob('*.c'))
+Zip('/tmp/everything', Glob('.??*') + Glob('*'))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Help">
+ <term>
+ <literal>Help(text)</literal>
+ </term>
+ <term>
+ <literal>env.Help(text)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This specifies help text to be printed if the
+<option>-h</option>
+argument is given to
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>.
+If
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Help</function>
+is called multiple times, the text is appended together in the order
+that
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Help</function>
+is called.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Ignore">
+ <term>
+ <literal>Ignore(target, dependency)</literal>
+ </term>
+ <term>
+ <literal>env.Ignore(target, dependency)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The specified dependency file(s)
+will be ignored when deciding if
+the target file(s) need to be rebuilt.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+You can also use
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Ignore</function>
+to remove a target from the default build.
+In order to do this you must specify the directory the target will
+be built in as the target, and the file you want to skip building
+as the dependency.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that this will only remove the dependencies listed from
+the files built by default. It will still be built if that
+dependency is needed by another object being built.
+See the third and forth examples below.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Ignore('foo', 'foo.c')
+env.Ignore('bar', ['bar1.h', 'bar2.h'])
+env.Ignore('.','foobar.obj')
+env.Ignore('bar','bar/foobar.obj')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Import">
+ <term>
+ <literal>Import(vars)</literal>
+ </term>
+ <term>
+ <literal>env.Import(vars)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This tells
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to import a list of variables into the current SConscript file. This
+will import variables that were exported with
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Export</function>
+or in the
+<varname>exports</varname>
+argument to
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-SConscript"><function>SConscript</function></link>.
+Variables exported by
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</function>
+have precedence.
+Multiple variable names can be passed to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Import</function>
+as separate arguments or as a list. The variable "*" can be used
+to import all variables.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Import("env")
+Import("env", "variable")
+Import(["env", "variable"])
+Import("*")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Literal">
+ <term>
+ <literal>Literal(string)</literal>
+ </term>
+ <term>
+ <literal>env.Literal(string)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The specified
+<varname>string</varname>
+will be preserved as-is
+and not have construction variables expanded.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Local">
+ <term>
+ <literal>Local(targets)</literal>
+ </term>
+ <term>
+ <literal>env.Local(targets)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The specified
+<varname>targets</varname>
+will have copies made in the local tree,
+even if an already up-to-date copy
+exists in a repository.
+Returns a list of the target Node or Nodes.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-MergeFlags">
+ <term>
+ <literal>env.MergeFlags(arg, [unique])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Merges the specified
+<varname>arg</varname>
+values to the construction environment's construction variables.
+If the
+<varname>arg</varname>
+argument is not a dictionary,
+it is converted to one by calling
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-ParseFlags"><function>env.ParseFlags</function></link>
+on the argument
+before the values are merged.
+Note that
+<varname>arg</varname>
+must be a single value,
+so multiple strings must
+be passed in as a list,
+not as separate arguments to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">env.MergeFlags</function>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+By default,
+duplicate values are eliminated;
+you can, however, specify
+<literal>unique=0</literal>
+to allow duplicate
+values to be added.
+When eliminating duplicate values,
+any construction variables that end with
+the string
+<literal>PATH</literal>
+keep the left-most unique value.
+All other construction variables keep
+the right-most unique value.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Add an optimization flag to $CCFLAGS.
+env.MergeFlags('-O3')
+
+# Combine the flags returned from running pkg-config with an optimization
+# flag and merge the result into the construction variables.
+env.MergeFlags(['!pkg-config gtk+-2.0 --cflags', '-O3'])
+
+# Combine an optimization flag with the flags returned from running pkg-config
+# twice and merge the result into the construction variables.
+env.MergeFlags(['-O3',
+ '!pkg-config gtk+-2.0 --cflags --libs',
+ '!pkg-config libpng12 --cflags --libs'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-NoCache">
+ <term>
+ <literal>NoCache(target, ...)</literal>
+ </term>
+ <term>
+ <literal>env.NoCache(target, ...)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies a list of files which should
+<emphasis>not</emphasis>
+be cached whenever the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-CacheDir"><function>CacheDir</function></link>
+method has been activated.
+The specified targets may be a list
+or an individual target.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Multiple files should be specified
+either as separate arguments to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">NoCache</function>
+method, or as a list.
+<function xmlns="http://www.scons.org/dbxsd/v1.0">NoCache</function>
+will also accept the return value of any of the construction environment
+Builder methods.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Calling
+<function xmlns="http://www.scons.org/dbxsd/v1.0">NoCache</function>
+on directories and other non-File Node types has no effect because
+only File Nodes are cached.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+NoCache('foo.elf')
+NoCache(env.Program('hello', 'hello.c'))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-NoClean">
+ <term>
+ <literal>NoClean(target, ...)</literal>
+ </term>
+ <term>
+ <literal>env.NoClean(target, ...)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies a list of files or directories which should
+<emphasis>not</emphasis>
+be removed whenever the targets (or their dependencies)
+are specified with the
+<option>-c</option>
+command line option.
+The specified targets may be a list
+or an individual target.
+Multiple calls to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">NoClean</function>
+are legal,
+and prevent each specified target
+from being removed by calls to the
+<option>-c</option>
+option.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Multiple files or directories should be specified
+either as separate arguments to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">NoClean</function>
+method, or as a list.
+<function xmlns="http://www.scons.org/dbxsd/v1.0">NoClean</function>
+will also accept the return value of any of the construction environment
+Builder methods.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Calling
+<function xmlns="http://www.scons.org/dbxsd/v1.0">NoClean</function>
+for a target overrides calling
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Clean"><function>Clean</function></link>
+for the same target,
+and any targets passed to both functions will
+<emphasis>not</emphasis>
+be removed by the
+<option>-c</option>
+option.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+NoClean('foo.elf')
+NoClean(env.Program('hello', 'hello.c'))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-ParseConfig">
+ <term>
+ <literal>env.ParseConfig(command, [function, unique])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Calls the specified
+<varname>function</varname>
+to modify the environment as specified by the output of
+<varname>command</varname>.
+The default
+<varname>function</varname>
+is
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-MergeFlags"><function>env.MergeFlags</function></link>,
+which expects the output of a typical
+<application>*-config</application>
+command
+(for example,
+<application>gtk-config</application>)
+and adds the options
+to the appropriate construction variables.
+By default,
+duplicate values are not
+added to any construction variables;
+you can specify
+<literal>unique=0</literal>
+to allow duplicate
+values to be added.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Interpreted options
+and the construction variables they affect
+are as specified for the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-ParseFlags"><function>env.ParseFlags</function></link>
+method (which this method calls).
+See that method's description, below,
+for a table of options and construction variables.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-ParseDepends">
+ <term>
+ <literal>ParseDepends(filename, [must_exist, only_one])</literal>
+ </term>
+ <term>
+ <literal>env.ParseDepends(filename, [must_exist, only_one])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Parses the contents of the specified
+<varname>filename</varname>
+as a list of dependencies in the style of
+<application xmlns="http://www.scons.org/dbxsd/v1.0">Make</application>
+or
+<application>mkdep</application>,
+and explicitly establishes all of the listed dependencies.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+By default,
+it is not an error
+if the specified
+<varname>filename</varname>
+does not exist.
+The optional
+<varname>must_exist</varname>
+argument may be set to a non-zero
+value to have
+scons
+throw an exception and
+generate an error if the file does not exist,
+or is otherwise inaccessible.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The optional
+<varname>only_one</varname>
+argument may be set to a non-zero
+value to have
+scons
+thrown an exception and
+generate an error
+if the file contains dependency
+information for more than one target.
+This can provide a small sanity check
+for files intended to be generated
+by, for example, the
+<literal>gcc -M</literal>
+flag,
+which should typically only
+write dependency information for
+one output file into a corresponding
+<filename>.d</filename>
+file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<varname>filename</varname>
+and all of the files listed therein
+will be interpreted relative to
+the directory of the
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+file which calls the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">ParseDepends</function>
+function.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-ParseFlags">
+ <term>
+ <literal>env.ParseFlags(flags, ...)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Parses one or more strings containing
+typical command-line flags for GCC tool chains
+and returns a dictionary with the flag values
+separated into the appropriate SCons construction variables.
+This is intended as a companion to the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-MergeFlags"><function>env.MergeFlags</function></link>
+method, but allows for the values in the returned dictionary
+to be modified, if necessary,
+before merging them into the construction environment.
+(Note that
+<function xmlns="http://www.scons.org/dbxsd/v1.0">env.MergeFlags</function>
+will call this method if its argument is not a dictionary,
+so it is usually not necessary to call
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-ParseFlags"><function>env.ParseFlags</function></link>
+directly unless you want to manipulate the values.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the first character in any string is
+an exclamation mark (!),
+the rest of the string is executed as a command,
+and the output from the command is
+parsed as GCC tool chain command-line flags
+and added to the resulting dictionary.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Flag values are translated accordig to the prefix found,
+and added to the following construction variables:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+-arch CCFLAGS, LINKFLAGS
+-D CPPDEFINES
+-framework FRAMEWORKS
+-frameworkdir= FRAMEWORKPATH
+-include CCFLAGS
+-isysroot CCFLAGS, LINKFLAGS
+-I CPPPATH
+-l LIBS
+-L LIBPATH
+-mno-cygwin CCFLAGS, LINKFLAGS
+-mwindows LINKFLAGS
+-pthread CCFLAGS, LINKFLAGS
+-std= CFLAGS
+-Wa, ASFLAGS, CCFLAGS
+-Wl,-rpath= RPATH
+-Wl,-R, RPATH
+-Wl,-R RPATH
+-Wl, LINKFLAGS
+-Wp, CPPFLAGS
+- CCFLAGS
++ CCFLAGS, LINKFLAGS
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Any other strings not associated with options
+are assumed to be the names of libraries
+and added to the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBS</envar>
+construction variable.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples (all of which produce the same result):
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+dict = env.ParseFlags('-O2 -Dfoo -Dbar=1')
+dict = env.ParseFlags('-O2', '-Dfoo', '-Dbar=1')
+dict = env.ParseFlags(['-O2', '-Dfoo -Dbar=1'])
+dict = env.ParseFlags('-O2', '!echo -Dfoo -Dbar=1')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Perforce">
+ <term>
+ <literal>env.Perforce()</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A factory function that
+returns a Builder object
+to be used to fetch source files
+from the Perforce source code management system.
+The returned Builder
+is intended to be passed to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function is deprecated. For details, see the entry for the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SourceCode('.', env.Perforce())
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Perforce uses a number of external
+environment variables for its operation.
+Consequently, this function adds the
+following variables from the user's external environment
+to the construction environment's
+ENV dictionary:
+P4CHARSET,
+P4CLIENT,
+P4LANGUAGE,
+P4PASSWD,
+P4PORT,
+P4USER,
+SystemRoot,
+USER,
+and
+USERNAME.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Platform">
+ <term>
+ <literal>Platform(string)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Platform</function>
+form returns a callable object
+that can be used to initialize
+a construction environment using the
+platform keyword of the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Environment</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(platform = Platform('win32'))
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">env.Platform</function>
+form applies the callable object for the specified platform
+<varname>string</varname>
+to the environment through which the method was called.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Platform('posix')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the
+<literal>win32</literal>
+platform adds the
+<literal>SystemDrive</literal>
+and
+<literal>SystemRoot</literal>
+variables from the user's external environment
+to the construction environment's
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ENV"><envar>$ENV</envar></link>
+dictionary.
+This is so that any executed commands
+that use sockets to connect with other systems
+(such as fetching source files from
+external CVS repository specifications like
+<literal>:pserver:anonymous@cvs.sourceforge.net:/cvsroot/scons</literal>)
+will work on Windows systems.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Precious">
+ <term>
+ <literal>Precious(target, ...)</literal>
+ </term>
+ <term>
+ <literal>env.Precious(target, ...)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Marks each given
+<varname>target</varname>
+as precious so it is not deleted before it is rebuilt. Normally
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+deletes a target before building it.
+Multiple targets can be passed in to a single call to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Precious</function>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Prepend">
+ <term>
+ <literal>env.Prepend(key=val, [...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Appends the specified keyword arguments
+to the beginning of construction variables in the environment.
+If the Environment does not have
+the specified construction variable,
+it is simply added to the environment.
+If the values of the construction variable
+and the keyword argument are the same type,
+then the two values will be simply added together.
+Otherwise, the construction variable
+and the value of the keyword argument
+are both coerced to lists,
+and the lists are added together.
+(See also the Append method, above.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Prepend(CCFLAGS = '-g ', FOO = ['foo.yyy'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-PrependENVPath">
+ <term>
+ <literal>env.PrependENVPath(name, newpath, [envname, sep, delete_existing])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This appends new path elements to the given path in the
+specified external environment
+(<envar xmlns="http://www.scons.org/dbxsd/v1.0">$ENV</envar>
+by default).
+This will only add
+any particular path once (leaving the first one it encounters and
+ignoring the rest, to preserve path order),
+and to help assure this,
+will normalize all paths (using
+<literal>os.path.normpath</literal>
+and
+<literal>os.path.normcase</literal>).
+This can also handle the
+case where the given old path variable is a list instead of a
+string, in which case a list will be returned instead of a string.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If
+<varname>delete_existing</varname>
+is 0, then adding a path that already exists
+will not move it to the beginning;
+it will stay where it is in the list.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+print 'before:',env['ENV']['INCLUDE']
+include_path = '/foo/bar:/foo'
+env.PrependENVPath('INCLUDE', include_path)
+print 'after:',env['ENV']['INCLUDE']
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The above example will print:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+before: /biz:/foo
+after: /foo/bar:/foo:/biz
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-PrependUnique">
+ <term>
+ <literal>env.PrependUnique(key=val, delete_existing=0, [...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Appends the specified keyword arguments
+to the beginning of construction variables in the environment.
+If the Environment does not have
+the specified construction variable,
+it is simply added to the environment.
+If the construction variable being appended to is a list,
+then any value(s) that already exist in the
+construction variable will
+<emphasis>not</emphasis>
+be added again to the list.
+However, if delete_existing is 1,
+existing matching values are removed first, so
+existing values in the arg list move to the front of the list.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.PrependUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Progress">
+ <term>
+ <literal>Progress(callable, [interval])</literal>
+ </term>
+ <term>
+ <literal>Progress(string, [interval, file, overwrite])</literal>
+ </term>
+ <term>
+ <literal>Progress(list_of_strings, [interval, file, overwrite])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Allows SCons to show progress made during the build
+by displaying a string or calling a function while
+evaluating Nodes (e.g. files).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the first specified argument is a Python callable
+(a function or an object that has a
+<function>__call__</function>()
+method),
+the function will be called
+once every
+<varname>interval</varname>
+times a Node is evaluated.
+The callable will be passed the evaluated Node
+as its only argument.
+(For future compatibility,
+it's a good idea to also add
+<literal>*args</literal>
+and
+<literal>**kw</literal>
+as arguments to your function or method.
+This will prevent the code from breaking
+if SCons ever changes the interface
+to call the function with additional arguments in the future.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An example of a simple custom progress function
+that prints a string containing the Node name
+every 10 Nodes:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def my_progress_function(node, *args, **kw):
+ print 'Evaluating node %s!' % node
+Progress(my_progress_function, interval=10)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A more complicated example of a custom progress display object
+that prints a string containing a count
+every 100 evaluated Nodes.
+Note the use of
+<literal>\r</literal>
+(a carriage return)
+at the end so that the string
+will overwrite itself on a display:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+import sys
+class ProgressCounter(object):
+ count = 0
+ def __call__(self, node, *args, **kw):
+ self.count += 100
+ sys.stderr.write('Evaluated %s nodes\r' % self.count)
+Progress(ProgressCounter(), interval=100)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the first argument
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Progress"><function>Progress</function></link>
+is a string,
+the string will be displayed
+every
+<varname>interval</varname>
+evaluated Nodes.
+The default is to print the string on standard output;
+an alternate output stream
+may be specified with the
+<literal>file=</literal>
+argument.
+The following will print a series of dots
+on the error output,
+one dot for every 100 evaluated Nodes:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+import sys
+Progress('.', interval=100, file=sys.stderr)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the string contains the verbatim substring
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$TARGET</envar>,
+it will be replaced with the Node.
+Note that, for performance reasons, this is
+<emphasis>not</emphasis>
+a regular SCons variable substition,
+so you can not use other variables
+or use curly braces.
+The following example will print the name of
+every evaluated Node,
+using a
+<literal>\r</literal>
+(carriage return) to cause each line to overwritten by the next line,
+and the
+<literal>overwrite=</literal>
+keyword argument to make sure the previously-printed
+file name is overwritten with blank spaces:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+import sys
+Progress('$TARGET\r', overwrite=True)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the first argument to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Progress</function>
+is a list of strings,
+then each string in the list will be displayed
+in rotating fashion every
+<varname>interval</varname>
+evaluated Nodes.
+This can be used to implement a "spinner"
+on the user's screen as follows:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Pseudo">
+ <term>
+ <literal>Pseudo(target, ...)</literal>
+ </term>
+ <term>
+ <literal>env.Pseudo(target, ...)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This indicates that each given
+<varname>target</varname>
+should not be created by the build rule, and if the target is created,
+an error will be generated. This is similar to the gnu make .PHONY
+target. However, in the vast majority of cases, an
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Alias</function>
+is more appropriate.
+
+Multiple targets can be passed in to a single call to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Pseudo</function>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-RCS">
+ <term>
+ <literal>env.RCS()</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A factory function that
+returns a Builder object
+to be used to fetch source files
+from RCS.
+The returned Builder
+is intended to be passed to the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+function:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function is deprecated. For details, see the entry for the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SourceCode('.', env.RCS())
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will fetch source files
+from RCS subdirectories automatically,
+so configuring RCS
+as demonstrated in the above example
+should only be necessary if
+you are fetching from
+RCS,v
+files in the same
+directory as the source files,
+or if you need to explicitly specify RCS
+for a specific subdirectory.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Replace">
+ <term>
+ <literal>env.Replace(key=val, [...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Replaces construction variables in the Environment
+with the specified keyword arguments.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Replace(CCFLAGS = '-g', FOO = 'foo.xxx')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Repository">
+ <term>
+ <literal>Repository(directory)</literal>
+ </term>
+ <term>
+ <literal>env.Repository(directory)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies that
+<varname>directory</varname>
+is a repository to be searched for files.
+Multiple calls to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Repository</function>
+are legal,
+and each one adds to the list of
+repositories that will be searched.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+To
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>,
+a repository is a copy of the source tree,
+from the top-level directory on down,
+which may contain
+both source files and derived files
+that can be used to build targets in
+the local source tree.
+The canonical example would be an
+official source tree maintained by an integrator.
+If the repository contains derived files,
+then the derived files should have been built using
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>,
+so that the repository contains the necessary
+signature information to allow
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to figure out when it is appropriate to
+use the repository copy of a derived file,
+instead of building one locally.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that if an up-to-date derived file
+already exists in a repository,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will
+<emphasis>not</emphasis>
+make a copy in the local directory tree.
+In order to guarantee that a local copy
+will be made,
+use the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Local"><function>Local</function></link>
+method.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Requires">
+ <term>
+ <literal>Requires(target, prerequisite)</literal>
+ </term>
+ <term>
+ <literal>env.Requires(target, prerequisite)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies an order-only relationship
+between the specified target file(s)
+and the specified prerequisite file(s).
+The prerequisite file(s)
+will be (re)built, if necessary,
+<emphasis>before</emphasis>
+the target file(s),
+but the target file(s) do not actually
+depend on the prerequisites
+and will not be rebuilt simply because
+the prerequisite file(s) change.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Requires('foo', 'file-that-must-be-built-before-foo')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Return">
+ <term>
+ <literal>Return([vars..., stop=])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+By default,
+this stops processing the current SConscript
+file and returns to the calling SConscript file
+the values of the variables named in the
+<varname>vars</varname>
+string arguments.
+Multiple strings contaning variable names may be passed to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Return</function>.
+Any strings that contain white space
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The optional
+<literal>stop=</literal>
+keyword argument may be set to a false value
+to continue processing the rest of the SConscript
+file after the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Return</function>
+call.
+This was the default behavior prior to SCons 0.98.
+However, the values returned
+are still the values of the variables in the named
+<varname>vars</varname>
+at the point
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Return</function>
+is called.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Returns without returning a value.
+Return()
+
+# Returns the value of the 'foo' Python variable.
+Return("foo")
+
+# Returns the values of the Python variables 'foo' and 'bar'.
+Return("foo", "bar")
+
+# Returns the values of Python variables 'val1' and 'val2'.
+Return('val1 val2')
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Scanner">
+ <term>
+ <literal>Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive])</literal>
+ </term>
+ <term>
+ <literal>env.Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Creates a Scanner object for
+the specified
+<varname>function</varname>.
+See the section "Scanner Objects,"
+below, for a complete explanation of the arguments and behavior.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SCCS">
+ <term>
+ <literal>env.SCCS()</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A factory function that
+returns a Builder object
+to be used to fetch source files
+from SCCS.
+The returned Builder
+is intended to be passed to the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-SourceCode"><function>SourceCode</function></link>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SourceCode('.', env.SCCS())
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will fetch source files
+from SCCS subdirectories automatically,
+so configuring SCCS
+as demonstrated in the above example
+should only be necessary if
+you are fetching from
+<filename>s.SCCS</filename>
+files in the same
+directory as the source files,
+or if you need to explicitly specify SCCS
+for a specific subdirectory.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SConscript">
+ <term>
+ <literal>SConscript(scripts, [exports, variant_dir, duplicate])</literal>
+ </term>
+ <term>
+ <literal>env.SConscript(scripts, [exports, variant_dir, duplicate])</literal>
+ </term>
+ <term>
+ <literal>SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate])</literal>
+ </term>
+ <term>
+ <literal>env.SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This tells
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to execute
+one or more subsidiary SConscript (configuration) files.
+Any variables returned by a called script using
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Return"><function>Return</function></link>
+will be returned by the call to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</function>.
+There are two ways to call the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</function>
+function.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The first way you can call
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</function>
+is to explicitly specify one or more
+<varname>scripts</varname>
+as the first argument.
+A single script may be specified as a string;
+multiple scripts must be specified as a list
+(either explicitly or as created by
+a function like
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Split</function>).
+Examples:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+SConscript('SConscript') # run SConscript in the current directory
+SConscript('src/SConscript') # run SConscript in the src directory
+SConscript(['src/SConscript', 'doc/SConscript'])
+config = SConscript('MyConfig.py')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The second way you can call
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</function>
+is to specify a list of (sub)directory names
+as a
+<literal>dirs=</literal><varname>subdirs</varname>
+keyword argument.
+In this case,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will, by default,
+execute a subsidiary configuration file named
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+in each of the specified directories.
+You may specify a name other than
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+by supplying an optional
+<literal>name=</literal><varname>script</varname>
+keyword argument.
+The first three examples below have the same effect
+as the first three examples above:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+SConscript(dirs='.') # run SConscript in the current directory
+SConscript(dirs='src') # run SConscript in the src directory
+SConscript(dirs=['src', 'doc'])
+SConscript(dirs=['sub1', 'sub2'], name='MySConscript')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The optional
+<varname>exports</varname>
+argument provides a list of variable names or a dictionary of
+named values to export to the
+<varname>script(s)</varname>.
+These variables are locally exported only to the specified
+<varname>script(s)</varname>,
+and do not affect the global pool of variables used by the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Export</function>
+function.
+<!-- If multiple dirs are provided, each script gets a fresh export. -->
+The subsidiary
+<varname>script(s)</varname>
+must use the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Import"><function>Import</function></link>
+function to import the variables.
+Examples:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+foo = SConscript('sub/SConscript', exports='env')
+SConscript('dir/SConscript', exports=['env', 'variable'])
+SConscript(dirs='subdir', exports='env variable')
+SConscript(dirs=['one', 'two', 'three'], exports='shared_info')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the optional
+<varname>variant_dir</varname>
+argument is present, it causes an effect equivalent to the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-VariantDir"><function>VariantDir</function></link>
+method described below.
+(If
+<varname>variant_dir</varname>
+is not present, the
+<!-- <varname>src_dir</varname> and -->
+<varname>duplicate</varname>
+<!-- arguments are ignored.) -->
+argument is ignored.)
+The
+<varname>variant_dir</varname>
+<!--
+and
+<varname>src_dir</varname>
+arguments are interpreted relative to the directory of the calling
+-->
+argument is interpreted relative to the directory of the calling
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+file.
+See the description of the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function>
+function below for additional details and restrictions.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If
+<varname>variant_dir</varname>
+is present,
+<!--
+but
+<varname>src_dir</varname>
+is not,
+-->
+the source directory is the directory in which the
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+file resides and the
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+file is evaluated as if it were in the
+<varname>variant_dir</varname>
+directory:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+SConscript('src/SConscript', variant_dir = 'build')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+is equivalent to
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+VariantDir('build', 'src')
+SConscript('build/SConscript')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This later paradigm is often used when the sources are
+in the same directory as the
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConstruct</filename>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+SConscript('SConscript', variant_dir = 'build')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+is equivalent to
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+VariantDir('build', '.')
+SConscript('build/SConscript')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<!--
+If
+<varname>variant_dir</varname>
+and"
+<varname>src_dir</varname>
+are both present,
+xxxxx everything is in a state of confusion.
+</para>
+<example_commands>
+SConscript(dirs = 'src', variant_dir = 'build', src_dir = '.')
+runs src/SConscript in build/src, but
+SConscript(dirs = 'lib', variant_dir = 'build', src_dir = 'src')
+runs lib/SConscript (in lib!). However,
+SConscript(dirs = 'src', variant_dir = 'build', src_dir = 'src')
+runs src/SConscript in build. Moreover,
+SConscript(dirs = 'src/lib', variant_dir = 'build', src_dir = 'src')
+runs src/lib/SConscript in build/lib. Moreover,
+SConscript(dirs = 'build/src/lib', variant_dir = 'build', src_dir = 'src')
+can't find build/src/lib/SConscript, even though it ought to exist.
+</example_commands>
+<para>
+is equivalent to
+</para>
+<example_commands>
+????????????????
+</example_commands>
+<para>
+and what about this alternative?
+TODO??? SConscript('build/SConscript', src_dir='src')
+-->
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Here are some composite examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# collect the configuration information and use it to build src and doc
+shared_info = SConscript('MyConfig.py')
+SConscript('src/SConscript', exports='shared_info')
+SConscript('doc/SConscript', exports='shared_info')
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# build debugging and production versions. SConscript
+# can use Dir('.').path to determine variant.
+SConscript('SConscript', variant_dir='debug', duplicate=0)
+SConscript('SConscript', variant_dir='prod', duplicate=0)
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# build debugging and production versions. SConscript
+# is passed flags to use.
+opts = { 'CPPDEFINES' : ['DEBUG'], 'CCFLAGS' : '-pgdb' }
+SConscript('SConscript', variant_dir='debug', duplicate=0, exports=opts)
+opts = { 'CPPDEFINES' : ['NODEBUG'], 'CCFLAGS' : '-O' }
+SConscript('SConscript', variant_dir='prod', duplicate=0, exports=opts)
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# build common documentation and compile for different architectures
+SConscript('doc/SConscript', variant_dir='build/doc', duplicate=0)
+SConscript('src/SConscript', variant_dir='build/x86', duplicate=0)
+SConscript('src/SConscript', variant_dir='build/ppc', duplicate=0)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SConscriptChdir">
+ <term>
+ <literal>SConscriptChdir(value)</literal>
+ </term>
+ <term>
+ <literal>env.SConscriptChdir(value)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+By default,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+changes its working directory
+to the directory in which each
+subsidiary SConscript file lives.
+This behavior may be disabled
+by specifying either:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+SConscriptChdir(0)
+env.SConscriptChdir(0)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+in which case
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will stay in the top-level directory
+while reading all SConscript files.
+(This may be necessary when building from repositories,
+when all the directories in which SConscript files may be found
+don't necessarily exist locally.)
+You may enable and disable
+this ability by calling
+SConscriptChdir()
+multiple times.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment()
+SConscriptChdir(0)
+SConscript('foo/SConscript') # will not chdir to foo
+env.SConscriptChdir(1)
+SConscript('bar/SConscript') # will chdir to bar
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SConsignFile">
+ <term>
+ <literal>SConsignFile([file, dbm_module])</literal>
+ </term>
+ <term>
+ <literal>env.SConsignFile([file, dbm_module])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This tells
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to store all file signatures
+in the specified database
+<varname>file</varname>.
+If the
+<varname>file</varname>
+name is omitted,
+<filename>.sconsign</filename>
+is used by default.
+(The actual file name(s) stored on disk
+may have an appropriated suffix appended
+by the
+<varname> dbm_module</varname>.)
+If
+<varname>file</varname>
+is not an absolute path name,
+the file is placed in the same directory as the top-level
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConstruct</filename>
+file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If
+<varname>file</varname>
+is
+<literal>None</literal>,
+then
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will store file signatures
+in a separate
+<filename>.sconsign</filename>
+file in each directory,
+not in one global database file.
+(This was the default behavior
+prior to SCons 0.96.91 and 0.97.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The optional
+<varname>dbm_module</varname>
+argument can be used to specify
+which Python database module
+The default is to use a custom
+<filename>SCons.dblite</filename>
+module that uses pickled
+Python data structures,
+and which works on all Python versions.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Explicitly stores signatures in ".sconsign.dblite"
+# in the top-level SConstruct directory (the
+# default behavior).
+SConsignFile()
+
+# Stores signatures in the file "etc/scons-signatures"
+# relative to the top-level SConstruct directory.
+SConsignFile("etc/scons-signatures")
+
+# Stores signatures in the specified absolute file name.
+SConsignFile("/home/me/SCons/signatures")
+
+# Stores signatures in a separate .sconsign file
+# in each directory.
+SConsignFile(None)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SetDefault">
+ <term>
+ <literal>env.SetDefault(key=val, [...])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables to default values specified with the keyword
+arguments if (and only if) the variables are not already set.
+The following statements are equivalent:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SetDefault(FOO = 'foo')
+
+if 'FOO' not in env: env['FOO'] = 'foo'
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SetOption">
+ <term>
+ <literal>SetOption(name, value)</literal>
+ </term>
+ <term>
+ <literal>env.SetOption(name, value)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function provides a way to set a select subset of the scons command
+line options from a SConscript file. The options supported are:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<variablelist>
+<varlistentry>
+<term><literal>clean</literal></term>
+<listitem>
+<para>
+which corresponds to -c, --clean and --remove;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>duplicate</literal></term>
+<listitem>
+<para>
+which corresponds to --duplicate;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>help</literal></term>
+<listitem>
+<para>
+which corresponds to -h and --help;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>implicit_cache</literal></term>
+<listitem>
+<para>
+which corresponds to --implicit-cache;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>max_drift</literal></term>
+<listitem>
+<para>
+which corresponds to --max-drift;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no_exec</literal></term>
+<listitem>
+<para>
+which corresponds to -n, --no-exec, --just-print, --dry-run and --recon;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>num_jobs</literal></term>
+<listitem>
+<para>
+which corresponds to -j and --jobs;
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>random</literal></term>
+<listitem>
+<para>
+which corresponds to --random; and
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>stack_size</literal></term>
+<listitem>
+<para>
+which corresponds to --stack-size.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+See the documentation for the
+corresponding command line object for information about each specific
+option.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+SetOption('max_drift', 1)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SideEffect">
+ <term>
+ <literal>SideEffect(side_effect, target)</literal>
+ </term>
+ <term>
+ <literal>env.SideEffect(side_effect, target)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Declares
+<varname>side_effect</varname>
+as a side effect of building
+<varname>target</varname>.
+Both
+<varname>side_effect</varname>
+and
+<varname>target</varname>
+can be a list, a file name, or a node.
+A side effect is a target file that is created or updated
+as a side effect of building other targets.
+For example, a Windows PDB
+file is created as a side effect of building the .obj
+files for a static library,
+and various log files are created updated
+as side effects of various TeX commands.
+If a target is a side effect of multiple build commands,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will ensure that only one set of commands
+is executed at a time.
+Consequently, you only need to use this method
+for side-effect targets that are built as a result of
+multiple build commands.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Because multiple build commands may update
+the same side effect file,
+by default the
+<varname>side_effect</varname>
+target is
+<emphasis>not</emphasis>
+automatically removed
+when the
+<varname>target</varname>
+is removed by the
+<option>-c</option>
+option.
+(Note, however, that the
+<varname>side_effect</varname>
+might be removed as part of
+cleaning the directory in which it lives.)
+If you want to make sure the
+<varname>side_effect</varname>
+is cleaned whenever a specific
+<varname>target</varname>
+is cleaned,
+you must specify this explicitly
+with the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Clean"><function>Clean</function></link>
+or
+<function xmlns="http://www.scons.org/dbxsd/v1.0">env.Clean</function>
+function.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SourceCode">
+ <term>
+ <literal>SourceCode(entries, builder)</literal>
+ </term>
+ <term>
+ <literal>env.SourceCode(entries, builder)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This function and its associate factory functions are deprecated.
+There is no replacement.
+The intended use was to keep a local tree in sync with an archive,
+but in actuality the function only causes the archive
+to be fetched on the first run.
+Synchronizing with the archive is best done external to <application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Arrange for non-existent source files to
+be fetched from a source code management system
+using the specified
+<varname>builder</varname>.
+The specified
+<varname>entries</varname>
+may be a Node, string or list of both,
+and may represent either individual
+source files or directories in which
+source files can be found.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+For any non-existent source files,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will search up the directory tree
+and use the first
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+builder it finds.
+The specified
+<varname>builder</varname>
+may be
+<literal>None</literal>,
+in which case
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will not use a builder to fetch
+source files for the specified
+<varname>entries</varname>,
+even if a
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceCode</function>
+builder has been specified
+for a directory higher up the tree.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will, by default,
+fetch files from SCCS or RCS subdirectories
+without explicit configuration.
+This takes some extra processing time
+to search for the necessary
+source code management files on disk.
+You can avoid these extra searches
+and speed up your build a little
+by disabling these searches as follows:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SourceCode('.', None)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that if the specified
+<varname>builder</varname>
+is one you create by hand,
+it must have an associated
+construction environment to use
+when fetching a source file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+provides a set of canned factory
+functions that return appropriate
+Builders for various popular
+source code management systems.
+Canonical examples of invocation include:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.SourceCode('.', env.BitKeeper('/usr/local/BKsources'))
+env.SourceCode('src', env.CVS('/usr/local/CVSROOT'))
+env.SourceCode('/', env.RCS())
+env.SourceCode(['f1.c', 'f2.c'], env.SCCS())
+env.SourceCode('no_source.c', None)
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<!-- env.SourceCode('.', env.Subversion('file:///usr/local/Subversion')) -->
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-SourceSignatures">
+ <term>
+ <literal>SourceSignatures(type)</literal>
+ </term>
+ <term>
+ <literal>env.SourceSignatures(type)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note: Although it is not yet officially deprecated,
+use of this function is discouraged.
+See the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Decider"><function>Decider</function></link>
+function for a more flexible and straightforward way
+to configure SCons' decision-making.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function>
+function tells
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+how to decide if a source file
+(a file that is not built from any other files)
+has changed since the last time it
+was used to build a particular target file.
+Legal values are
+<literal>MD5</literal>
+or
+<literal>timestamp</literal>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the environment method is used,
+the specified type of source signature
+is only used when deciding whether targets
+built with that environment are up-to-date or must be rebuilt.
+If the global function is used,
+the specified type of source signature becomes the default
+used for all decisions
+about whether targets are up-to-date.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>MD5</literal>
+means
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+decides that a source file has changed
+if the MD5 checksum of its contents has changed since
+the last time it was used to rebuild a particular target file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>timestamp</literal>
+means
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+decides that a source file has changed
+if its timestamp (modification time) has changed since
+the last time it was used to rebuild a particular target file.
+(Note that although this is similar to the behavior of Make,
+by default it will also rebuild if the dependency is
+<emphasis>older</emphasis>
+than the last time it was used to rebuild the target file.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+There is no different between the two behaviors
+for Python
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Value</function>
+node objects.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>MD5</literal>
+signatures take longer to compute,
+but are more accurate than
+<literal>timestamp</literal>
+signatures.
+The default value is
+<literal>MD5</literal>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that the default
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-TargetSignatures"><function>TargetSignatures</function></link>
+setting (see below)
+is to use this
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function>
+setting for any target files that are used
+to build other target files.
+Consequently, changing the value of
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function>
+will, by default,
+affect the up-to-date decision for all files in the build
+(or all files built with a specific construction environment
+when
+<function xmlns="http://www.scons.org/dbxsd/v1.0">env.SourceSignatures</function>
+is used).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Split">
+ <term>
+ <literal>Split(arg)</literal>
+ </term>
+ <term>
+ <literal>env.Split(arg)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns a list of file names or other objects.
+If arg is a string,
+it will be split on strings of white-space characters
+within the string,
+making it easier to write long lists of file names.
+If arg is already a list,
+the list will be returned untouched.
+If arg is any other type of object,
+it will be returned as a list
+containing just the object.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+files = Split("f1.c f2.c f3.c")
+files = env.Split("f4.c f5.c f6.c")
+files = Split("""
+ f7.c
+ f8.c
+ f9.c
+""")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-subst">
+ <term>
+ <literal>env.subst(input, [raw, target, source, conv])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Performs construction variable interpolation
+on the specified string or sequence argument
+<varname>input</varname>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+By default,
+leading or trailing white space will
+be removed from the result.
+and all sequences of white space
+will be compressed to a single space character.
+Additionally, any
+<literal>$(</literal>
+and
+<literal>$)</literal>
+character sequences will be stripped from the returned string,
+The optional
+<varname>raw</varname>
+argument may be set to
+<literal>1</literal>
+if you want to preserve white space and
+<literal>$(</literal>-<literal>$)</literal>
+sequences.
+The
+<varname>raw</varname>
+argument may be set to
+<literal>2</literal>
+if you want to strip
+all characters between
+any
+<literal>$(</literal>
+and
+<literal>$)</literal>
+pairs
+(as is done for signature calculation).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the input is a sequence
+(list or tuple),
+the individual elements of
+the sequence will be expanded,
+and the results will be returned as a list.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The optional
+<varname>target</varname>
+and
+<varname>source</varname>
+keyword arguments
+must be set to lists of
+target and source nodes, respectively,
+if you want the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$TARGET</envar>,
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$TARGETS</envar>,
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$SOURCE</envar>
+and
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$SOURCES</envar>
+to be available for expansion.
+This is usually necessary if you are
+calling
+<function xmlns="http://www.scons.org/dbxsd/v1.0">env.subst</function>
+from within a Python function used
+as an SCons action.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returned string values or sequence elements
+are converted to their string representation by default.
+The optional
+<varname>conv</varname>
+argument
+may specify a conversion function
+that will be used in place of
+the default.
+For example, if you want Python objects
+(including SCons Nodes)
+to be returned as Python objects,
+you can use the Python
+Λ
+idiom to pass in an unnamed function
+that simply returns its unconverted argument.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+print env.subst("The C compiler is: $CC")
+
+def compile(target, source, env):
+ sourceDir = env.subst("${SOURCE.srcdir}",
+ target=target,
+ source=source)
+
+source_nodes = env.subst('$EXPAND_TO_NODELIST',
+ conv=lambda x: x)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Tag">
+ <term>
+ <literal>Tag(node, tags)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Annotates file or directory Nodes with
+information about how the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Package"><function>Package</function></link>
+Builder should package those files or directories.
+All tags are optional.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# makes sure the built library will be installed with 0644 file
+# access mode
+Tag( Library( 'lib.c' ), UNIX_ATTR="0644" )
+
+# marks file2.txt to be a documentation file
+Tag( 'file2.txt', DOC )
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-TargetSignatures">
+ <term>
+ <literal>TargetSignatures(type)</literal>
+ </term>
+ <term>
+ <literal>env.TargetSignatures(type)</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note: Although it is not yet officially deprecated,
+use of this function is discouraged.
+See the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Decider"><function>Decider</function></link>
+function for a more flexible and straightforward way
+to configure SCons' decision-making.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">TargetSignatures</function>
+function tells
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+how to decide if a target file
+(a file that
+<emphasis>is</emphasis>
+built from any other files)
+has changed since the last time it
+was used to build some other target file.
+Legal values are
+<literal>"build"</literal>;
+<literal>"content"</literal>
+(or its synonym
+<literal>"MD5"</literal>);
+<literal>"timestamp"</literal>;
+or
+<literal>"source"</literal>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the environment method is used,
+the specified type of target signature is only used
+for targets built with that environment.
+If the global function is used,
+the specified type of signature becomes the default
+used for all target files that
+don't have an explicit target signature type
+specified for their environments.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>"content"</literal>
+(or its synonym
+<literal>"MD5"</literal>)
+means
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+decides that a target file has changed
+if the MD5 checksum of its contents has changed since
+the last time it was used to rebuild some other target file.
+This means
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will open up
+MD5 sum the contents
+of target files after they're built,
+and may decide that it does not need to rebuild
+"downstream" target files if a file was
+rebuilt with exactly the same contents as the last time.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>"timestamp"</literal>
+means
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+decides that a target file has changed
+if its timestamp (modification time) has changed since
+the last time it was used to rebuild some other target file.
+(Note that although this is similar to the behavior of Make,
+by default it will also rebuild if the dependency is
+<emphasis>older</emphasis>
+than the last time it was used to rebuild the target file.)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>"source"</literal>
+means
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+decides that a target file has changed
+as specified by the corresponding
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function>
+setting
+(<literal>"MD5"</literal>
+or
+<literal>"timestamp"</literal>).
+This means that
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will treat all input files to a target the same way,
+regardless of whether they are source files
+or have been built from other files.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>"build"</literal>
+means
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+decides that a target file has changed
+if it has been rebuilt in this invocation
+or if its content or timestamp have changed
+as specified by the corresponding
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function>
+setting.
+This "propagates" the status of a rebuilt file
+so that other "downstream" target files
+will always be rebuilt,
+even if the contents or the timestamp
+have not changed.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<literal>"build"</literal>
+signatures are fastest because
+<literal>"content"</literal>
+(or
+<literal>"MD5"</literal>)
+signatures take longer to compute,
+but are more accurate than
+<literal>"timestamp"</literal>
+signatures,
+and can prevent unnecessary "downstream" rebuilds
+when a target file is rebuilt to the exact same contents
+as the previous build.
+The
+<literal>"source"</literal>
+setting provides the most consistent behavior
+when other target files may be rebuilt from
+both source and target input files.
+The default value is
+<literal>"source"</literal>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Because the default setting is
+<literal>"source"</literal>,
+using
+<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function>
+is generally preferable to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">TargetSignatures</function>,
+so that the up-to-date decision
+will be consistent for all files
+(or all files built with a specific construction environment).
+Use of
+<function xmlns="http://www.scons.org/dbxsd/v1.0">TargetSignatures</function>
+provides specific control for how built target files
+affect their "downstream" dependencies.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Tool">
+ <term>
+ <literal>Tool(string, [toolpath, **kw])</literal>
+ </term>
+ <term>
+ <literal>env.Tool(string, [toolpath, **kw])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Tool</function>
+form of the function
+returns a callable object
+that can be used to initialize
+a construction environment using the
+tools keyword of the Environment() method.
+The object may be called with a construction
+environment as an argument,
+in which case the object will
+add the necessary variables
+to the construction environment
+and the name of the tool will be added to the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-TOOLS"><envar>$TOOLS</envar></link>
+construction variable.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additional keyword arguments are passed to the tool's
+<function>generate</function>()
+method.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(tools = [ Tool('msvc') ])
+
+env = Environment()
+t = Tool('msvc')
+t(env) # adds 'msvc' to the TOOLS variable
+u = Tool('opengl', toolpath = ['tools'])
+u(env) # adds 'opengl' to the TOOLS variable
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<function xmlns="http://www.scons.org/dbxsd/v1.0">env.Tool</function>
+form of the function
+applies the callable object for the specified tool
+<varname>string</varname>
+to the environment through which the method was called.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additional keyword arguments are passed to the tool's
+<function>generate</function>()
+method.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Tool('gcc')
+env.Tool('opengl', toolpath = ['build/tools'])
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-Value">
+ <term>
+ <literal>Value(value, [built_value])</literal>
+ </term>
+ <term>
+ <literal>env.Value(value, [built_value])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Returns a Node object representing the specified Python value. Value
+Nodes can be used as dependencies of targets. If the result of
+calling
+<function>str</function>(<varname>value</varname>)
+changes between SCons runs, any targets depending on
+<function>Value</function>(<varname>value</varname>)
+will be rebuilt.
+(This is true even when using timestamps to decide if
+files are up-to-date.)
+When using timestamp source signatures, Value Nodes'
+timestamps are equal to the system time when the Node is created.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The returned Value Node object has a
+<function>write</function>()
+method that can be used to "build" a Value Node
+by setting a new value.
+The optional
+<varname>built_value</varname>
+argument can be specified
+when the Value Node is created
+to indicate the Node should already be considered
+"built."
+There is a corresponding
+<function>read</function>()
+method that will return the built value of the Node.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment()
+
+def create(target, source, env):
+ # A function that will write a 'prefix=$SOURCE'
+ # string into the file name specified as the
+ # $TARGET.
+ f = open(str(target[0]), 'wb')
+ f.write('prefix=' + source[0].get_contents())
+
+# Fetch the prefix= argument, if any, from the command
+# line, and use /usr/local as the default.
+prefix = ARGUMENTS.get('prefix', '/usr/local')
+
+# Attach a .Config() builder for the above function action
+# to the construction environment.
+env['BUILDERS']['Config'] = Builder(action = create)
+env.Config(target = 'package-config', source = Value(prefix))
+
+def build_value(target, source, env):
+ # A function that "builds" a Python Value by updating
+ # the the Python value with the contents of the file
+ # specified as the source of the Builder call ($SOURCE).
+ target[0].write(source[0].get_contents())
+
+output = env.Value('before')
+input = env.Value('after')
+
+# Attach a .UpdateValue() builder for the above function
+# action to the construction environment.
+env['BUILDERS']['UpdateValue'] = Builder(action = build_value)
+env.UpdateValue(target = Value(output), source = Value(input))
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-VariantDir">
+ <term>
+ <literal>VariantDir(variant_dir, src_dir, [duplicate])</literal>
+ </term>
+ <term>
+ <literal>env.VariantDir(variant_dir, src_dir, [duplicate])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Use the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function>
+function to create a copy of your sources in another location:
+if a name under
+<varname>variant_dir</varname>
+is not found but exists under
+<varname>src_dir</varname>,
+the file or directory is copied to
+<varname>variant_dir</varname>.
+Target files can be built in a different directory
+than the original sources by simply refering to the sources (and targets)
+within the variant tree.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function>
+can be called multiple times with the same
+<varname>src_dir</varname>
+to set up multiple builds with different options
+(<varname>variants</varname>).
+The
+<varname>src_dir</varname>
+location must be in or underneath the SConstruct file's directory, and
+<varname>variant_dir</varname>
+may not be underneath
+<varname>src_dir</varname>.
+<!--
+TODO: Can the above restrictions be clarified or relaxed?
+TODO: The latter restriction is clearly not completely right;
+TODO: src_dir = '.' works fine with a build dir under it.
+-->
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default behavior is for
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to physically duplicate the source files in the variant tree.
+Thus, a build performed in the variant tree is guaranteed to be identical
+to a build performed in the source tree even if
+intermediate source files are generated during the build,
+or preprocessors or other scanners search for included files
+relative to the source file,
+or individual compilers or other invoked tools are hard-coded
+to put derived files in the same directory as source files.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If possible on the platform,
+the duplication is performed by linking rather than copying;
+see also the
+<option>--duplicate</option>
+command-line option.
+Moreover, only the files needed for the build are duplicated;
+files and directories that are not used are not present in
+<varname>variant_dir</varname>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Duplicating the source tree may be disabled by setting the
+<literal>duplicate</literal>
+argument to
+<literal>0</literal>
+(zero).
+This will cause
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to invoke Builders using the path names of source files in
+<varname>src_dir</varname>
+and the path names of derived files within
+<varname>variant_dir</varname>.
+This is always more efficient than
+<literal>duplicate=1</literal>,
+and is usually safe for most builds
+(but see above for cases that may cause problems).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that
+<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function>
+works most naturally with a subsidiary SConscript file.
+However, you would then call the subsidiary SConscript file
+not in the source directory, but in the
+<varname>variant_dir</varname>,
+regardless of the value of
+<literal>duplicate</literal>.
+This is how you tell
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+which variant of a source tree to build:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# run src/SConscript in two variant directories
+VariantDir('build/variant1', 'src')
+SConscript('build/variant1/SConscript')
+VariantDir('build/variant2', 'src')
+SConscript('build/variant2/SConscript')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+See also the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-SConscript"><function>SConscript</function></link>
+function, described above,
+for another way to specify a variant directory
+in conjunction with calling a subsidiary SConscript file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Examples:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# use names in the build directory, not the source directory
+VariantDir('build', 'src', duplicate=0)
+Program('build/prog', 'build/source.c')
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# this builds both the source and docs in a separate subtree
+VariantDir('build', '.', duplicate=0)
+SConscript(dirs=['build/src','build/doc'])
+</example_commands>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# same as previous example, but only uses SConscript
+SConscript(dirs='src', variant_dir='build/src', duplicate=0)
+SConscript(dirs='doc', variant_dir='build/doc', duplicate=0)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="f-WhereIs">
+ <term>
+ <literal>WhereIs(program, [path, pathext, reject])</literal>
+ </term>
+ <term>
+ <literal>env.WhereIs(program, [path, pathext, reject])</literal>
+ </term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Searches for the specified executable
+<varname>program</varname>,
+returning the full path name to the program
+if it is found,
+and returning None if not.
+Searches the specified
+<varname>path</varname>,
+the value of the calling environment's PATH
+(<literal>env['ENV']['PATH']</literal>),
+or the user's current external PATH
+(<literal>os.environ['PATH']</literal>)
+by default.
+On Windows systems, searches for executable
+programs with any of the file extensions
+listed in the specified
+<varname>pathext</varname>,
+the calling environment's PATHEXT
+(<literal>env['ENV']['PATHEXT']</literal>)
+or the user's current PATHEXT
+(<literal>os.environ['PATHEXT']</literal>)
+by default.
+Will not select any
+path name or names
+in the specified
+<varname>reject</varname>
+list, if any.
+</para>
+</listitem>
+ </varlistentry>
+</variablelist>
diff --git a/doc/generated/functions.mod b/doc/generated/functions.mod
new file mode 100644
index 0000000..99aaa48
--- /dev/null
+++ b/doc/generated/functions.mod
@@ -0,0 +1,375 @@
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Regular function entities.
+
+-->
+
+<!ENTITY f-Action "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Action</function>">
+<!ENTITY f-AddMethod "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddMethod</function>">
+<!ENTITY f-AddOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddOption</function>">
+<!ENTITY f-AddPostAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddPostAction</function>">
+<!ENTITY f-AddPreAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddPreAction</function>">
+<!ENTITY f-Alias "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Alias</function>">
+<!ENTITY f-AllowSubstExceptions "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AllowSubstExceptions</function>">
+<!ENTITY f-AlwaysBuild "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AlwaysBuild</function>">
+<!ENTITY f-Append "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Append</function>">
+<!ENTITY f-AppendENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AppendENVPath</function>">
+<!ENTITY f-AppendUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AppendUnique</function>">
+<!ENTITY f-BitKeeper "<function xmlns='http://www.scons.org/dbxsd/v1.0'>BitKeeper</function>">
+<!ENTITY f-BuildDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>BuildDir</function>">
+<!ENTITY f-Builder "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Builder</function>">
+<!ENTITY f-CacheDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CacheDir</function>">
+<!ENTITY f-Clean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Clean</function>">
+<!ENTITY f-Clone "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Clone</function>">
+<!ENTITY f-Command "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Command</function>">
+<!ENTITY f-Configure "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Configure</function>">
+<!ENTITY f-Copy "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Copy</function>">
+<!ENTITY f-CVS "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CVS</function>">
+<!ENTITY f-Decider "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Decider</function>">
+<!ENTITY f-Default "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Default</function>">
+<!ENTITY f-DefaultEnvironment "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DefaultEnvironment</function>">
+<!ENTITY f-Depends "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Depends</function>">
+<!ENTITY f-Dictionary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Dictionary</function>">
+<!ENTITY f-Dir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Dir</function>">
+<!ENTITY f-Dump "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Dump</function>">
+<!ENTITY f-EnsurePythonVersion "<function xmlns='http://www.scons.org/dbxsd/v1.0'>EnsurePythonVersion</function>">
+<!ENTITY f-EnsureSConsVersion "<function xmlns='http://www.scons.org/dbxsd/v1.0'>EnsureSConsVersion</function>">
+<!ENTITY f-Environment "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Environment</function>">
+<!ENTITY f-Execute "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Execute</function>">
+<!ENTITY f-Exit "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Exit</function>">
+<!ENTITY f-Export "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Export</function>">
+<!ENTITY f-File "<function xmlns='http://www.scons.org/dbxsd/v1.0'>File</function>">
+<!ENTITY f-FindFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>FindFile</function>">
+<!ENTITY f-FindInstalledFiles "<function xmlns='http://www.scons.org/dbxsd/v1.0'>FindInstalledFiles</function>">
+<!ENTITY f-FindPathDirs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>FindPathDirs</function>">
+<!ENTITY f-FindSourceFiles "<function xmlns='http://www.scons.org/dbxsd/v1.0'>FindSourceFiles</function>">
+<!ENTITY f-Flatten "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Flatten</function>">
+<!ENTITY f-GetBuildFailures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetBuildFailures</function>">
+<!ENTITY f-GetBuildPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetBuildPath</function>">
+<!ENTITY f-GetLaunchDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetLaunchDir</function>">
+<!ENTITY f-GetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetOption</function>">
+<!ENTITY f-Glob "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Glob</function>">
+<!ENTITY f-Help "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Help</function>">
+<!ENTITY f-Ignore "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Ignore</function>">
+<!ENTITY f-Import "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Import</function>">
+<!ENTITY f-Literal "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Literal</function>">
+<!ENTITY f-Local "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Local</function>">
+<!ENTITY f-MergeFlags "<function xmlns='http://www.scons.org/dbxsd/v1.0'>MergeFlags</function>">
+<!ENTITY f-NoCache "<function xmlns='http://www.scons.org/dbxsd/v1.0'>NoCache</function>">
+<!ENTITY f-NoClean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>NoClean</function>">
+<!ENTITY f-ParseConfig "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ParseConfig</function>">
+<!ENTITY f-ParseDepends "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ParseDepends</function>">
+<!ENTITY f-ParseFlags "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ParseFlags</function>">
+<!ENTITY f-Perforce "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Perforce</function>">
+<!ENTITY f-Platform "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Platform</function>">
+<!ENTITY f-Precious "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Precious</function>">
+<!ENTITY f-Prepend "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Prepend</function>">
+<!ENTITY f-PrependENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PrependENVPath</function>">
+<!ENTITY f-PrependUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PrependUnique</function>">
+<!ENTITY f-Progress "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Progress</function>">
+<!ENTITY f-Pseudo "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Pseudo</function>">
+<!ENTITY f-RCS "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RCS</function>">
+<!ENTITY f-Replace "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Replace</function>">
+<!ENTITY f-Repository "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Repository</function>">
+<!ENTITY f-Requires "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Requires</function>">
+<!ENTITY f-Return "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Return</function>">
+<!ENTITY f-Scanner "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Scanner</function>">
+<!ENTITY f-SCCS "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SCCS</function>">
+<!ENTITY f-SConscript "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SConscript</function>">
+<!ENTITY f-SConscriptChdir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SConscriptChdir</function>">
+<!ENTITY f-SConsignFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SConsignFile</function>">
+<!ENTITY f-SetDefault "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetDefault</function>">
+<!ENTITY f-SetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetOption</function>">
+<!ENTITY f-SideEffect "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SideEffect</function>">
+<!ENTITY f-SourceCode "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceCode</function>">
+<!ENTITY f-SourceSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceSignatures</function>">
+<!ENTITY f-Split "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Split</function>">
+<!ENTITY f-subst "<function xmlns='http://www.scons.org/dbxsd/v1.0'>subst</function>">
+<!ENTITY f-Tag "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tag</function>">
+<!ENTITY f-TargetSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TargetSignatures</function>">
+<!ENTITY f-Tool "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tool</function>">
+<!ENTITY f-Value "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Value</function>">
+<!ENTITY f-VariantDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>VariantDir</function>">
+<!ENTITY f-WhereIs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>WhereIs</function>">
+
+<!ENTITY f-env-Action "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Action</function>">
+<!ENTITY f-env-AddMethod "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AddMethod</function>">
+<!ENTITY f-env-AddOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AddOption</function>">
+<!ENTITY f-env-AddPostAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AddPostAction</function>">
+<!ENTITY f-env-AddPreAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AddPreAction</function>">
+<!ENTITY f-env-Alias "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Alias</function>">
+<!ENTITY f-env-AllowSubstExceptions "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AllowSubstExceptions</function>">
+<!ENTITY f-env-AlwaysBuild "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AlwaysBuild</function>">
+<!ENTITY f-env-Append "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Append</function>">
+<!ENTITY f-env-AppendENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AppendENVPath</function>">
+<!ENTITY f-env-AppendUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AppendUnique</function>">
+<!ENTITY f-env-BitKeeper "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.BitKeeper</function>">
+<!ENTITY f-env-BuildDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.BuildDir</function>">
+<!ENTITY f-env-Builder "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Builder</function>">
+<!ENTITY f-env-CacheDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.CacheDir</function>">
+<!ENTITY f-env-Clean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Clean</function>">
+<!ENTITY f-env-Clone "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Clone</function>">
+<!ENTITY f-env-Command "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Command</function>">
+<!ENTITY f-env-Configure "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Configure</function>">
+<!ENTITY f-env-Copy "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Copy</function>">
+<!ENTITY f-env-CVS "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.CVS</function>">
+<!ENTITY f-env-Decider "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Decider</function>">
+<!ENTITY f-env-Default "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Default</function>">
+<!ENTITY f-env-DefaultEnvironment "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.DefaultEnvironment</function>">
+<!ENTITY f-env-Depends "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Depends</function>">
+<!ENTITY f-env-Dictionary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Dictionary</function>">
+<!ENTITY f-env-Dir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Dir</function>">
+<!ENTITY f-env-Dump "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Dump</function>">
+<!ENTITY f-env-EnsurePythonVersion "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.EnsurePythonVersion</function>">
+<!ENTITY f-env-EnsureSConsVersion "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.EnsureSConsVersion</function>">
+<!ENTITY f-env-Environment "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Environment</function>">
+<!ENTITY f-env-Execute "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Execute</function>">
+<!ENTITY f-env-Exit "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Exit</function>">
+<!ENTITY f-env-Export "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Export</function>">
+<!ENTITY f-env-File "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.File</function>">
+<!ENTITY f-env-FindFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.FindFile</function>">
+<!ENTITY f-env-FindInstalledFiles "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.FindInstalledFiles</function>">
+<!ENTITY f-env-FindPathDirs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.FindPathDirs</function>">
+<!ENTITY f-env-FindSourceFiles "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.FindSourceFiles</function>">
+<!ENTITY f-env-Flatten "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Flatten</function>">
+<!ENTITY f-env-GetBuildFailures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.GetBuildFailures</function>">
+<!ENTITY f-env-GetBuildPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.GetBuildPath</function>">
+<!ENTITY f-env-GetLaunchDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.GetLaunchDir</function>">
+<!ENTITY f-env-GetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.GetOption</function>">
+<!ENTITY f-env-Glob "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Glob</function>">
+<!ENTITY f-env-Help "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Help</function>">
+<!ENTITY f-env-Ignore "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Ignore</function>">
+<!ENTITY f-env-Import "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Import</function>">
+<!ENTITY f-env-Literal "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Literal</function>">
+<!ENTITY f-env-Local "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Local</function>">
+<!ENTITY f-env-MergeFlags "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.MergeFlags</function>">
+<!ENTITY f-env-NoCache "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.NoCache</function>">
+<!ENTITY f-env-NoClean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.NoClean</function>">
+<!ENTITY f-env-ParseConfig "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.ParseConfig</function>">
+<!ENTITY f-env-ParseDepends "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.ParseDepends</function>">
+<!ENTITY f-env-ParseFlags "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.ParseFlags</function>">
+<!ENTITY f-env-Perforce "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Perforce</function>">
+<!ENTITY f-env-Platform "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Platform</function>">
+<!ENTITY f-env-Precious "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Precious</function>">
+<!ENTITY f-env-Prepend "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Prepend</function>">
+<!ENTITY f-env-PrependENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.PrependENVPath</function>">
+<!ENTITY f-env-PrependUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.PrependUnique</function>">
+<!ENTITY f-env-Progress "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Progress</function>">
+<!ENTITY f-env-Pseudo "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Pseudo</function>">
+<!ENTITY f-env-RCS "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.RCS</function>">
+<!ENTITY f-env-Replace "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Replace</function>">
+<!ENTITY f-env-Repository "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Repository</function>">
+<!ENTITY f-env-Requires "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Requires</function>">
+<!ENTITY f-env-Return "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Return</function>">
+<!ENTITY f-env-Scanner "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Scanner</function>">
+<!ENTITY f-env-SCCS "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SCCS</function>">
+<!ENTITY f-env-SConscript "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SConscript</function>">
+<!ENTITY f-env-SConscriptChdir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SConscriptChdir</function>">
+<!ENTITY f-env-SConsignFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SConsignFile</function>">
+<!ENTITY f-env-SetDefault "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SetDefault</function>">
+<!ENTITY f-env-SetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SetOption</function>">
+<!ENTITY f-env-SideEffect "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SideEffect</function>">
+<!ENTITY f-env-SourceCode "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SourceCode</function>">
+<!ENTITY f-env-SourceSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SourceSignatures</function>">
+<!ENTITY f-env-Split "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Split</function>">
+<!ENTITY f-env-subst "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.subst</function>">
+<!ENTITY f-env-Tag "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Tag</function>">
+<!ENTITY f-env-TargetSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.TargetSignatures</function>">
+<!ENTITY f-env-Tool "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Tool</function>">
+<!ENTITY f-env-Value "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Value</function>">
+<!ENTITY f-env-VariantDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.VariantDir</function>">
+<!ENTITY f-env-WhereIs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.WhereIs</function>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Entities that are links to the function entries in the appendix.
+
+-->
+
+<!ENTITY f-link-Action "<link linkend='f-Action' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Action</function></link>">
+<!ENTITY f-link-AddMethod "<link linkend='f-AddMethod' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AddMethod</function></link>">
+<!ENTITY f-link-AddOption "<link linkend='f-AddOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AddOption</function></link>">
+<!ENTITY f-link-AddPostAction "<link linkend='f-AddPostAction' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AddPostAction</function></link>">
+<!ENTITY f-link-AddPreAction "<link linkend='f-AddPreAction' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AddPreAction</function></link>">
+<!ENTITY f-link-Alias "<link linkend='f-Alias' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Alias</function></link>">
+<!ENTITY f-link-AllowSubstExceptions "<link linkend='f-AllowSubstExceptions' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AllowSubstExceptions</function></link>">
+<!ENTITY f-link-AlwaysBuild "<link linkend='f-AlwaysBuild' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AlwaysBuild</function></link>">
+<!ENTITY f-link-Append "<link linkend='f-Append' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Append</function></link>">
+<!ENTITY f-link-AppendENVPath "<link linkend='f-AppendENVPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AppendENVPath</function></link>">
+<!ENTITY f-link-AppendUnique "<link linkend='f-AppendUnique' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AppendUnique</function></link>">
+<!ENTITY f-link-BitKeeper "<link linkend='f-BitKeeper' xmlns='http://www.scons.org/dbxsd/v1.0'><function>BitKeeper</function></link>">
+<!ENTITY f-link-BuildDir "<link linkend='f-BuildDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>BuildDir</function></link>">
+<!ENTITY f-link-Builder "<link linkend='f-Builder' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Builder</function></link>">
+<!ENTITY f-link-CacheDir "<link linkend='f-CacheDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>CacheDir</function></link>">
+<!ENTITY f-link-Clean "<link linkend='f-Clean' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Clean</function></link>">
+<!ENTITY f-link-Clone "<link linkend='f-Clone' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Clone</function></link>">
+<!ENTITY f-link-Command "<link linkend='f-Command' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Command</function></link>">
+<!ENTITY f-link-Configure "<link linkend='f-Configure' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Configure</function></link>">
+<!ENTITY f-link-Copy "<link linkend='f-Copy' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Copy</function></link>">
+<!ENTITY f-link-CVS "<link linkend='f-CVS' xmlns='http://www.scons.org/dbxsd/v1.0'><function>CVS</function></link>">
+<!ENTITY f-link-Decider "<link linkend='f-Decider' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Decider</function></link>">
+<!ENTITY f-link-Default "<link linkend='f-Default' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Default</function></link>">
+<!ENTITY f-link-DefaultEnvironment "<link linkend='f-DefaultEnvironment' xmlns='http://www.scons.org/dbxsd/v1.0'><function>DefaultEnvironment</function></link>">
+<!ENTITY f-link-Depends "<link linkend='f-Depends' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Depends</function></link>">
+<!ENTITY f-link-Dictionary "<link linkend='f-Dictionary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Dictionary</function></link>">
+<!ENTITY f-link-Dir "<link linkend='f-Dir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Dir</function></link>">
+<!ENTITY f-link-Dump "<link linkend='f-Dump' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Dump</function></link>">
+<!ENTITY f-link-EnsurePythonVersion "<link linkend='f-EnsurePythonVersion' xmlns='http://www.scons.org/dbxsd/v1.0'><function>EnsurePythonVersion</function></link>">
+<!ENTITY f-link-EnsureSConsVersion "<link linkend='f-EnsureSConsVersion' xmlns='http://www.scons.org/dbxsd/v1.0'><function>EnsureSConsVersion</function></link>">
+<!ENTITY f-link-Environment "<link linkend='f-Environment' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Environment</function></link>">
+<!ENTITY f-link-Execute "<link linkend='f-Execute' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Execute</function></link>">
+<!ENTITY f-link-Exit "<link linkend='f-Exit' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Exit</function></link>">
+<!ENTITY f-link-Export "<link linkend='f-Export' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Export</function></link>">
+<!ENTITY f-link-File "<link linkend='f-File' xmlns='http://www.scons.org/dbxsd/v1.0'><function>File</function></link>">
+<!ENTITY f-link-FindFile "<link linkend='f-FindFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>FindFile</function></link>">
+<!ENTITY f-link-FindInstalledFiles "<link linkend='f-FindInstalledFiles' xmlns='http://www.scons.org/dbxsd/v1.0'><function>FindInstalledFiles</function></link>">
+<!ENTITY f-link-FindPathDirs "<link linkend='f-FindPathDirs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>FindPathDirs</function></link>">
+<!ENTITY f-link-FindSourceFiles "<link linkend='f-FindSourceFiles' xmlns='http://www.scons.org/dbxsd/v1.0'><function>FindSourceFiles</function></link>">
+<!ENTITY f-link-Flatten "<link linkend='f-Flatten' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Flatten</function></link>">
+<!ENTITY f-link-GetBuildFailures "<link linkend='f-GetBuildFailures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>GetBuildFailures</function></link>">
+<!ENTITY f-link-GetBuildPath "<link linkend='f-GetBuildPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>GetBuildPath</function></link>">
+<!ENTITY f-link-GetLaunchDir "<link linkend='f-GetLaunchDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>GetLaunchDir</function></link>">
+<!ENTITY f-link-GetOption "<link linkend='f-GetOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>GetOption</function></link>">
+<!ENTITY f-link-Glob "<link linkend='f-Glob' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Glob</function></link>">
+<!ENTITY f-link-Help "<link linkend='f-Help' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Help</function></link>">
+<!ENTITY f-link-Ignore "<link linkend='f-Ignore' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Ignore</function></link>">
+<!ENTITY f-link-Import "<link linkend='f-Import' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Import</function></link>">
+<!ENTITY f-link-Literal "<link linkend='f-Literal' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Literal</function></link>">
+<!ENTITY f-link-Local "<link linkend='f-Local' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Local</function></link>">
+<!ENTITY f-link-MergeFlags "<link linkend='f-MergeFlags' xmlns='http://www.scons.org/dbxsd/v1.0'><function>MergeFlags</function></link>">
+<!ENTITY f-link-NoCache "<link linkend='f-NoCache' xmlns='http://www.scons.org/dbxsd/v1.0'><function>NoCache</function></link>">
+<!ENTITY f-link-NoClean "<link linkend='f-NoClean' xmlns='http://www.scons.org/dbxsd/v1.0'><function>NoClean</function></link>">
+<!ENTITY f-link-ParseConfig "<link linkend='f-ParseConfig' xmlns='http://www.scons.org/dbxsd/v1.0'><function>ParseConfig</function></link>">
+<!ENTITY f-link-ParseDepends "<link linkend='f-ParseDepends' xmlns='http://www.scons.org/dbxsd/v1.0'><function>ParseDepends</function></link>">
+<!ENTITY f-link-ParseFlags "<link linkend='f-ParseFlags' xmlns='http://www.scons.org/dbxsd/v1.0'><function>ParseFlags</function></link>">
+<!ENTITY f-link-Perforce "<link linkend='f-Perforce' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Perforce</function></link>">
+<!ENTITY f-link-Platform "<link linkend='f-Platform' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Platform</function></link>">
+<!ENTITY f-link-Precious "<link linkend='f-Precious' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Precious</function></link>">
+<!ENTITY f-link-Prepend "<link linkend='f-Prepend' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Prepend</function></link>">
+<!ENTITY f-link-PrependENVPath "<link linkend='f-PrependENVPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>PrependENVPath</function></link>">
+<!ENTITY f-link-PrependUnique "<link linkend='f-PrependUnique' xmlns='http://www.scons.org/dbxsd/v1.0'><function>PrependUnique</function></link>">
+<!ENTITY f-link-Progress "<link linkend='f-Progress' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Progress</function></link>">
+<!ENTITY f-link-Pseudo "<link linkend='f-Pseudo' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Pseudo</function></link>">
+<!ENTITY f-link-RCS "<link linkend='f-RCS' xmlns='http://www.scons.org/dbxsd/v1.0'><function>RCS</function></link>">
+<!ENTITY f-link-Replace "<link linkend='f-Replace' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Replace</function></link>">
+<!ENTITY f-link-Repository "<link linkend='f-Repository' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Repository</function></link>">
+<!ENTITY f-link-Requires "<link linkend='f-Requires' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Requires</function></link>">
+<!ENTITY f-link-Return "<link linkend='f-Return' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Return</function></link>">
+<!ENTITY f-link-Scanner "<link linkend='f-Scanner' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Scanner</function></link>">
+<!ENTITY f-link-SCCS "<link linkend='f-SCCS' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SCCS</function></link>">
+<!ENTITY f-link-SConscript "<link linkend='f-SConscript' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SConscript</function></link>">
+<!ENTITY f-link-SConscriptChdir "<link linkend='f-SConscriptChdir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SConscriptChdir</function></link>">
+<!ENTITY f-link-SConsignFile "<link linkend='f-SConsignFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SConsignFile</function></link>">
+<!ENTITY f-link-SetDefault "<link linkend='f-SetDefault' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SetDefault</function></link>">
+<!ENTITY f-link-SetOption "<link linkend='f-SetOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SetOption</function></link>">
+<!ENTITY f-link-SideEffect "<link linkend='f-SideEffect' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SideEffect</function></link>">
+<!ENTITY f-link-SourceCode "<link linkend='f-SourceCode' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SourceCode</function></link>">
+<!ENTITY f-link-SourceSignatures "<link linkend='f-SourceSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SourceSignatures</function></link>">
+<!ENTITY f-link-Split "<link linkend='f-Split' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Split</function></link>">
+<!ENTITY f-link-subst "<link linkend='f-subst' xmlns='http://www.scons.org/dbxsd/v1.0'><function>subst</function></link>">
+<!ENTITY f-link-Tag "<link linkend='f-Tag' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Tag</function></link>">
+<!ENTITY f-link-TargetSignatures "<link linkend='f-TargetSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>TargetSignatures</function></link>">
+<!ENTITY f-link-Tool "<link linkend='f-Tool' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Tool</function></link>">
+<!ENTITY f-link-Value "<link linkend='f-Value' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Value</function></link>">
+<!ENTITY f-link-VariantDir "<link linkend='f-VariantDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>VariantDir</function></link>">
+<!ENTITY f-link-WhereIs "<link linkend='f-WhereIs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>WhereIs</function></link>">
+
+<!ENTITY f-link-env-Action "<link linkend='f-Action' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Action</function></link>">
+<!ENTITY f-link-env-AddMethod "<link linkend='f-AddMethod' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AddMethod</function></link>">
+<!ENTITY f-link-env-AddOption "<link linkend='f-AddOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AddOption</function></link>">
+<!ENTITY f-link-env-AddPostAction "<link linkend='f-AddPostAction' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AddPostAction</function></link>">
+<!ENTITY f-link-env-AddPreAction "<link linkend='f-AddPreAction' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AddPreAction</function></link>">
+<!ENTITY f-link-env-Alias "<link linkend='f-Alias' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Alias</function></link>">
+<!ENTITY f-link-env-AllowSubstExceptions "<link linkend='f-AllowSubstExceptions' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AllowSubstExceptions</function></link>">
+<!ENTITY f-link-env-AlwaysBuild "<link linkend='f-AlwaysBuild' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AlwaysBuild</function></link>">
+<!ENTITY f-link-env-Append "<link linkend='f-Append' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Append</function></link>">
+<!ENTITY f-link-env-AppendENVPath "<link linkend='f-AppendENVPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AppendENVPath</function></link>">
+<!ENTITY f-link-env-AppendUnique "<link linkend='f-AppendUnique' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AppendUnique</function></link>">
+<!ENTITY f-link-env-BitKeeper "<link linkend='f-BitKeeper' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.BitKeeper</function></link>">
+<!ENTITY f-link-env-BuildDir "<link linkend='f-BuildDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.BuildDir</function></link>">
+<!ENTITY f-link-env-Builder "<link linkend='f-Builder' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Builder</function></link>">
+<!ENTITY f-link-env-CacheDir "<link linkend='f-CacheDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.CacheDir</function></link>">
+<!ENTITY f-link-env-Clean "<link linkend='f-Clean' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Clean</function></link>">
+<!ENTITY f-link-env-Clone "<link linkend='f-Clone' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Clone</function></link>">
+<!ENTITY f-link-env-Command "<link linkend='f-Command' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Command</function></link>">
+<!ENTITY f-link-env-Configure "<link linkend='f-Configure' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Configure</function></link>">
+<!ENTITY f-link-env-Copy "<link linkend='f-Copy' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Copy</function></link>">
+<!ENTITY f-link-env-CVS "<link linkend='f-CVS' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.CVS</function></link>">
+<!ENTITY f-link-env-Decider "<link linkend='f-Decider' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Decider</function></link>">
+<!ENTITY f-link-env-Default "<link linkend='f-Default' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Default</function></link>">
+<!ENTITY f-link-env-DefaultEnvironment "<link linkend='f-DefaultEnvironment' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.DefaultEnvironment</function></link>">
+<!ENTITY f-link-env-Depends "<link linkend='f-Depends' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Depends</function></link>">
+<!ENTITY f-link-env-Dictionary "<link linkend='f-Dictionary' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Dictionary</function></link>">
+<!ENTITY f-link-env-Dir "<link linkend='f-Dir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Dir</function></link>">
+<!ENTITY f-link-env-Dump "<link linkend='f-Dump' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Dump</function></link>">
+<!ENTITY f-link-env-EnsurePythonVersion "<link linkend='f-EnsurePythonVersion' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.EnsurePythonVersion</function></link>">
+<!ENTITY f-link-env-EnsureSConsVersion "<link linkend='f-EnsureSConsVersion' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.EnsureSConsVersion</function></link>">
+<!ENTITY f-link-env-Environment "<link linkend='f-Environment' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Environment</function></link>">
+<!ENTITY f-link-env-Execute "<link linkend='f-Execute' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Execute</function></link>">
+<!ENTITY f-link-env-Exit "<link linkend='f-Exit' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Exit</function></link>">
+<!ENTITY f-link-env-Export "<link linkend='f-Export' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Export</function></link>">
+<!ENTITY f-link-env-File "<link linkend='f-File' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.File</function></link>">
+<!ENTITY f-link-env-FindFile "<link linkend='f-FindFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.FindFile</function></link>">
+<!ENTITY f-link-env-FindInstalledFiles "<link linkend='f-FindInstalledFiles' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.FindInstalledFiles</function></link>">
+<!ENTITY f-link-env-FindPathDirs "<link linkend='f-FindPathDirs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.FindPathDirs</function></link>">
+<!ENTITY f-link-env-FindSourceFiles "<link linkend='f-FindSourceFiles' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.FindSourceFiles</function></link>">
+<!ENTITY f-link-env-Flatten "<link linkend='f-Flatten' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Flatten</function></link>">
+<!ENTITY f-link-env-GetBuildFailures "<link linkend='f-GetBuildFailures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.GetBuildFailures</function></link>">
+<!ENTITY f-link-env-GetBuildPath "<link linkend='f-GetBuildPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.GetBuildPath</function></link>">
+<!ENTITY f-link-env-GetLaunchDir "<link linkend='f-GetLaunchDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.GetLaunchDir</function></link>">
+<!ENTITY f-link-env-GetOption "<link linkend='f-GetOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.GetOption</function></link>">
+<!ENTITY f-link-env-Glob "<link linkend='f-Glob' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Glob</function></link>">
+<!ENTITY f-link-env-Help "<link linkend='f-Help' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Help</function></link>">
+<!ENTITY f-link-env-Ignore "<link linkend='f-Ignore' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Ignore</function></link>">
+<!ENTITY f-link-env-Import "<link linkend='f-Import' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Import</function></link>">
+<!ENTITY f-link-env-Literal "<link linkend='f-Literal' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Literal</function></link>">
+<!ENTITY f-link-env-Local "<link linkend='f-Local' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Local</function></link>">
+<!ENTITY f-link-env-MergeFlags "<link linkend='f-MergeFlags' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.MergeFlags</function></link>">
+<!ENTITY f-link-env-NoCache "<link linkend='f-NoCache' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.NoCache</function></link>">
+<!ENTITY f-link-env-NoClean "<link linkend='f-NoClean' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.NoClean</function></link>">
+<!ENTITY f-link-env-ParseConfig "<link linkend='f-ParseConfig' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.ParseConfig</function></link>">
+<!ENTITY f-link-env-ParseDepends "<link linkend='f-ParseDepends' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.ParseDepends</function></link>">
+<!ENTITY f-link-env-ParseFlags "<link linkend='f-ParseFlags' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.ParseFlags</function></link>">
+<!ENTITY f-link-env-Perforce "<link linkend='f-Perforce' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Perforce</function></link>">
+<!ENTITY f-link-env-Platform "<link linkend='f-Platform' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Platform</function></link>">
+<!ENTITY f-link-env-Precious "<link linkend='f-Precious' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Precious</function></link>">
+<!ENTITY f-link-env-Prepend "<link linkend='f-Prepend' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Prepend</function></link>">
+<!ENTITY f-link-env-PrependENVPath "<link linkend='f-PrependENVPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.PrependENVPath</function></link>">
+<!ENTITY f-link-env-PrependUnique "<link linkend='f-PrependUnique' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.PrependUnique</function></link>">
+<!ENTITY f-link-env-Progress "<link linkend='f-Progress' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Progress</function></link>">
+<!ENTITY f-link-env-Pseudo "<link linkend='f-Pseudo' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Pseudo</function></link>">
+<!ENTITY f-link-env-RCS "<link linkend='f-RCS' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.RCS</function></link>">
+<!ENTITY f-link-env-Replace "<link linkend='f-Replace' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Replace</function></link>">
+<!ENTITY f-link-env-Repository "<link linkend='f-Repository' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Repository</function></link>">
+<!ENTITY f-link-env-Requires "<link linkend='f-Requires' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Requires</function></link>">
+<!ENTITY f-link-env-Return "<link linkend='f-Return' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Return</function></link>">
+<!ENTITY f-link-env-Scanner "<link linkend='f-Scanner' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Scanner</function></link>">
+<!ENTITY f-link-env-SCCS "<link linkend='f-SCCS' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SCCS</function></link>">
+<!ENTITY f-link-env-SConscript "<link linkend='f-SConscript' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SConscript</function></link>">
+<!ENTITY f-link-env-SConscriptChdir "<link linkend='f-SConscriptChdir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SConscriptChdir</function></link>">
+<!ENTITY f-link-env-SConsignFile "<link linkend='f-SConsignFile' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SConsignFile</function></link>">
+<!ENTITY f-link-env-SetDefault "<link linkend='f-SetDefault' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SetDefault</function></link>">
+<!ENTITY f-link-env-SetOption "<link linkend='f-SetOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SetOption</function></link>">
+<!ENTITY f-link-env-SideEffect "<link linkend='f-SideEffect' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SideEffect</function></link>">
+<!ENTITY f-link-env-SourceCode "<link linkend='f-SourceCode' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SourceCode</function></link>">
+<!ENTITY f-link-env-SourceSignatures "<link linkend='f-SourceSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SourceSignatures</function></link>">
+<!ENTITY f-link-env-Split "<link linkend='f-Split' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Split</function></link>">
+<!ENTITY f-link-env-subst "<link linkend='f-subst' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.subst</function></link>">
+<!ENTITY f-link-env-Tag "<link linkend='f-Tag' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Tag</function></link>">
+<!ENTITY f-link-env-TargetSignatures "<link linkend='f-TargetSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.TargetSignatures</function></link>">
+<!ENTITY f-link-env-Tool "<link linkend='f-Tool' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Tool</function></link>">
+<!ENTITY f-link-env-Value "<link linkend='f-Value' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Value</function></link>">
+<!ENTITY f-link-env-VariantDir "<link linkend='f-VariantDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.VariantDir</function></link>">
+<!ENTITY f-link-env-WhereIs "<link linkend='f-WhereIs' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.WhereIs</function></link>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
diff --git a/doc/generated/tools.gen b/doc/generated/tools.gen
new file mode 100644
index 0000000..a0a709e
--- /dev/null
+++ b/doc/generated/tools.gen
@@ -0,0 +1,1003 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+ <!ENTITY % builders-mod SYSTEM "builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "variables.mod">
+ %variables-mod;
+]>
+
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <varlistentry id="t-386asm">
+ <term>386asm</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the 386ASM assembler
+for the Phar Lap ETS embedded operating system.
+</para>
+<para>Sets: &cv-link-AS;, &cv-link-ASCOM;, &cv-link-ASFLAGS;, &cv-link-ASPPCOM;, &cv-link-ASPPFLAGS;.</para><para>Uses: &cv-link-CC;, &cv-link-CPPFLAGS;, &cv-link-_CPPDEFFLAGS;, &cv-link-_CPPINCFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-aixcXX">
+ <term>aixc++</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the IMB xlc / Visual Age C++ compiler.
+</para>
+<para>Sets: &cv-link-CXX;, &cv-link-CXXVERSION;, &cv-link-SHCXX;, &cv-link-SHOBJSUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-aixcc">
+ <term>aixcc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the IBM xlc / Visual Age C compiler.
+</para>
+<para>Sets: &cv-link-CC;, &cv-link-CCVERSION;, &cv-link-SHCC;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-aixf77">
+ <term>aixf77</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the IBM Visual Age f77 Fortran compiler.
+</para>
+<para>Sets: &cv-link-F77;, &cv-link-SHF77;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-aixlink">
+ <term>aixlink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the IBM Visual Age linker.
+</para>
+<para>Sets: &cv-link-LINKFLAGS;, &cv-link-SHLIBSUFFIX;, &cv-link-SHLINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-applelink">
+ <term>applelink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Apple linker
+(similar to the GNU linker).
+</para>
+<para>Sets: &cv-link-FRAMEWORKPATHPREFIX;, &cv-link-LDMODULECOM;, &cv-link-LDMODULEFLAGS;, &cv-link-LDMODULEPREFIX;, &cv-link-LDMODULESUFFIX;, &cv-link-LINKCOM;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;, &cv-link-_FRAMEWORKPATH;, &cv-link-_FRAMEWORKS;.</para><para>Uses: &cv-link-FRAMEWORKSFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-ar">
+ <term>ar</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">ar</application> library archiver.
+</para>
+<para>Sets: &cv-link-AR;, &cv-link-ARCOM;, &cv-link-ARFLAGS;, &cv-link-LIBPREFIX;, &cv-link-LIBSUFFIX;, &cv-link-RANLIB;, &cv-link-RANLIBCOM;, &cv-link-RANLIBFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-as">
+ <term>as</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">as</application> assembler.
+</para>
+<para>Sets: &cv-link-AS;, &cv-link-ASCOM;, &cv-link-ASFLAGS;, &cv-link-ASPPCOM;, &cv-link-ASPPFLAGS;.</para><para>Uses: &cv-link-CC;, &cv-link-CPPFLAGS;, &cv-link-_CPPDEFFLAGS;, &cv-link-_CPPINCFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-bcc32">
+ <term>bcc32</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the bcc32 compiler.
+</para>
+<para>Sets: &cv-link-CC;, &cv-link-CCCOM;, &cv-link-CCFLAGS;, &cv-link-CFILESUFFIX;, &cv-link-CFLAGS;, &cv-link-CPPDEFPREFIX;, &cv-link-CPPDEFSUFFIX;, &cv-link-INCPREFIX;, &cv-link-INCSUFFIX;, &cv-link-SHCC;, &cv-link-SHCCCOM;, &cv-link-SHCCFLAGS;, &cv-link-SHCFLAGS;, &cv-link-SHOBJSUFFIX;.</para><para>Uses: &cv-link-_CPPDEFFLAGS;, &cv-link-_CPPINCFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-BitKeeper">
+ <term>BitKeeper</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the BitKeeper
+source code control system.
+</para>
+<para>Sets: &cv-link-BITKEEPER;, &cv-link-BITKEEPERCOM;, &cv-link-BITKEEPERGET;, &cv-link-BITKEEPERGETFLAGS;.</para><para>Uses: &cv-link-BITKEEPERCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-cc">
+ <term>cc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for generic POSIX C copmilers.
+</para>
+<para>Sets: &cv-link-CC;, &cv-link-CCCOM;, &cv-link-CCFLAGS;, &cv-link-CFILESUFFIX;, &cv-link-CFLAGS;, &cv-link-CPPDEFPREFIX;, &cv-link-CPPDEFSUFFIX;, &cv-link-FRAMEWORKPATH;, &cv-link-FRAMEWORKS;, &cv-link-INCPREFIX;, &cv-link-INCSUFFIX;, &cv-link-SHCC;, &cv-link-SHCCCOM;, &cv-link-SHCCFLAGS;, &cv-link-SHCFLAGS;, &cv-link-SHOBJSUFFIX;.</para><para>Uses: &cv-link-PLATFORM;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-cvf">
+ <term>cvf</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Compaq Visual Fortran compiler.
+</para>
+<para>Sets: &cv-link-FORTRAN;, &cv-link-FORTRANCOM;, &cv-link-FORTRANMODDIR;, &cv-link-FORTRANMODDIRPREFIX;, &cv-link-FORTRANMODDIRSUFFIX;, &cv-link-FORTRANPPCOM;, &cv-link-OBJSUFFIX;, &cv-link-SHFORTRANCOM;, &cv-link-SHFORTRANPPCOM;.</para><para>Uses: &cv-link-CPPFLAGS;, &cv-link-FORTRANFLAGS;, &cv-link-SHFORTRANFLAGS;, &cv-link-_CPPDEFFLAGS;, &cv-link-_FORTRANINCFLAGS;, &cv-link-_FORTRANMODFLAG;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-CVS">
+ <term>CVS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the CVS source code
+management system.
+</para>
+<para>Sets: &cv-link-CVS;, &cv-link-CVSCOFLAGS;, &cv-link-CVSCOM;, &cv-link-CVSFLAGS;.</para><para>Uses: &cv-link-CVSCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-cXX">
+ <term>cXX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for generic POSIX C++ compilers.
+</para>
+<para>Sets: &cv-link-CPPDEFPREFIX;, &cv-link-CPPDEFSUFFIX;, &cv-link-CXX;, &cv-link-CXXCOM;, &cv-link-CXXFILESUFFIX;, &cv-link-CXXFLAGS;, &cv-link-INCPREFIX;, &cv-link-INCSUFFIX;, &cv-link-OBJSUFFIX;, &cv-link-SHCXX;, &cv-link-SHCXXCOM;, &cv-link-SHCXXFLAGS;, &cv-link-SHOBJSUFFIX;.</para><para>Uses: &cv-link-CXXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-default">
+ <term>default</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets variables by calling a default list of Tool modules
+for the platform on which SCons is running.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-dmd">
+ <term>dmd</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for D language compilers
+(the Digital Mars D compiler, or GDC).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-docbook">
+ <term>docbook</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">This tool tries to make working with Docbook in SCons a little easier.
+It provides several toolchains for creating different output formats,
+like HTML or PDF. Contained in the package is
+a distribution of the Docbook XSL stylesheets as of version 1.76.1.
+As long as you don't specify your own stylesheets for customization,
+these official versions are picked as default...which should reduce
+the inevitable setup hassles for you.
+</para>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Implicit dependencies to images and XIncludes are detected automatically
+if you meet the HTML requirements. The additional
+stylesheet <filename>utils/xmldepend.xsl</filename> by Paul DuBois is used for this purpose.
+</para>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Note, that there is no support for XML catalog resolving offered! This tool calls
+the XSLT processors and PDF renderers with the stylesheets you specified, that's it.
+The rest lies in your hands and you still have to know what you're doing when
+resolving names via a catalog.
+</para>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">For activating the tool "docbook", you have to add its name to the Environment constructor,
+like this
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">On its startup, the Docbook tool tries to find a required <literal>xsltproc</literal> processor, and
+a PDF renderer, e.g. <literal>fop</literal>. So make sure that these are added to your system's environment
+<literal>PATH</literal> and can be called directly, without specifying their full path.
+</para>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">For the most basic processing of Docbook to HTML, you need to have installed
+</para>
+<itemizedlist xmlns="http://www.scons.org/dbxsd/v1.0"><listitem><para>the Python <literal>lxml</literal> binding to <literal>libxml2</literal>, or
+</para>
+</listitem>
+<listitem><para>the direct Python bindings for <literal>libxml2/libxslt</literal>, or
+</para>
+</listitem>
+<listitem><para>a standalone XSLT processor, currently detected are <literal>xsltproc</literal>, <literal>saxon</literal>, <literal>saxon-xslt</literal>
+and <literal>xalan</literal>.
+</para>
+</listitem>
+</itemizedlist>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Rendering to PDF requires you to have one of the applications
+<literal>fop</literal> or <literal>xep</literal> installed.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Creating a HTML or PDF document is very simple and straightforward. Say
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtml('manual.html', 'manual.xml')
+env.DocbookPdf('manual.pdf', 'manual.xml')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">to get both outputs from your XML source <filename>manual.xml</filename>. As a shortcut, you can
+give the stem of the filenames alone, like this:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtml('manual')
+env.DocbookPdf('manual')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">and get the same result. Target and source lists are also supported:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtml(['manual.html','reference.html'], ['manual.xml','reference.xml'])
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">or even
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtml(['manual','reference'])
+</screen>
+<important xmlns="http://www.scons.org/dbxsd/v1.0"><para>Whenever you leave out the list of sources, you may not specify a file extension! The
+Tool uses the given names as file stems, and adds the suffixes for target and source files
+accordingly.
+</para>
+</important>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">The rules given above are valid for the Builders <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookHtml"><function>DocbookHtml</function></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookPdf"><function>DocbookPdf</function></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookEpub"><function>DocbookEpub</function></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookSlidesPdf"><function>DocbookSlidesPdf</function></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookXInclude"><function>DocbookXInclude</function></link>. For the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookMan"><function>DocbookMan</function></link> transformation you
+can specify a target name, but the actual output names are automatically
+set from the <literal>refname</literal> entries in your XML source.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">The Builders <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookHtmlChunked"><function>DocbookHtmlChunked</function></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookHtmlhelp"><function>DocbookHtmlhelp</function></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookSlidesHtml"><function>DocbookSlidesHtml</function></link> are special, in that:
+</para>
+<orderedlist xmlns="http://www.scons.org/dbxsd/v1.0"><listitem><para>they create a large set of files, where the exact names and their number depend
+on the content of the source file, and
+</para>
+</listitem>
+<listitem><para>the main target is always named <filename>index.html</filename>, i.e. the output name for the
+XSL transformation is not picked up by the stylesheets.
+</para>
+</listitem>
+</orderedlist>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">As a result, there is simply no use in specifying a target HTML name.
+So the basic syntax for these builders is always:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual')
+</screen>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">If you want to use a specific XSL file, you can set the
+additional <literal>xsl</literal> parameter to your
+Builder call as follows:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env.DocbookHtml('other.html', 'manual.xml', xsl='html.xsl')
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">Since this may get tedious if you always use the same local naming for your customized XSL files,
+e.g. <filename>html.xsl</filename> for HTML and <filename>pdf.xsl</filename> for PDF output, a set of
+variables for setting the default XSL name is provided. These are:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">DOCBOOK_DEFAULT_XSL_HTML
+DOCBOOK_DEFAULT_XSL_HTMLCHUNKED
+DOCBOOK_DEFAULT_XSL_HTMLHELP
+DOCBOOK_DEFAULT_XSL_PDF
+DOCBOOK_DEFAULT_XSL_EPUB
+DOCBOOK_DEFAULT_XSL_MAN
+DOCBOOK_DEFAULT_XSL_SLIDESPDF
+DOCBOOK_DEFAULT_XSL_SLIDESHTML
+</screen>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">and you can set them when constructing your environment:
+</para>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0">env = Environment(tools=['docbook'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+env.DocbookHtml('manual') # now uses html.xsl
+</screen>
+<para>Sets: &cv-link-DOCBOOK_DEFAULT_XSL_EPUB;, &cv-link-DOCBOOK_DEFAULT_XSL_HTML;, &cv-link-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED;, &cv-link-DOCBOOK_DEFAULT_XSL_HTMLHELP;, &cv-link-DOCBOOK_DEFAULT_XSL_MAN;, &cv-link-DOCBOOK_DEFAULT_XSL_PDF;, &cv-link-DOCBOOK_DEFAULT_XSL_SLIDESHTML;, &cv-link-DOCBOOK_DEFAULT_XSL_SLIDESPDF;, &cv-link-DOCBOOK_FOP;, &cv-link-DOCBOOK_FOPCOM;, &cv-link-DOCBOOK_FOPFLAGS;, &cv-link-DOCBOOK_XMLLINT;, &cv-link-DOCBOOK_XMLLINTCOM;, &cv-link-DOCBOOK_XMLLINTFLAGS;, &cv-link-DOCBOOK_XSLTPROC;, &cv-link-DOCBOOK_XSLTPROCCOM;, &cv-link-DOCBOOK_XSLTPROCFLAGS;, &cv-link-DOCBOOK_XSLTPROCPARAMS;.</para><para>Uses: &cv-link-DOCBOOK_FOPCOMSTR;, &cv-link-DOCBOOK_XMLLINTCOMSTR;, &cv-link-DOCBOOK_XSLTPROCCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-dvi">
+ <term>dvi</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Attaches the <function xmlns="http://www.scons.org/dbxsd/v1.0">DVI</function> builder to the
+construction environment.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-dvipdf">
+ <term>dvipdf</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the dvipdf utility.
+</para>
+<para>Sets: &cv-link-DVIPDF;, &cv-link-DVIPDFCOM;, &cv-link-DVIPDFFLAGS;.</para><para>Uses: &cv-link-DVIPDFCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-dvips">
+ <term>dvips</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the dvips utility.
+</para>
+<para>Sets: &cv-link-DVIPS;, &cv-link-DVIPSFLAGS;, &cv-link-PSCOM;, &cv-link-PSPREFIX;, &cv-link-PSSUFFIX;.</para><para>Uses: &cv-link-PSCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-f03">
+ <term>f03</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for generic POSIX Fortran 03 compilers.
+</para>
+<para>Sets: &cv-link-F03;, &cv-link-F03COM;, &cv-link-F03FLAGS;, &cv-link-F03PPCOM;, &cv-link-SHF03;, &cv-link-SHF03COM;, &cv-link-SHF03FLAGS;, &cv-link-SHF03PPCOM;, &cv-link-_F03INCFLAGS;.</para><para>Uses: &cv-link-F03COMSTR;, &cv-link-F03PPCOMSTR;, &cv-link-SHF03COMSTR;, &cv-link-SHF03PPCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-f77">
+ <term>f77</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for generic POSIX Fortran 77 compilers.
+</para>
+<para>Sets: &cv-link-F77;, &cv-link-F77COM;, &cv-link-F77FILESUFFIXES;, &cv-link-F77FLAGS;, &cv-link-F77PPCOM;, &cv-link-F77PPFILESUFFIXES;, &cv-link-FORTRAN;, &cv-link-FORTRANCOM;, &cv-link-FORTRANFLAGS;, &cv-link-SHF77;, &cv-link-SHF77COM;, &cv-link-SHF77FLAGS;, &cv-link-SHF77PPCOM;, &cv-link-SHFORTRAN;, &cv-link-SHFORTRANCOM;, &cv-link-SHFORTRANFLAGS;, &cv-link-SHFORTRANPPCOM;, &cv-link-_F77INCFLAGS;.</para><para>Uses: &cv-link-F77COMSTR;, &cv-link-F77PPCOMSTR;, &cv-link-FORTRANCOMSTR;, &cv-link-FORTRANPPCOMSTR;, &cv-link-SHF77COMSTR;, &cv-link-SHF77PPCOMSTR;, &cv-link-SHFORTRANCOMSTR;, &cv-link-SHFORTRANPPCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-f90">
+ <term>f90</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for generic POSIX Fortran 90 compilers.
+</para>
+<para>Sets: &cv-link-F90;, &cv-link-F90COM;, &cv-link-F90FLAGS;, &cv-link-F90PPCOM;, &cv-link-SHF90;, &cv-link-SHF90COM;, &cv-link-SHF90FLAGS;, &cv-link-SHF90PPCOM;, &cv-link-_F90INCFLAGS;.</para><para>Uses: &cv-link-F90COMSTR;, &cv-link-F90PPCOMSTR;, &cv-link-SHF90COMSTR;, &cv-link-SHF90PPCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-f95">
+ <term>f95</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for generic POSIX Fortran 95 compilers.
+</para>
+<para>Sets: &cv-link-F95;, &cv-link-F95COM;, &cv-link-F95FLAGS;, &cv-link-F95PPCOM;, &cv-link-SHF95;, &cv-link-SHF95COM;, &cv-link-SHF95FLAGS;, &cv-link-SHF95PPCOM;, &cv-link-_F95INCFLAGS;.</para><para>Uses: &cv-link-F95COMSTR;, &cv-link-F95PPCOMSTR;, &cv-link-SHF95COMSTR;, &cv-link-SHF95PPCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-fortran">
+ <term>fortran</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for generic POSIX Fortran compilers.
+</para>
+<para>Sets: &cv-link-FORTRAN;, &cv-link-FORTRANCOM;, &cv-link-FORTRANFLAGS;, &cv-link-SHFORTRAN;, &cv-link-SHFORTRANCOM;, &cv-link-SHFORTRANFLAGS;, &cv-link-SHFORTRANPPCOM;.</para><para>Uses: &cv-link-FORTRANCOMSTR;, &cv-link-FORTRANPPCOMSTR;, &cv-link-SHFORTRANCOMSTR;, &cv-link-SHFORTRANPPCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-gXX">
+ <term>g++</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">gXX</application> C++ compiler.
+</para>
+<para>Sets: &cv-link-CXX;, &cv-link-CXXVERSION;, &cv-link-SHCXXFLAGS;, &cv-link-SHOBJSUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-g77">
+ <term>g77</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">g77</application> Fortran compiler.
+Calls the <literal xmlns="http://www.scons.org/dbxsd/v1.0">f77</literal> Tool module
+to set variables.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-gas">
+ <term>gas</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">gas</application> assembler.
+Calls the <literal xmlns="http://www.scons.org/dbxsd/v1.0">as</literal> module.
+</para>
+<para>Sets: &cv-link-AS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-gcc">
+ <term>gcc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">gcc</application> C compiler.
+</para>
+<para>Sets: &cv-link-CC;, &cv-link-CCVERSION;, &cv-link-SHCCFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-gettext">
+ <term>gettext</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is actually a toolset, which supports internationalization and
+localization of sofware being constructed with SCons. The toolset loads
+following tools:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<itemizedlist mark="opencircle">
+ <listitem><para>
+ <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> - to extract internationalized messages from source code to
+ <literal>POT</literal> file(s),
+ </para></listitem>
+ <listitem><para>
+ <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> - may be optionally used to initialize <literal>PO</literal>
+ files,
+ </para></listitem>
+ <listitem><para>
+ <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgmerge"><literal>msgmerge</literal></link> - to update <literal>PO</literal> files, that already contain
+ translated messages,</para></listitem>
+ <listitem><para>
+ <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgfmt"><literal>msgfmt</literal></link> - to compile textual <literal>PO</literal> file to binary
+ installable <literal>MO</literal> file.
+ </para></listitem>
+</itemizedlist>
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When you enable <literal xmlns="http://www.scons.org/dbxsd/v1.0">gettext</literal>, it internally loads all abovementioned tools,
+so you're encouraged to see their individual documentation.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Each of the above tools provides its own builder(s) which may be used to
+perform particular activities related to software internationalization. You
+may be however interested in <emphasis>top-level</emphasis> builder
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Translate</function> described few paragraphs later.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+To use <literal xmlns="http://www.scons.org/dbxsd/v1.0">gettext</literal> tools add <literal>'gettext'</literal> tool to your
+environment:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ env = Environment( tools = ['default', 'gettext'] )
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-gfortran">
+ <term>gfortran</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the GNU F95/F2003 GNU compiler.
+</para>
+<para>Sets: &cv-link-F77;, &cv-link-F90;, &cv-link-F95;, &cv-link-FORTRAN;, &cv-link-SHF77;, &cv-link-SHF77FLAGS;, &cv-link-SHF90;, &cv-link-SHF90FLAGS;, &cv-link-SHF95;, &cv-link-SHF95FLAGS;, &cv-link-SHFORTRAN;, &cv-link-SHFORTRANFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-gnulink">
+ <term>gnulink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for GNU linker/loader.
+</para>
+<para>Sets: &cv-link-RPATHPREFIX;, &cv-link-RPATHSUFFIX;, &cv-link-SHLINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-gs">
+ <term>gs</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This Tool sets the required construction variables for working with
+the Ghostscript command. It also registers an appropriate Action
+with the PDF Builder (<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-PDF"><function>PDF</function></link>), such that the conversion from
+PS/EPS to PDF happens automatically for the TeX/LaTeX toolchain.
+Finally, it adds an explicit Ghostscript Builder (<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Gs"><function>Gs</function></link>) to the
+environment.
+</para>
+<para>Sets: &cv-link-GS;, &cv-link-GSCOM;, &cv-link-GSFLAGS;.</para><para>Uses: &cv-link-GSCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-hpcXX">
+ <term>hpc++</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the compilers aCC on HP/UX systems.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-hpcc">
+ <term>hpcc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the
+<application>aCC</application> on HP/UX systems.
+Calls the <literal xmlns="http://www.scons.org/dbxsd/v1.0">cXX</literal> tool for additional variables.
+</para>
+<para>Sets: &cv-link-CXX;, &cv-link-CXXVERSION;, &cv-link-SHCXXFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-hplink">
+ <term>hplink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the linker on HP/UX systems.
+</para>
+<para>Sets: &cv-link-LINKFLAGS;, &cv-link-SHLIBSUFFIX;, &cv-link-SHLINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-icc">
+ <term>icc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the
+<application>icc</application> compiler on OS/2 systems.
+</para>
+<para>Sets: &cv-link-CC;, &cv-link-CCCOM;, &cv-link-CFILESUFFIX;, &cv-link-CPPDEFPREFIX;, &cv-link-CPPDEFSUFFIX;, &cv-link-CXXCOM;, &cv-link-CXXFILESUFFIX;, &cv-link-INCPREFIX;, &cv-link-INCSUFFIX;.</para><para>Uses: &cv-link-CCFLAGS;, &cv-link-CFLAGS;, &cv-link-CPPFLAGS;, &cv-link-_CPPDEFFLAGS;, &cv-link-_CPPINCFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-icl">
+ <term>icl</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Intel C/C++ compiler.
+Calls the <literal xmlns="http://www.scons.org/dbxsd/v1.0">intelc</literal> Tool module to set its variables.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-ifl">
+ <term>ifl</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Intel Fortran compiler.
+</para>
+<para>Sets: &cv-link-FORTRAN;, &cv-link-FORTRANCOM;, &cv-link-FORTRANPPCOM;, &cv-link-SHFORTRANCOM;, &cv-link-SHFORTRANPPCOM;.</para><para>Uses: &cv-link-CPPFLAGS;, &cv-link-FORTRANFLAGS;, &cv-link-_CPPDEFFLAGS;, &cv-link-_FORTRANINCFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-ifort">
+ <term>ifort</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for newer versions
+of the Intel Fortran compiler for Linux.
+</para>
+<para>Sets: &cv-link-F77;, &cv-link-F90;, &cv-link-F95;, &cv-link-FORTRAN;, &cv-link-SHF77;, &cv-link-SHF77FLAGS;, &cv-link-SHF90;, &cv-link-SHF90FLAGS;, &cv-link-SHF95;, &cv-link-SHF95FLAGS;, &cv-link-SHFORTRAN;, &cv-link-SHFORTRANFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-ilink">
+ <term>ilink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the
+<application>ilink</application> linker on OS/2 systems.
+</para>
+<para>Sets: &cv-link-LIBDIRPREFIX;, &cv-link-LIBDIRSUFFIX;, &cv-link-LIBLINKPREFIX;, &cv-link-LIBLINKSUFFIX;, &cv-link-LINK;, &cv-link-LINKCOM;, &cv-link-LINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-ilink32">
+ <term>ilink32</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Borland
+<application>ilink32</application> linker.
+</para>
+<para>Sets: &cv-link-LIBDIRPREFIX;, &cv-link-LIBDIRSUFFIX;, &cv-link-LIBLINKPREFIX;, &cv-link-LIBLINKSUFFIX;, &cv-link-LINK;, &cv-link-LINKCOM;, &cv-link-LINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-install">
+ <term>install</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for file
+and directory installation.
+</para>
+<para>Sets: &cv-link-INSTALL;, &cv-link-INSTALLSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-intelc">
+ <term>intelc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Intel C/C++ compiler
+(Linux and Windows, version 7 and later).
+Calls the <literal xmlns="http://www.scons.org/dbxsd/v1.0">gcc</literal> or <literal xmlns="http://www.scons.org/dbxsd/v1.0">msvc</literal>
+(on Linux and Windows, respectively)
+to set underlying variables.
+</para>
+<para>Sets: &cv-link-AR;, &cv-link-CC;, &cv-link-CXX;, &cv-link-INTEL_C_COMPILER_VERSION;, &cv-link-LINK;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-jar">
+ <term>jar</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">jar</application> utility.
+</para>
+<para>Sets: &cv-link-JAR;, &cv-link-JARCOM;, &cv-link-JARFLAGS;, &cv-link-JARSUFFIX;.</para><para>Uses: &cv-link-JARCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-javac">
+ <term>javac</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">javac</application> compiler.
+</para>
+<para>Sets: &cv-link-JAVABOOTCLASSPATH;, &cv-link-JAVAC;, &cv-link-JAVACCOM;, &cv-link-JAVACFLAGS;, &cv-link-JAVACLASSPATH;, &cv-link-JAVACLASSSUFFIX;, &cv-link-JAVASOURCEPATH;, &cv-link-JAVASUFFIX;.</para><para>Uses: &cv-link-JAVACCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-javah">
+ <term>javah</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">javah</application> tool.
+</para>
+<para>Sets: &cv-link-JAVACLASSSUFFIX;, &cv-link-JAVAH;, &cv-link-JAVAHCOM;, &cv-link-JAVAHFLAGS;.</para><para>Uses: &cv-link-JAVACLASSPATH;, &cv-link-JAVAHCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-latex">
+ <term>latex</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">latex</application> utility.
+</para>
+<para>Sets: &cv-link-LATEX;, &cv-link-LATEXCOM;, &cv-link-LATEXFLAGS;.</para><para>Uses: &cv-link-LATEXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-lex">
+ <term>lex</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">lex</application> lexical analyser.
+</para>
+<para>Sets: &cv-link-LEX;, &cv-link-LEXCOM;, &cv-link-LEXFLAGS;.</para><para>Uses: &cv-link-LEXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-link">
+ <term>link</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for generic POSIX linkers.
+</para>
+<para>Sets: &cv-link-LDMODULE;, &cv-link-LDMODULECOM;, &cv-link-LDMODULEFLAGS;, &cv-link-LDMODULEPREFIX;, &cv-link-LDMODULESUFFIX;, &cv-link-LIBDIRPREFIX;, &cv-link-LIBDIRSUFFIX;, &cv-link-LIBLINKPREFIX;, &cv-link-LIBLINKSUFFIX;, &cv-link-LINK;, &cv-link-LINKCOM;, &cv-link-LINKFLAGS;, &cv-link-SHLIBSUFFIX;, &cv-link-SHLINK;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;.</para><para>Uses: &cv-link-LDMODULECOMSTR;, &cv-link-LINKCOMSTR;, &cv-link-SHLINKCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-linkloc">
+ <term>linkloc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the
+<application>LinkLoc</application>
+linker for the Phar Lap ETS embedded operating system.
+</para>
+<para>Sets: &cv-link-LIBDIRPREFIX;, &cv-link-LIBDIRSUFFIX;, &cv-link-LIBLINKPREFIX;, &cv-link-LIBLINKSUFFIX;, &cv-link-LINK;, &cv-link-LINKCOM;, &cv-link-LINKFLAGS;, &cv-link-SHLINK;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;.</para><para>Uses: &cv-link-LINKCOMSTR;, &cv-link-SHLINKCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-m4">
+ <term>m4</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">m4</application> macro processor.
+</para>
+<para>Sets: &cv-link-M4;, &cv-link-M4COM;, &cv-link-M4FLAGS;.</para><para>Uses: &cv-link-M4COMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-masm">
+ <term>masm</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Microsoft assembler.
+</para>
+<para>Sets: &cv-link-AS;, &cv-link-ASCOM;, &cv-link-ASFLAGS;, &cv-link-ASPPCOM;, &cv-link-ASPPFLAGS;.</para><para>Uses: &cv-link-ASCOMSTR;, &cv-link-ASPPCOMSTR;, &cv-link-CPPFLAGS;, &cv-link-_CPPDEFFLAGS;, &cv-link-_CPPINCFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-midl">
+ <term>midl</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Microsoft IDL compiler.
+</para>
+<para>Sets: &cv-link-MIDL;, &cv-link-MIDLCOM;, &cv-link-MIDLFLAGS;.</para><para>Uses: &cv-link-MIDLCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-mingw">
+ <term>mingw</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for MinGW (Minimal Gnu on Windows).
+</para>
+<para>Sets: &cv-link-AS;, &cv-link-CC;, &cv-link-CXX;, &cv-link-LDMODULECOM;, &cv-link-LIBPREFIX;, &cv-link-LIBSUFFIX;, &cv-link-OBJSUFFIX;, &cv-link-RC;, &cv-link-RCCOM;, &cv-link-RCFLAGS;, &cv-link-RCINCFLAGS;, &cv-link-RCINCPREFIX;, &cv-link-RCINCSUFFIX;, &cv-link-SHCCFLAGS;, &cv-link-SHCXXFLAGS;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;, &cv-link-SHOBJSUFFIX;, &cv-link-WINDOWSDEFPREFIX;, &cv-link-WINDOWSDEFSUFFIX;.</para><para>Uses: &cv-link-RCCOMSTR;, &cv-link-SHLINKCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-msgfmt">
+ <term>msgfmt</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This scons tool is a part of scons <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-gettext"><literal>gettext</literal></link> toolset. It provides scons
+interface to <command>msgfmt(1)</command> command, which generates binary
+message catalog (<literal>MO</literal>) from a textual translation description
+(<literal>PO</literal>).
+</para>
+<para>Sets: &cv-link-MOSUFFIX;, &cv-link-MSGFMT;, &cv-link-MSGFMTCOM;, &cv-link-MSGFMTCOMSTR;, &cv-link-MSGFMTFLAGS;, &cv-link-POSUFFIX;.</para><para>Uses: &cv-link-LINGUAS_FILE;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-msginit">
+ <term>msginit</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This scons tool is a part of scons <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-gettext"><literal>gettext</literal></link> toolset. It provides
+scons interface to <command>msginit(1)</command> program, which creates new
+<literal>PO</literal> file, initializing the meta information with values from
+user's environment (or options).
+</para>
+<para>Sets: &cv-link-MSGINIT;, &cv-link-MSGINITCOM;, &cv-link-MSGINITCOMSTR;, &cv-link-MSGINITFLAGS;, &cv-link-POAUTOINIT;, &cv-link-POCREATE_ALIAS;, &cv-link-POSUFFIX;, &cv-link-POTSUFFIX;, &cv-link-_MSGINITLOCALE;.</para><para>Uses: &cv-link-LINGUAS_FILE;, &cv-link-POAUTOINIT;, &cv-link-POTDOMAIN;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-msgmerge">
+ <term>msgmerge</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This scons tool is a part of scons <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-gettext"><literal>gettext</literal></link> toolset. It provides
+scons interface to <command>msgmerge(1)</command> command, which merges two
+Uniform style <filename>.po</filename> files together.
+</para>
+<para>Sets: &cv-link-MSGMERGE;, &cv-link-MSGMERGECOM;, &cv-link-MSGMERGECOMSTR;, &cv-link-MSGMERGEFLAGS;, &cv-link-POSUFFIX;, &cv-link-POTSUFFIX;, &cv-link-POUPDATE_ALIAS;.</para><para>Uses: &cv-link-LINGUAS_FILE;, &cv-link-POAUTOINIT;, &cv-link-POTDOMAIN;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-mslib">
+ <term>mslib</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Microsoft
+<application>mslib</application>
+library archiver.
+</para>
+<para>Sets: &cv-link-AR;, &cv-link-ARCOM;, &cv-link-ARFLAGS;, &cv-link-LIBPREFIX;, &cv-link-LIBSUFFIX;.</para><para>Uses: &cv-link-ARCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-mslink">
+ <term>mslink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Microsoft linker.
+</para>
+<para>Sets: &cv-link-LDMODULE;, &cv-link-LDMODULECOM;, &cv-link-LDMODULEFLAGS;, &cv-link-LDMODULEPREFIX;, &cv-link-LDMODULESUFFIX;, &cv-link-LIBDIRPREFIX;, &cv-link-LIBDIRSUFFIX;, &cv-link-LIBLINKPREFIX;, &cv-link-LIBLINKSUFFIX;, &cv-link-LINK;, &cv-link-LINKCOM;, &cv-link-LINKFLAGS;, &cv-link-REGSVR;, &cv-link-REGSVRCOM;, &cv-link-REGSVRFLAGS;, &cv-link-SHLINK;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;, &cv-link-WIN32DEFPREFIX;, &cv-link-WIN32DEFSUFFIX;, &cv-link-WIN32EXPPREFIX;, &cv-link-WIN32EXPSUFFIX;, &cv-link-WINDOWSDEFPREFIX;, &cv-link-WINDOWSDEFSUFFIX;, &cv-link-WINDOWSEXPPREFIX;, &cv-link-WINDOWSEXPSUFFIX;, &cv-link-WINDOWSPROGMANIFESTPREFIX;, &cv-link-WINDOWSPROGMANIFESTSUFFIX;, &cv-link-WINDOWSSHLIBMANIFESTPREFIX;, &cv-link-WINDOWSSHLIBMANIFESTSUFFIX;, &cv-link-WINDOWS_INSERT_DEF;.</para><para>Uses: &cv-link-LDMODULECOMSTR;, &cv-link-LINKCOMSTR;, &cv-link-REGSVRCOMSTR;, &cv-link-SHLINKCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-mssdk">
+ <term>mssdk</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets variables for Microsoft Platform SDK and/or Windows SDK.
+Note that unlike most other Tool modules,
+mssdk does not set construction variables,
+but sets the <emphasis>environment variables</emphasis>
+in the environment <application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> uses to execute
+the Microsoft toolchain:
+<literal>%INCLUDE%</literal>,
+<literal>%LIB%</literal>,
+<literal>%LIBPATH%</literal> and
+<literal>%PATH%</literal>.
+</para>
+<para>Uses: &cv-link-MSSDK_DIR;, &cv-link-MSSDK_VERSION;, &cv-link-MSVS_VERSION;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-msvc">
+ <term>msvc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Microsoft Visual C/C++ compiler.
+</para>
+<para>Sets: &cv-link-BUILDERS;, &cv-link-CC;, &cv-link-CCCOM;, &cv-link-CCFLAGS;, &cv-link-CCPCHFLAGS;, &cv-link-CCPDBFLAGS;, &cv-link-CFILESUFFIX;, &cv-link-CFLAGS;, &cv-link-CPPDEFPREFIX;, &cv-link-CPPDEFSUFFIX;, &cv-link-CXX;, &cv-link-CXXCOM;, &cv-link-CXXFILESUFFIX;, &cv-link-CXXFLAGS;, &cv-link-INCPREFIX;, &cv-link-INCSUFFIX;, &cv-link-OBJPREFIX;, &cv-link-OBJSUFFIX;, &cv-link-PCHCOM;, &cv-link-PCHPDBFLAGS;, &cv-link-RC;, &cv-link-RCCOM;, &cv-link-RCFLAGS;, &cv-link-SHCC;, &cv-link-SHCCCOM;, &cv-link-SHCCFLAGS;, &cv-link-SHCFLAGS;, &cv-link-SHCXX;, &cv-link-SHCXXCOM;, &cv-link-SHCXXFLAGS;, &cv-link-SHOBJPREFIX;, &cv-link-SHOBJSUFFIX;.</para><para>Uses: &cv-link-CCCOMSTR;, &cv-link-CXXCOMSTR;, &cv-link-PCH;, &cv-link-PCHSTOP;, &cv-link-PDB;, &cv-link-SHCCCOMSTR;, &cv-link-SHCXXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-msvs">
+ <term>msvs</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for Microsoft Visual Studio.
+</para>
+<para>Sets: &cv-link-MSVSBUILDCOM;, &cv-link-MSVSCLEANCOM;, &cv-link-MSVSENCODING;, &cv-link-MSVSPROJECTCOM;, &cv-link-MSVSREBUILDCOM;, &cv-link-MSVSSCONS;, &cv-link-MSVSSCONSCOM;, &cv-link-MSVSSCONSCRIPT;, &cv-link-MSVSSCONSFLAGS;, &cv-link-MSVSSOLUTIONCOM;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-mwcc">
+ <term>mwcc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Metrowerks CodeWarrior compiler.
+</para>
+<para>Sets: &cv-link-CC;, &cv-link-CCCOM;, &cv-link-CFILESUFFIX;, &cv-link-CPPDEFPREFIX;, &cv-link-CPPDEFSUFFIX;, &cv-link-CXX;, &cv-link-CXXCOM;, &cv-link-CXXFILESUFFIX;, &cv-link-INCPREFIX;, &cv-link-INCSUFFIX;, &cv-link-MWCW_VERSION;, &cv-link-MWCW_VERSIONS;, &cv-link-SHCC;, &cv-link-SHCCCOM;, &cv-link-SHCCFLAGS;, &cv-link-SHCFLAGS;, &cv-link-SHCXX;, &cv-link-SHCXXCOM;, &cv-link-SHCXXFLAGS;.</para><para>Uses: &cv-link-CCCOMSTR;, &cv-link-CXXCOMSTR;, &cv-link-SHCCCOMSTR;, &cv-link-SHCXXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-mwld">
+ <term>mwld</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Metrowerks CodeWarrior linker.
+</para>
+<para>Sets: &cv-link-AR;, &cv-link-ARCOM;, &cv-link-LIBDIRPREFIX;, &cv-link-LIBDIRSUFFIX;, &cv-link-LIBLINKPREFIX;, &cv-link-LIBLINKSUFFIX;, &cv-link-LINK;, &cv-link-LINKCOM;, &cv-link-SHLINK;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-nasm">
+ <term>nasm</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the
+<application>nasm</application> Netwide Assembler.
+</para>
+<para>Sets: &cv-link-AS;, &cv-link-ASCOM;, &cv-link-ASFLAGS;, &cv-link-ASPPCOM;, &cv-link-ASPPFLAGS;.</para><para>Uses: &cv-link-ASCOMSTR;, &cv-link-ASPPCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-packaging">
+ <term>packaging</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A framework for building binary and source packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-Packaging">
+ <term>Packaging</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <function xmlns="http://www.scons.org/dbxsd/v1.0">Package</function> Builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="t-pdf">
+ <term>pdf</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Portable Document Format builder.
+</para>
+<para>Sets: &cv-link-PDFPREFIX;, &cv-link-PDFSUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-pdflatex">
+ <term>pdflatex</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdflatex</application> utility.
+</para>
+<para>Sets: &cv-link-LATEXRETRIES;, &cv-link-PDFLATEX;, &cv-link-PDFLATEXCOM;, &cv-link-PDFLATEXFLAGS;.</para><para>Uses: &cv-link-PDFLATEXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-pdftex">
+ <term>pdftex</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdftex</application> utility.
+</para>
+<para>Sets: &cv-link-LATEXRETRIES;, &cv-link-PDFLATEX;, &cv-link-PDFLATEXCOM;, &cv-link-PDFLATEXFLAGS;, &cv-link-PDFTEX;, &cv-link-PDFTEXCOM;, &cv-link-PDFTEXFLAGS;.</para><para>Uses: &cv-link-PDFLATEXCOMSTR;, &cv-link-PDFTEXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-Perforce">
+ <term>Perforce</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for interacting with the
+Perforce source code management system.
+</para>
+<para>Sets: &cv-link-P4;, &cv-link-P4COM;, &cv-link-P4FLAGS;.</para><para>Uses: &cv-link-P4COMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-qt">
+ <term>qt</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for building Qt applications.
+</para>
+<para>Sets: &cv-link-QTDIR;, &cv-link-QT_AUTOSCAN;, &cv-link-QT_BINPATH;, &cv-link-QT_CPPPATH;, &cv-link-QT_LIB;, &cv-link-QT_LIBPATH;, &cv-link-QT_MOC;, &cv-link-QT_MOCCXXPREFIX;, &cv-link-QT_MOCCXXSUFFIX;, &cv-link-QT_MOCFROMCXXCOM;, &cv-link-QT_MOCFROMCXXFLAGS;, &cv-link-QT_MOCFROMHCOM;, &cv-link-QT_MOCFROMHFLAGS;, &cv-link-QT_MOCHPREFIX;, &cv-link-QT_MOCHSUFFIX;, &cv-link-QT_UIC;, &cv-link-QT_UICCOM;, &cv-link-QT_UICDECLFLAGS;, &cv-link-QT_UICDECLPREFIX;, &cv-link-QT_UICDECLSUFFIX;, &cv-link-QT_UICIMPLFLAGS;, &cv-link-QT_UICIMPLPREFIX;, &cv-link-QT_UICIMPLSUFFIX;, &cv-link-QT_UISUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-RCS">
+ <term>RCS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the interaction
+with the Revision Control System.
+</para>
+<para>Sets: &cv-link-RCS;, &cv-link-RCS_CO;, &cv-link-RCS_COCOM;, &cv-link-RCS_COFLAGS;.</para><para>Uses: &cv-link-RCS_COCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-rmic">
+ <term>rmic</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">rmic</application> utility.
+</para>
+<para>Sets: &cv-link-JAVACLASSSUFFIX;, &cv-link-RMIC;, &cv-link-RMICCOM;, &cv-link-RMICFLAGS;.</para><para>Uses: &cv-link-RMICCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-rpcgen">
+ <term>rpcgen</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for building with RPCGEN.
+</para>
+<para>Sets: &cv-link-RPCGEN;, &cv-link-RPCGENCLIENTFLAGS;, &cv-link-RPCGENFLAGS;, &cv-link-RPCGENHEADERFLAGS;, &cv-link-RPCGENSERVICEFLAGS;, &cv-link-RPCGENXDRFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-SCCS">
+ <term>SCCS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for interacting with the
+Source Code Control System.
+</para>
+<para>Sets: &cv-link-SCCS;, &cv-link-SCCSCOM;, &cv-link-SCCSFLAGS;, &cv-link-SCCSGETFLAGS;.</para><para>Uses: &cv-link-SCCSCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sgiar">
+ <term>sgiar</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the SGI library archiver.
+</para>
+<para>Sets: &cv-link-AR;, &cv-link-ARCOMSTR;, &cv-link-ARFLAGS;, &cv-link-LIBPREFIX;, &cv-link-LIBSUFFIX;, &cv-link-SHLINK;, &cv-link-SHLINKFLAGS;.</para><para>Uses: &cv-link-ARCOMSTR;, &cv-link-SHLINKCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sgicXX">
+ <term>sgic++</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the SGI C++ compiler.
+</para>
+<para>Sets: &cv-link-CXX;, &cv-link-CXXFLAGS;, &cv-link-SHCXX;, &cv-link-SHOBJSUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sgicc">
+ <term>sgicc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the SGI C compiler.
+</para>
+<para>Sets: &cv-link-CXX;, &cv-link-SHOBJSUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sgilink">
+ <term>sgilink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the SGI linker.
+</para>
+<para>Sets: &cv-link-LINK;, &cv-link-RPATHPREFIX;, &cv-link-RPATHSUFFIX;, &cv-link-SHLINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sunar">
+ <term>sunar</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Sun library archiver.
+</para>
+<para>Sets: &cv-link-AR;, &cv-link-ARCOM;, &cv-link-ARFLAGS;, &cv-link-LIBPREFIX;, &cv-link-LIBSUFFIX;, &cv-link-SHLINK;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;.</para><para>Uses: &cv-link-ARCOMSTR;, &cv-link-SHLINKCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-suncXX">
+ <term>sunc++</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Sun C++ compiler.
+</para>
+<para>Sets: &cv-link-CXX;, &cv-link-CXXVERSION;, &cv-link-SHCXX;, &cv-link-SHCXXFLAGS;, &cv-link-SHOBJPREFIX;, &cv-link-SHOBJSUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-suncc">
+ <term>suncc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Sun C compiler.
+</para>
+<para>Sets: &cv-link-CXX;, &cv-link-SHCCFLAGS;, &cv-link-SHOBJPREFIX;, &cv-link-SHOBJSUFFIX;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sunf77">
+ <term>sunf77</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the Sun <application xmlns="http://www.scons.org/dbxsd/v1.0">f77</application> Fortran compiler.
+</para>
+<para>Sets: &cv-link-F77;, &cv-link-FORTRAN;, &cv-link-SHF77;, &cv-link-SHF77FLAGS;, &cv-link-SHFORTRAN;, &cv-link-SHFORTRANFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sunf90">
+ <term>sunf90</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the Sun <application xmlns="http://www.scons.org/dbxsd/v1.0">f90</application> Fortran compiler.
+</para>
+<para>Sets: &cv-link-F90;, &cv-link-FORTRAN;, &cv-link-SHF90;, &cv-link-SHF90FLAGS;, &cv-link-SHFORTRAN;, &cv-link-SHFORTRANFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sunf95">
+ <term>sunf95</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the Sun <application xmlns="http://www.scons.org/dbxsd/v1.0">f95</application> Fortran compiler.
+</para>
+<para>Sets: &cv-link-F95;, &cv-link-FORTRAN;, &cv-link-SHF95;, &cv-link-SHF95FLAGS;, &cv-link-SHFORTRAN;, &cv-link-SHFORTRANFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-sunlink">
+ <term>sunlink</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Sun linker.
+</para>
+<para>Sets: &cv-link-RPATHPREFIX;, &cv-link-RPATHSUFFIX;, &cv-link-SHLINKFLAGS;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-swig">
+ <term>swig</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the SWIG interface generator.
+</para>
+<para>Sets: &cv-link-SWIG;, &cv-link-SWIGCFILESUFFIX;, &cv-link-SWIGCOM;, &cv-link-SWIGCXXFILESUFFIX;, &cv-link-SWIGDIRECTORSUFFIX;, &cv-link-SWIGFLAGS;, &cv-link-SWIGINCPREFIX;, &cv-link-SWIGINCSUFFIX;, &cv-link-SWIGPATH;, &cv-link-SWIGVERSION;, &cv-link-_SWIGINCFLAGS;.</para><para>Uses: &cv-link-SWIGCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-tar">
+ <term>tar</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">tar</application> archiver.
+</para>
+<para>Sets: &cv-link-TAR;, &cv-link-TARCOM;, &cv-link-TARFLAGS;, &cv-link-TARSUFFIX;.</para><para>Uses: &cv-link-TARCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-tex">
+ <term>tex</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the TeX formatter and typesetter.
+</para>
+<para>Sets: &cv-link-BIBTEX;, &cv-link-BIBTEXCOM;, &cv-link-BIBTEXFLAGS;, &cv-link-LATEX;, &cv-link-LATEXCOM;, &cv-link-LATEXFLAGS;, &cv-link-MAKEINDEX;, &cv-link-MAKEINDEXCOM;, &cv-link-MAKEINDEXFLAGS;, &cv-link-TEX;, &cv-link-TEXCOM;, &cv-link-TEXFLAGS;.</para><para>Uses: &cv-link-BIBTEXCOMSTR;, &cv-link-LATEXCOMSTR;, &cv-link-MAKEINDEXCOMSTR;, &cv-link-TEXCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-textfile">
+ <term>textfile</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set construction variables for the <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> and <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> builders.
+</para>
+<para>Sets: &cv-link-LINESEPARATOR;, &cv-link-SUBSTFILEPREFIX;, &cv-link-SUBSTFILESUFFIX;, &cv-link-TEXTFILEPREFIX;, &cv-link-TEXTFILESUFFIX;.</para><para>Uses: &cv-link-SUBST_DICT;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-tlib">
+ <term>tlib</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the Borlan
+<application>tib</application> library archiver.
+</para>
+<para>Sets: &cv-link-AR;, &cv-link-ARCOM;, &cv-link-ARFLAGS;, &cv-link-LIBPREFIX;, &cv-link-LIBSUFFIX;.</para><para>Uses: &cv-link-ARCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-xgettext">
+ <term>xgettext</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This scons tool is a part of scons <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-gettext"><literal>gettext</literal></link> toolset. It provides
+scons interface to <command>xgettext(1)</command>
+program, which extracts internationalized messages from source code. The tool
+provides <function xmlns="http://www.scons.org/dbxsd/v1.0">POTUpdate</function> builder to make <literal>PO</literal>
+<emphasis>Template</emphasis> files.
+</para>
+<para>Sets: &cv-link-POTSUFFIX;, &cv-link-POTUPDATE_ALIAS;, &cv-link-XGETTEXTCOM;, &cv-link-XGETTEXTCOMSTR;, &cv-link-XGETTEXTFLAGS;, &cv-link-XGETTEXTFROM;, &cv-link-XGETTEXTFROMPREFIX;, &cv-link-XGETTEXTFROMSUFFIX;, &cv-link-XGETTEXTPATH;, &cv-link-XGETTEXTPATHPREFIX;, &cv-link-XGETTEXTPATHSUFFIX;, &cv-link-_XGETTEXTDOMAIN;, &cv-link-_XGETTEXTFROMFLAGS;, &cv-link-_XGETTEXTPATHFLAGS;.</para><para>Uses: &cv-link-POTDOMAIN;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-yacc">
+ <term>yacc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">yacc</application> parse generator.
+</para>
+<para>Sets: &cv-link-YACC;, &cv-link-YACCCOM;, &cv-link-YACCFLAGS;, &cv-link-YACCHFILESUFFIX;, &cv-link-YACCHXXFILESUFFIX;, &cv-link-YACCVCGFILESUFFIX;.</para><para>Uses: &cv-link-YACCCOMSTR;.</para></listitem>
+ </varlistentry>
+ <varlistentry id="t-zip">
+ <term>zip</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the <application xmlns="http://www.scons.org/dbxsd/v1.0">zip</application> archiver.
+</para>
+<para>Sets: &cv-link-ZIP;, &cv-link-ZIPCOM;, &cv-link-ZIPCOMPRESSION;, &cv-link-ZIPFLAGS;, &cv-link-ZIPSUFFIX;.</para><para>Uses: &cv-link-ZIPCOMSTR;.</para></listitem>
+ </varlistentry>
+</variablelist>
diff --git a/doc/generated/tools.mod b/doc/generated/tools.mod
new file mode 100644
index 0000000..0a746b0
--- /dev/null
+++ b/doc/generated/tools.mod
@@ -0,0 +1,217 @@
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Regular tool entities.
+
+-->
+
+<!ENTITY t-386asm "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>386asm</literal>">
+<!ENTITY t-aixcXX "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>aixc++</literal>">
+<!ENTITY t-aixcc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>aixcc</literal>">
+<!ENTITY t-aixf77 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>aixf77</literal>">
+<!ENTITY t-aixlink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>aixlink</literal>">
+<!ENTITY t-applelink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>applelink</literal>">
+<!ENTITY t-ar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>ar</literal>">
+<!ENTITY t-as "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>as</literal>">
+<!ENTITY t-bcc32 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>bcc32</literal>">
+<!ENTITY t-BitKeeper "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>BitKeeper</literal>">
+<!ENTITY t-cc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>cc</literal>">
+<!ENTITY t-cvf "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>cvf</literal>">
+<!ENTITY t-CVS "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>CVS</literal>">
+<!ENTITY t-cXX "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>cXX</literal>">
+<!ENTITY t-default "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>default</literal>">
+<!ENTITY t-dmd "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>dmd</literal>">
+<!ENTITY t-docbook "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>docbook</literal>">
+<!ENTITY t-dvi "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>dvi</literal>">
+<!ENTITY t-dvipdf "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>dvipdf</literal>">
+<!ENTITY t-dvips "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>dvips</literal>">
+<!ENTITY t-f03 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>f03</literal>">
+<!ENTITY t-f77 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>f77</literal>">
+<!ENTITY t-f90 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>f90</literal>">
+<!ENTITY t-f95 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>f95</literal>">
+<!ENTITY t-fortran "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>fortran</literal>">
+<!ENTITY t-gXX "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>g++</literal>">
+<!ENTITY t-g77 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>g77</literal>">
+<!ENTITY t-gas "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gas</literal>">
+<!ENTITY t-gcc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gcc</literal>">
+<!ENTITY t-gettext "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gettext</literal>">
+<!ENTITY t-gfortran "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gfortran</literal>">
+<!ENTITY t-gnulink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gnulink</literal>">
+<!ENTITY t-gs "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gs</literal>">
+<!ENTITY t-hpcXX "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>hpc++</literal>">
+<!ENTITY t-hpcc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>hpcc</literal>">
+<!ENTITY t-hplink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>hplink</literal>">
+<!ENTITY t-icc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>icc</literal>">
+<!ENTITY t-icl "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>icl</literal>">
+<!ENTITY t-ifl "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>ifl</literal>">
+<!ENTITY t-ifort "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>ifort</literal>">
+<!ENTITY t-ilink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>ilink</literal>">
+<!ENTITY t-ilink32 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>ilink32</literal>">
+<!ENTITY t-install "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>install</literal>">
+<!ENTITY t-intelc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>intelc</literal>">
+<!ENTITY t-jar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>jar</literal>">
+<!ENTITY t-javac "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>javac</literal>">
+<!ENTITY t-javah "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>javah</literal>">
+<!ENTITY t-latex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>latex</literal>">
+<!ENTITY t-lex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>lex</literal>">
+<!ENTITY t-link "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>link</literal>">
+<!ENTITY t-linkloc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>linkloc</literal>">
+<!ENTITY t-m4 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>m4</literal>">
+<!ENTITY t-masm "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>masm</literal>">
+<!ENTITY t-midl "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>midl</literal>">
+<!ENTITY t-mingw "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mingw</literal>">
+<!ENTITY t-msgfmt "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>msgfmt</literal>">
+<!ENTITY t-msginit "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>msginit</literal>">
+<!ENTITY t-msgmerge "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>msgmerge</literal>">
+<!ENTITY t-mslib "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mslib</literal>">
+<!ENTITY t-mslink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mslink</literal>">
+<!ENTITY t-mssdk "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mssdk</literal>">
+<!ENTITY t-msvc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>msvc</literal>">
+<!ENTITY t-msvs "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>msvs</literal>">
+<!ENTITY t-mwcc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mwcc</literal>">
+<!ENTITY t-mwld "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mwld</literal>">
+<!ENTITY t-nasm "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>nasm</literal>">
+<!ENTITY t-packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>packaging</literal>">
+<!ENTITY t-Packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Packaging</literal>">
+<!ENTITY t-pdf "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdf</literal>">
+<!ENTITY t-pdflatex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdflatex</literal>">
+<!ENTITY t-pdftex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdftex</literal>">
+<!ENTITY t-Perforce "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Perforce</literal>">
+<!ENTITY t-qt "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>qt</literal>">
+<!ENTITY t-RCS "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>RCS</literal>">
+<!ENTITY t-rmic "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>rmic</literal>">
+<!ENTITY t-rpcgen "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>rpcgen</literal>">
+<!ENTITY t-SCCS "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>SCCS</literal>">
+<!ENTITY t-sgiar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sgiar</literal>">
+<!ENTITY t-sgicXX "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sgic++</literal>">
+<!ENTITY t-sgicc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sgicc</literal>">
+<!ENTITY t-sgilink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sgilink</literal>">
+<!ENTITY t-sunar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sunar</literal>">
+<!ENTITY t-suncXX "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sunc++</literal>">
+<!ENTITY t-suncc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>suncc</literal>">
+<!ENTITY t-sunf77 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sunf77</literal>">
+<!ENTITY t-sunf90 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sunf90</literal>">
+<!ENTITY t-sunf95 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sunf95</literal>">
+<!ENTITY t-sunlink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>sunlink</literal>">
+<!ENTITY t-swig "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>swig</literal>">
+<!ENTITY t-tar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>tar</literal>">
+<!ENTITY t-tex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>tex</literal>">
+<!ENTITY t-textfile "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>textfile</literal>">
+<!ENTITY t-tlib "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>tlib</literal>">
+<!ENTITY t-xgettext "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>xgettext</literal>">
+<!ENTITY t-yacc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>yacc</literal>">
+<!ENTITY t-zip "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>zip</literal>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Entities that are links to the tool entries in the appendix.
+
+-->
+
+<!ENTITY t-link-386asm "<link linkend='t-386asm' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>386asm</literal></link>">
+<!ENTITY t-link-aixcXX "<link linkend='t-aixcXX' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>aixc++</literal></link>">
+<!ENTITY t-link-aixcc "<link linkend='t-aixcc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>aixcc</literal></link>">
+<!ENTITY t-link-aixf77 "<link linkend='t-aixf77' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>aixf77</literal></link>">
+<!ENTITY t-link-aixlink "<link linkend='t-aixlink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>aixlink</literal></link>">
+<!ENTITY t-link-applelink "<link linkend='t-applelink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>applelink</literal></link>">
+<!ENTITY t-link-ar "<link linkend='t-ar' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>ar</literal></link>">
+<!ENTITY t-link-as "<link linkend='t-as' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>as</literal></link>">
+<!ENTITY t-link-bcc32 "<link linkend='t-bcc32' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>bcc32</literal></link>">
+<!ENTITY t-link-BitKeeper "<link linkend='t-BitKeeper' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>BitKeeper</literal></link>">
+<!ENTITY t-link-cc "<link linkend='t-cc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>cc</literal></link>">
+<!ENTITY t-link-cvf "<link linkend='t-cvf' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>cvf</literal></link>">
+<!ENTITY t-link-CVS "<link linkend='t-CVS' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>CVS</literal></link>">
+<!ENTITY t-link-cXX "<link linkend='t-cXX' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>cXX</literal></link>">
+<!ENTITY t-link-default "<link linkend='t-default' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>default</literal></link>">
+<!ENTITY t-link-dmd "<link linkend='t-dmd' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>dmd</literal></link>">
+<!ENTITY t-link-docbook "<link linkend='t-docbook' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>docbook</literal></link>">
+<!ENTITY t-link-dvi "<link linkend='t-dvi' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>dvi</literal></link>">
+<!ENTITY t-link-dvipdf "<link linkend='t-dvipdf' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>dvipdf</literal></link>">
+<!ENTITY t-link-dvips "<link linkend='t-dvips' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>dvips</literal></link>">
+<!ENTITY t-link-f03 "<link linkend='t-f03' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>f03</literal></link>">
+<!ENTITY t-link-f77 "<link linkend='t-f77' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>f77</literal></link>">
+<!ENTITY t-link-f90 "<link linkend='t-f90' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>f90</literal></link>">
+<!ENTITY t-link-f95 "<link linkend='t-f95' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>f95</literal></link>">
+<!ENTITY t-link-fortran "<link linkend='t-fortran' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>fortran</literal></link>">
+<!ENTITY t-link-gXX "<link linkend='t-gXX' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>g++</literal></link>">
+<!ENTITY t-link-g77 "<link linkend='t-g77' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>g77</literal></link>">
+<!ENTITY t-link-gas "<link linkend='t-gas' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gas</literal></link>">
+<!ENTITY t-link-gcc "<link linkend='t-gcc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gcc</literal></link>">
+<!ENTITY t-link-gettext "<link linkend='t-gettext' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gettext</literal></link>">
+<!ENTITY t-link-gfortran "<link linkend='t-gfortran' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gfortran</literal></link>">
+<!ENTITY t-link-gnulink "<link linkend='t-gnulink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gnulink</literal></link>">
+<!ENTITY t-link-gs "<link linkend='t-gs' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gs</literal></link>">
+<!ENTITY t-link-hpcXX "<link linkend='t-hpcXX' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>hpc++</literal></link>">
+<!ENTITY t-link-hpcc "<link linkend='t-hpcc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>hpcc</literal></link>">
+<!ENTITY t-link-hplink "<link linkend='t-hplink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>hplink</literal></link>">
+<!ENTITY t-link-icc "<link linkend='t-icc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>icc</literal></link>">
+<!ENTITY t-link-icl "<link linkend='t-icl' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>icl</literal></link>">
+<!ENTITY t-link-ifl "<link linkend='t-ifl' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>ifl</literal></link>">
+<!ENTITY t-link-ifort "<link linkend='t-ifort' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>ifort</literal></link>">
+<!ENTITY t-link-ilink "<link linkend='t-ilink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>ilink</literal></link>">
+<!ENTITY t-link-ilink32 "<link linkend='t-ilink32' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>ilink32</literal></link>">
+<!ENTITY t-link-install "<link linkend='t-install' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>install</literal></link>">
+<!ENTITY t-link-intelc "<link linkend='t-intelc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>intelc</literal></link>">
+<!ENTITY t-link-jar "<link linkend='t-jar' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>jar</literal></link>">
+<!ENTITY t-link-javac "<link linkend='t-javac' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>javac</literal></link>">
+<!ENTITY t-link-javah "<link linkend='t-javah' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>javah</literal></link>">
+<!ENTITY t-link-latex "<link linkend='t-latex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>latex</literal></link>">
+<!ENTITY t-link-lex "<link linkend='t-lex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>lex</literal></link>">
+<!ENTITY t-link-link "<link linkend='t-link' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>link</literal></link>">
+<!ENTITY t-link-linkloc "<link linkend='t-linkloc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>linkloc</literal></link>">
+<!ENTITY t-link-m4 "<link linkend='t-m4' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>m4</literal></link>">
+<!ENTITY t-link-masm "<link linkend='t-masm' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>masm</literal></link>">
+<!ENTITY t-link-midl "<link linkend='t-midl' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>midl</literal></link>">
+<!ENTITY t-link-mingw "<link linkend='t-mingw' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mingw</literal></link>">
+<!ENTITY t-link-msgfmt "<link linkend='t-msgfmt' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>msgfmt</literal></link>">
+<!ENTITY t-link-msginit "<link linkend='t-msginit' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>msginit</literal></link>">
+<!ENTITY t-link-msgmerge "<link linkend='t-msgmerge' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>msgmerge</literal></link>">
+<!ENTITY t-link-mslib "<link linkend='t-mslib' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mslib</literal></link>">
+<!ENTITY t-link-mslink "<link linkend='t-mslink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mslink</literal></link>">
+<!ENTITY t-link-mssdk "<link linkend='t-mssdk' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mssdk</literal></link>">
+<!ENTITY t-link-msvc "<link linkend='t-msvc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>msvc</literal></link>">
+<!ENTITY t-link-msvs "<link linkend='t-msvs' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>msvs</literal></link>">
+<!ENTITY t-link-mwcc "<link linkend='t-mwcc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mwcc</literal></link>">
+<!ENTITY t-link-mwld "<link linkend='t-mwld' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mwld</literal></link>">
+<!ENTITY t-link-nasm "<link linkend='t-nasm' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>nasm</literal></link>">
+<!ENTITY t-link-packaging "<link linkend='t-packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>packaging</literal></link>">
+<!ENTITY t-link-Packaging "<link linkend='t-Packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>Packaging</literal></link>">
+<!ENTITY t-link-pdf "<link linkend='t-pdf' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdf</literal></link>">
+<!ENTITY t-link-pdflatex "<link linkend='t-pdflatex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdflatex</literal></link>">
+<!ENTITY t-link-pdftex "<link linkend='t-pdftex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdftex</literal></link>">
+<!ENTITY t-link-Perforce "<link linkend='t-Perforce' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>Perforce</literal></link>">
+<!ENTITY t-link-qt "<link linkend='t-qt' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>qt</literal></link>">
+<!ENTITY t-link-RCS "<link linkend='t-RCS' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>RCS</literal></link>">
+<!ENTITY t-link-rmic "<link linkend='t-rmic' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>rmic</literal></link>">
+<!ENTITY t-link-rpcgen "<link linkend='t-rpcgen' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>rpcgen</literal></link>">
+<!ENTITY t-link-SCCS "<link linkend='t-SCCS' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>SCCS</literal></link>">
+<!ENTITY t-link-sgiar "<link linkend='t-sgiar' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sgiar</literal></link>">
+<!ENTITY t-link-sgicXX "<link linkend='t-sgicXX' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sgic++</literal></link>">
+<!ENTITY t-link-sgicc "<link linkend='t-sgicc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sgicc</literal></link>">
+<!ENTITY t-link-sgilink "<link linkend='t-sgilink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sgilink</literal></link>">
+<!ENTITY t-link-sunar "<link linkend='t-sunar' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sunar</literal></link>">
+<!ENTITY t-link-suncXX "<link linkend='t-suncXX' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sunc++</literal></link>">
+<!ENTITY t-link-suncc "<link linkend='t-suncc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>suncc</literal></link>">
+<!ENTITY t-link-sunf77 "<link linkend='t-sunf77' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sunf77</literal></link>">
+<!ENTITY t-link-sunf90 "<link linkend='t-sunf90' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sunf90</literal></link>">
+<!ENTITY t-link-sunf95 "<link linkend='t-sunf95' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sunf95</literal></link>">
+<!ENTITY t-link-sunlink "<link linkend='t-sunlink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>sunlink</literal></link>">
+<!ENTITY t-link-swig "<link linkend='t-swig' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>swig</literal></link>">
+<!ENTITY t-link-tar "<link linkend='t-tar' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>tar</literal></link>">
+<!ENTITY t-link-tex "<link linkend='t-tex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>tex</literal></link>">
+<!ENTITY t-link-textfile "<link linkend='t-textfile' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>textfile</literal></link>">
+<!ENTITY t-link-tlib "<link linkend='t-tlib' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>tlib</literal></link>">
+<!ENTITY t-link-xgettext "<link linkend='t-xgettext' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>xgettext</literal></link>">
+<!ENTITY t-link-yacc "<link linkend='t-yacc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>yacc</literal></link>">
+<!ENTITY t-link-zip "<link linkend='t-zip' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>zip</literal></link>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
diff --git a/doc/generated/variables.gen b/doc/generated/variables.gen
new file mode 100644
index 0000000..efdac8e
--- /dev/null
+++ b/doc/generated/variables.gen
@@ -0,0 +1,7398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+ <!ENTITY % builders-mod SYSTEM "builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "variables.mod">
+ %variables-mod;
+]>
+
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ <varlistentry id="cv-AR">
+ <term>AR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The static library archiver.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ARCHITECTURE">
+ <term>ARCHITECTURE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the system architecture for which
+the package is being built.
+The default is the system architecture
+of the machine on which SCons is running.
+This is used to fill in the
+<literal>Architecture:</literal>
+field in an Ipkg
+<filename>control</filename> file,
+and as part of the name of a generated RPM file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ARCOM">
+ <term>ARCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to generate a static library from object files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ARCOMSTR">
+ <term>ARCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when an object file
+is generated from an assembly-language source file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ARCOM"><envar>$ARCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(ARCOMSTR = "Archiving $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ARFLAGS">
+ <term>ARFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the static library archiver.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-AS">
+ <term>AS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The assembler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ASCOM">
+ <term>ASCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to generate an object file
+from an assembly-language source file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ASCOMSTR">
+ <term>ASCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when an object file
+is generated from an assembly-language source file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ASCOM"><envar>$ASCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(ASCOMSTR = "Assembling $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ASFLAGS">
+ <term>ASFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the assembler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ASPPCOM">
+ <term>ASPPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to assemble an assembly-language
+source file into an object file
+after first running the file through the C preprocessor.
+Any options specified
+in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ASFLAGS"><envar>$ASFLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ASPPCOMSTR">
+ <term>ASPPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when an object file
+is generated from an assembly-language source file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ASPPCOM"><envar>$ASPPCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(ASPPCOMSTR = "Assembling $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ASPPFLAGS">
+ <term>ASPPFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options when an assembling an assembly-language
+source file into an object file
+after first running the file through the C preprocessor.
+The default is to use the value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ASFLAGS"><envar>$ASFLAGS</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BIBTEX">
+ <term>BIBTEX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The bibliography generator for the TeX formatter and typesetter and the
+LaTeX structured formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BIBTEXCOM">
+ <term>BIBTEXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the bibliography generator for the
+TeX formatter and typesetter and the LaTeX structured formatter and
+typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BIBTEXCOMSTR">
+ <term>BIBTEXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when generating a bibliography
+for TeX or LaTeX.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-BIBTEXCOM"><envar>$BIBTEXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(BIBTEXCOMSTR = "Generating bibliography $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BIBTEXFLAGS">
+ <term>BIBTEXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the bibliography generator for the TeX formatter
+and typesetter and the LaTeX structured formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BITKEEPER">
+ <term>BITKEEPER</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The BitKeeper executable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BITKEEPERCOM">
+ <term>BITKEEPERCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line for
+fetching source files using BitKeeper.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BITKEEPERCOMSTR">
+ <term>BITKEEPERCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when fetching
+a source file using BitKeeper.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-BITKEEPERCOM"><envar>$BITKEEPERCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BITKEEPERGET">
+ <term>BITKEEPERGET</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command (<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-BITKEEPER"><envar>$BITKEEPER</envar></link>) and subcommand
+for fetching source files using BitKeeper.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BITKEEPERGETFLAGS">
+ <term>BITKEEPERGETFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the BitKeeper
+<command>get</command>
+subcommand.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-BUILDERS">
+ <term>BUILDERS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A dictionary mapping the names of the builders
+available through this environment
+to underlying Builder objects.
+Builders named
+Alias, CFile, CXXFile, DVI, Library, Object, PDF, PostScript, and Program
+are available by default.
+If you initialize this variable when an
+Environment is created:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(BUILDERS = {'NewBuilder' : foo})
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+the default Builders will no longer be available.
+To use a new Builder object in addition to the default Builders,
+add your new Builder object like this:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment()
+env.Append(BUILDERS = {'NewBuilder' : foo})
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+or this:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment()
+env['BUILDERS]['NewBuilder'] = foo
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CC">
+ <term>CC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The C compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CCCOM">
+ <term>CCCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a C source file to a (static) object
+file. Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CFLAGS"><envar>$CFLAGS</envar></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCFLAGS"><envar>$CCFLAGS</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables are included on this command
+line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CCCOMSTR">
+ <term>CCCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a C source file
+is compiled to a (static) object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCCOM"><envar>$CCCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(CCCOMSTR = "Compiling static object $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CCFLAGS">
+ <term>CCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options that are passed to the C and C++ compilers.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CCPCHFLAGS">
+ <term>CCPCHFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options added to the compiler command line
+to support building with precompiled headers.
+The default value expands expands to the appropriate
+Microsoft Visual C++ command-line options
+when the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PCH"><envar>$PCH</envar></link> construction variable is set.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CCPDBFLAGS">
+ <term>CCPDBFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options added to the compiler command line
+to support storing debugging information in a
+Microsoft Visual C++ PDB file.
+The default value expands expands to appropriate
+Microsoft Visual C++ command-line options
+when the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PDB"><envar>$PDB</envar></link> construction variable is set.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Visual C++ compiler option that SCons uses by default
+to generate PDB information is <option>/Z7</option>.
+This works correctly with parallel (<option>-j</option>) builds
+because it embeds the debug information in the intermediate object files,
+as opposed to sharing a single PDB file between multiple object files.
+This is also the only way to get debug information
+embedded into a static library.
+Using the <option>/Zi</option> instead may yield improved
+link-time performance,
+although parallel builds will no longer work.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+You can generate PDB files with the <option>/Zi</option>
+switch by overriding the default <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCPDBFLAGS"><envar>$CCPDBFLAGS</envar></link> variable as follows:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env['CCPDBFLAGS'] = ['${(PDB and "/Zi /Fd%s" % File(PDB)) or ""}']
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An alternative would be to use the <option>/Zi</option>
+to put the debugging information in a separate <filename>.pdb</filename>
+file for each object file by overriding
+the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCPDBFLAGS"><envar>$CCPDBFLAGS</envar></link> variable as follows:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb'
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CCVERSION">
+ <term>CCVERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The version number of the C compiler.
+This may or may not be set,
+depending on the specific C compiler being used.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CFILESUFFIX">
+ <term>CFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix for C source files.
+This is used by the internal CFile builder
+when generating C files from Lex (.l) or YACC (.y) input files.
+The default suffix, of course, is
+<filename>.c</filename>
+(lower case).
+On case-insensitive systems (like Windows),
+SCons also treats
+<filename>.C</filename>
+(upper case) files
+as C files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CFLAGS">
+ <term>CFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options that are passed to the C compiler (C only; not C++).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CHANGE_SPECFILE">
+ <term>CHANGE_SPECFILE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A hook for modifying the file that controls the packaging build
+(the <filename>.spec</filename> for RPM,
+the <filename>control</filename> for Ipkg,
+the <filename>.wxs</filename> for MSI).
+If set, the function will be called
+after the SCons template for the file has been written.
+XXX
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CHANGED_SOURCES">
+ <term>CHANGED_SOURCES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CHANGED_TARGETS">
+ <term>CHANGED_TARGETS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CHANGELOG">
+ <term>CHANGELOG</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The name of a file containing the change log text
+to be included in the package.
+This is included as the
+<literal>%changelog</literal>
+section of the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_concat">
+ <term>_concat</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function used to produce variables like <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPINCFLAGS</envar>. It takes
+four or five
+arguments: a prefix to concatenate onto each element, a list of
+elements, a suffix to concatenate onto each element, an environment
+for variable interpolation, and an optional function that will be
+called to transform the list before concatenation.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env['_CPPINCFLAGS'] = '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs)} $)',
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CONFIGUREDIR">
+ <term>CONFIGUREDIR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The name of the directory in which
+Configure context test files are written.
+The default is
+<filename>.sconf_temp</filename>
+in the top-level directory
+containing the
+<filename>SConstruct</filename>
+file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CONFIGURELOG">
+ <term>CONFIGURELOG</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The name of the Configure context log file.
+The default is
+<filename>config.log</filename>
+in the top-level directory
+containing the
+<filename>SConstruct</filename>
+file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_CPPDEFFLAGS">
+ <term>_CPPDEFFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the C preprocessor command-line options
+to define values.
+The value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPDEFFLAGS</envar> is created
+by appending <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFSUFFIX</envar>
+to the beginning and end
+of each definition in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFINES</envar>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CPPDEFINES">
+ <term>CPPDEFINES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A platform independent specification of C preprocessor definitions.
+The definitions will be added to command lines
+through the automatically-generated
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPDEFFLAGS</envar> construction variable (see above),
+which is constructed according to
+the type of value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFINES</envar>:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFINES</envar> is a string,
+the values of the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFSUFFIX</envar>
+construction variables
+will be added to the beginning and end.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Will add -Dxyz to POSIX compiler command lines,
+# and /Dxyz to Microsoft Visual C++ command lines.
+env = Environment(CPPDEFINES='xyz')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFINES</envar> is a list,
+the values of the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFSUFFIX</envar>
+construction variables
+will be appended to the beginning and end
+of each element in the list.
+If any element is a list or tuple,
+then the first item is the name being
+defined and the second item is its value:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Will add -DB=2 -DA to POSIX compiler command lines,
+# and /DB=2 /DA to Microsoft Visual C++ command lines.
+env = Environment(CPPDEFINES=[('B', 2), 'A'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFINES</envar> is a dictionary,
+the values of the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFSUFFIX</envar>
+construction variables
+will be appended to the beginning and end
+of each item from the dictionary.
+The key of each dictionary item
+is a name being defined
+to the dictionary item's corresponding value;
+if the value is
+<literal>None</literal>,
+then the name is defined without an explicit value.
+Note that the resulting flags are sorted by keyword
+to ensure that the order of the options on the
+command line is consistent each time
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+is run.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+# Will add -DA -DB=2 to POSIX compiler command lines,
+# and /DA /DB=2 to Microsoft Visual C++ command lines.
+env = Environment(CPPDEFINES={'B':2, 'A':None})
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CPPDEFPREFIX">
+ <term>CPPDEFPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used to specify preprocessor definitions
+on the C compiler command line.
+This will be appended to the beginning of each definition
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFINES</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPDEFFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CPPDEFSUFFIX">
+ <term>CPPDEFSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify preprocessor definitions
+on the C compiler command line.
+This will be appended to the end of each definition
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPDEFINES</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPDEFFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CPPFLAGS">
+ <term>CPPFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+User-specified C preprocessor options.
+These will be included in any command that uses the C preprocessor,
+including not just compilation of C and C++ source files
+via the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCCOM"><envar>$CCCOM</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHCCCOM"><envar>$SHCCCOM</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXCOM"><envar>$CXXCOM</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHCXXCOM"><envar>$SHCXXCOM</envar></link> command lines,
+but also the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PPCOM"><envar>$F77PPCOM</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77PPCOM"><envar>$SHF77PPCOM</envar></link> command lines
+used to compile a Fortran source file,
+and the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ASPPCOM"><envar>$ASPPCOM</envar></link> command line
+used to assemble an assembly language source file,
+after first running each file through the C preprocessor.
+Note that this variable does
+<emphasis>not</emphasis>
+contain
+<option>-I</option>
+(or similar) include search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPPATH"><envar>$CPPPATH</envar></link>.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_CPPINCFLAGS"><envar>$_CPPINCFLAGS</envar></link>, below,
+for the variable that expands to those options.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_CPPINCFLAGS">
+ <term>_CPPINCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the C preprocessor command-line options
+for specifying directories to be searched for include files.
+The value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPINCFLAGS</envar> is created
+by appending <envar xmlns="http://www.scons.org/dbxsd/v1.0">$INCPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$INCSUFFIX</envar>
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CPPPATH">
+ <term>CPPPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that the C preprocessor will search for include
+directories. The C/C++ implicit dependency scanner will search these
+directories for include files. Don't explicitly put include directory
+arguments in CCFLAGS or CXXFLAGS because the result will be non-portable
+and the directories will not be searched by the dependency scanner. Note:
+directory names in CPPPATH will be looked-up relative to the SConscript
+directory when they are used in a command. To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(CPPPATH='#/include')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+include = Dir('include')
+env = Environment(CPPPATH=include)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPINCFLAGS</envar>
+construction variable,
+which is constructed by
+appending the values of the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$INCPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$INCSUFFIX</envar>
+construction variables
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar>.
+Any command lines you define that need
+the CPPPATH directory list should
+include <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPINCFLAGS</envar>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(CCCOM="my_compiler $_CPPINCFLAGS -c -o $TARGET $SOURCE")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CPPSUFFIXES">
+ <term>CPPSUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of suffixes of files that will be scanned
+for C preprocessor implicit dependencies
+(#include lines).
+The default list is:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+[".c", ".C", ".cxx", ".cpp", ".c++", ".cc",
+ ".h", ".H", ".hxx", ".hpp", ".hh",
+ ".F", ".fpp", ".FPP",
+ ".m", ".mm",
+ ".S", ".spp", ".SPP"]
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CVS">
+ <term>CVS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The CVS executable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CVSCOFLAGS">
+ <term>CVSCOFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the CVS checkout subcommand.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CVSCOM">
+ <term>CVSCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to
+fetch source files from a CVS repository.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CVSCOMSTR">
+ <term>CVSCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when fetching
+a source file from a CVS repository.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CVSCOM"><envar>$CVSCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CVSFLAGS">
+ <term>CVSFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options that are passed to CVS.
+By default, this is set to
+<literal>-d $CVSREPOSITORY</literal>
+to specify from where the files must be fetched.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CVSREPOSITORY">
+ <term>CVSREPOSITORY</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path to the CVS repository.
+This is referenced in the default
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CVSFLAGS"><envar>$CVSFLAGS</envar></link> value.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CXX">
+ <term>CXX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The C++ compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CXXCOM">
+ <term>CXXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a C++ source file to an object file.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXFLAGS"><envar>$CXXFLAGS</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CXXCOMSTR">
+ <term>CXXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a C++ source file
+is compiled to a (static) object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXCOM"><envar>$CXXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(CXXCOMSTR = "Compiling static object $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CXXFILESUFFIX">
+ <term>CXXFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix for C++ source files.
+This is used by the internal CXXFile builder
+when generating C++ files from Lex (.ll) or YACC (.yy) input files.
+The default suffix is
+<filename>.cc</filename>.
+SCons also treats files with the suffixes
+<filename>.cpp</filename>,
+<filename>.cxx</filename>,
+<filename>.c++</filename>,
+and
+<filename>.C++</filename>
+as C++ files,
+and files with
+<filename>.mm</filename>
+suffixes as Objective C++ files.
+On case-sensitive systems (Linux, UNIX, and other POSIX-alikes),
+SCons also treats
+<filename>.C</filename>
+(upper case) files
+as C++ files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CXXFLAGS">
+ <term>CXXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options that are passed to the C++ compiler.
+By default, this includes the value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCFLAGS"><envar>$CCFLAGS</envar></link>,
+so that setting <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CCFLAGS</envar> affects both C and C++ compilation.
+If you want to add C++-specific flags,
+you must set or override the value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXFLAGS"><envar>$CXXFLAGS</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-CXXVERSION">
+ <term>CXXVERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The version number of the C++ compiler.
+This may or may not be set,
+depending on the specific C++ compiler being used.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DESCRIPTION">
+ <term>DESCRIPTION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A long description of the project being packaged.
+This is included in the relevant section
+of the file that controls the packaging build.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DESCRIPTION_lang">
+ <term>DESCRIPTION_lang</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A language-specific long description for
+the specified <varname>lang</varname>.
+This is used to populate a
+<literal>%description -l</literal>
+section of an RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-Dir">
+ <term>Dir</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function that converts a string
+into a Dir instance relative to the target being built.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function that converts a string
+into a Dir instance relative to the target being built.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-Dirs">
+ <term>Dirs</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function that converts a list of strings
+into a list of Dir instances relative to the target being built.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_EPUB">
+ <term>DOCBOOK_DEFAULT_XSL_EPUB</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookEpub"><function>DocbookEpub</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_HTML">
+ <term>DOCBOOK_DEFAULT_XSL_HTML</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookHtml"><function>DocbookHtml</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED">
+ <term>DOCBOOK_DEFAULT_XSL_HTMLCHUNKED</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookHtmlChunked"><function>DocbookHtmlChunked</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_HTMLHELP">
+ <term>DOCBOOK_DEFAULT_XSL_HTMLHELP</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookHtmlhelp"><function>DocbookHtmlhelp</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_MAN">
+ <term>DOCBOOK_DEFAULT_XSL_MAN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookMan"><function>DocbookMan</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_PDF">
+ <term>DOCBOOK_DEFAULT_XSL_PDF</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookPdf"><function>DocbookPdf</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_SLIDESHTML">
+ <term>DOCBOOK_DEFAULT_XSL_SLIDESHTML</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookSlidesHtml"><function>DocbookSlidesHtml</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_SLIDESPDF">
+ <term>DOCBOOK_DEFAULT_XSL_SLIDESPDF</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default XSLT file for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-DocbookSlidesPdf"><function>DocbookSlidesPdf</function></link> builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_FOP">
+ <term>DOCBOOK_FOP</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path to the PDF renderer <literal>fop</literal> or <literal>xep</literal>,
+if one of them is installed (<literal>fop</literal> gets checked first).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_FOPCOM">
+ <term>DOCBOOK_FOPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The full command-line for the
+PDF renderer <literal>fop</literal> or <literal>xep</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_FOPCOMSTR">
+ <term>DOCBOOK_FOPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a renderer like <literal>fop</literal> or
+<literal>xep</literal> is used to create PDF output from an XML file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_FOPFLAGS">
+ <term>DOCBOOK_FOPFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additonal command-line flags for the
+PDF renderer <literal>fop</literal> or <literal>xep</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XMLLINT">
+ <term>DOCBOOK_XMLLINT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path to the external executable <literal>xmllint</literal>, if it's installed.
+Note, that this is only used as last fallback for resolving
+XIncludes, if no libxml2 or lxml Python binding can be imported
+in the current system.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XMLLINTCOM">
+ <term>DOCBOOK_XMLLINTCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The full command-line for the external executable
+<literal>xmllint</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XMLLINTCOMSTR">
+ <term>DOCBOOK_XMLLINTCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when <literal>xmllint</literal> is used to resolve
+XIncludes for a given XML file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XMLLINTFLAGS">
+ <term>DOCBOOK_XMLLINTFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additonal command-line flags for the external executable
+<literal>xmllint</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XSLTPROC">
+ <term>DOCBOOK_XSLTPROC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path to the external executable <literal>xsltproc</literal>
+(or <literal>saxon</literal>, <literal>xalan</literal>), if one of them
+is installed.
+Note, that this is only used as last fallback for XSL transformations, if
+no libxml2 or lxml Python binding can be imported in the current system.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XSLTPROCCOM">
+ <term>DOCBOOK_XSLTPROCCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The full command-line for the external executable
+<literal>xsltproc</literal> (or <literal>saxon</literal>,
+<literal>xalan</literal>).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XSLTPROCCOMSTR">
+ <term>DOCBOOK_XSLTPROCCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when <literal>xsltproc</literal> is used to transform
+an XML file via a given XSLT stylesheet.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XSLTPROCFLAGS">
+ <term>DOCBOOK_XSLTPROCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additonal command-line flags for the external executable
+<literal>xsltproc</literal> (or <literal>saxon</literal>,
+<literal>xalan</literal>).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DOCBOOK_XSLTPROCPARAMS">
+ <term>DOCBOOK_XSLTPROCPARAMS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additonal parameters that are not intended for the XSLT processor executable, but
+the XSL processing itself. By default, they get appended at the end of the command line
+for <literal>saxon</literal> and <literal>saxon-xslt</literal>, respectively.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DSUFFIXES">
+ <term>DSUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of suffixes of files that will be scanned
+for imported D package files.
+The default list is:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+['.d']
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVIPDF">
+ <term>DVIPDF</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The TeX DVI file to PDF file converter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVIPDFCOM">
+ <term>DVIPDFCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to convert TeX DVI files into a PDF file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVIPDFCOMSTR">
+ <term>DVIPDFCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a TeX DVI file
+is converted into a PDF file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-DVIPDFCOM"><envar>$DVIPDFCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVIPDFFLAGS">
+ <term>DVIPDFFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the TeX DVI file to PDF file converter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVIPS">
+ <term>DVIPS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The TeX DVI file to PostScript converter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVIPSFLAGS">
+ <term>DVIPSFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the TeX DVI file to PostScript converter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ENV">
+ <term>ENV</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A dictionary of environment variables
+to use when invoking commands. When
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$ENV</envar> is used in a command all list
+values will be joined using the path separator and any other non-string
+values will simply be coerced to a string.
+Note that, by default,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+does
+<emphasis>not</emphasis>
+propagate the environment in force when you
+execute
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to the commands used to build target files.
+This is so that builds will be guaranteed
+repeatable regardless of the environment
+variables set at the time
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+is invoked.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If you want to propagate your
+environment variables
+to the commands executed
+to build target files,
+you must do so explicitly:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+import os
+env = Environment(ENV = os.environ)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that you can choose only to propagate
+certain environment variables.
+A common example is
+the system
+<envar>PATH</envar>
+environment variable,
+so that
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+uses the same utilities
+as the invoking shell (or other process):
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+import os
+env = Environment(ENV = {'PATH' : os.environ['PATH']})
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ESCAPE">
+ <term>ESCAPE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function that will be called to escape shell special characters in
+command lines. The function should take one argument: the command line
+string to escape; and should return the escaped command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03">
+ <term>F03</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 03 compiler.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRAN"><envar>$FORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03"><envar>$F03</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 03 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03COM">
+ <term>F03COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 03 source file to an object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03COM"><envar>$F03COM</envar></link> if you need to use a specific
+command line for Fortran 03 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03COMSTR">
+ <term>F03COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 03 source file
+is compiled to an object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03COM"><envar>$F03COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03FILESUFFIXES">
+ <term>F03FILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the F03 dialect will be used. By
+default, this is ['.f03']
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03FLAGS">
+ <term>F03FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user-specified options that are passed to the Fortran 03 compiler.
+Note that this variable does
+<emphasis>not</emphasis>
+contain
+<option>-I</option>
+(or similar) include search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03PATH"><envar>$F03PATH</envar></link>.
+See
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F03INCFLAGS"><envar>$_F03INCFLAGS</envar></link>
+below,
+for the variable that expands to those options.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03FLAGS"><envar>$F03FLAGS</envar></link> if you need to define specific
+user options for Fortran 03 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANFLAGS"><envar>$FORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_F03INCFLAGS">
+ <term>_F03INCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the Fortran 03 compiler command-line options
+for specifying directories to be searched for include files.
+The value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F03INCFLAGS"><envar>$_F03INCFLAGS</envar></link> is created
+by appending <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03PATH"><envar>$F03PATH</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03PATH">
+ <term>F03PATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that the Fortran 03 compiler will search for include
+directories. The implicit dependency scanner will search these
+directories for include files. Don't explicitly put include directory
+arguments in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03FLAGS"><envar>$F03FLAGS</envar></link> because the result will be non-portable
+and the directories will not be searched by the dependency scanner. Note:
+directory names in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03PATH"><envar>$F03PATH</envar></link> will be looked-up relative to the SConscript
+directory when they are used in a command. To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03PATH"><envar>$F03PATH</envar></link> if you need to define a specific
+include path for Fortran 03 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPATH"><envar>$FORTRANPATH</envar></link> variable,
+which specifies the include path
+for the default Fortran compiler
+for all Fortran versions.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F03PATH='#/include')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+include = Dir('include')
+env = Environment(F03PATH=include)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F03INCFLAGS"><envar>$_F03INCFLAGS</envar></link>
+construction variable,
+which is constructed by
+appending the values of the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+construction variables
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03PATH"><envar>$F03PATH</envar></link>.
+Any command lines you define that need
+the F03PATH directory list should
+include <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F03INCFLAGS"><envar>$_F03INCFLAGS</envar></link>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F03COM="my_compiler $_F03INCFLAGS -c -o $TARGET $SOURCE")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03PPCOM">
+ <term>F03PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 03 source file to an object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03FLAGS"><envar>$F03FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03PPCOM"><envar>$F03PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 03 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03PPCOMSTR">
+ <term>F03PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 03 source file
+is compiled to an object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F03PPCOM"><envar>$F03PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F03PPFILESUFFIXES">
+ <term>F03PPFILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the compilation + preprocessor pass for
+F03 dialect will be used. By default, this is empty
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77">
+ <term>F77</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 77 compiler.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRAN"><envar>$FORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77"><envar>$F77</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 77 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77COM">
+ <term>F77COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 77 source file to an object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77COM"><envar>$F77COM</envar></link> if you need to use a specific
+command line for Fortran 77 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77COMSTR">
+ <term>F77COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 77 source file
+is compiled to an object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77COM"><envar>$F77COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77FILESUFFIXES">
+ <term>F77FILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the F77 dialect will be used. By
+default, this is ['.f77']
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77FLAGS">
+ <term>F77FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user-specified options that are passed to the Fortran 77 compiler.
+Note that this variable does
+<emphasis>not</emphasis>
+contain
+<option>-I</option>
+(or similar) include search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PATH"><envar>$F77PATH</envar></link>.
+See
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F77INCFLAGS"><envar>$_F77INCFLAGS</envar></link>
+below,
+for the variable that expands to those options.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77FLAGS"><envar>$F77FLAGS</envar></link> if you need to define specific
+user options for Fortran 77 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANFLAGS"><envar>$FORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_F77INCFLAGS">
+ <term>_F77INCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the Fortran 77 compiler command-line options
+for specifying directories to be searched for include files.
+The value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F77INCFLAGS"><envar>$_F77INCFLAGS</envar></link> is created
+by appending <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PATH"><envar>$F77PATH</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77PATH">
+ <term>F77PATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that the Fortran 77 compiler will search for include
+directories. The implicit dependency scanner will search these
+directories for include files. Don't explicitly put include directory
+arguments in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77FLAGS"><envar>$F77FLAGS</envar></link> because the result will be non-portable
+and the directories will not be searched by the dependency scanner. Note:
+directory names in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PATH"><envar>$F77PATH</envar></link> will be looked-up relative to the SConscript
+directory when they are used in a command. To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PATH"><envar>$F77PATH</envar></link> if you need to define a specific
+include path for Fortran 77 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPATH"><envar>$FORTRANPATH</envar></link> variable,
+which specifies the include path
+for the default Fortran compiler
+for all Fortran versions.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F77PATH='#/include')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+include = Dir('include')
+env = Environment(F77PATH=include)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F77INCFLAGS"><envar>$_F77INCFLAGS</envar></link>
+construction variable,
+which is constructed by
+appending the values of the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+construction variables
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PATH"><envar>$F77PATH</envar></link>.
+Any command lines you define that need
+the F77PATH directory list should
+include <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F77INCFLAGS"><envar>$_F77INCFLAGS</envar></link>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F77COM="my_compiler $_F77INCFLAGS -c -o $TARGET $SOURCE")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77PPCOM">
+ <term>F77PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 77 source file to an object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77FLAGS"><envar>$F77FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PPCOM"><envar>$F77PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 77 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77PPCOMSTR">
+ <term>F77PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 77 source file
+is compiled to an object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F77PPCOM"><envar>$F77PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F77PPFILESUFFIXES">
+ <term>F77PPFILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the compilation + preprocessor pass for
+F77 dialect will be used. By default, this is empty
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90">
+ <term>F90</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 90 compiler.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRAN"><envar>$FORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90"><envar>$F90</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 90 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90COM">
+ <term>F90COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 90 source file to an object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90COM"><envar>$F90COM</envar></link> if you need to use a specific
+command line for Fortran 90 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90COMSTR">
+ <term>F90COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 90 source file
+is compiled to an object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90COM"><envar>$F90COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90FILESUFFIXES">
+ <term>F90FILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the F90 dialect will be used. By
+default, this is ['.f90']
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90FLAGS">
+ <term>F90FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user-specified options that are passed to the Fortran 90 compiler.
+Note that this variable does
+<emphasis>not</emphasis>
+contain
+<option>-I</option>
+(or similar) include search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90PATH"><envar>$F90PATH</envar></link>.
+See
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F90INCFLAGS"><envar>$_F90INCFLAGS</envar></link>
+below,
+for the variable that expands to those options.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90FLAGS"><envar>$F90FLAGS</envar></link> if you need to define specific
+user options for Fortran 90 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANFLAGS"><envar>$FORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_F90INCFLAGS">
+ <term>_F90INCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the Fortran 90 compiler command-line options
+for specifying directories to be searched for include files.
+The value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F90INCFLAGS"><envar>$_F90INCFLAGS</envar></link> is created
+by appending <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90PATH"><envar>$F90PATH</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90PATH">
+ <term>F90PATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that the Fortran 90 compiler will search for include
+directories. The implicit dependency scanner will search these
+directories for include files. Don't explicitly put include directory
+arguments in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90FLAGS"><envar>$F90FLAGS</envar></link> because the result will be non-portable
+and the directories will not be searched by the dependency scanner. Note:
+directory names in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90PATH"><envar>$F90PATH</envar></link> will be looked-up relative to the SConscript
+directory when they are used in a command. To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90PATH"><envar>$F90PATH</envar></link> if you need to define a specific
+include path for Fortran 90 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPATH"><envar>$FORTRANPATH</envar></link> variable,
+which specifies the include path
+for the default Fortran compiler
+for all Fortran versions.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F90PATH='#/include')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+include = Dir('include')
+env = Environment(F90PATH=include)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F90INCFLAGS"><envar>$_F90INCFLAGS</envar></link>
+construction variable,
+which is constructed by
+appending the values of the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+construction variables
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90PATH"><envar>$F90PATH</envar></link>.
+Any command lines you define that need
+the F90PATH directory list should
+include <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F90INCFLAGS"><envar>$_F90INCFLAGS</envar></link>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F90COM="my_compiler $_F90INCFLAGS -c -o $TARGET $SOURCE")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90PPCOM">
+ <term>F90PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 90 source file to an object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90FLAGS"><envar>$F90FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90PPCOM"><envar>$F90PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 90 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90PPCOMSTR">
+ <term>F90PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 90 source file
+is compiled after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F90PPCOM"><envar>$F90PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F90PPFILESUFFIXES">
+ <term>F90PPFILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the compilation + preprocessor pass for
+F90 dialect will be used. By default, this is empty
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95">
+ <term>F95</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 95 compiler.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRAN"><envar>$FORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95"><envar>$F95</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 95 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95COM">
+ <term>F95COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 95 source file to an object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95COM"><envar>$F95COM</envar></link> if you need to use a specific
+command line for Fortran 95 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95COMSTR">
+ <term>F95COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 95 source file
+is compiled to an object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95COM"><envar>$F95COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95FILESUFFIXES">
+ <term>F95FILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the F95 dialect will be used. By
+default, this is ['.f95']
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95FLAGS">
+ <term>F95FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user-specified options that are passed to the Fortran 95 compiler.
+Note that this variable does
+<emphasis>not</emphasis>
+contain
+<option>-I</option>
+(or similar) include search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95PATH"><envar>$F95PATH</envar></link>.
+See
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F95INCFLAGS"><envar>$_F95INCFLAGS</envar></link>
+below,
+for the variable that expands to those options.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95FLAGS"><envar>$F95FLAGS</envar></link> if you need to define specific
+user options for Fortran 95 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANFLAGS"><envar>$FORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_F95INCFLAGS">
+ <term>_F95INCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the Fortran 95 compiler command-line options
+for specifying directories to be searched for include files.
+The value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F95INCFLAGS"><envar>$_F95INCFLAGS</envar></link> is created
+by appending <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95PATH"><envar>$F95PATH</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95PATH">
+ <term>F95PATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that the Fortran 95 compiler will search for include
+directories. The implicit dependency scanner will search these
+directories for include files. Don't explicitly put include directory
+arguments in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95FLAGS"><envar>$F95FLAGS</envar></link> because the result will be non-portable
+and the directories will not be searched by the dependency scanner. Note:
+directory names in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95PATH"><envar>$F95PATH</envar></link> will be looked-up relative to the SConscript
+directory when they are used in a command. To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95PATH"><envar>$F95PATH</envar></link> if you need to define a specific
+include path for Fortran 95 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPATH"><envar>$FORTRANPATH</envar></link> variable,
+which specifies the include path
+for the default Fortran compiler
+for all Fortran versions.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F95PATH='#/include')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+include = Dir('include')
+env = Environment(F95PATH=include)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F95INCFLAGS"><envar>$_F95INCFLAGS</envar></link>
+construction variable,
+which is constructed by
+appending the values of the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+construction variables
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95PATH"><envar>$F95PATH</envar></link>.
+Any command lines you define that need
+the F95PATH directory list should
+include <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_F95INCFLAGS"><envar>$_F95INCFLAGS</envar></link>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(F95COM="my_compiler $_F95INCFLAGS -c -o $TARGET $SOURCE")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95PPCOM">
+ <term>F95PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 95 source file to an object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95FLAGS"><envar>$F95FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95PPCOM"><envar>$F95PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 95 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95PPCOMSTR">
+ <term>F95PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 95 source file
+is compiled to an object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-F95PPCOM"><envar>$F95PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-F95PPFILESUFFIXES">
+ <term>F95PPFILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the compilation + preprocessor pass for
+F95 dialect will be used. By default, this is empty
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-File">
+ <term>File</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function that converts a string into a File instance relative to the
+target being built.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function that converts a string into a File instance relative to the
+target being built.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRAN">
+ <term>FORTRAN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default Fortran compiler
+for all versions of Fortran.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANCOM">
+ <term>FORTRANCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran source file to an object file.
+By default, any options specified
+in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANFLAGS"><envar>$FORTRANFLAGS</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_CPPDEFFLAGS"><envar>$_CPPDEFFLAGS</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANMODFLAG"><envar>$_FORTRANMODFLAG</envar></link>, and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANINCFLAGS"><envar>$_FORTRANINCFLAGS</envar></link> construction variables
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANCOMSTR">
+ <term>FORTRANCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran source file
+is compiled to an object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANCOM"><envar>$FORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANFILESUFFIXES">
+ <term>FORTRANFILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the FORTRAN dialect will be used. By
+default, this is ['.f', '.for', '.ftn']
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANFLAGS">
+ <term>FORTRANFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user-specified options that are passed to the Fortran compiler.
+Note that this variable does
+<emphasis>not</emphasis>
+contain
+<option>-I</option>
+(or similar) include or module search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPATH"><envar>$FORTRANPATH</envar></link>.
+See
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANINCFLAGS"><envar>$_FORTRANINCFLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANMODFLAG"><envar>$_FORTRANMODFLAG</envar></link>,
+below,
+for the variables that expand those options.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_FORTRANINCFLAGS">
+ <term>_FORTRANINCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the Fortran compiler command-line options
+for specifying directories to be searched for include
+files and module files.
+The value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANINCFLAGS"><envar>$_FORTRANINCFLAGS</envar></link> is created
+by prepending/appending <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPATH"><envar>$FORTRANPATH</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANMODDIR">
+ <term>FORTRANMODDIR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Directory location where the Fortran compiler should place
+any module files it generates. This variable is empty, by default. Some
+Fortran compilers will internally append this directory in the search path
+for module files, as well.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANMODDIRPREFIX">
+ <term>FORTRANMODDIRPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used to specify a module directory on the Fortran compiler command
+line.
+This will be appended to the beginning of the directory
+in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANMODDIR"><envar>$FORTRANMODDIR</envar></link> construction variables
+when the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANMODFLAG"><envar>$_FORTRANMODFLAG</envar></link> variables is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANMODDIRSUFFIX">
+ <term>FORTRANMODDIRSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify a module directory on the Fortran compiler command
+line.
+This will be appended to the beginning of the directory
+in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANMODDIR"><envar>$FORTRANMODDIR</envar></link> construction variables
+when the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANMODFLAG"><envar>$_FORTRANMODFLAG</envar></link> variables is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_FORTRANMODFLAG">
+ <term>_FORTRANMODFLAG</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the Fortran compiler command-line option
+for specifying the directory location where the Fortran
+compiler should place any module files that happen to get
+generated during compilation.
+The value of <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANMODFLAG"><envar>$_FORTRANMODFLAG</envar></link> is created
+by prepending/appending <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANMODDIRPREFIX"><envar>$FORTRANMODDIRPREFIX</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANMODDIRSUFFIX"><envar>$FORTRANMODDIRSUFFIX</envar></link>
+to the beginning and end of the directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANMODDIR"><envar>$FORTRANMODDIR</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANMODPREFIX">
+ <term>FORTRANMODPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The module file prefix used by the Fortran compiler. SCons assumes that
+the Fortran compiler follows the quasi-standard naming convention for
+module files of
+<filename>module_name.mod</filename>.
+As a result, this variable is left empty, by default. For situations in
+which the compiler does not necessarily follow the normal convention,
+the user may use this variable. Its value will be appended to every
+module file name as scons attempts to resolve dependencies.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANMODSUFFIX">
+ <term>FORTRANMODSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The module file suffix used by the Fortran compiler. SCons assumes that
+the Fortran compiler follows the quasi-standard naming convention for
+module files of
+<filename>module_name.mod</filename>.
+As a result, this variable is set to ".mod", by default. For situations
+in which the compiler does not necessarily follow the normal convention,
+the user may use this variable. Its value will be appended to every
+module file name as scons attempts to resolve dependencies.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANPATH">
+ <term>FORTRANPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that the Fortran compiler will search for
+include files and (for some compilers) module files. The Fortran implicit
+dependency scanner will search these directories for include files (but
+not module files since they are autogenerated and, as such, may not
+actually exist at the time the scan takes place). Don't explicitly put
+include directory arguments in FORTRANFLAGS because the result will be
+non-portable and the directories will not be searched by the dependency
+scanner. Note: directory names in FORTRANPATH will be looked-up relative
+to the SConscript directory when they are used in a command. To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(FORTRANPATH='#/include')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+include = Dir('include')
+env = Environment(FORTRANPATH=include)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANINCFLAGS"><envar>$_FORTRANINCFLAGS</envar></link>
+construction variable,
+which is constructed by
+appending the values of the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCPREFIX"><envar>$INCPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-INCSUFFIX"><envar>$INCSUFFIX</envar></link>
+construction variables
+to the beginning and end
+of each directory in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPATH"><envar>$FORTRANPATH</envar></link>.
+Any command lines you define that need
+the FORTRANPATH directory list should
+include <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANINCFLAGS"><envar>$_FORTRANINCFLAGS</envar></link>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(FORTRANCOM="my_compiler $_FORTRANINCFLAGS -c -o $TARGET $SOURCE")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANPPCOM">
+ <term>FORTRANPPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran source file to an object file
+after first running the file through the C preprocessor.
+By default, any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANFLAGS"><envar>$FORTRANFLAGS</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_CPPDEFFLAGS"><envar>$_CPPDEFFLAGS</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANMODFLAG"><envar>$_FORTRANMODFLAG</envar></link>, and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_FORTRANINCFLAGS"><envar>$_FORTRANINCFLAGS</envar></link>
+construction variables are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANPPCOMSTR">
+ <term>FORTRANPPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran source file
+is compiled to an object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FORTRANPPCOM"><envar>$FORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANPPFILESUFFIXES">
+ <term>FORTRANPPFILESUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of file extensions for which the compilation + preprocessor pass for
+FORTRAN dialect will be used. By default, this is ['.fpp', '.FPP']
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FORTRANSUFFIXES">
+ <term>FORTRANSUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of suffixes of files that will be scanned
+for Fortran implicit dependencies
+(INCLUDE lines and USE statements).
+The default list is:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+[".f", ".F", ".for", ".FOR", ".ftn", ".FTN", ".fpp", ".FPP",
+".f77", ".F77", ".f90", ".F90", ".f95", ".F95"]
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FRAMEWORKPATH">
+ <term>FRAMEWORKPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Mac OS X with gcc,
+a list containing the paths to search for frameworks.
+Used by the compiler to find framework-style includes like
+#include &lt;Fmwk/Header.h&gt;.
+Used by the linker to find user-specified frameworks when linking (see
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKS"><envar>$FRAMEWORKS</envar></link>).
+For example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ env.AppendUnique(FRAMEWORKPATH='#myframeworkdir')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+will add
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ ... -Fmyframeworkdir
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+to the compiler and linker command lines.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_FRAMEWORKPATH">
+ <term>_FRAMEWORKPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Mac OS X with gcc, an automatically-generated construction variable
+containing the linker command-line options corresponding to
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKPATH"><envar>$FRAMEWORKPATH</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FRAMEWORKPATHPREFIX">
+ <term>FRAMEWORKPATHPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Mac OS X with gcc, the prefix to be used for the FRAMEWORKPATH entries.
+(see <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKPATH"><envar>$FRAMEWORKPATH</envar></link>).
+The default value is
+<option>-F</option>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FRAMEWORKPREFIX">
+ <term>FRAMEWORKPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Mac OS X with gcc,
+the prefix to be used for linking in frameworks
+(see <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKS"><envar>$FRAMEWORKS</envar></link>).
+The default value is
+<option>-framework</option>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_FRAMEWORKS">
+ <term>_FRAMEWORKS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Mac OS X with gcc,
+an automatically-generated construction variable
+containing the linker command-line options
+for linking with FRAMEWORKS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FRAMEWORKS">
+ <term>FRAMEWORKS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Mac OS X with gcc, a list of the framework names to be linked into a
+program or shared library or bundle.
+The default value is the empty list.
+For example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+ env.AppendUnique(FRAMEWORKS=Split('System Cocoa SystemConfiguration'))
+</example_commands>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-FRAMEWORKSFLAGS">
+ <term>FRAMEWORKSFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Mac OS X with gcc,
+general user-supplied frameworks options to be added at
+the end of a command
+line building a loadable module.
+(This has been largely superseded by
+the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKPATH"><envar>$FRAMEWORKPATH</envar></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKPATHPREFIX"><envar>$FRAMEWORKPATHPREFIX</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKPREFIX"><envar>$FRAMEWORKPREFIX</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKS"><envar>$FRAMEWORKS</envar></link> variables
+described above.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-GS">
+ <term>GS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Ghostscript program used, e.g. to convert PostScript to PDF files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-GSCOM">
+ <term>GSCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The full Ghostscript command line used for the conversion process. Its default
+value is <quote><literal>$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES</literal></quote>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-GSCOMSTR">
+ <term>GSCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when
+Ghostscript is called for the conversion process.
+If this is not set (the default), then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-GSCOM"><envar>$GSCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-GSFLAGS">
+ <term>GSFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the Ghostscript program,
+when converting PostScript to PDF files for example. Its default value
+is <quote><literal>-dNOPAUSE -dBATCH -sDEVICE=pdfwrite</literal></quote>
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-HOST_ARCH">
+ <term>HOST_ARCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets the host architecture for Visual Studio compiler. If not set,
+default to the detected host architecture: note that this may depend
+on the python you are using.
+This variable must be passed as an argument to the Environment()
+constructor; setting it later has no effect.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Valid values are the same as for <envar xmlns="http://www.scons.org/dbxsd/v1.0">$TARGET_ARCH</envar>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is currently only used on Windows, but in the future it will be
+used on other OSes as well.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ The name of the host hardware architecture used to create the Environment.
+ If a platform is specified when creating the Environment, then
+ that Platform's logic will handle setting this value.
+ This value is immutable, and should not be changed by the user after
+ the Environment is initialized.
+ Currently only set for Win32.
+</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry id="cv-HOST_OS">
+ <term>HOST_OS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ The name of the host operating system used to create the Environment.
+ If a platform is specified when creating the Environment, then
+ that Platform's logic will handle setting this value.
+ This value is immutable, and should not be changed by the user after
+ the Environment is initialized.
+ Currently only set for Win32.
+</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry id="cv-IDLSUFFIXES">
+ <term>IDLSUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of suffixes of files that will be scanned
+for IDL implicit dependencies
+(#include or import lines).
+The default list is:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+[".idl", ".IDL"]
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-IMPLICIT_COMMAND_DEPENDENCIES">
+ <term>IMPLICIT_COMMAND_DEPENDENCIES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Controls whether or not SCons will
+add implicit dependencies for the commands
+executed to build targets.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+By default, SCons will add
+to each target
+an implicit dependency on the command
+represented by the first argument on any
+command line it executes.
+The specific file for the dependency is
+found by searching the
+<varname>PATH</varname>
+variable in the
+<varname>ENV</varname>
+environment used to execute the command.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If the construction variable
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$IMPLICIT_COMMAND_DEPENDENCIES</envar>
+is set to a false value
+(<literal>None</literal>,
+<literal>False</literal>,
+<literal>0</literal>,
+etc.),
+then the implicit dependency will
+not be added to the targets
+built with that construction environment.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(IMPLICIT_COMMAND_DEPENDENCIES = 0)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-INCPREFIX">
+ <term>INCPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used to specify an include directory on the C compiler command
+line.
+This will be appended to the beginning of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$FORTRANPATH</envar> construction variables
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPINCFLAGS</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_FORTRANINCFLAGS</envar>
+variables are automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-INCSUFFIX">
+ <term>INCSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify an include directory on the C compiler command
+line.
+This will be appended to the end of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$FORTRANPATH</envar> construction variables
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_CPPINCFLAGS</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_FORTRANINCFLAGS</envar>
+variables are automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-INSTALL">
+ <term>INSTALL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function to be called to install a file into a
+destination file name.
+The default function copies the file into the destination
+(and sets the destination file's mode and permission bits
+to match the source file's).
+The function takes the following arguments:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def install(dest, source, env):
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<varname>dest</varname>
+is the path name of the destination file.
+<varname>source</varname>
+is the path name of the source file.
+<varname>env</varname>
+is the construction environment
+(a dictionary of construction values)
+in force for this file installation.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-INSTALLSTR">
+ <term>INSTALLSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a file is
+installed into a destination file name.
+The default is:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Install file: "$SOURCE" as "$TARGET"
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-INTEL_C_COMPILER_VERSION">
+ <term>INTEL_C_COMPILER_VERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set by the "intelc" Tool
+to the major version number of the Intel C compiler
+selected for use.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAR">
+ <term>JAR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Java archive tool.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Java archive tool.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JARCHDIR">
+ <term>JARCHDIR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory to which the Java archive tool should change
+(using the
+<option>-C</option>
+option).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory to which the Java archive tool should change
+(using the
+<option>-C</option>
+option).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JARCOM">
+ <term>JARCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the Java archive tool.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the Java archive tool.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JARCOMSTR">
+ <term>JARCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when the Java archive tool
+is called
+If this is not set, then <envar xmlns="http://www.scons.org/dbxsd/v1.0">$JARCOM</envar> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET")
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when the Java archive tool
+is called
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JARCOM"><envar>$JARCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JARFLAGS">
+ <term>JARFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the Java archive tool.
+By default this is set to
+<option>cf</option>
+to create the necessary
+<command>jar</command>
+file.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the Java archive tool.
+By default this is set to
+<option>cf</option>
+to create the necessary
+<command>jar</command>
+file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JARSUFFIX">
+ <term>JARSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix for Java archives:
+<filename>.jar</filename>
+by default.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix for Java archives:
+<filename>.jar</filename>
+by default.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVABOOTCLASSPATH">
+ <term>JAVABOOTCLASSPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the list of directories that
+will be added to the
+<application xmlns="http://www.scons.org/dbxsd/v1.0">javac</application> command line
+via the <option>-bootclasspath</option> option.
+The individual directory names will be
+separated by the operating system's path separate character
+(<filename>:</filename> on UNIX/Linux/POSIX,
+<filename>;</filename> on Windows).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVAC">
+ <term>JAVAC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Java compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVACCOM">
+ <term>JAVACCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a directory tree containing
+Java source files to
+corresponding Java class files.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JAVACFLAGS"><envar>$JAVACFLAGS</envar></link> construction variable
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVACCOMSTR">
+ <term>JAVACCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when compiling
+a directory tree of Java source files to
+corresponding Java class files.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JAVACCOM"><envar>$JAVACCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(JAVACCOMSTR = "Compiling class files $TARGETS from $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVACFLAGS">
+ <term>JAVACFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options that are passed to the Java compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVACLASSDIR">
+ <term>JAVACLASSDIR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory in which Java class files may be found.
+This is stripped from the beginning of any Java .class
+file names supplied to the
+<literal>JavaH</literal>
+builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVACLASSPATH">
+ <term>JAVACLASSPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the list of directories that
+will be searched for Java
+<filename>.class</filename> file.
+The directories in this list will be added to the
+<application xmlns="http://www.scons.org/dbxsd/v1.0">javac</application> and <application xmlns="http://www.scons.org/dbxsd/v1.0">javah</application> command lines
+via the <option>-classpath</option> option.
+The individual directory names will be
+separated by the operating system's path separate character
+(<filename>:</filename> on UNIX/Linux/POSIX,
+<filename>;</filename> on Windows).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that this currently just adds the specified
+directory via the <option>-classpath</option> option.
+<application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> does not currently search the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$JAVACLASSPATH</envar> directories for dependency
+<filename>.class</filename> files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVACLASSSUFFIX">
+ <term>JAVACLASSSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix for Java class files;
+<filename>.class</filename>
+by default.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVAH">
+ <term>JAVAH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Java generator for C header and stub files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVAHCOM">
+ <term>JAVAHCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to generate C header and stub files
+from Java classes.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JAVAHFLAGS"><envar>$JAVAHFLAGS</envar></link> construction variable
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVAHCOMSTR">
+ <term>JAVAHCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when C header and stub files
+are generated from Java classes.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JAVAHCOM"><envar>$JAVAHCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(JAVAHCOMSTR = "Generating header/stub file(s) $TARGETS from $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVAHFLAGS">
+ <term>JAVAHFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the C header and stub file generator
+for Java classes.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVASOURCEPATH">
+ <term>JAVASOURCEPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the list of directories that
+will be searched for input
+<filename>.java</filename> file.
+The directories in this list will be added to the
+<application xmlns="http://www.scons.org/dbxsd/v1.0">javac</application> command line
+via the <option>-sourcepath</option> option.
+The individual directory names will be
+separated by the operating system's path separate character
+(<filename>:</filename> on UNIX/Linux/POSIX,
+<filename>;</filename> on Windows).
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Note that this currently just adds the specified
+directory via the <option>-sourcepath</option> option.
+<application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> does not currently search the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$JAVASOURCEPATH</envar> directories for dependency
+<filename>.java</filename> files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVASUFFIX">
+ <term>JAVASUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix for Java files;
+<filename>.java</filename>
+by default.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-JAVAVERSION">
+ <term>JAVAVERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the Java version being used by the <function xmlns="http://www.scons.org/dbxsd/v1.0">Java</function> builder.
+This is <emphasis>not</emphasis> currently used to select one
+version of the Java compiler vs. another.
+Instead, you should set this to specify the version of Java
+supported by your <application xmlns="http://www.scons.org/dbxsd/v1.0">javac</application> compiler.
+The default is <literal>1.4</literal>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is sometimes necessary because
+Java 1.5 changed the file names that are created
+for nested anonymous inner classes,
+which can cause a mismatch with the files
+that <application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> expects will be generated by the <application xmlns="http://www.scons.org/dbxsd/v1.0">javac</application> compiler.
+Setting <envar xmlns="http://www.scons.org/dbxsd/v1.0">$JAVAVERSION</envar> to <literal>1.5</literal>
+(or <literal>1.6</literal>, as appropriate)
+can make <application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> realize that a Java 1.5 or 1.6
+build is actually up to date.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LATEX">
+ <term>LATEX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The LaTeX structured formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LATEXCOM">
+ <term>LATEXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the LaTeX structured formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LATEXCOMSTR">
+ <term>LATEXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when calling
+the LaTeX structured formatter and typesetter.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LATEXCOM"><envar>$LATEXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(LATEXCOMSTR = "Building $TARGET from LaTeX input $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LATEXFLAGS">
+ <term>LATEXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the LaTeX structured formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LATEXRETRIES">
+ <term>LATEXRETRIES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The maximum number of times that LaTeX
+will be re-run if the
+<filename>.log</filename>
+generated by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LATEXCOM"><envar>$LATEXCOM</envar></link> command
+indicates that there are undefined references.
+The default is to try to resolve undefined references
+by re-running LaTeX up to three times.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LATEXSUFFIXES">
+ <term>LATEXSUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of suffixes of files that will be scanned
+for LaTeX implicit dependencies
+(<literal>\include</literal> or <literal>\import</literal> files).
+The default list is:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+[".tex", ".ltx", ".latex"]
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LDMODULE">
+ <term>LDMODULE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The linker for building loadable modules.
+By default, this is the same as <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLINK"><envar>$SHLINK</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LDMODULECOM">
+ <term>LDMODULECOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line for building loadable modules.
+On Mac OS X, this uses the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LDMODULE"><envar>$LDMODULE</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LDMODULEFLAGS"><envar>$LDMODULEFLAGS</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-FRAMEWORKSFLAGS"><envar>$FRAMEWORKSFLAGS</envar></link> variables.
+On other systems, this is the same as <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLINK"><envar>$SHLINK</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LDMODULECOMSTR">
+ <term>LDMODULECOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when building loadable modules.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LDMODULECOM"><envar>$LDMODULECOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LDMODULEFLAGS">
+ <term>LDMODULEFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user options passed to the linker for building loadable modules.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LDMODULEPREFIX">
+ <term>LDMODULEPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for loadable module file names.
+On Mac OS X, this is null;
+on other systems, this is
+the same as <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBPREFIX"><envar>$SHLIBPREFIX</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LDMODULESUFFIX">
+ <term>LDMODULESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for loadable module file names.
+On Mac OS X, this is null;
+on other systems, this is
+the same as $SHLIBSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LEX">
+ <term>LEX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The lexical analyzer generator.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LEXCOM">
+ <term>LEXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the lexical analyzer generator
+to generate a source file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LEXCOMSTR">
+ <term>LEXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when generating a source file
+using the lexical analyzer generator.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LEXCOM"><envar>$LEXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(LEXCOMSTR = "Lex'ing $TARGET from $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LEXFLAGS">
+ <term>LEXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the lexical analyzer generator.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_LIBDIRFLAGS">
+ <term>_LIBDIRFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the linker command-line options
+for specifying directories to be searched for library.
+The value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBDIRFLAGS</envar> is created
+by appending <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBDIRPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBDIRSUFFIX</envar>
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBPATH</envar>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBDIRPREFIX">
+ <term>LIBDIRPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used to specify a library directory on the linker command line.
+This will be appended to the beginning of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBDIRFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBDIRSUFFIX">
+ <term>LIBDIRSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify a library directory on the linker command line.
+This will be appended to the end of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBDIRFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBEMITTER">
+ <term>LIBEMITTER</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+TODO
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_LIBFLAGS">
+ <term>_LIBFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the linker command-line options
+for specifying libraries to be linked with the resulting target.
+The value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBFLAGS</envar> is created
+by appending <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBLINKPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBLINKSUFFIX</envar>
+to the beginning and end
+of each filename in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBS</envar>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBLINKPREFIX">
+ <term>LIBLINKPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used to specify a library to link on the linker command line.
+This will be appended to the beginning of each library
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBS</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBLINKSUFFIX">
+ <term>LIBLINKSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify a library to link on the linker command line.
+This will be appended to the end of each library
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBS</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBPATH">
+ <term>LIBPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that will be searched for libraries.
+The implicit dependency scanner will search these
+directories for include files. Don't explicitly put include directory
+arguments in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINKFLAGS</envar> or <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SHLINKFLAGS</envar>
+because the result will be non-portable
+and the directories will not be searched by the dependency scanner. Note:
+directory names in LIBPATH will be looked-up relative to the SConscript
+directory when they are used in a command. To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(LIBPATH='#/libs')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+libs = Dir('libs')
+env = Environment(LIBPATH=libs)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBDIRFLAGS</envar>
+construction variable,
+which is constructed by
+appending the values of the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBDIRPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBDIRSUFFIX</envar>
+construction variables
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBPATH</envar>.
+Any command lines you define that need
+the LIBPATH directory list should
+include <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBDIRFLAGS</envar>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBPREFIX">
+ <term>LIBPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for (static) library file names.
+A default value is set for each platform
+(posix, win32, os2, etc.),
+but the value is overridden by individual tools
+(ar, mslib, sgiar, sunar, tlib, etc.)
+to reflect the names of the libraries they create.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBPREFIXES">
+ <term>LIBPREFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A list of all legal prefixes for library file names.
+When searching for library dependencies,
+SCons will look for files with these prefixes,
+the base library name,
+and suffixes in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBSUFFIXES</envar> list.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBS">
+ <term>LIBS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A list of one or more libraries
+that will be linked with
+any executable programs
+created by this environment.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The library list will be added to command lines
+through the automatically-generated
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBFLAGS</envar>
+construction variable,
+which is constructed by
+appending the values of the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBLINKPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBLINKSUFFIX</envar>
+construction variables
+to the beginning and end
+of each filename in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBS</envar>.
+Any command lines you define that need
+the LIBS library list should
+include <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBFLAGS</envar>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If you add a
+File
+object to the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBS</envar>
+list, the name of that file will be added to
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBFLAGS</envar>,
+and thus the link line, as is, without
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBLINKPREFIX</envar>
+or
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBLINKSUFFIX</envar>.
+For example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env.Append(LIBS=File('/tmp/mylib.so'))
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+In all cases, scons will add dependencies from the executable program to
+all the libraries in this list.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBSUFFIX">
+ <term>LIBSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for (static) library file names.
+A default value is set for each platform
+(posix, win32, os2, etc.),
+but the value is overridden by individual tools
+(ar, mslib, sgiar, sunar, tlib, etc.)
+to reflect the names of the libraries they create.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LIBSUFFIXES">
+ <term>LIBSUFFIXES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A list of all legal suffixes for library file names.
+When searching for library dependencies,
+SCons will look for files with prefixes, in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LIBPREFIXES</envar> list,
+the base library name,
+and these suffixes.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LICENSE">
+ <term>LICENSE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The abbreviated name of the license under which
+this project is released (gpl, lpgl, bsd etc.).
+See http://www.opensource.org/licenses/alphabetical
+for a list of license names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LINESEPARATOR">
+ <term>LINESEPARATOR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The separator used by the <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> and <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> builders.
+This value is used between sources when constructing the target.
+It defaults to the current system line separator.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LINGUAS_FILE">
+ <term>LINGUAS_FILE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINGUAS_FILE</envar> defines file(s) containing list of additional linguas
+to be processed by <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-MOFiles"><function>MOFiles</function></link>
+builders. It also affects <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Translate"><function>Translate</function></link> builder. If the variable contains
+a string, it defines name of the list file. The <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINGUAS_FILE</envar> may be a
+list of file names as well. If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINGUAS_FILE</envar> is set to
+<literal>True</literal> (or non-zero numeric value), the list will be read from
+default file named
+<filename>LINGUAS</filename>.
+</para>
+
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LINK">
+ <term>LINK</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The linker.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LINKCOM">
+ <term>LINKCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to link object files into an executable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LINKCOMSTR">
+ <term>LINKCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when object files
+are linked into an executable.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LINKCOM"><envar>$LINKCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(LINKCOMSTR = "Linking $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-LINKFLAGS">
+ <term>LINKFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user options passed to the linker.
+Note that this variable should
+<emphasis>not</emphasis>
+contain
+<option>-l</option>
+(or similar) options for linking with the libraries listed in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBS"><envar>$LIBS</envar></link>,
+nor
+<option>-L</option>
+(or similar) library search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBPATH"><envar>$LIBPATH</envar></link>.
+See
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_LIBFLAGS"><envar>$_LIBFLAGS</envar></link>
+above,
+for the variable that expands to library-link options,
+and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_LIBDIRFLAGS"><envar>$_LIBDIRFLAGS</envar></link>
+above,
+for the variable that expands to library search path options.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-M4">
+ <term>M4</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The M4 macro preprocessor.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-M4COM">
+ <term>M4COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to pass files through the M4 macro preprocessor.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-M4COMSTR">
+ <term>M4COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when
+a file is passed through the M4 macro preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-M4COM"><envar>$M4COM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-M4FLAGS">
+ <term>M4FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the M4 macro preprocessor.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MAKEINDEX">
+ <term>MAKEINDEX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The makeindex generator for the TeX formatter and typesetter and the
+LaTeX structured formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MAKEINDEXCOM">
+ <term>MAKEINDEXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the makeindex generator for the
+TeX formatter and typesetter and the LaTeX structured formatter and
+typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MAKEINDEXCOMSTR">
+ <term>MAKEINDEXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when calling the makeindex generator for the
+TeX formatter and typesetter
+and the LaTeX structured formatter and typesetter.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MAKEINDEXCOM"><envar>$MAKEINDEXCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MAKEINDEXFLAGS">
+ <term>MAKEINDEXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the makeindex generator for the TeX formatter
+and typesetter and the LaTeX structured formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MAXLINELENGTH">
+ <term>MAXLINELENGTH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The maximum number of characters allowed on an external command line.
+On Win32 systems,
+link lines longer than this many characters
+are linked via a temporary file name.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MIDL">
+ <term>MIDL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Microsoft IDL compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MIDLCOM">
+ <term>MIDLCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to pass files to the Microsoft IDL compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MIDLCOMSTR">
+ <term>MIDLCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when
+the Microsoft IDL copmiler is called.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MIDLCOM"><envar>$MIDLCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MIDLFLAGS">
+ <term>MIDLFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the Microsoft IDL compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MOSUFFIX">
+ <term>MOSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Suffix used for <literal>MO</literal> files (default: <literal>'.mo'</literal>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgfmt"><literal>msgfmt</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-MOFiles"><function>MOFiles</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGFMT">
+ <term>MSGFMT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Absolute path to <command>msgfmt(1)</command> binary, found by
+<function>Detect()</function>.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgfmt"><literal>msgfmt</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-MOFiles"><function>MOFiles</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGFMTCOM">
+ <term>MSGFMTCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Complete command line to run <command>msgfmt(1)</command> program.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgfmt"><literal>msgfmt</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-MOFiles"><function>MOFiles</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGFMTCOMSTR">
+ <term>MSGFMTCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+String to display when <command>msgfmt(1)</command> is invoked
+(default: <literal>''</literal>, which means ``print <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSGFMTCOM"><envar>$MSGFMTCOM</envar></link>'').
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgfmt"><literal>msgfmt</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-MOFiles"><function>MOFiles</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGFMTFLAGS">
+ <term>MSGFMTFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additional flags to <command>msgfmt(1)</command>.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgfmt"><literal>msgfmt</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-MOFiles"><function>MOFiles</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGINIT">
+ <term>MSGINIT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Path to <command>msginit(1)</command> program (found via
+<literal>Detect()</literal>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGINITCOM">
+ <term>MSGINITCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Complete command line to run <command>msginit(1)</command> program.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGINITCOMSTR">
+ <term>MSGINITCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+String to display when <command>msginit(1)</command> is invoked
+(default: <literal>''</literal>, which means ``print <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSGINITCOM"><envar>$MSGINITCOM</envar></link>'').
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGINITFLAGS">
+ <term>MSGINITFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+List of additional flags to <command>msginit(1)</command> (default:
+<literal>[]</literal>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_MSGINITLOCALE">
+ <term>_MSGINITLOCALE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Internal ``macro''. Computes locale (language) name based on target filename
+(default: <literal>'${TARGET.filebase}' </literal>).
+</para>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGMERGE">
+ <term>MSGMERGE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Absolute path to <command>msgmerge(1)</command> binary as found by
+<function>Detect()</function>.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgmerge"><literal>msgmerge</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGMERGECOM">
+ <term>MSGMERGECOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Complete command line to run <command>msgmerge(1)</command> command.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgmerge"><literal>msgmerge</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGMERGECOMSTR">
+ <term>MSGMERGECOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+String to be displayed when <command>msgmerge(1)</command> is invoked
+(default: <literal>''</literal>, which means ``print <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSGMERGECOM"><envar>$MSGMERGECOM</envar></link>'').
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgmerge"><literal>msgmerge</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSGMERGEFLAGS">
+ <term>MSGMERGEFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additional flags to <command>msgmerge(1)</command> command.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgmerge"><literal>msgmerge</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSSDK_DIR">
+ <term>MSSDK_DIR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory containing the Microsoft SDK
+(either Platform SDK or Windows SDK)
+to be used for compilation.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSSDK_VERSION">
+ <term>MSSDK_VERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The version string of the Microsoft SDK
+(either Platform SDK or Windows SDK)
+to be used for compilation.
+Supported versions include
+<literal>6.1</literal>,
+<literal>6.0A</literal>,
+<literal>6.0</literal>,
+<literal>2003R2</literal>
+and
+<literal>2003R1</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVC_BATCH">
+ <term>MSVC_BATCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When set to any true value,
+specifies that SCons should batch
+compilation of object files
+when calling the Microsoft Visual C/C++ compiler.
+All compilations of source files from the same source directory
+that generate target files in a same output directory
+and were configured in SCons using the same construction environment
+will be built in a single call to the compiler.
+Only source files that have changed since their
+object files were built will be passed to each compiler invocation
+(via the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CHANGED_SOURCES"><envar>$CHANGED_SOURCES</envar></link> construction variable).
+Any compilations where the object (target) file base name
+(minus the <filename>.obj</filename>)
+does not match the source file base name
+will be compiled separately.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVC_USE_SCRIPT">
+ <term>MSVC_USE_SCRIPT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Use a batch script to set up Microsoft Visual Studio compiler
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVC_USE_SCRIPT</envar> overrides <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVC_VERSION</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$TARGET_ARCH</envar>.
+If set to the name of a Visual Studio .bat file (e.g. vcvars.bat),
+SCons will run that bat file and extract the relevant variables from
+the result (typically %INCLUDE%, %LIB%, and %PATH%). Setting
+MSVC_USE_SCRIPT to None bypasses the Visual Studio autodetection
+entirely; use this if you are running SCons in a Visual Studio cmd
+window and importing the shell's environment variables.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVC_VERSION">
+ <term>MSVC_VERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets the preferred version of Microsoft Visual C/C++ to use.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVC_VERSION</envar> is not set, SCons will (by default) select the
+latest version of Visual C/C++ installed on your system. If the
+specified version isn't installed, tool initialization will fail.
+This variable must be passed as an argument to the Environment()
+constructor; setting it later has no effect. Set it to an unexpected
+value (e.g. "XXX") to see the valid values on your system.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS">
+ <term>MSVS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When the Microsoft Visual Studio tools are initialized, they set up
+this dictionary with the following keys:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>VERSION</envar>:
+the version of MSVS being used (can be set via
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSVS_VERSION"><envar>$MSVS_VERSION</envar></link>)
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>VERSIONS</envar>:
+the available versions of MSVS installed
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>VCINSTALLDIR</envar>:
+installed directory of Visual C++
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>VSINSTALLDIR</envar>:
+installed directory of Visual Studio
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>FRAMEWORKDIR</envar>:
+installed directory of the .NET framework
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>FRAMEWORKVERSIONS</envar>:
+list of installed versions of the .NET framework, sorted latest to oldest.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>FRAMEWORKVERSION</envar>:
+latest installed version of the .NET framework
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>FRAMEWORKSDKDIR</envar>:
+installed location of the .NET SDK.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>PLATFORMSDKDIR</envar>:
+installed location of the Platform SDK.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<envar>PLATFORMSDK_MODULES</envar>:
+dictionary of installed Platform SDK modules,
+where the dictionary keys are keywords for the various modules, and
+the values are 2-tuples where the first is the release date, and the
+second is the version number.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If a value isn't set, it wasn't available in the registry.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS_ARCH">
+ <term>MSVS_ARCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets the architecture for which the generated project(s) should build.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default value is <literal>x86</literal>.
+<literal>amd64</literal> is also supported
+by <application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> for some Visual Studio versions.
+Trying to set <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVS_ARCH</envar> to an architecture that's not
+supported for a given Visual Studio version
+will generate an error.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS_PROJECT_GUID">
+ <term>MSVS_PROJECT_GUID</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string
+placed in a generated Microsoft Visual Studio project file
+as the value of the
+<literal>ProjectGUID</literal>
+attribute.
+There is no default value. If not defined, a new GUID is generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS_SCC_AUX_PATH">
+ <term>MSVS_SCC_AUX_PATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path name
+placed in a generated Microsoft Visual Studio project file
+as the value of the
+<literal>SccAuxPath</literal>
+attribute
+if the
+<envar>MSVS_SCC_PROVIDER</envar>
+construction variable is also set.
+There is no default value.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS_SCC_CONNECTION_ROOT">
+ <term>MSVS_SCC_CONNECTION_ROOT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The root path of projects in your SCC workspace, i.e the path under which
+all project and solution files will be generated. It is used as a
+reference path from which the relative paths of the generated
+Microsoft Visual Studio project and solution files are computed.
+The relative project file path is placed as the value of the
+<literal>SccLocalPath</literal>
+attribute
+of the project file
+and as the values of the
+<literal>SccProjectFilePathRelativizedFromConnection[i]</literal>
+(where [i] ranges from 0 to the number of projects in the solution)
+attributes of the
+<literal>GlobalSection(SourceCodeControl)</literal>
+section of the Microsoft Visual Studio solution file.
+Similarly the relative solution file path is placed as the values of the
+<literal>SccLocalPath[i]</literal>
+(where [i] ranges from 0 to the number of projects in the solution)
+attributes of the
+<literal>GlobalSection(SourceCodeControl)</literal>
+section of the Microsoft Visual Studio solution file.
+This is used only
+if the
+<envar>MSVS_SCC_PROVIDER</envar>
+construction variable is also set.
+The default value is the current working directory.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS_SCC_PROJECT_NAME">
+ <term>MSVS_SCC_PROJECT_NAME</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The project name
+placed in a generated Microsoft Visual Studio project file
+as the value of the
+<literal>SccProjectName</literal>
+attribute
+if the
+<envar>MSVS_SCC_PROVIDER</envar>
+construction variable is also set.
+In this case the string is also placed in the
+<literal>SccProjectName0</literal>
+attribute of the
+<literal>GlobalSection(SourceCodeControl)</literal>
+section of the Microsoft Visual Studio solution file.
+There is no default value.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS_SCC_PROVIDER">
+ <term>MSVS_SCC_PROVIDER</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string
+placed in a generated Microsoft Visual Studio project file
+as the value of the
+<literal>SccProvider</literal>
+attribute.
+The string is also placed in the
+<literal>SccProvider0</literal>
+attribute of the
+<literal>GlobalSection(SourceCodeControl)</literal>
+section of the Microsoft Visual Studio solution file.
+There is no default value.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVS_VERSION">
+ <term>MSVS_VERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets the preferred version of Microsoft Visual Studio to use.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVS_VERSION</envar> is not set,
+<application xmlns="http://www.scons.org/dbxsd/v1.0">SCons</application> will (by default) select the latest version
+of Visual Studio installed on your system.
+So, if you have version 6 and version 7 (MSVS .NET) installed,
+it will prefer version 7.
+You can override this by
+specifying the
+<envar>MSVS_VERSION</envar>
+variable in the Environment initialization, setting it to the
+appropriate version ('6.0' or '7.0', for example).
+If the specified version isn't installed,
+tool initialization will fail.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is obsolete: use <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVC_VERSION</envar> instead. If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVS_VERSION</envar> is set and
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVC_VERSION</envar> is not, <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVC_VERSION</envar> will be set automatically to <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVS_VERSION</envar>.
+If both are set to different values, scons will raise an error.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSBUILDCOM">
+ <term>MSVSBUILDCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The build command line placed in
+a generated Microsoft Visual Studio project file.
+The default is to have Visual Studio invoke SCons with any specified
+build targets.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSCLEANCOM">
+ <term>MSVSCLEANCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The clean command line placed in
+a generated Microsoft Visual Studio project file.
+The default is to have Visual Studio invoke SCons with the -c option
+to remove any specified targets.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSENCODING">
+ <term>MSVSENCODING</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The encoding string placed in
+a generated Microsoft Visual Studio project file.
+The default is encoding
+<literal>Windows-1252</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSPROJECTCOM">
+ <term>MSVSPROJECTCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The action used to generate Microsoft Visual Studio project files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSPROJECTSUFFIX">
+ <term>MSVSPROJECTSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for Microsoft Visual Studio project (DSP) files.
+The default value is
+<filename>.vcproj</filename>
+when using Visual Studio version 7.x (.NET)
+or later version,
+and
+<filename>.dsp</filename>
+when using earlier versions of Visual Studio.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSREBUILDCOM">
+ <term>MSVSREBUILDCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The rebuild command line placed in
+a generated Microsoft Visual Studio project file.
+The default is to have Visual Studio invoke SCons with any specified
+rebuild targets.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSSCONS">
+ <term>MSVSSCONS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The SCons used in generated Microsoft Visual Studio project files.
+The default is the version of SCons being
+used to generate the project file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSSCONSCOM">
+ <term>MSVSSCONSCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default SCons command used in generated Microsoft Visual Studio
+project files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSSCONSCRIPT">
+ <term>MSVSSCONSCRIPT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The sconscript file
+(that is,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConstruct</filename>
+or
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename>
+file)
+that will be invoked by Visual Studio
+project files
+(through the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSVSSCONSCOM"><envar>$MSVSSCONSCOM</envar></link>
+variable).
+The default is the same sconscript file
+that contains the call to
+<function xmlns="http://www.scons.org/dbxsd/v1.0">MSVSProject</function>
+to build the project file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSSCONSFLAGS">
+ <term>MSVSSCONSFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The SCons flags used in generated Microsoft Visual Studio
+project files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSSOLUTIONCOM">
+ <term>MSVSSOLUTIONCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The action used to generate Microsoft Visual Studio solution files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MSVSSOLUTIONSUFFIX">
+ <term>MSVSSOLUTIONSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for Microsoft Visual Studio solution (DSW) files.
+The default value is
+<filename>.sln</filename>
+when using Visual Studio version 7.x (.NET),
+and
+<filename>.dsw</filename>
+when using earlier versions of Visual Studio.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MT">
+ <term>MT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The program used on Windows systems to embed manifests into DLLs and EXEs.
+See also <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-WINDOWS_EMBED_MANIFEST"><envar>$WINDOWS_EMBED_MANIFEST</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MTEXECOM">
+ <term>MTEXECOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Windows command line used to embed manifests into executables.
+See also <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MTSHLIBCOM"><envar>$MTSHLIBCOM</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MTFLAGS">
+ <term>MTFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Flags passed to the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MT"><envar>$MT</envar></link> manifest embedding program (Windows only).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MTSHLIBCOM">
+ <term>MTSHLIBCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Windows command line used to embed manifests into shared libraries (DLLs).
+See also <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MTEXECOM"><envar>$MTEXECOM</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MWCW_VERSION">
+ <term>MWCW_VERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The version number of the MetroWerks CodeWarrior C compiler
+to be used.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-MWCW_VERSIONS">
+ <term>MWCW_VERSIONS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A list of installed versions of the MetroWerks CodeWarrior C compiler
+on this system.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-NAME">
+ <term>NAME</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specfies the name of the project to package.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-no_import_lib">
+ <term>no_import_lib</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When set to non-zero,
+suppresses creation of a corresponding Windows static import lib by the
+<literal>SharedLibrary</literal>
+builder when used with
+MinGW, Microsoft Visual Studio or Metrowerks.
+This also suppresses creation
+of an export (.exp) file
+when using Microsoft Visual Studio.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-OBJPREFIX">
+ <term>OBJPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for (static) object file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-OBJSUFFIX">
+ <term>OBJSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for (static) object file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-P4">
+ <term>P4</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Perforce executable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-P4COM">
+ <term>P4COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to
+fetch source files from Perforce.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-P4COMSTR">
+ <term>P4COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when
+fetching a source file from Perforce.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-P4COM"><envar>$P4COM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-P4FLAGS">
+ <term>P4FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options that are passed to Perforce.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PACKAGEROOT">
+ <term>PACKAGEROOT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the directory where all files in resulting archive will be
+placed if applicable. The default value is "$NAME-$VERSION".
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PACKAGETYPE">
+ <term>PACKAGETYPE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Selects the package type to build. Currently these are available:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ * msi - Microsoft Installer
+ * rpm - Redhat Package Manger
+ * ipkg - Itsy Package Management System
+ * tarbz2 - compressed tar
+ * targz - compressed tar
+ * zip - zip file
+ * src_tarbz2 - compressed tar source
+ * src_targz - compressed tar source
+ * src_zip - zip file source
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This may be overridden with the "package_type" command line option.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PACKAGEVERSION">
+ <term>PACKAGEVERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The version of the package (not the underlying project).
+This is currently only used by the rpm packager
+and should reflect changes in the packaging,
+not the underlying project code itself.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PCH">
+ <term>PCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Microsoft Visual C++ precompiled header that will be used when compiling
+object files. This variable is ignored by tools other than Microsoft Visual C++.
+When this variable is
+defined SCons will add options to the compiler command line to
+cause it to use the precompiled header, and will also set up the
+dependencies for the PCH file.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env['PCH'] = 'StdAfx.pch'
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PCHCOM">
+ <term>PCHCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used by the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">PCH</function>
+builder to generated a precompiled header.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PCHCOMSTR">
+ <term>PCHCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when generating a precompiled header.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PCHCOM"><envar>$PCHCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PCHPDBFLAGS">
+ <term>PCHPDBFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A construction variable that, when expanded,
+adds the <literal>/yD</literal> flag to the command line
+only if the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$PDB</envar> construction variable is set.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PCHSTOP">
+ <term>PCHSTOP</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This variable specifies how much of a source file is precompiled. This
+variable is ignored by tools other than Microsoft Visual C++, or when
+the PCH variable is not being used. When this variable is define it
+must be a string that is the name of the header that
+is included at the end of the precompiled portion of the source files, or
+the empty string if the "#pragma hrdstop" construct is being used:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env['PCHSTOP'] = 'StdAfx.h'
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDB">
+ <term>PDB</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Microsoft Visual C++ PDB file that will store debugging information for
+object files, shared libraries, and programs. This variable is ignored by
+tools other than Microsoft Visual C++.
+When this variable is
+defined SCons will add options to the compiler and linker command line to
+cause them to generate external debugging information, and will also set up the
+dependencies for the PDB file.
+Example:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env['PDB'] = 'hello.pdb'
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Visual C++ compiler switch that SCons uses by default
+to generate PDB information is <option>/Z7</option>.
+This works correctly with parallel (<option>-j</option>) builds
+because it embeds the debug information in the intermediate object files,
+as opposed to sharing a single PDB file between multiple object files.
+This is also the only way to get debug information
+embedded into a static library.
+Using the <option>/Zi</option> instead may yield improved
+link-time performance,
+although parallel builds will no longer work.
+You can generate PDB files with the <option>/Zi</option>
+switch by overriding the default <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CCPDBFLAGS"><envar>$CCPDBFLAGS</envar></link> variable;
+see the entry for that variable for specific examples.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFCOM">
+ <term>PDFCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A deprecated synonym for <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-DVIPDFCOM"><envar>$DVIPDFCOM</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFLATEX">
+ <term>PDFLATEX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <application xmlns="http://www.scons.org/dbxsd/v1.0">pdflatex</application> utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFLATEXCOM">
+ <term>PDFLATEXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdflatex</application> utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFLATEXCOMSTR">
+ <term>PDFLATEXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when calling the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdflatex</application> utility.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PDFLATEXCOM"><envar>$PDFLATEXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(PDFLATEX;COMSTR = "Building $TARGET from LaTeX input $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFLATEXFLAGS">
+ <term>PDFLATEXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdflatex</application> utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFPREFIX">
+ <term>PDFPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for PDF file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFSUFFIX">
+ <term>PDFSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for PDF file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFTEX">
+ <term>PDFTEX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <application xmlns="http://www.scons.org/dbxsd/v1.0">pdftex</application> utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFTEXCOM">
+ <term>PDFTEXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdftex</application> utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFTEXCOMSTR">
+ <term>PDFTEXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when calling the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdftex</application> utility.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PDFTEXCOM"><envar>$PDFTEXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(PDFTEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PDFTEXFLAGS">
+ <term>PDFTEXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the <application xmlns="http://www.scons.org/dbxsd/v1.0">pdftex</application> utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PKGCHK">
+ <term>PKGCHK</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Solaris systems,
+the package-checking program that will
+be used (along with <envar xmlns="http://www.scons.org/dbxsd/v1.0">$PKGINFO</envar>)
+to look for installed versions of
+the Sun PRO C++ compiler.
+The default is
+<filename>/usr/sbin/pgkchk</filename>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PKGINFO">
+ <term>PKGINFO</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+On Solaris systems,
+the package information program that will
+be used (along with <envar xmlns="http://www.scons.org/dbxsd/v1.0">$PKGCHK</envar>)
+to look for installed versions of
+the Sun PRO C++ compiler.
+The default is
+<filename>pkginfo</filename>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PLATFORM">
+ <term>PLATFORM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The name of the platform used to create the Environment. If no platform is
+specified when the Environment is created,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+autodetects the platform.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(tools = [])
+if env['PLATFORM'] == 'cygwin':
+ Tool('mingw')(env)
+else:
+ Tool('msvc')(env)
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-POAUTOINIT">
+ <term>POAUTOINIT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <envar xmlns="http://www.scons.org/dbxsd/v1.0">$POAUTOINIT</envar> variable, if set to <literal>True</literal> (on non-zero
+numeric value), let the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool to automatically initialize
+<emphasis>missing</emphasis> <literal>PO</literal> files with
+<command>msginit(1)</command>. This applies to both,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builders (and others that use any of
+them).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-POCREATE_ALIAS">
+ <term>POCREATE_ALIAS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Common alias for all <literal>PO</literal> files created with <function xmlns="http://www.scons.org/dbxsd/v1.0">POInit</function>
+builder (default: <literal>'po-create'</literal>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-POSUFFIX">
+ <term>POSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Suffix used for <literal>PO</literal> files (default: <literal>'.po'</literal>)
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msginit"><literal>msginit</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-POTDOMAIN">
+ <term>POTDOMAIN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The <envar xmlns="http://www.scons.org/dbxsd/v1.0">$POTDOMAIN</envar> defines default domain, used to generate
+<literal>POT</literal> filename as <filename><envar xmlns="http://www.scons.org/dbxsd/v1.0">$POTDOMAIN</envar>.pot</filename> when
+no <literal>POT</literal> file name is provided by the user. This applies to
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POInit"><function>POInit</function></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builders (and
+builders, that use them, e.g. <function xmlns="http://www.scons.org/dbxsd/v1.0">Translate</function>). Normally (if <envar xmlns="http://www.scons.org/dbxsd/v1.0">$POTDOMAIN</envar> is
+not defined), the builders use <filename>messages.pot</filename> as default
+<literal>POT</literal> file name.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-POTSUFFIX">
+ <term>POTSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Suffix used for PO Template files (default: <literal>'.pot'</literal>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-POTUPDATE_ALIAS">
+ <term>POTUPDATE_ALIAS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Name of the common phony target for all PO Templates created with
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> (default: <literal>'pot-update'</literal>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-POUPDATE_ALIAS">
+ <term>POUPDATE_ALIAS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Common alias for all <literal>PO</literal> files being defined with
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builder (default: <literal>'po-update'</literal>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-msgmerge"><literal>msgmerge</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POUpdate"><function>POUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PRINT_CMD_LINE_FUNC">
+ <term>PRINT_CMD_LINE_FUNC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A Python function used to print the command lines as they are executed
+(assuming command printing is not disabled by the
+<option>-q</option>
+or
+<option>-s</option>
+options or their equivalents).
+The function should take four arguments:
+<varname>s</varname>,
+the command being executed (a string),
+<varname>target</varname>,
+the target being built (file node, list, or string name(s)),
+<varname>source</varname>,
+the source(s) used (file node, list, or string name(s)), and
+<varname>env</varname>,
+the environment being used.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The function must do the printing itself. The default implementation,
+used if this variable is not set or is None, is:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def print_cmd_line(s, target, source, env):
+ sys.stdout.write(s + "\n")
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Here's an example of a more interesting function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def print_cmd_line(s, target, source, env):
+ sys.stdout.write("Building %s -&gt; %s...\n" %
+ (' and '.join([str(x) for x in source]),
+ ' and '.join([str(x) for x in target])))
+env=Environment(PRINT_CMD_LINE_FUNC=print_cmd_line)
+env.Program('foo', 'foo.c')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This just prints "Building <varname>targetname</varname> from <varname>sourcename</varname>..." instead
+of the actual commands.
+Such a function could also log the actual commands to a log file,
+for example.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PROGEMITTER">
+ <term>PROGEMITTER</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+TODO
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PROGPREFIX">
+ <term>PROGPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for executable file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PROGSUFFIX">
+ <term>PROGSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for executable file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PSCOM">
+ <term>PSCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to convert TeX DVI files into a PostScript file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PSCOMSTR">
+ <term>PSCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a TeX DVI file
+is converted into a PostScript file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PSCOM"><envar>$PSCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PSPREFIX">
+ <term>PSPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for PostScript file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-PSSUFFIX">
+ <term>PSSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for PostScript file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_AUTOSCAN">
+ <term>QT_AUTOSCAN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Turn off scanning for mocable files. Use the Moc Builder to explicitly
+specify files to run moc on.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_BINPATH">
+ <term>QT_BINPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path where the qt binaries are installed.
+The default value is '<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QTDIR"><envar>$QTDIR</envar></link>/bin'.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_CPPPATH">
+ <term>QT_CPPPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path where the qt header files are installed.
+The default value is '<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QTDIR"><envar>$QTDIR</envar></link>/include'.
+Note: If you set this variable to None,
+the tool won't change the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPPATH"><envar>$CPPPATH</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_DEBUG">
+ <term>QT_DEBUG</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Prints lots of debugging information while scanning for moc files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_LIB">
+ <term>QT_LIB</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is 'qt'. You may want to set this to 'qt-mt'. Note: If you set
+this variable to None, the tool won't change the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBS"><envar>$LIBS</envar></link> variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_LIBPATH">
+ <term>QT_LIBPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The path where the qt libraries are installed.
+The default value is '<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QTDIR"><envar>$QTDIR</envar></link>/lib'.
+Note: If you set this variable to None,
+the tool won't change the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBPATH"><envar>$LIBPATH</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOC">
+ <term>QT_MOC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QT_BINPATH"><envar>$QT_BINPATH</envar></link>/moc'.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCCXXPREFIX">
+ <term>QT_MOCCXXPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is ''. Prefix for moc output files, when source is a cxx file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCCXXSUFFIX">
+ <term>QT_MOCCXXSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '.moc'. Suffix for moc output files, when source is a cxx
+file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCFROMCXXCOM">
+ <term>QT_MOCFROMCXXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Command to generate a moc file from a cpp file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCFROMCXXCOMSTR">
+ <term>QT_MOCFROMCXXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when generating a moc file from a cpp file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QT_MOCFROMCXXCOM"><envar>$QT_MOCFROMCXXCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCFROMCXXFLAGS">
+ <term>QT_MOCFROMCXXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '-i'. These flags are passed to moc, when moccing a
+C++ file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCFROMHCOM">
+ <term>QT_MOCFROMHCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Command to generate a moc file from a header.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCFROMHCOMSTR">
+ <term>QT_MOCFROMHCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when generating a moc file from a cpp file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QT_MOCFROMHCOM"><envar>$QT_MOCFROMHCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCFROMHFLAGS">
+ <term>QT_MOCFROMHFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is ''. These flags are passed to moc, when moccing a header
+file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCHPREFIX">
+ <term>QT_MOCHPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is 'moc_'. Prefix for moc output files, when source is a header.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_MOCHSUFFIX">
+ <term>QT_MOCHSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXFILESUFFIX"><envar>$CXXFILESUFFIX</envar></link>'. Suffix for moc output files, when source is
+a header.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UIC">
+ <term>QT_UIC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QT_BINPATH"><envar>$QT_BINPATH</envar></link>/uic'.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICCOM">
+ <term>QT_UICCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Command to generate header files from .ui files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICCOMSTR">
+ <term>QT_UICCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when generating header files from .ui files.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-QT_UICCOM"><envar>$QT_UICCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICDECLFLAGS">
+ <term>QT_UICDECLFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is ''. These flags are passed to uic, when creating a a h
+file from a .ui file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICDECLPREFIX">
+ <term>QT_UICDECLPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is ''. Prefix for uic generated header files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICDECLSUFFIX">
+ <term>QT_UICDECLSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '.h'. Suffix for uic generated header files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICIMPLFLAGS">
+ <term>QT_UICIMPLFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is ''. These flags are passed to uic, when creating a cxx
+file from a .ui file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICIMPLPREFIX">
+ <term>QT_UICIMPLPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is 'uic_'. Prefix for uic generated implementation files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UICIMPLSUFFIX">
+ <term>QT_UICIMPLSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXFILESUFFIX"><envar>$CXXFILESUFFIX</envar></link>'. Suffix for uic generated implementation
+files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QT_UISUFFIX">
+ <term>QT_UISUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Default value is '.ui'. Suffix of designer input files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-QTDIR">
+ <term>QTDIR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The qt tool tries to take this from os.environ.
+It also initializes all QT_*
+construction variables listed below.
+(Note that all paths are constructed
+with python's os.path.join() method,
+but are listed here with the '/' separator
+for easier reading.)
+In addition, the construction environment
+variables <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPPATH"><envar>$CPPPATH</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBPATH"><envar>$LIBPATH</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBS"><envar>$LIBS</envar></link> may be modified
+and the variables
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-PROGEMITTER"><envar>$PROGEMITTER</envar></link>, <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBEMITTER"><envar>$SHLIBEMITTER</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBEMITTER"><envar>$LIBEMITTER</envar></link>
+are modified. Because the build-performance is affected when using this tool,
+you have to explicitly specify it at Environment creation:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+Environment(tools=['default','qt'])
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The qt tool supports the following operations:
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis role="strong">Automatic moc file generation from header files.</emphasis>
+You do not have to specify moc files explicitly, the tool does it for you.
+However, there are a few preconditions to do so: Your header file must have
+the same filebase as your implementation file and must stay in the same
+directory. It must have one of the suffixes .h, .hpp, .H, .hxx, .hh. You
+can turn off automatic moc file generation by setting QT_AUTOSCAN to 0.
+See also the corresponding
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Moc</function>()
+builder method.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis role="strong">Automatic moc file generation from cxx files.</emphasis>
+As stated in the qt documentation, include the moc file at the end of
+the cxx file. Note that you have to include the file, which is generated
+by the transformation ${QT_MOCCXXPREFIX}&lt;basename&gt;${QT_MOCCXXSUFFIX}, by default
+&lt;basename&gt;.moc. A warning is generated after building the moc file, if you
+do not include the correct file. If you are using VariantDir, you may
+need to specify duplicate=1. You can turn off automatic moc file generation
+by setting QT_AUTOSCAN to 0. See also the corresponding
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Moc</function>
+builder method.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<emphasis role="strong">Automatic handling of .ui files.</emphasis>
+The implementation files generated from .ui files are handled much the same
+as yacc or lex files. Each .ui file given as a source of Program, Library or
+SharedLibrary will generate three files, the declaration file, the
+implementation file and a moc file. Because there are also generated headers,
+you may need to specify duplicate=1 in calls to VariantDir.
+See also the corresponding
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Uic</function>
+builder method.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RANLIB">
+ <term>RANLIB</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The archive indexer.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RANLIBCOM">
+ <term>RANLIBCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to index a static library archive.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RANLIBCOMSTR">
+ <term>RANLIBCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a static library archive is indexed.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RANLIBCOM"><envar>$RANLIBCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(RANLIBCOMSTR = "Indexing $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RANLIBFLAGS">
+ <term>RANLIBFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the archive indexer.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RC">
+ <term>RC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The resource compiler used to build
+a Microsoft Visual C++ resource file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCCOM">
+ <term>RCCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to build
+a Microsoft Visual C++ resource file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCCOMSTR">
+ <term>RCCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when invoking the resource compiler
+to build a Microsoft Visual C++ resource file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RCCOM"><envar>$RCCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCFLAGS">
+ <term>RCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The flags passed to the resource compiler by the RES builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCINCFLAGS">
+ <term>RCINCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the command-line options
+for specifying directories to be searched
+by the resource compiler.
+The value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RCINCFLAGS</envar> is created
+by appending <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RCINCPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RCINCSUFFIX</envar>
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCINCPREFIX">
+ <term>RCINCPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix (flag) used to specify an include directory
+on the resource compiler command line.
+This will be appended to the beginning of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RCINCFLAGS</envar> variable is expanded.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCINCSUFFIX">
+ <term>RCINCSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify an include directory
+on the resource compiler command line.
+This will be appended to the end of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RCINCFLAGS</envar> variable is expanded.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCS">
+ <term>RCS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The RCS executable.
+Note that this variable is not actually used
+for the command to fetch source files from RCS;
+see the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RCS_CO"><envar>$RCS_CO</envar></link>
+construction variable, below.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCS_CO">
+ <term>RCS_CO</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The RCS "checkout" executable,
+used to fetch source files from RCS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCS_COCOM">
+ <term>RCS_COCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to
+fetch (checkout) source files from RCS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCS_COCOMSTR">
+ <term>RCS_COCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when fetching
+a source file from RCS.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RCS_COCOM"><envar>$RCS_COCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RCS_COFLAGS">
+ <term>RCS_COFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RCS_CO"><envar>$RCS_CO</envar></link> command.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RDirs">
+ <term>RDirs</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A function that converts a string into a list of Dir instances by
+searching the repositories.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-REGSVR">
+ <term>REGSVR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The program used on Windows systems
+to register a newly-built DLL library
+whenever the <function xmlns="http://www.scons.org/dbxsd/v1.0">SharedLibrary</function> builder
+is passed a keyword argument of <literal>register=1</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-REGSVRCOM">
+ <term>REGSVRCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used on Windows systems
+to register a newly-built DLL library
+whenever the <function xmlns="http://www.scons.org/dbxsd/v1.0">SharedLibrary</function> builder
+is passed a keyword argument of <literal>register=1</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-REGSVRCOMSTR">
+ <term>REGSVRCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when registering a newly-built DLL file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-REGSVRCOM"><envar>$REGSVRCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-REGSVRFLAGS">
+ <term>REGSVRFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Flags passed to the DLL registration program
+on Windows systems when a newly-built DLL library is registered.
+By default,
+this includes the <option>/s</option>
+that prevents dialog boxes from popping up
+and requiring user attention.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RMIC">
+ <term>RMIC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Java RMI stub compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RMICCOM">
+ <term>RMICCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile stub
+and skeleton class files
+from Java classes that contain RMI implementations.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RMICFLAGS"><envar>$RMICFLAGS</envar></link> construction variable
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RMICCOMSTR">
+ <term>RMICCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when compiling
+stub and skeleton class files
+from Java classes that contain RMI implementations.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RMICCOM"><envar>$RMICCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(RMICCOMSTR = "Generating stub/skeleton class files $TARGETS from $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RMICFLAGS">
+ <term>RMICFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the Java RMI stub compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_RPATH">
+ <term>_RPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the rpath flags to be used when linking
+a program with shared libraries.
+The value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_RPATH</envar> is created
+by appending <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RPATHPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RPATHSUFFIX</envar>
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RPATH</envar>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPATH">
+ <term>RPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A list of paths to search for shared libraries when running programs.
+Currently only used in the GNU (gnulink),
+IRIX (sgilink) and Sun (sunlink) linkers.
+Ignored on platforms and toolchains that don't support it.
+Note that the paths added to RPATH
+are not transformed by
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+in any way: if you want an absolute
+path, you must make it absolute yourself.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPATHPREFIX">
+ <term>RPATHPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used to specify a directory to be searched for
+shared libraries when running programs.
+This will be appended to the beginning of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_RPATH</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPATHSUFFIX">
+ <term>RPATHSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify a directory to be searched for
+shared libraries when running programs.
+This will be appended to the end of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$RPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_RPATH</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPCGEN">
+ <term>RPCGEN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The RPC protocol compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPCGENCLIENTFLAGS">
+ <term>RPCGENCLIENTFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options passed to the RPC protocol compiler
+when generating client side stubs.
+These are in addition to any flags specified in the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RPCGENFLAGS"><envar>$RPCGENFLAGS</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPCGENFLAGS">
+ <term>RPCGENFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the RPC protocol compiler.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPCGENHEADERFLAGS">
+ <term>RPCGENHEADERFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options passed to the RPC protocol compiler
+when generating a header file.
+These are in addition to any flags specified in the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RPCGENFLAGS"><envar>$RPCGENFLAGS</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPCGENSERVICEFLAGS">
+ <term>RPCGENSERVICEFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options passed to the RPC protocol compiler
+when generating server side stubs.
+These are in addition to any flags specified in the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RPCGENFLAGS"><envar>$RPCGENFLAGS</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-RPCGENXDRFLAGS">
+ <term>RPCGENXDRFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options passed to the RPC protocol compiler
+when generating XDR routines.
+These are in addition to any flags specified in the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-RPCGENFLAGS"><envar>$RPCGENFLAGS</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SCANNERS">
+ <term>SCANNERS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A list of the available implicit dependency scanners.
+New file scanners may be added by
+appending to this list,
+although the more flexible approach
+is to associate scanners
+with a specific Builder.
+See the sections "Builder Objects"
+and "Scanner Objects,"
+below, for more information.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SCCS">
+ <term>SCCS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The SCCS executable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SCCSCOM">
+ <term>SCCSCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to
+fetch source files from SCCS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SCCSCOMSTR">
+ <term>SCCSCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when fetching
+a source file from a CVS repository.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SCCSCOM"><envar>$SCCSCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SCCSFLAGS">
+ <term>SCCSFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options that are passed to SCCS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SCCSGETFLAGS">
+ <term>SCCSGETFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed specifically to the SCCS "get" subcommand.
+This can be set, for example, to
+<option>-e</option>
+to check out editable files from SCCS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SCONS_HOME">
+ <term>SCONS_HOME</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The (optional) path to the SCons library directory,
+initialized from the external environment.
+If set, this is used to construct a shorter and more
+efficient search path in the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MSVSSCONS"><envar>$MSVSSCONS</envar></link>
+command line executed
+from Microsoft Visual Studio project files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCC">
+ <term>SHCC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The C compiler used for generating shared-library objects.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCCCOM">
+ <term>SHCCCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a C source file
+to a shared-library object file.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHCFLAGS"><envar>$SHCFLAGS</envar></link>,
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHCCFLAGS"><envar>$SHCCFLAGS</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCCCOMSTR">
+ <term>SHCCCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a C source file
+is compiled to a shared object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHCCCOM"><envar>$SHCCCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(SHCCCOMSTR = "Compiling shared object $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCCFLAGS">
+ <term>SHCCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the C and C++ compilers
+to generate shared-library objects.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCFLAGS">
+ <term>SHCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the C compiler (only; not C++)
+to generate shared-library objects.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCXX">
+ <term>SHCXX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The C++ compiler used for generating shared-library objects.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCXXCOM">
+ <term>SHCXXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a C++ source file
+to a shared-library object file.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHCXXFLAGS"><envar>$SHCXXFLAGS</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCXXCOMSTR">
+ <term>SHCXXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a C++ source file
+is compiled to a shared object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHCXXCOM"><envar>$SHCXXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(SHCXXCOMSTR = "Compiling shared object $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHCXXFLAGS">
+ <term>SHCXXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the C++ compiler
+to generate shared-library objects.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHELL">
+ <term>SHELL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A string naming the shell program that will be passed to the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$SPAWN</envar>
+function.
+See the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$SPAWN</envar>
+construction variable for more information.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF03">
+ <term>SHF03</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 03 compiler used for generating shared-library objects.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRAN"><envar>$SHFORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF03"><envar>$SHF03</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 03 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF03COM">
+ <term>SHF03COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 03 source file
+to a shared-library object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF03COM"><envar>$SHF03COM</envar></link> if you need to use a specific
+command line for Fortran 03 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF03COMSTR">
+ <term>SHF03COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 03 source file
+is compiled to a shared-library object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF03COM"><envar>$SHF03COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF03FLAGS">
+ <term>SHF03FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the Fortran 03 compiler
+to generated shared-library objects.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF03FLAGS"><envar>$SHF03FLAGS</envar></link> if you need to define specific
+user options for Fortran 03 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANFLAGS"><envar>$SHFORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF03PPCOM">
+ <term>SHF03PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 03 source file to a
+shared-library object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF03FLAGS"><envar>$SHF03FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF03PPCOM"><envar>$SHF03PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 03 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF03PPCOMSTR">
+ <term>SHF03PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 03 source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF03PPCOM"><envar>$SHF03PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF77">
+ <term>SHF77</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 77 compiler used for generating shared-library objects.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRAN"><envar>$SHFORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77"><envar>$SHF77</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 77 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF77COM">
+ <term>SHF77COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 77 source file
+to a shared-library object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77COM"><envar>$SHF77COM</envar></link> if you need to use a specific
+command line for Fortran 77 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF77COMSTR">
+ <term>SHF77COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 77 source file
+is compiled to a shared-library object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77COM"><envar>$SHF77COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF77FLAGS">
+ <term>SHF77FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the Fortran 77 compiler
+to generated shared-library objects.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77FLAGS"><envar>$SHF77FLAGS</envar></link> if you need to define specific
+user options for Fortran 77 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANFLAGS"><envar>$SHFORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF77PPCOM">
+ <term>SHF77PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 77 source file to a
+shared-library object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77FLAGS"><envar>$SHF77FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77PPCOM"><envar>$SHF77PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 77 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF77PPCOMSTR">
+ <term>SHF77PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 77 source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF77PPCOM"><envar>$SHF77PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF90">
+ <term>SHF90</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 90 compiler used for generating shared-library objects.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRAN"><envar>$SHFORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF90"><envar>$SHF90</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 90 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF90COM">
+ <term>SHF90COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 90 source file
+to a shared-library object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF90COM"><envar>$SHF90COM</envar></link> if you need to use a specific
+command line for Fortran 90 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF90COMSTR">
+ <term>SHF90COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 90 source file
+is compiled to a shared-library object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF90COM"><envar>$SHF90COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF90FLAGS">
+ <term>SHF90FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the Fortran 90 compiler
+to generated shared-library objects.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF90FLAGS"><envar>$SHF90FLAGS</envar></link> if you need to define specific
+user options for Fortran 90 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANFLAGS"><envar>$SHFORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF90PPCOM">
+ <term>SHF90PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 90 source file to a
+shared-library object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF90FLAGS"><envar>$SHF90FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF90PPCOM"><envar>$SHF90PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 90 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF90PPCOMSTR">
+ <term>SHF90PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 90 source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF90PPCOM"><envar>$SHF90PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF95">
+ <term>SHF95</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The Fortran 95 compiler used for generating shared-library objects.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRAN"><envar>$SHFORTRAN</envar></link> variable,
+which specifies the default Fortran compiler
+for all Fortran versions.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF95"><envar>$SHF95</envar></link> if you need to use a specific compiler
+or compiler version for Fortran 95 files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF95COM">
+ <term>SHF95COM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 95 source file
+to a shared-library object file.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF95COM"><envar>$SHF95COM</envar></link> if you need to use a specific
+command line for Fortran 95 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link> variable,
+which specifies the default command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF95COMSTR">
+ <term>SHF95COMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 95 source file
+is compiled to a shared-library object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF95COM"><envar>$SHF95COM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF95FLAGS">
+ <term>SHF95FLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the Fortran 95 compiler
+to generated shared-library objects.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF95FLAGS"><envar>$SHF95FLAGS</envar></link> if you need to define specific
+user options for Fortran 95 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANFLAGS"><envar>$SHFORTRANFLAGS</envar></link> variable,
+which specifies the user-specified options
+passed to the default Fortran compiler
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF95PPCOM">
+ <term>SHF95PPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran 95 source file to a
+shared-library object file
+after first running the file through the C preprocessor.
+Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF95FLAGS"><envar>$SHF95FLAGS</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+You only need to set <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF95PPCOM"><envar>$SHF95PPCOM</envar></link> if you need to use a specific
+C-preprocessor command line for Fortran 95 files.
+You should normally set the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link> variable,
+which specifies the default C-preprocessor command line
+for all Fortran versions.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHF95PPCOMSTR">
+ <term>SHF95PPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran 95 source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHF95PPCOM"><envar>$SHF95PPCOM</envar></link> or <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHFORTRAN">
+ <term>SHFORTRAN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The default Fortran compiler used for generating shared-library objects.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHFORTRANCOM">
+ <term>SHFORTRANCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran source file
+to a shared-library object file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHFORTRANCOMSTR">
+ <term>SHFORTRANCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran source file
+is compiled to a shared-library object file.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANCOM"><envar>$SHFORTRANCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHFORTRANFLAGS">
+ <term>SHFORTRANFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Options that are passed to the Fortran compiler
+to generate shared-library objects.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHFORTRANPPCOM">
+ <term>SHFORTRANPPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to compile a Fortran source file to a
+shared-library object file
+after first running the file through the C preprocessor.
+Any options specified
+in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANFLAGS"><envar>$SHFORTRANFLAGS</envar></link> and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CPPFLAGS"><envar>$CPPFLAGS</envar></link> construction variables
+are included on this command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHFORTRANPPCOMSTR">
+ <term>SHFORTRANPPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when a Fortran source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHFORTRANPPCOM"><envar>$SHFORTRANPPCOM</envar></link>
+(the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLIBEMITTER">
+ <term>SHLIBEMITTER</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+TODO
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLIBPREFIX">
+ <term>SHLIBPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for shared library file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLIBSUFFIX">
+ <term>SHLIBSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for shared library file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLIBVERSION">
+ <term>SHLIBVERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When this construction variable is defined, a versioned shared library
+is created. This modifies the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLINKFLAGS"><envar>$SHLINKFLAGS</envar></link> as required, adds
+the version number to the library name, and creates the symlinks that
+are needed. <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBVERSION"><envar>$SHLIBVERSION</envar></link> needs to be of the form X.Y.Z,
+where X and Y are numbers, and Z is a number but can also contain
+letters to designate alpha, beta, or release candidate patch levels.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLINK">
+ <term>SHLINK</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The linker for programs that use shared libraries.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLINKCOM">
+ <term>SHLINKCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to link programs using shared libraries.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLINKCOMSTR">
+ <term>SHLINKCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when programs using shared libraries are linked.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLINKCOM"><envar>$SHLINKCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(SHLINKCOMSTR = "Linking shared $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHLINKFLAGS">
+ <term>SHLINKFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General user options passed to the linker for programs using shared libraries.
+Note that this variable should
+<emphasis>not</emphasis>
+contain
+<option>-l</option>
+(or similar) options for linking with the libraries listed in <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBS"><envar>$LIBS</envar></link>,
+nor
+<option>-L</option>
+(or similar) include search path options
+that scons generates automatically from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LIBPATH"><envar>$LIBPATH</envar></link>.
+See
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_LIBFLAGS"><envar>$_LIBFLAGS</envar></link>
+above,
+for the variable that expands to library-link options,
+and
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_LIBDIRFLAGS"><envar>$_LIBDIRFLAGS</envar></link>
+above,
+for the variable that expands to library search path options.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHOBJPREFIX">
+ <term>SHOBJPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for shared object file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHOBJSUFFIX">
+ <term>SHOBJSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for shared object file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SOURCE">
+ <term>SOURCE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SOURCE_URL">
+ <term>SOURCE_URL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The URL
+(web address)
+of the location from which the project was retrieved.
+This is used to fill in the
+<literal>Source:</literal>
+field in the controlling information for Ipkg and RPM packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SOURCES">
+ <term>SOURCES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SPAWN">
+ <term>SPAWN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A command interpreter function that will be called to execute command line
+strings. The function must expect the following arguments:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+def spawn(shell, escape, cmd, args, env):
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+<varname>sh</varname>
+is a string naming the shell program to use.
+<varname>escape</varname>
+is a function that can be called to escape shell special characters in
+the command line.
+<varname>cmd</varname>
+is the path to the command to be executed.
+<varname>args</varname>
+is the arguments to the command.
+<varname>env</varname>
+is a dictionary of the environment variables
+in which the command should be executed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SUBST_DICT">
+ <term>SUBST_DICT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The dictionary used by the <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> or <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> builders
+for substitution values.
+It can be anything acceptable to the dict() constructor,
+so in addition to a dictionary,
+lists of tuples are also acceptable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SUBSTFILEPREFIX">
+ <term>SUBSTFILEPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> file names,
+the null string by default.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SUBSTFILESUFFIX">
+ <term>SUBSTFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> file names,
+the null string by default.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SUMMARY">
+ <term>SUMMARY</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A short summary of what the project is about.
+This is used to fill in the
+<literal>Summary:</literal>
+field in the controlling information for Ipkg and RPM packages,
+and as the
+<literal>Description:</literal>
+field in MSI packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIG">
+ <term>SWIG</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The scripting language wrapper and interface generator.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGCFILESUFFIX">
+ <term>SWIGCFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix that will be used for intermediate C
+source files generated by
+the scripting language wrapper and interface generator.
+The default value is
+<filename>_wrap</filename><link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CFILESUFFIX"><envar>$CFILESUFFIX</envar></link>.
+By default, this value is used whenever the
+<option>-c++</option>
+option is
+<emphasis>not</emphasis>
+specified as part of the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SWIGFLAGS"><envar>$SWIGFLAGS</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGCOM">
+ <term>SWIGCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call
+the scripting language wrapper and interface generator.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGCOMSTR">
+ <term>SWIGCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when calling
+the scripting language wrapper and interface generator.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SWIGCOM"><envar>$SWIGCOM</envar></link> (the command line) is displayed.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGCXXFILESUFFIX">
+ <term>SWIGCXXFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix that will be used for intermediate C++
+source files generated by
+the scripting language wrapper and interface generator.
+The default value is
+<filename>_wrap</filename><link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CFILESUFFIX"><envar>$CFILESUFFIX</envar></link>.
+By default, this value is used whenever the
+<filename>-c++</filename>
+option is specified as part of the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SWIGFLAGS"><envar>$SWIGFLAGS</envar></link>
+construction variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGDIRECTORSUFFIX">
+ <term>SWIGDIRECTORSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix that will be used for intermediate C++ header
+files generated by the scripting language wrapper and interface generator.
+These are only generated for C++ code when the SWIG 'directors' feature is
+turned on.
+The default value is
+<filename>_wrap.h</filename>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGFLAGS">
+ <term>SWIGFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to
+the scripting language wrapper and interface generator.
+This is where you should set
+<option>-python</option>,
+<option>-perl5</option>,
+<option>-tcl</option>,
+or whatever other options you want to specify to SWIG.
+If you set the
+<option>-c++</option>
+option in this variable,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will, by default,
+generate a C++ intermediate source file
+with the extension that is specified as the
+<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-CXXFILESUFFIX"><envar>$CXXFILESUFFIX</envar></link>
+variable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_SWIGINCFLAGS">
+ <term>_SWIGINCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An automatically-generated construction variable
+containing the SWIG command-line options
+for specifying directories to be searched for included files.
+The value of <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_SWIGINCFLAGS</envar> is created
+by appending <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGINCPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGINCSUFFIX</envar>
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGPATH</envar>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGINCPREFIX">
+ <term>SWIGINCPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used to specify an include directory on the SWIG command line.
+This will be appended to the beginning of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_SWIGINCFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGINCSUFFIX">
+ <term>SWIGINCSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used to specify an include directory on the SWIG command line.
+This will be appended to the end of each directory
+in the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGPATH</envar> construction variable
+when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_SWIGINCFLAGS</envar> variable is automatically generated.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGOUTDIR">
+ <term>SWIGOUTDIR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Specifies the output directory in which
+the scripting language wrapper and interface generator
+should place generated language-specific files.
+This will be used by SCons to identify
+the files that will be generated by the <application xmlns="http://www.scons.org/dbxsd/v1.0">swig</application> call,
+and translated into the
+<literal>swig -outdir</literal> option on the command line.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGPATH">
+ <term>SWIGPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The list of directories that the scripting language wrapper
+and interface generate will search for included files.
+The SWIG implicit dependency scanner will search these
+directories for include files.
+The default is to use the same path
+specified as <envar xmlns="http://www.scons.org/dbxsd/v1.0">$CPPPATH</envar>.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Don't explicitly put include directory
+arguments in SWIGFLAGS;
+the result will be non-portable
+and the directories will not be searched by the dependency scanner.
+Note: directory names in SWIGPATH will be looked-up relative to the SConscript
+directory when they are used in a command.
+To force
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+to look-up a directory relative to the root of the source tree use #:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(SWIGPATH='#/include')
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory look-up can also be forced using the
+<function xmlns="http://www.scons.org/dbxsd/v1.0">Dir</function>()
+function:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+include = Dir('include')
+env = Environment(SWIGPATH=include)
+</example_commands>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The directory list will be added to command lines
+through the automatically-generated
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$_SWIGINCFLAGS</envar>
+construction variable,
+which is constructed by
+appending the values of the
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGINCPREFIX</envar> and <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGINCSUFFIX</envar>
+construction variables
+to the beginning and end
+of each directory in <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SWIGPATH</envar>.
+Any command lines you define that need
+the SWIGPATH directory list should
+include <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_SWIGINCFLAGS</envar>:
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(SWIGCOM="my_swig -o $TARGET $_SWIGINCFLAGS $SORUCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SWIGVERSION">
+ <term>SWIGVERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The version number of the SWIG tool.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TAR">
+ <term>TAR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The tar archiver.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARCOM">
+ <term>TARCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the tar archiver.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARCOMSTR">
+ <term>TARCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when archiving files
+using the tar archiver.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-TARCOM"><envar>$TARCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(TARCOMSTR = "Archiving $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARFLAGS">
+ <term>TARFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the tar archiver.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARGET">
+ <term>TARGET</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARGET_ARCH">
+ <term>TARGET_ARCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets the target architecture for Visual Studio compiler (i.e. the arch
+of the binaries generated by the compiler). If not set, default to
+<envar xmlns="http://www.scons.org/dbxsd/v1.0">$HOST_ARCH</envar>, or, if that is unset, to the architecture of the
+running machine's OS (note that the python build or architecture has no
+effect).
+This variable must be passed as an argument to the Environment()
+constructor; setting it later has no effect.
+This is currently only used on Windows, but in the future it will be
+used on other OSes as well.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Valid values for Windows are
+<literal>x86</literal>,
+<literal>i386</literal>
+(for 32 bits);
+<literal>amd64</literal>,
+<literal>emt64</literal>,
+<literal>x86_64</literal>
+(for 64 bits);
+and <literal>ia64</literal> (Itanium).
+For example, if you want to compile 64-bit binaries, you would set
+<literal>TARGET_ARCH='x86_64'</literal> in your SCons environment.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ The name of the target hardware architecture for the compiled objects
+ created by this Environment.
+ This defaults to the value of HOST_ARCH, and the user can override it.
+ Currently only set for Win32.
+</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARGET_OS">
+ <term>TARGET_OS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ The name of the target operating system for the compiled objects
+ created by this Environment.
+ This defaults to the value of HOST_OS, and the user can override it.
+ Currently only set for Win32.
+</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARGETS">
+ <term>TARGETS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TARSUFFIX">
+ <term>TARSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for tar file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEMPFILEPREFIX">
+ <term>TEMPFILEPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix for a temporary file used
+to execute lines longer than $MAXLINELENGTH.
+The default is '@'.
+This may be set for toolchains that use other values,
+such as '-@' for the diab compiler
+or '-via' for ARM toolchain.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEX">
+ <term>TEX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The TeX formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEXCOM">
+ <term>TEXCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the TeX formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEXCOMSTR">
+ <term>TEXCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when calling
+the TeX formatter and typesetter.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-TEXCOM"><envar>$TEXCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(TEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEXFLAGS">
+ <term>TEXFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the TeX formatter and typesetter.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEXINPUTS">
+ <term>TEXINPUTS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+List of directories that the LaTeX program will search
+for include directories.
+The LaTeX implicit dependency scanner will search these
+directories for \include and \import files.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEXTFILEPREFIX">
+ <term>TEXTFILEPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> file names,
+the null string by default.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TEXTFILESUFFIX">
+ <term>TEXTFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> file names;
+<filename>.txt</filename> by default.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-TOOLS">
+ <term>TOOLS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A list of the names of the Tool specifications
+that are part of this construction environment.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-UNCHANGED_SOURCES">
+ <term>UNCHANGED_SOURCES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-UNCHANGED_TARGETS">
+ <term>UNCHANGED_TARGETS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A reserved variable name
+that may not be set or used in a construction environment.
+(See "Variable Substitution," below.)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-VENDOR">
+ <term>VENDOR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The person or organization who supply the packaged software.
+This is used to fill in the
+<literal>Vendor:</literal>
+field in the controlling information for RPM packages,
+and the
+<literal>Manufacturer:</literal>
+field in the controlling information for MSI packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-VERSION">
+ <term>VERSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The version of the project, specified as a string.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WIN32_INSERT_DEF">
+ <term>WIN32_INSERT_DEF</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A deprecated synonym for <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-WINDOWS_INSERT_DEF"><envar>$WINDOWS_INSERT_DEF</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WIN32DEFPREFIX">
+ <term>WIN32DEFPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A deprecated synonym for <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-WINDOWSDEFPREFIX"><envar>$WINDOWSDEFPREFIX</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WIN32DEFSUFFIX">
+ <term>WIN32DEFSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A deprecated synonym for <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-WINDOWSDEFSUFFIX"><envar>$WINDOWSDEFSUFFIX</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WIN32EXPPREFIX">
+ <term>WIN32EXPPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A deprecated synonym for <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-WINDOWSEXPSUFFIX"><envar>$WINDOWSEXPSUFFIX</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WIN32EXPSUFFIX">
+ <term>WIN32EXPSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A deprecated synonym for <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-WINDOWSEXPSUFFIX"><envar>$WINDOWSEXPSUFFIX</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWS_EMBED_MANIFEST">
+ <term>WINDOWS_EMBED_MANIFEST</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Set this variable to True or 1 to embed the compiler-generated manifest
+(normally <literal>${TARGET}.manifest</literal>)
+into all Windows exes and DLLs built with this environment,
+as a resource during their link step.
+This is done using <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MT"><envar>$MT</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MTEXECOM"><envar>$MTEXECOM</envar></link> and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MTSHLIBCOM"><envar>$MTSHLIBCOM</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWS_INSERT_DEF">
+ <term>WINDOWS_INSERT_DEF</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When this is set to true,
+a library build of a Windows shared library
+(<filename>.dll</filename> file)
+will also build a corresponding <filename>.def</filename> file
+at the same time,
+if a <filename>.def</filename> file
+is not already listed as a build target.
+The default is 0 (do not build a <filename>.def</filename> file).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWS_INSERT_MANIFEST">
+ <term>WINDOWS_INSERT_MANIFEST</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+When this is set to true,
+<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename>
+will be aware of the
+<filename>.manifest</filename>
+files generated by Microsoft Visua C/C++ 8.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSDEFPREFIX">
+ <term>WINDOWSDEFPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for Windows <filename>.def</filename> file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSDEFSUFFIX">
+ <term>WINDOWSDEFSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for Windows <filename>.def</filename> file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSEXPPREFIX">
+ <term>WINDOWSEXPPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for Windows <filename>.exp</filename> file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSEXPSUFFIX">
+ <term>WINDOWSEXPSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for Windows <filename>.exp</filename> file names.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSPROGMANIFESTPREFIX">
+ <term>WINDOWSPROGMANIFESTPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for executable program <filename>.manifest</filename> files
+generated by Microsoft Visual C/C++.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSPROGMANIFESTSUFFIX">
+ <term>WINDOWSPROGMANIFESTSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for executable program <filename>.manifest</filename> files
+generated by Microsoft Visual C/C++.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSSHLIBMANIFESTPREFIX">
+ <term>WINDOWSSHLIBMANIFESTPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The prefix used for shared library <filename>.manifest</filename> files
+generated by Microsoft Visual C/C++.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-WINDOWSSHLIBMANIFESTSUFFIX">
+ <term>WINDOWSSHLIBMANIFESTSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for shared library <filename>.manifest</filename> files
+generated by Microsoft Visual C/C++.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_IPK_DEPENDS">
+ <term>X_IPK_DEPENDS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Depends:</literal>
+field in the controlling information for Ipkg packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_IPK_DESCRIPTION">
+ <term>X_IPK_DESCRIPTION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Description:</literal>
+field in the controlling information for Ipkg packages.
+The default value is
+<literal>$SUMMARY\n$DESCRIPTION</literal>
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_IPK_MAINTAINER">
+ <term>X_IPK_MAINTAINER</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Maintainer:</literal>
+field in the controlling information for Ipkg packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_IPK_PRIORITY">
+ <term>X_IPK_PRIORITY</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Priority:</literal>
+field in the controlling information for Ipkg packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_IPK_SECTION">
+ <term>X_IPK_SECTION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Section:</literal>
+field in the controlling information for Ipkg packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_MSI_LANGUAGE">
+ <term>X_MSI_LANGUAGE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Language:</literal>
+attribute in the controlling information for MSI packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_MSI_LICENSE_TEXT">
+ <term>X_MSI_LICENSE_TEXT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The text of the software license in RTF format.
+Carriage return characters will be
+replaced with the RTF equivalent \\par.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_MSI_UPGRADE_CODE">
+ <term>X_MSI_UPGRADE_CODE</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+TODO
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_AUTOREQPROV">
+ <term>X_RPM_AUTOREQPROV</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>AutoReqProv:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_BUILD">
+ <term>X_RPM_BUILD</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+internal, but overridable
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_BUILDREQUIRES">
+ <term>X_RPM_BUILDREQUIRES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>BuildRequires:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_BUILDROOT">
+ <term>X_RPM_BUILDROOT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+internal, but overridable
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_CLEAN">
+ <term>X_RPM_CLEAN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+internal, but overridable
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_CONFLICTS">
+ <term>X_RPM_CONFLICTS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Conflicts:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_DEFATTR">
+ <term>X_RPM_DEFATTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This value is used as the default attributes
+for the files in the RPM package.
+The default value is
+<literal>(-,root,root)</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_DISTRIBUTION">
+ <term>X_RPM_DISTRIBUTION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Distribution:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_EPOCH">
+ <term>X_RPM_EPOCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Epoch:</literal>
+field in the controlling information for RPM packages.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_EXCLUDEARCH">
+ <term>X_RPM_EXCLUDEARCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>ExcludeArch:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_EXLUSIVEARCH">
+ <term>X_RPM_EXLUSIVEARCH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>ExclusiveArch:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_GROUP">
+ <term>X_RPM_GROUP</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Group:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_GROUP_lang">
+ <term>X_RPM_GROUP_lang</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Group(lang):</literal>
+field in the RPM
+<filename>.spec</filename> file.
+Note that
+<varname>lang</varname>
+is not literal
+and should be replaced by
+the appropriate language code.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_ICON">
+ <term>X_RPM_ICON</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Icon:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_INSTALL">
+ <term>X_RPM_INSTALL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+internal, but overridable
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_PACKAGER">
+ <term>X_RPM_PACKAGER</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Packager:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_POSTINSTALL">
+ <term>X_RPM_POSTINSTALL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>%post:</literal>
+section in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_POSTUNINSTALL">
+ <term>X_RPM_POSTUNINSTALL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>%postun:</literal>
+section in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_PREFIX">
+ <term>X_RPM_PREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Prefix:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_PREINSTALL">
+ <term>X_RPM_PREINSTALL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>%pre:</literal>
+section in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_PREP">
+ <term>X_RPM_PREP</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+internal, but overridable
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_PREUNINSTALL">
+ <term>X_RPM_PREUNINSTALL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>%preun:</literal>
+section in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_PROVIDES">
+ <term>X_RPM_PROVIDES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Provides:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_REQUIRES">
+ <term>X_RPM_REQUIRES</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Requires:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_SERIAL">
+ <term>X_RPM_SERIAL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Serial:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-X_RPM_URL">
+ <term>X_RPM_URL</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This is used to fill in the
+<literal>Url:</literal>
+field in the RPM
+<filename>.spec</filename> file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXT">
+ <term>XGETTEXT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Path to <command>xgettext(1)</command> program (found via
+<function>Detect()</function>).
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTCOM">
+ <term>XGETTEXTCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Complete xgettext command line.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTCOMSTR">
+ <term>XGETTEXTCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+A string that is shown when <command>xgettext(1)</command> command is invoked
+(default: <literal>''</literal>, which means "print <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-XGETTEXTCOM"><envar>$XGETTEXTCOM</envar></link>").
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_XGETTEXTDOMAIN">
+ <term>_XGETTEXTDOMAIN</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Internal "macro". Generates <command>xgettext</command> domain name
+form source and target (default: <literal>'${TARGET.filebase}'</literal>).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTFLAGS">
+ <term>XGETTEXTFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Additional flags to <command>xgettext(1)</command>.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTFROM">
+ <term>XGETTEXTFROM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Name of file containing list of <command>xgettext(1)</command>'s source
+files. Autotools' users know this as <filename>POTFILES.in</filename> so they
+will in most cases set <literal>XGETTEXTFROM="POTFILES.in"</literal> here.
+The <envar xmlns="http://www.scons.org/dbxsd/v1.0">$XGETTEXTFROM</envar> files have same syntax and semantics as the well known
+GNU <filename>POTFILES.in</filename>.
+See <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_XGETTEXTFROMFLAGS">
+ <term>_XGETTEXTFROMFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Internal "macro". Genrates list of <literal>-D&lt;dir&gt;</literal> flags
+from the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-XGETTEXTPATH"><envar>$XGETTEXTPATH</envar></link> list.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTFROMPREFIX">
+ <term>XGETTEXTFROMPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This flag is used to add single <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-XGETTEXTFROM"><envar>$XGETTEXTFROM</envar></link> file to
+<command>xgettext(1)</command>'s commandline (default:
+<literal>'-f'</literal>).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTFROMSUFFIX">
+ <term>XGETTEXTFROMSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+(default: <literal>''</literal>)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTPATH">
+ <term>XGETTEXTPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+List of directories, there <command>xgettext(1)</command> will look for
+source files (default: <literal>[]</literal>).
+<note><para>
+This variable works only together with <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-XGETTEXTFROM"><envar>$XGETTEXTFROM</envar></link>
+</para></note>
+See also <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="t-xgettext"><literal>xgettext</literal></link> tool and <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-POTUpdate"><function>POTUpdate</function></link> builder.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_XGETTEXTPATHFLAGS">
+ <term>_XGETTEXTPATHFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Internal "macro". Generates list of <literal>-f&lt;file&gt;</literal> flags
+from <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-XGETTEXTFROM"><envar>$XGETTEXTFROM</envar></link>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTPATHPREFIX">
+ <term>XGETTEXTPATHPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+This flag is used to add single search path to
+<command>xgettext(1)</command>'s commandline (default:
+<literal>'-D'</literal>).
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-XGETTEXTPATHSUFFIX">
+ <term>XGETTEXTPATHSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+(default: <literal>''</literal>)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-YACC">
+ <term>YACC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The parser generator.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-YACCCOM">
+ <term>YACCCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the parser generator
+to generate a source file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-YACCCOMSTR">
+ <term>YACCCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when generating a source file
+using the parser generator.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-YACCCOM"><envar>$YACCCOM</envar></link> (the command line) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(YACCCOMSTR = "Yacc'ing $TARGET from $SOURCES")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-YACCFLAGS">
+ <term>YACCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the parser generator.
+If <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-YACCFLAGS"><envar>$YACCFLAGS</envar></link> contains a <option>-d</option> option,
+SCons assumes that the call will also create a .h file
+(if the yacc source file ends in a .y suffix)
+or a .hpp file
+(if the yacc source file ends in a .yy suffix)
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-YACCHFILESUFFIX">
+ <term>YACCHFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix of the C
+header file generated by the parser generator
+when the
+<option>-d</option>
+option is used.
+Note that setting this variable does not cause
+the parser generator to generate a header
+file with the specified suffix,
+it exists to allow you to specify
+what suffix the parser generator will use of its own accord.
+The default value is
+<filename>.h</filename>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-YACCHXXFILESUFFIX">
+ <term>YACCHXXFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix of the C++
+header file generated by the parser generator
+when the
+<option>-d</option>
+option is used.
+Note that setting this variable does not cause
+the parser generator to generate a header
+file with the specified suffix,
+it exists to allow you to specify
+what suffix the parser generator will use of its own accord.
+The default value is
+<filename>.hpp</filename>,
+except on Mac OS X,
+where the default is
+<filename>${TARGET.suffix}.h</filename>.
+because the default <application xmlns="http://www.scons.org/dbxsd/v1.0">bison</application> parser generator just
+appends <filename>.h</filename>
+to the name of the generated C++ file.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-YACCVCGFILESUFFIX">
+ <term>YACCVCGFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix of the file
+containing the VCG grammar automaton definition
+when the
+<option>--graph=</option>
+option is used.
+Note that setting this variable does not cause
+the parser generator to generate a VCG
+file with the specified suffix,
+it exists to allow you to specify
+what suffix the parser generator will use of its own accord.
+The default value is
+<filename>.vcg</filename>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ZIP">
+ <term>ZIP</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The zip compression and file packaging utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ZIPCOM">
+ <term>ZIPCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The command line used to call the zip utility,
+or the internal Python function used to create a
+zip archive.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ZIPCOMPRESSION">
+ <term>ZIPCOMPRESSION</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The
+<varname>compression</varname>
+flag
+from the Python
+<filename>zipfile</filename>
+module used by the internal Python function
+to control whether the zip archive
+is compressed or not.
+The default value is
+<literal>zipfile.ZIP_DEFLATED</literal>,
+which creates a compressed zip archive.
+This value has no effect if the
+<literal>zipfile</literal>
+module is unavailable.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ZIPCOMSTR">
+ <term>ZIPCOMSTR</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The string displayed when archiving files
+using the zip utility.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-ZIPCOM"><envar>$ZIPCOM</envar></link>
+(the command line or internal Python function) is displayed.
+</para>
+
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment(ZIPCOMSTR = "Zipping $TARGET")
+</example_commands>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ZIPFLAGS">
+ <term>ZIPFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+General options passed to the zip utility.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ZIPROOT">
+ <term>ZIPROOT</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+An optional zip root directory (default empty). The filenames stored
+in the zip file will be relative to this directory, if given.
+Otherwise the filenames are relative to the current directory of the
+command.
+For instance:
+</para>
+<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
+env = Environment()
+env.Zip('foo.zip', 'subdir1/subdir2/file1', ZIPROOT='subdir1')
+</example_commands>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+will produce a zip file <literal>foo.zip</literal>
+containing a file with the name
+<literal>subdir2/file1</literal> rather than
+<literal>subdir1/subdir2/file1</literal>.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-ZIPSUFFIX">
+ <term>ZIPSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+The suffix used for zip file names.
+</para>
+</listitem>
+ </varlistentry>
+</variablelist>
diff --git a/doc/generated/variables.mod b/doc/generated/variables.mod
new file mode 100644
index 0000000..b55b218
--- /dev/null
+++ b/doc/generated/variables.mod
@@ -0,0 +1,1167 @@
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Regular construction variable entities.
+
+-->
+
+<!ENTITY cv-AR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$AR</envar>">
+<!ENTITY cv-ARCHITECTURE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ARCHITECTURE</envar>">
+<!ENTITY cv-ARCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ARCOM</envar>">
+<!ENTITY cv-ARCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ARCOMSTR</envar>">
+<!ENTITY cv-ARFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ARFLAGS</envar>">
+<!ENTITY cv-AS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$AS</envar>">
+<!ENTITY cv-ASCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ASCOM</envar>">
+<!ENTITY cv-ASCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ASCOMSTR</envar>">
+<!ENTITY cv-ASFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ASFLAGS</envar>">
+<!ENTITY cv-ASPPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ASPPCOM</envar>">
+<!ENTITY cv-ASPPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ASPPCOMSTR</envar>">
+<!ENTITY cv-ASPPFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ASPPFLAGS</envar>">
+<!ENTITY cv-BIBTEX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BIBTEX</envar>">
+<!ENTITY cv-BIBTEXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BIBTEXCOM</envar>">
+<!ENTITY cv-BIBTEXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BIBTEXCOMSTR</envar>">
+<!ENTITY cv-BIBTEXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BIBTEXFLAGS</envar>">
+<!ENTITY cv-BITKEEPER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BITKEEPER</envar>">
+<!ENTITY cv-BITKEEPERCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BITKEEPERCOM</envar>">
+<!ENTITY cv-BITKEEPERCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BITKEEPERCOMSTR</envar>">
+<!ENTITY cv-BITKEEPERGET "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BITKEEPERGET</envar>">
+<!ENTITY cv-BITKEEPERGETFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BITKEEPERGETFLAGS</envar>">
+<!ENTITY cv-BUILDERS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$BUILDERS</envar>">
+<!ENTITY cv-CC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CC</envar>">
+<!ENTITY cv-CCCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CCCOM</envar>">
+<!ENTITY cv-CCCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CCCOMSTR</envar>">
+<!ENTITY cv-CCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CCFLAGS</envar>">
+<!ENTITY cv-CCPCHFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CCPCHFLAGS</envar>">
+<!ENTITY cv-CCPDBFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CCPDBFLAGS</envar>">
+<!ENTITY cv-CCVERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CCVERSION</envar>">
+<!ENTITY cv-CFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CFILESUFFIX</envar>">
+<!ENTITY cv-CFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CFLAGS</envar>">
+<!ENTITY cv-CHANGE_SPECFILE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CHANGE_SPECFILE</envar>">
+<!ENTITY cv-CHANGED_SOURCES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CHANGED_SOURCES</envar>">
+<!ENTITY cv-CHANGED_TARGETS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CHANGED_TARGETS</envar>">
+<!ENTITY cv-CHANGELOG "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CHANGELOG</envar>">
+<!ENTITY cv-_concat "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_concat</envar>">
+<!ENTITY cv-CONFIGUREDIR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CONFIGUREDIR</envar>">
+<!ENTITY cv-CONFIGURELOG "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CONFIGURELOG</envar>">
+<!ENTITY cv-_CPPDEFFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_CPPDEFFLAGS</envar>">
+<!ENTITY cv-CPPDEFINES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CPPDEFINES</envar>">
+<!ENTITY cv-CPPDEFPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CPPDEFPREFIX</envar>">
+<!ENTITY cv-CPPDEFSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CPPDEFSUFFIX</envar>">
+<!ENTITY cv-CPPFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CPPFLAGS</envar>">
+<!ENTITY cv-_CPPINCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_CPPINCFLAGS</envar>">
+<!ENTITY cv-CPPPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CPPPATH</envar>">
+<!ENTITY cv-CPPSUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CPPSUFFIXES</envar>">
+<!ENTITY cv-CVS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CVS</envar>">
+<!ENTITY cv-CVSCOFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CVSCOFLAGS</envar>">
+<!ENTITY cv-CVSCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CVSCOM</envar>">
+<!ENTITY cv-CVSCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CVSCOMSTR</envar>">
+<!ENTITY cv-CVSFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CVSFLAGS</envar>">
+<!ENTITY cv-CVSREPOSITORY "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CVSREPOSITORY</envar>">
+<!ENTITY cv-CXX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXX</envar>">
+<!ENTITY cv-CXXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXCOM</envar>">
+<!ENTITY cv-CXXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXCOMSTR</envar>">
+<!ENTITY cv-CXXFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXFILESUFFIX</envar>">
+<!ENTITY cv-CXXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXFLAGS</envar>">
+<!ENTITY cv-CXXVERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXVERSION</envar>">
+<!ENTITY cv-DESCRIPTION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DESCRIPTION</envar>">
+<!ENTITY cv-DESCRIPTION_lang "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DESCRIPTION_lang</envar>">
+<!ENTITY cv-Dir "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$Dir</envar>">
+<!ENTITY cv-Dirs "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$Dirs</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_EPUB "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_EPUB</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_HTML "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_HTML</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_HTMLCHUNKED</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_HTMLHELP "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_HTMLHELP</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_MAN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_MAN</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_PDF "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_PDF</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_SLIDESHTML "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_SLIDESHTML</envar>">
+<!ENTITY cv-DOCBOOK_DEFAULT_XSL_SLIDESPDF "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_SLIDESPDF</envar>">
+<!ENTITY cv-DOCBOOK_FOP "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_FOP</envar>">
+<!ENTITY cv-DOCBOOK_FOPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_FOPCOM</envar>">
+<!ENTITY cv-DOCBOOK_FOPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_FOPCOMSTR</envar>">
+<!ENTITY cv-DOCBOOK_FOPFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_FOPFLAGS</envar>">
+<!ENTITY cv-DOCBOOK_XMLLINT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XMLLINT</envar>">
+<!ENTITY cv-DOCBOOK_XMLLINTCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XMLLINTCOM</envar>">
+<!ENTITY cv-DOCBOOK_XMLLINTCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XMLLINTCOMSTR</envar>">
+<!ENTITY cv-DOCBOOK_XMLLINTFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XMLLINTFLAGS</envar>">
+<!ENTITY cv-DOCBOOK_XSLTPROC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROC</envar>">
+<!ENTITY cv-DOCBOOK_XSLTPROCCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROCCOM</envar>">
+<!ENTITY cv-DOCBOOK_XSLTPROCCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROCCOMSTR</envar>">
+<!ENTITY cv-DOCBOOK_XSLTPROCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROCFLAGS</envar>">
+<!ENTITY cv-DOCBOOK_XSLTPROCPARAMS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROCPARAMS</envar>">
+<!ENTITY cv-DSUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DSUFFIXES</envar>">
+<!ENTITY cv-DVIPDF "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPDF</envar>">
+<!ENTITY cv-DVIPDFCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPDFCOM</envar>">
+<!ENTITY cv-DVIPDFCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPDFCOMSTR</envar>">
+<!ENTITY cv-DVIPDFFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPDFFLAGS</envar>">
+<!ENTITY cv-DVIPS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPS</envar>">
+<!ENTITY cv-DVIPSFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPSFLAGS</envar>">
+<!ENTITY cv-ENV "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ENV</envar>">
+<!ENTITY cv-ESCAPE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ESCAPE</envar>">
+<!ENTITY cv-F03 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03</envar>">
+<!ENTITY cv-F03COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03COM</envar>">
+<!ENTITY cv-F03COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03COMSTR</envar>">
+<!ENTITY cv-F03FILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03FILESUFFIXES</envar>">
+<!ENTITY cv-F03FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03FLAGS</envar>">
+<!ENTITY cv-_F03INCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_F03INCFLAGS</envar>">
+<!ENTITY cv-F03PATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03PATH</envar>">
+<!ENTITY cv-F03PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03PPCOM</envar>">
+<!ENTITY cv-F03PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03PPCOMSTR</envar>">
+<!ENTITY cv-F03PPFILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F03PPFILESUFFIXES</envar>">
+<!ENTITY cv-F77 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77</envar>">
+<!ENTITY cv-F77COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77COM</envar>">
+<!ENTITY cv-F77COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77COMSTR</envar>">
+<!ENTITY cv-F77FILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77FILESUFFIXES</envar>">
+<!ENTITY cv-F77FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77FLAGS</envar>">
+<!ENTITY cv-_F77INCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_F77INCFLAGS</envar>">
+<!ENTITY cv-F77PATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77PATH</envar>">
+<!ENTITY cv-F77PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77PPCOM</envar>">
+<!ENTITY cv-F77PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77PPCOMSTR</envar>">
+<!ENTITY cv-F77PPFILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F77PPFILESUFFIXES</envar>">
+<!ENTITY cv-F90 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90</envar>">
+<!ENTITY cv-F90COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90COM</envar>">
+<!ENTITY cv-F90COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90COMSTR</envar>">
+<!ENTITY cv-F90FILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90FILESUFFIXES</envar>">
+<!ENTITY cv-F90FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90FLAGS</envar>">
+<!ENTITY cv-_F90INCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_F90INCFLAGS</envar>">
+<!ENTITY cv-F90PATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90PATH</envar>">
+<!ENTITY cv-F90PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90PPCOM</envar>">
+<!ENTITY cv-F90PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90PPCOMSTR</envar>">
+<!ENTITY cv-F90PPFILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F90PPFILESUFFIXES</envar>">
+<!ENTITY cv-F95 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95</envar>">
+<!ENTITY cv-F95COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95COM</envar>">
+<!ENTITY cv-F95COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95COMSTR</envar>">
+<!ENTITY cv-F95FILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95FILESUFFIXES</envar>">
+<!ENTITY cv-F95FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95FLAGS</envar>">
+<!ENTITY cv-_F95INCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_F95INCFLAGS</envar>">
+<!ENTITY cv-F95PATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95PATH</envar>">
+<!ENTITY cv-F95PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95PPCOM</envar>">
+<!ENTITY cv-F95PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95PPCOMSTR</envar>">
+<!ENTITY cv-F95PPFILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$F95PPFILESUFFIXES</envar>">
+<!ENTITY cv-File "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$File</envar>">
+<!ENTITY cv-FORTRAN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRAN</envar>">
+<!ENTITY cv-FORTRANCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANCOM</envar>">
+<!ENTITY cv-FORTRANCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANCOMSTR</envar>">
+<!ENTITY cv-FORTRANFILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANFILESUFFIXES</envar>">
+<!ENTITY cv-FORTRANFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANFLAGS</envar>">
+<!ENTITY cv-_FORTRANINCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_FORTRANINCFLAGS</envar>">
+<!ENTITY cv-FORTRANMODDIR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANMODDIR</envar>">
+<!ENTITY cv-FORTRANMODDIRPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANMODDIRPREFIX</envar>">
+<!ENTITY cv-FORTRANMODDIRSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANMODDIRSUFFIX</envar>">
+<!ENTITY cv-_FORTRANMODFLAG "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_FORTRANMODFLAG</envar>">
+<!ENTITY cv-FORTRANMODPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANMODPREFIX</envar>">
+<!ENTITY cv-FORTRANMODSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANMODSUFFIX</envar>">
+<!ENTITY cv-FORTRANPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANPATH</envar>">
+<!ENTITY cv-FORTRANPPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANPPCOM</envar>">
+<!ENTITY cv-FORTRANPPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANPPCOMSTR</envar>">
+<!ENTITY cv-FORTRANPPFILESUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANPPFILESUFFIXES</envar>">
+<!ENTITY cv-FORTRANSUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FORTRANSUFFIXES</envar>">
+<!ENTITY cv-FRAMEWORKPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FRAMEWORKPATH</envar>">
+<!ENTITY cv-_FRAMEWORKPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_FRAMEWORKPATH</envar>">
+<!ENTITY cv-FRAMEWORKPATHPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FRAMEWORKPATHPREFIX</envar>">
+<!ENTITY cv-FRAMEWORKPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FRAMEWORKPREFIX</envar>">
+<!ENTITY cv-_FRAMEWORKS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_FRAMEWORKS</envar>">
+<!ENTITY cv-FRAMEWORKS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FRAMEWORKS</envar>">
+<!ENTITY cv-FRAMEWORKSFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$FRAMEWORKSFLAGS</envar>">
+<!ENTITY cv-GS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$GS</envar>">
+<!ENTITY cv-GSCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$GSCOM</envar>">
+<!ENTITY cv-GSCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$GSCOMSTR</envar>">
+<!ENTITY cv-GSFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$GSFLAGS</envar>">
+<!ENTITY cv-HOST_ARCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$HOST_ARCH</envar>">
+<!ENTITY cv-HOST_OS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$HOST_OS</envar>">
+<!ENTITY cv-IDLSUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$IDLSUFFIXES</envar>">
+<!ENTITY cv-IMPLICIT_COMMAND_DEPENDENCIES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$IMPLICIT_COMMAND_DEPENDENCIES</envar>">
+<!ENTITY cv-INCPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$INCPREFIX</envar>">
+<!ENTITY cv-INCSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$INCSUFFIX</envar>">
+<!ENTITY cv-INSTALL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$INSTALL</envar>">
+<!ENTITY cv-INSTALLSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$INSTALLSTR</envar>">
+<!ENTITY cv-INTEL_C_COMPILER_VERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$INTEL_C_COMPILER_VERSION</envar>">
+<!ENTITY cv-JAR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAR</envar>">
+<!ENTITY cv-JARCHDIR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JARCHDIR</envar>">
+<!ENTITY cv-JARCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JARCOM</envar>">
+<!ENTITY cv-JARCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JARCOMSTR</envar>">
+<!ENTITY cv-JARFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JARFLAGS</envar>">
+<!ENTITY cv-JARSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JARSUFFIX</envar>">
+<!ENTITY cv-JAVABOOTCLASSPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVABOOTCLASSPATH</envar>">
+<!ENTITY cv-JAVAC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVAC</envar>">
+<!ENTITY cv-JAVACCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVACCOM</envar>">
+<!ENTITY cv-JAVACCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVACCOMSTR</envar>">
+<!ENTITY cv-JAVACFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVACFLAGS</envar>">
+<!ENTITY cv-JAVACLASSDIR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVACLASSDIR</envar>">
+<!ENTITY cv-JAVACLASSPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVACLASSPATH</envar>">
+<!ENTITY cv-JAVACLASSSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVACLASSSUFFIX</envar>">
+<!ENTITY cv-JAVAH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVAH</envar>">
+<!ENTITY cv-JAVAHCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVAHCOM</envar>">
+<!ENTITY cv-JAVAHCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVAHCOMSTR</envar>">
+<!ENTITY cv-JAVAHFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVAHFLAGS</envar>">
+<!ENTITY cv-JAVASOURCEPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVASOURCEPATH</envar>">
+<!ENTITY cv-JAVASUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVASUFFIX</envar>">
+<!ENTITY cv-JAVAVERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$JAVAVERSION</envar>">
+<!ENTITY cv-LATEX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LATEX</envar>">
+<!ENTITY cv-LATEXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LATEXCOM</envar>">
+<!ENTITY cv-LATEXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LATEXCOMSTR</envar>">
+<!ENTITY cv-LATEXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LATEXFLAGS</envar>">
+<!ENTITY cv-LATEXRETRIES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LATEXRETRIES</envar>">
+<!ENTITY cv-LATEXSUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LATEXSUFFIXES</envar>">
+<!ENTITY cv-LDMODULE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULE</envar>">
+<!ENTITY cv-LDMODULECOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULECOM</envar>">
+<!ENTITY cv-LDMODULECOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULECOMSTR</envar>">
+<!ENTITY cv-LDMODULEFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULEFLAGS</envar>">
+<!ENTITY cv-LDMODULEPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULEPREFIX</envar>">
+<!ENTITY cv-LDMODULESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULESUFFIX</envar>">
+<!ENTITY cv-LEX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LEX</envar>">
+<!ENTITY cv-LEXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LEXCOM</envar>">
+<!ENTITY cv-LEXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LEXCOMSTR</envar>">
+<!ENTITY cv-LEXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LEXFLAGS</envar>">
+<!ENTITY cv-_LIBDIRFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_LIBDIRFLAGS</envar>">
+<!ENTITY cv-LIBDIRPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBDIRPREFIX</envar>">
+<!ENTITY cv-LIBDIRSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBDIRSUFFIX</envar>">
+<!ENTITY cv-LIBEMITTER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBEMITTER</envar>">
+<!ENTITY cv-_LIBFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_LIBFLAGS</envar>">
+<!ENTITY cv-LIBLINKPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBLINKPREFIX</envar>">
+<!ENTITY cv-LIBLINKSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBLINKSUFFIX</envar>">
+<!ENTITY cv-LIBPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBPATH</envar>">
+<!ENTITY cv-LIBPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBPREFIX</envar>">
+<!ENTITY cv-LIBPREFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBPREFIXES</envar>">
+<!ENTITY cv-LIBS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBS</envar>">
+<!ENTITY cv-LIBSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBSUFFIX</envar>">
+<!ENTITY cv-LIBSUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LIBSUFFIXES</envar>">
+<!ENTITY cv-LICENSE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LICENSE</envar>">
+<!ENTITY cv-LINESEPARATOR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LINESEPARATOR</envar>">
+<!ENTITY cv-LINGUAS_FILE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LINGUAS_FILE</envar>">
+<!ENTITY cv-LINK "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LINK</envar>">
+<!ENTITY cv-LINKCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LINKCOM</envar>">
+<!ENTITY cv-LINKCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LINKCOMSTR</envar>">
+<!ENTITY cv-LINKFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LINKFLAGS</envar>">
+<!ENTITY cv-M4 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$M4</envar>">
+<!ENTITY cv-M4COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$M4COM</envar>">
+<!ENTITY cv-M4COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$M4COMSTR</envar>">
+<!ENTITY cv-M4FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$M4FLAGS</envar>">
+<!ENTITY cv-MAKEINDEX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MAKEINDEX</envar>">
+<!ENTITY cv-MAKEINDEXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MAKEINDEXCOM</envar>">
+<!ENTITY cv-MAKEINDEXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MAKEINDEXCOMSTR</envar>">
+<!ENTITY cv-MAKEINDEXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MAKEINDEXFLAGS</envar>">
+<!ENTITY cv-MAXLINELENGTH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MAXLINELENGTH</envar>">
+<!ENTITY cv-MIDL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MIDL</envar>">
+<!ENTITY cv-MIDLCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MIDLCOM</envar>">
+<!ENTITY cv-MIDLCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MIDLCOMSTR</envar>">
+<!ENTITY cv-MIDLFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MIDLFLAGS</envar>">
+<!ENTITY cv-MOSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MOSUFFIX</envar>">
+<!ENTITY cv-MSGFMT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGFMT</envar>">
+<!ENTITY cv-MSGFMTCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGFMTCOM</envar>">
+<!ENTITY cv-MSGFMTCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGFMTCOMSTR</envar>">
+<!ENTITY cv-MSGFMTFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGFMTFLAGS</envar>">
+<!ENTITY cv-MSGINIT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGINIT</envar>">
+<!ENTITY cv-MSGINITCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGINITCOM</envar>">
+<!ENTITY cv-MSGINITCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGINITCOMSTR</envar>">
+<!ENTITY cv-MSGINITFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGINITFLAGS</envar>">
+<!ENTITY cv-_MSGINITLOCALE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_MSGINITLOCALE</envar>">
+<!ENTITY cv-MSGMERGE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGMERGE</envar>">
+<!ENTITY cv-MSGMERGECOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGMERGECOM</envar>">
+<!ENTITY cv-MSGMERGECOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGMERGECOMSTR</envar>">
+<!ENTITY cv-MSGMERGEFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSGMERGEFLAGS</envar>">
+<!ENTITY cv-MSSDK_DIR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSSDK_DIR</envar>">
+<!ENTITY cv-MSSDK_VERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSSDK_VERSION</envar>">
+<!ENTITY cv-MSVC_BATCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVC_BATCH</envar>">
+<!ENTITY cv-MSVC_USE_SCRIPT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVC_USE_SCRIPT</envar>">
+<!ENTITY cv-MSVC_VERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVC_VERSION</envar>">
+<!ENTITY cv-MSVS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS</envar>">
+<!ENTITY cv-MSVS_ARCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS_ARCH</envar>">
+<!ENTITY cv-MSVS_PROJECT_GUID "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS_PROJECT_GUID</envar>">
+<!ENTITY cv-MSVS_SCC_AUX_PATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS_SCC_AUX_PATH</envar>">
+<!ENTITY cv-MSVS_SCC_CONNECTION_ROOT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS_SCC_CONNECTION_ROOT</envar>">
+<!ENTITY cv-MSVS_SCC_PROJECT_NAME "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS_SCC_PROJECT_NAME</envar>">
+<!ENTITY cv-MSVS_SCC_PROVIDER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS_SCC_PROVIDER</envar>">
+<!ENTITY cv-MSVS_VERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVS_VERSION</envar>">
+<!ENTITY cv-MSVSBUILDCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSBUILDCOM</envar>">
+<!ENTITY cv-MSVSCLEANCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSCLEANCOM</envar>">
+<!ENTITY cv-MSVSENCODING "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSENCODING</envar>">
+<!ENTITY cv-MSVSPROJECTCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSPROJECTCOM</envar>">
+<!ENTITY cv-MSVSPROJECTSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSPROJECTSUFFIX</envar>">
+<!ENTITY cv-MSVSREBUILDCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSREBUILDCOM</envar>">
+<!ENTITY cv-MSVSSCONS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSSCONS</envar>">
+<!ENTITY cv-MSVSSCONSCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSSCONSCOM</envar>">
+<!ENTITY cv-MSVSSCONSCRIPT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSSCONSCRIPT</envar>">
+<!ENTITY cv-MSVSSCONSFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSSCONSFLAGS</envar>">
+<!ENTITY cv-MSVSSOLUTIONCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSSOLUTIONCOM</envar>">
+<!ENTITY cv-MSVSSOLUTIONSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MSVSSOLUTIONSUFFIX</envar>">
+<!ENTITY cv-MT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MT</envar>">
+<!ENTITY cv-MTEXECOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MTEXECOM</envar>">
+<!ENTITY cv-MTFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MTFLAGS</envar>">
+<!ENTITY cv-MTSHLIBCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MTSHLIBCOM</envar>">
+<!ENTITY cv-MWCW_VERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MWCW_VERSION</envar>">
+<!ENTITY cv-MWCW_VERSIONS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$MWCW_VERSIONS</envar>">
+<!ENTITY cv-NAME "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$NAME</envar>">
+<!ENTITY cv-no_import_lib "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$no_import_lib</envar>">
+<!ENTITY cv-OBJPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$OBJPREFIX</envar>">
+<!ENTITY cv-OBJSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$OBJSUFFIX</envar>">
+<!ENTITY cv-P4 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$P4</envar>">
+<!ENTITY cv-P4COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$P4COM</envar>">
+<!ENTITY cv-P4COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$P4COMSTR</envar>">
+<!ENTITY cv-P4FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$P4FLAGS</envar>">
+<!ENTITY cv-PACKAGEROOT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PACKAGEROOT</envar>">
+<!ENTITY cv-PACKAGETYPE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PACKAGETYPE</envar>">
+<!ENTITY cv-PACKAGEVERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PACKAGEVERSION</envar>">
+<!ENTITY cv-PCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PCH</envar>">
+<!ENTITY cv-PCHCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PCHCOM</envar>">
+<!ENTITY cv-PCHCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PCHCOMSTR</envar>">
+<!ENTITY cv-PCHPDBFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PCHPDBFLAGS</envar>">
+<!ENTITY cv-PCHSTOP "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PCHSTOP</envar>">
+<!ENTITY cv-PDB "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDB</envar>">
+<!ENTITY cv-PDFCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFCOM</envar>">
+<!ENTITY cv-PDFLATEX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFLATEX</envar>">
+<!ENTITY cv-PDFLATEXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFLATEXCOM</envar>">
+<!ENTITY cv-PDFLATEXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFLATEXCOMSTR</envar>">
+<!ENTITY cv-PDFLATEXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFLATEXFLAGS</envar>">
+<!ENTITY cv-PDFPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFPREFIX</envar>">
+<!ENTITY cv-PDFSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFSUFFIX</envar>">
+<!ENTITY cv-PDFTEX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFTEX</envar>">
+<!ENTITY cv-PDFTEXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFTEXCOM</envar>">
+<!ENTITY cv-PDFTEXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFTEXCOMSTR</envar>">
+<!ENTITY cv-PDFTEXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PDFTEXFLAGS</envar>">
+<!ENTITY cv-PKGCHK "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PKGCHK</envar>">
+<!ENTITY cv-PKGINFO "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PKGINFO</envar>">
+<!ENTITY cv-PLATFORM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PLATFORM</envar>">
+<!ENTITY cv-POAUTOINIT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$POAUTOINIT</envar>">
+<!ENTITY cv-POCREATE_ALIAS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$POCREATE_ALIAS</envar>">
+<!ENTITY cv-POSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$POSUFFIX</envar>">
+<!ENTITY cv-POTDOMAIN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$POTDOMAIN</envar>">
+<!ENTITY cv-POTSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$POTSUFFIX</envar>">
+<!ENTITY cv-POTUPDATE_ALIAS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$POTUPDATE_ALIAS</envar>">
+<!ENTITY cv-POUPDATE_ALIAS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$POUPDATE_ALIAS</envar>">
+<!ENTITY cv-PRINT_CMD_LINE_FUNC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PRINT_CMD_LINE_FUNC</envar>">
+<!ENTITY cv-PROGEMITTER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PROGEMITTER</envar>">
+<!ENTITY cv-PROGPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PROGPREFIX</envar>">
+<!ENTITY cv-PROGSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PROGSUFFIX</envar>">
+<!ENTITY cv-PSCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PSCOM</envar>">
+<!ENTITY cv-PSCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PSCOMSTR</envar>">
+<!ENTITY cv-PSPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PSPREFIX</envar>">
+<!ENTITY cv-PSSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$PSSUFFIX</envar>">
+<!ENTITY cv-QT_AUTOSCAN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_AUTOSCAN</envar>">
+<!ENTITY cv-QT_BINPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_BINPATH</envar>">
+<!ENTITY cv-QT_CPPPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_CPPPATH</envar>">
+<!ENTITY cv-QT_DEBUG "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_DEBUG</envar>">
+<!ENTITY cv-QT_LIB "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_LIB</envar>">
+<!ENTITY cv-QT_LIBPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_LIBPATH</envar>">
+<!ENTITY cv-QT_MOC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOC</envar>">
+<!ENTITY cv-QT_MOCCXXPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCCXXPREFIX</envar>">
+<!ENTITY cv-QT_MOCCXXSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCCXXSUFFIX</envar>">
+<!ENTITY cv-QT_MOCFROMCXXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCFROMCXXCOM</envar>">
+<!ENTITY cv-QT_MOCFROMCXXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCFROMCXXCOMSTR</envar>">
+<!ENTITY cv-QT_MOCFROMCXXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCFROMCXXFLAGS</envar>">
+<!ENTITY cv-QT_MOCFROMHCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCFROMHCOM</envar>">
+<!ENTITY cv-QT_MOCFROMHCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCFROMHCOMSTR</envar>">
+<!ENTITY cv-QT_MOCFROMHFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCFROMHFLAGS</envar>">
+<!ENTITY cv-QT_MOCHPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCHPREFIX</envar>">
+<!ENTITY cv-QT_MOCHSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_MOCHSUFFIX</envar>">
+<!ENTITY cv-QT_UIC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UIC</envar>">
+<!ENTITY cv-QT_UICCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICCOM</envar>">
+<!ENTITY cv-QT_UICCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICCOMSTR</envar>">
+<!ENTITY cv-QT_UICDECLFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICDECLFLAGS</envar>">
+<!ENTITY cv-QT_UICDECLPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICDECLPREFIX</envar>">
+<!ENTITY cv-QT_UICDECLSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICDECLSUFFIX</envar>">
+<!ENTITY cv-QT_UICIMPLFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICIMPLFLAGS</envar>">
+<!ENTITY cv-QT_UICIMPLPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICIMPLPREFIX</envar>">
+<!ENTITY cv-QT_UICIMPLSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UICIMPLSUFFIX</envar>">
+<!ENTITY cv-QT_UISUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QT_UISUFFIX</envar>">
+<!ENTITY cv-QTDIR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$QTDIR</envar>">
+<!ENTITY cv-RANLIB "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RANLIB</envar>">
+<!ENTITY cv-RANLIBCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RANLIBCOM</envar>">
+<!ENTITY cv-RANLIBCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RANLIBCOMSTR</envar>">
+<!ENTITY cv-RANLIBFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RANLIBFLAGS</envar>">
+<!ENTITY cv-RC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RC</envar>">
+<!ENTITY cv-RCCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCCOM</envar>">
+<!ENTITY cv-RCCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCCOMSTR</envar>">
+<!ENTITY cv-RCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCFLAGS</envar>">
+<!ENTITY cv-RCINCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCINCFLAGS</envar>">
+<!ENTITY cv-RCINCPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCINCPREFIX</envar>">
+<!ENTITY cv-RCINCSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCINCSUFFIX</envar>">
+<!ENTITY cv-RCS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCS</envar>">
+<!ENTITY cv-RCS_CO "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCS_CO</envar>">
+<!ENTITY cv-RCS_COCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCS_COCOM</envar>">
+<!ENTITY cv-RCS_COCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCS_COCOMSTR</envar>">
+<!ENTITY cv-RCS_COFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RCS_COFLAGS</envar>">
+<!ENTITY cv-RDirs "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RDirs</envar>">
+<!ENTITY cv-REGSVR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$REGSVR</envar>">
+<!ENTITY cv-REGSVRCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$REGSVRCOM</envar>">
+<!ENTITY cv-REGSVRCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$REGSVRCOMSTR</envar>">
+<!ENTITY cv-REGSVRFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$REGSVRFLAGS</envar>">
+<!ENTITY cv-RMIC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RMIC</envar>">
+<!ENTITY cv-RMICCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RMICCOM</envar>">
+<!ENTITY cv-RMICCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RMICCOMSTR</envar>">
+<!ENTITY cv-RMICFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RMICFLAGS</envar>">
+<!ENTITY cv-_RPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_RPATH</envar>">
+<!ENTITY cv-RPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPATH</envar>">
+<!ENTITY cv-RPATHPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPATHPREFIX</envar>">
+<!ENTITY cv-RPATHSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPATHSUFFIX</envar>">
+<!ENTITY cv-RPCGEN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPCGEN</envar>">
+<!ENTITY cv-RPCGENCLIENTFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPCGENCLIENTFLAGS</envar>">
+<!ENTITY cv-RPCGENFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPCGENFLAGS</envar>">
+<!ENTITY cv-RPCGENHEADERFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPCGENHEADERFLAGS</envar>">
+<!ENTITY cv-RPCGENSERVICEFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPCGENSERVICEFLAGS</envar>">
+<!ENTITY cv-RPCGENXDRFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$RPCGENXDRFLAGS</envar>">
+<!ENTITY cv-SCANNERS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SCANNERS</envar>">
+<!ENTITY cv-SCCS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SCCS</envar>">
+<!ENTITY cv-SCCSCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SCCSCOM</envar>">
+<!ENTITY cv-SCCSCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SCCSCOMSTR</envar>">
+<!ENTITY cv-SCCSFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SCCSFLAGS</envar>">
+<!ENTITY cv-SCCSGETFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SCCSGETFLAGS</envar>">
+<!ENTITY cv-SCONS_HOME "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SCONS_HOME</envar>">
+<!ENTITY cv-SHCC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCC</envar>">
+<!ENTITY cv-SHCCCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCCCOM</envar>">
+<!ENTITY cv-SHCCCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCCCOMSTR</envar>">
+<!ENTITY cv-SHCCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCCFLAGS</envar>">
+<!ENTITY cv-SHCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCFLAGS</envar>">
+<!ENTITY cv-SHCXX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCXX</envar>">
+<!ENTITY cv-SHCXXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCXXCOM</envar>">
+<!ENTITY cv-SHCXXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCXXCOMSTR</envar>">
+<!ENTITY cv-SHCXXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCXXFLAGS</envar>">
+<!ENTITY cv-SHELL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHELL</envar>">
+<!ENTITY cv-SHF03 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03</envar>">
+<!ENTITY cv-SHF03COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03COM</envar>">
+<!ENTITY cv-SHF03COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03COMSTR</envar>">
+<!ENTITY cv-SHF03FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03FLAGS</envar>">
+<!ENTITY cv-SHF03PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03PPCOM</envar>">
+<!ENTITY cv-SHF03PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03PPCOMSTR</envar>">
+<!ENTITY cv-SHF77 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF77</envar>">
+<!ENTITY cv-SHF77COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF77COM</envar>">
+<!ENTITY cv-SHF77COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF77COMSTR</envar>">
+<!ENTITY cv-SHF77FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF77FLAGS</envar>">
+<!ENTITY cv-SHF77PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF77PPCOM</envar>">
+<!ENTITY cv-SHF77PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF77PPCOMSTR</envar>">
+<!ENTITY cv-SHF90 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF90</envar>">
+<!ENTITY cv-SHF90COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF90COM</envar>">
+<!ENTITY cv-SHF90COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF90COMSTR</envar>">
+<!ENTITY cv-SHF90FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF90FLAGS</envar>">
+<!ENTITY cv-SHF90PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF90PPCOM</envar>">
+<!ENTITY cv-SHF90PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF90PPCOMSTR</envar>">
+<!ENTITY cv-SHF95 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF95</envar>">
+<!ENTITY cv-SHF95COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF95COM</envar>">
+<!ENTITY cv-SHF95COMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF95COMSTR</envar>">
+<!ENTITY cv-SHF95FLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF95FLAGS</envar>">
+<!ENTITY cv-SHF95PPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF95PPCOM</envar>">
+<!ENTITY cv-SHF95PPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF95PPCOMSTR</envar>">
+<!ENTITY cv-SHFORTRAN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHFORTRAN</envar>">
+<!ENTITY cv-SHFORTRANCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHFORTRANCOM</envar>">
+<!ENTITY cv-SHFORTRANCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHFORTRANCOMSTR</envar>">
+<!ENTITY cv-SHFORTRANFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHFORTRANFLAGS</envar>">
+<!ENTITY cv-SHFORTRANPPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHFORTRANPPCOM</envar>">
+<!ENTITY cv-SHFORTRANPPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHFORTRANPPCOMSTR</envar>">
+<!ENTITY cv-SHLIBEMITTER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLIBEMITTER</envar>">
+<!ENTITY cv-SHLIBPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLIBPREFIX</envar>">
+<!ENTITY cv-SHLIBSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLIBSUFFIX</envar>">
+<!ENTITY cv-SHLIBVERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLIBVERSION</envar>">
+<!ENTITY cv-SHLINK "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLINK</envar>">
+<!ENTITY cv-SHLINKCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLINKCOM</envar>">
+<!ENTITY cv-SHLINKCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLINKCOMSTR</envar>">
+<!ENTITY cv-SHLINKFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHLINKFLAGS</envar>">
+<!ENTITY cv-SHOBJPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHOBJPREFIX</envar>">
+<!ENTITY cv-SHOBJSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHOBJSUFFIX</envar>">
+<!ENTITY cv-SOURCE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SOURCE</envar>">
+<!ENTITY cv-SOURCE_URL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SOURCE_URL</envar>">
+<!ENTITY cv-SOURCES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SOURCES</envar>">
+<!ENTITY cv-SPAWN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SPAWN</envar>">
+<!ENTITY cv-SUBST_DICT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SUBST_DICT</envar>">
+<!ENTITY cv-SUBSTFILEPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SUBSTFILEPREFIX</envar>">
+<!ENTITY cv-SUBSTFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SUBSTFILESUFFIX</envar>">
+<!ENTITY cv-SUMMARY "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SUMMARY</envar>">
+<!ENTITY cv-SWIG "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIG</envar>">
+<!ENTITY cv-SWIGCFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGCFILESUFFIX</envar>">
+<!ENTITY cv-SWIGCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGCOM</envar>">
+<!ENTITY cv-SWIGCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGCOMSTR</envar>">
+<!ENTITY cv-SWIGCXXFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGCXXFILESUFFIX</envar>">
+<!ENTITY cv-SWIGDIRECTORSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGDIRECTORSUFFIX</envar>">
+<!ENTITY cv-SWIGFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGFLAGS</envar>">
+<!ENTITY cv-_SWIGINCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_SWIGINCFLAGS</envar>">
+<!ENTITY cv-SWIGINCPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGINCPREFIX</envar>">
+<!ENTITY cv-SWIGINCSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGINCSUFFIX</envar>">
+<!ENTITY cv-SWIGOUTDIR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGOUTDIR</envar>">
+<!ENTITY cv-SWIGPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGPATH</envar>">
+<!ENTITY cv-SWIGVERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SWIGVERSION</envar>">
+<!ENTITY cv-TAR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TAR</envar>">
+<!ENTITY cv-TARCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARCOM</envar>">
+<!ENTITY cv-TARCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARCOMSTR</envar>">
+<!ENTITY cv-TARFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARFLAGS</envar>">
+<!ENTITY cv-TARGET "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARGET</envar>">
+<!ENTITY cv-TARGET_ARCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARGET_ARCH</envar>">
+<!ENTITY cv-TARGET_OS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARGET_OS</envar>">
+<!ENTITY cv-TARGETS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARGETS</envar>">
+<!ENTITY cv-TARSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TARSUFFIX</envar>">
+<!ENTITY cv-TEMPFILEPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEMPFILEPREFIX</envar>">
+<!ENTITY cv-TEX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEX</envar>">
+<!ENTITY cv-TEXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEXCOM</envar>">
+<!ENTITY cv-TEXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEXCOMSTR</envar>">
+<!ENTITY cv-TEXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEXFLAGS</envar>">
+<!ENTITY cv-TEXINPUTS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEXINPUTS</envar>">
+<!ENTITY cv-TEXTFILEPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEXTFILEPREFIX</envar>">
+<!ENTITY cv-TEXTFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TEXTFILESUFFIX</envar>">
+<!ENTITY cv-TOOLS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$TOOLS</envar>">
+<!ENTITY cv-UNCHANGED_SOURCES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$UNCHANGED_SOURCES</envar>">
+<!ENTITY cv-UNCHANGED_TARGETS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$UNCHANGED_TARGETS</envar>">
+<!ENTITY cv-VENDOR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$VENDOR</envar>">
+<!ENTITY cv-VERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$VERSION</envar>">
+<!ENTITY cv-WIN32_INSERT_DEF "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WIN32_INSERT_DEF</envar>">
+<!ENTITY cv-WIN32DEFPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WIN32DEFPREFIX</envar>">
+<!ENTITY cv-WIN32DEFSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WIN32DEFSUFFIX</envar>">
+<!ENTITY cv-WIN32EXPPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WIN32EXPPREFIX</envar>">
+<!ENTITY cv-WIN32EXPSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WIN32EXPSUFFIX</envar>">
+<!ENTITY cv-WINDOWS_EMBED_MANIFEST "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWS_EMBED_MANIFEST</envar>">
+<!ENTITY cv-WINDOWS_INSERT_DEF "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWS_INSERT_DEF</envar>">
+<!ENTITY cv-WINDOWS_INSERT_MANIFEST "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWS_INSERT_MANIFEST</envar>">
+<!ENTITY cv-WINDOWSDEFPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSDEFPREFIX</envar>">
+<!ENTITY cv-WINDOWSDEFSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSDEFSUFFIX</envar>">
+<!ENTITY cv-WINDOWSEXPPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSEXPPREFIX</envar>">
+<!ENTITY cv-WINDOWSEXPSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSEXPSUFFIX</envar>">
+<!ENTITY cv-WINDOWSPROGMANIFESTPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSPROGMANIFESTPREFIX</envar>">
+<!ENTITY cv-WINDOWSPROGMANIFESTSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSPROGMANIFESTSUFFIX</envar>">
+<!ENTITY cv-WINDOWSSHLIBMANIFESTPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSSHLIBMANIFESTPREFIX</envar>">
+<!ENTITY cv-WINDOWSSHLIBMANIFESTSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$WINDOWSSHLIBMANIFESTSUFFIX</envar>">
+<!ENTITY cv-X_IPK_DEPENDS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_IPK_DEPENDS</envar>">
+<!ENTITY cv-X_IPK_DESCRIPTION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_IPK_DESCRIPTION</envar>">
+<!ENTITY cv-X_IPK_MAINTAINER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_IPK_MAINTAINER</envar>">
+<!ENTITY cv-X_IPK_PRIORITY "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_IPK_PRIORITY</envar>">
+<!ENTITY cv-X_IPK_SECTION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_IPK_SECTION</envar>">
+<!ENTITY cv-X_MSI_LANGUAGE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_MSI_LANGUAGE</envar>">
+<!ENTITY cv-X_MSI_LICENSE_TEXT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_MSI_LICENSE_TEXT</envar>">
+<!ENTITY cv-X_MSI_UPGRADE_CODE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_MSI_UPGRADE_CODE</envar>">
+<!ENTITY cv-X_RPM_AUTOREQPROV "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_AUTOREQPROV</envar>">
+<!ENTITY cv-X_RPM_BUILD "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_BUILD</envar>">
+<!ENTITY cv-X_RPM_BUILDREQUIRES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_BUILDREQUIRES</envar>">
+<!ENTITY cv-X_RPM_BUILDROOT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_BUILDROOT</envar>">
+<!ENTITY cv-X_RPM_CLEAN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_CLEAN</envar>">
+<!ENTITY cv-X_RPM_CONFLICTS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_CONFLICTS</envar>">
+<!ENTITY cv-X_RPM_DEFATTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_DEFATTR</envar>">
+<!ENTITY cv-X_RPM_DISTRIBUTION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_DISTRIBUTION</envar>">
+<!ENTITY cv-X_RPM_EPOCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_EPOCH</envar>">
+<!ENTITY cv-X_RPM_EXCLUDEARCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_EXCLUDEARCH</envar>">
+<!ENTITY cv-X_RPM_EXLUSIVEARCH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_EXLUSIVEARCH</envar>">
+<!ENTITY cv-X_RPM_GROUP "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_GROUP</envar>">
+<!ENTITY cv-X_RPM_GROUP_lang "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_GROUP_lang</envar>">
+<!ENTITY cv-X_RPM_ICON "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_ICON</envar>">
+<!ENTITY cv-X_RPM_INSTALL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_INSTALL</envar>">
+<!ENTITY cv-X_RPM_PACKAGER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_PACKAGER</envar>">
+<!ENTITY cv-X_RPM_POSTINSTALL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_POSTINSTALL</envar>">
+<!ENTITY cv-X_RPM_POSTUNINSTALL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_POSTUNINSTALL</envar>">
+<!ENTITY cv-X_RPM_PREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_PREFIX</envar>">
+<!ENTITY cv-X_RPM_PREINSTALL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_PREINSTALL</envar>">
+<!ENTITY cv-X_RPM_PREP "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_PREP</envar>">
+<!ENTITY cv-X_RPM_PREUNINSTALL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_PREUNINSTALL</envar>">
+<!ENTITY cv-X_RPM_PROVIDES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_PROVIDES</envar>">
+<!ENTITY cv-X_RPM_REQUIRES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_REQUIRES</envar>">
+<!ENTITY cv-X_RPM_SERIAL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_SERIAL</envar>">
+<!ENTITY cv-X_RPM_URL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$X_RPM_URL</envar>">
+<!ENTITY cv-XGETTEXT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXT</envar>">
+<!ENTITY cv-XGETTEXTCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTCOM</envar>">
+<!ENTITY cv-XGETTEXTCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTCOMSTR</envar>">
+<!ENTITY cv-_XGETTEXTDOMAIN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_XGETTEXTDOMAIN</envar>">
+<!ENTITY cv-XGETTEXTFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTFLAGS</envar>">
+<!ENTITY cv-XGETTEXTFROM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTFROM</envar>">
+<!ENTITY cv-_XGETTEXTFROMFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_XGETTEXTFROMFLAGS</envar>">
+<!ENTITY cv-XGETTEXTFROMPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTFROMPREFIX</envar>">
+<!ENTITY cv-XGETTEXTFROMSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTFROMSUFFIX</envar>">
+<!ENTITY cv-XGETTEXTPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTPATH</envar>">
+<!ENTITY cv-_XGETTEXTPATHFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_XGETTEXTPATHFLAGS</envar>">
+<!ENTITY cv-XGETTEXTPATHPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTPATHPREFIX</envar>">
+<!ENTITY cv-XGETTEXTPATHSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$XGETTEXTPATHSUFFIX</envar>">
+<!ENTITY cv-YACC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$YACC</envar>">
+<!ENTITY cv-YACCCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$YACCCOM</envar>">
+<!ENTITY cv-YACCCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$YACCCOMSTR</envar>">
+<!ENTITY cv-YACCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$YACCFLAGS</envar>">
+<!ENTITY cv-YACCHFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$YACCHFILESUFFIX</envar>">
+<!ENTITY cv-YACCHXXFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$YACCHXXFILESUFFIX</envar>">
+<!ENTITY cv-YACCVCGFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$YACCVCGFILESUFFIX</envar>">
+<!ENTITY cv-ZIP "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ZIP</envar>">
+<!ENTITY cv-ZIPCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ZIPCOM</envar>">
+<!ENTITY cv-ZIPCOMPRESSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ZIPCOMPRESSION</envar>">
+<!ENTITY cv-ZIPCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ZIPCOMSTR</envar>">
+<!ENTITY cv-ZIPFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ZIPFLAGS</envar>">
+<!ENTITY cv-ZIPROOT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ZIPROOT</envar>">
+<!ENTITY cv-ZIPSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$ZIPSUFFIX</envar>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+
+<!--
+
+ Entities that are links to the construction variable entries in the appendix.
+
+-->
+
+<!ENTITY cv-link-AR "<link linkend='cv-AR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$AR</envar></link>">
+<!ENTITY cv-link-ARCHITECTURE "<link linkend='cv-ARCHITECTURE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ARCHITECTURE</envar></link>">
+<!ENTITY cv-link-ARCOM "<link linkend='cv-ARCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ARCOM</envar></link>">
+<!ENTITY cv-link-ARCOMSTR "<link linkend='cv-ARCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ARCOMSTR</envar></link>">
+<!ENTITY cv-link-ARFLAGS "<link linkend='cv-ARFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ARFLAGS</envar></link>">
+<!ENTITY cv-link-AS "<link linkend='cv-AS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$AS</envar></link>">
+<!ENTITY cv-link-ASCOM "<link linkend='cv-ASCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ASCOM</envar></link>">
+<!ENTITY cv-link-ASCOMSTR "<link linkend='cv-ASCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ASCOMSTR</envar></link>">
+<!ENTITY cv-link-ASFLAGS "<link linkend='cv-ASFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ASFLAGS</envar></link>">
+<!ENTITY cv-link-ASPPCOM "<link linkend='cv-ASPPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ASPPCOM</envar></link>">
+<!ENTITY cv-link-ASPPCOMSTR "<link linkend='cv-ASPPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ASPPCOMSTR</envar></link>">
+<!ENTITY cv-link-ASPPFLAGS "<link linkend='cv-ASPPFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ASPPFLAGS</envar></link>">
+<!ENTITY cv-link-BIBTEX "<link linkend='cv-BIBTEX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BIBTEX</envar></link>">
+<!ENTITY cv-link-BIBTEXCOM "<link linkend='cv-BIBTEXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BIBTEXCOM</envar></link>">
+<!ENTITY cv-link-BIBTEXCOMSTR "<link linkend='cv-BIBTEXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BIBTEXCOMSTR</envar></link>">
+<!ENTITY cv-link-BIBTEXFLAGS "<link linkend='cv-BIBTEXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BIBTEXFLAGS</envar></link>">
+<!ENTITY cv-link-BITKEEPER "<link linkend='cv-BITKEEPER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BITKEEPER</envar></link>">
+<!ENTITY cv-link-BITKEEPERCOM "<link linkend='cv-BITKEEPERCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BITKEEPERCOM</envar></link>">
+<!ENTITY cv-link-BITKEEPERCOMSTR "<link linkend='cv-BITKEEPERCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BITKEEPERCOMSTR</envar></link>">
+<!ENTITY cv-link-BITKEEPERGET "<link linkend='cv-BITKEEPERGET' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BITKEEPERGET</envar></link>">
+<!ENTITY cv-link-BITKEEPERGETFLAGS "<link linkend='cv-BITKEEPERGETFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BITKEEPERGETFLAGS</envar></link>">
+<!ENTITY cv-link-BUILDERS "<link linkend='cv-BUILDERS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$BUILDERS</envar></link>">
+<!ENTITY cv-link-CC "<link linkend='cv-CC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CC</envar></link>">
+<!ENTITY cv-link-CCCOM "<link linkend='cv-CCCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CCCOM</envar></link>">
+<!ENTITY cv-link-CCCOMSTR "<link linkend='cv-CCCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CCCOMSTR</envar></link>">
+<!ENTITY cv-link-CCFLAGS "<link linkend='cv-CCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CCFLAGS</envar></link>">
+<!ENTITY cv-link-CCPCHFLAGS "<link linkend='cv-CCPCHFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CCPCHFLAGS</envar></link>">
+<!ENTITY cv-link-CCPDBFLAGS "<link linkend='cv-CCPDBFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CCPDBFLAGS</envar></link>">
+<!ENTITY cv-link-CCVERSION "<link linkend='cv-CCVERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CCVERSION</envar></link>">
+<!ENTITY cv-link-CFILESUFFIX "<link linkend='cv-CFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CFILESUFFIX</envar></link>">
+<!ENTITY cv-link-CFLAGS "<link linkend='cv-CFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CFLAGS</envar></link>">
+<!ENTITY cv-link-CHANGE_SPECFILE "<link linkend='cv-CHANGE_SPECFILE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CHANGE_SPECFILE</envar></link>">
+<!ENTITY cv-link-CHANGED_SOURCES "<link linkend='cv-CHANGED_SOURCES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CHANGED_SOURCES</envar></link>">
+<!ENTITY cv-link-CHANGED_TARGETS "<link linkend='cv-CHANGED_TARGETS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CHANGED_TARGETS</envar></link>">
+<!ENTITY cv-link-CHANGELOG "<link linkend='cv-CHANGELOG' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CHANGELOG</envar></link>">
+<!ENTITY cv-link-_concat "<link linkend='cv-_concat' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_concat</envar></link>">
+<!ENTITY cv-link-CONFIGUREDIR "<link linkend='cv-CONFIGUREDIR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CONFIGUREDIR</envar></link>">
+<!ENTITY cv-link-CONFIGURELOG "<link linkend='cv-CONFIGURELOG' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CONFIGURELOG</envar></link>">
+<!ENTITY cv-link-_CPPDEFFLAGS "<link linkend='cv-_CPPDEFFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_CPPDEFFLAGS</envar></link>">
+<!ENTITY cv-link-CPPDEFINES "<link linkend='cv-CPPDEFINES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CPPDEFINES</envar></link>">
+<!ENTITY cv-link-CPPDEFPREFIX "<link linkend='cv-CPPDEFPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CPPDEFPREFIX</envar></link>">
+<!ENTITY cv-link-CPPDEFSUFFIX "<link linkend='cv-CPPDEFSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CPPDEFSUFFIX</envar></link>">
+<!ENTITY cv-link-CPPFLAGS "<link linkend='cv-CPPFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CPPFLAGS</envar></link>">
+<!ENTITY cv-link-_CPPINCFLAGS "<link linkend='cv-_CPPINCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_CPPINCFLAGS</envar></link>">
+<!ENTITY cv-link-CPPPATH "<link linkend='cv-CPPPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CPPPATH</envar></link>">
+<!ENTITY cv-link-CPPSUFFIXES "<link linkend='cv-CPPSUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CPPSUFFIXES</envar></link>">
+<!ENTITY cv-link-CVS "<link linkend='cv-CVS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CVS</envar></link>">
+<!ENTITY cv-link-CVSCOFLAGS "<link linkend='cv-CVSCOFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CVSCOFLAGS</envar></link>">
+<!ENTITY cv-link-CVSCOM "<link linkend='cv-CVSCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CVSCOM</envar></link>">
+<!ENTITY cv-link-CVSCOMSTR "<link linkend='cv-CVSCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CVSCOMSTR</envar></link>">
+<!ENTITY cv-link-CVSFLAGS "<link linkend='cv-CVSFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CVSFLAGS</envar></link>">
+<!ENTITY cv-link-CVSREPOSITORY "<link linkend='cv-CVSREPOSITORY' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CVSREPOSITORY</envar></link>">
+<!ENTITY cv-link-CXX "<link linkend='cv-CXX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXX</envar></link>">
+<!ENTITY cv-link-CXXCOM "<link linkend='cv-CXXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXCOM</envar></link>">
+<!ENTITY cv-link-CXXCOMSTR "<link linkend='cv-CXXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXCOMSTR</envar></link>">
+<!ENTITY cv-link-CXXFILESUFFIX "<link linkend='cv-CXXFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXFILESUFFIX</envar></link>">
+<!ENTITY cv-link-CXXFLAGS "<link linkend='cv-CXXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXFLAGS</envar></link>">
+<!ENTITY cv-link-CXXVERSION "<link linkend='cv-CXXVERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXVERSION</envar></link>">
+<!ENTITY cv-link-DESCRIPTION "<link linkend='cv-DESCRIPTION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DESCRIPTION</envar></link>">
+<!ENTITY cv-link-DESCRIPTION_lang "<link linkend='cv-DESCRIPTION_lang' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DESCRIPTION_lang</envar></link>">
+<!ENTITY cv-link-Dir "<link linkend='cv-Dir' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$Dir</envar></link>">
+<!ENTITY cv-link-Dirs "<link linkend='cv-Dirs' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$Dirs</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_EPUB "<link linkend='cv-DOCBOOK_DEFAULT_XSL_EPUB' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_EPUB</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_HTML "<link linkend='cv-DOCBOOK_DEFAULT_XSL_HTML' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_HTML</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED "<link linkend='cv-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_HTMLCHUNKED</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_HTMLHELP "<link linkend='cv-DOCBOOK_DEFAULT_XSL_HTMLHELP' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_HTMLHELP</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_MAN "<link linkend='cv-DOCBOOK_DEFAULT_XSL_MAN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_MAN</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_PDF "<link linkend='cv-DOCBOOK_DEFAULT_XSL_PDF' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_PDF</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_SLIDESHTML "<link linkend='cv-DOCBOOK_DEFAULT_XSL_SLIDESHTML' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_SLIDESHTML</envar></link>">
+<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_SLIDESPDF "<link linkend='cv-DOCBOOK_DEFAULT_XSL_SLIDESPDF' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_SLIDESPDF</envar></link>">
+<!ENTITY cv-link-DOCBOOK_FOP "<link linkend='cv-DOCBOOK_FOP' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_FOP</envar></link>">
+<!ENTITY cv-link-DOCBOOK_FOPCOM "<link linkend='cv-DOCBOOK_FOPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_FOPCOM</envar></link>">
+<!ENTITY cv-link-DOCBOOK_FOPCOMSTR "<link linkend='cv-DOCBOOK_FOPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_FOPCOMSTR</envar></link>">
+<!ENTITY cv-link-DOCBOOK_FOPFLAGS "<link linkend='cv-DOCBOOK_FOPFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_FOPFLAGS</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XMLLINT "<link linkend='cv-DOCBOOK_XMLLINT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XMLLINT</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XMLLINTCOM "<link linkend='cv-DOCBOOK_XMLLINTCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XMLLINTCOM</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XMLLINTCOMSTR "<link linkend='cv-DOCBOOK_XMLLINTCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XMLLINTCOMSTR</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XMLLINTFLAGS "<link linkend='cv-DOCBOOK_XMLLINTFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XMLLINTFLAGS</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XSLTPROC "<link linkend='cv-DOCBOOK_XSLTPROC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROC</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XSLTPROCCOM "<link linkend='cv-DOCBOOK_XSLTPROCCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROCCOM</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XSLTPROCCOMSTR "<link linkend='cv-DOCBOOK_XSLTPROCCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROCCOMSTR</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XSLTPROCFLAGS "<link linkend='cv-DOCBOOK_XSLTPROCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROCFLAGS</envar></link>">
+<!ENTITY cv-link-DOCBOOK_XSLTPROCPARAMS "<link linkend='cv-DOCBOOK_XSLTPROCPARAMS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROCPARAMS</envar></link>">
+<!ENTITY cv-link-DSUFFIXES "<link linkend='cv-DSUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DSUFFIXES</envar></link>">
+<!ENTITY cv-link-DVIPDF "<link linkend='cv-DVIPDF' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPDF</envar></link>">
+<!ENTITY cv-link-DVIPDFCOM "<link linkend='cv-DVIPDFCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPDFCOM</envar></link>">
+<!ENTITY cv-link-DVIPDFCOMSTR "<link linkend='cv-DVIPDFCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPDFCOMSTR</envar></link>">
+<!ENTITY cv-link-DVIPDFFLAGS "<link linkend='cv-DVIPDFFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPDFFLAGS</envar></link>">
+<!ENTITY cv-link-DVIPS "<link linkend='cv-DVIPS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPS</envar></link>">
+<!ENTITY cv-link-DVIPSFLAGS "<link linkend='cv-DVIPSFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPSFLAGS</envar></link>">
+<!ENTITY cv-link-ENV "<link linkend='cv-ENV' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ENV</envar></link>">
+<!ENTITY cv-link-ESCAPE "<link linkend='cv-ESCAPE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ESCAPE</envar></link>">
+<!ENTITY cv-link-F03 "<link linkend='cv-F03' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03</envar></link>">
+<!ENTITY cv-link-F03COM "<link linkend='cv-F03COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03COM</envar></link>">
+<!ENTITY cv-link-F03COMSTR "<link linkend='cv-F03COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03COMSTR</envar></link>">
+<!ENTITY cv-link-F03FILESUFFIXES "<link linkend='cv-F03FILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03FILESUFFIXES</envar></link>">
+<!ENTITY cv-link-F03FLAGS "<link linkend='cv-F03FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03FLAGS</envar></link>">
+<!ENTITY cv-link-_F03INCFLAGS "<link linkend='cv-_F03INCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_F03INCFLAGS</envar></link>">
+<!ENTITY cv-link-F03PATH "<link linkend='cv-F03PATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03PATH</envar></link>">
+<!ENTITY cv-link-F03PPCOM "<link linkend='cv-F03PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03PPCOM</envar></link>">
+<!ENTITY cv-link-F03PPCOMSTR "<link linkend='cv-F03PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03PPCOMSTR</envar></link>">
+<!ENTITY cv-link-F03PPFILESUFFIXES "<link linkend='cv-F03PPFILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F03PPFILESUFFIXES</envar></link>">
+<!ENTITY cv-link-F77 "<link linkend='cv-F77' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77</envar></link>">
+<!ENTITY cv-link-F77COM "<link linkend='cv-F77COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77COM</envar></link>">
+<!ENTITY cv-link-F77COMSTR "<link linkend='cv-F77COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77COMSTR</envar></link>">
+<!ENTITY cv-link-F77FILESUFFIXES "<link linkend='cv-F77FILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77FILESUFFIXES</envar></link>">
+<!ENTITY cv-link-F77FLAGS "<link linkend='cv-F77FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77FLAGS</envar></link>">
+<!ENTITY cv-link-_F77INCFLAGS "<link linkend='cv-_F77INCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_F77INCFLAGS</envar></link>">
+<!ENTITY cv-link-F77PATH "<link linkend='cv-F77PATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77PATH</envar></link>">
+<!ENTITY cv-link-F77PPCOM "<link linkend='cv-F77PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77PPCOM</envar></link>">
+<!ENTITY cv-link-F77PPCOMSTR "<link linkend='cv-F77PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77PPCOMSTR</envar></link>">
+<!ENTITY cv-link-F77PPFILESUFFIXES "<link linkend='cv-F77PPFILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F77PPFILESUFFIXES</envar></link>">
+<!ENTITY cv-link-F90 "<link linkend='cv-F90' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90</envar></link>">
+<!ENTITY cv-link-F90COM "<link linkend='cv-F90COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90COM</envar></link>">
+<!ENTITY cv-link-F90COMSTR "<link linkend='cv-F90COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90COMSTR</envar></link>">
+<!ENTITY cv-link-F90FILESUFFIXES "<link linkend='cv-F90FILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90FILESUFFIXES</envar></link>">
+<!ENTITY cv-link-F90FLAGS "<link linkend='cv-F90FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90FLAGS</envar></link>">
+<!ENTITY cv-link-_F90INCFLAGS "<link linkend='cv-_F90INCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_F90INCFLAGS</envar></link>">
+<!ENTITY cv-link-F90PATH "<link linkend='cv-F90PATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90PATH</envar></link>">
+<!ENTITY cv-link-F90PPCOM "<link linkend='cv-F90PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90PPCOM</envar></link>">
+<!ENTITY cv-link-F90PPCOMSTR "<link linkend='cv-F90PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90PPCOMSTR</envar></link>">
+<!ENTITY cv-link-F90PPFILESUFFIXES "<link linkend='cv-F90PPFILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F90PPFILESUFFIXES</envar></link>">
+<!ENTITY cv-link-F95 "<link linkend='cv-F95' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95</envar></link>">
+<!ENTITY cv-link-F95COM "<link linkend='cv-F95COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95COM</envar></link>">
+<!ENTITY cv-link-F95COMSTR "<link linkend='cv-F95COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95COMSTR</envar></link>">
+<!ENTITY cv-link-F95FILESUFFIXES "<link linkend='cv-F95FILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95FILESUFFIXES</envar></link>">
+<!ENTITY cv-link-F95FLAGS "<link linkend='cv-F95FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95FLAGS</envar></link>">
+<!ENTITY cv-link-_F95INCFLAGS "<link linkend='cv-_F95INCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_F95INCFLAGS</envar></link>">
+<!ENTITY cv-link-F95PATH "<link linkend='cv-F95PATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95PATH</envar></link>">
+<!ENTITY cv-link-F95PPCOM "<link linkend='cv-F95PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95PPCOM</envar></link>">
+<!ENTITY cv-link-F95PPCOMSTR "<link linkend='cv-F95PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95PPCOMSTR</envar></link>">
+<!ENTITY cv-link-F95PPFILESUFFIXES "<link linkend='cv-F95PPFILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$F95PPFILESUFFIXES</envar></link>">
+<!ENTITY cv-link-File "<link linkend='cv-File' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$File</envar></link>">
+<!ENTITY cv-link-FORTRAN "<link linkend='cv-FORTRAN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRAN</envar></link>">
+<!ENTITY cv-link-FORTRANCOM "<link linkend='cv-FORTRANCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANCOM</envar></link>">
+<!ENTITY cv-link-FORTRANCOMSTR "<link linkend='cv-FORTRANCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANCOMSTR</envar></link>">
+<!ENTITY cv-link-FORTRANFILESUFFIXES "<link linkend='cv-FORTRANFILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANFILESUFFIXES</envar></link>">
+<!ENTITY cv-link-FORTRANFLAGS "<link linkend='cv-FORTRANFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANFLAGS</envar></link>">
+<!ENTITY cv-link-_FORTRANINCFLAGS "<link linkend='cv-_FORTRANINCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_FORTRANINCFLAGS</envar></link>">
+<!ENTITY cv-link-FORTRANMODDIR "<link linkend='cv-FORTRANMODDIR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANMODDIR</envar></link>">
+<!ENTITY cv-link-FORTRANMODDIRPREFIX "<link linkend='cv-FORTRANMODDIRPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANMODDIRPREFIX</envar></link>">
+<!ENTITY cv-link-FORTRANMODDIRSUFFIX "<link linkend='cv-FORTRANMODDIRSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANMODDIRSUFFIX</envar></link>">
+<!ENTITY cv-link-_FORTRANMODFLAG "<link linkend='cv-_FORTRANMODFLAG' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_FORTRANMODFLAG</envar></link>">
+<!ENTITY cv-link-FORTRANMODPREFIX "<link linkend='cv-FORTRANMODPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANMODPREFIX</envar></link>">
+<!ENTITY cv-link-FORTRANMODSUFFIX "<link linkend='cv-FORTRANMODSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANMODSUFFIX</envar></link>">
+<!ENTITY cv-link-FORTRANPATH "<link linkend='cv-FORTRANPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANPATH</envar></link>">
+<!ENTITY cv-link-FORTRANPPCOM "<link linkend='cv-FORTRANPPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANPPCOM</envar></link>">
+<!ENTITY cv-link-FORTRANPPCOMSTR "<link linkend='cv-FORTRANPPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANPPCOMSTR</envar></link>">
+<!ENTITY cv-link-FORTRANPPFILESUFFIXES "<link linkend='cv-FORTRANPPFILESUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANPPFILESUFFIXES</envar></link>">
+<!ENTITY cv-link-FORTRANSUFFIXES "<link linkend='cv-FORTRANSUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FORTRANSUFFIXES</envar></link>">
+<!ENTITY cv-link-FRAMEWORKPATH "<link linkend='cv-FRAMEWORKPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FRAMEWORKPATH</envar></link>">
+<!ENTITY cv-link-_FRAMEWORKPATH "<link linkend='cv-_FRAMEWORKPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_FRAMEWORKPATH</envar></link>">
+<!ENTITY cv-link-FRAMEWORKPATHPREFIX "<link linkend='cv-FRAMEWORKPATHPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FRAMEWORKPATHPREFIX</envar></link>">
+<!ENTITY cv-link-FRAMEWORKPREFIX "<link linkend='cv-FRAMEWORKPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FRAMEWORKPREFIX</envar></link>">
+<!ENTITY cv-link-_FRAMEWORKS "<link linkend='cv-_FRAMEWORKS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_FRAMEWORKS</envar></link>">
+<!ENTITY cv-link-FRAMEWORKS "<link linkend='cv-FRAMEWORKS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FRAMEWORKS</envar></link>">
+<!ENTITY cv-link-FRAMEWORKSFLAGS "<link linkend='cv-FRAMEWORKSFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$FRAMEWORKSFLAGS</envar></link>">
+<!ENTITY cv-link-GS "<link linkend='cv-GS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$GS</envar></link>">
+<!ENTITY cv-link-GSCOM "<link linkend='cv-GSCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$GSCOM</envar></link>">
+<!ENTITY cv-link-GSCOMSTR "<link linkend='cv-GSCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$GSCOMSTR</envar></link>">
+<!ENTITY cv-link-GSFLAGS "<link linkend='cv-GSFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$GSFLAGS</envar></link>">
+<!ENTITY cv-link-HOST_ARCH "<link linkend='cv-HOST_ARCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$HOST_ARCH</envar></link>">
+<!ENTITY cv-link-HOST_OS "<link linkend='cv-HOST_OS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$HOST_OS</envar></link>">
+<!ENTITY cv-link-IDLSUFFIXES "<link linkend='cv-IDLSUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$IDLSUFFIXES</envar></link>">
+<!ENTITY cv-link-IMPLICIT_COMMAND_DEPENDENCIES "<link linkend='cv-IMPLICIT_COMMAND_DEPENDENCIES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$IMPLICIT_COMMAND_DEPENDENCIES</envar></link>">
+<!ENTITY cv-link-INCPREFIX "<link linkend='cv-INCPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$INCPREFIX</envar></link>">
+<!ENTITY cv-link-INCSUFFIX "<link linkend='cv-INCSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$INCSUFFIX</envar></link>">
+<!ENTITY cv-link-INSTALL "<link linkend='cv-INSTALL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$INSTALL</envar></link>">
+<!ENTITY cv-link-INSTALLSTR "<link linkend='cv-INSTALLSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$INSTALLSTR</envar></link>">
+<!ENTITY cv-link-INTEL_C_COMPILER_VERSION "<link linkend='cv-INTEL_C_COMPILER_VERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$INTEL_C_COMPILER_VERSION</envar></link>">
+<!ENTITY cv-link-JAR "<link linkend='cv-JAR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAR</envar></link>">
+<!ENTITY cv-link-JARCHDIR "<link linkend='cv-JARCHDIR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JARCHDIR</envar></link>">
+<!ENTITY cv-link-JARCOM "<link linkend='cv-JARCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JARCOM</envar></link>">
+<!ENTITY cv-link-JARCOMSTR "<link linkend='cv-JARCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JARCOMSTR</envar></link>">
+<!ENTITY cv-link-JARFLAGS "<link linkend='cv-JARFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JARFLAGS</envar></link>">
+<!ENTITY cv-link-JARSUFFIX "<link linkend='cv-JARSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JARSUFFIX</envar></link>">
+<!ENTITY cv-link-JAVABOOTCLASSPATH "<link linkend='cv-JAVABOOTCLASSPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVABOOTCLASSPATH</envar></link>">
+<!ENTITY cv-link-JAVAC "<link linkend='cv-JAVAC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVAC</envar></link>">
+<!ENTITY cv-link-JAVACCOM "<link linkend='cv-JAVACCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVACCOM</envar></link>">
+<!ENTITY cv-link-JAVACCOMSTR "<link linkend='cv-JAVACCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVACCOMSTR</envar></link>">
+<!ENTITY cv-link-JAVACFLAGS "<link linkend='cv-JAVACFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVACFLAGS</envar></link>">
+<!ENTITY cv-link-JAVACLASSDIR "<link linkend='cv-JAVACLASSDIR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVACLASSDIR</envar></link>">
+<!ENTITY cv-link-JAVACLASSPATH "<link linkend='cv-JAVACLASSPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVACLASSPATH</envar></link>">
+<!ENTITY cv-link-JAVACLASSSUFFIX "<link linkend='cv-JAVACLASSSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVACLASSSUFFIX</envar></link>">
+<!ENTITY cv-link-JAVAH "<link linkend='cv-JAVAH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVAH</envar></link>">
+<!ENTITY cv-link-JAVAHCOM "<link linkend='cv-JAVAHCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVAHCOM</envar></link>">
+<!ENTITY cv-link-JAVAHCOMSTR "<link linkend='cv-JAVAHCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVAHCOMSTR</envar></link>">
+<!ENTITY cv-link-JAVAHFLAGS "<link linkend='cv-JAVAHFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVAHFLAGS</envar></link>">
+<!ENTITY cv-link-JAVASOURCEPATH "<link linkend='cv-JAVASOURCEPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVASOURCEPATH</envar></link>">
+<!ENTITY cv-link-JAVASUFFIX "<link linkend='cv-JAVASUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVASUFFIX</envar></link>">
+<!ENTITY cv-link-JAVAVERSION "<link linkend='cv-JAVAVERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$JAVAVERSION</envar></link>">
+<!ENTITY cv-link-LATEX "<link linkend='cv-LATEX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LATEX</envar></link>">
+<!ENTITY cv-link-LATEXCOM "<link linkend='cv-LATEXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LATEXCOM</envar></link>">
+<!ENTITY cv-link-LATEXCOMSTR "<link linkend='cv-LATEXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LATEXCOMSTR</envar></link>">
+<!ENTITY cv-link-LATEXFLAGS "<link linkend='cv-LATEXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LATEXFLAGS</envar></link>">
+<!ENTITY cv-link-LATEXRETRIES "<link linkend='cv-LATEXRETRIES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LATEXRETRIES</envar></link>">
+<!ENTITY cv-link-LATEXSUFFIXES "<link linkend='cv-LATEXSUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LATEXSUFFIXES</envar></link>">
+<!ENTITY cv-link-LDMODULE "<link linkend='cv-LDMODULE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULE</envar></link>">
+<!ENTITY cv-link-LDMODULECOM "<link linkend='cv-LDMODULECOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULECOM</envar></link>">
+<!ENTITY cv-link-LDMODULECOMSTR "<link linkend='cv-LDMODULECOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULECOMSTR</envar></link>">
+<!ENTITY cv-link-LDMODULEFLAGS "<link linkend='cv-LDMODULEFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULEFLAGS</envar></link>">
+<!ENTITY cv-link-LDMODULEPREFIX "<link linkend='cv-LDMODULEPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULEPREFIX</envar></link>">
+<!ENTITY cv-link-LDMODULESUFFIX "<link linkend='cv-LDMODULESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULESUFFIX</envar></link>">
+<!ENTITY cv-link-LEX "<link linkend='cv-LEX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LEX</envar></link>">
+<!ENTITY cv-link-LEXCOM "<link linkend='cv-LEXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LEXCOM</envar></link>">
+<!ENTITY cv-link-LEXCOMSTR "<link linkend='cv-LEXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LEXCOMSTR</envar></link>">
+<!ENTITY cv-link-LEXFLAGS "<link linkend='cv-LEXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LEXFLAGS</envar></link>">
+<!ENTITY cv-link-_LIBDIRFLAGS "<link linkend='cv-_LIBDIRFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_LIBDIRFLAGS</envar></link>">
+<!ENTITY cv-link-LIBDIRPREFIX "<link linkend='cv-LIBDIRPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBDIRPREFIX</envar></link>">
+<!ENTITY cv-link-LIBDIRSUFFIX "<link linkend='cv-LIBDIRSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBDIRSUFFIX</envar></link>">
+<!ENTITY cv-link-LIBEMITTER "<link linkend='cv-LIBEMITTER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBEMITTER</envar></link>">
+<!ENTITY cv-link-_LIBFLAGS "<link linkend='cv-_LIBFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_LIBFLAGS</envar></link>">
+<!ENTITY cv-link-LIBLINKPREFIX "<link linkend='cv-LIBLINKPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBLINKPREFIX</envar></link>">
+<!ENTITY cv-link-LIBLINKSUFFIX "<link linkend='cv-LIBLINKSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBLINKSUFFIX</envar></link>">
+<!ENTITY cv-link-LIBPATH "<link linkend='cv-LIBPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBPATH</envar></link>">
+<!ENTITY cv-link-LIBPREFIX "<link linkend='cv-LIBPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBPREFIX</envar></link>">
+<!ENTITY cv-link-LIBPREFIXES "<link linkend='cv-LIBPREFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBPREFIXES</envar></link>">
+<!ENTITY cv-link-LIBS "<link linkend='cv-LIBS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBS</envar></link>">
+<!ENTITY cv-link-LIBSUFFIX "<link linkend='cv-LIBSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBSUFFIX</envar></link>">
+<!ENTITY cv-link-LIBSUFFIXES "<link linkend='cv-LIBSUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LIBSUFFIXES</envar></link>">
+<!ENTITY cv-link-LICENSE "<link linkend='cv-LICENSE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LICENSE</envar></link>">
+<!ENTITY cv-link-LINESEPARATOR "<link linkend='cv-LINESEPARATOR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LINESEPARATOR</envar></link>">
+<!ENTITY cv-link-LINGUAS_FILE "<link linkend='cv-LINGUAS_FILE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LINGUAS_FILE</envar></link>">
+<!ENTITY cv-link-LINK "<link linkend='cv-LINK' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LINK</envar></link>">
+<!ENTITY cv-link-LINKCOM "<link linkend='cv-LINKCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LINKCOM</envar></link>">
+<!ENTITY cv-link-LINKCOMSTR "<link linkend='cv-LINKCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LINKCOMSTR</envar></link>">
+<!ENTITY cv-link-LINKFLAGS "<link linkend='cv-LINKFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LINKFLAGS</envar></link>">
+<!ENTITY cv-link-M4 "<link linkend='cv-M4' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$M4</envar></link>">
+<!ENTITY cv-link-M4COM "<link linkend='cv-M4COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$M4COM</envar></link>">
+<!ENTITY cv-link-M4COMSTR "<link linkend='cv-M4COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$M4COMSTR</envar></link>">
+<!ENTITY cv-link-M4FLAGS "<link linkend='cv-M4FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$M4FLAGS</envar></link>">
+<!ENTITY cv-link-MAKEINDEX "<link linkend='cv-MAKEINDEX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MAKEINDEX</envar></link>">
+<!ENTITY cv-link-MAKEINDEXCOM "<link linkend='cv-MAKEINDEXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MAKEINDEXCOM</envar></link>">
+<!ENTITY cv-link-MAKEINDEXCOMSTR "<link linkend='cv-MAKEINDEXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MAKEINDEXCOMSTR</envar></link>">
+<!ENTITY cv-link-MAKEINDEXFLAGS "<link linkend='cv-MAKEINDEXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MAKEINDEXFLAGS</envar></link>">
+<!ENTITY cv-link-MAXLINELENGTH "<link linkend='cv-MAXLINELENGTH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MAXLINELENGTH</envar></link>">
+<!ENTITY cv-link-MIDL "<link linkend='cv-MIDL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MIDL</envar></link>">
+<!ENTITY cv-link-MIDLCOM "<link linkend='cv-MIDLCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MIDLCOM</envar></link>">
+<!ENTITY cv-link-MIDLCOMSTR "<link linkend='cv-MIDLCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MIDLCOMSTR</envar></link>">
+<!ENTITY cv-link-MIDLFLAGS "<link linkend='cv-MIDLFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MIDLFLAGS</envar></link>">
+<!ENTITY cv-link-MOSUFFIX "<link linkend='cv-MOSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MOSUFFIX</envar></link>">
+<!ENTITY cv-link-MSGFMT "<link linkend='cv-MSGFMT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGFMT</envar></link>">
+<!ENTITY cv-link-MSGFMTCOM "<link linkend='cv-MSGFMTCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGFMTCOM</envar></link>">
+<!ENTITY cv-link-MSGFMTCOMSTR "<link linkend='cv-MSGFMTCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGFMTCOMSTR</envar></link>">
+<!ENTITY cv-link-MSGFMTFLAGS "<link linkend='cv-MSGFMTFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGFMTFLAGS</envar></link>">
+<!ENTITY cv-link-MSGINIT "<link linkend='cv-MSGINIT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGINIT</envar></link>">
+<!ENTITY cv-link-MSGINITCOM "<link linkend='cv-MSGINITCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGINITCOM</envar></link>">
+<!ENTITY cv-link-MSGINITCOMSTR "<link linkend='cv-MSGINITCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGINITCOMSTR</envar></link>">
+<!ENTITY cv-link-MSGINITFLAGS "<link linkend='cv-MSGINITFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGINITFLAGS</envar></link>">
+<!ENTITY cv-link-_MSGINITLOCALE "<link linkend='cv-_MSGINITLOCALE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_MSGINITLOCALE</envar></link>">
+<!ENTITY cv-link-MSGMERGE "<link linkend='cv-MSGMERGE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGMERGE</envar></link>">
+<!ENTITY cv-link-MSGMERGECOM "<link linkend='cv-MSGMERGECOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGMERGECOM</envar></link>">
+<!ENTITY cv-link-MSGMERGECOMSTR "<link linkend='cv-MSGMERGECOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGMERGECOMSTR</envar></link>">
+<!ENTITY cv-link-MSGMERGEFLAGS "<link linkend='cv-MSGMERGEFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSGMERGEFLAGS</envar></link>">
+<!ENTITY cv-link-MSSDK_DIR "<link linkend='cv-MSSDK_DIR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSSDK_DIR</envar></link>">
+<!ENTITY cv-link-MSSDK_VERSION "<link linkend='cv-MSSDK_VERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSSDK_VERSION</envar></link>">
+<!ENTITY cv-link-MSVC_BATCH "<link linkend='cv-MSVC_BATCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVC_BATCH</envar></link>">
+<!ENTITY cv-link-MSVC_USE_SCRIPT "<link linkend='cv-MSVC_USE_SCRIPT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVC_USE_SCRIPT</envar></link>">
+<!ENTITY cv-link-MSVC_VERSION "<link linkend='cv-MSVC_VERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVC_VERSION</envar></link>">
+<!ENTITY cv-link-MSVS "<link linkend='cv-MSVS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS</envar></link>">
+<!ENTITY cv-link-MSVS_ARCH "<link linkend='cv-MSVS_ARCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS_ARCH</envar></link>">
+<!ENTITY cv-link-MSVS_PROJECT_GUID "<link linkend='cv-MSVS_PROJECT_GUID' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS_PROJECT_GUID</envar></link>">
+<!ENTITY cv-link-MSVS_SCC_AUX_PATH "<link linkend='cv-MSVS_SCC_AUX_PATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS_SCC_AUX_PATH</envar></link>">
+<!ENTITY cv-link-MSVS_SCC_CONNECTION_ROOT "<link linkend='cv-MSVS_SCC_CONNECTION_ROOT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS_SCC_CONNECTION_ROOT</envar></link>">
+<!ENTITY cv-link-MSVS_SCC_PROJECT_NAME "<link linkend='cv-MSVS_SCC_PROJECT_NAME' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS_SCC_PROJECT_NAME</envar></link>">
+<!ENTITY cv-link-MSVS_SCC_PROVIDER "<link linkend='cv-MSVS_SCC_PROVIDER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS_SCC_PROVIDER</envar></link>">
+<!ENTITY cv-link-MSVS_VERSION "<link linkend='cv-MSVS_VERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVS_VERSION</envar></link>">
+<!ENTITY cv-link-MSVSBUILDCOM "<link linkend='cv-MSVSBUILDCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSBUILDCOM</envar></link>">
+<!ENTITY cv-link-MSVSCLEANCOM "<link linkend='cv-MSVSCLEANCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSCLEANCOM</envar></link>">
+<!ENTITY cv-link-MSVSENCODING "<link linkend='cv-MSVSENCODING' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSENCODING</envar></link>">
+<!ENTITY cv-link-MSVSPROJECTCOM "<link linkend='cv-MSVSPROJECTCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSPROJECTCOM</envar></link>">
+<!ENTITY cv-link-MSVSPROJECTSUFFIX "<link linkend='cv-MSVSPROJECTSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSPROJECTSUFFIX</envar></link>">
+<!ENTITY cv-link-MSVSREBUILDCOM "<link linkend='cv-MSVSREBUILDCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSREBUILDCOM</envar></link>">
+<!ENTITY cv-link-MSVSSCONS "<link linkend='cv-MSVSSCONS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSSCONS</envar></link>">
+<!ENTITY cv-link-MSVSSCONSCOM "<link linkend='cv-MSVSSCONSCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSSCONSCOM</envar></link>">
+<!ENTITY cv-link-MSVSSCONSCRIPT "<link linkend='cv-MSVSSCONSCRIPT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSSCONSCRIPT</envar></link>">
+<!ENTITY cv-link-MSVSSCONSFLAGS "<link linkend='cv-MSVSSCONSFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSSCONSFLAGS</envar></link>">
+<!ENTITY cv-link-MSVSSOLUTIONCOM "<link linkend='cv-MSVSSOLUTIONCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSSOLUTIONCOM</envar></link>">
+<!ENTITY cv-link-MSVSSOLUTIONSUFFIX "<link linkend='cv-MSVSSOLUTIONSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MSVSSOLUTIONSUFFIX</envar></link>">
+<!ENTITY cv-link-MT "<link linkend='cv-MT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MT</envar></link>">
+<!ENTITY cv-link-MTEXECOM "<link linkend='cv-MTEXECOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MTEXECOM</envar></link>">
+<!ENTITY cv-link-MTFLAGS "<link linkend='cv-MTFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MTFLAGS</envar></link>">
+<!ENTITY cv-link-MTSHLIBCOM "<link linkend='cv-MTSHLIBCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MTSHLIBCOM</envar></link>">
+<!ENTITY cv-link-MWCW_VERSION "<link linkend='cv-MWCW_VERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MWCW_VERSION</envar></link>">
+<!ENTITY cv-link-MWCW_VERSIONS "<link linkend='cv-MWCW_VERSIONS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$MWCW_VERSIONS</envar></link>">
+<!ENTITY cv-link-NAME "<link linkend='cv-NAME' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$NAME</envar></link>">
+<!ENTITY cv-link-no_import_lib "<link linkend='cv-no_import_lib' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$no_import_lib</envar></link>">
+<!ENTITY cv-link-OBJPREFIX "<link linkend='cv-OBJPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$OBJPREFIX</envar></link>">
+<!ENTITY cv-link-OBJSUFFIX "<link linkend='cv-OBJSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$OBJSUFFIX</envar></link>">
+<!ENTITY cv-link-P4 "<link linkend='cv-P4' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$P4</envar></link>">
+<!ENTITY cv-link-P4COM "<link linkend='cv-P4COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$P4COM</envar></link>">
+<!ENTITY cv-link-P4COMSTR "<link linkend='cv-P4COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$P4COMSTR</envar></link>">
+<!ENTITY cv-link-P4FLAGS "<link linkend='cv-P4FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$P4FLAGS</envar></link>">
+<!ENTITY cv-link-PACKAGEROOT "<link linkend='cv-PACKAGEROOT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PACKAGEROOT</envar></link>">
+<!ENTITY cv-link-PACKAGETYPE "<link linkend='cv-PACKAGETYPE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PACKAGETYPE</envar></link>">
+<!ENTITY cv-link-PACKAGEVERSION "<link linkend='cv-PACKAGEVERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PACKAGEVERSION</envar></link>">
+<!ENTITY cv-link-PCH "<link linkend='cv-PCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PCH</envar></link>">
+<!ENTITY cv-link-PCHCOM "<link linkend='cv-PCHCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PCHCOM</envar></link>">
+<!ENTITY cv-link-PCHCOMSTR "<link linkend='cv-PCHCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PCHCOMSTR</envar></link>">
+<!ENTITY cv-link-PCHPDBFLAGS "<link linkend='cv-PCHPDBFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PCHPDBFLAGS</envar></link>">
+<!ENTITY cv-link-PCHSTOP "<link linkend='cv-PCHSTOP' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PCHSTOP</envar></link>">
+<!ENTITY cv-link-PDB "<link linkend='cv-PDB' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDB</envar></link>">
+<!ENTITY cv-link-PDFCOM "<link linkend='cv-PDFCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFCOM</envar></link>">
+<!ENTITY cv-link-PDFLATEX "<link linkend='cv-PDFLATEX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFLATEX</envar></link>">
+<!ENTITY cv-link-PDFLATEXCOM "<link linkend='cv-PDFLATEXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFLATEXCOM</envar></link>">
+<!ENTITY cv-link-PDFLATEXCOMSTR "<link linkend='cv-PDFLATEXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFLATEXCOMSTR</envar></link>">
+<!ENTITY cv-link-PDFLATEXFLAGS "<link linkend='cv-PDFLATEXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFLATEXFLAGS</envar></link>">
+<!ENTITY cv-link-PDFPREFIX "<link linkend='cv-PDFPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFPREFIX</envar></link>">
+<!ENTITY cv-link-PDFSUFFIX "<link linkend='cv-PDFSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFSUFFIX</envar></link>">
+<!ENTITY cv-link-PDFTEX "<link linkend='cv-PDFTEX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFTEX</envar></link>">
+<!ENTITY cv-link-PDFTEXCOM "<link linkend='cv-PDFTEXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFTEXCOM</envar></link>">
+<!ENTITY cv-link-PDFTEXCOMSTR "<link linkend='cv-PDFTEXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFTEXCOMSTR</envar></link>">
+<!ENTITY cv-link-PDFTEXFLAGS "<link linkend='cv-PDFTEXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PDFTEXFLAGS</envar></link>">
+<!ENTITY cv-link-PKGCHK "<link linkend='cv-PKGCHK' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PKGCHK</envar></link>">
+<!ENTITY cv-link-PKGINFO "<link linkend='cv-PKGINFO' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PKGINFO</envar></link>">
+<!ENTITY cv-link-PLATFORM "<link linkend='cv-PLATFORM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PLATFORM</envar></link>">
+<!ENTITY cv-link-POAUTOINIT "<link linkend='cv-POAUTOINIT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$POAUTOINIT</envar></link>">
+<!ENTITY cv-link-POCREATE_ALIAS "<link linkend='cv-POCREATE_ALIAS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$POCREATE_ALIAS</envar></link>">
+<!ENTITY cv-link-POSUFFIX "<link linkend='cv-POSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$POSUFFIX</envar></link>">
+<!ENTITY cv-link-POTDOMAIN "<link linkend='cv-POTDOMAIN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$POTDOMAIN</envar></link>">
+<!ENTITY cv-link-POTSUFFIX "<link linkend='cv-POTSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$POTSUFFIX</envar></link>">
+<!ENTITY cv-link-POTUPDATE_ALIAS "<link linkend='cv-POTUPDATE_ALIAS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$POTUPDATE_ALIAS</envar></link>">
+<!ENTITY cv-link-POUPDATE_ALIAS "<link linkend='cv-POUPDATE_ALIAS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$POUPDATE_ALIAS</envar></link>">
+<!ENTITY cv-link-PRINT_CMD_LINE_FUNC "<link linkend='cv-PRINT_CMD_LINE_FUNC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PRINT_CMD_LINE_FUNC</envar></link>">
+<!ENTITY cv-link-PROGEMITTER "<link linkend='cv-PROGEMITTER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PROGEMITTER</envar></link>">
+<!ENTITY cv-link-PROGPREFIX "<link linkend='cv-PROGPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PROGPREFIX</envar></link>">
+<!ENTITY cv-link-PROGSUFFIX "<link linkend='cv-PROGSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PROGSUFFIX</envar></link>">
+<!ENTITY cv-link-PSCOM "<link linkend='cv-PSCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PSCOM</envar></link>">
+<!ENTITY cv-link-PSCOMSTR "<link linkend='cv-PSCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PSCOMSTR</envar></link>">
+<!ENTITY cv-link-PSPREFIX "<link linkend='cv-PSPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PSPREFIX</envar></link>">
+<!ENTITY cv-link-PSSUFFIX "<link linkend='cv-PSSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$PSSUFFIX</envar></link>">
+<!ENTITY cv-link-QT_AUTOSCAN "<link linkend='cv-QT_AUTOSCAN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_AUTOSCAN</envar></link>">
+<!ENTITY cv-link-QT_BINPATH "<link linkend='cv-QT_BINPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_BINPATH</envar></link>">
+<!ENTITY cv-link-QT_CPPPATH "<link linkend='cv-QT_CPPPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_CPPPATH</envar></link>">
+<!ENTITY cv-link-QT_DEBUG "<link linkend='cv-QT_DEBUG' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_DEBUG</envar></link>">
+<!ENTITY cv-link-QT_LIB "<link linkend='cv-QT_LIB' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_LIB</envar></link>">
+<!ENTITY cv-link-QT_LIBPATH "<link linkend='cv-QT_LIBPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_LIBPATH</envar></link>">
+<!ENTITY cv-link-QT_MOC "<link linkend='cv-QT_MOC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOC</envar></link>">
+<!ENTITY cv-link-QT_MOCCXXPREFIX "<link linkend='cv-QT_MOCCXXPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCCXXPREFIX</envar></link>">
+<!ENTITY cv-link-QT_MOCCXXSUFFIX "<link linkend='cv-QT_MOCCXXSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCCXXSUFFIX</envar></link>">
+<!ENTITY cv-link-QT_MOCFROMCXXCOM "<link linkend='cv-QT_MOCFROMCXXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCFROMCXXCOM</envar></link>">
+<!ENTITY cv-link-QT_MOCFROMCXXCOMSTR "<link linkend='cv-QT_MOCFROMCXXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCFROMCXXCOMSTR</envar></link>">
+<!ENTITY cv-link-QT_MOCFROMCXXFLAGS "<link linkend='cv-QT_MOCFROMCXXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCFROMCXXFLAGS</envar></link>">
+<!ENTITY cv-link-QT_MOCFROMHCOM "<link linkend='cv-QT_MOCFROMHCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCFROMHCOM</envar></link>">
+<!ENTITY cv-link-QT_MOCFROMHCOMSTR "<link linkend='cv-QT_MOCFROMHCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCFROMHCOMSTR</envar></link>">
+<!ENTITY cv-link-QT_MOCFROMHFLAGS "<link linkend='cv-QT_MOCFROMHFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCFROMHFLAGS</envar></link>">
+<!ENTITY cv-link-QT_MOCHPREFIX "<link linkend='cv-QT_MOCHPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCHPREFIX</envar></link>">
+<!ENTITY cv-link-QT_MOCHSUFFIX "<link linkend='cv-QT_MOCHSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_MOCHSUFFIX</envar></link>">
+<!ENTITY cv-link-QT_UIC "<link linkend='cv-QT_UIC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UIC</envar></link>">
+<!ENTITY cv-link-QT_UICCOM "<link linkend='cv-QT_UICCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICCOM</envar></link>">
+<!ENTITY cv-link-QT_UICCOMSTR "<link linkend='cv-QT_UICCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICCOMSTR</envar></link>">
+<!ENTITY cv-link-QT_UICDECLFLAGS "<link linkend='cv-QT_UICDECLFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICDECLFLAGS</envar></link>">
+<!ENTITY cv-link-QT_UICDECLPREFIX "<link linkend='cv-QT_UICDECLPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICDECLPREFIX</envar></link>">
+<!ENTITY cv-link-QT_UICDECLSUFFIX "<link linkend='cv-QT_UICDECLSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICDECLSUFFIX</envar></link>">
+<!ENTITY cv-link-QT_UICIMPLFLAGS "<link linkend='cv-QT_UICIMPLFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICIMPLFLAGS</envar></link>">
+<!ENTITY cv-link-QT_UICIMPLPREFIX "<link linkend='cv-QT_UICIMPLPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICIMPLPREFIX</envar></link>">
+<!ENTITY cv-link-QT_UICIMPLSUFFIX "<link linkend='cv-QT_UICIMPLSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UICIMPLSUFFIX</envar></link>">
+<!ENTITY cv-link-QT_UISUFFIX "<link linkend='cv-QT_UISUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QT_UISUFFIX</envar></link>">
+<!ENTITY cv-link-QTDIR "<link linkend='cv-QTDIR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$QTDIR</envar></link>">
+<!ENTITY cv-link-RANLIB "<link linkend='cv-RANLIB' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RANLIB</envar></link>">
+<!ENTITY cv-link-RANLIBCOM "<link linkend='cv-RANLIBCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RANLIBCOM</envar></link>">
+<!ENTITY cv-link-RANLIBCOMSTR "<link linkend='cv-RANLIBCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RANLIBCOMSTR</envar></link>">
+<!ENTITY cv-link-RANLIBFLAGS "<link linkend='cv-RANLIBFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RANLIBFLAGS</envar></link>">
+<!ENTITY cv-link-RC "<link linkend='cv-RC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RC</envar></link>">
+<!ENTITY cv-link-RCCOM "<link linkend='cv-RCCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCCOM</envar></link>">
+<!ENTITY cv-link-RCCOMSTR "<link linkend='cv-RCCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCCOMSTR</envar></link>">
+<!ENTITY cv-link-RCFLAGS "<link linkend='cv-RCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCFLAGS</envar></link>">
+<!ENTITY cv-link-RCINCFLAGS "<link linkend='cv-RCINCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCINCFLAGS</envar></link>">
+<!ENTITY cv-link-RCINCPREFIX "<link linkend='cv-RCINCPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCINCPREFIX</envar></link>">
+<!ENTITY cv-link-RCINCSUFFIX "<link linkend='cv-RCINCSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCINCSUFFIX</envar></link>">
+<!ENTITY cv-link-RCS "<link linkend='cv-RCS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCS</envar></link>">
+<!ENTITY cv-link-RCS_CO "<link linkend='cv-RCS_CO' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCS_CO</envar></link>">
+<!ENTITY cv-link-RCS_COCOM "<link linkend='cv-RCS_COCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCS_COCOM</envar></link>">
+<!ENTITY cv-link-RCS_COCOMSTR "<link linkend='cv-RCS_COCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCS_COCOMSTR</envar></link>">
+<!ENTITY cv-link-RCS_COFLAGS "<link linkend='cv-RCS_COFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RCS_COFLAGS</envar></link>">
+<!ENTITY cv-link-RDirs "<link linkend='cv-RDirs' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RDirs</envar></link>">
+<!ENTITY cv-link-REGSVR "<link linkend='cv-REGSVR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$REGSVR</envar></link>">
+<!ENTITY cv-link-REGSVRCOM "<link linkend='cv-REGSVRCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$REGSVRCOM</envar></link>">
+<!ENTITY cv-link-REGSVRCOMSTR "<link linkend='cv-REGSVRCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$REGSVRCOMSTR</envar></link>">
+<!ENTITY cv-link-REGSVRFLAGS "<link linkend='cv-REGSVRFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$REGSVRFLAGS</envar></link>">
+<!ENTITY cv-link-RMIC "<link linkend='cv-RMIC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RMIC</envar></link>">
+<!ENTITY cv-link-RMICCOM "<link linkend='cv-RMICCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RMICCOM</envar></link>">
+<!ENTITY cv-link-RMICCOMSTR "<link linkend='cv-RMICCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RMICCOMSTR</envar></link>">
+<!ENTITY cv-link-RMICFLAGS "<link linkend='cv-RMICFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RMICFLAGS</envar></link>">
+<!ENTITY cv-link-_RPATH "<link linkend='cv-_RPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_RPATH</envar></link>">
+<!ENTITY cv-link-RPATH "<link linkend='cv-RPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPATH</envar></link>">
+<!ENTITY cv-link-RPATHPREFIX "<link linkend='cv-RPATHPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPATHPREFIX</envar></link>">
+<!ENTITY cv-link-RPATHSUFFIX "<link linkend='cv-RPATHSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPATHSUFFIX</envar></link>">
+<!ENTITY cv-link-RPCGEN "<link linkend='cv-RPCGEN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPCGEN</envar></link>">
+<!ENTITY cv-link-RPCGENCLIENTFLAGS "<link linkend='cv-RPCGENCLIENTFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPCGENCLIENTFLAGS</envar></link>">
+<!ENTITY cv-link-RPCGENFLAGS "<link linkend='cv-RPCGENFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPCGENFLAGS</envar></link>">
+<!ENTITY cv-link-RPCGENHEADERFLAGS "<link linkend='cv-RPCGENHEADERFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPCGENHEADERFLAGS</envar></link>">
+<!ENTITY cv-link-RPCGENSERVICEFLAGS "<link linkend='cv-RPCGENSERVICEFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPCGENSERVICEFLAGS</envar></link>">
+<!ENTITY cv-link-RPCGENXDRFLAGS "<link linkend='cv-RPCGENXDRFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$RPCGENXDRFLAGS</envar></link>">
+<!ENTITY cv-link-SCANNERS "<link linkend='cv-SCANNERS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SCANNERS</envar></link>">
+<!ENTITY cv-link-SCCS "<link linkend='cv-SCCS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SCCS</envar></link>">
+<!ENTITY cv-link-SCCSCOM "<link linkend='cv-SCCSCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SCCSCOM</envar></link>">
+<!ENTITY cv-link-SCCSCOMSTR "<link linkend='cv-SCCSCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SCCSCOMSTR</envar></link>">
+<!ENTITY cv-link-SCCSFLAGS "<link linkend='cv-SCCSFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SCCSFLAGS</envar></link>">
+<!ENTITY cv-link-SCCSGETFLAGS "<link linkend='cv-SCCSGETFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SCCSGETFLAGS</envar></link>">
+<!ENTITY cv-link-SCONS_HOME "<link linkend='cv-SCONS_HOME' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SCONS_HOME</envar></link>">
+<!ENTITY cv-link-SHCC "<link linkend='cv-SHCC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCC</envar></link>">
+<!ENTITY cv-link-SHCCCOM "<link linkend='cv-SHCCCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCCCOM</envar></link>">
+<!ENTITY cv-link-SHCCCOMSTR "<link linkend='cv-SHCCCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCCCOMSTR</envar></link>">
+<!ENTITY cv-link-SHCCFLAGS "<link linkend='cv-SHCCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCCFLAGS</envar></link>">
+<!ENTITY cv-link-SHCFLAGS "<link linkend='cv-SHCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCFLAGS</envar></link>">
+<!ENTITY cv-link-SHCXX "<link linkend='cv-SHCXX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCXX</envar></link>">
+<!ENTITY cv-link-SHCXXCOM "<link linkend='cv-SHCXXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCXXCOM</envar></link>">
+<!ENTITY cv-link-SHCXXCOMSTR "<link linkend='cv-SHCXXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCXXCOMSTR</envar></link>">
+<!ENTITY cv-link-SHCXXFLAGS "<link linkend='cv-SHCXXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCXXFLAGS</envar></link>">
+<!ENTITY cv-link-SHELL "<link linkend='cv-SHELL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHELL</envar></link>">
+<!ENTITY cv-link-SHF03 "<link linkend='cv-SHF03' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03</envar></link>">
+<!ENTITY cv-link-SHF03COM "<link linkend='cv-SHF03COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03COM</envar></link>">
+<!ENTITY cv-link-SHF03COMSTR "<link linkend='cv-SHF03COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03COMSTR</envar></link>">
+<!ENTITY cv-link-SHF03FLAGS "<link linkend='cv-SHF03FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03FLAGS</envar></link>">
+<!ENTITY cv-link-SHF03PPCOM "<link linkend='cv-SHF03PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03PPCOM</envar></link>">
+<!ENTITY cv-link-SHF03PPCOMSTR "<link linkend='cv-SHF03PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03PPCOMSTR</envar></link>">
+<!ENTITY cv-link-SHF77 "<link linkend='cv-SHF77' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF77</envar></link>">
+<!ENTITY cv-link-SHF77COM "<link linkend='cv-SHF77COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF77COM</envar></link>">
+<!ENTITY cv-link-SHF77COMSTR "<link linkend='cv-SHF77COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF77COMSTR</envar></link>">
+<!ENTITY cv-link-SHF77FLAGS "<link linkend='cv-SHF77FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF77FLAGS</envar></link>">
+<!ENTITY cv-link-SHF77PPCOM "<link linkend='cv-SHF77PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF77PPCOM</envar></link>">
+<!ENTITY cv-link-SHF77PPCOMSTR "<link linkend='cv-SHF77PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF77PPCOMSTR</envar></link>">
+<!ENTITY cv-link-SHF90 "<link linkend='cv-SHF90' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF90</envar></link>">
+<!ENTITY cv-link-SHF90COM "<link linkend='cv-SHF90COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF90COM</envar></link>">
+<!ENTITY cv-link-SHF90COMSTR "<link linkend='cv-SHF90COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF90COMSTR</envar></link>">
+<!ENTITY cv-link-SHF90FLAGS "<link linkend='cv-SHF90FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF90FLAGS</envar></link>">
+<!ENTITY cv-link-SHF90PPCOM "<link linkend='cv-SHF90PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF90PPCOM</envar></link>">
+<!ENTITY cv-link-SHF90PPCOMSTR "<link linkend='cv-SHF90PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF90PPCOMSTR</envar></link>">
+<!ENTITY cv-link-SHF95 "<link linkend='cv-SHF95' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF95</envar></link>">
+<!ENTITY cv-link-SHF95COM "<link linkend='cv-SHF95COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF95COM</envar></link>">
+<!ENTITY cv-link-SHF95COMSTR "<link linkend='cv-SHF95COMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF95COMSTR</envar></link>">
+<!ENTITY cv-link-SHF95FLAGS "<link linkend='cv-SHF95FLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF95FLAGS</envar></link>">
+<!ENTITY cv-link-SHF95PPCOM "<link linkend='cv-SHF95PPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF95PPCOM</envar></link>">
+<!ENTITY cv-link-SHF95PPCOMSTR "<link linkend='cv-SHF95PPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF95PPCOMSTR</envar></link>">
+<!ENTITY cv-link-SHFORTRAN "<link linkend='cv-SHFORTRAN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHFORTRAN</envar></link>">
+<!ENTITY cv-link-SHFORTRANCOM "<link linkend='cv-SHFORTRANCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHFORTRANCOM</envar></link>">
+<!ENTITY cv-link-SHFORTRANCOMSTR "<link linkend='cv-SHFORTRANCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHFORTRANCOMSTR</envar></link>">
+<!ENTITY cv-link-SHFORTRANFLAGS "<link linkend='cv-SHFORTRANFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHFORTRANFLAGS</envar></link>">
+<!ENTITY cv-link-SHFORTRANPPCOM "<link linkend='cv-SHFORTRANPPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHFORTRANPPCOM</envar></link>">
+<!ENTITY cv-link-SHFORTRANPPCOMSTR "<link linkend='cv-SHFORTRANPPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHFORTRANPPCOMSTR</envar></link>">
+<!ENTITY cv-link-SHLIBEMITTER "<link linkend='cv-SHLIBEMITTER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLIBEMITTER</envar></link>">
+<!ENTITY cv-link-SHLIBPREFIX "<link linkend='cv-SHLIBPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLIBPREFIX</envar></link>">
+<!ENTITY cv-link-SHLIBSUFFIX "<link linkend='cv-SHLIBSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLIBSUFFIX</envar></link>">
+<!ENTITY cv-link-SHLIBVERSION "<link linkend='cv-SHLIBVERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLIBVERSION</envar></link>">
+<!ENTITY cv-link-SHLINK "<link linkend='cv-SHLINK' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLINK</envar></link>">
+<!ENTITY cv-link-SHLINKCOM "<link linkend='cv-SHLINKCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLINKCOM</envar></link>">
+<!ENTITY cv-link-SHLINKCOMSTR "<link linkend='cv-SHLINKCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLINKCOMSTR</envar></link>">
+<!ENTITY cv-link-SHLINKFLAGS "<link linkend='cv-SHLINKFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHLINKFLAGS</envar></link>">
+<!ENTITY cv-link-SHOBJPREFIX "<link linkend='cv-SHOBJPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHOBJPREFIX</envar></link>">
+<!ENTITY cv-link-SHOBJSUFFIX "<link linkend='cv-SHOBJSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHOBJSUFFIX</envar></link>">
+<!ENTITY cv-link-SOURCE "<link linkend='cv-SOURCE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SOURCE</envar></link>">
+<!ENTITY cv-link-SOURCE_URL "<link linkend='cv-SOURCE_URL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SOURCE_URL</envar></link>">
+<!ENTITY cv-link-SOURCES "<link linkend='cv-SOURCES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SOURCES</envar></link>">
+<!ENTITY cv-link-SPAWN "<link linkend='cv-SPAWN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SPAWN</envar></link>">
+<!ENTITY cv-link-SUBST_DICT "<link linkend='cv-SUBST_DICT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SUBST_DICT</envar></link>">
+<!ENTITY cv-link-SUBSTFILEPREFIX "<link linkend='cv-SUBSTFILEPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SUBSTFILEPREFIX</envar></link>">
+<!ENTITY cv-link-SUBSTFILESUFFIX "<link linkend='cv-SUBSTFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SUBSTFILESUFFIX</envar></link>">
+<!ENTITY cv-link-SUMMARY "<link linkend='cv-SUMMARY' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SUMMARY</envar></link>">
+<!ENTITY cv-link-SWIG "<link linkend='cv-SWIG' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIG</envar></link>">
+<!ENTITY cv-link-SWIGCFILESUFFIX "<link linkend='cv-SWIGCFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGCFILESUFFIX</envar></link>">
+<!ENTITY cv-link-SWIGCOM "<link linkend='cv-SWIGCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGCOM</envar></link>">
+<!ENTITY cv-link-SWIGCOMSTR "<link linkend='cv-SWIGCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGCOMSTR</envar></link>">
+<!ENTITY cv-link-SWIGCXXFILESUFFIX "<link linkend='cv-SWIGCXXFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGCXXFILESUFFIX</envar></link>">
+<!ENTITY cv-link-SWIGDIRECTORSUFFIX "<link linkend='cv-SWIGDIRECTORSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGDIRECTORSUFFIX</envar></link>">
+<!ENTITY cv-link-SWIGFLAGS "<link linkend='cv-SWIGFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGFLAGS</envar></link>">
+<!ENTITY cv-link-_SWIGINCFLAGS "<link linkend='cv-_SWIGINCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_SWIGINCFLAGS</envar></link>">
+<!ENTITY cv-link-SWIGINCPREFIX "<link linkend='cv-SWIGINCPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGINCPREFIX</envar></link>">
+<!ENTITY cv-link-SWIGINCSUFFIX "<link linkend='cv-SWIGINCSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGINCSUFFIX</envar></link>">
+<!ENTITY cv-link-SWIGOUTDIR "<link linkend='cv-SWIGOUTDIR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGOUTDIR</envar></link>">
+<!ENTITY cv-link-SWIGPATH "<link linkend='cv-SWIGPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGPATH</envar></link>">
+<!ENTITY cv-link-SWIGVERSION "<link linkend='cv-SWIGVERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SWIGVERSION</envar></link>">
+<!ENTITY cv-link-TAR "<link linkend='cv-TAR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TAR</envar></link>">
+<!ENTITY cv-link-TARCOM "<link linkend='cv-TARCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARCOM</envar></link>">
+<!ENTITY cv-link-TARCOMSTR "<link linkend='cv-TARCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARCOMSTR</envar></link>">
+<!ENTITY cv-link-TARFLAGS "<link linkend='cv-TARFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARFLAGS</envar></link>">
+<!ENTITY cv-link-TARGET "<link linkend='cv-TARGET' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARGET</envar></link>">
+<!ENTITY cv-link-TARGET_ARCH "<link linkend='cv-TARGET_ARCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARGET_ARCH</envar></link>">
+<!ENTITY cv-link-TARGET_OS "<link linkend='cv-TARGET_OS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARGET_OS</envar></link>">
+<!ENTITY cv-link-TARGETS "<link linkend='cv-TARGETS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARGETS</envar></link>">
+<!ENTITY cv-link-TARSUFFIX "<link linkend='cv-TARSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TARSUFFIX</envar></link>">
+<!ENTITY cv-link-TEMPFILEPREFIX "<link linkend='cv-TEMPFILEPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEMPFILEPREFIX</envar></link>">
+<!ENTITY cv-link-TEX "<link linkend='cv-TEX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEX</envar></link>">
+<!ENTITY cv-link-TEXCOM "<link linkend='cv-TEXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEXCOM</envar></link>">
+<!ENTITY cv-link-TEXCOMSTR "<link linkend='cv-TEXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEXCOMSTR</envar></link>">
+<!ENTITY cv-link-TEXFLAGS "<link linkend='cv-TEXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEXFLAGS</envar></link>">
+<!ENTITY cv-link-TEXINPUTS "<link linkend='cv-TEXINPUTS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEXINPUTS</envar></link>">
+<!ENTITY cv-link-TEXTFILEPREFIX "<link linkend='cv-TEXTFILEPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEXTFILEPREFIX</envar></link>">
+<!ENTITY cv-link-TEXTFILESUFFIX "<link linkend='cv-TEXTFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TEXTFILESUFFIX</envar></link>">
+<!ENTITY cv-link-TOOLS "<link linkend='cv-TOOLS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$TOOLS</envar></link>">
+<!ENTITY cv-link-UNCHANGED_SOURCES "<link linkend='cv-UNCHANGED_SOURCES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$UNCHANGED_SOURCES</envar></link>">
+<!ENTITY cv-link-UNCHANGED_TARGETS "<link linkend='cv-UNCHANGED_TARGETS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$UNCHANGED_TARGETS</envar></link>">
+<!ENTITY cv-link-VENDOR "<link linkend='cv-VENDOR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$VENDOR</envar></link>">
+<!ENTITY cv-link-VERSION "<link linkend='cv-VERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$VERSION</envar></link>">
+<!ENTITY cv-link-WIN32_INSERT_DEF "<link linkend='cv-WIN32_INSERT_DEF' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WIN32_INSERT_DEF</envar></link>">
+<!ENTITY cv-link-WIN32DEFPREFIX "<link linkend='cv-WIN32DEFPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WIN32DEFPREFIX</envar></link>">
+<!ENTITY cv-link-WIN32DEFSUFFIX "<link linkend='cv-WIN32DEFSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WIN32DEFSUFFIX</envar></link>">
+<!ENTITY cv-link-WIN32EXPPREFIX "<link linkend='cv-WIN32EXPPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WIN32EXPPREFIX</envar></link>">
+<!ENTITY cv-link-WIN32EXPSUFFIX "<link linkend='cv-WIN32EXPSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WIN32EXPSUFFIX</envar></link>">
+<!ENTITY cv-link-WINDOWS_EMBED_MANIFEST "<link linkend='cv-WINDOWS_EMBED_MANIFEST' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWS_EMBED_MANIFEST</envar></link>">
+<!ENTITY cv-link-WINDOWS_INSERT_DEF "<link linkend='cv-WINDOWS_INSERT_DEF' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWS_INSERT_DEF</envar></link>">
+<!ENTITY cv-link-WINDOWS_INSERT_MANIFEST "<link linkend='cv-WINDOWS_INSERT_MANIFEST' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWS_INSERT_MANIFEST</envar></link>">
+<!ENTITY cv-link-WINDOWSDEFPREFIX "<link linkend='cv-WINDOWSDEFPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSDEFPREFIX</envar></link>">
+<!ENTITY cv-link-WINDOWSDEFSUFFIX "<link linkend='cv-WINDOWSDEFSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSDEFSUFFIX</envar></link>">
+<!ENTITY cv-link-WINDOWSEXPPREFIX "<link linkend='cv-WINDOWSEXPPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSEXPPREFIX</envar></link>">
+<!ENTITY cv-link-WINDOWSEXPSUFFIX "<link linkend='cv-WINDOWSEXPSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSEXPSUFFIX</envar></link>">
+<!ENTITY cv-link-WINDOWSPROGMANIFESTPREFIX "<link linkend='cv-WINDOWSPROGMANIFESTPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSPROGMANIFESTPREFIX</envar></link>">
+<!ENTITY cv-link-WINDOWSPROGMANIFESTSUFFIX "<link linkend='cv-WINDOWSPROGMANIFESTSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSPROGMANIFESTSUFFIX</envar></link>">
+<!ENTITY cv-link-WINDOWSSHLIBMANIFESTPREFIX "<link linkend='cv-WINDOWSSHLIBMANIFESTPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSSHLIBMANIFESTPREFIX</envar></link>">
+<!ENTITY cv-link-WINDOWSSHLIBMANIFESTSUFFIX "<link linkend='cv-WINDOWSSHLIBMANIFESTSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$WINDOWSSHLIBMANIFESTSUFFIX</envar></link>">
+<!ENTITY cv-link-X_IPK_DEPENDS "<link linkend='cv-X_IPK_DEPENDS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_IPK_DEPENDS</envar></link>">
+<!ENTITY cv-link-X_IPK_DESCRIPTION "<link linkend='cv-X_IPK_DESCRIPTION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_IPK_DESCRIPTION</envar></link>">
+<!ENTITY cv-link-X_IPK_MAINTAINER "<link linkend='cv-X_IPK_MAINTAINER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_IPK_MAINTAINER</envar></link>">
+<!ENTITY cv-link-X_IPK_PRIORITY "<link linkend='cv-X_IPK_PRIORITY' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_IPK_PRIORITY</envar></link>">
+<!ENTITY cv-link-X_IPK_SECTION "<link linkend='cv-X_IPK_SECTION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_IPK_SECTION</envar></link>">
+<!ENTITY cv-link-X_MSI_LANGUAGE "<link linkend='cv-X_MSI_LANGUAGE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_MSI_LANGUAGE</envar></link>">
+<!ENTITY cv-link-X_MSI_LICENSE_TEXT "<link linkend='cv-X_MSI_LICENSE_TEXT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_MSI_LICENSE_TEXT</envar></link>">
+<!ENTITY cv-link-X_MSI_UPGRADE_CODE "<link linkend='cv-X_MSI_UPGRADE_CODE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_MSI_UPGRADE_CODE</envar></link>">
+<!ENTITY cv-link-X_RPM_AUTOREQPROV "<link linkend='cv-X_RPM_AUTOREQPROV' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_AUTOREQPROV</envar></link>">
+<!ENTITY cv-link-X_RPM_BUILD "<link linkend='cv-X_RPM_BUILD' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_BUILD</envar></link>">
+<!ENTITY cv-link-X_RPM_BUILDREQUIRES "<link linkend='cv-X_RPM_BUILDREQUIRES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_BUILDREQUIRES</envar></link>">
+<!ENTITY cv-link-X_RPM_BUILDROOT "<link linkend='cv-X_RPM_BUILDROOT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_BUILDROOT</envar></link>">
+<!ENTITY cv-link-X_RPM_CLEAN "<link linkend='cv-X_RPM_CLEAN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_CLEAN</envar></link>">
+<!ENTITY cv-link-X_RPM_CONFLICTS "<link linkend='cv-X_RPM_CONFLICTS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_CONFLICTS</envar></link>">
+<!ENTITY cv-link-X_RPM_DEFATTR "<link linkend='cv-X_RPM_DEFATTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_DEFATTR</envar></link>">
+<!ENTITY cv-link-X_RPM_DISTRIBUTION "<link linkend='cv-X_RPM_DISTRIBUTION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_DISTRIBUTION</envar></link>">
+<!ENTITY cv-link-X_RPM_EPOCH "<link linkend='cv-X_RPM_EPOCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_EPOCH</envar></link>">
+<!ENTITY cv-link-X_RPM_EXCLUDEARCH "<link linkend='cv-X_RPM_EXCLUDEARCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_EXCLUDEARCH</envar></link>">
+<!ENTITY cv-link-X_RPM_EXLUSIVEARCH "<link linkend='cv-X_RPM_EXLUSIVEARCH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_EXLUSIVEARCH</envar></link>">
+<!ENTITY cv-link-X_RPM_GROUP "<link linkend='cv-X_RPM_GROUP' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_GROUP</envar></link>">
+<!ENTITY cv-link-X_RPM_GROUP_lang "<link linkend='cv-X_RPM_GROUP_lang' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_GROUP_lang</envar></link>">
+<!ENTITY cv-link-X_RPM_ICON "<link linkend='cv-X_RPM_ICON' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_ICON</envar></link>">
+<!ENTITY cv-link-X_RPM_INSTALL "<link linkend='cv-X_RPM_INSTALL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_INSTALL</envar></link>">
+<!ENTITY cv-link-X_RPM_PACKAGER "<link linkend='cv-X_RPM_PACKAGER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_PACKAGER</envar></link>">
+<!ENTITY cv-link-X_RPM_POSTINSTALL "<link linkend='cv-X_RPM_POSTINSTALL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_POSTINSTALL</envar></link>">
+<!ENTITY cv-link-X_RPM_POSTUNINSTALL "<link linkend='cv-X_RPM_POSTUNINSTALL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_POSTUNINSTALL</envar></link>">
+<!ENTITY cv-link-X_RPM_PREFIX "<link linkend='cv-X_RPM_PREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_PREFIX</envar></link>">
+<!ENTITY cv-link-X_RPM_PREINSTALL "<link linkend='cv-X_RPM_PREINSTALL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_PREINSTALL</envar></link>">
+<!ENTITY cv-link-X_RPM_PREP "<link linkend='cv-X_RPM_PREP' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_PREP</envar></link>">
+<!ENTITY cv-link-X_RPM_PREUNINSTALL "<link linkend='cv-X_RPM_PREUNINSTALL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_PREUNINSTALL</envar></link>">
+<!ENTITY cv-link-X_RPM_PROVIDES "<link linkend='cv-X_RPM_PROVIDES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_PROVIDES</envar></link>">
+<!ENTITY cv-link-X_RPM_REQUIRES "<link linkend='cv-X_RPM_REQUIRES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_REQUIRES</envar></link>">
+<!ENTITY cv-link-X_RPM_SERIAL "<link linkend='cv-X_RPM_SERIAL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_SERIAL</envar></link>">
+<!ENTITY cv-link-X_RPM_URL "<link linkend='cv-X_RPM_URL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$X_RPM_URL</envar></link>">
+<!ENTITY cv-link-XGETTEXT "<link linkend='cv-XGETTEXT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXT</envar></link>">
+<!ENTITY cv-link-XGETTEXTCOM "<link linkend='cv-XGETTEXTCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTCOM</envar></link>">
+<!ENTITY cv-link-XGETTEXTCOMSTR "<link linkend='cv-XGETTEXTCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTCOMSTR</envar></link>">
+<!ENTITY cv-link-_XGETTEXTDOMAIN "<link linkend='cv-_XGETTEXTDOMAIN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_XGETTEXTDOMAIN</envar></link>">
+<!ENTITY cv-link-XGETTEXTFLAGS "<link linkend='cv-XGETTEXTFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTFLAGS</envar></link>">
+<!ENTITY cv-link-XGETTEXTFROM "<link linkend='cv-XGETTEXTFROM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTFROM</envar></link>">
+<!ENTITY cv-link-_XGETTEXTFROMFLAGS "<link linkend='cv-_XGETTEXTFROMFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_XGETTEXTFROMFLAGS</envar></link>">
+<!ENTITY cv-link-XGETTEXTFROMPREFIX "<link linkend='cv-XGETTEXTFROMPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTFROMPREFIX</envar></link>">
+<!ENTITY cv-link-XGETTEXTFROMSUFFIX "<link linkend='cv-XGETTEXTFROMSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTFROMSUFFIX</envar></link>">
+<!ENTITY cv-link-XGETTEXTPATH "<link linkend='cv-XGETTEXTPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTPATH</envar></link>">
+<!ENTITY cv-link-_XGETTEXTPATHFLAGS "<link linkend='cv-_XGETTEXTPATHFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_XGETTEXTPATHFLAGS</envar></link>">
+<!ENTITY cv-link-XGETTEXTPATHPREFIX "<link linkend='cv-XGETTEXTPATHPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTPATHPREFIX</envar></link>">
+<!ENTITY cv-link-XGETTEXTPATHSUFFIX "<link linkend='cv-XGETTEXTPATHSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$XGETTEXTPATHSUFFIX</envar></link>">
+<!ENTITY cv-link-YACC "<link linkend='cv-YACC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$YACC</envar></link>">
+<!ENTITY cv-link-YACCCOM "<link linkend='cv-YACCCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$YACCCOM</envar></link>">
+<!ENTITY cv-link-YACCCOMSTR "<link linkend='cv-YACCCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$YACCCOMSTR</envar></link>">
+<!ENTITY cv-link-YACCFLAGS "<link linkend='cv-YACCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$YACCFLAGS</envar></link>">
+<!ENTITY cv-link-YACCHFILESUFFIX "<link linkend='cv-YACCHFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$YACCHFILESUFFIX</envar></link>">
+<!ENTITY cv-link-YACCHXXFILESUFFIX "<link linkend='cv-YACCHXXFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$YACCHXXFILESUFFIX</envar></link>">
+<!ENTITY cv-link-YACCVCGFILESUFFIX "<link linkend='cv-YACCVCGFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$YACCVCGFILESUFFIX</envar></link>">
+<!ENTITY cv-link-ZIP "<link linkend='cv-ZIP' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ZIP</envar></link>">
+<!ENTITY cv-link-ZIPCOM "<link linkend='cv-ZIPCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ZIPCOM</envar></link>">
+<!ENTITY cv-link-ZIPCOMPRESSION "<link linkend='cv-ZIPCOMPRESSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ZIPCOMPRESSION</envar></link>">
+<!ENTITY cv-link-ZIPCOMSTR "<link linkend='cv-ZIPCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ZIPCOMSTR</envar></link>">
+<!ENTITY cv-link-ZIPFLAGS "<link linkend='cv-ZIPFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ZIPFLAGS</envar></link>">
+<!ENTITY cv-link-ZIPROOT "<link linkend='cv-ZIPROOT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ZIPROOT</envar></link>">
+<!ENTITY cv-link-ZIPSUFFIX "<link linkend='cv-ZIPSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$ZIPSUFFIX</envar></link>">
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
diff --git a/doc/images/overview.graphml b/doc/images/overview.graphml
new file mode 100644
index 0000000..74f80d7
--- /dev/null
+++ b/doc/images/overview.graphml
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yFiles for Java 2.9-->
+ <key for="graphml" id="d0" yfiles.type="resources"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key attr.name="Beschreibung" attr.type="string" for="graph" id="d7"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+ <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <data key="d7"/>
+ <node id="n0" yfiles.foldertype="group">
+ <data key="d4"/>
+ <data key="d6">
+ <y:ProxyAutoBoundsNode>
+ <y:Realizers active="0">
+ <y:GroupNode>
+ <y:Geometry height="269.01233212809916" width="204.95703125" x="100.521484375" y="53.0390625"/>
+ <y:Fill color="#F5F5F5" transparent="false"/>
+ <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="204.95703125" x="0.0" y="0.0">User's view</y:NodeLabel>
+ <y:Shape type="roundrectangle"/>
+ <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+ <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+ <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="3" topF="3.0"/>
+ </y:GroupNode>
+ <y:GroupNode>
+ <y:Geometry height="50.0" width="50.0" x="0.0" y="60.0"/>
+ <y:Fill color="#F5F5F5" transparent="false"/>
+ <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="65.201171875" x="-7.6005859375" y="0.0">Folder 1</y:NodeLabel>
+ <y:Shape type="roundrectangle"/>
+ <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+ <y:Insets bottom="5" bottomF="5.0" left="5" leftF="5.0" right="5" rightF="5.0" top="5" topF="5.0"/>
+ <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+ </y:GroupNode>
+ </y:Realizers>
+ </y:ProxyAutoBoundsNode>
+ </data>
+ <graph edgedefault="directed" id="n0:">
+ <node id="n0::n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="174.95703125" x="115.521484375" y="185.05694731404958"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="164.95703125" x="5.0" y="6.015625">XML files (src/user/man/...)<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n0::n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.9375" width="158.357421875" x="123.8212890625" y="265.11389462809916"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="92.154296875" x="33.1015625" y="11.984375">XML validation<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n0::n2">
+ <data key="d6">
+ <y:SVGNode>
+ <y:Geometry height="52.0" width="51.154296875" x="177.4228515625" y="92.5"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="41.154296875" x="42.63675428695848" y="20.570887005532427">Writer<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="-0.2930339421443093" labelRatioY="0.5" nodeRatioX="0.5" nodeRatioY="0.24114686549100794" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:SVGNodeProperties usingVisualBounds="true"/>
+ <y:SVGModel svgBoundsPolicy="0">
+ <y:SVGContent refid="1"/>
+ </y:SVGModel>
+ </y:SVGNode>
+ </data>
+ </node>
+ </graph>
+ </node>
+ <node id="n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.9375" width="225.341796875" x="90.3291015625" y="339.03125"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="121.650390625" x="51.845703125" y="11.984375">Creating entity lists
+<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.9375" width="134.7734375" x="382.61328125" y="339.03125"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" modelName="custom" textColor="#000000" visible="true" width="124.7734375" x="5.0" y="5.0">Check that example
+names are unique<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.9375" width="163.35546875" x="368.322265625" y="410.96875"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="149.458984375" x="6.9482421875" y="11.984375">Create example outputs<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.9375" width="171.125" x="117.4375" y="410.96875"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" modelName="custom" textColor="#000000" visible="true" width="161.125" x="5.0" y="5.0">Resolve XIncludes for text
+and examples<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="155.29296875" x="125.353515625" y="497.09375"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="145.29296875" x="5.0" y="6.015625">Create HTML, PDF, Man<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n6">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.9375" width="144.6171875" x="130.69140625" y="563.21875"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" modelName="custom" textColor="#000000" visible="true" width="134.6171875" x="5.0" y="5.0">Install in proper place
+for packaging<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n7">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.9375" width="102.306640625" x="398.8466796875" y="491.125"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" modelName="custom" textColor="#000000" visible="true" width="92.306640625" x="5.0" y="5.0">Create API doc
+(Epydoc)<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <edge id="n0::e0" source="n0::n0" target="n0::n1">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="83.318359375" x="2.0" y="16.04410017029312">get validated</y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e0" source="n0::n1" target="n1">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n1" target="n4">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n1" target="n2">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n2" target="n3">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n3" target="n4">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e5" source="n5" target="n6">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e6" source="n4" target="n5">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="132.970703125" x="2.0" y="13.109375">switching to Docbook</y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e7" source="n5" target="n7">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e8" source="n7" target="n6">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="450.0" y="584.1875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="n0::e1" source="n0::n2" target="n0::n0">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="81.94140625" x="2.0" y="11.289856713665415">edits/creates</y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d0">
+ <y:Resources>
+ <y:Resource id="1">&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --&gt;
+&lt;!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"&gt;
+&lt;svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="65px" viewBox="0 0 57 65" enable-background="new 0 0 57 65" xml:space="preserve"&gt;
+&lt;g&gt;
+
+ &lt;linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.5396" y1="-732.5005" x2="27.7805" y2="-762.2984" gradientTransform="matrix(1 0 0 -1 0.1201 -708.5371)"&gt;
+ &lt;stop offset="0.2711" style="stop-color:#FFAB4F"/&gt;
+ &lt;stop offset="1" style="stop-color:#FFD28F"/&gt;
+ &lt;/linearGradient&gt;
+ &lt;path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/&gt;
+
+ &lt;radialGradient id="face_x5F_white_1_" cx="27.7827" cy="-734.2632" r="23.424" fx="23.2131" fy="-736.753" gradientTransform="matrix(1 0 0 -1 0.1201 -708.5371)" gradientUnits="userSpaceOnUse"&gt;
+ &lt;stop offset="0" style="stop-color:#FFD28F"/&gt;
+ &lt;stop offset="1" style="stop-color:#FFAB4F"/&gt;
+ &lt;/radialGradient&gt;
+ &lt;path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.246,18.586c-8.503,0.068-15.467-8.146-15.553-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/&gt;
+
+ &lt;linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="2941.4297" y1="5677.457" x2="2965.0596" y2="5770.9087" gradientTransform="matrix(0.275 0 0 0.2733 -783.3976 -1543.4047)"&gt;
+ &lt;stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.42"/&gt;
+ &lt;stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.2067"/&gt;
+ &lt;/linearGradient&gt;
+ &lt;path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M27.958,6.333c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.183-1.094,0.293-2.289,0.283-3.553C42.083,13.952,36.271,6.268,27.958,6.333z"/&gt;
+ &lt;path fill="#CC9869" stroke="#99724F" stroke-linecap="round" stroke-linejoin="round" d="M32.215,9.938
+ c0,0,5.688,2.75,7.688,8.125c2.104,5.652,4.123,8.232,4.188,8c1.875-6.794,1.063-21.438-10.17-21.587
+ c-20.455-7.663-25.58,11.962-23.893,19.65c1.078,4.911,2.234,6.686,3.938,8.08C13.966,32.205,15.028,17.563,32.215,9.938z"/&gt;
+
+ &lt;radialGradient id="collar_x5F_body_2_" cx="15.1587" cy="-765.7056" r="32.4004" gradientTransform="matrix(1 0 0 -1 0.1201 -708.5371)" gradientUnits="userSpaceOnUse"&gt;
+ &lt;stop offset="0" style="stop-color:#B0E8FF"/&gt;
+ &lt;stop offset="1" style="stop-color:#74AEEE"/&gt;
+ &lt;/radialGradient&gt;
+ &lt;path id="collar_x5F_body_1_" fill="url(#collar_x5F_body_2_)" stroke="#5491CF" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494
+ h48.51c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-11.244-6.146-11.244-6.146
+ c-1.771,1.655-5.61,2.802-10.063,2.802c-4.453,0-8.292-1.146-10.063-2.802c0,0-5.755,0.586-11.189,6.021
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/&gt;
+
+ &lt;radialGradient id="collar_x5F_r_2_" cx="31.5" cy="-755.832" r="9.2834" gradientTransform="matrix(1 0 0 -1 0.1201 -708.5371)" gradientUnits="userSpaceOnUse"&gt;
+ &lt;stop offset="0" style="stop-color:#80CCFF"/&gt;
+ &lt;stop offset="1" style="stop-color:#74AEEE"/&gt;
+ &lt;/radialGradient&gt;
+ &lt;path id="collar_x5F_r_1_" fill="url(#collar_x5F_r_2_)" stroke="#5491CF" d="M38.159,41.381c0,0-0.574,2.369-3.013,4.441
+ c-2.108,1.795-5.783,2.072-5.783,2.072l3.974,6.217c0,0,2.957-1.637,5.009-3.848c1.922-2.072,1.37-5.479,1.37-5.479L38.159,41.381z
+ "/&gt;
+
+ &lt;radialGradient id="collar_x5F_l_2_" cx="19.1377" cy="-755.873" r="9.2837" gradientTransform="matrix(1 0 0 -1 0.1201 -708.5371)" gradientUnits="userSpaceOnUse"&gt;
+ &lt;stop offset="0" style="stop-color:#80CCFF"/&gt;
+ &lt;stop offset="1" style="stop-color:#74AEEE"/&gt;
+ &lt;/radialGradient&gt;
+ &lt;path id="collar_x5F_l_1_" fill="url(#collar_x5F_l_2_)" stroke="#5491CF" d="M18.63,41.422c0,0,0.576,2.369,3.012,4.441
+ c2.109,1.793,5.785,2.072,5.785,2.072l-3.974,6.217c0,0-2.957-1.637-5.007-3.85c-1.922-2.072-1.37-5.48-1.37-5.48L18.63,41.422z"/&gt;
+
+ &lt;radialGradient id="Knob2_2_" cx="27.8872" cy="7.9414" r="0.9669" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse"&gt;
+ &lt;stop offset="0" style="stop-color:#80CCFF"/&gt;
+ &lt;stop offset="1" style="stop-color:#74AEEE"/&gt;
+ &lt;/radialGradient&gt;
+ &lt;circle id="Knob2_1_" fill="url(#Knob2_2_)" stroke="#5491CF" cx="28.258" cy="56.254" r="0.584"/&gt;
+
+ &lt;radialGradient id="Knob1_2_" cx="27.9253" cy="1.6973" r="0.9669" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse"&gt;
+ &lt;stop offset="0" style="stop-color:#80CCFF"/&gt;
+ &lt;stop offset="1" style="stop-color:#74AEEE"/&gt;
+ &lt;/radialGradient&gt;
+ &lt;circle id="Knob1_1_" fill="url(#Knob1_2_)" stroke="#5491CF" cx="28.296" cy="62.499" r="0.584"/&gt;
+&lt;/g&gt;
+&lt;/svg&gt;
+</y:Resource>
+ </y:Resources>
+ </data>
+</graphml>
diff --git a/doc/man/MANIFEST b/doc/man/MANIFEST
index 8e69d1c..4b3ce9f 100644
--- a/doc/man/MANIFEST
+++ b/doc/man/MANIFEST
@@ -1,2 +1,15 @@
-scons.1
-sconsign.1
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
+scons.xml
+sconsign.xml
+scons-time.xml
+*.xsl
+*.css
+SConstruct
+cover.jpg
+titlepage/bricks.jpg
+titlepage/mapnik_final_colors.svg
+titlepage/SCons_path.svg
+titlepage/SConsBuildBricks_path.svg
+
diff --git a/doc/man/SConstruct b/doc/man/SConstruct
new file mode 100644
index 0000000..7127ff2
--- /dev/null
+++ b/doc/man/SConstruct
@@ -0,0 +1,68 @@
+#
+# SConstruct file for building SCons documentation.
+#
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+
+env = Environment(ENV={'PATH' : os.environ['PATH']},
+ tools=['docbook','gs','zip'],
+ toolpath=['../../src/engine/SCons/Tool'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+
+has_pdf = False
+if (env.WhereIs('fop') or
+ env.WhereIs('xep')):
+ has_pdf = True
+
+# Helper function, combining all the steps for a single target
+def createManPages(env, target):
+ env.DocbookXInclude('%s_xi.xml' % target, '%s.xml' % target)
+ env.DocbookXslt('%s_db.xml' % target, '%s_xi.xml' % target,
+ xsl='../xslt/to_docbook.xslt')
+ env.DocbookHtml('scons-%s.html' % target,'%s_db.xml' % target)
+ env.DocbookMan('%s.1' % target, '%s_db.xml' % target)
+ if has_pdf:
+ env.DocbookPdf('scons-%s.pdf' % target,'%s_db.xml' % target)
+
+#
+# Create MAN pages
+#
+createManPages(env, "scons")
+createManPages(env, "sconsign")
+createManPages(env, "scons-time")
+
+has_gs = False
+if env.WhereIs('gs'):
+ has_gs = True
+
+#
+# Create the EPUB format
+#
+if has_gs and has_pdf:
+ jpg = env.Gs('OEBPS/cover.jpg','scons-scons.pdf',
+ GSFLAGS='-dNOPAUSE -dBATCH -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -dJPEGQ=100 -r72x72 -q')
+ epub = env.DocbookEpub('scons-man.epub', 'scons_db.xml', xsl='epub.xsl')
+ env.Depends(epub, jpg)
diff --git a/doc/man/cover.jpg b/doc/man/cover.jpg
new file mode 100644
index 0000000..e2c2cb3
--- /dev/null
+++ b/doc/man/cover.jpg
Binary files differ
diff --git a/doc/man/epub.css b/doc/man/epub.css
new file mode 100644
index 0000000..31cebe5
--- /dev/null
+++ b/doc/man/epub.css
@@ -0,0 +1,33 @@
+/* This defines styles and classes used in the book */
+body { }
+code { font-family: monospace; }
+h1, h2, h3, h4, h5, h6 { text-align: center; margin-bottom:2em;}
+h1.title { }
+h2.author { }
+p{
+ padding:0;
+ margin:0;
+ text-indent:2em;
+}
+blockquote{
+ margin-left:3em;
+ margin-right:3em;
+}
+.caption{
+ text-align:center;
+ font-style:italic;
+ margin-bottom:1em;
+ margin-top:.2em;
+ font-size:.8em;
+}
+blockquote > p{
+ text-indent:0;
+ margin-bottom:1em;
+}
+img{
+ display:block;
+ margin-left: auto;
+ margin-right: auto;
+ text-align:center;
+ margin-top:1em;
+}
diff --git a/doc/user/ant.in b/doc/man/epub.xsl
index 87ad4b0..18da970 100644
--- a/doc/user/ant.in
+++ b/doc/man/epub.xsl
@@ -1,52 +1,35 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- XXX
-
- </para>
-
- <section>
- <title>Differences Between &Ant; and &SCons;</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Advantages of &SCons; Over &Ant;</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl"/>
+
+<xsl:param name="html.stylesheet" select="'epub.css'"/>
+
+</xsl:stylesheet>
diff --git a/doc/man/html.xsl b/doc/man/html.xsl
new file mode 100644
index 0000000..250bdad
--- /dev/null
+++ b/doc/man/html.xsl
@@ -0,0 +1,59 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl"/>
+
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<!-- Prevent our EPUB cover image from getting included -->
+<xsl:template match="mediaobject[@role = 'cover']">
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/man/pdf.xsl b/doc/man/pdf.xsl
new file mode 100644
index 0000000..5eb5627
--- /dev/null
+++ b/doc/man/pdf.xsl
@@ -0,0 +1,74 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl"/>
+ <xsl:include href="scons_title.xsl"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="paper.type" select="'letter'"></xsl:param>
+<xsl:param name="body.start.indent">0pt</xsl:param>
+<xsl:param name="shade.verbatim" select="1"></xsl:param>
+<xsl:param name="variablelist.term.break.after" select="1"></xsl:param>
+
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<xsl:attribute-set name="variablelist.term.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_list-presentation"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+</xsl:template>
+
+<!-- Prevent our EPUB cover image from getting printed to the PDF -->
+<xsl:template match="mediaobject[@role = 'cover']">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/man/scons-time.1 b/doc/man/scons-time.1
deleted file mode 100644
index f29ed54..0000000
--- a/doc/man/scons-time.1
+++ /dev/null
@@ -1,1017 +0,0 @@
-.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining
-.\" a copy of this software and associated documentation files (the
-.\" "Software"), to deal in the Software without restriction, including
-.\" without limitation the rights to use, copy, modify, merge, publish,
-.\" distribute, sublicense, and/or sell copies of the Software, and to
-.\" permit persons to whom the Software is furnished to do so, subject to
-.\" the following conditions:
-.\"
-.\" The above copyright notice and this permission notice shall be included
-.\" in all copies or substantial portions of the Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-.\" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-.\" WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-.\" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-.\" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-.\" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-.\" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-.\"
-.\" doc/man/scons-time.1 2013/03/03 09:48:35 garyo
-.\"
-.\" ES - Example Start - indents and turns off line fill
-.de ES
-.RS
-.nf
-..
-.\" EE - Example End - ends indent and turns line fill back on
-.de EE
-.RE
-.fi
-..
-'\"==========================================================================
-.de SF
-.B scons-time func
-[\fB-h\fR]
-[\fB--chdir=\fIDIR\fR]
-[\fB-f \fIFILE\fR]
-[\fB--fmt=\fIFORMAT\fR]
-[\fB--func=\fINAME\fR]
-[\fB-p \fISTRING\fR]
-[\fB-t \fINUMBER\fR]
-[\fB--title= TITLE\fR]
-[\fIARGUMENTS\fR]
-..
-'\"--------------------------------------------------------------------------
-.de SY
-.B scons-time mem
-[\fB-h\fR]
-[\fB--chdir=\fIDIR\fR]
-[\fB-f \fIFILE\fR]
-[\fB--fmt=\fIFORMAT\fR]
-[\fB-p \fISTRING\fR]
-[\fB--stage=\fISTAGE\fR]
-[\fB-t \fINUMBER\fR]
-[\fB--title=\fITITLE\fR]
-[\fIARGUMENTS\fR]
-..
-'\"--------------------------------------------------------------------------
-.de SO
-.B scons-time obj
-[\fB-h\fR]
-[\fB--chdir=\fIDIR\fR]
-[\fB-f \fIFILE\fR]
-[\fB--fmt=\fIFORMAT\fR]
-[\fB-p \fISTRING\fR]
-[\fB--stage=\fISTAGE\fR]
-[\fB-t \fINUMBER\fR]
-[\fB--title=\fITITLE\fR]
-[\fIARGUMENTS\fR]
-..
-'\"--------------------------------------------------------------------------
-.de SR
-.B scons-time run
-[\fB-hnqv\fR]
-[\fB--aegis=\fIPROJECT\fR]
-[\fB-f \fIFILE\fR]
-[\fB--number=\fINUMBER\fR]
-[\fB--outdir=\fIOUTDIR\fR]
-[\fB-p \fISTRING\fR]
-[\fB--python=\fIPYTHON\fR]
-[\fB-s \fIDIR\fR]
-[\fB--scons=\fISCONS\fR]
-[\fB--svn=\fIURL\fR]
-[\fIARGUMENTS\fR]
-..
-'\"--------------------------------------------------------------------------
-.de ST
-.B scons-time time
-[\fB-h\fR]
-[\fB--chdir=\fIDIR\fR]
-[\fB-f \fIFILE\fR]
-[\fB--fmt=\fIFORMAT\fR]
-[\fB-p \fISTRING\fR]
-[\fB-t \fINUMBER\fR]
-[\fB--title=\fITITLE\fR]
-[\fB--which=\fIWHICH\fR]
-[\fIARGUMENTS\fR]
-..
-.TH SCONS-TIME 1 "March 2013"
-.SH NAME
-scons-time \- generate and display SCons timing information
-'\"==========================================================================
-.SH SYNOPSIS
-.B scons-time
-.IR subcommand
-[
-.IR options ...
-]
-[
-.IR arguments ...
-]
-'\"--------------------------------------------------------------------------
-.SS "Generating Timing Information"
-.SR
-'\"--------------------------------------------------------------------------
-.SS "Extracting Function Timings"
-.SF
-'\"--------------------------------------------------------------------------
-.SS "Extracting Memory Statistics"
-.SY
-'\"--------------------------------------------------------------------------
-.SS "Extracting Object Counts"
-.SO
-'\"--------------------------------------------------------------------------
-.SS "Extracting Execution Times"
-.ST
-'\"--------------------------------------------------------------------------
-.SS "Help Text"
-.B scons-time help
-.I SUBCOMMAND
-[...]
-'\"==========================================================================
-.SH DESCRIPTION
-The
-.B scons-time
-command runs an SCons configuration
-through a standard set of profiled timings
-and can extract and graph information from the
-resulting profiles and log files of those timings.
-The action to be performed by the
-.B scons-time
-script is specified
-by a subcommand, the first argument on the command line.
-See the
-.B SUBCOMMANDS
-section below for information about the operation
-of specific subcommands.
-.P
-The basic way to use
-.B scons-time
-is to run the
-.B scons-time run
-subcommand
-(possibly multiple times)
-to generate profile and log file output,
-and then use one of the other
-subcommands to display the results
-captured in the profiles and log files
-for a particular kind of information:
-function timings
-(the
-.B scons-time func
-subcommand),
-total memory used
-(the
-.B scons-time mem
-subcommand),
-object counts
-(the
-.B scons-time obj
-subcommand)
-and overall execution time
-(the
-.B scons-time time
-subcommand).
-Options exist to place and find the
-profiles and log files in separate directories,
-to generate the output in a format suitable
-for graphing with the
-.BR gnuplot (1)
-program,
-and so on.
-.P
-There are two basic ways the
-.B scons-time run
-subcommand
-is intended to be used
-to gather timing statistics
-for a configuration.
-One is to use the
-.B --svn=
-option to test a configuration against
-a list of revisions from the SCons Subversion repository.
-This will generate a profile and timing log file
-for every revision listed with the
-.B --number=
-option,
-and can be used to look at the
-impact of commited changes to the
-SCons code base on a particular
-configuration over time.
-.P
-The other way is to profile incremental changes to a
-local SCons code base during a development cycle--that is,
-to look at the performance impact of changes
-you're making in the local tree.
-In this mode,
-you run the
-.B scons-time run
-subcommand
-.I without
-the
-.B --svn=
-option,
-in which case it simply looks in the profile/log file output directory
-(the current directory by default)
-and automatically figures out the
-.I next
-run number for the output profile and log file.
-Used in this way,
-the development cycle goes something like:
-make a change to SCons;
-run
-.B scons-time run
-to profile it against a specific configuration;
-make another change to SCons;
-run
-.B scons-time run
-again to profile it;
-etc.
-'\"==========================================================================
-.SH OPTIONS
-The
-.B scons-time
-command only supports a few global options:
-.TP
--h, --help
-Displays the global help text and exits,
-identical to the
-.B scons-time help
-subcommand.
-.TP
--V, --version
-Displays the
-.B scons-time
-version and exits.
-.P
-Most functionality is controlled by options
-to the individual subcommands.
-See the next section for information
-about individual subcommand options.
-'\"==========================================================================
-.SH SUBCOMMANDS
-The
-.B scons-time
-command supports the following
-individual subcommands.
-'\"--------------------------------------------------------------------------
-.SS "The func Subcommand"
-.SF
-.P
-The
-.B scons-time func
-subcommand displays timing information
-for a specific Python function within SCons.
-By default, it extracts information about the
-.BR _main ()
-function,
-which includes the Python profiler timing
-for all of SCons.
-.P
-The
-.B scons-time func
-subcommand extracts function timing information
-from all the specified file arguments,
-which should be Python profiler output files.
-(Normally, these would be
-.B *.prof
-files generated by the
-.B scons-time run
-subcommand,
-but they can actually be generated
-by any Python profiler invocation.)
-All file name arguments will be
-globbed for on-disk files.
-.P
-If no arguments are specified,
-then function timing information
-will be extracted from all
-.B *.prof
-files,
-or the subset of them
-with a prefix specified by the
-.B -p
-option.
-.P
-Options include:
-.TP
--C DIRECTORY, --chdir=DIRECTORY
-Changes to the specified
-.I DIRECTORY
-before looking for the specified files
-(or files that match the specified patterns).
-.TP
--f FILE, --file=FILE
-Reads configuration information from the specified
-.IR FILE .
-.TP
--fmt=FORMAT, --format=FORMAT
-Reports the output in the specified
-.IR FORMAT .
-The formats currently supported are
-.B ascii
-(the default)
-and
-.BR gnuplot .
-.TP
---func=NAME
-Extracts timings for the specified function
-.IR NAME .
-The default is to report cumulative timings for the
-.BR _main ()
-function,
-which contains the entire SCons run.
-.TP
--h, --help
-Displays help text for the
-.B scons-time func
-subcommand.
-.TP
--p STRING, --prefix=STRING
-Specifies the prefix string for profiles
-from which to extract function timing information.
-This will be used to search for profiles
-if no arguments are specified on the command line.
-.TP
--t NUMBER, --tail=NUMBER
-Only extracts function timings from the last
-.I NUMBER
-files.
-'\"--------------------------------------------------------------------------
-.SS "The help Subcommand"
-.B scons-time help
-.I SUBCOMMAND
-[...]
-The
-.B help
-subcommand prints help text for any
-other subcommands listed as later arguments on the command line.
-'\"--------------------------------------------------------------------------
-.SS "The mem Subcommand"
-.SY
-.P
-The
-.B scons-time mem
-subcommand displays how much memory SCons uses.
-.P
-The
-.B scons-time mem
-subcommand extracts memory use information
-from all the specified file arguments,
-which should be files containing output from
-running SCons with the
-.B --debug=memory
-option.
-(Normally, these would be
-.B *.log
-files generated by the
-.B scons-time run
-subcommand.)
-All file name arguments will be
-globbed for on-disk files.
-.P
-If no arguments are specified,
-then memory information
-will be extracted from all
-.B *.log
-files,
-or the subset of them
-with a prefix specified by the
-.B -p
-option.
-.P
-.TP
--C DIR, --chdir=DIR
-Changes to the specified
-.I DIRECTORY
-before looking for the specified files
-(or files that match the specified patterns).
-.TP
--f FILE, --file=FILE
-Reads configuration information from the specified
-.IR FILE .
-.TP
--fmt=FORMAT, --format=FORMAT
-Reports the output in the specified
-.IR FORMAT .
-The formats currently supported are
-.B ascii
-(the default)
-and
-.BR gnuplot .
-.TP
--h, --help
-Displays help text for the
-.B scons-time mem
-subcommand.
-.TP
--p STRING, --prefix=STRING
-Specifies the prefix string for log files
-from which to extract memory usage information.
-This will be used to search for log files
-if no arguments are specified on the command line.
-.TP
---stage=STAGE
-Prints the memory used at the end of the specified
-.IR STAGE :
-.B pre-read
-(before the SConscript files are read),
-.B post-read ,
-(after the SConscript files are read),
-.B pre-build
-(before any targets are built)
-or
-.B post-build
-(after any targets are built).
-If no
-.B --stage
-option is specified,
-the default behavior is
-.BR post-build ,
-which reports the final amount of memory
-used by SCons during each run.
-.TP
--t NUMBER, --tail=NUMBER
-Only reports memory statistics from the last
-.I NUMBER
-files.
-'\"--------------------------------------------------------------------------
-.SS "The obj Subcommand"
-.SO
-.P
-The
-.B scons-time obj
-subcommand displays how many objects of a specific named type
-are created by SCons.
-.P
-The
-.B scons-time obj
-subcommand extracts object counts
-from all the specified file arguments,
-which should be files containing output from
-running SCons with the
-.B --debug=count
-option.
-(Normally, these would be
-.B *.log
-files generated by the
-.B scons-time run
-subcommand.)
-All file name arguments will be
-globbed for on-disk files.
-.P
-If no arguments are specified,
-then object counts
-will be extracted from all
-.B *.log
-files,
-or the subset of them
-with a prefix specified by the
-.B -p
-option.
-.TP
--C DIR, --chdir=DIR
-Changes to the specified
-.I DIRECTORY
-before looking for the specified files
-(or files that match the specified patterns).
-.TP
--f FILE, --file=FILE
-Reads configuration information from the specified
-.IR FILE .
-.TP
--fmt=FORMAT, --format=FORMAT
-Reports the output in the specified
-.IR FORMAT .
-The formats currently supported are
-.B ascii
-(the default)
-and
-.BR gnuplot .
-.TP
--h, --help
-Displays help text for the
-.B scons-time obj
-subcommand.
-.TP
--p STRING, --prefix=STRING
-Specifies the prefix string for log files
-from which to extract object counts.
-This will be used to search for log files
-if no arguments are specified on the command line.
-.TP
---stage=STAGE
-Prints the object count at the end of the specified
-.IR STAGE :
-.B pre-read
-(before the SConscript files are read),
-.B post-read ,
-(after the SConscript files are read),
-.B pre-build
-(before any targets are built)
-or
-.B post-build
-(after any targets are built).
-If no
-.B --stage
-option is specified,
-the default behavior is
-.BR post-build ,
-which reports the final object count during each run.
-.TP
--t NUMBER, --tail=NUMBER
-Only reports object counts from the last
-.I NUMBER
-files.
-'\"--------------------------------------------------------------------------
-.SS "The run Subcommand"
-.SR
-The
-.B scons-time run
-subcommand is the basic subcommand
-for profiling a specific configuration
-against a version of SCons.
-.P
-The configuration to be tested
-is specified as a list of files
-or directories that will be unpacked or copied
-into a temporary directory
-in which SCons will be invoked.
-The
-.B scons-time run
-subcommand understands file suffixes like
-.BR .tar ,
-.BR .tar.gz ,
-.BR .tgz
-and
-.BR .zip
-and will unpack their contents into a temporary directory.
-If more than one argument is specified,
-each one will be unpacked or copied
-into the temporary directory "on top of"
-the previous archives or directories,
-so the expectation is that multiple
-specified archives share the same directory layout.
-.P
-Once the file or directory arguments are unpacked or
-copied to the temporary directory,
-the
-.B scons-time run
-subcommand runs the
-requested version of SCons
-against the configuration
-three times:
-.TP
-Startup
-SCons is run with the
-.B --help
-option so that just the SConscript files are read,
-and then the default help text is printed.
-This profiles just the perceived "overhead" of starting up SCons
-and processing the SConscript files.
-.TP
-Full build
-SCons is run to build everything specified in the configuration.
-Specific targets to be passed in on the command l ine
-may be specified by the
-.B targets
-keyword in a configuration file; see below for details.
-.TP
-Rebuild
-SCons is run again on the same just-built directory.
-If the dependencies in the SCons configuration are correct,
-this should be an up-to-date, "do nothing" rebuild.
-.P
-Each invocation captures the output log file and a profile.
-.P
-The
-.B scons-time run
-subcommand supports the following options:
-.TP
---aegis=PROJECT
-Specifies the Aegis
-.I PROJECT
-from which the
-version(s) of
-.B scons
-being timed will be extracted.
-When
-.B --aegis
-is specified, the
-.BI --number= NUMBER
-option specifies delta numbers
-that will be tested.
-Output from each invocation run will be placed in file
-names that match the Aegis delta numbers.
-If the
-.B --number=
-option is not specified,
-then the default behavior is to time the
-tip of the specified
-.IR PROJECT .
-.TP
--f FILE, --file=FILE
-Reads configuration information from the specified
-.IR FILE .
-This often provides a more convenient way to specify and
-collect parameters associated with a specific timing configuration
-than specifying them on the command line.
-See the
-.B CONFIGURATION FILE
-section below
-for information about the configuration file parameters.
-.TP
--h, --help
-Displays help text for the
-.B scons-time run
-subcommand.
-.TP
--n, --no-exec
-Do not execute commands,
-just printing the command-line equivalents of what would be executed.
-Note that the
-.B scons-time
-script actually executes its actions in Python,
-where possible,
-for portability.
-The commands displayed are UNIX
-.I equivalents
-of what it's doing.
-.TP
---number=NUMBER
-Specifies the run number to be used in the names of
-the log files and profile outputs generated by this run.
-.IP
-When used in conjuction with the
-.BI --aegis= PROJECT
-option,
-.I NUMBER
-specifies one or more comma-separated Aegis delta numbers
-that will be retrieved automatically from the specified Aegis
-.IR PROJECT .
-.IP
-When used in conjuction with the
-.BI --svn= URL
-option,
-.I NUMBER
-specifies one or more comma-separated Subversion revision numbers
-that will be retrieved automatically from the Subversion
-repository at the specified
-.IR URL .
-Ranges of delta or revision numbers
-may be specified be separating two numbers
-with a hyphen
-.RB ( \- ).
-.P
-Example:
-.ES
-% scons-time run --svn=http://scons.tigris.org/svn/trunk --num=1247,1249-1252 .
-.EE
-.TP
--p STRING, --prefix=STRING
-Specifies the prefix string to be used for all of the log files
-and profiles generated by this run.
-The default is derived from the first
-specified argument:
-if the first argument is a directory,
-the default prefix is the name of the directory;
-if the first argument is an archive
-(tar or zip file),
-the default prefix is the the base name of the archive,
-that is, what remains after stripping the archive suffix
-.RB ( .tgz ", " .tar.gz " or " .zip ).
-.TP
---python=PYTHON
-Specifies a path to the Python executable to be used
-for the timing runs.
-The default is to use the same Python executable that
-is running the
-.B scons-time
-command itself.
-.TP
--q, --quiet
-Suppresses display of the command lines being executed.
-.TP
--s DIR, --subdir=DIR
-Specifies the name of directory or subdirectory
-from which the commands should be executed.
-The default is XXX
-.TP
---scons=SCONS
-Specifies a path to the SCons script to be used
-for the timing runs.
-The default is XXX
-.TP
---svn=URL, --subversion=URL
-Specifies the
-.I URL
-of the Subversion repository from which the
-version(s) of
-.B scons
-being timed will be extracted.
-When
-.B --svn
-is specified, the
-.BI --number= NUMBER
-option specifies revision numbers
-that will be tested.
-Output from each invocation run will be placed in file
-names that match the Subversion revision numbers.
-If the
-.B --number=
-option is not specified,
-then the default behavior is to time the
-.B HEAD
-of the specified
-.IR URL .
-.TP
--v, --verbose
-Displays the output from individual commands to the screen
-(in addition to capturing the output in log files).
-'\"--------------------------------------------------------------------------
-.SS "The time Subcommand"
-.ST
-.P
-The
-.B scons-time time
-subcommand displays SCons execution times
-as reported by the
-.B scons --debug=time
-option.
-.P
-The
-.B scons-time time
-subcommand extracts SCons timing
-from all the specified file arguments,
-which should be files containing output from
-running SCons with the
-.B --debug=time
-option.
-(Normally, these would be
-.B *.log
-files generated by the
-.B scons-time run
-subcommand.)
-All file name arguments will be
-globbed for on-disk files.
-.P
-If no arguments are specified,
-then execution timings
-will be extracted from all
-.B *.log
-files,
-or the subset of them
-with a prefix specified by the
-.B -p
-option.
-.TP
--C DIR, --chdir=DIR
-Changes to the specified
-.I DIRECTORY
-before looking for the specified files
-(or files that match the specified patterns).
-.TP
--f FILE, --file=FILE
-Reads configuration information from the specified
-.IR FILE .
-.TP
--fmt=FORMAT, --format=FORMAT
-Reports the output in the specified
-.IR FORMAT .
-The formats currently supported are
-.B ascii
-(the default)
-and
-.BR gnuplot .
-.TP
--h, --help
-Displays help text for the
-.B scons-time time
-subcommand.
-.TP
--p STRING, --prefix=STRING
-Specifies the prefix string for log files
-from which to extract execution timings.
-This will be used to search for log files
-if no arguments are specified on the command line.
-.TP
--t NUMBER, --tail=NUMBER
-Only reports object counts from the last
-.I NUMBER
-files.
-.TP
---which=WHICH
-Prints the execution time for the specified
-.IR WHICH
-value:
-.B total
-(the total execution time),
-.B SConscripts
-(total execution time for the SConscript files themselves),
-.B SCons
-(exectuion time in SCons code itself)
-or
-.B commands
-(execution time of the commands and other actions
-used to build targets).
-If no
-.B --which
-option is specified,
-the default behavior is
-.BR total ,
-which reports the total execution time for each run.
-'\"==========================================================================
-.SH CONFIGURATION FILE
-Various
-.B scons-time
-subcommands can read information from a specified
-configuration file when passed the
-.B \-f
-or
-.B \--file
-options.
-The configuration file is actually executed as a Python script.
-Setting Python variables in the configuration file
-controls the behavior of the
-.B scons-time
-script more conveniently than having to specify
-command-line options or arguments for every run,
-and provides a handy way to "shrink-wrap"
-the necessary information for producing (and reporting)
-consistent timing runs for a given configuration.
-.TP
-.B aegis
-The Aegis executable for extracting deltas.
-The default is simply
-.BR aegis .
-.TP
-.B aegis_project
-The Aegis project from which deltas should be extracted.
-The default is whatever is specified
-with the
-.B --aegis=
-command-line option.
-.TP
-.B archive_list
-A list of archives (files or directories)
-that will be copied to the temporary directory
-in which SCons will be invoked.
-.BR .tar ,
-.BR .tar.gz ,
-.BR .tgz
-and
-.BR .zip
-files will have their contents unpacked in
-the temporary directory.
-Directory trees and files will be copied as-is.
-.TP
-.B initial_commands
-A list of commands that will be executed
-before the actual timed
-.B scons
-runs.
-This can be used for commands that are necessary
-to prepare the source tree\-for example,
-creating a configuration file
-that should not be part of the timed run.
-.TP
-.B key_location
-The location of the key on Gnuplot graphing information
-generated with the
-.BR --format=gnuplot
-option.
-The default is
-.BR "bottom left" .
-.TP
-.B prefix
-The file name prefix to be used when
-running or extracting timing for this configuration.
-.TP
-.B python
-The path name of the Python executable
-to be used when running or extracting information
-for this configuration.
-The default is the same version of Python
-used to run the SCons
-.TP
-.B scons
-The path name of the SCons script to be used
-when running or extracting information
-for this configuration.
-The default is simply
-.BR scons .
-.TP
-.B scons_flags
-The
-.B scons
-flags used when running SCons to collect timing information.
-The default value is
-.BR "--debug=count --debug=memory --debug=time --debug=memoizer" .
-.TP
-.B scons_lib_dir
-.TP
-.B scons_wrapper
-.TP
-.B startup_targets
-.TP
-.B subdir
-The subdirectory of the project into which the
-.B scons-time
-script should change
-before executing the SCons commands to time.
-.TP
-.B subversion_url
-The Subversion URL from
-.TP
-.B svn
-The subversion executable used to
-check out revisions of SCons to be timed.
-The default is simple
-.BR svn .
-.TP
-.B svn_co_flag
-.TP
-.B tar
-.TP
-.B targets
-A string containing the targets that should be added to
-the command line of every timed
-.B scons
-run.
-This can be used to restrict what's being timed to a
-subset of the full build for the configuration.
-.TP
-.B targets0
-.TP
-.B targets1
-.TP
-.B targets2
-.TP
-.B title
-.TP
-.B unzip
-.TP
-.B verbose
-.TP
-.B vertical_bars
-'\"--------------------------------------------------------------------------
-.SS Example
-Here is an example
-.B scons-time
-configuration file
-for a hypothetical sample project:
-.P
-.ES
-# The project doesn't use SCons natively (yet), so we're
-# timing a separate set of SConscript files that we lay
-# on top of the vanilla unpacked project tarball.
-arguments = ['project-1.2.tgz', 'project-SConscripts.tar']
-
-# The subdirectory name contains the project version number,
-# so tell scons-time to chdir there before building.
-subdir = 'project-1.2'
-
-# Set the prefix so output log files and profiles are named:
-# project-000-[012].{log,prof}
-# project-001-[012].{log,prof}
-# etc.
-prefix = 'project'
-
-# The SConscript files being tested don't do any SConf
-# configuration, so run their normal ./configure script
-# before we invoke SCons.
-initial_commands = [
- './configure',
-]
-
-# Only time building the bin/project executable.
-targets = 'bin/project'
-
-# Time against SCons revisions of the branches/core branch
-subversion_url = 'http://scons.tigris.org/svn/scons/branches/core'
-.EE
-'\"==========================================================================
-.SH ENVIRONMENT
-The
-.B scons-time
-script uses the following environment variables:
-.TP
-.B PRESERVE
-If this value is set,
-the
-.B scons-time
-script will
-.I not
-remove the temporary directory or directories
-in which it builds the specified configuration
-or downloads a specific version of SCons.
-'\"==========================================================================
-.SH "SEE ALSO"
-.BR gnuplot (1),
-.BR scons (1)
-
-.SH AUTHORS
-Steven Knight <knight at baldmt dot com>
diff --git a/doc/man/scons-time.xml b/doc/man/scons-time.xml
new file mode 100644
index 0000000..026c24d
--- /dev/null
+++ b/doc/man/scons-time.xml
@@ -0,0 +1,1284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- lifted from troff+man by doclifter -->
+<refentry id='sconstime1'
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<!-- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation -->
+
+<!-- Permission is hereby granted, free of charge, to any person obtaining -->
+<!-- a copy of this software and associated documentation files (the -->
+<!-- "Software"), to deal in the Software without restriction, including -->
+<!-- without limitation the rights to use, copy, modify, merge, publish, -->
+<!-- distribute, sublicense, and/or sell copies of the Software, and to -->
+<!-- permit persons to whom the Software is furnished to do so, subject to -->
+<!-- the following conditions: -->
+
+<!-- The above copyright notice and this permission notice shall be included -->
+<!-- in all copies or substantial portions of the Software. -->
+
+<!-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -->
+<!-- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -->
+<!-- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -->
+<!-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -->
+<!-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -->
+<!-- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -->
+<!-- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
+
+<!-- doc/man/scons-time.xml 2014/03/02 14:18:15 garyo -->
+
+<!-- ES \- Example Start \- indents and turns off line fill -->
+<!-- EE \- Example End \- ends indent and turns line fill back on -->
+<!-- '\"========================================================================== -->
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+<refmeta>
+<refentrytitle>SCONS-TIME</refentrytitle>
+<manvolnum>1</manvolnum>
+<refmiscinfo class='source'>March 2014</refmiscinfo>
+</refmeta>
+<refnamediv id='name'>
+<refname>scons-time</refname>
+<refpurpose>generate and display SCons timing information</refpurpose>
+</refnamediv>
+<refsynopsisdiv id='synopsis'>
+<cmdsynopsis>
+ <command>scons-time</command>
+ <arg choice='plain'><replaceable>subcommand</replaceable></arg>
+ <arg choice='opt' rep='repeat'><replaceable>options</replaceable></arg>
+ <arg choice='opt' rep='repeat'><replaceable>arguments</replaceable></arg>
+</cmdsynopsis>
+</refsynopsisdiv>
+
+<!-- body begins here -->
+
+<refsect1 id='generating_timing_information'><title>Generating Timing Information</title>
+<para><emphasis role="bold">scons-time run</emphasis>
+[<option>-hnqv</option>]
+[<option>--aegis=</option><replaceable>PROJECT</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--number=</option><replaceable>NUMBER</replaceable>]
+[<option>--outdir=</option><replaceable>OUTDIR</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>--python=</option><replaceable>PYTHON</replaceable>]
+[<option>-s </option><emphasis>DIR</emphasis>]
+[<option>--scons=</option><replaceable>SCONS</replaceable>]
+[<option>--svn=</option><replaceable>URL</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+
+<refsect2 id='extracting_function_timings'><title>Extracting Function Timings</title>
+<para><emphasis role="bold">scons-time func</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>--func=</option><replaceable>NAME</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title= TITLE</option>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+</refsect2>
+
+<refsect2 id='extracting_memory_statistics'><title>Extracting Memory Statistics</title>
+<para><emphasis role="bold">scons-time mem</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>--stage=</option><replaceable>STAGE</replaceable>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title=</option><replaceable>TITLE</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+</refsect2>
+
+<refsect2 id='extracting_object_counts'><title>Extracting Object Counts</title>
+<para><emphasis role="bold">scons-time obj</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>--stage=</option><replaceable>STAGE</replaceable>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title=</option><replaceable>TITLE</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+</refsect2>
+
+<refsect2 id='extracting_execution_times'><title>Extracting Execution Times</title>
+<para><emphasis role="bold">scons-time time</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title=</option><replaceable>TITLE</replaceable>]
+[<option>--which=</option><replaceable>WHICH</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+</refsect2>
+
+<refsect2 id='help_text'><title>Help Text</title>
+<para><emphasis role="bold">scons-time help</emphasis>
+<emphasis>SUBCOMMAND</emphasis>
+[...]</para>
+<!-- '\"========================================================================== -->
+</refsect2>
+</refsect1>
+
+<refsect1 id='description'><title>DESCRIPTION</title>
+<para>The
+<command>scons-time</command>
+command runs an SCons configuration
+through a standard set of profiled timings
+and can extract and graph information from the
+resulting profiles and log files of those timings.
+The action to be performed by the
+<command>scons-time</command>
+script is specified
+by a subcommand, the first argument on the command line.
+See the
+<link linkend="subcommands">SUBCOMMANDS</link>
+section below for information about the operation
+of specific subcommands.</para>
+
+<para>The basic way to use
+<command>scons-time</command>
+is to run the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand
+(possibly multiple times)
+to generate profile and log file output,
+and then use one of the other
+subcommands to display the results
+captured in the profiles and log files
+for a particular kind of information:
+function timings
+(the
+<emphasis role="bold">scons-time func</emphasis>
+subcommand),
+total memory used
+(the
+<emphasis role="bold">scons-time mem</emphasis>
+subcommand),
+object counts
+(the
+<emphasis role="bold">scons-time obj</emphasis>
+subcommand)
+and overall execution time
+(the
+<emphasis role="bold">scons-time time</emphasis>
+subcommand).
+Options exist to place and find the
+profiles and log files in separate directories,
+to generate the output in a format suitable
+for graphing with the
+<citerefentry><refentrytitle>gnuplot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+program,
+and so on.</para>
+
+<para>There are two basic ways the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand
+is intended to be used
+to gather timing statistics
+for a configuration.
+One is to use the
+<option>--svn=</option>
+option to test a configuration against
+a list of revisions from the SCons Subversion repository.
+This will generate a profile and timing log file
+for every revision listed with the
+<option>--number=</option>
+option,
+and can be used to look at the
+impact of committed changes to the
+SCons code base on a particular
+configuration over time.</para>
+
+<para>The other way is to profile incremental changes to a
+local SCons code base during a development cycle--that is,
+to look at the performance impact of changes
+you're making in the local tree.
+In this mode,
+you run the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand
+<emphasis>without</emphasis>
+the
+<option>--svn=</option>
+option,
+in which case it simply looks in the profile/log file output directory
+(the current directory by default)
+and automatically figures out the
+<emphasis>next</emphasis>
+run number for the output profile and log file.
+Used in this way,
+the development cycle goes something like:
+make a change to SCons;
+run
+<emphasis role="bold">scons-time run</emphasis>
+to profile it against a specific configuration;
+make another change to SCons;
+run
+<emphasis role="bold">scons-time run</emphasis>
+again to profile it;
+etc.</para>
+<!-- '\"========================================================================== -->
+</refsect1>
+
+<refsect1 id='options'><title>OPTIONS</title>
+<para>The
+<command>scons-time</command>
+command only supports a few global options:</para>
+<variablelist>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Displays the global help text and exits,
+identical to the
+<emphasis role="bold">scons-time help</emphasis>
+subcommand.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-V, --version</term>
+ <listitem>
+<para>Displays the
+<command>scons-time</command>
+version and exits.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Most functionality is controlled by options
+to the individual subcommands.
+See the next section for information
+about individual subcommand options.</para>
+<!-- '\"========================================================================== -->
+</refsect1>
+
+<refsect1 id='subcommands'><title>SUBCOMMANDS</title>
+<para>The
+<command>scons-time</command>
+command supports the following
+individual subcommands.</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+
+<refsect2 id='the_func_subcommand'><title>The func Subcommand</title>
+<para><emphasis role="bold">scons-time func</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>--func=</option><replaceable>NAME</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title= TITLE</option>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+
+<para>The
+<emphasis role="bold">scons-time func</emphasis>
+subcommand displays timing information
+for a specific Python function within SCons.
+By default, it extracts information about the
+<emphasis role="bold">_main</emphasis>()
+function,
+which includes the Python profiler timing
+for all of SCons.</para>
+
+<para>The
+<emphasis role="bold">scons-time func</emphasis>
+subcommand extracts function timing information
+from all the specified file arguments,
+which should be Python profiler output files.
+(Normally, these would be
+<emphasis role="bold">*.prof</emphasis>
+files generated by the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand,
+but they can actually be generated
+by any Python profiler invocation.)
+All file name arguments will be
+globbed for on-disk files.</para>
+
+<para>If no arguments are specified,
+then function timing information
+will be extracted from all
+<emphasis role="bold">*.prof</emphasis>
+files,
+or the subset of them
+with a prefix specified by the
+<option>-p</option>
+option.</para>
+
+<para>Options include:</para>
+<variablelist>
+ <varlistentry>
+ <term>-C DIRECTORY, --chdir=DIRECTORY</term>
+ <listitem>
+<para>Changes to the specified
+<emphasis>DIRECTORY</emphasis>
+before looking for the specified files
+(or files that match the specified patterns).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-f FILE, --file=FILE</term>
+ <listitem>
+<para>Reads configuration information from the specified
+<emphasis>FILE</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-fmt=FORMAT, --format=FORMAT</term>
+ <listitem>
+<para>Reports the output in the specified
+<emphasis>FORMAT</emphasis>.
+The formats currently supported are
+<emphasis role="bold">ascii</emphasis>
+(the default)
+and
+<emphasis role="bold">gnuplot</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--func=NAME</term>
+ <listitem>
+<para>Extracts timings for the specified function
+<emphasis>NAME</emphasis>.
+The default is to report cumulative timings for the
+<emphasis role="bold">_main</emphasis>()
+function,
+which contains the entire SCons run.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Displays help text for the
+<emphasis role="bold">scons-time func</emphasis>
+subcommand.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-p STRING, --prefix=STRING</term>
+ <listitem>
+<para>Specifies the prefix string for profiles
+from which to extract function timing information.
+This will be used to search for profiles
+if no arguments are specified on the command line.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-t NUMBER, --tail=NUMBER</term>
+ <listitem>
+<para>Only extracts function timings from the last
+<emphasis>NUMBER</emphasis>
+files.</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+
+<refsect2 id='the_help_subcommand'><title>The help Subcommand</title>
+<para><emphasis role="bold">scons-time help</emphasis>
+<emphasis>SUBCOMMAND</emphasis>
+[...]
+The
+<emphasis role="bold">help</emphasis>
+subcommand prints help text for any
+other subcommands listed as later arguments on the command line.</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+</refsect2>
+
+<refsect2 id='the_mem_subcommand'><title>The mem Subcommand</title>
+<para><emphasis role="bold">scons-time mem</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>--stage=</option><replaceable>STAGE</replaceable>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title=</option><replaceable>TITLE</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+
+<para>The
+<emphasis role="bold">scons-time mem</emphasis>
+subcommand displays how much memory SCons uses.</para>
+
+<para>The
+<emphasis role="bold">scons-time mem</emphasis>
+subcommand extracts memory use information
+from all the specified file arguments,
+which should be files containing output from
+running SCons with the
+<option>--debug=memory</option>
+option.
+(Normally, these would be
+<emphasis role="bold">*.log</emphasis>
+files generated by the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand.)
+All file name arguments will be
+globbed for on-disk files.</para>
+
+<para>If no arguments are specified,
+then memory information
+will be extracted from all
+<emphasis role="bold">*.log</emphasis>
+files,
+or the subset of them
+with a prefix specified by the
+<option>-p</option>
+option.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>-C DIR, --chdir=DIR</term>
+ <listitem>
+<para>Changes to the specified
+<emphasis>DIRECTORY</emphasis>
+before looking for the specified files
+(or files that match the specified patterns).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-f FILE, --file=FILE</term>
+ <listitem>
+<para>Reads configuration information from the specified
+<emphasis>FILE</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-fmt=FORMAT, --format=FORMAT</term>
+ <listitem>
+<para>Reports the output in the specified
+<emphasis>FORMAT</emphasis>.
+The formats currently supported are
+<emphasis role="bold">ascii</emphasis>
+(the default)
+and
+<emphasis role="bold">gnuplot</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Displays help text for the
+<emphasis role="bold">scons-time mem</emphasis>
+subcommand.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-p STRING, --prefix=STRING</term>
+ <listitem>
+<para>Specifies the prefix string for log files
+from which to extract memory usage information.
+This will be used to search for log files
+if no arguments are specified on the command line.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--stage=STAGE</term>
+ <listitem>
+<para>Prints the memory used at the end of the specified
+<emphasis>STAGE</emphasis>:
+<emphasis role="bold">pre-read</emphasis>
+(before the SConscript files are read),
+<emphasis role="bold">post-read ,</emphasis>
+(after the SConscript files are read),
+<emphasis role="bold">pre-build</emphasis>
+(before any targets are built)
+or
+<emphasis role="bold">post-build</emphasis>
+(after any targets are built).
+If no
+<option>--stage</option>
+option is specified,
+the default behavior is
+<emphasis role="bold">post-build</emphasis>,
+which reports the final amount of memory
+used by SCons during each run.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-t NUMBER, --tail=NUMBER</term>
+ <listitem>
+<para>Only reports memory statistics from the last
+<emphasis>NUMBER</emphasis>
+files.</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+
+<refsect2 id='the_obj_subcommand'><title>The obj Subcommand</title>
+<para><emphasis role="bold">scons-time obj</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>--stage=</option><replaceable>STAGE</replaceable>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title=</option><replaceable>TITLE</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+
+<para>The
+<emphasis role="bold">scons-time obj</emphasis>
+subcommand displays how many objects of a specific named type
+are created by SCons.</para>
+
+<para>The
+<emphasis role="bold">scons-time obj</emphasis>
+subcommand extracts object counts
+from all the specified file arguments,
+which should be files containing output from
+running SCons with the
+<option>--debug=count</option>
+option.
+(Normally, these would be
+<emphasis role="bold">*.log</emphasis>
+files generated by the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand.)
+All file name arguments will be
+globbed for on-disk files.</para>
+
+<para>If no arguments are specified,
+then object counts
+will be extracted from all
+<emphasis role="bold">*.log</emphasis>
+files,
+or the subset of them
+with a prefix specified by the
+<option>-p</option>
+option.</para>
+<variablelist>
+ <varlistentry>
+ <term>-C DIR, --chdir=DIR</term>
+ <listitem>
+<para>Changes to the specified
+<emphasis>DIRECTORY</emphasis>
+before looking for the specified files
+(or files that match the specified patterns).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-f FILE, --file=FILE</term>
+ <listitem>
+<para>Reads configuration information from the specified
+<emphasis>FILE</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-fmt=FORMAT, --format=FORMAT</term>
+ <listitem>
+<para>Reports the output in the specified
+<emphasis>FORMAT</emphasis>.
+The formats currently supported are
+<emphasis role="bold">ascii</emphasis>
+(the default)
+and
+<emphasis role="bold">gnuplot</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Displays help text for the
+<emphasis role="bold">scons-time obj</emphasis>
+subcommand.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-p STRING, --prefix=STRING</term>
+ <listitem>
+<para>Specifies the prefix string for log files
+from which to extract object counts.
+This will be used to search for log files
+if no arguments are specified on the command line.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--stage=STAGE</term>
+ <listitem>
+<para>Prints the object count at the end of the specified
+<emphasis>STAGE</emphasis>:
+<emphasis role="bold">pre-read</emphasis>
+(before the SConscript files are read),
+<emphasis role="bold">post-read ,</emphasis>
+(after the SConscript files are read),
+<emphasis role="bold">pre-build</emphasis>
+(before any targets are built)
+or
+<emphasis role="bold">post-build</emphasis>
+(after any targets are built).
+If no
+<option>--stage</option>
+option is specified,
+the default behavior is
+<emphasis role="bold">post-build</emphasis>,
+which reports the final object count during each run.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-t NUMBER, --tail=NUMBER</term>
+ <listitem>
+<para>Only reports object counts from the last
+<emphasis>NUMBER</emphasis>
+files.</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+
+<refsect2 id='the_run_subcommand'><title>The run Subcommand</title>
+<para><emphasis role="bold">scons-time run</emphasis>
+[<option>-hnqv</option>]
+[<option>--aegis=</option><replaceable>PROJECT</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--number=</option><replaceable>NUMBER</replaceable>]
+[<option>--outdir=</option><replaceable>OUTDIR</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>--python=</option><replaceable>PYTHON</replaceable>]
+[<option>-s </option><emphasis>DIR</emphasis>]
+[<option>--scons=</option><replaceable>SCONS</replaceable>]
+[<option>--svn=</option><replaceable>URL</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]
+The
+<emphasis role="bold">scons-time run</emphasis>
+subcommand is the basic subcommand
+for profiling a specific configuration
+against a version of SCons.</para>
+
+<para>The configuration to be tested
+is specified as a list of files
+or directories that will be unpacked or copied
+into a temporary directory
+in which SCons will be invoked.
+The
+<emphasis role="bold">scons-time run</emphasis>
+subcommand understands file suffixes like
+<markup>.tar</markup>,
+<markup>.tar.gz</markup>,
+<markup>.tgz</markup>
+and
+<markup>.zip</markup>
+and will unpack their contents into a temporary directory.
+If more than one argument is specified,
+each one will be unpacked or copied
+into the temporary directory "on top of"
+the previous archives or directories,
+so the expectation is that multiple
+specified archives share the same directory layout.</para>
+
+<para>Once the file or directory arguments are unpacked or
+copied to the temporary directory,
+the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand runs the
+requested version of SCons
+against the configuration
+three times:</para>
+<variablelist>
+ <varlistentry>
+ <term>Startup</term>
+ <listitem>
+<para>SCons is run with the
+<option>--help</option>
+option so that just the SConscript files are read,
+and then the default help text is printed.
+This profiles just the perceived "overhead" of starting up SCons
+and processing the SConscript files.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Full build</term>
+ <listitem>
+<para>SCons is run to build everything specified in the configuration.
+Specific targets to be passed in on the command l ine
+may be specified by the
+<emphasis role="bold">targets</emphasis>
+keyword in a configuration file; see below for details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Rebuild</term>
+ <listitem>
+<para>SCons is run again on the same just-built directory.
+If the dependencies in the SCons configuration are correct,
+this should be an up-to-date, "do nothing" rebuild.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Each invocation captures the output log file and a profile.</para>
+
+<para>The
+<emphasis role="bold">scons-time run</emphasis>
+subcommand supports the following options:</para>
+<variablelist>
+ <varlistentry>
+ <term>--aegis=PROJECT</term>
+ <listitem>
+<para>Specifies the Aegis
+<emphasis>PROJECT</emphasis>
+from which the
+version(s) of
+<emphasis role="bold">scons</emphasis>
+being timed will be extracted.
+When
+<option>--aegis</option>
+is specified, the
+<option>--number=</option><replaceable>NUMBER</replaceable>
+option specifies delta numbers
+that will be tested.
+Output from each invocation run will be placed in file
+names that match the Aegis delta numbers.
+If the
+<option>--number=</option>
+option is not specified,
+then the default behavior is to time the
+tip of the specified
+<emphasis>PROJECT</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-f FILE, --file=FILE</term>
+ <listitem>
+<para>Reads configuration information from the specified
+<emphasis>FILE</emphasis>.
+This often provides a more convenient way to specify and
+collect parameters associated with a specific timing configuration
+than specifying them on the command line.
+See the
+<link linkend="configuration_file">CONFIGURATION FILE</link>
+section below
+for information about the configuration file parameters.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Displays help text for the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-n, --no-exec</term>
+ <listitem>
+<para>Do not execute commands,
+just printing the command-line equivalents of what would be executed.
+Note that the
+<command>scons-time</command>
+script actually executes its actions in Python,
+where possible,
+for portability.
+The commands displayed are UNIX
+<emphasis>equivalents</emphasis>
+of what it's doing.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--number=NUMBER</term>
+ <listitem>
+<para>Specifies the run number to be used in the names of
+the log files and profile outputs generated by this run.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>When used in conjunction with the
+<option>--aegis=</option><replaceable>PROJECT</replaceable>
+option,
+<emphasis>NUMBER</emphasis>
+specifies one or more comma-separated Aegis delta numbers
+that will be retrieved automatically from the specified Aegis
+<emphasis>PROJECT</emphasis>.</para>
+
+<para>When used in conjunction with the
+<option>--svn=</option><replaceable>URL</replaceable>
+option,
+<emphasis>NUMBER</emphasis>
+specifies one or more comma-separated Subversion revision numbers
+that will be retrieved automatically from the Subversion
+repository at the specified
+<emphasis>URL</emphasis>.
+Ranges of delta or revision numbers
+may be specified be separating two numbers
+with a hyphen
+(<emphasis role="bold">-</emphasis>).</para>
+
+<para>Example:</para>
+<literallayout class="monospaced">
+% scons-time run --svn=<ulink url='http://scons.tigris.org/svn/trunk'>http://scons.tigris.org/svn/trunk</ulink> --num=1247,1249-1252 .
+</literallayout> <!-- .fi -->
+<variablelist>
+ <varlistentry>
+ <term>-p STRING, --prefix=STRING</term>
+ <listitem>
+<para>Specifies the prefix string to be used for all of the log files
+and profiles generated by this run.
+The default is derived from the first
+specified argument:
+if the first argument is a directory,
+the default prefix is the name of the directory;
+if the first argument is an archive
+(tar or zip file),
+the default prefix is the the base name of the archive,
+that is, what remains after stripping the archive suffix
+(<markup>.tgz</markup>, <markup>.tar.gz</markup> or <markup>.zip</markup>).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--python=PYTHON</term>
+ <listitem>
+<para>Specifies a path to the Python executable to be used
+for the timing runs.
+The default is to use the same Python executable that
+is running the
+<command>scons-time</command>
+command itself.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-q, --quiet</term>
+ <listitem>
+<para>Suppresses display of the command lines being executed.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-s DIR, --subdir=DIR</term>
+ <listitem>
+<para>Specifies the name of directory or subdirectory
+from which the commands should be executed.
+The default is XXX</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--scons=SCONS</term>
+ <listitem>
+<para>Specifies a path to the SCons script to be used
+for the timing runs.
+The default is XXX</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--svn=URL, --subversion=URL</term>
+ <listitem>
+<para>Specifies the
+<emphasis>URL</emphasis>
+of the Subversion repository from which the
+version(s) of
+<emphasis role="bold">scons</emphasis>
+being timed will be extracted.
+When
+<option>--svn</option>
+is specified, the
+<option>--number=</option><replaceable>NUMBER</replaceable>
+option specifies revision numbers
+that will be tested.
+Output from each invocation run will be placed in file
+names that match the Subversion revision numbers.
+If the
+<option>--number=</option>
+option is not specified,
+then the default behavior is to time the
+<emphasis role="bold">HEAD</emphasis>
+of the specified
+<emphasis>URL</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-v, --verbose</term>
+ <listitem>
+<para>Displays the output from individual commands to the screen
+(in addition to capturing the output in log files).</para>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+
+<refsect2 id='the_time_subcommand'><title>The time Subcommand</title>
+<para><emphasis role="bold">scons-time time</emphasis>
+[<option>-h</option>]
+[<option>--chdir=</option><replaceable>DIR</replaceable>]
+[<option>-f </option><emphasis>FILE</emphasis>]
+[<option>--fmt=</option><replaceable>FORMAT</replaceable>]
+[<option>-p </option><emphasis>STRING</emphasis>]
+[<option>-t </option><emphasis>NUMBER</emphasis>]
+[<option>--title=</option><replaceable>TITLE</replaceable>]
+[<option>--which=</option><replaceable>WHICH</replaceable>]
+[<emphasis>ARGUMENTS</emphasis>]</para>
+
+<para>The
+<emphasis role="bold">scons-time time</emphasis>
+subcommand displays SCons execution times
+as reported by the
+<userinput>scons --debug=time</userinput>
+option.</para>
+
+<para>The
+<emphasis role="bold">scons-time time</emphasis>
+subcommand extracts SCons timing
+from all the specified file arguments,
+which should be files containing output from
+running SCons with the
+<option>--debug=time</option>
+option.
+(Normally, these would be
+<emphasis role="bold">*.log</emphasis>
+files generated by the
+<emphasis role="bold">scons-time run</emphasis>
+subcommand.)
+All file name arguments will be
+globbed for on-disk files.</para>
+
+<para>If no arguments are specified,
+then execution timings
+will be extracted from all
+<emphasis role="bold">*.log</emphasis>
+files,
+or the subset of them
+with a prefix specified by the
+<option>-p</option>
+option.</para>
+<variablelist>
+ <varlistentry>
+ <term>-C DIR, --chdir=DIR</term>
+ <listitem>
+<para>Changes to the specified
+<emphasis>DIRECTORY</emphasis>
+before looking for the specified files
+(or files that match the specified patterns).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-f FILE, --file=FILE</term>
+ <listitem>
+<para>Reads configuration information from the specified
+<emphasis>FILE</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-fmt=FORMAT, --format=FORMAT</term>
+ <listitem>
+<para>Reports the output in the specified
+<emphasis>FORMAT</emphasis>.
+The formats currently supported are
+<emphasis role="bold">ascii</emphasis>
+(the default)
+and
+<emphasis role="bold">gnuplot</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Displays help text for the
+<emphasis role="bold">scons-time time</emphasis>
+subcommand.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-p STRING, --prefix=STRING</term>
+ <listitem>
+<para>Specifies the prefix string for log files
+from which to extract execution timings.
+This will be used to search for log files
+if no arguments are specified on the command line.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-t NUMBER, --tail=NUMBER</term>
+ <listitem>
+<para>Only reports object counts from the last
+<emphasis>NUMBER</emphasis>
+files.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--which=WHICH</term>
+ <listitem>
+<para>Prints the execution time for the specified
+<emphasis>WHICH</emphasis>
+value:
+<emphasis role="bold">total</emphasis>
+(the total execution time),
+<emphasis role="bold">SConscripts</emphasis>
+(total execution time for the SConscript files themselves),
+<emphasis role="bold">SCons</emphasis>
+(exectuion time in SCons code itself)
+or
+<emphasis role="bold">commands</emphasis>
+(execution time of the commands and other actions
+used to build targets).
+If no
+<option>--which</option>
+option is specified,
+the default behavior is
+<emphasis role="bold">total</emphasis>,
+which reports the total execution time for each run.</para>
+<!-- '\"========================================================================== -->
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+</refsect1>
+
+<refsect1 id='configuration_file'><title>CONFIGURATION FILE</title>
+<para>Various
+<command>scons-time</command>
+subcommands can read information from a specified
+configuration file when passed the
+<option>-f</option>
+or
+<option>--file</option>
+options.
+The configuration file is actually executed as a Python script.
+Setting Python variables in the configuration file
+controls the behavior of the
+<command>scons-time</command>
+script more conveniently than having to specify
+command-line options or arguments for every run,
+and provides a handy way to "shrink-wrap"
+the necessary information for producing (and reporting)
+consistent timing runs for a given configuration.</para>
+<variablelist>
+ <varlistentry>
+ <term><emphasis role="bold">aegis</emphasis></term>
+ <listitem>
+<para>The Aegis executable for extracting deltas.
+The default is simply
+<emphasis role="bold">aegis</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">aegis_project</emphasis></term>
+ <listitem>
+<para>The Aegis project from which deltas should be extracted.
+The default is whatever is specified
+with the
+<option>--aegis=</option>
+command-line option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">archive_list</emphasis></term>
+ <listitem>
+<para>A list of archives (files or directories)
+that will be copied to the temporary directory
+in which SCons will be invoked.
+<markup>.tar</markup>,
+<markup>.tar.gz</markup>,
+<markup>.tgz</markup>
+and
+<markup>.zip</markup>
+files will have their contents unpacked in
+the temporary directory.
+Directory trees and files will be copied as-is.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">initial_commands</emphasis></term>
+ <listitem>
+<para>A list of commands that will be executed
+before the actual timed
+<emphasis role="bold">scons</emphasis>
+runs.
+This can be used for commands that are necessary
+to prepare the source tree-for example,
+creating a configuration file
+that should not be part of the timed run.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">key_location</emphasis></term>
+ <listitem>
+<para>The location of the key on Gnuplot graphing information
+generated with the
+<option>--format=gnuplot</option>
+option.
+The default is
+<emphasis role="bold">bottom left</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">prefix</emphasis></term>
+ <listitem>
+<para>The file name prefix to be used when
+running or extracting timing for this configuration.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">python</emphasis></term>
+ <listitem>
+<para>The path name of the Python executable
+to be used when running or extracting information
+for this configuration.
+The default is the same version of Python
+used to run the SCons</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">scons</emphasis></term>
+ <listitem>
+<para>The path name of the SCons script to be used
+when running or extracting information
+for this configuration.
+The default is simply
+<emphasis role="bold">scons</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">scons_flags</emphasis></term>
+ <listitem>
+<para>The
+<emphasis role="bold">scons</emphasis>
+flags used when running SCons to collect timing information.
+The default value is
+<option>--debug=count --debug=memory --debug=time --debug=memoizer</option>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">scons_lib_dir</emphasis></term>
+ <term><emphasis role="bold">scons_wrapper</emphasis></term>
+ <term><emphasis role="bold">startup_targets</emphasis></term>
+ <term><emphasis role="bold">subdir</emphasis></term>
+ <listitem>
+<para>The subdirectory of the project into which the
+<command>scons-time</command>
+script should change
+before executing the SCons commands to time.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">subversion_url</emphasis></term>
+ <listitem>
+<para>The Subversion URL from</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">svn</emphasis></term>
+ <listitem>
+<para>The subversion executable used to
+check out revisions of SCons to be timed.
+The default is simple
+<emphasis role="bold">svn</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">svn_co_flag</emphasis></term>
+ <term><emphasis role="bold">tar</emphasis></term>
+ <term><emphasis role="bold">targets</emphasis></term>
+ <listitem>
+<para>A string containing the targets that should be added to
+the command line of every timed
+<emphasis role="bold">scons</emphasis>
+run.
+This can be used to restrict what's being timed to a
+subset of the full build for the configuration.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">targets0</emphasis></term>
+ <term><emphasis role="bold">targets1</emphasis></term>
+ <term><emphasis role="bold">targets2</emphasis></term>
+ <term><emphasis role="bold">title</emphasis></term>
+ <term><emphasis role="bold">unzip</emphasis></term>
+ <term><emphasis role="bold">verbose</emphasis></term>
+ <term><emphasis role="bold">vertical_bars</emphasis></term>
+ <listitem>
+<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+<para></para> <!-- FIXME: blank list item -->
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<refsect2 id='example'><title>Example</title>
+<para>Here is an example
+<command>scons-time</command>
+configuration file
+for a hypothetical sample project:</para>
+
+<literallayout class="monospaced">
+# The project doesn't use SCons natively (yet), so we're
+# timing a separate set of SConscript files that we lay
+# on top of the vanilla unpacked project tarball.
+arguments = ['project-1.2.tgz', 'project-SConscripts.tar']
+
+# The subdirectory name contains the project version number,
+# so tell scons-time to chdir there before building.
+subdir = 'project-1.2'
+
+# Set the prefix so output log files and profiles are named:
+# project-000-[012].{log,prof}
+# project-001-[012].{log,prof}
+# etc.
+prefix = 'project'
+
+# The SConscript files being tested don't do any SConf
+# configuration, so run their normal ./configure script
+# before we invoke SCons.
+initial_commands = [
+ './configure',
+]
+
+# Only time building the bin/project executable.
+targets = 'bin/project'
+
+# Time against SCons revisions of the branches/core branch
+subversion_url = '<ulink url='http://scons.tigris.org/svn/scons/branches/core'>http://scons.tigris.org/svn/scons/branches/core</ulink>'
+</literallayout> <!-- .fi -->
+<!-- '\"========================================================================== -->
+</refsect2>
+</refsect1>
+
+<refsect1 id='environment'><title>ENVIRONMENT</title>
+<para>The
+<command>scons-time</command>
+script uses the following environment variables:</para>
+<variablelist>
+ <varlistentry>
+ <term><emphasis role="bold">PRESERVE</emphasis></term>
+ <listitem>
+<para>If this value is set,
+the
+<command>scons-time</command>
+script will
+<emphasis>not</emphasis>
+remove the temporary directory or directories
+in which it builds the specified configuration
+or downloads a specific version of SCons.</para>
+<!-- '\"========================================================================== -->
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect1>
+
+<refsect1 id='see_also'><title>SEE ALSO</title>
+<para><citerefentry><refentrytitle>gnuplot</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+<citerefentry><refentrytitle>scons</refentrytitle><manvolnum>1</manvolnum></citerefentry></para>
+
+</refsect1>
+
+<refsect1 id='authors'><title>AUTHORS</title>
+<para>Steven Knight &lt;knight at baldmt dot com&gt;</para>
+</refsect1>
+</refentry>
+
diff --git a/doc/man/scons.1 b/doc/man/scons.1
deleted file mode 100644
index 4bac01b..0000000
--- a/doc/man/scons.1
+++ /dev/null
@@ -1,6244 +0,0 @@
-.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining
-.\" a copy of this software and associated documentation files (the
-.\" "Software"), to deal in the Software without restriction, including
-.\" without limitation the rights to use, copy, modify, merge, publish,
-.\" distribute, sublicense, and/or sell copies of the Software, and to
-.\" permit persons to whom the Software is furnished to do so, subject to
-.\" the following conditions:
-.\"
-.\" The above copyright notice and this permission notice shall be included
-.\" in all copies or substantial portions of the Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-.\" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-.\" WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-.\" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-.\" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-.\" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-.\" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-.\"
-.\" doc/man/scons.1 2013/03/03 09:48:35 garyo
-.\"
-.TH SCONS 1 "March 2013"
-.\" ES - Example Start - indents and turns off line fill
-.rm ES
-.de ES
-.RS
-.nf
-..
-.\" EE - Example End - ends indent and turns line fill back on
-.rm EE
-.de EE
-.fi
-.RE
-..
-.SH NAME
-scons \- a software construction tool
-.SH SYNOPSIS
-.B scons
-[
-.IR options ...
-]
-[
-.IR name = val ...
-]
-[
-.IR targets ...
-]
-.SH DESCRIPTION
-
-The
-.B scons
-utility builds software (or other files) by determining which
-component pieces must be rebuilt and executing the necessary commands to
-rebuild them.
-
-By default,
-.B scons
-searches for a file named
-.IR SConstruct ,
-.IR Sconstruct ,
-or
-.I sconstruct
-(in that order) in the current directory and reads its
-configuration from the first file found.
-An alternate file name may be
-specified via the
-.B -f
-option.
-
-The
-.I SConstruct
-file can specify subsidiary
-configuration files using the
-.BR SConscript ()
-function.
-By convention,
-these subsidiary files are named
-.IR SConscript ,
-although any name may be used.
-(Because of this naming convention,
-the term "SConscript files"
-is sometimes used to refer
-generically to all
-.B scons
-configuration files,
-regardless of actual file name.)
-
-The configuration files
-specify the target files to be built, and
-(optionally) the rules to build those targets. Reasonable default
-rules exist for building common software components (executable
-programs, object files, libraries), so that for most software
-projects, only the target and input files need be specified.
-
-Before reading the
-.I SConstruct
-file,
-.B scons
-looks for a directory named
-.I site_scons
-in various system directories (see below) and the directory containing the
-.I SConstruct
-file; for each of those dirs which exists,
-.I site_scons
-is prepended to sys.path,
-the file
-.IR site_scons/site_init.py ,
-is evaluated if it exists,
-and the directory
-.I site_scons/site_tools
-is prepended to the default toolpath if it exists.
-See the
-.I --no-site-dir
-and
-.I --site-dir
-options for more details.
-
-.B scons
-reads and executes the SConscript files as Python scripts,
-so you may use normal Python scripting capabilities
-(such as flow control, data manipulation, and imported Python libraries)
-to handle complicated build situations.
-.BR scons ,
-however, reads and executes all of the SConscript files
-.I before
-it begins building any targets.
-To make this obvious,
-.B scons
-prints the following messages about what it is doing:
-
-.ES
-$ scons foo.out
-scons: Reading SConscript files ...
-scons: done reading SConscript files.
-scons: Building targets ...
-cp foo.in foo.out
-scons: done building targets.
-$
-.EE
-
-The status messages
-(everything except the line that reads "cp foo.in foo.out")
-may be suppressed using the
-.B -Q
-option.
-
-.B scons
-does not automatically propagate
-the external environment used to execute
-.B scons
-to the commands used to build target files.
-This is so that builds will be guaranteed
-repeatable regardless of the environment
-variables set at the time
-.B scons
-is invoked.
-This also means that if the compiler or other commands
-that you want to use to build your target files
-are not in standard system locations,
-.B scons
-will not find them unless
-you explicitly set the PATH
-to include those locations.
-Whenever you create an
-.B scons
-construction environment,
-you can propagate the value of PATH
-from your external environment as follows:
-
-.ES
-import os
-env = Environment(ENV = {'PATH' : os.environ['PATH']})
-.EE
-
-Similarly, if the commands use external environment variables
-like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc.,
-these variables can also be explicitly propagated:
-
-.ES
-import os
-env = Environment(ENV = {'PATH' : os.environ['PATH'],
- 'HOME' : os.environ['HOME']})
-.EE
-
-Or you may explicitly propagate the invoking user's
-complete external environment:
-
-.ES
-import os
-env = Environment(ENV = os.environ)
-.EE
-
-This comes at the expense of making your build
-dependent on the user's environment being set correctly,
-but it may be more convenient for many configurations.
-
-.B scons
-can scan known input files automatically for dependency
-information (for example, #include statements
-in C or C++ files) and will rebuild dependent files appropriately
-whenever any "included" input file changes.
-.B scons
-supports the
-ability to define new scanners for unknown input file types.
-
-.B scons
-knows how to fetch files automatically from
-SCCS or RCS subdirectories
-using SCCS, RCS or BitKeeper.
-
-.B scons
-is normally executed in a top-level directory containing a
-.I SConstruct
-file, optionally specifying
-as command-line arguments
-the target file or files to be built.
-
-By default, the command
-
-.ES
-scons
-.EE
-
-will build all target files in or below the current directory.
-Explicit default targets
-(to be built when no targets are specified on the command line)
-may be defined the SConscript file(s)
-using the
-.B Default()
-function, described below.
-
-Even when
-.B Default()
-targets are specified in the SConscript file(s),
-all target files in or below the current directory
-may be built by explicitly specifying
-the current directory (.)
-as a command-line target:
-
-.ES
-scons .
-.EE
-
-Building all target files,
-including any files outside of the current directory,
-may be specified by supplying a command-line target
-of the root directory (on POSIX systems):
-
-.ES
-scons /
-.EE
-
-or the path name(s) of the volume(s) in which all the targets
-should be built (on Windows systems):
-
-.ES
-scons C:\\ D:\\
-.EE
-
-To build only specific targets,
-supply them as command-line arguments:
-
-.ES
-scons foo bar
-.EE
-
-in which case only the specified targets will be built
-(along with any derived files on which they depend).
-
-Specifying "cleanup" targets in SConscript files is not usually necessary.
-The
-.B -c
-flag removes all files
-necessary to build the specified target:
-
-.ES
-scons -c .
-.EE
-
-to remove all target files, or:
-
-.ES
-scons -c build export
-.EE
-
-to remove target files under build and export.
-Additional files or directories to remove can be specified using the
-.BR Clean()
-function.
-Conversely, targets that would normally be removed by the
-.B -c
-invocation
-can be prevented from being removed by using the
-.BR NoClean ()
-function.
-
-A subset of a hierarchical tree may be built by
-remaining at the top-level directory (where the
-.I SConstruct
-file lives) and specifying the subdirectory as the target to be
-built:
-
-.ES
-scons src/subdir
-.EE
-
-or by changing directory and invoking scons with the
-.B -u
-option, which traverses up the directory
-hierarchy until it finds the
-.I SConstruct
-file, and then builds
-targets relatively to the current subdirectory:
-
-.ES
-cd src/subdir
-scons -u .
-.EE
-
-.B scons
-supports building multiple targets in parallel via a
-.B -j
-option that takes, as its argument, the number
-of simultaneous tasks that may be spawned:
-
-.ES
-scons -j 4
-.EE
-
-builds four targets in parallel, for example.
-
-.B scons
-can maintain a cache of target (derived) files that can
-be shared between multiple builds. When caching is enabled in a
-SConscript file, any target files built by
-.B scons
-will be copied
-to the cache. If an up-to-date target file is found in the cache, it
-will be retrieved from the cache instead of being rebuilt locally.
-Caching behavior may be disabled and controlled in other ways by the
-.BR --cache-force ,
-.BR --cache-disable ,
-and
-.B --cache-show
-command-line options. The
-.B --random
-option is useful to prevent multiple builds
-from trying to update the cache simultaneously.
-
-Values of variables to be passed to the SConscript file(s)
-may be specified on the command line:
-
-.ES
-scons debug=1 .
-.EE
-
-These variables are available in SConscript files
-through the ARGUMENTS dictionary,
-and can be used in the SConscript file(s) to modify
-the build in any way:
-
-.ES
-if ARGUMENTS.get('debug', 0):
- env = Environment(CCFLAGS = '-g')
-else:
- env = Environment()
-.EE
-
-The command-line variable arguments are also available
-in the ARGLIST list,
-indexed by their order on the command line.
-This allows you to process them in order rather than by name,
-if necessary.
-ARGLIST[0] returns a tuple
-containing (argname, argvalue).
-A Python exception is thrown if you
-try to access a list member that
-does not exist.
-
-.B scons
-requires Python version 2.4 or later.
-There should be no other dependencies or requirements to run
-.B scons.
-
-.\" The following paragraph reflects the default tool search orders
-.\" currently in SCons/Tool/__init__.py. If any of those search orders
-.\" change, this documentation should change, too.
-By default,
-.B scons
-knows how to search for available programming tools
-on various systems.
-On Windows systems,
-.B scons
-searches in order for the
-Microsoft Visual C++ tools,
-the MinGW tool chain,
-the Intel compiler tools,
-and the PharLap ETS compiler.
-On OS/2 systems,
-.B scons
-searches in order for the
-OS/2 compiler,
-the GCC tool chain,
-and the Microsoft Visual C++ tools,
-On SGI IRIX, IBM AIX, Hewlett Packard HP-UX, and Sun Solaris systems,
-.B scons
-searches for the native compiler tools
-(MIPSpro, Visual Age, aCC, and Forte tools respectively)
-and the GCC tool chain.
-On all other platforms,
-including POSIX (Linux and UNIX) platforms,
-.B scons
-searches in order
-for the GCC tool chain,
-the Microsoft Visual C++ tools,
-and the Intel compiler tools.
-You may, of course, override these default values
-by appropriate configuration of
-Environment construction variables.
-
-.SH OPTIONS
-In general,
-.B scons
-supports the same command-line options as GNU
-.BR make ,
-and many of those supported by
-.BR cons .
-
-.TP
--b
-Ignored for compatibility with non-GNU versions of
-.BR make.
-
-.TP
--c, --clean, --remove
-Clean up by removing all target files for which a construction
-command is specified.
-Also remove any files or directories associated to the construction command
-using the
-.BR Clean ()
-function.
-Will not remove any targets specified by the
-.BR NoClean ()
-function.
-
-.TP
-.RI --cache-debug= file
-Print debug information about the
-.BR CacheDir ()
-derived-file caching
-to the specified
-.IR file .
-If
-.I file
-is
-.B \-
-(a hyphen),
-the debug information are printed to the standard output.
-The printed messages describe what signature file names are
-being looked for in, retrieved from, or written to the
-.BR CacheDir ()
-directory tree.
-
-.TP
---cache-disable, --no-cache
-Disable the derived-file caching specified by
-.BR CacheDir ().
-.B scons
-will neither retrieve files from the cache
-nor copy files to the cache.
-
-.TP
---cache-force, --cache-populate
-When using
-.BR CacheDir (),
-populate a cache by copying any already-existing, up-to-date
-derived files to the cache,
-in addition to files built by this invocation.
-This is useful to populate a new cache with
-all the current derived files,
-or to add to the cache any derived files
-recently built with caching disabled via the
-.B --cache-disable
-option.
-
-.TP
---cache-show
-When using
-.BR CacheDir ()
-and retrieving a derived file from the cache,
-show the command
-that would have been executed to build the file,
-instead of the usual report,
-"Retrieved `file' from cache."
-This will produce consistent output for build logs,
-regardless of whether a target
-file was rebuilt or retrieved from the cache.
-
-.TP
-.RI --config= mode
-This specifies how the
-.B Configure
-call should use or generate the
-results of configuration tests.
-The option should be specified from
-among the following choices:
-
-.TP
---config=auto
-scons will use its normal dependency mechanisms
-to decide if a test must be rebuilt or not.
-This saves time by not running the same configuration tests
-every time you invoke scons,
-but will overlook changes in system header files
-or external commands (such as compilers)
-if you don't specify those dependecies explicitly.
-This is the default behavior.
-
-.TP
---config=force
-If this option is specified,
-all configuration tests will be re-run
-regardless of whether the
-cached results are out of date.
-This can be used to explicitly
-force the configuration tests to be updated
-in response to an otherwise unconfigured change
-in a system header file or compiler.
-
-.TP
---config=cache
-If this option is specified,
-no configuration tests will be rerun
-and all results will be taken from cache.
-Note that scons will still consider it an error
-if --config=cache is specified
-and a necessary test does not
-yet have any results in the cache.
-
-.TP
-.RI "-C" " directory" ", --directory=" directory
-Change to the specified
-.I directory
-before searching for the
-.IR SConstruct ,
-.IR Sconstruct ,
-or
-.I sconstruct
-file, or doing anything
-else. Multiple
-.B -C
-options are interpreted
-relative to the previous one, and the right-most
-.B -C
-option wins. (This option is nearly
-equivalent to
-.BR "-f directory/SConstruct" ,
-except that it will search for
-.IR SConstruct ,
-.IR Sconstruct ,
-or
-.I sconstruct
-in the specified directory.)
-
-.\" .TP
-.\" -d
-.\" Display dependencies while building target files. Useful for
-.\" figuring out why a specific file is being rebuilt, as well as
-.\" general debugging of the build process.
-
-.TP
--D
-Works exactly the same way as the
-.B -u
-option except for the way default targets are handled.
-When this option is used and no targets are specified on the command line,
-all default targets are built, whether or not they are below the current
-directory.
-
-.TP
-.RI --debug= type
-Debug the build process.
-.I type
-specifies what type of debugging:
-
-.TP
---debug=count
-Print how many objects are created
-of the various classes used internally by SCons
-before and after reading the SConscript files
-and before and after building targets.
-This is not supported when SCons is executed with the Python
-.B -O
-(optimized) option
-or when the SCons modules
-have been compiled with optimization
-(that is, when executing from
-.B *.pyo
-files).
-
-.TP
---debug=duplicate
-Print a line for each unlink/relink (or copy) of a variant file from
-its source file. Includes debugging info for unlinking stale variant
-files, as well as unlinking old targets before building them.
-
-.TP
---debug=dtree
-A synonym for the newer
-.B --tree=derived
-option.
-This will be deprecated in some future release
-and ultimately removed.
-
-.TP
---debug=explain
-Print an explanation of precisely why
-.B scons
-is deciding to (re-)build any targets.
-(Note: this does not print anything
-for targets that are
-.I not
-rebuilt.)
-
-.TP
---debug=findlibs
-Instruct the scanner that searches for libraries
-to print a message about each potential library
-name it is searching for,
-and about the actual libraries it finds.
-
-.TP
---debug=includes
-Print the include tree after each top-level target is built.
-This is generally used to find out what files are included by the sources
-of a given derived file:
-
-.ES
-$ scons --debug=includes foo.o
-.EE
-
-.TP
---debug=memoizer
-Prints a summary of hits and misses using the Memoizer,
-an internal subsystem that counts
-how often SCons uses cached values in memory
-instead of recomputing them each time they're needed.
-
-.TP
---debug=memory
-Prints how much memory SCons uses
-before and after reading the SConscript files
-and before and after building targets.
-
-.TP
---debug=nomemoizer
-A deprecated option preserved for backwards compatibility.
-
-.TP
---debug=objects
-Prints a list of the various objects
-of the various classes used internally by SCons.
-
-.TP
---debug=pdb
-Re-run SCons under the control of the
-.RI pdb
-Python debugger.
-
-.TP
---debug=prepare
-Print a line each time any target (internal or external)
-is prepared for building.
-.B scons
-prints this for each target it considers, even if that
-target is up to date (see also --debug=explain).
-This can help debug problems with targets that aren't being
-built; it shows whether
-.B scons
-is at least considering them or not.
-
-.TP
---debug=presub
-Print the raw command line used to build each target
-before the construction environment variables are substituted.
-Also shows which targets are being built by this command.
-Output looks something like this:
-.ES
-$ scons --debug=presub
-Building myprog.o with action(s):
- $SHCC $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
-\&...
-.EE
-
-.TP
---debug=stacktrace
-Prints an internal Python stack trace
-when encountering an otherwise unexplained error.
-
-.TP
---debug=stree
-A synonym for the newer
-.B --tree=all,status
-option.
-This will be deprecated in some future release
-and ultimately removed.
-
-.TP
---debug=time
-Prints various time profiling information:
-the time spent executing each individual build command;
-the total build time (time SCons ran from beginning to end);
-the total time spent reading and executing SConscript files;
-the total time spent SCons itself spend running
-(that is, not counting reading and executing SConscript files);
-and both the total time spent executing all build commands
-and the elapsed wall-clock time spent executing those build commands.
-(When
-.B scons
-is executed without the
-.B -j
-option,
-the elapsed wall-clock time will typically
-be slightly longer than the total time spent
-executing all the build commands,
-due to the SCons processing that takes place
-in between executing each command.
-When
-.B scons
-is executed
-.I with
-the
-.B -j
-option,
-and your build configuration allows good parallelization,
-the elapsed wall-clock time should
-be significantly smaller than the
-total time spent executing all the build commands,
-since multiple build commands and
-intervening SCons processing
-should take place in parallel.)
-
-.TP
---debug=tree
-A synonym for the newer
-.B --tree=all
-option.
-This will be deprecated in some future release
-and ultimately removed.
-
-.TP
-.RI --diskcheck= types
-Enable specific checks for
-whether or not there is a file on disk
-where the SCons configuration expects a directory
-(or vice versa),
-and whether or not RCS or SCCS sources exist
-when searching for source and include files.
-The
-.I types
-argument can be set to:
-.BR all ,
-to enable all checks explicitly
-(the default behavior);
-.BR none ,
-to disable all such checks;
-.BR match ,
-to check that files and directories on disk
-match SCons' expected configuration;
-.BR rcs ,
-to check for the existence of an RCS source
-for any missing source or include files;
-.BR sccs ,
-to check for the existence of an SCCS source
-for any missing source or include files.
-Multiple checks can be specified separated by commas;
-for example,
-.B --diskcheck=sccs,rcs
-would still check for SCCS and RCS sources,
-but disable the check for on-disk matches of files and directories.
-Disabling some or all of these checks
-can provide a performance boost for large configurations,
-or when the configuration will check for files and/or directories
-across networked or shared file systems,
-at the slight increased risk of an incorrect build
-or of not handling errors gracefully
-(if include files really should be
-found in SCCS or RCS, for example,
-or if a file really does exist
-where the SCons configuration expects a directory).
-
-.TP
-.RI --duplicate= ORDER
-There are three ways to duplicate files in a build tree: hard links,
-soft (symbolic) links and copies. The default behaviour of SCons is to
-prefer hard links to soft links to copies. You can specify different
-behaviours with this option.
-.IR ORDER
-must be one of
-.IR hard-soft-copy
-(the default),
-.IR soft-hard-copy ,
-.IR hard-copy ,
-.IR soft-copy
-or
-.IR copy .
-SCons will attempt to duplicate files using
-the mechanisms in the specified order.
-
-.\" .TP
-.\" -e, --environment-overrides
-.\" Variables from the execution environment override construction
-.\" variables from the SConscript files.
-
-.TP
-.RI -f " file" ", --file=" file ", --makefile=" file ", --sconstruct=" file
-Use
-.I file
-as the initial SConscript file.
-Multiple
-.B -f
-options may be specified,
-in which case
-.B scons
-will read all of the specified files.
-
-.TP
--h, --help
-Print a local help message for this build, if one is defined in
-the SConscript file(s), plus a line that describes the
-.B -H
-option for command-line option help. If no local help message
-is defined, prints the standard help message about command-line
-options. Exits after displaying the appropriate message.
-
-.TP
--H, --help-options
-Print the standard help message about command-line options and
-exit.
-
-.TP
--i, --ignore-errors
-Ignore all errors from commands executed to rebuild files.
-
-.TP
-.RI -I " directory" ", --include-dir=" directory
-Specifies a
-.I directory
-to search for
-imported Python modules. If several
-.B -I
-options
-are used, the directories are searched in the order specified.
-
-.TP
---implicit-cache
-Cache implicit dependencies.
-This causes
-.B scons
-to use the implicit (scanned) dependencies
-from the last time it was run
-instead of scanning the files for implicit dependencies.
-This can significantly speed up SCons,
-but with the following limitations:
-.IP
-.B scons
-will not detect changes to implicit dependency search paths
-(e.g.
-.BR CPPPATH ", " LIBPATH )
-that would ordinarily
-cause different versions of same-named files to be used.
-.IP
-.B scons
-will miss changes in the implicit dependencies
-in cases where a new implicit
-dependency is added earlier in the implicit dependency search path
-(e.g.
-.BR CPPPATH ", " LIBPATH )
-than a current implicit dependency with the same name.
-
-.TP
---implicit-deps-changed
-Forces SCons to ignore the cached implicit dependencies. This causes the
-implicit dependencies to be rescanned and recached. This implies
-.BR --implicit-cache .
-
-.TP
---implicit-deps-unchanged
-Force SCons to ignore changes in the implicit dependencies.
-This causes cached implicit dependencies to always be used.
-This implies
-.BR --implicit-cache .
-
-.TP
---interactive
-Starts SCons in interactive mode.
-The SConscript files are read once and a
-.B "scons>>>"
-prompt is printed.
-Targets may now be rebuilt by typing commands at interactive prompt
-without having to re-read the SConscript files
-and re-initialize the dependency graph from scratch.
-
-SCons interactive mode supports the following commands:
-
-.RS 10
-.TP 6
-.BI build "[OPTIONS] [TARGETS] ..."
-Builds the specified
-.I TARGETS
-(and their dependencies)
-with the specified
-SCons command-line
-.IR OPTIONS .
-.B b
-and
-.B scons
-are synonyms.
-
-The following SCons command-line options affect the
-.B build
-command:
-
-.ES
---cache-debug=FILE
---cache-disable, --no-cache
---cache-force, --cache-populate
---cache-show
---debug=TYPE
--i, --ignore-errors
--j N, --jobs=N
--k, --keep-going
--n, --no-exec, --just-print, --dry-run, --recon
--Q
--s, --silent, --quiet
---taskmastertrace=FILE
---tree=OPTIONS
-.EE
-
-.IP "" 6
-Any other SCons command-line options that are specified
-do not cause errors
-but have no effect on the
-.B build
-command
-(mainly because they affect how the SConscript files are read,
-which only happens once at the beginning of interactive mode).
-
-.TP 6
-.BI clean "[OPTIONS] [TARGETS] ..."
-Cleans the specified
-.I TARGETS
-(and their dependencies)
-with the specified options.
-.B c
-is a synonym.
-This command is itself a synonym for
-.B "build --clean"
-
-.TP 6
-.BI exit
-Exits SCons interactive mode.
-You can also exit by terminating input
-(CTRL+D on UNIX or Linux systems,
-CTRL+Z on Windows systems).
-
-.TP 6
-.BI help "[COMMAND]"
-Provides a help message about
-the commands available in SCons interactive mode.
-If
-.I COMMAND
-is specified,
-.B h
-and
-.B ?
-are synonyms.
-
-.TP 6
-.BI shell "[COMMANDLINE]"
-Executes the specified
-.I COMMANDLINE
-in a subshell.
-If no
-.I COMMANDLINE
-is specified,
-executes the interactive command interpreter
-specified in the
-.B SHELL
-environment variable
-(on UNIX and Linux systems)
-or the
-.B COMSPEC
-environment variable
-(on Windows systems).
-.B sh
-and
-.B !
-are synonyms.
-
-.TP 6
-.B version
-Prints SCons version information.
-.RE
-
-.IP
-An empty line repeats the last typed command.
-Command-line editing can be used if the
-.B readline
-module is available.
-
-.ES
-$ scons --interactive
-scons: Reading SConscript files ...
-scons: done reading SConscript files.
-scons>>> build -n prog
-scons>>> exit
-.EE
-
-.TP
-.RI -j " N" ", --jobs=" N
-Specifies the number of jobs (commands) to run simultaneously.
-If there is more than one
-.B -j
-option, the last one is effective.
-.\" ??? If the
-.\" .B -j
-.\" option
-.\" is specified without an argument,
-.\" .B scons
-.\" will not limit the number of
-.\" simultaneous jobs.
-
-.TP
--k, --keep-going
-Continue as much as possible after an error. The target that
-failed and those that depend on it will not be remade, but other
-targets specified on the command line will still be processed.
-
-.\" .TP
-.\" .RI -l " N" ", --load-average=" N ", --max-load=" N
-.\" No new jobs (commands) will be started if
-.\" there are other jobs running and the system load
-.\" average is at least
-.\" .I N
-.\" (a floating-point number).
-
-.\"
-.\" .TP
-.\" --list-derived
-.\" List derived files (targets, dependencies) that would be built,
-.\" but do not build them.
-.\" [XXX This can probably go away with the right
-.\" combination of other options. Revisit this issue.]
-.\"
-.\" .TP
-.\" --list-actions
-.\" List derived files that would be built, with the actions
-.\" (commands) that build them. Does not build the files.
-.\" [XXX This can probably go away with the right
-.\" combination of other options. Revisit this issue.]
-.\"
-.\" .TP
-.\" --list-where
-.\" List derived files that would be built, plus where the file is
-.\" defined (file name and line number). Does not build the files.
-.\" [XXX This can probably go away with the right
-.\" combination of other options. Revisit this issue.]
-
-.TP
--m
-Ignored for compatibility with non-GNU versions of
-.BR make .
-
-.TP
-.RI --max-drift= SECONDS
-Set the maximum expected drift in the modification time of files to
-.IR SECONDS .
-This value determines how long a file must be unmodified
-before its cached content signature
-will be used instead of
-calculating a new content signature (MD5 checksum)
-of the file's contents.
-The default value is 2 days, which means a file must have a
-modification time of at least two days ago in order to have its
-cached content signature used.
-A negative value means to never cache the content
-signature and to ignore the cached value if there already is one. A value
-of 0 means to always use the cached signature,
-no matter how old the file is.
-
-.TP
-.RI --md5-chunksize= KILOBYTES
-Set the block size used to compute MD5 signatures to
-.IR KILOBYTES .
-This value determines the size of the chunks which are read in at once when
-computing MD5 signatures. Files below that size are fully stored in memory
-before performing the signature computation while bigger files are read in
-block-by-block. A huge block-size leads to high memory consumption while a very
-small block-size slows down the build considerably.
-
-The default value is to use a chunk size of 64 kilobytes, which should
-be appropriate for most uses.
-
-.TP
--n, --just-print, --dry-run, --recon
-No execute. Print the commands that would be executed to build
-any out-of-date target files, but do not execute the commands.
-
-.TP
-.RI --no-site-dir
-Prevents the automatic addition of the standard
-.I site_scons
-dirs to
-.IR sys.path .
-Also prevents loading the
-.I site_scons/site_init.py
-modules if they exist, and prevents adding their
-.I site_scons/site_tools
-dirs to the toolpath.
-
-.\" .TP
-.\" .RI -o " file" ", --old-file=" file ", --assume-old=" file
-.\" Do not rebuild
-.\" .IR file ,
-.\" and do
-.\" not rebuild anything due to changes in the contents of
-.\" .IR file .
-.\" .TP
-.\" .RI --override " file"
-.\" Read values to override specific build environment variables
-.\" from the specified
-.\" .IR file .
-.\" .TP
-.\" -p
-.\" Print the data base (construction environments,
-.\" Builder and Scanner objects) that are defined
-.\" after reading the SConscript files.
-.\" After printing, a normal build is performed
-.\" as usual, as specified by other command-line options.
-.\" This also prints version information
-.\" printed by the
-.\" .B -v
-.\" option.
-.\"
-.\" To print the database without performing a build do:
-.\"
-.\" .ES
-.\" scons -p -q
-.\" .EE
-
-.TP
-.RI --profile= file
-Run SCons under the Python profiler
-and save the results in the specified
-.IR file .
-The results may be analyzed using the Python
-pstats module.
-
-.TP
--q, --question
-Do not run any commands, or print anything. Just return an exit
-status that is zero if the specified targets are already up to
-date, non-zero otherwise.
-.TP
--Q
-Quiets SCons status messages about
-reading SConscript files,
-building targets
-and entering directories.
-Commands that are executed
-to rebuild target files are still printed.
-
-.\" .TP
-.\" -r, -R, --no-builtin-rules, --no-builtin-variables
-.\" Clear the default construction variables. Construction
-.\" environments that are created will be completely empty.
-
-.TP
---random
-Build dependencies in a random order. This is useful when
-building multiple trees simultaneously with caching enabled,
-to prevent multiple builds from simultaneously trying to build
-or retrieve the same target files.
-
-.TP
--s, --silent, --quiet
-Silent. Do not print commands that are executed to rebuild
-target files.
-Also suppresses SCons status messages.
-
-.TP
--S, --no-keep-going, --stop
-Ignored for compatibility with GNU
-.BR make .
-
-.TP
-.RI --site-dir= dir
-Uses the named dir as the site dir rather than the default
-.I site_scons
-dirs. This dir will get prepended to
-.IR sys.path ,
-the module
-.IR dir /site_init.py
-will get loaded if it exists, and
-.IR dir /site_tools
-will get added to the default toolpath.
-
-The default set of
-.I site_scons
-dirs used when
-.I --site-dir
-is not specified depends on the system platform, as follows. Note
-that the directories are examined in the order given, from most
-generic to most specific, so the last-executed site_init.py file is
-the most specific one (which gives it the chance to override
-everything else), and the dirs are prepended to the paths, again so
-the last dir examined comes first in the resulting path.
-
-.IP "Windows:"
-.nf
- %ALLUSERSPROFILE/Application Data/scons/site_scons
- %USERPROFILE%/Local Settings/Application Data/scons/site_scons
- %APPDATA%/scons/site_scons
- %HOME%/.scons/site_scons
- ./site_scons
-.fi
-.IP "Mac OS X:"
-.nf
- /Library/Application Support/SCons/site_scons
- /opt/local/share/scons/site_scons (for MacPorts)
- /sw/share/scons/site_scons (for Fink)
- $HOME/Library/Application Support/SCons/site_scons
- $HOME/.scons/site_scons
- ./site_scons
-.fi
-.IP "Solaris:"
-.nf
- /opt/sfw/scons/site_scons
- /usr/share/scons/site_scons
- $HOME/.scons/site_scons
- ./site_scons
-.fi
-.IP "Linux, HPUX, and other Posix-like systems:"
-.nf
- /usr/share/scons/site_scons
- $HOME/.scons/site_scons
- ./site_scons
-.fi
-
-.TP
-.RI --stack-size= KILOBYTES
-Set the size stack used to run threads to
-.IR KILOBYTES .
-This value determines the stack size of the threads used to run jobs.
-These are the threads that execute the actions of the builders for the
-nodes that are out-of-date.
-Note that this option has no effect unless the
-.B num_jobs
-option, which corresponds to -j and --jobs, is larger than one. Using
-a stack size that is too small may cause stack overflow errors. This
-usually shows up as segmentation faults that cause scons to abort
-before building anything. Using a stack size that is too large will
-cause scons to use more memory than required and may slow down the entire
-build process.
-
-The default value is to use a stack size of 256 kilobytes, which should
-be appropriate for most uses. You should not need to increase this value
-unless you encounter stack overflow errors.
-
-.TP
--t, --touch
-Ignored for compatibility with GNU
-.BR make .
-(Touching a file to make it
-appear up-to-date is unnecessary when using
-.BR scons .)
-
-.TP
-.RI --taskmastertrace= file
-Prints trace information to the specified
-.I file
-about how the internal Taskmaster object
-evaluates and controls the order in which Nodes are built.
-A file name of
-.B -
-may be used to specify the standard output.
-
-.TP
-.RI -tree= options
-Prints a tree of the dependencies
-after each top-level target is built.
-This prints out some or all of the tree,
-in various formats,
-depending on the
-.I options
-specified:
-
-.TP
---tree=all
-Print the entire dependency tree
-after each top-level target is built.
-This prints out the complete dependency tree,
-including implicit dependencies and ignored dependencies.
-
-.TP
---tree=derived
-Restricts the tree output to only derived (target) files,
-not source files.
-
-.TP
---tree=status
-Prints status information for each displayed node.
-
-.TP
---tree=prune
-Prunes the tree to avoid repeating dependency information
-for nodes that have already been displayed.
-Any node that has already been displayed
-will have its name printed in
-.BR "[square brackets]" ,
-as an indication that the dependencies
-for that node can be found by searching
-for the relevant output higher up in the tree.
-
-.IP
-Multiple options may be specified,
-separated by commas:
-
-.ES
-# Prints only derived files, with status information:
-scons --tree=derived,status
-
-# Prints all dependencies of target, with status information
-# and pruning dependencies of already-visited Nodes:
-scons --tree=all,prune,status target
-.EE
-
-.TP
--u, --up, --search-up
-Walks up the directory structure until an
-.I SConstruct ,
-.I Sconstruct
-or
-.I sconstruct
-file is found, and uses that
-as the top of the directory tree.
-If no targets are specified on the command line,
-only targets at or below the
-current directory will be built.
-
-.TP
--U
-Works exactly the same way as the
-.B -u
-option except for the way default targets are handled.
-When this option is used and no targets are specified on the command line,
-all default targets that are defined in the SConscript(s) in the current
-directory are built, regardless of what directory the resultant targets end
-up in.
-
-.TP
--v, --version
-Print the
-.B scons
-version, copyright information,
-list of authors, and any other relevant information.
-Then exit.
-
-.TP
--w, --print-directory
-Print a message containing the working directory before and
-after other processing.
-
-.TP
---no-print-directory
-Turn off -w, even if it was turned on implicitly.
-
-.TP
-.RI --warn= type ", --warn=no-" type
-Enable or disable warnings.
-.I type
-specifies the type of warnings to be enabled or disabled:
-
-.TP
---warn=all, --warn=no-all
-Enables or disables all warnings.
-
-.TP
---warn=cache-write-error, --warn=no-cache-write-error
-Enables or disables warnings about errors trying to
-write a copy of a built file to a specified
-.BR CacheDir ().
-These warnings are disabled by default.
-
-.TP
---warn=corrupt-sconsign, --warn=no-corrupt-sconsign
-Enables or disables warnings about unfamiliar signature data in
-.B .sconsign
-files.
-These warnings are enabled by default.
-
-.TP
---warn=dependency, --warn=no-dependency
-Enables or disables warnings about dependencies.
-These warnings are disabled by default.
-
-.TP
---warn=deprecated, --warn=no-deprecated
-Enables or disables all warnings about use of
-currently deprecated features.
-These warnings are enabled by default.
-Note that the
-.B --warn=no-deprecated
-option does not disable warnings about absolutely all deprecated features.
-Warnings for some deprecated features that have already been through
-several releases with deprecation warnings
-may be mandatory for a release or two
-before they are officially no longer supported by SCons.
-Warnings for some specific deprecated features
-may be enabled or disabled individually;
-see below.
-
-.RS
-.TP
---warn=deprecated-copy, --warn=no-deprecated-copy
-Enables or disables warnings about use of the deprecated
-.B env.Copy()
-method.
-
-.TP
---warn=deprecated-source-signatures, --warn=no-deprecated-source-signatures
-Enables or disables warnings about use of the deprecated
-.B SourceSignatures()
-function or
-.B env.SourceSignatures()
-method.
-
-.TP
---warn=deprecated-target-signatures, --warn=no-deprecated-target-signatures
-Enables or disables warnings about use of the deprecated
-.B TargetSignatures()
-function or
-.B env.TargetSignatures()
-method.
-.RE
-
-.TP
---warn=duplicate-environment, --warn=no-duplicate-environment
-Enables or disables warnings about attempts to specify a build
-of a target with two different construction environments
-that use the same action.
-These warnings are enabled by default.
-
-.TP
---warn=fortran-cxx-mix, --warn=no-fortran-cxx-mix
-Enables or disables the specific warning about linking
-Fortran and C++ object files in a single executable,
-which can yield unpredictable behavior with some compilers.
-
-.TP
---warn=future-deprecated, --warn=no-future-deprecated
-Enables or disables warnings about features
-that will be deprecated in the future.
-These warnings are disabled by default.
-Enabling this warning is especially
-recommended for projects that redistribute
-SCons configurations for other users to build,
-so that the project can be warned as soon as possible
-about to-be-deprecated features
-that may require changes to the configuration.
-
-.TP
---warn=link, --warn=no-link
-Enables or disables warnings about link steps.
-
-.TP
---warn=misleading-keywords, --warn=no-misleading-keywords
-Enables or disables warnings about use of the misspelled keywords
-.B targets
-and
-.B sources
-when calling Builders.
-(Note the last
-.B s
-characters, the correct spellings are
-.B target
-and
-.B source.)
-These warnings are enabled by default.
-
-.TP
---warn=missing-sconscript, --warn=no-missing-sconscript
-Enables or disables warnings about missing SConscript files.
-These warnings are enabled by default.
-
-.TP
---warn=no-md5-module, --warn=no-no-md5-module
-Enables or disables warnings about the version of Python
-not having an MD5 checksum module available.
-These warnings are enabled by default.
-
-.TP
---warn=no-metaclass-support, --warn=no-no-metaclass-support
-Enables or disables warnings about the version of Python
-not supporting metaclasses when the
-.B --debug=memoizer
-option is used.
-These warnings are enabled by default.
-
-.TP
---warn=no-object-count, --warn=no-no-object-count
-Enables or disables warnings about the
-.B --debug=object
-feature not working when
-.B scons
-is run with the python
-.B \-O
-option or from optimized Python (.pyo) modules.
-
-.TP
---warn=no-parallel-support, --warn=no-no-parallel-support
-Enables or disables warnings about the version of Python
-not being able to support parallel builds when the
-.B -j
-option is used.
-These warnings are enabled by default.
-
-.TP
---warn=python-version, --warn=no-python-version
-Enables or disables the warning about running
-SCons with a deprecated version of Python.
-These warnings are enabled by default.
-
-.TP
---warn=reserved-variable, --warn=no-reserved-variable
-Enables or disables warnings about attempts to set the
-reserved construction variable names
-.BR CHANGED_SOURCES ,
-.BR CHANGED_TARGETS ,
-.BR TARGET ,
-.BR TARGETS ,
-.BR SOURCE ,
-.BR SOURCES ,
-.BR UNCHANGED_SOURCES
-or
-.BR UNCHANGED_TARGETS .
-These warnings are disabled by default.
-
-.TP
---warn=stack-size, --warn=no-stack-size
-Enables or disables warnings about requests to set the stack size
-that could not be honored.
-These warnings are enabled by default.
-
-.\" .TP
-.\" .RI --write-filenames= file
-.\" Write all filenames considered into
-.\" .IR file .
-.\"
-.\" .TP
-.\" .RI -W " file" ", --what-if=" file ", --new-file=" file ", --assume-new=" file
-.\" Pretend that the target
-.\" .I file
-.\" has been
-.\" modified. When used with the
-.\" .B -n
-.\" option, this
-.\" show you what would be rebuilt if you were to modify that file.
-.\" Without
-.\" .B -n
-.\" ... what? XXX
-.\"
-.\" .TP
-.\" --warn-undefined-variables
-.\" Warn when an undefined variable is referenced.
-
-.TP
-.RI -Y " repository" ", --repository=" repository ", --srcdir=" repository
-Search the specified repository for any input and target
-files not found in the local directory hierarchy. Multiple
-.B -Y
-options may be specified, in which case the
-repositories are searched in the order specified.
-
-.SH CONFIGURATION FILE REFERENCE
-.\" .SS Python Basics
-.\" XXX Adding this in the future would be a help.
-.SS Construction Environments
-A construction environment is the basic means by which the SConscript
-files communicate build information to
-.BR scons .
-A new construction environment is created using the
-.B Environment
-function:
-
-.ES
-env = Environment()
-.EE
-
-Variables, called
-.I construction
-.IR variables ,
-may be set in a construction environment
-either by specifying them as keywords when the object is created
-or by assigning them a value after the object is created:
-
-.ES
-env = Environment(FOO = 'foo')
-env['BAR'] = 'bar'
-.EE
-
-As a convenience,
-construction variables may also be set or modified by the
-.I parse_flags
-keyword argument, which applies the
-.B ParseFlags
-method (described below) to the argument value
-after all other processing is completed.
-This is useful either if the exact content of the flags is unknown
-(for example, read from a control file)
-or if the flags are distributed to a number of construction variables.
-
-.ES
-env = Environment(parse_flags = '-Iinclude -DEBUG -lm')
-.EE
-
-This example adds 'include' to
-.BR CPPPATH ,
-\&'EBUG' to
-.BR CPPDEFINES ,
-and 'm' to
-.BR LIBS .
-
-By default, a new construction environment is
-initialized with a set of builder methods
-and construction variables that are appropriate
-for the current platform.
-An optional platform keyword argument may be
-used to specify that an environment should
-be initialized for a different platform:
-
-.ES
-env = Environment(platform = 'cygwin')
-env = Environment(platform = 'os2')
-env = Environment(platform = 'posix')
-env = Environment(platform = 'win32')
-.EE
-
-Specifying a platform initializes the appropriate
-construction variables in the environment
-to use and generate file names with prefixes
-and suffixes appropriate for the platform.
-
-Note that the
-.B win32
-platform adds the
-.B SystemDrive
-and
-.B SystemRoot
-variables from the user's external environment
-to the construction environment's
-.B ENV
-dictionary.
-This is so that any executed commands
-that use sockets to connect with other systems
-(such as fetching source files from
-external CVS repository specifications like
-.BR :pserver:anonymous@cvs.sourceforge.net:/cvsroot/scons )
-will work on Windows systems.
-
-The platform argument may be function or callable object,
-in which case the Environment() method
-will call the specified argument to update
-the new construction environment:
-
-.ES
-def my_platform(env):
- env['VAR'] = 'xyzzy'
-
-env = Environment(platform = my_platform)
-.EE
-
-Additionally, a specific set of tools
-with which to initialize the environment
-may be specified as an optional keyword argument:
-
-.ES
-env = Environment(tools = ['msvc', 'lex'])
-.EE
-
-Non-built-in tools may be specified using the toolpath argument:
-
-.ES
-env = Environment(tools = ['default', 'foo'], toolpath = ['tools'])
-.EE
-
-This looks for a tool specification in tools/foo.py (as well as
-using the ordinary default tools for the platform). foo.py should
-have two functions: generate(env, **kw) and exists(env).
-The
-.B generate()
-function
-modifies the passed-in environment
-to set up variables so that the tool
-can be executed;
-it may use any keyword arguments
-that the user supplies (see below)
-to vary its initialization.
-The
-.B exists()
-function should return a true
-value if the tool is available.
-Tools in the toolpath are used before
-any of the built-in ones. For example, adding gcc.py to the toolpath
-would override the built-in gcc tool.
-Also note that the toolpath is
-stored in the environment for use
-by later calls to
-.BR Clone ()
-and
-.BR Tool ()
-methods:
-
-.ES
-base = Environment(toolpath=['custom_path'])
-derived = base.Clone(tools=['custom_tool'])
-derived.CustomBuilder()
-.EE
-
-The elements of the tools list may also
-be functions or callable objects,
-in which case the Environment() method
-will call the specified elements
-to update the new construction environment:
-
-.ES
-def my_tool(env):
- env['XYZZY'] = 'xyzzy'
-
-env = Environment(tools = [my_tool])
-.EE
-
-The individual elements of the tools list
-may also themselves be two-element lists of the form
-.RI ( toolname ", " kw_dict ).
-SCons searches for the
-.I toolname
-specification file as described above, and
-passes
-.IR kw_dict ,
-which must be a dictionary, as keyword arguments to the tool's
-.B generate
-function.
-The
-.B generate
-function can use the arguments to modify the tool's behavior
-by setting up the environment in different ways
-or otherwise changing its initialization.
-
-.ES
-# in tools/my_tool.py:
-def generate(env, **kw):
- # Sets MY_TOOL to the value of keyword argument 'arg1' or 1.
- env['MY_TOOL'] = kw.get('arg1', '1')
-def exists(env):
- return 1
-
-# in SConstruct:
-env = Environment(tools = ['default', ('my_tool', {'arg1': 'abc'})],
- toolpath=['tools'])
-.EE
-
-The tool definition (i.e. my_tool()) can use the PLATFORM variable from
-the environment it receives to customize the tool for different platforms.
-
-If no tool list is specified, then SCons will auto-detect the installed
-tools using the PATH variable in the ENV construction variable and the
-platform name when the Environment is constructed. Changing the PATH
-variable after the Environment is constructed will not cause the tools to
-be redetected.
-
-SCons supports the following tool specifications out of the box:
-
-.ES
-386asm
-aixc++
-aixcc
-aixf77
-aixlink
-ar
-as
-bcc32
-c++
-cc
-cvf
-dmd
-dvipdf
-dvips
-f77
-f90
-f95
-fortran
-g++
-g77
-gas
-gcc
-gfortran
-gnulink
-gs
-hpc++
-hpcc
-hplink
-icc
-icl
-ifl
-ifort
-ilink
-ilink32
-intelc
-jar
-javac
-javah
-latex
-lex
-link
-linkloc
-m4
-masm
-midl
-mingw
-mslib
-mslink
-mssdk
-msvc
-msvs
-mwcc
-mwld
-nasm
-pdflatex
-pdftex
-qt
-rmic
-rpcgen
-sgiar
-sgic++
-sgicc
-sgilink
-sunar
-sunc++
-suncc
-sunf77
-sunf90
-sunf95
-sunlink
-swig
-tar
-tex
-textfile
-tlib
-yacc
-zip
-.EE
-
-Additionally, there is a "tool" named
-.B default
-which configures the
-environment with a default set of tools for the current platform.
-
-On posix and cygwin platforms
-the GNU tools (e.g. gcc) are preferred by SCons,
-on Windows the Microsoft tools (e.g. msvc)
-followed by MinGW are preferred by SCons,
-and in OS/2 the IBM tools (e.g. icc) are preferred by SCons.
-
-.SS Builder Methods
-
-Build rules are specified by calling a construction
-environment's builder methods.
-The arguments to the builder methods are
-.B target
-(a list of targets to be built,
-usually file names)
-and
-.B source
-(a list of sources to be built,
-usually file names).
-
-Because long lists of file names
-can lead to a lot of quoting,
-.B scons
-supplies a
-.B Split()
-global function
-and a same-named environment method
-that split a single string
-into a list, separated on
-strings of white-space characters.
-(These are similar to the split() member function of Python strings
-but work even if the input isn't a string.)
-
-Like all Python arguments,
-the target and source arguments to a builder method
-can be specified either with or without
-the "target" and "source" keywords.
-When the keywords are omitted,
-the target is first,
-followed by the source.
-The following are equivalent examples of calling the Program builder method:
-
-.ES
-env.Program('bar', ['bar.c', 'foo.c'])
-env.Program('bar', Split('bar.c foo.c'))
-env.Program('bar', env.Split('bar.c foo.c'))
-env.Program(source = ['bar.c', 'foo.c'], target = 'bar')
-env.Program(target = 'bar', Split('bar.c foo.c'))
-env.Program(target = 'bar', env.Split('bar.c foo.c'))
-env.Program('bar', source = 'bar.c foo.c'.split())
-.EE
-
-Target and source file names
-that are not absolute path names
-(that is, do not begin with
-.B /
-on POSIX systems
-or
-.B \\
-on Windows systems,
-with or without
-an optional drive letter)
-are interpreted relative to the directory containing the
-.B SConscript
-file being read.
-An initial
-.B #
-(hash mark)
-on a path name means that the rest of the file name
-is interpreted relative to
-the directory containing
-the top-level
-.B SConstruct
-file,
-even if the
-.B #
-is followed by a directory separator character
-(slash or backslash).
-
-Examples:
-
-.ES
-# The comments describing the targets that will be built
-# assume these calls are in a SConscript file in the
-# a subdirectory named "subdir".
-
-# Builds the program "subdir/foo" from "subdir/foo.c":
-env.Program('foo', 'foo.c')
-
-# Builds the program "/tmp/bar" from "subdir/bar.c":
-env.Program('/tmp/bar', 'bar.c')
-
-# An initial '#' or '#/' are equivalent; the following
-# calls build the programs "foo" and "bar" (in the
-# top-level SConstruct directory) from "subdir/foo.c" and
-# "subdir/bar.c", respectively:
-env.Program('#foo', 'foo.c')
-env.Program('#/bar', 'bar.c')
-
-# Builds the program "other/foo" (relative to the top-level
-# SConstruct directory) from "subdir/foo.c":
-env.Program('#other/foo', 'foo.c')
-.EE
-
-When the target shares the same base name
-as the source and only the suffix varies,
-and if the builder method has a suffix defined for the target file type,
-then the target argument may be omitted completely,
-and
-.B scons
-will deduce the target file name from
-the source file name.
-The following examples all build the
-executable program
-.B bar
-(on POSIX systems)
-or
-.B bar.exe
-(on Windows systems)
-from the bar.c source file:
-
-.ES
-env.Program(target = 'bar', source = 'bar.c')
-env.Program('bar', source = 'bar.c')
-env.Program(source = 'bar.c')
-env.Program('bar.c')
-.EE
-
-As a convenience, a
-.B srcdir
-keyword argument may be specified
-when calling a Builder.
-When specified,
-all source file strings that are not absolute paths
-will be interpreted relative to the specified
-.BR srcdir .
-The following example will build the
-.B build/prog
-(or
-.B build/prog.exe
-on Windows)
-program from the files
-.B src/f1.c
-and
-.BR src/f2.c :
-
-.ES
-env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src')
-.EE
-
-It is possible to override or add construction variables when calling a
-builder method by passing additional keyword arguments.
-These overridden or added
-variables will only be in effect when building the target, so they will not
-affect other parts of the build. For example, if you want to add additional
-libraries for just one program:
-
-.ES
-env.Program('hello', 'hello.c', LIBS=['gl', 'glut'])
-.EE
-
-or generate a shared library with a non-standard suffix:
-
-.ES
-env.SharedLibrary('word', 'word.cpp',
- SHLIBSUFFIX='.ocx',
- LIBSUFFIXES=['.ocx'])
-.EE
-
-(Note that both the $SHLIBSUFFIX and $LIBSUFFIXES variables must be set
-if you want SCons to search automatically
-for dependencies on the non-standard library names;
-see the descriptions of these variables, below, for more information.)
-
-It is also possible to use the
-.I parse_flags
-keyword argument in an override:
-
-.ES
-env = Program('hello', 'hello.c', parse_flags = '-Iinclude -DEBUG -lm')
-.EE
-
-This example adds 'include' to
-.BR CPPPATH ,
-\&'EBUG' to
-.BR CPPDEFINES ,
-and 'm' to
-.BR LIBS .
-
-Although the builder methods defined by
-.B scons
-are, in fact,
-methods of a construction environment object,
-they may also be called without an explicit environment:
-
-.ES
-Program('hello', 'hello.c')
-SharedLibrary('word', 'word.cpp')
-.EE
-
-In this case,
-the methods are called internally using a default construction
-environment that consists of the tools and values that
-.B scons
-has determined are appropriate for the local system.
-
-Builder methods that can be called without an explicit
-environment may be called from custom Python modules that you
-import into an SConscript file by adding the following
-to the Python module:
-
-.ES
-from SCons.Script import *
-.EE
-
-All builder methods return a list-like object
-containing Nodes that
-represent the target or targets that will be built.
-A
-.I Node
-is an internal SCons object
-which represents
-build targets or sources.
-
-The returned Node-list object
-can be passed to other builder methods as source(s)
-or passed to any SCons function or method
-where a filename would normally be accepted.
-For example, if it were necessary
-to add a specific
-.B -D
-flag when compiling one specific object file:
-
-.ES
-bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
-env.Program(source = ['foo.c', bar_obj_list, 'main.c'])
-.EE
-
-Using a Node in this way
-makes for a more portable build
-by avoiding having to specify
-a platform-specific object suffix
-when calling the Program() builder method.
-
-Note that Builder calls will automatically "flatten"
-the source and target file lists,
-so it's all right to have the bar_obj list
-return by the StaticObject() call
-in the middle of the source file list.
-If you need to manipulate a list of lists returned by Builders
-directly using Python,
-you can either build the list by hand:
-
-.ES
-foo = Object('foo.c')
-bar = Object('bar.c')
-objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o']
-for object in objects:
- print str(object)
-.EE
-
-Or you can use the
-.BR Flatten ()
-function supplied by scons
-to create a list containing just the Nodes,
-which may be more convenient:
-
-.ES
-foo = Object('foo.c')
-bar = Object('bar.c')
-objects = Flatten(['begin.o', foo, 'middle.o', bar, 'end.o'])
-for object in objects:
- print str(object)
-.EE
-
-Note also that because Builder calls return
-a list-like object, not an actual Python list,
-you should
-.I not
-use the Python
-.B +=
-operator to append Builder results to a Python list.
-Because the list and the object are different types,
-Python will not update the original list in place,
-but will instead create a new Node-list object
-containing the concatenation of the list
-elements and the Builder results.
-This will cause problems for any other Python variables
-in your SCons configuration
-that still hold on to a reference to the original list.
-Instead, use the Python
-.B .extend()
-method to make sure the list is updated in-place.
-Example:
-
-.ES
-object_files = []
-
-# Do NOT use += as follows:
-#
-# object_files += Object('bar.c')
-#
-# It will not update the object_files list in place.
-#
-# Instead, use the .extend() method:
-object_files.extend(Object('bar.c'))
-
-.EE
-
-The path name for a Node's file may be used
-by passing the Node to the Python-builtin
-.B str()
-function:
-
-.ES
-bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
-print "The path to bar_obj is:", str(bar_obj_list[0])
-.EE
-
-Note again that because the Builder call returns a list,
-we have to access the first element in the list
-.B (bar_obj_list[0])
-to get at the Node that actually represents
-the object file.
-
-Builder calls support a
-.B chdir
-keyword argument that
-specifies that the Builder's action(s)
-should be executed
-after changing directory.
-If the
-.B chdir
-argument is
-a string or a directory Node,
-scons will change to the specified directory.
-If the
-.B chdir
-is not a string or Node
-and is non-zero,
-then scons will change to the
-target file's directory.
-
-.ES
-# scons will change to the "sub" subdirectory
-# before executing the "cp" command.
-env.Command('sub/dir/foo.out', 'sub/dir/foo.in',
- "cp dir/foo.in dir/foo.out",
- chdir='sub')
-
-# Because chdir is not a string, scons will change to the
-# target's directory ("sub/dir") before executing the
-# "cp" command.
-env.Command('sub/dir/foo.out', 'sub/dir/foo.in',
- "cp foo.in foo.out",
- chdir=1)
-.EE
-
-Note that scons will
-.I not
-automatically modify
-its expansion of
-construction variables like
-.B $TARGET
-and
-.B $SOURCE
-when using the chdir
-keyword argument--that is,
-the expanded file names
-will still be relative to
-the top-level SConstruct directory,
-and consequently incorrect
-relative to the chdir directory.
-If you use the chdir keyword argument,
-you will typically need to supply a different
-command line using
-expansions like
-.B ${TARGET.file}
-and
-.B ${SOURCE.file}
-to use just the filename portion of the
-targets and source.
-
-.B scons
-provides the following builder methods:
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-'\" BEGIN GENERATED BUILDER DESCRIPTIONS
-'\"
-'\" The descriptions below of the various SCons Builders are generated
-'\" from the .xml files that live next to the various Python modules in
-'\" the build enginer library. If you're reading this [gnt]roff file
-'\" with an eye towards patching this man page, you can still submit
-'\" a diff against this text, but it will have to be translated to a
-'\" diff against the underlying .xml file before the patch is actually
-'\" accepted. If you do that yourself, it will make it easier to
-'\" integrate the patch.
-'\"
-'\" BEGIN GENERATED BUILDER DESCRIPTIONS
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.so builders.man
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-'\" END GENERATED BUILDER DESCRIPTIONS
-'\"
-'\" The descriptions above of the various SCons Builders are generated
-'\" from the .xml files that live next to the various Python modules in
-'\" the build enginer library. If you're reading this [gnt]roff file
-'\" with an eye towards patching this man page, you can still submit
-'\" a diff against this text, but it will have to be translated to a
-'\" diff against the underlying .xml file before the patch is actually
-'\" accepted. If you do that yourself, it will make it easier to
-'\" integrate the patch.
-'\"
-'\" END GENERATED BUILDER DESCRIPTIONS
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-.P
-All
-targets of builder methods automatically depend on their sources.
-An explicit dependency can
-be specified using the
-.B Depends
-method of a construction environment (see below).
-
-In addition,
-.B scons
-automatically scans
-source files for various programming languages,
-so the dependencies do not need to be specified explicitly.
-By default, SCons can
-C source files,
-C++ source files,
-Fortran source files with
-.B .F
-(POSIX systems only),
-.B .fpp,
-or
-.B .FPP
-file extensions,
-and assembly language files with
-.B .S
-(POSIX systems only),
-.B .spp,
-or
-.B .SPP
-files extensions
-for C preprocessor dependencies.
-SCons also has default support
-for scanning D source files,
-You can also write your own Scanners
-to add support for additional source file types.
-These can be added to the default
-Scanner object used by the
-.BR Object (),
-.BR StaticObject (),
-and
-.BR SharedObject ()
-Builders by adding them
-to the
-.B SourceFileScanner
-object.
-See the section "Scanner Objects"
-below, for more information about
-defining your own Scanner objects
-and using the
-.B SourceFileScanner
-object.
-
-.SS Methods and Functions to Do Things
-In addition to Builder methods,
-.B scons
-provides a number of other construction environment methods
-and global functions to
-manipulate the build configuration.
-
-Usually, a construction environment method
-and global function with the same name both exist
-so that you don't have to remember whether
-to a specific bit of functionality
-must be called with or without a construction environment.
-In the following list,
-if you call something as a global function
-it looks like:
-.ES
-.RI Function( arguments )
-.EE
-and if you call something through a construction
-environment it looks like:
-.ES
-.RI env.Function( arguments )
-.EE
-If you can call the functionality in both ways,
-then both forms are listed.
-
-Global functions may be called from custom Python modules that you
-import into an SConscript file by adding the following
-to the Python module:
-
-.ES
-from SCons.Script import *
-.EE
-
-Except where otherwise noted,
-the same-named
-construction environment method
-and global function
-provide the exact same functionality.
-The only difference is that,
-where appropriate,
-calling the functionality through a construction environment will
-substitute construction variables into
-any supplied strings.
-For example:
-
-.ES
-env = Environment(FOO = 'foo')
-Default('$FOO')
-env.Default('$FOO')
-.EE
-
-In the above example,
-the first call to the global
-.B Default()
-function will actually add a target named
-.B $FOO
-to the list of default targets,
-while the second call to the
-.B env.Default()
-construction environment method
-will expand the value
-and add a target named
-.B foo
-to the list of default targets.
-For more on construction variable expansion,
-see the next section on
-construction variables.
-
-Construction environment methods
-and global functions supported by
-.B scons
-include:
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-'\" BEGIN GENERATED FUNCTION DESCRIPTIONS
-'\"
-'\" The descriptions below of the various SCons functions are generated
-'\" from the .xml files that live next to the various Python modules in
-'\" the build enginer library. If you're reading this [gnt]roff file
-'\" with an eye towards patching this man page, you can still submit
-'\" a diff against this text, but it will have to be translated to a
-'\" diff against the underlying .xml file before the patch is actually
-'\" accepted. If you do that yourself, it will make it easier to
-'\" integrate the patch.
-'\"
-'\" BEGIN GENERATED FUNCTION DESCRIPTIONS
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.so functions.man
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-'\" END GENERATED FUNCTION DESCRIPTIONS
-'\"
-'\" The descriptions above of the various SCons functions are generated
-'\" from the .xml files that live next to the various Python modules in
-'\" the build enginer library. If you're reading this [gnt]roff file
-'\" with an eye towards patching this man page, you can still submit
-'\" a diff against this text, but it will have to be translated to a
-'\" diff against the underlying .xml file before the patch is actually
-'\" accepted. If you do that yourself, it will make it easier to
-'\" integrate the patch.
-'\"
-'\" END GENERATED FUNCTION DESCRIPTIONS
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-.SS SConscript Variables
-In addition to the global functions and methods,
-.B scons
-supports a number of Python variables
-that can be used in SConscript files
-to affect how you want the build to be performed.
-These variables may be accessed from custom Python modules that you
-import into an SConscript file by adding the following
-to the Python module:
-
-.ES
-from SCons.Script import *
-.EE
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.TP
-ARGLIST
-A list
-.IR keyword = value
-arguments specified on the command line.
-Each element in the list is a tuple
-containing the
-.RI ( keyword , value )
-of the argument.
-The separate
-.I keyword
-and
-.I value
-elements of the tuple
-can be accessed by
-subscripting for element
-.B [0]
-and
-.B [1]
-of the tuple, respectively.
-
-Example:
-
-.ES
-print "first keyword, value =", ARGLIST[0][0], ARGLIST[0][1]
-print "second keyword, value =", ARGLIST[1][0], ARGLIST[1][1]
-third_tuple = ARGLIST[2]
-print "third keyword, value =", third_tuple[0], third_tuple[1]
-for key, value in ARGLIST:
- # process key and value
-.EE
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.TP
-ARGUMENTS
-A dictionary of all the
-.IR keyword = value
-arguments specified on the command line.
-The dictionary is not in order,
-and if a given keyword has
-more than one value assigned to it
-on the command line,
-the last (right-most) value is
-the one in the
-.B ARGUMENTS
-dictionary.
-
-Example:
-
-.ES
-if ARGUMENTS.get('debug', 0):
- env = Environment(CCFLAGS = '-g')
-else:
- env = Environment()
-.EE
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.TP
-BUILD_TARGETS
-A list of the targets which
-.B scons
-will actually try to build,
-regardless of whether they were specified on
-the command line or via the
-.BR Default ()
-function or method.
-The elements of this list may be strings
-.I or
-nodes, so you should run the list through the Python
-.B str
-function to make sure any Node path names
-are converted to strings.
-
-Because this list may be taken from the
-list of targets specified using the
-.BR Default ()
-function or method,
-the contents of the list may change
-on each successive call to
-.BR Default ().
-See the
-.B DEFAULT_TARGETS
-list, below,
-for additional information.
-
-Example:
-
-.ES
-if 'foo' in BUILD_TARGETS:
- print "Don't forget to test the `foo' program!"
-if 'special/program' in BUILD_TARGETS:
- SConscript('special')
-.EE
-.IP
-Note that the
-.B BUILD_TARGETS
-list only contains targets expected listed
-on the command line or via calls to the
-.BR Default ()
-function or method.
-It does
-.I not
-contain all dependent targets that will be built as
-a result of making the sure the explicitly-specified
-targets are up to date.
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.TP
-COMMAND_LINE_TARGETS
-A list of the targets explicitly specified on
-the command line.
-If there are no targets specified on the command line,
-the list is empty.
-This can be used, for example,
-to take specific actions only
-when a certain target or targets
-is explicitly being built.
-
-Example:
-
-.ES
-if 'foo' in COMMAND_LINE_TARGETS:
- print "Don't forget to test the `foo' program!"
-if 'special/program' in COMMAND_LINE_TARGETS:
- SConscript('special')
-.EE
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.TP
-DEFAULT_TARGETS
-A list of the target
-.I nodes
-that have been specified using the
-.BR Default ()
-function or method.
-The elements of the list are nodes,
-so you need to run them through the Python
-.B str
-function to get at the path name for each Node.
-
-Example:
-
-.ES
-print str(DEFAULT_TARGETS[0])
-if 'foo' in map(str, DEFAULT_TARGETS):
- print "Don't forget to test the `foo' program!"
-.EE
-.IP
-The contents of the
-.B DEFAULT_TARGETS
-list change on on each successive call to the
-.BR Default ()
-function:
-
-.ES
-print map(str, DEFAULT_TARGETS) # originally []
-Default('foo')
-print map(str, DEFAULT_TARGETS) # now a node ['foo']
-Default('bar')
-print map(str, DEFAULT_TARGETS) # now a node ['foo', 'bar']
-Default(None)
-print map(str, DEFAULT_TARGETS) # back to []
-.EE
-.IP
-Consequently, be sure to use
-.B DEFAULT_TARGETS
-only after you've made all of your
-.BR Default ()
-calls,
-or else simply be careful of the order
-of these statements in your SConscript files
-so that you don't look for a specific
-default target before it's actually been added to the list.
-
-.SS Construction Variables
-.\" XXX From Gary Ruben, 23 April 2002:
-.\" I think it would be good to have an example with each construction
-.\" variable description in the documentation.
-.\" eg.
-.\" CC The C compiler
-.\" Example: env["CC"] = "c68x"
-.\" Default: env["CC"] = "cc"
-.\"
-.\" CCCOM The command line ...
-.\" Example:
-.\" To generate the compiler line c68x -ps -qq -mr -o $TARGET $SOURCES
-.\" env["CC"] = "c68x"
-.\" env["CFLAGS"] = "-ps -qq -mr"
-.\" env["CCCOM"] = "$CC $CFLAGS -o $TARGET $SOURCES
-.\" Default:
-.\" (I dunno what this is ;-)
-A construction environment has an associated dictionary of
-.I construction variables
-that are used by built-in or user-supplied build rules.
-Construction variables must follow the same rules for
-Python identifiers:
-the initial character must be an underscore or letter,
-followed by any number of underscores, letters, or digits.
-
-A number of useful construction variables are automatically defined by
-scons for each supported platform, and additional construction variables
-can be defined by the user. The following is a list of the automatically
-defined construction variables:
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-'\" BEGIN GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS
-'\"
-'\" The descriptions below of the various SCons construction variables
-'\" are generated from the .xml files that live next to the various
-'\" Python modules in the build enginer library. If you're reading
-'\" this [gnt]roff file with an eye towards patching this man page,
-'\" you can still submit a diff against this text, but it will have to
-'\" be translated to a diff against the underlying .xml file before the
-'\" patch is actually accepted. If you do that yourself, it will make
-'\" it easier to integrate the patch.
-'\"
-'\" BEGIN GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.so variables.man
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-'\" END GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS
-'\"
-'\" The descriptions above of the various SCons construction variables
-'\" are generated from the .xml files that live next to the various
-'\" Python modules in the build enginer library. If you're reading
-'\" this [gnt]roff file with an eye towards patching this man page,
-'\" you can still submit a diff against this text, but it will have to
-'\" be translated to a diff against the underlying .xml file before the
-'\" patch is actually accepted. If you do that yourself, it will make
-'\" it easier to integrate the patch.
-'\"
-'\" END GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-.LP
-Construction variables can be retrieved and set using the
-.B Dictionary
-method of the construction environment:
-
-.ES
-dict = env.Dictionary()
-dict["CC"] = "cc"
-.EE
-
-or using the [] operator:
-
-.ES
-env["CC"] = "cc"
-.EE
-
-Construction variables can also be passed to the construction environment
-constructor:
-
-.ES
-env = Environment(CC="cc")
-.EE
-
-or when copying a construction environment using the
-.B Clone
-method:
-
-.ES
-env2 = env.Clone(CC="cl.exe")
-.EE
-
-.SS Configure Contexts
-
-.B scons
-supports
-.I configure contexts,
-an integrated mechanism similar to the
-various AC_CHECK macros in GNU autoconf
-for testing for the existence of C header
-files, libraries, etc.
-In contrast to autoconf,
-.B scons
-does not maintain an explicit cache of the tested values,
-but uses its normal dependency tracking to keep the checked values
-up to date. However, users may override this behaviour with the
-.B --config
-command line option.
-
-The following methods can be used to perform checks:
-
-.TP
-.RI Configure( env ", [" custom_tests ", " conf_dir ", " log_file ", " config_h ", " clean ", " help])
-.TP
-.RI env.Configure([ custom_tests ", " conf_dir ", " log_file ", " config_h ", " clean ", " help])
-This creates a configure context, which can be used to perform checks.
-.I env
-specifies the environment for building the tests.
-This environment may be modified when performing checks.
-.I custom_tests
-is a dictionary containing custom tests.
-See also the section about custom tests below.
-By default, no custom tests are added to the configure context.
-.I conf_dir
-specifies a directory where the test cases are built.
-Note that this directory is not used for building
-normal targets.
-The default value is the directory
-#/.sconf_temp.
-.I log_file
-specifies a file which collects the output from commands
-that are executed to check for the existence of header files, libraries, etc.
-The default is the file #/config.log.
-If you are using the
-.BR VariantDir ()
-method,
-you may want to specify a subdirectory under your variant directory.
-.I config_h
-specifies a C header file where the results of tests
-will be written, e.g. #define HAVE_STDIO_H, #define HAVE_LIBM, etc.
-The default is to not write a
-.B config.h
-file.
-You can specify the same
-.B config.h
-file in multiple calls to Configure,
-in which case
-.B scons
-will concatenate all results in the specified file.
-Note that SCons
-uses its normal dependency checking
-to decide if it's necessary to rebuild
-the specified
-.I config_h
-file.
-This means that the file is not necessarily re-built each
-time scons is run,
-but is only rebuilt if its contents will have changed
-and some target that depends on the
-.I config_h
-file is being built.
-
-The optional
-.B clean
-and
-.B help
-arguments can be used to suppress execution of the configuration
-tests when the
-.B -c/--clean
-or
-.B -H/-h/--help
-options are used, respectively.
-The default behavior is always to execute
-configure context tests,
-since the results of the tests may
-affect the list of targets to be cleaned
-or the help text.
-If the configure tests do not affect these,
-then you may add the
-.B clean=False
-or
-.B help=False
-arguments
-(or both)
-to avoid unnecessary test execution.
-
-.EE
-A created
-.B Configure
-instance has the following associated methods:
-
-.TP
-.RI SConf.Finish( context )
-.TP
-.IR sconf .Finish()
-This method should be called after configuration is done.
-It returns the environment as modified
-by the configuration checks performed.
-After this method is called, no further checks can be performed
-with this configuration context.
-However, you can create a new
-.RI Configure
-context to perform additional checks.
-Only one context should be active at a time.
-
-The following Checks are predefined.
-(This list will likely grow larger as time
-goes by and developers contribute new useful tests.)
-
-.TP
-.RI SConf.CheckHeader( context ", " header ", [" include_quotes ", " language ])
-.TP
-.IR sconf .CheckHeader( header ", [" include_quotes ", " language ])
-Checks if
-.I header
-is usable in the specified language.
-.I header
-may be a list,
-in which case the last item in the list
-is the header file to be checked,
-and the previous list items are
-header files whose
-.B #include
-lines should precede the
-header line being checked for.
-The optional argument
-.I include_quotes
-must be
-a two character string, where the first character denotes the opening
-quote and the second character denotes the closing quote.
-By default, both characters are " (double quote).
-The optional argument
-.I language
-should be either
-.B C
-or
-.B C++
-and selects the compiler to be used for the check.
-Returns 1 on success and 0 on failure.
-
-.TP
-.RI SConf.CheckCHeader( context ", " header ", [" include_quotes ])
-.TP
-.IR sconf .CheckCHeader( header ", [" include_quotes ])
-This is a wrapper around
-.B SConf.CheckHeader
-which checks if
-.I header
-is usable in the C language.
-.I header
-may be a list,
-in which case the last item in the list
-is the header file to be checked,
-and the previous list items are
-header files whose
-.B #include
-lines should precede the
-header line being checked for.
-The optional argument
-.I include_quotes
-must be
-a two character string, where the first character denotes the opening
-quote and the second character denotes the closing quote (both default
-to \N'34').
-Returns 1 on success and 0 on failure.
-
-.TP
-.RI SConf.CheckCXXHeader( context ", " header ", [" include_quotes ])
-.TP
-.IR sconf .CheckCXXHeader( header ", [" include_quotes ])
-This is a wrapper around
-.B SConf.CheckHeader
-which checks if
-.I header
-is usable in the C++ language.
-.I header
-may be a list,
-in which case the last item in the list
-is the header file to be checked,
-and the previous list items are
-header files whose
-.B #include
-lines should precede the
-header line being checked for.
-The optional argument
-.I include_quotes
-must be
-a two character string, where the first character denotes the opening
-quote and the second character denotes the closing quote (both default
-to \N'34').
-Returns 1 on success and 0 on failure.
-
-.TP
-.RI SConf.CheckFunc( context, ", " function_name ", [" header ", " language ])
-.TP
-.IR sconf .CheckFunc( function_name ", [" header ", " language ])
-Checks if the specified
-C or C++ function is available.
-.I function_name
-is the name of the function to check for.
-The optional
-.I header
-argument is a string
-that will be
-placed at the top
-of the test file
-that will be compiled
-to check if the function exists;
-the default is:
-.ES
-#ifdef __cplusplus
-extern "C"
-#endif
-char function_name();
-.EE
-The optional
-.I language
-argument should be
-.B C
-or
-.B C++
-and selects the compiler to be used for the check;
-the default is "C".
-
-.TP
-.RI SConf.CheckLib( context ", [" library ", " symbol ", " header ", " language ", " autoadd=1 ])
-.TP
-.IR sconf .CheckLib([ library ", " symbol ", " header ", " language ", " autoadd=1 ])
-Checks if
-.I library
-provides
-.IR symbol .
-If the value of
-.I autoadd
-is 1 and the library provides the specified
-.IR symbol ,
-appends the library to the LIBS construction environment variable.
-.I library
-may also be None (the default),
-in which case
-.I symbol
-is checked with the current LIBS variable,
-or a list of library names,
-in which case each library in the list
-will be checked for
-.IR symbol .
-If
-.I symbol
-is not set or is
-.BR None ,
-then
-.BR SConf.CheckLib ()
-just checks if
-you can link against the specified
-.IR library .
-The optional
-.I language
-argument should be
-.B C
-or
-.B C++
-and selects the compiler to be used for the check;
-the default is "C".
-The default value for
-.I autoadd
-is 1.
-This method returns 1 on success and 0 on error.
-
-.TP
-.RI SConf.CheckLibWithHeader( context ", " library ", " header ", " language ", [" call ", " autoadd ])
-.TP
-.IR sconf .CheckLibWithHeader( library ", " header ", " language ", [" call ", " autoadd ])
-
-In contrast to the
-.RI SConf.CheckLib
-call, this call provides a more sophisticated way to check against libraries.
-Again,
-.I library
-specifies the library or a list of libraries to check.
-.I header
-specifies a header to check for.
-.I header
-may be a list,
-in which case the last item in the list
-is the header file to be checked,
-and the previous list items are
-header files whose
-.B #include
-lines should precede the
-header line being checked for.
-.I language
-may be one of 'C','c','CXX','cxx','C++' and 'c++'.
-.I call
-can be any valid expression (with a trailing ';').
-If
-.I call
-is not set,
-the default simply checks that you
-can link against the specified
-.IR library .
-.I autoadd
-specifies whether to add the library to the environment (only if the check
-succeeds). This method returns 1 on success and 0 on error.
-
-.TP
-.RI SConf.CheckType( context ", " type_name ", [" includes ", " language ])
-.TP
-.IR sconf .CheckType( type_name ", [" includes ", " language ])
-Checks for the existence of a type defined by
-.BR typedef .
-.I type_name
-specifies the typedef name to check for.
-.I includes
-is a string containing one or more
-.B #include
-lines that will be inserted into the program
-that will be run to test for the existence of the type.
-The optional
-.I language
-argument should be
-.B C
-or
-.B C++
-and selects the compiler to be used for the check;
-the default is "C".
-Example:
-.ES
-sconf.CheckType('foo_type', '#include "my_types.h"', 'C++')
-.EE
-
-.TP
-.RI Configure.CheckCC( self )
-Checks whether the C compiler (as defined by the CC construction variable) works
-by trying to compile a small source file.
-
-By default, SCons only detects if there is a program with the correct name, not
-if it is a functioning compiler.
-
-This uses the exact same command than the one used by the object builder for C
-source file, so it can be used to detect if a particular compiler flag works or
-not.
-
-.TP
-.RI Configure.CheckCXX( self )
-Checks whether the C++ compiler (as defined by the CXX construction variable)
-works by trying to compile a small source file. By default, SCons only detects
-if there is a program with the correct name, not if it is a functioning compiler.
-
-This uses the exact same command than the one used by the object builder for
-CXX source files, so it can be used to detect if a particular compiler flag
-works or not.
-
-.TP
-.RI Configure.CheckSHCC( self )
-Checks whether the C compiler (as defined by the SHCC construction variable) works
-by trying to compile a small source file. By default, SCons only detects if
-there is a program with the correct name, not if it is a functioning compiler.
-
-This uses the exact same command than the one used by the object builder for C
-source file, so it can be used to detect if a particular compiler flag works or
-not. This does not check whether the object code can be used to build a shared
-library, only that the compilation (not link) succeeds.
-
-.TP
-.RI Configure.CheckSHCXX( self )
-Checks whether the C++ compiler (as defined by the SHCXX construction variable)
-works by trying to compile a small source file. By default, SCons only detects
-if there is a program with the correct name, not if it is a functioning compiler.
-
-This uses the exact same command than the one used by the object builder for
-CXX source files, so it can be used to detect if a particular compiler flag
-works or not. This does not check whether the object code can be used to build
-a shared library, only that the compilation (not link) succeeds.
-
-.EE
-Example of a typical Configure usage:
-
-.ES
-env = Environment()
-conf = Configure( env )
-if not conf.CheckCHeader( 'math.h' ):
- print 'We really need math.h!'
- Exit(1)
-if conf.CheckLibWithHeader( 'qt', 'qapp.h', 'c++',
- 'QApplication qapp(0,0);' ):
- # do stuff for qt - usage, e.g.
- conf.env.Append( CPPFLAGS = '-DWITH_QT' )
-env = conf.Finish()
-.EE
-
-.TP
-.RI SConf.CheckTypeSize( context ", " type_name ", [" header ", " language ", " expect ])
-.TP
-.IR sconf .CheckTypeSize( type_name ", [" header ", " language ", " expect ])
-Checks for the size of a type defined by
-.BR typedef .
-.I type_name
-specifies the typedef name to check for.
-The optional
-.I header
-argument is a string
-that will be
-placed at the top
-of the test file
-that will be compiled
-to check if the function exists;
-the default is empty.
-The optional
-.I language
-argument should be
-.B C
-or
-.B C++
-and selects the compiler to be used for the check;
-the default is "C".
-The optional
-.I expect
-argument should be an integer.
-If this argument is used,
-the function will only check whether the type
-given in type_name has the expected size (in bytes).
-For example,
-.B "CheckTypeSize('short', expect = 2)"
-will return success only if short is two bytes.
-
-.ES
-.EE
-
-.TP
-.RI SConf.CheckDeclaration( context ", " symbol ", [" includes ", " language ])
-.TP
-.IR sconf .CheckDeclaration( symbol ", [" includes ", " language ])
-Checks if the specified
-.I symbol
-is declared.
-.I includes
-is a string containing one or more
-.B #include
-lines that will be inserted into the program
-that will be run to test for the existence of the type.
-The optional
-.I language
-argument should be
-.B C
-or
-.B C++
-and selects the compiler to be used for the check;
-the default is "C".
-
-.TP
-.RI SConf.Define( context ", " symbol ", [" value ", " comment ])
-.TP
-.IR sconf .Define( symbol ", [" value ", " comment ])
-This function does not check for anything, but defines a
-preprocessor symbol that will be added to the configuration header file.
-It is the equivalent of AC_DEFINE,
-and defines the symbol
-.I name
-with the optional
-.B value
-and the optional comment
-.BR comment .
-
-.IP
-Examples:
-
-.ES
-env = Environment()
-conf = Configure( env )
-
-# Puts the following line in the config header file:
-# #define A_SYMBOL
-conf.Define('A_SYMBOL')
-
-# Puts the following line in the config header file:
-# #define A_SYMBOL 1
-conf.Define('A_SYMBOL', 1)
-.EE
-
-.IP
-Be careful about quoting string values, though:
-
-.ES
-env = Environment()
-conf = Configure( env )
-
-# Puts the following line in the config header file:
-# #define A_SYMBOL YA
-conf.Define('A_SYMBOL', "YA")
-
-# Puts the following line in the config header file:
-# #define A_SYMBOL "YA"
-conf.Define('A_SYMBOL', '"YA"')
-.EE
-
-.IP
-For comment:
-
-.ES
-env = Environment()
-conf = Configure( env )
-
-# Puts the following lines in the config header file:
-# /* Set to 1 if you have a symbol */
-# #define A_SYMBOL 1
-conf.Define('A_SYMBOL', 1, 'Set to 1 if you have a symbol')
-.EE
-
-.EE
-You can define your own custom checks.
-in addition to the predefined checks.
-These are passed in a dictionary to the Configure function.
-This dictionary maps the names of the checks
-to user defined Python callables
-(either Python functions or class instances implementing the
-.I __call__
-method).
-The first argument of the call is always a
-.I CheckContext
-instance followed by the arguments,
-which must be supplied by the user of the check.
-These CheckContext instances define the following methods:
-
-.TP
-.RI CheckContext.Message( self ", " text )
-
-Usually called before the check is started.
-.I text
-will be displayed to the user, e.g. 'Checking for library X...'
-
-.TP
-.RI CheckContext.Result( self, ", " res )
-
-Usually called after the check is done.
-.I res
-can be either an integer or a string. In the former case, 'yes' (res != 0)
-or 'no' (res == 0) is displayed to the user, in the latter case the
-given string is displayed.
-
-.TP
-.RI CheckContext.TryCompile( self ", " text ", " extension )
-Checks if a file with the specified
-.I extension
-(e.g. '.c') containing
-.I text
-can be compiled using the environment's
-.B Object
-builder. Returns 1 on success and 0 on failure.
-
-.TP
-.RI CheckContext.TryLink( self ", " text ", " extension )
-Checks, if a file with the specified
-.I extension
-(e.g. '.c') containing
-.I text
-can be compiled using the environment's
-.B Program
-builder. Returns 1 on success and 0 on failure.
-
-.TP
-.RI CheckContext.TryRun( self ", " text ", " extension )
-Checks, if a file with the specified
-.I extension
-(e.g. '.c') containing
-.I text
-can be compiled using the environment's
-.B Program
-builder. On success, the program is run. If the program
-executes successfully
-(that is, its return status is 0),
-a tuple
-.I (1, outputStr)
-is returned, where
-.I outputStr
-is the standard output of the
-program.
-If the program fails execution
-(its return status is non-zero),
-then (0, '') is returned.
-
-.TP
-.RI CheckContext.TryAction( self ", " action ", [" text ", " extension ])
-Checks if the specified
-.I action
-with an optional source file (contents
-.I text
-, extension
-.I extension
-= ''
-) can be executed.
-.I action
-may be anything which can be converted to a
-.B scons
-.RI Action.
-On success,
-.I (1, outputStr)
-is returned, where
-.I outputStr
-is the content of the target file.
-On failure
-.I (0, '')
-is returned.
-
-.TP
-.RI CheckContext.TryBuild( self ", " builder ", [" text ", " extension ])
-Low level implementation for testing specific builds;
-the methods above are based on this method.
-Given the Builder instance
-.I builder
-and the optional
-.I text
-of a source file with optional
-.IR extension ,
-this method returns 1 on success and 0 on failure. In addition,
-.I self.lastTarget
-is set to the build target node, if the build was successful.
-
-.EE
-Example for implementing and using custom tests:
-
-.ES
-def CheckQt(context, qtdir):
- context.Message( 'Checking for qt ...' )
- lastLIBS = context.env['LIBS']
- lastLIBPATH = context.env['LIBPATH']
- lastCPPPATH= context.env['CPPPATH']
- context.env.Append(LIBS = 'qt', LIBPATH = qtdir + '/lib', CPPPATH = qtdir + '/include' )
- ret = context.TryLink("""
-#include <qapp.h>
-int main(int argc, char **argv) {
- QApplication qapp(argc, argv);
- return 0;
-}
-""")
- if not ret:
- context.env.Replace(LIBS = lastLIBS, LIBPATH=lastLIBPATH, CPPPATH=lastCPPPATH)
- context.Result( ret )
- return ret
-
-env = Environment()
-conf = Configure( env, custom_tests = { 'CheckQt' : CheckQt } )
-if not conf.CheckQt('/usr/lib/qt'):
- print 'We really need qt!'
- Exit(1)
-env = conf.Finish()
-.EE
-
-.SS Command-Line Construction Variables
-
-Often when building software,
-some variables must be specified at build time.
-For example, libraries needed for the build may be in non-standard
-locations, or site-specific compiler options may need to be passed to the
-compiler.
-.B scons
-provides a
-.B Variables
-object to support overriding construction variables
-on the command line:
-.ES
-$ scons VARIABLE=foo
-.EE
-The variable values can also be specified in a text-based SConscript file.
-To create a Variables object, call the Variables() function:
-
-.TP
-.RI Variables([ files "], [" args ])
-This creates a Variables object that will read construction variables from
-the file or list of filenames specified in
-.IR files .
-If no files are specified,
-or the
-.I files
-argument is
-.BR None ,
-then no files will be read.
-The optional argument
-.I args
-is a dictionary of
-values that will override anything read from the specified files;
-it is primarily intended to be passed the
-.B ARGUMENTS
-dictionary that holds variables
-specified on the command line.
-Example:
-
-.ES
-vars = Variables('custom.py')
-vars = Variables('overrides.py', ARGUMENTS)
-vars = Variables(None, {FOO:'expansion', BAR:7})
-.EE
-
-Variables objects have the following methods:
-
-.TP
-.RI Add( key ", [" help ", " default ", " validator ", " converter ])
-This adds a customizable construction variable to the Variables object.
-.I key
-is the name of the variable.
-.I help
-is the help text for the variable.
-.I default
-is the default value of the variable;
-if the default value is
-.B None
-and there is no explicit value specified,
-the construction variable will
-.I not
-be added to the construction environment.
-.I validator
-is called to validate the value of the variable, and should take three
-arguments: key, value, and environment.
-The recommended way to handle an invalid value is
-to raise an exception (see example below).
-.I converter
-is called to convert the value before putting it in the environment, and
-should take either a value, or the value and environment, as parameters.
-The
-.I converter
-must return a value,
-which will be converted into a string
-before being validated by the
-.I validator
-(if any)
-and then added to the environment.
-
-Examples:
-
-.ES
-vars.Add('CC', 'The C compiler')
-
-def validate_color(key, val, env):
- if not val in ['red', 'blue', 'yellow']:
- raise Exception("Invalid color value '%s'" % val)
-vars.Add('COLOR', validator=valid_color)
-.EE
-
-.TP
-.RI AddVariables( list )
-A wrapper script that adds
-multiple customizable construction variables
-to a Variables object.
-.I list
-is a list of tuple or list objects
-that contain the arguments
-for an individual call to the
-.B Add
-method.
-
-.ES
-opt.AddVariables(
- ('debug', '', 0),
- ('CC', 'The C compiler'),
- ('VALIDATE', 'An option for testing validation',
- 'notset', validator, None),
- )
-.EE
-
-.TP
-.RI Update( env ", [" args ])
-This updates a construction environment
-.I env
-with the customized construction variables.
-Any specified variables that are
-.I not
-configured for the Variables object
-will be saved and may be
-retrieved with the
-.BR UnknownVariables ()
-method, below.
-
-Normally this method is not called directly,
-but is called indirectly by passing the Variables object to
-the Environment() function:
-
-.ES
-env = Environment(variables=vars)
-.EE
-
-.IP
-The text file(s) that were specified
-when the Variables object was created
-are executed as Python scripts,
-and the values of (global) Python variables set in the file
-are added to the construction environment.
-
-Example:
-
-.ES
-CC = 'my_cc'
-.EE
-
-.TP
-.RI UnknownVariables( )
-Returns a dictionary containing any
-variables that were specified
-either in the files or the dictionary
-with which the Variables object was initialized,
-but for which the Variables object was
-not configured.
-
-.ES
-env = Environment(variables=vars)
-for key, value in vars.UnknownVariables():
- print "unknown variable: %s=%s" % (key, value)
-.EE
-
-.TP
-.RI Save( filename ", " env )
-This saves the currently set variables into a script file named
-.I filename
-that can be used on the next invocation to automatically load the current
-settings. This method combined with the Variables method can be used to
-support caching of variables between runs.
-
-.ES
-env = Environment()
-vars = Variables(['variables.cache', 'custom.py'])
-vars.Add(...)
-vars.Update(env)
-vars.Save('variables.cache', env)
-.EE
-
-.TP
-.RI GenerateHelpText( env ", [" sort ])
-This generates help text documenting the customizable construction
-variables suitable to passing in to the Help() function.
-.I env
-is the construction environment that will be used to get the actual values
-of customizable variables. Calling with
-an optional
-.I sort
-function
-will cause the output to be sorted
-by the specified argument.
-The specific
-.I sort
-function
-should take two arguments
-and return
--1, 0 or 1
-(like the standard Python
-.I cmp
-function).
-
-.ES
-Help(vars.GenerateHelpText(env))
-Help(vars.GenerateHelpText(env, sort=cmp))
-.EE
-
-.TP
-.RI FormatVariableHelpText( env ", " opt ", " help ", " default ", " actual )
-This method returns a formatted string
-containing the printable help text
-for one option.
-It is normally not called directly,
-but is called by the
-.IR GenerateHelpText ()
-method to create the returned help text.
-It may be overridden with your own
-function that takes the arguments specified above
-and returns a string of help text formatted to your liking.
-Note that the
-.IR GenerateHelpText ()
-will not put any blank lines or extra
-characters in between the entries,
-so you must add those characters to the returned
-string if you want the entries separated.
-
-.ES
-def my_format(env, opt, help, default, actual):
- fmt = "\n%s: default=%s actual=%s (%s)\n"
- return fmt % (opt, default. actual, help)
-vars.FormatVariableHelpText = my_format
-.EE
-
-To make it more convenient to work with customizable Variables,
-.B scons
-provides a number of functions
-that make it easy to set up
-various types of Variables:
-
-.TP
-.RI BoolVariable( key ", " help ", " default )
-Return a tuple of arguments
-to set up a Boolean option.
-The option will use
-the specified name
-.IR key ,
-have a default value of
-.IR default ,
-and display the specified
-.I help
-text.
-The option will interpret the values
-.BR y ,
-.BR yes ,
-.BR t ,
-.BR true ,
-.BR 1 ,
-.B on
-and
-.B all
-as true,
-and the values
-.BR n ,
-.BR no ,
-.BR f ,
-.BR false ,
-.BR 0 ,
-.B off
-and
-.B none
-as false.
-
-.TP
-.RI EnumVariable( key ", " help ", " default ", " allowed_values ", [" map ", " ignorecase ])
-Return a tuple of arguments
-to set up an option
-whose value may be one
-of a specified list of legal enumerated values.
-The option will use
-the specified name
-.IR key ,
-have a default value of
-.IR default ,
-and display the specified
-.I help
-text.
-The option will only support those
-values in the
-.I allowed_values
-list.
-The optional
-.I map
-argument is a dictionary
-that can be used to convert
-input values into specific legal values
-in the
-.I allowed_values
-list.
-If the value of
-.I ignore_case
-is
-.B 0
-(the default),
-then the values are case-sensitive.
-If the value of
-.I ignore_case
-is
-.BR 1 ,
-then values will be matched
-case-insensitive.
-If the value of
-.I ignore_case
-is
-.BR 1 ,
-then values will be matched
-case-insensitive,
-and all input values will be
-converted to lower case.
-
-.TP
-.RI ListVariable( key ", " help ", " default ", " names ", [", map ])
-Return a tuple of arguments
-to set up an option
-whose value may be one or more
-of a specified list of legal enumerated values.
-The option will use
-the specified name
-.IR key ,
-have a default value of
-.IR default ,
-and display the specified
-.I help
-text.
-The option will only support the values
-.BR all ,
-.BR none ,
-or the values in the
-.I names
-list.
-More than one value may be specified,
-with all values separated by commas.
-The default may be a string of
-comma-separated default values,
-or a list of the default values.
-The optional
-.I map
-argument is a dictionary
-that can be used to convert
-input values into specific legal values
-in the
-.I names
-list.
-
-.TP
-.RI PackageVariable( key ", " help ", " default )
-Return a tuple of arguments
-to set up an option
-whose value is a path name
-of a package that may be
-enabled, disabled or
-given an explicit path name.
-The option will use
-the specified name
-.IR key ,
-have a default value of
-.IR default ,
-and display the specified
-.I help
-text.
-The option will support the values
-.BR yes ,
-.BR true ,
-.BR on ,
-.BR enable
-or
-.BR search ,
-in which case the specified
-.I default
-will be used,
-or the option may be set to an
-arbitrary string
-(typically the path name to a package
-that is being enabled).
-The option will also support the values
-.BR no ,
-.BR false ,
-.BR off
-or
-.BR disable
-to disable use of the specified option.
-
-.TP
-.RI PathVariable( key ", " help ", " default ", [" validator ])
-Return a tuple of arguments
-to set up an option
-whose value is expected to be a path name.
-The option will use
-the specified name
-.IR key ,
-have a default value of
-.IR default ,
-and display the specified
-.I help
-text.
-An additional
-.I validator
-may be specified
-that will be called to
-verify that the specified path
-is acceptable.
-SCons supplies the
-following ready-made validators:
-.BR PathVariable.PathExists
-(the default),
-which verifies that the specified path exists;
-.BR PathVariable.PathIsFile ,
-which verifies that the specified path is an existing file;
-.BR PathVariable.PathIsDir ,
-which verifies that the specified path is an existing directory;
-.BR PathVariable.PathIsDirCreate ,
-which verifies that the specified path is a directory
-and will create the specified directory if the path does not exist;
-and
-.BR PathVariable.PathAccept ,
-which simply accepts the specific path name argument without validation,
-and which is suitable if you want your users
-to be able to specify a directory path that will be
-created as part of the build process, for example.
-You may supply your own
-.I validator
-function,
-which must take three arguments
-.RI ( key ,
-the name of the variable to be set;
-.IR val ,
-the specified value being checked;
-and
-.IR env ,
-the construction environment)
-and should raise an exception
-if the specified value is not acceptable.
-
-.RE
-These functions make it
-convenient to create a number
-of variables with consistent behavior
-in a single call to the
-.B AddVariables
-method:
-
-.ES
-vars.AddVariables(
- BoolVariable('warnings', 'compilation with -Wall and similiar', 1),
- EnumVariable('debug', 'debug output and symbols', 'no'
- allowed_values=('yes', 'no', 'full'),
- map={}, ignorecase=0), # case sensitive
- ListVariable('shared',
- 'libraries to build as shared libraries',
- 'all',
- names = list_of_libs),
- PackageVariable('x11',
- 'use X11 installed here (yes = search some places)',
- 'yes'),
- PathVariable('qtdir', 'where the root of Qt is installed', qtdir),
- PathVariable('foopath', 'where the foo library is installed', foopath,
- PathVariable.PathIsDir),
-
-)
-.EE
-
-.SS File and Directory Nodes
-
-The
-.IR File ()
-and
-.IR Dir ()
-functions return
-.I File
-and
-.I Dir
-Nodes, respectively.
-python objects, respectively.
-Those objects have several user-visible attributes
-and methods that are often useful:
-
-.IP path
-The build path
-of the given
-file or directory.
-This path is relative to the top-level directory
-(where the
-.B SConstruct
-file is found).
-The build path is the same as the source path if
-.I variant_dir
-is not being used.
-
-.IP abspath
-The absolute build path of the given file or directory.
-
-.IP srcnode()
-The
-.IR srcnode ()
-method
-returns another
-.I File
-or
-.I Dir
-object representing the
-.I source
-path of the given
-.I File
-or
-.IR Dir .
-The
-
-.ES
-# Get the current build dir's path, relative to top.
-Dir('.').path
-# Current dir's absolute path
-Dir('.').abspath
-# Next line is always '.', because it is the top dir's path relative to itself.
-Dir('#.').path
-File('foo.c').srcnode().path # source path of the given source file.
-
-# Builders also return File objects:
-foo = env.Program('foo.c')
-print "foo will be built in %s"%foo.path
-.EE
-
-A
-.I Dir
-Node or
-.I File
-Node can also be used to create
-file and subdirectory Nodes relative to the generating Node.
-A
-.I Dir
-Node will place the new Nodes within the directory it represents.
-A
-.I File
-node will place the new Nodes within its parent directory
-(that is, "beside" the file in question).
-If
-.I d
-is a
-.I Dir
-(directory) Node and
-.I f
-is a
-.I File
-(file) Node,
-then these methods are available:
-
-.TP
-.IR d .Dir( name )
-Returns a directory Node for a subdirectory of
-.I d
-named
-.IR name .
-
-.TP
-.IR d .File( name )
-Returns a file Node for a file within
-.I d
-named
-.IR name .
-
-.TP
-.IR d .Entry( name )
-Returns an unresolved Node within
-.I d
-named
-.IR name .
-
-.TP
-.IR f .Dir( name )
-Returns a directory named
-.I name
-within the parent directory of
-.IR f .
-
-.TP
-.IR f .File( name )
-Returns a file named
-.I name
-within the parent directory of
-.IR f .
-
-.TP
-.IR f .Entry( name )
-Returns an unresolved Node named
-.I name
-within the parent directory of
-.IR f .
-
-.RE
-For example:
-
-.ES
-# Get a Node for a file within a directory
-incl = Dir('include')
-f = incl.File('header.h')
-
-# Get a Node for a subdirectory within a directory
-dist = Dir('project-3.2.1)
-src = dist.Dir('src')
-
-# Get a Node for a file in the same directory
-cfile = File('sample.c')
-hfile = cfile.File('sample.h')
-
-# Combined example
-docs = Dir('docs')
-html = docs.Dir('html')
-index = html.File('index.html')
-css = index.File('app.css')
-.EE
-
-.SH EXTENDING SCONS
-.SS Builder Objects
-.B scons
-can be extended to build different types of targets
-by adding new Builder objects
-to a construction environment.
-.IR "In general" ,
-you should only need to add a new Builder object
-when you want to build a new type of file or other external target.
-If you just want to invoke a different compiler or other tool
-to build a Program, Object, Library, or any other
-type of output file for which
-.B scons
-already has an existing Builder,
-it is generally much easier to
-use those existing Builders
-in a construction environment
-that sets the appropriate construction variables
-(CC, LINK, etc.).
-
-Builder objects are created
-using the
-.B Builder
-function.
-The
-.B Builder
-function accepts the following arguments:
-
-.IP action
-The command line string used to build the target from the source.
-.B action
-can also be:
-a list of strings representing the command
-to be executed and its arguments
-(suitable for enclosing white space in an argument),
-a dictionary
-mapping source file name suffixes to
-any combination of command line strings
-(if the builder should accept multiple source file extensions),
-a Python function;
-an Action object
-(see the next section);
-or a list of any of the above.
-
-An action function
-takes three arguments:
-.I source
-- a list of source nodes,
-.I target
-- a list of target nodes,
-.I env
-- the construction environment.
-
-.IP prefix
-The prefix that will be prepended to the target file name.
-This may be specified as a:
-
-.RS 10
-.HP 6
-*
-.IR string ,
-
-.HP 6
-*
-.I callable object
-- a function or other callable that takes
-two arguments (a construction environment and a list of sources)
-and returns a prefix,
-
-.HP 6
-*
-.I dictionary
-- specifies a mapping from a specific source suffix (of the first
-source specified) to a corresponding target prefix. Both the source
-suffix and target prefix specifications may use environment variable
-substitution, and the target prefix (the 'value' entries in the
-dictionary) may also be a callable object. The default target prefix
-may be indicated by a dictionary entry with a key value of None.
-.RE
-.P
-
-.ES
-b = Builder("build_it < $SOURCE > $TARGET",
- prefix = "file-")
-
-def gen_prefix(env, sources):
- return "file-" + env['PLATFORM'] + '-'
-b = Builder("build_it < $SOURCE > $TARGET",
- prefix = gen_prefix)
-
-b = Builder("build_it < $SOURCE > $TARGET",
- suffix = { None: "file-",
- "$SRC_SFX_A": gen_prefix })
-.EE
-
-.IP suffix
-The suffix that will be appended to the target file name.
-This may be specified in the same manner as the prefix above.
-If the suffix is a string, then
-.B scons
-will append a '.' to the beginning of the suffix if it's not already
-there. The string returned by callable object (or obtained from the
-dictionary) is untouched and must append its own '.' to the beginning
-if one is desired.
-
-.ES
-b = Builder("build_it < $SOURCE > $TARGET"
- suffix = "-file")
-
-def gen_suffix(env, sources):
- return "." + env['PLATFORM'] + "-file"
-b = Builder("build_it < $SOURCE > $TARGET",
- suffix = gen_suffix)
-
-b = Builder("build_it < $SOURCE > $TARGET",
- suffix = { None: ".sfx1",
- "$SRC_SFX_A": gen_suffix })
-.EE
-
-.IP ensure_suffix
-When set to any true value, causes
-.B scons
-to add the target suffix specified by the
-.I suffix
-keyword to any target strings
-that have a different suffix.
-(The default behavior is to leave untouched
-any target file name that looks like it already has any suffix.)
-
-.ES
-b1 = Builder("build_it < $SOURCE > $TARGET"
- suffix = ".out")
-b2 = Builder("build_it < $SOURCE > $TARGET"
- suffix = ".out",
- ensure_suffix)
-env = Environment()
-env['BUILDERS']['B1'] = b1
-env['BUILDERS']['B2'] = b2
-
-# Builds "foo.txt" because ensure_suffix is not set.
-env.B1('foo.txt', 'foo.in')
-
-# Builds "bar.txt.out" because ensure_suffix is set.
-env.B2('bar.txt', 'bar.in')
-.EE
-
-.IP src_suffix
-The expected source file name suffix. This may be a string or a list
-of strings.
-
-.IP target_scanner
-A Scanner object that
-will be invoked to find
-implicit dependencies for this target file.
-This keyword argument should be used
-for Scanner objects that find
-implicit dependencies
-based only on the target file
-and the construction environment,
-.I not
-for implicit dependencies based on source files.
-(See the section "Scanner Objects" below,
-for information about creating Scanner objects.)
-
-.IP source_scanner
-A Scanner object that
-will be invoked to
-find implicit dependencies in
-any source files
-used to build this target file.
-This is where you would
-specify a scanner to
-find things like
-.B #include
-lines in source files.
-The pre-built
-.B DirScanner
-Scanner object may be used to
-indicate that this Builder
-should scan directory trees
-for on-disk changes to files
-that
-.B scons
-does not know about from other Builder or function calls.
-(See the section "Scanner Objects" below,
-for information about creating your own Scanner objects.)
-
-.IP target_factory
-A factory function that the Builder will use
-to turn any targets specified as strings into SCons Nodes.
-By default,
-SCons assumes that all targets are files.
-Other useful target_factory
-values include
-.BR Dir ,
-for when a Builder creates a directory target,
-and
-.BR Entry ,
-for when a Builder can create either a file
-or directory target.
-
-Example:
-
-.ES
-MakeDirectoryBuilder = Builder(action=my_mkdir, target_factory=Dir)
-env = Environment()
-env.Append(BUILDERS = {'MakeDirectory':MakeDirectoryBuilder})
-env.MakeDirectory('new_directory', [])
-.EE
-
-.IP
-Note that the call to the MakeDirectory Builder
-needs to specify an empty source list
-to make the string represent the builder's target;
-without that, it would assume the argument is the source,
-and would try to deduce the target name from it,
-which in the absence of an automatically-added prefix or suffix
-would lead to a matching target and source name
-and a circular dependency.
-
-.IP source_factory
-A factory function that the Builder will use
-to turn any sources specified as strings into SCons Nodes.
-By default,
-SCons assumes that all source are files.
-Other useful source_factory
-values include
-.BR Dir ,
-for when a Builder uses a directory as a source,
-and
-.BR Entry ,
-for when a Builder can use files
-or directories (or both) as sources.
-
-Example:
-
-.ES
-CollectBuilder = Builder(action=my_mkdir, source_factory=Entry)
-env = Environment()
-env.Append(BUILDERS = {'Collect':CollectBuilder})
-env.Collect('archive', ['directory_name', 'file_name'])
-.EE
-
-.IP emitter
-A function or list of functions to manipulate the target and source
-lists before dependencies are established
-and the target(s) are actually built.
-.B emitter
-can also be a string containing a construction variable to expand
-to an emitter function or list of functions,
-or a dictionary mapping source file suffixes
-to emitter functions.
-(Only the suffix of the first source file
-is used to select the actual emitter function
-from an emitter dictionary.)
-
-An emitter function
-takes three arguments:
-.I source
-- a list of source nodes,
-.I target
-- a list of target nodes,
-.I env
-- the construction environment.
-An emitter must return a tuple containing two lists,
-the list of targets to be built by this builder,
-and the list of sources for this builder.
-
-Example:
-
-.ES
-def e(target, source, env):
- return (target + ['foo.foo'], source + ['foo.src'])
-
-# Simple association of an emitter function with a Builder.
-b = Builder("my_build < $TARGET > $SOURCE",
- emitter = e)
-
-def e2(target, source, env):
- return (target + ['bar.foo'], source + ['bar.src'])
-
-# Simple association of a list of emitter functions with a Builder.
-b = Builder("my_build < $TARGET > $SOURCE",
- emitter = [e, e2])
-
-# Calling an emitter function through a construction variable.
-env = Environment(MY_EMITTER = e)
-b = Builder("my_build < $TARGET > $SOURCE",
- emitter = '$MY_EMITTER')
-
-# Calling a list of emitter functions through a construction variable.
-env = Environment(EMITTER_LIST = [e, e2])
-b = Builder("my_build < $TARGET > $SOURCE",
- emitter = '$EMITTER_LIST')
-
-# Associating multiple emitters with different file
-# suffixes using a dictionary.
-def e_suf1(target, source, env):
- return (target + ['another_target_file'], source)
-def e_suf2(target, source, env):
- return (target, source + ['another_source_file'])
-b = Builder("my_build < $TARGET > $SOURCE",
- emitter = {'.suf1' : e_suf1,
- '.suf2' : e_suf2})
-.EE
-
-.IP multi
-Specifies whether this builder is allowed to be called multiple times for
-the same target file(s). The default is 0, which means the builder
-can not be called multiple times for the same target file(s). Calling a
-builder multiple times for the same target simply adds additional source
-files to the target; it is not allowed to change the environment associated
-with the target, specify addition environment overrides, or associate a different
-builder with the target.
-
-.IP env
-A construction environment that can be used
-to fetch source code using this Builder.
-(Note that this environment is
-.I not
-used for normal builds of normal target files,
-which use the environment that was
-used to call the Builder for the target file.)
-
-.IP generator
-A function that returns a list of actions that will be executed to build
-the target(s) from the source(s).
-The returned action(s) may be
-an Action object, or anything that
-can be converted into an Action object
-(see the next section).
-
-The generator function
-takes four arguments:
-.I source
-- a list of source nodes,
-.I target
-- a list of target nodes,
-.I env
-- the construction environment,
-.I for_signature
-- a Boolean value that specifies
-whether the generator is being called
-for generating a build signature
-(as opposed to actually executing the command).
-Example:
-
-.ES
-def g(source, target, env, for_signature):
- return [["gcc", "-c", "-o"] + target + source]
-
-b = Builder(generator=g)
-.EE
-
-.IP
-The
-.I generator
-and
-.I action
-arguments must not both be used for the same Builder.
-
-.IP src_builder
-Specifies a builder to use when a source file name suffix does not match
-any of the suffixes of the builder. Using this argument produces a
-multi-stage builder.
-
-.IP single_source
-Specifies that this builder expects exactly one source file per call. Giving
-more than one source file without target files results in implicitely calling
-the builder multiple times (once for each source given). Giving multiple
-source files together with target files results in a UserError exception.
-
-.RE
-.IP
-The
-.I generator
-and
-.I action
-arguments must not both be used for the same Builder.
-
-.IP source_ext_match
-When the specified
-.I action
-argument is a dictionary,
-the default behavior when a builder is passed
-multiple source files is to make sure that the
-extensions of all the source files match.
-If it is legal for this builder to be
-called with a list of source files with different extensions,
-this check can be suppressed by setting
-.B source_ext_match
-to
-.B None
-or some other non-true value.
-When
-.B source_ext_match
-is disable,
-.B scons
-will use the suffix of the first specified
-source file to select the appropriate action from the
-.I action
-dictionary.
-
-In the following example,
-the setting of
-.B source_ext_match
-prevents
-.B scons
-from exiting with an error
-due to the mismatched suffixes of
-.B foo.in
-and
-.BR foo.extra .
-
-.ES
-b = Builder(action={'.in' : 'build $SOURCES > $TARGET'},
- source_ext_match = None)
-
-env = Environment(BUILDERS = {'MyBuild':b})
-env.MyBuild('foo.out', ['foo.in', 'foo.extra'])
-.EE
-
-.IP env
-A construction environment that can be used
-to fetch source code using this Builder.
-(Note that this environment is
-.I not
-used for normal builds of normal target files,
-which use the environment that was
-used to call the Builder for the target file.)
-
-.ES
-b = Builder(action="build < $SOURCE > $TARGET")
-env = Environment(BUILDERS = {'MyBuild' : b})
-env.MyBuild('foo.out', 'foo.in', my_arg = 'xyzzy')
-.EE
-
-.IP chdir
-A directory from which scons
-will execute the
-action(s) specified
-for this Builder.
-If the
-.B chdir
-argument is
-a string or a directory Node,
-scons will change to the specified directory.
-If the
-.B chdir
-is not a string or Node
-and is non-zero,
-then scons will change to the
-target file's directory.
-
-Note that scons will
-.I not
-automatically modify
-its expansion of
-construction variables like
-.B $TARGET
-and
-.B $SOURCE
-when using the chdir
-keyword argument--that is,
-the expanded file names
-will still be relative to
-the top-level SConstruct directory,
-and consequently incorrect
-relative to the chdir directory.
-Builders created using chdir keyword argument,
-will need to use construction variable
-expansions like
-.B ${TARGET.file}
-and
-.B ${SOURCE.file}
-to use just the filename portion of the
-targets and source.
-
-.ES
-b = Builder(action="build < ${SOURCE.file} > ${TARGET.file}",
- chdir=1)
-env = Environment(BUILDERS = {'MyBuild' : b})
-env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in')
-.EE
-
-.B WARNING:
-Python only keeps one current directory
-location for all of the threads.
-This means that use of the
-.B chdir
-argument
-will
-.I not
-work with the SCons
-.B -j
-option,
-because individual worker threads spawned
-by SCons interfere with each other
-when they start changing directory.
-
-.RE
-Any additional keyword arguments supplied
-when a Builder object is created
-(that is, when the Builder() function is called)
-will be set in the executing construction
-environment when the Builder object is called.
-The canonical example here would be
-to set a construction variable to
-the repository of a source code system.
-
-Any additional keyword arguments supplied
-when a Builder
-.I object
-is called
-will only be associated with the target
-created by that particular Builder call
-(and any other files built as a
-result of the call).
-
-These extra keyword arguments are passed to the
-following functions:
-command generator functions,
-function Actions,
-and emitter functions.
-
-.SS Action Objects
-
-The
-.BR Builder ()
-function will turn its
-.B action
-keyword argument into an appropriate
-internal Action object.
-You can also explicity create Action objects
-using the
-.BR Action ()
-global function,
-which can then be passed to the
-.BR Builder ()
-function.
-This can be used to configure
-an Action object more flexibly,
-or it may simply be more efficient
-than letting each separate Builder object
-create a separate Action
-when multiple
-Builder objects need to do the same thing.
-
-The
-.BR Action ()
-global function
-returns an appropriate object for the action
-represented by the type of the first argument:
-
-.IP Action
-If the first argument is already an Action object,
-the object is simply returned.
-
-.IP String
-If the first argument is a string,
-a command-line Action is returned.
-Note that the command-line string
-may be preceded by an
-.B @
-(at-sign)
-to suppress printing of the specified command line,
-or by a
-.B \-
-(hyphen)
-to ignore the exit status from the specified command:
-
-.ES
-Action('$CC -c -o $TARGET $SOURCES')
-
-# Doesn't print the line being executed.
-Action('@build $TARGET $SOURCES')
-
-# Ignores return value
-Action('-build $TARGET $SOURCES')
-.EE
-.\" XXX From Gary Ruben, 23 April 2002:
-.\" What would be useful is a discussion of how you execute command
-.\" shell commands ie. what is the process used to spawn the shell, pass
-.\" environment variables to it etc., whether there is one shell per
-.\" environment or one per command etc. It might help to look at the Gnu
-.\" make documentation to see what they think is important to discuss about
-.\" a build system. I'm sure you can do a better job of organising the
-.\" documentation than they have :-)
-
-.IP List
-If the first argument is a list,
-then a list of Action objects is returned.
-An Action object is created as necessary
-for each element in the list.
-If an element
-.I within
-the list is itself a list,
-the internal list is the
-command and arguments to be executed via
-the command line.
-This allows white space to be enclosed
-in an argument by defining
-a command in a list within a list:
-
-.ES
-Action([['cc', '-c', '-DWHITE SPACE', '-o', '$TARGET', '$SOURCES']])
-.EE
-
-.IP Function
-If the first argument is a Python function,
-a function Action is returned.
-The Python function must take three keyword arguments,
-.B target
-(a Node object representing the target file),
-.B source
-(a Node object representing the source file)
-and
-.B env
-(the construction environment
-used for building the target file).
-The
-.B target
-and
-.B source
-arguments may be lists of Node objects if there is
-more than one target file or source file.
-The actual target and source file name(s) may
-be retrieved from their Node objects
-via the built-in Python str() function:
-
-.ES
-target_file_name = str(target)
-source_file_names = map(lambda x: str(x), source)
-.EE
-.IP
-The function should return
-.B 0
-or
-.B None
-to indicate a successful build of the target file(s).
-The function may raise an exception
-or return a non-zero exit status
-to indicate an unsuccessful build.
-
-.ES
-def build_it(target = None, source = None, env = None):
- # build the target from the source
- return 0
-
-a = Action(build_it)
-.EE
-
-If the action argument is not one of the above,
-None is returned.
-.PP
-
-The second argument is optional and is used to define the output
-which is printed when the Action is actually performed.
-In the absence of this parameter,
-or if it's an empty string,
-a default output depending on the type of the action is used.
-For example, a command-line action will print the executed command.
-The argument must be either a Python function or a string.
-
-In the first case,
-it's a function that returns a string to be printed
-to describe the action being executed.
-The function may also be specified by the
-.IR strfunction =
-keyword argument.
-Like a function to build a file,
-this function must take three keyword arguments:
-.B target
-(a Node object representing the target file),
-.B source
-(a Node object representing the source file)
-and
-.BR env
-(a construction environment).
-The
-.B target
-and
-.B source
-arguments may be lists of Node objects if there is
-more than one target file or source file.
-
-In the second case, you provide the string itself.
-The string may also be specified by the
-.IR cmdstr =
-keyword argument.
-The string typically contains variables, notably
-$TARGET(S) and $SOURCE(S), or consists of just a single
-variable, which is optionally defined somewhere else.
-SCons itself heavily uses the latter variant.
-
-Examples:
-
-.ES
-def build_it(target, source, env):
- # build the target from the source
- return 0
-
-def string_it(target, source, env):
- return "building '%s' from '%s'" % (target[0], source[0])
-
-# Use a positional argument.
-f = Action(build_it, string_it)
-s = Action(build_it, "building '$TARGET' from '$SOURCE'")
-
-# Alternatively, use a keyword argument.
-f = Action(build_it, strfunction=string_it)
-s = Action(build_it, cmdstr="building '$TARGET' from '$SOURCE'")
-
-# You can provide a configurable variable.
-l = Action(build_it, '$STRINGIT')
-.EE
-
-The third and succeeding arguments, if present,
-may either be a construction variable or a list of construction variables
-whose values will be included in the signature of the Action
-when deciding whether a target should be rebuilt because the action changed.
-The variables may also be specified by a
-.IR varlist =
-keyword parameter;
-if both are present, they are combined.
-This is necessary whenever you want a target to be rebuilt
-when a specific construction variable changes.
-This is not often needed for a string action,
-as the expanded variables will normally be part of the command line,
-but may be needed if a Python function action uses
-the value of a construction variable when generating the command line.
-
-.ES
-def build_it(target, source, env):
- # build the target from the 'XXX' construction variable
- open(target[0], 'w').write(env['XXX'])
- return 0
-
-# Use positional arguments.
-a = Action(build_it, '$STRINGIT', ['XXX'])
-
-# Alternatively, use a keyword argument.
-a = Action(build_it, varlist=['XXX'])
-.EE
-
-The
-.BR Action ()
-global function
-can be passed the following
-optional keyword arguments
-to modify the Action object's behavior:
-
-.IP
-.B chdir
-The
-.B chdir
-keyword argument specifies that
-scons will execute the action
-after changing to the specified directory.
-If the
-.B chdir
-argument is
-a string or a directory Node,
-scons will change to the specified directory.
-If the
-.B chdir
-argument
-is not a string or Node
-and is non-zero,
-then scons will change to the
-target file's directory.
-
-Note that scons will
-.I not
-automatically modify
-its expansion of
-construction variables like
-.B $TARGET
-and
-.B $SOURCE
-when using the chdir
-keyword argument--that is,
-the expanded file names
-will still be relative to
-the top-level SConstruct directory,
-and consequently incorrect
-relative to the chdir directory.
-Builders created using chdir keyword argument,
-will need to use construction variable
-expansions like
-.B ${TARGET.file}
-and
-.B ${SOURCE.file}
-to use just the filename portion of the
-targets and source.
-
-.ES
-a = Action("build < ${SOURCE.file} > ${TARGET.file}",
- chdir=1)
-.EE
-
-.IP
-.B exitstatfunc
-The
-.BR Action ()
-global function
-also takes an
-.B exitstatfunc
-keyword argument
-which specifies a function
-that is passed the exit status
-(or return value)
-from the specified action
-and can return an arbitrary
-or modified value.
-This can be used, for example,
-to specify that an Action object's
-return value should be ignored
-under special conditions
-and SCons should, therefore,
-consider that the action always suceeds:
-
-.ES
-def always_succeed(s):
- # Always return 0, which indicates success.
- return 0
-a = Action("build < ${SOURCE.file} > ${TARGET.file}",
- exitstatfunc=always_succeed)
-.EE
-
-.IP
-.B batch_key
-The
-.B batch_key
-keyword argument can be used
-to specify that the Action can create multiple target files
-by processing multiple independent source files simultaneously.
-(The canonical example is "batch compilation"
-of multiple object files
-by passing multiple source files
-to a single invocation of a compiler
-such as Microsoft's Visual C / C++ compiler.)
-If the
-.B batch_key
-argument is any non-False, non-callable Python value,
-the configured Action object will cause
-.B scons
-to collect all targets built with the Action object
-and configured with the same construction environment
-into single invocations of the Action object's
-command line or function.
-Command lines will typically want to use the
-.BR CHANGED_SOURCES
-construction variable
-(and possibly
-.BR CHANGED_TARGETS
-as well)
-to only pass to the command line those sources that
-have actually changed since their targets were built.
-
-Example:
-
-.ES
-a = Action('build $CHANGED_SOURCES', batch_key=True)
-.EE
-
-The
-.B batch_key
-argument may also be
-a callable function
-that returns a key that
-will be used to identify different
-"batches" of target files to be collected
-for batch building.
-A
-.B batch_key
-function must take the following arguments:
-
-.IP action
-The action object.
-
-.IP env
-The construction environment
-configured for the target.
-
-.IP target
-The list of targets for a particular configured action.
-
-.IP source
-The list of source for a particular configured action.
-
-The returned key should typically
-be a tuple of values derived from the arguments,
-using any appropriate logic to decide
-how multiple invocations should be batched.
-For example, a
-.B batch_key
-function may decide to return
-the value of a specific construction
-variable from the
-.B env
-argument
-which will cause
-.B scons
-to batch-build targets
-with matching values of that variable,
-or perhaps return the
-.BR id ()
-of the entire construction environment,
-in which case
-.B scons
-will batch-build
-all targets configured with the same construction environment.
-Returning
-.B None
-indicates that
-the particular target should
-.I not
-be part of any batched build,
-but instead will be built
-by a separate invocation of action's
-command or function.
-Example:
-
-.ES
-def batch_key(action, env, target, source):
- tdir = target[0].dir
- if tdir.name == 'special':
- # Don't batch-build any target
- # in the special/ subdirectory.
- return None
- return (id(action), id(env), tdir)
-a = Action('build $CHANGED_SOURCES', batch_key=batch_key)
-.EE
-
-.SS Miscellaneous Action Functions
-
-.B scons
-supplies a number of functions
-that arrange for various common
-file and directory manipulations
-to be performed.
-These are similar in concept to "tasks" in the
-Ant build tool,
-although the implementation is slightly different.
-These functions do not actually
-perform the specified action
-at the time the function is called,
-but instead return an Action object
-that can be executed at the
-appropriate time.
-(In Object-Oriented terminology,
-these are actually
-Action
-.I Factory
-functions
-that return Action objects.)
-
-In practice,
-there are two natural ways
-that these
-Action Functions
-are intended to be used.
-
-First,
-if you need
-to perform the action
-at the time the SConscript
-file is being read,
-you can use the
-.B Execute
-global function to do so:
-.ES
-Execute(Touch('file'))
-.EE
-
-Second,
-you can use these functions
-to supply Actions in a list
-for use by the
-.B Command
-method.
-This can allow you to
-perform more complicated
-sequences of file manipulation
-without relying
-on platform-specific
-external commands:
-that
-.ES
-env = Environment(TMPBUILD = '/tmp/builddir')
-env.Command('foo.out', 'foo.in',
- [Mkdir('$TMPBUILD'),
- Copy('$TMPBUILD', '${SOURCE.dir}'),
- "cd $TMPBUILD && make",
- Delete('$TMPBUILD')])
-.EE
-
-.TP
-.RI Chmod( dest ", " mode )
-Returns an Action object that
-changes the permissions on the specified
-.I dest
-file or directory to the specified
-.IR mode .
-Examples:
-
-.ES
-Execute(Chmod('file', 0755))
-
-env.Command('foo.out', 'foo.in',
- [Copy('$TARGET', '$SOURCE'),
- Chmod('$TARGET', 0755)])
-.EE
-
-.TP
-.RI Copy( dest ", " src )
-Returns an Action object
-that will copy the
-.I src
-source file or directory to the
-.I dest
-destination file or directory.
-Examples:
-
-.ES
-Execute(Copy('foo.output', 'foo.input'))
-
-env.Command('bar.out', 'bar.in',
- Copy('$TARGET', '$SOURCE'))
-.EE
-
-.TP
-.RI Delete( entry ", [" must_exist ])
-Returns an Action that
-deletes the specified
-.IR entry ,
-which may be a file or a directory tree.
-If a directory is specified,
-the entire directory tree
-will be removed.
-If the
-.I must_exist
-flag is set,
-then a Python error will be thrown
-if the specified entry does not exist;
-the default is
-.BR must_exist=0 ,
-that is, the Action will silently do nothing
-if the entry does not exist.
-Examples:
-
-.ES
-Execute(Delete('/tmp/buildroot'))
-
-env.Command('foo.out', 'foo.in',
- [Delete('${TARGET.dir}'),
- MyBuildAction])
-
-Execute(Delete('file_that_must_exist', must_exist=1))
-.EE
-
-.TP
-.RI Mkdir( dir )
-Returns an Action
-that creates the specified
-directory
-.I dir .
-Examples:
-
-.ES
-Execute(Mkdir('/tmp/outputdir'))
-
-env.Command('foo.out', 'foo.in',
- [Mkdir('/tmp/builddir'),
- Copy('/tmp/builddir/foo.in', '$SOURCE'),
- "cd /tmp/builddir && make",
- Copy('$TARGET', '/tmp/builddir/foo.out')])
-.EE
-
-.TP
-.RI Move( dest ", " src )
-Returns an Action
-that moves the specified
-.I src
-file or directory to
-the specified
-.I dest
-file or directory.
-Examples:
-
-.ES
-Execute(Move('file.destination', 'file.source'))
-
-env.Command('output_file', 'input_file',
- [MyBuildAction,
- Move('$TARGET', 'file_created_by_MyBuildAction')])
-.EE
-
-.TP
-.RI Touch( file )
-Returns an Action
-that updates the modification time
-on the specified
-.IR file .
-Examples:
-
-.ES
-Execute(Touch('file_to_be_touched'))
-
-env.Command('marker', 'input_file',
- [MyBuildAction,
- Touch('$TARGET')])
-.EE
-
-.SS Variable Substitution
-
-Before executing a command,
-.B scons
-performs construction variable interpolation on the strings that make up
-the command line of builders.
-Variables are introduced by a
-.B $
-prefix.
-Besides construction variables, scons provides the following
-variables for each command execution:
-
-.IP CHANGED_SOURCES
-The file names of all sources of the build command
-that have changed since the target was last built.
-
-.IP CHANGED_TARGETS
-The file names of all targets that would be built
-from sources that have changed since the target was last built.
-
-.IP SOURCE
-The file name of the source of the build command,
-or the file name of the first source
-if multiple sources are being built.
-
-.IP SOURCES
-The file names of the sources of the build command.
-
-.IP TARGET
-The file name of the target being built,
-or the file name of the first target
-if multiple targets are being built.
-
-.IP TARGETS
-The file names of all targets being built.
-
-.IP UNCHANGED_SOURCES
-The file names of all sources of the build command
-that have
-.I not
-changed since the target was last built.
-
-.IP UNCHANGED_TARGETS
-The file names of all targets that would be built
-from sources that have
-.I not
-changed since the target was last built.
-
-(Note that the above variables are reserved
-and may not be set in a construction environment.)
-
-.LP
-For example, given the construction variable CC='cc', targets=['foo'], and
-sources=['foo.c', 'bar.c']:
-
-.ES
-action='$CC -c -o $TARGET $SOURCES'
-.EE
-
-would produce the command line:
-
-.ES
-cc -c -o foo foo.c bar.c
-.EE
-
-Variable names may be surrounded by curly braces ({})
-to separate the name from the trailing characters.
-Within the curly braces, a variable name may have
-a Python slice subscript appended to select one
-or more items from a list.
-In the previous example, the string:
-
-.ES
-${SOURCES[1]}
-.EE
-
-would produce:
-
-.ES
-bar.c
-.EE
-
-Additionally, a variable name may
-have the following special
-modifiers appended within the enclosing curly braces
-to modify the interpolated string:
-
-.IP base
-The base path of the file name,
-including the directory path
-but excluding any suffix.
-
-.IP dir
-The name of the directory in which the file exists.
-
-.IP file
-The file name,
-minus any directory portion.
-
-.IP filebase
-Just the basename of the file,
-minus any suffix
-and minus the directory.
-
-.IP suffix
-Just the file suffix.
-
-.IP abspath
-The absolute path name of the file.
-
-.IP posix
-The POSIX form of the path,
-with directories separated by
-.B /
-(forward slashes)
-not backslashes.
-This is sometimes necessary on Windows systems
-when a path references a file on other (POSIX) systems.
-
-.IP srcpath
-The directory and file name to the source file linked to this file through
-.BR VariantDir ().
-If this file isn't linked,
-it just returns the directory and filename unchanged.
-
-.IP srcdir
-The directory containing the source file linked to this file through
-.BR VariantDir ().
-If this file isn't linked,
-it just returns the directory part of the filename.
-
-.IP rsrcpath
-The directory and file name to the source file linked to this file through
-.BR VariantDir ().
-If the file does not exist locally but exists in a Repository,
-the path in the Repository is returned.
-If this file isn't linked, it just returns the
-directory and filename unchanged.
-
-.IP rsrcdir
-The Repository directory containing the source file linked to this file through
-.BR VariantDir ().
-If this file isn't linked,
-it just returns the directory part of the filename.
-
-.LP
-For example, the specified target will
-expand as follows for the corresponding modifiers:
-
-.ES
-$TARGET => sub/dir/file.x
-${TARGET.base} => sub/dir/file
-${TARGET.dir} => sub/dir
-${TARGET.file} => file.x
-${TARGET.filebase} => file
-${TARGET.suffix} => .x
-${TARGET.abspath} => /top/dir/sub/dir/file.x
-
-SConscript('src/SConscript', variant_dir='sub/dir')
-$SOURCE => sub/dir/file.x
-${SOURCE.srcpath} => src/file.x
-${SOURCE.srcdir} => src
-
-Repository('/usr/repository')
-$SOURCE => sub/dir/file.x
-${SOURCE.rsrcpath} => /usr/repository/src/file.x
-${SOURCE.rsrcdir} => /usr/repository/src
-.EE
-
-Note that curly braces braces may also be used
-to enclose arbitrary Python code to be evaluated.
-(In fact, this is how the above modifiers are substituted,
-they are simply attributes of the Python objects
-that represent TARGET, SOURCES, etc.)
-See the section "Python Code Substitution" below,
-for more thorough examples of
-how this can be used.
-
-Lastly, a variable name
-may be a callable Python function
-associated with a
-construction variable in the environment.
-The function should
-take four arguments:
-.I target
-- a list of target nodes,
-.I source
-- a list of source nodes,
-.I env
-- the construction environment,
-.I for_signature
-- a Boolean value that specifies
-whether the function is being called
-for generating a build signature.
-SCons will insert whatever
-the called function returns
-into the expanded string:
-
-.ES
-def foo(target, source, env, for_signature):
- return "bar"
-
-# Will expand $BAR to "bar baz"
-env=Environment(FOO=foo, BAR="$FOO baz")
-.EE
-
-You can use this feature to pass arguments to a
-Python function by creating a callable class
-that stores one or more arguments in an object,
-and then uses them when the
-.B __call__()
-method is called.
-Note that in this case,
-the entire variable expansion must
-be enclosed by curly braces
-so that the arguments will
-be associated with the
-instantiation of the class:
-
-.ES
-class foo(object):
- def __init__(self, arg):
- self.arg = arg
-
- def __call__(self, target, source, env, for_signature):
- return self.arg + " bar"
-
-# Will expand $BAR to "my argument bar baz"
-env=Environment(FOO=foo, BAR="${FOO('my argument')} baz")
-.EE
-
-.LP
-The special pseudo-variables
-.B "$("
-and
-.B "$)"
-may be used to surround parts of a command line
-that may change
-.I without
-causing a rebuild--that is,
-which are not included in the signature
-of target files built with this command.
-All text between
-.B "$("
-and
-.B "$)"
-will be removed from the command line
-before it is added to file signatures,
-and the
-.B "$("
-and
-.B "$)"
-will be removed before the command is executed.
-For example, the command line:
-
-.ES
-echo Last build occurred $( $TODAY $). > $TARGET
-.EE
-
-.LP
-would execute the command:
-
-.ES
-echo Last build occurred $TODAY. > $TARGET
-.EE
-
-.LP
-but the command signature added to any target files would be:
-
-.ES
-echo Last build occurred . > $TARGET
-.EE
-
-.SS Python Code Substitution
-
-Any python code within
-.BR "${" - "}"
-pairs gets evaluated by python 'eval', with the python globals set to
-the current environment's set of construction variables.
-So in the following case:
-.ES
-env['COND'] = 0
-env.Command('foo.out', 'foo.in',
- '''echo ${COND==1 and 'FOO' or 'BAR'} > $TARGET''')
-.EE
-the command executed will be either
-.ES
-echo FOO > foo.out
-.EE
-or
-.ES
-echo BAR > foo.out
-.EE
-according to the current value of env['COND'] when the command is
-executed. The evaluation occurs when the target is being
-built, not when the SConscript is being read. So if env['COND'] is changed
-later in the SConscript, the final value will be used.
-
-Here's a more interesting example. Note that all of COND, FOO, and
-BAR are environment variables, and their values are substituted into
-the final command. FOO is a list, so its elements are interpolated
-separated by spaces.
-
-.ES
-env=Environment()
-env['COND'] = 0
-env['FOO'] = ['foo1', 'foo2']
-env['BAR'] = 'barbar'
-env.Command('foo.out', 'foo.in',
- 'echo ${COND==1 and FOO or BAR} > $TARGET')
-
-# Will execute this:
-# echo foo1 foo2 > foo.out
-.EE
-
-SCons uses the following rules when converting construction variables into
-command lines:
-
-.IP String
-When the value is a string it is interpreted as a space delimited list of
-command line arguments.
-
-.IP List
-When the value is a list it is interpreted as a list of command line
-arguments. Each element of the list is converted to a string.
-
-.IP Other
-Anything that is not a list or string is converted to a string and
-interpreted as a single command line argument.
-
-.IP Newline
-Newline characters (\\n) delimit lines. The newline parsing is done after
-all other parsing, so it is not possible for arguments (e.g. file names) to
-contain embedded newline characters. This limitation will likely go away in
-a future version of SCons.
-
-.SS Scanner Objects
-
-You can use the
-.B Scanner
-function to define
-objects to scan
-new file types for implicit dependencies.
-The
-.B Scanner
-function accepts the following arguments:
-
-.IP function
-This can be either:
-1) a Python function that will process
-the Node (file)
-and return a list of File Nodes
-representing the implicit
-dependencies (file names) found in the contents;
-or:
-2) a dictionary that maps keys
-(typically the file suffix, but see below for more discussion)
-to other Scanners that should be called.
-
-If the argument is actually a Python function,
-the function must take three or four arguments:
-
- def scanner_function(node, env, path):
-
- def scanner_function(node, env, path, arg=None):
-
-The
-.B node
-argument is the internal
-SCons node representing the file.
-Use
-.B str(node)
-to fetch the name of the file, and
-.B node.get_contents()
-to fetch contents of the file.
-Note that the file is
-.I not
-guaranteed to exist before the scanner is called,
-so the scanner function should check that
-if there's any chance that the scanned file
-might not exist
-(for example, if it's built from other files).
-
-The
-.B env
-argument is the construction environment for the scan.
-Fetch values from it using the
-.B env.Dictionary()
-method.
-
-The
-.B path
-argument is a tuple (or list)
-of directories that can be searched
-for files.
-This will usually be the tuple returned by the
-.B path_function
-argument (see below).
-
-The
-.B arg
-argument is the argument supplied
-when the scanner was created, if any.
-
-.IP name
-The name of the Scanner.
-This is mainly used
-to identify the Scanner internally.
-
-.IP argument
-An optional argument that, if specified,
-will be passed to the scanner function
-(described above)
-and the path function
-(specified below).
-
-.IP skeys
-An optional list that can be used to
-determine which scanner should be used for
-a given Node.
-In the usual case of scanning for file names,
-this argument will be a list of suffixes
-for the different file types that this
-Scanner knows how to scan.
-If the argument is a string,
-then it will be expanded
-into a list by the current environment.
-
-.IP path_function
-A Python function that takes four or five arguments:
-a construction environment,
-a Node for the directory containing
-the SConscript file in which
-the first target was defined,
-a list of target nodes,
-a list of source nodes,
-and an optional argument supplied
-when the scanner was created.
-The
-.B path_function
-returns a tuple of directories
-that can be searched for files to be returned
-by this Scanner object.
-(Note that the
-.BR FindPathDirs ()
-function can be used to return a ready-made
-.B path_function
-for a given construction variable name,
-instead of having to write your own function from scratch.)
-
-.IP node_class
-The class of Node that should be returned
-by this Scanner object.
-Any strings or other objects returned
-by the scanner function
-that are not of this class
-will be run through the
-.B node_factory
-function.
-
-.IP node_factory
-A Python function that will take a string
-or other object
-and turn it into the appropriate class of Node
-to be returned by this Scanner object.
-
-.IP scan_check
-An optional Python function that takes two arguments,
-a Node (file) and a construction environment,
-and returns whether the
-Node should, in fact,
-be scanned for dependencies.
-This check can be used to eliminate unnecessary
-calls to the scanner function when,
-for example, the underlying file
-represented by a Node does not yet exist.
-
-.IP recursive
-An optional flag that
-specifies whether this scanner should be re-invoked
-on the dependency files returned by the scanner.
-When this flag is not set,
-the Node subsystem will
-only invoke the scanner on the file being scanned,
-and not (for example) also on the files
-specified by the #include lines
-in the file being scanned.
-.I recursive
-may be a callable function,
-in which case it will be called with a list of
-Nodes found and
-should return a list of Nodes
-that should be scanned recursively;
-this can be used to select a specific subset of
-Nodes for additional scanning.
-
-.RE
-Note that
-.B scons
-has a global
-.B SourceFileScanner
-object that is used by
-the
-.BR Object (),
-.BR SharedObject (),
-and
-.BR StaticObject ()
-builders to decide
-which scanner should be used
-for different file extensions.
-You can using the
-.BR SourceFileScanner.add_scanner ()
-method to add your own Scanner object
-to the
-.B scons
-infrastructure
-that builds target programs or
-libraries from a list of
-source files of different types:
-
-.ES
-def xyz_scan(node, env, path):
- contents = node.get_text_contents()
- # Scan the contents and return the included files.
-
-XYZScanner = Scanner(xyz_scan)
-
-SourceFileScanner.add_scanner('.xyz', XYZScanner)
-
-env.Program('my_prog', ['file1.c', 'file2.f', 'file3.xyz'])
-.EE
-
-.SH SYSTEM-SPECIFIC BEHAVIOR
-SCons and its configuration files are very portable,
-due largely to its implementation in Python.
-There are, however, a few portability
-issues waiting to trap the unwary.
-.SS .C file suffix
-SCons handles the upper-case
-.B .C
-file suffix differently,
-depending on the capabilities of
-the underlying system.
-On a case-sensitive system
-such as Linux or UNIX,
-SCons treats a file with a
-.B .C
-suffix as a C++ source file.
-On a case-insensitive system
-such as Windows,
-SCons treats a file with a
-.B .C
-suffix as a C source file.
-.SS .F file suffix
-SCons handles the upper-case
-.B .F
-file suffix differently,
-depending on the capabilities of
-the underlying system.
-On a case-sensitive system
-such as Linux or UNIX,
-SCons treats a file with a
-.B .F
-suffix as a Fortran source file
-that is to be first run through
-the standard C preprocessor.
-On a case-insensitive system
-such as Windows,
-SCons treats a file with a
-.B .F
-suffix as a Fortran source file that should
-.I not
-be run through the C preprocessor.
-.SS Windows: Cygwin Tools and Cygwin Python vs. Windows Pythons
-Cygwin supplies a set of tools and utilities
-that let users work on a
-Windows system using a more POSIX-like environment.
-The Cygwin tools, including Cygwin Python,
-do this, in part,
-by sharing an ability to interpret UNIX-like path names.
-For example, the Cygwin tools
-will internally translate a Cygwin path name
-like /cygdrive/c/mydir
-to an equivalent Windows pathname
-of C:/mydir (equivalent to C:\\mydir).
-
-Versions of Python
-that are built for native Windows execution,
-such as the python.org and ActiveState versions,
-do not have the Cygwin path name semantics.
-This means that using a native Windows version of Python
-to build compiled programs using Cygwin tools
-(such as gcc, bison, and flex)
-may yield unpredictable results.
-"Mixing and matching" in this way
-can be made to work,
-but it requires careful attention to the use of path names
-in your SConscript files.
-
-In practice, users can sidestep
-the issue by adopting the following rules:
-When using gcc,
-use the Cygwin-supplied Python interpreter
-to run SCons;
-when using Microsoft Visual C/C++
-(or some other Windows compiler)
-use the python.org or ActiveState version of Python
-to run SCons.
-.SS Windows: scons.bat file
-On Windows systems,
-SCons is executed via a wrapper
-.B scons.bat
-file.
-This has (at least) two ramifications:
-
-First, Windows command-line users
-that want to use variable assignment
-on the command line
-may have to put double quotes
-around the assignments:
-
-.ES
-scons "FOO=BAR" "BAZ=BLEH"
-.EE
-
-Second, the Cygwin shell does not
-recognize this file as being the same
-as an
-.B scons
-command issued at the command-line prompt.
-You can work around this either by
-executing
-.B scons.bat
-from the Cygwin command line,
-or by creating a wrapper shell
-script named
-.B scons .
-
-.SS MinGW
-
-The MinGW bin directory must be in your PATH environment variable or the
-PATH variable under the ENV construction variable for SCons
-to detect and use the MinGW tools. When running under the native Windows
-Python interpreter, SCons will prefer the MinGW tools over the Cygwin
-tools, if they are both installed, regardless of the order of the bin
-directories in the PATH variable. If you have both MSVC and MinGW
-installed and you want to use MinGW instead of MSVC,
-then you must explictly tell SCons to use MinGW by passing
-
-.ES
-tools=['mingw']
-.EE
-
-to the Environment() function, because SCons will prefer the MSVC tools
-over the MinGW tools.
-
-.SH EXAMPLES
-
-To help you get started using SCons,
-this section contains a brief overview of some common tasks.
-
-.SS Basic Compilation From a Single Source File
-
-.ES
-env = Environment()
-env.Program(target = 'foo', source = 'foo.c')
-.EE
-
-Note: Build the file by specifying
-the target as an argument
-("scons foo" or "scons foo.exe").
-or by specifying a dot ("scons .").
-
-.SS Basic Compilation From Multiple Source Files
-
-.ES
-env = Environment()
-env.Program(target = 'foo', source = Split('f1.c f2.c f3.c'))
-.EE
-
-.SS Setting a Compilation Flag
-
-.ES
-env = Environment(CCFLAGS = '-g')
-env.Program(target = 'foo', source = 'foo.c')
-.EE
-
-.SS Search The Local Directory For .h Files
-
-Note: You do
-.I not
-need to set CCFLAGS to specify -I options by hand.
-SCons will construct the right -I options from CPPPATH.
-
-.ES
-env = Environment(CPPPATH = ['.'])
-env.Program(target = 'foo', source = 'foo.c')
-.EE
-
-.SS Search Multiple Directories For .h Files
-
-.ES
-env = Environment(CPPPATH = ['include1', 'include2'])
-env.Program(target = 'foo', source = 'foo.c')
-.EE
-
-.SS Building a Static Library
-
-.ES
-env = Environment()
-env.StaticLibrary(target = 'foo', source = Split('l1.c l2.c'))
-env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c'])
-.EE
-
-.SS Building a Shared Library
-
-.ES
-env = Environment()
-env.SharedLibrary(target = 'foo', source = ['l5.c', 'l6.c'])
-env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c'))
-.EE
-
-.SS Linking a Local Library Into a Program
-
-.ES
-env = Environment(LIBS = 'mylib', LIBPATH = ['.'])
-env.Library(target = 'mylib', source = Split('l1.c l2.c'))
-env.Program(target = 'prog', source = ['p1.c', 'p2.c'])
-.EE
-
-.SS Defining Your Own Builder Object
-
-Notice that when you invoke the Builder,
-you can leave off the target file suffix,
-and SCons will add it automatically.
-
-.ES
-bld = Builder(action = 'pdftex < $SOURCES > $TARGET'
- suffix = '.pdf',
- src_suffix = '.tex')
-env = Environment(BUILDERS = {'PDFBuilder' : bld})
-env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex')
-
-# The following creates "bar.pdf" from "bar.tex"
-env.PDFBuilder(target = 'bar', source = 'bar')
-.EE
-
-Note also that the above initialization
-overwrites the default Builder objects,
-so the Environment created above
-can not be used call Builders like env.Program(),
-env.Object(), env.StaticLibrary(), etc.
-
-.SS Adding Your Own Builder Object to an Environment
-
-.ES
-bld = Builder(action = 'pdftex < $SOURCES > $TARGET'
- suffix = '.pdf',
- src_suffix = '.tex')
-env = Environment()
-env.Append(BUILDERS = {'PDFBuilder' : bld})
-env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex')
-env.Program(target = 'bar', source = 'bar.c')
-.EE
-
-You also can use other Pythonic techniques to add
-to the BUILDERS construction variable, such as:
-
-.ES
-env = Environment()
-env['BUILDERS]['PDFBuilder'] = bld
-.EE
-
-.SS Defining Your Own Scanner Object
-
-The following example shows an extremely simple scanner (the
-.BR kfile_scan ()
-function)
-that doesn't use a search path at all
-and simply returns the
-file names present on any
-.B include
-lines in the scanned file.
-This would implicitly assume that all included
-files live in the top-level directory:
-
-.ES
-import re
-
-'\" Note: the \\ in the following are for the benefit of nroff/troff,
-'\" not inappropriate doubled escape characters within the r'' raw string.
-include_re = re.compile(r'^include\\s+(\\S+)$', re.M)
-
-def kfile_scan(node, env, path, arg):
- contents = node.get_text_contents()
- includes = include_re.findall(contents)
- return env.File(includes)
-
-kscan = Scanner(name = 'kfile',
- function = kfile_scan,
- argument = None,
- skeys = ['.k'])
-scanners = Environment().Dictionary('SCANNERS')
-env = Environment(SCANNERS = scanners + [kscan])
-
-env.Command('foo', 'foo.k', 'kprocess < $SOURCES > $TARGET')
-
-bar_in = File('bar.in')
-env.Command('bar', bar_in, 'kprocess $SOURCES > $TARGET')
-bar_in.target_scanner = kscan
-.EE
-
-It is important to note that you
-have to return a list of File nodes from the scan function, simple
-strings for the file names won't do. As in the examples we are showing here,
-you can use the
-.BR File()
-function of your current Environment in order to create nodes on the fly from
-a sequence of file names with relative paths.
-
-Here is a similar but more complete example that searches
-a path of directories
-(specified as the
-.B MYPATH
-construction variable)
-for files that actually exist:
-
-.ES
-import re
-import os
-include_re = re.compile(r'^include\\s+(\\S+)$', re.M)
-
-def my_scan(node, env, path, arg):
- contents = node.get_text_contents()
- includes = include_re.findall(contents)
- if includes == []:
- return []
- results = []
- for inc in includes:
- for dir in path:
- file = str(dir) + os.sep + inc
- if os.path.exists(file):
- results.append(file)
- break
- return env.File(results)
-
-scanner = Scanner(name = 'myscanner',
- function = my_scan,
- argument = None,
- skeys = ['.x'],
- path_function = FindPathDirs('MYPATH')
- )
-scanners = Environment().Dictionary('SCANNERS')
-env = Environment(SCANNERS = scanners + [scanner],
- MYPATH = ['incs'])
-
-env.Command('foo', 'foo.x', 'xprocess < $SOURCES > $TARGET')
-.EE
-
-The
-.BR FindPathDirs ()
-function used in the previous example returns a function
-(actually a callable Python object)
-that will return a list of directories
-specified in the
-.B $MYPATH
-construction variable. It lets SCons detect the file
-.B incs/foo.inc
-, even if
-.B foo.x
-contains the line
-.B include foo.inc
-only.
-If you need to customize how the search path is derived,
-you would provide your own
-.B path_function
-argument when creating the Scanner object,
-as follows:
-
-.ES
-# MYPATH is a list of directories to search for files in
-def pf(env, dir, target, source, arg):
- top_dir = Dir('#').abspath
- results = []
- if 'MYPATH' in env:
- for p in env['MYPATH']:
- results.append(top_dir + os.sep + p)
- return results
-
-scanner = Scanner(name = 'myscanner',
- function = my_scan,
- argument = None,
- skeys = ['.x'],
- path_function = pf
- )
-.EE
-
-.SS Creating a Hierarchical Build
-
-Notice that the file names specified in a subdirectory's
-SConscript
-file are relative to that subdirectory.
-
-.ES
-SConstruct:
-
- env = Environment()
- env.Program(target = 'foo', source = 'foo.c')
-
- SConscript('sub/SConscript')
-
-sub/SConscript:
-
- env = Environment()
- # Builds sub/foo from sub/foo.c
- env.Program(target = 'foo', source = 'foo.c')
-
- SConscript('dir/SConscript')
-
-sub/dir/SConscript:
-
- env = Environment()
- # Builds sub/dir/foo from sub/dir/foo.c
- env.Program(target = 'foo', source = 'foo.c')
-.EE
-
-.SS Sharing Variables Between SConscript Files
-
-You must explicitly Export() and Import() variables that
-you want to share between SConscript files.
-
-.ES
-SConstruct:
-
- env = Environment()
- env.Program(target = 'foo', source = 'foo.c')
-
- Export("env")
- SConscript('subdirectory/SConscript')
-
-subdirectory/SConscript:
-
- Import("env")
- env.Program(target = 'foo', source = 'foo.c')
-.EE
-
-.SS Building Multiple Variants From the Same Source
-
-Use the variant_dir keyword argument to
-the SConscript function to establish
-one or more separate variant build directory trees
-for a given source directory:
-
-.ES
-SConstruct:
-
- cppdefines = ['FOO']
- Export("cppdefines")
- SConscript('src/SConscript', variant_dir='foo')
-
- cppdefines = ['BAR']
- Export("cppdefines")
- SConscript('src/SConscript', variant_dir='bar')
-
-src/SConscript:
-
- Import("cppdefines")
- env = Environment(CPPDEFINES = cppdefines)
- env.Program(target = 'src', source = 'src.c')
-.EE
-
-Note the use of the Export() method
-to set the "cppdefines" variable to a different
-value each time we call the SConscript function.
-
-.SS Hierarchical Build of Two Libraries Linked With a Program
-
-.ES
-SConstruct:
-
- env = Environment(LIBPATH = ['#libA', '#libB'])
- Export('env')
- SConscript('libA/SConscript')
- SConscript('libB/SConscript')
- SConscript('Main/SConscript')
-
-libA/SConscript:
-
- Import('env')
- env.Library('a', Split('a1.c a2.c a3.c'))
-
-libB/SConscript:
-
- Import('env')
- env.Library('b', Split('b1.c b2.c b3.c'))
-
-Main/SConscript:
-
- Import('env')
- e = env.Copy(LIBS = ['a', 'b'])
- e.Program('foo', Split('m1.c m2.c m3.c'))
-.EE
-
-The '#' in the LIBPATH directories specify that they're relative to the
-top-level directory, so they don't turn into "Main/libA" when they're
-used in Main/SConscript.
-
-Specifying only 'a' and 'b' for the library names
-allows SCons to append the appropriate library
-prefix and suffix for the current platform
-(for example, 'liba.a' on POSIX systems,
-\&'a.lib' on Windows).
-
-.SS Customizing construction variables from the command line.
-
-The following would allow the C compiler to be specified on the command
-line or in the file custom.py.
-
-.ES
-vars = Variables('custom.py')
-vars.Add('CC', 'The C compiler.')
-env = Environment(variables=vars)
-Help(vars.GenerateHelpText(env))
-.EE
-
-The user could specify the C compiler on the command line:
-
-.ES
-scons "CC=my_cc"
-.EE
-
-or in the custom.py file:
-
-.ES
-CC = 'my_cc'
-.EE
-
-or get documentation on the options:
-
-.ES
-$ scons -h
-
-CC: The C compiler.
- default: None
- actual: cc
-
-.EE
-
-.SS Using Microsoft Visual C++ precompiled headers
-
-Since windows.h includes everything and the kitchen sink, it can take quite
-some time to compile it over and over again for a bunch of object files, so
-Microsoft provides a mechanism to compile a set of headers once and then
-include the previously compiled headers in any object file. This
-technology is called precompiled headers. The general recipe is to create a
-file named "StdAfx.cpp" that includes a single header named "StdAfx.h", and
-then include every header you want to precompile in "StdAfx.h", and finally
-include "StdAfx.h" as the first header in all the source files you are
-compiling to object files. For example:
-
-StdAfx.h:
-.ES
-#include <windows.h>
-#include <my_big_header.h>
-.EE
-
-StdAfx.cpp:
-.ES
-#include <StdAfx.h>
-.EE
-
-Foo.cpp:
-.ES
-#include <StdAfx.h>
-
-/* do some stuff */
-.EE
-
-Bar.cpp:
-.ES
-#include <StdAfx.h>
-
-/* do some other stuff */
-.EE
-
-SConstruct:
-.ES
-env=Environment()
-env['PCHSTOP'] = 'StdAfx.h'
-env['PCH'] = env.PCH('StdAfx.cpp')[0]
-env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
-.EE
-
-For more information see the document for the PCH builder, and the PCH and
-PCHSTOP construction variables. To learn about the details of precompiled
-headers consult the MSDN documention for /Yc, /Yu, and /Yp.
-
-.SS Using Microsoft Visual C++ external debugging information
-
-Since including debugging information in programs and shared libraries can
-cause their size to increase significantly, Microsoft provides a mechanism
-for including the debugging information in an external file called a PDB
-file. SCons supports PDB files through the PDB construction
-variable.
-
-SConstruct:
-.ES
-env=Environment()
-env['PDB'] = 'MyApp.pdb'
-env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
-.EE
-
-For more information see the document for the PDB construction variable.
-
-.SH ENVIRONMENT
-
-.IP SCONS_LIB_DIR
-Specifies the directory that contains the SCons Python module directory
-(e.g. /home/aroach/scons-src-0.01/src/engine).
-
-.IP SCONSFLAGS
-A string of options that will be used by scons in addition to those passed
-on the command line.
-
-.SH "SEE ALSO"
-.B scons
-User Manual,
-.B scons
-Design Document,
-.B scons
-source code.
-
-.SH AUTHORS
-Steven Knight <knight@baldmt.com>
-.br
-Anthony Roach <aroach@electriceyeball.com>
-
diff --git a/doc/man/scons.css b/doc/man/scons.css
new file mode 100644
index 0000000..6941abb
--- /dev/null
+++ b/doc/man/scons.css
@@ -0,0 +1,263 @@
+body {
+ background: #ffffff;
+ margin: 10px;
+ padding: 0;
+ font-family:palatino, georgia, verdana, arial, sans-serif;
+ }
+
+
+a {
+ color: #80572a;
+ }
+
+a:hover {
+ color: #d72816;
+ text-decoration: none;
+ }
+
+tt {
+ color: #a14447;
+ }
+
+pre {
+ background: #e0e0e0;
+ }
+
+#main {
+ border: 1px solid;
+ border-color: black;
+ background-color: white;
+ background-image: url(../images/sconsback.png);
+ background-repeat: repeat-y 50% 0;
+ background-position: right top;
+ margin: 30px auto;
+ width: 750px;
+ }
+
+#banner {
+ background-image: url(../images/scons-banner.jpg);
+ border-bottom: 1px solid;
+ height: 95px;
+ }
+
+#menu {
+ font-family: sans-serif;
+ font-size: small;
+ line-height: 0.9em;
+ float: right;
+ width: 220px;
+ clear: both;
+ margin-top: 10px;
+ }
+
+#menu li {
+ margin-bottom: 7px;
+ }
+
+#menu li li {
+ margin-bottom: 2px;
+ }
+
+#menu li.submenuitems {
+ margin-bottom: 2px;
+ }
+
+#menu a {
+ text-decoration: none;
+ }
+
+#footer {
+ border-top: 1px solid black;
+ text-align: center;
+ font-size: small;
+ color: #822;
+ margin-top: 4px;
+ background: #eee;
+ }
+
+ul.hack {
+ list-style-position:inside;
+ }
+
+ul.menuitems {
+ list-style-type: none;
+ }
+
+ul.submenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ul.subsubmenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ol.upper-roman {
+ list-style-type: upper-roman;
+ }
+
+ol.decimal {
+ list-style-type: decimal;
+ }
+
+#currentpage {
+ font-weight: bold;
+ }
+
+#bodycontent {
+ margin: 15px;
+ width: 520px;
+ font-size: small;
+ line-height: 1.5em;
+ }
+
+#bodycontent li {
+ margin-bottom: 6px;
+ list-style-type: square;
+ }
+
+#sconsdownloadtable downloadtable {
+ display: table;
+ margin-left: 5%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdownloadtable downloadrow {
+ display: table-row;
+ }
+
+#sconsdownloadtable downloadentry {
+ display: table-cell;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdownloadtable downloaddescription {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdownloadtable downloadversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#sconsdocversiontable sconsversiontable {
+ display: table;
+ margin-left: 10%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdocversiontable sconsversionrow {
+ display: table-row;
+ }
+
+#sconsdocversiontable docformat {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdocversiontable sconsversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdocversiontable docversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#osrating {
+ margin-left: 35px;
+ }
+
+
+h2 {
+ color: #272;
+ color: #c01714;
+ font-family: sans-serif;
+ font-weight: normal;
+ }
+
+h2.pagetitle {
+ font-size: xx-large;
+ }
+h3 {
+ margin-bottom: 10px;
+ }
+
+.date {
+ font-size: small;
+ color: gray;
+ }
+
+.link {
+ margin-bottom: 22px;
+ }
+
+.linkname {
+ }
+
+.linkdesc {
+ margin: 10px;
+ margin-top: 0;
+ }
+
+.quote {
+ margin-top: 20px;
+ margin-bottom: 10px;
+ background: #f8f8f8;
+ border: 1px solid;
+ border-color: #ddd;
+ }
+
+.quotetitle {
+ font-weight: bold;
+ font-size: large;
+ margin: 10px;
+ }
+
+.quotedesc {
+ margin-left: 20px;
+ margin-right: 10px;
+ margin-bottom: 15px;
+ }
+
+.quotetext {
+ margin-top: 20px;
+ margin-left: 20px;
+ margin-right: 10px;
+ font-style: italic;
+ }
+
+.quoteauthor {
+ font-size: small;
+ text-align: right;
+ margin-top: 10px;
+ margin-right: 7px;
+ }
+
+.sconslogo {
+ font-style: normal;
+ font-weight: bold;
+ color: #822;
+ }
+
+.downloadlink {
+ }
+
+.downloaddescription {
+ margin-left: 1em;
+ margin-bottom: 0.4em;
+ }
diff --git a/doc/man/scons.xml b/doc/man/scons.xml
new file mode 100644
index 0000000..d9bd74d
--- /dev/null
+++ b/doc/man/scons.xml
@@ -0,0 +1,7101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE reference [
+<!ENTITY % version SYSTEM "../version.xml">
+%version;
+<!ENTITY % scons SYSTEM '../scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../generated/variables.mod'>
+%variables-mod;
+]>
+<!-- lifted from troff+man by doclifter -->
+<reference xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<!-- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation -->
+
+<!-- Permission is hereby granted, free of charge, to any person obtaining -->
+<!-- a copy of this software and associated documentation files (the -->
+<!-- "Software"), to deal in the Software without restriction, including -->
+<!-- without limitation the rights to use, copy, modify, merge, publish, -->
+<!-- distribute, sublicense, and/or sell copies of the Software, and to -->
+<!-- permit persons to whom the Software is furnished to do so, subject to -->
+<!-- the following conditions: -->
+
+<!-- The above copyright notice and this permission notice shall be included -->
+<!-- in all copies or substantial portions of the Software. -->
+
+<!-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -->
+<!-- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -->
+<!-- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -->
+<!-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -->
+<!-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -->
+<!-- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -->
+<!-- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
+
+<!-- doc/man/scons.xml 2014/03/02 14:18:15 garyo -->
+
+ <referenceinfo>
+ <title>SCons &buildversion;</title>
+ <subtitle>MAN page</subtitle>
+
+ <author>
+ <firstname>Steven</firstname>
+ <surname>Knight</surname>
+ </author>
+
+ <corpauthor>Steven Knight</corpauthor>
+
+ <pubdate>2004, 2005, 2006, 2007, 2008, 2009, 2010</pubdate>
+
+ <copyright>
+ <year>2004, 2005, 2006, 2007, 2008, 2009, 2010</year>
+ <holder>Steven Knight</holder>
+ </copyright>
+
+ <releaseinfo>version &buildversion;</releaseinfo>
+
+ <mediaobject role="cover"><imageobject><imagedata fileref="cover.jpg" format="JPG"/></imageobject></mediaobject>
+
+ </referenceinfo>
+
+ <title>SCons &buildversion;</title>
+ <subtitle>MAN page</subtitle>
+
+
+<refentry id='scons1'>
+<refmeta>
+<refentrytitle>SCONS</refentrytitle>
+<manvolnum>1</manvolnum>
+<refmiscinfo class='source'>March 2014</refmiscinfo>
+</refmeta>
+<refnamediv id='name'>
+<refname>scons</refname>
+<refpurpose>a software construction tool</refpurpose>
+</refnamediv>
+<!-- body begins here -->
+<refsynopsisdiv id='synopsis'>
+<cmdsynopsis>
+ <command>scons</command>
+ <arg choice='opt' rep='repeat'><replaceable>options</replaceable></arg>
+ <arg choice='opt' rep='repeat'><replaceable>name=val</replaceable></arg>
+ <arg choice='opt' rep='repeat'><replaceable>targets</replaceable></arg>
+</cmdsynopsis>
+</refsynopsisdiv>
+
+
+<refsect1 id='description'><title>DESCRIPTION</title>
+<para>The
+<command>scons</command>
+utility builds software (or other files) by determining which
+component pieces must be rebuilt and executing the necessary commands to
+rebuild them.</para>
+
+<para>By default,
+<command>scons</command>
+searches for a file named
+<emphasis>SConstruct</emphasis>,
+<emphasis>Sconstruct</emphasis>,
+or
+<emphasis>sconstruct</emphasis>
+(in that order) in the current directory and reads its
+configuration from the first file found.
+An alternate file name may be
+specified via the
+<option>-f</option>
+option.</para>
+
+<para>The
+<emphasis>SConstruct</emphasis>
+file can specify subsidiary
+configuration files using the
+<emphasis role="bold">SConscript</emphasis>()
+function.
+By convention,
+these subsidiary files are named
+<emphasis>SConscript</emphasis>,
+although any name may be used.
+(Because of this naming convention,
+the term "SConscript files"
+is sometimes used to refer
+generically to all
+<command>scons</command>
+configuration files,
+regardless of actual file name.)</para>
+
+<para>The configuration files
+specify the target files to be built, and
+(optionally) the rules to build those targets. Reasonable default
+rules exist for building common software components (executable
+programs, object files, libraries), so that for most software
+projects, only the target and input files need be specified.</para>
+
+<para>Before reading the
+<emphasis>SConstruct</emphasis>
+file,
+<command>scons</command>
+looks for a directory named
+<emphasis>site_scons</emphasis>
+in various system directories (see below) and the directory containing the
+<emphasis>SConstruct</emphasis>
+file; for each of those dirs which exists,
+<emphasis>site_scons</emphasis>
+is prepended to sys.path,
+the file
+<emphasis>site_scons/site_init.py</emphasis>,
+is evaluated if it exists,
+and the directory
+<emphasis>site_scons/site_tools</emphasis>
+is prepended to the default toolpath if it exists.
+See the
+<option>--no-site-dir</option>
+and
+<option>--site-dir</option>
+options for more details.</para>
+
+<para><command>scons</command>
+reads and executes the SConscript files as Python scripts,
+so you may use normal Python scripting capabilities
+(such as flow control, data manipulation, and imported Python libraries)
+to handle complicated build situations.
+<command>scons</command>,
+however, reads and executes all of the SConscript files
+<emphasis>before</emphasis>
+it begins building any targets.
+To make this obvious,
+<command>scons</command>
+prints the following messages about what it is doing:</para>
+
+<literallayout class="monospaced">
+$ scons foo.out
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+cp foo.in foo.out
+scons: done building targets.
+$
+</literallayout>
+
+<para>The status messages
+(everything except the line that reads "cp foo.in foo.out")
+may be suppressed using the
+<option>-Q</option>
+option.</para>
+
+<para><command>scons</command>
+does not automatically propagate
+the external environment used to execute
+<command>scons</command>
+to the commands used to build target files.
+This is so that builds will be guaranteed
+repeatable regardless of the environment
+variables set at the time
+<command>scons</command>
+is invoked.
+This also means that if the compiler or other commands
+that you want to use to build your target files
+are not in standard system locations,
+<command>scons</command>
+will not find them unless
+you explicitly set the PATH
+to include those locations.
+Whenever you create an
+<command>scons</command>
+construction environment,
+you can propagate the value of PATH
+from your external environment as follows:</para>
+
+<literallayout class="monospaced">
+import os
+env = Environment(ENV = {'PATH' : os.environ['PATH']})
+</literallayout>
+
+<para>Similarly, if the commands use external environment variables
+like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc.,
+these variables can also be explicitly propagated:</para>
+
+<literallayout class="monospaced">
+import os
+env = Environment(ENV = {'PATH' : os.environ['PATH'],
+ 'HOME' : os.environ['HOME']})
+</literallayout>
+
+<para>Or you may explicitly propagate the invoking user's
+complete external environment:</para>
+
+<literallayout class="monospaced">
+import os
+env = Environment(ENV = os.environ)
+</literallayout>
+
+<para>This comes at the expense of making your build
+dependent on the user's environment being set correctly,
+but it may be more convenient for many configurations.</para>
+
+<para><command>scons</command>
+can scan known input files automatically for dependency
+information (for example, #include statements
+in C or C++ files) and will rebuild dependent files appropriately
+whenever any "included" input file changes.
+<command>scons</command>
+supports the
+ability to define new scanners for unknown input file types.</para>
+
+<para><command>scons</command>
+knows how to fetch files automatically from
+SCCS or RCS subdirectories
+using SCCS, RCS or BitKeeper.</para>
+
+<para><command>scons</command>
+is normally executed in a top-level directory containing a
+<emphasis>SConstruct</emphasis>
+file, optionally specifying
+as command-line arguments
+the target file or files to be built.</para>
+
+<para>By default, the command</para>
+
+<literallayout class="monospaced">
+scons
+</literallayout>
+
+<para>will build all target files in or below the current directory.
+Explicit default targets
+(to be built when no targets are specified on the command line)
+may be defined the SConscript file(s)
+using the
+<emphasis role="bold">Default()</emphasis>
+function, described below.</para>
+
+<para>Even when
+<emphasis role="bold">Default()</emphasis>
+targets are specified in the SConscript file(s),
+all target files in or below the current directory
+may be built by explicitly specifying
+the current directory (.)
+as a command-line target:</para>
+
+<literallayout class="monospaced">
+scons .
+</literallayout>
+
+<para>Building all target files,
+including any files outside of the current directory,
+may be specified by supplying a command-line target
+of the root directory (on POSIX systems):</para>
+
+<literallayout class="monospaced">
+scons /
+</literallayout>
+
+<para>or the path name(s) of the volume(s) in which all the targets
+should be built (on Windows systems):</para>
+
+<literallayout class="monospaced">
+scons C:\ D:\
+</literallayout>
+
+<para>To build only specific targets,
+supply them as command-line arguments:</para>
+
+<literallayout class="monospaced">
+scons foo bar
+</literallayout>
+
+<para>in which case only the specified targets will be built
+(along with any derived files on which they depend).</para>
+
+<para>Specifying "cleanup" targets in SConscript files is not usually necessary.
+The
+<option>-c</option>
+flag removes all files
+necessary to build the specified target:</para>
+
+<literallayout class="monospaced">
+scons -c .
+</literallayout>
+
+<para>to remove all target files, or:</para>
+
+<literallayout class="monospaced">
+scons -c build export
+</literallayout>
+
+<para>to remove target files under build and export.
+Additional files or directories to remove can be specified using the
+<emphasis role="bold">Clean()</emphasis>
+function.
+Conversely, targets that would normally be removed by the
+<option>-c</option>
+invocation
+can be prevented from being removed by using the
+<emphasis role="bold">NoClean</emphasis>()
+function.</para>
+
+<para>A subset of a hierarchical tree may be built by
+remaining at the top-level directory (where the
+<emphasis>SConstruct</emphasis>
+file lives) and specifying the subdirectory as the target to be
+built:</para>
+
+<literallayout class="monospaced">
+scons src/subdir
+</literallayout>
+
+<para>or by changing directory and invoking scons with the
+<option>-u</option>
+option, which traverses up the directory
+hierarchy until it finds the
+<emphasis>SConstruct</emphasis>
+file, and then builds
+targets relatively to the current subdirectory:</para>
+
+<literallayout class="monospaced">
+cd src/subdir
+scons -u .
+</literallayout>
+
+<para><command>scons</command>
+supports building multiple targets in parallel via a
+<option>-j</option>
+option that takes, as its argument, the number
+of simultaneous tasks that may be spawned:</para>
+
+<literallayout class="monospaced">
+scons -j 4
+</literallayout>
+
+<para>builds four targets in parallel, for example.</para>
+
+<para><command>scons</command>
+can maintain a cache of target (derived) files that can
+be shared between multiple builds. When caching is enabled in a
+SConscript file, any target files built by
+<command>scons</command>
+will be copied
+to the cache. If an up-to-date target file is found in the cache, it
+will be retrieved from the cache instead of being rebuilt locally.
+Caching behavior may be disabled and controlled in other ways by the
+<option>--cache-force</option>,
+<option>--cache-disable</option>,
+<option>--cache-readonly</option>,
+and
+<option>--cache-show</option>
+command-line options. The
+<option>--random</option>
+option is useful to prevent multiple builds
+from trying to update the cache simultaneously.</para>
+
+<para>Values of variables to be passed to the SConscript file(s)
+may be specified on the command line:</para>
+
+<literallayout class="monospaced">
+scons debug=1 .
+</literallayout>
+
+<para>These variables are available in SConscript files
+through the ARGUMENTS dictionary,
+and can be used in the SConscript file(s) to modify
+the build in any way:</para>
+
+<literallayout class="monospaced">
+if ARGUMENTS.get('debug', 0):
+ env = Environment(CCFLAGS = '-g')
+else:
+ env = Environment()
+</literallayout>
+
+<para>The command-line variable arguments are also available
+in the ARGLIST list,
+indexed by their order on the command line.
+This allows you to process them in order rather than by name,
+if necessary.
+ARGLIST[0] returns a tuple
+containing (argname, argvalue).
+A Python exception is thrown if you
+try to access a list member that
+does not exist.</para>
+
+<para><command>scons</command>
+requires Python version 2.4 or later.
+There should be no other dependencies or requirements to run
+<emphasis role="bold">scons.</emphasis></para>
+
+<!-- The following paragraph reflects the default tool search orders -->
+<!-- currently in SCons/Tool/__init__.py. If any of those search orders -->
+<!-- change, this documentation should change, too. -->
+<para>By default,
+<command>scons</command>
+knows how to search for available programming tools
+on various systems.
+On Windows systems,
+<command>scons</command>
+searches in order for the
+Microsoft Visual C++ tools,
+the MinGW tool chain,
+the Intel compiler tools,
+and the PharLap ETS compiler.
+On OS/2 systems,
+<command>scons</command>
+searches in order for the
+OS/2 compiler,
+the GCC tool chain,
+and the Microsoft Visual C++ tools,
+On SGI IRIX, IBM AIX, Hewlett Packard HP-UX, and Sun Solaris systems,
+<command>scons</command>
+searches for the native compiler tools
+(MIPSpro, Visual Age, aCC, and Forte tools respectively)
+and the GCC tool chain.
+On all other platforms,
+including POSIX (Linux and UNIX) platforms,
+<command>scons</command>
+searches in order
+for the GCC tool chain,
+the Microsoft Visual C++ tools,
+and the Intel compiler tools.
+You may, of course, override these default values
+by appropriate configuration of
+Environment construction variables.</para>
+
+</refsect1>
+
+<refsect1 id='options'><title>OPTIONS</title>
+<para>In general,
+<command>scons</command>
+supports the same command-line options as GNU
+<emphasis role="bold">make</emphasis>,
+and many of those supported by
+<emphasis role="bold">cons</emphasis>.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>-b</term>
+ <listitem>
+<para>Ignored for compatibility with non-GNU versions of
+<emphasis role="bold">make.</emphasis></para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-c, --clean, --remove</term>
+ <listitem>
+<para>Clean up by removing all target files for which a construction
+command is specified.
+Also remove any files or directories associated to the construction command
+using the
+<emphasis role="bold">Clean</emphasis>()
+function.
+Will not remove any targets specified by the
+<emphasis role="bold">NoClean</emphasis>()
+function.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--cache-debug=<emphasis>file</emphasis></term>
+ <listitem>
+<para>Print debug information about the
+<emphasis role="bold">CacheDir</emphasis>()
+derived-file caching
+to the specified
+<emphasis>file</emphasis>.
+If
+<emphasis>file</emphasis>
+is
+<emphasis role="bold">-</emphasis>
+(a hyphen),
+the debug information are printed to the standard output.
+The printed messages describe what signature file names are
+being looked for in, retrieved from, or written to the
+<emphasis role="bold">CacheDir</emphasis>()
+directory tree.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--cache-disable, --no-cache</term>
+ <listitem>
+<para>Disable the derived-file caching specified by
+<emphasis role="bold">CacheDir</emphasis>().
+<command>scons</command>
+will neither retrieve files from the cache
+nor copy files to the cache.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--cache-force, --cache-populate</term>
+ <listitem>
+<para>When using
+<emphasis role="bold">CacheDir</emphasis>(),
+populate a cache by copying any already-existing, up-to-date
+derived files to the cache,
+in addition to files built by this invocation.
+This is useful to populate a new cache with
+all the current derived files,
+or to add to the cache any derived files
+recently built with caching disabled via the
+<option>--cache-disable</option>
+option.</para>
+
+ </listitem>
+ </varlistentry>
+<varlistentry>
+ <term>--cache-readonly</term>
+ <listitem>
+<para>Use the cache (if enabled) for reading, but do not not update the
+cache with changed files.
+</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--cache-show</term>
+ <listitem>
+<para>When using
+<emphasis role="bold">CacheDir</emphasis>()
+and retrieving a derived file from the cache,
+show the command
+that would have been executed to build the file,
+instead of the usual report,
+"Retrieved `file' from cache."
+This will produce consistent output for build logs,
+regardless of whether a target
+file was rebuilt or retrieved from the cache.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--config=<emphasis>mode</emphasis></term>
+ <listitem>
+<para>This specifies how the
+<emphasis role="bold">Configure</emphasis>
+call should use or generate the
+results of configuration tests.
+The option should be specified from
+among the following choices:</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--config=auto</term>
+ <listitem>
+<para>scons will use its normal dependency mechanisms
+to decide if a test must be rebuilt or not.
+This saves time by not running the same configuration tests
+every time you invoke scons,
+but will overlook changes in system header files
+or external commands (such as compilers)
+if you don't specify those dependecies explicitly.
+This is the default behavior.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--config=force</term>
+ <listitem>
+<para>If this option is specified,
+all configuration tests will be re-run
+regardless of whether the
+cached results are out of date.
+This can be used to explicitly
+force the configuration tests to be updated
+in response to an otherwise unconfigured change
+in a system header file or compiler.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--config=cache</term>
+ <listitem>
+<para>If this option is specified,
+no configuration tests will be rerun
+and all results will be taken from cache.
+Note that scons will still consider it an error
+if --config=cache is specified
+and a necessary test does not
+yet have any results in the cache.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-C<emphasis> directory</emphasis>, --directory=<emphasis>directory</emphasis></term>
+ <listitem>
+<para>Change to the specified
+<emphasis>directory</emphasis>
+before searching for the
+<emphasis>SConstruct</emphasis>,
+<emphasis>Sconstruct</emphasis>,
+or
+<emphasis>sconstruct</emphasis>
+file, or doing anything
+else. Multiple
+<option>-C</option>
+options are interpreted
+relative to the previous one, and the right-most
+<option>-C</option>
+option wins. (This option is nearly
+equivalent to
+<option>-f directory/SConstruct</option>,
+except that it will search for
+<emphasis>SConstruct</emphasis>,
+<emphasis>Sconstruct</emphasis>,
+or
+<emphasis>sconstruct</emphasis>
+in the specified directory.)</para>
+
+<!-- .TP -->
+<!-- \-d -->
+<!-- Display dependencies while building target files. Useful for -->
+<!-- figuring out why a specific file is being rebuilt, as well as -->
+<!-- general debugging of the build process. -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-D</term>
+ <listitem>
+<para>Works exactly the same way as the
+<option>-u</option>
+option except for the way default targets are handled.
+When this option is used and no targets are specified on the command line,
+all default targets are built, whether or not they are below the current
+directory.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=<emphasis>type</emphasis></term>
+ <listitem>
+<para>Debug the build process.
+<emphasis>type[,type...]</emphasis>
+specifies what type of debugging. Multiple types may be specified,
+separated by commas. The following types are valid:</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=count</term>
+ <listitem>
+<para>Print how many objects are created
+of the various classes used internally by SCons
+before and after reading the SConscript files
+and before and after building targets.
+This is not supported when SCons is executed with the Python
+<option>-O</option>
+(optimized) option
+or when the SCons modules
+have been compiled with optimization
+(that is, when executing from
+<emphasis role="bold">*.pyo</emphasis>
+files).</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=duplicate</term>
+ <listitem>
+<para>Print a line for each unlink/relink (or copy) of a variant file from
+its source file. Includes debugging info for unlinking stale variant
+files, as well as unlinking old targets before building them.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=dtree</term>
+ <listitem>
+<para>A synonym for the newer
+<option>--tree=derived</option>
+option.
+This will be deprecated in some future release
+and ultimately removed.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=explain</term>
+ <listitem>
+<para>Print an explanation of precisely why
+<command>scons</command>
+is deciding to (re-)build any targets.
+(Note: this does not print anything
+for targets that are
+<emphasis>not</emphasis>
+rebuilt.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=findlibs</term>
+ <listitem>
+<para>Instruct the scanner that searches for libraries
+to print a message about each potential library
+name it is searching for,
+and about the actual libraries it finds.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=includes</term>
+ <listitem>
+<para>Print the include tree after each top-level target is built.
+This is generally used to find out what files are included by the sources
+of a given derived file:</para>
+
+<literallayout class="monospaced">
+$ scons --debug=includes foo.o
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=memoizer</term>
+ <listitem>
+<para>Prints a summary of hits and misses using the Memoizer,
+an internal subsystem that counts
+how often SCons uses cached values in memory
+instead of recomputing them each time they're needed.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=memory</term>
+ <listitem>
+<para>Prints how much memory SCons uses
+before and after reading the SConscript files
+and before and after building targets.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=nomemoizer</term>
+ <listitem>
+<para>A deprecated option preserved for backwards compatibility.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=objects</term>
+ <listitem>
+<para>Prints a list of the various objects
+of the various classes used internally by SCons.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=pdb</term>
+ <listitem>
+<para>Re-run SCons under the control of the
+pdb
+Python debugger.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=prepare</term>
+ <listitem>
+<para>Print a line each time any target (internal or external)
+is prepared for building.
+<command>scons</command>
+prints this for each target it considers, even if that
+target is up to date (see also --debug=explain).
+This can help debug problems with targets that aren't being
+built; it shows whether
+<command>scons</command>
+is at least considering them or not.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=presub</term>
+ <listitem>
+<para>Print the raw command line used to build each target
+before the construction environment variables are substituted.
+Also shows which targets are being built by this command.
+Output looks something like this:</para>
+<literallayout class="monospaced">
+$ scons --debug=presub
+Building myprog.o with action(s):
+ $SHCC $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
+...
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=stacktrace</term>
+ <listitem>
+<para>Prints an internal Python stack trace
+when encountering an otherwise unexplained error.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=stree</term>
+ <listitem>
+<para>A synonym for the newer
+<option>--tree=all,status</option>
+option.
+This will be deprecated in some future release
+and ultimately removed.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=time</term>
+ <listitem>
+<para>Prints various time profiling information:
+the time spent executing each individual build command;
+the total build time (time SCons ran from beginning to end);
+the total time spent reading and executing SConscript files;
+the total time spent SCons itself spend running
+(that is, not counting reading and executing SConscript files);
+and both the total time spent executing all build commands
+and the elapsed wall-clock time spent executing those build commands.
+(When
+<command>scons</command>
+is executed without the
+<option>-j</option>
+option,
+the elapsed wall-clock time will typically
+be slightly longer than the total time spent
+executing all the build commands,
+due to the SCons processing that takes place
+in between executing each command.
+When
+<command>scons</command>
+is executed
+<emphasis>with</emphasis>
+the
+<option>-j</option>
+option,
+and your build configuration allows good parallelization,
+the elapsed wall-clock time should
+be significantly smaller than the
+total time spent executing all the build commands,
+since multiple build commands and
+intervening SCons processing
+should take place in parallel.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--debug=tree</term>
+ <listitem>
+<para>A synonym for the newer
+<option>--tree=all</option>
+option.
+This will be deprecated in some future release
+and ultimately removed.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--diskcheck=<emphasis>types</emphasis></term>
+ <listitem>
+<para>Enable specific checks for
+whether or not there is a file on disk
+where the SCons configuration expects a directory
+(or vice versa),
+and whether or not RCS or SCCS sources exist
+when searching for source and include files.
+The
+<emphasis>types</emphasis>
+argument can be set to:
+<emphasis role="bold">all</emphasis>,
+to enable all checks explicitly
+(the default behavior);
+<emphasis role="bold">none</emphasis>,
+to disable all such checks;
+<emphasis role="bold">match</emphasis>,
+to check that files and directories on disk
+match SCons' expected configuration;
+<emphasis role="bold">rcs</emphasis>,
+to check for the existence of an RCS source
+for any missing source or include files;
+<emphasis role="bold">sccs</emphasis>,
+to check for the existence of an SCCS source
+for any missing source or include files.
+Multiple checks can be specified separated by commas;
+for example,
+<option>--diskcheck=sccs,rcs</option>
+would still check for SCCS and RCS sources,
+but disable the check for on-disk matches of files and directories.
+Disabling some or all of these checks
+can provide a performance boost for large configurations,
+or when the configuration will check for files and/or directories
+across networked or shared file systems,
+at the slight increased risk of an incorrect build
+or of not handling errors gracefully
+(if include files really should be
+found in SCCS or RCS, for example,
+or if a file really does exist
+where the SCons configuration expects a directory).</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--duplicate=<emphasis>ORDER</emphasis></term>
+ <listitem>
+<para>There are three ways to duplicate files in a build tree: hard links,
+soft (symbolic) links and copies. The default behaviour of SCons is to
+prefer hard links to soft links to copies. You can specify different
+behaviours with this option.
+<emphasis>ORDER</emphasis>
+must be one of
+<emphasis>hard-soft-copy</emphasis>
+(the default),
+<emphasis>soft-hard-copy</emphasis>,
+<emphasis>hard-copy</emphasis>,
+<emphasis>soft-copy</emphasis>
+or
+<emphasis>copy</emphasis>.
+SCons will attempt to duplicate files using
+the mechanisms in the specified order.</para>
+
+<!-- .TP -->
+<!-- \-e, \-\-environment\-overrides -->
+<!-- Variables from the execution environment override construction -->
+<!-- variables from the SConscript files. -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-f<emphasis> file</emphasis>, --file=<emphasis>file</emphasis>, --makefile=<emphasis>file</emphasis>, --sconstruct=<emphasis>file</emphasis></term>
+ <listitem>
+<para>Use
+<emphasis>file</emphasis>
+as the initial SConscript file.
+Multiple
+<option>-f</option>
+options may be specified,
+in which case
+<command>scons</command>
+will read all of the specified files.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Print a local help message for this build, if one is defined in
+the SConscript file(s), plus a line that describes the
+<option>-H</option>
+option for command-line option help. If no local help message
+is defined, prints the standard help message about command-line
+options. Exits after displaying the appropriate message.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-H, --help-options</term>
+ <listitem>
+<para>Print the standard help message about command-line options and
+exit.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-i, --ignore-errors</term>
+ <listitem>
+<para>Ignore all errors from commands executed to rebuild files.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-I<emphasis> directory</emphasis>, --include-dir=<emphasis>directory</emphasis></term>
+ <listitem>
+<para>Specifies a
+<emphasis>directory</emphasis>
+to search for
+imported Python modules. If several
+<option>-I</option>
+options
+are used, the directories are searched in the order specified.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--implicit-cache</term>
+ <listitem>
+<para>Cache implicit dependencies.
+This causes
+<command>scons</command>
+to use the implicit (scanned) dependencies
+from the last time it was run
+instead of scanning the files for implicit dependencies.
+This can significantly speed up SCons,
+but with the following limitations:</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para><command>scons</command>
+will not detect changes to implicit dependency search paths
+(e.g.
+<emphasis role="bold">CPPPATH</emphasis>, <emphasis role="bold">LIBPATH</emphasis>)
+that would ordinarily
+cause different versions of same-named files to be used.</para>
+
+<para><command>scons</command>
+will miss changes in the implicit dependencies
+in cases where a new implicit
+dependency is added earlier in the implicit dependency search path
+(e.g.
+<emphasis role="bold">CPPPATH</emphasis>, <emphasis role="bold">LIBPATH</emphasis>)
+than a current implicit dependency with the same name.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>--implicit-deps-changed</term>
+ <listitem>
+<para>Forces SCons to ignore the cached implicit dependencies. This causes the
+implicit dependencies to be rescanned and recached. This implies
+<option>--implicit-cache</option>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--implicit-deps-unchanged</term>
+ <listitem>
+<para>Force SCons to ignore changes in the implicit dependencies.
+This causes cached implicit dependencies to always be used.
+This implies
+<option>--implicit-cache</option>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--interactive</term>
+ <listitem>
+<para>Starts SCons in interactive mode.
+The SConscript files are read once and a
+<emphasis role="bold">scons&gt;&gt;&gt;</emphasis>
+prompt is printed.
+Targets may now be rebuilt by typing commands at interactive prompt
+without having to re-read the SConscript files
+and re-initialize the dependency graph from scratch.</para>
+
+<para>SCons interactive mode supports the following commands:</para>
+
+ <blockquote>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis role="bold">build</emphasis><emphasis>[OPTIONS] [TARGETS] ...</emphasis></term>
+ <listitem>
+<para>Builds the specified
+<emphasis>TARGETS</emphasis>
+(and their dependencies)
+with the specified
+SCons command-line
+<emphasis>OPTIONS</emphasis>.
+<emphasis role="bold">b</emphasis>
+and
+<command>scons</command>
+are synonyms.</para>
+
+<para>The following SCons command-line options affect the
+<emphasis role="bold">build</emphasis>
+command:</para>
+
+<literallayout class="monospaced">
+--cache-debug=FILE
+--cache-disable, --no-cache
+--cache-force, --cache-populate
+--cache-readonly
+--cache-show
+--debug=TYPE
+-i, --ignore-errors
+-j N, --jobs=N
+-k, --keep-going
+-n, --no-exec, --just-print, --dry-run, --recon
+-Q
+-s, --silent, --quiet
+--taskmastertrace=FILE
+--tree=OPTIONS
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+<para>Any other SCons command-line options that are specified
+do not cause errors
+but have no effect on the
+<emphasis role="bold">build</emphasis>
+command
+(mainly because they affect how the SConscript files are read,
+which only happens once at the beginning of interactive mode).</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><emphasis role="bold">clean</emphasis><emphasis>[OPTIONS] [TARGETS] ...</emphasis></term>
+ <listitem>
+<para>Cleans the specified
+<emphasis>TARGETS</emphasis>
+(and their dependencies)
+with the specified options.
+<emphasis role="bold">c</emphasis>
+is a synonym.
+This command is itself a synonym for
+<userinput>build --clean</userinput></para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">exit</emphasis></term>
+ <listitem>
+<para>Exits SCons interactive mode.
+You can also exit by terminating input
+(CTRL+D on UNIX or Linux systems,
+CTRL+Z on Windows systems).</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">help</emphasis><emphasis>[COMMAND]</emphasis></term>
+ <listitem>
+<para>Provides a help message about
+the commands available in SCons interactive mode.
+If
+<emphasis>COMMAND</emphasis>
+is specified,
+<emphasis role="bold">h</emphasis>
+and
+<emphasis role="bold">?</emphasis>
+are synonyms.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">shell</emphasis><emphasis>[COMMANDLINE]</emphasis></term>
+ <listitem>
+<para>Executes the specified
+<emphasis>COMMANDLINE</emphasis>
+in a subshell.
+If no
+<emphasis>COMMANDLINE</emphasis>
+is specified,
+executes the interactive command interpreter
+specified in the
+<envar>SHELL</envar>
+environment variable
+(on UNIX and Linux systems)
+or the
+<emphasis role="bold">COMSPEC</emphasis>
+environment variable
+(on Windows systems).
+<emphasis role="bold">sh</emphasis>
+and
+<emphasis role="bold">!</emphasis>
+are synonyms.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis role="bold">version</emphasis></term>
+ <listitem>
+<para>Prints SCons version information.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </blockquote>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>An empty line repeats the last typed command.
+Command-line editing can be used if the
+<emphasis role="bold">readline</emphasis>
+module is available.</para>
+
+<literallayout class="monospaced">
+$ scons --interactive
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons&gt;&gt;&gt; build -n prog
+scons&gt;&gt;&gt; exit
+</literallayout>
+
+<variablelist>
+ <varlistentry>
+ <term>-j<emphasis> N</emphasis>, --jobs=<emphasis>N</emphasis></term>
+ <listitem>
+<para>Specifies the number of jobs (commands) to run simultaneously.
+If there is more than one
+<option>-j</option>
+option, the last one is effective.</para>
+<!-- ??? If the -->
+<!-- .B \-j -->
+<!-- option -->
+<!-- is specified without an argument, -->
+<!-- .B scons -->
+<!-- will not limit the number of -->
+<!-- simultaneous jobs. -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-k, --keep-going</term>
+ <listitem>
+<para>Continue as much as possible after an error. The target that
+failed and those that depend on it will not be remade, but other
+targets specified on the command line will still be processed.</para>
+
+<!-- .TP -->
+<!-- .RI \-l " N" ", \-\-load\-average=" N ", \-\-max\-load=" N -->
+<!-- No new jobs (commands) will be started if -->
+<!-- there are other jobs running and the system load -->
+<!-- average is at least -->
+<!-- .I N -->
+<!-- (a floating\-point number). -->
+
+
+<!-- .TP -->
+<!-- \-\-list\-derived -->
+<!-- List derived files (targets, dependencies) that would be built, -->
+<!-- but do not build them. -->
+<!-- [XXX This can probably go away with the right -->
+<!-- combination of other options. Revisit this issue.] -->
+
+<!-- .TP -->
+<!-- \-\-list\-actions -->
+<!-- List derived files that would be built, with the actions -->
+<!-- (commands) that build them. Does not build the files. -->
+<!-- [XXX This can probably go away with the right -->
+<!-- combination of other options. Revisit this issue.] -->
+
+<!-- .TP -->
+<!-- \-\-list\-where -->
+<!-- List derived files that would be built, plus where the file is -->
+<!-- defined (file name and line number). Does not build the files. -->
+<!-- [XXX This can probably go away with the right -->
+<!-- combination of other options. Revisit this issue.] -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-m</term>
+ <listitem>
+<para>Ignored for compatibility with non-GNU versions of
+<emphasis role="bold">make</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--max-drift=<emphasis>SECONDS</emphasis></term>
+ <listitem>
+<para>Set the maximum expected drift in the modification time of files to
+<emphasis>SECONDS</emphasis>.
+This value determines how long a file must be unmodified
+before its cached content signature
+will be used instead of
+calculating a new content signature (MD5 checksum)
+of the file's contents.
+The default value is 2 days, which means a file must have a
+modification time of at least two days ago in order to have its
+cached content signature used.
+A negative value means to never cache the content
+signature and to ignore the cached value if there already is one. A value
+of 0 means to always use the cached signature,
+no matter how old the file is.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--md5-chunksize=<emphasis>KILOBYTES</emphasis></term>
+ <listitem>
+<para>Set the block size used to compute MD5 signatures to
+<emphasis>KILOBYTES</emphasis>.
+This value determines the size of the chunks which are read in at once when
+computing MD5 signatures. Files below that size are fully stored in memory
+before performing the signature computation while bigger files are read in
+block-by-block. A huge block-size leads to high memory consumption while a very
+small block-size slows down the build considerably.</para>
+
+<para>The default value is to use a chunk size of 64 kilobytes, which should
+be appropriate for most uses.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-n, --just-print, --dry-run, --recon</term>
+ <listitem>
+<para>No execute. Print the commands that would be executed to build
+any out-of-date target files, but do not execute the commands.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--no-site-dir</term>
+ <listitem>
+<para>Prevents the automatic addition of the standard
+<emphasis>site_scons</emphasis>
+dirs to
+<emphasis>sys.path</emphasis>.
+Also prevents loading the
+<emphasis>site_scons/site_init.py</emphasis>
+modules if they exist, and prevents adding their
+<emphasis>site_scons/site_tools</emphasis>
+dirs to the toolpath.</para>
+
+<!-- .TP -->
+<!-- .RI \-o " file" ", \-\-old\-file=" file ", \-\-assume\-old=" file -->
+<!-- Do not rebuild -->
+<!-- .IR file , -->
+<!-- and do -->
+<!-- not rebuild anything due to changes in the contents of -->
+<!-- .IR file . -->
+<!-- .TP -->
+<!-- .RI \-\-override " file" -->
+<!-- Read values to override specific build environment variables -->
+<!-- from the specified -->
+<!-- .IR file . -->
+<!-- .TP -->
+<!-- \-p -->
+<!-- Print the data base (construction environments, -->
+<!-- Builder and Scanner objects) that are defined -->
+<!-- after reading the SConscript files. -->
+<!-- After printing, a normal build is performed -->
+<!-- as usual, as specified by other command\-line options. -->
+<!-- This also prints version information -->
+<!-- printed by the -->
+<!-- .B \-v -->
+<!-- option. -->
+
+<!-- To print the database without performing a build do: -->
+
+<!-- .ES -->
+<!-- scons \-p \-q -->
+<!-- .EE -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--profile=<emphasis>file</emphasis></term>
+ <listitem>
+<para>Run SCons under the Python profiler
+and save the results in the specified
+<emphasis>file</emphasis>.
+The results may be analyzed using the Python
+pstats module.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-q, --question</term>
+ <listitem>
+<para>Do not run any commands, or print anything. Just return an exit
+status that is zero if the specified targets are already up to
+date, non-zero otherwise.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-Q</term>
+ <listitem>
+<para>Quiets SCons status messages about
+reading SConscript files,
+building targets
+and entering directories.
+Commands that are executed
+to rebuild target files are still printed.</para>
+
+<!-- .TP -->
+<!-- \-r, \-R, \-\-no\-builtin\-rules, \-\-no\-builtin\-variables -->
+<!-- Clear the default construction variables. Construction -->
+<!-- environments that are created will be completely empty. -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--random</term>
+ <listitem>
+<para>Build dependencies in a random order. This is useful when
+building multiple trees simultaneously with caching enabled,
+to prevent multiple builds from simultaneously trying to build
+or retrieve the same target files.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-s, --silent, --quiet</term>
+ <listitem>
+<para>Silent. Do not print commands that are executed to rebuild
+target files.
+Also suppresses SCons status messages.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-S, --no-keep-going, --stop</term>
+ <listitem>
+<para>Ignored for compatibility with GNU
+<emphasis role="bold">make</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--site-dir=<emphasis>dir</emphasis></term>
+ <listitem>
+<para>Uses the named dir as the site dir rather than the default
+<emphasis>site_scons</emphasis>
+dirs. This dir will get prepended to
+<emphasis>sys.path</emphasis>,
+the module
+<emphasis>dir</emphasis>/site_init.py
+will get loaded if it exists, and
+<emphasis>dir</emphasis>/site_tools
+will get added to the default toolpath.</para>
+
+<para>The default set of
+<emphasis>site_scons</emphasis>
+dirs used when
+<option>--site-dir</option>
+is not specified depends on the system platform, as follows. Note
+that the directories are examined in the order given, from most
+generic to most specific, so the last-executed site_init.py file is
+the most specific one (which gives it the chance to override
+everything else), and the dirs are prepended to the paths, again so
+the last dir examined comes first in the resulting path.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<variablelist>
+ <varlistentry>
+ <term>Windows:</term>
+ <listitem>
+<literallayout class="monospaced">
+%ALLUSERSPROFILE/Application Data/scons/site_scons
+%USERPROFILE%/Local Settings/Application Data/scons/site_scons
+%APPDATA%/scons/site_scons
+%HOME%/.scons/site_scons
+./site_scons
+</literallayout>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Mac OS X:</term>
+ <listitem>
+<literallayout class="monospaced">
+/Library/Application Support/SCons/site_scons
+/opt/local/share/scons/site_scons (for MacPorts)
+/sw/share/scons/site_scons (for Fink)
+$HOME/Library/Application Support/SCons/site_scons
+$HOME/.scons/site_scons
+./site_scons
+</literallayout>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Solaris:</term>
+ <listitem>
+<literallayout class="monospaced">
+/opt/sfw/scons/site_scons
+/usr/share/scons/site_scons
+$HOME/.scons/site_scons
+./site_scons
+</literallayout>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Linux, HPUX, and other Posix-like systems:</term>
+ <listitem>
+<literallayout class="monospaced">
+/usr/share/scons/site_scons
+$HOME/.scons/site_scons
+./site_scons
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<variablelist>
+ <varlistentry>
+ <term>--stack-size=<emphasis>KILOBYTES</emphasis></term>
+ <listitem>
+<para>Set the size stack used to run threads to
+<emphasis>KILOBYTES</emphasis>.
+This value determines the stack size of the threads used to run jobs.
+These are the threads that execute the actions of the builders for the
+nodes that are out-of-date.
+Note that this option has no effect unless the
+<emphasis role="bold">num_jobs</emphasis>
+option, which corresponds to -j and --jobs, is larger than one. Using
+a stack size that is too small may cause stack overflow errors. This
+usually shows up as segmentation faults that cause scons to abort
+before building anything. Using a stack size that is too large will
+cause scons to use more memory than required and may slow down the entire
+build process.</para>
+
+<para>The default value is to use a stack size of 256 kilobytes, which should
+be appropriate for most uses. You should not need to increase this value
+unless you encounter stack overflow errors.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-t, --touch</term>
+ <listitem>
+<para>Ignored for compatibility with GNU
+<emphasis role="bold">make</emphasis>.
+(Touching a file to make it
+appear up-to-date is unnecessary when using
+<command>scons</command>.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--taskmastertrace=<emphasis>file</emphasis></term>
+ <listitem>
+<para>Prints trace information to the specified
+<emphasis>file</emphasis>
+about how the internal Taskmaster object
+evaluates and controls the order in which Nodes are built.
+A file name of
+<emphasis role="bold">-</emphasis>
+may be used to specify the standard output.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-tree=<emphasis>options</emphasis></term>
+ <listitem>
+<para>Prints a tree of the dependencies
+after each top-level target is built.
+This prints out some or all of the tree,
+in various formats,
+depending on the
+<emphasis>options</emphasis>
+specified:</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--tree=all</term>
+ <listitem>
+<para>Print the entire dependency tree
+after each top-level target is built.
+This prints out the complete dependency tree,
+including implicit dependencies and ignored dependencies.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--tree=derived</term>
+ <listitem>
+<para>Restricts the tree output to only derived (target) files,
+not source files.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--tree=status</term>
+ <listitem>
+<para>Prints status information for each displayed node.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--tree=prune</term>
+ <listitem>
+<para>Prunes the tree to avoid repeating dependency information
+for nodes that have already been displayed.
+Any node that has already been displayed
+will have its name printed in
+<emphasis role="bold">[square brackets]</emphasis>,
+as an indication that the dependencies
+for that node can be found by searching
+for the relevant output higher up in the tree.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Multiple options may be specified,
+separated by commas:</para>
+
+<literallayout class="monospaced">
+# Prints only derived files, with status information:
+scons --tree=derived,status
+
+# Prints all dependencies of target, with status information
+# and pruning dependencies of already-visited Nodes:
+scons --tree=all,prune,status target
+</literallayout>
+
+<variablelist>
+ <varlistentry>
+ <term>-u, --up, --search-up</term>
+ <listitem>
+<para>Walks up the directory structure until an
+<emphasis>SConstruct ,</emphasis>
+<emphasis>Sconstruct</emphasis>
+or
+<emphasis>sconstruct</emphasis>
+file is found, and uses that
+as the top of the directory tree.
+If no targets are specified on the command line,
+only targets at or below the
+current directory will be built.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-U</term>
+ <listitem>
+<para>Works exactly the same way as the
+<option>-u</option>
+option except for the way default targets are handled.
+When this option is used and no targets are specified on the command line,
+all default targets that are defined in the SConscript(s) in the current
+directory are built, regardless of what directory the resultant targets end
+up in.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-v, --version</term>
+ <listitem>
+<para>Print the
+<command>scons</command>
+version, copyright information,
+list of authors, and any other relevant information.
+Then exit.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-w, --print-directory</term>
+ <listitem>
+<para>Print a message containing the working directory before and
+after other processing.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--no-print-directory</term>
+ <listitem>
+<para>Turn off -w, even if it was turned on implicitly.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=<emphasis>type</emphasis>, --warn=no-<emphasis>type</emphasis></term>
+ <listitem>
+<para>Enable or disable warnings.
+<emphasis>type</emphasis>
+specifies the type of warnings to be enabled or disabled:</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=all, --warn=no-all</term>
+ <listitem>
+<para>Enables or disables all warnings.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=cache-write-error, --warn=no-cache-write-error</term>
+ <listitem>
+<para>Enables or disables warnings about errors trying to
+write a copy of a built file to a specified
+<emphasis role="bold">CacheDir</emphasis>().
+These warnings are disabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=corrupt-sconsign, --warn=no-corrupt-sconsign</term>
+ <listitem>
+<para>Enables or disables warnings about unfamiliar signature data in
+<markup>.sconsign</markup>
+files.
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=dependency, --warn=no-dependency</term>
+ <listitem>
+<para>Enables or disables warnings about dependencies.
+These warnings are disabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=deprecated, --warn=no-deprecated</term>
+ <listitem>
+<para>Enables or disables all warnings about use of
+currently deprecated features.
+These warnings are enabled by default.
+Note that the
+<option>--warn=no-deprecated</option>
+option does not disable warnings about absolutely all deprecated features.
+Warnings for some deprecated features that have already been through
+several releases with deprecation warnings
+may be mandatory for a release or two
+before they are officially no longer supported by SCons.
+Warnings for some specific deprecated features
+may be enabled or disabled individually;
+see below.</para>
+
+ <blockquote>
+ <variablelist>
+ <varlistentry>
+ <term>--warn=deprecated-copy, --warn=no-deprecated-copy</term>
+ <listitem>
+<para>Enables or disables warnings about use of the deprecated
+<emphasis role="bold">env.Copy()</emphasis>
+method.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=deprecated-source-signatures, --warn=no-deprecated-source-signatures</term>
+ <listitem>
+<para>Enables or disables warnings about use of the deprecated
+<emphasis role="bold">SourceSignatures()</emphasis>
+function or
+<emphasis role="bold">env.SourceSignatures()</emphasis>
+method.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=deprecated-target-signatures, --warn=no-deprecated-target-signatures</term>
+ <listitem>
+<para>Enables or disables warnings about use of the deprecated
+<emphasis role="bold">TargetSignatures()</emphasis>
+function or
+<emphasis role="bold">env.TargetSignatures()</emphasis>
+method.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </blockquote>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=duplicate-environment, --warn=no-duplicate-environment</term>
+ <listitem>
+<para>Enables or disables warnings about attempts to specify a build
+of a target with two different construction environments
+that use the same action.
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=fortran-cxx-mix, --warn=no-fortran-cxx-mix</term>
+ <listitem>
+<para>Enables or disables the specific warning about linking
+Fortran and C++ object files in a single executable,
+which can yield unpredictable behavior with some compilers.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=future-deprecated, --warn=no-future-deprecated</term>
+ <listitem>
+<para>Enables or disables warnings about features
+that will be deprecated in the future.
+These warnings are disabled by default.
+Enabling this warning is especially
+recommended for projects that redistribute
+SCons configurations for other users to build,
+so that the project can be warned as soon as possible
+about to-be-deprecated features
+that may require changes to the configuration.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=link, --warn=no-link</term>
+ <listitem>
+<para>Enables or disables warnings about link steps.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=misleading-keywords, --warn=no-misleading-keywords</term>
+ <listitem>
+<para>Enables or disables warnings about use of the misspelled keywords
+<emphasis role="bold">targets</emphasis>
+and
+<emphasis role="bold">sources</emphasis>
+when calling Builders.
+(Note the last
+<emphasis role="bold">s</emphasis>
+characters, the correct spellings are
+<emphasis role="bold">target</emphasis>
+and
+<emphasis role="bold">source.)</emphasis>
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=missing-sconscript, --warn=no-missing-sconscript</term>
+ <listitem>
+<para>Enables or disables warnings about missing SConscript files.
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=no-md5-module, --warn=no-no-md5-module</term>
+ <listitem>
+<para>Enables or disables warnings about the version of Python
+not having an MD5 checksum module available.
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=no-metaclass-support, --warn=no-no-metaclass-support</term>
+ <listitem>
+<para>Enables or disables warnings about the version of Python
+not supporting metaclasses when the
+<option>--debug=memoizer</option>
+option is used.
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=no-object-count, --warn=no-no-object-count</term>
+ <listitem>
+<para>Enables or disables warnings about the
+<option>--debug=object</option>
+feature not working when
+<command>scons</command>
+is run with the python
+<option>-O</option>
+option or from optimized Python (.pyo) modules.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=no-parallel-support, --warn=no-no-parallel-support</term>
+ <listitem>
+<para>Enables or disables warnings about the version of Python
+not being able to support parallel builds when the
+<option>-j</option>
+option is used.
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=python-version, --warn=no-python-version</term>
+ <listitem>
+<para>Enables or disables the warning about running
+SCons with a deprecated version of Python.
+These warnings are enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=reserved-variable, --warn=no-reserved-variable</term>
+ <listitem>
+<para>Enables or disables warnings about attempts to set the
+reserved construction variable names
+<emphasis role="bold">CHANGED_SOURCES</emphasis>,
+<emphasis role="bold">CHANGED_TARGETS</emphasis>,
+<emphasis role="bold">TARGET</emphasis>,
+<emphasis role="bold">TARGETS</emphasis>,
+<emphasis role="bold">SOURCE</emphasis>,
+<emphasis role="bold">SOURCES</emphasis>,
+<emphasis role="bold">UNCHANGED_SOURCES</emphasis>
+or
+<emphasis role="bold">UNCHANGED_TARGETS</emphasis>.
+These warnings are disabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=stack-size, --warn=no-stack-size</term>
+ <listitem>
+<para>Enables or disables warnings about requests to set the stack size
+that could not be honored.
+These warnings are enabled by default.</para>
+
+<!-- .TP -->
+<!-- .RI \-\-write\-filenames= file -->
+<!-- Write all filenames considered into -->
+<!-- .IR file . -->
+
+<!-- .TP -->
+<!-- .RI \-W " file" ", \-\-what\-if=" file ", \-\-new\-file=" file ", \-\-assume\-new=" file -->
+<!-- Pretend that the target -->
+<!-- .I file -->
+<!-- has been -->
+<!-- modified. When used with the -->
+<!-- .B \-n -->
+<!-- option, this -->
+<!-- show you what would be rebuilt if you were to modify that file. -->
+<!-- Without -->
+<!-- .B \-n -->
+<!-- ... what? XXX -->
+
+<!-- .TP -->
+<!-- \-\-warn\-undefined\-variables -->
+<!-- Warn when an undefined variable is referenced. -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--warn=target_not_build, --warn=no-target_not_built</term>
+ <listitem>
+<para>Enables or disables warnings about a build rule not building the
+ expected targets. These warnings are not currently enabled by default.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-Y<emphasis> repository</emphasis>, --repository=<emphasis>repository</emphasis>, --srcdir=<emphasis>repository</emphasis></term>
+ <listitem>
+<para>Search the specified repository for any input and target
+files not found in the local directory hierarchy. Multiple
+<option>-Y</option>
+options may be specified, in which case the
+repositories are searched in the order specified.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect1>
+
+<refsect1 id='configuration_file_reference'><title>CONFIGURATION FILE REFERENCE</title>
+<!-- .SS Python Basics -->
+<!-- XXX Adding this in the future would be a help. -->
+
+<refsect2 id='construction_environments'><title>Construction Environments</title>
+<para>A construction environment is the basic means by which the SConscript
+files communicate build information to
+<command>scons</command>.
+A new construction environment is created using the
+<emphasis role="bold">Environment</emphasis>
+function:</para>
+
+<literallayout class="monospaced">
+env = Environment()
+</literallayout>
+
+<para>Variables, called
+<emphasis>construction</emphasis>
+<emphasis>variables</emphasis>,
+may be set in a construction environment
+either by specifying them as keywords when the object is created
+or by assigning them a value after the object is created:</para>
+
+<literallayout class="monospaced">
+env = Environment(FOO = 'foo')
+env['BAR'] = 'bar'
+</literallayout>
+
+<para>As a convenience,
+construction variables may also be set or modified by the
+<emphasis>parse_flags</emphasis>
+keyword argument, which applies the
+<emphasis role="bold">ParseFlags</emphasis>
+method (described below) to the argument value
+after all other processing is completed.
+This is useful either if the exact content of the flags is unknown
+(for example, read from a control file)
+or if the flags are distributed to a number of construction variables.</para>
+
+<literallayout class="monospaced">
+env = Environment(parse_flags = '-Iinclude -DEBUG -lm')
+</literallayout>
+
+<para>This example adds 'include' to
+<emphasis role="bold">CPPPATH</emphasis>,
+'EBUG' to
+<emphasis role="bold">CPPDEFINES</emphasis>,
+and 'm' to
+<emphasis role="bold">LIBS</emphasis>.</para>
+
+<para>By default, a new construction environment is
+initialized with a set of builder methods
+and construction variables that are appropriate
+for the current platform.
+An optional platform keyword argument may be
+used to specify that an environment should
+be initialized for a different platform:</para>
+
+<literallayout class="monospaced">
+env = Environment(platform = 'cygwin')
+env = Environment(platform = 'os2')
+env = Environment(platform = 'posix')
+env = Environment(platform = 'win32')
+</literallayout>
+
+<para>Specifying a platform initializes the appropriate
+construction variables in the environment
+to use and generate file names with prefixes
+and suffixes appropriate for the platform.</para>
+
+<para>Note that the
+<emphasis role="bold">win32</emphasis>
+platform adds the
+<emphasis role="bold">SystemDrive</emphasis>
+and
+<emphasis role="bold">SystemRoot</emphasis>
+variables from the user's external environment
+to the construction environment's
+<emphasis role="bold">ENV</emphasis>
+dictionary.
+This is so that any executed commands
+that use sockets to connect with other systems
+(such as fetching source files from
+external CVS repository specifications like
+<emphasis role="bold">:pserver:anonymous@cvs.sourceforge.net:/cvsroot/scons</emphasis>)
+will work on Windows systems.</para>
+
+<para>The platform argument may be function or callable object,
+in which case the Environment() method
+will call the specified argument to update
+the new construction environment:</para>
+
+<programlisting>
+def my_platform(env):
+ env['VAR'] = 'xyzzy'
+
+env = Environment(platform = my_platform)
+</programlisting>
+
+<para>Additionally, a specific set of tools
+with which to initialize the environment
+may be specified as an optional keyword argument:</para>
+
+<literallayout class="monospaced">
+env = Environment(tools = ['msvc', 'lex'])
+</literallayout>
+
+<para>Non-built-in tools may be specified using the toolpath argument:</para>
+
+<literallayout class="monospaced">
+env = Environment(tools = ['default', 'foo'], toolpath = ['tools'])
+</literallayout>
+
+<para>This looks for a tool specification in tools/foo.py (as well as
+using the ordinary default tools for the platform). foo.py should
+have two functions: generate(env, **kw) and exists(env).
+The
+<function>generate()</function>
+function
+modifies the passed-in environment
+to set up variables so that the tool
+can be executed;
+it may use any keyword arguments
+that the user supplies (see below)
+to vary its initialization.
+The
+<function>exists()</function>
+function should return a true
+value if the tool is available.
+Tools in the toolpath are used before
+any of the built-in ones. For example, adding gcc.py to the toolpath
+would override the built-in gcc tool.
+Also note that the toolpath is
+stored in the environment for use
+by later calls to
+<emphasis role="bold">Clone</emphasis>()
+and
+<emphasis role="bold">Tool</emphasis>()
+methods:</para>
+
+<literallayout class="monospaced">
+base = Environment(toolpath=['custom_path'])
+derived = base.Clone(tools=['custom_tool'])
+derived.CustomBuilder()
+</literallayout>
+
+<para>The elements of the tools list may also
+be functions or callable objects,
+in which case the Environment() method
+will call the specified elements
+to update the new construction environment:</para>
+
+<programlisting>
+def my_tool(env):
+ env['XYZZY'] = 'xyzzy'
+
+env = Environment(tools = [my_tool])
+</programlisting>
+
+<para>The individual elements of the tools list
+may also themselves be two-element lists of the form
+(<emphasis>toolname</emphasis>, <emphasis>kw_dict</emphasis>).
+SCons searches for the
+<emphasis>toolname</emphasis>
+specification file as described above, and
+passes
+<emphasis>kw_dict</emphasis>,
+which must be a dictionary, as keyword arguments to the tool's
+<emphasis role="bold">generate</emphasis>
+function.
+The
+<emphasis role="bold">generate</emphasis>
+function can use the arguments to modify the tool's behavior
+by setting up the environment in different ways
+or otherwise changing its initialization.</para>
+
+<programlisting>
+# in tools/my_tool.py:
+def generate(env, **kw):
+ # Sets MY_TOOL to the value of keyword argument 'arg1' or 1.
+ env['MY_TOOL'] = kw.get('arg1', '1')
+def exists(env):
+ return 1
+
+# in SConstruct:
+env = Environment(tools = ['default', ('my_tool', {'arg1': 'abc'})],
+ toolpath=['tools'])
+</programlisting>
+
+<para>The tool definition (i.e. my_tool()) can use the PLATFORM variable from
+the environment it receives to customize the tool for different platforms.</para>
+
+<para>If no tool list is specified, then SCons will auto-detect the installed
+tools using the PATH variable in the ENV construction variable and the
+platform name when the Environment is constructed. Changing the PATH
+variable after the Environment is constructed will not cause the tools to
+be redetected.</para>
+
+<para>SCons supports the following tool specifications out of the box:</para>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" BEGIN GENERATED TOOL DESCRIPTIONS -->
+
+<!-- '\" The descriptions below of the various SCons Tools are generated -->
+<!-- '\" from the .xml files that live next to the various Python modules in -->
+<!-- '\" the build enginer library. If you're reading this [gnt]roff file -->
+<!-- '\" with an eye towards patching this man page, you can still submit -->
+<!-- '\" a diff against this text, but it will have to be translated to a -->
+<!-- '\" diff against the underlying .xml file before the patch is actually -->
+<!-- '\" accepted. If you do that yourself, it will make it easier to -->
+<!-- '\" integrate the patch. -->
+
+<!-- '\" BEGIN GENERATED TOOL DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<xsi:include xmlns:xsi="http://www.w3.org/2001/XInclude" href="../generated/tools.gen"/>
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" END GENERATED TOOL DESCRIPTIONS -->
+
+<!-- '\" The descriptions above of the various SCons Tools are generated -->
+<!-- '\" from the .xml files that live next to the various Python modules in -->
+<!-- '\" the build enginer library. If you're reading this [gnt]roff file -->
+<!-- '\" with an eye towards patching this man page, you can still submit -->
+<!-- '\" a diff against this text, but it will have to be translated to a -->
+<!-- '\" diff against the underlying .xml file before the patch is actually -->
+<!-- '\" accepted. If you do that yourself, it will make it easier to -->
+<!-- '\" integrate the patch. -->
+
+<!-- '\" END GENERATED TOOL DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+
+<para>Additionally, there is a "tool" named
+<emphasis role="bold">default</emphasis>
+which configures the
+environment with a default set of tools for the current platform.</para>
+
+<para>On posix and cygwin platforms
+the GNU tools (e.g. gcc) are preferred by SCons,
+on Windows the Microsoft tools (e.g. msvc)
+followed by MinGW are preferred by SCons,
+and in OS/2 the IBM tools (e.g. icc) are preferred by SCons.</para>
+
+</refsect2>
+
+<refsect2 id='builder_methods'><title>Builder Methods</title>
+
+<para>Build rules are specified by calling a construction
+environment's builder methods.
+The arguments to the builder methods are
+<emphasis role="bold">target</emphasis>
+(a list of targets to be built,
+usually file names)
+and
+<emphasis role="bold">source</emphasis>
+(a list of sources to be built,
+usually file names).</para>
+
+<para>Because long lists of file names
+can lead to a lot of quoting,
+<command>scons</command>
+supplies a
+<emphasis role="bold">Split()</emphasis>
+global function
+and a same-named environment method
+that split a single string
+into a list, separated on
+strings of white-space characters.
+(These are similar to the split() member function of Python strings
+but work even if the input isn't a string.)</para>
+
+<para>Like all Python arguments,
+the target and source arguments to a builder method
+can be specified either with or without
+the "target" and "source" keywords.
+When the keywords are omitted,
+the target is first,
+followed by the source.
+The following are equivalent examples of calling the Program builder method:</para>
+
+<literallayout class="monospaced">
+env.Program('bar', ['bar.c', 'foo.c'])
+env.Program('bar', Split('bar.c foo.c'))
+env.Program('bar', env.Split('bar.c foo.c'))
+env.Program(source = ['bar.c', 'foo.c'], target = 'bar')
+env.Program(target = 'bar', Split('bar.c foo.c'))
+env.Program(target = 'bar', env.Split('bar.c foo.c'))
+env.Program('bar', source = 'bar.c foo.c'.split())
+</literallayout>
+
+<para>Target and source file names
+that are not absolute path names
+(that is, do not begin with
+<emphasis role="bold">/</emphasis>
+on POSIX systems
+or
+<emphasis role="bold">\fR
+on Windows systems,
+with or without
+an optional drive letter)
+are interpreted relative to the directory containing the
+SConscript</emphasis>
+file being read.
+An initial
+<emphasis role="bold">#</emphasis>
+(hash mark)
+on a path name means that the rest of the file name
+is interpreted relative to
+the directory containing
+the top-level
+<emphasis role="bold">SConstruct</emphasis>
+file,
+even if the
+<emphasis role="bold">#</emphasis>
+is followed by a directory separator character
+(slash or backslash).</para>
+
+<para>Examples:</para>
+
+<programlisting>
+# The comments describing the targets that will be built
+# assume these calls are in a SConscript file in the
+# a subdirectory named "subdir".
+
+# Builds the program "subdir/foo" from "subdir/foo.c":
+env.Program('foo', 'foo.c')
+
+# Builds the program "/tmp/bar" from "subdir/bar.c":
+env.Program('/tmp/bar', 'bar.c')
+
+# An initial '#' or '#/' are equivalent; the following
+# calls build the programs "foo" and "bar" (in the
+# top-level SConstruct directory) from "subdir/foo.c" and
+# "subdir/bar.c", respectively:
+env.Program('#foo', 'foo.c')
+env.Program('#/bar', 'bar.c')
+
+# Builds the program "other/foo" (relative to the top-level
+# SConstruct directory) from "subdir/foo.c":
+env.Program('#other/foo', 'foo.c')
+</programlisting>
+
+<para>When the target shares the same base name
+as the source and only the suffix varies,
+and if the builder method has a suffix defined for the target file type,
+then the target argument may be omitted completely,
+and
+<command>scons</command>
+will deduce the target file name from
+the source file name.
+The following examples all build the
+executable program
+<emphasis role="bold">bar</emphasis>
+(on POSIX systems)
+or
+<emphasis role="bold">bar.exe</emphasis>
+(on Windows systems)
+from the bar.c source file:</para>
+
+<literallayout class="monospaced">
+env.Program(target = 'bar', source = 'bar.c')
+env.Program('bar', source = 'bar.c')
+env.Program(source = 'bar.c')
+env.Program('bar.c')
+</literallayout>
+
+<para>As a convenience, a
+<emphasis role="bold">srcdir</emphasis>
+keyword argument may be specified
+when calling a Builder.
+When specified,
+all source file strings that are not absolute paths
+will be interpreted relative to the specified
+<emphasis role="bold">srcdir</emphasis>.
+The following example will build the
+<emphasis role="bold">build/prog</emphasis>
+(or
+<emphasis role="bold">build/prog.exe</emphasis>
+on Windows)
+program from the files
+<emphasis role="bold">src/f1.c</emphasis>
+and
+<emphasis role="bold">src/f2.c</emphasis>:</para>
+
+<literallayout class="monospaced">
+env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src')
+</literallayout>
+
+<para>It is possible to override or add construction variables when calling a
+builder method by passing additional keyword arguments.
+These overridden or added
+variables will only be in effect when building the target, so they will not
+affect other parts of the build. For example, if you want to add additional
+libraries for just one program:</para>
+
+<literallayout class="monospaced">
+env.Program('hello', 'hello.c', LIBS=['gl', 'glut'])
+</literallayout>
+
+<para>or generate a shared library with a non-standard suffix:</para>
+
+<literallayout class="monospaced">
+env.SharedLibrary('word', 'word.cpp',
+ SHLIBSUFFIX='.ocx',
+ LIBSUFFIXES=['.ocx'])
+</literallayout>
+
+<para>(Note that both the $SHLIBSUFFIX and $LIBSUFFIXES variables must be set
+if you want SCons to search automatically
+for dependencies on the non-standard library names;
+see the descriptions of these variables, below, for more information.)</para>
+
+<para>It is also possible to use the
+<emphasis>parse_flags</emphasis>
+keyword argument in an override:</para>
+
+<literallayout class="monospaced">
+env = Program('hello', 'hello.c', parse_flags = '-Iinclude -DEBUG -lm')
+</literallayout>
+
+<para>This example adds 'include' to
+<emphasis role="bold">CPPPATH</emphasis>,
+'EBUG' to
+<emphasis role="bold">CPPDEFINES</emphasis>,
+and 'm' to
+<emphasis role="bold">LIBS</emphasis>.</para>
+
+<para>Although the builder methods defined by
+<command>scons</command>
+are, in fact,
+methods of a construction environment object,
+they may also be called without an explicit environment:</para>
+
+<literallayout class="monospaced">
+Program('hello', 'hello.c')
+SharedLibrary('word', 'word.cpp')
+</literallayout>
+
+<para>In this case,
+the methods are called internally using a default construction
+environment that consists of the tools and values that
+<command>scons</command>
+has determined are appropriate for the local system.</para>
+
+<para>Builder methods that can be called without an explicit
+environment may be called from custom Python modules that you
+import into an SConscript file by adding the following
+to the Python module:</para>
+
+<literallayout class="monospaced">
+from SCons.Script import *
+</literallayout>
+
+<para>All builder methods return a list-like object
+containing Nodes that
+represent the target or targets that will be built.
+A
+<emphasis>Node</emphasis>
+is an internal SCons object
+which represents
+build targets or sources.</para>
+
+<para>The returned Node-list object
+can be passed to other builder methods as source(s)
+or passed to any SCons function or method
+where a filename would normally be accepted.
+For example, if it were necessary
+to add a specific
+<option>-D</option>
+flag when compiling one specific object file:</para>
+
+<literallayout class="monospaced">
+bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
+env.Program(source = ['foo.c', bar_obj_list, 'main.c'])
+</literallayout>
+
+<para>Using a Node in this way
+makes for a more portable build
+by avoiding having to specify
+a platform-specific object suffix
+when calling the Program() builder method.</para>
+
+<para>Note that Builder calls will automatically "flatten"
+the source and target file lists,
+so it's all right to have the bar_obj list
+return by the StaticObject() call
+in the middle of the source file list.
+If you need to manipulate a list of lists returned by Builders
+directly using Python,
+you can either build the list by hand:</para>
+
+<literallayout class="monospaced">
+foo = Object('foo.c')
+bar = Object('bar.c')
+objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o']
+for object in objects:
+ print str(object)
+</literallayout>
+
+<para>Or you can use the
+<emphasis role="bold">Flatten</emphasis>()
+function supplied by scons
+to create a list containing just the Nodes,
+which may be more convenient:</para>
+
+<literallayout class="monospaced">
+foo = Object('foo.c')
+bar = Object('bar.c')
+objects = Flatten(['begin.o', foo, 'middle.o', bar, 'end.o'])
+for object in objects:
+ print str(object)
+</literallayout>
+
+<para>Note also that because Builder calls return
+a list-like object, not an actual Python list,
+you should
+<emphasis>not</emphasis>
+use the Python
+<emphasis role="bold">+=</emphasis>
+operator to append Builder results to a Python list.
+Because the list and the object are different types,
+Python will not update the original list in place,
+but will instead create a new Node-list object
+containing the concatenation of the list
+elements and the Builder results.
+This will cause problems for any other Python variables
+in your SCons configuration
+that still hold on to a reference to the original list.
+Instead, use the Python
+<markup>.extend()</markup>
+method to make sure the list is updated in-place.
+Example:</para>
+
+<literallayout class="monospaced">
+object_files = []
+
+# Do NOT use += as follows:
+#
+# object_files += Object('bar.c')
+#
+# It will not update the object_files list in place.
+#
+# Instead, use the .extend() method:
+object_files.extend(Object('bar.c'))
+
+</literallayout>
+
+<para>The path name for a Node's file may be used
+by passing the Node to the Python-builtin
+<function>str()</function>
+function:</para>
+
+<literallayout class="monospaced">
+bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
+print "The path to bar_obj is:", str(bar_obj_list[0])
+</literallayout>
+
+<para>Note again that because the Builder call returns a list,
+we have to access the first element in the list
+<emphasis role="bold">(bar_obj_list[0])</emphasis>
+to get at the Node that actually represents
+the object file.</para>
+
+<para>Builder calls support a
+<emphasis role="bold">chdir</emphasis>
+keyword argument that
+specifies that the Builder's action(s)
+should be executed
+after changing directory.
+If the
+<emphasis role="bold">chdir</emphasis>
+argument is
+a string or a directory Node,
+scons will change to the specified directory.
+If the
+<emphasis role="bold">chdir</emphasis>
+is not a string or Node
+and is non-zero,
+then scons will change to the
+target file's directory.</para>
+
+<literallayout class="monospaced">
+# scons will change to the "sub" subdirectory
+# before executing the "cp" command.
+env.Command('sub/dir/foo.out', 'sub/dir/foo.in',
+ "cp dir/foo.in dir/foo.out",
+ chdir='sub')
+
+# Because chdir is not a string, scons will change to the
+# target's directory ("sub/dir") before executing the
+# "cp" command.
+env.Command('sub/dir/foo.out', 'sub/dir/foo.in',
+ "cp foo.in foo.out",
+ chdir=1)
+</literallayout>
+
+<para>Note that scons will
+<emphasis>not</emphasis>
+automatically modify
+its expansion of
+construction variables like
+<emphasis role="bold">$TARGET</emphasis>
+and
+<emphasis role="bold">$SOURCE</emphasis>
+when using the chdir
+keyword argument--that is,
+the expanded file names
+will still be relative to
+the top-level SConstruct directory,
+and consequently incorrect
+relative to the chdir directory.
+If you use the chdir keyword argument,
+you will typically need to supply a different
+command line using
+expansions like
+<emphasis role="bold">${TARGET.file}</emphasis>
+and
+<emphasis role="bold">${SOURCE.file}</emphasis>
+to use just the filename portion of the
+targets and source.</para>
+
+<para><command>scons</command>
+provides the following builder methods:</para>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" BEGIN GENERATED BUILDER DESCRIPTIONS -->
+
+<!-- '\" The descriptions below of the various SCons Builders are generated -->
+<!-- '\" from the .xml files that live next to the various Python modules in -->
+<!-- '\" the build enginer library. If you're reading this [gnt]roff file -->
+<!-- '\" with an eye towards patching this man page, you can still submit -->
+<!-- '\" a diff against this text, but it will have to be translated to a -->
+<!-- '\" diff against the underlying .xml file before the patch is actually -->
+<!-- '\" accepted. If you do that yourself, it will make it easier to -->
+<!-- '\" integrate the patch. -->
+
+<!-- '\" BEGIN GENERATED BUILDER DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<xsi:include xmlns:xsi="http://www.w3.org/2001/XInclude" href="../generated/builders.gen"/>
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" END GENERATED BUILDER DESCRIPTIONS -->
+
+<!-- '\" The descriptions above of the various SCons Builders are generated -->
+<!-- '\" from the .xml files that live next to the various Python modules in -->
+<!-- '\" the build enginer library. If you're reading this [gnt]roff file -->
+<!-- '\" with an eye towards patching this man page, you can still submit -->
+<!-- '\" a diff against this text, but it will have to be translated to a -->
+<!-- '\" diff against the underlying .xml file before the patch is actually -->
+<!-- '\" accepted. If you do that yourself, it will make it easier to -->
+<!-- '\" integrate the patch. -->
+
+<!-- '\" END GENERATED BUILDER DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+
+
+<para>All
+targets of builder methods automatically depend on their sources.
+An explicit dependency can
+be specified using the
+<emphasis role="bold">Depends</emphasis>
+method of a construction environment (see below).</para>
+
+<para>In addition,
+<command>scons</command>
+automatically scans
+source files for various programming languages,
+so the dependencies do not need to be specified explicitly.
+By default, SCons can
+C source files,
+C++ source files,
+Fortran source files with
+<markup>.F</markup>
+(POSIX systems only),
+<markup>.fpp,</markup>
+or
+<markup>.FPP</markup>
+file extensions,
+and assembly language files with
+<markup>.S</markup>
+(POSIX systems only),
+<markup>.spp,</markup>
+or
+<markup>.SPP</markup>
+files extensions
+for C preprocessor dependencies.
+SCons also has default support
+for scanning D source files,
+You can also write your own Scanners
+to add support for additional source file types.
+These can be added to the default
+Scanner object used by the
+<emphasis role="bold">Object</emphasis>(),
+<emphasis role="bold">StaticObject</emphasis>(),
+and
+<emphasis role="bold">SharedObject</emphasis>()
+Builders by adding them
+to the
+<emphasis role="bold">SourceFileScanner</emphasis>
+object.
+See the section "Scanner Objects"
+below, for more information about
+defining your own Scanner objects
+and using the
+<emphasis role="bold">SourceFileScanner</emphasis>
+object.</para>
+
+</refsect2>
+
+<refsect2 id='methods_and_functions_to_do_things'><title>Methods and Functions to Do Things</title>
+<para>In addition to Builder methods,
+<command>scons</command>
+provides a number of other construction environment methods
+and global functions to
+manipulate the build configuration.</para>
+
+<para>Usually, a construction environment method
+and global function with the same name both exist
+so that you don't have to remember whether
+to a specific bit of functionality
+must be called with or without a construction environment.
+In the following list,
+if you call something as a global function
+it looks like:</para>
+<literallayout class="monospaced">
+Function(<emphasis>arguments</emphasis>)
+</literallayout>
+<para>and if you call something through a construction
+environment it looks like:</para>
+<literallayout class="monospaced">
+env.Function(<emphasis>arguments</emphasis>)
+</literallayout>
+<para>If you can call the functionality in both ways,
+then both forms are listed.</para>
+
+<para>Global functions may be called from custom Python modules that you
+import into an SConscript file by adding the following
+to the Python module:</para>
+
+<literallayout class="monospaced">
+from SCons.Script import *
+</literallayout>
+
+<para>Except where otherwise noted,
+the same-named
+construction environment method
+and global function
+provide the exact same functionality.
+The only difference is that,
+where appropriate,
+calling the functionality through a construction environment will
+substitute construction variables into
+any supplied strings.
+For example:</para>
+
+<literallayout class="monospaced">
+env = Environment(FOO = 'foo')
+Default('$FOO')
+env.Default('$FOO')
+</literallayout>
+
+<para>In the above example,
+the first call to the global
+<emphasis role="bold">Default()</emphasis>
+function will actually add a target named
+<emphasis role="bold">$FOO</emphasis>
+to the list of default targets,
+while the second call to the
+<emphasis role="bold">env.Default()</emphasis>
+construction environment method
+will expand the value
+and add a target named
+<emphasis role="bold">foo</emphasis>
+to the list of default targets.
+For more on construction variable expansion,
+see the next section on
+construction variables.</para>
+
+<para>Construction environment methods
+and global functions supported by
+<command>scons</command>
+include:</para>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" BEGIN GENERATED FUNCTION DESCRIPTIONS -->
+
+<!-- '\" The descriptions below of the various SCons functions are generated -->
+<!-- '\" from the .xml files that live next to the various Python modules in -->
+<!-- '\" the build enginer library. If you're reading this [gnt]roff file -->
+<!-- '\" with an eye towards patching this man page, you can still submit -->
+<!-- '\" a diff against this text, but it will have to be translated to a -->
+<!-- '\" diff against the underlying .xml file before the patch is actually -->
+<!-- '\" accepted. If you do that yourself, it will make it easier to -->
+<!-- '\" integrate the patch. -->
+
+<!-- '\" BEGIN GENERATED FUNCTION DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<xsi:include xmlns:xsi="http://www.w3.org/2001/XInclude" href="../generated/functions.gen"/>
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" END GENERATED FUNCTION DESCRIPTIONS -->
+
+<!-- '\" The descriptions above of the various SCons functions are generated -->
+<!-- '\" from the .xml files that live next to the various Python modules in -->
+<!-- '\" the build enginer library. If you're reading this [gnt]roff file -->
+<!-- '\" with an eye towards patching this man page, you can still submit -->
+<!-- '\" a diff against this text, but it will have to be translated to a -->
+<!-- '\" diff against the underlying .xml file before the patch is actually -->
+<!-- '\" accepted. If you do that yourself, it will make it easier to -->
+<!-- '\" integrate the patch. -->
+
+<!-- '\" END GENERATED FUNCTION DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+
+</refsect2>
+
+<refsect2 id='sconscript_variables'><title>SConscript Variables</title>
+<para>In addition to the global functions and methods,
+<command>scons</command>
+supports a number of Python variables
+that can be used in SConscript files
+to affect how you want the build to be performed.
+These variables may be accessed from custom Python modules that you
+import into an SConscript file by adding the following
+to the Python module:</para>
+
+<literallayout class="monospaced">
+from SCons.Script import *
+</literallayout>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<variablelist>
+ <varlistentry>
+ <term>ARGLIST</term>
+ <listitem>
+<para>A list
+<emphasis>keyword</emphasis>=<emphasis>value</emphasis>
+arguments specified on the command line.
+Each element in the list is a tuple
+containing the
+(<emphasis>keyword</emphasis>,<emphasis>value</emphasis>)
+of the argument.
+The separate
+<emphasis>keyword</emphasis>
+and
+<emphasis>value</emphasis>
+elements of the tuple
+can be accessed by
+subscripting for element
+<emphasis role="bold">[0]</emphasis>
+and
+<emphasis role="bold">[1]</emphasis>
+of the tuple, respectively.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+print "first keyword, value =", ARGLIST[0][0], ARGLIST[0][1]
+print "second keyword, value =", ARGLIST[1][0], ARGLIST[1][1]
+third_tuple = ARGLIST[2]
+print "third keyword, value =", third_tuple[0], third_tuple[1]
+for key, value in ARGLIST:
+ # process key and value
+</literallayout>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ARGUMENTS</term>
+ <listitem>
+<para>A dictionary of all the
+<emphasis>keyword</emphasis>=<emphasis>value</emphasis>
+arguments specified on the command line.
+The dictionary is not in order,
+and if a given keyword has
+more than one value assigned to it
+on the command line,
+the last (right-most) value is
+the one in the
+<emphasis role="bold">ARGUMENTS</emphasis>
+dictionary.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+if ARGUMENTS.get('debug', 0):
+ env = Environment(CCFLAGS = '-g')
+else:
+ env = Environment()
+</literallayout>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BUILD_TARGETS</term>
+ <listitem>
+<para>A list of the targets which
+<command>scons</command>
+will actually try to build,
+regardless of whether they were specified on
+the command line or via the
+<emphasis role="bold">Default</emphasis>()
+function or method.
+The elements of this list may be strings
+<emphasis>or</emphasis>
+nodes, so you should run the list through the Python
+<emphasis role="bold">str</emphasis>
+function to make sure any Node path names
+are converted to strings.</para>
+
+<para>Because this list may be taken from the
+list of targets specified using the
+<emphasis role="bold">Default</emphasis>()
+function or method,
+the contents of the list may change
+on each successive call to
+<emphasis role="bold">Default</emphasis>().
+See the
+<emphasis role="bold">DEFAULT_TARGETS</emphasis>
+list, below,
+for additional information.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+if 'foo' in BUILD_TARGETS:
+ print "Don't forget to test the `foo' program!"
+if 'special/program' in BUILD_TARGETS:
+ SConscript('special')
+</literallayout>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Note that the
+<emphasis role="bold">BUILD_TARGETS</emphasis>
+list only contains targets expected listed
+on the command line or via calls to the
+<emphasis role="bold">Default</emphasis>()
+function or method.
+It does
+<emphasis>not</emphasis>
+contain all dependent targets that will be built as
+a result of making the sure the explicitly-specified
+targets are up to date.</para>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<variablelist>
+ <varlistentry>
+ <term>COMMAND_LINE_TARGETS</term>
+ <listitem>
+<para>A list of the targets explicitly specified on
+the command line.
+If there are no targets specified on the command line,
+the list is empty.
+This can be used, for example,
+to take specific actions only
+when a certain target or targets
+is explicitly being built.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+if 'foo' in COMMAND_LINE_TARGETS:
+ print "Don't forget to test the `foo' program!"
+if 'special/program' in COMMAND_LINE_TARGETS:
+ SConscript('special')
+</literallayout>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>DEFAULT_TARGETS</term>
+ <listitem>
+<para>A list of the target
+<emphasis>nodes</emphasis>
+that have been specified using the
+<emphasis role="bold">Default</emphasis>()
+function or method.
+The elements of the list are nodes,
+so you need to run them through the Python
+<emphasis role="bold">str</emphasis>
+function to get at the path name for each Node.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+print str(DEFAULT_TARGETS[0])
+if 'foo' in map(str, DEFAULT_TARGETS):
+ print "Don't forget to test the `foo' program!"
+</literallayout>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>The contents of the
+<emphasis role="bold">DEFAULT_TARGETS</emphasis>
+list change on on each successive call to the
+<emphasis role="bold">Default</emphasis>()
+function:</para>
+
+<literallayout class="monospaced">
+print map(str, DEFAULT_TARGETS) # originally []
+Default('foo')
+print map(str, DEFAULT_TARGETS) # now a node ['foo']
+Default('bar')
+print map(str, DEFAULT_TARGETS) # now a node ['foo', 'bar']
+Default(None)
+print map(str, DEFAULT_TARGETS) # back to []
+</literallayout>
+
+<para>Consequently, be sure to use
+<emphasis role="bold">DEFAULT_TARGETS</emphasis>
+only after you've made all of your
+<emphasis role="bold">Default</emphasis>()
+calls,
+or else simply be careful of the order
+of these statements in your SConscript files
+so that you don't look for a specific
+default target before it's actually been added to the list.</para>
+
+</refsect2>
+
+<refsect2 id='construction_variables'><title>Construction Variables</title>
+<!-- XXX From Gary Ruben, 23 April 2002: -->
+<!-- I think it would be good to have an example with each construction -->
+<!-- variable description in the documentation. -->
+<!-- eg. -->
+<!-- CC The C compiler -->
+<!-- Example: env["CC"] = "c68x" -->
+<!-- Default: env["CC"] = "cc" -->
+
+<!-- CCCOM The command line ... -->
+<!-- Example: -->
+<!-- To generate the compiler line c68x \-ps \-qq \-mr \-o $TARGET $SOURCES -->
+<!-- env["CC"] = "c68x" -->
+<!-- env["CFLAGS"] = "\-ps \-qq \-mr" -->
+<!-- env["CCCOM"] = "$CC $CFLAGS \-o $TARGET $SOURCES -->
+<!-- Default: -->
+<!-- (I dunno what this is ;\-) -->
+<para>A construction environment has an associated dictionary of
+<emphasis>construction variables</emphasis>
+that are used by built-in or user-supplied build rules.
+Construction variables must follow the same rules for
+Python identifiers:
+the initial character must be an underscore or letter,
+followed by any number of underscores, letters, or digits.</para>
+
+<para>A number of useful construction variables are automatically defined by
+scons for each supported platform, and additional construction variables
+can be defined by the user. The following is a list of the automatically
+defined construction variables:</para>
+
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" BEGIN GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -->
+
+<!-- '\" The descriptions below of the various SCons construction variables -->
+<!-- '\" are generated from the .xml files that live next to the various -->
+<!-- '\" Python modules in the build enginer library. If you're reading -->
+<!-- '\" this [gnt]roff file with an eye towards patching this man page, -->
+<!-- '\" you can still submit a diff against this text, but it will have to -->
+<!-- '\" be translated to a diff against the underlying .xml file before the -->
+<!-- '\" patch is actually accepted. If you do that yourself, it will make -->
+<!-- '\" it easier to integrate the patch. -->
+
+<!-- '\" BEGIN GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<xsi:include xmlns:xsi="http://www.w3.org/2001/XInclude" href="../generated/variables.gen"/>
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+<!-- '\" END GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -->
+
+<!-- '\" The descriptions above of the various SCons construction variables -->
+<!-- '\" are generated from the .xml files that live next to the various -->
+<!-- '\" Python modules in the build enginer library. If you're reading -->
+<!-- '\" this [gnt]roff file with an eye towards patching this man page, -->
+<!-- '\" you can still submit a diff against this text, but it will have to -->
+<!-- '\" be translated to a diff against the underlying .xml file before the -->
+<!-- '\" patch is actually accepted. If you do that yourself, it will make -->
+<!-- '\" it easier to integrate the patch. -->
+
+<!-- '\" END GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -->
+<!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
+
+
+<para>Construction variables can be retrieved and set using the
+<emphasis role="bold">Dictionary</emphasis>
+method of the construction environment:</para>
+
+<literallayout class="monospaced">
+dict = env.Dictionary()
+dict["CC"] = "cc"
+</literallayout>
+
+<para>or using the [] operator:</para>
+
+<literallayout class="monospaced">
+env["CC"] = "cc"
+</literallayout>
+
+<para>Construction variables can also be passed to the construction environment
+constructor:</para>
+
+<literallayout class="monospaced">
+env = Environment(CC="cc")
+</literallayout>
+
+<para>or when copying a construction environment using the
+<emphasis role="bold">Clone</emphasis>
+method:</para>
+
+<literallayout class="monospaced">
+env2 = env.Clone(CC="cl.exe")
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='configure_contexts'><title>Configure Contexts</title>
+
+<para><command>scons</command>
+supports
+<emphasis>configure contexts,</emphasis>
+an integrated mechanism similar to the
+various AC_CHECK macros in GNU autoconf
+for testing for the existence of C header
+files, libraries, etc.
+In contrast to autoconf,
+<command>scons</command>
+does not maintain an explicit cache of the tested values,
+but uses its normal dependency tracking to keep the checked values
+up to date. However, users may override this behaviour with the
+<option>--config</option>
+command line option.</para>
+
+<para>The following methods can be used to perform checks:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>Configure(<emphasis>env</emphasis>, [<emphasis>custom_tests</emphasis>, <emphasis>conf_dir</emphasis>, <emphasis>log_file</emphasis>, <emphasis>config_h</emphasis>, <emphasis>clean</emphasis>, <emphasis>help])</emphasis></term>
+ <term>env.Configure([<emphasis>custom_tests</emphasis>, <emphasis>conf_dir</emphasis>, <emphasis>log_file</emphasis>, <emphasis>config_h</emphasis>, <emphasis>clean</emphasis>, <emphasis>help])</emphasis></term>
+ <listitem>
+<para>This creates a configure context, which can be used to perform checks.
+<emphasis>env</emphasis>
+specifies the environment for building the tests.
+This environment may be modified when performing checks.
+<emphasis>custom_tests</emphasis>
+is a dictionary containing custom tests.
+See also the section about custom tests below.
+By default, no custom tests are added to the configure context.
+<emphasis>conf_dir</emphasis>
+specifies a directory where the test cases are built.
+Note that this directory is not used for building
+normal targets.
+The default value is the directory
+#/.sconf_temp.
+<emphasis>log_file</emphasis>
+specifies a file which collects the output from commands
+that are executed to check for the existence of header files, libraries, etc.
+The default is the file #/config.log.
+If you are using the
+<emphasis role="bold">VariantDir</emphasis>()
+method,
+you may want to specify a subdirectory under your variant directory.
+<emphasis>config_h</emphasis>
+specifies a C header file where the results of tests
+will be written, e.g. #define HAVE_STDIO_H, #define HAVE_LIBM, etc.
+The default is to not write a
+<emphasis role="bold">config.h</emphasis>
+file.
+You can specify the same
+<emphasis role="bold">config.h</emphasis>
+file in multiple calls to Configure,
+in which case
+<command>scons</command>
+will concatenate all results in the specified file.
+Note that SCons
+uses its normal dependency checking
+to decide if it's necessary to rebuild
+the specified
+<emphasis>config_h</emphasis>
+file.
+This means that the file is not necessarily re-built each
+time scons is run,
+but is only rebuilt if its contents will have changed
+and some target that depends on the
+<emphasis>config_h</emphasis>
+file is being built.</para>
+
+<para>The optional
+<emphasis role="bold">clean</emphasis>
+and
+<emphasis role="bold">help</emphasis>
+arguments can be used to suppress execution of the configuration
+tests when the
+<option>-c/--clean</option>
+or
+<option>-H/-h/--help</option>
+options are used, respectively.
+The default behavior is always to execute
+configure context tests,
+since the results of the tests may
+affect the list of targets to be cleaned
+or the help text.
+If the configure tests do not affect these,
+then you may add the
+<emphasis role="bold">clean=False</emphasis>
+or
+<emphasis role="bold">help=False</emphasis>
+arguments
+(or both)
+to avoid unnecessary test execution.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>A created
+<emphasis role="bold">Configure</emphasis>
+instance has the following associated methods:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>SConf.Finish(<emphasis>context</emphasis>)</term>
+ <term><emphasis>sconf</emphasis>.Finish()</term>
+ <listitem>
+<para>This method should be called after configuration is done.
+It returns the environment as modified
+by the configuration checks performed.
+After this method is called, no further checks can be performed
+with this configuration context.
+However, you can create a new
+Configure
+context to perform additional checks.
+Only one context should be active at a time.</para>
+
+<para>The following Checks are predefined.
+(This list will likely grow larger as time
+goes by and developers contribute new useful tests.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckHeader(<emphasis>context</emphasis>, <emphasis>header</emphasis>, [<emphasis>include_quotes</emphasis>, <emphasis>language</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckHeader(<emphasis>header</emphasis>, [<emphasis>include_quotes</emphasis>, <emphasis>language</emphasis>])</term>
+ <listitem>
+<para>Checks if
+<emphasis>header</emphasis>
+is usable in the specified language.
+<emphasis>header</emphasis>
+may be a list,
+in which case the last item in the list
+is the header file to be checked,
+and the previous list items are
+header files whose
+<emphasis role="bold">#include</emphasis>
+lines should precede the
+header line being checked for.
+The optional argument
+<emphasis>include_quotes</emphasis>
+must be
+a two character string, where the first character denotes the opening
+quote and the second character denotes the closing quote.
+By default, both characters are " (double quote).
+The optional argument
+<emphasis>language</emphasis>
+should be either
+<emphasis role="bold">C</emphasis>
+or
+<emphasis role="bold">C++</emphasis>
+and selects the compiler to be used for the check.
+Returns 1 on success and 0 on failure.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckCHeader(<emphasis>context</emphasis>, <emphasis>header</emphasis>, [<emphasis>include_quotes</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckCHeader(<emphasis>header</emphasis>, [<emphasis>include_quotes</emphasis>])</term>
+ <listitem>
+<para>This is a wrapper around
+<emphasis role="bold">SConf.CheckHeader</emphasis>
+which checks if
+<emphasis>header</emphasis>
+is usable in the C language.
+<emphasis>header</emphasis>
+may be a list,
+in which case the last item in the list
+is the header file to be checked,
+and the previous list items are
+header files whose
+<emphasis role="bold">#include</emphasis>
+lines should precede the
+header line being checked for.
+The optional argument
+<emphasis>include_quotes</emphasis>
+must be
+a two character string, where the first character denotes the opening
+quote and the second character denotes the closing quote (both default
+to \N'34').
+Returns 1 on success and 0 on failure.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckCXXHeader(<emphasis>context</emphasis>, <emphasis>header</emphasis>, [<emphasis>include_quotes</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckCXXHeader(<emphasis>header</emphasis>, [<emphasis>include_quotes</emphasis>])</term>
+ <listitem>
+<para>This is a wrapper around
+<emphasis role="bold">SConf.CheckHeader</emphasis>
+which checks if
+<emphasis>header</emphasis>
+is usable in the C++ language.
+<emphasis>header</emphasis>
+may be a list,
+in which case the last item in the list
+is the header file to be checked,
+and the previous list items are
+header files whose
+<emphasis role="bold">#include</emphasis>
+lines should precede the
+header line being checked for.
+The optional argument
+<emphasis>include_quotes</emphasis>
+must be
+a two character string, where the first character denotes the opening
+quote and the second character denotes the closing quote (both default
+to \N'34').
+Returns 1 on success and 0 on failure.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckFunc(<emphasis>context,</emphasis>, <emphasis>function_name</emphasis>, [<emphasis>header</emphasis>, <emphasis>language</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckFunc(<emphasis>function_name</emphasis>, [<emphasis>header</emphasis>, <emphasis>language</emphasis>])</term>
+ <listitem>
+<para>Checks if the specified
+C or C++ function is available.
+<emphasis>function_name</emphasis>
+is the name of the function to check for.
+The optional
+<emphasis>header</emphasis>
+argument is a string
+that will be
+placed at the top
+of the test file
+that will be compiled
+to check if the function exists;
+the default is:</para>
+<literallayout class="monospaced">
+#ifdef __cplusplus
+extern "C"
+#endif
+char function_name();
+</literallayout>
+<para>The optional
+<emphasis>language</emphasis>
+argument should be
+<emphasis role="bold">C</emphasis>
+or
+<emphasis role="bold">C++</emphasis>
+and selects the compiler to be used for the check;
+the default is "C".</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckLib(<emphasis>context</emphasis>, [<emphasis>library</emphasis>, <emphasis>symbol</emphasis>, <emphasis>header</emphasis>, <emphasis>language</emphasis>, <emphasis>autoadd=1</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckLib([<emphasis>library</emphasis>, <emphasis>symbol</emphasis>, <emphasis>header</emphasis>, <emphasis>language</emphasis>, <emphasis>autoadd=1</emphasis>])</term>
+ <listitem>
+<para>Checks if
+<emphasis>library</emphasis>
+provides
+<emphasis>symbol</emphasis>.
+If the value of
+<emphasis>autoadd</emphasis>
+is 1 and the library provides the specified
+<emphasis>symbol</emphasis>,
+appends the library to the LIBS construction environment variable.
+<emphasis>library</emphasis>
+may also be None (the default),
+in which case
+<emphasis>symbol</emphasis>
+is checked with the current LIBS variable,
+or a list of library names,
+in which case each library in the list
+will be checked for
+<emphasis>symbol</emphasis>.
+If
+<emphasis>symbol</emphasis>
+is not set or is
+<emphasis role="bold">None</emphasis>,
+then
+<emphasis role="bold">SConf.CheckLib</emphasis>()
+just checks if
+you can link against the specified
+<emphasis>library</emphasis>.
+The optional
+<emphasis>language</emphasis>
+argument should be
+<emphasis role="bold">C</emphasis>
+or
+<emphasis role="bold">C++</emphasis>
+and selects the compiler to be used for the check;
+the default is "C".
+The default value for
+<emphasis>autoadd</emphasis>
+is 1.
+This method returns 1 on success and 0 on error.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckLibWithHeader(<emphasis>context</emphasis>, <emphasis>library</emphasis>, <emphasis>header</emphasis>, <emphasis>language</emphasis>, [<emphasis>call</emphasis>, <emphasis>autoadd</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckLibWithHeader(<emphasis>library</emphasis>, <emphasis>header</emphasis>, <emphasis>language</emphasis>, [<emphasis>call</emphasis>, <emphasis>autoadd</emphasis>])</term>
+ <listitem>
+
+<para>In contrast to the
+SConf.CheckLib
+call, this call provides a more sophisticated way to check against libraries.
+Again,
+<emphasis>library</emphasis>
+specifies the library or a list of libraries to check.
+<emphasis>header</emphasis>
+specifies a header to check for.
+<emphasis>header</emphasis>
+may be a list,
+in which case the last item in the list
+is the header file to be checked,
+and the previous list items are
+header files whose
+<emphasis role="bold">#include</emphasis>
+lines should precede the
+header line being checked for.
+<emphasis>language</emphasis>
+may be one of 'C','c','CXX','cxx','C++' and 'c++'.
+<emphasis>call</emphasis>
+can be any valid expression (with a trailing ';').
+If
+<emphasis>call</emphasis>
+is not set,
+the default simply checks that you
+can link against the specified
+<emphasis>library</emphasis>.
+<emphasis>autoadd</emphasis>
+specifies whether to add the library to the environment (only if the check
+succeeds). This method returns 1 on success and 0 on error.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckType(<emphasis>context</emphasis>, <emphasis>type_name</emphasis>, [<emphasis>includes</emphasis>, <emphasis>language</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckType(<emphasis>type_name</emphasis>, [<emphasis>includes</emphasis>, <emphasis>language</emphasis>])</term>
+ <listitem>
+<para>Checks for the existence of a type defined by
+<emphasis role="bold">typedef</emphasis>.
+<emphasis>type_name</emphasis>
+specifies the typedef name to check for.
+<emphasis>includes</emphasis>
+is a string containing one or more
+<emphasis role="bold">#include</emphasis>
+lines that will be inserted into the program
+that will be run to test for the existence of the type.
+The optional
+<emphasis>language</emphasis>
+argument should be
+<emphasis role="bold">C</emphasis>
+or
+<emphasis role="bold">C++</emphasis>
+and selects the compiler to be used for the check;
+the default is "C".
+Example:</para>
+<literallayout class="monospaced">
+sconf.CheckType('foo_type', '#include "my_types.h"', 'C++')
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Configure.CheckCC(<emphasis>self</emphasis>)</term>
+ <listitem>
+<para>Checks whether the C compiler (as defined by the CC construction variable) works
+by trying to compile a small source file.</para>
+
+<para>By default, SCons only detects if there is a program with the correct name, not
+if it is a functioning compiler.</para>
+
+<para>This uses the exact same command than the one used by the object builder for C
+source file, so it can be used to detect if a particular compiler flag works or
+not.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Configure.CheckCXX(<emphasis>self</emphasis>)</term>
+ <listitem>
+<para>Checks whether the C++ compiler (as defined by the CXX construction variable)
+works by trying to compile a small source file. By default, SCons only detects
+if there is a program with the correct name, not if it is a functioning compiler.</para>
+
+<para>This uses the exact same command than the one used by the object builder for
+CXX source files, so it can be used to detect if a particular compiler flag
+works or not.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Configure.CheckSHCC(<emphasis>self</emphasis>)</term>
+ <listitem>
+<para>Checks whether the C compiler (as defined by the SHCC construction variable) works
+by trying to compile a small source file. By default, SCons only detects if
+there is a program with the correct name, not if it is a functioning compiler.</para>
+
+<para>This uses the exact same command than the one used by the object builder for C
+source file, so it can be used to detect if a particular compiler flag works or
+not. This does not check whether the object code can be used to build a shared
+library, only that the compilation (not link) succeeds.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Configure.CheckSHCXX(<emphasis>self</emphasis>)</term>
+ <listitem>
+<para>Checks whether the C++ compiler (as defined by the SHCXX construction variable)
+works by trying to compile a small source file. By default, SCons only detects
+if there is a program with the correct name, not if it is a functioning compiler.</para>
+
+<para>This uses the exact same command than the one used by the object builder for
+CXX source files, so it can be used to detect if a particular compiler flag
+works or not. This does not check whether the object code can be used to build
+a shared library, only that the compilation (not link) succeeds.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Example of a typical Configure usage:</para>
+
+<literallayout class="monospaced">
+env = Environment()
+conf = Configure( env )
+if not conf.CheckCHeader( 'math.h' ):
+ print 'We really need math.h!'
+ Exit(1)
+if conf.CheckLibWithHeader( 'qt', 'qapp.h', 'c++',
+ 'QApplication qapp(0,0);' ):
+ # do stuff for qt - usage, e.g.
+ conf.env.Append( CPPFLAGS = '-DWITH_QT' )
+env = conf.Finish()
+</literallayout>
+
+<variablelist>
+ <varlistentry>
+ <term>SConf.CheckTypeSize(<emphasis>context</emphasis>, <emphasis>type_name</emphasis>, [<emphasis>header</emphasis>, <emphasis>language</emphasis>, <emphasis>expect</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckTypeSize(<emphasis>type_name</emphasis>, [<emphasis>header</emphasis>, <emphasis>language</emphasis>, <emphasis>expect</emphasis>])</term>
+ <listitem>
+<para>Checks for the size of a type defined by
+<emphasis role="bold">typedef</emphasis>.
+<emphasis>type_name</emphasis>
+specifies the typedef name to check for.
+The optional
+<emphasis>header</emphasis>
+argument is a string
+that will be
+placed at the top
+of the test file
+that will be compiled
+to check if the function exists;
+the default is empty.
+The optional
+<emphasis>language</emphasis>
+argument should be
+<emphasis role="bold">C</emphasis>
+or
+<emphasis role="bold">C++</emphasis>
+and selects the compiler to be used for the check;
+the default is "C".
+The optional
+<emphasis>expect</emphasis>
+argument should be an integer.
+If this argument is used,
+the function will only check whether the type
+given in type_name has the expected size (in bytes).
+For example,
+<emphasis role="bold">CheckTypeSize('short', expect = 2)</emphasis>
+will return success only if short is two bytes.</para>
+
+<literallayout class="monospaced">
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.CheckDeclaration(<emphasis>context</emphasis>, <emphasis>symbol</emphasis>, [<emphasis>includes</emphasis>, <emphasis>language</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.CheckDeclaration(<emphasis>symbol</emphasis>, [<emphasis>includes</emphasis>, <emphasis>language</emphasis>])</term>
+ <listitem>
+<para>Checks if the specified
+<emphasis>symbol</emphasis>
+is declared.
+<emphasis>includes</emphasis>
+is a string containing one or more
+<emphasis role="bold">#include</emphasis>
+lines that will be inserted into the program
+that will be run to test for the existence of the type.
+The optional
+<emphasis>language</emphasis>
+argument should be
+<emphasis role="bold">C</emphasis>
+or
+<emphasis role="bold">C++</emphasis>
+and selects the compiler to be used for the check;
+the default is "C".</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SConf.Define(<emphasis>context</emphasis>, <emphasis>symbol</emphasis>, [<emphasis>value</emphasis>, <emphasis>comment</emphasis>])</term>
+ <term><emphasis>sconf</emphasis>.Define(<emphasis>symbol</emphasis>, [<emphasis>value</emphasis>, <emphasis>comment</emphasis>])</term>
+ <listitem>
+<para>This function does not check for anything, but defines a
+preprocessor symbol that will be added to the configuration header file.
+It is the equivalent of AC_DEFINE,
+and defines the symbol
+<emphasis>name</emphasis>
+with the optional
+<emphasis role="bold">value</emphasis>
+and the optional comment
+<emphasis role="bold">comment</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Examples:</para>
+
+<programlisting>
+env = Environment()
+conf = Configure( env )
+
+# Puts the following line in the config header file:
+# #define A_SYMBOL
+conf.Define('A_SYMBOL')
+
+# Puts the following line in the config header file:
+# #define A_SYMBOL 1
+conf.Define('A_SYMBOL', 1)
+</programlisting>
+
+
+<para>Be careful about quoting string values, though:</para>
+
+<programlisting>
+env = Environment()
+conf = Configure( env )
+
+# Puts the following line in the config header file:
+# #define A_SYMBOL YA
+conf.Define('A_SYMBOL', "YA")
+
+# Puts the following line in the config header file:
+# #define A_SYMBOL "YA"
+conf.Define('A_SYMBOL', '"YA"')
+</programlisting>
+
+
+<para>For comment:</para>
+
+<programlisting>
+env = Environment()
+conf = Configure( env )
+
+# Puts the following lines in the config header file:
+# /* Set to 1 if you have a symbol */
+# #define A_SYMBOL 1
+conf.Define('A_SYMBOL', 1, 'Set to 1 if you have a symbol')
+</programlisting>
+
+<para>You can define your own custom checks.
+in addition to the predefined checks.
+These are passed in a dictionary to the Configure function.
+This dictionary maps the names of the checks
+to user defined Python callables
+(either Python functions or class instances implementing the
+<emphasis>__call__</emphasis>
+method).
+The first argument of the call is always a
+<emphasis>CheckContext</emphasis>
+instance followed by the arguments,
+which must be supplied by the user of the check.
+These CheckContext instances define the following methods:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>CheckContext.Message(<emphasis>self</emphasis>, <emphasis>text</emphasis>)</term>
+ <listitem>
+
+<para>Usually called before the check is started.
+<emphasis>text</emphasis>
+will be displayed to the user, e.g. 'Checking for library X...'</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CheckContext.Result(<emphasis>self,</emphasis>, <emphasis>res</emphasis>)</term>
+ <listitem>
+
+<para>Usually called after the check is done.
+<emphasis>res</emphasis>
+can be either an integer or a string. In the former case, 'yes' (res != 0)
+or 'no' (res == 0) is displayed to the user, in the latter case the
+given string is displayed.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CheckContext.TryCompile(<emphasis>self</emphasis>, <emphasis>text</emphasis>, <emphasis>extension</emphasis>)</term>
+ <listitem>
+<para>Checks if a file with the specified
+<emphasis>extension</emphasis>
+(e.g. '.c') containing
+<emphasis>text</emphasis>
+can be compiled using the environment's
+<emphasis role="bold">Object</emphasis>
+builder. Returns 1 on success and 0 on failure.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CheckContext.TryLink(<emphasis>self</emphasis>, <emphasis>text</emphasis>, <emphasis>extension</emphasis>)</term>
+ <listitem>
+<para>Checks, if a file with the specified
+<emphasis>extension</emphasis>
+(e.g. '.c') containing
+<emphasis>text</emphasis>
+can be compiled using the environment's
+<emphasis role="bold">Program</emphasis>
+builder. Returns 1 on success and 0 on failure.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CheckContext.TryRun(<emphasis>self</emphasis>, <emphasis>text</emphasis>, <emphasis>extension</emphasis>)</term>
+ <listitem>
+<para>Checks, if a file with the specified
+<emphasis>extension</emphasis>
+(e.g. '.c') containing
+<emphasis>text</emphasis>
+can be compiled using the environment's
+<emphasis role="bold">Program</emphasis>
+builder. On success, the program is run. If the program
+executes successfully
+(that is, its return status is 0),
+a tuple
+<emphasis>(1, outputStr)</emphasis>
+is returned, where
+<emphasis>outputStr</emphasis>
+is the standard output of the
+program.
+If the program fails execution
+(its return status is non-zero),
+then (0, '') is returned.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CheckContext.TryAction(<emphasis>self</emphasis>, <emphasis>action</emphasis>, [<emphasis>text</emphasis>, <emphasis>extension</emphasis>])</term>
+ <listitem>
+<para>Checks if the specified
+<emphasis>action</emphasis>
+with an optional source file (contents
+<emphasis>text</emphasis>
+, extension
+<emphasis>extension</emphasis>
+= ''
+) can be executed.
+<emphasis>action</emphasis>
+may be anything which can be converted to a
+<command>scons</command>
+Action.
+On success,
+<emphasis>(1, outputStr)</emphasis>
+is returned, where
+<emphasis>outputStr</emphasis>
+is the content of the target file.
+On failure
+<emphasis>(0, '')</emphasis>
+is returned.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CheckContext.TryBuild(<emphasis>self</emphasis>, <emphasis>builder</emphasis>, [<emphasis>text</emphasis>, <emphasis>extension</emphasis>])</term>
+ <listitem>
+<para>Low level implementation for testing specific builds;
+the methods above are based on this method.
+Given the Builder instance
+<emphasis>builder</emphasis>
+and the optional
+<emphasis>text</emphasis>
+of a source file with optional
+<emphasis>extension</emphasis>,
+this method returns 1 on success and 0 on failure. In addition,
+<emphasis>self.lastTarget</emphasis>
+is set to the build target node, if the build was successful.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Example for implementing and using custom tests:</para>
+
+<programlisting>
+def CheckQt(context, qtdir):
+ context.Message( 'Checking for qt ...' )
+ lastLIBS = context.env['LIBS']
+ lastLIBPATH = context.env['LIBPATH']
+ lastCPPPATH= context.env['CPPPATH']
+ context.env.Append(LIBS = 'qt', LIBPATH = qtdir + '/lib', CPPPATH = qtdir + '/include' )
+ ret = context.TryLink("""
+#include &lt;qapp.h&gt;
+int main(int argc, char **argv) {
+ QApplication qapp(argc, argv);
+ return 0;
+}
+""")
+ if not ret:
+ context.env.Replace(LIBS = lastLIBS, LIBPATH=lastLIBPATH, CPPPATH=lastCPPPATH)
+ context.Result( ret )
+ return ret
+
+env = Environment()
+conf = Configure( env, custom_tests = { 'CheckQt' : CheckQt } )
+if not conf.CheckQt('/usr/lib/qt'):
+ print 'We really need qt!'
+ Exit(1)
+env = conf.Finish()
+</programlisting>
+
+</refsect2>
+
+<refsect2 id='commandline_construction_variables'><title>Command-Line Construction Variables</title>
+
+<para>Often when building software,
+some variables must be specified at build time.
+For example, libraries needed for the build may be in non-standard
+locations, or site-specific compiler options may need to be passed to the
+compiler.
+<command>scons</command>
+provides a
+<emphasis role="bold">Variables</emphasis>
+object to support overriding construction variables
+on the command line:</para>
+<literallayout class="monospaced">
+$ scons VARIABLE=foo
+</literallayout>
+<para>The variable values can also be specified in a text-based SConscript file.
+To create a Variables object, call the Variables() function:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>Variables([<emphasis>files</emphasis>], [<emphasis>args</emphasis>])</term>
+ <listitem>
+<para>This creates a Variables object that will read construction variables from
+the file or list of filenames specified in
+<emphasis>files</emphasis>.
+If no files are specified,
+or the
+<emphasis>files</emphasis>
+argument is
+<emphasis role="bold">None</emphasis>,
+then no files will be read.
+The optional argument
+<emphasis>args</emphasis>
+is a dictionary of
+values that will override anything read from the specified files;
+it is primarily intended to be passed the
+<emphasis role="bold">ARGUMENTS</emphasis>
+dictionary that holds variables
+specified on the command line.
+Example:</para>
+
+<literallayout class="monospaced">
+vars = Variables('custom.py')
+vars = Variables('overrides.py', ARGUMENTS)
+vars = Variables(None, {FOO:'expansion', BAR:7})
+</literallayout>
+
+<para>Variables objects have the following methods:</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Add(<emphasis>key</emphasis>, [<emphasis>help</emphasis>, <emphasis>default</emphasis>, <emphasis>validator</emphasis>, <emphasis>converter</emphasis>])</term>
+ <listitem>
+<para>This adds a customizable construction variable to the Variables object.
+<emphasis>key</emphasis>
+is the name of the variable.
+<emphasis>help</emphasis>
+is the help text for the variable.
+<emphasis>default</emphasis>
+is the default value of the variable;
+if the default value is
+<emphasis role="bold">None</emphasis>
+and there is no explicit value specified,
+the construction variable will
+<emphasis>not</emphasis>
+be added to the construction environment.
+<emphasis>validator</emphasis>
+is called to validate the value of the variable, and should take three
+arguments: key, value, and environment.
+The recommended way to handle an invalid value is
+to raise an exception (see example below).
+<emphasis>converter</emphasis>
+is called to convert the value before putting it in the environment, and
+should take either a value, or the value and environment, as parameters.
+The
+<emphasis>converter</emphasis>
+must return a value,
+which will be converted into a string
+before being validated by the
+<emphasis>validator</emphasis>
+(if any)
+and then added to the environment.</para>
+
+<para>Examples:</para>
+
+<programlisting>
+vars.Add('CC', 'The C compiler')
+
+def validate_color(key, val, env):
+ if not val in ['red', 'blue', 'yellow']:
+ raise Exception("Invalid color value '%s'" % val)
+vars.Add('COLOR', validator=valid_color)
+</programlisting>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>AddVariables(<emphasis>list</emphasis>)</term>
+ <listitem>
+<para>A wrapper script that adds
+multiple customizable construction variables
+to a Variables object.
+<emphasis>list</emphasis>
+is a list of tuple or list objects
+that contain the arguments
+for an individual call to the
+<emphasis role="bold">Add</emphasis>
+method.</para>
+
+<literallayout class="monospaced">
+opt.AddVariables(
+ ('debug', '', 0),
+ ('CC', 'The C compiler'),
+ ('VALIDATE', 'An option for testing validation',
+ 'notset', validator, None),
+ )
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Update(<emphasis>env</emphasis>, [<emphasis>args</emphasis>])</term>
+ <listitem>
+<para>This updates a construction environment
+<emphasis>env</emphasis>
+with the customized construction variables.
+Any specified variables that are
+<emphasis>not</emphasis>
+configured for the Variables object
+will be saved and may be
+retrieved with the
+<emphasis role="bold">UnknownVariables</emphasis>()
+method, below.</para>
+
+<para>Normally this method is not called directly,
+but is called indirectly by passing the Variables object to
+the Environment() function:</para>
+
+<literallayout class="monospaced">
+env = Environment(variables=vars)
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>The text file(s) that were specified
+when the Variables object was created
+are executed as Python scripts,
+and the values of (global) Python variables set in the file
+are added to the construction environment.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+CC = 'my_cc'
+</literallayout>
+
+<variablelist>
+ <varlistentry>
+ <term>UnknownVariables(<emphasis>)</emphasis></term>
+ <listitem>
+<para>Returns a dictionary containing any
+variables that were specified
+either in the files or the dictionary
+with which the Variables object was initialized,
+but for which the Variables object was
+not configured.</para>
+
+<literallayout class="monospaced">
+env = Environment(variables=vars)
+for key, value in vars.UnknownVariables():
+ print "unknown variable: %s=%s" % (key, value)
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Save(<emphasis>filename</emphasis>, <emphasis>env</emphasis>)</term>
+ <listitem>
+<para>This saves the currently set variables into a script file named
+<emphasis>filename</emphasis>
+that can be used on the next invocation to automatically load the current
+settings. This method combined with the Variables method can be used to
+support caching of variables between runs.</para>
+
+<literallayout class="monospaced">
+env = Environment()
+vars = Variables(['variables.cache', 'custom.py'])
+vars.Add(...)
+vars.Update(env)
+vars.Save('variables.cache', env)
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>GenerateHelpText(<emphasis>env</emphasis>, [<emphasis>sort</emphasis>])</term>
+ <listitem>
+<para>This generates help text documenting the customizable construction
+variables suitable to passing in to the Help() function.
+<emphasis>env</emphasis>
+is the construction environment that will be used to get the actual values
+of customizable variables. Calling with
+an optional
+<emphasis>sort</emphasis>
+function
+will cause the output to be sorted
+by the specified argument.
+The specific
+<emphasis>sort</emphasis>
+function
+should take two arguments
+and return
+-1, 0 or 1
+(like the standard Python
+<emphasis>cmp</emphasis>
+function).</para>
+
+<literallayout class="monospaced">
+Help(vars.GenerateHelpText(env))
+Help(vars.GenerateHelpText(env, sort=cmp))
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>FormatVariableHelpText(<emphasis>env</emphasis>, <emphasis>opt</emphasis>, <emphasis>help</emphasis>, <emphasis>default</emphasis>, <emphasis>actual</emphasis>)</term>
+ <listitem>
+<para>This method returns a formatted string
+containing the printable help text
+for one option.
+It is normally not called directly,
+but is called by the
+<emphasis>GenerateHelpText</emphasis>()
+method to create the returned help text.
+It may be overridden with your own
+function that takes the arguments specified above
+and returns a string of help text formatted to your liking.
+Note that the
+<emphasis>GenerateHelpText</emphasis>()
+will not put any blank lines or extra
+characters in between the entries,
+so you must add those characters to the returned
+string if you want the entries separated.</para>
+
+<programlisting>
+def my_format(env, opt, help, default, actual):
+ fmt = "\n%s: default=%s actual=%s (%s)\n"
+ return fmt % (opt, default. actual, help)
+vars.FormatVariableHelpText = my_format
+</programlisting>
+
+<para>To make it more convenient to work with customizable Variables,
+<command>scons</command>
+provides a number of functions
+that make it easy to set up
+various types of Variables:</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BoolVariable(<emphasis>key</emphasis>, <emphasis>help</emphasis>, <emphasis>default</emphasis>)</term>
+ <listitem>
+<para>Return a tuple of arguments
+to set up a Boolean option.
+The option will use
+the specified name
+<emphasis>key</emphasis>,
+have a default value of
+<emphasis>default</emphasis>,
+and display the specified
+<emphasis>help</emphasis>
+text.
+The option will interpret the values
+<emphasis role="bold">y</emphasis>,
+<emphasis role="bold">yes</emphasis>,
+<emphasis role="bold">t</emphasis>,
+<emphasis role="bold">true</emphasis>,
+<literal>1</literal>,
+<emphasis role="bold">on</emphasis>
+and
+<emphasis role="bold">all</emphasis>
+as true,
+and the values
+<emphasis role="bold">n</emphasis>,
+<emphasis role="bold">no</emphasis>,
+<emphasis role="bold">f</emphasis>,
+<emphasis role="bold">false</emphasis>,
+<literal>0</literal>,
+<emphasis role="bold">off</emphasis>
+and
+<emphasis role="bold">none</emphasis>
+as false.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>EnumVariable(<emphasis>key</emphasis>, <emphasis>help</emphasis>, <emphasis>default</emphasis>, <emphasis>allowed_values</emphasis>, [<emphasis>map</emphasis>, <emphasis>ignorecase</emphasis>])</term>
+ <listitem>
+<para>Return a tuple of arguments
+to set up an option
+whose value may be one
+of a specified list of legal enumerated values.
+The option will use
+the specified name
+<emphasis>key</emphasis>,
+have a default value of
+<emphasis>default</emphasis>,
+and display the specified
+<emphasis>help</emphasis>
+text.
+The option will only support those
+values in the
+<emphasis>allowed_values</emphasis>
+list.
+The optional
+<emphasis>map</emphasis>
+argument is a dictionary
+that can be used to convert
+input values into specific legal values
+in the
+<emphasis>allowed_values</emphasis>
+list.
+If the value of
+<emphasis>ignore_case</emphasis>
+is
+<literal>0</literal>
+(the default),
+then the values are case-sensitive.
+If the value of
+<emphasis>ignore_case</emphasis>
+is
+<literal>1</literal>,
+then values will be matched
+case-insensitive.
+If the value of
+<emphasis>ignore_case</emphasis>
+is
+<literal>2</literal>,
+then values will be matched
+case-insensitive,
+and all input values will be
+converted to lower case.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ListVariable(<emphasis>key</emphasis>, <emphasis>help</emphasis>, <emphasis>default</emphasis>, <emphasis>names</emphasis>, [<emphasis>,</emphasis>map<emphasis>])</emphasis></term>
+ <listitem>
+<para>Return a tuple of arguments
+to set up an option
+whose value may be one or more
+of a specified list of legal enumerated values.
+The option will use
+the specified name
+<emphasis>key</emphasis>,
+have a default value of
+<emphasis>default</emphasis>,
+and display the specified
+<emphasis>help</emphasis>
+text.
+The option will only support the values
+<emphasis role="bold">all</emphasis>,
+<emphasis role="bold">none</emphasis>,
+or the values in the
+<emphasis>names</emphasis>
+list.
+More than one value may be specified,
+with all values separated by commas.
+The default may be a string of
+comma-separated default values,
+or a list of the default values.
+The optional
+<emphasis>map</emphasis>
+argument is a dictionary
+that can be used to convert
+input values into specific legal values
+in the
+<emphasis>names</emphasis>
+list.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PackageVariable(<emphasis>key</emphasis>, <emphasis>help</emphasis>, <emphasis>default</emphasis>)</term>
+ <listitem>
+<para>Return a tuple of arguments
+to set up an option
+whose value is a path name
+of a package that may be
+enabled, disabled or
+given an explicit path name.
+The option will use
+the specified name
+<emphasis>key</emphasis>,
+have a default value of
+<emphasis>default</emphasis>,
+and display the specified
+<emphasis>help</emphasis>
+text.
+The option will support the values
+<emphasis role="bold">yes</emphasis>,
+<emphasis role="bold">true</emphasis>,
+<emphasis role="bold">on</emphasis>,
+<emphasis role="bold">enable</emphasis>
+or
+<emphasis role="bold">search</emphasis>,
+in which case the specified
+<emphasis>default</emphasis>
+will be used,
+or the option may be set to an
+arbitrary string
+(typically the path name to a package
+that is being enabled).
+The option will also support the values
+<emphasis role="bold">no</emphasis>,
+<emphasis role="bold">false</emphasis>,
+<emphasis role="bold">off</emphasis>
+or
+<emphasis role="bold">disable</emphasis>
+to disable use of the specified option.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PathVariable(<emphasis>key</emphasis>, <emphasis>help</emphasis>, <emphasis>default</emphasis>, [<emphasis>validator</emphasis>])</term>
+ <listitem>
+<para>Return a tuple of arguments
+to set up an option
+whose value is expected to be a path name.
+The option will use
+the specified name
+<emphasis>key</emphasis>,
+have a default value of
+<emphasis>default</emphasis>,
+and display the specified
+<emphasis>help</emphasis>
+text.
+An additional
+<emphasis>validator</emphasis>
+may be specified
+that will be called to
+verify that the specified path
+is acceptable.
+SCons supplies the
+following ready-made validators:
+<emphasis role="bold">PathVariable.PathExists</emphasis>
+(the default),
+which verifies that the specified path exists;
+<emphasis role="bold">PathVariable.PathIsFile</emphasis>,
+which verifies that the specified path is an existing file;
+<emphasis role="bold">PathVariable.PathIsDir</emphasis>,
+which verifies that the specified path is an existing directory;
+<emphasis role="bold">PathVariable.PathIsDirCreate</emphasis>,
+which verifies that the specified path is a directory
+and will create the specified directory if the path does not exist;
+and
+<emphasis role="bold">PathVariable.PathAccept</emphasis>,
+which simply accepts the specific path name argument without validation,
+and which is suitable if you want your users
+to be able to specify a directory path that will be
+created as part of the build process, for example.
+You may supply your own
+<emphasis>validator</emphasis>
+function,
+which must take three arguments
+(<emphasis>key</emphasis>,
+the name of the variable to be set;
+<emphasis>val</emphasis>,
+the specified value being checked;
+and
+<emphasis>env</emphasis>,
+the construction environment)
+and should raise an exception
+if the specified value is not acceptable.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>These functions make it
+convenient to create a number
+of variables with consistent behavior
+in a single call to the
+<emphasis role="bold">AddVariables</emphasis>
+method:</para>
+
+<literallayout class="monospaced">
+vars.AddVariables(
+ BoolVariable('warnings', 'compilation with -Wall and similiar', 1),
+ EnumVariable('debug', 'debug output and symbols', 'no'
+ allowed_values=('yes', 'no', 'full'),
+ map={}, ignorecase=0), # case sensitive
+ ListVariable('shared',
+ 'libraries to build as shared libraries',
+ 'all',
+ names = list_of_libs),
+ PackageVariable('x11',
+ 'use X11 installed here (yes = search some places)',
+ 'yes'),
+ PathVariable('qtdir', 'where the root of Qt is installed', qtdir),
+ PathVariable('foopath', 'where the foo library is installed', foopath,
+ PathVariable.PathIsDir),
+
+)
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='file_and_directory_nodes'><title>File and Directory Nodes</title>
+
+<para>The
+<emphasis>File</emphasis>()
+and
+<emphasis>Dir</emphasis>()
+functions return
+<emphasis>File</emphasis>
+and
+<emphasis>Dir</emphasis>
+Nodes, respectively.
+python objects, respectively.
+Those objects have several user-visible attributes
+and methods that are often useful:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>path</term>
+ <listitem>
+<para>The build path
+of the given
+file or directory.
+This path is relative to the top-level directory
+(where the
+<emphasis role="bold">SConstruct</emphasis>
+file is found).
+The build path is the same as the source path if
+<emphasis>variant_dir</emphasis>
+is not being used.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>abspath</term>
+ <listitem>
+<para>The absolute build path of the given file or directory.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>srcnode()</term>
+ <listitem>
+<para>The
+<emphasis>srcnode</emphasis>()
+method
+returns another
+<emphasis>File</emphasis>
+or
+<emphasis>Dir</emphasis>
+object representing the
+<emphasis>source</emphasis>
+path of the given
+<emphasis>File</emphasis>
+or
+<emphasis>Dir</emphasis>.
+The</para>
+
+<literallayout class="monospaced">
+# Get the current build dir's path, relative to top.
+Dir('.').path
+# Current dir's absolute path
+Dir('.').abspath
+# Next line is always '.', because it is the top dir's path relative to itself.
+Dir('#.').path
+File('foo.c').srcnode().path # source path of the given source file.
+
+# Builders also return File objects:
+foo = env.Program('foo.c')
+print "foo will be built in %s"%foo.path
+</literallayout>
+
+<para>A
+<emphasis>Dir</emphasis>
+Node or
+<emphasis>File</emphasis>
+Node can also be used to create
+file and subdirectory Nodes relative to the generating Node.
+A
+<emphasis>Dir</emphasis>
+Node will place the new Nodes within the directory it represents.
+A
+<emphasis>File</emphasis>
+node will place the new Nodes within its parent directory
+(that is, "beside" the file in question).
+If
+<emphasis>d</emphasis>
+is a
+<emphasis>Dir</emphasis>
+(directory) Node and
+<emphasis>f</emphasis>
+is a
+<emphasis>File</emphasis>
+(file) Node,
+then these methods are available:</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<variablelist>
+ <varlistentry>
+ <term><emphasis>d</emphasis>.Dir(<emphasis>name</emphasis>)</term>
+ <listitem>
+<para>Returns a directory Node for a subdirectory of
+<emphasis>d</emphasis>
+named
+<emphasis>name</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>d</emphasis>.File(<emphasis>name</emphasis>)</term>
+ <listitem>
+<para>Returns a file Node for a file within
+<emphasis>d</emphasis>
+named
+<emphasis>name</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>d</emphasis>.Entry(<emphasis>name</emphasis>)</term>
+ <listitem>
+<para>Returns an unresolved Node within
+<emphasis>d</emphasis>
+named
+<emphasis>name</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>f</emphasis>.Dir(<emphasis>name</emphasis>)</term>
+ <listitem>
+<para>Returns a directory named
+<emphasis>name</emphasis>
+within the parent directory of
+<emphasis>f</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>f</emphasis>.File(<emphasis>name</emphasis>)</term>
+ <listitem>
+<para>Returns a file named
+<emphasis>name</emphasis>
+within the parent directory of
+<emphasis>f</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>f</emphasis>.Entry(<emphasis>name</emphasis>)</term>
+ <listitem>
+<para>Returns an unresolved Node named
+<emphasis>name</emphasis>
+within the parent directory of
+<emphasis>f</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>For example:</para>
+
+<literallayout class="monospaced">
+# Get a Node for a file within a directory
+incl = Dir('include')
+f = incl.File('header.h')
+
+# Get a Node for a subdirectory within a directory
+dist = Dir('project-3.2.1)
+src = dist.Dir('src')
+
+# Get a Node for a file in the same directory
+cfile = File('sample.c')
+hfile = cfile.File('sample.h')
+
+# Combined example
+docs = Dir('docs')
+html = docs.Dir('html')
+index = html.File('index.html')
+css = index.File('app.css')
+</literallayout>
+
+</refsect2>
+</refsect1>
+
+<refsect1 id='extending_scons'><title>EXTENDING SCONS</title>
+
+<refsect2 id='builder_objects'><title>Builder Objects</title>
+<para><command>scons</command>
+can be extended to build different types of targets
+by adding new Builder objects
+to a construction environment.
+<emphasis>In general</emphasis>,
+you should only need to add a new Builder object
+when you want to build a new type of file or other external target.
+If you just want to invoke a different compiler or other tool
+to build a Program, Object, Library, or any other
+type of output file for which
+<command>scons</command>
+already has an existing Builder,
+it is generally much easier to
+use those existing Builders
+in a construction environment
+that sets the appropriate construction variables
+(CC, LINK, etc.).</para>
+
+<para>Builder objects are created
+using the
+<emphasis role="bold">Builder</emphasis>
+function.
+The
+<emphasis role="bold">Builder</emphasis>
+function accepts the following arguments:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>action</term>
+ <listitem>
+<para>The command line string used to build the target from the source.
+<emphasis role="bold">action</emphasis>
+can also be:
+a list of strings representing the command
+to be executed and its arguments
+(suitable for enclosing white space in an argument),
+a dictionary
+mapping source file name suffixes to
+any combination of command line strings
+(if the builder should accept multiple source file extensions),
+a Python function;
+an Action object
+(see the next section);
+or a list of any of the above.</para>
+
+<para>An action function
+takes three arguments:
+<emphasis>source</emphasis>
+- a list of source nodes,
+<emphasis>target</emphasis>
+- a list of target nodes,
+<emphasis>env</emphasis>
+- the construction environment.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefix</term>
+ <listitem>
+<para>The prefix that will be prepended to the target file name.
+This may be specified as a:</para>
+
+ <blockquote>
+
+<para>*
+<emphasis>string</emphasis>,</para>
+
+
+<para>*
+<emphasis>callable object</emphasis>
+- a function or other callable that takes
+two arguments (a construction environment and a list of sources)
+and returns a prefix,</para>
+
+
+<para>*
+<emphasis>dictionary</emphasis>
+- specifies a mapping from a specific source suffix (of the first
+source specified) to a corresponding target prefix. Both the source
+suffix and target prefix specifications may use environment variable
+substitution, and the target prefix (the 'value' entries in the
+dictionary) may also be a callable object. The default target prefix
+may be indicated by a dictionary entry with a key value of None.
+ </para></blockquote>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+
+<programlisting>
+b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
+ prefix = "file-")
+
+def gen_prefix(env, sources):
+ return "file-" + env['PLATFORM'] + '-'
+b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
+ prefix = gen_prefix)
+
+b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
+ suffix = { None: "file-",
+ "$SRC_SFX_A": gen_prefix })
+</programlisting>
+
+<variablelist>
+ <varlistentry>
+ <term>suffix</term>
+ <listitem>
+<para>The suffix that will be appended to the target file name.
+This may be specified in the same manner as the prefix above.
+If the suffix is a string, then
+<command>scons</command>
+will append a '.' to the beginning of the suffix if it's not already
+there. The string returned by callable object (or obtained from the
+dictionary) is untouched and must append its own '.' to the beginning
+if one is desired.</para>
+
+<programlisting>
+b = Builder("build_it &lt; $SOURCE &gt; $TARGET"
+ suffix = "-file")
+
+def gen_suffix(env, sources):
+ return "." + env['PLATFORM'] + "-file"
+b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
+ suffix = gen_suffix)
+
+b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
+ suffix = { None: ".sfx1",
+ "$SRC_SFX_A": gen_suffix })
+</programlisting>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ensure_suffix</term>
+ <listitem>
+<para>When set to any true value, causes
+<command>scons</command>
+to add the target suffix specified by the
+<emphasis>suffix</emphasis>
+keyword to any target strings
+that have a different suffix.
+(The default behavior is to leave untouched
+any target file name that looks like it already has any suffix.)</para>
+
+<literallayout class="monospaced">
+b1 = Builder("build_it &lt; $SOURCE &gt; $TARGET"
+ suffix = ".out")
+b2 = Builder("build_it &lt; $SOURCE &gt; $TARGET"
+ suffix = ".out",
+ ensure_suffix)
+env = Environment()
+env['BUILDERS']['B1'] = b1
+env['BUILDERS']['B2'] = b2
+
+# Builds "foo.txt" because ensure_suffix is not set.
+env.B1('foo.txt', 'foo.in')
+
+# Builds "bar.txt.out" because ensure_suffix is set.
+env.B2('bar.txt', 'bar.in')
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>src_suffix</term>
+ <listitem>
+<para>The expected source file name suffix. This may be a string or a list
+of strings.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>target_scanner</term>
+ <listitem>
+<para>A Scanner object that
+will be invoked to find
+implicit dependencies for this target file.
+This keyword argument should be used
+for Scanner objects that find
+implicit dependencies
+based only on the target file
+and the construction environment,
+<emphasis>not</emphasis>
+for implicit dependencies based on source files.
+(See the section "Scanner Objects" below,
+for information about creating Scanner objects.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source_scanner</term>
+ <listitem>
+<para>A Scanner object that
+will be invoked to
+find implicit dependencies in
+any source files
+used to build this target file.
+This is where you would
+specify a scanner to
+find things like
+<emphasis role="bold">#include</emphasis>
+lines in source files.
+The pre-built
+<emphasis role="bold">DirScanner</emphasis>
+Scanner object may be used to
+indicate that this Builder
+should scan directory trees
+for on-disk changes to files
+that
+<command>scons</command>
+does not know about from other Builder or function calls.
+(See the section "Scanner Objects" below,
+for information about creating your own Scanner objects.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>target_factory</term>
+ <listitem>
+<para>A factory function that the Builder will use
+to turn any targets specified as strings into SCons Nodes.
+By default,
+SCons assumes that all targets are files.
+Other useful target_factory
+values include
+<emphasis role="bold">Dir</emphasis>,
+for when a Builder creates a directory target,
+and
+<emphasis role="bold">Entry</emphasis>,
+for when a Builder can create either a file
+or directory target.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+MakeDirectoryBuilder = Builder(action=my_mkdir, target_factory=Dir)
+env = Environment()
+env.Append(BUILDERS = {'MakeDirectory':MakeDirectoryBuilder})
+env.MakeDirectory('new_directory', [])
+</literallayout>
+
+
+<para>Note that the call to the MakeDirectory Builder
+needs to specify an empty source list
+to make the string represent the builder's target;
+without that, it would assume the argument is the source,
+and would try to deduce the target name from it,
+which in the absence of an automatically-added prefix or suffix
+would lead to a matching target and source name
+and a circular dependency.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source_factory</term>
+ <listitem>
+<para>A factory function that the Builder will use
+to turn any sources specified as strings into SCons Nodes.
+By default,
+SCons assumes that all source are files.
+Other useful source_factory
+values include
+<emphasis role="bold">Dir</emphasis>,
+for when a Builder uses a directory as a source,
+and
+<emphasis role="bold">Entry</emphasis>,
+for when a Builder can use files
+or directories (or both) as sources.</para>
+
+<para>Example:</para>
+
+<programlisting>
+CollectBuilder = Builder(action=my_mkdir, source_factory=Entry)
+env = Environment()
+env.Append(BUILDERS = {'Collect':CollectBuilder})
+env.Collect('archive', ['directory_name', 'file_name'])
+</programlisting>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>emitter</term>
+ <listitem>
+<para>A function or list of functions to manipulate the target and source
+lists before dependencies are established
+and the target(s) are actually built.
+<emphasis role="bold">emitter</emphasis>
+can also be a string containing a construction variable to expand
+to an emitter function or list of functions,
+or a dictionary mapping source file suffixes
+to emitter functions.
+(Only the suffix of the first source file
+is used to select the actual emitter function
+from an emitter dictionary.)</para>
+
+<para>An emitter function
+takes three arguments:
+<emphasis>source</emphasis>
+- a list of source nodes,
+<emphasis>target</emphasis>
+- a list of target nodes,
+<emphasis>env</emphasis>
+- the construction environment.
+An emitter must return a tuple containing two lists,
+the list of targets to be built by this builder,
+and the list of sources for this builder.</para>
+
+<para>Example:</para>
+
+<programlisting>
+def e(target, source, env):
+ return (target + ['foo.foo'], source + ['foo.src'])
+
+# Simple association of an emitter function with a Builder.
+b = Builder("my_build &lt; $TARGET &gt; $SOURCE",
+ emitter = e)
+
+def e2(target, source, env):
+ return (target + ['bar.foo'], source + ['bar.src'])
+
+# Simple association of a list of emitter functions with a Builder.
+b = Builder("my_build &lt; $TARGET &gt; $SOURCE",
+ emitter = [e, e2])
+
+# Calling an emitter function through a construction variable.
+env = Environment(MY_EMITTER = e)
+b = Builder("my_build &lt; $TARGET &gt; $SOURCE",
+ emitter = '$MY_EMITTER')
+
+# Calling a list of emitter functions through a construction variable.
+env = Environment(EMITTER_LIST = [e, e2])
+b = Builder("my_build &lt; $TARGET &gt; $SOURCE",
+ emitter = '$EMITTER_LIST')
+
+# Associating multiple emitters with different file
+# suffixes using a dictionary.
+def e_suf1(target, source, env):
+ return (target + ['another_target_file'], source)
+def e_suf2(target, source, env):
+ return (target, source + ['another_source_file'])
+b = Builder("my_build &lt; $TARGET &gt; $SOURCE",
+ emitter = {'.suf1' : e_suf1,
+ '.suf2' : e_suf2})
+</programlisting>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>multi</term>
+ <listitem>
+<para>Specifies whether this builder is allowed to be called multiple times for
+the same target file(s). The default is 0, which means the builder
+can not be called multiple times for the same target file(s). Calling a
+builder multiple times for the same target simply adds additional source
+files to the target; it is not allowed to change the environment associated
+with the target, specify addition environment overrides, or associate a different
+builder with the target.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>env</term>
+ <listitem>
+<para>A construction environment that can be used
+to fetch source code using this Builder.
+(Note that this environment is
+<emphasis>not</emphasis>
+used for normal builds of normal target files,
+which use the environment that was
+used to call the Builder for the target file.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>generator</term>
+ <listitem>
+<para>A function that returns a list of actions that will be executed to build
+the target(s) from the source(s).
+The returned action(s) may be
+an Action object, or anything that
+can be converted into an Action object
+(see the next section).</para>
+
+<para>The generator function
+takes four arguments:
+<emphasis>source</emphasis>
+- a list of source nodes,
+<emphasis>target</emphasis>
+- a list of target nodes,
+<emphasis>env</emphasis>
+- the construction environment,
+<emphasis>for_signature</emphasis>
+- a Boolean value that specifies
+whether the generator is being called
+for generating a build signature
+(as opposed to actually executing the command).
+Example:</para>
+
+<programlisting>
+def g(source, target, env, for_signature):
+ return [["gcc", "-c", "-o"] + target + source]
+
+b = Builder(generator=g)
+</programlisting>
+
+
+<para>The
+<emphasis>generator</emphasis>
+and
+<emphasis>action</emphasis>
+arguments must not both be used for the same Builder.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>src_builder</term>
+ <listitem>
+<para>Specifies a builder to use when a source file name suffix does not match
+any of the suffixes of the builder. Using this argument produces a
+multi-stage builder.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>single_source</term>
+ <listitem>
+<para>Specifies that this builder expects exactly one source file per call. Giving
+more than one source file without target files results in implicitely calling
+the builder multiple times (once for each source given). Giving multiple
+source files together with target files results in a UserError exception.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>The
+<emphasis>generator</emphasis>
+and
+<emphasis>action</emphasis>
+arguments must not both be used for the same Builder.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>source_ext_match</term>
+ <listitem>
+<para>When the specified
+<emphasis>action</emphasis>
+argument is a dictionary,
+the default behavior when a builder is passed
+multiple source files is to make sure that the
+extensions of all the source files match.
+If it is legal for this builder to be
+called with a list of source files with different extensions,
+this check can be suppressed by setting
+<emphasis role="bold">source_ext_match</emphasis>
+to
+<emphasis role="bold">None</emphasis>
+or some other non-true value.
+When
+<emphasis role="bold">source_ext_match</emphasis>
+is disable,
+<command>scons</command>
+will use the suffix of the first specified
+source file to select the appropriate action from the
+<emphasis>action</emphasis>
+dictionary.</para>
+
+<para>In the following example,
+the setting of
+<emphasis role="bold">source_ext_match</emphasis>
+prevents
+<command>scons</command>
+from exiting with an error
+due to the mismatched suffixes of
+<emphasis role="bold">foo.in</emphasis>
+and
+<emphasis role="bold">foo.extra</emphasis>.</para>
+
+<literallayout class="monospaced">
+b = Builder(action={'.in' : 'build $SOURCES &gt; $TARGET'},
+ source_ext_match = None)
+
+env = Environment(BUILDERS = {'MyBuild':b})
+env.MyBuild('foo.out', ['foo.in', 'foo.extra'])
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>env</term>
+ <listitem>
+<para>A construction environment that can be used
+to fetch source code using this Builder.
+(Note that this environment is
+<emphasis>not</emphasis>
+used for normal builds of normal target files,
+which use the environment that was
+used to call the Builder for the target file.)</para>
+
+<literallayout class="monospaced">
+b = Builder(action="build &lt; $SOURCE &gt; $TARGET")
+env = Environment(BUILDERS = {'MyBuild' : b})
+env.MyBuild('foo.out', 'foo.in', my_arg = 'xyzzy')
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chdir</term>
+ <listitem>
+<para>A directory from which scons
+will execute the
+action(s) specified
+for this Builder.
+If the
+<emphasis role="bold">chdir</emphasis>
+argument is
+a string or a directory Node,
+scons will change to the specified directory.
+If the
+<emphasis role="bold">chdir</emphasis>
+is not a string or Node
+and is non-zero,
+then scons will change to the
+target file's directory.</para>
+
+<para>Note that scons will
+<emphasis>not</emphasis>
+automatically modify
+its expansion of
+construction variables like
+<emphasis role="bold">$TARGET</emphasis>
+and
+<emphasis role="bold">$SOURCE</emphasis>
+when using the chdir
+keyword argument--that is,
+the expanded file names
+will still be relative to
+the top-level SConstruct directory,
+and consequently incorrect
+relative to the chdir directory.
+Builders created using chdir keyword argument,
+will need to use construction variable
+expansions like
+<emphasis role="bold">${TARGET.file}</emphasis>
+and
+<emphasis role="bold">${SOURCE.file}</emphasis>
+to use just the filename portion of the
+targets and source.</para>
+
+<literallayout class="monospaced">
+b = Builder(action="build &lt; ${SOURCE.file} &gt; ${TARGET.file}",
+ chdir=1)
+env = Environment(BUILDERS = {'MyBuild' : b})
+env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in')
+</literallayout>
+
+<para><emphasis role="bold">WARNING:</emphasis>
+Python only keeps one current directory
+location for all of the threads.
+This means that use of the
+<emphasis role="bold">chdir</emphasis>
+argument
+will
+<emphasis>not</emphasis>
+work with the SCons
+<option>-j</option>
+option,
+because individual worker threads spawned
+by SCons interfere with each other
+when they start changing directory.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Any additional keyword arguments supplied
+when a Builder object is created
+(that is, when the Builder() function is called)
+will be set in the executing construction
+environment when the Builder object is called.
+The canonical example here would be
+to set a construction variable to
+the repository of a source code system.</para>
+
+<para>Any additional keyword arguments supplied
+when a Builder
+<emphasis>object</emphasis>
+is called
+will only be associated with the target
+created by that particular Builder call
+(and any other files built as a
+result of the call).</para>
+
+<para>These extra keyword arguments are passed to the
+following functions:
+command generator functions,
+function Actions,
+and emitter functions.</para>
+
+</refsect2>
+
+<refsect2 id='action_objects'><title>Action Objects</title>
+
+<para>The
+<emphasis role="bold">Builder</emphasis>()
+function will turn its
+<emphasis role="bold">action</emphasis>
+keyword argument into an appropriate
+internal Action object.
+You can also explicity create Action objects
+using the
+<emphasis role="bold">Action</emphasis>()
+global function,
+which can then be passed to the
+<emphasis role="bold">Builder</emphasis>()
+function.
+This can be used to configure
+an Action object more flexibly,
+or it may simply be more efficient
+than letting each separate Builder object
+create a separate Action
+when multiple
+Builder objects need to do the same thing.</para>
+
+<para>The
+<emphasis role="bold">Action</emphasis>()
+global function
+returns an appropriate object for the action
+represented by the type of the first argument:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>Action</term>
+ <listitem>
+<para>If the first argument is already an Action object,
+the object is simply returned.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>String</term>
+ <listitem>
+<para>If the first argument is a string,
+a command-line Action is returned.
+Note that the command-line string
+may be preceded by an
+<emphasis role="bold">@</emphasis>
+(at-sign)
+to suppress printing of the specified command line,
+or by a
+<emphasis role="bold">-</emphasis>
+(hyphen)
+to ignore the exit status from the specified command:</para>
+
+<literallayout class="monospaced">
+Action('$CC -c -o $TARGET $SOURCES')
+
+# Doesn't print the line being executed.
+Action('@build $TARGET $SOURCES')
+
+# Ignores return value
+Action('-build $TARGET $SOURCES')
+</literallayout>
+<!-- XXX From Gary Ruben, 23 April 2002: -->
+<!-- What would be useful is a discussion of how you execute command -->
+<!-- shell commands ie. what is the process used to spawn the shell, pass -->
+<!-- environment variables to it etc., whether there is one shell per -->
+<!-- environment or one per command etc. It might help to look at the Gnu -->
+<!-- make documentation to see what they think is important to discuss about -->
+<!-- a build system. I'm sure you can do a better job of organising the -->
+<!-- documentation than they have :\-) -->
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>List</term>
+ <listitem>
+<para>If the first argument is a list,
+then a list of Action objects is returned.
+An Action object is created as necessary
+for each element in the list.
+If an element
+<emphasis>within</emphasis>
+the list is itself a list,
+the internal list is the
+command and arguments to be executed via
+the command line.
+This allows white space to be enclosed
+in an argument by defining
+a command in a list within a list:</para>
+
+<literallayout class="monospaced">
+Action([['cc', '-c', '-DWHITE SPACE', '-o', '$TARGET', '$SOURCES']])
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Function</term>
+ <listitem>
+<para>If the first argument is a Python function,
+a function Action is returned.
+The Python function must take three keyword arguments,
+<emphasis role="bold">target</emphasis>
+(a Node object representing the target file),
+<emphasis role="bold">source</emphasis>
+(a Node object representing the source file)
+and
+<emphasis role="bold">env</emphasis>
+(the construction environment
+used for building the target file).
+The
+<emphasis role="bold">target</emphasis>
+and
+<emphasis role="bold">source</emphasis>
+arguments may be lists of Node objects if there is
+more than one target file or source file.
+The actual target and source file name(s) may
+be retrieved from their Node objects
+via the built-in Python str() function:</para>
+
+<literallayout class="monospaced">
+target_file_name = str(target)
+source_file_names = map(lambda x: str(x), source)
+</literallayout>
+
+<para>The function should return
+<literal>0</literal>
+or
+<emphasis role="bold">None</emphasis>
+to indicate a successful build of the target file(s).
+The function may raise an exception
+or return a non-zero exit status
+to indicate an unsuccessful build.</para>
+
+<programlisting>
+def build_it(target = None, source = None, env = None):
+ # build the target from the source
+ return 0
+
+a = Action(build_it)
+</programlisting>
+
+<para>If the action argument is not one of the above,
+None is returned.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+
+<para>The second argument is optional and is used to define the output
+which is printed when the Action is actually performed.
+In the absence of this parameter,
+or if it's an empty string,
+a default output depending on the type of the action is used.
+For example, a command-line action will print the executed command.
+The argument must be either a Python function or a string.</para>
+
+<para>In the first case,
+it's a function that returns a string to be printed
+to describe the action being executed.
+The function may also be specified by the
+<emphasis>strfunction</emphasis>=
+keyword argument.
+Like a function to build a file,
+this function must take three keyword arguments:
+<emphasis role="bold">target</emphasis>
+(a Node object representing the target file),
+<emphasis role="bold">source</emphasis>
+(a Node object representing the source file)
+and
+<emphasis role="bold">env</emphasis>
+(a construction environment).
+The
+<emphasis role="bold">target</emphasis>
+and
+<emphasis role="bold">source</emphasis>
+arguments may be lists of Node objects if there is
+more than one target file or source file.</para>
+
+<para>In the second case, you provide the string itself.
+The string may also be specified by the
+<emphasis>cmdstr</emphasis>=
+keyword argument.
+The string typically contains variables, notably
+$TARGET(S) and $SOURCE(S), or consists of just a single
+variable, which is optionally defined somewhere else.
+SCons itself heavily uses the latter variant.</para>
+
+<para>Examples:</para>
+
+<programlisting>
+def build_it(target, source, env):
+ # build the target from the source
+ return 0
+
+def string_it(target, source, env):
+ return "building '%s' from '%s'" % (target[0], source[0])
+
+# Use a positional argument.
+f = Action(build_it, string_it)
+s = Action(build_it, "building '$TARGET' from '$SOURCE'")
+
+# Alternatively, use a keyword argument.
+f = Action(build_it, strfunction=string_it)
+s = Action(build_it, cmdstr="building '$TARGET' from '$SOURCE'")
+
+# You can provide a configurable variable.
+l = Action(build_it, '$STRINGIT')
+</programlisting>
+
+<para>The third and succeeding arguments, if present,
+may either be a construction variable or a list of construction variables
+whose values will be included in the signature of the Action
+when deciding whether a target should be rebuilt because the action changed.
+The variables may also be specified by a
+<emphasis>varlist</emphasis>=
+keyword parameter;
+if both are present, they are combined.
+This is necessary whenever you want a target to be rebuilt
+when a specific construction variable changes.
+This is not often needed for a string action,
+as the expanded variables will normally be part of the command line,
+but may be needed if a Python function action uses
+the value of a construction variable when generating the command line.</para>
+
+<programlisting>
+def build_it(target, source, env):
+ # build the target from the 'XXX' construction variable
+ open(target[0], 'w').write(env['XXX'])
+ return 0
+
+# Use positional arguments.
+a = Action(build_it, '$STRINGIT', ['XXX'])
+
+# Alternatively, use a keyword argument.
+a = Action(build_it, varlist=['XXX'])
+</programlisting>
+
+<para>The
+<emphasis role="bold">Action</emphasis>()
+global function
+can be passed the following
+optional keyword arguments
+to modify the Action object's behavior:</para>
+
+
+<para><emphasis role="bold">chdir</emphasis>
+The
+<emphasis role="bold">chdir</emphasis>
+keyword argument specifies that
+scons will execute the action
+after changing to the specified directory.
+If the
+<emphasis role="bold">chdir</emphasis>
+argument is
+a string or a directory Node,
+scons will change to the specified directory.
+If the
+<emphasis role="bold">chdir</emphasis>
+argument
+is not a string or Node
+and is non-zero,
+then scons will change to the
+target file's directory.</para>
+
+<para>Note that scons will
+<emphasis>not</emphasis>
+automatically modify
+its expansion of
+construction variables like
+<emphasis role="bold">$TARGET</emphasis>
+and
+<emphasis role="bold">$SOURCE</emphasis>
+when using the chdir
+keyword argument--that is,
+the expanded file names
+will still be relative to
+the top-level SConstruct directory,
+and consequently incorrect
+relative to the chdir directory.
+Builders created using chdir keyword argument,
+will need to use construction variable
+expansions like
+<emphasis role="bold">${TARGET.file}</emphasis>
+and
+<emphasis role="bold">${SOURCE.file}</emphasis>
+to use just the filename portion of the
+targets and source.</para>
+
+<literallayout class="monospaced">
+a = Action("build &lt; ${SOURCE.file} &gt; ${TARGET.file}",
+ chdir=1)
+</literallayout>
+
+
+<para><emphasis role="bold">exitstatfunc</emphasis>
+The
+<emphasis role="bold">Action</emphasis>()
+global function
+also takes an
+<emphasis role="bold">exitstatfunc</emphasis>
+keyword argument
+which specifies a function
+that is passed the exit status
+(or return value)
+from the specified action
+and can return an arbitrary
+or modified value.
+This can be used, for example,
+to specify that an Action object's
+return value should be ignored
+under special conditions
+and SCons should, therefore,
+consider that the action always suceeds:</para>
+
+<programlisting>
+def always_succeed(s):
+ # Always return 0, which indicates success.
+ return 0
+a = Action("build &lt; ${SOURCE.file} &gt; ${TARGET.file}",
+ exitstatfunc=always_succeed)
+</programlisting>
+
+
+<para><emphasis role="bold">batch_key</emphasis>
+The
+<emphasis role="bold">batch_key</emphasis>
+keyword argument can be used
+to specify that the Action can create multiple target files
+by processing multiple independent source files simultaneously.
+(The canonical example is "batch compilation"
+of multiple object files
+by passing multiple source files
+to a single invocation of a compiler
+such as Microsoft's Visual C / C++ compiler.)
+If the
+<emphasis role="bold">batch_key</emphasis>
+argument is any non-False, non-callable Python value,
+the configured Action object will cause
+<command>scons</command>
+to collect all targets built with the Action object
+and configured with the same construction environment
+into single invocations of the Action object's
+command line or function.
+Command lines will typically want to use the
+<emphasis role="bold">CHANGED_SOURCES</emphasis>
+construction variable
+(and possibly
+<emphasis role="bold">CHANGED_TARGETS</emphasis>
+as well)
+to only pass to the command line those sources that
+have actually changed since their targets were built.</para>
+
+<para>Example:</para>
+
+<literallayout class="monospaced">
+a = Action('build $CHANGED_SOURCES', batch_key=True)
+</literallayout>
+
+<para>The
+<emphasis role="bold">batch_key</emphasis>
+argument may also be
+a callable function
+that returns a key that
+will be used to identify different
+"batches" of target files to be collected
+for batch building.
+A
+<emphasis role="bold">batch_key</emphasis>
+function must take the following arguments:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>action</term>
+ <listitem>
+<para>The action object.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>env</term>
+ <listitem>
+<para>The construction environment
+configured for the target.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>target</term>
+ <listitem>
+<para>The list of targets for a particular configured action.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source</term>
+ <listitem>
+<para>The list of source for a particular configured action.</para>
+
+<para>The returned key should typically
+be a tuple of values derived from the arguments,
+using any appropriate logic to decide
+how multiple invocations should be batched.
+For example, a
+<emphasis role="bold">batch_key</emphasis>
+function may decide to return
+the value of a specific construction
+variable from the
+<emphasis role="bold">env</emphasis>
+argument
+which will cause
+<command>scons</command>
+to batch-build targets
+with matching values of that variable,
+or perhaps return the
+<emphasis role="bold">id</emphasis>()
+of the entire construction environment,
+in which case
+<command>scons</command>
+will batch-build
+all targets configured with the same construction environment.
+Returning
+<emphasis role="bold">None</emphasis>
+indicates that
+the particular target should
+<emphasis>not</emphasis>
+be part of any batched build,
+but instead will be built
+by a separate invocation of action's
+command or function.
+Example:</para>
+
+<programlisting>
+def batch_key(action, env, target, source):
+ tdir = target[0].dir
+ if tdir.name == 'special':
+ # Don't batch-build any target
+ # in the special/ subdirectory.
+ return None
+ return (id(action), id(env), tdir)
+a = Action('build $CHANGED_SOURCES', batch_key=batch_key)
+</programlisting>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+
+<refsect2 id='miscellaneous_action_functions'><title>Miscellaneous Action Functions</title>
+
+<para><command>scons</command>
+supplies a number of functions
+that arrange for various common
+file and directory manipulations
+to be performed.
+These are similar in concept to "tasks" in the
+Ant build tool,
+although the implementation is slightly different.
+These functions do not actually
+perform the specified action
+at the time the function is called,
+but instead return an Action object
+that can be executed at the
+appropriate time.
+(In Object-Oriented terminology,
+these are actually
+Action
+<emphasis>Factory</emphasis>
+functions
+that return Action objects.)</para>
+
+<para>In practice,
+there are two natural ways
+that these
+Action Functions
+are intended to be used.</para>
+
+<para>First,
+if you need
+to perform the action
+at the time the SConscript
+file is being read,
+you can use the
+<emphasis role="bold">Execute</emphasis>
+global function to do so:</para>
+<literallayout class="monospaced">
+Execute(Touch('file'))
+</literallayout>
+
+<para>Second,
+you can use these functions
+to supply Actions in a list
+for use by the
+<emphasis role="bold">Command</emphasis>
+method.
+This can allow you to
+perform more complicated
+sequences of file manipulation
+without relying
+on platform-specific
+external commands:
+that</para>
+<literallayout class="monospaced">
+env = Environment(TMPBUILD = '/tmp/builddir')
+env.Command('foo.out', 'foo.in',
+ [Mkdir('$TMPBUILD'),
+ Copy('$TMPBUILD', '${SOURCE.dir}'),
+ "cd $TMPBUILD &amp;&amp; make",
+ Delete('$TMPBUILD')])
+</literallayout>
+
+<variablelist>
+ <varlistentry>
+ <term>Chmod(<emphasis>dest</emphasis>, <emphasis>mode</emphasis>)</term>
+ <listitem>
+<para>Returns an Action object that
+changes the permissions on the specified
+<emphasis>dest</emphasis>
+file or directory to the specified
+<emphasis>mode</emphasis>.
+Examples:</para>
+
+<literallayout class="monospaced">
+Execute(Chmod('file', 0755))
+
+env.Command('foo.out', 'foo.in',
+ [Copy('$TARGET', '$SOURCE'),
+ Chmod('$TARGET', 0755)])
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Copy(<emphasis>dest</emphasis>, <emphasis>src</emphasis>)</term>
+ <listitem>
+<para>Returns an Action object
+that will copy the
+<emphasis>src</emphasis>
+source file or directory to the
+<emphasis>dest</emphasis>
+destination file or directory.
+Examples:</para>
+
+<literallayout class="monospaced">
+Execute(Copy('foo.output', 'foo.input'))
+
+env.Command('bar.out', 'bar.in',
+ Copy('$TARGET', '$SOURCE'))
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Delete(<emphasis>entry</emphasis>, [<emphasis>must_exist</emphasis>])</term>
+ <listitem>
+<para>Returns an Action that
+deletes the specified
+<emphasis>entry</emphasis>,
+which may be a file or a directory tree.
+If a directory is specified,
+the entire directory tree
+will be removed.
+If the
+<emphasis>must_exist</emphasis>
+flag is set,
+then a Python error will be thrown
+if the specified entry does not exist;
+the default is
+<emphasis role="bold">must_exist=0</emphasis>,
+that is, the Action will silently do nothing
+if the entry does not exist.
+Examples:</para>
+
+<literallayout class="monospaced">
+Execute(Delete('/tmp/buildroot'))
+
+env.Command('foo.out', 'foo.in',
+ [Delete('${TARGET.dir}'),
+ MyBuildAction])
+
+Execute(Delete('file_that_must_exist', must_exist=1))
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Mkdir(<emphasis>dir</emphasis>)</term>
+ <listitem>
+<para>Returns an Action
+that creates the specified
+directory
+<emphasis>dir .</emphasis>
+Examples:</para>
+
+<literallayout class="monospaced">
+Execute(Mkdir('/tmp/outputdir'))
+
+env.Command('foo.out', 'foo.in',
+ [Mkdir('/tmp/builddir'),
+ Copy('/tmp/builddir/foo.in', '$SOURCE'),
+ "cd /tmp/builddir &amp;&amp; make",
+ Copy('$TARGET', '/tmp/builddir/foo.out')])
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Move(<emphasis>dest</emphasis>, <emphasis>src</emphasis>)</term>
+ <listitem>
+<para>Returns an Action
+that moves the specified
+<emphasis>src</emphasis>
+file or directory to
+the specified
+<emphasis>dest</emphasis>
+file or directory.
+Examples:</para>
+
+<literallayout class="monospaced">
+Execute(Move('file.destination', 'file.source'))
+
+env.Command('output_file', 'input_file',
+ [MyBuildAction,
+ Move('$TARGET', 'file_created_by_MyBuildAction')])
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Touch(<emphasis>file</emphasis>)</term>
+ <listitem>
+<para>Returns an Action
+that updates the modification time
+on the specified
+<emphasis>file</emphasis>.
+Examples:</para>
+
+<literallayout class="monospaced">
+Execute(Touch('file_to_be_touched'))
+
+env.Command('marker', 'input_file',
+ [MyBuildAction,
+ Touch('$TARGET')])
+</literallayout>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+
+<refsect2 id='variable_substitution'><title>Variable Substitution</title>
+
+<para>Before executing a command,
+<command>scons</command>
+performs construction variable interpolation on the strings that make up
+the command line of builders.
+Variables are introduced by a
+<emphasis role="bold">$</emphasis>
+prefix.
+Besides construction variables, scons provides the following
+variables for each command execution:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>CHANGED_SOURCES</term>
+ <listitem>
+<para>The file names of all sources of the build command
+that have changed since the target was last built.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CHANGED_TARGETS</term>
+ <listitem>
+<para>The file names of all targets that would be built
+from sources that have changed since the target was last built.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SOURCE</term>
+ <listitem>
+<para>The file name of the source of the build command,
+or the file name of the first source
+if multiple sources are being built.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SOURCES</term>
+ <listitem>
+<para>The file names of the sources of the build command.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TARGET</term>
+ <listitem>
+<para>The file name of the target being built,
+or the file name of the first target
+if multiple targets are being built.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TARGETS</term>
+ <listitem>
+<para>The file names of all targets being built.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>UNCHANGED_SOURCES</term>
+ <listitem>
+<para>The file names of all sources of the build command
+that have
+<emphasis>not</emphasis>
+changed since the target was last built.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>UNCHANGED_TARGETS</term>
+ <listitem>
+<para>The file names of all targets that would be built
+from sources that have
+<emphasis>not</emphasis>
+changed since the target was last built.</para>
+
+<para>(Note that the above variables are reserved
+and may not be set in a construction environment.)</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>For example, given the construction variable CC='cc', targets=['foo'], and
+sources=['foo.c', 'bar.c']:</para>
+
+<literallayout class="monospaced">
+action='$CC -c -o $TARGET $SOURCES'
+</literallayout>
+
+<para>would produce the command line:</para>
+
+<literallayout class="monospaced">
+cc -c -o foo foo.c bar.c
+</literallayout>
+
+<para>Variable names may be surrounded by curly braces ({})
+to separate the name from the trailing characters.
+Within the curly braces, a variable name may have
+a Python slice subscript appended to select one
+or more items from a list.
+In the previous example, the string:</para>
+
+<literallayout class="monospaced">
+${SOURCES[1]}
+</literallayout>
+
+<para>would produce:</para>
+
+<literallayout class="monospaced">
+bar.c
+</literallayout>
+
+<para>Additionally, a variable name may
+have the following special
+modifiers appended within the enclosing curly braces
+to modify the interpolated string:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>base</term>
+ <listitem>
+<para>The base path of the file name,
+including the directory path
+but excluding any suffix.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dir</term>
+ <listitem>
+<para>The name of the directory in which the file exists.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>file</term>
+ <listitem>
+<para>The file name,
+minus any directory portion.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>filebase</term>
+ <listitem>
+<para>Just the basename of the file,
+minus any suffix
+and minus the directory.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>suffix</term>
+ <listitem>
+<para>Just the file suffix.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>abspath</term>
+ <listitem>
+<para>The absolute path name of the file.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>posix</term>
+ <listitem>
+<para>The POSIX form of the path,
+with directories separated by
+<emphasis role="bold">/</emphasis>
+(forward slashes)
+not backslashes.
+This is sometimes necessary on Windows systems
+when a path references a file on other (POSIX) systems.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>srcpath</term>
+ <listitem>
+<para>The directory and file name to the source file linked to this file through
+<emphasis role="bold">VariantDir</emphasis>().
+If this file isn't linked,
+it just returns the directory and filename unchanged.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>srcdir</term>
+ <listitem>
+<para>The directory containing the source file linked to this file through
+<emphasis role="bold">VariantDir</emphasis>().
+If this file isn't linked,
+it just returns the directory part of the filename.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rsrcpath</term>
+ <listitem>
+<para>The directory and file name to the source file linked to this file through
+<emphasis role="bold">VariantDir</emphasis>().
+If the file does not exist locally but exists in a Repository,
+the path in the Repository is returned.
+If this file isn't linked, it just returns the
+directory and filename unchanged.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rsrcdir</term>
+ <listitem>
+<para>The Repository directory containing the source file linked to this file through
+<emphasis role="bold">VariantDir</emphasis>().
+If this file isn't linked,
+it just returns the directory part of the filename.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>For example, the specified target will
+expand as follows for the corresponding modifiers:</para>
+
+<literallayout class="monospaced">
+$TARGET =&gt; sub/dir/file.x
+${TARGET.base} =&gt; sub/dir/file
+${TARGET.dir} =&gt; sub/dir
+${TARGET.file} =&gt; file.x
+${TARGET.filebase} =&gt; file
+${TARGET.suffix} =&gt; .x
+${TARGET.abspath} =&gt; /top/dir/sub/dir/file.x
+
+SConscript('src/SConscript', variant_dir='sub/dir')
+$SOURCE =&gt; sub/dir/file.x
+${SOURCE.srcpath} =&gt; src/file.x
+${SOURCE.srcdir} =&gt; src
+
+Repository('/usr/repository')
+$SOURCE =&gt; sub/dir/file.x
+${SOURCE.rsrcpath} =&gt; /usr/repository/src/file.x
+${SOURCE.rsrcdir} =&gt; /usr/repository/src
+</literallayout>
+
+<para>Note that curly braces braces may also be used
+to enclose arbitrary Python code to be evaluated.
+(In fact, this is how the above modifiers are substituted,
+they are simply attributes of the Python objects
+that represent TARGET, SOURCES, etc.)
+See the section "Python Code Substitution" below,
+for more thorough examples of
+how this can be used.</para>
+
+<para>Lastly, a variable name
+may be a callable Python function
+associated with a
+construction variable in the environment.
+The function should
+take four arguments:
+<emphasis>target</emphasis>
+- a list of target nodes,
+<emphasis>source</emphasis>
+- a list of source nodes,
+<emphasis>env</emphasis>
+- the construction environment,
+<emphasis>for_signature</emphasis>
+- a Boolean value that specifies
+whether the function is being called
+for generating a build signature.
+SCons will insert whatever
+the called function returns
+into the expanded string:</para>
+
+<programlisting>
+def foo(target, source, env, for_signature):
+ return "bar"
+
+# Will expand $BAR to "bar baz"
+env=Environment(FOO=foo, BAR="$FOO baz")
+</programlisting>
+
+<para>You can use this feature to pass arguments to a
+Python function by creating a callable class
+that stores one or more arguments in an object,
+and then uses them when the
+<function>__call__()</function>
+method is called.
+Note that in this case,
+the entire variable expansion must
+be enclosed by curly braces
+so that the arguments will
+be associated with the
+instantiation of the class:</para>
+
+<literallayout class="monospaced">
+class foo(object):
+ def __init__(self, arg):
+ self.arg = arg
+
+ def __call__(self, target, source, env, for_signature):
+ return self.arg + " bar"
+
+# Will expand $BAR to "my argument bar baz"
+env=Environment(FOO=foo, BAR="${FOO('my argument')} baz")
+</literallayout>
+
+
+<para>The special pseudo-variables
+<emphasis role="bold">$(</emphasis>
+and
+<emphasis role="bold">$)</emphasis>
+may be used to surround parts of a command line
+that may change
+<emphasis>without</emphasis>
+causing a rebuild--that is,
+which are not included in the signature
+of target files built with this command.
+All text between
+<emphasis role="bold">$(</emphasis>
+and
+<emphasis role="bold">$)</emphasis>
+will be removed from the command line
+before it is added to file signatures,
+and the
+<emphasis role="bold">$(</emphasis>
+and
+<emphasis role="bold">$)</emphasis>
+will be removed before the command is executed.
+For example, the command line:</para>
+
+<literallayout class="monospaced">
+echo Last build occurred $( $TODAY $). &gt; $TARGET
+</literallayout>
+
+
+<para>would execute the command:</para>
+
+<literallayout class="monospaced">
+echo Last build occurred $TODAY. &gt; $TARGET
+</literallayout>
+
+
+<para>but the command signature added to any target files would be:</para>
+
+<literallayout class="monospaced">
+echo Last build occurred . &gt; $TARGET
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='python_code_substitution'><title>Python Code Substitution</title>
+
+<para>Any python code within
+<emphasis role="bold">${</emphasis>-<emphasis role="bold">}</emphasis>
+pairs gets evaluated by python 'eval', with the python globals set to
+the current environment's set of construction variables.
+So in the following case:</para>
+<literallayout class="monospaced">
+env['COND'] = 0
+env.Command('foo.out', 'foo.in',
+<!-- '''echo ${COND==1 and 'FOO' or 'BAR'} &gt; $TARGET''') -->
+</literallayout>
+<para>the command executed will be either</para>
+<literallayout class="monospaced">
+echo FOO &gt; foo.out
+</literallayout>
+<para>or</para>
+<literallayout class="monospaced">
+echo BAR &gt; foo.out
+</literallayout>
+<para>according to the current value of env['COND'] when the command is
+executed. The evaluation occurs when the target is being
+built, not when the SConscript is being read. So if env['COND'] is changed
+later in the SConscript, the final value will be used.</para>
+
+<para>Here's a more interesting example. Note that all of COND, FOO, and
+BAR are environment variables, and their values are substituted into
+the final command. FOO is a list, so its elements are interpolated
+separated by spaces.</para>
+
+<literallayout class="monospaced">
+env=Environment()
+env['COND'] = 0
+env['FOO'] = ['foo1', 'foo2']
+env['BAR'] = 'barbar'
+env.Command('foo.out', 'foo.in',
+ 'echo ${COND==1 and FOO or BAR} &gt; $TARGET')
+
+# Will execute this:
+# echo foo1 foo2 &gt; foo.out
+</literallayout>
+
+<para>SCons uses the following rules when converting construction variables into
+command lines:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>String</term>
+ <listitem>
+<para>When the value is a string it is interpreted as a space delimited list of
+command line arguments.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>List</term>
+ <listitem>
+<para>When the value is a list it is interpreted as a list of command line
+arguments. Each element of the list is converted to a string.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Other</term>
+ <listitem>
+<para>Anything that is not a list or string is converted to a string and
+interpreted as a single command line argument.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Newline</term>
+ <listitem>
+<para>Newline characters (\n) delimit lines. The newline parsing is done after
+all other parsing, so it is not possible for arguments (e.g. file names) to
+contain embedded newline characters. This limitation will likely go away in
+a future version of SCons.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect2>
+
+<refsect2 id='scanner_objects'><title>Scanner Objects</title>
+
+<para>You can use the
+<emphasis role="bold">Scanner</emphasis>
+function to define
+objects to scan
+new file types for implicit dependencies.
+The
+<emphasis role="bold">Scanner</emphasis>
+function accepts the following arguments:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>function</term>
+ <listitem>
+<para>This can be either:
+1) a Python function that will process
+the Node (file)
+and return a list of File Nodes
+representing the implicit
+dependencies (file names) found in the contents;
+or:
+2) a dictionary that maps keys
+(typically the file suffix, but see below for more discussion)
+to other Scanners that should be called.</para>
+
+<para>If the argument is actually a Python function,
+the function must take three or four arguments:</para>
+
+<para> def scanner_function(node, env, path):</para>
+
+<para> def scanner_function(node, env, path, arg=None):</para>
+
+<para>The
+<emphasis role="bold">node</emphasis>
+argument is the internal
+SCons node representing the file.
+Use
+<emphasis role="bold">str(node)</emphasis>
+to fetch the name of the file, and
+<emphasis role="bold">node.get_contents()</emphasis>
+to fetch contents of the file.
+Note that the file is
+<emphasis>not</emphasis>
+guaranteed to exist before the scanner is called,
+so the scanner function should check that
+if there's any chance that the scanned file
+might not exist
+(for example, if it's built from other files).</para>
+
+<para>The
+<emphasis role="bold">env</emphasis>
+argument is the construction environment for the scan.
+Fetch values from it using the
+<emphasis role="bold">env.Dictionary()</emphasis>
+method.</para>
+
+<para>The
+<emphasis role="bold">path</emphasis>
+argument is a tuple (or list)
+of directories that can be searched
+for files.
+This will usually be the tuple returned by the
+<emphasis role="bold">path_function</emphasis>
+argument (see below).</para>
+
+<para>The
+<emphasis role="bold">arg</emphasis>
+argument is the argument supplied
+when the scanner was created, if any.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+<para>The name of the Scanner.
+This is mainly used
+to identify the Scanner internally.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>argument</term>
+ <listitem>
+<para>An optional argument that, if specified,
+will be passed to the scanner function
+(described above)
+and the path function
+(specified below).</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>skeys</term>
+ <listitem>
+<para>An optional list that can be used to
+determine which scanner should be used for
+a given Node.
+In the usual case of scanning for file names,
+this argument will be a list of suffixes
+for the different file types that this
+Scanner knows how to scan.
+If the argument is a string,
+then it will be expanded
+into a list by the current environment.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>path_function</term>
+ <listitem>
+<para>A Python function that takes four or five arguments:
+a construction environment,
+a Node for the directory containing
+the SConscript file in which
+the first target was defined,
+a list of target nodes,
+a list of source nodes,
+and an optional argument supplied
+when the scanner was created.
+The
+<emphasis role="bold">path_function</emphasis>
+returns a tuple of directories
+that can be searched for files to be returned
+by this Scanner object.
+(Note that the
+<emphasis role="bold">FindPathDirs</emphasis>()
+function can be used to return a ready-made
+<emphasis role="bold">path_function</emphasis>
+for a given construction variable name,
+instead of having to write your own function from scratch.)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>node_class</term>
+ <listitem>
+<para>The class of Node that should be returned
+by this Scanner object.
+Any strings or other objects returned
+by the scanner function
+that are not of this class
+will be run through the
+<emphasis role="bold">node_factory</emphasis>
+function.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>node_factory</term>
+ <listitem>
+<para>A Python function that will take a string
+or other object
+and turn it into the appropriate class of Node
+to be returned by this Scanner object.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>scan_check</term>
+ <listitem>
+<para>An optional Python function that takes two arguments,
+a Node (file) and a construction environment,
+and returns whether the
+Node should, in fact,
+be scanned for dependencies.
+This check can be used to eliminate unnecessary
+calls to the scanner function when,
+for example, the underlying file
+represented by a Node does not yet exist.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>recursive</term>
+ <listitem>
+<para>An optional flag that
+specifies whether this scanner should be re-invoked
+on the dependency files returned by the scanner.
+When this flag is not set,
+the Node subsystem will
+only invoke the scanner on the file being scanned,
+and not (for example) also on the files
+specified by the #include lines
+in the file being scanned.
+<emphasis>recursive</emphasis>
+may be a callable function,
+in which case it will be called with a list of
+Nodes found and
+should return a list of Nodes
+that should be scanned recursively;
+this can be used to select a specific subset of
+Nodes for additional scanning.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Note that
+<command>scons</command>
+has a global
+<emphasis role="bold">SourceFileScanner</emphasis>
+object that is used by
+the
+<emphasis role="bold">Object</emphasis>(),
+<emphasis role="bold">SharedObject</emphasis>(),
+and
+<emphasis role="bold">StaticObject</emphasis>()
+builders to decide
+which scanner should be used
+for different file extensions.
+You can using the
+<emphasis role="bold">SourceFileScanner.add_scanner</emphasis>()
+method to add your own Scanner object
+to the
+<command>scons</command>
+infrastructure
+that builds target programs or
+libraries from a list of
+source files of different types:</para>
+
+<programlisting>
+def xyz_scan(node, env, path):
+ contents = node.get_text_contents()
+ # Scan the contents and return the included files.
+
+XYZScanner = Scanner(xyz_scan)
+
+SourceFileScanner.add_scanner('.xyz', XYZScanner)
+
+env.Program('my_prog', ['file1.c', 'file2.f', 'file3.xyz'])
+</programlisting>
+
+</refsect2>
+</refsect1>
+
+<refsect1 id='systemspecific_behavior'><title>SYSTEM-SPECIFIC BEHAVIOR</title>
+<para>SCons and its configuration files are very portable,
+due largely to its implementation in Python.
+There are, however, a few portability
+issues waiting to trap the unwary.</para>
+
+<refsect2 id='c_file_suffix'><title>.C file suffix</title>
+<para>SCons handles the upper-case
+<markup>.C</markup>
+file suffix differently,
+depending on the capabilities of
+the underlying system.
+On a case-sensitive system
+such as Linux or UNIX,
+SCons treats a file with a
+<markup>.C</markup>
+suffix as a C++ source file.
+On a case-insensitive system
+such as Windows,
+SCons treats a file with a
+<markup>.C</markup>
+suffix as a C source file.</para>
+</refsect2>
+
+<refsect2 id='f_file_suffix'><title>.F file suffix</title>
+<para>SCons handles the upper-case
+<markup>.F</markup>
+file suffix differently,
+depending on the capabilities of
+the underlying system.
+On a case-sensitive system
+such as Linux or UNIX,
+SCons treats a file with a
+<markup>.F</markup>
+suffix as a Fortran source file
+that is to be first run through
+the standard C preprocessor.
+On a case-insensitive system
+such as Windows,
+SCons treats a file with a
+<markup>.F</markup>
+suffix as a Fortran source file that should
+<emphasis>not</emphasis>
+be run through the C preprocessor.</para>
+</refsect2>
+
+<refsect2 id='windows_cygwin_tools_and_cygwin_python_v'><title>Windows: Cygwin Tools and Cygwin Python vs. Windows Pythons</title>
+<para>Cygwin supplies a set of tools and utilities
+that let users work on a
+Windows system using a more POSIX-like environment.
+The Cygwin tools, including Cygwin Python,
+do this, in part,
+by sharing an ability to interpret UNIX-like path names.
+For example, the Cygwin tools
+will internally translate a Cygwin path name
+like /cygdrive/c/mydir
+to an equivalent Windows pathname
+of C:/mydir (equivalent to C:\mydir).</para>
+
+<para>Versions of Python
+that are built for native Windows execution,
+such as the python.org and ActiveState versions,
+do not have the Cygwin path name semantics.
+This means that using a native Windows version of Python
+to build compiled programs using Cygwin tools
+(such as gcc, bison, and flex)
+may yield unpredictable results.
+"Mixing and matching" in this way
+can be made to work,
+but it requires careful attention to the use of path names
+in your SConscript files.</para>
+
+<para>In practice, users can sidestep
+the issue by adopting the following rules:
+When using gcc,
+use the Cygwin-supplied Python interpreter
+to run SCons;
+when using Microsoft Visual C/C++
+(or some other Windows compiler)
+use the python.org or ActiveState version of Python
+to run SCons.</para>
+</refsect2>
+
+<refsect2 id='windows_sconsbat_file'><title>Windows: scons.bat file</title>
+<para>On Windows systems,
+SCons is executed via a wrapper
+<emphasis role="bold">scons.bat</emphasis>
+file.
+This has (at least) two ramifications:</para>
+
+<para>First, Windows command-line users
+that want to use variable assignment
+on the command line
+may have to put double quotes
+around the assignments:</para>
+
+<literallayout class="monospaced">
+scons "FOO=BAR" "BAZ=BLEH"
+</literallayout>
+
+<para>Second, the Cygwin shell does not
+recognize this file as being the same
+as an
+<command>scons</command>
+command issued at the command-line prompt.
+You can work around this either by
+executing
+<emphasis role="bold">scons.bat</emphasis>
+from the Cygwin command line,
+or by creating a wrapper shell
+script named
+<emphasis role="bold">scons .</emphasis></para>
+
+</refsect2>
+
+<refsect2 id='mingw'><title>MinGW</title>
+
+<para>The MinGW bin directory must be in your PATH environment variable or the
+PATH variable under the ENV construction variable for SCons
+to detect and use the MinGW tools. When running under the native Windows
+Python interpreter, SCons will prefer the MinGW tools over the Cygwin
+tools, if they are both installed, regardless of the order of the bin
+directories in the PATH variable. If you have both MSVC and MinGW
+installed and you want to use MinGW instead of MSVC,
+then you must explicitly tell SCons to use MinGW by passing</para>
+
+<literallayout class="monospaced">
+tools=['mingw']
+</literallayout>
+
+<para>to the Environment() function, because SCons will prefer the MSVC tools
+over the MinGW tools.</para>
+
+</refsect2>
+</refsect1>
+
+<refsect1 id='examples'><title>EXAMPLES</title>
+<para>To help you get started using SCons,
+this section contains a brief overview of some common tasks.</para>
+
+
+<refsect2 id='basic_compilation_from_a_single_source_f'><title>Basic Compilation From a Single Source File</title>
+
+<literallayout class="monospaced">
+env = Environment()
+env.Program(target = 'foo', source = 'foo.c')
+</literallayout>
+
+<para>Note: Build the file by specifying
+the target as an argument
+("scons foo" or "scons foo.exe").
+or by specifying a dot ("scons .").</para>
+
+</refsect2>
+
+<refsect2 id='basic_compilation_from_multiple_source_f'><title>Basic Compilation From Multiple Source Files</title>
+
+<literallayout class="monospaced">
+env = Environment()
+env.Program(target = 'foo', source = Split('f1.c f2.c f3.c'))
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='setting_a_compilation_flag'><title>Setting a Compilation Flag</title>
+
+<literallayout class="monospaced">
+env = Environment(CCFLAGS = '-g')
+env.Program(target = 'foo', source = 'foo.c')
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='search_the_local_directory_for_h_files'><title>Search The Local Directory For .h Files</title>
+
+<para>Note: You do
+<emphasis>not</emphasis>
+need to set CCFLAGS to specify -I options by hand.
+SCons will construct the right -I options from CPPPATH.</para>
+
+<literallayout class="monospaced">
+env = Environment(CPPPATH = ['.'])
+env.Program(target = 'foo', source = 'foo.c')
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='search_multiple_directories_for_h_files'><title>Search Multiple Directories For .h Files</title>
+
+<literallayout class="monospaced">
+env = Environment(CPPPATH = ['include1', 'include2'])
+env.Program(target = 'foo', source = 'foo.c')
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='building_a_static_library'><title>Building a Static Library</title>
+
+<literallayout class="monospaced">
+env = Environment()
+env.StaticLibrary(target = 'foo', source = Split('l1.c l2.c'))
+env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c'])
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='building_a_shared_library'><title>Building a Shared Library</title>
+
+<literallayout class="monospaced">
+env = Environment()
+env.SharedLibrary(target = 'foo', source = ['l5.c', 'l6.c'])
+env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c'))
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='linking_a_local_library_into_a_program'><title>Linking a Local Library Into a Program</title>
+
+<literallayout class="monospaced">
+env = Environment(LIBS = 'mylib', LIBPATH = ['.'])
+env.Library(target = 'mylib', source = Split('l1.c l2.c'))
+env.Program(target = 'prog', source = ['p1.c', 'p2.c'])
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='defining_your_own_builder_object'><title>Defining Your Own Builder Object</title>
+
+<para>Notice that when you invoke the Builder,
+you can leave off the target file suffix,
+and SCons will add it automatically.</para>
+
+<literallayout class="monospaced">
+bld = Builder(action = 'pdftex &lt; $SOURCES &gt; $TARGET'
+ suffix = '.pdf',
+ src_suffix = '.tex')
+env = Environment(BUILDERS = {'PDFBuilder' : bld})
+env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex')
+
+# The following creates "bar.pdf" from "bar.tex"
+env.PDFBuilder(target = 'bar', source = 'bar')
+</literallayout>
+
+<para>Note also that the above initialization
+overwrites the default Builder objects,
+so the Environment created above
+can not be used call Builders like env.Program(),
+env.Object(), env.StaticLibrary(), etc.</para>
+
+</refsect2>
+
+<refsect2 id='adding_your_own_builder_object_to_an_env'><title>Adding Your Own Builder Object to an Environment</title>
+
+<literallayout class="monospaced">
+bld = Builder(action = 'pdftex &lt; $SOURCES &gt; $TARGET'
+ suffix = '.pdf',
+ src_suffix = '.tex')
+env = Environment()
+env.Append(BUILDERS = {'PDFBuilder' : bld})
+env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex')
+env.Program(target = 'bar', source = 'bar.c')
+</literallayout>
+
+<para>You also can use other Pythonic techniques to add
+to the BUILDERS construction variable, such as:</para>
+
+<literallayout class="monospaced">
+env = Environment()
+env['BUILDERS]['PDFBuilder'] = bld
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='defining_your_own_scanner_object'><title>Defining Your Own Scanner Object</title>
+
+<para>The following example shows an extremely simple scanner (the
+<emphasis role="bold">kfile_scan</emphasis>()
+function)
+that doesn't use a search path at all
+and simply returns the
+file names present on any
+<emphasis role="bold">include</emphasis>
+lines in the scanned file.
+This would implicitly assume that all included
+files live in the top-level directory:</para>
+
+<literallayout class="monospaced">
+import re
+
+include_re = re.compile(r'^include\s+(\S+)$', re.M)
+
+def kfile_scan(node, env, path, arg):
+ contents = node.get_text_contents()
+ includes = include_re.findall(contents)
+ return env.File(includes)
+
+kscan = Scanner(name = 'kfile',
+ function = kfile_scan,
+ argument = None,
+ skeys = ['.k'])
+scanners = Environment().Dictionary('SCANNERS')
+env = Environment(SCANNERS = scanners + [kscan])
+
+env.Command('foo', 'foo.k', 'kprocess &lt; $SOURCES &gt; $TARGET')
+
+bar_in = File('bar.in')
+env.Command('bar', bar_in, 'kprocess $SOURCES &gt; $TARGET')
+bar_in.target_scanner = kscan
+</literallayout>
+
+<para>It is important to note that you
+have to return a list of File nodes from the scan function, simple
+strings for the file names won't do. As in the examples we are showing here,
+you can use the
+<emphasis role="bold">File()</emphasis>
+function of your current Environment in order to create nodes on the fly from
+a sequence of file names with relative paths.</para>
+
+<para>Here is a similar but more complete example that searches
+a path of directories
+(specified as the
+<emphasis role="bold">MYPATH</emphasis>
+construction variable)
+for files that actually exist:</para>
+
+<programlisting>
+import re
+import os
+include_re = re.compile(r'^include\s+(\S+)$', re.M)
+
+def my_scan(node, env, path, arg):
+ contents = node.get_text_contents()
+ includes = include_re.findall(contents)
+ if includes == []:
+ return []
+ results = []
+ for inc in includes:
+ for dir in path:
+ file = str(dir) + os.sep + inc
+ if os.path.exists(file):
+ results.append(file)
+ break
+ return env.File(results)
+
+scanner = Scanner(name = 'myscanner',
+ function = my_scan,
+ argument = None,
+ skeys = ['.x'],
+ path_function = FindPathDirs('MYPATH')
+ )
+scanners = Environment().Dictionary('SCANNERS')
+env = Environment(SCANNERS = scanners + [scanner],
+ MYPATH = ['incs'])
+
+env.Command('foo', 'foo.x', 'xprocess &lt; $SOURCES &gt; $TARGET')
+</programlisting>
+
+<para>The
+<emphasis role="bold">FindPathDirs</emphasis>()
+function used in the previous example returns a function
+(actually a callable Python object)
+that will return a list of directories
+specified in the
+<emphasis role="bold">$MYPATH</emphasis>
+construction variable. It lets SCons detect the file
+<emphasis role="bold">incs/foo.inc</emphasis>
+, even if
+<emphasis role="bold">foo.x</emphasis>
+contains the line
+<emphasis role="bold">include foo.inc</emphasis>
+only.
+If you need to customize how the search path is derived,
+you would provide your own
+<emphasis role="bold">path_function</emphasis>
+argument when creating the Scanner object,
+as follows:</para>
+
+<programlisting>
+# MYPATH is a list of directories to search for files in
+def pf(env, dir, target, source, arg):
+ top_dir = Dir('#').abspath
+ results = []
+ if 'MYPATH' in env:
+ for p in env['MYPATH']:
+ results.append(top_dir + os.sep + p)
+ return results
+
+scanner = Scanner(name = 'myscanner',
+ function = my_scan,
+ argument = None,
+ skeys = ['.x'],
+ path_function = pf
+ )
+</programlisting>
+
+</refsect2>
+
+<refsect2 id='creating_a_hierarchical_build'><title>Creating a Hierarchical Build</title>
+
+<para>Notice that the file names specified in a subdirectory's
+SConscript
+file are relative to that subdirectory.</para>
+
+<programlisting>
+SConstruct:
+
+ env = Environment()
+ env.Program(target = 'foo', source = 'foo.c')
+
+ SConscript('sub/SConscript')
+
+sub/SConscript:
+
+ env = Environment()
+ # Builds sub/foo from sub/foo.c
+ env.Program(target = 'foo', source = 'foo.c')
+
+ SConscript('dir/SConscript')
+
+sub/dir/SConscript:
+
+ env = Environment()
+ # Builds sub/dir/foo from sub/dir/foo.c
+ env.Program(target = 'foo', source = 'foo.c')
+</programlisting>
+
+</refsect2>
+
+<refsect2 id='sharing_variables_between_sconscript_fil'><title>Sharing Variables Between SConscript Files</title>
+
+<para>You must explicitly Export() and Import() variables that
+you want to share between SConscript files.</para>
+
+<programlisting>
+SConstruct:
+
+ env = Environment()
+ env.Program(target = 'foo', source = 'foo.c')
+
+ Export("env")
+ SConscript('subdirectory/SConscript')
+
+subdirectory/SConscript:
+
+ Import("env")
+ env.Program(target = 'foo', source = 'foo.c')
+</programlisting>
+
+</refsect2>
+
+<refsect2 id='building_multiple_variants_from_the_same'><title>Building Multiple Variants From the Same Source</title>
+
+<para>Use the variant_dir keyword argument to
+the SConscript function to establish
+one or more separate variant build directory trees
+for a given source directory:</para>
+
+<programlisting>
+SConstruct:
+
+ cppdefines = ['FOO']
+ Export("cppdefines")
+ SConscript('src/SConscript', variant_dir='foo')
+
+ cppdefines = ['BAR']
+ Export("cppdefines")
+ SConscript('src/SConscript', variant_dir='bar')
+
+src/SConscript:
+
+ Import("cppdefines")
+ env = Environment(CPPDEFINES = cppdefines)
+ env.Program(target = 'src', source = 'src.c')
+</programlisting>
+
+<para>Note the use of the Export() method
+to set the "cppdefines" variable to a different
+value each time we call the SConscript function.</para>
+
+</refsect2>
+
+<refsect2 id='hierarchical_build_of_two_libraries_link'><title>Hierarchical Build of Two Libraries Linked With a Program</title>
+
+<programlisting>
+SConstruct:
+
+ env = Environment(LIBPATH = ['#libA', '#libB'])
+ Export('env')
+ SConscript('libA/SConscript')
+ SConscript('libB/SConscript')
+ SConscript('Main/SConscript')
+
+libA/SConscript:
+
+ Import('env')
+ env.Library('a', Split('a1.c a2.c a3.c'))
+
+libB/SConscript:
+
+ Import('env')
+ env.Library('b', Split('b1.c b2.c b3.c'))
+
+Main/SConscript:
+
+ Import('env')
+ e = env.Copy(LIBS = ['a', 'b'])
+ e.Program('foo', Split('m1.c m2.c m3.c'))
+</programlisting>
+
+<para>The '#' in the LIBPATH directories specify that they're relative to the
+top-level directory, so they don't turn into "Main/libA" when they're
+used in Main/SConscript.</para>
+
+<para>Specifying only 'a' and 'b' for the library names
+allows SCons to append the appropriate library
+prefix and suffix for the current platform
+(for example, 'liba.a' on POSIX systems,
+'a.lib' on Windows).</para>
+
+</refsect2>
+
+<refsect2 id='customizing_construction_variables_from_'><title>Customizing construction variables from the command line.</title>
+
+<para>The following would allow the C compiler to be specified on the command
+line or in the file custom.py.</para>
+
+<literallayout class="monospaced">
+vars = Variables('custom.py')
+vars.Add('CC', 'The C compiler.')
+env = Environment(variables=vars)
+Help(vars.GenerateHelpText(env))
+</literallayout>
+
+<para>The user could specify the C compiler on the command line:</para>
+
+<literallayout class="monospaced">
+scons "CC=my_cc"
+</literallayout>
+
+<para>or in the custom.py file:</para>
+
+<literallayout class="monospaced">
+CC = 'my_cc'
+</literallayout>
+
+<para>or get documentation on the options:</para>
+
+<literallayout class="monospaced">
+$ scons -h
+
+CC: The C compiler.
+ default: None
+ actual: cc
+
+</literallayout>
+
+</refsect2>
+
+<refsect2 id='using_microsoft_visual_c_precompiled_hea'><title>Using Microsoft Visual C++ precompiled headers</title>
+
+<para>Since windows.h includes everything and the kitchen sink, it can take quite
+some time to compile it over and over again for a bunch of object files, so
+Microsoft provides a mechanism to compile a set of headers once and then
+include the previously compiled headers in any object file. This
+technology is called precompiled headers. The general recipe is to create a
+file named "StdAfx.cpp" that includes a single header named "StdAfx.h", and
+then include every header you want to precompile in "StdAfx.h", and finally
+include "StdAfx.h" as the first header in all the source files you are
+compiling to object files. For example:</para>
+
+<para>StdAfx.h:</para>
+<literallayout class="monospaced">
+#include &lt;windows.h&gt;
+#include &lt;my_big_header.h&gt;
+</literallayout>
+
+<para>StdAfx.cpp:</para>
+<literallayout class="monospaced">
+#include &lt;StdAfx.h&gt;
+</literallayout>
+
+<para>Foo.cpp:</para>
+<literallayout class="monospaced">
+#include &lt;StdAfx.h&gt;
+
+/* do some stuff */
+</literallayout>
+
+<para>Bar.cpp:</para>
+<literallayout class="monospaced">
+#include &lt;StdAfx.h&gt;
+
+/* do some other stuff */
+</literallayout>
+
+<para>SConstruct:</para>
+<literallayout class="monospaced">
+env=Environment()
+env['PCHSTOP'] = 'StdAfx.h'
+env['PCH'] = env.PCH('StdAfx.cpp')[0]
+env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
+</literallayout>
+
+<para>For more information see the document for the PCH builder, and the PCH and
+PCHSTOP construction variables. To learn about the details of precompiled
+headers consult the MSDN documention for /Yc, /Yu, and /Yp.</para>
+
+</refsect2>
+
+<refsect2 id='using_microsoft_visual_c_external_debugg'><title>Using Microsoft Visual C++ external debugging information</title>
+
+<para>Since including debugging information in programs and shared libraries can
+cause their size to increase significantly, Microsoft provides a mechanism
+for including the debugging information in an external file called a PDB
+file. SCons supports PDB files through the PDB construction
+variable.</para>
+
+<para>SConstruct:</para>
+<literallayout class="monospaced">
+env=Environment()
+env['PDB'] = 'MyApp.pdb'
+env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
+</literallayout>
+
+<para>For more information see the document for the PDB construction variable.</para>
+
+</refsect2>
+</refsect1>
+
+<refsect1 id='environment'><title>ENVIRONMENT</title>
+<variablelist>
+ <varlistentry>
+ <term>SCONS_LIB_DIR</term>
+ <listitem>
+<para>Specifies the directory that contains the SCons Python module directory
+(e.g. /home/aroach/scons-src-0.01/src/engine).</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SCONSFLAGS</term>
+ <listitem>
+<para>A string of options that will be used by scons in addition to those passed
+on the command line.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect1>
+
+<refsect1 id='see_also'><title>SEE ALSO</title>
+<para><command>scons</command>
+User Manual,
+<command>scons</command>
+Design Document,
+<command>scons</command>
+source code.</para>
+
+</refsect1>
+
+<refsect1 id='authors'><title>AUTHORS</title>
+<para>Steven Knight &lt;knight@baldmt.com&gt;
+<!-- .br -->
+Anthony Roach &lt;aroach@electriceyeball.com&gt;</para>
+</refsect1>
+</refentry>
+</reference>
diff --git a/doc/man/scons_title.xsl b/doc/man/scons_title.xsl
new file mode 100644
index 0000000..6093c20
--- /dev/null
+++ b/doc/man/scons_title.xsl
@@ -0,0 +1,6517 @@
+<?xml version="1.0"?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl; do not edit it by hand. -->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::article[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::set[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:param name="scons.inner.twidtha">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">200mm</xsl:when>
+ <xsl:otherwise>205.9mm</xsl:otherwise> <!-- 8.5in-10mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthb">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">190mm</xsl:when>
+ <xsl:otherwise>195.9mm</xsl:otherwise> <!-- 8.5in-20mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthc">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">180mm</xsl:when>
+ <xsl:otherwise>185.9mm</xsl:otherwise> <!-- 8.5in-30mm -->
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="book.titlepage.recto">
+
+ <fo:block-container height="3mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ <fo:block>
+ <fo:table table-layout="fixed" width="100%" padding="0pt" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidtha}"/>
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center">
+ <fo:block line-height="0">
+ <fo:external-graphic
+ src="url(titlepage/SConsBuildBricks_path.svg)"
+ width="{$scons.inner.twidtha}" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </fo:block></fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <fo:block-container height="4cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+<!--
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+-->
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/edition">
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/edition"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/corpauthor">
+ <fo:block-container height="15mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/mediaobject"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<!--
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24pt" space-before="18pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="15pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+-->
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="0pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+
+
+ <fo:block-container height="3mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ <fo:block>
+ <fo:table table-layout="fixed" width="100%" padding="0pt" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidtha}"/>
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center">
+ <fo:block line-height="0">
+ <fo:external-graphic
+ src="url(titlepage/SConsBuildBricks_path.svg)"
+ width="{$scons.inner.twidtha}" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </fo:block></fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <fo:block-container height="4cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+<!--
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+-->
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/edition">
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/edition"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/corpauthor">
+ <fo:block-container height="15mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/mediaobject"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/mediaobject"/>
+
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.verso.auto.mode" select="referenceinfo/legalnotice"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<!--
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="."/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+-->
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="left" font-size="20pt" space-before="0pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsynopsisdivinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsynopsisdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsectioninfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsection.titlepage.before.recto"/>
+ <xsl:call-template name="refsection.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsection.titlepage.before.verso"/>
+ <xsl:call-template name="refsection.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsection.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect1info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect1.titlepage.before.recto"/>
+ <xsl:call-template name="refsect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect1.titlepage.before.verso"/>
+ <xsl:call-template name="refsect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect2info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect2.titlepage.before.recto"/>
+ <xsl:call-template name="refsect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect2.titlepage.before.verso"/>
+ <xsl:call-template name="refsect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect3info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect3.titlepage.before.recto"/>
+ <xsl:call-template name="refsect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect3.titlepage.before.verso"/>
+ <xsl:call-template name="refsect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+<!--
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+-->
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.recto"/>
+ <xsl:call-template name="bibliodiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.verso"/>
+ <xsl:call-template name="bibliodiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliodiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossdiv.titlepage.before.recto"/>
+ <xsl:call-template name="glossdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossdiv.titlepage.before.verso"/>
+ <xsl:call-template name="glossdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style">
+<xsl:call-template name="indexdiv.title">
+<xsl:with-param name="title" select="title"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexdivinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="indexdiv.titlepage.before.recto"/>
+ <xsl:call-template name="indexdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="indexdiv.titlepage.before.verso"/>
+ <xsl:call-template name="indexdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="indexdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="colophoninfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="colophon.titlepage.before.recto"/>
+ <xsl:call-template name="colophon.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="colophon.titlepage.before.verso"/>
+ <xsl:call-template name="colophon.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="colophon.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="qandaset.titlepage.before.recto"/>
+ <xsl:call-template name="qandaset.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="qandaset.titlepage.before.verso"/>
+ <xsl:call-template name="qandaset.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="qandaset.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'TableofContents'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.recto"/>
+ <xsl:call-template name="table.of.contents.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.verso"/>
+ <xsl:call-template name="table.of.contents.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="table.of.contents.titlepage.separator"/>
+ </fo:block>
+
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofTables'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.tables.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.tables.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.tables.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofFigures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.figures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.figures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.figures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofExamples'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.examples.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.examples.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.examples.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofEquations'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.equations.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.equations.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.equations.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofProcedures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.procedures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.procedures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.procedures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofUnknown'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.unknowns.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+
+<!-- special titlepage masters for SCons Titlepage style in books -->
+<xsl:template name="user.pagemasters">
+ <!-- title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="0mm"
+ margin-bottom="0mm"
+ margin-left="0mm"
+ margin-right="0mm">
+ <xsl:attribute name="margin-{$direction.align.start}" select="0mm"/>
+ <xsl:attribute name="margin-{$direction.align.end}" select="0mm"/>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="0mm"
+ margin-top="0mm"
+ column-gap="0mm"
+ column-count="{$column.count.titlepage}"
+ background-repeat="no-repeat"
+ background-image="url(titlepage/mapnik_final_colors.svg)"
+ background-position-vertical="center"
+ background-position-horizontal="center">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+ </xsl:if>
+
+ <!-- setup for title page(s) -->
+ <fo:page-sequence-master master-name="scons-titlepage">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-titlepage-even</xsl:when>
+ <xsl:otherwise>scons-titlepage-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+
+ <fo:page-sequence-master master-name="scons-titlepage-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="body-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
+ <xsl:otherwise>body-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+ <!-- setup for chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even</xsl:when>
+ <xsl:otherwise>scons-chapter-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ <!-- setup for draft chapter pages -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even-draft</xsl:when>
+ <xsl:otherwise>scons-chapter-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- selecting our SCons pagemasters -->
+<xsl:template name="select.user.pagemaster">
+ <xsl:param name="element"/>
+ <xsl:param name="pageclass"/>
+ <xsl:param name="default-pagemaster"/>
+
+ <xsl:choose>
+ <xsl:when test="$default-pagemaster = 'titlepage'">
+ <xsl:value-of select="'scons-titlepage'" />
+ </xsl:when>
+ <xsl:when test="$element = 'reference' and
+ $default-pagemaster = 'body'">
+ <xsl:value-of select="'scons-titlepage'" />
+ </xsl:when>
+ <xsl:when test="$element = 'reference' and
+ $default-pagemaster = 'body-draft'">
+ <xsl:value-of select="'scons-titlepage-draft'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter' and
+ $default-pagemaster = 'body-draft'">
+ <xsl:value-of select="'scons-chapter-draft'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter'">
+ <xsl:value-of select="'scons-chapter'" />
+ </xsl:when>
+ <xsl:when test="$default-pagemaster = 'titlepage-draft'">
+ <xsl:value-of select="'scons-titlepage-draft'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-pagemaster"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="75pt" space-before="0pt" space-after="0pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" font-size="28pt" space-before="0pt" space-after="0pt" font-family="{$title.fontset}" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="56pt" space-before="0pt" space-after="0pt" font-family="'serif'" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="75pt" space-before="0pt" space-after="0pt" font-weight="bold" font-family="'serif'">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="left" display-align="after" font-size="28pt" space-before="0pt" space-after="0pt" font-family="{$title.fontset}" font-weight="normal">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="56pt" space-before="0pt" space-after="0pt" font-family="'serif'" font-weight="normal">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+
+<xsl:attribute-set name="chap.label.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="chap.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">24pt</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-start">0.7em</xsl:attribute>
+</xsl:attribute-set>
+
+
+<!-- customization of chapter titles -->
+<xsl:template name="chap.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="pagewide" select="0"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="titleabbrev">
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="2"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$titleabbrev"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="17mm"/>
+ <fo:table-column/>
+ <fo:table-column column-width="17mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="chap.title.properties">
+ <fo:block>
+
+ <fo:inline xsl:use-attribute-sets="chap.label.properties" font-size="57pt"><xsl:apply-templates select="$node"
+ mode="label.markup"/></fo:inline>
+
+ <fo:inline xsl:use-attribute-sets="chap.title.properties"><xsl:apply-templates select="$node"
+ mode="title.markup"/></fo:inline>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+<xsl:call-template name="chap.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template match="title" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="."/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template name="header.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="element" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all headers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="head.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$header.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a header? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence = 'first'">
+ <!-- no, book chapters have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="header.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+<!-- <xsl:apply-templates select="."
+ mode="titleabbrev.markup"/>
+-->
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+
+<xsl:template name="footer.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all footers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="foot.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$footer.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a footer? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence='first'">
+ <!-- no, book chapters have no footers on first page -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+ <!-- pageclass can be front, body, back -->
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="head.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$header.rule != 0">
+ <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
+ <xsl:attribute name="border-bottom-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+
+<xsl:template name="foot.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$footer.rule != 0">
+ <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">solid</xsl:attribute>
+ <xsl:attribute name="border-top-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:param name="header.column.widths">1 0 1</xsl:param>
+<xsl:param name="footer.column.widths">1 0 1</xsl:param>
+<xsl:param name="headers.on.blank.pages" select="1"/>
+<xsl:param name="footers.on.blank.pages" select="1"/>
+
+</xsl:stylesheet>
+
diff --git a/doc/man/sconsign.1 b/doc/man/sconsign.1
deleted file mode 100644
index 5ba0664..0000000
--- a/doc/man/sconsign.1
+++ /dev/null
@@ -1,208 +0,0 @@
-.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining
-.\" a copy of this software and associated documentation files (the
-.\" "Software"), to deal in the Software without restriction, including
-.\" without limitation the rights to use, copy, modify, merge, publish,
-.\" distribute, sublicense, and/or sell copies of the Software, and to
-.\" permit persons to whom the Software is furnished to do so, subject to
-.\" the following conditions:
-.\"
-.\" The above copyright notice and this permission notice shall be included
-.\" in all copies or substantial portions of the Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-.\" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-.\" WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-.\" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-.\" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-.\" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-.\" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-.\"
-.\" doc/man/sconsign.1 2013/03/03 09:48:35 garyo
-.\"
-.\" ES - Example Start - indents and turns off line fill
-.de ES
-.RS
-.nf
-..
-.\" EE - Example End - ends indent and turns line fill back on
-.de EE
-.RE
-.fi
-..
-.TH SCONSIGN 1 "March 2013"
-.SH NAME
-sconsign \- print SCons .sconsign file information
-.SH SYNOPSIS
-.B sconsign
-[
-.IR options ...
-]
-.IR file
-[ ... ]
-.SH DESCRIPTION
-
-The
-.B sconsign
-command
-displays the contents of one or more
-.B .sconsign
-files specified by the user.
-
-By default,
-.B sconsign
-dumps the entire contents of the
-specified file(s).
-Each entry is printed in the following format:
-
- file: signature timestamp length
- implicit_dependency_1: signature timestamp length
- implicit_dependency_2: signature timestamp length
- action_signature [action string]
-
-.B None
-is printed
-in place of any missing timestamp, bsig, or csig
-values for
-any entry
-or any of its dependencies.
-If the entry has no implicit dependencies,
-or no build action,
-the lines are simply omitted.
-
-By default,
-.B sconsign
-assumes that any
-.I file
-arguments that end with a
-.B .dbm
-suffix contains
-signature entries for
-more than one directory
-(that is,
-was specified by the
-.B SConsignFile ()
-function).
-Any
-.I file
-argument that does not end in
-.B .dbm
-is assumed to be a traditional
-.B .sconsign
-file containing the signature entries
-for a single directory.
-An explicit format
-may be specified using the
-.B -f
-or
-.B --file=
-options.
-
-.SH OPTIONS
-
-Various options control what information is printed
-and the format:
-
-.TP
--a, --act, --action
-Prints the build action information
-for all entries or the specified entries.
-
-.TP
--c, --csig
-Prints the content signature (csig) information
-for all entries or the specified entries.
-
-.TP
--d DIRECTORY, --dir=DIRECTORY
-When the signatures are being
-read from a
-.B .dbm
-file, or the
-.B -f dbm
-or
-.B --format=dbm
-options are used,
-prints information about
-only the signatures
-for entries in the specified
-.IR DIRECTORY .
-
-.TP
--e ENTRY, --entry=ENTRY
-Prints information about only the specified
-.IR ENTRY .
-Multiple -e options may be used,
-in which case information about each
-.I ENTRY
-is printed in the order in which the
-options are specified on the command line.
-
-.TP
--f FORMAT, --format=FORMAT
-The file(s) to be printed
-are in the specified
-.IR FORMAT .
-Legal values are
-.B dbm
-(the DBM format used
-when the
-.BR SConsignFile ()
-function is used)
-or
-.B sconsign
-(the default format
-used for an individual
-.B .sconsign
-file in each directory).
-
-.TP
--h, --help
-Prints a help message and exits.
-
-.TP
--i, --implicit
-Prints the list of cached implicit dependencies
-for all entries or the the specified entries.
-
-.TP
---raw
-Prints a pretty-printed representation
-of the raw Python dictionary that holds
-build information about individual entry
-(both the entry itself or its implicit dependencies).
-An entry's build action is still printed in its usual format.
-
-.TP
--r, --readable
-Prints timestamps in a human-readable string,
-enclosed in single quotes.
-
-.TP
--t, --timestamp
-Prints the timestamp information
-for all entries or the specified entries.
-
-.TP
--v, --verbose
-Prints labels identifying each field being printed.
-
-.SH ENVIRONMENT
-
-.IP SCONS_LIB_DIR
-Specifies the directory that contains the SCons Python module directory
-(e.g. /home/aroach/scons-src-0.01/src/engine).
-on the command line.
-
-.SH "SEE ALSO"
-.BR scons ,
-.B scons
-User Manual,
-.B scons
-Design Document,
-.B scons
-source code.
-
-.SH AUTHORS
-Steven Knight <knight at baldmt dot com>
diff --git a/doc/man/sconsign.xml b/doc/man/sconsign.xml
new file mode 100644
index 0000000..7989566
--- /dev/null
+++ b/doc/man/sconsign.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- lifted from troff+man by doclifter -->
+<refentry id='sconsign1'
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<!-- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation -->
+
+<!-- Permission is hereby granted, free of charge, to any person obtaining -->
+<!-- a copy of this software and associated documentation files (the -->
+<!-- "Software"), to deal in the Software without restriction, including -->
+<!-- without limitation the rights to use, copy, modify, merge, publish, -->
+<!-- distribute, sublicense, and/or sell copies of the Software, and to -->
+<!-- permit persons to whom the Software is furnished to do so, subject to -->
+<!-- the following conditions: -->
+
+<!-- The above copyright notice and this permission notice shall be included -->
+<!-- in all copies or substantial portions of the Software. -->
+
+<!-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -->
+<!-- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -->
+<!-- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -->
+<!-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -->
+<!-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -->
+<!-- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -->
+<!-- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
+
+<!-- doc/man/sconsign.xml 2014/03/02 14:18:15 garyo -->
+
+<!-- ES \- Example Start \- indents and turns off line fill -->
+<!-- ES listing suppressed (not used) -->
+<!-- EE \- Example End \- ends indent and turns line fill back on -->
+<!-- EE listing suppressed (not used) -->
+<refmeta>
+<refentrytitle>SCONSIGN</refentrytitle>
+<manvolnum>1</manvolnum>
+<refmiscinfo class='source'>March 2014</refmiscinfo>
+</refmeta>
+<refnamediv id='name'>
+<refname>sconsign</refname>
+<refpurpose>print SCons .sconsign file information</refpurpose>
+</refnamediv>
+<!-- body begins here -->
+<refsynopsisdiv id='synopsis'>
+<cmdsynopsis>
+ <command>sconsign</command>
+ <arg choice='opt' rep='repeat'><replaceable>options</replaceable></arg>
+ <arg choice='plain'><replaceable>file</replaceable></arg>
+ <arg choice='opt'><replaceable>...</replaceable></arg>
+</cmdsynopsis>
+</refsynopsisdiv>
+
+
+<refsect1 id='description'><title>DESCRIPTION</title>
+<para>The
+<command>sconsign</command>
+command
+displays the contents of one or more
+<markup>.sconsign</markup>
+files specified by the user.</para>
+
+<para>By default,
+<command>sconsign</command>
+dumps the entire contents of the
+specified file(s).
+Each entry is printed in the following format:</para>
+
+<para> file: signature timestamp length
+ implicit_dependency_1: signature timestamp length
+ implicit_dependency_2: signature timestamp length
+ action_signature [action string]</para>
+
+<para><emphasis role="bold">None</emphasis>
+is printed
+in place of any missing timestamp, bsig, or csig
+values for
+any entry
+or any of its dependencies.
+If the entry has no implicit dependencies,
+or no build action,
+the lines are simply omitted.</para>
+
+<para>By default,
+<command>sconsign</command>
+assumes that any
+<emphasis>file</emphasis>
+arguments that end with a
+<markup>.dbm</markup>
+suffix contains
+signature entries for
+more than one directory
+(that is,
+was specified by the
+<emphasis role="bold">SConsignFile ()</emphasis>
+function).
+Any
+<emphasis>file</emphasis>
+argument that does not end in
+<markup>.dbm</markup>
+is assumed to be a traditional
+<markup>.sconsign</markup>
+file containing the signature entries
+for a single directory.
+An explicit format
+may be specified using the
+<option>-f</option>
+or
+<option>--file=</option>
+options.</para>
+
+</refsect1>
+
+<refsect1 id='options'><title>OPTIONS</title>
+<para>Various options control what information is printed
+and the format:</para>
+
+<variablelist>
+ <varlistentry>
+ <term>-a, --act, --action</term>
+ <listitem>
+<para>Prints the build action information
+for all entries or the specified entries.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-c, --csig</term>
+ <listitem>
+<para>Prints the content signature (csig) information
+for all entries or the specified entries.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-d DIRECTORY, --dir=DIRECTORY</term>
+ <listitem>
+<para>When the signatures are being
+read from a
+<markup>.dbm</markup>
+file, or the
+<option>-f dbm</option>
+or
+<option>--format=dbm</option>
+options are used,
+prints information about
+only the signatures
+for entries in the specified
+<emphasis>DIRECTORY</emphasis>.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-e ENTRY, --entry=ENTRY</term>
+ <listitem>
+<para>Prints information about only the specified
+<emphasis>ENTRY</emphasis>.
+Multiple -e options may be used,
+in which case information about each
+<emphasis>ENTRY</emphasis>
+is printed in the order in which the
+options are specified on the command line.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-f FORMAT, --format=FORMAT</term>
+ <listitem>
+<para>The file(s) to be printed
+are in the specified
+<emphasis>FORMAT</emphasis>.
+Legal values are
+<emphasis role="bold">dbm</emphasis>
+(the DBM format used
+when the
+<emphasis role="bold">SConsignFile</emphasis>()
+function is used)
+or
+<command>sconsign</command>
+(the default format
+used for an individual
+<markup>.sconsign</markup>
+file in each directory).</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-h, --help</term>
+ <listitem>
+<para>Prints a help message and exits.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-i, --implicit</term>
+ <listitem>
+<para>Prints the list of cached implicit dependencies
+for all entries or the the specified entries.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--raw</term>
+ <listitem>
+<para>Prints a pretty-printed representation
+of the raw Python dictionary that holds
+build information about individual entry
+(both the entry itself or its implicit dependencies).
+An entry's build action is still printed in its usual format.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-r, --readable</term>
+ <listitem>
+<para>Prints timestamps in a human-readable string,
+enclosed in single quotes.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-t, --timestamp</term>
+ <listitem>
+<para>Prints the timestamp information
+for all entries or the specified entries.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>-v, --verbose</term>
+ <listitem>
+<para>Prints labels identifying each field being printed.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect1>
+
+<refsect1 id='environment'><title>ENVIRONMENT</title>
+<variablelist>
+ <varlistentry>
+ <term>SCONS_LIB_DIR</term>
+ <listitem>
+<para>Specifies the directory that contains the SCons Python module directory
+(e.g. /home/aroach/scons-src-0.01/src/engine).
+on the command line.</para>
+
+ </listitem>
+ </varlistentry>
+</variablelist>
+</refsect1>
+
+<refsect1 id='see_also'><title>SEE ALSO</title>
+<para><emphasis role="bold">scons</emphasis>,
+<emphasis role="bold">scons</emphasis>
+User Manual,
+<emphasis role="bold">scons</emphasis>
+Design Document,
+<emphasis role="bold">scons</emphasis>
+source code.</para>
+
+</refsect1>
+
+<refsect1 id='authors'><title>AUTHORS</title>
+<para>Steven Knight &lt;knight at baldmt dot com&gt;</para>
+</refsect1>
+</refentry>
+
diff --git a/doc/man/titlepage/SConsBuildBricks_path.svg b/doc/man/titlepage/SConsBuildBricks_path.svg
new file mode 100644
index 0000000..ed0c60d
--- /dev/null
+++ b/doc/man/titlepage/SConsBuildBricks_path.svg
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="636.73999"
+ height="80.330002"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.1 r9760"
+ version="1.0"
+ sodipodi:docname="SConsBuildBricks.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="80.565423"
+ inkscape:cy="53.016465"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="942"
+ inkscape:window-height="667"
+ inkscape:window-x="52"
+ inkscape:window-y="25"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>2008-05-18</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the pixeled SCons logo (author unknown).</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.5/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:prohibits
+ rdf:resource="http://web.resource.org/cc/CommercialUse" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.3227,-503.6795)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline">
+ <g
+ transform="translate(-264.04696,-505.06832)"
+ style="display:inline"
+ id="Brick-to-Brick-9"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170-4"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143-1"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145-9"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147-5"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149-7"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185-4">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155-1"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218-2"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ style="font-size:12.22589397px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ id="text1316-2"
+ transform="translate(0.27574335,-0.05632028)">
+ <path
+ d="m 3.8227174,71.530541 0,3.265412 1.9341746,0 c 0.6486997,10e-7 1.1282631,-0.133322 1.4386916,-0.399969 0.3143968,-0.270623 0.4715981,-0.68253 0.4716043,-1.235722 C 7.6671817,72.603095 7.5099804,72.193178 7.1955836,71.930509 6.8851551,71.663867 6.4055917,71.530545 5.756892,71.530541 l -1.9341746,0 m 0,-3.665381 0,2.686354 1.7849327,0 c 0.5890032,5e-6 1.0267789,-0.109439 1.3133285,-0.328332 C 7.211497,70.00032 7.3567589,69.662038 7.3567648,69.208337 7.3567589,68.758629 7.211497,68.422337 6.9209786,68.199462 6.634429,67.976602 6.1966533,67.865168 5.6076501,67.86516 l -1.7849327,0 m -1.2058743,-0.990966 3.0803522,0 c 0.9193247,9e-6 1.6277254,0.191038 2.1252042,0.573089 0.497466,0.382067 0.7462022,0.925307 0.7462093,1.629721 -7.1e-6,0.545237 -0.1273601,0.979033 -0.3820592,1.301389 -0.2547126,0.322368 -0.6288118,0.523347 -1.1222988,0.602937 0.5929814,0.127358 1.0526459,0.394003 1.3789949,0.799937 0.3303146,0.401962 0.4954754,0.905404 0.495483,1.510328 -7.6e-6,0.795958 -0.2706325,1.410834 -0.8118758,1.844629 -0.5412567,0.433797 -1.311344,0.650695 -2.3102642,0.650695 l -3.1997456,0 0,-8.912725"
+ id="path3187"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 10.837085,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3189"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 18.711086,69.100883 1.09842,0 0,6.686036 -1.09842,0 0,-6.686036 m 0,-2.602778 1.09842,0 0,1.390934 -1.09842,0 0,-1.390934"
+ id="path3191"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 22.101862,66.498105 1.09842,0 0,9.288814 -1.09842,0 0,-9.288814"
+ id="path3193"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 29.892286,70.115728 0,-3.617623 1.09842,0 0,9.288814 -1.09842,0 0,-1.002906 c -0.230833,0.397979 -0.523347,0.694473 -0.877543,0.889482 -0.350225,0.191029 -0.772081,0.286544 -1.265571,0.286544 -0.807898,0 -1.466552,-0.322362 -1.975962,-0.967087 -0.505433,-0.644724 -0.758149,-1.492417 -0.758149,-2.543082 0,-1.050658 0.252716,-1.898351 0.758149,-2.543081 0.50941,-0.644718 1.168064,-0.96708 1.975962,-0.967087 0.49349,7e-6 0.915346,0.09751 1.265571,0.292514 0.354196,0.191036 0.64671,0.485539 0.877543,0.883512 M 26.1493,72.44987 c -2e-6,0.807899 0.165159,1.442674 0.495483,1.904327 0.334299,0.457676 0.791973,0.686513 1.373025,0.686512 0.581044,10e-7 1.038718,-0.228836 1.373025,-0.686512 0.334296,-0.461653 0.501447,-1.096428 0.501453,-1.904327 -6e-6,-0.807891 -0.167157,-1.440676 -0.501453,-1.898356 -0.334307,-0.461649 -0.791981,-0.692477 -1.373025,-0.692482 -0.581052,5e-6 -1.038726,0.230833 -1.373025,0.692482 -0.330324,0.45768 -0.495485,1.090465 -0.495483,1.898356"
+ id="path3195"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 39.927309,76.407765 c -0.310427,0.795955 -0.61289,1.315316 -0.90739,1.558085 -0.294507,0.242764 -0.688505,0.364148 -1.181996,0.36415 l -0.877542,0 0,-0.91933 0.644725,0 c 0.302461,-10e-7 0.537268,-0.07164 0.704421,-0.214908 0.167149,-0.143274 0.352208,-0.481555 0.55518,-1.014845 l 0.196999,-0.501453 -2.704262,-6.578581 1.164086,0 2.089386,5.229435 2.089387,-5.229435 1.164086,0 -2.93708,7.306882"
+ id="path3197"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 46.971524,69.870971 c -0.589011,6e-6 -1.054645,0.230833 -1.396904,0.692482 -0.342263,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507423,1.892387 0.342258,0.457676 0.809882,0.686514 1.402873,0.686513 0.585024,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513387,-1.090458 0.513393,-1.886418 -6e-6,-0.791972 -0.171137,-1.418788 -0.513393,-1.880447 -0.342266,-0.465629 -0.80591,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955144,7e-6 1.705332,0.310429 2.250568,0.931269 0.545223,0.620851 0.817838,1.480484 0.817845,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817845,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250568,0.931269 -0.95913,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541251,-0.624825 -0.811876,-1.484457 -0.811876,-2.5789 0,-1.098415 0.270625,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297407,-0.931262 2.256537,-0.931269"
+ id="path3199"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 51.741295,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3201"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 63.489616,70.127667 c -0.123378,-0.07163 -0.258691,-0.123368 -0.405938,-0.155212 -0.143277,-0.03581 -0.302468,-0.05372 -0.477574,-0.05373 -0.62085,6e-6 -1.098423,0.202975 -1.432722,0.608907 -0.330324,0.401963 -0.495485,0.981021 -0.495483,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.230825,-0.405932 0.531298,-0.706405 0.901421,-0.901421 0.370116,-0.198982 0.819831,-0.298476 1.349146,-0.298483 0.07561,7e-6 0.159187,0.006 0.250727,0.01791 0.09153,0.008 0.193014,0.0219 0.304453,0.04179 l 0.006,1.128269"
+ id="path3203"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 72.808278,69.297882 0,1.038724 c -0.310428,-0.159186 -0.63279,-0.27858 -0.967087,-0.358181 -0.334306,-0.07959 -0.680547,-0.119388 -1.038723,-0.119393 -0.545234,5e-6 -0.955151,0.08358 -1.229753,0.250726 -0.270628,0.167156 -0.40594,0.417882 -0.405938,0.752179 -2e-6,0.254711 0.0975,0.45569 0.292514,0.602937 0.195007,0.143276 0.587015,0.280579 1.176026,0.411908 l 0.376089,0.08357 c 0.780033,0.167155 1.333223,0.403952 1.65957,0.710391 0.330316,0.302467 0.495477,0.726313 0.495483,1.271541 -6e-6,0.620848 -0.246752,1.11235 -0.74024,1.47451 -0.489518,0.36216 -1.16409,0.54324 -2.02372,0.54324 -0.358183,0 -0.732282,-0.03582 -1.122299,-0.107454 -0.38604,-0.06766 -0.793967,-0.171131 -1.223783,-0.310423 l 0,-1.134238 c 0.405937,0.210929 0.805905,0.370121 1.199905,0.477574 0.393996,0.103475 0.784014,0.155212 1.170056,0.155211 0.517368,10e-7 0.915346,-0.08755 1.193935,-0.262665 0.27858,-0.179089 0.417873,-0.429816 0.417877,-0.752179 -4e-6,-0.298482 -0.101489,-0.527319 -0.304453,-0.686513 -0.198994,-0.159189 -0.638759,-0.31241 -1.319298,-0.459665 l -0.38206,-0.08955 c -0.680544,-0.143269 -1.172047,-0.362157 -1.474509,-0.656664 -0.302465,-0.29848 -0.453696,-0.706407 -0.453695,-1.223784 -10e-7,-0.6288 0.222866,-1.114333 0.668603,-1.4566 0.445734,-0.342255 1.078519,-0.513385 1.898357,-0.513392 0.405934,7e-6 0.787993,0.02985 1.146177,0.08955 0.358176,0.0597 0.688498,0.149248 0.990966,0.268635"
+ id="path3205"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 77.51238,69.870971 c -0.589011,6e-6 -1.054646,0.230833 -1.396904,0.692482 -0.342264,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507422,1.892387 0.342259,0.457676 0.809883,0.686514 1.402874,0.686513 0.585023,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513386,-1.090458 0.513392,-1.886418 -6e-6,-0.791972 -0.171136,-1.418788 -0.513392,-1.880447 -0.342266,-0.465629 -0.805911,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955143,7e-6 1.705331,0.310429 2.250567,0.931269 0.545224,0.620851 0.817839,1.480484 0.817846,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817846,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250567,0.931269 -0.959131,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541252,-0.624825 -0.811877,-1.484457 -0.811876,-2.5789 -10e-7,-1.098415 0.270624,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297406,-0.931262 2.256537,-0.931269"
+ id="path3207"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 85.780384,66.498105 0,0.91336 -1.050663,0 c -0.394002,8e-6 -0.668607,0.0796 -0.823815,0.238787 -0.151235,0.159199 -0.22685,0.445743 -0.226848,0.859633 l 0,0.590998 1.808812,0 0,0.853663 -1.808812,0 0,5.832373 -1.10439,0 0,-5.832373 -1.050663,0 0,-0.853663 1.050663,0 0,-0.465635 c -10e-7,-0.744211 0.173119,-1.285461 0.519362,-1.623751 0.346239,-0.342253 0.895448,-0.513383 1.64763,-0.513392 l 1.038724,0"
+ id="path3209"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 87.565311,67.202526 0,1.898357 2.262506,0 0,0.853663 -2.262506,0 0,3.629563 c -3e-6,0.545232 0.07362,0.895452 0.220878,1.050662 0.151229,0.155213 0.455682,0.232819 0.91336,0.232818 l 1.128268,0 0,0.91933 -1.128268,0 c -0.847696,0 -1.432724,-0.157202 -1.755084,-0.471605 -0.322364,-0.318382 -0.483545,-0.89545 -0.483544,-1.731205 l 0,-3.629563 -0.805906,0 0,-0.853663 0.805906,0 0,-1.898357 1.10439,0"
+ id="path3211"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 90.639696,69.100883 1.09842,0 1.373026,5.217496 1.367055,-5.217496 1.29542,0 1.373025,5.217496 1.367055,-5.217496 1.098421,0 -1.749115,6.686036 -1.29542,0 -1.438691,-5.480162 -1.444662,5.480162 -1.295419,0 -1.749115,-6.686036"
+ id="path3213"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 104.32219,72.425992 c -0.8875,3e-6 -1.50237,0.101487 -1.84463,0.304453 -0.34226,0.202972 -0.51339,0.549213 -0.51339,1.038724 0,0.39002 0.12735,0.700443 0.38206,0.931269 0.25868,0.226848 0.6089,0.340272 1.05066,0.340271 0.6089,10e-7 1.09643,-0.214907 1.46257,-0.644725 0.37011,-0.433794 0.55517,-1.008872 0.55518,-1.725236 l 0,-0.244756 -1.09245,0 m 2.19087,-0.453696 0,3.814623 -1.09842,0 0,-1.014845 c -0.25073,0.405938 -0.56314,0.706412 -0.93724,0.901421 -0.3741,0.191029 -0.83178,0.286544 -1.37302,0.286544 -0.68453,0 -1.22976,-0.191029 -1.6357,-0.573089 -0.40195,-0.386038 -0.60293,-0.901419 -0.60293,-1.546145 0,-0.752177 0.25072,-1.319295 0.75218,-1.701358 0.50543,-0.382055 1.2576,-0.573084 2.25653,-0.573088 l 1.54018,0 0,-0.107455 c -1e-5,-0.505427 -0.16716,-0.895446 -0.50145,-1.170056 -0.33033,-0.278579 -0.79596,-0.417871 -1.39691,-0.417877 -0.38206,6e-6 -0.75417,0.04577 -1.11633,0.137302 -0.36216,0.09154 -0.71039,0.228844 -1.04469,0.411908 l 0,-1.014845 c 0.40196,-0.155205 0.79198,-0.270618 1.17006,-0.346241 0.37807,-0.07959 0.7462,-0.119386 1.10439,-0.119393 0.96708,7e-6 1.68941,0.250733 2.16699,0.752179 0.47757,0.501458 0.71635,1.261596 0.71636,2.280415"
+ id="path3215"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.65586,70.127667 c -0.12338,-0.07163 -0.25869,-0.123368 -0.40594,-0.155212 -0.14327,-0.03581 -0.30247,-0.05372 -0.47757,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33033,0.401963 -0.49549,0.981021 -0.49549,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23083,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81984,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15919,0.006 0.25073,0.01791 0.0915,0.008 0.19301,0.0219 0.30445,0.04179 l 0.006,1.128269"
+ id="path3217"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 119.27622,72.169296 0,0.53727 -5.05034,0 c 0.0477,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06658,0 -1.91229,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.2945,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32635,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3219"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 121.35964,74.270621 1.2596,0 0,1.026784 -0.97903,1.910296 -0.77008,0 0.48951,-1.910296 0,-1.026784"
+ id="path3221"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 133.66315,72.44987 c -1e-5,-0.807891 -0.16716,-1.440676 -0.50146,-1.898356 -0.33032,-0.461649 -0.78601,-0.692477 -1.36705,-0.692482 -0.58105,5e-6 -1.03873,0.230833 -1.37303,0.692482 -0.33032,0.45768 -0.49548,1.090465 -0.49548,1.898356 0,0.807899 0.16516,1.442674 0.49548,1.904327 0.3343,0.457676 0.79198,0.686513 1.37303,0.686512 0.58104,10e-7 1.03673,-0.228836 1.36705,-0.686512 0.3343,-0.461653 0.50145,-1.096428 0.50146,-1.904327 m -3.73702,-2.334142 c 0.23082,-0.397973 0.52135,-0.692476 0.87157,-0.883512 0.3542,-0.195003 0.77606,-0.292507 1.26557,-0.292514 0.81187,7e-6 1.47053,0.322369 1.97596,0.967087 0.50941,0.64473 0.76412,1.492423 0.76412,2.543081 0,1.050665 -0.25471,1.898358 -0.76412,2.543082 -0.50543,0.644725 -1.16409,0.967087 -1.97596,0.967087 -0.48951,0 -0.91137,-0.09551 -1.26557,-0.286544 -0.35022,-0.195009 -0.64075,-0.491503 -0.87157,-0.889482 l 0,1.002906 -1.10439,0 0,-9.288814 1.10439,0 0,3.617623"
+ id="path3223"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 142.34306,72.169296 0,0.53727 -5.05035,0 c 0.0478,0.756162 0.27461,1.33323 0.68055,1.731206 0.40991,0.394 0.97902,0.590999 1.70732,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22379,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.18199,-0.465634 l 0,1.038723 c -0.394,0.167151 -0.79795,0.294504 -1.21184,0.382059 -0.41391,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06659,0 -1.91229,-0.310423 -2.53712,-0.931269 -0.62084,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88352,-2.602778 0.59298,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89942,7e-6 1.60981,0.29053 2.13117,0.871572 0.52533,0.577074 0.78799,1.363081 0.788,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.17711,-1.080506 -0.50743,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30138,-0.537271 -0.61289,6e-6 -1.1044,0.173126 -1.47451,0.519362 -0.36615,0.346246 -0.57707,0.833769 -0.63279,1.46257 l 3.91611,-0.006"
+ id="path3225"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 145.23238,67.202526 0,1.898357 2.26251,0 0,0.853663 -2.26251,0 0,3.629563 c 0,0.545232 0.0736,0.895452 0.22088,1.050662 0.15123,0.155213 0.45568,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.8477,0 -1.43273,-0.157202 -1.75509,-0.471605 -0.32236,-0.318382 -0.48354,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3227"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 150.03199,67.202526 0,1.898357 2.2625,0 0,0.853663 -2.2625,0 0,3.629563 c -1e-5,0.545232 0.0736,0.895452 0.22087,1.050662 0.15123,0.155213 0.45569,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.84769,0 -1.43272,-0.157202 -1.75508,-0.471605 -0.32236,-0.318382 -0.48355,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3229"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 159.46407,72.169296 0,0.53727 -5.05034,0 c 0.0478,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39798,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83376,0.131333 -1.2596,0.131333 -1.06658,0 -1.91228,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39094,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3231"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.14123,70.127667 c -0.12337,-0.07163 -0.25869,-0.123368 -0.40593,-0.155212 -0.14328,-0.03581 -0.30247,-0.05372 -0.47758,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33032,0.401963 -0.49548,0.981021 -0.49548,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23082,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81983,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15918,0.006 0.25072,0.01791 0.0915,0.008 0.19302,0.0219 0.30446,0.04179 l 0.006,1.128269"
+ id="path3233"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.33823,74.270621 1.25961,0 0,1.516298 -1.25961,0 0,-1.516298"
+ id="path3235"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(1.0124967,0,0,0.98765755,0.27574335,-0.05632028)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160-1">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ id="path3176"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ id="path3178"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ id="path3180"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ id="path3182"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ id="path3184"
+ inkscape:connector-curvature="0" />
+ </g>
+ <image
+ id="image1340"
+ height="80.018639"
+ width="465.43411"
+ sodipodi:absref="bricks.jpg"
+ xlink:href="bricks.jpg"
+ x="171.31058"
+ y="0.17131744" />
+ </g>
+</svg>
diff --git a/doc/man/titlepage/SCons_path.svg b/doc/man/titlepage/SCons_path.svg
new file mode 100644
index 0000000..ef580ee
--- /dev/null
+++ b/doc/man/titlepage/SCons_path.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="167.9814"
+ height="58.247482"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.3.1 r9886"
+ version="1.0"
+ sodipodi:docname="SCons_path.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <title
+ id="title2996">SCons - Build your software, better (SCons Logo)</title>
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="7.1635215"
+ inkscape:cy="31.742841"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="868"
+ inkscape:window-height="789"
+ inkscape:window-x="210"
+ inkscape:window-y="24"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0"
+ fit-margin-left="2"
+ fit-margin-top="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>SCons - Build your software, better (SCons Logo)</dc:title>
+ <dc:date>2011-05-19</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the SCons (Constructs using) logo by Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;.</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.32267,-503.68225)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline"
+ transform="translate(2.5546741e-5,-0.00274857)">
+ <g
+ transform="translate(-264.3227,-505.012)"
+ style="display:inline"
+ id="Brick-to-Brick"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ transform="scale(1.0124967,0.98765755)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ style=""
+ id="path3017" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ style=""
+ id="path3019" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ style=""
+ id="path3021" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ style=""
+ id="path3023" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ style=""
+ id="path3025" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/man/titlepage/bricks.jpg b/doc/man/titlepage/bricks.jpg
new file mode 100755
index 0000000..b2dc16b
--- /dev/null
+++ b/doc/man/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/man/titlepage/mapnik_final_colors.svg b/doc/man/titlepage/mapnik_final_colors.svg
new file mode 100644
index 0000000..23bb54a
--- /dev/null
+++ b/doc/man/titlepage/mapnik_final_colors.svg
@@ -0,0 +1,6397 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ fill-opacity="1"
+ color-rendering="auto"
+ color-interpolation="auto"
+ stroke="black"
+ text-rendering="auto"
+ stroke-linecap="square"
+ width="600"
+ stroke-miterlimit="10"
+ stroke-opacity="1"
+ shape-rendering="auto"
+ fill="black"
+ stroke-dasharray="none"
+ font-weight="normal"
+ stroke-width="1"
+ height="701"
+ font-family="'Dialog'"
+ font-style="normal"
+ stroke-linejoin="miter"
+ font-size="12"
+ stroke-dashoffset="0"
+ image-rendering="auto"
+ id="svg8168"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="mapnik_final_colors.svg">
+ <title
+ id="title9830">SCons, Book titlepage background</title>
+ <metadata
+ id="metadata9828">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="" />
+ <dc:title>SCons, Book titlepage background</dc:title>
+ <dc:date>2013-04-15</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on a SCons dependency tree of the Mapnik project (www.mapnik.org)</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="735"
+ inkscape:window-height="480"
+ id="namedview9826"
+ showgrid="false"
+ inkscape:zoom="0.33666191"
+ inkscape:cx="300"
+ inkscape:cy="350.5"
+ inkscape:window-x="85"
+ inkscape:window-y="99"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg8168" />
+ <!--Generated by ySVG-->
+ <defs
+ id="genericDefs" />
+ <g
+ id="g8171">
+ <defs
+ id="defs1">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1">
+ <path
+ d="M0 0 L600 0 L600 701 L0 701 L0 0 Z"
+ id="path8175" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2">
+ <path
+ d="M-871 -1293 L3138 -1293 L3138 3390.8484 L-871 3390.8484 L-871 -1293 Z"
+ id="path8178" />
+ </clipPath>
+ </defs>
+ <g
+ fill="white"
+ transform="scale(0.1497,0.1497) translate(871,1293)"
+ stroke="white"
+ id="g8180">
+ <rect
+ x="-871"
+ y="-1293"
+ clip-path="url(#clipPath2)"
+ width="4009"
+ height="4684"
+ stroke="none"
+ id="rect8182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8184">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ width="142.2207"
+ height="30"
+ stroke="none"
+ id="rect8186" />
+ <text
+ x="1140.3896"
+ y="112.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8188">./src/agg_renderer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8190">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="142.2207"
+ height="30"
+ id="rect8192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8194">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ width="69.1484"
+ height="30"
+ stroke="none"
+ id="rect8196" />
+ <text
+ x="-37.5742"
+ y="1701.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8198">./agg/src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8200">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="69.1484"
+ height="30"
+ id="rect8202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8204">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ width="114.5938"
+ height="30"
+ stroke="none"
+ id="rect8206" />
+ <text
+ x="1140.7031"
+ y="-645.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8208">./src/graphics.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8210">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="114.5938"
+ height="30"
+ id="rect8212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8214">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ width="111.8516"
+ height="30"
+ stroke="none"
+ id="rect8216" />
+ <text
+ x="1676.0742"
+ y="-44.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8218">./src/font_set.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8220">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="111.8516"
+ height="30"
+ id="rect8222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8224">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ width="234.9277"
+ height="30"
+ stroke="none"
+ id="rect8226" />
+ <text
+ x="-608.9639"
+ y="2105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8228">./agg/src/agg_vcgen_markers_term.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8230">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9277"
+ height="30"
+ id="rect8232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8234">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ width="107.8789"
+ height="30"
+ stroke="none"
+ id="rect8236" />
+ <text
+ x="2062.0605"
+ y="-128.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8238">./src/params.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8240">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="107.8789"
+ height="30"
+ id="rect8242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8244">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ width="189.2188"
+ height="30"
+ stroke="none"
+ id="rect8246" />
+ <text
+ x="-71.1094"
+ y="1867.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8248">./agg/src/agg_image_filters.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8250">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="189.2188"
+ height="30"
+ id="rect8252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8254">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ width="258.3125"
+ height="30"
+ stroke="none"
+ id="rect8256" />
+ <text
+ x="2434.3438"
+ y="1824.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8258">./bindings/python/mapnik_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8260">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3125"
+ height="30"
+ id="rect8262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8264">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ width="112.4844"
+ height="30"
+ stroke="none"
+ id="rect8266" />
+ <text
+ x="1775.7578"
+ y="209.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8268">./src/memory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8270">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="112.4844"
+ height="30"
+ id="rect8272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8274">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ width="263.3223"
+ height="30"
+ stroke="none"
+ id="rect8276" />
+ <text
+ x="1302.8389"
+ y="3367.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8278">./bindings/python/mapnik_font_engine.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8280">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="263.3223"
+ height="30"
+ id="rect8282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8284">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ width="205.625"
+ height="30"
+ stroke="none"
+ id="rect8286" />
+ <text
+ x="651.1875"
+ y="459.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8288">./plugins/input/shape/dbffile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8290">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="205.625"
+ height="30"
+ id="rect8292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8294">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ width="196.5547"
+ height="30"
+ stroke="none"
+ id="rect8296" />
+ <text
+ x="148.2227"
+ y="1905.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8298">./agg/src/agg_line_aa_basics.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8300">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.5547"
+ height="30"
+ id="rect8302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8304">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ width="121.8652"
+ height="30"
+ stroke="none"
+ id="rect8306" />
+ <text
+ x="1844.5674"
+ y="-283.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8308">./src/save_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8310">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.8652"
+ height="30"
+ id="rect8312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8314">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ width="283.4844"
+ height="30"
+ stroke="none"
+ id="rect8316" />
+ <text
+ x="662.2578"
+ y="2818.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8318">./bindings/python/mapnik_view_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8320">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="283.4844"
+ height="30"
+ id="rect8322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8324">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ width="94.1094"
+ height="30"
+ stroke="none"
+ id="rect8326" />
+ <text
+ x="1878.4453"
+ y="-141.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8328">./src/color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8330">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1094"
+ height="30"
+ id="rect8332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8334">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ width="98.4805"
+ height="30"
+ stroke="none"
+ id="rect8336" />
+ <text
+ x="101.7598"
+ y="1483.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8338">./agg/libagg.a</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8340">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="98.4805"
+ height="30"
+ id="rect8342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8344">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ width="187.4668"
+ height="30"
+ stroke="none"
+ id="rect8346" />
+ <text
+ x="1946.2666"
+ y="-908.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8348">./src/font_engine_freetype.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8350">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="187.4668"
+ height="30"
+ id="rect8352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8354">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ width="101.4277"
+ height="30"
+ stroke="none"
+ id="rect8356" />
+ <text
+ x="1931.2861"
+ y="171.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8358">./src/stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8360">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.4277"
+ height="30"
+ id="rect8362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8364">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ width="229.8535"
+ height="30"
+ stroke="none"
+ id="rect8366" />
+ <text
+ x="1557.0732"
+ y="2643.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8368">./bindings/python/mapnik_image.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8370">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8535"
+ height="30"
+ id="rect8372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8374">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ width="125.1816"
+ height="30"
+ stroke="none"
+ id="rect8376" />
+ <text
+ x="1962.9092"
+ y="-717.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8378">./src/image_util.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8380">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="125.1816"
+ height="30"
+ id="rect8382" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8384">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ width="297.4121"
+ height="30"
+ stroke="none"
+ id="rect8386" />
+ <text
+ x="973.7939"
+ y="2871.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8388">./bindings/python/mapnik_datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8390">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="297.4121"
+ height="30"
+ id="rect8392" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8394">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ width="94.1914"
+ height="30"
+ stroke="none"
+ id="rect8396" />
+ <text
+ x="-147.5957"
+ y="2495.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8398">./agg/include</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8400">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1914"
+ height="30"
+ id="rect8402" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8404">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ width="216.8984"
+ height="30"
+ stroke="none"
+ id="rect8406" />
+ <text
+ x="896.5508"
+ y="2465.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8408">./bindings/python/mapnik_rule.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8410">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.8984"
+ height="30"
+ id="rect8412" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8414">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ width="174.0664"
+ height="30"
+ stroke="none"
+ id="rect8416" />
+ <text
+ x="277.4668"
+ y="1204.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8418">./agg/src/agg_bezier_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8420">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.0664"
+ height="30"
+ id="rect8422" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8424">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ width="252.9336"
+ height="30"
+ stroke="none"
+ id="rect8426" />
+ <text
+ x="1538.0332"
+ y="1608.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8428">./bindings/python/mapnik_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8430">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="252.9336"
+ height="30"
+ id="rect8432" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8434">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ width="131.8848"
+ height="30"
+ stroke="none"
+ id="rect8436" />
+ <text
+ x="192.0576"
+ y="1708.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8438">./agg/src/agg_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8440">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="131.8848"
+ height="30"
+ id="rect8442" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8444">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ width="220.5371"
+ height="30"
+ stroke="none"
+ id="rect8446" />
+ <text
+ x="-159.7686"
+ y="559.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8448">./plugins/input/shape/shapefile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8450">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.5371"
+ height="30"
+ id="rect8452" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8454">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ width="271.0918"
+ height="30"
+ stroke="none"
+ id="rect8456" />
+ <text
+ x="-52.0459"
+ y="-1056.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8458">./plugins/input/raster/raster_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8460">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="271.0918"
+ height="30"
+ id="rect8462" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8464">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ width="265.666"
+ height="30"
+ stroke="none"
+ id="rect8466" />
+ <text
+ x="-705.333"
+ y="-423.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8468">./plugins/input/raster/raster_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8470">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="265.666"
+ height="30"
+ id="rect8472" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8474">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ width="110.9609"
+ height="30"
+ stroke="none"
+ id="rect8476" />
+ <text
+ x="1995.0195"
+ y="330.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8478">./src/unicode.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8480">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="110.9609"
+ height="30"
+ id="rect8482" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8484">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ width="233.9141"
+ height="30"
+ stroke="none"
+ id="rect8486" />
+ <text
+ x="2896.043"
+ y="2280.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8488">./bindings/python/mapnik/ogcserver</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8490">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="233.9141"
+ height="30"
+ id="rect8492" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8494">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ width="219.7695"
+ height="30"
+ stroke="none"
+ id="rect8496" />
+ <text
+ x="1964.6152"
+ y="1988.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8498">./bindings/python/mapnik_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8500">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.7695"
+ height="30"
+ id="rect8502" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8504">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ width="97.9062"
+ height="30"
+ stroke="none"
+ id="rect8506" />
+ <text
+ x="1411.0469"
+ y="64.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8508">./src/arrow.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8510">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="97.9062"
+ height="30"
+ id="rect8512" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8514">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="67.0742"
+ height="30"
+ stroke="none"
+ id="rect8516" />
+ <text
+ x="385.9629"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8518">./plugins</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8520">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="67.0742"
+ height="30"
+ id="rect8522" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8524">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ width="218.0352"
+ height="30"
+ stroke="none"
+ id="rect8526" />
+ <text
+ x="-593.0176"
+ y="-884.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8528">./plugins/input/raster/raster.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8530">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="218.0352"
+ height="30"
+ id="rect8532" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8534">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ width="199.3555"
+ height="30"
+ stroke="none"
+ id="rect8536" />
+ <text
+ x="511.8223"
+ y="1265.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8538">./agg/src/agg_vcgen_contour.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8540">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="199.3555"
+ height="30"
+ id="rect8542" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8544">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ width="239.832"
+ height="30"
+ stroke="none"
+ id="rect8546" />
+ <text
+ x="484.084"
+ y="1581.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8548">./agg/src/agg_trans_warp_magnifier.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8550">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="239.832"
+ height="30"
+ id="rect8552" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8554">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ width="258.3594"
+ height="30"
+ stroke="none"
+ id="rect8556" />
+ <text
+ x="1814.8203"
+ y="2902.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8558">./bindings/python/mapnik_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8560">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3594"
+ height="30"
+ id="rect8562" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8564">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ width="267.0488"
+ height="30"
+ stroke="none"
+ id="rect8566" />
+ <text
+ x="207.9756"
+ y="791.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8568">./plugins/input/shape/shape_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8570">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="267.0488"
+ height="30"
+ id="rect8572" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8574">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ width="121.2441"
+ height="30"
+ stroke="none"
+ id="rect8576" />
+ <text
+ x="1345.8779"
+ y="-311.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8578">./src/load_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8580">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.2441"
+ height="30"
+ id="rect8582" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8584">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ width="294.6406"
+ height="30"
+ stroke="none"
+ id="rect8586" />
+ <text
+ x="1642.1797"
+ y="2329.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8588">./bindings/python/mapnik_point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8590">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="294.6406"
+ height="30"
+ id="rect8592" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8594">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ width="204.0371"
+ height="30"
+ stroke="none"
+ id="rect8596" />
+ <text
+ x="1877.9814"
+ y="-479.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8598">./src/line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8600">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="204.0371"
+ height="30"
+ id="rect8602" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8604">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ width="171.1016"
+ height="30"
+ stroke="none"
+ id="rect8606" />
+ <text
+ x="2413.4492"
+ y="2228.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8608">./bindings/python/mapnik</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8610">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="171.1016"
+ height="30"
+ id="rect8612" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8614">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ width="143.8027"
+ height="30"
+ stroke="none"
+ id="rect8616" />
+ <text
+ x="-221.4014"
+ y="-694.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8618">./plugins/input/raster</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8620">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.8027"
+ height="30"
+ id="rect8622" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8624">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ width="90.2246"
+ height="30"
+ stroke="none"
+ id="rect8626" />
+ <text
+ x="1756.3877"
+ y="-562.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8628">./src/map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8630">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="90.2246"
+ height="30"
+ id="rect8632" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8634">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ width="88.6543"
+ height="30"
+ stroke="none"
+ id="rect8636" />
+ <text
+ x="1474.6729"
+ y="-552.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8638">./src/wkb.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8640">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="88.6543"
+ height="30"
+ id="rect8642" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8644">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ width="190.7598"
+ height="30"
+ stroke="none"
+ id="rect8646" />
+ <text
+ x="-568.8799"
+ y="1541.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8648">./agg/src/agg_vcgen_stroke.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8650">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="190.7598"
+ height="30"
+ id="rect8652" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8654">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ width="163.0332"
+ height="30"
+ stroke="none"
+ id="rect8656" />
+ <text
+ x="-126.5166"
+ y="1293.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8658">./agg/src/agg_gsv_text.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8660">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="163.0332"
+ height="30"
+ id="rect8662" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8664">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ width="202.502"
+ height="30"
+ stroke="none"
+ id="rect8666" />
+ <text
+ x="325.249"
+ y="-184.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8668">./plugins/input/shape/shape.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8670">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="202.502"
+ height="30"
+ id="rect8672" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8674">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ width="74.627"
+ height="30"
+ stroke="none"
+ id="rect8676" />
+ <text
+ x="2226.1865"
+ y="1987.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8678">./bindings</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8680">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="74.627"
+ height="30"
+ id="rect8682" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8684">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ width="41.2637"
+ height="30"
+ stroke="none"
+ id="rect8686" />
+ <text
+ x="1565.8682"
+ y="-296.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8688">./src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8690">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="41.2637"
+ height="30"
+ id="rect8692" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8694">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ width="221.8203"
+ height="30"
+ stroke="none"
+ id="rect8696" />
+ <text
+ x="1378.5898"
+ y="1882.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8698">./bindings/python/mapnik_filter.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8700">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.8203"
+ height="30"
+ id="rect8702" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8704">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ width="196.4668"
+ height="30"
+ stroke="none"
+ id="rect8706" />
+ <text
+ x="-476.2334"
+ y="1794.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8708">./agg/src/agg_vcgen_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8710">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.4668"
+ height="30"
+ id="rect8712" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8714">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ width="227.7383"
+ height="30"
+ stroke="none"
+ id="rect8716" />
+ <text
+ x="1299.1309"
+ y="2672.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8718">./bindings/python/mapnik_coord.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8720">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.7383"
+ height="30"
+ id="rect8722" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8724">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ width="116.9492"
+ height="30"
+ stroke="none"
+ id="rect8726" />
+ <text
+ x="1757.0254"
+ y="-785.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8728">./src/envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8730">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="116.9492"
+ height="30"
+ id="rect8732" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8734">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ width="229.0859"
+ height="30"
+ stroke="none"
+ id="rect8736" />
+ <text
+ x="-346.043"
+ y="2059.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8738">./agg/src/agg_vpgen_segmentator.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8740">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.0859"
+ height="30"
+ id="rect8742" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8744">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ width="222.3477"
+ height="30"
+ stroke="none"
+ id="rect8746" />
+ <text
+ x="1714.3262"
+ y="1999.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8748">./bindings/python/mapnik_layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8750">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="222.3477"
+ height="30"
+ id="rect8752" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8754">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ width="285.3828"
+ height="30"
+ stroke="none"
+ id="rect8756" />
+ <text
+ x="1345.3086"
+ y="2964.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8758">./bindings/python/mapnik_line_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8760">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="285.3828"
+ height="30"
+ id="rect8762" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8764">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ width="169.5078"
+ height="30"
+ stroke="none"
+ id="rect8766" />
+ <text
+ x="1757.2461"
+ y="415.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8768">./src/shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8770">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="169.5078"
+ height="30"
+ id="rect8772" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8774">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ width="221.9844"
+ height="30"
+ stroke="none"
+ id="rect8776" />
+ <text
+ x="-407.9922"
+ y="1011.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8778">./agg/src/agg_trans_double_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8780">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.9844"
+ height="30"
+ id="rect8782" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8784">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ width="123.9336"
+ height="30"
+ stroke="none"
+ id="rect8786" />
+ <text
+ x="1311.5332"
+ y="220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8788">./src/projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8790">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="123.9336"
+ height="30"
+ id="rect8792" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8794">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ width="124.9941"
+ height="30"
+ stroke="none"
+ id="rect8796" />
+ <text
+ x="1116.5029"
+ y="-309.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8798">./src/tiff_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8800">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="124.9941"
+ height="30"
+ id="rect8802" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8804">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ width="281.3574"
+ height="30"
+ stroke="none"
+ id="rect8806" />
+ <text
+ x="1691.8213"
+ y="3282.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8808">./bindings/python/mapnik_proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8810">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="281.3574"
+ height="30"
+ id="rect8812" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8814">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ width="221.416"
+ height="30"
+ stroke="none"
+ id="rect8816" />
+ <text
+ x="1283.292"
+ y="1625.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8818">./bindings/python/mapnik_style.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8820">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.416"
+ height="30"
+ id="rect8822" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8824">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ width="299.0527"
+ height="30"
+ stroke="none"
+ id="rect8826" />
+ <text
+ x="1818.9736"
+ y="1696.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8828">./bindings/python/mapnik_shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8830">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="299.0527"
+ height="30"
+ id="rect8832" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8834">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ width="143.6797"
+ height="30"
+ stroke="none"
+ id="rect8836" />
+ <text
+ x="1468.6602"
+ y="265.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8838">./src/image_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8840">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.6797"
+ height="30"
+ id="rect8842" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8844">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ width="156.4941"
+ height="30"
+ stroke="none"
+ id="rect8846" />
+ <text
+ x="-332.2471"
+ y="1403.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8848">./agg/src/agg_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8850">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="156.4941"
+ height="30"
+ id="rect8852" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8854">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ width="216.5762"
+ height="30"
+ stroke="none"
+ id="rect8856" />
+ <text
+ x="-147.2881"
+ y="1523.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8858">./agg/src/agg_trans_single_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8860">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.5762"
+ height="30"
+ id="rect8862" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8864">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ width="229.8184"
+ height="30"
+ stroke="none"
+ id="rect8866" />
+ <text
+ x="-444.9092"
+ y="-1258.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8868">./plugins/input/raster/raster_info.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8870">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8184"
+ height="30"
+ id="rect8872" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8874">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ width="181.918"
+ height="30"
+ stroke="none"
+ id="rect8876" />
+ <text
+ x="65.041"
+ y="1139.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8878">./agg/src/agg_vcgen_dash.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8880">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="181.918"
+ height="30"
+ id="rect8882" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8884">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ width="253.4785"
+ height="30"
+ stroke="none"
+ id="rect8886" />
+ <text
+ x="2119.2607"
+ y="3074.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8888">./bindings/python/mapnik_projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8890">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="253.4785"
+ height="30"
+ id="rect8892" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8894">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ width="261.4648"
+ height="30"
+ stroke="none"
+ id="rect8896" />
+ <text
+ x="1089.2676"
+ y="2110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8898">./bindings/python/mapnik_image_view.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8900">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="261.4648"
+ height="30"
+ id="rect8902" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8904">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ width="113.375"
+ height="30"
+ stroke="none"
+ id="rect8906" />
+ <text
+ x="1591.8125"
+ y="105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8908">./src/distance.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8910">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="113.375"
+ height="30"
+ id="rect8912" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8914">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ width="167.8672"
+ height="30"
+ stroke="none"
+ id="rect8916" />
+ <text
+ x="2110.0664"
+ y="-299.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8918">./src/datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8920">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="167.8672"
+ height="30"
+ id="rect8922" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8924">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ width="260.1934"
+ height="30"
+ stroke="none"
+ id="rect8926" />
+ <text
+ x="2145.9033"
+ y="1632.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8928">./bindings/python/mapnik_parameters.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8930">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="260.1934"
+ height="30"
+ id="rect8932" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8934">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ width="101.709"
+ height="30"
+ stroke="none"
+ id="rect8936" />
+ <text
+ x="1291.1455"
+ y="-454.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8938">./src/plugin.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8940">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.709"
+ height="30"
+ id="rect8942" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8944">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ width="175.5781"
+ height="30"
+ stroke="none"
+ id="rect8946" />
+ <text
+ x="-536.7891"
+ y="1318.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8948">./agg/src/agg_arrowhead.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8950">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="175.5781"
+ height="30"
+ id="rect8952" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8954">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ width="235.6426"
+ height="30"
+ stroke="none"
+ id="rect8956" />
+ <text
+ x="1824.1787"
+ y="2623.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8958">./bindings/python/mapnik_feature.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8960">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="235.6426"
+ height="30"
+ id="rect8962" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8964">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ width="251.2461"
+ height="30"
+ stroke="none"
+ id="rect8966" />
+ <text
+ x="-848.123"
+ y="1633.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8968">./agg/src/agg_embedded_raster_fonts.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8970">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="251.2461"
+ height="30"
+ id="rect8972" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8974">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ width="122.6445"
+ height="30"
+ stroke="none"
+ id="rect8976" />
+ <text
+ x="1676.6777"
+ y="-200.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8978">./src/libmapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8980">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="122.6445"
+ height="30"
+ id="rect8982" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8984">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ width="165.623"
+ height="30"
+ stroke="none"
+ id="rect8986" />
+ <text
+ x="1046.1885"
+ y="-106.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8988">./src/placement_finder.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8990">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.623"
+ height="30"
+ id="rect8992" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8994">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ width="178.209"
+ height="30"
+ stroke="none"
+ id="rect8996" />
+ <text
+ x="-158.1045"
+ y="1023.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8998">./agg/src/agg_sqrt_tables.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9000">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="178.209"
+ height="30"
+ id="rect9002" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9004">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ width="227.9492"
+ height="30"
+ stroke="none"
+ id="rect9006" />
+ <text
+ x="228.5254"
+ y="1497.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9008">./agg/src/agg_vpgen_clip_polyline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9010">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.9492"
+ height="30"
+ id="rect9012" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9014">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ width="298.0508"
+ height="30"
+ stroke="none"
+ id="rect9016" />
+ <text
+ x="1475.9746"
+ y="1023.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9018">./bindings/python/mapnik_raster_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9020">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="298.0508"
+ height="30"
+ id="rect9022" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9024">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ width="198.3945"
+ height="30"
+ stroke="none"
+ id="rect9026" />
+ <text
+ x="372.8027"
+ y="2048.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9028">./agg/src/agg_line_profile_aa.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9030">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="198.3945"
+ height="30"
+ id="rect9032" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9034">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="333.582"
+ height="30"
+ stroke="none"
+ id="rect9036" />
+ <text
+ x="922.209"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9038">./bindings/python/mapnik_line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9040">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="333.582"
+ height="30"
+ id="rect9042" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9044">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ width="223.6543"
+ height="30"
+ stroke="none"
+ id="rect9046" />
+ <text
+ x="1304.1729"
+ y="1312.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9048">./bindings/python/mapnik_color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9050">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="223.6543"
+ height="30"
+ id="rect9052" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9054">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ width="151.8125"
+ height="30"
+ stroke="none"
+ id="rect9056" />
+ <text
+ x="1641.5938"
+ y="-374.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9058">./src/proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9060">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.8125"
+ height="30"
+ id="rect9062" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9064">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ width="182.457"
+ height="30"
+ stroke="none"
+ id="rect9066" />
+ <text
+ x="1305.2715"
+ y="-126.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9068">./src/memory_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9070">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.457"
+ height="30"
+ id="rect9072" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9074">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ width="103.7715"
+ height="30"
+ stroke="none"
+ id="rect9076" />
+ <text
+ x="-187.8857"
+ y="-241.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9078">./plugins/input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9080">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="103.7715"
+ height="30"
+ id="rect9082" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9084">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ width="234.9629"
+ height="30"
+ stroke="none"
+ id="rect9086" />
+ <text
+ x="660.0186"
+ y="1876.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9088">./bindings/python/mapnik_python.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9090">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9629"
+ height="30"
+ id="rect9092" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9094">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="130.6953"
+ height="30"
+ stroke="none"
+ id="rect9096" />
+ <text
+ x="1595.6523"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9098">./src/png_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9100">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="130.6953"
+ height="30"
+ id="rect9102" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9104">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ width="246.4941"
+ height="30"
+ stroke="none"
+ id="rect9106" />
+ <text
+ x="1143.2529"
+ y="2400.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9108">./bindings/python/mapnik_envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9110">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="246.4941"
+ height="30"
+ id="rect9112" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9114">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ width="230.9727"
+ height="30"
+ stroke="none"
+ id="rect9116" />
+ <text
+ x="1014.5137"
+ y="1471.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9118">./bindings/python/mapnik_stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9120">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="230.9727"
+ height="30"
+ id="rect9122" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9124">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ width="219.418"
+ height="30"
+ stroke="none"
+ id="rect9126" />
+ <text
+ x="269.791"
+ y="342.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9128">./plugins/input/shape/shape.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9130">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.418"
+ height="30"
+ id="rect9132" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9134">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ width="227.252"
+ height="30"
+ stroke="none"
+ id="rect9136" />
+ <text
+ x="1970.374"
+ y="1334.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9138">./bindings/python/mapnik_query.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9140">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.252"
+ height="30"
+ id="rect9142" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9144">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ width="165.0957"
+ height="30"
+ stroke="none"
+ id="rect9146" />
+ <text
+ x="1349.4521"
+ y="-859.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9148">./src/point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9150">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.0957"
+ height="30"
+ id="rect9152" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9154">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ width="138.5"
+ height="30"
+ stroke="none"
+ id="rect9156" />
+ <text
+ x="1485.75"
+ y="475.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9158">./src/filter_factory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9160">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="138.5"
+ height="30"
+ id="rect9162" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9164">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ width="311.2754"
+ height="30"
+ stroke="none"
+ id="rect9166" />
+ <text
+ x="2057.8623"
+ y="2285.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9168">./bindings/python/mapnik_polygon_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9170">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="311.2754"
+ height="30"
+ id="rect9172" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9174">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ width="236.4219"
+ height="30"
+ stroke="none"
+ id="rect9176" />
+ <text
+ x="-87.2109"
+ y="2244.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9178">./agg/src/agg_vcgen_smooth_poly1.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9180">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="236.4219"
+ height="30"
+ id="rect9182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9184">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ width="305.5625"
+ height="30"
+ stroke="none"
+ id="rect9186" />
+ <text
+ x="-365.2812"
+ y="125.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9188">./plugins/input/shape/shape_index_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9190">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="305.5625"
+ height="30"
+ id="rect9192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9194">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ width="220.1738"
+ height="30"
+ stroke="none"
+ id="rect9196" />
+ <text
+ x="840.4131"
+ y="2185.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9198">./bindings/python/python_cairo.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9200">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.1738"
+ height="30"
+ id="rect9202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9204">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ width="128.7676"
+ height="30"
+ stroke="none"
+ id="rect9206" />
+ <text
+ x="2153.6162"
+ y="-476.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9208">./src/symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9210">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="128.7676"
+ height="30"
+ id="rect9212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9214">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ width="194.3867"
+ height="30"
+ stroke="none"
+ id="rect9216" />
+ <text
+ x="1419.8066"
+ y="2358.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9218">./bindings/python/_mapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9220">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="194.3867"
+ height="30"
+ id="rect9222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9224">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ width="182.8438"
+ height="30"
+ stroke="none"
+ id="rect9226" />
+ <text
+ x="186.0781"
+ y="2266.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9228">./agg/src/agg_trans_affine.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9230">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.8438"
+ height="30"
+ id="rect9232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9234">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ width="229.9297"
+ height="30"
+ stroke="none"
+ id="rect9236" />
+ <text
+ x="869.0352"
+ y="-574.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9238">./src/polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9240">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.9297"
+ height="30"
+ id="rect9242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9244">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ width="359.4746"
+ height="30"
+ stroke="none"
+ id="rect9246" />
+ <text
+ x="2100.7627"
+ y="2648.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9248">./bindings/python/mapnik_polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9250">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="359.4746"
+ height="30"
+ id="rect9252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9254">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="151.7188"
+ height="30"
+ stroke="none"
+ id="rect9256" />
+ <text
+ x="-251.3594"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9258">./agg/src/agg_curves.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9260">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.7188"
+ height="30"
+ id="rect9262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9264">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ width="157.7891"
+ height="30"
+ stroke="none"
+ id="rect9266" />
+ <text
+ x="1284.6055"
+ y="-615.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9268">./src/text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9270">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="157.7891"
+ height="30"
+ id="rect9272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9274">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ width="174.459"
+ height="30"
+ stroke="none"
+ id="rect9276" />
+ <text
+ x="1553.2705"
+ y="-824.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9278">./src/scale_denominator.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9280">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.459"
+ height="30"
+ id="rect9282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9284">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ width="219.3418"
+ height="30"
+ stroke="none"
+ id="rect9286" />
+ <text
+ x="635.8291"
+ y="50.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9288">./plugins/input/shape/shape_io.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9290">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.3418"
+ height="30"
+ id="rect9292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9294">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ width="92.8027"
+ height="30"
+ stroke="none"
+ id="rect9296" />
+ <text
+ x="1512.0986"
+ y="-420.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9298">./src/layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9300">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="92.8027"
+ height="30"
+ id="rect9302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9304">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ width="45.6816"
+ height="30"
+ stroke="none"
+ id="rect9306" />
+ <text
+ x="-33.8408"
+ y="2057.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9308">./agg</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9310">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="45.6816"
+ height="30"
+ id="rect9312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9314">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ width="151.5664"
+ height="30"
+ stroke="none"
+ id="rect9316" />
+ <text
+ x="1881.2168"
+ y="13.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9318">./src/libxml2_loader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9320">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.5664"
+ height="30"
+ id="rect9322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9324">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ width="229.1797"
+ height="30"
+ stroke="none"
+ id="rect9326" />
+ <text
+ x="-794.0898"
+ y="1220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9328">./agg/src/agg_vpgen_clip_polygon.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9330">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.1797"
+ height="30"
+ id="rect9332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9334">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ width="144.4941"
+ height="30"
+ stroke="none"
+ id="rect9336" />
+ <text
+ x="158.7529"
+ y="116.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9338">./plugins/input/shape</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9340">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="144.4941"
+ height="30"
+ id="rect9342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9344">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ width="249.4824"
+ height="30"
+ stroke="none"
+ id="rect9346" />
+ <text
+ x="550.2588"
+ y="2305.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9348">./bindings/python/mapnik_geometry.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9350">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="249.4824"
+ height="30"
+ id="rect9352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9354">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ width="287.334"
+ height="30"
+ stroke="none"
+ id="rect9356" />
+ <text
+ x="930.333"
+ y="1110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9358">./bindings/python/mapnik_text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9360">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="287.334"
+ height="30"
+ id="rect9362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9364">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ width="191.3984"
+ height="30"
+ stroke="none"
+ id="rect9366" />
+ <text
+ x="440.3008"
+ y="1825.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9368">./agg/src/agg_rounded_rect.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9370">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="191.3984"
+ height="30"
+ id="rect9372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9374">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ width="121.4961"
+ height="30"
+ stroke="none"
+ id="rect9376" />
+ <text
+ x="1548.252"
+ y="2084.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9378">./bindings/python</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9380">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.4961"
+ height="30"
+ id="rect9382" />
+ <path
+ fill="none"
+ d="M2577.5508 2232.655 L2889.043 2264.1677"
+ clip-path="url(#clipPath2)"
+ id="path9384" />
+ <path
+ fill="none"
+ d="M24.5742 1698.3611 L185.0576 1702.3578"
+ clip-path="url(#clipPath2)"
+ id="path9386" />
+ <path
+ fill="none"
+ d="M-31.6769 1682.5 L-131.8263 1613.1986 L-307.8319 1479.7761 L-322.1423 1467.1691 L-335.9341 1453.8378 L-420.4944 1355.8801 L-431.8936 1341.8081 L-442.9968 1329"
+ clip-path="url(#clipPath2)"
+ id="path9388" />
+ <path
+ fill="none"
+ d="M7.2593 1682.5 L170.8382 1540.3337 L183.5103 1528.4264 L195.0703 1515.1906 L203.2204 1499.588 L208.0298 1482.4165 L212.1165 1464.9495 L217.4223 1447.5245 L224.4582 1430.9707 L348.8411 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9390" />
+ <path
+ fill="none"
+ d="M-30.3421 1682.5 L-117.9062 1617.9313 L-127.6741 1609.3701 L-136.938 1599.8932 L-145.2881 1589.3641 L-152.7591 1578.7178 L-251.9406 1414.5"
+ clip-path="url(#clipPath2)"
+ id="path9392" />
+ <path
+ fill="none"
+ d="M-41.5549 1712.5 L-150.9451 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9394" />
+ <path
+ fill="none"
+ d="M-44.5742 1694.2324 L-603.877 1641.3727"
+ clip-path="url(#clipPath2)"
+ id="path9396" />
+ <path
+ fill="none"
+ d="M-0.4959 1682.5 L5.2959 1673.359 L54.5589 1589.4877 L61.0658 1576.5562 L66.893 1562.6425 L71.3597 1548.4495 L73.9725 1533.6312 L74.9174 1518.3745 L73.7647 1503.0833 L70.803 1487.9604 L65.953 1473.3381 L59.488 1459.3448 L52.1157 1446.1976 L-42.0651 1304"
+ clip-path="url(#clipPath2)"
+ id="path9398" />
+ <path
+ fill="none"
+ d="M-7.5982 1712.5 L14.0982 1848"
+ clip-path="url(#clipPath2)"
+ id="path9400" />
+ <path
+ fill="none"
+ d="M8.3456 1712.5 L221.1544 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9402" />
+ <path
+ fill="none"
+ d="M24.5742 1709.7097 L224.8548 1780.4376 L274.5859 1796.1027 L290.3831 1803.1301 L305.0963 1812.2388 L317.8884 1823.064 L329.0148 1835.4955 L338.6302 1848.3523 L455.3114 2029"
+ clip-path="url(#clipPath2)"
+ id="path9404" />
+ <path
+ fill="none"
+ d="M24.5742 1709.5155 L220.8472 1777.7257 L238.4817 1782.3004 L324.5341 1794.4855 L341.7867 1796.4042 L433.3008 1808.4272"
+ clip-path="url(#clipPath2)"
+ id="path9406" />
+ <path
+ fill="none"
+ d="M-0.9936 1682.5 L50.1437 1597.332 L57.3786 1583.8605 L63.929 1570.2368 L69.2742 1555.1427 L72.9572 1539.9404 L74.755 1524.0978 L74.5616 1508.144 L69.7308 1462.8016 L67.2398 1448.1791 L46.6858 1301.0886 L40.6985 1270.2456 L36.1484 1254.5295 L30.1596 1239.6921 L-68.7682 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9408" />
+ <path
+ fill="none"
+ d="M7.5011 1712.5 L84.9684 1778.8966 L97.4166 1792.4541 L107.5913 1806.808 L115.5777 1822.2261 L120.8528 1838.3977 L123.3011 1854.1149 L127.3981 1901.7179 L129.5949 1917.3544 L132.8063 1932.9053 L137.6825 1947.8722 L264.1679 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9410" />
+ <path
+ fill="none"
+ d="M-30.3804 1682.5 L-109.8009 1624.0464 L-121.1156 1614.7283 L-132.1969 1604.0846 L-142.184 1592.3759 L-150.7367 1579.3018 L-157.7693 1565.1106 L-163.0598 1550.7333 L-165.983 1534.505 L-167.597 1518.8418 L-168.8886 1410.1838 L-169.9251 1394.0894 L-172.5114 1377.2661 L-176.7595 1361.7198 L-298.6194 1022"
+ clip-path="url(#clipPath2)"
+ id="path9412" />
+ <path
+ fill="none"
+ d="M-13.0252 1682.5 L-42.9748 1534"
+ clip-path="url(#clipPath2)"
+ id="path9414" />
+ <path
+ fill="none"
+ d="M24.5742 1687.3417 L211.2763 1632.4862 L230.4907 1627.6432 L250.3716 1624.6504 L328.7023 1621.3073 L348.4196 1619.7538 L368.0745 1617.4214 L510.9839 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9416" />
+ <path
+ fill="none"
+ d="M-44.5742 1695.8385 L-164.7434 1690.0634 L-177.8356 1690.061 L-191.578 1690.8328 L-204.8772 1693.3619 L-217.7414 1697.4427 L-240.9324 1708.3999 L-358.6783 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9418" />
+ <path
+ fill="none"
+ d="M7.529 1682.5 L138.9264 1570.0598 L148.6751 1560.6741 L158.7948 1552.2384 L178.7862 1533.6653 L188.7202 1523.3728 L197.5696 1511.4668 L203.8828 1497.4987 L207.8515 1482.9614 L211.1029 1467.9121 L215.285 1452.8943 L221.2153 1438.4976 L228.5741 1424.6746 L238.2442 1412.2913 L248.6876 1400.8505 L261.0592 1390.6781 L274.4546 1382.137 L288.1776 1374.8389 L315.8387 1363.2257 L561.9354 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9420" />
+ <path
+ fill="none"
+ d="M-1.1162 1682.5 L53.6143 1590.0895 L61.9957 1573.4156 L68.9728 1555.3479 L73.5761 1536.5132 L76.2372 1517.584 L79.7695 1480.3877 L82.222 1461.5187 L145.9323 1150"
+ clip-path="url(#clipPath2)"
+ id="path9422" />
+ <path
+ fill="none"
+ d="M-21.1026 1712.5 L-106.8676 1828.3712 L-116.5694 1839.3942 L-127.7954 1849.3232 L-139.8821 1858.0498 L-165.3045 1872.8499 L-284.2802 1934.2721 L-298.4405 1942.3529 L-312.5903 1951.3605 L-339.184 1971.7175 L-480.0865 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9424" />
+ <path
+ fill="none"
+ d="M-19.2353 1712.5 L-60.2772 1779.1603 L-74.3468 1803.9298 L-80.6547 1816.9384 L-86.1567 1831.2423 L-89.365 1846.1083 L-90.6617 1861.1736 L-90.0964 1876.3617 L-86.5496 1891.6437 L-81.7927 1905.8558 L-74.9382 1919.4861 L-66.4475 1932.3898 L-47.7518 1955.9055 L9.8738 2025.3236 L17.6516 2039.1315 L21.1875 2054.6111 L23.7724 2225"
+ clip-path="url(#clipPath2)"
+ id="path9426" />
+ <path
+ fill="none"
+ d="M-44.5742 1685.7426 L-436.3906 1552.5"
+ clip-path="url(#clipPath2)"
+ id="path9428" />
+ <path
+ fill="none"
+ d="M-34.4191 1682.5 L-422.8861 1443.8751 L-438.5209 1435.4724 L-485.9133 1412.2606 L-501.7971 1403.8612 L-517.0173 1393.6337 L-530.9767 1381.8546 L-672.3918 1231.5"
+ clip-path="url(#clipPath2)"
+ id="path9430" />
+ <path
+ fill="none"
+ d="M15.3423 1682.5 L310.1577 1508"
+ clip-path="url(#clipPath2)"
+ id="path9432" />
+ <path
+ fill="none"
+ d="M-19.574 1712.5 L-228.926 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9434" />
+ <path
+ fill="none"
+ d="M1705.7683 -190 L1229.7317 93"
+ clip-path="url(#clipPath2)"
+ id="path9436" />
+ <path
+ fill="none"
+ d="M1792.3223 -207.5711 L1889.0596 -211.6272 L1904.3265 -213.2381 L1919.7518 -216.2674 L1934.6373 -220.1078 L2143.3914 -289.0011"
+ clip-path="url(#clipPath2)"
+ id="path9438" />
+ <path
+ fill="none"
+ d="M1778.2689 -190 L1871.4453 -160.432"
+ clip-path="url(#clipPath2)"
+ id="path9440" />
+ <path
+ fill="none"
+ d="M1737.709 -220 L1784.8777 -325.4607 L1792.1422 -343.3415 L1797.3993 -362.1091 L1798.9524 -381.2829 L1796.4418 -400.2448 L1791.0763 -418.4256 L1784.3788 -435.7887 L1742.769 -535.712 L1737.2317 -553.2609 L1736.0367 -571.5535 L1739.8428 -589.6634 L1745.2104 -606.9964 L1803.3124 -775"
+ clip-path="url(#clipPath2)"
+ id="path9442" />
+ <path
+ fill="none"
+ d="M1722.7018 -190 L1671.9998 -98.3503 L1664.8926 -83.9824 L1658.9614 -68.4607 L1656.0035 -52.007 L1657.1727 -35.4369 L1662.0831 -19.4679 L1703.2703 67.3736 L1708.6812 82.8308 L1711.2114 99.089 L1709.9719 115.4139 L1705.568 131.1046 L1687.5476 173.7935 L1681.0388 187.5816 L1675.4331 201.3511 L1662.2848 228.414 L1555.0521 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9444" />
+ <path
+ fill="none"
+ d="M1737.8416 -220 L1790.4821 -335.4135 L1796.799 -350.5091 L1942.6581 -740.9563 L1956.9553 -771.0897 L2024.962 -898"
+ clip-path="url(#clipPath2)"
+ id="path9446" />
+ <path
+ fill="none"
+ d="M1730.4249 -190 L1725.5751 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9448" />
+ <path
+ fill="none"
+ d="M1715.6113 -220 L1609.3069 -323.6192 L1597.2324 -332.56 L1584.4562 -339.7423 L1534.261 -364.9576 L1521.441 -372.2469 L1509.2654 -381.3355 L1498.1863 -390.8954 L1395.7156 -491.3533 L1384.5231 -501.4753 L1372.7471 -511.0984 L1359.075 -518.9822 L1316.8344 -536.9285 L1302.9846 -545.2017 L1290.5354 -554.8357 L1278.8702 -565.0334 L1206.5126 -635"
+ clip-path="url(#clipPath2)"
+ id="path9450" />
+ <path
+ fill="none"
+ d="M1721.9266 -190 L1674.641 -111.8283 L1585.7194 54.9422 L1578.7654 70.2131 L1572.662 85.898 L1536.8547 246"
+ clip-path="url(#clipPath2)"
+ id="path9452" />
+ <path
+ fill="none"
+ d="M1737.8553 -220 L1793.4465 -341.6367 L1861.5244 -516.049 L1869.9036 -533.5408 L1879.9336 -550.3941 L1891.3851 -566.1861 L2006.2628 -707"
+ clip-path="url(#clipPath2)"
+ id="path9454" />
+ <path
+ fill="none"
+ d="M1718.7335 -220 L1563.7665 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9456" />
+ <path
+ fill="none"
+ d="M1743.1837 -220 L1839.7024 -338.8295 L1870.7987 -373.4109 L1959.0747 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9458" />
+ <path
+ fill="none"
+ d="M1737.6589 -220 L1759.5264 -269.2584 L1789.1104 -333.3076 L1793.4485 -345.0605 L1797.1232 -357.1674 L1799.2274 -369.9363 L1800.329 -382.1035 L1800.6512 -394.3187 L1795.0359 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9460" />
+ <path
+ fill="none"
+ d="M1686 -220 L1444.5 -300.5"
+ clip-path="url(#clipPath2)"
+ id="path9462" />
+ <path
+ fill="none"
+ d="M1737.9821 -190 L1759.0538 -144.7306 L1763.9989 -132.3875 L1786.4437 -83.6733 L1791.2949 -70.4718 L1794.7535 -56.8085 L1823.2671 190"
+ clip-path="url(#clipPath2)"
+ id="path9464" />
+ <path
+ fill="none"
+ d="M1792.3223 -205.6755 L1912.9915 -207.0047 L1925.9236 -205.9872 L1938.9326 -203.1653 L1962.4874 -194.9545 L2073.5273 -148"
+ clip-path="url(#clipPath2)"
+ id="path9466" />
+ <path
+ fill="none"
+ d="M1669.6777 -210.6785 L1654.0314 -212.1274 L1634.9186 -214.42 L1615.7456 -215.458 L1429.9047 -232.3959 L1393.85 -234.3698 L1375.6881 -233.3309 L1359.0819 -229.8459 L1342.7466 -224.1006 L1327.733 -217.4407 L1150.8571 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9468" />
+ <path
+ fill="none"
+ d="M1715.6975 -220 L1618.0374 -315.7292 L1606.6896 -325.8326 L1593.8826 -334.5842 L1498.2308 -379.2232 L1365.6914 -444"
+ clip-path="url(#clipPath2)"
+ id="path9470" />
+ <path
+ fill="none"
+ d="M1719.4562 -220 L1647.702 -313.2364 L1639.4208 -324.8945 L1631.936 -337.4316 L1626.1655 -351.033 L1622.7638 -364.8717 L1621.6257 -379.3865 L1622.1956 -393.6915 L1651.7098 -587"
+ clip-path="url(#clipPath2)"
+ id="path9472" />
+ <path
+ fill="none"
+ d="M1719.4407 -220 L1647.3424 -313.5588 L1638.4584 -326.7014 L1630.6166 -340.589 L1624.4246 -356.2978 L1621.1759 -371.7042 L1611.754 -432.9737 L1608.1443 -448.4993 L1571.5094 -565.6849 L1565.8434 -580.5214 L1432.4658 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9474" />
+ <path
+ fill="none"
+ d="M1689.9011 -220 L1579.2606 -260.3808 L1562.4448 -268.2509 L1547.4619 -279.0468 L1453.738 -366.6343 L1438.5922 -377.8836 L1421.4435 -385.7967 L1403.1199 -389.4229 L1331.2155 -394.633 L1313.1571 -398.5897 L1296.312 -405.6636 L1004.6323 -564"
+ clip-path="url(#clipPath2)"
+ id="path9476" />
+ <path
+ fill="none"
+ d="M1761.4546 -220 L1868.0454 -272.5"
+ clip-path="url(#clipPath2)"
+ id="path9478" />
+ <path
+ fill="none"
+ d="M1737.8378 -190 L1782.3468 -92.3615 L1788.3433 -77.1847 L1792.8481 -60.652 L1794.0735 -43.5573 L1792.6171 -26.5087 L1758.4685 174.4238 L1756.068 191.6194 L1755.7196 208.9639 L1758.5198 225.972 L1763.705 241.887 L1786.6254 300.2224 L1792.8827 313.9514 L1798.786 328.3393 L1828.4285 396"
+ clip-path="url(#clipPath2)"
+ id="path9480" />
+ <path
+ fill="none"
+ d="M1715.6499 -220 L1613.6167 -319.7058 L1600.3414 -330.6942 L1585.488 -339.5492 L1539.1113 -362.3184 L1523.2679 -371.3719 L1508.7147 -382.5849 L1496.9186 -396.8426 L1365.9385 -605"
+ clip-path="url(#clipPath2)"
+ id="path9482" />
+ <path
+ fill="none"
+ d="M1669.6777 -211.4206 L1570.3632 -221.8192 L1552.5938 -223.1205 L1391.7688 -241.755 L1373.3782 -245.8518 L1216.3251 -299"
+ clip-path="url(#clipPath2)"
+ id="path9484" />
+ <path
+ fill="none"
+ d="M1719.3217 -220 L1652.9008 -305.3127 L1637.6135 -327.1343 L1630.889 -339.1896 L1625.6447 -352.1444 L1622.0043 -365.6252 L1617.4021 -392.0246 L1616.0254 -404.7892 L1611.8835 -431.1289 L1608.2532 -444.5484 L1601.9314 -457.2315 L1593.8871 -468.5936 L1525.8938 -542"
+ clip-path="url(#clipPath2)"
+ id="path9486" />
+ <path
+ fill="none"
+ d="M1719.7517 -190 L1512.821 85.951 L1501.3052 99.9877 L1488.329 112.7794 L1384.1188 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9488" />
+ <path
+ fill="none"
+ d="M1729.2328 -220 L1712.2672 -364"
+ clip-path="url(#clipPath2)"
+ id="path9490" />
+ <path
+ fill="none"
+ d="M1722.5846 -190 L1681.4597 -116.6974 L1674.6794 -103.1759 L1667.4226 -89.8639 L1660.6564 -74.698 L1656.6792 -58.9427 L1653.626 -41.7401 L1651.9781 -24.6842 L1650.8036 -7.3245 L1649.0201 10.5424 L1642.7401 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9492" />
+ <path
+ fill="none"
+ d="M1719.2087 -220 L1694.7434 -251.1231 L1686.0302 -263.1407 L1649.7358 -309.5934 L1641.0094 -322.1074 L1632.9093 -335.3819 L1626.6534 -350.1132 L1622.9349 -365.8031 L1621.8632 -381.9264 L1623.8821 -397.968 L1628.7859 -413.585 L1635.8981 -428.3178 L1712.8442 -546.8633 L1721.0911 -560.9402 L1727.7742 -576.067 L1731.7117 -592.0207 L1732.0756 -608.6171 L1729.2048 -624.3967 L1717.8364 -653.6657 L1673.2709 -747.8106 L1666.1648 -761.2916 L1660.1403 -774.6749 L1640.9241 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9494" />
+ <path
+ fill="none"
+ d="M1669.6777 -191.6222 L1458.2584 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9496" />
+ <path
+ fill="none"
+ d="M1739.1447 -190 L1863.7595 39.5027 L1871.1771 51.7794 L1879.2983 64.0357 L1898.2384 86.2591 L1960.827 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9498" />
+ <path
+ fill="none"
+ d="M1743.6166 -220 L1839.2838 -333.7397 L1850.5449 -344.3013 L1863.4709 -352.6133 L1878.0291 -358.5926 L1893.3893 -361.687 L1968.7413 -367.1797 L1984.5386 -369.0039 L2000.3026 -372.444 L2016.0938 -377.015 L2030.8204 -383.4816 L2045.321 -390.3967 L2183.5708 -466"
+ clip-path="url(#clipPath2)"
+ id="path9500" />
+ <path
+ fill="none"
+ d="M1715.2642 -190 L1468.7358 45"
+ clip-path="url(#clipPath2)"
+ id="path9502" />
+ <path
+ fill="none"
+ d="M1738.1113 -190 L1823.2002 -10.5217 L1911.3304 184.7965 L1921.2964 202.1295 L1933.5916 217.8769 L2028.3225 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9504" />
+ <path
+ fill="none"
+ d="M1746.3147 -190 L1934.6853 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9506" />
+ <path
+ fill="none"
+ d="M1719.8269 -189.9794 L1710.9945 -178.7845 L1516.5352 81.5281 L1506.3717 94.2074 L1495.1205 106.1388 L1481.5793 115.3665 L1466.39 121.0814 L1450.9139 124.6082 L1362.7417 139.9343 L1347.4766 143.7284 L1332.6359 149.6314 L1319.3198 158.2387 L1307.5835 169.312 L1287.3872 193.3884 L672.594 973.4279 L441.6343 1256.7087 L430.5662 1268.6992 L418.3392 1279.9236 L405.4018 1289.8066 L264.9038 1384.0872 L163.1076 1464"
+ clip-path="url(#clipPath2)"
+ id="path9508" />
+ <path
+ fill="none"
+ d="M250.5503 127.5 L428.9006 228.2618 L462.1554 250.634 L726.0931 440"
+ clip-path="url(#clipPath2)"
+ id="path9510" />
+ <path
+ fill="none"
+ d="M233.8562 127.5 L362.6438 323.5"
+ clip-path="url(#clipPath2)"
+ id="path9512" />
+ <path
+ fill="none"
+ d="M233.7425 97.5 L409.7575 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9514" />
+ <path
+ fill="none"
+ d="M225.5602 127.5 L249.045 353.2842 L331.5446 772"
+ clip-path="url(#clipPath2)"
+ id="path9516" />
+ <path
+ fill="none"
+ d="M151.7529 113.9661 L-66.7188 118.3996"
+ clip-path="url(#clipPath2)"
+ id="path9518" />
+ <path
+ fill="none"
+ d="M296.2471 103.2322 L628.8291 60.5686"
+ clip-path="url(#clipPath2)"
+ id="path9520" />
+ <path
+ fill="none"
+ d="M214.4915 127.5 L-46.9915 540"
+ clip-path="url(#clipPath2)"
+ id="path9522" />
+ <path
+ fill="none"
+ d="M2239.3679 1998 L2155.4436 2071.4805 L2143.0876 2080.9946 L2129.8374 2089.5989 L2115.9492 2096.5876 L2101.1887 2102.0188 L2086.0796 2105.4854 L2071.1526 2107.5623 L1841.6396 2119.9771 L1826.8549 2120.2129 L1811.7775 2119.8667 L1796.7798 2118.3806 L1662.748 2092.3142"
+ clip-path="url(#clipPath2)"
+ id="path9524" />
+ <path
+ fill="none"
+ d="M1572.8621 -285.5 L1490.1808 -98.6625 L1481.3794 -82.0423 L1470.7261 -66.2432 L1457.8481 -52.605 L1443.4885 -41.2841 L1412.5255 -21.1364 L1228.6635 93"
+ clip-path="url(#clipPath2)"
+ id="path9526" />
+ <path
+ fill="none"
+ d="M1574.2365 -285.5 L1458.2635 45"
+ clip-path="url(#clipPath2)"
+ id="path9528" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.875 L1738.1715 -280.3118 L1750.5458 -277.2058 L1762.5206 -272.6636 L1773.9989 -266.3214 L1784.2484 -258.9727 L1900.7533 -160.5"
+ clip-path="url(#clipPath2)"
+ id="path9530" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6243 L1682.269 -291.1569 L1699.8048 -290.2136 L1717.6859 -290.6404 L1735.2581 -293.9877 L1751.9829 -299.9295 L1782.4274 -314.1314 L1796.3497 -321.4707 L1811.2347 -328.2465 L1839.545 -342.5801 L1868.8745 -355.7003 L1884.9718 -359.8295 L1900.8519 -361.6436 L1917.1348 -359.9464 L2114.6455 -319"
+ clip-path="url(#clipPath2)"
+ id="path9532" />
+ <path
+ fill="none"
+ d="M1581.8135 -285.5 L1639.1865 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9534" />
+ <path
+ fill="none"
+ d="M1585.9137 -315.5 L1626.9812 -411.5464 L1635.4854 -427.641 L1709.5739 -541.4645 L1718.5413 -556.3099 L1726.7808 -571.8899 L1802.88 -775"
+ clip-path="url(#clipPath2)"
+ id="path9536" />
+ <path
+ fill="none"
+ d="M1579.1661 -285.5 L1570.9286 84.607 L1571.356 101.6438 L1573.7692 118.6585 L1578.5906 135.3658 L1612.851 229.6021 L1617.0092 246.5683 L1617.9976 264.2934 L1615.7949 281.7931 L1611.1025 298.5992 L1553.4745 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9538" />
+ <path
+ fill="none"
+ d="M1585.9491 -315.5 L1628.7637 -415.0833 L1636.6608 -429.5917 L1716.1844 -549.9628 L1741.313 -592.6497 L1751.0687 -606.4507 L1761.7155 -618.8658 L2019.1653 -898"
+ clip-path="url(#clipPath2)"
+ id="path9540" />
+ <path
+ fill="none"
+ d="M1588.1608 -285.5 L1716.3392 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9542" />
+ <path
+ fill="none"
+ d="M1564.959 -315.5 L1392.1792 -493.7342 L1380.0123 -505.272 L1366.1857 -515.327 L1350.8662 -522.8212 L1319.0122 -536.3331 L1303.6681 -545.1216 L1289.8102 -555.9888 L1276.7415 -567.3019 L1252.1761 -591.2873 L1206.6294 -635"
+ clip-path="url(#clipPath2)"
+ id="path9544" />
+ <path
+ fill="none"
+ d="M1578.2711 -285.5 L1534.7289 246"
+ clip-path="url(#clipPath2)"
+ id="path9546" />
+ <path
+ fill="none"
+ d="M1585.9148 -315.5 L1623.9624 -404.4688 L1630.5997 -418.2294 L1638.6387 -431.1348 L1648.6869 -442.6392 L1660.5364 -452.3571 L1673.6339 -459.9249 L1687.4928 -466.009 L1797.6302 -504.2472 L1812.218 -509.8861 L1826.6222 -517.39 L1839.3597 -527.7557 L1862.4513 -551.5592 L1932.7964 -628.1892 L1945.5214 -641.296 L2004.9359 -707"
+ clip-path="url(#clipPath2)"
+ id="path9548" />
+ <path
+ fill="none"
+ d="M1576.1129 -315.5 L1554.8871 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9550" />
+ <path
+ fill="none"
+ d="M1600.1318 -287.4944 L1707.2042 -220"
+ clip-path="url(#clipPath2)"
+ id="path9552" />
+ <path
+ fill="none"
+ d="M1589.1985 -285.5 L1661.0529 -174.3671 L1671.0265 -160.6411 L1682.8058 -148.7924 L1696.5781 -138.8818 L1710.4188 -131.841 L1753.0952 -113.1987 L1780.0155 -98.1506 L1926.3145 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9554" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6609 L1686.9719 -290.92 L1702.6021 -290.1562 L1718.5648 -290.5393 L1734.2698 -293.5994 L1749.1108 -299.236 L1762.6196 -306.9124 L1786.0736 -324.64 L1955.3499 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9556" />
+ <path
+ fill="none"
+ d="M1558.8682 -302.2193 L1460.1221 -310.4482"
+ clip-path="url(#clipPath2)"
+ id="path9558" />
+ <path
+ fill="none"
+ d="M1585.8168 -315.5 L1625.8408 -410.543 L1631.3073 -420.9417 L1637.6289 -430.8379 L1645.0138 -440.2143 L1653.0944 -448.5581 L1669.6295 -463.5915 L1776.2988 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9560" />
+ <path
+ fill="none"
+ d="M1583.7883 -285.5 L1651.3751 -49.0925 L1657.1646 -31.9459 L1664.5016 -14.997 L1674.2026 0.9056 L1813.9171 190"
+ clip-path="url(#clipPath2)"
+ id="path9562" />
+ <path
+ fill="none"
+ d="M1562.7354 -285.5 L1406.2646 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9564" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.8126 L1735.9352 -280.1231 L1753.366 -275.8355 L1770.0992 -269.3911 L1786.1671 -261.7391 L1846.3505 -230.1474 L1862.1223 -222.5492 L1878.9531 -216.0268 L1896.1616 -211.8175 L1930.9523 -204.9131 L1948.24 -199.5791 L2072.7815 -148"
+ clip-path="url(#clipPath2)"
+ id="path9566" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.0663 L1433.3401 -247.8382 L1418.0536 -243.2349 L1402.4036 -239.6292 L1370.939 -233.1345 L1355.0715 -228.8596 L1340.0222 -222.6089 L1151.171 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9568" />
+ <path
+ fill="none"
+ d="M1558.8682 -313.8748 L1358.1388 -444"
+ clip-path="url(#clipPath2)"
+ id="path9570" />
+ <path
+ fill="none"
+ d="M1583.8586 -315.5 L1612.3093 -413.4114 L1650.684 -587"
+ clip-path="url(#clipPath2)"
+ id="path9572" />
+ <path
+ fill="none"
+ d="M1566.2933 -315.5 L1514.8843 -373.89 L1504.1537 -387.4749 L1495.3708 -403.1423 L1489.4203 -419.789 L1460.8938 -520.2078 L1456.6606 -538.3257 L1453.6722 -556.3632 L1452.3645 -574.7655 L1449.7781 -629.4624 L1430.1891 -809.7579 L1428.8347 -827.6007 L1426.6023 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9574" />
+ <path
+ fill="none"
+ d="M1558.8682 -312.1941 L1452.7843 -372.322 L1440.3207 -378.6023 L1427.2346 -384.2264 L1413.2999 -388.1193 L1399.0243 -390.3098 L1343.8071 -393.2482 L1329.5986 -394.5866 L1315.0881 -397.9596 L1301.3245 -402.9852 L1288.3081 -409.2307 L1004.5057 -564"
+ clip-path="url(#clipPath2)"
+ id="path9576" />
+ <path
+ fill="none"
+ d="M1600.1318 -312.8633 L1685.4681 -364"
+ clip-path="url(#clipPath2)"
+ id="path9578" />
+ <path
+ fill="none"
+ d="M1572.8585 -285.5 L1487.5991 -92.9386 L1478.4438 -76.6212 L1468.6229 -61.6985 L1402.7 22.2378 L1394.6174 38.8205 L1389.4469 56.8215 L1368.6556 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9580" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5135 L1693.5884 -289.5154 L1709.191 -288.7659 L1837.5674 -287.9075"
+ clip-path="url(#clipPath2)"
+ id="path9582" />
+ <path
+ fill="none"
+ d="M1583.7517 -315.5 L1607.5015 -399.2886 L1610.8323 -416.8157 L1610.6674 -434.742 L1607.6373 -452.1016 L1580.8672 -566.9084 L1577.3993 -584.0591 L1575.7869 -601.7263 L1577.35 -619.4314 L1580.9305 -636.3984 L1614.8164 -764.4524 L1619.7084 -780.1863 L1624.0825 -796.5162 L1629.0833 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9584" />
+ <path
+ fill="none"
+ d="M1583.8019 -285.5 L1652.9181 -44.5011 L1657.9495 -28.9759 L1664.0696 -13.6799 L1706.2524 72.6705 L1712.1622 88.0203 L1755.9924 223.5812 L1761.5636 238.7214 L1828.6061 396"
+ clip-path="url(#clipPath2)"
+ id="path9586" />
+ <path
+ fill="none"
+ d="M1589.1637 -285.5 L1664.5575 -168.474 L1674.3359 -156.5337 L1685.8951 -145.9557 L1699.149 -137.4223 L1755.5259 -110.7229 L1769.1538 -101.467 L1780.8571 -89.4849 L1791.1833 -75.2934 L1809.1395 -47.7027 L1874.6827 57.0747 L1886.2128 72.1643 L1898.6288 86.4205 L1960.8711 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9588" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5899 L1680.4246 -291.1563 L1695.1542 -290.3194 L1710.582 -290.1999 L1726.1627 -291.7365 L1741.3241 -295.5708 L1755.6965 -301.1228 L1857.4005 -351.0461 L1870.8876 -356.5639 L1885.2015 -360.5438 L1899.5851 -362.6042 L1969.0137 -367.0708 L1983.0198 -368.654 L1997.3274 -370.9745 L2011.1989 -374.9344 L2024.6467 -380.273 L2049.2156 -392.3064 L2183.6387 -466"
+ clip-path="url(#clipPath2)"
+ id="path9590" />
+ <path
+ fill="none"
+ d="M1566.01 -315.4926 L1563.0609 -318.6098 L1506.4263 -383.1129 L1498.4028 -393.4107 L1491.4194 -403.7922 L1366.5425 -604.9753"
+ clip-path="url(#clipPath2)"
+ id="path9592" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.1273 L1428.6742 -246.6027 L1414.7637 -243.1767 L1400.3463 -241.7605 L1385.8116 -243.0361 L1372.291 -245.7882 L1216.0447 -299"
+ clip-path="url(#clipPath2)"
+ id="path9594" />
+ <path
+ fill="none"
+ d="M1589.1405 -285.5 L1662.5685 -171.2502 L1672.3359 -158.9074 L1684.024 -147.4209 L1697.4471 -138.3556 L1711.6204 -131.2945 L1739.769 -118.6583 L1753.9266 -111.6033 L1767.6046 -102.8544 L1779.1833 -91.2369 L1788.0878 -77.7131 L1910.2734 182.3812 L1918.0563 197.3588 L1928.0577 211.2185 L1939.489 224.0622 L2028.2697 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9596" />
+ <path
+ fill="none"
+ d="M1566.3265 -315.5 L1508.5015 -381.3427 L1499.0966 -395.045 L1493.3429 -410.4246 L1491.4697 -427.2559 L1492.8239 -443.7798 L1503.1702 -508.4587 L1509.2715 -542"
+ clip-path="url(#clipPath2)"
+ id="path9598" />
+ <path
+ fill="none"
+ d="M389.0941 -587 L-119.5941 -261"
+ clip-path="url(#clipPath2)"
+ id="path9600" />
+ <path
+ fill="none"
+ d="M128.5263 1464 L-36.5263 1304"
+ clip-path="url(#clipPath2)"
+ id="path9602" />
+ <path
+ fill="none"
+ d="M144.218 1464 L148.782 1150"
+ clip-path="url(#clipPath2)"
+ id="path9604" />
+ <path
+ fill="none"
+ d="M151.1333 1494 L243.8667 1689"
+ clip-path="url(#clipPath2)"
+ id="path9606" />
+ <path
+ fill="none"
+ d="M193.2402 1482.5999 L221.5254 1484.6676"
+ clip-path="url(#clipPath2)"
+ id="path9608" />
+ <path
+ fill="none"
+ d="M131.7539 1494 L55.0677 1587.9316 L42.7085 1601.2833 L29.2008 1613.6403 L14.6157 1624.2771 L-30.3586 1651.8414 L-44.221 1662.6852 L-54.3718 1676.7185 L-60.8013 1692.8674 L-91.1062 1788.2023 L-96.9305 1804.7229 L-104.2114 1820.9052 L-114.1318 1835.8052 L-126.848 1848.3961 L-141.6743 1858.7947 L-188.0667 1884.5151 L-282.5689 1933.7706 L-298.8415 1943.1725 L-314.7511 1953.4357 L-329.8501 1964.6443 L-400.5812 2021.3927 L-414.3242 2033.2428 L-480.0018 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9610" />
+ <path
+ fill="none"
+ d="M136.8978 1464 L44.4644 1268.7787 L30.7535 1243.0776 L22.1897 1230.6184 L11.9742 1219.5244 L0.3747 1209.786 L-281.4855 1022"
+ clip-path="url(#clipPath2)"
+ id="path9612" />
+ <path
+ fill="none"
+ d="M114.6057 1464 L19.7533 1415.5966 L5.1171 1409.1525 L-10.0416 1403.6228 L-25.3298 1399.9612 L-41.5699 1398.2047 L-57.5674 1398.7446 L-73.0805 1401.1993 L-88.2248 1405.7168 L-102.3748 1411.7216 L-115.7571 1419.2593 L-412.0113 1622.5936 L-426.6128 1631.0859 L-442.5374 1638.3893 L-459.532 1643.1439 L-477.3163 1645.5321 L-495.0157 1645.5688 L-530.7623 1644.0494 L-603.877 1638.6968"
+ clip-path="url(#clipPath2)"
+ id="path9614" />
+ <path
+ fill="none"
+ d="M158.371 1494 L187.1266 1524.0143 L197.6006 1535.7157 L208.6994 1546.4695 L219.3031 1557.908 L242.3572 1579.9839 L254.935 1590.5386 L268.6319 1600.2789 L283.2219 1608.0371 L298.8794 1613.9297 L314.9249 1617.7449 L331.4337 1619.5149 L348.0342 1619.0803 L364.3559 1617.3861 L380.0265 1615.2402 L510.7629 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9616" />
+ <path
+ fill="none"
+ d="M94.7598 1489.3663 L25.25 1504"
+ clip-path="url(#clipPath2)"
+ id="path9618" />
+ <path
+ fill="none"
+ d="M155.4991 1464 L346.0009 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9620" />
+ <path
+ fill="none"
+ d="M115.0461 1464 L39.6685 1424.9496 L8.9389 1410.5149 L-6.7761 1404.1628 L-84.1233 1378.9407 L-98.8205 1373.088 L-217.905 1317.8275 L-231.9918 1312.7723 L-246.5594 1309.5073 L-261.5918 1307.9351 L-317.872 1308.4144 L-368.2109 1310.45"
+ clip-path="url(#clipPath2)"
+ id="path9622" />
+ <path
+ fill="none"
+ d="M136.8183 1464 L-68.8183 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9624" />
+ <path
+ fill="none"
+ d="M139.0195 1494 L21.4805 1848"
+ clip-path="url(#clipPath2)"
+ id="path9626" />
+ <path
+ fill="none"
+ d="M137.2531 1494 L45.4936 1698.0031 L38.4408 1711.5551 L30.6577 1724.6348 L20.0462 1735.8912 L7.5286 1744.2808 L-31.3456 1765.874 L-44.1084 1774.0631 L-55.9533 1783.681 L-66.6299 1794.6614 L-75.9345 1806.4084 L-228.7105 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9628" />
+ <path
+ fill="none"
+ d="M131.8724 1494 L58.0749 1585.2761 L48.5865 1596.0686 L38.2552 1606.5284 L26.8 1616.1461 L14.9864 1624.6083 L-33.392 1653.4683 L-56.7115 1671.0442 L-165.1028 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9630" />
+ <path
+ fill="none"
+ d="M145.7432 1494 L170.5621 1707.5676 L173.274 1721.3608 L176.9338 1735.2415 L233.8552 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9632" />
+ <path
+ fill="none"
+ d="M143.1595 1494 L134.3284 1651.611 L125.1812 1858.2568 L123.4991 1875.0447 L120.446 1891.9172 L28.1562 2225"
+ clip-path="url(#clipPath2)"
+ id="path9634" />
+ <path
+ fill="none"
+ d="M114.9596 1464 L32.9453 1421.6379 L-1.0743 1406.0146 L-18.5145 1399.7577 L-71.2901 1383.0033 L-88.9296 1376.5465 L-106.0097 1368.7263 L-238.8289 1302.1188 L-409.014 1224.1451 L-427.4155 1217.8203 L-446.496 1213.999 L-465.6518 1212.6815 L-571.9102 1214.5187"
+ clip-path="url(#clipPath2)"
+ id="path9636" />
+ <path
+ fill="none"
+ d="M115.0747 1464 L26.8791 1418.2637 L1.6098 1407.1744 L-11.6988 1402.4895 L-25.5129 1399.5509 L-39.428 1397.7089 L-53.2746 1396.8475 L-182.7529 1398.5009"
+ clip-path="url(#clipPath2)"
+ id="path9638" />
+ <path
+ fill="none"
+ d="M158.4073 1494 L233.2235 1571.894 L245.2775 1583.5159 L257.7588 1594.7755 L511.0151 1806"
+ clip-path="url(#clipPath2)"
+ id="path9640" />
+ <path
+ fill="none"
+ d="M143.4499 1494 L128.6067 1898.7615 L129.6534 1916.7771 L133.5966 1934.4972 L144.7699 1967.9235 L264.0977 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9642" />
+ <path
+ fill="none"
+ d="M157.9143 1494 L239.0956 1581.5155 L299.5429 1639.5773 L309.3708 1650.3474 L318.2313 1662.1793 L325.1808 1675.1222 L341.235 1713.9014 L459.376 2029"
+ clip-path="url(#clipPath2)"
+ id="path9644" />
+ <path
+ fill="none"
+ d="M131.9298 1494 L59.0988 1584.5089 L39.4312 1605.1343 L27.9236 1614.6936 L15.4433 1623.2069 L1.9076 1630.1975 L-12.1443 1635.9338 L-196.2444 1689.7206 L-211.4697 1695.0406 L-226.6018 1701.6837 L-241.4386 1709.1649 L-358.5241 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9646" />
+ <path
+ fill="none"
+ d="M115.1774 1464 L45.9922 1427.9943 L17.8225 1414.6093 L3.2932 1408.3326 L-12.0923 1402.9446 L-27.8721 1399.5634 L-43.8078 1398.2095 L-59.8553 1398.9216 L-75.4321 1401.8431 L-90.507 1406.4702 L-105.0128 1412.959 L-118.572 1420.2053 L-131.5067 1427.7472 L-143.8491 1435.9572 L-156.4999 1443.1549 L-208.0187 1474.8807 L-222.4372 1482.162 L-238.3481 1487.8889 L-269.2329 1495.8068 L-404.4922 1522.5"
+ clip-path="url(#clipPath2)"
+ id="path9648" />
+ <path
+ fill="none"
+ d="M163.4566 1464 L246.2284 1400.1873 L260.1052 1390.4387 L274.5361 1381.6288 L289.8481 1374.1788 L320.3453 1361.8997 L350.8412 1351.5752 L365.7409 1345.8651 L562.049 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9650" />
+ <path
+ fill="none"
+ d="M-182.8386 -713.5 L-464.6614 -874"
+ clip-path="url(#clipPath2)"
+ id="path9652" />
+ <path
+ fill="none"
+ d="M-146.8453 -713.5 L66.8453 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9654" />
+ <path
+ fill="none"
+ d="M-179.9566 -683.5 L-556.0435 -443"
+ clip-path="url(#clipPath2)"
+ id="path9656" />
+ <path
+ fill="none"
+ d="M-161.2963 -713.5 L-332.2037 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9658" />
+ <path
+ fill="none"
+ d="M-441.3644 -904 L26.8644 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9660" />
+ <path
+ fill="none"
+ d="M-493.8796 -874 L-576.6204 -443"
+ clip-path="url(#clipPath2)"
+ id="path9662" />
+ <path
+ fill="none"
+ d="M-484.8235 -904 L-343.1765 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9664" />
+ <path
+ fill="none"
+ d="M1474.5735 2339 L1326.7584 2276.4133 L1308.9584 2269.8667 L1290.6266 2264.2744 L1271.7128 2260.5183 L1196.8739 2249.6672 L1177.7106 2246.0295 L1122.927 2232.1714 L996.0959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9666" />
+ <path
+ fill="none"
+ d="M1503.9481 2339 L1255.6714 1723.624 L1242.3505 1694.6458 L1130.8816 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9668" />
+ <path
+ fill="none"
+ d="M1474.5431 2339 L1322.069 2274.4961 L1303.8984 2268.2122 L1285.0522 2263.4204 L1265.6094 2261.2283 L1246.234 2261.4336 L1227.1411 2263.3792 L978.9871 2301.2107 L960.8951 2303.2319 L942.4762 2304.3843 L906.9919 2304.9417 L792.7412 2303.2964"
+ clip-path="url(#clipPath2)"
+ id="path9670" />
+ <path
+ fill="none"
+ d="M1518.1578 2369 L1656.8422 2624"
+ clip-path="url(#clipPath2)"
+ id="path9672" />
+ <path
+ fill="none"
+ d="M1529.2338 2369 L1729.9617 2525.5437 L1741.25 2535.3298 L1752.4939 2545.8992 L1763.1542 2557.5071 L1772.4307 2570.2263 L1780.174 2583.7786 L1786.6165 2597.8826 L1797.2206 2626.0237 L1801.7369 2640.0129 L1812.5941 2668.3142 L1818.7988 2682.1631 L1928.7854 2883"
+ clip-path="url(#clipPath2)"
+ id="path9674" />
+ <path
+ fill="none"
+ d="M1511.5278 2369 L1513.1466 2384.8933 L1514.204 2400.4846 L1537.4098 2649.1707 L1540.1097 2665.6206 L1544.6873 2681.5659 L1550.3002 2697.064 L1556.4666 2711.6733 L1818.3805 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9676" />
+ <path
+ fill="none"
+ d="M1526.5431 2339 L1664.9104 2213.5396 L1676.3075 2204.0525 L1688.2982 2195.3054 L1701.2352 2186.9421 L1714.6727 2179.9111 L1728.8771 2174.0081 L1743.3738 2169.3315 L1772.5908 2162.6487 L2081.9709 2107.0034 L2096.4185 2103.4382 L2111.0107 2098.6389 L2124.6841 2092.2168 L2137.7759 2084.4053 L2149.7017 2074.8916 L2160.5408 2063.8689 L2169.6196 2051.8689 L2177.3831 2038.7415 L2183.9478 2025.1888 L2205.1951 1970.9033 L2211.8096 1957.5084 L2221.3857 1945.6956 L2233.8264 1936.7653 L2247.5352 1930.2933 L2514.4805 1835"
+ clip-path="url(#clipPath2)"
+ id="path9678" />
+ <path
+ fill="none"
+ d="M1529.1042 2369 L1738.5509 2533.45 L1750.5435 2543.9087 L1761.3635 2555.615 L1771.2257 2568.3628 L1779.4089 2582.2319 L1786.0944 2596.5154 L1812.7916 2666.5 L1819.77 2680.5874 L1827.7897 2693.7729 L1837.3392 2705.9377 L1848.2404 2717.001 L1860.5529 2726.521 L1873.8605 2734.6018 L1887.8599 2741.093 L1902.7081 2746.1006 L1917.8242 2749.6072 L1962.748 2758.1482 L1977.8821 2762.0352 L1992.6849 2767.7485 L2007.0975 2774.7456 L2020.618 2783.7029 L2033.1394 2793.7778 L2044.6404 2805.4622 L2055.4875 2817.95 L2228.1003 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9680" />
+ <path
+ fill="none"
+ d="M1493.432 2369 L1358.0886 2491.5347 L1344.4315 2502.6399 L1329.5942 2512.6628 L1313.6755 2520.7417 L1297.0505 2526.8035 L1279.6298 2530.5449 L1261.9062 2532.02 L1243.9521 2531.1667 L1226.3867 2528.6655 L1192.8405 2520.178 L1047.8075 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9682" />
+ <path
+ fill="none"
+ d="M1493.3915 2369 L1351.8792 2496.8074 L1336.9489 2508.2498 L1321.3251 2518.696 L823.5881 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9684" />
+ <path
+ fill="none"
+ d="M1504.6932 2339 L1339.462 1871.9652 L1287.3363 1714.5103 L1281.5391 1698.6304 L1271.3762 1666.3949 L1266.9104 1649.3513 L1263.7081 1632.1747 L1261.8214 1614.8285 L1252.174 1465.3066 L1249.6622 1448.1022 L1245.6331 1430.9169 L1239.6428 1414.2061 L1232.1565 1398.4878 L1224.3367 1383.3807 L1075.5237 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9686" />
+ <path
+ fill="none"
+ d="M1505.0319 2369 L1410.9681 2653"
+ clip-path="url(#clipPath2)"
+ id="path9688" />
+ <path
+ fill="none"
+ d="M1534.0114 2369 L1910.9886 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9690" />
+ <path
+ fill="none"
+ d="M1501.9417 2339 L1342.1976 2041.6492 L1333.6259 2028.2693 L1324.1749 2015.4473 L1313.6296 2003.1354 L1097.5363 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9692" />
+ <path
+ fill="none"
+ d="M1504.9796 2339 L1369.1797 1933.2559 L1364.5956 1917.7723 L1361.1023 1901.3207 L1359.2668 1884.6461 L1358.9624 1867.7823 L1364.918 1804.7361 L1385.1973 1636"
+ clip-path="url(#clipPath2)"
+ id="path9694" />
+ <path
+ fill="none"
+ d="M1607.1934 2343.6565 L1641.5518 2340"
+ clip-path="url(#clipPath2)"
+ id="path9696" />
+ <path
+ fill="none"
+ d="M1509.1334 2339 L1483.3666 1893"
+ clip-path="url(#clipPath2)"
+ id="path9698" />
+ <path
+ fill="none"
+ d="M1535.9918 2369 L1686.6624 2455.9526 L1702.3188 2464.1128 L1718.441 2471.5791 L1735.4189 2477.6355 L1752.9897 2482.0723 L1770.8313 2484.4812 L1805.623 2486.6531 L1924.4827 2487.9512 L1942.2737 2489.0781 L1960.0562 2491.6494 L1977.8062 2496.248 L1994.6891 2502.8237 L2010.9612 2510.2305 L2244.1704 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9700" />
+ <path
+ fill="none"
+ d="M1421.5883 2369 L1347.9117 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9702" />
+ <path
+ fill="none"
+ d="M1510.9263 2339 L1526.5001 2086.7854 L1528.6637 2070.645 L1532.7749 2054.6072 L1539.1635 2039.5104 L1582.8965 1955.9016 L1589.814 1941.5165 L1596.3032 1926.5045 L1601.6031 1910.614 L1604.801 1894.145 L1605.9075 1877.3345 L1604.8375 1860.4043 L1601.4618 1844.0298 L1596.4197 1828.249 L1590.9009 1813.1063 L1584.6427 1798.0835 L1579.1389 1783.2101 L1530.6157 1664.5873 L1525.4736 1648.2223 L1521.2292 1631.2045 L1518.8718 1613.6608 L1518.7667 1596.1191 L1520.1587 1578.7006 L1615.3778 1034"
+ clip-path="url(#clipPath2)"
+ id="path9704" />
+ <path
+ fill="none"
+ d="M1520.0275 2339 L1652.9227 2140.2031 L1661.5157 2125.8765 L1669.6093 2110.4673 L1674.8169 2093.8274 L1678.4438 2077.0471 L1692.2361 1993.3143 L1695.9932 1975.8687 L1700.5378 1958.3699 L1707.6724 1941.3625 L1716.8115 1925.3213 L1728.2234 1910.7318 L1740.7257 1897.5914 L1945.353 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9706" />
+ <path
+ fill="none"
+ d="M1511.1052 2369 L1519.2036 2478.908 L1520.9386 2494.2686 L1532.0088 2648.5208 L1532.4585 2664.9966 L1531.5543 2681.3984 L1528.7942 2697.7139 L1523.9926 2713.2405 L1517.3701 2727.6858 L1508.618 2741.5935 L1498.5919 2754.0928 L1487.2609 2765.2034 L1475.011 2774.9775 L1400.5135 2826.1184 L1387.9414 2835.4861 L1376.0679 2845.9873 L1364.8727 2857.1089 L1355.0602 2869.5366 L1346.4813 2882.7495 L1339.2728 2896.8088 L1333.5167 2911.4705 L1329.4667 2926.6213 L1326.7267 2942.0088 L1325.672 2957.7959 L1326.2606 2973.5076 L1327.9357 2989.0308 L1330.9374 3004.3113 L1404.1639 3275.9639 L1407.5632 3290.6909 L1412.1721 3304.8933 L1423.5769 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9708" />
+ <path
+ fill="none"
+ d="M1526.5193 2339 L1665.6112 2212.7002 L1689.0184 2194.4897 L1701.7162 2186.1914 L1714.7228 2178.7192 L1869.8474 2109.8154 L1882.8911 2102.8474 L1895.4789 2095.4939 L2044.3569 1999"
+ clip-path="url(#clipPath2)"
+ id="path9710" />
+ <path
+ fill="none"
+ d="M1496.996 2369 L1385.6895 2497.3909 L1376.2972 2507.3276 L1322.2389 2568.2527 L1304.2604 2589.7803 L1125.6952 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9712" />
+ <path
+ fill="none"
+ d="M1510.8751 2339 L1524.2369 2109.9836 L1527.4911 2077.0388 L1530.6801 2060.7397 L1536.7727 2044.8093 L1587.699 1945.4836 L1600.6235 1915.0745 L1605.15 1898.5553 L1608.6882 1882.624 L1654.8674 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9714" />
+ <path
+ fill="none"
+ d="M1492 2339 L1231 2121.5"
+ clip-path="url(#clipPath2)"
+ id="path9716" />
+ <path
+ fill="none"
+ d="M1511.2671 2369 L1511.5583 2372.4485 L1512.4863 2390.939 L1532.1252 2653.0818 L1532.3657 2673.238 L1530.3511 2693.1304 L1483.7687 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9718" />
+ <path
+ fill="none"
+ d="M1519.9977 2339 L1653.2191 2139.1204 L1662.4175 2124.3665 L1670.4188 2108.1663 L1675.7124 2091.2019 L1696.2084 1972.2346 L1700.4777 1954.8425 L1732.6132 1855.5861 L1738.5227 1839.8522 L1743.5808 1823.199 L1800.3926 1658.3755 L1806.9249 1641.4769 L1814.4071 1624.5726 L1823.2809 1608.1635 L1833.8232 1592.6519 L1845.3483 1578.3093 L1857.2207 1564.7336 L1881.5801 1538.2433 L1893.6631 1525.9165 L2062.9272 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9720" />
+ <path
+ fill="none"
+ d="M1536.2448 2369 L1700.8926 2463.1035 L1716.5065 2470.6301 L1732.8228 2476.7573 L1749.6938 2481.2634 L1766.9144 2483.8633 L1784.0165 2484.6411 L1801.1552 2483.6919 L1817.9308 2480.7009 L1834.475 2476.1997 L1850.3604 2470.1069 L1879.984 2456.0632 L2178.4429 2296.5"
+ clip-path="url(#clipPath2)"
+ id="path9722" />
+ <path
+ fill="none"
+ d="M1522.908 2339 L1805.592 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9724" />
+ <path
+ fill="none"
+ d="M1526.6202 2339 L1669.4025 2210.1367 L1681.7156 2200.2549 L1694.8494 2191.0376 L1708.5754 2182.6992 L1736.0583 2168.71 L1856.1318 2115.9321 L1869.5493 2109.1848 L1882.8529 2101.687 L1895.3044 2092.6658 L1906.7675 2082.3103 L1916.951 2070.5432 L1925.2897 2057.9207 L1932.2095 2044.2831 L1937.395 2029.8201 L1941.0835 2014.8721 L1942.8657 1999.6416 L1944.0657 1984.2588 L1945.8129 1968.6353 L1949.1118 1952.8204 L1954.0919 1937.6868 L1961.2629 1923.1643 L1970.3491 1909.4205 L1981.2208 1896.7792 L1993.2787 1884.9609 L2081.2905 1807.6135 L2253.324 1643"
+ clip-path="url(#clipPath2)"
+ id="path9726" />
+ <path
+ fill="none"
+ d="M1475.3552 2339 L1375.7992 2295.8955 L1325.3004 2275.6824 L1307.8301 2269.3855 L1289.7203 2263.9866 L1271.4009 2260.2725 L1201.3519 2250.1917 L1183.7898 2246.8469 L1166.7448 2241.9495 L1150.2572 2235.1619 L1134.9137 2226.417 L1120.8173 2216.0547 L1108.2313 2204.0881 L1097.0183 2190.8472 L1086.9922 2176.9243 L1051.8983 2121.3184 L1042.0785 2107.6038 L1031.0328 2094.5808 L1018.9379 2082.5935 L981.7686 2049.2241 L968.8684 2038.6184 L956.4572 2027.4056 L788.5068 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9728" />
+ <path
+ fill="none"
+ d="M1504.9901 2339 L1366.5494 1924.4966 L1362.4882 1908.5767 L1359.8616 1892.2843 L1359.1125 1875.623 L1360.5317 1859.0786 L1364.2106 1843.1631 L1369.8442 1827.4664 L1377.5298 1813.0808 L1386.8759 1799.7292 L1397.203 1787.4834 L1418.8458 1765.0261 L1472.7761 1711.0153 L1482.7151 1699.1749 L1491.9009 1685.959 L1499.3961 1671.5507 L1505.2434 1656.2231 L1508.5443 1640.9038 L1510.1094 1624.6781 L1509.5914 1608.5144 L1507.2157 1592.4027 L1503.3352 1577.2427 L1414.2556 1323"
+ clip-path="url(#clipPath2)"
+ id="path9730" />
+ <path
+ fill="none"
+ d="M1510.9319 2339 L1526.4713 2088.8757 L1528.2183 2072.9792 L1531.8409 2057.2632 L1537.6543 2042.4523 L1544.4132 2028.5757 L1585.9958 1949.0065 L1592.6586 1935.08 L1598.5482 1920.4163 L1603.2426 1905.4922 L1605.3632 1889.2352 L1606.0835 1873.2714 L1604.3267 1857.3202 L1600.7614 1841.5823 L1590.5676 1811.7375 L1532.8832 1669.7617 L1527.2454 1654.2057 L1522.8604 1638.2473 L1519.7045 1621.5173 L1518.6511 1604.515 L1519.7151 1587.4683 L1522.7896 1570.5966 L1527.3335 1554.9121 L1533.6583 1539.2854 L1561.9587 1481.5208 L1599.4431 1410.3932 L1606.4193 1395.9069 L1755.7795 1107.7368 L1762.8444 1092.5857 L1769.0634 1076.776 L1774.2321 1060.2958 L1777.7761 1043.705 L1779.5951 1026.4392 L1780.0076 1009.2284 L1773.9335 912.5138 L1713.5631 108.591 L1711.499 94.9959 L1708.3801 80.2525 L1703.2778 66.8524 L1697.6584 54.3873 L1673.673 8.0907 L1662.9922 -15.4828 L1658.6643 -27.8628 L1656.0237 -41.0869 L1655.9708 -54.2819 L1658.2432 -67.2466 L1662.6152 -79.6855 L1667.8322 -91.0654 L1722.6837 -190"
+ clip-path="url(#clipPath2)"
+ id="path9732" />
+ <path
+ fill="none"
+ d="M420.7189 353.5 L698.7811 440"
+ clip-path="url(#clipPath2)"
+ id="path9734" />
+ <path
+ fill="none"
+ d="M373.8378 323.5 L418.1622 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9736" />
+ <path
+ fill="none"
+ d="M371.2291 353.5 L335.7709 772"
+ clip-path="url(#clipPath2)"
+ id="path9738" />
+ <path
+ fill="none"
+ d="M342.7771 353.5 L-26.7771 540"
+ clip-path="url(#clipPath2)"
+ id="path9740" />
+ <path
+ fill="none"
+ d="M331.5783 323.5 L-178.5783 136.5"
+ clip-path="url(#clipPath2)"
+ id="path9742" />
+ <path
+ fill="none"
+ d="M391.3014 323.5 L719.6986 61.5"
+ clip-path="url(#clipPath2)"
+ id="path9744" />
+ <path
+ fill="none"
+ d="M-143.4475 -261 L-156.0525 -683.5"
+ clip-path="url(#clipPath2)"
+ id="path9746" />
+ <path
+ fill="none"
+ d="M-127.6443 -231 L208.6443 97.5"
+ clip-path="url(#clipPath2)"
+ id="path9748" />
+ <path
+ fill="none"
+ d="M-27.0049 2068 L-83.2198 2161.6406 L-90.3236 2174.7258 L-96.6365 2188.5735 L-101.5907 2203.1204 L-105.1204 2217.9927 L-107.1567 2232.9121 L-108.6474 2262.2935 L-107.5751 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9750" />
+ <path
+ fill="none"
+ d="M-3.3147 2038 L88.2079 1944.5159 L98.9239 1931.85 L108.6347 1917.8579 L115.9706 1901.8237 L121.2358 1885.2582 L124.3123 1867.311 L143.2395 1494"
+ clip-path="url(#clipPath2)"
+ id="path9752" />
+ <path
+ fill="none"
+ d="M-24.6663 2038 L-80.8903 1911.4879 L-85.1263 1899.4636 L-88.5606 1887.0404 L-90.5707 1874.1945 L-91.1801 1861.1097 L-90.1218 1848.1241 L-87.5325 1835.3932 L-83.6841 1822.7667 L-72.56 1799.5031 L-53.9055 1768.1414 L-19.3229 1712.5"
+ clip-path="url(#clipPath2)"
+ id="path9754" />
+ <path
+ fill="none"
+ d="M1596.9543 2095.5 L1515.0457 2339"
+ clip-path="url(#clipPath2)"
+ id="path9756" />
+ <path
+ fill="none"
+ d="M1662.748 2092.5029 L1764.6105 2112.6294 L1782.9017 2115.6848 L1801.8885 2118.3333 L1821.3508 2119.7209 L1840.4524 2120.2183 L1858.9543 2119.3088 L1877.6461 2119.5857 L2183.1145 2112.4343 L2200.6819 2112.6753 L2218.771 2113.5925 L2236.468 2115.9619 L2253.6194 2120.0029 L2270.5688 2125.4739 L2286.7974 2131.6306 L2458.6768 2209"
+ clip-path="url(#clipPath2)"
+ id="path9758" />
+ <path
+ fill="none"
+ d="M1602.3943 2065.5 L1606.7793 1898.7041 L1606.4932 1881.5487 L1605.2306 1864.0957 L1601.9255 1846.7361 L1596.955 1829.9541 L1591.1913 1813.7092 L1533.9847 1674.6245 L1527.9525 1658.2727 L1522.3416 1641.5908 L1503.7571 1574.8905 L1420.4307 1339.3589 L1414.5142 1324.3173 L1414.069 1323"
+ clip-path="url(#clipPath2)"
+ id="path9760" />
+ <path
+ fill="none"
+ d="M1603.0338 2095.5 L1619.5222 2334.7439 L1619.976 2349.6047 L1619.3141 2364.5964 L1616.8829 2379.4578 L1612.6283 2393.7292 L1606.6503 2407.0378 L1599.2849 2419.5703 L1533.5831 2509.7273 L1499.2429 2554.429 L1489.8187 2565.7656 L1418.298 2653"
+ clip-path="url(#clipPath2)"
+ id="path9762" />
+ <path
+ fill="none"
+ d="M1603.1926 2095.5 L1621.6029 2327.0608 L1624.4425 2347.2661 L1628.7183 2366.9514 L1635.0629 2385.7578 L1643.6881 2403.5862 L1654.035 2420.3408 L1665.6207 2435.8164 L1758.1301 2550.2654 L1769.3726 2565.7361 L1779.1656 2582.3586 L1787.2401 2599.9016 L1814.0522 2669.9602 L1822.2802 2687.2004 L1928.8368 2883"
+ clip-path="url(#clipPath2)"
+ id="path9764" />
+ <path
+ fill="none"
+ d="M1588.7958 2095.5 L1440.1951 2264.3108 L1421.9424 2287.5852 L1413.851 2300.9641 L1407.3724 2315.2051 L1402.7751 2330.5364 L1400.0977 2346.2444 L1394.8491 2410.0798 L1391.8948 2426.9863 L1386.8583 2443.4583 L1380.0405 2459.543 L1371.4266 2474.8496 L1352.7933 2504.1155 L1264.7759 2637.0266 L1255.2261 2652.488 L1155.7711 2805.2529 L1146.0284 2821.1672 L1135.6465 2836.3376 L1125.1975 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9766" />
+ <path
+ fill="none"
+ d="M1585.7421 2095.5 L1275.7579 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9768" />
+ <path
+ fill="none"
+ d="M1603.1949 2095.5 L1622.4318 2336.9685 L1624.5369 2352.1443 L1628.201 2367.3962 L1632.8905 2381.77 L1638.9683 2395.7341 L1646.1216 2408.7371 L1654.6532 2421.2065 L1664.1459 2432.8657 L1674.5833 2443.5085 L1686.1106 2453.272 L1697.5612 2462.1409 L1912.3665 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9770" />
+ <path
+ fill="none"
+ d="M1603.7489 2065.5 L1655.7511 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9772" />
+ <path
+ fill="none"
+ d="M1593.1482 2065.5 L1491.3518 1893"
+ clip-path="url(#clipPath2)"
+ id="path9774" />
+ <path
+ fill="none"
+ d="M1603.0256 2095.5 L1619.4376 2335.5383 L1619.8356 2352.4175 L1618.8832 2369.4175 L1615.4667 2385.9312 L1610.9801 2401.5234 L1549.5068 2578.6951 L1544.7748 2594.0952 L1540.5493 2610.1763 L1538.3051 2626.9604 L1537.8387 2643.7305 L1539.5312 2660.8184 L1543.3848 2677.5637 L1548.2743 2693.5508 L1620.949 2887.3188 L1626.1494 2902.9475 L1630.7904 2919.1487 L1634.1757 2935.949 L1635.9564 2952.8755 L1635.8079 2970.0298 L1633.827 2987.1138 L1630.0143 3003.8672 L1624.4489 3020.2371 L1617.4717 3036.0044 L1609.7772 3051.0796 L1436.2516 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9776" />
+ <path
+ fill="none"
+ d="M1570.7225 2095.5 L1288.5803 2230.8096 L1274.9982 2236.7656 L1260.8542 2242.2251 L1246.2103 2246.6372 L982.4409 2300.4243 L953.6058 2304.5635 L924.563 2305.3845 L792.7412 2303.3887"
+ clip-path="url(#clipPath2)"
+ id="path9778" />
+ <path
+ fill="none"
+ d="M1603.1537 2095.5 L1620.8918 2326.1306 L1625.1042 2362.6926 L1662.8341 2624"
+ clip-path="url(#clipPath2)"
+ id="path9780" />
+ <path
+ fill="none"
+ d="M1541.252 2084.5603 L1343.7324 2097.7622"
+ clip-path="url(#clipPath2)"
+ id="path9782" />
+ <path
+ fill="none"
+ d="M1640.2059 2065.5 L1780.2941 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9784" />
+ <path
+ fill="none"
+ d="M1572.6794 2065.5 L1434.8101 1994.9679 L1106.5612 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9786" />
+ <path
+ fill="none"
+ d="M1603.0039 2095.5 L1619.616 2343.7134 L1619.334 2362.2961 L1616.5592 2380.8618 L1611.7566 2398.3032 L1606.5804 2414.9185 L1549.1158 2579.8984 L1544.0386 2597.4407 L1539.7373 2615.8103 L1536.9749 2634.4294 L1533.7061 2671.905 L1531.5634 2690.6077 L1483.8102 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9788" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4651 L1780.0096 2115.5613 L1796.447 2117.708 L1813.3804 2119.1421 L1830.0333 2118.6409 L1846.8956 2115.9663 L1862.7615 2110.9902 L1877.9795 2104.4839 L1905.5245 2089.0781 L2044.3778 1999"
+ clip-path="url(#clipPath2)"
+ id="path9790" />
+ <path
+ fill="none"
+ d="M1612.9232 2065.5 L1705.944 1937.7614 L1717.1481 1923.3706 L1729.4146 1909.6766 L1743.266 1897.5363 L1758.9332 1887.454 L1775.6699 1879.6144 L1793.1348 1874.4734 L1811.5116 1871.0072 L1970.6 1855.2622 L1988.6428 1852.0848 L2006.829 1847.8024 L2024.3502 1841.5553 L2040.8623 1833.4706 L2056.6687 1823.6088 L2070.9719 1812.4393 L2084.522 1800.8351 L2252.9895 1643"
+ clip-path="url(#clipPath2)"
+ id="path9792" />
+ <path
+ fill="none"
+ d="M1613.0736 2095.5 L1771.4264 2310"
+ clip-path="url(#clipPath2)"
+ id="path9794" />
+ <path
+ fill="none"
+ d="M1639.7083 2095.5 L1842.3861 2176.1233 L1859.5131 2185.2539 L1876.282 2195.9019 L1891.6011 2208.3118 L1905.634 2221.8408 L1931.1401 2250.0837 L2260.4797 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9796" />
+ <path
+ fill="none"
+ d="M1647.1119 2095.5 L2161.3879 2266.5"
+ clip-path="url(#clipPath2)"
+ id="path9798" />
+ <path
+ fill="none"
+ d="M1603.1909 2095.5 L1621.691 2328.5208 L1623.5604 2343.7834 L1626.24 2359.3225 L1630.3749 2374.5793 L1636.0944 2389.2988 L1642.9762 2403.4038 L1651.1168 2416.8372 L1660.1671 2429.6006 L1758.1458 2550.04 L1768.1744 2563.7002 L1777.2103 2578.6135 L1784.3627 2594.6853 L1789.4128 2611.853 L1791.9921 2629.5588 L1793.291 2647.2483 L1792.9524 2895.9575 L1795.2501 2933.1309 L1824.1862 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9800" />
+ <path
+ fill="none"
+ d="M1603.203 2095.5 L1621.8832 2328.4165 L1624.0609 2345.5154 L1627.2642 2362.4485 L1632.0743 2378.8948 L1638.6213 2394.3691 L1646.8019 2409.1277 L1656.0619 2422.8191 L1667.0085 2435.4368 L1679.0601 2446.8408 L1692.3024 2456.9438 L1706.4554 2465.6316 L1721.5145 2472.658 L1737.2064 2478.3113 L1753.2076 2482.2488 L1769.3447 2484.6384 L1785.3156 2486.0251 L1800.7511 2486.7747 L1920.0581 2487.4966 L1935.141 2488.1736 L1950.616 2489.679 L1966.2471 2492.644 L1980.7709 2497.282 L1994.8182 2503.7949 L2008.2539 2511.574 L2020.3892 2520.8616 L2031.2859 2531.5286 L2040.8636 2543.397 L2049.1069 2556.0459 L2055.8984 2570.1116 L2060.9514 2584.1262 L2065.0398 2598.769 L2071.573 2626.8027 L2083.4851 2682.906 L2087.3142 2697.304 L2091.7251 2711.4783 L2232.8469 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9802" />
+ <path
+ fill="none"
+ d="M1555.4919 2065.5 L1263.2942 1971.259 L1245.3774 1966.6671 L1226.5901 1963.6918 L1207.9307 1962.2289 L1171.8567 1961.0642 L1081.4442 1960.0654 L1062.9497 1958.3174 L1044.2203 1954.9642 L1025.8896 1950.8408 L819.3997 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9804" />
+ <path
+ fill="none"
+ d="M1608.9635 2065.5 L1809.4962 1633.5309 L1818.6376 1616.1558 L1829.1941 1599.274 L1841.2507 1583.3263 L2063.0132 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9806" />
+ <path
+ fill="none"
+ d="M1602.3933 2065.5 L1606.7363 1899.8634 L1606.4586 1882.6648 L1605.2378 1865.1937 L1602.3794 1848.0233 L1597.3771 1831.3533 L1585.6033 1799.6447 L1528.9104 1659.5087 L1523.7875 1642.5001 L1520.1628 1624.7736 L1518.6923 1606.78 L1519.3666 1588.6658 L1521.3606 1571.0901 L1615.3744 1034"
+ clip-path="url(#clipPath2)"
+ id="path9808" />
+ <path
+ fill="none"
+ d="M1571.2109 2095.5 L1261.994 2246.146 L1219.6743 2264.4104 L1205.4592 2271.2598 L1191.7346 2278.4478 L1178.4591 2287.1375 L1166.1311 2296.8726 L1154.6273 2306.9568 L1013.2023 2446.5"
+ clip-path="url(#clipPath2)"
+ id="path9810" />
+ <path
+ fill="none"
+ d="M1612.9133 2065.5 L1708.3259 1934.3589 L1718.8427 1921.1146 L1730.2498 1907.9574 L1742.2875 1895.532 L1945.3046 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9812" />
+ <path
+ fill="none"
+ d="M1572.9703 2065.5 L1444.6885 1999.2152 L1429.064 1990.3815 L1413.6222 1980.5148 L1399.3938 1969.1509 L1386.8495 1955.9407 L1376.3173 1941.3074 L1367.1516 1926.2937 L1215.7188 1635.2328 L1131.2916 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9814" />
+ <path
+ fill="none"
+ d="M1602.3855 2065.5 L1606.9542 1887.743 L1606 1869.5469 L1602.9114 1851.5056 L1597.8892 1834.3082 L1590.2271 1818.0243 L1580.5396 1803.0505 L1569.3032 1789.5634 L1544.9924 1765.5038 L1403.4001 1636"
+ clip-path="url(#clipPath2)"
+ id="path9816" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4412 L1766.4723 2112.8303 L1800.2173 2118.0352 L1817.9073 2119.0618 L1835.2128 2118.0942 L1852.0842 2114.189 L1868.7249 2108.4495 L1883.6569 2100.4832 L1897.4779 2090.6223 L1909.8057 2078.9834 L1920.2412 2065.7119 L1928.7743 2051.3101 L1935.4041 2035.9259 L1939.7797 2019.7667 L1942.3596 2003.6836 L1945.6359 1971.5028 L1948.5076 1955.5732 L1953.2712 1940.0039 L1959.8096 1925.6807 L1968.1327 1912.3596 L1978.111 1900.3622 L1989.2583 1889.7343 L2001.7524 1880.6145 L2015.2451 1873.4164 L2029.7437 1867.4449 L2044.5986 1863.3865 L2059.4072 1860.6979 L2116.5818 1854.9585 L2130.5618 1854.0964 L2427.3464 1831.3152"
+ clip-path="url(#clipPath2)"
+ id="path9818" />
+ <path
+ fill="none"
+ d="M1602.395 2065.5 L1606.7798 1898.9805 L1606.3993 1880.6311 L1604.8654 1862.1401 L1601.0284 1844.0854 L1594.6597 1826.991 L1585.889 1810.8241 L1574.9169 1796.2695 L1561.8469 1783.6718 L1547.1339 1773.0948 L1530.927 1764.6783 L1514.0385 1758.6746 L1496.0397 1755.1381 L1478.5284 1752.9952 L1377.3137 1744.3647 L1359.9923 1741.0127 L1343.1707 1736.0409 L1327.205 1728.5714 L1312.6506 1718.9408 L1299.2815 1707.3992 L1288.0135 1694.0232 L1278.6018 1679.4884 L1271.3124 1663.254 L1266.2087 1646.291 L1263.3679 1629.0929 L1251.9883 1463.8362 L1249.3915 1446.7079 L1245.1688 1429.4218 L1239.0171 1412.9744 L1231.691 1397.4093 L1158.1884 1265.8065 L1149.532 1251.7174 L1075.525 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9820" />
+ <path
+ fill="none"
+ d="M1571.1819 2095.5 L1270.4301 2241.884 L1209.0909 2269.5261 L1193.9401 2277.4502 L1179.7173 2286.9822 L1166.2568 2298.0002 L1154.4349 2310.5815 L1144.4984 2324.4265 L1136.3844 2339.6184 L1130.1035 2355.6626 L1125.9659 2372.5798 L1123.5559 2389.3396 L1122.2933 2406.2454 L1120.1442 2455.5945 L1118.5703 2472.6367 L1115.6298 2489.781 L1110.2885 2506.1963 L1102.5222 2521.7383 L1093.292 2536.2493 L1081.7872 2549.6086 L1057.8158 2573.1782 L813.2117 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9822" />
+ <path
+ fill="none"
+ d="M1570.7183 2095.5 L1288.796 2230.6855 L1274.8589 2236.5764 L1260.1879 2242.116 L1245.0063 2246.1299 L1229.2333 2248.7217 L1213.7101 2249.8647 L1198.0498 2249.1724 L1182.5889 2247.0691 L1153.3807 2240.5171 L996.3959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9824" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/overview.rst b/doc/overview.rst
new file mode 100644
index 0000000..612fbba
--- /dev/null
+++ b/doc/overview.rst
@@ -0,0 +1,174 @@
+=============================
+SCons Documentation Toolchain
+=============================
+
+
+Introduction
+============
+
+This text tries to give an overview of the current SCons documentation toolchain.
+The interested user should be able to better understand where and how the text he writes
+is processed.
+It is also a reference for core developers and the release team.
+
+.. image:: images/overview.png
+
+The diagram above roughly shows the steps that we currently need for creating all the MAN pages, User manuals and
+reference documents. You may think: "Geeez, that looks so complicated. Why can't they
+simply convert XML files to PDF with Docbook, or use reST?" Please be patient, and
+continue reading. Things will get a little clearer soon.
+
+Our toolchain doesn't only produce HTML and PDF files that are nice to look at, it also performs a lot
+of processing under the covers. We try to have our documentation as consistent as possible to the
+current behaviour of the source code, but this requires some extra steps.
+
+So let's start right at the top...
+
+Writer's view
+=============
+
+The toolchain is set up, such that the User has a very restricted view on this whole "document
+processing thingy". All he should be concerned about is to edit existing text or write new sections
+and paragraphs.
+Sometimes even a completely new chapter has to be added, in general he can fire up his XML editor of choice
+and type away.
+
+If he is a really nice user, he cares about validating his XML files against our special
+"SCons Docbook DTD/XSD". Either during typing, supported by his XML editor, or by executing a special
+script
+
+::
+
+ python bin/docs-validate.py
+
+
+from the top source folder afterwards. Preferably both.
+
+Everything's looking okay, all validation passed? Good, then he simply commits his new work, and
+creates a pull request on Bitbucket. That's it!
+
+Additionally, he can create the single documents on his side if he wants to get a feel for how the
+final result looks (and who doesn't?). Each of the document folders (``design``, ``developer``, ``man``,
+``python10``, ``reference``, and ``user``) contains an ``SConstruct`` file along with the actual
+XML files. You can call
+
+::
+
+ python ../../src/script/scons.py
+
+from within the directory, and have the MAN pages or HTML created...even PDF, if you have a
+renderer installed (``fop``, ``xep`` or ``jw``).
+
+Validation
+==========
+
+Just a few more words about the validation step.
+We are using our own DTD/XSD as a kind of hook, which only exists to link our own
+SCons documentation tags into the normal Docbook XSD. For the output, we always
+have an intermediary step (see diagram above), where we rewrite tags like ``cvar``
+into a block of Docbook formatting elements representing it.
+
+The toolchain, and all the Python scripts supporting it, are based on the prerequisite that
+all documents are valid against the SCons Docbook XSD. This step guarantees that we can
+accept the pull request of a user/writer with all his changes, and can create the documentation
+for a new release of SCons without any problems at a later time.
+
+
+Entities
+========
+
+We are using entities for special keywords like ``SCons`` that should appear with the same
+formatting throughout the text. These are kept in a single file ``doc/scons.mod`` which gets
+included by the documents.
+
+Additionally, for each Tool, Builder, Cvar and Function, a bunch of linkends in the form of
+entities get defined. They can be used in the MAN page and the User manual.
+
+When you add an XML file in the ``src/engine/Tools`` folder, e.g. for a tool named ``foobar``,
+you can use the two entities
+
+*t-foobar*
+ which prints the name of the Tool, and
+
+*t-link-foobar*
+ which is a link to the description of the Tool in the Appendix
+
+of the User guide's text.
+
+By calling the script
+
+::
+
+ python bin/docs-update-generated.py
+
+you can recreate the lists of entities (``*.mod``) in the ``generated`` folder, if required.
+At the same time, this will generate the ``*.gen`` files, which list the full
+description of all the Builders, Tools, Functions and CVars for the MAN page
+and the guide's appendix.
+
+For more information about how to properly describe these elements, refer to
+the start of the Python script ``bin/SConsDoc.py``. It explains the available
+tags and the exact syntax in detail.
+
+
+Examples
+========
+
+In the User Guide, we support automatically created examples. This means that the output of the specified
+source files and SConstructs, is generated by running them with the current SCons version.
+We do this to ensure that the output displayed in the manual, is identical to what you get when you run
+the example on the command-line.
+
+A short description about how these examples have to be defined, can be found at the start of the file
+``bin/SConsExamples.py``. Call
+
+::
+
+ python bin/docs-create-example-outputs.py
+
+from the top level source folder, to run all examples through SCons.
+
+Before this script starts to generate any output, it checks whether the names of all defined examples are
+unique. Another important prerequisite is, that for every example all the single ``scons_output`` blocks need to have
+a ``suffix`` attribute defined. These suffixes also have to be unique, within each example.
+
+All example output files (``*.xml``) get written to the folder ``doc/generated/examples``, together with all files defined
+via the ``scons_example_file`` tag. They are put under version control, too. Like this, it is easier to compare
+whether the output got broken for a new version of SCons.
+
+Note, that these output files are not actually needed for editing the documents. When loading the User manual into an XML
+editor, you will always see the example's definition. Only when you create some output, the files from
+``doc/generated/examples`` get XIncluded and all special ``scons*`` tags are transformed into Docbook elements.
+
+
+Directories
+===========
+
+Documents are in the folders ``design``, ``developer``, ``man``,
+``python10``, ``reference``, and ``user``.
+
+*editor_configs*
+ Prepared configuration sets for the validating WYSIWYG XML editors
+ XmlMind and Serna. You'll probably want to try the latter, because
+ the XXE config requires you to have a full version (costing a few
+ hundred bucks) and is therefore untested. For installing the Serna
+ config, simply copy the ``scons`` folder into the ``plugins``
+ directory of your installation. Likewise, the XXE files from the
+ ``xmlmind`` folder have to be copied into ``~/.xxe4/`` under Linux.
+
+*generated*
+ Entity lists and outputs of the UserGuide examples. They get generated
+ by the update scripts ``bin/docs-update-generated.py``
+ and ``bin/docs-create-example-outputs.py``.
+
+*images*
+ Images for the ``overview.rst`` document.
+
+*xsd*
+ The SCons Docbook schema (XSD), based on the Docbook v4.5 DTD/XSD.
+
+*xslt*
+ XSLT transformation scripts for converting the special SCons
+ tags like ``scons_output`` to valid Docbook during document
+ processing.
+
diff --git a/doc/python10/MANIFEST b/doc/python10/MANIFEST
index c9484d8..5703e36 100644
--- a/doc/python10/MANIFEST
+++ b/doc/python10/MANIFEST
@@ -1,16 +1,14 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
abstract.xml
acks.xml
-arch.fig
-builder.fig
+*.fig
copyright.xml
design.xml
future.xml
install.xml
intro.xml
-job-task.fig
main.xml
-node.fig
process.xml
-scanner.fig
-scons.mod
-sig.fig
+summary.xml
diff --git a/doc/python10/SConstruct b/doc/python10/SConstruct
new file mode 100644
index 0000000..c02cf5e
--- /dev/null
+++ b/doc/python10/SConstruct
@@ -0,0 +1,46 @@
+#
+# SConstruct file for building SCons documentation.
+#
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+
+env = Environment(ENV={'PATH' : os.environ['PATH']},
+ tools=['docbook'],
+ toolpath=['../../src/engine/SCons/Tool'])
+
+has_pdf = False
+if (env.WhereIs('fop') or
+ env.WhereIs('xep')):
+ has_pdf = True
+
+#
+# Create document
+#
+env.DocbookXInclude('python10_xi.xml', 'main.xml')
+env.DocbookXslt('python10.xml', 'python10_xi.xml',
+ xsl='../xslt/to_docbook.xslt')
+env.DocbookHtml('python10.html','python10.xml')
+if has_pdf:
+ env.DocbookPdf('python10.pdf','python10.xml')
diff --git a/doc/python10/abstract.xml b/doc/python10/abstract.xml
index 45b4918..22bc750 100644
--- a/doc/python10/abstract.xml
+++ b/doc/python10/abstract.xml
@@ -1,3 +1,38 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<abstract xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<para>
&SCons; is a software construction tool (build tool, or make tool)
@@ -30,3 +65,5 @@
and discusses future plans and directions for the tool.
</para>
+
+</abstract>
diff --git a/doc/python10/acks.xml b/doc/python10/acks.xml
index 895bad7..9316ea2 100644
--- a/doc/python10/acks.xml
+++ b/doc/python10/acks.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-acks"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Acknowledgements</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<para>
First, many thanks to the great group of developers who dove in right
@@ -25,3 +62,5 @@
to experiment with &Cons; in the first place.
</para>
+
+</section>
diff --git a/doc/python10/arch.eps b/doc/python10/arch.eps
deleted file mode 100644
index 1fdd51f..0000000
--- a/doc/python10/arch.eps
+++ /dev/null
@@ -1,134 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/arch.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan 2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 218 182
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 182 moveto 0 0 lineto 218 0 lineto 218 182 lineto closepath clip newpath
--215.3 324.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-/Courier-Bold ff 300.00 scf sf
-3825 2925 m
-gs 1 -1 sc (scons) col0 sh gr
-/Times-Roman ff 300.00 scf sf
-3825 3225 m
-gs 1 -1 sc (Script) col0 sh gr
-/Times-Roman ff 300.00 scf sf
-5100 4875 m
-gs 1 -1 sc (Build Engine) col0 sh gr
-/Courier-Bold ff 300.00 scf sf
-4200 4875 m
-gs 1 -1 sc (SCons) col0 sh gr
-% Polyline
-7.500 slw
-n 3600 4200 m 7200 4200 l 7200 5400 l 3600 5400 l
- cp gs col0 s gr
-/Courier-Bold ff 300.00 scf sf
-4725 4050 m
-gs 1 -1 sc (SCons) col0 sh gr
-/Times-Roman ff 300.00 scf sf
-5625 4050 m
-gs 1 -1 sc (API) col0 sh gr
-% Polyline
-n 3600 2400 m 3600 2400 l 3600 2400 l 3600 2400 l
- cp gs col0 s gr
-% Polyline
-n 3600 2400 m 4800 2400 l 4800 3600 l 3600 3600 l
- cp gs col0 s gr
-% Polyline
-n 3600 3600 m 7200 3600 l 7200 4200 l 3600 4200 l
- cp gs col0 s gr
-% Polyline
- [60] 0 sd
-n 6000 3600 m 7200 3600 l 7200 2400 l 6000 2400 l
- cp gs col0 s gr [] 0 sd
-/Times-Italic ff 300.00 scf sf
-6300 2925 m
-gs 1 -1 sc (other) col0 sh gr
-/Times-Italic ff 300.00 scf sf
-6150 3225 m
-gs 1 -1 sc (interface) col0 sh gr
-$F2psEnd
-rs
diff --git a/doc/python10/arch.svg b/doc/python10/arch.svg
new file mode 100644
index 0000000..df3a8c0
--- /dev/null
+++ b/doc/python10/arch.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(0.07440476,0,0,0.07440476,-26.785704,242.18362)"
+ id="g3017"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="3600"
+ height="1200"
+ rx="0"
+ x="3600"
+ y="4200"
+ id="rect3019"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="0"
+ height="0"
+ rx="0"
+ x="3600"
+ y="2400"
+ id="rect3021"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="1200"
+ rx="0"
+ x="3600"
+ y="2400"
+ id="rect3023"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="3600"
+ height="600"
+ rx="0"
+ x="3600"
+ y="3600"
+ id="rect3025"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="1200"
+ rx="0"
+ x="6000"
+ y="2400"
+ id="rect3027"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+ <text
+ x="3825"
+ y="2925"
+ id="text3029"
+ xml:space="preserve"
+ style="font-size:240px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">scons</text>
+ <text
+ x="3825"
+ y="3225"
+ id="text3031"
+ xml:space="preserve"
+ style="font-size:240px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Script</text>
+ <text
+ x="5100"
+ y="4875"
+ id="text3033"
+ xml:space="preserve"
+ style="font-size:240px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Build Engine</text>
+ <text
+ x="4200"
+ y="4875"
+ id="text3035"
+ xml:space="preserve"
+ style="font-size:240px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">SCons</text>
+ <text
+ x="4725"
+ y="4050"
+ id="text3037"
+ xml:space="preserve"
+ style="font-size:240px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">SCons</text>
+ <text
+ x="5625"
+ y="4050"
+ id="text3039"
+ xml:space="preserve"
+ style="font-size:240px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">API</text>
+ <text
+ x="6300"
+ y="2925"
+ id="text3041"
+ xml:space="preserve"
+ style="font-size:240px;font-style:italic;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">other</text>
+ <text
+ x="6150"
+ y="3225"
+ id="text3043"
+ xml:space="preserve"
+ style="font-size:240px;font-style:italic;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">interface</text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/python10/builder.eps b/doc/python10/builder.eps
deleted file mode 100644
index db87afc..0000000
--- a/doc/python10/builder.eps
+++ /dev/null
@@ -1,325 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/builder.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan 2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 668 290
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 290 moveto 0 0 lineto 668 0 lineto 668 290 lineto closepath clip newpath
--53.3 342.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/reencdict 12 dict def /ReEncode { reencdict begin
-/newcodesandnames exch def /newfontname exch def /basefontname exch def
-/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
-basefontdict { exch dup /FID ne { dup /Encoding eq
-{ exch dup length array copy newfont 3 1 roll put }
-{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
-newfont /FontName newfontname put newcodesandnames aload pop
-128 1 255 { newfont /Encoding get exch /.notdef put } for
-newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
-newfontname newfont definefont pop end } def
-/isovec [
-8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
-8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
-8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
-8#220 /dotlessi 8#230 /oe 8#231 /OE
-8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
-8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
-8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
-8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
-8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
-8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
-8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
-8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
-8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
-8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
-8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
-8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
-8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
-8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
-8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
-8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
-8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
-8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
-8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
-8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
-8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
-8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
-/Times-Roman /Times-Roman-iso isovec ReEncode
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 2700 1200 m 4500 1200 l 4500 1800 l 2700 1800 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-2925 1575 m
-gs 1 -1 sc (Environment) col0 sh gr
-% Polyline
-n 2700 2400 m 4500 2400 l 4500 3000 l 2700 3000 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-3600 2775 m
-gs 1 -1 sc (BuilderWrapper) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 2700 3600 m 4500 3600 l 4500 4200 l 2700 4200 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-3600 3975 m
-gs 1 -1 sc (BuilderBase) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 8400 3600 m 9900 3600 l 9900 4200 l 8400 4200 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-9150 3975 m
-gs 1 -1 sc (ActionBase) dup sw pop 2 div neg 0 rm col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-4650 5175 m
-gs 1 -1 sc (MultiStep-) dup sw pop 2 div neg 0 rm col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-4650 5460 m
-gs 1 -1 sc (Builder) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 3900 4800 m 5400 4800 l 5400 5700 l 3900 5700 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-2550 5175 m
-gs 1 -1 sc (Composite-) dup sw pop 2 div neg 0 rm col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-2550 5460 m
-gs 1 -1 sc (Builder) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 1800 4800 m 3300 4800 l 3300 5700 l 1800 5700 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-7050 5175 m
-gs 1 -1 sc (Command) dup sw pop 2 div neg 0 rm col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-7050 5460 m
-gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 6300 4800 m 7800 4800 l 7800 5700 l 6300 5700 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-9150 5460 m
-gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-9150 5175 m
-gs 1 -1 sc (Function) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 8400 4800 m 9900 4800 l 9900 5700 l 8400 5700 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-11250 5175 m
-gs 1 -1 sc (List) dup sw pop 2 div neg 0 rm col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-11250 5460 m
-gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 10500 4800 m 12000 4800 l 12000 5700 l 10500 5700 l
- cp gs col0 s gr
-% Polyline
-n 900 2400 m 2100 2400 l 2100 3000 l 900 3000 l
- cp gs col0 s gr
-/Times-Roman-iso ff 240.00 scf sf
-1500 2775 m
-gs 1 -1 sc (Node) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 3600 4200 m 3525 4350 l 3675 4350 l
- cp gs col0 s gr
-% Polyline
-n 3150 4800 m 3150 4500 l 4050 4500 l
- 4050 4800 l gs col0 s gr
-% Polyline
-n 3600 4350 m
- 3600 4500 l gs col0 s gr
-% Polyline
-n 9150 4200 m 9075 4350 l 9225 4350 l
- cp gs col0 s gr
-% Polyline
-n 7050 4800 m 7050 4500 l 10950 4500 l
- 10950 4800 l gs col0 s gr
-% Polyline
-n 9150 4350 m
- 9150 4800 l gs col0 s gr
-% Polyline
-gs clippath
-9885 3870 m 9885 3930 l 10036 3930 l 9916 3900 l 10036 3870 l cp
-eoclip
-n 11550 4650 m 11550 3900 l
- 9900 3900 l gs col0 s gr gr
-
-% arrowhead
-n 10036 3870 m 9916 3900 l 10036 3930 l 10036 3870 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-8415 3930 m 8415 3870 l 8264 3870 l 8384 3900 l 8264 3930 l cp
-eoclip
-n 4650 3900 m
- 8400 3900 l gs col0 s gr gr
-
-% arrowhead
-n 8264 3930 m 8384 3900 l 8264 3870 l 8264 3930 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-3930 1785 m 3870 1785 l 3870 1936 l 3900 1816 l 3930 1936 l cp
-eoclip
-n 3900 2250 m
- 3900 1800 l gs col0 s gr gr
-
-% arrowhead
-n 3930 1936 m 3900 1816 l 3870 1936 l 3930 1936 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-3270 2415 m 3330 2415 l 3330 2264 l 3300 2384 l 3270 2264 l cp
-eoclip
-n 3300 1950 m
- 3300 2400 l gs col0 s gr gr
-
-% arrowhead
-n 3270 2264 m 3300 2384 l 3330 2264 l 3270 2264 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-3570 3615 m 3630 3615 l 3630 3464 l 3600 3584 l 3570 3464 l cp
-eoclip
-n 3600 3150 m
- 3600 3600 l gs col0 s gr gr
-
-% arrowhead
-n 3570 3464 m 3600 3584 l 3630 3464 l 3570 3464 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-4380 4185 m 4320 4185 l 4320 4336 l 4350 4216 l 4380 4336 l cp
-eoclip
-n 4350 4650 m
- 4350 4200 l gs col0 s gr gr
-
-% arrowhead
-n 4380 4336 m 4350 4216 l 4320 4336 l 4380 4336 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-2880 4185 m 2820 4185 l 2820 4336 l 2850 4216 l 2880 4336 l cp
-eoclip
-n 2850 4650 m
- 2850 4200 l gs col0 s gr gr
-
-% arrowhead
-n 2880 4336 m 2850 4216 l 2820 4336 l 2880 4336 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-2715 3930 m 2715 3870 l 2564 3870 l 2684 3900 l 2564 3930 l cp
-eoclip
-n 1500 3150 m 1500 3900 l
- 2700 3900 l gs col0 s gr gr
-
-% arrowhead
-n 2564 3930 m 2684 3900 l 2564 3870 l 2564 3930 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-n 4650 3900 m 4575 3860 l 4500 3900 l 4575 3940 l
- cp gs col0 s gr
-% Polyline
-n 1500 3000 m 1460 3075 l 1500 3150 l 1540 3075 l
- cp gs col0 s gr
-% Polyline
-n 3600 3000 m 3560 3075 l 3600 3150 l 3640 3075 l
- cp gs col0 s gr
-% Polyline
-n 3300 1800 m 3260 1875 l 3300 1950 l 3340 1875 l
- cp gs col0 s gr
-% Polyline
-n 3900 2250 m 3860 2325 l 3900 2400 l 3940 2325 l
- cp gs col0 s gr
-% Polyline
-n 4350 4650 m 4310 4725 l 4350 4800 l 4390 4725 l
- cp gs col0 s gr
-% Polyline
-n 2850 4650 m 2810 4725 l 2850 4800 l 2890 4725 l
- cp gs col0 s gr
-% Polyline
-n 11550 4650 m 11510 4725 l 11550 4800 l 11590 4725 l
- cp gs col0 s gr
-% Polyline
- [60] 0 sd
-n 3600 1200 m
- 3600 900 l gs col0 s gr [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/builder.svg b/doc/python10/builder.svg
new file mode 100644
index 0000000..5648dd6
--- /dev/null
+++ b/doc/python10/builder.svg
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(0.07462687,0,0,0.07462687,-106.34331,286.09351)"
+ id="g3006"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="1200"
+ id="rect3008"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="2400"
+ id="rect3010"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="3600"
+ id="rect3012"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="8400"
+ y="3600"
+ id="rect3014"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="3900"
+ y="4800"
+ id="rect3016"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="1800"
+ y="4800"
+ id="rect3018"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="6300"
+ y="4800"
+ id="rect3020"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="8400"
+ y="4800"
+ id="rect3022"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="900"
+ rx="0"
+ x="10500"
+ y="4800"
+ id="rect3024"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="900"
+ y="2400"
+ id="rect3026"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3600,4200 3600,4200 3525,4350 3675,4350 "
+ id="polygon3028"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3030"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3150,4800 3150,4500 4050,4500 4050,4800 " />
+ <polyline
+ id="polyline3032"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3600,4350 3600,4500 " />
+ <polygon
+ points="9150,4200 9150,4200 9075,4350 9225,4350 "
+ id="polygon3034"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3036"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="7050,4800 7050,4500 10950,4500 10950,4800 " />
+ <polyline
+ id="polyline3038"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="9150,4350 9150,4800 " />
+ <polyline
+ id="polyline3040"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="11550,4650 11550,3900 10019,3900 " />
+ <polygon
+ points="10021,3870 10021,3870 9901,3900 10021,3930 "
+ id="polygon3042"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3044"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4650,3900 8280,3900 " />
+ <polygon
+ points="8279,3930 8279,3930 8399,3900 8279,3870 "
+ id="polygon3046"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3048"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3900,2250 3900,1919 " />
+ <polygon
+ points="3930,1921 3930,1921 3900,1801 3870,1921 "
+ id="polygon3050"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3052"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3300,1950 3300,2280 " />
+ <polygon
+ points="3270,2279 3270,2279 3300,2399 3330,2279 "
+ id="polygon3054"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3056"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3600,3150 3600,3480 " />
+ <polygon
+ points="3570,3479 3570,3479 3600,3599 3630,3479 "
+ id="polygon3058"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3060"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4350,4650 4350,4319 " />
+ <polygon
+ points="4380,4321 4380,4321 4350,4201 4320,4321 "
+ id="polygon3062"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3064"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="2850,4650 2850,4319 " />
+ <polygon
+ points="2880,4321 2880,4321 2850,4201 2820,4321 "
+ id="polygon3066"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3068"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1500,3150 1500,3900 2580,3900 " />
+ <polygon
+ points="2579,3930 2579,3930 2699,3900 2579,3870 "
+ id="polygon3070"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polygon
+ points="4575,3940 4650,3900 4650,3900 4575,3860 4500,3900 "
+ id="polygon3072"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="1540,3075 1500,3000 1500,3000 1460,3075 1500,3150 "
+ id="polygon3074"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3640,3075 3600,3000 3600,3000 3560,3075 3600,3150 "
+ id="polygon3076"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3340,1875 3300,1800 3300,1800 3260,1875 3300,1950 "
+ id="polygon3078"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3940,2325 3900,2250 3900,2250 3860,2325 3900,2400 "
+ id="polygon3080"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4390,4725 4350,4650 4350,4650 4310,4725 4350,4800 "
+ id="polygon3082"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="2890,4725 2850,4650 2850,4650 2810,4725 2850,4800 "
+ id="polygon3084"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="11590,4725 11550,4650 11550,4650 11510,4725 11550,4800 "
+ id="polygon3086"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3088"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="3600,1200 3600,900 " />
+ <text
+ x="2925"
+ y="1575"
+ id="text3090"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Environment</text>
+ <text
+ x="3600"
+ y="2775"
+ id="text3092"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">BuilderWrapper</text>
+ <text
+ x="3600"
+ y="3975"
+ id="text3094"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">BuilderBase</text>
+ <text
+ x="9150"
+ y="3975"
+ id="text3096"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">ActionBase</text>
+ <text
+ x="4650"
+ y="5175"
+ id="text3098"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">MultiStep-</text>
+ <text
+ x="4650"
+ y="5460"
+ id="text3100"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Builder</text>
+ <text
+ x="2550"
+ y="5175"
+ id="text3102"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Composite-</text>
+ <text
+ x="2550"
+ y="5460"
+ id="text3104"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Builder</text>
+ <text
+ x="7050"
+ y="5175"
+ id="text3106"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Command</text>
+ <text
+ x="7050"
+ y="5460"
+ id="text3108"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Action</text>
+ <text
+ x="9150"
+ y="5460"
+ id="text3110"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Action</text>
+ <text
+ x="9150"
+ y="5175"
+ id="text3112"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Function</text>
+ <text
+ x="11250"
+ y="5175"
+ id="text3114"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">List</text>
+ <text
+ x="11250"
+ y="5460"
+ id="text3116"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Action</text>
+ <text
+ x="1500"
+ y="2775"
+ id="text3118"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Node</text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/python10/copyright.xml b/doc/python10/copyright.xml
index d141fc6..27f7e8c 100644
--- a/doc/python10/copyright.xml
+++ b/doc/python10/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -30,3 +40,5 @@
</para>
</blockquote>
+
+</legalnotice>
diff --git a/doc/python10/design.xml b/doc/python10/design.xml
index 0dd5faa..7fe7853 100644
--- a/doc/python10/design.xml
+++ b/doc/python10/design.xml
@@ -1,22 +1,57 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-design"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Architecture</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<para>
The &SCons; architecture consists of three layers:
</para>
+<figure>
+<title>&SCons; architecture</title>
<mediaobject>
<imageobject>
- <imagedata fileref="arch" format="eps" align="center"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="arch.jpg" format="jpg" align="center"/>
+ <imagedata fileref="arch.svg" align="center" scale="50"/>
</imageobject>
- <!-- PDF files?
<imageobject>
- <imagedata fileref="arch.pdf" align="center"/>
+ <imagedata fileref="arch.jpg" align="center"/>
</imageobject>
- -->
</mediaobject>
+</figure>
<itemizedlist>
@@ -164,19 +199,17 @@
</para>
+ <figure>
+ <title>Node subsystem</title>
<mediaobject>
<imageobject>
- <imagedata fileref="node" format="eps" align="center"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="node.jpg" format="jpg" align="center"/>
+ <imagedata fileref="node.svg" align="center" scale="50"/>
</imageobject>
- <!-- PDF files?
<imageobject>
- <imagedata fileref="node.pdf" align="center"/>
+ <imagedata fileref="node.jpg" align="center"/>
</imageobject>
- -->
</mediaobject>
+ </figure>
<para>
@@ -228,19 +261,17 @@
</para>
+ <figure>
+ <title>Scanner subsystem</title>
<mediaobject>
<imageobject>
- <imagedata fileref="scanner" format="eps" align="center"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="scanner.jpg" format="jpg" align="center"/>
+ <imagedata fileref="scanner.svg" align="center" scale="50"/>
</imageobject>
- <!-- PDF files?
<imageobject>
- <imagedata fileref="scanner.pdf" align="center"/>
+ <imagedata fileref="scanner.jpg" align="center"/>
</imageobject>
- -->
</mediaobject>
+ </figure>
<para>
@@ -270,19 +301,17 @@
</para>
+ <figure>
+ <title>Signature subsystem</title>
<mediaobject>
<imageobject>
- <imagedata fileref="sig" format="eps" align="center"/>
+ <imagedata fileref="sig.svg" align="center" scale="50"/>
</imageobject>
<imageobject>
- <imagedata fileref="sig.jpg" format="jpg" align="center"/>
+ <imagedata fileref="sig.jpg" align="center"/>
</imageobject>
- <!-- PDF files?
- <imageobject>
- <imagedata fileref="sig.pdf" align="center"/>
- </imageobject>
- -->
</mediaobject>
+ </figure>
<para>
@@ -326,19 +355,17 @@
</para>
+ <figure>
+ <title>Builder subsystem</title>
<mediaobject>
<imageobject>
- <imagedata fileref="builder" format="eps" align="center"/>
- </imageobject>
- <imageobject>
- <imagedata fileref="builder.jpg" format="jpg" align="center"/>
+ <imagedata fileref="builder.svg" align="center" scale="50"/>
</imageobject>
- <!-- PDF files?
<imageobject>
- <imagedata fileref="builder.pdf" align="center"/>
+ <imagedata fileref="builder.jpg" align="center"/>
</imageobject>
- -->
</mediaobject>
+ </figure>
<para>
@@ -389,19 +416,17 @@
</para>
+ <figure>
+ <title>Job/Task subsystem</title>
<mediaobject>
<imageobject>
- <imagedata fileref="job-task" format="eps" align="center"/>
+ <imagedata fileref="job-task.svg" align="center" scale="50"/>
</imageobject>
<imageobject>
- <imagedata fileref="job-task.jpg" format="jpg" align="center"/>
+ <imagedata fileref="job-task.jpg" align="center"/>
</imageobject>
- <!-- PDF files?
- <imageobject>
- <imagedata fileref="job-task.pdf" align="center"/>
- </imageobject>
- -->
</mediaobject>
+ </figure>
<para>
@@ -531,8 +556,8 @@
</para>
<programlisting>
- env = Environment()
- env_debug = Environment(CCFLAGS = '-g')
+env = Environment()
+env_debug = Environment(CCFLAGS = '-g')
</programlisting>
</section>
@@ -547,7 +572,7 @@
file, a library, etc. A &Builder; object is associated with a
file through an associated &consenv; method and later invoked to
actually build the file. The &Builder; object will typically use
- construction variables (such as &CCFLAGS;, &LIBPATH;) to influence
+ construction variables (such as <literal>CCFLAGS</literal>, <literal>LIBPATH</literal>) to influence
the specific build execution.
</para>
@@ -559,7 +584,7 @@
</para>
<programlisting>
- bld = Builder(name = 'Program', action = "$CC -o $TARGET $SOURCES")
+bld = Builder(name = 'Program', action = "$CC -o $TARGET $SOURCES")
</programlisting>
<para>
@@ -608,8 +633,8 @@
</para>
<programlisting>
- bld_lib = Builder(name = 'Library', action = "$AR r $TARGET $SOURCES",
- prefix = 'lib', suffix = '.a', src_suffix = '.o')
+bld_lib = Builder(name = 'Library', action = "$AR r $TARGET $SOURCES",
+ prefix = 'lib', suffix = '.a', src_suffix = '.o')
</programlisting>
<para>
@@ -629,13 +654,13 @@
<para>
&Builder; objects are associated with a &consenv; through a
- &consvar; named &BUILDERS;, a list of the &Builder; objects that
+ &consvar; named <literal>BUILDERS</literal>, a list of the &Builder; objects that
will be available for execution through the &consenv;:
</para>
<programlisting>
- env = Environment(BUILDERS = [ Object, Library, WebPage, Program ])
+env = Environment(BUILDERS = [ Object, Library, WebPage, Program ])
</programlisting>
</section>
@@ -678,13 +703,13 @@
<para>
&Scanner; objects are associated with a &consenv; through a
- &consvar; named &SCANNERS;, a list of the &Scanner; objects that
+ &consvar; named <literal>SCANNERS</literal>, a list of the &Scanner; objects that
will be available through the &consenv;:
</para>
<programlisting>
- env = Environment(SCANNERS = [ CScan, M4Scan ])
+env = Environment(SCANNERS = [ CScan, M4Scan ])
</programlisting>
<para>
@@ -720,7 +745,7 @@
</para>
<programlisting>
- BuildDir(source = 'src', build = 'bld')
+BuildDir(source = 'src', build = 'bld')
</programlisting>
<para>
@@ -738,7 +763,7 @@
</para>
<programlisting>
- BuildDir(source = 'src', build = 'bld', no_sources = 1)
+BuildDir(source = 'src', build = 'bld', no_sources = 1)
</programlisting>
</section>
@@ -759,7 +784,7 @@
</para>
<programlisting>
- Repository('/home/source/1.1', '/home/source/1.0')
+Repository('/home/source/1.1', '/home/source/1.0')
</programlisting>
<para>
@@ -785,7 +810,7 @@
</para>
<programlisting>
- Cache('/var/build.cache/i386')
+Cache('/var/build.cache/i386')
</programlisting>
<para>
@@ -855,7 +880,7 @@
</para>
<programlisting>
- source_files = 'f1.c f2.c f3.c'
+source_files = 'f1.c f2.c f3.c'
</programlisting>
<para>
@@ -867,7 +892,7 @@
</para>
<programlisting>
- SConscript('src/SConscript', 'lib/SConscript')
+SConscript('src/SConscript', 'lib/SConscript')
</programlisting>
<para>
@@ -896,3 +921,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/python10/future.xml b/doc/python10/future.xml
index 272d508..6c6b756 100644
--- a/doc/python10/future.xml
+++ b/doc/python10/future.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-future"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Future Directions</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<para>
There are a number of things we would like to do to continue to
@@ -168,3 +205,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/python10/install.xml b/doc/python10/install.xml
index d150beb..17f1e83 100644
--- a/doc/python10/install.xml
+++ b/doc/python10/install.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-install"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Installation</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<para>
Initial installation of a new utility provides the first, lasting
@@ -177,3 +214,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/python10/intro.xml b/doc/python10/intro.xml
index d3057be..79500e6 100644
--- a/doc/python10/intro.xml
+++ b/doc/python10/intro.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-intro"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Introduction</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<para>
More than twenty years after its creation, the classic UNIX &Make;
@@ -210,3 +247,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/python10/job-task.eps b/doc/python10/job-task.eps
deleted file mode 100644
index b3eeaff..0000000
--- a/doc/python10/job-task.eps
+++ /dev/null
@@ -1,238 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/job-task.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan 2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 416 236
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 236 moveto 0 0 lineto 416 0 lineto 416 236 lineto closepath clip newpath
--35.3 342.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 4200 3900 m 5100 3900 l 5100 4500 l 4200 4500 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-4650 4275 m
-gs 1 -1 sc (Task) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 4200 5100 m 5100 5100 l 5100 5700 l 4200 5700 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-4650 5475 m
-gs 1 -1 sc (Node) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 6300 2100 m 7200 2100 l 7200 2700 l 6300 2700 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-6750 2475 m
-gs 1 -1 sc (Sig) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 6300 3300 m 7500 3300 l 7500 3900 l 6300 3900 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-6900 3675 m
-gs 1 -1 sc (Walker) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 4200 2100 m 5700 2100 l 5700 2700 l 4200 2700 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-4950 2475 m
-gs 1 -1 sc (TaskMaster) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 2400 3300 m 3600 3300 l 3600 3900 l 2400 3900 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-3000 3675 m
-gs 1 -1 sc (Parallel) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 600 3300 m 1800 3300 l 1800 3900 l 600 3900 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-1200 3675 m
-gs 1 -1 sc (Serial) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 1200 2100 m 3000 2100 l 3000 2700 l 1200 2700 l
- cp gs col0 s gr
-/Times-Roman ff 255.00 scf sf
-2099 2475 m
-gs 1 -1 sc (Jobs) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 2700 2700 m 2660 2775 l 2700 2850 l 2740 2775 l
- cp gs col0 s gr
-% Polyline
-n 5700 2400 m 5775 2440 l 5850 2400 l 5775 2360 l
- cp gs col0 s gr
-% Polyline
-n 5400 2700 m 5360 2775 l 5400 2850 l 5440 2775 l
- cp gs col0 s gr
-% Polyline
-n 4650 2700 m 4610 2775 l 4650 2850 l 4690 2775 l
- cp gs col0 s gr
-% Polyline
-n 1500 2700 m 1460 2775 l 1500 2850 l 1540 2775 l
- cp gs col0 s gr
-% Polyline
-n 4650 4500 m 4610 4575 l 4650 4650 l 4690 4575 l
- cp gs col0 s gr
-% Polyline
-gs clippath
-1470 3315 m 1530 3315 l 1530 3164 l 1500 3284 l 1470 3164 l cp
-eoclip
-n 1500 2850 m
- 1500 3300 l gs col0 s gr gr
-
-% arrowhead
-n 1470 3164 m 1500 3284 l 1530 3164 l 1470 3164 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-2670 3315 m 2730 3315 l 2730 3164 l 2700 3284 l 2670 3164 l cp
-eoclip
-n 2700 2850 m
- 2700 3300 l gs col0 s gr gr
-
-% arrowhead
-n 2670 3164 m 2700 3284 l 2730 3164 l 2670 3164 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-4620 3915 m 4680 3915 l 4680 3764 l 4650 3884 l 4620 3764 l cp
-eoclip
-n 4650 2850 m
- 4650 3900 l gs col0 s gr gr
-
-% arrowhead
-n 4620 3764 m 4650 3884 l 4680 3764 l 4620 3764 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-4620 5115 m 4680 5115 l 4680 4964 l 4650 5084 l 4620 4964 l cp
-eoclip
-n 4650 4650 m
- 4650 5100 l gs col0 s gr gr
-
-% arrowhead
-n 4620 4964 m 4650 5084 l 4680 4964 l 4620 4964 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-6315 3630 m 6315 3570 l 6164 3570 l 6284 3600 l 6164 3630 l cp
-eoclip
-n 5400 2850 m 5400 3600 l
- 6300 3600 l gs col0 s gr gr
-
-% arrowhead
-n 6164 3630 m 6284 3600 l 6164 3570 l 6164 3630 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-6315 2430 m 6315 2370 l 6164 2370 l 6284 2400 l 6164 2430 l cp
-eoclip
-n 5850 2400 m
- 6300 2400 l gs col0 s gr gr
-
-% arrowhead
-n 6164 2430 m 6284 2400 l 6164 2370 l 6164 2430 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-n 3000 2400 m 3075 2440 l 3150 2400 l 3075 2360 l
- cp gs col0 s gr
-% Polyline
-gs clippath
-4215 2430 m 4215 2370 l 4064 2370 l 4184 2400 l 4064 2430 l cp
-eoclip
-n 3150 2400 m
- 4200 2400 l gs col0 s gr gr
-
-% arrowhead
-n 4064 2430 m 4184 2400 l 4064 2370 l 4064 2430 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
- [60] 0 sd
-n 2100 2100 m
- 2100 1800 l gs col0 s gr [] 0 sd
-% Polyline
- [60] 0 sd
-n 4950 2100 m
- 4950 1800 l gs col0 s gr [] 0 sd
-% Polyline
- [60] 0 sd
-n 6750 2100 m
- 6750 1800 l gs col0 s gr [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/job-task.svg b/doc/python10/job-task.svg
new file mode 100644
index 0000000..dc5fc20
--- /dev/null
+++ b/doc/python10/job-task.svg
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(0.07538995,0,0,0.07538995,69.670703,249.64987)"
+ id="g3223"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="4200"
+ y="3900"
+ id="rect3225"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="4200"
+ y="5100"
+ id="rect3227"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="6300"
+ y="2100"
+ id="rect3229"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="6300"
+ y="3300"
+ id="rect3231"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="4200"
+ y="2100"
+ id="rect3233"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="2400"
+ y="3300"
+ id="rect3235"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="600"
+ y="3300"
+ id="rect3237"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="1200"
+ y="2100"
+ id="rect3239"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="2740,2775 2700,2700 2700,2700 2660,2775 2700,2850 "
+ id="polygon3241"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="5775,2360 5700,2400 5700,2400 5775,2440 5850,2400 "
+ id="polygon3243"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="5440,2775 5400,2700 5400,2700 5360,2775 5400,2850 "
+ id="polygon3245"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4690,2775 4650,2700 4650,2700 4610,2775 4650,2850 "
+ id="polygon3247"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="1540,2775 1500,2700 1500,2700 1460,2775 1500,2850 "
+ id="polygon3249"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4690,4575 4650,4500 4650,4500 4610,4575 4650,4650 "
+ id="polygon3251"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3253"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1500,2850 1500,3180 " />
+ <polygon
+ points="1470,3179 1470,3179 1500,3299 1530,3179 "
+ id="polygon3255"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3257"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="2700,2850 2700,3180 " />
+ <polygon
+ points="2670,3179 2670,3179 2700,3299 2730,3179 "
+ id="polygon3259"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3261"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4650,2850 4650,3780 " />
+ <polygon
+ points="4620,3779 4620,3779 4650,3899 4680,3779 "
+ id="polygon3263"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3265"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4650,4650 4650,4980 " />
+ <polygon
+ points="4620,4979 4620,4979 4650,5099 4680,4979 "
+ id="polygon3267"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3269"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="5400,2850 5400,3600 6180,3600 " />
+ <polygon
+ points="6179,3630 6179,3630 6299,3600 6179,3570 "
+ id="polygon3271"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3273"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="5850,2400 6180,2400 " />
+ <polygon
+ points="6179,2430 6179,2430 6299,2400 6179,2370 "
+ id="polygon3275"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polygon
+ points="3075,2360 3000,2400 3000,2400 3075,2440 3150,2400 "
+ id="polygon3277"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3279"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3150,2400 4080,2400 " />
+ <polygon
+ points="4079,2430 4079,2430 4199,2400 4079,2370 "
+ id="polygon3281"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3283"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="2100,2100 2100,1800 " />
+ <polyline
+ id="polyline3285"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="4950,2100 4950,1800 " />
+ <polyline
+ id="polyline3287"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="6750,2100 6750,1800 " />
+ <text
+ x="4650"
+ y="4275"
+ id="text3289"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Task</text>
+ <text
+ x="4650"
+ y="5475"
+ id="text3291"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Node</text>
+ <text
+ x="6750"
+ y="2475"
+ id="text3293"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Sig</text>
+ <text
+ x="6900"
+ y="3675"
+ id="text3295"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Walker</text>
+ <text
+ x="4950"
+ y="2475"
+ id="text3297"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">TaskMaster</text>
+ <text
+ x="3000"
+ y="3675"
+ id="text3299"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Parallel</text>
+ <text
+ x="1200"
+ y="3675"
+ id="text3301"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Serial</text>
+ <text
+ x="2099"
+ y="2475"
+ id="text3303"
+ xml:space="preserve"
+ style="font-size:204px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Jobs</text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/python10/main.xml b/doc/python10/main.xml
index e061b90..30124ce 100644
--- a/doc/python10/main.xml
+++ b/doc/python10/main.xml
@@ -1,8 +1,19 @@
<?xml version="1.0"?>
+<!DOCTYPE sconsdoc [
+
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+]>
+
+<article xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -24,26 +35,7 @@
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-->
-
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
-
- <!ENTITY % scons SYSTEM "scons.mod">
- %scons;
-
- <!ENTITY abstract SYSTEM "abstract.xml">
- <!ENTITY acks SYSTEM "acks.xml">
- <!ENTITY copyright SYSTEM "copyright.xml">
- <!ENTITY design SYSTEM "design.xml">
- <!ENTITY future SYSTEM "future.xml">
- <!ENTITY install SYSTEM "install.xml">
- <!ENTITY intro SYSTEM "intro.xml">
- <!ENTITY process SYSTEM "process.xml">
-
-]>
-
-<article>
+
<articleinfo>
<title>SCons Design and Implementation</title>
@@ -81,56 +73,21 @@
</articleinfo>
- <abstract>
- &abstract;
- </abstract>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="abstract.xml"/>
- <section id="sect-intro">
- <title>Introduction</title>
- &intro;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="intro.xml"/>
- <section id="sect-design">
- <title>Architecture</title>
- &design;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="design.xml"/>
- <section id="sect-install">
- <title>Installation</title>
- &install;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="install.xml"/>
- <section id="sect-process">
- <title>Development Process</title>
- &process;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="process.xml"/>
- <section id="sect-future">
- <title>Future Directions</title>
- &future;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="future.xml"/>
- <section id="sect-summary">
- <title>Summary</title>
- <para>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="summary.xml"/>
- This paper has introduced &SCons;, a next-generation build tool
- with a modular, embeddable architecture and a direct Python
- interface. &SCons; has a global view of the dependencies in a source
- tree, uses MD5 signatures to decide if derived files are out of date,
- and automatically scans files for dependencies, all of which make &SCons;
- builds exceptionally reliable. The &SCons; development methodology has
- been described, notable for its emphasis on automated regression
- testing to ensure a robust and reliable tool from day one. Several
- future directions for &SCons; have also been discussed.
-
- </para>
- </section>
-
- <section id="sect-acks">
- <title>Acknowledgements</title>
- &acks;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acks.xml"/>
<!--
<section id="sect-refs">
diff --git a/doc/python10/node.eps b/doc/python10/node.eps
deleted file mode 100644
index 995235d..0000000
--- a/doc/python10/node.eps
+++ /dev/null
@@ -1,351 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/node.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan 2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 452 362
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 362 moveto 0 0 lineto 452 0 lineto 452 362 lineto closepath clip newpath
-0.7 414.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 2700 1200 m 4500 1200 l 4500 1800 l 2700 1800 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-2925 1575 m
-gs 1 -1 sc (Environment) col0 sh gr
-% Polyline
-n 2700 3600 m 4500 3600 l 4500 4200 l 2700 4200 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-3375 3975 m
-gs 1 -1 sc (Node) col0 sh gr
-% Polyline
-n 5700 1800 m 6900 1800 l 6900 2400 l 5700 2400 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-5925 2175 m
-gs 1 -1 sc (Walker) col0 sh gr
-% Polyline
-n 2100 2400 m 3300 2400 l 3300 3000 l 2100 3000 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-2325 2775 m
-gs 1 -1 sc (Builder) col0 sh gr
-% Polyline
-n 3900 2400 m 5100 2400 l 5100 3000 l 3900 3000 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-4125 2775 m
-gs 1 -1 sc (Scanner) col0 sh gr
-% Polyline
-n 2400 6300 m 3300 6300 l 3300 6900 l 2400 6900 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-2700 6675 m
-gs 1 -1 sc (Dir) col0 sh gr
-% Polyline
-n 0 6300 m 900 6300 l 900 6900 l 0 6900 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-150 6675 m
-gs 1 -1 sc (Entry) col0 sh gr
-% Polyline
-n 1200 6300 m 2100 6300 l 2100 6900 l 1200 6900 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-1425 6675 m
-gs 1 -1 sc (File) col0 sh gr
-% Polyline
-n 1050 5100 m 2250 5100 l 2250 5700 l 1050 5700 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-1200 5475 m
-gs 1 -1 sc (Node.FS) col0 sh gr
-% Polyline
-n 1650 5700 m 1575 5850 l 1725 5850 l
- cp gs col0 s gr
-% Polyline
-n 450 6300 m 450 6000 l 2700 6000 l
- 2700 6300 l gs col0 s gr
-% Polyline
-n 1650 6300 m
- 1650 5850 l gs col0 s gr
-% Polyline
- [60] 0 sd
-n 5100 6300 m 6300 6300 l 6300 6900 l 5100 6900 l
- cp gs col0 s gr [] 0 sd
-/Times-Roman ff 240.00 scf sf
-5325 6675 m
-gs 1 -1 sc (Record) col0 sh gr
-% Polyline
- [60] 0 sd
-n 6600 6300 m 7500 6300 l 7500 6900 l 6600 6900 l
- cp gs col0 s gr [] 0 sd
-/Times-Roman ff 240.00 scf sf
-6750 6675 m
-gs 1 -1 sc (Field) col0 sh gr
-% Polyline
- [60] 0 sd
-n 4950 5100 m 6150 5100 l 6150 5700 l 4950 5700 l
- cp gs col0 s gr [] 0 sd
-/Times-Roman ff 240.00 scf sf
-5100 5475 m
-gs 1 -1 sc (Node.DB) col0 sh gr
-% Polyline
-n 5550 5700 m 5475 5850 l 5625 5850 l
- cp gs col0 s gr
-% Polyline
- [60] 0 sd
-n 4350 6300 m 4350 6000 l 7050 6000 l
- 7050 6300 l gs col0 s gr [] 0 sd
-% Polyline
- [60] 0 sd
-n 5550 5850 m
- 5550 6300 l gs col0 s gr [] 0 sd
-% Polyline
- [60] 0 sd
-n 3900 6300 m 4800 6300 l 4800 6900 l 3900 6900 l
- cp gs col0 s gr [] 0 sd
-/Times-Roman ff 240.00 scf sf
-4050 6675 m
-gs 1 -1 sc (Table) col0 sh gr
-% Polyline
-n 5700 3000 m 6900 3000 l 6900 3600 l 5700 3600 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-5850 3375 m
-gs 1 -1 sc (Wrapper) col0 sh gr
-% Polyline
-n 900 1200 m 1800 1200 l 1800 1800 l 900 1800 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-1200 1575 m
-gs 1 -1 sc (FS) col0 sh gr
-% Polyline
-n 3600 4200 m 3525 4350 l 3675 4350 l
- cp gs col0 s gr
-% Polyline
-n 1800 5100 m 1800 4800 l 5550 4800 l
- 5550 5100 l gs col0 s gr
-% Polyline
-n 3600 4800 m
- 3600 4350 l gs col0 s gr
-% Polyline
-n 4200 1800 m 4160 1875 l 4200 1950 l 4240 1875 l
- cp gs col0 s gr
-% Polyline
-n 3000 6150 m 2960 6225 l 3000 6300 l 3040 6225 l
- cp gs col0 s gr
-% Polyline
-n 6300 3600 m 6260 3675 l 6300 3750 l 6340 3675 l
- cp gs col0 s gr
-% Polyline
-n 6300 2400 m 6260 2475 l 6300 2550 l 6340 2475 l
- cp gs col0 s gr
-% Polyline
-n 3000 4200 m 2960 4275 l 3000 4350 l 3040 4275 l
- cp gs col0 s gr
-% Polyline
-n 4200 3450 m 4160 3525 l 4200 3600 l 4240 3525 l
- cp gs col0 s gr
-% Polyline
-n 3000 3450 m 2960 3525 l 3000 3600 l 3040 3525 l
- cp gs col0 s gr
-% Polyline
-gs clippath
-2235 5370 m 2235 5430 l 2386 5430 l 2266 5400 l 2386 5370 l cp
-eoclip
-n 3000 6150 m 3000 5400 l
- 2250 5400 l gs col0 s gr gr
-
-% arrowhead
-n 2386 5370 m 2266 5400 l 2386 5430 l 2386 5370 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-2715 3930 m 2715 3870 l 2564 3870 l 2684 3900 l 2564 3930 l cp
-eoclip
-n 3000 4350 m 3000 4500 l 1800 4500 l 1800 3900 l
- 2700 3900 l gs col0 s gr gr
-
-% arrowhead
-n 2564 3930 m 2684 3900 l 2564 3870 l 2564 3930 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-4485 3870 m 4485 3930 l 4636 3930 l 4516 3900 l 4636 3870 l cp
-eoclip
-n 6300 3750 m 6300 3900 l
- 4500 3900 l gs col0 s gr gr
-
-% arrowhead
-n 4636 3870 m 4516 3900 l 4636 3930 l 4636 3870 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-4230 2985 m 4170 2985 l 4170 3136 l 4200 3016 l 4230 3136 l cp
-eoclip
-n 4200 3450 m
- 4200 3000 l gs col0 s gr gr
-
-% arrowhead
-n 4230 3136 m 4200 3016 l 4170 3136 l 4230 3136 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-3030 2985 m 2970 2985 l 2970 3136 l 3000 3016 l 3030 3136 l cp
-eoclip
-n 3000 3450 m
- 3000 3000 l gs col0 s gr gr
-
-% arrowhead
-n 3030 3136 m 3000 3016 l 2970 3136 l 3030 3136 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-n 3000 1800 m 2960 1875 l 3000 1950 l 3040 1875 l
- cp gs col0 s gr
-% Polyline
-gs clippath
-2970 2415 m 3030 2415 l 3030 2264 l 3000 2384 l 2970 2264 l cp
-eoclip
-n 3000 1950 m
- 3000 2400 l gs col0 s gr gr
-
-% arrowhead
-n 2970 2264 m 3000 2384 l 3030 2264 l 2970 2264 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-4170 2415 m 4230 2415 l 4230 2264 l 4200 2384 l 4170 2264 l cp
-eoclip
-n 4200 1950 m
- 4200 2400 l gs col0 s gr gr
-
-% arrowhead
-n 4170 2264 m 4200 2384 l 4230 2264 l 4170 2264 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-6270 3015 m 6330 3015 l 6330 2864 l 6300 2984 l 6270 2864 l cp
-eoclip
-n 6300 2550 m
- 6300 3000 l gs col0 s gr gr
-
-% arrowhead
-n 6270 2864 m 6300 2984 l 6330 2864 l 6270 2864 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-4785 6570 m 4785 6630 l 4936 6630 l 4816 6600 l 4936 6570 l cp
-eoclip
-n 5100 6600 m
- 4800 6600 l gs col0 s gr gr
-
-% arrowhead
-n 4936 6570 m 4816 6600 l 4936 6630 l 4936 6570 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-6285 6570 m 6285 6630 l 6436 6630 l 6316 6600 l 6436 6570 l cp
-eoclip
-n 6600 6600 m
- 6300 6600 l gs col0 s gr gr
-
-% arrowhead
-n 6436 6570 m 6316 6600 l 6436 6630 l 6436 6570 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-n 1350 1800 m 1310 1875 l 1350 1950 l 1390 1875 l
- cp gs col0 s gr
-% Polyline
-gs clippath
-1320 5115 m 1380 5115 l 1380 4964 l 1350 5084 l 1320 4964 l cp
-eoclip
-n 1350 1950 m
- 1350 5100 l gs col0 s gr gr
-
-% arrowhead
-n 1320 4964 m 1350 5084 l 1380 4964 l 1320 4964 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
- [60] 0 sd
-n 1350 1200 m
- 1350 900 l gs col0 s gr [] 0 sd
-% Polyline
- [60] 0 sd
-n 3600 1200 m
- 3600 900 l gs col0 s gr [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/node.svg b/doc/python10/node.svg
new file mode 100644
index 0000000..66b6c8a
--- /dev/null
+++ b/doc/python10/node.svg
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(0.0747012,0,0,0.0747012,94.8705,241.0275)"
+ id="g3392"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="1200"
+ id="rect3394"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="3600"
+ id="rect3396"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="5700"
+ y="1800"
+ id="rect3398"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="2100"
+ y="2400"
+ id="rect3400"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="3900"
+ y="2400"
+ id="rect3402"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="2400"
+ y="6300"
+ id="rect3404"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="0"
+ y="6300"
+ id="rect3406"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="1200"
+ y="6300"
+ id="rect3408"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="1050"
+ y="5100"
+ id="rect3410"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="1650,5700 1650,5700 1575,5850 1725,5850 "
+ id="polygon3412"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3414"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="450,6300 450,6000 2700,6000 2700,6300 " />
+ <polyline
+ id="polyline3416"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1650,6300 1650,5850 " />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="5100"
+ y="6300"
+ id="rect3418"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="6600"
+ y="6300"
+ id="rect3420"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="4950"
+ y="5100"
+ id="rect3422"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+ <polygon
+ points="5550,5700 5550,5700 5475,5850 5625,5850 "
+ id="polygon3424"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3426"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="4350,6300 4350,6000 7050,6000 7050,6300 " />
+ <polyline
+ id="polyline3428"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="5550,5850 5550,6300 " />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="3900"
+ y="6300"
+ id="rect3430"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="5700"
+ y="3000"
+ id="rect3432"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="900"
+ y="1200"
+ id="rect3434"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3600,4200 3600,4200 3525,4350 3675,4350 "
+ id="polygon3436"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3438"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1800,5100 1800,4800 5550,4800 5550,5100 " />
+ <polyline
+ id="polyline3440"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3600,4800 3600,4350 " />
+ <polygon
+ points="4240,1875 4200,1800 4200,1800 4160,1875 4200,1950 "
+ id="polygon3442"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3040,6225 3000,6150 3000,6150 2960,6225 3000,6300 "
+ id="polygon3444"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="6340,3675 6300,3600 6300,3600 6260,3675 6300,3750 "
+ id="polygon3446"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="6340,2475 6300,2400 6300,2400 6260,2475 6300,2550 "
+ id="polygon3448"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3040,4275 3000,4200 3000,4200 2960,4275 3000,4350 "
+ id="polygon3450"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4240,3525 4200,3450 4200,3450 4160,3525 4200,3600 "
+ id="polygon3452"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3040,3525 3000,3450 3000,3450 2960,3525 3000,3600 "
+ id="polygon3454"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3456"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3000,6150 3000,5400 2369,5400 " />
+ <polygon
+ points="2371,5370 2371,5370 2251,5400 2371,5430 "
+ id="polygon3458"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3460"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3000,4350 3000,4500 1800,4500 1800,3900 2580,3900 " />
+ <polygon
+ points="2579,3930 2579,3930 2699,3900 2579,3870 "
+ id="polygon3462"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3464"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="6300,3750 6300,3900 4619,3900 " />
+ <polygon
+ points="4621,3870 4621,3870 4501,3900 4621,3930 "
+ id="polygon3466"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3468"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4200,3450 4200,3119 " />
+ <polygon
+ points="4230,3121 4230,3121 4200,3001 4170,3121 "
+ id="polygon3470"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3472"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3000,3450 3000,3119 " />
+ <polygon
+ points="3030,3121 3030,3121 3000,3001 2970,3121 "
+ id="polygon3474"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polygon
+ points="3040,1875 3000,1800 3000,1800 2960,1875 3000,1950 "
+ id="polygon3476"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3478"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3000,1950 3000,2280 " />
+ <polygon
+ points="2970,2279 2970,2279 3000,2399 3030,2279 "
+ id="polygon3480"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3482"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4200,1950 4200,2280 " />
+ <polygon
+ points="4170,2279 4170,2279 4200,2399 4230,2279 "
+ id="polygon3484"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3486"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="6300,2550 6300,2880 " />
+ <polygon
+ points="6270,2879 6270,2879 6300,2999 6330,2879 "
+ id="polygon3488"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3490"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="5100,6600 4919,6600 " />
+ <polygon
+ points="4921,6570 4921,6570 4801,6600 4921,6630 "
+ id="polygon3492"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3494"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="6600,6600 6419,6600 " />
+ <polygon
+ points="6421,6570 6421,6570 6301,6600 6421,6630 "
+ id="polygon3496"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polygon
+ points="1390,1875 1350,1800 1350,1800 1310,1875 1350,1950 "
+ id="polygon3498"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3500"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1350,1950 1350,4980 " />
+ <polygon
+ points="1320,4979 1320,4979 1350,5099 1380,4979 "
+ id="polygon3502"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3504"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="1350,1200 1350,900 " />
+ <polyline
+ id="polyline3506"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="3600,1200 3600,900 " />
+ <text
+ x="2925"
+ y="1575"
+ id="text3508"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Environment</text>
+ <text
+ x="3375"
+ y="3975"
+ id="text3510"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node</text>
+ <text
+ x="5925"
+ y="2175"
+ id="text3512"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Walker</text>
+ <text
+ x="2325"
+ y="2775"
+ id="text3514"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Builder</text>
+ <text
+ x="4125"
+ y="2775"
+ id="text3516"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Scanner</text>
+ <text
+ x="2700"
+ y="6675"
+ id="text3518"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Dir</text>
+ <text
+ x="150"
+ y="6675"
+ id="text3520"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Entry</text>
+ <text
+ x="1425"
+ y="6675"
+ id="text3522"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">File</text>
+ <text
+ x="1200"
+ y="5475"
+ id="text3524"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node.FS</text>
+ <text
+ x="5325"
+ y="6675"
+ id="text3526"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Record</text>
+ <text
+ x="6750"
+ y="6675"
+ id="text3528"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Field</text>
+ <text
+ x="5100"
+ y="5475"
+ id="text3530"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node.DB</text>
+ <text
+ x="4050"
+ y="6675"
+ id="text3532"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Table</text>
+ <text
+ x="5850"
+ y="3375"
+ id="text3534"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Wrapper</text>
+ <text
+ x="1200"
+ y="1575"
+ id="text3536"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">FS</text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/python10/process.xml b/doc/python10/process.xml
index 4ff0ab1..5f8f964 100644
--- a/doc/python10/process.xml
+++ b/doc/python10/process.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-process"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Development Process</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<para>
The &SCons; project has paid particular attention from day one to the
@@ -351,3 +388,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/python10/scanner.eps b/doc/python10/scanner.eps
deleted file mode 100644
index 35614f8..0000000
--- a/doc/python10/scanner.eps
+++ /dev/null
@@ -1,168 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/scanner.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan 2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 398 200
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 200 moveto 0 0 lineto 398 0 lineto 398 200 lineto closepath clip newpath
--17.3 360.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 2700 5400 m 4500 5400 l 4500 6000 l 2700 6000 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-3000 5775 m
-gs 1 -1 sc (ProgScanner) col0 sh gr
-% Polyline
-n 2700 4200 m 4500 4200 l 4500 4800 l 2700 4800 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-3225 4575 m
-gs 1 -1 sc (Scanner) col0 sh gr
-% Polyline
-n 2700 3000 m 4500 3000 l 4500 3600 l 2700 3600 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-2925 3375 m
-gs 1 -1 sc (Environment) col0 sh gr
-% Polyline
- [60] 0 sd
-n 5100 5400 m 6900 5400 l 6900 6000 l 5100 6000 l
- cp gs col0 s gr [] 0 sd
-/Times-Roman ff 240.00 scf sf
-5400 5775 m
-gs 1 -1 sc (JavaScanner) col0 sh gr
-% Polyline
-n 300 5400 m 2100 5400 l 2100 6000 l 300 6000 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-750 5775 m
-gs 1 -1 sc (CScanner) col0 sh gr
-% Polyline
-n 600 3300 m 1500 3300 l 1500 3900 l 600 3900 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-825 3675 m
-gs 1 -1 sc (Node) col0 sh gr
-% Polyline
-n 1200 5400 m 1200 5100 l 6000 5100 l
- 6000 5400 l gs col0 s gr
-% Polyline
-n 3600 4950 m
- 3600 5400 l gs col0 s gr
-% Polyline
-n 3600 4800 m 3525 4950 l 3675 4950 l
- cp gs col0 s gr
-% Polyline
-n 3600 3600 m 3560 3675 l 3600 3750 l 3640 3675 l
- cp gs col0 s gr
-% Polyline
-n 1050 3900 m 1010 3975 l 1050 4050 l 1090 3975 l
- cp gs col0 s gr
-% Polyline
-gs clippath
-2715 4530 m 2715 4470 l 2564 4470 l 2684 4500 l 2564 4530 l cp
-eoclip
-n 1050 4050 m 1050 4500 l
- 2700 4500 l gs col0 s gr gr
-
-% arrowhead
-n 2564 4530 m 2684 4500 l 2564 4470 l 2564 4530 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-3570 4215 m 3630 4215 l 3630 4064 l 3600 4184 l 3570 4064 l cp
-eoclip
-n 3600 3750 m
- 3600 4200 l gs col0 s gr gr
-
-% arrowhead
-n 3570 4064 m 3600 4184 l 3630 4064 l 3570 4064 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
- [60] 0 sd
-n 3600 3000 m
- 3600 2700 l gs col0 s gr [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/scanner.svg b/doc/python10/scanner.svg
new file mode 100644
index 0000000..6fcb0e3
--- /dev/null
+++ b/doc/python10/scanner.svg
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(0.07472826,0,0,0.07472826,105.97826,207.29425)"
+ id="g3657"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="5400"
+ id="rect3659"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="4200"
+ id="rect3661"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="2700"
+ y="3000"
+ id="rect3663"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="5100"
+ y="5400"
+ id="rect3665"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="300"
+ y="5400"
+ id="rect3667"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="600"
+ y="3300"
+ id="rect3669"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3671"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1200,5400 1200,5100 6000,5100 6000,5400 " />
+ <polyline
+ id="polyline3673"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3600,4950 3600,5400 " />
+ <polygon
+ points="3600,4800 3600,4800 3525,4950 3675,4950 "
+ id="polygon3675"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="3640,3675 3600,3600 3600,3600 3560,3675 3600,3750 "
+ id="polygon3677"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="1090,3975 1050,3900 1050,3900 1010,3975 1050,4050 "
+ id="polygon3679"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3681"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="1050,4050 1050,4500 2580,4500 " />
+ <polygon
+ points="2579,4530 2579,4530 2699,4500 2579,4470 "
+ id="polygon3683"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3685"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3600,3750 3600,4080 " />
+ <polygon
+ points="3570,4079 3570,4079 3600,4199 3630,4079 "
+ id="polygon3687"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3689"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="3600,3000 3600,2700 " />
+ <text
+ x="3000"
+ y="5775"
+ id="text3691"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">ProgScanner</text>
+ <text
+ x="3225"
+ y="4575"
+ id="text3693"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Scanner</text>
+ <text
+ x="2925"
+ y="3375"
+ id="text3695"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Environment</text>
+ <text
+ x="5400"
+ y="5775"
+ id="text3697"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">JavaScanner</text>
+ <text
+ x="750"
+ y="5775"
+ id="text3699"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">CScanner</text>
+ <text
+ x="825"
+ y="3675"
+ id="text3701"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node</text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/python10/scons.mod b/doc/python10/scons.mod
deleted file mode 100644
index c1bd439..0000000
--- a/doc/python10/scons.mod
+++ /dev/null
@@ -1,428 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- An SCons-specific DTD module, for use with SCons DocBook
- documentation, that contains names, phrases, acronyms, etc. used
- throughout the SCons documentation.
-
--->
-
-
-
-<!--
-
- Other applications that we reference.
-
--->
-
-<!ENTITY Aegis "<application>Aegis</application>">
-<!ENTITY Ant "<application>Ant</application>">
-<!ENTITY Autoconf "<application>Autoconf</application>">
-<!ENTITY Automake "<application>Automake</application>">
-<!ENTITY cc "<application>cc</application>">
-<!ENTITY Cons "<application>Cons</application>">
-<!ENTITY cp "<application>cp</application>">
-<!ENTITY csh "<application>csh</application>">
-<!ENTITY gcc "<application>gcc</application>">
-<!ENTITY Jam "<application>Jam</application>">
-<!ENTITY jar "<application>jar</application>">
-<!ENTITY javac "<application>javac</application>">
-<!ENTITY javah "<application>javah</application>">
-<!ENTITY Make "<application>Make</application>">
-<!ENTITY Makepp "<application>Make++</application>">
-<!ENTITY Python "<application>Python</application>">
-<!ENTITY ranlib "<application>ranlib</application>">
-<!ENTITY rmic "<application>rmic</application>">
-<!ENTITY SCons "<application>SCons</application>">
-<!ENTITY scons "<application>scons</application>">
-<!ENTITY ScCons "<application>ScCons</application>">
-<!ENTITY tar "<application>tar</application>">
-<!ENTITY touch "<application>touch</application>">
-<!ENTITY zip "<application>zip</application>">
-
-
-<!--
-
- Classes.
-
--->
-
-<!ENTITY Action "<classname>Action</classname>">
-<!ENTITY ActionBase "<classname>ActionBase</classname>">
-<!ENTITY CommandAction "<classname>CommandAction</classname>">
-<!ENTITY FunctionAction "<classname>FunctionAction</classname>">
-<!ENTITY ListAction "<classname>ListAction</classname>">
-<!ENTITY Builder "<classname>Builder</classname>">
-<!ENTITY BuilderBase "<classname>BuilderBase</classname>">
-<!ENTITY CompositeBuilder "<classname>CompositeBuilder</classname>">
-<!ENTITY MultiStepBuilder "<classname>MultiStepBuilder</classname>">
-<!ENTITY Job "<classname>Job</classname>">
-<!ENTITY Jobs "<classname>Jobs</classname>">
-<!ENTITY Serial "<classname>Serial</classname>">
-<!ENTITY Parallel "<classname>Parallel</classname>">
-<!ENTITY Node "<classname>Node</classname>">
-<!ENTITY Node_FS "<classname>Node.FS</classname>">
-<!ENTITY Scanner "<classname>Scanner</classname>">
-<!ENTITY Sig "<classname>Sig</classname>">
-<!ENTITY Signature "<classname>Signature</classname>">
-<!ENTITY Taskmaster "<classname>Taskmaster</classname>">
-<!ENTITY TimeStamp "<classname>TimeStamp</classname>">
-<!ENTITY Walker "<classname>Walker</classname>">
-<!ENTITY Wrapper "<classname>Wrapper</classname>">
-
-
-
-<!--
-
- Options, command-line.
-
--->
-
-<!ENTITY debug-explain "<literal>--debug=explain</literal>">
-<!ENTITY implicit-cache "<literal>--implicit-cache</literal>">
-<!ENTITY implicit-deps-changed "<literal>--implicit-deps-changed</literal>">
-<!ENTITY implicit-deps-unchanged "<literal>--implicit-deps-unchanged</literal>">
-<!ENTITY Q "<literal>-Q</literal>">
-
-<!--
-
- Options, SConscript-settable.
-
--->
-
-<!ENTITY implicit_cache "<literal>implicit_cache</literal>">
-<!ENTITY implicit_deps_changed "<literal>implicit_deps_changed</literal>">
-<!ENTITY implicit_deps_unchanged "<literal>implicit_deps_unchanged</literal>">
-
-
-
-<!--
-
- File and directory names.
-
--->
-
-<!ENTITY build "<filename>build</filename>">
-<!ENTITY Makefile "<filename>Makefile</filename>">
-<!ENTITY Makefiles "<filename>Makefiles</filename>">
-<!ENTITY SConscript "<filename>SConscript</filename>">
-<!ENTITY SConstruct "<filename>SConstruct</filename>">
-<!ENTITY Sconstruct "<filename>Sconstruct</filename>">
-<!ENTITY sconstruct "<filename>sconstruct</filename>">
-<!ENTITY sconsign "<filename>.sconsign</filename>">
-<!ENTITY src "<filename>src</filename>">
-
-
-
-<!--
-
- Methods and functions. This includes functions from both
- the Build Engine and the Native Python Interface.
-
--->
-
-<!ENTITY Add "<function>Add</function>">
-<!ENTITY AddOptions "<function>AddOptions</function>">
-<!ENTITY Alias "<function>Alias</function>">
-<!ENTITY Aliases "<function>Aliases</function>">
-<!ENTITY Append "<function>Append</function>">
-<!ENTITY BoolOption "<function>BoolOption</function>">
-<!ENTITY Build "<function>Build</function>">
-<!ENTITY CacheDir "<function>CacheDir</function>">
-<!ENTITY Clean "<function>Clean</function>">
-<!ENTITY Clone "<function>Clone</function>">
-<!ENTITY Command "<function>Command</function>">
-<!ENTITY Configure "<function>Configure</function>">
-<!ENTITY Copy "<function>Copy</function>">
-<!ENTITY Default "<function>Default</function>">
-<!ENTITY DefaultRules "<function>DefaultRules</function>">
-<!ENTITY Depends "<function>Depends</function>">
-<!ENTITY Dir "<function>Dir</function>">
-<!ENTITY Entry "<function>Entry</function>">
-<!ENTITY EnumOption "<function>EnumOption</function>">
-<!ENTITY Environment "<function>Environment</function>">
-<!ENTITY Export "<function>Export</function>">
-<!ENTITY File "<function>File</function>">
-<!ENTITY Finish "<function>Finish</function>">
-<!ENTITY GenerateHelpText "<function>GenerateHelpText</function>">
-<!ENTITY Help "<function>Help</function>">
-<!ENTITY Ignore "<function>Ignore</function>">
-<!ENTITY Import "<function>Import</function>">
-<!ENTITY Install "<function>Install</function>">
-<!ENTITY InstallAs "<function>InstallAs</function>">
-<!ENTITY Link "<function>Link</function>">
-<!ENTITY ListOption "<function>ListOption</function>">
-<!ENTITY Local "<function>Local</function>">
-<!ENTITY Module "<function>Module</function>">
-<!ENTITY Objects "<function>Objects</function>">
-<!ENTITY Options "<function>Options</function>">
-<!ENTITY PackageOption "<function>PackageOption</function>">
-<!ENTITY PathOption "<function>PathOption</function>">
-<!ENTITY Precious "<function>Precious</function>">
-<!ENTITY Prepend "<function>Prepend</function>">
-<!ENTITY Replace "<function>Replace</function>">
-<!ENTITY Repository "<function>Repository</function>">
-<!ENTITY Return "<function>Return</function>">
-<!ENTITY RuleSet "<function>RuleSet</function>">
-<!ENTITY Salt "<function>Salt</function>">
-<!ENTITY SetBuildSignatureType "<function>SetBuildSignatureType</function>">
-<!ENTITY SetContentSignatureType "<function>SetContentSignatureType</function>">
-<!ENTITY SourceSignature "<function>SourceSignature</function>">
-<!ENTITY SourceSignatures "<function>SourceSignatures</function>">
-<!ENTITY Split "<function>Split</function>">
-<!ENTITY TargetSignatures "<function>TargetSignatures</function>">
-<!ENTITY Task "<function>Task</function>">
-
-<!-- Environment methods -->
-<!ENTITY subst "<function>subst</function>">
-
-<!-- Configure context functions -->
-<!ENTITY Message "<function>Message</function>">
-<!ENTITY Result "<function>Result</function>">
-<!ENTITY CheckCHeader "<function>CheckCHeader</function>">
-<!ENTITY CheckCXXHeader "<function>CheckCXXHeader</function>">
-<!ENTITY CheckFunc "<function>CheckFunc</function>">
-<!ENTITY CheckHeader "<function>CheckHeader</function>">
-<!ENTITY CheckLib "<function>CheckLib</function>">
-<!ENTITY CheckLibWithHeader "<function>CheckLibWithHeader</function>">
-<!ENTITY CheckType "<function>CheckType</function>">
-<!ENTITY TryAction "<function>TryAction</function>">
-<!ENTITY TryBuild "<function>TryBuild</function>">
-<!ENTITY TryCompile "<function>TryCompile</function>">
-<!ENTITY TryLink "<function>TryLink</function>">
-<!ENTITY TryRun "<function>TryRun</function>">
-
-<!-- Python functions -->
-<!ENTITY str "<function>str</function>">
-<!ENTITY zipfile "<function>zipfile</function>">
-
-<!-- Obsolete, but referenced in old documents. -->
-<!ENTITY Cache "<function>Cache</function>">
-
-
-
-<!--
-
- Global variables.
-
--->
-
-<!ENTITY ARGUMENTS "<varname>ARGUMENTS</varname>">
-<!ENTITY BUILD_TARGETS "<varname>BUILD_TARGETS</varname>">
-<!ENTITY COMMAND_LINE_TARGETS "<varname>COMMAND_LINE_TARGETS</varname>">
-<!ENTITY DEFAULT_TARGETS "<varname>DEFAULT_TARGETS</varname>">
-
-
-
-<!--
-
- Construction variables.
-
--->
-
-<!ENTITY BUILDERMAP "<varname>BUILDERMAP</varname>">
-<!ENTITY BUILDERS "<varname>BUILDERS</varname>">
-<!ENTITY CC "<varname>CC</varname>">
-<!ENTITY CCFLAGS "<varname>CCFLAGS</varname>">
-<!ENTITY CCCOM "<varname>CCCOM</varname>">
-<!ENTITY COLOR "<varname>COLOR</varname>">
-<!ENTITY COLORS "<varname>COLORS</varname>">
-<!ENTITY CONFIG "<varname>CONFIG</varname>">
-<!ENTITY CPPDEFINES "<varname>CPPDEFINES</varname>">
-<!ENTITY ENV "<varname>ENV</varname>">
-<!ENTITY JAVACLASSDIR "<varname>JAVACLASSDIR</varname>">
-<!ENTITY LIBDIRPREFIX "<varname>LIBDIRPREFIX</varname>">
-<!ENTITY LIBDIRSUFFIX "<varname>LIBDIRSUFFIX</varname>">
-<!ENTITY LIBLINKPREFIX "<varname>LIBLINKPREFIX</varname>">
-<!ENTITY LIBLINKSUFFIX "<varname>LIBLINKSUFFIX</varname>">
-<!ENTITY LIBPATH "<varname>LIBPATH</varname>">
-<!ENTITY LIBS "<varname>LIBS</varname>">
-<!ENTITY LINK "<varname>LINK</varname>">
-<!ENTITY LINKCOM "<varname>LINKCOM</varname>">
-<!ENTITY LINKFLAGS "<varname>LINKFLAGS</varname>">
-<!ENTITY RELEASE "<varname>RELEASE</varname>">
-<!ENTITY RELEASE_BUILD "<varname>RELEASE_BUILD</varname>">
-<!ENTITY SCANNERMAP "<varname>SCANNERMAP</varname>">
-<!ENTITY SCANNERS "<varname>SCANNERS</varname>">
-<!ENTITY TARFLAGS "<varname>TARFLAGS</varname>">
-<!ENTITY TARSUFFIX "<varname>TARSUFFIX</varname>">
-
-
-
-<!--
-
- Environment variables.
-
--->
-
-<!ENTITY PATH "<varname>PATH</varname>">
-<!ENTITY PYTHONPATH "<varname>PYTHONPATH</varname>">
-<!ENTITY SCONSFLAGS "<varname>SCONSFLAGS</varname>">
-
-
-
-<!--
-
- Function and method arguments.
-
--->
-
-<!ENTITY allowed_values "<varname>allowed_values</varname>">
-<!ENTITY build_dir "<varname>build_dir</varname>">
-<!ENTITY map "<varname>map</varname>">
-<!ENTITY ignorecase "<varname>ignorecase</varname>">
-<!ENTITY options "<varname>options</varname>">
-<!ENTITY exports "<varname>exports</varname>">
-<!ENTITY source "<varname>source</varname>">
-<!ENTITY target "<varname>target</varname>">
-
-
-
-<!--
-
- Values of function and method arguments.
-
--->
-
-<!ENTITY all "<literal>all</literal>">
-<!ENTITY none "<literal>none</literal>">
-
-
-
-<!--
-
- Builder and Scanner objects.
-
--->
-
-<!ENTITY BuildDir "<function>BuildDir</function>">
-<!ENTITY CFile "<function>CFile</function>">
-<!ENTITY CXXFile "<function>CXXFile</function>">
-<!ENTITY DVI "<function>DVI</function>">
-<!ENTITY Jar "<function>Jar</function>">
-<!ENTITY Java "<function>Java</function>">
-<!ENTITY JavaH "<function>JavaH</function>">
-<!ENTITY Library "<function>Library</function>">
-<!ENTITY Object "<function>Object</function>">
-<!ENTITY PCH "<function>PCH</function>">
-<!ENTITY PDF "<function>PDF</function>">
-<!ENTITY PostScript "<function>PostScript</function>">
-<!ENTITY Program "<function>Program</function>">
-<!ENTITY RES "<function>RES</function>">
-<!ENTITY RMIC "<function>RMIC</function>">
-<!ENTITY SharedLibrary "<function>SharedLibrary</function>">
-<!ENTITY SharedObject "<function>SharedObject</function>">
-<!ENTITY StaticLibrary "<function>StaticLibrary</function>">
-<!ENTITY StaticObject "<function>StaticObject</function>">
-<!ENTITY Tar "<function>Tar</function>">
-<!ENTITY Zip "<function>Zip</function>">
-
-<!-- Obsolete, but referenced in old documents. -->
-<!ENTITY MakeBuilder "<function>Make</function>">
-
-
-
-<!--
-
- Terms. Define both singular and plural forms in various
- case-sensitive combinations for use in titles, in-line, etc.
-
--->
-
-<!ENTITY buildfunc "<literal>builder function</literal>">
-<!ENTITY builder_method "<literal>builder method</literal>">
-
-<!ENTITY Configure_Contexts "<literal>Configure Contexts</literal>">
-<!ENTITY configure_context "<literal>configure context</literal>">
-
-<!ENTITY ConsEnv "<literal>Construction Environment</literal>">
-<!ENTITY ConsEnvs "<literal>Construction Environments</literal>">
-<!ENTITY Consenv "<literal>Construction environment</literal>">
-<!ENTITY Consenvs "<literal>Construction environments</literal>">
-<!ENTITY consenv "<literal>construction environment</literal>">
-<!ENTITY consenvs "<literal>construction environments</literal>">
-
-<!ENTITY ConsVar "<literal>Construction Variable</literal>">
-<!ENTITY ConsVars "<literal>Construction Variables</literal>">
-<!ENTITY Consvar "<literal>Construction variable</literal>">
-<!ENTITY Consvars "<literal>Construction variables</literal>">
-<!ENTITY consvar "<literal>construction variable</literal>">
-<!ENTITY consvars "<literal>construction variables</literal>">
-
-<!ENTITY CPPPATH "<literal>CPPPATH</literal>">
-
-<!ENTITY Dictionary "<literal>Dictionary</literal>">
-
-<!ENTITY Emitter "<literal>Emitter</literal>">
-<!ENTITY emitter "<literal>emitter</literal>">
-<!ENTITY Generator "<literal>Generator</literal>">
-<!ENTITY generator "<literal>generator</literal>">
-
-<!ENTITY Nodes "<literal>Nodes</literal>">
-
-<!ENTITY signature "<literal>signature</literal>">
-<!ENTITY buildsignature "<literal>build signature</literal>">
-
-<!ENTITY true "<literal>true</literal>">
-<!ENTITY false "<literal>false</literal>">
-
-<!ENTITY typedef "<literal>typedef</literal>">
-
-<!--
-
- File and program names used in examples.
-
--->
-
-<!ENTITY bar "<application>bar</application>">
-<!ENTITY common1_c "<filename>common1.c</filename>">
-<!ENTITY common2_c "<filename>common2.c</filename>">
-<!ENTITY custom_py "<filename>custom.py</filename>">
-<!ENTITY goodbye "<application>goodbye</application>">
-<!ENTITY goodbye_o "<filename>goodbye.o</filename>">
-<!ENTITY goodbye_obj "<filename>goodbye.obj</filename>">
-<!ENTITY file_dll "<filename>file.dll</filename>">
-<!ENTITY file_in "<filename>file.in</filename>">
-<!ENTITY file_lib "<filename>file.lib</filename>">
-<!ENTITY file_o "<filename>file.o</filename>">
-<!ENTITY file_obj "<filename>file.obj</filename>">
-<!ENTITY file_out "<filename>file.out</filename>">
-<!ENTITY foo "<application>foo</application>">
-<!ENTITY foo_o "<filename>foo.o</filename>">
-<!ENTITY foo_obj "<filename>foo.obj</filename>">
-<!ENTITY hello "<application>hello</application>">
-<!ENTITY hello_c "<filename>hello.c</filename>">
-<!ENTITY hello_exe "<filename>hello.exe</filename>">
-<!ENTITY hello_h "<filename>hello.h</filename>">
-<!ENTITY hello_o "<filename>hello.o</filename>">
-<!ENTITY hello_obj "<filename>hello.obj</filename>">
-<!ENTITY libfile_a "<filename>libfile_a</filename>">
-<!ENTITY libfile_so "<filename>libfile_so</filename>">
-<!ENTITY new_hello "<application>new_hello</application>">
-<!ENTITY new_hello_exe "<application>new_hello.exe</application>">
-<!ENTITY prog "<filename>prog</filename>">
-<!ENTITY prog1 "<filename>prog1</filename>">
-<!ENTITY prog2 "<filename>prog2</filename>">
-<!ENTITY prog_c "<filename>prog.c</filename>">
-<!ENTITY prog_exe "<filename>prog.exe</filename>">
-<!ENTITY stdio_h "<filename>stdio.h</filename>">
-
-<!--
-
- Punctuation.
-
--->
-
-<!ENTITY plus "<literal>+</literal>">
-<!ENTITY hash "<literal>#</literal>">
-
-<!--
-
- Mailing lists
-
--->
-
-<!ENTITY scons-announce "<literal>announce@scons.tigris.org</literal>">
-<!ENTITY scons-devel "<literal>dev@scons.tigris.org</literal>">
-<!ENTITY scons-users "<literal>users@scons.tigris.org</literal>">
diff --git a/doc/python10/sig.eps b/doc/python10/sig.eps
deleted file mode 100644
index 26aabaa..0000000
--- a/doc/python10/sig.eps
+++ /dev/null
@@ -1,147 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/sig.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan 2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 308 128
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 128 moveto 0 0 lineto 308 0 lineto 308 128 lineto closepath clip newpath
--71.3 288.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 1200 3000 m 2700 3000 l 2700 3600 l 1200 3600 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-1950 3375 m
-gs 1 -1 sc (Taskmaster) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 3300 4200 m 4500 4200 l 4500 4800 l 3300 4800 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-3900 4575 m
-gs 1 -1 sc (MD5) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 5100 4200 m 6300 4200 l 6300 4800 l 5100 4800 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-5700 4575 m
-gs 1 -1 sc (TStamp) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 4200 3000 m 5400 3000 l 5400 3600 l 4200 3600 l
- cp gs col0 s gr
-/Times-Roman ff 240.00 scf sf
-4800 3375 m
-gs 1 -1 sc (Sig) dup sw pop 2 div neg 0 rm col0 sh gr
-% Polyline
-n 2700 3300 m 2775 3340 l 2850 3300 l 2775 3260 l
- cp gs col0 s gr
-% Polyline
-n 4800 3600 m 4725 3750 l 4875 3750 l
- cp gs col0 s gr
-% Polyline
-n 3900 4200 m 3900 3900 l 5700 3900 l
- 5700 4200 l gs col0 s gr
-% Polyline
-n 4800 3750 m
- 4800 3900 l gs col0 s gr
-% Polyline
-gs clippath
-4215 3330 m 4215 3270 l 4064 3270 l 4184 3300 l 4064 3330 l cp
-eoclip
-n 2850 3300 m
- 4200 3300 l gs col0 s gr gr
-
-% arrowhead
-n 4064 3330 m 4184 3300 l 4064 3270 l 4064 3330 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
- [60] 0 sd
-n 1950 3000 m
- 1950 2700 l gs col0 s gr [] 0 sd
-% Polyline
- [60] 0 sd
-n 4800 3000 m
- 4800 2700 l gs col0 s gr [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/sig.svg b/doc/python10/sig.svg
new file mode 100644
index 0000000..09e2719
--- /dev/null
+++ b/doc/python10/sig.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(0.07552694,0,0,0.07552694,91.773975,249.13616)"
+ id="g3772"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="1200"
+ y="3000"
+ id="rect3774"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="3300"
+ y="4200"
+ id="rect3776"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="5100"
+ y="4200"
+ id="rect3778"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="4200"
+ y="3000"
+ id="rect3780"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="2775,3260 2700,3300 2700,3300 2775,3340 2850,3300 "
+ id="polygon3782"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4800,3600 4800,3600 4725,3750 4875,3750 "
+ id="polygon3784"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ id="polyline3786"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="3900,4200 3900,3900 5700,3900 5700,4200 " />
+ <polyline
+ id="polyline3788"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="4800,3750 4800,3900 " />
+ <polyline
+ id="polyline3790"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ points="2850,3300 4080,3300 " />
+ <polygon
+ points="4079,3330 4079,3330 4199,3300 4079,3270 "
+ id="polygon3792"
+ style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+ <polyline
+ id="polyline3794"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="1950,3000 1950,2700 " />
+ <polyline
+ id="polyline3796"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ points="4800,3000 4800,2700 " />
+ <text
+ x="1950"
+ y="3375"
+ id="text3798"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Taskmaster</text>
+ <text
+ x="3900"
+ y="4575"
+ id="text3800"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">MD5</text>
+ <text
+ x="5700"
+ y="4575"
+ id="text3802"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">TStamp</text>
+ <text
+ x="4800"
+ y="3375"
+ id="text3804"
+ xml:space="preserve"
+ style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Sig</text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/python10/summary.xml b/doc/python10/summary.xml
new file mode 100644
index 0000000..1b09f97
--- /dev/null
+++ b/doc/python10/summary.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-summary"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Summary</title>
+
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+ <para>
+
+ This paper has introduced &SCons;, a next-generation build tool
+ with a modular, embeddable architecture and a direct Python
+ interface. &SCons; has a global view of the dependencies in a source
+ tree, uses MD5 signatures to decide if derived files are out of date,
+ and automatically scans files for dependencies, all of which make &SCons;
+ builds exceptionally reliable. The &SCons; development methodology has
+ been described, notable for its emphasis on automated regression
+ testing to ensure a robust and reliable tool from day one. Several
+ future directions for &SCons; have also been discussed.
+
+ </para>
+
+</section>
diff --git a/doc/reference/Alias.xml b/doc/reference/Alias.xml
index b87967d..652ad56 100644
--- a/doc/reference/Alias.xml
+++ b/doc/reference/Alias.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-Alias"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The Alias Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/CFile.xml b/doc/reference/CFile.xml
index f76c390..3c0b05b 100644
--- a/doc/reference/CFile.xml
+++ b/doc/reference/CFile.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-CFile"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The CFile Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/CXXFile.xml b/doc/reference/CXXFile.xml
index c1c038e..e90465a 100644
--- a/doc/reference/CXXFile.xml
+++ b/doc/reference/CXXFile.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-CXXFile"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The CXXFile Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/Command.xml b/doc/reference/Command.xml
index abb3a58..e3fbc00 100644
--- a/doc/reference/Command.xml
+++ b/doc/reference/Command.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-Command"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The Command Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -71,3 +83,5 @@ F<foo.h> and F<foo.c>.
</para>
</section>
+
+</section>
diff --git a/doc/reference/Install.xml b/doc/reference/Install.xml
index 2d06e3b..7a71f23 100644
--- a/doc/reference/Install.xml
+++ b/doc/reference/Install.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-Install"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The Install Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/InstallAs.xml b/doc/reference/InstallAs.xml
index ed8cb78..bdd7406 100644
--- a/doc/reference/InstallAs.xml
+++ b/doc/reference/InstallAs.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-InstallAs"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The InstallAs Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/Library.xml b/doc/reference/Library.xml
index 19a3e96..b005ff7 100644
--- a/doc/reference/Library.xml
+++ b/doc/reference/Library.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-Library"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The Library Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -67,16 +79,16 @@ be generated (the rest will disappear!).
<title>Linking With a Library</title>
<programlisting>
- env = Environment(CC = 'gcc',
- LIBS = 'world')
- env.Program('hello.c')
+env = Environment(CC = 'gcc',
+ LIBS = 'world')
+env.Program('hello.c')
</programlisting>
<literallayout>
- % <userinput>scons</userinput>
- gcc -c hello.c -o hello.o
- gcc -c world.c -o world.o
- gcc -o hello hello.o -lworld
+% <userinput>scons</userinput>
+gcc -c hello.c -o hello.o
+gcc -c world.c -o world.o
+gcc -o hello hello.o -lworld
</literallayout>
</section>
@@ -85,20 +97,20 @@ be generated (the rest will disappear!).
<title>Creating a Library</title>
<programlisting>
- env = Environment(CC = 'gcc',
- LIBS = 'world')
- env.Program('hello.c')
- env.Library('world.c')
+env = Environment(CC = 'gcc',
+ LIBS = 'world')
+env.Program('hello.c')
+env.Library('world.c')
</programlisting>
<literallayout>
- % <userinput>scons</userinput>
- gcc -c hello.c -o hello.o
- gcc -c world.c -o world.o
- ar r libworld.a world.o
- ar: creating libworld.a
- ranlib libworld.a
- gcc -o hello hello.o libworld.a
+% <userinput>scons</userinput>
+gcc -c hello.c -o hello.o
+gcc -c world.c -o world.o
+ar r libworld.a world.o
+ar: creating libworld.a
+ranlib libworld.a
+gcc -o hello hello.o libworld.a
</literallayout>
</section>
@@ -150,3 +162,5 @@ is linked, and, of course, C<gcc> will be used to compile both modules:
</para>
</section>
+
+</section>
diff --git a/doc/reference/MANIFEST b/doc/reference/MANIFEST
index 438aada..921a4de 100644
--- a/doc/reference/MANIFEST
+++ b/doc/reference/MANIFEST
@@ -1,3 +1,6 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
Alias.xml
CFile.xml
CXXFile.xml
@@ -19,3 +22,10 @@ copyright.xml
errors.xml
main.xml
preface.xml
+*.xsl
+scons.css
+SConstruct
+titlepage/bricks.jpg
+titlepage/mapnik_final_colors.svg
+titlepage/SCons_path.svg
+titlepage/SConsBuildBricks_path.svg
diff --git a/doc/reference/Object.xml b/doc/reference/Object.xml
index 9e887d8..1de1c7b 100644
--- a/doc/reference/Object.xml
+++ b/doc/reference/Object.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-Object"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The Object Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -69,3 +81,5 @@ returns the list of object filenames.
</para>
</section>
+
+</section>
diff --git a/doc/reference/PCH.xml b/doc/reference/PCH.xml
index b2a4d75..c5392a7 100644
--- a/doc/reference/PCH.xml
+++ b/doc/reference/PCH.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-PCH"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The PCH Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/PDF.xml b/doc/reference/PDF.xml
index b3a25dc..51f33a6 100644
--- a/doc/reference/PDF.xml
+++ b/doc/reference/PDF.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-PDF"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The PDF Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/PostScript.xml b/doc/reference/PostScript.xml
index f5a6579..b75e62d 100644
--- a/doc/reference/PostScript.xml
+++ b/doc/reference/PostScript.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-PostScript"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The PDF Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/Program.xml b/doc/reference/Program.xml
index 30f90d2..81f18de 100644
--- a/doc/reference/Program.xml
+++ b/doc/reference/Program.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-Program"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The Program Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -75,3 +87,5 @@ be built before the command is linked.
</para>
</section>
+
+</section>
diff --git a/doc/reference/RES.xml b/doc/reference/RES.xml
index 15c0aea..0af508e 100644
--- a/doc/reference/RES.xml
+++ b/doc/reference/RES.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-RES"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The RES Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/SConstruct b/doc/reference/SConstruct
new file mode 100644
index 0000000..6fb5c05
--- /dev/null
+++ b/doc/reference/SConstruct
@@ -0,0 +1,50 @@
+#
+# SConstruct file for building SCons documentation.
+#
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+
+env = Environment(ENV={'PATH' : os.environ['PATH']},
+ tools=['docbook'],
+ toolpath=['../../src/engine/SCons/Tool'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_HTMLCHUNKED='chtml.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+
+has_pdf = False
+if (env.WhereIs('fop') or
+ env.WhereIs('xep')):
+ has_pdf = True
+
+#
+# Create document
+#
+env.DocbookXInclude('reference_xi.xml', 'main.xml')
+env.DocbookXslt('reference.xml', 'reference_xi.xml',
+ xsl='../xslt/to_docbook.xslt')
+env.DocbookHtml('index.html','reference.xml')
+env.DocbookHtmlChunked('index.html', 'reference.xml', base_dir='scons-reference/')
+if has_pdf:
+ env.DocbookPdf('scons-reference.pdf','reference.xml')
diff --git a/doc/reference/SharedLibrary.xml b/doc/reference/SharedLibrary.xml
index 603dab1..58fc8bd 100644
--- a/doc/reference/SharedLibrary.xml
+++ b/doc/reference/SharedLibrary.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-SharedLibrary"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The SharedLibrary Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/SharedObject.xml b/doc/reference/SharedObject.xml
index 0860769..dcb97ad 100644
--- a/doc/reference/SharedObject.xml
+++ b/doc/reference/SharedObject.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-SharedObject"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The SharedObject Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/StaticLibrary.xml b/doc/reference/StaticLibrary.xml
index ea7ae5b..daa9520 100644
--- a/doc/reference/StaticLibrary.xml
+++ b/doc/reference/StaticLibrary.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-StaticLibrary"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The StaticLibrary Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/StaticObject.xml b/doc/reference/StaticObject.xml
index ff8dae8..6d83c71 100644
--- a/doc/reference/StaticObject.xml
+++ b/doc/reference/StaticObject.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<section id="sect-StaticObject"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>The StaticObject Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</section>
diff --git a/doc/reference/chtml.xsl b/doc/reference/chtml.xsl
new file mode 100644
index 0000000..500b029
--- /dev/null
+++ b/doc/reference/chtml.xsl
@@ -0,0 +1,56 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl"/>
+
+<xsl:param name="base.dir" select="'scons-reference/'"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+</xsl:stylesheet>
+
diff --git a/doc/reference/copyright.xml b/doc/reference/copyright.xml
index 7f6059c..0f087b2 100644
--- a/doc/reference/copyright.xml
+++ b/doc/reference/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -30,3 +40,5 @@
</para>
</blockquote>
+
+</legalnotice>
diff --git a/doc/reference/errors.xml b/doc/reference/errors.xml
index 448777f..18f0231 100644
--- a/doc/reference/errors.xml
+++ b/doc/reference/errors.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-errors"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Errors Generated by &SCons;</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/user/builders.in b/doc/reference/html.xsl
index 0db5641..2c94958 100644
--- a/doc/user/builders.in
+++ b/doc/reference/html.xsl
@@ -1,57 +1,55 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<refentry id="Command">
-
-<refmeta>
-<refentrytitle>Command</refentrytitle>
-</refmeta>
-
-<methodsynopsis>
- <methodname>env.Command</methodname>
- <methodparam>foo</methodparam>
- <methodparam>bar</methodparam>
-</methodsynopsis>
-
-</refentry>
--->
-
-<para>
-
-This appendix contains descriptions of all of the
-Builders that are <emphasis>potentially</emphasis>
-available "out of the box" in this version of SCons.
-
-</para>
-
-<variablelist>
-
-&builders-gen;
-
-</variablelist>
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl"/>
+
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+</xsl:stylesheet>
+
diff --git a/doc/reference/main.xml b/doc/reference/main.xml
index ed122f6..5255628 100644
--- a/doc/reference/main.xml
+++ b/doc/reference/main.xml
@@ -1,8 +1,22 @@
<?xml version="1.0"?>
+<!DOCTYPE sconsdoc [
+
+ <!ENTITY % version SYSTEM "../version.xml">
+ %version;
+
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+]>
+
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -24,55 +38,18 @@
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-->
-
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
-
- <!ENTITY % version SYSTEM "../version.xml">
- %version;
-
- <!ENTITY % scons SYSTEM "../scons.mod">
- %scons;
-
- <!-- Builders -->
- <!ENTITY Alias_file SYSTEM "Alias.xml">
- <!ENTITY CFile_file SYSTEM "CFile.xml">
- <!ENTITY CXXFile_file SYSTEM "CXXFile.xml">
- <!ENTITY Command_file SYSTEM "Command.xml">
- <!ENTITY Install_file SYSTEM "Install.xml">
- <!ENTITY InstallAs_file SYSTEM "InstallAs.xml">
- <!ENTITY Library_file SYSTEM "Library.xml">
- <!ENTITY Object_file SYSTEM "Object.xml">
- <!ENTITY PCH_file SYSTEM "PCH.xml">
- <!ENTITY PDF_file SYSTEM "PDF.xml">
- <!ENTITY PostScript_file SYSTEM "PostScript.xml">
- <!ENTITY Program_file SYSTEM "Program.xml">
- <!ENTITY RES_file SYSTEM "RES.xml">
- <!ENTITY SharedLibrary_file SYSTEM "SharedLibrary.xml">
- <!ENTITY SharedObject_file SYSTEM "SharedObject.xml">
- <!ENTITY StaticLibrary_file SYSTEM "StaticLibrary.xml">
- <!ENTITY StaticObject_file SYSTEM "StaticObject.xml">
-
- <!-- Construction Variables -->
-
- <!ENTITY copyright SYSTEM "copyright.xml">
- <!ENTITY errors SYSTEM "errors.xml">
- <!ENTITY preface SYSTEM "preface.xml">
-
-]>
-
-<book>
+
<bookinfo>
- <title>SCons Reference Manual &buildversion;</title>
+ <title>SCons &buildversion;</title>
+ <subtitle>Reference Manual</subtitle>
<author>
<firstname>Steven</firstname>
<surname>Knight</surname>
</author>
- <edition>Revision &buildrevision; (&builddate;)</edition>
-
+ <corpauthor>Steven Knight</corpauthor>
+
<pubdate>2003</pubdate>
<copyright>
@@ -80,128 +57,53 @@
<holder>Steven Knight</holder>
</copyright>
- <legalnotice>
- &copyright;
- </legalnotice>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
<releaseinfo>version &buildversion;</releaseinfo>
</bookinfo>
- <chapter id="chap-preface">
- <title>Preface</title>
- &preface;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="preface.xml"/>
<chapter id="chap-builders">
<title>Builder Reference</title>
- <section id="sect-Alias">
- <title>The Alias Builder</title>
- &Alias_file;
- </section>
-
- <section id="sect-CFile">
- <title>The CFile Builder</title>
- &CFile_file;
- </section>
-
- <section id="sect-Command">
- <title>The Command Builder</title>
- &Command_file;
- </section>
-
- <section id="sect-CXXFile">
- <title>The CXXFile Builder</title>
- &CXXFile_file;
- </section>
-
- <section id="sect-Install">
- <title>The Install Builder</title>
- &Install_file;
- </section>
-
- <section id="sect-InstallAs">
- <title>The InstallAs Builder</title>
- &InstallAs_file;
- </section>
-
- <section id="sect-Library">
- <title>The Library Builder</title>
- &Library_file;
- </section>
-
- <section id="sect-Object">
- <title>The Object Builder</title>
- &Object_file;
- </section>
-
- <section id="sect-PCH">
- <title>The PCH Builder</title>
- &PCH_file;
- </section>
-
- <section id="sect-PDF">
- <title>The PDF Builder</title>
- &PDF_file;
- </section>
-
- <section id="sect-PostScript">
- <title>The PDF Builder</title>
- &PostScript_file;
- </section>
-
- <section id="sect-Program">
- <title>The Program Builder</title>
- &Program_file;
- </section>
-
- <section id="sect-RES">
- <title>The RES Builder</title>
- &RES_file;
- </section>
-
- <section id="sect-SharedLibrary">
- <title>The SharedLibrary Builder</title>
- &SharedLibrary_file;
- </section>
-
- <section id="sect-SharedObject">
- <title>The SharedObject Builder</title>
- &SharedObject_file;
- </section>
-
- <section id="sect-StaticLibrary">
- <title>The StaticLibrary Builder</title>
- &StaticLibrary_file;
- </section>
-
- <section id="sect-StaticObject">
- <title>The StaticObject Builder</title>
- &StaticObject_file;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Alias.xml"/>
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="CFile.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Command.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="CXXFile.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Install.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="InstallAs.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Library.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Object.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="PCH.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="PDF.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="PostScript.xml"/>
- <chapter id="chap-variables">
- <title>&ConsVar; Reference</title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Program.xml"/>
- <section id="sect-AR">
- <title>AR</title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="RES.xml"/>
- <para>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="SharedLibrary.xml"/>
- X
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="SharedObject.xml"/>
- </para>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="StaticLibrary.xml"/>
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="StaticObject.xml"/>
</chapter>
- <appendix id="chap-errors">
- <title>Errors Generated by &SCons;</title>
- &errors;
- </appendix>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="errors.xml"/>
</book>
diff --git a/doc/reference/pdf.xsl b/doc/reference/pdf.xsl
new file mode 100644
index 0000000..c8acf1b
--- /dev/null
+++ b/doc/reference/pdf.xsl
@@ -0,0 +1,71 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl"/>
+ <xsl:include href="scons_title.xsl"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="paper.type" select="'letter'"></xsl:param>
+<xsl:param name="body.start.indent">0pt</xsl:param>
+<xsl:param name="shade.verbatim" select="1"></xsl:param>
+<xsl:param name="variablelist.term.break.after" select="1"></xsl:param>
+
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<xsl:attribute-set name="variablelist.term.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_list-presentation"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/reference/preface.xml b/doc/reference/preface.xml
index 82ea44a..6cc58d9 100644
--- a/doc/reference/preface.xml
+++ b/doc/reference/preface.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-preface"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Preface</title>
+
<!--
- Copyright (c) 2001, 2002, 2003 Steven Knight
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -83,3 +95,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/reference/scons.css b/doc/reference/scons.css
new file mode 100644
index 0000000..6941abb
--- /dev/null
+++ b/doc/reference/scons.css
@@ -0,0 +1,263 @@
+body {
+ background: #ffffff;
+ margin: 10px;
+ padding: 0;
+ font-family:palatino, georgia, verdana, arial, sans-serif;
+ }
+
+
+a {
+ color: #80572a;
+ }
+
+a:hover {
+ color: #d72816;
+ text-decoration: none;
+ }
+
+tt {
+ color: #a14447;
+ }
+
+pre {
+ background: #e0e0e0;
+ }
+
+#main {
+ border: 1px solid;
+ border-color: black;
+ background-color: white;
+ background-image: url(../images/sconsback.png);
+ background-repeat: repeat-y 50% 0;
+ background-position: right top;
+ margin: 30px auto;
+ width: 750px;
+ }
+
+#banner {
+ background-image: url(../images/scons-banner.jpg);
+ border-bottom: 1px solid;
+ height: 95px;
+ }
+
+#menu {
+ font-family: sans-serif;
+ font-size: small;
+ line-height: 0.9em;
+ float: right;
+ width: 220px;
+ clear: both;
+ margin-top: 10px;
+ }
+
+#menu li {
+ margin-bottom: 7px;
+ }
+
+#menu li li {
+ margin-bottom: 2px;
+ }
+
+#menu li.submenuitems {
+ margin-bottom: 2px;
+ }
+
+#menu a {
+ text-decoration: none;
+ }
+
+#footer {
+ border-top: 1px solid black;
+ text-align: center;
+ font-size: small;
+ color: #822;
+ margin-top: 4px;
+ background: #eee;
+ }
+
+ul.hack {
+ list-style-position:inside;
+ }
+
+ul.menuitems {
+ list-style-type: none;
+ }
+
+ul.submenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ul.subsubmenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ol.upper-roman {
+ list-style-type: upper-roman;
+ }
+
+ol.decimal {
+ list-style-type: decimal;
+ }
+
+#currentpage {
+ font-weight: bold;
+ }
+
+#bodycontent {
+ margin: 15px;
+ width: 520px;
+ font-size: small;
+ line-height: 1.5em;
+ }
+
+#bodycontent li {
+ margin-bottom: 6px;
+ list-style-type: square;
+ }
+
+#sconsdownloadtable downloadtable {
+ display: table;
+ margin-left: 5%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdownloadtable downloadrow {
+ display: table-row;
+ }
+
+#sconsdownloadtable downloadentry {
+ display: table-cell;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdownloadtable downloaddescription {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdownloadtable downloadversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#sconsdocversiontable sconsversiontable {
+ display: table;
+ margin-left: 10%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdocversiontable sconsversionrow {
+ display: table-row;
+ }
+
+#sconsdocversiontable docformat {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdocversiontable sconsversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdocversiontable docversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#osrating {
+ margin-left: 35px;
+ }
+
+
+h2 {
+ color: #272;
+ color: #c01714;
+ font-family: sans-serif;
+ font-weight: normal;
+ }
+
+h2.pagetitle {
+ font-size: xx-large;
+ }
+h3 {
+ margin-bottom: 10px;
+ }
+
+.date {
+ font-size: small;
+ color: gray;
+ }
+
+.link {
+ margin-bottom: 22px;
+ }
+
+.linkname {
+ }
+
+.linkdesc {
+ margin: 10px;
+ margin-top: 0;
+ }
+
+.quote {
+ margin-top: 20px;
+ margin-bottom: 10px;
+ background: #f8f8f8;
+ border: 1px solid;
+ border-color: #ddd;
+ }
+
+.quotetitle {
+ font-weight: bold;
+ font-size: large;
+ margin: 10px;
+ }
+
+.quotedesc {
+ margin-left: 20px;
+ margin-right: 10px;
+ margin-bottom: 15px;
+ }
+
+.quotetext {
+ margin-top: 20px;
+ margin-left: 20px;
+ margin-right: 10px;
+ font-style: italic;
+ }
+
+.quoteauthor {
+ font-size: small;
+ text-align: right;
+ margin-top: 10px;
+ margin-right: 7px;
+ }
+
+.sconslogo {
+ font-style: normal;
+ font-weight: bold;
+ color: #822;
+ }
+
+.downloadlink {
+ }
+
+.downloaddescription {
+ margin-left: 1em;
+ margin-bottom: 0.4em;
+ }
diff --git a/doc/reference/scons_title.xsl b/doc/reference/scons_title.xsl
new file mode 100644
index 0000000..52ca405
--- /dev/null
+++ b/doc/reference/scons_title.xsl
@@ -0,0 +1,6352 @@
+<?xml version="1.0"?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl; do not edit it by hand. -->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::article[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::set[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:param name="scons.inner.twidtha">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">200mm</xsl:when>
+ <xsl:otherwise>205.9mm</xsl:otherwise> <!-- 8.5in-10mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthb">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">190mm</xsl:when>
+ <xsl:otherwise>195.9mm</xsl:otherwise> <!-- 8.5in-20mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthc">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">180mm</xsl:when>
+ <xsl:otherwise>185.9mm</xsl:otherwise> <!-- 8.5in-30mm -->
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="book.titlepage.recto">
+
+ <fo:block-container height="3mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ <fo:block>
+ <fo:table table-layout="fixed" width="100%" padding="0pt" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidtha}"/>
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center">
+ <fo:block line-height="0">
+ <fo:external-graphic
+ src="url(titlepage/SConsBuildBricks_path.svg)"
+ width="{$scons.inner.twidtha}" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </fo:block></fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <fo:block-container height="4cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+<!--
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+-->
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/edition">
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/edition"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/corpauthor">
+ <fo:block-container height="15mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/mediaobject"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<!--
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24pt" space-before="18pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="15pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+-->
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="0pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsynopsisdivinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsynopsisdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsectioninfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsection.titlepage.before.recto"/>
+ <xsl:call-template name="refsection.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsection.titlepage.before.verso"/>
+ <xsl:call-template name="refsection.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsection.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect1info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect1.titlepage.before.recto"/>
+ <xsl:call-template name="refsect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect1.titlepage.before.verso"/>
+ <xsl:call-template name="refsect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect2info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect2.titlepage.before.recto"/>
+ <xsl:call-template name="refsect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect2.titlepage.before.verso"/>
+ <xsl:call-template name="refsect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect3info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect3.titlepage.before.recto"/>
+ <xsl:call-template name="refsect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect3.titlepage.before.verso"/>
+ <xsl:call-template name="refsect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+<!--
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+-->
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.recto"/>
+ <xsl:call-template name="bibliodiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.verso"/>
+ <xsl:call-template name="bibliodiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliodiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossdiv.titlepage.before.recto"/>
+ <xsl:call-template name="glossdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossdiv.titlepage.before.verso"/>
+ <xsl:call-template name="glossdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style">
+<xsl:call-template name="indexdiv.title">
+<xsl:with-param name="title" select="title"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexdivinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="indexdiv.titlepage.before.recto"/>
+ <xsl:call-template name="indexdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="indexdiv.titlepage.before.verso"/>
+ <xsl:call-template name="indexdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="indexdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="colophoninfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="colophon.titlepage.before.recto"/>
+ <xsl:call-template name="colophon.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="colophon.titlepage.before.verso"/>
+ <xsl:call-template name="colophon.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="colophon.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="qandaset.titlepage.before.recto"/>
+ <xsl:call-template name="qandaset.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="qandaset.titlepage.before.verso"/>
+ <xsl:call-template name="qandaset.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="qandaset.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'TableofContents'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.recto"/>
+ <xsl:call-template name="table.of.contents.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.verso"/>
+ <xsl:call-template name="table.of.contents.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="table.of.contents.titlepage.separator"/>
+ </fo:block>
+
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofTables'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.tables.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.tables.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.tables.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofFigures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.figures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.figures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.figures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofExamples'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.examples.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.examples.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.examples.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofEquations'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.equations.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.equations.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.equations.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofProcedures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.procedures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.procedures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.procedures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofUnknown'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.unknowns.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+
+<!-- special titlepage masters for SCons Titlepage style in books -->
+<xsl:template name="user.pagemasters">
+ <!-- title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="0mm"
+ margin-bottom="0mm"
+ margin-left="0mm"
+ margin-right="0mm">
+ <xsl:attribute name="margin-{$direction.align.start}" select="0mm"/>
+ <xsl:attribute name="margin-{$direction.align.end}" select="0mm"/>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="0mm"
+ margin-top="0mm"
+ column-gap="0mm"
+ column-count="{$column.count.titlepage}"
+ background-repeat="no-repeat"
+ background-image="url(titlepage/mapnik_final_colors.svg)"
+ background-position-vertical="center"
+ background-position-horizontal="center">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+ </xsl:if>
+
+ <!-- setup for title page(s) -->
+ <fo:page-sequence-master master-name="scons-titlepage">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-titlepage-even</xsl:when>
+ <xsl:otherwise>scons-titlepage-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+
+ <fo:page-sequence-master master-name="scons-titlepage-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="body-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
+ <xsl:otherwise>body-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+ <!-- setup for chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even</xsl:when>
+ <xsl:otherwise>scons-chapter-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ <!-- setup for draft chapter pages -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even-draft</xsl:when>
+ <xsl:otherwise>scons-chapter-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- selecting our SCons pagemasters -->
+<xsl:template name="select.user.pagemaster">
+ <xsl:param name="element"/>
+ <xsl:param name="pageclass"/>
+ <xsl:param name="default-pagemaster"/>
+
+ <xsl:choose>
+ <xsl:when test="$default-pagemaster = 'titlepage'">
+ <xsl:value-of select="'scons-titlepage'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter' and
+ $default-pagemaster = 'body-draft'">
+ <xsl:value-of select="'scons-chapter-draft'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter'">
+ <xsl:value-of select="'scons-chapter'" />
+ </xsl:when>
+ <xsl:when test="$default-pagemaster = 'titlepage-draft'">
+ <xsl:value-of select="'scons-titlepage-draft'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-pagemaster"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="75pt" space-before="0pt" space-after="0pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" font-size="28pt" space-before="0pt" space-after="0pt" font-family="{$title.fontset}" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="56pt" space-before="0pt" space-after="0pt" font-family="'serif'" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:attribute-set name="chap.label.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="chap.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">24pt</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-start">0.7em</xsl:attribute>
+</xsl:attribute-set>
+
+
+<!-- customization of chapter titles -->
+<xsl:template name="chap.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="pagewide" select="0"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="titleabbrev">
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="2"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$titleabbrev"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="17mm"/>
+ <fo:table-column/>
+ <fo:table-column column-width="17mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="chap.title.properties">
+ <fo:block>
+
+ <fo:inline xsl:use-attribute-sets="chap.label.properties" font-size="57pt"><xsl:apply-templates select="$node"
+ mode="label.markup"/></fo:inline>
+
+ <fo:inline xsl:use-attribute-sets="chap.title.properties"><xsl:apply-templates select="$node"
+ mode="title.markup"/></fo:inline>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+<xsl:call-template name="chap.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template match="title" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="."/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template name="header.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="element" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all headers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="head.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$header.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a header? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence = 'first'">
+ <!-- no, book chapters have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="header.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+<!-- <xsl:apply-templates select="."
+ mode="titleabbrev.markup"/>
+-->
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+
+<xsl:template name="footer.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all footers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="foot.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$footer.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a footer? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence='first'">
+ <!-- no, book chapters have no footers on first page -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+ <!-- pageclass can be front, body, back -->
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="head.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$header.rule != 0">
+ <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
+ <xsl:attribute name="border-bottom-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+
+<xsl:template name="foot.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$footer.rule != 0">
+ <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">solid</xsl:attribute>
+ <xsl:attribute name="border-top-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:param name="header.column.widths">1 0 1</xsl:param>
+<xsl:param name="footer.column.widths">1 0 1</xsl:param>
+<xsl:param name="headers.on.blank.pages" select="1"/>
+<xsl:param name="footers.on.blank.pages" select="1"/>
+
+</xsl:stylesheet>
+
diff --git a/doc/reference/titlepage/SConsBuildBricks_path.svg b/doc/reference/titlepage/SConsBuildBricks_path.svg
new file mode 100644
index 0000000..ed0c60d
--- /dev/null
+++ b/doc/reference/titlepage/SConsBuildBricks_path.svg
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="636.73999"
+ height="80.330002"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.1 r9760"
+ version="1.0"
+ sodipodi:docname="SConsBuildBricks.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="80.565423"
+ inkscape:cy="53.016465"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="942"
+ inkscape:window-height="667"
+ inkscape:window-x="52"
+ inkscape:window-y="25"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>2008-05-18</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the pixeled SCons logo (author unknown).</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.5/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:prohibits
+ rdf:resource="http://web.resource.org/cc/CommercialUse" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.3227,-503.6795)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline">
+ <g
+ transform="translate(-264.04696,-505.06832)"
+ style="display:inline"
+ id="Brick-to-Brick-9"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170-4"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143-1"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145-9"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147-5"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149-7"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185-4">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155-1"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218-2"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ style="font-size:12.22589397px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ id="text1316-2"
+ transform="translate(0.27574335,-0.05632028)">
+ <path
+ d="m 3.8227174,71.530541 0,3.265412 1.9341746,0 c 0.6486997,10e-7 1.1282631,-0.133322 1.4386916,-0.399969 0.3143968,-0.270623 0.4715981,-0.68253 0.4716043,-1.235722 C 7.6671817,72.603095 7.5099804,72.193178 7.1955836,71.930509 6.8851551,71.663867 6.4055917,71.530545 5.756892,71.530541 l -1.9341746,0 m 0,-3.665381 0,2.686354 1.7849327,0 c 0.5890032,5e-6 1.0267789,-0.109439 1.3133285,-0.328332 C 7.211497,70.00032 7.3567589,69.662038 7.3567648,69.208337 7.3567589,68.758629 7.211497,68.422337 6.9209786,68.199462 6.634429,67.976602 6.1966533,67.865168 5.6076501,67.86516 l -1.7849327,0 m -1.2058743,-0.990966 3.0803522,0 c 0.9193247,9e-6 1.6277254,0.191038 2.1252042,0.573089 0.497466,0.382067 0.7462022,0.925307 0.7462093,1.629721 -7.1e-6,0.545237 -0.1273601,0.979033 -0.3820592,1.301389 -0.2547126,0.322368 -0.6288118,0.523347 -1.1222988,0.602937 0.5929814,0.127358 1.0526459,0.394003 1.3789949,0.799937 0.3303146,0.401962 0.4954754,0.905404 0.495483,1.510328 -7.6e-6,0.795958 -0.2706325,1.410834 -0.8118758,1.844629 -0.5412567,0.433797 -1.311344,0.650695 -2.3102642,0.650695 l -3.1997456,0 0,-8.912725"
+ id="path3187"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 10.837085,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3189"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 18.711086,69.100883 1.09842,0 0,6.686036 -1.09842,0 0,-6.686036 m 0,-2.602778 1.09842,0 0,1.390934 -1.09842,0 0,-1.390934"
+ id="path3191"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 22.101862,66.498105 1.09842,0 0,9.288814 -1.09842,0 0,-9.288814"
+ id="path3193"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 29.892286,70.115728 0,-3.617623 1.09842,0 0,9.288814 -1.09842,0 0,-1.002906 c -0.230833,0.397979 -0.523347,0.694473 -0.877543,0.889482 -0.350225,0.191029 -0.772081,0.286544 -1.265571,0.286544 -0.807898,0 -1.466552,-0.322362 -1.975962,-0.967087 -0.505433,-0.644724 -0.758149,-1.492417 -0.758149,-2.543082 0,-1.050658 0.252716,-1.898351 0.758149,-2.543081 0.50941,-0.644718 1.168064,-0.96708 1.975962,-0.967087 0.49349,7e-6 0.915346,0.09751 1.265571,0.292514 0.354196,0.191036 0.64671,0.485539 0.877543,0.883512 M 26.1493,72.44987 c -2e-6,0.807899 0.165159,1.442674 0.495483,1.904327 0.334299,0.457676 0.791973,0.686513 1.373025,0.686512 0.581044,10e-7 1.038718,-0.228836 1.373025,-0.686512 0.334296,-0.461653 0.501447,-1.096428 0.501453,-1.904327 -6e-6,-0.807891 -0.167157,-1.440676 -0.501453,-1.898356 -0.334307,-0.461649 -0.791981,-0.692477 -1.373025,-0.692482 -0.581052,5e-6 -1.038726,0.230833 -1.373025,0.692482 -0.330324,0.45768 -0.495485,1.090465 -0.495483,1.898356"
+ id="path3195"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 39.927309,76.407765 c -0.310427,0.795955 -0.61289,1.315316 -0.90739,1.558085 -0.294507,0.242764 -0.688505,0.364148 -1.181996,0.36415 l -0.877542,0 0,-0.91933 0.644725,0 c 0.302461,-10e-7 0.537268,-0.07164 0.704421,-0.214908 0.167149,-0.143274 0.352208,-0.481555 0.55518,-1.014845 l 0.196999,-0.501453 -2.704262,-6.578581 1.164086,0 2.089386,5.229435 2.089387,-5.229435 1.164086,0 -2.93708,7.306882"
+ id="path3197"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 46.971524,69.870971 c -0.589011,6e-6 -1.054645,0.230833 -1.396904,0.692482 -0.342263,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507423,1.892387 0.342258,0.457676 0.809882,0.686514 1.402873,0.686513 0.585024,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513387,-1.090458 0.513393,-1.886418 -6e-6,-0.791972 -0.171137,-1.418788 -0.513393,-1.880447 -0.342266,-0.465629 -0.80591,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955144,7e-6 1.705332,0.310429 2.250568,0.931269 0.545223,0.620851 0.817838,1.480484 0.817845,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817845,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250568,0.931269 -0.95913,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541251,-0.624825 -0.811876,-1.484457 -0.811876,-2.5789 0,-1.098415 0.270625,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297407,-0.931262 2.256537,-0.931269"
+ id="path3199"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 51.741295,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3201"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 63.489616,70.127667 c -0.123378,-0.07163 -0.258691,-0.123368 -0.405938,-0.155212 -0.143277,-0.03581 -0.302468,-0.05372 -0.477574,-0.05373 -0.62085,6e-6 -1.098423,0.202975 -1.432722,0.608907 -0.330324,0.401963 -0.495485,0.981021 -0.495483,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.230825,-0.405932 0.531298,-0.706405 0.901421,-0.901421 0.370116,-0.198982 0.819831,-0.298476 1.349146,-0.298483 0.07561,7e-6 0.159187,0.006 0.250727,0.01791 0.09153,0.008 0.193014,0.0219 0.304453,0.04179 l 0.006,1.128269"
+ id="path3203"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 72.808278,69.297882 0,1.038724 c -0.310428,-0.159186 -0.63279,-0.27858 -0.967087,-0.358181 -0.334306,-0.07959 -0.680547,-0.119388 -1.038723,-0.119393 -0.545234,5e-6 -0.955151,0.08358 -1.229753,0.250726 -0.270628,0.167156 -0.40594,0.417882 -0.405938,0.752179 -2e-6,0.254711 0.0975,0.45569 0.292514,0.602937 0.195007,0.143276 0.587015,0.280579 1.176026,0.411908 l 0.376089,0.08357 c 0.780033,0.167155 1.333223,0.403952 1.65957,0.710391 0.330316,0.302467 0.495477,0.726313 0.495483,1.271541 -6e-6,0.620848 -0.246752,1.11235 -0.74024,1.47451 -0.489518,0.36216 -1.16409,0.54324 -2.02372,0.54324 -0.358183,0 -0.732282,-0.03582 -1.122299,-0.107454 -0.38604,-0.06766 -0.793967,-0.171131 -1.223783,-0.310423 l 0,-1.134238 c 0.405937,0.210929 0.805905,0.370121 1.199905,0.477574 0.393996,0.103475 0.784014,0.155212 1.170056,0.155211 0.517368,10e-7 0.915346,-0.08755 1.193935,-0.262665 0.27858,-0.179089 0.417873,-0.429816 0.417877,-0.752179 -4e-6,-0.298482 -0.101489,-0.527319 -0.304453,-0.686513 -0.198994,-0.159189 -0.638759,-0.31241 -1.319298,-0.459665 l -0.38206,-0.08955 c -0.680544,-0.143269 -1.172047,-0.362157 -1.474509,-0.656664 -0.302465,-0.29848 -0.453696,-0.706407 -0.453695,-1.223784 -10e-7,-0.6288 0.222866,-1.114333 0.668603,-1.4566 0.445734,-0.342255 1.078519,-0.513385 1.898357,-0.513392 0.405934,7e-6 0.787993,0.02985 1.146177,0.08955 0.358176,0.0597 0.688498,0.149248 0.990966,0.268635"
+ id="path3205"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 77.51238,69.870971 c -0.589011,6e-6 -1.054646,0.230833 -1.396904,0.692482 -0.342264,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507422,1.892387 0.342259,0.457676 0.809883,0.686514 1.402874,0.686513 0.585023,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513386,-1.090458 0.513392,-1.886418 -6e-6,-0.791972 -0.171136,-1.418788 -0.513392,-1.880447 -0.342266,-0.465629 -0.805911,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955143,7e-6 1.705331,0.310429 2.250567,0.931269 0.545224,0.620851 0.817839,1.480484 0.817846,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817846,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250567,0.931269 -0.959131,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541252,-0.624825 -0.811877,-1.484457 -0.811876,-2.5789 -10e-7,-1.098415 0.270624,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297406,-0.931262 2.256537,-0.931269"
+ id="path3207"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 85.780384,66.498105 0,0.91336 -1.050663,0 c -0.394002,8e-6 -0.668607,0.0796 -0.823815,0.238787 -0.151235,0.159199 -0.22685,0.445743 -0.226848,0.859633 l 0,0.590998 1.808812,0 0,0.853663 -1.808812,0 0,5.832373 -1.10439,0 0,-5.832373 -1.050663,0 0,-0.853663 1.050663,0 0,-0.465635 c -10e-7,-0.744211 0.173119,-1.285461 0.519362,-1.623751 0.346239,-0.342253 0.895448,-0.513383 1.64763,-0.513392 l 1.038724,0"
+ id="path3209"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 87.565311,67.202526 0,1.898357 2.262506,0 0,0.853663 -2.262506,0 0,3.629563 c -3e-6,0.545232 0.07362,0.895452 0.220878,1.050662 0.151229,0.155213 0.455682,0.232819 0.91336,0.232818 l 1.128268,0 0,0.91933 -1.128268,0 c -0.847696,0 -1.432724,-0.157202 -1.755084,-0.471605 -0.322364,-0.318382 -0.483545,-0.89545 -0.483544,-1.731205 l 0,-3.629563 -0.805906,0 0,-0.853663 0.805906,0 0,-1.898357 1.10439,0"
+ id="path3211"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 90.639696,69.100883 1.09842,0 1.373026,5.217496 1.367055,-5.217496 1.29542,0 1.373025,5.217496 1.367055,-5.217496 1.098421,0 -1.749115,6.686036 -1.29542,0 -1.438691,-5.480162 -1.444662,5.480162 -1.295419,0 -1.749115,-6.686036"
+ id="path3213"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 104.32219,72.425992 c -0.8875,3e-6 -1.50237,0.101487 -1.84463,0.304453 -0.34226,0.202972 -0.51339,0.549213 -0.51339,1.038724 0,0.39002 0.12735,0.700443 0.38206,0.931269 0.25868,0.226848 0.6089,0.340272 1.05066,0.340271 0.6089,10e-7 1.09643,-0.214907 1.46257,-0.644725 0.37011,-0.433794 0.55517,-1.008872 0.55518,-1.725236 l 0,-0.244756 -1.09245,0 m 2.19087,-0.453696 0,3.814623 -1.09842,0 0,-1.014845 c -0.25073,0.405938 -0.56314,0.706412 -0.93724,0.901421 -0.3741,0.191029 -0.83178,0.286544 -1.37302,0.286544 -0.68453,0 -1.22976,-0.191029 -1.6357,-0.573089 -0.40195,-0.386038 -0.60293,-0.901419 -0.60293,-1.546145 0,-0.752177 0.25072,-1.319295 0.75218,-1.701358 0.50543,-0.382055 1.2576,-0.573084 2.25653,-0.573088 l 1.54018,0 0,-0.107455 c -1e-5,-0.505427 -0.16716,-0.895446 -0.50145,-1.170056 -0.33033,-0.278579 -0.79596,-0.417871 -1.39691,-0.417877 -0.38206,6e-6 -0.75417,0.04577 -1.11633,0.137302 -0.36216,0.09154 -0.71039,0.228844 -1.04469,0.411908 l 0,-1.014845 c 0.40196,-0.155205 0.79198,-0.270618 1.17006,-0.346241 0.37807,-0.07959 0.7462,-0.119386 1.10439,-0.119393 0.96708,7e-6 1.68941,0.250733 2.16699,0.752179 0.47757,0.501458 0.71635,1.261596 0.71636,2.280415"
+ id="path3215"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.65586,70.127667 c -0.12338,-0.07163 -0.25869,-0.123368 -0.40594,-0.155212 -0.14327,-0.03581 -0.30247,-0.05372 -0.47757,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33033,0.401963 -0.49549,0.981021 -0.49549,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23083,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81984,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15919,0.006 0.25073,0.01791 0.0915,0.008 0.19301,0.0219 0.30445,0.04179 l 0.006,1.128269"
+ id="path3217"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 119.27622,72.169296 0,0.53727 -5.05034,0 c 0.0477,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06658,0 -1.91229,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.2945,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32635,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3219"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 121.35964,74.270621 1.2596,0 0,1.026784 -0.97903,1.910296 -0.77008,0 0.48951,-1.910296 0,-1.026784"
+ id="path3221"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 133.66315,72.44987 c -1e-5,-0.807891 -0.16716,-1.440676 -0.50146,-1.898356 -0.33032,-0.461649 -0.78601,-0.692477 -1.36705,-0.692482 -0.58105,5e-6 -1.03873,0.230833 -1.37303,0.692482 -0.33032,0.45768 -0.49548,1.090465 -0.49548,1.898356 0,0.807899 0.16516,1.442674 0.49548,1.904327 0.3343,0.457676 0.79198,0.686513 1.37303,0.686512 0.58104,10e-7 1.03673,-0.228836 1.36705,-0.686512 0.3343,-0.461653 0.50145,-1.096428 0.50146,-1.904327 m -3.73702,-2.334142 c 0.23082,-0.397973 0.52135,-0.692476 0.87157,-0.883512 0.3542,-0.195003 0.77606,-0.292507 1.26557,-0.292514 0.81187,7e-6 1.47053,0.322369 1.97596,0.967087 0.50941,0.64473 0.76412,1.492423 0.76412,2.543081 0,1.050665 -0.25471,1.898358 -0.76412,2.543082 -0.50543,0.644725 -1.16409,0.967087 -1.97596,0.967087 -0.48951,0 -0.91137,-0.09551 -1.26557,-0.286544 -0.35022,-0.195009 -0.64075,-0.491503 -0.87157,-0.889482 l 0,1.002906 -1.10439,0 0,-9.288814 1.10439,0 0,3.617623"
+ id="path3223"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 142.34306,72.169296 0,0.53727 -5.05035,0 c 0.0478,0.756162 0.27461,1.33323 0.68055,1.731206 0.40991,0.394 0.97902,0.590999 1.70732,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22379,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.18199,-0.465634 l 0,1.038723 c -0.394,0.167151 -0.79795,0.294504 -1.21184,0.382059 -0.41391,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06659,0 -1.91229,-0.310423 -2.53712,-0.931269 -0.62084,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88352,-2.602778 0.59298,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89942,7e-6 1.60981,0.29053 2.13117,0.871572 0.52533,0.577074 0.78799,1.363081 0.788,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.17711,-1.080506 -0.50743,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30138,-0.537271 -0.61289,6e-6 -1.1044,0.173126 -1.47451,0.519362 -0.36615,0.346246 -0.57707,0.833769 -0.63279,1.46257 l 3.91611,-0.006"
+ id="path3225"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 145.23238,67.202526 0,1.898357 2.26251,0 0,0.853663 -2.26251,0 0,3.629563 c 0,0.545232 0.0736,0.895452 0.22088,1.050662 0.15123,0.155213 0.45568,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.8477,0 -1.43273,-0.157202 -1.75509,-0.471605 -0.32236,-0.318382 -0.48354,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3227"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 150.03199,67.202526 0,1.898357 2.2625,0 0,0.853663 -2.2625,0 0,3.629563 c -1e-5,0.545232 0.0736,0.895452 0.22087,1.050662 0.15123,0.155213 0.45569,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.84769,0 -1.43272,-0.157202 -1.75508,-0.471605 -0.32236,-0.318382 -0.48355,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3229"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 159.46407,72.169296 0,0.53727 -5.05034,0 c 0.0478,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39798,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83376,0.131333 -1.2596,0.131333 -1.06658,0 -1.91228,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39094,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3231"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.14123,70.127667 c -0.12337,-0.07163 -0.25869,-0.123368 -0.40593,-0.155212 -0.14328,-0.03581 -0.30247,-0.05372 -0.47758,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33032,0.401963 -0.49548,0.981021 -0.49548,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23082,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81983,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15918,0.006 0.25072,0.01791 0.0915,0.008 0.19302,0.0219 0.30446,0.04179 l 0.006,1.128269"
+ id="path3233"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.33823,74.270621 1.25961,0 0,1.516298 -1.25961,0 0,-1.516298"
+ id="path3235"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(1.0124967,0,0,0.98765755,0.27574335,-0.05632028)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160-1">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ id="path3176"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ id="path3178"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ id="path3180"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ id="path3182"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ id="path3184"
+ inkscape:connector-curvature="0" />
+ </g>
+ <image
+ id="image1340"
+ height="80.018639"
+ width="465.43411"
+ sodipodi:absref="bricks.jpg"
+ xlink:href="bricks.jpg"
+ x="171.31058"
+ y="0.17131744" />
+ </g>
+</svg>
diff --git a/doc/reference/titlepage/SCons_path.svg b/doc/reference/titlepage/SCons_path.svg
new file mode 100644
index 0000000..ef580ee
--- /dev/null
+++ b/doc/reference/titlepage/SCons_path.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="167.9814"
+ height="58.247482"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.3.1 r9886"
+ version="1.0"
+ sodipodi:docname="SCons_path.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <title
+ id="title2996">SCons - Build your software, better (SCons Logo)</title>
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="7.1635215"
+ inkscape:cy="31.742841"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="868"
+ inkscape:window-height="789"
+ inkscape:window-x="210"
+ inkscape:window-y="24"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0"
+ fit-margin-left="2"
+ fit-margin-top="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>SCons - Build your software, better (SCons Logo)</dc:title>
+ <dc:date>2011-05-19</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the SCons (Constructs using) logo by Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;.</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.32267,-503.68225)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline"
+ transform="translate(2.5546741e-5,-0.00274857)">
+ <g
+ transform="translate(-264.3227,-505.012)"
+ style="display:inline"
+ id="Brick-to-Brick"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ transform="scale(1.0124967,0.98765755)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ style=""
+ id="path3017" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ style=""
+ id="path3019" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ style=""
+ id="path3021" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ style=""
+ id="path3023" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ style=""
+ id="path3025" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/reference/titlepage/bricks.jpg b/doc/reference/titlepage/bricks.jpg
new file mode 100755
index 0000000..b2dc16b
--- /dev/null
+++ b/doc/reference/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/reference/titlepage/mapnik_final_colors.svg b/doc/reference/titlepage/mapnik_final_colors.svg
new file mode 100644
index 0000000..23bb54a
--- /dev/null
+++ b/doc/reference/titlepage/mapnik_final_colors.svg
@@ -0,0 +1,6397 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ fill-opacity="1"
+ color-rendering="auto"
+ color-interpolation="auto"
+ stroke="black"
+ text-rendering="auto"
+ stroke-linecap="square"
+ width="600"
+ stroke-miterlimit="10"
+ stroke-opacity="1"
+ shape-rendering="auto"
+ fill="black"
+ stroke-dasharray="none"
+ font-weight="normal"
+ stroke-width="1"
+ height="701"
+ font-family="'Dialog'"
+ font-style="normal"
+ stroke-linejoin="miter"
+ font-size="12"
+ stroke-dashoffset="0"
+ image-rendering="auto"
+ id="svg8168"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="mapnik_final_colors.svg">
+ <title
+ id="title9830">SCons, Book titlepage background</title>
+ <metadata
+ id="metadata9828">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="" />
+ <dc:title>SCons, Book titlepage background</dc:title>
+ <dc:date>2013-04-15</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on a SCons dependency tree of the Mapnik project (www.mapnik.org)</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="735"
+ inkscape:window-height="480"
+ id="namedview9826"
+ showgrid="false"
+ inkscape:zoom="0.33666191"
+ inkscape:cx="300"
+ inkscape:cy="350.5"
+ inkscape:window-x="85"
+ inkscape:window-y="99"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg8168" />
+ <!--Generated by ySVG-->
+ <defs
+ id="genericDefs" />
+ <g
+ id="g8171">
+ <defs
+ id="defs1">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1">
+ <path
+ d="M0 0 L600 0 L600 701 L0 701 L0 0 Z"
+ id="path8175" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2">
+ <path
+ d="M-871 -1293 L3138 -1293 L3138 3390.8484 L-871 3390.8484 L-871 -1293 Z"
+ id="path8178" />
+ </clipPath>
+ </defs>
+ <g
+ fill="white"
+ transform="scale(0.1497,0.1497) translate(871,1293)"
+ stroke="white"
+ id="g8180">
+ <rect
+ x="-871"
+ y="-1293"
+ clip-path="url(#clipPath2)"
+ width="4009"
+ height="4684"
+ stroke="none"
+ id="rect8182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8184">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ width="142.2207"
+ height="30"
+ stroke="none"
+ id="rect8186" />
+ <text
+ x="1140.3896"
+ y="112.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8188">./src/agg_renderer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8190">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="142.2207"
+ height="30"
+ id="rect8192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8194">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ width="69.1484"
+ height="30"
+ stroke="none"
+ id="rect8196" />
+ <text
+ x="-37.5742"
+ y="1701.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8198">./agg/src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8200">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="69.1484"
+ height="30"
+ id="rect8202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8204">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ width="114.5938"
+ height="30"
+ stroke="none"
+ id="rect8206" />
+ <text
+ x="1140.7031"
+ y="-645.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8208">./src/graphics.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8210">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="114.5938"
+ height="30"
+ id="rect8212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8214">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ width="111.8516"
+ height="30"
+ stroke="none"
+ id="rect8216" />
+ <text
+ x="1676.0742"
+ y="-44.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8218">./src/font_set.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8220">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="111.8516"
+ height="30"
+ id="rect8222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8224">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ width="234.9277"
+ height="30"
+ stroke="none"
+ id="rect8226" />
+ <text
+ x="-608.9639"
+ y="2105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8228">./agg/src/agg_vcgen_markers_term.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8230">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9277"
+ height="30"
+ id="rect8232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8234">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ width="107.8789"
+ height="30"
+ stroke="none"
+ id="rect8236" />
+ <text
+ x="2062.0605"
+ y="-128.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8238">./src/params.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8240">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="107.8789"
+ height="30"
+ id="rect8242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8244">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ width="189.2188"
+ height="30"
+ stroke="none"
+ id="rect8246" />
+ <text
+ x="-71.1094"
+ y="1867.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8248">./agg/src/agg_image_filters.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8250">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="189.2188"
+ height="30"
+ id="rect8252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8254">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ width="258.3125"
+ height="30"
+ stroke="none"
+ id="rect8256" />
+ <text
+ x="2434.3438"
+ y="1824.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8258">./bindings/python/mapnik_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8260">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3125"
+ height="30"
+ id="rect8262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8264">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ width="112.4844"
+ height="30"
+ stroke="none"
+ id="rect8266" />
+ <text
+ x="1775.7578"
+ y="209.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8268">./src/memory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8270">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="112.4844"
+ height="30"
+ id="rect8272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8274">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ width="263.3223"
+ height="30"
+ stroke="none"
+ id="rect8276" />
+ <text
+ x="1302.8389"
+ y="3367.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8278">./bindings/python/mapnik_font_engine.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8280">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="263.3223"
+ height="30"
+ id="rect8282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8284">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ width="205.625"
+ height="30"
+ stroke="none"
+ id="rect8286" />
+ <text
+ x="651.1875"
+ y="459.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8288">./plugins/input/shape/dbffile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8290">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="205.625"
+ height="30"
+ id="rect8292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8294">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ width="196.5547"
+ height="30"
+ stroke="none"
+ id="rect8296" />
+ <text
+ x="148.2227"
+ y="1905.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8298">./agg/src/agg_line_aa_basics.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8300">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.5547"
+ height="30"
+ id="rect8302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8304">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ width="121.8652"
+ height="30"
+ stroke="none"
+ id="rect8306" />
+ <text
+ x="1844.5674"
+ y="-283.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8308">./src/save_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8310">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.8652"
+ height="30"
+ id="rect8312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8314">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ width="283.4844"
+ height="30"
+ stroke="none"
+ id="rect8316" />
+ <text
+ x="662.2578"
+ y="2818.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8318">./bindings/python/mapnik_view_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8320">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="283.4844"
+ height="30"
+ id="rect8322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8324">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ width="94.1094"
+ height="30"
+ stroke="none"
+ id="rect8326" />
+ <text
+ x="1878.4453"
+ y="-141.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8328">./src/color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8330">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1094"
+ height="30"
+ id="rect8332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8334">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ width="98.4805"
+ height="30"
+ stroke="none"
+ id="rect8336" />
+ <text
+ x="101.7598"
+ y="1483.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8338">./agg/libagg.a</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8340">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="98.4805"
+ height="30"
+ id="rect8342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8344">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ width="187.4668"
+ height="30"
+ stroke="none"
+ id="rect8346" />
+ <text
+ x="1946.2666"
+ y="-908.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8348">./src/font_engine_freetype.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8350">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="187.4668"
+ height="30"
+ id="rect8352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8354">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ width="101.4277"
+ height="30"
+ stroke="none"
+ id="rect8356" />
+ <text
+ x="1931.2861"
+ y="171.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8358">./src/stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8360">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.4277"
+ height="30"
+ id="rect8362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8364">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ width="229.8535"
+ height="30"
+ stroke="none"
+ id="rect8366" />
+ <text
+ x="1557.0732"
+ y="2643.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8368">./bindings/python/mapnik_image.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8370">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8535"
+ height="30"
+ id="rect8372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8374">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ width="125.1816"
+ height="30"
+ stroke="none"
+ id="rect8376" />
+ <text
+ x="1962.9092"
+ y="-717.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8378">./src/image_util.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8380">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="125.1816"
+ height="30"
+ id="rect8382" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8384">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ width="297.4121"
+ height="30"
+ stroke="none"
+ id="rect8386" />
+ <text
+ x="973.7939"
+ y="2871.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8388">./bindings/python/mapnik_datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8390">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="297.4121"
+ height="30"
+ id="rect8392" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8394">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ width="94.1914"
+ height="30"
+ stroke="none"
+ id="rect8396" />
+ <text
+ x="-147.5957"
+ y="2495.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8398">./agg/include</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8400">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1914"
+ height="30"
+ id="rect8402" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8404">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ width="216.8984"
+ height="30"
+ stroke="none"
+ id="rect8406" />
+ <text
+ x="896.5508"
+ y="2465.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8408">./bindings/python/mapnik_rule.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8410">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.8984"
+ height="30"
+ id="rect8412" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8414">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ width="174.0664"
+ height="30"
+ stroke="none"
+ id="rect8416" />
+ <text
+ x="277.4668"
+ y="1204.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8418">./agg/src/agg_bezier_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8420">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.0664"
+ height="30"
+ id="rect8422" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8424">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ width="252.9336"
+ height="30"
+ stroke="none"
+ id="rect8426" />
+ <text
+ x="1538.0332"
+ y="1608.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8428">./bindings/python/mapnik_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8430">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="252.9336"
+ height="30"
+ id="rect8432" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8434">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ width="131.8848"
+ height="30"
+ stroke="none"
+ id="rect8436" />
+ <text
+ x="192.0576"
+ y="1708.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8438">./agg/src/agg_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8440">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="131.8848"
+ height="30"
+ id="rect8442" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8444">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ width="220.5371"
+ height="30"
+ stroke="none"
+ id="rect8446" />
+ <text
+ x="-159.7686"
+ y="559.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8448">./plugins/input/shape/shapefile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8450">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.5371"
+ height="30"
+ id="rect8452" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8454">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ width="271.0918"
+ height="30"
+ stroke="none"
+ id="rect8456" />
+ <text
+ x="-52.0459"
+ y="-1056.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8458">./plugins/input/raster/raster_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8460">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="271.0918"
+ height="30"
+ id="rect8462" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8464">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ width="265.666"
+ height="30"
+ stroke="none"
+ id="rect8466" />
+ <text
+ x="-705.333"
+ y="-423.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8468">./plugins/input/raster/raster_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8470">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="265.666"
+ height="30"
+ id="rect8472" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8474">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ width="110.9609"
+ height="30"
+ stroke="none"
+ id="rect8476" />
+ <text
+ x="1995.0195"
+ y="330.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8478">./src/unicode.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8480">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="110.9609"
+ height="30"
+ id="rect8482" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8484">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ width="233.9141"
+ height="30"
+ stroke="none"
+ id="rect8486" />
+ <text
+ x="2896.043"
+ y="2280.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8488">./bindings/python/mapnik/ogcserver</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8490">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="233.9141"
+ height="30"
+ id="rect8492" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8494">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ width="219.7695"
+ height="30"
+ stroke="none"
+ id="rect8496" />
+ <text
+ x="1964.6152"
+ y="1988.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8498">./bindings/python/mapnik_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8500">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.7695"
+ height="30"
+ id="rect8502" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8504">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ width="97.9062"
+ height="30"
+ stroke="none"
+ id="rect8506" />
+ <text
+ x="1411.0469"
+ y="64.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8508">./src/arrow.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8510">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="97.9062"
+ height="30"
+ id="rect8512" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8514">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="67.0742"
+ height="30"
+ stroke="none"
+ id="rect8516" />
+ <text
+ x="385.9629"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8518">./plugins</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8520">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="67.0742"
+ height="30"
+ id="rect8522" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8524">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ width="218.0352"
+ height="30"
+ stroke="none"
+ id="rect8526" />
+ <text
+ x="-593.0176"
+ y="-884.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8528">./plugins/input/raster/raster.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8530">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="218.0352"
+ height="30"
+ id="rect8532" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8534">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ width="199.3555"
+ height="30"
+ stroke="none"
+ id="rect8536" />
+ <text
+ x="511.8223"
+ y="1265.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8538">./agg/src/agg_vcgen_contour.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8540">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="199.3555"
+ height="30"
+ id="rect8542" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8544">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ width="239.832"
+ height="30"
+ stroke="none"
+ id="rect8546" />
+ <text
+ x="484.084"
+ y="1581.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8548">./agg/src/agg_trans_warp_magnifier.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8550">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="239.832"
+ height="30"
+ id="rect8552" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8554">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ width="258.3594"
+ height="30"
+ stroke="none"
+ id="rect8556" />
+ <text
+ x="1814.8203"
+ y="2902.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8558">./bindings/python/mapnik_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8560">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3594"
+ height="30"
+ id="rect8562" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8564">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ width="267.0488"
+ height="30"
+ stroke="none"
+ id="rect8566" />
+ <text
+ x="207.9756"
+ y="791.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8568">./plugins/input/shape/shape_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8570">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="267.0488"
+ height="30"
+ id="rect8572" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8574">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ width="121.2441"
+ height="30"
+ stroke="none"
+ id="rect8576" />
+ <text
+ x="1345.8779"
+ y="-311.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8578">./src/load_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8580">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.2441"
+ height="30"
+ id="rect8582" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8584">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ width="294.6406"
+ height="30"
+ stroke="none"
+ id="rect8586" />
+ <text
+ x="1642.1797"
+ y="2329.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8588">./bindings/python/mapnik_point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8590">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="294.6406"
+ height="30"
+ id="rect8592" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8594">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ width="204.0371"
+ height="30"
+ stroke="none"
+ id="rect8596" />
+ <text
+ x="1877.9814"
+ y="-479.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8598">./src/line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8600">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="204.0371"
+ height="30"
+ id="rect8602" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8604">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ width="171.1016"
+ height="30"
+ stroke="none"
+ id="rect8606" />
+ <text
+ x="2413.4492"
+ y="2228.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8608">./bindings/python/mapnik</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8610">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="171.1016"
+ height="30"
+ id="rect8612" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8614">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ width="143.8027"
+ height="30"
+ stroke="none"
+ id="rect8616" />
+ <text
+ x="-221.4014"
+ y="-694.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8618">./plugins/input/raster</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8620">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.8027"
+ height="30"
+ id="rect8622" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8624">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ width="90.2246"
+ height="30"
+ stroke="none"
+ id="rect8626" />
+ <text
+ x="1756.3877"
+ y="-562.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8628">./src/map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8630">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="90.2246"
+ height="30"
+ id="rect8632" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8634">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ width="88.6543"
+ height="30"
+ stroke="none"
+ id="rect8636" />
+ <text
+ x="1474.6729"
+ y="-552.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8638">./src/wkb.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8640">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="88.6543"
+ height="30"
+ id="rect8642" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8644">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ width="190.7598"
+ height="30"
+ stroke="none"
+ id="rect8646" />
+ <text
+ x="-568.8799"
+ y="1541.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8648">./agg/src/agg_vcgen_stroke.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8650">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="190.7598"
+ height="30"
+ id="rect8652" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8654">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ width="163.0332"
+ height="30"
+ stroke="none"
+ id="rect8656" />
+ <text
+ x="-126.5166"
+ y="1293.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8658">./agg/src/agg_gsv_text.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8660">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="163.0332"
+ height="30"
+ id="rect8662" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8664">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ width="202.502"
+ height="30"
+ stroke="none"
+ id="rect8666" />
+ <text
+ x="325.249"
+ y="-184.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8668">./plugins/input/shape/shape.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8670">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="202.502"
+ height="30"
+ id="rect8672" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8674">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ width="74.627"
+ height="30"
+ stroke="none"
+ id="rect8676" />
+ <text
+ x="2226.1865"
+ y="1987.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8678">./bindings</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8680">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="74.627"
+ height="30"
+ id="rect8682" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8684">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ width="41.2637"
+ height="30"
+ stroke="none"
+ id="rect8686" />
+ <text
+ x="1565.8682"
+ y="-296.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8688">./src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8690">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="41.2637"
+ height="30"
+ id="rect8692" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8694">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ width="221.8203"
+ height="30"
+ stroke="none"
+ id="rect8696" />
+ <text
+ x="1378.5898"
+ y="1882.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8698">./bindings/python/mapnik_filter.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8700">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.8203"
+ height="30"
+ id="rect8702" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8704">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ width="196.4668"
+ height="30"
+ stroke="none"
+ id="rect8706" />
+ <text
+ x="-476.2334"
+ y="1794.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8708">./agg/src/agg_vcgen_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8710">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.4668"
+ height="30"
+ id="rect8712" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8714">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ width="227.7383"
+ height="30"
+ stroke="none"
+ id="rect8716" />
+ <text
+ x="1299.1309"
+ y="2672.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8718">./bindings/python/mapnik_coord.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8720">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.7383"
+ height="30"
+ id="rect8722" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8724">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ width="116.9492"
+ height="30"
+ stroke="none"
+ id="rect8726" />
+ <text
+ x="1757.0254"
+ y="-785.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8728">./src/envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8730">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="116.9492"
+ height="30"
+ id="rect8732" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8734">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ width="229.0859"
+ height="30"
+ stroke="none"
+ id="rect8736" />
+ <text
+ x="-346.043"
+ y="2059.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8738">./agg/src/agg_vpgen_segmentator.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8740">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.0859"
+ height="30"
+ id="rect8742" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8744">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ width="222.3477"
+ height="30"
+ stroke="none"
+ id="rect8746" />
+ <text
+ x="1714.3262"
+ y="1999.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8748">./bindings/python/mapnik_layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8750">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="222.3477"
+ height="30"
+ id="rect8752" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8754">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ width="285.3828"
+ height="30"
+ stroke="none"
+ id="rect8756" />
+ <text
+ x="1345.3086"
+ y="2964.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8758">./bindings/python/mapnik_line_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8760">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="285.3828"
+ height="30"
+ id="rect8762" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8764">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ width="169.5078"
+ height="30"
+ stroke="none"
+ id="rect8766" />
+ <text
+ x="1757.2461"
+ y="415.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8768">./src/shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8770">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="169.5078"
+ height="30"
+ id="rect8772" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8774">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ width="221.9844"
+ height="30"
+ stroke="none"
+ id="rect8776" />
+ <text
+ x="-407.9922"
+ y="1011.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8778">./agg/src/agg_trans_double_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8780">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.9844"
+ height="30"
+ id="rect8782" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8784">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ width="123.9336"
+ height="30"
+ stroke="none"
+ id="rect8786" />
+ <text
+ x="1311.5332"
+ y="220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8788">./src/projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8790">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="123.9336"
+ height="30"
+ id="rect8792" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8794">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ width="124.9941"
+ height="30"
+ stroke="none"
+ id="rect8796" />
+ <text
+ x="1116.5029"
+ y="-309.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8798">./src/tiff_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8800">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="124.9941"
+ height="30"
+ id="rect8802" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8804">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ width="281.3574"
+ height="30"
+ stroke="none"
+ id="rect8806" />
+ <text
+ x="1691.8213"
+ y="3282.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8808">./bindings/python/mapnik_proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8810">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="281.3574"
+ height="30"
+ id="rect8812" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8814">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ width="221.416"
+ height="30"
+ stroke="none"
+ id="rect8816" />
+ <text
+ x="1283.292"
+ y="1625.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8818">./bindings/python/mapnik_style.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8820">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.416"
+ height="30"
+ id="rect8822" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8824">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ width="299.0527"
+ height="30"
+ stroke="none"
+ id="rect8826" />
+ <text
+ x="1818.9736"
+ y="1696.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8828">./bindings/python/mapnik_shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8830">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="299.0527"
+ height="30"
+ id="rect8832" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8834">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ width="143.6797"
+ height="30"
+ stroke="none"
+ id="rect8836" />
+ <text
+ x="1468.6602"
+ y="265.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8838">./src/image_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8840">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.6797"
+ height="30"
+ id="rect8842" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8844">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ width="156.4941"
+ height="30"
+ stroke="none"
+ id="rect8846" />
+ <text
+ x="-332.2471"
+ y="1403.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8848">./agg/src/agg_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8850">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="156.4941"
+ height="30"
+ id="rect8852" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8854">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ width="216.5762"
+ height="30"
+ stroke="none"
+ id="rect8856" />
+ <text
+ x="-147.2881"
+ y="1523.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8858">./agg/src/agg_trans_single_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8860">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.5762"
+ height="30"
+ id="rect8862" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8864">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ width="229.8184"
+ height="30"
+ stroke="none"
+ id="rect8866" />
+ <text
+ x="-444.9092"
+ y="-1258.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8868">./plugins/input/raster/raster_info.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8870">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8184"
+ height="30"
+ id="rect8872" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8874">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ width="181.918"
+ height="30"
+ stroke="none"
+ id="rect8876" />
+ <text
+ x="65.041"
+ y="1139.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8878">./agg/src/agg_vcgen_dash.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8880">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="181.918"
+ height="30"
+ id="rect8882" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8884">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ width="253.4785"
+ height="30"
+ stroke="none"
+ id="rect8886" />
+ <text
+ x="2119.2607"
+ y="3074.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8888">./bindings/python/mapnik_projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8890">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="253.4785"
+ height="30"
+ id="rect8892" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8894">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ width="261.4648"
+ height="30"
+ stroke="none"
+ id="rect8896" />
+ <text
+ x="1089.2676"
+ y="2110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8898">./bindings/python/mapnik_image_view.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8900">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="261.4648"
+ height="30"
+ id="rect8902" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8904">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ width="113.375"
+ height="30"
+ stroke="none"
+ id="rect8906" />
+ <text
+ x="1591.8125"
+ y="105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8908">./src/distance.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8910">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="113.375"
+ height="30"
+ id="rect8912" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8914">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ width="167.8672"
+ height="30"
+ stroke="none"
+ id="rect8916" />
+ <text
+ x="2110.0664"
+ y="-299.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8918">./src/datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8920">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="167.8672"
+ height="30"
+ id="rect8922" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8924">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ width="260.1934"
+ height="30"
+ stroke="none"
+ id="rect8926" />
+ <text
+ x="2145.9033"
+ y="1632.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8928">./bindings/python/mapnik_parameters.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8930">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="260.1934"
+ height="30"
+ id="rect8932" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8934">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ width="101.709"
+ height="30"
+ stroke="none"
+ id="rect8936" />
+ <text
+ x="1291.1455"
+ y="-454.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8938">./src/plugin.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8940">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.709"
+ height="30"
+ id="rect8942" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8944">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ width="175.5781"
+ height="30"
+ stroke="none"
+ id="rect8946" />
+ <text
+ x="-536.7891"
+ y="1318.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8948">./agg/src/agg_arrowhead.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8950">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="175.5781"
+ height="30"
+ id="rect8952" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8954">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ width="235.6426"
+ height="30"
+ stroke="none"
+ id="rect8956" />
+ <text
+ x="1824.1787"
+ y="2623.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8958">./bindings/python/mapnik_feature.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8960">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="235.6426"
+ height="30"
+ id="rect8962" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8964">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ width="251.2461"
+ height="30"
+ stroke="none"
+ id="rect8966" />
+ <text
+ x="-848.123"
+ y="1633.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8968">./agg/src/agg_embedded_raster_fonts.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8970">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="251.2461"
+ height="30"
+ id="rect8972" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8974">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ width="122.6445"
+ height="30"
+ stroke="none"
+ id="rect8976" />
+ <text
+ x="1676.6777"
+ y="-200.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8978">./src/libmapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8980">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="122.6445"
+ height="30"
+ id="rect8982" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8984">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ width="165.623"
+ height="30"
+ stroke="none"
+ id="rect8986" />
+ <text
+ x="1046.1885"
+ y="-106.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8988">./src/placement_finder.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8990">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.623"
+ height="30"
+ id="rect8992" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8994">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ width="178.209"
+ height="30"
+ stroke="none"
+ id="rect8996" />
+ <text
+ x="-158.1045"
+ y="1023.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8998">./agg/src/agg_sqrt_tables.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9000">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="178.209"
+ height="30"
+ id="rect9002" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9004">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ width="227.9492"
+ height="30"
+ stroke="none"
+ id="rect9006" />
+ <text
+ x="228.5254"
+ y="1497.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9008">./agg/src/agg_vpgen_clip_polyline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9010">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.9492"
+ height="30"
+ id="rect9012" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9014">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ width="298.0508"
+ height="30"
+ stroke="none"
+ id="rect9016" />
+ <text
+ x="1475.9746"
+ y="1023.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9018">./bindings/python/mapnik_raster_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9020">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="298.0508"
+ height="30"
+ id="rect9022" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9024">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ width="198.3945"
+ height="30"
+ stroke="none"
+ id="rect9026" />
+ <text
+ x="372.8027"
+ y="2048.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9028">./agg/src/agg_line_profile_aa.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9030">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="198.3945"
+ height="30"
+ id="rect9032" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9034">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="333.582"
+ height="30"
+ stroke="none"
+ id="rect9036" />
+ <text
+ x="922.209"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9038">./bindings/python/mapnik_line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9040">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="333.582"
+ height="30"
+ id="rect9042" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9044">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ width="223.6543"
+ height="30"
+ stroke="none"
+ id="rect9046" />
+ <text
+ x="1304.1729"
+ y="1312.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9048">./bindings/python/mapnik_color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9050">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="223.6543"
+ height="30"
+ id="rect9052" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9054">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ width="151.8125"
+ height="30"
+ stroke="none"
+ id="rect9056" />
+ <text
+ x="1641.5938"
+ y="-374.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9058">./src/proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9060">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.8125"
+ height="30"
+ id="rect9062" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9064">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ width="182.457"
+ height="30"
+ stroke="none"
+ id="rect9066" />
+ <text
+ x="1305.2715"
+ y="-126.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9068">./src/memory_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9070">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.457"
+ height="30"
+ id="rect9072" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9074">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ width="103.7715"
+ height="30"
+ stroke="none"
+ id="rect9076" />
+ <text
+ x="-187.8857"
+ y="-241.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9078">./plugins/input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9080">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="103.7715"
+ height="30"
+ id="rect9082" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9084">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ width="234.9629"
+ height="30"
+ stroke="none"
+ id="rect9086" />
+ <text
+ x="660.0186"
+ y="1876.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9088">./bindings/python/mapnik_python.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9090">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9629"
+ height="30"
+ id="rect9092" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9094">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="130.6953"
+ height="30"
+ stroke="none"
+ id="rect9096" />
+ <text
+ x="1595.6523"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9098">./src/png_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9100">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="130.6953"
+ height="30"
+ id="rect9102" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9104">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ width="246.4941"
+ height="30"
+ stroke="none"
+ id="rect9106" />
+ <text
+ x="1143.2529"
+ y="2400.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9108">./bindings/python/mapnik_envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9110">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="246.4941"
+ height="30"
+ id="rect9112" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9114">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ width="230.9727"
+ height="30"
+ stroke="none"
+ id="rect9116" />
+ <text
+ x="1014.5137"
+ y="1471.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9118">./bindings/python/mapnik_stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9120">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="230.9727"
+ height="30"
+ id="rect9122" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9124">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ width="219.418"
+ height="30"
+ stroke="none"
+ id="rect9126" />
+ <text
+ x="269.791"
+ y="342.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9128">./plugins/input/shape/shape.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9130">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.418"
+ height="30"
+ id="rect9132" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9134">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ width="227.252"
+ height="30"
+ stroke="none"
+ id="rect9136" />
+ <text
+ x="1970.374"
+ y="1334.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9138">./bindings/python/mapnik_query.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9140">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.252"
+ height="30"
+ id="rect9142" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9144">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ width="165.0957"
+ height="30"
+ stroke="none"
+ id="rect9146" />
+ <text
+ x="1349.4521"
+ y="-859.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9148">./src/point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9150">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.0957"
+ height="30"
+ id="rect9152" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9154">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ width="138.5"
+ height="30"
+ stroke="none"
+ id="rect9156" />
+ <text
+ x="1485.75"
+ y="475.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9158">./src/filter_factory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9160">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="138.5"
+ height="30"
+ id="rect9162" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9164">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ width="311.2754"
+ height="30"
+ stroke="none"
+ id="rect9166" />
+ <text
+ x="2057.8623"
+ y="2285.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9168">./bindings/python/mapnik_polygon_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9170">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="311.2754"
+ height="30"
+ id="rect9172" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9174">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ width="236.4219"
+ height="30"
+ stroke="none"
+ id="rect9176" />
+ <text
+ x="-87.2109"
+ y="2244.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9178">./agg/src/agg_vcgen_smooth_poly1.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9180">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="236.4219"
+ height="30"
+ id="rect9182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9184">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ width="305.5625"
+ height="30"
+ stroke="none"
+ id="rect9186" />
+ <text
+ x="-365.2812"
+ y="125.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9188">./plugins/input/shape/shape_index_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9190">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="305.5625"
+ height="30"
+ id="rect9192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9194">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ width="220.1738"
+ height="30"
+ stroke="none"
+ id="rect9196" />
+ <text
+ x="840.4131"
+ y="2185.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9198">./bindings/python/python_cairo.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9200">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.1738"
+ height="30"
+ id="rect9202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9204">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ width="128.7676"
+ height="30"
+ stroke="none"
+ id="rect9206" />
+ <text
+ x="2153.6162"
+ y="-476.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9208">./src/symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9210">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="128.7676"
+ height="30"
+ id="rect9212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9214">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ width="194.3867"
+ height="30"
+ stroke="none"
+ id="rect9216" />
+ <text
+ x="1419.8066"
+ y="2358.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9218">./bindings/python/_mapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9220">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="194.3867"
+ height="30"
+ id="rect9222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9224">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ width="182.8438"
+ height="30"
+ stroke="none"
+ id="rect9226" />
+ <text
+ x="186.0781"
+ y="2266.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9228">./agg/src/agg_trans_affine.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9230">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.8438"
+ height="30"
+ id="rect9232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9234">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ width="229.9297"
+ height="30"
+ stroke="none"
+ id="rect9236" />
+ <text
+ x="869.0352"
+ y="-574.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9238">./src/polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9240">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.9297"
+ height="30"
+ id="rect9242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9244">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ width="359.4746"
+ height="30"
+ stroke="none"
+ id="rect9246" />
+ <text
+ x="2100.7627"
+ y="2648.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9248">./bindings/python/mapnik_polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9250">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="359.4746"
+ height="30"
+ id="rect9252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9254">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="151.7188"
+ height="30"
+ stroke="none"
+ id="rect9256" />
+ <text
+ x="-251.3594"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9258">./agg/src/agg_curves.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9260">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.7188"
+ height="30"
+ id="rect9262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9264">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ width="157.7891"
+ height="30"
+ stroke="none"
+ id="rect9266" />
+ <text
+ x="1284.6055"
+ y="-615.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9268">./src/text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9270">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="157.7891"
+ height="30"
+ id="rect9272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9274">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ width="174.459"
+ height="30"
+ stroke="none"
+ id="rect9276" />
+ <text
+ x="1553.2705"
+ y="-824.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9278">./src/scale_denominator.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9280">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.459"
+ height="30"
+ id="rect9282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9284">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ width="219.3418"
+ height="30"
+ stroke="none"
+ id="rect9286" />
+ <text
+ x="635.8291"
+ y="50.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9288">./plugins/input/shape/shape_io.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9290">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.3418"
+ height="30"
+ id="rect9292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9294">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ width="92.8027"
+ height="30"
+ stroke="none"
+ id="rect9296" />
+ <text
+ x="1512.0986"
+ y="-420.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9298">./src/layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9300">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="92.8027"
+ height="30"
+ id="rect9302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9304">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ width="45.6816"
+ height="30"
+ stroke="none"
+ id="rect9306" />
+ <text
+ x="-33.8408"
+ y="2057.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9308">./agg</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9310">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="45.6816"
+ height="30"
+ id="rect9312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9314">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ width="151.5664"
+ height="30"
+ stroke="none"
+ id="rect9316" />
+ <text
+ x="1881.2168"
+ y="13.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9318">./src/libxml2_loader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9320">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.5664"
+ height="30"
+ id="rect9322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9324">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ width="229.1797"
+ height="30"
+ stroke="none"
+ id="rect9326" />
+ <text
+ x="-794.0898"
+ y="1220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9328">./agg/src/agg_vpgen_clip_polygon.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9330">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.1797"
+ height="30"
+ id="rect9332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9334">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ width="144.4941"
+ height="30"
+ stroke="none"
+ id="rect9336" />
+ <text
+ x="158.7529"
+ y="116.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9338">./plugins/input/shape</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9340">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="144.4941"
+ height="30"
+ id="rect9342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9344">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ width="249.4824"
+ height="30"
+ stroke="none"
+ id="rect9346" />
+ <text
+ x="550.2588"
+ y="2305.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9348">./bindings/python/mapnik_geometry.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9350">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="249.4824"
+ height="30"
+ id="rect9352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9354">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ width="287.334"
+ height="30"
+ stroke="none"
+ id="rect9356" />
+ <text
+ x="930.333"
+ y="1110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9358">./bindings/python/mapnik_text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9360">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="287.334"
+ height="30"
+ id="rect9362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9364">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ width="191.3984"
+ height="30"
+ stroke="none"
+ id="rect9366" />
+ <text
+ x="440.3008"
+ y="1825.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9368">./agg/src/agg_rounded_rect.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9370">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="191.3984"
+ height="30"
+ id="rect9372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9374">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ width="121.4961"
+ height="30"
+ stroke="none"
+ id="rect9376" />
+ <text
+ x="1548.252"
+ y="2084.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9378">./bindings/python</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9380">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.4961"
+ height="30"
+ id="rect9382" />
+ <path
+ fill="none"
+ d="M2577.5508 2232.655 L2889.043 2264.1677"
+ clip-path="url(#clipPath2)"
+ id="path9384" />
+ <path
+ fill="none"
+ d="M24.5742 1698.3611 L185.0576 1702.3578"
+ clip-path="url(#clipPath2)"
+ id="path9386" />
+ <path
+ fill="none"
+ d="M-31.6769 1682.5 L-131.8263 1613.1986 L-307.8319 1479.7761 L-322.1423 1467.1691 L-335.9341 1453.8378 L-420.4944 1355.8801 L-431.8936 1341.8081 L-442.9968 1329"
+ clip-path="url(#clipPath2)"
+ id="path9388" />
+ <path
+ fill="none"
+ d="M7.2593 1682.5 L170.8382 1540.3337 L183.5103 1528.4264 L195.0703 1515.1906 L203.2204 1499.588 L208.0298 1482.4165 L212.1165 1464.9495 L217.4223 1447.5245 L224.4582 1430.9707 L348.8411 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9390" />
+ <path
+ fill="none"
+ d="M-30.3421 1682.5 L-117.9062 1617.9313 L-127.6741 1609.3701 L-136.938 1599.8932 L-145.2881 1589.3641 L-152.7591 1578.7178 L-251.9406 1414.5"
+ clip-path="url(#clipPath2)"
+ id="path9392" />
+ <path
+ fill="none"
+ d="M-41.5549 1712.5 L-150.9451 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9394" />
+ <path
+ fill="none"
+ d="M-44.5742 1694.2324 L-603.877 1641.3727"
+ clip-path="url(#clipPath2)"
+ id="path9396" />
+ <path
+ fill="none"
+ d="M-0.4959 1682.5 L5.2959 1673.359 L54.5589 1589.4877 L61.0658 1576.5562 L66.893 1562.6425 L71.3597 1548.4495 L73.9725 1533.6312 L74.9174 1518.3745 L73.7647 1503.0833 L70.803 1487.9604 L65.953 1473.3381 L59.488 1459.3448 L52.1157 1446.1976 L-42.0651 1304"
+ clip-path="url(#clipPath2)"
+ id="path9398" />
+ <path
+ fill="none"
+ d="M-7.5982 1712.5 L14.0982 1848"
+ clip-path="url(#clipPath2)"
+ id="path9400" />
+ <path
+ fill="none"
+ d="M8.3456 1712.5 L221.1544 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9402" />
+ <path
+ fill="none"
+ d="M24.5742 1709.7097 L224.8548 1780.4376 L274.5859 1796.1027 L290.3831 1803.1301 L305.0963 1812.2388 L317.8884 1823.064 L329.0148 1835.4955 L338.6302 1848.3523 L455.3114 2029"
+ clip-path="url(#clipPath2)"
+ id="path9404" />
+ <path
+ fill="none"
+ d="M24.5742 1709.5155 L220.8472 1777.7257 L238.4817 1782.3004 L324.5341 1794.4855 L341.7867 1796.4042 L433.3008 1808.4272"
+ clip-path="url(#clipPath2)"
+ id="path9406" />
+ <path
+ fill="none"
+ d="M-0.9936 1682.5 L50.1437 1597.332 L57.3786 1583.8605 L63.929 1570.2368 L69.2742 1555.1427 L72.9572 1539.9404 L74.755 1524.0978 L74.5616 1508.144 L69.7308 1462.8016 L67.2398 1448.1791 L46.6858 1301.0886 L40.6985 1270.2456 L36.1484 1254.5295 L30.1596 1239.6921 L-68.7682 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9408" />
+ <path
+ fill="none"
+ d="M7.5011 1712.5 L84.9684 1778.8966 L97.4166 1792.4541 L107.5913 1806.808 L115.5777 1822.2261 L120.8528 1838.3977 L123.3011 1854.1149 L127.3981 1901.7179 L129.5949 1917.3544 L132.8063 1932.9053 L137.6825 1947.8722 L264.1679 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9410" />
+ <path
+ fill="none"
+ d="M-30.3804 1682.5 L-109.8009 1624.0464 L-121.1156 1614.7283 L-132.1969 1604.0846 L-142.184 1592.3759 L-150.7367 1579.3018 L-157.7693 1565.1106 L-163.0598 1550.7333 L-165.983 1534.505 L-167.597 1518.8418 L-168.8886 1410.1838 L-169.9251 1394.0894 L-172.5114 1377.2661 L-176.7595 1361.7198 L-298.6194 1022"
+ clip-path="url(#clipPath2)"
+ id="path9412" />
+ <path
+ fill="none"
+ d="M-13.0252 1682.5 L-42.9748 1534"
+ clip-path="url(#clipPath2)"
+ id="path9414" />
+ <path
+ fill="none"
+ d="M24.5742 1687.3417 L211.2763 1632.4862 L230.4907 1627.6432 L250.3716 1624.6504 L328.7023 1621.3073 L348.4196 1619.7538 L368.0745 1617.4214 L510.9839 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9416" />
+ <path
+ fill="none"
+ d="M-44.5742 1695.8385 L-164.7434 1690.0634 L-177.8356 1690.061 L-191.578 1690.8328 L-204.8772 1693.3619 L-217.7414 1697.4427 L-240.9324 1708.3999 L-358.6783 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9418" />
+ <path
+ fill="none"
+ d="M7.529 1682.5 L138.9264 1570.0598 L148.6751 1560.6741 L158.7948 1552.2384 L178.7862 1533.6653 L188.7202 1523.3728 L197.5696 1511.4668 L203.8828 1497.4987 L207.8515 1482.9614 L211.1029 1467.9121 L215.285 1452.8943 L221.2153 1438.4976 L228.5741 1424.6746 L238.2442 1412.2913 L248.6876 1400.8505 L261.0592 1390.6781 L274.4546 1382.137 L288.1776 1374.8389 L315.8387 1363.2257 L561.9354 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9420" />
+ <path
+ fill="none"
+ d="M-1.1162 1682.5 L53.6143 1590.0895 L61.9957 1573.4156 L68.9728 1555.3479 L73.5761 1536.5132 L76.2372 1517.584 L79.7695 1480.3877 L82.222 1461.5187 L145.9323 1150"
+ clip-path="url(#clipPath2)"
+ id="path9422" />
+ <path
+ fill="none"
+ d="M-21.1026 1712.5 L-106.8676 1828.3712 L-116.5694 1839.3942 L-127.7954 1849.3232 L-139.8821 1858.0498 L-165.3045 1872.8499 L-284.2802 1934.2721 L-298.4405 1942.3529 L-312.5903 1951.3605 L-339.184 1971.7175 L-480.0865 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9424" />
+ <path
+ fill="none"
+ d="M-19.2353 1712.5 L-60.2772 1779.1603 L-74.3468 1803.9298 L-80.6547 1816.9384 L-86.1567 1831.2423 L-89.365 1846.1083 L-90.6617 1861.1736 L-90.0964 1876.3617 L-86.5496 1891.6437 L-81.7927 1905.8558 L-74.9382 1919.4861 L-66.4475 1932.3898 L-47.7518 1955.9055 L9.8738 2025.3236 L17.6516 2039.1315 L21.1875 2054.6111 L23.7724 2225"
+ clip-path="url(#clipPath2)"
+ id="path9426" />
+ <path
+ fill="none"
+ d="M-44.5742 1685.7426 L-436.3906 1552.5"
+ clip-path="url(#clipPath2)"
+ id="path9428" />
+ <path
+ fill="none"
+ d="M-34.4191 1682.5 L-422.8861 1443.8751 L-438.5209 1435.4724 L-485.9133 1412.2606 L-501.7971 1403.8612 L-517.0173 1393.6337 L-530.9767 1381.8546 L-672.3918 1231.5"
+ clip-path="url(#clipPath2)"
+ id="path9430" />
+ <path
+ fill="none"
+ d="M15.3423 1682.5 L310.1577 1508"
+ clip-path="url(#clipPath2)"
+ id="path9432" />
+ <path
+ fill="none"
+ d="M-19.574 1712.5 L-228.926 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9434" />
+ <path
+ fill="none"
+ d="M1705.7683 -190 L1229.7317 93"
+ clip-path="url(#clipPath2)"
+ id="path9436" />
+ <path
+ fill="none"
+ d="M1792.3223 -207.5711 L1889.0596 -211.6272 L1904.3265 -213.2381 L1919.7518 -216.2674 L1934.6373 -220.1078 L2143.3914 -289.0011"
+ clip-path="url(#clipPath2)"
+ id="path9438" />
+ <path
+ fill="none"
+ d="M1778.2689 -190 L1871.4453 -160.432"
+ clip-path="url(#clipPath2)"
+ id="path9440" />
+ <path
+ fill="none"
+ d="M1737.709 -220 L1784.8777 -325.4607 L1792.1422 -343.3415 L1797.3993 -362.1091 L1798.9524 -381.2829 L1796.4418 -400.2448 L1791.0763 -418.4256 L1784.3788 -435.7887 L1742.769 -535.712 L1737.2317 -553.2609 L1736.0367 -571.5535 L1739.8428 -589.6634 L1745.2104 -606.9964 L1803.3124 -775"
+ clip-path="url(#clipPath2)"
+ id="path9442" />
+ <path
+ fill="none"
+ d="M1722.7018 -190 L1671.9998 -98.3503 L1664.8926 -83.9824 L1658.9614 -68.4607 L1656.0035 -52.007 L1657.1727 -35.4369 L1662.0831 -19.4679 L1703.2703 67.3736 L1708.6812 82.8308 L1711.2114 99.089 L1709.9719 115.4139 L1705.568 131.1046 L1687.5476 173.7935 L1681.0388 187.5816 L1675.4331 201.3511 L1662.2848 228.414 L1555.0521 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9444" />
+ <path
+ fill="none"
+ d="M1737.8416 -220 L1790.4821 -335.4135 L1796.799 -350.5091 L1942.6581 -740.9563 L1956.9553 -771.0897 L2024.962 -898"
+ clip-path="url(#clipPath2)"
+ id="path9446" />
+ <path
+ fill="none"
+ d="M1730.4249 -190 L1725.5751 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9448" />
+ <path
+ fill="none"
+ d="M1715.6113 -220 L1609.3069 -323.6192 L1597.2324 -332.56 L1584.4562 -339.7423 L1534.261 -364.9576 L1521.441 -372.2469 L1509.2654 -381.3355 L1498.1863 -390.8954 L1395.7156 -491.3533 L1384.5231 -501.4753 L1372.7471 -511.0984 L1359.075 -518.9822 L1316.8344 -536.9285 L1302.9846 -545.2017 L1290.5354 -554.8357 L1278.8702 -565.0334 L1206.5126 -635"
+ clip-path="url(#clipPath2)"
+ id="path9450" />
+ <path
+ fill="none"
+ d="M1721.9266 -190 L1674.641 -111.8283 L1585.7194 54.9422 L1578.7654 70.2131 L1572.662 85.898 L1536.8547 246"
+ clip-path="url(#clipPath2)"
+ id="path9452" />
+ <path
+ fill="none"
+ d="M1737.8553 -220 L1793.4465 -341.6367 L1861.5244 -516.049 L1869.9036 -533.5408 L1879.9336 -550.3941 L1891.3851 -566.1861 L2006.2628 -707"
+ clip-path="url(#clipPath2)"
+ id="path9454" />
+ <path
+ fill="none"
+ d="M1718.7335 -220 L1563.7665 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9456" />
+ <path
+ fill="none"
+ d="M1743.1837 -220 L1839.7024 -338.8295 L1870.7987 -373.4109 L1959.0747 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9458" />
+ <path
+ fill="none"
+ d="M1737.6589 -220 L1759.5264 -269.2584 L1789.1104 -333.3076 L1793.4485 -345.0605 L1797.1232 -357.1674 L1799.2274 -369.9363 L1800.329 -382.1035 L1800.6512 -394.3187 L1795.0359 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9460" />
+ <path
+ fill="none"
+ d="M1686 -220 L1444.5 -300.5"
+ clip-path="url(#clipPath2)"
+ id="path9462" />
+ <path
+ fill="none"
+ d="M1737.9821 -190 L1759.0538 -144.7306 L1763.9989 -132.3875 L1786.4437 -83.6733 L1791.2949 -70.4718 L1794.7535 -56.8085 L1823.2671 190"
+ clip-path="url(#clipPath2)"
+ id="path9464" />
+ <path
+ fill="none"
+ d="M1792.3223 -205.6755 L1912.9915 -207.0047 L1925.9236 -205.9872 L1938.9326 -203.1653 L1962.4874 -194.9545 L2073.5273 -148"
+ clip-path="url(#clipPath2)"
+ id="path9466" />
+ <path
+ fill="none"
+ d="M1669.6777 -210.6785 L1654.0314 -212.1274 L1634.9186 -214.42 L1615.7456 -215.458 L1429.9047 -232.3959 L1393.85 -234.3698 L1375.6881 -233.3309 L1359.0819 -229.8459 L1342.7466 -224.1006 L1327.733 -217.4407 L1150.8571 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9468" />
+ <path
+ fill="none"
+ d="M1715.6975 -220 L1618.0374 -315.7292 L1606.6896 -325.8326 L1593.8826 -334.5842 L1498.2308 -379.2232 L1365.6914 -444"
+ clip-path="url(#clipPath2)"
+ id="path9470" />
+ <path
+ fill="none"
+ d="M1719.4562 -220 L1647.702 -313.2364 L1639.4208 -324.8945 L1631.936 -337.4316 L1626.1655 -351.033 L1622.7638 -364.8717 L1621.6257 -379.3865 L1622.1956 -393.6915 L1651.7098 -587"
+ clip-path="url(#clipPath2)"
+ id="path9472" />
+ <path
+ fill="none"
+ d="M1719.4407 -220 L1647.3424 -313.5588 L1638.4584 -326.7014 L1630.6166 -340.589 L1624.4246 -356.2978 L1621.1759 -371.7042 L1611.754 -432.9737 L1608.1443 -448.4993 L1571.5094 -565.6849 L1565.8434 -580.5214 L1432.4658 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9474" />
+ <path
+ fill="none"
+ d="M1689.9011 -220 L1579.2606 -260.3808 L1562.4448 -268.2509 L1547.4619 -279.0468 L1453.738 -366.6343 L1438.5922 -377.8836 L1421.4435 -385.7967 L1403.1199 -389.4229 L1331.2155 -394.633 L1313.1571 -398.5897 L1296.312 -405.6636 L1004.6323 -564"
+ clip-path="url(#clipPath2)"
+ id="path9476" />
+ <path
+ fill="none"
+ d="M1761.4546 -220 L1868.0454 -272.5"
+ clip-path="url(#clipPath2)"
+ id="path9478" />
+ <path
+ fill="none"
+ d="M1737.8378 -190 L1782.3468 -92.3615 L1788.3433 -77.1847 L1792.8481 -60.652 L1794.0735 -43.5573 L1792.6171 -26.5087 L1758.4685 174.4238 L1756.068 191.6194 L1755.7196 208.9639 L1758.5198 225.972 L1763.705 241.887 L1786.6254 300.2224 L1792.8827 313.9514 L1798.786 328.3393 L1828.4285 396"
+ clip-path="url(#clipPath2)"
+ id="path9480" />
+ <path
+ fill="none"
+ d="M1715.6499 -220 L1613.6167 -319.7058 L1600.3414 -330.6942 L1585.488 -339.5492 L1539.1113 -362.3184 L1523.2679 -371.3719 L1508.7147 -382.5849 L1496.9186 -396.8426 L1365.9385 -605"
+ clip-path="url(#clipPath2)"
+ id="path9482" />
+ <path
+ fill="none"
+ d="M1669.6777 -211.4206 L1570.3632 -221.8192 L1552.5938 -223.1205 L1391.7688 -241.755 L1373.3782 -245.8518 L1216.3251 -299"
+ clip-path="url(#clipPath2)"
+ id="path9484" />
+ <path
+ fill="none"
+ d="M1719.3217 -220 L1652.9008 -305.3127 L1637.6135 -327.1343 L1630.889 -339.1896 L1625.6447 -352.1444 L1622.0043 -365.6252 L1617.4021 -392.0246 L1616.0254 -404.7892 L1611.8835 -431.1289 L1608.2532 -444.5484 L1601.9314 -457.2315 L1593.8871 -468.5936 L1525.8938 -542"
+ clip-path="url(#clipPath2)"
+ id="path9486" />
+ <path
+ fill="none"
+ d="M1719.7517 -190 L1512.821 85.951 L1501.3052 99.9877 L1488.329 112.7794 L1384.1188 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9488" />
+ <path
+ fill="none"
+ d="M1729.2328 -220 L1712.2672 -364"
+ clip-path="url(#clipPath2)"
+ id="path9490" />
+ <path
+ fill="none"
+ d="M1722.5846 -190 L1681.4597 -116.6974 L1674.6794 -103.1759 L1667.4226 -89.8639 L1660.6564 -74.698 L1656.6792 -58.9427 L1653.626 -41.7401 L1651.9781 -24.6842 L1650.8036 -7.3245 L1649.0201 10.5424 L1642.7401 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9492" />
+ <path
+ fill="none"
+ d="M1719.2087 -220 L1694.7434 -251.1231 L1686.0302 -263.1407 L1649.7358 -309.5934 L1641.0094 -322.1074 L1632.9093 -335.3819 L1626.6534 -350.1132 L1622.9349 -365.8031 L1621.8632 -381.9264 L1623.8821 -397.968 L1628.7859 -413.585 L1635.8981 -428.3178 L1712.8442 -546.8633 L1721.0911 -560.9402 L1727.7742 -576.067 L1731.7117 -592.0207 L1732.0756 -608.6171 L1729.2048 -624.3967 L1717.8364 -653.6657 L1673.2709 -747.8106 L1666.1648 -761.2916 L1660.1403 -774.6749 L1640.9241 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9494" />
+ <path
+ fill="none"
+ d="M1669.6777 -191.6222 L1458.2584 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9496" />
+ <path
+ fill="none"
+ d="M1739.1447 -190 L1863.7595 39.5027 L1871.1771 51.7794 L1879.2983 64.0357 L1898.2384 86.2591 L1960.827 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9498" />
+ <path
+ fill="none"
+ d="M1743.6166 -220 L1839.2838 -333.7397 L1850.5449 -344.3013 L1863.4709 -352.6133 L1878.0291 -358.5926 L1893.3893 -361.687 L1968.7413 -367.1797 L1984.5386 -369.0039 L2000.3026 -372.444 L2016.0938 -377.015 L2030.8204 -383.4816 L2045.321 -390.3967 L2183.5708 -466"
+ clip-path="url(#clipPath2)"
+ id="path9500" />
+ <path
+ fill="none"
+ d="M1715.2642 -190 L1468.7358 45"
+ clip-path="url(#clipPath2)"
+ id="path9502" />
+ <path
+ fill="none"
+ d="M1738.1113 -190 L1823.2002 -10.5217 L1911.3304 184.7965 L1921.2964 202.1295 L1933.5916 217.8769 L2028.3225 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9504" />
+ <path
+ fill="none"
+ d="M1746.3147 -190 L1934.6853 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9506" />
+ <path
+ fill="none"
+ d="M1719.8269 -189.9794 L1710.9945 -178.7845 L1516.5352 81.5281 L1506.3717 94.2074 L1495.1205 106.1388 L1481.5793 115.3665 L1466.39 121.0814 L1450.9139 124.6082 L1362.7417 139.9343 L1347.4766 143.7284 L1332.6359 149.6314 L1319.3198 158.2387 L1307.5835 169.312 L1287.3872 193.3884 L672.594 973.4279 L441.6343 1256.7087 L430.5662 1268.6992 L418.3392 1279.9236 L405.4018 1289.8066 L264.9038 1384.0872 L163.1076 1464"
+ clip-path="url(#clipPath2)"
+ id="path9508" />
+ <path
+ fill="none"
+ d="M250.5503 127.5 L428.9006 228.2618 L462.1554 250.634 L726.0931 440"
+ clip-path="url(#clipPath2)"
+ id="path9510" />
+ <path
+ fill="none"
+ d="M233.8562 127.5 L362.6438 323.5"
+ clip-path="url(#clipPath2)"
+ id="path9512" />
+ <path
+ fill="none"
+ d="M233.7425 97.5 L409.7575 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9514" />
+ <path
+ fill="none"
+ d="M225.5602 127.5 L249.045 353.2842 L331.5446 772"
+ clip-path="url(#clipPath2)"
+ id="path9516" />
+ <path
+ fill="none"
+ d="M151.7529 113.9661 L-66.7188 118.3996"
+ clip-path="url(#clipPath2)"
+ id="path9518" />
+ <path
+ fill="none"
+ d="M296.2471 103.2322 L628.8291 60.5686"
+ clip-path="url(#clipPath2)"
+ id="path9520" />
+ <path
+ fill="none"
+ d="M214.4915 127.5 L-46.9915 540"
+ clip-path="url(#clipPath2)"
+ id="path9522" />
+ <path
+ fill="none"
+ d="M2239.3679 1998 L2155.4436 2071.4805 L2143.0876 2080.9946 L2129.8374 2089.5989 L2115.9492 2096.5876 L2101.1887 2102.0188 L2086.0796 2105.4854 L2071.1526 2107.5623 L1841.6396 2119.9771 L1826.8549 2120.2129 L1811.7775 2119.8667 L1796.7798 2118.3806 L1662.748 2092.3142"
+ clip-path="url(#clipPath2)"
+ id="path9524" />
+ <path
+ fill="none"
+ d="M1572.8621 -285.5 L1490.1808 -98.6625 L1481.3794 -82.0423 L1470.7261 -66.2432 L1457.8481 -52.605 L1443.4885 -41.2841 L1412.5255 -21.1364 L1228.6635 93"
+ clip-path="url(#clipPath2)"
+ id="path9526" />
+ <path
+ fill="none"
+ d="M1574.2365 -285.5 L1458.2635 45"
+ clip-path="url(#clipPath2)"
+ id="path9528" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.875 L1738.1715 -280.3118 L1750.5458 -277.2058 L1762.5206 -272.6636 L1773.9989 -266.3214 L1784.2484 -258.9727 L1900.7533 -160.5"
+ clip-path="url(#clipPath2)"
+ id="path9530" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6243 L1682.269 -291.1569 L1699.8048 -290.2136 L1717.6859 -290.6404 L1735.2581 -293.9877 L1751.9829 -299.9295 L1782.4274 -314.1314 L1796.3497 -321.4707 L1811.2347 -328.2465 L1839.545 -342.5801 L1868.8745 -355.7003 L1884.9718 -359.8295 L1900.8519 -361.6436 L1917.1348 -359.9464 L2114.6455 -319"
+ clip-path="url(#clipPath2)"
+ id="path9532" />
+ <path
+ fill="none"
+ d="M1581.8135 -285.5 L1639.1865 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9534" />
+ <path
+ fill="none"
+ d="M1585.9137 -315.5 L1626.9812 -411.5464 L1635.4854 -427.641 L1709.5739 -541.4645 L1718.5413 -556.3099 L1726.7808 -571.8899 L1802.88 -775"
+ clip-path="url(#clipPath2)"
+ id="path9536" />
+ <path
+ fill="none"
+ d="M1579.1661 -285.5 L1570.9286 84.607 L1571.356 101.6438 L1573.7692 118.6585 L1578.5906 135.3658 L1612.851 229.6021 L1617.0092 246.5683 L1617.9976 264.2934 L1615.7949 281.7931 L1611.1025 298.5992 L1553.4745 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9538" />
+ <path
+ fill="none"
+ d="M1585.9491 -315.5 L1628.7637 -415.0833 L1636.6608 -429.5917 L1716.1844 -549.9628 L1741.313 -592.6497 L1751.0687 -606.4507 L1761.7155 -618.8658 L2019.1653 -898"
+ clip-path="url(#clipPath2)"
+ id="path9540" />
+ <path
+ fill="none"
+ d="M1588.1608 -285.5 L1716.3392 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9542" />
+ <path
+ fill="none"
+ d="M1564.959 -315.5 L1392.1792 -493.7342 L1380.0123 -505.272 L1366.1857 -515.327 L1350.8662 -522.8212 L1319.0122 -536.3331 L1303.6681 -545.1216 L1289.8102 -555.9888 L1276.7415 -567.3019 L1252.1761 -591.2873 L1206.6294 -635"
+ clip-path="url(#clipPath2)"
+ id="path9544" />
+ <path
+ fill="none"
+ d="M1578.2711 -285.5 L1534.7289 246"
+ clip-path="url(#clipPath2)"
+ id="path9546" />
+ <path
+ fill="none"
+ d="M1585.9148 -315.5 L1623.9624 -404.4688 L1630.5997 -418.2294 L1638.6387 -431.1348 L1648.6869 -442.6392 L1660.5364 -452.3571 L1673.6339 -459.9249 L1687.4928 -466.009 L1797.6302 -504.2472 L1812.218 -509.8861 L1826.6222 -517.39 L1839.3597 -527.7557 L1862.4513 -551.5592 L1932.7964 -628.1892 L1945.5214 -641.296 L2004.9359 -707"
+ clip-path="url(#clipPath2)"
+ id="path9548" />
+ <path
+ fill="none"
+ d="M1576.1129 -315.5 L1554.8871 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9550" />
+ <path
+ fill="none"
+ d="M1600.1318 -287.4944 L1707.2042 -220"
+ clip-path="url(#clipPath2)"
+ id="path9552" />
+ <path
+ fill="none"
+ d="M1589.1985 -285.5 L1661.0529 -174.3671 L1671.0265 -160.6411 L1682.8058 -148.7924 L1696.5781 -138.8818 L1710.4188 -131.841 L1753.0952 -113.1987 L1780.0155 -98.1506 L1926.3145 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9554" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6609 L1686.9719 -290.92 L1702.6021 -290.1562 L1718.5648 -290.5393 L1734.2698 -293.5994 L1749.1108 -299.236 L1762.6196 -306.9124 L1786.0736 -324.64 L1955.3499 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9556" />
+ <path
+ fill="none"
+ d="M1558.8682 -302.2193 L1460.1221 -310.4482"
+ clip-path="url(#clipPath2)"
+ id="path9558" />
+ <path
+ fill="none"
+ d="M1585.8168 -315.5 L1625.8408 -410.543 L1631.3073 -420.9417 L1637.6289 -430.8379 L1645.0138 -440.2143 L1653.0944 -448.5581 L1669.6295 -463.5915 L1776.2988 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9560" />
+ <path
+ fill="none"
+ d="M1583.7883 -285.5 L1651.3751 -49.0925 L1657.1646 -31.9459 L1664.5016 -14.997 L1674.2026 0.9056 L1813.9171 190"
+ clip-path="url(#clipPath2)"
+ id="path9562" />
+ <path
+ fill="none"
+ d="M1562.7354 -285.5 L1406.2646 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9564" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.8126 L1735.9352 -280.1231 L1753.366 -275.8355 L1770.0992 -269.3911 L1786.1671 -261.7391 L1846.3505 -230.1474 L1862.1223 -222.5492 L1878.9531 -216.0268 L1896.1616 -211.8175 L1930.9523 -204.9131 L1948.24 -199.5791 L2072.7815 -148"
+ clip-path="url(#clipPath2)"
+ id="path9566" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.0663 L1433.3401 -247.8382 L1418.0536 -243.2349 L1402.4036 -239.6292 L1370.939 -233.1345 L1355.0715 -228.8596 L1340.0222 -222.6089 L1151.171 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9568" />
+ <path
+ fill="none"
+ d="M1558.8682 -313.8748 L1358.1388 -444"
+ clip-path="url(#clipPath2)"
+ id="path9570" />
+ <path
+ fill="none"
+ d="M1583.8586 -315.5 L1612.3093 -413.4114 L1650.684 -587"
+ clip-path="url(#clipPath2)"
+ id="path9572" />
+ <path
+ fill="none"
+ d="M1566.2933 -315.5 L1514.8843 -373.89 L1504.1537 -387.4749 L1495.3708 -403.1423 L1489.4203 -419.789 L1460.8938 -520.2078 L1456.6606 -538.3257 L1453.6722 -556.3632 L1452.3645 -574.7655 L1449.7781 -629.4624 L1430.1891 -809.7579 L1428.8347 -827.6007 L1426.6023 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9574" />
+ <path
+ fill="none"
+ d="M1558.8682 -312.1941 L1452.7843 -372.322 L1440.3207 -378.6023 L1427.2346 -384.2264 L1413.2999 -388.1193 L1399.0243 -390.3098 L1343.8071 -393.2482 L1329.5986 -394.5866 L1315.0881 -397.9596 L1301.3245 -402.9852 L1288.3081 -409.2307 L1004.5057 -564"
+ clip-path="url(#clipPath2)"
+ id="path9576" />
+ <path
+ fill="none"
+ d="M1600.1318 -312.8633 L1685.4681 -364"
+ clip-path="url(#clipPath2)"
+ id="path9578" />
+ <path
+ fill="none"
+ d="M1572.8585 -285.5 L1487.5991 -92.9386 L1478.4438 -76.6212 L1468.6229 -61.6985 L1402.7 22.2378 L1394.6174 38.8205 L1389.4469 56.8215 L1368.6556 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9580" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5135 L1693.5884 -289.5154 L1709.191 -288.7659 L1837.5674 -287.9075"
+ clip-path="url(#clipPath2)"
+ id="path9582" />
+ <path
+ fill="none"
+ d="M1583.7517 -315.5 L1607.5015 -399.2886 L1610.8323 -416.8157 L1610.6674 -434.742 L1607.6373 -452.1016 L1580.8672 -566.9084 L1577.3993 -584.0591 L1575.7869 -601.7263 L1577.35 -619.4314 L1580.9305 -636.3984 L1614.8164 -764.4524 L1619.7084 -780.1863 L1624.0825 -796.5162 L1629.0833 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9584" />
+ <path
+ fill="none"
+ d="M1583.8019 -285.5 L1652.9181 -44.5011 L1657.9495 -28.9759 L1664.0696 -13.6799 L1706.2524 72.6705 L1712.1622 88.0203 L1755.9924 223.5812 L1761.5636 238.7214 L1828.6061 396"
+ clip-path="url(#clipPath2)"
+ id="path9586" />
+ <path
+ fill="none"
+ d="M1589.1637 -285.5 L1664.5575 -168.474 L1674.3359 -156.5337 L1685.8951 -145.9557 L1699.149 -137.4223 L1755.5259 -110.7229 L1769.1538 -101.467 L1780.8571 -89.4849 L1791.1833 -75.2934 L1809.1395 -47.7027 L1874.6827 57.0747 L1886.2128 72.1643 L1898.6288 86.4205 L1960.8711 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9588" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5899 L1680.4246 -291.1563 L1695.1542 -290.3194 L1710.582 -290.1999 L1726.1627 -291.7365 L1741.3241 -295.5708 L1755.6965 -301.1228 L1857.4005 -351.0461 L1870.8876 -356.5639 L1885.2015 -360.5438 L1899.5851 -362.6042 L1969.0137 -367.0708 L1983.0198 -368.654 L1997.3274 -370.9745 L2011.1989 -374.9344 L2024.6467 -380.273 L2049.2156 -392.3064 L2183.6387 -466"
+ clip-path="url(#clipPath2)"
+ id="path9590" />
+ <path
+ fill="none"
+ d="M1566.01 -315.4926 L1563.0609 -318.6098 L1506.4263 -383.1129 L1498.4028 -393.4107 L1491.4194 -403.7922 L1366.5425 -604.9753"
+ clip-path="url(#clipPath2)"
+ id="path9592" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.1273 L1428.6742 -246.6027 L1414.7637 -243.1767 L1400.3463 -241.7605 L1385.8116 -243.0361 L1372.291 -245.7882 L1216.0447 -299"
+ clip-path="url(#clipPath2)"
+ id="path9594" />
+ <path
+ fill="none"
+ d="M1589.1405 -285.5 L1662.5685 -171.2502 L1672.3359 -158.9074 L1684.024 -147.4209 L1697.4471 -138.3556 L1711.6204 -131.2945 L1739.769 -118.6583 L1753.9266 -111.6033 L1767.6046 -102.8544 L1779.1833 -91.2369 L1788.0878 -77.7131 L1910.2734 182.3812 L1918.0563 197.3588 L1928.0577 211.2185 L1939.489 224.0622 L2028.2697 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9596" />
+ <path
+ fill="none"
+ d="M1566.3265 -315.5 L1508.5015 -381.3427 L1499.0966 -395.045 L1493.3429 -410.4246 L1491.4697 -427.2559 L1492.8239 -443.7798 L1503.1702 -508.4587 L1509.2715 -542"
+ clip-path="url(#clipPath2)"
+ id="path9598" />
+ <path
+ fill="none"
+ d="M389.0941 -587 L-119.5941 -261"
+ clip-path="url(#clipPath2)"
+ id="path9600" />
+ <path
+ fill="none"
+ d="M128.5263 1464 L-36.5263 1304"
+ clip-path="url(#clipPath2)"
+ id="path9602" />
+ <path
+ fill="none"
+ d="M144.218 1464 L148.782 1150"
+ clip-path="url(#clipPath2)"
+ id="path9604" />
+ <path
+ fill="none"
+ d="M151.1333 1494 L243.8667 1689"
+ clip-path="url(#clipPath2)"
+ id="path9606" />
+ <path
+ fill="none"
+ d="M193.2402 1482.5999 L221.5254 1484.6676"
+ clip-path="url(#clipPath2)"
+ id="path9608" />
+ <path
+ fill="none"
+ d="M131.7539 1494 L55.0677 1587.9316 L42.7085 1601.2833 L29.2008 1613.6403 L14.6157 1624.2771 L-30.3586 1651.8414 L-44.221 1662.6852 L-54.3718 1676.7185 L-60.8013 1692.8674 L-91.1062 1788.2023 L-96.9305 1804.7229 L-104.2114 1820.9052 L-114.1318 1835.8052 L-126.848 1848.3961 L-141.6743 1858.7947 L-188.0667 1884.5151 L-282.5689 1933.7706 L-298.8415 1943.1725 L-314.7511 1953.4357 L-329.8501 1964.6443 L-400.5812 2021.3927 L-414.3242 2033.2428 L-480.0018 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9610" />
+ <path
+ fill="none"
+ d="M136.8978 1464 L44.4644 1268.7787 L30.7535 1243.0776 L22.1897 1230.6184 L11.9742 1219.5244 L0.3747 1209.786 L-281.4855 1022"
+ clip-path="url(#clipPath2)"
+ id="path9612" />
+ <path
+ fill="none"
+ d="M114.6057 1464 L19.7533 1415.5966 L5.1171 1409.1525 L-10.0416 1403.6228 L-25.3298 1399.9612 L-41.5699 1398.2047 L-57.5674 1398.7446 L-73.0805 1401.1993 L-88.2248 1405.7168 L-102.3748 1411.7216 L-115.7571 1419.2593 L-412.0113 1622.5936 L-426.6128 1631.0859 L-442.5374 1638.3893 L-459.532 1643.1439 L-477.3163 1645.5321 L-495.0157 1645.5688 L-530.7623 1644.0494 L-603.877 1638.6968"
+ clip-path="url(#clipPath2)"
+ id="path9614" />
+ <path
+ fill="none"
+ d="M158.371 1494 L187.1266 1524.0143 L197.6006 1535.7157 L208.6994 1546.4695 L219.3031 1557.908 L242.3572 1579.9839 L254.935 1590.5386 L268.6319 1600.2789 L283.2219 1608.0371 L298.8794 1613.9297 L314.9249 1617.7449 L331.4337 1619.5149 L348.0342 1619.0803 L364.3559 1617.3861 L380.0265 1615.2402 L510.7629 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9616" />
+ <path
+ fill="none"
+ d="M94.7598 1489.3663 L25.25 1504"
+ clip-path="url(#clipPath2)"
+ id="path9618" />
+ <path
+ fill="none"
+ d="M155.4991 1464 L346.0009 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9620" />
+ <path
+ fill="none"
+ d="M115.0461 1464 L39.6685 1424.9496 L8.9389 1410.5149 L-6.7761 1404.1628 L-84.1233 1378.9407 L-98.8205 1373.088 L-217.905 1317.8275 L-231.9918 1312.7723 L-246.5594 1309.5073 L-261.5918 1307.9351 L-317.872 1308.4144 L-368.2109 1310.45"
+ clip-path="url(#clipPath2)"
+ id="path9622" />
+ <path
+ fill="none"
+ d="M136.8183 1464 L-68.8183 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9624" />
+ <path
+ fill="none"
+ d="M139.0195 1494 L21.4805 1848"
+ clip-path="url(#clipPath2)"
+ id="path9626" />
+ <path
+ fill="none"
+ d="M137.2531 1494 L45.4936 1698.0031 L38.4408 1711.5551 L30.6577 1724.6348 L20.0462 1735.8912 L7.5286 1744.2808 L-31.3456 1765.874 L-44.1084 1774.0631 L-55.9533 1783.681 L-66.6299 1794.6614 L-75.9345 1806.4084 L-228.7105 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9628" />
+ <path
+ fill="none"
+ d="M131.8724 1494 L58.0749 1585.2761 L48.5865 1596.0686 L38.2552 1606.5284 L26.8 1616.1461 L14.9864 1624.6083 L-33.392 1653.4683 L-56.7115 1671.0442 L-165.1028 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9630" />
+ <path
+ fill="none"
+ d="M145.7432 1494 L170.5621 1707.5676 L173.274 1721.3608 L176.9338 1735.2415 L233.8552 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9632" />
+ <path
+ fill="none"
+ d="M143.1595 1494 L134.3284 1651.611 L125.1812 1858.2568 L123.4991 1875.0447 L120.446 1891.9172 L28.1562 2225"
+ clip-path="url(#clipPath2)"
+ id="path9634" />
+ <path
+ fill="none"
+ d="M114.9596 1464 L32.9453 1421.6379 L-1.0743 1406.0146 L-18.5145 1399.7577 L-71.2901 1383.0033 L-88.9296 1376.5465 L-106.0097 1368.7263 L-238.8289 1302.1188 L-409.014 1224.1451 L-427.4155 1217.8203 L-446.496 1213.999 L-465.6518 1212.6815 L-571.9102 1214.5187"
+ clip-path="url(#clipPath2)"
+ id="path9636" />
+ <path
+ fill="none"
+ d="M115.0747 1464 L26.8791 1418.2637 L1.6098 1407.1744 L-11.6988 1402.4895 L-25.5129 1399.5509 L-39.428 1397.7089 L-53.2746 1396.8475 L-182.7529 1398.5009"
+ clip-path="url(#clipPath2)"
+ id="path9638" />
+ <path
+ fill="none"
+ d="M158.4073 1494 L233.2235 1571.894 L245.2775 1583.5159 L257.7588 1594.7755 L511.0151 1806"
+ clip-path="url(#clipPath2)"
+ id="path9640" />
+ <path
+ fill="none"
+ d="M143.4499 1494 L128.6067 1898.7615 L129.6534 1916.7771 L133.5966 1934.4972 L144.7699 1967.9235 L264.0977 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9642" />
+ <path
+ fill="none"
+ d="M157.9143 1494 L239.0956 1581.5155 L299.5429 1639.5773 L309.3708 1650.3474 L318.2313 1662.1793 L325.1808 1675.1222 L341.235 1713.9014 L459.376 2029"
+ clip-path="url(#clipPath2)"
+ id="path9644" />
+ <path
+ fill="none"
+ d="M131.9298 1494 L59.0988 1584.5089 L39.4312 1605.1343 L27.9236 1614.6936 L15.4433 1623.2069 L1.9076 1630.1975 L-12.1443 1635.9338 L-196.2444 1689.7206 L-211.4697 1695.0406 L-226.6018 1701.6837 L-241.4386 1709.1649 L-358.5241 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9646" />
+ <path
+ fill="none"
+ d="M115.1774 1464 L45.9922 1427.9943 L17.8225 1414.6093 L3.2932 1408.3326 L-12.0923 1402.9446 L-27.8721 1399.5634 L-43.8078 1398.2095 L-59.8553 1398.9216 L-75.4321 1401.8431 L-90.507 1406.4702 L-105.0128 1412.959 L-118.572 1420.2053 L-131.5067 1427.7472 L-143.8491 1435.9572 L-156.4999 1443.1549 L-208.0187 1474.8807 L-222.4372 1482.162 L-238.3481 1487.8889 L-269.2329 1495.8068 L-404.4922 1522.5"
+ clip-path="url(#clipPath2)"
+ id="path9648" />
+ <path
+ fill="none"
+ d="M163.4566 1464 L246.2284 1400.1873 L260.1052 1390.4387 L274.5361 1381.6288 L289.8481 1374.1788 L320.3453 1361.8997 L350.8412 1351.5752 L365.7409 1345.8651 L562.049 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9650" />
+ <path
+ fill="none"
+ d="M-182.8386 -713.5 L-464.6614 -874"
+ clip-path="url(#clipPath2)"
+ id="path9652" />
+ <path
+ fill="none"
+ d="M-146.8453 -713.5 L66.8453 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9654" />
+ <path
+ fill="none"
+ d="M-179.9566 -683.5 L-556.0435 -443"
+ clip-path="url(#clipPath2)"
+ id="path9656" />
+ <path
+ fill="none"
+ d="M-161.2963 -713.5 L-332.2037 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9658" />
+ <path
+ fill="none"
+ d="M-441.3644 -904 L26.8644 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9660" />
+ <path
+ fill="none"
+ d="M-493.8796 -874 L-576.6204 -443"
+ clip-path="url(#clipPath2)"
+ id="path9662" />
+ <path
+ fill="none"
+ d="M-484.8235 -904 L-343.1765 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9664" />
+ <path
+ fill="none"
+ d="M1474.5735 2339 L1326.7584 2276.4133 L1308.9584 2269.8667 L1290.6266 2264.2744 L1271.7128 2260.5183 L1196.8739 2249.6672 L1177.7106 2246.0295 L1122.927 2232.1714 L996.0959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9666" />
+ <path
+ fill="none"
+ d="M1503.9481 2339 L1255.6714 1723.624 L1242.3505 1694.6458 L1130.8816 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9668" />
+ <path
+ fill="none"
+ d="M1474.5431 2339 L1322.069 2274.4961 L1303.8984 2268.2122 L1285.0522 2263.4204 L1265.6094 2261.2283 L1246.234 2261.4336 L1227.1411 2263.3792 L978.9871 2301.2107 L960.8951 2303.2319 L942.4762 2304.3843 L906.9919 2304.9417 L792.7412 2303.2964"
+ clip-path="url(#clipPath2)"
+ id="path9670" />
+ <path
+ fill="none"
+ d="M1518.1578 2369 L1656.8422 2624"
+ clip-path="url(#clipPath2)"
+ id="path9672" />
+ <path
+ fill="none"
+ d="M1529.2338 2369 L1729.9617 2525.5437 L1741.25 2535.3298 L1752.4939 2545.8992 L1763.1542 2557.5071 L1772.4307 2570.2263 L1780.174 2583.7786 L1786.6165 2597.8826 L1797.2206 2626.0237 L1801.7369 2640.0129 L1812.5941 2668.3142 L1818.7988 2682.1631 L1928.7854 2883"
+ clip-path="url(#clipPath2)"
+ id="path9674" />
+ <path
+ fill="none"
+ d="M1511.5278 2369 L1513.1466 2384.8933 L1514.204 2400.4846 L1537.4098 2649.1707 L1540.1097 2665.6206 L1544.6873 2681.5659 L1550.3002 2697.064 L1556.4666 2711.6733 L1818.3805 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9676" />
+ <path
+ fill="none"
+ d="M1526.5431 2339 L1664.9104 2213.5396 L1676.3075 2204.0525 L1688.2982 2195.3054 L1701.2352 2186.9421 L1714.6727 2179.9111 L1728.8771 2174.0081 L1743.3738 2169.3315 L1772.5908 2162.6487 L2081.9709 2107.0034 L2096.4185 2103.4382 L2111.0107 2098.6389 L2124.6841 2092.2168 L2137.7759 2084.4053 L2149.7017 2074.8916 L2160.5408 2063.8689 L2169.6196 2051.8689 L2177.3831 2038.7415 L2183.9478 2025.1888 L2205.1951 1970.9033 L2211.8096 1957.5084 L2221.3857 1945.6956 L2233.8264 1936.7653 L2247.5352 1930.2933 L2514.4805 1835"
+ clip-path="url(#clipPath2)"
+ id="path9678" />
+ <path
+ fill="none"
+ d="M1529.1042 2369 L1738.5509 2533.45 L1750.5435 2543.9087 L1761.3635 2555.615 L1771.2257 2568.3628 L1779.4089 2582.2319 L1786.0944 2596.5154 L1812.7916 2666.5 L1819.77 2680.5874 L1827.7897 2693.7729 L1837.3392 2705.9377 L1848.2404 2717.001 L1860.5529 2726.521 L1873.8605 2734.6018 L1887.8599 2741.093 L1902.7081 2746.1006 L1917.8242 2749.6072 L1962.748 2758.1482 L1977.8821 2762.0352 L1992.6849 2767.7485 L2007.0975 2774.7456 L2020.618 2783.7029 L2033.1394 2793.7778 L2044.6404 2805.4622 L2055.4875 2817.95 L2228.1003 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9680" />
+ <path
+ fill="none"
+ d="M1493.432 2369 L1358.0886 2491.5347 L1344.4315 2502.6399 L1329.5942 2512.6628 L1313.6755 2520.7417 L1297.0505 2526.8035 L1279.6298 2530.5449 L1261.9062 2532.02 L1243.9521 2531.1667 L1226.3867 2528.6655 L1192.8405 2520.178 L1047.8075 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9682" />
+ <path
+ fill="none"
+ d="M1493.3915 2369 L1351.8792 2496.8074 L1336.9489 2508.2498 L1321.3251 2518.696 L823.5881 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9684" />
+ <path
+ fill="none"
+ d="M1504.6932 2339 L1339.462 1871.9652 L1287.3363 1714.5103 L1281.5391 1698.6304 L1271.3762 1666.3949 L1266.9104 1649.3513 L1263.7081 1632.1747 L1261.8214 1614.8285 L1252.174 1465.3066 L1249.6622 1448.1022 L1245.6331 1430.9169 L1239.6428 1414.2061 L1232.1565 1398.4878 L1224.3367 1383.3807 L1075.5237 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9686" />
+ <path
+ fill="none"
+ d="M1505.0319 2369 L1410.9681 2653"
+ clip-path="url(#clipPath2)"
+ id="path9688" />
+ <path
+ fill="none"
+ d="M1534.0114 2369 L1910.9886 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9690" />
+ <path
+ fill="none"
+ d="M1501.9417 2339 L1342.1976 2041.6492 L1333.6259 2028.2693 L1324.1749 2015.4473 L1313.6296 2003.1354 L1097.5363 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9692" />
+ <path
+ fill="none"
+ d="M1504.9796 2339 L1369.1797 1933.2559 L1364.5956 1917.7723 L1361.1023 1901.3207 L1359.2668 1884.6461 L1358.9624 1867.7823 L1364.918 1804.7361 L1385.1973 1636"
+ clip-path="url(#clipPath2)"
+ id="path9694" />
+ <path
+ fill="none"
+ d="M1607.1934 2343.6565 L1641.5518 2340"
+ clip-path="url(#clipPath2)"
+ id="path9696" />
+ <path
+ fill="none"
+ d="M1509.1334 2339 L1483.3666 1893"
+ clip-path="url(#clipPath2)"
+ id="path9698" />
+ <path
+ fill="none"
+ d="M1535.9918 2369 L1686.6624 2455.9526 L1702.3188 2464.1128 L1718.441 2471.5791 L1735.4189 2477.6355 L1752.9897 2482.0723 L1770.8313 2484.4812 L1805.623 2486.6531 L1924.4827 2487.9512 L1942.2737 2489.0781 L1960.0562 2491.6494 L1977.8062 2496.248 L1994.6891 2502.8237 L2010.9612 2510.2305 L2244.1704 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9700" />
+ <path
+ fill="none"
+ d="M1421.5883 2369 L1347.9117 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9702" />
+ <path
+ fill="none"
+ d="M1510.9263 2339 L1526.5001 2086.7854 L1528.6637 2070.645 L1532.7749 2054.6072 L1539.1635 2039.5104 L1582.8965 1955.9016 L1589.814 1941.5165 L1596.3032 1926.5045 L1601.6031 1910.614 L1604.801 1894.145 L1605.9075 1877.3345 L1604.8375 1860.4043 L1601.4618 1844.0298 L1596.4197 1828.249 L1590.9009 1813.1063 L1584.6427 1798.0835 L1579.1389 1783.2101 L1530.6157 1664.5873 L1525.4736 1648.2223 L1521.2292 1631.2045 L1518.8718 1613.6608 L1518.7667 1596.1191 L1520.1587 1578.7006 L1615.3778 1034"
+ clip-path="url(#clipPath2)"
+ id="path9704" />
+ <path
+ fill="none"
+ d="M1520.0275 2339 L1652.9227 2140.2031 L1661.5157 2125.8765 L1669.6093 2110.4673 L1674.8169 2093.8274 L1678.4438 2077.0471 L1692.2361 1993.3143 L1695.9932 1975.8687 L1700.5378 1958.3699 L1707.6724 1941.3625 L1716.8115 1925.3213 L1728.2234 1910.7318 L1740.7257 1897.5914 L1945.353 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9706" />
+ <path
+ fill="none"
+ d="M1511.1052 2369 L1519.2036 2478.908 L1520.9386 2494.2686 L1532.0088 2648.5208 L1532.4585 2664.9966 L1531.5543 2681.3984 L1528.7942 2697.7139 L1523.9926 2713.2405 L1517.3701 2727.6858 L1508.618 2741.5935 L1498.5919 2754.0928 L1487.2609 2765.2034 L1475.011 2774.9775 L1400.5135 2826.1184 L1387.9414 2835.4861 L1376.0679 2845.9873 L1364.8727 2857.1089 L1355.0602 2869.5366 L1346.4813 2882.7495 L1339.2728 2896.8088 L1333.5167 2911.4705 L1329.4667 2926.6213 L1326.7267 2942.0088 L1325.672 2957.7959 L1326.2606 2973.5076 L1327.9357 2989.0308 L1330.9374 3004.3113 L1404.1639 3275.9639 L1407.5632 3290.6909 L1412.1721 3304.8933 L1423.5769 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9708" />
+ <path
+ fill="none"
+ d="M1526.5193 2339 L1665.6112 2212.7002 L1689.0184 2194.4897 L1701.7162 2186.1914 L1714.7228 2178.7192 L1869.8474 2109.8154 L1882.8911 2102.8474 L1895.4789 2095.4939 L2044.3569 1999"
+ clip-path="url(#clipPath2)"
+ id="path9710" />
+ <path
+ fill="none"
+ d="M1496.996 2369 L1385.6895 2497.3909 L1376.2972 2507.3276 L1322.2389 2568.2527 L1304.2604 2589.7803 L1125.6952 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9712" />
+ <path
+ fill="none"
+ d="M1510.8751 2339 L1524.2369 2109.9836 L1527.4911 2077.0388 L1530.6801 2060.7397 L1536.7727 2044.8093 L1587.699 1945.4836 L1600.6235 1915.0745 L1605.15 1898.5553 L1608.6882 1882.624 L1654.8674 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9714" />
+ <path
+ fill="none"
+ d="M1492 2339 L1231 2121.5"
+ clip-path="url(#clipPath2)"
+ id="path9716" />
+ <path
+ fill="none"
+ d="M1511.2671 2369 L1511.5583 2372.4485 L1512.4863 2390.939 L1532.1252 2653.0818 L1532.3657 2673.238 L1530.3511 2693.1304 L1483.7687 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9718" />
+ <path
+ fill="none"
+ d="M1519.9977 2339 L1653.2191 2139.1204 L1662.4175 2124.3665 L1670.4188 2108.1663 L1675.7124 2091.2019 L1696.2084 1972.2346 L1700.4777 1954.8425 L1732.6132 1855.5861 L1738.5227 1839.8522 L1743.5808 1823.199 L1800.3926 1658.3755 L1806.9249 1641.4769 L1814.4071 1624.5726 L1823.2809 1608.1635 L1833.8232 1592.6519 L1845.3483 1578.3093 L1857.2207 1564.7336 L1881.5801 1538.2433 L1893.6631 1525.9165 L2062.9272 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9720" />
+ <path
+ fill="none"
+ d="M1536.2448 2369 L1700.8926 2463.1035 L1716.5065 2470.6301 L1732.8228 2476.7573 L1749.6938 2481.2634 L1766.9144 2483.8633 L1784.0165 2484.6411 L1801.1552 2483.6919 L1817.9308 2480.7009 L1834.475 2476.1997 L1850.3604 2470.1069 L1879.984 2456.0632 L2178.4429 2296.5"
+ clip-path="url(#clipPath2)"
+ id="path9722" />
+ <path
+ fill="none"
+ d="M1522.908 2339 L1805.592 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9724" />
+ <path
+ fill="none"
+ d="M1526.6202 2339 L1669.4025 2210.1367 L1681.7156 2200.2549 L1694.8494 2191.0376 L1708.5754 2182.6992 L1736.0583 2168.71 L1856.1318 2115.9321 L1869.5493 2109.1848 L1882.8529 2101.687 L1895.3044 2092.6658 L1906.7675 2082.3103 L1916.951 2070.5432 L1925.2897 2057.9207 L1932.2095 2044.2831 L1937.395 2029.8201 L1941.0835 2014.8721 L1942.8657 1999.6416 L1944.0657 1984.2588 L1945.8129 1968.6353 L1949.1118 1952.8204 L1954.0919 1937.6868 L1961.2629 1923.1643 L1970.3491 1909.4205 L1981.2208 1896.7792 L1993.2787 1884.9609 L2081.2905 1807.6135 L2253.324 1643"
+ clip-path="url(#clipPath2)"
+ id="path9726" />
+ <path
+ fill="none"
+ d="M1475.3552 2339 L1375.7992 2295.8955 L1325.3004 2275.6824 L1307.8301 2269.3855 L1289.7203 2263.9866 L1271.4009 2260.2725 L1201.3519 2250.1917 L1183.7898 2246.8469 L1166.7448 2241.9495 L1150.2572 2235.1619 L1134.9137 2226.417 L1120.8173 2216.0547 L1108.2313 2204.0881 L1097.0183 2190.8472 L1086.9922 2176.9243 L1051.8983 2121.3184 L1042.0785 2107.6038 L1031.0328 2094.5808 L1018.9379 2082.5935 L981.7686 2049.2241 L968.8684 2038.6184 L956.4572 2027.4056 L788.5068 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9728" />
+ <path
+ fill="none"
+ d="M1504.9901 2339 L1366.5494 1924.4966 L1362.4882 1908.5767 L1359.8616 1892.2843 L1359.1125 1875.623 L1360.5317 1859.0786 L1364.2106 1843.1631 L1369.8442 1827.4664 L1377.5298 1813.0808 L1386.8759 1799.7292 L1397.203 1787.4834 L1418.8458 1765.0261 L1472.7761 1711.0153 L1482.7151 1699.1749 L1491.9009 1685.959 L1499.3961 1671.5507 L1505.2434 1656.2231 L1508.5443 1640.9038 L1510.1094 1624.6781 L1509.5914 1608.5144 L1507.2157 1592.4027 L1503.3352 1577.2427 L1414.2556 1323"
+ clip-path="url(#clipPath2)"
+ id="path9730" />
+ <path
+ fill="none"
+ d="M1510.9319 2339 L1526.4713 2088.8757 L1528.2183 2072.9792 L1531.8409 2057.2632 L1537.6543 2042.4523 L1544.4132 2028.5757 L1585.9958 1949.0065 L1592.6586 1935.08 L1598.5482 1920.4163 L1603.2426 1905.4922 L1605.3632 1889.2352 L1606.0835 1873.2714 L1604.3267 1857.3202 L1600.7614 1841.5823 L1590.5676 1811.7375 L1532.8832 1669.7617 L1527.2454 1654.2057 L1522.8604 1638.2473 L1519.7045 1621.5173 L1518.6511 1604.515 L1519.7151 1587.4683 L1522.7896 1570.5966 L1527.3335 1554.9121 L1533.6583 1539.2854 L1561.9587 1481.5208 L1599.4431 1410.3932 L1606.4193 1395.9069 L1755.7795 1107.7368 L1762.8444 1092.5857 L1769.0634 1076.776 L1774.2321 1060.2958 L1777.7761 1043.705 L1779.5951 1026.4392 L1780.0076 1009.2284 L1773.9335 912.5138 L1713.5631 108.591 L1711.499 94.9959 L1708.3801 80.2525 L1703.2778 66.8524 L1697.6584 54.3873 L1673.673 8.0907 L1662.9922 -15.4828 L1658.6643 -27.8628 L1656.0237 -41.0869 L1655.9708 -54.2819 L1658.2432 -67.2466 L1662.6152 -79.6855 L1667.8322 -91.0654 L1722.6837 -190"
+ clip-path="url(#clipPath2)"
+ id="path9732" />
+ <path
+ fill="none"
+ d="M420.7189 353.5 L698.7811 440"
+ clip-path="url(#clipPath2)"
+ id="path9734" />
+ <path
+ fill="none"
+ d="M373.8378 323.5 L418.1622 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9736" />
+ <path
+ fill="none"
+ d="M371.2291 353.5 L335.7709 772"
+ clip-path="url(#clipPath2)"
+ id="path9738" />
+ <path
+ fill="none"
+ d="M342.7771 353.5 L-26.7771 540"
+ clip-path="url(#clipPath2)"
+ id="path9740" />
+ <path
+ fill="none"
+ d="M331.5783 323.5 L-178.5783 136.5"
+ clip-path="url(#clipPath2)"
+ id="path9742" />
+ <path
+ fill="none"
+ d="M391.3014 323.5 L719.6986 61.5"
+ clip-path="url(#clipPath2)"
+ id="path9744" />
+ <path
+ fill="none"
+ d="M-143.4475 -261 L-156.0525 -683.5"
+ clip-path="url(#clipPath2)"
+ id="path9746" />
+ <path
+ fill="none"
+ d="M-127.6443 -231 L208.6443 97.5"
+ clip-path="url(#clipPath2)"
+ id="path9748" />
+ <path
+ fill="none"
+ d="M-27.0049 2068 L-83.2198 2161.6406 L-90.3236 2174.7258 L-96.6365 2188.5735 L-101.5907 2203.1204 L-105.1204 2217.9927 L-107.1567 2232.9121 L-108.6474 2262.2935 L-107.5751 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9750" />
+ <path
+ fill="none"
+ d="M-3.3147 2038 L88.2079 1944.5159 L98.9239 1931.85 L108.6347 1917.8579 L115.9706 1901.8237 L121.2358 1885.2582 L124.3123 1867.311 L143.2395 1494"
+ clip-path="url(#clipPath2)"
+ id="path9752" />
+ <path
+ fill="none"
+ d="M-24.6663 2038 L-80.8903 1911.4879 L-85.1263 1899.4636 L-88.5606 1887.0404 L-90.5707 1874.1945 L-91.1801 1861.1097 L-90.1218 1848.1241 L-87.5325 1835.3932 L-83.6841 1822.7667 L-72.56 1799.5031 L-53.9055 1768.1414 L-19.3229 1712.5"
+ clip-path="url(#clipPath2)"
+ id="path9754" />
+ <path
+ fill="none"
+ d="M1596.9543 2095.5 L1515.0457 2339"
+ clip-path="url(#clipPath2)"
+ id="path9756" />
+ <path
+ fill="none"
+ d="M1662.748 2092.5029 L1764.6105 2112.6294 L1782.9017 2115.6848 L1801.8885 2118.3333 L1821.3508 2119.7209 L1840.4524 2120.2183 L1858.9543 2119.3088 L1877.6461 2119.5857 L2183.1145 2112.4343 L2200.6819 2112.6753 L2218.771 2113.5925 L2236.468 2115.9619 L2253.6194 2120.0029 L2270.5688 2125.4739 L2286.7974 2131.6306 L2458.6768 2209"
+ clip-path="url(#clipPath2)"
+ id="path9758" />
+ <path
+ fill="none"
+ d="M1602.3943 2065.5 L1606.7793 1898.7041 L1606.4932 1881.5487 L1605.2306 1864.0957 L1601.9255 1846.7361 L1596.955 1829.9541 L1591.1913 1813.7092 L1533.9847 1674.6245 L1527.9525 1658.2727 L1522.3416 1641.5908 L1503.7571 1574.8905 L1420.4307 1339.3589 L1414.5142 1324.3173 L1414.069 1323"
+ clip-path="url(#clipPath2)"
+ id="path9760" />
+ <path
+ fill="none"
+ d="M1603.0338 2095.5 L1619.5222 2334.7439 L1619.976 2349.6047 L1619.3141 2364.5964 L1616.8829 2379.4578 L1612.6283 2393.7292 L1606.6503 2407.0378 L1599.2849 2419.5703 L1533.5831 2509.7273 L1499.2429 2554.429 L1489.8187 2565.7656 L1418.298 2653"
+ clip-path="url(#clipPath2)"
+ id="path9762" />
+ <path
+ fill="none"
+ d="M1603.1926 2095.5 L1621.6029 2327.0608 L1624.4425 2347.2661 L1628.7183 2366.9514 L1635.0629 2385.7578 L1643.6881 2403.5862 L1654.035 2420.3408 L1665.6207 2435.8164 L1758.1301 2550.2654 L1769.3726 2565.7361 L1779.1656 2582.3586 L1787.2401 2599.9016 L1814.0522 2669.9602 L1822.2802 2687.2004 L1928.8368 2883"
+ clip-path="url(#clipPath2)"
+ id="path9764" />
+ <path
+ fill="none"
+ d="M1588.7958 2095.5 L1440.1951 2264.3108 L1421.9424 2287.5852 L1413.851 2300.9641 L1407.3724 2315.2051 L1402.7751 2330.5364 L1400.0977 2346.2444 L1394.8491 2410.0798 L1391.8948 2426.9863 L1386.8583 2443.4583 L1380.0405 2459.543 L1371.4266 2474.8496 L1352.7933 2504.1155 L1264.7759 2637.0266 L1255.2261 2652.488 L1155.7711 2805.2529 L1146.0284 2821.1672 L1135.6465 2836.3376 L1125.1975 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9766" />
+ <path
+ fill="none"
+ d="M1585.7421 2095.5 L1275.7579 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9768" />
+ <path
+ fill="none"
+ d="M1603.1949 2095.5 L1622.4318 2336.9685 L1624.5369 2352.1443 L1628.201 2367.3962 L1632.8905 2381.77 L1638.9683 2395.7341 L1646.1216 2408.7371 L1654.6532 2421.2065 L1664.1459 2432.8657 L1674.5833 2443.5085 L1686.1106 2453.272 L1697.5612 2462.1409 L1912.3665 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9770" />
+ <path
+ fill="none"
+ d="M1603.7489 2065.5 L1655.7511 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9772" />
+ <path
+ fill="none"
+ d="M1593.1482 2065.5 L1491.3518 1893"
+ clip-path="url(#clipPath2)"
+ id="path9774" />
+ <path
+ fill="none"
+ d="M1603.0256 2095.5 L1619.4376 2335.5383 L1619.8356 2352.4175 L1618.8832 2369.4175 L1615.4667 2385.9312 L1610.9801 2401.5234 L1549.5068 2578.6951 L1544.7748 2594.0952 L1540.5493 2610.1763 L1538.3051 2626.9604 L1537.8387 2643.7305 L1539.5312 2660.8184 L1543.3848 2677.5637 L1548.2743 2693.5508 L1620.949 2887.3188 L1626.1494 2902.9475 L1630.7904 2919.1487 L1634.1757 2935.949 L1635.9564 2952.8755 L1635.8079 2970.0298 L1633.827 2987.1138 L1630.0143 3003.8672 L1624.4489 3020.2371 L1617.4717 3036.0044 L1609.7772 3051.0796 L1436.2516 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9776" />
+ <path
+ fill="none"
+ d="M1570.7225 2095.5 L1288.5803 2230.8096 L1274.9982 2236.7656 L1260.8542 2242.2251 L1246.2103 2246.6372 L982.4409 2300.4243 L953.6058 2304.5635 L924.563 2305.3845 L792.7412 2303.3887"
+ clip-path="url(#clipPath2)"
+ id="path9778" />
+ <path
+ fill="none"
+ d="M1603.1537 2095.5 L1620.8918 2326.1306 L1625.1042 2362.6926 L1662.8341 2624"
+ clip-path="url(#clipPath2)"
+ id="path9780" />
+ <path
+ fill="none"
+ d="M1541.252 2084.5603 L1343.7324 2097.7622"
+ clip-path="url(#clipPath2)"
+ id="path9782" />
+ <path
+ fill="none"
+ d="M1640.2059 2065.5 L1780.2941 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9784" />
+ <path
+ fill="none"
+ d="M1572.6794 2065.5 L1434.8101 1994.9679 L1106.5612 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9786" />
+ <path
+ fill="none"
+ d="M1603.0039 2095.5 L1619.616 2343.7134 L1619.334 2362.2961 L1616.5592 2380.8618 L1611.7566 2398.3032 L1606.5804 2414.9185 L1549.1158 2579.8984 L1544.0386 2597.4407 L1539.7373 2615.8103 L1536.9749 2634.4294 L1533.7061 2671.905 L1531.5634 2690.6077 L1483.8102 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9788" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4651 L1780.0096 2115.5613 L1796.447 2117.708 L1813.3804 2119.1421 L1830.0333 2118.6409 L1846.8956 2115.9663 L1862.7615 2110.9902 L1877.9795 2104.4839 L1905.5245 2089.0781 L2044.3778 1999"
+ clip-path="url(#clipPath2)"
+ id="path9790" />
+ <path
+ fill="none"
+ d="M1612.9232 2065.5 L1705.944 1937.7614 L1717.1481 1923.3706 L1729.4146 1909.6766 L1743.266 1897.5363 L1758.9332 1887.454 L1775.6699 1879.6144 L1793.1348 1874.4734 L1811.5116 1871.0072 L1970.6 1855.2622 L1988.6428 1852.0848 L2006.829 1847.8024 L2024.3502 1841.5553 L2040.8623 1833.4706 L2056.6687 1823.6088 L2070.9719 1812.4393 L2084.522 1800.8351 L2252.9895 1643"
+ clip-path="url(#clipPath2)"
+ id="path9792" />
+ <path
+ fill="none"
+ d="M1613.0736 2095.5 L1771.4264 2310"
+ clip-path="url(#clipPath2)"
+ id="path9794" />
+ <path
+ fill="none"
+ d="M1639.7083 2095.5 L1842.3861 2176.1233 L1859.5131 2185.2539 L1876.282 2195.9019 L1891.6011 2208.3118 L1905.634 2221.8408 L1931.1401 2250.0837 L2260.4797 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9796" />
+ <path
+ fill="none"
+ d="M1647.1119 2095.5 L2161.3879 2266.5"
+ clip-path="url(#clipPath2)"
+ id="path9798" />
+ <path
+ fill="none"
+ d="M1603.1909 2095.5 L1621.691 2328.5208 L1623.5604 2343.7834 L1626.24 2359.3225 L1630.3749 2374.5793 L1636.0944 2389.2988 L1642.9762 2403.4038 L1651.1168 2416.8372 L1660.1671 2429.6006 L1758.1458 2550.04 L1768.1744 2563.7002 L1777.2103 2578.6135 L1784.3627 2594.6853 L1789.4128 2611.853 L1791.9921 2629.5588 L1793.291 2647.2483 L1792.9524 2895.9575 L1795.2501 2933.1309 L1824.1862 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9800" />
+ <path
+ fill="none"
+ d="M1603.203 2095.5 L1621.8832 2328.4165 L1624.0609 2345.5154 L1627.2642 2362.4485 L1632.0743 2378.8948 L1638.6213 2394.3691 L1646.8019 2409.1277 L1656.0619 2422.8191 L1667.0085 2435.4368 L1679.0601 2446.8408 L1692.3024 2456.9438 L1706.4554 2465.6316 L1721.5145 2472.658 L1737.2064 2478.3113 L1753.2076 2482.2488 L1769.3447 2484.6384 L1785.3156 2486.0251 L1800.7511 2486.7747 L1920.0581 2487.4966 L1935.141 2488.1736 L1950.616 2489.679 L1966.2471 2492.644 L1980.7709 2497.282 L1994.8182 2503.7949 L2008.2539 2511.574 L2020.3892 2520.8616 L2031.2859 2531.5286 L2040.8636 2543.397 L2049.1069 2556.0459 L2055.8984 2570.1116 L2060.9514 2584.1262 L2065.0398 2598.769 L2071.573 2626.8027 L2083.4851 2682.906 L2087.3142 2697.304 L2091.7251 2711.4783 L2232.8469 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9802" />
+ <path
+ fill="none"
+ d="M1555.4919 2065.5 L1263.2942 1971.259 L1245.3774 1966.6671 L1226.5901 1963.6918 L1207.9307 1962.2289 L1171.8567 1961.0642 L1081.4442 1960.0654 L1062.9497 1958.3174 L1044.2203 1954.9642 L1025.8896 1950.8408 L819.3997 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9804" />
+ <path
+ fill="none"
+ d="M1608.9635 2065.5 L1809.4962 1633.5309 L1818.6376 1616.1558 L1829.1941 1599.274 L1841.2507 1583.3263 L2063.0132 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9806" />
+ <path
+ fill="none"
+ d="M1602.3933 2065.5 L1606.7363 1899.8634 L1606.4586 1882.6648 L1605.2378 1865.1937 L1602.3794 1848.0233 L1597.3771 1831.3533 L1585.6033 1799.6447 L1528.9104 1659.5087 L1523.7875 1642.5001 L1520.1628 1624.7736 L1518.6923 1606.78 L1519.3666 1588.6658 L1521.3606 1571.0901 L1615.3744 1034"
+ clip-path="url(#clipPath2)"
+ id="path9808" />
+ <path
+ fill="none"
+ d="M1571.2109 2095.5 L1261.994 2246.146 L1219.6743 2264.4104 L1205.4592 2271.2598 L1191.7346 2278.4478 L1178.4591 2287.1375 L1166.1311 2296.8726 L1154.6273 2306.9568 L1013.2023 2446.5"
+ clip-path="url(#clipPath2)"
+ id="path9810" />
+ <path
+ fill="none"
+ d="M1612.9133 2065.5 L1708.3259 1934.3589 L1718.8427 1921.1146 L1730.2498 1907.9574 L1742.2875 1895.532 L1945.3046 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9812" />
+ <path
+ fill="none"
+ d="M1572.9703 2065.5 L1444.6885 1999.2152 L1429.064 1990.3815 L1413.6222 1980.5148 L1399.3938 1969.1509 L1386.8495 1955.9407 L1376.3173 1941.3074 L1367.1516 1926.2937 L1215.7188 1635.2328 L1131.2916 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9814" />
+ <path
+ fill="none"
+ d="M1602.3855 2065.5 L1606.9542 1887.743 L1606 1869.5469 L1602.9114 1851.5056 L1597.8892 1834.3082 L1590.2271 1818.0243 L1580.5396 1803.0505 L1569.3032 1789.5634 L1544.9924 1765.5038 L1403.4001 1636"
+ clip-path="url(#clipPath2)"
+ id="path9816" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4412 L1766.4723 2112.8303 L1800.2173 2118.0352 L1817.9073 2119.0618 L1835.2128 2118.0942 L1852.0842 2114.189 L1868.7249 2108.4495 L1883.6569 2100.4832 L1897.4779 2090.6223 L1909.8057 2078.9834 L1920.2412 2065.7119 L1928.7743 2051.3101 L1935.4041 2035.9259 L1939.7797 2019.7667 L1942.3596 2003.6836 L1945.6359 1971.5028 L1948.5076 1955.5732 L1953.2712 1940.0039 L1959.8096 1925.6807 L1968.1327 1912.3596 L1978.111 1900.3622 L1989.2583 1889.7343 L2001.7524 1880.6145 L2015.2451 1873.4164 L2029.7437 1867.4449 L2044.5986 1863.3865 L2059.4072 1860.6979 L2116.5818 1854.9585 L2130.5618 1854.0964 L2427.3464 1831.3152"
+ clip-path="url(#clipPath2)"
+ id="path9818" />
+ <path
+ fill="none"
+ d="M1602.395 2065.5 L1606.7798 1898.9805 L1606.3993 1880.6311 L1604.8654 1862.1401 L1601.0284 1844.0854 L1594.6597 1826.991 L1585.889 1810.8241 L1574.9169 1796.2695 L1561.8469 1783.6718 L1547.1339 1773.0948 L1530.927 1764.6783 L1514.0385 1758.6746 L1496.0397 1755.1381 L1478.5284 1752.9952 L1377.3137 1744.3647 L1359.9923 1741.0127 L1343.1707 1736.0409 L1327.205 1728.5714 L1312.6506 1718.9408 L1299.2815 1707.3992 L1288.0135 1694.0232 L1278.6018 1679.4884 L1271.3124 1663.254 L1266.2087 1646.291 L1263.3679 1629.0929 L1251.9883 1463.8362 L1249.3915 1446.7079 L1245.1688 1429.4218 L1239.0171 1412.9744 L1231.691 1397.4093 L1158.1884 1265.8065 L1149.532 1251.7174 L1075.525 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9820" />
+ <path
+ fill="none"
+ d="M1571.1819 2095.5 L1270.4301 2241.884 L1209.0909 2269.5261 L1193.9401 2277.4502 L1179.7173 2286.9822 L1166.2568 2298.0002 L1154.4349 2310.5815 L1144.4984 2324.4265 L1136.3844 2339.6184 L1130.1035 2355.6626 L1125.9659 2372.5798 L1123.5559 2389.3396 L1122.2933 2406.2454 L1120.1442 2455.5945 L1118.5703 2472.6367 L1115.6298 2489.781 L1110.2885 2506.1963 L1102.5222 2521.7383 L1093.292 2536.2493 L1081.7872 2549.6086 L1057.8158 2573.1782 L813.2117 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9822" />
+ <path
+ fill="none"
+ d="M1570.7183 2095.5 L1288.796 2230.6855 L1274.8589 2236.5764 L1260.1879 2242.116 L1245.0063 2246.1299 L1229.2333 2248.7217 L1213.7101 2249.8647 L1198.0498 2249.1724 L1182.5889 2247.0691 L1153.3807 2240.5171 L996.3959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9824" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/scons.mod b/doc/scons.mod
index 6a8c29d..044a4a1 100644
--- a/doc/scons.mod
+++ b/doc/scons.mod
@@ -1,6 +1,6 @@
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
An SCons-specific DTD module, for use with SCons DocBook
documentation, that contains names, phrases, acronyms, etc. used
@@ -16,47 +16,47 @@
-->
-<!ENTITY Aegis "<application>Aegis</application>">
-<!ENTITY Ant "<application>Ant</application>">
-<!ENTITY ar "<application>ar</application>">
-<!ENTITY as "<application>as</application>">
-<!ENTITY Autoconf "<application>Autoconf</application>">
-<!ENTITY Automake "<application>Automake</application>">
-<!ENTITY bison "<application>bison</application>">
-<!ENTITY cc "<application>cc</application>">
-<!ENTITY Cons "<application>Cons</application>">
-<!ENTITY cp "<application>cp</application>">
-<!ENTITY csh "<application>csh</application>">
-<!ENTITY f77 "<application>f77</application>">
-<!ENTITY f90 "<application>f90</application>">
-<!ENTITY f95 "<application>f95</application>">
-<!ENTITY gas "<application>gas</application>">
-<!ENTITY gcc "<application>gcc</application>">
-<!ENTITY g77 "<application>g77</application>">
-<!ENTITY gXX "<application>gXX</application>">
-<!ENTITY Jam "<application>Jam</application>">
-<!ENTITY jar "<application>jar</application>">
-<!ENTITY javac "<application>javac</application>">
-<!ENTITY javah "<application>javah</application>">
-<!ENTITY latex "<application>latex</application>">
-<!ENTITY lex "<application>lex</application>">
-<!ENTITY m4 "<application>m4</application>">
-<!ENTITY Make "<application>Make</application>">
-<!ENTITY Makepp "<application>Make++</application>">
-<!ENTITY pdflatex "<application>pdflatex</application>">
-<!ENTITY pdftex "<application>pdftex</application>">
-<!ENTITY Python "<application>Python</application>">
-<!ENTITY ranlib "<application>ranlib</application>">
-<!ENTITY rmic "<application>rmic</application>">
-<!ENTITY SCons "<application>SCons</application>">
-<!ENTITY ScCons "<application>ScCons</application>">
-<!ENTITY sleep "<application>sleep</application>">
-<!ENTITY swig "<application>swig</application>">
-<!ENTITY tar "<application>tar</application>">
-<!ENTITY tex "<application>tex</application>">
-<!ENTITY touch "<application>touch</application>">
-<!ENTITY yacc "<application>yacc</application>">
-<!ENTITY zip "<application>zip</application>">
+<!ENTITY Aegis "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Aegis</application>">
+<!ENTITY Ant "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Ant</application>">
+<!ENTITY ar "<application xmlns='http://www.scons.org/dbxsd/v1.0'>ar</application>">
+<!ENTITY as "<application xmlns='http://www.scons.org/dbxsd/v1.0'>as</application>">
+<!ENTITY Autoconf "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Autoconf</application>">
+<!ENTITY Automake "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Automake</application>">
+<!ENTITY bison "<application xmlns='http://www.scons.org/dbxsd/v1.0'>bison</application>">
+<!ENTITY cc "<application xmlns='http://www.scons.org/dbxsd/v1.0'>cc</application>">
+<!ENTITY Cons "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Cons</application>">
+<!ENTITY cp "<application xmlns='http://www.scons.org/dbxsd/v1.0'>cp</application>">
+<!ENTITY csh "<application xmlns='http://www.scons.org/dbxsd/v1.0'>csh</application>">
+<!ENTITY f77 "<application xmlns='http://www.scons.org/dbxsd/v1.0'>f77</application>">
+<!ENTITY f90 "<application xmlns='http://www.scons.org/dbxsd/v1.0'>f90</application>">
+<!ENTITY f95 "<application xmlns='http://www.scons.org/dbxsd/v1.0'>f95</application>">
+<!ENTITY gas "<application xmlns='http://www.scons.org/dbxsd/v1.0'>gas</application>">
+<!ENTITY gcc "<application xmlns='http://www.scons.org/dbxsd/v1.0'>gcc</application>">
+<!ENTITY g77 "<application xmlns='http://www.scons.org/dbxsd/v1.0'>g77</application>">
+<!ENTITY gXX "<application xmlns='http://www.scons.org/dbxsd/v1.0'>gXX</application>">
+<!ENTITY Jam "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Jam</application>">
+<!ENTITY jar "<application xmlns='http://www.scons.org/dbxsd/v1.0'>jar</application>">
+<!ENTITY javac "<application xmlns='http://www.scons.org/dbxsd/v1.0'>javac</application>">
+<!ENTITY javah "<application xmlns='http://www.scons.org/dbxsd/v1.0'>javah</application>">
+<!ENTITY latex "<application xmlns='http://www.scons.org/dbxsd/v1.0'>latex</application>">
+<!ENTITY lex "<application xmlns='http://www.scons.org/dbxsd/v1.0'>lex</application>">
+<!ENTITY m4 "<application xmlns='http://www.scons.org/dbxsd/v1.0'>m4</application>">
+<!ENTITY Make "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Make</application>">
+<!ENTITY Makepp "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Make++</application>">
+<!ENTITY pdflatex "<application xmlns='http://www.scons.org/dbxsd/v1.0'>pdflatex</application>">
+<!ENTITY pdftex "<application xmlns='http://www.scons.org/dbxsd/v1.0'>pdftex</application>">
+<!ENTITY Python "<application xmlns='http://www.scons.org/dbxsd/v1.0'>Python</application>">
+<!ENTITY ranlib "<application xmlns='http://www.scons.org/dbxsd/v1.0'>ranlib</application>">
+<!ENTITY rmic "<application xmlns='http://www.scons.org/dbxsd/v1.0'>rmic</application>">
+<!ENTITY SCons "<application xmlns='http://www.scons.org/dbxsd/v1.0'>SCons</application>">
+<!ENTITY ScCons "<application xmlns='http://www.scons.org/dbxsd/v1.0'>ScCons</application>">
+<!ENTITY sleep "<application xmlns='http://www.scons.org/dbxsd/v1.0'>sleep</application>">
+<!ENTITY swig "<application xmlns='http://www.scons.org/dbxsd/v1.0'>swig</application>">
+<!ENTITY tar "<application xmlns='http://www.scons.org/dbxsd/v1.0'>tar</application>">
+<!ENTITY tex "<application xmlns='http://www.scons.org/dbxsd/v1.0'>tex</application>">
+<!ENTITY touch "<application xmlns='http://www.scons.org/dbxsd/v1.0'>touch</application>">
+<!ENTITY yacc "<application xmlns='http://www.scons.org/dbxsd/v1.0'>yacc</application>">
+<!ENTITY zip "<application xmlns='http://www.scons.org/dbxsd/v1.0'>zip</application>">
<!--
@@ -65,28 +65,28 @@
-->
-<!ENTITY Action "<classname>Action</classname>">
-<!ENTITY ActionBase "<classname>ActionBase</classname>">
-<!ENTITY CommandAction "<classname>CommandAction</classname>">
-<!ENTITY FunctionAction "<classname>FunctionAction</classname>">
-<!ENTITY ListAction "<classname>ListAction</classname>">
-<!ENTITY Builder "<classname>Builder</classname>">
-<!ENTITY BuilderBase "<classname>BuilderBase</classname>">
-<!ENTITY CompositeBuilder "<classname>CompositeBuilder</classname>">
-<!ENTITY MultiStepBuilder "<classname>MultiStepBuilder</classname>">
-<!ENTITY Job "<classname>Job</classname>">
-<!ENTITY Jobs "<classname>Jobs</classname>">
-<!ENTITY Serial "<classname>Serial</classname>">
-<!ENTITY Parallel "<classname>Parallel</classname>">
-<!ENTITY Node "<classname>Node</classname>">
-<!ENTITY Node_FS "<classname>Node.FS</classname>">
-<!ENTITY Scanner "<classname>Scanner</classname>">
-<!ENTITY Sig "<classname>Sig</classname>">
-<!ENTITY Signature "<classname>Signature</classname>">
-<!ENTITY Taskmaster "<classname>Taskmaster</classname>">
-<!ENTITY TimeStamp "<classname>TimeStamp</classname>">
-<!ENTITY Walker "<classname>Walker</classname>">
-<!ENTITY Wrapper "<classname>Wrapper</classname>">
+<!ENTITY Action "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Action</classname>">
+<!ENTITY ActionBase "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>ActionBase</classname>">
+<!ENTITY CommandAction "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>CommandAction</classname>">
+<!ENTITY FunctionAction "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>FunctionAction</classname>">
+<!ENTITY ListAction "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>ListAction</classname>">
+<!ENTITY Builder "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Builder</classname>">
+<!ENTITY BuilderBase "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>BuilderBase</classname>">
+<!ENTITY CompositeBuilder "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>CompositeBuilder</classname>">
+<!ENTITY MultiStepBuilder "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>MultiStepBuilder</classname>">
+<!ENTITY Job "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Job</classname>">
+<!ENTITY Jobs "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Jobs</classname>">
+<!ENTITY Serial "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Serial</classname>">
+<!ENTITY Parallel "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Parallel</classname>">
+<!ENTITY Node "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Node</classname>">
+<!ENTITY Node_FS "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Node.FS</classname>">
+<!ENTITY Scanner "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Scanner</classname>">
+<!ENTITY Sig "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Sig</classname>">
+<!ENTITY Signature "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Signature</classname>">
+<!ENTITY Taskmaster "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Taskmaster</classname>">
+<!ENTITY TimeStamp "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>TimeStamp</classname>">
+<!ENTITY Walker "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Walker</classname>">
+<!ENTITY Wrapper "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>Wrapper</classname>">
@@ -96,20 +96,20 @@
-->
-<!ENTITY config "<literal>--config</literal>">
-<!ENTITY debug-explain "<literal>--debug=explain</literal>">
-<!ENTITY debug-findlibs "<literal>--debug=findlibs</literal>">
-<!ENTITY debug-includes "<literal>--debug=includes</literal>">
-<!ENTITY debug-prepare "<literal>--debug=prepare</literal>">
-<!ENTITY debug-presub "<literal>--debug=presub</literal>">
-<!ENTITY debug-stacktrace "<literal>--debug=stacktrace</literal>">
-<!ENTITY implicit-cache "<literal>--implicit-cache</literal>">
-<!ENTITY implicit-deps-changed "<literal>--implicit-deps-changed</literal>">
-<!ENTITY implicit-deps-unchanged "<literal>--implicit-deps-unchanged</literal>">
-<!ENTITY profile "<literal>--profile</literal>">
-<!ENTITY taskmastertrace "<literal>--taskmastertrace</literal>">
-<!ENTITY tree "<literal>--tree</literal>">
-<!ENTITY Q "<literal>-Q</literal>">
+<!ENTITY config "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--config</literal>">
+<!ENTITY debug-explain "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--debug=explain</literal>">
+<!ENTITY debug-findlibs "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--debug=findlibs</literal>">
+<!ENTITY debug-includes "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--debug=includes</literal>">
+<!ENTITY debug-prepare "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--debug=prepare</literal>">
+<!ENTITY debug-presub "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--debug=presub</literal>">
+<!ENTITY debug-stacktrace "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--debug=stacktrace</literal>">
+<!ENTITY implicit-cache "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--implicit-cache</literal>">
+<!ENTITY implicit-deps-changed "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--implicit-deps-changed</literal>">
+<!ENTITY implicit-deps-unchanged "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--implicit-deps-unchanged</literal>">
+<!ENTITY profile "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--profile</literal>">
+<!ENTITY taskmastertrace "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--taskmastertrace</literal>">
+<!ENTITY tree "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>--tree</literal>">
+<!ENTITY Q "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>-Q</literal>">
<!--
@@ -117,9 +117,9 @@
-->
-<!ENTITY implicit_cache "<literal>implicit_cache</literal>">
-<!ENTITY implicit_deps_changed "<literal>implicit_deps_changed</literal>">
-<!ENTITY implicit_deps_unchanged "<literal>implicit_deps_unchanged</literal>">
+<!ENTITY implicit_cache "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>implicit_cache</literal>">
+<!ENTITY implicit_deps_changed "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>implicit_deps_changed</literal>">
+<!ENTITY implicit_deps_unchanged "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>implicit_deps_unchanged</literal>">
@@ -129,16 +129,16 @@
-->
-<!ENTITY build "<filename>build</filename>">
-<!ENTITY Makefile "<filename>Makefile</filename>">
-<!ENTITY Makefiles "<filename>Makefiles</filename>">
-<!ENTITY scons "<filename>scons</filename>">
-<!ENTITY SConscript "<filename>SConscript</filename>">
-<!ENTITY SConstruct "<filename>SConstruct</filename>">
-<!ENTITY Sconstruct "<filename>Sconstruct</filename>">
-<!ENTITY sconstruct "<filename>sconstruct</filename>">
-<!ENTITY sconsign "<filename>.sconsign</filename>">
-<!ENTITY src "<filename>src</filename>">
+<!ENTITY build "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>build</filename>">
+<!ENTITY Makefile "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>Makefile</filename>">
+<!ENTITY Makefiles "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>Makefiles</filename>">
+<!ENTITY scons "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>scons</filename>">
+<!ENTITY SConscript "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>SConscript</filename>">
+<!ENTITY SConstruct "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>SConstruct</filename>">
+<!ENTITY Sconstruct "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>Sconstruct</filename>">
+<!ENTITY sconstruct "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>sconstruct</filename>">
+<!ENTITY sconsign "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>.sconsign</filename>">
+<!ENTITY src "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>src</filename>">
@@ -149,149 +149,149 @@
-->
-<!ENTITY Add "<function>Add</function>">
-<!ENTITY AddMethod "<function>AddMethod</function>">
-<!ENTITY AddPostAction "<function>AddPostAction</function>">
-<!ENTITY AddPreAction "<function>AddPreAction</function>">
-<!ENTITY AddOption "<function>AddOption</function>">
-<!ENTITY AddOptions "<function>AddOptions</function>">
-<!ENTITY AddVariables "<function>AddVariables</function>">
-<!ENTITY Alias "<function>Alias</function>">
-<!ENTITY Aliases "<function>Aliases</function>">
-<!ENTITY AllowSubstExceptions "<function>AllowSubstExceptions</function>">
-<!ENTITY AlwaysBuild "<function>AlwaysBuild</function>">
-<!ENTITY Append "<function>Append</function>">
-<!ENTITY AppendENVPath "<function>AppendENVPath</function>">
-<!ENTITY AppendUnique "<function>AppendUnique</function>">
-<!ENTITY BoolOption "<function>BoolOption</function>">
-<!ENTITY BoolVariable "<function>BoolVariable</function>">
-<!ENTITY Build "<function>Build</function>">
-<!ENTITY CacheDir "<function>CacheDir</function>">
-<!ENTITY Chmod "<function>Chmod</function>">
-<!ENTITY Clean "<function>Clean</function>">
-<!ENTITY Clone "<function>Clone</function>">
-<!ENTITY Command "<function>Command</function>">
-<!ENTITY Configure "<function>Configure</function>">
-<!ENTITY Copy "<function>Copy</function>">
-<!ENTITY Decider "<function>Decider</function>">
-<!ENTITY Default "<function>Default</function>">
-<!ENTITY DefaultEnvironment "<function>DefaultEnvironment</function>">
-<!ENTITY DefaultRules "<function>DefaultRules</function>">
-<!ENTITY Delete "<function>Delete</function>">
-<!ENTITY Depends "<function>Depends</function>">
-<!ENTITY Dir "<function>Dir</function>">
-<!ENTITY Dump "<function>Dump</function>">
-<!ENTITY Duplicate "<function>Duplicate</function>">
-<!ENTITY Entry "<function>Entry</function>">
-<!ENTITY EnumOption "<function>EnumOption</function>">
-<!ENTITY EnumVariable "<function>EnumVariable</function>">
-<!ENTITY EnsurePythonVersion "<function>EnsurePythonVersion</function>">
-<!ENTITY EnsureSConsVersion "<function>EnsureSConsVersion</function>">
-<!ENTITY Environment "<function>Environment</function>">
-<!ENTITY Execute "<function>Execute</function>">
-<!ENTITY Exit "<function>Exit</function>">
-<!ENTITY Export "<function>Export</function>">
-<!ENTITY File "<function>File</function>">
-<!ENTITY FindFile "<function>FindFile</function>">
-<!ENTITY FindInstalledFiles "<function>FindInstalledFiles</function>">
-<!ENTITY FindPathDirs "<function>FindPathDirs</function>">
-<!ENTITY Finish "<function>Finish</function>">
-<!ENTITY Flatten "<function>Flatten</function>">
-<!ENTITY GenerateHelpText "<function>GenerateHelpText</function>">
-<!ENTITY GetBuildFailures "<function>GetBuildFailures</function>">
-<!ENTITY GetBuildPath "<function>GetBuildPath</function>">
-<!ENTITY GetLaunchDir "<function>GetLaunchDir</function>">
-<!ENTITY GetOption "<function>GetOption</function>">
-<!ENTITY Glob "<function>Glob</function>">
-<!ENTITY Help "<function>Help</function>">
-<!ENTITY Ignore "<function>Ignore</function>">
-<!ENTITY Import "<function>Import</function>">
-<!ENTITY Install "<function>Install</function>">
-<!ENTITY InstallAs "<function>InstallAs</function>">
-<!ENTITY Link "<function>Link</function>">
-<!ENTITY ListOption "<function>ListOption</function>">
-<!ENTITY ListVariable "<function>ListVariable</function>">
-<!ENTITY Local "<function>Local</function>">
-<!ENTITY MergeFlags "<function>MergeFlags</function>">
-<!ENTITY Mkdir "<function>Mkdir</function>">
-<!ENTITY Module "<function>Module</function>">
-<!ENTITY Move "<function>Move</function>">
-<!ENTITY NoClean "<function>NoClean</function>">
-<!ENTITY NoCache "<function>NoCache</function>">
-<!ENTITY Objects "<function>Objects</function>">
-<!ENTITY Options "<function>Options</function>">
-<!ENTITY Variables "<function>Variables</function>">
-<!ENTITY PackageOption "<function>PackageOption</function>">
-<!ENTITY PackageVariable "<function>PackageVariable</function>">
-<!ENTITY ParseConfig "<function>ParseConfig</function>">
-<!ENTITY ParseDepends "<function>ParseDepends</function>">
-<!ENTITY ParseFlags "<function>ParseFlags</function>">
-<!ENTITY PathOption "<function>PathOption</function>">
-<!ENTITY PathOption_PathAccept "<function>PathOption.PathAccept</function>">
-<!ENTITY PathOption_PathExists "<function>PathOption.PathExists</function>">
-<!ENTITY PathOption_PathIsDir "<function>PathOption.PathIsDir</function>">
-<!ENTITY PathOption_PathIsDirCreate "<function>PathOption.PathIsDirCreate</function>">
-<!ENTITY PathOption_PathIsFile "<function>PathOption.PathIsFile</function>">
-<!ENTITY PathVariable "<function>PathVariable</function>">
-<!ENTITY PathVariable_PathAccept "<function>PathVariable.PathAccept</function>">
-<!ENTITY PathVariable_PathExists "<function>PathVariable.PathExists</function>">
-<!ENTITY PathVariable_PathIsDir "<function>PathVariable.PathIsDir</function>">
-<!ENTITY PathVariable_PathIsDirCreate "<function>PathVariable.PathIsDirCreate</function>">
-<!ENTITY PathVariable_PathIsFile "<function>PathVariable.PathIsFile</function>">
-<!ENTITY Precious "<function>Precious</function>">
-<!ENTITY Prepend "<function>Prepend</function>">
-<!ENTITY PrependENVPath "<function>PrependENVPath</function>">
-<!ENTITY PrependUnique "<function>PrependUnique</function>">
-<!ENTITY Progress "<function>Progress</function>">
-<!ENTITY Replace "<function>Replace</function>">
-<!ENTITY Repository "<function>Repository</function>">
-<!ENTITY Requires "<function>Requires</function>">
-<!ENTITY Return "<function>Return</function>">
-<!ENTITY RuleSet "<function>RuleSet</function>">
-<!ENTITY Salt "<function>Salt</function>">
-<!ENTITY SetBuildSignatureType "<function>SetBuildSignatureType</function>">
-<!ENTITY SetContentSignatureType "<function>SetContentSignatureType</function>">
-<!ENTITY SetDefault "<function>SetDefault</function>">
-<!ENTITY SetOption "<function>SetOption</function>">
-<!ENTITY SideEffect "<function>SideEffect</function>">
-<!ENTITY SourceSignature "<function>SourceSignature</function>">
-<!ENTITY SourceSignatures "<function>SourceSignatures</function>">
-<!ENTITY Split "<function>Split</function>">
-<!ENTITY Tag "<function>Tag</function>">
-<!ENTITY TargetSignatures "<function>TargetSignatures</function>">
-<!ENTITY Task "<function>Task</function>">
-<!ENTITY Touch "<function>Touch</function>">
-<!ENTITY UnknownOptions "<function>UnknownOptions</function>">
-<!ENTITY UnknownVariables "<function>UnknownVariables</function>">
+<!ENTITY Add "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Add</function>">
+<!ENTITY AddMethod "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddMethod</function>">
+<!ENTITY AddPostAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddPostAction</function>">
+<!ENTITY AddPreAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddPreAction</function>">
+<!ENTITY AddOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddOption</function>">
+<!ENTITY AddOptions "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddOptions</function>">
+<!ENTITY AddVariables "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AddVariables</function>">
+<!ENTITY Alias "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Alias</function>">
+<!ENTITY Aliases "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Aliases</function>">
+<!ENTITY AllowSubstExceptions "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AllowSubstExceptions</function>">
+<!ENTITY AlwaysBuild "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AlwaysBuild</function>">
+<!ENTITY Append "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Append</function>">
+<!ENTITY AppendENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AppendENVPath</function>">
+<!ENTITY AppendUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AppendUnique</function>">
+<!ENTITY BoolOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>BoolOption</function>">
+<!ENTITY BoolVariable "<function xmlns='http://www.scons.org/dbxsd/v1.0'>BoolVariable</function>">
+<!ENTITY Build "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Build</function>">
+<!ENTITY CacheDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CacheDir</function>">
+<!ENTITY Chmod "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Chmod</function>">
+<!ENTITY Clean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Clean</function>">
+<!ENTITY Clone "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Clone</function>">
+<!ENTITY Command "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Command</function>">
+<!ENTITY Configure "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Configure</function>">
+<!ENTITY Copy "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Copy</function>">
+<!ENTITY Decider "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Decider</function>">
+<!ENTITY Default "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Default</function>">
+<!ENTITY DefaultEnvironment "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DefaultEnvironment</function>">
+<!ENTITY DefaultRules "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DefaultRules</function>">
+<!ENTITY Delete "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Delete</function>">
+<!ENTITY Depends "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Depends</function>">
+<!ENTITY Dir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Dir</function>">
+<!ENTITY Dump "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Dump</function>">
+<!ENTITY Duplicate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Duplicate</function>">
+<!ENTITY Entry "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Entry</function>">
+<!ENTITY EnumOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>EnumOption</function>">
+<!ENTITY EnumVariable "<function xmlns='http://www.scons.org/dbxsd/v1.0'>EnumVariable</function>">
+<!ENTITY EnsurePythonVersion "<function xmlns='http://www.scons.org/dbxsd/v1.0'>EnsurePythonVersion</function>">
+<!ENTITY EnsureSConsVersion "<function xmlns='http://www.scons.org/dbxsd/v1.0'>EnsureSConsVersion</function>">
+<!ENTITY Environment "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Environment</function>">
+<!ENTITY Execute "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Execute</function>">
+<!ENTITY Exit "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Exit</function>">
+<!ENTITY Export "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Export</function>">
+<!ENTITY File "<function xmlns='http://www.scons.org/dbxsd/v1.0'>File</function>">
+<!ENTITY FindFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>FindFile</function>">
+<!ENTITY FindInstalledFiles "<function xmlns='http://www.scons.org/dbxsd/v1.0'>FindInstalledFiles</function>">
+<!ENTITY FindPathDirs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>FindPathDirs</function>">
+<!ENTITY Finish "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Finish</function>">
+<!ENTITY Flatten "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Flatten</function>">
+<!ENTITY GenerateHelpText "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GenerateHelpText</function>">
+<!ENTITY GetBuildFailures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetBuildFailures</function>">
+<!ENTITY GetBuildPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetBuildPath</function>">
+<!ENTITY GetLaunchDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetLaunchDir</function>">
+<!ENTITY GetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>GetOption</function>">
+<!ENTITY Glob "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Glob</function>">
+<!ENTITY Help "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Help</function>">
+<!ENTITY Ignore "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Ignore</function>">
+<!ENTITY Import "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Import</function>">
+<!ENTITY Install "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Install</function>">
+<!ENTITY InstallAs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>InstallAs</function>">
+<!ENTITY Link "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Link</function>">
+<!ENTITY ListOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ListOption</function>">
+<!ENTITY ListVariable "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ListVariable</function>">
+<!ENTITY Local "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Local</function>">
+<!ENTITY MergeFlags "<function xmlns='http://www.scons.org/dbxsd/v1.0'>MergeFlags</function>">
+<!ENTITY Mkdir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Mkdir</function>">
+<!ENTITY Module "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Module</function>">
+<!ENTITY Move "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Move</function>">
+<!ENTITY NoClean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>NoClean</function>">
+<!ENTITY NoCache "<function xmlns='http://www.scons.org/dbxsd/v1.0'>NoCache</function>">
+<!ENTITY Objects "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Objects</function>">
+<!ENTITY Options "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Options</function>">
+<!ENTITY Variables "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Variables</function>">
+<!ENTITY PackageOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PackageOption</function>">
+<!ENTITY PackageVariable "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PackageVariable</function>">
+<!ENTITY ParseConfig "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ParseConfig</function>">
+<!ENTITY ParseDepends "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ParseDepends</function>">
+<!ENTITY ParseFlags "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ParseFlags</function>">
+<!ENTITY PathOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathOption</function>">
+<!ENTITY PathOption_PathAccept "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathOption.PathAccept</function>">
+<!ENTITY PathOption_PathExists "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathOption.PathExists</function>">
+<!ENTITY PathOption_PathIsDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathOption.PathIsDir</function>">
+<!ENTITY PathOption_PathIsDirCreate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathOption.PathIsDirCreate</function>">
+<!ENTITY PathOption_PathIsFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathOption.PathIsFile</function>">
+<!ENTITY PathVariable "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathVariable</function>">
+<!ENTITY PathVariable_PathAccept "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathVariable.PathAccept</function>">
+<!ENTITY PathVariable_PathExists "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathVariable.PathExists</function>">
+<!ENTITY PathVariable_PathIsDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathVariable.PathIsDir</function>">
+<!ENTITY PathVariable_PathIsDirCreate "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathVariable.PathIsDirCreate</function>">
+<!ENTITY PathVariable_PathIsFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PathVariable.PathIsFile</function>">
+<!ENTITY Precious "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Precious</function>">
+<!ENTITY Prepend "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Prepend</function>">
+<!ENTITY PrependENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PrependENVPath</function>">
+<!ENTITY PrependUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PrependUnique</function>">
+<!ENTITY Progress "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Progress</function>">
+<!ENTITY Replace "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Replace</function>">
+<!ENTITY Repository "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Repository</function>">
+<!ENTITY Requires "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Requires</function>">
+<!ENTITY Return "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Return</function>">
+<!ENTITY RuleSet "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RuleSet</function>">
+<!ENTITY Salt "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Salt</function>">
+<!ENTITY SetBuildSignatureType "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetBuildSignatureType</function>">
+<!ENTITY SetContentSignatureType "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetContentSignatureType</function>">
+<!ENTITY SetDefault "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetDefault</function>">
+<!ENTITY SetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetOption</function>">
+<!ENTITY SideEffect "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SideEffect</function>">
+<!ENTITY SourceSignature "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceSignature</function>">
+<!ENTITY SourceSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceSignatures</function>">
+<!ENTITY Split "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Split</function>">
+<!ENTITY Tag "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tag</function>">
+<!ENTITY TargetSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TargetSignatures</function>">
+<!ENTITY Task "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Task</function>">
+<!ENTITY Touch "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Touch</function>">
+<!ENTITY UnknownOptions "<function xmlns='http://www.scons.org/dbxsd/v1.0'>UnknownOptions</function>">
+<!ENTITY UnknownVariables "<function xmlns='http://www.scons.org/dbxsd/v1.0'>UnknownVariables</function>">
<!-- Environment methods -->
-<!ENTITY subst "<function>subst</function>">
+<!ENTITY subst "<function xmlns='http://www.scons.org/dbxsd/v1.0'>subst</function>">
<!-- Configure context functions -->
-<!ENTITY Message "<function>Message</function>">
-<!ENTITY Result "<function>Result</function>">
-<!ENTITY CheckCHeader "<function>CheckCHeader</function>">
-<!ENTITY CheckCXXHeader "<function>CheckCXXHeader</function>">
-<!ENTITY CheckFunc "<function>CheckFunc</function>">
-<!ENTITY CheckHeader "<function>CheckHeader</function>">
-<!ENTITY CheckLib "<function>CheckLib</function>">
-<!ENTITY CheckLibWithHeader "<function>CheckLibWithHeader</function>">
-<!ENTITY CheckType "<function>CheckType</function>">
-<!ENTITY TryAction "<function>TryAction</function>">
-<!ENTITY TryBuild "<function>TryBuild</function>">
-<!ENTITY TryCompile "<function>TryCompile</function>">
-<!ENTITY TryLink "<function>TryLink</function>">
-<!ENTITY TryRun "<function>TryRun</function>">
+<!ENTITY Message "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Message</function>">
+<!ENTITY Result "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Result</function>">
+<!ENTITY CheckCHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckCHeader</function>">
+<!ENTITY CheckCXXHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckCXXHeader</function>">
+<!ENTITY CheckFunc "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckFunc</function>">
+<!ENTITY CheckHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckHeader</function>">
+<!ENTITY CheckLib "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckLib</function>">
+<!ENTITY CheckLibWithHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckLibWithHeader</function>">
+<!ENTITY CheckType "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckType</function>">
+<!ENTITY TryAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TryAction</function>">
+<!ENTITY TryBuild "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TryBuild</function>">
+<!ENTITY TryCompile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TryCompile</function>">
+<!ENTITY TryLink "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TryLink</function>">
+<!ENTITY TryRun "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TryRun</function>">
<!-- Python functions and classes -->
-<!ENTITY IndexError "<classname>IndexError</classname>">
-<!ENTITY NameError "<classname>NameError</classname>">
-<!ENTITY str "<function>str</function>">
-<!ENTITY zipfile "<function>zipfile</function>">
+<!ENTITY IndexError "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>IndexError</classname>">
+<!ENTITY NameError "<classname xmlns='http://www.scons.org/dbxsd/v1.0'>NameError</classname>">
+<!ENTITY str "<function xmlns='http://www.scons.org/dbxsd/v1.0'>str</function>">
+<!ENTITY zipfile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>zipfile</function>">
<!-- Obsolete, but referenced in old documents. -->
-<!ENTITY Cache "<function>Cache</function>">
+<!ENTITY Cache "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Cache</function>">
@@ -301,11 +301,11 @@
-->
-<!ENTITY ARGLIST "<varname>ARGLIST</varname>">
-<!ENTITY ARGUMENTS "<varname>ARGUMENTS</varname>">
-<!ENTITY BUILD_TARGETS "<varname>BUILD_TARGETS</varname>">
-<!ENTITY COMMAND_LINE_TARGETS "<varname>COMMAND_LINE_TARGETS</varname>">
-<!ENTITY DEFAULT_TARGETS "<varname>DEFAULT_TARGETS</varname>">
+<!ENTITY ARGLIST "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>ARGLIST</varname>">
+<!ENTITY ARGUMENTS "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>ARGUMENTS</varname>">
+<!ENTITY BUILD_TARGETS "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>BUILD_TARGETS</varname>">
+<!ENTITY COMMAND_LINE_TARGETS "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>COMMAND_LINE_TARGETS</varname>">
+<!ENTITY DEFAULT_TARGETS "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>DEFAULT_TARGETS</varname>">
@@ -315,16 +315,16 @@
-->
-<!ENTITY BUILDERMAP "<varname>BUILDERMAP</varname>">
-<!ENTITY COLOR "<varname>COLOR</varname>">
-<!ENTITY COLORS "<varname>COLORS</varname>">
-<!ENTITY CONFIG "<varname>CONFIG</varname>">
-<!ENTITY CPPDEFINES "<varname>CPPDEFINES</varname>">
-<!ENTITY RELEASE "<varname>RELEASE</varname>">
-<!ENTITY RELEASE_BUILD "<varname>RELEASE_BUILD</varname>">
-<!ENTITY SCANNERMAP "<varname>SCANNERMAP</varname>">
-<!ENTITY TARFLAGS "<varname>TARFLAGS</varname>">
-<!ENTITY TARSUFFIX "<varname>TARSUFFIX</varname>">
+<!ENTITY BUILDERMAP "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>BUILDERMAP</varname>">
+<!ENTITY COLOR "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>COLOR</varname>">
+<!ENTITY COLORS "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>COLORS</varname>">
+<!ENTITY CONFIG "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>CONFIG</varname>">
+<!ENTITY CPPDEFINES "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>CPPDEFINES</varname>">
+<!ENTITY RELEASE "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>RELEASE</varname>">
+<!ENTITY RELEASE_BUILD "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>RELEASE_BUILD</varname>">
+<!ENTITY SCANNERMAP "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>SCANNERMAP</varname>">
+<!ENTITY TARFLAGS "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>TARFLAGS</varname>">
+<!ENTITY TARSUFFIX "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>TARSUFFIX</varname>">
@@ -334,9 +334,9 @@
-->
-<!ENTITY PATH "<varname>PATH</varname>">
-<!ENTITY PYTHONPATH "<varname>PYTHONPATH</varname>">
-<!ENTITY SCONSFLAGS "<varname>SCONSFLAGS</varname>">
+<!ENTITY PATH "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>PATH</varname>">
+<!ENTITY PYTHONPATH "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>PYTHONPATH</varname>">
+<!ENTITY SCONSFLAGS "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>SCONSFLAGS</varname>">
@@ -346,16 +346,16 @@
-->
-<!ENTITY allowed_values "<varname>allowed_values</varname>">
-<!ENTITY build_dir "<varname>build_dir</varname>">
-<!ENTITY map "<varname>map</varname>">
-<!ENTITY ignorecase "<varname>ignorecase</varname>">
-<!ENTITY options "<varname>options</varname>">
-<!ENTITY exports "<varname>exports</varname>">
-<!ENTITY source "<varname>source</varname>">
-<!ENTITY target "<varname>target</varname>">
-<!ENTITY variables "<varname>variables</varname>">
-<!ENTITY variant_dir "<varname>variant_dir</varname>">
+<!ENTITY allowed_values "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>allowed_values</varname>">
+<!ENTITY build_dir "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>build_dir</varname>">
+<!ENTITY map "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>map</varname>">
+<!ENTITY ignorecase "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>ignorecase</varname>">
+<!ENTITY options "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>options</varname>">
+<!ENTITY exports "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>exports</varname>">
+<!ENTITY source "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>source</varname>">
+<!ENTITY target "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>target</varname>">
+<!ENTITY variables "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>variables</varname>">
+<!ENTITY variant_dir "<varname xmlns='http://www.scons.org/dbxsd/v1.0'>variant_dir</varname>">
@@ -365,8 +365,8 @@
-->
-<!ENTITY all "<literal>all</literal>">
-<!ENTITY none "<literal>none</literal>">
+<!ENTITY all "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>all</literal>">
+<!ENTITY none "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>none</literal>">
@@ -376,33 +376,33 @@
-->
-<!ENTITY BuildDir "<function>BuildDir</function>">
-<!ENTITY CFile "<function>CFile</function>">
-<!ENTITY CXXFile "<function>CXXFile</function>">
-<!ENTITY DVI "<function>DVI</function>">
-<!ENTITY Jar "<function>Jar</function>">
-<!ENTITY Java "<function>Java</function>">
-<!ENTITY JavaH "<function>JavaH</function>">
-<!ENTITY Library "<function>Library</function>">
-<!ENTITY Object "<function>Object</function>">
-<!ENTITY PCH "<function>PCH</function>">
-<!ENTITY PDF "<function>PDF</function>">
-<!ENTITY PostScript "<function>PostScript</function>">
-<!ENTITY Program "<function>Program</function>">
-<!ENTITY RES "<function>RES</function>">
-<!ENTITY RMIC "<function>RMIC</function>">
-<!ENTITY SharedLibrary "<function>SharedLibrary</function>">
-<!ENTITY SharedObject "<function>SharedObject</function>">
-<!ENTITY StaticLibrary "<function>StaticLibrary</function>">
-<!ENTITY StaticObject "<function>StaticObject</function>">
-<!ENTITY Substfile "<function>Substfile</function>">
-<!ENTITY Tar "<function>Tar</function>">
-<!ENTITY Textfile "<function>Textfile</function>">
-<!ENTITY VariantDir "<function>VariantDir</function>">
-<!ENTITY Zip "<function>Zip</function>">
+<!ENTITY BuildDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>BuildDir</function>">
+<!ENTITY CFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CFile</function>">
+<!ENTITY CXXFile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CXXFile</function>">
+<!ENTITY DVI "<function xmlns='http://www.scons.org/dbxsd/v1.0'>DVI</function>">
+<!ENTITY Jar "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Jar</function>">
+<!ENTITY Java "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Java</function>">
+<!ENTITY JavaH "<function xmlns='http://www.scons.org/dbxsd/v1.0'>JavaH</function>">
+<!ENTITY Library "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Library</function>">
+<!ENTITY Object "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Object</function>">
+<!ENTITY PCH "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PCH</function>">
+<!ENTITY PDF "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PDF</function>">
+<!ENTITY PostScript "<function xmlns='http://www.scons.org/dbxsd/v1.0'>PostScript</function>">
+<!ENTITY Program "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Program</function>">
+<!ENTITY RES "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RES</function>">
+<!ENTITY RMIC "<function xmlns='http://www.scons.org/dbxsd/v1.0'>RMIC</function>">
+<!ENTITY SharedLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SharedLibrary</function>">
+<!ENTITY SharedObject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SharedObject</function>">
+<!ENTITY StaticLibrary "<function xmlns='http://www.scons.org/dbxsd/v1.0'>StaticLibrary</function>">
+<!ENTITY StaticObject "<function xmlns='http://www.scons.org/dbxsd/v1.0'>StaticObject</function>">
+<!ENTITY Substfile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Substfile</function>">
+<!ENTITY Tar "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tar</function>">
+<!ENTITY Textfile "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Textfile</function>">
+<!ENTITY VariantDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>VariantDir</function>">
+<!ENTITY Zip "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Zip</function>">
<!-- Obsolete, but referenced in old documents. -->
-<!ENTITY MakeBuilder "<function>Make</function>">
+<!ENTITY MakeBuilder "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Make</function>">
@@ -413,49 +413,49 @@
-->
-<!ENTITY buildfunc "<literal>builder function</literal>">
-<!ENTITY build_action "<literal>build action</literal>">
-<!ENTITY build_actions "<literal>build actions</literal>">
-<!ENTITY builder_method "<literal>builder method</literal>">
+<!ENTITY buildfunc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>builder function</literal>">
+<!ENTITY build_action "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>build action</literal>">
+<!ENTITY build_actions "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>build actions</literal>">
+<!ENTITY builder_method "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>builder method</literal>">
-<!ENTITY Configure_Contexts "<literal>Configure Contexts</literal>">
-<!ENTITY configure_context "<literal>configure context</literal>">
+<!ENTITY Configure_Contexts "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Configure Contexts</literal>">
+<!ENTITY configure_context "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>configure context</literal>">
-<!ENTITY ConsEnv "<literal>Construction Environment</literal>">
-<!ENTITY ConsEnvs "<literal>Construction Environments</literal>">
-<!ENTITY Consenv "<literal>Construction environment</literal>">
-<!ENTITY Consenvs "<literal>Construction environments</literal>">
-<!ENTITY consenv "<literal>construction environment</literal>">
-<!ENTITY consenvs "<literal>construction environments</literal>">
+<!ENTITY ConsEnv "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction Environment</literal>">
+<!ENTITY ConsEnvs "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction Environments</literal>">
+<!ENTITY Consenv "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction environment</literal>">
+<!ENTITY Consenvs "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction environments</literal>">
+<!ENTITY consenv "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>construction environment</literal>">
+<!ENTITY consenvs "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>construction environments</literal>">
-<!ENTITY ConsVar "<literal>Construction Variable</literal>">
-<!ENTITY ConsVars "<literal>Construction Variables</literal>">
-<!ENTITY Consvar "<literal>Construction variable</literal>">
-<!ENTITY Consvars "<literal>Construction variables</literal>">
-<!ENTITY consvar "<literal>construction variable</literal>">
-<!ENTITY consvars "<literal>construction variables</literal>">
+<!ENTITY ConsVar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction Variable</literal>">
+<!ENTITY ConsVars "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction Variables</literal>">
+<!ENTITY Consvar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction variable</literal>">
+<!ENTITY Consvars "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Construction variables</literal>">
+<!ENTITY consvar "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>construction variable</literal>">
+<!ENTITY consvars "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>construction variables</literal>">
-<!ENTITY CPPPATH "<literal>CPPPATH</literal>">
+<!ENTITY CPPPATH "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>CPPPATH</literal>">
-<!ENTITY Dictionary "<literal>Dictionary</literal>">
+<!ENTITY Dictionary "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Dictionary</literal>">
-<!ENTITY Emitter "<literal>Emitter</literal>">
-<!ENTITY emitter "<literal>emitter</literal>">
+<!ENTITY Emitter "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Emitter</literal>">
+<!ENTITY emitter "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>emitter</literal>">
-<!ENTITY factory "<literal>factory</literal>">
+<!ENTITY factory "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>factory</literal>">
-<!ENTITY Generator "<literal>Generator</literal>">
-<!ENTITY generator "<literal>generator</literal>">
+<!ENTITY Generator "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Generator</literal>">
+<!ENTITY generator "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>generator</literal>">
-<!ENTITY Nodes "<literal>Nodes</literal>">
+<!ENTITY Nodes "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Nodes</literal>">
-<!ENTITY signature "<literal>signature</literal>">
-<!ENTITY buildsignature "<literal>build signature</literal>">
+<!ENTITY signature "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>signature</literal>">
+<!ENTITY buildsignature "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>build signature</literal>">
-<!ENTITY true "<literal>true</literal>">
-<!ENTITY false "<literal>false</literal>">
+<!ENTITY true "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>true</literal>">
+<!ENTITY false "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>false</literal>">
-<!ENTITY typedef "<literal>typedef</literal>">
+<!ENTITY typedef "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>typedef</literal>">
<!--
@@ -463,12 +463,12 @@
-->
-<!ENTITY action "<literal>action=</literal>">
-<!ENTITY batch_key "<literal>batch_key=</literal>">
-<!ENTITY cmdstr "<literal>cmdstr=</literal>">
-<!ENTITY exitstatfunc "<literal>exitstatfunc=</literal>">
-<!ENTITY strfunction "<literal>strfunction=</literal>">
-<!ENTITY varlist "<literal>varlist=</literal>">
+<!ENTITY action "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>action=</literal>">
+<!ENTITY batch_key "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>batch_key=</literal>">
+<!ENTITY cmdstr "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>cmdstr=</literal>">
+<!ENTITY exitstatfunc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>exitstatfunc=</literal>">
+<!ENTITY strfunction "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>strfunction=</literal>">
+<!ENTITY varlist "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>varlist=</literal>">
<!--
@@ -476,38 +476,38 @@
-->
-<!ENTITY bar "<filename>bar</filename>">
-<!ENTITY common1_c "<filename>common1.c</filename>">
-<!ENTITY common2_c "<filename>common2.c</filename>">
-<!ENTITY custom_py "<filename>custom.py</filename>">
-<!ENTITY goodbye "<filename>goodbye</filename>">
-<!ENTITY goodbye_o "<filename>goodbye.o</filename>">
-<!ENTITY goodbye_obj "<filename>goodbye.obj</filename>">
-<!ENTITY file_dll "<filename>file.dll</filename>">
-<!ENTITY file_in "<filename>file.in</filename>">
-<!ENTITY file_lib "<filename>file.lib</filename>">
-<!ENTITY file_o "<filename>file.o</filename>">
-<!ENTITY file_obj "<filename>file.obj</filename>">
-<!ENTITY file_out "<filename>file.out</filename>">
-<!ENTITY foo "<filename>foo</filename>">
-<!ENTITY foo_o "<filename>foo.o</filename>">
-<!ENTITY foo_obj "<filename>foo.obj</filename>">
-<!ENTITY hello "<filename>hello</filename>">
-<!ENTITY hello_c "<filename>hello.c</filename>">
-<!ENTITY hello_exe "<filename>hello.exe</filename>">
-<!ENTITY hello_h "<filename>hello.h</filename>">
-<!ENTITY hello_o "<filename>hello.o</filename>">
-<!ENTITY hello_obj "<filename>hello.obj</filename>">
-<!ENTITY libfile_a "<filename>libfile_a</filename>">
-<!ENTITY libfile_so "<filename>libfile_so</filename>">
-<!ENTITY new_hello "<filename>new_hello</filename>">
-<!ENTITY new_hello_exe "<filename>new_hello.exe</filename>">
-<!ENTITY prog "<filename>prog</filename>">
-<!ENTITY prog1 "<filename>prog1</filename>">
-<!ENTITY prog2 "<filename>prog2</filename>">
-<!ENTITY prog_c "<filename>prog.c</filename>">
-<!ENTITY prog_exe "<filename>prog.exe</filename>">
-<!ENTITY stdio_h "<filename>stdio.h</filename>">
+<!ENTITY bar "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>bar</filename>">
+<!ENTITY common1_c "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>common1.c</filename>">
+<!ENTITY common2_c "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>common2.c</filename>">
+<!ENTITY custom_py "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>custom.py</filename>">
+<!ENTITY goodbye "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>goodbye</filename>">
+<!ENTITY goodbye_o "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>goodbye.o</filename>">
+<!ENTITY goodbye_obj "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>goodbye.obj</filename>">
+<!ENTITY file_dll "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>file.dll</filename>">
+<!ENTITY file_in "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>file.in</filename>">
+<!ENTITY file_lib "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>file.lib</filename>">
+<!ENTITY file_o "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>file.o</filename>">
+<!ENTITY file_obj "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>file.obj</filename>">
+<!ENTITY file_out "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>file.out</filename>">
+<!ENTITY foo "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>foo</filename>">
+<!ENTITY foo_o "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>foo.o</filename>">
+<!ENTITY foo_obj "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>foo.obj</filename>">
+<!ENTITY hello "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>hello</filename>">
+<!ENTITY hello_c "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>hello.c</filename>">
+<!ENTITY hello_exe "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>hello.exe</filename>">
+<!ENTITY hello_h "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>hello.h</filename>">
+<!ENTITY hello_o "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>hello.o</filename>">
+<!ENTITY hello_obj "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>hello.obj</filename>">
+<!ENTITY libfile_a "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>libfile_a</filename>">
+<!ENTITY libfile_so "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>libfile_so</filename>">
+<!ENTITY new_hello "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>new_hello</filename>">
+<!ENTITY new_hello_exe "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>new_hello.exe</filename>">
+<!ENTITY prog "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>prog</filename>">
+<!ENTITY prog1 "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>prog1</filename>">
+<!ENTITY prog2 "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>prog2</filename>">
+<!ENTITY prog_c "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>prog.c</filename>">
+<!ENTITY prog_exe "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>prog.exe</filename>">
+<!ENTITY stdio_h "<filename xmlns='http://www.scons.org/dbxsd/v1.0'>stdio.h</filename>">
<!--
@@ -515,8 +515,8 @@
-->
-<!ENTITY plus "<literal>+</literal>">
-<!ENTITY hash "<literal>#</literal>">
+<!ENTITY plus "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>+</literal>">
+<!ENTITY hash "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>#</literal>">
<!--
@@ -524,6 +524,15 @@
-->
-<!ENTITY scons-announce "<literal>announce@scons.tigris.org</literal>">
-<!ENTITY scons-devel "<literal>dev@scons.tigris.org</literal>">
-<!ENTITY scons-users "<literal>users@scons.tigris.org</literal>">
+<!ENTITY scons-announce "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>announce@scons.tigris.org</literal>">
+<!ENTITY scons-devel "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>dev@scons.tigris.org</literal>">
+<!ENTITY scons-users "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>users@scons.tigris.org</literal>">
+
+<!--
+
+ Character entities
+
+-->
+
+<!ENTITY lambda "&#923;">
+<!ENTITY mdash "&#8212;">
diff --git a/doc/user/MANIFEST b/doc/user/MANIFEST
index 21c63b0..62da288 100644
--- a/doc/user/MANIFEST
+++ b/doc/user/MANIFEST
@@ -1,3 +1,6 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
actions.xml
add-method.xml
alias.xml
@@ -46,7 +49,11 @@ tools.xml
troubleshoot.xml
variants.xml
variables.xml
-SCons-win32-install-1.jpg
-SCons-win32-install-2.jpg
-SCons-win32-install-3.jpg
-SCons-win32-install-4.jpg
+*.jpg
+*.xsl
+*.css
+SConstruct
+titlepage/bricks.jpg
+titlepage/mapnik_final_colors.svg
+titlepage/SCons_path.svg
+titlepage/SConsBuildBricks_path.svg
diff --git a/doc/user/README b/doc/user/README
index 7b79162..132d5e4 100644
--- a/doc/user/README
+++ b/doc/user/README
@@ -1,4 +1,4 @@
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
When adding a new file, add it to main.xml and MANIFEST.
diff --git a/doc/user/SConstruct b/doc/user/SConstruct
new file mode 100644
index 0000000..fa38396
--- /dev/null
+++ b/doc/user/SConstruct
@@ -0,0 +1,66 @@
+#
+# SConstruct file for building SCons documentation.
+#
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+
+env = Environment(ENV={'PATH' : os.environ['PATH']},
+ tools=['docbook','gs','zip'],
+ toolpath=['../../src/engine/SCons/Tool'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_HTMLCHUNKED='chtml.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+
+has_pdf = False
+if (env.WhereIs('fop') or
+ env.WhereIs('xep')):
+ has_pdf = True
+
+#
+# UserGuide for SCons
+#
+env.DocbookXInclude('scons_xi.xml', 'main.xml')
+env.DocbookXslt('scons_ex.xml', 'scons_xi.xml',
+ xsl='../xslt/xinclude_examples.xslt')
+env.DocbookXInclude('scons_exi.xml', 'scons_ex.xml')
+env.DocbookXslt('scons_db.xml', 'scons_exi.xml',
+ xsl='../xslt/to_docbook.xslt')
+env.DocbookHtml('index.html','scons_db.xml')
+env.DocbookHtmlChunked('index.html', 'scons_db.xml', base_dir='scons-user/')
+if has_pdf:
+ env.DocbookPdf('scons-user.pdf','scons_db.xml')
+
+has_gs = False
+if env.WhereIs('gs'):
+ has_gs = True
+
+#
+# Create the EPUB format
+#
+if has_gs and has_pdf:
+ jpg = env.Gs('OEBPS/cover.jpg','scons-user.pdf',
+ GSFLAGS='-dNOPAUSE -dBATCH -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -dJPEGQ=100 -r72x72 -q')
+ epub = env.DocbookEpub('scons-user.epub', 'scons_db.xml', xsl='epub.xsl')
+ env.Depends(epub, jpg)
diff --git a/doc/user/actions.in b/doc/user/actions.in
deleted file mode 100644
index 21e3075..0000000
--- a/doc/user/actions.in
+++ /dev/null
@@ -1,404 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 Build actions
-
-Cons supports several types of B<build actions> that can be performed
-to construct one or more target files. Usually, a build action is
-a construction command, that is, a command-line string that invokes
-an external command. Cons can also execute Perl code embedded in a
-command-line string, and even supports an experimental ability to build
-a target file by executing a Perl code reference directly.
-
-A build action is usually specified as the value of a construction
-variable:
-
- $env = new cons(
- CCCOM => '%CC %CFLAGS %_IFLAGS -c %< -o %>',
- LINKCOM => '[perl] &link_executable("%>", "%<")',
- ARCOM => sub { my($env, $target, @sources) = @_;
- # code to create an archive
- }
- );
-
-A build action may be associated directly with one or more target files
-via the C<Command> method; see below.
-
-=head2 Construction commands
-
-A construction command goes through expansion of construction variables
-and C<%-> pseudo-variables, as described above, to create the actual
-command line that Cons will execute to generate the target file or
-files.
-
-After substitution occurs, strings of white space are converted into
-single blanks, and leading and trailing white space is eliminated. It
-is therefore currently not possible to introduce variable length white
-space in strings passed into a command.
-
-If a multi-line command string is provided, the commands are executed
-sequentially. If any of the commands fails, then none of the rest are
-executed, and the target is not marked as updated, i.e. a new signature is
-not stored for the target.
-
-Normally, if all the commands succeed, and return a zero status (or whatever
-platform-specific indication of success is required), then a new signature
-is stored for the target. If a command erroneously reports success even
-after a failure, then Cons will assume that the target file created by that
-command is accurate and up-to-date.
-
-The first word of each command string, after expansion, is assumed to be an
-executable command looked up on the C<PATH> environment variable (which is,
-in turn, specified by the C<ENV> construction variable). If this command is
-found on the path, then the target will depend upon it: the command will
-therefore be automatically built, as necessary. It's possible to write
-multi-part commands to some shells, separated by semi-colons. Only the first
-command word will be depended upon, however, so if you write your command
-strings this way, you must either explicitly set up a dependency (with the
-C<Depends> method), or be sure that the command you are using is a system
-command which is expected to be available. If it isn't available, you will,
-of course, get an error.
-
-Cons normally prints a command before executing it. This behavior is
-suppressed if the first character of the command is C<@>. Note that
-you may need to separate the C<@> from the command name or escape it to
-prevent C<@cmd> from looking like an array to Perl quote operators that
-perform interpolation:
-
- # The first command line is incorrect,
- # because "@cp" looks like an array
- # to the Perl qq// function.
- # Use the second form instead.
- Command $env 'foo', 'foo.in', qq(
- @cp %< tempfile
- @ cp tempfile %>
- );
-
-If there are shell meta characters anywhere in the expanded command line,
-such as C<E<lt>>, C<E<gt>>, quotes, or semi-colon, then the command
-will actually be executed by invoking a shell. This means that a command
-such as:
-
- cd foo
-
-alone will typically fail, since there is no command C<cd> on the path. But
-the command string:
-
- cd $<:d; tar cf $>:f $<:f
-
-when expanded will still contain the shell meta character semi-colon, and a
-shell will be invoked to interpret the command. Since C<cd> is interpreted
-by this sub-shell, the command will execute as expected.
-
-=head2 Perl expressions
-
-If any command (even one within a multi-line command) begins with
-C<[perl]>, the remainder of that command line will be evaluated by the
-running Perl instead of being forked by the shell. If an error occurs
-in parsing the Perl code, or if the Perl expression returns 0 or undef,
-the command will be considered to have failed. For example, here is a
-simple command which creates a file C<foo> directly from Perl:
-
- $env = new cons();
- Command $env 'foo',
- qq([perl] open(FOO,'>foo');print FOO "hi\\n"; close(FOO); 1);
-
-Note that when the command is executed, you are in the same package as
-when the F<Construct> or F<Conscript> file was read, so you can call
-Perl functions you've defined in the same F<Construct> or F<Conscript>
-file in which the C<Command> appears:
-
- $env = new cons();
- sub create_file {
- my $file = shift;
- open(FILE, ">$file");
- print FILE "hi\n";
- close(FILE);
- return 1;
- }
- Command $env 'foo', "[perl] &create_file('%>')";
-
-The Perl string will be used to generate the signature for the derived
-file, so if you change the string, the file will be rebuilt. The contents
-of any subroutines you call, however, are not part of the signature,
-so if you modify a called subroutine such as C<create_file> above,
-the target will I<not> be rebuilt. Caveat user.
-
-=head2 Perl code references [EXPERIMENTAL]
-
-Cons supports the ability to create a derived file by directly executing
-a Perl code reference. This feature is considered EXPERIMENTAL and
-subject to change in the future.
-
-A code reference may either be a named subroutine referenced by the
-usual C<\&> syntax:
-
- sub build_output {
- my($env, $target, @sources) = @_;
- print "build_output building $target\n";
- open(OUT, ">$target");
- foreach $src (@sources) {
- if (! open(IN, "<$src")) {
- print STDERR "cannot open '$src': $!\n";
- return undef;
- }
- print OUT, <IN>;
- }
- close(OUT);
- return 1;
- }
- Command $env 'output', \&build_output;
-
-or the code reference may be an anonymous subroutine:
-
- Command $env 'output', sub {
- my($env, $target, @sources) = @_;
- print "building $target\n";
- open(FILE, ">$target");
- print FILE "hello\n";
- close(FILE);
- return 1;
- };
-
-To build the target file, the referenced subroutine is passed, in order:
-the construction environment used to generate the target; the path
-name of the target itself; and the path names of all the source files
-necessary to build the target file.
-
-The code reference is expected to generate the target file, of course,
-but may manipulate the source and target files in any way it chooses.
-The code reference must return a false value (C<undef> or C<0>) if
-the build of the file failed. Any true value indicates a successful
-build of the target.
-
-Building target files using code references is considered EXPERIMENTAL
-due to the following current limitations:
-
-=over 4
-
-Cons does I<not> print anything to indicate the code reference is being
-called to build the file. The only way to give the user any indication
-is to have the code reference explicitly print some sort of "building"
-message, as in the above examples.
-
-Cons does not generate any signatures for code references, so if the
-code in the reference changes, the target will I<not> be rebuilt.
-
-Cons has no public method to allow a code reference to extract
-construction variables. This would be good to allow generalization of
-code references based on the current construction environment, but would
-also complicate the problem of generating meaningful signatures for code
-references.
-
-=back
-
-Support for building targets via code references has been released in
-this version to encourage experimentation and the seeking of possible
-solutions to the above limitations.
-
--->
-
- <para>
-
- &SCons; supports several types of &build_actions;
- that can be performed to build one or more target files.
- Usually, a &build_action; is a command-line string
- that invokes an external command.
- A build action can also be an external command
- specified as a list of arguments,
- or even a Python function.
-
- </para>
-
- <para>
-
- Build action objects are created by the &Action; function.
- This function is, in fact, what &SCons; uses
- to interpret the &action;
- keyword argument when you call the &Builder; function.
- So the following line that creates a simple Builder:
-
- </para>
-
- <sconstruct>
- b = Builder(action = 'build &lt; $SOURCE &gt; $TARGET')
- </sconstruct>
-
- <para>
-
- Is equivalent to:
-
- </para>
-
- <sconstruct>
- b = Builder(action = Action('build &lt; $SOURCE &gt; $TARGET'))
- </sconstruct>
-
- <para>
-
- The advantage of using the &Action; function directly
- is that it can take a number of additional options
- to modify the action's behavior in many useful ways.
-
- </para>
-
- <section>
- <title>Command Strings as Actions</title>
-
- <section>
- <title>Suppressing Command-Line Printing</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Ignoring Exit Status</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Argument Lists as Actions</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Python Functions as Actions</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Modifying How an Action is Printed</title>
-
- <section>
- <title>XXX: the &strfunction; keyword argument</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>XXX: the &cmdstr; keyword argument</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Making an Action Depend on Variable Contents: the &varlist; keyword argument</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>chdir=1</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Batch Building of Multiple Targets from Separate Sources: the &batch_key; keyword argument</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Manipulating the Exit Status of an Action: the &exitstatfunc; keyword argument</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <!--
-
- ???
-
- <section>
- <title>presub=</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/actions.xml b/doc/user/actions.xml
index 4a99a24..7973549 100644
--- a/doc/user/actions.xml
+++ b/doc/user/actions.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-actions"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>&SCons; Actions</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -244,9 +266,9 @@ solutions to the above limitations.
</para>
- <programlisting>
- b = Builder(action = 'build &lt; $SOURCE &gt; $TARGET')
- </programlisting>
+ <sconstruct>
+b = Builder(action = 'build &lt; $SOURCE &gt; $TARGET')
+ </sconstruct>
<para>
@@ -254,9 +276,9 @@ solutions to the above limitations.
</para>
- <programlisting>
- b = Builder(action = Action('build &lt; $SOURCE &gt; $TARGET'))
- </programlisting>
+ <sconstruct>
+b = Builder(action = Action('build &lt; $SOURCE &gt; $TARGET'))
+ </sconstruct>
<para>
@@ -402,3 +424,5 @@ solutions to the above limitations.
</section>
-->
+
+</chapter>
diff --git a/doc/user/add-method.in b/doc/user/add-method.in
deleted file mode 100644
index a0c21a3..0000000
--- a/doc/user/add-method.in
+++ /dev/null
@@ -1,127 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- The &AddMethod; function is used to add a method
- to an environment. It's typically used to add a "pseudo-builder,"
- a function that looks like a &Builder; but
- wraps up calls to multiple other &Builder;s
- or otherwise processes its arguments
- before calling one or more &Builder;s.
- In the following example,
- we want to install the program into the standard
- <filename>/usr/bin</filename> directory hierarchy,
- but also copy it into a local <filename>install/bin</filename>
- directory from which a package might be built:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- def install_in_bin_dirs(env, source):
- """Install source in both bin dirs"""
- i1 = env.Install("$BIN", source)
- i2 = env.Install("$LOCALBIN", source)
- return [i1[0], i2[0]] # Return a list, like a normal builder
- env = Environment(BIN='__ROOT__/usr/bin', LOCALBIN='#install/bin')
- env.AddMethod(install_in_bin_dirs, "InstallInBinDirs")
- env.InstallInBinDirs(Program('hello.c')) # installs hello in both bin dirs
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
- This produces the following:
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q /</scons_output_command>
- </scons_output>
-
- <para>
-
- As mentioned, a pseudo-builder also provides more flexibility
- in parsing arguments than you can get with a &Builder;.
- The next example shows a pseudo-builder with a
- named argument that modifies the filename, and a separate argument
- for the resource file (rather than having the builder figure it out
- by file extension). This example also demonstrates using the global
- &AddMethod; function to add a method to the global Environment class,
- so it will be used in all subsequently created environments.
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- def BuildTestProg(env, testfile, resourcefile, testdir="tests"):
- """Build the test program;
- prepends "test_" to src and target,
- and puts target into testdir."""
- srcfile = "test_%s.c" % testfile
- target = "%s/test_%s" % (testdir, testfile)
- if env['PLATFORM'] == 'win32':
- resfile = env.RES(resourcefile)
- p = env.Program(target, [srcfile, resfile])
- else:
- p = env.Program(target, srcfile)
- return p
- AddMethod(Environment, BuildTestProg)
-
- env = Environment()
- env.BuildTestProg('stuff', resourcefile='res.rc')
- </file>
- <file name="test_stuff.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="res.rc">
- res.rc
- </file>
- </scons_example>
-
- <para>
- This produces the following on Linux:
- </para>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
- And the following on Windows:
- </para>
-
- <scons_output example="ex2" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
- Using &AddMethod; is better than just adding an instance method
- to a &consenv; because it gets called as a proper method,
- and because &AddMethod; provides for copying the method
- to any clones of the &consenv; instance.
- </para>
diff --git a/doc/user/add-method.xml b/doc/user/add-method.xml
index 717f24c..50a2d01 100644
--- a/doc/user/add-method.xml
+++ b/doc/user/add-method.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-add-method"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Pseudo-Builders: the AddMethod function</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,28 +61,29 @@
</para>
- <programlisting>
- def install_in_bin_dirs(env, source):
- """Install source in both bin dirs"""
- i1 = env.Install("$BIN", source)
- i2 = env.Install("$LOCALBIN", source)
- return [i1[0], i2[0]] # Return a list, like a normal builder
- env = Environment(BIN='/usr/bin', LOCALBIN='#install/bin')
- env.AddMethod(install_in_bin_dirs, "InstallInBinDirs")
- env.InstallInBinDirs(Program('hello.c')) # installs hello in both bin dirs
- </programlisting>
+ <scons_example name="addmethod_ex1">
+ <file name="SConstruct" printme="1">
+def install_in_bin_dirs(env, source):
+ """Install source in both bin dirs"""
+ i1 = env.Install("$BIN", source)
+ i2 = env.Install("$LOCALBIN", source)
+ return [i1[0], i2[0]] # Return a list, like a normal builder
+env = Environment(BIN='__ROOT__/usr/bin', LOCALBIN='#install/bin')
+env.AddMethod(install_in_bin_dirs, "InstallInBinDirs")
+env.InstallInBinDirs(Program('hello.c')) # installs hello in both bin dirs
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
This produces the following:
</para>
- <screen>
- % <userinput>scons -Q /</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- Install file: "hello" as "/usr/bin/hello"
- Install file: "hello" as "install/bin/hello"
- </screen>
+ <scons_output example="addmethod_ex1" suffix="1">
+ <scons_output_command>scons -Q /</scons_output_command>
+ </scons_output>
<para>
@@ -75,46 +98,48 @@
</para>
- <programlisting>
- def BuildTestProg(env, testfile, resourcefile, testdir="tests"):
- """Build the test program;
- prepends "test_" to src and target,
- and puts target into testdir."""
- srcfile = "test_%s.c" % testfile
- target = "%s/test_%s" % (testdir, testfile)
- if env['PLATFORM'] == 'win32':
- resfile = env.RES(resourcefile)
- p = env.Program(target, [srcfile, resfile])
- else:
- p = env.Program(target, srcfile)
- return p
- AddMethod(Environment, BuildTestProg)
-
- env = Environment()
- env.BuildTestProg('stuff', resourcefile='res.rc')
- </programlisting>
+ <scons_example name="addmethod_ex2">
+ <file name="SConstruct" printme="1">
+def BuildTestProg(env, testfile, resourcefile, testdir="tests"):
+ """Build the test program;
+ prepends "test_" to src and target,
+ and puts target into testdir."""
+ srcfile = "test_%s.c" % testfile
+ target = "%s/test_%s" % (testdir, testfile)
+ if env['PLATFORM'] == 'win32':
+ resfile = env.RES(resourcefile)
+ p = env.Program(target, [srcfile, resfile])
+ else:
+ p = env.Program(target, srcfile)
+ return p
+AddMethod(Environment, BuildTestProg)
+
+env = Environment()
+env.BuildTestProg('stuff', resourcefile='res.rc')
+ </file>
+ <file name="test_stuff.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="res.rc">
+res.rc
+ </file>
+ </scons_example>
<para>
This produces the following on Linux:
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o test_stuff.o -c test_stuff.c
- cc -o tests/test_stuff test_stuff.o
- </screen>
+ <scons_output example="addmethod_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
And the following on Windows:
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- rc /fores.res res.rc
- cl /Fotest_stuff.obj /c test_stuff.c /nologo
- link /nologo /OUT:tests\test_stuff.exe test_stuff.obj res.res
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="addmethod_ex2" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
Using &AddMethod; is better than just adding an instance method
@@ -122,3 +147,5 @@
and because &AddMethod; provides for copying the method
to any clones of the &consenv; instance.
</para>
+
+</chapter>
diff --git a/doc/user/alias.in b/doc/user/alias.in
deleted file mode 100644
index 9d1a596..0000000
--- a/doc/user/alias.in
+++ /dev/null
@@ -1,102 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- We've already seen how you can use the &Alias;
- function to create a target named <literal>install</literal>:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- env.Install('__ROOT__/usr/bin', hello)
- env.Alias('install', '__ROOT__/usr/bin')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- You can then use this alias on the command line
- to tell &SCons; more naturally that you want to install files:
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q install</scons_output_command>
- </scons_output>
-
- <para>
-
- Like other &Builder; methods, though,
- the &Alias; method returns an object
- representing the alias being built.
- You can then use this object as input to anothother &Builder;.
- This is especially useful if you use such an object
- as input to another call to the &Alias; &Builder;,
- allowing you to create a hierarchy
- of nested aliases:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- env = Environment()
- p = env.Program('foo.c')
- l = env.Library('bar.c')
- env.Install('__ROOT__/usr/bin', p)
- env.Install('__ROOT__/usr/lib', l)
- ib = env.Alias('install-bin', '__ROOT__/usr/bin')
- il = env.Alias('install-lib', '__ROOT__/usr/lib')
- env.Alias('install', [ib, il])
- </file>
- <file name="foo.c">
- int main() { printf("foo.c\n"); }
- </file>
- <file name="bar.c">
- void bar() { printf("bar.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- This example defines separate <literal>install</literal>,
- <literal>install-bin</literal>,
- and <literal>install-lib</literal> aliases,
- allowing you finer control over what gets installed:
-
- </para>
-
- <scons_output example="ex2" os="posix">
- <scons_output_command>scons -Q install-bin</scons_output_command>
- <scons_output_command>scons -Q install-lib</scons_output_command>
- <scons_output_command>scons -Q -c __ROOT__/</scons_output_command>
- <scons_output_command>scons -Q install</scons_output_command>
- </scons_output>
diff --git a/doc/user/alias.xml b/doc/user/alias.xml
index 47b1da9..883ebef 100644
--- a/doc/user/alias.xml
+++ b/doc/user/alias.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-alias"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Alias Targets</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -30,12 +52,17 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- env.Install('/usr/bin', hello)
- env.Alias('install', '/usr/bin')
- </programlisting>
+ <scons_example name="alias_ex1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+env.Install('__ROOT__/usr/bin', hello)
+env.Alias('install', '__ROOT__/usr/bin')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -44,12 +71,9 @@
</para>
- <screen>
- % <userinput>scons -Q install</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- Install file: "hello" as "/usr/bin/hello"
- </screen>
+ <scons_output example="alias_ex1" os="posix" suffix="1">
+ <scons_output_command>scons -Q install</scons_output_command>
+ </scons_output>
<para>
@@ -64,16 +88,24 @@
</para>
- <programlisting>
- env = Environment()
- p = env.Program('foo.c')
- l = env.Library('bar.c')
- env.Install('/usr/bin', p)
- env.Install('/usr/lib', l)
- ib = env.Alias('install-bin', '/usr/bin')
- il = env.Alias('install-lib', '/usr/lib')
- env.Alias('install', [ib, il])
- </programlisting>
+ <scons_example name="alias_ex2">
+ <file name="SConstruct" printme="1">
+env = Environment()
+p = env.Program('foo.c')
+l = env.Library('bar.c')
+env.Install('__ROOT__/usr/bin', p)
+env.Install('__ROOT__/usr/lib', l)
+ib = env.Alias('install-bin', '__ROOT__/usr/bin')
+il = env.Alias('install-lib', '__ROOT__/usr/lib')
+env.Alias('install', [ib, il])
+ </file>
+ <file name="foo.c">
+int main() { printf("foo.c\n"); }
+ </file>
+ <file name="bar.c">
+void bar() { printf("bar.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -84,29 +116,11 @@
</para>
- <screen>
- % <userinput>scons -Q install-bin</userinput>
- cc -o foo.o -c foo.c
- cc -o foo foo.o
- Install file: "foo" as "/usr/bin/foo"
- % <userinput>scons -Q install-lib</userinput>
- cc -o bar.o -c bar.c
- ar rc libbar.a bar.o
- ranlib libbar.a
- Install file: "libbar.a" as "/usr/lib/libbar.a"
- % <userinput>scons -Q -c /</userinput>
- Removed foo.o
- Removed foo
- Removed /usr/bin/foo
- Removed bar.o
- Removed libbar.a
- Removed /usr/lib/libbar.a
- % <userinput>scons -Q install</userinput>
- cc -o foo.o -c foo.c
- cc -o foo foo.o
- Install file: "foo" as "/usr/bin/foo"
- cc -o bar.o -c bar.c
- ar rc libbar.a bar.o
- ranlib libbar.a
- Install file: "libbar.a" as "/usr/lib/libbar.a"
- </screen>
+ <scons_output example="alias_ex2" os="posix" suffix="1">
+ <scons_output_command>scons -Q install-bin</scons_output_command>
+ <scons_output_command>scons -Q install-lib</scons_output_command>
+ <scons_output_command>scons -Q -c __ROOT__/</scons_output_command>
+ <scons_output_command>scons -Q install</scons_output_command>
+ </scons_output>
+
+</chapter>
diff --git a/doc/user/ant.xml b/doc/user/ant.xml
index 87ad4b0..1808d9e 100644
--- a/doc/user/ant.xml
+++ b/doc/user/ant.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<appendix id="app-ant"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Converting From Ant</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -50,3 +72,5 @@
</para>
</section>
+
+</appendix>
diff --git a/doc/user/build-install.in b/doc/user/build-install.in
deleted file mode 100644
index 57f4b84..0000000
--- a/doc/user/build-install.in
+++ /dev/null
@@ -1,709 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- This chapter will take you through the basic steps
- of installing &SCons; on your system,
- and building &SCons; if you don't have a
- pre-built package available
- (or simply prefer the flexibility of building it yourself).
- Before that, however, this chapter will also describe the basic steps
- involved in installing Python on your system,
- in case that is necessary.
- Fortunately, both &SCons; and Python
- are very easy to install on almost any system,
- and Python already comes installed on many systems.
-
- </para>
-
- <!--
-
- <para>
-
- Lastly, this chapter also contains a section that
- provides a brief overview of the Python programming language,
- which is the language used to implement &SCons;,
- and which forms the basis of the &SCons; configuration files.
- Becoming familiar with some Python concepts will make it easier
- to understand many of the examples in this User's Guide.
- Nevertheless, it <emphasis>is</emphasis> possible
- to configure simple &SCons; builds without knowing Python,
- so you can skip this section if you
- want to dive in and pick up things
- by example- -or, of course, if you are
- already familiar with Python.
-
- </para>
-
- -->
-
- <section>
- <title>Installing Python</title>
-
- <para>
-
- Because &SCons; is written in Python,
- you must obviously have Python installed on your system
- to use &SCons;.
- Before you try to install Python,
- you should check to see if Python is already
- available on your system by typing
- <userinput>python -V</userinput>
- (capital 'V')
- or
- <userinput>python --version</userinput>
- at your system's command-line prompt.
-
- </para>
-
- <screen>
- $ <userinput>python -V</userinput>
- Python 2.5.1
- </screen>
-
- <para>
-
- And on a Windows system with Python installed:
-
- </para>
-
- <screen>
- C:\><userinput>python -V</userinput>
- Python 2.5.1
- </screen>
-
- <para>
-
- If Python is not installed on your system,
- you will see an error message
- stating something like "command not found"
- (on UNIX or Linux)
- or "'python' is not recognized
- as an internal or external command, operable progam or batch file"
- (on Windows).
- In that case, you need to install Python
- before you can install &SCons;.
-
- </para>
-
- <para>
-
- The standard location for information
- about downloading and installing Python is
- <ulink url="http://www.python.org/download/">http://www.python.org/download/</ulink>.
- See that page for information about
- how to download and install Python on your system.
-
- </para>
-
- <para>
-
- &SCons; will work with any 2.x version of Python from 2.4 on;
- 3.0 and later are not yet supported.
- If you need to install Python and have a choice,
- we recommend using the most recent 2.x Python version available.
- Newer Pythons have significant improvements
- that help speed up the performance of &SCons;.
-
- </para>
-
- </section>
-
- <section>
- <title>Installing &SCons; From Pre-Built Packages</title>
-
- <para>
-
- &SCons; comes pre-packaged for installation on a number of systems,
- including Linux and Windows systems.
- You do not need to read this entire section,
- you should need to read only the section
- appropriate to the type of system you're running on.
-
- </para>
-
- <section>
- <title>Installing &SCons; on Red Hat (and Other RPM-based) Linux Systems</title>
-
- <para>
-
- &SCons; comes in RPM (Red Hat Package Manager) format,
- pre-built and ready to install on Red Hat Linux,
- Fedora,
- or any other Linux distribution that uses RPM.
- Your distribution may
- already have an &SCons; RPM built specifically for it;
- many do, including SUSE, Mandrake and Fedora.
- You can check for the availability of an &SCons; RPM
- on your distribution's download servers,
- or by consulting an RPM search site like
- <ulink url="http://www.rpmfind.net/">http://www.rpmfind.net/</ulink> or
- <ulink url="http://rpm.pbone.net/">http://rpm.pbone.net/</ulink>.
-
- </para>
-
- <para>
-
- If your distribution supports installation via
- <application>yum</application>,
- you should be able to install &SCons; by running:
-
- </para>
-
- <screen>
- # <userinput>yum install scons</userinput>
- </screen>
-
- <para>
-
- If your Linux distribution does not already have
- a specific &SCons; RPM file,
- you can download and install from the
- generic RPM provided by the &SCons; project.
- This will install the
- SCons script(s) in <filename>/usr/bin</filename>,
- and the SCons library modules in
- <filename>/usr/lib/scons</filename>.
-
- </para>
-
- <para>
-
- To install from the command line, simply download the
- appropriate <filename>.rpm</filename> file,
- and then run:
-
- </para>
-
- <screen>
- # <userinput>rpm -Uvh scons-2.3.0-1.noarch.rpm</userinput>
- </screen>
-
- <para>
-
- Or, you can use a graphical RPM package manager.
- See your package manager application's documention
- for specific instructions about
- how to use it to install a downloaded RPM.
-
- </para>
-
- </section>
-
- <section>
- <title>Installing &SCons; on Debian Linux Systems</title>
-
- <para>
-
- Debian Linux systems use a different package management
- format that also makes it very easy to install &SCons;.
-
- </para>
-
- <para>
-
- If your system is connected to the Internet,
- you can install the latest official Debian package
- by running:
-
- </para>
-
- <screen>
- # <userinput>apt-get install scons</userinput>
- </screen>
-
- <!--
-
- <para>
-
- Alternatively,
- you can download the Debian package built
- by the &SCons; project
- and install it manually by running:
-
- </para>
-
- <screen>
- # <userinput>db-XXX scons-*.deb</userinput>
- </screen>
-
- -->
-
- </section>
-
- <section>
- <title>Installing &SCons; on Windows Systems</title>
-
- <para>
-
- &SCons; provides a Windows installer
- that makes installation extremely easy.
- Download the <filename>scons-2.3.0.win32.exe</filename>
- file from the &SCons; download page at
- <ulink url="http://www.scons.org/download.php">http://www.scons.org/download.php</ulink>.
- Then all you need to do is execute the file
- (usually by clicking on its icon in Windows Explorer).
- These will take you through a small
- sequence of windows that will install
- &SCons; on your system.
-
- <!--
- Things are a little more complicated
- if you are using the Cygwin version of Python.
- This is because Cygwin
- tries to make a Windows system look more
- POSIX-like (or UNIX-like or Linux-like, if you prefer)
- by having the Cygwin utilities,
- including Cygwin Python,
- interpret file name arguments on the command line
- using the forward-slash (<filename>/</filename>)
- as the directory separator,
- instead of the normal Windows behavior of the
- backslash (<filename>\</filename>) as the directory separator.
- -->
-
- </para>
-
- <!--
-
- <section>
- <title>Installing &SCons; on Windows Systems Without Cygwin Python</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Installing &SCons; on Windows Systems With Cygwin Python</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- -->
-
- <!--
-
- XXX - don't have the kinks worked out on how to
- get these to display properly in all formats,
- so comment them out for now.
-
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="SCons-win32-install-1.jpg" format="jpg" align="center">
- </imageobject>
- </mediaobject>
- </screenshot>
-
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="SCons-win32-install-2.jpg" format="jpg" align="center">
- </imageobject>
- </mediaobject>
- </screenshot>
-
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="SCons-win32-install-3.jpg" format="jpg" align="center">
- </imageobject>
- </mediaobject>
- </screenshot>
-
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="SCons-win32-install-4.jpg" format="jpg" align="center">
- </imageobject>
- </mediaobject>
- </screenshot>
-
- -->
-
- </section>
-
- </section>
-
- <section>
- <title>Building and Installing &SCons; on Any System</title>
-
- <para>
-
- If a pre-built &SCons; package is not available for your system,
- then you can still easily build and install &SCons; using the native
- Python <filename>distutils</filename> package.
-
- </para>
-
- <para>
-
- The first step is to download either the
- <filename>scons-2.3.0.tar.gz</filename>
- or <filename>scons-2.3.0.zip</filename>,
- which are available from the SCons download page at
- <ulink url="http://www.scons.org/download.html">http://www.scons.org/download.html</ulink>.
-
- </para>
-
- <para>
-
- Unpack the archive you downloaded,
- using a utility like <application>tar</application>
- on Linux or UNIX,
- or <application>WinZip</application> on Windows.
- This will create a directory called
- <filename>scons-2.3.0</filename>,
- usually in your local directory.
- Then change your working directory to that directory
- and install &SCons; by executing the following commands:
-
- </para>
-
- <screen>
- # <userinput>cd scons-2.3.0</userinput>
- # <userinput>python setup.py install</userinput>
- </screen>
-
- <para>
-
- This will build &SCons;,
- install the &scons; script
- in the python which is used to run the setup.py's scripts directory
- (<filename>/usr/local/bin</filename> or
- <filename>C:\Python25\Scripts</filename>),
- and will install the &SCons; build engine
- in the corresponding library directory for the python used
- (<filename>/usr/local/lib/scons</filename> or
- <filename>C:\Python25\scons</filename>).
- Because these are system directories,
- you may need root (on Linux or UNIX) or Administrator (on Windows)
- privileges to install &SCons; like this.
-
- </para>
-
- <!--
-
- <section>
- <title>Building and Installing &SCons; in the Standard Python Library Directories</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- -->
-
- <section>
- <title>Building and Installing Multiple Versions of &SCons; Side-by-Side</title>
-
- <para>
-
- The &SCons; <filename>setup.py</filename> script
- has some extensions that support
- easy installation of multiple versions of &SCons;
- in side-by-side locations.
- This makes it easier to download and
- experiment with different versions of &SCons;
- before moving your official build process to a new version,
- for example.
-
- </para>
-
- <para>
-
- To install &SCons; in a version-specific location,
- add the <option>--version-lib</option> option
- when you call <filename>setup.py</filename>:
-
- </para>
-
- <screen>
- # <userinput>python setup.py install --version-lib</userinput>
- </screen>
-
- <para>
-
- This will install the &SCons; build engine
- in the
- <filename>/usr/lib/scons-2.3.0</filename>
- or
- <filename>C:\Python25\scons-2.3.0</filename>
- directory, for example.
-
- </para>
-
- <para>
-
- If you use the <option>--version-lib</option> option
- the first time you install &SCons;,
- you do not need to specify it each time you install
- a new version.
- The &SCons; <filename>setup.py</filename> script
- will detect the version-specific directory name(s)
- and assume you want to install all versions
- in version-specific directories.
- You can override that assumption in the future
- by explicitly specifying the <option>--standalone-lib</option> option.
-
- </para>
-
- </section>
-
- <section>
- <title>Installing &SCons; in Other Locations</title>
-
- <para>
-
- You can install &SCons; in locations other than
- the default by specifying the <option>--prefix=</option> option:
-
- </para>
-
- <screen>
- # <userinput>python setup.py install --prefix=/opt/scons</userinput>
- </screen>
-
- <para>
-
- This would
- install the <application>scons</application> script in
- <filename>/opt/scons/bin</filename>
- and the build engine in
- <filename>/opt/scons/lib/scons</filename>,
-
- </para>
-
- <para>
-
- Note that you can specify both the <option>--prefix=</option>
- and the <option>--version-lib</option> options
- at the same type,
- in which case <filename>setup.py</filename>
- will install the build engine
- in a version-specific directory
- relative to the specified prefix.
- Adding <option>--version-lib</option> to the
- above example would install the build engine in
- <filename>/opt/scons/lib/scons-2.3.0</filename>.
-
- </para>
-
- </section>
-
- <section>
- <title>Building and Installing &SCons; Without Administrative Privileges</title>
-
- <para>
-
- If you don't have the right privileges to install &SCons;
- in a system location,
- simply use the <literal>--prefix=</literal> option
- to install it in a location of your choosing.
- For example,
- to install &SCons; in appropriate locations
- relative to the user's <literal>$HOME</literal> directory,
- the &scons; script in
- <filename>$HOME/bin</filename>
- and the build engine in
- <filename>$HOME/lib/scons</filename>,
- simply type:
-
- </para>
-
- <screen>
- $ <userinput>python setup.py install --prefix=$HOME</userinput>
- </screen>
-
- <para>
-
- You may, of course, specify any other location you prefer,
- and may use the <option>--version-lib</option> option
- if you would like to install version-specific directories
- relative to the specified prefix.
-
- </para>
-
- <para>
-
- This can also be used to experiment with a newer
- version of &SCons; than the one installed
- in your system locations.
- Of course, the location in which you install the
- newer version of the &scons; script
- (<filename>$HOME/bin</filename> in the above example)
- must be configured in your &PATH; variable
- before the directory containing
- the system-installed version
- of the &scons; script.
-
- </para>
-
- </section>
-
- </section>
-
- <!--
-
- <section>
- <title>Python Basics</title>
-
- <para>
-
- This section will provide a brief overview of
- the Python programming language.
- Skip this section if you are already familiar with Python
- (or you're really intent on diving into &SCons;
- and just picking up things as you go).
-
- </para>
-
- <para>
-
- Python has a lot of good
- documentation freely available on-line
- to help you get started.
- The standard tutorial is available at XXX.
-
-
- </para>
-
- <para>
-
- Python is very easy to pick up.
-
- </para>
-
- <para>
-
- Python variables must be assigned to before they can be referenced.
-
- </para>
-
- <para>
-
- Assignment is like most programming languages:
-
- x = 1 + 2
- z = 3 * x
-
- </para>
-
- <para>
-
- Function calls look like most language function calls:
-
- a = f(g)
-
- </para>
-
- <para>
-
- Define functions like so:
-
- def func(arg1, arg2):
- return arg1 * arg 2
-
- The number of parameters
-
- </para>
-
- <para>
-
- Strings can be enclosed in single quotes or double quotes,
- backslashes are used to escape characters,
- triple-quote syntax lets you include quotes and newlines,
- raw strings begin with 'r'.
-
- </para>
-
- <para>
-
- Lists are enclosed in square brackets,
- list items are separated by commas.
- List references use square brackets and integer index values,
- slice notation lets you select, delete or replace a range.
-
- </para>
-
- <para>
-
- Dictionaries (hashes) are enclosed in curly brackets,
- : separates keys from values,
- , separates items.
- Dictionary values are referenced using square brackets.
-
- </para>
-
- <para>
-
- Access class attributes (including methods) using a '.'.
-
- </para>
-
- <para>
-
- if: statements look like
-
- elif: statements look like
-
- else: statements look like
-
- </para>
-
- <para>
-
- for: statements look like
-
- while: statements look like
-
- break statements look like
-
- continue statements look like
-
- </para>
-
- <para>
-
- pass
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/build-install.xml b/doc/user/build-install.xml
index 57f4b84..d3e0875 100644
--- a/doc/user/build-install.xml
+++ b/doc/user/build-install.xml
@@ -1,6 +1,32 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+
+ <!ENTITY % version SYSTEM "../version.xml">
+ %version;
+
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-build-install"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Building and Installing &SCons;</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -80,8 +106,8 @@
</para>
<screen>
- $ <userinput>python -V</userinput>
- Python 2.5.1
+$ <userinput>python -V</userinput>
+Python 2.5.1
</screen>
<para>
@@ -91,8 +117,8 @@
</para>
<screen>
- C:\><userinput>python -V</userinput>
- Python 2.5.1
+C:\><userinput>python -V</userinput>
+Python 2.5.1
</screen>
<para>
@@ -174,7 +200,7 @@
</para>
<screen>
- # <userinput>yum install scons</userinput>
+# <userinput>yum install scons</userinput>
</screen>
<para>
@@ -199,7 +225,7 @@
</para>
<screen>
- # <userinput>rpm -Uvh scons-2.3.0-1.noarch.rpm</userinput>
+# <userinput>rpm -Uvh scons-&buildversion;-1.noarch.rpm</userinput>
</screen>
<para>
@@ -232,7 +258,7 @@
</para>
<screen>
- # <userinput>apt-get install scons</userinput>
+# <userinput>apt-get install scons</userinput>
</screen>
<!--
@@ -247,7 +273,7 @@
</para>
<screen>
- # <userinput>db-XXX scons-*.deb</userinput>
+# <userinput>db-XXX scons-*.deb</userinput>
</screen>
-->
@@ -261,7 +287,7 @@
&SCons; provides a Windows installer
that makes installation extremely easy.
- Download the <filename>scons-2.3.0.win32.exe</filename>
+ Download the <filename>scons-&buildversion;.win32.exe</filename>
file from the &SCons; download page at
<ulink url="http://www.scons.org/download.php">http://www.scons.org/download.php</ulink>.
Then all you need to do is execute the file
@@ -371,8 +397,8 @@
<para>
The first step is to download either the
- <filename>scons-2.3.0.tar.gz</filename>
- or <filename>scons-2.3.0.zip</filename>,
+ <filename>scons-&buildversion;.tar.gz</filename>
+ or <filename>scons-&buildversion;.zip</filename>,
which are available from the SCons download page at
<ulink url="http://www.scons.org/download.html">http://www.scons.org/download.html</ulink>.
@@ -385,7 +411,7 @@
on Linux or UNIX,
or <application>WinZip</application> on Windows.
This will create a directory called
- <filename>scons-2.3.0</filename>,
+ <filename>scons-&buildversion;</filename>,
usually in your local directory.
Then change your working directory to that directory
and install &SCons; by executing the following commands:
@@ -393,8 +419,8 @@
</para>
<screen>
- # <userinput>cd scons-2.3.0</userinput>
- # <userinput>python setup.py install</userinput>
+# <userinput>cd scons-&buildversion;</userinput>
+# <userinput>python setup.py install</userinput>
</screen>
<para>
@@ -454,16 +480,16 @@
</para>
<screen>
- # <userinput>python setup.py install --version-lib</userinput>
+# <userinput>python setup.py install --version-lib</userinput>
</screen>
<para>
This will install the &SCons; build engine
in the
- <filename>/usr/lib/scons-2.3.0</filename>
+ <filename>/usr/lib/scons-&buildversion;</filename>
or
- <filename>C:\Python25\scons-2.3.0</filename>
+ <filename>C:\Python25\scons-&buildversion;</filename>
directory, for example.
</para>
@@ -496,7 +522,7 @@
</para>
<screen>
- # <userinput>python setup.py install --prefix=/opt/scons</userinput>
+# <userinput>python setup.py install --prefix=/opt/scons</userinput>
</screen>
<para>
@@ -520,7 +546,7 @@
relative to the specified prefix.
Adding <option>--version-lib</option> to the
above example would install the build engine in
- <filename>/opt/scons/lib/scons-2.3.0</filename>.
+ <filename>/opt/scons/lib/scons-&buildversion;</filename>.
</para>
@@ -547,7 +573,7 @@
</para>
<screen>
- $ <userinput>python setup.py install --prefix=$HOME</userinput>
+$ <userinput>python setup.py install --prefix=$HOME</userinput>
</screen>
<para>
@@ -707,3 +733,5 @@
</section>
-->
+
+</chapter>
diff --git a/doc/user/builders-built-in.in b/doc/user/builders-built-in.in
deleted file mode 100644
index f248d76..0000000
--- a/doc/user/builders-built-in.in
+++ /dev/null
@@ -1,950 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- &SCons; provides the ability to build a lot of different
- types of files right "out of the box."
- So far, we've been using &SCons;' ability to build
- programs, objects and libraries to
- illustrate much of the underlying functionality of &SCons;
- This section will describe all of the different
- types of files that you can build with &SCons;,
- and the built-in &Builder; objects used to build them.
- By default, all of the &Builder; objects in this section
- can be built either with or without an explicit
- construction environment.
-
- </para>
-
- <section>
- <title>Programs: the &Program; Builder</title>
-
- <para>
-
- As we've seen, the &b-link-Program; Builder
- is used to build an executable program.
- The &source; argument is one or more
- source-code files or object files,
- and the &target; argument is the
- name of the executable program name to be created.
- For example:
-
- </para>
-
- <programlisting>
- Program('prog', 'file1.o')
- </programlisting>
-
- <para>
-
- Will create the &prog;
- executable on a POSIX system,
- the &prog_exe; executable on a Windows system.
-
- </para>
-
- <para>
-
- The target file's prefix and suffix may be omitted,
- and the values from the
- &cv-link-PROGPREFIX;
- and
- &cv-link-PROGSUFFIX;
- construction variables
- will be appended appropriately.
- For example:
-
- </para>
-
- <programlisting>
- env = Environment(PROGPREFIX='my', PROGSUFFIX='.xxx')
- env.Program('prog', ['file1.o', 'file2.o'])
- </programlisting>
-
- <para>
-
- Will create a program named
- <filename>myprog.xxx</filename>
- regardless of the system on which it is run.
-
- </para>
-
- <para>
-
- If you omit the &target;,
- the base of the first input
- file name specified
- becomes the base of the target
- program created.
- For example:
-
- </para>
-
- <programlisting>
- Program(['hello.c', 'goodbye.c'])
- </programlisting>
-
- <para>
-
- Will create the &hello;
- executable on a POSIX system,
- the &hello_exe; executable on a Windows system.
-
- </para>
-
- <para>
-
- Two construction variables control what libraries
- will be linked with the resulting program.
- The &cv-link-LIBS; variable is a list of the names of
- libraries that will be linked into any programs,
- and the &cv-link-LIBPATH; variables is a list of
- directories that will be searched for
- the specified libraries.
- &SCons; will construct the right command-line
- options for the running system.
- For example:
-
- </para>
-
- <scons_example name="libs">
- <file name="SConstruct" printme="1">
- env = Environment(LIBS = ['foo1', 'foo2'],
- LIBPATH = ['/usr/dir1', 'dir2'])
- env.Program(['hello.c', 'goodbye.c'])
- </file>
- <file name="hello.c">
- int hello() { printf("Hello, world!\n"); }
- </file>
- <file name="goodbye.c">
- int goodbye() { printf("Goodbye, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Will execute as follows on a POSIX system:
-
- </para>
-
- <scons_output example="libs" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And execute as follows on a Windows system:
-
- </para>
-
- <scons_output example="libs" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The &cv-LIBS; construction variable
- is turned into command line options
- by appending the &cv-link-LIBLINKPREFIX; and &cv-link-LIBLINKSUFFIX;
- construction variables to the beginning and end,
- respectively, of each specified library.
-
- </para>
-
- <para>
-
- The &cv-LIBPATH; construction variable
- is turned into command line options
- by appending the &cv-link-LIBDIRPREFIX; and &cv-link-LIBDIRSUFFIX;
- construction variables to the beginning and end,
- respectively, of each specified library.
-
- </para>
-
- <para>
-
- Other relevant construction variables
- include those used by the &b-link-Object;
- builders to affect how the
- source files specified as input to the &t-Program;
- builders are turned into object files;
- see the next section.
-
- </para>
-
- <para>
-
- The command line used to control how a program is linked
- is specified by the &cv-link-LINKCOM; construction variable.
- By default, it uses the
- &cv-link-LINK; construction variable
- and the &cv-link-LINKFLAGS; construction variable.
-
- </para>
-
- </section>
-
- <section>
- <title>Object-File Builders</title>
-
- <para>
-
- &SCons; provides separate Builder objects
- to create static and shared object files.
- The distinction becomes especially important when
- archiving object files into different types of libraries.
-
- </para>
-
- <section>
- <title>The &StaticObject; Builder</title>
-
- <para>
-
- The &b-link-StaticObject; Builder
- is used to build an object file
- suitable for static linking into a program,
- or for inclusion in a static library.
- The &source; argument is a single source-code file,
- and the &target; argument is the
- name of the static object file to be created.
- For example:
-
- </para>
-
- <programlisting>
- StaticObject('file', 'file.c')
- </programlisting>
-
- <para>
-
- Will create the &file_o;
- object file on a POSIX system,
- the &file_obj; executable on a Windows system.
-
- </para>
-
- <para>
-
- The target file's prefix and suffix may be omitted,
- and the values from the
- &cv-link-OBJPREFIX;
- and
- &cv-link-OBJSUFFIX;
- construction variables
- will be appended appropriately.
- For example:
-
- </para>
-
- <programlisting>
- env = Environment(OBJPREFIX='my', OBJSUFFIX='.xxx')
- env.StaticObject('file', 'file.c')
- </programlisting>
-
- <para>
-
- Will create an object file named
- <filename>myfile.xxx</filename>
- regardless of the system on which it is run.
-
- </para>
-
- <para>
-
- If you omit the &target;,
- the base of the first input
- file name specified
- beomces the base of the name
- of the static object file to be created.
- For example:
-
- </para>
-
- <programlisting>
- StaticObject('file.c')
- </programlisting>
-
- <para>
-
- Will create the &file_o;
- executable on a POSIX system,
- the &file_obj; executable on a Windows system.
-
- </para>
-
- </section>
-
- <section>
- <title>The &SharedObject; Builder</title>
-
- <para>
-
- The &b-link-SharedObject; Builder
- is used to build an object file
- suitable for shared linking into a program,
- or for inclusion in a shared library.
- The &source; argument is a single source-code file,
- and the &target; argument is the
- name of the shared object file to be created.
- For example:
-
- </para>
-
- <programlisting>
- SharedObject('file', 'file.c')
- </programlisting>
-
- <para>
-
- Will create the &file_o;
- object file on a POSIX system,
- the &file_obj; executable on a Windows system.
-
- </para>
-
- <para>
-
- The target file's prefix and suffix may be omitted,
- and the values from the
- &cv-link-SHOBJPREFIX;
- and
- &cv-link-SHOBJSUFFIX;
- construction variables
- will be appended appropriately.
- For example:
-
- </para>
-
- <programlisting>
- env = Environment(SHOBJPREFIX='my', SHOBJSUFFIX='.xxx')
- env.SharedObject('file', 'file.c')
- </programlisting>
-
- <para>
-
- Will create an object file named
- <filename>myfile.xxx</filename>
- regardless of the system on which it is run.
-
- </para>
-
- <para>
-
- If you omit the &target;,
- the base of the first input
- file name specified
- becomes the base of the name
- of the shared object file to be created.
- For example:
-
- </para>
-
- <programlisting>
- SharedObject('file.c')
- </programlisting>
-
- <para>
-
- Will create the &file_o;
- executable on a POSIX system,
- the &file_obj; executable on a Windows system.
-
- </para>
-
- </section>
-
- <section>
- <title>The &Object; Builder</title>
-
- <para>
-
- The &b-link-Object; Builder is a synonym for &b-link-StaticObject;
- and is completely equivalent.
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Library Builders</title>
-
- <para>
-
- &SCons; provides separate Builder objects
- to create static and shared libraries.
-
- </para>
-
- <section>
- <title>The &StaticLibrary; Builder</title>
-
- <para>
-
- The &b-link-StaticLibrary; Builder
- is used to create a library
- suitable for static linking into a program.
- The &source; argument is one or more
- source-code files or object files,
- and the &target; argument is the
- name of the static library to be created.
- For example:
-
- </para>
-
- <programlisting>
- StaticLibrary('foo', ['file1.c', 'file2.c'])
- </programlisting>
-
- <para>
-
- The target file's prefix and suffix may be omitted,
- and the values from the
- &cv-link-LIBPREFIX;
- and
- &cv-link-LIBSUFFIX;
- construction variables
- will be appended appropriately.
- For example:
-
- </para>
-
- <programlisting>
- env = Environment(LIBPREFIX='my', LIBSUFFIX='.xxx')
- env.StaticLibrary('lib', ['file1.o', 'file2.o'])
- </programlisting>
-
- <para>
-
- Will create an object file named
- <filename>mylib.xxx</filename>
- regardless of the system on which it is run.
-
- </para>
-
- <programlisting>
- StaticLibrary('foo', ['file1.c', 'file2.c'])
- </programlisting>
-
- <para>
-
- If you omit the &target;,
- the base of the first input
- file name specified
- becomes the base of the name of the static object file to be created.
- For example:
-
- </para>
-
- <programlisting>
- StaticLibrary(['file.c', 'another.c'])
- </programlisting>
-
- <para>
-
- Will create the &libfile_a;
- library on a POSIX system,
- the &file_lib; library on a Windows system.
-
- </para>
-
- </section>
-
- <section>
- <title>The &SharedLibrary; Builder</title>
-
- <para>
-
- The &b-link-SharedLibrary; Builder
- is used to create a shared library
- suitable for linking with a program.
- The &source; argument is one or more
- source-code files or object files,
- and the &target; argument is the
- name of the shared library to be created.
- For example:
-
- </para>
-
- <programlisting>
- SharedLibrary('foo', ['file1.c', 'file2.c'])
- </programlisting>
-
- <para>
-
- The target file's prefix and suffix may be omitted,
- and the values from the
- &cv-link-SHLIBPREFIX;
- and
- &cv-link-SHLIBSUFFIX;
- construction variables
- will be appended appropriately.
- For example:
-
- </para>
-
- <programlisting>
- env = Environment(SHLIBPREFIX='my', SHLIBSUFFIX='.xxx')
- env.SharedLibrary('shared', ['file1.o', 'file2.o'])
- </programlisting>
-
- <para>
-
- Will create an object file named
- <filename>myshared.xxx</filename>
- regardless of the system on which it is run.
-
- </para>
-
- <programlisting>
- SharedLibrary('foo', ['file1.c', 'file2.c'])
- </programlisting>
-
- <para>
-
- If you omit the &target;,
- the base of the first input
- file name specified
- becomes the base of the name of the shared library to be created.
- For example:
-
- </para>
-
- <programlisting>
- SharedLibrary(['file.c', 'another.c'])
- </programlisting>
-
- <para>
-
- Will create the &libfile_so;
- library on a POSIX system,
- the &file_dll; library on a Windows system.
-
- </para>
-
- </section>
-
- <section>
- <title>The &Library; Builder</title>
-
- <para>
-
- The &b-link-Library; Builder is a synonym for &b-link-StaticLibrary;
- and is completely equivalent.
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Pre-Compiled Headers: the &PCH; Builder</title>
-
- <para>
-
- XXX PCH()
-
- </para>
-
- </section>
-
- <section>
- <title>Microsoft Visual C++ Resource Files: the &RES; Builder</title>
-
- <para>
-
- XXX RES()
-
- </para>
-
- </section>
-
- <section>
- <title>Source Files</title>
-
- <para>
-
- By default
- &SCons; supports two Builder objects
- that know how to build source files
- from other input files.
- These are typically invoked "internally"
- to turn files that need preprocessing into other source files.
-
- </para>
-
- <section>
- <title>The &CFile; Builder</title>
-
- <para>
-
- XXX CFile()
-
- </para>
-
- <programlisting>
- XXX CFile() programlisting
- </programlisting>
-
- <screen>
- XXX CFile() screen
- </screen>
-
- </section>
-
- <section>
- <title>The &CXXFile; Builder</title>
-
- <para>
-
- XXX CXXFILE()
-
- </para>
-
- <programlisting>
- XXX CXXFILE() programlisting
- </programlisting>
-
- <screen>
- XXX CXXFILE() screen
- </screen>
-
- </section>
-
- </section>
-
- <section>
- <title>Documents</title>
-
- <para>
-
- &SCons; provides a number of Builder objects
- for creating different types of documents.
-
- </para>
-
- <section>
- <title>The &DVI; Builder</title>
-
- <para>
-
- XXX DVI() para
-
- </para>
-
- <programlisting>
- XXX DVI() programlisting
- </programlisting>
-
- <screen>
- XXX DVI() screen
- </screen>
-
- </section>
-
- <section>
- <title>The &PDF; Builder</title>
-
- <para>
-
- XXX PDF() para
-
- </para>
-
- </section>
-
- <section>
- <title>The &PostScript; Builder</title>
-
- <para>
-
- XXX PostScript() para
-
- </para>
-
- <programlisting>
- XXX PostScript() programlisting
- </programlisting>
-
- <screen>
- XXX PostScript() screen
- </screen>
-
- </section>
-
- </section>
-
- <section>
- <title>Archives</title>
-
- <para>
-
- &SCons; provides Builder objects
- for creating two different types of archive files.
-
- </para>
-
- <section>
- <title>The &Tar; Builder</title>
-
- <para>
-
- The &b-link-Tar; Builder object uses the &tar;
- utility to create archives of files
- and/or directory trees:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Tar('out1.tar', ['file1', 'file2'])
- env.Tar('out2', 'directory')
- </file>
- <file name="file1">
- file1
- </file>
- <file name="file2">
- file2
- </file>
- <file name="directory/file3">
- directory/file3
- </file>
- </scons_example>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- <para>
-
- One common requirement when creating a &tar; archive
- is to create a compressed archive using the
- <option>-z</option> option.
- This is easily handled by specifying
- the value of the &cv-link-TARFLAGS; variable
- when you create the construction environment.
- Note, however, that the <option>-c</option> used to
- to instruct &tar; to create the archive
- is part of the default value of &cv-TARFLAGS;,
- so you need to set it both options:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- env = Environment(TARFLAGS = '-c -z')
- env.Tar('out.tar.gz', 'directory')
- </file>
- <file name="directory/file">
- directory/file
- </file>
- </scons_example>
-
- <scons_output example="ex2" os="posix">
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- <para>
-
- you may also wish to set the value of the
- &cv-link-TARSUFFIX; construction variable
- to your desired suffix for compress &tar; archives,
- so that &SCons; can append it to the target file name
- without your having to specify it explicitly:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct" printme="1">
- env = Environment(TARFLAGS = '-c -z',
- TARSUFFIX = '.tgz')
- env.Tar('out', 'directory')
- </file>
- <file name="directory/file">
- directory/file
- </file>
- </scons_example>
-
- <scons_output example="ex3" os="posix">
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>The &Zip; Builder</title>
-
- <para>
-
- The &b-link-Zip; Builder object creates archives of files
- and/or directory trees in the ZIP file format.
- Python versions 1.6 or later
- contain an internal &zipfile; module
- that &SCons; will use.
- In this case, given the following
- &SConstruct; file:
-
- </para>
-
- <scons_example name="ex4">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Zip('out', ['file1', 'file2'])
- </file>
- <file name="file1">
- file1
- </file>
- <file name="file2">
- file2
- </file>
- </scons_example>
-
- <para>
-
- Your output will reflect the fact
- that an internal Python function
- is being used to create the output ZIP archive:
-
- </para>
-
- <scons_output example="ex4" os="posix">
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- </section>
-
- </section>
-
- <section>
- <title>Java</title>
-
- <para>
-
- &SCons; provides Builder objects
- for creating various types of Java output files.
-
- </para>
-
- <section>
- <title>Building Class Files: the &Java; Builder</title>
-
- <para>
-
- The &b-link-Java; builder takes one or more input
- <filename>.java</filename> files
- and turns them into one or more
- <filename>.class</filename> files
- Unlike most builders, however,
- the &Java; builder takes
- target and source <emphasis>directories</emphasis>,
- not files, as input.
-
- </para>
-
- <programlisting>
- env = Environment()
- env.Java(target = 'classes', source = 'src')
- </programlisting>
-
- <para>
-
- The &Java; builder will then
- search the specified source directory
- tree for all <filename>.java</filename> files,
- and pass any out-of-date
-
- </para>
-
- <screen>
- XXX Java() screen
- </screen>
-
- </section>
-
- <section>
- <title>The &Jar; Builder</title>
-
- <para>
-
- XXX The &Jar; builder object
-
- </para>
-
- <programlisting>
- env = Environment()
- env.Java(target = 'classes', source = 'src')
- env.Jar(target = '', source = 'classes')
- </programlisting>
-
- <screen>
- XXX Jar() screen
- </screen>
-
- </section>
-
- <section>
- <title>Building C header and stub files: the &JavaH; Builder</title>
-
- <para>
-
- XXX JavaH() para
-
- </para>
-
- <programlisting>
- XXX JavaH() programlisting
- </programlisting>
-
- <screen>
- XXX JavaH() screen
- </screen>
-
- </section>
-
- <section>
- <title>Building RMI stub and skeleton class files: the &RMIC; Builder</title>
-
- <para>
-
- XXX RMIC() para
-
- </para>
-
- <programlisting>
- XXX RMIC() programlisting
- </programlisting>
-
- <screen>
- XXX RMIC() screen
- </screen>
-
- </section>
-
- </section>
diff --git a/doc/user/builders-built-in.xml b/doc/user/builders-built-in.xml
index 7151bf4..455b7a3 100644
--- a/doc/user/builders-built-in.xml
+++ b/doc/user/builders-built-in.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-builders-built-in"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Built-In Builders</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -55,7 +77,7 @@
</para>
<programlisting>
- Program('prog', 'file1.o')
+Program('prog', 'file1.o')
</programlisting>
<para>
@@ -80,8 +102,8 @@
</para>
<programlisting>
- env = Environment(PROGPREFIX='my', PROGSUFFIX='.xxx')
- env.Program('prog', ['file1.o', 'file2.o'])
+env = Environment(PROGPREFIX='my', PROGSUFFIX='.xxx')
+env.Program('prog', ['file1.o', 'file2.o'])
</programlisting>
<para>
@@ -104,7 +126,7 @@
</para>
<programlisting>
- Program(['hello.c', 'goodbye.c'])
+Program(['hello.c', 'goodbye.c'])
</programlisting>
<para>
@@ -130,11 +152,19 @@
</para>
- <programlisting>
- env = Environment(LIBS = ['foo1', 'foo2'],
- LIBPATH = ['/usr/dir1', 'dir2'])
- env.Program(['hello.c', 'goodbye.c'])
- </programlisting>
+ <scons_example name="buildersbuiltin_libs">
+ <file name="SConstruct" printme="1">
+env = Environment(LIBS = ['foo1', 'foo2'],
+ LIBPATH = ['/usr/dir1', 'dir2'])
+env.Program(['hello.c', 'goodbye.c'])
+ </file>
+ <file name="hello.c">
+int hello() { printf("Hello, world!\n"); }
+ </file>
+ <file name="goodbye.c">
+int goodbye() { printf("Goodbye, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -142,12 +172,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o goodbye.o -c goodbye.c
- cc -o hello.o -c hello.c
- cc -o hello hello.o goodbye.o -L/usr/dir1 -Ldir2 -lfoo1 -lfoo2
- </screen>
+ <scons_output example="buildersbuiltin_libs" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -155,13 +182,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fogoodbye.obj /c goodbye.c /nologo
- cl /Fohello.obj /c hello.c /nologo
- link /nologo /OUT:hello.exe /LIBPATH:\usr\dir1 /LIBPATH:dir2 foo1.lib foo2.lib hello.obj goodbye.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="buildersbuiltin_libs" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -188,7 +211,7 @@
Other relevant construction variables
include those used by the &b-link-Object;
builders to affect how the
- source files specified as input to the &t-Program;
+ source files specified as input to the <literal>Program</literal>
builders are turned into object files;
see the next section.
@@ -235,7 +258,7 @@
</para>
<programlisting>
- StaticObject('file', 'file.c')
+StaticObject('file', 'file.c')
</programlisting>
<para>
@@ -260,8 +283,8 @@
</para>
<programlisting>
- env = Environment(OBJPREFIX='my', OBJSUFFIX='.xxx')
- env.StaticObject('file', 'file.c')
+env = Environment(OBJPREFIX='my', OBJSUFFIX='.xxx')
+env.StaticObject('file', 'file.c')
</programlisting>
<para>
@@ -284,7 +307,7 @@
</para>
<programlisting>
- StaticObject('file.c')
+StaticObject('file.c')
</programlisting>
<para>
@@ -314,7 +337,7 @@
</para>
<programlisting>
- SharedObject('file', 'file.c')
+SharedObject('file', 'file.c')
</programlisting>
<para>
@@ -339,8 +362,8 @@
</para>
<programlisting>
- env = Environment(SHOBJPREFIX='my', SHOBJSUFFIX='.xxx')
- env.SharedObject('file', 'file.c')
+env = Environment(SHOBJPREFIX='my', SHOBJSUFFIX='.xxx')
+env.SharedObject('file', 'file.c')
</programlisting>
<para>
@@ -363,7 +386,7 @@
</para>
<programlisting>
- SharedObject('file.c')
+SharedObject('file.c')
</programlisting>
<para>
@@ -417,7 +440,7 @@
</para>
<programlisting>
- StaticLibrary('foo', ['file1.c', 'file2.c'])
+StaticLibrary('foo', ['file1.c', 'file2.c'])
</programlisting>
<para>
@@ -434,8 +457,8 @@
</para>
<programlisting>
- env = Environment(LIBPREFIX='my', LIBSUFFIX='.xxx')
- env.StaticLibrary('lib', ['file1.o', 'file2.o'])
+env = Environment(LIBPREFIX='my', LIBSUFFIX='.xxx')
+env.StaticLibrary('lib', ['file1.o', 'file2.o'])
</programlisting>
<para>
@@ -447,7 +470,7 @@
</para>
<programlisting>
- StaticLibrary('foo', ['file1.c', 'file2.c'])
+StaticLibrary('foo', ['file1.c', 'file2.c'])
</programlisting>
<para>
@@ -461,7 +484,7 @@
</para>
<programlisting>
- StaticLibrary(['file.c', 'another.c'])
+StaticLibrary(['file.c', 'another.c'])
</programlisting>
<para>
@@ -491,7 +514,7 @@
</para>
<programlisting>
- SharedLibrary('foo', ['file1.c', 'file2.c'])
+SharedLibrary('foo', ['file1.c', 'file2.c'])
</programlisting>
<para>
@@ -508,8 +531,8 @@
</para>
<programlisting>
- env = Environment(SHLIBPREFIX='my', SHLIBSUFFIX='.xxx')
- env.SharedLibrary('shared', ['file1.o', 'file2.o'])
+env = Environment(SHLIBPREFIX='my', SHLIBSUFFIX='.xxx')
+env.SharedLibrary('shared', ['file1.o', 'file2.o'])
</programlisting>
<para>
@@ -521,7 +544,7 @@
</para>
<programlisting>
- SharedLibrary('foo', ['file1.c', 'file2.c'])
+SharedLibrary('foo', ['file1.c', 'file2.c'])
</programlisting>
<para>
@@ -535,7 +558,7 @@
</para>
<programlisting>
- SharedLibrary(['file.c', 'another.c'])
+SharedLibrary(['file.c', 'another.c'])
</programlisting>
<para>
@@ -608,11 +631,11 @@
</para>
<programlisting>
- XXX CFile() programlisting
+XXX CFile() programlisting
</programlisting>
<screen>
- XXX CFile() screen
+XXX CFile() screen
</screen>
</section>
@@ -627,11 +650,11 @@
</para>
<programlisting>
- XXX CXXFILE() programlisting
+XXX CXXFILE() programlisting
</programlisting>
<screen>
- XXX CXXFILE() screen
+XXX CXXFILE() screen
</screen>
</section>
@@ -658,11 +681,11 @@
</para>
<programlisting>
- XXX DVI() programlisting
+XXX DVI() programlisting
</programlisting>
<screen>
- XXX DVI() screen
+XXX DVI() screen
</screen>
</section>
@@ -688,11 +711,11 @@
</para>
<programlisting>
- XXX PostScript() programlisting
+XXX PostScript() programlisting
</programlisting>
<screen>
- XXX PostScript() screen
+XXX PostScript() screen
</screen>
</section>
@@ -720,17 +743,26 @@
</para>
- <programlisting>
- env = Environment()
- env.Tar('out1.tar', ['file1', 'file2'])
- env.Tar('out2', 'directory')
- </programlisting>
+ <scons_example name="buildersbuiltin_ex1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Tar('out1.tar', ['file1', 'file2'])
+env.Tar('out2', 'directory')
+ </file>
+ <file name="file1">
+file1
+ </file>
+ <file name="file2">
+file2
+ </file>
+ <file name="directory/file3">
+directory/file3
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q .</userinput>
- tar -c -f out1.tar file1 file2
- tar -c -f out2.tar directory
- </screen>
+ <scons_output example="buildersbuiltin_ex1" os="posix" suffix="1">
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
<para>
@@ -747,15 +779,19 @@
</para>
- <programlisting>
- env = Environment(TARFLAGS = '-c -z')
- env.Tar('out.tar.gz', 'directory')
- </programlisting>
+ <scons_example name="buildersbuiltin_ex2">
+ <file name="SConstruct" printme="1">
+env = Environment(TARFLAGS = '-c -z')
+env.Tar('out.tar.gz', 'directory')
+ </file>
+ <file name="directory/file">
+directory/file
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q .</userinput>
- tar -c -z -f out.tar.gz directory
- </screen>
+ <scons_output example="buildersbuiltin_ex2" os="posix" suffix="1">
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
<para>
@@ -767,16 +803,20 @@
</para>
- <programlisting>
- env = Environment(TARFLAGS = '-c -z',
- TARSUFFIX = '.tgz')
- env.Tar('out', 'directory')
- </programlisting>
+ <scons_example name="buildersbuiltin_ex3">
+ <file name="SConstruct" printme="1">
+env = Environment(TARFLAGS = '-c -z',
+ TARSUFFIX = '.tgz')
+env.Tar('out', 'directory')
+ </file>
+ <file name="directory/file">
+directory/file
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q .</userinput>
- tar -c -z -f out.tgz directory
- </screen>
+ <scons_output example="buildersbuiltin_ex3" os="posix" suffix="1">
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
</section>
@@ -795,10 +835,18 @@
</para>
- <programlisting>
- env = Environment()
- env.Zip('out', ['file1', 'file2'])
- </programlisting>
+ <scons_example name="buildersbuiltin_ex4">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Zip('out', ['file1', 'file2'])
+ </file>
+ <file name="file1">
+file1
+ </file>
+ <file name="file2">
+file2
+ </file>
+ </scons_example>
<para>
@@ -808,10 +856,9 @@
</para>
- <screen>
- % <userinput>scons -Q .</userinput>
- zip(["out.zip"], ["file1", "file2"])
- </screen>
+ <scons_output example="buildersbuiltin_ex4" os="posix" suffix="1">
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
</section>
@@ -844,8 +891,8 @@
</para>
<programlisting>
- env = Environment()
- env.Java(target = 'classes', source = 'src')
+env = Environment()
+env.Java(target = 'classes', source = 'src')
</programlisting>
<para>
@@ -858,7 +905,7 @@
</para>
<screen>
- XXX Java() screen
+XXX Java() screen
</screen>
</section>
@@ -873,13 +920,13 @@
</para>
<programlisting>
- env = Environment()
- env.Java(target = 'classes', source = 'src')
- env.Jar(target = '', source = 'classes')
+env = Environment()
+env.Java(target = 'classes', source = 'src')
+env.Jar(target = '', source = 'classes')
</programlisting>
<screen>
- XXX Jar() screen
+XXX Jar() screen
</screen>
</section>
@@ -894,11 +941,11 @@
</para>
<programlisting>
- XXX JavaH() programlisting
+XXX JavaH() programlisting
</programlisting>
<screen>
- XXX JavaH() screen
+XXX JavaH() screen
</screen>
</section>
@@ -913,13 +960,15 @@
</para>
<programlisting>
- XXX RMIC() programlisting
+XXX RMIC() programlisting
</programlisting>
<screen>
- XXX RMIC() screen
+XXX RMIC() screen
</screen>
</section>
</section>
+
+</chapter>
diff --git a/doc/user/builders-commands.in b/doc/user/builders-commands.in
deleted file mode 100644
index 45f0787..0000000
--- a/doc/user/builders-commands.in
+++ /dev/null
@@ -1,156 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <!--
-
- =head2 The C<Command> method
-
-
- The C<Command> method is called as follows:
-
- Command $env <target>, <inputs>, <build action>;
-
- The target is made dependent upon the list of input files specified, and the
- inputs must be built successfully or Cons will not attempt to build the
- target.
-
- To specify a command with multiple targets, you can specify a reference to a
- list of targets. In Perl, a list reference can be created by enclosing a
- list in square brackets. Hence the following command:
-
- Command $env ['foo.h', 'foo.c'], 'foo.template', q(
- gen %1
- );
-
- could be used in a case where the command C<gen> creates two files, both
- F<foo.h> and F<foo.c>.
-
- -->
-
- <para>
-
- Creating a &Builder; and attaching it to a &consenv;
- allows for a lot of flexibility when you
- want to re-use actions
- to build multiple files of the same type.
- This can, however, be cumbersome
- if you only need to execute one specific command
- to build a single file (or group of files).
- For these situations, &SCons; supports a
- &Command; &Builder; that arranges
- for a specific action to be executed
- to build a specific file or files.
- This looks a lot like the other builders
- (like &b-link-Program;, &b-link-Object;, etc.),
- but takes as an additional argument
- the command to be executed to build the file:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Command('foo.out', 'foo.in', "sed 's/x/y/' &lt; $SOURCE > $TARGET")
- </file>
- <file name="foo.in">
- foo.in
- </file>
- </scons_example>
-
- <para>
-
- When executed,
- &SCons; runs the specified command,
- substituting &cv-link-SOURCE; and &cv-link-TARGET;
- as expected:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- This is often more convenient than
- creating a &Builder; object
- and adding it to the &cv-link-BUILDERS; variable
- of a &consenv;
-
- </para>
-
- <para>
-
- Note that the action you specify to the
- &Command; &Builder; can be any legal &SCons; &Action;,
- such as a Python function:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- env = Environment()
- def build(target, source, env):
- # Whatever it takes to build
- return None
- env.Command('foo.out', 'foo.in', build)
- </file>
- <file name="foo.in">
- foo.in
- </file>
- </scons_example>
-
- <para>
-
- Which executes as follows:
-
- </para>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that &cv-link-SOURCE; and &cv-link-TARGET; are expanded
- in the source and target as well as of SCons 1.1,
- so you can write:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct" printme="1">
- env.Command('${SOURCE.basename}.out', 'foo.in', build)
- </file>
- </scons_example>
-
-
- <para>
-
- which does the same thing as the previous example, but allows you
- to avoid repeating yourself.
-
- </para>
-
diff --git a/doc/user/builders-commands.xml b/doc/user/builders-commands.xml
index 0d3918d..5e179a4 100644
--- a/doc/user/builders-commands.xml
+++ b/doc/user/builders-commands.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-builders-commands"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Not Writing a Builder: the &Command; Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -69,10 +91,15 @@
</para>
- <programlisting>
- env = Environment()
- env.Command('foo.out', 'foo.in', "sed 's/x/y/' &lt; $SOURCE &gt; $TARGET")
- </programlisting>
+ <scons_example name="builderscommands_ex1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Command('foo.out', 'foo.in', "sed 's/x/y/' &lt; $SOURCE > $TARGET")
+ </file>
+ <file name="foo.in">
+foo.in
+ </file>
+ </scons_example>
<para>
@@ -83,10 +110,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- sed 's/x/y/' &lt; foo.in &gt; foo.out
- </screen>
+ <scons_output example="builderscommands_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -105,13 +131,18 @@
</para>
- <programlisting>
- env = Environment()
- def build(target, source, env):
- # Whatever it takes to build
- return None
- env.Command('foo.out', 'foo.in', build)
- </programlisting>
+ <scons_example name="builderscommands_ex2">
+ <file name="SConstruct" printme="1">
+env = Environment()
+def build(target, source, env):
+ # Whatever it takes to build
+ return None
+env.Command('foo.out', 'foo.in', build)
+ </file>
+ <file name="foo.in">
+foo.in
+ </file>
+ </scons_example>
<para>
@@ -119,10 +150,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- build(["foo.out"], ["foo.in"])
- </screen>
+ <scons_output example="builderscommands_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -132,9 +162,11 @@
</para>
- <programlisting>
- env.Command('${SOURCE.basename}.out', 'foo.in', build)
- </programlisting>
+ <scons_example name="builderscommands_ex3">
+ <file name="SConstruct" printme="1">
+env.Command('${SOURCE.basename}.out', 'foo.in', build)
+ </file>
+ </scons_example>
<para>
@@ -144,3 +176,5 @@
</para>
+
+</chapter>
diff --git a/doc/user/builders-writing.in b/doc/user/builders-writing.in
deleted file mode 100644
index 74d5473..0000000
--- a/doc/user/builders-writing.in
+++ /dev/null
@@ -1,1108 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head2 Adding new methods
-
-For slightly more demanding changes, you may wish to add new methods to the
-C<cons> package. Here's an example of a very simple extension,
-C<InstallScript>, which installs a tcl script in a requested location, but
-edits the script first to reflect a platform-dependent path that needs to be
-installed in the script:
-
- # cons::InstallScript - Create a platform dependent version of a shell
- # script by replacing string ``#!your-path-here'' with platform specific
- # path $BIN_DIR.
-
- sub cons::InstallScript {
- my ($env, $dst, $src) = @_;
- Command $env $dst, $src, qq(
- sed s+your-path-here+$BIN_DIR+ %< > %>
- chmod oug+x %>
- );
- }
-
-Notice that this method is defined directly in the C<cons> package (by
-prefixing the name with C<cons::>). A change made in this manner will be
-globally visible to all environments, and could be called as in the
-following example:
-
- InstallScript $env "$BIN/foo", "foo.tcl";
-
-For a small improvement in generality, the C<BINDIR> variable could be
-passed in as an argument or taken from the construction environment-,-as
-C<%BINDIR>.
-
-
-=head2 Overriding methods
-
-Instead of adding the method to the C<cons> name space, you could define a
-new package which inherits existing methods from the C<cons> package and
-overrides or adds others. This can be done using Perl's inheritance
-mechanisms.
-
-The following example defines a new package C<cons::switch> which
-overrides the standard C<Library> method. The overridden method builds
-linked library modules, rather than library archives. A new
-constructor is provided. Environments created with this constructor
-will have the new library method; others won't.
-
- package cons::switch;
- BEGIN {@ISA = 'cons'}
-
- sub new {
- shift;
- bless new cons(@_);
- }
-
- sub Library {
- my($env) = shift;
- my($lib) = shift;
- my(@objs) = Objects $env @_;
- Command $env $lib, @objs, q(
- %LD -r %LDFLAGS %< -o %>
- );
- }
-
-This functionality could be invoked as in the following example:
-
- $env = new cons::switch(@overrides);
- ...
- Library $env 'lib.o', 'foo.c', 'bar.c';
-
--->
-
- <para>
-
- Although &SCons; provides many useful methods
- for building common software products
- (programs, libraries, documents, etc.),
- you frequently want to be
- able to build some other type of file
- not supported directly by &SCons;.
- Fortunately, &SCons; makes it very easy
- to define your own &Builder; objects
- for any custom file types you want to build.
- (In fact, the &SCons; interfaces for creating
- &Builder; objects are flexible enough and easy enough to use
- that all of the the &SCons; built-in &Builder; objects
- are created using the mechanisms described in this section.)
-
- </para>
-
- <section>
- <title>Writing Builders That Execute External Commands</title>
-
- <para>
-
- The simplest &Builder; to create is
- one that executes an external command.
- For example, if we want to build
- an output file by running the contents
- of the input file through a command named
- <literal>foobuild</literal>,
- creating that &Builder; might look like:
-
- </para>
-
- <programlisting>
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- </programlisting>
-
- <para>
-
- All the above line does is create a free-standing
- &Builder; object.
- The next section will show us how to actually use it.
-
- </para>
-
- </section>
-
- <section>
- <title>Attaching a Builder to a &ConsEnv;</title>
-
- <para>
-
- A &Builder; object isn't useful
- until it's attached to a &consenv;
- so that we can call it to arrange
- for files to be built.
- This is done through the &cv-link-BUILDERS;
- &consvar; in an environment.
- The &cv-BUILDERS; variable is a Python dictionary
- that maps the names by which you want to call
- various &Builder; objects to the objects themselves.
- For example, if we want to call the
- &Builder; we just defined by the name
- <function>Foo</function>,
- our &SConstruct; file might look like:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct">
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env = Environment(BUILDERS = {'Foo' : bld})
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- env.Foo('file.foo', 'file.input')
- </file>
- <file name="file.input">
- file.input
- </file>
- <file name="foobuild" chmod="0755">
- cat
- </file>
- </scons_example>
-
- <sconstruct>
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env = Environment(BUILDERS = {'Foo' : bld})
- </sconstruct>
-
- <para>
-
- With the &Builder; attached to our &consenv;
- with the name <function>Foo</function>,
- we can now actually call it like so:
-
- </para>
-
- <programlisting>
- env.Foo('file.foo', 'file.input')
- </programlisting>
-
- <para>
-
- Then when we run &SCons; it looks like:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note, however, that the default &cv-BUILDERS;
- variable in a &consenv;
- comes with a default set of &Builder; objects
- already defined:
- &b-link-Program;, &b-link-Library;, etc.
- And when we explicitly set the &cv-BUILDERS; variable
- when we create the &consenv;,
- the default &Builder;s are no longer part of
- the environment:
-
- </para>
-
- <!--
- The ToolSurrogate stuff that's used to capture output initializes
- SCons.Defaults.ConstructionEnvironment with its own list of TOOLS.
- In this next example, we want to show the user that when they
- set the BUILDERS explicitly, the call to env.Program() generates
- an AttributeError. This won't happen with all of the default
- ToolSurrogates in the default construction environment. To make the
- AttributeError show up, we have to overwite the default construction
- environment's TOOLS variable so Program() builder doesn't show up.
-
- We do this by executing a slightly different SConstruct file than the
- one we print in the guide, with two extra statements at the front
- that overwrite the TOOLS variable as described. Note that we have
- to jam those statements on to the first line to keep the line number
- in the generated error consistent with what the user will see in the
- User's Guide.
- -->
- <scons_example name="ex2">
- <file name="SConstruct">
- import SCons.Defaults; SCons.Defaults.ConstructionEnvironment['TOOLS'] = {}; bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </file>
- <file name="SConstruct.printme" printme="1">
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </file>
- <file name="file.input">
- file.input
- </file>
- <file name="hello.c">
- hello.c
- </file>
- </scons_example>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- To be able to use both our own defined &Builder; objects
- and the default &Builder; objects in the same &consenv;,
- you can either add to the &cv-BUILDERS; variable
- using the &Append; function:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct">
- env = Environment()
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env.Append(BUILDERS = {'Foo' : bld})
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </file>
- <file name="file.input">
- file.input
- </file>
- <file name="hello.c">
- hello.c
- </file>
- <file name="foobuild" chmod="0755">
- cat
- </file>
- </scons_example>
-
- <sconstruct>
- env = Environment()
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env.Append(BUILDERS = {'Foo' : bld})
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </sconstruct>
-
- <para>
-
- Or you can explicitly set the appropriately-named
- key in the &cv-BUILDERS; dictionary:
-
- </para>
-
- <sconstruct>
- env = Environment()
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env['BUILDERS']['Foo'] = bld
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </sconstruct>
-
- <para>
-
- Either way, the same &consenv;
- can then use both the newly-defined
- <function>Foo</function> &Builder;
- and the default &b-link-Program; &Builder;:
-
- </para>
-
- <scons_output example="ex3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Letting &SCons; Handle The File Suffixes</title>
-
- <para>
-
- By supplying additional information
- when you create a &Builder;,
- you can let &SCons; add appropriate file
- suffixes to the target and/or the source file.
- For example, rather than having to specify
- explicitly that you want the <literal>Foo</literal>
- &Builder; to build the <literal>file.foo</literal>
- target file from the <literal>file.input</literal> source file,
- you can give the <literal>.foo</literal>
- and <literal>.input</literal> suffixes to the &Builder;,
- making for more compact and readable calls to
- the <literal>Foo</literal> &Builder;:
-
- </para>
-
- <scons_example name="ex4">
- <file name="SConstruct">
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- env.Foo('file1')
- env.Foo('file2')
- </file>
- <file name="file1.input">
- file1.input
- </file>
- <file name="file2.input">
- file2.input
- </file>
- <file name="foobuild" chmod="0755">
- cat
- </file>
- </scons_example>
-
- <sconstruct>
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file1')
- env.Foo('file2')
- </sconstruct>
-
- <scons_output example="ex4">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- You can also supply a <literal>prefix</literal> keyword argument
- if it's appropriate to have &SCons; append a prefix
- to the beginning of target file names.
-
- </para>
-
- </section>
-
- <section>
- <title>Builders That Execute Python Functions</title>
-
- <para>
-
- In &SCons;, you don't have to call an external command
- to build a file.
- You can, instead, define a Python function
- that a &Builder; object can invoke
- to build your target file (or files).
- Such a &buildfunc; definition looks like:
-
- </para>
-
- <programlisting>
- def build_function(target, source, env):
- # Code to build "target" from "source"
- return None
- </programlisting>
-
- <para>
-
- The arguments of a &buildfunc; are:
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>target</term>
-
- <listitem>
- <para>
-
- A list of Node objects representing
- the target or targets to be
- built by this builder function.
- The file names of these target(s)
- may be extracted using the Python &str; function.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>source</term>
-
- <listitem>
- <para>
-
- A list of Node objects representing
- the sources to be
- used by this builder function to build the targets.
- The file names of these source(s)
- may be extracted using the Python &str; function.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>env</term>
-
- <listitem>
- <para>
-
- The &consenv; used for building the target(s).
- The builder function may use any of the
- environment's construction variables
- in any way to affect how it builds the targets.
-
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- <para>
-
- The builder function must
- return a <literal>0</literal> or <literal>None</literal> value
- if the target(s) are built successfully.
- The builder function
- may raise an exception
- or return any non-zero value
- to indicate that the build is unsuccessful,
-
- </para>
-
- <para>
-
- Once you've defined the Python function
- that will build your target file,
- defining a &Builder; object for it is as
- simple as specifying the name of the function,
- instead of an external command,
- as the &Builder;'s
- <literal>action</literal>
- argument:
-
- </para>
-
- <scons_example name="ex5">
- <file name="SConstruct" printme="1">
- def build_function(target, source, env):
- # Code to build "target" from "source"
- return None
- bld = Builder(action = build_function,
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file')
- </file>
- <file name="file.input">
- file.input
- </file>
- </scons_example>
-
- <para>
-
- And notice that the output changes slightly,
- reflecting the fact that a Python function,
- not an external command,
- is now called to build the target file:
-
- </para>
-
- <scons_output example="ex5">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Builders That Create Actions Using a &Generator;</title>
-
- <para>
-
- &SCons; Builder objects can create an action "on the fly"
- by using a function called a &generator;.
- This provides a great deal of flexibility to
- construct just the right list of commands
- to build your target.
- A &generator; looks like:
-
- </para>
-
- <programlisting>
- def generate_actions(source, target, env, for_signature):
- return 'foobuild &lt; %s &gt; %s' % (target[0], source[0])
- </programlisting>
-
- <para>
-
- The arguments of a &generator; are:
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>source</term>
-
- <listitem>
- <para>
-
- A list of Node objects representing
- the sources to be built
- by the command or other action
- generated by this function.
- The file names of these source(s)
- may be extracted using the Python &str; function.
-
- </para>
- </listitem>
-
- </varlistentry>
-
- <varlistentry>
- <term>target</term>
-
- <listitem>
- <para>
-
- A list of Node objects representing
- the target or targets to be built
- by the command or other action
- generated by this function.
- The file names of these target(s)
- may be extracted using the Python &str; function.
-
- </para>
- </listitem>
-
- </varlistentry>
-
- <varlistentry>
- <term>env</term>
-
- <listitem>
- <para>
-
- The &consenv; used for building the target(s).
- The generator may use any of the
- environment's construction variables
- in any way to determine what command
- or other action to return.
-
- </para>
- </listitem>
-
- </varlistentry>
-
- <varlistentry>
- <term>for_signature</term>
-
- <listitem>
- <para>
-
- A flag that specifies whether the
- generator is being called to contribute to a build signature,
- as opposed to actually executing the command.
-
- <!-- XXX NEED MORE HERE, describe generators use in signatures -->
-
- </para>
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- <para>
-
- The &generator; must return a
- command string or other action that will be used to
- build the specified target(s) from the specified source(s).
-
- </para>
-
- <para>
-
- Once you've defined a &generator;,
- you create a &Builder; to use it
- by specifying the generator keyword argument
- instead of <literal>action</literal>.
-
- </para>
-
- <scons_example name="ex6">
- <file name="SConstruct">
- def generate_actions(source, target, env, for_signature):
- return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
- bld = Builder(generator = generate_actions,
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- env.Foo('file')
- </file>
- <file name="file.input">
- file.input
- </file>
- <file name="foobuild" chmod="0755">
- cat
- </file>
- </scons_example>
-
- <sconstruct>
- def generate_actions(source, target, env, for_signature):
- return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
- bld = Builder(generator = generate_actions,
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file')
- </sconstruct>
-
- <scons_output example="ex6">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that it's illegal to specify both an
- <literal>action</literal>
- and a
- <literal>generator</literal>
- for a &Builder;.
-
- </para>
-
- </section>
-
- <section>
- <title>Builders That Modify the Target or Source Lists Using an &Emitter;</title>
-
- <para>
-
- &SCons; supports the ability for a Builder to modify the
- lists of target(s) from the specified source(s).
- You do this by defining an &emitter; function
- that takes as its arguments
- the list of the targets passed to the builder,
- the list of the sources passed to the builder,
- and the construction environment.
- The emitter function should return the modified
- lists of targets that should be built
- and sources from which the targets will be built.
-
- </para>
-
- <para>
-
- For example, suppose you want to define a Builder
- that always calls a <filename>foobuild</filename> program,
- and you want to automatically add
- a new target file named
- <filename>new_target</filename>
- and a new source file named
- <filename>new_source</filename>
- whenever it's called.
- The &SConstruct; file might look like this:
-
- </para>
-
- <scons_example name="ex7">
- <file name="SConstruct">
- def modify_targets(target, source, env):
- target.append('new_target')
- source.append('new_source')
- return target, source
- bld = Builder(action = 'foobuild $TARGETS - $SOURCES',
- suffix = '.foo',
- src_suffix = '.input',
- emitter = modify_targets)
- env = Environment(BUILDERS = {'Foo' : bld})
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- env.Foo('file')
- </file>
- <file name="file.input">
- file.input
- </file>
- <file name="new_source">
- new_source
- </file>
- <file name="foobuild" chmod="0755">
- cat
- </file>
- </scons_example>
-
- <sconstruct>
- def modify_targets(target, source, env):
- target.append('new_target')
- source.append('new_source')
- return target, source
- bld = Builder(action = 'foobuild $TARGETS - $SOURCES',
- suffix = '.foo',
- src_suffix = '.input',
- emitter = modify_targets)
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file')
- </sconstruct>
-
- <para>
-
- And would yield the following output:
-
- </para>
-
- <scons_output example="ex7">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- One very flexible thing that you can do is
- use a construction variable to specify
- different emitter functions for different
- construction variable.
- To do this, specify a string
- containing a construction variable
- expansion as the emitter when you call
- the &Builder; function,
- and set that construction variable to
- the desired emitter function
- in different construction environments:
-
- </para>
-
- <scons_example name="MY_EMITTER">
-
- <file name="SConstruct" printme="1">
- bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
- suffix = '.foo',
- src_suffix = '.input',
- emitter = '$MY_EMITTER')
- def modify1(target, source, env):
- return target, source + ['modify1.in']
- def modify2(target, source, env):
- return target, source + ['modify2.in']
- env1 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify1)
- env2 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify2)
- env1.Foo('file1')
- env2.Foo('file2')
- import os
- env1['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
- env2['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
- </file>
- <file name="file1.input">
- file1.input
- </file>
- <file name="file2.input">
- file2.input
- </file>
- <file name="modify1.in">
- modify1.input
- </file>
- <file name="modify2.in">
- modify2.input
- </file>
- <file name="my_command" chmod="0755">
- cat
- </file>
-
- </scons_example>
-
- <sconstruct>
- bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
- suffix = '.foo',
- src_suffix = '.input',
- emitter = '$MY_EMITTER')
- def modify1(target, source, env):
- return target, source + ['modify1.in']
- def modify2(target, source, env):
- return target, source + ['modify2.in']
- env1 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify1)
- env2 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify2)
- env1.Foo('file1')
- env2.Foo('file2')
- </sconstruct>
-
- <para>
-
- In this example, the <filename>modify1.in</filename>
- and <filename>modify2.in</filename> files
- get added to the source lists
- of the different commands:
-
- </para>
-
- <scons_output example="MY_EMITTER">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <!--
-
- <section>
- <title>target_factor=, source_factory=</title>
-
- </section>
-
- <section>
- <title>target_scanner=, source_scanner=</title>
-
- </section>
-
- <section>
- <title>multi=</title>
-
- </section>
-
- <section>
- <title>single_source=</title>
-
- </section>
-
- <section>
- <title>src_builder=</title>
-
- </section>
-
- <section>
- <title>ensure_suffix=</title>
-
- </section>
-
- -->
-
- <section>
- <title>Where To Put Your Custom Builders and Tools</title>
-
- <para>
-
- The <filename>site_scons</filename> directories give you a place to
- put Python modules and packages that you can import into your &SConscript; files
- (<filename>site_scons</filename>),
- add-on tools that can integrate into &SCons;
- (<filename>site_scons/site_tools</filename>),
- and a <filename>site_scons/site_init.py</filename> file that
- gets read before any &SConstruct; or &SConscript; file,
- allowing you to change &SCons;'s default behavior.
-
- </para>
-
- <para>
-
- Each system type (Windows, Mac, Linux, etc.) searches a canonical
- set of directories for site_scons; see the man page for details.
- The top-level SConstruct's site_scons dir is always searched last,
- and its dir is placed first in the tool path so it overrides all
- others.
-
- </para>
-
- <para>
-
- If you get a tool from somewhere (the &SCons; wiki or a third party,
- for instance) and you'd like to use it in your project, a
- <filename>site_scons</filename> dir is the simplest place to put it.
- Tools come in two flavors; either a Python function that operates on
- an &Environment; or a Python module or package containing two functions,
- <function>exists()</function> and <function>generate()</function>.
-
- </para>
-
- <para>
-
- A single-function Tool can just be included in your
- <filename>site_scons/site_init.py</filename> file where it will be
- parsed and made available for use. For instance, you could have a
- <filename>site_scons/site_init.py</filename> file like this:
-
- </para>
-
- <scons_example name="site1">
- <file name="site_scons/site_init.py" printme="1">
- def TOOL_ADD_HEADER(env):
- """A Tool to add a header from $HEADER to the source file"""
- add_header = Builder(action=['echo "$HEADER" &gt; $TARGET',
- 'cat $SOURCE &gt;&gt; $TARGET'])
- env.Append(BUILDERS = {'AddHeader' : add_header})
- env['HEADER'] = '' # set default value
- </file>
- <file name="SConstruct">
- env=Environment(tools=['default', TOOL_ADD_HEADER], HEADER="=====")
- env.AddHeader('tgt', 'src')
- </file>
- <file name="src">
- hi there
- </file>
- </scons_example>
-
- <para>
-
- and a &SConstruct; like this:
-
- </para>
-
- <sconstruct>
- # Use TOOL_ADD_HEADER from site_scons/site_init.py
- env=Environment(tools=['default', TOOL_ADD_HEADER], HEADER="=====")
- env.AddHeader('tgt', 'src')
- </sconstruct>
-
- <para>
-
- The <function>TOOL_ADD_HEADER</function> tool method will be
- called to add the <function>AddHeader</function> tool to the
- environment.
-
- </para>
-
- <!--
- <scons_output example="site1" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
- -->
-
- <para>
- A more full-fledged tool with
- <function>exists()</function> and <function>generate()</function>
- methods can be installed either as a module in the file
- <filename>site_scons/site_tools/toolname.py</filename> or as a
- package in the
- directory <filename>site_scons/site_tools/toolname</filename>. In
- the case of using a package, the <function>exists()</function>
- and <function>generate()</function> are in the
- file <filename>site_scons/site_tools/toolname/__init__.py</filename>.
- (In all the above case <filename>toolname</filename> is replaced
- by the name of the tool.)
- Since <filename>site_scons/site_tools</filename> is automatically
- added to the head of the tool search path, any tool found there
- will be available to all environments. Furthermore, a tool found
- there will override a built-in tool of the same name, so if you
- need to change the behavior of a built-in
- tool, <filename>site_scons</filename> gives you the hook you need.
- </para>
-
- <para>
- Many people have a library of utility Python functions they'd like
- to include in &SConscript;s; just put that module in
- <filename>site_scons/my_utils.py</filename> or any valid Python module name of your
- choice. For instance you can do something like this in
- <filename>site_scons/my_utils.py</filename> to add
- <function>build_id</function> and <function>MakeWorkDir</function>
- functions:
- </para>
-
- <scons_example name="site2">
- <file name="site_scons/my_utils.py" printme="1">
- from SCons.Script import * # for Execute and Mkdir
- def build_id():
- """Return a build ID (stub version)"""
- return "100"
- def MakeWorkDir(workdir):
- """Create the specified dir immediately"""
- Execute(Mkdir(workdir))
- </file>
- <file name="SConscript">
- import my_utils
- MakeWorkDir('/tmp/work')
- print "build_id=" + my_utils.build_id()
- </file>
- </scons_example>
-
- <para>
-
- And then in your &SConscript; or any sub-&SConscript; anywhere in
- your build, you can import <filename>my_utils</filename> and use it:
-
- </para>
-
- <sconstruct>
- import my_utils
- print "build_id=" + my_utils.build_id()
- my_utils.MakeWorkDir('/tmp/work')
- </sconstruct>
-
- <para>
- Note that although you can put this library in
- <filename>site_scons/site_init.py</filename>,
- it is no better there than <filename>site_scons/my_utils.py</filename>
- since you still have to import that module into your &SConscript;.
- Also note that in order to refer to objects in the SCons namespace
- such as &Environment; or &Mkdir; or &Execute; in any file other
- than a &SConstruct; or &SConscript; you always need to do
- </para>
- <sconstruct>
- from SCons.Script import *
- </sconstruct>
-
- <para>
- This is true in modules in <filename>site_scons</filename> such as
- <filename>site_scons/site_init.py</filename> as well.
- </para>
-
- <para>
-
- You can use any of the user- or machine-wide site dirs such as
- <filename>~/.scons/site_scons</filename> instead of
- <filename>./site_scons</filename>, or use the
- <literal>--site-dir</literal> option to point to your own dir.
- <filename>site_init.py</filename> and
- <filename>site_tools</filename> will be located under that dir.
- To avoid using a <filename>site_scons</filename> dir at all,
- even if it exists, use the <literal>--no-site-dir</literal>
- option.
-
- </para>
-
- </section>
-
-
- <!--
-
- <section>
- <title>Builders That Use Other Builders</title>
-
- <para>
-
- XXX para
-
- </para>
-
- <scons_example name="ex8">
- <file name="SConstruct" printme="1">
- env = Environment()
- #env.SourceCode('.', env.BitKeeper('my_command'))
- env.Program('hello.c')
- </file>
- <file name="hello.c">
- hello.c
- </file>
- </scons_example>
-
- <scons_output example="ex8">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- -->
diff --git a/doc/user/builders-writing.xml b/doc/user/builders-writing.xml
index e6b165b..bc7983d 100644
--- a/doc/user/builders-writing.xml
+++ b/doc/user/builders-writing.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-builders-writing"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Writing Your Own Builders</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -129,7 +151,7 @@ This functionality could be invoked as in the following example:
</para>
<programlisting>
- bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
</programlisting>
<para>
@@ -163,12 +185,26 @@ This functionality could be invoked as in the following example:
</para>
-
+ <scons_example name="builderswriting_ex1">
+ <file name="SConstruct">
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
+env = Environment(BUILDERS = {'Foo' : bld})
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+env.Foo('file.foo', 'file.input')
+ </file>
+ <file name="file.input">
+file.input
+ </file>
+ <file name="foobuild" chmod="0755">
+cat
+ </file>
+ </scons_example>
- <programlisting>
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env = Environment(BUILDERS = {'Foo' : bld})
- </programlisting>
+ <sconstruct>
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
+env = Environment(BUILDERS = {'Foo' : bld})
+ </sconstruct>
<para>
@@ -179,7 +215,7 @@ This functionality could be invoked as in the following example:
</para>
<programlisting>
- env.Foo('file.foo', 'file.input')
+env.Foo('file.foo', 'file.input')
</programlisting>
<para>
@@ -188,10 +224,9 @@ This functionality could be invoked as in the following example:
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- foobuild &lt; file.input &gt; file.foo
- </screen>
+ <scons_output example="builderswriting_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -224,19 +259,30 @@ This functionality could be invoked as in the following example:
in the generated error consistent with what the user will see in the
User's Guide.
-->
- <programlisting>
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </programlisting>
+ <scons_example name="builderswriting_ex2">
+ <file name="SConstruct">
+import SCons.Defaults; SCons.Defaults.ConstructionEnvironment['TOOLS'] = {}; bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
+env = Environment(BUILDERS = {'Foo' : bld})
+env.Foo('file.foo', 'file.input')
+env.Program('hello.c')
+ </file>
+ <file name="SConstruct.printme" printme="1">
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
+env = Environment(BUILDERS = {'Foo' : bld})
+env.Foo('file.foo', 'file.input')
+env.Program('hello.c')
+ </file>
+ <file name="file.input">
+file.input
+ </file>
+ <file name="hello.c">
+hello.c
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- AttributeError: 'SConsEnvironment' object has no attribute 'Program':
- File "/home/my/project/SConstruct", line 4:
- env.Program('hello.c')
- </screen>
+ <scons_output example="builderswriting_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -247,15 +293,34 @@ This functionality could be invoked as in the following example:
</para>
-
+ <scons_example name="builderswriting_ex3">
+ <file name="SConstruct">
+env = Environment()
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
+env.Append(BUILDERS = {'Foo' : bld})
+env.Foo('file.foo', 'file.input')
+env.Program('hello.c')
+ </file>
+ <file name="file.input">
+file.input
+ </file>
+ <file name="hello.c">
+hello.c
+ </file>
+ <file name="foobuild" chmod="0755">
+cat
+ </file>
+ </scons_example>
- <programlisting>
- env = Environment()
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env.Append(BUILDERS = {'Foo' : bld})
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </programlisting>
+ <sconstruct>
+env = Environment()
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
+env.Append(BUILDERS = {'Foo' : bld})
+env.Foo('file.foo', 'file.input')
+env.Program('hello.c')
+ </sconstruct>
<para>
@@ -264,13 +329,13 @@ This functionality could be invoked as in the following example:
</para>
- <programlisting>
- env = Environment()
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
- env['BUILDERS']['Foo'] = bld
- env.Foo('file.foo', 'file.input')
- env.Program('hello.c')
- </programlisting>
+ <sconstruct>
+env = Environment()
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
+env['BUILDERS']['Foo'] = bld
+env.Foo('file.foo', 'file.input')
+env.Program('hello.c')
+ </sconstruct>
<para>
@@ -281,12 +346,9 @@ This functionality could be invoked as in the following example:
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- foobuild &lt; file.input &gt; file.foo
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="builderswriting_ex3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -310,22 +372,40 @@ This functionality could be invoked as in the following example:
</para>
-
+ <scons_example name="builderswriting_ex4">
+ <file name="SConstruct">
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
+ suffix = '.foo',
+ src_suffix = '.input')
+env = Environment(BUILDERS = {'Foo' : bld})
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+env.Foo('file1')
+env.Foo('file2')
+ </file>
+ <file name="file1.input">
+file1.input
+ </file>
+ <file name="file2.input">
+file2.input
+ </file>
+ <file name="foobuild" chmod="0755">
+cat
+ </file>
+ </scons_example>
- <programlisting>
- bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file1')
- env.Foo('file2')
- </programlisting>
+ <sconstruct>
+bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET',
+ suffix = '.foo',
+ src_suffix = '.input')
+env = Environment(BUILDERS = {'Foo' : bld})
+env.Foo('file1')
+env.Foo('file2')
+ </sconstruct>
- <screen>
- % <userinput>scons -Q</userinput>
- foobuild &lt; file1.input &gt; file1.foo
- foobuild &lt; file2.input &gt; file2.foo
- </screen>
+ <scons_output example="builderswriting_ex4" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -352,9 +432,9 @@ This functionality could be invoked as in the following example:
</para>
<programlisting>
- def build_function(target, source, env):
- # Code to build "target" from "source"
- return None
+def build_function(target, source, env):
+ # Code to build "target" from "source"
+ return None
</programlisting>
<para>
@@ -439,16 +519,21 @@ This functionality could be invoked as in the following example:
</para>
- <programlisting>
- def build_function(target, source, env):
- # Code to build "target" from "source"
- return None
- bld = Builder(action = build_function,
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file')
- </programlisting>
+ <scons_example name="builderswriting_ex5">
+ <file name="SConstruct" printme="1">
+def build_function(target, source, env):
+ # Code to build "target" from "source"
+ return None
+bld = Builder(action = build_function,
+ suffix = '.foo',
+ src_suffix = '.input')
+env = Environment(BUILDERS = {'Foo' : bld})
+env.Foo('file')
+ </file>
+ <file name="file.input">
+file.input
+ </file>
+ </scons_example>
<para>
@@ -459,10 +544,9 @@ This functionality could be invoked as in the following example:
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- build_function(["file.foo"], ["file.input"])
- </screen>
+ <scons_output example="builderswriting_ex5" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -481,8 +565,8 @@ This functionality could be invoked as in the following example:
</para>
<programlisting>
- def generate_actions(source, target, env, for_signature):
- return 'foobuild < %s > %s' % (target[0], source[0])
+def generate_actions(source, target, env, for_signature):
+ return 'foobuild &lt; %s &gt; %s' % (target[0], source[0])
</programlisting>
<para>
@@ -582,22 +666,39 @@ This functionality could be invoked as in the following example:
</para>
-
-
- <programlisting>
- def generate_actions(source, target, env, for_signature):
- return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
- bld = Builder(generator = generate_actions,
- suffix = '.foo',
- src_suffix = '.input')
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file')
- </programlisting>
+ <scons_example name="builderswriting_ex6">
+ <file name="SConstruct">
+def generate_actions(source, target, env, for_signature):
+ return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
+bld = Builder(generator = generate_actions,
+ suffix = '.foo',
+ src_suffix = '.input')
+env = Environment(BUILDERS = {'Foo' : bld})
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+env.Foo('file')
+ </file>
+ <file name="file.input">
+file.input
+ </file>
+ <file name="foobuild" chmod="0755">
+cat
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- foobuild &lt; file.input &gt; file.foo
- </screen>
+ <sconstruct>
+def generate_actions(source, target, env, for_signature):
+ return 'foobuild &lt; %s &gt; %s' % (source[0], target[0])
+bld = Builder(generator = generate_actions,
+ suffix = '.foo',
+ src_suffix = '.input')
+env = Environment(BUILDERS = {'Foo' : bld})
+env.Foo('file')
+ </sconstruct>
+
+ <scons_output example="builderswriting_ex6" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -643,20 +744,44 @@ This functionality could be invoked as in the following example:
</para>
-
+ <scons_example name="builderswriting_ex7">
+ <file name="SConstruct">
+def modify_targets(target, source, env):
+ target.append('new_target')
+ source.append('new_source')
+ return target, source
+bld = Builder(action = 'foobuild $TARGETS - $SOURCES',
+ suffix = '.foo',
+ src_suffix = '.input',
+ emitter = modify_targets)
+env = Environment(BUILDERS = {'Foo' : bld})
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+env.Foo('file')
+ </file>
+ <file name="file.input">
+file.input
+ </file>
+ <file name="new_source">
+new_source
+ </file>
+ <file name="foobuild" chmod="0755">
+cat
+ </file>
+ </scons_example>
- <programlisting>
- def modify_targets(target, source, env):
- target.append('new_target')
- source.append('new_source')
- return target, source
- bld = Builder(action = 'foobuild $TARGETS - $SOURCES',
- suffix = '.foo',
- src_suffix = '.input',
- emitter = modify_targets)
- env = Environment(BUILDERS = {'Foo' : bld})
- env.Foo('file')
- </programlisting>
+ <sconstruct>
+def modify_targets(target, source, env):
+ target.append('new_target')
+ source.append('new_source')
+ return target, source
+bld = Builder(action = 'foobuild $TARGETS - $SOURCES',
+ suffix = '.foo',
+ src_suffix = '.input',
+ emitter = modify_targets)
+env = Environment(BUILDERS = {'Foo' : bld})
+env.Foo('file')
+ </sconstruct>
<para>
@@ -664,10 +789,9 @@ This functionality could be invoked as in the following example:
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- foobuild file.foo new_target - file.input new_source
- </screen>
+ <scons_output example="builderswriting_ex7" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -685,43 +809,61 @@ This functionality could be invoked as in the following example:
</para>
- <programlisting>
- bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
- suffix = '.foo',
- src_suffix = '.input',
- emitter = '$MY_EMITTER')
- def modify1(target, source, env):
- return target, source + ['modify1.in']
- def modify2(target, source, env):
- return target, source + ['modify2.in']
- env1 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify1)
- env2 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify2)
- env1.Foo('file1')
- env2.Foo('file2')
- import os
- env1['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
- env2['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
+ <scons_example name="builderswriting_MY_EMITTER">
+
+ <file name="SConstruct" printme="1">
+bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
+ suffix = '.foo',
+ src_suffix = '.input',
+ emitter = '$MY_EMITTER')
+def modify1(target, source, env):
+ return target, source + ['modify1.in']
+def modify2(target, source, env):
+ return target, source + ['modify2.in']
+env1 = Environment(BUILDERS = {'Foo' : bld},
+ MY_EMITTER = modify1)
+env2 = Environment(BUILDERS = {'Foo' : bld},
+ MY_EMITTER = modify2)
+env1.Foo('file1')
+env2.Foo('file2')
+import os
+env1['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
+env2['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
+ </file>
+ <file name="file1.input">
+file1.input
+ </file>
+ <file name="file2.input">
+file2.input
+ </file>
+ <file name="modify1.in">
+modify1.input
+ </file>
+ <file name="modify2.in">
+modify2.input
+ </file>
+ <file name="my_command" chmod="0755">
+cat
+ </file>
- </programlisting>
+ </scons_example>
- <programlisting>
- bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
- suffix = '.foo',
- src_suffix = '.input',
- emitter = '$MY_EMITTER')
- def modify1(target, source, env):
- return target, source + ['modify1.in']
- def modify2(target, source, env):
- return target, source + ['modify2.in']
- env1 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify1)
- env2 = Environment(BUILDERS = {'Foo' : bld},
- MY_EMITTER = modify2)
- env1.Foo('file1')
- env2.Foo('file2')
- </programlisting>
+ <sconstruct>
+bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
+ suffix = '.foo',
+ src_suffix = '.input',
+ emitter = '$MY_EMITTER')
+def modify1(target, source, env):
+ return target, source + ['modify1.in']
+def modify2(target, source, env):
+ return target, source + ['modify2.in']
+env1 = Environment(BUILDERS = {'Foo' : bld},
+ MY_EMITTER = modify1)
+env2 = Environment(BUILDERS = {'Foo' : bld},
+ MY_EMITTER = modify2)
+env1.Foo('file1')
+env2.Foo('file2')
+ </sconstruct>
<para>
@@ -732,11 +874,9 @@ This functionality could be invoked as in the following example:
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- my_command file1.input modify1.in &gt; file1.foo
- my_command file2.input modify2.in &gt; file2.foo
- </screen>
+ <scons_output example="builderswriting_MY_EMITTER" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -820,14 +960,23 @@ This functionality could be invoked as in the following example:
</para>
- <programlisting>
- def TOOL_ADD_HEADER(env):
- """A Tool to add a header from $HEADER to the source file"""
- add_header = Builder(action=['echo "$HEADER" &gt; $TARGET',
- 'cat $SOURCE &gt;&gt; $TARGET'])
- env.Append(BUILDERS = {'AddHeader' : add_header})
- env['HEADER'] = '' # set default value
- </programlisting>
+ <scons_example name="builderswriting_site1">
+ <file name="site_scons/site_init.py" printme="1">
+def TOOL_ADD_HEADER(env):
+ """A Tool to add a header from $HEADER to the source file"""
+ add_header = Builder(action=['echo "$HEADER" &gt; $TARGET',
+ 'cat $SOURCE &gt;&gt; $TARGET'])
+ env.Append(BUILDERS = {'AddHeader' : add_header})
+ env['HEADER'] = '' # set default value
+ </file>
+ <file name="SConstruct">
+env=Environment(tools=['default', TOOL_ADD_HEADER], HEADER="=====")
+env.AddHeader('tgt', 'src')
+ </file>
+ <file name="src">
+hi there
+ </file>
+ </scons_example>
<para>
@@ -835,11 +984,11 @@ This functionality could be invoked as in the following example:
</para>
- <programlisting>
- # Use TOOL_ADD_HEADER from site_scons/site_init.py
- env=Environment(tools=['default', TOOL_ADD_HEADER], HEADER="=====")
- env.AddHeader('tgt', 'src')
- </programlisting>
+ <sconstruct>
+# Use TOOL_ADD_HEADER from site_scons/site_init.py
+env=Environment(tools=['default', TOOL_ADD_HEADER], HEADER="=====")
+env.AddHeader('tgt', 'src')
+ </sconstruct>
<para>
@@ -850,7 +999,7 @@ This functionality could be invoked as in the following example:
</para>
<!--
- <scons_output example="site1" os="posix">
+ <scons_output example="builderswriting_site1" os="posix" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
@@ -885,15 +1034,22 @@ This functionality could be invoked as in the following example:
functions:
</para>
- <programlisting>
- from SCons.Script import * # for Execute and Mkdir
- def build_id():
- """Return a build ID (stub version)"""
- return "100"
- def MakeWorkDir(workdir):
- """Create the specified dir immediately"""
- Execute(Mkdir(workdir))
- </programlisting>
+ <scons_example name="builderswriting_site2">
+ <file name="site_scons/my_utils.py" printme="1">
+from SCons.Script import * # for Execute and Mkdir
+def build_id():
+ """Return a build ID (stub version)"""
+ return "100"
+def MakeWorkDir(workdir):
+ """Create the specified dir immediately"""
+ Execute(Mkdir(workdir))
+ </file>
+ <file name="SConscript">
+import my_utils
+MakeWorkDir('/tmp/work')
+print "build_id=" + my_utils.build_id()
+ </file>
+ </scons_example>
<para>
@@ -902,11 +1058,11 @@ This functionality could be invoked as in the following example:
</para>
- <programlisting>
- import my_utils
- print "build_id=" + my_utils.build_id()
- my_utils.MakeWorkDir('/tmp/work')
- </programlisting>
+ <sconstruct>
+import my_utils
+print "build_id=" + my_utils.build_id()
+my_utils.MakeWorkDir('/tmp/work')
+ </sconstruct>
<para>
Note that although you can put this library in
@@ -917,9 +1073,9 @@ This functionality could be invoked as in the following example:
such as &Environment; or &Mkdir; or &Execute; in any file other
than a &SConstruct; or &SConscript; you always need to do
</para>
- <programlisting>
- from SCons.Script import *
- </programlisting>
+ <sconstruct>
+from SCons.Script import *
+ </sconstruct>
<para>
This is true in modules in <filename>site_scons</filename> such as
@@ -954,21 +1110,23 @@ This functionality could be invoked as in the following example:
</para>
- <scons_example name="ex8">
+ <scons_example name="builderswriting_ex8">
<file name="SConstruct" printme="1">
- env = Environment()
- #env.SourceCode('.', env.BitKeeper('my_command'))
- env.Program('hello.c')
+env = Environment()
+#env.SourceCode('.', env.BitKeeper('my_command'))
+env.Program('hello.c')
</file>
<file name="hello.c">
- hello.c
+hello.c
</file>
</scons_example>
- <scons_output example="ex8">
+ <scons_output example="builderswriting_ex8" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
</section>
-->
+
+</chapter>
diff --git a/doc/user/builders.xml b/doc/user/builders.xml
index 0db5641..c1ac032 100644
--- a/doc/user/builders.xml
+++ b/doc/user/builders.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<appendix id="app-builders"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Builders</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -23,25 +44,6 @@
-->
-<!--
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<refentry id="Command">
-
-<refmeta>
-<refentrytitle>Command</refentrytitle>
-</refmeta>
-
-<methodsynopsis>
- <methodname>env.Command</methodname>
- <methodparam>foo</methodparam>
- <methodparam>bar</methodparam>
-</methodsynopsis>
-
-</refentry>
--->
-
<para>
This appendix contains descriptions of all of the
@@ -50,8 +52,6 @@ available "out of the box" in this version of SCons.
</para>
-<variablelist>
-
-&builders-gen;
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../generated/builders.gen"/>
-</variablelist>
+</appendix>
diff --git a/doc/user/caching.in b/doc/user/caching.in
deleted file mode 100644
index 8611962..0000000
--- a/doc/user/caching.in
+++ /dev/null
@@ -1,502 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- On multi-developer software projects,
- you can sometimes speed up every developer's builds a lot by
- allowing them to share the derived files that they build.
- &SCons; makes this easy, as well as reliable.
-
- </para>
-
- <section>
- <title>Specifying the Shared Cache Directory</title>
-
- <para>
-
- To enable sharing of derived files,
- use the &CacheDir; function
- in any &SConscript; file:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct">
- env = Environment()
- env.Program('hello.c')
- CacheDir('cache')
- </file>
- <file name="hello.c">
- hello.c
- </file>
- <directory name="cache">
- </directory>
- <file name="not_used" printme="1">
- CacheDir('/usr/local/build_cache')
- </file>
- </scons_example>
-
- <para>
-
- Note that the directory you specify must already exist
- and be readable and writable by all developers
- who will be sharing derived files.
- It should also be in some central location
- that all builds will be able to access.
- In environments where developers are using separate systems
- (like individual workstations) for builds,
- this directory would typically be
- on a shared or NFS-mounted file system.
-
- </para>
-
- <para>
-
- Here's what happens:
- When a build has a &CacheDir; specified,
- every time a file is built,
- it is stored in the shared cache directory
- along with its MD5 build signature.
- <footnote>
- <para>
- Actually, the MD5 signature is used as the name of the file
- in the shared cache directory in which the contents are stored.
- </para>
- </footnote>
- On subsequent builds,
- before an action is invoked to build a file,
- &SCons; will check the shared cache directory
- to see if a file with the exact same build
- signature already exists.
- If so, the derived file will not be built locally,
- but will be copied into the local build directory
- from the shared cache directory,
- like so:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that the &CacheDir; feature still calculates
- MD5 build sigantures for the shared cache file names
- even if you configure &SCons; to use timestamps
- to decide if files are up to date.
- (See the <xref linkend="chap-depends"></xref>
- chapter for information about the &Decider; function.)
- Consequently, using &CacheDir; may reduce or eliminate any
- potential performance improvements
- from using timestamps for up-to-date decisions.
-
- </para>
-
- </section>
-
- <section>
- <title>Keeping Build Output Consistent</title>
-
- <para>
-
- One potential drawback to using a shared cache
- is that the output printed by &SCons;
- can be inconsistent from invocation to invocation,
- because any given file may be rebuilt one time
- and retrieved from the shared cache the next time.
- This can make analyzing build output more difficult,
- especially for automated scripts that
- expect consistent output each time.
-
- </para>
-
- <para>
-
- If, however, you use the <literal>--cache-show</literal> option,
- &SCons; will print the command line that it
- <emphasis>would</emphasis> have executed
- to build the file,
- even when it is retrieving the file from the shared cache.
- This makes the build output consistent
- every time the build is run:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- <scons_output_command>scons -Q --cache-show</scons_output_command>
- </scons_output>
-
- <para>
-
- The trade-off, of course, is that you no longer
- know whether or not &SCons;
- has retrieved a derived file from cache
- or has rebuilt it locally.
-
- </para>
-
- </section>
-
- <section>
- <title>Not Using the Shared Cache for Specific Files</title>
-
- <para>
-
- You may want to disable caching for certain
- specific files in your configuration.
- For example, if you only want to put
- executable files in a central cache,
- but not the intermediate object files,
- you can use the &NoCache;
- function to specify that the
- object files should not be cached:
-
- </para>
-
- <scons_example name="ex-NoCache">
- <file name="SConstruct" printme="1">
- env = Environment()
- obj = env.Object('hello.c')
- env.Program('hello.c')
- CacheDir('cache')
- NoCache('hello.o')
- </file>
- <file name="hello.c">
- hello.c
- </file>
- <directory name="cache">
- </directory>
- </scons_example>
-
- <para>
-
- Then when you run &scons; after cleaning
- the built targets,
- it will recompile the object file locally
- (since it doesn't exist in the shared cache directory),
- but still realize that the shared cache directory
- contains an up-to-date executable program
- that can be retrieved instead of re-linking:
-
- </para>
-
- <!--
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q -c</userinput>
- Removed hello.o
- Removed hello
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- Retrieved `hello' from cache
- </screen>
-
- </section>
-
- <section>
- <title>Disabling the Shared Cache</title>
-
- <para>
-
- Retrieving an already-built file
- from the shared cache
- is usually a significant time-savings
- over rebuilding the file,
- but how much of a savings
- (or even whether it saves time at all)
- can depend a great deal on your
- system or network configuration.
- For example, retrieving cached files
- from a busy server over a busy network
- might end up being slower than
- rebuilding the files locally.
-
- </para>
-
- <para>
-
- In these cases, you can specify
- the <literal>--cache-disable</literal>
- command-line option to tell &SCons;
- to not retrieve already-built files from the
- shared cache directory:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- <scons_output_command>scons -Q --cache-disable</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Populating a Shared Cache With Already-Built Files</title>
-
- <para>
-
- Sometimes, you may have one or more derived files
- already built in your local build tree
- that you wish to make available to other people doing builds.
- For example, you may find it more effective to perform
- integration builds with the cache disabled
- (per the previous section)
- and only populate the shared cache directory
- with the built files after the integration build
- has completed successfully.
- This way, the cache will only get filled up
- with derived files that are part of a complete, successful build
- not with files that might be later overwritten
- while you debug integration problems.
-
- </para>
-
- <para>
-
- In this case, you can use the
- the <literal>--cache-force</literal> option
- to tell &SCons; to put all derived files in the cache,
- even if the files already exist in your local tree
- from having been built by a previous invocation:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q --cache-disable</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- <scons_output_command>scons -Q --cache-disable</scons_output_command>
- <scons_output_command>scons -Q --cache-force</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice how the above sample run
- demonstrates that the <literal>--cache-disable</literal>
- option avoids putting the built
- <filename>hello.o</filename>
- and
- <filename>hello</filename> files in the cache,
- but after using the <literal>--cache-force</literal> option,
- the files have been put in the cache
- for the next invocation to retrieve.
-
- </para>
-
- </section>
-
- <section>
- <title>Minimizing Cache Contention: the <literal>--random</literal> Option</title>
-
- <para>
-
- If you allow multiple builds to update the
- shared cache directory simultaneously,
- two builds that occur at the same time
- can sometimes start "racing"
- with one another to build the same files
- in the same order.
- If, for example,
- you are linking multiple files into an executable program:
-
- </para>
-
- <scons_example name="ex-random">
- <file name="SConstruct" printme="1">
- Program('prog',
- ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
- </file>
- <file name="f1.c">f1.c</file>
- <file name="f2.c">f2.c</file>
- <file name="f3.c">f3.c</file>
- <file name="f4.c">f4.c</file>
- <file name="f5.c">f5.c</file>
- <file name="f6.c">f6.c</file>
- </scons_example>
-
- <para>
-
- &SCons; will normally build the input object files
- on which the program depends in their normal, sorted order:
-
- </para>
-
- <scons_output example="ex-random">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- But if two such builds take place simultaneously,
- they may each look in the cache at nearly the same
- time and both decide that <filename>f1.o</filename>
- must be rebuilt and pushed into the shared cache directory,
- then both decide that <filename>f2.o</filename>
- must be rebuilt (and pushed into the shared cache directory),
- then both decide that <filename>f3.o</filename>
- must be rebuilt...
- This won't cause any actual build problems--both
- builds will succeed,
- generate correct output files,
- and populate the cache--but
- it does represent wasted effort.
-
- </para>
-
- <para>
-
- To alleviate such contention for the cache,
- you can use the <literal>--random</literal> command-line option
- to tell &SCons; to build dependencies
- in a random order:
-
- </para>
-
- <!--
-
- The following <screen> output was generated by this:
-
- <scons_output example="ex-random">
- <scons_output_command>scons -Q - -random</scons_output_command>
- </scons_output>
-
- We captured it directly here to guarantee a "random" order,
- guarding against the potential for - -random to happen
- to return things in the original sorted order.
-
- -->
-
- <screen>
- % <userinput>scons -Q --random</userinput>
- cc -o f3.o -c f3.c
- cc -o f1.o -c f1.c
- cc -o f5.o -c f5.c
- cc -o f2.o -c f2.c
- cc -o f4.o -c f4.c
- cc -o prog f1.o f2.o f3.o f4.o f5.o
- </screen>
-
- <para>
-
- Multiple builds using the <literal>--random</literal> option
- will usually build their dependencies in different,
- random orders,
- which minimizes the chances for a lot of
- contention for same-named files
- in the shared cache directory.
- Multiple simultaneous builds might still race to try to build
- the same target file on occasion,
- but long sequences of inefficient contention
- should be rare.
-
- </para>
-
- <para>
-
- Note, of course,
- the <literal>--random</literal> option
- will cause the output that &SCons; prints
- to be inconsistent from invocation to invocation,
- which may be an issue when
- trying to compare output from different build runs.
-
- </para>
-
- <para>
-
- If you want to make sure dependencies will be built
- in a random order without having to specify
- the <literal>--random</literal> on very command line,
- you can use the &SetOption; function to
- set the <literal>random</literal> option
- within any &SConscript; file:
-
- </para>
-
- <scons_example name="ex-random">
- <file name="SConstruct" printme="1">
- SetOption('random', 1)
- Program('prog',
- ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
- </file>
- <file name="f1.c">f1.c</file>
- <file name="f2.c">f2.c</file>
- <file name="f3.c">f3.c</file>
- <file name="f4.c">f4.c</file>
- <file name="f5.c">f5.c</file>
- <file name="f6.c">f6.c</file>
- </scons_example>
-
- </section>
-
- <!--
-
- <section>
- <title>Troubleshooting Shared Caching: the &cache-debug; Option</title>
-
- <para>
-
- XXX describe the - - cache-debug option
- XXX maybe point to the troubleshooting appendix?
-
- </para>
-
- </section>
-
- -->
-
- <!--
-
- <section>
-
- <para>
-
- XXX describe CacheDir management: monitoring, deleting, etc.
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/caching.xml b/doc/user/caching.xml
index afa6e6f..2f5642b 100644
--- a/doc/user/caching.xml
+++ b/doc/user/caching.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-caching"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Caching Built Files</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -43,9 +65,21 @@
</para>
- <programlisting>
- CacheDir('/usr/local/build_cache')
- </programlisting>
+ <scons_example name="caching_ex1">
+ <file name="SConstruct">
+env = Environment()
+env.Program('hello.c')
+CacheDir('cache')
+ </file>
+ <file name="hello.c">
+hello.c
+ </file>
+ <directory name="cache">
+ </directory>
+ <file name="not_used" printme="1">
+CacheDir('/usr/local/build_cache')
+ </file>
+ </scons_example>
<para>
@@ -86,17 +120,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q -c</userinput>
- Removed hello.o
- Removed hello
- % <userinput>scons -Q</userinput>
- Retrieved `hello.o' from cache
- Retrieved `hello' from cache
- </screen>
+ <scons_output example="caching_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q -c</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -142,17 +170,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q -c</userinput>
- Removed hello.o
- Removed hello
- % <userinput>scons -Q --cache-show</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="caching_ex1" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q -c</scons_output_command>
+ <scons_output_command>scons -Q --cache-show</scons_output_command>
+ </scons_output>
<para>
@@ -181,13 +203,20 @@
</para>
- <programlisting>
- env = Environment()
- obj = env.Object('hello.c')
- env.Program('hello.c')
- CacheDir('cache')
- NoCache('hello.o')
- </programlisting>
+ <scons_example name="ex-NoCache">
+ <file name="SConstruct" printme="1">
+env = Environment()
+obj = env.Object('hello.c')
+env.Program('hello.c')
+CacheDir('cache')
+NoCache('hello.o')
+ </file>
+ <file name="hello.c">
+hello.c
+ </file>
+ <directory name="cache">
+ </directory>
+ </scons_example>
<para>
@@ -203,7 +232,7 @@
<!--
- <scons_output example="ex1">
+ <scons_output example="caching_ex1" suffix="3">
<scons_output_command>scons -Q</scons_output_command>
<scons_output_command>scons -Q -c</scons_output_command>
<scons_output_command>scons -Q</scons_output_command>
@@ -212,15 +241,15 @@
-->
<screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q -c</userinput>
- Removed hello.o
- Removed hello
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- Retrieved `hello' from cache
+% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>scons -Q -c</userinput>
+Removed hello.o
+Removed hello
+% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+Retrieved `hello' from cache
</screen>
</section>
@@ -255,23 +284,13 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q -c</userinput>
- Removed hello.o
- Removed hello
- % <userinput>scons -Q</userinput>
- Retrieved `hello.o' from cache
- Retrieved `hello' from cache
- % <userinput>scons -Q -c</userinput>
- Removed hello.o
- Removed hello
- % <userinput>scons -Q --cache-disable</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="caching_ex1" suffix="4">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q -c</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q -c</scons_output_command>
+ <scons_output_command>scons -Q --cache-disable</scons_output_command>
+ </scons_output>
</section>
@@ -306,21 +325,13 @@
</para>
- <screen>
- % <userinput>scons -Q --cache-disable</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q -c</userinput>
- Removed hello.o
- Removed hello
- % <userinput>scons -Q --cache-disable</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q --cache-force</userinput>
- scons: `.' is up to date.
- % <userinput>scons -Q</userinput>
- scons: `.' is up to date.
- </screen>
+ <scons_output example="caching_ex1" suffix="5">
+ <scons_output_command>scons -Q --cache-disable</scons_output_command>
+ <scons_output_command>scons -Q -c</scons_output_command>
+ <scons_output_command>scons -Q --cache-disable</scons_output_command>
+ <scons_output_command>scons -Q --cache-force</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -354,10 +365,18 @@
</para>
- <programlisting>
- Program('prog',
- ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
- </programlisting>
+ <scons_example name="caching_ex-random">
+ <file name="SConstruct" printme="1">
+Program('prog',
+ ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
+ </file>
+ <file name="f1.c">f1.c</file>
+ <file name="f2.c">f2.c</file>
+ <file name="f3.c">f3.c</file>
+ <file name="f4.c">f4.c</file>
+ <file name="f5.c">f5.c</file>
+ <file name="f6.c">f6.c</file>
+ </scons_example>
<para>
@@ -366,15 +385,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o f1.o -c f1.c
- cc -o f2.o -c f2.c
- cc -o f3.o -c f3.c
- cc -o f4.o -c f4.c
- cc -o f5.o -c f5.c
- cc -o prog f1.o f2.o f3.o f4.o f5.o
- </screen>
+ <scons_output example="caching_ex-random" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -407,24 +420,24 @@
The following <screen> output was generated by this:
- <scons_output example="ex-random">
+ <scons_output example="caching_ex-random" suffix="2">
<scons_output_command>scons -Q - -random</scons_output_command>
</scons_output>
- We captured it directly here to guarantee a "random" order,
- guarding against the potential for - -random to happen
- to return things in the original sorted order.
+We captured it directly here to guarantee a "random" order,
+guarding against the potential for - -random to happen
+to return things in the original sorted order.
- -->
+-->
<screen>
- % <userinput>scons -Q --random</userinput>
- cc -o f3.o -c f3.c
- cc -o f1.o -c f1.c
- cc -o f5.o -c f5.c
- cc -o f2.o -c f2.c
- cc -o f4.o -c f4.c
- cc -o prog f1.o f2.o f3.o f4.o f5.o
+ % <userinput>scons -Q --random</userinput>
+ cc -o f3.o -c f3.c
+ cc -o f1.o -c f1.c
+ cc -o f5.o -c f5.c
+ cc -o f2.o -c f2.c
+ cc -o f4.o -c f4.c
+ cc -o prog f1.o f2.o f3.o f4.o f5.o
</screen>
<para>
@@ -464,14 +477,19 @@
</para>
- <programlisting>
- Program('prog',
- ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
-
- SetOption('random', 1)
- Program('prog',
- ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
- </programlisting>
+ <scons_example name="caching_ex-random">
+ <file name="SConstruct" printme="1">
+SetOption('random', 1)
+Program('prog',
+ ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
+ </file>
+ <file name="f1.c">f1.c</file>
+ <file name="f2.c">f2.c</file>
+ <file name="f3.c">f3.c</file>
+ <file name="f4.c">f4.c</file>
+ <file name="f5.c">f5.c</file>
+ <file name="f6.c">f6.c</file>
+ </scons_example>
</section>
@@ -504,3 +522,5 @@
</section>
-->
+
+</chapter>
diff --git a/doc/user/chtml.xsl b/doc/user/chtml.xsl
new file mode 100644
index 0000000..5c9591a
--- /dev/null
+++ b/doc/user/chtml.xsl
@@ -0,0 +1,60 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl"/>
+
+<xsl:param name="base.dir" select="'scons-user/'"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<!-- Prevent our EPUB cover image from getting included -->
+<xsl:template match="mediaobject[@role = 'cover']">
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/user/command-line.in b/doc/user/command-line.in
deleted file mode 100644
index 5d28b04..0000000
--- a/doc/user/command-line.in
+++ /dev/null
@@ -1,2345 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- &SCons; provides a number of ways
- for the writer of the &SConscript; files
- to give the users who will run &SCons;
- a great deal of control over the build execution.
- The arguments that the user can specify on
- the command line are broken down into three types:
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>Options</term>
-
- <listitem>
- <para>
-
- Command-line options always begin with
- one or two <literal>-</literal> (hyphen) characters.
- &SCons; provides ways for you to examine
- and set options values from within your &SConscript; files,
- as well as the ability to define your own
- custom options.
- See <xref linkend="sect-command-line-options"></xref>, below.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Variables</term>
-
- <listitem>
- <para>
-
- Any command-line argument containing an <literal>=</literal>
- (equal sign) is considered a variable setting with the form
- <varname>variable</varname>=<varname>value</varname>.
- &SCons; provides direct access to
- all of the command-line variable settings,
- the ability to apply command-line variable settings
- to construction environments,
- and functions for configuring
- specific types of variables
- (Boolean values, path names, etc.)
- with automatic validation of the user's specified values.
- See <xref linkend="sect-command-line-variables"></xref>, below.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Targets</term>
-
- <listitem>
- <para>
-
- Any command-line argument that is not an option
- or a variable setting
- (does not begin with a hyphen
- and does not contain an equal sign)
- is considered a target that the user
- (presumably) wants &SCons; to build.
- A list of Node objects representing
- the target or targets to build.
- &SCons; provides access to the list of specified targets,
- as well as ways to set the default list of targets
- from within the &SConscript; files.
- See <xref linkend="sect-command-line-targets"></xref>, below.
-
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- <section id="sect-command-line-options">
- <title>Command-Line Options</title>
-
- <para>
-
- &SCons; has many <emphasis>command-line options</emphasis>
- that control its behavior.
- A &SCons; <emphasis>command-line option</emphasis>
- always begins with one or two <literal>-</literal> (hyphen)
- characters.
-
- </para>
-
- <section>
- <title>Not Having to Specify Command-Line Options Each Time: the &SCONSFLAGS; Environment Variable</title>
-
- <para>
-
- Users may find themselves supplying
- the same command-line options every time
- they run &SCons;.
- For example, you might find it saves time
- to specify a value of <literal>-j 2</literal>
- to have &SCons; run up to two build commands in parallel.
- To avoid having to type <literal>-j 2</literal> by hand
- every time,
- you can set the external environment variable
- &SCONSFLAGS; to a string containing
- command-line options that you want &SCons; to use.
-
- </para>
-
- <para>
-
- If, for example,
- you're using a POSIX shell that's
- compatible with the Bourne shell,
- and you always want &SCons; to use the
- <literal>-Q</literal> option,
- you can set the &SCONSFLAGS;
- environment as follows:
-
- </para>
-
- <scons_example name="SCONSFLAGS">
- <file name="SConstruct">
- def b(target, source, env):
- pass
- def s(target, source, env):
- return " ... [build output] ..."
- a = Action(b, strfunction = s)
- env = Environment(BUILDERS = {'A' : Builder(action=a)})
- env.A('foo.out', 'foo.in')
- </file>
- <file name="foo.in">
- foo.in
- </file>
- </scons_example>
-
- <scons_output example="SCONSFLAGS">
- <scons_output_command>scons</scons_output_command>
- <scons_output_command>export SCONSFLAGS="-Q"</scons_output_command>
- <scons_output_command environment="SCONSFLAGS=-Q">scons</scons_output_command>
- </scons_output>
-
- <para>
-
- Users of &csh;-style shells on POSIX systems
- can set the &SCONSFLAGS; environment as follows:
-
- </para>
-
- <screen>
- $ <userinput>setenv SCONSFLAGS "-Q"</userinput>
- </screen>
-
- <para>
-
- Windows users may typically want to set the
- &SCONSFLAGS; in the appropriate tab of the
- <literal>System Properties</literal> window.
-
- </para>
-
- </section>
-
- <section>
- <title>Getting Values Set by Command-Line Options: the &GetOption; Function</title>
-
- <para>
-
- &SCons; provides the &GetOption; function
- to get the values set by the various command-line options.
- One common use of this is to check whether or not
- the <literal>-h</literal> or <literal>--help</literal> option
- has been specified.
- Normally, &SCons; does not print its help text
- until after it has read all of the &SConscript; files,
- because it's possible that help text has been added
- by some subsidiary &SConscript; file deep in the
- source tree hierarchy.
- Of course, reading all of the &SConscript; files
- takes extra time.
-
- </para>
-
- <para>
-
- If you know that your configuration does not define
- any additional help text in subsidiary &SConscript; files,
- you can speed up the command-line help available to users
- by using the &GetOption; function to load the
- subsidiary &SConscript; files only if the
- the user has <emphasis>not</emphasis> specified
- the <literal>-h</literal> or <literal>--help</literal> option,
- like so:
-
- </para>
-
- <sconstruct>
- if not GetOption('help'):
- SConscript('src/SConscript', export='env')
- </sconstruct>
-
- <para>
-
- In general, the string that you pass to the
- &GetOption; function to fetch the value of a command-line
- option setting is the same as the "most common" long option name
- (beginning with two hyphen characters),
- although there are some exceptions.
- The list of &SCons; command-line options
- and the &GetOption; strings for fetching them,
- are available in the
- <xref linkend="sect-command-line-option-strings"></xref> section,
- below.
-
- </para>
-
- </section>
-
- <section>
- <title>Setting Values of Command-Line Options: the &SetOption; Function</title>
-
- <para>
-
- You can also set the values of &SCons;
- command-line options from within the &SConscript; files
- by using the &SetOption; function.
- The strings that you use to set the values of &SCons;
- command-line options are available in the
- <xref linkend="sect-command-line-option-strings"></xref> section,
- below.
-
- </para>
-
- <para>
-
- One use of the &SetOption; function is to
- specify a value for the <literal>-j</literal>
- or <literal>--jobs</literal> option,
- so that users get the improved performance
- of a parallel build without having to specify the option by hand.
- A complicating factor is that a good value
- for the <literal>-j</literal> option is
- somewhat system-dependent.
- One rough guideline is that the more processors
- your system has,
- the higher you want to set the
- <literal>-j</literal> value,
- in order to take advantage of the number of CPUs.
-
- </para>
-
- <para>
-
- For example, suppose the administrators
- of your development systems
- have standardized on setting a
- <varname>NUM_CPU</varname> environment variable
- to the number of processors on each system.
- A little bit of Python code
- to access the environment variable
- and the &SetOption; function
- provide the right level of flexibility:
-
- </para>
-
- <scons_example name="SetOption">
- <file name="SConstruct" printme="1">
- import os
- num_cpu = int(os.environ.get('NUM_CPU', 2))
- SetOption('num_jobs', num_cpu)
- print "running with -j", GetOption('num_jobs')
- </file>
- <file name="foo.in">
- foo.in
- </file>
- </scons_example>
-
- <para>
-
- The above snippet of code
- sets the value of the <literal>--jobs</literal> option
- to the value specified in the
- <varname>$NUM_CPU</varname> environment variable.
- (This is one of the exception cases
- where the string is spelled differently from
- the from command-line option.
- The string for fetching or setting the <literal>--jobs</literal>
- value is <literal>num_jobs</literal>
- for historical reasons.)
- The code in this example prints the <literal>num_jobs</literal>
- value for illustrative purposes.
- It uses a default value of <literal>2</literal>
- to provide some minimal parallelism even on
- single-processor systems:
-
- </para>
-
- <scons_output example="SetOption">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- But if the <varname>$NUM_CPU</varname>
- environment variable is set,
- then we use that for the default number of jobs:
-
- </para>
-
- <scons_output example="SetOption">
- <scons_output_command>export NUM_CPU="4"</scons_output_command>
- <scons_output_command environment="NUM_CPU=4">scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- But any explicit
- <literal>-j</literal> or <literal>--jobs</literal>
- value the user specifies an the command line is used first,
- regardless of whether or not
- the <varname>$NUM_CPU</varname> environment
- variable is set:
-
- </para>
-
- <scons_output example="SetOption">
- <scons_output_command>scons -Q -j 7</scons_output_command>
- <scons_output_command>export NUM_CPU="4"</scons_output_command>
- <scons_output_command environment="NUM_CPU=4">scons -Q -j 3</scons_output_command>
- </scons_output>
-
- </section>
-
- <section id="sect-command-line-option-strings">
- <title>Strings for Getting or Setting Values of &SCons; Command-Line Options</title>
-
- <para>
-
- The strings that you can pass to the &GetOption;
- and &SetOption; functions usually correspond to the
- first long-form option name
- (beginning with two hyphen characters: <literal>--</literal>),
- after replacing any remaining hyphen characters
- with underscores.
-
- </para>
-
- <para>
-
- The full list of strings and the variables they
- correspond to is as follows:
-
- </para>
-
- <informaltable>
- <tgroup cols="2" align="left">
-
- <thead>
-
- <row>
- <entry>String for &GetOption; and &SetOption;</entry>
- <entry>Command-Line Option(s)</entry>
- </row>
-
- </thead>
-
- <tbody>
-
- <row>
- <entry><literal>cache_debug</literal></entry>
- <entry><option>--cache-debug</option></entry>
- </row>
-
- <row>
- <entry><literal>cache_disable</literal></entry>
- <entry><option>--cache-disable</option></entry>
- </row>
-
- <row>
- <entry><literal>cache_force</literal></entry>
- <entry><option>--cache-force</option></entry>
- </row>
-
- <row>
- <entry><literal>cache_show</literal></entry>
- <entry><option>--cache-show</option></entry>
- </row>
-
- <row>
- <entry><literal>clean</literal></entry>
- <entry><option>-c</option>,
- <option>--clean</option>,
- <option>--remove</option></entry>
- </row>
-
- <row>
- <entry><literal>config</literal></entry>
- <entry><option>--config</option></entry>
- </row>
-
- <row>
- <entry><literal>directory</literal></entry>
- <entry><option>-C</option>,
- <option>--directory</option></entry>
- </row>
-
- <row>
- <entry><literal>diskcheck</literal></entry>
- <entry><option>--diskcheck</option></entry>
- </row>
-
- <row>
- <entry><literal>duplicate</literal></entry>
- <entry><option>--duplicate</option></entry>
- </row>
-
- <row>
- <entry><literal>file</literal></entry>
- <entry><option>-f</option>,
- <option>--file</option>,
- <option>--makefile </option>,
- <option>--sconstruct</option></entry>
- </row>
-
- <row>
- <entry><literal>help</literal></entry>
- <entry><option>-h</option>,
- <option>--help</option></entry>
- </row>
-
- <row>
- <entry><literal>ignore_errors</literal></entry>
- <entry><option>--ignore-errors</option></entry>
- </row>
-
- <row>
- <entry><literal>implicit_cache</literal></entry>
- <entry><option>--implicit-cache</option></entry>
- </row>
-
- <row>
- <entry><literal>implicit_deps_changed</literal></entry>
- <entry><option>--implicit-deps-changed</option></entry>
- </row>
-
- <row>
- <entry><literal>implicit_deps_unchanged</literal></entry>
- <entry><option>--implicit-deps-unchanged</option></entry>
- </row>
-
- <row>
- <entry><literal>interactive</literal></entry>
- <entry><option>--interact</option>,
- <option>--interactive</option></entry>
- </row>
-
- <row>
- <entry><literal>keep_going</literal></entry>
- <entry><option>-k</option>,
- <option>--keep-going</option></entry>
- </row>
-
- <row>
- <entry><literal>max_drift</literal></entry>
- <entry><option>--max-drift</option></entry>
- </row>
-
- <row>
- <entry><literal>no_exec</literal></entry>
- <entry><option>-n</option>,
- <option>--no-exec</option>,
- <option>--just-print</option>,
- <option>--dry-run</option>,
- <option>--recon</option></entry>
- </row>
-
- <row>
- <entry><literal>no_site_dir</literal></entry>
- <entry><option>--no-site-dir</option></entry>
- </row>
-
- <row>
- <entry><literal>num_jobs</literal></entry>
- <entry><option>-j</option>,
- <option>--jobs</option></entry>
- </row>
-
- <row>
- <entry><literal>profile_file</literal></entry>
- <entry><option>--profile</option></entry>
- </row>
-
- <row>
- <entry><literal>question</literal></entry>
- <entry><option>-q</option>,
- <option>--question</option></entry>
- </row>
-
- <row>
- <entry><literal>random</literal></entry>
- <entry><option>--random</option></entry>
- </row>
-
- <row>
- <entry><literal>repository</literal></entry>
- <entry><option>-Y</option>,
- <option>--repository</option>,
- <option>--srcdir</option></entry>
- </row>
-
- <row>
- <entry><literal>silent</literal></entry>
- <entry><option>-s</option>,
- <option>--silent</option>,
- <option>--quiet</option></entry>
- </row>
-
- <row>
- <entry><literal>site_dir</literal></entry>
- <entry><option>--site-dir</option></entry>
- </row>
-
- <row>
- <entry><literal>stack_size</literal></entry>
- <entry><option>--stack-size</option></entry>
- </row>
-
- <row>
- <entry><literal>taskmastertrace_file</literal></entry>
- <entry><option>--taskmastertrace</option></entry>
- </row>
-
- <row>
- <entry><literal>warn</literal></entry>
- <entry><option>--warn</option> <option>--warning</option></entry>
- </row>
-
- </tbody>
-
- </tgroup>
- </informaltable>
-
- </section>
-
- <section>
- <title>Adding Custom Command-Line Options: the &AddOption; Function</title>
-
- <para>
-
- &SCons; also allows you to define your own
- command-line options with the &AddOption; function.
- The &AddOption; function takes the same arguments
- as the <function>optparse.add_option</function> function
- from the standard Python library.
- <footnote>
- <para>
- The &AddOption; function is,
- in fact, implemented using a subclass
- of the <classname>optparse.OptionParser</classname>.
- </para>
- </footnote>
- Once you have added a custom command-line option
- with the &AddOption; function,
- the value of the option (if any) is immediately available
- using the standard &GetOption; function.
- (The value can also be set using &SetOption;,
- although that's not very useful in practice
- because a default value can be specified in
- directly in the &AddOption; call.)
-
- </para>
-
- <para>
-
- One useful example of using this functionality
- is to provide a <option>--prefix</option> for users:
-
- </para>
-
- <scons_example name="AddOption">
- <file name="SConstruct" printme="1">
- AddOption('--prefix',
- dest='prefix',
- type='string',
- nargs=1,
- action='store',
- metavar='DIR',
- help='installation prefix')
-
- env = Environment(PREFIX = GetOption('prefix'))
-
- installed_foo = env.Install('$PREFIX/usr/bin', 'foo.in')
- Default(installed_foo)
- </file>
- <file name="foo.in">
- foo.in
- </file>
- </scons_example>
-
- <para>
-
- The above code uses the &GetOption; function
- to set the <varname>$PREFIX</varname>
- construction variable to any
- value that the user specifies with a command-line
- option of <literal>--prefix</literal>.
- Because <varname>$PREFIX</varname>
- will expand to a null string if it's not initialized,
- running &SCons; without the
- option of <literal>--prefix</literal>
- will install the file in the
- <filename>/usr/bin/</filename> directory:
-
- </para>
-
- <scons_output example="AddOption">
- <scons_output_command>scons -Q -n</scons_output_command>
- </scons_output>
-
- <para>
-
- But specifying <literal>--prefix=/tmp/install</literal>
- on the command line causes the file to be installed in the
- <filename>/tmp/install/usr/bin/</filename> directory:
-
- </para>
-
- <scons_output example="AddOption">
- <scons_output_command>scons -Q -n --prefix=/tmp/install</scons_output_command>
- </scons_output>
-
- </section>
-
- </section>
-
- <section id="sect-command-line-variables">
- <title>Command-Line <varname>variable</varname>=<varname>value</varname> Build Variables</title>
-
- <para>
-
- You may want to control various aspects
- of your build by allowing the user
- to specify <varname>variable</varname>=<varname>value</varname>
- values on the command line.
- For example, suppose you
- want users to be able to
- build a debug version of a program
- by running &SCons; as follows:
-
- </para>
-
- <screen>
- % <userinput>scons -Q debug=1</userinput>
- </screen>
-
- <para>
-
- &SCons; provides an &ARGUMENTS; dictionary
- that stores all of the
- <varname>variable</varname>=<varname>value</varname>
- assignments from the command line.
- This allows you to modify
- aspects of your build in response
- to specifications on the command line.
- (Note that unless you want to require
- that users <emphasis>always</emphasis>
- specify a variable,
- you probably want to use
- the Python
- <literal>ARGUMENTS.get()</literal> function,
- which allows you to specify a default value
- to be used if there is no specification
- on the command line.)
-
- </para>
-
- <para>
-
- The following code sets the &cv-link-CCFLAGS; construction
- variable in response to the <varname>debug</varname>
- flag being set in the &ARGUMENTS; dictionary:
-
- </para>
-
- <scons_example name="ARGUMENTS">
- <file name="SConstruct" printme="1">
- env = Environment()
- debug = ARGUMENTS.get('debug', 0)
- if int(debug):
- env.Append(CCFLAGS = '-g')
- env.Program('prog.c')
- </file>
- <file name="prog.c">
- prog.c
- </file>
- </scons_example>
-
- <para>
-
- This results in the <varname>-g</varname>
- compiler option being used when
- <literal>debug=1</literal>
- is used on the command line:
-
- </para>
-
- <scons_output example="ARGUMENTS">
- <scons_output_command>scons -Q debug=0</scons_output_command>
- <scons_output_command>scons -Q debug=0</scons_output_command>
- <scons_output_command>scons -Q debug=1</scons_output_command>
- <scons_output_command>scons -Q debug=1</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice that &SCons; keeps track of
- the last values used to build the object files,
- and as a result correctly rebuilds
- the object and executable files
- only when the value of the <literal>debug</literal>
- argument has changed.
-
- </para>
-
- <para>
-
- The &ARGUMENTS; dictionary has two minor drawbacks.
- First, because it is a dictionary,
- it can only store one value for each specified keyword,
- and thus only "remembers" the last setting
- for each keyword on the command line.
- This makes the &ARGUMENTS; dictionary
- inappropriate if users should be able to
- specify multiple values
- on the command line for a given keyword.
- Second, it does not preserve
- the order in which the variable settings
- were specified,
- which is a problem if
- you want the configuration to
- behave differently in response
- to the order in which the build
- variable settings were specified on the command line.
-
- </para>
-
- <para>
-
- To accomodate these requirements,
- &SCons; provides an &ARGLIST; variable
- that gives you direct access to
- <varname>variable</varname>=<varname>value</varname>
- settings on the command line,
- in the exact order they were specified,
- and without removing any duplicate settings.
- Each element in the &ARGLIST; variable
- is itself a two-element list
- containing the keyword and the value
- of the setting,
- and you must loop through,
- or otherwise select from,
- the elements of &ARGLIST; to
- process the specific settings you want
- in whatever way is appropriate for your configuration.
- For example,
- the following code to let the user
- add to the &CPPDEFINES; construction variable
- by specifying multiple
- <varname>define=</varname>
- settings on the command line:
-
- </para>
-
- <scons_example name="ARGLIST">
- <file name="SConstruct" printme="1">
- cppdefines = []
- for key, value in ARGLIST:
- if key == 'define':
- cppdefines.append(value)
- env = Environment(CPPDEFINES = cppdefines)
- env.Object('prog.c')
- </file>
- <file name="prog.c">
- prog.c
- </file>
- </scons_example>
-
- <para>
-
- Yields the following output:
-
- </para>
-
- <scons_output example="ARGLIST">
- <scons_output_command>scons -Q define=FOO</scons_output_command>
- <scons_output_command>scons -Q define=FOO define=BAR</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that the &ARGLIST; and &ARGUMENTS;
- variables do not interfere with each other,
- but merely provide slightly different views
- into how the user specified
- <varname>variable</varname>=<varname>value</varname>
- settings on the command line.
- You can use both variables in the same
- &SCons; configuration.
- In general, the &ARGUMENTS; dictionary
- is more convenient to use,
- (since you can just fetch variable
- settings through a dictionary access),
- and the &ARGLIST; list
- is more flexible
- (since you can examine the
- specific order in which
- the user's command-line variabe settings).
-
- </para>
-
- <section>
- <title>Controlling Command-Line Build Variables</title>
-
- <para>
-
- Being able to use a command-line build variable like
- <literal>debug=1</literal> is handy,
- but it can be a chore to write specific Python code
- to recognize each such variable,
- check for errors and provide appropriate messages,
- and apply the values to a construction variable.
- To help with this,
- &SCons; supports a class to
- define such build variables easily,
- and a mechanism to apply the
- build variables to a construction environment.
- This allows you to control how the build variables affect
- construction environments.
-
- </para>
-
- <para>
-
- For example, suppose that you want users to set
- a &RELEASE; construction variable on the
- command line whenever the time comes to build
- a program for release,
- and that the value of this variable
- should be added to the command line
- with the appropriate <literal>-D</literal> option
- (or other command line option)
- to pass the value to the C compiler.
- Here's how you might do that by setting
- the appropriate value in a dictionary for the
- &cv-link-CPPDEFINES; construction variable:
-
- </para>
-
- <scons_example name="Variables1">
- <file name="SConstruct" printme="1">
- vars = Variables(None, ARGUMENTS)
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- env.Program(['foo.c', 'bar.c'])
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="bar.c">
- bar.c
- </file>
- </scons_example>
-
- <para>
-
- This &SConstruct; file first creates a &Variables; object
- which uses the values from the command-line options dictionary &ARGUMENTS;
- (the <literal>vars = Variables(None, ARGUMENTS)</literal> call).
- It then uses the object's &Add;
- method to indicate that the &RELEASE;
- variable can be set on the command line,
- and that its default value will be <literal>0</literal>
- (the third argument to the &Add; method).
- The second argument is a line of help text;
- we'll learn how to use it in the next section.
-
- </para>
-
- <para>
-
- We then pass the created &Variables;
- object as a &variables; keyword argument
- to the &Environment; call
- used to create the construction environment.
- This then allows a user to set the
- &RELEASE; build variable on the command line
- and have the variable show up in
- the command line used to build each object from
- a C source file:
-
- </para>
-
- <scons_output example="Variables1">
- <scons_output_command>scons -Q RELEASE=1</scons_output_command>
- </scons_output>
-
- <para>
-
- NOTE: Before &SCons; release 0.98.1, these build variables
- were known as "command-line build options."
- The class was actually named the &Options; class,
- and in the sections below,
- the various functions were named
- &BoolOption;, &EnumOption;, &ListOption;,
- &PathOption;, &PackageOption; and &AddOptions;.
- These older names still work,
- and you may encounter them in older
- &SConscript; files,
- but they have been officially deprecated
- as of &SCons; version 2.0.
-
- </para>
-
- </section>
-
- <section>
- <title>Providing Help for Command-Line Build Variables</title>
-
- <para>
-
- To make command-line build variables most useful,
- you ideally want to provide
- some help text that will describe
- the available variables
- when the user runs <literal>scons -h</literal>.
- You could write this text by hand,
- but &SCons; provides an easier way.
- &Variables; objects support a
- &GenerateHelpText; method
- that will, as its name suggests,
- generate text that describes
- the various variables that
- have been added to it.
- You then pass the output from this method to
- the &Help; function:
-
- </para>
-
- <scons_example name="Variables_Help">
- <file name="SConstruct" printme="1">
- vars = Variables(None, ARGUMENTS)
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars)
- Help(vars.GenerateHelpText(env))
- </file>
- </scons_example>
-
- <para>
-
- &SCons; will now display some useful text
- when the <literal>-h</literal> option is used:
-
- </para>
-
- <scons_output example="Variables_Help">
- <scons_output_command>scons -Q -h</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice that the help output shows the default value,
- and the current actual value of the build variable.
-
- </para>
-
- </section>
-
- <section>
- <title>Reading Build Variables From a File</title>
-
- <para>
-
- Giving the user a way to specify the
- value of a build variable on the command line
- is useful,
- but can still be tedious
- if users must specify the variable
- every time they run &SCons;.
- We can let users provide customized build variable settings
- in a local file by providing a
- file name when we create the
- &Variables; object:
-
- </para>
-
- <scons_example name="Variables_custom_py_1">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- env.Program(['foo.c', 'bar.c'])
- Help(vars.GenerateHelpText(env))
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="bar.c">
- bar.c
- </file>
- <file name="custom.py">
- RELEASE = 1
- </file>
- </scons_example>
-
- <para>
-
- This then allows the user to control the &RELEASE;
- variable by setting it in the &custom_py; file:
-
- </para>
-
- <scons_example_file example="Variables_custom_py_1" name="custom.py"></scons_example_file>
-
- <para>
-
- Note that this file is actually executed
- like a Python script.
- Now when we run &SCons;:
-
- </para>
-
- <scons_output example="Variables_custom_py_1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And if we change the contents of &custom_py; to:
-
- </para>
-
- <scons_example name="Variables_custom_py_2">
- <file name="SConstruct">
- vars = Variables('custom.py')
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- env.Program(['foo.c', 'bar.c'])
- Help(vars.GenerateHelpText(env))
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="bar.c">
- bar.c
- </file>
- <file name="custom.py" printme="1">
- RELEASE = 0
- </file>
- </scons_example>
-
- <para>
-
- The object files are rebuilt appropriately
- with the new variable:
-
- </para>
-
- <scons_output example="Variables_custom_py_2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Finally, you can combine both methods with:
-
- </para>
-
- <screen>
- vars = Variables('custom.py', ARGUMENTS)
- </screen>
-
- <para>
-
- where values in the option file &custom_py; get overwritten
- by the ones specified on the command line.
-
- </para>
-
- </section>
-
- <section>
- <title>Pre-Defined Build Variable Functions</title>
-
- <para>
-
- &SCons; provides a number of functions
- that provide ready-made behaviors
- for various types of command-line build variables.
-
- </para>
-
- <section>
- <title>True/False Values: the &BoolVariable; Build Variable Function</title>
-
- <para>
-
- It's often handy to be able to specify a
- variable that controls a simple Boolean variable
- with a &true; or &false; value.
- It would be even more handy to accomodate
- users who have different preferences for how to represent
- &true; or &false; values.
- The &BoolVariable; function
- makes it easy to accomodate these
- common representations of
- &true; or &false;.
-
- </para>
-
- <para>
-
- The &BoolVariable; function takes three arguments:
- the name of the build variable,
- the default value of the build variable,
- and the help string for the variable.
- It then returns appropriate information for
- passing to the &Add; method of a &Variables; object, like so:
-
- </para>
-
- <scons_example name="BoolVariable">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(BoolVariable('RELEASE', 'Set to build for release', 0))
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- With this build variable,
- the &RELEASE; variable can now be enabled by
- setting it to the value <literal>yes</literal>
- or <literal>t</literal>:
-
- </para>
-
- <scons_output example="BoolVariable">
- <scons_output_command>scons -Q RELEASE=yes foo.o</scons_output_command>
- </scons_output>
-
- <scons_output example="BoolVariable">
- <scons_output_command>scons -Q RELEASE=t foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- Other values that equate to &true; include
- <literal>y</literal>,
- <literal>1</literal>,
- <literal>on</literal>
- and
- <literal>all</literal>.
-
- </para>
-
- <para>
-
- Conversely, &RELEASE; may now be given a &false;
- value by setting it to
- <literal>no</literal>
- or
- <literal>f</literal>:
-
- </para>
-
- <scons_output example="BoolVariable">
- <scons_output_command>scons -Q RELEASE=no foo.o</scons_output_command>
- </scons_output>
-
- <scons_output example="BoolVariable">
- <scons_output_command>scons -Q RELEASE=f foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- Other values that equate to &false; include
- <literal>n</literal>,
- <literal>0</literal>,
- <literal>off</literal>
- and
- <literal>none</literal>.
-
- </para>
-
- <para>
-
- Lastly, if a user tries to specify
- any other value,
- &SCons; supplies an appropriate error message:
-
- </para>
-
- <scons_output example="BoolVariable">
- <scons_output_command>scons -Q RELEASE=bad_value foo.o</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Single Value From a List: the &EnumVariable; Build Variable Function</title>
-
- <para>
-
- Suppose that we want a user to be able to
- set a &COLOR; variable
- that selects a background color to be
- displayed by an application,
- but that we want to restrict the
- choices to a specific set of allowed colors.
- This can be set up quite easily
- using the &EnumVariable;,
- which takes a list of &allowed_values;
- in addition to the variable name,
- default value,
- and help text arguments:
-
- </para>
-
- <scons_example name="EnumVariable">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue')))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- The user can now explicity set the &COLOR; build variable
- to any of the specified allowed values:
-
- </para>
-
- <scons_output example="EnumVariable">
- <scons_output_command>scons -Q COLOR=red foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=blue foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=green foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- But, almost more importantly,
- an attempt to set &COLOR;
- to a value that's not in the list
- generates an error message:
-
- </para>
-
- <scons_output example="EnumVariable">
- <scons_output_command>scons -Q COLOR=magenta foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- The &EnumVariable; function also supports a way
- to map alternate names to allowed values.
- Suppose, for example,
- that we want to allow the user
- to use the word <literal>navy</literal> as a synonym for
- <literal>blue</literal>.
- We do this by adding a &map; dictionary
- that will map its key values
- to the desired legal value:
-
- </para>
-
- <scons_example name="EnumVariable_map">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue'),
- map={'navy':'blue'}))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- As desired, the user can then use
- <literal>navy</literal> on the command line,
- and &SCons; will translate it into <literal>blue</literal>
- when it comes time to use the &COLOR;
- variable to build a target:
-
- </para>
-
- <scons_output example="EnumVariable_map">
- <scons_output_command>scons -Q COLOR=navy foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- By default, when using the &EnumVariable; function,
- arguments that differ
- from the legal values
- only in case
- are treated as illegal values:
-
- </para>
-
- <scons_output example="EnumVariable">
- <scons_output_command>scons -Q COLOR=Red foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=BLUE foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=nAvY foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- The &EnumVariable; function can take an additional
- &ignorecase; keyword argument that,
- when set to <literal>1</literal>,
- tells &SCons; to allow case differences
- when the values are specified:
-
- </para>
-
- <scons_example name="EnumVariable_ic1">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue'),
- map={'navy':'blue'},
- ignorecase=1))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- Which yields the output:
-
- </para>
-
- <scons_output example="EnumVariable_ic1">
- <scons_output_command>scons -Q COLOR=Red foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=BLUE foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=nAvY foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=green foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice that an &ignorecase; value of <literal>1</literal>
- preserves the case-spelling that the user supplied.
- If you want &SCons; to translate the names
- into lower-case,
- regardless of the case used by the user,
- specify an &ignorecase; value of <literal>2</literal>:
-
- </para>
-
- <scons_example name="EnumVariable_ic2">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue'),
- map={'navy':'blue'},
- ignorecase=2))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- Now &SCons; will use values of
- <literal>red</literal>,
- <literal>green</literal> or
- <literal>blue</literal>
- regardless of how the user spells
- those values on the command line:
-
- </para>
-
- <scons_output example="EnumVariable_ic2">
- <scons_output_command>scons -Q COLOR=Red foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=nAvY foo.o</scons_output_command>
- <scons_output_command>scons -Q COLOR=GREEN foo.o</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Multiple Values From a List: the &ListVariable; Build Variable Function</title>
-
- <para>
-
- Another way in which you might want to allow users
- to control a build variable is to
- specify a list of one or more legal values.
- &SCons; supports this through the &ListVariable; function.
- If, for example, we want a user to be able to set a
- &COLORS; variable to one or more of the legal list of values:
-
- </para>
-
- <scons_example name="ListVariable">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(ListVariable('COLORS', 'List of colors', 0,
- ['red', 'green', 'blue']))
- env = Environment(variables = vars,
- CPPDEFINES={'COLORS' : '"${COLORS}"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- A user can now specify a comma-separated list
- of legal values,
- which will get translated into a space-separated
- list for passing to the any build commands:
-
- </para>
-
- <scons_output example="ListVariable">
- <scons_output_command>scons -Q COLORS=red,blue foo.o</scons_output_command>
- <scons_output_command>scons -Q COLORS=blue,green,red foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- In addition, the &ListVariable; function
- allows the user to specify explicit keywords of
- &all; or &none;
- to select all of the legal values,
- or none of them, respectively:
-
- </para>
-
- <scons_output example="ListVariable">
- <scons_output_command>scons -Q COLORS=all foo.o</scons_output_command>
- <scons_output_command>scons -Q COLORS=none foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- And, of course, an illegal value
- still generates an error message:
-
- </para>
-
- <scons_output example="ListVariable">
- <scons_output_command>scons -Q COLORS=magenta foo.o</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Path Names: the &PathVariable; Build Variable Function</title>
-
- <para>
-
- &SCons; supports a &PathVariable; function
- to make it easy to create a build variable
- to control an expected path name.
- If, for example, you need to
- define a variable in the preprocessor
- that controls the location of a
- configuration file:
-
- </para>
-
- <scons_example name="PathVariable">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(PathVariable('CONFIG',
- 'Path to configuration file',
- '__ROOT__/etc/my_config'))
- env = Environment(variables = vars,
- CPPDEFINES={'CONFIG_FILE' : '"$CONFIG"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="__ROOT__/etc/my_config">
- /opt/location
- </file>
- <file name="__ROOT__/usr/local/etc/other_config">
- /opt/location
- </file>
- </scons_example>
-
- <para>
-
- This then allows the user to
- override the &CONFIG; build variable
- on the command line as necessary:
-
- </para>
-
- <scons_output example="PathVariable">
- <scons_output_command>scons -Q foo.o</scons_output_command>
- <scons_output_command>scons -Q CONFIG=__ROOT__/usr/local/etc/other_config foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- By default, &PathVariable; checks to make sure
- that the specified path exists and generates an error if it
- doesn't:
-
- </para>
-
- <scons_output example="PathVariable">
- <scons_output_command>scons -Q CONFIG=__ROOT__/does/not/exist foo.o</scons_output_command>
- </scons_output>
-
- <para>
-
- &PathVariable; provides a number of methods
- that you can use to change this behavior.
- If you want to ensure that any specified paths are,
- in fact, files and not directories,
- use the &PathVariable_PathIsFile; method:
-
- </para>
-
- <scons_example name="PathIsFile">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(PathVariable('CONFIG',
- 'Path to configuration file',
- '__ROOT__/etc/my_config',
- PathVariable.PathIsFile))
- env = Environment(variables = vars,
- CPPDEFINES={'CONFIG_FILE' : '"$CONFIG"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="__ROOT__/etc/my_config">
- /opt/location
- </file>
- </scons_example>
-
- <para>
-
- Conversely, to ensure that any specified paths are
- directories and not files,
- use the &PathVariable_PathIsDir; method:
-
- </para>
-
- <scons_example name="PathIsDir">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(PathVariable('DBDIR',
- 'Path to database directory',
- '__ROOT__/var/my_dbdir',
- PathVariable.PathIsDir))
- env = Environment(variables = vars,
- CPPDEFINES={'DBDIR' : '"$DBDIR"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="__ROOT__/var/my_dbdir">
- /opt/location
- </file>
- </scons_example>
-
- <para>
-
- If you want to make sure that any specified paths
- are directories,
- and you would like the directory created
- if it doesn't already exist,
- use the &PathVariable_PathIsDirCreate; method:
-
- </para>
-
- <scons_example name="PathIsDirCreate">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(PathVariable('DBDIR',
- 'Path to database directory',
- '__ROOT__/var/my_dbdir',
- PathVariable.PathIsDirCreate))
- env = Environment(variables = vars,
- CPPDEFINES={'DBDIR' : '"$DBDIR"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="__ROOT__/var/my_dbdir">
- /opt/location
- </file>
- </scons_example>
-
- <para>
-
- Lastly, if you don't care whether the path exists,
- is a file, or a directory,
- use the &PathVariable_PathAccept; method
- to accept any path that the user supplies:
-
- </para>
-
- <scons_example name="PathAccept">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(PathVariable('OUTPUT',
- 'Path to output file or directory',
- None,
- PathVariable.PathAccept))
- env = Environment(variables = vars,
- CPPDEFINES={'OUTPUT' : '"$OUTPUT"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- </section>
-
- <section>
- <title>Enabled/Disabled Path Names: the &PackageVariable; Build Variable Function</title>
-
- <para>
-
- Sometimes you want to give users
- even more control over a path name variable,
- allowing them to explicitly enable or
- disable the path name
- by using <literal>yes</literal> or <literal>no</literal> keywords,
- in addition to allow them
- to supply an explicit path name.
- &SCons; supports the &PackageVariable;
- function to support this:
-
- </para>
-
- <scons_example name="PackageVariable">
- <file name="SConstruct" printme="1">
- vars = Variables('custom.py')
- vars.Add(PackageVariable('PACKAGE',
- 'Location package',
- '__ROOT__/opt/location'))
- env = Environment(variables = vars,
- CPPDEFINES={'PACKAGE' : '"$PACKAGE"'})
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="__ROOT__/opt/location">
- /opt/location
- </file>
- <file name="__ROOT__/usr/local/location">
- /opt/location
- </file>
- </scons_example>
-
- <para>
-
- When the &SConscript; file uses the &PackageVariable; funciton,
- user can now still use the default
- or supply an overriding path name,
- but can now explicitly set the
- specified variable to a value
- that indicates the package should be enabled
- (in which case the default should be used)
- or disabled:
-
- </para>
-
- <scons_output example="PackageVariable">
- <scons_output_command>scons -Q foo.o</scons_output_command>
- <scons_output_command>scons -Q PACKAGE=__ROOT__/usr/local/location foo.o</scons_output_command>
- <scons_output_command>scons -Q PACKAGE=yes foo.o</scons_output_command>
- <scons_output_command>scons -Q PACKAGE=no foo.o</scons_output_command>
- </scons_output>
-
- </section>
-
- </section>
-
- <section>
- <title>Adding Multiple Command-Line Build Variables at Once</title>
-
- <para>
-
- Lastly, &SCons; provides a way to add
- multiple build variables to a &Variables; object at once.
- Instead of having to call the &Add; method
- multiple times,
- you can call the &AddVariables;
- method with a list of build variables
- to be added to the object.
- Each build variable is specified
- as either a tuple of arguments,
- just like you'd pass to the &Add; method itself,
- or as a call to one of the pre-defined
- functions for pre-packaged command-line build variables.
- in any order:
-
- </para>
-
- <scons_example name="AddVariables_1">
- <file name="SConstruct" printme="1">
- vars = Variables()
- vars.AddVariables(
- ('RELEASE', 'Set to 1 to build for release', 0),
- ('CONFIG', 'Configuration file', '/etc/my_config'),
- BoolVariable('warnings', 'compilation with -Wall and similiar', 1),
- EnumVariable('debug', 'debug output and symbols', 'no',
- allowed_values=('yes', 'no', 'full'),
- map={}, ignorecase=0), # case sensitive
- ListVariable('shared',
- 'libraries to build as shared libraries',
- 'all',
- names = list_of_libs),
- PackageVariable('x11',
- 'use X11 installed here (yes = search some places)',
- 'yes'),
- PathVariable('qtdir', 'where the root of Qt is installed', qtdir),
- )
- </file>
- </scons_example>
-
- <para>
- </para>
-
- </section>
-
- <section>
- <title>Handling Unknown Command-Line Build Variables: the &UnknownVariables; Function</title>
-
- <para>
-
- Users may, of course,
- occasionally misspell variable names in their command-line settings.
- &SCons; does not generate an error or warning
- for any unknown variables the users specifies on the command line.
- (This is in no small part because you may be
- processing the arguments directly using the &ARGUMENTS; dictionary,
- and therefore &SCons; can't know in the general case
- whether a given "misspelled" variable is
- really unknown and a potential problem,
- or something that your &SConscript; file
- will handle directly with some Python code.)
-
- </para>
-
- <para>
-
- If, however, you're using a &Variables; object to
- define a specific set of command-line build variables
- that you expect users to be able to set,
- you may want to provide an error
- message or warning of your own
- if the user supplies a variable setting
- that is <emphasis>not</emphasis> among
- the defined list of variable names known to the &Variables; object.
- You can do this by calling the &UnknownVariables;
- method of the &Variables; object:
-
- </para>
-
- <scons_example name="UnknownVariables">
- <file name="SConstruct" printme="1">
- vars = Variables(None)
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- unknown = vars.UnknownVariables()
- if unknown:
- print "Unknown variables:", unknown.keys()
- Exit(1)
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- The &UnknownVariables; method returns a dictionary
- containing the keywords and values
- of any variables the user specified on the command line
- that are <emphasis>not</emphasis>
- among the variables known to the &Variables; object
- (from having been specified using
- the &Variables; object's&Add; method).
- In the examble above,
- we check for whether the dictionary
- returned by the &UnknownVariables; is non-empty,
- and if so print the Python list
- containing the names of the unknwown variables
- and then call the &Exit; function
- to terminate &SCons;:
-
- </para>
-
- <scons_output example="UnknownVariables">
- <scons_output_command>scons -Q NOT_KNOWN=foo</scons_output_command>
- </scons_output>
-
- <para>
-
- Of course, you can process the items in the
- dictionary returned by the &UnknownVariables; function
- in any way appropriate to your build configuration,
- including just printing a warning message
- but not exiting,
- logging an error somewhere,
- etc.
-
- </para>
-
- <para>
-
- Note that you must delay the call of &UnknownVariables;
- until after you have applied the &Variables; object
- to a construction environment
- with the <literal>variables=</literal>
- keyword argument of an &Environment; call.
-
- </para>
-
- </section>
-
- </section>
-
- <section id="sect-command-line-targets">
- <title>Command-Line Targets</title>
-
- <section>
- <title>Fetching Command-Line Targets: the &COMMAND_LINE_TARGETS; Variable</title>
-
- <para>
-
- &SCons; supports a &COMMAND_LINE_TARGETS; variable
- that lets you fetch the list of targets that the
- user specified on the command line.
- You can use the targets to manipulate the
- build in any way you wish.
- As a simple example,
- suppose that you want to print a reminder
- to the user whenever a specific program is built.
- You can do this by checking for the
- target in the &COMMAND_LINE_TARGETS; list:
-
- </para>
-
- <scons_example name="COMMAND_LINE_TARGETS">
- <file name="SConstruct" printme="1">
- if 'bar' in COMMAND_LINE_TARGETS:
- print "Don't forget to copy `bar' to the archive!"
- Default(Program('foo.c'))
- Program('bar.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- <file name="bar.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- Then, running &SCons; with the default target
- works as it always does,
- but explicity specifying the &bar; target
- on the command line generates the warning message:
-
- </para>
-
- <scons_output example="COMMAND_LINE_TARGETS">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q bar</scons_output_command>
- </scons_output>
-
- <para>
-
- Another practical use for the &COMMAND_LINE_TARGETS; variable
- might be to speed up a build
- by only reading certain subsidiary &SConscript;
- files if a specific target is requested.
-
- </para>
-
- </section>
-
- <section>
- <title>Controlling the Default Targets: the &Default; Function</title>
-
- <para>
-
- One of the most basic things you can control
- is which targets &SCons; will build by default--that is,
- when there are no targets specified on the command line.
- As mentioned previously,
- &SCons; will normally build every target
- in or below the current directory
- by default--that is, when you don't
- explicitly specify one or more targets
- on the command line.
- Sometimes, however, you may want
- to specify explicitly that only
- certain programs, or programs in certain directories,
- should be built by default.
- You do this with the &Default; function:
-
- </para>
-
- <scons_example name="Default1">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- env.Program('goodbye.c')
- Default(hello)
- </file>
- <file name="hello.c">
- hello.c
- </file>
- <file name="goodbye.c">
- goodbye.c
- </file>
- </scons_example>
-
- <para>
-
- This &SConstruct; file knows how to build two programs,
- &hello; and &goodbye;,
- but only builds the
- &hello; program by default:
-
- </para>
-
- <scons_output example="Default1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q goodbye</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that, even when you use the &Default;
- function in your &SConstruct; file,
- you can still explicitly specify the current directory
- (<literal>.</literal>) on the command line
- to tell &SCons; to build
- everything in (or below) the current directory:
-
- </para>
-
- <scons_output example="Default1">
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- <para>
-
- You can also call the &Default;
- function more than once,
- in which case each call
- adds to the list of targets to be built by default:
-
- </para>
-
- <scons_example name="Default2">
- <file name="SConstruct" printme="1">
- env = Environment()
- prog1 = env.Program('prog1.c')
- Default(prog1)
- prog2 = env.Program('prog2.c')
- prog3 = env.Program('prog3.c')
- Default(prog3)
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- <file name="prog2.c">
- prog2.c
- </file>
- <file name="prog3.c">
- prog3.c
- </file>
- </scons_example>
-
- <para>
-
- Or you can specify more than one target
- in a single call to the &Default; function:
-
- </para>
-
- <programlisting>
- env = Environment()
- prog1 = env.Program('prog1.c')
- prog2 = env.Program('prog2.c')
- prog3 = env.Program('prog3.c')
- Default(prog1, prog3)
- </programlisting>
-
- <para>
-
- Either of these last two examples
- will build only the
- <application>prog1</application>
- and
- <application>prog3</application>
- programs by default:
-
- </para>
-
- <scons_output example="Default2">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- <para>
-
- You can list a directory as
- an argument to &Default;:
-
- </para>
-
- <scons_example name="Default3">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Program(['prog1/main.c', 'prog1/foo.c'])
- env.Program(['prog2/main.c', 'prog2/bar.c'])
- Default('prog1')
- </file>
- <directory name="prog1"></directory>
- <directory name="prog2"></directory>
- <file name="prog1/main.c">
- int main() { printf("prog1/main.c\n"); }
- </file>
- <file name="prog1/foo.c">
- int foo() { printf("prog1/foo.c\n"); }
- </file>
- <file name="prog2/main.c">
- int main() { printf("prog2/main.c\n"); }
- </file>
- <file name="prog2/bar.c">
- int bar() { printf("prog2/bar.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- In which case only the target(s) in that
- directory will be built by default:
-
- </para>
-
- <scons_output example="Default3">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- <para>
-
- Lastly, if for some reason you don't want
- any targets built by default,
- you can use the Python <literal>None</literal>
- variable:
-
- </para>
-
- <scons_example name="Default4">
- <file name="SConstruct" printme="1">
- env = Environment()
- prog1 = env.Program('prog1.c')
- prog2 = env.Program('prog2.c')
- Default(None)
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- <file name="prog2.c">
- prog2.c
- </file>
- </scons_example>
-
- <para>
-
- Which would produce build output like:
-
- </para>
-
- <scons_output example="Default4">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q .</scons_output_command>
- </scons_output>
-
- <section>
- <title>Fetching the List of Default Targets: the &DEFAULT_TARGETS; Variable</title>
-
- <para>
-
- &SCons; supports a &DEFAULT_TARGETS; variable
- that lets you get at the current list of default targets.
- The &DEFAULT_TARGETS; variable has
- two important differences from the &COMMAND_LINE_TARGETS; variable.
- First, the &DEFAULT_TARGETS; variable is a list of
- internal &SCons; nodes,
- so you need to convert the list elements to strings
- if you want to print them or look for a specific target name.
- Fortunately, you can do this easily
- by using the Python <function>map</function> function
- to run the list through <function>str</function>:
-
- </para>
-
- <scons_example name="DEFAULT_TARGETS_1">
- <file name="SConstruct" printme="1">
- prog1 = Program('prog1.c')
- Default(prog1)
- print "DEFAULT_TARGETS is", map(str, DEFAULT_TARGETS)
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- </scons_example>
-
- <para>
-
- (Keep in mind that all of the manipulation of the
- &DEFAULT_TARGETS; list takes place during the
- first phase when &SCons; is reading up the &SConscript; files,
- which is obvious if
- we leave off the <literal>-Q</literal> flag when we run &SCons;:)
-
- </para>
-
- <scons_output example="DEFAULT_TARGETS_1">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- Second,
- the contents of the &DEFAULT_TARGETS; list change
- in response to calls to the &Default; function,
- as you can see from the following &SConstruct; file:
-
- </para>
-
- <scons_example name="DEFAULT_TARGETS_2">
- <file name="SConstruct" printme="1">
- prog1 = Program('prog1.c')
- Default(prog1)
- print "DEFAULT_TARGETS is now", map(str, DEFAULT_TARGETS)
- prog2 = Program('prog2.c')
- Default(prog2)
- print "DEFAULT_TARGETS is now", map(str, DEFAULT_TARGETS)
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- <file name="prog2.c">
- prog2.c
- </file>
- </scons_example>
-
- <para>
-
- Which yields the output:
-
- </para>
-
- <scons_output example="DEFAULT_TARGETS_2">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- In practice, this simply means that you
- need to pay attention to the order in
- which you call the &Default; function
- and refer to the &DEFAULT_TARGETS; list,
- to make sure that you don't examine the
- list before you've added the default targets
- you expect to find in it.
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Fetching the List of Build Targets, Regardless of Origin: the &BUILD_TARGETS; Variable</title>
-
- <para>
-
- We've already been introduced to the
- &COMMAND_LINE_TARGETS; variable,
- which contains a list of targets specified on the command line,
- and the &DEFAULT_TARGETS; variable,
- which contains a list of targets specified
- via calls to the &Default; method or function.
- Sometimes, however,
- you want a list of whatever targets
- &SCons; will try to build,
- regardless of whether the targets came from the
- command line or a &Default; call.
- You could code this up by hand, as follows:
-
- </para>
-
- <sconstruct>
- if COMMAND_LINE_TARGETS:
- targets = COMMAND_LINE_TARGETS
- else:
- targets = DEFAULT_TARGETS
- </sconstruct>
-
- <para>
-
- &SCons;, however, provides a convenient
- &BUILD_TARGETS; variable
- that eliminates the need for this by-hand manipulation.
- Essentially, the &BUILD_TARGETS; variable
- contains a list of the command-line targets,
- if any were specified,
- and if no command-line targets were specified,
- it contains a list of the targets specified
- via the &Default; method or function.
-
- </para>
-
- <para>
-
- Because &BUILD_TARGETS; may contain a list of &SCons; nodes,
- you must convert the list elements to strings
- if you want to print them or look for a specific target name,
- just like the &DEFAULT_TARGETS; list:
-
- </para>
-
- <scons_example name="BUILD_TARGETS_1">
- <file name="SConstruct" printme="1">
- prog1 = Program('prog1.c')
- Program('prog2.c')
- Default(prog1)
- print "BUILD_TARGETS is", map(str, BUILD_TARGETS)
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- <file name="prog2.c">
- prog2.c
- </file>
- </scons_example>
-
- <para>
-
- Notice how the value of &BUILD_TARGETS;
- changes depending on whether a target is
- specified on the command line:
-
- </para>
-
- <scons_output example="BUILD_TARGETS_1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q prog2</scons_output_command>
- <scons_output_command>scons -Q -c .</scons_output_command>
- </scons_output>
-
- </section>
-
- </section>
diff --git a/doc/user/command-line.xml b/doc/user/command-line.xml
index 1888ac0..2819d3d 100644
--- a/doc/user/command-line.xml
+++ b/doc/user/command-line.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-command-line"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Controlling a Build From the Command Line</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -146,19 +168,26 @@
</para>
-
-
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- ... [build output] ...
- scons: done building targets.
- % <userinput>export SCONSFLAGS="-Q"</userinput>
- % <userinput>scons</userinput>
- ... [build output] ...
- </screen>
+ <scons_example name="commandline_SCONSFLAGS">
+ <file name="SConstruct">
+def b(target, source, env):
+ pass
+def s(target, source, env):
+ return " ... [build output] ..."
+a = Action(b, strfunction = s)
+env = Environment(BUILDERS = {'A' : Builder(action=a)})
+env.A('foo.out', 'foo.in')
+ </file>
+ <file name="foo.in">
+foo.in
+ </file>
+ </scons_example>
+
+ <scons_output example="commandline_SCONSFLAGS" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ <scons_output_command>export SCONSFLAGS="-Q"</scons_output_command>
+ <scons_output_command environment="SCONSFLAGS=-Q">scons</scons_output_command>
+ </scons_output>
<para>
@@ -168,7 +197,7 @@
</para>
<screen>
- $ <userinput>setenv SCONSFLAGS "-Q"</userinput>
+$ <userinput>setenv SCONSFLAGS "-Q"</userinput>
</screen>
<para>
@@ -214,10 +243,10 @@
</para>
- <programlisting>
- if not GetOption('help'):
- SConscript('src/SConscript', export='env')
- </programlisting>
+ <sconstruct>
+if not GetOption('help'):
+ SConscript('src/SConscript', export='env')
+ </sconstruct>
<para>
@@ -283,12 +312,17 @@
</para>
- <programlisting>
- import os
- num_cpu = int(os.environ.get('NUM_CPU', 2))
- SetOption('num_jobs', num_cpu)
- print "running with -j", GetOption('num_jobs')
- </programlisting>
+ <scons_example name="commandline_SetOption">
+ <file name="SConstruct" printme="1">
+import os
+num_cpu = int(os.environ.get('NUM_CPU', 2))
+SetOption('num_jobs', num_cpu)
+print "running with -j", GetOption('num_jobs')
+ </file>
+ <file name="foo.in">
+foo.in
+ </file>
+ </scons_example>
<para>
@@ -310,11 +344,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- running with -j 2
- scons: `.' is up to date.
- </screen>
+ <scons_output example="commandline_SetOption" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -324,12 +356,10 @@
</para>
- <screen>
- % <userinput>export NUM_CPU="4"</userinput>
- % <userinput>scons -Q</userinput>
- running with -j 4
- scons: `.' is up to date.
- </screen>
+ <scons_output example="commandline_SetOption" suffix="2">
+ <scons_output_command>export NUM_CPU="4"</scons_output_command>
+ <scons_output_command environment="NUM_CPU=4">scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -342,15 +372,11 @@
</para>
- <screen>
- % <userinput>scons -Q -j 7</userinput>
- running with -j 7
- scons: `.' is up to date.
- % <userinput>export NUM_CPU="4"</userinput>
- % <userinput>scons -Q -j 3</userinput>
- running with -j 3
- scons: `.' is up to date.
- </screen>
+ <scons_output example="commandline_SetOption" suffix="3">
+ <scons_output_command>scons -Q -j 7</scons_output_command>
+ <scons_output_command>export NUM_CPU="4"</scons_output_command>
+ <scons_output_command environment="NUM_CPU=4">scons -Q -j 3</scons_output_command>
+ </scons_output>
</section>
@@ -600,20 +626,25 @@
</para>
- <programlisting>
- AddOption('--prefix',
- dest='prefix',
- type='string',
- nargs=1,
- action='store',
- metavar='DIR',
- help='installation prefix')
-
- env = Environment(PREFIX = GetOption('prefix'))
-
- installed_foo = env.Install('$PREFIX/usr/bin', 'foo.in')
- Default(installed_foo)
- </programlisting>
+ <scons_example name="commandline_AddOption">
+ <file name="SConstruct" printme="1">
+AddOption('--prefix',
+ dest='prefix',
+ type='string',
+ nargs=1,
+ action='store',
+ metavar='DIR',
+ help='installation prefix')
+
+env = Environment(PREFIX = GetOption('prefix'))
+
+installed_foo = env.Install('$PREFIX/usr/bin', 'foo.in')
+Default(installed_foo)
+ </file>
+ <file name="foo.in">
+foo.in
+ </file>
+ </scons_example>
<para>
@@ -631,10 +662,9 @@
</para>
- <screen>
- % <userinput>scons -Q -n</userinput>
- Install file: "foo.in" as "/usr/bin/foo.in"
- </screen>
+ <scons_output example="commandline_AddOption" suffix="1">
+ <scons_output_command>scons -Q -n</scons_output_command>
+ </scons_output>
<para>
@@ -644,10 +674,9 @@
</para>
- <screen>
- % <userinput>scons -Q -n --prefix=/tmp/install</userinput>
- Install file: "foo.in" as "/tmp/install/usr/bin/foo.in"
- </screen>
+ <scons_output example="commandline_AddOption" suffix="2">
+ <scons_output_command>scons -Q -n --prefix=/tmp/install</scons_output_command>
+ </scons_output>
</section>
@@ -670,7 +699,7 @@
</para>
<screen>
- % <userinput>scons -Q debug=1</userinput>
+% <userinput>scons -Q debug=1</userinput>
</screen>
<para>
@@ -702,13 +731,18 @@
</para>
- <programlisting>
- env = Environment()
- debug = ARGUMENTS.get('debug', 0)
- if int(debug):
- env.Append(CCFLAGS = '-g')
- env.Program('prog.c')
- </programlisting>
+ <scons_example name="commandline_ARGUMENTS">
+ <file name="SConstruct" printme="1">
+env = Environment()
+debug = ARGUMENTS.get('debug', 0)
+if int(debug):
+ env.Append(CCFLAGS = '-g')
+env.Program('prog.c')
+ </file>
+ <file name="prog.c">
+prog.c
+ </file>
+ </scons_example>
<para>
@@ -719,18 +753,12 @@
</para>
- <screen>
- % <userinput>scons -Q debug=0</userinput>
- cc -o prog.o -c prog.c
- cc -o prog prog.o
- % <userinput>scons -Q debug=0</userinput>
- scons: `.' is up to date.
- % <userinput>scons -Q debug=1</userinput>
- cc -o prog.o -c -g prog.c
- cc -o prog prog.o
- % <userinput>scons -Q debug=1</userinput>
- scons: `.' is up to date.
- </screen>
+ <scons_output example="commandline_ARGUMENTS" suffix="1">
+ <scons_output_command>scons -Q debug=0</scons_output_command>
+ <scons_output_command>scons -Q debug=0</scons_output_command>
+ <scons_output_command>scons -Q debug=1</scons_output_command>
+ <scons_output_command>scons -Q debug=1</scons_output_command>
+ </scons_output>
<para>
@@ -792,14 +820,19 @@
</para>
- <programlisting>
- cppdefines = []
- for key, value in ARGLIST:
- if key == 'define':
- cppdefines.append(value)
- env = Environment(CPPDEFINES = cppdefines)
- env.Object('prog.c')
- </programlisting>
+ <scons_example name="commandline_ARGLIST">
+ <file name="SConstruct" printme="1">
+cppdefines = []
+for key, value in ARGLIST:
+ if key == 'define':
+ cppdefines.append(value)
+env = Environment(CPPDEFINES = cppdefines)
+env.Object('prog.c')
+ </file>
+ <file name="prog.c">
+prog.c
+ </file>
+ </scons_example>
<para>
@@ -807,12 +840,10 @@
</para>
- <screen>
- % <userinput>scons -Q define=FOO</userinput>
- cc -o prog.o -c -DFOO prog.c
- % <userinput>scons -Q define=FOO define=BAR</userinput>
- cc -o prog.o -c -DFOO -DBAR prog.c
- </screen>
+ <scons_output example="commandline_ARGLIST" suffix="1">
+ <scons_output_command>scons -Q define=FOO</scons_output_command>
+ <scons_output_command>scons -Q define=FOO define=BAR</scons_output_command>
+ </scons_output>
<para>
@@ -874,13 +905,21 @@
</para>
- <programlisting>
- vars = Variables(None, ARGUMENTS)
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- env.Program(['foo.c', 'bar.c'])
- </programlisting>
+ <scons_example name="commandline_Variables1">
+ <file name="SConstruct" printme="1">
+vars = Variables(None, ARGUMENTS)
+vars.Add('RELEASE', 'Set to 1 to build for release', 0)
+env = Environment(variables = vars,
+ CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
+env.Program(['foo.c', 'bar.c'])
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="bar.c">
+bar.c
+ </file>
+ </scons_example>
<para>
@@ -911,12 +950,9 @@
</para>
- <screen>
- % <userinput>scons -Q RELEASE=1</userinput>
- cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
- cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
- cc -o foo foo.o bar.o
- </screen>
+ <scons_output example="commandline_Variables1" suffix="1">
+ <scons_output_command>scons -Q RELEASE=1</scons_output_command>
+ </scons_output>
<para>
@@ -960,12 +996,14 @@
</para>
- <programlisting>
- vars = Variables(None, ARGUMENTS)
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars)
- Help(vars.GenerateHelpText(env))
- </programlisting>
+ <scons_example name="commandline_Variables_Help">
+ <file name="SConstruct" printme="1">
+vars = Variables(None, ARGUMENTS)
+vars.Add('RELEASE', 'Set to 1 to build for release', 0)
+env = Environment(variables = vars)
+Help(vars.GenerateHelpText(env))
+ </file>
+ </scons_example>
<para>
@@ -974,15 +1012,9 @@
</para>
- <screen>
- % <userinput>scons -Q -h</userinput>
-
- RELEASE: Set to 1 to build for release
- default: 0
- actual: 0
-
- Use scons -H for help about command-line options.
- </screen>
+ <scons_output example="commandline_Variables_Help" suffix="1">
+ <scons_output_command>scons -Q -h</scons_output_command>
+ </scons_output>
<para>
@@ -1011,14 +1043,25 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- env.Program(['foo.c', 'bar.c'])
- Help(vars.GenerateHelpText(env))
- </programlisting>
+ <scons_example name="commandline_Variables_custom_py_1">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add('RELEASE', 'Set to 1 to build for release', 0)
+env = Environment(variables = vars,
+ CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
+env.Program(['foo.c', 'bar.c'])
+Help(vars.GenerateHelpText(env))
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="bar.c">
+bar.c
+ </file>
+ <file name="custom.py">
+RELEASE = 1
+ </file>
+ </scons_example>
<para>
@@ -1027,9 +1070,7 @@
</para>
- <programlisting>
- RELEASE = 1
- </programlisting>
+ <scons_example_file example="commandline_Variables_custom_py_1" name="custom.py"></scons_example_file>
<para>
@@ -1039,12 +1080,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
- cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
- cc -o foo foo.o bar.o
- </screen>
+ <scons_output example="commandline_Variables_custom_py_1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1052,9 +1090,25 @@
</para>
- <programlisting>
- RELEASE = 0
- </programlisting>
+ <scons_example name="commandline_Variables_custom_py_2">
+ <file name="SConstruct">
+ vars = Variables('custom.py')
+ vars.Add('RELEASE', 'Set to 1 to build for release', 0)
+ env = Environment(variables = vars,
+ CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
+ env.Program(['foo.c', 'bar.c'])
+ Help(vars.GenerateHelpText(env))
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="bar.c">
+bar.c
+ </file>
+ <file name="custom.py" printme="1">
+RELEASE = 0
+ </file>
+ </scons_example>
<para>
@@ -1063,12 +1117,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o bar.o -c -DRELEASE_BUILD=0 bar.c
- cc -o foo.o -c -DRELEASE_BUILD=0 foo.c
- cc -o foo foo.o bar.o
- </screen>
+ <scons_output example="commandline_Variables_custom_py_2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1077,7 +1128,7 @@
</para>
<screen>
- vars = Variables('custom.py', ARGUMENTS)
+vars = Variables('custom.py', ARGUMENTS)
</screen>
<para>
@@ -1129,13 +1180,18 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(BoolVariable('RELEASE', 'Set to build for release', 0))
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_BoolVariable">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(BoolVariable('RELEASE', 'Set to build for release', 0))
+env = Environment(variables = vars,
+ CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1146,15 +1202,13 @@
</para>
- <screen>
- % <userinput>scons -Q RELEASE=yes foo.o</userinput>
- cc -o foo.o -c -DRELEASE_BUILD=True foo.c
- </screen>
+ <scons_output example="commandline_BoolVariable" suffix="1">
+ <scons_output_command>scons -Q RELEASE=yes foo.o</scons_output_command>
+ </scons_output>
- <screen>
- % <userinput>scons -Q RELEASE=t foo.o</userinput>
- cc -o foo.o -c -DRELEASE_BUILD=True foo.c
- </screen>
+ <scons_output example="commandline_BoolVariable" suffix="2">
+ <scons_output_command>scons -Q RELEASE=t foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1177,15 +1231,13 @@
</para>
- <screen>
- % <userinput>scons -Q RELEASE=no foo.o</userinput>
- cc -o foo.o -c -DRELEASE_BUILD=False foo.c
- </screen>
+ <scons_output example="commandline_BoolVariable" suffix="3">
+ <scons_output_command>scons -Q RELEASE=no foo.o</scons_output_command>
+ </scons_output>
- <screen>
- % <userinput>scons -Q RELEASE=f foo.o</userinput>
- cc -o foo.o -c -DRELEASE_BUILD=False foo.c
- </screen>
+ <scons_output example="commandline_BoolVariable" suffix="4">
+ <scons_output_command>scons -Q RELEASE=f foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1206,13 +1258,9 @@
</para>
- <screen>
- % <userinput>scons -Q RELEASE=bad_value foo.o</userinput>
-
- scons: *** Error converting option: RELEASE
- Invalid value for boolean option: bad_value
- File "/home/my/project/SConstruct", line 4, in &lt;module&gt;
- </screen>
+ <scons_output example="commandline_BoolVariable" suffix="5">
+ <scons_output_command>scons -Q RELEASE=bad_value foo.o</scons_output_command>
+ </scons_output>
</section>
@@ -1236,14 +1284,19 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue')))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_EnumVariable">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
+ allowed_values=('red', 'green', 'blue')))
+env = Environment(variables = vars,
+ CPPDEFINES={'COLOR' : '"${COLOR}"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1252,14 +1305,11 @@
</para>
- <screen>
- % <userinput>scons -Q COLOR=red foo.o</userinput>
- cc -o foo.o -c -DCOLOR="red" foo.c
- % <userinput>scons -Q COLOR=blue foo.o</userinput>
- cc -o foo.o -c -DCOLOR="blue" foo.c
- % <userinput>scons -Q COLOR=green foo.o</userinput>
- cc -o foo.o -c -DCOLOR="green" foo.c
- </screen>
+ <scons_output example="commandline_EnumVariable" suffix="1">
+ <scons_output_command>scons -Q COLOR=red foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=blue foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=green foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1270,12 +1320,9 @@
</para>
- <screen>
- % <userinput>scons -Q COLOR=magenta foo.o</userinput>
-
- scons: *** Invalid value for option COLOR: magenta. Valid values are: ('red', 'green', 'blue')
- File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
- </screen>
+ <scons_output example="commandline_EnumVariable" suffix="2">
+ <scons_output_command>scons -Q COLOR=magenta foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1291,15 +1338,20 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue'),
- map={'navy':'blue'}))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="EnumVariable_map">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
+ allowed_values=('red', 'green', 'blue'),
+ map={'navy':'blue'}))
+env = Environment(variables = vars,
+ CPPDEFINES={'COLOR' : '"${COLOR}"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1311,10 +1363,9 @@
</para>
- <screen>
- % <userinput>scons -Q COLOR=navy foo.o</userinput>
- cc -o foo.o -c -DCOLOR="blue" foo.c
- </screen>
+ <scons_output example="EnumVariable_map" suffix="1">
+ <scons_output_command>scons -Q COLOR=navy foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1326,20 +1377,11 @@
</para>
- <screen>
- % <userinput>scons -Q COLOR=Red foo.o</userinput>
-
- scons: *** Invalid value for option COLOR: Red. Valid values are: ('red', 'green', 'blue')
- File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
- % <userinput>scons -Q COLOR=BLUE foo.o</userinput>
-
- scons: *** Invalid value for option COLOR: BLUE. Valid values are: ('red', 'green', 'blue')
- File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
- % <userinput>scons -Q COLOR=nAvY foo.o</userinput>
-
- scons: *** Invalid value for option COLOR: nAvY. Valid values are: ('red', 'green', 'blue')
- File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
- </screen>
+ <scons_output example="commandline_EnumVariable" suffix="3">
+ <scons_output_command>scons -Q COLOR=Red foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=BLUE foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=nAvY foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1351,16 +1393,21 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue'),
- map={'navy':'blue'},
- ignorecase=1))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_EnumVariable_ic1">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
+ allowed_values=('red', 'green', 'blue'),
+ map={'navy':'blue'},
+ ignorecase=1))
+env = Environment(variables = vars,
+ CPPDEFINES={'COLOR' : '"${COLOR}"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1368,16 +1415,12 @@
</para>
- <screen>
- % <userinput>scons -Q COLOR=Red foo.o</userinput>
- cc -o foo.o -c -DCOLOR="Red" foo.c
- % <userinput>scons -Q COLOR=BLUE foo.o</userinput>
- cc -o foo.o -c -DCOLOR="BLUE" foo.c
- % <userinput>scons -Q COLOR=nAvY foo.o</userinput>
- cc -o foo.o -c -DCOLOR="blue" foo.c
- % <userinput>scons -Q COLOR=green foo.o</userinput>
- cc -o foo.o -c -DCOLOR="green" foo.c
- </screen>
+ <scons_output example="commandline_EnumVariable_ic1" suffix="1">
+ <scons_output_command>scons -Q COLOR=Red foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=BLUE foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=nAvY foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=green foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1390,16 +1433,21 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
- allowed_values=('red', 'green', 'blue'),
- map={'navy':'blue'},
- ignorecase=2))
- env = Environment(variables = vars,
- CPPDEFINES={'COLOR' : '"${COLOR}"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_EnumVariable_ic2">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(EnumVariable('COLOR', 'Set background color', 'red',
+ allowed_values=('red', 'green', 'blue'),
+ map={'navy':'blue'},
+ ignorecase=2))
+env = Environment(variables = vars,
+ CPPDEFINES={'COLOR' : '"${COLOR}"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1412,14 +1460,11 @@
</para>
- <screen>
- % <userinput>scons -Q COLOR=Red foo.o</userinput>
- cc -o foo.o -c -DCOLOR="red" foo.c
- % <userinput>scons -Q COLOR=nAvY foo.o</userinput>
- cc -o foo.o -c -DCOLOR="blue" foo.c
- % <userinput>scons -Q COLOR=GREEN foo.o</userinput>
- cc -o foo.o -c -DCOLOR="green" foo.c
- </screen>
+ <scons_output example="commandline_EnumVariable_ic2" suffix="1">
+ <scons_output_command>scons -Q COLOR=Red foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=nAvY foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLOR=GREEN foo.o</scons_output_command>
+ </scons_output>
</section>
@@ -1437,14 +1482,19 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(ListVariable('COLORS', 'List of colors', 0,
- ['red', 'green', 'blue']))
- env = Environment(variables = vars,
- CPPDEFINES={'COLORS' : '"${COLORS}"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_ListVariable">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(ListVariable('COLORS', 'List of colors', 0,
+ ['red', 'green', 'blue']))
+env = Environment(variables = vars,
+ CPPDEFINES={'COLORS' : '"${COLORS}"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1455,12 +1505,10 @@
</para>
- <screen>
- % <userinput>scons -Q COLORS=red,blue foo.o</userinput>
- cc -o foo.o -c -DCOLORS="red blue" foo.c
- % <userinput>scons -Q COLORS=blue,green,red foo.o</userinput>
- cc -o foo.o -c -DCOLORS="blue green red" foo.c
- </screen>
+ <scons_output example="commandline_ListVariable" suffix="1">
+ <scons_output_command>scons -Q COLORS=red,blue foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLORS=blue,green,red foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1472,12 +1520,10 @@
</para>
- <screen>
- % <userinput>scons -Q COLORS=all foo.o</userinput>
- cc -o foo.o -c -DCOLORS="red green blue" foo.c
- % <userinput>scons -Q COLORS=none foo.o</userinput>
- cc -o foo.o -c -DCOLORS="" foo.c
- </screen>
+ <scons_output example="commandline_ListVariable" suffix="2">
+ <scons_output_command>scons -Q COLORS=all foo.o</scons_output_command>
+ <scons_output_command>scons -Q COLORS=none foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1486,13 +1532,9 @@
</para>
- <screen>
- % <userinput>scons -Q COLORS=magenta foo.o</userinput>
-
- scons: *** Error converting option: COLORS
- Invalid value(s) for option: magenta
- File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
- </screen>
+ <scons_output example="commandline_ListVariable" suffix="3">
+ <scons_output_command>scons -Q COLORS=magenta foo.o</scons_output_command>
+ </scons_output>
</section>
@@ -1511,15 +1553,26 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(PathVariable('CONFIG',
- 'Path to configuration file',
- '/etc/my_config'))
- env = Environment(variables = vars,
- CPPDEFINES={'CONFIG_FILE' : '"$CONFIG"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_PathVariable">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(PathVariable('CONFIG',
+ 'Path to configuration file',
+ '__ROOT__/etc/my_config'))
+env = Environment(variables = vars,
+ CPPDEFINES={'CONFIG_FILE' : '"$CONFIG"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="__ROOT__/etc/my_config">
+/opt/location
+ </file>
+ <file name="__ROOT__/usr/local/etc/other_config">
+/opt/location
+ </file>
+ </scons_example>
<para>
@@ -1529,12 +1582,10 @@
</para>
- <screen>
- % <userinput>scons -Q foo.o</userinput>
- cc -o foo.o -c -DCONFIG_FILE="/etc/my_config" foo.c
- % <userinput>scons -Q CONFIG=/usr/local/etc/other_config foo.o</userinput>
- scons: `foo.o' is up to date.
- </screen>
+ <scons_output example="commandline_PathVariable" suffix="1">
+ <scons_output_command>scons -Q foo.o</scons_output_command>
+ <scons_output_command>scons -Q CONFIG=__ROOT__/usr/local/etc/other_config foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1544,12 +1595,9 @@
</para>
- <screen>
- % <userinput>scons -Q CONFIG=/does/not/exist foo.o</userinput>
-
- scons: *** Path for option CONFIG does not exist: /does/not/exist
- File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
- </screen>
+ <scons_output example="commandline_PathVariable" suffix="2">
+ <scons_output_command>scons -Q CONFIG=__ROOT__/does/not/exist foo.o</scons_output_command>
+ </scons_output>
<para>
@@ -1561,16 +1609,24 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(PathVariable('CONFIG',
- 'Path to configuration file',
- '/etc/my_config',
- PathVariable.PathIsFile))
- env = Environment(variables = vars,
- CPPDEFINES={'CONFIG_FILE' : '"$CONFIG"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_PathIsFile">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(PathVariable('CONFIG',
+ 'Path to configuration file',
+ '__ROOT__/etc/my_config',
+ PathVariable.PathIsFile))
+env = Environment(variables = vars,
+ CPPDEFINES={'CONFIG_FILE' : '"$CONFIG"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="__ROOT__/etc/my_config">
+/opt/location
+ </file>
+ </scons_example>
<para>
@@ -1580,16 +1636,24 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(PathVariable('DBDIR',
- 'Path to database directory',
- '/var/my_dbdir',
- PathVariable.PathIsDir))
- env = Environment(variables = vars,
- CPPDEFINES={'DBDIR' : '"$DBDIR"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_PathIsDir">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(PathVariable('DBDIR',
+ 'Path to database directory',
+ '__ROOT__/var/my_dbdir',
+ PathVariable.PathIsDir))
+env = Environment(variables = vars,
+ CPPDEFINES={'DBDIR' : '"$DBDIR"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="__ROOT__/var/my_dbdir">
+/opt/location
+ </file>
+ </scons_example>
<para>
@@ -1601,16 +1665,24 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(PathVariable('DBDIR',
- 'Path to database directory',
- '/var/my_dbdir',
- PathVariable.PathIsDirCreate))
- env = Environment(variables = vars,
- CPPDEFINES={'DBDIR' : '"$DBDIR"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_PathIsDirCreate">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(PathVariable('DBDIR',
+ 'Path to database directory',
+ '__ROOT__/var/my_dbdir',
+ PathVariable.PathIsDirCreate))
+env = Environment(variables = vars,
+ CPPDEFINES={'DBDIR' : '"$DBDIR"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="__ROOT__/var/my_dbdir">
+/opt/location
+ </file>
+ </scons_example>
<para>
@@ -1621,16 +1693,21 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(PathVariable('OUTPUT',
- 'Path to output file or directory',
- None,
- PathVariable.PathAccept))
- env = Environment(variables = vars,
- CPPDEFINES={'OUTPUT' : '"$OUTPUT"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_PathAccept">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(PathVariable('OUTPUT',
+ 'Path to output file or directory',
+ None,
+ PathVariable.PathAccept))
+env = Environment(variables = vars,
+ CPPDEFINES={'OUTPUT' : '"$OUTPUT"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
</section>
@@ -1651,15 +1728,26 @@
</para>
- <programlisting>
- vars = Variables('custom.py')
- vars.Add(PackageVariable('PACKAGE',
- 'Location package',
- '/opt/location'))
- env = Environment(variables = vars,
- CPPDEFINES={'PACKAGE' : '"$PACKAGE"'})
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_PackageVariable">
+ <file name="SConstruct" printme="1">
+vars = Variables('custom.py')
+vars.Add(PackageVariable('PACKAGE',
+ 'Location package',
+ '__ROOT__/opt/location'))
+env = Environment(variables = vars,
+ CPPDEFINES={'PACKAGE' : '"$PACKAGE"'})
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="__ROOT__/opt/location">
+/opt/location
+ </file>
+ <file name="__ROOT__/usr/local/location">
+/opt/location
+ </file>
+ </scons_example>
<para>
@@ -1674,16 +1762,12 @@
</para>
- <screen>
- % <userinput>scons -Q foo.o</userinput>
- cc -o foo.o -c -DPACKAGE="/opt/location" foo.c
- % <userinput>scons -Q PACKAGE=/usr/local/location foo.o</userinput>
- cc -o foo.o -c -DPACKAGE="/usr/local/location" foo.c
- % <userinput>scons -Q PACKAGE=yes foo.o</userinput>
- cc -o foo.o -c -DPACKAGE="True" foo.c
- % <userinput>scons -Q PACKAGE=no foo.o</userinput>
- cc -o foo.o -c -DPACKAGE="False" foo.c
- </screen>
+ <scons_output example="commandline_PackageVariable" suffix="1">
+ <scons_output_command>scons -Q foo.o</scons_output_command>
+ <scons_output_command>scons -Q PACKAGE=__ROOT__/usr/local/location foo.o</scons_output_command>
+ <scons_output_command>scons -Q PACKAGE=yes foo.o</scons_output_command>
+ <scons_output_command>scons -Q PACKAGE=no foo.o</scons_output_command>
+ </scons_output>
</section>
@@ -1710,25 +1794,27 @@
</para>
- <programlisting>
- vars = Variables()
- vars.AddVariables(
- ('RELEASE', 'Set to 1 to build for release', 0),
- ('CONFIG', 'Configuration file', '/etc/my_config'),
- BoolVariable('warnings', 'compilation with -Wall and similiar', 1),
- EnumVariable('debug', 'debug output and symbols', 'no',
- allowed_values=('yes', 'no', 'full'),
- map={}, ignorecase=0), # case sensitive
- ListVariable('shared',
- 'libraries to build as shared libraries',
- 'all',
- names = list_of_libs),
- PackageVariable('x11',
- 'use X11 installed here (yes = search some places)',
- 'yes'),
- PathVariable('qtdir', 'where the root of Qt is installed', qtdir),
- )
- </programlisting>
+ <scons_example name="commandline_AddVariables_1">
+ <file name="SConstruct" printme="1">
+vars = Variables()
+vars.AddVariables(
+ ('RELEASE', 'Set to 1 to build for release', 0),
+ ('CONFIG', 'Configuration file', '/etc/my_config'),
+ BoolVariable('warnings', 'compilation with -Wall and similiar', 1),
+ EnumVariable('debug', 'debug output and symbols', 'no',
+ allowed_values=('yes', 'no', 'full'),
+ map={}, ignorecase=0), # case sensitive
+ ListVariable('shared',
+ 'libraries to build as shared libraries',
+ 'all',
+ names = list_of_libs),
+ PackageVariable('x11',
+ 'use X11 installed here (yes = search some places)',
+ 'yes'),
+ PathVariable('qtdir', 'where the root of Qt is installed', qtdir),
+)
+ </file>
+ </scons_example>
<para>
</para>
@@ -1769,17 +1855,22 @@
</para>
- <programlisting>
- vars = Variables(None)
- vars.Add('RELEASE', 'Set to 1 to build for release', 0)
- env = Environment(variables = vars,
- CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
- unknown = vars.UnknownVariables()
- if unknown:
- print "Unknown variables:", unknown.keys()
- Exit(1)
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="commandline_UnknownVariables">
+ <file name="SConstruct" printme="1">
+vars = Variables(None)
+vars.Add('RELEASE', 'Set to 1 to build for release', 0)
+env = Environment(variables = vars,
+ CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
+unknown = vars.UnknownVariables()
+if unknown:
+ print "Unknown variables:", unknown.keys()
+ Exit(1)
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1800,10 +1891,9 @@
</para>
- <screen>
- % <userinput>scons -Q NOT_KNOWN=foo</userinput>
- Unknown variables: ['NOT_KNOWN']
- </screen>
+ <scons_output example="commandline_UnknownVariables" suffix="1">
+ <scons_output_command>scons -Q NOT_KNOWN=foo</scons_output_command>
+ </scons_output>
<para>
@@ -1852,12 +1942,20 @@
</para>
- <programlisting>
- if 'bar' in COMMAND_LINE_TARGETS:
- print "Don't forget to copy `bar' to the archive!"
- Default(Program('foo.c'))
- Program('bar.c')
- </programlisting>
+ <scons_example name="commandline_COMMAND_LINE_TARGETS">
+ <file name="SConstruct" printme="1">
+if 'bar' in COMMAND_LINE_TARGETS:
+ print "Don't forget to copy `bar' to the archive!"
+Default(Program('foo.c'))
+Program('bar.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ <file name="bar.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -1868,15 +1966,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o foo.o -c foo.c
- cc -o foo foo.o
- % <userinput>scons -Q bar</userinput>
- Don't forget to copy `bar' to the archive!
- cc -o bar.o -c bar.c
- cc -o bar bar.o
- </screen>
+ <scons_output example="commandline_COMMAND_LINE_TARGETS" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q bar</scons_output_command>
+ </scons_output>
<para>
@@ -1911,12 +2004,20 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- env.Program('goodbye.c')
- Default(hello)
- </programlisting>
+ <scons_example name="commandline_Default1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+env.Program('goodbye.c')
+Default(hello)
+ </file>
+ <file name="hello.c">
+hello.c
+ </file>
+ <file name="goodbye.c">
+goodbye.c
+ </file>
+ </scons_example>
<para>
@@ -1927,16 +2028,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q</userinput>
- scons: `hello' is up to date.
- % <userinput>scons -Q goodbye</userinput>
- cc -o goodbye.o -c goodbye.c
- cc -o goodbye goodbye.o
- </screen>
+ <scons_output example="commandline_Default1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q goodbye</scons_output_command>
+ </scons_output>
<para>
@@ -1949,13 +2045,9 @@
</para>
- <screen>
- % <userinput>scons -Q .</userinput>
- cc -o goodbye.o -c goodbye.c
- cc -o goodbye goodbye.o
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="commandline_Default1" suffix="2">
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
<para>
@@ -1966,14 +2058,25 @@
</para>
- <programlisting>
- env = Environment()
- prog1 = env.Program('prog1.c')
- Default(prog1)
- prog2 = env.Program('prog2.c')
- prog3 = env.Program('prog3.c')
- Default(prog3)
- </programlisting>
+ <scons_example name="commandline_Default2">
+ <file name="SConstruct" printme="1">
+env = Environment()
+prog1 = env.Program('prog1.c')
+Default(prog1)
+prog2 = env.Program('prog2.c')
+prog3 = env.Program('prog3.c')
+Default(prog3)
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ <file name="prog2.c">
+prog2.c
+ </file>
+ <file name="prog3.c">
+prog3.c
+ </file>
+ </scons_example>
<para>
@@ -1983,11 +2086,11 @@
</para>
<programlisting>
- env = Environment()
- prog1 = env.Program('prog1.c')
- prog2 = env.Program('prog2.c')
- prog3 = env.Program('prog3.c')
- Default(prog1, prog3)
+env = Environment()
+prog1 = env.Program('prog1.c')
+prog2 = env.Program('prog2.c')
+prog3 = env.Program('prog3.c')
+Default(prog1, prog3)
</programlisting>
<para>
@@ -2001,16 +2104,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o prog1.o -c prog1.c
- cc -o prog1 prog1.o
- cc -o prog3.o -c prog3.c
- cc -o prog3 prog3.o
- % <userinput>scons -Q .</userinput>
- cc -o prog2.o -c prog2.c
- cc -o prog2 prog2.o
- </screen>
+ <scons_output example="commandline_Default2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
<para>
@@ -2019,12 +2116,28 @@
</para>
- <programlisting>
- env = Environment()
- env.Program(['prog1/main.c', 'prog1/foo.c'])
- env.Program(['prog2/main.c', 'prog2/bar.c'])
- Default('prog1')
- </programlisting>
+ <scons_example name="commandline_Default3">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Program(['prog1/main.c', 'prog1/foo.c'])
+env.Program(['prog2/main.c', 'prog2/bar.c'])
+Default('prog1')
+ </file>
+ <directory name="prog1"></directory>
+ <directory name="prog2"></directory>
+ <file name="prog1/main.c">
+int main() { printf("prog1/main.c\n"); }
+ </file>
+ <file name="prog1/foo.c">
+int foo() { printf("prog1/foo.c\n"); }
+ </file>
+ <file name="prog2/main.c">
+int main() { printf("prog2/main.c\n"); }
+ </file>
+ <file name="prog2/bar.c">
+int bar() { printf("prog2/bar.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -2033,18 +2146,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o prog1/foo.o -c prog1/foo.c
- cc -o prog1/main.o -c prog1/main.c
- cc -o prog1/main prog1/main.o prog1/foo.o
- % <userinput>scons -Q</userinput>
- scons: `prog1' is up to date.
- % <userinput>scons -Q .</userinput>
- cc -o prog2/bar.o -c prog2/bar.c
- cc -o prog2/main.o -c prog2/main.c
- cc -o prog2/main prog2/main.o prog2/bar.o
- </screen>
+ <scons_output example="commandline_Default3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
<para>
@@ -2055,12 +2161,20 @@
</para>
- <programlisting>
- env = Environment()
- prog1 = env.Program('prog1.c')
- prog2 = env.Program('prog2.c')
- Default(None)
- </programlisting>
+ <scons_example name="commandline_Default4">
+ <file name="SConstruct" printme="1">
+env = Environment()
+prog1 = env.Program('prog1.c')
+prog2 = env.Program('prog2.c')
+Default(None)
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ <file name="prog2.c">
+prog2.c
+ </file>
+ </scons_example>
<para>
@@ -2068,15 +2182,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- scons: *** No targets specified and no Default() targets found. Stop.
- % <userinput>scons -Q .</userinput>
- cc -o prog1.o -c prog1.c
- cc -o prog1 prog1.o
- cc -o prog2.o -c prog2.c
- cc -o prog2 prog2.o
- </screen>
+ <scons_output example="commandline_Default4" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q .</scons_output_command>
+ </scons_output>
<section>
<title>Fetching the List of Default Targets: the &DEFAULT_TARGETS; Variable</title>
@@ -2097,11 +2206,16 @@
</para>
- <programlisting>
- prog1 = Program('prog1.c')
- Default(prog1)
- print "DEFAULT_TARGETS is", map(str, DEFAULT_TARGETS)
- </programlisting>
+ <scons_example name="commandline_DEFAULT_TARGETS_1">
+ <file name="SConstruct" printme="1">
+prog1 = Program('prog1.c')
+Default(prog1)
+print "DEFAULT_TARGETS is", map(str, DEFAULT_TARGETS)
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ </scons_example>
<para>
@@ -2113,16 +2227,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- DEFAULT_TARGETS is ['prog1']
- scons: done reading SConscript files.
- scons: Building targets ...
- cc -o prog1.o -c prog1.c
- cc -o prog1 prog1.o
- scons: done building targets.
- </screen>
+ <scons_output example="commandline_DEFAULT_TARGETS_1" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -2133,14 +2240,22 @@
</para>
- <programlisting>
- prog1 = Program('prog1.c')
- Default(prog1)
- print "DEFAULT_TARGETS is now", map(str, DEFAULT_TARGETS)
- prog2 = Program('prog2.c')
- Default(prog2)
- print "DEFAULT_TARGETS is now", map(str, DEFAULT_TARGETS)
- </programlisting>
+ <scons_example name="commandline_DEFAULT_TARGETS_2">
+ <file name="SConstruct" printme="1">
+prog1 = Program('prog1.c')
+Default(prog1)
+print "DEFAULT_TARGETS is now", map(str, DEFAULT_TARGETS)
+prog2 = Program('prog2.c')
+Default(prog2)
+print "DEFAULT_TARGETS is now", map(str, DEFAULT_TARGETS)
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ <file name="prog2.c">
+prog2.c
+ </file>
+ </scons_example>
<para>
@@ -2148,19 +2263,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- DEFAULT_TARGETS is now ['prog1']
- DEFAULT_TARGETS is now ['prog1', 'prog2']
- scons: done reading SConscript files.
- scons: Building targets ...
- cc -o prog1.o -c prog1.c
- cc -o prog1 prog1.o
- cc -o prog2.o -c prog2.c
- cc -o prog2 prog2.o
- scons: done building targets.
- </screen>
+ <scons_output example="commandline_DEFAULT_TARGETS_2" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -2198,12 +2303,12 @@
</para>
- <programlisting>
- if COMMAND_LINE_TARGETS:
- targets = COMMAND_LINE_TARGETS
- else:
- targets = DEFAULT_TARGETS
- </programlisting>
+ <sconstruct>
+if COMMAND_LINE_TARGETS:
+ targets = COMMAND_LINE_TARGETS
+else:
+ targets = DEFAULT_TARGETS
+ </sconstruct>
<para>
@@ -2228,12 +2333,20 @@
</para>
- <programlisting>
- prog1 = Program('prog1.c')
- Program('prog2.c')
- Default(prog1)
- print "BUILD_TARGETS is", map(str, BUILD_TARGETS)
- </programlisting>
+ <scons_example name="commandline_BUILD_TARGETS_1">
+ <file name="SConstruct" printme="1">
+prog1 = Program('prog1.c')
+Program('prog2.c')
+Default(prog1)
+print "BUILD_TARGETS is", map(str, BUILD_TARGETS)
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ <file name="prog2.c">
+prog2.c
+ </file>
+ </scons_example>
<para>
@@ -2243,23 +2356,14 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- BUILD_TARGETS is ['prog1']
- cc -o prog1.o -c prog1.c
- cc -o prog1 prog1.o
- % <userinput>scons -Q prog2</userinput>
- BUILD_TARGETS is ['prog2']
- cc -o prog2.o -c prog2.c
- cc -o prog2 prog2.o
- % <userinput>scons -Q -c .</userinput>
- BUILD_TARGETS is ['.']
- Removed prog1.o
- Removed prog1
- Removed prog2.o
- Removed prog2
- </screen>
+ <scons_output example="commandline_BUILD_TARGETS_1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q prog2</scons_output_command>
+ <scons_output_command>scons -Q -c .</scons_output_command>
+ </scons_output>
</section>
</section>
+
+</chapter>
diff --git a/doc/user/copyright.in b/doc/user/copyright.in
deleted file mode 100644
index d78221c..0000000
--- a/doc/user/copyright.in
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<blockquote>
- <para>
-
- SCons User's Guide Copyright (c) 2004, 2005, 2006, 2007 Steven Knight
-
- </para>
-</blockquote>
diff --git a/doc/user/copyright.xml b/doc/user/copyright.xml
index d78221c..de8fac9 100644
--- a/doc/user/copyright.xml
+++ b/doc/user/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -30,3 +40,5 @@
</para>
</blockquote>
+
+</legalnotice>
diff --git a/doc/user/cover.jpg b/doc/user/cover.jpg
new file mode 100644
index 0000000..e2c2cb3
--- /dev/null
+++ b/doc/user/cover.jpg
Binary files differ
diff --git a/doc/user/depends.in b/doc/user/depends.in
deleted file mode 100644
index de2e11c..0000000
--- a/doc/user/depends.in
+++ /dev/null
@@ -1,1872 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- So far we've seen how &SCons; handles one-time builds.
- But one of the main functions of a build tool like &SCons;
- is to rebuild only what is necessary
- when source files change--or, put another way,
- &SCons; should <emphasis>not</emphasis>
- waste time rebuilding things that don't need to be rebuilt.
- You can see this at work simply by re-invoking &SCons;
- after building our simple &hello; example:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct">
- Program('hello.c')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The second time it is executed,
- &SCons; realizes that the &hello; program
- is up-to-date with respect to the current &hello_c; source file,
- and avoids rebuilding it.
- You can see this more clearly by naming
- the &hello; program explicitly on the command line:
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that &SCons; reports <literal>"...is up to date"</literal>
- only for target files named explicitly on the command line,
- to avoid cluttering the output.
-
- </para>
-
- <section>
- <title>Deciding When an Input File Has Changed: the &Decider; Function</title>
-
- <para>
-
- Another aspect of avoiding unnecessary rebuilds
- is the fundamental build tool behavior
- of <emphasis>rebuilding</emphasis>
- things when an input file changes,
- so that the built software is up to date.
- By default,
- &SCons; keeps track of this through an
- MD5 &signature;, or checksum, of the contents of each file,
- although you can easily configure
- &SCons; to use the
- modification times (or time stamps)
- instead.
- You can even specify your own Python function
- for deciding if an input file has changed.
-
- </para>
-
- <section>
- <title>Using MD5 Signatures to Decide if a File Has Changed</title>
-
- <para>
-
- By default,
- &SCons; keeps track of whether a file has changed
- based on an MD5 checksum of the file's contents,
- not the file's modification time.
- This means that you may be surprised by the
- default &SCons; behavior if you are used to the
- &Make; convention of forcing
- a rebuild by updating the file's modification time
- (using the &touch; command, for example):
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>touch hello.c</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- Even though the file's modification time has changed,
- &SCons; realizes that the contents of the
- &hello_c; file have <emphasis>not</emphasis> changed,
- and therefore that the &hello; program
- need not be rebuilt.
- This avoids unnecessary rebuilds when,
- for example, someone rewrites the
- contents of a file without making a change.
- But if the contents of the file really do change,
- then &SCons; detects the change
- and rebuilds the program as required:
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF hello.c]">edit hello.c</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that you can, if you wish,
- specify this default behavior
- (MD5 signatures) explicitly
- using the &Decider; function as follows:
-
- </para>
-
- <sconstruct>
- Program('hello.c')
- Decider('MD5')
- </sconstruct>
-
- <para>
-
- You can also use the string <literal>'content'</literal>
- as a synonym for <literal>'MD5'</literal>
- when calling the &Decider; function.
-
- </para>
-
- <section>
- <title>Ramifications of Using MD5 Signatures</title>
-
- <para>
-
- Using MD5 signatures to decide if an input file has changed
- has one surprising benefit:
- if a source file has been changed
- in such a way that the contents of the
- rebuilt target file(s)
- will be exactly the same as the last time
- the file was built,
- then any "downstream" target files
- that depend on the rebuilt-but-not-changed target
- file actually need not be rebuilt.
-
- </para>
-
- <para>
-
- So if, for example,
- a user were to only change a comment in a &hello_c; file,
- then the rebuilt &hello_o; file
- would be exactly the same as the one previously built
- (assuming the compiler doesn't put any build-specific
- information in the object file).
- &SCons; would then realize that it would not
- need to rebuild the &hello; program as follows:
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command output=" [CHANGE A COMMENT IN hello.c]" edit="STRIP CCCOM line">edit hello.c</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- In essence, &SCons;
- "short-circuits" any dependent builds
- when it realizes that a target file
- has been rebuilt to exactly the same file as the last build.
- This does take some extra processing time
- to read the contents of the target (&hello_o;) file,
- but often saves time when the rebuild that was avoided
- would have been time-consuming and expensive.
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Using Time Stamps to Decide If a File Has Changed</title>
-
- <para>
-
- If you prefer, you can
- configure &SCons; to use the modification time
- of a file, not the file contents,
- when deciding if a target needs to be rebuilt.
- &SCons; gives you two ways to use time stamps
- to decide if an input file has changed
- since the last time a target has been built.
-
- </para>
-
- <para>
-
- The most familiar way to use time stamps
- is the way &Make; does:
- that is, have &SCons; decide
- that a target must be rebuilt
- if a source file's modification time is
- <emphasis>newer</emphasis>
- than the target file.
- To do this, call the &Decider;
- function as follows:
-
- </para>
-
- <scons_example name="newer">
- <file name="SConstruct" printme="1">
- Object('hello.c')
- Decider('timestamp-newer')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- This makes &SCons; act like &Make;
- when a file's modification time is updated
- (using the &touch; command, for example):
-
- </para>
-
- <scons_output example="newer" os="posix">
- <scons_output_command>scons -Q hello.o</scons_output_command>
- <scons_output_command>touch hello.c</scons_output_command>
- <scons_output_command>scons -Q hello.o</scons_output_command>
- </scons_output>
-
- <para>
-
- And, in fact, because this behavior is the same
- as the behavior of &Make;,
- you can also use the string <literal>'make'</literal>
- as a synonym for <literal>'timestamp-newer'</literal>
- when calling the &Decider; function:
-
- </para>
-
- <sconstruct>
- Object('hello.c')
- Decider('make')
- </sconstruct>
-
- <para>
-
- One drawback to using times stamps exactly like &Make;
- is that if an input file's modification time suddenly
- becomes <emphasis>older</emphasis> than a target file,
- the target file will not be rebuilt.
- This can happen if an old copy of a source file is restored
- from a backup archive, for example.
- The contents of the restored file will likely be different
- than they were the last time a dependent target was built,
- but the target won't be rebuilt
- because the modification time of the source file
- is not newer than the target.
-
- </para>
-
- <para>
-
- Because &SCons; actually stores information
- about the source files' time stamps whenever a target is built,
- it can handle this situation by checking for
- an exact match of the source file time stamp,
- instead of just whether or not the source file
- is newer than the target file.
- To do this, specify the argument
- <literal>'timestamp-match'</literal>
- when calling the &Decider; function:
-
- </para>
-
- <scons_example name="match">
- <file name="SConstruct" printme="1">
- Object('hello.c')
- Decider('timestamp-match')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- When configured this way,
- &SCons; will rebuild a target whenever
- a source file's modification time has changed.
- So if we use the <literal>touch -t</literal>
- option to change the modification time of
- &hello_c; to an old date (January 1, 1989),
- &SCons; will still rebuild the target file:
-
- </para>
-
- <scons_output example="match" os="posix">
- <scons_output_command>scons -Q hello.o</scons_output_command>
- <scons_output_command>touch -t 198901010000 hello.c</scons_output_command>
- <scons_output_command>scons -Q hello.o</scons_output_command>
- </scons_output>
-
- <para>
-
- In general, the only reason to prefer
- <literal>timestamp-newer</literal>
- instead of
- <literal>timestamp-match</literal>,
- would be if you have some specific reason
- to require this &Make;-like behavior of
- not rebuilding a target when an otherwise-modified
- source file is older.
-
- </para>
-
- </section>
-
- <section>
- <title>Deciding If a File Has Changed Using Both MD Signatures and Time Stamps</title>
-
- <para>
-
- As a performance enhancement,
- &SCons; provides a way to use
- MD5 checksums of file contents
- but to read those contents
- only when the file's timestamp has changed.
- To do this, call the &Decider;
- function with <literal>'MD5-timestamp'</literal>
- argument as follows:
-
- </para>
-
- <scons_example name="MD5-timestamp">
- <file name="SConstruct" printme="1">
- Program('hello.c')
- Decider('MD5-timestamp')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- So configured, &SCons; will still behave like
- it does when using <literal>Decider('MD5')</literal>:
-
- </para>
-
- <!--
-
- We want to generate the output as follows,
- but our "surrogate" system for generating the
- output seems to get this wrong.
- Just in-line the output for now.
-
- <scons_output example="MD5-timestamp" os="posix">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>touch hello.c</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF hello.c]">edit hello.c</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>touch hello.c</userinput>
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- % <userinput>edit hello.c</userinput>
- [CHANGE THE CONTENTS OF hello.c]
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
-
- <para>
-
- However, the second call to &SCons; in the above output,
- when the build is up-to-date,
- will have been performed by simply looking at the
- modification time of the &hello_c; file,
- not by opening it and performing
- an MD5 checksum calcuation on its contents.
- This can significantly speed up many up-to-date builds.
-
- </para>
-
- <para>
-
- The only drawback to using
- <literal>Decider('MD5-timestamp')</literal>
- is that &SCons; will <emphasis>not</emphasis>
- rebuild a target file if a source file was modified
- within one second of the last time &SCons; built the file.
- While most developers are programming,
- this isn't a problem in practice,
- since it's unlikely that someone will have built
- and then thought quickly enough to make a substantive
- change to a source file within one second.
- Certain build scripts or
- continuous integration tools may, however,
- rely on the ability to apply changes to files
- automatically and then rebuild as quickly as possible,
- in which case use of
- <literal>Decider('MD5-timestamp')</literal>
- may not be appropriate.
-
- </para>
-
- </section>
-
- <section>
- <title>Writing Your Own Custom &Decider; Function</title>
-
- <para>
-
- The different string values that we've passed to
- the &Decider; function are essentially used by &SCons;
- to pick one of several specific internal functions
- that implement various ways of deciding if a dependency
- (usually a source file)
- has changed since a target file has been built.
- As it turns out,
- you can also supply your own function
- to decide if a dependency has changed.
-
- </para>
-
- <para>
-
- For example, suppose we have an input file
- that contains a lot of data,
- in some specific regular format,
- that is used to rebuild a lot of different target files,
- but each target file really only depends on
- one particular section of the input file.
- We'd like to have each target file depend on
- only its section of the input file.
- However, since the input file may contain a lot of data,
- we want to open the input file only if its timestamp has changed.
- This could be done with a custom
- &Decider; function that might look something like this:
-
- </para>
-
- <scons_example name="function">
- <file name="SConstruct" printme="1">
- Program('hello.c')
- def decide_if_changed(dependency, target, prev_ni):
- if self.get_timestamp() != prev_ni.timestamp:
- dep = str(dependency)
- tgt = str(target)
- if specific_part_of_file_has_changed(dep, tgt):
- return True
- return False
- Decider(decide_if_changed)
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Note that in the function definition,
- the <varname>dependency</varname>
- (input file) is the first argument,
- and then the &target;.
- Both of these are passed to the functions as
- SCons &Node; objects,
- which we convert to strings using the Python
- <function>str()</function>.
-
- </para>
-
- <para>
-
- The third argument, <varname>prev_ni</varname>,
- is an object that holds the
- signature or timestamp information
- that was recorded about the dependency
- the last time the target was built.
- A <varname>prev_ni</varname> object can hold
- different information,
- depending on the type of thing that the
- <varname>dependency</varname> argument represents.
- For normal files,
- the <varname>prev_ni</varname> object
- has the following attributes:
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>.csig</term>
-
- <listitem>
- <para>
- The <emphasis>content signature</emphasis>,
- or MD5 checksum, of the contents of the
- <varname>dependency</varname>
- file the list time the &target; was built.
- </para>
- </listitem>
-
- </varlistentry>
-
- <varlistentry>
- <term>.size</term>
-
- <listitem>
- <para>
- The size in bytes of the <varname>dependency</varname>
- file the list time the target was built.
- </para>
- </listitem>
-
- </varlistentry>
-
- <varlistentry>
- <term>.timestamp</term>
-
- <listitem>
- <para>
- The modification time of the <varname>dependency</varname>
- file the list time the &target; was built.
- </para>
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- <para>
-
- Note that ignoring some of the arguments
- in your custom &Decider; function
- is a perfectly normal thing to do,
- if they don't impact the way you want to
- decide if the dependency file has changed.
-
- </para>
-
- <para>
-
- Another thing to look out for is the fact that the three
- attributes above may not be present at the time of the first run.
- Without any prior build, no targets have been created and no
- <filename>.sconsign</filename> DB file exists yet.
- So, you should always check whether the
- <varname>prev_ni</varname> attribute in question is available.
-
- </para>
-
- <para>
-
- We finally present a small example for a
- <varname>csig</varname>-based decider function. Note how the
- signature information for the <varname>dependency</varname> file
- has to get initialized via <function>get_csig</function>
- during each function call (this is mandatory!).
-
- </para>
-
- <sconstruct>
- env = Environment()
-
- def config_file_decider(dependency, target, prev_ni):
- import os.path
-
- # We always have to init the .csig value...
- dep_csig = dependency.get_csig()
- # .csig may not exist, because no target was built yet...
- if 'csig' not in dir(prev_ni):
- return True
- # Target file may not exist yet
- if not os.path.exists(str(target.abspath)):
- return True
- if dep_csig != prev_ni.csig:
- # Some change on source file => update installed one
- return True
- return False
-
- def update_file():
- f = open("test.txt","a")
- f.write("some line\n")
- f.close()
-
- update_file()
-
- # Activate our own decider function
- env.Decider(config_file_decider)
-
- env.Install("install","test.txt")
- </sconstruct>
-
- </section>
-
- <section>
- <title>Mixing Different Ways of Deciding If a File Has Changed</title>
-
- <para>
-
- The previous examples have all demonstrated calling
- the global &Decider; function
- to configure all dependency decisions that &SCons; makes.
- Sometimes, however, you want to be able to configure
- different decision-making for different targets.
- When that's necessary, you can use the
- <function>env.Decider</function>
- method to affect only the configuration
- decisions for targets built with a
- specific construction environment.
-
- </para>
-
- <para>
-
- For example, if we arbitrarily want to build
- one program using MD5 checkums
- and another using file modification times
- from the same source
- we might configure it this way:
-
- </para>
-
- <scons_example name="mixing">
- <file name="SConstruct" printme="1">
- env1 = Environment(CPPPATH = ['.'])
- env2 = env1.Clone()
- env2.Decider('timestamp-match')
- env1.Program('prog-MD5', 'program1.c')
- env2.Program('prog-timestamp', 'program2.c')
- </file>
- <file name="program1.c">
- #include "inc.h"
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="program2.c">
- #include "inc.h"
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="inc.h">
- #define INC 1
- </file>
- </scons_example>
-
- <para>
-
- If both of the programs include the same
- <filename>inc.h</filename> file,
- then updating the modification time of
- <filename>inc.h</filename>
- (using the &touch; command)
- will cause only <filename>prog-timestamp</filename>
- to be rebuilt:
-
- </para>
-
- <scons_output example="mixing" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>touch inc.h</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- </section>
-
- <section>
- <title>Older Functions for Deciding When an Input File Has Changed</title>
-
- <para>
-
- &SCons; still supports two functions that used to be the
- primary methods for configuring the
- decision about whether or not an input file has changed.
- These functions have been officially deprecated
- as &SCons; version 2.0,
- and their use is discouraged,
- mainly because they rely on a somewhat
- confusing distinction between how
- source files and target files are handled.
- These functions are documented here mainly in case you
- encounter them in older &SConscript; files.
-
- </para>
-
- <section>
- <title>The &SourceSignatures; Function</title>
-
- <para>
-
- The &SourceSignatures; function is fairly straightforward,
- and supports two different argument values
- to configure whether source file changes should be decided
- using MD5 signatures:
-
- </para>
-
- <sconstruct>
- Program('hello.c')
- SourceSignatures('MD5')
- </sconstruct>
-
- <para>
-
- Or using time stamps:
-
- </para>
-
- <sconstruct>
- Program('hello.c')
- SourceSignatures('timestamp')
- </sconstruct>
-
- <para>
-
- These are roughly equivalent to specifying
- <function>Decider('MD5')</function>
- or
- <function>Decider('timestamp-match')</function>,
- respectively,
- although it only affects how SCons makes
- decisions about dependencies on
- <emphasis>source</emphasis> files--that is,
- files that are not built from any other files.
-
- </para>
-
- </section>
-
- <section>
- <title>The &TargetSignatures; Function</title>
-
- <para>
-
- The &TargetSignatures; function
- specifies how &SCons; decides
- when a target file has changed
- <emphasis>when it is used as a
- dependency of (input to) another target</emphasis>--that is,
- the &TargetSignatures; function configures
- how the signatures of "intermediate" target files
- are used when deciding if a "downstream" target file
- must be rebuilt.
- <footnote><para>
- This easily-overlooked distinction between
- how &SCons; decides if the target itself must be rebuilt
- and how the target is then used to decide if a different
- target must be rebuilt is one of the confusing
- things that has led to the &TargetSignatures;
- and &SourceSignatures; functions being
- replaced by the simpler &Decider; function.
- </para></footnote>
-
- </para>
-
- <para>
-
- The &TargetSignatures; function supports the same
- <literal>'MD5'</literal> and <literal>'timestamp'</literal>
- argument values that are supported by the &SourceSignatures;,
- with the same meanings, but applied to target files.
- That is, in the example:
-
- </para>
-
- <sconstruct>
- Program('hello.c')
- TargetSignatures('MD5')
- </sconstruct>
-
- <para>
-
- The MD5 checksum of the &hello_o; target file
- will be used to decide if it has changed since the last
- time the "downstream" &hello; target file was built.
- And in the example:
-
- </para>
-
- <sconstruct>
- Program('hello.c')
- TargetSignatures('timestamp')
- </sconstruct>
-
- <para>
-
- The modification time of the &hello_o; target file
- will be used to decide if it has changed since the last
- time the "downstream" &hello; target file was built.
-
- </para>
-
- <para>
-
- The &TargetSignatures; function supports
- two additional argument values:
- <literal>'source'</literal> and <literal>'build'</literal>.
- The <literal>'source'</literal> argument
- specifies that decisions involving
- whether target files have changed
- since a previous build
- should use the same behavior
- for the decisions configured for source files
- (using the &SourceSignatures; function).
- So in the example:
-
- </para>
-
- <sconstruct>
- Program('hello.c')
- TargetSignatures('source')
- SourceSignatures('timestamp')
- </sconstruct>
-
- <para>
-
- All files, both targets and sources,
- will use modification times
- when deciding if an input file
- has changed since the last
- time a target was built.
-
- </para>
-
- <para>
-
- Lastly, the <literal>'build'</literal> argument
- specifies that &SCons; should examine
- the build status of a target file
- and always rebuild a "downstream" target
- if the target file was itself rebuilt,
- without re-examining the contents or timestamp
- of the newly-built target file.
- If the target file was not rebuilt during
- this &scons; invocation,
- then the target file will be examined
- the same way as configured by
- the &SourceSignature; call
- to decide if it has changed.
-
- </para>
-
- <para>
-
- This mimics the behavior of
- <literal>build signatures</literal>
- in earlier versions of &SCons;.
- A &buildsignature; re-combined
- signatures of all the input files
- that went into making the target file,
- so that the target file itself
- did not need to have its contents read
- to compute an MD5 signature.
- This can improve performance for some configurations,
- but is generally not as effective as using
- <literal>Decider('MD5-timestamp')</literal>.
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Implicit Dependencies: The &cv-CPPPATH; Construction Variable</title>
-
- <para>
-
- Now suppose that our "Hello, World!" program
- actually has an <literal>#include</literal> line
- to include the &hello_h; file in the compilation:
-
- </para>
-
- <scons_example name="include">
- <file name="SConstruct">
- Program('hello.c', CPPPATH = '.')
- </file>
- <file name="hello.c" printme="1">
- #include &lt;hello.h&gt;
- int
- main()
- {
- printf("Hello, %s!\n", string);
- }
- </file>
- <file name="hello.h">
- #define string "world"
- </file>
- </scons_example>
-
- <para>
-
- And, for completeness, the &hello_h; file looks like this:
-
- </para>
-
- <scons_example_file example="include" name="hello.h">
- </scons_example_file>
-
- <para>
-
- In this case, we want &SCons; to recognize that,
- if the contents of the &hello_h; file change,
- the &hello; program must be recompiled.
- To do this, we need to modify the
- &SConstruct; file like so:
-
- </para>
-
- <scons_example_file example="include" name="SConstruct">
- </scons_example_file>
-
- <para>
-
- The &cv-link-CPPPATH; value
- tells &SCons; to look in the current directory
- (<literal>'.'</literal>)
- for any files included by C source files
- (<filename>.c</filename> or <filename>.h</filename> files).
- With this assignment in the &SConstruct; file:
-
- </para>
-
- <scons_output example="include" os="posix">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF hello.h]">edit hello.h</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- First, notice that &SCons;
- added the <literal>-I.</literal> argument
- from the &cv-CPPPATH; variable
- so that the compilation would find the
- &hello_h; file in the local directory.
-
- </para>
-
- <para>
-
- Second, realize that &SCons; knows that the &hello;
- program must be rebuilt
- because it scans the contents of
- the &hello_c; file
- for the <literal>#include</literal> lines that indicate
- another file is being included in the compilation.
- &SCons; records these as
- <emphasis>implicit dependencies</emphasis>
- of the target file,
- Consequently,
- when the &hello_h; file changes,
- &SCons; realizes that the &hello_c; file includes it,
- and rebuilds the resulting &hello; program
- that depends on both the &hello_c; and &hello_h; files.
-
- </para>
-
- <para>
-
- Like the &cv-link-LIBPATH; variable,
- the &cv-CPPPATH; variable
- may be a list of directories,
- or a string separated by
- the system-specific path separation character
- (':' on POSIX/Linux, ';' on Windows).
- Either way, &SCons; creates the
- right command-line options
- so that the following example:
-
- </para>
-
- <scons_example name="ex5">
- <file name="SConstruct" printme="1">
- Program('hello.c', CPPPATH = ['include', '/home/project/inc'])
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Will look like this on POSIX or Linux:
-
- </para>
-
- <scons_output example="ex5" os="posix">
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- And like this on Windows:
-
- </para>
-
- <scons_output example="ex5" os="win32">
- <scons_output_command>scons -Q hello.exe</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Caching Implicit Dependencies</title>
-
- <para>
-
- Scanning each file for <literal>#include</literal> lines
- does take some extra processing time.
- When you're doing a full build of a large system,
- the scanning time is usually a very small percentage
- of the overall time spent on the build.
- You're most likely to notice the scanning time,
- however, when you <emphasis>rebuild</emphasis>
- all or part of a large system:
- &SCons; will likely take some extra time to "think about"
- what must be built before it issues the
- first build command
- (or decides that everything is up to date
- and nothing must be rebuilt).
-
- <!--
- Isn't this expensive? The answer is, it depends. If you do a full build of a
- large system, the scanning time is insignificant. If you do a rebuild of a
- large system, then Cons will spend a fair amount of time thinking about it
- before it decides that nothing has to be done (although not necessarily more
- time than make!). The good news is that Cons makes it very easy to
- intelligently subset your build, when you are working on localized changes.
- -->
-
- </para>
-
- <para>
-
- In practice, having &SCons; scan files saves time
- relative to the amount of potential time
- lost to tracking down subtle problems
- introduced by incorrect dependencies.
- Nevertheless, the "waiting time"
- while &SCons; scans files can annoy
- individual developers waiting for their builds to finish.
- Consequently, &SCons; lets you cache
- the implicit dependencies
- that its scanners find,
- for use by later builds.
- You can do this by specifying the
- &implicit-cache; option on the command line:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q --implicit-cache hello</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- If you don't want to specify &implicit-cache;
- on the command line each time,
- you can make it the default behavior for your build
- by setting the &implicit_cache; option
- in an &SConscript; file:
-
- </para>
-
- <sconstruct>
- SetOption('implicit_cache', 1)
- </sconstruct>
-
- <para>
-
- &SCons; does not cache implicit dependencies like this by default
- because the &implicit-cache; causes &SCons; to simply use the implicit
- dependencies stored during the last run, without any checking
- for whether or not those dependencies are still correct.
- Specifically, this means &implicit-cache; instructs &SCons;
- to <emphasis>not</emphasis> rebuild "correctly" in the
- following cases:
-
-
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
-
- When &implicit-cache; is used, &SCons; will ignore any changes that
- may have been made to search paths
- (like &cv-CPPPATH; or &cv-LIBPATH;,).
- This can lead to &SCons; not rebuilding a file if a change to
- &cv-CPPPATH; would normally cause a different, same-named file from
- a different directory to be used.
-
- </para>
- </listitem>
-
- <listitem>
- <para>
-
- When &implicit-cache; is used, &SCons; will not detect if a
- same-named file has been added to a directory that is earlier in
- the search path than the directory in which the file was found
- last time.
-
- </para>
- </listitem>
-
- </itemizedlist>
-
- <section>
- <title>The &implicit-deps-changed; Option</title>
-
- <para>
-
- When using cached implicit dependencies,
- sometimes you want to "start fresh"
- and have &SCons; re-scan the files
- for which it previously cached the dependencies.
- For example,
- if you have recently installed a new version of
- external code that you use for compilation,
- the external header files will have changed
- and the previously-cached implicit dependencies
- will be out of date.
- You can update them by
- running &SCons; with the &implicit-deps-changed; option:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q --implicit-deps-changed hello</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- In this case, &SCons; will re-scan all of the implicit dependencies
- and cache updated copies of the information.
-
- </para>
-
- </section>
-
- <section>
- <title>The &implicit-deps-unchanged; Option</title>
-
- <para>
-
- By default when caching dependencies,
- &SCons; notices when a file has been modified
- and re-scans the file for any updated
- implicit dependency information.
- Sometimes, however, you may want
- to force &SCons; to use the cached implicit dependencies,
- even if the source files changed.
- This can speed up a build for example,
- when you have changed your source files
- but know that you haven't changed
- any <literal>#include</literal> lines.
- In this case,
- you can use the &implicit-deps-unchanged; option:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q --implicit-deps-unchanged hello</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- In this case,
- &SCons; will assume that the cached implicit
- dependencies are correct and
- will not bother to re-scan changed files.
- For typical builds after small,
- incremental changes to source files,
- the savings may not be very big,
- but sometimes every bit of
- improved performance counts.
-
- </para>
-
- </section>
-
- <!--
-
- <section>
- <title>XXX max drift</title>
-
- XXX SetOption('max_drift')
-
- </section>
-
- -->
-
- </section>
-
- <section>
- <title>Explicit Dependencies: the &Depends; Function</title>
-
- <para>
-
- Sometimes a file depends on another file
- that is not detected by an &SCons; scanner.
- For this situation,
- &SCons; allows you to specific explicitly that one file
- depends on another file,
- and must be rebuilt whenever that file changes.
- This is specified using the &Depends; method:
-
- </para>
-
- <programlisting>
- hello = Program('hello.c')
- Depends(hello, 'other_file')
- </programlisting>
-
- <!-- XXX mention that you can use arrays for target and source? -->
-
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -c hello.c -o hello.o
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- % <userinput>edit other_file</userinput>
- [CHANGE THE CONTENTS OF other_file]
- % <userinput>scons -Q hello</userinput>
- cc -c hello.c -o hello.o
- cc -o hello hello.o
- </screen>
-
- <para>
-
- Note that the dependency
- (the second argument to &Depends;)
- may also be a list of Node objects
- (for example, as returned by a call to a Builder):
-
- </para>
-
- <programlisting>
- hello = Program('hello.c')
- goodbye = Program('goodbye.c')
- Depends(hello, goodbye)
- </programlisting>
-
- <para>
-
- in which case the dependency or dependencies
- will be built before the target(s):
-
- </para>
-
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -c goodbye.c -o goodbye.o
- cc -o goodbye goodbye.o
- cc -c hello.c -o hello.o
- cc -o hello hello.o
- </screen>
-
- </section>
-
- <section>
- <title>Dependencies From External Files: the &ParseDepends;
- Function</title>
-
- <para>
-
- &SCons; has built-in scanners for a number of languages. Sometimes
- these scanners fail to extract certain implicit dependencies due
- to limitations of the scanner implementation.
-
- </para>
-
- <para>
-
- The following example illustrates a case where the built-in C
- scanner is unable to extract the implicit dependency on a header
- file.
-
- </para>
-
- <scons_example name="macroinc">
- <file name="hello.c" printme="1">
- #define FOO_HEADER &lt;foo.h&gt;
- #include FOO_HEADER
-
- int main() {
- return FOO;
- }
- </file>
- <file name="SConstruct">
- Program('hello', 'hello.c', CPPPATH='.')
- </file>
- <file name="foo.h">
- #define FOO 42
- </file>
- </scons_example>
-
- <scons_output example="macroinc" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command output=" [CHANGE CONTENTS OF foo.h]"
- >edit foo.h</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Apparently, the scanner does not know about the header dependency.
- Being not a full-fledged C preprocessor, the scanner does not
- expand the macro.
-
- </para>
-
- <para>
-
- In these cases, you may also use the compiler to extract the
- implicit dependencies. &ParseDepends; can parse the contents of
- the compiler output in the style of &Make;, and explicitly
- establish all of the listed dependencies.
-
- </para>
-
- <para>
-
- The following example uses &ParseDepends; to process a compiler
- generated dependency file which is generated as a side effect
- during compilation of the object file:
-
- </para>
-
- <!-- XXX The ParseDepends example below fakes proper working by a
- priori specification of the dependency file. The produced hello.d
- file is not found (or used) for unknown reasons. -->
-
- <scons_example name="parsedep">
- <file name="hello.c">
- #define FOO_HEADER &lt;foo.h&gt;
- #include FOO_HEADER
-
- int main() {
- return FOO;
- }
- </file>
- <file name="SConstruct" printme="1">
- obj = Object('hello.c', CCFLAGS='-MD -MF hello.d', CPPPATH='.')
- SideEffect('hello.d', obj)
- ParseDepends('hello.d')
- Program('hello', obj)
- </file>
- <file name="foo.h">
- #define FOO 42
- </file>
- <file name="hello.d">
- hello.o: hello.c foo.h
- </file>
- </scons_example>
-
- <scons_output example="parsedep" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command output=" [CHANGE CONTENTS OF foo.h]"
- >edit foo.h</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Parsing dependencies from a compiler-generated
- <filename>.d</filename> file has a chicken-and-egg problem, that
- causes unnecessary rebuilds:
-
- </para>
-
- <scons_example name="parsedeprebuild">
- <file name="hello.c">
- #define FOO_HEADER &lt;foo.h&gt;
- #include FOO_HEADER
-
- int main() {
- return FOO;
- }
- </file>
- <file name="SConstruct">
- obj = Object('hello.c', CCFLAGS='-MD -MF hello.d', CPPPATH='.')
- SideEffect('hello.d', obj)
- ParseDepends('hello.d')
- Program('hello', obj)
- </file>
- <file name="foo.h">
- #define FOO 42
- </file>
- </scons_example>
-
- <!--
- <scons_output example="parsedeprebuild" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -MD -MF hello.d -I. hello.c
- cc -o hello hello.o
- % <userinput>scons -Q --debug=explain</userinput>
- scons: rebuilding `hello.o' because `foo.h' is a new dependency
- cc -o hello.o -c -MD -MF hello.d -I. hello.c
- % <userinput>scons -Q</userinput>
- scons: `.' is up to date.
- </screen>
-
- <para>
-
- In the first pass, the dependency file is generated while the
- object file is compiled. At that time, &SCons; does not know about
- the dependency on <filename>foo.h</filename>. In the second pass,
- the object file is regenerated because <filename>foo.h</filename>
- is detected as a new dependency.
-
- </para>
-
- <para>
-
- &ParseDepends; immediately reads the specified file at invocation
- time and just returns if the file does not exist. A dependency
- file generated during the build process is not automatically
- parsed again. Hence, the compiler-extracted dependencies are not
- stored in the signature database during the same build pass. This
- limitation of &ParseDepends; leads to unnecessary recompilations.
- Therefore, &ParseDepends; should only be used if scanners are not
- available for the employed language or not powerful enough for the
- specific task.
-
- </para>
-
- </section>
-
- <section>
- <title>Ignoring Dependencies: the &Ignore; Function</title>
-
- <para>
-
- Sometimes it makes sense
- to not rebuild a program,
- even if a dependency file changes.
- In this case,
- you would tell &SCons; specifically
- to ignore a dependency as follows:
-
- </para>
-
- <scons_example name="ignore">
- <file name="SConstruct" printme="1">
- hello_obj=Object('hello.c')
- hello = Program(hello_obj)
- Ignore(hello_obj, 'hello.h')
- </file>
- <file name="hello.c">
- #include "hello.h"
- int main() { printf("Hello, %s!\n", string); }
- </file>
- <file name="hello.h">
- #define string "world"
- </file>
- </scons_example>
-
- <!-- XXX mention that you can use lists for target and source? -->
-
- <!--
- <scons_output example="ignore">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF hello.h]">edit hello.h</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- XXX THIS EXAMPLE SHOULD BE UP-TO-DATE! XXX
- </scons_output>
- -->
-
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -c -o hello.o hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- % <userinput>edit hello.h</userinput>
- [CHANGE THE CONTENTS OF hello.h]
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- </screen>
-
- <para>
-
- Now, the above example is a little contrived,
- because it's hard to imagine a real-world situation
- where you wouldn't want to rebuild &hello;
- if the &hello_h; file changed.
- A more realistic example
- might be if the &hello;
- program is being built in a
- directory that is shared between multiple systems
- that have different copies of the
- &stdio_h; include file.
- In that case,
- &SCons; would notice the differences between
- the different systems' copies of &stdio_h;
- and would rebuild &hello;
- each time you change systems.
- You could avoid these rebuilds as follows:
-
- </para>
-
- <programlisting>
- hello = Program('hello.c', CPPPATH=['/usr/include'])
- Ignore(hello, '/usr/include/stdio.h')
- </programlisting>
-
- <para>
- &Ignore; can also be used to prevent a generated file from being built
- by default. This is due to the fact that directories depend on
- their contents. So to ignore a generated file from the default build,
- you specify that the directory should ignore the generated file.
- Note that the file will still be built if the user specifically
- requests the target on scons command line, or if the file is
- a dependency of another file which is requested and/or is built
- by default.
- </para>
-
- <scons_example name="ignore_explicit">
- <file name="SConstruct" printme="1">
- hello_obj=Object('hello.c')
- hello = Program(hello_obj)
- Ignore('.',[hello,hello_obj])
- </file>
- <file name="hello.c">
- #include "stdio.h"
- int main() { printf("Hello!\n"); }
- </file>
- </scons_example>
-
- <scons_output example="ignore_explicit" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
- </section>
-
- <section>
- <title>Order-Only Dependencies: the &Requires; Function</title>
-
- <para>
-
- Occasionally,
- it may be useful to specify that a certain
- file or directory must, if necessary,
- be built or created before some other target is built,
- but that changes to that file or directory
- do <emphasis>not</emphasis>
- require that the target itself be rebuilt.
- Such a relationship is called an
- <emphasis>order-only dependency</emphasis>
- because it only affects the order in which
- things must be built--the dependency before the target--but
- it is not a strict dependency relationship
- because the target should not
- change in response to changes in the dependent file.
-
- </para>
-
- <para>
-
- For example, suppose that you want to create a file
- every time you run a build
- that identifies the time the build was performed,
- the version number, etc.,
- and which is included in every program that you build.
- The version file's contents will change every build.
- If you specify a normal dependency relationship,
- then every program that depends on
- that file would be rebuilt every time you ran &SCons;.
- For example, we could use some Python code in
- a &SConstruct; file to create a new <filename>version.c</filename> file
- with a string containing the current date every time
- we run &SCons;,
- and then link a program with the resulting object file
- by listing <filename>version.c</filename> in the sources:
-
- </para>
-
- <scons_example name="no-Requires">
- <file name="SConstruct" printme="1">
- import time
-
- version_c_text = """
- char *date = "%s";
- """ % time.ctime(time.time())
- open('version.c', 'w').write(version_c_text)
-
- hello = Program(['hello.c', 'version.c'])
- </file>
- <file name="hello.c">
- extern char *date;
- int main() { printf("Hello, %s! I was built: %s\n", date); }
- </file>
- </scons_example>
-
- <para>
-
- If we list <filename>version.c</filename> as an actual source file,
- though, then the <filename>version.o</filename> file
- will get rebuilt every time we run &SCons;
- (because the &SConstruct; file itself changes
- the contents of <filename>version.c</filename>)
- and the <filename>hello</filename> executable
- will get re-linked every time
- (because the <filename>version.o</filename> file changes):
-
- </para>
-
- <scons_output example="no-Requires">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>sleep 1</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>sleep 1</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- <para>
-
- (Note that for the above example to work,
- we &sleep; for one second in between each run,
- so that the &SConstruct; file will create a
- <filename>version.c</filename> file with a time string
- that's one second later than the previous run.)
-
- </para>
-
- <para>
-
- One solution is to use the &Requires; function
- to specify that the <filename>version.o</filename>
- must be rebuilt before it is used by the link step,
- but that changes to <filename>version.o</filename>
- should not actually cause the <filename>hello</filename>
- executable to be re-linked:
-
- </para>
-
- <scons_example name="Requires">
- <file name="SConstruct" printme="1">
- import time
-
- version_c_text = """
- char *date = "%s";
- """ % time.ctime(time.time())
- open('version.c', 'w').write(version_c_text)
-
- version_obj = Object('version.c')
-
- hello = Program('hello.c',
- LINKFLAGS = str(version_obj[0]))
-
- Requires(hello, version_obj)
- </file>
- <file name="hello.c">
- extern char *date;
- int main() { printf("Hello, %s! I was built: %s\n", date); }
- </file>
- </scons_example>
-
- <para>
-
- Notice that because we can no longer list <filename>version.c</filename>
- as one of the sources for the <filename>hello</filename> program,
- we have to find some other way to get it into the link command line.
- For this example, we're cheating a bit and stuffing the
- object file name (extracted from <literal>version_obj</literal>
- list returned by the &b-Object; call)
- into the &cv-link-LINKFLAGS; variable,
- because &cv-LINKFLAGS; is already included
- in the &cv-link-LINKCOM; command line.
-
- </para>
-
- <para>
-
- With these changes,
- we get the desired behavior of only
- re-linking the <filename>hello</filename> executable
- when the <filename>hello.c</filename> has changed,
- even though the <filename>version.o</filename> is rebuilt
- (because the &SConstruct; file still changes the
- <filename>version.c</filename> contents directly each run):
-
- </para>
-
- <scons_output example="Requires">
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>sleep 1</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>sleep 1</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF hello.c]">edit hello.c</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- <scons_output_command>sleep 1</scons_output_command>
- <scons_output_command>scons -Q hello</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>The &AlwaysBuild; Function</title>
-
- <para>
-
- How &SCons; handles dependencies can also be affected
- by the &AlwaysBuild; method.
- When a file is passed to the &AlwaysBuild; method,
- like so:
-
- </para>
-
- <scons_example name="AlwaysBuild">
- <file name="SConstruct" printme="1">
- hello = Program('hello.c')
- AlwaysBuild(hello)
- </file>
- <file name="hello.c">
- int main() { printf("Hello, %s!\n", string); }
- </file>
- </scons_example>
-
- <para>
-
- Then the specified target file (&hello; in our example)
- will always be considered out-of-date and
- rebuilt whenever that target file is evaluated
- while walking the dependency graph:
-
- </para>
-
- <scons_output example="AlwaysBuild">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The &AlwaysBuild; function has a somewhat misleading name,
- because it does not actually mean the target file will
- be rebuilt every single time &SCons; is invoked.
- Instead, it means that the target will, in fact,
- be rebuilt whenever the target file is encountered
- while evaluating the targets specified on
- the command line (and their dependencies).
- So specifying some other target on the command line,
- a target that does <emphasis>not</emphasis>
- itself depend on the &AlwaysBuild; target,
- will still be rebuilt only if it's out-of-date
- with respect to its dependencies:
-
- </para>
-
- <scons_output example="AlwaysBuild">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q hello.o</scons_output_command>
- </scons_output>
-
- <!--
-
- XXX AlwaysBuild() and Alias Nodes
-
- XXX AlwaysBuild() and Dir Nodes
-
- XXX AlwaysBuild() with no sources
-
- -->
-
- </section>
-
- <!--
-
- <section>
- <title>The &Salt; Method</title>
-
- <para>
-
- XXX Salt() (are we going to implement this ?)
-
- original Cons classic POD documentation:
-
-=head2 The C<Salt> method
-
-The C<Salt> method adds a constant value to the signature calculation
-for every derived file. It is invoked as follows:
-
- Salt $string;
-
-Changing the Salt value will force a complete rebuild of every derived
-file. This can be used to force rebuilds in certain desired
-circumstances. For example,
-
- Salt `uname -s`;
-
-Would force a complete rebuild of every derived file whenever the
-operating system on which the build is performed (as reported by C<uname
--s>) changes.
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/depends.xml b/doc/user/depends.xml
index d8e8719..5049565 100644
--- a/doc/user/depends.xml
+++ b/doc/user/depends.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-depends"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Dependencies</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -36,15 +58,19 @@
</para>
-
+ <scons_example name="depends_ex1">
+ <file name="SConstruct">
+Program('hello.c')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+</file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q</userinput>
- scons: `.' is up to date.
- </screen>
+ <scons_output example="depends_ex1" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -57,13 +83,10 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- </screen>
+ <scons_output example="depends_ex1" os="posix" suffix="2">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -112,14 +135,11 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>touch hello.c</userinput>
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- </screen>
+ <scons_output example="depends_ex1" os="posix" suffix="3">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>touch hello.c</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -137,16 +157,11 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>edit hello.c</userinput>
- [CHANGE THE CONTENTS OF hello.c]
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="depends_ex1" os="posix" suffix="4">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command output=" [CHANGE THE CONTENTS OF hello.c]">edit hello.c</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -157,10 +172,10 @@
</para>
- <programlisting>
- Program('hello.c')
- Decider('MD5')
- </programlisting>
+ <sconstruct>
+Program('hello.c')
+Decider('MD5')
+ </sconstruct>
<para>
@@ -201,16 +216,11 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>edit hello.c</userinput>
- [CHANGE A COMMENT IN hello.c]
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- scons: `hello' is up to date.
- </screen>
+ <scons_output example="depends_ex1" os="posix" suffix="5">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command output=" [CHANGE A COMMENT IN hello.c]" edit="STRIP CCCOM line">edit hello.c</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -258,10 +268,15 @@
</para>
- <programlisting>
- Object('hello.c')
- Decider('timestamp-newer')
- </programlisting>
+ <scons_example name="depends_newer">
+ <file name="SConstruct" printme="1">
+Object('hello.c')
+Decider('timestamp-newer')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -271,13 +286,11 @@
</para>
- <screen>
- % <userinput>scons -Q hello.o</userinput>
- cc -o hello.o -c hello.c
- % <userinput>touch hello.c</userinput>
- % <userinput>scons -Q hello.o</userinput>
- cc -o hello.o -c hello.c
- </screen>
+ <scons_output example="depends_newer" os="posix" suffix="1">
+ <scons_output_command>scons -Q hello.o</scons_output_command>
+ <scons_output_command>touch hello.c</scons_output_command>
+ <scons_output_command>scons -Q hello.o</scons_output_command>
+ </scons_output>
<para>
@@ -289,10 +302,10 @@
</para>
- <programlisting>
- Object('hello.c')
- Decider('make')
- </programlisting>
+ <sconstruct>
+Object('hello.c')
+Decider('make')
+ </sconstruct>
<para>
@@ -324,10 +337,15 @@
</para>
- <programlisting>
- Object('hello.c')
- Decider('timestamp-match')
- </programlisting>
+ <scons_example name="depends_match">
+ <file name="SConstruct" printme="1">
+Object('hello.c')
+Decider('timestamp-match')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -341,13 +359,11 @@
</para>
- <screen>
- % <userinput>scons -Q hello.o</userinput>
- cc -o hello.o -c hello.c
- % <userinput>touch -t 198901010000 hello.c</userinput>
- % <userinput>scons -Q hello.o</userinput>
- cc -o hello.o -c hello.c
- </screen>
+ <scons_output example="depends_match" os="posix" suffix="1">
+ <scons_output_command>scons -Q hello.o</scons_output_command>
+ <scons_output_command>touch -t 198901010000 hello.c</scons_output_command>
+ <scons_output_command>scons -Q hello.o</scons_output_command>
+ </scons_output>
<para>
@@ -380,10 +396,15 @@
</para>
- <programlisting>
- Program('hello.c')
- Decider('MD5-timestamp')
- </programlisting>
+ <scons_example name="depends_MD5-timestamp">
+ <file name="SConstruct" printme="1">
+Program('hello.c')
+Decider('MD5-timestamp')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -399,7 +420,7 @@
output seems to get this wrong.
Just in-line the output for now.
- <scons_output example="MD5-timestamp" os="posix">
+ <scons_output example="depends_MD5-timestamp" os="posix" suffix="1">
<scons_output_command>scons -Q hello</scons_output_command>
<scons_output_command>touch hello.c</scons_output_command>
<scons_output_command>scons -Q hello</scons_output_command>
@@ -410,17 +431,17 @@
-->
<screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>touch hello.c</userinput>
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- % <userinput>edit hello.c</userinput>
- [CHANGE THE CONTENTS OF hello.c]
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
+% <userinput>touch hello.c</userinput>
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+% <userinput>edit hello.c</userinput>
+ [CHANGE THE CONTENTS OF hello.c]
+% <userinput>scons -Q hello</userinput>
+cc -o hello.o -c hello.c
+cc -o hello hello.o
</screen>
<para>
@@ -493,17 +514,22 @@
</para>
- <programlisting>
- Program('hello.c')
- def decide_if_changed(dependency, target, prev_ni):
- if self.get_timestamp() != prev_ni.timestamp:
- dep = str(dependency)
- tgt = str(target)
- if specific_part_of_file_has_changed(dep, tgt):
- return True
- return False
- Decider(decide_if_changed)
- </programlisting>
+ <scons_example name="depends_function">
+ <file name="SConstruct" printme="1">
+Program('hello.c')
+def decide_if_changed(dependency, target, prev_ni):
+ if self.get_timestamp() != prev_ni.timestamp:
+ dep = str(dependency)
+ tgt = str(target)
+ if specific_part_of_file_has_changed(dep, tgt):
+ return True
+ return False
+Decider(decide_if_changed)
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -608,37 +634,37 @@
</para>
- <programlisting>
- env = Environment()
-
- def config_file_decider(dependency, target, prev_ni):
- import os.path
-
- # We always have to init the .csig value...
- dep_csig = dependency.get_csig()
- # .csig may not exist, because no target was built yet...
- if 'csig' not in dir(prev_ni):
- return True
- # Target file may not exist yet
- if not os.path.exists(str(target.abspath)):
- return True
- if dep_csig != prev_ni.csig:
- # Some change on source file =&gt; update installed one
- return True
- return False
-
- def update_file():
- f = open("test.txt","a")
- f.write("some line\n")
- f.close()
-
- update_file()
-
- # Activate our own decider function
- env.Decider(config_file_decider)
-
- env.Install("install","test.txt")
- </programlisting>
+ <sconstruct>
+env = Environment()
+
+def config_file_decider(dependency, target, prev_ni):
+ import os.path
+
+ # We always have to init the .csig value...
+ dep_csig = dependency.get_csig()
+ # .csig may not exist, because no target was built yet...
+ if 'csig' not in dir(prev_ni):
+ return True
+ # Target file may not exist yet
+ if not os.path.exists(str(target.abspath)):
+ return True
+ if dep_csig != prev_ni.csig:
+ # Some change on source file => update installed one
+ return True
+ return False
+
+def update_file():
+ f = open("test.txt","a")
+ f.write("some line\n")
+ f.close()
+
+update_file()
+
+# Activate our own decider function
+env.Decider(config_file_decider)
+
+env.Install("install","test.txt")
+ </sconstruct>
</section>
@@ -670,13 +696,26 @@
</para>
- <programlisting>
- env1 = Environment(CPPPATH = ['.'])
- env2 = env1.Clone()
- env2.Decider('timestamp-match')
- env1.Program('prog-MD5', 'program1.c')
- env2.Program('prog-timestamp', 'program2.c')
- </programlisting>
+ <scons_example name="depends_mixing">
+ <file name="SConstruct" printme="1">
+env1 = Environment(CPPPATH = ['.'])
+env2 = env1.Clone()
+env2.Decider('timestamp-match')
+env1.Program('prog-MD5', 'program1.c')
+env2.Program('prog-timestamp', 'program2.c')
+ </file>
+ <file name="program1.c">
+#include "inc.h"
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="program2.c">
+#include "inc.h"
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="inc.h">
+#define INC 1
+ </file>
+ </scons_example>
<para>
@@ -690,17 +729,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o program1.o -c -I. program1.c
- cc -o prog-MD5 program1.o
- cc -o program2.o -c -I. program2.c
- cc -o prog-timestamp program2.o
- % <userinput>touch inc.h</userinput>
- % <userinput>scons -Q</userinput>
- cc -o program2.o -c -I. program2.c
- cc -o prog-timestamp program2.o
- </screen>
+ <scons_output example="depends_mixing" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>touch inc.h</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -737,10 +770,10 @@
</para>
- <programlisting>
- Program('hello.c')
- SourceSignatures('MD5')
- </programlisting>
+ <sconstruct>
+Program('hello.c')
+SourceSignatures('MD5')
+ </sconstruct>
<para>
@@ -748,10 +781,10 @@
</para>
- <programlisting>
- Program('hello.c')
- SourceSignatures('timestamp')
- </programlisting>
+ <sconstruct>
+Program('hello.c')
+SourceSignatures('timestamp')
+ </sconstruct>
<para>
@@ -805,10 +838,10 @@
</para>
- <programlisting>
- Program('hello.c')
- TargetSignatures('MD5')
- </programlisting>
+ <sconstruct>
+Program('hello.c')
+TargetSignatures('MD5')
+ </sconstruct>
<para>
@@ -819,10 +852,10 @@
</para>
- <programlisting>
- Program('hello.c')
- TargetSignatures('timestamp')
- </programlisting>
+ <sconstruct>
+Program('hello.c')
+TargetSignatures('timestamp')
+ </sconstruct>
<para>
@@ -848,11 +881,11 @@
</para>
- <programlisting>
- Program('hello.c')
- TargetSignatures('source')
- SourceSignatures('timestamp')
- </programlisting>
+ <sconstruct>
+Program('hello.c')
+TargetSignatures('source')
+SourceSignatures('timestamp')
+ </sconstruct>
<para>
@@ -914,14 +947,22 @@
</para>
- <programlisting>
- #include &lt;hello.h&gt;
- int
- main()
- {
- printf("Hello, %s!\n", string);
- }
- </programlisting>
+ <scons_example name="depends_include">
+ <file name="SConstruct">
+Program('hello.c', CPPPATH = '.')
+ </file>
+ <file name="hello.c" printme="1">
+#include &lt;hello.h&gt;
+int
+main()
+{
+ printf("Hello, %s!\n", string);
+}
+ </file>
+ <file name="hello.h">
+#define string "world"
+ </file>
+ </scons_example>
<para>
@@ -929,10 +970,8 @@
</para>
-
- <programlisting>
- #define string "world"
- </programlisting>
+ <scons_example_file example="depends_include" name="hello.h">
+ </scons_example_file>
<para>
@@ -944,10 +983,8 @@
</para>
-
- <programlisting>
- Program('hello.c', CPPPATH = '.')
- </programlisting>
+ <scons_example_file example="depends_include" name="SConstruct">
+ </scons_example_file>
<para>
@@ -960,18 +997,12 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c -I. hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- % <userinput>edit hello.h</userinput>
- [CHANGE THE CONTENTS OF hello.h]
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c -I. hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="depends_include" os="posix" suffix="1">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command output=" [CHANGE THE CONTENTS OF hello.h]">edit hello.h</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -1016,9 +1047,14 @@
</para>
- <programlisting>
- Program('hello.c', CPPPATH = ['include', '/home/project/inc'])
- </programlisting>
+ <scons_example name="depends_ex5">
+ <file name="SConstruct" printme="1">
+Program('hello.c', CPPPATH = ['include', '/home/project/inc'])
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -1026,11 +1062,9 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c -Iinclude -I/home/project/inc hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="depends_ex5" os="posix" suffix="1">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -1038,12 +1072,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q hello.exe</userinput>
- cl /Fohello.obj /c hello.c /nologo /Iinclude /I\home\project\inc
- link /nologo /OUT:hello.exe hello.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="depends_ex5" os="win32" suffix="2">
+ <scons_output_command>scons -Q hello.exe</scons_output_command>
+ </scons_output>
</section>
@@ -1095,13 +1126,10 @@
</para>
- <screen>
- % <userinput>scons -Q --implicit-cache hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- </screen>
+ <scons_output example="depends_ex1" suffix="6">
+ <scons_output_command>scons -Q --implicit-cache hello</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -1113,9 +1141,9 @@
</para>
- <programlisting>
- SetOption('implicit_cache', 1)
- </programlisting>
+ <sconstruct>
+SetOption('implicit_cache', 1)
+ </sconstruct>
<para>
@@ -1178,13 +1206,10 @@
</para>
- <screen>
- % <userinput>scons -Q --implicit-deps-changed hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- </screen>
+ <scons_output example="depends_ex1" suffix="7">
+ <scons_output_command>scons -Q --implicit-deps-changed hello</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -1216,13 +1241,10 @@
</para>
- <screen>
- % <userinput>scons -Q --implicit-deps-unchanged hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- </screen>
+ <scons_output example="depends_ex1" suffix="8">
+ <scons_output_command>scons -Q --implicit-deps-unchanged hello</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -1269,23 +1291,23 @@
</para>
<programlisting>
- hello = Program('hello.c')
- Depends(hello, 'other_file')
+hello = Program('hello.c')
+Depends(hello, 'other_file')
</programlisting>
<!-- XXX mention that you can use arrays for target and source? -->
<screen>
- % <userinput>scons -Q hello</userinput>
- cc -c hello.c -o hello.o
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- % <userinput>edit other_file</userinput>
- [CHANGE THE CONTENTS OF other_file]
- % <userinput>scons -Q hello</userinput>
- cc -c hello.c -o hello.o
- cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+cc -c hello.c -o hello.o
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+% <userinput>edit other_file</userinput>
+ [CHANGE THE CONTENTS OF other_file]
+% <userinput>scons -Q hello</userinput>
+cc -c hello.c -o hello.o
+cc -o hello hello.o
</screen>
<para>
@@ -1298,9 +1320,9 @@
</para>
<programlisting>
- hello = Program('hello.c')
- goodbye = Program('goodbye.c')
- Depends(hello, goodbye)
+hello = Program('hello.c')
+goodbye = Program('goodbye.c')
+Depends(hello, goodbye)
</programlisting>
<para>
@@ -1311,11 +1333,11 @@
</para>
<screen>
- % <userinput>scons -Q hello</userinput>
- cc -c goodbye.c -o goodbye.o
- cc -o goodbye goodbye.o
- cc -c hello.c -o hello.o
- cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+cc -c goodbye.c -o goodbye.o
+cc -o goodbye goodbye.o
+cc -c hello.c -o hello.o
+cc -o hello hello.o
</screen>
</section>
@@ -1340,24 +1362,28 @@
</para>
- <programlisting>
- #define FOO_HEADER &lt;foo.h&gt;
- #include FOO_HEADER
-
- int main() {
- return FOO;
- }
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -I. hello.c
- cc -o hello hello.o
- % <userinput>edit foo.h</userinput>
- [CHANGE CONTENTS OF foo.h]
- % <userinput>scons -Q</userinput>
- scons: `.' is up to date.
- </screen>
+ <scons_example name="depends_macroinc">
+ <file name="hello.c" printme="1">
+#define FOO_HEADER &lt;foo.h&gt;
+#include FOO_HEADER
+
+int main() {
+ return FOO;
+}
+ </file>
+ <file name="SConstruct">
+Program('hello', 'hello.c', CPPPATH='.')
+ </file>
+ <file name="foo.h">
+#define FOO 42
+ </file>
+ </scons_example>
+
+ <scons_output example="depends_macroinc" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command output=" [CHANGE CONTENTS OF foo.h]">edit foo.h</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1388,22 +1414,34 @@
priori specification of the dependency file. The produced hello.d
file is not found (or used) for unknown reasons. -->
- <programlisting>
- obj = Object('hello.c', CCFLAGS='-MD -MF hello.d', CPPPATH='.')
- SideEffect('hello.d', obj)
- ParseDepends('hello.d')
- Program('hello', obj)
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -MD -MF hello.d -I. hello.c
- cc -o hello hello.o
- % <userinput>edit foo.h</userinput>
- [CHANGE CONTENTS OF foo.h]
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -MD -MF hello.d -I. hello.c
- </screen>
+ <scons_example name="depends_parsedep">
+ <file name="hello.c">
+#define FOO_HEADER &lt;foo.h&gt;
+#include FOO_HEADER
+
+int main() {
+ return FOO;
+}
+ </file>
+ <file name="SConstruct" printme="1">
+obj = Object('hello.c', CCFLAGS='-MD -MF hello.d', CPPPATH='.')
+SideEffect('hello.d', obj)
+ParseDepends('hello.d')
+Program('hello', obj)
+ </file>
+ <file name="foo.h">
+#define FOO 42
+ </file>
+ <file name="hello.d">
+hello.o: hello.c foo.h
+ </file>
+ </scons_example>
+
+ <scons_output example="depends_parsedep" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command output=" [CHANGE CONTENTS OF foo.h]">edit foo.h</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1413,10 +1451,28 @@
</para>
-
+ <scons_example name="depends_parsedeprebuild">
+ <file name="hello.c">
+#define FOO_HEADER &lt;foo.h&gt;
+#include FOO_HEADER
+
+int main() {
+ return FOO;
+}
+ </file>
+ <file name="SConstruct">
+obj = Object('hello.c', CCFLAGS='-MD -MF hello.d', CPPPATH='.')
+SideEffect('hello.d', obj)
+ParseDepends('hello.d')
+Program('hello', obj)
+ </file>
+ <file name="foo.h">
+#define FOO 42
+ </file>
+ </scons_example>
<!--
- <scons_output example="parsedeprebuild" os="posix">
+ <scons_output example="depends_parsedeprebuild" os="posix" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
<scons_output_command>scons -Q</scons_output_command>
<scons_output_command>scons -Q</scons_output_command>
@@ -1424,14 +1480,14 @@
-->
<screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -MD -MF hello.d -I. hello.c
- cc -o hello hello.o
- % <userinput>scons -Q --debug=explain</userinput>
- scons: rebuilding `hello.o' because `foo.h' is a new dependency
- cc -o hello.o -c -MD -MF hello.d -I. hello.c
- % <userinput>scons -Q</userinput>
- scons: `.' is up to date.
+% <userinput>scons -Q</userinput>
+cc -o hello.o -c -MD -MF hello.d -I. hello.c
+cc -o hello hello.o
+% <userinput>scons -Q --debug=explain</userinput>
+scons: rebuilding `hello.o' because `foo.h' is a new dependency
+cc -o hello.o -c -MD -MF hello.d -I. hello.c
+% <userinput>scons -Q</userinput>
+scons: `.' is up to date.
</screen>
<para>
@@ -1474,16 +1530,25 @@
</para>
- <programlisting>
- hello_obj=Object('hello.c')
- hello = Program(hello_obj)
- Ignore(hello_obj, 'hello.h')
- </programlisting>
+ <scons_example name="depends_ignore">
+ <file name="SConstruct" printme="1">
+hello_obj=Object('hello.c')
+hello = Program(hello_obj)
+Ignore(hello_obj, 'hello.h')
+ </file>
+ <file name="hello.c">
+#include "hello.h"
+int main() { printf("Hello, %s!\n", string); }
+ </file>
+ <file name="hello.h">
+#define string "world"
+ </file>
+ </scons_example>
<!-- XXX mention that you can use lists for target and source? -->
<!--
- <scons_output example="ignore">
+ <scons_output example="depends_ignore" suffix="1">
<scons_output_command>scons -Q hello</scons_output_command>
<scons_output_command>scons -Q hello</scons_output_command>
<scons_output_command output=" [CHANGE THE CONTENTS OF hello.h]">edit hello.h</scons_output_command>
@@ -1493,15 +1558,15 @@
-->
<screen>
- % <userinput>scons -Q hello</userinput>
- cc -c -o hello.o hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- % <userinput>edit hello.h</userinput>
- [CHANGE THE CONTENTS OF hello.h]
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
+% <userinput>scons -Q hello</userinput>
+cc -c -o hello.o hello.c
+cc -o hello hello.o
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
+% <userinput>edit hello.h</userinput>
+ [CHANGE THE CONTENTS OF hello.h]
+% <userinput>scons -Q hello</userinput>
+scons: `hello' is up to date.
</screen>
<para>
@@ -1526,8 +1591,8 @@
</para>
<programlisting>
- hello = Program('hello.c', CPPPATH=['/usr/include'])
- Ignore(hello, '/usr/include/stdio.h')
+hello = Program('hello.c', CPPPATH=['/usr/include'])
+Ignore(hello, '/usr/include/stdio.h')
</programlisting>
<para>
@@ -1541,21 +1606,23 @@
by default.
</para>
- <programlisting>
- hello_obj=Object('hello.c')
- hello = Program(hello_obj)
- Ignore('.',[hello,hello_obj])
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- scons: `.' is up to date.
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello</userinput>
- scons: `hello' is up to date.
- </screen>
+ <scons_example name="depends_ignore_explicit">
+ <file name="SConstruct" printme="1">
+hello_obj=Object('hello.c')
+hello = Program(hello_obj)
+Ignore('.',[hello,hello_obj])
+ </file>
+ <file name="hello.c">
+#include "stdio.h"
+int main() { printf("Hello!\n"); }
+ </file>
+ </scons_example>
+
+ <scons_output example="depends_ignore_explicit" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
</section>
<section>
@@ -1600,16 +1667,22 @@
</para>
- <programlisting>
- import time
+ <scons_example name="depends_no-Requires">
+ <file name="SConstruct" printme="1">
+import time
- version_c_text = """
- char *date = "%s";
- """ % time.ctime(time.time())
- open('version.c', 'w').write(version_c_text)
+version_c_text = """
+char *date = "%s";
+""" % time.ctime(time.time())
+open('version.c', 'w').write(version_c_text)
- hello = Program(['hello.c', 'version.c'])
- </programlisting>
+hello = Program(['hello.c', 'version.c'])
+ </file>
+ <file name="hello.c">
+extern char *date;
+int main() { printf("Hello, %s! I was built: %s\n", date); }
+ </file>
+ </scons_example>
<para>
@@ -1624,20 +1697,13 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o hello.o -c hello.c
- cc -o version.o -c version.c
- cc -o hello hello.o version.o
- % <userinput>sleep 1</userinput>
- % <userinput>scons -Q hello</userinput>
- cc -o version.o -c version.c
- cc -o hello hello.o version.o
- % <userinput>sleep 1</userinput>
- % <userinput>scons -Q hello</userinput>
- cc -o version.o -c version.c
- cc -o hello hello.o version.o
- </screen>
+ <scons_output example="depends_no-Requires" suffix="1">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>sleep 1</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>sleep 1</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
<para>
@@ -1660,21 +1726,27 @@
</para>
- <programlisting>
- import time
+ <scons_example name="depends_Requires">
+ <file name="SConstruct" printme="1">
+import time
- version_c_text = """
- char *date = "%s";
- """ % time.ctime(time.time())
- open('version.c', 'w').write(version_c_text)
+version_c_text = """
+char *date = "%s";
+""" % time.ctime(time.time())
+open('version.c', 'w').write(version_c_text)
- version_obj = Object('version.c')
+version_obj = Object('version.c')
- hello = Program('hello.c',
- LINKFLAGS = str(version_obj[0]))
+hello = Program('hello.c',
+ LINKFLAGS = str(version_obj[0]))
- Requires(hello, version_obj)
- </programlisting>
+Requires(hello, version_obj)
+ </file>
+ <file name="hello.c">
+extern char *date;
+int main() { printf("Hello, %s! I was built: %s\n", date); }
+ </file>
+ </scons_example>
<para>
@@ -1702,27 +1774,16 @@
</para>
- <screen>
- % <userinput>scons -Q hello</userinput>
- cc -o version.o -c version.c
- cc -o hello.o -c hello.c
- cc -o hello version.o hello.o
- % <userinput>sleep 1</userinput>
- % <userinput>scons -Q hello</userinput>
- cc -o version.o -c version.c
- scons: `hello' is up to date.
- % <userinput>sleep 1</userinput>
- % <userinput>edit hello.c</userinput>
- [CHANGE THE CONTENTS OF hello.c]
- % <userinput>scons -Q hello</userinput>
- cc -o version.o -c version.c
- cc -o hello.o -c hello.c
- cc -o hello version.o hello.o
- % <userinput>sleep 1</userinput>
- % <userinput>scons -Q hello</userinput>
- cc -o version.o -c version.c
- scons: `hello' is up to date.
- </screen>
+ <scons_output example="depends_Requires" suffix="1">
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>sleep 1</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>sleep 1</scons_output_command>
+ <scons_output_command output=" [CHANGE THE CONTENTS OF hello.c]">edit hello.c</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ <scons_output_command>sleep 1</scons_output_command>
+ <scons_output_command>scons -Q hello</scons_output_command>
+ </scons_output>
</section>
@@ -1738,10 +1799,15 @@
</para>
- <programlisting>
- hello = Program('hello.c')
- AlwaysBuild(hello)
- </programlisting>
+ <scons_example name="depends_AlwaysBuild">
+ <file name="SConstruct" printme="1">
+hello = Program('hello.c')
+AlwaysBuild(hello)
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, %s!\n", string); }
+ </file>
+ </scons_example>
<para>
@@ -1752,13 +1818,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q</userinput>
- cc -o hello hello.o
- </screen>
+ <scons_output example="depends_AlwaysBuild" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1777,13 +1840,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q hello.o</userinput>
- scons: `hello.o' is up to date.
- </screen>
+ <scons_output example="depends_AlwaysBuild" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q hello.o</scons_output_command>
+ </scons_output>
<!--
@@ -1830,3 +1890,5 @@ operating system on which the build is performed (as reported by C<uname
</section>
-->
+
+</chapter>
diff --git a/doc/user/environments.in b/doc/user/environments.in
deleted file mode 100644
index eebc486..0000000
--- a/doc/user/environments.in
+++ /dev/null
@@ -1,1752 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 More on construction environments
-
-As previously mentioned, a B<construction environment> is an object that
-has a set of keyword/value pairs and a set of methods, and which is used
-to tell Cons how target files should be built. This section describes
-how Cons uses and expands construction environment values to control its
-build behavior.
-
-=head2 Construction variable expansion
-
-Construction variables from a construction environment are expanded
-by preceding the keyword with a C<%> (percent sign):
-
- Construction variables:
- XYZZY => 'abracadabra',
-
- The string: "The magic word is: %XYZZY!"
- expands to: "The magic word is: abracadabra!"
-
-A construction variable name may be surrounded by C<{> and C<}> (curly
-braces), which are stripped as part of the expansion. This can
-sometimes be necessary to separate a variable expansion from trailing
-alphanumeric characters:
-
- Construction variables:
- OPT => 'value1',
- OPTION => 'value2',
-
- The string: "%OPT %{OPT}ION %OPTION %{OPTION}"
- expands to: "value1 value1ION value2 value2"
-
-Construction variable expansion is recursive, that is, a string
-containing C<%->expansions after substitution will be re-expanded until
-no further substitutions can be made:
-
- Construction variables:
- STRING => 'The result is: %FOO',
- FOO => '%BAR',
- BAR => 'final value',
-
- The string: "The string says: %STRING"
- expands to: "The string says: The result is: final value"
-
-If a construction variable is not defined in an environment, then the
-null string is substituted:
-
- Construction variables:
- FOO => 'value1',
- BAR => 'value2',
-
- The string: "%FOO <%NO_VARIABLE> %BAR"
- expands to: "value1 <> value2"
-
-A doubled C<%%> will be replaced by a single C<%>:
-
- The string: "Here is a percent sign: %%"
- expands to: "Here is a percent sign: %"
-
-=head2 Default construction variables
-
-When you specify no arguments when creating a new construction
-environment:
-
- $env = new cons();
-
-Cons creates a reference to a new, default construction
-environment. This contains a number of construction variables and some
-methods. At the present writing, the default construction variables on a
-UNIX system are:
-
- CC => 'cc',
- CFLAGS => '',
- CCCOM => '%CC %CFLAGS %_IFLAGS -c %< -o %>',
- CXX => '%CC',
- CXXFLAGS => '%CFLAGS',
- CXXCOM => '%CXX %CXXFLAGS %_IFLAGS -c %< -o %>',
- INCDIRPREFIX => '-I',
- INCDIRSUFFIX => '',
- LINK => '%CXX',
- LINKCOM => '%LINK %LDFLAGS -o %> %< %_LDIRS %LIBS',
- LINKMODULECOM => '%LD -r -o %> %<',
- LIBDIRPREFIX => '-L',
- LIBDIRSUFFIX => '',
- AR => 'ar',
- ARFLAGS => 'r',
- ARCOM => ['%AR %ARFLAGS %> %<', '%RANLIB %>'],
- RANLIB => 'ranlib',
- AS => 'as',
- ASFLAGS => '',
- ASCOM => '%AS %ASFLAGS %< -o %>',
- LD => 'ld',
- LDFLAGS => '',
- PREFLIB => 'lib',
- SUFLIB => '.a',
- SUFLIBS => '.so:.a',
- SUFOBJ => '.o',
- SIGNATURE => [ '*' => 'build' ],
- ENV => { 'PATH' => '/bin:/usr/bin' },
-
-
-And on a Windows system (Windows NT), the default construction variables
-are (unless the default rule style is set using the B<DefaultRules>
-method):
-
- CC => 'cl',
- CFLAGS => '/nologo',
- CCCOM => '%CC %CFLAGS %_IFLAGS /c %< /Fo%>',
- CXXCOM => '%CXX %CXXFLAGS %_IFLAGS /c %< /Fo%>',
- INCDIRPREFIX => '/I',
- INCDIRSUFFIX => '',
- LINK => 'link',
- LINKCOM => '%LINK %LDFLAGS /out:%> %< %_LDIRS %LIBS',
- LINKMODULECOM => '%LD /r /o %> %<',
- LIBDIRPREFIX => '/LIBPATH:',
- LIBDIRSUFFIX => '',
- AR => 'lib',
- ARFLAGS => '/nologo ',
- ARCOM => "%AR %ARFLAGS /out:%> %<",
- RANLIB => '',
- LD => 'link',
- LDFLAGS => '/nologo ',
- PREFLIB => '',
- SUFEXE => '.exe',
- SUFLIB => '.lib',
- SUFLIBS => '.dll:.lib',
- SUFOBJ => '.obj',
- SIGNATURE => [ '*' => 'build' ],
-
-These variables are used by the various methods associated with the
-environment. In particular, any method that ultimately invokes an external
-command will substitute these variables into the final command, as
-appropriate. For example, the C<Objects> method takes a number of source
-files and arranges to derive, if necessary, the corresponding object
-files:
-
- Objects $env 'foo.c', 'bar.c';
-
-This will arrange to produce, if necessary, F<foo.o> and F<bar.o>. The
-command invoked is simply C<%CCCOM>, which expands, through substitution,
-to the appropriate external command required to build each object. The
-substitution rules will be discussed in detail in the next section.
-
-The construction variables are also used for other purposes. For example,
-C<CPPPATH> is used to specify a colon-separated path of include
-directories. These are intended to be passed to the C preprocessor and are
-also used by the C-file scanning machinery to determine the dependencies
-involved in a C Compilation.
-
-Variables beginning with underscore are created by various methods,
-and should normally be considered ``internal'' variables. For example,
-when a method is called which calls for the creation of an object from
-a C source, the variable C<_IFLAGS> is created: this corresponds to the
-C<-I> switches required by the C compiler to represent the directories
-specified by C<CPPPATH>.
-
-Note that, for any particular environment, the value of a variable is set
-once, and then never reset (to change a variable, you must create a new
-environment. Methods are provided for copying existing environments for this
-purpose). Some internal variables, such as C<_IFLAGS> are created on demand,
-but once set, they remain fixed for the life of the environment.
-
-The C<CFLAGS>, C<LDFLAGS>, and C<ARFLAGS> variables all supply a place
-for passing options to the compiler, loader, and archiver, respectively.
-
-The C<INCDIRPREFIX> and C<INCDIRSUFFIX> variables specify option
-strings to be appended to the beginning and end, respectively, of each
-include directory so that the compiler knows where to find F<.h> files.
-Similarly, the C<LIBDIRPREFIX> and C<LIBDIRSUFFIX> variables specify the
-option string to be appended to the beginning of and end, respectively,
-of each directory that the linker should search for libraries.
-
-Another variable, C<ENV>, is used to determine the system environment during
-the execution of an external command. By default, the only environment
-variable that is set is C<PATH>, which is the execution path for a UNIX
-command. For the utmost reproducibility, you should really arrange to set
-your own execution path, in your top-level F<Construct> file (or perhaps by
-importing an appropriate construction package with the Perl C<use>
-command). The default variables are intended to get you off the ground.
-
-=head2 Expanding variables in construction commands
-
-Within a construction command, construction variables will be expanded
-according to the rules described above. In addition to normal variable
-expansion from the construction environment, construction commands also
-expand the following pseudo-variables to insert the specific input and
-output files in the command line that will be executed:
-
-=over 10
-
-=item %>
-
-The target file name. In a multi-target command, this expands to the
-first target mentioned.)
-
-=item %0
-
-Same as C<%E<gt>>.
-
-=item %1, %2, ..., %9
-
-These refer to the first through ninth input file, respectively.
-
-=item %E<lt>
-
-The full set of input file names. If any of these have been used
-anywhere else in the current command line (via C<%1>, C<%2>, etc.), then
-those will be deleted from the list provided by C<%E<lt>>. Consider the
-following command found in a F<Conscript> file in the F<test> directory:
-
- Command $env 'tgt', qw(foo bar baz), qq(
- echo %< -i %1 > %>
- echo %< -i %2 >> %>
- echo %< -i %3 >> %>
- );
-
-If F<tgt> needed to be updated, then this would result in the execution of
-the following commands, assuming that no remapping has been established for
-the F<test> directory:
-
- echo test/bar test/baz -i test/foo > test/tgt
- echo test/foo test/baz -i test/bar >> test/tgt
- echo test/foo test/bar -i test/baz >> test/tgt
-
-=back
-
-Any of the above pseudo-variables may be followed immediately by one of
-the following suffixes to select a portion of the expanded path name:
-
- :a the absolute path to the file name
- :b the directory plus the file name stripped of any suffix
- :d the directory
- :f the file name
- :s the file name suffix
- :F the file name stripped of any suffix
- :S the absolute path path to a Linked source file
-
-Continuing with the above example, C<%E<lt>:f> would expand to C<foo bar baz>,
-and C<%E<gt>:d> would expand to C<test>.
-
-There are additional C<%> elements which affect the command line(s):
-
-=over 10
-
-=item %[ %]
-
-It is possible to programmatically rewrite part of the command by
-enclosing part of it between C<%[> and C<%]>. This will call the
-construction variable named as the first word enclosed in the brackets
-as a Perl code reference; the results of this call will be used to
-replace the contents of the brackets in the command line. For example,
-given an existing input file named F<tgt.in>:
-
- @keywords = qw(foo bar baz);
- $env = new cons(X_COMMA => sub { join(",", @_) });
- Command $env 'tgt', 'tgt.in', qq(
- echo '# Keywords: %[X_COMMA @keywords %]' > %>
- cat %< >> %>
- );
-
-This will execute:
-
- echo '# Keywords: foo,bar,baz' > tgt
- cat tgt.in >> tgt
-
-=item %( %)
-
-Cons includes the text of the command line in the MD5 signature for a
-build, so that targets get rebuilt if you change the command line (to
-add or remove an option, for example). Command-line text in between
-C<%(> and C<%)>, however, will be ignored for MD5 signature calculation.
-
-Internally, Cons uses C<%(> and C<%)> around include and library
-directory options (C<-I> and C<-L> on UNIX systems, C</I> and
-C</LIBPATH> on Windows NT) to avoid rebuilds just because the directory
-list changes. Rebuilds occur only if the changed directory list causes
-any included I<files> to change, and a changed include file is detected
-by the MD5 signature calculation on the actual file contents.
-
-=back
-
-XXX DESCRIBE THE Literal() FUNCTION, TOO XXX
-
-=head2 Expanding construction variables in file names
-
-Cons expands construction variables in the source and target file names
-passed to the various construction methods according to the expansion
-rules described above:
-
- $env = new cons(
- DESTDIR => 'programs',
- SRCDIR => 'src',
- );
- Program $env '%DESTDIR/hello', '%SRCDIR/hello.c';
-
-This allows for flexible configuration, through the construction
-environment, of directory names, suffixes, etc.
-
--->
-
- <para>
-
- An <literal>environment</literal>
- is a collection of values that
- can affect how a program executes.
- &SCons; distinguishes between three
- different types of environments
- that can affect the behavior of &SCons; itself
- (subject to the configuration in the &SConscript; files),
- as well as the compilers and other tools it executes:
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>External Environment</term>
-
- <listitem>
- <para>
-
- The <literal>external environment</literal>
- is the set of variables in the user's environment
- at the time the user runs &SCons;.
- These variables are available within the &SConscript; files
- through the Python <literal>os.environ</literal> dictionary.
- See <xref linkend="sect-external-environments"></xref>, below.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&ConsEnv;</term>
-
- <listitem>
- <para>
-
- A &consenv;
- is a distinct object creating within
- a &SConscript; file and
- and which contains values that
- affect how &SCons; decides
- what action to use to build a target,
- and even to define which targets
- should be built from which sources.
- One of the most powerful features of &SCons;
- is the ability to create multiple &consenvs;,
- including the ability to clone a new, customized
- &consenv; from an existing &consenv;.
- See <xref linkend="sect-construction-environments"></xref>, below.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Execution Environment</term>
-
- <listitem>
- <para>
-
- An <literal>execution environment</literal>
- is the values that &SCons; sets
- when executing an external
- command (such as a compiler or linker)
- to build one or more targets.
- Note that this is not the same as
- the <literal>external environment</literal>
- (see above).
- See <xref linkend="sect-execution-environments"></xref>, below.
-
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- <para>
-
- Unlike &Make;, &SCons; does not automatically
- copy or import values between different environments
- (with the exception of explicit clones of &consenvs;,
- which inherit values from their parent).
- This is a deliberate design choice
- to make sure that builds are,
- by default, repeatable regardless of
- the values in the user's external environment.
- This avoids a whole class of problems with builds
- where a developer's local build works
- because a custom variable setting
- causes a different compiler or build option to be used,
- but the checked-in change breaks the official build
- because it uses different environment variable settings.
-
- </para>
-
- <para>
-
- Note that the &SConscript; writer can
- easily arrange for variables to be
- copied or imported between environments,
- and this is often very useful
- (or even downright necessary)
- to make it easy for developers
- to customize the build in appropriate ways.
- The point is <emphasis>not</emphasis>
- that copying variables between different environments
- is evil and must always be avoided.
- Instead, it should be up to the
- implementer of the build system
- to make conscious choices
- about how and when to import
- a variable from one environment to another,
- making informed decisions about
- striking the right balance
- between making the build
- repeatable on the one hand
- and convenient to use on the other.
-
- </para>
-
- <section id="sect-external-environments">
- <title>Using Values From the External Environment</title>
-
- <para>
-
- The <literal>external environment</literal>
- variable settings that
- the user has in force
- when executing &SCons;
- are available through the normal Python
- <envar>os.environ</envar>
- dictionary.
- This means that you must add an
- <literal>import os</literal> statement
- to any &SConscript; file
- in which you want to use
- values from the user's external environment.
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- import os
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- More usefully, you can use the
- <envar>os.environ</envar>
- dictionary in your &SConscript;
- files to initialize &consenvs;
- with values from the user's external environment.
- See the next section,
- <xref linkend="sect-construction-environments"></xref>,
- for information on how to do this.
-
- </para>
-
- </section>
-
- <section id="sect-construction-environments">
- <title>Construction Environments</title>
-
- <para>
-
- It is rare that all of the software in a large,
- complicated system needs to be built the same way.
- For example, different source files may need different options
- enabled on the command line,
- or different executable programs need to be linked
- with different libraries.
- &SCons; accommodates these different build
- requirements by allowing you to create and
- configure multiple &consenvs;
- that control how the software is built.
- A &consenv; is an object
- that has a number of associated
- &consvars;, each with a name and a value.
- (A construction environment also has an attached
- set of &Builder; methods,
- about which we'll learn more later.)
-
- </para>
-
- <section>
- <title>Creating a &ConsEnv;: the &Environment; Function</title>
-
- <para>
-
- A &consenv; is created by the &Environment; method:
-
- </para>
-
- <sconstruct>
- env = Environment()
- </sconstruct>
-
- <para>
-
- By default, &SCons; initializes every
- new construction environment
- with a set of &consvars;
- based on the tools that it finds on your system,
- plus the default set of builder methods
- necessary for using those tools.
- The construction variables
- are initialized with values describing
- the C compiler,
- the Fortran compiler,
- the linker,
- etc.,
- as well as the command lines to invoke them.
-
- </para>
-
- <para>
-
- When you initialize a construction environment
- you can set the values of the
- environment's &consvars;
- to control how a program is built.
- For example:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- env = Environment(CC = 'gcc',
- CCFLAGS = '-O2')
-
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- The construction environment in this example
- is still initialized with the same default
- construction variable values,
- except that the user has explicitly specified use of the
- GNU C compiler &gcc;,
- and further specifies that the <literal>-O2</literal>
- (optimization level two)
- flag should be used when compiling the object file.
- In other words, the explicit initializations of
- &cv-link-CC; and &cv-link-CCFLAGS;
- override the default values in the newly-created
- construction environment.
- So a run from this example would look like:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Fetching Values From a &ConsEnv;</title>
-
- <para>
-
- You can fetch individual construction variables
- using the normal syntax
- for accessing individual named items in a Python dictionary:
-
- </para>
-
- <scons_example name="ex6">
- <file name="SConstruct" printme="1">
- env = Environment()
- print "CC is:", env['CC']
- </file>
- </scons_example>
-
- <para>
-
- This example &SConstruct; file doesn't build anything,
- but because it's actually a Python script,
- it will print the value of &cv-link-CC; for us:
-
- </para>
-
- <scons_output example="ex6">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- A construction environment, however,
- is actually an object with associated methods, etc.
- If you want to have direct access to only the
- dictionary of construction variables,
- you can fetch this using the &Dictionary; method:
-
- </para>
-
- <scons_example name="ex6b">
- <file name="SConstruct" printme="1">
- env = Environment(FOO = 'foo', BAR = 'bar')
- dict = env.Dictionary()
- for key in ['OBJSUFFIX', 'LIBSUFFIX', 'PROGSUFFIX']:
- print "key = %s, value = %s" % (key, dict[key])
- </file>
- </scons_example>
-
- <para>
-
- This &SConstruct; file
- will print the specified dictionary items for us on POSIX
- systems as follows:
-
- </para>
-
- <scons_output example="ex6b" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And on Windows:
-
- </para>
-
- <scons_output example="ex6b" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If you want to loop and print the values of
- all of the construction variables in a construction environment,
- the Python code to do that in sorted order might look something like:
-
- </para>
-
- <sconstruct>
- env = Environment()
- for item in sorted(env.Dictionary().items()):
- print "construction variable = '%s', value = '%s'" % item
- </sconstruct>
-
- </section>
-
- <section>
- <title>Expanding Values From a &ConsEnv;: the &subst; Method</title>
-
- <para>
-
- Another way to get information from
- a construction environment
- is to use the &subst; method
- on a string containing <literal>$</literal> expansions
- of construction variable names.
- As a simple example,
- the example from the previous
- section that used
- <literal>env['CC']</literal>
- to fetch the value of &cv-link-CC;
- could also be written as:
-
- </para>
-
- <sconstruct>
- env = Environment()
- print "CC is:", env.subst('$CC')
- </sconstruct>
-
- <para>
-
- One advantage of using
- &subst; to expand strings is
- that construction variables
- in the result get re-expanded until
- there are no expansions left in the string.
- So a simple fetch of a value like
- &cv-link-CCCOM;:
-
- </para>
-
- <sconstruct>
- env = Environment(CCFLAGS = '-DFOO')
- print "CCCOM is:", env['CCCOM']
- </sconstruct>
-
- <para>
-
- Will print the unexpanded value of &cv-CCCOM;,
- showing us the construction
- variables that still need to be expanded:
-
- </para>
-
- <screen>
- % <userinput>scons -Q</userinput>
- CCCOM is: $CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
- scons: `.' is up to date.
- </screen>
-
- <para>
-
- Calling the &subst; method on <varname>$CCOM</varname>,
- however:
-
- </para>
-
- <sconstruct>
- env = Environment(CCFLAGS = '-DFOO')
- print "CCCOM is:", env.subst('$CCCOM')
- </sconstruct>
-
- <para>
-
- Will recursively expand all of
- the construction variables prefixed
- with <literal>$</literal> (dollar signs),
- showing us the final output:
-
- </para>
-
- <screen>
- % <userinput>scons -Q</userinput>
- CCCOM is: gcc -DFOO -c -o
- scons: `.' is up to date.
- </screen>
-
- <para>
-
- Note that because we're not expanding this
- in the context of building something
- there are no target or source files
- for &cv-link-TARGET; and &cv-link-SOURCES; to expand.
-
- </para>
-
- </section>
-
- <section>
- <title>Handling Problems With Value Expansion</title>
-
- <para>
-
- If a problem occurs when expanding a construction variable,
- by default it is expanded to <literal>''</literal>
- (a null string), and will not cause scons to fail.
- </para>
-
- <scons_example name="missing1">
- <file name="SConstruct" printme="1">
- env = Environment()
- print "value is:", env.subst( '->$MISSING&lt;-' )
- </file>
- </scons_example>
-
- <scons_output example="missing1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
- This default behaviour can be changed using the &AllowSubstExceptions;
- function.
- When a problem occurs with a variable expansion it generates
- an exception, and the &AllowSubstExceptions; function controls
- which of these exceptions are actually fatal and which are
- allowed to occur safely. By default, &NameError; and &IndexError;
- are the two exceptions that are allowed to occur: so instead of
- causing scons to fail, these are caught, the variable expanded to
- <literal>''</literal>
- and scons execution continues.
- To require that all construction variable names exist, and that
- indexes out of range are not allowed, call &AllowSubstExceptions;
- with no extra arguments.
- </para>
-
- <scons_example name="missing2">
- <file name="SConstruct" printme="1">
- AllowSubstExceptions()
- env = Environment()
- print "value is:", env.subst( '->$MISSING&lt;-' )
- </file>
- </scons_example>
-
- <scons_output example="missing2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
- This can also be used to allow other exceptions that might occur,
- most usefully with the <literal>${...}</literal> construction
- variable syntax. For example, this would allow zero-division to
- occur in a variable expansion in addition to the default exceptions
- allowed
- </para>
-
- <scons_example name="missing3">
- <file name="SConstruct" printme="1">
- AllowSubstExceptions(IndexError, NameError, ZeroDivisionError)
- env = Environment()
- print "value is:", env.subst( '->${1 / 0}&lt;-' )
- </file>
- </scons_example>
-
- <scons_output example="missing3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
- <sconstruct>
- </sconstruct>
-
- <para>
- If &AllowSubstExceptions; is called multiple times, each call
- completely overwrites the previous list of allowed exceptions.
- </para>
-
- </section>
-
- <section>
- <title>Controlling the Default &ConsEnv;: the &DefaultEnvironment; Function</title>
-
- <para>
-
- All of the &Builder; functions that we've introduced so far,
- like &Program; and &Library;,
- actually use a default &consenv;
- that contains settings
- for the various compilers
- and other tools that
- &SCons; configures by default,
- or otherwise knows about
- and has discovered on your system.
- The goal of the default construction environment
- is to make many configurations to "just work"
- to build software using
- readily available tools
- with a minimum of configuration changes.
-
- </para>
-
- <para>
-
- You can, however, control the settings
- in the default construction environment
- by using the &DefaultEnvironment; function
- to initialize various settings:
-
- </para>
-
- <sconstruct>
-
- DefaultEnvironment(CC = '/usr/local/bin/gcc')
-
- </sconstruct>
-
- <para>
-
- When configured as above,
- all calls to the &Program;
- or &Object; Builder
- will build object files with the
- <filename>/usr/local/bin/gcc</filename>
- compiler.
-
- </para>
-
- <para>
-
- Note that the &DefaultEnvironment; function
- returns the initialized
- default construction environment object,
- which can then be manipulated like any
- other construction environment.
- So the following
- would be equivalent to the
- previous example,
- setting the &cv-CC;
- variable to <filename>/usr/local/bin/gcc</filename>
- but as a separate step after
- the default construction environment has been initialized:
-
- </para>
-
- <sconstruct>
-
- env = DefaultEnvironment()
- env['CC'] = '/usr/local/bin/gcc'
-
- </sconstruct>
-
- <para>
-
- One very common use of the &DefaultEnvironment; function
- is to speed up &SCons; initialization.
- As part of trying to make most default
- configurations "just work,"
- &SCons; will actually
- search the local system for installed
- compilers and other utilities.
- This search can take time,
- especially on systems with
- slow or networked file systems.
- If you know which compiler(s) and/or
- other utilities you want to configure,
- you can control the search
- that &SCons; performs
- by specifying some specific
- tool modules with which to
- initialize the default construction environment:
-
- </para>
-
- <sconstruct>
-
- env = DefaultEnvironment(tools = ['gcc', 'gnulink'],
- CC = '/usr/local/bin/gcc')
-
- </sconstruct>
-
- <para>
-
- So the above example would tell &SCons;
- to explicitly configure the default environment
- to use its normal GNU Compiler and GNU Linker settings
- (without having to search for them,
- or any other utilities for that matter),
- and specifically to use the compiler found at
- <filename>/usr/local/bin/gcc</filename>.
-
- </para>
-
- </section>
-
- <section>
- <title>Multiple &ConsEnvs;</title>
-
- <para>
-
- The real advantage of construction environments
- is that you can create as many different construction
- environments as you need,
- each tailored to a different way to build
- some piece of software or other file.
- If, for example, we need to build
- one program with the <literal>-O2</literal> flag
- and another with the <literal>-g</literal> (debug) flag,
- we would do this like so:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- opt = Environment(CCFLAGS = '-O2')
- dbg = Environment(CCFLAGS = '-g')
-
- opt.Program('foo', 'foo.c')
-
- dbg.Program('bar', 'bar.c')
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- <file name="bar.c">
- int main() { }
- </file>
- </scons_example>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- We can even use multiple construction environments to build
- multiple versions of a single program.
- If you do this by simply trying to use the
- &b-link-Program; builder with both environments, though,
- like this:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct" printme="1">
- opt = Environment(CCFLAGS = '-O2')
- dbg = Environment(CCFLAGS = '-g')
-
- opt.Program('foo', 'foo.c')
-
- dbg.Program('foo', 'foo.c')
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- Then &SCons; generates the following error:
-
- </para>
-
- <scons_output example="ex3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- This is because the two &b-Program; calls have
- each implicitly told &SCons; to generate an object file named
- <filename>foo.o</filename>,
- one with a &cv-link-CCFLAGS; value of
- <literal>-O2</literal>
- and one with a &cv-link-CCFLAGS; value of
- <literal>-g</literal>.
- &SCons; can't just decide that one of them
- should take precedence over the other,
- so it generates the error.
- To avoid this problem,
- we must explicitly specify
- that each environment compile
- <filename>foo.c</filename>
- to a separately-named object file
- using the &b-link-Object; builder, like so:
-
- </para>
-
- <scons_example name="ex4">
- <file name="SConstruct" printme="1">
- opt = Environment(CCFLAGS = '-O2')
- dbg = Environment(CCFLAGS = '-g')
-
- o = opt.Object('foo-opt', 'foo.c')
- opt.Program(o)
-
- d = dbg.Object('foo-dbg', 'foo.c')
- dbg.Program(d)
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- Notice that each call to the &b-Object; builder
- returns a value,
- an internal &SCons; object that
- represents the object file that will be built.
- We then use that object
- as input to the &b-Program; builder.
- This avoids having to specify explicitly
- the object file name in multiple places,
- and makes for a compact, readable
- &SConstruct; file.
- Our &SCons; output then looks like:
-
- </para>
-
- <scons_output example="ex4">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Making Copies of &ConsEnvs;: the &Clone; Method</title>
-
- <para>
-
- Sometimes you want more than one construction environment
- to share the same values for one or more variables.
- Rather than always having to repeat all of the common
- variables when you create each construction environment,
- you can use the &Clone; method
- to create a copy of a construction environment.
-
- </para>
-
- <para>
-
- Like the &Environment; call that creates a construction environment,
- the &Clone; method takes &consvar; assignments,
- which will override the values in the copied construction environment.
- For example, suppose we want to use &gcc;
- to create three versions of a program,
- one optimized, one debug, and one with neither.
- We could do this by creating a "base" construction environment
- that sets &cv-link-CC; to &gcc;,
- and then creating two copies,
- one which sets &cv-link-CCFLAGS; for optimization
- and the other which sets &cv-CCFLAGS; for debugging:
-
- </para>
-
- <scons_example name="ex5">
- <file name="SConstruct" printme="1">
- env = Environment(CC = 'gcc')
- opt = env.Clone(CCFLAGS = '-O2')
- dbg = env.Clone(CCFLAGS = '-g')
-
- env.Program('foo', 'foo.c')
-
- o = opt.Object('foo-opt', 'foo.c')
- opt.Program(o)
-
- d = dbg.Object('foo-dbg', 'foo.c')
- dbg.Program(d)
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- Then our output would look like:
-
- </para>
-
- <scons_output example="ex5">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Replacing Values: the &Replace; Method</title>
-
- <para>
-
- You can replace existing construction variable values
- using the &Replace; method:
-
- </para>
-
- <scons_example name="Replace1">
- <file name="SConstruct" printme="1">
- env = Environment(CCFLAGS = '-DDEFINE1')
- env.Replace(CCFLAGS = '-DDEFINE2')
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- The replacing value
- (<literal>-DDEFINE2</literal> in the above example)
- completely replaces the value in the
- construction environment:
-
- </para>
-
- <scons_output example="Replace1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- You can safely call &Replace;
- for construction variables that
- don't exist in the construction environment:
-
- </para>
-
- <scons_example name="Replace-nonexistent">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Replace(NEW_VARIABLE = 'xyzzy')
- print "NEW_VARIABLE =", env['NEW_VARIABLE']
- </file>
- </scons_example>
-
- <para>
-
- In this case,
- the construction variable simply
- gets added to the construction environment:
-
- </para>
-
- <scons_output example="Replace-nonexistent">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Because the variables
- aren't expanded until the construction environment
- is actually used to build the targets,
- and because &SCons; function and method calls
- are order-independent,
- the last replacement "wins"
- and is used to build all targets,
- regardless of the order in which
- the calls to Replace() are
- interspersed with calls to
- builder methods:
-
- </para>
-
- <scons_example name="Replace2">
- <file name="SConstruct" printme="1">
- env = Environment(CCFLAGS = '-DDEFINE1')
- print "CCFLAGS =", env['CCFLAGS']
- env.Program('foo.c')
-
- env.Replace(CCFLAGS = '-DDEFINE2')
- print "CCFLAGS =", env['CCFLAGS']
- env.Program('bar.c')
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- <file name="bar.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- The timing of when the replacement
- actually occurs relative
- to when the targets get built
- becomes apparent
- if we run &scons; without the <literal>-Q</literal>
- option:
-
- </para>
-
- <scons_output example="Replace2">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- Because the replacement occurs while
- the &SConscript; files are being read,
- the &cv-link-CCFLAGS;
- variable has already been set to
- <literal>-DDEFINE2</literal>
- by the time the &foo_o; target is built,
- even though the call to the &Replace;
- method does not occur until later in
- the &SConscript; file.
-
- </para>
-
- </section>
-
- <section>
- <title>Setting Values Only If They're Not Already Defined: the &SetDefault; Method</title>
-
- <para>
-
- Sometimes it's useful to be able to specify
- that a construction variable should be
- set to a value only if the construction environment
- does not already have that variable defined
- You can do this with the &SetDefault; method,
- which behaves similarly to the <function>set_default</function>
- method of Python dictionary objects:
-
- </para>
-
- <sconstruct>
- env.SetDefault(SPECIAL_FLAG = '-extra-option')
- </sconstruct>
-
- <para>
-
- This is especially useful
- when writing your own <literal>Tool</literal> modules
- to apply variables to construction environments.
- <!--
- See <xref linkend="chap-tool-modules"></xref>
- for more information about writing
- Tool modules.
- -->
-
- </para>
-
- </section>
-
- <section>
- <title>Appending to the End of Values: the &Append; Method</title>
-
- <para>
-
- You can append a value to
- an existing construction variable
- using the &Append; method:
-
- </para>
-
- <scons_example name="ex8">
- <file name="SConstruct" printme="1">
- env = Environment(CCFLAGS = ['-DMY_VALUE'])
- env.Append(CCFLAGS = ['-DLAST'])
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- &SCons; then supplies both the <literal>-DMY_VALUE</literal> and
- <literal>-DLAST</literal> flags when compiling the object file:
-
- </para>
-
- <scons_output example="ex8">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If the construction variable doesn't already exist,
- the &Append; method will create it:
-
- </para>
-
- <scons_example name="Append-nonexistent">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Append(NEW_VARIABLE = 'added')
- print "NEW_VARIABLE =", env['NEW_VARIABLE']
- </file>
- </scons_example>
-
- <para>
-
- Which yields:
-
- </para>
-
- <scons_output example="Append-nonexistent">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that the &Append; function tries to be "smart"
- about how the new value is appended to the old value.
- If both are strings, the previous and new strings
- are simply concatenated.
- Similarly, if both are lists,
- the lists are concatenated.
- If, however, one is a string and the other is a list,
- the string is added as a new element to the list.
-
- </para>
-
- </section>
-
- <section>
- <title>Appending Unique Values: the &AppendUnique; Method</title>
-
- <para>
-
- Some times it's useful to add a new value
- only if the existing construction variable
- doesn't already contain the value.
- This can be done using the &AppendUnique; method:
-
- </para>
-
- <sconstruct>
- env.AppendUnique(CCFLAGS=['-g'])
- </sconstruct>
-
- <para>
-
- In the above example,
- the <literal>-g</literal> would be added
- only if the &cv-CCFLAGS; variable
- does not already contain a <literal>-g</literal> value.
-
- </para>
-
- </section>
-
- <section>
- <title>Appending to the Beginning of Values: the &Prepend; Method</title>
-
- <para>
-
- You can append a value to the beginning of
- an existing construction variable
- using the &Prepend; method:
-
- </para>
-
- <scons_example name="ex9">
- <file name="SConstruct" printme="1">
- env = Environment(CCFLAGS = ['-DMY_VALUE'])
- env.Prepend(CCFLAGS = ['-DFIRST'])
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- int main() { }
- </file>
- </scons_example>
-
- <para>
-
- &SCons; then supplies both the <literal>-DFIRST</literal> and
- <literal>-DMY_VALUE</literal> flags when compiling the object file:
-
- </para>
-
- <scons_output example="ex9">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If the construction variable doesn't already exist,
- the &Prepend; method will create it:
-
- </para>
-
- <scons_example name="Prepend-nonexistent">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Prepend(NEW_VARIABLE = 'added')
- print "NEW_VARIABLE =", env['NEW_VARIABLE']
- </file>
- </scons_example>
-
- <para>
-
- Which yields:
-
- </para>
-
- <scons_output example="Prepend-nonexistent">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Like the &Append; function,
- the &Prepend; function tries to be "smart"
- about how the new value is appended to the old value.
- If both are strings, the previous and new strings
- are simply concatenated.
- Similarly, if both are lists,
- the lists are concatenated.
- If, however, one is a string and the other is a list,
- the string is added as a new element to the list.
-
- </para>
-
- </section>
-
- <section>
- <title>Prepending Unique Values: the &PrependUnique; Method</title>
-
- <para>
-
- Some times it's useful to add a new value
- to the beginning of a construction variable
- only if the existing value
- doesn't already contain the to-be-added value.
- This can be done using the &PrependUnique; method:
-
- </para>
-
- <sconstruct>
- env.PrependUnique(CCFLAGS=['-g'])
- </sconstruct>
-
- <para>
-
- In the above example,
- the <literal>-g</literal> would be added
- only if the &cv-CCFLAGS; variable
- does not already contain a <literal>-g</literal> value.
-
- </para>
-
- </section>
-
- </section>
-
- <section id="sect-execution-environments">
- <title>Controlling the Execution Environment for Issued Commands</title>
-
- <para>
-
- When &SCons; builds a target file,
- it does not execute the commands with
- the same external environment
- that you used to execute &SCons;.
- Instead, it uses the dictionary
- stored in the &cv-link-ENV; construction variable
- as the external environment
- for executing commands.
-
- </para>
-
- <para>
-
- The most important ramification of this behavior
- is that the &PATH; environment variable,
- which controls where the operating system
- will look for commands and utilities,
- is not the same as in the external environment
- from which you called &SCons;.
- This means that &SCons; will not, by default,
- necessarily find all of the tools
- that you can execute from the command line.
-
- </para>
-
- <para>
-
- The default value of the &PATH; environment variable
- on a POSIX system
- is <literal>/usr/local/bin:/bin:/usr/bin</literal>.
- The default value of the &PATH; environment variable
- on a Windows system comes from the Windows registry
- value for the command interpreter.
- If you want to execute any commands--compilers, linkers, etc.--that
- are not in these default locations,
- you need to set the &PATH; value
- in the &cv-ENV; dictionary
- in your construction environment.
-
- </para>
-
- <para>
-
- The simplest way to do this is to initialize explicitly
- the value when you create the construction environment;
- this is one way to do that:
-
- </para>
-
- <sconstruct>
- path = ['/usr/local/bin', '/bin', '/usr/bin']
- env = Environment(ENV = {'PATH' : path})
- </sconstruct>
-
- <para>
-
- Assign a dictionary to the &cv-ENV;
- construction variable in this way
- completely resets the external environment
- so that the only variable that will be
- set when external commands are executed
- will be the &PATH; value.
- If you want to use the rest of
- the values in &cv-ENV; and only
- set the value of &PATH;,
- the most straightforward way is probably:
-
- </para>
-
- <sconstruct>
- env['ENV']['PATH'] = ['/usr/local/bin', '/bin', '/usr/bin']
- </sconstruct>
-
- <para>
-
- Note that &SCons; does allow you to define
- the directories in the &PATH; in a string,
- separated by the pathname-separator character
- for your system (':' on POSIX systems, ';' on Windows):
-
- </para>
-
- <sconstruct>
- env['ENV']['PATH'] = '/usr/local/bin:/bin:/usr/bin'
- </sconstruct>
-
- <para>
-
- But doing so makes your &SConscript; file less portable,
- (although in this case that may not be a huge concern
- since the directories you list are likley system-specific, anyway).
-
- </para>
-
- <!--
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Command('foo', [], '__ROOT__/usr/bin/printenv.py')
- </file>
- <file name="__ROOT__/usr/bin/printenv.py" chmod="0755">
- #!/usr/bin/env python
- import os
- import sys
- if len(sys.argv) &gt; 1:
- keys = sys.argv[1:]
- else:
- keys = sorted(os.environ.keys())
- for key in keys:
- print " " + key + "=" + os.environ[key]
- </file>
- </scons_example>
-
- <para>
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
-
- <section>
- <title>Propagating &PATH; From the External Environment</title>
-
- <para>
-
- You may want to propagate the external &PATH;
- to the execution environment for commands.
- You do this by initializing the &PATH;
- variable with the &PATH; value from
- the <literal>os.environ</literal>
- dictionary,
- which is Python's way of letting you
- get at the external environment:
-
- </para>
-
- <sconstruct>
- import os
- env = Environment(ENV = {'PATH' : os.environ['PATH']})
- </sconstruct>
-
- <para>
-
- Alternatively, you may find it easier
- to just propagate the entire external
- environment to the execution environment
- for commands.
- This is simpler to code than explicity
- selecting the &PATH; value:
-
- </para>
-
- <sconstruct>
- import os
- env = Environment(ENV = os.environ)
- </sconstruct>
-
- <para>
-
- Either of these will guarantee that
- &SCons; will be able to execute
- any command that you can execute from the command line.
- The drawback is that the build can behave
- differently if it's run by people with
- different &PATH; values in their environment--for example,
- if both the <literal>/bin</literal> and
- <literal>/usr/local/bin</literal> directories
- have different &cc; commands,
- then which one will be used to compile programs
- will depend on which directory is listed
- first in the user's &PATH; variable.
-
- </para>
-
- </section>
-
- <section>
- <title>Adding to <varname>PATH</varname> Values in the Execution Environment</title>
-
- <para>
-
- One of the most common requirements
- for manipulating a variable in the execution environment
- is to add one or more custom directories to a search
- like the <envar>$PATH</envar> variable on Linux or POSIX systems,
- or the <envar>%PATH%</envar> variable on Windows,
- so that a locally-installed compiler or other utility
- can be found when &SCons; tries to execute it to update a target.
- &SCons; provides &PrependENVPath; and &AppendENVPath; functions
- to make adding things to execution variables convenient.
- You call these functions by specifying the variable
- to which you want the value added,
- and then value itself.
- So to add some <filename>/usr/local</filename> directories
- to the <envar>$PATH</envar> and <envar>$LIB</envar> variables,
- you might:
-
- </para>
-
- <sconstruct>
- env = Environment(ENV = os.environ)
- env.PrependENVPath('PATH', '/usr/local/bin')
- env.AppendENVPath('LIB', '/usr/local/lib')
- </sconstruct>
-
- <para>
-
- Note that the added values are strings,
- and if you want to add multiple directories to
- a variable like <envar>$PATH</envar>,
- you must include the path separate character
- (<literal>:</literal> on Linux or POSIX,
- <literal>;</literal> on Windows)
- in the string.
-
- </para>
-
- </section>
-
- </section>
diff --git a/doc/user/environments.xml b/doc/user/environments.xml
index b0a7498..64625f4 100644
--- a/doc/user/environments.xml
+++ b/doc/user/environments.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-environments"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Environments</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -466,9 +488,14 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- import os
- </programlisting>
+ <scons_example name="environments_ex1">
+ <file name="SConstruct" printme="1">
+import os
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -518,9 +545,9 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment()
- </programlisting>
+ <sconstruct>
+env = Environment()
+ </sconstruct>
<para>
@@ -550,14 +577,17 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- import os
-
- env = Environment(CC = 'gcc',
- CCFLAGS = '-O2')
+ <scons_example name="environments_ex1">
+ <file name="SConstruct" printme="1">
+ env = Environment(CC = 'gcc',
+ CCFLAGS = '-O2')
- env.Program('foo.c')
- </programlisting>
+ env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -577,11 +607,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- gcc -o foo.o -c -O2 foo.c
- gcc -o foo foo.o
- </screen>
+ <scons_output example="environments_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -596,10 +624,12 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment()
- print "CC is:", env['CC']
- </programlisting>
+ <scons_example name="environments_ex6">
+ <file name="SConstruct" printme="1">
+env = Environment()
+print "CC is:", env['CC']
+ </file>
+ </scons_example>
<para>
@@ -609,11 +639,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- CC is: cc
- scons: `.' is up to date.
- </screen>
+ <scons_output example="environments_ex6" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -625,12 +653,14 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(FOO = 'foo', BAR = 'bar')
- dict = env.Dictionary()
- for key in ['OBJSUFFIX', 'LIBSUFFIX', 'PROGSUFFIX']:
- print "key = %s, value = %s" % (key, dict[key])
- </programlisting>
+ <scons_example name="environments_ex6b">
+ <file name="SConstruct" printme="1">
+env = Environment(FOO = 'foo', BAR = 'bar')
+dict = env.Dictionary()
+for key in ['OBJSUFFIX', 'LIBSUFFIX', 'PROGSUFFIX']:
+ print "key = %s, value = %s" % (key, dict[key])
+ </file>
+ </scons_example>
<para>
@@ -640,13 +670,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- key = OBJSUFFIX, value = .o
- key = LIBSUFFIX, value = .a
- key = PROGSUFFIX, value =
- scons: `.' is up to date.
- </screen>
+ <scons_output example="environments_ex6b" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -654,13 +680,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- key = OBJSUFFIX, value = .obj
- key = LIBSUFFIX, value = .lib
- key = PROGSUFFIX, value = .exe
- scons: `.' is up to date.
- </screen>
+ <scons_output example="environments_ex6b" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -670,11 +692,11 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment()
- for item in sorted(env.Dictionary().items()):
- print "construction variable = '%s', value = '%s'" % item
- </programlisting>
+ <sconstruct>
+env = Environment()
+for item in sorted(env.Dictionary().items()):
+ print "construction variable = '%s', value = '%s'" % item
+ </sconstruct>
</section>
@@ -697,10 +719,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment()
- print "CC is:", env.subst('$CC')
- </programlisting>
+ <sconstruct>
+env = Environment()
+print "CC is:", env.subst('$CC')
+ </sconstruct>
<para>
@@ -714,10 +736,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(CCFLAGS = '-DFOO')
- print "CCCOM is:", env['CCCOM']
- </programlisting>
+ <sconstruct>
+env = Environment(CCFLAGS = '-DFOO')
+print "CCCOM is:", env['CCCOM']
+ </sconstruct>
<para>
@@ -728,9 +750,9 @@ environment, of directory names, suffixes, etc.
</para>
<screen>
- % <userinput>scons -Q</userinput>
- CCCOM is: $CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
- scons: `.' is up to date.
+% <userinput>scons -Q</userinput>
+CCCOM is: $CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
+scons: `.' is up to date.
</screen>
<para>
@@ -740,10 +762,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(CCFLAGS = '-DFOO')
- print "CCCOM is:", env.subst('$CCCOM')
- </programlisting>
+ <sconstruct>
+env = Environment(CCFLAGS = '-DFOO')
+print "CCCOM is:", env.subst('$CCCOM')
+ </sconstruct>
<para>
@@ -755,9 +777,9 @@ environment, of directory names, suffixes, etc.
</para>
<screen>
- % <userinput>scons -Q</userinput>
- CCCOM is: gcc -DFOO -c -o
- scons: `.' is up to date.
+% <userinput>scons -Q</userinput>
+CCCOM is: gcc -DFOO -c -o
+scons: `.' is up to date.
</screen>
<para>
@@ -781,16 +803,16 @@ environment, of directory names, suffixes, etc.
(a null string), and will not cause scons to fail.
</para>
- <programlisting>
- env = Environment()
- print "value is:", env.subst( '-&gt;$MISSING&lt;-' )
- </programlisting>
+ <scons_example name="environments_missing1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+print "value is:", env.subst( '->$MISSING&lt;-' )
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- value is: -&gt;&lt;-
- scons: `.' is up to date.
- </screen>
+ <scons_output example="environments_missing1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
This default behaviour can be changed using the &AllowSubstExceptions;
@@ -808,18 +830,17 @@ environment, of directory names, suffixes, etc.
with no extra arguments.
</para>
- <programlisting>
- AllowSubstExceptions()
- env = Environment()
- print "value is:", env.subst( '-&gt;$MISSING&lt;-' )
- </programlisting>
+ <scons_example name="environments_missing2">
+ <file name="SConstruct" printme="1">
+AllowSubstExceptions()
+env = Environment()
+print "value is:", env.subst( '->$MISSING&lt;-' )
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- value is:
- scons: *** NameError `MISSING' trying to evaluate `$MISSING'
- File "/home/my/project/SConstruct", line 3, in &lt;module&gt;
- </screen>
+ <scons_output example="environments_missing2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
This can also be used to allow other exceptions that might occur,
@@ -829,19 +850,17 @@ environment, of directory names, suffixes, etc.
allowed
</para>
- <programlisting>
- AllowSubstExceptions(IndexError, NameError, ZeroDivisionError)
- env = Environment()
- print "value is:", env.subst( '-&gt;${1 / 0}&lt;-' )
- </programlisting>
+ <scons_example name="environments_missing3">
+ <file name="SConstruct" printme="1">
+AllowSubstExceptions(IndexError, NameError, ZeroDivisionError)
+env = Environment()
+print "value is:", env.subst( '->${1 / 0}&lt;-' )
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- value is: -&gt;&lt;-
- scons: `.' is up to date.
- </screen>
- <programlisting>
- </programlisting>
+ <scons_output example="environments_missing3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
If &AllowSubstExceptions; is called multiple times, each call
@@ -881,11 +900,9 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
-
- DefaultEnvironment(CC = '/usr/local/bin/gcc')
-
- </programlisting>
+ <sconstruct>
+DefaultEnvironment(CC = '/usr/local/bin/gcc')
+ </sconstruct>
<para>
@@ -915,12 +932,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
-
- env = DefaultEnvironment()
- env['CC'] = '/usr/local/bin/gcc'
-
- </programlisting>
+ <sconstruct>
+env = DefaultEnvironment()
+env['CC'] = '/usr/local/bin/gcc'
+ </sconstruct>
<para>
@@ -944,12 +959,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
-
- env = DefaultEnvironment(tools = ['gcc', 'gnulink'],
- CC = '/usr/local/bin/gcc')
-
- </programlisting>
+ <sconstruct>
+env = DefaultEnvironment(tools = ['gcc', 'gnulink'],
+ CC = '/usr/local/bin/gcc')
+ </sconstruct>
<para>
@@ -982,22 +995,26 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- opt = Environment(CCFLAGS = '-O2')
- dbg = Environment(CCFLAGS = '-g')
+ <scons_example name="environments_ex2">
+ <file name="SConstruct" printme="1">
+opt = Environment(CCFLAGS = '-O2')
+dbg = Environment(CCFLAGS = '-g')
- opt.Program('foo', 'foo.c')
+opt.Program('foo', 'foo.c')
- dbg.Program('bar', 'bar.c')
- </programlisting>
+dbg.Program('bar', 'bar.c')
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ <file name="bar.c">
+int main() { }
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o bar.o -c -g bar.c
- cc -o bar bar.o
- cc -o foo.o -c -O2 foo.c
- cc -o foo foo.o
- </screen>
+ <scons_output example="environments_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1009,14 +1026,19 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- opt = Environment(CCFLAGS = '-O2')
- dbg = Environment(CCFLAGS = '-g')
+ <scons_example name="environments_ex3">
+ <file name="SConstruct" printme="1">
+opt = Environment(CCFLAGS = '-O2')
+dbg = Environment(CCFLAGS = '-g')
- opt.Program('foo', 'foo.c')
+opt.Program('foo', 'foo.c')
- dbg.Program('foo', 'foo.c')
- </programlisting>
+dbg.Program('foo', 'foo.c')
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -1024,12 +1046,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
-
- scons: *** Two environments with different actions were specified for the same target: foo.o
- File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
- </screen>
+ <scons_output example="environments_ex3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1052,16 +1071,21 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- opt = Environment(CCFLAGS = '-O2')
- dbg = Environment(CCFLAGS = '-g')
+ <scons_example name="environments_ex4">
+ <file name="SConstruct" printme="1">
+opt = Environment(CCFLAGS = '-O2')
+dbg = Environment(CCFLAGS = '-g')
- o = opt.Object('foo-opt', 'foo.c')
- opt.Program(o)
+o = opt.Object('foo-opt', 'foo.c')
+opt.Program(o)
- d = dbg.Object('foo-dbg', 'foo.c')
- dbg.Program(d)
- </programlisting>
+d = dbg.Object('foo-dbg', 'foo.c')
+dbg.Program(d)
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -1079,13 +1103,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o foo-dbg.o -c -g foo.c
- cc -o foo-dbg foo-dbg.o
- cc -o foo-opt.o -c -O2 foo.c
- cc -o foo-opt foo-opt.o
- </screen>
+ <scons_output example="environments_ex4" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -1119,19 +1139,24 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(CC = 'gcc')
- opt = env.Clone(CCFLAGS = '-O2')
- dbg = env.Clone(CCFLAGS = '-g')
+ <scons_example name="environments_ex5">
+ <file name="SConstruct" printme="1">
+env = Environment(CC = 'gcc')
+opt = env.Clone(CCFLAGS = '-O2')
+dbg = env.Clone(CCFLAGS = '-g')
- env.Program('foo', 'foo.c')
+env.Program('foo', 'foo.c')
- o = opt.Object('foo-opt', 'foo.c')
- opt.Program(o)
+o = opt.Object('foo-opt', 'foo.c')
+opt.Program(o)
- d = dbg.Object('foo-dbg', 'foo.c')
- dbg.Program(d)
- </programlisting>
+d = dbg.Object('foo-dbg', 'foo.c')
+dbg.Program(d)
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -1139,15 +1164,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- gcc -o foo.o -c foo.c
- gcc -o foo foo.o
- gcc -o foo-dbg.o -c -g foo.c
- gcc -o foo-dbg foo-dbg.o
- gcc -o foo-opt.o -c -O2 foo.c
- gcc -o foo-opt foo-opt.o
- </screen>
+ <scons_output example="environments_ex5" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -1161,11 +1180,16 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(CCFLAGS = '-DDEFINE1')
- env.Replace(CCFLAGS = '-DDEFINE2')
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="environments_Replace1">
+ <file name="SConstruct" printme="1">
+env = Environment(CCFLAGS = '-DDEFINE1')
+env.Replace(CCFLAGS = '-DDEFINE2')
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -1176,11 +1200,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o foo.o -c -DDEFINE2 foo.c
- cc -o foo foo.o
- </screen>
+ <scons_output example="environments_Replace1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1190,11 +1212,13 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment()
- env.Replace(NEW_VARIABLE = 'xyzzy')
- print "NEW_VARIABLE =", env['NEW_VARIABLE']
- </programlisting>
+ <scons_example name="environments_Replace-nonexistent">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Replace(NEW_VARIABLE = 'xyzzy')
+print "NEW_VARIABLE =", env['NEW_VARIABLE']
+ </file>
+ </scons_example>
<para>
@@ -1204,11 +1228,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- NEW_VARIABLE = xyzzy
- scons: `.' is up to date.
- </screen>
+ <scons_output example="environments_Replace-nonexistent" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1226,15 +1248,23 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(CCFLAGS = '-DDEFINE1')
- print "CCFLAGS =", env['CCFLAGS']
- env.Program('foo.c')
-
- env.Replace(CCFLAGS = '-DDEFINE2')
- print "CCFLAGS =", env['CCFLAGS']
- env.Program('bar.c')
- </programlisting>
+ <scons_example name="environments_Replace2">
+ <file name="SConstruct" printme="1">
+env = Environment(CCFLAGS = '-DDEFINE1')
+print "CCFLAGS =", env['CCFLAGS']
+env.Program('foo.c')
+
+env.Replace(CCFLAGS = '-DDEFINE2')
+print "CCFLAGS =", env['CCFLAGS']
+env.Program('bar.c')
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ <file name="bar.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -1247,19 +1277,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- CCFLAGS = -DDEFINE1
- CCFLAGS = -DDEFINE2
- scons: done reading SConscript files.
- scons: Building targets ...
- cc -o bar.o -c -DDEFINE2 bar.c
- cc -o bar bar.o
- cc -o foo.o -c -DDEFINE2 foo.c
- cc -o foo foo.o
- scons: done building targets.
- </screen>
+ <scons_output example="environments_Replace2" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -1292,9 +1312,9 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env.SetDefault(SPECIAL_FLAG = '-extra-option')
- </programlisting>
+ <sconstruct>
+env.SetDefault(SPECIAL_FLAG = '-extra-option')
+ </sconstruct>
<para>
@@ -1322,11 +1342,16 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(CCFLAGS = ['-DMY_VALUE'])
- env.Append(CCFLAGS = ['-DLAST'])
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="environments_ex8">
+ <file name="SConstruct" printme="1">
+env = Environment(CCFLAGS = ['-DMY_VALUE'])
+env.Append(CCFLAGS = ['-DLAST'])
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -1335,11 +1360,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o foo.o -c -DMY_VALUE -DLAST foo.c
- cc -o foo foo.o
- </screen>
+ <scons_output example="environments_ex8" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1348,11 +1371,13 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment()
- env.Append(NEW_VARIABLE = 'added')
- print "NEW_VARIABLE =", env['NEW_VARIABLE']
- </programlisting>
+ <scons_example name="environments_Append-nonexistent">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Append(NEW_VARIABLE = 'added')
+print "NEW_VARIABLE =", env['NEW_VARIABLE']
+ </file>
+ </scons_example>
<para>
@@ -1360,11 +1385,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- NEW_VARIABLE = added
- scons: `.' is up to date.
- </screen>
+ <scons_output example="environments_Append-nonexistent" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1393,9 +1416,9 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env.AppendUnique(CCFLAGS=['-g'])
- </programlisting>
+ <sconstruct>
+env.AppendUnique(CCFLAGS=['-g'])
+ </sconstruct>
<para>
@@ -1419,11 +1442,16 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(CCFLAGS = ['-DMY_VALUE'])
- env.Prepend(CCFLAGS = ['-DFIRST'])
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="environments_ex9">
+ <file name="SConstruct" printme="1">
+env = Environment(CCFLAGS = ['-DMY_VALUE'])
+env.Prepend(CCFLAGS = ['-DFIRST'])
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+int main() { }
+ </file>
+ </scons_example>
<para>
@@ -1432,11 +1460,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o foo.o -c -DFIRST -DMY_VALUE foo.c
- cc -o foo foo.o
- </screen>
+ <scons_output example="environments_ex9" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1445,11 +1471,13 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment()
- env.Prepend(NEW_VARIABLE = 'added')
- print "NEW_VARIABLE =", env['NEW_VARIABLE']
- </programlisting>
+ <scons_example name="environments_Prepend-nonexistent">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Prepend(NEW_VARIABLE = 'added')
+print "NEW_VARIABLE =", env['NEW_VARIABLE']
+ </file>
+ </scons_example>
<para>
@@ -1457,11 +1485,9 @@ environment, of directory names, suffixes, etc.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- NEW_VARIABLE = added
- scons: `.' is up to date.
- </screen>
+ <scons_output example="environments_Prepend-nonexistent" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1492,9 +1518,9 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env.PrependUnique(CCFLAGS=['-g'])
- </programlisting>
+ <sconstruct>
+env.PrependUnique(CCFLAGS=['-g'])
+ </sconstruct>
<para>
@@ -1563,10 +1589,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- path = ['/usr/local/bin', '/bin', '/usr/bin']
- env = Environment(ENV = {'PATH' : path})
- </programlisting>
+ <sconstruct>
+path = ['/usr/local/bin', '/bin', '/usr/bin']
+env = Environment(ENV = {'PATH' : path})
+ </sconstruct>
<para>
@@ -1583,9 +1609,9 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env['ENV']['PATH'] = ['/usr/local/bin', '/bin', '/usr/bin']
- </programlisting>
+ <sconstruct>
+env['ENV']['PATH'] = ['/usr/local/bin', '/bin', '/usr/bin']
+ </sconstruct>
<para>
@@ -1596,9 +1622,9 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env['ENV']['PATH'] = '/usr/local/bin:/bin:/usr/bin'
- </programlisting>
+ <sconstruct>
+env['ENV']['PATH'] = '/usr/local/bin:/bin:/usr/bin'
+ </sconstruct>
<para>
@@ -1610,21 +1636,21 @@ environment, of directory names, suffixes, etc.
<!--
- <scons_example name="ex1">
+ <scons_example name="environments_ex1">
<file name="SConstruct" printme="1">
- env = Environment()
- env.Command('foo', [], '__ROOT__/usr/bin/printenv.py')
+env = Environment()
+env.Command('foo', [], '__ROOT__/usr/bin/printenv.py')
</file>
<file name="__ROOT__/usr/bin/printenv.py" chmod="0755">
- #!/usr/bin/env python
- import os
- import sys
- if len(sys.argv) &gt; 1:
- keys = sys.argv[1:]
- else:
- keys = sorted(os.environ.keys())
- for key in keys:
- print " " + key + "=" + os.environ[key]
+#!/usr/bin/env python
+import os
+import sys
+if len(sys.argv) &gt; 1:
+ keys = sys.argv[1:]
+else:
+ keys = sorted(os.environ.keys())
+for key in keys:
+ print " " + key + "=" + os.environ[key]
</file>
</scons_example>
@@ -1632,7 +1658,7 @@ environment, of directory names, suffixes, etc.
</para>
- <scons_output example="ex1">
+ <scons_output example="environments_ex1" suffix="2">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
@@ -1654,10 +1680,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- import os
- env = Environment(ENV = {'PATH' : os.environ['PATH']})
- </programlisting>
+ <sconstruct>
+import os
+env = Environment(ENV = {'PATH' : os.environ['PATH']})
+ </sconstruct>
<para>
@@ -1670,10 +1696,10 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- import os
- env = Environment(ENV = os.environ)
- </programlisting>
+ <sconstruct>
+import os
+env = Environment(ENV = os.environ)
+ </sconstruct>
<para>
@@ -1717,11 +1743,11 @@ environment, of directory names, suffixes, etc.
</para>
- <programlisting>
- env = Environment(ENV = os.environ)
- env.PrependENVPath('PATH', '/usr/local/bin')
- env.AppendENVPath('LIB', '/usr/local/lib')
- </programlisting>
+ <sconstruct>
+env = Environment(ENV = os.environ)
+env.PrependENVPath('PATH', '/usr/local/bin')
+env.AppendENVPath('LIB', '/usr/local/lib')
+ </sconstruct>
<para>
@@ -1738,3 +1764,5 @@ environment, of directory names, suffixes, etc.
</section>
</section>
+
+</chapter>
diff --git a/doc/user/epub.css b/doc/user/epub.css
new file mode 100644
index 0000000..31cebe5
--- /dev/null
+++ b/doc/user/epub.css
@@ -0,0 +1,33 @@
+/* This defines styles and classes used in the book */
+body { }
+code { font-family: monospace; }
+h1, h2, h3, h4, h5, h6 { text-align: center; margin-bottom:2em;}
+h1.title { }
+h2.author { }
+p{
+ padding:0;
+ margin:0;
+ text-indent:2em;
+}
+blockquote{
+ margin-left:3em;
+ margin-right:3em;
+}
+.caption{
+ text-align:center;
+ font-style:italic;
+ margin-bottom:1em;
+ margin-top:.2em;
+ font-size:.8em;
+}
+blockquote > p{
+ text-indent:0;
+ margin-bottom:1em;
+}
+img{
+ display:block;
+ margin-left: auto;
+ margin-right: auto;
+ text-align:center;
+ margin-top:1em;
+}
diff --git a/doc/user/example.in b/doc/user/epub.xsl
index 9e8078c..ecc5c8b 100644
--- a/doc/user/example.in
+++ b/doc/user/epub.xsl
@@ -1,41 +1,36 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- XXX
-
- </para>
-
- <section>
- <title>XXX</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl"/>
+
+<xsl:param name="html.stylesheet" select="'epub.css'"/>
+
+</xsl:stylesheet>
+
diff --git a/doc/user/errors.xml b/doc/user/errors.xml
index 9e8078c..174d4b7 100644
--- a/doc/user/errors.xml
+++ b/doc/user/errors.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-errors"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Errors</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +61,4 @@
</para>
</section>
+</chapter>
diff --git a/doc/user/example.xml b/doc/user/example.xml
index 9e8078c..0165b95 100644
--- a/doc/user/example.xml
+++ b/doc/user/example.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<appendix id="app-example"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Complex &SCons; Example</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -39,3 +61,5 @@
</para>
</section>
+
+</appendix>
diff --git a/doc/user/factories.in b/doc/user/factories.in
deleted file mode 100644
index 146f695..0000000
--- a/doc/user/factories.in
+++ /dev/null
@@ -1,507 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- &SCons; provides a number of platform-independent functions,
- called <literal>factories</literal>,
- that perform common file system manipulations
- like copying, moving or deleting files and directories,
- or making directories.
- These functions are <literal>factories</literal>
- because they don't perform the action
- at the time they're called,
- they each return an &Action; object
- that can be executed at the appropriate time.
-
- </para>
-
- <section>
- <title>Copying Files or Directories: The &Copy; Factory</title>
-
- <para>
-
- Suppose you want to arrange to make a copy of a file,
- and don't have a suitable pre-existing builder.
- <footnote>
- <para>
- Unfortunately, in the early days of SCons design,
- we used the name &Copy; for the function that
- returns a copy of the environment,
- otherwise that would be the logical choice for
- a Builder that copies a file or directory tree
- to a target location.
- </para>
- </footnote>
- One way would be to use the &Copy; action factory
- in conjunction with the &Command; builder:
-
- </para>
-
- <scons_example name="Copy1">
- <file name="SConstruct" printme="1">
- Command("file.out", "file.in", Copy("$TARGET", "$SOURCE"))
- </file>
- <file name="file.in">file.in</file>
- </scons_example>
-
- <para>
-
- Notice that the action returned by the &Copy; factory
- will expand the &cv-link-TARGET; and &cv-link-SOURCE; strings
- at the time &file_out; is built,
- and that the order of the arguments
- is the same as that of a builder itself--that is,
- target first, followed by source:
-
- </para>
-
- <scons_output example="Copy1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- You can, of course, name a file explicitly
- instead of using &cv-TARGET; or &cv-SOURCE;:
-
- </para>
-
- <scons_example name="Copy2">
- <file name="SConstruct" printme="1">
- Command("file.out", [], Copy("$TARGET", "file.in"))
- </file>
- <file name="file.in">file.in</file>
- </scons_example>
-
- <para>
-
- Which executes as:
-
- </para>
-
- <scons_output example="Copy2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The usefulness of the &Copy; factory
- becomes more apparent when
- you use it in a list of actions
- passed to the &Command; builder.
- For example, suppose you needed to run a
- file through a utility that only modifies files in-place,
- and can't "pipe" input to output.
- One solution is to copy the source file
- to a temporary file name,
- run the utility,
- and then copy the modified temporary file to the target,
- which the &Copy; factory makes extremely easy:
-
- </para>
-
- <scons_example name="Copy3">
- <file name="S" printme="1">
- Command("file.out", "file.in",
- [
- Copy("tempfile", "$SOURCE"),
- "modify tempfile",
- Copy("$TARGET", "tempfile"),
- ])
- </file>
- <file name="SConstruct">
- env = DefaultEnvironment()
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- SConscript('S')
- </file>
- <file name="file.in">file.in</file>
- <file name="modify" chmod="0755">
- touch $*
- </file>
- </scons_example>
-
- <para>
-
- The output then looks like:
-
- </para>
-
- <scons_output example="Copy3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Deleting Files or Directories: The &Delete; Factory</title>
-
- <para>
-
- If you need to delete a file,
- then the &Delete; factory
- can be used in much the same way as
- the &Copy; factory.
- For example, if we want to make sure that
- the temporary file
- in our last example doesn't exist before
- we copy to it,
- we could add &Delete; to the beginning
- of the command list:
-
- </para>
-
- <scons_example name="Delete1">
- <file name="S" printme="1">
- Command("file.out", "file.in",
- [
- Delete("tempfile"),
- Copy("tempfile", "$SOURCE"),
- "modify tempfile",
- Copy("$TARGET", "tempfile"),
- ])
- </file>
- <file name="SConstruct">
- env = DefaultEnvironment()
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- SConscript('S')
- </file>
- <file name="file.in">file.in</file>
- <file name="modify" chmod="0755">
- touch $*
- </file>
- </scons_example>
-
- <para>
-
- Which then executes as follows:
-
- </para>
-
- <scons_output example="Delete1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Of course, like all of these &Action; factories,
- the &Delete; factory also expands
- &cv-link-TARGET; and &cv-link-SOURCE; variables appropriately.
- For example:
-
- </para>
-
- <scons_example name="Delete2">
- <file name="SConstruct" printme="1">
- Command("file.out", "file.in",
- [
- Delete("$TARGET"),
- Copy("$TARGET", "$SOURCE")
- ])
- </file>
- <file name="file.in">file.in</file>
- </scons_example>
-
- <para>
-
- Executes as:
-
- </para>
-
- <scons_output example="Delete2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note, however, that you typically don't need to
- call the &Delete; factory explicitly in this way;
- by default, &SCons; deletes its target(s)
- for you before executing any action.
-
- </para>
-
- <para>
-
- One word of caution about using the &Delete; factory:
- it has the same variable expansions available
- as any other factory, including the &cv-SOURCE; variable.
- Specifying <literal>Delete("$SOURCE")</literal>
- is not something you usually want to do!
-
- </para>
-
- </section>
-
- <section>
- <title>Moving (Renaming) Files or Directories: The &Move; Factory</title>
-
- <para>
-
- The &Move; factory
- allows you to rename a file or directory.
- For example, if we don't want to copy the temporary file,
- we could use:
-
- </para>
-
- <scons_example name="Move">
- <file name="S" printme="1">
- Command("file.out", "file.in",
- [
- Copy("tempfile", "$SOURCE"),
- "modify tempfile",
- Move("$TARGET", "tempfile"),
- ])
- </file>
- <file name="SConstruct">
- env = DefaultEnvironment()
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- SConscript('S')
- </file>
- <file name="file.in">file.in</file>
- <file name="modify" chmod="0755">
- touch $*
- </file>
- </scons_example>
-
- <para>
-
- Which would execute as:
-
- </para>
-
- <scons_output example="Move">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Updating the Modification Time of a File: The &Touch; Factory</title>
-
- <para>
-
- If you just need to update the
- recorded modification time for a file,
- use the &Touch; factory:
-
- </para>
-
- <scons_example name="Touch">
- <file name="S" printme="1">
- Command("file.out", "file.in",
- [
- Copy("$TARGET", "$SOURCE"),
- Touch("$TARGET"),
- ])
- </file>
- <file name="SConstruct">
- env = DefaultEnvironment()
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- SConscript('S')
- </file>
- <file name="file.in">file.in</file>
- </scons_example>
-
- <para>
-
- Which executes as:
-
- </para>
-
- <scons_output example="Touch">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Creating a Directory: The &Mkdir; Factory</title>
-
- <para>
-
- If you need to create a directory,
- use the &Mkdir; factory.
- For example, if we need to process
- a file in a temporary directory
- in which the processing tool
- will create other files that we don't care about,
- you could use:
-
- </para>
-
- <scons_example name="Mkdir">
- <file name="S" printme="1">
- Command("file.out", "file.in",
- [
- Delete("tempdir"),
- Mkdir("tempdir"),
- Copy("tempdir/${SOURCE.file}", "$SOURCE"),
- "process tempdir",
- Move("$TARGET", "tempdir/output_file"),
- Delete("tempdir"),
- ])
- </file>
- <file name="SConstruct">
- env = DefaultEnvironment()
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- SConscript('S')
- </file>
- <file name="file.in">file.in</file>
- <file name="process" chmod="0755">
- touch $*
- </file>
- </scons_example>
-
- <para>
-
- Which executes as:
-
- </para>
-
- <scons_output example="Mkdir">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Changing File or Directory Permissions: The &Chmod; Factory</title>
-
- <para>
-
- To change permissions on a file or directory,
- use the &Chmod; factory.
- The permission argument uses POSIX-style
- permission bits and should typically
- be expressed as an octal,
- not decimal, number:
-
- </para>
-
- <scons_example name="Chmod">
- <file name="SConstruct" printme="1">
- Command("file.out", "file.in",
- [
- Copy("$TARGET", "$SOURCE"),
- Chmod("$TARGET", 0755),
- ])
- </file>
- <file name="file.in">file.in</file>
- </scons_example>
-
- <para>
-
- Which executes:
-
- </para>
-
- <scons_output example="Chmod">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Executing an action immediately: the &Execute; Function</title>
-
- <para>
-
- We've been showing you how to use &Action; factories
- in the &Command; function.
- You can also execute an &Action; returned by a factory
- (or actually, any &Action;)
- at the time the &SConscript; file is read
- by using the &Execute; function.
- For example, if we need to make sure that
- a directory exists before we build any targets,
-
- </para>
-
- <scons_example name="Execute">
- <file name="SConstruct" printme="1">
- Execute(Mkdir('__ROOT__/tmp/my_temp_directory'))
- </file>
- </scons_example>
-
- <para>
-
- Notice that this will
- create the directory while
- the &SConscript; file is being read:
-
- </para>
-
- <scons_output example="Execute">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- If you're familiar with Python,
- you may wonder why you would want to use this
- instead of just calling the native Python
- <function>os.mkdir()</function> function.
- The advantage here is that the &Mkdir;
- action will behave appropriately if the user
- specifies the &SCons; <option>-n</option> or
- <option>-q</option> options--that is,
- it will print the action but not actually
- make the directory when <option>-n</option> is specified,
- or make the directory but not print the action
- when <option>-q</option> is specified.
-
- </para>
-
- <para>
-
- The &Execute; function returns the exit status
- or return value of the underlying action being executed.
- It will also print an error message if the action
- fails and returns a non-zero value.
- &SCons; will <emphasis>not</emphasis>, however,
- actually stop the build if the action fails.
- If you want the build to stop
- in response to a failure in an action called by &Execute;,
- you must do so by explicitly
- checking the return value
- and calling the &Exit; function
- (or a Python equivalent):
-
- </para>
-
- <sconstruct>
- if Execute(Mkdir('__ROOT__/tmp/my_temp_directory')):
- # A problem occurred while making the temp directory.
- Exit(1)
- </sconstruct>
-
- </section>
diff --git a/doc/user/factories.xml b/doc/user/factories.xml
index ced0229..806e36b 100644
--- a/doc/user/factories.xml
+++ b/doc/user/factories.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-factories"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Platform-Independent File System Manipulation</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -60,9 +82,12 @@
</para>
- <programlisting>
- Command("file.out", "file.in", Copy("$TARGET", "$SOURCE"))
- </programlisting>
+ <scons_example name="factories_Copy1">
+ <file name="SConstruct" printme="1">
+Command("file.out", "file.in", Copy("$TARGET", "$SOURCE"))
+ </file>
+ <file name="file.in">file.in</file>
+ </scons_example>
<para>
@@ -75,10 +100,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Copy("file.out", "file.in")
- </screen>
+ <scons_output example="factories_Copy1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -87,9 +111,12 @@
</para>
- <programlisting>
- Command("file.out", [], Copy("$TARGET", "file.in"))
- </programlisting>
+ <scons_example name="factories_Copy2">
+ <file name="SConstruct" printme="1">
+Command("file.out", [], Copy("$TARGET", "file.in"))
+ </file>
+ <file name="file.in">file.in</file>
+ </scons_example>
<para>
@@ -97,10 +124,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Copy("file.out", "file.in")
- </screen>
+ <scons_output example="factories_Copy2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -119,14 +145,26 @@
</para>
- <programlisting>
- Command("file.out", "file.in",
- [
- Copy("tempfile", "$SOURCE"),
- "modify tempfile",
- Copy("$TARGET", "tempfile"),
- ])
- </programlisting>
+ <scons_example name="factories_Copy3">
+ <file name="S" printme="1">
+Command("file.out", "file.in",
+ [
+ Copy("tempfile", "$SOURCE"),
+ "modify tempfile",
+ Copy("$TARGET", "tempfile"),
+ ])
+ </file>
+ <file name="SConstruct">
+env = DefaultEnvironment()
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+SConscript('S')
+ </file>
+ <file name="file.in">file.in</file>
+ <file name="modify" chmod="0755">
+touch $*
+ </file>
+ </scons_example>
<para>
@@ -134,12 +172,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Copy("tempfile", "file.in")
- modify tempfile
- Copy("file.out", "tempfile")
- </screen>
+ <scons_output example="factories_Copy3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -161,15 +196,27 @@
</para>
- <programlisting>
- Command("file.out", "file.in",
- [
- Delete("tempfile"),
- Copy("tempfile", "$SOURCE"),
- "modify tempfile",
- Copy("$TARGET", "tempfile"),
- ])
- </programlisting>
+ <scons_example name="factories_Delete1">
+ <file name="S" printme="1">
+Command("file.out", "file.in",
+ [
+ Delete("tempfile"),
+ Copy("tempfile", "$SOURCE"),
+ "modify tempfile",
+ Copy("$TARGET", "tempfile"),
+ ])
+ </file>
+ <file name="SConstruct">
+env = DefaultEnvironment()
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+SConscript('S')
+ </file>
+ <file name="file.in">file.in</file>
+ <file name="modify" chmod="0755">
+touch $*
+ </file>
+ </scons_example>
<para>
@@ -177,13 +224,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Delete("tempfile")
- Copy("tempfile", "file.in")
- modify tempfile
- Copy("file.out", "tempfile")
- </screen>
+ <scons_output example="factories_Delete1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -194,13 +237,16 @@
</para>
- <programlisting>
- Command("file.out", "file.in",
- [
- Delete("$TARGET"),
- Copy("$TARGET", "$SOURCE")
- ])
- </programlisting>
+ <scons_example name="factories_Delete2">
+ <file name="SConstruct" printme="1">
+Command("file.out", "file.in",
+ [
+ Delete("$TARGET"),
+ Copy("$TARGET", "$SOURCE")
+ ])
+ </file>
+ <file name="file.in">file.in</file>
+ </scons_example>
<para>
@@ -208,11 +254,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Delete("file.out")
- Copy("file.out", "file.in")
- </screen>
+ <scons_output example="factories_Delete2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -247,14 +291,26 @@
</para>
- <programlisting>
- Command("file.out", "file.in",
- [
- Copy("tempfile", "$SOURCE"),
- "modify tempfile",
- Move("$TARGET", "tempfile"),
- ])
- </programlisting>
+ <scons_example name="factories_Move">
+ <file name="S" printme="1">
+Command("file.out", "file.in",
+ [
+ Copy("tempfile", "$SOURCE"),
+ "modify tempfile",
+ Move("$TARGET", "tempfile"),
+ ])
+ </file>
+ <file name="SConstruct">
+env = DefaultEnvironment()
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+SConscript('S')
+ </file>
+ <file name="file.in">file.in</file>
+ <file name="modify" chmod="0755">
+touch $*
+ </file>
+ </scons_example>
<para>
@@ -262,12 +318,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Copy("tempfile", "file.in")
- modify tempfile
- Move("file.out", "tempfile")
- </screen>
+ <scons_output example="factories_Move" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -282,13 +335,22 @@
</para>
- <programlisting>
- Command("file.out", "file.in",
- [
- Copy("$TARGET", "$SOURCE"),
- Touch("$TARGET"),
- ])
- </programlisting>
+ <scons_example name="factories_Touch">
+ <file name="S" printme="1">
+Command("file.out", "file.in",
+ [
+ Copy("$TARGET", "$SOURCE"),
+ Touch("$TARGET"),
+ ])
+ </file>
+ <file name="SConstruct">
+env = DefaultEnvironment()
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+SConscript('S')
+ </file>
+ <file name="file.in">file.in</file>
+ </scons_example>
<para>
@@ -296,11 +358,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Copy("file.out", "file.in")
- Touch("file.out")
- </screen>
+ <scons_output example="factories_Touch" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -319,17 +379,29 @@
</para>
- <programlisting>
- Command("file.out", "file.in",
- [
- Delete("tempdir"),
- Mkdir("tempdir"),
- Copy("tempdir/${SOURCE.file}", "$SOURCE"),
- "process tempdir",
- Move("$TARGET", "tempdir/output_file"),
- Delete("tempdir"),
- ])
- </programlisting>
+ <scons_example name="factories_Mkdir">
+ <file name="S" printme="1">
+Command("file.out", "file.in",
+ [
+ Delete("tempdir"),
+ Mkdir("tempdir"),
+ Copy("tempdir/${SOURCE.file}", "$SOURCE"),
+ "process tempdir",
+ Move("$TARGET", "tempdir/output_file"),
+ Delete("tempdir"),
+ ])
+ </file>
+ <file name="SConstruct">
+env = DefaultEnvironment()
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+SConscript('S')
+ </file>
+ <file name="file.in">file.in</file>
+ <file name="process" chmod="0755">
+touch $*
+ </file>
+ </scons_example>
<para>
@@ -337,15 +409,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Delete("tempdir")
- Mkdir("tempdir")
- Copy("tempdir/file.in", "file.in")
- process tempdir
- Move("file.out", "tempdir/output_file")
- scons: *** [file.out] tempdir/output_file: No such file or directory
- </screen>
+ <scons_output example="factories_Mkdir" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -363,13 +429,16 @@
</para>
- <programlisting>
- Command("file.out", "file.in",
- [
- Copy("$TARGET", "$SOURCE"),
- Chmod("$TARGET", 0755),
- ])
- </programlisting>
+ <scons_example name="factories_Chmod">
+ <file name="SConstruct" printme="1">
+Command("file.out", "file.in",
+ [
+ Copy("$TARGET", "$SOURCE"),
+ Chmod("$TARGET", 0755),
+ ])
+ </file>
+ <file name="file.in">file.in</file>
+ </scons_example>
<para>
@@ -377,11 +446,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Copy("file.out", "file.in")
- Chmod("file.out", 0755)
- </screen>
+ <scons_output example="factories_Chmod" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -401,9 +468,11 @@
</para>
- <programlisting>
- Execute(Mkdir('/tmp/my_temp_directory'))
- </programlisting>
+ <scons_example name="factories_Execute">
+ <file name="SConstruct" printme="1">
+Execute(Mkdir('__ROOT__/tmp/my_temp_directory'))
+ </file>
+ </scons_example>
<para>
@@ -413,15 +482,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- Mkdir("/tmp/my_temp_directory")
- scons: done reading SConscript files.
- scons: Building targets ...
- scons: `.' is up to date.
- scons: done building targets.
- </screen>
+ <scons_output example="factories_Execute" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -457,10 +520,12 @@
</para>
- <programlisting>
- if Execute(Mkdir('/tmp/my_temp_directory')):
- # A problem occurred while making the temp directory.
- Exit(1)
- </programlisting>
+ <sconstruct>
+if Execute(Mkdir('__ROOT__/tmp/my_temp_directory')):
+ # A problem occurred while making the temp directory.
+ Exit(1)
+ </sconstruct>
</section>
+
+</chapter>
diff --git a/doc/user/file-removal.in b/doc/user/file-removal.in
deleted file mode 100644
index 479530c..0000000
--- a/doc/user/file-removal.in
+++ /dev/null
@@ -1,223 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- There are two occasions when &SCons; will,
- by default, remove target files.
- The first is when &SCons; determines that
- an target file needs to be rebuilt
- and removes the existing version of the target
- before executing
- The second is when &SCons; is invoked with the
- <literal>-c</literal> option to "clean"
- a tree of its built targets.
-
- These behaviours can be suppressed with the
- &Precious; and &NoClean; functions, respectively.
-
- </para>
-
- <section>
- <title>Preventing target removal during build: the &Precious; Function</title>
-
- <para>
-
- By default, &SCons; removes targets before building them.
- Sometimes, however, this is not what you want.
- For example, you may want to update a library incrementally,
- not by having it deleted and then rebuilt from all
- of the constituent object files.
- In such cases, you can use the
- &Precious; method to prevent
- &SCons; from removing the target before it is built:
-
- </para>
-
- <scons_example name="precious-ex1">
- <file name="SConstruct" printme="1">
- env = Environment(RANLIBCOM='')
- lib = env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- env.Precious(lib)
- </file>
- <file name="f1.c">
- int f1() { }
- </file>
- <file name="f2.c">
- int f2() { }
- </file>
- <file name="f3.c">
- int f3() { }
- </file>
- </scons_example>
-
- <para>
-
- Although the output doesn't look any different,
- &SCons; does not, in fact,
- delete the target library before rebuilding it:
-
- </para>
-
- <scons_output example="precious-ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- &SCons; will, however, still delete files marked as &Precious;
- when the <literal>-c</literal> option is used.
-
- </para>
-
- </section>
-
- <section>
- <title>Preventing target removal during clean: the &NoClean; Function</title>
-
- <para>
-
- By default, &SCons; removes all built targets when invoked
- with the <literal>-c</literal> option to clean a source tree
- of built targets.
- Sometimes, however, this is not what you want.
- For example, you may want to remove only intermediate generated files
- (such as object files),
- but leave the final targets
- (the libraries)
- untouched.
-
- In such cases, you can use the &NoClean; method to prevent &SCons;
- from removing a target during a clean:
-
- </para>
-
- <scons_example name="noclean-ex1">
- <file name="SConstruct" printme="1">
- env = Environment(RANLIBCOM='')
- lib = env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- env.NoClean(lib)
- </file>
- <file name="f1.c">
- int f1() { }
- </file>
- <file name="f2.c">
- int f2() { }
- </file>
- <file name="f3.c">
- int f3() { }
- </file>
- </scons_example>
-
- <para>
-
- Notice that the <filename>libfoo.a</filename>
- is not listed as a removed file:
-
- </para>
-
- <scons_output example="noclean-ex1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -c</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Removing additional files during clean: the &Clean; Function</title>
-
- <para>
-
- There may be additional files that you want removed
- when the <literal>-c</literal> option is used,
- but which &SCons; doesn't know about
- because they're not normal target files.
- For example, perhaps a command you invoke
- creates a log file as
- part of building the target file you want.
- You would like the log file cleaned,
- but you don't want to have to teach
- SCons that the command
- "builds" two files.
-
- </para>
-
- <para>
-
- You can use the &Clean; function to arrange for additional files
- to be removed when the <literal>-c</literal> option is used.
- Notice, however, that the &Clean; function takes two arguments,
- and the <emphasis>second</emphasis> argument
- is the name of the additional file you want cleaned
- (<filename>foo.log</filename> in this example):
-
- </para>
-
- <scons_example name="clean-ex1">
- <file name="S" printme="1">
- t = Command('foo.out', 'foo.in', 'build -o $TARGET $SOURCE')
- Clean(t, 'foo.log')
- </file>
- <file name="SConstruct">
- env = DefaultEnvironment()
- import os
- env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
- SConscript('S')
- </file>
- <file name="foo.in">
- foo.in
- </file>
- <file name="foo.log">
- foo.log
- </file>
- <file name="build" chmod="0755">
- cat $3 > $2
- </file>
- </scons_example>
-
- <para>
-
- The first argument is the target with which you want
- the cleaning of this additional file associated.
- In the above example,
- we've used the return value from the
- &Command; function,
- which represents the
- <filename>foo.out</filename>
- target.
- Now whenever the
- <filename>foo.out</filename> target is cleaned
- by the <literal>-c</literal> option,
- the <filename>foo.log</filename> file
- will be removed as well:
-
- </para>
-
- <scons_output example="clean-ex1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- </scons_output>
-
- </section>
diff --git a/doc/user/file-removal.xml b/doc/user/file-removal.xml
index f2730c1..1b58abe 100644
--- a/doc/user/file-removal.xml
+++ b/doc/user/file-removal.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-file-removal"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Controlling Removal of Targets</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -56,11 +78,22 @@
</para>
- <programlisting>
- env = Environment(RANLIBCOM='')
- lib = env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- env.Precious(lib)
- </programlisting>
+ <scons_example name="fileremoval_precious-ex1">
+ <file name="SConstruct" printme="1">
+ env = Environment(RANLIBCOM='')
+ lib = env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
+ env.Precious(lib)
+ </file>
+ <file name="f1.c">
+int f1() { }
+ </file>
+ <file name="f2.c">
+int f2() { }
+ </file>
+ <file name="f3.c">
+int f3() { }
+ </file>
+ </scons_example>
<para>
@@ -70,13 +103,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o f1.o -c f1.c
- cc -o f2.o -c f2.c
- cc -o f3.o -c f3.c
- ar rc libfoo.a f1.o f2.o f3.o
- </screen>
+ <scons_output example="fileremoval_precious-ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -107,11 +136,22 @@
</para>
- <programlisting>
- env = Environment(RANLIBCOM='')
- lib = env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- env.NoClean(lib)
- </programlisting>
+ <scons_example name="fileremoval_noclean-ex1">
+ <file name="SConstruct" printme="1">
+env = Environment(RANLIBCOM='')
+lib = env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
+env.NoClean(lib)
+ </file>
+ <file name="f1.c">
+int f1() { }
+ </file>
+ <file name="f2.c">
+int f2() { }
+ </file>
+ <file name="f3.c">
+int f3() { }
+ </file>
+ </scons_example>
<para>
@@ -120,21 +160,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o f1.o -c f1.c
- cc -o f2.o -c f2.c
- cc -o f3.o -c f3.c
- ar rc libfoo.a f1.o f2.o f3.o
- % <userinput>scons -c</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Cleaning targets ...
- Removed f1.o
- Removed f2.o
- Removed f3.o
- scons: done cleaning targets.
- </screen>
+ <scons_output example="fileremoval_noclean-ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -c</scons_output_command>
+ </scons_output>
</section>
@@ -168,10 +197,27 @@
</para>
- <programlisting>
- t = Command('foo.out', 'foo.in', 'build -o $TARGET $SOURCE')
- Clean(t, 'foo.log')
- </programlisting>
+ <scons_example name="fileremoval_clean-ex1">
+ <file name="S" printme="1">
+t = Command('foo.out', 'foo.in', 'build -o $TARGET $SOURCE')
+Clean(t, 'foo.log')
+ </file>
+ <file name="SConstruct">
+env = DefaultEnvironment()
+import os
+env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd()
+SConscript('S')
+ </file>
+ <file name="foo.in">
+foo.in
+ </file>
+ <file name="foo.log">
+foo.log
+ </file>
+ <file name="build" chmod="0755">
+cat $3 > $2
+ </file>
+ </scons_example>
<para>
@@ -191,12 +237,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- build -o foo.out foo.in
- % <userinput>scons -Q -c</userinput>
- Removed foo.out
- Removed foo.log
- </screen>
+ <scons_output example="fileremoval_clean-ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q -c</scons_output_command>
+ </scons_output>
</section>
+
+</chapter>
diff --git a/doc/user/functions.in b/doc/user/functions.in
deleted file mode 100644
index e7d633d..0000000
--- a/doc/user/functions.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<para>
-
-This appendix contains descriptions of all of the
-function and construction environment methods
-in this version of &SCons;
-
-</para>
-
-<variablelist>
-
-&functions-gen;
-
-</variablelist>
diff --git a/doc/user/functions.xml b/doc/user/functions.xml
index e7d633d..76a3449 100644
--- a/doc/user/functions.xml
+++ b/doc/user/functions.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<appendix id="app-functions"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Functions and Environment Methods</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -31,8 +52,6 @@ in this version of &SCons;
</para>
-<variablelist>
-
-&functions-gen;
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../generated/functions.gen"/>
-</variablelist>
+</appendix>
diff --git a/doc/user/gettext.in b/doc/user/gettext.in
deleted file mode 100644
index 529ea22..0000000
--- a/doc/user/gettext.in
+++ /dev/null
@@ -1,351 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
- The &t-link-gettext; toolset supports internationalization and localization
- of SCons-based projects. Builders provided by &t-link-gettext; automatize
- generation and updates of translation files. You can manage translations and
- translation templates similarly to how it's done with autotools.
- </para>
-
- <section>
- <title>Prerequisites</title>
- <para>
- To follow examples provided in this chapter set up your operating system to
- support two or more languages. In following examples we use locales
- <literal>en_US</literal>, <literal>de_DE</literal>, and
- <literal>pl_PL</literal>.
- </para>
-
- <para>
- Ensure, that you have <ulink
- url="http://www.gnu.org/software/gettext/manual/gettext.html">GNU gettext
- utilities</ulink> installed on your system.
- </para>
-
- <para>
- To edit translation files you may wish to install <ulink
- url="http://www.poedit.net/">poedit</ulink> editor.
- </para>
- </section>
-
- <section>
- <title>Simple project</title>
- <para>
- Let's start with a very simple project, the "Hello world" program
- for example
- <scons_example name="ex1">
- <file name="hello.c" printme="1">
- /* hello.c */
- #include &lt;stdio.h&gt;
- int main(int argc, char* argv[])
- {
- printf("Hello world\n");
- return 0;
- }
- </file>
- </scons_example>
-
- Prepare a <filename>SConstruct</filename> to compile the program
- as usual.
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- # SConstruct
- env = Environment()
- hello = Program(["hello.c"])
- </file>
- </scons_example>
- </para>
-
- <para>
- Now we'll convert the project to a multi-lingual one. If you don't
- already have <ulink
- url="http://www.gnu.org/software/gettext/manual/gettext.html">GNU gettext
- utilities</ulink> installed, install them from your preffered
- package repository, or download from <ulink
- url="http://ftp.gnu.org/gnu/gettext/">
- http://ftp.gnu.org/gnu/gettext/</ulink>. For the purpose of this example,
- you should have following three locales installed on your system:
- <literal>en_US</literal>, <literal>de_DE</literal> and
- <literal>pl_PL</literal>. On debian, for example, you may enable certain
- locales through <command>dpkg-reconfigure locales</command>.
- </para>
-
- <para>
- First prepare the <filename>hello.c</filename> program for
- internationalization. Change the previous code so it reads as follows:
- <scons_example name="ex3">
- <file name="hello.c" printme="1">
- /* hello.c */
- #include &lt;stdio.h&gt;
- #include &lt;libintl.h&gt;
- #include &lt;locale.h&gt;
- int main(int argc, char* argv[])
- {
- bindtextdomain("hello", "locale");
- setlocale(LC_ALL, "");
- textdomain("hello");
- printf(gettext("Hello world\n"));
- return 0;
- }
- </file>
- </scons_example>
- Detailed recipes for such conversion can
- be found at <ulink
- url="http://www.gnu.org/software/gettext/manual/gettext.html#Sources">
- http://www.gnu.org/software/gettext/manual/gettext.html#Sources</ulink>.
- The <function>gettext("...")</function> has two purposes.
- First, it marks messages for the <command>xgettext(1)</command> program, which
- we will use to extract from the sources the messages for localization.
- Second, it calls the <literal>gettext</literal> library internals to
- translate the message at runtime.
- </para>
-
- <para>
- Now we shall instruct SCons how to generate and maintain translation files.
- For that, use the &b-link-Translate; builder and &b-link-MOFiles; builder.
- The first one takes source files, extracts internationalized
- messages from them, creates so-called <literal>POT</literal> file
- (translation template), and then creates <literal>PO</literal> translation
- files, one for each requested language. Later, during the development
- lifecycle, the builder keeps all these files up-to date. The
- &b-link-MOFiles; builder compiles the <literal>PO</literal> files to binary
- form. Then install the <literal>MO</literal> files under directory
- called <filename>locale</filename>.
- </para>
-
- <para> The completed
- <filename>SConstruct</filename> is as follows:
- <scons_example name="ex4">
- <file name="SConstruct" printme="1">
- # SConstruct
- env = Environment( tools = ['default', 'gettext'] )
- hello = env.Program(["hello.c"])
- env['XGETTEXTFLAGS'] = [
- '--package-name=%s' % 'hello',
- '--package-version=%s' % '1.0',
- ]
- po = env.Translate(["pl","en", "de"], ["hello.c"], POAUTOINIT = 1)
- mo = env.MOFiles(po)
- InstallAs(["locale/en/LC_MESSAGES/hello.mo"], ["en.mo"])
- InstallAs(["locale/pl/LC_MESSAGES/hello.mo"], ["pl.mo"])
- InstallAs(["locale/de/LC_MESSAGES/hello.mo"], ["de.mo"])
- </file>
- </scons_example>
- </para>
- <para>
- Generate the translation files with <command>scons po-update</command>.
- You should see the output from SCons simillar to this:
- <screen>
- user@host:$ scons po-update
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- Entering '/home/ptomulik/projects/tmp'
- xgettext --package-name=hello --package-version=1.0 -o - hello.c
- Leaving '/home/ptomulik/projects/tmp'
- Writting 'messages.pot' (new file)
- msginit --no-translator -l pl -i messages.pot -o pl.po
- Created pl.po.
- msginit --no-translator -l en -i messages.pot -o en.po
- Created en.po.
- msginit --no-translator -l de -i messages.pot -o de.po
- Created de.po.
- scons: done building targets.
- </screen>
- </para>
-
- <para>
- If everything is right, you should see following new files.
- <screen>
- user@host:$ ls *.po*
- de.po en.po messages.pot pl.po
- </screen>
- </para>
-
- <para>
- Open <filename>en.po</filename> in <command>poedit</command> and provide
- the English translation to message <literal>"Hello world\n"</literal>. Do the
- same for <filename>de.po</filename> (deutsch) and
- <filename>pl.po</filename> (polish). Let the translations be, for example:
- <itemizedlist>
- <listitem><para>
- <literal>en: "Welcome to beautiful world!\n"</literal>
- </para></listitem>
- <listitem><para>
- <literal>de: "Hallo Welt!\n"</literal>
- </para></listitem>
- <listitem><para>
- <literal>pl: "Witaj swiecie!\n"</literal>
- </para></listitem>
- </itemizedlist>
- </para>
- <para>
- Now compile the project by executing <command>scons</command>. The
- output should be similar to this:
- <screen>
- user@host:$ scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- msgfmt -c -o de.mo de.po
- msgfmt -c -o en.mo en.po
- gcc -o hello.o -c hello.c
- gcc -o hello hello.o
- Install file: "de.mo" as "locale/de/LC_MESSAGES/hello.mo"
- Install file: "en.mo" as "locale/en/LC_MESSAGES/hello.mo"
- msgfmt -c -o pl.mo pl.po
- Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
- scons: done building targets.
- </screen>
- SCons automatically compiled the <literal>PO</literal> files to binary format
- <literal>MO</literal>, and the <literal>InstallAs</literal> lines installed
- these files under <filename>locale</filename> folder.
- </para>
- <para>
- Your program should be now ready. You may try it as follows (linux):
- <screen>
- user@host:$ LANG=en_US.UTF-8 ./hello
- Welcome to beautiful world
- </screen>
- <screen>
- user@host:$ LANG=de_DE.UTF-8 ./hello
- Hallo Welt
- </screen>
- <screen>
- user@host:$ LANG=pl_PL.UTF-8 ./hello
- Witaj swiecie
- </screen>
- </para>
- <para>
- To demonstrate the further life of translation files, let's change Polish
- translation (<command>poedit pl.po</command>) to <literal>"Witaj drogi
- swiecie\n"</literal>. Run <command>scons</command> to see how scons
- reacts to this
- <screen>
- user@host:$scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- msgfmt -c -o pl.mo pl.po
- Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
- scons: done building targets.
- </screen>
- </para>
- <para>
- Now, open <filename>hello.c</filename> and add another one
- <literal>printf</literal> line with new message.
- <scons_example name="ex5">
- <file name="hello.c" printme="1">
- /* hello.c */
- #include &lt;stdio.h&gt;
- #include &lt;libintl.h&gt;
- #include &lt;locale.h&gt;
- int main(int argc, char* argv[])
- {
- bindtextdomain("hello", "locale");
- setlocale(LC_ALL, "");
- textdomain("hello");
- printf(gettext("Hello world\n"));
- printf(gettext("and good bye\n"));
- return 0;
- }
- </file>
- </scons_example>
- </para>
- <para>
- Compile project with <command>scons</command>. This time, the
- <command>msgmerge(1)</command> program is used by SCons to update
- <literal>PO</literal> file. The output from compilation is like:
- <screen>
- user@host:$scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- Entering '/home/ptomulik/projects/tmp'
- xgettext --package-name=hello --package-version=1.0 -o - hello.c
- Leaving '/home/ptomulik/projects/tmp'
- Writting 'messages.pot' (messages in file were outdated)
- msgmerge --update de.po messages.pot
- ... done.
- msgfmt -c -o de.mo de.po
- msgmerge --update en.po messages.pot
- ... done.
- msgfmt -c -o en.mo en.po
- gcc -o hello.o -c hello.c
- gcc -o hello hello.o
- Install file: "de.mo" as "locale/de/LC_MESSAGES/hello.mo"
- Install file: "en.mo" as "locale/en/LC_MESSAGES/hello.mo"
- msgmerge --update pl.po messages.pot
- ... done.
- msgfmt -c -o pl.mo pl.po
- Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
- scons: done building targets.
- </screen>
- </para>
- <para>
- The next example demonstrates what happens if we change the source code
- in such way that the internationalized messages do not change. The answer
- is that none of translation files (<literal>POT</literal>,
- <literal>PO</literal>) are touched (i.e. no content changes, no
- creation/modification time changed and so on). Let's append another
- line to the program (after the last printf), so its code becomes:
- <scons_example name="ex6">
- <file name="hello.c" printme="1">
- /* hello.c */
- #include &lt;stdio.h&gt;
- #include &lt;libintl.h&gt;
- #include &lt;locale.h&gt;
- int main(int argc, char* argv[])
- {
- bindtextdomain("hello", "locale");
- setlocale(LC_ALL, "");
- textdomain("hello");
- printf(gettext("Hello world\n"));
- printf(gettext("and good bye\n"));
- printf("----------------\n");
- return a;
- }
- </file>
- </scons_example>
- Compile the project. You'll see on your screen
- <screen>
- user@host:$scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- Entering '/home/ptomulik/projects/tmp'
- xgettext --package-name=hello --package-version=1.0 -o - hello.c
- Leaving '/home/ptomulik/projects/tmp'
- Not writting 'messages.pot' (messages in file found to be up-to-date)
- gcc -o hello.o -c hello.c
- gcc -o hello hello.o
- scons: done building targets.
- </screen>
- As you see, the internationalized messages ditn't change, so the
- <literal>POT</literal> and the rest of translation files have not
- even been touched.
- </para>
- </section>
diff --git a/doc/user/gettext.xml b/doc/user/gettext.xml
index 706febe..c9cbcdb 100644
--- a/doc/user/gettext.xml
+++ b/doc/user/gettext.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-gettext"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Internationalization and localization with gettext</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -40,12 +62,14 @@
</para>
<para>
- Ensure, that you have <ulink url="http://www.gnu.org/software/gettext/manual/gettext.html">GNU gettext
+ Ensure, that you have <ulink
+ url="http://www.gnu.org/software/gettext/manual/gettext.html">GNU gettext
utilities</ulink> installed on your system.
</para>
<para>
- To edit translation files you may wish to install <ulink url="http://www.poedit.net/">poedit</ulink> editor.
+ To edit translation files you may wish to install <ulink
+ url="http://www.poedit.net/">poedit</ulink> editor.
</para>
</section>
@@ -54,30 +78,36 @@
<para>
Let's start with a very simple project, the "Hello world" program
for example
- <programlisting>
- /* hello.c */
- #include &lt;stdio.h&gt;
- int main(int argc, char* argv[])
- {
- printf("Hello world\n");
- return 0;
- }
- </programlisting>
+ <scons_example name="gettext_ex1">
+ <file name="hello.c" printme="1">
+/* hello.c */
+#include &lt;stdio.h&gt;
+int main(int argc, char* argv[])
+{
+ printf("Hello world\n");
+ return 0;
+}
+ </file>
+ </scons_example>
Prepare a <filename>SConstruct</filename> to compile the program
as usual.
- <programlisting>
- # SConstruct
- env = Environment()
- hello = Program(["hello.c"])
- </programlisting>
+ <scons_example name="gettext_ex2">
+ <file name="SConstruct" printme="1">
+# SConstruct
+env = Environment()
+hello = Program(["hello.c"])
+ </file>
+ </scons_example>
</para>
<para>
Now we'll convert the project to a multi-lingual one. If you don't
- already have <ulink url="http://www.gnu.org/software/gettext/manual/gettext.html">GNU gettext
+ already have <ulink
+ url="http://www.gnu.org/software/gettext/manual/gettext.html">GNU gettext
utilities</ulink> installed, install them from your preffered
- package repository, or download from <ulink url="http://ftp.gnu.org/gnu/gettext/">
+ package repository, or download from <ulink
+ url="http://ftp.gnu.org/gnu/gettext/">
http://ftp.gnu.org/gnu/gettext/</ulink>. For the purpose of this example,
you should have following three locales installed on your system:
<literal>en_US</literal>, <literal>de_DE</literal> and
@@ -88,22 +118,25 @@
<para>
First prepare the <filename>hello.c</filename> program for
internationalization. Change the previous code so it reads as follows:
- <programlisting>
- /* hello.c */
- #include &lt;stdio.h&gt;
- #include &lt;libintl.h&gt;
- #include &lt;locale.h&gt;
- int main(int argc, char* argv[])
- {
- bindtextdomain("hello", "locale");
- setlocale(LC_ALL, "");
- textdomain("hello");
- printf(gettext("Hello world\n"));
- return 0;
- }
- </programlisting>
+ <scons_example name="gettext_ex3">
+ <file name="hello.c" printme="1">
+/* hello.c */
+#include &lt;stdio.h&gt;
+#include &lt;libintl.h&gt;
+#include &lt;locale.h&gt;
+int main(int argc, char* argv[])
+{
+ bindtextdomain("hello", "locale");
+ setlocale(LC_ALL, "");
+ textdomain("hello");
+ printf(gettext("Hello world\n"));
+ return 0;
+}
+ </file>
+ </scons_example>
Detailed recipes for such conversion can
- be found at <ulink url="http://www.gnu.org/software/gettext/manual/gettext.html#Sources">
+ be found at <ulink
+ url="http://www.gnu.org/software/gettext/manual/gettext.html#Sources">
http://www.gnu.org/software/gettext/manual/gettext.html#Sources</ulink>.
The <function>gettext("...")</function> has two purposes.
First, it marks messages for the <command>xgettext(1)</command> program, which
@@ -127,48 +160,50 @@
<para> The completed
<filename>SConstruct</filename> is as follows:
- <programlisting>
- # SConstruct
- env = Environment( tools = ['default', 'gettext'] )
- hello = env.Program(["hello.c"])
- env['XGETTEXTFLAGS'] = [
- '--package-name=%s' % 'hello',
- '--package-version=%s' % '1.0',
- ]
- po = env.Translate(["pl","en", "de"], ["hello.c"], POAUTOINIT = 1)
- mo = env.MOFiles(po)
- InstallAs(["locale/en/LC_MESSAGES/hello.mo"], ["en.mo"])
- InstallAs(["locale/pl/LC_MESSAGES/hello.mo"], ["pl.mo"])
- InstallAs(["locale/de/LC_MESSAGES/hello.mo"], ["de.mo"])
- </programlisting>
+ <scons_example name="gettext_ex4">
+ <file name="SConstruct" printme="1">
+# SConstruct
+env = Environment( tools = ['default', 'gettext'] )
+hello = env.Program(["hello.c"])
+env['XGETTEXTFLAGS'] = [
+ '--package-name=%s' % 'hello',
+ '--package-version=%s' % '1.0',
+]
+po = env.Translate(["pl","en", "de"], ["hello.c"], POAUTOINIT = 1)
+mo = env.MOFiles(po)
+InstallAs(["locale/en/LC_MESSAGES/hello.mo"], ["en.mo"])
+InstallAs(["locale/pl/LC_MESSAGES/hello.mo"], ["pl.mo"])
+InstallAs(["locale/de/LC_MESSAGES/hello.mo"], ["de.mo"])
+ </file>
+ </scons_example>
</para>
<para>
Generate the translation files with <command>scons po-update</command>.
You should see the output from SCons simillar to this:
<screen>
- user@host:$ scons po-update
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- Entering '/home/ptomulik/projects/tmp'
- xgettext --package-name=hello --package-version=1.0 -o - hello.c
- Leaving '/home/ptomulik/projects/tmp'
- Writting 'messages.pot' (new file)
- msginit --no-translator -l pl -i messages.pot -o pl.po
- Created pl.po.
- msginit --no-translator -l en -i messages.pot -o en.po
- Created en.po.
- msginit --no-translator -l de -i messages.pot -o de.po
- Created de.po.
- scons: done building targets.
+user@host:$ scons po-update
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+Entering '/home/ptomulik/projects/tmp'
+xgettext --package-name=hello --package-version=1.0 -o - hello.c
+Leaving '/home/ptomulik/projects/tmp'
+Writting 'messages.pot' (new file)
+msginit --no-translator -l pl -i messages.pot -o pl.po
+Created pl.po.
+msginit --no-translator -l en -i messages.pot -o en.po
+Created en.po.
+msginit --no-translator -l de -i messages.pot -o de.po
+Created de.po.
+scons: done building targets.
</screen>
</para>
<para>
If everything is right, you should see following new files.
<screen>
- user@host:$ ls *.po*
- de.po en.po messages.pot pl.po
+user@host:$ ls *.po*
+de.po en.po messages.pot pl.po
</screen>
</para>
@@ -193,19 +228,19 @@
Now compile the project by executing <command>scons</command>. The
output should be similar to this:
<screen>
- user@host:$ scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- msgfmt -c -o de.mo de.po
- msgfmt -c -o en.mo en.po
- gcc -o hello.o -c hello.c
- gcc -o hello hello.o
- Install file: "de.mo" as "locale/de/LC_MESSAGES/hello.mo"
- Install file: "en.mo" as "locale/en/LC_MESSAGES/hello.mo"
- msgfmt -c -o pl.mo pl.po
- Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
- scons: done building targets.
+user@host:$ scons
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+msgfmt -c -o de.mo de.po
+msgfmt -c -o en.mo en.po
+gcc -o hello.o -c hello.c
+gcc -o hello hello.o
+Install file: "de.mo" as "locale/de/LC_MESSAGES/hello.mo"
+Install file: "en.mo" as "locale/en/LC_MESSAGES/hello.mo"
+msgfmt -c -o pl.mo pl.po
+Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
+scons: done building targets.
</screen>
SCons automatically compiled the <literal>PO</literal> files to binary format
<literal>MO</literal>, and the <literal>InstallAs</literal> lines installed
@@ -214,16 +249,16 @@
<para>
Your program should be now ready. You may try it as follows (linux):
<screen>
- user@host:$ LANG=en_US.UTF-8 ./hello
- Welcome to beautiful world
+user@host:$ LANG=en_US.UTF-8 ./hello
+Welcome to beautiful world
</screen>
<screen>
- user@host:$ LANG=de_DE.UTF-8 ./hello
- Hallo Welt
+user@host:$ LANG=de_DE.UTF-8 ./hello
+Hallo Welt
</screen>
<screen>
- user@host:$ LANG=pl_PL.UTF-8 ./hello
- Witaj swiecie
+user@host:$ LANG=pl_PL.UTF-8 ./hello
+Witaj swiecie
</screen>
</para>
<para>
@@ -232,62 +267,64 @@
swiecie\n"</literal>. Run <command>scons</command> to see how scons
reacts to this
<screen>
- user@host:$scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- msgfmt -c -o pl.mo pl.po
- Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
- scons: done building targets.
+user@host:$scons
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+msgfmt -c -o pl.mo pl.po
+Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
+scons: done building targets.
</screen>
</para>
<para>
Now, open <filename>hello.c</filename> and add another one
<literal>printf</literal> line with new message.
- <programlisting>
- /* hello.c */
- #include &lt;stdio.h&gt;
- #include &lt;libintl.h&gt;
- #include &lt;locale.h&gt;
- int main(int argc, char* argv[])
- {
- bindtextdomain("hello", "locale");
- setlocale(LC_ALL, "");
- textdomain("hello");
- printf(gettext("Hello world\n"));
- printf(gettext("and good bye\n"));
- return 0;
- }
- </programlisting>
+ <scons_example name="gettext_ex5">
+ <file name="hello.c" printme="1">
+/* hello.c */
+#include &lt;stdio.h&gt;
+#include &lt;libintl.h&gt;
+#include &lt;locale.h&gt;
+int main(int argc, char* argv[])
+{
+ bindtextdomain("hello", "locale");
+ setlocale(LC_ALL, "");
+ textdomain("hello");
+ printf(gettext("Hello world\n"));
+ printf(gettext("and good bye\n"));
+ return 0;
+}
+ </file>
+ </scons_example>
</para>
<para>
Compile project with <command>scons</command>. This time, the
<command>msgmerge(1)</command> program is used by SCons to update
<literal>PO</literal> file. The output from compilation is like:
<screen>
- user@host:$scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- Entering '/home/ptomulik/projects/tmp'
- xgettext --package-name=hello --package-version=1.0 -o - hello.c
- Leaving '/home/ptomulik/projects/tmp'
- Writting 'messages.pot' (messages in file were outdated)
- msgmerge --update de.po messages.pot
- ... done.
- msgfmt -c -o de.mo de.po
- msgmerge --update en.po messages.pot
- ... done.
- msgfmt -c -o en.mo en.po
- gcc -o hello.o -c hello.c
- gcc -o hello hello.o
- Install file: "de.mo" as "locale/de/LC_MESSAGES/hello.mo"
- Install file: "en.mo" as "locale/en/LC_MESSAGES/hello.mo"
- msgmerge --update pl.po messages.pot
- ... done.
- msgfmt -c -o pl.mo pl.po
- Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
- scons: done building targets.
+user@host:$scons
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+Entering '/home/ptomulik/projects/tmp'
+xgettext --package-name=hello --package-version=1.0 -o - hello.c
+Leaving '/home/ptomulik/projects/tmp'
+Writting 'messages.pot' (messages in file were outdated)
+msgmerge --update de.po messages.pot
+... done.
+msgfmt -c -o de.mo de.po
+msgmerge --update en.po messages.pot
+... done.
+msgfmt -c -o en.mo en.po
+gcc -o hello.o -c hello.c
+gcc -o hello hello.o
+Install file: "de.mo" as "locale/de/LC_MESSAGES/hello.mo"
+Install file: "en.mo" as "locale/en/LC_MESSAGES/hello.mo"
+msgmerge --update pl.po messages.pot
+... done.
+msgfmt -c -o pl.mo pl.po
+Install file: "pl.mo" as "locale/pl/LC_MESSAGES/hello.mo"
+scons: done building targets.
</screen>
</para>
<para>
@@ -297,38 +334,42 @@
<literal>PO</literal>) are touched (i.e. no content changes, no
creation/modification time changed and so on). Let's append another
line to the program (after the last printf), so its code becomes:
- <programlisting>
- /* hello.c */
- #include &lt;stdio.h&gt;
- #include &lt;libintl.h&gt;
- #include &lt;locale.h&gt;
- int main(int argc, char* argv[])
- {
- bindtextdomain("hello", "locale");
- setlocale(LC_ALL, "");
- textdomain("hello");
- printf(gettext("Hello world\n"));
- printf(gettext("and good bye\n"));
- printf("----------------\n");
- return a;
- }
- </programlisting>
+ <scons_example name="gettext_ex6">
+ <file name="hello.c" printme="1">
+/* hello.c */
+#include &lt;stdio.h&gt;
+#include &lt;libintl.h&gt;
+#include &lt;locale.h&gt;
+int main(int argc, char* argv[])
+{
+ bindtextdomain("hello", "locale");
+ setlocale(LC_ALL, "");
+ textdomain("hello");
+ printf(gettext("Hello world\n"));
+ printf(gettext("and good bye\n"));
+ printf("----------------\n");
+ return a;
+}
+ </file>
+ </scons_example>
Compile the project. You'll see on your screen
<screen>
- user@host:$scons
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- Entering '/home/ptomulik/projects/tmp'
- xgettext --package-name=hello --package-version=1.0 -o - hello.c
- Leaving '/home/ptomulik/projects/tmp'
- Not writting 'messages.pot' (messages in file found to be up-to-date)
- gcc -o hello.o -c hello.c
- gcc -o hello hello.o
- scons: done building targets.
+user@host:$scons
+scons: Reading SConscript files ...
+scons: done reading SConscript files.
+scons: Building targets ...
+Entering '/home/ptomulik/projects/tmp'
+xgettext --package-name=hello --package-version=1.0 -o - hello.c
+Leaving '/home/ptomulik/projects/tmp'
+Not writting 'messages.pot' (messages in file found to be up-to-date)
+gcc -o hello.o -c hello.c
+gcc -o hello hello.o
+scons: done building targets.
</screen>
As you see, the internationalized messages ditn't change, so the
<literal>POT</literal> and the rest of translation files have not
even been touched.
</para>
</section>
+
+</chapter>
diff --git a/doc/user/hierarchy.in b/doc/user/hierarchy.in
deleted file mode 100644
index 473f519..0000000
--- a/doc/user/hierarchy.in
+++ /dev/null
@@ -1,794 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-
-=head2 The Build command
-
-By default, Cons does not change its working directory to the directory
-containing a subsidiary F<Conscript> file it is including. This behavior
-can be enabled for a build by specifying, in the top-level F<Construct>
-file:
-
- Conscript_chdir 1;
-
-When enabled, Cons will change to the subsidiary F<Conscript> file's
-containing directory while reading in that file, and then change back
-to the top-level directory once the file has been processed.
-
-It is expected that this behavior will become the default in some future
-version of Cons. To prepare for this transition, builds that expect
-Cons to remain at the top of the build while it reads in a subsidiary
-F<Conscript> file should explicitly disable this feature as follows:
-
- Conscript_chdir 0;
-
-=head2 Relative, top-relative, and absolute file names
-
-(There is another file prefix, ``!'', that is interpreted specially by
-Cons. See discussion of the C<Link> command, below, for details.)
-
-
-=head2 Using modules in build scripts
-
-You may pull modules into each F<Conscript> file using the normal Perl
-C<use> or C<require> statements:
-
- use English;
- require My::Module;
-
-Each C<use> or C<require> only affects the one F<Conscript> file in which
-it appears. To use a module in multiple F<Conscript> files, you must
-put a C<use> or C<require> statement in each one that needs the module.
-
-
-=head2 Scope of variables
-
-The top-level F<Construct> file and all F<Conscript> files begin life in
-a common, separate Perl package. B<Cons> controls the symbol table for
-the package so that, the symbol table for each script is empty, except
-for the F<Construct> file, which gets some of the command line arguments.
-All of the variables that are set or used, therefore, are set by the
-script itself, not by some external script.
-
-Variables can be explicitly B<imported> by a script from its parent
-script. To import a variable, it must have been B<exported> by the parent
-and initialized (otherwise an error will occur).
-
-
-=head2 The Export command
-
-The C<Export> command is used as in the following example:
-
- $env = new cons();
- $INCLUDE = "#export/include";
- $LIB = "#export/lib";
- Export qw( env INCLUDE LIB );
- Build qw( util/Conscript );
-
-The values of the simple variables mentioned in the C<Export> list will be
-squirreled away by any subsequent C<Build> commands. The C<Export> command
-will only export Perl B<scalar> variables, that is, variables whose name
-begins with C<$>. Other variables, objects, etc. can be exported by
-reference, but all scripts will refer to the same object, and this object
-should be considered to be read-only by the subsidiary scripts and by the
-original exporting script. It's acceptable, however, to assign a new value
-to the exported scalar variable, that won't change the underlying variable
-referenced. This sequence, for example, is OK:
-
- $env = new cons();
- Export qw( env INCLUDE LIB );
- Build qw( util/Conscript );
- $env = new cons(CFLAGS => '-O');
- Build qw( other/Conscript );
-
-It doesn't matter whether the variable is set before or after the C<Export>
-command. The important thing is the value of the variable at the time the
-C<Build> command is executed. This is what gets squirreled away. Any
-subsequent C<Export> commands, by the way, invalidate the first: you must
-mention all the variables you wish to export on each C<Export> command.
-
-
-=head2 The Import command
-
-Variables exported by the C<Export> command can be imported into subsidiary
-scripts by the C<Import> command. The subsidiary script always imports
-variables directly from the superior script. Consider this example:
-
- Import qw( env INCLUDE );
-
-This is only legal if the parent script exported both C<$env> and
-C<$INCLUDE>. It also must have given each of these variables values. It is
-OK for the subsidiary script to only import a subset of the exported
-variables (in this example, C<$LIB>, which was exported by the previous
-example, is not imported).
-
-All the imported variables are automatically re-exported, so the sequence:
-
- Import qw ( env INCLUDE );
- Build qw ( beneath-me/Conscript );
-
-will supply both C<$env> and C<$INCLUDE> to the subsidiary file. If only
-C<$env> is to be exported, then the following will suffice:
-
- Import qw ( env INCLUDE );
- Export qw ( env );
- Build qw ( beneath-me/Conscript );
-
-Needless to say, the variables may be modified locally before invoking
-C<Build> on the subsidiary script.
-
-=head2 Build script evaluation order
-
-The only constraint on the ordering of build scripts is that superior
-scripts are evaluated before their inferior scripts. The top-level
-F<Construct> file, for instance, is evaluated first, followed by any
-inferior scripts. This is all you really need to know about the evaluation
-order, since order is generally irrelevant. Consider the following C<Build>
-command:
-
- Build qw(
- drivers/display/Conscript
- drivers/mouse/Conscript
- parser/Conscript
- utilities/Conscript
- );
-
-We've chosen to put the script names in alphabetical order, simply because
-that's the most convenient for maintenance purposes. Changing the order will
-make no difference to the build.
-
--->
-
- <para>
-
- The source code for large software projects
- rarely stays in a single directory,
- but is nearly always divided into a
- hierarchy of directories.
- Organizing a large software build using &SCons;
- involves creating a hierarchy of build scripts
- using the &SConscript; function.
-
- </para>
-
- <section>
- <title>&SConscript; Files</title>
-
- <para>
-
- As we've already seen,
- the build script at the top of the tree is called &SConstruct;.
- The top-level &SConstruct; file can
- use the &SConscript; function to
- include other subsidiary scripts in the build.
- These subsidiary scripts can, in turn,
- use the &SConscript; function
- to include still other scripts in the build.
- By convention, these subsidiary scripts are usually
- named &SConscript;.
- For example, a top-level &SConstruct; file might
- arrange for four subsidiary scripts to be included
- in the build as follows:
-
- </para>
-
- <sconstruct>
- SConscript(['drivers/display/SConscript',
- 'drivers/mouse/SConscript',
- 'parser/SConscript',
- 'utilities/SConscript'])
- </sconstruct>
-
- <para>
-
- In this case, the &SConstruct; file
- lists all of the &SConscript; files in the build explicitly.
- (Note, however, that not every directory in the tree
- necessarily has an &SConscript; file.)
- Alternatively, the <literal>drivers</literal>
- subdirectory might contain an intermediate
- &SConscript; file,
- in which case the &SConscript; call in
- the top-level &SConstruct; file
- would look like:
-
- </para>
-
- <sconstruct>
- SConscript(['drivers/SConscript',
- 'parser/SConscript',
- 'utilities/SConscript'])
- </sconstruct>
-
- <para>
-
- And the subsidiary &SConscript; file in the
- <literal>drivers</literal> subdirectory
- would look like:
-
- </para>
-
- <sconstruct>
- SConscript(['display/SConscript',
- 'mouse/SConscript'])
- </sconstruct>
-
- <para>
-
- Whether you list all of the &SConscript; files in the
- top-level &SConstruct; file,
- or place a subsidiary &SConscript; file in
- intervening directories,
- or use some mix of the two schemes,
- is up to you and the needs of your software.
-
- </para>
-
- </section>
-
- <section>
- <title>Path Names Are Relative to the &SConscript; Directory</title>
-
- <para>
-
- Subsidiary &SConscript; files make it easy to create a build
- hierarchy because all of the file and directory names
- in a subsidiary &SConscript; files are interpreted
- relative to the directory in which the &SConscript; file lives.
- Typically, this allows the &SConscript; file containing the
- instructions to build a target file
- to live in the same directory as the source files
- from which the target will be built,
- making it easy to update how the software is built
- whenever files are added or deleted
- (or other changes are made).
-
- </para>
-
- <para>
-
- For example, suppose we want to build two programs
- &prog1; and &prog2; in two separate directories
- with the same names as the programs.
- One typical way to do this would be
- with a top-level &SConstruct; file like this:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- SConscript(['prog1/SConscript',
- 'prog2/SConscript'])
- </file>
- <file name="prog1/SConscript">
- env = Environment()
- env.Program('prog1', ['main.c', 'foo1.c', 'foo2.c'])
- </file>
- <file name="prog2/SConscript">
- env = Environment()
- env.Program('prog2', ['main.c', 'bar1.c', 'bar2.c'])
- </file>
- <directory name="prog1"></directory>
- <file name="prog1/main.c">
- x
- </file>
- <file name="prog1/foo1.c">
- x
- </file>
- <file name="prog1/foo2.c">
- x
- </file>
- <directory name="prog2"></directory>
- <file name="prog2/main.c">
- x
- </file>
- <file name="prog2/bar1.c">
- x
- </file>
- <file name="prog2/bar2.c">
- x
- </file>
- </scons_example>
-
- <para>
-
- And subsidiary &SConscript; files that look like this:
-
- </para>
-
- <scons_example_file example="ex1" name="prog1/SConscript">
- </scons_example_file>
-
- <para>
-
- And this:
-
- </para>
-
- <scons_example_file example="ex1" name="prog2/SConscript">
- </scons_example_file>
-
- <para>
-
- Then, when we run &SCons; in the top-level directory,
- our build looks like:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice the following:
-
- First, you can have files with the same names
- in multiple directories, like main.c in the above example.
-
- Second, unlike standard recursive use of &Make;,
- &SCons; stays in the top-level directory
- (where the &SConstruct; file lives)
- and issues commands that use the path names
- from the top-level directory to the
- target and source files within the hierarchy.
-
- </para>
-
- </section>
-
- <section>
- <title>Top-Level Path Names in Subsidiary &SConscript; Files</title>
-
- <para>
-
- If you need to use a file from another directory,
- it's sometimes more convenient to specify
- the path to a file in another directory
- from the top-level &SConstruct; directory,
- even when you're using that file in
- a subsidiary &SConscript; file in a subdirectory.
- You can tell &SCons; to interpret a path name
- as relative to the top-level &SConstruct; directory,
- not the local directory of the &SConscript; file,
- by appending a &hash; (hash mark)
- to the beginning of the path name:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct">
- SConscript('src/prog/SConscript')
- </file>
- <file name="src/prog/SConscript" printme="1">
- env = Environment()
- env.Program('prog', ['main.c', '#lib/foo1.c', 'foo2.c'])
- </file>
- <file name="src/prog/main.c">
- x
- </file>
- <file name="lib/foo1.c">
- x
- </file>
- <file name="src/prog/foo2.c">
- x
- </file>
- </scons_example>
-
- <para>
-
- In this example,
- the <literal>lib</literal> directory is
- directly underneath the top-level &SConstruct; directory.
- If the above &SConscript; file is in a subdirectory
- named <literal>src/prog</literal>,
- the output would look like:
-
- </para>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- (Notice that the <literal>lib/foo1.o</literal> object file
- is built in the same directory as its source file.
- See <xref linkend="chap-separate"></xref>, below,
- for information about
- how to build the object file in a different subdirectory.)
-
- </para>
-
- </section>
-
- <section>
- <title>Absolute Path Names</title>
-
- <para>
-
- Of course, you can always specify
- an absolute path name for a file--for example:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct">
- SConscript('src/prog/SConscript')
- </file>
- <file name="src/prog/SConscript" printme="1">
- env = Environment()
- env.Program('prog', ['main.c', '__ROOT__/usr/joe/lib/foo1.c', 'foo2.c'])
- </file>
- <file name="src/prog/main.c">
- x
- </file>
- <file name="__ROOT__/usr/joe/lib/foo1.c">
- x
- </file>
- <file name="src/prog/foo2.c">
- x
- </file>
- </scons_example>
-
- <para>
-
- Which, when executed, would yield:
-
- </para>
-
- <scons_output example="ex3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- (As was the case with top-relative path names,
- notice that the <literal>/usr/joe/lib/foo1.o</literal> object file
- is built in the same directory as its source file.
- See <xref linkend="chap-separate"></xref>, below,
- for information about
- how to build the object file in a different subdirectory.)
-
- </para>
-
- </section>
-
- <section>
- <title>Sharing Environments (and Other Variables) Between &SConscript; Files</title>
-
- <para>
-
- In the previous example,
- each of the subsidiary &SConscript; files
- created its own construction environment
- by calling &Environment; separately.
- This obviously works fine,
- but if each program must be built
- with the same construction variables,
- it's cumbersome and error-prone to initialize
- separate construction environments
- in the same way over and over in each subsidiary
- &SConscript; file.
-
- </para>
-
- <para>
-
- &SCons; supports the ability to <emphasis>export</emphasis> variables
- from a parent &SConscript; file
- to its subsidiary &SConscript; files,
- which allows you to share common initialized
- values throughout your build hierarchy.
-
- </para>
-
- <section>
- <title>Exporting Variables</title>
-
- <para>
-
- There are two ways to export a variable,
- such as a construction environment,
- from an &SConscript; file,
- so that it may be used by other &SConscript; files.
- First, you can call the &Export;
- function with a list of variables,
- or a string of white-space separated variable names.
- Each call to &Export; adds one
- or more variables to a global list
- of variables that are available for import
- by other &SConscript; files.
-
- </para>
-
- <sconstruct>
- env = Environment()
- Export('env')
- </sconstruct>
-
- <para>
-
- You may export more than one variable name at a time:
-
- </para>
-
- <sconstruct>
- env = Environment()
- debug = ARGUMENTS['debug']
- Export('env', 'debug')
- </sconstruct>
-
- <para>
-
- Because white space is not legal in Python variable names,
- the &Export; function will even automatically split
- a string into separate names for you:
-
- </para>
-
- <sconstruct>
- Export('env debug')
- </sconstruct>
-
- <para>
-
- Second, you can specify a list of
- variables to export as a second argument
- to the &SConscript; function call:
-
- </para>
-
- <sconstruct>
- SConscript('src/SConscript', 'env')
- </sconstruct>
-
- <para>
-
- Or as the &exports; keyword argument:
-
- </para>
-
- <sconstruct>
- SConscript('src/SConscript', exports='env')
- </sconstruct>
-
- <para>
-
- These calls export the specified variables
- to only the listed &SConscript; files.
- You may, however, specify more than one
- &SConscript; file in a list:
-
- </para>
-
- <sconstruct>
- SConscript(['src1/SConscript',
- 'src2/SConscript'], exports='env')
- </sconstruct>
-
- <para>
-
- This is functionally equivalent to
- calling the &SConscript; function
- multiple times with the same &exports; argument,
- one per &SConscript; file.
-
- </para>
-
- </section>
-
- <section>
- <title>Importing Variables</title>
-
- <para>
-
- Once a variable has been exported from a calling
- &SConscript; file,
- it may be used in other &SConscript; files
- by calling the &Import; function:
-
- </para>
-
- <sconstruct>
- Import('env')
- env.Program('prog', ['prog.c'])
- </sconstruct>
-
- <para>
-
- The &Import; call makes the <literal>env</literal> construction
- environment available to the &SConscript; file,
- after which the variable can be used to build
- programs, libraries, etc.
-
- </para>
-
- <para>
-
- Like the &Export; function,
- the &Import; function can be used
- with multiple variable names:
-
- </para>
-
- <sconstruct>
- Import('env', 'debug')
- env = env.Clone(DEBUG = debug)
- env.Program('prog', ['prog.c'])
- </sconstruct>
-
- <para>
-
- And the &Import; function will similarly
- split a string along white-space
- into separate variable names:
-
- </para>
-
- <sconstruct>
- Import('env debug')
- env = env.Clone(DEBUG = debug)
- env.Program('prog', ['prog.c'])
- </sconstruct>
-
- <para>
-
- Lastly, as a special case,
- you may import all of the variables that
- have been exported by supplying an asterisk
- to the &Import; function:
-
- </para>
-
- <sconstruct>
- Import('*')
- env = env.Clone(DEBUG = debug)
- env.Program('prog', ['prog.c'])
- </sconstruct>
-
- <para>
-
- If you're dealing with a lot of &SConscript; files,
- this can be a lot simpler than keeping
- arbitrary lists of imported variables in each file.
-
- </para>
-
- </section>
-
- <section>
- <title>Returning Values From an &SConscript; File</title>
-
- <para>
-
- Sometimes, you would like to be able to
- use information from a subsidiary
- &SConscript; file in some way.
- For example,
- suppose that you want to create one
- library from source files
- scattered throughout a number
- of subsidiary &SConscript; files.
- You can do this by using the &Return;
- function to return values
- from the subsidiary &SConscript; files
- to the calling file.
-
- </para>
-
- <para>
-
- If, for example, we have two subdirectories
- &foo; and &bar;
- that should each contribute a source
- file to a Library,
- what we'd like to be able to do is
- collect the object files
- from the subsidiary &SConscript; calls
- like this:
-
- </para>
-
- <scons_example name="Return">
- <file name="SConstruct" printme="1">
- env = Environment()
- Export('env')
- objs = []
- for subdir in ['foo', 'bar']:
- o = SConscript('%s/SConscript' % subdir)
- objs.append(o)
- env.Library('prog', objs)
- </file>
- <directory name="foo"></directory>
- <directory name="bar"></directory>
- <file name="foo/SConscript">
- Import('env')
- obj = env.Object('foo.c')
- Return('obj')
- </file>
- <file name="bar/SConscript">
- Import('env')
- obj = env.Object('bar.c')
- Return('obj')
- </file>
- <file name="foo/foo.c">
- void foo(void) { printf("foo/foo.c\n"); }
- </file>
- <file name="bar/bar.c">
- void bar(void) { printf("bar/bar.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- We can do this by using the &Return;
- function in the
- <literal>foo/SConscript</literal> file like this:
-
- </para>
-
- <scons_example_file example="Return" name="foo/SConscript">
- </scons_example_file>
-
- <para>
-
- (The corresponding
- <literal>bar/SConscript</literal>
- file should be pretty obvious.)
- Then when we run &SCons;,
- the object files from the subsidiary subdirectories
- are all correctly archived in the desired library:
-
- </para>
-
- <scons_output example="Return">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <!--
- XXX Return(stop=False)
- -->
-
- </section>
-
- </section>
-
- <!--
-
- <section>
- <title>Executing From a Subdirectory: the -D, -u and -U Options</title>
-
- <para>
-
- XXX -D, -u and -U
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/hierarchy.xml b/doc/user/hierarchy.xml
index 17067d7..c0664ee 100644
--- a/doc/user/hierarchy.xml
+++ b/doc/user/hierarchy.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-hierarchical"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Hierarchical Builds</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -196,12 +218,12 @@ make no difference to the build.
</para>
- <programlisting>
- SConscript(['drivers/display/SConscript',
- 'drivers/mouse/SConscript',
- 'parser/SConscript',
- 'utilities/SConscript'])
- </programlisting>
+ <sconstruct>
+SConscript(['drivers/display/SConscript',
+ 'drivers/mouse/SConscript',
+ 'parser/SConscript',
+ 'utilities/SConscript'])
+ </sconstruct>
<para>
@@ -218,11 +240,11 @@ make no difference to the build.
</para>
- <programlisting>
- SConscript(['drivers/SConscript',
- 'parser/SConscript',
- 'utilities/SConscript'])
- </programlisting>
+ <sconstruct>
+SConscript(['drivers/SConscript',
+ 'parser/SConscript',
+ 'utilities/SConscript'])
+ </sconstruct>
<para>
@@ -232,10 +254,10 @@ make no difference to the build.
</para>
- <programlisting>
- SConscript(['display/SConscript',
- 'mouse/SConscript'])
- </programlisting>
+ <sconstruct>
+SConscript(['display/SConscript',
+ 'mouse/SConscript'])
+ </sconstruct>
<para>
@@ -279,10 +301,40 @@ make no difference to the build.
</para>
- <programlisting>
- SConscript(['prog1/SConscript',
- 'prog2/SConscript'])
- </programlisting>
+ <scons_example name="hierarchy_ex1">
+ <file name="SConstruct" printme="1">
+SConscript(['prog1/SConscript',
+ 'prog2/SConscript'])
+ </file>
+ <file name="prog1/SConscript">
+env = Environment()
+env.Program('prog1', ['main.c', 'foo1.c', 'foo2.c'])
+ </file>
+ <file name="prog2/SConscript">
+env = Environment()
+env.Program('prog2', ['main.c', 'bar1.c', 'bar2.c'])
+ </file>
+ <directory name="prog1"></directory>
+ <file name="prog1/main.c">
+x
+ </file>
+ <file name="prog1/foo1.c">
+x
+ </file>
+ <file name="prog1/foo2.c">
+x
+ </file>
+ <directory name="prog2"></directory>
+ <file name="prog2/main.c">
+x
+ </file>
+ <file name="prog2/bar1.c">
+x
+ </file>
+ <file name="prog2/bar2.c">
+x
+ </file>
+ </scons_example>
<para>
@@ -290,11 +342,8 @@ make no difference to the build.
</para>
-
- <programlisting>
- env = Environment()
- env.Program('prog1', ['main.c', 'foo1.c', 'foo2.c'])
- </programlisting>
+ <scons_example_file example="hierarchy_ex1" name="prog1/SConscript">
+ </scons_example_file>
<para>
@@ -302,11 +351,8 @@ make no difference to the build.
</para>
-
- <programlisting>
- env = Environment()
- env.Program('prog2', ['main.c', 'bar1.c', 'bar2.c'])
- </programlisting>
+ <scons_example_file example="hierarchy_ex1" name="prog2/SConscript">
+ </scons_example_file>
<para>
@@ -315,17 +361,9 @@ make no difference to the build.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o prog1/foo1.o -c prog1/foo1.c
- cc -o prog1/foo2.o -c prog1/foo2.c
- cc -o prog1/main.o -c prog1/main.c
- cc -o prog1/prog1 prog1/main.o prog1/foo1.o prog1/foo2.o
- cc -o prog2/bar1.o -c prog2/bar1.c
- cc -o prog2/bar2.o -c prog2/bar2.c
- cc -o prog2/main.o -c prog2/main.c
- cc -o prog2/prog2 prog2/main.o prog2/bar1.o prog2/bar2.o
- </screen>
+ <scons_output example="hierarchy_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -364,10 +402,24 @@ make no difference to the build.
</para>
- <programlisting>
- env = Environment()
- env.Program('prog', ['main.c', '#lib/foo1.c', 'foo2.c'])
- </programlisting>
+ <scons_example name="hierarchy_ex2">
+ <file name="SConstruct">
+SConscript('src/prog/SConscript')
+ </file>
+ <file name="src/prog/SConscript" printme="1">
+env = Environment()
+env.Program('prog', ['main.c', '#lib/foo1.c', 'foo2.c'])
+ </file>
+ <file name="src/prog/main.c">
+x
+ </file>
+ <file name="lib/foo1.c">
+x
+ </file>
+ <file name="src/prog/foo2.c">
+x
+ </file>
+ </scons_example>
<para>
@@ -380,13 +432,9 @@ make no difference to the build.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o lib/foo1.o -c lib/foo1.c
- cc -o src/prog/foo2.o -c src/prog/foo2.c
- cc -o src/prog/main.o -c src/prog/main.c
- cc -o src/prog/prog src/prog/main.o lib/foo1.o src/prog/foo2.o
- </screen>
+ <scons_output example="hierarchy_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -410,10 +458,24 @@ make no difference to the build.
</para>
- <programlisting>
- env = Environment()
- env.Program('prog', ['main.c', '/usr/joe/lib/foo1.c', 'foo2.c'])
- </programlisting>
+ <scons_example name="hierarchy_ex3">
+ <file name="SConstruct">
+SConscript('src/prog/SConscript')
+ </file>
+ <file name="src/prog/SConscript" printme="1">
+env = Environment()
+env.Program('prog', ['main.c', '__ROOT__/usr/joe/lib/foo1.c', 'foo2.c'])
+ </file>
+ <file name="src/prog/main.c">
+x
+ </file>
+ <file name="__ROOT__/usr/joe/lib/foo1.c">
+x
+ </file>
+ <file name="src/prog/foo2.c">
+x
+ </file>
+ </scons_example>
<para>
@@ -421,13 +483,9 @@ make no difference to the build.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o src/prog/foo2.o -c src/prog/foo2.c
- cc -o src/prog/main.o -c src/prog/main.c
- cc -o /usr/joe/lib/foo1.o -c /usr/joe/lib/foo1.c
- cc -o src/prog/prog src/prog/main.o /usr/joe/lib/foo1.o src/prog/foo2.o
- </screen>
+ <scons_output example="hierarchy_ex3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -490,10 +548,10 @@ make no difference to the build.
</para>
- <programlisting>
- env = Environment()
- Export('env')
- </programlisting>
+ <sconstruct>
+env = Environment()
+Export('env')
+ </sconstruct>
<para>
@@ -501,11 +559,11 @@ make no difference to the build.
</para>
- <programlisting>
- env = Environment()
- debug = ARGUMENTS['debug']
- Export('env', 'debug')
- </programlisting>
+ <sconstruct>
+env = Environment()
+debug = ARGUMENTS['debug']
+Export('env', 'debug')
+ </sconstruct>
<para>
@@ -515,9 +573,9 @@ make no difference to the build.
</para>
- <programlisting>
- Export('env debug')
- </programlisting>
+ <sconstruct>
+Export('env debug')
+ </sconstruct>
<para>
@@ -527,9 +585,9 @@ make no difference to the build.
</para>
- <programlisting>
- SConscript('src/SConscript', 'env')
- </programlisting>
+ <sconstruct>
+SConscript('src/SConscript', 'env')
+ </sconstruct>
<para>
@@ -537,9 +595,9 @@ make no difference to the build.
</para>
- <programlisting>
- SConscript('src/SConscript', exports='env')
- </programlisting>
+ <sconstruct>
+SConscript('src/SConscript', exports='env')
+ </sconstruct>
<para>
@@ -550,10 +608,10 @@ make no difference to the build.
</para>
- <programlisting>
- SConscript(['src1/SConscript',
- 'src2/SConscript'], exports='env')
- </programlisting>
+ <sconstruct>
+SConscript(['src1/SConscript',
+ 'src2/SConscript'], exports='env')
+ </sconstruct>
<para>
@@ -578,10 +636,10 @@ make no difference to the build.
</para>
- <programlisting>
- Import('env')
- env.Program('prog', ['prog.c'])
- </programlisting>
+ <sconstruct>
+Import('env')
+env.Program('prog', ['prog.c'])
+ </sconstruct>
<para>
@@ -600,11 +658,11 @@ make no difference to the build.
</para>
- <programlisting>
- Import('env', 'debug')
- env = env.Clone(DEBUG = debug)
- env.Program('prog', ['prog.c'])
- </programlisting>
+ <sconstruct>
+Import('env', 'debug')
+env = env.Clone(DEBUG = debug)
+env.Program('prog', ['prog.c'])
+ </sconstruct>
<para>
@@ -614,11 +672,11 @@ make no difference to the build.
</para>
- <programlisting>
- Import('env debug')
- env = env.Clone(DEBUG = debug)
- env.Program('prog', ['prog.c'])
- </programlisting>
+ <sconstruct>
+Import('env debug')
+env = env.Clone(DEBUG = debug)
+env.Program('prog', ['prog.c'])
+ </sconstruct>
<para>
@@ -629,11 +687,11 @@ make no difference to the build.
</para>
- <programlisting>
- Import('*')
- env = env.Clone(DEBUG = debug)
- env.Program('prog', ['prog.c'])
- </programlisting>
+ <sconstruct>
+Import('*')
+env = env.Clone(DEBUG = debug)
+env.Program('prog', ['prog.c'])
+ </sconstruct>
<para>
@@ -678,15 +736,35 @@ make no difference to the build.
</para>
- <programlisting>
- env = Environment()
- Export('env')
- objs = []
- for subdir in ['foo', 'bar']:
- o = SConscript('%s/SConscript' % subdir)
- objs.append(o)
- env.Library('prog', objs)
- </programlisting>
+ <scons_example name="hierarchy_Return">
+ <file name="SConstruct" printme="1">
+env = Environment()
+Export('env')
+objs = []
+for subdir in ['foo', 'bar']:
+ o = SConscript('%s/SConscript' % subdir)
+ objs.append(o)
+env.Library('prog', objs)
+ </file>
+ <directory name="foo"></directory>
+ <directory name="bar"></directory>
+ <file name="foo/SConscript">
+Import('env')
+obj = env.Object('foo.c')
+Return('obj')
+ </file>
+ <file name="bar/SConscript">
+Import('env')
+obj = env.Object('bar.c')
+Return('obj')
+ </file>
+ <file name="foo/foo.c">
+void foo(void) { printf("foo/foo.c\n"); }
+ </file>
+ <file name="bar/bar.c">
+void bar(void) { printf("bar/bar.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -696,12 +774,8 @@ make no difference to the build.
</para>
-
- <programlisting>
- Import('env')
- obj = env.Object('foo.c')
- Return('obj')
- </programlisting>
+ <scons_example_file example="hierarchy_Return" name="foo/SConscript">
+ </scons_example_file>
<para>
@@ -714,13 +788,9 @@ make no difference to the build.
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o bar/bar.o -c bar/bar.c
- cc -o foo/foo.o -c foo/foo.c
- ar rc libprog.a foo/foo.o bar/bar.o
- ranlib libprog.a
- </screen>
+ <scons_output example="hierarchy_Return" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<!--
XXX Return(stop=False)
@@ -744,3 +814,5 @@ make no difference to the build.
</section>
-->
+
+</chapter>
diff --git a/doc/user/html.xsl b/doc/user/html.xsl
new file mode 100644
index 0000000..fd10751
--- /dev/null
+++ b/doc/user/html.xsl
@@ -0,0 +1,59 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl"/>
+
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<!-- Prevent our EPUB cover image from getting included -->
+<xsl:template match="mediaobject[@role = 'cover']">
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/user/install.in b/doc/user/install.in
deleted file mode 100644
index f0a5f26..0000000
--- a/doc/user/install.in
+++ /dev/null
@@ -1,247 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- Once a program is built,
- it is often appropriate to install it in another
- directory for public use.
- You use the &Install; method
- to arrange for a program, or any other file,
- to be copied into a destination directory:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- env.Install('__ROOT__/usr/bin', hello)
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Note, however, that installing a file is
- still considered a type of file "build."
- This is important when you remember that
- the default behavior of &SCons; is
- to build files in or below the current directory.
- If, as in the example above,
- you are installing files in a directory
- outside of the top-level &SConstruct; file's directory tree,
- you must specify that directory
- (or a higher directory, such as <literal>/</literal>)
- for it to install anything there:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q __ROOT__/usr/bin</scons_output_command>
- </scons_output>
-
- <para>
-
- It can, however, be cumbersome to remember
- (and type) the specific destination directory
- in which the program (or any other file)
- should be installed.
- This is an area where the &Alias;
- function comes in handy,
- allowing you, for example,
- to create a pseudo-target named <literal>install</literal>
- that can expand to the specified destination directory:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- env.Install('__ROOT__/usr/bin', hello)
- env.Alias('install', '__ROOT__/usr/bin')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- This then yields the more natural
- ability to install the program
- in its destination as follows:
-
- </para>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q install</scons_output_command>
- </scons_output>
-
- <section>
- <title>Installing Multiple Files in a Directory</title>
-
- <para>
-
- You can install multiple files into a directory
- simply by calling the &Install; function multiple times:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- goodbye = env.Program('goodbye.c')
- env.Install('__ROOT__/usr/bin', hello)
- env.Install('__ROOT__/usr/bin', goodbye)
- env.Alias('install', '__ROOT__/usr/bin')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="goodbye.c">
- int main() { printf("Goodbye, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Or, more succinctly, listing the multiple input
- files in a list
- (just like you can do with any other builder):
-
- </para>
-
- <sconstruct>
- env = Environment()
- hello = env.Program('hello.c')
- goodbye = env.Program('goodbye.c')
- env.Install('__ROOT__/usr/bin', [hello, goodbye])
- env.Alias('install', '__ROOT__/usr/bin')
- </sconstruct>
-
- <para>
-
- Either of these two examples yields:
-
- </para>
-
- <scons_output example="ex3">
- <scons_output_command>scons -Q install</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Installing a File Under a Different Name</title>
-
- <para>
-
- The &Install; method preserves the name
- of the file when it is copied into the
- destination directory.
- If you need to change the name of the file
- when you copy it, use the &InstallAs; function:
-
- </para>
-
- <scons_example name="ex4">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- env.InstallAs('__ROOT__/usr/bin/hello-new', hello)
- env.Alias('install', '__ROOT__/usr/bin')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- This installs the <literal>hello</literal>
- program with the name <literal>hello-new</literal>
- as follows:
-
- </para>
-
- <scons_output example="ex4">
- <scons_output_command>scons -Q install</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Installing Multiple Files Under Different Names</title>
-
- <para>
-
- Lastly, if you have multiple files that all
- need to be installed with different file names,
- you can either call the &InstallAs; function
- multiple times, or as a shorthand,
- you can supply same-length lists
- for both the target and source arguments:
-
- </para>
-
- <scons_example name="ex5">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- goodbye = env.Program('goodbye.c')
- env.InstallAs(['__ROOT__/usr/bin/hello-new',
- '__ROOT__/usr/bin/goodbye-new'],
- [hello, goodbye])
- env.Alias('install', '__ROOT__/usr/bin')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="goodbye.c">
- int main() { printf("Goodbye, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- In this case, the &InstallAs; function
- loops through both lists simultaneously,
- and copies each source file into its corresponding
- target file name:
-
- </para>
-
- <scons_output example="ex5">
- <scons_output_command>scons -Q install</scons_output_command>
- </scons_output>
-
- </section>
diff --git a/doc/user/install.xml b/doc/user/install.xml
index 37a508f..e229268 100644
--- a/doc/user/install.xml
+++ b/doc/user/install.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<chapter id="chap-install"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Installing Files in Other Directories: the &Install; Builder</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -34,11 +56,16 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- env.Install('/usr/bin', hello)
- </programlisting>
+ <scons_example name="install_ex1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+env.Install('__ROOT__/usr/bin', hello)
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -56,13 +83,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q /usr/bin</userinput>
- Install file: "hello" as "/usr/bin/hello"
- </screen>
+ <scons_output example="install_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q __ROOT__/usr/bin</scons_output_command>
+ </scons_output>
<para>
@@ -78,12 +102,17 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- env.Install('/usr/bin', hello)
- env.Alias('install', '/usr/bin')
- </programlisting>
+ <scons_example name="install_ex2">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+env.Install('__ROOT__/usr/bin', hello)
+env.Alias('install', '__ROOT__/usr/bin')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -93,13 +122,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- % <userinput>scons -Q install</userinput>
- Install file: "hello" as "/usr/bin/hello"
- </screen>
+ <scons_output example="install_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q install</scons_output_command>
+ </scons_output>
<section>
<title>Installing Multiple Files in a Directory</title>
@@ -111,14 +137,22 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- goodbye = env.Program('goodbye.c')
- env.Install('/usr/bin', hello)
- env.Install('/usr/bin', goodbye)
- env.Alias('install', '/usr/bin')
- </programlisting>
+ <scons_example name="install_ex3">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+goodbye = env.Program('goodbye.c')
+env.Install('__ROOT__/usr/bin', hello)
+env.Install('__ROOT__/usr/bin', goodbye)
+env.Alias('install', '__ROOT__/usr/bin')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="goodbye.c">
+int main() { printf("Goodbye, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -128,13 +162,13 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- goodbye = env.Program('goodbye.c')
- env.Install('/usr/bin', [hello, goodbye])
- env.Alias('install', '/usr/bin')
- </programlisting>
+ <sconstruct>
+env = Environment()
+hello = env.Program('hello.c')
+goodbye = env.Program('goodbye.c')
+env.Install('__ROOT__/usr/bin', [hello, goodbye])
+env.Alias('install', '__ROOT__/usr/bin')
+ </sconstruct>
<para>
@@ -142,15 +176,9 @@
</para>
- <screen>
- % <userinput>scons -Q install</userinput>
- cc -o goodbye.o -c goodbye.c
- cc -o goodbye goodbye.o
- Install file: "goodbye" as "/usr/bin/goodbye"
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- Install file: "hello" as "/usr/bin/hello"
- </screen>
+ <scons_output example="install_ex3" suffix="1">
+ <scons_output_command>scons -Q install</scons_output_command>
+ </scons_output>
</section>
@@ -167,12 +195,17 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- env.InstallAs('/usr/bin/hello-new', hello)
- env.Alias('install', '/usr/bin')
- </programlisting>
+ <scons_example name="install_ex4">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+env.InstallAs('__ROOT__/usr/bin/hello-new', hello)
+env.Alias('install', '__ROOT__/usr/bin')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -182,12 +215,9 @@
</para>
- <screen>
- % <userinput>scons -Q install</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- Install file: "hello" as "/usr/bin/hello-new"
- </screen>
+ <scons_output example="install_ex4" suffix="1">
+ <scons_output_command>scons -Q install</scons_output_command>
+ </scons_output>
</section>
@@ -205,15 +235,23 @@
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- goodbye = env.Program('goodbye.c')
- env.InstallAs(['/usr/bin/hello-new',
- '/usr/bin/goodbye-new'],
- [hello, goodbye])
- env.Alias('install', '/usr/bin')
- </programlisting>
+ <scons_example name="install_ex5">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+goodbye = env.Program('goodbye.c')
+env.InstallAs(['__ROOT__/usr/bin/hello-new',
+ '__ROOT__/usr/bin/goodbye-new'],
+ [hello, goodbye])
+env.Alias('install', '__ROOT__/usr/bin')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="goodbye.c">
+int main() { printf("Goodbye, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -224,14 +262,10 @@
</para>
- <screen>
- % <userinput>scons -Q install</userinput>
- cc -o goodbye.o -c goodbye.c
- cc -o goodbye goodbye.o
- Install file: "goodbye" as "/usr/bin/goodbye-new"
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- Install file: "hello" as "/usr/bin/hello-new"
- </screen>
+ <scons_output example="install_ex5" suffix="1">
+ <scons_output_command>scons -Q install</scons_output_command>
+ </scons_output>
</section>
+
+</chapter>
diff --git a/doc/user/java.in b/doc/user/java.in
deleted file mode 100644
index 5744055..0000000
--- a/doc/user/java.in
+++ /dev/null
@@ -1,657 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- So far, we've been using examples of
- building C and C++ programs
- to demonstrate the features of &SCons;.
- &SCons; also supports building Java programs,
- but Java builds are handled slightly differently,
- which reflects the ways in which
- the Java compiler and tools
- build programs differently than
- other languages' tool chains.
-
- </para>
-
- <section>
- <title>Building Java Class Files: the &b-Java; Builder</title>
-
- <para>
-
- The basic activity when programming in Java,
- of course, is to take one or more <filename>.java</filename> files
- containing Java source code
- and to call the Java compiler
- to turn them into one or more
- <filename>.class</filename> files.
- In &SCons;, you do this
- by giving the &b-link-Java; Builder
- a target directory in which
- to put the <filename>.class</filename> files,
- and a source directory that contains
- the <filename>.java</filename> files:
-
- </para>
-
- <scons_example name="java">
- <file name="SConstruct" printme="1">
- Java('classes', 'src')
- </file>
- <file name="src/Example1.java">
- public class Example1
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="src/Example2.java">
- public class Example2
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="src/Example3.java">
- public class Example3
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- If the <filename>src</filename> directory contains
- three <filename>.java</filename> source files,
- then running &SCons; might look like this:
-
- </para>
-
- <scons_output example="java">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- &SCons; will actually search the <filename>src</filename>
- directory tree for all of the <filename>.java</filename> files.
- The Java compiler will then create the
- necessary class files in the <filename>classes</filename> subdirectory,
- based on the class names found in the <filename>.java</filename> files.
-
- </para>
-
- </section>
-
- <section>
- <title>How &SCons; Handles Java Dependencies</title>
-
- <para>
-
- In addition to searching the source directory for
- <filename>.java</filename> files,
- &SCons; actually runs the <filename>.java</filename> files
- through a stripped-down Java parser that figures out
- what classes are defined.
- In other words, &SCons; knows,
- without you having to tell it,
- what <filename>.class</filename> files
- will be produced by the &javac; call.
- So our one-liner example from the preceding section:
-
- </para>
-
- <scons_example name="java-classes">
- <file name="SConstruct" printme="1">
- Java('classes', 'src')
- </file>
- <file name="src/Example1.java">
- public class Example1
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- public class AdditionalClass1
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="src/Example2.java">
- public class Example2
- {
- class Inner2 {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- }
- </file>
- <file name="src/Example3.java">
- public class Example3
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- public class AdditionalClass3
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- Will not only tell you reliably
- that the <filename>.class</filename> files
- in the <filename>classes</filename> subdirectory
- are up-to-date:
-
- </para>
-
- <scons_output example="java-classes">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q classes</scons_output_command>
- </scons_output>
-
- <para>
-
- But it will also remove all of the generated
- <filename>.class</filename> files,
- even for inner classes,
- without you having to specify them manually.
- For example, if our
- <filename>Example1.java</filename>
- and
- <filename>Example3.java</filename>
- files both define additional classes,
- and the class defined in <filename>Example2.java</filename>
- has an inner class,
- running <userinput>scons -c</userinput>
- will clean up all of those <filename>.class</filename> files
- as well:
-
- </para>
-
- <scons_output example="java-classes">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c classes</scons_output_command>
- </scons_output>
-
- <para>
-
- To ensure correct handling of <filename>.class</filename>
- dependencies in all cases, you need to tell &SCons; which Java
- version is being used. This is needed because Java 1.5 changed
- the <filename>.class</filename> file names for nested anonymous
- inner classes. Use the <varname>JAVAVERSION</varname> construction
- variable to specify the version in use. With Java 1.6, the
- one-liner example can then be defined like this:
-
- </para>
-
- <sconstruct>
- Java('classes', 'src', JAVAVERSION='1.6')
- </sconstruct>
-
- <para>
- See <varname>JAVAVERSION</varname> in the man page for more information.
- </para>
-
- </section>
-
- <section>
- <title>Building Java Archive (<filename>.jar</filename>) Files: the &b-Jar; Builder</title>
-
- <para>
-
- After building the class files,
- it's common to collect them into
- a Java archive (<filename>.jar</filename>) file,
- which you do by calling the &b-link-Jar; Builder method.
- If you want to just collect all of the
- class files within a subdirectory,
- you can just specify that subdirectory
- as the &b-Jar; source:
-
- </para>
-
- <scons_example name="jar1">
- <file name="SConstruct" printme="1">
- Java(target = 'classes', source = 'src')
- Jar(target = 'test.jar', source = 'classes')
- </file>
- <file name="src/Example1.java">
- public class Example1
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="src/Example2.java">
- public class Example2
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="src/Example3.java">
- public class Example3
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- &SCons; will then pass that directory
- to the &jar; command,
- which will collect all of the underlying
- <filename>.class</filename> files:
-
- </para>
-
- <scons_output example="jar1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If you want to keep all of the
- <filename>.class</filename> files
- for multiple programs in one location,
- and only archive some of them in
- each <filename>.jar</filename> file,
- you can pass the &b-Jar; builder a
- list of files as its source.
- It's extremely simple to create multiple
- <filename>.jar</filename> files this way,
- using the lists of target class files created
- by calls to the &b-link-Java; builder
- as sources to the various &b-Jar; calls:
-
- </para>
-
- <scons_example name="jar2">
- <file name="SConstruct" printme="1">
- prog1_class_files = Java(target = 'classes', source = 'prog1')
- prog2_class_files = Java(target = 'classes', source = 'prog2')
- Jar(target = 'prog1.jar', source = prog1_class_files)
- Jar(target = 'prog2.jar', source = prog2_class_files)
- </file>
- <file name="prog1/Example1.java">
- public class Example1
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="prog1/Example2.java">
- public class Example2
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="prog2/Example3.java">
- public class Example3
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- <file name="prog2/Example4.java">
- public class Example4
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- This will then create
- <filename>prog1.jar</filename>
- and <filename>prog2.jar</filename>
- next to the subdirectories
- that contain their <filename>.java</filename> files:
-
- </para>
-
- <scons_output example="jar2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Building C Header and Stub Files: the &b-JavaH; Builder</title>
-
- <para>
-
- You can generate C header and source files
- for implementing native methods,
- by using the &b-link-JavaH; Builder.
- There are several ways of using the &JavaH; Builder.
- One typical invocation might look like:
-
- </para>
-
- <scons_example name="javah">
- <file name="SConstruct" printme="1">
- classes = Java(target = 'classes', source = 'src/pkg/sub')
- JavaH(target = 'native', source = classes)
- </file>
- <file name="src/pkg/sub/Example1.java">
- package pkg.sub;
- public class Example1
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- <file name="src/pkg/sub/Example2.java">
- package pkg.sub;
- public class Example2
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- <file name="src/pkg/sub/Example3.java">
- package pkg.sub;
- public class Example3
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- The source is a list of class files generated by the
- call to the &b-link-Java; Builder,
- and the target is the output directory in
- which we want the C header files placed.
- The target
- gets converted into the <option>-d</option>
- when &SCons; runs &javah;:
-
- </para>
-
- <scons_output example="javah">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- In this case,
- the call to &javah;
- will generate the header files
- <filename>native/pkg_sub_Example1.h</filename>,
- <filename>native/pkg_sub_Example2.h</filename>
- and
- <filename>native/pkg_sub_Example3.h</filename>.
- Notice that &SCons; remembered that the class
- files were generated with a target directory of
- <filename>classes</filename>,
- and that it then specified that target directory
- as the <option>-classpath</option> option
- to the call to &javah;.
-
- </para>
-
- <para>
-
- Although it's more convenient to use
- the list of class files returned by
- the &b-Java; Builder
- as the source of a call to the &b-JavaH; Builder,
- you <emphasis>can</emphasis>
- specify the list of class files
- by hand, if you prefer.
- If you do,
- you need to set the
- &cv-link-JAVACLASSDIR; construction variable
- when calling &b-JavaH;:
-
- </para>
-
- <scons_example name="JAVACLASSDIR">
- <file name="SConstruct" printme="1">
- Java(target = 'classes', source = 'src/pkg/sub')
- class_file_list = ['classes/pkg/sub/Example1.class',
- 'classes/pkg/sub/Example2.class',
- 'classes/pkg/sub/Example3.class']
- JavaH(target = 'native', source = class_file_list, JAVACLASSDIR = 'classes')
- </file>
- <file name="src/pkg/sub/Example1.java">
- package pkg.sub;
- public class Example1
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- <file name="src/pkg/sub/Example2.java">
- package pkg.sub;
- public class Example2
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- <file name="src/pkg/sub/Example3.java">
- package pkg.sub;
- public class Example3
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- The &cv-JAVACLASSDIR; value then
- gets converted into the <option>-classpath</option>
- when &SCons; runs &javah;:
-
- </para>
-
- <scons_output example="JAVACLASSDIR">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Lastly, if you don't want a separate header file
- generated for each source file,
- you can specify an explicit File Node
- as the target of the &b-JavaH; Builder:
-
- </para>
-
- <scons_example name="javah_file">
- <file name="SConstruct" printme="1">
- classes = Java(target = 'classes', source = 'src/pkg/sub')
- JavaH(target = File('native.h'), source = classes)
- </file>
- <file name="src/pkg/sub/Example1.java">
- package pkg.sub;
- public class Example1
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- <file name="src/pkg/sub/Example2.java">
- package pkg.sub;
- public class Example2
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- <file name="src/pkg/sub/Example3.java">
- package pkg.sub;
- public class Example3
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- Because &SCons; assumes by default
- that the target of the &b-JavaH; builder is a directory,
- you need to use the &File; function
- to make sure that &SCons; doesn't
- create a directory named <filename>native.h</filename>.
- When a file is used, though,
- &SCons; correctly converts the file name
- into the &javah; <option>-o</option> option:
-
- </para>
-
- <scons_output example="javah_file">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Building RMI Stub and Skeleton Class Files: the &b-RMIC; Builder</title>
-
- <para>
-
- You can generate Remote Method Invocation stubs
- by using the &b-link-RMIC; Builder.
- The source is a list of directories,
- typically returned by a call to the &b-link-Java; Builder,
- and the target is an output directory
- where the <filename>_Stub.class</filename>
- and <filename>_Skel.class</filename> files will
- be placed:
-
- </para>
-
- <scons_example name="RMIC">
- <file name="SConstruct" printme="1">
- classes = Java(target = 'classes', source = 'src/pkg/sub')
- RMIC(target = 'outdir', source = classes)
- </file>
- <file name="src/pkg/sub/Example1.java">
- package pkg.sub;
- public class Example1
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- <file name="src/pkg/sub/Example2.java">
- package pkg.sub;
- public class Example2
- {
- public static void main(String[] args)
- {
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- As it did with the &b-link-JavaH; Builder,
- &SCons; remembers the class directory
- and passes it as the <option>-classpath</option> option
- to &rmic;:
-
- </para>
-
- <scons_output example="RMIC">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- This example would generate the files
- <filename>outdir/pkg/sub/Example1_Skel.class</filename>,
- <filename>outdir/pkg/sub/Example1_Stub.class</filename>,
- <filename>outdir/pkg/sub/Example2_Skel.class</filename> and
- <filename>outdir/pkg/sub/Example2_Stub.class</filename>.
-
- </para>
-
- </section>
diff --git a/doc/user/java.xml b/doc/user/java.xml
index 5827eec..95b20d2 100644
--- a/doc/user/java.xml
+++ b/doc/user/java.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-java"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Java Builds</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -57,9 +78,38 @@
</para>
- <programlisting>
- Java('classes', 'src')
- </programlisting>
+ <scons_example name="java_java">
+ <file name="SConstruct" printme="1">
+Java('classes', 'src')
+ </file>
+ <file name="src/Example1.java">
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="src/Example2.java">
+public class Example2
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="src/Example3.java">
+public class Example3
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -69,10 +119,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
- </screen>
+ <scons_output example="java_java" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -104,9 +153,54 @@
</para>
- <programlisting>
- Java('classes', 'src')
- </programlisting>
+ <scons_example name="java_java-classes">
+ <file name="SConstruct" printme="1">
+Java('classes', 'src')
+ </file>
+ <file name="src/Example1.java">
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+public class AdditionalClass1
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="src/Example2.java">
+public class Example2
+{
+ class Inner2 {
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+ }
+}
+ </file>
+ <file name="src/Example3.java">
+public class Example3
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+public class AdditionalClass3
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -117,12 +211,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
- % <userinput>scons -Q classes</userinput>
- scons: `classes' is up to date.
- </screen>
+ <scons_output example="java_java-classes" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q classes</scons_output_command>
+ </scons_output>
<para>
@@ -143,17 +235,10 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
- % <userinput>scons -Q -c classes</userinput>
- Removed classes/Example1.class
- Removed classes/AdditionalClass1.class
- Removed classes/Example2$Inner2.class
- Removed classes/Example2.class
- Removed classes/Example3.class
- Removed classes/AdditionalClass3.class
- </screen>
+ <scons_output example="java_java-classes" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q -c classes</scons_output_command>
+ </scons_output>
<para>
@@ -167,9 +252,9 @@
</para>
- <programlisting>
- Java('classes', 'src', JAVAVERSION='1.6')
- </programlisting>
+ <sconstruct>
+Java('classes', 'src', JAVAVERSION='1.6')
+ </sconstruct>
<para>
See <varname>JAVAVERSION</varname> in the man page for more information.
@@ -193,10 +278,39 @@
</para>
- <programlisting>
- Java(target = 'classes', source = 'src')
- Jar(target = 'test.jar', source = 'classes')
- </programlisting>
+ <scons_example name="java_jar1">
+ <file name="SConstruct" printme="1">
+Java(target = 'classes', source = 'src')
+Jar(target = 'test.jar', source = 'classes')
+ </file>
+ <file name="src/Example1.java">
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="src/Example2.java">
+public class Example2
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="src/Example3.java">
+public class Example3
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -207,11 +321,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
- jar cf test.jar classes
- </screen>
+ <scons_output example="java_jar1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -230,12 +342,50 @@
</para>
- <programlisting>
- prog1_class_files = Java(target = 'classes', source = 'prog1')
- prog2_class_files = Java(target = 'classes', source = 'prog2')
- Jar(target = 'prog1.jar', source = prog1_class_files)
- Jar(target = 'prog2.jar', source = prog2_class_files)
- </programlisting>
+ <scons_example name="java_jar2">
+ <file name="SConstruct" printme="1">
+prog1_class_files = Java(target = 'classes', source = 'prog1')
+prog2_class_files = Java(target = 'classes', source = 'prog2')
+Jar(target = 'prog1.jar', source = prog1_class_files)
+Jar(target = 'prog2.jar', source = prog2_class_files)
+ </file>
+ <file name="prog1/Example1.java">
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="prog1/Example2.java">
+public class Example2
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="prog2/Example3.java">
+public class Example3
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ <file name="prog2/Example4.java">
+public class Example4
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -247,13 +397,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath prog1 prog1/Example1.java prog1/Example2.java
- javac -d classes -sourcepath prog2 prog2/Example3.java prog2/Example4.java
- jar cf prog1.jar -C classes Example1.class -C classes Example2.class
- jar cf prog2.jar -C classes Example3.class -C classes Example4.class
- </screen>
+ <scons_output example="java_jar2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -270,10 +416,39 @@
</para>
- <programlisting>
- classes = Java(target = 'classes', source = 'src/pkg/sub')
- JavaH(target = 'native', source = classes)
- </programlisting>
+ <scons_example name="java_javah">
+ <file name="SConstruct" printme="1">
+classes = Java(target = 'classes', source = 'src/pkg/sub')
+JavaH(target = 'native', source = classes)
+ </file>
+ <file name="src/pkg/sub/Example1.java">
+package pkg.sub;
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ <file name="src/pkg/sub/Example2.java">
+package pkg.sub;
+public class Example2
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ <file name="src/pkg/sub/Example3.java">
+package pkg.sub;
+public class Example3
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -287,11 +462,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
- javah -d native -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
- </screen>
+ <scons_output example="java_javah" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -327,13 +500,42 @@
</para>
- <programlisting>
- Java(target = 'classes', source = 'src/pkg/sub')
- class_file_list = ['classes/pkg/sub/Example1.class',
- 'classes/pkg/sub/Example2.class',
- 'classes/pkg/sub/Example3.class']
- JavaH(target = 'native', source = class_file_list, JAVACLASSDIR = 'classes')
- </programlisting>
+ <scons_example name="java_JAVACLASSDIR">
+ <file name="SConstruct" printme="1">
+Java(target = 'classes', source = 'src/pkg/sub')
+class_file_list = ['classes/pkg/sub/Example1.class',
+ 'classes/pkg/sub/Example2.class',
+ 'classes/pkg/sub/Example3.class']
+JavaH(target = 'native', source = class_file_list, JAVACLASSDIR = 'classes')
+ </file>
+ <file name="src/pkg/sub/Example1.java">
+package pkg.sub;
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ <file name="src/pkg/sub/Example2.java">
+package pkg.sub;
+public class Example2
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ <file name="src/pkg/sub/Example3.java">
+package pkg.sub;
+public class Example3
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -343,11 +545,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
- javah -d native -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
- </screen>
+ <scons_output example="java_JAVACLASSDIR" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -358,10 +558,39 @@
</para>
- <programlisting>
- classes = Java(target = 'classes', source = 'src/pkg/sub')
- JavaH(target = File('native.h'), source = classes)
- </programlisting>
+ <scons_example name="java_javah_file">
+ <file name="SConstruct" printme="1">
+classes = Java(target = 'classes', source = 'src/pkg/sub')
+JavaH(target = File('native.h'), source = classes)
+ </file>
+ <file name="src/pkg/sub/Example1.java">
+package pkg.sub;
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ <file name="src/pkg/sub/Example2.java">
+package pkg.sub;
+public class Example2
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ <file name="src/pkg/sub/Example3.java">
+package pkg.sub;
+public class Example3
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -376,11 +605,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
- javah -o native.h -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
- </screen>
+ <scons_output example="java_javah_file" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -400,10 +627,30 @@
</para>
- <programlisting>
- classes = Java(target = 'classes', source = 'src/pkg/sub')
- RMIC(target = 'outdir', source = classes)
- </programlisting>
+ <scons_example name="java_RMIC">
+ <file name="SConstruct" printme="1">
+classes = Java(target = 'classes', source = 'src/pkg/sub')
+RMIC(target = 'outdir', source = classes)
+ </file>
+ <file name="src/pkg/sub/Example1.java">
+package pkg.sub;
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ <file name="src/pkg/sub/Example2.java">
+package pkg.sub;
+public class Example2
+{
+ public static void main(String[] args)
+ {
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -414,11 +661,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java
- rmic -d outdir -classpath classes pkg.sub.Example1 pkg.sub.Example2
- </screen>
+ <scons_output example="java_RMIC" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -431,3 +676,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/user/less-simple.in b/doc/user/less-simple.in
deleted file mode 100644
index f3c251f..0000000
--- a/doc/user/less-simple.in
+++ /dev/null
@@ -1,623 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- In this chapter,
- you will see several examples of
- very simple build configurations using &SCons;,
- which will demonstrate how easy
- it is to use &SCons; to
- build programs from several different programming languages
- on different types of systems.
-
- </para>
-
- <section>
- <title>Specifying the Name of the Target (Output) File</title>
-
- <para>
-
- You've seen that when you call the &b-link-Program; builder method,
- it builds the resulting program with the same
- base name as the source file.
- That is, the following call to build an
- executable program from the &hello_c; source file
- will build an executable program named &hello; on POSIX systems,
- and an executable program named &hello_exe; on Windows systems:
-
- </para>
-
- <programlisting>
- Program('hello.c')
- </programlisting>
-
- <para>
-
- If you want to build a program with
- a different name than the base of the source file name,
- you simply put the target file name
- to the left of the source file name:
-
- </para>
-
- <scons_example name="target">
- <file name="SConstruct" printme="1">
- Program('new_hello', 'hello.c')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- (&SCons; requires the target file name first,
- followed by the source file name,
- so that the order mimics that of an
- assignment statement in most programming languages,
- including Python:
- <literal>"program = source files"</literal>.)
-
- </para>
-
- <para>
-
- Now &SCons; will build an executable program
- named &new_hello; when run on a POSIX system:
-
- </para>
-
- <scons_output example="target" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And &SCons; will build an executable program
- named &new_hello_exe; when run on a Windows system:
-
- </para>
-
- <scons_output example="target" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Compiling Multiple Source Files</title>
-
- <para>
-
- You've just seen how to configure &SCons;
- to compile a program from a single source file.
- It's more common, of course,
- that you'll need to build a program from
- many input source files, not just one.
- To do this, you need to put the
- source files in a Python list
- (enclosed in square brackets),
- like so:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- Program(['prog.c', 'file1.c', 'file2.c'])
- </file>
- <file name="prog.c">
- int main() { printf("prog.c\n"); }
- </file>
- <file name="file1.c">
- void file1() { printf("file1.c\n"); }
- </file>
- <file name="file2.c">
- void file2() { printf("file2.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- A build of the above example would look like:
-
- </para>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice that &SCons;
- deduces the output program name
- from the first source file specified
- in the list--that is,
- because the first source file was &prog_c;,
- &SCons; will name the resulting program &prog;
- (or &prog_exe; on a Windows system).
- If you want to specify a different program name,
- then (as we've seen in the previous section)
- you slide the list of source files
- over to the right
- to make room for the output program file name.
- (&SCons; puts the output file name to the left
- of the source file names
- so that the order mimics that of an
- assignment statement: "program = source files".)
- This makes our example:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct" printme="1">
- Program('program', ['prog.c', 'file1.c', 'file2.c'])
- </file>
- <file name="prog.c">
- int main() { printf("prog.c\n"); }
- </file>
- <file name="file1.c">
- void file1() { printf("file1.c\n"); }
- </file>
- <file name="file2.c">
- void file2() { printf("file2.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- On Linux, a build of this example would look like:
-
- </para>
-
- <scons_output example="ex3" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Or on Windows:
-
- </para>
-
- <scons_output example="ex3" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Making a list of files with &Glob;</title>
-
- <para>
-
- You can also use the &Glob; function to find all files matching a
- certain template, using the standard shell pattern matching
- characters <literal>*</literal>, <literal>?</literal>
- and <literal>[abc]</literal> to match any of
- <literal>a</literal>, <literal>b</literal> or <literal>c</literal>.
- <literal>[!abc]</literal> is also supported,
- to match any character <emphasis>except</emphasis>
- <literal>a</literal>, <literal>b</literal> or <literal>c</literal>.
- This makes many multi-source-file builds quite easy:
-
- </para>
-
- <sconstruct>
- Program('program', Glob('*.c'))
- </sconstruct>
-
- <para>
-
- The SCons man page has more details on using &Glob;
- with variant directories
- (see <xref linkend="chap-variants"></xref>, below)
- and repositories
- (see <xref linkend="chap-repositories"></xref>, below),
- and returning strings rather than Nodes.
-
- </para>
-
- </section>
-
- <section>
- <title>Specifying Single Files Vs. Lists of Files</title>
-
- <para>
-
- We've now shown you two ways to specify
- the source for a program,
- one with a list of files:
-
- </para>
-
- <sconstruct>
- Program('hello', ['file1.c', 'file2.c'])
- </sconstruct>
-
- <para>
-
- And one with a single file:
-
- </para>
-
- <sconstruct>
- Program('hello', 'hello.c')
- </sconstruct>
-
- <para>
-
- You could actually put a single file name in a list, too,
- which you might prefer just for the sake of consistency:
-
- </para>
-
- <sconstruct>
- Program('hello', ['hello.c'])
- </sconstruct>
-
- <para>
-
- &SCons; functions will accept a single file name in either form.
- In fact, internally, &SCons; treats all input as lists of files,
- but allows you to omit the square brackets
- to cut down a little on the typing
- when there's only a single file name.
-
- </para>
-
- <important>
-
- <para>
-
- Although &SCons; functions
- are forgiving about whether or not you
- use a string vs. a list for a single file name,
- Python itself is more strict about
- treating lists and strings differently.
- So where &SCons; allows either
- a string or list:
-
- </para>
-
- <sconstruct>
- # The following two calls both work correctly:
- Program('program1', 'program1.c')
- Program('program2', ['program2.c'])
- </sconstruct>
-
- <para>
-
- Trying to do "Python things" that mix strings and
- lists will cause errors or lead to incorrect results:
-
- </para>
-
- <sconstruct>
- common_sources = ['file1.c', 'file2.c']
-
- # THE FOLLOWING IS INCORRECT AND GENERATES A PYTHON ERROR
- # BECAUSE IT TRIES TO ADD A STRING TO A LIST:
- Program('program1', common_sources + 'program1.c')
-
- # The following works correctly, because it's adding two
- # lists together to make another list.
- Program('program2', common_sources + ['program2.c'])
- </sconstruct>
-
- </important>
-
- </section>
-
- <section>
- <title>Making Lists of Files Easier to Read</title>
-
- <para>
-
- One drawback to the use of a Python list
- for source files is that
- each file name must be enclosed in quotes
- (either single quotes or double quotes).
- This can get cumbersome and difficult to read
- when the list of file names is long.
- Fortunately, &SCons; and Python provide a number of ways
- to make sure that
- the &SConstruct; file stays easy to read.
-
- </para>
-
- <para>
-
- To make long lists of file names
- easier to deal with, &SCons; provides a
- &Split; function
- that takes a quoted list of file names,
- with the names separated by spaces or other white-space characters,
- and turns it into a list of separate file names.
- Using the &Split; function turns the
- previous example into:
-
- </para>
-
- <programlisting>
- Program('program', Split('main.c file1.c file2.c'))
- </programlisting>
-
- <para>
-
- (If you're already familiar with Python,
- you'll have realized that this is similar to the
- <function>split()</function> method
- in the Python standard <function>string</function> module.
- Unlike the <function>split()</function> member function of strings,
- however, the &Split; function
- does not require a string as input
- and will wrap up a single non-string object in a list,
- or return its argument untouched if it's already a list.
- This comes in handy as a way to make sure
- arbitrary values can be passed to &SCons; functions
- without having to check the type of the variable by hand.)
-
- </para>
-
- <para>
-
- Putting the call to the &Split; function
- inside the &b-Program; call
- can also be a little unwieldy.
- A more readable alternative is to
- assign the output from the &Split; call
- to a variable name,
- and then use the variable when calling the
- &b-Program; function:
-
- </para>
-
- <programlisting>
- src_files = Split('main.c file1.c file2.c')
- Program('program', src_files)
- </programlisting>
-
- <para>
-
- Lastly, the &Split; function
- doesn't care how much white space separates
- the file names in the quoted string.
- This allows you to create lists of file
- names that span multiple lines,
- which often makes for easier editing:
-
- </para>
-
- <programlisting>
- src_files = Split("""main.c
- file1.c
- file2.c""")
- Program('program', src_files)
- </programlisting>
-
- <para>
-
- (Note in this example that we used
- the Python "triple-quote" syntax,
- which allows a string to contain
- multiple lines.
- The three quotes can be either
- single or double quotes.)
-
- </para>
-
- </section>
-
- <section>
- <title>Keyword Arguments</title>
-
- <para>
-
- &SCons; also allows you to identify
- the output file and input source files
- using Python keyword arguments.
- The output file is known as the
- <emphasis>target</emphasis>,
- and the source file(s) are known (logically enough) as the
- <emphasis>source</emphasis>.
- The Python syntax for this is:
-
- </para>
-
- <programlisting>
- src_files = Split('main.c file1.c file2.c')
- Program(target = 'program', source = src_files)
- </programlisting>
-
- <para>
-
- Because the keywords explicitly identify
- what each argument is,
- you can actually reverse the order if you prefer:
-
- </para>
-
- <programlisting>
- src_files = Split('main.c file1.c file2.c')
- Program(source = src_files, target = 'program')
- </programlisting>
-
- <para>
-
- Whether or not you choose to use keyword arguments
- to identify the target and source files,
- and the order in which you specify them
- when using keywords,
- are purely personal choices;
- &SCons; functions the same regardless.
-
- </para>
-
- </section>
-
- <section>
- <title>Compiling Multiple Programs</title>
-
- <para>
-
- In order to compile multiple programs
- within the same &SConstruct; file,
- simply call the &Program; method
- multiple times,
- once for each program you need to build:
-
- </para>
-
- <scons_example name="ex4">
- <file name="SConstruct" printme="1">
- Program('foo.c')
- Program('bar', ['bar1.c', 'bar2.c'])
- </file>
- <file name="foo.c">
- int main() { printf("foo.c\n"); }
- </file>
- <file name="bar1.c">
- int main() { printf("bar1.c\n"); }
- </file>
- <file name="bar2.c">
- void bar2() { printf("bar2.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- &SCons; would then build the programs as follows:
-
- </para>
-
- <scons_output example="ex4">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice that &SCons; does not necessarily build the
- programs in the same order in which you specify
- them in the &SConstruct; file.
- &SCons; does, however, recognize that
- the individual object files must be built
- before the resulting program can be built.
- We'll discuss this in greater detail in
- the "Dependencies" section, below.
-
- </para>
-
- </section>
-
- <section>
- <title>Sharing Source Files Between Multiple Programs</title>
-
- <para>
-
- It's common to re-use code by sharing source files
- between multiple programs.
- One way to do this is to create a library
- from the common source files,
- which can then be linked into resulting programs.
- (Creating libraries is discussed in
- <xref linkend="chap-libraries"></xref>, below.)
-
- </para>
-
- <para>
-
- A more straightforward, but perhaps less convenient,
- way to share source files between multiple programs
- is simply to include the common files
- in the lists of source files for each program:
-
- </para>
-
- <scons_example name="ex5">
- <file name="SConstruct" printme="1">
- Program(Split('foo.c common1.c common2.c'))
- Program('bar', Split('bar1.c bar2.c common1.c common2.c'))
- </file>
- <file name="foo.c">
- int main() { printf("foo.c\n"); }
- </file>
- <file name="bar1.c">
- int main() { printf("bar1.c\n"); }
- </file>
- <file name="bar2.c">
- int bar2() { printf("bar2.c\n"); }
- </file>
- <file name="common1.c">
- void common1() { printf("common1.c\n"); }
- </file>
- <file name="common2.c">
- void common22() { printf("common2.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- &SCons; recognizes that the object files for
- the &common1_c; and &common2_c; source files
- each need to be built only once,
- even though the resulting object files are
- each linked in to both of the resulting executable programs:
-
- </para>
-
- <scons_output example="ex5">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If two or more programs
- share a lot of common source files,
- repeating the common files in the list for each program
- can be a maintenance problem when you need to change the
- list of common files.
- You can simplify this by creating a separate Python list
- to hold the common file names,
- and concatenating it with other lists
- using the Python &plus; operator:
-
- </para>
-
- <programlisting>
- common = ['common1.c', 'common2.c']
- foo_files = ['foo.c'] + common
- bar_files = ['bar1.c', 'bar2.c'] + common
- Program('foo', foo_files)
- Program('bar', bar_files)
- </programlisting>
-
- <para>
-
- This is functionally equivalent to the previous example.
-
- </para>
-
- </section>
diff --git a/doc/user/less-simple.xml b/doc/user/less-simple.xml
index f41ea79..5bda302 100644
--- a/doc/user/less-simple.xml
+++ b/doc/user/less-simple.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-less-simple"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Less Simple Things to Do With Builds</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -51,7 +72,7 @@
</para>
<programlisting>
- Program('hello.c')
+Program('hello.c')
</programlisting>
<para>
@@ -63,9 +84,14 @@
</para>
- <programlisting>
- Program('new_hello', 'hello.c')
- </programlisting>
+ <scons_example name="lesssimple_target">
+ <file name="SConstruct" printme="1">
+Program('new_hello', 'hello.c')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -85,11 +111,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o new_hello hello.o
- </screen>
+ <scons_output example="lesssimple_target" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -98,12 +122,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fohello.obj /c hello.c /nologo
- link /nologo /OUT:new_hello.exe hello.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="lesssimple_target" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -124,9 +145,20 @@
</para>
- <programlisting>
- Program(['prog.c', 'file1.c', 'file2.c'])
- </programlisting>
+ <scons_example name="lesssimple_ex2">
+ <file name="SConstruct" printme="1">
+Program(['prog.c', 'file1.c', 'file2.c'])
+ </file>
+ <file name="prog.c">
+int main() { printf("prog.c\n"); }
+ </file>
+ <file name="file1.c">
+void file1() { printf("file1.c\n"); }
+ </file>
+ <file name="file2.c">
+void file2() { printf("file2.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -134,13 +166,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o file1.o -c file1.c
- cc -o file2.o -c file2.c
- cc -o prog.o -c prog.c
- cc -o prog prog.o file1.o file2.o
- </screen>
+ <scons_output example="lesssimple_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -164,9 +192,20 @@
</para>
- <programlisting>
- Program('program', ['prog.c', 'file1.c', 'file2.c'])
- </programlisting>
+ <scons_example name="lesssimple_ex3">
+ <file name="SConstruct" printme="1">
+Program('program', ['prog.c', 'file1.c', 'file2.c'])
+ </file>
+ <file name="prog.c">
+int main() { printf("prog.c\n"); }
+ </file>
+ <file name="file1.c">
+void file1() { printf("file1.c\n"); }
+ </file>
+ <file name="file2.c">
+void file2() { printf("file2.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -174,13 +213,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o file1.o -c file1.c
- cc -o file2.o -c file2.c
- cc -o prog.o -c prog.c
- cc -o program prog.o file1.o file2.o
- </screen>
+ <scons_output example="lesssimple_ex3" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -188,14 +223,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fofile1.obj /c file1.c /nologo
- cl /Fofile2.obj /c file2.c /nologo
- cl /Foprog.obj /c prog.c /nologo
- link /nologo /OUT:program.exe prog.obj file1.obj file2.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="lesssimple_ex3" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -216,9 +246,9 @@
</para>
- <programlisting>
- Program('program', Glob('*.c'))
- </programlisting>
+ <sconstruct>
+Program('program', Glob('*.c'))
+ </sconstruct>
<para>
@@ -244,9 +274,9 @@
</para>
- <programlisting>
- Program('hello', ['file1.c', 'file2.c'])
- </programlisting>
+ <sconstruct>
+Program('hello', ['file1.c', 'file2.c'])
+ </sconstruct>
<para>
@@ -254,9 +284,9 @@
</para>
- <programlisting>
- Program('hello', 'hello.c')
- </programlisting>
+ <sconstruct>
+Program('hello', 'hello.c')
+ </sconstruct>
<para>
@@ -265,9 +295,9 @@
</para>
- <programlisting>
- Program('hello', ['hello.c'])
- </programlisting>
+ <sconstruct>
+Program('hello', ['hello.c'])
+ </sconstruct>
<para>
@@ -293,11 +323,11 @@
</para>
- <programlisting>
- # The following two calls both work correctly:
- Program('program1', 'program1.c')
- Program('program2', ['program2.c'])
- </programlisting>
+ <sconstruct>
+# The following two calls both work correctly:
+Program('program1', 'program1.c')
+Program('program2', ['program2.c'])
+ </sconstruct>
<para>
@@ -306,17 +336,17 @@
</para>
- <programlisting>
- common_sources = ['file1.c', 'file2.c']
+ <sconstruct>
+common_sources = ['file1.c', 'file2.c']
- # THE FOLLOWING IS INCORRECT AND GENERATES A PYTHON ERROR
- # BECAUSE IT TRIES TO ADD A STRING TO A LIST:
- Program('program1', common_sources + 'program1.c')
+# THE FOLLOWING IS INCORRECT AND GENERATES A PYTHON ERROR
+# BECAUSE IT TRIES TO ADD A STRING TO A LIST:
+Program('program1', common_sources + 'program1.c')
- # The following works correctly, because it's adding two
- # lists together to make another list.
- Program('program2', common_sources + ['program2.c'])
- </programlisting>
+# The following works correctly, because it's adding two
+# lists together to make another list.
+Program('program2', common_sources + ['program2.c'])
+ </sconstruct>
</important>
@@ -353,7 +383,7 @@
</para>
<programlisting>
- Program('program', Split('main.c file1.c file2.c'))
+Program('program', Split('main.c file1.c file2.c'))
</programlisting>
<para>
@@ -387,8 +417,8 @@
</para>
<programlisting>
- src_files = Split('main.c file1.c file2.c')
- Program('program', src_files)
+src_files = Split('main.c file1.c file2.c')
+Program('program', src_files)
</programlisting>
<para>
@@ -403,10 +433,10 @@
</para>
<programlisting>
- src_files = Split("""main.c
- file1.c
- file2.c""")
- Program('program', src_files)
+src_files = Split("""main.c
+ file1.c
+ file2.c""")
+Program('program', src_files)
</programlisting>
<para>
@@ -439,8 +469,8 @@
</para>
<programlisting>
- src_files = Split('main.c file1.c file2.c')
- Program(target = 'program', source = src_files)
+src_files = Split('main.c file1.c file2.c')
+Program(target = 'program', source = src_files)
</programlisting>
<para>
@@ -452,8 +482,8 @@
</para>
<programlisting>
- src_files = Split('main.c file1.c file2.c')
- Program(source = src_files, target = 'program')
+src_files = Split('main.c file1.c file2.c')
+Program(source = src_files, target = 'program')
</programlisting>
<para>
@@ -482,10 +512,21 @@
</para>
- <programlisting>
- Program('foo.c')
- Program('bar', ['bar1.c', 'bar2.c'])
- </programlisting>
+ <scons_example name="lesssimple_ex4">
+ <file name="SConstruct" printme="1">
+Program('foo.c')
+Program('bar', ['bar1.c', 'bar2.c'])
+ </file>
+ <file name="foo.c">
+int main() { printf("foo.c\n"); }
+ </file>
+ <file name="bar1.c">
+int main() { printf("bar1.c\n"); }
+ </file>
+ <file name="bar2.c">
+void bar2() { printf("bar2.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -493,14 +534,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o bar1.o -c bar1.c
- cc -o bar2.o -c bar2.c
- cc -o bar bar1.o bar2.o
- cc -o foo.o -c foo.c
- cc -o foo foo.o
- </screen>
+ <scons_output example="lesssimple_ex4" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -541,10 +577,27 @@
</para>
- <programlisting>
- Program(Split('foo.c common1.c common2.c'))
- Program('bar', Split('bar1.c bar2.c common1.c common2.c'))
- </programlisting>
+ <scons_example name="lesssimple_ex5">
+ <file name="SConstruct" printme="1">
+Program(Split('foo.c common1.c common2.c'))
+Program('bar', Split('bar1.c bar2.c common1.c common2.c'))
+ </file>
+ <file name="foo.c">
+int main() { printf("foo.c\n"); }
+ </file>
+ <file name="bar1.c">
+int main() { printf("bar1.c\n"); }
+ </file>
+ <file name="bar2.c">
+int bar2() { printf("bar2.c\n"); }
+ </file>
+ <file name="common1.c">
+void common1() { printf("common1.c\n"); }
+ </file>
+ <file name="common2.c">
+void common22() { printf("common2.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -556,16 +609,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o bar1.o -c bar1.c
- cc -o bar2.o -c bar2.c
- cc -o common1.o -c common1.c
- cc -o common2.o -c common2.c
- cc -o bar bar1.o bar2.o common1.o common2.o
- cc -o foo.o -c foo.c
- cc -o foo foo.o common1.o common2.o
- </screen>
+ <scons_output example="lesssimple_ex5" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -582,11 +628,11 @@
</para>
<programlisting>
- common = ['common1.c', 'common2.c']
- foo_files = ['foo.c'] + common
- bar_files = ['bar1.c', 'bar2.c'] + common
- Program('foo', foo_files)
- Program('bar', bar_files)
+common = ['common1.c', 'common2.c']
+foo_files = ['foo.c'] + common
+bar_files = ['bar1.c', 'bar2.c'] + common
+Program('foo', foo_files)
+Program('bar', bar_files)
</programlisting>
<para>
@@ -596,3 +642,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/user/libraries.in b/doc/user/libraries.in
deleted file mode 100644
index d8a6b49..0000000
--- a/doc/user/libraries.in
+++ /dev/null
@@ -1,445 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- It's often useful to organize large software projects
- by collecting parts of the software into one or more libraries.
- &SCons; makes it easy to create libraries
- and to use them in the programs.
-
- </para>
-
- <section>
- <title>Building Libraries</title>
-
- <para>
-
- You build your own libraries by specifying &b-link-Library;
- instead of &b-link-Program;:
-
- </para>
-
- <scons_example name="ex1" printme="1">
- <file name="SConstruct" printme="1">
- Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- </file>
- <file name="f1.c">
- void f1() { printf("f1.c\n"); }
- </file>
- <file name="f2.c">
- void f2() { printf("f2.c\n"); }
- </file>
- <file name="f3.c">
- void f3() { printf("f3.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- &SCons; uses the appropriate library prefix and suffix for your system.
- So on POSIX or Linux systems,
- the above example would build as follows
- (although &ranlib; may not be called on all systems):
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- On a Windows system,
- a build of the above example would look like:
-
- </para>
-
- <scons_output example="ex1" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The rules for the target name of the library
- are similar to those for programs:
- if you don't explicitly specify a target library name,
- &SCons; will deduce one from the
- name of the first source file specified,
- and &SCons; will add an appropriate
- file prefix and suffix if you leave them off.
-
- </para>
-
- <section>
- <title>Building Libraries From Source Code or Object Files</title>
-
- <para>
-
- The previous example shows building a library from a
- list of source files.
- You can, however, also give the &b-link-Library; call
- object files,
- and it will correctly realize
- In fact, you can arbitrarily mix source code files
- and object files in the source list:
-
- </para>
-
- <scons_example name="objects" printme="1">
- <file name="SConstruct" printme="1">
- Library('foo', ['f1.c', 'f2.o', 'f3.c', 'f4.o'])
- </file>
- <file name="f1.c">
- void f1() { printf("f1.c\n"); }
- </file>
- <file name="f2.o">
- object file
- </file>
- <file name="f3.c">
- void f3() { printf("f3.c\n"); }
- </file>
- <file name="f4.o">
- object file
- </file>
- </scons_example>
-
- <para>
-
- And SCons realizes that only the source code files
- must be compiled into object files
- before creating the final library:
-
- </para>
-
- <scons_output example="objects" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Of course, in this example, the object files
- must already exist for the build to succeed.
- See <xref linkend="chap-nodes"></xref>, below,
- for information about how you can
- build object files explicitly
- and include the built files in a library.
-
- </para>
-
- </section>
-
- <section>
- <title>Building Static Libraries Explicitly: the &b-StaticLibrary; Builder</title>
-
- <para>
-
- The &b-link-Library; function builds a traditional static library.
- If you want to be explicit about the type of library being built,
- you can use the synonym &b-link-StaticLibrary; function
- instead of &b-Library;:
-
- </para>
-
- <scons_example name="StaticLibrary" printme="1">
- <file name="SConstruct" printme="1">
- StaticLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
- </file>
- </scons_example>
-
- <para>
-
- There is no functional difference between the
- &b-link-StaticLibrary; and &b-Library; functions.
-
- </para>
-
- </section>
-
- <section>
- <title>Building Shared (DLL) Libraries: the &b-SharedLibrary; Builder</title>
-
- <para>
-
- If you want to build a shared library (on POSIX systems)
- or a DLL file (on Windows systems),
- you use the &b-link-SharedLibrary; function:
-
- </para>
-
- <scons_example name="SharedLibrary" printme="1">
- <file name="SConstruct" printme="1">
- SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
- </file>
- <file name="f1.c">
- void f1() { printf("f1.c\n"); }
- </file>
- <file name="f2.c">
- void f2() { printf("f2.c\n"); }
- </file>
- <file name="f3.c">
- void f3() { printf("f3.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- The output on POSIX:
-
- </para>
-
- <scons_output example="SharedLibrary" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And the output on Windows:
-
- </para>
-
- <scons_output example="SharedLibrary" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice again that &SCons; takes care of
- building the output file correctly,
- adding the <literal>-shared</literal> option
- for a POSIX compilation,
- and the <literal>/dll</literal> option on Windows.
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Linking with Libraries</title>
-
- <para>
-
- Usually, you build a library
- because you want to link it with one or more programs.
- You link libraries with a program by specifying
- the libraries in the &cv-link-LIBS; construction variable,
- and by specifying the directory in which
- the library will be found in the
- &cv-link-LIBPATH; construction variable:
-
- <!-- In the preceding paragraph, the "$" notation for
- LIBS, LIBPATH etc. is used for the first time.
- Maybe some words of explanation would be nice. -->
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')
- </file>
- <file name="f1.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="f2.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="f3.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="prog.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Notice, of course, that you don't need to specify a library
- prefix (like <literal>lib</literal>)
- or suffix (like <literal>.a</literal> or <literal>.lib</literal>).
- &SCons; uses the correct prefix or suffix for the current system.
-
- </para>
-
- <para>
-
- On a POSIX or Linux system,
- a build of the above example would look like:
-
- </para>
-
- <scons_output example="ex2" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- On a Windows system,
- a build of the above example would look like:
-
- </para>
-
- <scons_output example="ex2" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- As usual, notice that &SCons; has taken care
- of constructing the correct command lines
- to link with the specified library on each system.
-
- </para>
-
- <para>
-
- Note also that,
- if you only have a single library to link with,
- you can specify the library name in single string,
- instead of a Python list,
- so that:
-
- </para>
-
- <sconstruct>
- Program('prog.c', LIBS='foo', LIBPATH='.')
- </sconstruct>
-
- <para>
-
- is equivalent to:
-
- </para>
-
- <sconstruct>
- Program('prog.c', LIBS=['foo'], LIBPATH='.')
- </sconstruct>
-
- <para>
-
- This is similar to the way that &SCons;
- handles either a string or a list to
- specify a single source file.
-
- </para>
-
- </section>
-
- <section>
- <title>Finding Libraries: the &cv-LIBPATH; Construction Variable</title>
-
- <para>
-
- By default, the linker will only look in
- certain system-defined directories for libraries.
- &SCons; knows how to look for libraries
- in directories that you specify with the
- &cv-link-LIBPATH; construction variable.
- &cv-LIBPATH; consists of a list of
- directory names, like so:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct" printme="1">
- Program('prog.c', LIBS = 'm',
- LIBPATH = ['/usr/lib', '/usr/local/lib'])
- </file>
- <file name="prog.c">
- int main() { printf("prog.c\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Using a Python list is preferred because it's portable
- across systems. Alternatively, you could put all of
- the directory names in a single string, separated by the
- system-specific path separator character:
- a colon on POSIX systems:
-
- </para>
-
- <sconstruct>
- LIBPATH = '/usr/lib:/usr/local/lib'
- </sconstruct>
-
- <para>
-
- or a semi-colon on Windows systems:
-
- </para>
-
- <sconstruct>
- LIBPATH = 'C:\\lib;D:\\lib'
- </sconstruct>
-
- <para>
-
- (Note that Python requires that the backslash
- separators in a Windows path name
- be escaped within strings.)
-
- </para>
-
- <para>
-
- When the linker is executed,
- &SCons; will create appropriate flags
- so that the linker will look for
- libraries in the same directories as &SCons;.
- So on a POSIX or Linux system,
- a build of the above example would look like:
-
- </para>
-
- <scons_output example="ex3" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- On a Windows system,
- a build of the above example would look like:
-
- </para>
-
- <scons_output example="ex3" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
- <!-- The link command is too wide in the PDF version.
- There are some other examples of this throughout the document. -->
-
- <para>
-
- Note again that &SCons; has taken care of
- the system-specific details of creating
- the right command-line options.
-
- </para>
-
- </section>
diff --git a/doc/user/libraries.xml b/doc/user/libraries.xml
index f3a5492..aa4561e 100644
--- a/doc/user/libraries.xml
+++ b/doc/user/libraries.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-libraries"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Building and Linking with Libraries</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -42,9 +63,20 @@
</para>
- <programlisting>
- Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- </programlisting>
+ <scons_example name="libraries_ex1" printme="1">
+ <file name="SConstruct" printme="1">
+Library('foo', ['f1.c', 'f2.c', 'f3.c'])
+ </file>
+ <file name="f1.c">
+void f1() { printf("f1.c\n"); }
+ </file>
+ <file name="f2.c">
+void f2() { printf("f2.c\n"); }
+ </file>
+ <file name="f3.c">
+void f3() { printf("f3.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -55,14 +87,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o f1.o -c f1.c
- cc -o f2.o -c f2.c
- cc -o f3.o -c f3.c
- ar rc libfoo.a f1.o f2.o f3.o
- ranlib libfoo.a
- </screen>
+ <scons_output example="libraries_ex1" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -71,13 +98,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fof1.obj /c f1.c /nologo
- cl /Fof2.obj /c f2.c /nologo
- cl /Fof3.obj /c f3.c /nologo
- lib /nologo /OUT:foo.lib f1.obj f2.obj f3.obj
- </screen>
+ <scons_output example="libraries_ex1" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -106,9 +129,23 @@
</para>
- <programlisting>
- Library('foo', ['f1.c', 'f2.o', 'f3.c', 'f4.o'])
- </programlisting>
+ <scons_example name="libraries_objects" printme="1">
+ <file name="SConstruct" printme="1">
+Library('foo', ['f1.c', 'f2.o', 'f3.c', 'f4.o'])
+ </file>
+ <file name="f1.c">
+void f1() { printf("f1.c\n"); }
+ </file>
+ <file name="f2.o">
+object file
+ </file>
+ <file name="f3.c">
+void f3() { printf("f3.c\n"); }
+ </file>
+ <file name="f4.o">
+object file
+ </file>
+ </scons_example>
<para>
@@ -118,13 +155,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o f1.o -c f1.c
- cc -o f3.o -c f3.c
- ar rc libfoo.a f1.o f2.o f3.o f4.o
- ranlib libfoo.a
- </screen>
+ <scons_output example="libraries_objects" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -151,9 +184,11 @@
</para>
- <programlisting>
- StaticLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
- </programlisting>
+ <scons_example name="libraries_StaticLibrary" printme="1">
+ <file name="SConstruct" printme="1">
+StaticLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
+ </file>
+ </scons_example>
<para>
@@ -175,9 +210,20 @@
</para>
- <programlisting>
- SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
- </programlisting>
+ <scons_example name="libraries_SharedLibrary" printme="1">
+ <file name="SConstruct" printme="1">
+SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
+ </file>
+ <file name="f1.c">
+void f1() { printf("f1.c\n"); }
+ </file>
+ <file name="f2.c">
+void f2() { printf("f2.c\n"); }
+ </file>
+ <file name="f3.c">
+void f3() { printf("f3.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -185,13 +231,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o f1.os -c f1.c
- cc -o f2.os -c f2.c
- cc -o f3.os -c f3.c
- cc -o libfoo.so -shared f1.os f2.os f3.os
- </screen>
+ <scons_output example="libraries_SharedLibrary" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -199,15 +241,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fof1.obj /c f1.c /nologo
- cl /Fof2.obj /c f2.c /nologo
- cl /Fof3.obj /c f3.c /nologo
- link /nologo /dll /out:foo.dll /implib:foo.lib f1.obj f2.obj f3.obj
- RegServerFunc(target, source, env)
- embedManifestDllCheck(target, source, env)
- </screen>
+ <scons_output example="libraries_SharedLibrary" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -242,10 +278,24 @@
</para>
- <programlisting>
- Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')
- </programlisting>
+ <scons_example name="libraries_ex2">
+ <file name="SConstruct" printme="1">
+Library('foo', ['f1.c', 'f2.c', 'f3.c'])
+Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')
+ </file>
+ <file name="f1.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="f2.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="f3.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="prog.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -263,16 +313,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o f1.o -c f1.c
- cc -o f2.o -c f2.c
- cc -o f3.o -c f3.c
- ar rc libfoo.a f1.o f2.o f3.o
- ranlib libfoo.a
- cc -o prog.o -c prog.c
- cc -o prog prog.o -L. -lfoo -lbar
- </screen>
+ <scons_output example="libraries_ex2" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -281,16 +324,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fof1.obj /c f1.c /nologo
- cl /Fof2.obj /c f2.c /nologo
- cl /Fof3.obj /c f3.c /nologo
- lib /nologo /OUT:foo.lib f1.obj f2.obj f3.obj
- cl /Foprog.obj /c prog.c /nologo
- link /nologo /OUT:prog.exe /LIBPATH:. foo.lib bar.lib prog.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="libraries_ex2" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -310,9 +346,9 @@
</para>
- <programlisting>
- Program('prog.c', LIBS='foo', LIBPATH='.')
- </programlisting>
+ <sconstruct>
+Program('prog.c', LIBS='foo', LIBPATH='.')
+ </sconstruct>
<para>
@@ -320,9 +356,9 @@
</para>
- <programlisting>
- Program('prog.c', LIBS=['foo'], LIBPATH='.')
- </programlisting>
+ <sconstruct>
+Program('prog.c', LIBS=['foo'], LIBPATH='.')
+ </sconstruct>
<para>
@@ -349,10 +385,15 @@
</para>
- <programlisting>
- Program('prog.c', LIBS = 'm',
- LIBPATH = ['/usr/lib', '/usr/local/lib'])
- </programlisting>
+ <scons_example name="libraries_ex3">
+ <file name="SConstruct" printme="1">
+Program('prog.c', LIBS = 'm',
+ LIBPATH = ['/usr/lib', '/usr/local/lib'])
+ </file>
+ <file name="prog.c">
+int main() { printf("prog.c\n"); }
+ </file>
+ </scons_example>
<para>
@@ -364,9 +405,9 @@
</para>
- <programlisting>
- LIBPATH = '/usr/lib:/usr/local/lib'
- </programlisting>
+ <sconstruct>
+LIBPATH = '/usr/lib:/usr/local/lib'
+ </sconstruct>
<para>
@@ -374,9 +415,9 @@
</para>
- <programlisting>
- LIBPATH = 'C:\\lib;D:\\lib'
- </programlisting>
+ <sconstruct>
+LIBPATH = 'C:\\lib;D:\\lib'
+ </sconstruct>
<para>
@@ -397,11 +438,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o prog.o -c prog.c
- cc -o prog prog.o -L/usr/lib -L/usr/local/lib -lm
- </screen>
+ <scons_output example="libraries_ex3" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -410,12 +449,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Foprog.obj /c prog.c /nologo
- link /nologo /OUT:prog.exe /LIBPATH:\usr\lib /LIBPATH:\usr\local\lib m.lib prog.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="libraries_ex3" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<!-- The link command is too wide in the PDF version.
There are some other examples of this throughout the document. -->
@@ -428,3 +464,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/user/main.in b/doc/user/main.in
deleted file mode 100644
index 901c11f..0000000
--- a/doc/user/main.in
+++ /dev/null
@@ -1,411 +0,0 @@
-<?xml version="1.0"?>
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
-
- <!ENTITY % version SYSTEM "../version.xml">
- %version;
-
- <!ENTITY % scons SYSTEM "../scons.mod">
- %scons;
-
- <!ENTITY % builders-mod SYSTEM "builders.mod">
- %builders-mod;
-
- <!ENTITY % functions-mod SYSTEM "functions.mod">
- %functions-mod;
-
- <!ENTITY % tools-mod SYSTEM "tools.mod">
- %tools-mod;
-
- <!ENTITY % variables-mod SYSTEM "variables.mod">
- %variables-mod;
-
- <!ENTITY actions SYSTEM "actions.xml">
- <!ENTITY alias SYSTEM "alias.xml">
- <!ENTITY ant SYSTEM "ant.xml">
- <!ENTITY build-install SYSTEM "build-install.xml">
- <!ENTITY builders SYSTEM "builders.xml">
- <!ENTITY builders-built-in SYSTEM "builders-built-in.xml">
- <!ENTITY builders-commands SYSTEM "builders-commands.xml">
- <!ENTITY builders-writing SYSTEM "builders-writing.xml">
- <!ENTITY add-method SYSTEM "add-method.xml">
- <!ENTITY caching SYSTEM "caching.xml">
- <!ENTITY command-line SYSTEM "command-line.xml">
- <!ENTITY copyright SYSTEM "copyright.xml">
- <!ENTITY depends SYSTEM "depends.xml">
- <!ENTITY environments SYSTEM "environments.xml">
- <!ENTITY errors SYSTEM "errors.xml">
- <!ENTITY example SYSTEM "example.xml">
- <!ENTITY factories SYSTEM "factories.xml">
- <!ENTITY file-removal SYSTEM "file-removal.xml">
- <!ENTITY functions SYSTEM "functions.xml">
- <!ENTITY gettext SYSTEM "gettext.xml">
- <!ENTITY hierarchy SYSTEM "hierarchy.xml">
- <!ENTITY java SYSTEM "java.xml">
- <!ENTITY install SYSTEM "install.xml">
- <!ENTITY less-simple SYSTEM "less-simple.xml">
- <!ENTITY libraries SYSTEM "libraries.xml">
- <!ENTITY make SYSTEM "make.xml">
- <!ENTITY mergeflags SYSTEM "mergeflags.xml">
- <!ENTITY misc SYSTEM "misc.xml">
- <!ENTITY nodes SYSTEM "nodes.xml">
- <!ENTITY output SYSTEM "output.xml">
- <!ENTITY parseconfig SYSTEM "parseconfig.xml">
- <!ENTITY parseflags SYSTEM "parseflags.xml">
- <!ENTITY preface SYSTEM "preface.xml">
- <!ENTITY python SYSTEM "python.xml">
- <!ENTITY repositories SYSTEM "repositories.xml">
- <!ENTITY run SYSTEM "run.xml">
- <!ENTITY scanners SYSTEM "scanners.xml">
- <!ENTITY sconf SYSTEM "sconf.xml">
- <!ENTITY separate SYSTEM "separate.xml">
- <!ENTITY simple SYSTEM "simple.xml">
- <!ENTITY sourcecode SYSTEM "sourcecode.xml">
- <!ENTITY tasks SYSTEM "tasks.xml">
- <!ENTITY tools SYSTEM "tools.xml">
- <!ENTITY troubleshoot SYSTEM "troubleshoot.xml">
- <!ENTITY variables-xml SYSTEM "variables.xml">
- <!ENTITY variants SYSTEM "variants.xml">
-
- <!ENTITY builders-gen SYSTEM "builders.gen">
- <!ENTITY functions-gen SYSTEM "functions.gen">
- <!ENTITY tools-gen SYSTEM "tools.gen">
- <!ENTITY variables-gen SYSTEM "variables.gen">
-
-]>
-
- <!--
-
- XXX Platform()
- XXX Tools()
-
- XXX GetOption('duplicate')
- XXX SetOption('duplicate')
- XXX - - duplicate=
-
- XXX CheckTypeSize()
-
- XXX - - diskcheck=
-
- XXX - - warn=
-
- -->
-
-<book>
- <bookinfo>
- <title>SCons User Guide &buildversion;</title>
-
- <author>
- <firstname>Steven</firstname>
- <surname>Knight</surname>
- </author>
-
- <edition>Revision &buildrevision; (&builddate;)</edition>
-
- <pubdate>2004, 2005, 2006, 2007, 2008, 2009, 2010</pubdate>
-
- <copyright>
- <year>2004, 2005, 2006, 2007, 2008, 2009, 2010</year>
- <holder>Steven Knight</holder>
- </copyright>
-
- <legalnotice>
- &copyright;
- </legalnotice>
-
- <releaseinfo>version &buildversion;</releaseinfo>
-
- </bookinfo>
-
- <preface id="chap-preface">
- <title>Preface</title>
- &preface;
- </preface>
-
- <chapter id="chap-build-install">
- <title>Building and Installing &SCons;</title>
- &build-install;
- </chapter>
-
- <chapter id="chap-simple">
- <title>Simple Builds</title>
- &simple;
- </chapter>
-
- <chapter id="chap-less-simple">
- <title>Less Simple Things to Do With Builds</title>
- &less-simple;
- </chapter>
-
- <chapter id="chap-libraries">
- <title>Building and Linking with Libraries</title>
- &libraries;
- </chapter>
-
- <chapter id="chap-nodes">
- <title>Node Objects</title>
- &nodes;
- </chapter>
-
- <chapter id="chap-depends">
- <title>Dependencies</title>
- &depends;
- </chapter>
-
- <chapter id="chap-environments">
- <title>Environments</title>
- &environments;
- </chapter>
-
- <chapter id="chap-manip-options">
- <title>Automatically Putting Command-line Options into their Construction Variables</title>
- <!-- TODO: This intro paragraph should describe at a high-level
- what these things do. People are likely to use the intro as a
- (brief) overview of *what* these functions do to decide if this
- chapter is where they should read in more detail. -->
- <para>
- This chapter describes the &MergeFlags;, &ParseFlags;, and &ParseConfig; methods of a &consenv;.
- </para>
- <section id="sect-mergeflags">
- <title>Merging Options into the Environment: the &MergeFlags; Function</title>
- &mergeflags;
- </section>
- <section id="sect-parseflags">
- <title>Separating Compile Arguments into their Variables: the &ParseFlags; Function</title>
- &parseflags;
- </section>
- <section id="sect-parseconfig">
- <title>Finding Installed Library Information: the &ParseConfig; Function</title>
- &parseconfig;
- </section>
- <!--
- XXX parse_flags= option of Environment()
-
- <section id="sect-env-parseflags">
- <title>Adding Flags when Constructing Enviroment: the parse_flags Optional Argument</title>
- &envparseflags;
- </section>
- -->
- </chapter>
-
- <chapter id="chap-output">
- <title>Controlling Build Output</title>
- &output;
- </chapter>
-
- <chapter id="chap-command-line">
- <title>Controlling a Build From the Command Line</title>
- &command-line;
- </chapter>
-
- <chapter id="chap-install">
- <title>Installing Files in Other Directories: the &Install; Builder</title>
- &install;
- </chapter>
-
- <chapter id="chap-factories">
- <title>Platform-Independent File System Manipulation</title>
- &factories;
- </chapter>
-
- <chapter id="chap-file-removal">
- <title>Controlling Removal of Targets</title>
- &file-removal;
- </chapter>
-
- <chapter id="chap-hierarchical">
- <title>Hierarchical Builds</title>
- &hierarchy;
- </chapter>
-
- <chapter id="chap-separate">
- <title>Separating Source and Build Directories</title>
- &separate;
- </chapter>
-
- <chapter id="chap-variants">
- <title>Variant Builds</title>
- &variants;
- </chapter>
-
- <chapter id="chap-gettext">
- <title>Internationalization and localization with gettext</title>
- &gettext;
- </chapter>
-
- <!--
-
- <chapter id="chap-builders-built-in">
- <title>Built-In Builders</title>
- &builders-built-in;
- </chapter>
-
- -->
-
- <chapter id="chap-builders-writing">
- <title>Writing Your Own Builders</title>
- &builders-writing;
- </chapter>
-
- <chapter id="chap-builders-commands">
- <title>Not Writing a Builder: the &Command; Builder</title>
- &builders-commands;
- </chapter>
-
- <chapter id="chap-add-method">
- <title>Pseudo-Builders: the AddMethod function</title>
- &add-method;
- </chapter>
-
- <!--
-
- XXX Action()
- XXX AddPostAction()
- XXX AddPreAction()
-
- <chapter id="chap-actions">
- <title>&SCons; Actions</title>
- &actions;
- </chapter>
-
- -->
-
- <chapter id="chap-scanners">
- <title>Writing Scanners</title>
- &scanners;
- </chapter>
-
- <chapter id="chap-repositories">
- <title>Building From Code Repositories</title>
- &repositories;
- </chapter>
-
- <chapter id="chap-sconf">
- <title>Multi-Platform Configuration (&Autoconf; Functionality)</title>
- &sconf;
- </chapter>
-
- <!--
-
- <chapter id="chap-sourcecode">
- <title>Fetching Files From Source Code Management Systems</title>
- &sourcecode;
- </chapter>
-
- -->
-
- <chapter id="chap-caching">
- <title>Caching Built Files</title>
- &caching;
- </chapter>
-
- <chapter id="chap-alias">
- <title>Alias Targets</title>
- &alias;
- </chapter>
-
- <chapter id="chap-java">
- <title>Java Builds</title>
- &java;
- </chapter>
-
- <!--
-
- <chapter id="chap-run">
- <title>How to Run &SCons;</title>
- &run;
- </chapter>
-
- -->
-
- <chapter id="chap-misc">
- <title>Miscellaneous Functionality</title>
- &misc;
- </chapter>
-
- <chapter id="chap-troubleshooting">
- <title>Troubleshooting</title>
- &troubleshoot;
- </chapter>
-
- <appendix id="app-variables">
- <title>Construction Variables</title>
- &variables-xml;
- </appendix>
-
- <appendix id="app-builders">
- <title>Builders</title>
- &builders;
- </appendix>
-
- <appendix id="app-tools">
- <title>Tools</title>
- &tools;
- </appendix>
-
- <appendix id="app-functions">
- <title>Functions and Environment Methods</title>
- &functions;
- </appendix>
-
- <appendix id="app-tasks">
- <title>Handling Common Tasks</title>
- &tasks;
- </appendix>
-
- <!--
-
- <appendix id="app-python">
- <title>Python Overview</title>
- &example;
- </appendix>
-
- <appendix id="app-example">
- <title>Complex &SCons; Example</title>
- &example;
- </appendix>
-
- <appendix id="app-make">
- <title>Converting From Make</title>
- &make;
- </appendix>
-
- <appendix id="app-cons">
- <title>Converting From Cons</title>
- &cons;
- </appendix>
-
- <appendix id="app-ant">
- <title>Converting From Ant</title>
- &ant;
- </appendix>
-
- -->
-
-</book>
diff --git a/doc/user/main.xml b/doc/user/main.xml
index 901c11f..afb5d51 100644
--- a/doc/user/main.xml
+++ b/doc/user/main.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -24,9 +24,7 @@
-->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
+<!DOCTYPE sconsdoc [
<!ENTITY % version SYSTEM "../version.xml">
%version;
@@ -34,70 +32,15 @@
<!ENTITY % scons SYSTEM "../scons.mod">
%scons;
- <!ENTITY % builders-mod SYSTEM "builders.mod">
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
%builders-mod;
-
- <!ENTITY % functions-mod SYSTEM "functions.mod">
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
%functions-mod;
-
- <!ENTITY % tools-mod SYSTEM "tools.mod">
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
%tools-mod;
-
- <!ENTITY % variables-mod SYSTEM "variables.mod">
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
%variables-mod;
- <!ENTITY actions SYSTEM "actions.xml">
- <!ENTITY alias SYSTEM "alias.xml">
- <!ENTITY ant SYSTEM "ant.xml">
- <!ENTITY build-install SYSTEM "build-install.xml">
- <!ENTITY builders SYSTEM "builders.xml">
- <!ENTITY builders-built-in SYSTEM "builders-built-in.xml">
- <!ENTITY builders-commands SYSTEM "builders-commands.xml">
- <!ENTITY builders-writing SYSTEM "builders-writing.xml">
- <!ENTITY add-method SYSTEM "add-method.xml">
- <!ENTITY caching SYSTEM "caching.xml">
- <!ENTITY command-line SYSTEM "command-line.xml">
- <!ENTITY copyright SYSTEM "copyright.xml">
- <!ENTITY depends SYSTEM "depends.xml">
- <!ENTITY environments SYSTEM "environments.xml">
- <!ENTITY errors SYSTEM "errors.xml">
- <!ENTITY example SYSTEM "example.xml">
- <!ENTITY factories SYSTEM "factories.xml">
- <!ENTITY file-removal SYSTEM "file-removal.xml">
- <!ENTITY functions SYSTEM "functions.xml">
- <!ENTITY gettext SYSTEM "gettext.xml">
- <!ENTITY hierarchy SYSTEM "hierarchy.xml">
- <!ENTITY java SYSTEM "java.xml">
- <!ENTITY install SYSTEM "install.xml">
- <!ENTITY less-simple SYSTEM "less-simple.xml">
- <!ENTITY libraries SYSTEM "libraries.xml">
- <!ENTITY make SYSTEM "make.xml">
- <!ENTITY mergeflags SYSTEM "mergeflags.xml">
- <!ENTITY misc SYSTEM "misc.xml">
- <!ENTITY nodes SYSTEM "nodes.xml">
- <!ENTITY output SYSTEM "output.xml">
- <!ENTITY parseconfig SYSTEM "parseconfig.xml">
- <!ENTITY parseflags SYSTEM "parseflags.xml">
- <!ENTITY preface SYSTEM "preface.xml">
- <!ENTITY python SYSTEM "python.xml">
- <!ENTITY repositories SYSTEM "repositories.xml">
- <!ENTITY run SYSTEM "run.xml">
- <!ENTITY scanners SYSTEM "scanners.xml">
- <!ENTITY sconf SYSTEM "sconf.xml">
- <!ENTITY separate SYSTEM "separate.xml">
- <!ENTITY simple SYSTEM "simple.xml">
- <!ENTITY sourcecode SYSTEM "sourcecode.xml">
- <!ENTITY tasks SYSTEM "tasks.xml">
- <!ENTITY tools SYSTEM "tools.xml">
- <!ENTITY troubleshoot SYSTEM "troubleshoot.xml">
- <!ENTITY variables-xml SYSTEM "variables.xml">
- <!ENTITY variants SYSTEM "variants.xml">
-
- <!ENTITY builders-gen SYSTEM "builders.gen">
- <!ENTITY functions-gen SYSTEM "functions.gen">
- <!ENTITY tools-gen SYSTEM "tools.gen">
- <!ENTITY variables-gen SYSTEM "variables.gen">
-
]>
<!--
@@ -117,72 +60,43 @@
-->
-<book>
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
<bookinfo>
- <title>SCons User Guide &buildversion;</title>
+ <title>SCons &buildversion;</title>
+ <subtitle>User Guide</subtitle>
<author>
<firstname>Steven</firstname>
<surname>Knight</surname>
</author>
- <edition>Revision &buildrevision; (&builddate;)</edition>
+ <corpauthor>Steven Knight</corpauthor>
- <pubdate>2004, 2005, 2006, 2007, 2008, 2009, 2010</pubdate>
+ <pubdate>2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014</pubdate>
<copyright>
- <year>2004, 2005, 2006, 2007, 2008, 2009, 2010</year>
+ <year>2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014</year>
<holder>Steven Knight</holder>
</copyright>
- <legalnotice>
- &copyright;
- </legalnotice>
-
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+
<releaseinfo>version &buildversion;</releaseinfo>
+ <mediaobject role="cover"><imageobject><imagedata fileref="cover.jpg" format="JPG"/></imageobject></mediaobject>
</bookinfo>
- <preface id="chap-preface">
- <title>Preface</title>
- &preface;
- </preface>
-
- <chapter id="chap-build-install">
- <title>Building and Installing &SCons;</title>
- &build-install;
- </chapter>
-
- <chapter id="chap-simple">
- <title>Simple Builds</title>
- &simple;
- </chapter>
-
- <chapter id="chap-less-simple">
- <title>Less Simple Things to Do With Builds</title>
- &less-simple;
- </chapter>
-
- <chapter id="chap-libraries">
- <title>Building and Linking with Libraries</title>
- &libraries;
- </chapter>
-
- <chapter id="chap-nodes">
- <title>Node Objects</title>
- &nodes;
- </chapter>
-
- <chapter id="chap-depends">
- <title>Dependencies</title>
- &depends;
- </chapter>
-
- <chapter id="chap-environments">
- <title>Environments</title>
- &environments;
- </chapter>
-
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="preface.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="build-install.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="simple.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="less-simple.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libraries.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="nodes.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="depends.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="environments.xml"/>
+
<chapter id="chap-manip-options">
<title>Automatically Putting Command-line Options into their Construction Variables</title>
<!-- TODO: This intro paragraph should describe at a high-level
@@ -192,96 +106,33 @@
<para>
This chapter describes the &MergeFlags;, &ParseFlags;, and &ParseConfig; methods of a &consenv;.
</para>
- <section id="sect-mergeflags">
- <title>Merging Options into the Environment: the &MergeFlags; Function</title>
- &mergeflags;
- </section>
- <section id="sect-parseflags">
- <title>Separating Compile Arguments into their Variables: the &ParseFlags; Function</title>
- &parseflags;
- </section>
- <section id="sect-parseconfig">
- <title>Finding Installed Library Information: the &ParseConfig; Function</title>
- &parseconfig;
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mergeflags.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="parseflags.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="parseconfig.xml"/>
<!--
XXX parse_flags= option of Environment()
-
- <section id="sect-env-parseflags">
- <title>Adding Flags when Constructing Enviroment: the parse_flags Optional Argument</title>
- &envparseflags;
- </section>
-->
</chapter>
- <chapter id="chap-output">
- <title>Controlling Build Output</title>
- &output;
- </chapter>
-
- <chapter id="chap-command-line">
- <title>Controlling a Build From the Command Line</title>
- &command-line;
- </chapter>
-
- <chapter id="chap-install">
- <title>Installing Files in Other Directories: the &Install; Builder</title>
- &install;
- </chapter>
-
- <chapter id="chap-factories">
- <title>Platform-Independent File System Manipulation</title>
- &factories;
- </chapter>
-
- <chapter id="chap-file-removal">
- <title>Controlling Removal of Targets</title>
- &file-removal;
- </chapter>
-
- <chapter id="chap-hierarchical">
- <title>Hierarchical Builds</title>
- &hierarchy;
- </chapter>
-
- <chapter id="chap-separate">
- <title>Separating Source and Build Directories</title>
- &separate;
- </chapter>
-
- <chapter id="chap-variants">
- <title>Variant Builds</title>
- &variants;
- </chapter>
-
- <chapter id="chap-gettext">
- <title>Internationalization and localization with gettext</title>
- &gettext;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="output.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="command-line.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="install.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="factories.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="file-removal.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hierarchy.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="separate.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="variants.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gettext.xml"/>
<!--
- <chapter id="chap-builders-built-in">
- <title>Built-In Builders</title>
- &builders-built-in;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="builders-built-in.xml"/>
-->
- <chapter id="chap-builders-writing">
- <title>Writing Your Own Builders</title>
- &builders-writing;
- </chapter>
-
- <chapter id="chap-builders-commands">
- <title>Not Writing a Builder: the &Command; Builder</title>
- &builders-commands;
- </chapter>
-
- <chapter id="chap-add-method">
- <title>Pseudo-Builders: the AddMethod function</title>
- &add-method;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="builders-writing.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="builders-commands.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="add-method.xml"/>
<!--
@@ -289,122 +140,44 @@
XXX AddPostAction()
XXX AddPreAction()
- <chapter id="chap-actions">
- <title>&SCons; Actions</title>
- &actions;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="actions.xml"/>
-->
- <chapter id="chap-scanners">
- <title>Writing Scanners</title>
- &scanners;
- </chapter>
-
- <chapter id="chap-repositories">
- <title>Building From Code Repositories</title>
- &repositories;
- </chapter>
-
- <chapter id="chap-sconf">
- <title>Multi-Platform Configuration (&Autoconf; Functionality)</title>
- &sconf;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="scanners.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="repositories.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sconf.xml"/>
<!--
- <chapter id="chap-sourcecode">
- <title>Fetching Files From Source Code Management Systems</title>
- &sourcecode;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sourcecode.xml"/>
-->
- <chapter id="chap-caching">
- <title>Caching Built Files</title>
- &caching;
- </chapter>
-
- <chapter id="chap-alias">
- <title>Alias Targets</title>
- &alias;
- </chapter>
-
- <chapter id="chap-java">
- <title>Java Builds</title>
- &java;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="caching.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="alias.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="java.xml"/>
<!--
- <chapter id="chap-run">
- <title>How to Run &SCons;</title>
- &run;
- </chapter>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="run.xml"/>
-->
- <chapter id="chap-misc">
- <title>Miscellaneous Functionality</title>
- &misc;
- </chapter>
-
- <chapter id="chap-troubleshooting">
- <title>Troubleshooting</title>
- &troubleshoot;
- </chapter>
-
- <appendix id="app-variables">
- <title>Construction Variables</title>
- &variables-xml;
- </appendix>
-
- <appendix id="app-builders">
- <title>Builders</title>
- &builders;
- </appendix>
-
- <appendix id="app-tools">
- <title>Tools</title>
- &tools;
- </appendix>
-
- <appendix id="app-functions">
- <title>Functions and Environment Methods</title>
- &functions;
- </appendix>
-
- <appendix id="app-tasks">
- <title>Handling Common Tasks</title>
- &tasks;
- </appendix>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="misc.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="troubleshoot.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="variables.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="builders.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tools.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="functions.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tasks.xml"/>
<!--
- <appendix id="app-python">
- <title>Python Overview</title>
- &example;
- </appendix>
-
- <appendix id="app-example">
- <title>Complex &SCons; Example</title>
- &example;
- </appendix>
-
- <appendix id="app-make">
- <title>Converting From Make</title>
- &make;
- </appendix>
-
- <appendix id="app-cons">
- <title>Converting From Cons</title>
- &cons;
- </appendix>
-
- <appendix id="app-ant">
- <title>Converting From Ant</title>
- &ant;
- </appendix>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="python.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="example.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="make.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ant.xml"/>
-->
diff --git a/doc/user/make.in b/doc/user/make.in
deleted file mode 100644
index 876168a..0000000
--- a/doc/user/make.in
+++ /dev/null
@@ -1,121 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 Why Cons? Why not Make?
-
-Cons is a B<make> replacement. In the following paragraphs, we look at a few
-of the undesirable characteristics of make, and typical build environments
-based on make, that motivated the development of Cons.
-
-=head2 Build complexity
-
-Traditional make-based systems of any size tend to become quite complex. The
-original make utility and its derivatives have contributed to this tendency
-in a number of ways. Make is not good at dealing with systems that are
-spread over multiple directories. Various work-arounds are used to overcome
-this difficulty; the usual choice is for make to invoke itself recursively
-for each sub-directory of a build. This leads to complicated code, in which
-it is often unclear how a variable is set, or what effect the setting of a
-variable will have on the build as a whole. The make scripting language has
-gradually been extended to provide more possibilities, but these have
-largely served to clutter an already overextended language. Often, builds
-are done in multiple passes in order to provide appropriate products from
-one directory to another directory. This represents a further increase in
-build complexity.
-
-
-=head2 Build reproducibility
-
-The bane of all makes has always been the correct handling of
-dependencies. Most often, an attempt is made to do a reasonable job of
-dependencies within a single directory, but no serious attempt is made to do
-the job between directories. Even when dependencies are working correctly,
-make's reliance on a simple time stamp comparison to determine whether a
-file is out of date with respect to its dependents is not, in general,
-adequate for determining when a file should be rederived. If an external
-library, for example, is rebuilt and then ``snapped'' into place, the
-timestamps on its newly created files may well be earlier than the last
-local build, since it was built before it became visible.
-
-
-=head2 Variant builds
-
-Make provides only limited facilities for handling variant builds. With the
-proliferation of hardware platforms and the need for debuggable
-vs. optimized code, the ability to easily create these variants is
-essential. More importantly, if variants are created, it is important to
-either be able to separate the variants or to be able to reproduce the
-original or variant at will. With make it is very difficult to separate the
-builds into multiple build directories, separate from the source. And if
-this technique isn't used, it's also virtually impossible to guarantee at
-any given time which variant is present in the tree, without resorting to a
-complete rebuild.
-
-
-=head2 Repositories
-
-Make provides only limited support for building software from code that
-exists in a central repository directory structure. The VPATH feature of
-GNU make (and some other make implementations) is intended to provide this,
-but doesn't work as expected: it changes the path of target file to the
-VPATH name too early in its analysis, and therefore searches for all
-dependencies in the VPATH directory. To ensure correct development builds,
-it is important to be able to create a file in a local build directory and
-have any files in a code repository (a VPATH directory, in make terms) that
-depend on the local file get rebuilt properly. This isn't possible with
-VPATH, without coding a lot of complex repository knowledge directly into
-the makefiles.
-
--->
-
- <para>
-
- XXX
-
- </para>
-
- <section>
- <title>Differences Between &Make; and &SCons;</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Advantages of &SCons; Over &Make;</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
diff --git a/doc/user/make.xml b/doc/user/make.xml
index 876168a..69dd7f4 100644
--- a/doc/user/make.xml
+++ b/doc/user/make.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<appendix id="app-make"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Converting From Make</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -119,3 +140,5 @@ the makefiles.
</para>
</section>
+
+</appendix>
diff --git a/doc/user/mergeflags.in b/doc/user/mergeflags.in
deleted file mode 100644
index f1997a0..0000000
--- a/doc/user/mergeflags.in
+++ /dev/null
@@ -1,137 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- &SCons; construction environments have a &MergeFlags; method
- that merges a dictionary of values into the construction environment.
- &MergeFlags; treats each value in the dictionary
- as a list of options such as one might pass to a command
- (such as a compiler or linker).
- &MergeFlags; will not duplicate an option
- if it already exists in the construction environment variable.
-
- </para>
-
- <para>
-
- &MergeFlags; tries to be intelligent about merging options.
- When merging options to any variable
- whose name ends in <varname>PATH</varname>,
- &MergeFlags; keeps the leftmost occurrence of the option,
- because in typical lists of directory paths,
- the first occurrence "wins."
- When merging options to any other variable name,
- &MergeFlags; keeps the rightmost occurrence of the option,
- because in a list of typical command-line options,
- the last occurrence "wins."
-
- </para>
-
- <scons_example name="MergeFlags1">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Append(CCFLAGS = '-option -O3 -O1')
- flags = { 'CCFLAGS' : '-whatever -O3' }
- env.MergeFlags(flags)
- print env['CCFLAGS']
- </file>
- </scons_example>
-
- <scons_output example="MergeFlags1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that the default value for &cv-link-CCFLAGS;
- <!--
- [TODO: for when we make CLVar public]
- is a <varname>CLVar</varname>,
- -->
- is an internal &SCons; object
- which automatically converts
- the options we specified as a string into a list.
-
- </para>
-
- <scons_example name="MergeFlags2">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include'])
- flags = { 'CPPPATH' : ['/usr/opt/include', '/usr/local/include'] }
- env.MergeFlags(flags)
- print env['CPPPATH']
- </file>
- </scons_example>
-
- <scons_output example="MergeFlags2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that the default value for &cv-link-CPPPATH;
- <!--
- [TODO: for when we make CLVar public]
- is a Python list, not a <varname>CLVar</varname>,
- -->
- is a normal Python list,
- so we must specify its values as a list
- in the dictionary we pass to the &MergeFlags; function.
-
- </para>
-
- <para>
-
- If &MergeFlags; is passed anything other than a dictionary,
- it calls the &ParseFlags; method to convert it into a dictionary.
-
- </para>
-
- <scons_example name="MergeFlags3">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Append(CCFLAGS = '-option -O3 -O1')
- env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include'])
- env.MergeFlags('-whatever -I/usr/opt/include -O3 -I/usr/local/include')
- print env['CCFLAGS']
- print env['CPPPATH']
- </file>
- </scons_example>
-
- <scons_output example="MergeFlags3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- In the combined example above,
- &ParseFlags; has sorted the options into their corresponding variables
- and returned a dictionary for &MergeFlags; to apply
- to the construction variables
- in the specified construction environment.
-
- </para>
diff --git a/doc/user/mergeflags.xml b/doc/user/mergeflags.xml
index b16e1b7..6434c1c 100644
--- a/doc/user/mergeflags.xml
+++ b/doc/user/mergeflags.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<section id="sect-mergeflags"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Merging Options into the Environment: the &MergeFlags; Function</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -50,19 +71,19 @@
</para>
- <programlisting>
- env = Environment()
- env.Append(CCFLAGS = '-option -O3 -O1')
- flags = { 'CCFLAGS' : '-whatever -O3' }
- env.MergeFlags(flags)
- print env['CCFLAGS']
- </programlisting>
+ <scons_example name="mergeflags_MergeFlags1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Append(CCFLAGS = '-option -O3 -O1')
+flags = { 'CCFLAGS' : '-whatever -O3' }
+env.MergeFlags(flags)
+print env['CCFLAGS']
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- ['-option', '-O1', '-whatever', '-O3']
- scons: `.' is up to date.
- </screen>
+ <scons_output example="mergeflags_MergeFlags1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -77,19 +98,19 @@
</para>
- <programlisting>
- env = Environment()
- env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include'])
- flags = { 'CPPPATH' : ['/usr/opt/include', '/usr/local/include'] }
- env.MergeFlags(flags)
- print env['CPPPATH']
- </programlisting>
+ <scons_example name="mergeflags_MergeFlags2">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include'])
+flags = { 'CPPPATH' : ['/usr/opt/include', '/usr/local/include'] }
+env.MergeFlags(flags)
+print env['CPPPATH']
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- ['/include', '/usr/local/include', '/usr/include', '/usr/opt/include']
- scons: `.' is up to date.
- </screen>
+ <scons_output example="mergeflags_MergeFlags2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -111,21 +132,20 @@
</para>
- <programlisting>
- env = Environment()
- env.Append(CCFLAGS = '-option -O3 -O1')
- env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include'])
- env.MergeFlags('-whatever -I/usr/opt/include -O3 -I/usr/local/include')
- print env['CCFLAGS']
- print env['CPPPATH']
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- ['-option', '-O1', '-whatever', '-O3']
- ['/include', '/usr/local/include', '/usr/include', '/usr/opt/include']
- scons: `.' is up to date.
- </screen>
+ <scons_example name="mergeflags_MergeFlags3">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Append(CCFLAGS = '-option -O3 -O1')
+env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include'])
+env.MergeFlags('-whatever -I/usr/opt/include -O3 -I/usr/local/include')
+print env['CCFLAGS']
+print env['CPPPATH']
+ </file>
+ </scons_example>
+
+ <scons_output example="mergeflags_MergeFlags3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -136,3 +156,5 @@
in the specified construction environment.
</para>
+
+</section>
diff --git a/doc/user/misc.in b/doc/user/misc.in
deleted file mode 100644
index 19d123f..0000000
--- a/doc/user/misc.in
+++ /dev/null
@@ -1,606 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- &SCons; supports a lot of additional functionality
- that doesn't readily fit into the other chapters.
-
- </para>
-
- <section>
- <title>Verifying the Python Version: the &EnsurePythonVersion; Function</title>
-
- <para>
-
- Although the &SCons; code itself will run
- on any 2.x Python version 2.4 or later,
- you are perfectly free to make use of
- Python syntax and modules from more modern versions
- (for example, Python 2.5 or 2.6)
- when writing your &SConscript; files
- or your own local modules.
- If you do this, it's usually helpful to
- configure &SCons; to exit gracefully with an error message
- if it's being run with a version of Python
- that simply won't work with your code.
- This is especially true if you're going to use &SCons;
- to build source code that you plan to distribute publicly,
- where you can't be sure of the Python version
- that an anonymous remote user might use
- to try to build your software.
-
- </para>
-
- <para>
-
- &SCons; provides an &EnsurePythonVersion; function for this.
- You simply pass it the major and minor versions
- numbers of the version of Python you require:
-
- </para>
-
- <!--
-
- TODO: Figure out how to generate the error message
- regardless of executing Python version by faking out
- the infrastructure in some way.
-
- <scons_example name="EnsurePythonVersion">
- <file name="SConstruct" printme="1">
- EnsurePythonVersion(2, 5)
- </file>
- </scons_example>
-
- -->
-
- <sconstruct>
- EnsurePythonVersion(2, 5)
- </sconstruct>
-
- <para>
-
- And then &SCons; will exit with the following error
- message when a user runs it with an unsupported
- earlier version of Python:
-
- </para>
-
- <!--
-
- TODO: Figure out how to generate the error message
- regardless of executing Python version by faking out
- the infrastructure in some way.
-
- <scons_output example="EnsurePythonVersion">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- Python 2.5 or greater required, but you have Python 2.3.6
- </screen>
-
- </section>
-
- <section>
- <title>Verifying the SCons Version: the &EnsureSConsVersion; Function</title>
-
- <para>
-
- You may, of course, write your &SConscript; files
- to use features that were only added in
- recent versions of &SCons;.
- When you publicly distribute software that is built using &SCons;,
- it's helpful to have &SCons;
- verify the version being used and
- exit gracefully with an error message
- if the user's version of &SCons; won't work
- with your &SConscript; files.
- &SCons; provides an &EnsureSConsVersion; function
- that verifies the version of &SCons;
- in the same
- the &EnsurePythonVersion; function
- verifies the version of Python,
- by passing in the major and minor versions
- numbers of the version of SCons you require:
-
- </para>
-
- <!--
-
- TODO: Figure out how to generate the error message
- regardless of executing SCons version by faking out
- the infrastructure in some way.
-
- <scons_example name="EnsureSConsVersion">
- <file name="SConstruct" printme="1">
- EnsureSConsVersion(1, 0)
- </file>
- </scons_example>
-
- -->
-
- <sconstruct>
- EnsureSConsVersion(1, 0)
- </sconstruct>
-
- <para>
-
- And then &SCons; will exit with the following error
- message when a user runs it with an unsupported
- earlier version of &SCons;:
-
- </para>
-
- <!--
-
- TODO: Figure out how to generate the error message
- regardless of executing SCons version by faking out
- the infrastructure in some way.
-
- <scons_output example="EnsureSConsVersion">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- SCons 1.0 or greater required, but you have SCons 0.98.5
- </screen>
-
- </section>
-
- <section>
- <title>Explicitly Terminating &SCons; While Reading &SConscript; Files: the &Exit; Function</title>
-
- <para>
-
- &SCons; supports an &Exit; function
- which can be used to terminate &SCons;
- while reading the &SConscript; files,
- usually because you've detected a condition
- under which it doesn't make sense to proceed:
-
- </para>
-
- <scons_example name="Exit">
- <file name="SConstruct" printme="1">
- if ARGUMENTS.get('FUTURE'):
- print "The FUTURE option is not supported yet!"
- Exit(2)
- env = Environment()
- env.Program('hello.c')
- </file>
- <file name="hello.c">
- hello.c
- </file>
- </scons_example>
-
- <scons_output example="Exit">
- <scons_output_command>scons -Q FUTURE=1</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The &Exit; function takes as an argument
- the (numeric) exit status that you want &SCons; to exit with.
- If you don't specify a value,
- the default is to exit with <literal>0</literal>,
- which indicates successful execution.
-
- </para>
-
- <para>
-
- Note that the &Exit; function
- is equivalent to calling the Python
- <function>sys.exit</function> function
- (which the it actually calls),
- but because &Exit; is a &SCons; function,
- you don't have to import the Python
- <literal>sys</literal> module to use it.
-
- </para>
-
- </section>
-
- <section>
- <title>Searching for Files: the &FindFile; Function</title>
-
- <para>
-
- The &FindFile; function searches for a file in a list of directories.
- If there is only one directory, it can be given as a simple string.
- The function returns a File node if a matching file exists,
- or None if no file is found.
- (See the documentation for the &Glob; function for an alternative way
- of searching for entries in a directory.)
-
- </para>
-
- <scons_example name="FindFile1a">
- <file name="SConstruct" printme="1">
- # one directory
- print FindFile('missing', '.')
- t = FindFile('exists', '.')
- print t.__class__, t
- </file>
- <file name="exists">
- exists
- </file>
- </scons_example>
-
- <scons_output example="FindFile1a" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <scons_example name="FindFile1b">
- <file name="SConstruct" printme="1">
- # several directories
- includes = [ '.', 'include', 'src/include']
- headers = [ 'nonesuch.h', 'config.h', 'private.h', 'dist.h']
- for hdr in headers:
- print '%-12s' % ('%s:' % hdr), FindFile(hdr, includes)
- </file>
- <file name="config.h">
- exists
- </file>
- <directory name="src"></directory>
- <directory name="src/include"></directory>
- <file name="src/include/private.h">
- exists
- </file>
- <directory name="include"></directory>
- <file name="include/dist.h">
- exists
- </file>
- </scons_example>
-
- <scons_output example="FindFile1b" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <!-- The man page says this should work, but it fails.
- <para>
-
- If the 'file' parameter is a list of files,
- a list of File nodes is returned.
-
- </para>
-
- <scons_example name="FindFile1c">
- <file name="SConstruct" printme="1">
- # several directories
- includes = [ '.', 'include', 'src/include']
- headers = [ 'nonesuch.h', 'config.h', 'private.h', 'dist.h']
- print FindFile(headers, includes)
- </file>
- <file name="config.h">
- exists
- </file>
- <directory name="src"></directory>
- <directory name="src/include"></directory>
- </file>
- <file name="src/include/private.h">
- exists
- <directory name="include"></directory>
- </file>
- <file name="include/dist.h">
- exists
- </scons_example>
-
- <scons_output example="FindFile1c" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
- -->
-
- <para>
-
- If the file exists in more than one directory,
- only the first occurrence is returned.
-
- </para>
-
- <scons_example name="FindFile1d">
- <file name="SConstruct" printme="1">
- print FindFile('multiple', ['sub1', 'sub2', 'sub3'])
- print FindFile('multiple', ['sub2', 'sub3', 'sub1'])
- print FindFile('multiple', ['sub3', 'sub1', 'sub2'])
- </file>
- <directory name="sub1"></directory>
- <file name="sub1/multiple">
- exists
- </file>
- <directory name="sub2"></directory>
- <file name="sub2/multiple">
- exists
- </file>
- <directory name="sub3"></directory>
- <file name="sub3/multiple">
- exists
- </file>
- </scons_example>
-
- <scons_output example="FindFile1d" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <!-- file may be a list of file names or a single file name. -->
-
- <para>
-
- In addition to existing files, &FindFile; will also find derived files
- (that is, non-leaf files) that haven't been built yet.
- (Leaf files should already exist, or the build will fail!)
-
- </para>
-
- <scons_example name="FindFile2">
- <file name="SConstruct" printme="1">
- # Neither file exists, so build will fail
- Command('derived', 'leaf', 'cat >$TARGET $SOURCE')
- print FindFile('leaf', '.')
- print FindFile('derived', '.')
- </file>
- </scons_example>
-
- <scons_output example="FindFile2" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <scons_example name="FindFile2">
- <file name="SConstruct" printme="1">
- # Only 'leaf' exists
- Command('derived', 'leaf', 'cat >$TARGET $SOURCE')
- print FindFile('leaf', '.')
- print FindFile('derived', '.')
- </file>
- <file name="leaf">
- leaf
- </file>
- </scons_example>
-
- <scons_output example="FindFile2" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If a source file exists, &FindFile; will correctly return the name
- in the build directory.
-
- </para>
-
- <scons_example name="FindFile3">
- <file name="SConstruct" printme="1">
- # Only 'src/leaf' exists
- VariantDir('build', 'src')
- print FindFile('leaf', 'build')
- </file>
- <directory name="src"></directory>
- <file name="src/leaf">
- leaf
- </file>
- </scons_example>
-
- <scons_output example="FindFile3" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Handling Nested Lists: the &Flatten; Function</title>
-
- <para>
-
- &SCons; supports a &Flatten; function
- which takes an input Python sequence
- (list or tuple)
- and returns a flattened list
- containing just the individual elements of
- the sequence.
- This can be handy when trying to examine
- a list composed of the lists
- returned by calls to various Builders.
- For example, you might collect
- object files built in different ways
- into one call to the &Program; Builder
- by just enclosing them in a list, as follows:
-
- </para>
-
- <scons_example name="Flatten1">
- <file name="SConstruct" printme="1">
- objects = [
- Object('prog1.c'),
- Object('prog2.c', CCFLAGS='-DFOO'),
- ]
- Program(objects)
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- <file name="prog2.c">
- prog2.c
- </file>
- </scons_example>
-
- <para>
-
- Because the Builder calls in &SCons;
- flatten their input lists,
- this works just fine to build the program:
-
- </para>
-
- <scons_output example="Flatten1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- But if you were debugging your build
- and wanted to print the absolute path
- of each object file in the
- <varname>objects</varname> list,
- you might try the following simple approach,
- trying to print each Node's
- <literal>abspath</literal>
- attribute:
-
- </para>
-
- <scons_example name="Flatten2">
- <file name="SConstruct" printme="1">
- objects = [
- Object('prog1.c'),
- Object('prog2.c', CCFLAGS='-DFOO'),
- ]
- Program(objects)
-
- for object_file in objects:
- print object_file.abspath
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- <file name="prog2.c">
- prog2.c
- </file>
- </scons_example>
-
- <para>
-
- This does not work as expected
- because each call to <function>str</function>
- is operating an embedded list returned by
- each &Object; call,
- not on the underlying Nodes within those lists:
-
- </para>
-
- <scons_output example="Flatten2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The solution is to use the &Flatten; function
- so that you can pass each Node to
- the <function>str</function> separately:
-
- </para>
-
- <scons_example name="Flatten3">
- <file name="SConstruct" printme="1">
- objects = [
- Object('prog1.c'),
- Object('prog2.c', CCFLAGS='-DFOO'),
- ]
- Program(objects)
-
- for object_file in Flatten(objects):
- print object_file.abspath
- </file>
- <file name="prog1.c">
- prog1.c
- </file>
- <file name="prog2.c">
- prog2.c
- </file>
- </scons_example>
-
- <!--
-
- TODO: can't use this now because it displays the temporary path name
-
- <scons_output example="Flatten3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- /home/me/project/prog1.o
- /home/me/project/prog2.o
- cc -o prog1.o -c prog1.c
- cc -o prog2.o -c -DFOO prog2.c
- cc -o prog1 prog1.o prog2.o
- </screen>
-
- </section>
-
- <section>
- <title>Finding the Invocation Directory: the &GetLaunchDir; Function</title>
-
- <para>
-
- If you need to find the directory from
- which the user invoked the &scons; command,
- you can use the &GetLaunchDir; function:
-
- </para>
-
- <sconstruct>
- env = Environment(
- LAUNCHDIR = GetLaunchDir(),
- )
- env.Command('directory_build_info',
- '$LAUNCHDIR/build_info'
- Copy('$TARGET', '$SOURCE'))
- </sconstruct>
-
- <para>
-
- Because &SCons; is usually invoked from the top-level
- directory in which the &SConstruct; file lives,
- the Python <function>os.getcwd()</function>
- is often equivalent.
- However, the &SCons;
- <literal>-u</literal>,
- <literal>-U</literal>
- and
- <literal>-D</literal>
- command-line options,
- when invoked from a subdirectory,
- will cause &SCons; to change to the directory
- in which the &SConstruct; file is found.
- When those options are used,
- &GetLaunchDir; will still return the path to the
- user's invoking subdirectory,
- allowing the &SConscript; configuration
- to still get at configuration (or other) files
- from the originating directory.
-
- </para>
-
- </section>
diff --git a/doc/user/misc.xml b/doc/user/misc.xml
index 524bca3..1d892a4 100644
--- a/doc/user/misc.xml
+++ b/doc/user/misc.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-misc"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Miscellaneous Functionality</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -68,17 +89,17 @@
regardless of executing Python version by faking out
the infrastructure in some way.
- <scons_example name="EnsurePythonVersion">
+ <scons_example name="misc_EnsurePythonVersion">
<file name="SConstruct" printme="1">
- EnsurePythonVersion(2, 5)
+EnsurePythonVersion(2, 5)
</file>
</scons_example>
-->
- <programlisting>
- EnsurePythonVersion(2, 5)
- </programlisting>
+ <sconstruct>
+EnsurePythonVersion(2, 5)
+ </sconstruct>
<para>
@@ -94,15 +115,15 @@
regardless of executing Python version by faking out
the infrastructure in some way.
- <scons_output example="EnsurePythonVersion">
+ <scons_output example="misc_EnsurePythonVersion" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>scons -Q</userinput>
- Python 2.5 or greater required, but you have Python 2.3.6
+% <userinput>scons -Q</userinput>
+Python 2.5 or greater required, but you have Python 2.3.6
</screen>
</section>
@@ -137,17 +158,17 @@
regardless of executing SCons version by faking out
the infrastructure in some way.
- <scons_example name="EnsureSConsVersion">
+ <scons_example name="misc_EnsureSConsVersion">
<file name="SConstruct" printme="1">
- EnsureSConsVersion(1, 0)
+EnsureSConsVersion(1, 0)
</file>
</scons_example>
-->
- <programlisting>
- EnsureSConsVersion(1, 0)
- </programlisting>
+ <sconstruct>
+EnsureSConsVersion(1, 0)
+ </sconstruct>
<para>
@@ -163,15 +184,15 @@
regardless of executing SCons version by faking out
the infrastructure in some way.
- <scons_output example="EnsureSConsVersion">
+ <scons_output example="misc_EnsureSConsVersion" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>scons -Q</userinput>
- SCons 1.0 or greater required, but you have SCons 0.98.5
+% <userinput>scons -Q</userinput>
+SCons 1.0 or greater required, but you have SCons 0.98.5
</screen>
</section>
@@ -189,21 +210,23 @@
</para>
- <programlisting>
- if ARGUMENTS.get('FUTURE'):
- print "The FUTURE option is not supported yet!"
- Exit(2)
- env = Environment()
- env.Program('hello.c')
- </programlisting>
+ <scons_example name="misc_Exit">
+ <file name="SConstruct" printme="1">
+if ARGUMENTS.get('FUTURE'):
+ print "The FUTURE option is not supported yet!"
+ Exit(2)
+env = Environment()
+env.Program('hello.c')
+ </file>
+ <file name="hello.c">
+hello.c
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q FUTURE=1</userinput>
- The FUTURE option is not supported yet!
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="misc_Exit" suffix="1">
+ <scons_output_command>scons -Q FUTURE=1</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -243,36 +266,47 @@
</para>
- <programlisting>
- # one directory
- print FindFile('missing', '.')
- t = FindFile('exists', '.')
- print t.__class__, t
- </programlisting>
+ <scons_example name="misc_FindFile1a">
+ <file name="SConstruct" printme="1">
+# one directory
+print FindFile('missing', '.')
+t = FindFile('exists', '.')
+print t.__class__, t
+ </file>
+ <file name="exists">
+ exists
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- None
- &lt;class 'SCons.Node.FS.File'&gt; exists
- scons: `.' is up to date.
- </screen>
+ <scons_output example="misc_FindFile1a" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
- <programlisting>
- # several directories
- includes = [ '.', 'include', 'src/include']
- headers = [ 'nonesuch.h', 'config.h', 'private.h', 'dist.h']
- for hdr in headers:
- print '%-12s' % ('%s:' % hdr), FindFile(hdr, includes)
- </programlisting>
+ <scons_example name="misc_FindFile1b">
+ <file name="SConstruct" printme="1">
+# several directories
+includes = [ '.', 'include', 'src/include']
+headers = [ 'nonesuch.h', 'config.h', 'private.h', 'dist.h']
+for hdr in headers:
+ print '%-12s' % ('%s:' % hdr), FindFile(hdr, includes)
+ </file>
+ <file name="config.h">
+exists
+ </file>
+ <directory name="src"></directory>
+ <directory name="src/include"></directory>
+ <file name="src/include/private.h">
+exists
+ </file>
+ <directory name="include"></directory>
+ <file name="include/dist.h">
+exists
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- nonesuch.h: None
- config.h: config.h
- private.h: src/include/private.h
- dist.h: include/dist.h
- scons: `.' is up to date.
- </screen>
+ <scons_output example="misc_FindFile1b" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<!-- The man page says this should work, but it fails.
<para>
@@ -282,28 +316,28 @@
</para>
- <scons_example name="FindFile1c">
+ <scons_example name="misc_FindFile1c">
<file name="SConstruct" printme="1">
- # several directories
- includes = [ '.', 'include', 'src/include']
- headers = [ 'nonesuch.h', 'config.h', 'private.h', 'dist.h']
- print FindFile(headers, includes)
+# several directories
+includes = [ '.', 'include', 'src/include']
+headers = [ 'nonesuch.h', 'config.h', 'private.h', 'dist.h']
+print FindFile(headers, includes)
</file>
<file name="config.h">
- exists
+exists
</file>
<directory name="src"></directory>
<directory name="src/include"></directory>
</file>
<file name="src/include/private.h">
- exists
+exists
<directory name="include"></directory>
</file>
<file name="include/dist.h">
- exists
+exists
</scons_example>
- <scons_output example="FindFile1c" os="posix">
+ <scons_output example="misc_FindFile1c" os="posix" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
@@ -315,19 +349,29 @@
</para>
- <programlisting>
- print FindFile('multiple', ['sub1', 'sub2', 'sub3'])
- print FindFile('multiple', ['sub2', 'sub3', 'sub1'])
- print FindFile('multiple', ['sub3', 'sub1', 'sub2'])
- </programlisting>
+ <scons_example name="misc_FindFile1d">
+ <file name="SConstruct" printme="1">
+print FindFile('multiple', ['sub1', 'sub2', 'sub3'])
+print FindFile('multiple', ['sub2', 'sub3', 'sub1'])
+print FindFile('multiple', ['sub3', 'sub1', 'sub2'])
+ </file>
+ <directory name="sub1"></directory>
+ <file name="sub1/multiple">
+exists
+ </file>
+ <directory name="sub2"></directory>
+ <file name="sub2/multiple">
+exists
+ </file>
+ <directory name="sub3"></directory>
+ <file name="sub3/multiple">
+exists
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- sub1/multiple
- sub2/multiple
- sub3/multiple
- scons: `.' is up to date.
- </screen>
+ <scons_output example="misc_FindFile1d" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<!-- file may be a list of file names or a single file name. -->
@@ -339,38 +383,34 @@
</para>
- <programlisting>
- # Neither file exists, so build will fail
- Command('derived', 'leaf', 'cat &gt;$TARGET $SOURCE')
- print FindFile('leaf', '.')
- print FindFile('derived', '.')
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- None
- derived
- scons: *** [derived] Source `leaf' not found, needed by target `derived'.
- </screen>
+ <scons_example name="misc_FindFile2">
+ <file name="SConstruct" printme="1">
+# Neither file exists, so build will fail
+Command('derived', 'leaf', 'cat >$TARGET $SOURCE')
+print FindFile('leaf', '.')
+print FindFile('derived', '.')
+ </file>
+ </scons_example>
- <programlisting>
- # Neither file exists, so build will fail
- Command('derived', 'leaf', 'cat &gt;$TARGET $SOURCE')
- print FindFile('leaf', '.')
- print FindFile('derived', '.')
+ <scons_output example="misc_FindFile2" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
- # Only 'leaf' exists
- Command('derived', 'leaf', 'cat &gt;$TARGET $SOURCE')
- print FindFile('leaf', '.')
- print FindFile('derived', '.')
- </programlisting>
+ <scons_example name="misc_FindFile2">
+ <file name="SConstruct" printme="1">
+# Only 'leaf' exists
+Command('derived', 'leaf', 'cat >$TARGET $SOURCE')
+print FindFile('leaf', '.')
+print FindFile('derived', '.')
+ </file>
+ <file name="leaf">
+leaf
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- leaf
- derived
- cat &gt; derived leaf
- </screen>
+ <scons_output example="misc_FindFile2" os="posix" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -379,17 +419,21 @@
</para>
- <programlisting>
- # Only 'src/leaf' exists
- VariantDir('build', 'src')
- print FindFile('leaf', 'build')
- </programlisting>
+ <scons_example name="misc_FindFile3">
+ <file name="SConstruct" printme="1">
+# Only 'src/leaf' exists
+VariantDir('build', 'src')
+print FindFile('leaf', 'build')
+ </file>
+ <directory name="src"></directory>
+ <file name="src/leaf">
+leaf
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- build/leaf
- scons: `.' is up to date.
- </screen>
+ <scons_output example="misc_FindFile3" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -414,13 +458,21 @@
</para>
- <programlisting>
- objects = [
- Object('prog1.c'),
- Object('prog2.c', CCFLAGS='-DFOO'),
- ]
- Program(objects)
- </programlisting>
+ <scons_example name="misc_Flatten1">
+ <file name="SConstruct" printme="1">
+objects = [
+ Object('prog1.c'),
+ Object('prog2.c', CCFLAGS='-DFOO'),
+]
+Program(objects)
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ <file name="prog2.c">
+prog2.c
+ </file>
+ </scons_example>
<para>
@@ -430,12 +482,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o prog1.o -c prog1.c
- cc -o prog2.o -c -DFOO prog2.c
- cc -o prog1 prog1.o prog2.o
- </screen>
+ <scons_output example="misc_Flatten1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -450,16 +499,24 @@
</para>
- <programlisting>
- objects = [
- Object('prog1.c'),
- Object('prog2.c', CCFLAGS='-DFOO'),
- ]
- Program(objects)
-
- for object_file in objects:
- print object_file.abspath
- </programlisting>
+ <scons_example name="misc_Flatten2">
+ <file name="SConstruct" printme="1">
+objects = [
+ Object('prog1.c'),
+ Object('prog2.c', CCFLAGS='-DFOO'),
+]
+Program(objects)
+
+for object_file in objects:
+ print object_file.abspath
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ <file name="prog2.c">
+prog2.c
+ </file>
+ </scons_example>
<para>
@@ -471,12 +528,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- AttributeError: 'NodeList' object has no attribute 'abspath':
- File "/home/my/project/SConstruct", line 8:
- print object_file.abspath
- </screen>
+ <scons_output example="misc_Flatten2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -486,34 +540,42 @@
</para>
- <programlisting>
- objects = [
- Object('prog1.c'),
- Object('prog2.c', CCFLAGS='-DFOO'),
- ]
- Program(objects)
-
- for object_file in Flatten(objects):
- print object_file.abspath
- </programlisting>
+ <scons_example name="misc_Flatten3">
+ <file name="SConstruct" printme="1">
+objects = [
+ Object('prog1.c'),
+ Object('prog2.c', CCFLAGS='-DFOO'),
+]
+Program(objects)
+
+for object_file in Flatten(objects):
+ print object_file.abspath
+ </file>
+ <file name="prog1.c">
+prog1.c
+ </file>
+ <file name="prog2.c">
+prog2.c
+ </file>
+ </scons_example>
<!--
TODO: can't use this now because it displays the temporary path name
- <scons_output example="Flatten3">
+ <scons_output example="misc_Flatten3" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>scons -Q</userinput>
- /home/me/project/prog1.o
- /home/me/project/prog2.o
- cc -o prog1.o -c prog1.c
- cc -o prog2.o -c -DFOO prog2.c
- cc -o prog1 prog1.o prog2.o
+% <userinput>scons -Q</userinput>
+/home/me/project/prog1.o
+/home/me/project/prog2.o
+cc -o prog1.o -c prog1.c
+cc -o prog2.o -c -DFOO prog2.c
+cc -o prog1 prog1.o prog2.o
</screen>
</section>
@@ -529,14 +591,14 @@
</para>
- <programlisting>
- env = Environment(
- LAUNCHDIR = GetLaunchDir(),
- )
- env.Command('directory_build_info',
- '$LAUNCHDIR/build_info'
- Copy('$TARGET', '$SOURCE'))
- </programlisting>
+ <sconstruct>
+env = Environment(
+ LAUNCHDIR = GetLaunchDir(),
+)
+env.Command('directory_build_info',
+ '$LAUNCHDIR/build_info'
+ Copy('$TARGET', '$SOURCE'))
+ </sconstruct>
<para>
@@ -563,3 +625,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/user/nodes.in b/doc/user/nodes.in
deleted file mode 100644
index 1cb5a3d..0000000
--- a/doc/user/nodes.in
+++ /dev/null
@@ -1,431 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- Internally, &SCons; represents all of the files
- and directories it knows about as &Nodes;.
- These internal objects
- (not object <emphasis>files</emphasis>)
- can be used in a variety of ways
- to make your &SConscript;
- files portable and easy to read.
-
- </para>
-
- <section>
- <title>Builder Methods Return Lists of Target Nodes</title>
-
- <para>
-
- All builder methods return a list of
- &Node; objects that identify the
- target file or files that will be built.
- These returned &Nodes; can be passed
- as arguments to other builder methods.
-
- </para>
-
- <para>
-
- For example, suppose that we want to build
- the two object files that make up a program with different options.
- This would mean calling the &b-link-Object;
- builder once for each object file,
- specifying the desired options:
-
- </para>
-
- <sconstruct>
- Object('hello.c', CCFLAGS='-DHELLO')
- Object('goodbye.c', CCFLAGS='-DGOODBYE')
- </sconstruct>
-
- <para>
-
- One way to combine these object files
- into the resulting program
- would be to call the &b-link-Program;
- builder with the names of the object files
- listed as sources:
-
- </para>
-
- <sconstruct>
- Object('hello.c', CCFLAGS='-DHELLO')
- Object('goodbye.c', CCFLAGS='-DGOODBYE')
- Program(['hello.o', 'goodbye.o'])
- </sconstruct>
-
- <para>
-
- The problem with specifying the names as strings
- is that our &SConstruct; file is no longer portable
- across operating systems.
- It won't, for example, work on Windows
- because the object files there would be
- named &hello_obj; and &goodbye_obj;,
- not &hello_o; and &goodbye_o;.
-
- </para>
-
- <para>
-
- A better solution is to assign the lists of targets
- returned by the calls to the &b-Object; builder to variables,
- which we can then concatenate in our
- call to the &b-Program; builder:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- hello_list = Object('hello.c', CCFLAGS='-DHELLO')
- goodbye_list = Object('goodbye.c', CCFLAGS='-DGOODBYE')
- Program(hello_list + goodbye_list)
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="goodbye.c">
- int main() { printf("Goodbye, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- This makes our &SConstruct; file portable again,
- the build output on Linux looking like:
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And on Windows:
-
- </para>
-
- <scons_output example="ex1" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- We'll see examples of using the list of nodes
- returned by builder methods throughout
- the rest of this guide.
-
- </para>
-
- </section>
-
- <section>
- <title>Explicitly Creating File and Directory Nodes</title>
-
- <para>
-
- It's worth mentioning here that
- &SCons; maintains a clear distinction
- between Nodes that represent files
- and Nodes that represent directories.
- &SCons; supports &File; and &Dir;
- functions that, respectively,
- return a file or directory Node:
-
- </para>
-
- <scons_example name="print">
- <file name="SConstruct" printme="1">
- hello_c = File('hello.c')
- Program(hello_c)
-
- classes = Dir('classes')
- Java(classes, 'src')
- </file>
- </scons_example>
-
- <para>
-
- Normally, you don't need to call
- &File; or &Dir; directly,
- because calling a builder method automatically
- treats strings as the names of files or directories,
- and translates them into
- the Node objects for you.
- The &File; and &Dir; functions can come in handy
- in situations where you need to explicitly
- instruct &SCons; about the type of Node being
- passed to a builder or other function,
- or unambiguously refer to a specific
- file in a directory tree.
- <!--
- (For an example of when you might
- need to use &File; or &Dir; to
- prevent ambiguous interpretation of a string
- naming a file or directory, see
- <xref linkend="chap-hierarchy">.)
- -->
-
- </para>
-
- <para>
-
- There are also times when you may need to
- refer to an entry in a file system
- without knowing in advance
- whether it's a file or a directory.
- For those situations,
- &SCons; also supports an &Entry; function,
- which returns a Node
- that can represent either a file or a directory.
-
- </para>
-
- <sconstruct>
- xyzzy = Entry('xyzzy')
- </sconstruct>
-
- <para>
-
- The returned <literal>xyzzy</literal> Node
- will be turned into a file or directory Node
- the first time it is used by a builder method
- or other function that
- requires one vs. the other.
-
- </para>
-
- </section>
-
- <section>
- <title>Printing &Node; File Names</title>
-
- <para>
-
- One of the most common things you can do
- with a Node is use it to print the
- file name that the node represents.
- Keep in mind, though, that because the object
- returned by a builder call
- is a <emphasis>list</emphasis> of Nodes,
- you must use Python subscripts
- to fetch individual Nodes from the list.
- For example, the following &SConstruct; file:
-
- </para>
-
- <scons_example name="print">
- <file name="SConstruct" printme="1">
- object_list = Object('hello.c')
- program_list = Program(object_list)
- print "The object file is:", object_list[0]
- print "The program file is:", program_list[0]
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Would print the following file names on a POSIX system:
-
- </para>
-
- <scons_output example="print" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And the following file names on a Windows system:
-
- </para>
-
- <scons_output example="print" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that in the above example,
- the <literal>object_list[0]</literal>
- extracts an actual Node <emphasis>object</emphasis>
- from the list,
- and the Python <literal>print</literal> statement
- converts the object to a string for printing.
-
- </para>
-
- </section>
-
- <section>
- <title>Using a &Node;'s File Name as a String</title>
-
- <para>
-
- Printing a &Node;'s name
- as described in the previous section
- works because the string representation of a &Node; object
- is the name of the file.
- If you want to do something other than
- print the name of the file,
- you can fetch it by using the builtin Python
- &str; function.
- For example, if you want to use the Python
- <function>os.path.exists</function>
- to figure out whether a file
- exists while the &SConstruct; file
- is being read and executed,
- you can fetch the string as follows:
-
- </para>
-
- <scons_example name="exists">
- <file name="SConstruct" printme="1">
- import os.path
- program_list = Program('hello.c')
- program_name = str(program_list[0])
- if not os.path.exists(program_name):
- print program_name, "does not exist!"
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Which executes as follows on a POSIX system:
-
- </para>
-
- <scons_output example="exists" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>&GetBuildPath;: Getting the Path From a &Node; or String</title>
-
- <para>
-
- <function>env.GetBuildPath(file_or_list)</function>
- returns the path of a &Node; or a string representing a
- path. It can also take a list of &Node;s and/or strings, and
- returns the list of paths. If passed a single &Node;, the result
- is the same as calling <literal>str(node)</literal> (see above).
- The string(s) can have embedded construction variables, which are
- expanded as usual, using the calling environment's set of
- variables. The paths can be files or directories, and do not have
- to exist.
-
- </para>
-
- <scons_example name="GetBuildPath">
- <file name="SConstruct" printme="1">
- env=Environment(VAR="value")
- n=File("foo.c")
- print env.GetBuildPath([n, "sub/dir/$VAR"])
- </file>
- </scons_example>
-
- <para>
-
- Would print the following file names:
-
- </para>
-
- <scons_output example="GetBuildPath" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- There is also a function version of &GetBuildPath; which can
- be called without an &Environment;; that uses the default SCons
- &Environment; to do substitution on any string arguments.
-
- </para>
-
- </section>
-
- <!--
-
- <section>
- <title>Fetching the Contents of a &Node;</title>
-
- <para>
-
- XXX Describe using read() and readlines()
- when we add that as a public interface.
-
- </para>
-
- <scons_example name="read">
- <file name="SConstruct" printme="1">
- hello_c = File('hello.c')
- contents = hello_c.read()
- print "contents are:"
- print contents
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Which executes as follows on a POSIX system:
-
- </para>
-
- <scons_output example="read" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- -->
-
- <!--
-
- <section>
- <title>Python Value &Node;</title>
-
- <para>
-
- XXX Value()
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/nodes.xml b/doc/user/nodes.xml
index 1a37013..c355ca6 100644
--- a/doc/user/nodes.xml
+++ b/doc/user/nodes.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-nodes"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Node Objects</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -58,10 +79,10 @@
</para>
- <programlisting>
- Object('hello.c', CCFLAGS='-DHELLO')
- Object('goodbye.c', CCFLAGS='-DGOODBYE')
- </programlisting>
+ <sconstruct>
+Object('hello.c', CCFLAGS='-DHELLO')
+Object('goodbye.c', CCFLAGS='-DGOODBYE')
+ </sconstruct>
<para>
@@ -73,11 +94,11 @@
</para>
- <programlisting>
- Object('hello.c', CCFLAGS='-DHELLO')
- Object('goodbye.c', CCFLAGS='-DGOODBYE')
- Program(['hello.o', 'goodbye.o'])
- </programlisting>
+ <sconstruct>
+Object('hello.c', CCFLAGS='-DHELLO')
+Object('goodbye.c', CCFLAGS='-DGOODBYE')
+Program(['hello.o', 'goodbye.o'])
+ </sconstruct>
<para>
@@ -100,11 +121,19 @@
</para>
- <programlisting>
- hello_list = Object('hello.c', CCFLAGS='-DHELLO')
- goodbye_list = Object('goodbye.c', CCFLAGS='-DGOODBYE')
- Program(hello_list + goodbye_list)
- </programlisting>
+ <scons_example name="nodes_ex1">
+ <file name="SConstruct" printme="1">
+hello_list = Object('hello.c', CCFLAGS='-DHELLO')
+goodbye_list = Object('goodbye.c', CCFLAGS='-DGOODBYE')
+Program(hello_list + goodbye_list)
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="goodbye.c">
+int main() { printf("Goodbye, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -113,12 +142,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o goodbye.o -c -DGOODBYE goodbye.c
- cc -o hello.o -c -DHELLO hello.c
- cc -o hello hello.o goodbye.o
- </screen>
+ <scons_output example="nodes_ex1" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -126,13 +152,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fogoodbye.obj /c goodbye.c -DGOODBYE
- cl /Fohello.obj /c hello.c -DHELLO
- link /nologo /OUT:hello.exe hello.obj goodbye.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="nodes_ex1" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -159,13 +181,15 @@
</para>
- <programlisting>
- hello_c = File('hello.c')
- Program(hello_c)
+ <scons_example name="nodes_print">
+ <file name="SConstruct" printme="1">
+hello_c = File('hello.c')
+Program(hello_c)
- classes = Dir('classes')
- Java(classes, 'src')
- </programlisting>
+classes = Dir('classes')
+Java(classes, 'src')
+ </file>
+ </scons_example>
<para>
@@ -204,9 +228,9 @@
</para>
- <programlisting>
- xyzzy = Entry('xyzzy')
- </programlisting>
+ <sconstruct>
+xyzzy = Entry('xyzzy')
+ </sconstruct>
<para>
@@ -237,18 +261,17 @@
</para>
- <programlisting>
- hello_c = File('hello.c')
- Program(hello_c)
-
- classes = Dir('classes')
- Java(classes, 'src')
-
- object_list = Object('hello.c')
- program_list = Program(object_list)
- print "The object file is:", object_list[0]
- print "The program file is:", program_list[0]
- </programlisting>
+ <scons_example name="nodes_print">
+ <file name="SConstruct" printme="1">
+object_list = Object('hello.c')
+program_list = Program(object_list)
+print "The object file is:", object_list[0]
+print "The program file is:", program_list[0]
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -256,13 +279,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- The object file is: hello.o
- The program file is: hello
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="nodes_print" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -270,14 +289,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- The object file is: hello.obj
- The program file is: hello.exe
- cl /Fohello.obj /c hello.c /nologo
- link /nologo /OUT:hello.exe hello.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="nodes_print" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -314,13 +328,18 @@
</para>
- <programlisting>
- import os.path
- program_list = Program('hello.c')
- program_name = str(program_list[0])
- if not os.path.exists(program_name):
- print program_name, "does not exist!"
- </programlisting>
+ <scons_example name="nodes_exists">
+ <file name="SConstruct" printme="1">
+import os.path
+program_list = Program('hello.c')
+program_name = str(program_list[0])
+if not os.path.exists(program_name):
+ print program_name, "does not exist!"
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -328,12 +347,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- hello does not exist!
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="nodes_exists" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -354,11 +370,13 @@
</para>
- <programlisting>
- env=Environment(VAR="value")
- n=File("foo.c")
- print env.GetBuildPath([n, "sub/dir/$VAR"])
- </programlisting>
+ <scons_example name="nodes_GetBuildPath">
+ <file name="SConstruct" printme="1">
+env=Environment(VAR="value")
+n=File("foo.c")
+print env.GetBuildPath([n, "sub/dir/$VAR"])
+ </file>
+ </scons_example>
<para>
@@ -366,11 +384,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- ['foo.c', 'sub/dir/value']
- scons: `.' is up to date.
- </screen>
+ <scons_output example="nodes_GetBuildPath" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -394,15 +410,15 @@
</para>
- <scons_example name="read">
+ <scons_example name="nodes_read">
<file name="SConstruct" printme="1">
- hello_c = File('hello.c')
- contents = hello_c.read()
- print "contents are:"
- print contents
+hello_c = File('hello.c')
+contents = hello_c.read()
+print "contents are:"
+print contents
</file>
<file name="hello.c">
- int main() { printf("Hello, world!\n"); }
+int main() { printf("Hello, world!\n"); }
</file>
</scons_example>
@@ -412,7 +428,7 @@
</para>
- <scons_output example="read" os="posix">
+ <scons_output example="nodes_read" os="posix" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
@@ -434,3 +450,5 @@
</section>
-->
+
+</chapter>
diff --git a/doc/user/output.in b/doc/user/output.in
deleted file mode 100644
index 5acf2c5..0000000
--- a/doc/user/output.in
+++ /dev/null
@@ -1,681 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- A key aspect of creating a usable build configuration
- is providing good output from the build
- so its users can readily understand
- what the build is doing
- and get information about how to control the build.
- &SCons; provides several ways of
- controlling output from the build configuration
- to help make the build
- more useful and understandable.
-
- </para>
-
- <section>
- <title>Providing Build Help: the &Help; Function</title>
-
- <para>
-
- It's often very useful to be able to give
- users some help that describes the
- specific targets, build options, etc.,
- that can be used for your build.
- &SCons; provides the &Help; function
- to allow you to specify this help text:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- Help("""
- Type: 'scons program' to build the production program,
- 'scons debug' to build the debug version.
- """)
- </file>
- </scons_example>
-
- <para>
-
- (Note the above use of the Python triple-quote syntax,
- which comes in very handy for
- specifying multi-line strings like help text.)
-
- </para>
-
- <para>
-
- When the &SConstruct; or &SConscript; files
- contain such a call to the &Help; function,
- the specified help text will be displayed in response to
- the &SCons; <literal>-h</literal> option:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -h</scons_output_command>
- </scons_output>
-
- <para>
-
- The &SConscript; files may contain
- multiple calls to the &Help; function,
- in which case the specified text(s)
- will be concatenated when displayed.
- This allows you to split up the
- help text across multiple &SConscript; files.
- In this situation, the order in
- which the &SConscript; files are called
- will determine the order in which the &Help; functions are called,
- which will determine the order in which
- the various bits of text will get concatenated.
-
- </para>
-
- <para>
-
- Another use would be to make the help text conditional
- on some variable.
- For example, suppose you only want to display
- a line about building a Windows-only
- version of a program when actually
- run on Windows.
- The following &SConstruct; file:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct" printme="1">
- env = Environment()
-
- Help("\nType: 'scons program' to build the production program.\n")
-
- if env['PLATFORM'] == 'win32':
- Help("\nType: 'scons windebug' to build the Windows debug version.\n")
- </file>
- </scons_example>
-
- <para>
-
- Will display the complete help text on Windows:
-
- </para>
-
- <scons_output example="ex2" os="win32">
- <scons_output_command>scons -h</scons_output_command>
- </scons_output>
-
- <para>
-
- But only show the relevant option on a Linux or UNIX system:
-
- </para>
-
- <scons_output example="ex2" os="posix">
- <scons_output_command>scons -h</scons_output_command>
- </scons_output>
-
- <para>
-
- If there is no &Help; text in the &SConstruct; or
- &SConscript; files,
- &SCons; will revert to displaying its
- standard list that describes the &SCons; command-line
- options.
- This list is also always displayed whenever
- the <literal>-H</literal> option is used.
-
- </para>
-
- </section>
-
- <section>
- <title>Controlling How &SCons; Prints Build Commands: the <envar>$*COMSTR</envar> Variables</title>
-
- <para>
-
- Sometimes the commands executed
- to compile object files or link programs
- (or build other targets)
- can get very long,
- long enough to make it difficult for users
- to distinguish error messages or
- other important build output
- from the commands themselves.
- All of the default <envar>$*COM</envar> variables
- that specify the command lines
- used to build various types of target files
- have a corresponding <envar>$*COMSTR</envar> variable
- that can be set to an alternative
- string that will be displayed
- when the target is built.
-
- </para>
-
- <para>
-
- For example, suppose you want to
- have &SCons; display a
- <literal>"Compiling"</literal>
- message whenever it's compiling an object file,
- and a
- <literal>"Linking"</literal>
- when it's linking an executable.
- You could write a &SConstruct; file
- that looks like:
-
- </para>
-
- <scons_example name="COMSTR">
- <file name="SConstruct" printme="1">
- env = Environment(CCCOMSTR = "Compiling $TARGET",
- LINKCOMSTR = "Linking $TARGET")
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
- Which would then yield the output:
-
- </para>
-
- <!--
-
- <scons_output example="COMSTR" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- Compiling foo.o
- Linking foo
- </screen>
-
- <para>
-
- &SCons; performs complete variable substitution
- on <envar>$*COMSTR</envar> variables,
- so they have access to all of the
- standard variables like &cv-TARGET; &cv-SOURCES;, etc.,
- as well as any construction variables
- that happen to be configured in
- the construction environment
- used to build a specific target.
-
- </para>
-
- <para>
-
- Of course, sometimes it's still important to
- be able to see the exact command
- that &SCons; will execute to build a target.
- For example, you may simply need to verify
- that &SCons; is configured to supply
- the right options to the compiler,
- or a developer may want to
- cut-and-paste a compile command
- to add a few options
- for a custom test.
-
- </para>
-
- <para>
-
- One common way to give users
- control over whether or not
- &SCons; should print the actual command line
- or a short, configured summary
- is to add support for a
- <varname>VERBOSE</varname>
- command-line variable to your &SConstruct; file.
- A simple configuration for this might look like:
-
- </para>
-
- <scons_example name="COMSTR-VERBOSE">
- <file name="SConstruct" printme="1">
- env = Environment()
- if ARGUMENTS.get('VERBOSE') != "1':
- env['CCCOMSTR'] = "Compiling $TARGET"
- env['LINKCOMSTR'] = "Linking $TARGET"
- env.Program('foo.c')
- </file>
- <file name="foo.c">
- foo.c
- </file>
- </scons_example>
-
- <para>
-
-
- By only setting the appropriate
- <envar>$*COMSTR</envar> variables
- if the user specifies
- <literal>VERBOSE=1</literal>
- on the command line,
- the user has control
- over how &SCons;
- displays these particular command lines:
-
- </para>
-
- <!--
-
- <scons_output example="COMSTR-VERBOSE" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q -c</scons_output_command>
- <scons_output_command>scons -Q VERBOSE=1</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- Compiling foo.o
- Linking foo
- % <userinput>scons -Q -c</userinput>
- Removed foo.o
- Removed foo
- % <userinput>scons -Q VERBOSE=1</userinput>
- cc -o foo.o -c foo.c
- cc -o foo foo.o
- </screen>
-
- </section>
-
- <section>
- <title>Providing Build Progress Output: the &Progress; Function</title>
-
- <para>
-
- Another aspect of providing good build output
- is to give the user feedback
- about what &SCons; is doing
- even when nothing is being built at the moment.
- This can be especially true for large builds
- when most of the targets are already up-to-date.
- Because &SCons; can take a long time
- making absolutely sure that every
- target is, in fact, up-to-date
- with respect to a lot of dependency files,
- it can be easy for users to mistakenly
- conclude that &SCons; is hung
- or that there is some other problem with the build.
-
- </para>
-
- <para>
-
- One way to deal with this perception
- is to configure &SCons; to print something to
- let the user know what it's "thinking about."
- The &Progress; function
- allows you to specify a string
- that will be printed for every file
- that &SCons; is "considering"
- while it is traversing the dependency graph
- to decide what targets are or are not up-to-date.
-
- </para>
-
- <scons_example name="Progress-TARGET">
- <file name="SConstruct" printme="1">
- Progress('Evaluating $TARGET\n')
- Program('f1.c')
- Program('f2.c')
- </file>
- <file name="f1.c">
- f1.c
- </file>
- <file name="f2.c">
- f2.c
- </file>
- </scons_example>
-
- <para>
-
- Note that the &Progress; function does not
- arrange for a newline to be printed automatically
- at the end of the string (as does the Python
- <literal>print</literal> statement),
- and we must specify the
- <literal>\n</literal>
- that we want printed at the end of the configured string.
- This configuration, then,
- will have &SCons;
- print that it is <literal>Evaluating</literal>
- each file that it encounters
- in turn as it traverses the dependency graph:
-
- </para>
-
- <scons_output example="Progress-TARGET" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Of course, normally you don't want to add
- all of these additional lines to your build output,
- as that can make it difficult for the user
- to find errors or other important messages.
- A more useful way to display
- this progress might be
- to have the file names printed
- directly to the user's screen,
- not to the same standard output
- stream where build output is printed,
- and to use a carriage return character
- (<literal>\r</literal>)
- so that each file name gets re-printed on the same line.
- Such a configuration would look like:
-
- </para>
-
- <sconstruct>
- Progress('$TARGET\r',
- file=open('/dev/tty', 'w'),
- overwrite=True)
- Program('f1.c')
- Program('f2.c')
- </sconstruct>
-
- <para>
-
- Note that we also specified the
- <literal>overwrite=True</literal> argument
- to the &Progress; function,
- which causes &SCons; to
- "wipe out" the previous string with space characters
- before printing the next &Progress; string.
- Without the
- <literal>overwrite=True</literal> argument,
- a shorter file name would not overwrite
- all of the charactes in a longer file name that
- precedes it,
- making it difficult to tell what the
- actual file name is on the output.
- Also note that we opened up the
- <filename>/dev/tty</filename> file
- for direct access (on POSIX) to
- the user's screen.
- On Windows, the equivalent would be to open
- the <filename>con:</filename> file name.
-
- </para>
-
- <para>
-
- Also, it's important to know that although you can use
- <literal>$TARGET</literal> to substitute the name of
- the node in the string,
- the &Progress; function does <emphasis>not</emphasis>
- perform general variable substitution
- (because there's not necessarily a construction
- environment involved in evaluating a node
- like a source file, for example).
-
- </para>
-
- <para>
-
- You can also specify a list of strings
- to the &Progress; function,
- in which case &SCons; will
- display each string in turn.
- This can be used to implement a "spinner"
- by having &SCons; cycle through a
- sequence of strings:
-
- </para>
-
- <sconstruct>
- Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5)
- Program('f1.c')
- Program('f2.c')
- </sconstruct>
-
- <para>
-
- Note that here we have also used the
- <literal>interval=</literal>
- keyword argument to have &SCons;
- only print a new "spinner" string
- once every five evaluated nodes.
- Using an <literal>interval=</literal> count,
- even with strings that use <literal>$TARGET</literal> like
- our examples above,
- can be a good way to lessen the
- work that &SCons; expends printing &Progress; strings,
- while still giving the user feedback
- that indicates &SCons; is still
- working on evaluating the build.
-
- </para>
-
- <para>
-
- Lastly, you can have direct control
- over how to print each evaluated node
- by passing a Python function
- (or other Python callable)
- to the &Progress; function.
- Your function will be called
- for each evaluated node,
- allowing you to
- implement more sophisticated logic
- like adding a counter:
-
- </para>
-
- <scons_example name="Progress-callable">
- <file name="SConstruct" printme="1">
- screen = open('/dev/tty', 'w')
- count = 0
- def progress_function(node)
- count += 1
- screen.write('Node %4d: %s\r' % (count, node))
-
- Progress(progress_function)
- </file>
- </scons_example>
-
- <para>
-
- Of course, if you choose,
- you could completely ignore the
- <varname>node</varname> argument to the function,
- and just print a count,
- or anything else you wish.
-
- </para>
-
- <para>
-
- (Note that there's an obvious follow-on question here:
- how would you find the total number of nodes
- that <emphasis>will be</emphasis>
- evaluated so you can tell the user how
- close the build is to finishing?
- Unfortunately, in the general case,
- there isn't a good way to do that,
- short of having &SCons; evaluate its
- dependency graph twice,
- first to count the total and
- the second time to actually build the targets.
- This would be necessary because
- you can't know in advance which
- target(s) the user actually requested
- to be built.
- The entire build may consist of thousands of Nodes,
- for example,
- but maybe the user specifically requested
- that only a single object file be built.)
-
- </para>
-
- </section>
-
- <section>
- <title>Printing Detailed Build Status: the &GetBuildFailures; Function</title>
-
- <para>
-
- SCons, like most build tools, returns zero status to
- the shell on success and nonzero status on failure.
- Sometimes it's useful to give more information about
- the build status at the end of the run, for instance
- to print an informative message, send an email, or
- page the poor slob who broke the build.
-
- </para>
-
- <para>
-
- SCons provides a &GetBuildFailures; method that
- you can use in a python <function>atexit</function> function
- to get a list of objects describing the actions that failed
- while attempting to build targets. There can be more
- than one if you're using <literal>-j</literal>. Here's a
- simple example:
-
- </para>
-
- <scons_example name="gbf1">
- <file name="SConstruct" printme="1">
- import atexit
-
- def print_build_failures():
- from SCons.Script import GetBuildFailures
- for bf in GetBuildFailures():
- print "%s failed: %s" % (bf.node, bf.errstr)
- atexit.register(print_build_failures)
- </file>
- </scons_example>
-
- <para>
-
- The <function>atexit.register</function> call
- registers <function>print_build_failures</function>
- as an <function>atexit</function> callback, to be called
- before &SCons; exits. When that function is called,
- it calls &GetBuildFailures; to fetch the list of failed objects.
- See the man page
- for the detailed contents of the returned objects;
- some of the more useful attributes are
- <literal>.node</literal>,
- <literal>.errstr</literal>,
- <literal>.filename</literal>, and
- <literal>.command</literal>.
- The <literal>filename</literal> is not necessarily
- the same file as the <literal>node</literal>; the
- <literal>node</literal> is the target that was
- being built when the error occurred, while the
- <literal>filename</literal>is the file or dir that
- actually caused the error.
- Note: only call &GetBuildFailures; at the end of the
- build; calling it at any other time is undefined.
-
- </para>
-
- <para>
-
- Here is a more complete example showing how to
- turn each element of &GetBuildFailures; into a string:
-
- </para>
-
- <scons_example name="gbf2">
- <file name="SConstruct" printme="1">
- # Make the build fail if we pass fail=1 on the command line
- if ARGUMENTS.get('fail', 0):
- Command('target', 'source', ['/bin/false'])
-
- def bf_to_str(bf):
- """Convert an element of GetBuildFailures() to a string
- in a useful way."""
- import SCons.Errors
- if bf is None: # unknown targets product None in list
- return '(unknown tgt)'
- elif isinstance(bf, SCons.Errors.StopError):
- return str(bf)
- elif bf.node:
- return str(bf.node) + ': ' + bf.errstr
- elif bf.filename:
- return bf.filename + ': ' + bf.errstr
- return 'unknown failure: ' + bf.errstr
- import atexit
-
- def build_status():
- """Convert the build status to a 2-tuple, (status, msg)."""
- from SCons.Script import GetBuildFailures
- bf = GetBuildFailures()
- if bf:
- # bf is normally a list of build failures; if an element is None,
- # it's because of a target that scons doesn't know anything about.
- status = 'failed'
- failures_message = "\n".join(["Failed building %s" % bf_to_str(x)
- for x in bf if x is not None])
- else:
- # if bf is None, the build completed successfully.
- status = 'ok'
- failures_message = ''
- return (status, failures_message)
-
- def display_build_status():
- """Display the build status. Called by atexit.
- Here you could do all kinds of complicated things."""
- status, failures_message = build_status()
- if status == 'failed':
- print "FAILED!!!!" # could display alert, ring bell, etc.
- elif status == 'ok':
- print "Build succeeded."
- print failures_message
-
- atexit.register(display_build_status)
- </file>
- </scons_example>
-
- <para>
-
- When this runs, you'll see the appropriate output:
-
- </para>
-
- <scons_output example="gbf2">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q fail=1</scons_output_command>
- </scons_output>
-
- </section>
diff --git a/doc/user/output.xml b/doc/user/output.xml
index e33d0ad..f0d3134 100644
--- a/doc/user/output.xml
+++ b/doc/user/output.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-output"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Controlling Build Output</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -51,12 +72,14 @@
</para>
- <programlisting>
- Help("""
- Type: 'scons program' to build the production program,
- 'scons debug' to build the debug version.
- """)
- </programlisting>
+ <scons_example name="output_ex1">
+ <file name="SConstruct" printme="1">
+Help("""
+Type: 'scons program' to build the production program,
+ 'scons debug' to build the debug version.
+""")
+ </file>
+ </scons_example>
<para>
@@ -75,16 +98,9 @@
</para>
- <screen>
- % <userinput>scons -h</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
-
- Type: 'scons program' to build the production program,
- 'scons debug' to build the debug version.
-
- Use scons -H for help about command-line options.
- </screen>
+ <scons_output example="output_ex1" suffix="1">
+ <scons_output_command>scons -h</scons_output_command>
+ </scons_output>
<para>
@@ -114,14 +130,16 @@
</para>
- <programlisting>
- env = Environment()
+ <scons_example name="output_ex2">
+ <file name="SConstruct" printme="1">
+env = Environment()
- Help("\nType: 'scons program' to build the production program.\n")
+Help("\nType: 'scons program' to build the production program.\n")
- if env['PLATFORM'] == 'win32':
- Help("\nType: 'scons windebug' to build the Windows debug version.\n")
- </programlisting>
+if env['PLATFORM'] == 'win32':
+ Help("\nType: 'scons windebug' to build the Windows debug version.\n")
+ </file>
+ </scons_example>
<para>
@@ -129,17 +147,9 @@
</para>
- <screen>
- C:\><userinput>scons -h</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
-
- Type: 'scons program' to build the production program.
-
- Type: 'scons windebug' to build the Windows debug version.
-
- Use scons -H for help about command-line options.
- </screen>
+ <scons_output example="output_ex2" os="win32" suffix="1">
+ <scons_output_command>scons -h</scons_output_command>
+ </scons_output>
<para>
@@ -147,15 +157,9 @@
</para>
- <screen>
- % <userinput>scons -h</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
-
- Type: 'scons program' to build the production program.
-
- Use scons -H for help about command-line options.
- </screen>
+ <scons_output example="output_ex2" os="posix" suffix="2">
+ <scons_output_command>scons -h</scons_output_command>
+ </scons_output>
<para>
@@ -208,11 +212,16 @@
</para>
- <programlisting>
- env = Environment(CCCOMSTR = "Compiling $TARGET",
- LINKCOMSTR = "Linking $TARGET")
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="output_COMSTR">
+ <file name="SConstruct" printme="1">
+env = Environment(CCCOMSTR = "Compiling $TARGET",
+ LINKCOMSTR = "Linking $TARGET")
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -222,16 +231,16 @@
<!--
- <scons_output example="COMSTR" os="posix">
+ <scons_output example="output_COMSTR" os="posix" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>scons -Q</userinput>
- Compiling foo.o
- Linking foo
+% <userinput>scons -Q</userinput>
+Compiling foo.o
+Linking foo
</screen>
<para>
@@ -275,13 +284,18 @@
</para>
- <programlisting>
- env = Environment()
- if ARGUMENTS.get('VERBOSE') != "1':
- env['CCCOMSTR'] = "Compiling $TARGET"
- env['LINKCOMSTR'] = "Linking $TARGET"
- env.Program('foo.c')
- </programlisting>
+ <scons_example name="output_COMSTR-VERBOSE">
+ <file name="SConstruct" printme="1">
+env = Environment()
+if ARGUMENTS.get('VERBOSE') != "1':
+ env['CCCOMSTR'] = "Compiling $TARGET"
+ env['LINKCOMSTR'] = "Linking $TARGET"
+env.Program('foo.c')
+ </file>
+ <file name="foo.c">
+foo.c
+ </file>
+ </scons_example>
<para>
@@ -299,7 +313,7 @@
<!--
- <scons_output example="COMSTR-VERBOSE" os="posix">
+ <scons_output example="output_COMSTR-VERBOSE" os="posix" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
<scons_output_command>scons -Q -c</scons_output_command>
<scons_output_command>scons -Q VERBOSE=1</scons_output_command>
@@ -308,15 +322,15 @@
-->
<screen>
- % <userinput>scons -Q</userinput>
- Compiling foo.o
- Linking foo
- % <userinput>scons -Q -c</userinput>
- Removed foo.o
- Removed foo
- % <userinput>scons -Q VERBOSE=1</userinput>
- cc -o foo.o -c foo.c
- cc -o foo foo.o
+% <userinput>scons -Q</userinput>
+Compiling foo.o
+Linking foo
+% <userinput>scons -Q -c</userinput>
+Removed foo.o
+Removed foo
+% <userinput>scons -Q VERBOSE=1</userinput>
+cc -o foo.o -c foo.c
+cc -o foo foo.o
</screen>
</section>
@@ -356,11 +370,19 @@
</para>
- <programlisting>
- Progress('Evaluating $TARGET\n')
- Program('f1.c')
- Program('f2.c')
- </programlisting>
+ <scons_example name="output_Progress-TARGET">
+ <file name="SConstruct" printme="1">
+Progress('Evaluating $TARGET\n')
+Program('f1.c')
+Program('f2.c')
+ </file>
+ <file name="f1.c">
+f1.c
+ </file>
+ <file name="f2.c">
+f2.c
+ </file>
+ </scons_example>
<para>
@@ -379,21 +401,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- Evaluating SConstruct
- Evaluating f1.c
- Evaluating f1.o
- cc -o f1.o -c f1.c
- Evaluating f1
- cc -o f1 f1.o
- Evaluating f2.c
- Evaluating f2.o
- cc -o f2.o -c f2.c
- Evaluating f2
- cc -o f2 f2.o
- Evaluating .
- </screen>
+ <scons_output example="output_Progress-TARGET" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -414,13 +424,13 @@
</para>
- <programlisting>
- Progress('$TARGET\r',
- file=open('/dev/tty', 'w'),
- overwrite=True)
- Program('f1.c')
- Program('f2.c')
- </programlisting>
+ <sconstruct>
+Progress('$TARGET\r',
+ file=open('/dev/tty', 'w'),
+ overwrite=True)
+Program('f1.c')
+Program('f2.c')
+ </sconstruct>
<para>
@@ -471,11 +481,11 @@
</para>
- <programlisting>
- Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5)
- Program('f1.c')
- Program('f2.c')
- </programlisting>
+ <sconstruct>
+Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5)
+Program('f1.c')
+Program('f2.c')
+ </sconstruct>
<para>
@@ -510,15 +520,17 @@
</para>
- <programlisting>
- screen = open('/dev/tty', 'w')
- count = 0
- def progress_function(node)
- count += 1
- screen.write('Node %4d: %s\r' % (count, node))
+ <scons_example name="output_Progress-callable">
+ <file name="SConstruct" printme="1">
+screen = open('/dev/tty', 'w')
+count = 0
+def progress_function(node)
+ count += 1
+ screen.write('Node %4d: %s\r' % (count, node))
- Progress(progress_function)
- </programlisting>
+Progress(progress_function)
+ </file>
+ </scons_example>
<para>
@@ -581,15 +593,17 @@
</para>
- <programlisting>
- import atexit
+ <scons_example name="output_gbf1">
+ <file name="SConstruct" printme="1">
+import atexit
- def print_build_failures():
- from SCons.Script import GetBuildFailures
- for bf in GetBuildFailures():
- print "%s failed: %s" % (bf.node, bf.errstr)
- atexit.register(print_build_failures)
- </programlisting>
+def print_build_failures():
+ from SCons.Script import GetBuildFailures
+ for bf in GetBuildFailures():
+ print "%s failed: %s" % (bf.node, bf.errstr)
+atexit.register(print_build_failures)
+ </file>
+ </scons_example>
<para>
@@ -623,54 +637,56 @@
</para>
- <programlisting>
- # Make the build fail if we pass fail=1 on the command line
- if ARGUMENTS.get('fail', 0):
- Command('target', 'source', ['/bin/false'])
-
- def bf_to_str(bf):
- """Convert an element of GetBuildFailures() to a string
- in a useful way."""
- import SCons.Errors
- if bf is None: # unknown targets product None in list
- return '(unknown tgt)'
- elif isinstance(bf, SCons.Errors.StopError):
- return str(bf)
- elif bf.node:
- return str(bf.node) + ': ' + bf.errstr
- elif bf.filename:
- return bf.filename + ': ' + bf.errstr
- return 'unknown failure: ' + bf.errstr
- import atexit
-
- def build_status():
- """Convert the build status to a 2-tuple, (status, msg)."""
- from SCons.Script import GetBuildFailures
- bf = GetBuildFailures()
- if bf:
- # bf is normally a list of build failures; if an element is None,
- # it's because of a target that scons doesn't know anything about.
- status = 'failed'
- failures_message = "\n".join(["Failed building %s" % bf_to_str(x)
- for x in bf if x is not None])
- else:
- # if bf is None, the build completed successfully.
- status = 'ok'
- failures_message = ''
- return (status, failures_message)
-
- def display_build_status():
- """Display the build status. Called by atexit.
- Here you could do all kinds of complicated things."""
- status, failures_message = build_status()
- if status == 'failed':
- print "FAILED!!!!" # could display alert, ring bell, etc.
- elif status == 'ok':
- print "Build succeeded."
- print failures_message
-
- atexit.register(display_build_status)
- </programlisting>
+ <scons_example name="output_gbf2">
+ <file name="SConstruct" printme="1">
+# Make the build fail if we pass fail=1 on the command line
+if ARGUMENTS.get('fail', 0):
+ Command('target', 'source', ['/bin/false'])
+
+def bf_to_str(bf):
+ """Convert an element of GetBuildFailures() to a string
+ in a useful way."""
+ import SCons.Errors
+ if bf is None: # unknown targets product None in list
+ return '(unknown tgt)'
+ elif isinstance(bf, SCons.Errors.StopError):
+ return str(bf)
+ elif bf.node:
+ return str(bf.node) + ': ' + bf.errstr
+ elif bf.filename:
+ return bf.filename + ': ' + bf.errstr
+ return 'unknown failure: ' + bf.errstr
+import atexit
+
+def build_status():
+ """Convert the build status to a 2-tuple, (status, msg)."""
+ from SCons.Script import GetBuildFailures
+ bf = GetBuildFailures()
+ if bf:
+ # bf is normally a list of build failures; if an element is None,
+ # it's because of a target that scons doesn't know anything about.
+ status = 'failed'
+ failures_message = "\n".join(["Failed building %s" % bf_to_str(x)
+ for x in bf if x is not None])
+ else:
+ # if bf is None, the build completed successfully.
+ status = 'ok'
+ failures_message = ''
+ return (status, failures_message)
+
+def display_build_status():
+ """Display the build status. Called by atexit.
+ Here you could do all kinds of complicated things."""
+ status, failures_message = build_status()
+ if status == 'failed':
+ print "FAILED!!!!" # could display alert, ring bell, etc.
+ elif status == 'ok':
+ print "Build succeeded."
+ print failures_message
+
+atexit.register(display_build_status)
+ </file>
+ </scons_example>
<para>
@@ -678,14 +694,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- scons: `.' is up to date.
- Build succeeded.
- % <userinput>scons -Q fail=1</userinput>
- scons: *** [target] Source `source' not found, needed by target `target'.
- FAILED!!!!
- Failed building target: Source `source' not found, needed by target `target'.
- </screen>
+ <scons_output example="output_gbf2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q fail=1</scons_output_command>
+ </scons_output>
</section>
+
+</chapter>
diff --git a/doc/user/parseconfig.in b/doc/user/parseconfig.in
deleted file mode 100644
index 0566fe9..0000000
--- a/doc/user/parseconfig.in
+++ /dev/null
@@ -1,140 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- Configuring the right options to build programs to work with
- libraries--especially shared libraries--that are available
- on POSIX systems can be very complicated.
- To help this situation,
- various utilies with names that end in <filename>config</filename>
- return the command-line options for the GNU Compiler Collection (GCC)
- that are needed to use these libraries;
- for example, the command-line options
- to use a library named <filename>lib</filename>
- would be found by calling a utility named <filename>lib-config</filename>.
-
- </para>
-
- <para>
-
- A more recent convention is that these options
- are available from the generic <filename>pkg-config</filename> program,
- which has common framework, error handling, and the like,
- so that all the package creator has to do is provide the set of strings
- for his particular package.
-
- </para>
-
- <para>
-
- &SCons; construction environments have a &ParseConfig; method
- that executes a <filename>*config</filename> utility
- (either <filename>pkg-config</filename> or a
- more specific utility)
- and configures the appropriate construction variables
- in the environment
- based on the command-line options
- returned by the specified command.
-
- </para>
-
- <scons_example name="ParseConfig1">
- <file name="SConstruct" printme="1">
- env = Environment()
- env['CPPPATH'] = ['/lib/compat']
- env.ParseConfig("pkg-config x11 --cflags --libs")
- print env['CPPPATH']
- </file>
- </scons_example>
-
- <para>
-
- &SCons; will execute the specified command string,
- parse the resultant flags,
- and add the flags to the appropriate environment variables.
-
- </para>
-
- <!--
- This is how we used to generate the screen output below, but
- as of (at least) Ubuntu Karmic, the pkg-config output for x11
- no longer reports back an include directory. Since this is just
- for example anyway, we're just hard-coding the output.
-
- <scons_output example="ParseConfig1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- ['/lib/compat', '/usr/X11/include']
- scons: `.' is up to date.
- </screen>
-
- <para>
-
- In the example above, &SCons; has added the include directory to
- <varname>CPPPATH</varname>.
- (Depending upon what other flags are emitted by the
- <filename>pkg-config</filename> command,
- other variables may have been extended as well.)
-
- </para>
-
- <para>
-
- Note that the options are merged with existing options using
- the &MergeFlags; method,
- so that each option only occurs once in the construction variable:
-
- </para>
-
- <scons_example name="ParseConfig2">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.ParseConfig("pkg-config x11 --cflags --libs")
- env.ParseConfig("pkg-config x11 --cflags --libs")
- print env['CPPPATH']
- </file>
- </scons_example>
-
- <!--
- This is how we used to generate the screen output below, but
- as of (at least) Ubuntu Karmic, the pkg-config output for x11
- no longer reports back an include directory. Since this is just
- for example anyway, we're just hard-coding the output.
-
- <scons_output example="ParseConfig2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
- -->
-
- <screen>
- % <userinput>scons -Q</userinput>
- ['/usr/X11/include']
- scons: `.' is up to date.
- </screen>
diff --git a/doc/user/parseconfig.xml b/doc/user/parseconfig.xml
index 8f767e2..205416b 100644
--- a/doc/user/parseconfig.xml
+++ b/doc/user/parseconfig.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<section id="sect-parseconfig"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Finding Installed Library Information: the &ParseConfig; Function</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -61,12 +82,14 @@
</para>
- <programlisting>
- env = Environment()
- env['CPPPATH'] = ['/lib/compat']
- env.ParseConfig("pkg-config x11 --cflags --libs")
- print env['CPPPATH']
- </programlisting>
+ <scons_example name="parseconfig_ex1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env['CPPPATH'] = ['/lib/compat']
+env.ParseConfig("pkg-config x11 --cflags --libs")
+print env['CPPPATH']
+ </file>
+ </scons_example>
<para>
@@ -82,15 +105,15 @@
no longer reports back an include directory. Since this is just
for example anyway, we're just hard-coding the output.
- <scons_output example="ParseConfig1">
+ <scons_output example="parseconfig_ex1" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>scons -Q</userinput>
- ['/lib/compat', '/usr/X11/include']
- scons: `.' is up to date.
+% <userinput>scons -Q</userinput>
+['/lib/compat', '/usr/X11/include']
+scons: `.' is up to date.
</screen>
<para>
@@ -111,12 +134,14 @@
</para>
- <programlisting>
- env = Environment()
- env.ParseConfig("pkg-config x11 --cflags --libs")
- env.ParseConfig("pkg-config x11 --cflags --libs")
- print env['CPPPATH']
- </programlisting>
+ <scons_example name="parseconfig_ex2">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.ParseConfig("pkg-config x11 --cflags --libs")
+env.ParseConfig("pkg-config x11 --cflags --libs")
+print env['CPPPATH']
+ </file>
+ </scons_example>
<!--
This is how we used to generate the screen output below, but
@@ -124,13 +149,15 @@
no longer reports back an include directory. Since this is just
for example anyway, we're just hard-coding the output.
- <scons_output example="ParseConfig2">
+ <scons_output example="parseconfig_ex2" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>scons -Q</userinput>
- ['/usr/X11/include']
- scons: `.' is up to date.
+% <userinput>scons -Q</userinput>
+['/usr/X11/include']
+scons: `.' is up to date.
</screen>
+
+</section>
diff --git a/doc/user/parseflags.in b/doc/user/parseflags.in
deleted file mode 100644
index 6ec716d..0000000
--- a/doc/user/parseflags.in
+++ /dev/null
@@ -1,176 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- &SCons; has a bewildering array of construction variables
- for different types of options when building programs.
- Sometimes you may not know exactly which variable
- should be used for a particular option.
-
- </para>
-
- <para>
-
- &SCons; construction environments have a &ParseFlags; method
- that takes a set of typical command-line options
- and distrbutes them into the appropriate construction variables.
- Historically, it was created to support the &ParseConfig; method,
- so it focuses on options used by the GNU Compiler Collection (GCC)
- for the C and C++ toolchains.
-
- </para>
-
- <para>
-
- &ParseFlags; returns a dictionary containing the options
- distributed into their respective construction variables.
- Normally, this dictionary would be passed to &MergeFlags;
- to merge the options into a &consenv;,
- but the dictionary can be edited if desired to provide
- additional functionality.
- (Note that if the flags are not going to be edited,
- calling &MergeFlags; with the options directly
- will avoid an additional step.)
-
- </para>
-
- <scons_example name="ParseFlags1">
- <file name="SConstruct" printme="1">
- env = Environment()
- d = env.ParseFlags("-I/opt/include -L/opt/lib -lfoo")
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </file>
- <file name="f1.c">
- int main() { return 0; }
- </file>
- </scons_example>
-
- <scons_output example="ParseFlags1" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that if the options are limited to generic types
- like those above,
- they will be correctly translated for other platform types:
-
- </para>
-
- <scons_output example="ParseFlags1" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Since the assumption is that the flags are used for the GCC toolchain,
- unrecognized flags are placed in &cv-link-CCFLAGS;
- so they will be used for both C and C++ compiles:
-
- </para>
-
- <scons_example name="ParseFlags2">
- <file name="SConstruct" printme="1">
- env = Environment()
- d = env.ParseFlags("-whatever")
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </file>
- <file name="f1.c">
- int main() { return 0; }
- </file>
- </scons_example>
-
- <scons_output example="ParseFlags2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- &ParseFlags; will also accept a (recursive) list of strings as input;
- the list is flattened before the strings are processed:
-
- </para>
-
- <scons_example name="ParseFlags3">
- <file name="SConstruct" printme="1">
- env = Environment()
- d = env.ParseFlags(["-I/opt/include", ["-L/opt/lib", "-lfoo"]])
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </file>
- <file name="f1.c">
- int main() { return 0; }
- </file>
- </scons_example>
-
- <scons_output example="ParseFlags3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If a string begins with a "!" (an exclamation mark, often called a bang),
- the string is passed to the shell for execution.
- The output of the command is then parsed:
-
- </para>
-
- <scons_example name="ParseFlags4">
- <file name="SConstruct" printme="1">
- env = Environment()
- d = env.ParseFlags(["!echo -I/opt/include", "!echo -L/opt/lib", "-lfoo"])
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </file>
- <file name="f1.c">
- int main() { return 0; }
- </file>
- </scons_example>
-
- <scons_output example="ParseFlags4">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- &ParseFlags; is regularly updated for new options;
- consult the man page for details about those currently recognized.
-
- </para>
diff --git a/doc/user/parseflags.xml b/doc/user/parseflags.xml
index 4bf572a..d5012e1 100644
--- a/doc/user/parseflags.xml
+++ b/doc/user/parseflags.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<section id="sect-parseflags"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Separating Compile Arguments into their Variables: the &ParseFlags; Function</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -57,24 +78,24 @@
</para>
- <programlisting>
- env = Environment()
- d = env.ParseFlags("-I/opt/include -L/opt/lib -lfoo")
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- CPPPATH ['/opt/include']
- LIBPATH ['/opt/lib']
- LIBS ['foo']
- cc -o f1.o -c -I/opt/include f1.c
- cc -o f1 f1.o -L/opt/lib -lfoo
- </screen>
+ <scons_example name="parseflags_ex1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+d = env.ParseFlags("-I/opt/include -L/opt/lib -lfoo")
+for k,v in sorted(d.items()):
+ if v:
+ print k, v
+env.MergeFlags(d)
+env.Program('f1.c')
+ </file>
+ <file name="f1.c">
+int main() { return 0; }
+ </file>
+ </scons_example>
+
+ <scons_output example="parseflags_ex1" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -84,15 +105,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- CPPPATH ['/opt/include']
- LIBPATH ['/opt/lib']
- LIBS ['foo']
- cl /Fof1.obj /c f1.c /nologo /I\opt\include
- link /nologo /OUT:f1.exe /LIBPATH:\opt\lib foo.lib f1.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="parseflags_ex1" os="win32" suffix="2">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -102,22 +117,24 @@
</para>
- <programlisting>
- env = Environment()
- d = env.ParseFlags("-whatever")
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- CCFLAGS -whatever
- cc -o f1.o -c -whatever f1.c
- cc -o f1 f1.o
- </screen>
+ <scons_example name="parseflags_ex2">
+ <file name="SConstruct" printme="1">
+env = Environment()
+d = env.ParseFlags("-whatever")
+for k,v in sorted(d.items()):
+ if v:
+ print k, v
+env.MergeFlags(d)
+env.Program('f1.c')
+ </file>
+ <file name="f1.c">
+ int main() { return 0; }
+ </file>
+ </scons_example>
+
+ <scons_output example="parseflags_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -126,24 +143,24 @@
</para>
- <programlisting>
- env = Environment()
- d = env.ParseFlags(["-I/opt/include", ["-L/opt/lib", "-lfoo"]])
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- CPPPATH ['/opt/include']
- LIBPATH ['/opt/lib']
- LIBS ['foo']
- cc -o f1.o -c -I/opt/include f1.c
- cc -o f1 f1.o -L/opt/lib -lfoo
- </screen>
+ <scons_example name="parseflags_ex3">
+ <file name="SConstruct" printme="1">
+env = Environment()
+d = env.ParseFlags(["-I/opt/include", ["-L/opt/lib", "-lfoo"]])
+for k,v in sorted(d.items()):
+ if v:
+ print k, v
+env.MergeFlags(d)
+env.Program('f1.c')
+ </file>
+ <file name="f1.c">
+int main() { return 0; }
+ </file>
+ </scons_example>
+
+ <scons_output example="parseflags_ex3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -153,24 +170,24 @@
</para>
- <programlisting>
- env = Environment()
- d = env.ParseFlags(["!echo -I/opt/include", "!echo -L/opt/lib", "-lfoo"])
- for k,v in sorted(d.items()):
- if v:
- print k, v
- env.MergeFlags(d)
- env.Program('f1.c')
- </programlisting>
-
- <screen>
- % <userinput>scons -Q</userinput>
- CPPPATH ['/opt/include']
- LIBPATH ['/opt/lib']
- LIBS ['foo']
- cc -o f1.o -c -I/opt/include f1.c
- cc -o f1 f1.o -L/opt/lib -lfoo
- </screen>
+ <scons_example name="parseflags_ex4">
+ <file name="SConstruct" printme="1">
+env = Environment()
+d = env.ParseFlags(["!echo -I/opt/include", "!echo -L/opt/lib", "-lfoo"])
+for k,v in sorted(d.items()):
+ if v:
+ print k, v
+env.MergeFlags(d)
+env.Program('f1.c')
+ </file>
+ <file name="f1.c">
+int main() { return 0; }
+ </file>
+ </scons_example>
+
+ <scons_output example="parseflags_ex4" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -178,3 +195,5 @@
consult the man page for details about those currently recognized.
</para>
+
+</section>
diff --git a/doc/user/pdf.xsl b/doc/user/pdf.xsl
new file mode 100644
index 0000000..b536092
--- /dev/null
+++ b/doc/user/pdf.xsl
@@ -0,0 +1,75 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl"/>
+ <xsl:include href="scons_title.xsl"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="paper.type" select="'letter'"></xsl:param>
+<xsl:param name="body.start.indent">0pt</xsl:param>
+<xsl:param name="shade.verbatim" select="1"></xsl:param>
+<xsl:param name="variablelist.term.break.after" select="1"></xsl:param>
+
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<xsl:attribute-set name="variablelist.term.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_list-presentation"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+</xsl:template>
+
+<!-- Prevent our EPUB cover image from getting printed to the PDF -->
+<xsl:template match="mediaobject[@role = 'cover']">
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/user/preface.in b/doc/user/preface.in
deleted file mode 100644
index aa8eaf4..0000000
--- a/doc/user/preface.in
+++ /dev/null
@@ -1,426 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- Thank you for taking the time to read about &SCons;.
- &SCons; is a next-generation
- software construction tool,
- or make tool--that is, a software utility
- for building software (or other files)
- and keeping built software up-to-date
- whenever the underlying input files change.
-
- </para>
-
- <para>
-
- The most distinctive thing about &SCons;
- is that its configuration files are
- actually <emphasis>scripts</emphasis>,
- written in the &Python; programming language.
- This is in contrast to most alternative build tools,
- which typically invent a new language to
- configure the build.
- &SCons; still has a learning curve, of course,
- because you have to know what functions to call
- to set up your build properly,
- but the underlying syntax used should be familiar
- to anyone who has ever looked at a Python script.
-
- </para>
-
- <para>
-
- Paradoxically,
- using Python as the configuration file format
- makes &SCons;
- <emphasis>easier</emphasis>
- for non-programmers to learn
- than the cryptic languages of other build tools,
- which are usually invented by programmers for other programmers.
- This is in no small part due to the
- consistency and readability that are hallmarks of Python.
- It just so happens that making a real, live
- scripting language the basis for the
- configuration files
- makes it a snap for more accomplished programmers
- to do more complicated things with builds,
- as necessary.
-
- </para>
-
- <!--
-
- <section>
- <title>Why &SCons;?</title>
-
- <para>
-
- &SCons; is a response to a perennial problem:
- building software is harder than it should be.
- In a nutshell: the old, reliable model of the
- venerable and ubiquitous &Make; program
- has had a hard time keeping up with
- how complicated building software has become.
- The fact that &Make; has kept up as well as it has is impressive,
- and a testament to how the simplicity.
- But anyone who has wrestled with &Automake; and &Autoconf;
- to try to guarantee that a bit of software
- will build correctly on multiple platforms
- can tell you that it takes a lot of work to get right.
-
- </para>
-
- </section>
-
- -->
-
- <section>
- <title>&SCons; Principles</title>
-
- <para>
-
- There are a few overriding principles
- we try to live up to in designing and implementing &SCons;:
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>Correctness</term>
-
- <listitem>
- <para>
-
- First and foremost,
- by default, &SCons; guarantees a correct build
- even if it means sacrificing performance a little.
- We strive to guarantee the build is correct
- regardless of how the software being built is structured,
- how it may have been written,
- or how unusual the tools are that build it.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Performance</term>
-
- <listitem>
- <para>
-
- Given that the build is correct,
- we try to make &SCons; build software
- as quickly as possible.
- In particular, wherever we may have needed to slow
- down the default &SCons; behavior to guarantee a correct build,
- we also try to make it easy to speed up &SCons;
- through optimization options that let you trade off
- guaranteed correctness in all end cases for
- a speedier build in the usual cases.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Convenience</term>
-
- <listitem>
- <para>
-
- &SCons; tries to do as much for you out of the box as reasonable,
- including detecting the right tools on your system
- and using them correctly to build the software.
-
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- <para>
-
- In a nutshell, we try hard to make &SCons; just
- "do the right thing" and build software correctly,
- with a minimum of hassles.
-
- </para>
-
- </section>
-
- <!--
-
- <section>
- <title>History</title>
-
- <para>
-
- &SCons; originated with a design
- that was submitted to the Software Carpentry
- design competition in 2000.
-
- </para>
-
- <para>
-
- &SCons; is the direct descendant
- of a Perl utility called &Cons;.
- &Cons; in turn based some of its ideas on &Jam;,
- a build tool from Perforce Systems.
-
- </para>
-
- <para>
-
- XXX history of SCons
-
- </para>
-
- </section>
-
- -->
-
- <!--
-
- <section>
- <title>Conventions</title>
-
- <para>
-
- XXX conventions used in this manual
-
- </para>
-
- </section>
-
- -->
-
- <section>
- <title>A Caveat About This Guide's Completeness</title>
-
- <para>
-
- One word of warning as you read through this Guide:
- Like too much Open Source software out there,
- the &SCons; documentation isn't always
- kept up-to-date with the available features.
- In other words,
- there's a lot that &SCons; can do that
- isn't yet covered in this User's Guide.
- (Come to think of it,
- that also describes a lot of proprietary software, doesn't it?)
-
- </para>
-
- <para>
-
- Although this User's Guide isn't as complete as we'd like it to be,
- our development process does emphasize
- making sure that the &SCons; man page is kept up-to-date
- with new features.
- So if you're trying to figure out how to do something
- that &SCons; supports
- but can't find enough (or any) information here,
- it would be worth your while to look
- at the man page to see if the information is covered there.
- And if you do,
- maybe you'd even consider contributing
- a section to the User's Guide
- so the next person looking for
- that information won't have to
- go through the same thing...?
-
- </para>
-
- </section>
-
- <section>
- <title>Acknowledgements</title>
-
- <para>
-
- &SCons; would not exist without a lot of help
- from a lot of people,
- many of whom may not even be aware
- that they helped or served as inspiration.
- So in no particular order,
- and at the risk of leaving out someone:
-
- </para>
-
- <para>
-
- First and foremost,
- &SCons; owes a tremendous debt to Bob Sidebotham,
- the original author of the classic Perl-based &Cons; tool
- which Bob first released to the world back around 1996.
- Bob's work on Cons classic provided the underlying architecture
- and model of specifying a build configuration
- using a real scripting language.
- My real-world experience working on Cons
- informed many of the design decisions in SCons,
- including the improved parallel build support,
- making Builder objects easily definable by users,
- and separating the build engine from the wrapping interface.
-
- </para>
-
- <para>
-
- Greg Wilson was instrumental in getting
- &SCons; started as a real project
- when he initiated the Software Carpentry design
- competition in February 2000.
- Without that nudge,
- marrying the advantages of the Cons classic
- architecture with the readability of Python
- might have just stayed no more than a nice idea.
-
- </para>
-
- <para>
-
- The entire &SCons; team have been
- absolutely wonderful to work with,
- and &SCons; would be nowhere near as useful a
- tool without the energy, enthusiasm
- and time people have contributed over the past few years.
- The "core team"
- of Chad Austin, Anthony Roach,
- Bill Deegan, Charles Crain, Steve Leblanc, Greg Noel,
- Gary Oberbrunner, Greg Spencer and Christoph Wiedemann
- have been great about reviewing my (and other) changes
- and catching problems before they get in the code base.
- Of particular technical note:
- Anthony's outstanding and innovative work on the tasking engine
- has given &SCons; a vastly superior parallel build model;
- Charles has been the master of the crucial Node infrastructure;
- Christoph's work on the Configure infrastructure
- has added crucial Autoconf-like functionality;
- and Greg has provided excellent support
- for Microsoft Visual Studio.
-
- </para>
-
- <para>
-
- Special thanks to David Snopek for contributing
- his underlying "Autoscons" code that formed
- the basis of Christoph's work with the Configure functionality.
- David was extremely generous in making
- this code available to &SCons;,
- given that he initially released it under the GPL
- and &SCons; is released under a less-restrictive MIT-style license.
-
- </para>
-
- <!--
-
- <para>
-
- &SCons; has received contributions
- from many other people, of course:
- Matt Balvin (extending long command-line support on Windows),
- Allen Bierbaum (extensions and fixes to Options),
- Steve Christensen (help text sorting and function action signature fixes),
- Michael Cook (avoiding losing signal bits from executed commands),
- Derrick 'dman' Hudson (),
- Alex Jacques (work on the Windows scons.bat file),
- Stephen Kennedy (performance enhancements),
- Lachlan O'Dea (SharedObject() support for masm
- and normalized paths for the WhereIs() function),
- Damyan Pepper (keeping output like Make),
- Jeff Petkau (significant fixes for CacheDir and other areas),
- Stefan Reichor (Ghostscript support),
- Zed Shaw (Append() and Replace() environment methods),
- Terrel Shumway (build and test fixes, as well as the SCons Wiki)
- and
- sam th (dynamic checks for utilities).
-
- </para>
-
- -->
-
- <para>
-
- Thanks to Peter Miller
- for his splendid change management system, &Aegis;,
- which has provided the &SCons; project
- with a robust development methodology from day one,
- and which showed me how you could
- integrate incremental regression tests into
- a practical development cycle
- (years before eXtreme Programming arrived on the scene).
-
- </para>
-
- <para>
-
- And last, thanks to Guido van Rossum
- for his elegant scripting language,
- which is the basis not only for the &SCons; implementation,
- but for the interface itself.
-
- </para>
-
- </section>
-
- <section>
- <title>Contact</title>
-
- <para>
-
- The best way to contact people involved with SCons,
- including the author,
- is through the SCons mailing lists.
-
- </para>
-
- <para>
-
- If you want to ask general questions about how to use &SCons;
- send email to &scons-users;.
-
- </para>
-
- <para>
-
- If you want to contact the &SCons; development community directly,
- send email to &scons-devel;.
-
- </para>
-
- <para>
-
- If you want to receive announcements about &SCons;,
- join the low-volume &scons-announce; mailing list.
-
- </para>
-
- </section>
diff --git a/doc/user/preface.xml b/doc/user/preface.xml
index aa8eaf4..3937e57 100644
--- a/doc/user/preface.xml
+++ b/doc/user/preface.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<preface id="chap-preface"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Preface</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -424,3 +445,5 @@
</para>
</section>
+
+</preface>
diff --git a/doc/user/python.in b/doc/user/python.in
deleted file mode 100644
index 90a20d0..0000000
--- a/doc/user/python.in
+++ /dev/null
@@ -1,154 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <!--
-
- <section>
- <title>Python Overview</title>
-
- <para>
-
- This section will provide a brief overview of
- the Python programming language.
- Skip this section if you are already familiar with Python
- (or you're really intent on diving into &SCons;
- and just picking up things as you go).
-
- </para>
-
- <para>
-
- Python has a lot of good
- documentation freely available on-line
- to help you get started.
- The standard tutorial is available at XXX.
-
-
- </para>
-
- <para>
-
- Python is very easy to pick up.
-
- </para>
-
- <para>
-
- Python variables must be assigned to before they can be referenced.
-
- </para>
-
- <para>
-
- Assignment is like most programming languages:
-
- x = 1 + 2
- z = 3 * x
-
- </para>
-
- <para>
-
- Function calls look like most language function calls:
-
- a = f(g)
-
- </para>
-
- <para>
-
- Define functions like so:
-
- def func(arg1, arg2):
- return arg1 * arg 2
-
- The number of parameters
-
- </para>
-
- <para>
-
- Strings can be enclosed in single quotes or double quotes,
- backslashes are used to escape characters,
- triple-quote syntax lets you include quotes and newlines,
- raw strings begin with 'r'.
-
- </para>
-
- <para>
-
- Lists are enclosed in square brackets,
- list items are separated by commas.
- List references use square brackets and integer index values,
- slice notation lets you select, delete or replace a range.
-
- </para>
-
- <para>
-
- Dictionaries (hashes) are enclosed in curly brackets,
- : separates keys from values,
- , separates items.
- Dictionary values are referenced using square brackets.
-
- </para>
-
- <para>
-
- Access class attributes (including methods) using a '.'.
-
- </para>
-
- <para>
-
- if: statements look like
-
- elif: statements look like
-
- else: statements look like
-
- </para>
-
- <para>
-
- for: statements look like
-
- while: statements look like
-
- break statements look like
-
- continue statements look like
-
- </para>
-
- <para>
-
- pass
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/python.xml b/doc/user/python.xml
index 90a20d0..67b7671 100644
--- a/doc/user/python.xml
+++ b/doc/user/python.xml
@@ -1,6 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+
+]>
+
+<appendix id="app-python"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Python overview</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -23,11 +45,6 @@
-->
- <!--
-
- <section>
- <title>Python Overview</title>
-
<para>
This section will provide a brief overview of
@@ -149,6 +166,4 @@
</para>
- </section>
-
- -->
+</appendix>
diff --git a/doc/user/repositories.in b/doc/user/repositories.in
deleted file mode 100644
index 28d1233..0000000
--- a/doc/user/repositories.in
+++ /dev/null
@@ -1,641 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- Often, a software project will have
- one or more central repositories,
- directory trees that contain
- source code, or derived files, or both.
- You can eliminate additional unnecessary
- rebuilds of files by having &SCons;
- use files from one or more code repositories
- to build files in your local build tree.
-
- </para>
-
- <section>
- <title>The &Repository; Method</title>
-
- <!--
-
- The repository directories specified may contain source files, derived files
- (objects, libraries and executables), or both. If there is no local file
- (source or derived) under the directory in which Cons is executed, then the
- first copy of a same-named file found under a repository directory will be
- used to build any local derived files.
-
- -->
-
- <para>
-
- It's often useful to allow multiple programmers working
- on a project to build software from
- source files and/or derived files that
- are stored in a centrally-accessible repository,
- a directory copy of the source code tree.
- (Note that this is not the sort of repository
- maintained by a source code management system
- like BitKeeper, CVS, or Subversion.)
- <!--
- For information about using &SCons;
- with these systems, see the section,
- "Fetching Files From Source Code Management Systems,"
- below.)
- -->
- You use the &Repository; method
- to tell &SCons; to search one or more
- central code repositories (in order)
- for any source files and derived files
- that are not present in the local build tree:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.Program('hello.c')
- Repository('__ROOT__/usr/repository1', '__ROOT__/usr/repository2')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Multiple calls to the &Repository; method
- will simply add repositories to the global list
- that &SCons; maintains,
- with the exception that &SCons; will automatically eliminate
- the current directory and any non-existent
- directories from the list.
-
- </para>
-
- </section>
-
- <section>
- <title>Finding source files in repositories</title>
-
- <para>
-
- The above example
- specifies that &SCons;
- will first search for files under
- the <filename>/usr/repository1</filename> tree
- and next under the <filename>/usr/repository2</filename> tree.
- &SCons; expects that any files it searches
- for will be found in the same position
- relative to the top-level directory.
- In the above example, if the &hello_c; file is not
- found in the local build tree,
- &SCons; will search first for
- a <filename>/usr/repository1/hello.c</filename> file
- and then for a <filename>/usr/repository2/hello.c</filename> file
- to use in its place.
-
- </para>
-
- <para>
-
- So given the &SConstruct; file above,
- if the &hello_c; file exists in the local
- build directory,
- &SCons; will rebuild the &hello; program
- as normal:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- If, however, there is no local &hello_c; file,
- but one exists in <filename>/usr/repository1</filename>,
- &SCons; will recompile the &hello; program
- from the source file it finds in the repository:
-
- </para>
-
- <scons_example name="ex2">
- <file name="SConstruct">
- env = Environment()
- env.Program('hello.c')
- Repository('__ROOT__/usr/repository1', '__ROOT__/usr/repository2')
- </file>
- <file name="__ROOT__/usr/repository1/hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <scons_output example="ex2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- And similarly, if there is no local &hello_c; file
- and no <filename>/usr/repository1/hello.c</filename>,
- but one exists in <filename>/usr/repository2</filename>:
-
- </para>
-
- <scons_example name="ex3">
- <file name="SConstruct">
- env = Environment()
- env.Program('hello.c')
- Repository('__ROOT__/usr/repository1', '__ROOT__/usr/repository2')
- </file>
- <file name="__ROOT__/usr/repository2/hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <scons_output example="ex3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- </para>
-
- </section>
-
- <section>
- <title>Finding <literal>#include</literal> files in repositories</title>
-
- <para>
-
- We've already seen that SCons will scan the contents of
- a source file for <literal>#include</literal> file names
- and realize that targets built from that source file
- also depend on the <literal>#include</literal> file(s).
- For each directory in the &cv-link-CPPPATH; list,
- &SCons; will actually search the corresponding directories
- in any repository trees and establish the
- correct dependencies on any
- <literal>#include</literal> files that it finds
- in repository directory.
-
- </para>
-
- <para>
-
- Unless the C compiler also knows about these directories
- in the repository trees, though,
- it will be unable to find the <literal>#include</literal> files.
- If, for example, the &hello_c; file in
- our previous example includes the &hello_h;
- in its current directory,
- and the &hello_h; only exists in the repository:
-
- </para>
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- hello.c:1: hello.h: No such file or directory
- </screen>
-
- <para>
-
- In order to inform the C compiler about the repositories,
- &SCons; will add appropriate
- <literal>-I</literal> flags to the compilation commands
- for each directory in the &cv-CPPPATH; list.
- So if we add the current directory to the
- construction environment &cv-CPPPATH; like so:
-
- </para>
-
- <scons_example name="CPPPATH">
- <file name="SConstruct" printme="1">
- env = Environment(CPPPATH = ['.'])
- env.Program('hello.c')
- Repository('__ROOT__/usr/repository1')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Then re-executing &SCons; yields:
-
- </para>
-
- <scons_output example="CPPPATH">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- The order of the <literal>-I</literal> options replicates,
- for the C preprocessor,
- the same repository-directory search path
- that &SCons; uses for its own dependency analysis.
- If there are multiple repositories and multiple &cv-CPPPATH;
- directories, &SCons; will add the repository directories
- to the beginning of each &cv-CPPPATH; directory,
- rapidly multiplying the number of <literal>-I</literal> flags.
- If, for example, the &cv-CPPPATH; contains three directories
- (and shorter repository path names!):
-
- </para>
-
- <scons_example name="CPPPATH3">
- <file name="SConstruct" printme="1">
- env = Environment(CPPPATH = ['dir1', 'dir2', 'dir3'])
- env.Program('hello.c')
- Repository('__ROOT__/r1', '__ROOT__/r2')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Then we'll end up with nine <literal>-I</literal> options
- on the command line,
- three (for each of the &cv-CPPPATH; directories)
- times three (for the local directory plus the two repositories):
-
- </para>
-
- <scons_output example="CPPPATH3">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
-<!--
-
-Cons classic did the following, does SCons?
-
-In order to shorten the command lines as much as possible, Cons will
-remove C<-I> flags for any directories, locally or in the repositories,
-which do not actually exist. (Note that the C<-I> flags are not included
-in the MD5 signature calculation for the target file, so the target will
-not be recompiled if the compilation command changes due to a directory
-coming into existence.)
-
--->
-
- <section>
- <title>Limitations on <literal>#include</literal> files in repositories</title>
-
- <para>
-
- &SCons; relies on the C compiler's
- <literal>-I</literal> options to control the order in which
- the preprocessor will search the repository directories
- for <literal>#include</literal> files.
- This causes a problem, however, with how the C preprocessor
- handles <literal>#include</literal> lines with
- the file name included in double-quotes.
-
- </para>
-
- <para>
-
- As we've seen,
- &SCons; will compile the &hello_c; file from
- the repository if it doesn't exist in
- the local directory.
- If, however, the &hello_c; file in the repository contains
- a <literal>#include</literal> line with the file name in
- double quotes:
-
- </para>
-
- <programlisting>
- #include "hello.h"
- int
- main(int argc, char *argv[])
- {
- printf(HELLO_MESSAGE);
- return (0);
- }
- </programlisting>
-
- <para>
-
- Then the C preprocessor will <emphasis>always</emphasis>
- use a &hello_h; file from the repository directory first,
- even if there is a &hello_h; file in the local directory,
- despite the fact that the command line specifies
- <literal>-I</literal> as the first option:
-
- </para>
-
- <scons_example name="quote1">
- <file name="SConstruct">
- env = Environment(CPPPATH = ['.'])
- env.Program('hello.c')
- Repository('__ROOT__/usr/repository1')
- </file>
- <file name="__ROOT__/usr/repository1/hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <scons_output example="quote1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- This behavior of the C preprocessor--always search
- for a <literal>#include</literal> file in double-quotes
- first in the same directory as the source file,
- and only then search the <literal>-I</literal>--can
- not, in general, be changed.
- In other words, it's a limitation
- that must be lived with if you want to use
- code repositories in this way.
- There are three ways you can possibly
- work around this C preprocessor behavior:
-
- </para>
-
- <orderedlist>
-
- <listitem>
- <para>
-
- Some modern versions of C compilers do have an option
- to disable or control this behavior.
- If so, add that option to &cv-link-CFLAGS;
- (or &cv-link-CXXFLAGS; or both) in your construction environment(s).
- Make sure the option is used for all construction
- environments that use C preprocessing!
-
- </para>
- </listitem>
-
- <listitem>
- <para>
-
- Change all occurrences of <literal>#include "file.h"</literal>
- to <literal>#include &amp;lt;file.h&amp;gt;</literal>.
- Use of <literal>#include</literal> with angle brackets
- does not have the same behavior--the <literal>-I</literal>
- directories are searched first
- for <literal>#include</literal> files--which
- gives &SCons; direct control over the list of
- directories the C preprocessor will search.
-
- </para>
- </listitem>
-
- <listitem>
- <para>
-
- Require that everyone working with compilation from
- repositories check out and work on entire directories of files,
- not individual files.
- (If you use local wrapper scripts around
- your source code control system's command,
- you could add logic to enforce this restriction there.
-
- </para>
- </listitem>
-
- </orderedlist>
-
- </section>
-
- </section>
-
- <section>
- <title>Finding the &SConstruct; file in repositories</title>
-
- <para>
-
- &SCons; will also search in repositories
- for the &SConstruct; file and any specified &SConscript; files.
- This poses a problem, though: how can &SCons; search a
- repository tree for an &SConstruct; file
- if the &SConstruct; file itself contains the information
- about the pathname of the repository?
- To solve this problem, &SCons; allows you
- to specify repository directories
- on the command line using the <literal>-Y</literal> option:
-
- </para>
-
- <screen>
- % <userinput>scons -Q -Y /usr/repository1 -Y /usr/repository2</userinput>
- </screen>
-
- <para>
-
- When looking for source or derived files,
- &SCons; will first search the repositories
- specified on the command line,
- and then search the repositories
- specified in the &SConstruct; or &SConscript; files.
-
- </para>
-
- </section>
-
- <section>
- <title>Finding derived files in repositories</title>
-
- <para>
-
- If a repository contains not only source files,
- but also derived files (such as object files,
- libraries, or executables), &SCons; will perform
- its normal MD5 signature calculation to
- decide if a derived file in a repository is up-to-date,
- or the derived file must be rebuilt in the local build directory.
- For the &SCons; signature calculation to work correctly,
- a repository tree must contain the &sconsign; files
- that &SCons; uses to keep track of signature information.
-
- </para>
-
- <para>
-
- Usually, this would be done by a build integrator
- who would run &SCons; in the repository
- to create all of its derived files and &sconsign; files,
- or who would run &SCons; in a separate build directory
- and copy the resulting tree to the desired repository:
-
- </para>
-
- <scons_example name="ex4">
- <file name="SConstruct">
- env = Environment()
- env.Program(['hello.c', 'file1.c', 'file2.c'])
- Repository('/usr/repository1', '/usr/repository2')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="file1.c">
- int f1() { printf("file1\n"); }
- </file>
- <file name="file2.c">
- int f2() { printf("file2.c\n"); }
- </file>
- </scons_example>
-
- <scons_output example="ex4">
- <scons_output_command>cd /usr/repository1</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- (Note that this is safe even if the &SConstruct; file
- lists <filename>/usr/repository1</filename> as a repository,
- because &SCons; will remove the current build directory
- from its repository list for that invocation.)
-
- </para>
-
- <para>
-
- Now, with the repository populated,
- we only need to create the one local source file
- we're interested in working with at the moment,
- and use the <literal>-Y</literal> option to
- tell &SCons; to fetch any other files it needs
- from the repository:
-
- </para>
-
- <!--
- <scons_output example="ex4">
- <scons_output_command>cd $HOME/build</scons_output_command>
- <scons_output_command>edit hello.c</scons_output_command>
- <scons_output_command>scons -Q -Y __ROOT__/usr/repository1</scons_output_command>
- </scons_output>
- -->
- <screen>
- % <userinput>cd $HOME/build</userinput>
- % <userinput>edit hello.c</userinput>
- % <userinput>scons -Q -Y /usr/repository1</userinput>
- cc -c -o hello.o hello.c
- cc -o hello hello.o /usr/repository1/file1.o /usr/repository1/file2.o
- </screen>
-
- <para>
-
- Notice that &SCons; realizes that it does not need to
- rebuild local copies <filename>file1.o</filename> and <filename>file2.o</filename> files,
- but instead uses the already-compiled files
- from the repository.
-
- </para>
-
- </section>
-
- <section>
- <title>Guaranteeing local copies of files</title>
-
- <para>
-
- If the repository tree contains the complete results of a build,
- and we try to build from the repository
- without any files in our local tree,
- something moderately surprising happens:
-
- </para>
-
- <screen>
- % <userinput>mkdir $HOME/build2</userinput>
- % <userinput>cd $HOME/build2</userinput>
- % <userinput>scons -Q -Y /usr/all/repository hello</userinput>
- scons: `hello' is up-to-date.
- </screen>
-
- <para>
-
- Why does &SCons; say that the &hello; program
- is up-to-date when there is no &hello; program
- in the local build directory?
- Because the repository (not the local directory)
- contains the up-to-date &hello; program,
- and &SCons; correctly determines that nothing
- needs to be done to rebuild that
- up-to-date copy of the file.
-
- </para>
-
- <para>
-
- There are, however, many times when you want to ensure that a
- local copy of a file always exists.
- A packaging or testing script, for example,
- may assume that certain generated files exist locally.
- To tell &SCons; to make a copy of any up-to-date repository
- file in the local build directory,
- use the &Local; function:
-
- </para>
-
- <scons_example name="ex5">
- <file name="SConstruct" printme="1">
- env = Environment()
- hello = env.Program('hello.c')
- Local(hello)
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- If we then run the same command,
- &SCons; will make a local copy of the program
- from the repository copy,
- and tell you that it is doing so:
-
- </para>
-
- <screen>
- % <userinput>scons -Y /usr/all/repository hello</userinput>
- Local copy of hello from /usr/all/repository/hello
- scons: `hello' is up-to-date.
- </screen>
-
- <para>
-
- (Notice that, because the act of making the local copy
- is not considered a "build" of the &hello; file,
- &SCons; still reports that it is up-to-date.)
-
- </para>
-
- </section>
diff --git a/doc/user/repositories.xml b/doc/user/repositories.xml
index 0d90d2e..c0ca5ee 100644
--- a/doc/user/repositories.xml
+++ b/doc/user/repositories.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-repositories"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Building From Code Repositories</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -73,11 +94,16 @@
</para>
- <programlisting>
- env = Environment()
- env.Program('hello.c')
- Repository('/usr/repository1', '/usr/repository2')
- </programlisting>
+ <scons_example name="repositories_ex1">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.Program('hello.c')
+Repository('__ROOT__/usr/repository1', '__ROOT__/usr/repository2')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -124,11 +150,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="repositories_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -139,13 +163,20 @@
</para>
-
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c /usr/repository1/hello.c
- cc -o hello hello.o
- </screen>
+ <scons_example name="repositories_ex2">
+ <file name="SConstruct">
+env = Environment()
+env.Program('hello.c')
+Repository('__ROOT__/usr/repository1', '__ROOT__/usr/repository2')
+ </file>
+ <file name="__ROOT__/usr/repository1/hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
+
+ <scons_output example="repositories_ex2" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -155,13 +186,20 @@
</para>
-
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c /usr/repository2/hello.c
- cc -o hello hello.o
- </screen>
+ <scons_example name="repositories_ex3">
+ <file name="SConstruct">
+env = Environment()
+env.Program('hello.c')
+Repository('__ROOT__/usr/repository1', '__ROOT__/usr/repository2')
+ </file>
+ <file name="__ROOT__/usr/repository2/hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
+
+ <scons_output example="repositories_ex3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -200,9 +238,9 @@
</para>
<screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c hello.c
- hello.c:1: hello.h: No such file or directory
+% <userinput>scons -Q</userinput>
+cc -o hello.o -c hello.c
+hello.c:1: hello.h: No such file or directory
</screen>
<para>
@@ -216,11 +254,16 @@
</para>
- <programlisting>
- env = Environment(CPPPATH = ['.'])
- env.Program('hello.c')
- Repository('/usr/repository1')
- </programlisting>
+ <scons_example name="repositories_CPPPATH">
+ <file name="SConstruct" printme="1">
+env = Environment(CPPPATH = ['.'])
+env.Program('hello.c')
+Repository('__ROOT__/usr/repository1')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -228,11 +271,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -I. -I/usr/repository1 hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="repositories_CPPPATH" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -249,11 +290,16 @@
</para>
- <programlisting>
- env = Environment(CPPPATH = ['dir1', 'dir2', 'dir3'])
- env.Program('hello.c')
- Repository('/r1', '/r2')
- </programlisting>
+ <scons_example name="repositories_CPPPATH3">
+ <file name="SConstruct" printme="1">
+env = Environment(CPPPATH = ['dir1', 'dir2', 'dir3'])
+env.Program('hello.c')
+Repository('__ROOT__/r1', '__ROOT__/r2')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -264,11 +310,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -Idir1 -I/r1/dir1 -I/r2/dir1 -Idir2 -I/r1/dir2 -I/r2/dir2 -Idir3 -I/r1/dir3 -I/r2/dir3 hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="repositories_CPPPATH3" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<!--
@@ -311,13 +355,13 @@ coming into existence.)
</para>
<programlisting>
- #include "hello.h"
- int
- main(int argc, char *argv[])
- {
- printf(HELLO_MESSAGE);
- return (0);
- }
+#include "hello.h"
+int
+main(int argc, char *argv[])
+{
+ printf(HELLO_MESSAGE);
+ return (0);
+}
</programlisting>
<para>
@@ -330,13 +374,20 @@ coming into existence.)
</para>
-
-
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o hello.o -c -I. -I/usr/repository1 /usr/repository1/hello.c
- cc -o hello hello.o
- </screen>
+ <scons_example name="repositories_quote1">
+ <file name="SConstruct">
+env = Environment(CPPPATH = ['.'])
+env.Program('hello.c')
+Repository('__ROOT__/usr/repository1')
+ </file>
+ <file name="__ROOT__/usr/repository1/hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
+
+ <scons_output example="repositories_quote1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -372,7 +423,7 @@ coming into existence.)
<para>
Change all occurrences of <literal>#include "file.h"</literal>
- to <literal>#include &lt;file.h&gt;</literal>.
+ to <literal>#include &amp;lt;file.h&amp;gt;</literal>.
Use of <literal>#include</literal> with angle brackets
does not have the same behavior--the <literal>-I</literal>
directories are searched first
@@ -420,7 +471,7 @@ coming into existence.)
</para>
<screen>
- % <userinput>scons -Q -Y /usr/repository1 -Y /usr/repository2</userinput>
+% <userinput>scons -Q -Y /usr/repository1 -Y /usr/repository2</userinput>
</screen>
<para>
@@ -462,16 +513,27 @@ coming into existence.)
</para>
-
-
- <screen>
- % <userinput>cd /usr/repository1</userinput>
- % <userinput>scons -Q</userinput>
- cc -o file1.o -c file1.c
- cc -o file2.o -c file2.c
- cc -o hello.o -c hello.c
- cc -o hello hello.o file1.o file2.o
- </screen>
+ <scons_example name="repositories_ex4">
+ <file name="SConstruct">
+env = Environment()
+env.Program(['hello.c', 'file1.c', 'file2.c'])
+Repository('/usr/repository1', '/usr/repository2')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="file1.c">
+int f1() { printf("file1\n"); }
+ </file>
+ <file name="file2.c">
+int f2() { printf("file2.c\n"); }
+ </file>
+ </scons_example>
+
+ <scons_output example="repositories_ex4" suffix="1">
+ <scons_output_command>cd /usr/repository1</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -494,18 +556,18 @@ coming into existence.)
</para>
<!--
- <scons_output example="ex4">
+ <scons_output example="repositories_ex4" suffix="2">
<scons_output_command>cd $HOME/build</scons_output_command>
<scons_output_command>edit hello.c</scons_output_command>
<scons_output_command>scons -Q -Y __ROOT__/usr/repository1</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>cd $HOME/build</userinput>
- % <userinput>edit hello.c</userinput>
- % <userinput>scons -Q -Y /usr/repository1</userinput>
- cc -c -o hello.o hello.c
- cc -o hello hello.o /usr/repository1/file1.o /usr/repository1/file2.o
+% <userinput>cd $HOME/build</userinput>
+% <userinput>edit hello.c</userinput>
+% <userinput>scons -Q -Y /usr/repository1</userinput>
+cc -c -o hello.o hello.c
+cc -o hello hello.o /usr/repository1/file1.o /usr/repository1/file2.o
</screen>
<para>
@@ -532,10 +594,10 @@ coming into existence.)
</para>
<screen>
- % <userinput>mkdir $HOME/build2</userinput>
- % <userinput>cd $HOME/build2</userinput>
- % <userinput>scons -Q -Y /usr/all/repository hello</userinput>
- scons: `hello' is up-to-date.
+% <userinput>mkdir $HOME/build2</userinput>
+% <userinput>cd $HOME/build2</userinput>
+% <userinput>scons -Q -Y /usr/all/repository hello</userinput>
+scons: `hello' is up-to-date.
</screen>
<para>
@@ -563,11 +625,16 @@ coming into existence.)
</para>
- <programlisting>
- env = Environment()
- hello = env.Program('hello.c')
- Local(hello)
- </programlisting>
+ <scons_example name="repositories_ex5">
+ <file name="SConstruct" printme="1">
+env = Environment()
+hello = env.Program('hello.c')
+Local(hello)
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -579,9 +646,9 @@ coming into existence.)
</para>
<screen>
- % <userinput>scons -Y /usr/all/repository hello</userinput>
- Local copy of hello from /usr/all/repository/hello
- scons: `hello' is up-to-date.
+% <userinput>scons -Y /usr/all/repository hello</userinput>
+Local copy of hello from /usr/all/repository/hello
+scons: `hello' is up-to-date.
</screen>
<para>
@@ -593,3 +660,5 @@ coming into existence.)
</para>
</section>
+
+</chapter>
diff --git a/doc/user/run.in b/doc/user/run.in
deleted file mode 100644
index 8a5075b..0000000
--- a/doc/user/run.in
+++ /dev/null
@@ -1,375 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 Invoking Cons
-
-The C<cons> command is usually invoked from the root of the build tree. A
-F<Construct> file must exist in that directory. If the C<-f> argument is
-used, then an alternate F<Construct> file may be used (and, possibly, an
-alternate root, since C<cons> will cd to F<Construct> file's containing
-directory).
-
-If C<cons> is invoked from a child of the root of the build tree with
-the C<-t> argument, it will walk up the directory hierarchy looking for a
-F<Construct> file. (An alternate name may still be specified with C<-f>.)
-The targets supplied on the command line will be modified to be relative
-to the discovered F<Construct> file. For example, from a directory
-containing a top-level F<Construct> file, the following invocation:
-
- % cd libfoo/subdir
- % cons -t target
-
-is exactly equivalent to:
-
- % cons libfoo/subdir/target
-
-If there are any C<Default> targets specified in the directory hierarchy's
-F<Construct> or F<Conscript> files, only the default targets at or below
-the directory from which C<cons -t> was invoked will be built.
-
-The command is invoked as follows:
-
- cons <arguments> , <construct-args>
-
-where I<arguments> can be any of the following, in any order:
-
-=over 10
-
-=item I<target>
-
-Build the specified target. If I<target> is a directory, then recursively
-build everything within that directory.
-
-=item I<+pattern>
-
-Limit the F<Conscript> files considered to just those that match I<pattern>,
-which is a Perl regular expression. Multiple C<+> arguments are accepted.
-
-=item I<name>=<val>
-
-Sets I<name> to value I<val> in the C<ARG> hash passed to the top-level
-F<Construct> file.
-
-=item C<-cc>
-
-Show command that would have been executed, when retrieving from cache. No
-indication that the file has been retrieved is given; this is useful for
-generating build logs that can be compared with real build logs.
-
-=item C<-cd>
-
-Disable all caching. Do not retrieve from cache nor flush to cache.
-
-=item C<-cr>
-
-Build dependencies in random order. This is useful when building multiple
-similar trees with caching enabled.
-
-=item C<-cs>
-
-Synchronize existing build targets that are found to be up-to-date with
-cache. This is useful if caching has been disabled with -cc or just recently
-enabled with UseCache.
-
-=item C<-d>
-
-Enable dependency debugging.
-
-=item C<-f> <file>
-
-Use the specified file instead of F<Construct> (but first change to
-containing directory of I<file>).
-
-=item C<-h>
-
-Show a help message local to the current build if one such is defined, and
-exit.
-
-=item C<-k>
-
-Keep going as far as possible after errors.
-
-=item C<-o> <file>
-
-Read override file I<file>.
-
-=item C<-p>
-
-Show construction products in specified trees. No build is attempted.
-
-=item C<-pa>
-
-Show construction products and associated actions. No build is attempted.
-
-=item C<-pw>
-
-Show products and where they are defined. No build is attempted.
-
-=item C<-q>
-
-Make the build quiet. Multiple C<-q> options may be specified.
-
-A single C<-q> options suppress messages about Installing and Removing
-targets.
-
-Two C<-q> options suppress build command lines and target up-to-date
-messages.
-
-=item C<-r>
-
-Remove construction products associated with <targets>. No build is
-attempted.
-
-=item C<-R> <repos>
-
-Search for files in I<repos>. Multiple B<-R> I<repos> directories are
-searched in the order specified.
-
-=item C<-S> <pkg>
-
-Use the sig::<pkg> package to calculate. Supported <pkg> values
-include "md5" for MD5 signature calculation and "md5::debug" for debug
-information about MD5 signature calculation.
-
-If the specified package ends in <::debug>, signature debug information
-will be printed to the file name specified in the C<CONS_SIG_DEBUG>
-environment variable, or to standard output if the environment variable
-is not set.
-
-=item C<-t>
-
-Traverse up the directory hierarchy looking for a F<Construct> file,
-if none exists in the current directory. Targets will be modified to
-be relative to the F<Construct> file.
-
-Internally, C<cons> will change its working directory to the directory
-which contains the top-level F<Construct> file and report:
-
- cons: Entering directory `top-level-directory'
-
-This message indicates to an invoking editor (such as emacs) or build
-environment that Cons will now report all file names relative to the
-top-level directory. This message can not be suppressed with the C<-q>
-option.
-
-=item C<-v>
-
-Show C<cons> version and continue processing.
-
-=item C<-V>
-
-Show C<cons> version and exit.
-
-=item C<-wf> <file>
-
-Write all filenames considered into I<file>.
-
-=item C<-x>
-
-Show a help message similar to this one, and exit.
-
-=back
-
-And I<construct-args> can be any arguments that you wish to process in the
-F<Construct> file. Note that there should be a B<-,-> separating the arguments
-to cons and the arguments that you wish to process in the F<Construct> file.
-
-Processing of I<construct-args> can be done by any standard package like
-B<Getopt> or its variants, or any user defined package. B<cons> will pass in
-the I<construct-args> as B<@ARGV> and will not attempt to interpret anything
-after the B<-,->.
-
- % cons -R /usr/local/repository -d os=solaris +driver -,- -c test -f DEBUG
-
-would pass the following to cons
-
- -R /usr/local/repository -d os=solaris +driver
-
-and the following, to the top level F<Construct> file as B<@ARGV>
-
- -c test -f DEBUG
-
-Note that C<cons -r .> is equivalent to a full recursive C<make clean>,
-but requires no support in the F<Construct> file or any F<Conscript>
-files. This is most useful if you are compiling files into source
-directories (if you separate the F<build> and F<export> directories,
-then you can just remove the directories).
-
-The options C<-p>, C<-pa>, and C<-pw> are extremely useful for use as an aid
-in reading scripts or debugging them. If you want to know what script
-installs F<export/include/foo.h>, for example, just type:
-
- % cons -pw export/include/foo.h
-
-=head1 Selective builds
-
-Cons provides two methods for reducing the size of given build. The first is
-by specifying targets on the command line, and the second is a method for
-pruning the build tree. We'll consider target specification first.
-
-
-=head2 Selective targeting
-
-Like make, Cons allows the specification of ``targets'' on the command
-line. Cons targets may be either files or directories. When a directory is
-specified, this is simply a short-hand notation for every derivable
-product-,-that Cons knows about-,-in the specified directory and below. For
-example:
-
- % cons build/hello/hello.o
-
-means build F<hello.o> and everything that F<hello.o> might need. This is
-from a previous version of the B<Hello, World!> program in which F<hello.o>
-depended upon F<export/include/world.h>. If that file is not up-to-date
-(because someone modified F<src/world/world.h)>, then it will be rebuilt,
-even though it is in a directory remote from F<build/hello>.
-
-In this example:
-
- % cons build
-
-Everything in the F<build> directory is built, if necessary. Again, this may
-cause more files to be built. In particular, both F<export/include/world.h>
-and F<export/lib/libworld.a> are required by the F<build/hello> directory,
-and so they will be built if they are out-of-date.
-
-If we do, instead:
-
- % cons export
-
-then only the files that should be installed in the export directory will be
-rebuilt, if necessary, and then installed there. Note that C<cons build>
-might build files that C<cons export> doesn't build, and vice-versa.
-
-
-=head1 Build Pruning
-
-In conjunction with target selection, B<build pruning> can be used to reduce
-the scope of the build. In the previous peAcH and baNaNa example, we have
-already seen how script-driven build pruning can be used to make only half
-of the potential build available for any given invocation of C<cons>. Cons
-also provides, as a convenience, a command line convention that allows you
-to specify which F<Conscript> files actually get ``built''-,-that is,
-incorporated into the build tree. For example:
-
- % cons build +world
-
-The C<+> argument introduces a Perl regular expression. This must, of
-course, be quoted at the shell level if there are any shell meta-characters
-within the expression. The expression is matched against each F<Conscript>
-file which has been mentioned in a C<Build> statement, and only those
-scripts with matching names are actually incorporated into the build
-tree. Multiple such arguments are allowed, in which case a match against any
-of them is sufficient to cause a script to be included.
-
-In the example, above, the F<hello> program will not be built, since Cons
-will have no knowledge of the script F<hello/Conscript>. The F<libworld.a>
-archive will be built, however, if need be.
-
-There are a couple of uses for build pruning via the command line. Perhaps
-the most useful is the ability to make local changes, and then, with
-sufficient knowledge of the consequences of those changes, restrict the size
-of the build tree in order to speed up the rebuild time. A second use for
-build pruning is to actively prevent the recompilation of certain files that
-you know will recompile due to, for example, a modified header file. You may
-know that either the changes to the header file are immaterial, or that the
-changes may be safely ignored for most of the tree, for testing
-purposes.With Cons, the view is that it is pragmatic to admit this type of
-behavior, with the understanding that on the next full build everything that
-needs to be rebuilt will be. There is no equivalent to a ``make touch''
-command, to mark files as permanently up-to-date. So any risk that is
-incurred by build pruning is mitigated. For release quality work, obviously,
-we recommend that you do not use build pruning (it's perfectly OK to use
-during integration, however, for checking compilation, etc. Just be sure to
-do an unconstrained build before committing the integration).
-
--->
-
- <para>
-
- XXX
-
- </para>
-
- <section>
- <title>Command-Line Options</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Getting at Command-Line Arguments</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <section>
- <title>Selective Builds</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- <!--
-
- <section>
- <title>Build Pruning</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
-
- -->
-
- <section>
- <title>Overriding Construction Variables</title>
-
- <para>
-
- XXX
-
- </para>
-
- </section>
diff --git a/doc/user/run.xml b/doc/user/run.xml
index 8a5075b..464a5a8 100644
--- a/doc/user/run.xml
+++ b/doc/user/run.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-run"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>How to Run &SCons;</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -373,3 +394,5 @@ do an unconstrained build before committing the integration).
</para>
</section>
+
+</chapter>
diff --git a/doc/user/scanners.in b/doc/user/scanners.in
deleted file mode 100644
index 9237fb3..0000000
--- a/doc/user/scanners.in
+++ /dev/null
@@ -1,392 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 Using and writing dependency scanners
-
-QuickScan allows simple target-independent scanners to be set up for
-source files. Only one QuickScan scanner may be associated with any given
-source file and environment, although the same scanner may (and should)
-be used for multiple files of a given type.
-
-A QuickScan scanner is only ever invoked once for a given source file,
-and it is only invoked if the file is used by some target in the tree
-(i.e., there is a dependency on the source file).
-
-QuickScan is invoked as follows:
-
- QuickScan CONSENV CODEREF, FILENAME [, PATH]
-
-The subroutine referenced by CODEREF is expected to return a list of
-filenames included directly by FILE. These filenames will, in turn, be
-scanned. The optional PATH argument supplies a lookup path for finding
-FILENAME and/or files returned by the user-supplied subroutine. The PATH
-may be a reference to an array of lookup-directory names, or a string of
-names separated by the system's separator character (':' on UNIX systems,
-';' on Windows NT).
-
-The subroutine is called once for each line in the file, with $_ set to the
-current line. If the subroutine needs to look at additional lines, or, for
-that matter, the entire file, then it may read them itself, from the
-filehandle SCAN. It may also terminate the loop, if it knows that no further
-include information is available, by closing the filehandle.
-
-Whether or not a lookup path is provided, QuickScan first tries to lookup
-the file relative to the current directory (for the top-level file
-supplied directly to QuickScan), or from the directory containing the
-file which referenced the file. This is not very general, but seems good
-enough, especially if you have the luxury of writing your own utilities
-and can control the use of the search path in a standard way.
-
-Here's a real example, taken from a F<Construct> file here:
-
- sub cons::SMFgen {
- my($env, @tables) = @_;
- foreach $t (@tables) {
- $env->QuickScan(sub { /\b\S*?\.smf\b/g }, "$t.smf",
- $env->{SMF_INCLUDE_PATH});
- $env->Command(["$t.smdb.cc","$t.smdb.h","$t.snmp.cc",
- "$t.ami.cc", "$t.http.cc"], "$t.smf",
- q(smfgen %( %SMF_INCLUDE_OPT %) %<));
- }
- }
-
-The subroutine above finds all names of the form <name>.smf in the
-file. It will return the names even if they're found within comments,
-but that's OK (the mechanism is forgiving of extra files; they're just
-ignored on the assumption that the missing file will be noticed when
-the program, in this example, smfgen, is actually invoked).
-
-[NOTE that the form C<$env-E<gt>QuickScan ...> and C<$env-E<gt>Command
-...> should not be necessary, but, for some reason, is required
-for this particular invocation. This appears to be a bug in Perl or
-a misunderstanding on my part; this invocation style does not always
-appear to be necessary.]
-
-Here is another way to build the same scanner. This one uses an
-explicit code reference, and also (unnecessarily, in this case) reads
-the whole file itself:
-
- sub myscan {
- my(@includes);
- do {
- push(@includes, /\b\S*?\.smf\b/g);
- } while <SCAN>;
- @includes
- }
-
-Note that the order of the loop is reversed, with the loop test at the
-end. This is because the first line is already read for you. This scanner
-can be attached to a source file by:
-
- QuickScan $env \&myscan, "$_.smf";
-
-This final example, which scans a different type of input file, takes
-over the file scanning rather than being called for each input line:
-
- $env->QuickScan(
- sub { my(@includes) = ();
- do {
- push(@includes, $3)
- if /^(#include|import)\s+(\")(.+)(\")/ && $3
- } while <SCAN>;
- @includes
- },
- "$idlFileName",
- "$env->{CPPPATH};$BUILD/ActiveContext/ACSCLientInterfaces"
- );
-
--->
-
- <para>
-
- &SCons; has built-in scanners that know how to look in
- C, Fortran and IDL source files for information about
- other files that targets built from those files depend on--for example,
- in the case of files that use the C preprocessor,
- the <filename>.h</filename> files that are specified
- using <literal>#include</literal> lines in the source.
- You can use the same mechanisms that &SCons; uses to create
- its built-in scanners to write scanners of your own for file types
- that &SCons; does not know how to scan "out of the box."
-
- </para>
-
- <section>
- <title>A Simple Scanner Example</title>
-
- <para>
-
- Suppose, for example, that we want to create a simple scanner
- for <filename>.foo</filename> files.
- A <filename>.foo</filename> file contains some text that
- will be processed,
- and can include other files on lines that begin
- with <literal>include</literal>
- followed by a file name:
-
- </para>
-
- <programlisting>
- include filename.foo
- </programlisting>
-
- <para>
-
- Scanning a file will be handled by a Python function
- that you must supply.
- Here is a function that will use the Python
- <filename>re</filename> module
- to scan for the <literal>include</literal> lines in our example:
-
- </para>
-
- <programlisting>
- import re
-
- include_re = re.compile(r'^include\s+(\S+)$', re.M)
-
- def kfile_scan(node, env, path, arg):
- contents = node.get_text_contents()
- return env.File(include_re.findall(contents))
- </programlisting>
-
- <para>
-
- It is important to note that you
- have to return a list of File nodes from the scanner function, simple
- strings for the file names won't do. As in the examples we are showing here,
- you can use the &File;
- function of your current Environment in order to create nodes on the fly from
- a sequence of file names with relative paths.
-
- </para>
-
- <para>
-
- The scanner function must
- accept the four specified arguments
- and return a list of implicit dependencies.
- Presumably, these would be dependencies found
- from examining the contents of the file,
- although the function can perform any
- manipulation at all to generate the list of
- dependencies.
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>node</term>
-
- <listitem>
- <para>
-
- An &SCons; node object representing the file being scanned.
- The path name to the file can be
- used by converting the node to a string
- using the <literal>str()</literal> function,
- or an internal &SCons; <literal>get_text_contents()</literal>
- object method can be used to fetch the contents.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>env</term>
-
- <listitem>
- <para>
-
- The construction environment in effect for this scan.
- The scanner function may choose to use construction
- variables from this environment to affect its behavior.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>path</term>
-
- <listitem>
- <para>
-
- A list of directories that form the search path for included files
- for this scanner.
- This is how &SCons; handles the &cv-link-CPPPATH; and &cv-link-LIBPATH;
- variables.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>arg</term>
-
- <listitem>
- <para>
-
- An optional argument that you can choose to
- have passed to this scanner function by
- various scanner instances.
-
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- <para>
-
- A Scanner object is created using the &Scanner; function,
- which typically takes an <literal>skeys</literal> argument
- to associate the type of file suffix with this scanner.
- The Scanner object must then be associated with the
- &cv-link-SCANNERS; construction variable of a construction environment,
- typically by using the &Append; method:
-
- </para>
-
- <programlisting>
- kscan = Scanner(function = kfile_scan,
- skeys = ['.k'])
- env.Append(SCANNERS = kscan)
- </programlisting>
-
- <para>
-
- When we put it all together, it looks like:
-
- </para>
-
- <scons_example name="scan">
- <file name="SConstruct" printme="1">
- import re
-
- include_re = re.compile(r'^include\s+(\S+)$', re.M)
-
- def kfile_scan(node, env, path):
- contents = node.get_text_contents()
- includes = include_re.findall(contents)
- return env.File(includes)
-
- kscan = Scanner(function = kfile_scan,
- skeys = ['.k'])
-
- env = Environment(ENV = {'PATH' : '__ROOT__/usr/local/bin'})
- env.Append(SCANNERS = kscan)
-
- env.Command('foo', 'foo.k', 'kprocess &lt; $SOURCES &gt; $TARGET')
- </file>
- <file name="foo.k">
- include other_file
- </file>
- <file name="other_file">
- other_file
- </file>
- <directory name="__ROOT__/usr"></directory>
- <directory name="__ROOT__/usr/local"></directory>
- <directory name="__ROOT__/usr/local/bin"></directory>
- <file name="__ROOT_/usr/local/bin/kprocess" chmod="755">
- cat
- </file>
- </scons_example>
-
- <!--
-
- <para>
-
- Now if we run &scons;
- and then re-run it after changing the contents of
- <filename>other_file</filename>,
- the <filename>foo</filename>
- target file will be automatically rebuilt:
-
- </para>
-
- <scons_output example="scan">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF other_file]">edit other_file</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
-
- </section>
-
- <section>
- <title>Adding a search path to a scanner: &FindPathDirs;</title>
-
- <para>
-
- Many scanners need to search for included files or dependencies
- using a path variable; this is how &cv-link-CPPPATH; and
- &cv-link-LIBPATH; work. The path to search is passed to your
- scanner as the <literal>path</literal> argument. Path variables
- may be lists of nodes, semicolon-separated strings, or even
- contain SCons variables which need to be expanded. Fortunately,
- &SCons; provides the &FindPathDirs; function which itself returns
- a function to expand a given path (given as a SCons construction
- variable name) to a list of paths at the time the scanner is
- called. Deferring evaluation until that point allows, for
- instance, the path to contain $TARGET references which differ for
- each file scanned.
-
- </para>
-
- <para>
-
- Using &FindPathDirs; is quite easy. Continuing the above example,
- using KPATH as the construction variable with the search path
- (analogous to &cv-link-CPPPATH;), we just modify the &Scanner;
- constructor call to include a path keyword arg:
-
- </para>
-
- <scons_example name="findpathdirs">
- <file name="SConstruct" printme="1">
- kscan = Scanner(function = kfile_scan,
- skeys = ['.k'],
- path=FindPathDirs('KPATH'))
- </file>
- </scons_example>
-
- <para>
-
- FindPathDirs returns a callable object that, when called, will
- essentially expand the elements in env['KPATH'] and tell the
- scanner to search in those dirs. It will also properly add
- related repository and variant dirs to the search list. As a side
- note, the returned method stores the path in an efficient way so
- lookups are fast even when variable substitutions may be needed.
- This is important since many files get scanned in a typical build.
-
- </para>
- </section>
diff --git a/doc/user/scanners.xml b/doc/user/scanners.xml
index 749db36..32faf29 100644
--- a/doc/user/scanners.xml
+++ b/doc/user/scanners.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-scanners"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Writing Scanners</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -151,7 +172,7 @@ over the file scanning rather than being called for each input line:
</para>
<programlisting>
- include filename.foo
+include filename.foo
</programlisting>
<para>
@@ -165,13 +186,13 @@ over the file scanning rather than being called for each input line:
</para>
<programlisting>
- import re
-
- include_re = re.compile(r'^include\s+(\S+)$', re.M)
-
- def kfile_scan(node, env, path, arg):
- contents = node.get_text_contents()
- return env.File(include_re.findall(contents))
+import re
+
+include_re = re.compile(r'^include\s+(\S+)$', re.M)
+
+def kfile_scan(node, env, path, arg):
+ contents = node.get_text_contents()
+ return env.File(include_re.findall(contents))
</programlisting>
<para>
@@ -274,9 +295,9 @@ over the file scanning rather than being called for each input line:
</para>
<programlisting>
- kscan = Scanner(function = kfile_scan,
- skeys = ['.k'])
- env.Append(SCANNERS = kscan)
+kscan = Scanner(function = kfile_scan,
+ skeys = ['.k'])
+env.Append(SCANNERS = kscan)
</programlisting>
<para>
@@ -285,24 +306,38 @@ over the file scanning rather than being called for each input line:
</para>
- <programlisting>
- import re
-
- include_re = re.compile(r'^include\s+(\S+)$', re.M)
-
- def kfile_scan(node, env, path):
- contents = node.get_text_contents()
- includes = include_re.findall(contents)
- return env.File(includes)
-
- kscan = Scanner(function = kfile_scan,
- skeys = ['.k'])
-
- env = Environment(ENV = {'PATH' : '/usr/local/bin'})
- env.Append(SCANNERS = kscan)
-
- env.Command('foo', 'foo.k', 'kprocess &lt; $SOURCES &gt; $TARGET')
- </programlisting>
+ <scons_example name="scanners_scan">
+ <file name="SConstruct" printme="1">
+ import re
+
+ include_re = re.compile(r'^include\s+(\S+)$', re.M)
+
+ def kfile_scan(node, env, path):
+ contents = node.get_text_contents()
+ includes = include_re.findall(contents)
+ return env.File(includes)
+
+ kscan = Scanner(function = kfile_scan,
+ skeys = ['.k'])
+
+ env = Environment(ENV = {'PATH' : '__ROOT__/usr/local/bin'})
+ env.Append(SCANNERS = kscan)
+
+ env.Command('foo', 'foo.k', 'kprocess &lt; $SOURCES &gt; $TARGET')
+ </file>
+ <file name="foo.k">
+include other_file
+ </file>
+ <file name="other_file">
+other_file
+ </file>
+ <directory name="__ROOT__/usr"></directory>
+ <directory name="__ROOT__/usr/local"></directory>
+ <directory name="__ROOT__/usr/local/bin"></directory>
+ <file name="__ROOT_/usr/local/bin/kprocess" chmod="755">
+cat
+ </file>
+ </scons_example>
<!--
@@ -316,7 +351,7 @@ over the file scanning rather than being called for each input line:
</para>
- <scons_output example="scan">
+ <scons_output example="scanners_scan" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
<scons_output_command output=" [CHANGE THE CONTENTS OF other_file]">edit other_file</scons_output_command>
<scons_output_command>scons -Q</scons_output_command>
@@ -356,11 +391,13 @@ over the file scanning rather than being called for each input line:
</para>
- <programlisting>
- kscan = Scanner(function = kfile_scan,
- skeys = ['.k'],
- path=FindPathDirs('KPATH'))
- </programlisting>
+ <scons_example name="scanners_findpathdirs">
+ <file name="SConstruct" printme="1">
+kscan = Scanner(function = kfile_scan,
+ skeys = ['.k'],
+ path=FindPathDirs('KPATH'))
+ </file>
+ </scons_example>
<para>
@@ -374,3 +411,5 @@ over the file scanning rather than being called for each input line:
</para>
</section>
+
+</chapter>
diff --git a/doc/user/sconf.in b/doc/user/sconf.in
deleted file mode 100644
index 31b7fcc..0000000
--- a/doc/user/sconf.in
+++ /dev/null
@@ -1,486 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- &SCons; has integrated support for multi-platform build configuration
- similar to that offered by GNU &Autoconf;,
- such as
- figuring out what libraries or header files
- are available on the local system.
- This section describes how to use
- this &SCons; feature.
-
- </para>
-
- <note>
- <para>
- This chapter is still under development,
- so not everything is explained as well as it should be.
- See the &SCons; man page for additional information.
- </para>
- </note>
-
- <section>
- <title>&Configure_Contexts;</title>
-
- <para>
-
- The basic framework for multi-platform build configuration
- in &SCons; is to attach a &configure_context; to a
- construction environment by calling the &Configure; function,
- perform a number of checks for
- libraries, functions, header files, etc.,
- and to then call the configure context's &Finish; method
- to finish off the configuration:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- # Checks for libraries, header files, etc. go here!
- env = conf.Finish()
- </sconstruct>
-
- <para>
-
- &SCons; provides a number of basic checks,
- as well as a mechanism for adding your own custom checks.
-
- </para>
-
- <para>
-
- Note that &SCons; uses its own dependency
- mechanism to determine when a check
- needs to be run--that is,
- &SCons; does not run the checks
- every time it is invoked,
- but caches the values returned by previous checks
- and uses the cached values unless something has changed.
- This saves a tremendous amount
- of developer time while working on
- cross-platform build issues.
-
- </para>
-
- <para>
-
- The next sections describe
- the basic checks that &SCons; supports,
- as well as how to add your own custom checks.
-
- </para>
-
- </section>
-
- <section>
- <title>Checking for the Existence of Header Files</title>
-
- <para>
-
- Testing the existence of a header file
- requires knowing what language the header file is.
- A configure context has a &CheckCHeader; method
- that checks for the existence of a C header file:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckCHeader('math.h'):
- print 'Math.h must be installed!'
- Exit(1)
- if conf.CheckCHeader('foo.h'):
- conf.env.Append('-DHAS_FOO_H')
- env = conf.Finish()
- </sconstruct>
-
- <para>
-
- Note that you can choose to terminate
- the build if a given header file doesn't exist,
- or you can modify the construction environment
- based on the existence of a header file.
-
- </para>
-
- <para>
-
- If you need to check for the existence
- a C++ header file,
- use the &CheckCXXHeader; method:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckCXXHeader('vector.h'):
- print 'vector.h must be installed!'
- Exit(1)
- env = conf.Finish()
- </sconstruct>
-
- </section>
-
- <section>
- <title>Checking for the Availability of a Function</title>
-
- <para>
-
- Check for the availability of a specific function
- using the &CheckFunc; method:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckFunc('strcpy'):
- print 'Did not find strcpy(), using local version'
- conf.env.Append(CPPDEFINES = '-Dstrcpy=my_local_strcpy')
- env = conf.Finish()
- </sconstruct>
-
- </section>
-
- <section>
- <title>Checking for the Availability of a Library</title>
-
- <para>
-
- Check for the availability of a library
- using the &CheckLib; method.
- You only specify the basename of the library,
- you don't need to add a <literal>lib</literal>
- prefix or a <literal>.a</literal> or <literal>.lib</literal> suffix:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckLib('m'):
- print 'Did not find libm.a or m.lib, exiting!'
- Exit(1)
- env = conf.Finish()
- </sconstruct>
-
- <para>
-
- Because the ability to use a library successfully
- often depends on having access to a header file
- that describes the library's interface,
- you can check for a library
- <emphasis>and</emphasis> a header file
- at the same time by using the
- &CheckLibWithHeader; method:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckLibWithHeader('m', 'math.h', 'c'):
- print 'Did not find libm.a or m.lib, exiting!'
- Exit(1)
- env = conf.Finish()
- </sconstruct>
-
- <para>
-
- This is essentially shorthand for
- separate calls to the &CheckHeader; and &CheckLib;
- functions.
-
- </para>
-
- </section>
-
- <section>
- <title>Checking for the Availability of a &typedef;</title>
-
- <para>
-
- Check for the availability of a &typedef;
- by using the &CheckType; method:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckType('off_t'):
- print 'Did not find off_t typedef, assuming int'
- conf.env.Append(CCFLAGS = '-Doff_t=int')
- env = conf.Finish()
- </sconstruct>
-
- <para>
-
- You can also add a string that will be
- placed at the beginning of the test file
- that will be used to check for the &typedef;.
- This provide a way to specify
- files that must be included to find the &typedef;:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckType('off_t', '#include &amp;lt;sys/types.h&amp;gt;\n'):
- print 'Did not find off_t typedef, assuming int'
- conf.env.Append(CCFLAGS = '-Doff_t=int')
- env = conf.Finish()
- </sconstruct>
-
- </section>
-
- <section>
- <title>Adding Your Own Custom Checks</title>
-
- <para>
-
- A custom check is a Python function
- that checks for a certain condition to exist
- on the running system,
- usually using methods that &SCons;
- supplies to take care of the details
- of checking whether a compilation succeeds,
- a link succeeds,
- a program is runnable,
- etc.
- A simple custom check for the existence of
- a specific library might look as follows:
-
- </para>
-
- <sconstruct>
- mylib_test_source_file = """
- #include &amp;lt;mylib.h&amp;gt;
- int main(int argc, char **argv)
- {
- MyLibrary mylib(argc, argv);
- return 0;
- }
- """
-
- def CheckMyLibrary(context):
- context.Message('Checking for MyLibrary...')
- result = context.TryLink(mylib_test_source_file, '.c')
- context.Result(result)
- return result
- </sconstruct>
-
- <para>
-
- The &Message; and &Result; methods
- should typically begin and end a custom check to
- let the user know what's going on:
- the &Message; call prints the
- specified message (with no trailing newline)
- and the &Result; call prints
- <literal>yes</literal> if the check succeeds and
- <literal>no</literal> if it doesn't.
- The &TryLink; method
- actually tests for whether the
- specified program text
- will successfully link.
-
- </para>
-
- <para>
-
- (Note that a custom check can modify
- its check based on any arguments you
- choose to pass it,
- or by using or modifying the configure context environment
- in the <literal>context.env</literal> attribute.)
-
- </para>
-
- <para>
-
- This custom check function is
- then attached to the &configure_context;
- by passing a dictionary
- to the &Configure; call
- that maps a name of the check
- to the underlying function:
-
- </para>
-
- <sconstruct>
- env = Environment()
- conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
- </sconstruct>
-
- <para>
-
- You'll typically want to make
- the check and the function name the same,
- as we've done here,
- to avoid potential confusion.
-
- </para>
-
- <para>
-
- We can then put these pieces together
- and actually call the <literal>CheckMyLibrary</literal> check
- as follows:
-
- </para>
-
- <sconstruct>
- mylib_test_source_file = """
- #include &amp;lt;mylib.h&amp;gt;
- int main(int argc, char **argv)
- {
- MyLibrary mylib(argc, argv);
- return 0;
- }
- """
-
- def CheckMyLibrary(context):
- context.Message('Checking for MyLibrary... ')
- result = context.TryLink(mylib_test_source_file, '.c')
- context.Result(result)
- return result
-
- env = Environment()
- conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
- if not conf.CheckMyLibrary():
- print 'MyLibrary is not installed!'
- Exit(1)
- env = conf.Finish()
-
- # We would then add actual calls like Program() to build
- # something using the "env" construction environment.
- </sconstruct>
-
- <para>
-
- If MyLibrary is not installed on the system,
- the output will look like:
-
- </para>
-
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript file ...
- Checking for MyLibrary... failed
- MyLibrary is not installed!
- </screen>
-
- <para>
-
- If MyLibrary is installed,
- the output will look like:
-
- </para>
-
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript file ...
- Checking for MyLibrary... failed
- scons: done reading SConscript
- scons: Building targets ...
- .
- .
- .
- </screen>
-
- </section>
-
- <section>
- <title>Not Configuring When Cleaning Targets</title>
-
- <para>
-
- Using multi-platform configuration
- as described in the previous sections
- will run the configuration commands
- even when invoking
- <userinput>scons -c</userinput>
- to clean targets:
-
- </para>
-
- <screen>
- % <userinput>scons -Q -c</userinput>
- Checking for MyLibrary... yes
- Removed foo.o
- Removed foo
- </screen>
-
- <para>
-
- Although running the platform checks
- when removing targets doesn't hurt anything,
- it's usually unnecessary.
- You can avoid this by using the
- &GetOption; method to
- check whether the <option>-c</option> (clean)
- option has been invoked on the command line:
-
- </para>
-
- <sconstruct>
- env = Environment()
- if not env.GetOption('clean'):
- conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
- if not conf.CheckMyLibrary():
- print 'MyLibrary is not installed!'
- Exit(1)
- env = conf.Finish()
- </sconstruct>
-
- <screen>
- % <userinput>scons -Q -c</userinput>
- Removed foo.o
- Removed foo
- </screen>
-
- </section>
-
- <!--
-
- <section>
- <title>Controlling Configuration: the &config; Option</title>
-
- <para>
-
- XXX -D, -u and -U
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/sconf.xml b/doc/user/sconf.xml
index 3ab022d..d5881e9 100644
--- a/doc/user/sconf.xml
+++ b/doc/user/sconf.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-sconf"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Multi-Platform Configuration (&Autoconf; Functionality)</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -58,12 +79,12 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- # Checks for libraries, header files, etc. go here!
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+# Checks for libraries, header files, etc. go here!
+env = conf.Finish()
+ </sconstruct>
<para>
@@ -109,16 +130,16 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckCHeader('math.h'):
- print 'Math.h must be installed!'
- Exit(1)
- if conf.CheckCHeader('foo.h'):
- conf.env.Append('-DHAS_FOO_H')
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckCHeader('math.h'):
+ print 'Math.h must be installed!'
+ Exit(1)
+if conf.CheckCHeader('foo.h'):
+ conf.env.Append('-DHAS_FOO_H')
+env = conf.Finish()
+ </sconstruct>
<para>
@@ -137,14 +158,14 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckCXXHeader('vector.h'):
- print 'vector.h must be installed!'
- Exit(1)
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckCXXHeader('vector.h'):
+ print 'vector.h must be installed!'
+ Exit(1)
+env = conf.Finish()
+ </sconstruct>
</section>
@@ -158,14 +179,14 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckFunc('strcpy'):
- print 'Did not find strcpy(), using local version'
- conf.env.Append(CPPDEFINES = '-Dstrcpy=my_local_strcpy')
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckFunc('strcpy'):
+ print 'Did not find strcpy(), using local version'
+ conf.env.Append(CPPDEFINES = '-Dstrcpy=my_local_strcpy')
+env = conf.Finish()
+ </sconstruct>
</section>
@@ -182,14 +203,14 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckLib('m'):
- print 'Did not find libm.a or m.lib, exiting!'
- Exit(1)
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckLib('m'):
+ print 'Did not find libm.a or m.lib, exiting!'
+ Exit(1)
+env = conf.Finish()
+ </sconstruct>
<para>
@@ -203,14 +224,14 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckLibWithHeader('m', 'math.h', 'c'):
- print 'Did not find libm.a or m.lib, exiting!'
- Exit(1)
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckLibWithHeader('m', 'math.h', 'c'):
+ print 'Did not find libm.a or m.lib, exiting!'
+ Exit(1)
+env = conf.Finish()
+ </sconstruct>
<para>
@@ -232,14 +253,14 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckType('off_t'):
- print 'Did not find off_t typedef, assuming int'
- conf.env.Append(CCFLAGS = '-Doff_t=int')
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckType('off_t'):
+ print 'Did not find off_t typedef, assuming int'
+ conf.env.Append(CCFLAGS = '-Doff_t=int')
+env = conf.Finish()
+ </sconstruct>
<para>
@@ -251,14 +272,14 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env)
- if not conf.CheckType('off_t', '#include &lt;sys/types.h&gt;\n'):
- print 'Did not find off_t typedef, assuming int'
- conf.env.Append(CCFLAGS = '-Doff_t=int')
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckType('off_t', '#include &amp;lt;sys/types.h&amp;gt;\n'):
+ print 'Did not find off_t typedef, assuming int'
+ conf.env.Append(CCFLAGS = '-Doff_t=int')
+env = conf.Finish()
+ </sconstruct>
</section>
@@ -281,22 +302,22 @@
</para>
- <programlisting>
- mylib_test_source_file = """
- #include &lt;mylib.h&gt;
- int main(int argc, char **argv)
- {
- MyLibrary mylib(argc, argv);
- return 0;
- }
- """
-
- def CheckMyLibrary(context):
- context.Message('Checking for MyLibrary...')
- result = context.TryLink(mylib_test_source_file, '.c')
- context.Result(result)
- return result
- </programlisting>
+ <sconstruct>
+mylib_test_source_file = """
+#include &amp;lt;mylib.h&amp;gt;
+int main(int argc, char **argv)
+{
+ MyLibrary mylib(argc, argv);
+ return 0;
+}
+"""
+
+def CheckMyLibrary(context):
+ context.Message('Checking for MyLibrary...')
+ result = context.TryLink(mylib_test_source_file, '.c')
+ context.Result(result)
+ return result
+ </sconstruct>
<para>
@@ -336,10 +357,10 @@
</para>
- <programlisting>
- env = Environment()
- conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
- </programlisting>
+ <sconstruct>
+env = Environment()
+conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
+ </sconstruct>
<para>
@@ -358,32 +379,32 @@
</para>
- <programlisting>
- mylib_test_source_file = """
- #include &lt;mylib.h&gt;
- int main(int argc, char **argv)
- {
- MyLibrary mylib(argc, argv);
- return 0;
- }
- """
-
- def CheckMyLibrary(context):
- context.Message('Checking for MyLibrary... ')
- result = context.TryLink(mylib_test_source_file, '.c')
- context.Result(result)
- return result
-
- env = Environment()
- conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
- if not conf.CheckMyLibrary():
- print 'MyLibrary is not installed!'
- Exit(1)
- env = conf.Finish()
-
- # We would then add actual calls like Program() to build
- # something using the "env" construction environment.
- </programlisting>
+ <sconstruct>
+mylib_test_source_file = """
+#include &amp;lt;mylib.h&amp;gt;
+int main(int argc, char **argv)
+{
+ MyLibrary mylib(argc, argv);
+ return 0;
+}
+"""
+
+def CheckMyLibrary(context):
+ context.Message('Checking for MyLibrary... ')
+ result = context.TryLink(mylib_test_source_file, '.c')
+ context.Result(result)
+ return result
+
+env = Environment()
+conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
+if not conf.CheckMyLibrary():
+ print 'MyLibrary is not installed!'
+ Exit(1)
+env = conf.Finish()
+
+# We would then add actual calls like Program() to build
+# something using the "env" construction environment.
+ </sconstruct>
<para>
@@ -393,10 +414,10 @@
</para>
<screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript file ...
- Checking for MyLibrary... failed
- MyLibrary is not installed!
+% <userinput>scons</userinput>
+scons: Reading SConscript file ...
+Checking for MyLibrary... failed
+MyLibrary is not installed!
</screen>
<para>
@@ -407,14 +428,14 @@
</para>
<screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript file ...
- Checking for MyLibrary... failed
- scons: done reading SConscript
- scons: Building targets ...
- .
- .
- .
+% <userinput>scons</userinput>
+scons: Reading SConscript file ...
+Checking for MyLibrary... failed
+scons: done reading SConscript
+scons: Building targets ...
+ .
+ .
+ .
</screen>
</section>
@@ -434,10 +455,10 @@
</para>
<screen>
- % <userinput>scons -Q -c</userinput>
- Checking for MyLibrary... yes
- Removed foo.o
- Removed foo
+% <userinput>scons -Q -c</userinput>
+Checking for MyLibrary... yes
+Removed foo.o
+Removed foo
</screen>
<para>
@@ -452,20 +473,20 @@
</para>
- <programlisting>
- env = Environment()
- if not env.GetOption('clean'):
- conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
- if not conf.CheckMyLibrary():
- print 'MyLibrary is not installed!'
- Exit(1)
- env = conf.Finish()
- </programlisting>
+ <sconstruct>
+env = Environment()
+if not env.GetOption('clean'):
+ conf = Configure(env, custom_tests = {'CheckMyLibrary' : CheckMyLibrary})
+ if not conf.CheckMyLibrary():
+ print 'MyLibrary is not installed!'
+ Exit(1)
+ env = conf.Finish()
+ </sconstruct>
<screen>
- % <userinput>scons -Q -c</userinput>
- Removed foo.o
- Removed foo
+% <userinput>scons -Q -c</userinput>
+Removed foo.o
+Removed foo
</screen>
</section>
@@ -484,3 +505,5 @@
</section>
-->
+
+</chapter>
diff --git a/doc/user/scons.css b/doc/user/scons.css
new file mode 100644
index 0000000..6941abb
--- /dev/null
+++ b/doc/user/scons.css
@@ -0,0 +1,263 @@
+body {
+ background: #ffffff;
+ margin: 10px;
+ padding: 0;
+ font-family:palatino, georgia, verdana, arial, sans-serif;
+ }
+
+
+a {
+ color: #80572a;
+ }
+
+a:hover {
+ color: #d72816;
+ text-decoration: none;
+ }
+
+tt {
+ color: #a14447;
+ }
+
+pre {
+ background: #e0e0e0;
+ }
+
+#main {
+ border: 1px solid;
+ border-color: black;
+ background-color: white;
+ background-image: url(../images/sconsback.png);
+ background-repeat: repeat-y 50% 0;
+ background-position: right top;
+ margin: 30px auto;
+ width: 750px;
+ }
+
+#banner {
+ background-image: url(../images/scons-banner.jpg);
+ border-bottom: 1px solid;
+ height: 95px;
+ }
+
+#menu {
+ font-family: sans-serif;
+ font-size: small;
+ line-height: 0.9em;
+ float: right;
+ width: 220px;
+ clear: both;
+ margin-top: 10px;
+ }
+
+#menu li {
+ margin-bottom: 7px;
+ }
+
+#menu li li {
+ margin-bottom: 2px;
+ }
+
+#menu li.submenuitems {
+ margin-bottom: 2px;
+ }
+
+#menu a {
+ text-decoration: none;
+ }
+
+#footer {
+ border-top: 1px solid black;
+ text-align: center;
+ font-size: small;
+ color: #822;
+ margin-top: 4px;
+ background: #eee;
+ }
+
+ul.hack {
+ list-style-position:inside;
+ }
+
+ul.menuitems {
+ list-style-type: none;
+ }
+
+ul.submenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ul.subsubmenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ol.upper-roman {
+ list-style-type: upper-roman;
+ }
+
+ol.decimal {
+ list-style-type: decimal;
+ }
+
+#currentpage {
+ font-weight: bold;
+ }
+
+#bodycontent {
+ margin: 15px;
+ width: 520px;
+ font-size: small;
+ line-height: 1.5em;
+ }
+
+#bodycontent li {
+ margin-bottom: 6px;
+ list-style-type: square;
+ }
+
+#sconsdownloadtable downloadtable {
+ display: table;
+ margin-left: 5%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdownloadtable downloadrow {
+ display: table-row;
+ }
+
+#sconsdownloadtable downloadentry {
+ display: table-cell;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdownloadtable downloaddescription {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdownloadtable downloadversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#sconsdocversiontable sconsversiontable {
+ display: table;
+ margin-left: 10%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdocversiontable sconsversionrow {
+ display: table-row;
+ }
+
+#sconsdocversiontable docformat {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdocversiontable sconsversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdocversiontable docversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#osrating {
+ margin-left: 35px;
+ }
+
+
+h2 {
+ color: #272;
+ color: #c01714;
+ font-family: sans-serif;
+ font-weight: normal;
+ }
+
+h2.pagetitle {
+ font-size: xx-large;
+ }
+h3 {
+ margin-bottom: 10px;
+ }
+
+.date {
+ font-size: small;
+ color: gray;
+ }
+
+.link {
+ margin-bottom: 22px;
+ }
+
+.linkname {
+ }
+
+.linkdesc {
+ margin: 10px;
+ margin-top: 0;
+ }
+
+.quote {
+ margin-top: 20px;
+ margin-bottom: 10px;
+ background: #f8f8f8;
+ border: 1px solid;
+ border-color: #ddd;
+ }
+
+.quotetitle {
+ font-weight: bold;
+ font-size: large;
+ margin: 10px;
+ }
+
+.quotedesc {
+ margin-left: 20px;
+ margin-right: 10px;
+ margin-bottom: 15px;
+ }
+
+.quotetext {
+ margin-top: 20px;
+ margin-left: 20px;
+ margin-right: 10px;
+ font-style: italic;
+ }
+
+.quoteauthor {
+ font-size: small;
+ text-align: right;
+ margin-top: 10px;
+ margin-right: 7px;
+ }
+
+.sconslogo {
+ font-style: normal;
+ font-weight: bold;
+ color: #822;
+ }
+
+.downloadlink {
+ }
+
+.downloaddescription {
+ margin-left: 1em;
+ margin-bottom: 0.4em;
+ }
diff --git a/doc/user/scons_title.xsl b/doc/user/scons_title.xsl
new file mode 100644
index 0000000..52ca405
--- /dev/null
+++ b/doc/user/scons_title.xsl
@@ -0,0 +1,6352 @@
+<?xml version="1.0"?>
+<!--
+
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl; do not edit it by hand. -->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::article[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::set[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:param name="scons.inner.twidtha">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">200mm</xsl:when>
+ <xsl:otherwise>205.9mm</xsl:otherwise> <!-- 8.5in-10mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthb">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">190mm</xsl:when>
+ <xsl:otherwise>195.9mm</xsl:otherwise> <!-- 8.5in-20mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthc">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">180mm</xsl:when>
+ <xsl:otherwise>185.9mm</xsl:otherwise> <!-- 8.5in-30mm -->
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="book.titlepage.recto">
+
+ <fo:block-container height="3mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ <fo:block>
+ <fo:table table-layout="fixed" width="100%" padding="0pt" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidtha}"/>
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center">
+ <fo:block line-height="0">
+ <fo:external-graphic
+ src="url(titlepage/SConsBuildBricks_path.svg)"
+ width="{$scons.inner.twidtha}" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </fo:block></fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <fo:block-container height="4cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+<!--
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+-->
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/edition">
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/edition"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/corpauthor">
+ <fo:block-container height="15mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/mediaobject"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<!--
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24pt" space-before="18pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="15pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+-->
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="0pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsynopsisdivinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsynopsisdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsectioninfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsection.titlepage.before.recto"/>
+ <xsl:call-template name="refsection.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsection.titlepage.before.verso"/>
+ <xsl:call-template name="refsection.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsection.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect1info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect1.titlepage.before.recto"/>
+ <xsl:call-template name="refsect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect1.titlepage.before.verso"/>
+ <xsl:call-template name="refsect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect2info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect2.titlepage.before.recto"/>
+ <xsl:call-template name="refsect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect2.titlepage.before.verso"/>
+ <xsl:call-template name="refsect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect3info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect3.titlepage.before.recto"/>
+ <xsl:call-template name="refsect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect3.titlepage.before.verso"/>
+ <xsl:call-template name="refsect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+<!--
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+-->
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.recto"/>
+ <xsl:call-template name="bibliodiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.verso"/>
+ <xsl:call-template name="bibliodiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliodiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossdiv.titlepage.before.recto"/>
+ <xsl:call-template name="glossdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossdiv.titlepage.before.verso"/>
+ <xsl:call-template name="glossdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style">
+<xsl:call-template name="indexdiv.title">
+<xsl:with-param name="title" select="title"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexdivinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="indexdiv.titlepage.before.recto"/>
+ <xsl:call-template name="indexdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="indexdiv.titlepage.before.verso"/>
+ <xsl:call-template name="indexdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="indexdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="colophoninfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="colophon.titlepage.before.recto"/>
+ <xsl:call-template name="colophon.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="colophon.titlepage.before.verso"/>
+ <xsl:call-template name="colophon.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="colophon.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="qandaset.titlepage.before.recto"/>
+ <xsl:call-template name="qandaset.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="qandaset.titlepage.before.verso"/>
+ <xsl:call-template name="qandaset.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="qandaset.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'TableofContents'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.recto"/>
+ <xsl:call-template name="table.of.contents.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.verso"/>
+ <xsl:call-template name="table.of.contents.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="table.of.contents.titlepage.separator"/>
+ </fo:block>
+
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofTables'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.tables.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.tables.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.tables.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofFigures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.figures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.figures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.figures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofExamples'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.examples.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.examples.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.examples.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofEquations'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.equations.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.equations.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.equations.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofProcedures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.procedures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.procedures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.procedures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofUnknown'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.unknowns.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+
+<!-- special titlepage masters for SCons Titlepage style in books -->
+<xsl:template name="user.pagemasters">
+ <!-- title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="0mm"
+ margin-bottom="0mm"
+ margin-left="0mm"
+ margin-right="0mm">
+ <xsl:attribute name="margin-{$direction.align.start}" select="0mm"/>
+ <xsl:attribute name="margin-{$direction.align.end}" select="0mm"/>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="0mm"
+ margin-top="0mm"
+ column-gap="0mm"
+ column-count="{$column.count.titlepage}"
+ background-repeat="no-repeat"
+ background-image="url(titlepage/mapnik_final_colors.svg)"
+ background-position-vertical="center"
+ background-position-horizontal="center">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+ </xsl:if>
+
+ <!-- setup for title page(s) -->
+ <fo:page-sequence-master master-name="scons-titlepage">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-titlepage-even</xsl:when>
+ <xsl:otherwise>scons-titlepage-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+
+ <fo:page-sequence-master master-name="scons-titlepage-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="body-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
+ <xsl:otherwise>body-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+ <!-- setup for chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even</xsl:when>
+ <xsl:otherwise>scons-chapter-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ <!-- setup for draft chapter pages -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even-draft</xsl:when>
+ <xsl:otherwise>scons-chapter-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- selecting our SCons pagemasters -->
+<xsl:template name="select.user.pagemaster">
+ <xsl:param name="element"/>
+ <xsl:param name="pageclass"/>
+ <xsl:param name="default-pagemaster"/>
+
+ <xsl:choose>
+ <xsl:when test="$default-pagemaster = 'titlepage'">
+ <xsl:value-of select="'scons-titlepage'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter' and
+ $default-pagemaster = 'body-draft'">
+ <xsl:value-of select="'scons-chapter-draft'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter'">
+ <xsl:value-of select="'scons-chapter'" />
+ </xsl:when>
+ <xsl:when test="$default-pagemaster = 'titlepage-draft'">
+ <xsl:value-of select="'scons-titlepage-draft'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-pagemaster"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="75pt" space-before="0pt" space-after="0pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" font-size="28pt" space-before="0pt" space-after="0pt" font-family="{$title.fontset}" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="56pt" space-before="0pt" space-after="0pt" font-family="'serif'" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:attribute-set name="chap.label.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="chap.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">24pt</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-start">0.7em</xsl:attribute>
+</xsl:attribute-set>
+
+
+<!-- customization of chapter titles -->
+<xsl:template name="chap.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="pagewide" select="0"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="titleabbrev">
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="2"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$titleabbrev"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="17mm"/>
+ <fo:table-column/>
+ <fo:table-column column-width="17mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="chap.title.properties">
+ <fo:block>
+
+ <fo:inline xsl:use-attribute-sets="chap.label.properties" font-size="57pt"><xsl:apply-templates select="$node"
+ mode="label.markup"/></fo:inline>
+
+ <fo:inline xsl:use-attribute-sets="chap.title.properties"><xsl:apply-templates select="$node"
+ mode="title.markup"/></fo:inline>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+<xsl:call-template name="chap.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template match="title" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="."/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template name="header.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="element" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all headers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="head.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$header.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a header? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence = 'first'">
+ <!-- no, book chapters have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="header.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+<!-- <xsl:apply-templates select="."
+ mode="titleabbrev.markup"/>
+-->
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+
+<xsl:template name="footer.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all footers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="foot.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$footer.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a footer? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence='first'">
+ <!-- no, book chapters have no footers on first page -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+ <!-- pageclass can be front, body, back -->
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="head.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$header.rule != 0">
+ <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
+ <xsl:attribute name="border-bottom-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+
+<xsl:template name="foot.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$footer.rule != 0">
+ <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">solid</xsl:attribute>
+ <xsl:attribute name="border-top-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:param name="header.column.widths">1 0 1</xsl:param>
+<xsl:param name="footer.column.widths">1 0 1</xsl:param>
+<xsl:param name="headers.on.blank.pages" select="1"/>
+<xsl:param name="footers.on.blank.pages" select="1"/>
+
+</xsl:stylesheet>
+
diff --git a/doc/user/separate.in b/doc/user/separate.in
deleted file mode 100644
index a8d0aab..0000000
--- a/doc/user/separate.in
+++ /dev/null
@@ -1,540 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 Separating source and build trees
-
-It's often desirable to keep any derived files from the build completely
-separate from the source files. This makes it much easier to keep track of
-just what is a source file, and also makes it simpler to handle B<variant>
-builds, especially if you want the variant builds to co-exist.
-
-=head2 Separating build and source directories using the Link command
-
-Cons provides a simple mechanism that handles all of these requirements. The
-C<Link> command is invoked as in this example:
-
- Link 'build' => 'src';
-
-The specified directories are ``linked'' to the specified source
-directory. Let's suppose that you setup a source directory, F<src>, with the
-sub-directories F<world> and F<hello> below it, as in the previous
-example. You could then substitute for the original build lines the
-following:
-
- Build qw(
- build/world/Conscript
- build/hello/Conscript
- );
-
-Notice that you treat the F<Conscript> file as if it existed in the build
-directory. Now if you type the same command as before, you will get the
-following results:
-
- % cons export
- Install build/world/world.h as export/include/world.h
- cc -Iexport/include -c build/hello/hello.c -o build/hello/hello.o
- cc -Iexport/include -c build/world/world.c -o build/world/world.o
- ar r build/world/libworld.a build/world/world.o
- ar: creating build/world/libworld.a
- ranlib build/world/libworld.a
- Install build/world/libworld.a as export/lib/libworld.a
- cc -o build/hello/hello build/hello/hello.o -Lexport/lib -lworld
- Install build/hello/hello as export/bin/hello
-
-Again, Cons has taken care of the details for you. In particular, you will
-notice that all the builds are done using source files and object files from
-the build directory. For example, F<build/world/world.o> is compiled from
-F<build/world/world.c>, and F<export/include/world.h> is installed from
-F<build/world/world.h>. This is accomplished on most systems by the simple
-expedient of ``hard'' linking the required files from each source directory
-into the appropriate build directory.
-
-The links are maintained correctly by Cons, no matter what you do to the
-source directory. If you modify a source file, your editor may do this ``in
-place'' or it may rename it first and create a new file. In the latter case,
-any hard link will be lost. Cons will detect this condition the next time
-the source file is needed, and will relink it appropriately.
-
-You'll also notice, by the way, that B<no> changes were required to the
-underlying F<Conscript> files. And we can go further, as we shall see in the
-next section.
-
-=head2 Explicit references to the source directory
-
-When using the C<Link> command on some operating systems or with some
-tool chains, it's sometimes useful to have a command actually use
-the path name to the source directory, not the build directory. For
-example, on systems that must copy, not "hard link," the F<src/> and
-F<build/> copies of C<Linked> files, using the F<src/> path of a file
-name might make an editor aware that a syntax error must be fixed in the
-source directory, not the build directory.
-
-You can tell Cons that you want to use the "source path" for a file by
-preceding the file name with a ``!'' (exclamation point). For example,
-if we add a ``!'' to the beginning of a source file:
-
- Program $env "foo", "!foo.c"; # Notice initial ! on foo.c
-
-Cons will compile the target as follows:
-
- cc -c src/foo.c -o build/foo.o
- cc -o build/foo build/foo.o
-
-Notice that Cons has compiled the program from the the F<src/foo.c>
-source file. Without the initial ``!'', Cons would have compiled the
-program using the F<build/foo.c> path name.
-
--->
-
- <para>
-
- It's often useful to keep any built files completely
- separate from the source files.
- In &SCons;, this is usually done by creating one or more separate
- <emphasis>variant directory trees</emphasis>
- that are used to hold the built objects files, libraries,
- and executable programs, etc.
- for a specific flavor, or variant, of build.
- &SCons; provides two ways to do this,
- one through the &SConscript; function that we've already seen,
- and the second through a more flexible &VariantDir; function.
-
- </para>
-
- <para>
-
- One historical note: the &VariantDir; function
- used to be called &BuildDir;.
- That name is still supported
- but has been deprecated
- because the &SCons; functionality
- differs from the model of a "build directory"
- implemented by other build systems like the GNU Autotools.
-
- </para>
-
- <section>
- <title>Specifying a Variant Directory Tree as Part of an &SConscript; Call</title>
-
- <para>
-
- The most straightforward way to establish a variant directory tree
- uses the fact that the usual way to
- set up a build hierarchy is to have an
- &SConscript; file in the source subdirectory.
- If you then pass a &variant_dir; argument to the
- &SConscript; function call:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- SConscript('src/SConscript', variant_dir='build')
- </file>
- <file name="src/SConscript">
- env = Environment()
- env.Program('hello.c')
- </file>
- <file name="src/hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- &SCons; will then build all of the files in
- the &build; subdirectory:
-
- </para>
-
- <scons_output example="ex1">
- <scons_output_command>ls src</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>ls build</scons_output_command>
- </scons_output>
-
- <para>
-
- But wait a minute--what's going on here?
- &SCons; created the object file
- <filename>build/hello.o</filename>
- in the &build; subdirectory,
- as expected.
- But even though our &hello_c; file lives in the &src; subdirectory,
- &SCons; has actually compiled a
- <filename>build/hello.c</filename> file
- to create the object file.
-
- </para>
-
- <para>
-
- What's happened is that &SCons; has <emphasis>duplicated</emphasis>
- the &hello_c; file from the &src; subdirectory
- to the &build; subdirectory,
- and built the program from there.
- The next section explains why &SCons; does this.
-
- </para>
-
- </section>
-
- <section>
- <title>Why &SCons; Duplicates Source Files in a Variant Directory Tree</title>
-
- <para>
-
- &SCons; duplicates source files in variant directory trees
- because it's the most straightforward way to guarantee a correct build
- <emphasis>regardless of include-file directory paths,
- relative references between files,
- or tool support for putting files in different locations</emphasis>,
- and the &SCons; philosophy is to, by default,
- guarantee a correct build in all cases.
-
- </para>
-
- <para>
-
- The most direct reason to duplicate source files
- in variant directories
- is simply that some tools (mostly older versions)
- are written to only build their output files
- in the same directory as the source files.
- In this case, the choices are either
- to build the output file in the source directory
- and move it to the variant directory,
- or to duplicate the source files in the variant directory.
-
- </para>
-
- <para>
-
- Additionally,
- relative references between files
- can cause problems if we don't
- just duplicate the hierarchy of source files
- in the variant directory.
- You can see this at work in
- use of the C preprocessor <literal>#include</literal>
- mechanism with double quotes, not angle brackets:
-
- </para>
-
- <sconstruct>
- #include "file.h"
- </sconstruct>
-
- <para>
-
- The <emphasis>de facto</emphasis> standard behavior
- for most C compilers in this case
- is to first look in the same directory
- as the source file that contains the <literal>#include</literal> line,
- then to look in the directories in the preprocessor search path.
- Add to this that the &SCons; implementation of
- support for code repositories
- (described below)
- means not all of the files
- will be found in the same directory hierarchy,
- and the simplest way to make sure
- that the right include file is found
- is to duplicate the source files into the variant directory,
- which provides a correct build
- regardless of the original location(s) of the source files.
-
- </para>
-
- <para>
-
- Although source-file duplication guarantees a correct build
- even in these end-cases,
- it <emphasis>can</emphasis> usually be safely disabled.
- The next section describes
- how you can disable the duplication of source files
- in the variant directory.
-
- </para>
-
- </section>
-
- <section>
- <title>Telling &SCons; to Not Duplicate Source Files in the Variant Directory Tree</title>
-
- <para>
-
- In most cases and with most tool sets,
- &SCons; can place its target files in a build subdirectory
- <emphasis>without</emphasis>
- duplicating the source files
- and everything will work just fine.
- You can disable the default &SCons; behavior
- by specifying <literal>duplicate=0</literal>
- when you call the &SConscript; function:
-
- </para>
-
- <sconstruct>
- SConscript('src/SConscript', variant_dir='build', duplicate=0)
- </sconstruct>
-
- <para>
-
- When this flag is specified,
- &SCons; uses the variant directory
- like most people expect--that is,
- the output files are placed in the variant directory
- while the source files stay in the source directory:
-
- </para>
-
- <screen>
- % <userinput>ls src</userinput>
- SConscript
- hello.c
- % <userinput>scons -Q</userinput>
- cc -c src/hello.c -o build/hello.o
- cc -o build/hello build/hello.o
- % <userinput>ls build</userinput>
- hello
- hello.o
- </screen>
-
- </section>
-
- <section>
- <title>The &VariantDir; Function</title>
-
- <para>
-
- Use the &VariantDir; function to establish that target
- files should be built in a separate directory
- from the source files:
-
- </para>
-
- <scons_example name="ex_builddir">
- <file name="SConstruct" printme="1">
- VariantDir('build', 'src')
- env = Environment()
- env.Program('build/hello.c')
- </file>
- <file name="src/hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Note that when you're not using
- an &SConscript; file in the &src; subdirectory,
- you must actually specify that
- the program must be built from
- the <filename>build/hello.c</filename>
- file that &SCons; will duplicate in the
- &build; subdirectory.
-
- </para>
-
- <para>
-
- When using the &VariantDir; function directly,
- &SCons; still duplicates the source files
- in the variant directory by default:
-
- </para>
-
- <scons_output example="ex_builddir">
- <scons_output_command>ls src</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>ls build</scons_output_command>
- </scons_output>
-
- <para>
-
- You can specify the same <literal>duplicate=0</literal> argument
- that you can specify for an &SConscript; call:
-
- </para>
-
- <scons_example name="ex_duplicate_0">
- <file name="SConstruct" printme="1">
- VariantDir('build', 'src', duplicate=0)
- env = Environment()
- env.Program('build/hello.c')
- </file>
- <file name="src/hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- In which case &SCons;
- will disable duplication of the source files:
-
- </para>
-
- <scons_output example="ex_duplicate_0">
- <scons_output_command>ls src</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>ls build</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Using &VariantDir; With an &SConscript; File</title>
-
- <para>
-
- Even when using the &VariantDir; function,
- it's much more natural to use it with
- a subsidiary &SConscript; file.
- For example, if the
- <filename>src/SConscript</filename>
- looks like this:
-
- </para>
-
- <scons_example name="example_builddir_sconscript">
- <file name="SConstruct">
- VariantDir('build', 'src')
- SConscript('build/SConscript')
- </file>
- <file name="src/SConscript" printme="1">
- env = Environment()
- env.Program('hello.c')
- </file>
- <file name="src/hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Then our &SConstruct; file could look like:
-
- </para>
-
- <scons_example_file example="example_builddir_sconscript" name="SConstruct">
- </scons_example_file>
-
- <para>
-
- Yielding the following output:
-
- </para>
-
- <scons_output example="example_builddir_sconscript">
- <scons_output_command>ls src</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>ls build</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice that this is completely equivalent
- to the use of &SConscript; that we
- learned about in the previous section.
-
- </para>
-
- </section>
-
- <section>
- <title>Using &Glob; with &VariantDir;</title>
-
- <para>
-
- The &Glob; file name pattern matching function
- works just as usual when using &VariantDir;.
- For example, if the
- <filename>src/SConscript</filename>
- looks like this:
-
- </para>
-
- <scons_example name="example_glob_builddir_sconscript">
- <file name="SConstruct">
- VariantDir('build', 'src')
- SConscript('build/SConscript')
- </file>
- <file name="src/SConscript" printme="1">
- env = Environment()
- env.Program('hello', Glob('*.c'))
- </file>
- <file name="src/f1.c">
- #include "f2.h"
- int main() { printf(f2()); }
- </file>
- <file name="src/f2.c">
- const char * f2() { return("Hello, world!\n"); }
- </file>
- <file name="src/f2.h">
- const char * f2();
- </file>
- </scons_example>
-
- <para>
-
- Then with the same &SConstruct; file as in the previous section,
- and source files <filename>f1.c</filename>
- and <filename>f2.c</filename> in src,
- we would see the following output:
-
- </para>
-
- <scons_output example="example_glob_builddir_sconscript">
- <scons_output_command>ls src</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>ls build</scons_output_command>
- </scons_output>
-
- <para>
-
- The &Glob; function returns Nodes in the
- <filename>build/</filename> tree, as you'd expect.
-
- </para>
-
- </section>
-
- <!--
-
- <section>
- <title>Why You'd Want to Call &VariantDir; Instead of &SConscript;</title>
-
- <para>
-
- XXX why call VariantDir() instead of SConscript(variant_dir=)
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/separate.xml b/doc/user/separate.xml
index 8ad357c..e973795 100644
--- a/doc/user/separate.xml
+++ b/doc/user/separate.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-separate"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Separating Source and Build Directories</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -151,9 +172,18 @@ program using the F<build/foo.c> path name.
</para>
- <programlisting>
- SConscript('src/SConscript', variant_dir='build')
- </programlisting>
+ <scons_example name="separate_ex1">
+ <file name="SConstruct" printme="1">
+SConscript('src/SConscript', variant_dir='build')
+ </file>
+ <file name="src/SConscript">
+env = Environment()
+env.Program('hello.c')
+ </file>
+ <file name="src/hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -162,15 +192,11 @@ program using the F<build/foo.c> path name.
</para>
- <screen>
- % <userinput>ls src</userinput>
- SConscript hello.c
- % <userinput>scons -Q</userinput>
- cc -o build/hello.o -c build/hello.c
- cc -o build/hello build/hello.o
- % <userinput>ls build</userinput>
- SConscript hello hello.c hello.o
- </screen>
+ <scons_output example="separate_ex1" suffix="1">
+ <scons_output_command>ls src</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>ls build</scons_output_command>
+ </scons_output>
<para>
@@ -240,9 +266,9 @@ program using the F<build/foo.c> path name.
</para>
- <programlisting>
- #include "file.h"
- </programlisting>
+ <sconstruct>
+#include "file.h"
+ </sconstruct>
<para>
@@ -293,9 +319,9 @@ program using the F<build/foo.c> path name.
</para>
- <programlisting>
- SConscript('src/SConscript', variant_dir='build', duplicate=0)
- </programlisting>
+ <sconstruct>
+SConscript('src/SConscript', variant_dir='build', duplicate=0)
+ </sconstruct>
<para>
@@ -308,15 +334,15 @@ program using the F<build/foo.c> path name.
</para>
<screen>
- % <userinput>ls src</userinput>
- SConscript
- hello.c
- % <userinput>scons -Q</userinput>
- cc -c src/hello.c -o build/hello.o
- cc -o build/hello build/hello.o
- % <userinput>ls build</userinput>
- hello
- hello.o
+% <userinput>ls src</userinput>
+SConscript
+hello.c
+% <userinput>scons -Q</userinput>
+cc -c src/hello.c -o build/hello.o
+cc -o build/hello build/hello.o
+% <userinput>ls build</userinput>
+hello
+hello.o
</screen>
</section>
@@ -332,11 +358,16 @@ program using the F<build/foo.c> path name.
</para>
- <programlisting>
- VariantDir('build', 'src')
- env = Environment()
- env.Program('build/hello.c')
- </programlisting>
+ <scons_example name="separate_builddir">
+ <file name="SConstruct" printme="1">
+VariantDir('build', 'src')
+env = Environment()
+env.Program('build/hello.c')
+ </file>
+ <file name="src/hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -358,15 +389,11 @@ program using the F<build/foo.c> path name.
</para>
- <screen>
- % <userinput>ls src</userinput>
- hello.c
- % <userinput>scons -Q</userinput>
- cc -o build/hello.o -c build/hello.c
- cc -o build/hello build/hello.o
- % <userinput>ls build</userinput>
- hello hello.c hello.o
- </screen>
+ <scons_output example="separate_builddir" suffix="1">
+ <scons_output_command>ls src</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>ls build</scons_output_command>
+ </scons_output>
<para>
@@ -375,11 +402,16 @@ program using the F<build/foo.c> path name.
</para>
- <programlisting>
- VariantDir('build', 'src', duplicate=0)
- env = Environment()
- env.Program('build/hello.c')
- </programlisting>
+ <scons_example name="separate_duplicate0">
+ <file name="SConstruct" printme="1">
+VariantDir('build', 'src', duplicate=0)
+env = Environment()
+env.Program('build/hello.c')
+ </file>
+ <file name="src/hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -388,15 +420,11 @@ program using the F<build/foo.c> path name.
</para>
- <screen>
- % <userinput>ls src</userinput>
- hello.c
- % <userinput>scons -Q</userinput>
- cc -o build/hello.o -c src/hello.c
- cc -o build/hello build/hello.o
- % <userinput>ls build</userinput>
- hello hello.o
- </screen>
+ <scons_output example="separate_duplicate0" suffix="1">
+ <scons_output_command>ls src</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>ls build</scons_output_command>
+ </scons_output>
</section>
@@ -414,10 +442,19 @@ program using the F<build/foo.c> path name.
</para>
- <programlisting>
- env = Environment()
- env.Program('hello.c')
- </programlisting>
+ <scons_example name="separate_builddir_sconscript">
+ <file name="SConstruct">
+VariantDir('build', 'src')
+SConscript('build/SConscript')
+ </file>
+ <file name="src/SConscript" printme="1">
+env = Environment()
+env.Program('hello.c')
+ </file>
+ <file name="src/hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -425,11 +462,8 @@ program using the F<build/foo.c> path name.
</para>
-
- <programlisting>
- VariantDir('build', 'src')
- SConscript('build/SConscript')
- </programlisting>
+ <scons_example_file example="separate_builddir_sconscript" name="SConstruct">
+ </scons_example_file>
<para>
@@ -437,15 +471,11 @@ program using the F<build/foo.c> path name.
</para>
- <screen>
- % <userinput>ls src</userinput>
- SConscript hello.c
- % <userinput>scons -Q</userinput>
- cc -o build/hello.o -c build/hello.c
- cc -o build/hello build/hello.o
- % <userinput>ls build</userinput>
- SConscript hello hello.c hello.o
- </screen>
+ <scons_output example="separate_builddir_sconscript" suffix="1">
+ <scons_output_command>ls src</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>ls build</scons_output_command>
+ </scons_output>
<para>
@@ -470,10 +500,26 @@ program using the F<build/foo.c> path name.
</para>
- <programlisting>
- env = Environment()
- env.Program('hello', Glob('*.c'))
- </programlisting>
+ <scons_example name="separate_glob_builddir_sconscript">
+ <file name="SConstruct">
+VariantDir('build', 'src')
+SConscript('build/SConscript')
+ </file>
+ <file name="src/SConscript" printme="1">
+env = Environment()
+env.Program('hello', Glob('*.c'))
+ </file>
+ <file name="src/f1.c">
+#include "f2.h"
+int main() { printf(f2()); }
+ </file>
+ <file name="src/f2.c">
+const char * f2() { return("Hello, world!\n"); }
+ </file>
+ <file name="src/f2.h">
+const char * f2();
+ </file>
+ </scons_example>
<para>
@@ -484,16 +530,11 @@ program using the F<build/foo.c> path name.
</para>
- <screen>
- % <userinput>ls src</userinput>
- SConscript f1.c f2.c f2.h
- % <userinput>scons -Q</userinput>
- cc -o build/f1.o -c build/f1.c
- cc -o build/f2.o -c build/f2.c
- cc -o build/hello build/f1.o build/f2.o
- % <userinput>ls build</userinput>
- SConscript f1.c f1.o f2.c f2.h f2.o hello
- </screen>
+ <scons_output example="separate_glob_builddir_sconscript" suffix="1">
+ <scons_output_command>ls src</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>ls build</scons_output_command>
+ </scons_output>
<para>
@@ -518,3 +559,5 @@ program using the F<build/foo.c> path name.
</section>
-->
+
+</chapter>
diff --git a/doc/user/sideeffect.in b/doc/user/sideeffect.in
deleted file mode 100644
index ece0300..0000000
--- a/doc/user/sideeffect.in
+++ /dev/null
@@ -1,216 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <!--
-
- <para>
-
- If &SCons; is unaware that a build step produces an extra file,
- the &SideEffect; method can be used to identify it,
- so that the file can be used as a dependency in subsequent build steps.
- However, the primary use for the &SideEffect; method
- is to prevent two build steps from simultaneously modifying the same file.
-
- </para>
-
- TODO: currently doesn't work due to issue #2154:
- http://scons.tigris.org/issues/show_bug.cgi?id=2154
-
- <para>
-
- If more than one build step creates or manipulates the same file,
- it can cause unpleasant results if both build steps are run at the same time.
- The shared file is declared as a side-effect of building the primary targets
- and &SCons; will prevent the two build steps from running in parallel.
-
- </para>
-
- <para>
-
- In this example, the <filename>SConscript</filename> uses
- &SideEffect; to inform &SCons; about the additional output file.
-
- </para>
-
- <scons_example name="SideEffectSimple">
- <file name="SConstruct" printme="1">
- env = Environment()
- f2 = env.Command('file2', 'log', Copy('$TARGET', '$SOURCE'))
- f1 = env.Command('file1', [],
- 'echo >$TARGET data1; echo >log updated file1'))
- env.SideEffect('log', env.Command('file1', [],
- 'echo >$TARGET data1; echo >log updated file1'))
- </file>
- </scons_example>
-
- <para>
-
- Even when run in parallel mode, &SCons; will run the two steps in order:
-
- </para>
-
- <scons_output example="SideEffectSimple">
- <scons_output_command>scons -Q --jobs=2</scons_output_command>
- </scons_output>
-
- -->
-
- <para>
-
- Sometimes a program the you need to call
- to build a target file
- will also update another file,
- such as a log file describing what the program
- does while building the target.
- For example, we the folowing configuration
- would have &SCons; invoke a hypothetical
- script named <application>build</application>
- (in the local directory)
- with command-line arguments that write
- log information to a common
- <filename>logfile.txt</filename> file:
-
- </para>
-
- <screen>
- env = Environment()
- env.Command('file1.out', 'file.in',
- './build --log logfile.txt $SOURCE $TARGET')
- env.Command('file2.out', 'file.in',
- './build --log logfile.txt $SOURCE $TARGET')
- <screen>
-
- <para>
-
- This can cause problems when running
- the build in parallel if
- &SCons; decides to update both targets
- by running both program invocations at the same time.
- The multiple program invocations
- may interfere with each other
- writing to the common log file,
- leading at best to intermixed output in the log file,
- and at worst to an actual failed build
- (on a system like Windows, for example,
- where only one process at a time can open the log file for writing).
-
- </para>
-
- <para>
-
- We can make sure that &SCons; does not
- run these <application>build</application>
- commands at the same time
- by using the &SideEffect; function
- to specify that updating
- the <filename>logfile.txt</filename> file
- is a side effect of building the specified
- <filename>file1</filename>
- and
- <filename>file2</filename>
- target files:
-
- </para>
-
- <scons_example name="SideEffectShared">
- <file name="SConstruct" printme="1">
- env = Environment()
- f1 = env.Command('file1.out', 'file1.in',
- './build --log logfile.txt $SOURCE $TARGET')
- f2 = env.Command('file2.out', 'file2.in',
- './build --log logfile.txt $SOURCE $TARGET')
- env.SideEffect('logfile.txt', f1 + f2)
- </file>
- <file name="file1.in">file1.in</file>
- <file name="file2.in">file2.in</file>
- <file name="build" chmod="0755">
- cat
- </file>
- </scons_example>
-
- <para>
-
- </para>
-
- <para>
-
- This makes sure the the two
- <application>./build</application> steps are run sequentially,
- even withthe <filename>--jobs=2</filename> in the command line:
-
- </para>
-
- <scons_output example="SideEffectShared">
- <scons_output_command>scons -Q --jobs=2</scons_output_command>
- </scons_output>
-
- <para>
-
- The &SideEffect; function can be called multiple
- times for the same side-effect file.
- Additionally, the name used as a &SideEffect; does not
- even need to actually exist as a file on disk.
- &SCons; will still make sure
- that the relevant targets
- will be executed sequentially, not in parallel:
-
- </para>
-
- <scons_example name="SideEffectParallel">
- <file name="SConstruct" printme="1">
- env = Environment()
- f1 = env.Command('file1.out', [], 'echo >$TARGET data1')
- env.SideEffect('not_really_updated', f1)
- f2 = env.Command('file2.out', [], 'echo >$TARGET data2')
- env.SideEffect('not_really_updated', f2)
- </file>
- </scons_example>
-
- <scons_output example="SideEffectParallel">
- <scons_output_command>scons -Q --jobs=2</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that it might be tempting to
- use &SideEffect; for additional target files
- that a command produces.
- For example, versions the Microsoft Visual C/C++ compiler
- produce a <filename>foo.ilk</filename>
- alongside compiling <filename>foo.obj</filename> file.
- Specifying <filename>foo.ilk</filename> as a
- side-effect of <filename>foo.obj</filename>
- is <emphasis>not</emphasis> a recommended use of &SideEffect;,
- because &SCons; handle side-effect files
- slightly differently in its analysis of the dependency graph.
- When a command produces multiple output files,
- they should be specified as multiple targets of
- the call to the relevant builder function,
- and the &SideEffect; function itself should really only be used
- when it's important to ensure that commands are not executed in parallel,
- such as when a "peripheral" file (such as a log file)
- may actually updated by more than one command invocation.
-
- </para>
diff --git a/doc/user/sideeffect.xml b/doc/user/sideeffect.xml
index a656f9d..72af9cc 100644
--- a/doc/user/sideeffect.xml
+++ b/doc/user/sideeffect.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-sideeffect"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Sideeffect files</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -23,8 +44,6 @@
-->
- <!--
-
<para>
If &SCons; is unaware that a build step produces an extra file,
@@ -35,9 +54,11 @@
</para>
+ <para>
TODO: currently doesn't work due to issue #2154:
http://scons.tigris.org/issues/show_bug.cgi?id=2154
-
+ </para>
+
<para>
If more than one build step creates or manipulates the same file,
@@ -54,14 +75,14 @@
</para>
- <scons_example name="SideEffectSimple">
+ <scons_example name="sideeffect_simple">
<file name="SConstruct" printme="1">
- env = Environment()
- f2 = env.Command('file2', 'log', Copy('$TARGET', '$SOURCE'))
- f1 = env.Command('file1', [],
- 'echo >$TARGET data1; echo >log updated file1'))
- env.SideEffect('log', env.Command('file1', [],
- 'echo >$TARGET data1; echo >log updated file1'))
+env = Environment()
+f2 = env.Command('file2', 'log', Copy('$TARGET', '$SOURCE'))
+f1 = env.Command('file1', [],
+ 'echo >$TARGET data1; echo >log updated file1'))
+env.SideEffect('log', env.Command('file1', [],
+ 'echo >$TARGET data1; echo >log updated file1'))
</file>
</scons_example>
@@ -71,12 +92,10 @@
</para>
- <scons_output example="SideEffectSimple">
+ <scons_output example="sideeffect_simple" suffix="1">
<scons_output_command>scons -Q --jobs=2</scons_output_command>
</scons_output>
- -->
-
<para>
Sometimes a program the you need to call
@@ -95,12 +114,12 @@
</para>
<screen>
- env = Environment()
- env.Command('file1.out', 'file.in',
- './build --log logfile.txt $SOURCE $TARGET')
- env.Command('file2.out', 'file.in',
- './build --log logfile.txt $SOURCE $TARGET')
- <screen>
+env = Environment()
+env.Command('file1.out', 'file.in',
+ './build --log logfile.txt $SOURCE $TARGET')
+env.Command('file2.out', 'file.in',
+ './build --log logfile.txt $SOURCE $TARGET')
+ </screen>
<para>
@@ -134,14 +153,21 @@
</para>
- <programlisting>
- env = Environment()
- f1 = env.Command('file1.out', 'file1.in',
- './build --log logfile.txt $SOURCE $TARGET')
- f2 = env.Command('file2.out', 'file2.in',
- './build --log logfile.txt $SOURCE $TARGET')
- env.SideEffect('logfile.txt', f1 + f2)
- </programlisting>
+ <scons_example name="sideeffect_shared">
+ <file name="SConstruct" printme="1">
+env = Environment()
+f1 = env.Command('file1.out', 'file1.in',
+ './build --log logfile.txt $SOURCE $TARGET')
+f2 = env.Command('file2.out', 'file2.in',
+ './build --log logfile.txt $SOURCE $TARGET')
+env.SideEffect('logfile.txt', f1 + f2)
+ </file>
+ <file name="file1.in">file1.in</file>
+ <file name="file2.in">file2.in</file>
+ <file name="build" chmod="0755">
+cat
+ </file>
+ </scons_example>
<para>
@@ -155,11 +181,9 @@
</para>
- <screen>
- % <userinput>scons -Q --jobs=2</userinput>
- ./build --log logfile.txt file1.in file1.out
- ./build --log logfile.txt file2.in file2.out
- </screen>
+ <scons_output example="sideeffect_shared" suffix="1">
+ <scons_output_command>scons -Q --jobs=2</scons_output_command>
+ </scons_output>
<para>
@@ -173,19 +197,19 @@
</para>
- <programlisting>
- env = Environment()
- f1 = env.Command('file1.out', [], 'echo &gt;$TARGET data1')
- env.SideEffect('not_really_updated', f1)
- f2 = env.Command('file2.out', [], 'echo &gt;$TARGET data2')
- env.SideEffect('not_really_updated', f2)
- </programlisting>
+ <scons_example name="sideeffect_parallel">
+ <file name="SConstruct" printme="1">
+env = Environment()
+f1 = env.Command('file1.out', [], 'echo >$TARGET data1')
+env.SideEffect('not_really_updated', f1)
+f2 = env.Command('file2.out', [], 'echo >$TARGET data2')
+env.SideEffect('not_really_updated', f2)
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q --jobs=2</userinput>
- echo &gt; file1.out data1
- echo &gt; file2.out data2
- </screen>
+ <scons_output example="sideeffect_parallel" suffix="1">
+ <scons_output_command>scons -Q --jobs=2</scons_output_command>
+ </scons_output>
<para>
@@ -209,3 +233,6 @@
may actually updated by more than one command invocation.
</para>
+
+ </chapter>
+
diff --git a/doc/user/simple.in b/doc/user/simple.in
deleted file mode 100644
index 76b044b..0000000
--- a/doc/user/simple.in
+++ /dev/null
@@ -1,517 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- In this chapter,
- you will see several examples of
- very simple build configurations using &SCons;,
- which will demonstrate how easy
- it is to use &SCons; to
- build programs from several different programming languages
- on different types of systems.
-
- </para>
-
- <section>
- <title>Building Simple C / C++ Programs</title>
-
- <para>
-
- Here's the famous "Hello, World!" program in C:
-
- </para>
-
- <programlisting>
- int
- main()
- {
- printf("Hello, world!\n");
- }
- </programlisting>
-
- <para>
-
- And here's how to build it using &SCons;.
- Enter the following into a file named &SConstruct;:
-
- </para>
-
- <scons_example name="ex1">
- <file name="SConstruct" printme="1">
- Program('hello.c')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- This minimal configuration file gives
- &SCons; two pieces of information:
- what you want to build
- (an executable program),
- and the input file from
- which you want it built
- (the <filename>hello.c</filename> file).
- &b-link-Program; is a <firstterm>builder_method</firstterm>,
- a Python call that tells &SCons; that you want to build an
- executable program.
-
- </para>
-
- <para>
-
- That's it. Now run the &scons; command to build the program.
- On a POSIX-compliant system like Linux or UNIX,
- you'll see something like:
-
- </para>
-
- <scons_output example="ex1" os="posix">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- On a Windows system with the Microsoft Visual C++ compiler,
- you'll see something like:
-
- </para>
-
- <scons_output example="ex1" os="win32">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- First, notice that you only need
- to specify the name of the source file,
- and that &SCons; correctly deduces the names of
- the object and executable files to be built
- from the base of the source file name.
-
- </para>
-
- <para>
-
- Second, notice that the same input &SConstruct; file,
- without any changes,
- generates the correct output file names on both systems:
- <filename>hello.o</filename> and <filename>hello</filename>
- on POSIX systems,
- <filename>hello.obj</filename> and <filename>hello.exe</filename>
- on Windows systems.
- This is a simple example of how &SCons;
- makes it extremely easy to
- write portable software builds.
-
- </para>
-
- <para>
-
- (Note that we won't provide duplicate side-by-side
- POSIX and Windows output for all of the examples in this guide;
- just keep in mind that, unless otherwise specified,
- any of the examples should work equally well on both types of systems.)
-
- </para>
-
- </section>
-
- <section>
- <title>Building Object Files</title>
-
- <para>
-
- The &b-link-Program; builder method is only one of
- many builder methods that &SCons; provides
- to build different types of files.
- Another is the &b-link-Object; builder method,
- which tells &SCons; to build an object file
- from the specified source file:
-
- </para>
-
- <scons_example name="Object">
- <file name="SConstruct" printme="1">
- Object('hello.c')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Now when you run the &scons; command to build the program,
- it will build just the &hello_o; object file on a POSIX system:
-
- </para>
-
- <scons_output example="Object" os="posix">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- And just the &hello_obj; object file
- on a Windows system (with the Microsoft Visual C++ compiler):
-
- </para>
-
- <scons_output example="Object" os="win32">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Simple Java Builds</title>
-
- <para>
-
- &SCons; also makes building with Java extremely easy.
- Unlike the &b-link-Program; and &b-link-Object; builder methods,
- however, the &b-link-Java; builder method
- requires that you specify
- the name of a destination directory in which
- you want the class files placed,
- followed by the source directory
- in which the <filename>.java</filename> files live:
-
- </para>
-
- <scons_example name="java">
- <file name="SConstruct" printme="1">
- Java('classes', 'src')
- </file>
- <file name="src/hello.java">
- public class Example1
- {
- public static void main(String[] args)
- {
- System.out.println("Hello Java world!\n");
- }
- }
- </file>
- </scons_example>
-
- <para>
-
- If the <filename>src</filename> directory
- contains a single <filename>hello.java</filename> file,
- then the output from running the &scons; command
- would look something like this
- (on a POSIX system):
-
- </para>
-
- <scons_output example="java" os="posix">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- We'll cover Java builds in more detail,
- including building Java archive (<filename>.jar</filename>)
- and other types of file,
- in <xref linkend="chap-java"></xref>.
-
- </para>
-
- </section>
-
- <section>
- <title>Cleaning Up After a Build</title>
-
- <para>
-
- When using &SCons;, it is unnecessary to add special
- commands or target names to clean up after a build.
- Instead, you simply use the
- <literal>-c</literal> or <literal>--clean</literal>
- option when you invoke &SCons;,
- and &SCons; removes the appropriate built files.
- So if we build our example above
- and then invoke <literal>scons -c</literal>
- afterwards, the output on POSIX looks like:
-
- </para>
-
- <scons_example name="clean">
- <file name="SConstruct">
- Program('hello.c')
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- </scons_example>
-
- <scons_output example="clean" os="posix">
- <scons_output_command>scons</scons_output_command>
- <scons_output_command>scons -c</scons_output_command>
- </scons_output>
-
- <para>
-
- And the output on Windows looks like:
-
- </para>
-
- <scons_output example="clean" os="win32">
- <scons_output_command>scons</scons_output_command>
- <scons_output_command>scons -c</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice that &SCons; changes its output to tell you that it
- is <literal>Cleaning targets ...</literal> and
- <literal>done cleaning targets.</literal>
-
- </para>
-
- </section>
-
- <section>
- <title>The &SConstruct; File</title>
-
- <para>
-
- If you're used to build systems like &Make;
- you've already figured out that the &SConstruct; file
- is the &SCons; equivalent of a &Makefile;.
- That is, the &SConstruct; file is the input file
- that &SCons; reads to control the build.
-
- </para>
-
- <section>
- <title>&SConstruct; Files Are Python Scripts</title>
-
- <para>
-
- There is, however, an important difference between
- an &SConstruct; file and a &Makefile;:
- the &SConstruct; file is actually a Python script.
- If you're not already familiar with Python, don't worry.
- This User's Guide will introduce you step-by-step
- to the relatively small amount of Python you'll
- need to know to be able to use &SCons; effectively.
- And Python is very easy to learn.
-
- </para>
-
- <para>
-
- One aspect of using Python as the
- scripting language is that you can put comments
- in your &SConstruct; file using Python's commenting convention;
- that is, everything between a '#' and the end of the line
- will be ignored:
-
- </para>
-
- <programlisting>
- # Arrange to build the "hello" program.
- Program('hello.c') # "hello.c" is the source file.
- </programlisting>
-
- <para>
-
- You'll see throughout the remainder of this Guide
- that being able to use the power of a
- real scripting language
- can greatly simplify the solutions
- to complex requirements of real-world builds.
-
- </para>
-
- </section>
-
- <section>
- <title>&SCons; Functions Are Order-Independent</title>
-
- <para>
-
- One important way in which the &SConstruct;
- file is not exactly like a normal Python script,
- and is more like a &Makefile;,
- is that the order in which
- the &SCons; functions are called in
- the &SConstruct; file
- does <emphasis>not</emphasis>
- affect the order in which &SCons;
- actually builds the programs and object files
- you want it to build.<footnote>
- <para>In programming parlance,
- the &SConstruct; file is
- <emphasis>declarative</emphasis>,
- meaning you tell &SCons; what you want done
- and let it figure out the order in which to do it,
- rather than strictly <emphasis>imperative</emphasis>,
- where you specify explicitly the order in
- which to do things.
- </para>
- </footnote>
- In other words, when you call the &b-link-Program; builder
- (or any other builder method),
- you're not telling &SCons; to build
- the program at the instant the builder method is called.
- Instead, you're telling &SCons; to build the program
- that you want, for example,
- a program built from a file named &hello_c;,
- and it's up to &SCons; to build that program
- (and any other files) whenever it's necessary.
- (We'll learn more about how
- &SCons; decides when building or rebuilding a file
- is necessary in <xref linkend="chap-depends"></xref>, below.)
-
- </para>
-
- <para>
-
- &SCons; reflects this distinction between
- <emphasis>calling a builder method like</emphasis> &b-Program;
- and <emphasis>actually building the program</emphasis>
- by printing the status messages that indicate
- when it's "just reading" the &SConstruct; file,
- and when it's actually building the target files.
- This is to make it clear when &SCons; is
- executing the Python statements that make up the &SConstruct; file,
- and when &SCons; is actually executing the
- commands or other actions to
- build the necessary files.
-
- </para>
-
- <para>
-
- Let's clarify this with an example.
- Python has a <literal>print</literal> statement that
- prints a string of characters to the screen.
- If we put <literal>print</literal> statements around
- our calls to the &b-Program; builder method:
-
- </para>
-
- <scons_example name="declarative">
- <file name="SConstruct" printme="1">
- print "Calling Program('hello.c')"
- Program('hello.c')
- print "Calling Program('goodbye.c')"
- Program('goodbye.c')
- print "Finished calling Program()"
- </file>
- <file name="hello.c">
- int main() { printf("Hello, world!\n"); }
- </file>
- <file name="goodbye.c">
- int main() { printf("Goodbye, world!\n"); }
- </file>
- </scons_example>
-
- <para>
-
- Then when we execute &SCons;,
- we see the output from the <literal>print</literal>
- statements in between the messages about
- reading the &SConscript; files,
- indicating that that is when the
- Python statements are being executed:
-
- </para>
-
- <scons_output example="declarative" os="posix">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- Notice also that &SCons; built the &goodbye; program first,
- even though the "reading &SConscript;" output
- shows that we called <literal>Program('hello.c')</literal>
- first in the &SConstruct; file.
-
- </para>
-
- </section>
-
- </section>
-
- <section>
- <title>Making the &SCons; Output Less Verbose</title>
-
- <para>
-
- You've already seen how &SCons; prints
- some messages about what it's doing,
- surrounding the actual commands used to build the software:
-
- </para>
-
- <scons_output example="ex1" os="win32">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- These messages emphasize the
- order in which &SCons; does its work:
- all of the configuration files
- (generically referred to as &SConscript; files)
- are read and executed first,
- and only then are the target files built.
- Among other benefits, these messages help to distinguish between
- errors that occur while the configuration files are read,
- and errors that occur while targets are being built.
-
- </para>
-
- <para>
-
- One drawback, of course, is that these messages clutter the output.
- Fortunately, they're easily disabled by using
- the &Q; option when invoking &SCons;:
-
- </para>
-
- <scons_output example="ex1" os="win32">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- Because we want this User's Guide to focus
- on what &SCons; is actually doing,
- we're going to use the &Q; option
- to remove these messages from the
- output of all the remaining examples in this Guide.
-
- </para>
-
- </section>
diff --git a/doc/user/simple.xml b/doc/user/simple.xml
index 238e40c..3ddb0dc 100644
--- a/doc/user/simple.xml
+++ b/doc/user/simple.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-simple"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Simple Builds</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -45,11 +66,11 @@
</para>
<programlisting>
- int
- main()
- {
- printf("Hello, world!\n");
- }
+int
+main()
+{
+ printf("Hello, world!\n");
+}
</programlisting>
<para>
@@ -59,9 +80,14 @@
</para>
- <programlisting>
- Program('hello.c')
- </programlisting>
+ <scons_example name="simple_ex1">
+ <file name="SConstruct" printme="1">
+Program('hello.c')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -86,15 +112,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- scons: done building targets.
- </screen>
+ <scons_output example="simple_ex1" os="posix" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -103,16 +123,9 @@
</para>
- <screen>
- C:\><userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- cl /Fohello.obj /c hello.c /nologo
- link /nologo /OUT:hello.exe hello.obj
- embedManifestExeCheck(target, source, env)
- scons: done building targets.
- </screen>
+ <scons_output example="simple_ex1" os="win32" suffix="2">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -164,9 +177,14 @@
</para>
- <programlisting>
- Object('hello.c')
- </programlisting>
+ <scons_example name="simple_Object">
+ <file name="SConstruct" printme="1">
+Object('hello.c')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -175,14 +193,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- cc -o hello.o -c hello.c
- scons: done building targets.
- </screen>
+ <scons_output example="simple_Object" os="posix" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -191,14 +204,9 @@
</para>
- <screen>
- C:\><userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- cl /Fohello.obj /c hello.c /nologo
- scons: done building targets.
- </screen>
+ <scons_output example="simple_Object" os="win32" suffix="2">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
</section>
@@ -218,9 +226,20 @@
</para>
- <programlisting>
- Java('classes', 'src')
- </programlisting>
+ <scons_example name="simple_java">
+ <file name="SConstruct" printme="1">
+Java('classes', 'src')
+ </file>
+ <file name="src/hello.java">
+public class Example1
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+}
+ </file>
+ </scons_example>
<para>
@@ -232,14 +251,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- javac -d classes -sourcepath src src/hello.java
- scons: done building targets.
- </screen>
+ <scons_output example="simple_java" os="posix" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -269,24 +283,19 @@
</para>
-
-
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- scons: done building targets.
- % <userinput>scons -c</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Cleaning targets ...
- Removed hello.o
- Removed hello
- scons: done cleaning targets.
- </screen>
+ <scons_example name="simple_clean">
+ <file name="SConstruct">
+Program('hello.c')
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ </scons_example>
+
+ <scons_output example="simple_clean" os="posix" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ <scons_output_command>scons -c</scons_output_command>
+ </scons_output>
<para>
@@ -294,23 +303,10 @@
</para>
- <screen>
- C:\><userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- cl /Fohello.obj /c hello.c /nologo
- link /nologo /OUT:hello.exe hello.obj
- embedManifestExeCheck(target, source, env)
- scons: done building targets.
- C:\><userinput>scons -c</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Cleaning targets ...
- Removed hello.obj
- Removed hello.exe
- scons: done cleaning targets.
- </screen>
+ <scons_output example="simple_clean" os="win32" suffix="2">
+ <scons_output_command>scons</scons_output_command>
+ <scons_output_command>scons -c</scons_output_command>
+ </scons_output>
<para>
@@ -362,8 +358,8 @@
</para>
<programlisting>
- # Arrange to build the "hello" program.
- Program('hello.c') # "hello.c" is the source file.
+# Arrange to build the "hello" program.
+Program('hello.c') # "hello.c" is the source file.
</programlisting>
<para>
@@ -444,13 +440,21 @@
</para>
- <programlisting>
- print "Calling Program('hello.c')"
- Program('hello.c')
- print "Calling Program('goodbye.c')"
- Program('goodbye.c')
- print "Finished calling Program()"
- </programlisting>
+ <scons_example name="simple_declarative">
+ <file name="SConstruct" printme="1">
+print "Calling Program('hello.c')"
+Program('hello.c')
+print "Calling Program('goodbye.c')"
+Program('goodbye.c')
+print "Finished calling Program()"
+ </file>
+ <file name="hello.c">
+int main() { printf("Hello, world!\n"); }
+ </file>
+ <file name="goodbye.c">
+int main() { printf("Goodbye, world!\n"); }
+ </file>
+ </scons_example>
<para>
@@ -463,20 +467,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- Calling Program('hello.c')
- Calling Program('goodbye.c')
- Finished calling Program()
- scons: done reading SConscript files.
- scons: Building targets ...
- cc -o goodbye.o -c goodbye.c
- cc -o goodbye goodbye.o
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- scons: done building targets.
- </screen>
+ <scons_output example="simple_declarative" os="posix" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -502,16 +495,9 @@
</para>
- <screen>
- C:\><userinput>scons</userinput>
- scons: Reading SConscript files ...
- scons: done reading SConscript files.
- scons: Building targets ...
- cl /Fohello.obj /c hello.c /nologo
- link /nologo /OUT:hello.exe hello.obj
- embedManifestExeCheck(target, source, env)
- scons: done building targets.
- </screen>
+ <scons_output example="simple_ex1" os="win32" suffix="3">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -535,12 +521,9 @@
</para>
- <screen>
- C:\><userinput>scons -Q</userinput>
- cl /Fohello.obj /c hello.c /nologo
- link /nologo /OUT:hello.exe hello.obj
- embedManifestExeCheck(target, source, env)
- </screen>
+ <scons_output example="simple_ex1" os="win32" suffix="4">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -553,3 +536,5 @@
</para>
</section>
+
+</chapter>
diff --git a/doc/user/sourcecode.in b/doc/user/sourcecode.in
deleted file mode 100644
index d3547fb..0000000
--- a/doc/user/sourcecode.in
+++ /dev/null
@@ -1,162 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
--->
-
- <para>
-
- XXX
-
- </para>
-
- <section>
- <title>Fetching Source Code From BitKeeper</title>
-
- <para>
-
- XXX
-
- </para>
-
- <scons_example name="ex_bitkeeper">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.SourceCode('.', env.BitKeeper())
- env.Program('hello.c')
- </file>
- <file name="s.hello.c">
- s.hello.c
- </file>
- </scons_example>
-
- <scons_output example="ex_bitkeeper">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Fetching Source Code From CVS</title>
-
- <para>
-
- XXX
-
- </para>
-
- <scons_example name="ex_cvs">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.SourceCode('.', env.CVS('/usr/local/CVS'))
- env.Program('hello.c')
- </file>
- </scons_example>
-
- <scons_output example="ex_cvs">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Fetching Source Code From RCS</title>
-
- <para>
-
- XXX
-
- </para>
-
- <scons_example name="ex_rcs">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.SourceCode('.', env.RCS())
- env.Program('hello.c')
- </file>
- <file name="hello.c,v">
- hello.c,v
- </file>
- </scons_example>
-
- <scons_output example="ex_rcs">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
- <title>Fetching Source Code From SCCS</title>
-
- <para>
-
- XXX
-
- </para>
-
- <scons_example name="ex_sccs">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.SourceCode('.', env.SCCS())
- env.Program('hello.c')
- </file>
- <file name="s.hello.c">
- s.hello.c
- </file>
- </scons_example>
-
- <scons_output example="ex_sccs">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- <!--
-
- <section>
- <title>Fetching Source Code From Subversion</title>
-
- <para>
-
- XXX
-
- </para>
-
- <scons_example name="ex_subversion">
- <file name="SConstruct" printme="1">
- env = Environment()
- env.SourceCode('.', env.Subversion('XXX'))
- env.Program('hello.c')
- </file>
- </scons_example>
-
- <scons_output example="ex_subversion">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- </section>
-
- -->
diff --git a/doc/user/sourcecode.xml b/doc/user/sourcecode.xml
index ae84ec9..a1234fc 100644
--- a/doc/user/sourcecode.xml
+++ b/doc/user/sourcecode.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-sourcecode"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Fetching Files From Source Code Management Systems</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -42,18 +63,20 @@
</para>
- <programlisting>
- env = Environment()
- env.SourceCode('.', env.BitKeeper())
- env.Program('hello.c')
- </programlisting>
+ <scons_example name="sourcecode_bitkeeper">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.SourceCode('.', env.BitKeeper())
+env.Program('hello.c')
+ </file>
+ <file name="s.hello.c">
+s.hello.c
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- bk get hello.c
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="sourcecode_bitkeeper" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -66,18 +89,17 @@
</para>
- <programlisting>
- env = Environment()
- env.SourceCode('.', env.CVS('/usr/local/CVS'))
- env.Program('hello.c')
- </programlisting>
+ <scons_example name="sourcecode_cvs">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.SourceCode('.', env.CVS('/usr/local/CVS'))
+env.Program('hello.c')
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- cvs -d /usr/local/CVS co hello.c
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="sourcecode_cvs" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -90,18 +112,20 @@
</para>
- <programlisting>
- env = Environment()
- env.SourceCode('.', env.RCS())
- env.Program('hello.c')
- </programlisting>
+ <scons_example name="sourcecode_rcs">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.SourceCode('.', env.RCS())
+env.Program('hello.c')
+ </file>
+ <file name="hello.c,v">
+hello.c,v
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- co hello.c
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="sourcecode_rcs" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -114,18 +138,20 @@
</para>
- <programlisting>
- env = Environment()
- env.SourceCode('.', env.SCCS())
- env.Program('hello.c')
- </programlisting>
+ <scons_example name="sourcecode_sccs">
+ <file name="SConstruct" printme="1">
+env = Environment()
+env.SourceCode('.', env.SCCS())
+env.Program('hello.c')
+ </file>
+ <file name="s.hello.c">
+s.hello.c
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- sccs get hello.c
- cc -o hello.o -c hello.c
- cc -o hello hello.o
- </screen>
+ <scons_output example="sourcecode_sccs" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</section>
@@ -140,18 +166,20 @@
</para>
- <scons_example name="ex_subversion">
+ <scons_example name="sourcecode_subversion">
<file name="SConstruct" printme="1">
- env = Environment()
- env.SourceCode('.', env.Subversion('XXX'))
- env.Program('hello.c')
+env = Environment()
+env.SourceCode('.', env.Subversion('XXX'))
+env.Program('hello.c')
</file>
</scons_example>
- <scons_output example="ex_subversion">
+ <scons_output example="sourcecode_subversion" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
</section>
-->
+
+</chapter>
diff --git a/doc/user/tasks.in b/doc/user/tasks.in
deleted file mode 100644
index 54cdf22..0000000
--- a/doc/user/tasks.in
+++ /dev/null
@@ -1,146 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<para>
-There is a common set of simple tasks that many build configurations rely
-on as they become more complex. Most build tools have special
-purpose constructs for performing these tasks, but since &SConscript;
-files are &Python; scripts, you can use more flexible built-in &Python;
-services to perform these tasks. This appendix lists a number of these
-tasks and how to implement them in &Python; and &SCons;.
-</para>
-
-<example>
-<title>Wildcard globbing to create a list of filenames</title>
-<programlisting>
-files = Glob(wildcard)
-</programlisting>
-</example>
-
-<example>
-<title>Filename extension substitution</title>
-<programlisting>
-import os.path
-filename = os.path.splitext(filename)[0]+extension
-</programlisting>
-</example>
-
-<example>
-<title>Appending a path prefix to a list of filenames</title>
-<programlisting>
-import os.path
-filenames = [os.path.join(prefix, x) for x in filenames]
-</programlisting>
-</example>
-
-<example>
-<title>Substituting a path prefix with another one</title>
-<programlisting>
-if filename.find(old_prefix) == 0:
- filename = filename.replace(old_prefix, new_prefix)
-</programlisting>
-</example>
-
-<example>
-<title>Filtering a filename list to exclude/retain only a specific set
-of extensions</title>
-<programlisting>
-import os.path
-filenames = [x for x in filenames if os.path.splitext(x)[1] in extensions]
-</programlisting>
-</example>
-
-<example>
-<title>The "backtick function": run a shell command and capture the
-output</title>
-<programlisting>import os
-output = os.popen(command).read()
-</programlisting>
-</example>
-
-<example>
-<title>Generating source code: how code can be generated and used by SCons</title>
-
-<para>
-
-The Copy builders here could be any arbitrary shell or python function
-that produces one or more files. This example shows how to create
-those files and use them in &SCons;.
-
-</para>
-
-<scons_example name="ex1">
-<file name="SConstruct" printme="1">
-#### SConstruct
-env = Environment()
-env.Append(CPPPATH = "#")
-
-## Header example
-env.Append(BUILDERS =
- {'Copy1' : Builder(action = 'cat &lt; $SOURCE > $TARGET',
- suffix='.h', src_suffix='.bar')})
-env.Copy1('test.bar') # produces test.h from test.bar.
-env.Program('app','main.cpp') # indirectly depends on test.bar
-
-## Source file example
-env.Append(BUILDERS =
- {'Copy2' : Builder(action = 'cat &lt; $SOURCE > $TARGET',
- suffix='.cpp', src_suffix='.bar2')})
-foo = env.Copy2('foo.bar2') # produces foo.cpp from foo.bar2.
-env.Program('app2',['main2.cpp'] + foo) # compiles main2.cpp and foo.cpp into app2.
-</file>
-
-<file name="main.cpp">
-#include "test.h"
-</file>
-<file name="test.bar">
-// nothing here
-</file>
-<file name="main2.cpp">
-//// main2.cpp
-</file>
-<file name="foo.bar2">
-// nothing here
-</file>
-</scons_example>
-
-<para>
-
-Where main.cpp looks like this:
-
-</para>
-
- <scons_example_file example="ex1" name="main.cpp">
- </scons_example_file>
-
-<para>
-produces this:
-</para>
-
- <scons_output example="ex1">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
-</example>
diff --git a/doc/user/tasks.xml b/doc/user/tasks.xml
index b51b3b1..68112a1 100644
--- a/doc/user/tasks.xml
+++ b/doc/user/tasks.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<appendix id="app-tasks"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Handling Common Tasks</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -91,25 +112,40 @@ those files and use them in &SCons;.
</para>
-<programlisting>
+<scons_example name="tasks_ex1">
+<file name="SConstruct" printme="1">
#### SConstruct
env = Environment()
env.Append(CPPPATH = "#")
## Header example
env.Append(BUILDERS =
- {'Copy1' : Builder(action = 'cat &lt; $SOURCE &gt; $TARGET',
+ {'Copy1' : Builder(action = 'cat &lt; $SOURCE > $TARGET',
suffix='.h', src_suffix='.bar')})
env.Copy1('test.bar') # produces test.h from test.bar.
env.Program('app','main.cpp') # indirectly depends on test.bar
## Source file example
env.Append(BUILDERS =
- {'Copy2' : Builder(action = 'cat &lt; $SOURCE &gt; $TARGET',
+ {'Copy2' : Builder(action = 'cat &lt; $SOURCE > $TARGET',
suffix='.cpp', src_suffix='.bar2')})
foo = env.Copy2('foo.bar2') # produces foo.cpp from foo.bar2.
env.Program('app2',['main2.cpp'] + foo) # compiles main2.cpp and foo.cpp into app2.
-</programlisting>
+</file>
+
+<file name="main.cpp">
+#include "test.h"
+</file>
+<file name="test.bar">
+// nothing here
+</file>
+<file name="main2.cpp">
+//// main2.cpp
+</file>
+<file name="foo.bar2">
+// nothing here
+</file>
+</scons_example>
<para>
@@ -117,21 +153,17 @@ Where main.cpp looks like this:
</para>
-
- <programlisting>
-#include "test.h"
-</programlisting>
+ <scons_example_file example="tasks_ex1" name="main.cpp">
+ </scons_example_file>
<para>
produces this:
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o app main.cpp
- cat &lt; foo.bar2 &gt; foo.cpp
- cc -o app2 main2.cpp foo.cpp
- cat &lt; test.bar &gt; test.h
- </screen>
+ <scons_output example="tasks_ex1" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
</example>
+
+</appendix>
diff --git a/doc/user/titlepage/SConsBuildBricks_path.svg b/doc/user/titlepage/SConsBuildBricks_path.svg
new file mode 100644
index 0000000..ed0c60d
--- /dev/null
+++ b/doc/user/titlepage/SConsBuildBricks_path.svg
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="636.73999"
+ height="80.330002"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.1 r9760"
+ version="1.0"
+ sodipodi:docname="SConsBuildBricks.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="80.565423"
+ inkscape:cy="53.016465"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="942"
+ inkscape:window-height="667"
+ inkscape:window-x="52"
+ inkscape:window-y="25"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>2008-05-18</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the pixeled SCons logo (author unknown).</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.5/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:prohibits
+ rdf:resource="http://web.resource.org/cc/CommercialUse" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.3227,-503.6795)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline">
+ <g
+ transform="translate(-264.04696,-505.06832)"
+ style="display:inline"
+ id="Brick-to-Brick-9"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170-4"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143-1"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145-9"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147-5"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149-7"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185-4">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155-1"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218-2"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ style="font-size:12.22589397px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ id="text1316-2"
+ transform="translate(0.27574335,-0.05632028)">
+ <path
+ d="m 3.8227174,71.530541 0,3.265412 1.9341746,0 c 0.6486997,10e-7 1.1282631,-0.133322 1.4386916,-0.399969 0.3143968,-0.270623 0.4715981,-0.68253 0.4716043,-1.235722 C 7.6671817,72.603095 7.5099804,72.193178 7.1955836,71.930509 6.8851551,71.663867 6.4055917,71.530545 5.756892,71.530541 l -1.9341746,0 m 0,-3.665381 0,2.686354 1.7849327,0 c 0.5890032,5e-6 1.0267789,-0.109439 1.3133285,-0.328332 C 7.211497,70.00032 7.3567589,69.662038 7.3567648,69.208337 7.3567589,68.758629 7.211497,68.422337 6.9209786,68.199462 6.634429,67.976602 6.1966533,67.865168 5.6076501,67.86516 l -1.7849327,0 m -1.2058743,-0.990966 3.0803522,0 c 0.9193247,9e-6 1.6277254,0.191038 2.1252042,0.573089 0.497466,0.382067 0.7462022,0.925307 0.7462093,1.629721 -7.1e-6,0.545237 -0.1273601,0.979033 -0.3820592,1.301389 -0.2547126,0.322368 -0.6288118,0.523347 -1.1222988,0.602937 0.5929814,0.127358 1.0526459,0.394003 1.3789949,0.799937 0.3303146,0.401962 0.4954754,0.905404 0.495483,1.510328 -7.6e-6,0.795958 -0.2706325,1.410834 -0.8118758,1.844629 -0.5412567,0.433797 -1.311344,0.650695 -2.3102642,0.650695 l -3.1997456,0 0,-8.912725"
+ id="path3187"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 10.837085,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3189"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 18.711086,69.100883 1.09842,0 0,6.686036 -1.09842,0 0,-6.686036 m 0,-2.602778 1.09842,0 0,1.390934 -1.09842,0 0,-1.390934"
+ id="path3191"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 22.101862,66.498105 1.09842,0 0,9.288814 -1.09842,0 0,-9.288814"
+ id="path3193"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 29.892286,70.115728 0,-3.617623 1.09842,0 0,9.288814 -1.09842,0 0,-1.002906 c -0.230833,0.397979 -0.523347,0.694473 -0.877543,0.889482 -0.350225,0.191029 -0.772081,0.286544 -1.265571,0.286544 -0.807898,0 -1.466552,-0.322362 -1.975962,-0.967087 -0.505433,-0.644724 -0.758149,-1.492417 -0.758149,-2.543082 0,-1.050658 0.252716,-1.898351 0.758149,-2.543081 0.50941,-0.644718 1.168064,-0.96708 1.975962,-0.967087 0.49349,7e-6 0.915346,0.09751 1.265571,0.292514 0.354196,0.191036 0.64671,0.485539 0.877543,0.883512 M 26.1493,72.44987 c -2e-6,0.807899 0.165159,1.442674 0.495483,1.904327 0.334299,0.457676 0.791973,0.686513 1.373025,0.686512 0.581044,10e-7 1.038718,-0.228836 1.373025,-0.686512 0.334296,-0.461653 0.501447,-1.096428 0.501453,-1.904327 -6e-6,-0.807891 -0.167157,-1.440676 -0.501453,-1.898356 -0.334307,-0.461649 -0.791981,-0.692477 -1.373025,-0.692482 -0.581052,5e-6 -1.038726,0.230833 -1.373025,0.692482 -0.330324,0.45768 -0.495485,1.090465 -0.495483,1.898356"
+ id="path3195"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 39.927309,76.407765 c -0.310427,0.795955 -0.61289,1.315316 -0.90739,1.558085 -0.294507,0.242764 -0.688505,0.364148 -1.181996,0.36415 l -0.877542,0 0,-0.91933 0.644725,0 c 0.302461,-10e-7 0.537268,-0.07164 0.704421,-0.214908 0.167149,-0.143274 0.352208,-0.481555 0.55518,-1.014845 l 0.196999,-0.501453 -2.704262,-6.578581 1.164086,0 2.089386,5.229435 2.089387,-5.229435 1.164086,0 -2.93708,7.306882"
+ id="path3197"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 46.971524,69.870971 c -0.589011,6e-6 -1.054645,0.230833 -1.396904,0.692482 -0.342263,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507423,1.892387 0.342258,0.457676 0.809882,0.686514 1.402873,0.686513 0.585024,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513387,-1.090458 0.513393,-1.886418 -6e-6,-0.791972 -0.171137,-1.418788 -0.513393,-1.880447 -0.342266,-0.465629 -0.80591,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955144,7e-6 1.705332,0.310429 2.250568,0.931269 0.545223,0.620851 0.817838,1.480484 0.817845,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817845,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250568,0.931269 -0.95913,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541251,-0.624825 -0.811876,-1.484457 -0.811876,-2.5789 0,-1.098415 0.270625,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297407,-0.931262 2.256537,-0.931269"
+ id="path3199"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 51.741295,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3201"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 63.489616,70.127667 c -0.123378,-0.07163 -0.258691,-0.123368 -0.405938,-0.155212 -0.143277,-0.03581 -0.302468,-0.05372 -0.477574,-0.05373 -0.62085,6e-6 -1.098423,0.202975 -1.432722,0.608907 -0.330324,0.401963 -0.495485,0.981021 -0.495483,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.230825,-0.405932 0.531298,-0.706405 0.901421,-0.901421 0.370116,-0.198982 0.819831,-0.298476 1.349146,-0.298483 0.07561,7e-6 0.159187,0.006 0.250727,0.01791 0.09153,0.008 0.193014,0.0219 0.304453,0.04179 l 0.006,1.128269"
+ id="path3203"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 72.808278,69.297882 0,1.038724 c -0.310428,-0.159186 -0.63279,-0.27858 -0.967087,-0.358181 -0.334306,-0.07959 -0.680547,-0.119388 -1.038723,-0.119393 -0.545234,5e-6 -0.955151,0.08358 -1.229753,0.250726 -0.270628,0.167156 -0.40594,0.417882 -0.405938,0.752179 -2e-6,0.254711 0.0975,0.45569 0.292514,0.602937 0.195007,0.143276 0.587015,0.280579 1.176026,0.411908 l 0.376089,0.08357 c 0.780033,0.167155 1.333223,0.403952 1.65957,0.710391 0.330316,0.302467 0.495477,0.726313 0.495483,1.271541 -6e-6,0.620848 -0.246752,1.11235 -0.74024,1.47451 -0.489518,0.36216 -1.16409,0.54324 -2.02372,0.54324 -0.358183,0 -0.732282,-0.03582 -1.122299,-0.107454 -0.38604,-0.06766 -0.793967,-0.171131 -1.223783,-0.310423 l 0,-1.134238 c 0.405937,0.210929 0.805905,0.370121 1.199905,0.477574 0.393996,0.103475 0.784014,0.155212 1.170056,0.155211 0.517368,10e-7 0.915346,-0.08755 1.193935,-0.262665 0.27858,-0.179089 0.417873,-0.429816 0.417877,-0.752179 -4e-6,-0.298482 -0.101489,-0.527319 -0.304453,-0.686513 -0.198994,-0.159189 -0.638759,-0.31241 -1.319298,-0.459665 l -0.38206,-0.08955 c -0.680544,-0.143269 -1.172047,-0.362157 -1.474509,-0.656664 -0.302465,-0.29848 -0.453696,-0.706407 -0.453695,-1.223784 -10e-7,-0.6288 0.222866,-1.114333 0.668603,-1.4566 0.445734,-0.342255 1.078519,-0.513385 1.898357,-0.513392 0.405934,7e-6 0.787993,0.02985 1.146177,0.08955 0.358176,0.0597 0.688498,0.149248 0.990966,0.268635"
+ id="path3205"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 77.51238,69.870971 c -0.589011,6e-6 -1.054646,0.230833 -1.396904,0.692482 -0.342264,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507422,1.892387 0.342259,0.457676 0.809883,0.686514 1.402874,0.686513 0.585023,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513386,-1.090458 0.513392,-1.886418 -6e-6,-0.791972 -0.171136,-1.418788 -0.513392,-1.880447 -0.342266,-0.465629 -0.805911,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955143,7e-6 1.705331,0.310429 2.250567,0.931269 0.545224,0.620851 0.817839,1.480484 0.817846,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817846,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250567,0.931269 -0.959131,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541252,-0.624825 -0.811877,-1.484457 -0.811876,-2.5789 -10e-7,-1.098415 0.270624,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297406,-0.931262 2.256537,-0.931269"
+ id="path3207"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 85.780384,66.498105 0,0.91336 -1.050663,0 c -0.394002,8e-6 -0.668607,0.0796 -0.823815,0.238787 -0.151235,0.159199 -0.22685,0.445743 -0.226848,0.859633 l 0,0.590998 1.808812,0 0,0.853663 -1.808812,0 0,5.832373 -1.10439,0 0,-5.832373 -1.050663,0 0,-0.853663 1.050663,0 0,-0.465635 c -10e-7,-0.744211 0.173119,-1.285461 0.519362,-1.623751 0.346239,-0.342253 0.895448,-0.513383 1.64763,-0.513392 l 1.038724,0"
+ id="path3209"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 87.565311,67.202526 0,1.898357 2.262506,0 0,0.853663 -2.262506,0 0,3.629563 c -3e-6,0.545232 0.07362,0.895452 0.220878,1.050662 0.151229,0.155213 0.455682,0.232819 0.91336,0.232818 l 1.128268,0 0,0.91933 -1.128268,0 c -0.847696,0 -1.432724,-0.157202 -1.755084,-0.471605 -0.322364,-0.318382 -0.483545,-0.89545 -0.483544,-1.731205 l 0,-3.629563 -0.805906,0 0,-0.853663 0.805906,0 0,-1.898357 1.10439,0"
+ id="path3211"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 90.639696,69.100883 1.09842,0 1.373026,5.217496 1.367055,-5.217496 1.29542,0 1.373025,5.217496 1.367055,-5.217496 1.098421,0 -1.749115,6.686036 -1.29542,0 -1.438691,-5.480162 -1.444662,5.480162 -1.295419,0 -1.749115,-6.686036"
+ id="path3213"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 104.32219,72.425992 c -0.8875,3e-6 -1.50237,0.101487 -1.84463,0.304453 -0.34226,0.202972 -0.51339,0.549213 -0.51339,1.038724 0,0.39002 0.12735,0.700443 0.38206,0.931269 0.25868,0.226848 0.6089,0.340272 1.05066,0.340271 0.6089,10e-7 1.09643,-0.214907 1.46257,-0.644725 0.37011,-0.433794 0.55517,-1.008872 0.55518,-1.725236 l 0,-0.244756 -1.09245,0 m 2.19087,-0.453696 0,3.814623 -1.09842,0 0,-1.014845 c -0.25073,0.405938 -0.56314,0.706412 -0.93724,0.901421 -0.3741,0.191029 -0.83178,0.286544 -1.37302,0.286544 -0.68453,0 -1.22976,-0.191029 -1.6357,-0.573089 -0.40195,-0.386038 -0.60293,-0.901419 -0.60293,-1.546145 0,-0.752177 0.25072,-1.319295 0.75218,-1.701358 0.50543,-0.382055 1.2576,-0.573084 2.25653,-0.573088 l 1.54018,0 0,-0.107455 c -1e-5,-0.505427 -0.16716,-0.895446 -0.50145,-1.170056 -0.33033,-0.278579 -0.79596,-0.417871 -1.39691,-0.417877 -0.38206,6e-6 -0.75417,0.04577 -1.11633,0.137302 -0.36216,0.09154 -0.71039,0.228844 -1.04469,0.411908 l 0,-1.014845 c 0.40196,-0.155205 0.79198,-0.270618 1.17006,-0.346241 0.37807,-0.07959 0.7462,-0.119386 1.10439,-0.119393 0.96708,7e-6 1.68941,0.250733 2.16699,0.752179 0.47757,0.501458 0.71635,1.261596 0.71636,2.280415"
+ id="path3215"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.65586,70.127667 c -0.12338,-0.07163 -0.25869,-0.123368 -0.40594,-0.155212 -0.14327,-0.03581 -0.30247,-0.05372 -0.47757,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33033,0.401963 -0.49549,0.981021 -0.49549,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23083,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81984,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15919,0.006 0.25073,0.01791 0.0915,0.008 0.19301,0.0219 0.30445,0.04179 l 0.006,1.128269"
+ id="path3217"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 119.27622,72.169296 0,0.53727 -5.05034,0 c 0.0477,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06658,0 -1.91229,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.2945,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32635,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3219"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 121.35964,74.270621 1.2596,0 0,1.026784 -0.97903,1.910296 -0.77008,0 0.48951,-1.910296 0,-1.026784"
+ id="path3221"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 133.66315,72.44987 c -1e-5,-0.807891 -0.16716,-1.440676 -0.50146,-1.898356 -0.33032,-0.461649 -0.78601,-0.692477 -1.36705,-0.692482 -0.58105,5e-6 -1.03873,0.230833 -1.37303,0.692482 -0.33032,0.45768 -0.49548,1.090465 -0.49548,1.898356 0,0.807899 0.16516,1.442674 0.49548,1.904327 0.3343,0.457676 0.79198,0.686513 1.37303,0.686512 0.58104,10e-7 1.03673,-0.228836 1.36705,-0.686512 0.3343,-0.461653 0.50145,-1.096428 0.50146,-1.904327 m -3.73702,-2.334142 c 0.23082,-0.397973 0.52135,-0.692476 0.87157,-0.883512 0.3542,-0.195003 0.77606,-0.292507 1.26557,-0.292514 0.81187,7e-6 1.47053,0.322369 1.97596,0.967087 0.50941,0.64473 0.76412,1.492423 0.76412,2.543081 0,1.050665 -0.25471,1.898358 -0.76412,2.543082 -0.50543,0.644725 -1.16409,0.967087 -1.97596,0.967087 -0.48951,0 -0.91137,-0.09551 -1.26557,-0.286544 -0.35022,-0.195009 -0.64075,-0.491503 -0.87157,-0.889482 l 0,1.002906 -1.10439,0 0,-9.288814 1.10439,0 0,3.617623"
+ id="path3223"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 142.34306,72.169296 0,0.53727 -5.05035,0 c 0.0478,0.756162 0.27461,1.33323 0.68055,1.731206 0.40991,0.394 0.97902,0.590999 1.70732,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22379,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.18199,-0.465634 l 0,1.038723 c -0.394,0.167151 -0.79795,0.294504 -1.21184,0.382059 -0.41391,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06659,0 -1.91229,-0.310423 -2.53712,-0.931269 -0.62084,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88352,-2.602778 0.59298,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89942,7e-6 1.60981,0.29053 2.13117,0.871572 0.52533,0.577074 0.78799,1.363081 0.788,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.17711,-1.080506 -0.50743,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30138,-0.537271 -0.61289,6e-6 -1.1044,0.173126 -1.47451,0.519362 -0.36615,0.346246 -0.57707,0.833769 -0.63279,1.46257 l 3.91611,-0.006"
+ id="path3225"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 145.23238,67.202526 0,1.898357 2.26251,0 0,0.853663 -2.26251,0 0,3.629563 c 0,0.545232 0.0736,0.895452 0.22088,1.050662 0.15123,0.155213 0.45568,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.8477,0 -1.43273,-0.157202 -1.75509,-0.471605 -0.32236,-0.318382 -0.48354,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3227"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 150.03199,67.202526 0,1.898357 2.2625,0 0,0.853663 -2.2625,0 0,3.629563 c -1e-5,0.545232 0.0736,0.895452 0.22087,1.050662 0.15123,0.155213 0.45569,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.84769,0 -1.43272,-0.157202 -1.75508,-0.471605 -0.32236,-0.318382 -0.48355,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3229"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 159.46407,72.169296 0,0.53727 -5.05034,0 c 0.0478,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39798,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83376,0.131333 -1.2596,0.131333 -1.06658,0 -1.91228,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39094,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3231"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.14123,70.127667 c -0.12337,-0.07163 -0.25869,-0.123368 -0.40593,-0.155212 -0.14328,-0.03581 -0.30247,-0.05372 -0.47758,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33032,0.401963 -0.49548,0.981021 -0.49548,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23082,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81983,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15918,0.006 0.25072,0.01791 0.0915,0.008 0.19302,0.0219 0.30446,0.04179 l 0.006,1.128269"
+ id="path3233"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.33823,74.270621 1.25961,0 0,1.516298 -1.25961,0 0,-1.516298"
+ id="path3235"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(1.0124967,0,0,0.98765755,0.27574335,-0.05632028)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160-1">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ id="path3176"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ id="path3178"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ id="path3180"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ id="path3182"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ id="path3184"
+ inkscape:connector-curvature="0" />
+ </g>
+ <image
+ id="image1340"
+ height="80.018639"
+ width="465.43411"
+ sodipodi:absref="bricks.jpg"
+ xlink:href="bricks.jpg"
+ x="171.31058"
+ y="0.17131744" />
+ </g>
+</svg>
diff --git a/doc/user/titlepage/SCons_path.svg b/doc/user/titlepage/SCons_path.svg
new file mode 100644
index 0000000..ef580ee
--- /dev/null
+++ b/doc/user/titlepage/SCons_path.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="167.9814"
+ height="58.247482"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.3.1 r9886"
+ version="1.0"
+ sodipodi:docname="SCons_path.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <title
+ id="title2996">SCons - Build your software, better (SCons Logo)</title>
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="7.1635215"
+ inkscape:cy="31.742841"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="868"
+ inkscape:window-height="789"
+ inkscape:window-x="210"
+ inkscape:window-y="24"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0"
+ fit-margin-left="2"
+ fit-margin-top="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>SCons - Build your software, better (SCons Logo)</dc:title>
+ <dc:date>2011-05-19</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the SCons (Constructs using) logo by Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;.</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.32267,-503.68225)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline"
+ transform="translate(2.5546741e-5,-0.00274857)">
+ <g
+ transform="translate(-264.3227,-505.012)"
+ style="display:inline"
+ id="Brick-to-Brick"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ transform="scale(1.0124967,0.98765755)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ style=""
+ id="path3017" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ style=""
+ id="path3019" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ style=""
+ id="path3021" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ style=""
+ id="path3023" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ style=""
+ id="path3025" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/user/titlepage/bricks.jpg b/doc/user/titlepage/bricks.jpg
new file mode 100755
index 0000000..b2dc16b
--- /dev/null
+++ b/doc/user/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/user/titlepage/mapnik_final_colors.svg b/doc/user/titlepage/mapnik_final_colors.svg
new file mode 100644
index 0000000..23bb54a
--- /dev/null
+++ b/doc/user/titlepage/mapnik_final_colors.svg
@@ -0,0 +1,6397 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ fill-opacity="1"
+ color-rendering="auto"
+ color-interpolation="auto"
+ stroke="black"
+ text-rendering="auto"
+ stroke-linecap="square"
+ width="600"
+ stroke-miterlimit="10"
+ stroke-opacity="1"
+ shape-rendering="auto"
+ fill="black"
+ stroke-dasharray="none"
+ font-weight="normal"
+ stroke-width="1"
+ height="701"
+ font-family="'Dialog'"
+ font-style="normal"
+ stroke-linejoin="miter"
+ font-size="12"
+ stroke-dashoffset="0"
+ image-rendering="auto"
+ id="svg8168"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="mapnik_final_colors.svg">
+ <title
+ id="title9830">SCons, Book titlepage background</title>
+ <metadata
+ id="metadata9828">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="" />
+ <dc:title>SCons, Book titlepage background</dc:title>
+ <dc:date>2013-04-15</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on a SCons dependency tree of the Mapnik project (www.mapnik.org)</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="735"
+ inkscape:window-height="480"
+ id="namedview9826"
+ showgrid="false"
+ inkscape:zoom="0.33666191"
+ inkscape:cx="300"
+ inkscape:cy="350.5"
+ inkscape:window-x="85"
+ inkscape:window-y="99"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg8168" />
+ <!--Generated by ySVG-->
+ <defs
+ id="genericDefs" />
+ <g
+ id="g8171">
+ <defs
+ id="defs1">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1">
+ <path
+ d="M0 0 L600 0 L600 701 L0 701 L0 0 Z"
+ id="path8175" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2">
+ <path
+ d="M-871 -1293 L3138 -1293 L3138 3390.8484 L-871 3390.8484 L-871 -1293 Z"
+ id="path8178" />
+ </clipPath>
+ </defs>
+ <g
+ fill="white"
+ transform="scale(0.1497,0.1497) translate(871,1293)"
+ stroke="white"
+ id="g8180">
+ <rect
+ x="-871"
+ y="-1293"
+ clip-path="url(#clipPath2)"
+ width="4009"
+ height="4684"
+ stroke="none"
+ id="rect8182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8184">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ width="142.2207"
+ height="30"
+ stroke="none"
+ id="rect8186" />
+ <text
+ x="1140.3896"
+ y="112.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8188">./src/agg_renderer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8190">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="142.2207"
+ height="30"
+ id="rect8192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8194">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ width="69.1484"
+ height="30"
+ stroke="none"
+ id="rect8196" />
+ <text
+ x="-37.5742"
+ y="1701.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8198">./agg/src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8200">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="69.1484"
+ height="30"
+ id="rect8202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8204">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ width="114.5938"
+ height="30"
+ stroke="none"
+ id="rect8206" />
+ <text
+ x="1140.7031"
+ y="-645.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8208">./src/graphics.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8210">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="114.5938"
+ height="30"
+ id="rect8212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8214">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ width="111.8516"
+ height="30"
+ stroke="none"
+ id="rect8216" />
+ <text
+ x="1676.0742"
+ y="-44.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8218">./src/font_set.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8220">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="111.8516"
+ height="30"
+ id="rect8222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8224">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ width="234.9277"
+ height="30"
+ stroke="none"
+ id="rect8226" />
+ <text
+ x="-608.9639"
+ y="2105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8228">./agg/src/agg_vcgen_markers_term.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8230">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9277"
+ height="30"
+ id="rect8232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8234">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ width="107.8789"
+ height="30"
+ stroke="none"
+ id="rect8236" />
+ <text
+ x="2062.0605"
+ y="-128.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8238">./src/params.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8240">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="107.8789"
+ height="30"
+ id="rect8242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8244">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ width="189.2188"
+ height="30"
+ stroke="none"
+ id="rect8246" />
+ <text
+ x="-71.1094"
+ y="1867.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8248">./agg/src/agg_image_filters.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8250">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="189.2188"
+ height="30"
+ id="rect8252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8254">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ width="258.3125"
+ height="30"
+ stroke="none"
+ id="rect8256" />
+ <text
+ x="2434.3438"
+ y="1824.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8258">./bindings/python/mapnik_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8260">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3125"
+ height="30"
+ id="rect8262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8264">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ width="112.4844"
+ height="30"
+ stroke="none"
+ id="rect8266" />
+ <text
+ x="1775.7578"
+ y="209.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8268">./src/memory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8270">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="112.4844"
+ height="30"
+ id="rect8272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8274">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ width="263.3223"
+ height="30"
+ stroke="none"
+ id="rect8276" />
+ <text
+ x="1302.8389"
+ y="3367.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8278">./bindings/python/mapnik_font_engine.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8280">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="263.3223"
+ height="30"
+ id="rect8282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8284">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ width="205.625"
+ height="30"
+ stroke="none"
+ id="rect8286" />
+ <text
+ x="651.1875"
+ y="459.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8288">./plugins/input/shape/dbffile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8290">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="205.625"
+ height="30"
+ id="rect8292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8294">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ width="196.5547"
+ height="30"
+ stroke="none"
+ id="rect8296" />
+ <text
+ x="148.2227"
+ y="1905.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8298">./agg/src/agg_line_aa_basics.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8300">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.5547"
+ height="30"
+ id="rect8302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8304">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ width="121.8652"
+ height="30"
+ stroke="none"
+ id="rect8306" />
+ <text
+ x="1844.5674"
+ y="-283.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8308">./src/save_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8310">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.8652"
+ height="30"
+ id="rect8312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8314">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ width="283.4844"
+ height="30"
+ stroke="none"
+ id="rect8316" />
+ <text
+ x="662.2578"
+ y="2818.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8318">./bindings/python/mapnik_view_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8320">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="283.4844"
+ height="30"
+ id="rect8322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8324">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ width="94.1094"
+ height="30"
+ stroke="none"
+ id="rect8326" />
+ <text
+ x="1878.4453"
+ y="-141.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8328">./src/color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8330">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1094"
+ height="30"
+ id="rect8332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8334">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ width="98.4805"
+ height="30"
+ stroke="none"
+ id="rect8336" />
+ <text
+ x="101.7598"
+ y="1483.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8338">./agg/libagg.a</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8340">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="98.4805"
+ height="30"
+ id="rect8342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8344">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ width="187.4668"
+ height="30"
+ stroke="none"
+ id="rect8346" />
+ <text
+ x="1946.2666"
+ y="-908.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8348">./src/font_engine_freetype.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8350">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="187.4668"
+ height="30"
+ id="rect8352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8354">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ width="101.4277"
+ height="30"
+ stroke="none"
+ id="rect8356" />
+ <text
+ x="1931.2861"
+ y="171.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8358">./src/stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8360">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.4277"
+ height="30"
+ id="rect8362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8364">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ width="229.8535"
+ height="30"
+ stroke="none"
+ id="rect8366" />
+ <text
+ x="1557.0732"
+ y="2643.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8368">./bindings/python/mapnik_image.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8370">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8535"
+ height="30"
+ id="rect8372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8374">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ width="125.1816"
+ height="30"
+ stroke="none"
+ id="rect8376" />
+ <text
+ x="1962.9092"
+ y="-717.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8378">./src/image_util.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8380">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="125.1816"
+ height="30"
+ id="rect8382" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8384">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ width="297.4121"
+ height="30"
+ stroke="none"
+ id="rect8386" />
+ <text
+ x="973.7939"
+ y="2871.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8388">./bindings/python/mapnik_datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8390">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="297.4121"
+ height="30"
+ id="rect8392" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8394">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ width="94.1914"
+ height="30"
+ stroke="none"
+ id="rect8396" />
+ <text
+ x="-147.5957"
+ y="2495.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8398">./agg/include</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8400">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1914"
+ height="30"
+ id="rect8402" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8404">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ width="216.8984"
+ height="30"
+ stroke="none"
+ id="rect8406" />
+ <text
+ x="896.5508"
+ y="2465.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8408">./bindings/python/mapnik_rule.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8410">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.8984"
+ height="30"
+ id="rect8412" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8414">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ width="174.0664"
+ height="30"
+ stroke="none"
+ id="rect8416" />
+ <text
+ x="277.4668"
+ y="1204.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8418">./agg/src/agg_bezier_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8420">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.0664"
+ height="30"
+ id="rect8422" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8424">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ width="252.9336"
+ height="30"
+ stroke="none"
+ id="rect8426" />
+ <text
+ x="1538.0332"
+ y="1608.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8428">./bindings/python/mapnik_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8430">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="252.9336"
+ height="30"
+ id="rect8432" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8434">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ width="131.8848"
+ height="30"
+ stroke="none"
+ id="rect8436" />
+ <text
+ x="192.0576"
+ y="1708.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8438">./agg/src/agg_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8440">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="131.8848"
+ height="30"
+ id="rect8442" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8444">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ width="220.5371"
+ height="30"
+ stroke="none"
+ id="rect8446" />
+ <text
+ x="-159.7686"
+ y="559.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8448">./plugins/input/shape/shapefile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8450">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.5371"
+ height="30"
+ id="rect8452" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8454">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ width="271.0918"
+ height="30"
+ stroke="none"
+ id="rect8456" />
+ <text
+ x="-52.0459"
+ y="-1056.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8458">./plugins/input/raster/raster_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8460">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="271.0918"
+ height="30"
+ id="rect8462" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8464">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ width="265.666"
+ height="30"
+ stroke="none"
+ id="rect8466" />
+ <text
+ x="-705.333"
+ y="-423.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8468">./plugins/input/raster/raster_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8470">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="265.666"
+ height="30"
+ id="rect8472" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8474">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ width="110.9609"
+ height="30"
+ stroke="none"
+ id="rect8476" />
+ <text
+ x="1995.0195"
+ y="330.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8478">./src/unicode.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8480">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="110.9609"
+ height="30"
+ id="rect8482" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8484">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ width="233.9141"
+ height="30"
+ stroke="none"
+ id="rect8486" />
+ <text
+ x="2896.043"
+ y="2280.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8488">./bindings/python/mapnik/ogcserver</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8490">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="233.9141"
+ height="30"
+ id="rect8492" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8494">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ width="219.7695"
+ height="30"
+ stroke="none"
+ id="rect8496" />
+ <text
+ x="1964.6152"
+ y="1988.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8498">./bindings/python/mapnik_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8500">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.7695"
+ height="30"
+ id="rect8502" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8504">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ width="97.9062"
+ height="30"
+ stroke="none"
+ id="rect8506" />
+ <text
+ x="1411.0469"
+ y="64.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8508">./src/arrow.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8510">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="97.9062"
+ height="30"
+ id="rect8512" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8514">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="67.0742"
+ height="30"
+ stroke="none"
+ id="rect8516" />
+ <text
+ x="385.9629"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8518">./plugins</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8520">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="67.0742"
+ height="30"
+ id="rect8522" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8524">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ width="218.0352"
+ height="30"
+ stroke="none"
+ id="rect8526" />
+ <text
+ x="-593.0176"
+ y="-884.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8528">./plugins/input/raster/raster.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8530">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="218.0352"
+ height="30"
+ id="rect8532" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8534">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ width="199.3555"
+ height="30"
+ stroke="none"
+ id="rect8536" />
+ <text
+ x="511.8223"
+ y="1265.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8538">./agg/src/agg_vcgen_contour.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8540">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="199.3555"
+ height="30"
+ id="rect8542" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8544">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ width="239.832"
+ height="30"
+ stroke="none"
+ id="rect8546" />
+ <text
+ x="484.084"
+ y="1581.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8548">./agg/src/agg_trans_warp_magnifier.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8550">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="239.832"
+ height="30"
+ id="rect8552" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8554">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ width="258.3594"
+ height="30"
+ stroke="none"
+ id="rect8556" />
+ <text
+ x="1814.8203"
+ y="2902.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8558">./bindings/python/mapnik_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8560">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3594"
+ height="30"
+ id="rect8562" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8564">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ width="267.0488"
+ height="30"
+ stroke="none"
+ id="rect8566" />
+ <text
+ x="207.9756"
+ y="791.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8568">./plugins/input/shape/shape_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8570">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="267.0488"
+ height="30"
+ id="rect8572" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8574">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ width="121.2441"
+ height="30"
+ stroke="none"
+ id="rect8576" />
+ <text
+ x="1345.8779"
+ y="-311.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8578">./src/load_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8580">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.2441"
+ height="30"
+ id="rect8582" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8584">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ width="294.6406"
+ height="30"
+ stroke="none"
+ id="rect8586" />
+ <text
+ x="1642.1797"
+ y="2329.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8588">./bindings/python/mapnik_point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8590">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="294.6406"
+ height="30"
+ id="rect8592" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8594">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ width="204.0371"
+ height="30"
+ stroke="none"
+ id="rect8596" />
+ <text
+ x="1877.9814"
+ y="-479.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8598">./src/line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8600">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="204.0371"
+ height="30"
+ id="rect8602" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8604">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ width="171.1016"
+ height="30"
+ stroke="none"
+ id="rect8606" />
+ <text
+ x="2413.4492"
+ y="2228.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8608">./bindings/python/mapnik</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8610">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="171.1016"
+ height="30"
+ id="rect8612" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8614">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ width="143.8027"
+ height="30"
+ stroke="none"
+ id="rect8616" />
+ <text
+ x="-221.4014"
+ y="-694.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8618">./plugins/input/raster</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8620">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.8027"
+ height="30"
+ id="rect8622" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8624">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ width="90.2246"
+ height="30"
+ stroke="none"
+ id="rect8626" />
+ <text
+ x="1756.3877"
+ y="-562.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8628">./src/map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8630">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="90.2246"
+ height="30"
+ id="rect8632" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8634">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ width="88.6543"
+ height="30"
+ stroke="none"
+ id="rect8636" />
+ <text
+ x="1474.6729"
+ y="-552.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8638">./src/wkb.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8640">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="88.6543"
+ height="30"
+ id="rect8642" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8644">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ width="190.7598"
+ height="30"
+ stroke="none"
+ id="rect8646" />
+ <text
+ x="-568.8799"
+ y="1541.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8648">./agg/src/agg_vcgen_stroke.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8650">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="190.7598"
+ height="30"
+ id="rect8652" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8654">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ width="163.0332"
+ height="30"
+ stroke="none"
+ id="rect8656" />
+ <text
+ x="-126.5166"
+ y="1293.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8658">./agg/src/agg_gsv_text.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8660">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="163.0332"
+ height="30"
+ id="rect8662" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8664">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ width="202.502"
+ height="30"
+ stroke="none"
+ id="rect8666" />
+ <text
+ x="325.249"
+ y="-184.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8668">./plugins/input/shape/shape.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8670">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="202.502"
+ height="30"
+ id="rect8672" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8674">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ width="74.627"
+ height="30"
+ stroke="none"
+ id="rect8676" />
+ <text
+ x="2226.1865"
+ y="1987.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8678">./bindings</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8680">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="74.627"
+ height="30"
+ id="rect8682" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8684">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ width="41.2637"
+ height="30"
+ stroke="none"
+ id="rect8686" />
+ <text
+ x="1565.8682"
+ y="-296.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8688">./src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8690">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="41.2637"
+ height="30"
+ id="rect8692" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8694">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ width="221.8203"
+ height="30"
+ stroke="none"
+ id="rect8696" />
+ <text
+ x="1378.5898"
+ y="1882.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8698">./bindings/python/mapnik_filter.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8700">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.8203"
+ height="30"
+ id="rect8702" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8704">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ width="196.4668"
+ height="30"
+ stroke="none"
+ id="rect8706" />
+ <text
+ x="-476.2334"
+ y="1794.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8708">./agg/src/agg_vcgen_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8710">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.4668"
+ height="30"
+ id="rect8712" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8714">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ width="227.7383"
+ height="30"
+ stroke="none"
+ id="rect8716" />
+ <text
+ x="1299.1309"
+ y="2672.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8718">./bindings/python/mapnik_coord.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8720">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.7383"
+ height="30"
+ id="rect8722" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8724">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ width="116.9492"
+ height="30"
+ stroke="none"
+ id="rect8726" />
+ <text
+ x="1757.0254"
+ y="-785.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8728">./src/envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8730">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="116.9492"
+ height="30"
+ id="rect8732" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8734">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ width="229.0859"
+ height="30"
+ stroke="none"
+ id="rect8736" />
+ <text
+ x="-346.043"
+ y="2059.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8738">./agg/src/agg_vpgen_segmentator.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8740">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.0859"
+ height="30"
+ id="rect8742" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8744">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ width="222.3477"
+ height="30"
+ stroke="none"
+ id="rect8746" />
+ <text
+ x="1714.3262"
+ y="1999.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8748">./bindings/python/mapnik_layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8750">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="222.3477"
+ height="30"
+ id="rect8752" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8754">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ width="285.3828"
+ height="30"
+ stroke="none"
+ id="rect8756" />
+ <text
+ x="1345.3086"
+ y="2964.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8758">./bindings/python/mapnik_line_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8760">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="285.3828"
+ height="30"
+ id="rect8762" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8764">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ width="169.5078"
+ height="30"
+ stroke="none"
+ id="rect8766" />
+ <text
+ x="1757.2461"
+ y="415.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8768">./src/shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8770">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="169.5078"
+ height="30"
+ id="rect8772" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8774">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ width="221.9844"
+ height="30"
+ stroke="none"
+ id="rect8776" />
+ <text
+ x="-407.9922"
+ y="1011.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8778">./agg/src/agg_trans_double_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8780">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.9844"
+ height="30"
+ id="rect8782" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8784">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ width="123.9336"
+ height="30"
+ stroke="none"
+ id="rect8786" />
+ <text
+ x="1311.5332"
+ y="220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8788">./src/projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8790">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="123.9336"
+ height="30"
+ id="rect8792" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8794">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ width="124.9941"
+ height="30"
+ stroke="none"
+ id="rect8796" />
+ <text
+ x="1116.5029"
+ y="-309.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8798">./src/tiff_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8800">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="124.9941"
+ height="30"
+ id="rect8802" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8804">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ width="281.3574"
+ height="30"
+ stroke="none"
+ id="rect8806" />
+ <text
+ x="1691.8213"
+ y="3282.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8808">./bindings/python/mapnik_proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8810">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="281.3574"
+ height="30"
+ id="rect8812" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8814">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ width="221.416"
+ height="30"
+ stroke="none"
+ id="rect8816" />
+ <text
+ x="1283.292"
+ y="1625.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8818">./bindings/python/mapnik_style.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8820">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.416"
+ height="30"
+ id="rect8822" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8824">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ width="299.0527"
+ height="30"
+ stroke="none"
+ id="rect8826" />
+ <text
+ x="1818.9736"
+ y="1696.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8828">./bindings/python/mapnik_shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8830">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="299.0527"
+ height="30"
+ id="rect8832" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8834">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ width="143.6797"
+ height="30"
+ stroke="none"
+ id="rect8836" />
+ <text
+ x="1468.6602"
+ y="265.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8838">./src/image_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8840">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.6797"
+ height="30"
+ id="rect8842" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8844">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ width="156.4941"
+ height="30"
+ stroke="none"
+ id="rect8846" />
+ <text
+ x="-332.2471"
+ y="1403.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8848">./agg/src/agg_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8850">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="156.4941"
+ height="30"
+ id="rect8852" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8854">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ width="216.5762"
+ height="30"
+ stroke="none"
+ id="rect8856" />
+ <text
+ x="-147.2881"
+ y="1523.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8858">./agg/src/agg_trans_single_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8860">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.5762"
+ height="30"
+ id="rect8862" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8864">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ width="229.8184"
+ height="30"
+ stroke="none"
+ id="rect8866" />
+ <text
+ x="-444.9092"
+ y="-1258.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8868">./plugins/input/raster/raster_info.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8870">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8184"
+ height="30"
+ id="rect8872" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8874">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ width="181.918"
+ height="30"
+ stroke="none"
+ id="rect8876" />
+ <text
+ x="65.041"
+ y="1139.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8878">./agg/src/agg_vcgen_dash.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8880">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="181.918"
+ height="30"
+ id="rect8882" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8884">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ width="253.4785"
+ height="30"
+ stroke="none"
+ id="rect8886" />
+ <text
+ x="2119.2607"
+ y="3074.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8888">./bindings/python/mapnik_projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8890">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="253.4785"
+ height="30"
+ id="rect8892" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8894">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ width="261.4648"
+ height="30"
+ stroke="none"
+ id="rect8896" />
+ <text
+ x="1089.2676"
+ y="2110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8898">./bindings/python/mapnik_image_view.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8900">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="261.4648"
+ height="30"
+ id="rect8902" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8904">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ width="113.375"
+ height="30"
+ stroke="none"
+ id="rect8906" />
+ <text
+ x="1591.8125"
+ y="105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8908">./src/distance.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8910">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="113.375"
+ height="30"
+ id="rect8912" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8914">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ width="167.8672"
+ height="30"
+ stroke="none"
+ id="rect8916" />
+ <text
+ x="2110.0664"
+ y="-299.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8918">./src/datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8920">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="167.8672"
+ height="30"
+ id="rect8922" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8924">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ width="260.1934"
+ height="30"
+ stroke="none"
+ id="rect8926" />
+ <text
+ x="2145.9033"
+ y="1632.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8928">./bindings/python/mapnik_parameters.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8930">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="260.1934"
+ height="30"
+ id="rect8932" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8934">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ width="101.709"
+ height="30"
+ stroke="none"
+ id="rect8936" />
+ <text
+ x="1291.1455"
+ y="-454.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8938">./src/plugin.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8940">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.709"
+ height="30"
+ id="rect8942" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8944">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ width="175.5781"
+ height="30"
+ stroke="none"
+ id="rect8946" />
+ <text
+ x="-536.7891"
+ y="1318.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8948">./agg/src/agg_arrowhead.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8950">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="175.5781"
+ height="30"
+ id="rect8952" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8954">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ width="235.6426"
+ height="30"
+ stroke="none"
+ id="rect8956" />
+ <text
+ x="1824.1787"
+ y="2623.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8958">./bindings/python/mapnik_feature.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8960">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="235.6426"
+ height="30"
+ id="rect8962" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8964">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ width="251.2461"
+ height="30"
+ stroke="none"
+ id="rect8966" />
+ <text
+ x="-848.123"
+ y="1633.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8968">./agg/src/agg_embedded_raster_fonts.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8970">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="251.2461"
+ height="30"
+ id="rect8972" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8974">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ width="122.6445"
+ height="30"
+ stroke="none"
+ id="rect8976" />
+ <text
+ x="1676.6777"
+ y="-200.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8978">./src/libmapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8980">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="122.6445"
+ height="30"
+ id="rect8982" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8984">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ width="165.623"
+ height="30"
+ stroke="none"
+ id="rect8986" />
+ <text
+ x="1046.1885"
+ y="-106.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8988">./src/placement_finder.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8990">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.623"
+ height="30"
+ id="rect8992" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8994">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ width="178.209"
+ height="30"
+ stroke="none"
+ id="rect8996" />
+ <text
+ x="-158.1045"
+ y="1023.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8998">./agg/src/agg_sqrt_tables.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9000">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="178.209"
+ height="30"
+ id="rect9002" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9004">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ width="227.9492"
+ height="30"
+ stroke="none"
+ id="rect9006" />
+ <text
+ x="228.5254"
+ y="1497.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9008">./agg/src/agg_vpgen_clip_polyline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9010">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.9492"
+ height="30"
+ id="rect9012" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9014">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ width="298.0508"
+ height="30"
+ stroke="none"
+ id="rect9016" />
+ <text
+ x="1475.9746"
+ y="1023.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9018">./bindings/python/mapnik_raster_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9020">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="298.0508"
+ height="30"
+ id="rect9022" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9024">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ width="198.3945"
+ height="30"
+ stroke="none"
+ id="rect9026" />
+ <text
+ x="372.8027"
+ y="2048.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9028">./agg/src/agg_line_profile_aa.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9030">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="198.3945"
+ height="30"
+ id="rect9032" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9034">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="333.582"
+ height="30"
+ stroke="none"
+ id="rect9036" />
+ <text
+ x="922.209"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9038">./bindings/python/mapnik_line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9040">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="333.582"
+ height="30"
+ id="rect9042" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9044">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ width="223.6543"
+ height="30"
+ stroke="none"
+ id="rect9046" />
+ <text
+ x="1304.1729"
+ y="1312.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9048">./bindings/python/mapnik_color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9050">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="223.6543"
+ height="30"
+ id="rect9052" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9054">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ width="151.8125"
+ height="30"
+ stroke="none"
+ id="rect9056" />
+ <text
+ x="1641.5938"
+ y="-374.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9058">./src/proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9060">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.8125"
+ height="30"
+ id="rect9062" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9064">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ width="182.457"
+ height="30"
+ stroke="none"
+ id="rect9066" />
+ <text
+ x="1305.2715"
+ y="-126.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9068">./src/memory_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9070">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.457"
+ height="30"
+ id="rect9072" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9074">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ width="103.7715"
+ height="30"
+ stroke="none"
+ id="rect9076" />
+ <text
+ x="-187.8857"
+ y="-241.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9078">./plugins/input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9080">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="103.7715"
+ height="30"
+ id="rect9082" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9084">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ width="234.9629"
+ height="30"
+ stroke="none"
+ id="rect9086" />
+ <text
+ x="660.0186"
+ y="1876.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9088">./bindings/python/mapnik_python.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9090">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9629"
+ height="30"
+ id="rect9092" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9094">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="130.6953"
+ height="30"
+ stroke="none"
+ id="rect9096" />
+ <text
+ x="1595.6523"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9098">./src/png_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9100">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="130.6953"
+ height="30"
+ id="rect9102" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9104">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ width="246.4941"
+ height="30"
+ stroke="none"
+ id="rect9106" />
+ <text
+ x="1143.2529"
+ y="2400.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9108">./bindings/python/mapnik_envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9110">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="246.4941"
+ height="30"
+ id="rect9112" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9114">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ width="230.9727"
+ height="30"
+ stroke="none"
+ id="rect9116" />
+ <text
+ x="1014.5137"
+ y="1471.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9118">./bindings/python/mapnik_stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9120">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="230.9727"
+ height="30"
+ id="rect9122" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9124">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ width="219.418"
+ height="30"
+ stroke="none"
+ id="rect9126" />
+ <text
+ x="269.791"
+ y="342.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9128">./plugins/input/shape/shape.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9130">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.418"
+ height="30"
+ id="rect9132" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9134">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ width="227.252"
+ height="30"
+ stroke="none"
+ id="rect9136" />
+ <text
+ x="1970.374"
+ y="1334.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9138">./bindings/python/mapnik_query.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9140">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.252"
+ height="30"
+ id="rect9142" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9144">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ width="165.0957"
+ height="30"
+ stroke="none"
+ id="rect9146" />
+ <text
+ x="1349.4521"
+ y="-859.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9148">./src/point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9150">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.0957"
+ height="30"
+ id="rect9152" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9154">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ width="138.5"
+ height="30"
+ stroke="none"
+ id="rect9156" />
+ <text
+ x="1485.75"
+ y="475.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9158">./src/filter_factory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9160">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="138.5"
+ height="30"
+ id="rect9162" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9164">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ width="311.2754"
+ height="30"
+ stroke="none"
+ id="rect9166" />
+ <text
+ x="2057.8623"
+ y="2285.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9168">./bindings/python/mapnik_polygon_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9170">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="311.2754"
+ height="30"
+ id="rect9172" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9174">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ width="236.4219"
+ height="30"
+ stroke="none"
+ id="rect9176" />
+ <text
+ x="-87.2109"
+ y="2244.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9178">./agg/src/agg_vcgen_smooth_poly1.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9180">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="236.4219"
+ height="30"
+ id="rect9182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9184">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ width="305.5625"
+ height="30"
+ stroke="none"
+ id="rect9186" />
+ <text
+ x="-365.2812"
+ y="125.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9188">./plugins/input/shape/shape_index_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9190">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="305.5625"
+ height="30"
+ id="rect9192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9194">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ width="220.1738"
+ height="30"
+ stroke="none"
+ id="rect9196" />
+ <text
+ x="840.4131"
+ y="2185.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9198">./bindings/python/python_cairo.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9200">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.1738"
+ height="30"
+ id="rect9202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9204">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ width="128.7676"
+ height="30"
+ stroke="none"
+ id="rect9206" />
+ <text
+ x="2153.6162"
+ y="-476.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9208">./src/symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9210">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="128.7676"
+ height="30"
+ id="rect9212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9214">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ width="194.3867"
+ height="30"
+ stroke="none"
+ id="rect9216" />
+ <text
+ x="1419.8066"
+ y="2358.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9218">./bindings/python/_mapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9220">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="194.3867"
+ height="30"
+ id="rect9222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9224">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ width="182.8438"
+ height="30"
+ stroke="none"
+ id="rect9226" />
+ <text
+ x="186.0781"
+ y="2266.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9228">./agg/src/agg_trans_affine.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9230">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.8438"
+ height="30"
+ id="rect9232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9234">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ width="229.9297"
+ height="30"
+ stroke="none"
+ id="rect9236" />
+ <text
+ x="869.0352"
+ y="-574.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9238">./src/polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9240">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.9297"
+ height="30"
+ id="rect9242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9244">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ width="359.4746"
+ height="30"
+ stroke="none"
+ id="rect9246" />
+ <text
+ x="2100.7627"
+ y="2648.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9248">./bindings/python/mapnik_polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9250">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="359.4746"
+ height="30"
+ id="rect9252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9254">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="151.7188"
+ height="30"
+ stroke="none"
+ id="rect9256" />
+ <text
+ x="-251.3594"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9258">./agg/src/agg_curves.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9260">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.7188"
+ height="30"
+ id="rect9262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9264">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ width="157.7891"
+ height="30"
+ stroke="none"
+ id="rect9266" />
+ <text
+ x="1284.6055"
+ y="-615.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9268">./src/text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9270">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="157.7891"
+ height="30"
+ id="rect9272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9274">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ width="174.459"
+ height="30"
+ stroke="none"
+ id="rect9276" />
+ <text
+ x="1553.2705"
+ y="-824.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9278">./src/scale_denominator.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9280">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.459"
+ height="30"
+ id="rect9282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9284">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ width="219.3418"
+ height="30"
+ stroke="none"
+ id="rect9286" />
+ <text
+ x="635.8291"
+ y="50.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9288">./plugins/input/shape/shape_io.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9290">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.3418"
+ height="30"
+ id="rect9292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9294">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ width="92.8027"
+ height="30"
+ stroke="none"
+ id="rect9296" />
+ <text
+ x="1512.0986"
+ y="-420.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9298">./src/layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9300">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="92.8027"
+ height="30"
+ id="rect9302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9304">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ width="45.6816"
+ height="30"
+ stroke="none"
+ id="rect9306" />
+ <text
+ x="-33.8408"
+ y="2057.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9308">./agg</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9310">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="45.6816"
+ height="30"
+ id="rect9312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9314">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ width="151.5664"
+ height="30"
+ stroke="none"
+ id="rect9316" />
+ <text
+ x="1881.2168"
+ y="13.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9318">./src/libxml2_loader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9320">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.5664"
+ height="30"
+ id="rect9322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9324">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ width="229.1797"
+ height="30"
+ stroke="none"
+ id="rect9326" />
+ <text
+ x="-794.0898"
+ y="1220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9328">./agg/src/agg_vpgen_clip_polygon.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9330">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.1797"
+ height="30"
+ id="rect9332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9334">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ width="144.4941"
+ height="30"
+ stroke="none"
+ id="rect9336" />
+ <text
+ x="158.7529"
+ y="116.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9338">./plugins/input/shape</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9340">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="144.4941"
+ height="30"
+ id="rect9342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9344">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ width="249.4824"
+ height="30"
+ stroke="none"
+ id="rect9346" />
+ <text
+ x="550.2588"
+ y="2305.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9348">./bindings/python/mapnik_geometry.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9350">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="249.4824"
+ height="30"
+ id="rect9352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9354">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ width="287.334"
+ height="30"
+ stroke="none"
+ id="rect9356" />
+ <text
+ x="930.333"
+ y="1110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9358">./bindings/python/mapnik_text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9360">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="287.334"
+ height="30"
+ id="rect9362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9364">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ width="191.3984"
+ height="30"
+ stroke="none"
+ id="rect9366" />
+ <text
+ x="440.3008"
+ y="1825.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9368">./agg/src/agg_rounded_rect.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9370">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="191.3984"
+ height="30"
+ id="rect9372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9374">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ width="121.4961"
+ height="30"
+ stroke="none"
+ id="rect9376" />
+ <text
+ x="1548.252"
+ y="2084.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9378">./bindings/python</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9380">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.4961"
+ height="30"
+ id="rect9382" />
+ <path
+ fill="none"
+ d="M2577.5508 2232.655 L2889.043 2264.1677"
+ clip-path="url(#clipPath2)"
+ id="path9384" />
+ <path
+ fill="none"
+ d="M24.5742 1698.3611 L185.0576 1702.3578"
+ clip-path="url(#clipPath2)"
+ id="path9386" />
+ <path
+ fill="none"
+ d="M-31.6769 1682.5 L-131.8263 1613.1986 L-307.8319 1479.7761 L-322.1423 1467.1691 L-335.9341 1453.8378 L-420.4944 1355.8801 L-431.8936 1341.8081 L-442.9968 1329"
+ clip-path="url(#clipPath2)"
+ id="path9388" />
+ <path
+ fill="none"
+ d="M7.2593 1682.5 L170.8382 1540.3337 L183.5103 1528.4264 L195.0703 1515.1906 L203.2204 1499.588 L208.0298 1482.4165 L212.1165 1464.9495 L217.4223 1447.5245 L224.4582 1430.9707 L348.8411 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9390" />
+ <path
+ fill="none"
+ d="M-30.3421 1682.5 L-117.9062 1617.9313 L-127.6741 1609.3701 L-136.938 1599.8932 L-145.2881 1589.3641 L-152.7591 1578.7178 L-251.9406 1414.5"
+ clip-path="url(#clipPath2)"
+ id="path9392" />
+ <path
+ fill="none"
+ d="M-41.5549 1712.5 L-150.9451 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9394" />
+ <path
+ fill="none"
+ d="M-44.5742 1694.2324 L-603.877 1641.3727"
+ clip-path="url(#clipPath2)"
+ id="path9396" />
+ <path
+ fill="none"
+ d="M-0.4959 1682.5 L5.2959 1673.359 L54.5589 1589.4877 L61.0658 1576.5562 L66.893 1562.6425 L71.3597 1548.4495 L73.9725 1533.6312 L74.9174 1518.3745 L73.7647 1503.0833 L70.803 1487.9604 L65.953 1473.3381 L59.488 1459.3448 L52.1157 1446.1976 L-42.0651 1304"
+ clip-path="url(#clipPath2)"
+ id="path9398" />
+ <path
+ fill="none"
+ d="M-7.5982 1712.5 L14.0982 1848"
+ clip-path="url(#clipPath2)"
+ id="path9400" />
+ <path
+ fill="none"
+ d="M8.3456 1712.5 L221.1544 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9402" />
+ <path
+ fill="none"
+ d="M24.5742 1709.7097 L224.8548 1780.4376 L274.5859 1796.1027 L290.3831 1803.1301 L305.0963 1812.2388 L317.8884 1823.064 L329.0148 1835.4955 L338.6302 1848.3523 L455.3114 2029"
+ clip-path="url(#clipPath2)"
+ id="path9404" />
+ <path
+ fill="none"
+ d="M24.5742 1709.5155 L220.8472 1777.7257 L238.4817 1782.3004 L324.5341 1794.4855 L341.7867 1796.4042 L433.3008 1808.4272"
+ clip-path="url(#clipPath2)"
+ id="path9406" />
+ <path
+ fill="none"
+ d="M-0.9936 1682.5 L50.1437 1597.332 L57.3786 1583.8605 L63.929 1570.2368 L69.2742 1555.1427 L72.9572 1539.9404 L74.755 1524.0978 L74.5616 1508.144 L69.7308 1462.8016 L67.2398 1448.1791 L46.6858 1301.0886 L40.6985 1270.2456 L36.1484 1254.5295 L30.1596 1239.6921 L-68.7682 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9408" />
+ <path
+ fill="none"
+ d="M7.5011 1712.5 L84.9684 1778.8966 L97.4166 1792.4541 L107.5913 1806.808 L115.5777 1822.2261 L120.8528 1838.3977 L123.3011 1854.1149 L127.3981 1901.7179 L129.5949 1917.3544 L132.8063 1932.9053 L137.6825 1947.8722 L264.1679 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9410" />
+ <path
+ fill="none"
+ d="M-30.3804 1682.5 L-109.8009 1624.0464 L-121.1156 1614.7283 L-132.1969 1604.0846 L-142.184 1592.3759 L-150.7367 1579.3018 L-157.7693 1565.1106 L-163.0598 1550.7333 L-165.983 1534.505 L-167.597 1518.8418 L-168.8886 1410.1838 L-169.9251 1394.0894 L-172.5114 1377.2661 L-176.7595 1361.7198 L-298.6194 1022"
+ clip-path="url(#clipPath2)"
+ id="path9412" />
+ <path
+ fill="none"
+ d="M-13.0252 1682.5 L-42.9748 1534"
+ clip-path="url(#clipPath2)"
+ id="path9414" />
+ <path
+ fill="none"
+ d="M24.5742 1687.3417 L211.2763 1632.4862 L230.4907 1627.6432 L250.3716 1624.6504 L328.7023 1621.3073 L348.4196 1619.7538 L368.0745 1617.4214 L510.9839 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9416" />
+ <path
+ fill="none"
+ d="M-44.5742 1695.8385 L-164.7434 1690.0634 L-177.8356 1690.061 L-191.578 1690.8328 L-204.8772 1693.3619 L-217.7414 1697.4427 L-240.9324 1708.3999 L-358.6783 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9418" />
+ <path
+ fill="none"
+ d="M7.529 1682.5 L138.9264 1570.0598 L148.6751 1560.6741 L158.7948 1552.2384 L178.7862 1533.6653 L188.7202 1523.3728 L197.5696 1511.4668 L203.8828 1497.4987 L207.8515 1482.9614 L211.1029 1467.9121 L215.285 1452.8943 L221.2153 1438.4976 L228.5741 1424.6746 L238.2442 1412.2913 L248.6876 1400.8505 L261.0592 1390.6781 L274.4546 1382.137 L288.1776 1374.8389 L315.8387 1363.2257 L561.9354 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9420" />
+ <path
+ fill="none"
+ d="M-1.1162 1682.5 L53.6143 1590.0895 L61.9957 1573.4156 L68.9728 1555.3479 L73.5761 1536.5132 L76.2372 1517.584 L79.7695 1480.3877 L82.222 1461.5187 L145.9323 1150"
+ clip-path="url(#clipPath2)"
+ id="path9422" />
+ <path
+ fill="none"
+ d="M-21.1026 1712.5 L-106.8676 1828.3712 L-116.5694 1839.3942 L-127.7954 1849.3232 L-139.8821 1858.0498 L-165.3045 1872.8499 L-284.2802 1934.2721 L-298.4405 1942.3529 L-312.5903 1951.3605 L-339.184 1971.7175 L-480.0865 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9424" />
+ <path
+ fill="none"
+ d="M-19.2353 1712.5 L-60.2772 1779.1603 L-74.3468 1803.9298 L-80.6547 1816.9384 L-86.1567 1831.2423 L-89.365 1846.1083 L-90.6617 1861.1736 L-90.0964 1876.3617 L-86.5496 1891.6437 L-81.7927 1905.8558 L-74.9382 1919.4861 L-66.4475 1932.3898 L-47.7518 1955.9055 L9.8738 2025.3236 L17.6516 2039.1315 L21.1875 2054.6111 L23.7724 2225"
+ clip-path="url(#clipPath2)"
+ id="path9426" />
+ <path
+ fill="none"
+ d="M-44.5742 1685.7426 L-436.3906 1552.5"
+ clip-path="url(#clipPath2)"
+ id="path9428" />
+ <path
+ fill="none"
+ d="M-34.4191 1682.5 L-422.8861 1443.8751 L-438.5209 1435.4724 L-485.9133 1412.2606 L-501.7971 1403.8612 L-517.0173 1393.6337 L-530.9767 1381.8546 L-672.3918 1231.5"
+ clip-path="url(#clipPath2)"
+ id="path9430" />
+ <path
+ fill="none"
+ d="M15.3423 1682.5 L310.1577 1508"
+ clip-path="url(#clipPath2)"
+ id="path9432" />
+ <path
+ fill="none"
+ d="M-19.574 1712.5 L-228.926 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9434" />
+ <path
+ fill="none"
+ d="M1705.7683 -190 L1229.7317 93"
+ clip-path="url(#clipPath2)"
+ id="path9436" />
+ <path
+ fill="none"
+ d="M1792.3223 -207.5711 L1889.0596 -211.6272 L1904.3265 -213.2381 L1919.7518 -216.2674 L1934.6373 -220.1078 L2143.3914 -289.0011"
+ clip-path="url(#clipPath2)"
+ id="path9438" />
+ <path
+ fill="none"
+ d="M1778.2689 -190 L1871.4453 -160.432"
+ clip-path="url(#clipPath2)"
+ id="path9440" />
+ <path
+ fill="none"
+ d="M1737.709 -220 L1784.8777 -325.4607 L1792.1422 -343.3415 L1797.3993 -362.1091 L1798.9524 -381.2829 L1796.4418 -400.2448 L1791.0763 -418.4256 L1784.3788 -435.7887 L1742.769 -535.712 L1737.2317 -553.2609 L1736.0367 -571.5535 L1739.8428 -589.6634 L1745.2104 -606.9964 L1803.3124 -775"
+ clip-path="url(#clipPath2)"
+ id="path9442" />
+ <path
+ fill="none"
+ d="M1722.7018 -190 L1671.9998 -98.3503 L1664.8926 -83.9824 L1658.9614 -68.4607 L1656.0035 -52.007 L1657.1727 -35.4369 L1662.0831 -19.4679 L1703.2703 67.3736 L1708.6812 82.8308 L1711.2114 99.089 L1709.9719 115.4139 L1705.568 131.1046 L1687.5476 173.7935 L1681.0388 187.5816 L1675.4331 201.3511 L1662.2848 228.414 L1555.0521 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9444" />
+ <path
+ fill="none"
+ d="M1737.8416 -220 L1790.4821 -335.4135 L1796.799 -350.5091 L1942.6581 -740.9563 L1956.9553 -771.0897 L2024.962 -898"
+ clip-path="url(#clipPath2)"
+ id="path9446" />
+ <path
+ fill="none"
+ d="M1730.4249 -190 L1725.5751 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9448" />
+ <path
+ fill="none"
+ d="M1715.6113 -220 L1609.3069 -323.6192 L1597.2324 -332.56 L1584.4562 -339.7423 L1534.261 -364.9576 L1521.441 -372.2469 L1509.2654 -381.3355 L1498.1863 -390.8954 L1395.7156 -491.3533 L1384.5231 -501.4753 L1372.7471 -511.0984 L1359.075 -518.9822 L1316.8344 -536.9285 L1302.9846 -545.2017 L1290.5354 -554.8357 L1278.8702 -565.0334 L1206.5126 -635"
+ clip-path="url(#clipPath2)"
+ id="path9450" />
+ <path
+ fill="none"
+ d="M1721.9266 -190 L1674.641 -111.8283 L1585.7194 54.9422 L1578.7654 70.2131 L1572.662 85.898 L1536.8547 246"
+ clip-path="url(#clipPath2)"
+ id="path9452" />
+ <path
+ fill="none"
+ d="M1737.8553 -220 L1793.4465 -341.6367 L1861.5244 -516.049 L1869.9036 -533.5408 L1879.9336 -550.3941 L1891.3851 -566.1861 L2006.2628 -707"
+ clip-path="url(#clipPath2)"
+ id="path9454" />
+ <path
+ fill="none"
+ d="M1718.7335 -220 L1563.7665 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9456" />
+ <path
+ fill="none"
+ d="M1743.1837 -220 L1839.7024 -338.8295 L1870.7987 -373.4109 L1959.0747 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9458" />
+ <path
+ fill="none"
+ d="M1737.6589 -220 L1759.5264 -269.2584 L1789.1104 -333.3076 L1793.4485 -345.0605 L1797.1232 -357.1674 L1799.2274 -369.9363 L1800.329 -382.1035 L1800.6512 -394.3187 L1795.0359 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9460" />
+ <path
+ fill="none"
+ d="M1686 -220 L1444.5 -300.5"
+ clip-path="url(#clipPath2)"
+ id="path9462" />
+ <path
+ fill="none"
+ d="M1737.9821 -190 L1759.0538 -144.7306 L1763.9989 -132.3875 L1786.4437 -83.6733 L1791.2949 -70.4718 L1794.7535 -56.8085 L1823.2671 190"
+ clip-path="url(#clipPath2)"
+ id="path9464" />
+ <path
+ fill="none"
+ d="M1792.3223 -205.6755 L1912.9915 -207.0047 L1925.9236 -205.9872 L1938.9326 -203.1653 L1962.4874 -194.9545 L2073.5273 -148"
+ clip-path="url(#clipPath2)"
+ id="path9466" />
+ <path
+ fill="none"
+ d="M1669.6777 -210.6785 L1654.0314 -212.1274 L1634.9186 -214.42 L1615.7456 -215.458 L1429.9047 -232.3959 L1393.85 -234.3698 L1375.6881 -233.3309 L1359.0819 -229.8459 L1342.7466 -224.1006 L1327.733 -217.4407 L1150.8571 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9468" />
+ <path
+ fill="none"
+ d="M1715.6975 -220 L1618.0374 -315.7292 L1606.6896 -325.8326 L1593.8826 -334.5842 L1498.2308 -379.2232 L1365.6914 -444"
+ clip-path="url(#clipPath2)"
+ id="path9470" />
+ <path
+ fill="none"
+ d="M1719.4562 -220 L1647.702 -313.2364 L1639.4208 -324.8945 L1631.936 -337.4316 L1626.1655 -351.033 L1622.7638 -364.8717 L1621.6257 -379.3865 L1622.1956 -393.6915 L1651.7098 -587"
+ clip-path="url(#clipPath2)"
+ id="path9472" />
+ <path
+ fill="none"
+ d="M1719.4407 -220 L1647.3424 -313.5588 L1638.4584 -326.7014 L1630.6166 -340.589 L1624.4246 -356.2978 L1621.1759 -371.7042 L1611.754 -432.9737 L1608.1443 -448.4993 L1571.5094 -565.6849 L1565.8434 -580.5214 L1432.4658 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9474" />
+ <path
+ fill="none"
+ d="M1689.9011 -220 L1579.2606 -260.3808 L1562.4448 -268.2509 L1547.4619 -279.0468 L1453.738 -366.6343 L1438.5922 -377.8836 L1421.4435 -385.7967 L1403.1199 -389.4229 L1331.2155 -394.633 L1313.1571 -398.5897 L1296.312 -405.6636 L1004.6323 -564"
+ clip-path="url(#clipPath2)"
+ id="path9476" />
+ <path
+ fill="none"
+ d="M1761.4546 -220 L1868.0454 -272.5"
+ clip-path="url(#clipPath2)"
+ id="path9478" />
+ <path
+ fill="none"
+ d="M1737.8378 -190 L1782.3468 -92.3615 L1788.3433 -77.1847 L1792.8481 -60.652 L1794.0735 -43.5573 L1792.6171 -26.5087 L1758.4685 174.4238 L1756.068 191.6194 L1755.7196 208.9639 L1758.5198 225.972 L1763.705 241.887 L1786.6254 300.2224 L1792.8827 313.9514 L1798.786 328.3393 L1828.4285 396"
+ clip-path="url(#clipPath2)"
+ id="path9480" />
+ <path
+ fill="none"
+ d="M1715.6499 -220 L1613.6167 -319.7058 L1600.3414 -330.6942 L1585.488 -339.5492 L1539.1113 -362.3184 L1523.2679 -371.3719 L1508.7147 -382.5849 L1496.9186 -396.8426 L1365.9385 -605"
+ clip-path="url(#clipPath2)"
+ id="path9482" />
+ <path
+ fill="none"
+ d="M1669.6777 -211.4206 L1570.3632 -221.8192 L1552.5938 -223.1205 L1391.7688 -241.755 L1373.3782 -245.8518 L1216.3251 -299"
+ clip-path="url(#clipPath2)"
+ id="path9484" />
+ <path
+ fill="none"
+ d="M1719.3217 -220 L1652.9008 -305.3127 L1637.6135 -327.1343 L1630.889 -339.1896 L1625.6447 -352.1444 L1622.0043 -365.6252 L1617.4021 -392.0246 L1616.0254 -404.7892 L1611.8835 -431.1289 L1608.2532 -444.5484 L1601.9314 -457.2315 L1593.8871 -468.5936 L1525.8938 -542"
+ clip-path="url(#clipPath2)"
+ id="path9486" />
+ <path
+ fill="none"
+ d="M1719.7517 -190 L1512.821 85.951 L1501.3052 99.9877 L1488.329 112.7794 L1384.1188 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9488" />
+ <path
+ fill="none"
+ d="M1729.2328 -220 L1712.2672 -364"
+ clip-path="url(#clipPath2)"
+ id="path9490" />
+ <path
+ fill="none"
+ d="M1722.5846 -190 L1681.4597 -116.6974 L1674.6794 -103.1759 L1667.4226 -89.8639 L1660.6564 -74.698 L1656.6792 -58.9427 L1653.626 -41.7401 L1651.9781 -24.6842 L1650.8036 -7.3245 L1649.0201 10.5424 L1642.7401 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9492" />
+ <path
+ fill="none"
+ d="M1719.2087 -220 L1694.7434 -251.1231 L1686.0302 -263.1407 L1649.7358 -309.5934 L1641.0094 -322.1074 L1632.9093 -335.3819 L1626.6534 -350.1132 L1622.9349 -365.8031 L1621.8632 -381.9264 L1623.8821 -397.968 L1628.7859 -413.585 L1635.8981 -428.3178 L1712.8442 -546.8633 L1721.0911 -560.9402 L1727.7742 -576.067 L1731.7117 -592.0207 L1732.0756 -608.6171 L1729.2048 -624.3967 L1717.8364 -653.6657 L1673.2709 -747.8106 L1666.1648 -761.2916 L1660.1403 -774.6749 L1640.9241 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9494" />
+ <path
+ fill="none"
+ d="M1669.6777 -191.6222 L1458.2584 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9496" />
+ <path
+ fill="none"
+ d="M1739.1447 -190 L1863.7595 39.5027 L1871.1771 51.7794 L1879.2983 64.0357 L1898.2384 86.2591 L1960.827 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9498" />
+ <path
+ fill="none"
+ d="M1743.6166 -220 L1839.2838 -333.7397 L1850.5449 -344.3013 L1863.4709 -352.6133 L1878.0291 -358.5926 L1893.3893 -361.687 L1968.7413 -367.1797 L1984.5386 -369.0039 L2000.3026 -372.444 L2016.0938 -377.015 L2030.8204 -383.4816 L2045.321 -390.3967 L2183.5708 -466"
+ clip-path="url(#clipPath2)"
+ id="path9500" />
+ <path
+ fill="none"
+ d="M1715.2642 -190 L1468.7358 45"
+ clip-path="url(#clipPath2)"
+ id="path9502" />
+ <path
+ fill="none"
+ d="M1738.1113 -190 L1823.2002 -10.5217 L1911.3304 184.7965 L1921.2964 202.1295 L1933.5916 217.8769 L2028.3225 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9504" />
+ <path
+ fill="none"
+ d="M1746.3147 -190 L1934.6853 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9506" />
+ <path
+ fill="none"
+ d="M1719.8269 -189.9794 L1710.9945 -178.7845 L1516.5352 81.5281 L1506.3717 94.2074 L1495.1205 106.1388 L1481.5793 115.3665 L1466.39 121.0814 L1450.9139 124.6082 L1362.7417 139.9343 L1347.4766 143.7284 L1332.6359 149.6314 L1319.3198 158.2387 L1307.5835 169.312 L1287.3872 193.3884 L672.594 973.4279 L441.6343 1256.7087 L430.5662 1268.6992 L418.3392 1279.9236 L405.4018 1289.8066 L264.9038 1384.0872 L163.1076 1464"
+ clip-path="url(#clipPath2)"
+ id="path9508" />
+ <path
+ fill="none"
+ d="M250.5503 127.5 L428.9006 228.2618 L462.1554 250.634 L726.0931 440"
+ clip-path="url(#clipPath2)"
+ id="path9510" />
+ <path
+ fill="none"
+ d="M233.8562 127.5 L362.6438 323.5"
+ clip-path="url(#clipPath2)"
+ id="path9512" />
+ <path
+ fill="none"
+ d="M233.7425 97.5 L409.7575 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9514" />
+ <path
+ fill="none"
+ d="M225.5602 127.5 L249.045 353.2842 L331.5446 772"
+ clip-path="url(#clipPath2)"
+ id="path9516" />
+ <path
+ fill="none"
+ d="M151.7529 113.9661 L-66.7188 118.3996"
+ clip-path="url(#clipPath2)"
+ id="path9518" />
+ <path
+ fill="none"
+ d="M296.2471 103.2322 L628.8291 60.5686"
+ clip-path="url(#clipPath2)"
+ id="path9520" />
+ <path
+ fill="none"
+ d="M214.4915 127.5 L-46.9915 540"
+ clip-path="url(#clipPath2)"
+ id="path9522" />
+ <path
+ fill="none"
+ d="M2239.3679 1998 L2155.4436 2071.4805 L2143.0876 2080.9946 L2129.8374 2089.5989 L2115.9492 2096.5876 L2101.1887 2102.0188 L2086.0796 2105.4854 L2071.1526 2107.5623 L1841.6396 2119.9771 L1826.8549 2120.2129 L1811.7775 2119.8667 L1796.7798 2118.3806 L1662.748 2092.3142"
+ clip-path="url(#clipPath2)"
+ id="path9524" />
+ <path
+ fill="none"
+ d="M1572.8621 -285.5 L1490.1808 -98.6625 L1481.3794 -82.0423 L1470.7261 -66.2432 L1457.8481 -52.605 L1443.4885 -41.2841 L1412.5255 -21.1364 L1228.6635 93"
+ clip-path="url(#clipPath2)"
+ id="path9526" />
+ <path
+ fill="none"
+ d="M1574.2365 -285.5 L1458.2635 45"
+ clip-path="url(#clipPath2)"
+ id="path9528" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.875 L1738.1715 -280.3118 L1750.5458 -277.2058 L1762.5206 -272.6636 L1773.9989 -266.3214 L1784.2484 -258.9727 L1900.7533 -160.5"
+ clip-path="url(#clipPath2)"
+ id="path9530" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6243 L1682.269 -291.1569 L1699.8048 -290.2136 L1717.6859 -290.6404 L1735.2581 -293.9877 L1751.9829 -299.9295 L1782.4274 -314.1314 L1796.3497 -321.4707 L1811.2347 -328.2465 L1839.545 -342.5801 L1868.8745 -355.7003 L1884.9718 -359.8295 L1900.8519 -361.6436 L1917.1348 -359.9464 L2114.6455 -319"
+ clip-path="url(#clipPath2)"
+ id="path9532" />
+ <path
+ fill="none"
+ d="M1581.8135 -285.5 L1639.1865 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9534" />
+ <path
+ fill="none"
+ d="M1585.9137 -315.5 L1626.9812 -411.5464 L1635.4854 -427.641 L1709.5739 -541.4645 L1718.5413 -556.3099 L1726.7808 -571.8899 L1802.88 -775"
+ clip-path="url(#clipPath2)"
+ id="path9536" />
+ <path
+ fill="none"
+ d="M1579.1661 -285.5 L1570.9286 84.607 L1571.356 101.6438 L1573.7692 118.6585 L1578.5906 135.3658 L1612.851 229.6021 L1617.0092 246.5683 L1617.9976 264.2934 L1615.7949 281.7931 L1611.1025 298.5992 L1553.4745 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9538" />
+ <path
+ fill="none"
+ d="M1585.9491 -315.5 L1628.7637 -415.0833 L1636.6608 -429.5917 L1716.1844 -549.9628 L1741.313 -592.6497 L1751.0687 -606.4507 L1761.7155 -618.8658 L2019.1653 -898"
+ clip-path="url(#clipPath2)"
+ id="path9540" />
+ <path
+ fill="none"
+ d="M1588.1608 -285.5 L1716.3392 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9542" />
+ <path
+ fill="none"
+ d="M1564.959 -315.5 L1392.1792 -493.7342 L1380.0123 -505.272 L1366.1857 -515.327 L1350.8662 -522.8212 L1319.0122 -536.3331 L1303.6681 -545.1216 L1289.8102 -555.9888 L1276.7415 -567.3019 L1252.1761 -591.2873 L1206.6294 -635"
+ clip-path="url(#clipPath2)"
+ id="path9544" />
+ <path
+ fill="none"
+ d="M1578.2711 -285.5 L1534.7289 246"
+ clip-path="url(#clipPath2)"
+ id="path9546" />
+ <path
+ fill="none"
+ d="M1585.9148 -315.5 L1623.9624 -404.4688 L1630.5997 -418.2294 L1638.6387 -431.1348 L1648.6869 -442.6392 L1660.5364 -452.3571 L1673.6339 -459.9249 L1687.4928 -466.009 L1797.6302 -504.2472 L1812.218 -509.8861 L1826.6222 -517.39 L1839.3597 -527.7557 L1862.4513 -551.5592 L1932.7964 -628.1892 L1945.5214 -641.296 L2004.9359 -707"
+ clip-path="url(#clipPath2)"
+ id="path9548" />
+ <path
+ fill="none"
+ d="M1576.1129 -315.5 L1554.8871 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9550" />
+ <path
+ fill="none"
+ d="M1600.1318 -287.4944 L1707.2042 -220"
+ clip-path="url(#clipPath2)"
+ id="path9552" />
+ <path
+ fill="none"
+ d="M1589.1985 -285.5 L1661.0529 -174.3671 L1671.0265 -160.6411 L1682.8058 -148.7924 L1696.5781 -138.8818 L1710.4188 -131.841 L1753.0952 -113.1987 L1780.0155 -98.1506 L1926.3145 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9554" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6609 L1686.9719 -290.92 L1702.6021 -290.1562 L1718.5648 -290.5393 L1734.2698 -293.5994 L1749.1108 -299.236 L1762.6196 -306.9124 L1786.0736 -324.64 L1955.3499 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9556" />
+ <path
+ fill="none"
+ d="M1558.8682 -302.2193 L1460.1221 -310.4482"
+ clip-path="url(#clipPath2)"
+ id="path9558" />
+ <path
+ fill="none"
+ d="M1585.8168 -315.5 L1625.8408 -410.543 L1631.3073 -420.9417 L1637.6289 -430.8379 L1645.0138 -440.2143 L1653.0944 -448.5581 L1669.6295 -463.5915 L1776.2988 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9560" />
+ <path
+ fill="none"
+ d="M1583.7883 -285.5 L1651.3751 -49.0925 L1657.1646 -31.9459 L1664.5016 -14.997 L1674.2026 0.9056 L1813.9171 190"
+ clip-path="url(#clipPath2)"
+ id="path9562" />
+ <path
+ fill="none"
+ d="M1562.7354 -285.5 L1406.2646 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9564" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.8126 L1735.9352 -280.1231 L1753.366 -275.8355 L1770.0992 -269.3911 L1786.1671 -261.7391 L1846.3505 -230.1474 L1862.1223 -222.5492 L1878.9531 -216.0268 L1896.1616 -211.8175 L1930.9523 -204.9131 L1948.24 -199.5791 L2072.7815 -148"
+ clip-path="url(#clipPath2)"
+ id="path9566" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.0663 L1433.3401 -247.8382 L1418.0536 -243.2349 L1402.4036 -239.6292 L1370.939 -233.1345 L1355.0715 -228.8596 L1340.0222 -222.6089 L1151.171 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9568" />
+ <path
+ fill="none"
+ d="M1558.8682 -313.8748 L1358.1388 -444"
+ clip-path="url(#clipPath2)"
+ id="path9570" />
+ <path
+ fill="none"
+ d="M1583.8586 -315.5 L1612.3093 -413.4114 L1650.684 -587"
+ clip-path="url(#clipPath2)"
+ id="path9572" />
+ <path
+ fill="none"
+ d="M1566.2933 -315.5 L1514.8843 -373.89 L1504.1537 -387.4749 L1495.3708 -403.1423 L1489.4203 -419.789 L1460.8938 -520.2078 L1456.6606 -538.3257 L1453.6722 -556.3632 L1452.3645 -574.7655 L1449.7781 -629.4624 L1430.1891 -809.7579 L1428.8347 -827.6007 L1426.6023 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9574" />
+ <path
+ fill="none"
+ d="M1558.8682 -312.1941 L1452.7843 -372.322 L1440.3207 -378.6023 L1427.2346 -384.2264 L1413.2999 -388.1193 L1399.0243 -390.3098 L1343.8071 -393.2482 L1329.5986 -394.5866 L1315.0881 -397.9596 L1301.3245 -402.9852 L1288.3081 -409.2307 L1004.5057 -564"
+ clip-path="url(#clipPath2)"
+ id="path9576" />
+ <path
+ fill="none"
+ d="M1600.1318 -312.8633 L1685.4681 -364"
+ clip-path="url(#clipPath2)"
+ id="path9578" />
+ <path
+ fill="none"
+ d="M1572.8585 -285.5 L1487.5991 -92.9386 L1478.4438 -76.6212 L1468.6229 -61.6985 L1402.7 22.2378 L1394.6174 38.8205 L1389.4469 56.8215 L1368.6556 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9580" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5135 L1693.5884 -289.5154 L1709.191 -288.7659 L1837.5674 -287.9075"
+ clip-path="url(#clipPath2)"
+ id="path9582" />
+ <path
+ fill="none"
+ d="M1583.7517 -315.5 L1607.5015 -399.2886 L1610.8323 -416.8157 L1610.6674 -434.742 L1607.6373 -452.1016 L1580.8672 -566.9084 L1577.3993 -584.0591 L1575.7869 -601.7263 L1577.35 -619.4314 L1580.9305 -636.3984 L1614.8164 -764.4524 L1619.7084 -780.1863 L1624.0825 -796.5162 L1629.0833 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9584" />
+ <path
+ fill="none"
+ d="M1583.8019 -285.5 L1652.9181 -44.5011 L1657.9495 -28.9759 L1664.0696 -13.6799 L1706.2524 72.6705 L1712.1622 88.0203 L1755.9924 223.5812 L1761.5636 238.7214 L1828.6061 396"
+ clip-path="url(#clipPath2)"
+ id="path9586" />
+ <path
+ fill="none"
+ d="M1589.1637 -285.5 L1664.5575 -168.474 L1674.3359 -156.5337 L1685.8951 -145.9557 L1699.149 -137.4223 L1755.5259 -110.7229 L1769.1538 -101.467 L1780.8571 -89.4849 L1791.1833 -75.2934 L1809.1395 -47.7027 L1874.6827 57.0747 L1886.2128 72.1643 L1898.6288 86.4205 L1960.8711 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9588" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5899 L1680.4246 -291.1563 L1695.1542 -290.3194 L1710.582 -290.1999 L1726.1627 -291.7365 L1741.3241 -295.5708 L1755.6965 -301.1228 L1857.4005 -351.0461 L1870.8876 -356.5639 L1885.2015 -360.5438 L1899.5851 -362.6042 L1969.0137 -367.0708 L1983.0198 -368.654 L1997.3274 -370.9745 L2011.1989 -374.9344 L2024.6467 -380.273 L2049.2156 -392.3064 L2183.6387 -466"
+ clip-path="url(#clipPath2)"
+ id="path9590" />
+ <path
+ fill="none"
+ d="M1566.01 -315.4926 L1563.0609 -318.6098 L1506.4263 -383.1129 L1498.4028 -393.4107 L1491.4194 -403.7922 L1366.5425 -604.9753"
+ clip-path="url(#clipPath2)"
+ id="path9592" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.1273 L1428.6742 -246.6027 L1414.7637 -243.1767 L1400.3463 -241.7605 L1385.8116 -243.0361 L1372.291 -245.7882 L1216.0447 -299"
+ clip-path="url(#clipPath2)"
+ id="path9594" />
+ <path
+ fill="none"
+ d="M1589.1405 -285.5 L1662.5685 -171.2502 L1672.3359 -158.9074 L1684.024 -147.4209 L1697.4471 -138.3556 L1711.6204 -131.2945 L1739.769 -118.6583 L1753.9266 -111.6033 L1767.6046 -102.8544 L1779.1833 -91.2369 L1788.0878 -77.7131 L1910.2734 182.3812 L1918.0563 197.3588 L1928.0577 211.2185 L1939.489 224.0622 L2028.2697 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9596" />
+ <path
+ fill="none"
+ d="M1566.3265 -315.5 L1508.5015 -381.3427 L1499.0966 -395.045 L1493.3429 -410.4246 L1491.4697 -427.2559 L1492.8239 -443.7798 L1503.1702 -508.4587 L1509.2715 -542"
+ clip-path="url(#clipPath2)"
+ id="path9598" />
+ <path
+ fill="none"
+ d="M389.0941 -587 L-119.5941 -261"
+ clip-path="url(#clipPath2)"
+ id="path9600" />
+ <path
+ fill="none"
+ d="M128.5263 1464 L-36.5263 1304"
+ clip-path="url(#clipPath2)"
+ id="path9602" />
+ <path
+ fill="none"
+ d="M144.218 1464 L148.782 1150"
+ clip-path="url(#clipPath2)"
+ id="path9604" />
+ <path
+ fill="none"
+ d="M151.1333 1494 L243.8667 1689"
+ clip-path="url(#clipPath2)"
+ id="path9606" />
+ <path
+ fill="none"
+ d="M193.2402 1482.5999 L221.5254 1484.6676"
+ clip-path="url(#clipPath2)"
+ id="path9608" />
+ <path
+ fill="none"
+ d="M131.7539 1494 L55.0677 1587.9316 L42.7085 1601.2833 L29.2008 1613.6403 L14.6157 1624.2771 L-30.3586 1651.8414 L-44.221 1662.6852 L-54.3718 1676.7185 L-60.8013 1692.8674 L-91.1062 1788.2023 L-96.9305 1804.7229 L-104.2114 1820.9052 L-114.1318 1835.8052 L-126.848 1848.3961 L-141.6743 1858.7947 L-188.0667 1884.5151 L-282.5689 1933.7706 L-298.8415 1943.1725 L-314.7511 1953.4357 L-329.8501 1964.6443 L-400.5812 2021.3927 L-414.3242 2033.2428 L-480.0018 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9610" />
+ <path
+ fill="none"
+ d="M136.8978 1464 L44.4644 1268.7787 L30.7535 1243.0776 L22.1897 1230.6184 L11.9742 1219.5244 L0.3747 1209.786 L-281.4855 1022"
+ clip-path="url(#clipPath2)"
+ id="path9612" />
+ <path
+ fill="none"
+ d="M114.6057 1464 L19.7533 1415.5966 L5.1171 1409.1525 L-10.0416 1403.6228 L-25.3298 1399.9612 L-41.5699 1398.2047 L-57.5674 1398.7446 L-73.0805 1401.1993 L-88.2248 1405.7168 L-102.3748 1411.7216 L-115.7571 1419.2593 L-412.0113 1622.5936 L-426.6128 1631.0859 L-442.5374 1638.3893 L-459.532 1643.1439 L-477.3163 1645.5321 L-495.0157 1645.5688 L-530.7623 1644.0494 L-603.877 1638.6968"
+ clip-path="url(#clipPath2)"
+ id="path9614" />
+ <path
+ fill="none"
+ d="M158.371 1494 L187.1266 1524.0143 L197.6006 1535.7157 L208.6994 1546.4695 L219.3031 1557.908 L242.3572 1579.9839 L254.935 1590.5386 L268.6319 1600.2789 L283.2219 1608.0371 L298.8794 1613.9297 L314.9249 1617.7449 L331.4337 1619.5149 L348.0342 1619.0803 L364.3559 1617.3861 L380.0265 1615.2402 L510.7629 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9616" />
+ <path
+ fill="none"
+ d="M94.7598 1489.3663 L25.25 1504"
+ clip-path="url(#clipPath2)"
+ id="path9618" />
+ <path
+ fill="none"
+ d="M155.4991 1464 L346.0009 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9620" />
+ <path
+ fill="none"
+ d="M115.0461 1464 L39.6685 1424.9496 L8.9389 1410.5149 L-6.7761 1404.1628 L-84.1233 1378.9407 L-98.8205 1373.088 L-217.905 1317.8275 L-231.9918 1312.7723 L-246.5594 1309.5073 L-261.5918 1307.9351 L-317.872 1308.4144 L-368.2109 1310.45"
+ clip-path="url(#clipPath2)"
+ id="path9622" />
+ <path
+ fill="none"
+ d="M136.8183 1464 L-68.8183 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9624" />
+ <path
+ fill="none"
+ d="M139.0195 1494 L21.4805 1848"
+ clip-path="url(#clipPath2)"
+ id="path9626" />
+ <path
+ fill="none"
+ d="M137.2531 1494 L45.4936 1698.0031 L38.4408 1711.5551 L30.6577 1724.6348 L20.0462 1735.8912 L7.5286 1744.2808 L-31.3456 1765.874 L-44.1084 1774.0631 L-55.9533 1783.681 L-66.6299 1794.6614 L-75.9345 1806.4084 L-228.7105 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9628" />
+ <path
+ fill="none"
+ d="M131.8724 1494 L58.0749 1585.2761 L48.5865 1596.0686 L38.2552 1606.5284 L26.8 1616.1461 L14.9864 1624.6083 L-33.392 1653.4683 L-56.7115 1671.0442 L-165.1028 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9630" />
+ <path
+ fill="none"
+ d="M145.7432 1494 L170.5621 1707.5676 L173.274 1721.3608 L176.9338 1735.2415 L233.8552 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9632" />
+ <path
+ fill="none"
+ d="M143.1595 1494 L134.3284 1651.611 L125.1812 1858.2568 L123.4991 1875.0447 L120.446 1891.9172 L28.1562 2225"
+ clip-path="url(#clipPath2)"
+ id="path9634" />
+ <path
+ fill="none"
+ d="M114.9596 1464 L32.9453 1421.6379 L-1.0743 1406.0146 L-18.5145 1399.7577 L-71.2901 1383.0033 L-88.9296 1376.5465 L-106.0097 1368.7263 L-238.8289 1302.1188 L-409.014 1224.1451 L-427.4155 1217.8203 L-446.496 1213.999 L-465.6518 1212.6815 L-571.9102 1214.5187"
+ clip-path="url(#clipPath2)"
+ id="path9636" />
+ <path
+ fill="none"
+ d="M115.0747 1464 L26.8791 1418.2637 L1.6098 1407.1744 L-11.6988 1402.4895 L-25.5129 1399.5509 L-39.428 1397.7089 L-53.2746 1396.8475 L-182.7529 1398.5009"
+ clip-path="url(#clipPath2)"
+ id="path9638" />
+ <path
+ fill="none"
+ d="M158.4073 1494 L233.2235 1571.894 L245.2775 1583.5159 L257.7588 1594.7755 L511.0151 1806"
+ clip-path="url(#clipPath2)"
+ id="path9640" />
+ <path
+ fill="none"
+ d="M143.4499 1494 L128.6067 1898.7615 L129.6534 1916.7771 L133.5966 1934.4972 L144.7699 1967.9235 L264.0977 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9642" />
+ <path
+ fill="none"
+ d="M157.9143 1494 L239.0956 1581.5155 L299.5429 1639.5773 L309.3708 1650.3474 L318.2313 1662.1793 L325.1808 1675.1222 L341.235 1713.9014 L459.376 2029"
+ clip-path="url(#clipPath2)"
+ id="path9644" />
+ <path
+ fill="none"
+ d="M131.9298 1494 L59.0988 1584.5089 L39.4312 1605.1343 L27.9236 1614.6936 L15.4433 1623.2069 L1.9076 1630.1975 L-12.1443 1635.9338 L-196.2444 1689.7206 L-211.4697 1695.0406 L-226.6018 1701.6837 L-241.4386 1709.1649 L-358.5241 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9646" />
+ <path
+ fill="none"
+ d="M115.1774 1464 L45.9922 1427.9943 L17.8225 1414.6093 L3.2932 1408.3326 L-12.0923 1402.9446 L-27.8721 1399.5634 L-43.8078 1398.2095 L-59.8553 1398.9216 L-75.4321 1401.8431 L-90.507 1406.4702 L-105.0128 1412.959 L-118.572 1420.2053 L-131.5067 1427.7472 L-143.8491 1435.9572 L-156.4999 1443.1549 L-208.0187 1474.8807 L-222.4372 1482.162 L-238.3481 1487.8889 L-269.2329 1495.8068 L-404.4922 1522.5"
+ clip-path="url(#clipPath2)"
+ id="path9648" />
+ <path
+ fill="none"
+ d="M163.4566 1464 L246.2284 1400.1873 L260.1052 1390.4387 L274.5361 1381.6288 L289.8481 1374.1788 L320.3453 1361.8997 L350.8412 1351.5752 L365.7409 1345.8651 L562.049 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9650" />
+ <path
+ fill="none"
+ d="M-182.8386 -713.5 L-464.6614 -874"
+ clip-path="url(#clipPath2)"
+ id="path9652" />
+ <path
+ fill="none"
+ d="M-146.8453 -713.5 L66.8453 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9654" />
+ <path
+ fill="none"
+ d="M-179.9566 -683.5 L-556.0435 -443"
+ clip-path="url(#clipPath2)"
+ id="path9656" />
+ <path
+ fill="none"
+ d="M-161.2963 -713.5 L-332.2037 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9658" />
+ <path
+ fill="none"
+ d="M-441.3644 -904 L26.8644 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9660" />
+ <path
+ fill="none"
+ d="M-493.8796 -874 L-576.6204 -443"
+ clip-path="url(#clipPath2)"
+ id="path9662" />
+ <path
+ fill="none"
+ d="M-484.8235 -904 L-343.1765 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9664" />
+ <path
+ fill="none"
+ d="M1474.5735 2339 L1326.7584 2276.4133 L1308.9584 2269.8667 L1290.6266 2264.2744 L1271.7128 2260.5183 L1196.8739 2249.6672 L1177.7106 2246.0295 L1122.927 2232.1714 L996.0959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9666" />
+ <path
+ fill="none"
+ d="M1503.9481 2339 L1255.6714 1723.624 L1242.3505 1694.6458 L1130.8816 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9668" />
+ <path
+ fill="none"
+ d="M1474.5431 2339 L1322.069 2274.4961 L1303.8984 2268.2122 L1285.0522 2263.4204 L1265.6094 2261.2283 L1246.234 2261.4336 L1227.1411 2263.3792 L978.9871 2301.2107 L960.8951 2303.2319 L942.4762 2304.3843 L906.9919 2304.9417 L792.7412 2303.2964"
+ clip-path="url(#clipPath2)"
+ id="path9670" />
+ <path
+ fill="none"
+ d="M1518.1578 2369 L1656.8422 2624"
+ clip-path="url(#clipPath2)"
+ id="path9672" />
+ <path
+ fill="none"
+ d="M1529.2338 2369 L1729.9617 2525.5437 L1741.25 2535.3298 L1752.4939 2545.8992 L1763.1542 2557.5071 L1772.4307 2570.2263 L1780.174 2583.7786 L1786.6165 2597.8826 L1797.2206 2626.0237 L1801.7369 2640.0129 L1812.5941 2668.3142 L1818.7988 2682.1631 L1928.7854 2883"
+ clip-path="url(#clipPath2)"
+ id="path9674" />
+ <path
+ fill="none"
+ d="M1511.5278 2369 L1513.1466 2384.8933 L1514.204 2400.4846 L1537.4098 2649.1707 L1540.1097 2665.6206 L1544.6873 2681.5659 L1550.3002 2697.064 L1556.4666 2711.6733 L1818.3805 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9676" />
+ <path
+ fill="none"
+ d="M1526.5431 2339 L1664.9104 2213.5396 L1676.3075 2204.0525 L1688.2982 2195.3054 L1701.2352 2186.9421 L1714.6727 2179.9111 L1728.8771 2174.0081 L1743.3738 2169.3315 L1772.5908 2162.6487 L2081.9709 2107.0034 L2096.4185 2103.4382 L2111.0107 2098.6389 L2124.6841 2092.2168 L2137.7759 2084.4053 L2149.7017 2074.8916 L2160.5408 2063.8689 L2169.6196 2051.8689 L2177.3831 2038.7415 L2183.9478 2025.1888 L2205.1951 1970.9033 L2211.8096 1957.5084 L2221.3857 1945.6956 L2233.8264 1936.7653 L2247.5352 1930.2933 L2514.4805 1835"
+ clip-path="url(#clipPath2)"
+ id="path9678" />
+ <path
+ fill="none"
+ d="M1529.1042 2369 L1738.5509 2533.45 L1750.5435 2543.9087 L1761.3635 2555.615 L1771.2257 2568.3628 L1779.4089 2582.2319 L1786.0944 2596.5154 L1812.7916 2666.5 L1819.77 2680.5874 L1827.7897 2693.7729 L1837.3392 2705.9377 L1848.2404 2717.001 L1860.5529 2726.521 L1873.8605 2734.6018 L1887.8599 2741.093 L1902.7081 2746.1006 L1917.8242 2749.6072 L1962.748 2758.1482 L1977.8821 2762.0352 L1992.6849 2767.7485 L2007.0975 2774.7456 L2020.618 2783.7029 L2033.1394 2793.7778 L2044.6404 2805.4622 L2055.4875 2817.95 L2228.1003 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9680" />
+ <path
+ fill="none"
+ d="M1493.432 2369 L1358.0886 2491.5347 L1344.4315 2502.6399 L1329.5942 2512.6628 L1313.6755 2520.7417 L1297.0505 2526.8035 L1279.6298 2530.5449 L1261.9062 2532.02 L1243.9521 2531.1667 L1226.3867 2528.6655 L1192.8405 2520.178 L1047.8075 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9682" />
+ <path
+ fill="none"
+ d="M1493.3915 2369 L1351.8792 2496.8074 L1336.9489 2508.2498 L1321.3251 2518.696 L823.5881 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9684" />
+ <path
+ fill="none"
+ d="M1504.6932 2339 L1339.462 1871.9652 L1287.3363 1714.5103 L1281.5391 1698.6304 L1271.3762 1666.3949 L1266.9104 1649.3513 L1263.7081 1632.1747 L1261.8214 1614.8285 L1252.174 1465.3066 L1249.6622 1448.1022 L1245.6331 1430.9169 L1239.6428 1414.2061 L1232.1565 1398.4878 L1224.3367 1383.3807 L1075.5237 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9686" />
+ <path
+ fill="none"
+ d="M1505.0319 2369 L1410.9681 2653"
+ clip-path="url(#clipPath2)"
+ id="path9688" />
+ <path
+ fill="none"
+ d="M1534.0114 2369 L1910.9886 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9690" />
+ <path
+ fill="none"
+ d="M1501.9417 2339 L1342.1976 2041.6492 L1333.6259 2028.2693 L1324.1749 2015.4473 L1313.6296 2003.1354 L1097.5363 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9692" />
+ <path
+ fill="none"
+ d="M1504.9796 2339 L1369.1797 1933.2559 L1364.5956 1917.7723 L1361.1023 1901.3207 L1359.2668 1884.6461 L1358.9624 1867.7823 L1364.918 1804.7361 L1385.1973 1636"
+ clip-path="url(#clipPath2)"
+ id="path9694" />
+ <path
+ fill="none"
+ d="M1607.1934 2343.6565 L1641.5518 2340"
+ clip-path="url(#clipPath2)"
+ id="path9696" />
+ <path
+ fill="none"
+ d="M1509.1334 2339 L1483.3666 1893"
+ clip-path="url(#clipPath2)"
+ id="path9698" />
+ <path
+ fill="none"
+ d="M1535.9918 2369 L1686.6624 2455.9526 L1702.3188 2464.1128 L1718.441 2471.5791 L1735.4189 2477.6355 L1752.9897 2482.0723 L1770.8313 2484.4812 L1805.623 2486.6531 L1924.4827 2487.9512 L1942.2737 2489.0781 L1960.0562 2491.6494 L1977.8062 2496.248 L1994.6891 2502.8237 L2010.9612 2510.2305 L2244.1704 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9700" />
+ <path
+ fill="none"
+ d="M1421.5883 2369 L1347.9117 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9702" />
+ <path
+ fill="none"
+ d="M1510.9263 2339 L1526.5001 2086.7854 L1528.6637 2070.645 L1532.7749 2054.6072 L1539.1635 2039.5104 L1582.8965 1955.9016 L1589.814 1941.5165 L1596.3032 1926.5045 L1601.6031 1910.614 L1604.801 1894.145 L1605.9075 1877.3345 L1604.8375 1860.4043 L1601.4618 1844.0298 L1596.4197 1828.249 L1590.9009 1813.1063 L1584.6427 1798.0835 L1579.1389 1783.2101 L1530.6157 1664.5873 L1525.4736 1648.2223 L1521.2292 1631.2045 L1518.8718 1613.6608 L1518.7667 1596.1191 L1520.1587 1578.7006 L1615.3778 1034"
+ clip-path="url(#clipPath2)"
+ id="path9704" />
+ <path
+ fill="none"
+ d="M1520.0275 2339 L1652.9227 2140.2031 L1661.5157 2125.8765 L1669.6093 2110.4673 L1674.8169 2093.8274 L1678.4438 2077.0471 L1692.2361 1993.3143 L1695.9932 1975.8687 L1700.5378 1958.3699 L1707.6724 1941.3625 L1716.8115 1925.3213 L1728.2234 1910.7318 L1740.7257 1897.5914 L1945.353 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9706" />
+ <path
+ fill="none"
+ d="M1511.1052 2369 L1519.2036 2478.908 L1520.9386 2494.2686 L1532.0088 2648.5208 L1532.4585 2664.9966 L1531.5543 2681.3984 L1528.7942 2697.7139 L1523.9926 2713.2405 L1517.3701 2727.6858 L1508.618 2741.5935 L1498.5919 2754.0928 L1487.2609 2765.2034 L1475.011 2774.9775 L1400.5135 2826.1184 L1387.9414 2835.4861 L1376.0679 2845.9873 L1364.8727 2857.1089 L1355.0602 2869.5366 L1346.4813 2882.7495 L1339.2728 2896.8088 L1333.5167 2911.4705 L1329.4667 2926.6213 L1326.7267 2942.0088 L1325.672 2957.7959 L1326.2606 2973.5076 L1327.9357 2989.0308 L1330.9374 3004.3113 L1404.1639 3275.9639 L1407.5632 3290.6909 L1412.1721 3304.8933 L1423.5769 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9708" />
+ <path
+ fill="none"
+ d="M1526.5193 2339 L1665.6112 2212.7002 L1689.0184 2194.4897 L1701.7162 2186.1914 L1714.7228 2178.7192 L1869.8474 2109.8154 L1882.8911 2102.8474 L1895.4789 2095.4939 L2044.3569 1999"
+ clip-path="url(#clipPath2)"
+ id="path9710" />
+ <path
+ fill="none"
+ d="M1496.996 2369 L1385.6895 2497.3909 L1376.2972 2507.3276 L1322.2389 2568.2527 L1304.2604 2589.7803 L1125.6952 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9712" />
+ <path
+ fill="none"
+ d="M1510.8751 2339 L1524.2369 2109.9836 L1527.4911 2077.0388 L1530.6801 2060.7397 L1536.7727 2044.8093 L1587.699 1945.4836 L1600.6235 1915.0745 L1605.15 1898.5553 L1608.6882 1882.624 L1654.8674 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9714" />
+ <path
+ fill="none"
+ d="M1492 2339 L1231 2121.5"
+ clip-path="url(#clipPath2)"
+ id="path9716" />
+ <path
+ fill="none"
+ d="M1511.2671 2369 L1511.5583 2372.4485 L1512.4863 2390.939 L1532.1252 2653.0818 L1532.3657 2673.238 L1530.3511 2693.1304 L1483.7687 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9718" />
+ <path
+ fill="none"
+ d="M1519.9977 2339 L1653.2191 2139.1204 L1662.4175 2124.3665 L1670.4188 2108.1663 L1675.7124 2091.2019 L1696.2084 1972.2346 L1700.4777 1954.8425 L1732.6132 1855.5861 L1738.5227 1839.8522 L1743.5808 1823.199 L1800.3926 1658.3755 L1806.9249 1641.4769 L1814.4071 1624.5726 L1823.2809 1608.1635 L1833.8232 1592.6519 L1845.3483 1578.3093 L1857.2207 1564.7336 L1881.5801 1538.2433 L1893.6631 1525.9165 L2062.9272 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9720" />
+ <path
+ fill="none"
+ d="M1536.2448 2369 L1700.8926 2463.1035 L1716.5065 2470.6301 L1732.8228 2476.7573 L1749.6938 2481.2634 L1766.9144 2483.8633 L1784.0165 2484.6411 L1801.1552 2483.6919 L1817.9308 2480.7009 L1834.475 2476.1997 L1850.3604 2470.1069 L1879.984 2456.0632 L2178.4429 2296.5"
+ clip-path="url(#clipPath2)"
+ id="path9722" />
+ <path
+ fill="none"
+ d="M1522.908 2339 L1805.592 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9724" />
+ <path
+ fill="none"
+ d="M1526.6202 2339 L1669.4025 2210.1367 L1681.7156 2200.2549 L1694.8494 2191.0376 L1708.5754 2182.6992 L1736.0583 2168.71 L1856.1318 2115.9321 L1869.5493 2109.1848 L1882.8529 2101.687 L1895.3044 2092.6658 L1906.7675 2082.3103 L1916.951 2070.5432 L1925.2897 2057.9207 L1932.2095 2044.2831 L1937.395 2029.8201 L1941.0835 2014.8721 L1942.8657 1999.6416 L1944.0657 1984.2588 L1945.8129 1968.6353 L1949.1118 1952.8204 L1954.0919 1937.6868 L1961.2629 1923.1643 L1970.3491 1909.4205 L1981.2208 1896.7792 L1993.2787 1884.9609 L2081.2905 1807.6135 L2253.324 1643"
+ clip-path="url(#clipPath2)"
+ id="path9726" />
+ <path
+ fill="none"
+ d="M1475.3552 2339 L1375.7992 2295.8955 L1325.3004 2275.6824 L1307.8301 2269.3855 L1289.7203 2263.9866 L1271.4009 2260.2725 L1201.3519 2250.1917 L1183.7898 2246.8469 L1166.7448 2241.9495 L1150.2572 2235.1619 L1134.9137 2226.417 L1120.8173 2216.0547 L1108.2313 2204.0881 L1097.0183 2190.8472 L1086.9922 2176.9243 L1051.8983 2121.3184 L1042.0785 2107.6038 L1031.0328 2094.5808 L1018.9379 2082.5935 L981.7686 2049.2241 L968.8684 2038.6184 L956.4572 2027.4056 L788.5068 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9728" />
+ <path
+ fill="none"
+ d="M1504.9901 2339 L1366.5494 1924.4966 L1362.4882 1908.5767 L1359.8616 1892.2843 L1359.1125 1875.623 L1360.5317 1859.0786 L1364.2106 1843.1631 L1369.8442 1827.4664 L1377.5298 1813.0808 L1386.8759 1799.7292 L1397.203 1787.4834 L1418.8458 1765.0261 L1472.7761 1711.0153 L1482.7151 1699.1749 L1491.9009 1685.959 L1499.3961 1671.5507 L1505.2434 1656.2231 L1508.5443 1640.9038 L1510.1094 1624.6781 L1509.5914 1608.5144 L1507.2157 1592.4027 L1503.3352 1577.2427 L1414.2556 1323"
+ clip-path="url(#clipPath2)"
+ id="path9730" />
+ <path
+ fill="none"
+ d="M1510.9319 2339 L1526.4713 2088.8757 L1528.2183 2072.9792 L1531.8409 2057.2632 L1537.6543 2042.4523 L1544.4132 2028.5757 L1585.9958 1949.0065 L1592.6586 1935.08 L1598.5482 1920.4163 L1603.2426 1905.4922 L1605.3632 1889.2352 L1606.0835 1873.2714 L1604.3267 1857.3202 L1600.7614 1841.5823 L1590.5676 1811.7375 L1532.8832 1669.7617 L1527.2454 1654.2057 L1522.8604 1638.2473 L1519.7045 1621.5173 L1518.6511 1604.515 L1519.7151 1587.4683 L1522.7896 1570.5966 L1527.3335 1554.9121 L1533.6583 1539.2854 L1561.9587 1481.5208 L1599.4431 1410.3932 L1606.4193 1395.9069 L1755.7795 1107.7368 L1762.8444 1092.5857 L1769.0634 1076.776 L1774.2321 1060.2958 L1777.7761 1043.705 L1779.5951 1026.4392 L1780.0076 1009.2284 L1773.9335 912.5138 L1713.5631 108.591 L1711.499 94.9959 L1708.3801 80.2525 L1703.2778 66.8524 L1697.6584 54.3873 L1673.673 8.0907 L1662.9922 -15.4828 L1658.6643 -27.8628 L1656.0237 -41.0869 L1655.9708 -54.2819 L1658.2432 -67.2466 L1662.6152 -79.6855 L1667.8322 -91.0654 L1722.6837 -190"
+ clip-path="url(#clipPath2)"
+ id="path9732" />
+ <path
+ fill="none"
+ d="M420.7189 353.5 L698.7811 440"
+ clip-path="url(#clipPath2)"
+ id="path9734" />
+ <path
+ fill="none"
+ d="M373.8378 323.5 L418.1622 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9736" />
+ <path
+ fill="none"
+ d="M371.2291 353.5 L335.7709 772"
+ clip-path="url(#clipPath2)"
+ id="path9738" />
+ <path
+ fill="none"
+ d="M342.7771 353.5 L-26.7771 540"
+ clip-path="url(#clipPath2)"
+ id="path9740" />
+ <path
+ fill="none"
+ d="M331.5783 323.5 L-178.5783 136.5"
+ clip-path="url(#clipPath2)"
+ id="path9742" />
+ <path
+ fill="none"
+ d="M391.3014 323.5 L719.6986 61.5"
+ clip-path="url(#clipPath2)"
+ id="path9744" />
+ <path
+ fill="none"
+ d="M-143.4475 -261 L-156.0525 -683.5"
+ clip-path="url(#clipPath2)"
+ id="path9746" />
+ <path
+ fill="none"
+ d="M-127.6443 -231 L208.6443 97.5"
+ clip-path="url(#clipPath2)"
+ id="path9748" />
+ <path
+ fill="none"
+ d="M-27.0049 2068 L-83.2198 2161.6406 L-90.3236 2174.7258 L-96.6365 2188.5735 L-101.5907 2203.1204 L-105.1204 2217.9927 L-107.1567 2232.9121 L-108.6474 2262.2935 L-107.5751 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9750" />
+ <path
+ fill="none"
+ d="M-3.3147 2038 L88.2079 1944.5159 L98.9239 1931.85 L108.6347 1917.8579 L115.9706 1901.8237 L121.2358 1885.2582 L124.3123 1867.311 L143.2395 1494"
+ clip-path="url(#clipPath2)"
+ id="path9752" />
+ <path
+ fill="none"
+ d="M-24.6663 2038 L-80.8903 1911.4879 L-85.1263 1899.4636 L-88.5606 1887.0404 L-90.5707 1874.1945 L-91.1801 1861.1097 L-90.1218 1848.1241 L-87.5325 1835.3932 L-83.6841 1822.7667 L-72.56 1799.5031 L-53.9055 1768.1414 L-19.3229 1712.5"
+ clip-path="url(#clipPath2)"
+ id="path9754" />
+ <path
+ fill="none"
+ d="M1596.9543 2095.5 L1515.0457 2339"
+ clip-path="url(#clipPath2)"
+ id="path9756" />
+ <path
+ fill="none"
+ d="M1662.748 2092.5029 L1764.6105 2112.6294 L1782.9017 2115.6848 L1801.8885 2118.3333 L1821.3508 2119.7209 L1840.4524 2120.2183 L1858.9543 2119.3088 L1877.6461 2119.5857 L2183.1145 2112.4343 L2200.6819 2112.6753 L2218.771 2113.5925 L2236.468 2115.9619 L2253.6194 2120.0029 L2270.5688 2125.4739 L2286.7974 2131.6306 L2458.6768 2209"
+ clip-path="url(#clipPath2)"
+ id="path9758" />
+ <path
+ fill="none"
+ d="M1602.3943 2065.5 L1606.7793 1898.7041 L1606.4932 1881.5487 L1605.2306 1864.0957 L1601.9255 1846.7361 L1596.955 1829.9541 L1591.1913 1813.7092 L1533.9847 1674.6245 L1527.9525 1658.2727 L1522.3416 1641.5908 L1503.7571 1574.8905 L1420.4307 1339.3589 L1414.5142 1324.3173 L1414.069 1323"
+ clip-path="url(#clipPath2)"
+ id="path9760" />
+ <path
+ fill="none"
+ d="M1603.0338 2095.5 L1619.5222 2334.7439 L1619.976 2349.6047 L1619.3141 2364.5964 L1616.8829 2379.4578 L1612.6283 2393.7292 L1606.6503 2407.0378 L1599.2849 2419.5703 L1533.5831 2509.7273 L1499.2429 2554.429 L1489.8187 2565.7656 L1418.298 2653"
+ clip-path="url(#clipPath2)"
+ id="path9762" />
+ <path
+ fill="none"
+ d="M1603.1926 2095.5 L1621.6029 2327.0608 L1624.4425 2347.2661 L1628.7183 2366.9514 L1635.0629 2385.7578 L1643.6881 2403.5862 L1654.035 2420.3408 L1665.6207 2435.8164 L1758.1301 2550.2654 L1769.3726 2565.7361 L1779.1656 2582.3586 L1787.2401 2599.9016 L1814.0522 2669.9602 L1822.2802 2687.2004 L1928.8368 2883"
+ clip-path="url(#clipPath2)"
+ id="path9764" />
+ <path
+ fill="none"
+ d="M1588.7958 2095.5 L1440.1951 2264.3108 L1421.9424 2287.5852 L1413.851 2300.9641 L1407.3724 2315.2051 L1402.7751 2330.5364 L1400.0977 2346.2444 L1394.8491 2410.0798 L1391.8948 2426.9863 L1386.8583 2443.4583 L1380.0405 2459.543 L1371.4266 2474.8496 L1352.7933 2504.1155 L1264.7759 2637.0266 L1255.2261 2652.488 L1155.7711 2805.2529 L1146.0284 2821.1672 L1135.6465 2836.3376 L1125.1975 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9766" />
+ <path
+ fill="none"
+ d="M1585.7421 2095.5 L1275.7579 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9768" />
+ <path
+ fill="none"
+ d="M1603.1949 2095.5 L1622.4318 2336.9685 L1624.5369 2352.1443 L1628.201 2367.3962 L1632.8905 2381.77 L1638.9683 2395.7341 L1646.1216 2408.7371 L1654.6532 2421.2065 L1664.1459 2432.8657 L1674.5833 2443.5085 L1686.1106 2453.272 L1697.5612 2462.1409 L1912.3665 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9770" />
+ <path
+ fill="none"
+ d="M1603.7489 2065.5 L1655.7511 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9772" />
+ <path
+ fill="none"
+ d="M1593.1482 2065.5 L1491.3518 1893"
+ clip-path="url(#clipPath2)"
+ id="path9774" />
+ <path
+ fill="none"
+ d="M1603.0256 2095.5 L1619.4376 2335.5383 L1619.8356 2352.4175 L1618.8832 2369.4175 L1615.4667 2385.9312 L1610.9801 2401.5234 L1549.5068 2578.6951 L1544.7748 2594.0952 L1540.5493 2610.1763 L1538.3051 2626.9604 L1537.8387 2643.7305 L1539.5312 2660.8184 L1543.3848 2677.5637 L1548.2743 2693.5508 L1620.949 2887.3188 L1626.1494 2902.9475 L1630.7904 2919.1487 L1634.1757 2935.949 L1635.9564 2952.8755 L1635.8079 2970.0298 L1633.827 2987.1138 L1630.0143 3003.8672 L1624.4489 3020.2371 L1617.4717 3036.0044 L1609.7772 3051.0796 L1436.2516 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9776" />
+ <path
+ fill="none"
+ d="M1570.7225 2095.5 L1288.5803 2230.8096 L1274.9982 2236.7656 L1260.8542 2242.2251 L1246.2103 2246.6372 L982.4409 2300.4243 L953.6058 2304.5635 L924.563 2305.3845 L792.7412 2303.3887"
+ clip-path="url(#clipPath2)"
+ id="path9778" />
+ <path
+ fill="none"
+ d="M1603.1537 2095.5 L1620.8918 2326.1306 L1625.1042 2362.6926 L1662.8341 2624"
+ clip-path="url(#clipPath2)"
+ id="path9780" />
+ <path
+ fill="none"
+ d="M1541.252 2084.5603 L1343.7324 2097.7622"
+ clip-path="url(#clipPath2)"
+ id="path9782" />
+ <path
+ fill="none"
+ d="M1640.2059 2065.5 L1780.2941 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9784" />
+ <path
+ fill="none"
+ d="M1572.6794 2065.5 L1434.8101 1994.9679 L1106.5612 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9786" />
+ <path
+ fill="none"
+ d="M1603.0039 2095.5 L1619.616 2343.7134 L1619.334 2362.2961 L1616.5592 2380.8618 L1611.7566 2398.3032 L1606.5804 2414.9185 L1549.1158 2579.8984 L1544.0386 2597.4407 L1539.7373 2615.8103 L1536.9749 2634.4294 L1533.7061 2671.905 L1531.5634 2690.6077 L1483.8102 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9788" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4651 L1780.0096 2115.5613 L1796.447 2117.708 L1813.3804 2119.1421 L1830.0333 2118.6409 L1846.8956 2115.9663 L1862.7615 2110.9902 L1877.9795 2104.4839 L1905.5245 2089.0781 L2044.3778 1999"
+ clip-path="url(#clipPath2)"
+ id="path9790" />
+ <path
+ fill="none"
+ d="M1612.9232 2065.5 L1705.944 1937.7614 L1717.1481 1923.3706 L1729.4146 1909.6766 L1743.266 1897.5363 L1758.9332 1887.454 L1775.6699 1879.6144 L1793.1348 1874.4734 L1811.5116 1871.0072 L1970.6 1855.2622 L1988.6428 1852.0848 L2006.829 1847.8024 L2024.3502 1841.5553 L2040.8623 1833.4706 L2056.6687 1823.6088 L2070.9719 1812.4393 L2084.522 1800.8351 L2252.9895 1643"
+ clip-path="url(#clipPath2)"
+ id="path9792" />
+ <path
+ fill="none"
+ d="M1613.0736 2095.5 L1771.4264 2310"
+ clip-path="url(#clipPath2)"
+ id="path9794" />
+ <path
+ fill="none"
+ d="M1639.7083 2095.5 L1842.3861 2176.1233 L1859.5131 2185.2539 L1876.282 2195.9019 L1891.6011 2208.3118 L1905.634 2221.8408 L1931.1401 2250.0837 L2260.4797 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9796" />
+ <path
+ fill="none"
+ d="M1647.1119 2095.5 L2161.3879 2266.5"
+ clip-path="url(#clipPath2)"
+ id="path9798" />
+ <path
+ fill="none"
+ d="M1603.1909 2095.5 L1621.691 2328.5208 L1623.5604 2343.7834 L1626.24 2359.3225 L1630.3749 2374.5793 L1636.0944 2389.2988 L1642.9762 2403.4038 L1651.1168 2416.8372 L1660.1671 2429.6006 L1758.1458 2550.04 L1768.1744 2563.7002 L1777.2103 2578.6135 L1784.3627 2594.6853 L1789.4128 2611.853 L1791.9921 2629.5588 L1793.291 2647.2483 L1792.9524 2895.9575 L1795.2501 2933.1309 L1824.1862 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9800" />
+ <path
+ fill="none"
+ d="M1603.203 2095.5 L1621.8832 2328.4165 L1624.0609 2345.5154 L1627.2642 2362.4485 L1632.0743 2378.8948 L1638.6213 2394.3691 L1646.8019 2409.1277 L1656.0619 2422.8191 L1667.0085 2435.4368 L1679.0601 2446.8408 L1692.3024 2456.9438 L1706.4554 2465.6316 L1721.5145 2472.658 L1737.2064 2478.3113 L1753.2076 2482.2488 L1769.3447 2484.6384 L1785.3156 2486.0251 L1800.7511 2486.7747 L1920.0581 2487.4966 L1935.141 2488.1736 L1950.616 2489.679 L1966.2471 2492.644 L1980.7709 2497.282 L1994.8182 2503.7949 L2008.2539 2511.574 L2020.3892 2520.8616 L2031.2859 2531.5286 L2040.8636 2543.397 L2049.1069 2556.0459 L2055.8984 2570.1116 L2060.9514 2584.1262 L2065.0398 2598.769 L2071.573 2626.8027 L2083.4851 2682.906 L2087.3142 2697.304 L2091.7251 2711.4783 L2232.8469 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9802" />
+ <path
+ fill="none"
+ d="M1555.4919 2065.5 L1263.2942 1971.259 L1245.3774 1966.6671 L1226.5901 1963.6918 L1207.9307 1962.2289 L1171.8567 1961.0642 L1081.4442 1960.0654 L1062.9497 1958.3174 L1044.2203 1954.9642 L1025.8896 1950.8408 L819.3997 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9804" />
+ <path
+ fill="none"
+ d="M1608.9635 2065.5 L1809.4962 1633.5309 L1818.6376 1616.1558 L1829.1941 1599.274 L1841.2507 1583.3263 L2063.0132 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9806" />
+ <path
+ fill="none"
+ d="M1602.3933 2065.5 L1606.7363 1899.8634 L1606.4586 1882.6648 L1605.2378 1865.1937 L1602.3794 1848.0233 L1597.3771 1831.3533 L1585.6033 1799.6447 L1528.9104 1659.5087 L1523.7875 1642.5001 L1520.1628 1624.7736 L1518.6923 1606.78 L1519.3666 1588.6658 L1521.3606 1571.0901 L1615.3744 1034"
+ clip-path="url(#clipPath2)"
+ id="path9808" />
+ <path
+ fill="none"
+ d="M1571.2109 2095.5 L1261.994 2246.146 L1219.6743 2264.4104 L1205.4592 2271.2598 L1191.7346 2278.4478 L1178.4591 2287.1375 L1166.1311 2296.8726 L1154.6273 2306.9568 L1013.2023 2446.5"
+ clip-path="url(#clipPath2)"
+ id="path9810" />
+ <path
+ fill="none"
+ d="M1612.9133 2065.5 L1708.3259 1934.3589 L1718.8427 1921.1146 L1730.2498 1907.9574 L1742.2875 1895.532 L1945.3046 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9812" />
+ <path
+ fill="none"
+ d="M1572.9703 2065.5 L1444.6885 1999.2152 L1429.064 1990.3815 L1413.6222 1980.5148 L1399.3938 1969.1509 L1386.8495 1955.9407 L1376.3173 1941.3074 L1367.1516 1926.2937 L1215.7188 1635.2328 L1131.2916 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9814" />
+ <path
+ fill="none"
+ d="M1602.3855 2065.5 L1606.9542 1887.743 L1606 1869.5469 L1602.9114 1851.5056 L1597.8892 1834.3082 L1590.2271 1818.0243 L1580.5396 1803.0505 L1569.3032 1789.5634 L1544.9924 1765.5038 L1403.4001 1636"
+ clip-path="url(#clipPath2)"
+ id="path9816" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4412 L1766.4723 2112.8303 L1800.2173 2118.0352 L1817.9073 2119.0618 L1835.2128 2118.0942 L1852.0842 2114.189 L1868.7249 2108.4495 L1883.6569 2100.4832 L1897.4779 2090.6223 L1909.8057 2078.9834 L1920.2412 2065.7119 L1928.7743 2051.3101 L1935.4041 2035.9259 L1939.7797 2019.7667 L1942.3596 2003.6836 L1945.6359 1971.5028 L1948.5076 1955.5732 L1953.2712 1940.0039 L1959.8096 1925.6807 L1968.1327 1912.3596 L1978.111 1900.3622 L1989.2583 1889.7343 L2001.7524 1880.6145 L2015.2451 1873.4164 L2029.7437 1867.4449 L2044.5986 1863.3865 L2059.4072 1860.6979 L2116.5818 1854.9585 L2130.5618 1854.0964 L2427.3464 1831.3152"
+ clip-path="url(#clipPath2)"
+ id="path9818" />
+ <path
+ fill="none"
+ d="M1602.395 2065.5 L1606.7798 1898.9805 L1606.3993 1880.6311 L1604.8654 1862.1401 L1601.0284 1844.0854 L1594.6597 1826.991 L1585.889 1810.8241 L1574.9169 1796.2695 L1561.8469 1783.6718 L1547.1339 1773.0948 L1530.927 1764.6783 L1514.0385 1758.6746 L1496.0397 1755.1381 L1478.5284 1752.9952 L1377.3137 1744.3647 L1359.9923 1741.0127 L1343.1707 1736.0409 L1327.205 1728.5714 L1312.6506 1718.9408 L1299.2815 1707.3992 L1288.0135 1694.0232 L1278.6018 1679.4884 L1271.3124 1663.254 L1266.2087 1646.291 L1263.3679 1629.0929 L1251.9883 1463.8362 L1249.3915 1446.7079 L1245.1688 1429.4218 L1239.0171 1412.9744 L1231.691 1397.4093 L1158.1884 1265.8065 L1149.532 1251.7174 L1075.525 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9820" />
+ <path
+ fill="none"
+ d="M1571.1819 2095.5 L1270.4301 2241.884 L1209.0909 2269.5261 L1193.9401 2277.4502 L1179.7173 2286.9822 L1166.2568 2298.0002 L1154.4349 2310.5815 L1144.4984 2324.4265 L1136.3844 2339.6184 L1130.1035 2355.6626 L1125.9659 2372.5798 L1123.5559 2389.3396 L1122.2933 2406.2454 L1120.1442 2455.5945 L1118.5703 2472.6367 L1115.6298 2489.781 L1110.2885 2506.1963 L1102.5222 2521.7383 L1093.292 2536.2493 L1081.7872 2549.6086 L1057.8158 2573.1782 L813.2117 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9822" />
+ <path
+ fill="none"
+ d="M1570.7183 2095.5 L1288.796 2230.6855 L1274.8589 2236.5764 L1260.1879 2242.116 L1245.0063 2246.1299 L1229.2333 2248.7217 L1213.7101 2249.8647 L1198.0498 2249.1724 L1182.5889 2247.0691 L1153.3807 2240.5171 L996.3959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9824" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/user/tools.in b/doc/user/tools.in
deleted file mode 100644
index c049b8e..0000000
--- a/doc/user/tools.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<para>
-
-This appendix contains descriptions of all of the
-Tools modules that are
-available "out of the box" in this version of SCons.
-
-</para>
-
-<variablelist>
-
-&tools-gen;
-
-</variablelist>
diff --git a/doc/user/tools.xml b/doc/user/tools.xml
index c049b8e..351096d 100644
--- a/doc/user/tools.xml
+++ b/doc/user/tools.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<appendix id="app-tools"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Tools</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -31,8 +52,6 @@ available "out of the box" in this version of SCons.
</para>
-<variablelist>
-
-&tools-gen;
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../generated/tools.gen"/>
-</variablelist>
+</appendix>
diff --git a/doc/user/troubleshoot.in b/doc/user/troubleshoot.in
deleted file mode 100644
index 7259ed3..0000000
--- a/doc/user/troubleshoot.in
+++ /dev/null
@@ -1,914 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- The experience of configuring any
- software build tool to build a large code base
- usually, at some point,
- involves trying to figure out why
- the tool is behaving a certain way,
- and how to get it to behave the way you want.
- &SCons; is no different.
- This appendix contains a number of
- different ways in which you can
- get some additional insight into &SCons;' behavior.
-
- </para>
-
- <para>
-
- Note that we're always interested in trying to
- improve how you can troubleshoot configuration problems.
- If you run into a problem that has
- you scratching your head,
- and which there just doesn't seem to be a good way to debug,
- odds are pretty good that someone else will run into
- the same problem, too.
- If so, please let the SCons development team know
- (preferably by filing a bug report
- or feature request at our project pages at tigris.org)
- so that we can use your feedback
- to try to come up with a better way to help you,
- and others, get the necessary insight into &SCons; behavior
- to help identify and fix configuration issues.
-
- </para>
-
- <section>
- <title>Why is That Target Being Rebuilt? the &debug-explain; Option</title>
-
- <para>
-
- Let's look at a simple example of
- a misconfigured build
- that causes a target to be rebuilt
- every time &SCons; is run:
-
- </para>
-
- <scons_example name="explain1">
- <file name="SConstruct" printme="1">
- # Intentionally misspell the output file name in the
- # command used to create the file:
- Command('file.out', 'file.in', 'cp $SOURCE file.oout')
- </file>
- <file name="file.in">
- file.in
- </file>
- </scons_example>
-
- <para>
-
- (Note to Windows users: The POSIX &cp; command
- copies the first file named on the command line
- to the second file.
- In our example, it copies the &file_in; file
- to the &file_out; file.)
-
- </para>
-
- <para>
-
- Now if we run &SCons; multiple times on this example,
- we see that it re-runs the &cp;
- command every time:
-
- </para>
-
- <scons_output example="explain1" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- In this example,
- the underlying cause is obvious:
- we've intentionally misspelled the output file name
- in the &cp; command,
- so the command doesn't actually
- build the &file_out; file that we've told &SCons; to expect.
- But if the problem weren't obvious,
- it would be helpful
- to specify the &debug-explain; option
- on the command line
- to have &SCons; tell us very specifically
- why it's decided to rebuild the target:
-
- </para>
-
- <scons_output example="explain1" os="posix">
- <scons_output_command>scons -Q --debug=explain</scons_output_command>
- </scons_output>
-
- <para>
-
- If this had been a more complicated example
- involving a lot of build output,
- having &SCons; tell us that
- it's trying to rebuild the target file
- because it doesn't exist
- would be an important clue
- that something was wrong with
- the command that we invoked to build it.
-
- </para>
-
- <para>
-
- The &debug-explain; option also comes in handy
- to help figure out what input file changed.
- Given a simple configuration that builds
- a program from three source files,
- changing one of the source files
- and rebuilding with the &debug-explain;
- option shows very specifically
- why &SCons; rebuilds the files that it does:
-
- </para>
-
- <scons_example name="explain2">
- <file name="SConstruct">
- Program('prog', ['file1.c', 'file2.c', 'file3.c'])
- </file>
- <file name="file1.c">
- file1.c
- </file>
- <file name="file2.c">
- file2.c
- </file>
- <file name="file3.c">
- file3.c
- </file>
- </scons_example>
-
- <scons_output example="explain2" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF file2.c]">edit file2.c</scons_output_command>
- <scons_output_command>scons -Q --debug=explain</scons_output_command>
- </scons_output>
-
- <para>
-
- This becomes even more helpful
- in identifying when a file is rebuilt
- due to a change in an implicit dependency,
- such as an incuded <filename>.h</filename> file.
- If the <filename>file1.c</filename>
- and <filename>file3.c</filename> files
- in our example
- both included a &hello_h; file,
- then changing that included file
- and re-running &SCons; with the &debug-explain; option
- will pinpoint that it's the change to the included file
- that starts the chain of rebuilds:
-
- </para>
-
- <scons_example name="explain3">
- <file name="SConstruct">
- Program('prog', ['file1.c', 'file2.c', 'file3.c'], CPPPATH='.')
- </file>
- <file name="file1.c">
- #include &lt;hello.h&gt;
- file1.c
- </file>
- <file name="file2.c">
- file2.c
- </file>
- <file name="file3.c">
- #include &lt;hello.h&gt;
- file3.c
- </file>
- <file name="hello.h">
- #define string "world"
- </file>
- </scons_example>
-
- <scons_output example="explain3" os="posix">
- <scons_output_command>scons -Q</scons_output_command>
- <scons_output_command output=" [CHANGE THE CONTENTS OF hello.h]">edit hello.h</scons_output_command>
- <scons_output_command>scons -Q --debug=explain</scons_output_command>
- </scons_output>
-
- <para>
-
- (Note that the &debug-explain; option will only tell you
- why &SCons; decided to rebuild necessary targets.
- It does not tell you what files it examined
- when deciding <emphasis>not</emphasis>
- to rebuild a target file,
- which is often a more valuable question to answer.)
-
- </para>
-
- </section>
-
- <section>
- <title>What's in That Construction Environment? the &Dump; Method</title>
-
- <para>
-
- When you create a construction environment,
- &SCons; populates it
- with construction variables that are set up
- for various compilers, linkers and utilities
- that it finds on your system.
- Although this is usually helpful and what you want,
- it might be frustrating if &SCons;
- doesn't set certain variables that you
- expect to be set.
- In situations like this,
- it's sometimes helpful to use the
- construction environment &Dump; method
- to print all or some of
- the construction variables.
- Note that the &Dump; method
- <emphasis>returns</emphasis>
- the representation of the variables
- in the environment
- for you to print (or otherwise manipulate):
-
- </para>
-
- <scons_example name="Dump">
- <file name="SConstruct" printme="1">
- env = Environment()
- print env.Dump()
- </file>
- </scons_example>
-
- <para>
-
- On a POSIX system with gcc installed,
- this might generate:
-
- </para>
-
- <scons_output example="Dump" os="posix" tools="gcc">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- On a Windows system with Visual C++
- the output might look like:
-
- </para>
-
- <scons_output example="Dump" os="win32" tools="msvc">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- The construction environments in these examples have
- actually been restricted to just gcc and Visual C++,
- respectively.
- In a real-life situation,
- the construction environments will
- likely contain a great many more variables.
- Also note that we've massaged the example output above
- to make the memory address of all objects a constant 0x700000.
- In reality, you would see a different hexadecimal
- number for each object.
-
- </para>
-
- <para>
-
- To make it easier to see just what you're
- interested in,
- the &Dump; method allows you to
- specify a specific constrcution variable
- that you want to disply.
- For example,
- it's not unusual to want to verify
- the external environment used to execute build commands,
- to make sure that the PATH and other
- environment variables are set up the way they should be.
- You can do this as follows:
-
- </para>
-
- <scons_example name="Dump_ENV">
- <file name="SConstruct" printme="1">
- env = Environment()
- print env.Dump('ENV')
- </file>
- </scons_example>
-
- <para>
-
- Which might display the following when executed on a POSIX system:
-
- </para>
-
- <scons_output example="Dump_ENV" os="posix">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- <para>
-
- And the following when executed on a Windows system:
-
- </para>
-
- <scons_output example="Dump_ENV" os="win32">
- <scons_output_command>scons</scons_output_command>
- </scons_output>
-
- </section>
-
- <section>
-
- <title>What Dependencies Does &SCons; Know About? the &tree; Option</title>
-
- <para>
-
- Sometimes the best way to try to figure out what
- &SCons; is doing is simply to take a look at the
- dependency graph that it constructs
- based on your &SConscript; files.
- The <literal>--tree</literal> option
- will display all or part of the
- &SCons; dependency graph in an
- "ASCII art" graphical format
- that shows the dependency hierarchy.
-
- </para>
-
- <para>
-
- For example, given the following input &SConstruct; file:
-
- </para>
-
- <scons_example name="tree1">
- <file name="SConstruct" printme="1">
- env = Environment(CPPPATH = ['.'])
- env.Program('prog', ['f1.c', 'f2.c', 'f3.c'])
- </file>
- <file name="f1.c">
- #include "inc.h"
- </file>
- <file name="f2.c">
- #include "inc.h"
- </file>
- <file name="f3.c">
- #include "inc.h"
- </file>
- <file name="inc.h">
- inc.h
- </file>
- </scons_example>
-
- <para>
-
- Running &SCons; with the <literal>--tree=all</literal>
- option yields:
-
- </para>
-
- <scons_output example="tree1">
- <scons_output_command>scons -Q --tree=all</scons_output_command>
- </scons_output>
-
- <para>
-
- The tree will also be printed when the
- <literal>-n</literal> (no execute) option is used,
- which allows you to examine the dependency graph
- for a configuration without actually
- rebuilding anything in the tree.
-
- </para>
-
- <para>
-
- The <literal>--tree</literal> option only prints
- the dependency graph for the specified targets
- (or the default target(s) if none are specified on the command line).
- So if you specify a target like <filename>f2.o</filename>
- on the command line,
- the <literal>--tree</literal> option will only
- print the dependency graph for that file:
-
- </para>
-
- <scons_output example="tree1">
- <scons_output_command>scons -Q --tree=all f2.o</scons_output_command>
- </scons_output>
-
- <para>
-
- This is, of course, useful for
- restricting the output from a very large
- build configuration to just a
- portion in which you're interested.
- Multiple targets are fine,
- in which case a tree will be printed
- for each specified target:
-
- </para>
-
- <scons_output example="tree1">
- <scons_output_command>scons -Q --tree=all f1.o f3.o</scons_output_command>
- </scons_output>
-
- <para>
-
- The <literal>status</literal> argument may be used
- to tell &SCons; to print status information about
- each file in the dependency graph:
-
- </para>
-
- <scons_output example="tree1">
- <scons_output_command>scons -Q --tree=status</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that <literal>--tree=all,status</literal> is equivalent;
- the <literal>all</literal>
- is assumed if only <literal>status</literal> is present.
- As an alternative to <literal>all</literal>,
- you can specify <literal>--tree=derived</literal>
- to have &SCons; only print derived targets
- in the tree output,
- skipping source files
- (like <filename>.c</filename> and <filename>.h</filename> files):
-
- </para>
-
- <scons_output example="tree1">
- <scons_output_command>scons -Q --tree=derived</scons_output_command>
- </scons_output>
-
- <para>
-
- You can use the <literal>status</literal>
- modifier with <literal>derived</literal> as well:
-
- </para>
-
- <scons_output example="tree1">
- <scons_output_command>scons -Q --tree=derived,status</scons_output_command>
- </scons_output>
-
- <para>
-
- Note that the order of the <literal>--tree=</literal>
- arguments doesn't matter;
- <literal>--tree=status,derived</literal> is
- completely equivalent.
-
- </para>
-
- <para>
-
- The default behavior of the <literal>--tree</literal> option
- is to repeat all of the dependencies each time the library dependency
- (or any other dependency file) is encountered in the tree.
- If certain target files share other target files,
- such as two programs that use the same library:
-
- </para>
-
- <scons_example name="tree2">
- <file name="SConstruct" printme="1">
- env = Environment(CPPPATH = ['.'],
- LIBS = ['foo'],
- LIBPATH = ['.'])
- env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- env.Program('prog1.c')
- env.Program('prog2.c')
- </file>
- <file name="prog1.c">
- #include "inc.h"
- </file>
- <file name="prog2.c">
- #include "inc.h"
- </file>
- <file name="f1.c">
- #include "inc.h"
- </file>
- <file name="f2.c">
- #include "inc.h"
- </file>
- <file name="f3.c">
- #include "inc.h"
- </file>
- <file name="inc.h">
- inc.h
- </file>
- </scons_example>
-
- <para>
-
- Then there can be a <emphasis>lot</emphasis> of repetition in the
- <literal>--tree=</literal> output:
-
- </para>
-
- <scons_output example="tree2">
- <scons_output_command>scons -Q --tree=all</scons_output_command>
- </scons_output>
-
- <para>
-
- In a large configuration with many internal libraries
- and include files,
- this can very quickly lead to huge output trees.
- To help make this more manageable,
- a <literal>prune</literal> modifier may
- be added to the option list,
- in which case &SCons;
- will print the name of a target that has
- already been visited during the tree-printing
- in <literal>[square brackets]</literal>
- as an indication that the dependencies
- of the target file may be found
- by looking farther up the tree:
-
- </para>
-
- <scons_output example="tree2">
- <scons_output_command>scons -Q --tree=prune</scons_output_command>
- </scons_output>
-
- <para>
-
- Like the <literal>status</literal> keyword,
- the <literal>prune</literal> argument by itself
- is equivalent to <literal>--tree=all,prune</literal>.
-
- </para>
-
- </section>
-
- <section>
-
- <title>How is &SCons; Constructing the Command Lines It Executes? the &debug-presub; Option</title>
-
- <para>
-
- Sometimes it's useful to look at the
- pre-substitution string
- that &SCons; uses to generate
- the command lines it executes.
- This can be done with the &debug-presub; option:
-
- </para>
-
- <scons_example name="presub">
- <file name="SConstruct">
- env = Environment(CPPPATH = ['.'])
- env.Program('prog', 'prog.c')
- </file>
- <file name="prog.c">
- prog.c
- </file>
- </scons_example>
-
- <!--
-
- Have to capture output here, otherwise the - -debug=presub output
- shows the Python functions from the sconsdoc.py execution wrapper
- used to generate this manual, not the underlying command-line strings.
-
- <scons_output example="presub">
- <scons_output_command>scons -Q - -debug=presub</scons_output_command>
- </scons_output>
-
- -->
-
- <screen>
- % <userinput>scons -Q --debug=presub</userinput>
- Building prog.o with action:
- $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCOMCOM $SOURCES
- cc -o prog.o -c -I. prog.c
- Building prog with action:
- $SMART_LINKCOM
- cc -o prog prog.o
- </screen>
-
- </section>
-
- <section>
-
- <title>Where is &SCons; Searching for Libraries? the &debug-findlibs; Option</title>
-
- <para>
-
- To get some insight into what library names
- &SCons; is searching for,
- and in which directories it is searching,
- Use the <literal>--debug=findlibs</literal> option.
- Given the following input &SConstruct; file:
-
- </para>
-
- <scons_example name="findlibs">
- <file name="SConstruct" printme="1">
- env = Environment(LIBPATH = ['libs1', 'libs2'])
- env.Program('prog.c', LIBS=['foo', 'bar'])
- </file>
- <file name="prog.c">
- prog.c
- </file>
- <file name="libs1/libfoo.a">
- libs1/libfoo.a
- </file>
- <file name="libs2/libbar.a">
- libs2/libbar.a
- </file>
- </scons_example>
-
- <para>
-
- And the libraries <filename>libfoo.a</filename>
- and <filename>libbar.a</filename>
- in <filename>libs1</filename> and <filename>libs2</filename>,
- respectively,
- use of the <literal>--debug=findlibs</literal> option yields:
-
- </para>
-
- <scons_output example="findlibs">
- <scons_output_command>scons -Q --debug=findlibs</scons_output_command>
- </scons_output>
-
- </section>
-
- <!--
-
- <section>
-
- <title>What Implicit Dependencies Did the &SCons; Scanner find? the &debug-includes; Option</title>
-
- <para>
-
- XXX explain the - - debug=includes option
-
- </para>
-
- <scons_example name="includes">
- <file name="SConstruct" printme="1">
- env = Environment(CPPPATH = ['inc1', 'inc2'])
- env.Program('prog.c')
- </file>
- <file name="prog.c">
- #include "file1.h"
- #include "file2.h"
- prog.c
- </file>
- <file name="inc1/file1.h">
- inc1/file1.h
- </file>
- <file name="inc2/file2.h">
- inc2/file2.h
- </file>
- </scons_example>
-
- <scons_output example="includes">
- <scons_output_command>scons -Q - - debug=includes prog</scons_output_command>
- </scons_output>
-
- </section>
-
- -->
-
- <section>
-
- <title>Where is &SCons; Blowing Up? the &debug-stacktrace; Option</title>
-
- <para>
-
- In general, &SCons; tries to keep its error
- messages short and informative.
- That means we usually try to avoid showing
- the stack traces that are familiar
- to experienced Python programmers,
- since they usually contain much more
- information than is useful to most people.
-
- </para>
-
- <para>
-
- For example, the following &SConstruct; file:
-
- </para>
-
- <scons_example name="stacktrace">
- <file name="SConstruct" printme="1">
- Program('prog.c')
- </file>
- </scons_example>
-
- <para>
-
- Generates the following error if the
- <filename>prog.c</filename> file
- does not exist:
-
- </para>
-
- <scons_output example="stacktrace">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- <para>
-
- In this case,
- the error is pretty obvious.
- But if it weren't,
- and you wanted to try to get more information
- about the error,
- the &debug-stacktrace; option
- would show you exactly where in the &SCons; source code
- the problem occurs:
-
- </para>
-
- <scons_output example="stacktrace">
- <scons_output_command>scons -Q --debug=stacktrace</scons_output_command>
- </scons_output>
-
- <para>
-
- Of course, if you do need to dive into the &SCons; source code,
- we'd like to know if, or how,
- the error messages or troubleshooting options
- could have been improved to avoid that.
- Not everyone has the necessary time or
- Python skill to dive into the source code,
- and we'd like to improve &SCons;
- for those people as well...
-
- </para>
-
- </section>
-
- <section>
-
- <title>How is &SCons; Making Its Decisions? the &taskmastertrace; Option</title>
-
- <para>
-
- The internal &SCons; subsystem that handles walking
- the dependency graph
- and controls the decision-making about what to rebuild
- is the <literal>Taskmaster</literal>.
- &SCons; supports a <literal>--taskmastertrace</literal>
- option that tells the Taskmaster to print
- information about the children (dependencies)
- of the various Nodes on its walk down the graph,
- which specific dependent Nodes are being evaluated,
- and in what order.
-
- </para>
-
- <para>
-
- The <literal>--taskmastertrace</literal> option
- takes as an argument the name of a file in
- which to put the trace output,
- with <filename>-</filename> (a single hyphen)
- indicating that the trace messages
- should be printed to the standard output:
-
- </para>
-
- <scons_example name="taskmastertrace">
- <file name="SConstruct" printme="1">
- env = Environment(CPPPATH = ['.'])
- env.Program('prog.c')
- </file>
- <file name="prog.c">
- #include "inc.h"
- prog.c
- </file>
- <file name="inc.h">
- #define STRING "one"
- </file>
- </scons_example>
-
- <scons_output example="taskmastertrace" os="posix">
- <scons_output_command>scons -Q --taskmastertrace=- prog</scons_output_command>
- </scons_output>
-
- <para>
-
- The <literal>--taskmastertrace</literal> option
- doesn't provide information about the actual
- calculations involved in deciding if a file is up-to-date,
- but it does show all of the dependencies
- it knows about for each Node,
- and the order in which those dependencies are evaluated.
- This can be useful as an alternate way to determine
- whether or not your &SCons; configuration,
- or the implicit dependency scan,
- has actually identified all the correct dependencies
- you want it to.
-
- </para>
-
- </section>
-
- <section>
-
- <title>Watch &SCons; prepare targets for building: the &debug-prepare; Option</title>
-
- <para>
-
- Sometimes SCons doesn't build the target you want
- and it's difficult to figure out why. You can use
- the <literal>--debug=prepare</literal> option
- to see all the targets &SCons; is considering, whether
- they are already up-to-date or not. The message is
- printed before &SCons; decides whether to build the target.
- </para>
-
- </section>
-
- <section>
-
- <title>Why is a file disappearing? the --debug=duplicate Option</title>
-
- <para>
-
- When using the &Duplicate; option to create variant dirs,
- sometimes you may find files not getting copied to where you
- expect (or not at all), or files mysteriously disappearing. These
- are usually because of a misconfiguration of some kind in the
- SConstruct/SConscript, but they can be tricky to debug. The
- --debug=duplicate option shows each time a variant file is
- unlinked and relinked from its source (or copied, depending on
- settings), and also shows a message for removing "stale"
- variant-dir files that no longer have a corresponding source file.
- It also prints a line for each target that's removed just before
- building, since that can also be mistaken for the same thing.
-
- </para>
-
- </section>
-
- <!--
-
-
- <section>
-
- <title>Where Are My Build Bottlenecks? the &profile; Option</title>
-
- <para>
-
- XXX explain the - - profile= option
-
- </para>
-
- </section>
-
- -->
-
- <!--
-
- <section>
- <title>Troubleshooting Shared Caching: the &cache-debug; Option</title>
-
- <para>
-
- XXX describe the - - cache-debug option
- XXX maybe point to the caching.in chapter?
-
- </para>
-
- </section>
-
- -->
diff --git a/doc/user/troubleshoot.xml b/doc/user/troubleshoot.xml
index 51de8f2..183f9c4 100644
--- a/doc/user/troubleshoot.xml
+++ b/doc/user/troubleshoot.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-troubleshooting"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Troubleshooting</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -69,11 +90,16 @@
</para>
- <programlisting>
- # Intentionally misspell the output file name in the
- # command used to create the file:
- Command('file.out', 'file.in', 'cp $SOURCE file.oout')
- </programlisting>
+ <scons_example name="troubleshoot_explain1">
+ <file name="SConstruct" printme="1">
+# Intentionally misspell the output file name in the
+# command used to create the file:
+Command('file.out', 'file.in', 'cp $SOURCE file.oout')
+ </file>
+ <file name="file.in">
+file.in
+ </file>
+ </scons_example>
<para>
@@ -93,14 +119,11 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- cp file.in file.oout
- % <userinput>scons -Q</userinput>
- cp file.in file.oout
- % <userinput>scons -Q</userinput>
- cp file.in file.oout
- </screen>
+ <scons_output example="troubleshoot_explain1" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -119,11 +142,9 @@
</para>
- <screen>
- % <userinput>scons -Q --debug=explain</userinput>
- scons: building `file.out' because it doesn't exist
- cp file.in file.oout
- </screen>
+ <scons_output example="troubleshoot_explain1" os="posix" suffix="2">
+ <scons_output_command>scons -Q --debug=explain</scons_output_command>
+ </scons_output>
<para>
@@ -139,6 +160,16 @@
</para>
<para>
+ Note that you can also use --warn=target-not-built which checks
+ whether or not expected targets exist after a build rule is
+ executed.
+ </para>
+
+ <scons_output example="troubleshoot_explain1" os="posix" suffix="3">
+ <scons_output_command>scons -Q --warn=target-not-built</scons_output_command>
+ </scons_output>
+
+ <para>
The &debug-explain; option also comes in handy
to help figure out what input file changed.
@@ -151,22 +182,26 @@
</para>
-
+ <scons_example name="troubleshoot_explain2">
+ <file name="SConstruct">
+Program('prog', ['file1.c', 'file2.c', 'file3.c'])
+ </file>
+ <file name="file1.c">
+file1.c
+ </file>
+ <file name="file2.c">
+file2.c
+ </file>
+ <file name="file3.c">
+file3.c
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o file1.o -c file1.c
- cc -o file2.o -c file2.c
- cc -o file3.o -c file3.c
- cc -o prog file1.o file2.o file3.o
- % <userinput>edit file2.c</userinput>
- [CHANGE THE CONTENTS OF file2.c]
- % <userinput>scons -Q --debug=explain</userinput>
- scons: rebuilding `file2.o' because `file2.c' changed
- cc -o file2.o -c file2.c
- scons: rebuilding `prog' because `file2.o' changed
- cc -o prog file1.o file2.o file3.o
- </screen>
+ <scons_output example="troubleshoot_explain2" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command output=" [CHANGE THE CONTENTS OF file2.c]">edit file2.c</scons_output_command>
+ <scons_output_command>scons -Q --debug=explain</scons_output_command>
+ </scons_output>
<para>
@@ -185,26 +220,31 @@
</para>
-
+ <scons_example name="troubleshoot_explain3">
+ <file name="SConstruct">
+Program('prog', ['file1.c', 'file2.c', 'file3.c'], CPPPATH='.')
+ </file>
+ <file name="file1.c">
+#include &lt;hello.h&gt;
+file1.c
+ </file>
+ <file name="file2.c">
+file2.c
+ </file>
+ <file name="file3.c">
+#include &lt;hello.h&gt;
+file3.c
+ </file>
+ <file name="hello.h">
+#define string "world"
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q</userinput>
- cc -o file1.o -c -I. file1.c
- cc -o file2.o -c -I. file2.c
- cc -o file3.o -c -I. file3.c
- cc -o prog file1.o file2.o file3.o
- % <userinput>edit hello.h</userinput>
- [CHANGE THE CONTENTS OF hello.h]
- % <userinput>scons -Q --debug=explain</userinput>
- scons: rebuilding `file1.o' because `hello.h' changed
- cc -o file1.o -c -I. file1.c
- scons: rebuilding `file3.o' because `hello.h' changed
- cc -o file3.o -c -I. file3.c
- scons: rebuilding `prog' because:
- `file1.o' changed
- `file3.o' changed
- cc -o prog file1.o file2.o file3.o
- </screen>
+ <scons_output example="troubleshoot_explain3" os="posix" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ <scons_output_command output=" [CHANGE THE CONTENTS OF hello.h]">edit hello.h</scons_output_command>
+ <scons_output_command>scons -Q --debug=explain</scons_output_command>
+ </scons_output>
<para>
@@ -246,10 +286,12 @@
</para>
- <programlisting>
- env = Environment()
- print env.Dump()
- </programlisting>
+ <scons_example name="troubleshoot_Dump">
+ <file name="SConstruct" printme="1">
+env = Environment()
+print env.Dump()
+ </file>
+ </scons_example>
<para>
@@ -258,79 +300,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- { 'BUILDERS': {'_InternalInstall': &lt;function InstallBuilderWrapper at 0x700000&gt;, '_InternalInstallAs': &lt;function InstallAsBuilderWrapper at 0x700000&gt;},
- 'CONFIGUREDIR': '#/.sconf_temp',
- 'CONFIGURELOG': '#/config.log',
- 'CPPSUFFIXES': [ '.c',
- '.C',
- '.cxx',
- '.cpp',
- '.c++',
- '.cc',
- '.h',
- '.H',
- '.hxx',
- '.hpp',
- '.hh',
- '.F',
- '.fpp',
- '.FPP',
- '.m',
- '.mm',
- '.S',
- '.spp',
- '.SPP',
- '.sx'],
- 'DSUFFIXES': ['.d'],
- 'Dir': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'Dirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'ENV': { 'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin'},
- 'ESCAPE': &lt;function escape at 0x700000&gt;,
- 'File': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'HOST_ARCH': None,
- 'HOST_OS': None,
- 'IDLSUFFIXES': ['.idl', '.IDL'],
- 'INSTALL': &lt;function copyFunc at 0x700000&gt;,
- 'LIBPREFIX': 'lib',
- 'LIBPREFIXES': ['$LIBPREFIX'],
- 'LIBSUFFIX': '.a',
- 'LIBSUFFIXES': ['$LIBSUFFIX', '$SHLIBSUFFIX'],
- 'MAXLINELENGTH': 128072,
- 'OBJPREFIX': '',
- 'OBJSUFFIX': '.o',
- 'PLATFORM': 'posix',
- 'PROGPREFIX': '',
- 'PROGSUFFIX': '',
- 'PSPAWN': &lt;function piped_env_spawn at 0x700000&gt;,
- 'RDirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'SCANNERS': [],
- 'SHELL': 'sh',
- 'SHLIBPREFIX': '$LIBPREFIX',
- 'SHLIBSUFFIX': '.so',
- 'SHOBJPREFIX': '$OBJPREFIX',
- 'SHOBJSUFFIX': '$OBJSUFFIX',
- 'SPAWN': &lt;function spawnvpe_spawn at 0x700000&gt;,
- 'TARGET_ARCH': None,
- 'TARGET_OS': None,
- 'TEMPFILE': &lt;class 'SCons.Platform.TempFileMunge'&gt;,
- 'TEMPFILEPREFIX': '@',
- 'TOOLS': ['install', 'install'],
- '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
- '_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
- '_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
- '_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
- '__RPATH': '$_RPATH',
- '_concat': &lt;function _concat at 0x700000&gt;,
- '_defines': &lt;function _defines at 0x700000&gt;,
- '_stripixes': &lt;function _stripixes at 0x700000&gt;}
- scons: done reading SConscript files.
- scons: Building targets ...
- scons: `.' is up to date.
- scons: done building targets.
- </screen>
+ <scons_output example="troubleshoot_Dump" os="posix" tools="gcc" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -339,112 +311,9 @@
</para>
- <screen>
- C:\><userinput>scons</userinput>
- scons: Reading SConscript files ...
- { 'BUILDERS': {'_InternalInstall': &lt;function InstallBuilderWrapper at 0x700000&gt;, 'Object': &lt;SCons.Builder.CompositeBuilder object at 0x700000&gt;, 'PCH': &lt;SCons.Builder.BuilderBase object at 0x700000&gt;, 'RES': &lt;SCons.Builder.BuilderBase object at 0x700000&gt;, 'SharedObject': &lt;SCons.Builder.CompositeBuilder object at 0x700000&gt;, 'StaticObject': &lt;SCons.Builder.CompositeBuilder object at 0x700000&gt;, '_InternalInstallAs': &lt;function InstallAsBuilderWrapper at 0x700000&gt;},
- 'CC': 'cl',
- 'CCCOM': &lt;SCons.Action.FunctionAction object at 0x700000&gt;,
- 'CCFLAGS': ['/nologo'],
- 'CCPCHFLAGS': ['${(PCH and "/Yu%s \\"/Fp%s\\""%(PCHSTOP or "",File(PCH))) or ""}'],
- 'CCPDBFLAGS': ['${(PDB and "/Z7") or ""}'],
- 'CFILESUFFIX': '.c',
- 'CFLAGS': [],
- 'CONFIGUREDIR': '#/.sconf_temp',
- 'CONFIGURELOG': '#/config.log',
- 'CPPDEFPREFIX': '/D',
- 'CPPDEFSUFFIX': '',
- 'CPPSUFFIXES': [ '.c',
- '.C',
- '.cxx',
- '.cpp',
- '.c++',
- '.cc',
- '.h',
- '.H',
- '.hxx',
- '.hpp',
- '.hh',
- '.F',
- '.fpp',
- '.FPP',
- '.m',
- '.mm',
- '.S',
- '.spp',
- '.SPP',
- '.sx'],
- 'CXX': '$CC',
- 'CXXCOM': '${TEMPFILE("$CXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $CXXFLAGS $CCFLAGS $_CCCOMCOM")}',
- 'CXXFILESUFFIX': '.cc',
- 'CXXFLAGS': ['$(', '/TP', '$)'],
- 'DSUFFIXES': ['.d'],
- 'Dir': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'Dirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'ENV': { 'PATH': 'C:\\WINDOWS\\System32',
- 'PATHEXT': '.COM;.EXE;.BAT;.CMD',
- 'SystemRoot': 'C:\\WINDOWS'},
- 'ESCAPE': &lt;function escape at 0x700000&gt;,
- 'File': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'HOST_ARCH': '',
- 'HOST_OS': 'win32',
- 'IDLSUFFIXES': ['.idl', '.IDL'],
- 'INCPREFIX': '/I',
- 'INCSUFFIX': '',
- 'INSTALL': &lt;function copyFunc at 0x700000&gt;,
- 'LIBPREFIX': '',
- 'LIBPREFIXES': ['$LIBPREFIX'],
- 'LIBSUFFIX': '.lib',
- 'LIBSUFFIXES': ['$LIBSUFFIX'],
- 'MAXLINELENGTH': 2048,
- 'MSVC_SETUP_RUN': True,
- 'OBJPREFIX': '',
- 'OBJSUFFIX': '.obj',
- 'PCHCOM': '$CXX /Fo${TARGETS[1]} $CXXFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS $PCHPDBFLAGS',
- 'PCHPDBFLAGS': ['${(PDB and "/Yd") or ""}'],
- 'PLATFORM': 'win32',
- 'PROGPREFIX': '',
- 'PROGSUFFIX': '.exe',
- 'PSPAWN': &lt;function piped_spawn at 0x700000&gt;,
- 'RC': 'rc',
- 'RCCOM': &lt;SCons.Action.FunctionAction object at 0x700000&gt;,
- 'RCFLAGS': [],
- 'RCSUFFIXES': ['.rc', '.rc2'],
- 'RDirs': &lt;SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;,
- 'SCANNERS': [],
- 'SHCC': '$CC',
- 'SHCCCOM': &lt;SCons.Action.FunctionAction object at 0x700000&gt;,
- 'SHCCFLAGS': ['$CCFLAGS'],
- 'SHCFLAGS': ['$CFLAGS'],
- 'SHCXX': '$CXX',
- 'SHCXXCOM': '${TEMPFILE("$SHCXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM")}',
- 'SHCXXFLAGS': ['$CXXFLAGS'],
- 'SHELL': None,
- 'SHLIBPREFIX': '',
- 'SHLIBSUFFIX': '.dll',
- 'SHOBJPREFIX': '$OBJPREFIX',
- 'SHOBJSUFFIX': '$OBJSUFFIX',
- 'SPAWN': &lt;function spawn at 0x700000&gt;,
- 'STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME': 1,
- 'TARGET_ARCH': '',
- 'TARGET_OS': 'win32',
- 'TEMPFILE': &lt;class 'SCons.Platform.TempFileMunge'&gt;,
- 'TEMPFILEPREFIX': '@',
- 'TOOLS': ['msvc', 'install', 'install'],
- '_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $CCPCHFLAGS $CCPDBFLAGS',
- '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
- '_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
- '_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
- '_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
- '_MSVC_OUTPUT_FLAG': &lt;function msvc_output_flag at 0x700000&gt;,
- '_concat': &lt;function _concat at 0x700000&gt;,
- '_defines': &lt;function _defines at 0x700000&gt;,
- '_stripixes': &lt;function _stripixes at 0x700000&gt;}
- scons: done reading SConscript files.
- scons: Building targets ...
- scons: `.' is up to date.
- scons: done building targets.
- </screen>
+ <scons_output example="troubleshoot_Dump" os="win32" tools="msvc" suffix="2">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -477,10 +346,12 @@
</para>
- <programlisting>
- env = Environment()
- print env.Dump('ENV')
- </programlisting>
+ <scons_example name="troubleshoot_Dump_ENV">
+ <file name="SConstruct" printme="1">
+env = Environment()
+print env.Dump('ENV')
+ </file>
+ </scons_example>
<para>
@@ -488,15 +359,9 @@
</para>
- <screen>
- % <userinput>scons</userinput>
- scons: Reading SConscript files ...
- { 'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin'}
- scons: done reading SConscript files.
- scons: Building targets ...
- scons: `.' is up to date.
- scons: done building targets.
- </screen>
+ <scons_output example="troubleshoot_Dump_ENV" os="posix" suffix="1">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
<para>
@@ -504,17 +369,9 @@
</para>
- <screen>
- C:\><userinput>scons</userinput>
- scons: Reading SConscript files ...
- { 'PATH': 'C:\\WINDOWS\\System32',
- 'PATHEXT': '.COM;.EXE;.BAT;.CMD',
- 'SystemRoot': 'C:\\WINDOWS'}
- scons: done reading SConscript files.
- scons: Building targets ...
- scons: `.' is up to date.
- scons: done building targets.
- </screen>
+ <scons_output example="troubleshoot_Dump_ENV" os="win32" suffix="2">
+ <scons_output_command>scons</scons_output_command>
+ </scons_output>
</section>
@@ -542,10 +399,24 @@
</para>
- <programlisting>
- env = Environment(CPPPATH = ['.'])
- env.Program('prog', ['f1.c', 'f2.c', 'f3.c'])
- </programlisting>
+ <scons_example name="troubleshoot_tree1">
+ <file name="SConstruct" printme="1">
+env = Environment(CPPPATH = ['.'])
+env.Program('prog', ['f1.c', 'f2.c', 'f3.c'])
+ </file>
+ <file name="f1.c">
+#include "inc.h"
+ </file>
+ <file name="f2.c">
+#include "inc.h"
+ </file>
+ <file name="f3.c">
+#include "inc.h"
+ </file>
+ <file name="inc.h">
+inc.h
+ </file>
+ </scons_example>
<para>
@@ -554,38 +425,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=all</userinput>
- cc -o f1.o -c -I. f1.c
- cc -o f2.o -c -I. f2.c
- cc -o f3.o -c -I. f3.c
- cc -o prog f1.o f2.o f3.o
- +-.
- +-SConstruct
- +-f1.c
- +-f1.o
- | +-f1.c
- | +-inc.h
- +-f2.c
- +-f2.o
- | +-f2.c
- | +-inc.h
- +-f3.c
- +-f3.o
- | +-f3.c
- | +-inc.h
- +-inc.h
- +-prog
- +-f1.o
- | +-f1.c
- | +-inc.h
- +-f2.o
- | +-f2.c
- | +-inc.h
- +-f3.o
- +-f3.c
- +-inc.h
- </screen>
+ <scons_output example="troubleshoot_tree1" suffix="1">
+ <scons_output_command>scons -Q --tree=all</scons_output_command>
+ </scons_output>
<para>
@@ -609,13 +451,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=all f2.o</userinput>
- cc -o f2.o -c -I. f2.c
- +-f2.o
- +-f2.c
- +-inc.h
- </screen>
+ <scons_output example="troubleshoot_tree1" suffix="2">
+ <scons_output_command>scons -Q --tree=all f2.o</scons_output_command>
+ </scons_output>
<para>
@@ -629,17 +467,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=all f1.o f3.o</userinput>
- cc -o f1.o -c -I. f1.c
- +-f1.o
- +-f1.c
- +-inc.h
- cc -o f3.o -c -I. f3.c
- +-f3.o
- +-f3.c
- +-inc.h
- </screen>
+ <scons_output example="troubleshoot_tree1" suffix="3">
+ <scons_output_command>scons -Q --tree=all f1.o f3.o</scons_output_command>
+ </scons_output>
<para>
@@ -649,49 +479,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=status</userinput>
- cc -o f1.o -c -I. f1.c
- cc -o f2.o -c -I. f2.c
- cc -o f3.o -c -I. f3.c
- cc -o prog f1.o f2.o f3.o
- E = exists
- R = exists in repository only
- b = implicit builder
- B = explicit builder
- S = side effect
- P = precious
- A = always build
- C = current
- N = no clean
- H = no cache
-
- [E b ]+-.
- [E C ] +-SConstruct
- [E C ] +-f1.c
- [E B C ] +-f1.o
- [E C ] | +-f1.c
- [E C ] | +-inc.h
- [E C ] +-f2.c
- [E B C ] +-f2.o
- [E C ] | +-f2.c
- [E C ] | +-inc.h
- [E C ] +-f3.c
- [E B C ] +-f3.o
- [E C ] | +-f3.c
- [E C ] | +-inc.h
- [E C ] +-inc.h
- [E B C ] +-prog
- [E B C ] +-f1.o
- [E C ] | +-f1.c
- [E C ] | +-inc.h
- [E B C ] +-f2.o
- [E C ] | +-f2.c
- [E C ] | +-inc.h
- [E B C ] +-f3.o
- [E C ] +-f3.c
- [E C ] +-inc.h
- </screen>
+ <scons_output example="troubleshoot_tree1" suffix="4">
+ <scons_output_command>scons -Q --tree=status</scons_output_command>
+ </scons_output>
<para>
@@ -707,21 +497,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=derived</userinput>
- cc -o f1.o -c -I. f1.c
- cc -o f2.o -c -I. f2.c
- cc -o f3.o -c -I. f3.c
- cc -o prog f1.o f2.o f3.o
- +-.
- +-f1.o
- +-f2.o
- +-f3.o
- +-prog
- +-f1.o
- +-f2.o
- +-f3.o
- </screen>
+ <scons_output example="troubleshoot_tree1" suffix="5">
+ <scons_output_command>scons -Q --tree=derived</scons_output_command>
+ </scons_output>
<para>
@@ -730,32 +508,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=derived,status</userinput>
- cc -o f1.o -c -I. f1.c
- cc -o f2.o -c -I. f2.c
- cc -o f3.o -c -I. f3.c
- cc -o prog f1.o f2.o f3.o
- E = exists
- R = exists in repository only
- b = implicit builder
- B = explicit builder
- S = side effect
- P = precious
- A = always build
- C = current
- N = no clean
- H = no cache
-
- [E b ]+-.
- [E B C ] +-f1.o
- [E B C ] +-f2.o
- [E B C ] +-f3.o
- [E B C ] +-prog
- [E B C ] +-f1.o
- [E B C ] +-f2.o
- [E B C ] +-f3.o
- </screen>
+ <scons_output example="troubleshoot_tree1" suffix="6">
+ <scons_output_command>scons -Q --tree=derived,status</scons_output_command>
+ </scons_output>
<para>
@@ -776,14 +531,34 @@
</para>
- <programlisting>
- env = Environment(CPPPATH = ['.'],
- LIBS = ['foo'],
- LIBPATH = ['.'])
- env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
- env.Program('prog1.c')
- env.Program('prog2.c')
- </programlisting>
+ <scons_example name="troubleshoot_tree2">
+ <file name="SConstruct" printme="1">
+env = Environment(CPPPATH = ['.'],
+ LIBS = ['foo'],
+ LIBPATH = ['.'])
+env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
+env.Program('prog1.c')
+env.Program('prog2.c')
+ </file>
+ <file name="prog1.c">
+#include "inc.h"
+ </file>
+ <file name="prog2.c">
+#include "inc.h"
+ </file>
+ <file name="f1.c">
+#include "inc.h"
+ </file>
+ <file name="f2.c">
+#include "inc.h"
+ </file>
+ <file name="f3.c">
+#include "inc.h"
+ </file>
+ <file name="inc.h">
+inc.h
+ </file>
+ </scons_example>
<para>
@@ -792,79 +567,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=all</userinput>
- cc -o f1.o -c -I. f1.c
- cc -o f2.o -c -I. f2.c
- cc -o f3.o -c -I. f3.c
- ar rc libfoo.a f1.o f2.o f3.o
- ranlib libfoo.a
- cc -o prog1.o -c -I. prog1.c
- cc -o prog1 prog1.o -L. -lfoo
- cc -o prog2.o -c -I. prog2.c
- cc -o prog2 prog2.o -L. -lfoo
- +-.
- +-SConstruct
- +-f1.c
- +-f1.o
- | +-f1.c
- | +-inc.h
- +-f2.c
- +-f2.o
- | +-f2.c
- | +-inc.h
- +-f3.c
- +-f3.o
- | +-f3.c
- | +-inc.h
- +-inc.h
- +-libfoo.a
- | +-f1.o
- | | +-f1.c
- | | +-inc.h
- | +-f2.o
- | | +-f2.c
- | | +-inc.h
- | +-f3.o
- | +-f3.c
- | +-inc.h
- +-prog1
- | +-prog1.o
- | | +-prog1.c
- | | +-inc.h
- | +-libfoo.a
- | +-f1.o
- | | +-f1.c
- | | +-inc.h
- | +-f2.o
- | | +-f2.c
- | | +-inc.h
- | +-f3.o
- | +-f3.c
- | +-inc.h
- +-prog1.c
- +-prog1.o
- | +-prog1.c
- | +-inc.h
- +-prog2
- | +-prog2.o
- | | +-prog2.c
- | | +-inc.h
- | +-libfoo.a
- | +-f1.o
- | | +-f1.c
- | | +-inc.h
- | +-f2.o
- | | +-f2.c
- | | +-inc.h
- | +-f3.o
- | +-f3.c
- | +-inc.h
- +-prog2.c
- +-prog2.o
- +-prog2.c
- +-inc.h
- </screen>
+ <scons_output example="troubleshoot_tree2" suffix="1">
+ <scons_output_command>scons -Q --tree=all</scons_output_command>
+ </scons_output>
<para>
@@ -884,51 +589,9 @@
</para>
- <screen>
- % <userinput>scons -Q --tree=prune</userinput>
- cc -o f1.o -c -I. f1.c
- cc -o f2.o -c -I. f2.c
- cc -o f3.o -c -I. f3.c
- ar rc libfoo.a f1.o f2.o f3.o
- ranlib libfoo.a
- cc -o prog1.o -c -I. prog1.c
- cc -o prog1 prog1.o -L. -lfoo
- cc -o prog2.o -c -I. prog2.c
- cc -o prog2 prog2.o -L. -lfoo
- +-.
- +-SConstruct
- +-f1.c
- +-f1.o
- | +-f1.c
- | +-inc.h
- +-f2.c
- +-f2.o
- | +-f2.c
- | +-inc.h
- +-f3.c
- +-f3.o
- | +-f3.c
- | +-inc.h
- +-inc.h
- +-libfoo.a
- | +-[f1.o]
- | +-[f2.o]
- | +-[f3.o]
- +-prog1
- | +-prog1.o
- | | +-prog1.c
- | | +-inc.h
- | +-[libfoo.a]
- +-prog1.c
- +-[prog1.o]
- +-prog2
- | +-prog2.o
- | | +-prog2.c
- | | +-inc.h
- | +-[libfoo.a]
- +-prog2.c
- +-[prog2.o]
- </screen>
+ <scons_output example="troubleshoot_tree2" suffix="2">
+ <scons_output_command>scons -Q --tree=prune</scons_output_command>
+ </scons_output>
<para>
@@ -954,7 +617,15 @@
</para>
-
+ <scons_example name="troubleshoot_presub">
+ <file name="SConstruct">
+env = Environment(CPPPATH = ['.'])
+env.Program('prog', 'prog.c')
+ </file>
+ <file name="prog.c">
+prog.c
+ </file>
+ </scons_example>
<!--
@@ -962,20 +633,20 @@
shows the Python functions from the sconsdoc.py execution wrapper
used to generate this manual, not the underlying command-line strings.
- <scons_output example="presub">
+ <scons_output example="troubleshoot_presub" suffix="1">
<scons_output_command>scons -Q - -debug=presub</scons_output_command>
</scons_output>
-->
<screen>
- % <userinput>scons -Q --debug=presub</userinput>
- Building prog.o with action:
- $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCOMCOM $SOURCES
- cc -o prog.o -c -I. prog.c
- Building prog with action:
- $SMART_LINKCOM
- cc -o prog prog.o
+% <userinput>scons -Q --debug=presub</userinput>
+Building prog.o with action:
+ $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCOMCOM $SOURCES
+cc -o prog.o -c -I. prog.c
+Building prog with action:
+ $SMART_LINKCOM
+cc -o prog prog.o
</screen>
</section>
@@ -994,10 +665,21 @@
</para>
- <programlisting>
- env = Environment(LIBPATH = ['libs1', 'libs2'])
- env.Program('prog.c', LIBS=['foo', 'bar'])
- </programlisting>
+ <scons_example name="troubleshoot_findlibs">
+ <file name="SConstruct" printme="1">
+env = Environment(LIBPATH = ['libs1', 'libs2'])
+env.Program('prog.c', LIBS=['foo', 'bar'])
+ </file>
+ <file name="prog.c">
+prog.c
+ </file>
+ <file name="libs1/libfoo.a">
+libs1/libfoo.a
+ </file>
+ <file name="libs2/libbar.a">
+libs2/libbar.a
+ </file>
+ </scons_example>
<para>
@@ -1009,20 +691,9 @@
</para>
- <screen>
- % <userinput>scons -Q --debug=findlibs</userinput>
- findlibs: looking for 'libfoo.a' in 'libs1' ...
- findlibs: ... FOUND 'libfoo.a' in 'libs1'
- findlibs: looking for 'libfoo.so' in 'libs1' ...
- findlibs: looking for 'libfoo.so' in 'libs2' ...
- findlibs: looking for 'libbar.a' in 'libs1' ...
- findlibs: looking for 'libbar.a' in 'libs2' ...
- findlibs: ... FOUND 'libbar.a' in 'libs2'
- findlibs: looking for 'libbar.so' in 'libs1' ...
- findlibs: looking for 'libbar.so' in 'libs2' ...
- cc -o prog.o -c prog.c
- cc -o prog prog.o -Llibs1 -Llibs2 -lfoo -lbar
- </screen>
+ <scons_output example="troubleshoot_findlibs" suffix="1">
+ <scons_output_command>scons -Q --debug=findlibs</scons_output_command>
+ </scons_output>
</section>
@@ -1038,25 +709,25 @@
</para>
- <scons_example name="includes">
+ <scons_example name="troubleshoot_includes">
<file name="SConstruct" printme="1">
- env = Environment(CPPPATH = ['inc1', 'inc2'])
- env.Program('prog.c')
+env = Environment(CPPPATH = ['inc1', 'inc2'])
+env.Program('prog.c')
</file>
<file name="prog.c">
- #include "file1.h"
- #include "file2.h"
- prog.c
+#include "file1.h"
+#include "file2.h"
+prog.c
</file>
<file name="inc1/file1.h">
- inc1/file1.h
+inc1/file1.h
</file>
<file name="inc2/file2.h">
- inc2/file2.h
+inc2/file2.h
</file>
</scons_example>
- <scons_output example="includes">
+ <scons_output example="troubleshoot_includes" suffix="1">
<scons_output_command>scons -Q - - debug=includes prog</scons_output_command>
</scons_output>
@@ -1086,9 +757,11 @@
</para>
- <programlisting>
- Program('prog.c')
- </programlisting>
+ <scons_example name="troubleshoot_stacktrace">
+ <file name="SConstruct" printme="1">
+Program('prog.c')
+ </file>
+ </scons_example>
<para>
@@ -1098,10 +771,9 @@
</para>
- <screen>
- % <userinput>scons -Q</userinput>
- scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'.
- </screen>
+ <scons_output example="troubleshoot_stacktrace" suffix="1">
+ <scons_output_command>scons -Q</scons_output_command>
+ </scons_output>
<para>
@@ -1116,19 +788,9 @@
</para>
- <screen>
- % <userinput>scons -Q --debug=stacktrace</userinput>
- scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'.
- scons: internal stack trace:
- File "bootstrap/src/engine/SCons/Job.py", line 199, in start
- task.prepare()
- File "bootstrap/src/engine/SCons/Script/Main.py", line 168, in prepare
- return SCons.Taskmaster.OutOfDateTask.prepare(self)
- File "bootstrap/src/engine/SCons/Taskmaster.py", line 189, in prepare
- executor.prepare()
- File "bootstrap/src/engine/SCons/Executor.py", line 392, in prepare
- raise SCons.Errors.StopError(msg % (s, self.batches[0].targets[0]))
- </screen>
+ <scons_output example="troubleshoot_stacktrace" suffix="2">
+ <scons_output_command>scons -Q --debug=stacktrace</scons_output_command>
+ </scons_output>
<para>
@@ -1175,74 +837,23 @@
</para>
- <programlisting>
- env = Environment(CPPPATH = ['.'])
- env.Program('prog.c')
- </programlisting>
+ <scons_example name="troubleshoot_taskmastertrace">
+ <file name="SConstruct" printme="1">
+env = Environment(CPPPATH = ['.'])
+env.Program('prog.c')
+ </file>
+ <file name="prog.c">
+#include "inc.h"
+prog.c
+ </file>
+ <file name="inc.h">
+#define STRING "one"
+ </file>
+ </scons_example>
- <screen>
- % <userinput>scons -Q --taskmastertrace=- prog</userinput>
-
- Taskmaster: Looking for a node to evaluate
- Taskmaster: Considering node &lt;no_state 0 'prog'&gt; and its children:
- Taskmaster: &lt;no_state 0 'prog.o'&gt;
- Taskmaster: adjusted ref count: &lt;pending 1 'prog'&gt;, child 'prog.o'
- Taskmaster: Considering node &lt;no_state 0 'prog.o'&gt; and its children:
- Taskmaster: &lt;no_state 0 'prog.c'&gt;
- Taskmaster: &lt;no_state 0 'inc.h'&gt;
- Taskmaster: adjusted ref count: &lt;pending 1 'prog.o'&gt;, child 'prog.c'
- Taskmaster: adjusted ref count: &lt;pending 2 'prog.o'&gt;, child 'inc.h'
- Taskmaster: Considering node &lt;no_state 0 'prog.c'&gt; and its children:
- Taskmaster: Evaluating &lt;pending 0 'prog.c'&gt;
-
- Task.make_ready_current(): node &lt;pending 0 'prog.c'&gt;
- Task.prepare(): node &lt;up_to_date 0 'prog.c'&gt;
- Task.executed_with_callbacks(): node &lt;up_to_date 0 'prog.c'&gt;
- Task.postprocess(): node &lt;up_to_date 0 'prog.c'&gt;
- Task.postprocess(): removing &lt;up_to_date 0 'prog.c'&gt;
- Task.postprocess(): adjusted parent ref count &lt;pending 1 'prog.o'&gt;
-
- Taskmaster: Looking for a node to evaluate
- Taskmaster: Considering node &lt;no_state 0 'inc.h'&gt; and its children:
- Taskmaster: Evaluating &lt;pending 0 'inc.h'&gt;
-
- Task.make_ready_current(): node &lt;pending 0 'inc.h'&gt;
- Task.prepare(): node &lt;up_to_date 0 'inc.h'&gt;
- Task.executed_with_callbacks(): node &lt;up_to_date 0 'inc.h'&gt;
- Task.postprocess(): node &lt;up_to_date 0 'inc.h'&gt;
- Task.postprocess(): removing &lt;up_to_date 0 'inc.h'&gt;
- Task.postprocess(): adjusted parent ref count &lt;pending 0 'prog.o'&gt;
-
- Taskmaster: Looking for a node to evaluate
- Taskmaster: Considering node &lt;pending 0 'prog.o'&gt; and its children:
- Taskmaster: &lt;up_to_date 0 'prog.c'&gt;
- Taskmaster: &lt;up_to_date 0 'inc.h'&gt;
- Taskmaster: Evaluating &lt;pending 0 'prog.o'&gt;
-
- Task.make_ready_current(): node &lt;pending 0 'prog.o'&gt;
- Task.prepare(): node &lt;executing 0 'prog.o'&gt;
- Task.execute(): node &lt;executing 0 'prog.o'&gt;
- cc -o prog.o -c -I. prog.c
- Task.executed_with_callbacks(): node &lt;executing 0 'prog.o'&gt;
- Task.postprocess(): node &lt;executed 0 'prog.o'&gt;
- Task.postprocess(): removing &lt;executed 0 'prog.o'&gt;
- Task.postprocess(): adjusted parent ref count &lt;pending 0 'prog'&gt;
-
- Taskmaster: Looking for a node to evaluate
- Taskmaster: Considering node &lt;pending 0 'prog'&gt; and its children:
- Taskmaster: &lt;executed 0 'prog.o'&gt;
- Taskmaster: Evaluating &lt;pending 0 'prog'&gt;
-
- Task.make_ready_current(): node &lt;pending 0 'prog'&gt;
- Task.prepare(): node &lt;executing 0 'prog'&gt;
- Task.execute(): node &lt;executing 0 'prog'&gt;
- cc -o prog prog.o
- Task.executed_with_callbacks(): node &lt;executing 0 'prog'&gt;
- Task.postprocess(): node &lt;executed 0 'prog'&gt;
-
- Taskmaster: Looking for a node to evaluate
- Taskmaster: No candidate anymore.
- </screen>
+ <scons_output example="troubleshoot_taskmastertrace" os="posix" suffix="1">
+ <scons_output_command>scons -Q --taskmastertrace=- prog</scons_output_command>
+ </scons_output>
<para>
@@ -1332,3 +943,5 @@
</section>
-->
+
+</chapter>
diff --git a/doc/user/variables.in b/doc/user/variables.in
deleted file mode 100644
index 1b959ff..0000000
--- a/doc/user/variables.in
+++ /dev/null
@@ -1,56 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<para>
-
-This appendix contains descriptions of all of the
-construction variables that are <emphasis>potentially</emphasis>
-available "out of the box" in this version of SCons.
-Whether or not setting a construction variable
-in a construction environment
-will actually have an effect depends on
-whether any of the Tools and/or Builders
-that use the variable have been
-included in the construction environment.
-
-</para>
-
-<para>
-
-In this appendix, we have
-appended the initial <envar>$</envar>
-(dollar sign) to the beginning of each
-variable name when it appears in the text,
-but left off the dollar sign
-in the left-hand column
-where the name appears for each entry.
-
-</para>
-
-<variablelist>
-
-&variables-gen;
-
-</variablelist>
diff --git a/doc/user/variables.xml b/doc/user/variables.xml
index 1b959ff..644893b 100644
--- a/doc/user/variables.xml
+++ b/doc/user/variables.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<appendix id="app-variables"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Construction Variables</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -49,8 +70,6 @@ where the name appears for each entry.
</para>
-<variablelist>
-
-&variables-gen;
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../generated/variables.gen"/>
-</variablelist>
+</appendix>
diff --git a/doc/user/variants.in b/doc/user/variants.in
deleted file mode 100644
index dc3315d..0000000
--- a/doc/user/variants.in
+++ /dev/null
@@ -1,151 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 Variant builds
-
-=head2 Variations on a theme
-
-Other variations of this model are possible. For example, you might decide
-that you want to separate out your include files into platform dependent and
-platform independent files. In this case, you'd have to define an
-alternative to C<$INCLUDE> for platform-dependent files. Most F<Conscript>
-files, generating purely platform-independent include files, would not have
-to change.
-
-You might also want to be able to compile your whole system with debugging
-or profiling, for example, enabled. You could do this with appropriate
-command line options, such as C<DEBUG=on>. This would then be translated
-into the appropriate platform-specific requirements to enable debugging
-(this might include turning off optimization, for example). You could
-optionally vary the name space for these different types of systems, but, as
-we'll see in the next section, it's not B<essential> to do this, since Cons
-is pretty smart about rebuilding things when you change options.
-
--->
-
- <para>
-
- The &variant_dir; keyword argument of
- the &SConscript; function provides everything
- we need to show how easy it is to create
- variant builds using &SCons;.
- Suppose, for example, that we want to
- build a program for both Windows and Linux platforms,
- but that we want to build it in a shared directory
- with separate side-by-side build directories
- for the Windows and Linux versions of the program.
-
- </para>
-
- <scons_example name="ex_variants">
- <file name="SConstruct" printme="1">
- platform = ARGUMENTS.get('OS', Platform())
-
- include = "#export/$PLATFORM/include"
- lib = "#export/$PLATFORM/lib"
- bin = "#export/$PLATFORM/bin"
-
- env = Environment(PLATFORM = platform,
- BINDIR = bin,
- INCDIR = include,
- LIBDIR = lib,
- CPPPATH = [include],
- LIBPATH = [lib],
- LIBS = 'world')
-
- Export('env')
-
- env.SConscript('src/SConscript', variant_dir='build/$PLATFORM')
- </file>
- <directory name="src"></directory>
- <directory name="src/hello"></directory>
- <directory name="src/world"></directory>
- <file name="src/SConscript">
- Import('env')
- SConscript('hello/SConscript')
- SConscript('world/SConscript')
- </file>
- <file name="src/hello/SConscript">
- Import('env')
- hello = env.Program('hello.c')
- env.Install('$BINDIR', hello)
- </file>
- <file name="src/hello/hello.c">
- #include "world.h"
- int main(int argc, char *argv[]) { printf "hello.c\n"; world(); }
- </file>
- <file name="src/world/SConscript">
- Import('env')
- world = env.Library('world.c')
- env.Install('$LIBDIR', world)
- env.Install('$INCDIR', 'world.h')
- </file>
- <file name="src/world/world.h">
- #define STRING "world.h"
- extern int world();
- </file>
- <file name="src/world/world.c">
- int world() { printf "world.c\n"; }
- </file>
- </scons_example>
-
- <para>
-
- This SConstruct file,
- when run on a Linux system, yields:
-
- </para>
-
- <scons_output example="ex_variants" os="posix">
- <scons_output_command>scons -Q OS=linux</scons_output_command>
- </scons_output>
-
- <para>
-
- The same SConstruct file on Windows would build:
-
- </para>
-
- <scons_output example="ex_variants" os="win32">
- <scons_output_command>scons -Q OS=windows</scons_output_command>
- </scons_output>
-
- <!--
-
- <scons_example name="ex_var2">
- <file name="SConstruct" printme="1">
- env = Environment(OS = ARGUMENTS.get('OS'))
- for os in ['newell', 'post']:
- SConscript('src/SConscript', variant_dir='build/' + os)
- </file>
- </scons_example>
-
- <scons_output example="ex_var2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->
diff --git a/doc/user/variants.xml b/doc/user/variants.xml
index b0d1096..7915dfd 100644
--- a/doc/user/variants.xml
+++ b/doc/user/variants.xml
@@ -1,6 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+ <!ENTITY % builders-mod SYSTEM "../generated/builders.mod">
+ %builders-mod;
+ <!ENTITY % functions-mod SYSTEM "../generated/functions.mod">
+ %functions-mod;
+ <!ENTITY % tools-mod SYSTEM "../generated/tools.mod">
+ %tools-mod;
+ <!ENTITY % variables-mod SYSTEM "../generated/variables.mod">
+ %variables-mod;
+]>
+
+<chapter id="chap-variants"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<title>Variant Builds</title>
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -61,25 +82,57 @@ is pretty smart about rebuilding things when you change options.
</para>
- <programlisting>
- platform = ARGUMENTS.get('OS', Platform())
+ <scons_example name="variants_ex">
+ <file name="SConstruct" printme="1">
+platform = ARGUMENTS.get('OS', Platform())
- include = "#export/$PLATFORM/include"
- lib = "#export/$PLATFORM/lib"
- bin = "#export/$PLATFORM/bin"
+include = "#export/$PLATFORM/include"
+lib = "#export/$PLATFORM/lib"
+bin = "#export/$PLATFORM/bin"
- env = Environment(PLATFORM = platform,
- BINDIR = bin,
- INCDIR = include,
- LIBDIR = lib,
- CPPPATH = [include],
- LIBPATH = [lib],
- LIBS = 'world')
+env = Environment(PLATFORM = platform,
+ BINDIR = bin,
+ INCDIR = include,
+ LIBDIR = lib,
+ CPPPATH = [include],
+ LIBPATH = [lib],
+ LIBS = 'world')
- Export('env')
+Export('env')
- env.SConscript('src/SConscript', variant_dir='build/$PLATFORM')
- </programlisting>
+env.SConscript('src/SConscript', variant_dir='build/$PLATFORM')
+ </file>
+ <directory name="src"></directory>
+ <directory name="src/hello"></directory>
+ <directory name="src/world"></directory>
+ <file name="src/SConscript">
+Import('env')
+SConscript('hello/SConscript')
+SConscript('world/SConscript')
+ </file>
+ <file name="src/hello/SConscript">
+Import('env')
+hello = env.Program('hello.c')
+env.Install('$BINDIR', hello)
+ </file>
+ <file name="src/hello/hello.c">
+#include "world.h"
+int main(int argc, char *argv[]) { printf "hello.c\n"; world(); }
+ </file>
+ <file name="src/world/SConscript">
+Import('env')
+world = env.Library('world.c')
+env.Install('$LIBDIR', world)
+env.Install('$INCDIR', 'world.h')
+ </file>
+ <file name="src/world/world.h">
+#define STRING "world.h"
+extern int world();
+ </file>
+ <file name="src/world/world.c">
+int world() { printf "world.c\n"; }
+ </file>
+ </scons_example>
<para>
@@ -88,17 +141,9 @@ is pretty smart about rebuilding things when you change options.
</para>
- <screen>
- % <userinput>scons -Q OS=linux</userinput>
- Install file: "build/linux/world/world.h" as "export/linux/include/world.h"
- cc -o build/linux/hello/hello.o -c -Iexport/linux/include build/linux/hello/hello.c
- cc -o build/linux/world/world.o -c -Iexport/linux/include build/linux/world/world.c
- ar rc build/linux/world/libworld.a build/linux/world/world.o
- ranlib build/linux/world/libworld.a
- Install file: "build/linux/world/libworld.a" as "export/linux/lib/libworld.a"
- cc -o build/linux/hello/hello build/linux/hello/hello.o -Lexport/linux/lib -lworld
- Install file: "build/linux/hello/hello" as "export/linux/bin/hello"
- </screen>
+ <scons_output example="variants_ex" os="posix" suffix="1">
+ <scons_output_command>scons -Q OS=linux</scons_output_command>
+ </scons_output>
<para>
@@ -106,30 +151,24 @@ is pretty smart about rebuilding things when you change options.
</para>
- <screen>
- C:\><userinput>scons -Q OS=windows</userinput>
- Install file: "build/windows/world/world.h" as "export/windows/include/world.h"
- cl /Fobuild\windows\hello\hello.obj /c build\windows\hello\hello.c /nologo /Iexport\windows\include
- cl /Fobuild\windows\world\world.obj /c build\windows\world\world.c /nologo /Iexport\windows\include
- lib /nologo /OUT:build\windows\world\world.lib build\windows\world\world.obj
- Install file: "build/windows/world/world.lib" as "export/windows/lib/world.lib"
- link /nologo /OUT:build\windows\hello\hello.exe /LIBPATH:export\windows\lib world.lib build\windows\hello\hello.obj
- embedManifestExeCheck(target, source, env)
- Install file: "build/windows/hello/hello.exe" as "export/windows/bin/hello.exe"
- </screen>
+ <scons_output example="variants_ex" os="win32" suffix="2">
+ <scons_output_command>scons -Q OS=windows</scons_output_command>
+ </scons_output>
<!--
- <scons_example name="ex_var2">
+ <scons_example name="variants_ex2">
<file name="SConstruct" printme="1">
- env = Environment(OS = ARGUMENTS.get('OS'))
- for os in ['newell', 'post']:
- SConscript('src/SConscript', variant_dir='build/' + os)
+env = Environment(OS = ARGUMENTS.get('OS'))
+for os in ['newell', 'post']:
+ SConscript('src/SConscript', variant_dir='build/' + os)
</file>
</scons_example>
- <scons_output example="ex_var2">
+ <scons_output example="variants_ex2" suffix="1">
<scons_output_command>scons -Q</scons_output_command>
</scons_output>
-->
+
+</chapter>
diff --git a/doc/version.xml b/doc/version.xml
new file mode 100644
index 0000000..f6eba1f
--- /dev/null
+++ b/doc/version.xml
@@ -0,0 +1,7 @@
+
+<!--
+THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
+-->
+<!ENTITY builddate "2013-03-23">
+<!ENTITY buildversion "2.3.0">
+<!ENTITY buildrevision "1">
diff --git a/doc/xsd/calstblx.xsd b/doc/xsd/calstblx.xsd
new file mode 100644
index 0000000..6f899a3
--- /dev/null
+++ b/doc/xsd/calstblx.xsd
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 .... -->
+<!-- File calstblx.xsd .................................................... -->
+
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook CALS Table Model V4.5 with:
+
+ Copyright 1992-2002 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ This DTD is based on the CALS Table Model
+ PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
+
+ $Id: calstblx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the CALS Table Model
+ converted to XML. It has been modified slightly for use in the
+ combined HTML/CALS models supported by DocBook V4.5.
+-->
+<!--
+ These definitions are not directly related to the table model, but are
+ used in the default CALS table model and are usually defined elsewhere
+ (and prior to the inclusion of this table module) in a CALS DTD.
+-->
+<!--
+ no if zero(s),
+ yes if any other digits value
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="yesorno">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:group name="titles">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- default for use in entry content -->
+ <!--
+ The parameter entities as defined below provide the CALS table model
+ as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+ These following declarations provide the CALS-compliant default definitions
+ for these entities. However, these entities can and should be redefined
+ (by giving the appropriate parameter entity declaration(s) prior to the
+ reference to this Table Model declaration set entity) to fit the needs
+ of the current application.
+ -->
+ <xs:group name="tbl.table-titles.mdl">
+ <xs:sequence>
+ <xs:group ref="titles"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="tbl.table-main.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="tbl.tgroup.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="tbl.tgroup.att">
+ <xs:attribute name="tgroupstyle"/>
+ </xs:attributeGroup>
+ <xs:complexType name="tbl.row.mdl">
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="entry"/>
+ <xs:element ref="entrytbl"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.entrytbl.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ===== Element and attribute declarations follow. ===== -->
+ <!-- doc:A formal table in a document. -->
+ <xs:element name="table" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.table.mdl">
+ <xs:attributeGroup ref="table.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="table.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the main content of a table, or part of a table. -->
+ <xs:element name="tgroup">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tgroup.mdl">
+ <xs:attributeGroup ref="tgroup.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tgroup.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:Specifications for a column in a table. -->
+ <xs:element name="colspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="colspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colspec.attlist">
+ <xs:attribute name="colnum"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="colwidth"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:Formatting information for a spanned column in a table. -->
+ <xs:element name="spanspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="spanspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="spanspec.attlist">
+ <xs:attribute name="namest" use="required"/>
+ <xs:attribute name="nameend" use="required"/>
+ <xs:attribute name="spanname" use="required"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:A table header consisting of one or more rows. -->
+ <xs:element name="thead">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="thead.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="thead.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A table footer consisting of one or more rows. -->
+ <xs:element name="tfoot">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="tfoot.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tfoot.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the rows of a table or informal table. -->
+ <xs:element name="tbody">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tbody.mdl">
+ <xs:attributeGroup ref="tbody.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tbody.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A row in a table. -->
+ <xs:element name="row">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.row.mdl">
+ <xs:attributeGroup ref="row.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="row.attlist">
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A subtable appearing in place of an Entry in a table. -->
+ <xs:element name="entrytbl">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.entrytbl.mdl">
+ <xs:attributeGroup ref="entrytbl.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entrytbl.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A cell in a table. -->
+ <xs:element name="entry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="tbl.entry.mdl"/>
+ <xs:attributeGroup ref="entry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entry.attlist">
+ <xs:attribute name="colname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="morerows"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attribute name="rotate" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 ... -->
+<!-- ............................................................................ -->
diff --git a/doc/xsd/dbhierx.xsd b/doc/xsd/dbhierx.xsd
new file mode 100644
index 0000000..af99df6
--- /dev/null
+++ b/doc/xsd/dbhierx.xsd
@@ -0,0 +1,2186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- .............................................................................. -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 ... -->
+<!-- File dbhierx.xsd ............................................................. -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook document hierarchy
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbhierx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the overall document
+ hierarchies of DocBook documents. It covers computer documentation
+ manuals and manual fragments, as well as reference entries (such as
+ man pages) and technical journals or anthologies containing
+ articles.
+
+ This module depends on the DocBook information pool module. All
+ elements and entities referenced but not defined here are assumed
+ to be defined in the information pool module.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbhier PUBLIC
+ "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN"
+ "dbhierx.mod">
+ %dbhier;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+<!-- ...................................................................... -->
+<!-- Entities for element classes ......................................... -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="appendix.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="appendixinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="appendix.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="article.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="articleinfo"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lot"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="nav.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="colophon"/>
+ <xs:element ref="ackno"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="article.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="book.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="bookinfo"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="dedication"/>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="chapter.class"/>
+ <xs:element ref="reference"/>
+ <xs:element ref="part"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:group ref="index.class"/>
+ <xs:element ref="colophon"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="book.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="chapter.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="chapterinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="chapter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="index.class">
+ <xs:choice>
+ <xs:element ref="index"/>
+ <xs:element ref="setindex"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="refentry.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="refentryinfo"/>
+ <xs:element minOccurs="0" ref="refmeta"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refnamediv"/>
+ <xs:element minOccurs="0" ref="refsynopsisdiv"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refsect1"/>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="section.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sectioninfo"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="section.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="nav.class">
+ <xs:choice>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="index"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element mixtures ........................................ -->
+ <xs:group name="divcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="indexdivcomponent.mix">
+ <xs:choice>
+ <xs:element ref="itemizedlist"/>
+ <xs:element ref="orderedlist"/>
+ <xs:element ref="variablelist"/>
+ <xs:element ref="simplelist"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refname.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="tech.char.class"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="partcontent.mix">
+ <xs:choice>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="chapter.class"/>
+ <xs:group ref="nav.class"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="refentry.class"/>
+ <xs:element ref="reference"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refinline.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refclass.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="application"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder 2 .......................................... -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="div.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="sect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refsect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.content">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect1"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="sect1"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <!-- ...................................................................... -->
+ <!-- Set and SetInfo ...................................................... -->
+ <xs:attributeGroup name="set.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of books. -->
+ <xs:element name="set">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="setinfo"/>
+ <xs:element minOccurs="0" ref="toc"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="set"/>
+ <xs:element ref="book.class"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="setindex"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="set.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of set.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="set.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="set.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of set.attlist -->
+ <!-- end of set.module -->
+ <xs:attributeGroup name="setinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Set. -->
+ <xs:element name="setinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setinfo.element -->
+ <!--
+ Contents: IDs of the ToC, Books, and SetIndex that comprise
+ the set, in the order of their appearance
+ -->
+ <xs:attributeGroup name="setinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setinfo.attlist -->
+ <!-- end of setinfo.module -->
+ <!-- end of set.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Book and BookInfo .................................................... -->
+ <xs:attributeGroup name="book.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A book. -->
+ <xs:element name="book" substitutionGroup="book.class"/>
+ <!-- end of book.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="book.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="book.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of book.attlist -->
+ <!-- end of book.module -->
+ <xs:attributeGroup name="bookinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Book. -->
+ <xs:element name="bookinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bookinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bookinfo.element -->
+ <!--
+ Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
+ Appendixes, References, GLossary, Bibliography, and indexes
+ comprising the Book, in the order of their appearance
+ -->
+ <xs:attributeGroup name="bookinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bookinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bookinfo.attlist -->
+ <!-- end of bookinfo.module -->
+ <!-- end of book.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Dedication, ToC, and LoT ............................................. -->
+ <xs:attributeGroup name="dedication.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the dedication section of a book. -->
+ <xs:element name="dedication">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="dedication.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of dedication.element -->
+ <xs:attributeGroup name="dedication.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="dedication.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of dedication.attlist -->
+ <!-- end of dedication.module -->
+ <xs:attributeGroup name="colophon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text at the back of a book describing facts about its production. -->
+ <xs:element name="colophon">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colophon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of colophon.element -->
+ <xs:attributeGroup name="colophon.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="colophon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of colophon.attlist -->
+ <!-- end of colophon.module -->
+ <xs:attributeGroup name="toc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A table of contents. -->
+ <xs:element name="toc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocfront"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tocpart"/>
+ <xs:element ref="tocchap"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocback"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toc.element -->
+ <xs:attributeGroup name="toc.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toc.attlist -->
+ <!-- end of toc.module -->
+ <xs:attributeGroup name="tocfront.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a front matter component. -->
+ <xs:element name="tocfront">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocfront.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocfront.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocfront.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocfront.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocfront.attlist -->
+ <!-- end of tocfront.module -->
+ <xs:attributeGroup name="tocentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component title in a table of contents. -->
+ <xs:element name="tocentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocentry.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocentry.attlist -->
+ <!-- end of tocentry.module -->
+ <xs:attributeGroup name="tocpart.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a part of a book. -->
+ <xs:element name="tocpart">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocchap"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocpart.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocpart.element -->
+ <xs:attributeGroup name="tocpart.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocpart.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocpart.attlist -->
+ <!-- end of tocpart.module -->
+ <xs:attributeGroup name="tocchap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a component in the body of a document. -->
+ <xs:element name="tocchap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel1"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocchap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocchap.element -->
+ <xs:attributeGroup name="tocchap.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocchap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocchap.attlist -->
+ <!-- end of tocchap.module -->
+ <xs:attributeGroup name="toclevel1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel2"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel1.element -->
+ <xs:attributeGroup name="toclevel1.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel1.attlist -->
+ <!-- end of toclevel1.module -->
+ <xs:attributeGroup name="toclevel2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A second-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel3"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel2.element -->
+ <xs:attributeGroup name="toclevel2.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel2.attlist -->
+ <!-- end of toclevel2.module -->
+ <xs:attributeGroup name="toclevel3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A third-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel4"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel3.element -->
+ <xs:attributeGroup name="toclevel3.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel3.attlist -->
+ <!-- end of toclevel3.module -->
+ <xs:attributeGroup name="toclevel4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fourth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel5"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel4.element -->
+ <xs:attributeGroup name="toclevel4.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel4.attlist -->
+ <!-- end of toclevel4.module -->
+ <xs:attributeGroup name="toclevel5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fifth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel5.element -->
+ <xs:attributeGroup name="toclevel5.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel5.attlist -->
+ <!-- end of toclevel5.module -->
+ <xs:attributeGroup name="tocback.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a back matter component. -->
+ <xs:element name="tocback">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocback.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocback.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocback.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocback.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocback.attlist -->
+ <!-- end of tocback.module -->
+ <!-- end of toc.content.module -->
+ <xs:attributeGroup name="lot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of the titles of formal objects (as tables or figures) in a document. -->
+ <xs:element name="lot">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lotentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="lot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lot.element -->
+ <xs:attributeGroup name="lot.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lot.attlist -->
+ <!-- end of lot.module -->
+ <xs:attributeGroup name="lotentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a list of titles. -->
+ <xs:element name="lotentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lotentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lotentry.element -->
+ <!--
+ SrcCredit: Information about the source of the entry,
+ as for a list of illustrations
+ -->
+ <!-- linkend: to element that this entry represents -->
+ <xs:attributeGroup name="lotentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lotentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lotentry.attlist -->
+ <!-- end of lotentry.module -->
+ <!-- end of lot.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+ <xs:attributeGroup name="appendix.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An appendix in a Book or Article. -->
+ <xs:element name="appendix" substitutionGroup="appendix.class"/>
+ <!-- end of appendix.element -->
+ <xs:attributeGroup name="appendix.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendix.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendix.attlist -->
+ <!-- end of appendix.module -->
+ <xs:attributeGroup name="chapter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A chapter, as of a book. -->
+ <xs:element name="chapter" substitutionGroup="chapter.class"/>
+ <!-- end of chapter.element -->
+ <xs:attributeGroup name="chapter.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapter.attlist -->
+ <!-- end of chapter.module -->
+ <!--
+ Note that Part was to have its content model reduced in V4.5. This
+ change will not be made after all.
+ -->
+ <xs:attributeGroup name="part.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a book. -->
+ <xs:element name="part">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="partinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:group maxOccurs="unbounded" ref="partcontent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="part.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of part.element -->
+ <xs:attributeGroup name="part.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="part.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of part.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of part.module -->
+ <xs:attributeGroup name="preface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Introductory matter preceding the first chapter of a book. -->
+ <xs:element name="preface">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="prefaceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="preface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of preface.element -->
+ <xs:attributeGroup name="preface.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="preface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of preface.attlist -->
+ <!-- end of preface.module -->
+ <xs:attributeGroup name="reference.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of reference entries. -->
+ <xs:element name="reference">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="referenceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="reference.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of reference.element -->
+ <xs:attributeGroup name="reference.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="reference.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of reference.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of reference.module -->
+ <xs:attributeGroup name="partintro.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An introduction to the contents of a part. -->
+ <xs:element name="partintro">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:group ref="bookcomponent.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="partintro.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partintro.element -->
+ <xs:attributeGroup name="partintro.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partintro.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partintro.attlist -->
+ <!-- end of partintro.module -->
+ <!-- ...................................................................... -->
+ <!-- Other Info elements .................................................. -->
+ <xs:attributeGroup name="appendixinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Appendix. -->
+ <xs:element name="appendixinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="appendixinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of appendixinfo.element -->
+ <xs:attributeGroup name="appendixinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendixinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendixinfo.attlist -->
+ <!-- end of appendixinfo.module -->
+ <xs:attributeGroup name="bibliographyinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Bibliography. -->
+ <xs:element name="bibliographyinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bibliographyinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliographyinfo.element -->
+ <xs:attributeGroup name="bibliographyinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliographyinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliographyinfo.attlist -->
+ <!-- end of bibliographyinfo.module -->
+ <xs:attributeGroup name="chapterinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Chapter. -->
+ <xs:element name="chapterinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="chapterinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of chapterinfo.element -->
+ <xs:attributeGroup name="chapterinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapterinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapterinfo.attlist -->
+ <!-- end of chapterinfo.module -->
+ <xs:attributeGroup name="glossaryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Glossary. -->
+ <xs:element name="glossaryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="glossaryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossaryinfo.element -->
+ <xs:attributeGroup name="glossaryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossaryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossaryinfo.attlist -->
+ <!-- end of glossaryinfo.module -->
+ <xs:attributeGroup name="indexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Index. -->
+ <xs:element name="indexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="indexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexinfo.element -->
+ <xs:attributeGroup name="indexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexinfo.attlist -->
+ <!-- end of indexinfo.module -->
+ <xs:attributeGroup name="setindexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a SetIndex. -->
+ <xs:element name="setindexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setindexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindexinfo.element -->
+ <xs:attributeGroup name="setindexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setindexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindexinfo.attlist -->
+ <!-- end of setindexinfo.module -->
+ <xs:attributeGroup name="partinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Part. -->
+ <xs:element name="partinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="partinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partinfo.element -->
+ <xs:attributeGroup name="partinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partinfo.attlist -->
+ <!-- end of partinfo.module -->
+ <xs:attributeGroup name="prefaceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Preface. -->
+ <xs:element name="prefaceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="prefaceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prefaceinfo.element -->
+ <xs:attributeGroup name="prefaceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prefaceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prefaceinfo.attlist -->
+ <!-- end of prefaceinfo.module -->
+ <xs:attributeGroup name="refentryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Refentry. -->
+ <xs:element name="refentryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refentryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentryinfo.element -->
+ <xs:attributeGroup name="refentryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentryinfo.attlist -->
+ <!-- end of refentryinfo.module -->
+ <xs:attributeGroup name="refsectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a refsection. -->
+ <xs:element name="refsectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsectioninfo.element -->
+ <xs:attributeGroup name="refsectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsectioninfo.attlist -->
+ <!-- end of refsectioninfo.module -->
+ <xs:attributeGroup name="refsect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect1. -->
+ <xs:element name="refsect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1info.element -->
+ <xs:attributeGroup name="refsect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1info.attlist -->
+ <!-- end of refsect1info.module -->
+ <xs:attributeGroup name="refsect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect2. -->
+ <xs:element name="refsect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2info.element -->
+ <xs:attributeGroup name="refsect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2info.attlist -->
+ <!-- end of refsect2info.module -->
+ <xs:attributeGroup name="refsect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect3. -->
+ <xs:element name="refsect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3info.element -->
+ <xs:attributeGroup name="refsect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3info.attlist -->
+ <!-- end of refsect3info.module -->
+ <xs:attributeGroup name="refsynopsisdivinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSynopsisDiv. -->
+ <xs:element name="refsynopsisdivinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdivinfo.element -->
+ <xs:attributeGroup name="refsynopsisdivinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdivinfo.attlist -->
+ <!-- end of refsynopsisdivinfo.module -->
+ <xs:attributeGroup name="referenceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Reference. -->
+ <xs:element name="referenceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="referenceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of referenceinfo.element -->
+ <xs:attributeGroup name="referenceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="referenceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of referenceinfo.attlist -->
+ <!-- end of referenceinfo.module -->
+ <xs:attributeGroup name="sect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect1. -->
+ <xs:element name="sect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1info.element -->
+ <xs:attributeGroup name="sect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1info.attlist -->
+ <xs:attributeGroup name="sect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect2. -->
+ <xs:element name="sect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2info.element -->
+ <xs:attributeGroup name="sect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2info.attlist -->
+ <xs:attributeGroup name="sect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect3. -->
+ <xs:element name="sect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3info.element -->
+ <xs:attributeGroup name="sect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3info.attlist -->
+ <xs:attributeGroup name="sect4info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect4. -->
+ <xs:element name="sect4info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect4info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4info.element -->
+ <xs:attributeGroup name="sect4info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4info.attlist -->
+ <xs:attributeGroup name="sect5info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect5. -->
+ <xs:element name="sect5info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect5info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5info.element -->
+ <xs:attributeGroup name="sect5info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5info.attlist -->
+ <!-- ...................................................................... -->
+ <!-- Section (parallel to Sect*) ......................................... -->
+ <xs:attributeGroup name="section.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section. -->
+ <xs:element name="section" substitutionGroup="section.class"/>
+ <!-- end of section.element -->
+ <xs:attributeGroup name="section.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="section.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of section.attlist -->
+ <!-- end of section.module -->
+ <xs:attributeGroup name="sectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a recursive section. -->
+ <xs:element name="sectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sectioninfo.element -->
+ <xs:attributeGroup name="sectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sectioninfo.attlist -->
+ <!-- end of sectioninfo.module -->
+ <!-- end of section.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+ <xs:attributeGroup name="sect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level section of document. -->
+ <xs:element name="sect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect1info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect2"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect2"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect1.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1.attlist -->
+ <!-- end of sect1.module -->
+ <xs:attributeGroup name="sect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect1. -->
+ <xs:element name="sect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect2info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect3"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect3"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect2.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2.attlist -->
+ <!-- end of sect2.module -->
+ <xs:attributeGroup name="sect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect2. -->
+ <xs:element name="sect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect3info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect4"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect4"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect3.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3.attlist -->
+ <!-- end of sect3.module -->
+ <xs:attributeGroup name="sect4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect3. -->
+ <xs:element name="sect4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect4info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect5"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect5"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect4.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4.attlist -->
+ <!-- end of sect4.module -->
+ <xs:attributeGroup name="sect5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect4. -->
+ <xs:element name="sect5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect5info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect5.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5.attlist -->
+ <!-- end of sect5.module -->
+ <xs:attributeGroup name="simplesect.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a document with no subdivisions. -->
+ <xs:element name="simplesect">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplesect.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplesect.element -->
+ <xs:attributeGroup name="simplesect.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplesect.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplesect.attlist -->
+ <!-- end of simplesect.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliography ......................................................... -->
+ <xs:attributeGroup name="bibliography.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A bibliography. -->
+ <xs:element name="bibliography">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="bibliographyinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="bibliodiv"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliography.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliography.element -->
+ <xs:attributeGroup name="bibliography.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliography.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliography.attlist -->
+ <!-- end of bibliography.module -->
+ <xs:attributeGroup name="bibliodiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a Bibliography. -->
+ <xs:element name="bibliodiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliodiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliodiv.element -->
+ <xs:attributeGroup name="bibliodiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliodiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliodiv.attlist -->
+ <!-- end of bibliodiv.module -->
+ <!-- end of bibliography.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Glossary ............................................................. -->
+ <xs:attributeGroup name="glossary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary. -->
+ <xs:element name="glossary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="glossaryinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="glossdiv"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="bibliography"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossary.element -->
+ <xs:attributeGroup name="glossary.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossary.attlist -->
+ <!-- end of glossary.module -->
+ <xs:attributeGroup name="glossdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a Glossary. -->
+ <xs:element name="glossdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdiv.element -->
+ <xs:attributeGroup name="glossdiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdiv.attlist -->
+ <!-- end of glossdiv.module -->
+ <!-- end of glossary.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Index and SetIndex ................................................... -->
+ <xs:attributeGroup name="indexes.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An index. -->
+ <xs:element name="index">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="indexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="index.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of index.element -->
+ <xs:attributeGroup name="index.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of index.attlist -->
+ <!-- doc:An index to a set of books. -->
+ <xs:element name="setindex">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="setindexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="setindex.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindex.element -->
+ <xs:attributeGroup name="setindex.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindex.attlist -->
+ <!-- end of indexes.module -->
+ <!--
+ SegmentedList in this content is useful for marking up permuted
+ indices.
+ -->
+ <xs:attributeGroup name="indexdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in an index. -->
+ <xs:element name="indexdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="indexdivcomponent.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="indexentry"/>
+ <xs:element ref="segmentedlist"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexdiv.element -->
+ <xs:attributeGroup name="indexdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexdiv.attlist -->
+ <!-- end of indexdiv.module -->
+ <!-- Index entries appear in the index, not the text. -->
+ <xs:attributeGroup name="indexentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in an index. -->
+ <xs:element name="indexentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="primaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="secondaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ <xs:element ref="tertiaryie"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexentry.element -->
+ <xs:attributeGroup name="indexentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexentry.attlist -->
+ <!-- end of indexentry.module -->
+ <xs:attributeGroup name="primsecterie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A primary term in an index entry, not in the text. -->
+ <xs:element name="primaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="primaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primaryie.attlist -->
+ <!-- doc:A secondary term in an index entry, rather than in the text. -->
+ <xs:element name="secondaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="secondaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondaryie.attlist -->
+ <!-- doc:A tertiary term in an index entry, rather than in the text. -->
+ <xs:element name="tertiaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="tertiaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiaryie.attlist -->
+ <!-- end of primsecterie.module -->
+ <xs:attributeGroup name="seeie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See entry in an index, rather than in the text. -->
+ <xs:element name="seeie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seeie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seeie.element -->
+ <!-- to IndexEntry to look up -->
+ <xs:attributeGroup name="seeie.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seeie.attlist -->
+ <!-- end of seeie.module -->
+ <xs:attributeGroup name="seealsoie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See also entry in an index, rather than in the text. -->
+ <xs:element name="seealsoie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealsoie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealsoie.element -->
+ <!-- to related IndexEntries -->
+ <xs:attributeGroup name="seealsoie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seealsoie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seealsoie.attlist -->
+ <!-- end of seealsoie.module -->
+ <!-- end of index.content.module -->
+ <!-- ...................................................................... -->
+ <!-- RefEntry ............................................................. -->
+ <xs:attributeGroup name="refentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference page (originally a UNIX man-style reference page). -->
+ <xs:element name="refentry" substitutionGroup="refentry.class"/>
+ <!-- end of refentry.element -->
+ <xs:attributeGroup name="refentry.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentry.attlist -->
+ <!-- end of refentry.module -->
+ <xs:attributeGroup name="refmeta.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry. -->
+ <xs:element name="refmeta">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refmiscinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refmeta.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmeta.element -->
+ <xs:attributeGroup name="refmeta.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmeta.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmeta.attlist -->
+ <!-- end of refmeta.module -->
+ <xs:attributeGroup name="refmiscinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry other than the title and volume number. -->
+ <xs:element name="refmiscinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="refmiscinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmiscinfo.element -->
+ <!-- Class: Freely assignable parameter; no default -->
+ <xs:attributeGroup name="refmiscinfo.attlist">
+ <xs:attribute name="class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmiscinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmiscinfo.attlist -->
+ <!-- end of refmiscinfo.module -->
+ <xs:attributeGroup name="refnamediv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name, purpose, and classification of a reference page. -->
+ <xs:element name="refnamediv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refdescriptor"/>
+ <xs:element maxOccurs="unbounded" ref="refname"/>
+ <xs:element ref="refpurpose"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refclass"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refnamediv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refnamediv.element -->
+ <xs:attributeGroup name="refnamediv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refnamediv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refnamediv.attlist -->
+ <!-- end of refnamediv.module -->
+ <xs:attributeGroup name="refdescriptor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of the topic of a reference page. -->
+ <xs:element name="refdescriptor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refdescriptor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refdescriptor.element -->
+ <xs:attributeGroup name="refdescriptor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refdescriptor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refdescriptor.attlist -->
+ <!-- end of refdescriptor.module -->
+ <xs:attributeGroup name="refname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of (one of) the subject(s) of a reference page. -->
+ <xs:element name="refname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refname.element -->
+ <xs:attributeGroup name="refname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refname.attlist -->
+ <!-- end of refname.module -->
+ <xs:attributeGroup name="refpurpose.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short (one sentence) synopsis of the topic of a reference page. -->
+ <xs:element name="refpurpose">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refinline.char.mix"/>
+ <xs:attributeGroup ref="refpurpose.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refpurpose.element -->
+ <xs:attributeGroup name="refpurpose.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refpurpose.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refpurpose.attlist -->
+ <!-- end of refpurpose.module -->
+ <xs:attributeGroup name="refclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The scope or other indication of applicability of a reference entry. -->
+ <xs:element name="refclass">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refclass.char.mix"/>
+ <xs:attributeGroup ref="refclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refclass.element -->
+ <xs:attributeGroup name="refclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refclass.attlist -->
+ <!-- end of refclass.module -->
+ <xs:attributeGroup name="refsynopsisdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntactic synopsis of the subject of the reference page. -->
+ <xs:element name="refsynopsisdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsynopsisdivinfo"/>
+ <xs:group minOccurs="0" ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsynopsisdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdiv.element -->
+ <xs:attributeGroup name="refsynopsisdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdiv.attlist -->
+ <!-- end of refsynopsisdiv.module -->
+ <xs:attributeGroup name="refsection.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section in a refentry. -->
+ <xs:element name="refsection">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsectioninfo"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsection"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsection.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsection.element -->
+ <xs:attributeGroup name="refsection.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsection.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsection.attlist -->
+ <!-- end of refsection.module -->
+ <xs:attributeGroup name="refsect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A major subsection of a reference entry. -->
+ <xs:element name="refsect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect1info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1.element -->
+ <xs:attributeGroup name="refsect1.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1.attlist -->
+ <!-- end of refsect1.module -->
+ <xs:attributeGroup name="refsect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect1. -->
+ <xs:element name="refsect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect2info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect3"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect3"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2.element -->
+ <xs:attributeGroup name="refsect2.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2.attlist -->
+ <!-- end of refsect2.module -->
+ <xs:attributeGroup name="refsect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect2. -->
+ <xs:element name="refsect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect3info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3.element -->
+ <xs:attributeGroup name="refsect3.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3.attlist -->
+ <!-- end of refsect3.module -->
+ <!-- end of refentry.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Article .............................................................. -->
+ <!--
+ An Article is a chapter-level, stand-alone document that is often,
+ but need not be, collected into a Book.
+ -->
+ <xs:attributeGroup name="article.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An article. -->
+ <xs:element name="article" substitutionGroup="article.class"/>
+ <!-- end of article.element -->
+ <!--
+ Class: Indicates the type of a particular article;
+ all articles have the same structure and general purpose.
+ No default.
+ -->
+ <!-- ParentBook: ID of the enclosing Book -->
+ <xs:attributeGroup name="article.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="journalarticle"/>
+ <xs:enumeration value="productsheet"/>
+ <xs:enumeration value="whitepaper"/>
+ <xs:enumeration value="techreport"/>
+ <xs:enumeration value="specification"/>
+ <xs:enumeration value="faq"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="parentbook" type="xs:IDREF"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="article.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of article.attlist -->
+<!-- end of article.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 -->
+<!-- ................................................................................. -->
diff --git a/doc/xsd/dbnotnx.xsd b/doc/xsd/dbnotnx.xsd
new file mode 100644
index 0000000..36f690f
--- /dev/null
+++ b/doc/xsd/dbnotnx.xsd
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML notations ................ -->
+<!-- File dbnotnx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook notations module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbnotnx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the notation declarations used by DocBook.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbnotn PUBLIC
+ "-//OASIS//ENTITIES DocBook Notations V4.5//EN"
+ "dbnotnx.mod">
+ %dbnotn;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="notation.class">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="BMP"/>
+ <xs:enumeration value="CGM-CHAR"/>
+ <xs:enumeration value="CGM-BINARY"/>
+ <xs:enumeration value="CGM-CLEAR"/>
+ <xs:enumeration value="DITROFF"/>
+ <xs:enumeration value="DVI"/>
+ <xs:enumeration value="EPS"/>
+ <xs:enumeration value="EQN"/>
+ <xs:enumeration value="FAX"/>
+ <xs:enumeration value="GIF"/>
+ <xs:enumeration value="GIF87a"/>
+ <xs:enumeration value="GIF89a"/>
+ <xs:enumeration value="JPG"/>
+ <xs:enumeration value="JPEG"/>
+ <xs:enumeration value="IGES"/>
+ <xs:enumeration value="PCX"/>
+ <xs:enumeration value="PIC"/>
+ <xs:enumeration value="PNG"/>
+ <xs:enumeration value="PS"/>
+ <xs:enumeration value="SGML"/>
+ <xs:enumeration value="TBL"/>
+ <xs:enumeration value="TEX"/>
+ <xs:enumeration value="TIFF"/>
+ <xs:enumeration value="WMF"/>
+ <xs:enumeration value="WPG"/>
+ <xs:enumeration value="SVG"/>
+ <xs:enumeration value="PDF"/>
+ <xs:enumeration value="SWF"/>
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
+<!-- WordPerfect Graphic format -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML notations ......... -->
+<!-- ...................................................................... -->
diff --git a/doc/xsd/dbpoolx.xsd b/doc/xsd/dbpoolx.xsd
new file mode 100644
index 0000000..0ce5cb7
--- /dev/null
+++ b/doc/xsd/dbpoolx.xsd
@@ -0,0 +1,8682 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML information pool module .. -->
+<!-- File dbpoolx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the Docbook XML information pool
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the objects, inline
+ elements, and so on that are available to be used as the main
+ content of DocBook documents. Some elements are useful for general
+ publishing, and others are useful specifically for computer
+ documentation.
+
+ This module has the following dependencies on other modules:
+
+ o It assumes that a %notation.class; entity is defined by the
+ driver file or other high-level module. This entity is
+ referenced in the NOTATION attributes for the graphic-related and
+ ModeSpec elements.
+
+ o It assumes that an appropriately parameterized table module is
+ available for use with the table-related elements.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbpool PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN"
+ "dbpoolx.mod">
+ %dbpool;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Forms entities ....................................................... -->
+<!-- These PEs provide the hook by which the forms module can be inserted -->
+<!-- into the DTD. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:include schemaLocation="htmltblx.xsd"/>
+ <xs:include schemaLocation="calstblx.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- General-purpose semantics entities ................................... -->
+ <xs:simpleType name="yesorno.attvals">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- ...................................................................... -->
+ <!-- Entities for module inclusions ....................................... -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element classes and mixtures ............................ -->
+ <!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+ <xs:element name="ndxterm.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="primary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="secondary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="tertiary"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Object-level classes ................................................. -->
+ <xs:element name="list.class" abstract="true"/>
+ <xs:element name="admon.class" abstract="true"/>
+ <xs:element name="linespecific.class" abstract="true"/>
+ <xs:element name="method.synop.class" abstract="true" substitutionGroup="synop.class"/>
+ <xs:element name="synop.class" abstract="true"/>
+ <xs:element name="para.class" abstract="true"/>
+ <xs:element name="informal.class" abstract="true"/>
+ <xs:element name="formal.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="compound.class" abstract="true"/>
+ <xs:group name="genobj.class">
+ <xs:choice>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="highlights"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="descobj.class">
+ <xs:choice>
+ <xs:element ref="abstract"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="epigraph"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level classes .............................................. -->
+ <xs:element name="xref.char.class" abstract="true"/>
+ <xs:element name="gen.char.class" abstract="true"/>
+ <xs:element name="link.char.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="tech.char.class" abstract="true"/>
+ <xs:group name="base.char.class">
+ <xs:sequence>
+ <xs:element ref="anchor"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="docinfo.char.class" abstract="true"/>
+ <xs:group name="other.char.class">
+ <xs:choice>
+ <xs:element ref="remark"/>
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="inlineobj.char.class" abstract="true"/>
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="formalobject.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- Object-level mixtures ................................................ -->
+ <!--
+ list admn line synp para infm form cmpd gen desc
+ Component mixture X X X X X X X X X X
+ Sidebar mixture X X X X X X X a X
+ Footnote mixture X X X X X
+ Example mixture X X X X X
+ Highlights mixture X X X
+ Paragraph mixture X X X X
+ Admonition mixture X X X X X X b c
+ Figure mixture X X X
+ Table entry mixture X X X X d
+ Glossary def mixture X X X X X e
+ Legal notice mixture X X X X f
+
+ a. Just Procedure; not Sidebar itself or MsgSet.
+ b. No MsgSet.
+ c. No Highlights.
+ d. Just Graphic; no other informal objects.
+ e. No Anchor, BridgeHead, or Highlights.
+ f. Just BlockQuote; no other informal objects.
+ -->
+ <xs:group name="component.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="sidebar.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="qandaset.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="revdescription.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="footnote.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="example.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ <xs:element ref="procedure"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="highlights.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ %formal.class; is explicitly excluded from many contexts in which
+ paragraphs are used
+ -->
+ <xs:group name="para.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="sconstruct"/>
+ <xs:element ref="scons_example"/>
+ <xs:element ref="scons_example_file"/>
+ <xs:element ref="scons_output"/>
+ <xs:element ref="sconsdoc"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="summary.mix">
+ <xs:choice>
+ <xs:element ref="example_commands"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tool.mix">
+ <xs:choice>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="scons_function.mix">
+ <xs:choice>
+ <xs:element ref="arguments"/>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="admon.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:element ref="sidebar"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="figure.mix">
+ <xs:choice>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tabentry.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="glossdef.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="legalnotice.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="textobject.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="mediaobject.mix" abstract="true"/>
+ <xs:group name="listpreamble.mix">
+ <xs:choice>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level mixtures ............................................. -->
+ <!-- sgml.features -->
+ <!-- not [sgml.features[ -->
+ <!-- ]] not sgml.features -->
+ <!--
+ #PCD xref word link cptr base dnfo othr inob (synop)
+ para.char.mix X X X X X X X X X
+ title.char.mix X X X X X X X X X
+ ndxterm.char.mix X X X X X X X X a
+ cptr.char.mix X X X X X a
+ smallcptr.char.mix X b a
+ word.char.mix X c X X X a
+ docinfo.char.mix X d X b X a
+
+ a. Just InlineGraphic; no InlineEquation.
+ b. Just Replaceable; no other computer terms.
+ c. Just Emphasis and Trademark; no other word elements.
+ d. Just Acronym, Emphasis, and Trademark; no other word elements.
+ -->
+ <xs:group name="para.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="title.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="ndxterm.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="cptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="smallcptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="replaceable"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="word.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="acronym"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="docinfo.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="replaceable"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <!-- ENTITY % bibliocomponent.mix (see Bibliographic section, below) -->
+ <!-- ENTITY % person.ident.mix (see Bibliographic section, below) -->
+ <!-- ...................................................................... -->
+ <!-- Entities for attributes and attribute components ..................... -->
+ <!-- Effectivity attributes ............................................... -->
+ <!--
+ Arch: Computer or chip architecture to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="arch.attrib">
+ <xs:attribute name="arch"/>
+ </xs:attributeGroup>
+ <!-- Condition: General-purpose effectivity attribute -->
+ <xs:attributeGroup name="condition.attrib">
+ <xs:attribute name="condition"/>
+ </xs:attributeGroup>
+ <!-- Conformance: Standards conformance characteristics -->
+ <xs:attributeGroup name="conformance.attrib">
+ <xs:attribute name="conformance" type="xs:NMTOKENS"/>
+ </xs:attributeGroup>
+ <!-- OS: Operating system to which element applies; no default -->
+ <xs:attributeGroup name="os.attrib">
+ <xs:attribute name="os"/>
+ </xs:attributeGroup>
+ <!-- Revision: Editorial revision to which element belongs; no default -->
+ <xs:attributeGroup name="revision.attrib">
+ <xs:attribute name="revision"/>
+ </xs:attributeGroup>
+ <!-- Security: Security classification; no default -->
+ <xs:attributeGroup name="security.attrib">
+ <xs:attribute name="security"/>
+ </xs:attributeGroup>
+ <!--
+ UserLevel: Level of user experience to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="userlevel.attrib">
+ <xs:attribute name="userlevel"/>
+ </xs:attributeGroup>
+ <!-- Vendor: Computer vendor to which element applies; no default -->
+ <xs:attributeGroup name="vendor.attrib">
+ <xs:attribute name="vendor"/>
+ </xs:attributeGroup>
+ <!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default -->
+ <xs:attributeGroup name="wordsize.attrib">
+ <xs:attribute name="wordsize"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="effectivity.attrib">
+ <xs:attributeGroup ref="arch.attrib"/>
+ <xs:attributeGroup ref="condition.attrib"/>
+ <xs:attributeGroup ref="conformance.attrib"/>
+ <xs:attributeGroup ref="os.attrib"/>
+ <xs:attributeGroup ref="revision.attrib"/>
+ <xs:attributeGroup ref="security.attrib"/>
+ <xs:attributeGroup ref="userlevel.attrib"/>
+ <xs:attributeGroup ref="vendor.attrib"/>
+ <xs:attributeGroup ref="wordsize.attrib"/>
+ </xs:attributeGroup>
+ <!-- Common attributes .................................................... -->
+ <!-- Id: Unique identifier of element; no default -->
+ <xs:attributeGroup name="id.attrib">
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Id: Unique identifier of element; a value must be supplied; no
+ default
+ -->
+ <xs:attributeGroup name="idreq.attrib">
+ <xs:attribute name="id" use="required" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Lang: Indicator of language in which element is written, for
+ translation, character set management, etc.; no default
+ -->
+ <xs:attributeGroup name="lang.attrib">
+ <xs:attribute name="lang"/>
+ </xs:attributeGroup>
+ <!-- Remap: Previous role of element before conversion; no default -->
+ <xs:attributeGroup name="remap.attrib">
+ <xs:attribute name="remap"/>
+ </xs:attributeGroup>
+ <!-- Role: New role of element in local environment; no default -->
+ <xs:attributeGroup name="role.attrib">
+ <xs:attribute name="role"/>
+ </xs:attributeGroup>
+ <!--
+ XRefLabel: Alternate labeling string for XRef text generation;
+ default is usually title or other appropriate label text already
+ contained in element
+ -->
+ <xs:attributeGroup name="xreflabel.attrib">
+ <xs:attribute name="xreflabel"/>
+ </xs:attributeGroup>
+ <!--
+ RevisionFlag: Revision status of element; default is that element
+ wasn't revised
+ -->
+ <xs:attributeGroup name="revisionflag.attrib">
+ <xs:attribute name="revisionflag">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="changed"/>
+ <xs:enumeration value="added"/>
+ <xs:enumeration value="deleted"/>
+ <xs:enumeration value="off"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- dir: Bidirectional override -->
+ <xs:attributeGroup name="dir.attrib">
+ <xs:attribute name="dir">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ltr"/>
+ <xs:enumeration value="rtl"/>
+ <xs:enumeration value="lro"/>
+ <xs:enumeration value="rlo"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- xml:base: base URI -->
+ <xs:attributeGroup name="xml-base.attrib">
+ <xs:attribute ref="xml:base"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="common.attrib">
+ <xs:attributeGroup ref="id.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="idreq.common.attrib">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Semi-common attributes and other attribute entities .................. -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the graphic
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the graphic
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the Graphic -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="graphics.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ </xs:attributeGroup>
+ <!--
+ Action: Key combination type; default is unspecified if one
+ child element, Simul if there is more than one; if value is
+ Other, the OtherAction attribute must have a nonempty value
+ -->
+ <!-- OtherAction: User-defined key combination type -->
+ <xs:attributeGroup name="keyaction.attrib">
+ <xs:attribute name="action">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="click"/>
+ <xs:enumeration value="double-click"/>
+ <xs:enumeration value="press"/>
+ <xs:enumeration value="seq"/>
+ <xs:enumeration value="simul"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otheraction"/>
+ </xs:attributeGroup>
+ <!--
+ Label: Identifying number or string; default is usually the
+ appropriate number or string autogenerated by a formatter
+ -->
+ <xs:attributeGroup name="label.attrib">
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <!-- xml:space: whitespace treatment -->
+ <xs:attributeGroup name="xml-space.attrib">
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+ <!--
+ Format: whether element is assumed to contain significant white
+ space
+ -->
+ <xs:attributeGroup name="linespecific.attrib">
+ <xs:attribute name="format" default="linespecific">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="xml-space.attrib"/>
+ <xs:attribute name="linenumbering">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="numbered"/>
+ <xs:enumeration value="unnumbered"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startinglinenumber"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <!-- Linkend: link to related information; no default -->
+ <xs:attributeGroup name="linkend.attrib">
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!-- Linkend: required link to related information -->
+ <xs:attributeGroup name="linkendreq.attrib">
+ <xs:attribute name="linkend" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!--
+ Linkends: link to one or more sets of related information; no
+ default
+ -->
+ <xs:attributeGroup name="linkends.attrib">
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="mark.attrib">
+ <xs:attribute name="mark"/>
+ </xs:attributeGroup>
+ <!-- MoreInfo: whether element's content has an associated RefEntry -->
+ <xs:attributeGroup name="moreinfo.attrib">
+ <xs:attribute name="moreinfo" default="none">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- Pagenum: number of page on which element appears; no default -->
+ <xs:attributeGroup name="pagenum.attrib">
+ <xs:attribute name="pagenum"/>
+ </xs:attributeGroup>
+ <!--
+ Status: Editorial or publication status of the element
+ it applies to, such as "in review" or "approved for distribution"
+ -->
+ <xs:attributeGroup name="status.attrib">
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <!--
+ Width: width of the longest line in the element to which it
+ pertains, in number of characters
+ -->
+ <xs:attributeGroup name="width.attrib">
+ <xs:attribute name="width"/>
+ </xs:attributeGroup>
+ <!-- ...................................................................... -->
+ <!-- Title elements ....................................................... -->
+ <xs:attributeGroup name="title.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of the title of a section of a document or of a formal block-level element. -->
+ <xs:element name="title">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="title.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of title.element -->
+ <xs:attributeGroup name="title.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="title.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of title.attlist -->
+ <!-- end of title.module -->
+ <xs:attributeGroup name="titleabbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The abbreviation of a Title. -->
+ <xs:element name="titleabbrev">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="titleabbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of titleabbrev.element -->
+ <xs:attributeGroup name="titleabbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="titleabbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of titleabbrev.attlist -->
+ <!-- end of titleabbrev.module -->
+ <xs:attributeGroup name="subtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The subtitle of a document. -->
+ <xs:element name="subtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="subtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subtitle.element -->
+ <xs:attributeGroup name="subtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subtitle.attlist -->
+ <!-- end of subtitle.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliographic entities and elements .................................. -->
+ <!--
+ The bibliographic elements are typically used in the document
+ hierarchy. They do not appear in content models of information
+ pool elements. See also the document information elements,
+ below.
+ -->
+ <xs:group name="person.ident.mix">
+ <xs:choice>
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ <xs:element ref="affiliation"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="contrib"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="bibliocomponent.mix">
+ <xs:choice>
+ <xs:element ref="abbrev"/>
+ <xs:element ref="abstract"/>
+ <xs:element ref="address"/>
+ <xs:element ref="artpagenums"/>
+ <xs:element ref="author"/>
+ <xs:element ref="authorgroup"/>
+ <xs:element ref="authorinitials"/>
+ <xs:element ref="bibliomisc"/>
+ <xs:element ref="biblioset"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="confgroup"/>
+ <xs:element ref="contractnum"/>
+ <xs:element ref="contractsponsor"/>
+ <xs:element ref="copyright"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpname"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="date"/>
+ <xs:element ref="edition"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="invpartnumber"/>
+ <xs:element ref="isbn"/>
+ <xs:element ref="issn"/>
+ <xs:element ref="issuenum"/>
+ <xs:element ref="orgname"/>
+ <xs:element ref="biblioid"/>
+ <xs:element ref="citebiblioid"/>
+ <xs:element ref="bibliosource"/>
+ <xs:element ref="bibliorelation"/>
+ <xs:element ref="bibliocoverage"/>
+ <xs:element ref="othercredit"/>
+ <xs:element ref="pagenums"/>
+ <xs:element ref="printhistory"/>
+ <xs:element ref="productname"/>
+ <xs:element ref="productnumber"/>
+ <xs:element ref="pubdate"/>
+ <xs:element ref="publisher"/>
+ <xs:element ref="publishername"/>
+ <xs:element ref="pubsnumber"/>
+ <xs:element ref="releaseinfo"/>
+ <xs:element ref="revhistory"/>
+ <xs:element ref="seriesvolnums"/>
+ <xs:element ref="subtitle"/>
+ <xs:element ref="title"/>
+ <xs:element ref="titleabbrev"/>
+ <xs:element ref="volumenum"/>
+ <xs:element ref="citetitle"/>
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!-- I don't think this is well placed, but it needs to be here because of -->
+ <!-- the reference to bibliocomponent.mix -->
+ <xs:group name="info.class">
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="legalnotice"/>
+ <xs:element ref="modespec"/>
+ <xs:element ref="subjectset"/>
+ <xs:element ref="keywordset"/>
+ <xs:element ref="itermset"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!-- BiblioList ........................ -->
+ <xs:attributeGroup name="bibliolist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of bibliography entries. -->
+ <xs:element name="bibliolist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliolist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliolist.element -->
+ <xs:attributeGroup name="bibliolist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliolist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliolist.attlist -->
+ <!-- end of bibliolist.module -->
+ <xs:attributeGroup name="biblioentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="biblioentry">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="articleinfo"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="biblioentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioentry.element -->
+ <xs:attributeGroup name="biblioentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioentry.attlist -->
+ <!-- end of biblioentry.module -->
+ <xs:attributeGroup name="bibliomixed.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="bibliomixed">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomixed.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomixed.element -->
+ <xs:attributeGroup name="bibliomixed.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomixed.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomixed.attlist -->
+ <!-- end of bibliomixed.module -->
+ <xs:attributeGroup name="articleinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Article. -->
+ <xs:element name="articleinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="articleinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of articleinfo.element -->
+ <xs:attributeGroup name="articleinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="articleinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of articleinfo.attlist -->
+ <!-- end of articleinfo.module -->
+ <xs:attributeGroup name="biblioset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "raw" container for related bibliographic information. -->
+ <xs:element name="biblioset">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="bibliocomponent.mix"/>
+ <xs:attributeGroup ref="biblioset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioSet -->
+ <xs:attributeGroup name="biblioset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioset.attlist -->
+ <!-- end of biblioset.module -->
+ <xs:attributeGroup name="bibliomset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "cooked" container for related bibliographic information. -->
+ <xs:element name="bibliomset">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioMSet -->
+ <xs:attributeGroup name="bibliomset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomset.attlist -->
+ <!-- end of bibliomset.module -->
+ <xs:attributeGroup name="bibliomisc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Untyped bibliographic information. -->
+ <xs:element name="bibliomisc">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="bibliomisc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomisc.element -->
+ <xs:attributeGroup name="bibliomisc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomisc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomisc.attlist -->
+ <!-- end of bibliomisc.module -->
+ <!-- ...................................................................... -->
+ <!-- Subject, Keyword, and ITermSet elements .............................. -->
+ <xs:attributeGroup name="subjectset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of terms describing the subject matter of a document. -->
+ <xs:element name="subjectset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subject"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subjectset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectset.element -->
+ <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+ <xs:attributeGroup name="subjectset.attlist">
+ <xs:attribute name="scheme" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectset.attlist -->
+ <!-- end of subjectset.module -->
+ <xs:attributeGroup name="subject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a group of terms describing the subject matter of a document. -->
+ <xs:element name="subject">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subjectterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subject.element -->
+ <!--
+ Weight: Ranking of this group of SubjectTerms relative
+ to others, 0 is low, no highest value specified
+ -->
+ <xs:attributeGroup name="subject.attlist">
+ <xs:attribute name="weight"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subject.attlist -->
+ <!-- end of subject.module -->
+ <xs:attributeGroup name="subjectterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A term in a group of terms describing the subject matter of a document. -->
+ <xs:element name="subjectterm">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="subjectterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectterm.element -->
+ <xs:attributeGroup name="subjectterm.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectterm.attlist -->
+ <!-- end of subjectterm.module -->
+ <!-- end of subjectset.content.module -->
+ <xs:attributeGroup name="keywordset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of keywords describing the content of a document. -->
+ <xs:element name="keywordset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="keyword"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="keywordset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keywordset.element -->
+ <xs:attributeGroup name="keywordset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keywordset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keywordset.attlist -->
+ <!-- end of keywordset.module -->
+ <xs:attributeGroup name="keyword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a set of keywords describing the content of a document. -->
+ <xs:element name="keyword">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="keyword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keyword.element -->
+ <xs:attributeGroup name="keyword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keyword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keyword.attlist -->
+ <!-- end of keyword.module -->
+ <!-- end of keywordset.content.module -->
+ <xs:attributeGroup name="itermset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of index terms in the meta-information of a document. -->
+ <xs:element name="itermset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="indexterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itermset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itermset.element -->
+ <xs:attributeGroup name="itermset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itermset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itermset.attlist -->
+ <!-- end of itermset.module -->
+ <!-- Bibliographic info for "blocks" -->
+ <xs:attributeGroup name="blockinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a block element. -->
+ <xs:element name="blockinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="blockinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockinfo.element -->
+ <xs:attributeGroup name="blockinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockinfo.attlist -->
+ <!-- end of blockinfo.module -->
+ <!-- ...................................................................... -->
+ <!-- Compound (section-ish) elements ...................................... -->
+ <!-- Message set ...................... -->
+ <xs:attributeGroup name="msgset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A detailed set of messages, usually error messages. -->
+ <xs:element name="msgset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="msgentry"/>
+ <xs:element maxOccurs="unbounded" ref="simplemsgentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgset.element -->
+ <xs:attributeGroup name="msgset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgset.attlist -->
+ <!-- end of msgset.module -->
+ <xs:attributeGroup name="msgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an entry in a message set. -->
+ <xs:element name="msgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="msg"/>
+ <xs:element minOccurs="0" ref="msginfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgentry.element -->
+ <xs:attributeGroup name="msgentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgentry.attlist -->
+ <!-- end of msgentry.module -->
+ <xs:attributeGroup name="simplemsgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a simpler entry in a message set. -->
+ <xs:element name="simplemsgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="msgtext"/>
+ <xs:element maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplemsgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplemsgentry.element -->
+ <xs:attributeGroup name="simplemsgentry.attlist">
+ <xs:attribute name="audience"/>
+ <xs:attribute name="level"/>
+ <xs:attribute name="origin"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplemsgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplemsgentry.attlist -->
+ <!-- end of simplemsgentry.module -->
+ <xs:attributeGroup name="msg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A message in a message set. -->
+ <xs:element name="msg">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgmain"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msgsub"/>
+ <xs:element ref="msgrel"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msg.element -->
+ <xs:attributeGroup name="msg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msg.attlist -->
+ <!-- end of msg.module -->
+ <xs:attributeGroup name="msgmain.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary component of a message in a message set. -->
+ <xs:element name="msgmain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgmain.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgmain.element -->
+ <xs:attributeGroup name="msgmain.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgmain.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgmain.attlist -->
+ <!-- end of msgmain.module -->
+ <xs:attributeGroup name="msgsub.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subcomponent of a message in a message set. -->
+ <xs:element name="msgsub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgsub.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgsub.element -->
+ <xs:attributeGroup name="msgsub.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgsub.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgsub.attlist -->
+ <!-- end of msgsub.module -->
+ <xs:attributeGroup name="msgrel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A related component of a message in a message set. -->
+ <xs:element name="msgrel">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgrel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgrel.element -->
+ <xs:attributeGroup name="msgrel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgrel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgrel.attlist -->
+ <!-- end of msgrel.module -->
+ <!-- MsgText (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="msginfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a message in a message set. -->
+ <xs:element name="msginfo">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msglevel"/>
+ <xs:element ref="msgorig"/>
+ <xs:element ref="msgaud"/>
+ </xs:choice>
+ <xs:attributeGroup ref="msginfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msginfo.element -->
+ <xs:attributeGroup name="msginfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msginfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msginfo.attlist -->
+ <!-- end of msginfo.module -->
+ <xs:attributeGroup name="msglevel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The level of importance or severity of a message in a message set. -->
+ <xs:element name="msglevel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msglevel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msglevel.element -->
+ <xs:attributeGroup name="msglevel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msglevel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msglevel.attlist -->
+ <!-- end of msglevel.module -->
+ <xs:attributeGroup name="msgorig.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The origin of a message in a message set. -->
+ <xs:element name="msgorig">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msgorig.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgorig.element -->
+ <xs:attributeGroup name="msgorig.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgorig.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgorig.attlist -->
+ <!-- end of msgorig.module -->
+ <xs:attributeGroup name="msgaud.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The audience to which a message in a message set is relevant. -->
+ <xs:element name="msgaud">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="msgaud.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgaud.element -->
+ <xs:attributeGroup name="msgaud.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgaud.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgaud.attlist -->
+ <!-- end of msgaud.module -->
+ <xs:attributeGroup name="msgexplan.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Explanatory material relating to a message in a message set. -->
+ <xs:element name="msgexplan">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgexplan.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgexplan.element -->
+ <xs:attributeGroup name="msgexplan.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgexplan.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgexplan.attlist -->
+ <!-- end of msgexplan.module -->
+ <!-- end of msgset.content.module -->
+ <xs:attributeGroup name="task.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A task to be completed. -->
+ <xs:element name="task" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" ref="tasksummary"/>
+ <xs:element minOccurs="0" ref="taskprerequisites"/>
+ <xs:element ref="procedure"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="example"/>
+ <xs:element minOccurs="0" ref="taskrelated"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="task.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of task.element -->
+ <xs:attributeGroup name="task.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="task.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of task.attlist -->
+ <!-- end of task.module -->
+ <xs:attributeGroup name="tasksummary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of a task. -->
+ <xs:element name="tasksummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tasksummary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tasksummary.element -->
+ <xs:attributeGroup name="tasksummary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tasksummary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tasksummary.attlist -->
+ <!-- end of tasksummary.module -->
+ <xs:attributeGroup name="taskprerequisites.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prerequisites for a task. -->
+ <xs:element name="taskprerequisites">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskprerequisites.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskprerequisites.element -->
+ <xs:attributeGroup name="taskprerequisites.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskprerequisites.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskprerequisites.attlist -->
+ <!-- end of taskprerequisites.module -->
+ <xs:attributeGroup name="taskrelated.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information related to a task. -->
+ <xs:element name="taskrelated">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskrelated.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskrelated.element -->
+ <xs:attributeGroup name="taskrelated.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskrelated.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskrelated.attlist -->
+ <!-- end of taskrelated.module -->
+ <!-- end of task.content.module -->
+ <!-- QandASet ........................ -->
+ <xs:attributeGroup name="qandaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question-and-answer set. -->
+ <xs:element name="qandaset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaset.element -->
+ <xs:attributeGroup name="qandaset.attlist">
+ <xs:attribute name="defaultlabel">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="qanda"/>
+ <xs:enumeration value="number"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaset.attlist -->
+ <!-- end of qandaset.module -->
+ <xs:attributeGroup name="qandadiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A titled division in a QandASet. -->
+ <xs:element name="qandadiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandadiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandadiv.element -->
+ <xs:attributeGroup name="qandadiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandadiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandadiv.attlist -->
+ <!-- end of qandadiv.module -->
+ <xs:attributeGroup name="qandaentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question/answer set within a QandASet. -->
+ <xs:element name="qandaentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:element ref="question"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="answer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaentry.element -->
+ <xs:attributeGroup name="qandaentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaentry.attlist -->
+ <!-- end of qandaentry.module -->
+ <xs:attributeGroup name="question.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question in a QandASet. -->
+ <xs:element name="question">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group maxOccurs="unbounded" ref="qandaset.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="question.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of question.element -->
+ <xs:attributeGroup name="question.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="question.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of question.attlist -->
+ <!-- end of question.module -->
+ <xs:attributeGroup name="answer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An answer to a question posed in a QandASet. -->
+ <xs:element name="answer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="answer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of answer.element -->
+ <xs:attributeGroup name="answer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="answer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of answer.attlist -->
+ <!-- end of answer.module -->
+ <xs:attributeGroup name="label.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A label on a Question or Answer. -->
+ <xs:element name="label">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="label.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of label.element -->
+ <xs:attributeGroup name="label.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="label.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of label.attlist -->
+ <!-- end of label.module -->
+ <!-- end of qandaset.content.module -->
+ <!-- Procedure ........................ -->
+ <xs:attributeGroup name="procedure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of operations to be performed in a well-defined sequence. -->
+ <xs:element name="procedure" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="procedure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of procedure.element -->
+ <xs:attributeGroup name="procedure.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="procedure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of procedure.attlist -->
+ <!-- end of procedure.module -->
+ <xs:attributeGroup name="step.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of action in a procedure. -->
+ <xs:element name="step">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:sequence minOccurs="0">
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="step.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of step.element -->
+ <!-- Performance: Whether the Step must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="step.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="step.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of step.attlist -->
+ <!-- end of step.module -->
+ <xs:attributeGroup name="substeps.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for steps that occur within steps in a procedure. -->
+ <xs:element name="substeps">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="substeps.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of substeps.element -->
+ <!-- Performance: whether entire set of substeps must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="substeps.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="substeps.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of substeps.attlist -->
+ <!-- end of substeps.module -->
+ <xs:attributeGroup name="stepalternatives.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Alternative steps in a procedure. -->
+ <xs:element name="stepalternatives">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="stepalternatives.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of stepalternatives.element -->
+ <!-- Performance: Whether (one of) the alternatives must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="stepalternatives.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="stepalternatives.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of stepalternatives.attlist -->
+ <!-- end of stepalternatives.module -->
+ <!-- end of procedure.content.module -->
+ <!-- Sidebar .......................... -->
+ <xs:attributeGroup name="sidebarinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sidebar. -->
+ <xs:element name="sidebarinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sidebarinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebarinfo.element -->
+ <xs:attributeGroup name="sidebarinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebarinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebarinfo.attlist -->
+ <!-- end of sidebarinfo.module -->
+ <xs:attributeGroup name="sidebar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a document that is isolated from the main narrative flow. -->
+ <xs:element name="sidebar" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sidebarinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="sidebar.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sidebar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebar.element -->
+ <xs:attributeGroup name="sidebar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebar.attlist -->
+ <!-- end of sidebar.module -->
+ <!-- end of sidebar.content.model -->
+ <!-- ...................................................................... -->
+ <!-- Paragraph-related elements ........................................... -->
+ <xs:attributeGroup name="abstract.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="abstract">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="abstract.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abstract.element -->
+ <xs:attributeGroup name="abstract.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abstract.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abstract.attlist -->
+ <!-- end of abstract.module -->
+ <xs:attributeGroup name="authorblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about an author. -->
+ <xs:element name="authorblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="authorblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorblurb.element -->
+ <xs:attributeGroup name="authorblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorblurb.attlist -->
+ <!-- end of authorblurb.module -->
+ <xs:attributeGroup name="personblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about a person. -->
+ <xs:element name="personblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="personblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personblurb.element -->
+ <xs:attributeGroup name="personblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personblurb.attlist -->
+ <!-- end of personblurb.module -->
+ <xs:attributeGroup name="blockquote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A quotation set off from the main text. -->
+ <xs:element name="blockquote" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="blockquote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockquote.element -->
+ <xs:attributeGroup name="blockquote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockquote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockquote.attlist -->
+ <!-- end of blockquote.module -->
+ <xs:attributeGroup name="attribution.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a block quote or epigraph. -->
+ <xs:element name="attribution">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="attribution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of attribution.element -->
+ <xs:attributeGroup name="attribution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="attribution.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of attribution.attlist -->
+ <!-- end of attribution.module -->
+ <xs:attributeGroup name="bridgehead.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A free-floating heading. -->
+ <xs:element name="bridgehead">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="bridgehead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bridgehead.element -->
+ <!--
+ Renderas: Indicates the format in which the BridgeHead
+ should appear
+ -->
+ <xs:attributeGroup name="bridgehead.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other"/>
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bridgehead.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bridgehead.attlist -->
+ <!-- end of bridgehead.module -->
+ <xs:attributeGroup name="remark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A remark (or comment) intended for presentation in a draft manuscript. -->
+ <xs:element name="remark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="remark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of remark.element -->
+ <xs:attributeGroup name="remark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="remark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of remark.attlist -->
+ <!-- end of remark.module -->
+ <xs:attributeGroup name="epigraph.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short inscription at the beginning of a document or component. -->
+ <xs:element name="epigraph">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="para.class"/>
+ <xs:element ref="literallayout"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="epigraph.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of epigraph.element -->
+ <xs:attributeGroup name="epigraph.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="epigraph.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of epigraph.attlist -->
+ <!-- Attribution (defined above) -->
+ <!-- end of epigraph.module -->
+ <xs:attributeGroup name="footnote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A footnote. -->
+ <xs:element name="footnote" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="footnote.mix"/>
+ <xs:attributeGroup ref="footnote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnote.element -->
+ <xs:attributeGroup name="footnote.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnote.attlist -->
+ <!-- end of footnote.module -->
+ <xs:attributeGroup name="highlights.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the main points of the discussed component. -->
+ <xs:element name="highlights">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="highlights.mix"/>
+ <xs:attributeGroup ref="highlights.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of highlights.element -->
+ <xs:attributeGroup name="highlights.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="highlights.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of highlights.attlist -->
+ <!-- end of highlights.module -->
+ <xs:attributeGroup name="formalpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph with a title. -->
+ <xs:element name="formalpara" substitutionGroup="para.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="para"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="formalpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of formalpara.element -->
+ <xs:attributeGroup name="formalpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="formalpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of formalpara.attlist -->
+ <!-- end of formalpara.module -->
+ <xs:attributeGroup name="para.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="para" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="para.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of para.element -->
+ <xs:attributeGroup name="para.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="para.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of para.attlist -->
+ <!-- end of para.module -->
+ <xs:attributeGroup name="simpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph that contains only text and inline markup, no block elements. -->
+ <xs:element name="simpara" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="simpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simpara.element -->
+ <xs:attributeGroup name="simpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simpara.attlist -->
+ <!-- end of simpara.module -->
+ <xs:attributeGroup name="sconstruct.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SConstruct example file. -->
+ <xs:element name="sconstruct" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconstruct.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconstruct.element -->
+ <xs:attributeGroup name="sconstruct.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconstruct.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconstruct.attlist -->
+ <!-- end of sconstruct.module -->
+ <xs:attributeGroup name="scons_example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example. -->
+ <xs:element name="scons_example" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="file"/>
+ <xs:element ref="directory"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example.element -->
+ <xs:attributeGroup name="scons_example.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_example.attlist -->
+ <!-- end of scons_example.module -->
+ <xs:attributeGroup name="file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example file. -->
+ <xs:element name="file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of file.element -->
+ <xs:attributeGroup name="file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="optional" />
+ <xs:attribute name="chmod" type="xs:string" use="optional" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of file.attlist -->
+ <!-- end of file.module -->
+ <xs:attributeGroup name="directory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example directory. -->
+ <xs:element name="directory" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="directory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of directory.element -->
+ <xs:attributeGroup name="directory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="directory.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of directory.attlist -->
+ <!-- end of directory.module -->
+ <xs:attributeGroup name="scons_example_file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_example_file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example_file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example_file.element -->
+ <xs:attributeGroup name="scons_example_file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example_file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_example_file.attlist -->
+ <!-- end of scons_example_file.module -->
+ <xs:attributeGroup name="scons_output.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The output of a SCons command/example. -->
+ <xs:element name="scons_output" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="scons_output_command"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output.element -->
+ <xs:attributeGroup name="scons_output.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" />
+ <xs:attribute name="tools" type="xs:string" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ <xs:attribute name="suffix" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_output.attlist -->
+ <!-- end of scons_output.module -->
+ <xs:attributeGroup name="scons_output_command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_output_command" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output_command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output_command.element -->
+ <xs:attributeGroup name="scons_output_command.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output_command.role.attrib"/>
+ <xs:attribute name="edit" type="xs:string" use="optional" />
+ <xs:attribute name="environment" type="xs:string" use="optional" />
+ <xs:attribute name="output" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_output_command.attlist -->
+ <!-- end of scons_output_command.module -->
+ <xs:attributeGroup name="sconsdoc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A sconsdoc. -->
+ <xs:element name="sconsdoc" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tool"/>
+ <xs:element ref="builder"/>
+ <xs:element ref="scons_function"/>
+ <xs:element ref="cvar"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconsdoc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconsdoc.element -->
+ <xs:attributeGroup name="sconsdoc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconsdoc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconsdoc.attlist -->
+ <!-- end of sconsdoc.module -->
+ <xs:attributeGroup name="example_commands.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="example_commands" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="example_commands.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example_commands.element -->
+ <xs:attributeGroup name="example_commands.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example_commands.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example_commands.attlist -->
+ <!-- end of example_commands.module -->
+ <xs:attributeGroup name="summary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="summary" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="component.mix"/>
+ <xs:group ref="summary.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="summary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of summary.element -->
+ <xs:attributeGroup name="summary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="summary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of summary.attlist -->
+ <!-- end of summary.module -->
+
+ <xs:attributeGroup name="item.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A item. -->
+ <xs:element name="item">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="item.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of item.element -->
+ <xs:attributeGroup name="item.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="item.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of item.attlist -->
+ <!-- end of item.module -->
+ <xs:attributeGroup name="sets.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="sets" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sets.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sets.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="sets.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sets.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sets.attlist -->
+ <!-- end of sets.module -->
+ <xs:attributeGroup name="uses.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="uses" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="uses.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uses.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="uses.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uses.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uses.attlist -->
+ <!-- end of uses.module -->
+ <xs:attributeGroup name="tool.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="tool" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tool.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tool.element -->
+ <xs:attributeGroup name="tool.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tool.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of tool.attlist -->
+ <!-- end of tool.module -->
+ <xs:attributeGroup name="builder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="builder" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="builder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of builder.element -->
+ <xs:attributeGroup name="builder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="builder.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of builder.attlist -->
+ <!-- end of builder.module -->
+
+ <xs:attributeGroup name="cvar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="cvar" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:element ref="summary"/>
+ </xs:choice>
+ <xs:attributeGroup ref="cvar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cvar.element -->
+ <xs:attributeGroup name="cvar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cvar.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of cvar.attlist -->
+ <!-- end of cvar.module -->
+ <xs:attributeGroup name="arguments.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="arguments" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arguments.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arguments.element -->
+ <xs:attributeGroup name="arguments.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arguments.role.attrib"/>
+ <xs:attribute name="signature" type="xs:string" use="optional" />
+ <xs:attribute name="both" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of arguments.attlist -->
+ <!-- end of arguments.module -->
+ <xs:attributeGroup name="scons_function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="scons_function" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ <xs:group ref="scons_function.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_function.element -->
+ <xs:attributeGroup name="scons_function.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_function.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_function.attlist -->
+ <!-- end of scons_function.module -->
+ <xs:attributeGroup name="admon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A note of caution. -->
+ <xs:element name="caution" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="caution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caution.element -->
+ <xs:attributeGroup name="caution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of caution.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="important" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="important.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of important.element -->
+ <xs:attributeGroup name="important.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of important.attlist -->
+ <!-- doc:A message set off from the text. -->
+ <xs:element name="note" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="note.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of note.element -->
+ <xs:attributeGroup name="note.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of note.attlist -->
+ <!-- doc:A suggestion to the user, set off from the text. -->
+ <xs:element name="tip" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tip.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tip.element -->
+ <xs:attributeGroup name="tip.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tip.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="warning" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="warning.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of warning.element -->
+ <xs:attributeGroup name="warning.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of warning.attlist -->
+ <!-- end of admon.module -->
+ <!-- ...................................................................... -->
+ <!-- Lists ................................................................ -->
+ <!-- GlossList ........................ -->
+ <xs:attributeGroup name="glosslist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of GlossEntrys. -->
+ <xs:element name="glosslist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glosslist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosslist.element -->
+ <xs:attributeGroup name="glosslist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosslist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosslist.attlist -->
+ <!-- end of glosslist.module -->
+ <xs:attributeGroup name="glossentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Glossary or GlossList. -->
+ <xs:element name="glossentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="glossterm"/>
+ <xs:element minOccurs="0" ref="acronym"/>
+ <xs:element minOccurs="0" ref="abbrev"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:choice>
+ <xs:element ref="glosssee"/>
+ <xs:element maxOccurs="unbounded" ref="glossdef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossentry.element -->
+ <!--
+ SortAs: String by which the GlossEntry is to be sorted
+ (alphabetized) in lieu of its proper content
+ -->
+ <xs:attributeGroup name="glossentry.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossentry.attlist -->
+ <!-- end of glossentry.module -->
+ <!-- GlossTerm (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="glossdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A definition in a GlossEntry. -->
+ <xs:element name="glossdef">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="glossdef.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="glossseealso"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdef.element -->
+ <!-- Subject: List of subjects; keywords for the definition -->
+ <xs:attributeGroup name="glossdef.attlist">
+ <xs:attribute name="subject"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdef.attlist -->
+ <!-- end of glossdef.module -->
+ <xs:attributeGroup name="glosssee.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glosssee">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glosssee.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosssee.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSee
+ -->
+ <xs:attributeGroup name="glosssee.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosssee.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosssee.attlist -->
+ <!-- end of glosssee.module -->
+ <xs:attributeGroup name="glossseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glossseealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossseealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossseealso.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSeeAlso
+ -->
+ <xs:attributeGroup name="glossseealso.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossseealso.attlist -->
+ <!-- end of glossseealso.module -->
+ <!-- end of glossentry.content.module -->
+ <!-- ItemizedList and OrderedList ..... -->
+ <xs:attributeGroup name="itemizedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="itemizedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itemizedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itemizedlist.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="itemizedlist.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itemizedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itemizedlist.attlist -->
+ <!-- end of itemizedlist.module -->
+ <xs:attributeGroup name="orderedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a sequentially incremented label. -->
+ <xs:element name="orderedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="orderedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orderedlist.element -->
+ <!--
+ Numeration: Style of ListItem numbered; default is expected
+ to be Arabic
+ -->
+ <!--
+ InheritNum: Specifies for a nested list that the numbering
+ of ListItems should include the number of the item
+ within which they are nested (e.g., 1a and 1b within 1,
+ rather than a and b)
+ -->
+ <!--
+ Continuation: Where list numbering begins afresh (Restarts,
+ the default) or continues that of the immediately preceding
+ list (Continues)
+ -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <xs:attributeGroup name="orderedlist.attlist">
+ <xs:attribute name="numeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="arabic"/>
+ <xs:enumeration value="upperalpha"/>
+ <xs:enumeration value="loweralpha"/>
+ <xs:enumeration value="upperroman"/>
+ <xs:enumeration value="lowerroman"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="inheritnum" default="ignore">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inherit"/>
+ <xs:enumeration value="ignore"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation" default="restarts">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orderedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orderedlist.attlist -->
+ <!-- end of orderedlist.module -->
+ <xs:attributeGroup name="listitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the elements of a list item. -->
+ <xs:element name="listitem">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="listitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of listitem.element -->
+ <!--
+ Override: Indicates the mark to be used for this ListItem
+ instead of the default mark or the mark specified by
+ the Mark attribute on the enclosing ItemizedList
+ -->
+ <xs:attributeGroup name="listitem.attlist">
+ <xs:attribute name="override"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="listitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of listitem.attlist -->
+ <!-- end of listitem.module -->
+ <!-- SegmentedList .................... -->
+ <xs:attributeGroup name="segmentedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A segmented list, a list of sets of elements. -->
+ <xs:element name="segmentedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="segtitle"/>
+ <xs:element maxOccurs="unbounded" ref="seglistitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="segmentedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segmentedlist.element -->
+ <xs:attributeGroup name="segmentedlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segmentedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segmentedlist.attlist -->
+ <!-- end of segmentedlist.module -->
+ <xs:attributeGroup name="segtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an element of a list item in a segmented list. -->
+ <xs:element name="segtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="segtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segtitle.element -->
+ <xs:attributeGroup name="segtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segtitle.attlist -->
+ <!-- end of segtitle.module -->
+ <xs:attributeGroup name="seglistitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list item in a segmented list. -->
+ <xs:element name="seglistitem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="seg"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="seglistitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seglistitem.element -->
+ <xs:attributeGroup name="seglistitem.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seglistitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seglistitem.attlist -->
+ <!-- end of seglistitem.module -->
+ <xs:attributeGroup name="seg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a list item in a segmented list. -->
+ <xs:element name="seg">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="seg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seg.element -->
+ <xs:attributeGroup name="seg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seg.attlist -->
+ <!-- end of seg.module -->
+ <!-- end of segmentedlist.content.module -->
+ <!-- SimpleList ....................... -->
+ <xs:attributeGroup name="simplelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An undecorated list of single words or short phrases. -->
+ <xs:element name="simplelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="member"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplelist.element -->
+ <!-- Columns: The number of columns the array should contain -->
+ <!--
+ Type: How the Members of the SimpleList should be
+ formatted: Inline (members separated with commas etc.
+ inline), Vert (top to bottom in n Columns), or Horiz (in
+ the direction of text flow) in n Columns. If Column
+ is 1 or implied, Type=Vert and Type=Horiz give the same
+ results.
+ -->
+ <xs:attributeGroup name="simplelist.attlist">
+ <xs:attribute name="columns"/>
+ <xs:attribute name="type" default="vert">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inline"/>
+ <xs:enumeration value="vert"/>
+ <xs:enumeration value="horiz"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplelist.attlist -->
+ <!-- end of simplelist.module -->
+ <xs:attributeGroup name="member.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a simple list. -->
+ <xs:element name="member">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="member.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of member.element -->
+ <xs:attributeGroup name="member.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="member.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of member.attlist -->
+ <!-- end of member.module -->
+ <!-- end of simplelist.content.module -->
+ <!-- VariableList ..................... -->
+ <xs:attributeGroup name="variablelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is composed of a set of one or more terms and an associated description. -->
+ <xs:element name="variablelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="varlistentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="variablelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of variablelist.element -->
+ <!--
+ TermLength: Length beyond which the presentation engine
+ may consider the Term too long and select an alternate
+ presentation of the Term and, or, its associated ListItem.
+ -->
+ <xs:attributeGroup name="variablelist.attlist">
+ <xs:attribute name="termlength"/>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="variablelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of variablelist.attlist -->
+ <!-- end of variablelist.module -->
+ <xs:attributeGroup name="varlistentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of terms and the associated description in a variable list. -->
+ <xs:element name="varlistentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="term"/>
+ <xs:element ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="varlistentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varlistentry.element -->
+ <xs:attributeGroup name="varlistentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varlistentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varlistentry.attlist -->
+ <!-- end of varlistentry.module -->
+ <xs:attributeGroup name="term.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The word or phrase being defined or described in a variable list. -->
+ <xs:element name="term">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="term.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of term.element -->
+ <xs:attributeGroup name="term.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="term.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of term.attlist -->
+ <!-- end of term.module -->
+ <!-- ListItem (defined above) -->
+ <!-- end of variablelist.content.module -->
+ <!-- CalloutList ...................... -->
+ <xs:attributeGroup name="calloutlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of Callouts. -->
+ <xs:element name="calloutlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="callout"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="calloutlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of calloutlist.element -->
+ <xs:attributeGroup name="calloutlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="calloutlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of calloutlist.attlist -->
+ <!-- end of calloutlist.module -->
+ <xs:attributeGroup name="callout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A &ldquo;called out&rdquo; description of a marked Area. -->
+ <xs:element name="callout">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="callout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of callout.element -->
+ <!--
+ AreaRefs: IDs of one or more Areas or AreaSets described
+ by this Callout
+ -->
+ <xs:attributeGroup name="callout.attlist">
+ <xs:attribute name="arearefs" use="required" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="callout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of callout.attlist -->
+ <!-- end of callout.module -->
+ <!-- end of calloutlist.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Objects .............................................................. -->
+ <!-- Examples etc. .................... -->
+ <xs:attributeGroup name="example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal example, with a title. -->
+ <xs:element name="example" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example.element -->
+ <xs:attributeGroup name="example.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example.attlist -->
+ <!-- end of example.module -->
+ <xs:attributeGroup name="informalexample.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed example without a title. -->
+ <xs:element name="informalexample" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalexample.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalexample.element -->
+ <xs:attributeGroup name="informalexample.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalexample.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalexample.attlist -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="programlistingco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A program listing with associated areas used in callouts. -->
+ <xs:element name="programlistingco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="programlisting"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="programlistingco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlistingco.element -->
+ <xs:attributeGroup name="programlistingco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlistingco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlistingco.attlist -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="areaspec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of regions in a graphic or code example. -->
+ <xs:element name="areaspec">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="area"/>
+ <xs:element ref="areaset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="areaspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaspec.element -->
+ <!--
+ Units: global unit of measure in which coordinates in
+ this spec are expressed:
+
+ - CALSPair "x1,y1 x2,y2": lower-left and upper-right
+ coordinates in a rectangle describing repro area in which
+ graphic is placed, where X and Y dimensions are each some
+ number 0..10000 (taken from CALS graphic attributes)
+
+ - LineColumn "line column": line number and column number
+ at which to start callout text in "linespecific" content
+
+ - LineRange "startline endline": whole lines from startline
+ to endline in "linespecific" content
+
+ - LineColumnPair "line1 col1 line2 col2": starting and ending
+ points of area in "linespecific" content that starts at
+ first position and ends at second position (including the
+ beginnings of any intervening lines)
+
+ - Other: directive to look at value of OtherUnits attribute
+ to get implementation-specific keyword
+
+ The default is implementation-specific; usually dependent on
+ the parent element (GraphicCO gets CALSPair, ProgramListingCO
+ and ScreenCO get LineColumn)
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="areaspec.attlist">
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="areaspec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaspec.attlist -->
+ <!-- end of areaspec.module -->
+ <xs:attributeGroup name="area.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A region defined for a Callout in a graphic or code example. -->
+ <xs:element name="area">
+ <xs:complexType>
+ <xs:attributeGroup ref="area.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of area.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="area.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="area.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of area.attlist -->
+ <!-- end of area.module -->
+ <xs:attributeGroup name="areaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of related areas in a graphic or code example. -->
+ <xs:element name="areaset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="area"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="areaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaset.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSpec
+ -->
+ <xs:attributeGroup name="areaset.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="areaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaset.attlist -->
+ <!-- end of areaset.module -->
+ <!-- end of areaspec.content.module -->
+ <xs:attributeGroup name="programlisting.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A literal listing of all or part of a program. -->
+ <xs:element name="programlisting" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="programlisting.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlisting.element -->
+ <xs:attributeGroup name="programlisting.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlisting.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlisting.attlist -->
+ <!-- end of programlisting.module -->
+ <xs:attributeGroup name="literallayout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A block of text in which line breaks and white space are to be reproduced faithfully. -->
+ <xs:element name="literallayout" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="literallayout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literallayout.element -->
+ <xs:attributeGroup name="literallayout.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attribute name="class" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="monospaced"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literallayout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literallayout.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of literallayout.module -->
+ <xs:attributeGroup name="screenco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A screen with associated areas used in callouts. -->
+ <xs:element name="screenco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="screen"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenco.element -->
+ <xs:attributeGroup name="screenco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenco.attlist -->
+ <!-- AreaSpec (defined above) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of screenco.module -->
+ <xs:attributeGroup name="screen.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="screen" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="screen.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screen.element -->
+ <xs:attributeGroup name="screen.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screen.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screen.attlist -->
+ <!-- end of screen.module -->
+ <xs:attributeGroup name="screenshot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A representation of what the user sees or might see on a computer screen. -->
+ <xs:element name="screenshot" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="screeninfo"/>
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="graphicco"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="mediaobjectco"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenshot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenshot.element -->
+ <xs:attributeGroup name="screenshot.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenshot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenshot.attlist -->
+ <!-- end of screenshot.module -->
+ <xs:attributeGroup name="screeninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about how a screen shot was produced. -->
+ <xs:element name="screeninfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="screeninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screeninfo.element -->
+ <xs:attributeGroup name="screeninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screeninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screeninfo.attlist -->
+ <!-- end of screeninfo.module -->
+ <!-- end of screenshot.content.module -->
+ <!-- Figures etc. ..................... -->
+ <xs:attributeGroup name="figure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal figure, generally an illustration, with a title. -->
+ <xs:element name="figure" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="figure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of figure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="figure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="figure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of figure.attlist -->
+ <!-- end of figure.module -->
+ <xs:attributeGroup name="informalfigure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A untitled figure. -->
+ <xs:element name="informalfigure" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalfigure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalfigure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="informalfigure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalfigure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalfigure.attlist -->
+ <!-- end of informalfigure.module -->
+ <xs:attributeGroup name="graphicco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphic that contains callout areas. -->
+ <xs:element name="graphicco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="graphic"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="graphicco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphicco.element -->
+ <xs:attributeGroup name="graphicco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphicco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphicco.attlist -->
+ <!-- AreaSpec (defined above in Examples) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of graphicco.module -->
+ <!--
+ Graphical data can be the content of Graphic, or you can reference
+ an external file either as an entity (Entitref) or a filename
+ (Fileref).
+ -->
+ <xs:attributeGroup name="graphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed graphical object (not an inline). -->
+ <xs:element name="graphic" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="graphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphic.element -->
+ <xs:attributeGroup name="graphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphic.attlist -->
+ <!-- end of graphic.module -->
+ <xs:attributeGroup name="inlinegraphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An object containing or pointing to graphical data that will be rendered inline. -->
+ <xs:element name="inlinegraphic" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="inlinegraphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinegraphic.element -->
+ <xs:attributeGroup name="inlinegraphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinegraphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinegraphic.attlist -->
+ <!-- end of inlinegraphic.module -->
+ <xs:attributeGroup name="mediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed media object (video, audio, image, etc.). -->
+ <xs:element name="mediaobject" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ <xs:element minOccurs="0" ref="caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobject.element -->
+ <xs:attributeGroup name="mediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobject.attlist -->
+ <!-- end of mediaobject.module -->
+ <xs:attributeGroup name="inlinemediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline media object (video, audio, image, and so on). -->
+ <xs:element name="inlinemediaobject" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="inlinemediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinemediaobject.element -->
+ <xs:attributeGroup name="inlinemediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinemediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinemediaobject.attlist -->
+ <!-- end of inlinemediaobject.module -->
+ <xs:attributeGroup name="videoobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for video data and its associated meta-information. -->
+ <xs:element name="videoobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="videodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="videoobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videoobject.element -->
+ <xs:attributeGroup name="videoobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videoobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videoobject.attlist -->
+ <!-- end of videoobject.module -->
+ <xs:attributeGroup name="audioobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for audio data and its associated meta-information. -->
+ <xs:element name="audioobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="audiodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="audioobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audioobject.element -->
+ <xs:attributeGroup name="audioobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audioobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audioobject.attlist -->
+ <!-- end of audioobject.module -->
+ <xs:attributeGroup name="imageobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for image data and its associated meta-information. -->
+ <xs:element name="imageobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imagedata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobject.element -->
+ <xs:attributeGroup name="imageobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobject.attlist -->
+ <!-- end of imageobject.module -->
+ <xs:attributeGroup name="textobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a text description of an object and its associated meta-information. -->
+ <xs:element name="textobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:choice>
+ <xs:element ref="phrase"/>
+ <xs:element ref="textdata"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="textobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textobject.element -->
+ <xs:attributeGroup name="textobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textobject.attlist -->
+ <!-- end of textobject.module -->
+ <xs:attributeGroup name="objectinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an object. -->
+ <xs:element name="objectinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="objectinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of objectinfo.element -->
+ <xs:attributeGroup name="objectinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="objectinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of objectinfo.attlist -->
+ <!-- end of objectinfo.module -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the object data
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the object data
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the image -->
+ <xs:attributeGroup name="objectdata.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="videodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external video data. -->
+ <xs:element name="videodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="videodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videodata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="videodata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videodata.attlist -->
+ <!-- end of videodata.module -->
+ <xs:attributeGroup name="audiodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external audio data. -->
+ <xs:element name="audiodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="audiodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audiodata.element -->
+ <xs:attributeGroup name="audiodata.attlist">
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audiodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audiodata.attlist -->
+ <!-- end of audiodata.module -->
+ <xs:attributeGroup name="imagedata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external image data. -->
+ <xs:element name="imagedata">
+ <xs:complexType>
+ <xs:attributeGroup ref="imagedata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imagedata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="imagedata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imagedata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imagedata.attlist -->
+ <!-- end of imagedata.module -->
+ <xs:attributeGroup name="textdata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external text data. -->
+ <xs:element name="textdata">
+ <xs:complexType>
+ <xs:attributeGroup ref="textdata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textdata.element -->
+ <xs:attributeGroup name="textdata.attlist">
+ <xs:attribute name="encoding"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textdata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textdata.attlist -->
+ <!-- end of textdata.module -->
+ <xs:attributeGroup name="mediaobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A media object that contains callouts. -->
+ <xs:element name="mediaobjectco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imageobjectco"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="imageobjectco"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobjectco.element -->
+ <xs:attributeGroup name="mediaobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobjectco.attlist -->
+ <!-- end of mediaobjectco.module -->
+ <xs:attributeGroup name="imageobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an image object with callouts. -->
+ <xs:element name="imageobjectco" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="imageobject"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobjectco.element -->
+ <xs:attributeGroup name="imageobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobjectco.attlist -->
+ <!-- end of imageobjectco.module -->
+ <!-- end of mediaobject.content.module -->
+ <!-- Equations ........................ -->
+ <!-- This PE provides a mechanism for replacing equation content, -->
+ <!-- perhaps adding a new or different model (e.g., MathML) -->
+ <xs:group name="equation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="inlineequation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="inlinemediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="equation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation. -->
+ <xs:element name="equation" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element ref="informalequation"/>
+ <xs:group ref="equation.content"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="equation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of equation.element -->
+ <xs:attributeGroup name="equation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="equation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of equation.attlist -->
+ <!-- end of equation.module -->
+ <xs:attributeGroup name="informalequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation without a title. -->
+ <xs:element name="informalequation" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="equation.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalequation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalequation.element -->
+ <xs:attributeGroup name="informalequation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalequation.attlist -->
+ <!-- end of informalequation.module -->
+ <xs:attributeGroup name="inlineequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical equation or expression occurring inline. -->
+ <xs:element name="inlineequation" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="inlineequation.content">
+ <xs:attributeGroup ref="inlineequation.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlineequation.element -->
+ <xs:attributeGroup name="inlineequation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlineequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlineequation.attlist -->
+ <!-- end of inlineequation.module -->
+ <xs:attributeGroup name="alt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text representation for a graphical element. -->
+ <xs:element name="alt">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="alt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of alt.element -->
+ <xs:attributeGroup name="alt.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="alt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of alt.attlist -->
+ <!-- end of alt.module -->
+ <xs:attributeGroup name="mathphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup. -->
+ <xs:element name="mathphrase">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="mathphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mathphrase.element -->
+ <xs:attributeGroup name="mathphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mathphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mathphrase.attlist -->
+ <!-- end of mathphrase.module -->
+ <!-- Tables ........................... -->
+ <!-- Choose a table model. CALS or OASIS XML Exchange -->
+ <!-- Do we allow the HTML table model as well? -->
+ <!-- ====================================================== -->
+ <!--
+ xhtmltbl.mod defines HTML tables and sets parameter
+ entities so that, when the CALS table module is read,
+ we end up allowing any table to be CALS or HTML.
+ i.e. This include must come first!
+ -->
+ <!-- ====================================================== -->
+ <!-- end of allow.html.tables -->
+ <!-- Add label and role attributes to table and informaltable -->
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <!-- Content model for Table. -->
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <!-- Reference CALS Table Model -->
+ <!-- end of table.module -->
+ <!--
+ Note that InformalTable is dependent on some of the entity
+ declarations that customize Table.
+ -->
+ <!-- the following entity may have been declared by the XHTML table module -->
+ <!-- doc:A table without a title. -->
+ <xs:element name="informaltable" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="informal.tbl.table.mdl"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informaltable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informaltable.element -->
+ <!--
+ Frame, Colsep, and Rowsep must be repeated because
+ they are not in entities in the table module.
+ -->
+ <!--
+ includes TabStyle, ToCentry, ShortEntry,
+ Orient, PgWide
+ -->
+ <!-- includes Label -->
+ <!-- includes common attributes -->
+ <xs:attributeGroup name="informaltable.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno.attvals"/>
+ <xs:attribute name="rowsep" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="common.table.attribs"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ </xs:attributeGroup>
+ <!-- end of informaltable.attlist -->
+ <!-- end of informaltable.module -->
+ <xs:attributeGroup name="caption.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A caption. -->
+ <xs:element name="caption">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="textobject.mix"/>
+ <xs:attributeGroup ref="caption.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caption.element -->
+ <!-- attrs comes from HTML tables ... -->
+ <!-- common.attrib, but without ID because ID is in attrs -->
+ <xs:attributeGroup name="caption.attlist.content">
+ <xs:attributeGroup ref="caption.role.attrib"/>
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="caption.attlist">
+ <xs:attributeGroup ref="caption.attlist.content"/>
+ </xs:attributeGroup>
+ <!-- end of caption.attlist -->
+ <!-- end of caption.module -->
+ <!-- ...................................................................... -->
+ <!-- Synopses ............................................................. -->
+ <!-- Synopsis ......................... -->
+ <xs:attributeGroup name="synopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="synopsis" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopsis.element -->
+ <xs:attributeGroup name="synopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopsis.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of synopsis.module -->
+ <!-- CmdSynopsis ...................... -->
+ <xs:attributeGroup name="cmdsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a software command. -->
+ <xs:element name="cmdsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="command"/>
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="synopfragment"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="cmdsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cmdsynopsis.element -->
+ <!--
+ Sepchar: Character that should separate command and all
+ top-level arguments; alternate value might be e.g., &Delta;
+ -->
+ <xs:attributeGroup name="cmdsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="sepchar" default=" "/>
+ <xs:attribute name="cmdlength"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cmdsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of cmdsynopsis.attlist -->
+ <!-- end of cmdsynopsis.module -->
+ <xs:attributeGroup name="arg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An argument in a CmdSynopsis. -->
+ <xs:element name="arg">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arg.element -->
+ <!--
+ Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg)
+ -->
+ <!--
+ Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...)
+ -->
+ <xs:attributeGroup name="arg.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of arg.attlist -->
+ <!-- end of arg.module -->
+ <xs:attributeGroup name="group.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A group of elements in a CmdSynopsis. -->
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="group.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of group.element -->
+ <!--
+ Choice: Whether Group must be supplied: Opt (optional to
+ supply, e.g. [g1|g2|g3]; the default), Req (required to
+ supply, e.g. {g1|g2|g3}), Plain (required to supply,
+ e.g. g1|g2|g3), OptMult (can supply zero or more, e.g.
+ [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
+ {{g1|g2|g3}})
+ -->
+ <!--
+ Rep: whether Group is repeatable: Norepeat (e.g. group
+ without ellipsis; the default), or Repeat (e.g. group...)
+ -->
+ <xs:attributeGroup name="group.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="group.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of group.attlist -->
+ <!-- end of group.module -->
+ <!-- Synopsis break -->
+ <xs:attributeGroup name="sbr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An explicit line break in a command synopsis. -->
+ <xs:element name="sbr">
+ <xs:complexType>
+ <xs:attributeGroup ref="sbr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sbr.element -->
+ <xs:attributeGroup name="sbr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sbr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sbr.attlist -->
+ <!-- end of sbr.module -->
+ <xs:attributeGroup name="synopfragmentref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference to a fragment of a command synopsis. -->
+ <xs:element name="synopfragmentref">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="synopfragmentref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragmentref.element -->
+ <!--
+ to SynopFragment of complex synopsis
+ material for separate referencing
+ -->
+ <xs:attributeGroup name="synopfragmentref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopfragmentref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragmentref.attlist -->
+ <!-- end of synopfragmentref.module -->
+ <xs:attributeGroup name="synopfragment.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a CmdSynopsis broken out from the main body of the synopsis. -->
+ <xs:element name="synopfragment">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopfragment.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragment.element -->
+ <xs:attributeGroup name="synopfragment.attlist">
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="synopfragment.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragment.attlist -->
+ <!-- end of synopfragment.module -->
+ <!-- Command (defined in the Inlines section, below) -->
+ <!-- Option (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- end of cmdsynopsis.content.module -->
+ <!-- FuncSynopsis ..................... -->
+ <xs:attributeGroup name="funcsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a function definition. -->
+ <xs:element name="funcsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="funcsynopsisinfo"/>
+ <xs:element ref="funcprototype"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsis.element -->
+ <xs:attributeGroup name="funcsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsis.attlist -->
+ <!-- end of funcsynopsis.module -->
+ <xs:attributeGroup name="funcsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the FuncDefs of a FuncSynopsis. -->
+ <xs:element name="funcsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsisinfo.element -->
+ <xs:attributeGroup name="funcsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsisinfo.attlist -->
+ <!-- end of funcsynopsisinfo.module -->
+ <xs:attributeGroup name="funcprototype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prototype of a function. -->
+ <xs:element name="funcprototype">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element ref="funcdef"/>
+ <xs:choice>
+ <xs:element ref="void"/>
+ <xs:element ref="varargs"/>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="paramdef"/>
+ <xs:element minOccurs="0" ref="varargs"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="funcprototype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcprototype.element -->
+ <xs:attributeGroup name="funcprototype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcprototype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcprototype.attlist -->
+ <!-- end of funcprototype.module -->
+ <xs:attributeGroup name="funcdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A function (subroutine) name and its return type. -->
+ <xs:element name="funcdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="function"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcdef.element -->
+ <xs:attributeGroup name="funcdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcdef.attlist -->
+ <!-- end of funcdef.module -->
+ <xs:attributeGroup name="void.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating that the function in question takes no arguments. -->
+ <xs:element name="void">
+ <xs:complexType>
+ <xs:attributeGroup ref="void.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of void.element -->
+ <xs:attributeGroup name="void.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="void.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of void.attlist -->
+ <!-- end of void.module -->
+ <xs:attributeGroup name="varargs.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating a variable number of arguments. -->
+ <xs:element name="varargs">
+ <xs:complexType>
+ <xs:attributeGroup ref="varargs.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varargs.element -->
+ <xs:attributeGroup name="varargs.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varargs.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varargs.attlist -->
+ <!-- end of varargs.module -->
+ <!--
+ Processing assumes that only one Parameter will appear in a
+ ParamDef, and that FuncParams will be used at most once, for
+ providing information on the "inner parameters" for parameters that
+ are pointers to functions.
+ -->
+ <xs:attributeGroup name="paramdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a function parameter in a programming language. -->
+ <xs:element name="paramdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="initializer"/>
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="parameter"/>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:attributeGroup ref="paramdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of paramdef.element -->
+ <xs:attributeGroup name="paramdef.attlist">
+ <xs:attribute name="choice">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="paramdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of paramdef.attlist -->
+ <!-- end of paramdef.module -->
+ <xs:attributeGroup name="funcparams.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters for a function referenced through a function pointer in a synopsis. -->
+ <xs:element name="funcparams">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="funcparams.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcparams.element -->
+ <xs:attributeGroup name="funcparams.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcparams.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcparams.attlist -->
+ <!-- end of funcparams.module -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- Function (defined in the Inlines section, below) -->
+ <!-- Parameter (defined in the Inlines section, below) -->
+ <!-- end of funcsynopsis.content.module -->
+ <!-- ClassSynopsis ..................... -->
+ <xs:attributeGroup name="classsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a class definition. -->
+ <xs:element name="classsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="ooclass"/>
+ <xs:element ref="oointerface"/>
+ <xs:element ref="ooexception"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="classsynopsisinfo"/>
+ <xs:element ref="fieldsynopsis"/>
+ <xs:element ref="method.synop.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="classsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsis.element -->
+ <xs:attributeGroup name="classsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attribute name="class" default="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="class"/>
+ <xs:enumeration value="interface"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsis.attlist -->
+ <!-- end of classsynopsis.module -->
+ <xs:attributeGroup name="classsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the contents of a ClassSynopsis. -->
+ <xs:element name="classsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="classsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsisinfo.element -->
+ <xs:attributeGroup name="classsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsisinfo.attlist -->
+ <!-- end of classsynopsisinfo.module -->
+ <xs:attributeGroup name="ooclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A class in an object-oriented programming language. -->
+ <xs:element name="ooclass" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="classname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooclass.element -->
+ <xs:attributeGroup name="ooclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooclass.attlist -->
+ <!-- end of ooclass.module -->
+ <xs:attributeGroup name="oointerface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An interface in an object-oriented programming language. -->
+ <xs:element name="oointerface" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="interfacename"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="oointerface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of oointerface.element -->
+ <xs:attributeGroup name="oointerface.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="oointerface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of oointerface.attlist -->
+ <!-- end of oointerface.module -->
+ <xs:attributeGroup name="ooexception.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An exception in an object-oriented programming language. -->
+ <xs:element name="ooexception" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooexception.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooexception.element -->
+ <xs:attributeGroup name="ooexception.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooexception.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooexception.attlist -->
+ <!-- end of ooexception.module -->
+ <xs:attributeGroup name="modifier.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Modifiers in a synopsis. -->
+ <xs:element name="modifier">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="modifier.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modifier.element -->
+ <xs:attributeGroup name="modifier.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modifier.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modifier.attlist -->
+ <!-- end of modifier.module -->
+ <xs:attributeGroup name="interfacename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an interface. -->
+ <xs:element name="interfacename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="interfacename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interfacename.element -->
+ <xs:attributeGroup name="interfacename.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interfacename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interfacename.attlist -->
+ <!-- end of interfacename.module -->
+ <xs:attributeGroup name="exceptionname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an exception. -->
+ <xs:element name="exceptionname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="exceptionname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of exceptionname.element -->
+ <xs:attributeGroup name="exceptionname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="exceptionname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of exceptionname.attlist -->
+ <!-- end of exceptionname.module -->
+ <xs:attributeGroup name="fieldsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a field in a class definition. -->
+ <xs:element name="fieldsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:element ref="varname"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="fieldsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fieldsynopsis.element -->
+ <xs:attributeGroup name="fieldsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fieldsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fieldsynopsis.attlist -->
+ <!-- end of fieldsynopsis.module -->
+ <xs:attributeGroup name="initializer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initializer for a FieldSynopsis. -->
+ <xs:element name="initializer">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="initializer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of initializer.element -->
+ <xs:attributeGroup name="initializer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="initializer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of initializer.attlist -->
+ <!-- end of initializer.module -->
+ <xs:attributeGroup name="constructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a constructor. -->
+ <xs:element name="constructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="constructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constructorsynopsis.element -->
+ <xs:attributeGroup name="constructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constructorsynopsis.attlist -->
+ <!-- end of constructorsynopsis.module -->
+ <xs:attributeGroup name="destructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a destructor. -->
+ <xs:element name="destructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="destructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of destructorsynopsis.element -->
+ <xs:attributeGroup name="destructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="destructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of destructorsynopsis.attlist -->
+ <!-- end of destructorsynopsis.module -->
+ <xs:attributeGroup name="methodsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a method. -->
+ <xs:element name="methodsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="type"/>
+ <xs:element ref="void"/>
+ </xs:choice>
+ <xs:element ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodsynopsis.element -->
+ <xs:attributeGroup name="methodsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodsynopsis.attlist -->
+ <!-- end of methodsynopsis.module -->
+ <xs:attributeGroup name="methodname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a method. -->
+ <xs:element name="methodname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="methodname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodname.element -->
+ <xs:attributeGroup name="methodname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodname.attlist -->
+ <!-- end of methodname.module -->
+ <xs:attributeGroup name="methodparam.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters to a method. -->
+ <xs:element name="methodparam">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="parameter"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodparam.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodparam.element -->
+ <xs:attributeGroup name="methodparam.attlist">
+ <xs:attribute name="choice" default="req">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodparam.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodparam.attlist -->
+ <!-- end of methodparam.module -->
+ <!-- end of classsynopsis.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Document information entities and elements ........................... -->
+ <!--
+ The document information elements include some elements that are
+ currently used only in the document hierarchy module. They are
+ defined here so that they will be available for use in customized
+ document hierarchies.
+ -->
+ <!-- .................................. -->
+ <!-- Ackno ............................ -->
+ <xs:attributeGroup name="ackno.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Acknowledgements in an Article. -->
+ <xs:element name="ackno">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="ackno.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ackno.element -->
+ <xs:attributeGroup name="ackno.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ackno.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ackno.attlist -->
+ <!-- end of ackno.module -->
+ <!-- Address .......................... -->
+ <xs:attributeGroup name="address.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A real-world address, generally a postal address. -->
+ <xs:element name="address" substitutionGroup="informal.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="street"/>
+ <xs:element ref="pob"/>
+ <xs:element ref="postcode"/>
+ <xs:element ref="city"/>
+ <xs:element ref="state"/>
+ <xs:element ref="country"/>
+ <xs:element ref="phone"/>
+ <xs:element ref="fax"/>
+ <xs:element ref="email"/>
+ <xs:element ref="otheraddr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="address.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of address.element -->
+ <xs:attributeGroup name="address.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="address.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of address.attlist -->
+ <!-- end of address.module -->
+ <xs:attributeGroup name="street.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A street address in an address. -->
+ <xs:element name="street">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="street.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of street.element -->
+ <xs:attributeGroup name="street.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="street.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of street.attlist -->
+ <!-- end of street.module -->
+ <xs:attributeGroup name="pob.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A post office box in an address. -->
+ <xs:element name="pob">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pob.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pob.element -->
+ <xs:attributeGroup name="pob.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pob.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pob.attlist -->
+ <!-- end of pob.module -->
+ <xs:attributeGroup name="postcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A postal code in an address. -->
+ <xs:element name="postcode">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="postcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of postcode.element -->
+ <xs:attributeGroup name="postcode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="postcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of postcode.attlist -->
+ <!-- end of postcode.module -->
+ <xs:attributeGroup name="city.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a city in an address. -->
+ <xs:element name="city">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="city.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of city.element -->
+ <xs:attributeGroup name="city.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="city.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of city.attlist -->
+ <!-- end of city.module -->
+ <xs:attributeGroup name="state.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A state or province in an address. -->
+ <xs:element name="state">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="state.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of state.element -->
+ <xs:attributeGroup name="state.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="state.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of state.attlist -->
+ <!-- end of state.module -->
+ <xs:attributeGroup name="country.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a country. -->
+ <xs:element name="country">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="country.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of country.element -->
+ <xs:attributeGroup name="country.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="country.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of country.attlist -->
+ <!-- end of country.module -->
+ <xs:attributeGroup name="phone.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A telephone number. -->
+ <xs:element name="phone">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="phone.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phone.element -->
+ <xs:attributeGroup name="phone.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phone.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phone.attlist -->
+ <!-- end of phone.module -->
+ <xs:attributeGroup name="fax.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fax number. -->
+ <xs:element name="fax">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="fax.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fax.element -->
+ <xs:attributeGroup name="fax.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fax.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fax.attlist -->
+ <!-- end of fax.module -->
+ <!-- Email (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="otheraddr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Uncategorized information in address. -->
+ <xs:element name="otheraddr">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="otheraddr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of otheraddr.element -->
+ <xs:attributeGroup name="otheraddr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="otheraddr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of otheraddr.attlist -->
+ <!-- end of otheraddr.module -->
+ <!-- end of address.content.module -->
+ <!-- Affiliation ...................... -->
+ <xs:attributeGroup name="affiliation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The institutional affiliation of an individual. -->
+ <xs:element name="affiliation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortaffil"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="jobtitle"/>
+ <xs:element minOccurs="0" ref="orgname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="orgdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="affiliation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of affiliation.element -->
+ <xs:attributeGroup name="affiliation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="affiliation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of affiliation.attlist -->
+ <!-- end of affiliation.module -->
+ <xs:attributeGroup name="shortaffil.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A brief description of an affiliation. -->
+ <xs:element name="shortaffil">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="shortaffil.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortaffil.element -->
+ <xs:attributeGroup name="shortaffil.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortaffil.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortaffil.attlist -->
+ <!-- end of shortaffil.module -->
+ <xs:attributeGroup name="jobtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an individual in an organization. -->
+ <xs:element name="jobtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="jobtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of jobtitle.element -->
+ <xs:attributeGroup name="jobtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="jobtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of jobtitle.attlist -->
+ <!-- end of jobtitle.module -->
+ <!-- OrgName (defined elsewhere in this section) -->
+ <xs:attributeGroup name="orgdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division of an organization. -->
+ <xs:element name="orgdiv">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgdiv.element -->
+ <xs:attributeGroup name="orgdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orgdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgdiv.attlist -->
+ <!-- end of orgdiv.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of affiliation.content.module -->
+ <!-- ArtPageNums ...................... -->
+ <xs:attributeGroup name="artpagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The page numbers of an article as published. -->
+ <xs:element name="artpagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="artpagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of artpagenums.element -->
+ <xs:attributeGroup name="artpagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="artpagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of artpagenums.attlist -->
+ <!-- end of artpagenums.module -->
+ <!-- PersonName -->
+ <xs:attributeGroup name="personname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The personal name of an individual. -->
+ <xs:element name="personname" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ </xs:choice>
+ <xs:attributeGroup ref="personname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personname.element -->
+ <xs:attributeGroup name="personname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personname.attlist -->
+ <!-- end of personname.module -->
+ <!-- Author ........................... -->
+ <xs:attributeGroup name="author.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an individual author. -->
+ <xs:element name="author" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="author.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of author.element -->
+ <xs:attributeGroup name="author.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="author.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of author.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of author.module -->
+ <!-- AuthorGroup ...................... -->
+ <xs:attributeGroup name="authorgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Wrapper for author information when a document has multiple authors or collabarators. -->
+ <xs:element name="authorgroup">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="othercredit"/>
+ </xs:choice>
+ <xs:attributeGroup ref="authorgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorgroup.element -->
+ <xs:attributeGroup name="authorgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorgroup.attlist -->
+ <!-- end of authorgroup.module -->
+ <!-- Author (defined elsewhere in this section) -->
+ <!-- Editor (defined elsewhere in this section) -->
+ <xs:attributeGroup name="collab.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Identifies a collaborator. -->
+ <xs:element name="collab">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="collabname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="affiliation"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="collab.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collab.element -->
+ <xs:attributeGroup name="collab.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collab.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collab.attlist -->
+ <!-- end of collab.module -->
+ <xs:attributeGroup name="collabname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a collaborator. -->
+ <xs:element name="collabname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="collabname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collabname.element -->
+ <xs:attributeGroup name="collabname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collabname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collabname.attlist -->
+ <!-- end of collabname.module -->
+ <!-- Affiliation (defined elsewhere in this section) -->
+ <!-- end of collab.content.module -->
+ <!-- CorpAuthor (defined elsewhere in this section) -->
+ <!-- OtherCredit (defined elsewhere in this section) -->
+ <!-- end of authorgroup.content.module -->
+ <!-- AuthorInitials ................... -->
+ <xs:attributeGroup name="authorinitials.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initials or other short identifier for an author. -->
+ <xs:element name="authorinitials" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="authorinitials.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorinitials.element -->
+ <xs:attributeGroup name="authorinitials.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorinitials.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorinitials.attlist -->
+ <!-- end of authorinitials.module -->
+ <!-- ConfGroup ........................ -->
+ <xs:attributeGroup name="confgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for document meta-information about a conference. -->
+ <xs:element name="confgroup">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="confdates"/>
+ <xs:element ref="conftitle"/>
+ <xs:element ref="confnum"/>
+ <xs:element ref="address"/>
+ <xs:element ref="confsponsor"/>
+ </xs:choice>
+ <xs:attributeGroup ref="confgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confgroup.element -->
+ <xs:attributeGroup name="confgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confgroup.attlist -->
+ <!-- end of confgroup.module -->
+ <xs:attributeGroup name="confdates.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The dates of a conference for which a document was written. -->
+ <xs:element name="confdates">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confdates.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confdates.element -->
+ <xs:attributeGroup name="confdates.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confdates.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confdates.attlist -->
+ <!-- end of confdates.module -->
+ <xs:attributeGroup name="conftitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a conference for which a document was written. -->
+ <xs:element name="conftitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="conftitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of conftitle.element -->
+ <xs:attributeGroup name="conftitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="conftitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of conftitle.attlist -->
+ <!-- end of conftitle.module -->
+ <xs:attributeGroup name="confnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier, frequently numerical, associated with a conference for which a document was written. -->
+ <xs:element name="confnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confnum.element -->
+ <xs:attributeGroup name="confnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confnum.attlist -->
+ <!-- end of confnum.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <xs:attributeGroup name="confsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a conference for which a document was written. -->
+ <xs:element name="confsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confsponsor.element -->
+ <xs:attributeGroup name="confsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confsponsor.attlist -->
+ <!-- end of confsponsor.module -->
+ <!-- end of confgroup.content.module -->
+ <!-- ContractNum ...................... -->
+ <xs:attributeGroup name="contractnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The contract number of a document. -->
+ <xs:element name="contractnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractnum.element -->
+ <xs:attributeGroup name="contractnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractnum.attlist -->
+ <!-- end of contractnum.module -->
+ <!-- ContractSponsor .................. -->
+ <xs:attributeGroup name="contractsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a contract. -->
+ <xs:element name="contractsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractsponsor.element -->
+ <xs:attributeGroup name="contractsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractsponsor.attlist -->
+ <!-- end of contractsponsor.module -->
+ <!-- Copyright ........................ -->
+ <xs:attributeGroup name="copyright.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Copyright information about a document. -->
+ <xs:element name="copyright">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="year"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="holder"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="copyright.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of copyright.element -->
+ <xs:attributeGroup name="copyright.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="copyright.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of copyright.attlist -->
+ <!-- end of copyright.module -->
+ <xs:attributeGroup name="year.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The year of publication of a document. -->
+ <xs:element name="year">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="year.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of year.element -->
+ <xs:attributeGroup name="year.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="year.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of year.attlist -->
+ <!-- end of year.module -->
+ <xs:attributeGroup name="holder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the individual or organization that holds a copyright. -->
+ <xs:element name="holder">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="holder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of holder.element -->
+ <xs:attributeGroup name="holder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="holder.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of holder.attlist -->
+ <!-- end of holder.module -->
+ <!-- end of copyright.content.module -->
+ <!-- CorpAuthor ....................... -->
+ <xs:attributeGroup name="corpauthor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporate author, as opposed to an individual. -->
+ <xs:element name="corpauthor" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpauthor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpauthor.element -->
+ <xs:attributeGroup name="corpauthor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpauthor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpauthor.attlist -->
+ <!-- end of corpauthor.module -->
+ <!-- CorpCredit ...................... -->
+ <xs:attributeGroup name="corpcredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporation or organization credited in a document. -->
+ <xs:element name="corpcredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpcredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpcredit.element -->
+ <xs:attributeGroup name="corpcredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpcredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpcredit.attlist -->
+ <!-- end of corpcredit.module -->
+ <!-- CorpName ......................... -->
+ <!-- doc:The name of a corporation. -->
+ <xs:element name="corpname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpname.element -->
+ <xs:attributeGroup name="corpname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="corpname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpname.attlist -->
+ <!-- end of corpname.module -->
+ <!-- Date ............................. -->
+ <xs:attributeGroup name="date.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication or revision of a document. -->
+ <xs:element name="date">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="date.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of date.element -->
+ <xs:attributeGroup name="date.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="date.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of date.attlist -->
+ <!-- end of date.module -->
+ <!-- Edition .......................... -->
+ <xs:attributeGroup name="edition.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name or number of an edition of a document. -->
+ <xs:element name="edition">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="edition.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of edition.element -->
+ <xs:attributeGroup name="edition.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="edition.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of edition.attlist -->
+ <!-- end of edition.module -->
+ <!-- Editor ........................... -->
+ <xs:attributeGroup name="editor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the editor of a document. -->
+ <xs:element name="editor">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="editor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of editor.element -->
+ <xs:attributeGroup name="editor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="editor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of editor.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of editor.module -->
+ <!-- ISBN ............................. -->
+ <xs:attributeGroup name="isbn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Book Number of a document. -->
+ <xs:element name="isbn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="isbn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of isbn.element -->
+ <xs:attributeGroup name="isbn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="isbn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of isbn.attlist -->
+ <!-- end of isbn.module -->
+ <!-- ISSN ............................. -->
+ <xs:attributeGroup name="issn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Serial Number of a periodical. -->
+ <xs:element name="issn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issn.element -->
+ <xs:attributeGroup name="issn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issn.attlist -->
+ <!-- end of issn.module -->
+ <!-- BiblioId ................. -->
+ <xs:attributeGroup name="biblio.class.attrib">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="uri"/>
+ <xs:enumeration value="doi"/>
+ <xs:enumeration value="isbn"/>
+ <xs:enumeration value="isrn"/>
+ <xs:enumeration value="issn"/>
+ <xs:enumeration value="libraryofcongress"/>
+ <xs:enumeration value="pubnumber"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="biblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier for a document. -->
+ <xs:element name="biblioid">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="biblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioid.element -->
+ <xs:attributeGroup name="biblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioid.attlist -->
+ <!-- end of biblioid.module -->
+ <!-- CiteBiblioId ................. -->
+ <xs:attributeGroup name="citebiblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation of a bibliographic identifier. -->
+ <xs:element name="citebiblioid" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="citebiblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citebiblioid.element -->
+ <xs:attributeGroup name="citebiblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citebiblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citebiblioid.attlist -->
+ <!-- end of citebiblioid.module -->
+ <!-- BiblioSource ................. -->
+ <xs:attributeGroup name="bibliosource.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a document. -->
+ <xs:element name="bibliosource">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliosource.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliosource.element -->
+ <xs:attributeGroup name="bibliosource.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliosource.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliosource.attlist -->
+ <!-- end of bibliosource.module -->
+ <!-- BiblioRelation ................. -->
+ <xs:attributeGroup name="bibliorelation.type.attrib">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="isversionof"/>
+ <xs:enumeration value="hasversion"/>
+ <xs:enumeration value="isreplacedby"/>
+ <xs:enumeration value="replaces"/>
+ <xs:enumeration value="isrequiredby"/>
+ <xs:enumeration value="requires"/>
+ <xs:enumeration value="ispartof"/>
+ <xs:enumeration value="haspart"/>
+ <xs:enumeration value="isreferencedby"/>
+ <xs:enumeration value="references"/>
+ <xs:enumeration value="isformatof"/>
+ <xs:enumeration value="hasformat"/>
+ <xs:enumeration value="othertype"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertype"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="bibliorelation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The relationship of a document to another. -->
+ <xs:element name="bibliorelation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliorelation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliorelation.element -->
+ <xs:attributeGroup name="bibliorelation.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.type.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliorelation.attlist -->
+ <!-- end of bibliorelation.module -->
+ <!-- BiblioCoverage ................. -->
+ <xs:attributeGroup name="bibliocoverage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The spatial or temporal coverage of a document. -->
+ <xs:element name="bibliocoverage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliocoverage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliocoverage.element -->
+ <xs:attributeGroup name="bibliocoverage.attlist">
+ <xs:attribute name="spatial">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmipoint"/>
+ <xs:enumeration value="iso3166"/>
+ <xs:enumeration value="dcmibox"/>
+ <xs:enumeration value="tgn"/>
+ <xs:enumeration value="otherspatial"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherspatial"/>
+ <xs:attribute name="temporal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmiperiod"/>
+ <xs:enumeration value="w3c-dtf"/>
+ <xs:enumeration value="othertemporal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertemporal"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliocoverage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliocoverage.attlist -->
+ <!-- end of bibliocoverage.module -->
+ <!-- InvPartNumber .................... -->
+ <xs:attributeGroup name="invpartnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inventory part number. -->
+ <xs:element name="invpartnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="invpartnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of invpartnumber.element -->
+ <xs:attributeGroup name="invpartnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="invpartnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of invpartnumber.attlist -->
+ <!-- end of invpartnumber.module -->
+ <!-- IssueNum ......................... -->
+ <xs:attributeGroup name="issuenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The number of an issue of a journal. -->
+ <xs:element name="issuenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issuenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issuenum.element -->
+ <xs:attributeGroup name="issuenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issuenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issuenum.attlist -->
+ <!-- end of issuenum.module -->
+ <!-- LegalNotice ...................... -->
+ <xs:attributeGroup name="legalnotice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A statement of legal obligations or requirements. -->
+ <xs:element name="legalnotice">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="legalnotice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of legalnotice.element -->
+ <xs:attributeGroup name="legalnotice.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="legalnotice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of legalnotice.attlist -->
+ <!-- end of legalnotice.module -->
+ <!-- ModeSpec ......................... -->
+ <xs:attributeGroup name="modespec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Application-specific information necessary for the completion of an OLink. -->
+ <xs:element name="modespec" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="modespec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modespec.element -->
+ <!--
+ Application: Type of action required for completion
+ of the links to which the ModeSpec is relevant (e.g.,
+ retrieval query)
+ -->
+ <xs:attributeGroup name="modespec.attlist">
+ <xs:attribute name="application" type="notation.class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modespec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modespec.attlist -->
+ <!-- end of modespec.module -->
+ <!-- OrgName .......................... -->
+ <xs:attributeGroup name="orgname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an organization other than a corporation. -->
+ <xs:element name="orgname" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgname.element -->
+ <xs:attributeGroup name="orgname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="corporation"/>
+ <xs:enumeration value="nonprofit"/>
+ <xs:enumeration value="consortium"/>
+ <xs:enumeration value="informal"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ <xs:attributeGroup ref="orgname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgname.attlist -->
+ <!-- end of orgname.module -->
+ <!-- OtherCredit ...................... -->
+ <xs:attributeGroup name="othercredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A person or entity, other than an author or editor, credited in a document. -->
+ <xs:element name="othercredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="othercredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othercredit.element -->
+ <xs:attributeGroup name="othercredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othercredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othercredit.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of othercredit.module -->
+ <!-- PageNums ......................... -->
+ <xs:attributeGroup name="pagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The numbers of the pages in a book, for use in a bibliographic entry. -->
+ <xs:element name="pagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pagenums.element -->
+ <xs:attributeGroup name="pagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pagenums.attlist -->
+ <!-- end of pagenums.module -->
+ <!-- Personal identity elements ....... -->
+ <!--
+ These elements are used only within Author, Editor, and
+ OtherCredit.
+ -->
+ <xs:attributeGroup name="contrib.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the contributions made to a document by a credited source. -->
+ <xs:element name="contrib">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contrib.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contrib.element -->
+ <xs:attributeGroup name="contrib.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contrib.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contrib.attlist -->
+ <!-- end of contrib.module -->
+ <xs:attributeGroup name="firstname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first name of a person. -->
+ <xs:element name="firstname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="firstname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstname.element -->
+ <xs:attributeGroup name="firstname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstname.attlist -->
+ <!-- end of firstname.module -->
+ <xs:attributeGroup name="honorific.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a person. -->
+ <xs:element name="honorific">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="honorific.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of honorific.element -->
+ <xs:attributeGroup name="honorific.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="honorific.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of honorific.attlist -->
+ <!-- end of honorific.module -->
+ <xs:attributeGroup name="lineage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The portion of a person's name indicating a relationship to ancestors. -->
+ <xs:element name="lineage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="lineage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineage.element -->
+ <xs:attributeGroup name="lineage.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineage.attlist -->
+ <!-- end of lineage.module -->
+ <xs:attributeGroup name="othername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of a persons name that is not a first name, surname, or lineage. -->
+ <xs:element name="othername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="othername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othername.element -->
+ <xs:attributeGroup name="othername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othername.attlist -->
+ <!-- end of othername.module -->
+ <xs:attributeGroup name="surname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A family name; in western cultures the last name. -->
+ <xs:element name="surname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="surname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of surname.element -->
+ <xs:attributeGroup name="surname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="surname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of surname.attlist -->
+ <!-- end of surname.module -->
+ <!-- end of person.ident.module -->
+ <!-- PrintHistory ..................... -->
+ <xs:attributeGroup name="printhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The printing history of a document. -->
+ <xs:element name="printhistory">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="printhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of printhistory.element -->
+ <xs:attributeGroup name="printhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="printhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of printhistory.attlist -->
+ <!-- end of printhistory.module -->
+ <!-- ProductName ...................... -->
+ <xs:attributeGroup name="productname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The formal name of a product. -->
+ <xs:element name="productname" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="productname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productname.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="productname.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productname.attlist -->
+ <!-- end of productname.module -->
+ <!-- ProductNumber .................... -->
+ <xs:attributeGroup name="productnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a product. -->
+ <xs:element name="productnumber" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="productnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productnumber.element -->
+ <xs:attributeGroup name="productnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productnumber.attlist -->
+ <!-- end of productnumber.module -->
+ <!-- PubDate .......................... -->
+ <xs:attributeGroup name="pubdate.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication of a document. -->
+ <xs:element name="pubdate">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubdate.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubdate.element -->
+ <xs:attributeGroup name="pubdate.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubdate.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubdate.attlist -->
+ <!-- end of pubdate.module -->
+ <!-- Publisher ........................ -->
+ <xs:attributeGroup name="publisher.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The publisher of a document. -->
+ <xs:element name="publisher">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="publishername"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="publisher.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publisher.element -->
+ <xs:attributeGroup name="publisher.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publisher.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publisher.attlist -->
+ <!-- end of publisher.module -->
+ <xs:attributeGroup name="publishername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the publisher of a document. -->
+ <xs:element name="publishername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="publishername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publishername.element -->
+ <xs:attributeGroup name="publishername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publishername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publishername.attlist -->
+ <!-- end of publishername.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of publisher.content.module -->
+ <!-- PubsNumber ....................... -->
+ <xs:attributeGroup name="pubsnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number. -->
+ <xs:element name="pubsnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubsnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubsnumber.element -->
+ <xs:attributeGroup name="pubsnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubsnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubsnumber.attlist -->
+ <!-- end of pubsnumber.module -->
+ <!-- ReleaseInfo ...................... -->
+ <xs:attributeGroup name="releaseinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a particular release of a document. -->
+ <xs:element name="releaseinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="releaseinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of releaseinfo.element -->
+ <xs:attributeGroup name="releaseinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="releaseinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of releaseinfo.attlist -->
+ <!-- end of releaseinfo.module -->
+ <!-- RevHistory ....................... -->
+ <xs:attributeGroup name="revhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A history of the revisions to a document. -->
+ <xs:element name="revhistory" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="revision"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="revhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revhistory.element -->
+ <xs:attributeGroup name="revhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revhistory.attlist -->
+ <!-- end of revhistory.module -->
+ <xs:attributeGroup name="revision.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry describing a single revision in the history of the revisions to a document. -->
+ <xs:element name="revision">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="revnumber"/>
+ <xs:element ref="date"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="authorinitials"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element ref="revremark"/>
+ <xs:element ref="revdescription"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="revision.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revision.element -->
+ <xs:attributeGroup name="revision.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revision.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revision.attlist -->
+ <!-- end of revision.module -->
+ <xs:attributeGroup name="revnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A document revision number. -->
+ <xs:element name="revnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revnumber.element -->
+ <xs:attributeGroup name="revnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revnumber.attlist -->
+ <!-- end of revnumber.module -->
+ <!-- Date (defined elsewhere in this section) -->
+ <!-- AuthorInitials (defined elsewhere in this section) -->
+ <xs:attributeGroup name="revremark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of a revision to a document. -->
+ <xs:element name="revremark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revremark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revremark.element -->
+ <xs:attributeGroup name="revremark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revremark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revremark.attlist -->
+ <!-- end of revremark.module -->
+ <xs:attributeGroup name="revdescription.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A extended description of a revision to a document. -->
+ <xs:element name="revdescription">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="revdescription.mix"/>
+ <xs:attributeGroup ref="revdescription.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revdescription.element -->
+ <xs:attributeGroup name="revdescription.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revdescription.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revdescription.attlist -->
+ <!-- end of revdescription.module -->
+ <!-- end of revhistory.content.module -->
+ <!-- SeriesVolNums .................... -->
+ <xs:attributeGroup name="seriesvolnums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Numbers of the volumes in a series of books. -->
+ <xs:element name="seriesvolnums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="seriesvolnums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seriesvolnums.element -->
+ <xs:attributeGroup name="seriesvolnums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seriesvolnums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seriesvolnums.attlist -->
+ <!-- end of seriesvolnums.module -->
+ <!-- VolumeNum ........................ -->
+ <xs:attributeGroup name="volumenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The volume number of a document in a set (as of books in a set or articles in a journal). -->
+ <xs:element name="volumenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="volumenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of volumenum.element -->
+ <xs:attributeGroup name="volumenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="volumenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of volumenum.attlist -->
+ <!-- end of volumenum.module -->
+ <!-- .................................. -->
+ <!-- end of docinfo.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Inline, link, and ubiquitous elements ................................ -->
+ <!-- Technical and computer terms ......................................... -->
+ <xs:attributeGroup name="accel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphical user interface (GUI) keyboard shortcut. -->
+ <xs:element name="accel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="accel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of accel.element -->
+ <xs:attributeGroup name="accel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="accel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of accel.attlist -->
+ <!-- end of accel.module -->
+ <xs:attributeGroup name="action.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A response to a user event. -->
+ <xs:element name="action" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="action.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of action.element -->
+ <xs:attributeGroup name="action.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="action.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of action.attlist -->
+ <!-- end of action.module -->
+ <xs:attributeGroup name="application.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a software program. -->
+ <xs:element name="application" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="application.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of application.element -->
+ <xs:attributeGroup name="application.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="hardware"/>
+ <xs:enumeration value="software"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="application.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of application.attlist -->
+ <!-- end of application.module -->
+ <xs:attributeGroup name="classname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a class, in the object-oriented programming sense. -->
+ <xs:element name="classname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="classname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classname.element -->
+ <xs:attributeGroup name="classname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classname.attlist -->
+ <!-- end of classname.module -->
+ <xs:attributeGroup name="package.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A package. -->
+ <xs:element name="package" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="package.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of package.element -->
+ <xs:attributeGroup name="package.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="package.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of package.attlist -->
+ <!-- end of package.module -->
+ <!--
+ CO is a callout area of the LineColumn unit type (a single character
+ position); the position is directly indicated by the location of CO.
+ -->
+ <xs:attributeGroup name="co.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a callout embedded in text. -->
+ <xs:element name="co">
+ <xs:complexType>
+ <xs:attributeGroup ref="co.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of co.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="co.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="co.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of co.attlist -->
+ <!-- end of co.module -->
+ <!-- COREF is a reference to a CO -->
+ <xs:attributeGroup name="coref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a co. -->
+ <xs:element name="coref">
+ <xs:complexType>
+ <xs:attributeGroup ref="coref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of coref.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="coref.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="coref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of coref.attlist -->
+ <!-- end of coref.module -->
+ <xs:attributeGroup name="command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an executable program or other software command. -->
+ <xs:element name="command" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of command.element -->
+ <xs:attributeGroup name="command.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="command.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of command.attlist -->
+ <!-- end of command.module -->
+ <xs:attributeGroup name="computeroutput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data, generally text, displayed or presented by a computer. -->
+ <xs:element name="computeroutput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="computeroutput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of computeroutput.element -->
+ <xs:attributeGroup name="computeroutput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="computeroutput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of computeroutput.attlist -->
+ <!-- end of computeroutput.module -->
+ <xs:attributeGroup name="database.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a database, or part of a database. -->
+ <xs:element name="database" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="database.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of database.element -->
+ <!-- Class: Type of database the element names; no default -->
+ <xs:attributeGroup name="database.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="name"/>
+ <xs:enumeration value="table"/>
+ <xs:enumeration value="field"/>
+ <xs:enumeration value="key1"/>
+ <xs:enumeration value="key2"/>
+ <xs:enumeration value="record"/>
+ <xs:enumeration value="index"/>
+ <xs:enumeration value="view"/>
+ <xs:enumeration value="primarykey"/>
+ <xs:enumeration value="secondarykey"/>
+ <xs:enumeration value="foreignkey"/>
+ <xs:enumeration value="altkey"/>
+ <xs:enumeration value="procedure"/>
+ <xs:enumeration value="datatype"/>
+ <xs:enumeration value="constraint"/>
+ <xs:enumeration value="rule"/>
+ <xs:enumeration value="user"/>
+ <xs:enumeration value="group"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="database.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of database.attlist -->
+ <!-- end of database.module -->
+ <xs:attributeGroup name="email.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An email address. -->
+ <xs:element name="email" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="email.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of email.element -->
+ <xs:attributeGroup name="email.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="email.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of email.attlist -->
+ <!-- end of email.module -->
+ <xs:attributeGroup name="envar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A software environment variable. -->
+ <xs:element name="envar" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="envar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of envar.element -->
+ <xs:attributeGroup name="envar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="envar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of envar.attlist -->
+ <!-- end of envar.module -->
+ <xs:attributeGroup name="errorcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error code. -->
+ <xs:element name="errorcode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorcode.element -->
+ <xs:attributeGroup name="errorcode.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorcode.attlist -->
+ <!-- end of errorcode.module -->
+ <xs:attributeGroup name="errorname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error name. -->
+ <xs:element name="errorname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorname.element -->
+ <xs:attributeGroup name="errorname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorname.attlist -->
+ <!-- end of errorname.module -->
+ <xs:attributeGroup name="errortext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error message.. -->
+ <xs:element name="errortext" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortext.element -->
+ <xs:attributeGroup name="errortext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortext.attlist -->
+ <!-- end of errortext.module -->
+ <xs:attributeGroup name="errortype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of an error message. -->
+ <xs:element name="errortype" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortype.element -->
+ <xs:attributeGroup name="errortype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortype.attlist -->
+ <!-- end of errortype.module -->
+ <xs:attributeGroup name="filename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a file. -->
+ <xs:element name="filename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="filename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of filename.element -->
+ <!-- Class: Type of filename the element names; no default -->
+ <!--
+ Path: Search path (possibly system-specific) in which
+ file can be found
+ -->
+ <xs:attributeGroup name="filename.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="headerfile"/>
+ <xs:enumeration value="partition"/>
+ <xs:enumeration value="devicefile"/>
+ <xs:enumeration value="libraryfile"/>
+ <xs:enumeration value="directory"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="symlink"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="path"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="filename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of filename.attlist -->
+ <!-- end of filename.module -->
+ <xs:attributeGroup name="function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a function or subroutine, as in a programming language. -->
+ <xs:element name="function" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of function.element -->
+ <xs:attributeGroup name="function.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="function.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of function.attlist -->
+ <!-- end of function.module -->
+ <xs:attributeGroup name="guibutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text on a button in a GUI. -->
+ <xs:element name="guibutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guibutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guibutton.element -->
+ <xs:attributeGroup name="guibutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guibutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guibutton.attlist -->
+ <!-- end of guibutton.module -->
+ <xs:attributeGroup name="guiicon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Graphic and/or text appearing as a icon in a GUI. -->
+ <xs:element name="guiicon" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guiicon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guiicon.element -->
+ <xs:attributeGroup name="guiicon.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guiicon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guiicon.attlist -->
+ <!-- end of guiicon.module -->
+ <xs:attributeGroup name="guilabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of a label in a GUI. -->
+ <xs:element name="guilabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guilabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guilabel.element -->
+ <xs:attributeGroup name="guilabel.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guilabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guilabel.attlist -->
+ <!-- end of guilabel.module -->
+ <xs:attributeGroup name="guimenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a menu in a GUI. -->
+ <xs:element name="guimenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenu.element -->
+ <xs:attributeGroup name="guimenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenu.attlist -->
+ <!-- end of guimenu.module -->
+ <xs:attributeGroup name="guimenuitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a terminal menu item in a GUI. -->
+ <xs:element name="guimenuitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenuitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenuitem.element -->
+ <xs:attributeGroup name="guimenuitem.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenuitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenuitem.attlist -->
+ <!-- end of guimenuitem.module -->
+ <xs:attributeGroup name="guisubmenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a submenu in a GUI. -->
+ <xs:element name="guisubmenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guisubmenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guisubmenu.element -->
+ <xs:attributeGroup name="guisubmenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guisubmenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guisubmenu.attlist -->
+ <!-- end of guisubmenu.module -->
+ <xs:attributeGroup name="hardware.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A physical part of a computer system. -->
+ <xs:element name="hardware" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="hardware.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of hardware.element -->
+ <xs:attributeGroup name="hardware.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="hardware.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of hardware.attlist -->
+ <!-- end of hardware.module -->
+ <xs:attributeGroup name="interface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a GUI. -->
+ <xs:element name="interface" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ </xs:choice>
+ <xs:attributeGroup ref="interface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interface.element -->
+ <!-- Class: Type of the Interface item; no default -->
+ <xs:attributeGroup name="interface.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interface.attlist -->
+ <!-- end of interface.module -->
+ <xs:attributeGroup name="keycap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text printed on a key on a keyboard. -->
+ <xs:element name="keycap" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="keycap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycap.element -->
+ <xs:attributeGroup name="keycap.attlist">
+ <xs:attribute name="function">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="alt"/>
+ <xs:enumeration value="control"/>
+ <xs:enumeration value="shift"/>
+ <xs:enumeration value="meta"/>
+ <xs:enumeration value="escape"/>
+ <xs:enumeration value="enter"/>
+ <xs:enumeration value="tab"/>
+ <xs:enumeration value="backspace"/>
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="space"/>
+ <xs:enumeration value="delete"/>
+ <xs:enumeration value="insert"/>
+ <xs:enumeration value="up"/>
+ <xs:enumeration value="down"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="home"/>
+ <xs:enumeration value="end"/>
+ <xs:enumeration value="pageup"/>
+ <xs:enumeration value="pagedown"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherfunction"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycap.attlist -->
+ <!-- end of keycap.module -->
+ <xs:attributeGroup name="keycode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The internal, frequently numeric, identifier for a key on a keyboard. -->
+ <xs:element name="keycode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keycode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycode.element -->
+ <xs:attributeGroup name="keycode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycode.attlist -->
+ <!-- end of keycode.module -->
+ <xs:attributeGroup name="keycombo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A combination of input actions. -->
+ <xs:element name="keycombo" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="keycombo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycombo.element -->
+ <xs:attributeGroup name="keycombo.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycombo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycombo.attlist -->
+ <!-- end of keycombo.module -->
+ <xs:attributeGroup name="keysysm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The symbolic name of a key on a keyboard. -->
+ <xs:element name="keysym" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keysym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keysym.element -->
+ <xs:attributeGroup name="keysym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keysysm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keysym.attlist -->
+ <!-- end of keysym.module -->
+ <xs:attributeGroup name="lineannotation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A comment on a line in a verbatim listing. -->
+ <xs:element name="lineannotation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lineannotation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineannotation.element -->
+ <xs:attributeGroup name="lineannotation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineannotation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineannotation.attlist -->
+ <!-- end of lineannotation.module -->
+ <xs:attributeGroup name="literal.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Inline text that is some literal value. -->
+ <xs:element name="literal" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="literal.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literal.element -->
+ <xs:attributeGroup name="literal.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literal.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literal.attlist -->
+ <!-- end of literal.module -->
+ <xs:attributeGroup name="code.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline code fragment. -->
+ <xs:element name="code" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="code.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of code.element -->
+ <xs:attributeGroup name="code.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="code.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of code.attlist -->
+ <!-- end of code.module -->
+ <xs:attributeGroup name="constant.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A programming or system constant. -->
+ <xs:element name="constant" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="constant.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constant.element -->
+ <xs:attributeGroup name="constant.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constant.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constant.attlist -->
+ <!-- end of constant.module -->
+ <xs:attributeGroup name="varname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a variable. -->
+ <xs:element name="varname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="varname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varname.element -->
+ <xs:attributeGroup name="varname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varname.attlist -->
+ <!-- end of varname.module -->
+ <xs:attributeGroup name="markup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A string of formatting markup in text that is to be represented literally. -->
+ <xs:element name="markup" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="markup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of markup.element -->
+ <xs:attributeGroup name="markup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="markup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of markup.attlist -->
+ <!-- end of markup.module -->
+ <xs:attributeGroup name="medialabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that identifies the physical medium on which some information resides. -->
+ <xs:element name="medialabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="medialabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of medialabel.element -->
+ <!-- Class: Type of medium named by the element; no default -->
+ <xs:attributeGroup name="medialabel.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="cartridge"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="disk"/>
+ <xs:enumeration value="tape"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="medialabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of medialabel.attlist -->
+ <!-- end of medialabel.module -->
+ <xs:attributeGroup name="menuchoice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A selection or series of selections from a menu. -->
+ <xs:element name="menuchoice" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortcut"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="guibutton"/>
+ <xs:element ref="guiicon"/>
+ <xs:element ref="guilabel"/>
+ <xs:element ref="guimenu"/>
+ <xs:element ref="guimenuitem"/>
+ <xs:element ref="guisubmenu"/>
+ <xs:element ref="interface"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="menuchoice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of menuchoice.element -->
+ <xs:attributeGroup name="menuchoice.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="menuchoice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of menuchoice.attlist -->
+ <!-- end of menuchoice.module -->
+ <!-- See also KeyCombo -->
+ <xs:attributeGroup name="shortcut.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A key combination for an action that is also accessible through a menu. -->
+ <xs:element name="shortcut">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="shortcut.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortcut.element -->
+ <xs:attributeGroup name="shortcut.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortcut.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortcut.attlist -->
+ <!-- end of shortcut.module -->
+ <!-- end of menuchoice.content.module -->
+ <xs:attributeGroup name="mousebutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The conventional name of a mouse button. -->
+ <xs:element name="mousebutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="mousebutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mousebutton.element -->
+ <xs:attributeGroup name="mousebutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mousebutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mousebutton.attlist -->
+ <!-- end of mousebutton.module -->
+ <xs:attributeGroup name="msgtext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The actual text of a message component in a message set. -->
+ <xs:element name="msgtext">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="msgtext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgtext.element -->
+ <xs:attributeGroup name="msgtext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgtext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgtext.attlist -->
+ <!-- end of msgtext.module -->
+ <xs:attributeGroup name="option.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An option for a software command. -->
+ <xs:element name="option" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="option.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of option.element -->
+ <xs:attributeGroup name="option.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="option.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of option.attlist -->
+ <!-- end of option.module -->
+ <xs:attributeGroup name="optional.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Optional information. -->
+ <xs:element name="optional" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="optional.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of optional.element -->
+ <xs:attributeGroup name="optional.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="optional.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of optional.attlist -->
+ <!-- end of optional.module -->
+ <xs:attributeGroup name="parameter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A value or a symbolic reference to a value. -->
+ <xs:element name="parameter" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="parameter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of parameter.element -->
+ <!-- Class: Type of the Parameter; no default -->
+ <xs:attributeGroup name="parameter.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="parameter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of parameter.attlist -->
+ <!-- end of parameter.module -->
+ <xs:attributeGroup name="prompt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A character or string indicating the start of an input field in a computer display. -->
+ <xs:element name="prompt" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="prompt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prompt.element -->
+ <xs:attributeGroup name="prompt.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prompt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prompt.attlist -->
+ <!-- end of prompt.module -->
+ <xs:attributeGroup name="property.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of data associated with some part of a computer system. -->
+ <xs:element name="property" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="property.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of property.element -->
+ <xs:attributeGroup name="property.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="property.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of property.attlist -->
+ <!-- end of property.module -->
+ <xs:attributeGroup name="replaceable.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Content that may or must be replaced by the user. -->
+ <xs:element name="replaceable" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="optional"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="replaceable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of replaceable.element -->
+ <!--
+ Class: Type of information the element represents; no
+ default
+ -->
+ <xs:attributeGroup name="replaceable.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="parameter"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="replaceable.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of replaceable.attlist -->
+ <!-- end of replaceable.module -->
+ <xs:attributeGroup name="returnvalue.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The value returned by a function. -->
+ <xs:element name="returnvalue" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="returnvalue.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of returnvalue.element -->
+ <xs:attributeGroup name="returnvalue.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="returnvalue.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of returnvalue.attlist -->
+ <!-- end of returnvalue.module -->
+ <xs:attributeGroup name="sgmltag.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of SGML markup. -->
+ <xs:element name="sgmltag" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="sgmltag.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sgmltag.element -->
+ <!-- Class: Type of SGML construct the element names; no default -->
+ <xs:attributeGroup name="sgmltag.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="attribute"/>
+ <xs:enumeration value="attvalue"/>
+ <xs:enumeration value="element"/>
+ <xs:enumeration value="endtag"/>
+ <xs:enumeration value="emptytag"/>
+ <xs:enumeration value="genentity"/>
+ <xs:enumeration value="numcharref"/>
+ <xs:enumeration value="paramentity"/>
+ <xs:enumeration value="pi"/>
+ <xs:enumeration value="xmlpi"/>
+ <xs:enumeration value="starttag"/>
+ <xs:enumeration value="sgmlcomment"/>
+ <xs:enumeration value="prefix"/>
+ <xs:enumeration value="namespace"/>
+ <xs:enumeration value="localname"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="namespace"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sgmltag.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sgmltag.attlist -->
+ <!-- end of sgmltag.module -->
+ <xs:attributeGroup name="structfield.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A field in a structure (in the programming language sense). -->
+ <xs:element name="structfield" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structfield.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structfield.element -->
+ <xs:attributeGroup name="structfield.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structfield.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structfield.attlist -->
+ <!-- end of structfield.module -->
+ <xs:attributeGroup name="structname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a structure (in the programming language sense). -->
+ <xs:element name="structname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structname.element -->
+ <xs:attributeGroup name="structname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structname.attlist -->
+ <!-- end of structname.module -->
+ <xs:attributeGroup name="symbol.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that is replaced by a value before processing. -->
+ <xs:element name="symbol" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="symbol.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of symbol.element -->
+ <!-- Class: Type of symbol; no default -->
+ <xs:attributeGroup name="symbol.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="symbol.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of symbol.attlist -->
+ <!-- end of symbol.module -->
+ <xs:attributeGroup name="systemitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A system-related item or term. -->
+ <xs:element name="systemitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="acronym"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="systemitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of systemitem.element -->
+ <!-- Class: Type of system item the element names; no default -->
+ <xs:attributeGroup name="systemitem.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="constant"/>
+ <xs:enumeration value="daemon"/>
+ <xs:enumeration value="domainname"/>
+ <xs:enumeration value="etheraddress"/>
+ <xs:enumeration value="event"/>
+ <xs:enumeration value="eventhandler"/>
+ <xs:enumeration value="filesystem"/>
+ <xs:enumeration value="fqdomainname"/>
+ <xs:enumeration value="groupname"/>
+ <xs:enumeration value="ipaddress"/>
+ <xs:enumeration value="library"/>
+ <xs:enumeration value="macro"/>
+ <xs:enumeration value="netmask"/>
+ <xs:enumeration value="newsgroup"/>
+ <xs:enumeration value="osname"/>
+ <xs:enumeration value="protocol"/>
+ <xs:enumeration value="resource"/>
+ <xs:enumeration value="systemname"/>
+ <xs:enumeration value="username"/>
+ <xs:enumeration value="process"/>
+ <xs:enumeration value="server"/>
+ <xs:enumeration value="service"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="systemitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of systemitem.attlist -->
+ <!-- end of systemitem.module -->
+ <xs:attributeGroup name="uri.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A Uniform Resource Identifier. -->
+ <xs:element name="uri" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="uri.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uri.element -->
+ <!-- Type: Type of URI; no default -->
+ <xs:attributeGroup name="uri.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uri.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uri.attlist -->
+ <!-- end of uri.module -->
+ <xs:attributeGroup name="token.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of information. -->
+ <xs:element name="token" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="token.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of token.element -->
+ <xs:attributeGroup name="token.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="token.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of token.attlist -->
+ <!-- end of token.module -->
+ <xs:attributeGroup name="type.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of a value. -->
+ <xs:element name="type" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="type.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of type.element -->
+ <xs:attributeGroup name="type.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="type.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of type.attlist -->
+ <!-- end of type.module -->
+ <xs:attributeGroup name="userinput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data entered by the user. -->
+ <xs:element name="userinput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="userinput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of userinput.element -->
+ <xs:attributeGroup name="userinput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="userinput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of userinput.attlist -->
+ <!-- end of userinput.module -->
+ <xs:attributeGroup name="termdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline definition of a term. -->
+ <xs:element name="termdef" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="termdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of termdef.element -->
+ <xs:attributeGroup name="termdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="termdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of termdef.attlist -->
+ <!-- end of termdef.module -->
+ <!-- General words and phrases ............................................ -->
+ <xs:attributeGroup name="abbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An abbreviation, especially one followed by a period. -->
+ <xs:element name="abbrev" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="abbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abbrev.element -->
+ <xs:attributeGroup name="abbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abbrev.attlist -->
+ <!-- end of abbrev.module -->
+ <xs:attributeGroup name="acronym.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase. -->
+ <xs:element name="acronym" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="acronym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of acronym.element -->
+ <xs:attributeGroup name="acronym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="acronym.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of acronym.attlist -->
+ <!-- end of acronym.module -->
+ <xs:attributeGroup name="citation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline bibliographic reference to another published work. -->
+ <xs:element name="citation" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citation.element -->
+ <xs:attributeGroup name="citation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citation.attlist -->
+ <!-- end of citation.module -->
+ <xs:attributeGroup name="citerefentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation to a reference page. -->
+ <xs:element name="citerefentry" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="citerefentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citerefentry.element -->
+ <xs:attributeGroup name="citerefentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citerefentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citerefentry.attlist -->
+ <!-- end of citerefentry.module -->
+ <xs:attributeGroup name="refentrytitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a reference page. -->
+ <xs:element name="refentrytitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="refentrytitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentrytitle.element -->
+ <xs:attributeGroup name="refentrytitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentrytitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentrytitle.attlist -->
+ <!-- end of refentrytitle.module -->
+ <xs:attributeGroup name="namvolnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference volume number. -->
+ <xs:element name="manvolnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="manvolnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of manvolnum.element -->
+ <xs:attributeGroup name="manvolnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="namvolnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of manvolnum.attlist -->
+ <!-- end of manvolnum.module -->
+ <xs:attributeGroup name="citetitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a cited work. -->
+ <xs:element name="citetitle" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citetitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citetitle.element -->
+ <!-- Pubwork: Genre of published work cited; no default -->
+ <xs:attributeGroup name="citetitle.attlist">
+ <xs:attribute name="pubwork">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="article"/>
+ <xs:enumeration value="book"/>
+ <xs:enumeration value="chapter"/>
+ <xs:enumeration value="part"/>
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="section"/>
+ <xs:enumeration value="journal"/>
+ <xs:enumeration value="series"/>
+ <xs:enumeration value="set"/>
+ <xs:enumeration value="manuscript"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="dvd"/>
+ <xs:enumeration value="wiki"/>
+ <xs:enumeration value="gopher"/>
+ <xs:enumeration value="bbs"/>
+ <xs:enumeration value="emailmessage"/>
+ <xs:enumeration value="webpage"/>
+ <xs:enumeration value="newsposting"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citetitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citetitle.attlist -->
+ <!-- end of citetitle.module -->
+ <xs:attributeGroup name="emphasis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Emphasized text. -->
+ <xs:element name="emphasis" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="emphasis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of emphasis.element -->
+ <xs:attributeGroup name="emphasis.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="emphasis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of emphasis.attlist -->
+ <!-- end of emphasis.module -->
+ <xs:attributeGroup name="foreignphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word or phrase in a language other than the primary language of the document. -->
+ <xs:element name="foreignphrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="foreignphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of foreignphrase.element -->
+ <xs:attributeGroup name="foreignphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="foreignphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of foreignphrase.attlist -->
+ <!-- end of foreignphrase.module -->
+ <xs:attributeGroup name="glossterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary term. -->
+ <xs:element name="glossterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossterm.element -->
+ <!-- to GlossEntry if Glossterm used in text -->
+ <!--
+ BaseForm: Provides the form of GlossTerm to be used
+ for indexing
+ -->
+ <xs:attributeGroup name="glossterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossterm.attlist -->
+ <!-- end of glossterm.module -->
+ <xs:attributeGroup name="firstterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first occurrence of a term. -->
+ <xs:element name="firstterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="firstterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstterm.element -->
+ <!-- to GlossEntry or other explanation -->
+ <xs:attributeGroup name="firstterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstterm.attlist -->
+ <!-- end of firstterm.module -->
+ <xs:attributeGroup name="phrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A span of text. -->
+ <xs:element name="phrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="phrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phrase.element -->
+ <xs:attributeGroup name="phrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phrase.attlist -->
+ <!-- end of phrase.module -->
+ <xs:attributeGroup name="quote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline quotation. -->
+ <xs:element name="quote" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="quote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of quote.element -->
+ <xs:attributeGroup name="quote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="quote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of quote.attlist -->
+ <!-- end of quote.module -->
+ <xs:attributeGroup name="ssscript.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subscript (as in H{^2}O, the molecular formula for water). -->
+ <xs:element name="subscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="subscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subscript.element -->
+ <xs:attributeGroup name="subscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subscript.attlist -->
+ <!-- doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself). -->
+ <xs:element name="superscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="superscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of superscript.element -->
+ <xs:attributeGroup name="superscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of superscript.attlist -->
+ <!-- end of ssscript.module -->
+ <xs:attributeGroup name="trademark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A trademark. -->
+ <xs:element name="trademark" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="trademark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of trademark.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="trademark.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="trademark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of trademark.attlist -->
+ <!-- end of trademark.module -->
+ <xs:attributeGroup name="wordasword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word meant specifically as a word and not representing anything else. -->
+ <xs:element name="wordasword" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="wordasword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of wordasword.element -->
+ <xs:attributeGroup name="wordasword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="wordasword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of wordasword.attlist -->
+ <!-- end of wordasword.module -->
+ <!-- Links and cross-references ........................................... -->
+ <xs:attributeGroup name="link.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A hypertext link. -->
+ <xs:element name="link" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="link.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of link.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="link.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="link.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of link.attlist -->
+ <!-- end of link.module -->
+ <xs:attributeGroup name="olink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target indirectly, through an entity. -->
+ <xs:element name="olink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="olink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of olink.element -->
+ <!-- TargetDocEnt: Name of an entity to be the target of the link -->
+ <!--
+ LinkMode: ID of a ModeSpec containing instructions for
+ operating on the entity named by TargetDocEnt
+ -->
+ <!-- LocalInfo: Information that may be passed to ModeSpec -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="olink.attlist">
+ <xs:attribute name="targetdocent" type="xs:ENTITY"/>
+ <xs:attribute name="linkmode" type="xs:IDREF"/>
+ <xs:attribute name="localinfo"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="targetdoc"/>
+ <xs:attribute name="targetptr"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="olink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of olink.attlist -->
+ <!-- end of olink.module -->
+ <xs:attributeGroup name="ulink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target by means of a URL (Uniform Resource Locator). -->
+ <xs:element name="ulink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="ulink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ulink.element -->
+ <!-- URL: uniform resource locator; the target of the ULink -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="ulink.attlist">
+ <xs:attribute name="url" use="required"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ulink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ulink.attlist -->
+ <!-- end of ulink.module -->
+ <xs:attributeGroup name="footnoteref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a footnote (a footnote mark). -->
+ <xs:element name="footnoteref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="footnoteref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnoteref.element -->
+ <!-- to footnote content supplied elsewhere -->
+ <xs:attributeGroup name="footnoteref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnoteref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnoteref.attlist -->
+ <!-- end of footnoteref.module -->
+ <xs:attributeGroup name="xref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to another part of the document. -->
+ <xs:element name="xref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="xref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of xref.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <xs:attributeGroup name="xref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="xref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of xref.attlist -->
+ <!-- end of xref.module -->
+ <xs:attributeGroup name="biblioref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a bibliographic entry. -->
+ <xs:element name="biblioref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="biblioref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioref.element -->
+ <xs:attributeGroup name="biblioref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="units"/>
+ <xs:attribute name="begin"/>
+ <xs:attribute name="end"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="biblioref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioref.attlist -->
+ <!-- end of biblioref.module -->
+ <!-- Ubiquitous elements .................................................. -->
+ <xs:attributeGroup name="anchor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A spot in the document. -->
+ <xs:element name="anchor">
+ <xs:complexType>
+ <xs:attributeGroup ref="anchor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of anchor.element -->
+ <!-- required -->
+ <!-- replaces Lang -->
+ <xs:attributeGroup name="anchor.attlist">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="anchor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of anchor.attlist -->
+ <!-- end of anchor.module -->
+ <xs:attributeGroup name="beginpage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a page break in a print version of the document. -->
+ <xs:element name="beginpage">
+ <xs:complexType>
+ <xs:attributeGroup ref="beginpage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of beginpage.element -->
+ <!-- PageNum: Number of page that begins at this point -->
+ <xs:attributeGroup name="beginpage.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="beginpage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of beginpage.attlist -->
+ <!-- end of beginpage.module -->
+ <!--
+ IndexTerms appear in the text flow for generating or linking an
+ index.
+ -->
+ <xs:attributeGroup name="indexterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for terms to be indexed. -->
+ <xs:element name="indexterm" substitutionGroup="ndxterm.class"/>
+ <!-- end of indexterm.element -->
+ <!--
+ Scope: Indicates which generated indices the IndexTerm
+ should appear in: Global (whole document set), Local (this
+ document only), or All (both)
+ -->
+ <!--
+ Significance: Whether this IndexTerm is the most pertinent
+ of its series (Preferred) or not (Normal, the default)
+ -->
+ <!--
+ Class: Indicates type of IndexTerm; default is Singular,
+ or EndOfRange if StartRef is supplied; StartOfRange value
+ must be supplied explicitly on starts of ranges
+ -->
+ <!--
+ StartRef: ID of the IndexTerm that starts the indexing
+ range ended by this IndexTerm
+ -->
+ <!--
+ Zone: IDs of the elements to which the IndexTerm applies,
+ and indicates that the IndexTerm applies to those entire
+ elements rather than the point at which the IndexTerm
+ occurs
+ -->
+ <xs:attributeGroup name="indexterm.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="global"/>
+ <xs:enumeration value="local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="significance" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preferred"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="singular"/>
+ <xs:enumeration value="startofrange"/>
+ <xs:enumeration value="endofrange"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startref" type="xs:IDREF"/>
+ <xs:attribute name="zone" type="xs:IDREFS"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexterm.attlist -->
+ <!-- end of indexterm.module -->
+ <xs:attributeGroup name="primsecter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary word or phrase under which an index term should be sorted. -->
+ <xs:element name="primary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="primary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primary.attlist -->
+ <!-- doc:A secondary word or phrase in an index term. -->
+ <xs:element name="secondary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="secondary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondary.attlist -->
+ <!-- doc:A tertiary word or phrase in an index term. -->
+ <xs:element name="tertiary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="tertiary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiary.attlist -->
+ <!-- end of primsecter.module -->
+ <xs:attributeGroup name="seeseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Part of an index term directing the reader instead to another entry in the index. -->
+ <xs:element name="see">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="see.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of see.element -->
+ <xs:attributeGroup name="see.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of see.attlist -->
+ <!-- doc:Part of an index term directing the reader also to another entry in the index. -->
+ <xs:element name="seealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealso.element -->
+ <xs:attributeGroup name="seealso.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of seealso.attlist -->
+<!-- end of seeseealso.module -->
+<!-- end of indexterm.content.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML information pool module ... -->
+<!-- .............................................................................. -->
diff --git a/doc/xsd/htmltblx.xsd b/doc/xsd/htmltblx.xsd
new file mode 100644
index 0000000..9f82a02
--- /dev/null
+++ b/doc/xsd/htmltblx.xsd
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module ........ -->
+<!-- File htmltblx.xsd .................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook XML HTML Table
+ Module V4.5 with:
+
+ Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems,
+ Inc., and the Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: htmltblx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for elements that are
+ isomorphic to the HTML elements. One could argue we should
+ instead have based ourselves on the XHTML Table Module, but the
+ HTML one is more like what browsers are likely to accept today
+ and users are likely to use.
+
+ This module has been developed for use with the DocBook V4.5
+ "union table model" in which elements and attlists common to both
+ models are defined (as the union) in the CALS table module by
+ setting various parameter entities appropriately in this file.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % htmltbl PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+ "htmltblx.mod">
+ %htmltbl;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ======================= XHTML Tables ======================================= -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="html.coreattrs">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ </xs:attributeGroup>
+ <!-- Does not contain lang or dir because they are in %common.attribs -->
+ <xs:attributeGroup name="i18n">
+ <xs:attribute ref="xml:lang"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="events">
+ <xs:attribute name="onclick"/>
+ <xs:attribute name="ondblclick"/>
+ <xs:attribute name="onmousedown"/>
+ <xs:attribute name="onmouseup"/>
+ <xs:attribute name="onmouseover"/>
+ <xs:attribute name="onmousemove"/>
+ <xs:attribute name="onmouseout"/>
+ <xs:attribute name="onkeypress"/>
+ <xs:attribute name="onkeydown"/>
+ <xs:attribute name="onkeyup"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="attrs">
+ <xs:attributeGroup ref="html.coreattrs"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellhalign">
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellvalign">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="baseline"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- doc:A group of columns in an HTML table. -->
+ <xs:element name="colgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:Specifications for a column in an HTML table. -->
+ <xs:element name="col">
+ <xs:complexType>
+ <xs:attributeGroup ref="col.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A row in an HTML table. -->
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="th"/>
+ <xs:element ref="td"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table header entry in an HTML table. -->
+ <xs:element name="th">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="th.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table ntry in an HTML table. -->
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="td.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colgroup.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="col.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="tr.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="th.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="td.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <!-- ====================================================== -->
+ <!--
+ Set up to read in the CALS model configured to
+ merge with the XHTML table model
+ -->
+ <!-- ====================================================== -->
+ <xs:attributeGroup name="tables.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- Add label and role attributes to table and informaltable -->
+ <xs:attributeGroup name="bodyatt">
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="rowheader">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="firstcol"/>
+ <xs:enumeration value="norowheader"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ </xs:attributeGroup>
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <xs:attributeGroup name="secur">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ <xs:attributeGroup ref="tables.role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="common.table.attribs">
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- Content model for Table (that also allows HTML tables) -->
+ <xs:complexType name="tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element ref="caption"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:group name="informal.tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+ <!-- Attributes for Table (including HTML ones) -->
+ <!-- N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd -->
+ <!-- that way because 'all' already occurs in a different enumeration in -->
+ <!-- CALS tables (frame). -->
+ <xs:attributeGroup name="tbl.table.att">
+ <xs:attribute name="tabstyle"/>
+ <xs:attribute name="tocentry" type="yesorno.attvals"/>
+ <xs:attribute name="shortentry" type="yesorno.attvals"/>
+ <xs:attribute name="orient">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="port"/>
+ <xs:enumeration value="land"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attribute name="summary"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="border"/>
+ <xs:attribute name="rules"/>
+ <xs:attribute name="cellspacing"/>
+ <xs:attribute name="cellpadding"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="tbl.frame.attval">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="void"/>
+ <xs:enumeration value="above"/>
+ <xs:enumeration value="below"/>
+ <xs:enumeration value="hsides"/>
+ <xs:enumeration value="lhs"/>
+ <xs:enumeration value="rhs"/>
+ <xs:enumeration value="vsides"/>
+ <xs:enumeration value="box"/>
+ <xs:enumeration value="border"/>
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="topbot"/>
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="sides"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <xs:group name="tbl.entry.mdl">
+ <xs:choice>
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ thead, tfoot, and tbody are defined in both table models,
+ so we set up parameter entities to define union models for them
+ -->
+ <xs:complexType name="tbl.hdft.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.tbody.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:choice>
+ </xs:complexType>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module . -->
+<!-- ...................................................................... -->
diff --git a/doc/xsd/scons.xsd b/doc/xsd/scons.xsd
new file mode 100644
index 0000000..481c2d4
--- /dev/null
+++ b/doc/xsd/scons.xsd
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 .............................. -->
+<!-- File scons.xsd ....................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook V4.5 DTD with:
+
+ Copyright 1992-2006 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ See also http://docbook.org/specs/
+
+ $Id: docbookx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This is the driver file for V4.5 of the DocBook DTD.
+ Please use the following formal public identifier to identify it:
+
+ "-//OASIS//DTD DocBook XML V4.5//EN"
+
+ For example, if your document's top-level element is Book, and
+ you are using DocBook directly, use the FPI in the DOCTYPE
+ declaration:
+
+ <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+ [...]>
+
+ Or, if you have a higher-level driver file that customizes DocBook,
+ use the FPI in the parameter entity declaration:
+
+ <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+ %DocBookDTD;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Enable SGML features ................................................. -->
+<!-- ...................................................................... -->
+<!-- Notation declarations ................................................ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.scons.org/dbxsd/v1.0"
+ elementFormDefault="qualified">
+ <xs:include schemaLocation="dbnotnx.xsd"/>
+ <xs:include schemaLocation="dbpoolx.xsd"/>
+ <xs:include schemaLocation="dbhierx.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- ISO character entity sets ............................................ -->
+ <!-- euro sign, U+20AC NEW -->
+ <!-- ...................................................................... -->
+ <!-- DTD modules .......................................................... -->
+ <!-- Information pool .............. -->
+ <!-- Redeclaration placeholder ..... -->
+ <!-- Document hierarchy ............ -->
+</xs:schema>
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 ....................... -->
+<!-- ...................................................................... -->
diff --git a/doc/xsd/xml.xsd b/doc/xsd/xml.xsd
new file mode 100644
index 0000000..600f399
--- /dev/null
+++ b/doc/xsd/xml.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://www.w3.org/XML/1998/namespace">
+ <xs:import schemaLocation="scons.xsd"/>
+ <xs:attribute name="base"/>
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="lang" type="xs:NMTOKEN"/>
+</xs:schema>
diff --git a/doc/xslt/to_docbook.xslt b/doc/xslt/to_docbook.xslt
new file mode 100644
index 0000000..0b39c28
--- /dev/null
+++ b/doc/xslt/to_docbook.xslt
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Changing element names from SCons XSD to real Docbook.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:scons="http://www.scons.org/dbxsd/v1.0">
+ <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
+
+ <!-- Copy everything unmatched -->
+ <xsl:template match="*">
+ <xsl:element name="{local-name()}">
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates select="node()"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="text() | comment() | processing-instruction()">
+ <xsl:copy/>
+ </xsl:template>
+
+ <!-- Helper function for replacing strings in strings -->
+ <xsl:template name="string-replace-all">
+ <xsl:param name="text" />
+ <xsl:param name="replace" />
+ <xsl:param name="by" />
+ <xsl:choose>
+ <xsl:when test="contains($text, $replace)">
+ <xsl:value-of select="substring-before($text,$replace)" />
+ <xsl:value-of select="$by" />
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text"
+ select="substring-after($text,$replace)" />
+ <xsl:with-param name="replace" select="$replace" />
+ <xsl:with-param name="by" select="$by" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Leaving scons_example empty -->
+ <xsl:template match="scons:scons_example">
+ <xsl:apply-templates select="node()"/>
+ </xsl:template>
+
+ <!-- Changing example_commands to screen -->
+ <xsl:template match="scons:example_commands">
+ <xsl:element name="screen">
+ <xsl:apply-templates select="node()"/>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- Leaving scons_output empty, should already
+ have been handled by xinclude_examples.xslt -->
+ <xsl:template match="scons:scons_output">
+ <xsl:apply-templates select="node()"/>
+ </xsl:template>
+
+ <!-- Leaving scons_output_command empty, should already
+ have been handled by xinclude_examples.xslt.
+ -->
+ <xsl:template match="scons:scons_output_command">
+ </xsl:template>
+
+ <!-- Leaving scons_example_file empty, should already
+ have been handled by xinclude_examples.xslt.
+ -->
+ <xsl:template match="scons:scons_example_file">
+ </xsl:template>
+
+ <!-- Changing file to programlisting if printme == '1' -->
+ <xsl:template match="scons:file">
+ <xsl:if test="@printme='1'">
+ <xsl:element name="programlisting">
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text" select="node()" />
+ <xsl:with-param name="replace" select="'__ROOT__'" />
+ <xsl:with-param name="by" select="''" />
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Changing sconstruct to programlisting -->
+ <xsl:template match="scons:sconstruct">
+ <xsl:element name="programlisting">
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text" select="node()" />
+ <xsl:with-param name="replace" select="'__ROOT__'" />
+ <xsl:with-param name="by" select="''" />
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- Leave directory empty -->
+ <xsl:template match="scons:directory">
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/xslt/xinclude_examples.xslt b/doc/xslt/xinclude_examples.xslt
new file mode 100644
index 0000000..50696ac
--- /dev/null
+++ b/doc/xslt/xinclude_examples.xslt
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Changing example command outputs to XIncludes for the UserGuide.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:scons="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XInclude">
+ <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
+
+ <!-- Copy everything unmatched -->
+ <xsl:template match="*">
+ <xsl:element name="{name()}" namespace="{namespace-uri()}">
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates select="node()"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="text() | comment() | processing-instruction()">
+ <xsl:copy/>
+ </xsl:template>
+
+ <!-- Changing scons_output to xinclude -->
+ <xsl:template match="scons:scons_output">
+ <xsl:element name="xsi:include">
+ <xsl:attribute name="href"><xsl:value-of select="concat('../generated/examples/',@example,'_',@suffix,'.xml')"></xsl:value-of></xsl:attribute>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- Changing scons_example_file to xinclude -->
+ <xsl:template match="scons:scons_example_file">
+ <xsl:variable name="newfile" select="translate(@name,'/','_')"/>
+ <xsl:element name="programlisting">
+ <xsl:element name="xsi:include">
+ <xsl:attribute name="href"><xsl:value-of select="concat('../generated/examples/',@example,'_',$newfile)"></xsl:value-of></xsl:attribute>
+ <xsl:attribute name="parse">text</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/Announce.txt b/src/Announce.txt
index 2e30f82..89721e1 100644
--- a/src/Announce.txt
+++ b/src/Announce.txt
@@ -19,13 +19,32 @@ effectively, please go to http://scons.org/lists.php#users to sign up for
the scons-users mailing list.
-RELEASE 2.3.0 - Mon, 02 Mar 2013 13:22:29 -0400
+RELEASE 2.3.1 - Mon, 02 Mar 2014 13:53:45 -0400
Please consult the RELEASE.txt file for a summary of changes since the last
release and consult the CHANGES.txt file for complete a list of changes
since last release. This announcement highlights only the important
changes.
+ Please note the following important changes since release 2.3.0:
+
+ -- Fix failure to relink when LINKCOM or libs change, introduced in
+ 2.3.0.
+
+ -- Fix MSVC defaulting TARGET_ARCH to HOST_ARCH and other MSVC
+ issues.
+
+ -- Reduced memory consumption in large builds, which should speed
+ them up as well.
+
+ -- Add new cyglink linker for use with cygwin.
+
+ -- Fix leaking file handles to subprocesses
+
+ -- Support read-only cache (--cache-readonly)
+
+ -- Add Pseudo command to mark targets that shouldn't exist after building
+
Please note the following important changes since release 2.2.0:
-- SUPPORT FOR PYTHON VERSIONS BEFORE 2.7 IS NOW DEPRECATED
@@ -1072,20 +1091,9 @@ RELEASE 2.3.0 - Mon, 02 Mar 2013 13:22:29 -0400
Thank you for your interest, and please let us know how we can help
improve SCons for your needs.
-Steven Knight
-knight at baldmt dot com
-http://www.baldmt.com/~knight/
-
-With plenty of help from the SCons Development team:
- Chad Austin
- Charles Crain
- Bill Deegan
- Steve Leblanc
- Greg Noel
- Gary Oberbrunner
- Anthony Roach
- Greg Spencer
- Christoph Wiedemann
-
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-src/Announce.txt 2013/03/03 09:48:35 garyo
+-- The SCons Development Team
+ Gary Oberbrunner and Bill Deegan, maintainers
+ Thanks to all the contributors for all your help!
+
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+src/Announce.txt 2014/03/02 14:18:15 garyo
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index c579595..0b7c192 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -4,6 +4,87 @@
Change Log
+RELEASE 2.3.1 - Mon, 02 Mar 2014 13:53:45 -0400
+
+ From Andrew Featherstone:
+ - Added support for EPUB output format to the DocBook tool.
+
+ From Tom Tanner:
+ - Stop leaking file handles to subprocesses by switching to using subprocess
+ always.
+ - Allow multiple options to be specified with --debug=a,b,c
+ - Add support for a readonly cache (--cache-readonly)
+ - Always print stats if requested
+ - Generally try harder to print out a message on build errors
+ - Adds a switch to warn on missing targets
+ - Add Pseudo command to mark targets which should not exist after
+ they are built.
+
+ From Bogdan Tenea:
+ - Check for 8.3 filenames on cygwin as well as win32 to make variant_dir work properly.
+
+ From Alexandre Feblot:
+ - Make sure SharedLibrary depends on all dependent libs (by depending on SHLINKCOM)
+
+ From Stefan Sperling:
+ - Fixed the setup of linker flags for a versioned SharedLibrary
+ under OpenBSD (#2916).
+
+ From Antonio Cavallo:
+ - Improve error if Visual Studio bat file not found.
+
+ From Manuel Francisco Naranjo:
+ - Allow Subst.Literal string objects to be compared with each other,
+ so they work better in AddUnique() and Remove().
+
+ From David Rothenberger:
+ - Added cyglink linker that uses Cygwin naming conventions for
+ shared libraries and automatically generates import libraries.
+
+ From Dirk Baechle:
+ - Update bootstrap.py so it can be used from any dir, to run
+ SCons from a source (non-installed) dir.
+ - Count statistics of instances are now collected only when
+ the --debug=count command-line option is used (#2922).
+ - Added release_target_info() to File nodes, which helps to
+ reduce memory consumption in clean builds and update runs
+ of large projects.
+ - Fixed the handling of long options in the command-line
+ parsing (#2929).
+ - Fixed misspelled variable in intelc.py (#2928).
+
+ From Gary Oberbrunner:
+ - Test harness: fail_test() can now print a message to help debugging.
+
+ From Anatoly Techtonik:
+ - Require rpmbuild when building SCons package.
+ - Print full stack on certain errors, for debugging.
+ - Improve documentation for Textfile builder.
+
+ From William Deegan:
+ - VS2012 & VS2010 Resolve initialization issues by adding path to reg.exe
+ in shell used to run batch files.
+ - MSVC Support fixed defaulting TARGET_ARCH to HOST_ARCH. It should be
+ None if not explicitly set.
+ - MSVC Fixed issue where if more than one Architectures compilers are
+ detected, it would take the last one found, and not the first.
+
+ From Philipp Kraus:
+ - Added optional ZIPROOT to Zip tool.
+
+ From Dirk Baechle:
+ - Replaced old SGML-based documentation toolchain with a more modern
+ approach, that also requires less external dependencies (programs and
+ Python packages). Added a customized Docbook XSD for strict validation of
+ all input XML files.
+
+ From Luca Falavigna:
+ - Fixed spelling errors in MAN pages (#2897).
+
+ From Michael McDougall:
+ - Fixed description of ignore_case for EnumVariable in the
+ MAN page (#2774).
+
RELEASE 2.3.0 - Mon, 02 Mar 2013 13:22:29 -0400
From Anatoly Techtonik:
@@ -160,7 +241,7 @@ RELEASE 2.1.0 - Mon, 09 Sep 2011 20:54:57 -0700
- Fix Delete to be able to delete broken symlinks and dir
symlinks.
- From Robert Lehr:
+ From Imran Fanaswala and Robert Lehr:
- Handle .output file generated by bison/yacc properly. Cleaning it
when necessary.
@@ -5652,5 +5733,6 @@ A brief overview of important functionality available in release 0.01:
- Windows installer available.
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-src/CHANGES.txt 2013/03/03 09:48:35 garyo
+
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+src/CHANGES.txt 2014/03/02 14:18:15 garyo
diff --git a/src/LICENSE.txt b/src/LICENSE.txt
index 69e5559..dab75df 100644
--- a/src/LICENSE.txt
+++ b/src/LICENSE.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/src/README.txt b/src/README.txt
index 77a7a3e..f9d8242 100644
--- a/src/README.txt
+++ b/src/README.txt
@@ -2,7 +2,7 @@
SCons - a software construction tool
- Version 2.3.0
+ Version 2.3.1
This is SCons, a tool for building software (and other files). SCons is
@@ -56,7 +56,7 @@ provided Python-standard setup script as follows:
By default, the above command will do the following:
- -- Install the version-numbered "scons-2.3.0" and "sconsign-2.3.0"
+ -- Install the version-numbered "scons-2.3.1" and "sconsign-2.3.1"
scripts in the default system script directory (/usr/bin or
C:\Python*\Scripts, for example). This can be disabled by
specifying the "--no-version-script" option on the command
@@ -70,17 +70,17 @@ By default, the above command will do the following:
making it the default on your system.
On UNIX or Linux systems, you can have the "scons" and "sconsign"
- scripts be hard links or symbolic links to the "scons-2.3.0" and
- "sconsign-2.3.0" scripts by specifying the "--hardlink-scons"
+ scripts be hard links or symbolic links to the "scons-2.3.1" and
+ "sconsign-2.3.1" scripts by specifying the "--hardlink-scons"
or "--symlink-scons" options on the command line.
- -- Install "scons-2.3.0.bat" and "scons.bat" wrapper scripts in the
+ -- Install "scons-2.3.1.bat" and "scons.bat" wrapper scripts in the
Python prefix directory on Windows (C:\Python*, for example).
This can be disabled by specifying the "--no-install-bat" option
on the command line.
On UNIX or Linux systems, the "--install-bat" option may be
- specified to have "scons-2.3.0.bat" and "scons.bat" files
+ specified to have "scons-2.3.1.bat" and "scons.bat" files
installed in the default system script directory, which is useful
if you want to install SCons in a shared file system directory
that can be used to execute SCons from both UNIX/Linux and
@@ -88,7 +88,7 @@ By default, the above command will do the following:
-- Install the SCons build engine (a Python module) in an
appropriate version-numbered SCons library directory
- (/usr/lib/scons-2.3.0 or C:\Python*\scons-2.3.0, for example).
+ (/usr/lib/scons-2.3.1 or C:\Python*\scons-2.3.1, for example).
See below for more options related to installing the build
engine library.
@@ -239,5 +239,5 @@ With plenty of help from the SCons Development team:
Greg Spencer
Christoph Wiedemann
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-src/README.txt 2013/03/03 09:48:35 garyo
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+src/README.txt 2014/03/02 14:18:15 garyo
diff --git a/src/RELEASE.txt b/src/RELEASE.txt
index d55d168..4cda76d 100644
--- a/src/RELEASE.txt
+++ b/src/RELEASE.txt
@@ -1,47 +1,65 @@
- A new SCons release, 2.3.0, is now available
+ A new SCons release, 2.3.1, is now available
on the SCons download page:
http://www.scons.org/download.php
- This release adds several new features and fixes many issues.
+ This release adds several new features and fixes many issues,
+ including a serious regression in linking (failure to re-link if
+ linker options are changed).
- Here is a summary of the changes since 2.2:
+ Here is a summary of the changes since 2.3.0:
NEW FUNCTIONALITY
- - Versioned shared library support for Linux and Mac:
- Add SHLIBVERSION as an option that tells SharedLibrary to build
- a versioned shared library and create the required symlinks.
- Add builder InstallVersionedLib to create the required symlinks
- installing a versioned shared library.
+ - Add Pseudo command to mark targets which should not exist after
+ they are built.
+ - Add support for a readonly cache (--cache-readonly)
+ - Added cyglink linker that uses Cygwin naming conventions for
+ shared libraries and automatically generates import libraries.
+ - Added optional ZIPROOT to Zip tool.
DEPRECATED FUNCTIONALITY
- - Removed a lot of Python 2.3 and older support code
- - Hide deprecated --debug={dtree,stree,tree} from --help output
+ -
CHANGED/ENHANCED EXISTING FUNCTIONALITY
- - No changes
+ - DocBook tool can now output EPUB format
+ - Allow multiple options to be specified with --debug=a,b,c
+ - Update bootstrap.py so it can be used from any dir, to run
+ SCons from a source (non-installed) dir.
+ - Added release_target_info() to File nodes, which helps to
+ reduce memory consumption in clean builds and update runs
+ of large projects.
+ - Print full stack on certain errors, for debugging.
+ - Improve documentation for Textfile builder.
FIXES
- - Fix subprocess spawning on Windows. Work around a Windows
- bug that can crash python occasionally when using -jN. (#2449)
- - Fix nested LIBPATH expansion by flattening sequences in subst_path.
- - Fix WiX Tool to use .wixobj rather than .wxiobj for compiler output
- - Add MSVC10 and MSVC11 support to get_output low-level bat script runner.
- - Fix MSVS solution generation for VS11, and fixed tests.
-
- IMPROVEMENTS
-
- - Error messages from option parser now include hints about valid choices
- - Support building with WiX releases after 2.0
- - Print target name with command execution time with --debug=time
- - Updated the TeX builder to support the \newglossary command
- in LaTeX's glossaries package and the files it creates.
- - Improve support for new versions of biblatex in the TeX builder
- so biber is called automatically if biblatex requires it.
+ - Stop leaking file handles to subprocesses by switching to using subprocess
+ always.
+ - Generally try harder to print out a message on build errors
+ - Added a switch to warn on missing targets
+ - Always print stats if requested
+ - Check for 8.3 filenames on cygwin as well as win32 to make variant_dir work properly.
+ - Make sure SharedLibrary depends on all dependent libs (by depending on SHLINKCOM)
+ - Fixed the setup of linker flags for a versioned SharedLibrary
+ under OpenBSD (#2916).
+ - Improve error if Visual Studio bat file not found.
+ - Allow Subst.Literal string objects to be compared with each other,
+ so they work better in AddUnique() and Remove().
+ - Fixed the handling of long options in the command-line
+ parsing (#2929).
+ - Fixed misspelled variable in intelc.py (#2928).
+ - VS2012 & VS2010: Resolve initialization issues by adding path to reg.exe
+ in shell used to run batch files.
+ - MSVC Support: fixed defaulting TARGET_ARCH to HOST_ARCH. It should be
+ None if not explicitly set.
+ - MSVC: Fixed issue where if more than one Architectures compilers are
+ detected, it would take the last one found, and not the first.
+ - Fixed spelling errors in MAN pages (#2897).
+ - Fixed description of ignore_case for EnumVariable in the
+ MAN page (#2774).
PACKAGING
@@ -49,47 +67,57 @@
DEVELOPMENT
- - Updated test framework to support dir and file fixtures and
- added ability to test external (out-of-tree) tools.
- See doc in QMTest/test-framework.rst.
- - Added ability to run scripts/scons.py directly from source checkout
- - Several fixes for runtest.py
- - Fixed several errors in the test suite.
- - Add -jN support to runtest.py to run tests in parallel
-
+ - Count statistics of instances are now collected only when
+ the --debug=count command-line option is used (#2922).
+ - Test harness: fail_test() can now print a message to help debugging.
+ - Require rpmbuild when building SCons package.
+ - Replaced old SGML-based documentation toolchain with a more modern
+ approach, that also requires less external dependencies (programs and
+ Python packages). Added a customized Docbook XSD for strict validation of
+ all input XML files.
Thanks to:
Dirk Baechle,
Vincent Beffar,
Thomas Berg,
+ Antonio Cavallo,
Jean-François Colson,
Bauke Conijn,
Bill Deegan,
Ken Deeter,
dubcanada on Bitbucket,
Luca Falavigna,
+ Andrew Featherstone,
+ Alexandre Feblot,
Alexander Goomenyuk,
Justin Gullingsrud,
Joshua Hughes,
Alexey Klimkin,
Steven Knight,
Arve Knudsen,
+ Philipp Kraus,
Jean-Baptiste Lab,
Juan Lang,
Rob Managan,
+ Michael McDougall,
Mortoray,
+ Manuel Francisco Naranjo,
Gary Oberbrunner,
Alexey Petruchik,
Evgeny Podjachev,
+ David Rothenberger,
smallbub on Bitbucket,
Sohail Somani,
+ Stefan Sperling,
+ Tom Tanner,
Anatoly Techtonik,
+ Bogdan Tenea,
Paweł Tomulik,
Greg Ward,
Allen Weeks,
Russel Winder,
Joe Zuntz
- for their contributions to this release.
+ for their contributions to this and prior releases.
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-src/RELEASE.txt 2013/03/03 09:48:35 garyo
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+src/RELEASE.txt 2014/03/02 14:18:15 garyo
diff --git a/src/engine/MANIFEST-xml.in b/src/engine/MANIFEST-xml.in
index d2df751..a657734 100644
--- a/src/engine/MANIFEST-xml.in
+++ b/src/engine/MANIFEST-xml.in
@@ -1,107 +1,7 @@
-SCons/Action.xml
-SCons/Defaults.xml
-SCons/Environment.xml
-SCons/Platform/__init__.xml
-SCons/Platform/posix.xml
-SCons/Platform/sunos.xml
-SCons/Platform/win32.xml
+SCons/*.xml
+SCons/Platform/*.xml
SCons/Scanner/__init__.xml
-SCons/Script/Main.xml
-SCons/Script/SConscript.xml
-SCons/Subst.xml
-SCons/Tool/386asm.xml
-SCons/Tool/BitKeeper.xml
-SCons/Tool/CVS.xml
-SCons/Tool/Perforce.xml
-SCons/Tool/RCS.xml
-SCons/Tool/SCCS.xml
-SCons/Tool/Subversion.xml
-SCons/Tool/__init__.xml
-SCons/Tool/aixc++.xml
-SCons/Tool/aixcc.xml
-SCons/Tool/aixf77.xml
-SCons/Tool/aixlink.xml
-SCons/Tool/applelink.xml
-SCons/Tool/ar.xml
-SCons/Tool/as.xml
-SCons/Tool/bcc32.xml
-SCons/Tool/c++.xml
-SCons/Tool/cc.xml
-SCons/Tool/cvf.xml
-SCons/Tool/default.xml
-SCons/Tool/dmd.xml
-SCons/Tool/dvi.xml
-SCons/Tool/dvipdf.xml
-SCons/Tool/dvips.xml
-SCons/Tool/f77.xml
-SCons/Tool/f90.xml
-SCons/Tool/f95.xml
-SCons/Tool/fortran.xml
-SCons/Tool/g++.xml
-SCons/Tool/g77.xml
-SCons/Tool/gas.xml
-SCons/Tool/gcc.xml
-SCons/Tool/gfortran.xml
-SCons/Tool/gnulink.xml
-SCons/Tool/gs.xml
-SCons/Tool/hpc++.xml
-SCons/Tool/hpcc.xml
-SCons/Tool/hplink.xml
-SCons/Tool/icc.xml
-SCons/Tool/icl.xml
-SCons/Tool/ifl.xml
-SCons/Tool/ifort.xml
-SCons/Tool/ilink.xml
-SCons/Tool/ilink32.xml
-SCons/Tool/install.xml
-SCons/Tool/intelc.xml
-SCons/Tool/jar.xml
-SCons/Tool/javac.xml
-SCons/Tool/javah.xml
-SCons/Tool/latex.xml
-SCons/Tool/lex.xml
-SCons/Tool/link.xml
-SCons/Tool/linkloc.xml
-SCons/Tool/m4.xml
-SCons/Tool/masm.xml
-SCons/Tool/midl.xml
-SCons/Tool/mingw.xml
-SCons/Tool/mslib.xml
-SCons/Tool/mslink.xml
-SCons/Tool/mssdk.xml
-SCons/Tool/msvc.xml
-SCons/Tool/msvs.xml
-SCons/Tool/mwcc.xml
-SCons/Tool/mwld.xml
-SCons/Tool/nasm.xml
-SCons/Tool/packaging.xml
+SCons/Script/*.xml
+SCons/Tool/*.xml
+SCons/Tool/docbook/__init__.xml
SCons/Tool/packaging/__init__.xml
-SCons/Tool/pdf.xml
-SCons/Tool/pdflatex.xml
-SCons/Tool/pdftex.xml
-SCons/Tool/qt.xml
-SCons/Tool/rmic.xml
-SCons/Tool/rpcgen.xml
-SCons/Tool/sgiar.xml
-SCons/Tool/sgic++.xml
-SCons/Tool/sgicc.xml
-SCons/Tool/sgilink.xml
-SCons/Tool/sunar.xml
-SCons/Tool/sunc++.xml
-SCons/Tool/suncc.xml
-SCons/Tool/sunf77.xml
-SCons/Tool/sunf90.xml
-SCons/Tool/sunf95.xml
-SCons/Tool/sunlink.xml
-SCons/Tool/swig.xml
-SCons/Tool/tar.xml
-SCons/Tool/tex.xml
-SCons/Tool/textfile.xml
-SCons/Tool/tlib.xml
-SCons/Tool/yacc.xml
-SCons/Tool/zip.xml
-SCons/Tool/gettext.xml
-SCons/Tool/msgfmt.xml
-SCons/Tool/msginit.xml
-SCons/Tool/msgmerge.xml
-SCons/Tool/xgettext.xml
diff --git a/src/engine/MANIFEST.in b/src/engine/MANIFEST.in
index b12848a..0afda50 100644
--- a/src/engine/MANIFEST.in
+++ b/src/engine/MANIFEST.in
@@ -1,14 +1,7 @@
SCons/__init__.py
SCons/Action.py
SCons/Builder.py
-SCons/compat/__init__.py
-SCons/compat/_scons_builtins.py
-SCons/compat/_scons_collections.py
-SCons/compat/_scons_dbm.py
-SCons/compat/_scons_hashlib.py
-SCons/compat/_scons_io.py
-SCons/compat/_scons_sets.py
-SCons/compat/_scons_subprocess.py
+SCons/compat/*.py
SCons/CacheDir.py
SCons/Conftest.py
SCons/cpp.py
@@ -25,12 +18,7 @@ SCons/Node/__init__.py
SCons/Node/Alias.py
SCons/Node/FS.py
SCons/Node/Python.py
-SCons/Options/__init__.py
-SCons/Options/BoolOption.py
-SCons/Options/EnumOption.py
-SCons/Options/ListOption.py
-SCons/Options/PackageOption.py
-SCons/Options/PathOption.py
+SCons/Options/*.py
SCons/PathList.py
SCons/Platform/__init__.py
SCons/Platform/aix.py
@@ -74,10 +62,12 @@ SCons/Tool/bcc32.py
SCons/Tool/BitKeeper.py
SCons/Tool/c++.py
SCons/Tool/cc.py
+SCons/Tool/cyglink.py
SCons/Tool/cvf.py
SCons/Tool/CVS.py
SCons/Tool/default.py
SCons/Tool/dmd.py
+SCons/Tool/docbook/__init__.py
SCons/Tool/dvi.py
SCons/Tool/dvipdf.py
SCons/Tool/dvips.py
@@ -134,16 +124,7 @@ SCons/Tool/msvs.py
SCons/Tool/mwcc.py
SCons/Tool/mwld.py
SCons/Tool/nasm.py
-SCons/Tool/packaging/__init__.py
-SCons/Tool/packaging/ipk.py
-SCons/Tool/packaging/msi.py
-SCons/Tool/packaging/rpm.py
-SCons/Tool/packaging/src_tarbz2.py
-SCons/Tool/packaging/src_targz.py
-SCons/Tool/packaging/src_zip.py
-SCons/Tool/packaging/tarbz2.py
-SCons/Tool/packaging/targz.py
-SCons/Tool/packaging/zip.py
+SCons/Tool/packaging/*.py
SCons/Tool/pdf.py
SCons/Tool/pdflatex.py
SCons/Tool/pdftex.py
diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py
index 0021df6..0e31124 100644
--- a/src/engine/SCons/Action.py
+++ b/src/engine/SCons/Action.py
@@ -76,7 +76,7 @@ way for wrapping up the functions.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -97,7 +97,7 @@ way for wrapping up the functions.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Action.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Action.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -109,6 +109,7 @@ import re
import sys
import subprocess
+import SCons.Debug
from SCons.Debug import logInstanceCreation
import SCons.Errors
import SCons.Executor
@@ -439,7 +440,8 @@ class ActionBase(object):
vl = self.get_varlist(target, source, env)
if is_String(vl): vl = (vl,)
for v in vl:
- result.append(env.subst('${'+v+'}'))
+ # do the subst this way to ignore $(...$) parts:
+ result.append(env.subst_target_source('${'+v+'}', SCons.Subst.SUBST_SIG, target, source))
return ''.join(result)
def __add__(self, other):
@@ -698,7 +700,7 @@ class CommandAction(_ActionAction):
# factory above does). cmd will be passed to
# Environment.subst_list() for substituting environment
# variables.
- if __debug__: logInstanceCreation(self, 'Action.CommandAction')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.CommandAction')
_ActionAction.__init__(self, **kw)
if is_List(cmd):
@@ -855,7 +857,7 @@ class CommandAction(_ActionAction):
class CommandGeneratorAction(ActionBase):
"""Class for command-generator actions."""
def __init__(self, generator, kw):
- if __debug__: logInstanceCreation(self, 'Action.CommandGeneratorAction')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.CommandGeneratorAction')
self.generator = generator
self.gen_kw = kw
self.varlist = kw.get('varlist', ())
@@ -944,7 +946,7 @@ class CommandGeneratorAction(ActionBase):
class LazyAction(CommandGeneratorAction, CommandAction):
def __init__(self, var, kw):
- if __debug__: logInstanceCreation(self, 'Action.LazyAction')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.LazyAction')
#FUTURE CommandAction.__init__(self, '${'+var+'}', **kw)
CommandAction.__init__(self, '${'+var+'}', **kw)
self.var = SCons.Util.to_String(var)
@@ -986,7 +988,7 @@ class FunctionAction(_ActionAction):
"""Class for Python function actions."""
def __init__(self, execfunction, kw):
- if __debug__: logInstanceCreation(self, 'Action.FunctionAction')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.FunctionAction')
self.execfunction = execfunction
try:
@@ -1108,7 +1110,7 @@ class FunctionAction(_ActionAction):
class ListAction(ActionBase):
"""Class for lists of other actions."""
def __init__(self, actionlist):
- if __debug__: logInstanceCreation(self, 'Action.ListAction')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.ListAction')
def list_of_actions(x):
if isinstance(x, ActionBase):
return x
diff --git a/src/engine/SCons/Action.xml b/src/engine/SCons/Action.xml
index 3d1fda4..9c120e2 100644
--- a/src/engine/SCons/Action.xml
+++ b/src/engine/SCons/Action.xml
@@ -1,15 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<cvar name="IMPLICIT_COMMAND_DEPENDENCIES">
<summary>
+<para>
Controls whether or not SCons will
add implicit dependencies for the commands
executed to build targets.
+</para>
+<para>
By default, SCons will add
to each target
an implicit dependency on the command
@@ -21,7 +43,9 @@ found by searching the
variable in the
<varname>ENV</varname>
environment used to execute the command.
+</para>
+<para>
If the construction variable
&cv-IMPLICIT_COMMAND_DEPENDENCIES;
is set to a false value
@@ -32,15 +56,17 @@ etc.),
then the implicit dependency will
not be added to the targets
built with that construction environment.
+</para>
-<example>
+<example_commands>
env = Environment(IMPLICIT_COMMAND_DEPENDENCIES = 0)
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="PRINT_CMD_LINE_FUNC">
<summary>
+<para>
A Python function used to print the command lines as they are executed
(assuming command printing is not disabled by the
<option>-q</option>
@@ -56,41 +82,51 @@ the target being built (file node, list, or string name(s)),
the source(s) used (file node, list, or string name(s)), and
<varname>env</varname>,
the environment being used.
+</para>
+<para>
The function must do the printing itself. The default implementation,
used if this variable is not set or is None, is:
-<example>
+</para>
+<example_commands>
def print_cmd_line(s, target, source, env):
sys.stdout.write(s + "\n")
-</example>
+</example_commands>
+<para>
Here's an example of a more interesting function:
+</para>
-<example>
+<example_commands>
def print_cmd_line(s, target, source, env):
sys.stdout.write("Building %s -> %s...\n" %
(' and '.join([str(x) for x in source]),
' and '.join([str(x) for x in target])))
env=Environment(PRINT_CMD_LINE_FUNC=print_cmd_line)
env.Program('foo', 'foo.c')
-</example>
+</example_commands>
+<para>
This just prints "Building <varname>targetname</varname> from <varname>sourcename</varname>..." instead
of the actual commands.
Such a function could also log the actual commands to a log file,
for example.
+</para>
</summary>
</cvar>
<cvar name="SPAWN">
<summary>
+<para>
A command interpreter function that will be called to execute command line
strings. The function must expect the following arguments:
+</para>
-<example>
+<example_commands>
def spawn(shell, escape, cmd, args, env):
-</example>
+</example_commands>
+<para>
<varname>sh</varname>
is a string naming the shell program to use.
<varname>escape</varname>
@@ -103,5 +139,8 @@ is the arguments to the command.
<varname>env</varname>
is a dictionary of the environment variables
in which the command should be executed.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py
index 71125ca..dfc43fb 100644
--- a/src/engine/SCons/ActionTests.py
+++ b/src/engine/SCons/ActionTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/ActionTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/ActionTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py
index 2c9958f..0b5f291 100644
--- a/src/engine/SCons/Builder.py
+++ b/src/engine/SCons/Builder.py
@@ -76,7 +76,7 @@ There are the following methods for internal use within this module:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -97,11 +97,12 @@ There are the following methods for internal use within this module:
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Builder.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Builder.py 2014/03/02 14:18:15 garyo"
import collections
import SCons.Action
+import SCons.Debug
from SCons.Debug import logInstanceCreation
from SCons.Errors import InternalError, UserError
import SCons.Executor
@@ -225,7 +226,7 @@ class OverrideWarner(collections.UserDict):
"""
def __init__(self, dict):
collections.UserDict.__init__(self, dict)
- if __debug__: logInstanceCreation(self, 'Builder.OverrideWarner')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.OverrideWarner')
self.already_warned = None
def warn(self):
if self.already_warned:
@@ -376,7 +377,7 @@ class BuilderBase(object):
src_builder = None,
ensure_suffix = False,
**overrides):
- if __debug__: logInstanceCreation(self, 'Builder.BuilderBase')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.BuilderBase')
self._memo = {}
self.action = action
self.multi = multi
@@ -847,7 +848,7 @@ class CompositeBuilder(SCons.Util.Proxy):
"""
def __init__(self, builder, cmdgen):
- if __debug__: logInstanceCreation(self, 'Builder.CompositeBuilder')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.CompositeBuilder')
SCons.Util.Proxy.__init__(self, builder)
# cmdgen should always be an instance of DictCmdGenerator.
diff --git a/src/engine/SCons/BuilderTests.py b/src/engine/SCons/BuilderTests.py
index 65c5186..ed079e8 100644
--- a/src/engine/SCons/BuilderTests.py
+++ b/src/engine/SCons/BuilderTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/BuilderTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/BuilderTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/CacheDir.py b/src/engine/SCons/CacheDir.py
index aef03b4..8ac8fa9 100644
--- a/src/engine/SCons/CacheDir.py
+++ b/src/engine/SCons/CacheDir.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/CacheDir.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/CacheDir.py 2014/03/02 14:18:15 garyo"
__doc__ = """
CacheDir support
@@ -37,6 +37,7 @@ cache_enabled = True
cache_debug = False
cache_force = False
cache_show = False
+cache_readonly = False
def CacheRetrieveFunc(target, source, env):
t = target[0]
@@ -70,6 +71,8 @@ CacheRetrieve = SCons.Action.Action(CacheRetrieveFunc, CacheRetrieveString)
CacheRetrieveSilent = SCons.Action.Action(CacheRetrieveFunc, None)
def CachePushFunc(target, source, env):
+ if cache_readonly: return
+
t = target[0]
if t.nocache:
return
@@ -150,6 +153,9 @@ class CacheDir(object):
def is_enabled(self):
return (cache_enabled and not self.path is None)
+ def is_readonly(self):
+ return cache_readonly
+
def cachepath(self, node):
"""
"""
@@ -201,7 +207,7 @@ class CacheDir(object):
return False
def push(self, node):
- if not self.is_enabled():
+ if self.is_readonly() or not self.is_enabled():
return
return CachePush(node, [], node.get_build_env())
diff --git a/src/engine/SCons/CacheDirTests.py b/src/engine/SCons/CacheDirTests.py
index 1cc0f7a..116d902 100644
--- a/src/engine/SCons/CacheDirTests.py
+++ b/src/engine/SCons/CacheDirTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/CacheDirTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/CacheDirTests.py 2014/03/02 14:18:15 garyo"
import os.path
import shutil
diff --git a/src/engine/SCons/Conftest.py b/src/engine/SCons/Conftest.py
index d466278..e9702ff 100644
--- a/src/engine/SCons/Conftest.py
+++ b/src/engine/SCons/Conftest.py
@@ -156,7 +156,7 @@ def CheckCC(context):
too, so that it can test against non working flags.
"""
- context.Display("Checking whether the C compiler works")
+ context.Display("Checking whether the C compiler works... ")
text = """
int main()
{
@@ -176,7 +176,7 @@ def CheckSHCC(context):
too, so that it can test against non working flags.
"""
- context.Display("Checking whether the (shared) C compiler works")
+ context.Display("Checking whether the (shared) C compiler works... ")
text = """
int foo()
{
@@ -196,7 +196,7 @@ def CheckCXX(context):
too, so that it can test against non working flags.
"""
- context.Display("Checking whether the C++ compiler works")
+ context.Display("Checking whether the C++ compiler works... ")
text = """
int main()
{
@@ -216,7 +216,7 @@ def CheckSHCXX(context):
too, so that it can test against non working flags.
"""
- context.Display("Checking whether the (shared) C++ compiler works")
+ context.Display("Checking whether the (shared) C++ compiler works... ")
text = """
int main()
{
diff --git a/src/engine/SCons/Debug.py b/src/engine/SCons/Debug.py
index 41b0ab6..08d7570 100644
--- a/src/engine/SCons/Debug.py
+++ b/src/engine/SCons/Debug.py
@@ -6,7 +6,7 @@ needed by most users.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,13 +28,17 @@ needed by most users.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Debug.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Debug.py 2014/03/02 14:18:15 garyo"
import os
import sys
import time
import weakref
+# Global variable that gets set to 'True' by the Main script,
+# when the creation of class instances should get tracked.
+track_instances = False
+# List of currently tracked classes
tracked_classes = {}
def logInstanceCreation(instance, name=None):
@@ -109,14 +113,15 @@ else:
return res[4]
# returns caller's stack
-def caller_stack(*backlist):
+def caller_stack():
import traceback
- if not backlist:
- backlist = [0]
+ tb = traceback.extract_stack()
+ # strip itself and the caller from the output
+ tb = tb[:-2]
result = []
- for back in backlist:
- tb = traceback.extract_stack(limit=3+back)
- key = tb[0][:3]
+ for back in tb:
+ # (filename, line number, function name, text)
+ key = back[:3]
result.append('%s:%d(%s)' % func_shorten(key))
return result
diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py
index 219190a..dd726f1 100644
--- a/src/engine/SCons/Defaults.py
+++ b/src/engine/SCons/Defaults.py
@@ -10,7 +10,7 @@ from distutils.msvccompiler.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ from distutils.msvccompiler.
#
from __future__ import division
-__revision__ = "src/engine/SCons/Defaults.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Defaults.py 2014/03/02 14:18:15 garyo"
import os
diff --git a/src/engine/SCons/Defaults.xml b/src/engine/SCons/Defaults.xml
index e3654e9..194d639 100644
--- a/src/engine/SCons/Defaults.xml
+++ b/src/engine/SCons/Defaults.xml
@@ -1,26 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<cvar name ="_concat">
<summary>
+<para>
A function used to produce variables like &cv-_CPPINCFLAGS;. It takes
four or five
arguments: a prefix to concatenate onto each element, a list of
elements, a suffix to concatenate onto each element, an environment
for variable interpolation, and an optional function that will be
called to transform the list before concatenation.
+</para>
-<example>
+<example_commands>
env['_CPPINCFLAGS'] = '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs)} $)',
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="CONFIGUREDIR">
<summary>
+<para>
The name of the directory in which
Configure context test files are written.
The default is
@@ -29,11 +51,13 @@ in the top-level directory
containing the
<filename>SConstruct</filename>
file.
+</para>
</summary>
</cvar>
<cvar name="CONFIGURELOG">
<summary>
+<para>
The name of the Configure context log file.
The default is
<filename>config.log</filename>
@@ -41,11 +65,13 @@ in the top-level directory
containing the
<filename>SConstruct</filename>
file.
+</para>
</summary>
</cvar>
<cvar name="_CPPDEFFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the C preprocessor command-line options
to define values.
@@ -53,30 +79,36 @@ The value of &cv-_CPPDEFFLAGS; is created
by appending &cv-CPPDEFPREFIX; and &cv-CPPDEFSUFFIX;
to the beginning and end
of each definition in &cv-CPPDEFINES;.
+</para>
</summary>
</cvar>
<cvar name="CPPDEFINES">
<summary>
+<para>
A platform independent specification of C preprocessor definitions.
The definitions will be added to command lines
through the automatically-generated
&cv-_CPPDEFFLAGS; construction variable (see above),
which is constructed according to
the type of value of &cv-CPPDEFINES;:
+</para>
+<para>
If &cv-CPPDEFINES; is a string,
the values of the
&cv-CPPDEFPREFIX; and &cv-CPPDEFSUFFIX;
construction variables
will be added to the beginning and end.
+</para>
-<example>
+<example_commands>
# Will add -Dxyz to POSIX compiler command lines,
# and /Dxyz to Microsoft Visual C++ command lines.
env = Environment(CPPDEFINES='xyz')
-</example>
+</example_commands>
+<para>
If &cv-CPPDEFINES; is a list,
the values of the
&cv-CPPDEFPREFIX; and &cv-CPPDEFSUFFIX;
@@ -86,13 +118,15 @@ of each element in the list.
If any element is a list or tuple,
then the first item is the name being
defined and the second item is its value:
+</para>
-<example>
+<example_commands>
# Will add -DB=2 -DA to POSIX compiler command lines,
# and /DB=2 /DA to Microsoft Visual C++ command lines.
env = Environment(CPPDEFINES=[('B', 2), 'A'])
-</example>
+</example_commands>
+<para>
If &cv-CPPDEFINES; is a dictionary,
the values of the
&cv-CPPDEFPREFIX; and &cv-CPPDEFSUFFIX;
@@ -110,37 +144,43 @@ to ensure that the order of the options on the
command line is consistent each time
&scons;
is run.
+</para>
-<example>
+<example_commands>
# Will add -DA -DB=2 to POSIX compiler command lines,
# and /DA /DB=2 to Microsoft Visual C++ command lines.
env = Environment(CPPDEFINES={'B':2, 'A':None})
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="CPPDEFPREFIX">
<summary>
+<para>
The prefix used to specify preprocessor definitions
on the C compiler command line.
This will be appended to the beginning of each definition
in the &cv-CPPDEFINES; construction variable
when the &cv-_CPPDEFFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="CPPDEFSUFFIX">
<summary>
+<para>
The suffix used to specify preprocessor definitions
on the C compiler command line.
This will be appended to the end of each definition
in the &cv-CPPDEFINES; construction variable
when the &cv-_CPPDEFFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="_CPPINCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the C preprocessor command-line options
for specifying directories to be searched for include files.
@@ -148,11 +188,13 @@ The value of &cv-_CPPINCFLAGS; is created
by appending &cv-INCPREFIX; and &cv-INCSUFFIX;
to the beginning and end
of each directory in &cv-CPPPATH;.
+</para>
</summary>
</cvar>
<cvar name="CPPPATH">
<summary>
+<para>
The list of directories that the C preprocessor will search for include
directories. The C/C++ implicit dependency scanner will search these
directories for include files. Don't explicitly put include directory
@@ -162,20 +204,24 @@ directory names in CPPPATH will be looked-up relative to the SConscript
directory when they are used in a command. To force
&scons;
to look-up a directory relative to the root of the source tree use #:
+</para>
-<example>
+<example_commands>
env = Environment(CPPPATH='#/include')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
include = Dir('include')
env = Environment(CPPPATH=include)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-_CPPINCFLAGS;
@@ -189,94 +235,112 @@ of each directory in &cv-CPPPATH;.
Any command lines you define that need
the CPPPATH directory list should
include &cv-_CPPINCFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(CCCOM="my_compiler $_CPPINCFLAGS -c -o $TARGET $SOURCE")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="Dir">
<summary>
+<para>
A function that converts a string
into a Dir instance relative to the target being built.
+</para>
</summary>
</cvar>
<cvar name="Dirs">
<summary>
+<para>
A function that converts a list of strings
into a list of Dir instances relative to the target being built.
+</para>
</summary>
</cvar>
<cvar name="DSUFFIXES">
<summary>
+<para>
The list of suffixes of files that will be scanned
for imported D package files.
The default list is:
+</para>
-<example>
+<example_commands>
['.d']
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="File">
<summary>
+<para>
A function that converts a string into a File instance relative to the
target being built.
+</para>
</summary>
</cvar>
<cvar name="IDLSUFFIXES">
<summary>
+<para>
The list of suffixes of files that will be scanned
for IDL implicit dependencies
(#include or import lines).
The default list is:
+</para>
-<example>
+<example_commands>
[".idl", ".IDL"]
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="INCPREFIX">
<summary>
+<para>
The prefix used to specify an include directory on the C compiler command
line.
This will be appended to the beginning of each directory
in the &cv-CPPPATH; and &cv-FORTRANPATH; construction variables
when the &cv-_CPPINCFLAGS; and &cv-_FORTRANINCFLAGS;
variables are automatically generated.
+</para>
</summary>
</cvar>
<cvar name="INCSUFFIX">
<summary>
+<para>
The suffix used to specify an include directory on the C compiler command
line.
This will be appended to the end of each directory
in the &cv-CPPPATH; and &cv-FORTRANPATH; construction variables
when the &cv-_CPPINCFLAGS; and &cv-_FORTRANINCFLAGS;
variables are automatically generated.
+</para>
</summary>
</cvar>
<cvar name="INSTALL">
<summary>
+<para>
A function to be called to install a file into a
destination file name.
The default function copies the file into the destination
(and sets the destination file's mode and permission bits
to match the source file's).
The function takes the following arguments:
+</para>
-<example>
+<example_commands>
def install(dest, source, env):
-</example>
+</example_commands>
+<para>
<varname>dest</varname>
is the path name of the destination file.
<varname>source</varname>
@@ -285,35 +349,41 @@ is the path name of the source file.
is the construction environment
(a dictionary of construction values)
in force for this file installation.
+</para>
</summary>
</cvar>
<cvar name="INSTALLSTR">
<summary>
+<para>
The string displayed when a file is
installed into a destination file name.
The default is:
-<example>
+</para>
+<example_commands>
Install file: "$SOURCE" as "$TARGET"
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="LATEXSUFFIXES">
<summary>
+<para>
The list of suffixes of files that will be scanned
for LaTeX implicit dependencies
(<literal>\include</literal> or <literal>\import</literal> files).
The default list is:
+</para>
-<example>
+<example_commands>
[".tex", ".ltx", ".latex"]
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="_LIBDIRFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the linker command-line options
for specifying directories to be searched for library.
@@ -321,29 +391,35 @@ The value of &cv-_LIBDIRFLAGS; is created
by appending &cv-LIBDIRPREFIX; and &cv-LIBDIRSUFFIX;
to the beginning and end
of each directory in &cv-LIBPATH;.
+</para>
</summary>
</cvar>
<cvar name="LIBDIRPREFIX">
<summary>
+<para>
The prefix used to specify a library directory on the linker command line.
This will be appended to the beginning of each directory
in the &cv-LIBPATH; construction variable
when the &cv-_LIBDIRFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="LIBDIRSUFFIX">
<summary>
+<para>
The suffix used to specify a library directory on the linker command line.
This will be appended to the end of each directory
in the &cv-LIBPATH; construction variable
when the &cv-_LIBDIRFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="_LIBFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the linker command-line options
for specifying libraries to be linked with the resulting target.
@@ -351,29 +427,35 @@ The value of &cv-_LIBFLAGS; is created
by appending &cv-LIBLINKPREFIX; and &cv-LIBLINKSUFFIX;
to the beginning and end
of each filename in &cv-LIBS;.
+</para>
</summary>
</cvar>
<cvar name="LIBLINKPREFIX">
<summary>
+<para>
The prefix used to specify a library to link on the linker command line.
This will be appended to the beginning of each library
in the &cv-LIBS; construction variable
when the &cv-_LIBFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="LIBLINKSUFFIX">
<summary>
+<para>
The suffix used to specify a library to link on the linker command line.
This will be appended to the end of each library
in the &cv-LIBS; construction variable
when the &cv-_LIBFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="LIBPATH">
<summary>
+<para>
The list of directories that will be searched for libraries.
The implicit dependency scanner will search these
directories for include files. Don't explicitly put include directory
@@ -384,20 +466,24 @@ directory names in LIBPATH will be looked-up relative to the SConscript
directory when they are used in a command. To force
&scons;
to look-up a directory relative to the root of the source tree use #:
+</para>
-<example>
+<example_commands>
env = Environment(LIBPATH='#/libs')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
libs = Dir('libs')
env = Environment(LIBPATH=libs)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-_LIBDIRFLAGS;
@@ -411,20 +497,24 @@ of each directory in &cv-LIBPATH;.
Any command lines you define that need
the LIBPATH directory list should
include &cv-_LIBDIRFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="LIBS">
<summary>
+<para>
A list of one or more libraries
that will be linked with
any executable programs
created by this environment.
+</para>
+<para>
The library list will be added to command lines
through the automatically-generated
&cv-_LIBFLAGS;
@@ -438,11 +528,13 @@ of each filename in &cv-LIBS;.
Any command lines you define that need
the LIBS library list should
include &cv-_LIBFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
-</example>
+</example_commands>
+<para>
If you add a
File
object to the
@@ -454,20 +546,25 @@ and thus the link line, as is, without
or
&cv-LIBLINKSUFFIX;.
For example:
+</para>
-<example>
+<example_commands>
env.Append(LIBS=File('/tmp/mylib.so'))
-</example>
+</example_commands>
+<para>
In all cases, scons will add dependencies from the executable program to
all the libraries in this list.
+</para>
</summary>
</cvar>
<cvar name="RDirs">
<summary>
+<para>
A function that converts a string into a list of Dir instances by
searching the repositories.
+</para>
</summary>
</cvar>
@@ -476,10 +573,14 @@ searching the repositories.
([args])
</arguments>
<summary>
+<para>
Creates and returns a default construction environment object.
This construction environment is used internally by SCons
in order to execute many of the global functions in this list,
and to fetch source files transparently
from source code management systems.
+</para>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/DefaultsTests.py b/src/engine/SCons/DefaultsTests.py
index ceda08d..543d7f8 100644
--- a/src/engine/SCons/DefaultsTests.py
+++ b/src/engine/SCons/DefaultsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/DefaultsTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/DefaultsTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py
index 833f3cc..5644a30 100644
--- a/src/engine/SCons/Environment.py
+++ b/src/engine/SCons/Environment.py
@@ -10,7 +10,7 @@ Environment
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ Environment
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Environment.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Environment.py 2014/03/02 14:18:15 garyo"
import copy
@@ -43,6 +43,7 @@ from collections import UserDict
import SCons.Action
import SCons.Builder
+import SCons.Debug
from SCons.Debug import logInstanceCreation
import SCons.Defaults
import SCons.Errors
@@ -370,7 +371,7 @@ class SubstitutionEnvironment(object):
def __init__(self, **kw):
"""Initialization of an underlying SubstitutionEnvironment class.
"""
- if __debug__: logInstanceCreation(self, 'Environment.SubstitutionEnvironment')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.SubstitutionEnvironment')
self.fs = SCons.Node.FS.get_default_fs()
self.ans = SCons.Node.Alias.default_ans
self.lookup_list = SCons.Node.arg2nodes_lookups
@@ -704,7 +705,7 @@ class SubstitutionEnvironment(object):
# -symbolic (linker global binding)
# -R dir (deprecated linker rpath)
# IBM compilers may also accept -qframeworkdir=foo
-
+
params = shlex.split(arg)
append_next_arg_to = None # for multi-word args
for arg in params:
@@ -794,7 +795,7 @@ class SubstitutionEnvironment(object):
append_next_arg_to = arg
else:
dict['CCFLAGS'].append(arg)
-
+
for arg in flags:
do_parse(arg)
return dict
@@ -858,7 +859,7 @@ class SubstitutionEnvironment(object):
# def MergeShellPaths(self, args, prepend=1):
# """
-# Merge the dict in args into the shell environment in env['ENV'].
+# Merge the dict in args into the shell environment in env['ENV'].
# Shell path elements are appended or prepended according to prepend.
# Uses Pre/AppendENVPath, so it always appends or prepends uniquely.
@@ -931,7 +932,7 @@ class Base(SubstitutionEnvironment):
initialize things in a very specific order that doesn't work
with the much simpler base class initialization.
"""
- if __debug__: logInstanceCreation(self, 'Environment.Base')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.Base')
self._memo = {}
self.fs = SCons.Node.FS.get_default_fs()
self.ans = SCons.Node.Alias.default_ans
@@ -961,14 +962,14 @@ class Base(SubstitutionEnvironment):
platform = SCons.Platform.Platform(platform)
self._dict['PLATFORM'] = str(platform)
platform(self)
-
+
self._dict['HOST_OS'] = self._dict.get('HOST_OS',None)
self._dict['HOST_ARCH'] = self._dict.get('HOST_ARCH',None)
-
+
# Now set defaults for TARGET_{OS|ARCH}
- self._dict['TARGET_OS'] = self._dict.get('HOST_OS',None)
- self._dict['TARGET_ARCH'] = self._dict.get('HOST_ARCH',None)
-
+ self._dict['TARGET_OS'] = self._dict.get('TARGET_OS',None)
+ self._dict['TARGET_ARCH'] = self._dict.get('TARGET_ARCH',None)
+
# Apply the passed-in and customizable variables to the
# environment before calling the tools, because they may use
@@ -1157,7 +1158,7 @@ class Base(SubstitutionEnvironment):
# "continue" statements whenever we finish processing an item,
# but Python 1.5.2 apparently doesn't let you use "continue"
# within try:-except: blocks, so we have to nest our code.
- try:
+ try:
if key == 'CPPDEFINES' and SCons.Util.is_String(self._dict[key]):
self._dict[key] = [self._dict[key]]
orig = self._dict[key]
@@ -1208,7 +1209,7 @@ class Base(SubstitutionEnvironment):
orig = orig.items()
orig += val
self._dict[key] = orig
- else:
+ else:
for v in val:
orig[v] = None
else:
@@ -1231,7 +1232,7 @@ class Base(SubstitutionEnvironment):
path = str(self.fs.Dir(path))
return path
- def AppendENVPath(self, name, newpath, envname = 'ENV',
+ def AppendENVPath(self, name, newpath, envname = 'ENV',
sep = os.pathsep, delete_existing=1):
"""Append path elements to the path 'name' in the 'ENV'
dictionary for this environment. Will only add any particular
@@ -1289,7 +1290,7 @@ class Base(SubstitutionEnvironment):
dk = dk.items()
elif SCons.Util.is_String(dk):
dk = [(dk,)]
- else:
+ else:
tmp = []
for i in dk:
if SCons.Util.is_List(i):
@@ -1334,7 +1335,7 @@ class Base(SubstitutionEnvironment):
dk = filter(lambda x, val=val: x not in val, dk)
self._dict[key] = dk + val
else:
- dk = [x for x in dk if x not in val]
+ dk = [x for x in dk if x not in val]
self._dict[key] = dk + val
else:
# By elimination, val is not a list. Since dk is a
@@ -1381,7 +1382,7 @@ class Base(SubstitutionEnvironment):
builders = self._dict['BUILDERS']
except KeyError:
pass
-
+
clone = copy.copy(self)
# BUILDERS is not safe to do a simple copy
clone._dict = semi_deepcopy_dict(self._dict, ['BUILDERS'])
@@ -1409,12 +1410,12 @@ class Base(SubstitutionEnvironment):
apply_tools(clone, tools, toolpath)
# apply them again in case the tools overwrote them
- clone.Replace(**new)
+ clone.Replace(**new)
# Finally, apply any flags to be merged in
if parse_flags: clone.MergeFlags(parse_flags)
- if __debug__: logInstanceCreation(self, 'Environment.EnvironmentClone')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.EnvironmentClone')
return clone
def Copy(self, *args, **kw):
@@ -2086,6 +2087,14 @@ class Base(SubstitutionEnvironment):
t.set_precious()
return tlist
+ def Pseudo(self, *targets):
+ tlist = []
+ for t in targets:
+ tlist.extend(self.arg2nodes(t, self.fs.Entry))
+ for t in tlist:
+ t.set_pseudo()
+ return tlist
+
def Repository(self, *dirs, **kw):
dirs = self.arg2nodes(list(dirs), self.fs.Dir)
self.fs.Repository(*dirs, **kw)
@@ -2270,7 +2279,7 @@ class OverrideEnvironment(Base):
"""
def __init__(self, subject, overrides={}):
- if __debug__: logInstanceCreation(self, 'Environment.OverrideEnvironment')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.OverrideEnvironment')
self.__dict__['__subject'] = subject
self.__dict__['overrides'] = overrides
diff --git a/src/engine/SCons/Environment.xml b/src/engine/SCons/Environment.xml
index abfe785..77660d5 100644
--- a/src/engine/SCons/Environment.xml
+++ b/src/engine/SCons/Environment.xml
@@ -1,14 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+
<!-- Construction variables -->
<cvar name="BUILDERS">
<summary>
+<para>
A dictionary mapping the names of the builders
available through this environment
to underlying Builder objects.
@@ -17,38 +37,46 @@ Alias, CFile, CXXFile, DVI, Library, Object, PDF, PostScript, and Program
are available by default.
If you initialize this variable when an
Environment is created:
+</para>
-<example>
+<example_commands>
env = Environment(BUILDERS = {'NewBuilder' : foo})
-</example>
+</example_commands>
+<para>
the default Builders will no longer be available.
To use a new Builder object in addition to the default Builders,
add your new Builder object like this:
+</para>
-<example>
+<example_commands>
env = Environment()
env.Append(BUILDERS = {'NewBuilder' : foo})
-</example>
+</example_commands>
+<para>
or this:
+</para>
-<example>
+<example_commands>
env = Environment()
env['BUILDERS]['NewBuilder'] = foo
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="Dir">
<summary>
+<para>
A function that converts a string
into a Dir instance relative to the target being built.
+</para>
</summary>
</cvar>
<cvar name="ENV">
<summary>
+<para>
A dictionary of environment variables
to use when invoking commands. When
&cv-ENV; is used in a command all list
@@ -67,18 +95,22 @@ repeatable regardless of the environment
variables set at the time
&scons;
is invoked.
+</para>
+<para>
If you want to propagate your
environment variables
to the commands executed
to build target files,
you must do so explicitly:
+</para>
-<example>
+<example_commands>
import os
env = Environment(ENV = os.environ)
-</example>
+</example_commands>
+<para>
Note that you can choose only to propagate
certain environment variables.
A common example is
@@ -89,23 +121,27 @@ so that
&scons;
uses the same utilities
as the invoking shell (or other process):
+</para>
-<example>
+<example_commands>
import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="File">
<summary>
+<para>
A function that converts a string into a File instance relative to the
target being built.
+</para>
</summary>
</cvar>
<cvar name="SCANNERS">
<summary>
+<para>
A list of the available implicit dependency scanners.
New file scanners may be added by
appending to this list,
@@ -115,77 +151,96 @@ with a specific Builder.
See the sections "Builder Objects"
and "Scanner Objects,"
below, for more information.
+</para>
</summary>
</cvar>
<cvar name="CHANGED_SOURCES">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="CHANGED_TARGETS">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="SOURCE">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="SOURCES">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="TARGET">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="TARGETS">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="UNCHANGED_SOURCES">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="UNCHANGED_TARGETS">
<summary>
+<para>
A reserved variable name
that may not be set or used in a construction environment.
(See "Variable Substitution," below.)
+</para>
</summary>
</cvar>
<cvar name="TOOLS">
<summary>
+<para>
A list of the names of the Tool specifications
that are part of this construction environment.
+</para>
</summary>
</cvar>
@@ -196,12 +251,15 @@ that are part of this construction environment.
(action, [cmd/str/fun, [var, ...]] [option=value, ...])
</arguments>
<summary>
+<para>
Creates an Action object for
the specified
<varname>action</varname>.
See the section "Action Objects,"
below, for a complete explanation of the arguments and behavior.
+</para>
+<para>
Note that the
<function>env.Action</function>()
form of the invocation will expand
@@ -218,6 +276,7 @@ The
<function>Action</function>()
form delays all variable expansion
until the Action object is actually used.
+</para>
</summary>
</scons_function>
@@ -229,6 +288,7 @@ until the Action object is actually used.
(function, [name])
</arguments>
<summary>
+<para>
When called with the
<function>AddMethod</function>()
form,
@@ -255,10 +315,13 @@ the name of the
specified
<varname>function</varname>
itself is used for the method name.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# Note that the first argument to the function to
# be attached as a method must be the object through
# which the method will be called; the Python
@@ -277,7 +340,7 @@ env.my_method('arg')
env = Environment()
env.AddMethod(my_method, 'other_method_name')
env.other_method_name('another arg')
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -286,6 +349,7 @@ env.other_method_name('another arg')
(target, action)
</arguments>
<summary>
+<para>
Arranges for the specified
<varname>action</varname>
to be performed
@@ -296,11 +360,14 @@ The specified action(s) may be
an Action object, or anything that
can be converted into an Action object
(see below).
+</para>
+<para>
When multiple targets are supplied,
the action may be called multiple times,
once after each action that generates
one or more targets in the list.
+</para>
</summary>
</scons_function>
@@ -309,6 +376,7 @@ one or more targets in the list.
(target, action)
</arguments>
<summary>
+<para>
Arranges for the specified
<varname>action</varname>
to be performed
@@ -319,12 +387,16 @@ The specified action(s) may be
an Action object, or anything that
can be converted into an Action object
(see below).
+</para>
+<para>
When multiple targets are specified,
the action(s) may be called multiple times,
once before each action that generates
one or more targets in the list.
+</para>
+<para>
Note that if any of the targets are built in multiple steps,
the action will be invoked just
before the "final" action that specifically
@@ -333,12 +405,14 @@ For example, when building an executable program
from a specified source
<filename>.c</filename>
file via an intermediate object file:
+</para>
-<example>
+<example_commands>
foo = Program('foo.c')
AddPreAction(foo, 'pre_action')
-</example>
+</example_commands>
+<para>
The specified
<literal>pre_action</literal>
would be executed before
@@ -349,6 +423,7 @@ generates the executable program binary
not before compiling the
<filename>foo.c</filename>
file into an object file.
+</para>
</summary>
</scons_function>
@@ -357,6 +432,7 @@ file into an object file.
(alias, [targets, [action]])
</arguments>
<summary>
+<para>
Creates one or more phony targets that
expand to one or more other targets.
An optional
@@ -374,10 +450,13 @@ including another alias.
can be called multiple times for the same
alias to add additional targets to the alias,
or additional actions to the list for this alias.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
Alias('install')
Alias('install', '/usr/bin')
Alias(['install', 'install-lib'], '/usr/local/lib')
@@ -386,7 +465,7 @@ env.Alias('install', ['/usr/local/bin', '/usr/local/lib'])
env.Alias('install', ['/usr/local/man'])
env.Alias('update', ['file1', 'file2'], "update_database $SOURCES")
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -395,6 +474,7 @@ env.Alias('update', ['file1', 'file2'], "update_database $SOURCES")
(target, ...)
</arguments>
<summary>
+<para>
Marks each given
<varname>target</varname>
so that it is always assumed to be out of date,
@@ -410,6 +490,7 @@ they will
be built if so specified.
Multiple targets can be passed in to a single call to
&f-AlwaysBuild;.
+</para>
</summary>
</scons_function>
@@ -418,6 +499,7 @@ Multiple targets can be passed in to a single call to
(key=val, [...])
</arguments>
<summary>
+<para>
Appends the specified keyword arguments
to the end of construction variables in the environment.
If the Environment does not have
@@ -431,12 +513,15 @@ and the value of the keyword argument
are both coerced to lists,
and the lists are added together.
(See also the Prepend method, below.)
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.Append(CCFLAGS = ' -g', FOO = ['foo.yyy'])
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -445,6 +530,7 @@ env.Append(CCFLAGS = ' -g', FOO = ['foo.yyy'])
(name, newpath, [envname, sep, delete_existing])
</arguments>
<summary>
+<para>
This appends new path elements to the given path in the
specified external environment
(<literal>ENV</literal>
@@ -460,15 +546,20 @@ and
This can also handle the
case where the given old path variable is a list instead of a
string, in which case a list will be returned instead of a string.
+</para>
+<para>
If
<varname>delete_existing</varname>
is 0, then adding a path that already exists
will not move it to the end; it will stay where it is in the list.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
print 'before:',env['ENV']['INCLUDE']
include_path = '/foo/bar:/foo'
env.AppendENVPath('INCLUDE', include_path)
@@ -477,7 +568,7 @@ print 'after:',env['ENV']['INCLUDE']
yields:
before: /foo:/biz
after: /biz:/foo/bar:/foo
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -486,6 +577,7 @@ after: /biz:/foo/bar:/foo
(key=val, [...], delete_existing=0)
</arguments>
<summary>
+<para>
Appends the specified keyword arguments
to the end of construction variables in the environment.
If the Environment does not have
@@ -499,12 +591,15 @@ be added again to the list.
However, if delete_existing is 1,
existing matching values are removed first, so
existing values in the arg list move to the end of the list.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -513,6 +608,7 @@ env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
(build_dir, src_dir, [duplicate])
</arguments>
<summary>
+<para>
Deprecated synonyms for
&f-VariantDir;
and
@@ -525,6 +621,7 @@ argument of
&f-VariantDir;
or
<function>env.VariantDir</function>().
+</para>
</summary>
</scons_function>
@@ -533,12 +630,15 @@ or
(action, [arguments])
</arguments>
<summary>
+<para>
Creates a Builder object for
the specified
<varname>action</varname>.
See the section "Builder Objects,"
below, for a complete explanation of the arguments and behavior.
+</para>
+<para>
Note that the
<function>env.Builder</function>()
form of the invocation will expand
@@ -556,6 +656,7 @@ The
&f-Builder;
form delays all variable expansion
until after the Builder object is actually called.
+</para>
</summary>
</scons_function>
@@ -564,6 +665,7 @@ until after the Builder object is actually called.
(cache_dir)
</arguments>
<summary>
+<para>
Specifies that
&scons;
will maintain a cache of derived files in
@@ -577,7 +679,9 @@ Specifying a
of
<literal>None</literal>
disables derived file caching.
+</para>
+<para>
Calling
<function>env.CacheDir</function>()
will only affect targets built
@@ -592,7 +696,9 @@ that do
have an
<function>env.CacheDir</function>()
specified.
+</para>
+<para>
When a
<function>CacheDir</function>()
is being used and
@@ -613,14 +719,18 @@ then place a copy of the built file in the cache
so that it may be retrieved by other
builds that need to build the same derived file
from identical inputs.
+</para>
+<para>
Use of a specified
&f-CacheDir;
may be disabled for any invocation
by using the
<option>--cache-disable</option>
option.
+</para>
+<para>
If the
<option>--cache-force</option>
option is used,
@@ -637,7 +747,9 @@ is added to a build,
or after using the
<option>--cache-disable</option>
option.
+</para>
+<para>
When using
&f-CacheDir;,
&scons;
@@ -659,12 +771,15 @@ This is useful to generate build logs
that are equivalent regardless of whether
a given derived file has been built in-place
or retrieved from the cache.
+</para>
+<para>
The
&f-link-NoCache;
method can be used to disable caching of specific files. This can be
useful if inputs and/or outputs of some tool are impossible to
predict or prohibitively large.
+</para>
</summary>
</scons_function>
@@ -673,6 +788,7 @@ predict or prohibitively large.
(targets, files_or_dirs)
</arguments>
<summary>
+<para>
This specifies a list of files or directories which should be removed
whenever the targets are specified with the
<option>-c</option>
@@ -684,7 +800,9 @@ Multiple calls to
are legal,
and create new targets or add files and directories to the
clean list for the specified targets.
+</para>
+<para>
Multiple files or directories should be specified
either as separate arguments to the
&f-Clean;
@@ -693,7 +811,9 @@ method, or as a list.
will also accept the return value of any of the construction environment
Builder methods.
Examples:
+</para>
+<para>
The related
&f-link-NoClean;
function overrides calling
@@ -704,22 +824,27 @@ and any targets passed to both functions will
be removed by the
<option>-c</option>
option.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
Clean('foo', ['bar', 'baz'])
Clean('dist', env.Program('hello', 'hello.c'))
Clean(['foo', 'bar'], 'something_else_to_clean')
-</example>
+</example_commands>
+<para>
In this example,
installing the project creates a subdirectory for the documentation.
This statement causes the subdirectory to be removed
if the project is deinstalled.
-<example>
+</para>
+<example_commands>
Clean(docdir, os.path.join(docdir, projectname))
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -728,46 +853,56 @@ Clean(docdir, os.path.join(docdir, projectname))
([key=val, ...])
</arguments>
<summary>
+<para>
Returns a separate copy of a construction environment.
If there are any keyword arguments specified,
they are added to the returned copy,
overwriting any existing values
for the keywords.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env2 = env.Clone()
env3 = env.Clone(CCFLAGS = '-g')
-</example>
+</example_commands>
+<para>
Additionally, a list of tools and a toolpath may be specified, as in
the Environment constructor:
+</para>
-<example>
+<example_commands>
def MyTool(env): env['FOO'] = 'bar'
env4 = env.Clone(tools = ['msvc', MyTool])
-</example>
+</example_commands>
+<para>
The
<varname>parse_flags</varname>
keyword argument is also recognized:
+</para>
-<example>
+<example_commands>
# create an environment for compiling programs that use wxWidgets
wx_env = env.Clone(parse_flags = '!wx-config --cflags --cxxflags')
-</example>
+</example_commands>
</summary>
</scons_function>
<builder name="Command">
<summary>
+<para>
The &b-Command; "Builder" is actually implemented
as a function that looks like a Builder,
but actually takes an additional argument of the action
from which the Builder should be made.
See the &f-link-Command; function description
for the calling syntax and details.
+</para>
</summary>
</builder>
@@ -776,13 +911,16 @@ for the calling syntax and details.
(target, source, action, [key=val, ...])
</arguments>
<summary>
+<para>
Executes a specific action
(or list of actions)
to build a target file or files.
This is more convenient
than defining a separate Builder object
for a single special-case build.
+</para>
+<para>
As a special case, the
<varname>source_scanner</varname>
keyword argument can
@@ -796,10 +934,14 @@ if any of the sources will be directories
that must be scanned on-disk for
changes to files that aren't
already specified in other Builder of function calls.)
+</para>
+<para>
Any other keyword arguments specified override any
same-named existing construction variables.
+</para>
+<para>
An action can be an external command,
specified as a string,
or a callable Python object;
@@ -814,10 +956,13 @@ or by a
<literal>-</literal>
(hyphen)
to ignore the exit status of the external command.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env.Command('foo.out', 'foo.in',
"$FOO_BUILD &lt; $SOURCES &gt; $TARGET")
@@ -833,8 +978,9 @@ def rename(env, target, source):
env.Command('baz.out', 'baz.in',
["$BAZ_BUILD &lt; $SOURCES &gt; .tmp",
rename ])
-</example>
+</example_commands>
+<para>
Note that the
&f-Command;
function will usually assume, by default,
@@ -849,19 +995,24 @@ by using the
or
<function>env.Dir</function>()
functions.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env.Command('ddd.list', Dir('ddd'), 'ls -l $SOURCE > $TARGET')
env['DISTDIR'] = 'destination/directory'
env.Command(env.Dir('$DISTDIR')), None, make_distdir)
-</example>
+</example_commands>
+<para>
(Also note that SCons will usually
automatically create any directory necessary to hold a target file,
so you normally don't need to create directories by hand.)
+</para>
</summary>
</scons_function>
@@ -873,10 +1024,12 @@ so you normally don't need to create directories by hand.)
([custom_tests, conf_dir, log_file, config_h])
</arguments>
<summary>
+<para>
Creates a Configure object for integrated
functionality similar to GNU autoconf.
See the section "Configure Contexts,"
below, for a complete explanation of the arguments and behavior.
+</para>
</summary>
</scons_function>
@@ -885,8 +1038,10 @@ below, for a complete explanation of the arguments and behavior.
([key=val, ...])
</arguments>
<summary>
+<para>
A now-deprecated synonym for
<function>env.Clone</function>().
+</para>
</summary>
</scons_function>
@@ -895,6 +1050,7 @@ A now-deprecated synonym for
(function)
</arguments>
<summary>
+<para>
Specifies that all up-to-date decisions for
targets built through this construction environment
will be handled by the specified
@@ -904,7 +1060,9 @@ The
can be one of the following strings
that specify the type of decision function
to be performed:
+</para>
+<para>
<variablelist>
<varlistentry>
<term><literal>timestamp-newer</literal></term>
@@ -985,24 +1143,30 @@ all within a single second.
</listitem>
</varlistentry>
</variablelist>
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# Use exact timestamp matches by default.
Decider('timestamp-match')
# Use MD5 content signatures for any targets built
# with the attached construction environment.
env.Decider('content')
-</example>
+</example_commands>
+<para>
In addition to the above already-available functions,
the
<varname>function</varname>
argument may be an actual Python function
that takes the following three arguments:
+</para>
+<para>
<variablelist>
<varlistentry>
<term><parameter>dependency</parameter></term>
@@ -1048,7 +1212,9 @@ size, or content signature.
</listitem>
</varlistentry>
</variablelist>
+</para>
+<para>
The
<varname>function</varname>
should return a
@@ -1074,15 +1240,18 @@ Note that the decision can be made
using whatever criteria are appopriate.
Ignoring some or all of the function arguments
is perfectly normal.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
def my_decider(dependency, target, prev_ni):
return not os.path.exists(str(target))
env.Decider(my_decider)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1091,6 +1260,7 @@ env.Decider(my_decider)
(target, dependency)
</arguments>
<summary>
+<para>
Specifies an explicit dependency;
the
<varname>target</varname>
@@ -1111,10 +1281,13 @@ This should only be necessary
for cases where the dependency
is not caught by a Scanner
for the file.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.Depends('foo', 'other-input-file-for-foo')
mylib = env.Library('mylib.c')
@@ -1128,7 +1301,7 @@ bar = env.Program('bar.c')
# and $LIBPATH variables, not using an env.Depends() call.)
env.Depends(bar, installed_lib)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1137,19 +1310,23 @@ env.Depends(bar, installed_lib)
([vars])
</arguments>
<summary>
+<para>
Returns a dictionary object
containing copies of all of the
construction variables in the environment.
If there are any variable names specified,
only the specified construction
variables are returned in the dictionary.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
dict = env.Dictionary()
cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM')
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1158,6 +1335,7 @@ cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM')
(name, [directory])
</arguments>
<summary>
+<para>
This returns a Directory Node,
an object that represents the specified directory
<varname>name</varname>.
@@ -1168,19 +1346,24 @@ is an optional directory that will be used as the parent directory.
If no
<varname>directory</varname>
is specified, the current script's directory is used as the parent.
+</para>
+<para>
If
<varname>name</varname>
is a list, SCons returns a list of Dir nodes.
Construction variables are expanded in
<varname>name</varname>.
+</para>
+<para>
Directory Nodes can be used anywhere you
would supply a string as a directory name
to a Builder method or function.
Directory Nodes have attributes and methods
that are useful in many situations;
see "File and Directory Nodes," below.
+</para>
</summary>
</scons_function>
@@ -1189,34 +1372,44 @@ see "File and Directory Nodes," below.
([key])
</arguments>
<summary>
+<para>
Returns a pretty printable representation of the environment.
<varname>key</varname>,
if not
<literal>None</literal>,
should be a string containing the name of the variable of interest.
+</para>
+<para>
This SConstruct:
+</para>
-<example>
+<example_commands>
env=Environment()
print env.Dump('CCCOM')
-</example>
+</example_commands>
+<para>
will print:
+</para>
-<example>
+<example_commands>
'$CC -c -o $TARGET $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES'
-</example>
+</example_commands>
+<para>
While this SConstruct:
+</para>
-<example>
+<example_commands>
env=Environment()
print env.Dump()
-</example>
+</example_commands>
+<para>
will print:
-<example>
+</para>
+<example_commands>
{ 'AR': 'ar',
'ARCOM': '$AR $ARFLAGS $TARGET $SOURCES\n$RANLIB $RANLIBFLAGS $TARGET',
'ARFLAGS': ['r'],
@@ -1224,7 +1417,7 @@ will print:
'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES',
'ASFLAGS': [],
...
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1233,10 +1426,12 @@ will print:
([key=value, ...])
</arguments>
<summary>
+<para>
Return a new construction environment
initialized with the specified
<varname>key</varname><literal>=</literal><varname>value</varname>
pairs.
+</para>
</summary>
</scons_function>
@@ -1245,6 +1440,7 @@ pairs.
(action, [strfunction, varlist])
</arguments>
<summary>
+<para>
Executes an Action object.
The specified
<varname>action</varname>
@@ -1260,7 +1456,9 @@ and then executed.
The exit value of the command
or return value of the Python function
will be returned.
+</para>
+<para>
Note that
&scons;
will print an error message if the executed
@@ -1279,14 +1477,15 @@ If you want the build to stop in response to a failed
&f-Execute;
call,
you must explicitly check for a non-zero return value:
+</para>
-<example>
+<example_commands>
Execute(Copy('file.out', 'file.in'))
if Execute("mkdir sub/dir/ectory"):
# The mkdir failed, don't try to build.
Exit(1)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1295,6 +1494,7 @@ if Execute("mkdir sub/dir/ectory"):
(name, [directory])
</arguments>
<summary>
+<para>
This returns a
File Node,
an object that represents the specified file
@@ -1303,19 +1503,24 @@ an object that represents the specified file
can be a relative or absolute path.
<varname>directory</varname>
is an optional directory that will be used as the parent directory.
+</para>
+<para>
If
<varname>name</varname>
is a list, SCons returns a list of File nodes.
Construction variables are expanded in
<varname>name</varname>.
+</para>
+<para>
File Nodes can be used anywhere you
would supply a string as a file name
to a Builder method or function.
File Nodes have attributes and methods
that are useful in many situations;
see "File and Directory Nodes," below.
+</para>
</summary>
</scons_function>
@@ -1324,6 +1529,7 @@ see "File and Directory Nodes," below.
(file, dirs)
</arguments>
<summary>
+<para>
Search for
<varname>file</varname>
in the path specified by
@@ -1333,12 +1539,15 @@ may be a list of directory names or a single directory name.
In addition to searching for files that exist in the filesystem,
this function also searches for derived files
that have not yet been built.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
foo = env.FindFile('foo', ['dir1', 'dir2'])
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1347,18 +1556,24 @@ foo = env.FindFile('foo', ['dir1', 'dir2'])
()
</arguments>
<summary>
+<para>
Returns the list of targets set up by the
&b-link-Install;
or
&b-link-InstallAs;
builders.
+</para>
+<para>
This function serves as a convenient method to select the contents of
a binary package.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
Install( '/bin', [ 'executable_a', 'executable_b' ] )
# will return the file node list
@@ -1370,7 +1585,7 @@ Install( '/lib', [ 'some_library' ] )
# will return the file node list
# [ '/bin/executable_a', '/bin/executable_b', '/lib/some_library' ]
FindInstalledFiles()
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1379,6 +1594,7 @@ FindInstalledFiles()
(node='"."')
</arguments>
<summary>
+<para>
Returns the list of nodes which serve as the source of the built files.
It does so by inspecting the dependency tree starting at the optional
argument
@@ -1386,13 +1602,18 @@ argument
which defaults to the '"."'-node. It will then return all leaves of
<varname>node</varname>.
These are all children which have no further children.
+</para>
+<para>
This function is a convenient method to select the contents of a Source
Package.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
Program( 'src/main_a.c' )
Program( 'src/main_b.c' )
Program( 'main_c.c' )
@@ -1402,10 +1623,12 @@ FindSourceFiles()
# returns ['src/main_b.c', 'src/main_a.c' ]
FindSourceFiles( 'src' )
-</example>
+</example_commands>
+<para>
As you can see build support files (SConstruct in the above example)
will also be returned by this function.
+</para>
</summary>
</scons_function>
@@ -1414,6 +1637,7 @@ will also be returned by this function.
(sequence)
</arguments>
<summary>
+<para>
Takes a sequence (that is, a Python list or tuple)
that may contain nested sequences
and returns a flattened list containing
@@ -1424,10 +1648,13 @@ other Builders will automatically
flatten lists specified as input,
but direct Python manipulation of
these lists does not.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
foo = Object('foo.c')
bar = Object('bar.c')
@@ -1443,7 +1670,7 @@ Program(source = objects)
# call Flatten() yourself, or otherwise handle nested lists:
for object in Flatten(objects):
print str(object)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1452,6 +1679,7 @@ for object in Flatten(objects):
(file, [...])
</arguments>
<summary>
+<para>
Returns the
&scons;
path name (or names) for the specified
@@ -1463,6 +1691,7 @@ or files
may be
&scons;
Nodes or strings representing path names.
+</para>
</summary>
</scons_function>
@@ -1471,6 +1700,7 @@ Nodes or strings representing path names.
(pattern, [ondisk, source, strings])
</arguments>
<summary>
+<para>
Returns Nodes (or strings) that match the specified
<varname>pattern</varname>,
relative to the directory of the current
@@ -1482,24 +1712,30 @@ form performs string substition on
<varname>pattern</varname>
and returns whatever matches
the resulting expanded pattern.
+</para>
+<para>
The specified
<varname>pattern</varname>
uses Unix shell style metacharacters for matching:
+</para>
-<example>
+<example_commands>
* matches everything
? matches any single character
[seq] matches any character in seq
[!seq] matches any char not in seq
-</example>
+</example_commands>
+<para>
If the first character of a filename is a dot,
it must be matched explicitly.
Character matches do
<emphasis>not</emphasis>
span directory separators.
+</para>
+<para>
The
&f-Glob;
knows about
@@ -1517,7 +1753,9 @@ in the local (SConscript) directory
if matching Node is found
anywhere in a corresponding
repository or source directory.
+</para>
+<para>
The
<varname>ondisk</varname>
argument may be set to
@@ -1529,7 +1767,9 @@ already-configured File or Dir Nodes.
The default behavior is to
return corresponding Nodes
for any on-disk matches found.
+</para>
+<para>
The
<varname>source</varname>
argument may be set to
@@ -1541,7 +1781,9 @@ when the local directory is a
the returned Nodes should be from the
corresponding source directory,
not the local directory.
+</para>
+<para>
The
<varname>strings</varname>
argument may be set to
@@ -1566,13 +1808,16 @@ directory,
not the original
&SConscript;
directory.)
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
Program('foo', Glob('*.c'))
Zip('/tmp/everything', Glob('.??*') + Glob('*'))
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1582,6 +1827,7 @@ Zip('/tmp/everything', Glob('.??*') + Glob('*'))
(flag)
</arguments>
<summary>
+<para>
When
<varname>flag</varname>
is non-zero,
@@ -1597,6 +1843,7 @@ the names of the default builders are removed
from the global name space
so that an explicit construction environment is required
to call all builders.
+</para>
</summary>
</scons_function>
-->
@@ -1606,30 +1853,38 @@ to call all builders.
(target, dependency)
</arguments>
<summary>
+<para>
The specified dependency file(s)
will be ignored when deciding if
the target file(s) need to be rebuilt.
+</para>
+<para>
You can also use
&f-Ignore;
to remove a target from the default build.
In order to do this you must specify the directory the target will
be built in as the target, and the file you want to skip building
as the dependency.
+</para>
+<para>
Note that this will only remove the dependencies listed from
the files built by default. It will still be built if that
dependency is needed by another object being built.
See the third and forth examples below.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env.Ignore('foo', 'foo.c')
env.Ignore('bar', ['bar1.h', 'bar2.h'])
env.Ignore('.','foobar.obj')
env.Ignore('bar','bar/foobar.obj')
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1638,10 +1893,12 @@ env.Ignore('bar','bar/foobar.obj')
(string)
</arguments>
<summary>
+<para>
The specified
<varname>string</varname>
will be preserved as-is
and not have construction variables expanded.
+</para>
</summary>
</scons_function>
@@ -1650,12 +1907,14 @@ and not have construction variables expanded.
(targets)
</arguments>
<summary>
+<para>
The specified
<varname>targets</varname>
will have copies made in the local tree,
even if an already up-to-date copy
exists in a repository.
Returns a list of the target Node or Nodes.
+</para>
</summary>
</scons_function>
@@ -1665,6 +1924,7 @@ Returns a list of the target Node or Nodes.
( arg ", [" prepend ])
</arguments>
<summary>
+<para>
Merges the elements of the specified
<varname>arg</varname>,
which must be a dictionary, to the construction
@@ -1679,7 +1939,9 @@ so multiple strings must
be passed in as a list,
not as separate arguments to
&f-MergeShellPaths;.
+</para>
+<para>
New values are prepended to the environment variable by default,
unless prepend=0 is specified.
Duplicate values are always eliminated,
@@ -1690,15 +1952,18 @@ or
depending on the
<varname>prepend</varname>
argument. See those functions for more details.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# Prepend a path to the shell PATH.
env.MergeShellPaths({'PATH':'/usr/local/bin'} )
# Append two dirs to the shell INCLUDE.
env.MergeShellPaths({'INCLUDE':['c:/inc1', 'c:/inc2']}, prepend=0 )
-</example>
+</example_commands>
</summary>
</scons_function>
-->
@@ -1708,6 +1973,7 @@ env.MergeShellPaths({'INCLUDE':['c:/inc1', 'c:/inc2']}, prepend=0 )
(arg, [unique])
</arguments>
<summary>
+<para>
Merges the specified
<varname>arg</varname>
values to the construction environment's construction variables.
@@ -1725,7 +1991,9 @@ so multiple strings must
be passed in as a list,
not as separate arguments to
&f-env-MergeFlags;.
+</para>
+<para>
By default,
duplicate values are eliminated;
you can, however, specify
@@ -1739,10 +2007,13 @@ the string
keep the left-most unique value.
All other construction variables keep
the right-most unique value.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# Add an optimization flag to $CCFLAGS.
env.MergeFlags('-O3')
@@ -1755,7 +2026,7 @@ env.MergeFlags(['!pkg-config gtk+-2.0 --cflags', '-O3'])
env.MergeFlags(['-O3',
'!pkg-config gtk+-2.0 --cflags --libs',
'!pkg-config libpng12 --cflags --libs'])
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1764,6 +2035,7 @@ env.MergeFlags(['-O3',
(target, ...)
</arguments>
<summary>
+<para>
Specifies a list of files which should
<emphasis>not</emphasis>
be cached whenever the
@@ -1771,7 +2043,9 @@ be cached whenever the
method has been activated.
The specified targets may be a list
or an individual target.
+</para>
+<para>
Multiple files should be specified
either as separate arguments to the
&f-NoCache;
@@ -1779,18 +2053,23 @@ method, or as a list.
&f-NoCache;
will also accept the return value of any of the construction environment
Builder methods.
+</para>
+<para>
Calling
&f-NoCache;
on directories and other non-File Node types has no effect because
only File Nodes are cached.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
NoCache('foo.elf')
NoCache(env.Program('hello', 'hello.c'))
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1799,6 +2078,7 @@ NoCache(env.Program('hello', 'hello.c'))
(target, ...)
</arguments>
<summary>
+<para>
Specifies a list of files or directories which should
<emphasis>not</emphasis>
be removed whenever the targets (or their dependencies)
@@ -1814,7 +2094,9 @@ and prevent each specified target
from being removed by calls to the
<option>-c</option>
option.
+</para>
+<para>
Multiple files or directories should be specified
either as separate arguments to the
&f-NoClean;
@@ -1822,7 +2104,9 @@ method, or as a list.
&f-NoClean;
will also accept the return value of any of the construction environment
Builder methods.
+</para>
+<para>
Calling
&f-NoClean;
for a target overrides calling
@@ -1833,13 +2117,16 @@ and any targets passed to both functions will
be removed by the
<option>-c</option>
option.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
NoClean('foo.elf')
NoClean(env.Program('hello', 'hello.c'))
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -1848,6 +2135,7 @@ NoClean(env.Program('hello', 'hello.c'))
(command, [function, unique])
</arguments>
<summary>
+<para>
Calls the specified
<varname>function</varname>
to modify the environment as specified by the output of
@@ -1870,7 +2158,9 @@ you can specify
<literal>unique=0</literal>
to allow duplicate
values to be added.
+</para>
+<para>
Interpreted options
and the construction variables they affect
are as specified for the
@@ -1878,6 +2168,7 @@ are as specified for the
method (which this method calls).
See that method's description, below,
for a table of options and construction variables.
+</para>
</summary>
</scons_function>
@@ -1886,6 +2177,7 @@ for a table of options and construction variables.
(filename, [must_exist, only_one])
</arguments>
<summary>
+<para>
Parses the contents of the specified
<varname>filename</varname>
as a list of dependencies in the style of
@@ -1893,7 +2185,9 @@ as a list of dependencies in the style of
or
<application>mkdep</application>,
and explicitly establishes all of the listed dependencies.
+</para>
+<para>
By default,
it is not an error
if the specified
@@ -1907,7 +2201,9 @@ scons
throw an exception and
generate an error if the file does not exist,
or is otherwise inaccessible.
+</para>
+<para>
The optional
<varname>only_one</varname>
argument may be set to a non-zero
@@ -1927,7 +2223,9 @@ write dependency information for
one output file into a corresponding
<filename>.d</filename>
file.
+</para>
+<para>
The
<varname>filename</varname>
and all of the files listed therein
@@ -1937,6 +2235,7 @@ the directory of the
file which calls the
&f-ParseDepends;
function.
+</para>
</summary>
</scons_function>
@@ -1945,6 +2244,7 @@ function.
(flags, ...)
</arguments>
<summary>
+<para>
Parses one or more strings containing
typical command-line flags for GCC tool chains
and returns a dictionary with the flag values
@@ -1960,18 +2260,23 @@ will call this method if its argument is not a dictionary,
so it is usually not necessary to call
&f-link-env-ParseFlags;
directly unless you want to manipulate the values.)
+</para>
+<para>
If the first character in any string is
an exclamation mark (!),
the rest of the string is executed as a command,
and the output from the command is
parsed as GCC tool chain command-line flags
and added to the resulting dictionary.
+</para>
+<para>
Flag values are translated accordig to the prefix found,
and added to the following construction variables:
+</para>
-<example>
+<example_commands>
-arch CCFLAGS, LINKFLAGS
-D CPPDEFINES
-framework FRAMEWORKS
@@ -1993,22 +2298,26 @@ and added to the following construction variables:
-Wp, CPPFLAGS
- CCFLAGS
+ CCFLAGS, LINKFLAGS
-</example>
+</example_commands>
+<para>
Any other strings not associated with options
are assumed to be the names of libraries
and added to the
&cv-LIBS;
construction variable.
+</para>
+<para>
Examples (all of which produce the same result):
+</para>
-<example>
+<example_commands>
dict = env.ParseFlags('-O2 -Dfoo -Dbar=1')
dict = env.ParseFlags('-O2', '-Dfoo', '-Dbar=1')
dict = env.ParseFlags(['-O2', '-Dfoo -Dbar=1'])
dict = env.ParseFlags('-O2', '!echo -Dfoo -Dbar=1')
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2017,6 +2326,7 @@ dict = env.ParseFlags('-O2', '!echo -Dfoo -Dbar=1')
(string)
</arguments>
<summary>
+<para>
The
&f-Platform;
form returns a callable object
@@ -2025,23 +2335,29 @@ a construction environment using the
platform keyword of the
&f-Environment;
function.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env = Environment(platform = Platform('win32'))
-</example>
+</example_commands>
+<para>
The
&f-env-Platform;
form applies the callable object for the specified platform
<varname>string</varname>
to the environment through which the method was called.
+</para>
-<example>
+<example_commands>
env.Platform('posix')
-</example>
+</example_commands>
+<para>
Note that the
<literal>win32</literal>
platform adds the
@@ -2058,6 +2374,7 @@ that use sockets to connect with other systems
external CVS repository specifications like
<literal>:pserver:anonymous@cvs.sourceforge.net:/cvsroot/scons</literal>)
will work on Windows systems.
+</para>
</summary>
</scons_function>
@@ -2066,6 +2383,7 @@ will work on Windows systems.
(key=val, [...])
</arguments>
<summary>
+<para>
Appends the specified keyword arguments
to the beginning of construction variables in the environment.
If the Environment does not have
@@ -2079,12 +2397,15 @@ and the value of the keyword argument
are both coerced to lists,
and the lists are added together.
(See also the Append method, above.)
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.Prepend(CCFLAGS = '-g ', FOO = ['foo.yyy'])
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2093,6 +2414,7 @@ env.Prepend(CCFLAGS = '-g ', FOO = ['foo.yyy'])
(name, newpath, [envname, sep, delete_existing])
</arguments>
<summary>
+<para>
This appends new path elements to the given path in the
specified external environment
(&cv-ENV;
@@ -2108,28 +2430,35 @@ and
This can also handle the
case where the given old path variable is a list instead of a
string, in which case a list will be returned instead of a string.
+</para>
+<para>
If
<varname>delete_existing</varname>
is 0, then adding a path that already exists
will not move it to the beginning;
it will stay where it is in the list.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
print 'before:',env['ENV']['INCLUDE']
include_path = '/foo/bar:/foo'
env.PrependENVPath('INCLUDE', include_path)
print 'after:',env['ENV']['INCLUDE']
-</example>
+</example_commands>
+<para>
The above example will print:
+</para>
-<example>
+<example_commands>
before: /biz:/foo
after: /foo/bar:/foo:/biz
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2138,6 +2467,7 @@ after: /foo/bar:/foo:/biz
(key=val, delete_existing=0, [...])
</arguments>
<summary>
+<para>
Appends the specified keyword arguments
to the beginning of construction variables in the environment.
If the Environment does not have
@@ -2151,12 +2481,15 @@ be added again to the list.
However, if delete_existing is 1,
existing matching values are removed first, so
existing values in the arg list move to the front of the list.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.PrependUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2165,14 +2498,18 @@ env.PrependUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
(key=val, [...])
</arguments>
<summary>
+<para>
Replaces construction variables in the Environment
with the specified keyword arguments.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.Replace(CCFLAGS = '-g', FOO = 'foo.xxx')
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2181,6 +2518,7 @@ env.Replace(CCFLAGS = '-g', FOO = 'foo.xxx')
(directory)
</arguments>
<summary>
+<para>
Specifies that
<varname>directory</varname>
is a repository to be searched for files.
@@ -2189,7 +2527,9 @@ Multiple calls to
are legal,
and each one adds to the list of
repositories that will be searched.
+</para>
+<para>
To
&scons;,
a repository is a copy of the source tree,
@@ -2209,7 +2549,9 @@ signature information to allow
to figure out when it is appropriate to
use the repository copy of a derived file,
instead of building one locally.
+</para>
+<para>
Note that if an up-to-date derived file
already exists in a repository,
&scons;
@@ -2221,6 +2563,7 @@ will be made,
use the
&f-link-Local;
method.
+</para>
</summary>
</scons_function>
@@ -2229,6 +2572,7 @@ method.
(target, prerequisite)
</arguments>
<summary>
+<para>
Specifies an order-only relationship
between the specified target file(s)
and the specified prerequisite file(s).
@@ -2240,12 +2584,15 @@ but the target file(s) do not actually
depend on the prerequisites
and will not be rebuilt simply because
the prerequisite file(s) change.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.Requires('foo', 'file-that-must-be-built-before-foo')
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2254,11 +2601,13 @@ env.Requires('foo', 'file-that-must-be-built-before-foo')
(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive])
</arguments>
<summary>
+<para>
Creates a Scanner object for
the specified
<varname>function</varname>.
See the section "Scanner Objects,"
below, for a complete explanation of the arguments and behavior.
+</para>
</summary>
</scons_function>
@@ -2267,6 +2616,7 @@ below, for a complete explanation of the arguments and behavior.
(value)
</arguments>
<summary>
+<para>
By default,
&scons;
changes its working directory
@@ -2274,12 +2624,14 @@ to the directory in which each
subsidiary SConscript file lives.
This behavior may be disabled
by specifying either:
+</para>
-<example>
+<example_commands>
SConscriptChdir(0)
env.SConscriptChdir(0)
-</example>
+</example_commands>
+<para>
in which case
&scons;
will stay in the top-level directory
@@ -2291,16 +2643,19 @@ You may enable and disable
this ability by calling
SConscriptChdir()
multiple times.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env = Environment()
SConscriptChdir(0)
SConscript('foo/SConscript') # will not chdir to foo
env.SConscriptChdir(1)
SConscript('bar/SConscript') # will chdir to bar
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2309,6 +2664,7 @@ SConscript('bar/SConscript') # will chdir to bar
([file, dbm_module])
</arguments>
<summary>
+<para>
This tells
&scons;
to store all file signatures
@@ -2329,7 +2685,9 @@ is not an absolute path name,
the file is placed in the same directory as the top-level
&SConstruct;
file.
+</para>
+<para>
If
<varname>file</varname>
is
@@ -2343,7 +2701,9 @@ file in each directory,
not in one global database file.
(This was the default behavior
prior to SCons 0.96.91 and 0.97.)
+</para>
+<para>
The optional
<varname>dbm_module</varname>
argument can be used to specify
@@ -2353,10 +2713,13 @@ The default is to use a custom
module that uses pickled
Python data structures,
and which works on all Python versions.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# Explicitly stores signatures in ".sconsign.dblite"
# in the top-level SConstruct directory (the
# default behavior).
@@ -2372,7 +2735,7 @@ SConsignFile("/home/me/SCons/signatures")
# Stores signatures in a separate .sconsign file
# in each directory.
SConsignFile(None)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2381,15 +2744,17 @@ SConsignFile(None)
(key=val, [...])
</arguments>
<summary>
+<para>
Sets construction variables to default values specified with the keyword
arguments if (and only if) the variables are not already set.
The following statements are equivalent:
+</para>
-<example>
+<example_commands>
env.SetDefault(FOO = 'foo')
if 'FOO' not in env: env['FOO'] = 'foo'
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2398,6 +2763,7 @@ if 'FOO' not in env: env['FOO'] = 'foo'
(side_effect, target)
</arguments>
<summary>
+<para>
Declares
<varname>side_effect</varname>
as a side effect of building
@@ -2421,7 +2787,9 @@ is executed at a time.
Consequently, you only need to use this method
for side-effect targets that are built as a result of
multiple build commands.
+</para>
+<para>
Because multiple build commands may update
the same side effect file,
by default the
@@ -2449,6 +2817,7 @@ with the
or
&f-env-Clean;
function.
+</para>
</summary>
</scons_function>
@@ -2457,13 +2826,16 @@ function.
(entries, builder)
</arguments>
<summary>
+<para>
This function and its associate factory functions are deprecated.
There is no replacement.
The intended use was to keep a local tree in sync with an archive,
but in actuality the function only causes the archive
to be fetched on the first run.
Synchronizing with the archive is best done external to &SCons;.
+</para>
+<para>
Arrange for non-existent source files to
be fetched from a source code management system
using the specified
@@ -2474,7 +2846,9 @@ may be a Node, string or list of both,
and may represent either individual
source files or directories in which
source files can be found.
+</para>
+<para>
For any non-existent source files,
&scons;
will search up the directory tree
@@ -2494,7 +2868,9 @@ even if a
&f-SourceCode;
builder has been specified
for a directory higher up the tree.
+</para>
+<para>
&scons;
will, by default,
fetch files from SCCS or RCS subdirectories
@@ -2505,33 +2881,40 @@ source code management files on disk.
You can avoid these extra searches
and speed up your build a little
by disabling these searches as follows:
+</para>
-<example>
+<example_commands>
env.SourceCode('.', None)
-</example>
+</example_commands>
+<para>
Note that if the specified
<varname>builder</varname>
is one you create by hand,
it must have an associated
construction environment to use
when fetching a source file.
+</para>
+<para>
&scons;
provides a set of canned factory
functions that return appropriate
Builders for various popular
source code management systems.
Canonical examples of invocation include:
+</para>
-<example>
+<example_commands>
env.SourceCode('.', env.BitKeeper('/usr/local/BKsources'))
env.SourceCode('src', env.CVS('/usr/local/CVSROOT'))
env.SourceCode('/', env.RCS())
env.SourceCode(['f1.c', 'f2.c'], env.SCCS())
env.SourceCode('no_source.c', None)
-</example>
+</example_commands>
+<para>
<!-- env.SourceCode('.', env.Subversion('file:///usr/local/Subversion')) -->
+</para>
</summary>
</scons_function>
@@ -2540,13 +2923,16 @@ env.SourceCode('no_source.c', None)
(type)
</arguments>
<summary>
+<para>
Note: Although it is not yet officially deprecated,
use of this function is discouraged.
See the
&f-link-Decider;
function for a more flexible and straightforward way
to configure SCons' decision-making.
+</para>
+<para>
The
&f-SourceSignatures;
function tells
@@ -2559,7 +2945,9 @@ Legal values are
<literal>MD5</literal>
or
<literal>timestamp</literal>.
+</para>
+<para>
If the environment method is used,
the specified type of source signature
is only used when deciding whether targets
@@ -2568,14 +2956,18 @@ If the global function is used,
the specified type of source signature becomes the default
used for all decisions
about whether targets are up-to-date.
+</para>
+<para>
<literal>MD5</literal>
means
&scons;
decides that a source file has changed
if the MD5 checksum of its contents has changed since
the last time it was used to rebuild a particular target file.
+</para>
+<para>
<literal>timestamp</literal>
means
&scons;
@@ -2586,12 +2978,16 @@ the last time it was used to rebuild a particular target file.
by default it will also rebuild if the dependency is
<emphasis>older</emphasis>
than the last time it was used to rebuild the target file.)
+</para>
+<para>
There is no different between the two behaviors
for Python
&f-Value;
node objects.
+</para>
+<para>
<literal>MD5</literal>
signatures take longer to compute,
but are more accurate than
@@ -2599,7 +2995,9 @@ but are more accurate than
signatures.
The default value is
<literal>MD5</literal>.
+</para>
+<para>
Note that the default
&f-link-TargetSignatures;
setting (see below)
@@ -2615,6 +3013,7 @@ affect the up-to-date decision for all files in the build
when
&f-env-SourceSignatures;
is used).
+</para>
</summary>
</scons_function>
@@ -2623,6 +3022,7 @@ is used).
(arg)
</arguments>
<summary>
+<para>
Returns a list of file names or other objects.
If arg is a string,
it will be split on strings of white-space characters
@@ -2633,10 +3033,13 @@ the list will be returned untouched.
If arg is any other type of object,
it will be returned as a list
containing just the object.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
files = Split("f1.c f2.c f3.c")
files = env.Split("f4.c f5.c f6.c")
files = Split("""
@@ -2644,7 +3047,7 @@ files = Split("""
f8.c
f9.c
""")
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2653,10 +3056,13 @@ files = Split("""
(input, [raw, target, source, conv])
</arguments>
<summary>
+<para>
Performs construction variable interpolation
on the specified string or sequence argument
<varname>input</varname>.
+</para>
+<para>
By default,
leading or trailing white space will
be removed from the result.
@@ -2686,13 +3092,17 @@ and
<literal>$)</literal>
pairs
(as is done for signature calculation).
+</para>
+<para>
If the input is a sequence
(list or tuple),
the individual elements of
the sequence will be expanded,
and the results will be returned as a list.
+</para>
+<para>
The optional
<varname>target</varname>
and
@@ -2712,7 +3122,9 @@ calling
&f-env-subst;
from within a Python function used
as an SCons action.
+</para>
+<para>
Returned string values or sequence elements
are converted to their string representation by default.
The optional
@@ -2728,10 +3140,13 @@ you can use the Python
&lambda;
idiom to pass in an unnamed function
that simply returns its unconverted argument.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
print env.subst("The C compiler is: $CC")
def compile(target, source, env):
@@ -2741,7 +3156,7 @@ def compile(target, source, env):
source_nodes = env.subst('$EXPAND_TO_NODELIST',
conv=lambda x: x)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2750,13 +3165,16 @@ source_nodes = env.subst('$EXPAND_TO_NODELIST',
(type)
</arguments>
<summary>
+<para>
Note: Although it is not yet officially deprecated,
use of this function is discouraged.
See the
&f-link-Decider;
function for a more flexible and straightforward way
to configure SCons' decision-making.
+</para>
+<para>
The
&f-TargetSignatures;
function tells
@@ -2775,7 +3193,9 @@ Legal values are
<literal>"timestamp"</literal>;
or
<literal>"source"</literal>.
+</para>
+<para>
If the environment method is used,
the specified type of target signature is only used
for targets built with that environment.
@@ -2784,7 +3204,9 @@ the specified type of signature becomes the default
used for all target files that
don't have an explicit target signature type
specified for their environments.
+</para>
+<para>
<literal>"content"</literal>
(or its synonym
<literal>"MD5"</literal>)
@@ -2801,7 +3223,9 @@ of target files after they're built,
and may decide that it does not need to rebuild
"downstream" target files if a file was
rebuilt with exactly the same contents as the last time.
+</para>
+<para>
<literal>"timestamp"</literal>
means
&scons;
@@ -2812,7 +3236,9 @@ the last time it was used to rebuild some other target file.
by default it will also rebuild if the dependency is
<emphasis>older</emphasis>
than the last time it was used to rebuild the target file.)
+</para>
+<para>
<literal>"source"</literal>
means
&scons;
@@ -2828,7 +3254,9 @@ This means that
will treat all input files to a target the same way,
regardless of whether they are source files
or have been built from other files.
+</para>
+<para>
<literal>"build"</literal>
means
&scons;
@@ -2843,7 +3271,9 @@ so that other "downstream" target files
will always be rebuilt,
even if the contents or the timestamp
have not changed.
+</para>
+<para>
<literal>"build"</literal>
signatures are fastest because
<literal>"content"</literal>
@@ -2863,7 +3293,9 @@ when other target files may be rebuilt from
both source and target input files.
The default value is
<literal>"source"</literal>.
+</para>
+<para>
Because the default setting is
<literal>"source"</literal>,
using
@@ -2877,6 +3309,7 @@ Use of
&f-TargetSignatures;
provides specific control for how built target files
affect their "downstream" dependencies.
+</para>
</summary>
</scons_function>
@@ -2885,6 +3318,7 @@ affect their "downstream" dependencies.
(string, [toolpath, **kw])
</arguments>
<summary>
+<para>
The
&f-Tool;
form of the function
@@ -2900,14 +3334,19 @@ to the construction environment
and the name of the tool will be added to the
&cv-link-TOOLS;
construction variable.
+</para>
+<para>
Additional keyword arguments are passed to the tool's
<function>generate</function>()
method.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env = Environment(tools = [ Tool('msvc') ])
env = Environment()
@@ -2915,23 +3354,27 @@ t = Tool('msvc')
t(env) # adds 'msvc' to the TOOLS variable
u = Tool('opengl', toolpath = ['tools'])
u(env) # adds 'opengl' to the TOOLS variable
-</example>
+</example_commands>
+<para>
The
&f-env-Tool;
form of the function
applies the callable object for the specified tool
<varname>string</varname>
to the environment through which the method was called.
+</para>
+<para>
Additional keyword arguments are passed to the tool's
<function>generate</function>()
method.
+</para>
-<example>
+<example_commands>
env.Tool('gcc')
env.Tool('opengl', toolpath = ['build/tools'])
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -2940,6 +3383,7 @@ env.Tool('opengl', toolpath = ['build/tools'])
(value, [built_value])
</arguments>
<summary>
+<para>
Returns a Node object representing the specified Python value. Value
Nodes can be used as dependencies of targets. If the result of
calling
@@ -2951,7 +3395,9 @@ will be rebuilt.
files are up-to-date.)
When using timestamp source signatures, Value Nodes'
timestamps are equal to the system time when the Node is created.
+</para>
+<para>
The returned Value Node object has a
<function>write</function>()
method that can be used to "build" a Value Node
@@ -2965,10 +3411,13 @@ to indicate the Node should already be considered
There is a corresponding
<function>read</function>()
method that will return the built value of the Node.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env = Environment()
def create(target, source, env):
@@ -3000,7 +3449,7 @@ input = env.Value('after')
# action to the construction environment.
env['BUILDERS']['UpdateValue'] = Builder(action = build_value)
env.UpdateValue(target = Value(output), source = Value(input))
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -3009,6 +3458,7 @@ env.UpdateValue(target = Value(output), source = Value(input))
(variant_dir, src_dir, [duplicate])
</arguments>
<summary>
+<para>
Use the
&f-VariantDir;
function to create a copy of your sources in another location:
@@ -3021,7 +3471,9 @@ the file or directory is copied to
Target files can be built in a different directory
than the original sources by simply refering to the sources (and targets)
within the variant tree.
+</para>
+<para>
&f-VariantDir;
can be called multiple times with the same
<varname>src_dir</varname>
@@ -3038,7 +3490,9 @@ TODO: Can the above restrictions be clarified or relaxed?
TODO: The latter restriction is clearly not completely right;
TODO: src_dir = '.' works fine with a build dir under it.
-->
+</para>
+<para>
The default behavior is for
&scons;
to physically duplicate the source files in the variant tree.
@@ -3049,7 +3503,9 @@ or preprocessors or other scanners search for included files
relative to the source file,
or individual compilers or other invoked tools are hard-coded
to put derived files in the same directory as source files.
+</para>
+<para>
If possible on the platform,
the duplication is performed by linking rather than copying;
see also the
@@ -3058,7 +3514,9 @@ command-line option.
Moreover, only the files needed for the build are duplicated;
files and directories that are not used are not present in
<varname>variant_dir</varname>.
+</para>
+<para>
Duplicating the source tree may be disabled by setting the
<literal>duplicate</literal>
argument to
@@ -3074,7 +3532,9 @@ This is always more efficient than
<literal>duplicate=1</literal>,
and is usually safe for most builds
(but see above for cases that may cause problems).
+</para>
+<para>
Note that
&f-VariantDir;
works most naturally with a subsidiary SConscript file.
@@ -3086,40 +3546,45 @@ regardless of the value of
This is how you tell
&scons;
which variant of a source tree to build:
+</para>
-<example>
+<example_commands>
# run src/SConscript in two variant directories
VariantDir('build/variant1', 'src')
SConscript('build/variant1/SConscript')
VariantDir('build/variant2', 'src')
SConscript('build/variant2/SConscript')
-</example>
+</example_commands>
+<para>
See also the
&f-link-SConscript;
function, described above,
for another way to specify a variant directory
in conjunction with calling a subsidiary SConscript file.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# use names in the build directory, not the source directory
VariantDir('build', 'src', duplicate=0)
Program('build/prog', 'build/source.c')
-</example>
+</example_commands>
-<example>
+<example_commands>
# this builds both the source and docs in a separate subtree
VariantDir('build', '.', duplicate=0)
SConscript(dirs=['build/src','build/doc'])
-</example>
+</example_commands>
-<example>
+<example_commands>
# same as previous example, but only uses SConscript
SConscript(dirs='src', variant_dir='build/src', duplicate=0)
SConscript(dirs='doc', variant_dir='build/doc', duplicate=0)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -3128,6 +3593,7 @@ SConscript(dirs='doc', variant_dir='build/doc', duplicate=0)
(program, [path, pathext, reject])
</arguments>
<summary>
+<para>
Searches for the specified executable
<varname>program</varname>,
returning the full path name to the program
@@ -3154,5 +3620,8 @@ path name or names
in the specified
<varname>reject</varname>
list, if any.
+</para>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py
index 3fd836f..d012e0d 100644
--- a/src/engine/SCons/EnvironmentTests.py
+++ b/src/engine/SCons/EnvironmentTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/EnvironmentTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/EnvironmentTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -170,7 +170,7 @@ class TestEnvironmentFixture(object):
single_source = 1)
kw['BUILDERS'] = {'Object' : static_obj}
static_obj.add_action('.cpp', 'fake action')
-
+
env = Environment(*args, **kw)
return env
@@ -1682,6 +1682,8 @@ def exists(env):
CCC1 = '',
CCC2 = '',
DDD1 = ['a', 'b', 'c'])
+ env['LL1'] = [env.Literal('a literal'), env.Literal('b literal')]
+ env['LL2'] = [env.Literal('c literal'), env.Literal('b literal')]
env.AppendUnique(AAA1 = 'a1',
AAA2 = ['a2'],
AAA3 = ['a3', 'b', 'c', 'c', 'b', 'a3'], # ignore dups
@@ -1694,7 +1696,9 @@ def exists(env):
BBB5 = ['b5.new'],
CCC1 = 'c1',
CCC2 = ['c2'],
- DDD1 = 'b')
+ DDD1 = 'b',
+ LL1 = env.Literal('a literal'),
+ LL2 = env.Literal('a literal'))
assert env['AAA1'] == 'a1a1', env['AAA1']
assert env['AAA2'] == ['a2'], env['AAA2']
@@ -1709,6 +1713,8 @@ def exists(env):
assert env['CCC1'] == 'c1', env['CCC1']
assert env['CCC2'] == ['c2'], env['CCC2']
assert env['DDD1'] == ['a', 'b', 'c'], env['DDD1']
+ assert env['LL1'] == [env.Literal('a literal'), env.Literal('b literal')], env['LL1']
+ assert env['LL2'] == [env.Literal('c literal'), env.Literal('b literal'), env.Literal('a literal')], [str(x) for x in env['LL2']]
env.AppendUnique(DDD1 = 'b', delete_existing=1)
assert env['DDD1'] == ['a', 'c', 'b'], env['DDD1'] # b moves to end
@@ -1716,7 +1722,7 @@ def exists(env):
assert env['DDD1'] == ['c', 'a', 'b'], env['DDD1'] # a & b move to end
env.AppendUnique(DDD1 = ['e','f', 'e'], delete_existing=1)
assert env['DDD1'] == ['c', 'a', 'b', 'f', 'e'], env['DDD1'] # add last
-
+
env['CLVar'] = CLVar([])
env.AppendUnique(CLVar = 'bar')
result = env['CLVar']
@@ -2024,7 +2030,7 @@ def generate(env):
try:
save_command = []
- env.backtick = my_backtick(save_command,
+ env.backtick = my_backtick(save_command,
"-I/usr/include/fum -I bar -X\n" + \
"-L/usr/fax -L foo -lxxx -l yyy " + \
"-Wa,-as -Wl,-link " + \
@@ -2369,7 +2375,7 @@ f5: \
env.PrependUnique(DDD1 = ['a','c'], delete_existing=1)
assert env['DDD1'] == ['a', 'c', 'b'], env['DDD1'] # a & c move to front
env.PrependUnique(DDD1 = ['d','e','d'], delete_existing=1)
- assert env['DDD1'] == ['d', 'e', 'a', 'c', 'b'], env['DDD1']
+ assert env['DDD1'] == ['d', 'e', 'a', 'c', 'b'], env['DDD1']
env['CLVar'] = CLVar([])
@@ -3119,6 +3125,29 @@ def generate(env):
assert t[4].path == 'p_ggg'
assert t[4].precious
+ def test_Pseudo(self):
+ """Test the Pseudo() method"""
+ env = self.TestEnvironment(FOO='ggg', BAR='hhh')
+ env.Dir('p_hhhb')
+ env.File('p_d')
+ t = env.Pseudo('p_a', 'p_${BAR}b', ['p_c', 'p_d'], 'p_$FOO')
+
+ assert t[0].__class__.__name__ == 'Entry', t[0].__class__.__name__
+ assert t[0].path == 'p_a'
+ assert t[0].pseudo
+ assert t[1].__class__.__name__ == 'Dir', t[1].__class__.__name__
+ assert t[1].path == 'p_hhhb'
+ assert t[1].pseudo
+ assert t[2].__class__.__name__ == 'Entry', t[2].__class__.__name__
+ assert t[2].path == 'p_c'
+ assert t[2].pseudo
+ assert t[3].__class__.__name__ == 'File', t[3].__class__.__name__
+ assert t[3].path == 'p_d'
+ assert t[3].pseudo
+ assert t[4].__class__.__name__ == 'Entry', t[4].__class__.__name__
+ assert t[4].path == 'p_ggg'
+ assert t[4].pseudo
+
def test_Repository(self):
"""Test the Repository() method."""
class MyFS(object):
diff --git a/src/engine/SCons/Errors.py b/src/engine/SCons/Errors.py
index 41dac19..bbdfc57 100644
--- a/src/engine/SCons/Errors.py
+++ b/src/engine/SCons/Errors.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ and user errors in SCons.
"""
-__revision__ = "src/engine/SCons/Errors.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Errors.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/ErrorsTests.py b/src/engine/SCons/ErrorsTests.py
index 2530e43..84f798b 100644
--- a/src/engine/SCons/ErrorsTests.py
+++ b/src/engine/SCons/ErrorsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/ErrorsTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/ErrorsTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Executor.py b/src/engine/SCons/Executor.py
index 0bea6fb..c9f64e4 100644
--- a/src/engine/SCons/Executor.py
+++ b/src/engine/SCons/Executor.py
@@ -6,7 +6,7 @@ Nodes.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,10 +27,11 @@ Nodes.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Executor.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Executor.py 2014/03/02 14:18:15 garyo"
import collections
+import SCons.Debug
from SCons.Debug import logInstanceCreation
import SCons.Errors
import SCons.Memoize
@@ -123,7 +124,7 @@ class Executor(object):
def __init__(self, action, env=None, overridelist=[{}],
targets=[], sources=[], builder_kw={}):
- if __debug__: logInstanceCreation(self, 'Executor.Executor')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Executor.Executor')
self.set_action_list(action)
self.pre_actions = []
self.post_actions = []
@@ -229,6 +230,8 @@ class Executor(object):
self.action_list = action
def get_action_list(self):
+ if self.action_list is None:
+ return []
return self.pre_actions + self.action_list + self.post_actions
def get_all_targets(self):
@@ -267,7 +270,8 @@ class Executor(object):
"""
result = SCons.Util.UniqueList([])
for target in self.get_all_targets():
- result.extend(target.prerequisites)
+ if target.prerequisites is not None:
+ result.extend(target.prerequisites)
return result
def get_action_side_effects(self):
@@ -570,12 +574,12 @@ class Null(object):
"""A null Executor, with a null build Environment, that does
nothing when the rest of the methods call it.
- This might be able to disapper when we refactor things to
+ This might be able to disappear when we refactor things to
disassociate Builders from Nodes entirely, so we're not
going to worry about unit tests for this--at least for now.
"""
def __init__(self, *args, **kw):
- if __debug__: logInstanceCreation(self, 'Executor.Null')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Executor.Null')
self.batches = [Batch(kw['targets'][:], [])]
def get_build_env(self):
return get_NullEnvironment()
@@ -625,7 +629,6 @@ class Null(object):
self._morph()
self.set_action_list(action)
-
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/src/engine/SCons/ExecutorTests.py b/src/engine/SCons/ExecutorTests.py
index fd9ef8a..294ac1f 100644
--- a/src/engine/SCons/ExecutorTests.py
+++ b/src/engine/SCons/ExecutorTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/ExecutorTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/ExecutorTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Job.py b/src/engine/SCons/Job.py
index 4e51b99..43a8ae5 100644
--- a/src/engine/SCons/Job.py
+++ b/src/engine/SCons/Job.py
@@ -7,7 +7,7 @@ stop, and wait on jobs.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ stop, and wait on jobs.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Job.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Job.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/JobTests.py b/src/engine/SCons/JobTests.py
index 9d96a6b..5c7e707 100644
--- a/src/engine/SCons/JobTests.py
+++ b/src/engine/SCons/JobTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/JobTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/JobTests.py 2014/03/02 14:18:15 garyo"
import unittest
import random
diff --git a/src/engine/SCons/Memoize.py b/src/engine/SCons/Memoize.py
index af84745..50dce3b 100644
--- a/src/engine/SCons/Memoize.py
+++ b/src/engine/SCons/Memoize.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Memoize.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Memoize.py 2014/03/02 14:18:15 garyo"
__doc__ = """Memoizer
diff --git a/src/engine/SCons/MemoizeTests.py b/src/engine/SCons/MemoizeTests.py
index 264820e..7ad1bb4 100644
--- a/src/engine/SCons/MemoizeTests.py
+++ b/src/engine/SCons/MemoizeTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/MemoizeTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/MemoizeTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Node/Alias.py b/src/engine/SCons/Node/Alias.py
index 02fe121..0b8f9b0 100644
--- a/src/engine/SCons/Node/Alias.py
+++ b/src/engine/SCons/Node/Alias.py
@@ -8,7 +8,7 @@ This creates a hash of global Aliases (dummy targets).
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ This creates a hash of global Aliases (dummy targets).
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/Alias.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/Alias.py 2014/03/02 14:18:15 garyo"
import collections
diff --git a/src/engine/SCons/Node/AliasTests.py b/src/engine/SCons/Node/AliasTests.py
index 597a053..e49514e 100644
--- a/src/engine/SCons/Node/AliasTests.py
+++ b/src/engine/SCons/Node/AliasTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/AliasTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/AliasTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index a21561f..f54b0ab 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -11,7 +11,7 @@ that can be used by scripts or modules looking for the canonical default.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ that can be used by scripts or modules looking for the canonical default.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Node/FS.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/FS.py 2014/03/02 14:18:15 garyo"
import fnmatch
import os
@@ -44,6 +44,7 @@ import time
import codecs
import SCons.Action
+import SCons.Debug
from SCons.Debug import logInstanceCreation
import SCons.Errors
import SCons.Memoize
@@ -581,7 +582,7 @@ class Base(SCons.Node.Node):
our relative and absolute paths, identify our parent
directory, and indicate that this node should use
signatures."""
- if __debug__: logInstanceCreation(self, 'Node.FS.Base')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.Base')
SCons.Node.Node.__init__(self)
# Filenames and paths are probably reused and are intern'ed to
@@ -1111,7 +1112,7 @@ class FS(LocalFS):
The path argument must be a valid absolute path.
"""
- if __debug__: logInstanceCreation(self, 'Node.FS')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS')
self._memo = {}
@@ -1445,7 +1446,7 @@ class Dir(Base):
BuildInfo = DirBuildInfo
def __init__(self, name, directory, fs):
- if __debug__: logInstanceCreation(self, 'Node.FS.Dir')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.Dir')
Base.__init__(self, name, directory, fs)
self._morph()
@@ -1841,7 +1842,7 @@ class Dir(Base):
for entry in map(_my_normcase, entries):
d[entry] = True
self.on_disk_entries = d
- if sys.platform == 'win32':
+ if sys.platform == 'win32' or sys.platform == 'cygwin':
name = _my_normcase(name)
result = d.get(name)
if result is None:
@@ -2113,7 +2114,7 @@ class RootDir(Dir):
this directory.
"""
def __init__(self, drive, fs):
- if __debug__: logInstanceCreation(self, 'Node.FS.RootDir')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.RootDir')
# We're going to be our own parent directory (".." entry and .dir
# attribute) so we have to set up some values so Base.__init__()
# won't gag won't it calls some of our methods.
@@ -2361,7 +2362,7 @@ class File(Base):
"Directory %s found where file expected.")
def __init__(self, name, directory, fs):
- if __debug__: logInstanceCreation(self, 'Node.FS.File')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.File')
Base.__init__(self, name, directory, fs)
self._morph()
@@ -2397,6 +2398,8 @@ class File(Base):
self.scanner_paths = {}
if not hasattr(self, '_local'):
self._local = 0
+ if not hasattr(self, 'released_target_info'):
+ self.released_target_info = False
# If there was already a Builder set on this entry, then
# we need to make sure we call the target-decider function,
@@ -2724,7 +2727,7 @@ class File(Base):
return self.get_build_env().get_CacheDir().retrieve(self)
def visited(self):
- if self.exists():
+ if self.exists() and self.executor is not None:
self.get_build_env().get_CacheDir().push_if_forced(self)
ninfo = self.get_ninfo()
@@ -2746,6 +2749,58 @@ class File(Base):
self.store_info()
+ def release_target_info(self):
+ """Called just after this node has been marked
+ up-to-date or was built completely.
+
+ This is where we try to release as many target node infos
+ as possible for clean builds and update runs, in order
+ to minimize the overall memory consumption.
+
+ We'd like to remove a lot more attributes like self.sources
+ and self.sources_set, but they might get used
+ in a next build step. For example, during configuration
+ the source files for a built *.o file are used to figure out
+ which linker to use for the resulting Program (gcc vs. g++)!
+ That's why we check for the 'keep_targetinfo' attribute,
+ config Nodes and the Interactive mode just don't allow
+ an early release of most variables.
+
+ In the same manner, we can't simply remove the self.attributes
+ here. The smart linking relies on the shared flag, and some
+ parts of the java Tool use it to transport information
+ about nodes...
+
+ @see: built() and Node.release_target_info()
+ """
+ if (self.released_target_info or SCons.Node.interactive):
+ return
+
+ if not hasattr(self.attributes, 'keep_targetinfo'):
+ # Cache some required values, before releasing
+ # stuff like env, executor and builder...
+ self.changed(allowcache=True)
+ self.get_contents_sig()
+ self.get_build_env()
+ # Now purge unneeded stuff to free memory...
+ self.executor = None
+ self._memo.pop('rfile', None)
+ self.prerequisites = None
+ # Cleanup lists, but only if they're empty
+ if not len(self.ignore_set):
+ self.ignore_set = None
+ if not len(self.implicit_set):
+ self.implicit_set = None
+ if not len(self.depends_set):
+ self.depends_set = None
+ if not len(self.ignore):
+ self.ignore = None
+ if not len(self.depends):
+ self.depends = None
+ # Mark this node as done, we only have to release
+ # the memory once...
+ self.released_target_info = True
+
def find_src_builder(self):
if self.rexists():
return None
@@ -2956,6 +3011,52 @@ class File(Base):
SCons.Node.Node.builder_set(self, builder)
self.changed_since_last_build = self.decide_target
+ def built(self):
+ """Called just after this File node is successfully built.
+
+ Just like for 'release_target_info' we try to release
+ some more target node attributes in order to minimize the
+ overall memory consumption.
+
+ @see: release_target_info
+ """
+
+ SCons.Node.Node.built(self)
+
+ if (not SCons.Node.interactive and
+ not hasattr(self.attributes, 'keep_targetinfo')):
+ # Ensure that the build infos get computed and cached...
+ self.store_info()
+ # ... then release some more variables.
+ self._specific_sources = False
+ self.labspath = None
+ self._save_str()
+ self.cwd = None
+
+ self.scanner_paths = None
+
+ def changed(self, node=None, allowcache=False):
+ """
+ Returns if the node is up-to-date with respect to the BuildInfo
+ stored last time it was built.
+
+ For File nodes this is basically a wrapper around Node.changed(),
+ but we allow the return value to get cached after the reference
+ to the Executor got released in release_target_info().
+
+ @see: Node.changed()
+ """
+ if node is None:
+ try:
+ return self._memo['changed']
+ except KeyError:
+ pass
+
+ has_changed = SCons.Node.Node.changed(self, node)
+ if allowcache:
+ self._memo['changed'] = has_changed
+ return has_changed
+
def changed_content(self, target, prev_ni):
cur_csig = self.get_csig()
try:
@@ -3089,25 +3190,50 @@ class File(Base):
self.cachedir_csig = self.get_csig()
return self.cachedir_csig
+ def get_contents_sig(self):
+ """
+ A helper method for get_cachedir_bsig.
+
+ It computes and returns the signature for this
+ node's contents.
+ """
+
+ try:
+ return self.contentsig
+ except AttributeError:
+ pass
+
+ executor = self.get_executor()
+
+ result = self.contentsig = SCons.Util.MD5signature(executor.get_contents())
+ return result
+
def get_cachedir_bsig(self):
+ """
+ Return the signature for a cached file, including
+ its children.
+
+ It adds the path of the cached file to the cache signature,
+ because multiple targets built by the same action will all
+ have the same build signature, and we have to differentiate
+ them somehow.
+ """
try:
return self.cachesig
except AttributeError:
pass
-
- # Add the path to the cache signature, because multiple
- # targets built by the same action will all have the same
- # build signature, and we have to differentiate them somehow.
+
+ # Collect signatures for all children
children = self.children()
- executor = self.get_executor()
- # sigs = [n.get_cachedir_csig() for n in children]
sigs = [n.get_cachedir_csig() for n in children]
- sigs.append(SCons.Util.MD5signature(executor.get_contents()))
+ # Append this node's signature...
+ sigs.append(self.get_contents_sig())
+ # ...and it's path
sigs.append(self.path)
+ # Merge this all into a single signature
result = self.cachesig = SCons.Util.MD5collect(sigs)
return result
-
default_fs = None
def get_default_fs():
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index 4192b3d..e347d3b 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
#
from __future__ import division
-__revision__ = "src/engine/SCons/Node/FSTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/FSTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 7ec0291..19dcfd4 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Node/NodeTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/NodeTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -693,6 +693,15 @@ class NodeTestCase(unittest.TestCase):
node.set_precious(7)
assert node.precious == 7
+ def test_set_pseudo(self):
+ """Test setting a Node's pseudo value
+ """
+ node = SCons.Node.Node()
+ node.set_pseudo()
+ assert node.pseudo
+ node.set_pseudo(False)
+ assert not node.pseudo
+
def test_exists(self):
"""Test evaluating whether a Node exists.
"""
@@ -954,7 +963,7 @@ class NodeTestCase(unittest.TestCase):
self.source_scanner = scanner
builder = Builder2(ts1)
-
+
targets = builder([source])
s = targets[0].get_source_scanner(source)
assert s is ts1, s
@@ -967,7 +976,7 @@ class NodeTestCase(unittest.TestCase):
builder = Builder1(env=Environment(SCANNERS = [ts3]))
targets = builder([source])
-
+
s = targets[0].get_source_scanner(source)
assert s is ts3, s
diff --git a/src/engine/SCons/Node/Python.py b/src/engine/SCons/Node/Python.py
index 153e32d..8936b6d 100644
--- a/src/engine/SCons/Node/Python.py
+++ b/src/engine/SCons/Node/Python.py
@@ -5,7 +5,7 @@ Python nodes.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Python nodes.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/Python.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/Python.py 2014/03/02 14:18:15 garyo"
import SCons.Node
diff --git a/src/engine/SCons/Node/PythonTests.py b/src/engine/SCons/Node/PythonTests.py
index 90f4cbf..b82ce2b 100644
--- a/src/engine/SCons/Node/PythonTests.py
+++ b/src/engine/SCons/Node/PythonTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/PythonTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/PythonTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index ece4a5a..e6a3001 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -20,7 +20,7 @@ be able to depend on any other type of "thing."
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -41,12 +41,13 @@ be able to depend on any other type of "thing."
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Node/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Node/__init__.py 2014/03/02 14:18:15 garyo"
import collections
import copy
from itertools import chain
+import SCons.Debug
from SCons.Debug import logInstanceCreation
import SCons.Executor
import SCons.Memoize
@@ -57,6 +58,10 @@ from SCons.Debug import Trace
def classname(obj):
return str(obj.__class__).split('.')[-1]
+# Set to false if we're doing a dry run. There's more than one of these
+# little treats
+do_store_info = True
+
# Node states
#
# These are in "priority" order, so that the maximum value for any
@@ -95,6 +100,11 @@ def do_nothing(node): pass
Annotate = do_nothing
+# Gets set to 'True' if we're running in interactive mode. Is
+# currently used to release parts of a target's info during
+# clean builds and update runs (see release_target_info).
+interactive = False
+
# Classes for signature info for Nodes.
class NodeInfoBase(object):
@@ -183,7 +193,7 @@ class Node(object):
pass
def __init__(self):
- if __debug__: logInstanceCreation(self, 'Node.Node')
+ if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.Node')
# Note that we no longer explicitly initialize a self.builder
# attribute to None here. That's because the self.builder
# attribute may be created on-the-fly later by a subclass (the
@@ -204,7 +214,7 @@ class Node(object):
self.depends_set = set()
self.ignore = [] # dependencies to ignore
self.ignore_set = set()
- self.prerequisites = SCons.Util.UniqueList()
+ self.prerequisites = None
self.implicit = None # implicit (scanned) dependencies (None means not scanned yet)
self.waiting_parents = set()
self.waiting_s_e = set()
@@ -214,6 +224,7 @@ class Node(object):
self.env = None
self.state = no_state
self.precious = None
+ self.pseudo = False
self.noclean = 0
self.nocache = 0
self.cached = 0 # is this node pulled from cache?
@@ -286,7 +297,8 @@ class Node(object):
except AttributeError:
pass
else:
- executor.cleanup()
+ if executor is not None:
+ executor.cleanup()
def reset_executor(self):
"Remove cached executor; forces recompute when needed."
@@ -346,10 +358,11 @@ class Node(object):
methods should call this base class method to get the child
check and the BuildInfo structure.
"""
- for d in self.depends:
- if d.missing():
- msg = "Explicit dependency `%s' not found, needed by target `%s'."
- raise SCons.Errors.StopError(msg % (d, self))
+ if self.depends is not None:
+ for d in self.depends:
+ if d.missing():
+ msg = "Explicit dependency `%s' not found, needed by target `%s'."
+ raise SCons.Errors.StopError(msg % (d, self))
if self.implicit is not None:
for i in self.implicit:
if i.missing():
@@ -385,6 +398,13 @@ class Node(object):
self.clear()
+ if self.pseudo:
+ if self.exists():
+ raise SCons.Errors.UserError("Pseudo target " + str(self) + " must not exist")
+ else:
+ if not self.exists() and do_store_info:
+ SCons.Warnings.warn(SCons.Warnings.TargetNotBuiltWarning,
+ "Cannot find target " + str(self) + " after building")
self.ninfo.update(self)
def visited(self):
@@ -400,6 +420,23 @@ class Node(object):
self.ninfo.update(self)
self.store_info()
+ def release_target_info(self):
+ """Called just after this node has been marked
+ up-to-date or was built completely.
+
+ This is where we try to release as many target node infos
+ as possible for clean builds and update runs, in order
+ to minimize the overall memory consumption.
+
+ By purging attributes that aren't needed any longer after
+ a Node (=File) got built, we don't have to care that much how
+ many KBytes a Node actually requires...as long as we free
+ the memory shortly afterwards.
+
+ @see: built() and File.release_target_info()
+ """
+ pass
+
#
#
#
@@ -501,7 +538,7 @@ class Node(object):
def is_derived(self):
"""
- Returns true iff this node is derived (i.e. built).
+ Returns true if this node is derived (i.e. built).
This should return true only for nodes whose path should be in
the variant directory when duplicate=0 and should contribute their build
@@ -788,6 +825,10 @@ class Node(object):
"""Set the Node's precious value."""
self.precious = precious
+ def set_pseudo(self, pseudo = True):
+ """Set the Node's precious value."""
+ self.pseudo = pseudo
+
def set_noclean(self, noclean = 1):
"""Set the Node's noclean value."""
# Make sure noclean is an integer so the --debug=stree
@@ -837,6 +878,8 @@ class Node(object):
def add_prerequisite(self, prerequisite):
"""Adds prerequisites"""
+ if self.prerequisites is None:
+ self.prerequisites = SCons.Util.UniqueList()
self.prerequisites.extend(prerequisite)
self._children_reset()
@@ -924,20 +967,14 @@ class Node(object):
# dictionary patterns I found all ended up using "not in"
# internally anyway...)
if self.ignore_set:
- if self.implicit is None:
- iter = chain(self.sources,self.depends)
- else:
- iter = chain(self.sources, self.depends, self.implicit)
+ iter = chain.from_iterable(filter(None, [self.sources, self.depends, self.implicit]))
children = []
for i in iter:
if i not in self.ignore_set:
children.append(i)
else:
- if self.implicit is None:
- children = self.sources + self.depends
- else:
- children = self.sources + self.depends + self.implicit
+ children = self.all_children(scan=0)
self._memo['children_get'] = children
return children
@@ -964,10 +1001,7 @@ class Node(object):
# using dictionary keys, lose the order, and the only ordered
# dictionary patterns I found all ended up using "not in"
# internally anyway...)
- if self.implicit is None:
- return self.sources + self.depends
- else:
- return self.sources + self.depends + self.implicit
+ return list(chain.from_iterable(filter(None, [self.sources, self.depends, self.implicit])))
def children(self, scan=1):
"""Return a list of the node's direct children, minus those
@@ -1015,7 +1049,7 @@ class Node(object):
def Decider(self, function):
SCons.Util.AddMethod(self, function, 'changed_since_last_build')
- def changed(self, node=None):
+ def changed(self, node=None, allowcache=False):
"""
Returns if the node is up-to-date with respect to the BuildInfo
stored last time it was built. The default behavior is to compare
@@ -1028,6 +1062,15 @@ class Node(object):
any difference, but we now rely on checking every dependency
to make sure that any necessary Node information (for example,
the content signature of an #included .h file) is updated.
+
+ The allowcache option was added for supporting the early
+ release of the executor/builder structures, right after
+ a File target was built. When set to true, the return
+ value of this changed method gets cached for File nodes.
+ Like this, the executor isn't needed any longer for subsequent
+ calls to changed().
+
+ @see: FS.File.changed(), FS.File.release_target_info()
"""
t = 0
if t: Trace('changed(%s [%s], %s)' % (self, classname(self), node))
@@ -1103,17 +1146,18 @@ class Node(object):
Return a text representation, suitable for displaying to the
user, of the include tree for the sources of this node.
"""
- if self.is_derived() and self.env:
+ if self.is_derived():
env = self.get_build_env()
- for s in self.sources:
- scanner = self.get_source_scanner(s)
- if scanner:
- path = self.get_build_scanner_path(scanner)
- else:
- path = None
- def f(node, env=env, scanner=scanner, path=path):
- return node.get_found_includes(env, scanner, path)
- return SCons.Util.render_tree(s, f, 1)
+ if env:
+ for s in self.sources:
+ scanner = self.get_source_scanner(s)
+ if scanner:
+ path = self.get_build_scanner_path(scanner)
+ else:
+ path = None
+ def f(node, env=env, scanner=scanner, path=path):
+ return node.get_found_includes(env, scanner, path)
+ return SCons.Util.render_tree(s, f, 1)
else:
return None
diff --git a/src/engine/SCons/Options/BoolOption.py b/src/engine/SCons/Options/BoolOption.py
index f1569a5..cc05944 100644
--- a/src/engine/SCons/Options/BoolOption.py
+++ b/src/engine/SCons/Options/BoolOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/BoolOption.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Options/BoolOption.py 2014/03/02 14:18:15 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/EnumOption.py b/src/engine/SCons/Options/EnumOption.py
index 9207e71..5ff79ba 100644
--- a/src/engine/SCons/Options/EnumOption.py
+++ b/src/engine/SCons/Options/EnumOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/EnumOption.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Options/EnumOption.py 2014/03/02 14:18:15 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/ListOption.py b/src/engine/SCons/Options/ListOption.py
index cbf0bd9..190dff2 100644
--- a/src/engine/SCons/Options/ListOption.py
+++ b/src/engine/SCons/Options/ListOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/ListOption.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Options/ListOption.py 2014/03/02 14:18:15 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/PackageOption.py b/src/engine/SCons/Options/PackageOption.py
index 2b27931..254b491 100644
--- a/src/engine/SCons/Options/PackageOption.py
+++ b/src/engine/SCons/Options/PackageOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/PackageOption.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Options/PackageOption.py 2014/03/02 14:18:15 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/PathOption.py b/src/engine/SCons/Options/PathOption.py
index 56475ad..bdde473 100644
--- a/src/engine/SCons/Options/PathOption.py
+++ b/src/engine/SCons/Options/PathOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/PathOption.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Options/PathOption.py 2014/03/02 14:18:15 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/__init__.py b/src/engine/SCons/Options/__init__.py
index 0004b8f..e704de0 100644
--- a/src/engine/SCons/Options/__init__.py
+++ b/src/engine/SCons/Options/__init__.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Options/__init__.py 2014/03/02 14:18:15 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/PathList.py b/src/engine/SCons/PathList.py
index 1129d1e..301c72f 100644
--- a/src/engine/SCons/PathList.py
+++ b/src/engine/SCons/PathList.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/PathList.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/PathList.py 2014/03/02 14:18:15 garyo"
__doc__ = """SCons.PathList
diff --git a/src/engine/SCons/PathListTests.py b/src/engine/SCons/PathListTests.py
index 3d83995..8fdc370 100644
--- a/src/engine/SCons/PathListTests.py
+++ b/src/engine/SCons/PathListTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/PathListTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/PathListTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Platform/PlatformTests.py b/src/engine/SCons/Platform/PlatformTests.py
index fb1e13d..093b804 100644
--- a/src/engine/SCons/Platform/PlatformTests.py
+++ b/src/engine/SCons/Platform/PlatformTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/PlatformTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/PlatformTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Platform/__init__.py b/src/engine/SCons/Platform/__init__.py
index 5a1d437..25ea93e 100644
--- a/src/engine/SCons/Platform/__init__.py
+++ b/src/engine/SCons/Platform/__init__.py
@@ -20,7 +20,7 @@ their own platform definition.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -42,7 +42,7 @@ their own platform definition.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/__init__.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Platform/__init__.xml b/src/engine/SCons/Platform/__init__.xml
index be4a97d..f80cefb 100644
--- a/src/engine/SCons/Platform/__init__.xml
+++ b/src/engine/SCons/Platform/__init__.xml
@@ -1,183 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<cvar name="ESCAPE">
<summary>
+<para>
A function that will be called to escape shell special characters in
command lines. The function should take one argument: the command line
string to escape; and should return the escaped command line.
+</para>
</summary>
</cvar>
<cvar name="LIBPREFIX">
<summary>
+<para>
The prefix used for (static) library file names.
A default value is set for each platform
(posix, win32, os2, etc.),
but the value is overridden by individual tools
(ar, mslib, sgiar, sunar, tlib, etc.)
to reflect the names of the libraries they create.
+</para>
</summary>
</cvar>
<cvar name="LIBPREFIXES">
<summary>
+<para>
A list of all legal prefixes for library file names.
When searching for library dependencies,
SCons will look for files with these prefixes,
the base library name,
and suffixes in the &cv-LIBSUFFIXES; list.
+</para>
</summary>
</cvar>
<cvar name="LIBSUFFIX">
<summary>
+<para>
The suffix used for (static) library file names.
A default value is set for each platform
(posix, win32, os2, etc.),
but the value is overridden by individual tools
(ar, mslib, sgiar, sunar, tlib, etc.)
to reflect the names of the libraries they create.
+</para>
</summary>
</cvar>
<cvar name="LIBSUFFIXES">
<summary>
+<para>
A list of all legal suffixes for library file names.
When searching for library dependencies,
SCons will look for files with prefixes, in the &cv-LIBPREFIXES; list,
the base library name,
and these suffixes.
+</para>
</summary>
</cvar>
<cvar name="OBJPREFIX">
<summary>
+<para>
The prefix used for (static) object file names.
+</para>
</summary>
</cvar>
<cvar name="OBJSUFFIX">
<summary>
+<para>
The suffix used for (static) object file names.
+</para>
</summary>
</cvar>
<cvar name="PLATFORM">
<summary>
+<para>
The name of the platform used to create the Environment. If no platform is
specified when the Environment is created,
&scons;
autodetects the platform.
+</para>
-<example>
+<example_commands>
env = Environment(tools = [])
if env['PLATFORM'] == 'cygwin':
Tool('mingw')(env)
else:
Tool('msvc')(env)
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="HOST_OS">
<summary>
+<para>
The name of the host operating system used to create the Environment.
If a platform is specified when creating the Environment, then
that Platform's logic will handle setting this value.
This value is immutable, and should not be changed by the user after
the Environment is initialized.
Currently only set for Win32.
+</para>
</summary>
</cvar>
<cvar name="HOST_ARCH">
<summary>
+<para>
The name of the host hardware architecture used to create the Environment.
If a platform is specified when creating the Environment, then
that Platform's logic will handle setting this value.
This value is immutable, and should not be changed by the user after
the Environment is initialized.
Currently only set for Win32.
+</para>
</summary>
</cvar>
<cvar name="TARGET_OS">
<summary>
+<para>
The name of the target operating system for the compiled objects
created by this Environment.
This defaults to the value of HOST_OS, and the user can override it.
Currently only set for Win32.
+</para>
</summary>
</cvar>
<cvar name="TARGET_ARCH">
<summary>
+<para>
The name of the target hardware architecture for the compiled objects
created by this Environment.
This defaults to the value of HOST_ARCH, and the user can override it.
Currently only set for Win32.
+</para>
</summary>
</cvar>
<cvar name="PROGPREFIX">
<summary>
+<para>
The prefix used for executable file names.
+</para>
</summary>
</cvar>
<cvar name="PROGSUFFIX">
<summary>
+<para>
The suffix used for executable file names.
+</para>
</summary>
</cvar>
<cvar name="SHELL">
<summary>
+<para>
A string naming the shell program that will be passed to the
&cv-SPAWN;
function.
See the
&cv-SPAWN;
construction variable for more information.
+</para>
</summary>
</cvar>
<cvar name="SHLIBPREFIX">
<summary>
+<para>
The prefix used for shared library file names.
+</para>
</summary>
</cvar>
<cvar name="SHLIBSUFFIX">
<summary>
+<para>
The suffix used for shared library file names.
+</para>
</summary>
</cvar>
<cvar name="SHOBJPREFIX">
<summary>
+<para>
The prefix used for shared object file names.
+</para>
</summary>
</cvar>
<cvar name="SHOBJSUFFIX">
<summary>
+<para>
The suffix used for shared object file names.
+</para>
</summary>
</cvar>
<cvar name="TEMPFILEPREFIX">
<summary>
+<para>
The prefix for a temporary file used
to execute lines longer than $MAXLINELENGTH.
The default is '@'.
This may be set for toolchains that use other values,
such as '-@' for the diab compiler
or '-via' for ARM toolchain.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Platform/aix.py b/src/engine/SCons/Platform/aix.py
index 70dce56..98d4d8f 100644
--- a/src/engine/SCons/Platform/aix.py
+++ b/src/engine/SCons/Platform/aix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/aix.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/aix.py 2014/03/02 14:18:15 garyo"
import os
diff --git a/src/engine/SCons/Platform/cygwin.py b/src/engine/SCons/Platform/cygwin.py
index 92efdf6..7429407 100644
--- a/src/engine/SCons/Platform/cygwin.py
+++ b/src/engine/SCons/Platform/cygwin.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/cygwin.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/cygwin.py 2014/03/02 14:18:15 garyo"
import posix
from SCons.Platform import TempFileMunge
diff --git a/src/engine/SCons/Platform/darwin.py b/src/engine/SCons/Platform/darwin.py
index f1ba6be..3307839 100644
--- a/src/engine/SCons/Platform/darwin.py
+++ b/src/engine/SCons/Platform/darwin.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/darwin.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/darwin.py 2014/03/02 14:18:15 garyo"
import posix
import os
diff --git a/src/engine/SCons/Platform/hpux.py b/src/engine/SCons/Platform/hpux.py
index 232baf4..5c003ca 100644
--- a/src/engine/SCons/Platform/hpux.py
+++ b/src/engine/SCons/Platform/hpux.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/hpux.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/hpux.py 2014/03/02 14:18:15 garyo"
import posix
diff --git a/src/engine/SCons/Platform/irix.py b/src/engine/SCons/Platform/irix.py
index f4bc6f8..abb2a58 100644
--- a/src/engine/SCons/Platform/irix.py
+++ b/src/engine/SCons/Platform/irix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/irix.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/irix.py 2014/03/02 14:18:15 garyo"
import posix
diff --git a/src/engine/SCons/Platform/os2.py b/src/engine/SCons/Platform/os2.py
index 1409711..83cd7ef 100644
--- a/src/engine/SCons/Platform/os2.py
+++ b/src/engine/SCons/Platform/os2.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/os2.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/os2.py 2014/03/02 14:18:15 garyo"
import win32
def generate(env):
diff --git a/src/engine/SCons/Platform/posix.py b/src/engine/SCons/Platform/posix.py
index 38b2a8d..5deb2d0 100644
--- a/src/engine/SCons/Platform/posix.py
+++ b/src/engine/SCons/Platform/posix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/posix.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/posix.py 2014/03/02 14:18:15 garyo"
import errno
import os
@@ -58,175 +58,32 @@ def escape(arg):
return '"' + arg + '"'
-def exec_system(l, env):
- stat = os.system(' '.join(l))
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
+def exec_subprocess(l, env):
+ proc = subprocess.Popen(l, env = env, close_fds = True)
+ return proc.wait()
-def exec_spawnvpe(l, env):
- stat = os.spawnvpe(os.P_WAIT, l[0], l, env)
- # os.spawnvpe() returns the actual exit code, not the encoding
- # returned by os.waitpid() or os.system().
- return stat
-
-def exec_fork(l, env):
- pid = os.fork()
- if not pid:
- # Child process.
- exitval = 127
- try:
- os.execvpe(l[0], l, env)
- except OSError, e:
- exitval = exitvalmap.get(e[0], e[0])
- sys.stderr.write("scons: %s: %s\n" % (l[0], e[1]))
- os._exit(exitval)
- else:
- # Parent process.
- pid, stat = os.waitpid(pid, 0)
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
-
-def _get_env_command(sh, escape, cmd, args, env):
- s = ' '.join(args)
- if env:
- l = ['env', '-'] + \
- [escape(t[0])+'='+escape(t[1]) for t in env.items()] + \
- [sh, '-c', escape(s)]
- s = ' '.join(l)
- return s
-
-def env_spawn(sh, escape, cmd, args, env):
- return exec_system([_get_env_command( sh, escape, cmd, args, env)], env)
-
-def spawnvpe_spawn(sh, escape, cmd, args, env):
- return exec_spawnvpe([sh, '-c', ' '.join(args)], env)
-
-def fork_spawn(sh, escape, cmd, args, env):
- return exec_fork([sh, '-c', ' '.join(args)], env)
-
-def process_cmd_output(cmd_stdout, cmd_stderr, stdout, stderr):
- stdout_eof = stderr_eof = 0
- while not (stdout_eof and stderr_eof):
- try:
- (i,o,e) = select.select([cmd_stdout, cmd_stderr], [], [])
- if cmd_stdout in i:
- str = cmd_stdout.read()
- if len(str) == 0:
- stdout_eof = 1
- elif stdout is not None:
- stdout.write(str)
- if cmd_stderr in i:
- str = cmd_stderr.read()
- if len(str) == 0:
- #sys.__stderr__.write( "stderr_eof=1\n" )
- stderr_eof = 1
- else:
- #sys.__stderr__.write( "str(stderr) = %s\n" % str )
- stderr.write(str)
- except select.error, (_errno, _strerror):
- if _errno != errno.EINTR:
- raise
+def subprocess_spawn(sh, escape, cmd, args, env):
+ return exec_subprocess([sh, '-c', ' '.join(args)], env)
def exec_popen3(l, env, stdout, stderr):
- proc = subprocess.Popen(' '.join(l),
- stdout=stdout,
- stderr=stderr,
- shell=True)
- stat = proc.wait()
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
-
-def exec_piped_fork(l, env, stdout, stderr):
- # spawn using fork / exec and providing a pipe for the command's
- # stdout / stderr stream
- if stdout != stderr:
- (rFdOut, wFdOut) = os.pipe()
- (rFdErr, wFdErr) = os.pipe()
- else:
- (rFdOut, wFdOut) = os.pipe()
- rFdErr = rFdOut
- wFdErr = wFdOut
- # do the fork
- pid = os.fork()
- if not pid:
- # Child process
- os.close( rFdOut )
- if rFdOut != rFdErr:
- os.close( rFdErr )
- os.dup2( wFdOut, 1 ) # is there some symbolic way to do that ?
- os.dup2( wFdErr, 2 )
- os.close( wFdOut )
- if stdout != stderr:
- os.close( wFdErr )
- exitval = 127
- try:
- os.execvpe(l[0], l, env)
- except OSError, e:
- exitval = exitvalmap.get(e[0], e[0])
- stderr.write("scons: %s: %s\n" % (l[0], e[1]))
- os._exit(exitval)
- else:
- # Parent process
- pid, stat = os.waitpid(pid, 0)
- os.close( wFdOut )
- if stdout != stderr:
- os.close( wFdErr )
- childOut = os.fdopen( rFdOut )
- if stdout != stderr:
- childErr = os.fdopen( rFdErr )
- else:
- childErr = childOut
- process_cmd_output(childOut, childErr, stdout, stderr)
- os.close( rFdOut )
- if stdout != stderr:
- os.close( rFdErr )
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
+ proc = subprocess.Popen(l, env = env, close_fds = True,
+ stdout = stdout,
+ stderr = stderr)
+ return proc.wait()
def piped_env_spawn(sh, escape, cmd, args, env, stdout, stderr):
# spawn using Popen3 combined with the env command
# the command name and the command's stdout is written to stdout
# the command's stderr is written to stderr
- return exec_popen3([_get_env_command(sh, escape, cmd, args, env)],
+ return exec_popen3([sh, '-c', ' '.join(args)],
env, stdout, stderr)
-def piped_fork_spawn(sh, escape, cmd, args, env, stdout, stderr):
- # spawn using fork / exec and providing a pipe for the command's
- # stdout / stderr stream
- return exec_piped_fork([sh, '-c', ' '.join(args)],
- env, stdout, stderr)
-
-
def generate(env):
- # If os.spawnvpe() exists, we use it to spawn commands. Otherwise
- # if the env utility exists, we use os.system() to spawn commands,
- # finally we fall back on os.fork()/os.exec().
- #
- # os.spawnvpe() is prefered because it is the most efficient. But
- # for Python versions without it, os.system() is prefered because it
- # is claimed that it works better with threads (i.e. -j) and is more
- # efficient than forking Python.
- #
- # NB: Other people on the scons-users mailing list have claimed that
- # os.fork()/os.exec() works better than os.system(). There may just
- # not be a default that works best for all users.
-
- if 'spawnvpe' in os.__dict__:
- spawn = spawnvpe_spawn
- elif env.Detect('env'):
- spawn = env_spawn
- else:
- spawn = fork_spawn
-
- if env.Detect('env'):
- pspawn = piped_env_spawn
- else:
- pspawn = piped_fork_spawn
+ # Bearing in mind we have python 2.4 as a baseline, we can just do this:
+ spawn = subprocess_spawn
+ pspawn = piped_env_spawn
+ # Note that this means that 'escape' is no longer used
if 'ENV' not in env:
env['ENV'] = {}
diff --git a/src/engine/SCons/Platform/posix.xml b/src/engine/SCons/Platform/posix.xml
index 7c7b16a..be67d87 100644
--- a/src/engine/SCons/Platform/posix.xml
+++ b/src/engine/SCons/Platform/posix.xml
@@ -1,11 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<cvar name="RPATH">
<summary>
+<para>
A list of paths to search for shared libraries when running programs.
Currently only used in the GNU (gnulink),
IRIX (sgilink) and Sun (sunlink) linkers.
@@ -15,11 +35,13 @@ are not transformed by
&scons;
in any way: if you want an absolute
path, you must make it absolute yourself.
+</para>
</summary>
</cvar>
<cvar name="_RPATH">
<summary>
+<para>
An automatically-generated construction variable
containing the rpath flags to be used when linking
a program with shared libraries.
@@ -27,25 +49,32 @@ The value of &cv-_RPATH; is created
by appending &cv-RPATHPREFIX; and &cv-RPATHSUFFIX;
to the beginning and end
of each directory in &cv-RPATH;.
+</para>
</summary>
</cvar>
<cvar name="RPATHPREFIX">
<summary>
+<para>
The prefix used to specify a directory to be searched for
shared libraries when running programs.
This will be appended to the beginning of each directory
in the &cv-RPATH; construction variable
when the &cv-_RPATH; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="RPATHSUFFIX">
<summary>
+<para>
The suffix used to specify a directory to be searched for
shared libraries when running programs.
This will be appended to the end of each directory
in the &cv-RPATH; construction variable
when the &cv-_RPATH; variable is automatically generated.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Platform/sunos.py b/src/engine/SCons/Platform/sunos.py
index 23e876c..911b97f 100644
--- a/src/engine/SCons/Platform/sunos.py
+++ b/src/engine/SCons/Platform/sunos.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/sunos.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/sunos.py 2014/03/02 14:18:15 garyo"
import posix
diff --git a/src/engine/SCons/Platform/sunos.xml b/src/engine/SCons/Platform/sunos.xml
index 2d3b3b4..a2a8f38 100644
--- a/src/engine/SCons/Platform/sunos.xml
+++ b/src/engine/SCons/Platform/sunos.xml
@@ -1,12 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+
<cvar name="PKGCHK">
<summary>
+<para>
On Solaris systems,
the package-checking program that will
be used (along with &cv-PKGINFO;)
@@ -14,11 +34,13 @@ to look for installed versions of
the Sun PRO C++ compiler.
The default is
<filename>/usr/sbin/pgkchk</filename>.
+</para>
</summary>
</cvar>
<cvar name="PKGINFO">
<summary>
+<para>
On Solaris systems,
the package information program that will
be used (along with &cv-PKGCHK;)
@@ -26,5 +48,8 @@ to look for installed versions of
the Sun PRO C++ compiler.
The default is
<filename>pkginfo</filename>.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py
index 3def1f8..b7b65e1 100644
--- a/src/engine/SCons/Platform/win32.py
+++ b/src/engine/SCons/Platform/win32.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/win32.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Platform/win32.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Platform/win32.xml b/src/engine/SCons/Platform/win32.xml
index 92ae1a3..cf1c746 100644
--- a/src/engine/SCons/Platform/win32.xml
+++ b/src/engine/SCons/Platform/win32.xml
@@ -1,14 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<cvar name="MAXLINELENGTH">
<summary>
+<para>
The maximum number of characters allowed on an external command line.
On Win32 systems,
link lines longer than this many characters
are linked via a temporary file name.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/SConf.py b/src/engine/SCons/SConf.py
index ae51776..63f04c3 100644
--- a/src/engine/SCons/SConf.py
+++ b/src/engine/SCons/SConf.py
@@ -4,7 +4,7 @@ Autoconf-like configuration support.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ Autoconf-like configuration support.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConf.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/SConf.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -483,6 +483,9 @@ class SConfBase(object):
# so we really control how it gets written.
for n in nodes:
n.store_info = n.do_not_store_info
+ if not hasattr(n, 'attributes'):
+ n.attributes = SCons.Node.Node.Attrs()
+ n.attributes.keep_targetinfo = 1
ret = 1
@@ -776,19 +779,16 @@ class CheckContext(object):
self.did_show_result = 0
def Result(self, res):
- """Inform about the result of the test. res may be an integer or a
- string. In case of an integer, the written text will be 'yes' or 'no'.
+ """Inform about the result of the test. If res is not a string, displays
+ 'yes' or 'no' depending on whether res is evaluated as true or false.
The result is only displayed when self.did_show_result is not set.
"""
- if isinstance(res, (int, bool)):
- if res:
- text = "yes"
- else:
- text = "no"
- elif isinstance(res, str):
+ if isinstance(res, str):
text = res
+ elif res:
+ text = "yes"
else:
- raise TypeError("Expected string, int or bool, got " + str(type(res)))
+ text = "no"
if self.did_show_result == 0:
# Didn't show result yet, do it now.
diff --git a/src/engine/SCons/SConfTests.py b/src/engine/SCons/SConfTests.py
index a504162..d9e314a 100644
--- a/src/engine/SCons/SConfTests.py
+++ b/src/engine/SCons/SConfTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConfTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/SConfTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -182,7 +182,7 @@ class SConfTestCase(unittest.TestCase):
self.waiting_parents = set()
self.side_effects = []
self.builder = None
- self.prerequisites = []
+ self.prerequisites = None
def disambiguate(self):
return self
def has_builder(self):
diff --git a/src/engine/SCons/SConsign.py b/src/engine/SCons/SConsign.py
index a11f4e4..a0061e8 100644
--- a/src/engine/SCons/SConsign.py
+++ b/src/engine/SCons/SConsign.py
@@ -5,7 +5,7 @@ Writing and reading information to the .sconsign file or files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Writing and reading information to the .sconsign file or files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConsign.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/SConsign.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/SConsignTests.py b/src/engine/SCons/SConsignTests.py
index a59740f..e02bb40 100644
--- a/src/engine/SCons/SConsignTests.py
+++ b/src/engine/SCons/SConsignTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConsignTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/SConsignTests.py 2014/03/02 14:18:15 garyo"
import os
import sys
diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py
index 0b664a0..fedfe23 100644
--- a/src/engine/SCons/Scanner/C.py
+++ b/src/engine/SCons/Scanner/C.py
@@ -5,7 +5,7 @@ This module implements the depenency scanner for C/C++ code.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This module implements the depenency scanner for C/C++ code.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/C.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/C.py 2014/03/02 14:18:15 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/CTests.py b/src/engine/SCons/Scanner/CTests.py
index 4f9d8a4..3cf0d9c 100644
--- a/src/engine/SCons/Scanner/CTests.py
+++ b/src/engine/SCons/Scanner/CTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/CTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/CTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Scanner/D.py b/src/engine/SCons/Scanner/D.py
index 18b530f..76762b8 100644
--- a/src/engine/SCons/Scanner/D.py
+++ b/src/engine/SCons/Scanner/D.py
@@ -8,7 +8,7 @@ Coded by Andy Friesen
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ Coded by Andy Friesen
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/D.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/D.py 2014/03/02 14:18:15 garyo"
import re
diff --git a/src/engine/SCons/Scanner/Dir.py b/src/engine/SCons/Scanner/Dir.py
index f508a6f..3c3f227 100644
--- a/src/engine/SCons/Scanner/Dir.py
+++ b/src/engine/SCons/Scanner/Dir.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Scanner/Dir.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/Dir.py 2014/03/02 14:18:15 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/DirTests.py b/src/engine/SCons/Scanner/DirTests.py
index 9e0e240..0f312cb 100644
--- a/src/engine/SCons/Scanner/DirTests.py
+++ b/src/engine/SCons/Scanner/DirTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/DirTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/DirTests.py 2014/03/02 14:18:15 garyo"
import os.path
import sys
diff --git a/src/engine/SCons/Scanner/Fortran.py b/src/engine/SCons/Scanner/Fortran.py
index 390e951..858c89a 100644
--- a/src/engine/SCons/Scanner/Fortran.py
+++ b/src/engine/SCons/Scanner/Fortran.py
@@ -5,7 +5,7 @@ This module implements the dependency scanner for Fortran code.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ This module implements the dependency scanner for Fortran code.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Scanner/Fortran.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/Fortran.py 2014/03/02 14:18:15 garyo"
import re
diff --git a/src/engine/SCons/Scanner/FortranTests.py b/src/engine/SCons/Scanner/FortranTests.py
index 36263cc..24ccb85 100644
--- a/src/engine/SCons/Scanner/FortranTests.py
+++ b/src/engine/SCons/Scanner/FortranTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/FortranTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/FortranTests.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Scanner/IDL.py b/src/engine/SCons/Scanner/IDL.py
index 13a0226..d271056 100644
--- a/src/engine/SCons/Scanner/IDL.py
+++ b/src/engine/SCons/Scanner/IDL.py
@@ -6,7 +6,7 @@ Definition Language) files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Definition Language) files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/IDL.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/IDL.py 2014/03/02 14:18:15 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/IDLTests.py b/src/engine/SCons/Scanner/IDLTests.py
index a9189f7..34a587d 100644
--- a/src/engine/SCons/Scanner/IDLTests.py
+++ b/src/engine/SCons/Scanner/IDLTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/IDLTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/IDLTests.py 2014/03/02 14:18:15 garyo"
import TestCmd
import SCons.Scanner.IDL
diff --git a/src/engine/SCons/Scanner/LaTeX.py b/src/engine/SCons/Scanner/LaTeX.py
index c61688b..21c9ba1 100644
--- a/src/engine/SCons/Scanner/LaTeX.py
+++ b/src/engine/SCons/Scanner/LaTeX.py
@@ -5,7 +5,7 @@ This module implements the dependency scanner for LaTeX code.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This module implements the dependency scanner for LaTeX code.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/LaTeX.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/LaTeX.py 2014/03/02 14:18:15 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Scanner/LaTeXTests.py b/src/engine/SCons/Scanner/LaTeXTests.py
index 6a104ea..6b2fc21 100644
--- a/src/engine/SCons/Scanner/LaTeXTests.py
+++ b/src/engine/SCons/Scanner/LaTeXTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/LaTeXTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/LaTeXTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Scanner/Prog.py b/src/engine/SCons/Scanner/Prog.py
index d7e19d3..65c9503 100644
--- a/src/engine/SCons/Scanner/Prog.py
+++ b/src/engine/SCons/Scanner/Prog.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/Prog.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/Prog.py 2014/03/02 14:18:15 garyo"
import SCons.Node
import SCons.Node.FS
diff --git a/src/engine/SCons/Scanner/ProgTests.py b/src/engine/SCons/Scanner/ProgTests.py
index 13529e6..b9fde1d 100644
--- a/src/engine/SCons/Scanner/ProgTests.py
+++ b/src/engine/SCons/Scanner/ProgTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/ProgTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/ProgTests.py 2014/03/02 14:18:15 garyo"
import os.path
import sys
diff --git a/src/engine/SCons/Scanner/RC.py b/src/engine/SCons/Scanner/RC.py
index 3fa3e67..4b473eb 100644
--- a/src/engine/SCons/Scanner/RC.py
+++ b/src/engine/SCons/Scanner/RC.py
@@ -6,7 +6,7 @@ Definition Language) files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Definition Language) files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/RC.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/RC.py 2014/03/02 14:18:15 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/RCTests.py b/src/engine/SCons/Scanner/RCTests.py
index e812738..ed8991c 100644
--- a/src/engine/SCons/Scanner/RCTests.py
+++ b/src/engine/SCons/Scanner/RCTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/RCTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/RCTests.py 2014/03/02 14:18:15 garyo"
import TestCmd
import SCons.Scanner.RC
diff --git a/src/engine/SCons/Scanner/ScannerTests.py b/src/engine/SCons/Scanner/ScannerTests.py
index b52c2a5..523de77 100644
--- a/src/engine/SCons/Scanner/ScannerTests.py
+++ b/src/engine/SCons/Scanner/ScannerTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Scanner/ScannerTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/ScannerTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Scanner/__init__.py b/src/engine/SCons/Scanner/__init__.py
index b7b3197..bfd25fd 100644
--- a/src/engine/SCons/Scanner/__init__.py
+++ b/src/engine/SCons/Scanner/__init__.py
@@ -5,7 +5,7 @@ The Scanner package for the SCons software construction utility.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ The Scanner package for the SCons software construction utility.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Scanner/__init__.py 2014/03/02 14:18:15 garyo"
import re
diff --git a/src/engine/SCons/Scanner/__init__.xml b/src/engine/SCons/Scanner/__init__.xml
index 9b0e46a..410f388 100644
--- a/src/engine/SCons/Scanner/__init__.xml
+++ b/src/engine/SCons/Scanner/__init__.xml
@@ -1,15 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+
<scons_function name="FindPathDirs">
<arguments signature="global">
(variable)
</arguments>
<summary>
+<para>
Returns a function
(actually a callable Python object)
intended to be used as the
@@ -24,7 +44,9 @@ directory paths that should be searched
&cv-link-CPPPATH;,
&cv-link-LIBPATH;,
etc.).
+</para>
+<para>
Note that use of
&f-FindPathDirs;
is generally preferable to
@@ -48,10 +70,13 @@ that evaluate to the same list of directories as,
in fact, the same list,
and avoid re-scanning the directories for files,
when possible.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
def my_scan(node, env, path, arg):
# Code to scan file contents goes here...
return include_files
@@ -59,6 +84,8 @@ def my_scan(node, env, path, arg):
scanner = Scanner(name = 'myscanner',
function = my_scan,
path_function = FindPathDirs('MYPATH'))
-</example>
+</example_commands>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Script/Interactive.py b/src/engine/SCons/Script/Interactive.py
index b9a2e1e..1bc4fc8 100644
--- a/src/engine/SCons/Script/Interactive.py
+++ b/src/engine/SCons/Script/Interactive.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Script/Interactive.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Script/Interactive.py 2014/03/02 14:18:15 garyo"
__doc__ = """
SCons interactive mode
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index 3f1b407..164c61d 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -13,7 +13,7 @@ it goes here.
unsupported_python_version = (2, 3, 0)
deprecated_python_version = (2, 7, 0)
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ deprecated_python_version = (2, 7, 0)
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Script/Main.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Script/Main.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -79,7 +79,12 @@ def fetch_win32_parallel_msg():
import SCons.Platform.win32
return SCons.Platform.win32.parallel_msg
-#
+def revert_io():
+ # This call is added to revert stderr and stdout to the original
+ # ones just in case some build rule or something else in the system
+ # has redirected them elsewhere.
+ sys.stderr = sys.__stderr__
+ sys.stdout = sys.__stdout__
class SConsPrintHelpException(Exception):
pass
@@ -272,6 +277,9 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
(EnvironmentError, SCons.Errors.StopError,
SCons.Errors.UserError))):
type, value, trace = buildError.exc_info
+ if tb and print_stacktrace:
+ sys.stderr.write("scons: internal stack trace:\n")
+ traceback.print_tb(tb, file=sys.stderr)
traceback.print_exception(type, value, trace)
elif tb and print_stacktrace:
sys.stderr.write("scons: internal stack trace:\n")
@@ -622,7 +630,7 @@ def _set_debug_values(options):
debug_values = options.debug
if "count" in debug_values:
- # All of the object counts are within "if __debug__:" blocks,
+ # All of the object counts are within "if track_instances:" blocks,
# which get stripped when running optimized (with python -O or
# from compiled *.pyo files). Provide a warning if __debug__ is
# stripped, so it doesn't just look like --debug=count is broken.
@@ -630,6 +638,7 @@ def _set_debug_values(options):
if __debug__: enable_count = True
if enable_count:
count_stats.enable(sys.stdout)
+ SCons.Debug.track_instances = True
else:
msg = "--debug=count is not supported when running SCons\n" + \
"\twith the python -O option or optimized (.pyo) modules."
@@ -644,6 +653,8 @@ def _set_debug_values(options):
if "memory" in debug_values:
memory_stats.enable(sys.stdout)
print_objects = ("objects" in debug_values)
+ if print_objects:
+ SCons.Debug.track_instances = True
if "presub" in debug_values:
SCons.Action.print_actions_presub = 1
if "stacktrace" in debug_values:
@@ -983,9 +994,9 @@ def _main(parser):
# reading SConscript files and haven't started building
# things yet, stop regardless of whether they used -i or -k
# or anything else.
+ revert_io()
sys.stderr.write("scons: *** %s Stop.\n" % e)
- exit_status = 2
- sys.exit(exit_status)
+ sys.exit(2)
global sconscript_time
sconscript_time = time.time() - start_time
@@ -1063,6 +1074,7 @@ def _main(parser):
platform = SCons.Platform.platform_module()
if options.interactive:
+ SCons.Node.interactive = True
SCons.Script.Interactive.interact(fs, OptionsParser, options,
targets, target_top)
@@ -1071,6 +1083,8 @@ def _main(parser):
# Build the targets
nodes = _build_targets(fs, options, targets, target_top)
if not nodes:
+ revert_io()
+ print 'Found nothing to build'
exit_status = 2
def _build_targets(fs, options, targets, target_top):
@@ -1083,12 +1097,14 @@ def _build_targets(fs, options, targets, target_top):
SCons.Action.print_actions = not options.silent
SCons.Action.execute_actions = not options.no_exec
SCons.Node.FS.do_store_info = not options.no_exec
+ SCons.Node.do_store_info = not options.no_exec
SCons.SConf.dryrun = options.no_exec
if options.diskcheck:
SCons.Node.FS.set_diskcheck(options.diskcheck)
SCons.CacheDir.cache_enabled = not options.cache_disable
+ SCons.CacheDir.cache_readonly = options.cache_readonly
SCons.CacheDir.cache_debug = options.cache_debug
SCons.CacheDir.cache_force = options.cache_force
SCons.CacheDir.cache_show = options.cache_show
@@ -1298,12 +1314,8 @@ def _exec_main(parser, values):
prof = Profile()
try:
prof.runcall(_main, parser)
- except SConsPrintHelpException, e:
+ finally:
prof.dump_stats(options.profile_file)
- raise e
- except SystemExit:
- pass
- prof.dump_stats(options.profile_file)
else:
_main(parser)
@@ -1331,7 +1343,7 @@ def main():
pass
parts.append(version_string("engine", SCons))
parts.append(path_string("engine", SCons))
- parts.append("Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation")
+ parts.append("Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation")
version = ''.join(parts)
import SConsOptions
@@ -1341,7 +1353,10 @@ def main():
OptionsParser = parser
try:
- _exec_main(parser, values)
+ try:
+ _exec_main(parser, values)
+ finally:
+ revert_io()
except SystemExit, s:
if s:
exit_status = s
@@ -1358,6 +1373,7 @@ def main():
parser.print_help()
exit_status = 0
except SCons.Errors.BuildError, e:
+ print e
exit_status = e.exitstatus
except:
# An exception here is likely a builtin Python exception Python
diff --git a/src/engine/SCons/Script/Main.xml b/src/engine/SCons/Script/Main.xml
index 258584a..162dfac 100644
--- a/src/engine/SCons/Script/Main.xml
+++ b/src/engine/SCons/Script/Main.xml
@@ -1,15 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+
<scons_function name="AddOption">
<arguments signature="global">
(arguments)
</arguments>
<summary>
+<para>
This function adds a new command-line option to be recognized.
The specified
<varname>arguments</varname>
@@ -19,7 +39,9 @@ method (with a few additional capabilities noted below);
see the documentation for
<literal>optparse</literal>
for a thorough discussion of its option-processing capabities.
+</para>
+<para>
In addition to the arguments and values supported by the
<function>optparse.add_option</function>()
method,
@@ -44,14 +66,18 @@ may be used to supply the "default"
value that should be used when the
option is specified on the command line
without an explicit argument.
+</para>
+<para>
If no
<literal>default=</literal>
keyword argument is supplied when calling
&f-AddOption;,
the option will have a default value of
<literal>None</literal>.
+</para>
+<para>
Once a new command-line option has been added with
&f-AddOption;,
the option value may be accessed using
@@ -69,7 +95,9 @@ Note, however, that a
value specified on the command line will
<emphasis>always</emphasis>
override a value set by any SConscript file.
+</para>
+<para>
Any specified
<literal>help=</literal>
strings for the new option(s)
@@ -90,10 +118,13 @@ The options will appear in the help text
in the order in which the
&f-AddOption;
calls occur.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
AddOption('--prefix',
dest='prefix',
nargs=1, type='string',
@@ -101,7 +132,7 @@ AddOption('--prefix',
metavar='DIR',
help='installation prefix')
env = Environment(PREFIX = GetOption('prefix'))
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -110,6 +141,7 @@ env = Environment(PREFIX = GetOption('prefix'))
()
</arguments>
<summary>
+<para>
Returns a list of exceptions for the
actions that failed while
attempting to build targets.
@@ -119,17 +151,23 @@ object
with the following attributes
that record various aspects
of the build failure:
+</para>
+<para>
<literal>.node</literal>
The node that was being built
when the build failure occurred.
+</para>
+<para>
<literal>.status</literal>
The numeric exit status
returned by the command or Python function
that failed when trying to build the
specified Node.
+</para>
+<para>
<literal>.errstr</literal>
The SCons error string
describing the build failure.
@@ -137,7 +175,9 @@ describing the build failure.
message like "Error 2"
to indicate that an executed
command exited with a status of 2.)
+</para>
+<para>
<literal>.filename</literal>
The name of the file or
directory that actually caused the failure.
@@ -158,7 +198,9 @@ but the
<literal>.filename</literal>
attribute will be
<filename>sub/dir</filename>.
+</para>
+<para>
<literal>.executor</literal>
The SCons Executor object
for the target Node
@@ -166,21 +208,27 @@ being built.
This can be used to retrieve
the construction environment used
for the failed action.
+</para>
+<para>
<literal>.action</literal>
The actual SCons Action object that failed.
This will be one specific action
out of the possible list of
actions that would have been
executed to build the target.
+</para>
+<para>
<literal>.command</literal>
The actual expanded command that was executed and failed,
after expansion of
&cv-link-TARGET;,
&cv-link-SOURCE;,
and other construction variables.
+</para>
+<para>
Note that the
&f-GetBuildFailures;
function
@@ -200,8 +248,9 @@ standard Python
<function>atexit.register</function>()
function.
Example:
+</para>
-<example>
+<example_commands>
import atexit
def print_build_failures():
@@ -210,7 +259,7 @@ def print_build_failures():
print "%s failed: %s" % (bf.node, bf.errstr)
atexit.register(print_build_failures)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -219,13 +268,16 @@ atexit.register(print_build_failures)
(name)
</arguments>
<summary>
+<para>
This function provides a way to query the value of
SCons options set on scons command line
(or set using the
&f-link-SetOption;
function).
The options supported are:
+</para>
+<para>
<variablelist>
<varlistentry>
<term><literal>cache_debug</literal></term>
@@ -468,10 +520,13 @@ which corresponds to --warn and --warning.
</listitem>
</varlistentry>
</variablelist>
+</para>
+<para>
See the documentation for the
corresponding command line object for information about each specific
option.
+</para>
</summary>
</scons_function>
@@ -486,10 +541,13 @@ option.
(list_of_strings, [interval, file, overwrite])
</arguments>
<summary>
+<para>
Allows SCons to show progress made during the build
by displaying a string or calling a function while
evaluating Nodes (e.g. files).
+</para>
+<para>
If the first specified argument is a Python callable
(a function or an object that has a
<function>__call__</function>()
@@ -509,17 +567,21 @@ as arguments to your function or method.
This will prevent the code from breaking
if SCons ever changes the interface
to call the function with additional arguments in the future.)
+</para>
+<para>
An example of a simple custom progress function
that prints a string containing the Node name
every 10 Nodes:
+</para>
-<example>
+<example_commands>
def my_progress_function(node, *args, **kw):
print 'Evaluating node %s!' % node
Progress(my_progress_function, interval=10)
-</example>
+</example_commands>
+<para>
A more complicated example of a custom progress display object
that prints a string containing a count
every 100 evaluated Nodes.
@@ -528,8 +590,9 @@ Note the use of
(a carriage return)
at the end so that the string
will overwrite itself on a display:
+</para>
-<example>
+<example_commands>
import sys
class ProgressCounter(object):
count = 0
@@ -537,8 +600,9 @@ class ProgressCounter(object):
self.count += 100
sys.stderr.write('Evaluated %s nodes\r' % self.count)
Progress(ProgressCounter(), interval=100)
-</example>
+</example_commands>
+<para>
If the first argument
&f-link-Progress;
is a string,
@@ -554,12 +618,14 @@ argument.
The following will print a series of dots
on the error output,
one dot for every 100 evaluated Nodes:
+</para>
-<example>
+<example_commands>
import sys
Progress('.', interval=100, file=sys.stderr)
-</example>
+</example_commands>
+<para>
If the string contains the verbatim substring
&cv-TARGET;,
it will be replaced with the Node.
@@ -577,12 +643,14 @@ and the
<literal>overwrite=</literal>
keyword argument to make sure the previously-printed
file name is overwritten with blank spaces:
+</para>
-<example>
+<example_commands>
import sys
Progress('$TARGET\r', overwrite=True)
-</example>
+</example_commands>
+<para>
If the first argument to
&f-Progress;
is a list of strings,
@@ -592,10 +660,11 @@ in rotating fashion every
evaluated Nodes.
This can be used to implement a "spinner"
on the user's screen as follows:
+</para>
-<example>
+<example_commands>
Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -604,6 +673,7 @@ Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5)
(target, ...)
</arguments>
<summary>
+<para>
Marks each given
<varname>target</varname>
as precious so it is not deleted before it is rebuilt. Normally
@@ -611,17 +681,40 @@ as precious so it is not deleted before it is rebuilt. Normally
deletes a target before building it.
Multiple targets can be passed in to a single call to
&f-Precious;.
+</para>
</summary>
</scons_function>
+<scons_function name="Pseudo">
+<arguments>
+(target, ...)
+</arguments>
+<summary>
+<para>
+This indicates that each given
+<varname>target</varname>
+should not be created by the build rule, and if the target is created,
+an error will be generated. This is similar to the gnu make .PHONY
+target. However, in the vast majority of cases, an
+&f-Alias;
+is more appropriate.
+
+Multiple targets can be passed in to a single call to
+&f-Pseudo;.
+</para>
+</summary>
+</scons_function>
<scons_function name="SetOption">
<arguments>
(name, value)
</arguments>
<summary>
+<para>
This function provides a way to set a select subset of the scons command
line options from a SConscript file. The options supported are:
+</para>
+<para>
<variablelist>
<varlistentry>
<term><literal>clean</literal></term>
@@ -696,15 +789,22 @@ which corresponds to --stack-size.
</listitem>
</varlistentry>
</variablelist>
+</para>
+<para>
See the documentation for the
corresponding command line object for information about each specific
option.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
SetOption('max_drift', 1)
-</example>
+</example_commands>
</summary>
</scons_function>
+
+</sconsdoc>
diff --git a/src/engine/SCons/Script/MainTests.py b/src/engine/SCons/Script/MainTests.py
index 592b4d9..25977fa 100644
--- a/src/engine/SCons/Script/MainTests.py
+++ b/src/engine/SCons/Script/MainTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/MainTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Script/MainTests.py 2014/03/02 14:18:15 garyo"
import unittest
import SCons.Errors
diff --git a/src/engine/SCons/Script/SConsOptions.py b/src/engine/SCons/Script/SConsOptions.py
index 6a6bae3..09f71b7 100644
--- a/src/engine/SCons/Script/SConsOptions.py
+++ b/src/engine/SCons/Script/SConsOptions.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/SConsOptions.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Script/SConsOptions.py 2014/03/02 14:18:15 garyo"
import optparse
import re
@@ -248,7 +248,7 @@ class SConsOption(optparse.Option):
class SConsOptionGroup(optparse.OptionGroup):
"""
A subclass for SCons-specific option groups.
-
+
The only difference between this and the base class is that we print
the group's help text flush left, underneath their own title but
lined up with the normal "SCons Options".
@@ -337,10 +337,75 @@ class SConsOptionParser(optparse.OptionParser):
option.process(opt, value, values, self)
+ def reparse_local_options(self):
+ """
+ Re-parse the leftover command-line options stored
+ in self.largs, so that any value overridden on the
+ command line is immediately available if the user turns
+ around and does a GetOption() right away.
+
+ We mimic the processing of the single args
+ in the original OptionParser._process_args(), but here we
+ allow exact matches for long-opts only (no partial
+ argument names!).
+
+ Else, this would lead to problems in add_local_option()
+ below. When called from there, we try to reparse the
+ command-line arguments that
+ 1. haven't been processed so far (self.largs), but
+ 2. are possibly not added to the list of options yet.
+
+ So, when we only have a value for "--myargument" yet,
+ a command-line argument of "--myarg=test" would set it.
+ Responsible for this behaviour is the method
+ _match_long_opt(), which allows for partial matches of
+ the option name, as long as the common prefix appears to
+ be unique.
+ This would lead to further confusion, because we might want
+ to add another option "--myarg" later on (see issue #2929).
+
+ """
+ rargs = []
+ largs_restore = []
+ # Loop over all remaining arguments
+ skip = False
+ for l in self.largs:
+ if skip:
+ # Accept all remaining arguments as they are
+ largs_restore.append(l)
+ else:
+ if len(l) > 2 and l[0:2] == "--":
+ # Check long option
+ lopt = (l,)
+ if "=" in l:
+ # Split into option and value
+ lopt = l.split("=", 1)
+
+ if lopt[0] in self._long_opt:
+ # Argument is already known
+ rargs.append('='.join(lopt))
+ else:
+ # Not known yet, so reject for now
+ largs_restore.append('='.join(lopt))
+ else:
+ if l == "--" or l == "-":
+ # Stop normal processing and don't
+ # process the rest of the command-line opts
+ largs_restore.append(l)
+ skip = True
+ else:
+ rargs.append(l)
+
+ # Parse the filtered list
+ self.parse_args(rargs, self.values)
+ # Restore the list of remaining arguments for the
+ # next call of AddOption/add_local_option...
+ self.largs = self.largs + largs_restore
+
def add_local_option(self, *args, **kw):
"""
Adds a local option to the parser.
-
+
This is initiated by a SetOption() call to add a user-defined
command-line option. We add the option to a separate option
group for the local options, creating the group if necessary.
@@ -364,7 +429,7 @@ class SConsOptionParser(optparse.OptionParser):
# available if the user turns around and does a GetOption()
# right away.
setattr(self.values.__defaults__, result.dest, result.default)
- self.parse_args(self.largs, self.values)
+ self.reparse_local_options()
return result
@@ -394,11 +459,11 @@ class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
out liking:
-- add our own regular expression that doesn't break on hyphens
- (so things like --no-print-directory don't get broken);
+ (so things like --no-print-directory don't get broken);
-- wrap the list of options themselves when it's too long
(the wrapper.fill(opts) call below);
-
+
-- set the subsequent_indent when wrapping the help_text.
"""
# The help for each option consists of two parts:
@@ -564,6 +629,11 @@ def Parser(version):
action="store_true",
help="Copy already-built targets into the CacheDir.")
+ op.add_option('--cache-readonly',
+ dest='cache_readonly', default=False,
+ action="store_true",
+ help="Do not update CacheDir with built targets.")
+
op.add_option('--cache-show',
dest='cache_show', default=False,
action="store_true",
@@ -579,8 +649,10 @@ def Parser(version):
if not value in c_options:
raise OptionValueError(opt_invalid('config', value, c_options))
setattr(parser.values, option.dest, value)
+
opt_config_help = "Controls Configure subsystem: %s." \
% ", ".join(config_options)
+
op.add_option('--config',
nargs=1, type="string",
dest="config", default="auto",
@@ -606,23 +678,25 @@ def Parser(version):
"pdb", "prepare", "presub", "stacktrace",
"time"]
- def opt_debug(option, opt, value, parser,
+ def opt_debug(option, opt, value__, parser,
debug_options=debug_options,
deprecated_debug_options=deprecated_debug_options):
- if value in debug_options:
- parser.values.debug.append(value)
- elif value in deprecated_debug_options.keys():
- parser.values.debug.append(value)
- try:
- parser.values.delayed_warnings
- except AttributeError:
- parser.values.delayed_warnings = []
- msg = deprecated_debug_options[value]
- w = "The --debug=%s option is deprecated%s." % (value, msg)
- t = (SCons.Warnings.DeprecatedDebugOptionsWarning, w)
- parser.values.delayed_warnings.append(t)
- else:
- raise OptionValueError(opt_invalid('debug', value, debug_options))
+ for value in value__.split(','):
+ if value in debug_options:
+ parser.values.debug.append(value)
+ elif value in deprecated_debug_options.keys():
+ parser.values.debug.append(value)
+ try:
+ parser.values.delayed_warnings
+ except AttributeError:
+ parser.values.delayed_warnings = []
+ msg = deprecated_debug_options[value]
+ w = "The --debug=%s option is deprecated%s." % (value, msg)
+ t = (SCons.Warnings.DeprecatedDebugOptionsWarning, w)
+ parser.values.delayed_warnings.append(t)
+ else:
+ raise OptionValueError(opt_invalid('debug', value, debug_options))
+
opt_debug_help = "Print various types of debugging information: %s." \
% ", ".join(debug_options)
op.add_option('--debug',
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 59039ea..52aade2 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -6,7 +6,7 @@ files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import division
-__revision__ = "src/engine/SCons/Script/SConscript.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Script/SConscript.py 2014/03/02 14:18:15 garyo"
import SCons
import SCons.Action
diff --git a/src/engine/SCons/Script/SConscript.xml b/src/engine/SCons/Script/SConscript.xml
index e30997c..9fab301 100644
--- a/src/engine/SCons/Script/SConscript.xml
+++ b/src/engine/SCons/Script/SConscript.xml
@@ -1,15 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+
<scons_function name="Default">
<arguments>
(targets)
</arguments>
<summary>
+<para>
This specifies a list of default targets,
which will be built by
&scons;
@@ -18,7 +38,9 @@ Multiple calls to
&f-Default;
are legal,
and add to the list of default targets.
+</para>
+<para>
Multiple targets should be specified as
separate arguments to the
&f-Default;
@@ -27,16 +49,20 @@ method, or as a list.
will also accept the Node returned by any
of a construction environment's
builder methods.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
Default('foo', 'bar', 'baz')
env.Default(['a', 'b', 'c'])
hello = env.Program('hello', 'hello.c')
env.Default(hello)
-</example>
+</example_commands>
+<para>
An argument to
&f-Default;
of
@@ -46,13 +72,16 @@ Later calls to
&f-Default;
will add to the (now empty) default-target list
like normal.
+</para>
+<para>
The current list of targets added using the
&f-Default;
function or method is available in the
<literal>DEFAULT_TARGETS</literal>
list;
see below.
+</para>
</summary>
</scons_function>
@@ -61,17 +90,21 @@ see below.
(major, minor)
</arguments>
<summary>
+<para>
Ensure that the Python version is at least
<varname>major</varname>.<varname>minor</varname>.
This function will
print out an error message and exit SCons with a non-zero exit code if the
actual Python version is not late enough.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
EnsurePythonVersion(2,2)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -80,6 +113,7 @@ EnsurePythonVersion(2,2)
(major, minor, [revision])
</arguments>
<summary>
+<para>
Ensure that the SCons version is at least
<varname>major.minor</varname>,
or
@@ -90,14 +124,17 @@ is specified.
This function will
print out an error message and exit SCons with a non-zero exit code if the
actual SCons version is not late enough.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
EnsureSConsVersion(0,14)
EnsureSConsVersion(0,96,90)
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -106,6 +143,7 @@ EnsureSConsVersion(0,96,90)
([value])
</arguments>
<summary>
+<para>
This tells
&scons;
to exit immediately
@@ -115,6 +153,7 @@ A default exit value of
<literal>0</literal>
(zero)
is used if no value is specified.
+</para>
</summary>
</scons_function>
@@ -123,6 +162,7 @@ is used if no value is specified.
(vars)
</arguments>
<summary>
+<para>
This tells
&scons;
to export a list of variables from the current
@@ -137,10 +177,13 @@ as separate arguments or as a list.
Keyword arguments can be used to provide names and their values.
A dictionary can be used to map variables to a different name when exported.
Both local variables and global variables can be exported.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env = Environment()
# Make env available for all SConscript files to Import().
Export("env")
@@ -157,8 +200,9 @@ Export(debug = env)
# Make env available using the name debug:
Export({"debug":env})
-</example>
+</example_commands>
+<para>
Note that the
&f-SConscript;
function supports an
@@ -168,6 +212,7 @@ set of variables to a single SConscript file.
See the description of the
&f-SConscript;
function, below.
+</para>
</summary>
</scons_function>
@@ -176,6 +221,7 @@ function, below.
()
</arguments>
<summary>
+<para>
Returns the absolute path name of the directory from which
&scons;
was initially invoked.
@@ -188,6 +234,7 @@ options, which internally
change to the directory in which the
&SConstruct;
file is found.
+</para>
</summary>
</scons_function>
@@ -196,6 +243,7 @@ file is found.
(text)
</arguments>
<summary>
+<para>
This specifies help text to be printed if the
<option>-h</option>
argument is given to
@@ -206,6 +254,7 @@ is called multiple times, the text is appended together in the order
that
&f-Help;
is called.
+</para>
</summary>
</scons_function>
@@ -214,6 +263,7 @@ is called.
(vars)
</arguments>
<summary>
+<para>
This tells
&scons;
to import a list of variables into the current SConscript file. This
@@ -230,15 +280,18 @@ Multiple variable names can be passed to
&f-Import;
as separate arguments or as a list. The variable "*" can be used
to import all variables.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
Import("env")
Import("env", "variable")
Import(["env", "variable"])
Import("*")
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -247,6 +300,7 @@ Import("*")
([vars..., stop=])
</arguments>
<summary>
+<para>
By default,
this stops processing the current SConscript
file and returns to the calling SConscript file
@@ -256,7 +310,9 @@ string arguments.
Multiple strings contaning variable names may be passed to
&f-Return;.
Any strings that contain white space
+</para>
+<para>
The optional
<literal>stop=</literal>
keyword argument may be set to a false value
@@ -271,10 +327,13 @@ are still the values of the variables in the named
at the point
&f-Return;
is called.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# Returns without returning a value.
Return()
@@ -286,7 +345,7 @@ Return("foo", "bar")
# Returns the values of Python variables 'val1' and 'val2'.
Return('val1 val2')
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -300,6 +359,7 @@ Return('val1 val2')
<!-- (dirs=subdirs, [name=script, exports, variant_dir, src_dir, duplicate]) -->
</arguments>
<summary>
+<para>
This tells
&scons;
to execute
@@ -311,7 +371,9 @@ will be returned by the call to
There are two ways to call the
&f-SConscript;
function.
+</para>
+<para>
The first way you can call
&f-SConscript;
is to explicitly specify one or more
@@ -323,13 +385,15 @@ multiple scripts must be specified as a list
a function like
&f-Split;).
Examples:
-<example>
+</para>
+<example_commands>
SConscript('SConscript') # run SConscript in the current directory
SConscript('src/SConscript') # run SConscript in the src directory
SConscript(['src/SConscript', 'doc/SConscript'])
config = SConscript('MyConfig.py')
-</example>
+</example_commands>
+<para>
The second way you can call
&f-SConscript;
is to specify a list of (sub)directory names
@@ -349,13 +413,15 @@ by supplying an optional
keyword argument.
The first three examples below have the same effect
as the first three examples above:
-<example>
+</para>
+<example_commands>
SConscript(dirs='.') # run SConscript in the current directory
SConscript(dirs='src') # run SConscript in the src directory
SConscript(dirs=['src', 'doc'])
SConscript(dirs=['sub1', 'sub2'], name='MySConscript')
-</example>
+</example_commands>
+<para>
The optional
<varname>exports</varname>
argument provides a list of variable names or a dictionary of
@@ -373,13 +439,15 @@ must use the
&f-link-Import;
function to import the variables.
Examples:
-<example>
+</para>
+<example_commands>
foo = SConscript('sub/SConscript', exports='env')
SConscript('dir/SConscript', exports=['env', 'variable'])
SConscript(dirs='subdir', exports='env variable')
SConscript(dirs=['one', 'two', 'three'], exports='shared_info')
-</example>
+</example_commands>
+<para>
If the optional
<varname>variant_dir</varname>
argument is present, it causes an effect equivalent to the
@@ -405,7 +473,9 @@ file.
See the description of the
&f-VariantDir;
function below for additional details and restrictions.
+</para>
+<para>
If
<varname>variant_dir</varname>
is present,
@@ -421,32 +491,40 @@ file resides and the
file is evaluated as if it were in the
<varname>variant_dir</varname>
directory:
-<example>
+</para>
+<example_commands>
SConscript('src/SConscript', variant_dir = 'build')
-</example>
+</example_commands>
+<para>
is equivalent to
+</para>
-<example>
+<example_commands>
VariantDir('build', 'src')
SConscript('build/SConscript')
-</example>
+</example_commands>
+<para>
This later paradigm is often used when the sources are
in the same directory as the
&SConstruct;:
+</para>
-<example>
+<example_commands>
SConscript('SConscript', variant_dir = 'build')
-</example>
+</example_commands>
+<para>
is equivalent to
+</para>
-<example>
+<example_commands>
VariantDir('build', '.')
SConscript('build/SConscript')
-</example>
+</example_commands>
+<para>
<!--
If
<varname>variant_dir</varname>
@@ -454,7 +532,8 @@ and"
<varname>src_dir</varname>
are both present,
xxxxx everything is in a state of confusion.
-<example>
+</para>
+<example_commands>
SConscript(dirs = 'src', variant_dir = 'build', src_dir = '.')
runs src/SConscript in build/src, but
SConscript(dirs = 'lib', variant_dir = 'build', src_dir = 'src')
@@ -465,45 +544,53 @@ SConscript(dirs = 'src/lib', variant_dir = 'build', src_dir = 'src')
runs src/lib/SConscript in build/lib. Moreover,
SConscript(dirs = 'build/src/lib', variant_dir = 'build', src_dir = 'src')
can't find build/src/lib/SConscript, even though it ought to exist.
-</example>
+</example_commands>
+<para>
is equivalent to
-<example>
+</para>
+<example_commands>
????????????????
-</example>
+</example_commands>
+<para>
and what about this alternative?
TODO??? SConscript('build/SConscript', src_dir='src')
-->
+</para>
+<para>
Here are some composite examples:
+</para>
-<example>
+<example_commands>
# collect the configuration information and use it to build src and doc
shared_info = SConscript('MyConfig.py')
SConscript('src/SConscript', exports='shared_info')
SConscript('doc/SConscript', exports='shared_info')
-</example>
+</example_commands>
-<example>
+<example_commands>
# build debugging and production versions. SConscript
# can use Dir('.').path to determine variant.
SConscript('SConscript', variant_dir='debug', duplicate=0)
SConscript('SConscript', variant_dir='prod', duplicate=0)
-</example>
+</example_commands>
-<example>
+<example_commands>
# build debugging and production versions. SConscript
# is passed flags to use.
opts = { 'CPPDEFINES' : ['DEBUG'], 'CCFLAGS' : '-pgdb' }
SConscript('SConscript', variant_dir='debug', duplicate=0, exports=opts)
opts = { 'CPPDEFINES' : ['NODEBUG'], 'CCFLAGS' : '-O' }
SConscript('SConscript', variant_dir='prod', duplicate=0, exports=opts)
-</example>
+</example_commands>
-<example>
+<example_commands>
# build common documentation and compile for different architectures
SConscript('doc/SConscript', variant_dir='build/doc', duplicate=0)
SConscript('src/SConscript', variant_dir='build/x86', duplicate=0)
SConscript('src/SConscript', variant_dir='build/ppc', duplicate=0)
-</example>
+</example_commands>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Script/SConscriptTests.py b/src/engine/SCons/Script/SConscriptTests.py
index eaf7b80..6a2dcda 100644
--- a/src/engine/SCons/Script/SConscriptTests.py
+++ b/src/engine/SCons/Script/SConscriptTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/SConscriptTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Script/SConscriptTests.py 2014/03/02 14:18:15 garyo"
import SCons.Script.SConscript
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index 5b3eac8..c27dacd 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -12,7 +12,7 @@ it goes here.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ it goes here.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Script/__init__.py 2014/03/02 14:18:15 garyo"
import time
start_time = time.time()
diff --git a/src/engine/SCons/Sig.py b/src/engine/SCons/Sig.py
index a14a99f..66803dd 100644
--- a/src/engine/SCons/Sig.py
+++ b/src/engine/SCons/Sig.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Sig.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Sig.py 2014/03/02 14:18:15 garyo"
__doc__ = """Place-holder for the old SCons.Sig module hierarchy
diff --git a/src/engine/SCons/Subst.py b/src/engine/SCons/Subst.py
index 94a0df8..0ca6490 100644
--- a/src/engine/SCons/Subst.py
+++ b/src/engine/SCons/Subst.py
@@ -5,7 +5,7 @@ SCons string substitution.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ SCons string substitution.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Subst.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Subst.py 2014/03/02 14:18:15 garyo"
import collections
import re
@@ -78,6 +78,14 @@ class Literal(object):
def is_literal(self):
return 1
+ def __eq__(self, other):
+ if not isinstance(other, Literal):
+ return False
+ return self.lstr == other.lstr
+
+ def __neq__(self, other):
+ return not self.__eq__(other)
+
class SpecialAttrWrapper(object):
"""This is a wrapper for what we call a 'Node special attribute.'
This is any of the attributes of a Node that we can reference from
@@ -172,7 +180,7 @@ class NLWrapper(object):
In practice, this might be a wash performance-wise, but it's a little
cleaner conceptually...
"""
-
+
def __init__(self, list, func):
self.list = list
self.func = func
@@ -190,7 +198,7 @@ class NLWrapper(object):
self._create_nodelist = self._return_nodelist
return self.nodelist
_create_nodelist = _gen_nodelist
-
+
class Targets_or_Sources(collections.UserList):
"""A class that implements $TARGETS or $SOURCES expansions by in turn
@@ -451,7 +459,7 @@ def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={
raise_exception(NameError(key), lvars['TARGETS'], s)
else:
return ''
-
+
# Before re-expanding the result, handle
# recursive expansion by copying the local
# variable dictionary and overwriting a null
diff --git a/src/engine/SCons/Subst.xml b/src/engine/SCons/Subst.xml
index bc2daa3..26abf10 100644
--- a/src/engine/SCons/Subst.xml
+++ b/src/engine/SCons/Subst.xml
@@ -1,15 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+
<scons_function name="AllowSubstExceptions">
<arguments signature="global">
([exception, ...])
</arguments>
<summary>
+<para>
Specifies the exceptions that will be allowed
when expanding construction variables.
By default,
@@ -23,16 +43,21 @@ exception will expand to a
All exceptions not in the specified list
will generate an error message
and terminate processing.
+</para>
+<para>
If
&f-AllowSubstExceptions;
is called multiple times,
each call completely overwrites the previous list
of allowed exceptions.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
# Requires that all construction variable names exist.
# (You may wish to do this if you want to enforce strictly
# that all construction variables must be defined before use.)
@@ -41,6 +66,8 @@ AllowSubstExceptions()
# Also allow a string containing a zero-division expansion
# like '${1 / 0}' to evalute to ''.
AllowSubstExceptions(IndexError, NameError, ZeroDivisionError)
-</example>
+</example_commands>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/SubstTests.py b/src/engine/SCons/SubstTests.py
index 25aa571..a0b7288 100644
--- a/src/engine/SCons/SubstTests.py
+++ b/src/engine/SCons/SubstTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SubstTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/SubstTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -1147,6 +1147,11 @@ class LiteralTestCase(unittest.TestCase):
cmd_list = escape_list(cmd_list[0], escape_func)
assert cmd_list == ['BAZ', '**$BAR**'], cmd_list
+ def test_LiteralEqualsTest(self):
+ """Test that Literals compare for equality properly"""
+ assert Literal('a literal') == Literal('a literal')
+ assert Literal('a literal') != Literal('b literal')
+
class SpecialAttrWrapperTestCase(unittest.TestCase):
def test_SpecialAttrWrapper(self):
"""Test the SpecialAttrWrapper() function."""
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index 461023a..5e4851a 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -47,7 +47,7 @@ interface and the SCons build engine. There are two key classes here:
target(s) that it decides need to be evaluated and/or built.
"""
-__revision__ = "src/engine/SCons/Taskmaster.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Taskmaster.py 2014/03/02 14:18:15 garyo"
from itertools import chain
import operator
@@ -186,6 +186,8 @@ class Task(object):
# or implicit dependencies exists, and also initialize the
# .sconsign info.
executor = self.targets[0].get_executor()
+ if executor is None:
+ return
executor.prepare()
for t in executor.get_action_targets():
if print_prepare:
@@ -289,6 +291,7 @@ class Task(object):
post-visit actions that must take place regardless of whether
or not the target was an actual built target or a source Node.
"""
+ global print_prepare
T = self.tm.trace
if T: T.write(self.trace_message('Task.executed_with_callbacks()',
self.node))
@@ -301,7 +304,12 @@ class Task(object):
if not t.cached:
t.push_to_cache()
t.built()
- t.visited()
+ t.visited()
+ if (not print_prepare and
+ (not hasattr(self, 'options') or not self.options.debug_includes)):
+ t.release_target_info()
+ else:
+ t.visited()
executed = executed_with_callbacks
@@ -382,6 +390,7 @@ class Task(object):
This is the default behavior for building only what's necessary.
"""
+ global print_prepare
T = self.tm.trace
if T: T.write(self.trace_message(u'Task.make_ready_current()',
self.node))
@@ -414,6 +423,9 @@ class Task(object):
# parallel build...)
t.visited()
t.set_state(NODE_UP_TO_DATE)
+ if (not print_prepare and
+ (not hasattr(self, 'options') or not self.options.debug_includes)):
+ t.release_target_info()
make_ready = make_ready_current
@@ -453,14 +465,15 @@ class Task(object):
parents[p] = parents.get(p, 0) + 1
for t in targets:
- for s in t.side_effects:
- if s.get_state() == NODE_EXECUTING:
- s.set_state(NODE_NO_STATE)
- for p in s.waiting_parents:
- parents[p] = parents.get(p, 0) + 1
- for p in s.waiting_s_e:
- if p.ref_count == 0:
- self.tm.candidates.append(p)
+ if t.side_effects is not None:
+ for s in t.side_effects:
+ if s.get_state() == NODE_EXECUTING:
+ s.set_state(NODE_NO_STATE)
+ for p in s.waiting_parents:
+ parents[p] = parents.get(p, 0) + 1
+ for p in s.waiting_s_e:
+ if p.ref_count == 0:
+ self.tm.candidates.append(p)
for p, subtract in parents.items():
p.ref_count = p.ref_count - subtract
@@ -927,7 +940,11 @@ class Taskmaster(object):
if node is None:
return None
- tlist = node.get_executor().get_all_targets()
+ executor = node.get_executor()
+ if executor is None:
+ return None
+
+ tlist = executor.get_all_targets()
task = self.tasker(self, tlist, node in self.original_top, node)
try:
diff --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py
index ac0c40d..ff5f30d 100644
--- a/src/engine/SCons/TaskmasterTests.py
+++ b/src/engine/SCons/TaskmasterTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
#
from __future__ import division
-__revision__ = "src/engine/SCons/TaskmasterTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/TaskmasterTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
@@ -49,7 +49,7 @@ class Node(object):
self.scanned = 0
self.scanner = None
self.targets = [self]
- self.prerequisites = []
+ self.prerequisites = None
class Builder(object):
def targets(self, node):
return node.targets
@@ -141,6 +141,9 @@ class Node(object):
self.clear()
+ def release_target_info(self):
+ pass
+
def has_builder(self):
return not self.builder is None
diff --git a/src/engine/SCons/Tool/386asm.py b/src/engine/SCons/Tool/386asm.py
index 2b26c0f..0d96b3d 100644
--- a/src/engine/SCons/Tool/386asm.py
+++ b/src/engine/SCons/Tool/386asm.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/386asm.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/386asm.py 2014/03/02 14:18:15 garyo"
from SCons.Tool.PharLapCommon import addPharLapPaths
import SCons.Util
diff --git a/src/engine/SCons/Tool/386asm.xml b/src/engine/SCons/Tool/386asm.xml
index ae55517..5eafbe7 100644
--- a/src/engine/SCons/Tool/386asm.xml
+++ b/src/engine/SCons/Tool/386asm.xml
@@ -1,25 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="386asm">
<summary>
+<para>
Sets construction variables for the 386ASM assembler
for the Phar Lap ETS embedded operating system.
+</para>
</summary>
<sets>
-AS
-ASFLAGS
-ASPPFLAGS
-ASCOM
-ASPPCOM
+<item>AS</item>
+<item>ASFLAGS</item>
+<item>ASPPFLAGS</item>
+<item>ASCOM</item>
+<item>ASPPCOM</item>
</sets>
<uses>
-CC
-CPPFLAGS
-_CPPDEFFLAGS
-_CPPINCFLAGS
+<item>CC</item>
+<item>CPPFLAGS</item>
+<item>_CPPDEFFLAGS</item>
+<item>_CPPINCFLAGS</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/BitKeeper.py b/src/engine/SCons/Tool/BitKeeper.py
index 288ef90..f99054c 100644
--- a/src/engine/SCons/Tool/BitKeeper.py
+++ b/src/engine/SCons/Tool/BitKeeper.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/BitKeeper.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/BitKeeper.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/BitKeeper.xml b/src/engine/SCons/Tool/BitKeeper.xml
index c06af4c..aff9a90 100644
--- a/src/engine/SCons/Tool/BitKeeper.xml
+++ b/src/engine/SCons/Tool/BitKeeper.xml
@@ -1,59 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="BitKeeper">
<summary>
+<para>
Sets construction variables for the BitKeeper
source code control system.
+</para>
</summary>
<sets>
-BITKEEPER
-BITKEEPERGET
-BITKEEPERGETFLAGS
-BITKEEPERCOM
+<item>BITKEEPER</item>
+<item>BITKEEPERGET</item>
+<item>BITKEEPERGETFLAGS</item>
+<item>BITKEEPERCOM</item>
</sets>
<uses>
-BITKEEPERCOMSTR
+<item>BITKEEPERCOMSTR</item>
</uses>
</tool>
<cvar name="BITKEEPER">
<summary>
+<para>
The BitKeeper executable.
+</para>
</summary>
</cvar>
<cvar name="BITKEEPERCOM">
<summary>
+<para>
The command line for
fetching source files using BitKeeper.
+</para>
</summary>
</cvar>
<cvar name="BITKEEPERCOMSTR">
<summary>
+<para>
The string displayed when fetching
a source file using BitKeeper.
If this is not set, then &cv-link-BITKEEPERCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="BITKEEPERGET">
<summary>
+<para>
The command (&cv-link-BITKEEPER;) and subcommand
for fetching source files using BitKeeper.
+</para>
</summary>
</cvar>
<cvar name="BITKEEPERGETFLAGS">
<summary>
+<para>
Options that are passed to the BitKeeper
<command>get</command>
subcommand.
+</para>
</summary>
</cvar>
@@ -62,6 +93,7 @@ subcommand.
()
</arguments>
<summary>
+<para>
A factory function that
returns a Builder object
to be used to fetch source files
@@ -70,15 +102,22 @@ The returned Builder
is intended to be passed to the
&f-SourceCode;
function.
+</para>
+<para>
This function is deprecated. For details, see the entry for the
&f-SourceCode;
function.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.SourceCode('.', env.BitKeeper())
-</example>
+</example_commands>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/CVS.py b/src/engine/SCons/Tool/CVS.py
index 3e60643..035ee63 100644
--- a/src/engine/SCons/Tool/CVS.py
+++ b/src/engine/SCons/Tool/CVS.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/CVS.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/CVS.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/CVS.xml b/src/engine/SCons/Tool/CVS.xml
index 8546e6a..b8e16ed 100644
--- a/src/engine/SCons/Tool/CVS.xml
+++ b/src/engine/SCons/Tool/CVS.xml
@@ -1,67 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="CVS">
<summary>
+<para>
Sets construction variables for the CVS source code
management system.
+</para>
</summary>
<sets>
-CVS
-CVSCOM
-CVSFLAGS
-CVSCOFLAGS
+<item>CVS</item>
+<item>CVSCOM</item>
+<item>CVSFLAGS</item>
+<item>CVSCOFLAGS</item>
</sets>
<uses>
-CVSCOMSTR
+<item>CVSCOMSTR</item>
</uses>
</tool>
<cvar name="CVS">
<summary>
+<para>
The CVS executable.
+</para>
</summary>
</cvar>
<cvar name="CVSCOFLAGS">
<summary>
+<para>
Options that are passed to the CVS checkout subcommand.
+</para>
</summary>
</cvar>
<cvar name="CVSCOM">
<summary>
+<para>
The command line used to
fetch source files from a CVS repository.
+</para>
</summary>
</cvar>
<cvar name="CVSCOMSTR">
<summary>
+<para>
The string displayed when fetching
a source file from a CVS repository.
If this is not set, then &cv-link-CVSCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="CVSFLAGS">
<summary>
+<para>
General options that are passed to CVS.
By default, this is set to
<literal>-d $CVSREPOSITORY</literal>
to specify from where the files must be fetched.
+</para>
</summary>
</cvar>
<cvar name="CVSREPOSITORY">
<summary>
+<para>
The path to the CVS repository.
This is referenced in the default
&cv-link-CVSFLAGS; value.
+</para>
</summary>
</cvar>
@@ -70,6 +103,7 @@ This is referenced in the default
(repository, module)
</arguments>
<summary>
+<para>
A factory function that
returns a Builder object
to be used to fetch source files
@@ -80,11 +114,15 @@ The returned Builder
is intended to be passed to the
&f-link-SourceCode;
function.
+</para>
+<para>
This function is deprecated. For details, see the entry for the
&f-SourceCode;
function.
+</para>
+<para>
The optional specified
<varname>module</varname>
will be added to the beginning
@@ -96,10 +134,13 @@ so that you only have to
replicate part of the repository
directory hierarchy in your
local build directory.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# Will fetch foo/bar/src.c
# from /usr/local/CVSROOT/foo/bar/src.c.
env.SourceCode('.', env.CVS('/usr/local/CVSROOT'))
@@ -111,6 +152,8 @@ env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo'))
# Will fetch src.c
# from /usr/local/CVSROOT/foo/bar/src.c.
env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo/bar'))
-</example>
+</example_commands>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/FortranCommon.py b/src/engine/SCons/Tool/FortranCommon.py
index 7b470a2..bd211ef 100644
--- a/src/engine/SCons/Tool/FortranCommon.py
+++ b/src/engine/SCons/Tool/FortranCommon.py
@@ -5,7 +5,7 @@ Stuff for processing Fortran, common to all fortran dialects.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Stuff for processing Fortran, common to all fortran dialects.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/FortranCommon.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/FortranCommon.py 2014/03/02 14:18:15 garyo"
import re
import os.path
diff --git a/src/engine/SCons/Tool/GettextCommon.py b/src/engine/SCons/Tool/GettextCommon.py
index 2b1b925..db8d950 100644
--- a/src/engine/SCons/Tool/GettextCommon.py
+++ b/src/engine/SCons/Tool/GettextCommon.py
@@ -3,7 +3,7 @@
Used by several tools of `gettext` toolset.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Used by several tools of `gettext` toolset.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/GettextCommon.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/GettextCommon.py 2014/03/02 14:18:15 garyo"
import SCons.Warnings
import re
diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py
index ea5e5bd..8e5473d 100644
--- a/src/engine/SCons/Tool/JavaCommon.py
+++ b/src/engine/SCons/Tool/JavaCommon.py
@@ -5,7 +5,7 @@ Stuff for processing Java.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Stuff for processing Java.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/JavaCommon.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/JavaCommon.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/JavaCommonTests.py b/src/engine/SCons/Tool/JavaCommonTests.py
index 41e028e..06a1677 100644
--- a/src/engine/SCons/Tool/JavaCommonTests.py
+++ b/src/engine/SCons/Tool/JavaCommonTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/JavaCommonTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/JavaCommonTests.py 2014/03/02 14:18:15 garyo"
import os.path
import sys
diff --git a/src/engine/SCons/Tool/MSCommon/__init__.py b/src/engine/SCons/Tool/MSCommon/__init__.py
index 3722663..6efdcce 100644
--- a/src/engine/SCons/Tool/MSCommon/__init__.py
+++ b/src/engine/SCons/Tool/MSCommon/__init__.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 2014/03/02 14:18:15 garyo"
__doc__ = """
Common functions for Microsoft Visual Studio and Visual C/C++.
diff --git a/src/engine/SCons/Tool/MSCommon/arch.py b/src/engine/SCons/Tool/MSCommon/arch.py
index e6eb382..3fc4eed 100644
--- a/src/engine/SCons/Tool/MSCommon/arch.py
+++ b/src/engine/SCons/Tool/MSCommon/arch.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py 2014/03/02 14:18:15 garyo"
__doc__ = """Module to define supported Windows chip architectures.
"""
diff --git a/src/engine/SCons/Tool/MSCommon/common.py b/src/engine/SCons/Tool/MSCommon/common.py
index e3fda5a..006e17e 100644
--- a/src/engine/SCons/Tool/MSCommon/common.py
+++ b/src/engine/SCons/Tool/MSCommon/common.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 2014/03/02 14:18:15 garyo"
__doc__ = """
Common helper functions for working with the Microsoft tool chain.
@@ -55,12 +55,12 @@ _is_win64 = None
def is_win64():
"""Return true if running on windows 64 bits.
-
+
Works whether python itself runs in 64 bits or 32 bits."""
# Unfortunately, python does not provide a useful way to determine
# if the underlying Windows OS is 32-bit or 64-bit. Worse, whether
# the Python itself is 32-bit or 64-bit affects what it returns,
- # so nothing in sys.* or os.* help.
+ # so nothing in sys.* or os.* help.
# Apparently the best solution is to use env vars that Windows
# sets. If PROCESSOR_ARCHITECTURE is not x86, then the python
@@ -120,11 +120,21 @@ def normalize_env(env, keys, force=False):
if k in os.environ and (force or not k in normenv):
normenv[k] = os.environ[k].encode('mbcs')
+ # This shouldn't be necessary, since the default environment should include system32,
+ # but keep this here to be safe, since it's needed to find reg.exe which the MSVC
+ # bat scripts use.
+ sys32_dir = os.path.join(os.environ.get("SystemRoot", os.environ.get("windir",r"C:\Windows\system32")),"System32")
+
+ if sys32_dir not in normenv['PATH']:
+ normenv['PATH'] = normenv['PATH'] + os.pathsep + sys32_dir
+
+ debug("PATH: %s"%normenv['PATH'])
+
return normenv
def get_output(vcbat, args = None, env = None):
"""Parse the output of given bat file, with given args."""
-
+
if env is None:
# Create a blank environment, for use in launching the tools
env = SCons.Environment.Environment(tools=[])
@@ -136,6 +146,9 @@ def get_output(vcbat, args = None, env = None):
# settings in vs.py.
vars = [
'COMSPEC',
+# VS100 and VS110: Still set, but modern MSVC setup scripts will
+# discard these if registry has values. However Intel compiler setup
+# script still requires these as of 2013/2014.
'VS110COMNTOOLS',
'VS100COMNTOOLS',
'VS90COMNTOOLS',
@@ -166,6 +179,11 @@ def get_output(vcbat, args = None, env = None):
# and won't work under Pythons not built with threading.
stdout = popen.stdout.read()
stderr = popen.stderr.read()
+
+ # Extra debug logic, uncomment if necessar
+# debug('get_output():stdout:%s'%stdout)
+# debug('get_output():stderr:%s'%stderr)
+
if stderr:
# TODO: find something better to do with stderr;
# this at least prevents errors from getting swallowed.
@@ -196,7 +214,7 @@ def parse_output(output, keep = ("INCLUDE", "LIB", "LIBPATH", "PATH")):
p = p.encode('mbcs')
# XXX: For some reason, VC98 .bat file adds "" around the PATH
# values, and it screws up the environment later, so we strip
- # it.
+ # it.
p = p.strip('"')
dkeep[key].append(p)
diff --git a/src/engine/SCons/Tool/MSCommon/netframework.py b/src/engine/SCons/Tool/MSCommon/netframework.py
index e1c12a6..fef75eb 100644
--- a/src/engine/SCons/Tool/MSCommon/netframework.py
+++ b/src/engine/SCons/Tool/MSCommon/netframework.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 2014/03/02 14:18:15 garyo"
__doc__ = """
"""
diff --git a/src/engine/SCons/Tool/MSCommon/sdk.py b/src/engine/SCons/Tool/MSCommon/sdk.py
index 1536a22..320ef4c 100644
--- a/src/engine/SCons/Tool/MSCommon/sdk.py
+++ b/src/engine/SCons/Tool/MSCommon/sdk.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 2014/03/02 14:18:15 garyo"
__doc__ = """Module to detect the Platform/Windows SDK
diff --git a/src/engine/SCons/Tool/MSCommon/vc.py b/src/engine/SCons/Tool/MSCommon/vc.py
index ec285c8..582bf23 100644
--- a/src/engine/SCons/Tool/MSCommon/vc.py
+++ b/src/engine/SCons/Tool/MSCommon/vc.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@
# * test on 64 bits XP + VS 2005 (and VS 6 if possible)
# * SDK
# * Assembly
-__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py 2014/03/02 14:18:15 garyo"
__doc__ = """Module for Visual C/C++ detection and configuration.
"""
@@ -81,6 +81,7 @@ _ARCH_TO_CANONICAL = {
"itanium" : "ia64",
"x86" : "x86",
"x86_64" : "amd64",
+ "x86_amd64" : "x86_amd64", # Cross compile to 64 bit from 32bits
}
# Given a (host, target) tuple, return the argument for the bat file. Both host
@@ -88,6 +89,7 @@ _ARCH_TO_CANONICAL = {
_HOST_TARGET_ARCH_TO_BAT_ARCH = {
("x86", "x86"): "x86",
("x86", "amd64"): "x86_amd64",
+ ("amd64", "x86_amd64"): "x86_amd64", # This is present in (at least) VS2012 express
("amd64", "amd64"): "amd64",
("amd64", "x86"): "x86",
("x86", "ia64"): "x86_ia64"
@@ -256,15 +258,16 @@ def find_batch_file(env,msvc_version,host_arch,target_arch):
installed_sdks=get_installed_sdks()
for _sdk in installed_sdks:
- sdk_bat_file=_sdk.get_sdk_vc_script(host_arch,target_arch)
- sdk_bat_file_path=os.path.join(pdir,sdk_bat_file)
- debug('vc.py:find_batch_file() sdk_bat_file_path:%s'%sdk_bat_file_path)
- if os.path.exists(sdk_bat_file_path):
- return (batfilename,sdk_bat_file_path)
+ sdk_bat_file = _sdk.get_sdk_vc_script(host_arch,target_arch)
+ if not sdk_bat_file:
+ debug("vc.py:find_batch_file() not found:%s"%_sdk)
else:
- debug("vc.py:find_batch_file() not found:%s"%sdk_bat_file_path)
- else:
- return (batfilename,None)
+ sdk_bat_file_path = os.path.join(pdir,sdk_bat_file)
+ if os.path.exists(sdk_bat_file_path):
+ debug('vc.py:find_batch_file() sdk_bat_file_path:%s'%sdk_bat_file_path)
+ return (batfilename,sdk_bat_file_path)
+ return (batfilename,None)
+
__INSTALLED_VCS_RUN = None
@@ -357,13 +360,23 @@ def msvc_find_valid_batch_script(env,version):
# target platform
(host_platform, target_platform,req_target_platform) = get_host_target(env)
- # If the user hasn't specifically requested a TARGET_ARCH, and
- # The TARGET_ARCH is amd64 then also try 32 bits if there are no viable
- # 64 bit tools installed
try_target_archs = [target_platform]
- if not req_target_platform and target_platform in ('amd64','x86_64'):
+ debug("msvs_find_valid_batch_script(): req_target_platform %s target_platform:%s"%(req_target_platform,target_platform))
+
+ # VS2012 has a "cross compile" environment to build 64 bit
+ # with x86_amd64 as the argument to the batch setup script
+ if req_target_platform in ('amd64','x86_64'):
+ try_target_archs.append('x86_amd64')
+ elif not req_target_platform and target_platform in ['amd64','x86_64']:
+ # There may not be "native" amd64, but maybe "cross" x86_amd64 tools
+ try_target_archs.append('x86_amd64')
+ # If the user hasn't specifically requested a TARGET_ARCH, and
+ # The TARGET_ARCH is amd64 then also try 32 bits if there are no viable
+ # 64 bit tools installed
try_target_archs.append('x86')
+ debug("msvs_find_valid_batch_script(): host_platform: %s try_target_archs:%s"%(host_platform, try_target_archs))
+
d = None
for tp in try_target_archs:
# Set to current arch.
@@ -399,6 +412,7 @@ def msvc_find_valid_batch_script(env,version):
except BatchFileExecutionError, e:
debug('vc.py:msvc_find_valid_batch_script() use_script 3: failed running VC script %s: %s: Error:%s'%(repr(vc_script),arg,e))
vc_script=None
+ continue
if not vc_script and sdk_script:
debug('vc.py:msvc_find_valid_batch_script() use_script 4: trying sdk script: %s'%(sdk_script))
try:
@@ -409,6 +423,9 @@ def msvc_find_valid_batch_script(env,version):
elif not vc_script and not sdk_script:
debug('vc.py:msvc_find_valid_batch_script() use_script 6: Neither VC script nor SDK script found')
continue
+
+ debug("vc.py:msvc_find_valid_batch_script() Found a working script/target: %s %s"%(repr(sdk_script),arg))
+ break # We've found a working target_platform, so stop looking
# If we cannot find a viable installed compiler, reset the TARGET_ARCH
# To it's initial value
diff --git a/src/engine/SCons/Tool/MSCommon/vs.py b/src/engine/SCons/Tool/MSCommon/vs.py
index 18b31a0..783ca2e 100644
--- a/src/engine/SCons/Tool/MSCommon/vs.py
+++ b/src/engine/SCons/Tool/MSCommon/vs.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 2014/03/02 14:18:15 garyo"
__doc__ = """Module to detect Visual Studio and/or Visual C/C++
"""
diff --git a/src/engine/SCons/Tool/Perforce.py b/src/engine/SCons/Tool/Perforce.py
index 3b56fee..3e132ad 100644
--- a/src/engine/SCons/Tool/Perforce.py
+++ b/src/engine/SCons/Tool/Perforce.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/Perforce.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/Perforce.py 2014/03/02 14:18:15 garyo"
import os
diff --git a/src/engine/SCons/Tool/Perforce.xml b/src/engine/SCons/Tool/Perforce.xml
index 59213cf..65edfe9 100644
--- a/src/engine/SCons/Tool/Perforce.xml
+++ b/src/engine/SCons/Tool/Perforce.xml
@@ -1,48 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="Perforce">
<summary>
+<para>
Sets construction variables for interacting with the
Perforce source code management system.
+</para>
</summary>
<sets>
-P4
-P4FLAGS
-P4COM
+<item>P4</item>
+<item>P4FLAGS</item>
+<item>P4COM</item>
</sets>
<uses>
-P4COMSTR
+<item>P4COMSTR</item>
</uses>
</tool>
<cvar name="P4">
<summary>
+<para>
The Perforce executable.
+</para>
</summary>
</cvar>
<cvar name="P4COM">
<summary>
+<para>
The command line used to
fetch source files from Perforce.
+</para>
</summary>
</cvar>
<cvar name="P4COMSTR">
<summary>
+<para>
The string displayed when
fetching a source file from Perforce.
If this is not set, then &cv-link-P4COM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="P4FLAGS">
<summary>
+<para>
General options that are passed to Perforce.
+</para>
</summary>
</cvar>
@@ -51,6 +80,7 @@ General options that are passed to Perforce.
()
</arguments>
<summary>
+<para>
A factory function that
returns a Builder object
to be used to fetch source files
@@ -59,17 +89,23 @@ The returned Builder
is intended to be passed to the
&f-SourceCode;
function.
+</para>
+<para>
This function is deprecated. For details, see the entry for the
&f-SourceCode;
function.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.SourceCode('.', env.Perforce())
-</example>
+</example_commands>
+<para>
Perforce uses a number of external
environment variables for its operation.
Consequently, this function adds the
@@ -86,5 +122,8 @@ SystemRoot,
USER,
and
USERNAME.
+</para>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/PharLapCommon.py b/src/engine/SCons/Tool/PharLapCommon.py
index 7602073..dc5e9db 100644
--- a/src/engine/SCons/Tool/PharLapCommon.py
+++ b/src/engine/SCons/Tool/PharLapCommon.py
@@ -7,7 +7,7 @@ Phar Lap ETS tool chain. Right now, this is linkloc and
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ Phar Lap ETS tool chain. Right now, this is linkloc and
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/PharLapCommon.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/PharLapCommon.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/PharLapCommonTests.py b/src/engine/SCons/Tool/PharLapCommonTests.py
index 5b5c5de..6b3e1e2 100644
--- a/src/engine/SCons/Tool/PharLapCommonTests.py
+++ b/src/engine/SCons/Tool/PharLapCommonTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/PharLapCommonTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/PharLapCommonTests.py 2014/03/02 14:18:15 garyo"
import unittest
import os.path
diff --git a/src/engine/SCons/Tool/RCS.py b/src/engine/SCons/Tool/RCS.py
index 05505ac..4ecb499 100644
--- a/src/engine/SCons/Tool/RCS.py
+++ b/src/engine/SCons/Tool/RCS.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/RCS.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/RCS.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/RCS.xml b/src/engine/SCons/Tool/RCS.xml
index c4ff132..3902355 100644
--- a/src/engine/SCons/Tool/RCS.xml
+++ b/src/engine/SCons/Tool/RCS.xml
@@ -1,62 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="RCS">
<summary>
+<para>
Sets construction variables for the interaction
with the Revision Control System.
+</para>
</summary>
<sets>
-RCS
-RCS_CO
-RCS_COFLAGS
-RCS_COCOM
+<item>RCS</item>
+<item>RCS_CO</item>
+<item>RCS_COFLAGS</item>
+<item>RCS_COCOM</item>
</sets>
<uses>
-RCS_COCOMSTR
+<item>RCS_COCOMSTR</item>
</uses>
</tool>
<cvar name="RCS">
<summary>
+<para>
The RCS executable.
Note that this variable is not actually used
for the command to fetch source files from RCS;
see the
&cv-link-RCS_CO;
construction variable, below.
+</para>
</summary>
</cvar>
<cvar name="RCS_CO">
<summary>
+<para>
The RCS "checkout" executable,
used to fetch source files from RCS.
+</para>
</summary>
</cvar>
<cvar name="RCS_COCOM">
<summary>
+<para>
The command line used to
fetch (checkout) source files from RCS.
+</para>
</summary>
</cvar>
<cvar name="RCS_COCOMSTR">
<summary>
+<para>
The string displayed when fetching
a source file from RCS.
If this is not set, then &cv-link-RCS_COCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="RCS_COFLAGS">
<summary>
+<para>
Options that are passed to the &cv-link-RCS_CO; command.
+</para>
</summary>
</cvar>
@@ -65,6 +96,7 @@ Options that are passed to the &cv-link-RCS_CO; command.
()
</arguments>
<summary>
+<para>
A factory function that
returns a Builder object
to be used to fetch source files
@@ -73,17 +105,23 @@ The returned Builder
is intended to be passed to the
&f-SourceCode;
function:
+</para>
+<para>
This function is deprecated. For details, see the entry for the
&f-SourceCode;
function.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env.SourceCode('.', env.RCS())
-</example>
+</example_commands>
+<para>
Note that
&scons;
will fetch source files
@@ -97,5 +135,8 @@ files in the same
directory as the source files,
or if you need to explicitly specify RCS
for a specific subdirectory.
+</para>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/SCCS.py b/src/engine/SCons/Tool/SCCS.py
index 6f795a5..cee057b 100644
--- a/src/engine/SCons/Tool/SCCS.py
+++ b/src/engine/SCons/Tool/SCCS.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/SCCS.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/SCCS.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/SCCS.xml b/src/engine/SCons/Tool/SCCS.xml
index f621d7a..4cc3a42 100644
--- a/src/engine/SCons/Tool/SCCS.xml
+++ b/src/engine/SCons/Tool/SCCS.xml
@@ -1,59 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="SCCS">
<summary>
+<para>
Sets construction variables for interacting with the
Source Code Control System.
+</para>
</summary>
<sets>
-SCCS
-SCCSFLAGS
-SCCSGETFLAGS
-SCCSCOM
+<item>SCCS</item>
+<item>SCCSFLAGS</item>
+<item>SCCSGETFLAGS</item>
+<item>SCCSCOM</item>
</sets>
<uses>
-SCCSCOMSTR
+<item>SCCSCOMSTR</item>
</uses>
</tool>
<cvar name="SCCS">
<summary>
+<para>
The SCCS executable.
+</para>
</summary>
</cvar>
<cvar name="SCCSCOM">
<summary>
+<para>
The command line used to
fetch source files from SCCS.
+</para>
</summary>
</cvar>
<cvar name="SCCSCOMSTR">
<summary>
+<para>
The string displayed when fetching
a source file from a CVS repository.
If this is not set, then &cv-link-SCCSCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SCCSFLAGS">
<summary>
+<para>
General options that are passed to SCCS.
+</para>
</summary>
</cvar>
<cvar name="SCCSGETFLAGS">
<summary>
+<para>
Options that are passed specifically to the SCCS "get" subcommand.
This can be set, for example, to
<option>-e</option>
to check out editable files from SCCS.
+</para>
</summary>
</cvar>
@@ -62,6 +93,7 @@ to check out editable files from SCCS.
()
</arguments>
<summary>
+<para>
A factory function that
returns a Builder object
to be used to fetch source files
@@ -70,13 +102,17 @@ The returned Builder
is intended to be passed to the
&f-link-SourceCode;
function.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
env.SourceCode('.', env.SCCS())
-</example>
+</example_commands>
+<para>
Note that
&scons;
will fetch source files
@@ -90,5 +126,8 @@ files in the same
directory as the source files,
or if you need to explicitly specify SCCS
for a specific subdirectory.
+</para>
</summary>
</scons_function>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/Subversion.py b/src/engine/SCons/Tool/Subversion.py
index 41771ad..3b45b12 100644
--- a/src/engine/SCons/Tool/Subversion.py
+++ b/src/engine/SCons/Tool/Subversion.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/Subversion.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/Subversion.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/Subversion.xml b/src/engine/SCons/Tool/Subversion.xml
index 1295824..953a735 100644
--- a/src/engine/SCons/Tool/Subversion.xml
+++ b/src/engine/SCons/Tool/Subversion.xml
@@ -1,21 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<!--
<tool name="Subversion">
<summary>
+<para>
Sets construction variables for interacting with Subversion.
+</para>
</summary>
<sets>
-SVN
-SVNFLAGS
-SVNCOM
+<item>SVN</item>
+<item>SVNFLAGS</item>
+<item>SVNCOM</item>
</sets>
<uses>
-SVNCOMSTR
+<item>SVNCOMSTR</item>
</uses>
</tool>
-->
@@ -23,8 +44,10 @@ SVNCOMSTR
<!--
<cvar name="SVN">
<summary>
+<para>
The Subversion executable (usually named
<command>svn</command>).
+</para>
</summary>
</cvar>
-->
@@ -32,8 +55,10 @@ The Subversion executable (usually named
<!--
<cvar name="SVNCOM">
<summary>
+<para>
The command line used to
fetch source files from a Subversion repository.
+</para>
</summary>
</cvar>
-->
@@ -41,7 +66,9 @@ fetch source files from a Subversion repository.
<!--
<cvar name="SVNFLAGS">
<summary>
+<para>
General options that are passed to Subversion.
+</para>
</summary>
</cvar>
-->
@@ -52,6 +79,7 @@ General options that are passed to Subversion.
(repository, module)
</arguments>
<summary>
+<para>
A factory function that
returns a Builder object
to be used to fetch source files
@@ -61,7 +89,9 @@ The returned Builder
is intended to be passed to the
&f-link-SourceCode;
function.
+</para>
+<para>
The optional specified
<varname>module</varname>
will be added to the beginning
@@ -73,14 +103,19 @@ so that you only have to
replicate part of the repository
directory hierarchy in your
local build directory.
+</para>
+<para>
This function is deprecated, see the entry for the
&f-SourceCode;
function.
+</para>
+<para>
Example:
+</para>
-<example>
+<example_commands>
# Will fetch foo/bar/src.c
# from /usr/local/Subversion/foo/bar/src.c.
env.SourceCode('.', env.Subversion('file:///usr/local/Subversion'))
@@ -92,7 +127,9 @@ env.SourceCode('.', env.Subversion('file:///usr/local/Subversion', 'foo'))
# Will fetch src.c
# from /usr/local/Subversion/foo/bar/src.c.
env.SourceCode('.', env.Subversion('file:///usr/local/Subversion', 'foo/bar'))
-</example>
+</example_commands>
</summary>
</scons_function>
-->
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/ToolTests.py b/src/engine/SCons/Tool/ToolTests.py
index 43aa4da..1487ce7 100644
--- a/src/engine/SCons/Tool/ToolTests.py
+++ b/src/engine/SCons/Tool/ToolTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ToolTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/ToolTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index b12095f..b946507 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -14,7 +14,7 @@ tool definition.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -35,7 +35,7 @@ tool definition.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/__init__.py 2014/03/02 14:18:15 garyo"
import imp
import sys
@@ -257,6 +257,10 @@ def VersionShLibLinkNames(version, libname, env):
print "VersionShLibLinkNames: linkname = ",linkname
linknames.append(linkname)
elif platform == 'posix':
+ if sys.platform.startswith('openbsd'):
+ # OpenBSD uses x.y shared library versioning numbering convention
+ # and doesn't use symlinks to backwards-compatible libraries
+ return []
# For libfoo.so.x.y.z, linknames libfoo.so libfoo.so.x.y libfoo.so.x
suffix_re = re.escape(shlib_suffix + '.' + version)
# First linkname has no version number
@@ -302,13 +306,17 @@ symlinks for the platform we are on"""
if version:
# set the shared library link flags
if platform == 'posix':
- suffix_re = re.escape(shlib_suffix + '.' + version)
- (major, age, revision) = version.split(".")
- # soname will have only the major version number in it
- soname = re.sub(suffix_re, shlib_suffix, libname) + '.' + major
- shlink_flags += [ '-Wl,-Bsymbolic', '-Wl,-soname=%s' % soname ]
- if Verbose:
- print " soname ",soname,", shlink_flags ",shlink_flags
+ shlink_flags += [ '-Wl,-Bsymbolic' ]
+ # OpenBSD doesn't usually use SONAME for libraries
+ if not sys.platform.startswith('openbsd'):
+ # continue setup of shlink flags for all other POSIX systems
+ suffix_re = re.escape(shlib_suffix + '.' + version)
+ (major, age, revision) = version.split(".")
+ # soname will have only the major version number in it
+ soname = re.sub(suffix_re, shlib_suffix, libname) + '.' + major
+ shlink_flags += [ '-Wl,-soname=%s' % soname ]
+ if Verbose:
+ print " soname ",soname,", shlink_flags ",shlink_flags
elif platform == 'cygwin':
shlink_flags += [ '-Wl,-Bsymbolic',
'-Wl,--out-implib,${TARGET.base}.a' ]
@@ -337,18 +345,32 @@ symlinks for the platform we are on"""
for count in range(len(linknames)):
linkname = linknames[count]
if count > 0:
- os.symlink(os.path.basename(linkname),lastname)
+ try:
+ os.remove(lastlinkname)
+ except:
+ pass
+ os.symlink(os.path.basename(linkname),lastlinkname)
if Verbose:
- print "VerShLib: made sym link of %s -> %s" % (lastname,linkname)
- lastname = linkname
+ print "VerShLib: made sym link of %s -> %s" % (lastlinkname,linkname)
+ lastlinkname = linkname
# finish chain of sym links with link to the actual library
if len(linknames)>0:
- os.symlink(lib_ver,lastname)
+ try:
+ os.remove(lastlinkname)
+ except:
+ pass
+ os.symlink(lib_ver,lastlinkname)
if Verbose:
- print "VerShLib: made sym link of %s -> %s" % (lib_ver,linkname)
+ print "VerShLib: made sym link of %s -> %s" % (linkname, lib_ver)
return result
-ShLibAction = SCons.Action.Action(VersionedSharedLibrary, None)
+# Fix http://scons.tigris.org/issues/show_bug.cgi?id=2903 :
+# Ensure we still depend on SCons.Defaults.ShLinkAction command line which is $SHLINKCOM.
+# This was tricky because we don't want changing LIBPATH to cause a rebuild, but
+# changing other link args should. LIBPATH has $( ... $) around it but until this
+# fix, when the varlist was added to the build sig those ignored parts weren't getting
+# ignored.
+ShLibAction = SCons.Action.Action(VersionedSharedLibrary, None, varlist=['SHLINKCOM'])
def createSharedLibBuilder(env):
"""This is a utility function that creates the SharedLibrary
@@ -733,6 +755,14 @@ def tool_list(platform, env):
assemblers = ['as']
fortran_compilers = ['gfortran', 'f95', 'f90', 'g77']
ars = ['ar']
+ elif str(platform) == 'cygwin':
+ "prefer GNU tools on Cygwin, except for a platform-specific linker"
+ linkers = ['cyglink', 'mslink', 'ilink']
+ c_compilers = ['gcc', 'msvc', 'intelc', 'icc', 'cc']
+ cxx_compilers = ['g++', 'msvc', 'intelc', 'icc', 'c++']
+ assemblers = ['gas', 'nasm', 'masm']
+ fortran_compilers = ['gfortran', 'g77', 'ifort', 'ifl', 'f95', 'f90', 'f77']
+ ars = ['ar', 'mslib']
else:
"prefer GNU tools on all other platforms"
linkers = ['gnulink', 'mslink', 'ilink']
diff --git a/src/engine/SCons/Tool/__init__.xml b/src/engine/SCons/Tool/__init__.xml
index 51ae8b0..deceaa3 100644
--- a/src/engine/SCons/Tool/__init__.xml
+++ b/src/engine/SCons/Tool/__init__.xml
@@ -1,11 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<builder name="CFile">
<summary>
+<para>
Builds a C source file given a lex (<filename>.l</filename>)
or yacc (<filename>.y</filename>) input file.
The suffix specified by the &cv-link-CFILESUFFIX; construction variable
@@ -13,18 +33,20 @@ The suffix specified by the &cv-link-CFILESUFFIX; construction variable
is automatically added to the target
if it is not already present.
Example:
+</para>
-<example>
+<example_commands>
# builds foo.c
env.CFile(target = 'foo.c', source = 'foo.l')
# builds bar.c
env.CFile(target = 'bar', source = 'bar.y')
-</example>
+</example_commands>
</summary>
</builder>
<builder name="CXXFile">
<summary>
+<para>
Builds a C++ source file given a lex (<filename>.ll</filename>)
or yacc (<filename>.yy</filename>)
input file.
@@ -33,44 +55,52 @@ The suffix specified by the &cv-link-CXXFILESUFFIX; construction variable
is automatically added to the target
if it is not already present.
Example:
+</para>
-<example>
+<example_commands>
# builds foo.cc
env.CXXFile(target = 'foo.cc', source = 'foo.ll')
# builds bar.cc
env.CXXFile(target = 'bar', source = 'bar.yy')
-</example>
+</example_commands>
</summary>
</builder>
<builder name="Library">
<summary>
+<para>
A synonym for the
&b-StaticLibrary;
builder method.
+</para>
</summary>
</builder>
<builder name="LoadableModule">
<summary>
+<para>
On most systems,
this is the same as
&b-SharedLibrary;.
On Mac OS X (Darwin) platforms,
this creates a loadable module bundle.
+</para>
</summary>
</builder>
<builder name="Object">
<summary>
+<para>
A synonym for the
&b-StaticObject;
builder method.
+</para>
</summary>
</builder>
<builder name="Program">
<summary>
+<para>
Builds an executable given one or more object files
or C, C++, D, or Fortran source files.
If any C, C++, D or Fortran source files are specified,
@@ -89,15 +119,17 @@ by default, <filename>.exe</filename> on Windows systems,
nothing on POSIX systems)
are automatically added to the target if not already present.
Example:
+</para>
-<example>
+<example_commands>
env.Program(target = 'foo', source = ['foo.o', 'bar.c', 'baz.f'])
-</example>
+</example_commands>
</summary>
</builder>
<builder name="SharedLibrary">
<summary>
+<para>
Builds a shared library
(<filename>.so</filename> on a POSIX system,
<filename>.dll</filename> on Windows)
@@ -118,11 +150,13 @@ by default, <filename>.dll</filename> on Windows systems,
<filename>.so</filename> on POSIX systems)
are automatically added to the target if not already present.
Example:
+</para>
-<example>
+<example_commands>
env.SharedLibrary(target = 'bar', source = ['bar.c', 'foo.o'])
-</example>
+</example_commands>
+<para>
On Windows systems, the
&b-SharedLibrary;
builder method will always build an import
@@ -131,7 +165,20 @@ in addition to the shared (<filename>.dll</filename>) library,
adding a <filename>.lib</filename> library with the same basename
if there is not already a <filename>.lib</filename> file explicitly
listed in the targets.
+</para>
+
+<para>
+On Cygwin systems, the
+&b-SharedLibrary;
+builder method will always build an import
+(<filename>.dll.a</filename>) library
+in addition to the shared (<filename>.dll</filename>) library,
+adding a <filename>.dll.a</filename> library with the same basename
+if there is not already a <filename>.dll.a</filename> file explicitly
+listed in the targets.
+</para>
+<para>
Any object files listed in the
<literal>source</literal>
must have been built for a shared library
@@ -140,25 +187,33 @@ must have been built for a shared library
builder method).
&scons;
will raise an error if there is any mismatch.
+</para>
+<para>
On some platforms, there is a distinction between a shared library
(loaded automatically by the system to resolve external references)
and a loadable module (explicitly loaded by user action).
For maximum portability, use the &b-LoadableModule; builder for the latter.
+</para>
+<para>
When the &cv-link-SHLIBVERSION; construction variable is defined a versioned
shared library is created. This modifies the &cv-link-SHLINKFLAGS; as required,
adds the version number to the library name, and creates the symlinks that
are needed. &cv-link-SHLIBVERSION; needs to be of the form X.Y.Z, where X
and Y are numbers, and Z is a number but can also contain letters to designate
alpha, beta, or release candidate patch levels.
+</para>
+<para>
This builder may create multiple links to the library. On a POSIX system,
for the shared library libbar.so.2.3.1, the links created would be
-libbar.so, libbar.so.2, and libbar.so.2.3; on a Darwin (OSX) system
+libbar.so and libbar.so.2; on a Darwin (OSX) system
the library would be libbar.2.3.1.dylib and the link would be
libbar.dylib.
+</para>
+<para>
On Windows systems, specifying
<literal>register=1</literal>
will cause the <filename>.dll</filename> to be
@@ -171,20 +226,24 @@ to prevent dialogs from popping
up and requiring user attention when it is run. If you change
&cv-link-REGSVRFLAGS;, be sure to include the <option>/s</option> option.
For example,
+</para>
-<example>
+<example_commands>
env.SharedLibrary(target = 'bar',
source = ['bar.cxx', 'foo.obj'],
register=1)
-</example>
+</example_commands>
+<para>
will register <filename>bar.dll</filename> as a COM object
when it is done linking it.
+</para>
</summary>
</builder>
<builder name="SharedObject">
<summary>
+<para>
Builds an object file for
inclusion in a shared library.
Source files must have one of the same set of extensions
@@ -210,24 +269,28 @@ and suffix
(specified by the &cv-link-SHOBJSUFFIX; construction variable)
are automatically added to the target if not already present.
Examples:
+</para>
-<example>
+<example_commands>
env.SharedObject(target = 'ddd', source = 'ddd.c')
env.SharedObject(target = 'eee.o', source = 'eee.cpp')
env.SharedObject(target = 'fff.obj', source = 'fff.for')
-</example>
+</example_commands>
+<para>
Note that the source files will be scanned
according to the suffix mappings in the
<literal>SourceFileScanner</literal>
object.
See the section "Scanner Objects,"
below, for more information.
+</para>
</summary>
</builder>
<builder name="StaticLibrary">
<summary>
+<para>
Builds a static library given one or more object files
or C, C++, D or Fortran source files.
If any source files are given,
@@ -245,11 +308,13 @@ by default, <filename>.lib</filename> on Windows systems,
<filename>.a</filename> on POSIX systems)
are automatically added to the target if not already present.
Example:
+</para>
-<example>
+<example_commands>
env.StaticLibrary(target = 'bar', source = ['bar.c', 'foo.o'])
-</example>
+</example_commands>
+<para>
Any object files listed in the
<literal>source</literal>
must have been built for a static library
@@ -258,16 +323,19 @@ must have been built for a static library
builder method).
&scons;
will raise an error if there is any mismatch.
+</para>
</summary>
</builder>
<builder name="StaticObject">
<summary>
+<para>
Builds a static object file
from one or more C, C++, D, or Fortran source files.
Source files must have one of the following extensions:
+</para>
-<example>
+<example_commands>
.asm assembly language file
.ASM assembly language file
.c C file
@@ -296,8 +364,9 @@ Source files must have one of the following extensions:
POSIX: assembly language file + C pre-processor
.spp assembly language file + C pre-processor
.SPP assembly language file + C pre-processor
-</example>
+</example_commands>
+<para>
The target object file prefix
(specified by the &cv-link-OBJPREFIX; construction variable; nothing by default)
and suffix
@@ -306,32 +375,38 @@ and suffix
<filename>.o</filename> on POSIX systems)
are automatically added to the target if not already present.
Examples:
+</para>
-<example>
+<example_commands>
env.StaticObject(target = 'aaa', source = 'aaa.c')
env.StaticObject(target = 'bbb.o', source = 'bbb.c++')
env.StaticObject(target = 'ccc.obj', source = 'ccc.f')
-</example>
+</example_commands>
+<para>
Note that the source files will be scanned
according to the suffix mappings in
<literal>SourceFileScanner</literal>
object.
See the section "Scanner Objects,"
below, for more information.
+</para>
</summary>
</builder>
<cvar name="CCVERSION">
<summary>
+<para>
The version number of the C compiler.
This may or may not be set,
depending on the specific C compiler being used.
+</para>
</summary>
</cvar>
<cvar name="CFILESUFFIX">
<summary>
+<para>
The suffix for C source files.
This is used by the internal CFile builder
when generating C files from Lex (.l) or YACC (.y) input files.
@@ -343,19 +418,23 @@ SCons also treats
<filename>.C</filename>
(upper case) files
as C files.
+</para>
</summary>
</cvar>
<cvar name="CXXVERSION">
<summary>
+<para>
The version number of the C++ compiler.
This may or may not be set,
depending on the specific C++ compiler being used.
+</para>
</summary>
</cvar>
<cvar name="CXXFILESUFFIX">
<summary>
+<para>
The suffix for C++ source files.
This is used by the internal CXXFile builder
when generating C++ files from Lex (.ll) or YACC (.yy) input files.
@@ -376,34 +455,45 @@ SCons also treats
<filename>.C</filename>
(upper case) files
as C++ files.
+</para>
</summary>
</cvar>
<cvar name="LIBEMITTER">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="SHLIBEMITTER">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="PROGEMITTER">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="SHLIBVERSION">
<summary>
+<para>
When this construction variable is defined, a versioned shared library
is created. This modifies the &cv-link-SHLINKFLAGS; as required, adds
the version number to the library name, and creates the symlinks that
are needed. &cv-link-SHLIBVERSION; needs to be of the form X.Y.Z,
where X and Y are numbers, and Z is a number but can also contain
letters to designate alpha, beta, or release candidate patch levels.
+</para>
</summary>
</cvar>
+
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/aixc++.py b/src/engine/SCons/Tool/aixc++.py
index e9cc5c2..6f1ea5b 100644
--- a/src/engine/SCons/Tool/aixc++.py
+++ b/src/engine/SCons/Tool/aixc++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixc++.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/aixc++.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/aixc++.xml b/src/engine/SCons/Tool/aixc++.xml
index 04aaade..75d9be8 100644
--- a/src/engine/SCons/Tool/aixc++.xml
+++ b/src/engine/SCons/Tool/aixc++.xml
@@ -1,19 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="aixc++">
<summary>
+<para>
Sets construction variables for the IMB xlc / Visual Age C++ compiler.
+</para>
</summary>
<sets>
-CXX
-SHCXX
-CXXVERSION
-SHOBJSUFFIX
+<item>CXX</item>
+<item>SHCXX</item>
+<item>CXXVERSION</item>
+<item>SHOBJSUFFIX</item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/aixcc.py b/src/engine/SCons/Tool/aixcc.py
index 44cb0ab..bdcb681 100644
--- a/src/engine/SCons/Tool/aixcc.py
+++ b/src/engine/SCons/Tool/aixcc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixcc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/aixcc.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/aixcc.xml b/src/engine/SCons/Tool/aixcc.xml
index 7143285..153e191 100644
--- a/src/engine/SCons/Tool/aixcc.xml
+++ b/src/engine/SCons/Tool/aixcc.xml
@@ -1,18 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="aixcc">
<summary>
+<para>
Sets construction variables for the IBM xlc / Visual Age C compiler.
+</para>
</summary>
<sets>
-CC
-SHCC
-CCVERSION
+<item>CC</item>
+<item>SHCC</item>
+<item>CCVERSION</item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/aixf77.py b/src/engine/SCons/Tool/aixf77.py
index 19f8594..3a8400b 100644
--- a/src/engine/SCons/Tool/aixf77.py
+++ b/src/engine/SCons/Tool/aixf77.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixf77.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/aixf77.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/aixf77.xml b/src/engine/SCons/Tool/aixf77.xml
index 539edff..e28b31b 100644
--- a/src/engine/SCons/Tool/aixf77.xml
+++ b/src/engine/SCons/Tool/aixf77.xml
@@ -1,17 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="aixf77">
<summary>
+<para>
Sets construction variables for the IBM Visual Age f77 Fortran compiler.
+</para>
</summary>
<sets>
-F77
-SHF77
+<item>F77</item>
+<item>SHF77</item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/aixlink.py b/src/engine/SCons/Tool/aixlink.py
index 980568a..44a7ca5 100644
--- a/src/engine/SCons/Tool/aixlink.py
+++ b/src/engine/SCons/Tool/aixlink.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixlink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/aixlink.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/aixlink.xml b/src/engine/SCons/Tool/aixlink.xml
index 7be1769..ceb8231 100644
--- a/src/engine/SCons/Tool/aixlink.xml
+++ b/src/engine/SCons/Tool/aixlink.xml
@@ -1,19 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="aixlink">
<summary>
+<para>
Sets construction variables for the IBM Visual Age linker.
+</para>
</summary>
<sets>
-<!--SMARTLINKFLAGS-->
-LINKFLAGS
-SHLINKFLAGS
-SHLIBSUFFIX
+<item><!--SMARTLINKFLAGS--></item>
+<item>LINKFLAGS</item>
+<item>SHLINKFLAGS</item>
+<item>SHLIBSUFFIX</item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/applelink.py b/src/engine/SCons/Tool/applelink.py
index a67fc10..70ad558 100644
--- a/src/engine/SCons/Tool/applelink.py
+++ b/src/engine/SCons/Tool/applelink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/applelink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/applelink.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/applelink.xml b/src/engine/SCons/Tool/applelink.xml
index 3687d8c..f3f1a2d 100644
--- a/src/engine/SCons/Tool/applelink.xml
+++ b/src/engine/SCons/Tool/applelink.xml
@@ -1,33 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="applelink">
<summary>
+<para>
Sets construction variables for the Apple linker
(similar to the GNU linker).
+</para>
</summary>
<sets>
-FRAMEWORKPATHPREFIX
-_FRAMEWORKPATH
-_FRAMEWORKS
-LINKCOM
-SHLINKFLAGS
-SHLINKCOM
-LDMODULEPREFIX
-LDMODULESUFFIX
-LDMODULEFLAGS
-LDMODULECOM
+<item>FRAMEWORKPATHPREFIX</item>
+<item>_FRAMEWORKPATH</item>
+<item>_FRAMEWORKS</item>
+<item>LINKCOM</item>
+<item>SHLINKFLAGS</item>
+<item>SHLINKCOM</item>
+<item>LDMODULEPREFIX</item>
+<item>LDMODULESUFFIX</item>
+<item>LDMODULEFLAGS</item>
+<item>LDMODULECOM</item>
</sets>
<uses>
-FRAMEWORKSFLAGS
+<item>FRAMEWORKSFLAGS</item>
</uses>
</tool>
<cvar name="FRAMEWORKSFLAGS">">
<summary>
+<para>
On Mac OS X with gcc,
general user-supplied frameworks options to be added at
the end of a command
@@ -36,44 +58,52 @@ line building a loadable module.
the &cv-link-FRAMEWORKPATH;, &cv-link-FRAMEWORKPATHPREFIX;,
&cv-link-FRAMEWORKPREFIX; and &cv-link-FRAMEWORKS; variables
described above.)
+</para>
</summary>
</cvar>
<cvar name="FRAMEWORKS">
<summary>
+<para>
On Mac OS X with gcc, a list of the framework names to be linked into a
program or shared library or bundle.
The default value is the empty list.
For example:
+</para>
-<example>
+<example_commands>
env.AppendUnique(FRAMEWORKS=Split('System Cocoa SystemConfiguration'))
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="FRAMEWORKPREFIX">
<summary>
+<para>
On Mac OS X with gcc,
the prefix to be used for linking in frameworks
(see &cv-link-FRAMEWORKS;).
The default value is
<option>-framework</option>.
+</para>
</summary>
</cvar>
<cvar name="_FRAMEWORKS">
<summary>
+<para>
On Mac OS X with gcc,
an automatically-generated construction variable
containing the linker command-line options
for linking with FRAMEWORKS.
+</para>
</summary>
</cvar>
<cvar name="FRAMEWORKPATH">
<summary>
+<para>
On Mac OS X with gcc,
a list containing the paths to search for frameworks.
Used by the compiler to find framework-style includes like
@@ -81,34 +111,45 @@ Used by the compiler to find framework-style includes like
Used by the linker to find user-specified frameworks when linking (see
&cv-link-FRAMEWORKS;).
For example:
+</para>
-<example>
+<example_commands>
env.AppendUnique(FRAMEWORKPATH='#myframeworkdir')
-</example>
+</example_commands>
+<para>
will add
+</para>
-<example>
+<example_commands>
... -Fmyframeworkdir
-</example>
+</example_commands>
+<para>
to the compiler and linker command lines.
+</para>
</summary>
</cvar>
<cvar name="FRAMEWORKPATHPREFIX">
<summary>
+<para>
On Mac OS X with gcc, the prefix to be used for the FRAMEWORKPATH entries.
(see &cv-link-FRAMEWORKPATH;).
The default value is
<option>-F</option>.
+</para>
</summary>
</cvar>
<cvar name="_FRAMEWORKPATH">
<summary>
+<para>
On Mac OS X with gcc, an automatically-generated construction variable
containing the linker command-line options corresponding to
&cv-link-FRAMEWORKPATH;.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/ar.py b/src/engine/SCons/Tool/ar.py
index c11b543..d9ef9a4 100644
--- a/src/engine/SCons/Tool/ar.py
+++ b/src/engine/SCons/Tool/ar.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ar.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/ar.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/ar.xml b/src/engine/SCons/Tool/ar.xml
index 8d0a096..6c307d1 100644
--- a/src/engine/SCons/Tool/ar.xml
+++ b/src/engine/SCons/Tool/ar.xml
@@ -1,22 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="ar">
<summary>
+<para>
Sets construction variables for the &ar; library archiver.
+</para>
</summary>
<sets>
-AR
-ARFLAGS
-ARCOM
-LIBPREFIX
-LIBSUFFIX
-RANLIB
-RANLIBFLAGS
-RANLIBCOM
+<item>AR</item>
+<item>ARFLAGS</item>
+<item>ARCOM</item>
+<item>LIBPREFIX</item>
+<item>LIBSUFFIX</item>
+<item>RANLIB</item>
+<item>RANLIBFLAGS</item>
+<item>RANLIBCOM</item>
</sets>
<uses>
</uses>
@@ -24,59 +45,77 @@ RANLIBCOM
<cvar name="AR">
<summary>
+<para>
The static library archiver.
+</para>
</summary>
</cvar>
<cvar name="ARCOM">
<summary>
+<para>
The command line used to generate a static library from object files.
+</para>
</summary>
</cvar>
<cvar name="ARCOMSTR">
<summary>
+<para>
The string displayed when an object file
is generated from an assembly-language source file.
If this is not set, then &cv-link-ARCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(ARCOMSTR = "Archiving $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="ARFLAGS">
<summary>
+<para>
General options passed to the static library archiver.
+</para>
</summary>
</cvar>
<cvar name="RANLIB">
<summary>
+<para>
The archive indexer.
+</para>
</summary>
</cvar>
<cvar name="RANLIBCOM">
<summary>
+<para>
The command line used to index a static library archive.
+</para>
</summary>
</cvar>
<cvar name="RANLIBCOMSTR">
<summary>
+<para>
The string displayed when a static library archive is indexed.
If this is not set, then &cv-link-RANLIBCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(RANLIBCOMSTR = "Indexing $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="RANLIBFLAGS">
<summary>
+<para>
General options passed to the archive indexer.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/as.py b/src/engine/SCons/Tool/as.py
index 29b0266..d245f7b 100644
--- a/src/engine/SCons/Tool/as.py
+++ b/src/engine/SCons/Tool/as.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/as.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/as.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/as.xml b/src/engine/SCons/Tool/as.xml
index 1e0d451..70fc036 100644
--- a/src/engine/SCons/Tool/as.xml
+++ b/src/engine/SCons/Tool/as.xml
@@ -1,88 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="as">
<summary>
+<para>
Sets construction variables for the &as; assembler.
+</para>
</summary>
<sets>
-AS
-ASFLAGS
-ASCOM
-ASPPFLAGS
-ASPPCOM
+<item>AS</item>
+<item>ASFLAGS</item>
+<item>ASCOM</item>
+<item>ASPPFLAGS</item>
+<item>ASPPCOM</item>
</sets>
<uses>
-CC
-CPPFLAGS
-_CPPDEFFLAGS
-_CPPINCFLAGS
+<item>CC</item>
+<item>CPPFLAGS</item>
+<item>_CPPDEFFLAGS</item>
+<item>_CPPINCFLAGS</item>
</uses>
</tool>
<cvar name="AS">
<summary>
+<para>
The assembler.
+</para>
</summary>
</cvar>
<cvar name="ASCOM">
<summary>
+<para>
The command line used to generate an object file
from an assembly-language source file.
+</para>
</summary>
</cvar>
<cvar name="ASCOMSTR">
<summary>
+<para>
The string displayed when an object file
is generated from an assembly-language source file.
If this is not set, then &cv-link-ASCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(ASCOMSTR = "Assembling $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="ASFLAGS">
<summary>
+<para>
General options passed to the assembler.
+</para>
</summary>
</cvar>
<cvar name="ASPPCOM">
<summary>
+<para>
The command line used to assemble an assembly-language
source file into an object file
after first running the file through the C preprocessor.
Any options specified
in the &cv-link-ASFLAGS; and &cv-link-CPPFLAGS; construction variables
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="ASPPCOMSTR">
<summary>
+<para>
The string displayed when an object file
is generated from an assembly-language source file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-ASPPCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(ASPPCOMSTR = "Assembling $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="ASPPFLAGS">
<summary>
+<para>
General options when an assembling an assembly-language
source file into an object file
after first running the file through the C preprocessor.
The default is to use the value of &cv-link-ASFLAGS;.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/bcc32.py b/src/engine/SCons/Tool/bcc32.py
index c152353..ce4f234 100644
--- a/src/engine/SCons/Tool/bcc32.py
+++ b/src/engine/SCons/Tool/bcc32.py
@@ -5,7 +5,7 @@ XXX
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/bcc32.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/bcc32.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/bcc32.xml b/src/engine/SCons/Tool/bcc32.xml
index d55588e..0511ff5 100644
--- a/src/engine/SCons/Tool/bcc32.xml
+++ b/src/engine/SCons/Tool/bcc32.xml
@@ -1,32 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="bcc32">
<summary>
+<para>
Sets construction variables for the bcc32 compiler.
+</para>
</summary>
<sets>
-CC
-CCFLAGS
-CFLAGS
-CCCOM
-SHCC
-SHCCFLAGS
-SHCFLAGS
-SHCCCOM
-CPPDEFPREFIX
-CPPDEFSUFFIX
-INCPREFIX
-INCSUFFIX
-SHOBJSUFFIX
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
-CFILESUFFIX
+<item>CC</item>
+<item>CCFLAGS</item>
+<item>CFLAGS</item>
+<item>CCCOM</item>
+<item>SHCC</item>
+<item>SHCCFLAGS</item>
+<item>SHCFLAGS</item>
+<item>SHCCCOM</item>
+<item>CPPDEFPREFIX</item>
+<item>CPPDEFSUFFIX</item>
+<item>INCPREFIX</item>
+<item>INCSUFFIX</item>
+<item>SHOBJSUFFIX</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
+<item>CFILESUFFIX</item>
</sets>
<uses>
-_CPPDEFFLAGS
-_CPPINCFLAGS
+<item>_CPPDEFFLAGS</item>
+<item>_CPPINCFLAGS</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/c++.py b/src/engine/SCons/Tool/c++.py
index 18f4afe..7b98b76 100644
--- a/src/engine/SCons/Tool/c++.py
+++ b/src/engine/SCons/Tool/c++.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/c++.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/c++.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/c++.xml b/src/engine/SCons/Tool/c++.xml
index c8da67c..30b93f1 100644
--- a/src/engine/SCons/Tool/c++.xml
+++ b/src/engine/SCons/Tool/c++.xml
@@ -1,102 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="cXX">
<summary>
+<para>
Sets construction variables for generic POSIX C++ compilers.
+</para>
</summary>
<sets>
-CXX
-CXXFLAGS
-CXXCOM
-SHCXX
-SHCXXFLAGS
-SHCXXCOM
-CPPDEFPREFIX
-CPPDEFSUFFIX
-INCPREFIX
-INCSUFFIX
-SHOBJSUFFIX
-OBJSUFFIX
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
-CXXFILESUFFIX
+<item>CXX</item>
+<item>CXXFLAGS</item>
+<item>CXXCOM</item>
+<item>SHCXX</item>
+<item>SHCXXFLAGS</item>
+<item>SHCXXCOM</item>
+<item>CPPDEFPREFIX</item>
+<item>CPPDEFSUFFIX</item>
+<item>INCPREFIX</item>
+<item>INCSUFFIX</item>
+<item>SHOBJSUFFIX</item>
+<item>OBJSUFFIX</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
+<item>CXXFILESUFFIX</item>
</sets>
<uses>
-CXXCOMSTR
+<item>CXXCOMSTR</item>
</uses>
</tool>
<cvar name="CXX">
<summary>
+<para>
The C++ compiler.
+</para>
</summary>
</cvar>
<cvar name="CXXCOM">
<summary>
+<para>
The command line used to compile a C++ source file to an object file.
Any options specified in the &cv-link-CXXFLAGS; and
&cv-link-CPPFLAGS; construction variables
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="CXXCOMSTR">
<summary>
+<para>
The string displayed when a C++ source file
is compiled to a (static) object file.
If this is not set, then &cv-link-CXXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(CXXCOMSTR = "Compiling static object $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="CXXFLAGS">
<summary>
+<para>
General options that are passed to the C++ compiler.
By default, this includes the value of &cv-link-CCFLAGS;,
so that setting &cv-CCFLAGS; affects both C and C++ compilation.
If you want to add C++-specific flags,
you must set or override the value of &cv-link-CXXFLAGS;.
+</para>
</summary>
</cvar>
<cvar name="SHCXX">
<summary>
+<para>
The C++ compiler used for generating shared-library objects.
+</para>
</summary>
</cvar>
<cvar name="SHCXXCOM">
<summary>
+<para>
The command line used to compile a C++ source file
to a shared-library object file.
Any options specified in the &cv-link-SHCXXFLAGS; and
&cv-link-CPPFLAGS; construction variables
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="SHCXXCOMSTR">
<summary>
+<para>
The string displayed when a C++ source file
is compiled to a shared object file.
If this is not set, then &cv-link-SHCXXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(SHCXXCOMSTR = "Compiling shared object $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="SHCXXFLAGS">
<summary>
+<para>
Options that are passed to the C++ compiler
to generate shared-library objects.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/cc.py b/src/engine/SCons/Tool/cc.py
index 00ecc2f..0702138 100644
--- a/src/engine/SCons/Tool/cc.py
+++ b/src/engine/SCons/Tool/cc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/cc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/cc.py 2014/03/02 14:18:15 garyo"
import SCons.Tool
import SCons.Defaults
diff --git a/src/engine/SCons/Tool/cc.xml b/src/engine/SCons/Tool/cc.xml
index 1860c25..ec2b5ee 100644
--- a/src/engine/SCons/Tool/cc.xml
+++ b/src/engine/SCons/Tool/cc.xml
@@ -1,79 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="cc">
<summary>
+<para>
Sets construction variables for generic POSIX C copmilers.
+</para>
</summary>
<sets>
-<!--_CCCOMCOM-->
-FRAMEWORKS
-FRAMEWORKPATH
-CC
-CFLAGS
-CCFLAGS
-CCCOM
-SHCC
-SHCFLAGS
-SHCCFLAGS
-SHCCCOM
-CPPDEFPREFIX
-CPPDEFSUFFIX
-INCPREFIX
-INCSUFFIX
-SHOBJSUFFIX
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
-CFILESUFFIX
+<item><!--_CCCOMCOM--></item>
+<item>FRAMEWORKS</item>
+<item>FRAMEWORKPATH</item>
+<item>CC</item>
+<item>CFLAGS</item>
+<item>CCFLAGS</item>
+<item>CCCOM</item>
+<item>SHCC</item>
+<item>SHCFLAGS</item>
+<item>SHCCFLAGS</item>
+<item>SHCCCOM</item>
+<item>CPPDEFPREFIX</item>
+<item>CPPDEFSUFFIX</item>
+<item>INCPREFIX</item>
+<item>INCSUFFIX</item>
+<item>SHOBJSUFFIX</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
+<item>CFILESUFFIX</item>
</sets>
<uses>
-PLATFORM
+<item>PLATFORM</item>
</uses>
</tool>
<cvar name="CC">
<summary>
+<para>
The C compiler.
+</para>
</summary>
</cvar>
<cvar name="CCCOM">
<summary>
+<para>
The command line used to compile a C source file to a (static) object
file. Any options specified in the &cv-link-CFLAGS;, &cv-link-CCFLAGS; and
&cv-link-CPPFLAGS; construction variables are included on this command
line.
+</para>
</summary>
</cvar>
<cvar name="CCCOMSTR">
<summary>
+<para>
The string displayed when a C source file
is compiled to a (static) object file.
If this is not set, then &cv-link-CCCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(CCCOMSTR = "Compiling static object $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="CCFLAGS">
<summary>
+<para>
General options that are passed to the C and C++ compilers.
+</para>
</summary>
</cvar>
<cvar name="CFLAGS">
<summary>
+<para>
General options that are passed to the C compiler (C only; not C++).
+</para>
</summary>
</cvar>
<cvar name="CPPFLAGS">
<summary>
+<para>
User-specified C preprocessor options.
These will be included in any command that uses the C preprocessor,
including not just compilation of C and C++ source files
@@ -97,65 +129,80 @@ contain
that scons generates automatically from &cv-link-CPPPATH;.
See &cv-link-_CPPINCFLAGS;, below,
for the variable that expands to those options.
+</para>
</summary>
</cvar>
<cvar name="CPPSUFFIXES">
<summary>
+<para>
The list of suffixes of files that will be scanned
for C preprocessor implicit dependencies
(#include lines).
The default list is:
+</para>
-<example>
+<example_commands>
[".c", ".C", ".cxx", ".cpp", ".c++", ".cc",
".h", ".H", ".hxx", ".hpp", ".hh",
".F", ".fpp", ".FPP",
".m", ".mm",
".S", ".spp", ".SPP"]
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="SHCC">
<summary>
+<para>
The C compiler used for generating shared-library objects.
+</para>
</summary>
</cvar>
<cvar name="SHCCCOM">
<summary>
+<para>
The command line used to compile a C source file
to a shared-library object file.
Any options specified in the &cv-link-SHCFLAGS;,
&cv-link-SHCCFLAGS; and
&cv-link-CPPFLAGS; construction variables
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="SHCCCOMSTR">
<summary>
+<para>
The string displayed when a C source file
is compiled to a shared object file.
If this is not set, then &cv-link-SHCCCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(SHCCCOMSTR = "Compiling shared object $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="SHCCFLAGS">
<summary>
+<para>
Options that are passed to the C and C++ compilers
to generate shared-library objects.
+</para>
</summary>
</cvar>
<cvar name="SHCFLAGS">
<summary>
+<para>
Options that are passed to the C compiler (only; not C++)
to generate shared-library objects.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/cvf.py b/src/engine/SCons/Tool/cvf.py
index 2bf10da..d35c1b1 100644
--- a/src/engine/SCons/Tool/cvf.py
+++ b/src/engine/SCons/Tool/cvf.py
@@ -5,7 +5,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/cvf.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/cvf.py 2014/03/02 14:18:15 garyo"
import fortran
diff --git a/src/engine/SCons/Tool/cvf.xml b/src/engine/SCons/Tool/cvf.xml
index fc9e271..12e4596 100644
--- a/src/engine/SCons/Tool/cvf.xml
+++ b/src/engine/SCons/Tool/cvf.xml
@@ -1,30 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="cvf">
<summary>
+<para>
Sets construction variables for the Compaq Visual Fortran compiler.
+</para>
</summary>
<sets>
-FORTRAN
-FORTRANCOM
-FORTRANPPCOM
-SHFORTRANCOM
-SHFORTRANPPCOM
-OBJSUFFIX
-FORTRANMODDIR
-FORTRANMODDIRPREFIX
-FORTRANMODDIRSUFFIX
+<item>FORTRAN</item>
+<item>FORTRANCOM</item>
+<item>FORTRANPPCOM</item>
+<item>SHFORTRANCOM</item>
+<item>SHFORTRANPPCOM</item>
+<item>OBJSUFFIX</item>
+<item>FORTRANMODDIR</item>
+<item>FORTRANMODDIRPREFIX</item>
+<item>FORTRANMODDIRSUFFIX</item>
</sets>
<uses>
-FORTRANFLAGS
-SHFORTRANFLAGS
-_FORTRANMODFLAG
-_FORTRANINCFLAGS
-CPPFLAGS
-_CPPDEFFLAGS
+<item>FORTRANFLAGS</item>
+<item>SHFORTRANFLAGS</item>
+<item>_FORTRANMODFLAG</item>
+<item>_FORTRANINCFLAGS</item>
+<item>CPPFLAGS</item>
+<item>_CPPDEFFLAGS</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/cyglink.py b/src/engine/SCons/Tool/cyglink.py
new file mode 100644
index 0000000..87716cf
--- /dev/null
+++ b/src/engine/SCons/Tool/cyglink.py
@@ -0,0 +1,94 @@
+"""SCons.Tool.cyglink
+
+Customization of gnulink for Cygwin (http://www.cygwin.com/)
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+
+"""
+
+import SCons.Action
+import SCons.Util
+
+import gnulink
+
+def shlib_generator(target, source, env, for_signature):
+ cmd = SCons.Util.CLVar(['$SHLINK'])
+
+ dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
+ if dll: cmd.extend(['-o', dll])
+
+ cmd.extend(['$SHLINKFLAGS', '$__RPATH'])
+
+ implib = env.FindIxes(target, 'IMPLIBPREFIX', 'IMPLIBSUFFIX')
+ if implib:
+ cmd.extend([
+ '-Wl,--out-implib='+implib.get_string(for_signature),
+ '-Wl,--export-all-symbols',
+ '-Wl,--enable-auto-import',
+ '-Wl,--whole-archive', '$SOURCES',
+ '-Wl,--no-whole-archive', '$_LIBDIRFLAGS', '$_LIBFLAGS'
+ ])
+ else:
+ cmd.extend(['$SOURCES', '$_LIBDIRFLAGS', '$_LIBFLAGS'])
+
+ return [cmd]
+
+def shlib_emitter(target, source, env):
+ dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
+ no_import_lib = env.get('no_import_lib', 0)
+
+ if not dll or len(target) > 1:
+ raise SCons.Errors.UserError("A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX"))
+
+ # Remove any "lib" after the prefix
+ pre = env.subst('$SHLIBPREFIX')
+ if dll.name[len(pre):len(pre)+3] == 'lib':
+ dll.name = pre + dll.name[len(pre)+3:]
+
+ orig_target = target
+ target = [env.fs.File(dll)]
+ target[0].attributes.shared = 1
+
+ # Append an import lib target
+ if not no_import_lib:
+ # Create list of target libraries as strings
+ target_strings = env.ReplaceIxes(orig_target[0],
+ 'SHLIBPREFIX', 'SHLIBSUFFIX',
+ 'IMPLIBPREFIX', 'IMPLIBSUFFIX')
+
+ implib_target = env.fs.File(target_strings)
+ implib_target.attributes.shared = 1
+ target.append(implib_target)
+
+ return (target, source)
+
+
+shlib_action = SCons.Action.Action(shlib_generator, generator=1)
+
+def generate(env):
+ """Add Builders and construction variables for cyglink to an Environment."""
+ gnulink.generate(env)
+
+ env['LINKFLAGS'] = SCons.Util.CLVar('-Wl,-no-undefined')
+
+ env['SHLINKCOM'] = shlib_action
+ env['LDMODULECOM'] = shlib_action
+ env.Append(SHLIBEMITTER = [shlib_emitter])
+
+ env['SHLIBPREFIX'] = 'cyg'
+ env['SHLIBSUFFIX'] = '.dll'
+
+ env['IMPLIBPREFIX'] = 'lib'
+ env['IMPLIBSUFFIX'] = '.dll.a'
+
+def exists(env):
+ return gnulink.exists(env)
+
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/src/engine/SCons/Tool/default.py b/src/engine/SCons/Tool/default.py
index 4faab7e..ccb215c 100644
--- a/src/engine/SCons/Tool/default.py
+++ b/src/engine/SCons/Tool/default.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/default.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/default.py 2014/03/02 14:18:15 garyo"
import SCons.Tool
diff --git a/src/engine/SCons/Tool/default.xml b/src/engine/SCons/Tool/default.xml
index 1ca1a94..4c94598 100644
--- a/src/engine/SCons/Tool/default.xml
+++ b/src/engine/SCons/Tool/default.xml
@@ -1,12 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="default">
<summary>
+<para>
Sets variables by calling a default list of Tool modules
for the platform on which SCons is running.
+</para>
</summary>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py
index 3c73f80..67355b1 100644
--- a/src/engine/SCons/Tool/dmd.py
+++ b/src/engine/SCons/Tool/dmd.py
@@ -35,7 +35,7 @@ Lib tool variables:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -57,7 +57,7 @@ Lib tool variables:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/dmd.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/dmd.py 2014/03/02 14:18:15 garyo"
import os
diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml
index ac80f95..7f8f535 100644
--- a/src/engine/SCons/Tool/dmd.xml
+++ b/src/engine/SCons/Tool/dmd.xml
@@ -1,53 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="dmd">
<summary>
+<para>
Sets construction variables for D language compilers
(the Digital Mars D compiler, or GDC).
+</para>
</summary>
<sets>
-<!--
-DC
-DCOM
-_DINCFLAGS
-_DVERFLAGS
-_DDEBUGFLAGS
-_DFLAGS
-DPATH
-DFLAGS
-DVERSIONS
-DDEBUG
-DINCPREFIX
-DINCSUFFIX
-DVERPREFIX
-DVERSUFFIX
-DDEBUGPREFIX
-DDEBUGSUFFIX
-DFLAGPREFIX
-DFLAGSUFFIX
-DFLESUFFIX
-DLINK
-DLINKCOM
-DLIB
-DLIBCOM
-_DLINKLIBFLAGS
-_DLIBFLAGS
-DLINKFLAGS
-DLIBLINKPREFIX
-DLIBLINKSUFFIX
-DLIBFLAGPREFIX
-DLIBFLAGSUFFIX
-DLINKFLAGPREFIX
-DLINKFLAGSUFFIX
-LINKCOM
-ARCOM
-LIBS
--->
+<item><!--</item>
+<item>DC</item>
+<item>DCOM</item>
+<item>_DINCFLAGS</item>
+<item>_DVERFLAGS</item>
+<item>_DDEBUGFLAGS</item>
+<item>_DFLAGS</item>
+<item>DPATH</item>
+<item>DFLAGS</item>
+<item>DVERSIONS</item>
+<item>DDEBUG</item>
+<item>DINCPREFIX</item>
+<item>DINCSUFFIX</item>
+<item>DVERPREFIX</item>
+<item>DVERSUFFIX</item>
+<item>DDEBUGPREFIX</item>
+<item>DDEBUGSUFFIX</item>
+<item>DFLAGPREFIX</item>
+<item>DFLAGSUFFIX</item>
+<item>DFLESUFFIX</item>
+<item>DLINK</item>
+<item>DLINKCOM</item>
+<item>DLIB</item>
+<item>DLIBCOM</item>
+<item>_DLINKLIBFLAGS</item>
+<item>_DLIBFLAGS</item>
+<item>DLINKFLAGS</item>
+<item>DLIBLINKPREFIX</item>
+<item>DLIBLINKSUFFIX</item>
+<item>DLIBFLAGPREFIX</item>
+<item>DLIBFLAGSUFFIX</item>
+<item>DLINKFLAGPREFIX</item>
+<item>DLINKFLAGSUFFIX</item>
+<item>LINKCOM</item>
+<item>ARCOM</item>
+<item>LIBS</item>
+<item>--></item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/__init__.py b/src/engine/SCons/Tool/docbook/__init__.py
new file mode 100644
index 0000000..72ea175
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/__init__.py
@@ -0,0 +1,877 @@
+
+"""SCons.Tool.docbook
+
+Tool-specific initialization for Docbook.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+
+"""
+
+#
+# Copyright (c) 2001-7,2010 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+import os
+import glob
+import re
+
+import SCons.Action
+import SCons.Builder
+import SCons.Defaults
+import SCons.Script
+import SCons.Tool
+import SCons.Util
+
+# Get full path to this script
+scriptpath = os.path.dirname(os.path.realpath(__file__))
+
+# Local folder for the collection of DocBook XSLs
+db_xsl_folder = 'docbook-xsl-1.76.1'
+
+# Do we have libxml2/libxslt/lxml?
+has_libxml2 = True
+has_lxml = True
+try:
+ import libxml2
+ import libxslt
+except:
+ has_libxml2 = False
+try:
+ import lxml
+except:
+ has_lxml = False
+
+# Set this to True, to prefer xsltproc over libxml2 and lxml
+prefer_xsltproc = False
+
+# Regexs for parsing Docbook XML sources of MAN pages
+re_manvolnum = re.compile("<manvolnum>([^<]*)</manvolnum>")
+re_refname = re.compile("<refname>([^<]*)</refname>")
+
+#
+# Helper functions
+#
+def __extend_targets_sources(target, source):
+ """ Prepare the lists of target and source files. """
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not source:
+ source = target[:]
+ elif not SCons.Util.is_List(source):
+ source = [source]
+ if len(target) < len(source):
+ target.extend(source[len(target):])
+
+ return target, source
+
+def __init_xsl_stylesheet(kw, env, user_xsl_var, default_path):
+ if kw.get('DOCBOOK_XSL','') == '':
+ xsl_style = kw.get('xsl', env.subst(user_xsl_var))
+ if xsl_style == '':
+ path_args = [scriptpath, db_xsl_folder] + default_path
+ xsl_style = os.path.join(*path_args)
+ kw['DOCBOOK_XSL'] = xsl_style
+
+def __select_builder(lxml_builder, libxml2_builder, cmdline_builder):
+ """ Selects a builder, based on which Python modules are present. """
+ if prefer_xsltproc:
+ return cmdline_builder
+
+ if not has_libxml2:
+ # At the moment we prefer libxml2 over lxml, the latter can lead
+ # to conflicts when installed together with libxml2.
+ if has_lxml:
+ return lxml_builder
+ else:
+ return cmdline_builder
+
+ return libxml2_builder
+
+def __ensure_suffix(t, suffix):
+ """ Ensure that the target t has the given suffix. """
+ tpath = str(t)
+ if not tpath.endswith(suffix):
+ return tpath+suffix
+
+ return t
+
+def __ensure_suffix_stem(t, suffix):
+ """ Ensure that the target t has the given suffix, and return the file's stem. """
+ tpath = str(t)
+ if not tpath.endswith(suffix):
+ stem = tpath
+ tpath += suffix
+
+ return tpath, stem
+ else:
+ stem, ext = os.path.splitext(tpath)
+
+ return t, stem
+
+def __get_xml_text(root):
+ """ Return the text for the given root node (xml.dom.minidom). """
+ txt = ""
+ for e in root.childNodes:
+ if (e.nodeType == e.TEXT_NODE):
+ txt += e.data
+ return txt
+
+def __create_output_dir(base_dir):
+ """ Ensure that the output directory base_dir exists. """
+ root, tail = os.path.split(base_dir)
+ dir = None
+ if tail:
+ if base_dir.endswith('/'):
+ dir = base_dir
+ else:
+ dir = root
+ else:
+ if base_dir.endswith('/'):
+ dir = base_dir
+
+ if dir and not os.path.isdir(dir):
+ os.makedirs(dir)
+
+
+#
+# Supported command line tools and their call "signature"
+#
+xsltproc_com = {'xsltproc' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE',
+ 'saxon' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS',
+ 'saxon-xslt' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS',
+ 'xalan' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -q -out $TARGET -xsl $DOCBOOK_XSL -in $SOURCE'}
+xmllint_com = {'xmllint' : '$DOCBOOK_XMLLINT $DOCBOOK_XMLLINTFLAGS --xinclude $SOURCE > $TARGET'}
+fop_com = {'fop' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -fo $SOURCE -pdf $TARGET',
+ 'xep' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -valid -fo $SOURCE -pdf $TARGET',
+ 'jw' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -f docbook -b pdf $SOURCE -o $TARGET'}
+
+def __detect_cl_tool(env, chainkey, cdict):
+ """
+ Helper function, picks a command line tool from the list
+ and initializes its environment variables.
+ """
+ if env.get(chainkey,'') == '':
+ clpath = ''
+ for cltool in cdict:
+ clpath = env.WhereIs(cltool)
+ if clpath:
+ env[chainkey] = clpath
+ if not env[chainkey + 'COM']:
+ env[chainkey + 'COM'] = cdict[cltool]
+
+def _detect(env):
+ """
+ Detect all the command line tools that we might need for creating
+ the requested output formats.
+ """
+ global prefer_xsltproc
+
+ if env.get('DOCBOOK_PREFER_XSLTPROC',''):
+ prefer_xsltproc = True
+
+ if ((not has_libxml2 and not has_lxml) or (prefer_xsltproc)):
+ # Try to find the XSLT processors
+ __detect_cl_tool(env, 'DOCBOOK_XSLTPROC', xsltproc_com)
+ __detect_cl_tool(env, 'DOCBOOK_XMLLINT', xmllint_com)
+
+ __detect_cl_tool(env, 'DOCBOOK_FOP', fop_com)
+
+#
+# Scanners
+#
+include_re = re.compile('fileref\\s*=\\s*["|\']([^\\n]*)["|\']')
+sentity_re = re.compile('<!ENTITY\\s+%*\\s*[^\\s]+\\s+SYSTEM\\s+["|\']([^\\n]*)["|\']>')
+
+def __xml_scan(node, env, path, arg):
+ """ Simple XML file scanner, detecting local images and XIncludes as implicit dependencies. """
+ # Does the node exist yet?
+ if not os.path.isfile(str(node)):
+ return []
+
+ if env.get('DOCBOOK_SCANENT',''):
+ # Use simple pattern matching for system entities..., no support
+ # for recursion yet.
+ contents = node.get_text_contents()
+ return sentity_re.findall(contents)
+
+ xsl_file = os.path.join(scriptpath,'utils','xmldepend.xsl')
+ if not has_libxml2 or prefer_xsltproc:
+ if has_lxml and not prefer_xsltproc:
+
+ from lxml import etree
+
+ xsl_tree = etree.parse(xsl_file)
+ doc = etree.parse(str(node))
+ result = doc.xslt(xsl_tree)
+
+ depfiles = [x.strip() for x in str(result).splitlines() if x.strip() != "" and not x.startswith("<?xml ")]
+ return depfiles
+ else:
+ # Try to call xsltproc
+ xsltproc = env.subst("$DOCBOOK_XSLTPROC")
+ if xsltproc and xsltproc.endswith('xsltproc'):
+ result = env.backtick(' '.join([xsltproc, xsl_file, str(node)]))
+ depfiles = [x.strip() for x in str(result).splitlines() if x.strip() != "" and not x.startswith("<?xml ")]
+ return depfiles
+ else:
+ # Use simple pattern matching, there is currently no support
+ # for xi:includes...
+ contents = node.get_text_contents()
+ return include_re.findall(contents)
+
+ styledoc = libxml2.parseFile(xsl_file)
+ style = libxslt.parseStylesheetDoc(styledoc)
+ doc = libxml2.parseFile(str(node))
+ result = style.applyStylesheet(doc, None)
+
+ depfiles = []
+ for x in str(result).splitlines():
+ if x.strip() != "" and not x.startswith("<?xml "):
+ depfiles.extend(x.strip().split())
+
+ style.freeStylesheet()
+ doc.freeDoc()
+ result.freeDoc()
+
+ return depfiles
+
+# Creating the instance of our XML dependency scanner
+docbook_xml_scanner = SCons.Script.Scanner(function = __xml_scan,
+ argument = None)
+
+
+#
+# Action generators
+#
+def __generate_xsltproc_action(source, target, env, for_signature):
+ cmd = env['DOCBOOK_XSLTPROCCOM']
+ # Does the environment have a base_dir defined?
+ base_dir = env.subst('$base_dir')
+ if base_dir:
+ # Yes, so replace target path by its filename
+ return cmd.replace('$TARGET','${TARGET.file}')
+ return cmd
+
+
+#
+# Emitters
+#
+def __emit_xsl_basedir(target, source, env):
+ # Does the environment have a base_dir defined?
+ base_dir = env.subst('$base_dir')
+ if base_dir:
+ # Yes, so prepend it to each target
+ return [os.path.join(base_dir, str(t)) for t in target], source
+
+ # No, so simply pass target and source names through
+ return target, source
+
+
+#
+# Builders
+#
+def __build_libxml2(target, source, env):
+ """
+ General XSLT builder (HTML/FO), using the libxml2 module.
+ """
+ xsl_style = env.subst('$DOCBOOK_XSL')
+ styledoc = libxml2.parseFile(xsl_style)
+ style = libxslt.parseStylesheetDoc(styledoc)
+ doc = libxml2.readFile(str(source[0]),None,libxml2.XML_PARSE_NOENT)
+ # Support for additional parameters
+ parampass = {}
+ if parampass:
+ result = style.applyStylesheet(doc, parampass)
+ else:
+ result = style.applyStylesheet(doc, None)
+ style.saveResultToFilename(str(target[0]), result, 0)
+ style.freeStylesheet()
+ doc.freeDoc()
+ result.freeDoc()
+
+ return None
+
+def __build_lxml(target, source, env):
+ """
+ General XSLT builder (HTML/FO), using the lxml module.
+ """
+ from lxml import etree
+
+ xslt_ac = etree.XSLTAccessControl(read_file=True,
+ write_file=True,
+ create_dir=True,
+ read_network=False,
+ write_network=False)
+ xsl_style = env.subst('$DOCBOOK_XSL')
+ xsl_tree = etree.parse(xsl_style)
+ transform = etree.XSLT(xsl_tree, access_control=xslt_ac)
+ doc = etree.parse(str(source[0]))
+ # Support for additional parameters
+ parampass = {}
+ if parampass:
+ result = transform(doc, **parampass)
+ else:
+ result = transform(doc)
+
+ try:
+ of = open(str(target[0]), "w")
+ of.write(of.write(etree.tostring(result, pretty_print=True)))
+ of.close()
+ except:
+ pass
+
+ return None
+
+def __xinclude_libxml2(target, source, env):
+ """
+ Resolving XIncludes, using the libxml2 module.
+ """
+ doc = libxml2.readFile(str(source[0]), None, libxml2.XML_PARSE_NOENT)
+ doc.xincludeProcess()
+ doc.saveFile(str(target[0]))
+ doc.freeDoc()
+
+ return None
+
+def __xinclude_lxml(target, source, env):
+ """
+ Resolving XIncludes, using the lxml module.
+ """
+ from lxml import etree
+
+ doc = etree.parse(str(source[0]))
+ doc.xinclude()
+ try:
+ doc.write(str(target[0]), xml_declaration=True,
+ encoding="UTF-8", pretty_print=True)
+ except:
+ pass
+
+ return None
+
+__libxml2_builder = SCons.Builder.Builder(
+ action = __build_libxml2,
+ src_suffix = '.xml',
+ source_scanner = docbook_xml_scanner,
+ emitter = __emit_xsl_basedir)
+__lxml_builder = SCons.Builder.Builder(
+ action = __build_lxml,
+ src_suffix = '.xml',
+ source_scanner = docbook_xml_scanner,
+ emitter = __emit_xsl_basedir)
+
+__xinclude_libxml2_builder = SCons.Builder.Builder(
+ action = __xinclude_libxml2,
+ suffix = '.xml',
+ src_suffix = '.xml',
+ source_scanner = docbook_xml_scanner)
+__xinclude_lxml_builder = SCons.Builder.Builder(
+ action = __xinclude_lxml,
+ suffix = '.xml',
+ src_suffix = '.xml',
+ source_scanner = docbook_xml_scanner)
+
+__xsltproc_builder = SCons.Builder.Builder(
+ action = SCons.Action.CommandGeneratorAction(__generate_xsltproc_action,
+ {'cmdstr' : '$DOCBOOK_XSLTPROCCOMSTR'}),
+ src_suffix = '.xml',
+ source_scanner = docbook_xml_scanner,
+ emitter = __emit_xsl_basedir)
+__xmllint_builder = SCons.Builder.Builder(
+ action = SCons.Action.Action('$DOCBOOK_XMLLINTCOM','$DOCBOOK_XMLLINTCOMSTR'),
+ suffix = '.xml',
+ src_suffix = '.xml',
+ source_scanner = docbook_xml_scanner)
+__fop_builder = SCons.Builder.Builder(
+ action = SCons.Action.Action('$DOCBOOK_FOPCOM','$DOCBOOK_FOPCOMSTR'),
+ suffix = '.pdf',
+ src_suffix = '.fo',
+ ensure_suffix=1)
+
+def DocbookEpub(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for ePub output.
+ """
+ import zipfile
+ import shutil
+
+ def build_open_container(target, source, env):
+ """Generate the *.epub file from intermediate outputs
+
+ Constructs the epub file according to the Open Container Format. This
+ function could be replaced by a call to the SCons Zip builder if support
+ was added for different compression formats for separate source nodes.
+ """
+ zf = zipfile.ZipFile(str(target[0]), 'w')
+ mime_file = open('mimetype', 'w')
+ mime_file.write('application/epub+zip')
+ mime_file.close()
+ zf.write(mime_file.name, compress_type = zipfile.ZIP_STORED)
+ for s in source:
+ for dirpath, dirnames, filenames in os.walk(str(s)):
+ for fname in filenames:
+ path = os.path.join(dirpath, fname)
+ if os.path.isfile(path):
+ zf.write(path, os.path.relpath(path, str(env.get('ZIPROOT', ''))),
+ zipfile.ZIP_DEFLATED)
+ zf.close()
+
+ def add_resources(target, source, env):
+ """Add missing resources to the OEBPS directory
+
+ Ensure all the resources in the manifest are present in the OEBPS directory.
+ """
+ hrefs = []
+ content_file = os.path.join(source[0].abspath, 'content.opf')
+ if not os.path.isfile(content_file):
+ return
+
+ hrefs = []
+ if has_libxml2:
+ nsmap = {'opf' : 'http://www.idpf.org/2007/opf'}
+ # Read file and resolve entities
+ doc = libxml2.readFile(content_file, None, 0)
+ opf = doc.getRootElement()
+ # Create xpath context
+ xpath_context = doc.xpathNewContext()
+ # Register namespaces
+ for key, val in nsmap.iteritems():
+ xpath_context.xpathRegisterNs(key, val)
+
+ if hasattr(opf, 'xpathEval') and xpath_context:
+ # Use the xpath context
+ xpath_context.setContextNode(opf)
+ items = xpath_context.xpathEval(".//opf:item")
+ else:
+ items = opf.findall(".//{'http://www.idpf.org/2007/opf'}item")
+
+ for item in items:
+ if hasattr(item, 'prop'):
+ hrefs.append(item.prop('href'))
+ else:
+ hrefs.append(item.attrib['href'])
+
+ doc.freeDoc()
+ xpath_context.xpathFreeContext()
+ elif has_lxml:
+ from lxml import etree
+
+ opf = etree.parse(content_file)
+ # All the opf:item elements are resources
+ for item in opf.xpath('//opf:item',
+ namespaces= { 'opf': 'http://www.idpf.org/2007/opf' }):
+ hrefs.append(item.attrib['href'])
+
+ for href in hrefs:
+ # If the resource was not already created by DocBook XSL itself,
+ # copy it into the OEBPS folder
+ referenced_file = os.path.join(source[0].abspath, href)
+ if not os.path.exists(referenced_file):
+ shutil.copy(href, os.path.join(source[0].abspath, href))
+
+ # Init list of targets/sources
+ target, source = __extend_targets_sources(target, source)
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_EPUB', ['epub','docbook.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Create targets
+ result = []
+ if not env.GetOption('clean'):
+ # Ensure that the folders OEBPS and META-INF exist
+ __create_output_dir('OEBPS/')
+ __create_output_dir('META-INF/')
+ dirs = env.Dir(['OEBPS', 'META-INF'])
+
+ # Set the fixed base_dir
+ kw['base_dir'] = 'OEBPS/'
+ tocncx = __builder.__call__(env, 'toc.ncx', source[0], **kw)
+ cxml = env.File('META-INF/container.xml')
+ env.SideEffect(cxml, tocncx)
+
+ env.Depends(tocncx, kw['DOCBOOK_XSL'])
+ result.extend(tocncx+[cxml])
+
+ container = env.Command(__ensure_suffix(str(target[0]), '.epub'),
+ tocncx+[cxml], [add_resources, build_open_container])
+ mimetype = env.File('mimetype')
+ env.SideEffect(mimetype, container)
+
+ result.extend(container)
+ # Add supporting files for cleanup
+ env.Clean(tocncx, dirs)
+
+ return result
+
+def DocbookHtml(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for HTML output.
+ """
+ # Init list of targets/sources
+ target, source = __extend_targets_sources(target, source)
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_HTML', ['html','docbook.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Create targets
+ result = []
+ for t,s in zip(target,source):
+ r = __builder.__call__(env, __ensure_suffix(t,'.html'), s, **kw)
+ env.Depends(r, kw['DOCBOOK_XSL'])
+ result.extend(r)
+
+ return result
+
+def DocbookHtmlChunked(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for chunked HTML output.
+ """
+ # Init target/source
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not source:
+ source = target
+ target = ['index.html']
+ elif not SCons.Util.is_List(source):
+ source = [source]
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_HTMLCHUNKED', ['html','chunkfast.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Detect base dir
+ base_dir = kw.get('base_dir', '')
+ if base_dir:
+ __create_output_dir(base_dir)
+
+ # Create targets
+ result = []
+ r = __builder.__call__(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
+ env.Depends(r, kw['DOCBOOK_XSL'])
+ result.extend(r)
+ # Add supporting files for cleanup
+ env.Clean(r, glob.glob(os.path.join(base_dir, '*.html')))
+
+ return result
+
+
+def DocbookHtmlhelp(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for HTMLHELP output.
+ """
+ # Init target/source
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not source:
+ source = target
+ target = ['index.html']
+ elif not SCons.Util.is_List(source):
+ source = [source]
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_HTMLHELP', ['htmlhelp','htmlhelp.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Detect base dir
+ base_dir = kw.get('base_dir', '')
+ if base_dir:
+ __create_output_dir(base_dir)
+
+ # Create targets
+ result = []
+ r = __builder.__call__(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
+ env.Depends(r, kw['DOCBOOK_XSL'])
+ result.extend(r)
+ # Add supporting files for cleanup
+ env.Clean(r, ['toc.hhc', 'htmlhelp.hhp', 'index.hhk'] +
+ glob.glob(os.path.join(base_dir, '[ar|bk|ch]*.html')))
+
+ return result
+
+def DocbookPdf(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for PDF output.
+ """
+ # Init list of targets/sources
+ target, source = __extend_targets_sources(target, source)
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_PDF', ['fo','docbook.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Create targets
+ result = []
+ for t,s in zip(target,source):
+ t, stem = __ensure_suffix_stem(t, '.pdf')
+ xsl = __builder.__call__(env, stem+'.fo', s, **kw)
+ result.extend(xsl)
+ env.Depends(xsl, kw['DOCBOOK_XSL'])
+ result.extend(__fop_builder.__call__(env, t, xsl, **kw))
+
+ return result
+
+def DocbookMan(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for Man page output.
+ """
+ # Init list of targets/sources
+ target, source = __extend_targets_sources(target, source)
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_MAN', ['manpages','docbook.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Create targets
+ result = []
+ for t,s in zip(target,source):
+ volnum = "1"
+ outfiles = []
+ srcfile = __ensure_suffix(str(s),'.xml')
+ if os.path.isfile(srcfile):
+ try:
+ import xml.dom.minidom
+
+ dom = xml.dom.minidom.parse(__ensure_suffix(str(s),'.xml'))
+ # Extract volume number, default is 1
+ for node in dom.getElementsByTagName('refmeta'):
+ for vol in node.getElementsByTagName('manvolnum'):
+ volnum = __get_xml_text(vol)
+
+ # Extract output filenames
+ for node in dom.getElementsByTagName('refnamediv'):
+ for ref in node.getElementsByTagName('refname'):
+ outfiles.append(__get_xml_text(ref)+'.'+volnum)
+
+ except:
+ # Use simple regex parsing
+ f = open(__ensure_suffix(str(s),'.xml'), 'r')
+ content = f.read()
+ f.close()
+
+ for m in re_manvolnum.finditer(content):
+ volnum = m.group(1)
+
+ for m in re_refname.finditer(content):
+ outfiles.append(m.group(1)+'.'+volnum)
+
+ if not outfiles:
+ # Use stem of the source file
+ spath = str(s)
+ if not spath.endswith('.xml'):
+ outfiles.append(spath+'.'+volnum)
+ else:
+ stem, ext = os.path.splitext(spath)
+ outfiles.append(stem+'.'+volnum)
+ else:
+ # We have to completely rely on the given target name
+ outfiles.append(t)
+
+ __builder.__call__(env, outfiles[0], s, **kw)
+ env.Depends(outfiles[0], kw['DOCBOOK_XSL'])
+ result.append(outfiles[0])
+ if len(outfiles) > 1:
+ env.Clean(outfiles[0], outfiles[1:])
+
+
+ return result
+
+def DocbookSlidesPdf(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for PDF slides output.
+ """
+ # Init list of targets/sources
+ target, source = __extend_targets_sources(target, source)
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_SLIDESPDF', ['slides','fo','plain.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Create targets
+ result = []
+ for t,s in zip(target,source):
+ t, stem = __ensure_suffix_stem(t, '.pdf')
+ xsl = __builder.__call__(env, stem+'.fo', s, **kw)
+ env.Depends(xsl, kw['DOCBOOK_XSL'])
+ result.extend(xsl)
+ result.extend(__fop_builder.__call__(env, t, xsl, **kw))
+
+ return result
+
+def DocbookSlidesHtml(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, providing a Docbook toolchain for HTML slides output.
+ """
+ # Init list of targets/sources
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not source:
+ source = target
+ target = ['index.html']
+ elif not SCons.Util.is_List(source):
+ source = [source]
+
+ # Init XSL stylesheet
+ __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_SLIDESHTML', ['slides','html','plain.xsl'])
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Detect base dir
+ base_dir = kw.get('base_dir', '')
+ if base_dir:
+ __create_output_dir(base_dir)
+
+ # Create targets
+ result = []
+ r = __builder.__call__(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw)
+ env.Depends(r, kw['DOCBOOK_XSL'])
+ result.extend(r)
+ # Add supporting files for cleanup
+ env.Clean(r, [os.path.join(base_dir, 'toc.html')] +
+ glob.glob(os.path.join(base_dir, 'foil*.html')))
+
+ return result
+
+def DocbookXInclude(env, target, source, *args, **kw):
+ """
+ A pseudo-Builder, for resolving XIncludes in a separate processing step.
+ """
+ # Init list of targets/sources
+ target, source = __extend_targets_sources(target, source)
+
+ # Setup builder
+ __builder = __select_builder(__xinclude_lxml_builder,__xinclude_libxml2_builder,__xmllint_builder)
+
+ # Create targets
+ result = []
+ for t,s in zip(target,source):
+ result.extend(__builder.__call__(env, t, s, **kw))
+
+ return result
+
+def DocbookXslt(env, target, source=None, *args, **kw):
+ """
+ A pseudo-Builder, applying a simple XSL transformation to the input file.
+ """
+ # Init list of targets/sources
+ target, source = __extend_targets_sources(target, source)
+
+ # Init XSL stylesheet
+ kw['DOCBOOK_XSL'] = kw.get('xsl', 'transform.xsl')
+
+ # Setup builder
+ __builder = __select_builder(__lxml_builder, __libxml2_builder, __xsltproc_builder)
+
+ # Create targets
+ result = []
+ for t,s in zip(target,source):
+ r = __builder.__call__(env, t, s, **kw)
+ env.Depends(r, kw['DOCBOOK_XSL'])
+ result.extend(r)
+
+ return result
+
+
+def generate(env):
+ """Add Builders and construction variables for docbook to an Environment."""
+
+ env.SetDefault(
+ # Default names for customized XSL stylesheets
+ DOCBOOK_DEFAULT_XSL_EPUB = '',
+ DOCBOOK_DEFAULT_XSL_HTML = '',
+ DOCBOOK_DEFAULT_XSL_HTMLCHUNKED = '',
+ DOCBOOK_DEFAULT_XSL_HTMLHELP = '',
+ DOCBOOK_DEFAULT_XSL_PDF = '',
+ DOCBOOK_DEFAULT_XSL_MAN = '',
+ DOCBOOK_DEFAULT_XSL_SLIDESPDF = '',
+ DOCBOOK_DEFAULT_XSL_SLIDESHTML = '',
+
+ # Paths to the detected executables
+ DOCBOOK_XSLTPROC = '',
+ DOCBOOK_XMLLINT = '',
+ DOCBOOK_FOP = '',
+
+ # Additional flags for the text processors
+ DOCBOOK_XSLTPROCFLAGS = SCons.Util.CLVar(''),
+ DOCBOOK_XMLLINTFLAGS = SCons.Util.CLVar(''),
+ DOCBOOK_FOPFLAGS = SCons.Util.CLVar(''),
+ DOCBOOK_XSLTPROCPARAMS = SCons.Util.CLVar(''),
+
+ # Default command lines for the detected executables
+ DOCBOOK_XSLTPROCCOM = xsltproc_com['xsltproc'],
+ DOCBOOK_XMLLINTCOM = xmllint_com['xmllint'],
+ DOCBOOK_FOPCOM = fop_com['fop'],
+
+ # Screen output for the text processors
+ DOCBOOK_XSLTPROCCOMSTR = None,
+ DOCBOOK_XMLLINTCOMSTR = None,
+ DOCBOOK_FOPCOMSTR = None,
+
+ )
+ _detect(env)
+
+ try:
+ env.AddMethod(DocbookEpub, "DocbookEpub")
+ env.AddMethod(DocbookHtml, "DocbookHtml")
+ env.AddMethod(DocbookHtmlChunked, "DocbookHtmlChunked")
+ env.AddMethod(DocbookHtmlhelp, "DocbookHtmlhelp")
+ env.AddMethod(DocbookPdf, "DocbookPdf")
+ env.AddMethod(DocbookMan, "DocbookMan")
+ env.AddMethod(DocbookSlidesPdf, "DocbookSlidesPdf")
+ env.AddMethod(DocbookSlidesHtml, "DocbookSlidesHtml")
+ env.AddMethod(DocbookXInclude, "DocbookXInclude")
+ env.AddMethod(DocbookXslt, "DocbookXslt")
+ except AttributeError:
+ # Looks like we use a pre-0.98 version of SCons...
+ from SCons.Script.SConscript import SConsEnvironment
+ SConsEnvironment.DocbookEpub = DocbookEpub
+ SConsEnvironment.DocbookHtml = DocbookHtml
+ SConsEnvironment.DocbookHtmlChunked = DocbookHtmlChunked
+ SConsEnvironment.DocbookHtmlhelp = DocbookHtmlhelp
+ SConsEnvironment.DocbookPdf = DocbookPdf
+ SConsEnvironment.DocbookMan = DocbookMan
+ SConsEnvironment.DocbookSlidesPdf = DocbookSlidesPdf
+ SConsEnvironment.DocbookSlidesHtml = DocbookSlidesHtml
+ SConsEnvironment.DocbookXInclude = DocbookXInclude
+ SConsEnvironment.DocbookXslt = DocbookXslt
+
+
+def exists(env):
+ return 1
diff --git a/src/engine/SCons/Tool/docbook/__init__.xml b/src/engine/SCons/Tool/docbook/__init__.xml
new file mode 100644
index 0000000..1bb1e48
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/__init__.xml
@@ -0,0 +1,608 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+
+This file is processed by the bin/SConsDoc.py module.
+See its __doc__ string for a discussion of the format.
+-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+<tool name="docbook">
+<summary>
+<para>This tool tries to make working with Docbook in SCons a little easier.
+It provides several toolchains for creating different output formats,
+like HTML or PDF. Contained in the package is
+a distribution of the Docbook XSL stylesheets as of version 1.76.1.
+As long as you don't specify your own stylesheets for customization,
+these official versions are picked as default...which should reduce
+the inevitable setup hassles for you.
+</para>
+<para>Implicit dependencies to images and XIncludes are detected automatically
+if you meet the HTML requirements. The additional
+stylesheet <filename>utils/xmldepend.xsl</filename> by Paul DuBois is used for this purpose.
+</para>
+<para>Note, that there is no support for XML catalog resolving offered! This tool calls
+the XSLT processors and PDF renderers with the stylesheets you specified, that's it.
+The rest lies in your hands and you still have to know what you're doing when
+resolving names via a catalog.
+</para>
+<para>For activating the tool "docbook", you have to add its name to the Environment constructor,
+like this
+</para>
+<screen>env = Environment(tools=['docbook'])
+</screen>
+<para>On its startup, the Docbook tool tries to find a required <literal>xsltproc</literal> processor, and
+a PDF renderer, e.g. <literal>fop</literal>. So make sure that these are added to your system's environment
+<literal>PATH</literal> and can be called directly, without specifying their full path.
+</para>
+<para>For the most basic processing of Docbook to HTML, you need to have installed
+</para>
+<itemizedlist><listitem><para>the Python <literal>lxml</literal> binding to <literal>libxml2</literal>, or
+</para>
+</listitem>
+<listitem><para>the direct Python bindings for <literal>libxml2/libxslt</literal>, or
+</para>
+</listitem>
+<listitem><para>a standalone XSLT processor, currently detected are <literal>xsltproc</literal>, <literal>saxon</literal>, <literal>saxon-xslt</literal>
+and <literal>xalan</literal>.
+</para>
+</listitem>
+</itemizedlist>
+<para>Rendering to PDF requires you to have one of the applications
+<literal>fop</literal> or <literal>xep</literal> installed.
+</para>
+
+<para>Creating a HTML or PDF document is very simple and straightforward. Say
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml('manual.html', 'manual.xml')
+env.DocbookPdf('manual.pdf', 'manual.xml')
+</screen>
+<para>to get both outputs from your XML source <filename>manual.xml</filename>. As a shortcut, you can
+give the stem of the filenames alone, like this:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml('manual')
+env.DocbookPdf('manual')
+</screen>
+<para>and get the same result. Target and source lists are also supported:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml(['manual.html','reference.html'], ['manual.xml','reference.xml'])
+</screen>
+<para>or even
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml(['manual','reference'])
+</screen>
+<important><para>Whenever you leave out the list of sources, you may not specify a file extension! The
+Tool uses the given names as file stems, and adds the suffixes for target and source files
+accordingly.
+</para>
+</important>
+<para>The rules given above are valid for the Builders &b-link-DocbookHtml;,
+&b-link-DocbookPdf;, &b-link-DocbookEpub;, &b-link-DocbookSlidesPdf; and &b-link-DocbookXInclude;. For the
+&b-link-DocbookMan; transformation you
+can specify a target name, but the actual output names are automatically
+set from the <literal>refname</literal> entries in your XML source.
+</para>
+
+<para>The Builders &b-link-DocbookHtmlChunked;, &b-link-DocbookHtmlhelp; and
+&b-link-DocbookSlidesHtml; are special, in that:
+</para>
+<orderedlist><listitem><para>they create a large set of files, where the exact names and their number depend
+on the content of the source file, and
+</para>
+</listitem>
+<listitem><para>the main target is always named <filename>index.html</filename>, i.e. the output name for the
+XSL transformation is not picked up by the stylesheets.
+</para>
+</listitem>
+</orderedlist>
+<para>As a result, there is simply no use in specifying a target HTML name.
+So the basic syntax for these builders is always:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual')
+</screen>
+
+<para>If you want to use a specific XSL file, you can set the
+additional <literal>xsl</literal> parameter to your
+Builder call as follows:
+</para>
+<screen>env.DocbookHtml('other.html', 'manual.xml', xsl='html.xsl')
+</screen>
+<para>Since this may get tedious if you always use the same local naming for your customized XSL files,
+e.g. <filename>html.xsl</filename> for HTML and <filename>pdf.xsl</filename> for PDF output, a set of
+variables for setting the default XSL name is provided. These are:
+</para>
+<screen>DOCBOOK_DEFAULT_XSL_HTML
+DOCBOOK_DEFAULT_XSL_HTMLCHUNKED
+DOCBOOK_DEFAULT_XSL_HTMLHELP
+DOCBOOK_DEFAULT_XSL_PDF
+DOCBOOK_DEFAULT_XSL_EPUB
+DOCBOOK_DEFAULT_XSL_MAN
+DOCBOOK_DEFAULT_XSL_SLIDESPDF
+DOCBOOK_DEFAULT_XSL_SLIDESHTML
+</screen>
+<para>and you can set them when constructing your environment:
+</para>
+<screen>env = Environment(tools=['docbook'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+env.DocbookHtml('manual') # now uses html.xsl
+</screen>
+</summary>
+<sets>
+<item>DOCBOOK_DEFAULT_XSL_HTML</item>
+<item>DOCBOOK_DEFAULT_XSL_HTMLCHUNKED</item>
+<item>DOCBOOK_DEFAULT_XSL_HTMLHELP</item>
+<item>DOCBOOK_DEFAULT_XSL_PDF</item>
+<item>DOCBOOK_DEFAULT_XSL_EPUB</item>
+<item>DOCBOOK_DEFAULT_XSL_MAN</item>
+<item>DOCBOOK_DEFAULT_XSL_SLIDESPDF</item>
+<item>DOCBOOK_DEFAULT_XSL_SLIDESHTML</item>
+<item>DOCBOOK_XSLTPROC</item>
+<item>DOCBOOK_XMLLINT</item>
+<item>DOCBOOK_FOP</item>
+<item>DOCBOOK_XSLTPROCFLAGS</item>
+<item>DOCBOOK_XMLLINTFLAGS</item>
+<item>DOCBOOK_FOPFLAGS</item>
+<item>DOCBOOK_XSLTPROCPARAMS</item>
+<item>DOCBOOK_XSLTPROCCOM</item>
+<item>DOCBOOK_XMLLINTCOM</item>
+<item>DOCBOOK_FOPCOM</item>
+</sets>
+<uses>
+<item>DOCBOOK_XSLTPROCCOMSTR</item>
+<item>DOCBOOK_XMLLINTCOMSTR</item>
+<item>DOCBOOK_FOPCOMSTR</item>
+</uses>
+</tool>
+
+
+<cvar name="DOCBOOK_DEFAULT_XSL_HTML">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookHtml; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+
+<cvar name="DOCBOOK_DEFAULT_XSL_HTMLCHUNKED">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookHtmlChunked; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_DEFAULT_XSL_HTMLHELP">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookHtmlhelp; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_DEFAULT_XSL_PDF">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookPdf; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_DEFAULT_XSL_EPUB">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookEpub; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_DEFAULT_XSL_MAN">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookMan; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_DEFAULT_XSL_SLIDESPDF">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookSlidesPdf; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_DEFAULT_XSL_SLIDESHTML">
+<summary>
+<para>
+The default XSLT file for the &b-link-DocbookSlidesHtml; builder within the
+current environment, if no other XSLT gets specified via keyword.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XSLTPROC">
+<summary>
+<para>
+The path to the external executable <literal>xsltproc</literal>
+(or <literal>saxon</literal>, <literal>xalan</literal>), if one of them
+is installed.
+Note, that this is only used as last fallback for XSL transformations, if
+no libxml2 or lxml Python binding can be imported in the current system.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XMLLINT">
+<summary>
+<para>
+The path to the external executable <literal>xmllint</literal>, if it's installed.
+Note, that this is only used as last fallback for resolving
+XIncludes, if no libxml2 or lxml Python binding can be imported
+in the current system.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_FOP">
+<summary>
+<para>
+The path to the PDF renderer <literal>fop</literal> or <literal>xep</literal>,
+if one of them is installed (<literal>fop</literal> gets checked first).
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XSLTPROCFLAGS">
+<summary>
+<para>
+Additonal command-line flags for the external executable
+<literal>xsltproc</literal> (or <literal>saxon</literal>,
+<literal>xalan</literal>).
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XMLLINTFLAGS">
+<summary>
+<para>
+Additonal command-line flags for the external executable
+<literal>xmllint</literal>.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_FOPFLAGS">
+<summary>
+<para>
+Additonal command-line flags for the
+PDF renderer <literal>fop</literal> or <literal>xep</literal>.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XSLTPROCPARAMS">
+<summary>
+<para>
+Additonal parameters that are not intended for the XSLT processor executable, but
+the XSL processing itself. By default, they get appended at the end of the command line
+for <literal>saxon</literal> and <literal>saxon-xslt</literal>, respectively.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XSLTPROCCOM">
+<summary>
+<para>
+The full command-line for the external executable
+<literal>xsltproc</literal> (or <literal>saxon</literal>,
+<literal>xalan</literal>).
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XMLLINTCOM">
+<summary>
+<para>
+The full command-line for the external executable
+<literal>xmllint</literal>.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_FOPCOM">
+<summary>
+<para>
+The full command-line for the
+PDF renderer <literal>fop</literal> or <literal>xep</literal>.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XSLTPROCCOMSTR">
+<summary>
+<para>
+The string displayed when <literal>xsltproc</literal> is used to transform
+an XML file via a given XSLT stylesheet.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_XMLLINTCOMSTR">
+<summary>
+<para>
+The string displayed when <literal>xmllint</literal> is used to resolve
+XIncludes for a given XML file.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DOCBOOK_FOPCOMSTR">
+<summary>
+<para>
+The string displayed when a renderer like <literal>fop</literal> or
+<literal>xep</literal> is used to create PDF output from an XML file.
+</para>
+</summary>
+</cvar>
+
+<builder name="DocbookHtml">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for HTML output.
+</para>
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookHtml('manual.html', 'manual.xml')
+</example_commands>
+<para>
+or simply
+</para>
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookHtml('manual')
+</example_commands>
+</summary>
+</builder>
+
+<builder name="DocbookHtmlChunked">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for chunked HTML output.
+It supports the <literal>base.dir</literal> parameter. The
+<filename>chunkfast.xsl</filename> file (requires &quot;EXSLT&quot;) is used as the
+default stylesheet. Basic syntax:
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookHtmlChunked('manual')
+</example_commands>
+<para>
+where <filename>manual.xml</filename> is the input file.
+</para>
+<para>If you use the <literal>root.filename</literal>
+parameter in your own stylesheets you have to specify the new target name.
+This ensures that the dependencies get correct, especially for the cleanup via <quote><literal>scons -c</literal></quote>:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlChunked('mymanual.html', 'manual', xsl='htmlchunk.xsl')
+</screen>
+<para>Some basic support for the <literal>base.dir</literal> is provided. You
+can add the <literal>base_dir</literal> keyword to your Builder
+call, and the given prefix gets prepended to all the created filenames:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlChunked('manual', xsl='htmlchunk.xsl', base_dir='output/')
+</screen>
+<para>Make sure that you don't forget the trailing slash for the base folder, else
+your files get renamed only!
+</para>
+</summary>
+</builder>
+
+<builder name="DocbookHtmlhelp">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for HTMLHELP output.
+Its basic syntax is:
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual')
+</example_commands>
+<para>
+where <filename>manual.xml</filename> is the input file.
+</para>
+
+<para>If you use the <literal>root.filename</literal>
+parameter in your own stylesheets you have to specify the new target name.
+This ensures that the dependencies get correct, especially for the cleanup via <quote><literal>scons -c</literal></quote>:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('mymanual.html', 'manual', xsl='htmlhelp.xsl')
+</screen>
+<para>Some basic support for the <literal>base.dir</literal> parameter
+is provided. You can add the <literal>base_dir</literal> keyword to
+your Builder call, and the given prefix gets prepended to all the
+created filenames:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual', xsl='htmlhelp.xsl', base_dir='output/')
+</screen>
+<para>Make sure that you don't forget the trailing slash for the base folder, else
+your files get renamed only!
+</para>
+
+</summary>
+</builder>
+
+<builder name="DocbookPdf">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for PDF output.
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookPdf('manual.pdf', 'manual.xml')
+</example_commands>
+
+<para>
+or simply
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookPdf('manual')
+</example_commands>
+
+</summary>
+</builder>
+
+<builder name="DocbookEpub">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for EPUB output.
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookEpub('manual.epub', 'manual.xml')
+</example_commands>
+
+<para>
+or simply
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookEpub('manual')
+</example_commands>
+
+</summary>
+</builder>
+
+<builder name="DocbookMan">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for Man page output.
+Its basic syntax is:
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookMan('manual')
+</example_commands>
+<para>
+where <filename>manual.xml</filename> is the input file. Note, that
+you can specify a target name, but the actual output names are automatically
+set from the <literal>refname</literal> entries in your XML source.
+</para>
+</summary>
+</builder>
+
+<builder name="DocbookSlidesPdf">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for PDF slides output.
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookSlidesPdf('manual.pdf', 'manual.xml')
+</example_commands>
+
+<para>
+or simply
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookSlidesPdf('manual')
+</example_commands>
+</summary>
+</builder>
+
+<builder name="DocbookSlidesHtml">
+<summary>
+<para>
+A pseudo-Builder, providing a Docbook toolchain for HTML slides output.
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookSlidesHtml('manual')
+</example_commands>
+
+<para>If you use the <literal>titlefoil.html</literal> parameter in
+your own stylesheets you have to give the new target name. This ensures
+that the dependencies get correct, especially for the cleanup via
+<quote><literal>scons -c</literal></quote>:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookSlidesHtml('mymanual.html','manual', xsl='slideshtml.xsl')
+</screen>
+
+<para>Some basic support for the <literal>base.dir</literal> parameter
+is provided. You
+can add the <literal>base_dir</literal> keyword to your Builder
+call, and the given prefix gets prepended to all the created filenames:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookSlidesHtml('manual', xsl='slideshtml.xsl', base_dir='output/')
+</screen>
+<para>Make sure that you don't forget the trailing slash for the base folder, else
+your files get renamed only!
+</para>
+
+</summary>
+</builder>
+
+<builder name="DocbookXInclude">
+<summary>
+<para>
+A pseudo-Builder, for resolving XIncludes in a separate processing step.
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookXInclude('manual_xincluded.xml', 'manual.xml')
+</example_commands>
+</summary>
+</builder>
+
+<builder name="DocbookXslt">
+<summary>
+<para>
+A pseudo-Builder, applying a given XSL transformation to the input file.
+</para>
+
+<example_commands>env = Environment(tools=['docbook'])
+env.DocbookXslt('manual_transformed.xml', 'manual.xml', xsl='transform.xslt')
+</example_commands>
+
+<para>Note, that this builder requires the <literal>xsl</literal> parameter
+to be set.
+</para>
+</summary>
+</builder>
+
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.CatalogManager.properties.example b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.CatalogManager.properties.example
new file mode 100644
index 0000000..23434e1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.CatalogManager.properties.example
@@ -0,0 +1,61 @@
+########################################################################
+# CatalogManager provides an interface to the catalog properties.
+# Properties can come from two places: from system properties or
+# from a CatalogManager.properties file. This class provides a
+# transparent interface to both, with system properties preferred
+# over property file values.
+
+#######################################################################
+# Catalog Files:
+# The semicolon-delimited list of catalog files.
+# Example: catalogs=/etc/xml/catalog;~/catalog.xml
+
+catalogs=
+
+#######################################################################
+# Relative Catalogs:
+# If false, relative catalog URIs are made absolute with respect to the
+# base URI of the CatalogManager.properties file. This setting only
+# applies to catalog URIs obtained from the catalogs property in the
+# CatalogManager.properties file
+# Example: relative-catalogs = [yes|no]
+
+relative-catalogs=yes
+
+#######################################################################
+# Verbosity:
+# If non-zero, the Catalog classes will print informative and debugging
+# messages. The higher the number, the more messages.
+# Example: verbosity = [0..99]
+
+verbosity=0
+
+#######################################################################
+# Prefer:
+# Which identifier is preferred, "public" or "system"?
+# Example: xml.catalog.prefer = [public|system]
+
+prefer=system
+
+#######################################################################
+# Static-catalog:
+# Should a single catalog be constructed for all parsing, or should a
+# different catalog be created for each parser?
+# Example: static-catalog = [yes|no]
+
+static-catalog=yes
+
+#######################################################################
+# Allow-oasis-xml-catalog-pi
+# If the source document contains "oasis-xml-catalog" processing
+# instructions, should they be used?
+# Example: allow-oasis-xml-catalog-pi = [yes|no]
+
+allow-oasis-xml-catalog-pi=yes
+
+#######################################################################
+# catalog-class-name
+# If you're using the convenience classes
+# org.apache.xml.resolver.tools.*, this setting allows you to specify
+# an alternate class name to use for the underlying catalog.
+# Example: catalog-class-name=org.apache.xml.resolver.Resolver
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.urilist b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.urilist
new file mode 100644
index 0000000..2751d8d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/.urilist
@@ -0,0 +1 @@
+. http://docbook.sourceforge.net/release/xsl/current/
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS
new file mode 100644
index 0000000..9c3dcdc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS
@@ -0,0 +1,4 @@
+The DocBook XSL stylesheets are maintained by Norman Walsh,
+<ndw@nwalsh.com>, and members of the DocBook Project,
+<docbook-developers@sf.net>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS
new file mode 100644
index 0000000..b3c7867
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS
@@ -0,0 +1,21 @@
+To view a list of all open DocBook Project XSL stylesheet bugs:
+
+ http://docbook.sf.net/tracker/xsl/bugs
+
+To submit a bug report against the stylesheets:
+
+ http://docbook.sf.net/tracker/submit/bug
+
+To do a full-text search of all DocBook Project issues:
+
+ http://docbook.sf.net/tracker/search
+
+Discussion about the DocBook Project XSL stylesheets takes place
+on the docbook-apps mailing list:
+
+ http://wiki.docbook.org/topic/DocBookAppsMailingList
+
+Real-time discussion takes place on IRC:
+
+ http://wiki.docbook.org/topic/DocBookIrcChannel
+ irc://irc.freenode.net/docbook
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING
new file mode 100644
index 0000000..46bc120
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING
@@ -0,0 +1,47 @@
+Copyright
+---------
+Copyright (C) 1999-2007 Norman Walsh
+Copyright (C) 2003 Jiří Kosek
+Copyright (C) 2004-2007 Steve Ball
+Copyright (C) 2005-2008 The DocBook Project
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the ``Software''), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+Except as contained in this notice, the names of individuals
+credited with contribution to this software shall not be used in
+advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization
+from the individuals in question.
+
+Any stylesheet derived from this Software that is publically
+distributed will be identified with a different name and the
+version strings in any derived Software will be changed so that
+no possibility of confusion between the derived package and this
+Software will exist.
+
+Warranty
+--------
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL NORMAN WALSH OR ANY OTHER
+CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Contacting the Author
+---------------------
+The DocBook XSL stylesheets are maintained by Norman Walsh,
+<ndw@nwalsh.com>, and members of the DocBook Project,
+<docbook-developers@sf.net>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL
new file mode 100644
index 0000000..72cb82b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL
@@ -0,0 +1,88 @@
+$Id: INSTALL 6145 2006-08-06 13:13:03Z xmldoc $
+
+INSTALL file for the DocBook XSL stylesheets distribution
+
+----------------------------------------------------------------------
+Case #1: Installation using a package management system
+----------------------------------------------------------------------
+If you have installed the DocBook XSL distribution using "apt-get",
+"yum", "urpmi", or some similar package-management front-end,
+then, as part of the package installation, the stylesheets have
+already been automatically installed in the appropriate location
+for your system, and your XML catalog environment has probably
+been updated to use that location.
+
+----------------------------------------------------------------------
+Case #2: Installing manually
+----------------------------------------------------------------------
+If you have downloaded a docbook-xsl zip, tar.gz, or tar.bz2
+file, use the following steps to install it.
+
+ 1. Move the zip, tar.gz, or tar.bz2 file to the directory where
+ you'd like to install it (not to a temporary directory).
+
+ 2. unzip or untar/uncompress the file
+
+ That will create a docbook-xsl-$VERSION directory (where
+ $VERSION is the version number for the release).
+
+The remaining steps are all OPTIONAL. They are intended to
+automatically update your user environment with XML Catalog
+information about the DocBook XSL distribution. You are NOT
+REQUIRED to complete these remaining steps. However, if you do
+not, and you want to use XML catalogs with the DocBook XSL
+stylesheets, you will need to manually update your XML catalog
+environment
+
+ 3. Change to the docbook-xsl-$VERSION directory and execute the
+ install.sh script:
+
+ ./install.sh
+
+ That will launch an interactive installer, which will emit a
+ series of prompts for you to respond to.
+
+ To instead run it non-interactively without being prompted
+ for confirmation of the changes it makes, invoke it with the
+ "--batch" switch, like this:
+
+ ./install.sh --batch
+
+ After the process is complete, the installer will emit a
+ message with a command you need to run in order to source
+ your environment for use with the stylesheets.
+
+ 4. To test that he installation has updated your environment
+ correctly, execute the test.sh script:
+
+ ./test.sh
+
+ That will test your XML catalog environment, using both the
+ xmlcatalog application and the Apache XML Commons Resolver.
+
+ NOTE: The test.sh file is not created until the install.sh
+ file is run for the first time.
+
+ 5. (UNINSTALLING) If/when you want to uninstall the release,
+ execute the uninstall.sh script.
+
+ ./uninstall.sh
+
+ To instead run it non-interactively without being prompted
+ for confirmation of the changes it makes, invoke it with the
+ "--batch" switch, like this:
+
+ ./uninstall.sh --batch
+
+ NOTE: The uninstall.sh file is not created until the install.sh
+ file is run for the first time.
+
+
+----------------------------------------------------------------------
+Note to packagers
+----------------------------------------------------------------------
+The install.sh, .CatalogManager.properties.example, and .urilist
+files should not be packaged. They are useful only to users who
+are installing the stylesheets manually.
+
+The catalog.xml file should be packaged.
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile
new file mode 100644
index 0000000..a87d60b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile
@@ -0,0 +1,89 @@
+# $Id: Makefile.tests 8481 2009-07-13 20:18:41Z abdelazer $
+#
+# This makefile does a "smoketest" of stylesheets for various
+# output formats in the DocBook XSL Stylesheets release package.
+# It doesn't actually check the output -- it's just useful for
+# confirming whether each XSLT transformation actually executes
+# successfully without any errors.
+#
+# To use it, run "make check" or just "make"
+
+XSLTPROC=xsltproc
+XSLTPROC_FLAGS=
+
+TESTFILE=tests/refentry.007.xml
+TESTFILE_NS=tests/refentry.007.ns.xml
+
+NORMAL_STYLES=fo/docbook.xsl html/docbook.xsl xhtml/docbook.xsl
+NORMAL_PROFILE_STYLES=fo/profile-docbook.xsl html/profile-docbook.xsl xhtml/profile-docbook.xsl
+CHUNK_STYLES=html/chunk.xsl html/onechunk.xsl xhtml/chunk.xsl xhtml/onechunk.xsl
+HELP_STYLES=htmlhelp/htmlhelp.xsl javahelp/javahelp.xsl eclipse/eclipse.xsl
+MULTIFILE_STYLES=$(CHUNK_STYLES) $(HELP_STYLES)
+CHUNK_PROFILE_STYLES=html/profile-chunk.xsl html/profile-onechunk.xsl xhtml/profile-chunk.xsl xhtml/profile-onechunk.xsl
+HELP_PROFILE_STYLES=htmlhelp/profile-htmlhelp.xsl eclipse/profile-eclipse.xsl javahelp/profile-javahelp.xsl
+MULTIFILE_PROFILE_STYLES=$(CHUNK_PROFILE_STYLES) $(HELP_PROFILE_STYLES)
+
+MAN_STYLE=manpages/docbook.xsl
+MAN_PROFILE_STYLE=manpages/profile-docbook.xsl
+
+TWO_PROFILE_STYLE=profiling/profile.xsl
+
+ROUNDTRIP_STYLES=roundtrip/dbk2ooo.xsl roundtrip/dbk2pages.xsl roundtrip/dbk2wordml.xsl
+SLIDES_STYLES=slides/html/default.xsl slides/xhtml/default.xsl slides/fo/plain.xsl
+WEBSITE_STYLES=website/website.xsl
+WEBSITE_CHUNK_STYLES=website/chunk-website.xsl
+
+# chunked output gets written to TMP_OUTPUT_DIR
+TMP_OUTPUT_DIR=/tmp/smoketest-output/
+# if you don't want TMP_OUTPUT_DIR and its contents deleted, unset
+# SMOKETEST_CLEAN_TARGET; e.g. "make check SMOKETEST_CLEAN_TARGET=''"
+SMOKETEST_CLEAN_TARGET=smoketest-clean
+
+check: smoketest-make-tmp-dir smoketest-normal smoketest-normal-profile smoketest-chunk smoketest-chunk-profile smoketest-man smoketest-man-profile smoketest-two-profile $(SMOKETEST_CLEAN_TARGET)
+
+smoketest-make-tmp-dir:
+ $(RM) -r $(TMP_OUTPUT_DIR)
+ mkdir '$(TMP_OUTPUT_DIR)'
+
+smoketest-normal:
+ for stylesheet in $(NORMAL_STYLES); do \
+ echo "$(XSLT) $(TESTFILE) $$stylesheet > /dev/null"; \
+ $(XSLT) $(TESTFILE) $$stylesheet > /dev/null; \
+ echo "$(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null"; \
+ $(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null; \
+ done
+
+smoketest-normal-profile:
+ for stylesheet in $(NORMAL_PROFILE_STYLES); do \
+ echo "$(XSLT) $(TESTFILE) $$stylesheet > /dev/null"; \
+ $(XSLT) $(TESTFILE) $$stylesheet > /dev/null; \
+ echo "$(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null"; \
+ $(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null; \
+ done
+
+smoketest-chunk:
+ for stylesheet in $(MULTIFILE_STYLES) ; do \
+ $(XSLT) $(TESTFILE) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \
+ $(XSLT) $(TESTFILE_NS) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \
+ done;
+
+smoketest-chunk-profile:
+ for stylesheet in $(MULTIFILE_PROFILE_STYLES) ; do \
+ $(XSLT) $(TESTFILE) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \
+ $(XSLT) $(TESTFILE_NS) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \
+ done;
+
+smoketest-man:
+ $(XSLT) $(TESTFILE) $(MAN_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ; \
+ $(XSLT) $(TESTFILE_NS) $(MAN_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ;
+
+smoketest-man-profile:
+ $(XSLT) $(TESTFILE) $(MAN_PROFILE_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ; \
+ $(XSLT) $(TESTFILE_NS) $(MAN_PROFILE_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ;
+
+smoketest-two-profile:
+ $(XSLT) $(TESTFILE_NS) $(TWO_PROFILE_STYLE) > /dev/null ;
+
+smoketest-clean:
+ $(RM) -r $(TMP_OUTPUT_DIR)
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS
new file mode 100644
index 0000000..ed3dc54
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS
@@ -0,0 +1,139 @@
+Changes since the 1.76.0 release
+
+Note: This document lists changes only since the 1.76.0 release. If you instead
+want a record of the complete list of changes for the codebase over its entire
+history, you can obtain one by running the following commands:
+
+ svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl
+ svn log --xml --verbose xsl > ChangeHistory.xml
+
+â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
+
+Table of Contents
+
+Release Notes: 1.76.1
+
+ Common
+ FO
+ HTML
+ Epub
+ Webhelp
+ Params
+ Extensions
+
+Release Notes: 1.76.1
+
+The following is a list of changes that have been made since the 1.76.0
+release.
+
+Common
+
+The following changes have been made to the common code since the 1.76.0
+release.
+
+ â— Mauritz Jeanson: Makefile
+
+ Added eu.xml and gl.xml to SOURCES.
+
+ â— Jirka Kosek: l10n.xsl
+
+ Fixed bug when context was lost due to usage of xsl:key
+
+FO
+
+The following changes have been made to the fo code since the 1.76.0 release.
+
+ â— Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl
+
+ Apply patch to support named destination in fop1.xsl, per Sourceforge
+ bug report #3029845.
+
+ â— dleidert: pagesetup.xsl
+
+ Remove the namespace mistakingly added with the last upload.
+
+HTML
+
+The following changes have been made to the html code since the 1.76.0 release.
+
+ â— Keith Fahlgren: highlight.xsl
+
+ Implementing handling for <b> and <i>: transform to <strong> and <em> for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)
+
+Epub
+
+The following changes have been made to the epub code since the 1.76.0 release.
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Bugfix for [#3071521] to ensure that NCX navPoints are generated for d:book root nodes with the -NS version of the stylesheets
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Remove unused NCX metadata elements
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/
+ files/test_cust.x⋯
+
+ Normalizing identifier lookup between NCX and OPF
+
+ â— Keith Fahlgren: bin/dbtoepub
+
+ Reduce logging verbosity
+
+ â— Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb
+
+ Only copy images once for the DocBook to EPUB tool to correct Windows bug reported in [#3065489]
+
+Webhelp
+
+The following changes have been made to the webhelp code since the 1.76.0
+release.
+
+ â— David Cramer: indexer
+
+ More webhelp indexer refactoring
+
+ â— David Cramer: build.xml
+
+ Removed cruft from before webhelp indexer refactoring
+
+ â— David Cramer: indexer/src
+
+ Refactoring webhelp to separate more cleanly the xsl and java code.
+
+ â— David Cramer: indexer/lib
+
+ Refactoring webhelp to separate more cleanly the xsl and java code.
+
+ â— David Cramer: Makefile; build.xml
+
+ Refactoring webhelp to separate more cleanly the xsl and java code.
+
+ â— David Cramer: indexer/src/com/nexwave/nquindexer/IndexerTask.java;
+ build.xml; indexer/src/⋯
+
+ Merged in changes from webhelp branch to address issue #3058244 regarding the xx.html temp file that was being created
+
+Params
+
+The following changes have been made to the params code since the 1.76.0
+release.
+
+ â— Robert Stayton: draft.mode.xml
+
+ Change default for draft.mode to 'no'.
+
+Extensions
+
+The following changes have been made to the extensions code since the 1.76.0
+release.
+
+ â— David Cramer: Makefile
+
+ More webhelp refactoring
+
+ â— David Cramer: Makefile
+
+ Refactoring webhelp to separate more cleanly the xsl and java code.
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html
new file mode 100644
index 0000000..979e2a2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html
@@ -0,0 +1,25 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Changes since the 1.76.0 release</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><meta name="description" content="Note: This document lists changes only since the 1.76.0 release. If you instead want a record of the complete list of changes for the codebase over its entire history, you can obtain one by running the following commands: svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl svn log --xml --verbose xsl &gt; ChangeHistory.xml"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" title="Changes since the 1.76.0 release"><div class="titlepage"><div><div><h2 class="title"><a name="id36089309"></a>Changes since the 1.76.0 release</h2></div><div><div class="abstract" title="Abstract"><p><span class="strong"><strong>Note:</strong></span> This
+ document lists changes only since the 1.76.0 release.
+ If you instead want a record of the complete list of
+ changes for the codebase over its entire history, you
+ can obtain one by running the following commands:
+
+</p><pre class="screen"> <code class="code">svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl</code>
+ <code class="code">svn log --xml --verbose xsl &gt; ChangeHistory.xml</code></pre></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#V1.76.1">Release Notes: 1.76.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.76.1_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.76.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.76.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.76.1_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#V1.76.1_Webhelp">Webhelp</a></span></dt><dt><span class="sect2"><a href="#V1.76.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.76.1_Extensions">Extensions</a></span></dt></dl></dd></dl></div><div class="sect1" title="Release Notes: 1.76.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.76.1"></a>Release Notes: 1.76.1</h2></div></div></div><p>The following is a list of changes that have been made
+ since the 1.76.0 release.</p><div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1.76.1_Common"></a>Common</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.76.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">Mauritz Jeanson: Makefile</code></p><pre class="screen"><span class="commit-message">Added eu.xml and gl.xml to SOURCES.</span></pre></li><li class="listitem"><p><code class="literal">Jirka Kosek: l10n.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug when context was lost due to usage of xsl:key</span></pre></li></ul></div></div><div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1.76.1_FO"></a>FO</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.76.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl</code></p><pre class="screen"><span class="commit-message">Apply patch to support named destination in fop1.xsl, per Sourceforge
+bug report #3029845.</span></pre></li><li class="listitem"><p><code class="literal">dleidert: pagesetup.xsl</code></p><pre class="screen"><span class="commit-message">Remove the namespace mistakingly added with the last upload.</span></pre></li></ul></div></div><div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1.76.1_HTML"></a>HTML</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.76.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">Keith Fahlgren: highlight.xsl</code></p><pre class="screen"><span class="commit-message">Implementing handling for &lt;b&gt; and &lt;i&gt;: transform to &lt;strong&gt; and &lt;em&gt; for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)</span></pre></li></ul></div></div><div class="sect2" title="Epub"><div class="titlepage"><div><div><h3 class="title"><a name="V1.76.1_Epub"></a>Epub</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">epub</code> code
+ since the 1.76.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Bugfix for [#3071521] to ensure that NCX navPoints are generated for d:<a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> root nodes with the -NS version of the stylesheets</span></pre></li><li class="listitem"><p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Remove unused NCX metadata elements</span></pre></li><li class="listitem"><p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/test_cust.x&#8943;</code></p><pre class="screen"><span class="commit-message">Normalizing identifier lookup between NCX and OPF</span></pre></li><li class="listitem"><p><code class="literal">Keith Fahlgren: bin/dbtoepub</code></p><pre class="screen"><span class="commit-message">Reduce logging verbosity</span></pre></li><li class="listitem"><p><code class="literal">Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb</code></p><pre class="screen"><span class="commit-message">Only copy images once for the DocBook to EPUB tool to correct Windows bug reported in [#3065489]</span></pre></li></ul></div></div><div class="sect2" title="Webhelp"><div class="titlepage"><div><div><h3 class="title"><a name="V1.76.1_Webhelp"></a>Webhelp</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">webhelp</code> code
+ since the 1.76.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">David Cramer: indexer</code></p><pre class="screen"><span class="commit-message">More webhelp indexer refactoring</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: build.xml</code></p><pre class="screen"><span class="commit-message">Removed cruft from before webhelp indexer refactoring</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: indexer/src</code></p><pre class="screen"><span class="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: indexer/lib</code></p><pre class="screen"><span class="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: Makefile; build.xml</code></p><pre class="screen"><span class="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: indexer/src/com/nexwave/nquindexer/IndexerTask.java; build.xml; indexer/src/&#8943;</code></p><pre class="screen"><span class="commit-message">Merged in changes from webhelp branch to <a href="http://docbook.org/tdg5/en/html/address.html"><code class="sgmltag-element">address</code></a> issue #3058244 regarding the xx.html temp file that was being created</span></pre></li></ul></div></div><div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1.76.1_Params"></a>Params</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.76.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">Robert Stayton: draft.mode.xml</code></p><pre class="screen"><span class="commit-message">Change default for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/draft.mode.html"><em class="parameter"><code>draft.mode</code></em></a> to 'no'.</span></pre></li></ul></div></div><div class="sect2" title="Extensions"><div class="titlepage"><div><div><h3 class="title"><a name="V1.76.1_Extensions"></a>Extensions</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">extensions</code> code
+ since the 1.76.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">David Cramer: Makefile</code></p><pre class="screen"><span class="commit-message">More webhelp refactoring</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: Makefile</code></p><pre class="screen"><span class="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</span></pre></li></ul></div></div></div></div></body></html>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml
new file mode 100644
index 0000000..8cc04e6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+
+<article>
+<info>
+<abstract>
+<para><emphasis role="strong">Note:</emphasis> This
+ document lists changes only since the 1.76.0 release.
+ If you instead want a record of the complete list of
+ changes for the codebase over its entire history, you
+ can obtain one by running the following commands:
+
+<screen> <code>svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl</code>
+ <code>svn log --xml --verbose xsl &gt; ChangeHistory.xml</code></screen></para>
+</abstract>
+</info><title>Changes since the 1.76.0 release</title>
+
+<sect1 xml:id="V1.76.1">
+<title>Release Notes: 1.76.1</title>
+<para>The following is a list of changes that have been made
+ since the 1.76.0 release.</para>
+
+<sect2 xml:id="V1.76.1_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: Makefile</literal></para><screen><phrase role="commit-message">Added eu.xml and gl.xml to SOURCES.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: l10n.xsl</literal></para><screen><phrase role="commit-message">Fixed bug when context was lost due to usage of xsl:key</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.76.1-->
+
+<sect2 xml:id="V1.76.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl</literal></para><screen><phrase role="commit-message">Apply patch to support named destination in fop1.xsl, per Sourceforge
+bug report #3029845.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>dleidert: pagesetup.xsl</literal></para><screen><phrase role="commit-message">Remove the namespace mistakingly added with the last upload.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.76.1-->
+
+<sect2 xml:id="V1.76.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: highlight.xsl</literal></para><screen><phrase role="commit-message">Implementing handling for &lt;b&gt; and &lt;i&gt;: transform to &lt;strong&gt; and &lt;em&gt; for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.76.1-->
+
+<sect2 xml:id="V1.76.1_Epub">
+<title>Epub</title>
+<para>The following changes have been made to the
+ <filename>epub</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">Bugfix for [#3071521] to ensure that NCX navPoints are generated for d:<tag>book</tag> root nodes with the -NS version of the stylesheets</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">Remove unused NCX metadata elements</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/test_cust.x⋯</literal></para><screen><phrase role="commit-message">Normalizing identifier lookup between NCX and OPF</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/dbtoepub</literal></para><screen><phrase role="commit-message">Reduce logging verbosity</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb</literal></para><screen><phrase role="commit-message">Only copy images once for the DocBook to EPUB tool to correct Windows bug reported in [#3065489]</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Epub changes for 1.76.1-->
+
+<sect2 xml:id="V1.76.1_Webhelp">
+<title>Webhelp</title>
+<para>The following changes have been made to the
+ <filename>webhelp</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: indexer</literal></para><screen><phrase role="commit-message">More webhelp indexer refactoring</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: build.xml</literal></para><screen><phrase role="commit-message">Removed cruft from before webhelp indexer refactoring</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: indexer/src</literal></para><screen><phrase role="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: indexer/lib</literal></para><screen><phrase role="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile; build.xml</literal></para><screen><phrase role="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: indexer/src/com/nexwave/nquindexer/IndexerTask.java; build.xml; indexer/src/⋯</literal></para><screen><phrase role="commit-message">Merged in changes from webhelp branch to <tag>address</tag> issue #3058244 regarding the xx.html temp file that was being created</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Webhelp changes for 1.76.1-->
+
+<sect2 xml:id="V1.76.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: draft.mode.xml</literal></para><screen><phrase role="commit-message">Change default for <parameter>draft.mode</parameter> to 'no'.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.76.1-->
+
+<sect2 xml:id="V1.76.1_Extensions">
+<title>Extensions</title>
+<para>The following changes have been made to the
+ <filename>extensions</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">More webhelp refactoring</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">Refactoring webhelp to separate more cleanly the xsl and java code.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Extensions changes for 1.76.1-->
+
+</sect1>
+</article>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/README b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/README
new file mode 100644
index 0000000..3a5558a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/README
@@ -0,0 +1,157 @@
+----------------------------------------------------------------------
+ README file for the DocBook XSL Stylesheets
+----------------------------------------------------------------------
+$Id: README 8484 2009-07-13 20:35:34Z mzjn $
+
+These are XSL stylesheets for transforming DocBook XML document
+instances into various output formats.
+
+This README file provides only very minimal documentation on using
+the stylesheets. For more complete information, see Bob Stayton's
+book "DocBook XSL: The Complete Guide", available online at:
+
+ http://www.sagehill.net/docbookxsl/
+
+----------------------------------------------------------------------
+Installation
+----------------------------------------------------------------------
+See the INSTALL file for information about installing this release.
+
+----------------------------------------------------------------------
+How to use the stylesheets
+----------------------------------------------------------------------
+The base canonical URI for these stylesheets is:
+
+ http://docbook.sourceforge.net/release/xsl/current/
+
+You call any of the stylesheets in this distribution by doing one
+of the following:
+
+ - Use the base canonical URI in combination with one of the
+ pathnames below. For example, for "chunked" HTML, output:
+
+ http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl
+
+ If your system has a working XML Catalog or SGML Catalog setup
+ (most Linux systems do), then that URI will automatically be
+ resolved and replaced with a local pathname on your system.
+
+ - Use a "real" local system base path in combination with one of
+ the pathnames below. For example, for "chunked" HTML, output:
+
+ /usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl
+
+To transform documents created with the standard DocBook
+schema/DTD, use one of the following stylesheets:
+
+ fo/docbook.xsl - for XSL-FO
+
+ html/docbook.xsl - for HTML (as a single file)
+ html/chunk.xsl - for HTML (chunked into multiple files)
+ html/onechunk.xsl - for HTML (chunked output in single file)
+
+ xhtml/*.xsl - for XHTML versions of the above
+
+ xhtml-1_1/*.xsl - for XHTML 1.1 versions of the above
+
+ epub/docbook.xsl - for .epub
+
+ htmlhelp/htmlhelp.xsl - for HTML Help
+ javahelp/javahelp.xsl - for JavaHelp
+ eclipse/eclipse.xsl - for Eclipse Help
+
+ manpages/docbook.xsl - for groff/nroff man pages
+
+ */profile-* - single-pass-profiling versions of all above
+
+ roundtrip/*.xsl - for DocBook to WordML, etc., to DocBook
+
+To transform documents created with the DocBook Slides schema/DTD,
+use one of the following stylesheets:
+
+ slides/html/*.xsl - for HTML slides of various kinds
+ slides/xhtml/*.xsl - for XHTML slides of various kinds
+ slides/fo/plain.xsl - for XSL-FO slides
+ slides/htmlhelp/... - for HTML Help slides
+
+To transform documents created with the DocBook Website
+schema/DTD, use one of the following stylesheets:
+
+ website/website.xsl - for non-tabular, non-chunked output
+ website/tabular.xsl - for tabular, non-chunked output
+ website/chunk-* - for chunked output
+
+To generate a titlepage customization layer from a titlepage spec:
+
+ template/titlepage.xsl
+
+For details about creating titlepage spec files and generating and
+using titlepage customization layers, see "DocBook XSL: The
+Complete Guide" <http://www.sagehill.net/docbookxsl/>
+
+----------------------------------------------------------------------
+Manifest
+----------------------------------------------------------------------
+AUTHORS contact information
+BUGS about known problems
+COPYING copyright information
+INSTALL installation instructions
+README this file
+RELEASE.* per-release cumulative summaries of user-visible changes
+TODO about planned features not yet implemented
+VERSION release metadata, including the current version
+ number (note that the VERSION file is an XSL stylesheet)
+NEWS changes since the last public release (for a cumulative list of
+ changes, see the ChangeHistory.xml file)
+
+common/ code used among several output formats (HTML, FO, manpages,...)
+docsrc/ documentation sources
+eclipse/ for producing Eclipse Help
+epub/ for producing .epub
+extensions/ DocBook XSL Java extensions
+fo/ for producing XSL-FO
+highlighting files used for adding source-code syntax highlighting in output
+html/ for producing HTML
+htmlhelp/ for producing HTML Help
+images/ images used in callouts and graphical admonitions
+javahelp/ for producing Java Help
+lib/ utility stylesheets with schema-independent functions
+manpages/ for producing groff/troff man pages
+profiling/ for profiling (omitting/including conditional text)
+roundtrip/ for "round trip" conversion among DocBook and
+ various word-processor formats (WordML, etc.)
+slides/ for producing slides output (from Slides source)
+template/ templates for building stylesheet customization layers
+tools/ assorted supplementary tools
+website/ for producing website output (from Website source)
+xhtml/ for producing XHTML
+xhtml-1_1/ for producing (stricter) XHTML 1.1
+
+----------------------------------------------------------------------
+Changes
+----------------------------------------------------------------------
+See the NEWS file for changes made since the previous release.
+
+See the RELEASE-NOTES.html or RELEASE-NOTES.txt or RELEASE-NOTES.pdf
+files for per-release cumulative summaries of significant
+user-visible changes.
+
+For online access to a hyperlinked view of all changes made over
+the entire history of the codebase, see the following:
+
+ http://docbook.svn.sourceforge.net/viewvc/docbook/trunk/xsl/?view=log
+
+WARNING: That above change history is a very long list and may
+take a long time to load/download.
+
+You can also create an XML-formatted "ChangeHistory.xml" copy of
+the complete change history for the codebase by running the
+following commands:
+
+ svn checkout https://docbook.svn.sf.net/svnroot/docbook/trunk/xsl
+ svn log --xml --verbose xsl > ChangeHistory.xml
+
+----------------------------------------------------------------------
+Copyright information
+----------------------------------------------------------------------
+See the accompanying file named COPYING.
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html
new file mode 100644
index 0000000..556bd67
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html
@@ -0,0 +1,8353 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Release Notes for the DocBook XSL Stylesheets</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><meta name="description" content="This release-notes document is available in the following formats: HTML, PDF, plain text; it provides a per-release list of enhancements and changes to the stylesheets&#8217; public APIs (user-configurable parameters) and excludes descriptions of most bug fixes. For a complete list of all changes (including all bug fixes) that have been made since the previous release, see the separate NEWS (plain text) or NEWS.html files. Also available: An online hyperlinked change history (warning: big file) of all changes made over the entire history of the codebase. As with all DocBook Project &#8220;dot one plus&#8221; releases, this release aspires to be stable (in contrast to dot-zero releases, which are experimental)."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="article" title="Release Notes for the DocBook XSL Stylesheets"><div class="titlepage"><div><div><h2 class="title"><a name="releasenotes"></a>Release Notes for the DocBook XSL Stylesheets</h2></div><div><p class="releaseinfo">$Revision: 8934 $ $Date: 2010-11-01 13:03:14 -0700 (Mon, 01 Nov 2010) $</p></div><div><p class="pubdate">2010-11-01</p></div><div><div class="abstract" title="Abstract">
+<p>This release-notes
+ document is available in the following formats:
+ <a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.html" target="_top">HTML</a>,
+ <a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.pdf" target="_top">PDF</a>,
+ <a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.txt" target="_top">plain text</a>; it provides a per-release list
+of enhancements and changes to the stylesheets&#8217; public APIs
+(user-configurable parameters) and excludes descriptions of most
+bug fixes. For a complete list of all changes (including all bug
+fixes) that have been made since the previous release, see the
+separate <a class="ulink" href="NEWS" target="_top">NEWS</a> (plain text) or <a class="ulink" href="NEWS.html" target="_top">NEWS.html</a> files. Also available:
+An online <a class="ulink" href="http://docbook.svn.sourceforge.net/viewvc/docbook/trunk/xsl/?view=log" target="_top">hyperlinked change history</a> (warning: big file) of all
+changes made over the entire history of the codebase.</p>
+
+<p>As with all DocBook Project &#8220;dot
+ one plus&#8221; releases, this release aspires to be stable (in
+ contrast to <a class="link" href="#dot0" title="About dot-zero releases">dot-zero</a> releases, which
+ are experimental).</p>
+
+
+</div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#V1.76.1">Release Notes: 1.76.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.76.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.76.0">Release Notes: 1.76.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.76.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#rn_V1.75.2">Release Notes: 1.75.2</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.2_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#rn_V1.75.1">Release Notes: 1.75.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.75.0">Release Notes: 1.75.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Epub">ePub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.74.3">Release Notes: 1.74.3</a></span></dt><dt><span class="sect1"><a href="#V1.74.2">Release Notes: 1.74.2</a></span></dt><dt><span class="sect1"><a href="#V1.74.1">Release Notes: 1.74.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#summary_V1.74.1_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Epub">ePub</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Highlighting">Highlighting</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.74.0">Release Notes: 1.74.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.74.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Slides">Slides</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Website">Website</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-Xalan">XSL-Xalan</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-libxslt">XSL-libxslt</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.73.2">Release Notes: 1.73.2</a></span></dt><dt><span class="sect1"><a href="#V1.73.1">Release: 1.73.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.73.1_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.73.0">Release: 1.73.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.73.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Lib">Lib</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.72.0">Release: 1.72.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.72.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Template">Template</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Roundtrip">Roundtrip</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.71.1">Release: 1.71.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.71.1_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Profiling">Profiling</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.71.0">Release: 1.71.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.71.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Tools">Tools</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1701">Release: 1.70.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1701_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1701_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1701_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1701_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1700">Release: 1.70.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1700_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1700_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1700_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1700_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1700_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1700_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1700_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1700_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1700_WordML">WordML</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1691">Release 1.69.1</a></span></dt><dt><span class="sect1"><a href="#V1690">Release 1.69.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1690_COMMON">Common</a></span></dt><dt><span class="sect2"><a href="#V1690_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1690_HELP">Help</a></span></dt><dt><span class="sect2"><a href="#V1690_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1690_MAN">man</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1681">Release 1.68.1</a></span></dt><dt><span class="sect1"><a href="#V1680">Release 1.68.0</a></span></dt><dt><span class="sect1"><a href="#V1672">Release 1.67.2</a></span></dt><dt><span class="sect1"><a href="#V1671">Release 1.67.1</a></span></dt><dt><span class="sect1"><a href="#V1670">Release 1.67.0</a></span></dt><dt><span class="sect1"><a href="#V1661">Release 1.66.1</a></span></dt><dt><span class="sect1"><a href="#V1650">Release 1.65.0</a></span></dt><dt><span class="sect1"><a href="#V1641">Release 1.64.1</a></span></dt><dt><span class="sect1"><a href="#V1610">Release 1.61.0</a></span></dt><dt><span class="sect1"><a href="#V1601">Release 1.60.1</a></span></dt><dt><span class="sect1"><a href="#V1592">Release 1.59.2</a></span></dt><dt><span class="sect1"><a href="#V1591">Release 1.59.1</a></span></dt><dt><span class="sect1"><a href="#V1580">Release 1.58.0</a></span></dt><dt><span class="sect1"><a href="#V1570">Release 1.57.0</a></span></dt><dt><span class="sect1"><a href="#V1560">Release 1.56.0</a></span></dt><dt><span class="sect1"><a href="#VOlder">Older releases</a></span></dt><dt><span class="sect1"><a href="#dot0">About dot-zero releases</a></span></dt></dl></div>
+
+
+
+
+<div class="sect1" title="Release Notes: 1.76.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.76.1"></a>Release Notes: 1.76.1</h2></div></div></div>
+
+<p>The following is a list of changes that have been made
+ since the 1.76.0 release.</p>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.1_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.76.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl</code></p><pre class="screen"><span class="commit-message">Apply patch to support named destination in fop1.xsl, per Sourceforge
+bug report #3029845.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.1_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">html</code> code since the 1.76.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Keith Fahlgren: highlight.xsl</code></p><pre class="screen"><span class="commit-message">Implementing handling for &lt;b&gt; and &lt;i&gt;: transform to &lt;strong&gt; and &lt;em&gt; for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.1_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.76.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: draft.mode.xml</code></p><pre class="screen"><span class="commit-message">Change default for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/draft.mode.html"><em class="parameter"><code>draft.mode</code></em></a> to 'no'.</span></pre>
+</li></ul></div>
+</div>
+
+
+</div>
+ <div class="sect1" title="Release Notes: 1.76.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.76.0"></a>Release Notes: 1.76.0</h2></div></div></div>
+
+<p>This release includes important bug fixes and adds the following
+significant feature changes:</p>
+<div class="variablelist"><dl><dt><span class="term">Webhelp</span></dt><dd><p>A new browser-based, cross-platform help format with full-text search and other features typically found in help systems. See <code class="filename">webhelp/docs/content/ch01.html</code> for more information and a demo. </p></dd><dt><span class="term">Gentext</span></dt><dd><p>Many updates and additions to translation/locales thanks to Red Hat, the Fedora Project, and other contributors.</p></dd><dt><span class="term">Common</span></dt><dd><p>Faster localization support, as language files are loaded on demand.</p></dd><dt><span class="term">FO</span></dt><dd><p>Support for SVG content in <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a> added.</p></dd><dt><span class="term">HTML</span></dt><dd><p>Output improved when using '<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/make.clean.html.html"><em class="parameter"><code>make.clean.html</code></em></a>' and a stock CSS file is now provided.</p></dd><dt><span class="term">EPUB</span></dt><dd><p>A number of improvements to NCX, cover and image selection, and XHTML 1.1 element choices</p></dd></dl></div>
+
+ <p>The following is a list of changes that have been made since the 1.75.2 release.</p>
+ <div class="sect2" title="Gentext"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_Gentext"></a>Gentext</h3></div></div></div>
+
+ <p>The following changes have been made to the <code class="filename">gentext</code> code since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">rlandmann: locale/fa.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Update to Persian translation from the Fedora Project</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">rlandmann: locale/nds.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Locale for Low German</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: locale/ka.xml; Makefile</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added support for Georgian based on patch #2917147.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">rlandmann: locale/nl.xml; locale/ja.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Updated translations from Red Hat and the Fedora Project</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">rlandmann: locale/bs.xml; locale/ru.xml; locale/hr.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Updated locales from Red Hat and the Fedora Project</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">rlandmann: locale/pt.xml; locale/cs.xml; locale/es.xml; locale/bg.xml; locale/nl.xml; loca&#8943;</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Updated translations from Red Hat and the Fedora Project</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">rlandmann: locale/as.xml; locale/bn_IN.xml; locale/ast.xml; locale/ml.xml; locale/te.xml; &#8943;</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">New translations from Red Hat and the Fedora Project</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">rlandmann: locale/pt.xml; locale/ca.xml; locale/da.xml; locale/sr.xml; locale/ru.xml; loca&#8943;</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Updated translations from Red Hat and the Fedora Project</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_Common"></a>Common</h3></div></div></div>
+
+ <p>The following changes have been made to the <code class="filename">common</code> code since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: common.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fixed bug in output-orderedlist-starting-number template (@startingnumber did not work for FO).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: gentext.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added fix to catch ID also of descendants of <a href="http://docbook.org/tdg5/en/html/listitem.html"><code class="sgmltag-element">listitem</code></a>. Closes bug #2955077.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: l10n.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Stripped down, faster version of gentext.template is used when there is no localization customization.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: stripns.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added fix that preserves <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>/@role (makes links in the <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> documentation
+with @role="tcg" work).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: l10n.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fixed bugs related to manpages and L10n.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: entities.ent; autoidx-kosek.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: l10n.xsl; l10n.dtd; l10n.xml; autoidx-kosek.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Refactored localization support. Language files are loaded on demand. Speedup is about 30%.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: l10n.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added xsl:keys for improved performance of localization texts look up. Performance gain around 15%.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: titles.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fixed bug #2912677 (error with <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> in <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: olink.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug in xrefstyle "<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>" handling introduced with
+the 'insert.targetdb.data' template.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: gentext.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug in <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> without <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> to use context="xref-number" instead
+of "xref-number-and-title".</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: labels.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Number all equations in one sequence, with or without <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: entities.ent</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug #2896909 where duplicate @sortas on indexterms caused
+some indexterms to drop out of <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: stripns.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Expand the "Stripping namespace ..." message to advise users to
+use the namespaced stylesheets.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: stripns.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">need a local version of $exsl.node.set.available variable because
+this module imported many places.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: olink.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added /node() to the select expression that is used to compute the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> text
+so that no &lt;ttl&gt; elements end up in the output. Closes bug #2830119.</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_FO"></a>FO</h3></div></div></div>
+
+ <p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: table.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 2979166 able - Attribute @rowheader not working</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: inline.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Improved <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> auto-linking by using keys. The old code was inefficient when processing documents
+with many inline glossterms.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: titlepage.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 2805530 <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a>/<a href="http://docbook.org/tdg5/en/html/orgname.html"><code class="sgmltag-element">orgname</code></a> not appearing on <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> page.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: graphics.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added support for SVG content in <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a> (inspired by patch #2909154).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: table.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Removed superfluous test used when computing column-width. Closes bug #3000898.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: inline.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added missing &lt;xsl:call-template name="<a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a>"/&gt;. Closes bug #2998567.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: lists.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added table-layout="fixed" on <a href="http://docbook.org/tdg5/en/html/segmentedlist.html"><code class="sgmltag-element">segmentedlist</code></a> <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> (required by XSL spec when proportional-column-width() is used).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: autoidx-kosek.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: index.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: xref.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug in <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> template when an <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> has an id.
+Add warning message with id value when trying to <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>
+to an element that has no generated text.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: refentry.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fixed bug #2930968 (<a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a> in <a href="http://docbook.org/tdg5/en/html/refmeta.html"><code class="sgmltag-element">refmeta</code></a> not handled correctly).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: block.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">fix bug 2949567 <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in <a href="http://docbook.org/tdg5/en/html/revhistory.html"><code class="sgmltag-element">revhistory</code></a> breaks FO transform.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: glossary.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Output id attributes on <a href="http://docbook.org/tdg5/en/html/glossdiv.html"><code class="sgmltag-element">glossdiv</code></a> blocks so they can be added to
+xrefs or <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: xref.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Enabled hyphenation of URLs when ulink content is the same as <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> target</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: table.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Apply patch to turn off <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a> recursion if no @morerows attributes present.
+This will enable very large tables without <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a> spanning to
+process without running into recursion limits.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: formal.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Format <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> without <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> using <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> layout with <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> number
+next to the <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: param.xweb; param.ent</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/equation.number.properties.html"><em class="parameter"><code>equation.number.properties</code></em></a>.</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_HTML"></a>HTML</h3></div></div></div>
+
+ <p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: block.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Modified <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> template to avoid invalid output (&lt;p&gt; in &lt;p&gt;).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: titlepage.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added default <a href="http://docbook.org/tdg5/en/html/sidebar.html"><code class="sgmltag-element">sidebar</code></a> attribute-sets.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: table.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 2979166 able - Attribute @rowheader not working</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: footnote.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 3033191 footnotes in html tables.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: inline.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Improved <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> auto-linking by using keys. The old code was inefficient when processing documents
+with many inline glossterms.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: docbook.css.xml; verbatim.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 2844927 Validity error for <a href="http://docbook.org/tdg5/en/html/callout.html"><code class="sgmltag-element">callout</code></a> bugs.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: formal.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Convert formal.object.heading to respect <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/make.clean.html.html"><em class="parameter"><code>make.clean.html</code></em></a> param.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: titlepage.templates.xml; block.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 2840768 <a href="http://docbook.org/tdg5/en/html/sidebar.html"><code class="sgmltag-element">sidebar</code></a> without <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> inserts empty b <a href="http://docbook.org/tdg5/en/html/tag.html"><code class="sgmltag-element">tag</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: docbook.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Moved the template that outputs &lt;base&gt; so that the base URI also applies to relative CSS paths that come later.
+See patch #2896121.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: autoidx-kosek.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: chunk-code.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">fix bug 2948363 generated <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a> for <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> not unique, when
+used in a set.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: component.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix missing "<a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">Chapter</code></a> n" <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a> when use <a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">chapter</code></a>/<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: table.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message"><a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">Row</code></a> recursion turned off if no @morerows attributes in the <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.
+This will prevent failure on long <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> (with no @morerows) due
+to excessive depth of recursion.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: autotoc.xsl; docbook.css.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Support <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/make.clean.html.html"><em class="parameter"><code>make.clean.html</code></em></a> in autotoc.xsl.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: docbook.css.xml; block.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Add support for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/make.clean.html.html"><em class="parameter"><code>make.clean.html</code></em></a> setting in block elements.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: docbook.css.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Stock CSS styles for DocBook HTML output when '<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/make.clean.html.html"><em class="parameter"><code>make.clean.html</code></em></a>' is non-zero.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: html.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Add templates for generating CSS files and links to them.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: param.xweb</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bugs in new entity references.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: chunk-common.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">List of Equations now includes on equations with titles.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: table.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">If a <a href="http://docbook.org/tdg5/en/html/colspec.html"><code class="sgmltag-element">colspec</code></a> has a colname attribute, add it to the HTML <a href="http://docbook.org/tdg5/en/html/col.html"><code class="sgmltag-element">col</code></a>
+element as a class attribute so it can be styled.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: formal.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 2825842 where <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> footnotes not appearing in HTML-coded <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: chunktoc.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug #2834826 where <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a> inside part was not chunked as it should be.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: chunktoc.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added missing namespace declarations. Closes bug #2890069.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: footnote.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Updated the template for <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> paras to use the 'paragraph' template. Closes bug #2803739.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: inline.xsl; lists.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Remove &lt;b&gt; and &lt;i&gt; elements "discouraged in favor of style sheets" from
+XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+Fixes bug #2873153: No &lt;b&gt; and &lt;i&gt; tags in XHTML/EPUB
+
+Added regression to EPUB specs:</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: inline.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fixed bug #2844916 (don't output @target if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/ulink.target.html"><em class="parameter"><code>ulink.target</code></em></a> is empty).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: autoidx.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix a bug when using <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.on.type.html"><em class="parameter"><code>index.on.type</code></em></a>: an '<a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> symbols' <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> was created
+even if that typed <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> didn't include any symbols (they were in the other types).</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_Manpages"></a>Manpages</h3></div></div></div>
+
+ <p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: other.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Modified the write.stubs template so that the <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> directory name is not output twice. Should fix bug #2831602.
+Also ensured that $lang is added to the .so path (when <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a>=1).</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: docbook.xsl; other.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fixed bug #2412738 (apostrophe escaping) by applying the submitted patch.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Norman Walsh: block.xsl; endnotes.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug where <a href="http://docbook.org/tdg5/en/html/simpara.html"><code class="sgmltag-element">simpara</code></a> in <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> didn't work. Patch by Jonathan Nieder, jrnieder@gmail.com</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">dleidert: lists.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix two indentation issues: In the first case there is no corresponding .RS
+macro (Debian #519438, sf.net 2793873). In the second case an .RS instead of
+the probably intended .sp leads to an indentation bug (Debian #527309,
+sf.net #2642139).</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="Epub"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_Epub"></a>Epub</h3></div></div></div>
+
+ <p>The following changes have been made to the
+ <code class="filename">epub</code> code
+ since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: bin/spec/examples/AMasqueOfDays.epub; docbook.xsl; bin/spec/epub_spec.rb</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Resolve some actual regressions in <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> output spotted by more recent versions of epubcheck</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: docbook.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Updated <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> selection code that better uses roles (when available); based on contributons by Glenn McDonald</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Ensure that NCX documents are always outputted with a default namespace
+to prevent problems with the kindlegen machinery</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/partintro.xml; docbook.x&#8943;</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Adding support for partintros with sect2s, 3s, etc</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: docbook.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Adding param to workaround horrific ADE bug with the inability to process &lt;br&gt;</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: docbook.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/authorgroup.html"><code class="sgmltag-element">authorgroup</code></a>/<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> in OPF metadata (via Michael Wiedmann)</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Remove &lt;b&gt; and &lt;i&gt; elements "discouraged in favor of style sheets" from
+XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+Fixes bug #2873153: No &lt;b&gt; and &lt;i&gt; tags in XHTML/EPUB
+
+Added regression to EPUB specs:</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: bin/lib/docbook.rb; bin/spec/files/DejaVuSerif-Italic.otf; docbook.xsl; bi&#8943;</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">This resolves bug #2873142, Please add support for multiple embedded fonts
+
+
+If you navigate to a checkout of DocBook-XSL and go to:
+xsl/epub/bin/spec/files
+You can now run the following <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>:
+
+../../dbtoepub -f DejaVuSerif.otf -f DejaVuSerif-Italic.otf -c test.css
+-s test_cust.xsl orm.book.001.xml
+
+In dbtoepub, the following option can be used more than once:
+-f, --font [OTF FILE] Embed OTF FILE in .epub.
+
+The underlying stylesheet now accepts a comma-separated list of font file
+names rather than just one as the RENAMED epub.embedded.fonts ('s' added).
+
+The runnable EPUB spec now includes:
+- should be valid .epub after including more than one embedded font</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: docbook.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Improve the selection of <a href="http://docbook.org/tdg5/en/html/cover.html"><code class="sgmltag-element">cover</code></a> images when working in DocBook 4.x land (work in progress)</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Improve the quality of the OPF spine regression by ensuring that the spine
+elements for deeply nested refentries are in order and adjacent to their
+opening wrapper XHTML chunk.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/orm.book.00&#8943;</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Add more careful handling of refentries to ensure that they always appear in the opf:spine.
+This was only a problem when refentries were pushed deep into the hierarchy (like inside
+a <a href="http://docbook.org/tdg5/en/html/sect2.html"><code class="sgmltag-element">sect2</code></a>), but presented navigational problems for many reading systems (despite the
+correct NCX references). This may *not* be the best solution, but attacking a better
+chunking strategy for refentries was too big a nut to crack at this time.</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="Eclipse"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_Eclipse"></a>Eclipse</h3></div></div></div>
+
+ <p>The following changes have been made to the
+ <code class="filename">eclipse</code> code
+ since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: eclipse3.xsl</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added a stylesheet module that generates plug-ins conforming to the standard (OSGi-based) Eclipse 3.x
+architecture. The main difference to the older format is that metadata is stored in a separate
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a> file. The module imports and extends the existing eclipse.xsl module. Based on code
+contributed in patch #2624668.</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_Params"></a>Params</h3></div></div></div>
+
+ <p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: draft.watermark.image.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Fix bug 2922488 <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/draft.watermark.image.html"><em class="parameter"><code>draft.watermark.image</code></em></a> pointing to web resource.
+Now the value is images/draft.png, and may require customization
+for local resolution.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Mauritz Jeanson: equation.number.properties.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Corrected <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">refpurpose</code></a>.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Norman Walsh: paper.type.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added USlegal and USlegallandscape paper types.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Jirka Kosek: highlight.xslthl.config.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Added note about specifying location as URL</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: docbook.css.source.xml; generate.css.header.xml; custom.css.source.xml; ma&#8943;</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Params to support generated CSS files.</span>
+ </pre>
+ </li><li class="listitem">
+ <p>
+ <code class="literal">Robert Stayton: equation.number.properties.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">New attribute set for numbers appearing next to equations.</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="XSL-Xalan"><div class="titlepage"><div><div><h3 class="title"><a name="rnV1.76.0_XSL-Xalan"></a>XSL-Xalan</h3></div></div></div>
+
+ <p>The following changes have been made to the
+ <code class="filename">xsl-xalan</code> code
+ since the 1.75.2 release.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>
+ <code class="literal">dleidert: nbproject/genfiles.properties; nbproject/build-impl.xml</code>
+ </p>
+ <pre class="screen">
+ <span class="commit-message">Rebuild netbeans build files after adding missing Netbeans configuration to allow easier packaging for Debian.</span>
+ </pre>
+ </li></ul></div>
+ </div>
+
+ </div>
+<div class="sect1" title="Release Notes: 1.75.2"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="rn_V1.75.2"></a>Release Notes: 1.75.2</h2></div></div></div>
+
+<p>The following is a list of changes that have been made
+ since the 1.75.1 release.</p>
+
+<div class="sect2" title="Gentext"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_Gentext"></a>Gentext</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">gentext</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">dleidert: locale/ja.xml</code></p><pre class="screen"><span class="commit-message">Improved Japanese translation for Note(s). Closes bug #2823965.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">dleidert: locale/pl.xml</code></p><pre class="screen"><span class="commit-message">Polish alphabet contains O with acute accent, not with grave accent. Closes bug #2823964.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/ja.xml</code></p><pre class="screen"><span class="commit-message">Fix translation of "<a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>", per bug report 2796064.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/is.xml</code></p><pre class="screen"><span class="commit-message">New Icelandic locale file.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Norman Walsh: stripns.xsl</code></p><pre class="screen"><span class="commit-message">Support more downconvert cases</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Make sure <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> inside <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> is used if no other <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: pi.xsl</code></p><pre class="screen"><span class="commit-message">Turn off dbfo-need for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/fop1.extensions.html"><em class="parameter"><code>fop1.extensions</code></em></a> also, per bug #2816141.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Output "<a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">Copyright</code></a>" heading in XHTML too.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Added stylesheet.result.type test for <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a>. Closes bug #2813289.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Norman Walsh: htmltbl.xsl</code></p><pre class="screen"><span class="commit-message">Remove ambiguity wrt @span, @rowspan, and @colspan</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: endnotes.xsl</code></p><pre class="screen"><span class="commit-message">Added normalize-space() for ulink content. Closes bug #2793877.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Added stylesheet.result.type test for <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a>. Closes bug #2813289.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Epub"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_Epub"></a>Epub</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">epub</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb</code></p><pre class="screen"><span class="commit-message">Corrected bugs caused by path and file assumptions were not met</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/lib/docbook.rb; docbook.xsl</code></p><pre class="screen"><span class="commit-message">Cleaning up hardcoded values into parameters and fixing Ruby library to pass them properly; all thanks to patch from Liza Daly</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Profiling"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_Profiling"></a>Profiling</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">profiling</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: profile.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 2815493 missing <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/exsl.node.set.available.html"><em class="parameter"><code>exsl.node.set.available</code></em></a> parameter.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="XSL-Saxon"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_XSL-Saxon"></a>XSL-Saxon</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-saxon</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: src/com/nwalsh/saxon/ColumnUpdateEmitter.java; src/com/nwalsh/saxon/Colum&#8943;</code></p><pre class="screen"><span class="commit-message">Added fixes so that colgroups in the XHTML namespace are processed properly.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="XSL-Xalan"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.2_XSL-Xalan"></a>XSL-Xalan</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-xalan</code> code
+ since the 1.75.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: nbproject/project.xml</code></p><pre class="screen"><span class="commit-message">Added missing NetBeans configuration.</span></pre>
+</li></ul></div>
+</div>
+
+</div>
+
+
+<div class="sect1" title="Release Notes: 1.75.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="rn_V1.75.1"></a>Release Notes: 1.75.1</h2></div></div></div>
+
+<p>This release includes bug fixes.</p>
+
+<p>The following is a list of changes that have been made since the 1.75.0 release.</p>
+
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.1_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">fo</code> code since the 1.75.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Keith Fahlgren: block.xsl</code></p><pre class="screen"><span class="commit-message">Switching to em dash for character before <a href="http://docbook.org/tdg5/en/html/attribution.html"><code class="sgmltag-element">attribution</code></a> in <a href="http://docbook.org/tdg5/en/html/epigraph.html"><code class="sgmltag-element">epigraph</code></a>; resolves Bug #2793878</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug 2789947, id attribute missing on <a href="http://docbook.org/tdg5/en/html/simplelist.html"><code class="sgmltag-element">simplelist</code></a> fo output.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.1_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.75.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Keith Fahlgren: block.xsl</code></p><pre class="screen"><span class="commit-message">Switching to em dash for character before <a href="http://docbook.org/tdg5/en/html/attribution.html"><code class="sgmltag-element">attribution</code></a> in <a href="http://docbook.org/tdg5/en/html/epigraph.html"><code class="sgmltag-element">epigraph</code></a>; resolves Bug #2793878</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug 2789678: apply-templates line accidentally deleted.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Epub"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.1_Epub"></a>Epub</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">epub</code> code
+ since the 1.75.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</code></p><pre class="screen"><span class="commit-message">Added regression and fix to correct "bug" with namespace-prefixed container elements in META-INF/container.xml ; resolves Issue #2790017</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;&#8943;</code></p><pre class="screen"><span class="commit-message">Another attempt at flexible named entity and XInclude processing</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/lib/docbook.rb</code></p><pre class="screen"><span class="commit-message">Tweaking solution to Bug #2750442 following regression reported by Michael Wiedmann.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.1_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.75.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: highlight.source.xml</code></p><pre class="screen"><span class="commit-message">Updated documentation to reflect changes made in r8419.</span></pre>
+</li></ul></div>
+</div>
+
+</div>
+
+
+<div class="sect1" title="Release Notes: 1.75.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.75.0"></a>Release Notes: 1.75.0</h2></div></div></div>
+
+<p>This release includes important bug fixes and adds the following
+significant feature changes:
+</p><div class="variablelist"><dl><dt><span class="term">Gentext</span></dt><dd><p>Modifications to translations have been made. </p></dd><dt><span class="term">Common</span></dt><dd>
+<p>Added support for some format properties on tables using
+HTML <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> markup. </p>
+<p>Added two new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.defaultlabel.html"><em class="parameter"><code>qanda.defaultlabel</code></em></a> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</p>
+<p>Added code to handle <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> in <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> and part. The element is processed
+similarly to <a href="http://docbook.org/tdg5/en/html/dedication.html"><code class="sgmltag-element">dedication</code></a>. All <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> will appear as front matter, after
+any dedications.</p>
+</dd><dt><span class="term">FO</span></dt><dd>
+<p>The inclusion of highlighting code has been simplified.</p>
+<p>Add support for pgwide on informal objects.</p>
+<p>Added a new parameter, <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/bookmarks.collapse.html"><em class="parameter"><code>bookmarks.collapse</code></em></a>, that controls the initial <a href="http://docbook.org/tdg5/en/html/state.html"><code class="sgmltag-element">state</code></a> of the bookmark tree. Closes FR #1792326.</p>
+<p>Add support for more dbfo processing instructions.</p>
+<p>Add new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/variablelist.term.properties.html"><em class="parameter"><code>variablelist.term.properties</code></em></a> to format terms, per request # 1968513.</p>
+<p>Add support for @width on <a href="http://docbook.org/tdg5/en/html/screen.html"><code class="sgmltag-element">screen</code></a> and <a href="http://docbook.org/tdg5/en/html/programlisting.html"><code class="sgmltag-element">programlisting</code></a>, fixes bug #2012736.</p>
+<p>Add support for writing-mode="rl-tb" (right-to-left) in FO outputs. </p>
+<p>Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/writing.mode.html"><em class="parameter"><code>writing.mode</code></em></a> param for FO output.</p>
+</dd><dt><span class="term">HTML</span></dt><dd>
+<p>Convert all calls to class.attribute to calls to common.html.attributes to support dir, lang, and <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> attributes in html output for all elements. Fulfills feature request #1993833.</p>
+<p>Inclusion of highlighting code was simplified. Only one import is now necessary.</p>
+<p>Add new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.links.to.section.html"><em class="parameter"><code>index.links.to.section</code></em></a>.</p>
+<p>Add support for the new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.links.to.section.html"><em class="parameter"><code>index.links.to.section</code></em></a> param which permits precise links to indexterms in HTML output rather than to the <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</p>
+</dd><dt><span class="term">ePub</span></dt><dd>
+<p>Slightly more nuanced handling of <a href="http://docbook.org/tdg5/en/html/imageobject.html"><code class="sgmltag-element">imageobject</code></a> alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog.</p>
+<p>Added a colon after an <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann)</p>
+<p>Added DocBook <a href="http://docbook.org/tdg5/en/html/subjectset.html"><code class="sgmltag-element">subjectset</code></a> -&gt; OPF dc:<a href="http://docbook.org/tdg5/en/html/subject.html"><code class="sgmltag-element">subject</code></a> mapping and tests</p>
+<p>Added DocBook <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> -&gt; OPF dc:date mapping and tests</p>
+<p>Added DocBook <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> -&gt; OPF dc:description mapping and tests</p>
+<p>Added --output option to dbtoepub based on user request</p>
+</dd><dt><span class="term">HTMLHelp</span></dt><dd>
+<p>Add support for generating <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> target <a href="http://docbook.org/tdg5/en/html/database.html"><code class="sgmltag-element">database</code></a> for htmlhelp files.</p></dd><dt><span class="term">Params</span></dt><dd>
+<p>Add default setting for @rules attribute on HTML markup tables.</p>
+<p>Added a new parameter, <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/bookmarks.collapse.html"><em class="parameter"><code>bookmarks.collapse</code></em></a>, that controls the initial <a href="http://docbook.org/tdg5/en/html/state.html"><code class="sgmltag-element">state</code></a> of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326.</p>
+<p>Add new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/variablelist.term.properties.html"><em class="parameter"><code>variablelist.term.properties</code></em></a> to format terms, per request # 1968513.</p>
+<p>Add two new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.defaultlabel.html"><em class="parameter"><code>qanda.defaultlabel</code></em></a> values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045.</p>
+<p>Add param to control whether an <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> <a href="http://docbook.org/tdg5/en/html/entry.html"><code class="sgmltag-element">entry</code></a> links to a <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> or to the precise location of the <a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a>.</p>
+<p>New attribute list for <a href="http://docbook.org/tdg5/en/html/glossentry.html"><code class="sgmltag-element">glossentry</code></a> in <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a>.</p>
+<p>New parameter to support @width on <a href="http://docbook.org/tdg5/en/html/programlisting.html"><code class="sgmltag-element">programlisting</code></a> and <a href="http://docbook.org/tdg5/en/html/screen.html"><code class="sgmltag-element">screen</code></a>.</p>
+<p>Add attribute-sets for formatting <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> terms and defs.</p>
+</dd><dt><span class="term">Highlighting</span></dt><dd>
+<p>Inclusion of highlighting code was simplified. Only one import is now necessary.</p>
+</dd></dl></div><p>
+
+
+</p>
+<p>The following is a list of changes that have been made
+ since the 1.74.3 release.</p>
+
+<div class="sect2" title="Gentext"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_Gentext"></a>Gentext</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">gentext</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/sv.xml; locale/ja.xml; locale/pl.xml</code></p><pre class="screen"><span class="commit-message">Check in translations of <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">Legalnotice</code></a> submitted on mailing list.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/es.xml</code></p><pre class="screen"><span class="commit-message">Fix spelling errors in <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">Acknowledgements</code></a> entries.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/es.xml</code></p><pre class="screen"><span class="commit-message">Check in translations for 4 elements submitted through docbook-apps
+message of 14 April 2009.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: locale/zh.xml; locale/ca.xml; locale/ru.xml; locale/ga.xml; locale/gl.xml; l&#8943;</code></p><pre class="screen"><span class="commit-message">Internationalized punctuation in <a href="http://docbook.org/tdg5/en/html/glosssee.html"><code class="sgmltag-element">glosssee</code></a> and <a href="http://docbook.org/tdg5/en/html/glossseealso.html"><code class="sgmltag-element">glossseealso</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: Makefile</code></p><pre class="screen"><span class="commit-message">Check in fixes for DSSSL gentext targets from submitted patch #1689633.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/uk.xml</code></p><pre class="screen"><span class="commit-message">Check in major update submitted with bug report #2008524.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/zh_tw.xml</code></p><pre class="screen"><span class="commit-message">Check in fix to Note string submitted in bug #2441051.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/ru.xml</code></p><pre class="screen"><span class="commit-message">Checkin typo fix submitted in bug #2453406.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: gentext.xsl</code></p><pre class="screen"><span class="commit-message">Fix extra generated space when xrefstyle includes 'nopage'.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message">Add support for some format properties on tables using
+HTML <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> markup. These include:
+ - frame attribute on <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> (or uses $default.table.frame parameter).
+ - rules attribute on <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> (or uses $default.table.rules parameter).
+ - align attribute on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - valign attribute on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - colspan on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - rowspan on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - bgcolor on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: olink.xsl</code></p><pre class="screen"><span class="commit-message">Add placeholder template to massage <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> hot text to make
+customization easier, per Feature Request 1828608.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: targets.xsl</code></p><pre class="screen"><span class="commit-message">Add support for collecting <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> targets from a <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a>
+generated from a <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/glossary.collection.html"><em class="parameter"><code>glossary.collection</code></em></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Handle <a href="http://docbook.org/tdg5/en/html/firstterm.html"><code class="sgmltag-element">firstterm</code></a> like <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> in mode="title.markup".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Add match on <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in title.markup templates where missing.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">Changed "ancestor::<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>" to "(ancestor::<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> and (@id or @xml:id))".
+This enables proper formatting of inline elements in titles in TOCs,
+as long as these inlines don't have id or xml:id attributes.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: labels.xsl</code></p><pre class="screen"><span class="commit-message">Add two new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.defaultlabel.html"><em class="parameter"><code>qanda.defaultlabel</code></em></a> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: stripns.xsl; pi.xsl</code></p><pre class="screen"><span class="commit-message">Convert function-available(exsl:node-set) to use the new param
+so Xalan bug is isolated.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">Added fixes for bugs #2112656 and #1759205:
+1. Reverted mistaken commits r7485 and r7523.
+2. Updated the template with match="<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>" and mode="no.anchor.mode" so that
+@endterm is used if it exists and if the <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> has no content.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">Added code to handle <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> in <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> and part. The element is processed
+similarly to <a href="http://docbook.org/tdg5/en/html/dedication.html"><code class="sgmltag-element">dedication</code></a>. All <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> will appear as front matter, after
+any dedications.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: olink.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #2018717 <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/use.local.olink.style.html"><em class="parameter"><code>use.local.olink.style</code></em></a> uses wrong gentext context.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: olink.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #1787167 incorrect hot text for some olinks.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: common.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #1669654 Broken output if <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a> &lt;<a href="http://docbook.org/tdg5/en/html/year.html"><code class="sgmltag-element">year</code></a>&gt; contains a range.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: labels.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug in labelling <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a> inside <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a> inside <a href="http://docbook.org/tdg5/en/html/article.html"><code class="sgmltag-element">article</code></a> inside <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Jirka Kosek: highlight.xsl</code></p><pre class="screen"><span class="commit-message">Inclusion of highlighting code was simplified. Only one import is now necessary.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: fop1.xsl</code></p><pre class="screen"><span class="commit-message">Add the new fop extensions namespace declaration, in case FOP
+extension functions are used.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: formal.xsl</code></p><pre class="screen"><span class="commit-message">Add support for pgwide on informal objects.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Fixed spurious closing <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a> on line 134.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: docbook.xsl; autoidx-kosek.xsl; autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Convert function-available for node-set() to use
+new $exsl.node.set.available param in test.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xref.xsl</code></p><pre class="screen"><span class="commit-message">Suppress extra space after <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> when xrefstyle='select: <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a> nopage' (#2740472)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Fixed doc bug for row-height.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Internationalized punctuation in <a href="http://docbook.org/tdg5/en/html/glosssee.html"><code class="sgmltag-element">glosssee</code></a> and <a href="http://docbook.org/tdg5/en/html/glossseealso.html"><code class="sgmltag-element">glossseealso</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent; htmltbl.xsl; table.xsl</code></p><pre class="screen"><span class="commit-message">Add support for some format properties on tables using
+HTML <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> markup. These include:
+ - frame attribute on <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> (or uses $default.table.frame parameter).
+ - rules attribute on <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> (or uses $default.table.rules parameter).
+ - align attribute on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - valign attribute on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - colspan on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - rowspan on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+ - bgcolor on <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message">Add support bgcolor in <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+elements in HTML <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> markup.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: htmltbl.xsl</code></p><pre class="screen"><span class="commit-message">Add support for colspan and rowspan and bgcolor in <a href="http://docbook.org/tdg5/en/html/td.html"><code class="sgmltag-element">td</code></a> and <a href="http://docbook.org/tdg5/en/html/th.html"><code class="sgmltag-element">th</code></a>
+elements in HTML <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> markup.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb</code></p><pre class="screen"><span class="commit-message">Fix working of page-master left and right margins.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: param.xweb; param.ent; fop1.xsl</code></p><pre class="screen"><span class="commit-message">Added a new parameter, <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/bookmarks.collapse.html"><em class="parameter"><code>bookmarks.collapse</code></em></a>, that controls the initial <a href="http://docbook.org/tdg5/en/html/state.html"><code class="sgmltag-element">state</code></a> of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl; pi.xsl</code></p><pre class="screen"><span class="commit-message">Add support for dbfo row-height processing instruction, like that in dbhtml.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Add support for dbfo keep-together processing instruction for
+entire list instances.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl; block.xsl</code></p><pre class="screen"><span class="commit-message">Add support fo dbfo keep-together processing instruction to
+more blocks like list items and paras.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl; param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/variablelist.term.properties.html"><em class="parameter"><code>variablelist.term.properties</code></em></a> to format terms, per request # 1968513.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">In simple.xlink, rearrange order of processing.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Handle <a href="http://docbook.org/tdg5/en/html/firstterm.html"><code class="sgmltag-element">firstterm</code></a> like <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> in mode="xref-to".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: glossary.xsl; xref.xsl; pi.xsl; footnote.xsl</code></p><pre class="screen"><span class="commit-message">Implement simple.xlink for <a href="http://docbook.org/tdg5/en/html/glosssee.html"><code class="sgmltag-element">glosssee</code></a> and <a href="http://docbook.org/tdg5/en/html/glossseealso.html"><code class="sgmltag-element">glossseealso</code></a> so they can use
+other types of linking besides otherterm.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: qandaset.xsl</code></p><pre class="screen"><span class="commit-message">Add two new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.defaultlabel.html"><em class="parameter"><code>qanda.defaultlabel</code></em></a> values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">For the <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> templates, I changed <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> to <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>/<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+so other element's titles will not be affected.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl; verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Use param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/exsl.node.set.available.html"><em class="parameter"><code>exsl.node.set.available</code></em></a> to test for <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent; footnote.xsl</code></p><pre class="screen"><span class="commit-message">Start using new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/exsl.node.set.available.html"><em class="parameter"><code>exsl.node.set.available</code></em></a> to work around Xalan bug.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titlepage.templates.xml</code></p><pre class="screen"><span class="commit-message">Add comment on use of t:predicate for <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a> to prevent
+extra processing of multiple editors. Fixes bug 2687842.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl; autoidx.xsl</code></p><pre class="screen"><span class="commit-message">An <a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a> <a href="http://docbook.org/tdg5/en/html/primary.html"><code class="sgmltag-element">primary</code></a>, <a href="http://docbook.org/tdg5/en/html/secondary.html"><code class="sgmltag-element">secondary</code></a>, or <a href="http://docbook.org/tdg5/en/html/tertiary.html"><code class="sgmltag-element">tertiary</code></a> element with an id or xml:id
+now outputs that ID, so that <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> entries can be cross referenced to.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: synop.xsl</code></p><pre class="screen"><span class="commit-message">Added modeless template for ooclass|oointerface|ooexception.
+Closes bug #1623468.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Add template with match on <a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a> in mode="xref-to" to fix bug 2102592.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Now <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">qandaentry</code></a> will use the <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a> element in a <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a> for
+the <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> text if it has one.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">Add id if specified from @id to output for <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a> and <a href="http://docbook.org/tdg5/en/html/phrase.html"><code class="sgmltag-element">phrase</code></a> so
+they can be <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a>'ed to.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/phrase.html"><code class="sgmltag-element">phrase</code></a>, <a href="http://docbook.org/tdg5/en/html/simpara.html"><code class="sgmltag-element">simpara</code></a>, <a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a>, and <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a>.
+This assumes the <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> specifies something using xrefstyle since
+the elements don't have ordinary <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> text.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: toc.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug in new <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> templates.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates&#8943;</code></p><pre class="screen"><span class="commit-message">Added code to handle <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> in <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> and part. The element is processed
+similarly to <a href="http://docbook.org/tdg5/en/html/dedication.html"><code class="sgmltag-element">dedication</code></a>. All <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> will appear as front matter, after
+any dedications.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: toc.xsl</code></p><pre class="screen"><span class="commit-message">Rewrite <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> templates to support an empty <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> or populated <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a>
+in all permitted contexts. Same for lot elements.
+This fixes bug #1595969 for FO outputs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: index.xsl</code></p><pre class="screen"><span class="commit-message">Fix indents for <a href="http://docbook.org/tdg5/en/html/seealsoie.html"><code class="sgmltag-element">seealsoie</code></a> so they are consistent.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: param.xweb</code></p><pre class="screen"><span class="commit-message">Removed duplicate (<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/monospace.font.family.html"><em class="parameter"><code>monospace.font.family</code></em></a>).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/glossentry.list.item.properties.html"><em class="parameter"><code>glossentry.list.item.properties</code></em></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/monospace.verbatim.font.width.html"><em class="parameter"><code>monospace.verbatim.font.width</code></em></a> param to support @width on <a href="http://docbook.org/tdg5/en/html/programlisting.html"><code class="sgmltag-element">programlisting</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Put <a href="http://docbook.org/tdg5/en/html/programlisting.html"><code class="sgmltag-element">programlisting</code></a> in fo:block-container with writing-mode="lr-tb"
+when text direction is right to left because all program languages
+are left-to-right.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Add support for @width on <a href="http://docbook.org/tdg5/en/html/screen.html"><code class="sgmltag-element">screen</code></a> and <a href="http://docbook.org/tdg5/en/html/programlisting.html"><code class="sgmltag-element">programlisting</code></a>, fixes bug #2012736.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #1973585 <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a> with xrefstyle not handled correctly.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: block.xsl</code></p><pre class="screen"><span class="commit-message">Added support for <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> in <a href="http://docbook.org/tdg5/en/html/article.html"><code class="sgmltag-element">article</code></a>.
+Support in <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>/part remains to be added.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #1787167 incorrect hot text for some olinks.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: fo.xsl</code></p><pre class="screen"><span class="commit-message">Add writing-mode="tb-rl" as well since some XSL-FO processors support it.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autotoc.xsl; lists.xsl; glossary.xsl; fo.xsl; table.xsl; pagesetup.xsl</code></p><pre class="screen"><span class="commit-message">Add support for writing-mode="rl-tb" (right-to-left) in FO outputs.
+Changed instances of margin-left to margin-{$direction.align.start}
+and margin-right to margin-{$direction.align.end}. Those direction.align
+params are computed from the writing mode value in each locale's
+gentext key named 'writing-mode', introduced in 1.74.3 to add
+right-to-left support to HTML outputs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add attribute-sets for formatting <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> terms and defs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/writing.mode.html"><em class="parameter"><code>writing.mode</code></em></a> param for FO output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autotoc.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 1546008: in <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">qandaentry</code></a> in a <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>, use its blockinfo/<a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> or blockinfo/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+instead of <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a>, if available. For DocBook 5, use the <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> versions.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Add better pointer to README for XSLTHL</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">More tweaking the way that XSLTHL does or does not get called</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Alternate attempt at sanely including/excluding XSLTHT code</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Removed redundant lang and <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> attributes on list element inside
+div element for lists.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl; titlepage.xsl; division.xsl; toc.xsl; sections.xsl; table.xsl;&#8943;</code></p><pre class="screen"><span class="commit-message">Convert all calls to class.attribute to calls to common.html.attributes
+to support dir, lang, and <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> attributes in html output for all elements.
+Fulfills feature request #1993833.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunk-common.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #2750253 wrong links in list of figures in chunk.html
+when target html is in a subdirectory and dbhtml <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a> used.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: highlight.xsl</code></p><pre class="screen"><span class="commit-message">Inclusion of highlighting code was simplified. Only one import is now necessary.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunk-common.xsl; chunktoc.xsl; docbook.xsl; chunk-changebars.xsl; autoidx&#8943;</code></p><pre class="screen"><span class="commit-message">Convert function-available for node-set() to use
+new $exsl.node.set.available param in test.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Fixed doc bug for row-height.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Internationalized punctuation in <a href="http://docbook.org/tdg5/en/html/glosssee.html"><code class="sgmltag-element">glosssee</code></a> and <a href="http://docbook.org/tdg5/en/html/glossseealso.html"><code class="sgmltag-element">glossseealso</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl; html.xsl; block.xsl</code></p><pre class="screen"><span class="commit-message">More elements get common.html.attributes.
+Added locale.html.attributes template which does the lang,
+dir, and <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> attributes, but not the class attribute
+(used on <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a>, for example).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Replace more <a href="http://docbook.org/tdg5/en/html/literal.html"><code class="sgmltag-element">literal</code></a> class atts with mode="class.attribute" to support
+easier customization.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Support olinking in <a href="http://docbook.org/tdg5/en/html/glosssee.html"><code class="sgmltag-element">glosssee</code></a> and <a href="http://docbook.org/tdg5/en/html/glossseealso.html"><code class="sgmltag-element">glossseealso</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">In simple.xlink, rearrange order of processing.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Handle <a href="http://docbook.org/tdg5/en/html/firstterm.html"><code class="sgmltag-element">firstterm</code></a> like <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> in mode="xref-to".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl; html.xsl; block.xsl</code></p><pre class="screen"><span class="commit-message">Added template named common.html.attributes to output
+class, <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>, lang, and dir for most elements.
+Started adding it to some list and block elements.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: qandaset.xsl</code></p><pre class="screen"><span class="commit-message">Add two new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.defaultlabel.html"><em class="parameter"><code>qanda.defaultlabel</code></em></a> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; chunk-code.xsl; param.ent; xref.xsl; chunkfast.xsl; verbatim.x&#8943;</code></p><pre class="screen"><span class="commit-message">Use new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/exsl.node.set.available.html"><em class="parameter"><code>exsl.node.set.available</code></em></a> to test, handles Xalan bug.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Use named anchors for <a href="http://docbook.org/tdg5/en/html/primary.html"><code class="sgmltag-element">primary</code></a>, <a href="http://docbook.org/tdg5/en/html/secondary.html"><code class="sgmltag-element">secondary</code></a>, and <a href="http://docbook.org/tdg5/en/html/tertiary.html"><code class="sgmltag-element">tertiary</code></a> ids so
+duplicate entries with different ids can still have an id output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.links.to.section.html"><em class="parameter"><code>index.links.to.section</code></em></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl; autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Pass through an id on <a href="http://docbook.org/tdg5/en/html/primary.html"><code class="sgmltag-element">primary</code></a>, <a href="http://docbook.org/tdg5/en/html/secondary.html"><code class="sgmltag-element">secondary</code></a>, or <a href="http://docbook.org/tdg5/en/html/tertiary.html"><code class="sgmltag-element">tertiary</code></a> to
+the <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> <a href="http://docbook.org/tdg5/en/html/entry.html"><code class="sgmltag-element">entry</code></a>, so that one could <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> to an <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> <a href="http://docbook.org/tdg5/en/html/entry.html"><code class="sgmltag-element">entry</code></a>.
+You can't <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> to the id on an <a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a> because that is
+used to place the main <a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a> in the text flow.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Add support for the new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.links.to.section.html"><em class="parameter"><code>index.links.to.section</code></em></a> param which permits
+precise links to indexterms in HTML output rather than to
+the <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: synop.xsl</code></p><pre class="screen"><span class="commit-message">Added modeless template for ooclass|oointerface|ooexception.
+Closes bug #1623468.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: qandaset.xsl</code></p><pre class="screen"><span class="commit-message">Make sure a <a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a> has an <a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a>, even when it has no <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>,
+because it may be referenced in a <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a> or <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a>.
+Before, the <a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a> was output by the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>, but there was no
+<a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a> if there was no <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Add a template for <a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a> with mode="xref-to" to fix bug 2102592.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Now <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">qandaentry</code></a> will use the <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a> element in a <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a> for
+the <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> text if it has one.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: qandaset.xsl; html.xsl</code></p><pre class="screen"><span class="commit-message">Create separate templates for computing <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a> of <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a> and <a href="http://docbook.org/tdg5/en/html/answer.html"><code class="sgmltag-element">answer</code></a>
+in a <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">qandaentry</code></a>, so such can be used for the <a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a> text of an <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a>
+to a <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">qandaentry</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl; xref.xsl</code></p><pre class="screen"><span class="commit-message">Now support <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/phrase.html"><code class="sgmltag-element">phrase</code></a>, <a href="http://docbook.org/tdg5/en/html/simpara.html"><code class="sgmltag-element">simpara</code></a>, <a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a>, and <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a>,
+most useful when an xrefstyle is used.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: toc.xsl</code></p><pre class="screen"><span class="commit-message">Rewrite <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> templates to support an empty <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> or populated <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a>
+in all permitted contexts. Same for lot elements.
+This fixes bug #1595969 for HTML outputs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates&#8943;</code></p><pre class="screen"><span class="commit-message">Added code to handle <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> in <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> and part. The element is processed
+similarly to <a href="http://docbook.org/tdg5/en/html/dedication.html"><code class="sgmltag-element">dedication</code></a>. All <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> will appear as front matter, after
+any dedications.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: index.xsl</code></p><pre class="screen"><span class="commit-message">Rewrote <a href="http://docbook.org/tdg5/en/html/primaryie.html"><code class="sgmltag-element">primaryie</code></a>, <a href="http://docbook.org/tdg5/en/html/secondaryie.html"><code class="sgmltag-element">secondaryie</code></a> and <a href="http://docbook.org/tdg5/en/html/tertiaryie.html"><code class="sgmltag-element">tertiaryie</code></a> templates to handle
+nesting of elements and <a href="http://docbook.org/tdg5/en/html/seeie.html"><code class="sgmltag-element">seeie</code></a> and <a href="http://docbook.org/tdg5/en/html/seealsoie.html"><code class="sgmltag-element">seealsoie</code></a>, as reported in
+bug # 1168912.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autotoc.xsl</code></p><pre class="screen"><span class="commit-message">Fix <a href="http://docbook.org/tdg5/en/html/simplesect.html"><code class="sgmltag-element">simplesect</code></a> in <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> problem.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Add support for @width per bug report #2012736.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: formal.xsl; htmltbl.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #1787140 HTML tables not handling attributes correctly.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb</code></p><pre class="screen"><span class="commit-message">Move writing-mode param.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Remove a nesting of &lt;p&gt; inside &lt;p&gt; for <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a> (made XHTML* invalid, made HTML silly)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #1945872 to allow passthrough of colwidth values to
+HTML <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> when no <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/tablecolumns.extension.html"><em class="parameter"><code>tablecolumns.extension</code></em></a> is available and
+when no instance of * appears in the <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>'s colspecs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: block.xsl</code></p><pre class="screen"><span class="commit-message">Added support for <a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">acknowledgements</code></a> in <a href="http://docbook.org/tdg5/en/html/article.html"><code class="sgmltag-element">article</code></a>.
+Support in <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>/part remains to be added.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunk-common.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #1787167 incorrect hot text for some olinks.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: qandaset.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 1546008: in <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">qandaentry</code></a> in a <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>, use its blockinfo/<a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> or blockinfo/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+instead of <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a>, if available. For DocBook 5, use the <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> versions.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunktoc.xsl</code></p><pre class="screen"><span class="commit-message">Add support for generating <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> <a href="http://docbook.org/tdg5/en/html/database.html"><code class="sgmltag-element">database</code></a> when using chunktoc.xsl.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Add better pointer to README for XSLTHL</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Another stab at fixing the stupid XSLTHT includes across processors (Saxon regression reported by Sorin Ristache)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">More tweaking the way that XSLTHL does or does not get called</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Alternate attempt at sanely including/excluding XSLTHT code</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message">Convert function-available test for node-set() <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> to
+test of $exsl.node.set.available param.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added a template for <a href="http://docbook.org/tdg5/en/html/bibliolist.html"><code class="sgmltag-element">bibliolist</code></a>. Closes bug #1815916.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="ePub"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_Epub"></a>ePub</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">epub</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;&#8943;</code></p><pre class="screen"><span class="commit-message">Slightly more nuanced handling of <a href="http://docbook.org/tdg5/en/html/imageobject.html"><code class="sgmltag-element">imageobject</code></a> alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Add a colon after an <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/de.xml</code></p><pre class="screen"><span class="commit-message">Correctly set dc:language in OPF metadata when i18nizing. Closes Bug #2755150</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</code></p><pre class="screen"><span class="commit-message">Corrected namespace declarations for <a href="http://docbook.org/tdg5/en/html/literal.html"><code class="sgmltag-element">literal</code></a> XHTML elements to make them serialize "normally"</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Be a little bit more nuanced about dates</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x&#8943;</code></p><pre class="screen"><span class="commit-message">Add DocBook <a href="http://docbook.org/tdg5/en/html/subjectset.html"><code class="sgmltag-element">subjectset</code></a> -&gt; OPF dc:<a href="http://docbook.org/tdg5/en/html/subject.html"><code class="sgmltag-element">subject</code></a> mapping and tests</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x&#8943;</code></p><pre class="screen"><span class="commit-message">Add DocBook <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> -&gt; OPF dc:date mapping and tests</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x&#8943;</code></p><pre class="screen"><span class="commit-message">Add DocBook <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> -&gt; OPF dc:description mapping and tests</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Check in patch submitted by user to add opf:file-as attribute
+to dc:creator element.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/dbtoepub</code></p><pre class="screen"><span class="commit-message">Adding --output option to dbtoepub based on user request</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb</code></p><pre class="screen"><span class="commit-message">Cleaning and regularizing the generation of namespaced nodes for OPF, NCX, XHTML and other outputted filetypes (hat <a href="http://docbook.org/tdg5/en/html/tip.html"><code class="sgmltag-element">tip</code></a> to bobstayton for pointing out the silly, incorrect code)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/refclass.xml</code></p><pre class="screen"><span class="commit-message">Remove a nesting of &lt;p&gt; inside &lt;p&gt; for <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a> (made XHTML* invalid, made HTML silly)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/blockquotepre.xml</code></p><pre class="screen"><span class="commit-message">Added regression test and fix for XHTML validation problem with &lt;a&gt;s added inside &lt;<a href="http://docbook.org/tdg5/en/html/blockquote.html"><code class="sgmltag-element">blockquote</code></a>&gt;; This potentially causes another problem (where something is referenced by has no <a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a>, but someone reporting that should cause the whole &lt;a id='thing'/&gt; thing to be reconsidered with modern browsers in mind.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTMLHelp"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_HTMLHelp"></a>HTMLHelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">htmlhelp</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: htmlhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Add support for generating <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> target <a href="http://docbook.org/tdg5/en/html/database.html"><code class="sgmltag-element">database</code></a> for htmlhelp files.</span></pre>
+</li></ul></div>
+</div>
+
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: default.table.rules.xml</code></p><pre class="screen"><span class="commit-message">Add default setting for @rules attribute on HTML markup tables.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: bookmarks.collapse.xml</code></p><pre class="screen"><span class="commit-message">Added a new parameter, <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/bookmarks.collapse.html"><em class="parameter"><code>bookmarks.collapse</code></em></a>, that controls the initial <a href="http://docbook.org/tdg5/en/html/state.html"><code class="sgmltag-element">state</code></a>
+of the bookmark tree. When the parameter has a non-zero value (the default),
+only the top-level bookmarks are displayed initially. Otherwise, the whole
+tree of bookmarks is displayed.
+
+This is implemented for FOP 0.9X. Closes FR #1792326.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: variablelist.term.properties.xml</code></p><pre class="screen"><span class="commit-message">Add new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/variablelist.term.properties.html"><em class="parameter"><code>variablelist.term.properties</code></em></a> to format terms, per
+request # 1968513.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: qanda.defaultlabel.xml</code></p><pre class="screen"><span class="commit-message">Add two new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.defaultlabel.html"><em class="parameter"><code>qanda.defaultlabel</code></em></a> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: index.links.to.section.xml</code></p><pre class="screen"><span class="commit-message">Change default to 1 to match past behavior.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: exsl.node.set.available.xml</code></p><pre class="screen"><span class="commit-message">Isolate this text for Xalan bug regarding exsl:node-set available.
+If it is ever fixed in Xalan, just fix it here.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: index.links.to.section.xml</code></p><pre class="screen"><span class="commit-message">Add param to control whether an <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> <a href="http://docbook.org/tdg5/en/html/entry.html"><code class="sgmltag-element">entry</code></a> links to
+a <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> or to the precise location of the
+<a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: glossentry.list.item.properties.xml</code></p><pre class="screen"><span class="commit-message">New attribute list for <a href="http://docbook.org/tdg5/en/html/glossentry.html"><code class="sgmltag-element">glossentry</code></a> in <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: monospace.verbatim.font.width.xml</code></p><pre class="screen"><span class="commit-message">New parameter to support @width on <a href="http://docbook.org/tdg5/en/html/programlisting.html"><code class="sgmltag-element">programlisting</code></a> and <a href="http://docbook.org/tdg5/en/html/screen.html"><code class="sgmltag-element">screen</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: highlight.source.xml</code></p><pre class="screen"><span class="commit-message">Updated and reorganized the description.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: page.margin.outer.xml; page.margin.inner.xml</code></p><pre class="screen"><span class="commit-message">Add caveat about XEP bug when writing-mode is right-to-left.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: article.appendix.title.properties.xml; writing.mode.xml; body.start.indent&#8943;</code></p><pre class="screen"><span class="commit-message">Change 'left' to 'start' and 'right' to 'end' to support right-to-left
+writing mode.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: glossdef.block.properties.xml; glossdef.list.properties.xml; glossterm.blo&#8943;</code></p><pre class="screen"><span class="commit-message">Add attribute-sets for formatting <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> terms and defs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: glossterm.separation.xml</code></p><pre class="screen"><span class="commit-message">Clarify the description.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: make.year.ranges.xml</code></p><pre class="screen"><span class="commit-message">Now handles <a href="http://docbook.org/tdg5/en/html/year.html"><code class="sgmltag-element">year</code></a> element containing a comma or dash without error.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Highlighting"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_Highlighting"></a>Highlighting</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">highlighting</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Jirka Kosek: README</code></p><pre class="screen"><span class="commit-message">Inclusion of highlighting code was simplified. Only one import is now necessary.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: README</code></p><pre class="screen"><span class="commit-message">Adding XSLTHL readme</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: common.xsl</code></p><pre class="screen"><span class="commit-message">Alternate attempt at sanely including/excluding XSLTHT code</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="XSL-Saxon"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_XSL-Saxon"></a>XSL-Saxon</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-saxon</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: src/com/nwalsh/saxon/Text.java</code></p><pre class="screen"><span class="commit-message">Added a fix that prevents output of extra blank line.
+Hopefully this closes bug #894805.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="XSL-Xalan"><div class="titlepage"><div><div><h3 class="title"><a name="rn_V1.75.0_XSL-Xalan"></a>XSL-Xalan</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-xalan</code> code
+ since the 1.74.3 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: src/com/nwalsh/xalan/Text.java</code></p><pre class="screen"><span class="commit-message">Added a fix that prevents output of extra blank line.
+Hopefully this closes bug #894805.</span></pre>
+</li></ul></div>
+</div>
+
+
+</div>
+
+<div class="sect1" title="Release Notes: 1.74.3"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.74.3"></a>Release Notes: 1.74.3</h2></div></div></div>
+
+<p>This release fixes some bugs in the 1.74.2 release.</p>
+<p>See <code class="filename">highlighting/README</code> for XSLTHL usage instructions.</p>
+</div>
+<div class="sect1" title="Release Notes: 1.74.2"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.74.2"></a>Release Notes: 1.74.2</h2></div></div></div>
+
+<p>This release fixes some bugs in the 1.74.1 release.</p>
+</div>
+
+<div class="sect1" title="Release Notes: 1.74.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.74.1"></a>Release Notes: 1.74.1</h2></div></div></div>
+
+<p>This release includes important bug fixes and adds the following
+significant feature changes:
+</p><div class="variablelist"><dl><dt><span class="term">Gentext</span></dt><dd><p>Kirghiz locale added and Chinese translations have been simplified.</p><p>Somme support for gentext and right-to-left languages has been added.</p></dd><dt><span class="term">FO</span></dt><dd><p>Various bugs have been resolved. </p> <p>Support for a new processing instruction: <span class="markup">dbfo funcsynopsis-style</span> has been added. </p> <p>Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/email.mailto.enabled.html"><em class="parameter"><code>email.mailto.enabled</code></em></a> for FO output. Patch from Paolo Borelli. </p>
+<p>Support for documented metadata in fop1 mode has been added. </p>
+</dd><dt><span class="term">Highlighting</span></dt><dd><p>Support for the latest version of XSLTHL 2.0 and some new language syntaxes have been added to a variety of outputs.</p></dd><dt><span class="term">Manpages</span></dt><dd><p>Added man.output.better.ps.enabled param (zero default). It non-zero, no such
+markup is embedded in generated man pages, and no enhancements are
+included in the PostScript output generated from those man pages
+by the man -Tps <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>.</p></dd><dt><span class="term">HTML</span></dt><dd><p>Support for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/writing.mode.html"><em class="parameter"><code>writing.mode</code></em></a> to set text direction and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/alignment.html"><em class="parameter"><code>alignment</code></em></a> based on document locale has been added.</p>
+<p>Added a new top-level stylesheet module, chunk-changebars.xsl, to be
+used for generating chunked output with highlighting based on change
+(@revisionflag) markup. The module imports/includes the standard chunking
+and changebars templates and contains additional logic for chunked output.
+See FRs #1015180 and #1819915.</p>
+</dd><dt><span class="term">ePub</span></dt><dd>
+<p>Covers now look better in Adobe Digital Editions thanks to a patch from Paul Norton of Adobe</p>
+<p>Cover handling now more generic (including limited DocBook 5.0 <span class="markup">cover</span> support thanks to patch contributed by Liza Daly.</p> <p>Cover markup now carries more reliably into files destined for .mobi and the Kindle.</p> <p><span class="markup">dc:identifiers</span> are now generated from more types of numbering schemes. </p><p>Both SEO and semantic structure of chunked ePub output by ensuring that we always send out one and only one h1 in each XHTML chunk.</p>
+<p>Primitive support for embedding a single font added.</p>
+
+<p>Support for embedding a CSS customizations added.</p>
+</dd><dt><span class="term">Roundtrip</span></dt><dd>
+<p>Support for imagedata-metadata and <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> as images added.</p>
+
+<p>Support for imagedata-metadata and <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> as images added.</p>
+</dd><dt><span class="term">Params</span></dt><dd><p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.better.ps.enabled.html"><em class="parameter"><code>man.output.better.ps.enabled</code></em></a> added for Manpages output </p>
+<p><em class="parameter"><code>writing.mode.xml</code></em> added to set text direction.</p>
+
+<p>Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/email.mailto.enabled.html"><em class="parameter"><code>email.mailto.enabled</code></em></a> for FO output.
+Patch from Paolo Borelli. Closes #2086321.</p>
+
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/highlight.source.html"><em class="parameter"><code>highlight.source</code></em></a> upgraded to support the latest version of XSLTHL 2.0.</p>
+</dd></dl></div><p>
+</p>
+<p>The following is a list of changes that have been made since the 1.74.0 release.</p>
+
+
+<div class="sect2" title="Gentext"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_Gentext"></a>Gentext</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">gentext</code> code since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/ky.xml; Makefile</code></p><pre class="screen"><span class="commit-message">new Kirghiz locale from Ilyas Bakirov</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: locale/en.xml</code></p><pre class="screen"><span class="commit-message">Added "<a href="http://docbook.org/tdg5/en/html/acknowledgements.html"><code class="sgmltag-element">Acknowledgements</code></a>".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Dongsheng Song: locale/zh_cn.xml</code></p><pre class="screen"><span class="commit-message">Simplified Chinese translation.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/lv.xml; locale/ca.xml; locale/pt.xml; locale/tr.xml; locale/af.xml;&#8943;</code></p><pre class="screen"><span class="commit-message">Add writing-mode gentext string to support right-to-left languages.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">fo</code> code since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">David Cramer: footnote.xsl</code></p><pre class="screen"><span class="commit-message">Added a check to confirm that a <a href="http://docbook.org/tdg5/en/html/footnoteref.html"><code class="sgmltag-element">footnoteref</code></a>'s linkend points to a <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>. Stylesheets stop processing if not and provide a useful error message.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: spaces.xsl</code></p><pre class="screen"><span class="commit-message">Convert spaces to fo:leader also in elements in the DB 5 namespace.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl; synop.xsl</code></p><pre class="screen"><span class="commit-message">Added support for a new processing instruction: dbfo funcsynopsis-style.
+Closes bug #1838213.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl; param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/email.mailto.enabled.html"><em class="parameter"><code>email.mailto.enabled</code></em></a> for FO output.
+Patch from Paolo Borelli. Closes #2086321.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Added support for document metadata for fop1 (patch #2067318).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: param.ent; param.xweb; highlight.xsl</code></p><pre class="screen"><span class="commit-message">Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">html</code> code since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; docbook.xsl; param.ent; html.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/writing.mode.html"><em class="parameter"><code>writing.mode</code></em></a> to set text direction and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/alignment.html"><em class="parameter"><code>alignment</code></em></a> based on document locale.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: chunk-changebars.xsl</code></p><pre class="screen"><span class="commit-message">Added a new top-level stylesheet module, chunk-changebars.xsl, to be
+used for generating chunked output with highlighting based on change
+(@revisionflag) markup. The module imports/includes the standard chunking
+and changebars templates and contains additional logic for chunked output.
+See FRs #1015180 and #1819915.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">manpages</code> code since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Put the following at the top of generated roff for each page:
+ \" t
+purpose is to explicitly tell AT&amp;T troff that the page needs to be
+pre-processed through tbl(1); groff can <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a> it out
+automatically, but apparently AT&amp;T troff needs to be explicitly told</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="ePub"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_Epub"></a>ePub</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">epub</code> code since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Patch from Paul Norton of Adobe to get covers to look better in Adobe Digital Editions</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/v5cover.xml; bin/spec/sp&#8943;</code></p><pre class="screen"><span class="commit-message">Patch contributed by Liza Daly to make ePub <a href="http://docbook.org/tdg5/en/html/cover.html"><code class="sgmltag-element">cover</code></a> handling more generic. Additionally
+DocBook 5.0's &lt;<a href="http://docbook.org/tdg5/en/html/cover.html"><code class="sgmltag-element">cover</code></a>&gt; now has some limited support:
+
+- should <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> a <a href="http://docbook.org/tdg5/en/html/cover.html"><code class="sgmltag-element">cover</code></a> in the OPF guide for a DocBook 5.0 test document</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/files/isbn.xml; bin/spec/files/issn.xml; bin/spec/files/biblioid.&#8943;</code></p><pre class="screen"><span class="commit-message">Liza Daly reported that the dc:identifer-generation code was garbage (she was right).
+
+Added new tests:
+- should include at least one dc:identifier
+- should include an ISBN as URN for dc:identifier if an ISBN was in the metadata
+- should include an ISSN as URN for dc:identifier if an ISSN was in the metadata
+- should include an <a href="http://docbook.org/tdg5/en/html/biblioid.html"><code class="sgmltag-element">biblioid</code></a> as a dc:identifier if an <a href="http://docbook.org/tdg5/en/html/biblioid.html"><code class="sgmltag-element">biblioid</code></a> was in the metadata
+- should include a URN for a <a href="http://docbook.org/tdg5/en/html/biblioid.html"><code class="sgmltag-element">biblioid</code></a> with @class attribute as a dc:identifier if an <a href="http://docbook.org/tdg5/en/html/biblioid.html"><code class="sgmltag-element">biblioid</code></a> was in the metadata</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb</code></p><pre class="screen"><span class="commit-message">Improve both SEO and semantic structure of chunked ePub output by ensuring that
+we always send out one and only one h1 in each XHTML chunk.
+
+DocBook::Epub
+- should include one and only one &lt;h1&gt; in each HTML file in rendered ePub files
+for &lt;<a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>&gt;s
+- should include one and only one &lt;h1&gt; in each HTML file in rendered ePub files
+for &lt;<a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>&gt;s even if they do not have <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> markup</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x&#8943;</code></p><pre class="screen"><span class="commit-message">Adding better support for covers in epub files destined for .mobi and the Kindle</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/DejaVuSerif.otf; docbook.&#8943;</code></p><pre class="screen"><span class="commit-message">Adding primitive support for embedding a single font</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/test_cust.xsl; bin/spec/e&#8943;</code></p><pre class="screen"><span class="commit-message">Adding support for user-specified customization layers in dbtoepub</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s&#8943;</code></p><pre class="screen"><span class="commit-message">Adding CSS support to .epub target &amp; dbtoepub:
+ -c, --css [FILE] Use FILE for CSS on generated XHTML.
+
+
+DocBook::Epub
+...
+- should include a CSS <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> in HTML files when a CSS file has been provided
+- should include CSS file in .epub when a CSS file has been provided
+- should include a CSS <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> in OPF file when a CSS file has been provided</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Roundtrip"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_Roundtrip"></a>Roundtrip</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">roundtrip</code> code
+ since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; template.xml; template.dot</code></p><pre class="screen"><span class="commit-message">added support for imagedata-metadata
+added support for <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> as images</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; normalise2sections.xsl; sections2blocks.xsl</code></p><pre class="screen"><span class="commit-message">Improved support for <a href="http://docbook.org/tdg5/en/html/personname.html"><code class="sgmltag-element">personname</code></a> inlines.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml</code></p><pre class="screen"><span class="commit-message">Added support for <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl</code></p><pre class="screen"><span class="commit-message">added support for <a href="http://docbook.org/tdg5/en/html/orgname.html"><code class="sgmltag-element">orgname</code></a> in <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: specifications.xml; supported.xml; blocks2dbk.xsl; wordml2normalise.xsl; dbk2w&#8943;</code></p><pre class="screen"><span class="commit-message">Updated specification.
+to-DocBook: add cols attribute to <a href="http://docbook.org/tdg5/en/html/tgroup.html"><code class="sgmltag-element">tgroup</code></a>
+from-DocBook: fix for <a href="http://docbook.org/tdg5/en/html/blockquote.html"><code class="sgmltag-element">blockquote</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a></span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the <code class="filename">params</code> since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>The change was to add man.output.better.ps.enabled parameter, with
+its default value set to zero.
+
+If the value of the man.output.better.ps.enabled parameter is
+non-zero, certain markup is embedded in each generated man page
+such that PostScript output from the man -Tps <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a> for that
+page will include a number of enhancements designed to improve the
+quality of that output.
+
+If man.output.better.ps.enabled is zero (the default), no such
+markup is embedded in generated man pages, and no enhancements are
+included in the PostScript output generated from those man pages
+by the man -Tps <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>.
+
+WARNING: The enhancements provided by this parameter rely on
+features that are specific to groff (GNU troff) and that are not
+part of "classic" AT&amp;T troff or any of its derivatives. Therefore,
+any man pages you generate with this parameter enabled will be
+readable only on systems on which the groff (GNU troff) program is
+installed, such as GNU/Linux systems. The pages will not not be
+readable on systems on with the classic troff (AT&amp;T troff) <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>
+is installed.
+
+NOTE: The value of this parameter only affects PostScript output
+generated from the man <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>. It has no effect on output
+generated using the FO backend.
+
+<a href="http://docbook.org/tdg5/en/html/tip.html"><code class="sgmltag-element">TIP</code></a>: You can generate PostScript output for any man page by
+running the following <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>:
+
+man FOO -Tps &gt; FOO.ps
+
+You can then generate PDF output by running the following <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>:
+
+ps2pdf FOO.ps</p>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: writing.mode.xml</code></p><pre class="screen"><span class="commit-message">writing mode param used to set text direction.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: email.mailto.enabled.xml</code></p><pre class="screen"><span class="commit-message">Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/email.mailto.enabled.html"><em class="parameter"><code>email.mailto.enabled</code></em></a> for FO output.
+Patch from Paolo Borelli. Closes #2086321.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: highlight.source.xml; highlight.xslthl.config.xml</code></p><pre class="screen"><span class="commit-message">Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Highlighting"><div class="titlepage"><div><div><h3 class="title"><a name="summary_V1.74.1_Highlighting"></a>Highlighting</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">highlighting</code> code
+ since the 1.74.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Jirka Kosek: cpp-hl.xml; c-hl.xml; tcl-hl.xml; php-hl.xml; common.xsl; perl-hl.xml; delphi&#8943;</code></p><pre class="screen"><span class="commit-message">Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added</span></pre>
+</li></ul></div>
+</div>
+
+</div>
+
+
+<div class="sect1" title="Release Notes: 1.74.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.74.0"></a>Release Notes: 1.74.0</h2></div></div></div>
+
+<p>This release includes important bug fixes and adds the following
+significant feature changes:
+</p><div class="variablelist"><dl><dt><span class="term">.epub target</span></dt><dd><p>Paul Norton (Adobe) and Keith Fahlgren(O'Reilly Media) have donated code that generates <code class="filename">.epub</code> documents from
+DocBook input. An alpha-reference implementation in Ruby has also been provided.</p>
+<p>.epub is an open standard of the The International Digital Publishing Forum (IDPF),
+a the trade and standards association for the digital publishing industry. </p>
+<p>Read more about this target in <code class="filename">epub/README</code>
+</p></dd><dt><span class="term">XHTML 1.1 target</span></dt><dd><p>To support .epub output, a strict XHTML 1.1 target has been added. The stylesheets for this output are
+generated and are quite similar to the XHTML target.</p></dd><dt><span class="term">Gentext updates</span></dt><dd><p>A number of locales have been updated.</p></dd><dt><span class="term">Roundtrip improvements</span></dt><dd><p>Table, figure, template syncronization, and character style improvements have been made for WordML &amp; Pages. Support added for OpenOffice.org.</p></dd><dt><span class="term">First implementation of a libxslt extension</span></dt><dd>
+ <p>A stylesheet extension for libxslt, written in Python, has been added.
+ The extension is a function for adjusting column widths in CALS tables. See
+ <code class="filename">extensions/README.LIBXSLT</code> for more information.</p>
+ </dd></dl></div><p>
+</p>
+<p>The following is a list of changes that have been made
+ since the 1.73.2 release.</p>
+
+<div class="sect2" title="Gentext"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Gentext"></a>Gentext</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">gentext</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/id.xml</code></p><pre class="screen"><span class="commit-message">Checked in changes to Indonesion locale submitted by Euis Luhuanam a long time ago.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/lt.xml</code></p><pre class="screen"><span class="commit-message">Added changes to Lithuanian locate submitted a long time back by Nikolajus Krauklis.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/hu.xml</code></p><pre class="screen"><span class="commit-message">fixed error in lowercase.alpha definition in Hungarian locale</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/nb.xml</code></p><pre class="screen"><span class="commit-message">Corrected language code for nb locale, and restored missing "startquote" key.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/ja.xml</code></p><pre class="screen"><span class="commit-message">Committed changes to ja locale file, from Akagi Kobayashi. Adds bracket quotes around many xref instances that did not have them
+before.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile</code></p><pre class="screen"><span class="commit-message">"no" locale is now "nb"</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/nb.xml</code></p><pre class="screen"><span class="commit-message">Update Norwegian Bokmål translation. Thanks to Hans F. Nordhaug.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/no.xml; locale/nb.xml</code></p><pre class="screen"><span class="commit-message">per message from Hans F. Nordhaug, correct identifier for
+Norwegian Bokmål is "nb" (not "no") and has been for quite some
+time now...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/ja.xml</code></p><pre class="screen"><span class="commit-message">Converted ja.xml source file to use real unicode characters so
+that the actual glyphs so up when you edit it in a text editor
+(instead of the character references).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/ja.xml</code></p><pre class="screen"><span class="commit-message">Checked in changes to ja.xml locale file. Thanks to Akagi Kobayashi.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/it.xml</code></p><pre class="screen"><span class="commit-message">Changes from Federico Zenith</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Dongsheng Song: locale/zh_cn.xml</code></p><pre class="screen"><span class="commit-message">Added missing translations.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: l10n.xsl</code></p><pre class="screen"><span class="commit-message">Added new template "l10.language.name" for retrieving the
+English-language name of the lang setting of the current document.
+Closes #1916837. Thanks to Simon Kennedy.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">fixed syntax error</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">fixed a couple of typos</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">refined handling of cases where refentry "source" or "manual"
+metadata is missing or when we use fallback content instead. We
+now report a Warning if we use fallback content.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">don't use refmiscinfo@class=date value as fallback for refentry
+"source" or "manual" metadata fields</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Made reporting of missing refentry metadata more quiet:
+
+ - we no longer report anything if usable-but-not-preferred
+ metadata is found; we just quietly use whatever we manage to
+ find
+
+ - we now only report missing "source" metadata if the refentry
+ is missing BOTH "source name" and "version" metadata; if it
+ has one but not the other, we use whichever one it has and
+ don't report anything as missing
+
+The above changes were made because testing with some "real world"
+source reveals that some authors are intentionally choosing to use
+"non preferred" markup for some metadata, and also choosing to
+omit "source name" or "version" metadata in there DocBook XML. So
+it does no good to give them pedantic reminders about what they
+already know...
+
+Also, changed code to cause "fixme" text to be inserted in output
+in particular cases:
+
+ - if we can't manage to find any "source" metadata at all, we
+ now put fixme text into the output
+
+ - if we can't manage to find any "manual" metadata a all, we
+ now put fixme text into the output
+
+The "source" and "manual" metadata is necessary information, so
+buy putting the fixme stuff in the output, we alert users to the
+need problem of it being missing.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">When generating manpages output, we no longer report anything if
+the refentry source is missing date or pubdate content. In
+practice, many users intentionally omit the date from the source
+because they explicitly want it to be generated.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: l10n.xml</code></p><pre class="screen"><span class="commit-message">further change needed for switch from no locale to nb.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: common.xsl</code></p><pre class="screen"><span class="commit-message">Added support for orgname in authorgroup. Thanks to Camille
+Bégnis.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile</code></p><pre class="screen"><span class="commit-message">"no" locale is now "nb"</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: stripns.xsl</code></p><pre class="screen"><span class="commit-message">Removed the template matching "ng:link|db:link" (in order to make @xlink:show
+work with &lt;link&gt; elements). As far as I can tell, this template is no longer needed.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: entities.ent</code></p><pre class="screen"><span class="commit-message">Moved declaration of comment.block.parents entity to common/entities.ent.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">Added an update the fix made in revision 7528 (handling of xref/link in no.anchor.mode mode).
+Having xref in title is not a problem as long as the target is not an ancestor element.
+Closes bug #1838136.
+
+Note that an xref that is in a title and whose target is an ancestor element is still not
+rendered in the TOC. This could be considered a bug, but on the other hand I cannot really
+see the point in having such an xref in a document.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">Added a "not(ancestor::title)" test to work around "too many nested
+apply-templates" problems when processing xrefs or links in no.anchor.mode mode.
+Hopefully, this closes bug #1811721.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">Removed old template matching "link" in no.anchor.mode mode.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">Process &lt;link&gt; in no.anchor.mode mode with the same template as &lt;xref&gt;.
+Closes bug #1759205 (Empty link in no.anchor.mode mode).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titles.xsl</code></p><pre class="screen"><span class="commit-message">In no.anchor.mode mode, do not output anchors for elements that are descendants
+of &lt;title&gt;. Previously, having inline elements with @id/@xml:id in &lt;title&gt;s
+resulted in anchors both in the TOC and in the main flow. Closes bug #1797492.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> <p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Updated documentation for keep-together.</span></pre> </li><li class="listitem"> <p><code class="literal">Mauritz Jeanson: task.xsl</code></p><pre class="screen"><span class="commit-message">Enabled use of the keep-together PI on <a href="http://docbook.org/tdg5/en/html/task.html"><code class="sgmltag-element">task</code></a> elements.</span></pre> </li><li class="listitem">
+<p><code class="literal">Robert Stayton: index.xsl</code></p><pre class="screen"><span class="commit-message">FOP1 requires fo:wrapper for inline index entries, not fo:inline.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: index.xsl</code></p><pre class="screen"><span class="commit-message">Fixed non-working inline.or.block template for indexterm wrappers.
+Add fop1 to list of processors using inline.or.block.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: table.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug #1891965 (colsep in entytbl not working).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Added support for title in revhistory. Closes bug #1842847.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Small doc cleanup (dbfo float-type).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Insert commas between multiple copyright holders.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: autotoc.xsl; division.xsl</code></p><pre class="screen"><span class="commit-message">Added modifications to support nested set elements. See bug #1853172.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Added normalize-space to xsl:sorts to avoid missorting of glossterms due to stray leading spaces.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
+and the "hot text" is the biblioid itself enclosed in brackets.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Moved declaration of comment.block.parents entity to common/entities.ent.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Updated message about unmatched element.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: param.xweb</code></p><pre class="screen"><span class="commit-message">Added link to profiling chapter of TCG.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Fixed typo (refsynopsysdiv -&gt; refsynopsisdiv).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: fop.xsl; fop1.xsl; ptc.xsl; xep.xsl</code></p><pre class="screen"><span class="commit-message">Added test to check generate.index param when generating pdf bookmarks</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Added support for MathML in imagedata.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: math.xsl</code></p><pre class="screen"><span class="commit-message">Removed unnecessary extra test condition in test express that
+checks for passivetex.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: math.xsl</code></p><pre class="screen"><span class="commit-message">Don't use fo:instream-foreign-object if we are processing with
+passivetex. Closes #1806899. Thanks to Justus Piater.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: component.xsl</code></p><pre class="screen"><span class="commit-message">Added code to output a TOC for an appendix in an article when
+generate.toc='article/appendix toc'. Closes bug #1669658.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Dongsheng Song: biblio-iso690.xsl</code></p><pre class="screen"><span class="commit-message">Change encoding from "windows-1250" to "UTF-8".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Updated documentation for dbfo_label-width.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added support for the dbfo_label-width PI in calloutlists.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: biblio.xsl</code></p><pre class="screen"><span class="commit-message">Support finding glossary database entries inside bibliodivs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: formal.xsl</code></p><pre class="screen"><span class="commit-message">Complete support for &lt;?dbfo pgwide="1"?&gt; for informal
+elements too.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: table.xsl</code></p><pre class="screen"><span class="commit-message">In the table.block template, added a check for the dbfo_keep-together PI, so that
+a table may break (depending on the PI value) at a page break. This was needed
+since the outer fo:block that surrounds fo:table has keep-together.within-column="always"
+by default, which prevents the table from breaking. Closes bug #1740964 (Titled
+table does not respect dbfo PI).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Added a few missing @role="tcg".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Use normalize-space() in glossterm comparisons (as in html/inline.xsl).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Removed the [&amp;scope;] predicate from the target variable in the template with name="reference".
+This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
+with index.on.type=1. Closes bug #1680836.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl; xref.xsl; footnote.xsl</code></p><pre class="screen"><span class="commit-message">Added capability in FO output for displaying URLs for all
+hyperlinks (elements marked up with xlink:href attributes) in the
+same way as URLs for ulinks are already handled (which is to say,
+either inline or as numbered footnotes).
+
+Background on this change:
+DocBook 5 allows "ubiquitous" linking, which means you can make
+any element a hyperlink just by adding an xlink:href attribute to
+it, with the value set to an external URL. That's in contrast to
+DocBook 4, which only allows you to use specific elements (e.g.,
+the link and ulink elements) to mark up hyperlinks.
+
+The existing FO stylesheets have a mechanism for handling display
+of URLs for hyperlinks that are marked up with ulink, but they did
+not handle display of URLs for elements that were marked up with
+xlink:href attributes. This change adds handling for those other
+elements, enabling the URLs they link to be displayed either
+inline or as numbered footnotes (depending on what values the user
+has the ulink.show and ulink.footnotes params set to).
+
+Note that this change only adds URL display support for elements
+that call the simple.xlink template -- which currently is most
+(but not all) inline elements.
+
+This change also moves the URL display handling out of the ulink
+template and into a new "hyperlink.url.display" named template;
+the ulink template and the simple.xlink named template now both
+call the hyperlink.url.display template.
+
+Warning: In the stylesheet code that determines what footnote
+number to assign to each footnote or external hyperlink, there is
+an XPath expression for determining whether a particular
+xlink:href instance is an external hyperlink; that expression is
+necessarily a bit complicated and further testing may reveal that
+it doesn't handle all cases as expected -- so some refinements to
+it may need to be done later.
+
+Closes #1785519. Thanks to Ken Morse for reporting and
+troubleshooting the problem.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> <p><code class="literal">Keith Fahlgren: inline.xsl; synop.xsl</code></p><pre class="screen"><span class="commit-message">Work to make HTML and XHTML targets more valid</span></pre> </li><li class="listitem"> <p><code class="literal">Keith Fahlgren: table.xsl</code></p><pre class="screen"><span class="commit-message">Add better handling for tables that have footnotes in the titles</span></pre> </li><li class="listitem"> <p><code class="literal">Keith Fahlgren: biblio.xsl</code></p><pre class="screen"><span class="commit-message">Add anchors to bibliodivs</span></pre> </li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: formal.xsl; Makefile; htmltbl.xsl</code></p><pre class="screen"><span class="commit-message">Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
+and Keith Fahlgren of O'Reilly.</span></pre>
+<p>This change includes new code for generating the XHTML 1.1 target sanely.</p>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: biblio.xsl</code></p><pre class="screen"><span class="commit-message">Added code for creating URLs from biblioids with @class="doi" (representing Digital
+Object Identifiers). See FR #1934434 and http://doi.org.
+
+To do: 1) Add support for FO output. 2) Figure out how @class="doi" should be handled
+for bibliorelation, bibliosource and citebiblioid.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Norman Walsh: formal.xsl</code></p><pre class="screen"><span class="commit-message">Don't use xsl:copy because it forces the resulting element to be in the same namespace as the source element; in the XHTML stylesheets, that's wrong. But the HTML-to-XHTML converter does the right thing with literal result elements, so use one of them.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile</code></p><pre class="screen"><span class="commit-message">Added checks and hacks to various makefiles to enable building
+under Cygwin. This stuff is ugly and maybe not worth the mess and
+trouble, but does seem to work as expected and not break anything
+else.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: docbook.xsl</code></p><pre class="screen"><span class="commit-message">added "exslt" namespace binding to html/docbook.xsl file (in
+addition to existing "exsl" binding. reason is because lack of it
+seems to cause processing problems when using the profiled
+version of the stylsheet</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Norman Walsh: chunk-common.xsl</code></p><pre class="screen"><span class="commit-message">Rename link</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: table.xsl</code></p><pre class="screen"><span class="commit-message">Added a fix to make rowsep apply to the last row of thead in entrytbl.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl</code></p><pre class="screen"><span class="commit-message">Simplified and streamlined handling of output for ANSI-style
+funcprototype output, to correct a problem that was causing type
+data to be lost in the output parameter definitions. For example,
+for an instance like this:
+ &lt;paramdef&gt;void *&lt;parameter&gt;dataptr&lt;/parameter&gt;[]&lt;/paramdef&gt;
+... the brackets (indicating an array type) were being dropped.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl</code></p><pre class="screen"><span class="commit-message">Changed HTML handling of K&amp;R-style paramdef output. The parameter
+definitions are no longer output in a table (though the prototype
+still is). The reason for the change is that the
+kr-tabular-funcsynopsis-mode template was causing type data to be
+lost in the output parameter definitions. For example, for an
+instance like this:
+ &lt;paramdef&gt;void *&lt;parameter&gt;dataptr&lt;/parameter&gt;[]&lt;/paramdef&gt;
+... the brackets (indicating an array type) were being dropped.
+The easiest way to deal with the problem is to not try to chop up
+the parameter definitions and display them in table format, but to
+instead just output them as-is. May not look quite as pretty, but
+at least we can be sure no information is being lost...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: pi.xsl</code></p><pre class="screen"><span class="commit-message">updated wording of doc for funcsynopsis-style PI</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: param.xweb; param.ent; synop.xsl</code></p><pre class="screen"><span class="commit-message">Removed the funcsynopsis.tabular.threshold param. It's no longer
+being used in the code and hasn't been since mid 2006.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Added support for the img.src.path parameter for SVG graphics. Closes bug #1888169.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: chunk-common.xsl</code></p><pre class="screen"><span class="commit-message">Added missing space.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Norman Walsh: component.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug where component titles inside info elements were not handled properly</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: pi.xsl</code></p><pre class="screen"><span class="commit-message">Moved dbhtml_stop-chunking embedded doc into alphabetical order,
+fixed text of TCG section it see-also'ed.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: pi.xsl</code></p><pre class="screen"><span class="commit-message">Added support for &lt;?dbhtml stop-chunking?&gt; processing instruction</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: chunk-common.xsl; pi.xsl</code></p><pre class="screen"><span class="commit-message">Added support for &lt;?dbhtml stop-chunking?&gt; processing instruction</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry. Also added normalize-space to avoid missorting due to stray leading spaces.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
+and the "hot text" is the biblioid itself enclosed in brackets.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added support for @xlink:show in the simple.xlink template. The "new" and "replace"
+values are supported (corresponding to values of "_blank" and "_top" for the
+ulink.target parameter). I have assumed that @xlink:show should override ulink.target
+for external URI links. This closes bugs #1762023 and #1727498.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Moved declaration of comment.block.parents entity to common/entities.ent.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: param.xweb</code></p><pre class="screen"><span class="commit-message">Added link to profiling chapter of TCG.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Dongsheng Song: biblio-iso690.xsl</code></p><pre class="screen"><span class="commit-message">Change encoding from "windows-1250" to "UTF-8".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: biblio.xsl</code></p><pre class="screen"><span class="commit-message">Add support in biblio collection to entries in bibliodivs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Added missing @role="tcg".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: chunk-common.xsl; titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Refactored legalnotice/revhistory chunking, so that the use.id.as.filename
+parameter as well as the dbhtml_filename PI are taken into account. A new named
+template in titlepage.xsl is used to compute the filename.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: chunk-common.xsl; titlepage.xsl</code></p><pre class="screen"><span class="commit-message">An update to the fix for bug #1790495 (r7433):
+The "ln-" prefix is output only when the legalnotice doesn't have an
+@id/@xml:id, in which case the stylesheets generate an ID value,
+resulting in a filename like "ln-7e0fwgj.html". This is useful because
+without the prefix, you wouldn't know that the file contained a legalnotice.
+The same logic is also applied to revhistory, using an "rh-" prefix.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Removed the [&amp;scope;] predicate from the target variable in the template with name="reference".
+This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
+with index.on.type=1. Closes bug #1680836.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Added 'ln-' prefix to the name of the legalnotice chunk, in order to match the
+&lt;link href"..."&gt; that is output by make.legalnotice.head.links (chunk-common.xsl).
+Modified the href attribute on the legalnotice link.
+Closes bug #1790495.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl</code></p><pre class="screen"><span class="commit-message">slightly adjusted spacing around admonition markers</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl; utility.xsl</code></p><pre class="screen"><span class="commit-message">make sure refsect3 titles are preceded by a line of space, and
+make the indenting of their child content less severe</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">only indent verbatim environments in TTY output, not in non-TTY/PS</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">made another adjustment to correct vertical alignment of admonition marker</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl; other.xsl</code></p><pre class="screen"><span class="commit-message">Adjusted/corrected alignment of adominition marker in PS/non-TTY output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: endnotes.xsl</code></p><pre class="screen"><span class="commit-message">For PS/non-TTY output, display footnote/endnote numbers in
+superscript.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl</code></p><pre class="screen"><span class="commit-message">Changed handling of hanging indents for cmdsynopsis, funcsynopsis,
+and synopfragment such that they now look correct in non-TTY/PS
+output. We now use the groff \w escape to hang by the actual width
+-- in the current font -- of the command, funcdef, or
+synopfragment references number (as opposed to hanging by the
+number of characters). This rendering in TTY output remains the
+same, since the width in monospaced TTY output is the same as the
+number of characters.
+
+Also, created new synopsis-block-start and synopsis-block-end
+templates to use for cmdsynopsis and funcsynopsis instead of the
+corresponding verbatim-* templates.
+
+Along with those changes, also corrected a problem that caused the
+content of synopfragment to be dropped, and made a
+vertical-spacing change to adjust spacing around table titles and
+among sibling synopfragment instances.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl</code></p><pre class="screen"><span class="commit-message">use common l10.language.name template to retrieve English-language name</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl; inline.xsl</code></p><pre class="screen"><span class="commit-message">added comment in code explaining why we don't put filename output
+in italic (despite the fact that man guidelines say we should)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl</code></p><pre class="screen"><span class="commit-message">put filename output in monospace instead of italic</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl</code></p><pre class="screen"><span class="commit-message">put cmdsynopsis in monospace</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl</code></p><pre class="screen"><span class="commit-message">removed template match for literal. template matches for monospace
+inlines are all imported from the HTML stylesheet</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">don't indent verbatim environments that are descendants of
+refsynopsisdiv, not put backgrounds behind them</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl</code></p><pre class="screen"><span class="commit-message">set output of the literal element in monospace. this causes all
+inline monospace instances in the git man pages to be set in
+monospace (since DocBook XML source for git docs is generated with
+asciidoc and asciidoc consistently outputs only &lt;literal&gt; for
+inline monospace (not &lt;command&gt; or &lt;code&gt; or anything else).
+Of course this only affects non-TTY output...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">Added inline.monoseq named template.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">don't bother using a custom register to store the previous
+font-family value when setting blocks of text in code font; just
+use \F[] .fam with no arg to switch back</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: endnotes.xsl</code></p><pre class="screen"><span class="commit-message">put links in blue in PS output (note that this matches how groff
+renders content marked up with the .URL macro)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">removed man.links.are.underlined and added man.font.links. Also,
+changed the default font formatting for links to bold.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Added new param man.base.url.for.relative.links .. specifies a
+base URL for relative links (for ulink, @xlink:href, imagedata,
+audiodata, videodata) shown in the generated NOTES section of
+man-page output. The value of man.base.url.for.relative.links is
+prepended to any relative URI that is a value of ulink url,
+xlink:href, or fileref attribute.
+
+If you use relative URIs in link sources in your DocBook refentry
+source, and you leave man.base.url.for.relative.links unset, the
+relative links will appear "as is" in the NOTES section of any
+man-page output generated from your source. That's probably not
+what you want, because such relative links are only usable in the
+context of HTML output. So, to make the links meaningful and
+usable in the context of man-page output, set a value for
+man.base.url.for.relative.links that points
+to the online version of HTML output generated from your DocBook
+refentry source. For example:
+
+ &lt;xsl:param name="man.base.url.for.relative.links"
+ &gt;http://www.kernel.org/pub/software/scm/git/docs/&lt;/xsl:param&gt;</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">If a source refentry contains a Documentation or DOCUMENTATION
+section, don't report it as having missing AUTHOR information.
+Also, if missing a contrib/personblurb for a person or org, report
+pointers to http://docbook.sf.net/el/personblurb and to
+http://docbook.sf.net/el/contrib</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">If we encounter an author|editor|othercredit instance that lacks a
+personblurb or contrib, report it to the user (because that means
+we have no information about that author|editor|othercredit to
+display in the generated AUTHOR|AUTHORS section...)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl; docbook.xsl; other.xsl</code></p><pre class="screen"><span class="commit-message">if we can't find any usable author data, emit a warning and insert
+a fixme in the output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">fixed bug in indenting of output for contrib instances in AUTHORS
+section. Thanks to Daniel Leidert and the fglrx docs for exposing
+the bug.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">for a para or simpara that is the first child of a callout,
+suppress the .sp or .PP that would normally be output (because in
+those cases, the output goes into a table cell, and the .sp or .PP
+markup causes a spurious linebreak before it when displayed</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added support for rendering co callouts and calloutlist instances.
+So you can now use simple callouts -- marking up programlisting
+and such with co instances -- and have the callouts displayed in
+man-page output. ("simple callouts" means using co@id and
+callout@arearefs pointing to co@id instances; in man/roff output,
+we can't/don't support markup that uses areaset and area)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">only put a line of space after a verbatim if it's followed by a
+text node or a paragraph</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">put verbatim environments in slightly smaller font in non-TTY
+output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">minor whitespace-only reformatting of lists.xsl source</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Made refinements/fixes to output of orderedlist and itemizedlist
+-- in part, to get mysql man pages to display correctly. This
+change causes a "\c" continuation marker to be added between
+listitem markers and contents (to ensure that the content remains
+on the same line as the marker when displayed)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">put a line of vertical space after all verbatim output that has
+sibling content following it (not just if that sibling content is
+a text node)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">refined spacing around titles for admonitions</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl; other.xsl</code></p><pre class="screen"><span class="commit-message">Deal with case of verbatim environments that have a linebreak
+after the opening tag. Assumption is that users generally don't
+want that linebreak to appear in output, so we do some groff
+hackery to mess with vertical spacing and close the space.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl</code></p><pre class="screen"><span class="commit-message">indexterm instances now produce groff comments like this:
+
+ .\" primary: secondary: tertiary
+
+remark instances, if non-empty, now produce groff comments</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: charmap.groff.xsl; other.xsl</code></p><pre class="screen"><span class="commit-message">convert no-break space character to groff "\ \&amp;" (instead of just
+"\ "). the reason is that if a space occurs at the end of a line,
+our processing causes it to be eaten. a real-world case of this is
+the mysql(1) man page. appending the "\&amp;" prevents that</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">output "sp" before simpara output, not after it (outputting it
+after results in undesirable whitespace in particular cases; for
+example, in the hg/mercurial docs</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl</code></p><pre class="screen"><span class="commit-message">renamed from title-preamble to pinch.together and replaced "sp -1"
+between synopsis fragments with call to pinch.together instead</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: table.xsl</code></p><pre class="screen"><span class="commit-message">use title-preamble template for table titles (instead of "sp -1"
+hack), and "sp 1" after all tables (instead of just "sp"</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">created title-preamble template for suppressing line spacing after
+headings</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">further refinement of indenting in AUTHORS section</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl; other.xsl</code></p><pre class="screen"><span class="commit-message">refined handling of admonitions</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Use RS/RE in another place where we had IP ""</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">Replace (ab)use of IP with "sp -1" in AUTHORS section with RS/RE
+instead.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: table.xsl; synop.xsl; info.xsl</code></p><pre class="screen"><span class="commit-message">changed all instances of ".sp -1n" to ".sp -1"</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl</code></p><pre class="screen"><span class="commit-message">add extra line before SH heads only in non-TTY output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">Reworked output for admonitions (caution, important, note, tip,
+warning). In TTY output, admonitions now get indented. In non-TTY
+output, a colored marker (yellow) is displayed next to them.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl</code></p><pre class="screen"><span class="commit-message">Added BM/EM macros for putting a colored marker in margin next to
+a block of text.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">created make.bold.title template by moving title-bolding part out
+from nested-section-title template. This allows the bolding to
+also be used by the template for formatting admonitions</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">put .br before copyright contents to prevent them from getting run in</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl; other.xsl; utility.xsl</code></p><pre class="screen"><span class="commit-message">made point size of output for Refsect2 and Refsect3 heads bigger</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl</code></p><pre class="screen"><span class="commit-message">put slightly more space between SH head and underline in non-TTY
+output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: param.xweb; param.ent; other.xsl</code></p><pre class="screen"><span class="commit-message">Added the man.charmap.subset.profile.english parameter and refined
+the handling of charmap subsets to differentiate between English
+and non-English source.
+
+This way charmap subsets are now handled is this:
+
+If the value of the man.charmap.use.subset parameter is non-zero,
+and your DocBook source is not written in English (that is, if its
+lang or xml:lang attribute has a value other than en), then the
+character-map subset specified by the man.charmap.subset.profile
+parameter is used instead of the full roff character map.
+
+Otherwise, if the lang or xml:lang attribute on the root element
+in your DocBook source or on the first refentry element in your
+source has the value en or if it has no lang or xml:lang
+attribute, then the character-map subset specified by the
+man.charmap.subset.profile.english parameter is used instead of
+man.charmap.subset.profile.
+
+The difference between the two subsets is that
+man.charmap.subset.profile provides mappings for characters in
+Western European languages that are not part of the Roman
+(English) alphabet (ASCII character set).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl</code></p><pre class="screen"><span class="commit-message">Various updates, mainly related to uppercasing SH titles:
+
+ - added a "Language: " metadata line to the top comment area of
+ output man pages, to indicate the language the page is in
+
+ - added a "toupper" macro of doing locale-aware uppercasing of
+ SH titles and cross-references to SH titles; the mechanism
+ relies on the uppercase.alpha and lowercase.alpha DocBook
+ gentext keys to do locale-aware uppercasing based on the
+ language the page is written in
+
+ - added a "string.shuffle" template, which provides a library
+ function for "shuffling" two strings together into a single
+ string; it takes the first character for the first string, the
+ first character from second string, etc. The only current use
+ for it is to generate the argument for the groff tr request
+ that does string uppercasing.
+
+ - added make.tr.uppercase.arg and make.tr.normalcase.arg named
+ templates for use in generating groff code for uppercasing and
+ "normal"-casing SH titles
+
+ - made the BB/BE "background drawing" macros have effect only in
+ non-TTY output
+
+ - output a few comments in the top part of source</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">removed some leftover kruft</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">To create the name(s) for each man page, we now replace any spaces
+in the refname(s) with underscores. This ensures that tools like
+lexgrog(1) will be able to parse the name (lexgrog won't parse
+names that contain spaces).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Put a comment into source of man page to indicate where the main
+content starts. (We now have a few of macro definitions at the
+start of the source, so putting this comment in helps those that
+might be viewing the source.)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">refined mechanism for generating SH titles</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: charmap.groff.xsl</code></p><pre class="screen"><span class="commit-message">Added zcaron, Zcaron, scaron, and Scaron to the groff character map.
+This means that generated Finnish man pages will no longer contain
+any raw accented characters -- they'll instead by marked up with
+groff escapes.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl; utility.xsl</code></p><pre class="screen"><span class="commit-message">corrected a regression I introduced about a year ago that caused
+dots to be output just as "\." -- instead needs to be "\&amp;." (which
+is what it will be now, after this change)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Changed backend handling for generating titles for SH sections and
+for cross-references to those sections. This should have no effect
+on TTY output (behavior should remain the same hopefully) but
+results in titles in normal case (instead of uppercase) in PS
+output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">use make.subheading template to make subheadings for AUTHORS and
+COPYRIGHT sections (instead of harcoding roff markup)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">put code font around programlisting etc.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl; docbook.xsl</code></p><pre class="screen"><span class="commit-message">embed custom macro definitions in man pages, plus wrap synopsis in
+code font</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: endnotes.xsl</code></p><pre class="screen"><span class="commit-message">use the make.subheading template to generated SH subheading for
+endnotes section.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added some templates for generating if-then-else conditional
+markup in groff, so let's use those instead of hard-coding it in
+multiple places...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl; utility.xsl</code></p><pre class="screen"><span class="commit-message">Initial checkin of some changes related to making PS/PDF output
+from "man -l -Tps" look better. The current changes:
+
+ - render synopsis and verbatim sections in a monospace/code font
+
+ - put a light-grey background behind all programlisting, screen,
+ and literallayout instances
+
+ - prevent SH heads in PS output from being rendered in uppercase
+ (as they are in console output)
+
+ - also display xrefs to SH heads in PS output in normal case
+ (instead of uppercase)
+
+ - draw a line under SH heads in PS output
+
+The changes made to the code to support the above features were:
+
+ - added some embedded/custom macros: one for conditionally
+ upper-casing SH x-refs, one for redefining the SH macro
+ itself, with some conditional handling for PS output, and
+ finally a macro for putting a background/screen (filled box)
+ around a block of text (e.g., a program listing) in PS output
+
+ - added utility templates for wrapping blocks of text in code
+ font; also templates for inline code font</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: refentry.xsl</code></p><pre class="screen"><span class="commit-message">refpurpose nodes now get apply-templates instead of just normalize-space().</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Fixed alignment of first lined of text for each listitem in
+orderedlist output for TTY. Existing code seemed to have been
+causing an extra undesirable space to appear.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Wrapped some roff conditionals around roff markup for orderedlist
+and itemizedlist output, so that the lists look acceptable in PS
+output as well as TTY.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: pi.xsl; synop.xsl; param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Added the man.funcsynopsis.style parameter. Has the same effect in
+manpages output as the funcsynopsis.style parameter has in HTML
+output -- except that its default value is 'ansi' instead of 'kr'.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl</code></p><pre class="screen"><span class="commit-message">Reworked handling of K&amp;R funcprototype output. It no longer relies
+on the HTML kr-tabular templates, but instead just does direct
+transformation to roff. For K&amp;R output, it displays the paramdef
+output in an indented list following the prototype.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl</code></p><pre class="screen"><span class="commit-message">Properly integrated handling for K&amp;R output into manpages
+stylesheet. The choice between K&amp;R output and ANSI output is
+currently controlled through use of the (HTML) funcsynopsis.style
+parameter. Note that because the mechanism does currently rely on
+funcsynopsis.style, the default in manpages output is now K&amp;R
+(because that's the default of that param). But I suppose I ought
+to create a man.funcsynopsis.style and make the default for that
+ANSI (to preserve the existing default behavior).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: docbook.xsl</code></p><pre class="screen"><span class="commit-message">added manpages/pi.xsl file</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: .cvsignore; pi.xsl</code></p><pre class="screen"><span class="commit-message">Added "dbman funcsynopsis-style" PI and incorporated it into the
+doc build.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Fixed regression that caused an unescaped dash to be output
+between refname and refpurpose content. Closes bug #1894244.
+Thanks to Daniel Leidert.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: other.xsl</code></p><pre class="screen"><span class="commit-message">Fixed problem with dots being escaped in filenames of generated
+man files. Closes #1827195. Thanks to Daniel Leidert.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added support for processing structfield (was appearing in roff
+output surrounded by HTML &lt;em&gt; tags; fixed so that it gets roff
+ital markup). Closes bug #1858329. Thanks to Sam Varshavchik.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Epub"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Epub"></a>Epub</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">epub</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> <p><code class="literal">Keith Fahlgren: bin/spec/README; bin/spec/epub_realbook_spec.rb</code></p><pre class="screen"><span class="commit-message">'Realbook' spec now passes</span></pre> </li><li class="listitem"> <p><code class="literal">Keith Fahlgren: bin/dbtoepub; README; bin/spec/README; bin/lib/docbook.rb; bin/spec/epub_r&#8943;</code></p><pre class="screen"><span class="commit-message">Very primitive Windows support for dbtoepub <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> implementation; README for running tests and for the .epub target in general; shorter realbook test document (still fails for now)</span></pre> </li><li class="listitem"> <p><code class="literal">Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s&#8943;</code></p><pre class="screen"><span class="commit-message">Changes to OPF spine to not duplicate idrefs for documents with parts not at the root; regression specs for same</span></pre> </li><li class="listitem"> <p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Fixing linking to <a href="http://docbook.org/tdg5/en/html/cover.html"><code class="sgmltag-element">cover</code></a> @id, distinct from other needs of cover-image-id (again, thanks to Martin Goerner)</span></pre> </li><li class="listitem"> <p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Updating the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> of the <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> element in the guide to be more explicit (thanks to Martin Goerner)</span></pre> </li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: bin/spec/examples/amasque_exploded/content.opf; bin/spec/examples/amasque_&#8943;</code></p><pre class="screen"><span class="commit-message">Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
+and Keith Fahlgren of O'Reilly.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: docbook.xsl</code></p><pre class="screen"><span class="commit-message">== General epub test support
+
+$ spec -O ~/.spec.opts spec/epub_spec.rb
+
+DocBook::Epub
+- should be able to be created
+- should fail on a nonexistent file
+- should be able to render to a file
+- should create a file after rendering
+- should have the correct mimetype after rendering
+- should be valid .epub after rendering an article
+- should be valid .epub after rendering an article without sections
+- should be valid .epub after rendering a book
+- should be valid .epub after rendering a book even if it has one graphic
+- should be valid .epub after rendering a book even if it has many graphics
+- should be valid .epub after rendering a book even if it has many duplicated graphics
+- should report an empty file as invalid
+- should confirm that a valid .epub file is valid
+- should not include PDFs in rendered epub files as valid image inclusions
+- should include a TOC link in rendered epub files for &lt;book&gt;s
+
+Finished in 20.608395 seconds
+
+15 examples, 0 failures
+
+
+== Verbose epub test coverage against _all_ of the testdocs
+
+Fails on only (errors truncated):
+1)
+'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/calloutlist.003.xml [30]' FAILED
+'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/cmdsynopsis.001.xml [35]' FAILED
+....
+
+Finished in 629.89194 seconds
+
+224 examples, 15 failures
+
+224 examples, 15 failures yields 6% failure rate</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTMLHelp"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_HTMLHelp"></a>HTMLHelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">htmlhelp</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: htmlhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt; to calls to
+the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+This makes chunk.quietly=1 suppress chunk filename messages also for help
+support files (which seems to be what one would expect). See bug #1648360.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Eclipse"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Eclipse"></a>Eclipse</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">eclipse</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">David Cramer: eclipse.xsl</code></p><pre class="screen"><span class="commit-message">Use sortas attributes (if they exist) when sorting indexterms</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: eclipse.xsl</code></p><pre class="screen"><span class="commit-message">Added support for indexterm/see in eclipse index.xml</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: eclipse.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt;
+to helpidx template.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: eclipse.xsl</code></p><pre class="screen"><span class="commit-message">Generate index.xml file and add related goo to plugin.xml file. Does not yet support see and seealso.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: eclipse.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt; to calls to
+the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+This makes chunk.quietly=1 suppress chunk filename messages also for help
+support files (which seems to be what one would expect). See bug #1648360.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="JavaHelp"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_JavaHelp"></a>JavaHelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">javahelp</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: javahelp.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt; to calls to
+the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+This makes chunk.quietly=1 suppress chunk filename messages also for help
+support files (which seems to be what one would expect). See bug #1648360.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Roundtrip"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Roundtrip"></a>Roundtrip</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">roundtrip</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl</code></p><pre class="screen"><span class="commit-message">fix table/cell borders for wordml, fix formal figure, add emphasis-strong</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: supported.xml</code></p><pre class="screen"><span class="commit-message">Changed @cols to 5.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml</code></p><pre class="screen"><span class="commit-message">added pubdate, fixed metadata handling in biblioentry</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: supported.xml</code></p><pre class="screen"><span class="commit-message">Added support for edition.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: docbook-pages.xsl; wordml-blocks.xsl; docbook.xsl; wordml.xsl; pages-normalise&#8943;</code></p><pre class="screen"><span class="commit-message">Removed stylesheets for old, deprecated conversion method.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: specifications.xml; dbk2ooo.xsl; blocks2dbk.xsl; dbk2pages.xsl; blocks2dbk.dtd&#8943;</code></p><pre class="screen"><span class="commit-message">Added support for Open Office, added edition element, improved list and table support in Word and Pages</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: normalise-common.xsl; blocks2dbk.xsl; dbk2pages.xsl; template-pages.xml; templ&#8943;</code></p><pre class="screen"><span class="commit-message">Fixed bug in WordML table handling, improved table handling for Pages 08, synchronised WordML and Pages templates.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: normalise-common.xsl; blocks2dbk.xsl; wordml2normalise.xsl; dbk2wp.xsl</code></p><pre class="screen"><span class="commit-message">fix caption, attributes</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: specifications.xml; blocks2dbk.xsl; wordml2normalise.xsl; blocks2dbk.dtd; temp&#8943;</code></p><pre class="screen"><span class="commit-message">Fixes to table and list handling</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl</code></p><pre class="screen"><span class="commit-message">added support for explicit emphasis character styles</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: wordml2normalise.xsl</code></p><pre class="screen"><span class="commit-message">added support for customisation in image handling</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl</code></p><pre class="screen"><span class="commit-message">Added inlinemediaobject support for metadata.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: normalise-common.xsl; blocks2dbk.xsl; template.xml; dbk2wordml.xsl; dbk2wp.xsl</code></p><pre class="screen"><span class="commit-message">Added support file. Added style locking. Conversion bug fixes.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Slides"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Slides"></a>Slides</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">slides</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: fo/Makefile; html/Makefile</code></p><pre class="screen"><span class="commit-message">Added checks and hacks to various makefiles to enable building
+under Cygwin. This stuff is ugly and maybe not worth the mess and
+trouble, but does seem to work as expected and not break anything
+else.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: html/plain.xsl</code></p><pre class="screen"><span class="commit-message">Added support for showing foil number</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Website"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Website"></a>Website</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">website</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: extensions/saxon64/.classes/.gitignore; extensions/xalan2/.classes/com/&#8943;</code></p><pre class="screen"><span class="commit-message">renamed a bunch more .cvsignore files to .gitignore (to facilitate use of git-svn)</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> <p><code class="literal">Keith Fahlgren: epub.autolabel.xml</code></p><pre class="screen"><span class="commit-message">New parameter for epub, epub.autolabel</span></pre> </li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: table.frame.border.color.xml; table.cell.padding.xml; table.cell.border.t&#8943;</code></p><pre class="screen"><span class="commit-message">Added missing refpurposes and descriptions.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Keith Fahlgren: ade.extensions.xml</code></p><pre class="screen"><span class="commit-message">Extensions to support Adobe Digital Editions extensions in .epub output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: fop.extensions.xml; fop1.extensions.xml</code></p><pre class="screen"><span class="commit-message">Clarified that fop1.extensions is for FOP 0.90 and later. Version 1 is not here yet...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.links.are.underlined.xml; man.endnotes.list.enabled.xml; man.font.l&#8943;</code></p><pre class="screen"><span class="commit-message">removed man.links.are.underlined and added man.font.links. Also,
+changed the default font formatting for links to bold.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.base.url.for.relative.links.xml</code></p><pre class="screen"><span class="commit-message">Added new param man.base.url.for.relative.links .. specifies a
+base URL for relative links (for ulink, @xlink:href, imagedata,
+audiodata, videodata) shown in the generated NOTES section of
+man-page output. The value of man.base.url.for.relative.links is
+prepended to any relative URI that is a value of ulink url,
+xlink:href, or fileref attribute.
+
+If you use relative URIs in link sources in your DocBook refentry
+source, and you leave man.base.url.for.relative.links unset, the
+relative links will appear "as is" in the NOTES section of any
+man-page output generated from your source. That's probably not
+what you want, because such relative links are only usable in the
+context of HTML output. So, to make the links meaningful and
+usable in the context of man-page output, set a value for
+man.base.url.for.relative.links that points
+to the online version of HTML output generated from your DocBook
+refentry source. For example:
+
+ &lt;xsl:param name="man.base.url.for.relative.links"
+ &gt;http://www.kernel.org/pub/software/scm/git/docs/&lt;/xsl:param&gt;</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.string.subst.map.xml</code></p><pre class="screen"><span class="commit-message">squeeze .sp\n.sp into a single .sp (to prevent a extra, spurious
+line of whitespace from being inserted after programlisting etc.
+in certain cases)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.manual.fallback.profile.xml; refentry.source.fallback.profile.&#8943;</code></p><pre class="screen"><span class="commit-message">don't use refmiscinfo@class=date value as fallback for refentry
+"source" or "manual" metadata fields</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su&#8943;</code></p><pre class="screen"><span class="commit-message">made some further doc tweaks related to the
+man.charmap.subset.profile.english param</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su&#8943;</code></p><pre class="screen"><span class="commit-message">Added the man.charmap.subset.profile.english parameter and refined
+the handling of charmap subsets to differentiate between English
+and non-English source.
+
+This way charmap subsets are now handled is this:
+
+If the value of the man.charmap.use.subset parameter is non-zero,
+and your DocBook source is not written in English (that is, if its
+lang or xml:lang attribute has a value other than en), then the
+character-map subset specified by the man.charmap.subset.profile
+parameter is used instead of the full roff character map.
+
+Otherwise, if the lang or xml:lang attribute on the root element
+in your DocBook source or on the first refentry element in your
+source has the value en or if it has no lang or xml:lang
+attribute, then the character-map subset specified by the
+man.charmap.subset.profile.english parameter is used instead of
+man.charmap.subset.profile.
+
+The difference between the two subsets is that
+man.charmap.subset.profile provides mappings for characters in
+Western European languages that are not part of the Roman
+(English) alphabet (ASCII character set).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.charmap.subset.profile.xml</code></p><pre class="screen"><span class="commit-message">Added to default charmap used by manpages:
+
+ - the "letters" part of the 'C1 Controls And Latin-1 Supplement
+ (Latin-1 Supplement)' Unicode block
+ - Latin Extended-A block (but not all of the characters from
+ that block have mappings in groff, so some of them are still
+ passed through as-is)
+
+The effects of this change are that in man pages generated for
+most Western European languages and for Finnish, all characters
+not part of the Roman alphabet are (e.g., "accented" characters)
+are converted to groff escapes.
+
+Previously, by default we passed through those characters as is
+(and users needed to use the full charmap if they wanted to have
+those characters converted).
+
+As a result of this change, man pages generated for Western
+European languages will be viewable in some environments in which
+they are not viewable if the "raw" non-Roman characters are in them.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: generate.legalnotice.link.xml; generate.revhistory.link.xml</code></p><pre class="screen"><span class="commit-message">Added information on how the filename is computed.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: default.table.width.xml</code></p><pre class="screen"><span class="commit-message">Clarified PI usage.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.funcsynopsis.style.xml</code></p><pre class="screen"><span class="commit-message">Added the man.funcsynopsis.style parameter. Has the same effect in
+manpages output as the funcsynopsis.style parameter has in HTML
+output -- except that its default value is 'ansi' instead of 'kr'.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: funcsynopsis.tabular.threshold.xml</code></p><pre class="screen"><span class="commit-message">Removed the funcsynopsis.tabular.threshold param. It's no longer
+being used in the code and hasn't been since mid 2006.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: table.properties.xml</code></p><pre class="screen"><span class="commit-message">Set keep-together.within-column to "auto". This seems to be the most sensible
+default value for tables.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: informal.object.properties.xml; admon.graphics.extension.xml; informalequ&#8943;</code></p><pre class="screen"><span class="commit-message">Several small documentation fixes.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: manifest.in.base.dir.xml</code></p><pre class="screen"><span class="commit-message">Wording fixes.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: header.content.properties.xml; footer.content.properties.xml</code></p><pre class="screen"><span class="commit-message">Added refpurpose.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: ulink.footnotes.xml; ulink.show.xml</code></p><pre class="screen"><span class="commit-message">Updated for DocBook 5.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: index.method.xml; glossterm.auto.link.xml</code></p><pre class="screen"><span class="commit-message">Spelling and wording fixes.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: callout.graphics.extension.xml</code></p><pre class="screen"><span class="commit-message">Clarifed available graphics formats and extensions.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: footnote.sep.leader.properties.xml</code></p><pre class="screen"><span class="commit-message">Corrected refpurpose.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: footnote.properties.xml</code></p><pre class="screen"><span class="commit-message">Added more properties which make it possible to render correctly footnotes placed inside verbatim elements.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: img.src.path.xml</code></p><pre class="screen"><span class="commit-message">img.src.path works with inlinegraphic too.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: saxon.character.representation.xml</code></p><pre class="screen"><span class="commit-message">Added TCG link.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: img.src.path.xml</code></p><pre class="screen"><span class="commit-message">Updated description of img.src.path. Bug #1785224 revealed that
+there was a risk of misunderstanding how it works.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Profiling"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Profiling"></a>Profiling</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">profiling</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Jirka Kosek: xsl2profile.xsl</code></p><pre class="screen"><span class="commit-message">Added new rules to profile all content generated by HTML Help (including alias files)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: profile-mode.xsl</code></p><pre class="screen"><span class="commit-message">use mode="profile" instead of xsl:copy-of for attributes so
+they can be more easily customized.</span></pre>
+</li></ul></div>
+</div>
+
+
+<div class="sect2" title="Tools"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Tools"></a>Tools</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">tools</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: make/Makefile.DocBook</code></p><pre class="screen"><span class="commit-message">various changes and additions to support making with asciidoc as
+an input format</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: make/Makefile.DocBook</code></p><pre class="screen"><span class="commit-message">make dblatex the default PDF maker for the example makefile</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: xsl/build/html2roff.xsl</code></p><pre class="screen"><span class="commit-message">Reworked handling of K&amp;R funcprototype output. It no longer relies
+on the HTML kr-tabular templates, but instead just does direct
+transformation to roff. For K&amp;R output, it displays the paramdef
+output in an indented list following the prototype.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: xsl/build/make-xsl-params.xsl</code></p><pre class="screen"><span class="commit-message">Made attribute-sets members of the param list. This enables links to attribute-sets in the
+reference documentation.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: xsl/build/html2roff.xsl</code></p><pre class="screen"><span class="commit-message">use .BI handling in K&amp;R funsynopsis output for manpages, just as
+we do already of ANSI output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: xsl/build/html2roff.xsl</code></p><pre class="screen"><span class="commit-message">Implemented initial support for handling tabular K&amp;R output of
+funcprototype in manpages output. Accomplished by adding more
+templates to the intermediate HTML-to-roff stylesheet that the
+build uses to create the manpages/html-synop.xsl stylesheet.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: xsl/build/doc-link-docbook.xsl</code></p><pre class="screen"><span class="commit-message">Made the xsl/tools/xsl/build/doc-link-docbook.xsl stylesheet
+import profile-docbook.xsl, so that we can do profiling of release
+notes. Corrected some problems in the target for the release-notes
+HTML build.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Extensions"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_Extensions"></a>Extensions</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">extensions</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> <p><code class="literal">Keith Fahlgren: Makefile</code></p><pre class="screen"><span class="commit-message">Use DOCBOOK_SVN variable everywhere, please; build with PDF_MAKER</span></pre> </li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile</code></p><pre class="screen"><span class="commit-message">moved extensions build targets from master xsl/Makefile to
+xsl/extensions/Makefile</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: .cvsignore</code></p><pre class="screen"><span class="commit-message">re-adding empty extensions subdir</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="XSL-Saxon"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_XSL-Saxon"></a>XSL-Saxon</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-saxon</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: VERSION</code></p><pre class="screen"><span class="commit-message">bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
+recent change to snapshot build infrastructure</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: nbproject/build-impl.xml; nbproject/project.properties</code></p><pre class="screen"><span class="commit-message">Changed hard-coded file references in "clean" target to variable
+references. Closes #1792043. Thanks to Daniel Leidert.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: VERSION; Makefile</code></p><pre class="screen"><span class="commit-message">Did post-release wrap-up of xsl-saxon and xsl-xalan dirs</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: nbproject/build-impl.xml; VERSION; Makefile; test</code></p><pre class="screen"><span class="commit-message">More tweaks to get release-ready</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="XSL-Xalan"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_XSL-Xalan"></a>XSL-Xalan</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-xalan</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: VERSION</code></p><pre class="screen"><span class="commit-message">bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
+recent change to snapshot build infrastructure</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: nbproject/build-impl.xml</code></p><pre class="screen"><span class="commit-message">Changed hard-coded file references in "clean" target to variable
+references. Closes #1792043. Thanks to Daniel Leidert.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile; VERSION</code></p><pre class="screen"><span class="commit-message">Did post-release wrap-up of xsl-saxon and xsl-xalan dirs</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile; nbproject/build-impl.xml; VERSION</code></p><pre class="screen"><span class="commit-message">More tweaks to get release-ready</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="XSL-libxslt"><div class="titlepage"><div><div><h3 class="title"><a name="V1.74.0_XSL-libxslt"></a>XSL-libxslt</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-libxslt</code> code
+ since the 1.73.2 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: python/xslt.py</code></p><pre class="screen"><span class="commit-message">Print the result to stdout if no outfile has been given.
+Some unnecessary semicolons removed.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: python/xslt.py</code></p><pre class="screen"><span class="commit-message">Added a function that quotes parameter values (to ensure that they are interpreted as strings).
+Replaced deprecated functions from the string module with string methods.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: python/README; python/README.LIBXSLT</code></p><pre class="screen"><span class="commit-message">renamed xsl-libxslt/python/README to xsl-libxslt/python/README.LIBXSLT</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: python/README</code></p><pre class="screen"><span class="commit-message">Tweaked the text a little.</span></pre>
+</li></ul></div>
+</div>
+
+</div>
+
+<div class="sect1" title="Release Notes: 1.73.2"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.73.2"></a>Release Notes: 1.73.2</h2></div></div></div>
+
+<p>This is solely a minor bug-fix update to the 1.73.1 release.
+ It fixes a packaging error in the 1.73.1 package, as well as a
+ bug in footnote handling in FO output.</p>
+</div>
+
+<div class="sect1" title="Release: 1.73.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.73.1"></a>Release: 1.73.1</h2></div></div></div>
+
+<p>This is mostly a bug-fix update to the 1.73.0 release.</p>
+
+<div class="sect2" title="Gentext"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_Gentext"></a>Gentext</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">gentext</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: locale/de.xml</code></p><pre class="screen"><span class="commit-message">Applied patch #1766009.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/lv.xml</code></p><pre class="screen"><span class="commit-message">Added localization for <a href="http://docbook.org/tdg5/en/html/productionset.html"><code class="sgmltag-element">ProductionSet</code></a>.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: table.xsl</code></p><pre class="screen"><span class="commit-message">Modified the <a href="http://docbook.org/tdg5/en/html/tgroup.html"><code class="sgmltag-element">tgroup</code></a> template so that, for tables with multiple tgroups,
+a width attribute is output on all corresponding fo:tables. Previously,
+there was a test prohibiting this (and a comment saying that outputting more
+than one width attribute will cause an error). But this seems to be no longer
+relevant; it is not a problem with FOP 0.93 or XEP 4.10. Closes bug #1760559.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Replaced useless &lt;a&gt; elements with warning messages (textinsert extension).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: admon.xsl</code></p><pre class="screen"><span class="commit-message">Enabled generation of ids (on fo:wrapper) for indexterms in admonition titles, so that page
+references in the <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> can be created. Closes bug #1775086.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;xsl:call-template name="process.footnotes"/&gt; to <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> template
+so that footnotes in <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> are processed. Closes bug #1760907.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: pi.xsl; synop.xsl</code></p><pre class="screen"><span class="commit-message">Changed handling of HTML output for the <a href="http://docbook.org/tdg5/en/html/cmdsynopsis.html"><code class="sgmltag-element">cmdsynopsis</code></a> and
+<a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">funcsynopsis</code></a> elements, such that a@id instances are generated for
+them if they are descendants of any element containing a dbcmdlist
+or dbfunclist PI. Also, update the embedded <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> docs for the
+dbcmdlist and dbfunclist PIs to make it clear that they can be
+used within any element for which <a href="http://docbook.org/tdg5/en/html/cmdsynopsis.html"><code class="sgmltag-element">cmdsynopsis</code></a> or <a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">funcsynopsis</code></a> are
+valid children.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: formal.xsl</code></p><pre class="screen"><span class="commit-message">Reverted the part of <a href="http://docbook.org/tdg5/en/html/revision.html"><code class="sgmltag-element">revision</code></a> 6952 that caused a@id anchors to be
+generated for output of informal objects. Thanks to Sam Steingold
+for reporting.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Account for a <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> with no <a href="http://docbook.org/tdg5/en/html/glossdiv.html"><code class="sgmltag-element">glossdiv</code></a> or <a href="http://docbook.org/tdg5/en/html/glossentry.html"><code class="sgmltag-element">glossentry</code></a> children.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Modified <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> template so that the base.name parameter is calculated
+in the same way as for <a href="http://docbook.org/tdg5/en/html/revhistory.html"><code class="sgmltag-element">revhistory</code></a> chunks. Using &lt;xsl:apply-templates
+mode="chunk-filename" select="."/&gt; did not work for single-page output since
+the template with that mode is in chunk-code.xsl.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Updated support for SVG (must be a child of <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a> in DB 5).
+Added support for MathML in <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Added documentation for the dbhh PI (used for context-sensitive HTML Help).
+(The two templates matching 'dbhh' are still in htmlhelp-common.xsl).</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: endnotes.xsl</code></p><pre class="screen"><span class="commit-message">In manpages output, generate warnings about notesources with
+non-para children only if the notesource is a <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> or
+<a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a>. Thanks to Sam Steingold for reporting problems with
+the existing handling.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTMLHelp"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_HTMLHelp"></a>HTMLHelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">htmlhelp</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: htmlhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Added single-pass namespace-stripping support to the htmlhelp,
+eclipse, and javahelp stylesheets.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Eclipse"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_Eclipse"></a>Eclipse</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">eclipse</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: eclipse.xsl</code></p><pre class="screen"><span class="commit-message">Added single-pass namespace-stripping support to the htmlhelp,
+eclipse, and javahelp stylesheets.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="JavaHelp"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_JavaHelp"></a>JavaHelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">javahelp</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: javahelp.xsl</code></p><pre class="screen"><span class="commit-message">Added single-pass namespace-stripping support to the htmlhelp,
+eclipse, and javahelp stylesheets.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Roundtrip"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_Roundtrip"></a>Roundtrip</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">roundtrip</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; pages2normalise.xsl</code></p><pre class="screen"><span class="commit-message">Modularised blocks2dbk to allow customisation,
+Added support for tables to pages2normalise</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.1_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.73.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: procedure.properties.xml</code></p><pre class="screen"><span class="commit-message"><a href="http://docbook.org/tdg5/en/html/procedure.html"><code class="sgmltag-element">procedure</code></a> was inheriting keep-together from formal.object.properties, but
+a <a href="http://docbook.org/tdg5/en/html/procedure.html"><code class="sgmltag-element">procedure</code></a> does not need to be kept together by default.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Dave Pawson: title.font.family.xml; component.label.includes.part.label.xml; table.frame.b&#8943;</code></p><pre class="screen"><span class="commit-message">Regular formatting re-org.</span></pre>
+</li></ul></div>
+</div>
+</div>
+
+<div class="sect1" title="Release: 1.73.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.73.0"></a>Release: 1.73.0</h2></div></div></div>
+
+<p>This release includes important bug fixes and adds the following
+significant feature changes:
+</p><div class="variablelist"><dl><dt><span class="term">New localizations and localization updates</span></dt><dd>
+ <p>We added two new localizations: Latvian and
+ Esperanto, and made updates to the Czech, Chinese
+ Simplified, Mongolian, Serbian, Italian, and Ukrainian
+ localizations.</p>
+ </dd><dt><span class="term">ISO690 citation style for bibliography output.</span></dt><dd>
+ <p>Set the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/bibliography.style.html"><em class="parameter"><code>bibliography.style</code></em></a> parameter to
+ <code class="literal">iso690</code> to use ISO690 style.</p>
+ </dd><dt><span class="term">New documentation for processing instructions (PI)</span></dt><dd>
+ <p>The reference documentation that ships with the
+ release now includes <a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/doc/pi/" target="_top">documentation on all PIs</a> that you can use to
+ control output from the stylesheets.</p>
+ </dd><dt><span class="term">New profiling parameters for <code class="literal">audience</code> and <code class="literal">wordsize</code></span></dt><dd>
+ <p>You can now do profiling based on the values of the
+ <code class="literal">audience</code> and
+ <code class="literal">wordsize</code> attributes.</p>
+ </dd><dt><span class="term">Changes to man-page output</span></dt><dd>
+ <p>The manpages stylesheet now supports single-pass
+ profiling and single-pass DocBook 5 namespace stripping
+ (just as the HTML and FO stylesheets also do). Also, added
+ handling for <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> &amp;
+ <a href="http://docbook.org/tdg5/en/html/inlinemediaobject.html"><code class="sgmltag-element">inlinemediaobject</code></a>. (Each <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/audiodata.html"><code class="sgmltag-element">audiodata</code></a>, or <a href="http://docbook.org/tdg5/en/html/videodata.html"><code class="sgmltag-element">videodata</code></a> element
+ within a <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> or inline
+ <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> is now treated as a "notesource"
+ and so handled in much the same way as links and
+ <a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a>/<a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a>/<a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>
+ are in manpages output.) And added the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.authors.section.enabled.html"><em class="parameter"><code>man.authors.section.enabled</code></em></a> and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.copyright.section.enabled.html"><em class="parameter"><code>man.copyright.section.enabled</code></em></a>
+ parameters to enable control over whether output includes
+ auto-generated <code class="literal">AUTHORS</code> and
+ <code class="literal">COPYRIGHT</code> sections.</p>
+ </dd><dt><span class="term">Highlighting support for C</span></dt><dd>
+ <p>The highlighting mechanism for generating
+ syntax-highlighted code snippets in output now supports C
+ code listings (along with Java, PHP, XSLT, and others).</p>
+ </dd><dt><span class="term">Experimental <code class="literal">docbook-xsl-update script</code></span></dt><dd>
+ <p>We added an experimental <code class="literal">docbook-xsl-update
+ script</code>, the purpose of which is to facilitate
+ easy sync-up to the latest docbook-xsl snapshot (by means
+ of rsync).</p>
+ </dd></dl></div><p>
+</p>
+
+<div class="sect2" title="Gentext"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Gentext"></a>Gentext</h3></div></div></div>
+
+<p>The following changes have been made to the
+<code class="filename">gentext</code> code
+since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/lv.xml; Makefile</code></p><pre class="screen"><span class="commit-message">Added Latvian localization file, from Girts Ziemelis.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Dongsheng Song: locale/zh_cn.xml</code></p><pre class="screen"><span class="commit-message">Brought up to <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> with en.xml in terms of items. A few strings marked for translation.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: locale/cs.xml</code></p><pre class="screen"><span class="commit-message">Added missing translations</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/eo.xml</code></p><pre class="screen"><span class="commit-message">New locale for Esperanto.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/mn.xml</code></p><pre class="screen"><span class="commit-message">Update from Ganbold Tsagaankhuu.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: locale/en.xml; locale/cs.xml</code></p><pre class="screen"><span class="commit-message">Rules for normalizing <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> entries before they are sorted can be now different for each language.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: locale/sr_Latn.xml; locale/sr.xml</code></p><pre class="screen"><span class="commit-message">Committed changes from Milo&#353; Komar&#269;evi&#263; to Serbian files.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/ja.xml</code></p><pre class="screen"><span class="commit-message">Fix <a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">chapter</code></a> in context xref-number-and-title</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/it.xml</code></p><pre class="screen"><span class="commit-message">Improved version from contributor.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: locale/uk.xml</code></p><pre class="screen"><span class="commit-message">Applied patch 1592083.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+<code class="filename">common</code> code
+since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: labels.xsl</code></p><pre class="screen"><span class="commit-message">Changed handling of <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> auto-labeling such that <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a>
+(when it appears at the component level) is now affected by the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/label.from.part.html"><em class="parameter"><code>label.from.part</code></em></a> param, just as <a href="http://docbook.org/tdg5/en/html/preface.html"><code class="sgmltag-element">preface</code></a>, <a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">chapter</code></a>, and <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: common.xsl</code></p><pre class="screen"><span class="commit-message">Added support to the HTML stylesheets for proper processing of
+<a href="http://docbook.org/tdg5/en/html/orgname.html"><code class="sgmltag-element">orgname</code></a> as a child of <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Refined logging output of <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> metadata-gathering template;
+for some cases of "missing" elements (<a href="http://docbook.org/tdg5/en/html/refmiscinfo.html"><code class="sgmltag-element">refmiscinfo</code></a> stuff, etc.),
+the log messages now include URL to corresponding page in the
+Definitive Guide (TDG).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.org/tdg5/en/html/refsection.html"><code class="sgmltag-element">refsection</code></a>/<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> support.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: titles.xsl</code></p><pre class="screen"><span class="commit-message">Added support for correct handling of <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to elements that
+contain <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> descendants but no <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> children.
+
+This should be further refined so that it handles any *<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>
+elements. And there are probably some other places where similar
+handling for *<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> should be added.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: pi.xsl</code></p><pre class="screen"><span class="commit-message">Modified &lt;xsl:when&gt; in datetime.format template to work
+around Xalan bug.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+<code class="filename">fo</code> code
+since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: component.xsl</code></p><pre class="screen"><span class="commit-message">Add parameters to the page.sequence utility template.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: xref.xsl</code></p><pre class="screen"><span class="commit-message">Added template for <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a>/<a href="http://docbook.org/tdg5/en/html/areaset.html"><code class="sgmltag-element">areaset</code></a>.
+Part of fix for bug #1675513 (<a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> broken).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added template match for <a href="http://docbook.org/tdg5/en/html/person.html"><code class="sgmltag-element">person</code></a> element to fo stylesheet.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added support for spacing="compact" in <a href="http://docbook.org/tdg5/en/html/variablelist.html"><code class="sgmltag-element">variablelist</code></a>, per bug report #1722540.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message"><a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> pgwide="1" should also use pgwide.properties attribute-set.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Make citations numbered if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/bibliography.numbered.html"><em class="parameter"><code>bibliography.numbered</code></em></a> != 0.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add new profiling parameters for audience and wordsize.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/callout.icon.size.html"><em class="parameter"><code>callout.icon.size</code></em></a> parameter.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl; xref.xsl</code></p><pre class="screen"><span class="commit-message">Add support for xlink as <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autotoc.xsl; param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.in.toc.html"><em class="parameter"><code>qanda.in.toc</code></em></a> to fo <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: component.xsl</code></p><pre class="screen"><span class="commit-message">Improved the page.sequence utility template for use with <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: division.xsl</code></p><pre class="screen"><span class="commit-message">Refactored the big <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> template into smaller pieces.
+Used the "page.sequence" utility template in
+component.xsl to shorten the <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> piece.
+Added placeholder templates for front.cover and back.cover.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent; sections.xsl</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/section.container.element.html"><em class="parameter"><code>section.container.element</code></em></a> parameter to enable
+pgwide spans inside sections.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent; component.xsl</code></p><pre class="screen"><span class="commit-message">Add component.titlepage.properties attribute-set to
+support span="all" and other properties.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: htmltbl.xsl; table.xsl</code></p><pre class="screen"><span class="commit-message">Apply table.row.properties template to html <a href="http://docbook.org/tdg5/en/html/tr.html"><code class="sgmltag-element">tr</code></a> rows too.
+Add keep-with-next to table.row.properties when <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a> is in <a href="http://docbook.org/tdg5/en/html/thead.html"><code class="sgmltag-element">thead</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/default.table.frame.html"><em class="parameter"><code>default.table.frame</code></em></a> parameter.
+Fix bug 1575446 rowsep last check for @morerows.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in refsections.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: qandaset.xsl</code></p><pre class="screen"><span class="commit-message">Make fo questions and answers behave the same way as html</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added missing attribute set for <a href="http://docbook.org/tdg5/en/html/procedure.html"><code class="sgmltag-element">procedure</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xsl</code></p><pre class="screen"><span class="commit-message">Added support for formatting biblioentries according to ISO690 <a href="http://docbook.org/tdg5/en/html/citation.html"><code class="sgmltag-element">citation</code></a> style.
+New <a href="http://docbook.org/tdg5/en/html/bibliography.html"><code class="sgmltag-element">bibliography</code></a> style can be turned on by setting parameter <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/bibliography.style.html"><em class="parameter"><code>bibliography.style</code></em></a> to "iso690"
+The code was provided by Jana Dvorakova</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent; pagesetup.xsl</code></p><pre class="screen"><span class="commit-message">Add header.table.properties and footer.table.properties attribute-sets.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/fop1.extensions.html"><em class="parameter"><code>fop1.extensions</code></em></a> for <a href="http://docbook.org/tdg5/en/html/menuchoice.html"><code class="sgmltag-element">menuchoice</code></a> arrow handling exception.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Moved declaration and documentation of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/javahelp.encoding.html"><em class="parameter"><code>javahelp.encoding</code></em></a> from javahelp.xsl to the
+regular "parameter machinery".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: admon.xsl</code></p><pre class="screen"><span class="commit-message">Changed handling of titles for note, warning, <a href="http://docbook.org/tdg5/en/html/caution.html"><code class="sgmltag-element">caution</code></a>, <a href="http://docbook.org/tdg5/en/html/important.html"><code class="sgmltag-element">important</code></a>,
+<a href="http://docbook.org/tdg5/en/html/tip.html"><code class="sgmltag-element">tip</code></a> admonitions: We now output and HTML h3 head only if
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/admon.textlabel.html"><em class="parameter"><code>admon.textlabel</code></em></a> is non-zero or if the admonition actually contains
+a <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>; otherwise, we don't output an h3 head at all.
+(Previously, we were outputting an empty h3 if the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/admon.textlabel.html"><em class="parameter"><code>admon.textlabel</code></em></a>
+was zero and if the admonition had no title.)</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: xref.xsl</code></p><pre class="screen"><span class="commit-message">Added template for <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a>/<a href="http://docbook.org/tdg5/en/html/areaset.html"><code class="sgmltag-element">areaset</code></a>.
+Part of fix for bug #1675513 (<a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> broken).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; sections.xsl</code></p><pre class="screen"><span class="commit-message">Added fixes to avoid duplicate ids when <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/generate.id.attributes.html"><em class="parameter"><code>generate.id.attributes</code></em></a> = 1.
+This (hopefully) closes bug #1671052.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: formal.xsl; pi.xsl</code></p><pre class="screen"><span class="commit-message">Made the dbfunclist PI work as intended. Also added doc for
+dbfunclist and dbcmdlist PIs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: pi.xsl; synop.xsl</code></p><pre class="screen"><span class="commit-message">Made the dbcmdlist work the way it appears to have been intended
+to work. Restored dbhtml-dir template back to pi.xsl.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: titlepage.xsl; param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/abstract.notitle.enabled.html"><em class="parameter"><code>abstract.notitle.enabled</code></em></a>.
+If non-zero, in output of the <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> element on titlepages,
+display of the <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> is suppressed.
+Because sometimes you really don't want or need that <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+there...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: chunk-code.xsl; graphics.xsl</code></p><pre class="screen"><span class="commit-message">When we are chunking long descriptions for <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> instances
+into separate HTML output files, and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/use.id.as.filename.html"><em class="parameter"><code>use.id.as.filename</code></em></a> is
+non-zero, if a <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> has an ID, use that ID as the basename
+for the long-description file (otherwise, we generate an ID for it
+and use that ID as the basename for the file).
+The parallels the recent change made to cause IDs for <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>
+instances to be used as basenames for <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> chunks.
+Also, made some minor refinements to the recent changes for
+<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> chunk handling.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Added support to the HTML stylesheets for proper processing of
+<a href="http://docbook.org/tdg5/en/html/orgname.html"><code class="sgmltag-element">orgname</code></a> as a child of <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: chunk-code.xsl</code></p><pre class="screen"><span class="commit-message">When $generate.legalnotice.link is non-zero and
+$use.id.as.filename is also non-zero, if a <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> has an ID,
+then instead of assigning the "ln-&lt;generatedID&gt;" basename to the
+output file for that <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>, just use its real ID as the
+basename for the file -- as we do when chunking other elements
+that have IDs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xref.xsl</code></p><pre class="screen"><span class="commit-message">Handle <a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a> text on xrefs to steps when the step doesn't have a <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;p&gt; element around <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> in <a href="http://docbook.org/tdg5/en/html/variablelist.html"><code class="sgmltag-element">variablelist</code></a> when formatted as <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> to avoid misalignment of <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> and <a href="http://docbook.org/tdg5/en/html/listitem.html"><code class="sgmltag-element">listitem</code></a> in xhtml (non-quirks mode) output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: qandaset.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;p&gt; element around <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a> and <a href="http://docbook.org/tdg5/en/html/answer.html"><code class="sgmltag-element">answer</code></a> labels to avoid misalignment of <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a> and <a href="http://docbook.org/tdg5/en/html/listitem.html"><code class="sgmltag-element">listitem</code></a> in xhtml (non-quirks mode) output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: lists.xsl</code></p><pre class="screen"><span class="commit-message">Added &lt;p&gt; element around callouts to avoid misalignment of <a href="http://docbook.org/tdg5/en/html/callout.html"><code class="sgmltag-element">callout</code></a> and <a href="http://docbook.org/tdg5/en/html/listitem.html"><code class="sgmltag-element">listitem</code></a> in xhtml (non-quirks mode) output</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: inline.xsl</code></p><pre class="screen"><span class="commit-message">Make citations numbered if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/bibliography.numbered.html"><em class="parameter"><code>bibliography.numbered</code></em></a> != 0.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add support for new profiling attributes audience and wordsize.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl; xref.xsl</code></p><pre class="screen"><span class="commit-message">Add support for xlink olinks.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Rules for normalizing <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> entries before they are sorted can be now different for each language.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunk-common.xsl; chunk-code.xsl; manifest.xsl; chunk.xsl</code></p><pre class="screen"><span class="commit-message">Refactored the chunking modules to move all named templates to
+chunk-common.xsl and all match templates to chunk-code.xsl, in
+order to enable better chunk customization.
+See the comments in chunk.xsl for more details.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.org/tdg5/en/html/anchor.html"><code class="sgmltag-element">anchor</code></a> for xml:id for <a href="http://docbook.org/tdg5/en/html/listitem.html"><code class="sgmltag-element">listitem</code></a> in <a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: refentry.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in refsections for db5.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xsl</code></p><pre class="screen"><span class="commit-message">Added support for formatting biblioentries according to ISO690 <a href="http://docbook.org/tdg5/en/html/citation.html"><code class="sgmltag-element">citation</code></a> style.
+New <a href="http://docbook.org/tdg5/en/html/bibliography.html"><code class="sgmltag-element">bibliography</code></a> style can be turned on by setting parameter <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/bibliography.style.html"><em class="parameter"><code>bibliography.style</code></em></a> to "iso690"
+The code was provided by Jana Dvorakova</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl; xref.xsl</code></p><pre class="screen"><span class="commit-message">Add call to class.attribute to &lt;a&gt; output elements so they can
+have a class value too.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: glossary.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug #1644881:
+* Added curly braces around all $language attribute values.
+* Moved declaration of language variable to top level of stylesheet.
+Tested with Xalan, Saxon, and xsltproc.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: param.xweb; docbook.xsl; param.ent</code></p><pre class="screen"><span class="commit-message">Added the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.authors.section.enabled.html"><em class="parameter"><code>man.authors.section.enabled</code></em></a> and
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.copyright.section.enabled.html"><em class="parameter"><code>man.copyright.section.enabled</code></em></a> parameters. Set those to zero when
+you want to suppress display of the auto-generated AUTHORS and
+<a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">COPYRIGHT</code></a> sections. Closes request #1467806. Thanks to Daniel
+Leidert.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Took the test that the manpages stylesheet does to see if there
+are any <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a> chilren in current doc, and made it
+namespace-agnostic. Reason for that is because the test otherwise
+won't work when it is copied over into the generated
+profile-docbook.xsl stylesheet.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile</code></p><pre class="screen"><span class="commit-message">Added a manpages/profile-docbook.xsl file to enable single-pass
+profiling for manpages output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: info.xsl</code></p><pre class="screen"><span class="commit-message">Output <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a> and <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> in man-page output in whatever
+place they are in in document order. Closes #1690539. Thanks to
+Daniel Leidert for reporting.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Restored support for single-pass namespace stripping to manpages
+stylesheet.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: synop.xsl; block.xsl; info.xsl; inline.xsl; lists.xsl; endnotes.xsl; ut&#8943;</code></p><pre class="screen"><span class="commit-message">Changed handling of bold and italic/underline output in manpages
+output. Should be transparent to users, but...
+
+This touches handling of all bold and italic/underline output. The
+exact change is that the mode="bold" and mode="italic" utility
+templates were changed to named templates. (I think maybe I've
+changed it back and forth from mode to named before, so this is
+maybe re-reverting it yet again).
+
+Anyway, the reason for the change is that the templates are
+sometimes call on dynamically node-sets, and using modes to format
+those doesn't allow passing <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> about the current/real context
+node from the source (not the node-set created by the stylesheet)
+to that formatting stage.
+
+The named templates allow the context to be passed in as a
+parameter, so that the bold/ital formatting template can use
+context-aware condition checking.
+
+This was basically necessary in order to suppress bold formatting
+in titles, which otherwise gets screwed up because of the numbnut
+way that roff handles nested bold/ital.
+
+Closes #1674534). Much thanks to Daniel Leidert, whose in his
+docbook-xsl bug-finding kung-fu has achieved Grand Master status.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl</code></p><pre class="screen"><span class="commit-message">Fixed handling of example instances by adding the example element
+to the same template we use for processing <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>. Closes
+#1674538. Thanks to Daniel Leidert.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">Don't include lang in manpages <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a>/pathname if lang=en (that
+is, only generate lang-qualified file-/pathnames for non-English).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: endnotes.xsl</code></p><pre class="screen"><span class="commit-message">In manpages output, emit warnings for notesources (<a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>, etc.)
+that have something other than <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a> as a child.
+
+The numbered-with-hanging-indent formatting that's used for
+rendering endnotes in the NOTES <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> of man pages places some
+limits/assumptions on how the DocBook source is marked up; namely,
+for notesources (<a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>, <a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a>, etc.) that can contain
+block-level children, if the they have a block-level child such as
+a <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> or <a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a> or <a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a> that is the first child of
+a <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>, we have no way of rendering/indenting its content
+properly in the endnotes list.
+
+Thus, the manpages stylesheet not emits a warning message for that
+case, and suggests the "fix" (which is to wrap the <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> or
+<a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a> or whatever in a <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a> that has some preferatory text.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: utility.xsl</code></p><pre class="screen"><span class="commit-message">Added support to mixed-block template for handling tables in
+mixed-blocks (e.g., as child of <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a>) correctly.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: table.xsl; synop.xsl; block.xsl; info.xsl; lists.xsl; refentry.xsl; end&#8943;</code></p><pre class="screen"><span class="commit-message">Reverted necessary escaping of backslash, dot, and dash
+out of the well-intentioned (but it now appears,
+misguided) "marker" mechanism (introduced in the 1.72.0
+release) -- which made use of alternative "marker"
+characters as internal representations of those
+characters, and then replaced them just prior to
+serialization -- and back into what's basically the
+system that was used prior to the 1.69.0 release; that
+is, into a part of stylesheet code that gets executed
+at the beginning of processing -- before any other roff
+markup up is. This change obviates the need for the
+marker system. It also requires a lot less RAM during
+processing (for large files, the marker mechanism
+ending up requiring gigabytes of memory).
+
+Closes bug #1661177. Thanks to Scott Smedley for
+providing a test case (the fvwm man page) that exposed
+the problem with the marker mechanism.
+
+Also moved the mechanism for converting non-breaking
+spaces back into the same <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> of the stylesheet code.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Fixed problem with incorrect formatting of nested <a href="http://docbook.org/tdg5/en/html/variablelist.html"><code class="sgmltag-element">variablelist</code></a>.
+Closes bug #1650931. Thanks to Daniel "Eagle Eye" Leidert.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lists.xsl</code></p><pre class="screen"><span class="commit-message">Make sure that all listitems in <a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a> and <a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a> are
+preceded by a blank line. This fixes a regression that occurred
+when instances of the TP macro that were use in a previous
+versions of the list-handling code were switched to RS/RE (because
+TP doesn't support nesting). TP automatically generates a blank
+line, but RS doesn't. So I added a .sp before each .RS</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: block.xsl; inline.xsl; param.xweb; docbook.xsl; links.xsl; param.ent</code></p><pre class="screen"><span class="commit-message">Made a number of changes related to elements with
+out-of-line content:
+
+- Added handling for <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> &amp; <a href="http://docbook.org/tdg5/en/html/inlinemediaobject.html"><code class="sgmltag-element">inlinemediaobject</code></a>.
+ Each <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a>, <a href="http://docbook.org/tdg5/en/html/audiodata.html"><code class="sgmltag-element">audiodata</code></a>, or <a href="http://docbook.org/tdg5/en/html/videodata.html"><code class="sgmltag-element">videodata</code></a> element
+ within a <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> or inline <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> is now
+ treated as a "notesource" and so handled in much the
+ same way as links and <a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a>/<a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a>/footnotes.
+
+ That means a numbered marker is generated inline to
+ mark the place in the main flow where the <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/audiodata.html"><code class="sgmltag-element">audiodata</code></a>, or <a href="http://docbook.org/tdg5/en/html/videodata.html"><code class="sgmltag-element">videodata</code></a> element occurs, and a
+ corresponding numbered endnote for it is generated in
+ the endnotes list at the end of the man page; the
+ endnote contains the URL from the fileref attribute
+ of the <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a>, <a href="http://docbook.org/tdg5/en/html/audiodata.html"><code class="sgmltag-element">audiodata</code></a>, or <a href="http://docbook.org/tdg5/en/html/videodata.html"><code class="sgmltag-element">videodata</code></a> element.
+
+ For mediobject and <a href="http://docbook.org/tdg5/en/html/inlinemediaobject.html"><code class="sgmltag-element">inlinemediaobject</code></a> instances that
+ have a <a href="http://docbook.org/tdg5/en/html/textobject.html"><code class="sgmltag-element">textobject</code></a> child, the <a href="http://docbook.org/tdg5/en/html/textobject.html"><code class="sgmltag-element">textobject</code></a> is displayed
+ within the main text flow.
+
+- Renamed several man.link.* params to man.endnotes.*,
+ to reflect that fact that the endnotes list now
+ contains more than just links. Also did similar
+ renaming for a number of stylesheet-internal vars.
+
+- Added support for xlink:href (along with existing
+ support for the legacy ulink element).
+
+- Cleaned up and streamlined the endnotes-handling
+ code. It's still messy and klunky and the basic
+ mechanism it uses is very inefficent for documents
+ that contain a lot of notesources, but at least it's
+ a bit better than it was.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Eclipse"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Eclipse"></a>Eclipse</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">eclipse</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: Makefile</code></p><pre class="screen"><span class="commit-message">Fixed bug #1715093: Makefile for creating profiled version of eclipse.xsl added.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: eclipse.xsl</code></p><pre class="screen"><span class="commit-message">Added normalize-space around to avoid leading whitespace from appearing in the output if there's extra leading whitespace (e.g. &lt;<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>&gt; Foo&lt;/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>&gt;) in the source</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="JavaHelp"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_JavaHelp"></a>JavaHelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">javahelp</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: javahelp.xsl</code></p><pre class="screen"><span class="commit-message">Implemented FR #1230233 (sorted <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> in javahelp).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: javahelp.xsl</code></p><pre class="screen"><span class="commit-message">Added normalize-space() around titles and <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> entries to work around whitespace problems.
+Added support for <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> and <a href="http://docbook.org/tdg5/en/html/bibliography.html"><code class="sgmltag-element">bibliography</code></a> in <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> and map files.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Roundtrip"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Roundtrip"></a>Roundtrip</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">roundtrip</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl; normalise2sections.xsl; sections2blocks.&#8943;</code></p><pre class="screen"><span class="commit-message">new stylesheets for better word processor support and easier maintenance</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Steve Ball: template-pages.xml; dbk2wp.xsl; sections-spec.xml</code></p><pre class="screen"><span class="commit-message">fixed bugs</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: htmlhelp.button.back.xml; htmlhelp.button.forward.xml; htmlhelp.button.zo&#8943;</code></p><pre class="screen"><span class="commit-message">Modified <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">refpurpose</code></a> text.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: htmlhelp.map.file.xml; htmlhelp.force.map.and.alias.xml; htmlhelp.alias.f&#8943;</code></p><pre class="screen"><span class="commit-message">Fixed typos, made some small changes.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: javahelp.encoding.xml</code></p><pre class="screen"><span class="commit-message">Moved declaration and documentation of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/javahelp.encoding.html"><em class="parameter"><code>javahelp.encoding</code></em></a> from javahelp.xsl to the
+regular "parameter machinery".</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: generate.id.attributes.xml</code></p><pre class="screen"><span class="commit-message">Added <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">refpurpose</code></a> text.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: annotation.js.xml; annotation.graphic.open.xml; annotation.graphic.close.&#8943;</code></p><pre class="screen"><span class="commit-message">Added better <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">refpurpose</code></a> texts.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: chunker.output.cdata-section-elements.xml; chunker.output.standalone.xm&#8943;</code></p><pre class="screen"><span class="commit-message">Fixed some broken formatting in source files for chunker.* params,
+as pointed out by Dave Pawson.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: label.from.part.xml</code></p><pre class="screen"><span class="commit-message">Changed handling of <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> auto-labeling such that <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a>
+(when it appears at the component level) is now affected by the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/label.from.part.html"><em class="parameter"><code>label.from.part</code></em></a> param, just as <a href="http://docbook.org/tdg5/en/html/preface.html"><code class="sgmltag-element">preface</code></a>, <a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">chapter</code></a>, and <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: callout.graphics.extension.xml</code></p><pre class="screen"><span class="commit-message">Clarified that 'extension' refers to file names.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: abstract.notitle.enabled.xml</code></p><pre class="screen"><span class="commit-message">Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/abstract.notitle.enabled.html"><em class="parameter"><code>abstract.notitle.enabled</code></em></a>.
+If non-zero, in output of the <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> element on titlepages,
+display of the <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> is suppressed.
+Because sometimes you really don't want or need that <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+there...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: man.string.subst.map.xml</code></p><pre class="screen"><span class="commit-message">Updated manpages string-substitute map to reflect fact that
+because of another recent change to suppress bold markup in .SH
+output, we no longer need to add a workaround for the accidental
+uppercasing of roff escapes that occurred previously.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: margin.note.float.type.xml; title.font.family.xml; table.frame.border.color.x&#8943;</code></p><pre class="screen"><span class="commit-message">Improved parameter metadata</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: profile.wordsize.xml; profile.audience.xml</code></p><pre class="screen"><span class="commit-message">Add support for profiling on new attributes audience and wordsize.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: callout.graphics.number.limit.xml; callout.graphics.extension.xml</code></p><pre class="screen"><span class="commit-message">Added SVG graphics for fo output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: callout.icon.size.xml</code></p><pre class="screen"><span class="commit-message">Set size of <a href="http://docbook.org/tdg5/en/html/callout.html"><code class="sgmltag-element">callout</code></a> graphics.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: default.units.xml; chunker.output.method.xml; toc.list.type.xml; output.inden&#8943;</code></p><pre class="screen"><span class="commit-message">Updated parameter metadata to the new format.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: man.output.quietly.xml; title.font.family.xml; footnote.sep.leader.properties&#8943;</code></p><pre class="screen"><span class="commit-message">Added type annotations into parameter definition files.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: section.container.element.xml</code></p><pre class="screen"><span class="commit-message">Support spans in sections for certain processors.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: component.titlepage.properties.xml</code></p><pre class="screen"><span class="commit-message">Empty attribute set for top level component titlepage block.
+Allows setting a span on <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: bibliography.style.xml</code></p><pre class="screen"><span class="commit-message">Added <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> to WiKi page with description of special markup needed for ISO690 biblioentries</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: make.year.ranges.xml</code></p><pre class="screen"><span class="commit-message">Clarify that multiple <a href="http://docbook.org/tdg5/en/html/year.html"><code class="sgmltag-element">year</code></a> elements are required.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: id.warnings.xml</code></p><pre class="screen"><span class="commit-message">Turn off <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/id.warnings.html"><em class="parameter"><code>id.warnings</code></em></a> by default.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: bibliography.style.xml</code></p><pre class="screen"><span class="commit-message">Added support for formatting biblioentries according to ISO690 <a href="http://docbook.org/tdg5/en/html/citation.html"><code class="sgmltag-element">citation</code></a> style.
+New <a href="http://docbook.org/tdg5/en/html/bibliography.html"><code class="sgmltag-element">bibliography</code></a> style can be turned on by setting parameter <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/bibliography.style.html"><em class="parameter"><code>bibliography.style</code></em></a> to "iso690"
+The code was provided by Jana Dvorakova</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: header.table.properties.xml; footer.table.properties.xml</code></p><pre class="screen"><span class="commit-message">Support adding <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> properties to header and footer tables.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Highlighting"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Highlighting"></a>Highlighting</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">highlighting</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Jirka Kosek: c-hl.xml; xslthl-config.xml</code></p><pre class="screen"><span class="commit-message">Added support for C language. Provided by Bruno Guegan.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Profiling"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Profiling"></a>Profiling</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">profiling</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Robert Stayton: profile-mode.xsl</code></p><pre class="screen"><span class="commit-message">Add support for new profiling attributes audience and wordsize.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Lib"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Lib"></a>Lib</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">lib</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: lib.xweb</code></p><pre class="screen"><span class="commit-message">Changed name of prepend-pad template to pad-string and twheeked so
+it can do both right/left padding.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="Tools"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_Tools"></a>Tools</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">tools</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: bin; bin/docbook-xsl-update</code></p><pre class="screen"><span class="commit-message">Did some cleanup to the install.sh source and added a
+docbook-xsl-update script to the docbook-xsl distro, the purpose
+of which is to facilitate easy sync-up to the latest docbook-xsl
+snapshot (by means of rsync).</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="XSL-Saxon"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_XSL-Saxon"></a>XSL-Saxon</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-saxon</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/&#8943;</code></p><pre class="screen"><span class="commit-message">Added modifications so that the new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/callout.icon.size.html"><em class="parameter"><code>callout.icon.size</code></em></a> parameter is taken into account. This
+parameter is used for FO output (where SVG now is the default graphics format for callouts).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x&#8943;</code></p><pre class="screen"><span class="commit-message">Added code for generating id attributes on callouts in HTML and FO output.
+These patches enable cross-references to callouts placed by <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> coordinates.
+It works for graphic, unicode and text callouts.
+Part of fix for bug #1675513 (<a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> broken).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan&#8943;</code></p><pre class="screen"><span class="commit-message">Copied over Website XSL Java extensions.</span></pre>
+</li></ul></div>
+</div>
+<div class="sect2" title="XSL-Xalan"><div class="titlepage"><div><div><h3 class="title"><a name="V1.73.0_XSL-Xalan"></a>XSL-Xalan</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">xsl-xalan</code> code
+ since the 1.72.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: Makefile; xalan2</code></p><pre class="screen"><span class="commit-message">Turned off xalan2.jar build. This removes DocBook XSL
+Java extensions support for versions of Xalan prior to
+Xalan 2.7. If you are currently using the extensions
+with an earlier version of Xalan, you need to upgrade
+to Xalan 2.7.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/&#8943;</code></p><pre class="screen"><span class="commit-message">Added modifications so that the new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/callout.icon.size.html"><em class="parameter"><code>callout.icon.size</code></em></a> parameter is taken into account. This
+parameter is used for FO output (where SVG now is the default graphics format for callouts).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x&#8943;</code></p><pre class="screen"><span class="commit-message">Added code for generating id attributes on callouts in HTML and FO output.
+These patches enable cross-references to callouts placed by <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> coordinates.
+It works for graphic, unicode and text callouts.
+Part of fix for bug #1675513 (<a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> broken).</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan&#8943;</code></p><pre class="screen"><span class="commit-message">Copied over Website XSL Java extensions.</span></pre>
+</li></ul></div>
+</div>
+</div>
+
+<div class="sect1" title="Release: 1.72.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.72.0"></a>Release: 1.72.0</h2></div></div></div>
+
+<p>This release includes important bug fixes and adds the following
+significant feature changes:
+</p><div class="variablelist"><dl><dt><span class="term">Automatic sorting of glossary entries</span></dt><dd>
+ <p>The HTML and FO stylesheets now support automatic sorting
+ of <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> entries. To enable glossary sorting, set
+ the value of the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/glossary.sort.html"><em class="parameter"><code>glossary.sort </code></em></a> parameter
+ to <code class="code">1</code> (by default, it&#8217;s value is
+ <code class="code">0</code>). When you enable glossary sorting,
+ <a href="http://docbook.org/tdg5/en/html/glossentry.html"><code class="sgmltag-element">glossentry</code></a> elements within a <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element"> glossary</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/glossdiv.html"><code class="sgmltag-element">glossdiv</code></a>, or <a href="http://docbook.org/tdg5/en/html/glosslist.html"><code class="sgmltag-element">glosslist</code></a> are sorted on the
+ <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a>, using the current language setting. If you
+ don&#8217;t enable glossary sorting, then the order of
+ <a href="http://docbook.org/tdg5/en/html/glossentry.html"><code class="sgmltag-element">glossentry</code></a> elements is left &#8220;as is&#8221; &#8212; that is, they
+ are not sorted but are instead just displayed in document
+ order.</p>
+ </dd><dt><span class="term">WordML renamed to Roundtrip, OpenOffice support added</span></dt><dd>
+ <p>Stylesheets for &#8220;roundtrip&#8221; conversion between documents in
+ OpenOffice format (ODF) and DocBook XML have been added to the set
+ of stylesheets that formerly had the collective title
+ <em class="wordasword">WordML</em>, and that set of stylesheets has
+ been renamed to <em class="wordasword">Roundtrip</em> to better
+ reflect the actual scope and purpose of its contents.</p>
+ <p>So the DocBook XSL Stylesheets now support roundtrip
+ conversion (with certain limitations) of WordML, OpenOffice, and
+ Apple Pages documents to and from DocBook XML.</p>
+ </dd><dt><span class="term">Including QandASet questions in TOCs</span></dt><dd>
+ <p>The HTML stylesheet now provides support for including
+ <a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">QandASet</code></a> <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a>s in the document TOC. To
+ enable display of <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a>s in the document TOC, set
+ the value of the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.in.toc.html"><em class="parameter"><code>qanda.in.toc</code></em></a> to
+ <code class="code">1</code> (by default, it&#8217;s <code class="code">0</code>). When you
+ enable <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.in.toc.html"><em class="parameter"><code>qanda.in.toc</code></em></a>, then the generated
+ table of contents for a document will include
+ <a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a> titles, <a href="http://docbook.org/tdg5/en/html/qandadiv.html"><code class="sgmltag-element">qandadiv</code></a> titles, and
+ <a href="http://docbook.org/tdg5/en/html/question.html"><code class="sgmltag-element">question</code></a> elements. The default value of zero
+ excludes them from the TOC.
+ </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
+ <p>The <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.in.toc.html"><em class="parameter"><code>qanda.in.toc</code></em></a> parameter does
+ not affect any tables of contents that may be generated
+ <span class="emphasis"><em>within</em></span> a <a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a> or
+ <a href="http://docbook.org/tdg5/en/html/qandadiv.html"><code class="sgmltag-element">qandadiv</code></a> (only in the document TOC).</p>
+ </div><p>
+ </p>
+ </dd><dt><span class="term">Language identifier in man-page filenames and pathnames</span></dt><dd>
+ <p>Added new parameter <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a>, which controls whether
+ a language identifier is included in man-page filenames and
+ pathnames. It works like this:</p>
+
+ <p>If the value of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a> is non-zero,
+ man-page files are output with a language identifier included in
+ their filenames or pathnames as follows:</p>
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>if
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.subdirs.enabled.html"><em class="parameter"><code>man.output.subdirs.enabled</code></em></a> is non-zero,
+ each file is output to, e.g., a
+ <code class="filename">/$lang/man8/foo.8</code> pathname</p></li><li class="listitem"><p>if
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.subdirs.enabled.html"><em class="parameter"><code>man.output.subdirs.enabled</code></em></a> is zero,
+ each file is output with a <code class="sgmltag-element">foo.$lang.8</code>
+ filename</p></li></ul></div>
+
+ </dd><dt><span class="term"><a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/index.page.number.properties.html"><em class="parameter"><code>index.page.number.properties</code></em></a> property set</span></dt><dd>
+ <p>For FO output, use the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/index.page.number.properties.html"><em class="parameter"><code>index.page.number.properties</code></em></a> to control
+ formatting of page numbers in <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> output &#8212; to (for
+ example) to display page numbers in <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> output in a
+ different color (to indicate that they are links).</p>
+ </dd><dt><span class="term">Crop marks in output from Antenna House XSL Formatter</span></dt><dd>
+ <p>Support has been added for generating crop marks in
+ print/PDF output generated using Antenna House XSL Formatter</p>
+ </dd><dt><span class="term">More string-substitution hooks in manpages output</span></dt><dd>
+ <p>The <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.local.pre.html"><em class="parameter"><code>man.string.subst.map.local.pre</code></em></a>
+ and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.local.post.html"><em class="parameter"><code>man.string.subst.map.local.post</code></em></a>
+ parameters have been added to enable easier control over
+ custom string substitutions.</p>
+ </dd><dt><span class="term">Moved verbatim properties to attribute-set</span></dt><dd>
+ <p>The hardcoded properties used in verbatim elements (literallayout,
+ programlisting, screen) were moved to the verbatim.properties
+ attribute-set so they can be more easily customized.</p>
+ </dd><dt><span class="term">enhanced simple.xlink template</span></dt><dd>
+ <p>Now the simple.xlink template in inline.xsl works with
+ cross reference elements xref and link as well. Also, more elements
+ call simple.xlink, which enables DB5 xlink functionality.
+ </p>
+ </dd><dt><span class="term">DocBook 5 compatibility</span></dt><dd>
+ <p>Stylesheets now consistently support DocBook 5 attributes
+ (such as xml:id). Also, DocBook 5 info elements are now checked
+ along with other *info elements, and the use of name() function
+ was replaced by local-name() so it also matches on DocBook 5 elements.
+ These changes enable reusing the stylesheets with DocBook 5
+ documents with minimal fixup.
+ </p>
+ </dd><dt><span class="term">HTML class attributes now handled in class.attribute mode </span></dt><dd>
+ <p>The HTML class attributes were formerly hardcoded to the
+ element name. Now the class attribute is generated by applying
+ templates in class.attribute mode so class attribute names
+ can be customized. The default is still the element name.</p>
+ </dd><dt><span class="term">arabic-indic numbering enabled in autolabels</span></dt><dd>
+ <p>Numbering of chapter, sections, and pages can now use
+ arabic-indic numbering when number format is set to 'arabicindic' or
+ to &#1633;.</p>
+ </dd></dl></div><p>
+The following is a detailed list of changes (not
+including bug fixes) that have been made since the 1.71.1
+release.</p>
+
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1.72.0_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for arabicindic numbering to autolabel.format template.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Finish support for @xml:id everywhere @id is used.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">replace name() with local-name() in most cases.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add utility template tabstyle to return the tabstyle from<br>
+any <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> element.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1.72.0_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for sorting <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> entries</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add table.row.properties template to customize <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> rows.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Moved all properties to attribute-sets so can be customized more easily.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add index.page.number.properties attribute-set to format page numbers.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message"><a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> now supports xlink:href, using simple.xlink template.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Rewrote simple.xlink, and call it with all charseq templates.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add simple.xlink processing to <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> and <a href="http://docbook.org/tdg5/en/html/member.html"><code class="sgmltag-element">member</code></a> elements.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for crop marks in Antenna House.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1.72.0_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for sorting <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> entries</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.in.toc.html"><em class="parameter"><code>qanda.in.toc</code></em></a> to add <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">qandaentry</code></a> questions to document <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">add simple.xlink support to <a href="http://docbook.org/tdg5/en/html/variablelist.html"><code class="sgmltag-element">variablelist</code></a> <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> and <a href="http://docbook.org/tdg5/en/html/simplelist.html"><code class="sgmltag-element">simplelist</code></a> <a href="http://docbook.org/tdg5/en/html/member.html"><code class="sgmltag-element">member</code></a>.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">*.propagates.style now handled in class.attribute mode.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">add class parameter to class.attribute mode to set default class.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Convert all class attributes to use the class.attribute mode<br>
+so class names can be customized more easily.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add class.attribute mode to generate class attributes.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added simple.xlink to most remaining inlines.<br>
+Changed class attributes to applying class.attributes mode.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Changed <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> template to use simple.xlink tempalte.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Improve generate.html.title to work with <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> targets too.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Improved simple.xlink to support <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> and <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a>.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Use new link.title.attribute now.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Rewrote simple.xlink to handle linkend also.<br>
+Better computation of <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> attribute on <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> too.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Handle Xalan quirk as special case.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Fixed imagemaps so they work properly going from calspair coords<br>
+to HTML <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> coords.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="V1.72.0_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added doc for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a> parameter. This<br>
+checkin completes support for writing file/pathnames for man-pages<br>
+with $lang include in the names. Closes #1585967. knightly<br>
+accolades to Daniel Leidert for providing the feature request.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a>, which<br>
+controls whether $LANG value is included in manpages<br>
+filenames and pathnames. It works like this:<br>
+<br>
+If the value of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a> is non-zero,<br>
+man-page files are output with the $lang value included in<br>
+their filenames or pathnames as follows;<br>
+<br>
+- if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.subdirs.enabled.html"><em class="parameter"><code>man.output.subdirs.enabled</code></em></a> is non-zero, each file is<br>
+  output to, e.g., a /$lang/man8/foo.8 pathname<br>
+<br>
+- if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.subdirs.enabled.html"><em class="parameter"><code>man.output.subdirs.enabled</code></em></a> is zero, each file is output<br>
+  with a foo.$lang.8 <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a></span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Use "\e" instead of "\\" for backslash output, because the<br>
+groff docs say that's the correct thing to do; also because<br>
+testing (thanks, Paul Dubois) shows that "\\" doesn't always<br>
+work as expected; for example, "\\" within a <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> seems to<br>
+mess things up.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.local.pre.html"><em class="parameter"><code>man.string.subst.map.local.pre</code></em></a> and<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.local.post.html"><em class="parameter"><code>man.string.subst.map.local.post</code></em></a> parameters. Those parameters<br>
+enable local additions and changes to string-substitution mappings<br>
+without the need to change the value of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.html"><em class="parameter"><code>man.string.subst.map</code></em></a><br>
+parameter (which is for standard system mappings). Closes<br>
+#1456738. Thanks to Sam Steingold for constructing a true<br>
+stylesheet torture test (the clisp docs) that exposed the need for<br>
+these params.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added the Markup element to the list of elements that get output<br>
+in bold. Thanks to Eric S. Raymond.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Replaced all dots in roff requests with U+2302 ("house"<br>
+character), and added escaping in output for all instances of dot<br>
+that are not in roff requests. This fixes the problem case where a<br>
+string beginning with a dot (for example, the string ".bashrc")<br>
+might occur at the beginning of a line in output, in which case <br>
+would mistakenly get interpreted as a roff request. Thanks to Eric<br>
+S. Raymond for pushing to fix this.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Made change to ensure that list content nested in<br>
+<a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a> and <a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a> instances is properly indented. This<br>
+is a switch from using .TP to format those lists to using .RS/.RE<br>
+to format them instead (because .TP does not allow nesting). Closes bug #1602616.<br>
+Thanks to Daniel Leidert.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1.72.0_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added doc for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a> parameter. This<br>
+checkin completes support for writing file/pathnames for man-pages<br>
+with $lang include in the names. Closes #1585967. knightly<br>
+accolades to Daniel Leidert for providing the feature request.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added new param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a>, which<br>
+controls whether $LANG value is included in manpages<br>
+filenames and pathnames. It works like this:<br>
+<br>
+If the value of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.lang.in.name.enabled.html"><em class="parameter"><code>man.output.lang.in.name.enabled</code></em></a> is non-zero,<br>
+man-page files are output with the $lang value included in<br>
+their filenames or pathnames as follows;<br>
+<br>
+- if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.subdirs.enabled.html"><em class="parameter"><code>man.output.subdirs.enabled</code></em></a> is non-zero, each file is<br>
+  output to, e.g., a /$lang/man8/foo.8 pathname<br>
+<br>
+- if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.subdirs.enabled.html"><em class="parameter"><code>man.output.subdirs.enabled</code></em></a> is zero, each file is output<br>
+  with a foo.$lang.8 <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a></span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.local.pre.html"><em class="parameter"><code>man.string.subst.map.local.pre</code></em></a> and<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.local.post.html"><em class="parameter"><code>man.string.subst.map.local.post</code></em></a> parameters. Those parameters<br>
+enable local additions and changes to string-substitution mappings<br>
+without the need to change the value of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.html"><em class="parameter"><code>man.string.subst.map</code></em></a><br>
+parameter (which is for standard system mappings). Closes<br>
+#1456738. Thanks to Sam Steingold for constructing a true<br>
+stylesheet torture test (the clisp docs) that exposed the need for<br>
+these params.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add index.page.number.properties by default.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/index.page.number.properties.html"><em class="parameter"><code>index.page.number.properties</code></em></a> to allow customizations of page numbers in indexes.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Move show-destination="replace" property from template to attribute-set<br>
+so it can be customized.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for sorting <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a> entries</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add option to include qanda in tables of contents.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Moved all properties to attribute-sets so can be customized more easily.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Template"><div class="titlepage"><div><div><h3 class="title"><a name="V1.72.0_Template"></a>Template</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">template</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added workaround for Xalan bug: use for-each and copy instead of copy-of (#1604770).</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Roundtrip"><div class="titlepage"><div><div><h3 class="title"><a name="V1.72.0_Roundtrip"></a>Roundtrip</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">roundtrip</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">rename to roundtrip, add OpenOffice support</span></p></div>
+</li></ul></div>
+</div>
+</div>
+
+<div class="sect1" title="Release: 1.71.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.71.1"></a>Release: 1.71.1</h2></div></div></div>
+
+<p>This is a minor update to the 1.71.0 release. Along with a
+number of bug fixes, it includes two feature changes:
+
+</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Added support for profiling based on <code class="sgmltag-attribute">xml:lang</code> and <code class="sgmltag-attribute">status</code> attributes.</p>
+ </li><li class="listitem">
+ <p>Added initial support in manpages output for
+ <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>, <a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a>, and <a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a>
+ instances. Basically, they all now get handled the same way
+ <code class="sgmltag-element">ulink</code> instances are. They are treated as a class as
+ "note sources": A numbered marker is generated at the place in the
+ main text flow where they occur, then their contents are displayed
+ in an endnotes section at the end of the man page.</p>
+ </li></ul></div><p>
+</p>
+
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.1_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for Xalan generating a root xml:base like saxon.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.1_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for Xalan to add root node xml:base for db5 docs.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support for profiling based on xml:lang and status attributes.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.1_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add support for Xalan to add root node xml:base for db5 docs.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support for profiling based on xml:lang and status attributes.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Made changes in namespace declarations to prevent xmllint's<br>
+canonicalizer from treating them as relative namespace URIs.<br>
+<br>
+  - Changed xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService"<br>
+    to xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService";<br>
+    Saxon accepts either form<br>
+    (see http://www.saxonica.com/documentation/extensibility/functions.html);<br>
+    to Saxon, "the part of the URI before the final '/' is immaterial".<br>
+<br>
+  - Changed, e.g. xmlns:xverb="com.nwalsh.xalan.Verbatim" to<br>
+    xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"; Xalan accepts<br>
+    either form<br>
+    (see http://xml.apache.org/xalan-j/extensions.html#java-namespace-declare);<br>
+    just as Saxon does, it will "simply use the string to the<br>
+    right of the rightmost forward slash as the Java class name".<br>
+<br>
+  - Changed xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect"<br>
+    to xmlns:redirect="http://xml.apache.org/xalan/redirect", and<br>
+    adjusted associated code to make the current Xalan redirect spec.<br>
+    (see http://xml.apache.org/xalan-j/apidocs/org/apache/xalan/lib/Redirect.html)</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/html.append.html"><em class="parameter"><code>html.append</code></em></a> and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chunk.append.html"><em class="parameter"><code>chunk.append</code></em></a> parameters. By default, the<br>
+value of both is empty; but the internal DocBook XSL stylesheets<br>
+build sets their value to "&lt;xsl:text&gt;&amp;#x0a;&lt;/xsl:text&gt;", in order<br>
+to ensure that all files in the docbook-xsl-doc package end in a<br>
+newline character. (Because diff and some other tools may emit<br>
+error messages and/or not behave as expected when processing<br>
+files that are not newline-terminated.)</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Highlighting"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.1_Highlighting"></a>Highlighting</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">highlighting</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added license information</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.1_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added initial support in manpages output for <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>, <a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a>,<br>
+and <a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a> instances. Basically, they all now get handled the same<br>
+way ulink instances are. They are treated as a class as "note<br>
+sources": A numbered marker is generated at the place in the main<br>
+text flow where they occur, then their contents are displayed in<br>
+an endnotes <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> at the end of the man page (currently titled<br>
+REFERENCES, for English output, but will be changed to NOTES).<br>
+<br>
+This support is not yet complete. It works for most "normal"<br>
+cases, but probably mishandles a good number of cases. More<br>
+testing will be needed to expose the problems. It may well also<br>
+introduce some bugs and regressions in other areas, including<br>
+basic paragraph handling, handling of "mixed block" content,<br>
+handling of other indented content, and handling of authorblurb<br>
+and <a href="http://docbook.org/tdg5/en/html/personblurb.html"><code class="sgmltag-element">personblurb</code></a> in the AUTHORS <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a>.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.1_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support for profiling based on xml:lang and status attributes.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/html.append.html"><em class="parameter"><code>html.append</code></em></a> and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chunk.append.html"><em class="parameter"><code>chunk.append</code></em></a> parameters. By default, the<br>
+value of both is empty; but the internal DocBook XSL stylesheets<br>
+build sets their value to "&lt;xsl:text&gt;&amp;#x0a;&lt;/xsl:text&gt;", in order<br>
+to ensure that all files in the docbook-xsl-doc <a href="http://docbook.org/tdg5/en/html/package.html"><code class="sgmltag-element">package</code></a> end in a<br>
+newline character. (Because diff and some other tools may emit<br>
+error messages and/or not behave as expected when processing<br>
+files that are not newline-terminated.)</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Profiling"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.1_Profiling"></a>Profiling</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">profiling</code> code
+ since the 1.71.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support for profiling based on xml:lang and status attributes.</span></p></div>
+</li></ul></div>
+</div>
+
+</div>
+
+<div class="sect1" title="Release: 1.71.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.71.0"></a>Release: 1.71.0</h2></div></div></div>
+
+<p>This is mainly a bug fix release, but it also includes two
+significant feature changes:
+</p><div class="variablelist"><dl><dt><span class="term">Highlighting support added</span></dt><dd>
+ <p>The stylesheets now include support for source-code
+ highlighting in output of programlisting instances (controlled
+ through the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/highlight.source.html"><em class="parameter"><code>highlight.source</code></em></a>
+ parameter). The Java-based implementation requires Saxon and
+ makes use of <a class="ulink" href="http://molhanec.net/" target="_top"><span class="person"><span class="personname"><span class="firstname">Michal</span> <span class="surname">Molhanec</span></span></span></a>&#8217;s <a class="ulink" href="http://sourceforge.net/projects/xslthl" target="_top">XSLTHL</a>. More details are available at Jirka Kosek&#8217;s
+ website: </p><div class="blockquote"><blockquote class="blockquote"><p><a class="ulink" href="http://xmlguru.cz/2006/07/docbook-syntax-highlighting" target="_top">http://xmlguru.cz/2006/07/docbook-syntax-highlighting</a></p></blockquote></div><p> The support is currently limited to highlighting
+ of XML, Java, PHP, Delphi, Modula-2 sources, and INI
+ files.</p>
+ </dd><dt><span class="term">Changes to autoindexing</span></dt><dd>
+ <p>The templates that handle alternative indexing methods
+ were reworked to avoid errors produced by certain processors not
+ being able to tolerate the presence of unused functions. With
+ this release, none of the code for the 'kimber' or 'kosek'
+ methods is included in the default stylesheets. In order to use
+ one of those methods, your customization layer must import one
+ of the optional stylesheet modules:</p>
+ <p>
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ html/autoidx-kosek.xsl
+ </li><li class="listitem">
+ html/autoidx-kimber.xsl
+ </li><li class="listitem">
+ fo/autoidx-kosek.xsl
+ </li><li class="listitem">
+ fo/autoidx-kimber.xsl
+ </li></ul></div><p>
+ See the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.method.html"><em class="parameter"><code>index.method</code></em></a> parameter
+ reference page for more information.
+ </p>
+ <p>Two other changes to note:
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ The default indexing method now can handle accented
+ characters in latin-based alphabets, not just English. This
+ means accented latin letters will group and sort with their
+ unaccented counterpart.
+ </li><li class="listitem">
+ The default value for the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.method.html"><em class="parameter"><code>index.method</code></em></a> parameter was changed
+ from 'english' to 'basic' because now the default method can
+ handle latin-based alphabets, not just English.
+ </li></ul></div><p>
+ </p>
+ </dd></dl></div><p>
+The following is a list of changes that have
+been made since the 1.70.1 release.</p>
+
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/reference.autolabel.html"><em class="parameter"><code>reference.autolabel</code></em></a> parameter for controlling labels on<br>
+<a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> output.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a>s that are *completely* overlapped by the preceding <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a></span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">New modules for supporting indexing extensions.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support startinglinenumber on <a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a></span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Extensions"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_Extensions"></a>Extensions</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">extensions</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Completely reworked extensions build system; now uses NetBeans and ant</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">xsl:sort lang attribute now uses two-char substring of lang attribute.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support titlecase "Java", "Perl", and "IDL" as values for the<br>
+language attribute on <a href="http://docbook.org/tdg5/en/html/classsynopsis.html"><code class="sgmltag-element">classsynopsis</code></a>, etc. (instead of just<br>
+lowercase "java", "perl", and "idl"). Also support "c++" and "C++"<br>
+(instead of just "cpp").<br>
+<br>
+Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks<br>
+to "Brian A. Vanderburg II".</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support for the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/reference.autolabel.html"><em class="parameter"><code>reference.autolabel</code></em></a> param in (X)HTML and FO<br>
+output.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a>s that are *completely* overlapped by the preceding <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a></span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Rearranged templates for the 3 indexing methods<br>
+and changed method named 'english' to 'basic'.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">New modules for supporting indexing extensions.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Turn off blank-body for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/fop1.extensions.html"><em class="parameter"><code>fop1.extensions</code></em></a> too since fop 0.92<br>
+does not support it either.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add Xalan variant to test for exslt:node-set <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>.<br>
+Xalan can use <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> named node-set(), but doesn't<br>
+recognize it using function-available().</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support to FO stylesheets for handling instances of <a href="http://docbook.org/tdg5/en/html/org.html"><code class="sgmltag-element">Org</code></a><br>
+where it occurs outside of *<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> content. In HTML stylesheets,<br>
+moved handling of <a href="http://docbook.org/tdg5/en/html/org.html"><code class="sgmltag-element">Org</code></a> out of info.xsl and into inline.xsl. In both<br>
+FO and HTML stylesheets, added support for correctly processing<br>
+<a href="http://docbook.org/tdg5/en/html/affiliation.html"><code class="sgmltag-element">Affiliation</code></a> and <a href="http://docbook.org/tdg5/en/html/jobtitle.html"><code class="sgmltag-element">Jobtitle</code></a>.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Don't output punctuation between <a href="http://docbook.org/tdg5/en/html/refname.html"><code class="sgmltag-element">Refname</code></a> and <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">Refpurpose</code></a> if<br>
+<a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">Refpurpose</code></a> is empty. Also corrected handling of <a href="http://docbook.org/tdg5/en/html/refsect2.html"><code class="sgmltag-element">Refsect2</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a><br>
+instances, and removed some debugging stuff that was generated in<br>
+manpages output to mark the ends of sections.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/email.delimiters.enabled.html"><em class="parameter"><code>email.delimiters.enabled</code></em></a> param. If non-zero (the<br>
+default), delimiters are generated around e-mail addresses (output<br>
+of the <a href="http://docbook.org/tdg5/en/html/email.html"><code class="sgmltag-element">email</code></a> element). If zero, the delimiters are suppressed.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Initial support of syntax highlighting of programlistings.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message"><a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">Chapter</code></a> after <a href="http://docbook.org/tdg5/en/html/preface.html"><code class="sgmltag-element">preface</code></a> should restart numbering of pages.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">xsl:sort lang attribute now uses two-char substring of lang attribute.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support titlecase "Java", "Perl", and "IDL" as values for the<br>
+language attribute on <a href="http://docbook.org/tdg5/en/html/classsynopsis.html"><code class="sgmltag-element">classsynopsis</code></a>, etc. (instead of just<br>
+lowercase "java", "perl", and "idl"). Also support "c++" and "C++"<br>
+(instead of just "cpp").<br>
+<br>
+Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks<br>
+to "Brian A. Vanderburg II".</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support for the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/reference.autolabel.html"><em class="parameter"><code>reference.autolabel</code></em></a> param in (X)HTML and FO<br>
+output.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a>s that are *completely* overlapped by the preceding <a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a></span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Rearranged templates for the 3 indexing methods<br>
+and changed method named 'english' to 'basic'.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">New modules for supporting indexing extensions.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added several new HTML parameters for controlling appearance of<br>
+content on HTML <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> pages:<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/contrib.inline.enabled.html"><em class="parameter"><code>contrib.inline.enabled</code></em></a>:<br>
+  If non-zero (the default), output of the <a href="http://docbook.org/tdg5/en/html/contrib.html"><code class="sgmltag-element">contrib</code></a> element is<br>
+  displayed as inline content rather than as block content.<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/othercredit.like.author.enabled.html"><em class="parameter"><code>othercredit.like.author.enabled</code></em></a>:<br>
+  If non-zero, output of the <a href="http://docbook.org/tdg5/en/html/othercredit.html"><code class="sgmltag-element">othercredit</code></a> element on titlepages is<br>
+  displayed in the same style as <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> and <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a> output. If zero<br>
+  (the default), <a href="http://docbook.org/tdg5/en/html/othercredit.html"><code class="sgmltag-element">othercredit</code></a> output is displayed using a style<br>
+  different than that of <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> and <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a>.<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/blurb.on.titlepage.enabled.html"><em class="parameter"><code>blurb.on.titlepage.enabled</code></em></a>:<br>
+  If non-zero, output from authorblurb and <a href="http://docbook.org/tdg5/en/html/personblurb.html"><code class="sgmltag-element">personblurb</code></a> elements is<br>
+  displayed on <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> pages. If zero (the default), output from<br>
+  those elements is suppressed on <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> pages (unless you are<br>
+  using a titlepage customization that causes them to be included).<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/editedby.enabled.html"><em class="parameter"><code>editedby.enabled</code></em></a><br>
+  If non-zero (the default), a localized Edited by heading is<br>
+  displayed above <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a> names in output of the <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a> element.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Add Xalan variant to test for exslt:node-set <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>.<br>
+Xalan can use <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> named node-set(), but doesn't<br>
+recognize it using function-available().</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added support to FO stylesheets for handling instances of <a href="http://docbook.org/tdg5/en/html/org.html"><code class="sgmltag-element">Org</code></a><br>
+where it occurs outside of *<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> content. In HTML stylesheets,<br>
+moved handling of <a href="http://docbook.org/tdg5/en/html/org.html"><code class="sgmltag-element">Org</code></a> out of info.xsl and into inline.xsl. In both<br>
+FO and HTML stylesheets, added support for correctly processing<br>
+<a href="http://docbook.org/tdg5/en/html/affiliation.html"><code class="sgmltag-element">Affiliation</code></a> and <a href="http://docbook.org/tdg5/en/html/jobtitle.html"><code class="sgmltag-element">Jobtitle</code></a>.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Don't output punctuation between <a href="http://docbook.org/tdg5/en/html/refname.html"><code class="sgmltag-element">Refname</code></a> and <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">Refpurpose</code></a> if<br>
+<a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">Refpurpose</code></a> is empty. Also corrected handling of <a href="http://docbook.org/tdg5/en/html/refsect2.html"><code class="sgmltag-element">Refsect2</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a><br>
+instances, and removed some debugging stuff that was generated in<br>
+manpages output to mark the ends of sections.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/email.delimiters.enabled.html"><em class="parameter"><code>email.delimiters.enabled</code></em></a> param. If non-zero (the<br>
+default), delimiters are generated around e-mail addresses (output<br>
+of the <a href="http://docbook.org/tdg5/en/html/email.html"><code class="sgmltag-element">email</code></a> element). If zero, the delimiters are suppressed.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.nested.in.toc.html"><em class="parameter"><code>qanda.nested.in.toc</code></em></a> param. Default value is zero. If<br>
+non-zero, instances of "nested" <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">Qandaentry</code></a> (ones that are children<br>
+of <a href="http://docbook.org/tdg5/en/html/answer.html"><code class="sgmltag-element">Answer</code></a> elements) are displayed in the <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>. Closes patch 1509018<br>
+(from Daniel Leidert). Currently on affects HTML output (no patch<br>
+for FO output provided).</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Improved handling of relative locations generated files</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Initial support of syntax highlighting of programlistings.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support <a href="http://docbook.org/tdg5/en/html/org.html"><code class="sgmltag-element">org</code></a></span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support <a href="http://docbook.org/tdg5/en/html/person.html"><code class="sgmltag-element">person</code></a></span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Support $keep.relative.image.uris also when chunking</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Highlighting"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_Highlighting"></a>Highlighting</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">highlighting</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Initial support of syntax highlighting of programlistings.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Suppress <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> markers and output warning that footnotes are<br>
+not yet supported.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Handle instances of <a href="http://docbook.org/tdg5/en/html/address.html"><code class="sgmltag-element">address</code></a>/<a href="http://docbook.org/tdg5/en/html/otheraddr.html"><code class="sgmltag-element">otheraddr</code></a>/ulink in <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> et al in the<br>
+same way as <a href="http://docbook.org/tdg5/en/html/email.html"><code class="sgmltag-element">email</code></a> instances; that is, display them on the same<br>
+linke as the <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a>, <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a>, etc., name.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Don't number or link-list any Ulink instance whose string value is<br>
+identical to the value of its url attribute. Just display it inline.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Don't output punctuation between <a href="http://docbook.org/tdg5/en/html/refname.html"><code class="sgmltag-element">Refname</code></a> and <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">Refpurpose</code></a> if<br>
+<a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">Refpurpose</code></a> is empty. Also corrected handling of <a href="http://docbook.org/tdg5/en/html/refsect2.html"><code class="sgmltag-element">Refsect2</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a><br>
+instances, and removed some debugging stuff that was generated in<br>
+manpages output to mark the ends of sections.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/email.delimiters.enabled.html"><em class="parameter"><code>email.delimiters.enabled</code></em></a> param. If non-zero (the<br>
+default), delimiters are generated around e-mail addresses (output<br>
+of the <a href="http://docbook.org/tdg5/en/html/email.html"><code class="sgmltag-element">email</code></a> element). If zero, the delimiters are suppressed.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">In manpages output, if the last/nearest *<a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> element for<br>
+particular <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a> has multiple <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">Copyright</code></a> and/or <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">Legalnotice</code></a><br>
+children, process them all (not just the first ones). Closes bug<br>
+1524576. Thanks to Sam Steingold for the report and to Daniel<br>
+Leidert for providing a patch.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/reference.autolabel.html"><em class="parameter"><code>reference.autolabel</code></em></a> parameter for controlling labels on<br>
+<a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> output.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added namespace declarations to document elements for all param files.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Updated index.method doc to describe revised setup for importing <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> extensions.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added several new HTML parameters for controlling appearance of<br>
+content on HTML <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> pages:<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/contrib.inline.enabled.html"><em class="parameter"><code>contrib.inline.enabled</code></em></a>:<br>
+  If non-zero (the default), output of the <a href="http://docbook.org/tdg5/en/html/contrib.html"><code class="sgmltag-element">contrib</code></a> element is<br>
+  displayed as inline content rather than as block content.<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/othercredit.like.author.enabled.html"><em class="parameter"><code>othercredit.like.author.enabled</code></em></a>:<br>
+  If non-zero, output of the <a href="http://docbook.org/tdg5/en/html/othercredit.html"><code class="sgmltag-element">othercredit</code></a> element on titlepages is<br>
+  displayed in the same style as <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> and <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a> output. If zero<br>
+  (the default), <a href="http://docbook.org/tdg5/en/html/othercredit.html"><code class="sgmltag-element">othercredit</code></a> output is displayed using a style<br>
+  different than that of <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> and <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a>.<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/blurb.on.titlepage.enabled.html"><em class="parameter"><code>blurb.on.titlepage.enabled</code></em></a>:<br>
+  If non-zero, output from authorblurb and <a href="http://docbook.org/tdg5/en/html/personblurb.html"><code class="sgmltag-element">personblurb</code></a> elements is<br>
+  displayed on <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> pages. If zero (the default), output from<br>
+  those elements is suppressed on <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> pages (unless you are<br>
+  using a titlepage customization that causes them to be included).<br>
+<br>
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/editedby.enabled.html"><em class="parameter"><code>editedby.enabled</code></em></a><br>
+  If non-zero (the default), a localized Edited by heading is<br>
+  displayed above <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a> names in output of the <a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">editor</code></a> element.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added new <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/email.delimiters.enabled.html"><em class="parameter"><code>email.delimiters.enabled</code></em></a> param. If non-zero (the<br>
+default), delimiters are generated around e-mail addresses (output<br>
+of the <a href="http://docbook.org/tdg5/en/html/email.html"><code class="sgmltag-element">email</code></a> element). If zero, the delimiters are suppressed.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.nested.in.toc.html"><em class="parameter"><code>qanda.nested.in.toc</code></em></a> param. Default value is zero. If<br>
+non-zero, instances of "nested" <a href="http://docbook.org/tdg5/en/html/qandaentry.html"><code class="sgmltag-element">Qandaentry</code></a> (ones that are children<br>
+of <a href="http://docbook.org/tdg5/en/html/answer.html"><code class="sgmltag-element">Answer</code></a> elements) are displayed in the <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>. Closes patch 1509018<br>
+(from Daniel Leidert). Currently on affects HTML output (no patch<br>
+for FO output provided).</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Initial support of syntax highlighting of programlistings.</span></p></div>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Tools"><div class="titlepage"><div><div><h3 class="title"><a name="V1.71.0_Tools"></a>Tools</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">tools</code> code
+ since the 1.70.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Racheted down font sizes of headings in example makefile FO output.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added param and attribute set to example makefile, for getting<br>
+wrapping in verbatims in FO output.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Renamed Makefile.paramDoc to Makefile.docParam.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added Makefile.paramDoc file, for creating versions of param.xsl<br>
+files with doc embedded.</span></p></div>
+</li><li class="listitem">
+<div class="literallayout"><p><span class="commit-message">Added variable to example makefile for controlling whether HTML or<br>
+XHTML is generated.</span></p></div>
+</li></ul></div>
+</div>
+</div>
+
+<div class="sect1" title="Release: 1.70.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1701"></a>Release: 1.70.1</h2></div></div></div>
+
+
+<p>This is a stable release of the 1.70 stylesheets. It includes only a
+few small changes from 1.70.0.</p>
+
+<p>The following is a list of changes that have been made
+ since the 1.70.0 release.</p>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1701_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.70.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output.</p>
+<p class="commit-changes">Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek</p>
+</li><li class="listitem">
+<p>Support DBv5 revisions with full author name (not only authorinitials)</p>
+<p class="commit-changes">Modified: fo/block.xsl,1.33; fo/titlepage.xsl,1.40 - Jirka Kosek</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1701_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.70.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Support DBv5 revisions with full author name (not only authorinitials)</p>
+<p class="commit-changes">Modified: html/block.xsl,1.23; html/titlepage.xsl,1.34 - Jirka Kosek</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTMLHelp"><div class="titlepage"><div><div><h3 class="title"><a name="V1701_HTMLHelp"></a>HTMLHelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">htmlhelp</code> code
+ since the 1.70.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>htmlhelp.generate.index is now param, not variable. This means that you can override its setting from outside. This is useful when you generate indexterms on the fly (see http://www.xml.com/pub/a/2004/07/14/dbndx.html?page=3).</p>
+<p class="commit-changes">Modified: htmlhelp/htmlhelp-common.xsl,1.38 - Jirka Kosek</p>
+</li><li class="listitem">
+<p>Support chunk.tocs.and.lots in HTML Help</p>
+<p class="commit-changes">Modified: htmlhelp/htmlhelp-common.xsl,1.37 - Jirka Kosek</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1701_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.70.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output.</p>
+<p class="commit-changes">Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek</p>
+</li></ul></div>
+</div>
+
+</div>
+
+<div class="sect1" title="Release: 1.70.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1700"></a>Release: 1.70.0</h2></div></div></div>
+
+<p>As with all DocBook Project <a class="link" href="#dot0" title="About dot-zero releases">dot-zero</a>
+releases, this is an experimental release. It will be followed shortly
+by a stable release.</p>
+
+<p>This release adds a number of new features,
+including:</p>
+
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>support for selecting alternative index-collation methods
+ (in particular, support for using a collation library developed by
+ Eliot Kimber)</p>
+ </li><li class="listitem">
+ <p>improved handling of DocBook 5 document instances (through a
+ namespace-stripping mechanism)</p>
+ </li><li class="listitem">
+ <p>full support for CALS and HTML tables in manpages
+ output</p>
+ </li><li class="listitem">
+ <p>a mechanism for preserving relative URIs in documents that
+ make use of XInclude</p>
+ </li><li class="listitem">
+ <p>support for the "new" <code class="literal">.90</code> version of
+ FOP</p>
+ </li><li class="listitem">
+ <p>enhanced capabilities for controlling formatting of lists in HTML
+ and FO output</p>
+ </li><li class="listitem">
+ <p>autogeneration of AUTHOR and COPYRIGHT sections in manpages
+ output</p>
+ </li><li class="listitem">
+ <p>support for generating crop marks in FO/PDF output</p>
+ </li><li class="listitem">
+ <p>support for qandaset as a root element in FO output</p>
+ </li><li class="listitem">
+ <p>support for floatstyle and orient on all table types</p>
+ </li><li class="listitem">
+ <p>support for floatstyle in figure, and example</p>
+ </li><li class="listitem">
+ <p>pgwide.properties attribute-set supports extending figure,
+ example and table into the left indent area instead of spanning
+ multiple columns.</p>
+ </li></ul></div>
+ <p>The following is a detailed list of enhancements and API
+ changes that have been made since the 1.69.1 release.</p>
+
+<div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Add the xsl:key for the kimber
+indexing method.</p>
+<p class="commit-changes">Modified: common/autoidx-ng.xsl,1.2 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add support for
+<a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a>.</p>
+<p class="commit-changes">Modified: common/labels.xsl,1.37;
+common/subtitles.xsl,1.7; common/titles.xsl,1.35 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Support dbhtml/dbfo start PI for
+<a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a> numbering in both HTML and
+FO</p>
+<p class="commit-changes">Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added CVS
+header.</p>
+<p class="commit-changes">Modified: common/stripns.xsl,1.12 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Changed content model of text
+element to ANY rather than #PCDATA because they could contain
+markup.</p>
+<p class="commit-changes">Modified: common/targetdatabase.dtd,1.7 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added
+<a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>.meta.get.quietly param.</p>
+<p>If zero (the
+default), notes and warnings about "missing" markup are generated
+during gathering of <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> metadata. If
+non-zero, the metadata is gathered "quietly" -- that is, the
+notes and warnings are suppressed.</p>
+<p>NOTE: If you are
+processing a large amount of <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> content, you
+may be able to speed up processing significantly by setting a
+non-zero value for
+<a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>.meta.get.quietly.</p>
+<p class="commit-changes">Modified: common/refentry.xsl,1.17;
+manpages/param.ent,1.15; manpages/param.xweb,1.17;
+params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>After namespace stripping, the
+source document is the temporary tree created by the stripping
+process and it has the wrong base <a href="http://docbook.org/tdg5/en/html/uri.html"><code class="sgmltag-element">URI</code></a> for relative
+references. Earlier versions of this code used to try to fix that
+by patching the elements with relative @fileref attributes. That
+was inadequate because it calculated an absolute base <a href="http://docbook.org/tdg5/en/html/uri.html"><code class="sgmltag-element">URI</code></a>
+without considering that there might be xml:base attributes
+already in effect. It seems obvious now that the right thing to
+do is simply to put the xml:base on the root of the document. And
+that seems to work.</p>
+<p class="commit-changes">Modified: common/stripns.xsl,1.7 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added support for "software" and
+"sectdesc" class values on <a href="http://docbook.org/tdg5/en/html/refmiscinfo.html"><code class="sgmltag-element">refmiscinfo</code></a>; "software" is
+treated identically to "source", and "setdesc" is treated
+identically to "manual".</p>
+<p class="commit-changes">Modified: common/refentry.xsl,1.10;
+params/man.th.extra2.max.length.xml,1.3;
+params/refentry.source.name.profile.xml,1.4 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added support for DocBook 5
+namespace-stripping in manpages stylesheet. Closes request
+#1210692.</p>
+<p class="commit-changes">Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added &lt;xsl:template
+match="/"&gt; to make stripns.xsl usable as a standalone
+stylesheet for stripping out DocBook 5/NG to DocBook 4. Note that
+DocBook XSLT drivers that include this stylesheet all override
+the match="/" template.</p>
+<p class="commit-changes">Modified: common/stripns.xsl,1.4 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Number figures, examples, and
+tables from <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> if there is no prefix (i.e. if
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chapter.autolabel.html"><em class="parameter"><code>chapter.autolabel</code></em></a> is set to 0). This avoids
+having the list of figures where the figures mysteriously restart
+their numeration periodically when
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chapter.autolabel.html"><em class="parameter"><code>chapter.autolabel</code></em></a> is set to
+0.</p>
+<p class="commit-changes">Modified: common/labels.xsl,1.36 - David Cramer</p>
+</li><li class="listitem">
+<p>Add <a href="http://docbook.org/tdg5/en/html/task.html"><code class="sgmltag-element">task</code></a> template in
+<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.markup mode.</p>
+<p class="commit-changes">Modified: common/titles.xsl,1.34 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add children (with ids) of formal
+objects to target data.</p>
+<p class="commit-changes">Modified: common/targets.xsl,1.10 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added support for case when
+<a href="http://docbook.org/tdg5/en/html/personname.html"><code class="sgmltag-element">personname</code></a> doesn't contain specific name markup (as allowed
+in DocBook 5.0)</p>
+<p class="commit-changes">Modified: common/common.xsl,1.54 - Jirka
+Kosek</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Extensions"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_Extensions"></a>Extensions</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">extensions</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Support Xalan
+2.7</p>
+<p class="commit-changes">Modified: extensions/xalan27/.cvsignore,1.1;
+extensions/xalan27/build.xml,1.1;
+extensions/xalan27/nbproject/.cvsignore,1.1;
+extensions/xalan27/nbproject/build-impl.xml,1.1;
+extensions/xalan27/nbproject/genfiles.properties,1.1;
+extensions/xalan27/nbproject/project.properties,1.1;
+extensions/xalan27/nbproject/project.xml,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/CVS.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Callout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatDingbatCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatGraphicCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatTextCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatUnicodeCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Func.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/ImageIntrinsics.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Params.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Table.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Text.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Verbatim.java,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Handle the case where the imageFn
+is actually a <a href="http://docbook.org/tdg5/en/html/uri.html"><code class="sgmltag-element">URI</code></a>. This still needs
+work.</p>
+<p class="commit-changes">Modified: extensions/saxon643/com/nwalsh/saxon/ImageIntrinsics.java,1.4
+- Norman Walsh</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Adapted to the new indexing
+code. Now works just like a wrapper that calls kosek indexing method,
+originally implemented here.</p>
+<p class="commit-changes">Modified: fo/autoidx-ng.xsl,1.5 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Added parameters for header/footer
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> minimum height.</p>
+<p class="commit-changes">Modified: fo/pagesetup.xsl,1.60;
+fo/param.ent,1.100; fo/param.xweb,1.113 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add the <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>.method
+parameter.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.99; fo/param.xweb,1.112 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Integrate support for three
+indexing methods: - the original English-only method. -
+Jirka Kosek's method using EXSLT extensions. - Eliot Kimber's
+method using Saxon extensions. Use the '<a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>.method'
+parameter to select.</p>
+<p class="commit-changes">Modified: fo/autoidx.xsl,1.38 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add support for <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a> for
+<a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a> in fo output.</p>
+<p class="commit-changes">Modified: fo/autotoc.xsl,1.30;
+fo/qandaset.xsl,1.20 - Robert Stayton</p>
+</li><li class="listitem">
+<p>Added parameter
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/ulink.hyphenate.html"><em class="parameter"><code>ulink.hyphenate</code></em></a>.chars. Added parameter
+insert.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.page.number.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.98;
+fo/param.xweb,1.111 - Robert Stayton</p>
+</li><li class="listitem">
+<p>Implemented feature request
+#942524 to add insert.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.page.number to allow link
+element cross references to have a page number.</p>
+<p class="commit-changes">Modified: fo/xref.xsl,1.67 -
+Robert Stayton</p>
+</li><li class="listitem">
+<p>Add support for
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/ulink.hyphenate.html"><em class="parameter"><code>ulink.hyphenate</code></em></a>.chars so more characters
+can be break points in urls.</p>
+<p class="commit-changes">Modified: fo/xref.xsl,1.66 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Implemented patch #1075144 to make
+the url text in a ulink in FO output an active <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> as
+well.</p>
+<p class="commit-changes">Modified: fo/xref.xsl,1.65 - Robert Stayton</p>
+</li><li class="listitem">
+<p><a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> footnotes now
+have their own <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.<a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>.properties
+attribute set.</p>
+<p class="commit-changes">Modified: fo/footnote.xsl,1.23 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add <a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a> to
+root.elements.</p>
+<p class="commit-changes">Modified: fo/docbook.xsl,1.41 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added mode="page.sequence" to make
+it easier to put content into a page sequence. First used for
+<a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a>.</p>
+<p class="commit-changes">Modified: fo/component.xsl,1.37 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Implemented feature request
+#1434408 to support formatting
+of <a href="http://docbook.org/tdg5/en/html/biblioentry.html"><code class="sgmltag-element">biblioentry</code></a>.</p>
+<p class="commit-changes">Modified: fo/biblio.xsl,1.35 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added
+<a href="http://docbook.org/tdg5/en/html/biblioentry.html"><code class="sgmltag-element">biblioentry</code></a>.properties.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.97;
+fo/param.xweb,1.110 - Robert Stayton</p>
+</li><li class="listitem">
+<p>Support PTC/Arbortext
+bookmarks</p>
+<p class="commit-changes">Modified: fo/docbook.xsl,1.40; fo/ptc.xsl,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.<a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>.properties to permit
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> footnotes to format differently from regular
+footnotes.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.96; fo/param.xweb,1.109 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Refactored <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>
+templates to unify their processing and support all options in
+all types. Now <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> and <a href="http://docbook.org/tdg5/en/html/informaltable.html"><code class="sgmltag-element">informaltable</code></a>, in
+both Cals and Html markup, use the same templates where possible,
+and all support pgwide, rotation, and floats. There is also a
+placeholder <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.container template to
+support wrapping a <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> in a layout <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>,
+so the XEP <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> "continued"
+extension can be more easily implemented.</p>
+<p class="commit-changes">Modified: fo/formal.xsl,1.52;
+fo/htmltbl.xsl,1.9; fo/table.xsl,1.48 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added new attribute set
+<a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a>.line.properties for controlling appearance of lines in
+ToC/LoT</p>
+<p class="commit-changes">Modified: fo/autotoc.xsl,1.29; fo/param.ent,1.95;
+fo/param.xweb,1.108 - Jirka Kosek</p>
+</li><li class="listitem">
+<p>Added support for float to example
+and <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a>. Added support for pgwide to
+<a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>, example, and <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> (the latter
+two via a dbfo pgwide="1" processing
+instruction).</p>
+<p class="commit-changes">Modified: fo/formal.xsl,1.51 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add pgwide.properties
+attribute-set.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.94; fo/param.xweb,1.107 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress
+param.</p>
+<p>If the value of <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress is
+non-zero, then display <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a> contents is suppressed
+in output. Affects HTML and FO output
+only.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90;
+html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Improved support for
+<a href="http://docbook.org/tdg5/en/html/task.html"><code class="sgmltag-element">task</code></a> subelements</p>
+<p class="commit-changes">Modified: fo/task.xsl,1.3; html/task.xsl,1.3 -
+Jirka Kosek</p>
+</li><li class="listitem">
+<p>Adjusted spacing around
+K&amp;R-formatted <a href="http://docbook.org/tdg5/en/html/funcdef.html"><code class="sgmltag-element">Funcdef</code></a> and <a href="http://docbook.org/tdg5/en/html/paramdef.html"><code class="sgmltag-element">Paramdef</code></a>
+output such that it can more easily be discerned where one ends
+and the other begins. Closes #1213264.</p>
+<p class="commit-changes">Modified: fo/synop.xsl,1.18 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Made handling of
+paramdef/parameter in FO output consistent with that in HTML and
+manpages output. Closes #1213259.</p>
+<p class="commit-changes">Modified: fo/synop.xsl,1.17 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Made handling of
+<a href="http://docbook.org/tdg5/en/html/refnamediv.html"><code class="sgmltag-element">Refnamediv</code></a> consistent with formatting in HTML
+and manpages output; specifically, changed so that
+<a href="http://docbook.org/tdg5/en/html/refname.html"><code class="sgmltag-element">Refname</code></a> (comma-separated list of multiple instances
+found) is used (instead of <a href="http://docbook.org/tdg5/en/html/refentrytitle.html"><code class="sgmltag-element">Refentrytitle</code></a> as
+previously), then em-dash, then the <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">Refpurpose</code></a>. Closes
+#1212562.</p>
+<p class="commit-changes">Modified: fo/refentry.xsl,1.30 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added output of
+<a href="http://docbook.org/tdg5/en/html/releaseinfo.html"><code class="sgmltag-element">Releaseinfo</code></a> to recto titlepage ("<a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a>"
+page) for <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">Book</code></a> in FO output. This makes it consistent
+with HTML output. Closes #1327034. Thanks to Paul DuBois for
+reporting.</p>
+<p class="commit-changes">Modified: fo/titlepage.templates.xml,1.28 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added condition for setting
+block-progression-dimension.minimum on table-row, instead of
+height, when <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/fop1.extensions.html"><em class="parameter"><code>fop1.extensions</code></em></a> is
+non-zero. For an explanation of the reason for the change,
+<a href="http://docbook.org/tdg5/en/html/see.html"><code class="sgmltag-element">see</code></a>: http://wiki.apache.org/xmlgraphics-fop/Troubleshooting/CommonLogMessages</p>
+<p class="commit-changes">Modified: fo/pagesetup.xsl,1.59
+- Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added new
+<a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress param for suppressing display
+of <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">Refclass</code></a> in HTML and FO output. Did not add it to
+manpages because manpages stylesheet is currently just silently
+ignoring <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">Refclass</code></a> anyway. Closes request
+#1461065. Thanks to Davor Ocelic (docelic) for
+reporting.</p>
+<p class="commit-changes">Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Add support for keep-together PI
+to informal objects.</p>
+<p class="commit-changes">Modified: fo/formal.xsl,1.50 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add support for
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/fop1.extensions.html"><em class="parameter"><code>fop1.extensions</code></em></a>.</p>
+<p class="commit-changes">Modified: fo/formal.xsl,1.49;
+fo/graphics.xsl,1.44; fo/table.xsl,1.47 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add support for fop1
+bookmarks.</p>
+<p class="commit-changes">Modified: fo/docbook.xsl,1.39 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add fop1.extentions parameter to
+add support for fop development version.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.92;
+fo/param.xweb,1.105 - Robert Stayton</p>
+</li><li class="listitem">
+<p>Start supporting fop development
+version, which will become fop version 1.</p>
+<p class="commit-changes">Modified: fo/fop1.xsl,1.1 -
+Robert Stayton</p>
+</li><li class="listitem">
+<p>Add template for <a href="http://docbook.org/tdg5/en/html/task.html"><code class="sgmltag-element">task</code></a>
+in mode="xref-to".</p>
+<p class="commit-changes">Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p><a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> footnotes now
+also get <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>.properties
+attribute-set.</p>
+<p class="commit-changes">Modified: fo/footnote.xsl,1.22 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>.separator
+named template to compute the separator punctuation based on
+locale.</p>
+<p class="commit-changes">Modified: fo/autoidx.xsl,1.36 - Robert Stayton</p>
+</li><li class="listitem">
+<p>Added support for <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>,
+<a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a>, and <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> within OO
+<a href="http://docbook.org/tdg5/en/html/classsynopsis.html"><code class="sgmltag-element">Classsynopsis</code></a> and children. (Because DocBook NG/5
+allows it).</p>
+<p class="commit-changes">Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Support <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> as an
+inline</p>
+<p class="commit-changes">Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added new parameter
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/keep.relative.image.uris.html"><em class="parameter"><code>keep.relative.image.uris</code></em></a></p>
+<p class="commit-changes">Modified: fo/param.ent,1.91;
+fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96;
+params/keep.relative.image.uris.xml,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Map Unicode space characters
+U+2000-U+200A to fo:leaders.</p>
+<p class="commit-changes">Modified: fo/docbook.xsl,1.38;
+fo/passivetex.xsl,1.4; fo/spaces.xsl,1.1 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Output a real em dash for em-dash
+dingbat (instead of two hypens).</p>
+<p class="commit-changes">Modified: fo/fo.xsl,1.7 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Support default <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>
+width parameters for itemized and ordered lists</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.64;
+fo/param.ent,1.90; fo/param.xweb,1.103;
+params/itemizedlist.label.width.xml,1.1;
+params/orderedlist.label.width.xml,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Generate localized
+<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> for <a href="http://docbook.org/tdg5/en/html/refsynopsisdiv.html"><code class="sgmltag-element">Refsynopsisdiv</code></a> if no
+appropriate <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">Title</code></a> descendant found in source. Closes
+#1212398. This change makes behavior for the <a href="http://docbook.org/tdg5/en/html/synopsis.html"><code class="sgmltag-element">Synopsis</code></a>
+<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> consistent with the behavior of HTML and
+manpages output.</p>
+<p>Also, added
+xsl:use-attribute-sets="normal.<a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a>.spacing" to
+block generated for <a href="http://docbook.org/tdg5/en/html/cmdsynopsis.html"><code class="sgmltag-element">Cmdsynopsis</code></a> output. Previously,
+that block had no spacing at all specified, which resulted it
+being crammed up to closely to the <a href="http://docbook.org/tdg5/en/html/synopsis.html"><code class="sgmltag-element">Synopsis</code></a>
+head.</p>
+<p class="commit-changes">Modified: fo/refentry.xsl,1.28; fo/synop.xsl,1.13 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added parameters to support
+localization of <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>
+item punctuation.</p>
+<p class="commit-changes">Modified: fo/autoidx.xsl,1.35 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.number.separator.html"><em class="parameter"><code>index.number.separator</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.range.separator.html"><em class="parameter"><code>index.range.separator</code></em></a>,
+and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.term.separator.html"><em class="parameter"><code>index.term.separator</code></em></a> parameters to
+support localization of punctuation in <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>
+entries.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.89; fo/param.xweb,1.102 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added "Cross References"
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> in HTML doc (for consistency with the FO
+doc). Also, moved the existing FO "Cross
+References" <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> to follow the "Linking"
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a>.</p>
+<p class="commit-changes">Modified: fo/param.xweb,1.101; html/param.xweb,1.95 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added ID attribues to all
+<a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">Reference</code></a> elements (e.g., id="tables" for the doc for
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> on <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">Table</code></a> params). So pages for
+all subsections of ref docs now have stable filenames instead
+of arbitrary generated filenames.</p>
+<p class="commit-changes">Modified: fo/param.xweb,1.100;
+html/param.xweb,1.94 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added two new parameters for
+handling of multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> elements:</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a>:
+When the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a> is
+non-zero, it will generate a line break after each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a>.</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a>:
+When a <a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> contains multiple <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>
+elements, the string specified in the value of the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> parameter is
+placed after each <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> to the empty
+string ("").</p>
+<p>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</p>
+<p>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</p>
+<p>Also, added
+normalize-space() call to processing of each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>.</p>
+<p>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Add <a href="http://docbook.org/tdg5/en/html/sidebar.html"><code class="sgmltag-element">sidebar</code></a> titlepage
+placeholder attset for styles.</p>
+<p class="commit-changes">Modified: fo/titlepage.xsl,1.37 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add titlepage for
+<a href="http://docbook.org/tdg5/en/html/sidebar.html"><code class="sgmltag-element">sidebar</code></a>.</p>
+<p class="commit-changes">Modified: fo/titlepage.templates.xml,1.27 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Implemented RFE
+#1292615.</p>
+<p>Added bunch of new parameters (attribute sets)
+that affect list presentation: list.block.properties,
+<a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a>.properties, <a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a>.properties,
+<a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a>.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.properties and
+<a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a>.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.properties. Default behaviour
+of stylesheets has not been changed but further customizations will be
+much more easier.</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.61; fo/param.ent,1.87;
+fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1;
+params/itemizedlist.properties.xml,1.1;
+params/list.block.properties.xml,1.1;
+params/orderedlist.label.properties.xml,1.1;
+params/orderedlist.properties.xml,1.1 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Implemented RFE
+#1242092.</p>
+<p>You can enable crop marks in your document by
+setting crop.marks=1 and xep.extensions=1. Appearance of crop
+marks can be controlled by parameters
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/crop.mark.bleed.html"><em class="parameter"><code>crop.mark.bleed</code></em></a> (6pt),
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/crop.mark.offset.html"><em class="parameter"><code>crop.mark.offset</code></em></a> (24pt) and
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/crop.mark.width.html"><em class="parameter"><code>crop.mark.width</code></em></a> (0.5pt).</p>
+<p>Also there
+is new named template called user-xep-pis. You can overwrite it in
+order to produce some PIs that can control XEP as described in
+http://www.renderx.com/reference.html#Output_Formats</p>
+<p class="commit-changes">Modified: fo/docbook.xsl,1.36;
+fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23;
+params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1;
+params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka
+Kosek</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>implemented
+<a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>.method parameter and three
+methods.</p>
+<p class="commit-changes">Modified: html/autoidx.xsl,1.28 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>added <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>.method
+parameter to support 3 indexing methods.</p>
+<p class="commit-changes">Modified: html/param.ent,1.94;
+html/param.xweb,1.103 - Robert Stayton</p>
+</li><li class="listitem">
+<p>Implemented feature request
+#1072510 as a processing instruction to permit including external
+HTML content into HTML output.</p>
+<p class="commit-changes">Modified: html/pi.xsl,1.9 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added new parameter
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chunk.tocs.and.lots.html"><em class="parameter"><code>chunk.tocs.and.lots</code></em></a>.has.<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> which
+controls presence of <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in a separate chunk with
+ToC/LoT. Disabling <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> can be very useful if you are
+generating frameset output (well, yes those frames, but some customers
+really want them ;-).</p>
+<p class="commit-changes">Modified: html/chunk-code.xsl,1.15;
+html/param.ent,1.93; html/param.xweb,1.102;
+params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Support dbhtml/dbfo start PI for
+<a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a> numbering in both HTML and
+FO</p>
+<p class="commit-changes">Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Allow <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">ToC</code></a> without
+<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> also for set and
+<a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a>.</p>
+<p class="commit-changes">Modified: html/autotoc.xsl,1.37; html/division.xsl,1.12 -
+Jirka Kosek</p>
+</li><li class="listitem">
+<p>Implemented floats uniformly for
+<a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>, example, <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a>
+and <a href="http://docbook.org/tdg5/en/html/informalfigure.html"><code class="sgmltag-element">informalfigure</code></a>, <a href="http://docbook.org/tdg5/en/html/informalexample.html"><code class="sgmltag-element">informalexample</code></a>, and
+<a href="http://docbook.org/tdg5/en/html/informalequation.html"><code class="sgmltag-element">informalequation</code></a>.</p>
+<p class="commit-changes">Modified: html/formal.xsl,1.22 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added the
+autotoc.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.in.hyperlink param.</p>
+<p>If the value
+of autotoc.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.in.hyperlink is non-zero, labels
+are included in hyperlinked titles in the <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>. If it
+is instead zero, labels are still displayed prior to the
+hyperlinked titles, but are not hyperlinked along with the
+titles.</p>
+<p>Closes patch #1065868. Thanks to anatoly techtonik
+for the patch.</p>
+<p class="commit-changes">Modified: html/autotoc.xsl,1.36; html/param.ent,1.92;
+html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added two new params:
+html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.types
+and html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.multiple.</p>
+<p>If
+the value of the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/generate.legalnotice.link.html"><em class="parameter"><code>generate.legalnotice.link</code></em></a> is
+non-zero, then the stylesheet generates (in the head
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> of the HTML source) either a single HTML
+<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> element or, if the value of
+the html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.multiple is
+non-zero, one <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> element for each <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>
+type specified. Each <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> has the
+following attributes:</p>
+<p> - a rel attribute whose value
+is derived from the value of
+html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.types</p>
+<p> -
+an href attribute whose value is set to the URL of the file
+containing the <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a></p>
+<p> - a <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+attribute whose value is set to the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> of the
+corresponding <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> (or a <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+programatically determined by the stylesheet)</p>
+<p>For
+example:</p>
+<p> &lt;<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> rel="<a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a>"
+href="ln-id2524073.html" title="Legal Notice"&gt;</p>
+<p>Closes
+#1476450. Thanks to Sam Steingold.</p>
+<p class="commit-changes">Modified: html/chunk-common.xsl,1.45;
+html/param.ent,1.91; html/param.xweb,1.100;
+params/generate.legalnotice.link.xml,1.4;
+params/html.head.legalnotice.link.multiple.xml,1.1;
+params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress
+param.</p>
+<p>If the value of <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress is
+non-zero, then display <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a> contents is suppressed
+in output. Affects HTML and FO output
+only.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90;
+html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Improved support for
+<a href="http://docbook.org/tdg5/en/html/task.html"><code class="sgmltag-element">task</code></a> subelements</p>
+<p class="commit-changes">Modified: fo/task.xsl,1.3; html/task.xsl,1.3 -
+Jirka Kosek</p>
+</li><li class="listitem">
+<p>Added new
+<a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress param for suppressing display
+of <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">Refclass</code></a> in HTML and FO output. Did not add it to
+manpages because manpages stylesheet is currently just silently
+ignoring <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">Refclass</code></a> anyway. Closes request
+#1461065. Thanks to Davor Ocelic (docelic) for
+reporting.</p>
+<p class="commit-changes">Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Process <a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a> text with
+normalize-space(). Replace tab indents with
+spaces.</p>
+<p class="commit-changes">Modified: html/graphics.xsl,1.57 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Content of <a href="http://docbook.org/tdg5/en/html/citation.html"><code class="sgmltag-element">citation</code></a>
+element is automatically linked to the bibliographic <a href="http://docbook.org/tdg5/en/html/entry.html"><code class="sgmltag-element">entry</code></a>
+with the corresponding <a href="http://docbook.org/tdg5/en/html/abbrev.html"><code class="sgmltag-element">abbrev</code></a>.</p>
+<p class="commit-changes">Modified: html/biblio.xsl,1.26;
+html/inline.xsl,1.47; html/xref.xsl,1.58 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Add template for <a href="http://docbook.org/tdg5/en/html/task.html"><code class="sgmltag-element">task</code></a>
+in mode="xref-to".</p>
+<p class="commit-changes">Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Suppress ID warnings if the
+.warnings parameter is 0</p>
+<p class="commit-changes">Modified: html/html.xsl,1.17 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Add support for floatstyle to
+<a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>.</p>
+<p class="commit-changes">Modified: html/formal.xsl,1.21 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Handling of <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> to
+area/areaset need support in extensions code also. I currently have no
+time to touch extensions code, so code is here to be enabled when
+extension is fixed also.</p>
+<p class="commit-changes">Modified: html/xref.xsl,1.56 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Added 3 parameters for overriding
+gentext for <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>
+punctuation.</p>
+<p class="commit-changes">Modified: html/param.ent,1.89; html/param.xweb,1.98 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added parameters to support
+localization of <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> item punctuation. Added
+<a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a>.separator named template to compute
+the separator punctuation based on
+locale.</p>
+<p class="commit-changes">Modified: html/autoidx.xsl,1.27 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added a &lt;div
+class="{$class}-contents"&gt; wrapper around output of contents
+of all formal objects. Also, added an optional &lt;br
+class="{class}-break"/&gt; linebreak after all formal
+objects.</p>
+<p>WARNING: Because this change places an additional
+DIV between the DIV wrapper for the <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> and the
+<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> contents, it may break some existing CSS
+stylesheets that have been created with the assumption that there
+would never be an intervening DIV there.</p>
+<p>The following is
+an example of what <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">Equation</code></a> output looks like as a
+result of the changes described above.</p>
+<p> &lt;div
+class="<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a>"&gt; &lt;a name="three"
+id="three"&gt;&lt;/a&gt;</p>
+<p> &lt;p
+class="<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>"&gt;&lt;b&gt;(1.3)&lt;/b&gt;&lt;/p&gt;</p>
+<p>
+&lt;div class="equation-contents"&gt; &lt;span
+class="<a href="http://docbook.org/tdg5/en/html/mathphrase.html"><code class="sgmltag-element">mathphrase</code></a>"&gt;1+1=3&lt;/span&gt;
+&lt;/div&gt; &lt;/div&gt;&lt;br
+class="equation-break"&gt;</p>
+<p>Rationale: These changes allow
+CSS control of the placement of the formal-object
+<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> relative to the formal-object
+contents. For example, using the CSS "float" <a href="http://docbook.org/tdg5/en/html/property.html"><code class="sgmltag-element">property</code></a>
+enables the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> and contents to be rendered on the
+same line. Example stylesheet:</p>
+<p> .<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a>
+{ margin-top: 20px; margin-bottom: 20px; }
+.equation-contents { float: left; }</p>
+<p>
+.<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> .<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> { margin-top: 0;
+float: right; margin-right: 200px; }</p>
+<p>
+.<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> .<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> b { font-weight:
+normal; }</p>
+<p> .equation-break { clear: both;
+}</p>
+<p>Note that the purpose of the ".equation-break" class is
+to provide a way to clear off the floats.</p>
+<p>If you want
+to instead have the <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> rendered to
+the left of the <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> contents, you can do
+something like this:</p>
+<p> .<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> {
+margin-top: 20px; width: 300px; margin-bottom: 20px;
+} .equation-contents { float: right; }</p>
+<p>
+.<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> .<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> { margin-top: 0;
+float: left; margin-right: 200px; }</p>
+<p>
+.<a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a> .<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> b { font-weight:
+normal; }</p>
+<p> .equation-break { clear: both;
+}</p>
+<p class="commit-changes">Modified: html/formal.xsl,1.20 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added a chunker.output.quiet
+top-level parameter so that the chunker can be made quiet by
+default</p>
+<p class="commit-changes">Modified: html/chunker.xsl,1.26 - Norman Walsh</p>
+</li><li class="listitem">
+<p>Added support for <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>,
+<a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a>, and <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> within OO
+<a href="http://docbook.org/tdg5/en/html/classsynopsis.html"><code class="sgmltag-element">Classsynopsis</code></a> and children. (Because DocBook NG/5
+allows it).</p>
+<p class="commit-changes">Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>New parameter:
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/id.warnings.html"><em class="parameter"><code>id.warnings</code></em></a>. If non-zero, warnings are
+generated for titled objects that don't have titles. True by default;
+I wonder if this will be too aggressive?</p>
+<p class="commit-changes">Modified: html/biblio.xsl,1.25;
+html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19;
+html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16;
+html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22;
+html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>If the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/keep.relative.image.uris.html"><em class="parameter"><code>keep.relative.image.uris</code></em></a> parameter is true,
+don't use the absolute <a href="http://docbook.org/tdg5/en/html/uri.html"><code class="sgmltag-element">URI</code></a> (as calculated from xml:base) in
+the img src attribute, us the value the <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a>
+specified. Note that we still have to calculate the absolute
+<a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a> for use in the image intrinsics
+extension.</p>
+<p class="commit-changes">Modified: html/graphics.xsl,1.56 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Support <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> as an
+inline</p>
+<p class="commit-changes">Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added new parameter
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/keep.relative.image.uris.html"><em class="parameter"><code>keep.relative.image.uris</code></em></a></p>
+<p class="commit-changes">Modified: fo/param.ent,1.91;
+fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96;
+params/keep.relative.image.uris.xml,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added two new parameters for
+handling of multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> elements:</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a>:
+When the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a> is
+non-zero, it will generate a line break after each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a>.</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a>:
+When a <a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> contains multiple <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>
+elements, the string specified in the value of the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> parameter is
+placed after each <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> to the empty
+string ("").</p>
+<p>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</p>
+<p>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</p>
+<p>Also, added
+normalize-space() call to processing of each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>.</p>
+<p>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added "wrapper-name" param to
+inline.charseq named template, enabling it to output inlines
+other than just "span". <a href="http://docbook.org/tdg5/en/html/acronym.html"><code class="sgmltag-element">Acronym</code></a> and <a href="http://docbook.org/tdg5/en/html/abbrev.html"><code class="sgmltag-element">Abbrev</code></a>
+templates now use inline.charseq to output HTML
+"<a href="http://docbook.org/tdg5/en/html/acronym.html"><code class="sgmltag-element">acronym</code></a>" and "abbr" elements (instead of
+"span"). Closes #1305468. Thanks to Sam Steingold for suggesting
+the change.</p>
+<p class="commit-changes">Modified: html/inline.xsl,1.45 - Michael(tm)
+Smith</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Manpages"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Added the following
+params:</p>
+<p> - man.indent.width (string-valued) -
+man.indent.refsect (boolean) - man.indent.blurbs (boolean)
+- man.indent.lists (boolean) - man.indent.verbatims
+(boolean)</p>
+<p>Note that in earlier snapshots, man.indent.width
+was named man.indentation.default.value and the boolean params
+had names like man.indentation.*.adjust. Also the
+man.indent.blurbs param was called man.indentation.authors.adjust
+(or something).</p>
+<p>The behavior now is: If the value of a
+particular man.indent.* boolean param is non-zero, the
+corresponding contents (refsect*, list items,
+authorblurb/personblurb, vervatims) are displayed with a left
+margin indented by a width equal to the value
+of man.indent.width.</p>
+<p class="commit-changes">Modified: params/man.indent.blurbs.xml,1.1;
+manpages/docbook.xsl,1.74; manpages/info.xsl,1.20;
+manpages/lists.xsl,1.30; manpages/other.xsl,1.20;
+manpages/param.ent,1.22; manpages/param.xweb,1.24;
+manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1;
+params/man.indent.refsect.xml,1.1;
+params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added
+man.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.footnotes.divider param.</p>
+<p>In each
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> that contains footenotes, the string specified
+by the man.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.footnotes.divider parameter is output
+before the list of footnotes for the
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.73;
+manpages/links.xsl,1.6; manpages/param.ent,1.21;
+manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added the
+man.output.in.separate.dir,
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a>,
+and man.output.subdirs.enabled parameters.</p>
+<p>The
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a> parameter specifies the
+base directory into which man-page files are
+output. The man.output.subdirs.enabled parameter controls whether
+the files are output in subdirectories within the base
+directory.</p>
+<p>The values of the
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a>
+and man.output.subdirs.enabled parameters are used only if the
+value of man.output.in.separate.dir parameter is non-zero. If the
+value of man.output.in.separate.dir is zero, man-page files are
+not output in a separate
+directory.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20;
+manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1;
+params/man.output.in.separate.dir.xml,1.1;
+params/man.output.subdirs.enabled.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+man.font.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.headings and
+man.font.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> params, for
+controlling font in <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> headings and
+titles.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19;
+manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1;
+params/man.font.table.title.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+man.font.<a href="http://docbook.org/tdg5/en/html/funcsynopsisinfo.html"><code class="sgmltag-element">funcsynopsisinfo</code></a> and
+man.font.<a href="http://docbook.org/tdg5/en/html/funcprototype.html"><code class="sgmltag-element">funcprototype</code></a> params, for specifying the roff
+font (for example, BI, B, I) for <a href="http://docbook.org/tdg5/en/html/funcsynopsisinfo.html"><code class="sgmltag-element">funcsynopsisinfo</code></a> and
+<a href="http://docbook.org/tdg5/en/html/funcprototype.html"><code class="sgmltag-element">funcprototype</code></a> output.</p>
+<p class="commit-changes">Modified: manpages/block.xsl,1.19;
+manpages/docbook.xsl,1.69; manpages/param.ent,1.18;
+manpages/param.xweb,1.20; manpages/synop.xsl,1.29;
+manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1;
+params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+man.<a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">segtitle</code></a>.suppress param.</p>
+<p>If the value of
+man.<a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">segtitle</code></a>.suppress is non-zero, then display
+of <a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">segtitle</code></a> contents is suppressed in
+output.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17;
+manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a>.enabled and
+man.output.manifest.<a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a> params.</p>
+<p>If
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a>.enabled is non-zero, a list
+of filenames for man pages generated by the stylesheet
+transformation is written to the file named by
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a>.<a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a></p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.67;
+manpages/other.xsl,1.19; manpages/param.ent,1.16;
+manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1;
+params/man.output.manifest.filename.xml,1.1;
+tools/make/Makefile.DocBook,1.4 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+<a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>.meta.get.quietly param.</p>
+<p>If zero (the
+default), notes and warnings about "missing" markup are generated
+during gathering of <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> metadata. If
+non-zero, the metadata is gathered "quietly" -- that is, the
+notes and warnings are suppressed.</p>
+<p>NOTE: If you are
+processing a large amount of <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> content, you
+may be able to speed up processing significantly by setting a
+non-zero value for
+<a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>.meta.get.quietly.</p>
+<p class="commit-changes">Modified: common/refentry.xsl,1.17;
+manpages/param.ent,1.15; manpages/param.xweb,1.17;
+params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Changed names of all boolean
+indentation params to man.indent.* Also discarded individual
+man.indent.*.value params and switched to just using a common
+man.indent.width param (3n by default).</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.66;
+manpages/info.xsl,1.19; manpages/lists.xsl,1.29;
+manpages/other.xsl,1.18; manpages/refentry.xsl,1.13 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added boolean
+man.output.in.separate.dir param, to control whether or not man
+files are output in separate directory.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.65;
+manpages/utility.xsl,1.14 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added options for controlling
+indentation of verbatim output. Controlled through the
+man.indentation.verbatims.adjust
+and man.indentation.verbatims.value params. Closes
+#1242997</p>
+<p class="commit-changes">Modified: manpages/block.xsl,1.15; manpages/docbook.xsl,1.64 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added options for controlling
+indentation in lists and in *blurb output in the AUTHORS
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a>. Controlled through
+the man.indentation.lists.adjust,
+man.indentation.lists.value, man.indentation.authors.adjust, and
+man.indentation.authors.value parameters. Default is 3 characters
+(instead of the roff default of 8 characters). Closes
+#1449369.</p>
+<p>Also, removed the indent that was being set on
+<a href="http://docbook.org/tdg5/en/html/informalexample.html"><code class="sgmltag-element">informalexample</code></a> outuput. I will instead add an option
+for indenting verbatims, which I think is what the
+<a href="http://docbook.org/tdg5/en/html/informalexample.html"><code class="sgmltag-element">informalexample</code></a> indent was intended
+for originally.</p>
+<p class="commit-changes">Modified: manpages/block.xsl,1.14;
+manpages/docbook.xsl,1.63; manpages/info.xsl,1.18;
+manpages/lists.xsl,1.28 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Changed line-spacing call before
+<a href="http://docbook.org/tdg5/en/html/synopfragment.html"><code class="sgmltag-element">synopfragment</code></a> to use ".sp -1n" ("n" units specified)
+instead of plain ".sp -1"</p>
+<p class="commit-changes">Modified: manpages/synop.xsl,1.28 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added support for writing man
+files into a specific output directory and into appropriate
+subdirectories within that output directory. Controlled through
+the man.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a> parameter (similar to the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a> support in the HTML stylesheet) and
+the man.subdirs.enabled parameter, which automatically determines
+the name of an appropriate subdir (for example, man/man7,
+man/man1, etc.) based on the <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> number/manvolnum
+of the source <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a>.</p>
+<p>Closes #1255036 and
+#1170317. Thanks to Denis Bradford for the original feature
+request, and to Costin Stroie for submitting a patch that was
+very helpful in implementing the
+support.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.62; manpages/utility.xsl,1.13 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Refined XPath statements and
+notification messages for <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> metadata
+handling.</p>
+<p class="commit-changes">Modified: common/common.xsl,1.59; common/refentry.xsl,1.14;
+manpages/docbook.xsl,1.61; manpages/other.xsl,1.17 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added support for
+<a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a> and <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>. The manpages
+stylesheets now output a <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">COPYRIGHT</code></a> <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a>,
+after the AUTHORS <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a>, if a <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a>
+or <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> is found in the source. The
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> contains the <a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a> contents followed
+by the <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> contents. Closes
+#1450209.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.59; manpages/info.xsl,1.17 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Drastically reworked all of the
+XPath expressions used in <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> metadata gathering
+-- completely removed $parentinfo and turned $info into a set of
+nodes that includes the *info contents of the <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a>
+plus the *info contents all all of its ancestor elements. The
+basic XPath expression now used throughout is (using the example
+of checking for a <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a>):</p>
+<p>
+(($info[//date])[last()]/date)[1].</p>
+<p>That selects the "last"
+*info/date <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> in document order -- that is, the one
+eitther on the <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a> itself or on the
+closest ancestor to the <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a>.</p>
+<p>It's
+likely this change may break some things; may need to pick up
+some pieces later.</p>
+<p>Also, changed the default value for the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.th.extra2.max.length.html"><em class="parameter"><code>man.th.extra2.max.length</code></em></a> from 40 to
+30.</p>
+<p class="commit-changes">Modified: common/common.xsl,1.58; common/refentry.xsl,1.7;
+params/man.th.extra2.max.length.xml,1.2;
+params/refentry.date.profile.xml,1.2;
+params/refentry.manual.profile.xml,1.2;
+params/refentry.source.name.profile.xml,1.2;
+params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58;
+manpages/other.xsl,1.15 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added support for DocBook 5
+namespace-stripping in manpages stylesheet. Closes request
+#1210692.</p>
+<p class="commit-changes">Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Fixed handling of <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>
+footnotes. With this checkin, the <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> support in the
+manpages stylesheet is now basically feature complete. So this
+change closes request #619532, "No support for tables" -- the
+oldest currently open manpages feature request, submitted by Ben
+Secrest (blsecres) on 2002-10-07. Congratulations to me [patting
+myself on the back].</p>
+<p class="commit-changes">Modified: manpages/block.xsl,1.11;
+manpages/docbook.xsl,1.55; manpages/table.xsl,1.15 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added handling for
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> titles. Also fixed handling of nested tables;
+nest tables are now "extracted" and displayed just after their
+parent tables.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.54; manpages/table.xsl,1.14
+- Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added option for turning off bold
+formatting in <a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">Funcsynopsis</code></a>. Boldface formatting in
+<a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> <a href="http://docbook.org/tdg5/en/html/synopsis.html"><code class="sgmltag-element">synopsis</code></a> is mandated in the
+man(7) man page and is used almost universally in existing man
+pages. Despite that, it really does look like crap to have an
+entire <a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">Funcsynopsis</code></a> output in bold, so I added params
+for turning off the bold formatting and/or replacing it with a
+different roff special font (e.g., "RI" for alternating
+roman/italic instead of the default "BI" for alternating
+bold/italic). The new params
+are "man.<a href="http://docbook.org/tdg5/en/html/funcprototype.html"><code class="sgmltag-element">funcprototype</code></a>.font" and
+"man.<a href="http://docbook.org/tdg5/en/html/funcsynopsisinfo.html"><code class="sgmltag-element">funcsynopsisinfo</code></a>.font". To be documented
+later.</p>
+<p>Closes #1452247. Thanks to Joe Orton for the feature
+request.</p>
+<p class="commit-changes">Modified: params/man.string.subst.map.xml,1.16;
+manpages/block.xsl,1.10; manpages/docbook.xsl,1.51;
+manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Use AUTHORS instead of
+<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">AUTHOR</code></a> if we have multiple people to attribute. Also,
+fixed checking such that we generate
+<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> even if we don't have an
+<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> (as long as there is at least one other
+person/entity we can put in the
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a>). Also adjusted assembly of content for
+<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">Author</code></a> metainfo field such that we now not only use
+<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a>, but try to find a "best match" if we can't
+find an <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">author</code></a> name to put there.</p>
+<p>Closes
+#1233592. Thanks to Sam Steingold for the
+request.</p>
+<p class="commit-changes">Modified: manpages/info.xsl,1.12 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Changes for request #1243027,
+"Impove handling of <a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">AUTHOR</code></a> <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a>." This
+adds support for <a href="http://docbook.org/tdg5/en/html/collab.html"><code class="sgmltag-element">Collab</code></a>, Corpauthor, Corpcredt,
+<a href="http://docbook.org/tdg5/en/html/orgname.html"><code class="sgmltag-element">Orgname</code></a>, <a href="http://docbook.org/tdg5/en/html/publishername.html"><code class="sgmltag-element">Publishername</code></a>, and
+<a href="http://docbook.org/tdg5/en/html/publisher.html"><code class="sgmltag-element">Publisher</code></a>. Also adds support for output
+of <a href="http://docbook.org/tdg5/en/html/affiliation.html"><code class="sgmltag-element">Affiliation</code></a> and its children, and support for using
+gentext strings for auto-attributing roles (<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">Author</code></a>,
+<a href="http://docbook.org/tdg5/en/html/editor.html"><code class="sgmltag-element">Editor</code></a>, <a href="http://docbook.org/tdg5/en/html/publisher.html"><code class="sgmltag-element">Publisher</code></a>, Translator, etc.). Also
+did a lot of code cleanup and modularization of all the
+<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">AUTHOR</code></a> handling code. And fixed a bug that was causing
+<a href="http://docbook.org/tdg5/en/html/author.html"><code class="sgmltag-element">Author</code></a> <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a> to not be picked up correctly
+for metainfo comment we embed in man-page
+source.</p>
+<p class="commit-changes">Modified: manpages/info.xsl,1.11 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Support bold output for
+"<a href="http://docbook.org/tdg5/en/html/emphasis.html"><code class="sgmltag-element">emphasis</code></a> remap='B'". (because Eric Raymond's
+doclifter(1) tool converts groff source marked up with ".B"
+request or "\fB" escapes to DocBook "<a href="http://docbook.org/tdg5/en/html/emphasis.html"><code class="sgmltag-element">emphasis</code></a>
+remap='B'".)</p>
+<p class="commit-changes">Modified: manpages/inline.xsl,1.14 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added support for
+<a href="http://docbook.org/tdg5/en/html/segmentedlist.html"><code class="sgmltag-element">Segmentedlist</code></a>. Details: Output is tabular, with no
+option for "list" type output. Output for <a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">Segtitle</code></a>
+elements can be supressed by
+setting man.<a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">segtitle</code></a>.suppress. If <a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">Segtitle</code></a>
+content is output, it is rendered in italic type (not bold
+because not all terminals support bold and so italic ensures the
+stand out on those terminals). Extra space (.sp line) at end of
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> code ensures that it gets handled correctly in
+the case where its source is the child of a <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">Para</code></a>.
+Closes feature-request #1400097. Thanks to Daniel Leidert for the
+patch and push, and to Alastair Rankine for filing the original
+feature request.</p>
+<p class="commit-changes">Modified: manpages/lists.xsl,1.23;
+manpages/utility.xsl,1.10 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Improved handling or
+Author/Editor/Othercredit.</p>
+<p>Reworked content of
+(non-visible) comment added at top of each page (metadata
+stuff).</p>
+<p>Added support for generating a
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a> file (useful for cleaning up
+after builds, etc.)</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.46;
+manpages/info.xsl,1.9; manpages/other.xsl,1.12;
+manpages/utility.xsl,1.6 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added two new parameters for
+handling of multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> elements:</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a>:
+When the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a> is
+non-zero, it will generate a line break after each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a>.</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a>:
+When a <a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> contains multiple <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>
+elements, the string specified in the value of the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> parameter is
+placed after each <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> to the empty
+string ("").</p>
+<p>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</p>
+<p>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</p>
+<p>Also, added
+normalize-space() call to processing of each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>.</p>
+<p>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Params"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>New parameters to set
+header/footer <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> minimum
+height.</p>
+<p class="commit-changes">Modified: params/footer.table.height.xml,1.1;
+params/header.table.height.xml,1.1 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Support multiple indexing methods
+for different languages.</p>
+<p class="commit-changes">Modified: params/index.method.xml,1.1 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Remove <a href="http://docbook.org/tdg5/en/html/qandaset.html"><code class="sgmltag-element">qandaset</code></a> and
+<a href="http://docbook.org/tdg5/en/html/qandadiv.html"><code class="sgmltag-element">qandadiv</code></a> from <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/generate.toc.html"><em class="parameter"><code>generate.toc</code></em></a> for fo
+output because formerly it wasn't working, but now it is and
+the default behavior should stay the
+same.</p>
+<p class="commit-changes">Modified: params/generate.toc.xml,1.8 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>add support for page number
+references to <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> element
+too.</p>
+<p class="commit-changes">Modified: params/insert.link.page.number.xml,1.1 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Add support for more characters to
+hyphen on when <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/ulink.hyphenate.html"><em class="parameter"><code>ulink.hyphenate</code></em></a> is turned
+on.</p>
+<p class="commit-changes">Modified: params/ulink.hyphenate.chars.xml,1.1;
+params/ulink.hyphenate.xml,1.3 - Robert Stayton</p>
+</li><li class="listitem">
+<p>New attribute-set to format
+<a href="http://docbook.org/tdg5/en/html/biblioentry.html"><code class="sgmltag-element">biblioentry</code></a> and
+<a href="http://docbook.org/tdg5/en/html/bibliomixed.html"><code class="sgmltag-element">bibliomixed</code></a>.</p>
+<p class="commit-changes">Modified: params/biblioentry.properties.xml,1.1 -
+Robert Stayton</p>
+</li><li class="listitem">
+<p>Added new parameter
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chunk.tocs.and.lots.html"><em class="parameter"><code>chunk.tocs.and.lots</code></em></a>.has.<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> which
+controls presence of <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in a separate chunk with
+ToC/LoT. Disabling <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> can be very useful if you are
+generating frameset output (well, yes those frames, but some customers
+really want them ;-).</p>
+<p class="commit-changes">Modified: html/chunk-code.xsl,1.15;
+html/param.ent,1.93; html/param.xweb,1.102;
+params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Added new attribute set
+<a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a>.line.properties for controlling appearance of lines in
+ToC/LoT</p>
+<p class="commit-changes">Modified: params/toc.line.properties.xml,1.1 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Allow <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> footnotes
+to have different properties from regular
+footnotes.</p>
+<p class="commit-changes">Modified: params/table.footnote.properties.xml,1.1 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Set properties for pgwide="1"
+objects.</p>
+<p class="commit-changes">Modified: params/pgwide.properties.xml,1.1 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added the
+autotoc.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.in.hyperlink param.</p>
+<p>If the value
+of autotoc.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.in.hyperlink is non-zero, labels
+are included in hyperlinked titles in the <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a>. If it
+is instead zero, labels are still displayed prior to the
+hyperlinked titles, but are not hyperlinked along with the
+titles.</p>
+<p>Closes patch #1065868. Thanks to anatoly techtonik
+for the patch.</p>
+<p class="commit-changes">Modified: html/autotoc.xsl,1.36; html/param.ent,1.92;
+html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added two new params:
+html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.types
+and html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.multiple.</p>
+<p>If
+the value of the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/generate.legalnotice.link.html"><em class="parameter"><code>generate.legalnotice.link</code></em></a> is
+non-zero, then the stylesheet generates (in the head
+<a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> of the HTML source) either a single HTML
+<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> element or, if the value of
+the html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.multiple is
+non-zero, one <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> element for each <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>
+type specified. Each <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> has the
+following attributes:</p>
+<p> - a rel attribute whose value
+is derived from the value of
+html.head.<a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>.<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>.types</p>
+<p> -
+an href attribute whose value is set to the URL of the file
+containing the <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a></p>
+<p> - a <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+attribute whose value is set to the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> of the
+corresponding <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> (or a <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+programatically determined by the stylesheet)</p>
+<p>For
+example:</p>
+<p> &lt;<a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> rel="<a href="http://docbook.org/tdg5/en/html/copyright.html"><code class="sgmltag-element">copyright</code></a>"
+href="ln-id2524073.html" title="Legal Notice"&gt;</p>
+<p>Closes
+#1476450. Thanks to Sam Steingold.</p>
+<p class="commit-changes">Modified: html/chunk-common.xsl,1.45;
+html/param.ent,1.91; html/param.xweb,1.100;
+params/generate.legalnotice.link.xml,1.4;
+params/html.head.legalnotice.link.multiple.xml,1.1;
+params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added the following
+params:</p>
+<p> - man.indent.width (string-valued) -
+man.indent.refsect (boolean) - man.indent.blurbs (boolean)
+- man.indent.lists (boolean) - man.indent.verbatims
+(boolean)</p>
+<p>Note that in earlier snapshots, man.indent.width
+was named man.indentation.default.value and the boolean params
+had names like man.indentation.*.adjust. Also the
+man.indent.blurbs param was called man.indentation.authors.adjust
+(or something).</p>
+<p>The behavior now is: If the value of a
+particular man.indent.* boolean param is non-zero, the
+corresponding contents (refsect*, list items,
+authorblurb/personblurb, vervatims) are displayed with a left
+margin indented by a width equal to the value
+of man.indent.width.</p>
+<p class="commit-changes">Modified: params/man.indent.blurbs.xml,1.1;
+manpages/docbook.xsl,1.74; manpages/info.xsl,1.20;
+manpages/lists.xsl,1.30; manpages/other.xsl,1.20;
+manpages/param.ent,1.22; manpages/param.xweb,1.24;
+manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1;
+params/man.indent.refsect.xml,1.1;
+params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added
+man.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.footnotes.divider param.</p>
+<p>In each
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> that contains footenotes, the string specified
+by the man.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.footnotes.divider parameter is output
+before the list of footnotes for the
+<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.73;
+manpages/links.xsl,1.6; manpages/param.ent,1.21;
+manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added the
+man.output.in.separate.dir,
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a>,
+and man.output.subdirs.enabled parameters.</p>
+<p>The
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a> parameter specifies the
+base directory into which man-page files are
+output. The man.output.subdirs.enabled parameter controls whether
+the files are output in subdirectories within the base
+directory.</p>
+<p>The values of the
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a>
+and man.output.subdirs.enabled parameters are used only if the
+value of man.output.in.separate.dir parameter is non-zero. If the
+value of man.output.in.separate.dir is zero, man-page files are
+not output in a separate
+directory.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20;
+manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1;
+params/man.output.in.separate.dir.xml,1.1;
+params/man.output.subdirs.enabled.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+man.font.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.headings and
+man.font.<a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>.<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> params, for
+controlling font in <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> headings and
+titles.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19;
+manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1;
+params/man.font.table.title.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+man.font.<a href="http://docbook.org/tdg5/en/html/funcsynopsisinfo.html"><code class="sgmltag-element">funcsynopsisinfo</code></a> and
+man.font.<a href="http://docbook.org/tdg5/en/html/funcprototype.html"><code class="sgmltag-element">funcprototype</code></a> params, for specifying the roff
+font (for example, BI, B, I) for <a href="http://docbook.org/tdg5/en/html/funcsynopsisinfo.html"><code class="sgmltag-element">funcsynopsisinfo</code></a> and
+<a href="http://docbook.org/tdg5/en/html/funcprototype.html"><code class="sgmltag-element">funcprototype</code></a> output.</p>
+<p class="commit-changes">Modified: manpages/block.xsl,1.19;
+manpages/docbook.xsl,1.69; manpages/param.ent,1.18;
+manpages/param.xweb,1.20; manpages/synop.xsl,1.29;
+manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1;
+params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Changed to select="0" in
+<a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress (instead of
+..&gt;0&lt;/..)</p>
+<p class="commit-changes">Modified: params/refclass.suppress.xml,1.3 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+man.<a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">segtitle</code></a>.suppress param.</p>
+<p>If the value of
+man.<a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">segtitle</code></a>.suppress is non-zero, then display
+of <a href="http://docbook.org/tdg5/en/html/segtitle.html"><code class="sgmltag-element">segtitle</code></a> contents is suppressed in
+output.</p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17;
+manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 -
+Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a>.enabled and
+man.output.manifest.<a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a> params.</p>
+<p>If
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a>.enabled is non-zero, a list
+of filenames for man pages generated by the stylesheet
+transformation is written to the file named by
+man.output.<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/manifest.html"><em class="parameter"><code>manifest</code></em></a>.<a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a></p>
+<p class="commit-changes">Modified: manpages/docbook.xsl,1.67;
+manpages/other.xsl,1.19; manpages/param.ent,1.16;
+manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1;
+params/man.output.manifest.filename.xml,1.1;
+tools/make/Makefile.DocBook,1.4 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress
+param.</p>
+<p>If the value of <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a>.suppress is
+non-zero, then display <a href="http://docbook.org/tdg5/en/html/refclass.html"><code class="sgmltag-element">refclass</code></a> contents is suppressed
+in output. Affects HTML and FO output
+only.</p>
+<p class="commit-changes">Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90;
+html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added
+<a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>.meta.get.quietly param.</p>
+<p>If zero (the
+default), notes and warnings about "missing" markup are generated
+during gathering of <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> metadata. If
+non-zero, the metadata is gathered "quietly" -- that is, the
+notes and warnings are suppressed.</p>
+<p>NOTE: If you are
+processing a large amount of <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> content, you
+may be able to speed up processing significantly by setting a
+non-zero value for
+<a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>.meta.get.quietly.</p>
+<p class="commit-changes">Modified: common/refentry.xsl,1.17;
+manpages/param.ent,1.15; manpages/param.xweb,1.17;
+params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Added support for "software" and
+"sectdesc" class values on <a href="http://docbook.org/tdg5/en/html/refmiscinfo.html"><code class="sgmltag-element">refmiscinfo</code></a>; "software" is
+treated identically to "source", and "setdesc" is treated
+identically to "manual".</p>
+<p class="commit-changes">Modified: common/refentry.xsl,1.10;
+params/man.th.extra2.max.length.xml,1.3;
+params/refentry.source.name.profile.xml,1.4 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Drastically reworked all of the
+XPath expressions used in <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> metadata gathering
+-- completely removed $parentinfo and turned $info into a set of
+nodes that includes the *info contents of the <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a>
+plus the *info contents all all of its ancestor elements. The
+basic XPath expression now used throughout is (using the example
+of checking for a <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a>):</p>
+<p>
+(($info[//date])[last()]/date)[1].</p>
+<p>That selects the "last"
+*info/date <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> in document order -- that is, the one
+eitther on the <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a> itself or on the
+closest ancestor to the <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">Refentry</code></a>.</p>
+<p>It's
+likely this change may break some things; may need to pick up
+some pieces later.</p>
+<p>Also, changed the default value for the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.th.extra2.max.length.html"><em class="parameter"><code>man.th.extra2.max.length</code></em></a> from 40 to
+30.</p>
+<p class="commit-changes">Modified: common/common.xsl,1.58; common/refentry.xsl,1.7;
+params/man.th.extra2.max.length.xml,1.2;
+params/refentry.date.profile.xml,1.2;
+params/refentry.manual.profile.xml,1.2;
+params/refentry.source.name.profile.xml,1.2;
+params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58;
+manpages/other.xsl,1.15 - Michael(tm) Smith</p>
+</li><li class="listitem">
+<p>Added option for turning off bold
+formatting in <a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">Funcsynopsis</code></a>. Boldface formatting in
+<a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> <a href="http://docbook.org/tdg5/en/html/synopsis.html"><code class="sgmltag-element">synopsis</code></a> is mandated in the
+man(7) man page and is used almost universally in existing man
+pages. Despite that, it really does look like crap to have an
+entire <a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">Funcsynopsis</code></a> output in bold, so I added params
+for turning off the bold formatting and/or replacing it with a
+different roff special font (e.g., "RI" for alternating
+roman/italic instead of the default "BI" for alternating
+bold/italic). The new params
+are "man.<a href="http://docbook.org/tdg5/en/html/funcprototype.html"><code class="sgmltag-element">funcprototype</code></a>.font" and
+"man.<a href="http://docbook.org/tdg5/en/html/funcsynopsisinfo.html"><code class="sgmltag-element">funcsynopsisinfo</code></a>.font". To be documented
+later.</p>
+<p>Closes #1452247. Thanks to Joe Orton for the feature
+request.</p>
+<p class="commit-changes">Modified: params/man.string.subst.map.xml,1.16;
+manpages/block.xsl,1.10; manpages/docbook.xsl,1.51;
+manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/fop.extensions.html"><em class="parameter"><code>fop.extensions</code></em></a> now only
+for FOP version 0.20.5 and earlier.</p>
+<p class="commit-changes">Modified: params/fop.extensions.xml,1.4
+- Robert Stayton</p>
+</li><li class="listitem">
+<p>Support for fop1 different from
+fop 0.20.5 and earlier.</p>
+<p class="commit-changes">Modified: params/fop1.extensions.xml,1.1 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Reset default value to empty
+string so template uses gentext first, then the parameter value
+if not empty.</p>
+<p class="commit-changes">Modified: params/index.number.separator.xml,1.2;
+params/index.range.separator.xml,1.2;
+params/index.term.separator.xml,1.2 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>New parameter:
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/id.warnings.html"><em class="parameter"><code>id.warnings</code></em></a>. If non-zero, warnings are
+generated for titled objects that don't have titles. True by default;
+I wonder if this will be too aggressive?</p>
+<p class="commit-changes">Modified: html/biblio.xsl,1.25;
+html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19;
+html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16;
+html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22;
+html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added new parameter
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/keep.relative.image.uris.html"><em class="parameter"><code>keep.relative.image.uris</code></em></a></p>
+<p class="commit-changes">Modified: fo/param.ent,1.91;
+fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96;
+params/keep.relative.image.uris.xml,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Support default <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>
+width parameters for itemized and ordered lists</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.64;
+fo/param.ent,1.90; fo/param.xweb,1.103;
+params/itemizedlist.label.width.xml,1.1;
+params/orderedlist.label.width.xml,1.1 - Norman
+Walsh</p>
+</li><li class="listitem">
+<p>Added parameters to localize
+punctuation in indexes.</p>
+<p class="commit-changes">Modified: params/index.number.separator.xml,1.1;
+params/index.range.separator.xml,1.1;
+params/index.term.separator.xml,1.1 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Added two new parameters for
+handling of multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> elements:</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a>:
+When the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.break.after.html"><em class="parameter"><code>variablelist.term.break.after</code></em></a> is
+non-zero, it will generate a line break after each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> multi-term
+<a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a>.</p>
+<p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a>:
+When a <a href="http://docbook.org/tdg5/en/html/varlistentry.html"><code class="sgmltag-element">varlistentry</code></a> contains multiple <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>
+elements, the string specified in the value of the
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> parameter is
+placed after each <a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/variablelist.term.separator.html"><em class="parameter"><code>variablelist.term.separator</code></em></a> to the empty
+string ("").</p>
+<p>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</p>
+<p>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</p>
+<p>Also, added
+normalize-space() call to processing of each
+<a href="http://docbook.org/tdg5/en/html/term.html"><code class="sgmltag-element">term</code></a>.</p>
+<p>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</p>
+</li><li class="listitem">
+<p>Convert 'no' to string in default
+value.</p>
+<p class="commit-changes">Modified: params/olink.doctitle.xml,1.4 - Robert
+Stayton</p>
+</li><li class="listitem">
+<p>Implemented RFE
+#1292615.</p>
+<p>Added bunch of new parameters (attribute sets)
+that affect list presentation: list.block.properties,
+<a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a>.properties, <a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a>.properties,
+<a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a>.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.properties and
+<a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a>.<a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a>.properties. Default behaviour
+of stylesheets has not been changed but further customizations will be
+much more easier.</p>
+<p class="commit-changes">Modified: fo/lists.xsl,1.61; fo/param.ent,1.87;
+fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1;
+params/itemizedlist.properties.xml,1.1;
+params/list.block.properties.xml,1.1;
+params/orderedlist.label.properties.xml,1.1;
+params/orderedlist.properties.xml,1.1 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Implemented RFE
+#1242092.</p>
+<p>You can enable crop marks in your document by
+setting crop.marks=1 and xep.extensions=1. Appearance of crop
+marks can be controlled by parameters
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/crop.mark.bleed.html"><em class="parameter"><code>crop.mark.bleed</code></em></a> (6pt),
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/crop.mark.offset.html"><em class="parameter"><code>crop.mark.offset</code></em></a> (24pt) and
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/crop.mark.width.html"><em class="parameter"><code>crop.mark.width</code></em></a> (0.5pt).</p>
+<p>Also there
+is new named template called user-xep-pis. You can overwrite it in
+order to produce some PIs that can control XEP as described in
+http://www.renderx.com/reference.html#Output_Formats</p>
+<p class="commit-changes">Modified: fo/docbook.xsl,1.36;
+fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23;
+params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1;
+params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka
+Kosek</p>
+</li><li class="listitem">
+<p>Changed short descriptions in doc
+for *autolabel* params to match new autolabel
+behavior.</p>
+<p class="commit-changes">Modified: params/appendix.autolabel.xml,1.5;
+params/chapter.autolabel.xml,1.4; params/part.autolabel.xml,1.5;
+params/preface.autolabel.xml,1.4 - Michael(tm)
+Smith</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Profiling"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_Profiling"></a>Profiling</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">profiling</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Profiling now works together with
+namespace stripping (V5 documents). Namespace striping should work
+with all stylesheets named profile-, even if they are not supporting
+namespace stripping in a non-profiling
+variant.</p>
+<p class="commit-changes">Modified: profiling/profile-mode.xsl,1.4;
+profiling/xsl2profile.xsl,1.7 - Jirka Kosek</p>
+</li><li class="listitem">
+<p>Moved profiling stage out of
+templates. This make possible to reuse profiled content by several
+templates and still maintaing node indentity (needed for example for
+HTML Help where content is processed multiple times).</p>
+<p>I
+don't know why this was not on the top level before. Maybe some XSLT
+processors choked on it. I hope this will be OK
+now.</p>
+<p class="commit-changes">Modified: profiling/xsl2profile.xsl,1.5 - Jirka
+Kosek</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="Tools"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_Tools"></a>Tools</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">tools</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Moved Makefile.DocBook from
+<a href="http://docbook.org/tdg5/en/html/contrib.html"><code class="sgmltag-element">contrib</code></a> module to xsl
+module.</p>
+<p class="commit-changes">Modified: tools/make/Makefile.DocBook,1.1 - Michael(tm)
+Smith</p>
+</li></ul></div>
+</div>
+
+<div class="sect2" title="WordML"><div class="titlepage"><div><div><h3 class="title"><a name="V1700_WordML"></a>WordML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">wordml</code> code
+ since the 1.69.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>added <a href="http://docbook.org/tdg5/en/html/contrib.html"><code class="sgmltag-element">contrib</code></a> element,
+better handling of default paragraph
+style</p>
+<p class="commit-changes">Modified: wordml/pages-normalise.xsl,1.6; wordml/supported.xml,1.2;
+wordml/wordml-final.xsl,1.14 - Steve Ball</p>
+</li><li class="listitem">
+<p>added
+<a href="http://docbook.org/tdg5/en/html/bridgehead.html"><code class="sgmltag-element">bridgehead</code></a></p>
+<p class="commit-changes">Modified: wordml/docbook-pages.xsl,1.6;
+wordml/docbook.xsl,1.17; wordml/pages-normalise.xsl,1.5;
+wordml/template-pages.xml,1.7; wordml/template.dot,1.4;
+wordml/template.xml,1.14; wordml/wordml-final.xsl,1.13 - Steve
+Ball</p>
+</li><li class="listitem">
+<p>added blocks stylesheet to support
+bibliographies, glossaries and qandasets</p>
+<p class="commit-changes">Modified: wordml/Makefile,1.4;
+wordml/README,1.3; wordml/blocks-spec.xml,1.1;
+wordml/docbook-pages.xsl,1.5; wordml/docbook.xsl,1.16;
+wordml/pages-normalise.xsl,1.4; wordml/sections-spec.xml,1.3;
+wordml/specifications.xml,1.13; wordml/template-pages.xml,1.6;
+wordml/template.dot,1.3; wordml/template.xml,1.13;
+wordml/wordml-blocks.xsl,1.1; wordml/wordml-final.xsl,1.12;
+wordml/wordml-sections.xsl,1.3 - Steve Ball</p>
+</li><li class="listitem">
+<p>added <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a>
+<a href="http://docbook.org/tdg5/en/html/caption.html"><code class="sgmltag-element">caption</code></a></p>
+<p class="commit-changes">Modified: wordml/docbook-pages.xsl,1.4;
+wordml/docbook.xsl,1.15; wordml/specifications.xml,1.12;
+wordml/template-pages.xml,1.5; wordml/template.dot,1.2;
+wordml/template.xml,1.12; wordml/wordml-final.xsl,1.11 - Steve
+Ball</p>
+</li><li class="listitem">
+<p>added
+callouts</p>
+<p class="commit-changes">Modified: wordml/docbook-pages.xsl,1.3; wordml/docbook.xsl,1.14;
+wordml/pages-normalise.xsl,1.3; wordml/specifications.xml,1.11;
+wordml/template-pages.xml,1.4; wordml/wordml-final.xsl,1.10 - Steve
+Ball</p>
+</li><li class="listitem">
+<p>added Word template
+file</p>
+<p class="commit-changes">Modified: wordml/template.dot,1.1 - Steve Ball</p>
+</li><li class="listitem">
+<p>added <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a>, fixed
+<a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a>, ulink</p>
+<p class="commit-changes">Modified: wordml/specifications.xml,1.10;
+wordml/wordml-final.xsl,1.9 - Steve Ball</p>
+</li><li class="listitem">
+<p>fixed Makefile added many
+features to Pages support added <a href="http://docbook.org/tdg5/en/html/revhistory.html"><code class="sgmltag-element">revhistory</code></a>, inlines,
+highlights, <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a></p>
+<p class="commit-changes">Modified: wordml/Makefile,1.2;
+wordml/docbook-pages.xsl,1.2; wordml/pages-normalise.xsl,1.2;
+wordml/sections-spec.xml,1.2; wordml/specifications.xml,1.9;
+wordml/template-pages.xml,1.3; wordml/template.xml,1.11;
+wordml/wordml-final.xsl,1.8; wordml/wordml-sections.xsl,1.2 - Steve
+Ball</p>
+</li><li class="listitem">
+<p>fixed handling linebreaks when
+generating WordML added Apple Pages
+support</p>
+<p class="commit-changes">Modified: wordml/docbook.xsl,1.13; wordml/template-pages.xml,1.2 -
+Steve Ball</p>
+</li></ul></div>
+</div>
+</div>
+
+ <div class="sect1" title="Release 1.69.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1691"></a>Release 1.69.1</h2></div></div></div>
+
+ <p>This release is a minor bug-fix update to the 1.69.0
+ release. Along with bug fixes, it includes one
+ configuration-parameter change: The default value of the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/annotation.support.html"><em class="parameter"><code>annotation.support</code></em></a> parameter is now
+ <code class="literal">0</code> (off). The reason for that change is that
+ there have been reports that <a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a> handling is
+ causing a significant performance degradation in processing of
+ large documents with <span class="command"><strong>xsltproc</strong></span>.</p>
+ </div>
+
+
+ <div class="sect1" title="Release 1.69.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1690"></a>Release 1.69.0</h2></div></div></div>
+
+ <p>The release includes major feature changes,
+ particularly in the <a class="link" href="#V1690_MAN" title="man">manpages
+ stylesheets</a>, as well as a large number of bug fixes.</p>
+
+ <p>As with all DocBook Project <span class="quote">&#8220;<span class="quote">dot zero</span>&#8221;</span> releases, this is an
+ <a class="link" href="#dot0" title="About dot-zero releases">experimental release </a>.</p>
+
+ <div class="sect2" title="Common"><div class="titlepage"><div><div><h3 class="title"><a name="V1690_COMMON"></a>Common</h3></div></div></div>
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>This release adds localizations for the following
+ languages:
+ <span class="simplelist">Albanian, Amharic, Azerbaijani, Hindi, Irish (Gaelic), Gujarati, Kannada, Mongolian, Oriya, Punjabi, Tagalog, Tamil, and Welsh</span>.</p>
+ </li><li class="listitem">
+ <p>Added support for specifying number format for auto
+ labels for <a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">chapter</code></a>, <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/part.html"><code class="sgmltag-element">part</code></a>, and <a href="http://docbook.org/tdg5/en/html/preface.html"><code class="sgmltag-element">preface</code></a>. Contolled with the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/appendix.autolabel.html"><em class="parameter"><code>appendix.autolabel</code></em></a>,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chapter.autolabel.html"><em class="parameter"><code>chapter.autolabel</code></em></a>,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/part.autolabel.html"><em class="parameter"><code>part.autolabel</code></em></a>, and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/preface.autolabel.html"><em class="parameter"><code>preface.autolabel</code></em></a> parameters.</p>
+ </li><li class="listitem">
+ <p>Added basic support for <a href="http://docbook.org/tdg5/en/html/biblioref.html"><code class="sgmltag-element">biblioref</code></a> cross
+ referencing.</p>
+ </li><li class="listitem">
+ <p>Added support for <code class="sgmltag-attribute">align</code>
+ on <a href="http://docbook.org/tdg5/en/html/caption.html"><code class="sgmltag-element">caption</code></a> in <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a>.</p>
+ </li><li class="listitem">
+ <p>Added support for processing documents that use the
+ DocBook V5 namespace.</p>
+ </li><li class="listitem">
+ <p>Added support for <a href="http://docbook.org/tdg5/en/html/termdef.html"><code class="sgmltag-element">termdef</code></a> and
+ <a href="http://docbook.org/tdg5/en/html/mathphrase.html"><code class="sgmltag-element">mathphrase</code></a>.</p>
+ </li><li class="listitem">
+ <p>EXPERIMENTAL: Incorporated the Slides and Website
+ stylesheets into the DocBook XSL stylesheets package. So,
+ for example, Website documents can now be processed using
+ the following URI for the driver Website
+ <code class="filename">tabular.xsl</code> file: </p><pre class="literallayout"><code class="uri">http://docbook.sourceforge.net/release/xsl/current/website/tabular.xsl</code></pre>
+ </li><li class="listitem">
+ <p>A <a href="http://docbook.org/tdg5/en/html/procedure.html"><code class="sgmltag-element">procedure</code></a> without a <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> is
+ now treated as an <span class="quote">&#8220;<span class="quote">informal</span>&#8221;</span> procedure (meaning
+ that it is not added to any generated <span class="quote">&#8220;<span class="quote">list of
+ procedures</span>&#8221;</span> and has no affect on numbering of
+ generated labels for other procedures).</p>
+ </li><li class="listitem">
+ <p><code class="sgmltag-element">docname</code> is no longer added to
+ <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> when pointing to a root element.</p>
+ </li><li class="listitem">
+ <p>Added support for generation of choice separator in
+ inline simplelist. This enables auto-generation of an
+ appropriate localized <span class="quote">&#8220;<span class="quote">choice separator</span>&#8221;</span> (for
+ example, <span class="quote">&#8220;<span class="quote">and</span>&#8221;</span> or <span class="quote">&#8220;<span class="quote">or</span>&#8221;</span>) before the
+ final item in an inline <a href="http://docbook.org/tdg5/en/html/simplelist.html"><code class="sgmltag-element">simplelist</code></a>.</p>
+ <p>To indicate that you want a choice separator
+ generated for a particular list, you need to put a processing
+ instruction (PI) of the form
+ <code class="sgmltag-xmlpi">&lt;?dbchoice choice="foo"?&gt;</code> as a
+ child of the list. For example:
+ </p><pre class="literallayout"> &lt;para&gt;Choose from
+ ONE and ONLY ONE of the following:
+ &lt;simplelist type="inline"&gt;
+ &lt;?dbchoice choice="or" ?&gt;
+ &lt;member&gt;A&lt;/member&gt;
+ &lt;member&gt;B&lt;/member&gt;
+ &lt;member&gt;C&lt;/member&gt;.&lt;/simplelist&gt;&lt;/para&gt;</pre><p>
+
+ Output (for English):
+ </p><div class="blockquote"><blockquote class="blockquote">
+ <p>Choose from ONE and only ONE of the
+ following choices: A, B, or C.</p>
+ </blockquote></div><p>
+ As a temporary workaround for the fact that most of the
+ DocBook non-English locale files don't have a localization for
+ the word <span class="quote">&#8220;<span class="quote">or</span>&#8221;</span>, you can put in a literal string to
+ be used; example for French: <code class="sgmltag-pi">&lt;?dbchoice choice="ou"&gt;</code>. That is, use
+ <span class="quote">&#8220;<span class="quote">ou</span>&#8221;</span> instead of <span class="quote">&#8220;<span class="quote">or</span>&#8221;</span>.</p>
+ </li></ul></div>
+ </div>
+ <div class="sect2" title="FO"><div class="titlepage"><div><div><h3 class="title"><a name="V1690_FO"></a>FO</h3></div></div></div>
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p> Added <code class="literal">content-type</code> property to
+ <code class="literal">external-graphic</code> element, based on
+ <a href="http://docbook.org/tdg5/en/html/imagedata.html"><code class="sgmltag-element">imagedata</code></a> <code class="sgmltag-attribute">format</code>
+ attribute.</p>
+ </li><li class="listitem">
+ <p>Added support for generating
+ <code class="literal">&lt;rx:meta-field creator="$VERSION"/&gt;</code>
+ field for XEP output. This makes the DocBook XSL
+ stylesheet version information available through the
+ <span class="guimenu">Document Properties</span> menu in Acrobat
+ Reader and other PDF viewers.</p>
+ </li><li class="listitem">
+ <p>Trademark symbol handling made consistent with
+ handling of same in HTML stylesheets. Prior to this change,
+ if you processed a document that contained no value for the
+ <code class="sgmltag-attribute">class</code> attribute on the
+ <a href="http://docbook.org/tdg5/en/html/trademark.html"><code class="sgmltag-element">trademark</code></a> element, the HTML stylesheets would
+ default to rendering a superscript <code class="literal">TM
+ </code>symbol after the <a href="http://docbook.org/tdg5/en/html/trademark.html"><code class="sgmltag-element">trademark</code></a> contents,
+ but the FO stylesheets would render nothing.</p>
+ </li><li class="listitem">
+ <p>Added support for generating XEP bookmarks for
+ <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>.</p>
+ </li><li class="listitem">
+ <p>Added support for HTML markup <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> <code class="sgmltag-attribute">border</code> attribute, applied to each
+ table cell.</p>
+ </li><li class="listitem">
+ <p>The <code class="function">table.width</code> template can now
+ sum column specs if none use <code class="literal">%</code> or
+ <code class="literal">*</code>.</p>
+ </li><li class="listitem">
+ <p>Added <code class="literal">fox:destination</code> extension
+ inside <code class="literal">fox:outline</code> to support linking to
+ internal destinations.</p>
+ </li><li class="listitem">
+ <p>Added support for customizing
+ <code class="literal">abstract</code> with property sets. Controlled
+ with the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/abstract.properties.html"><em class="parameter"><code>abstract.properties</code></em></a> and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/abstract.title.properties.html"><em class="parameter"><code>abstract.title.properties</code></em></a>
+ parameters.</p>
+ </li><li class="listitem">
+ <p>Add <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a>s in <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> title to
+ table footnote set, and add support for table footnotes to
+ HTML table markup.</p>
+ </li><li class="listitem">
+ <p>Added support for <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in
+ <a href="http://docbook.org/tdg5/en/html/glosslist.html"><code class="sgmltag-element">glosslist</code></a>.</p>
+ </li><li class="listitem">
+ <p>Added support for <a href="http://docbook.org/tdg5/en/html/itemizedlist.html"><code class="sgmltag-element">itemizedlist</code></a> symbol
+ <code class="literal">none</code>.</p>
+ </li><li class="listitem">
+ <p>Implemented the new
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/graphical.admonition.properties.html"><em class="parameter"><code>graphical.admonition.properties</code></em></a> and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/nongraphical.admonition.properties.html"><em class="parameter"><code>nongraphical.admonition.properties</code></em></a>
+ attribute sets.</p>
+ </li><li class="listitem">
+ <p>Added <code class="sgmltag-attribute">id</code> to
+ <a href="http://docbook.org/tdg5/en/html/formalpara.html"><code class="sgmltag-element">formalpara</code></a> and some other blocks that were
+ missing it.</p>
+ </li><li class="listitem">
+ <p>Changed the anchor template to output
+ <code class="literal">fo:inline</code> instead of
+ <code class="literal">fo:wrapper</code>.</p>
+ </li><li class="listitem">
+ <p>Added support for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/toc.max.depth.html"><em class="parameter"><code>toc.max.depth</code></em></a>
+ parameter.</p>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="Help"><div class="titlepage"><div><div><h3 class="title"><a name="V1690_HELP"></a>Help</h3></div></div></div>
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Eclipse Help: Added support for generating olink
+ database.</p>
+ </li></ul></div>
+ </div>
+
+ <div class="sect2" title="HTML"><div class="titlepage"><div><div><h3 class="title"><a name="V1690_HTML"></a>HTML</h3></div></div></div>
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Added a first cut at support in HTML output for
+ DocBook 5 style <a href="http://docbook.org/tdg5/en/html/annotation.html"><code class="sgmltag-element">annotation</code></a>s. Controlled using the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/annotation.support.html"><em class="parameter"><code>annotation.support</code></em></a> parameter, and
+ implemented using JavaScript and CSS styling. For more
+ details, see the documentation for the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/annotation.js.html"><em class="parameter"><code>annotation.js</code></em></a>,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/annotation.css.html"><em class="parameter"><code>annotation.css</code></em></a>,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/annotation.graphic.open.html"><em class="parameter"><code>annotation.graphic.open</code></em></a>, and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/annotation.graphic.close.html"><em class="parameter"><code>annotation.graphic.close</code></em></a>
+ parameters.</p>
+ </li><li class="listitem">
+ <p>Generate client-side image map for
+ <a href="http://docbook.org/tdg5/en/html/imageobjectco.html"><code class="sgmltag-element">imageobjectco</code></a> with areas using
+ <code class="literal">calspair</code> units</p>
+ </li><li class="listitem">
+ <p>Added support for <code class="sgmltag-xmlpi">&lt;?img.src.path?&gt;</code> PI.</p>
+ </li><li class="listitem">
+ <p>Added support for passing
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/img.src.path.html"><em class="parameter"><code>img.src.path</code></em></a> to DocBook Java XSLT
+ image extensions when appropriate. Controlled using the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/graphicsize.use.img.src.path.html"><em class="parameter"><code>graphicsize.use.img.src.path</code></em></a>
+ parameter.</p>
+ </li><li class="listitem">
+ <p>Added support for (not
+ valid for DocBook 4) <code class="sgmltag-attribute">xlink:href</code>
+ on <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a> and (not valid for DocBook 4)
+ <a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a> in <a href="http://docbook.org/tdg5/en/html/area.html"><code class="sgmltag-element">area</code></a>.</p>
+ </li><li class="listitem">
+ <p>Added new parameter
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/default.table.frame.html"><em class="parameter"><code>default.table.frame</code></em></a> to control table
+ framing if there is no <code class="sgmltag-attribute">frame</code>
+ attribute on a table.</p>
+ </li><li class="listitem">
+ <p>Added initial, experimental support for generating
+ content for the HTML <code class="literal">title</code> attribute from
+ content of the <a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a> element. This change adds
+ support for the following inline elements only (none of them
+ are block elements):
+ <span class="simplelist"><a href="http://docbook.org/tdg5/en/html/abbrev.html"><code class="sgmltag-element">abbrev</code></a>, <a href="http://docbook.org/tdg5/en/html/accel.html"><code class="sgmltag-element">accel</code></a>, <a href="http://docbook.org/tdg5/en/html/acronym.html"><code class="sgmltag-element">acronym</code></a>, <code class="sgmltag-element">action</code>, <a href="http://docbook.org/tdg5/en/html/application.html"><code class="sgmltag-element">application</code></a>, <a href="http://docbook.org/tdg5/en/html/authorinitials.html"><code class="sgmltag-element">authorinitials</code></a>, <code class="sgmltag-element">beginpage</code>, <a href="http://docbook.org/tdg5/en/html/citation.html"><code class="sgmltag-element">citation</code></a>, <a href="http://docbook.org/tdg5/en/html/citerefentry.html"><code class="sgmltag-element">citerefentry</code></a>, <a href="http://docbook.org/tdg5/en/html/citetitle.html"><code class="sgmltag-element">citetitle</code></a>, <a href="http://docbook.org/tdg5/en/html/city.html"><code class="sgmltag-element">city</code></a>, <a href="http://docbook.org/tdg5/en/html/classname.html"><code class="sgmltag-element">classname</code></a>, <a href="http://docbook.org/tdg5/en/html/code.html"><code class="sgmltag-element">code</code></a>, <a href="http://docbook.org/tdg5/en/html/command.html"><code class="sgmltag-element">command</code></a>, <a href="http://docbook.org/tdg5/en/html/computeroutput.html"><code class="sgmltag-element">computeroutput</code></a>, <a href="http://docbook.org/tdg5/en/html/constant.html"><code class="sgmltag-element">constant</code></a>, <a href="http://docbook.org/tdg5/en/html/country.html"><code class="sgmltag-element">country</code></a>, <a href="http://docbook.org/tdg5/en/html/database.html"><code class="sgmltag-element">database</code></a>, <a href="http://docbook.org/tdg5/en/html/email.html"><code class="sgmltag-element">email</code></a>, <a href="http://docbook.org/tdg5/en/html/envar.html"><code class="sgmltag-element">envar</code></a>, <a href="http://docbook.org/tdg5/en/html/errorcode.html"><code class="sgmltag-element">errorcode</code></a>, <a href="http://docbook.org/tdg5/en/html/errorname.html"><code class="sgmltag-element">errorname</code></a>, <a href="http://docbook.org/tdg5/en/html/errortext.html"><code class="sgmltag-element">errortext</code></a>, <a href="http://docbook.org/tdg5/en/html/errortype.html"><code class="sgmltag-element">errortype</code></a>, <a href="http://docbook.org/tdg5/en/html/exceptionname.html"><code class="sgmltag-element">exceptionname</code></a>, <a href="http://docbook.org/tdg5/en/html/fax.html"><code class="sgmltag-element">fax</code></a>, <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a>, <a href="http://docbook.org/tdg5/en/html/firstname.html"><code class="sgmltag-element">firstname</code></a>, <a href="http://docbook.org/tdg5/en/html/firstterm.html"><code class="sgmltag-element">firstterm</code></a>, <a href="http://docbook.org/tdg5/en/html/foreignphrase.html"><code class="sgmltag-element">foreignphrase</code></a>, <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>, <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a>, <a href="http://docbook.org/tdg5/en/html/guibutton.html"><code class="sgmltag-element">guibutton</code></a>, <a href="http://docbook.org/tdg5/en/html/guiicon.html"><code class="sgmltag-element">guiicon</code></a>, <a href="http://docbook.org/tdg5/en/html/guilabel.html"><code class="sgmltag-element">guilabel</code></a>, <a href="http://docbook.org/tdg5/en/html/guimenu.html"><code class="sgmltag-element">guimenu</code></a>, <a href="http://docbook.org/tdg5/en/html/guimenuitem.html"><code class="sgmltag-element">guimenuitem</code></a>, <a href="http://docbook.org/tdg5/en/html/guisubmenu.html"><code class="sgmltag-element">guisubmenu</code></a>, <a href="http://docbook.org/tdg5/en/html/hardware.html"><code class="sgmltag-element">hardware</code></a>, <a href="http://docbook.org/tdg5/en/html/honorific.html"><code class="sgmltag-element">honorific</code></a>, <code class="sgmltag-element">interface</code>, <a href="http://docbook.org/tdg5/en/html/interfacename.html"><code class="sgmltag-element">interfacename</code></a>, <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a>, <a href="http://docbook.org/tdg5/en/html/keycode.html"><code class="sgmltag-element">keycode</code></a>, <a href="http://docbook.org/tdg5/en/html/keysym.html"><code class="sgmltag-element">keysym</code></a>, <a href="http://docbook.org/tdg5/en/html/lineage.html"><code class="sgmltag-element">lineage</code></a>, <a href="http://docbook.org/tdg5/en/html/lineannotation.html"><code class="sgmltag-element">lineannotation</code></a>, <a href="http://docbook.org/tdg5/en/html/literal.html"><code class="sgmltag-element">literal</code></a>, <a href="http://docbook.org/tdg5/en/html/markup.html"><code class="sgmltag-element">markup</code></a>, <code class="sgmltag-element">medialabel</code>, <a href="http://docbook.org/tdg5/en/html/methodname.html"><code class="sgmltag-element">methodname</code></a>, <a href="http://docbook.org/tdg5/en/html/mousebutton.html"><code class="sgmltag-element">mousebutton</code></a>, <a href="http://docbook.org/tdg5/en/html/option.html"><code class="sgmltag-element">option</code></a>, <a href="http://docbook.org/tdg5/en/html/optional.html"><code class="sgmltag-element">optional</code></a>, <a href="http://docbook.org/tdg5/en/html/otheraddr.html"><code class="sgmltag-element">otheraddr</code></a>, <a href="http://docbook.org/tdg5/en/html/othername.html"><code class="sgmltag-element">othername</code></a>, <a href="http://docbook.org/tdg5/en/html/package.html"><code class="sgmltag-element">package</code></a>, <a href="http://docbook.org/tdg5/en/html/parameter.html"><code class="sgmltag-element">parameter</code></a>, <a href="http://docbook.org/tdg5/en/html/personname.html"><code class="sgmltag-element">personname</code></a>, <a href="http://docbook.org/tdg5/en/html/phone.html"><code class="sgmltag-element">phone</code></a>, <a href="http://docbook.org/tdg5/en/html/pob.html"><code class="sgmltag-element">pob</code></a>, <a href="http://docbook.org/tdg5/en/html/postcode.html"><code class="sgmltag-element">postcode</code></a>, <a href="http://docbook.org/tdg5/en/html/productname.html"><code class="sgmltag-element">productname</code></a>, <a href="http://docbook.org/tdg5/en/html/productnumber.html"><code class="sgmltag-element">productnumber</code></a>, <a href="http://docbook.org/tdg5/en/html/prompt.html"><code class="sgmltag-element">prompt</code></a>, <a href="http://docbook.org/tdg5/en/html/property.html"><code class="sgmltag-element">property</code></a>, <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a>, <a href="http://docbook.org/tdg5/en/html/refentrytitle.html"><code class="sgmltag-element">refentrytitle</code></a>, <a href="http://docbook.org/tdg5/en/html/remark.html"><code class="sgmltag-element">remark</code></a>, <a href="http://docbook.org/tdg5/en/html/replaceable.html"><code class="sgmltag-element">replaceable</code></a>, <a href="http://docbook.org/tdg5/en/html/returnvalue.html"><code class="sgmltag-element">returnvalue</code></a>, <a href="http://docbook.org/tdg5/en/html/tag.html"><code class="sgmltag-element">tag</code></a>, <a href="http://docbook.org/tdg5/en/html/shortcut.html"><code class="sgmltag-element">shortcut</code></a>, <a href="http://docbook.org/tdg5/en/html/state.html"><code class="sgmltag-element">state</code></a>, <a href="http://docbook.org/tdg5/en/html/street.html"><code class="sgmltag-element">street</code></a>, <code class="sgmltag-element">structfield</code>, <code class="sgmltag-element">structname</code>, <a href="http://docbook.org/tdg5/en/html/subscript.html"><code class="sgmltag-element">subscript</code></a>, <a href="http://docbook.org/tdg5/en/html/superscript.html"><code class="sgmltag-element">superscript</code></a>, <a href="http://docbook.org/tdg5/en/html/surname.html"><code class="sgmltag-element">surname</code></a>, <a href="http://docbook.org/tdg5/en/html/symbol.html"><code class="sgmltag-element">symbol</code></a>, <a href="http://docbook.org/tdg5/en/html/systemitem.html"><code class="sgmltag-element">systemitem</code></a>, <a href="http://docbook.org/tdg5/en/html/tag.html"><code class="sgmltag-element">tag</code></a>, <a href="http://docbook.org/tdg5/en/html/termdef.html"><code class="sgmltag-element">termdef</code></a>, <a href="http://docbook.org/tdg5/en/html/token.html"><code class="sgmltag-element">token</code></a>, <a href="http://docbook.org/tdg5/en/html/trademark.html"><code class="sgmltag-element">trademark</code></a>, <a href="http://docbook.org/tdg5/en/html/type.html"><code class="sgmltag-element">type</code></a>, <a href="http://docbook.org/tdg5/en/html/uri.html"><code class="sgmltag-element">uri</code></a>, <a href="http://docbook.org/tdg5/en/html/userinput.html"><code class="sgmltag-element">userinput</code></a>, <a href="http://docbook.org/tdg5/en/html/varname.html"><code class="sgmltag-element">varname</code></a>, and <a href="http://docbook.org/tdg5/en/html/wordasword.html"><code class="sgmltag-element">wordasword</code></a></span>
+ </p>
+ </li><li class="listitem">
+ <p>Added support for chunking <a href="http://docbook.org/tdg5/en/html/revhistory.html"><code class="sgmltag-element">revhistory</code></a> into
+ separate file (similar to the support for doing same with
+ <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a>). Patch from Thomas
+ Schraitle. Controlled through <em class="parameter"><code>new
+ generate.revhistory.link</code></em> parameter.</p>
+ </li><li class="listitem">
+ <p>l10n.xsl: Made language codes RFC compliant. Added a
+ new boolean config parameter,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/l10n.lang.value.rfc.compliant.html"><em class="parameter"><code>l10n.lang.value.rfc.compliant</code></em></a>. If it
+ is non-zero (the default), any underscore in a language code
+ will be converted to a hyphen in HTML output. If it is zero,
+ the language code will be left as-is.</p>
+ </li></ul></div>
+ </div>
+ <div class="sect2" title="man"><div class="titlepage"><div><div><h3 class="title"><a name="V1690_MAN"></a>man</h3></div></div></div>
+
+ <p>This release closes out 44 manpages stylesheet bug reports
+ and feature requests. It adds more than 35 new configuration
+ parameters for controlling aspects of man-page output --
+ including hyphenation and justification, handling of links,
+ conversion of Unicode characters, and contents of man-page
+ headers and footers.</p>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>New options for globally disabling/enabling
+ hyphenation and justification:
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.justify.html"><em class="parameter"><code>man.justify</code></em></a> and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.hyphenate.html"><em class="parameter"><code>man.hyphenate</code></em></a>.</p>
+ <p>Note that the default
+ for the both of those is zero (off), because justified text
+ looks good only when it is also hyphenated; to quote the
+ <span class="quote">&#8220;<span class="quote">Hyphenation</span>&#8221;</span> node from the groff info page:
+ </p><div class="blockquote"><blockquote class="blockquote">
+ <p><span class="emphasis"><em>Since the odds are not great for finding a
+ set of words, for every output line, which fit nicely on a
+ line without inserting excessive amounts of space between
+ words, `gtroff' hyphenates words so that it can justify
+ lines without inserting too much space between
+ words.</em></span></p>
+ </blockquote></div><p>
+ The problem is that groff can end up hyphenating a lot of
+ things that you don't want hyphenated (variable names and
+ command names, for example). Keeping both justification and
+ hyphenation disabled ensures that hyphens won't get inserted
+ where you don't want to them, and you don't end up with
+ lines containing excessive amounts of space between
+ words. These default settings run counter to how most
+ existing man pages are formatted. But there are some notable
+ exceptions, such as the perl man pages.</p>
+ </li><li class="listitem">
+ <p> Added parameters for controlling hyphenation of
+ computer inlines, filenames, and URLs. By default, even when
+ hyphenation is enabled (globally), hyphenation is now
+ suppressed for "computer inlines" (currently, just
+ <a href="http://docbook.org/tdg5/en/html/classname.html"><code class="sgmltag-element">classname</code></a>, <a href="http://docbook.org/tdg5/en/html/constant.html"><code class="sgmltag-element">constant</code></a>, <a href="http://docbook.org/tdg5/en/html/envar.html"><code class="sgmltag-element">envar</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/errorcode.html"><code class="sgmltag-element">errorcode</code></a>, <a href="http://docbook.org/tdg5/en/html/option.html"><code class="sgmltag-element">option</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/replaceable.html"><code class="sgmltag-element">replaceable</code></a>, <a href="http://docbook.org/tdg5/en/html/userinput.html"><code class="sgmltag-element">userinput</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/type.html"><code class="sgmltag-element">type</code></a>, and <a href="http://docbook.org/tdg5/en/html/varname.html"><code class="sgmltag-element">varname</code></a>, and for
+ <code class="sgmltag-element">filenames</code>, and for URLs from <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a>. It
+ can be (re)enabled using the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.hyphenate.computer.inlines.html"><em class="parameter"><code>man.hyphenate.computer.inlines</code></em></a>,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.hyphenate.filenames.html"><em class="parameter"><code>man.hyphenate.filenames</code></em></a>, and
+ <em class="parameter"><code>man.hyphenate.urls parameters</code></em>.</p>
+ </li><li class="listitem">
+ <p>Implemented a new system for replacing Unicode
+ characters. There are two parts to the new system: a
+ <span class="quote">&#8220;<span class="quote">string substitution map</span>&#8221;</span> for doing
+ <span class="quote">&#8220;<span class="quote">essential</span>&#8221;</span> replacements, and a
+ <span class="quote">&#8220;<span class="quote">character map</span>&#8221;</span> that can optionally be disabled
+ and enabled.</p>
+ <p>The new system fixes all open bugs that had to do with
+ literal Unicode numbered entities such as &amp;#8220; and
+ &amp;#8221; showing up in output, and greatly expands the
+ ability of the stylesheets to generate <span class="quote">&#8220;<span class="quote">good</span>&#8221;</span> roff
+ equivalents for Unicode symbols and special
+ characters.</p>
+ <p>Here are some details...</p>
+ <p>The previous manpages mechanism for replacing Unicode
+ symbols and special characters with roff equivalents (the
+ <code class="function">replace-entities</code> template) was not
+ scalable and not complete. The mechanism handled a somewhat
+ arbitrary selection of less than 20 or so Unicode
+ characters. But there are potentially more than
+ <span class="emphasis"><em>800</em></span> Unicode special characters that
+ have some groff equivalent they can be mapped to. And there
+ are about 34 symbols in the Latin-1 (ISO-8859-1) block
+ alone. Users might reasonably expect that if they include
+ any of those Latin-1 characters in their DocBook source
+ documents, they will get correctly converted to known roff
+ equivalents in output.</p>
+ <p>In addition to those common symbols, certain users may
+ have a need to use symbols from other Unicode blocks. Say,
+ somebody who is documenting an application related to math
+ might need to use a bunch of symbols from the
+ <span class="quote">&#8220;<span class="quote">Mathematical Operators</span>&#8221;</span> Unicode block (there
+ are about 65 characters in that block that have reasonable
+ roff equivalents). Or somebody else might really like
+ Dingbats -- such as the checkmark character -- and so might
+ use a bunch of things from the <span class="quote">&#8220;<span class="quote">Dingbat</span>&#8221;</span> block
+ (141 characters in that that have roff equivalents or that
+ can at least be <span class="quote">&#8220;<span class="quote">degraded</span>&#8221;</span> somewhat gracefully
+ into roff).</p>
+ <p>So, the old <code class="function">replace-entities</code>
+ mechanism was replaced with a completely different mechanism
+ that is based on use of two <span class="quote">&#8220;<span class="quote">maps</span>&#8221;</span>: a
+ <span class="quote">&#8220;<span class="quote">substitution map</span>&#8221;</span> and a <span class="quote">&#8220;<span class="quote">character
+ map</span>&#8221;</span> (the latter in a format compliant with the XSLT
+ 2.0 spec and therefore completely <span class="quote">&#8220;<span class="quote">forward
+ compatible</span>&#8221;</span> with XSLT 2.0).</p>
+ <p>The substitution map is controlled through the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.html"><em class="parameter"><code>man.string.subst.map</code></em></a> parameter, and
+ is used to replace things like the backslash character
+ (which needs special handling to prevent it from being
+ interpreted as a roff escape). The substitution map cannot
+ be disabled, because disabling it will cause the output to
+ be broken. However, you can add to it and change it if
+ needed.</p>
+
+ <p>The <span class="quote">&#8220;<span class="quote">character map</span>&#8221;</span> mechanism, on the
+ other hand, can be completely disabled. It is enabled by
+ default, and, by default, does replacement of all Latin-1
+ symbols, along with most special spaces, dashes, and quotes
+ (about 75 characters by default). Also, you can optionally
+ enable a <span class="quote">&#8220;<span class="quote">full</span>&#8221;</span> character map that provides
+ support for converting all 800 or so of the characters that
+ have some reasonable groff equivalent.</p>
+
+ <p>The character-map mechanism is controlled through the
+ following parameters:
+ </p><div class="variablelist"><dl><dt><span class="term"><a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.charmap.enabled.html"><em class="parameter"><code>man.charmap.enabled</code></em></a></span></dt><dd><p>turns character-map support
+ on/off</p></dd><dt><span class="term"><a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.charmap.use.subset.html"><em class="parameter"><code>man.charmap.use.subset</code></em></a></span></dt><dd><p>specifies that a subset of the character
+ map is used instead of the full map</p></dd><dt><span class="term"><a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.charmap.subset.profile.html"><em class="parameter"><code>man.charmap.subset.profile</code></em></a></span></dt><dd><p>specifies profile of character-map
+ subset</p></dd><dt><span class="term"><a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.charmap.uri.html"><em class="parameter"><code>man.charmap.uri</code></em></a></span></dt><dd><p>specifies an alternate character map to
+ use instead of the <span class="quote">&#8220;<span class="quote">standard</span>&#8221;</span> character map
+ provided in the distribution</p></dd></dl></div><p>
+ </p>
+ </li><li class="listitem">
+ <p>Implemented out-of-line handling of display of URLs
+ for links (currently, only for <code class="sgmltag-element">ulink</code>). This gives
+ you three choices for handling of links:
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+ <p>Number and list links. Each link is numbered
+ inline, with a number in square brackets preceding the
+ link contents, and a numbered list of all links is added
+ to the end of the document.</p>
+ </li><li class="listitem">
+ <p>Only list links. Links are not numbered, but an
+ (unnumbered) list of links is added to the end of the
+ document.</p>
+ </li><li class="listitem">
+ <p>Suppress links. Don't number links and don't add
+ any list of links to the end of the document.</p>
+ </li></ol></div><p>
+ You can also choose whether links should be underlined. The
+ default is <span class="quote">&#8220;<span class="quote">the works</span>&#8221;</span> -- list, number, and
+ underline links. You can use the
+ <em class="parameter"><code>man.links.list.enabled</code></em>, <em class="parameter"><code>
+ man.links.are.numbered</code></em>, and
+ <em class="parameter"><code>man.links.are.underlined</code></em> parameters
+ to change the defaults. The default heading for the link
+ list is REFERENCES. You can be change that using the
+ <em class="parameter"><code>man.links.list.heading</code></em>
+ parameter.</p>
+ </li><li class="listitem">
+ <p>Changed default output encoding to UTF-8. <span class="bold"><strong>This does not mean that man pages are output in
+ raw UTF-8</strong></span>, because the character map is applied
+ before final output, causing all UTF-8 characters covered in
+ the map to be converted to roff equivalents.</p>
+ </li><li class="listitem">
+ <p>Added support for processing <a href="http://docbook.org/tdg5/en/html/refsect3.html"><code class="sgmltag-element">refsect3</code></a> and
+ <a href="http://docbook.org/tdg5/en/html/formalpara.html"><code class="sgmltag-element">formalpara</code></a> and nested <a href="http://docbook.org/tdg5/en/html/refsection.html"><code class="sgmltag-element">refsection</code></a>
+ elements, down to any arbitrary level of nesting.</p>
+ </li><li class="listitem">
+ <p>Output of the <code class="literal">NAME</code> and
+ <code class="literal">SYNOPSIS</code> and <code class="literal">AUTHOR</code>
+ headings and the headings for admonitions (<a href="http://docbook.org/tdg5/en/html/note.html"><code class="sgmltag-element">note</code></a>,
+ <a href="http://docbook.org/tdg5/en/html/caution.html"><code class="sgmltag-element">caution</code></a>, etc.) are no longer hard-coded for
+ English. Instead, headings are generated for those in the
+ correct locale (just as the FO and HTML stylesheets
+ do).</p>
+ </li><li class="listitem">
+ <p>Re-worked mechanism for assembling page
+ headers/footers (the contents of the <code class="literal">.TH</code>
+ macro <span class="quote">&#8220;<span class="quote">title line</span>&#8221;</span>).</p>
+
+ <p>Here are some details...</p>
+
+ <p>All man pages contain a <code class="literal">.TH</code> roff
+ macro whose contents are used for rendering the <span class="quote">&#8220;<span class="quote">title
+ line</span>&#8221;</span> displayed in the header and footer of each
+ page. Here are a couple of examples of real-world man pages
+ that have useful page headers/footers: </p><pre class="literallayout">
+ gtk-options(7) GTK+ User's Manual gtk-options(7) &lt;-- header
+ GTK+ 1.2 2003-10-20 gtk-options(7) &lt;-- footer
+
+ svgalib(7) Svgalib User Manual svgalib(7) &lt;-- header
+ Svgalib 1.4.1 16 December 1999 svgalib(7) &lt;-- footer</pre>
+
+ <p>And here are the terms with which the
+ <code class="literal">groff_man(7)</code> man page refers to the
+ various parts of the header/footer: </p><pre class="literallayout">
+ title(section) extra3 title(section) &lt;- header
+ extra2 extra1 title(section) &lt;- footer</pre>
+ <p> Or, using the names with which the <code class="literal">man(7)</code>
+ man page refers to those same fields: </p><pre class="literallayout">
+ title(section) manual title(section) &lt;- page header
+ source date title(section) &lt;- page footer</pre>
+
+ <p>The easiest way to control the contents of those
+ fields is to mark up your <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> content like
+ the following (note that this is a <span class="quote">&#8220;<span class="quote">minimal</span>&#8221;</span>
+ example). </p><pre class="programlisting">
+ &lt;refentry&gt;
+ &lt;info&gt;
+ &lt;date&gt;2003-10-20&lt;/date&gt; <a class="co" name="V1690_date-co" href="#V1690_date"><img src="images/callouts/1.png" alt="1" border="0"></a>
+ &lt;/info&gt;
+ &lt;refmeta&gt;
+ &lt;refentrytitle&gt;gtk-options&lt;/refentrytitle&gt; <a class="co" name="V1690_title-co" href="#V1690_title"><img src="images/callouts/2.png" alt="2" border="0"></a>
+ &lt;manvolnum&gt;7&lt;/manvolnum&gt; <a class="co" name="V1690_manvolnum-co" href="#V1690_manvolnum"><img src="images/callouts/3.png" alt="3" border="0"></a>
+ &lt;refmiscinfo class="source-name"&gt;GTK+&lt;/refmiscinfo&gt; <a class="co" name="V1690_source-name-co" href="#V1690_source-name"><img src="images/callouts/4.png" alt="4" border="0"></a>
+ &lt;refmiscinfo class="version"&gt;1.2&lt;/refmiscinfo&gt; <a class="co" name="V1690_version-co" href="#V1690_version"><img src="images/callouts/5.png" alt="5" border="0"></a>
+ &lt;refmiscinfo class="manual"&gt;GTK+ User's Manual&lt;/refmiscinfo&gt; <a class="co" name="V1690_manual-co" href="#V1690_manual"><img src="images/callouts/6.png" alt="6" border="0"></a>
+ &lt;/refmeta&gt;
+ &lt;refnamediv&gt;
+ &lt;refname&gt;gtk-options&lt;/refname&gt;
+ &lt;refpurpose&gt;Standard Command Line Options for GTK+ Programs&lt;/refpurpose&gt;
+ &lt;/refnamediv&gt;
+ &lt;refsect1&gt;
+ &lt;title&gt;Description&lt;/title&gt;
+ &lt;para&gt;This manual page describes the command line options, which
+ are common to all GTK+ based applications.&lt;/para&gt;
+ &lt;/refsect1&gt;
+ &lt;/refentry&gt;</pre><p>
+ </p><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a name="V1690_date"></a><a href="#V1690_date-co"><img src="images/callouts/1.png" alt="1" border="0"></a> </p></td><td valign="top" align="left">
+ <p>Sets the <span class="quote">&#8220;<span class="quote">date</span>&#8221;</span> part of the header/footer.</p>
+ </td></tr><tr><td width="5%" valign="top" align="left"><p><a name="V1690_title"></a><a href="#V1690_title-co"><img src="images/callouts/2.png" alt="2" border="0"></a> </p></td><td valign="top" align="left">
+ <p>Sets the <span class="quote">&#8220;<span class="quote">title</span>&#8221;</span> part.</p>
+ </td></tr><tr><td width="5%" valign="top" align="left"><p><a name="V1690_manvolnum"></a><a href="#V1690_manvolnum-co"><img src="images/callouts/3.png" alt="3" border="0"></a> </p></td><td valign="top" align="left">
+ <p>Sets the <span class="quote">&#8220;<span class="quote">section</span>&#8221;</span> part.</p>
+ </td></tr><tr><td width="5%" valign="top" align="left"><p><a name="V1690_source-name"></a><a href="#V1690_source-name-co"><img src="images/callouts/4.png" alt="4" border="0"></a> </p></td><td valign="top" align="left">
+ <p>Sets the <span class="quote">&#8220;<span class="quote">source name</span>&#8221;</span> part.</p>
+ </td></tr><tr><td width="5%" valign="top" align="left"><p><a name="V1690_version"></a><a href="#V1690_version-co"><img src="images/callouts/5.png" alt="5" border="0"></a> </p></td><td valign="top" align="left">
+ <p>Sets the <span class="quote">&#8220;<span class="quote">version</span>&#8221;</span> part.</p>
+ </td></tr><tr><td width="5%" valign="top" align="left"><p><a name="V1690_manual"></a><a href="#V1690_manual-co"><img src="images/callouts/6.png" alt="6" border="0"></a> </p></td><td valign="top" align="left">
+ <p>Sets the <span class="quote">&#8220;<span class="quote">manual</span>&#8221;</span> part.</p>
+ </td></tr></table></div><p>
+ </p>
+ <p>Below are explanations of the steps the stylesheets
+ take to attempt to assemble and display
+ <span class="quote">&#8220;<span class="quote">good</span>&#8221;</span> headers and footer. [In the
+ descriptions, note that <em class="replaceable"><code>*info</code></em>
+ is the <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> <span class="quote">&#8220;<span class="quote">info</span>&#8221;</span> child
+ (whatever its name), and
+ <em class="replaceable"><code>parentinfo</code></em> is the
+ <span class="quote">&#8220;<span class="quote">info</span>&#8221;</span> child of its parent (again, whatever
+ its name).]
+ </p><div class="variablelist"><dl><dt><span class="term">extra1 field (date)</span></dt><dd>
+ <p>Content of the <span class="quote">&#8220;<span class="quote">extra1</span>&#8221;</span> field is
+ what shows up in the <span class="bold"><strong>center
+ footer</strong></span> position of each page. The
+ <code class="literal">man(7)</code> man page describes it as
+ <span class="quote">&#8220;<span class="quote">the date of the last revision</span>&#8221;</span>.</p>
+ <p>To provide this content, if the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/refentry.date.profile.enabled.html"><em class="parameter"><code>refentry.date.profile.enabled</code></em></a>
+ is non-zero, the stylesheets check the value of
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/refentry.date.profile.html"><em class="parameter"><code>refentry.date.profile</code></em></a>.</p>
+ <p>Otherwise, by default, they check for a
+ <a href="http://docbook.org/tdg5/en/html/date.html"><code class="sgmltag-element">date</code></a> or <a href="http://docbook.org/tdg5/en/html/pubdate.html"><code class="sgmltag-element">pubdate</code></a> not only in the
+ <em class="replaceable"><code>*info</code></em> contents, but also in
+ the <em class="replaceable"><code>parentinfo</code></em>
+ contents.</p>
+ <p>If a date cannot be found, the stylesheets now
+ automatically generate a localized <span class="quote">&#8220;<span class="quote">long
+ format</span>&#8221;</span> date, ensuring that this field always
+ has content in output.</p>
+ <p>However, if for some reason you want to suppress
+ this field, you can do so by setting a non-zero value
+ for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.th.extra1.suppress.html"><em class="parameter"><code>man.th.extra1.suppress</code></em></a>.</p>
+ </dd><dt><span class="term">extra2 field (source)</span></dt><dd>
+ <p>On Linux systems and on systems with a modern
+ groff, the content of the <span class="quote">&#8220;<span class="quote">extra2</span>&#8221;</span> field
+ are what shows up in the <span class="bold"><strong>left
+ footer</strong></span> position of each page.</p>
+
+ <p>The <code class="literal">man(7)</code> man page describes
+ this as <span class="quote">&#8220;<span class="quote">the source of the command</span>&#8221;</span>, and
+ provides the following examples:
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <p>For binaries, use somwething like: GNU,
+ NET-2, SLS Distribution, MCC Distribution.</p>
+ </li><li class="listitem">
+ <p>For system calls, use the version of the
+ kernel that you are currently looking at: Linux
+ 0.99.11.</p>
+ </li><li class="listitem">
+ <p>For library calls, use the source of the
+ function: GNU, BSD 4.3, Linux DLL 4.4.1.</p>
+ </li></ul></div><p>
+ </p>
+
+ <p>In practice, there are many pages that simply
+ have a version number in the <span class="quote">&#8220;<span class="quote">source</span>&#8221;</span>
+ field. So, it looks like what we have is a two-part
+ field,
+ <em class="replaceable"><code>Name</code></em> <em class="replaceable"><code>Version</code></em>,
+ where:
+ </p><div class="variablelist"><dl><dt><span class="term">Name</span></dt><dd>
+ <p>product name (e.g., BSD) or org. name
+ (e.g., GNU)</p>
+ </dd><dt><span class="term">Version</span></dt><dd>
+ <p>version name</p>
+ </dd></dl></div><p>
+ Each part is optional. If the
+ <em class="replaceable"><code>Name</code></em> is a product name,
+ then the <em class="replaceable"><code>Version</code></em> is
+ probably the version of the product. Or there may be
+ no <em class="replaceable"><code>Name</code></em>, in which case, if
+ there is a <em class="replaceable"><code>Version</code></em>, it is
+ probably the version of the item itself, not the
+ product it is part of. Or, if the
+ <em class="replaceable"><code>Name</code></em> is an organization
+ name, then there probably will be no
+ <em class="replaceable"><code>Version</code></em>.
+ </p>
+ <p>To provide this content, if the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/refentry.source.name.profile.enabled.html"><em class="parameter"><code>refentry.source.name.profile.enabled</code></em></a>
+ and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/refentry.version.profile.enabled.html"><em class="parameter"><code>refentry.version.profile.enabled</code></em></a>
+ parameter are non-zero, the stylesheets check the
+ value of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/refentry.source.name.profile.html"><em class="parameter"><code>refentry.source.name.profile</code></em></a>
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/refentry.version.profile.html"><em class="parameter"><code>refentry.version.profile</code></em></a>.</p>
+
+ <p>Otherwise, by default, they check the following
+ places, in the following order:
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+ <pre class="literallayout"><em class="replaceable"><code>*info</code></em>/<a href="http://docbook.org/tdg5/en/html/productnumber.html"><code class="sgmltag-element">productnumber</code></a></pre>
+ </li><li class="listitem">
+ <pre class="literallayout"><em class="replaceable"><code>*info</code></em>/<a href="http://docbook.org/tdg5/en/html/productnumber.html"><code class="sgmltag-element">productnumber</code></a></pre>
+ </li><li class="listitem">
+ <pre class="literallayout"><a href="http://docbook.org/tdg5/en/html/refmeta.html"><code class="sgmltag-element">refmeta</code></a>/<a href="http://docbook.org/tdg5/en/html/refmiscinfo.html"><code class="sgmltag-element">refmiscinfo</code></a>[@class = 'version']</pre>
+ </li><li class="listitem">
+ <pre class="literallayout"><em class="replaceable"><code>parentinfo</code></em>/<a href="http://docbook.org/tdg5/en/html/productnumber.html"><code class="sgmltag-element">productnumber</code></a></pre>
+ </li><li class="listitem">
+ <pre class="literallayout"><em class="replaceable"><code>*info</code></em>/<a href="http://docbook.org/tdg5/en/html/productname.html"><code class="sgmltag-element">productname</code></a></pre>
+ </li><li class="listitem">
+ <pre class="literallayout"><em class="replaceable"><code>parentinfo</code></em>/<a href="http://docbook.org/tdg5/en/html/productname.html"><code class="sgmltag-element">productname</code></a></pre>
+ </li><li class="listitem">
+ <pre class="literallayout"><a href="http://docbook.org/tdg5/en/html/refmeta.html"><code class="sgmltag-element">refmeta</code></a>/<a href="http://docbook.org/tdg5/en/html/refmiscinfo.html"><code class="sgmltag-element">refmiscinfo</code></a></pre>
+ </li><li class="listitem">
+ <p>[nothing found, so leave it empty]</p>
+ </li></ol></div><p>
+ </p>
+ </dd><dt><span class="term">extra3 field</span></dt><dd>
+ <p>On Linux systems and on systems with a modern
+ groff, the content of the <span class="quote">&#8220;<span class="quote">extra3</span>&#8221;</span> field
+ are what shows up in the <span class="bold"><strong>center
+ header</strong></span> position of each page. Some man
+ pages have <span class="quote">&#8220;<span class="quote">extra2</span>&#8221;</span> content, some
+ don't. If a particular man page has it, it is most
+ often <span class="quote">&#8220;<span class="quote">context</span>&#8221;</span> data about some larger
+ system the documented item belongs to (for example,
+ the name or description of a group of related
+ applications). The stylesheets now check the following
+ places, in the following order, to look for content to
+ add to the <span class="quote">&#8220;<span class="quote">extra3</span>&#8221;</span> field.</p>
+ <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+ <pre class="literallayout"><em class="replaceable"><code>parentinfo</code></em>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a></pre>
+ </li><li class="listitem">
+ <pre class="literallayout">parent's <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a></pre>
+ </li><li class="listitem">
+ <pre class="literallayout"><a href="http://docbook.org/tdg5/en/html/refmeta.html"><code class="sgmltag-element">refmeta</code></a>/<a href="http://docbook.org/tdg5/en/html/refmiscinfo.html"><code class="sgmltag-element">refmiscinfo</code></a></pre>
+ </li><li class="listitem">
+ <p>[nothing found, so leave it empty]</p>
+ </li></ol></div>
+ </dd></dl></div><p>
+ </p>
+ </li><li class="listitem">
+ <p>Reworked <em class="replaceable"><code>*info</code></em> gathering. For
+ each <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> found, the stylesheets now cache its
+ <em class="replaceable"><code>*info</code></em> content, then check for any
+ valid parent of it that might have metainfo content and cache
+ that, if found; they then then do all further matches against
+ those node-sets (rather than re-selecting the original
+ <em class="replaceable"><code>*info</code></em> nodes each time they are
+ needed).</p>
+ </li><li class="listitem">
+ <p>New option for breaking strings after forward
+ slashes. This enables long URLs and pathnames to be broken
+ across lines. Controlled through
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.break.after.slash.html"><em class="parameter"><code>man.break.after.slash</code></em></a> parameter.</p>
+ </li><li class="listitem">
+ <p>Output for servicemark and trademark are now
+ <code class="literal">(SM)</code> and <code class="literal">(TM)</code>. There is
+ a groff <code class="literal">"\(tm"</code> escape, but output from that
+ is not acceptable.</p>
+ </li><li class="listitem">
+ <p>New option for controlling the length of the title
+ part of the <code class="literal">.TH</code> title line. Controlled
+ through the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.th.title.max.length.html"><em class="parameter"><code>man.th.title.max.length</code></em></a>
+ parameter.</p>
+ </li><li class="listitem">
+ <p>New option for specifying output encoding of each man
+ page; controlled with
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.encoding.html"><em class="parameter"><code>man.output.encoding</code></em></a> (similar to the
+ HTML <em class="parameter"><code>chunker.output.encoding </code></em>
+ parameter).</p>
+ </li><li class="listitem">
+ <p>New option for suppressing filename messages when
+ generating output; controlled with
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.output.quietly.html"><em class="parameter"><code>man.output.quietly</code></em></a> (similar to the HTML
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chunk.quietly.html"><em class="parameter"><code>chunk.quietly</code></em></a> parameter).</p>
+ </li><li class="listitem">
+ <p>The text of cross-references to first-level
+ <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> (<a href="http://docbook.org/tdg5/en/html/refsect1.html"><code class="sgmltag-element">refsect1</code></a>, top-level
+ <a href="http://docbook.org/tdg5/en/html/refsection.html"><code class="sgmltag-element">refsection</code></a>, <a href="http://docbook.org/tdg5/en/html/refnamediv.html"><code class="sgmltag-element">refnamediv</code></a>, and
+ <a href="http://docbook.org/tdg5/en/html/refsynopsisdiv.html"><code class="sgmltag-element">refsynopsisdiv</code></a>) are now capitalized.</p>
+ </li><li class="listitem">
+ <p>Cross-references to <a href="http://docbook.org/tdg5/en/html/refnamediv.html"><code class="sgmltag-element">refnamediv</code></a> now use the
+ localized <code class="literal">NAME</code> title instead of using the
+ first <a href="http://docbook.org/tdg5/en/html/refname.html"><code class="sgmltag-element">refname</code></a> child. This makes the output
+ inconsistent with HTML and FO output, but for man-page output,
+ it seems to make better sense to have the
+ <code class="literal">NAME</code>. (It may actually make better sense to
+ do it that way in HTML and FO output as well...)</p>
+ </li><li class="listitem">
+ <p>Added support for processing <a href="http://docbook.org/tdg5/en/html/funcparams.html"><code class="sgmltag-element">funcparams</code></a>.</p>
+ </li><li class="listitem">
+ <p>Removed the space that was being output between
+ <a href="http://docbook.org/tdg5/en/html/funcdef.html"><code class="sgmltag-element">funcdef</code></a> and <a href="http://docbook.org/tdg5/en/html/paramdef.html"><code class="sgmltag-element">paramdef</code></a>; example: was:
+ <code class="literal">float rand (void)</code>; now:
+ <code class="literal">float rand(void)</code></p>
+ </li><li class="listitem">
+ <p>Turned off bold formatting for the <a href="http://docbook.org/tdg5/en/html/type.html"><code class="sgmltag-element">type</code></a>
+ element when it occurs within a <a href="http://docbook.org/tdg5/en/html/funcdef.html"><code class="sgmltag-element">funcdef</code></a> or
+ <a href="http://docbook.org/tdg5/en/html/paramdef.html"><code class="sgmltag-element">paramdef</code></a></p>
+ </li><li class="listitem">
+ <p>Corrected rendering of <a href="http://docbook.org/tdg5/en/html/simplelist.html"><code class="sgmltag-element">simplelist</code></a>. Any
+ <code class="literal">&lt;simplelist type="inline"</code> instance
+ is now rendered as a comma-separated list (also with an
+ optional localized <span class="quote">&#8220;<span class="quote">and</span>&#8221;</span> or <span class="quote">&#8220;<span class="quote">or</span>&#8221;</span> before the last item -- see
+ description elsewhere in these release notes). Any simplelist
+ instance whose <code class="sgmltag-attribute">type</code> is not
+ <code class="literal">inline</code> is rendered as a one-column vertical
+ list (ignoring the values of the <code class="sgmltag-attribute">type</code> and <code class="sgmltag-attribute">columns</code> attributes if present)</p>
+ </li><li class="listitem">
+ <p>Comment added at top of roff source for each page now
+ includes DocBook XSL stylesheets version number (as in the
+ HTML stylesheets)</p>
+ </li><li class="listitem">
+ <p>Made change to prevent <span class="quote">&#8220;<span class="quote">sticky</span>&#8221;</span> fonts
+ changes. Now, when the manpages stylesheets encounter node
+ sets that need to be boldfaced or italicized, they put the
+ <code class="literal">\fBfoo\fR</code> and <code class="literal">\fIbar\fR</code>
+ groff bold/italic instructions separately around each node in
+ the set.</p>
+ </li><li class="listitem">
+ <p>synop.xsl: Boldface everything in
+ <a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">funcsynopsis</code></a> output except parameters (which are in
+ ital). The <code class="literal">man(7)</code> man page says:
+ </p><div class="blockquote"><blockquote class="blockquote">
+ <p>For functions, the arguments are always specified
+ using italics, even in the SYNOPSIS section, where the rest
+ of the function is specified in bold.</p>
+ </blockquote></div><p>
+ A look through the contents of the
+ <code class="filename">man/man2</code> directory shows that most
+ (all) existing pages do follow this <span class="quote">&#8220;<span class="quote">everything in
+ funcsynopsis bold</span>&#8221;</span> rule. That means the
+ <a href="http://docbook.org/tdg5/en/html/type.html"><code class="sgmltag-element">type</code></a> content and any punctuation (parens,
+ semicolons, <code class="sgmltag-element">vararg</code>s) also must be bolded.</p>
+ </li><li class="listitem">
+ <p>Removed code for adding backslashes before periods/dots
+ in roff source, because backslashes in front of periods/dots
+ in roff source are needed only in the very rare case where a
+ period is the very first character in a line, without any
+ space in front of it. A better way to deal with that rare case
+ is for you to add a zero-width space in front of the offending
+ dot(s) in your source</p>
+ </li><li class="listitem">
+ <p>Removed special handling of the <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a>
+ element. That was hard-coded to cause anything marked up with
+ the <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a> element to be output preceded by two
+ backticks and followed by two apostrophes -- that is, that
+ old-school kludge for generating <span class="quote">&#8220;<span class="quote">curly</span>&#8221;</span> quotes in Emacs and
+ in X-Windows fonts. While Emacs still seems to support that, I
+ don't think X-Windows has for a long time now. And, anyway, it
+ looks (and has always looked) like crap when viewed on a
+ normal tty/console. In addition, it breaks localiztion of
+ <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a>. By default, <a href="http://docbook.org/tdg5/en/html/quote.html"><code class="sgmltag-element">quote</code></a> content is
+ output with localized quotation marks, which, depending on the
+ locale, may or may not be left and right double quotation
+ marks.</p>
+ </li><li class="listitem">
+ <p>Changed mappings for left and right single quotation
+ marks. Those had previously been incorrectly mapped to the
+ backtick (&amp;#96;) and apostrophe (&amp;39;) characters (for
+ kludgy reasons -- see above). They are now correctly mapped to
+ the <code class="literal">\(oq</code> and <code class="literal">\(cq</code> roff
+ escapes. If you want the old (broken) behavior, you need to
+ manually change the mappings for those in the value of the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.string.subst.map.html"><em class="parameter"><code>man.string.subst.map</code></em></a> parameter.</p>
+ </li><li class="listitem">
+ <p>Removed <code class="filename">xref.xsl</code> file. Now, of the
+ various cross-reference elements, only the <code class="sgmltag-element">ulink</code>
+ element is handled differently; the rest are handled exactly
+ as the HTML stylesheets handle them, except that no hypertext
+ links are generated. (Because there is no equivalent hypertext
+ mechanism is man pages.)</p>
+ </li><li class="listitem">
+ <p>New option for making <span class="quote">&#8220;<span class="quote">subheading dividers</span>&#8221;</span> in generated
+ roff source. The dividers are not visible in the rendered man
+ page; they are just there to make the source
+ readable. Controlled using
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/manpages/man.subheading.divider.html"><em class="parameter"><code>man.subheading.divider</code></em></a>.</p>
+ </li><li class="listitem">
+ <p>Fixed many places where too much space was being added
+ between lines.</p>
+ </li></ul></div>
+
+ </div>
+</div>
+
+
+ <div class="sect1" title="Release 1.68.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1681"></a>Release 1.68.1</h2></div></div></div>
+
+ <p>The release adds localization support for Farsi (thanks to
+ Sina Heshmati) and improved support for the XLink-based DocBook NG
+ <code class="sgmltag-element">db:link</code> element. Other than that, it is a minor
+ bug-fix update to the 1.68.0 release. The main thing it fixes is a
+ build error that caused the XSLT Java extensions to be jarred up
+ with the wrong package structure. Thanks to Jens Stavnstrup for
+ quickly reporting the problem, and to Mauritz Jeanson for
+ investigating and finding the cause.</p>
+ </div>
+
+
+ <div class="sect1" title="Release 1.68.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1680"></a>Release 1.68.0</h2></div></div></div>
+
+ <p>This release includes some features changes, particularly
+ for FO/PDF output, and a number of bug fixes.
+ </p><div class="itemizedlist" title="FO"><a name="V1680_FO"></a><p class="title"><b>FO</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Moved footnote properties to attribute-sets.</p>
+ </li><li class="listitem">
+ <p>Added support for side floats, margin notes, and
+ custom floats.</p>
+ </li><li class="listitem">
+ <p>Added new parameters
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/body.start.indent.html"><em class="parameter"><code>body.start.indent</code></em></a> and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/body.end.indent.html"><em class="parameter"><code>body.end.indent</code></em></a> to the
+ <em class="parameter"><code>set.flow.properties template</code></em>.</p>
+ </li><li class="listitem">
+ <p>Added support for <code class="sgmltag-attribute">xml:id</code></p>
+ </li><li class="listitem">
+ <p>Added support for
+ <a href="http://docbook.org/tdg5/en/html/refdescriptor.html"><code class="sgmltag-element">refdescriptor</code></a>.</p>
+ </li><li class="listitem">
+ <p>Added support for multiple <a href="http://docbook.org/tdg5/en/html/refnamediv.html"><code class="sgmltag-element">refnamediv</code></a>s.</p>
+ </li><li class="listitem">
+ <p>Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/index.entry.properties.html"><em class="parameter"><code>index.entry.properties</code></em></a>
+ attribute-set to support customization of index
+ entries.</p>
+ </li><li class="listitem">
+ <p>Added <em class="parameter"><code>set.flow.properties
+ template</code></em> call to each <code class="sgmltag-element">fo:flow</code>
+ to support customizations entry point.</p>
+ </li><li class="listitem">
+ <p>Add support for <code class="literal">@floatstyle</code> in
+ <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a></p>
+ </li><li class="listitem">
+ <p>Moved hardcoded properties for index division titles
+ to the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/index.div.title.properties.html"><em class="parameter"><code>index.div.title.properties</code></em></a>
+ attribute-set.</p>
+ </li><li class="listitem">
+ <p>Added support for
+ <code class="sgmltag-element">table-layout</code>="<code class="sgmltag-attvalue">auto</code>" for XEP.</p>
+ </li><li class="listitem">
+ <p>Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/index.div.title.properties.html"><em class="parameter"><code>index.div.title.properties</code></em></a>
+ attribute-set.</p>
+ </li><li class="listitem">
+ <p><em class="parameter"><code>$verbose</code></em> parameter is now
+ passed to most elements.</p>
+ </li><li class="listitem">
+ <p>Added <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a> to
+ <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> in <a href="http://docbook.org/tdg5/en/html/part.html"><code class="sgmltag-element">part</code></a>, as it is
+ permitted by the DocBook schema/DTD.</p>
+ </li><li class="listitem">
+ <p>Added backmatter elements and
+ <a href="http://docbook.org/tdg5/en/html/article.html"><code class="sgmltag-element">article</code></a> to <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> in
+ <a href="http://docbook.org/tdg5/en/html/part.html"><code class="sgmltag-element">part</code></a>, since they are permitted by the
+ DocBook schema/DTD.</p>
+ </li><li class="listitem">
+ <p>Added <code class="sgmltag-attribute">mode</code>="<code class="sgmltag-attvalue">toc</code>" for
+ <a href="http://docbook.org/tdg5/en/html/simplesect.html"><code class="sgmltag-element">simplesect</code></a>, since it is now permitted in
+ the <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">toc</code></a> if
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/simplesect.in.toc.html"><em class="parameter"><code>simplesect.in.toc</code></em></a> is set.</p>
+ </li><li class="listitem">
+ <p>Moved hard-coded properties to
+ <em class="parameter"><code>nongraphical.admonintion.properties</code></em>
+ and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/graphical.admonition.properties.html"><em class="parameter"><code>graphical.admonition.properties</code></em></a>
+ attribute sets.</p>
+ </li><li class="listitem">
+ <p>Added support for <code class="literal">sidebar-width</code> and
+ <code class="literal">float-type</code> processing instructions in
+ <a href="http://docbook.org/tdg5/en/html/sidebar.html"><code class="sgmltag-element">sidebar</code></a>.</p>
+ </li><li class="listitem">
+ <p>For tables with HTML markup elements, added support
+ for <code class="literal">dbfo bgcolor</code> PI, the attribute-sets
+ named <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/table.properties.html"><em class="parameter"><code>table.properties</code></em></a>,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/informaltable.properties.html"><em class="parameter"><code>informaltable.properties</code></em></a>,
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/table.table.properties.html"><em class="parameter"><code>table.table.properties</code></em></a>, and
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/table.cell.padding.html"><em class="parameter"><code>table.cell.padding</code></em></a>. Also added
+ support for the templates named
+ <em class="parameter"><code>table.cell.properties</code></em> and
+ <em class="parameter"><code>table.cell.block.properties</code></em> so that
+ tabstyles can be implemented. Also added support for tables
+ containing only <a href="http://docbook.org/tdg5/en/html/tr.html"><code class="sgmltag-element">tr</code></a> instead of
+ <a href="http://docbook.org/tdg5/en/html/tbody.html"><code class="sgmltag-element">tbody</code></a> with <a href="http://docbook.org/tdg5/en/html/tr.html"><code class="sgmltag-element">tr</code></a>.</p>
+ </li><li class="listitem">
+ <p>Added new paramater
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/hyphenate.verbatim.characters.html"><em class="parameter"><code>hyphenate.verbatim.characters</code></em></a> which
+ can specify characters after which a line break can occur in
+ verbatim environments. This parameter can be used to extend
+ the initial set of characters which contain only space and
+ non-breakable space.</p>
+ </li><li class="listitem">
+ <p>Added <em class="parameter"><code>itemizedlist.label.markup</code></em> to enable
+ selection of different bullet symbol. Also added several
+ potential bullet characters, commented out by default.</p>
+ </li><li class="listitem">
+ <p>Enabled all id's in XEP output for external olinking.</p>
+ </li></ul></div><p>
+
+ </p><div class="itemizedlist" title="HTML"><a name="V1680_HTML"></a><p class="title"><b>HTML</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Added support for
+ <a href="http://docbook.org/tdg5/en/html/refdescriptor.html"><code class="sgmltag-element">refdescriptor</code></a>.</p>
+ </li><li class="listitem">
+ <p>Added support for multiple <a href="http://docbook.org/tdg5/en/html/refnamediv.html"><code class="sgmltag-element">refnamediv</code></a>s.</p>
+ </li><li class="listitem">
+ <p>Added support for <code class="sgmltag-attribute">xml:id</code></p>
+ </li><li class="listitem">
+ <p><a href="http://docbook.org/tdg5/en/html/refsynopsisdiv.html"><code class="sgmltag-element">refsynopsisdiv</code></a> as a section for
+ counting section levels</p>
+ </li></ul></div><p>
+ </p><div class="itemizedlist" title="Images"><a name="V1680_images"></a><p class="title"><b>Images</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Added new SVG admonition graphics and navigation images.</p>
+ </li></ul></div><p>
+ </p>
+ </div>
+
+
+ <div class="sect1" title="Release 1.67.2"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1672"></a>Release 1.67.2</h2></div></div></div>
+
+ <p>This release fixes a table bug introduced in the 1.67.1
+ release.</p>
+ </div>
+ <div class="sect1" title="Release 1.67.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1671"></a>Release 1.67.1</h2></div></div></div>
+
+ <p>This release includes a number of bug fixes.</p>
+ <p>The following lists provide details about API and feature changes.
+ </p><div class="itemizedlist" title="FO"><a name="V1671_FO"></a><p class="title"><b>FO</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Tables: Inherited cell properties are now passed to the
+ <code class="literal">table.cell.properties</code> template so they can
+ be overridden by a customization.</p>
+ </li><li class="listitem">
+ <p>Tables: Added support for bgcolor PI on table row
+ element.</p>
+ </li><li class="listitem">
+ <p>TOCs: Added new parameter
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/simplesect.in.toc.html"><em class="parameter"><code>simplesect.in.toc</code></em></a>; default value of
+ <code class="literal">0</code> causes simplesect to be omitted from TOCs; to
+ cause <a href="http://docbook.org/tdg5/en/html/simplesect.html"><code class="sgmltag-element">simplesect</code></a> to be included in TOCs, you
+ must set the value of <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/simplesect.in.toc.html"><em class="parameter"><code>simplesect.in.toc</code></em></a> to
+ <code class="literal">1</code>.Comment from Norm:
+
+ </p><div class="blockquote"><blockquote class="blockquote">
+ <p><span class="emphasis"><em>Simplesect elements aren't supposed to
+ appear in the ToC at all... The use case for simplesect
+ is when, for example, every chapter in a book ends with
+ "Exercises" or "For More Information" sections and you
+ don't want those to appear in the ToC.</em></span></p>
+ </blockquote></div><p>
+ </p>
+ </li><li class="listitem">
+ <p>Sections: Reverted change that caused a variable reference
+ to be used in a template match and rewrote code to preserve
+ intended semantics.</p>
+ </li><li class="listitem">
+ <p>Lists: Added workaround to prevent "* 0.60 + 1em" garbage in
+ list output from PassiveTeX</p>
+ </li><li class="listitem">
+ <p>Moved the literal attributes from
+ <em class="parameter"><code>component.title</code></em> to the
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/component.title.properties.html"><em class="parameter"><code>component.title.properties</code></em></a> attribute-set so
+ they can be customized.</p>
+ </li><li class="listitem">
+ <p>Lists: Added <a href="http://docbook.org/tdg5/en/html/glossdef.html"><code class="sgmltag-element">glossdef</code></a>'s first
+ <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a> to special handling in
+ <code class="literal">fo:list-item-body</code>.</p>
+ </li></ul></div><p>
+
+ </p><div class="itemizedlist" title="HTML"><a name="V1671_HTML"></a><p class="title"><b>HTML</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>TOCs: Added new parameter
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/simplesect.in.toc.html"><em class="parameter"><code>simplesect.in.toc</code></em></a>; for details, see
+ the list of <a class="xref" href="#V1671_FO" title="FO">FO</a> changes for this
+ release.</p>
+ </li><li class="listitem">
+ <p>Indexing: Added new parameter
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.prefer.titleabbrev.html"><em class="parameter"><code>index.prefer.titleabbrev</code></em></a>; when set to
+ <code class="literal">1</code>, index references will use
+ <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> instead of
+ <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> when available.</p>
+ </li></ul></div><p>
+ </p><div class="itemizedlist" title="HTML Help"><a name="V1671_HELP"></a><p class="title"><b>HTML Help</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Added support for generating windows-1252-encoded
+ output using Saxon; for more details, see the list of <a class="xref" href="#V1671_EXT" title="XSL Java extensions">XSL Java extensions</a> changes for this release.</p>
+ </li></ul></div><p>
+ </p><div class="itemizedlist" title="man pages"><a name="V1671_MAN"></a><p class="title"><b>man pages</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Replaced named/numeric character-entity references for
+ non-breaking space with groff equivalent (backslash-tilde).</p>
+ </li></ul></div><p>
+ </p><div class="itemizedlist" title="XSL Java extensions"><a name="V1671_EXT"></a><p class="title"><b>XSL Java extensions</b></p><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>Saxon extensions: Added the
+ <code class="classname">Windows1252</code> class. It extends Saxon
+ 6.5.x with the windows-1252 character set, which is
+ particularly useful when generating HTML Help for Western
+ European Languages (code from
+ <span class="personname"><span class="firstname">Pontus</span> <span class="surname">Haglund</span></span> and contributed to the
+ DocBook community by Sectra AB, Sweden).</p>
+ <p>To use:
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+ <p>Make sure that the Saxon 6.5.x jar file and the jar file for
+ the DocBook XSL Java extensions are in your <code class="envar">CLASSPATH</code></p>
+ </li><li class="listitem">
+ <p>Create a DocBook XSL customization layer -- a file named
+ <code class="filename">mystylesheet.xsl</code> or whatever -- that, at a
+ minimum, contains the following:
+ </p><pre class="screen"> &lt;xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'&gt;
+ &lt;xsl:import href="http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl"/&gt;
+ &lt;xsl:output method="html" encoding="WINDOWS-1252" indent="no"/&gt;
+ &lt;xsl:param name="htmlhelp.encoding" select="'WINDOWS-1252'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="chunker.output.encoding" select="'WINDOWS-1252'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="saxon.character.representation" select="'native'"&gt;&lt;/xsl:param&gt;
+ &lt;/xsl:stylesheet&gt;</pre><p>
+ </p>
+ <p>Invoke Saxon with the
+ <code class="literal">encoding.windows-1252</code> Java system property set
+ to <code class="literal">com.nwalsh.saxon.Windows1252</code>; for example
+ </p><pre class="screen"> java \
+ -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
+ com.icl.saxon.StyleSheet \
+ mydoc.xml mystylesheet.xsl</pre><p>
+
+ Or, for a more complete "real world" case showing other
+ options you'll typically want to use:
+ </p><pre class="screen"> java \
+ -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
+ -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
+ -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
+ -Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl \
+ com.icl.saxon.StyleSheet \
+ -x org.apache.xml.resolver.tools.ResolvingXMLReader \
+ -y org.apache.xml.resolver.tools.ResolvingXMLReader \
+ -r org.apache.xml.resolver.tools.CatalogResolver \
+ mydoc.xml mystylesheet.xsl</pre><p>
+
+ In both cases, the "mystylesheet.xsl" file should be a
+ DocBook customization layer containing the parameters
+ show in step 2.</p>
+ </li></ol></div><p>
+ </p>
+ </li><li class="listitem">
+ <p>Saxon extensions: Removed Saxon 8 extensions from release package</p>
+ </li></ul></div><p>
+ </p>
+ </div>
+<div class="sect1" title="Release 1.67.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1670"></a>Release 1.67.0</h2></div></div></div>
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <p>A number of important bug fixes.</p>
+ </li><li class="listitem">
+ <p>Added Saxon8 extensions</p>
+ </li><li class="listitem">
+ <p>Enabled <code class="literal">dbfo table-width</code> on
+ <a href="http://docbook.org/tdg5/en/html/entrytbl.html"><code class="sgmltag-element">entrytbl</code></a> in FO output</p>
+ </li><li class="listitem">
+ <p>Added support for <code class="literal">role=strong</code> on
+ <a href="http://docbook.org/tdg5/en/html/emphasis.html"><code class="sgmltag-element">emphasis</code></a> in FO output</p>
+ </li><li class="listitem">
+ <p>Added new FO parameter
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/hyphenate.verbatim.html"><em class="parameter"><code>hyphenate.verbatim</code></em></a> that can be used to turn
+ on "intelligent" wrapping of verbatim environments.</p>
+ </li><li class="listitem">
+ <p>Replaced all <code class="literal">&lt;tt&gt;&lt;/tt&gt;</code> output with
+ <code class="literal">&lt;code&gt;&lt;/code&gt;</code></p>
+ </li><li class="listitem">
+ <p>Changed <code class="literal">admon.graphic.width</code> template to a
+ mode so that different admonitions can have different graphical
+ widths.</p>
+ </li><li class="listitem">
+ <p>Deprecated the HTML <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/shade.verbatim.html"><em class="parameter"><code>shade.verbatim</code></em></a>
+ parameter (use CSS instead)</p>
+ </li><li class="listitem">
+ <p>Wrapped ToC
+ <a href="http://docbook.org/tdg5/en/html/refentrytitle.html"><code class="sgmltag-element">refentrytitle</code></a>/<a href="http://docbook.org/tdg5/en/html/refname.html"><code class="sgmltag-element">refname</code></a> and
+ <a href="http://docbook.org/tdg5/en/html/refpurpose.html"><code class="sgmltag-element">refpurpose</code></a> in span with class values. This
+ makes it possible to style them using a CSS stylesheet.</p>
+ </li><li class="listitem">
+ <p>Use <code class="literal">strong/em</code> instead of
+ <code class="literal">b/i</code> in HTML output</p>
+ </li><li class="listitem">
+ <p>Added support for converting <a href="http://docbook.org/tdg5/en/html/emphasis.html"><code class="sgmltag-element">Emphasis</code></a> to
+ groff italic and <a href="http://docbook.org/tdg5/en/html/emphasis.html"><code class="sgmltag-element">Emphasis role='bold'</code></a> to
+ bold. Controlled by
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/emphasis.propagates.style.html"><em class="parameter"><code>emphasis.propagates.style</code></em></a> param, but not
+ documented yet using litprog system. Will do that next (planning
+ to add some other parameter-controllable options for hyphenation
+ and handling of line spacing).</p>
+ </li><li class="listitem">
+ <p><em class="parameter"><code>callout.graphics.number.limit.xml</code></em>
+ param: Changed the default from <code class="literal">10</code> to
+ <code class="literal">15</code>.</p>
+ </li><li class="listitem">
+ <p><a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/verbatim.properties.html"><em class="parameter"><code>verbatim.properties</code></em></a>: Added
+ <code class="literal">hyphenate=false</code></p>
+ </li><li class="listitem">
+ <p>Saxon and Xalan Text.java extensions: Added support for
+ <code class="methodname">URIResolver()</code> on insertfile href's</p>
+ </li><li class="listitem">
+ <p>Added generated <code class="filename">RELEASE-NOTES.txt</code>
+ file.</p>
+ </li><li class="listitem">
+ <p>Added <code class="filename">INSTALL</code> file (executable file for
+ generating catalog.xml)</p>
+ </li><li class="listitem">
+ <p>Removed obsolete <code class="filename">tools</code> directory from
+ package</p>
+ </li></ul></div>
+</div>
+<div class="sect1" title="Release 1.66.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1661"></a>Release 1.66.1</h2></div></div></div>
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>A number of important bug fixes.
+</p>
+</li><li class="listitem">
+<p>
+Now <code class="literal">xml:base</code> attributes that are generated by an
+XInclude processor are resolved for image files.
+</p>
+</li><li class="listitem">
+<p>
+Rewrote olink templates to support several new features.
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+<p>
+Extended full olink support to FO output.
+</p>
+</li><li class="listitem">
+<p>
+Add support for <code class="literal">xrefstyle</code> attribute in olinks.
+</p>
+</li><li class="listitem">
+<p>
+New parameters to support new olink features:
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/insert.olink.page.number.html"><em class="parameter"><code>insert.olink.page.number</code></em></a>, <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/insert.olink.pdf.frag.html"><em class="parameter"><code>insert.olink.pdf.frag</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/olink.debug.html"><em class="parameter"><code>olink.debug</code></em></a>, <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/olink.lang.fallback.sequence.html"><em class="parameter"><code>olink.lang.fallback.sequence</code></em></a>, <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/olink.properties.html"><em class="parameter"><code>olink.properties</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/prefer.internal.olink.html"><em class="parameter"><code>prefer.internal.olink</code></em></a>.
+See the reference page for each parameter for more
+information.</p>
+</li></ul></div>
+</li><li class="listitem">
+<p>
+Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.on.type.html"><em class="parameter"><code>index.on.type</code></em></a> parameter for new <code class="sgmltag-attribute">type</code>
+attribute introduced in DocBook 4.3 for indexterms and index.
+This allows you to create multiple indices containing
+different categories of entries.
+For users of 4.2 and earlier, you can use the new parameter <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/index.on.role.html"><em class="parameter"><code>index.on.role</code></em></a>
+instead.
+</p>
+</li><li class="listitem">
+<p>
+Added new
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/section.autolabel.max.depth.html"><em class="parameter"><code>section.autolabel.max.depth</code></em></a> parameter to turn off section numbering
+below a certain depth.
+This permits you to number major section levels and leave minor
+section levels unnumbered.</p>
+</li><li class="listitem">
+<p>
+Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/footnote.sep.leader.properties.html"><em class="parameter"><code>footnote.sep.leader.properties</code></em></a> attribute set to format
+the line separating footnotes in printed output.
+</p>
+</li><li class="listitem">
+<p>
+Added parameter <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/img.src.path.html"><em class="parameter"><code>img.src.path</code></em></a> as a prefix to HTML img src
+attributes.
+The prefix is added to whatever path is already generated by the
+stylesheet for each image file.</p>
+</li><li class="listitem">
+<p>
+Added new attribute-sets
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/informalequation.properties.html"><em class="parameter"><code>informalequation.properties</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/informalexample.properties.html"><em class="parameter"><code>informalexample.properties</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/informalfigure.properties.html"><em class="parameter"><code>informalfigure.properties</code></em></a>, and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/informaltable.properties.html"><em class="parameter"><code>informaltable.properties</code></em></a>,
+so each such element type can be formatted
+individually if needed.
+</p>
+</li><li class="listitem">
+<p>
+Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/component.label.includes.part.label.html"><em class="parameter"><code>component.label.includes.part.label</code></em></a>
+parameter to add any part number to chapter, appendix
+and other component labels when
+the <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/label.from.part.html"><em class="parameter"><code>label.from.part</code></em></a> parameter is nonzero.
+This permits you to distinguish multiple chapters with the same
+chapter number in cross references and the TOC.</p>
+</li><li class="listitem">
+<p>
+Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chunk.separate.lots.html"><em class="parameter"><code>chunk.separate.lots</code></em></a> parameter for HTML output.
+This parameter lets you generate separate chunk files for each LOT
+(list of tables, list of figures, etc.).</p>
+</li><li class="listitem">
+<p>Added several table features:</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+<p>
+Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/table.table.properties.html"><em class="parameter"><code>table.table.properties</code></em></a> attribute set to add
+properties to the fo:table element.
+</p>
+</li><li class="listitem">
+<p>
+Added placeholder templates named <code class="literal">table.cell.properties</code>
+and <code class="literal">table.cell.block.properties</code> to enable adding properties
+to any <code class="sgmltag-element">fo:table-cell</code> or the cell's <code class="sgmltag-element">fo:block</code>, respectively.
+ These templates are a start for implementing table styles.</p>
+</li></ul></div>
+</li><li class="listitem">
+<p>
+Added new attribute
+set <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/component.title.properties.html"><em class="parameter"><code>component.title.properties</code></em></a> for easy modifications of
+component's title formatting in FO output.
+</p>
+</li><li class="listitem">
+<p>
+Added Saxon support for an <code class="sgmltag-attribute">encoding</code> attribute on the <a href="http://docbook.org/tdg5/en/html/textdata.html"><code class="sgmltag-element">textdata</code></a> element. Added new parameter
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/textdata.default.encoding.html"><em class="parameter"><code>textdata.default.encoding</code></em></a> which specifies encoding when
+<code class="sgmltag-attribute">encoding</code> attribute on
+<a href="http://docbook.org/tdg5/en/html/textdata.html"><code class="sgmltag-element">textdata</code></a> is missing.
+</p>
+</li><li class="listitem">
+<p>
+Template <code class="literal">label.this.section</code> now controls whole
+section label, not only sub-label which corresponds to
+particular label. Former behaviour was IMHO bug as it was
+not usable.
+</p>
+</li><li class="listitem">
+<p>
+Formatting in titleabbrev for TOC and headers
+is preserved when there are no hotlink elements in the title. Formerly the title showed only the text of the title, no font changes or other markup.
+</p>
+</li><li class="listitem">
+<p>
+Added <code class="literal">intial.page.number</code> template to set the <code class="literal">initial-page-number
+property</code> for page sequences in print output.
+Customizing this template lets you change when page numbering restarts. This is similar to the <code class="literal">format.page.number</code> template that lets you change how the page number formatting changes in the output.
+</p>
+</li><li class="listitem">
+<p>
+Added <code class="literal">force.page.count</code> template to set the force-page-count
+property for page sequences in print output.
+This is similar to the <code class="literal">format.page.number</code> template.
+</p>
+</li><li class="listitem">
+<p>
+Sort language for localized index sorting in <code class="filename">autoidx-ng.xsl</code> is now taken from document
+lang, not from system environment.
+</p>
+</li><li class="listitem">
+<p>
+Numbering and formatting of normal
+and ulink footnotes (if turned on) has been unified.
+Now ulink footnotes are mixed in with any other footnotes.</p>
+</li><li class="listitem">
+<p>
+Added support for <code class="sgmltag-element">renderas</code> attribute in section and
+sect1 et al.
+This permits you to render a given section title as if it were a different level.</p>
+</li><li class="listitem">
+<p>
+Added support for <a href="http://docbook.org/tdg5/en/html/label.html"><code class="sgmltag-element">label</code></a> attribute in footnote to manually
+supply the footnote mark.
+</p>
+</li><li class="listitem">
+<p>
+Added support for DocBook 4.3 <code class="sgmltag-element">corpcredit</code> element.
+</p>
+</li><li class="listitem">
+<p>
+Added support for a <code class="literal">dbfo keep-together</code> PI for
+formal objects (table, figure, example, equation, programlisting). That permits a formal object to be kept together if it is not already, or to be broken if it
+is very long and the
+default keep-together is not appropriate.
+</p>
+</li><li class="listitem">
+<p>
+For graphics files, made file extension matching case
+insensitive, and updated the list of graphics extensions.
+</p>
+</li><li class="listitem">
+<p>
+Allow <a href="http://docbook.org/tdg5/en/html/calloutlist.html"><code class="sgmltag-element">calloutlist</code></a> to have block content before
+the first callout
+</p>
+</li><li class="listitem">
+<p>
+Added <code class="literal">dbfo-need</code> processing instruction to provide
+soft page breaks.
+</p>
+</li><li class="listitem">
+<p>
+Added implementation of existing but unused
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/default.image.width.html"><em class="parameter"><code>default.image.width</code></em></a> parameter for graphics.
+</p>
+</li><li class="listitem">
+<p>
+Support DocBook NG <a href="http://docbook.org/tdg5/en/html/tag.html"><code class="sgmltag-element">tag</code></a> inline element.
+</p>
+</li><li class="listitem">
+<p>
+It appears that XEP now supports Unicode characters in
+bookmarks. There is no further need to strip accents from
+characters.
+</p>
+</li><li class="listitem">
+<p>
+Make <a href="http://docbook.org/tdg5/en/html/segmentedlist.html"><code class="sgmltag-element">segmentedlist</code></a> HTML markup
+more semantic and available to CSS styles.
+</p>
+</li><li class="listitem">
+<p>
+Added <code class="literal">user.preroot</code> placeholder template to
+permit xsl-stylesheet and other PIs and comments to be
+output before the HTML root element.
+</p>
+</li><li class="listitem">
+<p>
+Non-chunked legalnotice now gets an &lt;a
+name="id"&gt; element in HTML output
+so it can be referenced with xref or link.
+</p>
+</li><li class="listitem">
+<p>
+In chunked HTML output, changed <code class="literal">link rel="home"</code> to <code class="literal">rel="start"</code>,
+and <code class="literal">link rel="previous"</code> to <code class="literal">rel="prev"</code>, per W3C HTML 4.01
+spec.
+</p>
+</li><li class="listitem">
+<p>
+Added several patches to htmlhelp from W. Borgert
+</p>
+</li><li class="listitem">
+<p>
+Added Bosnian locale file as common/bs.xml.
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.65.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1650"></a>Release 1.65.0</h2></div></div></div>
+
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>A number of important bug fixes.
+</p>
+</li><li class="listitem">
+<p>Added a workaround to allow these stylesheets to process DocBook NG
+documents. (It&#8217;s a hack that pre-processes the document to strip off the
+namespace and then uses <code class="function">exsl:node-set</code> to process
+the result.)
+</p>
+</li><li class="listitem">
+<p>Added alternative indexing mechanism which has better
+internationalization support. New indexing method allows grouping of
+accented letters like e, é, ë into the same group under letter "e". It
+can also treat special letters (e.g. "ch") as one character and place
+them in the correct position (e.g. between "h" and "i" in Czech
+language).</p>
+<p>In order to use this mechanism you must create customization
+layer which imports some base stylesheet (like
+<code class="filename">fo/docbook.xsl</code>,
+<code class="filename">html/chunk.xsl</code>) and then includes appropriate
+stylesheet with new indexing code
+(<code class="filename">fo/autoidx-ng.xsl</code> or
+<code class="filename">html/autoidx-ng.xsl</code>). For example:</p>
+<pre class="programlisting">&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"&gt;
+
+&lt;xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/&gt;
+&lt;xsl:include href="http://docbook.sourceforge.net/release/xsl/current/fo/autoidx-ng.xsl"/&gt;
+
+&lt;/xsl:stylesheet&gt;</pre>
+<p>New method is known to work with Saxon and it should also work
+with xsltproc 1.1.1 and later. Currently supported languages are
+English, Czech, German, French, Spanish and Danish.</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.64.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1641"></a>Release 1.64.1</h2></div></div></div>
+
+<div class="itemizedlist"><p>General bug fixes and improvements. Sorry about the failure to produce
+an updated release notes file for 1.62.0&#8212;1.63.2</p><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>In the course of fixing bug #849787, wrapping Unicode callouts
+with an appropriate font change in the Xalan extensions, I discovered
+that the Xalan APIs have changed a bit. So <code class="filename">xalan2.jar</code>
+will work with older Xalan 2 implementations, <code class="filename">xalan25.jar</code>
+works with Xalan 2.5.</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.61.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1610"></a>Release 1.61.0</h2></div></div></div>
+
+<div class="itemizedlist"><p>Lots of bug fixes and improvements.</p><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Initial support for timestamp PI. From now you
+ can use &lt;?dbtimestamp format="Y-m-d H:M:S"?&gt; to get current
+ datetime in your document. Added localization support for datetime PI
+</p>
+</li><li class="listitem">
+<p>Added level 6 to test for <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> depth in
+section.level template so that
+section.title.level6.properties will be used for sections
+that are 6 deep or deeper. This should also cause a h6 to be
+created in html output.
+</p>
+</li><li class="listitem">
+<p>Don't use SVG graphics if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/use.svg.html"><em class="parameter"><code>use.svg</code></em></a>=0
+</p>
+</li><li class="listitem">
+<p>Now uses number-and-title-template for sections
+ only if <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/section.autolabel.html"><em class="parameter"><code>section.autolabel</code></em></a> is not zero.
+</p>
+</li><li class="listitem">
+<p>Added missing 'english-language-name' attribute to
+the l10n element, and the missing 'style' attribute to the
+template element so the current gentext documents will
+validate.
+</p>
+</li><li class="listitem">
+<p>Corrected several references to parameter
+ <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/qanda.defaultlabel.html"><em class="parameter"><code>qanda.defaultlabel</code></em></a> that were missing the "$".
+</p>
+</li><li class="listitem">
+<p>Now accepts <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/admon.textlabel.html"><em class="parameter"><code>admon.textlabel</code></em></a> parameter to turn off
+ Note, Warning, etc. label.
+</p>
+</li><li class="listitem">
+<p>FeatReq #684561: support more XEP metadata
+</p>
+</li><li class="listitem">
+<p>Added hyphenation support. Added support for <a href="http://docbook.org/tdg5/en/html/coref.html"><code class="sgmltag-element">coref</code></a>.
+Added <code class="sgmltag-element">beginpage</code> support. (does nothing; see TDG).
+</p>
+</li><li class="listitem">
+<p>Added support for
+hyphenation-character, hyphenation-push-character-count, and
+hyphenation-remain-character-count
+</p>
+</li><li class="listitem">
+<p>Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/root.properties.html"><em class="parameter"><code>root.properties</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/ebnf.assignment.html"><em class="parameter"><code>ebnf.assignment</code></em></a>,
+and <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/ebnf.statement.terminator.html"><em class="parameter"><code>ebnf.statement.terminator</code></em></a>
+</p>
+</li><li class="listitem">
+<p>Support bgcolor PI in table cells; make sure
+rowsep and colsep don't have any effect on the last row or
+column
+</p>
+</li><li class="listitem">
+<p>Handle <a href="http://docbook.org/tdg5/en/html/othercredit.html"><code class="sgmltag-element">othercredit</code></a> on titlepage a little
+better
+</p>
+</li><li class="listitem">
+<p>Applied fix from Jeff Beal that fixed the bug
+that put secondary page numbers on primary entries. Same
+with tertiary page numbers on secondary entries.
+</p>
+</li><li class="listitem">
+<p>Added definition of missing variable
+<em class="parameter"><code>collection</code></em>.
+</p>
+</li><li class="listitem">
+<p>Make <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> formatting 'normal' even when it
+occurs in a context that has special formatting
+</p>
+</li><li class="listitem">
+<p>Added warning when <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/glossary.collection.html"><em class="parameter"><code>glossary.collection</code></em></a> is not
+blank, but it cannot open the specified file.
+</p>
+</li><li class="listitem">
+<p>Pick up the frame attribute on <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> and
+<a href="http://docbook.org/tdg5/en/html/informaltable.html"><code class="sgmltag-element">informaltable</code></a>.
+</p>
+</li><li class="listitem">
+<p><a href="http://docbook.org/tdg5/en/html/indexdiv.html"><code class="sgmltag-element">indexdiv</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>
+in non-autogenerated indexes are
+now picked up.
+</p>
+</li><li class="listitem">
+<p>Removed (unused)
+component.title.properties
+</p>
+</li><li class="listitem">
+<p>Move IDs from
+page-sequences down to titlepage blocks
+</p>
+</li><li class="listitem">
+<p>Use
+proportional-column-width(1) on more <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a>s.
+</p>
+<p>Use proportional-column-width() for
+header/footer tables; suppress relative-align when when
+using FOP
+</p>
+</li><li class="listitem">
+<p>Check for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/glossterm.auto.link.html"><em class="parameter"><code>glossterm.auto.link</code></em></a> when linking
+firstterms; don't output gl. prefix on glossterm links
+</p>
+</li><li class="listitem">
+<p>Generate Part ToCs
+</p>
+</li><li class="listitem">
+<p>Support <a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a>, <a href="http://docbook.org/tdg5/en/html/bibliography.html"><code class="sgmltag-element">bibliography</code></a>,
+and <a href="http://docbook.org/tdg5/en/html/index.html"><code class="sgmltag-element">index</code></a> in component ToCs.
+</p>
+</li><li class="listitem">
+<p>Refactored chunking code so that
+customization of chunk algorithm and chunk elements is more
+practical
+</p>
+</li><li class="listitem">
+<p>Support <a href="http://docbook.org/tdg5/en/html/textobject.html"><code class="sgmltag-element">textobject</code></a>/<a href="http://docbook.org/tdg5/en/html/phrase.html"><code class="sgmltag-element">phrase</code></a>
+on <a href="http://docbook.org/tdg5/en/html/inlinemediaobject.html"><code class="sgmltag-element">inlinemediaobject</code></a>.
+</p>
+</li><li class="listitem">
+<p>Support 'start' PI on ordered lists
+</p>
+</li><li class="listitem">
+<p>Fixed test of $toc PI to turn on qandaset TOC.
+</p>
+</li><li class="listitem">
+<p>Added process.chunk.footnotes to sect2 through
+5 to fix bug of missing footnotes when chunk level greater
+than 1.
+</p>
+</li><li class="listitem">
+<p>Added
+paramater <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/toc.max.depth.html"><em class="parameter"><code>toc.max.depth</code></em></a> which controls maximal depth of ToC
+as requested by PHP-DOC group.
+</p>
+</li><li class="listitem">
+<p>Exempted <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> from preamble processing in
+lists, and fixed variablelist preamble code to use the same
+syntax as the other lists.
+</p>
+</li><li class="listitem">
+<p>Added support for elements between variablelist
+and first varlistentry since DocBook 4.2 supports that now.
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.60.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1601"></a>Release 1.60.1</h2></div></div></div>
+
+<div class="itemizedlist"><p>Lots of bug fixes.</p><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>The format of the <code class="filename">titlepage.templates.xml</code> files and
+the stylesheet that transforms them have been significantly changed. All of the
+attributes used to control the templates are now namespace qualified. So what
+used to be:</p>
+<pre class="programlisting">&lt;t:titlepage element="article" wrapper="fo:block"&gt;</pre>
+<p>is now:</p>
+<pre class="programlisting">&lt;t:titlepage t:element="article" t:wrapper="fo:block"&gt;</pre>
+<p>Attributes from other namespaces (including those that are unqualified) are
+now copied directly through. In practice, this means that the names that used
+to be <span class="quote">&#8220;<span class="quote">fo:</span>&#8221;</span> qualified:</p>
+<pre class="programlisting">&lt;title named-template="component.title"
+ param:node="ancestor-or-self::article[1]"
+ fo:text-align="center"
+ fo:keep-with-next="always"
+ fo:font-size="&amp;hsize5;"
+ fo:font-weight="bold"
+ fo:font-family="{$title.font.family}"/&gt;</pre>
+<p>are now unqualified:</p>
+<pre class="programlisting">&lt;title t:named-template="component.title"
+ param:node="ancestor-or-self::article[1]"
+ text-align="center"
+ keep-with-next="always"
+ font-size="&amp;hsize5;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/&gt;</pre>
+<p>The <code class="sgmltag-element">t:titlepage</code> and <code class="sgmltag-element">t:titlepage-content</code>
+elements both generate wrappers now. And unqualified attributes on those elements
+are passed through. This means that you can now make the title font apply to
+ane entire titlepage and make the entire <span class="quote">&#8220;<span class="quote">recto</span>&#8221;</span>
+titlepage centered by specifying the font and alignment on the those elements:</p>
+<pre class="programlisting">&lt;t:titlepage t:element="article" t:wrapper="fo:block"
+ font-family="{$title.font.family}"&gt;
+
+ &lt;t:titlepage-content t:side="recto"
+ text-align="center"&gt;</pre>
+
+
+
+
+
+</li><li class="listitem">
+<p>Support use of <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> in running
+headers and footers.
+</p>
+</li><li class="listitem">
+<p>Added (experimental) <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/xref.with.number.and.title.html"><em class="parameter"><code>xref.with.number.and.title</code></em></a>
+parameter to enable number/title cross references even when the
+default would
+be just the number.
+</p>
+</li><li class="listitem">
+<p>Generate <a href="http://docbook.org/tdg5/en/html/part.html"><code class="sgmltag-element">part</code></a> ToCs if they're requested.
+</p>
+</li><li class="listitem">
+<p>Use proportional-column-width() in header/footer tables.
+</p>
+</li><li class="listitem">
+<p>Handle alignment correctly when <a href="http://docbook.org/tdg5/en/html/screenshot.html"><code class="sgmltag-element">screenshot</code></a>
+wraps a graphic in a <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>.
+</p>
+</li><li class="listitem">
+<p>Format <a href="http://docbook.org/tdg5/en/html/chapter.html"><code class="sgmltag-element">chapter</code></a> and <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a>
+cross references consistently.
+</p>
+</li><li class="listitem">
+<p>Attempt to support tables with multiple <a href="http://docbook.org/tdg5/en/html/tgroup.html"><code class="sgmltag-element">tgroup</code></a>s
+in FO.
+</p>
+</li><li class="listitem">
+<p>Output <code class="sgmltag-element">fo:table-columns</code> in
+<a href="http://docbook.org/tdg5/en/html/simplelist.html"><code class="sgmltag-element">simplelist</code></a> tables.
+</p>
+</li><li class="listitem">
+<p>Use <code class="filename">titlepage.templates.xml</code> for
+<a href="http://docbook.org/tdg5/en/html/indexdiv.html"><code class="sgmltag-element">indexdiv</code></a> and <a href="http://docbook.org/tdg5/en/html/glossdiv.html"><code class="sgmltag-element">glossdiv</code></a> formatting.
+</p>
+</li><li class="listitem">
+<p>Improve support for new bibliography elements.
+</p>
+</li><li class="listitem">
+<p>Added
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/footnote.number.format.html"><em class="parameter"><code>footnote.number.format</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.footnote.number.format.html"><em class="parameter"><code>table.footnote.number.format</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/footnote.number.symbols.html"><em class="parameter"><code>footnote.number.symbols</code></em></a>, and
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.footnote.number.symbols.html"><em class="parameter"><code>table.footnote.number.symbols</code></em></a> for better control of
+footnote markers.
+</p>
+</li><li class="listitem">
+<p>Added <code class="sgmltag-element">glossentry.show.acronyms</code>.
+</p>
+</li><li class="listitem">
+<p>Suppress the draft-mode page masters when
+<em class="parameter"><code>draft-mode</code></em> is <span class="quote">&#8220;<span class="quote">no</span>&#8221;</span>.
+</p>
+</li><li class="listitem">
+<p>Make blank pages verso not recto. D'Oh!
+</p>
+</li><li class="listitem">
+<p>Improved formatting of <code class="sgmltag-element">ulink</code> footnotes.
+</p>
+</li><li class="listitem">
+<p>Fixed bugs in graphic width/height calculations.
+</p>
+</li><li class="listitem">
+<p>Added class attributes to inline elements.
+</p>
+</li><li class="listitem">
+<p>Don't add <span class="quote">&#8220;<span class="quote">.html</span>&#8221;</span> to the filenames identified
+with the <span class="quote">&#8220;<span class="quote">dbhtml</span>&#8221;</span> PI.
+</p>
+</li><li class="listitem">
+<p>Don't force a ToC when sections contain <a href="http://docbook.org/tdg5/en/html/refentry.html"><code class="sgmltag-element">refentry</code></a>s.
+</p>
+</li><li class="listitem">
+<p>Make section title sizes a function of the
+<em class="parameter"><code>body.master.size</code></em>.
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.59.2"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1592"></a>Release 1.59.2</h2></div></div></div>
+
+<div class="itemizedlist"><p>The 1.59.2 fixes an FO bug in the page masters that causes FOP to fail.
+</p><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Removed the region-name from the region-body of blank pages. There's
+no reason to give the body of blank pages a unique name and doing so causes
+a mismatch that FOP detects.
+</p>
+</li><li class="listitem">
+<p>Output IDs for the first paragraphs in listitems.
+</p>
+</li><li class="listitem">
+<p>Fixed some small bugs in the handling of page numbers in double-sided mode.
+</p>
+</li><li class="listitem">
+<p>Attempt to prevent duplicated IDs from being produced when
+<code class="sgmltag-attribute">endterm</code> on <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> points
+to something with nested structure.
+</p>
+</li><li class="listitem">
+<p>Fix aligment problems in <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a>s.
+</p>
+</li><li class="listitem">
+<p>Output the type attribute on unordered lists (UL) in HTML only if
+the css.decoration parameter is true.
+</p>
+</li><li class="listitem">
+<p>Calculate the font size in formal.title.properties so that it's 1.2 times
+the base font size, not a fixed "12pt".
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.59.1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1591"></a>Release 1.59.1</h2></div></div></div>
+
+<div class="itemizedlist"><p>The 1.59.1 fixes a few bugs.
+</p><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Added Bulgarian localization.
+</p>
+</li><li class="listitem">
+<p>Indexing improvements; localize book indexes to books but allow setindex
+to index an entire set.
+</p>
+</li><li class="listitem">
+<p>The default value for rowsep and colsep is now "1" as per CALS.
+</p>
+</li><li class="listitem">
+<p>Added support for <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> (use them for cross
+references).
+</p>
+</li><li class="listitem">
+<p>Improvements to <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a> for selecting print vs. online
+images.
+</p>
+</li><li class="listitem">
+<p>Added seperate property sets for <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>s,
+<a href="http://docbook.org/tdg5/en/html/example.html"><code class="sgmltag-element">example</code></a>s, <a href="http://docbook.org/tdg5/en/html/equation.html"><code class="sgmltag-element">equation</code></a>s, <code class="sgmltag-element">tables</code>s,
+and <a href="http://docbook.org/tdg5/en/html/procedure.html"><code class="sgmltag-element">procedure</code></a>s.
+</p>
+</li><li class="listitem">
+<p>Make <a href="http://docbook.org/tdg5/en/html/lineannotation.html"><code class="sgmltag-element">lineannotation</code></a>s italic.
+</p>
+</li><li class="listitem">
+<p>Support <code class="sgmltag-attribute">xrefstyle</code> attribute.
+</p>
+</li><li class="listitem">
+<p>Make <code class="sgmltag-attribute">endterm</code> on
+<a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a> higher priority than
+<code class="sgmltag-attribute">xreflabel</code> target.
+</p>
+</li><li class="listitem">
+<p>Glossary formatting improvements.
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.58.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1580"></a>Release 1.58.0</h2></div></div></div>
+
+<div class="itemizedlist"><p>The 1.58.0 adds some initial support for extensions in xsltproc, adds
+a few features, and fixes bugs.
+</p><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>This release contains the first attempt at extension support for xsltproc.
+The only extension available to date is the one that adjusts table column widths.
+Run <code class="filename">extensions/xsltproc/python/xslt.py</code>.
+</p>
+</li><li class="listitem">
+<p>Fixed bugs in calculation of adjusted column widths to correct for rounding
+errors.
+</p>
+</li><li class="listitem">
+<p>Support nested <a href="http://docbook.org/tdg5/en/html/refsection.html"><code class="sgmltag-element">refsection</code></a> elements correctly.
+</p>
+</li><li class="listitem">
+<p>Reworked <code class="literal">gentext.template</code> to take context into consideration.
+The name of elements in localization files is now an xpath-like context list, not
+just a simple name.
+</p>
+</li><li class="listitem">
+<p>Made some improvements to bibliography formatting.
+</p>
+</li><li class="listitem">
+<p>Improved graphical formatting of admonitions.
+</p>
+</li><li class="listitem">
+<p>Added support for <a href="http://docbook.org/tdg5/en/html/entrytbl.html"><code class="sgmltag-element">entrytbl</code></a>.
+</p>
+</li><li class="listitem">
+<p>Support spanning index terms.
+</p>
+</li><li class="listitem">
+<p>Support <a href="http://docbook.org/tdg5/en/html/bibliosource.html"><code class="sgmltag-element">bibliosource</code></a>.
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.57.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1570"></a>Release 1.57.0</h2></div></div></div>
+
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>The 1.57.0 release wasn't documented here. Oops.
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Release 1.56.0"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1560"></a>Release 1.56.0</h2></div></div></div>
+
+<div class="itemizedlist"><p>The 1.56.0 release fixes bugs.
+</p><ul class="itemizedlist" type="disc"><li class="listitem">
+<p>Reworked chunking. <span class="emphasis"><em>This will break all existing customizations
+layers that change the chunking algorithm.</em></span> If you're customizing chunking,
+look at the new <span class="quote">&#8220;<span class="quote">content</span>&#8221;</span> parameter that's passed to
+<code class="literal">process-chunk-element</code> and friends.
+</p>
+</li><li class="listitem">
+<p>Support continued and inherited numeration in <a href="http://docbook.org/tdg5/en/html/orderedlist.html"><code class="sgmltag-element">orderedlist</code></a>
+formatting for FOs.
+</p>
+</li><li class="listitem">
+<p>Added Thai localization.
+</p>
+</li><li class="listitem">
+<p>Tweaked stylesheet documentation stylesheets to link to TDG and
+the parameter references.
+</p>
+</li><li class="listitem">
+<p>Allow title on tables of contents ("Table of Contents") to be optional.
+Added new keyword to <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/generate.toc.html"><em class="parameter"><code>generate.toc</code></em></a>.
+Support tables of contents on sections.
+</p>
+</li><li class="listitem">
+<p>Made separate parameters for table borders and table cell borders:
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.frame.border.color.html"><em class="parameter"><code>table.frame.border.color</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.frame.border.style.html"><em class="parameter"><code>table.frame.border.style</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.frame.border.thickness.html"><em class="parameter"><code>table.frame.border.thickness</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.cell.border.color.html"><em class="parameter"><code>table.cell.border.color</code></em></a>,
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.cell.border.style.html"><em class="parameter"><code>table.cell.border.style</code></em></a>, and
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/table.cell.border.thickness.html"><em class="parameter"><code>table.cell.border.thickness</code></em></a>.
+</p>
+</li><li class="listitem">
+<p>Suppress formatting of <span class="quote">&#8220;<span class="quote">endofrange</span>&#8221;</span> <a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a>s.
+This is only half-right. They should generate a range, but I haven't figured out how
+to do that yet.
+</p>
+</li><li class="listitem">
+<p>Support <a href="http://docbook.org/tdg5/en/html/revdescription.html"><code class="sgmltag-element">revdescription</code></a>. (Bug #582192)
+</p>
+</li><li class="listitem">
+<p>Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/default.float.class.html"><em class="parameter"><code>default.float.class</code></em></a> and fixed figure
+floats. (Bug #497603)
+</p>
+</li><li class="listitem">
+<p>Fixed formatting of <a href="http://docbook.org/tdg5/en/html/sbr.html"><code class="sgmltag-element">sbr</code></a> in FOs.
+</p>
+</li><li class="listitem">
+<p>Added context to the <span class="quote">&#8220;<span class="quote">missing template</span>&#8221;</span> error message.
+</p>
+</li><li class="listitem">
+<p>Process <a href="http://docbook.org/tdg5/en/html/arg.html"><code class="sgmltag-element">arg</code></a> correctly in a <a href="http://docbook.org/tdg5/en/html/group.html"><code class="sgmltag-element">group</code></a>.
+(Bug #605150)
+</p>
+</li><li class="listitem">
+<p>Removed 'keep-with-next' from <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/formal.title.properties.html"><em class="parameter"><code>formal.title.properties</code></em></a>
+attribute set now that the stylesheets support the option of putting
+such titles below the object. Now the $placement value determines if
+'keep-with-next' or 'keep-with-previous' is used in the title block.
+</p>
+</li><li class="listitem">
+<p>Wrap <span class="quote">&#8220;<span class="quote">url()</span>&#8221;</span> around external-destinations when appropriate.
+</p>
+</li><li class="listitem">
+<p>Fixed typo in compact list spacing. (Bug #615464)
+</p>
+</li><li class="listitem">
+<p>Removed spurious hash in anchor name. (Bug #617717)
+</p>
+</li><li class="listitem">
+<p>Address is now displayed verbatim on title pages. (Bug #618600)
+</p>
+</li><li class="listitem">
+<p>The <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/bridgehead.in.toc.html"><em class="parameter"><code>bridgehead.in.toc</code></em></a> parameter is now properly
+supported.
+</p>
+</li><li class="listitem">
+<p>Improved effectiveness of HTML cleanup by increasing the number
+of places where it is used. Improve use of HTML cleanup in XHTML stylesheets.
+</p>
+</li><li class="listitem">
+<p>Support table of contents for <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a> in
+<a href="http://docbook.org/tdg5/en/html/article.html"><code class="sgmltag-element">article</code></a>. (Bug #596599)
+</p>
+</li><li class="listitem">
+<p>Don't duplicate footnotes in <a href="http://docbook.org/tdg5/en/html/bibliography.html"><code class="sgmltag-element">bibliography</code></a>s and
+<a href="http://docbook.org/tdg5/en/html/glossary.html"><code class="sgmltag-element">glossary</code></a>s. (Bug #583282)
+</p>
+</li><li class="listitem">
+<p>Added <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/default.image.width.html"><em class="parameter"><code>default.image.width</code></em></a>. (Bug #516859)
+</p>
+</li><li class="listitem">
+<p>Totally reworked <a href="http://docbook.org/tdg5/en/html/funcsynopsis.html"><code class="sgmltag-element">funcsynopsis</code></a> code; it now
+supports a 'tabular' presentation style for 'wide' prototypes; see
+<em class="parameter"><code>funcsynopsis.tabular.threshold</code></em>. (HTML only
+right now, I think, FO support, uh, real soon now.)
+</p>
+</li><li class="listitem">
+<p>Reworked support for difference marking; toned down the colors a bit
+and added a <span class="quote">&#8220;<span class="quote">system.head.content</span>&#8221;</span> template so that the diff CSS
+wasn't overriding <span class="quote">&#8220;<span class="quote">user.head.content</span>&#8221;</span>. (Bug #610660)
+</p>
+</li><li class="listitem">
+<p>Added call to the <span class="quote">&#8220;<span class="quote">*.head.content</span>&#8221;</span> elements when writing
+out long description chunks.
+</p>
+</li><li class="listitem">
+<p>Make sure <a href="http://docbook.org/tdg5/en/html/legalnotice.html"><code class="sgmltag-element">legalnotice</code></a> link is correct even when
+chunking to a different <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a>.
+</p>
+</li><li class="listitem">
+<p>Use CSS to set viewport characteristics if
+<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/css.decoration.html"><em class="parameter"><code>css.decoration</code></em></a> is non-zero, use div instead of p for making
+graphic a block element; make figure <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>s the
+default alt
+text for images in a <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>.</p>
+</li><li class="listitem">
+<p>Added space-after to <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/list.block.spacing.html"><em class="parameter"><code>list.block.spacing</code></em></a>.
+</p>
+</li><li class="listitem">
+<p>Reworked section.level template to give <span class="quote">&#8220;<span class="quote">correct</span>&#8221;</span> answer
+instead of being off by one.
+</p>
+</li><li class="listitem">
+<p>When processing tables, use the <code class="sgmltag-attribute">tabstyle</code>
+attribute as the division class.
+</p>
+</li><li class="listitem">
+<p>Fixed bug in <code class="filename">html2xhtml.xsl</code> that was causing the
+XHTML chunker to output HTML instead of XHTML.
+</p>
+</li></ul></div>
+</div>
+<div class="sect1" title="Older releases"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="VOlder"></a>Older releases</h2></div></div></div>
+
+ <p>To view the release notes for older releases, see <code class="uri"><a class="uri" href="http://cvs.sourceforge.net/viewcvs.py/docbook/xsl/RELEASE-NOTES.xml" target="_top">http://cvs.sourceforge.net/viewcvs.py/docbook/xsl/RELEASE-NOTES.xml</a></code>. Be
+ aware that there were no release notes for releases prior to the
+ 1.50.0 release.</p>
+</div>
+<div class="sect1" title="About dot-zero releases"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="dot0"></a>About dot-zero releases</h2></div></div></div>
+
+ <p>DocBook Project &#8220;dot zero&#8221; releases should be
+ considered <span class="emphasis"><em>experimental</em></span> and are always
+ followed by stable &#8220;dot one plus&#8221; releases, usually within
+ two or three weeks. Please help to ensure the stability of
+ &#8220;dot one plus&#8221; releases by carefully testing each
+ &#8220;dot zero&#8221; release and reporting back about any
+ problems you find. </p>
+ <p>It is not recommended that you use a &#8220;dot zero&#8221;
+ release in a production system. Instead, you should wait for
+ the &#8220;dot one&#8221; or greater versions.</p>
+ </div>
+</div></body></html>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt
new file mode 100644
index 0000000..65e1d86
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt
@@ -0,0 +1,8575 @@
+Release Notes for the DocBook XSL Stylesheets
+
+$Revision: 8934 $ $Date: 2010-11-01 13:03:14 -0700 (Mon, 01 Nov 2010) $
+
+2010-11-01
+
+This release-notes document is available in the following formats: HTML, PDF,
+plain text; it provides a per-release list of enhancements and changes to the
+stylesheets’ public APIs (user-configurable parameters) and excludes
+descriptions of most bug fixes. For a complete list of all changes (including
+all bug fixes) that have been made since the previous release, see the separate
+NEWS (plain text) or NEWS.html files. Also available: An online hyperlinked
+change history (warning: big file) of all changes made over the entire history
+of the codebase.
+
+As with all DocBook Project “dot one plus†releases, this release aspires to be
+stable (in contrast to dot-zero releases, which are experimental).
+
+â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
+
+Table of Contents
+
+Release Notes: 1.76.1
+
+ FO
+ HTML
+ Params
+
+Release Notes: 1.76.0
+
+ Gentext
+ Common
+ FO
+ HTML
+ Manpages
+ Epub
+ Eclipse
+ Params
+ XSL-Xalan
+
+Release Notes: 1.75.2
+
+ Gentext
+ Common
+ FO
+ HTML
+ Manpages
+ Epub
+ Profiling
+ XSL-Saxon
+ XSL-Xalan
+
+Release Notes: 1.75.1
+
+ FO
+ HTML
+ Epub
+ Params
+
+Release Notes: 1.75.0
+
+ Gentext
+ Common
+ FO
+ HTML
+ Manpages
+ ePub
+ HTMLHelp
+ Params
+ Highlighting
+ XSL-Saxon
+ XSL-Xalan
+
+Release Notes: 1.74.3
+Release Notes: 1.74.2
+Release Notes: 1.74.1
+
+ Gentext
+ FO
+ HTML
+ Manpages
+ ePub
+ Roundtrip
+ Params
+ Highlighting
+
+Release Notes: 1.74.0
+
+ Gentext
+ Common
+ FO
+ HTML
+ Manpages
+ Epub
+ HTMLHelp
+ Eclipse
+ JavaHelp
+ Roundtrip
+ Slides
+ Website
+ Params
+ Profiling
+ Tools
+ Extensions
+ XSL-Saxon
+ XSL-Xalan
+ XSL-libxslt
+
+Release Notes: 1.73.2
+Release: 1.73.1
+
+ Gentext
+ FO
+ HTML
+ Manpages
+ HTMLHelp
+ Eclipse
+ JavaHelp
+ Roundtrip
+ Params
+
+Release: 1.73.0
+
+ Gentext
+ Common
+ FO
+ HTML
+ Manpages
+ Eclipse
+ JavaHelp
+ Roundtrip
+ Params
+ Highlighting
+ Profiling
+ Lib
+ Tools
+ XSL-Saxon
+ XSL-Xalan
+
+Release: 1.72.0
+
+ Common
+ FO
+ HTML
+ Manpages
+ Params
+ Template
+ Roundtrip
+
+Release: 1.71.1
+
+ Common
+ FO
+ HTML
+ Highlighting
+ Manpages
+ Params
+ Profiling
+
+Release: 1.71.0
+
+ Common
+ Extensions
+ FO
+ HTML
+ Highlighting
+ Manpages
+ Params
+ Tools
+
+Release: 1.70.1
+
+ FO
+ HTML
+ HTMLHelp
+ Params
+
+Release: 1.70.0
+
+ Common
+ Extensions
+ FO
+ HTML
+ Manpages
+ Params
+ Profiling
+ Tools
+ WordML
+
+Release 1.69.1
+Release 1.69.0
+
+ Common
+ FO
+ Help
+ HTML
+ man
+
+Release 1.68.1
+Release 1.68.0
+Release 1.67.2
+Release 1.67.1
+Release 1.67.0
+Release 1.66.1
+Release 1.65.0
+Release 1.64.1
+Release 1.61.0
+Release 1.60.1
+Release 1.59.2
+Release 1.59.1
+Release 1.58.0
+Release 1.57.0
+Release 1.56.0
+Older releases
+About dot-zero releases
+
+Release Notes: 1.76.1
+
+The following is a list of changes that have been made since the 1.76.0
+release.
+
+FO
+
+The following changes have been made to the fo code since the 1.76.0 release.
+
+ â— Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl
+
+ Apply patch to support named destination in fop1.xsl, per Sourceforge
+ bug report #3029845.
+
+HTML
+
+The following changes have been made to the html code since the 1.76.0 release.
+
+ â— Keith Fahlgren: highlight.xsl
+
+ Implementing handling for <b> and <i>: transform to <strong> and <em> for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)
+
+Params
+
+The following changes have been made to the params code since the 1.76.0
+release.
+
+ â— Robert Stayton: draft.mode.xml
+
+ Change default for draft.mode to 'no'.
+
+Release Notes: 1.76.0
+
+This release includes important bug fixes and adds the following significant
+feature changes:
+
+Webhelp
+
+ A new browser-based, cross-platform help format with full-text search and
+ other features typically found in help systems. See webhelp/docs/content/
+ ch01.html for more information and a demo.
+
+Gentext
+
+ Many updates and additions to translation/locales thanks to Red Hat, the
+ Fedora Project, and other contributors.
+
+Common
+
+ Faster localization support, as language files are loaded on demand.
+
+FO
+
+ Support for SVG content in imagedata added.
+
+HTML
+
+ Output improved when using 'make.clean.html' and a stock CSS file is now
+ provided.
+
+EPUB
+
+ A number of improvements to NCX, cover and image selection, and XHTML 1.1
+ element choices
+
+The following is a list of changes that have been made since the 1.75.2
+release.
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.75.2
+release.
+
+ â— rlandmann: locale/fa.xml
+
+ Update to Persian translation from the Fedora Project
+
+
+ â— rlandmann: locale/nds.xml
+
+ Locale for Low German
+
+
+ â— Mauritz Jeanson: locale/ka.xml; Makefile
+
+ Added support for Georgian based on patch #2917147.
+
+
+ â— rlandmann: locale/nl.xml; locale/ja.xml
+
+ Updated translations from Red Hat and the Fedora Project
+
+
+ â— rlandmann: locale/bs.xml; locale/ru.xml; locale/hr.xml
+
+ Updated locales from Red Hat and the Fedora Project
+
+
+ â— rlandmann: locale/pt.xml; locale/cs.xml; locale/es.xml; locale/bg.xml;
+ locale/nl.xml; loca⋯
+
+ Updated translations from Red Hat and the Fedora Project
+
+
+ â— rlandmann: locale/as.xml; locale/bn_IN.xml; locale/ast.xml; locale/ml.xml;
+ locale/te.xml; ⋯
+
+ New translations from Red Hat and the Fedora Project
+
+
+ â— rlandmann: locale/pt.xml; locale/ca.xml; locale/da.xml; locale/sr.xml;
+ locale/ru.xml; loca⋯
+
+ Updated translations from Red Hat and the Fedora Project
+
+
+Common
+
+The following changes have been made to the common code since the 1.75.2
+release.
+
+ â— Mauritz Jeanson: common.xsl
+
+ Fixed bug in output-orderedlist-starting-number template (@startingnumber did not work for FO).
+
+
+ â— Mauritz Jeanson: gentext.xsl
+
+ Added fix to catch ID also of descendants of listitem. Closes bug #2955077.
+
+
+ â— Jirka Kosek: l10n.xsl
+
+ Stripped down, faster version of gentext.template is used when there is no localization customization.
+
+
+ â— Mauritz Jeanson: stripns.xsl
+
+ Added fix that preserves link/@role (makes links in the reference documentation
+ with @role="tcg" work).
+
+
+ â— Mauritz Jeanson: l10n.xsl
+
+ Fixed bugs related to manpages and L10n.
+
+
+ â— Jirka Kosek: entities.ent; autoidx-kosek.xsl
+
+ Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
+
+
+ â— Jirka Kosek: l10n.xsl; l10n.dtd; l10n.xml; autoidx-kosek.xsl
+
+ Refactored localization support. Language files are loaded on demand. Speedup is about 30%.
+
+
+ â— Jirka Kosek: l10n.xsl
+
+ Added xsl:keys for improved performance of localization texts look up. Performance gain around 15%.
+
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Fixed bug #2912677 (error with xref in title).
+
+
+ â— Robert Stayton: olink.xsl
+
+ Fix bug in xrefstyle "title" handling introduced with
+ the 'insert.targetdb.data' template.
+
+
+ â— Robert Stayton: gentext.xsl
+
+ Fix bug in xref to equation without title to use context="xref-number" instead
+ of "xref-number-and-title".
+
+
+ â— Robert Stayton: labels.xsl
+
+ Number all equations in one sequence, with or without title.
+
+
+ â— Robert Stayton: entities.ent
+
+ Fix bug #2896909 where duplicate @sortas on indexterms caused
+ some indexterms to drop out of index.
+
+
+ â— Robert Stayton: stripns.xsl
+
+ Expand the "Stripping namespace ..." message to advise users to
+ use the namespaced stylesheets.
+
+
+ â— Robert Stayton: stripns.xsl
+
+ need a local version of $exsl.node.set.available variable because
+ this module imported many places.
+
+
+ â— Mauritz Jeanson: olink.xsl
+
+ Added /node() to the select expression that is used to compute the title text
+ so that no <ttl> elements end up in the output. Closes bug #2830119.
+
+
+FO
+
+The following changes have been made to the fo code since the 1.75.2 release.
+
+ â— Robert Stayton: table.xsl
+
+ Fix bug 2979166 able - Attribute @rowheader not working
+
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents
+ with many inline glossterms.
+
+
+ â— Robert Stayton: titlepage.xsl
+
+ Fix bug 2805530 author/orgname not appearing on title page.
+
+
+ â— Mauritz Jeanson: graphics.xsl
+
+ Added support for SVG content in imagedata (inspired by patch #2909154).
+
+
+ â— Mauritz Jeanson: table.xsl
+
+ Removed superfluous test used when computing column-width. Closes bug #3000898.
+
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Added missing <xsl:call-template name="anchor"/>. Closes bug #2998567.
+
+
+ â— Mauritz Jeanson: lists.xsl
+
+ Added table-layout="fixed" on segmentedlist table (required by XSL spec when proportional-column-width() is used).
+
+
+ â— Jirka Kosek: autoidx-kosek.xsl
+
+ Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
+
+
+ â— Jirka Kosek: index.xsl
+
+ Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
+
+
+ â— Robert Stayton: xref.xsl
+
+ Fix bug in olink template when an olink has an id.
+ Add warning message with id value when trying to link
+ to an element that has no generated text.
+
+
+ â— Mauritz Jeanson: refentry.xsl
+
+ Fixed bug #2930968 (indexterm in refmeta not handled correctly).
+
+
+ â— Robert Stayton: block.xsl
+
+ fix bug 2949567 title in revhistory breaks FO transform.
+
+
+ â— Robert Stayton: glossary.xsl
+
+ Output id attributes on glossdiv blocks so they can be added to
+ xrefs or TOC.
+
+
+ â— Jirka Kosek: xref.xsl
+
+ Enabled hyphenation of URLs when ulink content is the same as link target
+
+
+ â— Robert Stayton: table.xsl
+
+ Apply patch to turn off row recursion if no @morerows attributes present.
+ This will enable very large tables without row spanning to
+ process without running into recursion limits.
+
+
+ â— Robert Stayton: formal.xsl
+
+ Format equation without title using table layout with equation number
+ next to the equation.
+
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add equation.number.properties.
+
+
+HTML
+
+The following changes have been made to the html code since the 1.75.2 release.
+
+ â— Mauritz Jeanson: block.xsl
+
+ Modified acknowledgements template to avoid invalid output (<p> in <p>).
+
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Added default sidebar attribute-sets.
+
+
+ â— Robert Stayton: table.xsl
+
+ Fix bug 2979166 able - Attribute @rowheader not working
+
+
+ â— Robert Stayton: footnote.xsl
+
+ Fix bug 3033191 footnotes in html tables.
+
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents
+ with many inline glossterms.
+
+
+ â— Robert Stayton: docbook.css.xml; verbatim.xsl
+
+ Fix bug 2844927 Validity error for callout bugs.
+
+
+ â— Robert Stayton: formal.xsl
+
+ Convert formal.object.heading to respect make.clean.html param.
+
+
+ â— Robert Stayton: titlepage.templates.xml; block.xsl
+
+ Fix bug 2840768 sidebar without title inserts empty b tag.
+
+
+ â— Mauritz Jeanson: docbook.xsl
+
+ Moved the template that outputs <base> so that the base URI also applies to relative CSS paths that come later.
+ See patch #2896121.
+
+
+ â— Jirka Kosek: autoidx-kosek.xsl
+
+ Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
+
+
+ â— Robert Stayton: chunk-code.xsl
+
+ fix bug 2948363 generated filename for refentry not unique, when
+ used in a set.
+
+
+ â— Robert Stayton: component.xsl
+
+ Fix missing "Chapter n" label when use chapter/info/title.
+
+
+ â— Robert Stayton: table.xsl
+
+ Row recursion turned off if no @morerows attributes in the table.
+ This will prevent failure on long table (with no @morerows) due
+ to excessive depth of recursion.
+
+
+ â— Robert Stayton: autotoc.xsl; docbook.css.xml
+
+ Support make.clean.html in autotoc.xsl.
+
+
+ â— Robert Stayton: docbook.css.xml; block.xsl
+
+ Add support for make.clean.html setting in block elements.
+
+
+ â— Robert Stayton: docbook.css.xml
+
+ Stock CSS styles for DocBook HTML output when 'make.clean.html' is non-zero.
+
+
+ â— Robert Stayton: html.xsl
+
+ Add templates for generating CSS files and links to them.
+
+
+ â— Robert Stayton: param.xweb
+
+ Fix bugs in new entity references.
+
+
+ â— Robert Stayton: chunk-common.xsl
+
+ List of Equations now includes on equations with titles.
+
+
+ â— Robert Stayton: table.xsl
+
+ If a colspec has a colname attribute, add it to the HTML col
+ element as a class attribute so it can be styled.
+
+
+ â— Robert Stayton: formal.xsl
+
+ Fix bug 2825842 where table footnotes not appearing in HTML-coded table.
+
+
+ â— Robert Stayton: chunktoc.xsl
+
+ Fix bug #2834826 where appendix inside part was not chunked as it should be.
+
+
+ â— Mauritz Jeanson: chunktoc.xsl
+
+ Added missing namespace declarations. Closes bug #2890069.
+
+
+ â— Mauritz Jeanson: footnote.xsl
+
+ Updated the template for footnote paras to use the 'paragraph' template. Closes bug #2803739.
+
+
+ â— Keith Fahlgren: inline.xsl; lists.xsl
+
+ Remove <b> and <i> elements "discouraged in favor of style sheets" from
+ XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+ Fixes bug #2873153: No <b> and <i> tags in XHTML/EPUB
+
+ Added regression to EPUB specs:
+
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Fixed bug #2844916 (don't output @target if ulink.target is empty).
+
+
+ â— Keith Fahlgren: autoidx.xsl
+
+ Fix a bug when using index.on.type: an 'index symbols' section was created
+ even if that typed index didn't include any symbols (they were in the other types).
+
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.75.2
+release.
+
+ â— Mauritz Jeanson: other.xsl
+
+ Modified the write.stubs template so that the section directory name is not output twice. Should fix bug #2831602.
+ Also ensured that $lang is added to the .so path (when man.output.lang.in.name.enabled=1).
+
+
+ â— Mauritz Jeanson: docbook.xsl; other.xsl
+
+ Fixed bug #2412738 (apostrophe escaping) by applying the submitted patch.
+
+
+ â— Norman Walsh: block.xsl; endnotes.xsl
+
+ Fix bug where simpara in footnote didn't work. Patch by Jonathan Nieder, jrnieder@gmail.com
+
+
+ â— dleidert: lists.xsl
+
+ Fix two indentation issues: In the first case there is no corresponding .RS
+ macro (Debian #519438, sf.net 2793873). In the second case an .RS instead of
+ the probably intended .sp leads to an indentation bug (Debian #527309,
+ sf.net #2642139).
+
+
+Epub
+
+The following changes have been made to the epub code since the 1.75.2 release.
+
+ â— Keith Fahlgren: bin/spec/examples/AMasqueOfDays.epub; docbook.xsl; bin/spec
+ /epub_spec.rb
+
+ Resolve some actual regressions in date output spotted by more recent versions of epubcheck
+
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Updated mediaobject selection code that better uses roles (when available); based on contributons by Glenn McDonald
+
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl
+
+ Ensure that NCX documents are always outputted with a default namespace
+ to prevent problems with the kindlegen machinery
+
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/
+ partintro.xml; docbook.x⋯
+
+ Adding support for partintros with sect2s, 3s, etc
+
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Adding param to workaround horrific ADE bug with the inability to process <br>
+
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Add support for authorgroup/author in OPF metadata (via Michael Wiedmann)
+
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb
+
+ Remove <b> and <i> elements "discouraged in favor of style sheets" from
+ XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+ Fixes bug #2873153: No <b> and <i> tags in XHTML/EPUB
+
+ Added regression to EPUB specs:
+
+
+ â— Keith Fahlgren: bin/lib/docbook.rb; bin/spec/files/DejaVuSerif-Italic.otf;
+ docbook.xsl; bi⋯
+
+ This resolves bug #2873142, Please add support for multiple embedded fonts
+
+
+ If you navigate to a checkout of DocBook-XSL and go to:
+ xsl/epub/bin/spec/files
+ You can now run the following command:
+
+ ../../dbtoepub -f DejaVuSerif.otf -f DejaVuSerif-Italic.otf -c test.css
+ -s test_cust.xsl orm.book.001.xml
+
+ In dbtoepub, the following option can be used more than once:
+ -f, --font [OTF FILE] Embed OTF FILE in .epub.
+
+ The underlying stylesheet now accepts a comma-separated list of font file
+ names rather than just one as the RENAMED epub.embedded.fonts ('s' added).
+
+ The runnable EPUB spec now includes:
+ - should be valid .epub after including more than one embedded font
+
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Improve the selection of cover images when working in DocBook 4.x land (work in progress)
+
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl
+
+ Improve the quality of the OPF spine regression by ensuring that the spine
+ elements for deeply nested refentries are in order and adjacent to their
+ opening wrapper XHTML chunk.
+
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/
+ files/orm.book.00⋯
+
+ Add more careful handling of refentries to ensure that they always appear in the opf:spine.
+ This was only a problem when refentries were pushed deep into the hierarchy (like inside
+ a sect2), but presented navigational problems for many reading systems (despite the
+ correct NCX references). This may *not* be the best solution, but attacking a better
+ chunking strategy for refentries was too big a nut to crack at this time.
+
+
+Eclipse
+
+The following changes have been made to the eclipse code since the 1.75.2
+release.
+
+ â— Mauritz Jeanson: eclipse3.xsl
+
+ Added a stylesheet module that generates plug-ins conforming to the standard (OSGi-based) Eclipse 3.x
+ architecture. The main difference to the older format is that metadata is stored in a separate
+ manifest file. The module imports and extends the existing eclipse.xsl module. Based on code
+ contributed in patch #2624668.
+
+
+Params
+
+The following changes have been made to the params code since the 1.75.2
+release.
+
+ â— Robert Stayton: draft.watermark.image.xml
+
+ Fix bug 2922488 draft.watermark.image pointing to web resource.
+ Now the value is images/draft.png, and may require customization
+ for local resolution.
+
+
+ â— Mauritz Jeanson: equation.number.properties.xml
+
+ Corrected refpurpose.
+
+
+ â— Norman Walsh: paper.type.xml
+
+ Added USlegal and USlegallandscape paper types.
+
+
+ â— Jirka Kosek: highlight.xslthl.config.xml
+
+ Added note about specifying location as URL
+
+
+ â— Robert Stayton: docbook.css.source.xml; generate.css.header.xml;
+ custom.css.source.xml; ma⋯
+
+ Params to support generated CSS files.
+
+
+ â— Robert Stayton: equation.number.properties.xml
+
+ New attribute set for numbers appearing next to equations.
+
+
+XSL-Xalan
+
+The following changes have been made to the xsl-xalan code since the 1.75.2
+release.
+
+ â— dleidert: nbproject/genfiles.properties; nbproject/build-impl.xml
+
+ Rebuild netbeans build files after adding missing Netbeans configuration to allow easier packaging for Debian.
+
+
+Release Notes: 1.75.2
+
+The following is a list of changes that have been made since the 1.75.1
+release.
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.75.1
+release.
+
+ â— dleidert: locale/ja.xml
+
+ Improved Japanese translation for Note(s). Closes bug #2823965.
+
+ â— dleidert: locale/pl.xml
+
+ Polish alphabet contains O with acute accent, not with grave accent. Closes bug #2823964.
+
+ â— Robert Stayton: locale/ja.xml
+
+ Fix translation of "index", per bug report 2796064.
+
+ â— Robert Stayton: locale/is.xml
+
+ New Icelandic locale file.
+
+Common
+
+The following changes have been made to the common code since the 1.75.1
+release.
+
+ â— Norman Walsh: stripns.xsl
+
+ Support more downconvert cases
+
+ â— Robert Stayton: titles.xsl
+
+ Make sure title inside info is used if no other title.
+
+FO
+
+The following changes have been made to the fo code since the 1.75.1 release.
+
+ â— Robert Stayton: pi.xsl
+
+ Turn off dbfo-need for fop1.extensions also, per bug #2816141.
+
+HTML
+
+The following changes have been made to the html code since the 1.75.1 release.
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Output "Copyright" heading in XHTML too.
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Added stylesheet.result.type test for copyright. Closes bug #2813289.
+
+ â— Norman Walsh: htmltbl.xsl
+
+ Remove ambiguity wrt @span, @rowspan, and @colspan
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.75.1
+release.
+
+ â— Mauritz Jeanson: endnotes.xsl
+
+ Added normalize-space() for ulink content. Closes bug #2793877.
+
+ â— Mauritz Jeanson: docbook.xsl
+
+ Added stylesheet.result.type test for copyright. Closes bug #2813289.
+
+Epub
+
+The following changes have been made to the epub code since the 1.75.1 release.
+
+ â— Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb
+
+ Corrected bugs caused by path and file assumptions were not met
+
+ â— Keith Fahlgren: bin/lib/docbook.rb; docbook.xsl
+
+ Cleaning up hardcoded values into parameters and fixing Ruby library to pass them properly; all thanks to patch from Liza Daly
+
+Profiling
+
+The following changes have been made to the profiling code since the 1.75.1
+release.
+
+ â— Robert Stayton: profile.xsl
+
+ Fix bug 2815493 missing exsl.node.set.available parameter.
+
+XSL-Saxon
+
+The following changes have been made to the xsl-saxon code since the 1.75.1
+release.
+
+ â— Mauritz Jeanson: src/com/nwalsh/saxon/ColumnUpdateEmitter.java; src/com/
+ nwalsh/saxon/Colum⋯
+
+ Added fixes so that colgroups in the XHTML namespace are processed properly.
+
+XSL-Xalan
+
+The following changes have been made to the xsl-xalan code since the 1.75.1
+release.
+
+ â— Mauritz Jeanson: nbproject/project.xml
+
+ Added missing NetBeans configuration.
+
+Release Notes: 1.75.1
+
+This release includes bug fixes.
+
+The following is a list of changes that have been made since the 1.75.0
+release.
+
+FO
+
+The following changes have been made to the fo code since the 1.75.0 release.
+
+ â— Keith Fahlgren: block.xsl
+
+ Switching to em dash for character before attribution in epigraph; resolves Bug #2793878
+
+ â— Robert Stayton: lists.xsl
+
+ Fixed bug 2789947, id attribute missing on simplelist fo output.
+
+HTML
+
+The following changes have been made to the html code since the 1.75.0 release.
+
+ â— Keith Fahlgren: block.xsl
+
+ Switching to em dash for character before attribution in epigraph; resolves Bug #2793878
+
+ â— Robert Stayton: lists.xsl
+
+ Fixed bug 2789678: apply-templates line accidentally deleted.
+
+Epub
+
+The following changes have been made to the epub code since the 1.75.0 release.
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl
+
+ Added regression and fix to correct "bug" with namespace-prefixed container elements in META-INF/container.xml ; resolves Issue #2790017
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/
+ onegraphic.xinclude.xml;⋯
+
+ Another attempt at flexible named entity and XInclude processing
+
+ â— Keith Fahlgren: bin/lib/docbook.rb
+
+ Tweaking solution to Bug #2750442 following regression reported by Michael Wiedmann.
+
+Params
+
+The following changes have been made to the params code since the 1.75.0
+release.
+
+ â— Mauritz Jeanson: highlight.source.xml
+
+ Updated documentation to reflect changes made in r8419.
+
+Release Notes: 1.75.0
+
+This release includes important bug fixes and adds the following significant
+feature changes:
+
+Gentext
+
+ Modifications to translations have been made.
+
+Common
+
+ Added support for some format properties on tables using HTML table markup.
+
+ Added two new qanda.defaultlabel values so that numbered sections and
+ numbered questions can be distinguished. Satisfies Feature Request #
+ 1539045.
+
+ Added code to handle acknowledgements in book and part. The element is
+ processed similarly to dedication. All acknowledgements will appear as
+ front matter, after any dedications.
+
+FO
+
+ The inclusion of highlighting code has been simplified.
+
+ Add support for pgwide on informal objects.
+
+ Added a new parameter, bookmarks.collapse, that controls the initial state
+ of the bookmark tree. Closes FR #1792326.
+
+ Add support for more dbfo processing instructions.
+
+ Add new variablelist.term.properties to format terms, per request #
+ 1968513.
+
+ Add support for @width on screen and programlisting, fixes bug #2012736.
+
+ Add support for writing-mode="rl-tb" (right-to-left) in FO outputs.
+
+ Add writing.mode param for FO output.
+
+HTML
+
+ Convert all calls to class.attribute to calls to common.html.attributes to
+ support dir, lang, and title attributes in html output for all elements.
+ Fulfills feature request #1993833.
+
+ Inclusion of highlighting code was simplified. Only one import is now
+ necessary.
+
+ Add new param index.links.to.section.
+
+ Add support for the new index.links.to.section param which permits precise
+ links to indexterms in HTML output rather than to the section title.
+
+ePub
+
+ Slightly more nuanced handling of imageobject alternatives and better
+ support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442
+ reported by Raphael Hertzog.
+
+ Added a colon after an abstract/title when mapping into the dc:description
+ for OPF metadata in ePub output to help the flat text have more
+ pseudo-semantics (sugestions from Michael Wiedmann)
+
+ Added DocBook subjectset -> OPF dc:subject mapping and tests
+
+ Added DocBook date -> OPF dc:date mapping and tests
+
+ Added DocBook abstract -> OPF dc:description mapping and tests
+
+ Added --output option to dbtoepub based on user request
+
+HTMLHelp
+
+ Add support for generating olink target database for htmlhelp files.
+
+Params
+
+ Add default setting for @rules attribute on HTML markup tables.
+
+ Added a new parameter, bookmarks.collapse, that controls the initial state
+ of the bookmark tree. When the parameter has a non-zero value (the
+ default), only the top-level bookmarks are displayed initially. Otherwise,
+ the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X.
+ Closes FR #1792326.
+
+ Add new variablelist.term.properties to format terms, per request #
+ 1968513.
+
+ Add two new qanda.defaultlabel values so that numbered sections and
+ numbered questions can be distinguished. Satisfies Feature Request #
+ 1539045.
+
+ Add param to control whether an index entry links to a section title or to
+ the precise location of the indexterm.
+
+ New attribute list for glossentry in glossary.
+
+ New parameter to support @width on programlisting and screen.
+
+ Add attribute-sets for formatting glossary terms and defs.
+
+Highlighting
+
+ Inclusion of highlighting code was simplified. Only one import is now
+ necessary.
+
+The following is a list of changes that have been made since the 1.74.3
+release.
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.74.3
+release.
+
+ â— Robert Stayton: locale/sv.xml; locale/ja.xml; locale/pl.xml
+
+ Check in translations of Legalnotice submitted on mailing list.
+
+ â— Robert Stayton: locale/es.xml
+
+ Fix spelling errors in Acknowledgements entries.
+
+ â— Robert Stayton: locale/es.xml
+
+ Check in translations for 4 elements submitted through docbook-apps
+ message of 14 April 2009.
+
+ â— David Cramer: locale/zh.xml; locale/ca.xml; locale/ru.xml; locale/ga.xml;
+ locale/gl.xml; l⋯
+
+ Internationalized punctuation in glosssee and glossseealso
+
+ â— Robert Stayton: Makefile
+
+ Check in fixes for DSSSL gentext targets from submitted patch #1689633.
+
+ â— Robert Stayton: locale/uk.xml
+
+ Check in major update submitted with bug report #2008524.
+
+ â— Robert Stayton: locale/zh_tw.xml
+
+ Check in fix to Note string submitted in bug #2441051.
+
+ â— Robert Stayton: locale/ru.xml
+
+ Checkin typo fix submitted in bug #2453406.
+
+Common
+
+The following changes have been made to the common code since the 1.74.3
+release.
+
+ â— Robert Stayton: gentext.xsl
+
+ Fix extra generated space when xrefstyle includes 'nopage'.
+
+ â— Robert Stayton: table.xsl
+
+ Add support for some format properties on tables using
+ HTML table markup. These include:
+ - frame attribute on table (or uses $default.table.frame parameter).
+ - rules attribute on table (or uses $default.table.rules parameter).
+ - align attribute on td and th
+ - valign attribute on td and th
+ - colspan on td and th
+ - rowspan on td and th
+ - bgcolor on td and th
+
+ â— Robert Stayton: olink.xsl
+
+ Add placeholder template to massage olink hot text to make
+ customization easier, per Feature Request 1828608.
+
+ â— Robert Stayton: targets.xsl
+
+ Add support for collecting olink targets from a glossary
+ generated from a glossary.collection.
+
+ â— Robert Stayton: titles.xsl
+
+ Handle firstterm like glossterm in mode="title.markup".
+
+ â— Robert Stayton: titles.xsl
+
+ Add match on info/title in title.markup templates where missing.
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Changed "ancestor::title" to "(ancestor::title and (@id or @xml:id))".
+ This enables proper formatting of inline elements in titles in TOCs,
+ as long as these inlines don't have id or xml:id attributes.
+
+ â— Robert Stayton: labels.xsl
+
+ Add two new qanda.defaultlabel values so that numbered sections
+ and numbered questions can be distinguished. Satisfies
+ Feature Request #1539045.
+
+ â— Robert Stayton: stripns.xsl; pi.xsl
+
+ Convert function-available(exsl:node-set) to use the new param
+ so Xalan bug is isolated.
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Added fixes for bugs #2112656 and #1759205:
+ 1. Reverted mistaken commits r7485 and r7523.
+ 2. Updated the template with match="link" and mode="no.anchor.mode" so that
+ @endterm is used if it exists and if the link has no content.
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Added code to handle acknowledgements in book and part. The element is processed
+ similarly to dedication. All acknowledgements will appear as front matter, after
+ any dedications.
+
+ â— Robert Stayton: olink.xsl
+
+ Fix bug #2018717 use.local.olink.style uses wrong gentext context.
+
+ â— Robert Stayton: olink.xsl
+
+ Fix bug #1787167 incorrect hot text for some olinks.
+
+ â— Robert Stayton: common.xsl
+
+ Fix bug #1669654 Broken output if copyright <year> contains a range.
+
+ â— Robert Stayton: labels.xsl
+
+ Fix bug in labelling figure inside appendix inside article inside book.
+
+FO
+
+The following changes have been made to the fo code since the 1.74.3 release.
+
+ â— Jirka Kosek: highlight.xsl
+
+ Inclusion of highlighting code was simplified. Only one import is now necessary.
+
+ â— Robert Stayton: fop1.xsl
+
+ Add the new fop extensions namespace declaration, in case FOP
+ extension functions are used.
+
+ â— Robert Stayton: formal.xsl
+
+ Add support for pgwide on informal objects.
+
+ â— Robert Stayton: docbook.xsl
+
+ Fixed spurious closing quote on line 134.
+
+ â— Robert Stayton: docbook.xsl; autoidx-kosek.xsl; autoidx.xsl
+
+ Convert function-available for node-set() to use
+ new $exsl.node.set.available param in test.
+
+ â— David Cramer: xref.xsl
+
+ Suppress extra space after xref when xrefstyle='select: label nopage' (#2740472)
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Fixed doc bug for row-height.
+
+ â— David Cramer: glossary.xsl
+
+ Internationalized punctuation in glosssee and glossseealso
+
+ â— Robert Stayton: param.xweb; param.ent; htmltbl.xsl; table.xsl
+
+ Add support for some format properties on tables using
+ HTML table markup. These include:
+ - frame attribute on table (or uses $default.table.frame parameter).
+ - rules attribute on table (or uses $default.table.rules parameter).
+ - align attribute on td and th
+ - valign attribute on td and th
+ - colspan on td and th
+ - rowspan on td and th
+ - bgcolor on td and th
+
+ â— Robert Stayton: table.xsl
+
+ Add support bgcolor in td and th
+ elements in HTML table markup.
+
+ â— Robert Stayton: htmltbl.xsl
+
+ Add support for colspan and rowspan and bgcolor in td and th
+ elements in HTML table markup.
+
+ â— Robert Stayton: param.xweb
+
+ Fix working of page-master left and right margins.
+
+ â— Mauritz Jeanson: param.xweb; param.ent; fop1.xsl
+
+ Added a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326.
+
+ â— Robert Stayton: table.xsl; pi.xsl
+
+ Add support for dbfo row-height processing instruction, like that in dbhtml.
+
+ â— Robert Stayton: lists.xsl
+
+ Add support for dbfo keep-together processing instruction for
+ entire list instances.
+
+ â— Robert Stayton: lists.xsl; block.xsl
+
+ Add support fo dbfo keep-together processing instruction to
+ more blocks like list items and paras.
+
+ â— Robert Stayton: lists.xsl; param.xweb; param.ent
+
+ Add new variablelist.term.properties to format terms, per request # 1968513.
+
+ â— Robert Stayton: inline.xsl
+
+ In simple.xlink, rearrange order of processing.
+
+ â— Robert Stayton: xref.xsl
+
+ Handle firstterm like glossterm in mode="xref-to".
+
+ â— Robert Stayton: glossary.xsl; xref.xsl; pi.xsl; footnote.xsl
+
+ Implement simple.xlink for glosssee and glossseealso so they can use
+ other types of linking besides otherterm.
+
+ â— Robert Stayton: qandaset.xsl
+
+ Add two new qanda.defaultlabel values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045.
+
+ â— Robert Stayton: titlepage.xsl
+
+ For the book title templates, I changed info/title to book/info/title
+ so other element's titles will not be affected.
+
+ â— Robert Stayton: xref.xsl; verbatim.xsl
+
+ Use param exsl.node.set.available to test for function.
+
+ â— Robert Stayton: param.xweb; param.ent; footnote.xsl
+
+ Start using new param exsl.node.set.available to work around Xalan bug.
+
+ â— Robert Stayton: titlepage.templates.xml
+
+ Add comment on use of t:predicate for editor to prevent
+ extra processing of multiple editors. Fixes bug 2687842.
+
+ â— Robert Stayton: xref.xsl; autoidx.xsl
+
+ An indexterm primary, secondary, or tertiary element with an id or xml:id
+ now outputs that ID, so that index entries can be cross referenced to.
+
+ â— Mauritz Jeanson: synop.xsl
+
+ Added modeless template for ooclass|oointerface|ooexception.
+ Closes bug #1623468.
+
+ â— Robert Stayton: xref.xsl
+
+ Add template with match on indexterm in mode="xref-to" to fix bug 2102592.
+
+ â— Robert Stayton: xref.xsl
+
+ Now xref to qandaentry will use the label element in a question for
+ the link text if it has one.
+
+ â— Robert Stayton: inline.xsl
+
+ Add id if specified from @id to output for quote and phrase so
+ they can be xref'ed to.
+
+ â— Robert Stayton: xref.xsl
+
+ Add support for xref to phrase, simpara, anchor, and quote.
+ This assumes the author specifies something using xrefstyle since
+ the elements don't have ordinary link text.
+
+ â— Robert Stayton: toc.xsl
+
+ Fix bug in new toc templates.
+
+ â— Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl;
+ titlepage.templates⋯
+
+ Added code to handle acknowledgements in book and part. The element is processed
+ similarly to dedication. All acknowledgements will appear as front matter, after
+ any dedications.
+
+ â— Robert Stayton: toc.xsl
+
+ Rewrite toc templates to support an empty toc or populated toc
+ in all permitted contexts. Same for lot elements.
+ This fixes bug #1595969 for FO outputs.
+
+ â— Robert Stayton: index.xsl
+
+ Fix indents for seealsoie so they are consistent.
+
+ â— Mauritz Jeanson: param.xweb
+
+ Removed duplicate (monospace.font.family).
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add glossentry.list.item.properties.
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add monospace.verbatim.font.width param to support @width on programlisting.
+
+ â— Robert Stayton: verbatim.xsl
+
+ Put programlisting in fo:block-container with writing-mode="lr-tb"
+ when text direction is right to left because all program languages
+ are left-to-right.
+
+ â— Robert Stayton: verbatim.xsl
+
+ Add support for @width on screen and programlisting, fixes bug #2012736.
+
+ â— Robert Stayton: xref.xsl
+
+ Fix bug #1973585 xref to para with xrefstyle not handled correctly.
+
+ â— Mauritz Jeanson: block.xsl
+
+ Added support for acknowledgements in article.
+ Support in book/part remains to be added.
+
+ â— Robert Stayton: xref.xsl
+
+ Fix bug #1787167 incorrect hot text for some olinks.
+
+ â— Robert Stayton: fo.xsl
+
+ Add writing-mode="tb-rl" as well since some XSL-FO processors support it.
+
+ â— Robert Stayton: autotoc.xsl; lists.xsl; glossary.xsl; fo.xsl; table.xsl;
+ pagesetup.xsl
+
+ Add support for writing-mode="rl-tb" (right-to-left) in FO outputs.
+ Changed instances of margin-left to margin-{$direction.align.start}
+ and margin-right to margin-{$direction.align.end}. Those direction.align
+ params are computed from the writing mode value in each locale's
+ gentext key named 'writing-mode', introduced in 1.74.3 to add
+ right-to-left support to HTML outputs.
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add attribute-sets for formatting glossary terms and defs.
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add writing.mode param for FO output.
+
+ â— Robert Stayton: autotoc.xsl
+
+ Fix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title
+ instead of question, if available. For DocBook 5, use the info versions.
+
+ â— Keith Fahlgren: verbatim.xsl
+
+ Add better pointer to README for XSLTHL
+
+ â— Keith Fahlgren: verbatim.xsl
+
+ More tweaking the way that XSLTHL does or does not get called
+
+ â— Keith Fahlgren: verbatim.xsl
+
+ Alternate attempt at sanely including/excluding XSLTHT code
+
+HTML
+
+The following changes have been made to the html code since the 1.74.3 release.
+
+ â— Robert Stayton: lists.xsl
+
+ Removed redundant lang and title attributes on list element inside
+ div element for lists.
+
+ â— Robert Stayton: inline.xsl; titlepage.xsl; division.xsl; toc.xsl;
+ sections.xsl; table.xsl;⋯
+
+ Convert all calls to class.attribute to calls to common.html.attributes
+ to support dir, lang, and title attributes in html output for all elements.
+ Fulfills feature request #1993833.
+
+ â— Robert Stayton: chunk-common.xsl
+
+ Fix bug #2750253 wrong links in list of figures in chunk.html
+ when target html is in a subdirectory and dbhtml filename used.
+
+ â— Jirka Kosek: highlight.xsl
+
+ Inclusion of highlighting code was simplified. Only one import is now necessary.
+
+ â— Robert Stayton: chunk-common.xsl; chunktoc.xsl; docbook.xsl;
+ chunk-changebars.xsl; autoidx⋯
+
+ Convert function-available for node-set() to use
+ new $exsl.node.set.available param in test.
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Fixed doc bug for row-height.
+
+ â— David Cramer: glossary.xsl
+
+ Internationalized punctuation in glosssee and glossseealso
+
+ â— Robert Stayton: lists.xsl; html.xsl; block.xsl
+
+ More elements get common.html.attributes.
+ Added locale.html.attributes template which does the lang,
+ dir, and title attributes, but not the class attribute
+ (used on para, for example).
+
+ â— Robert Stayton: lists.xsl
+
+ Replace more literal class atts with mode="class.attribute" to support
+ easier customization.
+
+ â— Robert Stayton: glossary.xsl
+
+ Support olinking in glosssee and glossseealso.
+
+ â— Robert Stayton: inline.xsl
+
+ In simple.xlink, rearrange order of processing.
+
+ â— Robert Stayton: xref.xsl
+
+ Handle firstterm like glossterm in mode="xref-to".
+
+ â— Robert Stayton: lists.xsl; html.xsl; block.xsl
+
+ Added template named common.html.attributes to output
+ class, title, lang, and dir for most elements.
+ Started adding it to some list and block elements.
+
+ â— Robert Stayton: qandaset.xsl
+
+ Add two new qanda.defaultlabel values so that numbered sections
+ and numbered questions can be distinguished. Satisfies
+ Feature Request #1539045.
+
+ â— Robert Stayton: param.xweb; chunk-code.xsl; param.ent; xref.xsl;
+ chunkfast.xsl; verbatim.x⋯
+
+ Use new param exsl.node.set.available to test, handles Xalan bug.
+
+ â— Robert Stayton: autoidx.xsl
+
+ Use named anchors for primary, secondary, and tertiary ids so
+ duplicate entries with different ids can still have an id output.
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add new param index.links.to.section.
+
+ â— Robert Stayton: xref.xsl; autoidx.xsl
+
+ Pass through an id on primary, secondary, or tertiary to
+ the index entry, so that one could link to an index entry.
+ You can't link to the id on an indexterm because that is
+ used to place the main anchor in the text flow.
+
+ â— Robert Stayton: autoidx.xsl
+
+ Add support for the new index.links.to.section param which permits
+ precise links to indexterms in HTML output rather than to
+ the section title.
+
+ â— Mauritz Jeanson: synop.xsl
+
+ Added modeless template for ooclass|oointerface|ooexception.
+ Closes bug #1623468.
+
+ â— Robert Stayton: qandaset.xsl
+
+ Make sure a qandaset has an anchor, even when it has no title,
+ because it may be referenced in a TOC or xref.
+ Before, the anchor was output by the title, but there was no
+ anchor if there was no title.
+
+ â— Robert Stayton: xref.xsl
+
+ Add a template for indexterm with mode="xref-to" to fix bug 2102592.
+
+ â— Robert Stayton: xref.xsl
+
+ Now xref to qandaentry will use the label element in a question for
+ the link text if it has one.
+
+ â— Robert Stayton: qandaset.xsl; html.xsl
+
+ Create separate templates for computing label of question and answer
+ in a qandaentry, so such can be used for the alt text of an xref
+ to a qandaentry.
+
+ â— Robert Stayton: inline.xsl; xref.xsl
+
+ Now support xref to phrase, simpara, anchor, and quote,
+ most useful when an xrefstyle is used.
+
+ â— Robert Stayton: toc.xsl
+
+ Rewrite toc templates to support an empty toc or populated toc
+ in all permitted contexts. Same for lot elements.
+ This fixes bug #1595969 for HTML outputs.
+
+ â— Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl;
+ titlepage.templates⋯
+
+ Added code to handle acknowledgements in book and part. The element is processed
+ similarly to dedication. All acknowledgements will appear as front matter, after
+ any dedications.
+
+ â— Robert Stayton: index.xsl
+
+ Rewrote primaryie, secondaryie and tertiaryie templates to handle
+ nesting of elements and seeie and seealsoie, as reported in
+ bug # 1168912.
+
+ â— Robert Stayton: autotoc.xsl
+
+ Fix simplesect in toc problem.
+
+ â— Robert Stayton: verbatim.xsl
+
+ Add support for @width per bug report #2012736.
+
+ â— Robert Stayton: formal.xsl; htmltbl.xsl
+
+ Fix bug #1787140 HTML tables not handling attributes correctly.
+
+ â— Robert Stayton: param.xweb
+
+ Move writing-mode param.
+
+ â— Keith Fahlgren: refentry.xsl
+
+ Remove a nesting of <p> inside <p> for refclass (made XHTML* invalid, made HTML silly)
+
+ â— Robert Stayton: table.xsl
+
+ Fix bug #1945872 to allow passthrough of colwidth values to
+ HTML table when no tablecolumns.extension is available and
+ when no instance of * appears in the table's colspecs.
+
+ â— Mauritz Jeanson: block.xsl
+
+ Added support for acknowledgements in article.
+ Support in book/part remains to be added.
+
+ â— Robert Stayton: chunk-common.xsl
+
+ Fix bug #1787167 incorrect hot text for some olinks.
+
+ â— Robert Stayton: qandaset.xsl
+
+ Fix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title
+ instead of question, if available. For DocBook 5, use the info versions.
+
+ â— Robert Stayton: chunktoc.xsl
+
+ Add support for generating olink database when using chunktoc.xsl.
+
+ â— Keith Fahlgren: verbatim.xsl
+
+ Add better pointer to README for XSLTHL
+
+ â— Keith Fahlgren: verbatim.xsl
+
+ Another stab at fixing the stupid XSLTHT includes across processors (Saxon regression reported by Sorin Ristache)
+
+ â— Keith Fahlgren: verbatim.xsl
+
+ More tweaking the way that XSLTHL does or does not get called
+
+ â— Keith Fahlgren: verbatim.xsl
+
+ Alternate attempt at sanely including/excluding XSLTHT code
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.74.3
+release.
+
+ â— Robert Stayton: table.xsl
+
+ Convert function-available test for node-set() function to
+ test of $exsl.node.set.available param.
+
+ â— Mauritz Jeanson: lists.xsl
+
+ Added a template for bibliolist. Closes bug #1815916.
+
+ePub
+
+The following changes have been made to the epub code since the 1.74.3 release.
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/
+ onegraphic.xinclude.xml;⋯
+
+ Slightly more nuanced handling of imageobject alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog.
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Add a colon after an abstract/title when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann)
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/
+ files/de.xml
+
+ Correctly set dc:language in OPF metadata when i18nizing. Closes Bug #2755150
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl
+
+ Corrected namespace declarations for literal XHTML elements to make them serialize "normally"
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Be a little bit more nuanced about dates
+
+ â— Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files
+ /orm.book.001.x⋯
+
+ Add DocBook subjectset -> OPF dc:subject mapping and tests
+
+ â— Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files
+ /orm.book.001.x⋯
+
+ Add DocBook date -> OPF dc:date mapping and tests
+
+ â— Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files
+ /orm.book.001.x⋯
+
+ Add DocBook abstract -> OPF dc:description mapping and tests
+
+ â— Robert Stayton: docbook.xsl
+
+ Check in patch submitted by user to add opf:file-as attribute
+ to dc:creator element.
+
+ â— Keith Fahlgren: bin/dbtoepub
+
+ Adding --output option to dbtoepub based on user request
+
+ â— Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb
+
+ Cleaning and regularizing the generation of namespaced nodes for OPF, NCX, XHTML and other outputted filetypes (hat tip to bobstayton for pointing out the silly, incorrect code)
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/
+ refclass.xml
+
+ Remove a nesting of <p> inside <p> for refclass (made XHTML* invalid, made HTML silly)
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/
+ blockquotepre.xml
+
+ Added regression test and fix for XHTML validation problem with <a>s added inside <blockquote>; This potentially causes another problem (where something is referenced by has no anchor, but someone reporting that should cause the whole <a id='thing'/> thing to be reconsidered with modern browsers in mind.
+
+HTMLHelp
+
+The following changes have been made to the htmlhelp code since the 1.74.3
+release.
+
+ â— Robert Stayton: htmlhelp-common.xsl
+
+ Add support for generating olink target database for htmlhelp files.
+
+Params
+
+The following changes have been made to the params code since the 1.74.3
+release.
+
+ â— Robert Stayton: default.table.rules.xml
+
+ Add default setting for @rules attribute on HTML markup tables.
+
+ â— Mauritz Jeanson: bookmarks.collapse.xml
+
+ Added a new parameter, bookmarks.collapse, that controls the initial state
+ of the bookmark tree. When the parameter has a non-zero value (the default),
+ only the top-level bookmarks are displayed initially. Otherwise, the whole
+ tree of bookmarks is displayed.
+
+ This is implemented for FOP 0.9X. Closes FR #1792326.
+
+ â— Robert Stayton: variablelist.term.properties.xml
+
+ Add new variablelist.term.properties to format terms, per
+ request # 1968513.
+
+ â— Robert Stayton: qanda.defaultlabel.xml
+
+ Add two new qanda.defaultlabel values so that numbered sections
+ and numbered questions can be distinguished. Satisfies
+ Feature Request #1539045.
+
+ â— Robert Stayton: index.links.to.section.xml
+
+ Change default to 1 to match past behavior.
+
+ â— Robert Stayton: exsl.node.set.available.xml
+
+ Isolate this text for Xalan bug regarding exsl:node-set available.
+ If it is ever fixed in Xalan, just fix it here.
+
+ â— Robert Stayton: index.links.to.section.xml
+
+ Add param to control whether an index entry links to
+ a section title or to the precise location of the
+ indexterm.
+
+ â— Robert Stayton: glossentry.list.item.properties.xml
+
+ New attribute list for glossentry in glossary.
+
+ â— Robert Stayton: monospace.verbatim.font.width.xml
+
+ New parameter to support @width on programlisting and screen.
+
+ â— Mauritz Jeanson: highlight.source.xml
+
+ Updated and reorganized the description.
+
+ â— Robert Stayton: page.margin.outer.xml; page.margin.inner.xml
+
+ Add caveat about XEP bug when writing-mode is right-to-left.
+
+ â— Robert Stayton: article.appendix.title.properties.xml; writing.mode.xml;
+ body.start.indent⋯
+
+ Change 'left' to 'start' and 'right' to 'end' to support right-to-left
+ writing mode.
+
+ â— Robert Stayton: glossdef.block.properties.xml;
+ glossdef.list.properties.xml; glossterm.blo⋯
+
+ Add attribute-sets for formatting glossary terms and defs.
+
+ â— Robert Stayton: glossterm.separation.xml
+
+ Clarify the description.
+
+ â— Robert Stayton: make.year.ranges.xml
+
+ Now handles year element containing a comma or dash without error.
+
+Highlighting
+
+The following changes have been made to the highlighting code since the 1.74.3
+release.
+
+ â— Jirka Kosek: README
+
+ Inclusion of highlighting code was simplified. Only one import is now necessary.
+
+ â— Keith Fahlgren: README
+
+ Adding XSLTHL readme
+
+ â— Keith Fahlgren: common.xsl
+
+ Alternate attempt at sanely including/excluding XSLTHT code
+
+XSL-Saxon
+
+The following changes have been made to the xsl-saxon code since the 1.74.3
+release.
+
+ â— Mauritz Jeanson: src/com/nwalsh/saxon/Text.java
+
+ Added a fix that prevents output of extra blank line.
+ Hopefully this closes bug #894805.
+
+XSL-Xalan
+
+The following changes have been made to the xsl-xalan code since the 1.74.3
+release.
+
+ â— Mauritz Jeanson: src/com/nwalsh/xalan/Text.java
+
+ Added a fix that prevents output of extra blank line.
+ Hopefully this closes bug #894805.
+
+Release Notes: 1.74.3
+
+This release fixes some bugs in the 1.74.2 release.
+
+See highlighting/README for XSLTHL usage instructions.
+
+Release Notes: 1.74.2
+
+This release fixes some bugs in the 1.74.1 release.
+
+Release Notes: 1.74.1
+
+This release includes important bug fixes and adds the following significant
+feature changes:
+
+Gentext
+
+ Kirghiz locale added and Chinese translations have been simplified.
+
+ Somme support for gentext and right-to-left languages has been added.
+
+FO
+
+ Various bugs have been resolved.
+
+ Support for a new processing instruction: dbfo funcsynopsis-style has been
+ added.
+
+ Added new param email.mailto.enabled for FO output. Patch from Paolo
+ Borelli.
+
+ Support for documented metadata in fop1 mode has been added.
+
+Highlighting
+
+ Support for the latest version of XSLTHL 2.0 and some new language syntaxes
+ have been added to a variety of outputs.
+
+Manpages
+
+ Added man.output.better.ps.enabled param (zero default). It non-zero, no
+ such markup is embedded in generated man pages, and no enhancements are
+ included in the PostScript output generated from those man pages by the man
+ -Tps command.
+
+HTML
+
+ Support for writing.mode to set text direction and alignment based on
+ document locale has been added.
+
+ Added a new top-level stylesheet module, chunk-changebars.xsl, to be used
+ for generating chunked output with highlighting based on change
+ (@revisionflag) markup. The module imports/includes the standard chunking
+ and changebars templates and contains additional logic for chunked output.
+ See FRs #1015180 and #1819915.
+
+ePub
+
+ Covers now look better in Adobe Digital Editions thanks to a patch from
+ Paul Norton of Adobe
+
+ Cover handling now more generic (including limited DocBook 5.0 cover
+ support thanks to patch contributed by Liza Daly.
+
+ Cover markup now carries more reliably into files destined for .mobi and
+ the Kindle.
+
+ dc:identifiers are now generated from more types of numbering schemes.
+
+ Both SEO and semantic structure of chunked ePub output by ensuring that we
+ always send out one and only one h1 in each XHTML chunk.
+
+ Primitive support for embedding a single font added.
+
+ Support for embedding a CSS customizations added.
+
+Roundtrip
+
+ Support for imagedata-metadata and table as images added.
+
+ Support for imagedata-metadata and legalnotice as images added.
+
+Params
+
+ man.output.better.ps.enabled added for Manpages output
+
+ writing.mode.xml added to set text direction.
+
+ Added new param email.mailto.enabled for FO output. Patch from Paolo
+ Borelli. Closes #2086321.
+
+ highlight.source upgraded to support the latest version of XSLTHL 2.0.
+
+The following is a list of changes that have been made since the 1.74.0
+release.
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.74.0
+release.
+
+ â— Michael(tm) Smith: locale/ky.xml; Makefile
+
+ new Kirghiz locale from Ilyas Bakirov
+
+ â— Mauritz Jeanson: locale/en.xml
+
+ Added "Acknowledgements".
+
+ â— Dongsheng Song: locale/zh_cn.xml
+
+ Simplified Chinese translation.
+
+ â— Robert Stayton: locale/lv.xml; locale/ca.xml; locale/pt.xml; locale/tr.xml;
+ locale/af.xml;⋯
+
+ Add writing-mode gentext string to support right-to-left languages.
+
+FO
+
+The following changes have been made to the fo code since the 1.74.0 release.
+
+ â— David Cramer: footnote.xsl
+
+ Added a check to confirm that a footnoteref's linkend points to a footnote. Stylesheets stop processing if not and provide a useful error message.
+
+ â— Mauritz Jeanson: spaces.xsl
+
+ Convert spaces to fo:leader also in elements in the DB 5 namespace.
+
+ â— Mauritz Jeanson: pi.xsl; synop.xsl
+
+ Added support for a new processing instruction: dbfo funcsynopsis-style.
+ Closes bug #1838213.
+
+ â— Michael(tm) Smith: inline.xsl; param.xweb; param.ent
+
+ Added new param email.mailto.enabled for FO output.
+ Patch from Paolo Borelli. Closes #2086321.
+
+ â— Mauritz Jeanson: docbook.xsl
+
+ Added support for document metadata for fop1 (patch #2067318).
+
+ â— Jirka Kosek: param.ent; param.xweb; highlight.xsl
+
+ Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added
+
+HTML
+
+The following changes have been made to the html code since the 1.74.0 release.
+
+ â— Robert Stayton: param.xweb; docbook.xsl; param.ent; html.xsl
+
+ Add support for writing.mode to set text direction and alignment based on document locale.
+
+ â— Mauritz Jeanson: chunk-changebars.xsl
+
+ Added a new top-level stylesheet module, chunk-changebars.xsl, to be
+ used for generating chunked output with highlighting based on change
+ (@revisionflag) markup. The module imports/includes the standard chunking
+ and changebars templates and contains additional logic for chunked output.
+ See FRs #1015180 and #1819915.
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.74.0
+release.
+
+ â— Michael(tm) Smith: docbook.xsl
+
+ Put the following at the top of generated roff for each page:
+ \" t
+ purpose is to explicitly tell AT&T troff that the page needs to be
+ pre-processed through tbl(1); groff can figure it out
+ automatically, but apparently AT&T troff needs to be explicitly told
+
+ePub
+
+The following changes have been made to the epub code since the 1.74.0 release.
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Patch from Paul Norton of Adobe to get covers to look better in Adobe Digital Editions
+
+ â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/
+ v5cover.xml; bin/spec/sp⋯
+
+ Patch contributed by Liza Daly to make ePub cover handling more generic. Additionally
+ DocBook 5.0's <cover> now has some limited support:
+
+ - should reference a cover in the OPF guide for a DocBook 5.0 test document
+
+ â— Keith Fahlgren: bin/spec/files/isbn.xml; bin/spec/files/issn.xml; bin/spec/
+ files/biblioid.⋯
+
+ Liza Daly reported that the dc:identifer-generation code was garbage (she was right).
+
+ Added new tests:
+ - should include at least one dc:identifier
+ - should include an ISBN as URN for dc:identifier if an ISBN was in the metadata
+ - should include an ISSN as URN for dc:identifier if an ISSN was in the metadata
+ - should include an biblioid as a dc:identifier if an biblioid was in the metadata
+ - should include a URN for a biblioid with @class attribute as a dc:identifier if an biblioid was in the metadata
+
+ â— Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb
+
+ Improve both SEO and semantic structure of chunked ePub output by ensuring that
+ we always send out one and only one h1 in each XHTML chunk.
+
+ DocBook::Epub
+ - should include one and only one <h1> in each HTML file in rendered ePub files
+ for <book>s
+ - should include one and only one <h1> in each HTML file in rendered ePub files
+ for <book>s even if they do not have section markup
+
+ â— Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files
+ /orm.book.001.x⋯
+
+ Adding better support for covers in epub files destined for .mobi and the Kindle
+
+ â— Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/
+ DejaVuSerif.otf; docbook.⋯
+
+ Adding primitive support for embedding a single font
+
+ â— Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/
+ test_cust.xsl; bin/spec/e⋯
+
+ Adding support for user-specified customization layers in dbtoepub
+
+ â— Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/
+ docbook.rb; bin/s⋯
+
+ Adding CSS support to .epub target & dbtoepub:
+ -c, --css [FILE] Use FILE for CSS on generated XHTML.
+
+
+ DocBook::Epub
+ ...
+ - should include a CSS link in HTML files when a CSS file has been provided
+ - should include CSS file in .epub when a CSS file has been provided
+ - should include a CSS link in OPF file when a CSS file has been provided
+
+Roundtrip
+
+The following changes have been made to the roundtrip code since the 1.74.0
+release.
+
+ â— Steve Ball: blocks2dbk.xsl; template.xml; template.dot
+
+ added support for imagedata-metadata
+ added support for table as images
+
+ â— Steve Ball: blocks2dbk.xsl; normalise2sections.xsl; sections2blocks.xsl
+
+ Improved support for personname inlines.
+
+ â— Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml
+
+ Added support for legalnotice.
+
+ â— Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl
+
+ added support for orgname in author
+
+ â— Steve Ball: specifications.xml; supported.xml; blocks2dbk.xsl;
+ wordml2normalise.xsl; dbk2w⋯
+
+ Updated specification.
+ to-DocBook: add cols attribute to tgroup
+ from-DocBook: fix for blockquote title
+
+Params
+
+The following changes have been made to the params since the 1.74.0 release.
+
+ â— The change was to add man.output.better.ps.enabled parameter, with its
+ default value set to zero. If the value of the man.output.better.ps.enabled
+ parameter is non-zero, certain markup is embedded in each generated man
+ page such that PostScript output from the man -Tps command for that page
+ will include a number of enhancements designed to improve the quality of
+ that output. If man.output.better.ps.enabled is zero (the default), no such
+ markup is embedded in generated man pages, and no enhancements are included
+ in the PostScript output generated from those man pages by the man -Tps
+ command. WARNING: The enhancements provided by this parameter rely on
+ features that are specific to groff (GNU troff) and that are not part of
+ "classic" AT&T troff or any of its derivatives. Therefore, any man pages
+ you generate with this parameter enabled will be readable only on systems
+ on which the groff (GNU troff) program is installed, such as GNU/Linux
+ systems. The pages will not not be readable on systems on with the classic
+ troff (AT&T troff) command is installed. NOTE: The value of this parameter
+ only affects PostScript output generated from the man command. It has no
+ effect on output generated using the FO backend. TIP: You can generate
+ PostScript output for any man page by running the following command: man
+ FOO -Tps > FOO.ps You can then generate PDF output by running the following
+ command: ps2pdf FOO.ps
+
+ â— Robert Stayton: writing.mode.xml
+
+ writing mode param used to set text direction.
+
+ â— Michael(tm) Smith: email.mailto.enabled.xml
+
+ Added new param email.mailto.enabled for FO output.
+ Patch from Paolo Borelli. Closes #2086321.
+
+ â— Jirka Kosek: highlight.source.xml; highlight.xslthl.config.xml
+
+ Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added
+
+Highlighting
+
+The following changes have been made to the highlighting code since the 1.74.0
+release.
+
+ â— Jirka Kosek: cpp-hl.xml; c-hl.xml; tcl-hl.xml; php-hl.xml; common.xsl;
+ perl-hl.xml; delphi⋯
+
+ Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added
+
+Release Notes: 1.74.0
+
+This release includes important bug fixes and adds the following significant
+feature changes:
+
+.epub target
+
+ Paul Norton (Adobe) and Keith Fahlgren(O'Reilly Media) have donated code
+ that generates .epub documents from DocBook input. An alpha-reference
+ implementation in Ruby has also been provided.
+
+ .epub is an open standard of the The International Digital Publishing Forum
+ (IDPF), a the trade and standards association for the digital publishing
+ industry.
+
+ Read more about this target in epub/README
+
+XHTML 1.1 target
+
+ To support .epub output, a strict XHTML 1.1 target has been added. The
+ stylesheets for this output are generated and are quite similar to the
+ XHTML target.
+
+Gentext updates
+
+ A number of locales have been updated.
+
+Roundtrip improvements
+
+ Table, figure, template syncronization, and character style improvements
+ have been made for WordML & Pages. Support added for OpenOffice.org.
+
+First implementation of a libxslt extension
+
+ A stylesheet extension for libxslt, written in Python, has been added. The
+ extension is a function for adjusting column widths in CALS tables. See
+ extensions/README.LIBXSLT for more information.
+
+The following is a list of changes that have been made since the 1.73.2
+release.
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: locale/id.xml
+
+ Checked in changes to Indonesion locale submitted by Euis Luhuanam a long time ago.
+
+ â— Michael(tm) Smith: locale/lt.xml
+
+ Added changes to Lithuanian locate submitted a long time back by Nikolajus Krauklis.
+
+ â— Michael(tm) Smith: locale/hu.xml
+
+ fixed error in lowercase.alpha definition in Hungarian locale
+
+ â— Michael(tm) Smith: locale/nb.xml
+
+ Corrected language code for nb locale, and restored missing "startquote" key.
+
+ â— Michael(tm) Smith: locale/ja.xml
+
+ Committed changes to ja locale file, from Akagi Kobayashi. Adds bracket quotes around many xref instances that did not have them
+ before.
+
+ â— Michael(tm) Smith: Makefile
+
+ "no" locale is now "nb"
+
+ â— Michael(tm) Smith: locale/nb.xml
+
+ Update Norwegian Bokmål translation. Thanks to Hans F. Nordhaug.
+
+ â— Michael(tm) Smith: locale/no.xml; locale/nb.xml
+
+ per message from Hans F. Nordhaug, correct identifier for
+ Norwegian Bokmål is "nb" (not "no") and has been for quite some
+ time now...
+
+ â— Michael(tm) Smith: locale/ja.xml
+
+ Converted ja.xml source file to use real unicode characters so
+ that the actual glyphs so up when you edit it in a text editor
+ (instead of the character references).
+
+ â— Michael(tm) Smith: locale/ja.xml
+
+ Checked in changes to ja.xml locale file. Thanks to Akagi Kobayashi.
+
+ â— Michael(tm) Smith: locale/it.xml
+
+ Changes from Federico Zenith
+
+ â— Dongsheng Song: locale/zh_cn.xml
+
+ Added missing translations.
+
+Common
+
+The following changes have been made to the common code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: l10n.xsl
+
+ Added new template "l10.language.name" for retrieving the
+ English-language name of the lang setting of the current document.
+ Closes #1916837. Thanks to Simon Kennedy.
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ fixed syntax error
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ fixed a couple of typos
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ refined handling of cases where refentry "source" or "manual"
+ metadata is missing or when we use fallback content instead. We
+ now report a Warning if we use fallback content.
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ don't use refmiscinfo@class=date value as fallback for refentry
+ "source" or "manual" metadata fields
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ Made reporting of missing refentry metadata more quiet:
+
+ - we no longer report anything if usable-but-not-preferred
+ metadata is found; we just quietly use whatever we manage to
+ find
+
+ - we now only report missing "source" metadata if the refentry
+ is missing BOTH "source name" and "version" metadata; if it
+ has one but not the other, we use whichever one it has and
+ don't report anything as missing
+
+ The above changes were made because testing with some "real world"
+ source reveals that some authors are intentionally choosing to use
+ "non preferred" markup for some metadata, and also choosing to
+ omit "source name" or "version" metadata in there DocBook XML. So
+ it does no good to give them pedantic reminders about what they
+ already know...
+
+ Also, changed code to cause "fixme" text to be inserted in output
+ in particular cases:
+
+ - if we can't manage to find any "source" metadata at all, we
+ now put fixme text into the output
+
+ - if we can't manage to find any "manual" metadata a all, we
+ now put fixme text into the output
+
+ The "source" and "manual" metadata is necessary information, so
+ buy putting the fixme stuff in the output, we alert users to the
+ need problem of it being missing.
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ When generating manpages output, we no longer report anything if
+ the refentry source is missing date or pubdate content. In
+ practice, many users intentionally omit the date from the source
+ because they explicitly want it to be generated.
+
+ â— Michael(tm) Smith: l10n.xml
+
+ further change needed for switch from no locale to nb.
+
+ â— Michael(tm) Smith: common.xsl
+
+ Added support for orgname in authorgroup. Thanks to Camille
+ Bégnis.
+
+ â— Michael(tm) Smith: Makefile
+
+ "no" locale is now "nb"
+
+ â— Mauritz Jeanson: stripns.xsl
+
+ Removed the template matching "ng:link|db:link" (in order to make @xlink:show
+ work with <link> elements). As far as I can tell, this template is no longer needed.
+
+ â— Mauritz Jeanson: entities.ent
+
+ Moved declaration of comment.block.parents entity to common/entities.ent.
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Added an update the fix made in revision 7528 (handling of xref/link in no.anchor.mode mode).
+ Having xref in title is not a problem as long as the target is not an ancestor element.
+ Closes bug #1838136.
+
+ Note that an xref that is in a title and whose target is an ancestor element is still not
+ rendered in the TOC. This could be considered a bug, but on the other hand I cannot really
+ see the point in having such an xref in a document.
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Added a "not(ancestor::title)" test to work around "too many nested
+ apply-templates" problems when processing xrefs or links in no.anchor.mode mode.
+ Hopefully, this closes bug #1811721.
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Removed old template matching "link" in no.anchor.mode mode.
+
+ â— Mauritz Jeanson: titles.xsl
+
+ Process <link> in no.anchor.mode mode with the same template as <xref>.
+ Closes bug #1759205 (Empty link in no.anchor.mode mode).
+
+ â— Mauritz Jeanson: titles.xsl
+
+ In no.anchor.mode mode, do not output anchors for elements that are descendants
+ of <title>. Previously, having inline elements with @id/@xml:id in <title>s
+ resulted in anchors both in the TOC and in the main flow. Closes bug #1797492.
+
+FO
+
+The following changes have been made to the fo code since the 1.73.2 release.
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Updated documentation for keep-together.
+
+ â— Mauritz Jeanson: task.xsl
+
+ Enabled use of the keep-together PI on task elements.
+
+ â— Robert Stayton: index.xsl
+
+ FOP1 requires fo:wrapper for inline index entries, not fo:inline.
+
+ â— Robert Stayton: index.xsl
+
+ Fixed non-working inline.or.block template for indexterm wrappers.
+ Add fop1 to list of processors using inline.or.block.
+
+ â— Mauritz Jeanson: table.xsl
+
+ Fixed bug #1891965 (colsep in entytbl not working).
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Added support for title in revhistory. Closes bug #1842847.
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Small doc cleanup (dbfo float-type).
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Insert commas between multiple copyright holders.
+
+ â— Mauritz Jeanson: autotoc.xsl; division.xsl
+
+ Added modifications to support nested set elements. See bug #1853172.
+
+ â— David Cramer: glossary.xsl
+
+ Added normalize-space to xsl:sorts to avoid missorting of glossterms due to stray leading spaces.
+
+ â— David Cramer: glossary.xsl
+
+ Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
+ and the "hot text" is the biblioid itself enclosed in brackets.
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Moved declaration of comment.block.parents entity to common/entities.ent.
+
+ â— Mauritz Jeanson: docbook.xsl
+
+ Updated message about unmatched element.
+
+ â— Mauritz Jeanson: param.xweb
+
+ Added link to profiling chapter of TCG.
+
+ â— Mauritz Jeanson: refentry.xsl
+
+ Fixed typo (refsynopsysdiv -> refsynopsisdiv).
+
+ â— David Cramer: fop.xsl; fop1.xsl; ptc.xsl; xep.xsl
+
+ Added test to check generate.index param when generating pdf bookmarks
+
+ â— Mauritz Jeanson: graphics.xsl
+
+ Added support for MathML in imagedata.
+
+ â— Michael(tm) Smith: math.xsl
+
+ Removed unnecessary extra test condition in test express that
+ checks for passivetex.
+
+ â— Michael(tm) Smith: math.xsl
+
+ Don't use fo:instream-foreign-object if we are processing with
+ passivetex. Closes #1806899. Thanks to Justus Piater.
+
+ â— Mauritz Jeanson: component.xsl
+
+ Added code to output a TOC for an appendix in an article when
+ generate.toc='article/appendix toc'. Closes bug #1669658.
+
+ â— Dongsheng Song: biblio-iso690.xsl
+
+ Change encoding from "windows-1250" to "UTF-8".
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Updated documentation for dbfo_label-width.
+
+ â— Mauritz Jeanson: lists.xsl
+
+ Added support for the dbfo_label-width PI in calloutlists.
+
+ â— Robert Stayton: biblio.xsl
+
+ Support finding glossary database entries inside bibliodivs.
+
+ â— Robert Stayton: formal.xsl
+
+ Complete support for <?dbfo pgwide="1"?> for informal
+ elements too.
+
+ â— Mauritz Jeanson: table.xsl
+
+ In the table.block template, added a check for the dbfo_keep-together PI, so that
+ a table may break (depending on the PI value) at a page break. This was needed
+ since the outer fo:block that surrounds fo:table has keep-together.within-column="always"
+ by default, which prevents the table from breaking. Closes bug #1740964 (Titled
+ table does not respect dbfo PI).
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Added a few missing @role="tcg".
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Use normalize-space() in glossterm comparisons (as in html/inline.xsl).
+
+ â— Mauritz Jeanson: autoidx.xsl
+
+ Removed the [&scope;] predicate from the target variable in the template with name="reference".
+ This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
+ with index.on.type=1. Closes bug #1680836.
+
+ â— Michael(tm) Smith: inline.xsl; xref.xsl; footnote.xsl
+
+ Added capability in FO output for displaying URLs for all
+ hyperlinks (elements marked up with xlink:href attributes) in the
+ same way as URLs for ulinks are already handled (which is to say,
+ either inline or as numbered footnotes).
+
+ Background on this change:
+ DocBook 5 allows "ubiquitous" linking, which means you can make
+ any element a hyperlink just by adding an xlink:href attribute to
+ it, with the value set to an external URL. That's in contrast to
+ DocBook 4, which only allows you to use specific elements (e.g.,
+ the link and ulink elements) to mark up hyperlinks.
+
+ The existing FO stylesheets have a mechanism for handling display
+ of URLs for hyperlinks that are marked up with ulink, but they did
+ not handle display of URLs for elements that were marked up with
+ xlink:href attributes. This change adds handling for those other
+ elements, enabling the URLs they link to be displayed either
+ inline or as numbered footnotes (depending on what values the user
+ has the ulink.show and ulink.footnotes params set to).
+
+ Note that this change only adds URL display support for elements
+ that call the simple.xlink template -- which currently is most
+ (but not all) inline elements.
+
+ This change also moves the URL display handling out of the ulink
+ template and into a new "hyperlink.url.display" named template;
+ the ulink template and the simple.xlink named template now both
+ call the hyperlink.url.display template.
+
+ Warning: In the stylesheet code that determines what footnote
+ number to assign to each footnote or external hyperlink, there is
+ an XPath expression for determining whether a particular
+ xlink:href instance is an external hyperlink; that expression is
+ necessarily a bit complicated and further testing may reveal that
+ it doesn't handle all cases as expected -- so some refinements to
+ it may need to be done later.
+
+ Closes #1785519. Thanks to Ken Morse for reporting and
+ troubleshooting the problem.
+
+HTML
+
+The following changes have been made to the html code since the 1.73.2 release.
+
+ â— Keith Fahlgren: inline.xsl; synop.xsl
+
+ Work to make HTML and XHTML targets more valid
+
+ â— Keith Fahlgren: table.xsl
+
+ Add better handling for tables that have footnotes in the titles
+
+ â— Keith Fahlgren: biblio.xsl
+
+ Add anchors to bibliodivs
+
+ â— Keith Fahlgren: formal.xsl; Makefile; htmltbl.xsl
+
+ Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
+ and Keith Fahlgren of O'Reilly.
+
+ This change includes new code for generating the XHTML 1.1 target sanely.
+
+ â— Mauritz Jeanson: biblio.xsl
+
+ Added code for creating URLs from biblioids with @class="doi" (representing Digital
+ Object Identifiers). See FR #1934434 and http://doi.org.
+
+ To do: 1) Add support for FO output. 2) Figure out how @class="doi" should be handled
+ for bibliorelation, bibliosource and citebiblioid.
+
+ â— Norman Walsh: formal.xsl
+
+ Don't use xsl:copy because it forces the resulting element to be in the same namespace as the source element; in the XHTML stylesheets, that's wrong. But the HTML-to-XHTML converter does the right thing with literal result elements, so use one of them.
+
+ â— Michael(tm) Smith: Makefile
+
+ Added checks and hacks to various makefiles to enable building
+ under Cygwin. This stuff is ugly and maybe not worth the mess and
+ trouble, but does seem to work as expected and not break anything
+ else.
+
+ â— Michael(tm) Smith: docbook.xsl
+
+ added "exslt" namespace binding to html/docbook.xsl file (in
+ addition to existing "exsl" binding. reason is because lack of it
+ seems to cause processing problems when using the profiled
+ version of the stylsheet
+
+ â— Norman Walsh: chunk-common.xsl
+
+ Rename link
+
+ â— Mauritz Jeanson: table.xsl
+
+ Added a fix to make rowsep apply to the last row of thead in entrytbl.
+
+ â— Michael(tm) Smith: synop.xsl
+
+ Simplified and streamlined handling of output for ANSI-style
+ funcprototype output, to correct a problem that was causing type
+ data to be lost in the output parameter definitions. For example,
+ for an instance like this:
+ <paramdef>void *<parameter>dataptr</parameter>[]</paramdef>
+ ... the brackets (indicating an array type) were being dropped.
+
+ â— Michael(tm) Smith: synop.xsl
+
+ Changed HTML handling of K&R-style paramdef output. The parameter
+ definitions are no longer output in a table (though the prototype
+ still is). The reason for the change is that the
+ kr-tabular-funcsynopsis-mode template was causing type data to be
+ lost in the output parameter definitions. For example, for an
+ instance like this:
+ <paramdef>void *<parameter>dataptr</parameter>[]</paramdef>
+ ... the brackets (indicating an array type) were being dropped.
+ The easiest way to deal with the problem is to not try to chop up
+ the parameter definitions and display them in table format, but to
+ instead just output them as-is. May not look quite as pretty, but
+ at least we can be sure no information is being lost...
+
+ â— Michael(tm) Smith: pi.xsl
+
+ updated wording of doc for funcsynopsis-style PI
+
+ â— Michael(tm) Smith: param.xweb; param.ent; synop.xsl
+
+ Removed the funcsynopsis.tabular.threshold param. It's no longer
+ being used in the code and hasn't been since mid 2006.
+
+ â— Mauritz Jeanson: graphics.xsl
+
+ Added support for the img.src.path parameter for SVG graphics. Closes bug #1888169.
+
+ â— Mauritz Jeanson: chunk-common.xsl
+
+ Added missing space.
+
+ â— Norman Walsh: component.xsl
+
+ Fix bug where component titles inside info elements were not handled properly
+
+ â— Michael(tm) Smith: pi.xsl
+
+ Moved dbhtml_stop-chunking embedded doc into alphabetical order,
+ fixed text of TCG section it see-also'ed.
+
+ â— David Cramer: pi.xsl
+
+ Added support for <?dbhtml stop-chunking?> processing instruction
+
+ â— David Cramer: chunk-common.xsl; pi.xsl
+
+ Added support for <?dbhtml stop-chunking?> processing instruction
+
+ â— David Cramer: glossary.xsl
+
+ Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry. Also added normalize-space to avoid missorting due to stray leading spaces.
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
+ and the "hot text" is the biblioid itself enclosed in brackets.
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Added support for @xlink:show in the simple.xlink template. The "new" and "replace"
+ values are supported (corresponding to values of "_blank" and "_top" for the
+ ulink.target parameter). I have assumed that @xlink:show should override ulink.target
+ for external URI links. This closes bugs #1762023 and #1727498.
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Moved declaration of comment.block.parents entity to common/entities.ent.
+
+ â— Mauritz Jeanson: param.xweb
+
+ Added link to profiling chapter of TCG.
+
+ â— Dongsheng Song: biblio-iso690.xsl
+
+ Change encoding from "windows-1250" to "UTF-8".
+
+ â— Robert Stayton: biblio.xsl
+
+ Add support in biblio collection to entries in bibliodivs.
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Added missing @role="tcg".
+
+ â— Mauritz Jeanson: chunk-common.xsl; titlepage.xsl
+
+ Refactored legalnotice/revhistory chunking, so that the use.id.as.filename
+ parameter as well as the dbhtml_filename PI are taken into account. A new named
+ template in titlepage.xsl is used to compute the filename.
+
+ â— Mauritz Jeanson: chunk-common.xsl; titlepage.xsl
+
+ An update to the fix for bug #1790495 (r7433):
+ The "ln-" prefix is output only when the legalnotice doesn't have an
+ @id/@xml:id, in which case the stylesheets generate an ID value,
+ resulting in a filename like "ln-7e0fwgj.html". This is useful because
+ without the prefix, you wouldn't know that the file contained a legalnotice.
+ The same logic is also applied to revhistory, using an "rh-" prefix.
+
+ â— Mauritz Jeanson: autoidx.xsl
+
+ Removed the [&scope;] predicate from the target variable in the template with name="reference".
+ This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
+ with index.on.type=1. Closes bug #1680836.
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Added 'ln-' prefix to the name of the legalnotice chunk, in order to match the
+ <link href"..."> that is output by make.legalnotice.head.links (chunk-common.xsl).
+ Modified the href attribute on the legalnotice link.
+ Closes bug #1790495.
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: other.xsl
+
+ slightly adjusted spacing around admonition markers
+
+ â— Michael(tm) Smith: refentry.xsl; utility.xsl
+
+ make sure refsect3 titles are preceded by a line of space, and
+ make the indenting of their child content less severe
+
+ â— Michael(tm) Smith: block.xsl
+
+ only indent verbatim environments in TTY output, not in non-TTY/PS
+
+ â— Michael(tm) Smith: block.xsl
+
+ made another adjustment to correct vertical alignment of admonition marker
+
+ â— Michael(tm) Smith: block.xsl; other.xsl
+
+ Adjusted/corrected alignment of adominition marker in PS/non-TTY output.
+
+ â— Michael(tm) Smith: endnotes.xsl
+
+ For PS/non-TTY output, display footnote/endnote numbers in
+ superscript.
+
+ â— Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl
+
+ Changed handling of hanging indents for cmdsynopsis, funcsynopsis,
+ and synopfragment such that they now look correct in non-TTY/PS
+ output. We now use the groff \w escape to hang by the actual width
+ -- in the current font -- of the command, funcdef, or
+ synopfragment references number (as opposed to hanging by the
+ number of characters). This rendering in TTY output remains the
+ same, since the width in monospaced TTY output is the same as the
+ number of characters.
+
+ Also, created new synopsis-block-start and synopsis-block-end
+ templates to use for cmdsynopsis and funcsynopsis instead of the
+ corresponding verbatim-* templates.
+
+ Along with those changes, also corrected a problem that caused the
+ content of synopfragment to be dropped, and made a
+ vertical-spacing change to adjust spacing around table titles and
+ among sibling synopfragment instances.
+
+ â— Michael(tm) Smith: other.xsl
+
+ use common l10.language.name template to retrieve English-language name
+
+ â— Michael(tm) Smith: synop.xsl; inline.xsl
+
+ added comment in code explaining why we don't put filename output
+ in italic (despite the fact that man guidelines say we should)
+
+ â— Michael(tm) Smith: inline.xsl
+
+ put filename output in monospace instead of italic
+
+ â— Michael(tm) Smith: synop.xsl
+
+ put cmdsynopsis in monospace
+
+ â— Michael(tm) Smith: inline.xsl
+
+ removed template match for literal. template matches for monospace
+ inlines are all imported from the HTML stylesheet
+
+ â— Michael(tm) Smith: block.xsl
+
+ don't indent verbatim environments that are descendants of
+ refsynopsisdiv, not put backgrounds behind them
+
+ â— Michael(tm) Smith: inline.xsl
+
+ set output of the literal element in monospace. this causes all
+ inline monospace instances in the git man pages to be set in
+ monospace (since DocBook XML source for git docs is generated with
+ asciidoc and asciidoc consistently outputs only <literal> for
+ inline monospace (not <command> or <code> or anything else).
+ Of course this only affects non-TTY output...
+
+ â— Michael(tm) Smith: utility.xsl
+
+ Added inline.monoseq named template.
+
+ â— Michael(tm) Smith: utility.xsl
+
+ don't bother using a custom register to store the previous
+ font-family value when setting blocks of text in code font; just
+ use \F[] .fam with no arg to switch back
+
+ â— Michael(tm) Smith: endnotes.xsl
+
+ put links in blue in PS output (note that this matches how groff
+ renders content marked up with the .URL macro)
+
+ â— Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent
+
+ removed man.links.are.underlined and added man.font.links. Also,
+ changed the default font formatting for links to bold.
+
+ â— Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent
+
+ Added new param man.base.url.for.relative.links .. specifies a
+ base URL for relative links (for ulink, @xlink:href, imagedata,
+ audiodata, videodata) shown in the generated NOTES section of
+ man-page output. The value of man.base.url.for.relative.links is
+ prepended to any relative URI that is a value of ulink url,
+ xlink:href, or fileref attribute.
+
+ If you use relative URIs in link sources in your DocBook refentry
+ source, and you leave man.base.url.for.relative.links unset, the
+ relative links will appear "as is" in the NOTES section of any
+ man-page output generated from your source. That's probably not
+ what you want, because such relative links are only usable in the
+ context of HTML output. So, to make the links meaningful and
+ usable in the context of man-page output, set a value for
+ man.base.url.for.relative.links that points
+ to the online version of HTML output generated from your DocBook
+ refentry source. For example:
+
+ <xsl:param name="man.base.url.for.relative.links"
+ >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param>
+
+ â— Michael(tm) Smith: info.xsl
+
+ If a source refentry contains a Documentation or DOCUMENTATION
+ section, don't report it as having missing AUTHOR information.
+ Also, if missing a contrib/personblurb for a person or org, report
+ pointers to http://docbook.sf.net/el/personblurb and to
+ http://docbook.sf.net/el/contrib
+
+ â— Michael(tm) Smith: info.xsl
+
+ If we encounter an author|editor|othercredit instance that lacks a
+ personblurb or contrib, report it to the user (because that means
+ we have no information about that author|editor|othercredit to
+ display in the generated AUTHOR|AUTHORS section...)
+
+ â— Michael(tm) Smith: info.xsl; docbook.xsl; other.xsl
+
+ if we can't find any usable author data, emit a warning and insert
+ a fixme in the output
+
+ â— Michael(tm) Smith: info.xsl
+
+ fixed bug in indenting of output for contrib instances in AUTHORS
+ section. Thanks to Daniel Leidert and the fglrx docs for exposing
+ the bug.
+
+ â— Michael(tm) Smith: block.xsl
+
+ for a para or simpara that is the first child of a callout,
+ suppress the .sp or .PP that would normally be output (because in
+ those cases, the output goes into a table cell, and the .sp or .PP
+ markup causes a spurious linebreak before it when displayed
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Added support for rendering co callouts and calloutlist instances.
+ So you can now use simple callouts -- marking up programlisting
+ and such with co instances -- and have the callouts displayed in
+ man-page output. ("simple callouts" means using co@id and
+ callout@arearefs pointing to co@id instances; in man/roff output,
+ we can't/don't support markup that uses areaset and area)
+
+ â— Michael(tm) Smith: block.xsl
+
+ only put a line of space after a verbatim if it's followed by a
+ text node or a paragraph
+
+ â— Michael(tm) Smith: utility.xsl
+
+ put verbatim environments in slightly smaller font in non-TTY
+ output
+
+ â— Michael(tm) Smith: lists.xsl
+
+ minor whitespace-only reformatting of lists.xsl source
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Made refinements/fixes to output of orderedlist and itemizedlist
+ -- in part, to get mysql man pages to display correctly. This
+ change causes a "\c" continuation marker to be added between
+ listitem markers and contents (to ensure that the content remains
+ on the same line as the marker when displayed)
+
+ â— Michael(tm) Smith: block.xsl
+
+ put a line of vertical space after all verbatim output that has
+ sibling content following it (not just if that sibling content is
+ a text node)
+
+ â— Michael(tm) Smith: block.xsl
+
+ refined spacing around titles for admonitions
+
+ â— Michael(tm) Smith: block.xsl; other.xsl
+
+ Deal with case of verbatim environments that have a linebreak
+ after the opening tag. Assumption is that users generally don't
+ want that linebreak to appear in output, so we do some groff
+ hackery to mess with vertical spacing and close the space.
+
+ â— Michael(tm) Smith: inline.xsl
+
+ indexterm instances now produce groff comments like this:
+
+ .\" primary: secondary: tertiary
+
+ remark instances, if non-empty, now produce groff comments
+
+ â— Michael(tm) Smith: charmap.groff.xsl; other.xsl
+
+ convert no-break space character to groff "\ \&" (instead of just
+ "\ "). the reason is that if a space occurs at the end of a line,
+ our processing causes it to be eaten. a real-world case of this is
+ the mysql(1) man page. appending the "\&" prevents that
+
+ â— Michael(tm) Smith: block.xsl
+
+ output "sp" before simpara output, not after it (outputting it
+ after results in undesirable whitespace in particular cases; for
+ example, in the hg/mercurial docs
+
+ â— Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl
+
+ renamed from title-preamble to pinch.together and replaced "sp -1"
+ between synopsis fragments with call to pinch.together instead
+
+ â— Michael(tm) Smith: table.xsl
+
+ use title-preamble template for table titles (instead of "sp -1"
+ hack), and "sp 1" after all tables (instead of just "sp"
+
+ â— Michael(tm) Smith: utility.xsl
+
+ created title-preamble template for suppressing line spacing after
+ headings
+
+ â— Michael(tm) Smith: info.xsl
+
+ further refinement of indenting in AUTHORS section
+
+ â— Michael(tm) Smith: block.xsl; other.xsl
+
+ refined handling of admonitions
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Use RS/RE in another place where we had IP ""
+
+ â— Michael(tm) Smith: info.xsl
+
+ Replace (ab)use of IP with "sp -1" in AUTHORS section with RS/RE
+ instead.
+
+ â— Michael(tm) Smith: table.xsl; synop.xsl; info.xsl
+
+ changed all instances of ".sp -1n" to ".sp -1"
+
+ â— Michael(tm) Smith: other.xsl
+
+ add extra line before SH heads only in non-TTY output
+
+ â— Michael(tm) Smith: block.xsl
+
+ Reworked output for admonitions (caution, important, note, tip,
+ warning). In TTY output, admonitions now get indented. In non-TTY
+ output, a colored marker (yellow) is displayed next to them.
+
+ â— Michael(tm) Smith: other.xsl
+
+ Added BM/EM macros for putting a colored marker in margin next to
+ a block of text.
+
+ â— Michael(tm) Smith: utility.xsl
+
+ created make.bold.title template by moving title-bolding part out
+ from nested-section-title template. This allows the bolding to
+ also be used by the template for formatting admonitions
+
+ â— Michael(tm) Smith: info.xsl
+
+ put .br before copyright contents to prevent them from getting run in
+
+ â— Michael(tm) Smith: refentry.xsl; other.xsl; utility.xsl
+
+ made point size of output for Refsect2 and Refsect3 heads bigger
+
+ â— Michael(tm) Smith: other.xsl
+
+ put slightly more space between SH head and underline in non-TTY
+ output
+
+ â— Michael(tm) Smith: param.xweb; param.ent; other.xsl
+
+ Added the man.charmap.subset.profile.english parameter and refined
+ the handling of charmap subsets to differentiate between English
+ and non-English source.
+
+ This way charmap subsets are now handled is this:
+
+ If the value of the man.charmap.use.subset parameter is non-zero,
+ and your DocBook source is not written in English (that is, if its
+ lang or xml:lang attribute has a value other than en), then the
+ character-map subset specified by the man.charmap.subset.profile
+ parameter is used instead of the full roff character map.
+
+ Otherwise, if the lang or xml:lang attribute on the root element
+ in your DocBook source or on the first refentry element in your
+ source has the value en or if it has no lang or xml:lang
+ attribute, then the character-map subset specified by the
+ man.charmap.subset.profile.english parameter is used instead of
+ man.charmap.subset.profile.
+
+ The difference between the two subsets is that
+ man.charmap.subset.profile provides mappings for characters in
+ Western European languages that are not part of the Roman
+ (English) alphabet (ASCII character set).
+
+ â— Michael(tm) Smith: other.xsl
+
+ Various updates, mainly related to uppercasing SH titles:
+
+ - added a "Language: " metadata line to the top comment area of
+ output man pages, to indicate the language the page is in
+
+ - added a "toupper" macro of doing locale-aware uppercasing of
+ SH titles and cross-references to SH titles; the mechanism
+ relies on the uppercase.alpha and lowercase.alpha DocBook
+ gentext keys to do locale-aware uppercasing based on the
+ language the page is written in
+
+ - added a "string.shuffle" template, which provides a library
+ function for "shuffling" two strings together into a single
+ string; it takes the first character for the first string, the
+ first character from second string, etc. The only current use
+ for it is to generate the argument for the groff tr request
+ that does string uppercasing.
+
+ - added make.tr.uppercase.arg and make.tr.normalcase.arg named
+ templates for use in generating groff code for uppercasing and
+ "normal"-casing SH titles
+
+ - made the BB/BE "background drawing" macros have effect only in
+ non-TTY output
+
+ - output a few comments in the top part of source
+
+ â— Michael(tm) Smith: utility.xsl
+
+ removed some leftover kruft
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ To create the name(s) for each man page, we now replace any spaces
+ in the refname(s) with underscores. This ensures that tools like
+ lexgrog(1) will be able to parse the name (lexgrog won't parse
+ names that contain spaces).
+
+ â— Michael(tm) Smith: docbook.xsl
+
+ Put a comment into source of man page to indicate where the main
+ content starts. (We now have a few of macro definitions at the
+ start of the source, so putting this comment in helps those that
+ might be viewing the source.)
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ refined mechanism for generating SH titles
+
+ â— Michael(tm) Smith: charmap.groff.xsl
+
+ Added zcaron, Zcaron, scaron, and Scaron to the groff character map.
+ This means that generated Finnish man pages will no longer contain
+ any raw accented characters -- they'll instead by marked up with
+ groff escapes.
+
+ â— Michael(tm) Smith: other.xsl; utility.xsl
+
+ corrected a regression I introduced about a year ago that caused
+ dots to be output just as "\." -- instead needs to be "\&." (which
+ is what it will be now, after this change)
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ Changed backend handling for generating titles for SH sections and
+ for cross-references to those sections. This should have no effect
+ on TTY output (behavior should remain the same hopefully) but
+ results in titles in normal case (instead of uppercase) in PS
+ output.
+
+ â— Michael(tm) Smith: info.xsl
+
+ use make.subheading template to make subheadings for AUTHORS and
+ COPYRIGHT sections (instead of harcoding roff markup)
+
+ â— Michael(tm) Smith: block.xsl
+
+ put code font around programlisting etc.
+
+ â— Michael(tm) Smith: synop.xsl; docbook.xsl
+
+ embed custom macro definitions in man pages, plus wrap synopsis in
+ code font
+
+ â— Michael(tm) Smith: endnotes.xsl
+
+ use the make.subheading template to generated SH subheading for
+ endnotes section.
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Added some templates for generating if-then-else conditional
+ markup in groff, so let's use those instead of hard-coding it in
+ multiple places...
+
+ â— Michael(tm) Smith: other.xsl; utility.xsl
+
+ Initial checkin of some changes related to making PS/PDF output
+ from "man -l -Tps" look better. The current changes:
+
+ - render synopsis and verbatim sections in a monospace/code font
+
+ - put a light-grey background behind all programlisting, screen,
+ and literallayout instances
+
+ - prevent SH heads in PS output from being rendered in uppercase
+ (as they are in console output)
+
+ - also display xrefs to SH heads in PS output in normal case
+ (instead of uppercase)
+
+ - draw a line under SH heads in PS output
+
+ The changes made to the code to support the above features were:
+
+ - added some embedded/custom macros: one for conditionally
+ upper-casing SH x-refs, one for redefining the SH macro
+ itself, with some conditional handling for PS output, and
+ finally a macro for putting a background/screen (filled box)
+ around a block of text (e.g., a program listing) in PS output
+
+ - added utility templates for wrapping blocks of text in code
+ font; also templates for inline code font
+
+ â— Robert Stayton: refentry.xsl
+
+ refpurpose nodes now get apply-templates instead of just normalize-space().
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Fixed alignment of first lined of text for each listitem in
+ orderedlist output for TTY. Existing code seemed to have been
+ causing an extra undesirable space to appear.
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Wrapped some roff conditionals around roff markup for orderedlist
+ and itemizedlist output, so that the lists look acceptable in PS
+ output as well as TTY.
+
+ â— Michael(tm) Smith: pi.xsl; synop.xsl; param.xweb; param.ent
+
+ Added the man.funcsynopsis.style parameter. Has the same effect in
+ manpages output as the funcsynopsis.style parameter has in HTML
+ output -- except that its default value is 'ansi' instead of 'kr'.
+
+ â— Michael(tm) Smith: synop.xsl
+
+ Reworked handling of K&R funcprototype output. It no longer relies
+ on the HTML kr-tabular templates, but instead just does direct
+ transformation to roff. For K&R output, it displays the paramdef
+ output in an indented list following the prototype.
+
+ â— Michael(tm) Smith: synop.xsl
+
+ Properly integrated handling for K&R output into manpages
+ stylesheet. The choice between K&R output and ANSI output is
+ currently controlled through use of the (HTML) funcsynopsis.style
+ parameter. Note that because the mechanism does currently rely on
+ funcsynopsis.style, the default in manpages output is now K&R
+ (because that's the default of that param). But I suppose I ought
+ to create a man.funcsynopsis.style and make the default for that
+ ANSI (to preserve the existing default behavior).
+
+ â— Michael(tm) Smith: docbook.xsl
+
+ added manpages/pi.xsl file
+
+ â— Michael(tm) Smith: .cvsignore; pi.xsl
+
+ Added "dbman funcsynopsis-style" PI and incorporated it into the
+ doc build.
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ Fixed regression that caused an unescaped dash to be output
+ between refname and refpurpose content. Closes bug #1894244.
+ Thanks to Daniel Leidert.
+
+ â— Michael(tm) Smith: other.xsl
+
+ Fixed problem with dots being escaped in filenames of generated
+ man files. Closes #1827195. Thanks to Daniel Leidert.
+
+ â— Michael(tm) Smith: inline.xsl
+
+ Added support for processing structfield (was appearing in roff
+ output surrounded by HTML <em> tags; fixed so that it gets roff
+ ital markup). Closes bug #1858329. Thanks to Sam Varshavchik.
+
+Epub
+
+The following changes have been made to the epub code since the 1.73.2 release.
+
+ â— Keith Fahlgren: bin/spec/README; bin/spec/epub_realbook_spec.rb
+
+ 'Realbook' spec now passes
+
+ â— Keith Fahlgren: bin/dbtoepub; README; bin/spec/README; bin/lib/docbook.rb;
+ bin/spec/epub_r⋯
+
+ Very primitive Windows support for dbtoepub reference implementation; README for running tests and for the .epub target in general; shorter realbook test document (still fails for now)
+
+ â— Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/
+ docbook.rb; bin/s⋯
+
+ Changes to OPF spine to not duplicate idrefs for documents with parts not at the root; regression specs for same
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Fixing linking to cover @id, distinct from other needs of cover-image-id (again, thanks to Martin Goerner)
+
+ â— Keith Fahlgren: docbook.xsl
+
+ Updating the title of the toc element in the guide to be more explicit (thanks to Martin Goerner)
+
+ â— Keith Fahlgren: bin/spec/examples/amasque_exploded/content.opf; bin/spec/
+ examples/amasque_⋯
+
+ Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
+ and Keith Fahlgren of O'Reilly.
+
+ â— Keith Fahlgren: docbook.xsl
+
+ == General epub test support
+
+ $ spec -O ~/.spec.opts spec/epub_spec.rb
+
+ DocBook::Epub
+ - should be able to be created
+ - should fail on a nonexistent file
+ - should be able to render to a file
+ - should create a file after rendering
+ - should have the correct mimetype after rendering
+ - should be valid .epub after rendering an article
+ - should be valid .epub after rendering an article without sections
+ - should be valid .epub after rendering a book
+ - should be valid .epub after rendering a book even if it has one graphic
+ - should be valid .epub after rendering a book even if it has many graphics
+ - should be valid .epub after rendering a book even if it has many duplicated graphics
+ - should report an empty file as invalid
+ - should confirm that a valid .epub file is valid
+ - should not include PDFs in rendered epub files as valid image inclusions
+ - should include a TOC link in rendered epub files for <book>s
+
+ Finished in 20.608395 seconds
+
+ 15 examples, 0 failures
+
+
+ == Verbose epub test coverage against _all_ of the testdocs
+
+ Fails on only (errors truncated):
+ 1)
+ 'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/calloutlist.003.xml [30]' FAILED
+ 'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/cmdsynopsis.001.xml [35]' FAILED
+ ....
+
+ Finished in 629.89194 seconds
+
+ 224 examples, 15 failures
+
+ 224 examples, 15 failures yields 6% failure rate
+
+HTMLHelp
+
+The following changes have been made to the htmlhelp code since the 1.73.2
+release.
+
+ â— Mauritz Jeanson: htmlhelp-common.xsl
+
+ Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to
+ the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+ This makes chunk.quietly=1 suppress chunk filename messages also for help
+ support files (which seems to be what one would expect). See bug #1648360.
+
+Eclipse
+
+The following changes have been made to the eclipse code since the 1.73.2
+release.
+
+ â— David Cramer: eclipse.xsl
+
+ Use sortas attributes (if they exist) when sorting indexterms
+
+ â— David Cramer: eclipse.xsl
+
+ Added support for indexterm/see in eclipse index.xml
+
+ â— Mauritz Jeanson: eclipse.xsl
+
+ Added <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ to helpidx template.
+
+ â— David Cramer: eclipse.xsl
+
+ Generate index.xml file and add related goo to plugin.xml file. Does not yet support see and seealso.
+
+ â— Mauritz Jeanson: eclipse.xsl
+
+ Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to
+ the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+ This makes chunk.quietly=1 suppress chunk filename messages also for help
+ support files (which seems to be what one would expect). See bug #1648360.
+
+JavaHelp
+
+The following changes have been made to the javahelp code since the 1.73.2
+release.
+
+ â— Mauritz Jeanson: javahelp.xsl
+
+ Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to
+ the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+ This makes chunk.quietly=1 suppress chunk filename messages also for help
+ support files (which seems to be what one would expect). See bug #1648360.
+
+Roundtrip
+
+The following changes have been made to the roundtrip code since the 1.73.2
+release.
+
+ â— Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl
+
+ fix table/cell borders for wordml, fix formal figure, add emphasis-strong
+
+ â— Mauritz Jeanson: supported.xml
+
+ Changed @cols to 5.
+
+ â— Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml
+
+ added pubdate, fixed metadata handling in biblioentry
+
+ â— Steve Ball: supported.xml
+
+ Added support for edition.
+
+ â— Steve Ball: docbook-pages.xsl; wordml-blocks.xsl; docbook.xsl; wordml.xsl;
+ pages-normalise⋯
+
+ Removed stylesheets for old, deprecated conversion method.
+
+ â— Steve Ball: specifications.xml; dbk2ooo.xsl; blocks2dbk.xsl; dbk2pages.xsl;
+ blocks2dbk.dtd⋯
+
+ Added support for Open Office, added edition element, improved list and table support in Word and Pages
+
+ â— Steve Ball: normalise-common.xsl; blocks2dbk.xsl; dbk2pages.xsl;
+ template-pages.xml; templ⋯
+
+ Fixed bug in WordML table handling, improved table handling for Pages 08, synchronised WordML and Pages templates.
+
+ â— Steve Ball: normalise-common.xsl; blocks2dbk.xsl; wordml2normalise.xsl;
+ dbk2wp.xsl
+
+ fix caption, attributes
+
+ â— Steve Ball: specifications.xml; blocks2dbk.xsl; wordml2normalise.xsl;
+ blocks2dbk.dtd; temp⋯
+
+ Fixes to table and list handling
+
+ â— Steve Ball: blocks2dbk.xsl
+
+ added support for explicit emphasis character styles
+
+ â— Steve Ball: wordml2normalise.xsl
+
+ added support for customisation in image handling
+
+ â— Steve Ball: blocks2dbk.xsl
+
+ Added inlinemediaobject support for metadata.
+
+ â— Steve Ball: normalise-common.xsl; blocks2dbk.xsl; template.xml;
+ dbk2wordml.xsl; dbk2wp.xsl
+
+ Added support file. Added style locking. Conversion bug fixes.
+
+Slides
+
+The following changes have been made to the slides code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: fo/Makefile; html/Makefile
+
+ Added checks and hacks to various makefiles to enable building
+ under Cygwin. This stuff is ugly and maybe not worth the mess and
+ trouble, but does seem to work as expected and not break anything
+ else.
+
+ â— Jirka Kosek: html/plain.xsl
+
+ Added support for showing foil number
+
+Website
+
+The following changes have been made to the website code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: extensions/saxon64/.classes/.gitignore; extensions/
+ xalan2/.classes/com/⋯
+
+ renamed a bunch more .cvsignore files to .gitignore (to facilitate use of git-svn)
+
+Params
+
+The following changes have been made to the params code since the 1.73.2
+release.
+
+ â— Keith Fahlgren: epub.autolabel.xml
+
+ New parameter for epub, epub.autolabel
+
+ â— Mauritz Jeanson: table.frame.border.color.xml; table.cell.padding.xml;
+ table.cell.border.t⋯
+
+ Added missing refpurposes and descriptions.
+
+ â— Keith Fahlgren: ade.extensions.xml
+
+ Extensions to support Adobe Digital Editions extensions in .epub output.
+
+ â— Mauritz Jeanson: fop.extensions.xml; fop1.extensions.xml
+
+ Clarified that fop1.extensions is for FOP 0.90 and later. Version 1 is not here yet...
+
+ â— Michael(tm) Smith: man.links.are.underlined.xml;
+ man.endnotes.list.enabled.xml; man.font.l⋯
+
+ removed man.links.are.underlined and added man.font.links. Also,
+ changed the default font formatting for links to bold.
+
+ â— Michael(tm) Smith: man.base.url.for.relative.links.xml
+
+ Added new param man.base.url.for.relative.links .. specifies a
+ base URL for relative links (for ulink, @xlink:href, imagedata,
+ audiodata, videodata) shown in the generated NOTES section of
+ man-page output. The value of man.base.url.for.relative.links is
+ prepended to any relative URI that is a value of ulink url,
+ xlink:href, or fileref attribute.
+
+ If you use relative URIs in link sources in your DocBook refentry
+ source, and you leave man.base.url.for.relative.links unset, the
+ relative links will appear "as is" in the NOTES section of any
+ man-page output generated from your source. That's probably not
+ what you want, because such relative links are only usable in the
+ context of HTML output. So, to make the links meaningful and
+ usable in the context of man-page output, set a value for
+ man.base.url.for.relative.links that points
+ to the online version of HTML output generated from your DocBook
+ refentry source. For example:
+
+ <xsl:param name="man.base.url.for.relative.links"
+ >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param>
+
+ â— Michael(tm) Smith: man.string.subst.map.xml
+
+ squeeze .sp\n.sp into a single .sp (to prevent a extra, spurious
+ line of whitespace from being inserted after programlisting etc.
+ in certain cases)
+
+ â— Michael(tm) Smith: refentry.manual.fallback.profile.xml;
+ refentry.source.fallback.profile.⋯
+
+ don't use refmiscinfo@class=date value as fallback for refentry
+ "source" or "manual" metadata fields
+
+ â— Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml;
+ man.charmap.su⋯
+
+ made some further doc tweaks related to the
+ man.charmap.subset.profile.english param
+
+ â— Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml;
+ man.charmap.su⋯
+
+ Added the man.charmap.subset.profile.english parameter and refined
+ the handling of charmap subsets to differentiate between English
+ and non-English source.
+
+ This way charmap subsets are now handled is this:
+
+ If the value of the man.charmap.use.subset parameter is non-zero,
+ and your DocBook source is not written in English (that is, if its
+ lang or xml:lang attribute has a value other than en), then the
+ character-map subset specified by the man.charmap.subset.profile
+ parameter is used instead of the full roff character map.
+
+ Otherwise, if the lang or xml:lang attribute on the root element
+ in your DocBook source or on the first refentry element in your
+ source has the value en or if it has no lang or xml:lang
+ attribute, then the character-map subset specified by the
+ man.charmap.subset.profile.english parameter is used instead of
+ man.charmap.subset.profile.
+
+ The difference between the two subsets is that
+ man.charmap.subset.profile provides mappings for characters in
+ Western European languages that are not part of the Roman
+ (English) alphabet (ASCII character set).
+
+ â— Michael(tm) Smith: man.charmap.subset.profile.xml
+
+ Added to default charmap used by manpages:
+
+ - the "letters" part of the 'C1 Controls And Latin-1 Supplement
+ (Latin-1 Supplement)' Unicode block
+ - Latin Extended-A block (but not all of the characters from
+ that block have mappings in groff, so some of them are still
+ passed through as-is)
+
+ The effects of this change are that in man pages generated for
+ most Western European languages and for Finnish, all characters
+ not part of the Roman alphabet are (e.g., "accented" characters)
+ are converted to groff escapes.
+
+ Previously, by default we passed through those characters as is
+ (and users needed to use the full charmap if they wanted to have
+ those characters converted).
+
+ As a result of this change, man pages generated for Western
+ European languages will be viewable in some environments in which
+ they are not viewable if the "raw" non-Roman characters are in them.
+
+ â— Mauritz Jeanson: generate.legalnotice.link.xml;
+ generate.revhistory.link.xml
+
+ Added information on how the filename is computed.
+
+ â— Mauritz Jeanson: default.table.width.xml
+
+ Clarified PI usage.
+
+ â— Michael(tm) Smith: man.funcsynopsis.style.xml
+
+ Added the man.funcsynopsis.style parameter. Has the same effect in
+ manpages output as the funcsynopsis.style parameter has in HTML
+ output -- except that its default value is 'ansi' instead of 'kr'.
+
+ â— Michael(tm) Smith: funcsynopsis.tabular.threshold.xml
+
+ Removed the funcsynopsis.tabular.threshold param. It's no longer
+ being used in the code and hasn't been since mid 2006.
+
+ â— Mauritz Jeanson: table.properties.xml
+
+ Set keep-together.within-column to "auto". This seems to be the most sensible
+ default value for tables.
+
+ â— Mauritz Jeanson: informal.object.properties.xml;
+ admon.graphics.extension.xml; informalequ⋯
+
+ Several small documentation fixes.
+
+ â— Mauritz Jeanson: manifest.in.base.dir.xml
+
+ Wording fixes.
+
+ â— Mauritz Jeanson: header.content.properties.xml;
+ footer.content.properties.xml
+
+ Added refpurpose.
+
+ â— Mauritz Jeanson: ulink.footnotes.xml; ulink.show.xml
+
+ Updated for DocBook 5.
+
+ â— Mauritz Jeanson: index.method.xml; glossterm.auto.link.xml
+
+ Spelling and wording fixes.
+
+ â— Mauritz Jeanson: callout.graphics.extension.xml
+
+ Clarifed available graphics formats and extensions.
+
+ â— Mauritz Jeanson: footnote.sep.leader.properties.xml
+
+ Corrected refpurpose.
+
+ â— Jirka Kosek: footnote.properties.xml
+
+ Added more properties which make it possible to render correctly footnotes placed inside verbatim elements.
+
+ â— Mauritz Jeanson: img.src.path.xml
+
+ img.src.path works with inlinegraphic too.
+
+ â— Mauritz Jeanson: saxon.character.representation.xml
+
+ Added TCG link.
+
+ â— Mauritz Jeanson: img.src.path.xml
+
+ Updated description of img.src.path. Bug #1785224 revealed that
+ there was a risk of misunderstanding how it works.
+
+Profiling
+
+The following changes have been made to the profiling code since the 1.73.2
+release.
+
+ â— Jirka Kosek: xsl2profile.xsl
+
+ Added new rules to profile all content generated by HTML Help (including alias files)
+
+ â— Robert Stayton: profile-mode.xsl
+
+ use mode="profile" instead of xsl:copy-of for attributes so
+ they can be more easily customized.
+
+Tools
+
+The following changes have been made to the tools code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: make/Makefile.DocBook
+
+ various changes and additions to support making with asciidoc as
+ an input format
+
+ â— Michael(tm) Smith: make/Makefile.DocBook
+
+ make dblatex the default PDF maker for the example makefile
+
+ â— Michael(tm) Smith: xsl/build/html2roff.xsl
+
+ Reworked handling of K&R funcprototype output. It no longer relies
+ on the HTML kr-tabular templates, but instead just does direct
+ transformation to roff. For K&R output, it displays the paramdef
+ output in an indented list following the prototype.
+
+ â— Mauritz Jeanson: xsl/build/make-xsl-params.xsl
+
+ Made attribute-sets members of the param list. This enables links to attribute-sets in the
+ reference documentation.
+
+ â— Michael(tm) Smith: xsl/build/html2roff.xsl
+
+ use .BI handling in K&R funsynopsis output for manpages, just as
+ we do already of ANSI output
+
+ â— Michael(tm) Smith: xsl/build/html2roff.xsl
+
+ Implemented initial support for handling tabular K&R output of
+ funcprototype in manpages output. Accomplished by adding more
+ templates to the intermediate HTML-to-roff stylesheet that the
+ build uses to create the manpages/html-synop.xsl stylesheet.
+
+ â— Michael(tm) Smith: xsl/build/doc-link-docbook.xsl
+
+ Made the xsl/tools/xsl/build/doc-link-docbook.xsl stylesheet
+ import profile-docbook.xsl, so that we can do profiling of release
+ notes. Corrected some problems in the target for the release-notes
+ HTML build.
+
+Extensions
+
+The following changes have been made to the extensions code since the 1.73.2
+release.
+
+ â— Keith Fahlgren: Makefile
+
+ Use DOCBOOK_SVN variable everywhere, please; build with PDF_MAKER
+
+ â— Michael(tm) Smith: Makefile
+
+ moved extensions build targets from master xsl/Makefile to
+ xsl/extensions/Makefile
+
+ â— Michael(tm) Smith: .cvsignore
+
+ re-adding empty extensions subdir
+
+XSL-Saxon
+
+The following changes have been made to the xsl-saxon code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: VERSION
+
+ bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
+ recent change to snapshot build infrastructure
+
+ â— Michael(tm) Smith: nbproject/build-impl.xml; nbproject/project.properties
+
+ Changed hard-coded file references in "clean" target to variable
+ references. Closes #1792043. Thanks to Daniel Leidert.
+
+ â— Michael(tm) Smith: VERSION; Makefile
+
+ Did post-release wrap-up of xsl-saxon and xsl-xalan dirs
+
+ â— Michael(tm) Smith: nbproject/build-impl.xml; VERSION; Makefile; test
+
+ More tweaks to get release-ready
+
+XSL-Xalan
+
+The following changes have been made to the xsl-xalan code since the 1.73.2
+release.
+
+ â— Michael(tm) Smith: VERSION
+
+ bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
+ recent change to snapshot build infrastructure
+
+ â— Michael(tm) Smith: nbproject/build-impl.xml
+
+ Changed hard-coded file references in "clean" target to variable
+ references. Closes #1792043. Thanks to Daniel Leidert.
+
+ â— Michael(tm) Smith: Makefile; VERSION
+
+ Did post-release wrap-up of xsl-saxon and xsl-xalan dirs
+
+ â— Michael(tm) Smith: Makefile; nbproject/build-impl.xml; VERSION
+
+ More tweaks to get release-ready
+
+XSL-libxslt
+
+The following changes have been made to the xsl-libxslt code since the 1.73.2
+release.
+
+ â— Mauritz Jeanson: python/xslt.py
+
+ Print the result to stdout if no outfile has been given.
+ Some unnecessary semicolons removed.
+
+ â— Mauritz Jeanson: python/xslt.py
+
+ Added a function that quotes parameter values (to ensure that they are interpreted as strings).
+ Replaced deprecated functions from the string module with string methods.
+
+ â— Michael(tm) Smith: python/README; python/README.LIBXSLT
+
+ renamed xsl-libxslt/python/README to xsl-libxslt/python/README.LIBXSLT
+
+ â— Mauritz Jeanson: python/README
+
+ Tweaked the text a little.
+
+Release Notes: 1.73.2
+
+This is solely a minor bug-fix update to the 1.73.1 release. It fixes a
+packaging error in the 1.73.1 package, as well as a bug in footnote handling in
+FO output.
+
+Release: 1.73.1
+
+This is mostly a bug-fix update to the 1.73.0 release.
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.73.0
+release.
+
+ â— Mauritz Jeanson: locale/de.xml
+
+ Applied patch #1766009.
+
+ â— Michael(tm) Smith: locale/lv.xml
+
+ Added localization for ProductionSet.
+
+FO
+
+The following changes have been made to the fo code since the 1.73.0 release.
+
+ â— Mauritz Jeanson: table.xsl
+
+ Modified the tgroup template so that, for tables with multiple tgroups,
+ a width attribute is output on all corresponding fo:tables. Previously,
+ there was a test prohibiting this (and a comment saying that outputting more
+ than one width attribute will cause an error). But this seems to be no longer
+ relevant; it is not a problem with FOP 0.93 or XEP 4.10. Closes bug #1760559.
+
+ â— Mauritz Jeanson: graphics.xsl
+
+ Replaced useless <a> elements with warning messages (textinsert extension).
+
+ â— Mauritz Jeanson: admon.xsl
+
+ Enabled generation of ids (on fo:wrapper) for indexterms in admonition titles, so that page
+ references in the index can be created. Closes bug #1775086.
+
+HTML
+
+The following changes have been made to the html code since the 1.73.0 release.
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Added <xsl:call-template name="process.footnotes"/> to abstract template
+ so that footnotes in info/abstract are processed. Closes bug #1760907.
+
+ â— Michael(tm) Smith: pi.xsl; synop.xsl
+
+ Changed handling of HTML output for the cmdsynopsis and
+ funcsynopsis elements, such that a@id instances are generated for
+ them if they are descendants of any element containing a dbcmdlist
+ or dbfunclist PI. Also, update the embedded reference docs for the
+ dbcmdlist and dbfunclist PIs to make it clear that they can be
+ used within any element for which cmdsynopsis or funcsynopsis are
+ valid children.
+
+ â— Michael(tm) Smith: formal.xsl
+
+ Reverted the part of revision 6952 that caused a@id anchors to be
+ generated for output of informal objects. Thanks to Sam Steingold
+ for reporting.
+
+ â— Robert Stayton: glossary.xsl
+
+ Account for a glossary with no glossdiv or glossentry children.
+
+ â— Mauritz Jeanson: titlepage.xsl
+
+ Modified legalnotice template so that the base.name parameter is calculated
+ in the same way as for revhistory chunks. Using <xsl:apply-templates
+ mode="chunk-filename" select="."/> did not work for single-page output since
+ the template with that mode is in chunk-code.xsl.
+
+ â— Mauritz Jeanson: graphics.xsl
+
+ Updated support for SVG (must be a child of imagedata in DB 5).
+ Added support for MathML in imagedata.
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Added documentation for the dbhh PI (used for context-sensitive HTML Help).
+ (The two templates matching 'dbhh' are still in htmlhelp-common.xsl).
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.73.0
+release.
+
+ â— Michael(tm) Smith: endnotes.xsl
+
+ In manpages output, generate warnings about notesources with
+ non-para children only if the notesource is a footnote or
+ annotation. Thanks to Sam Steingold for reporting problems with
+ the existing handling.
+
+HTMLHelp
+
+The following changes have been made to the htmlhelp code since the 1.73.0
+release.
+
+ â— Michael(tm) Smith: htmlhelp-common.xsl
+
+ Added single-pass namespace-stripping support to the htmlhelp,
+ eclipse, and javahelp stylesheets.
+
+Eclipse
+
+The following changes have been made to the eclipse code since the 1.73.0
+release.
+
+ â— Michael(tm) Smith: eclipse.xsl
+
+ Added single-pass namespace-stripping support to the htmlhelp,
+ eclipse, and javahelp stylesheets.
+
+JavaHelp
+
+The following changes have been made to the javahelp code since the 1.73.0
+release.
+
+ â— Michael(tm) Smith: javahelp.xsl
+
+ Added single-pass namespace-stripping support to the htmlhelp,
+ eclipse, and javahelp stylesheets.
+
+Roundtrip
+
+The following changes have been made to the roundtrip code since the 1.73.0
+release.
+
+ â— Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; pages2normalise.xsl
+
+ Modularised blocks2dbk to allow customisation,
+ Added support for tables to pages2normalise
+
+Params
+
+The following changes have been made to the params code since the 1.73.0
+release.
+
+ â— Robert Stayton: procedure.properties.xml
+
+ procedure was inheriting keep-together from formal.object.properties, but
+ a procedure does not need to be kept together by default.
+
+ â— Dave Pawson: title.font.family.xml;
+ component.label.includes.part.label.xml; table.frame.b⋯
+
+ Regular formatting re-org.
+
+Release: 1.73.0
+
+This release includes important bug fixes and adds the following significant
+feature changes:
+
+New localizations and localization updates
+
+ We added two new localizations: Latvian and Esperanto, and made updates to
+ the Czech, Chinese Simplified, Mongolian, Serbian, Italian, and Ukrainian
+ localizations.
+
+ISO690 citation style for bibliography output.
+
+ Set the bibliography.style parameter to iso690 to use ISO690 style.
+
+New documentation for processing instructions (PI)
+
+ The reference documentation that ships with the release now includes
+ documentation on all PIs that you can use to control output from the
+ stylesheets.
+
+New profiling parameters for audience and wordsize
+
+ You can now do profiling based on the values of the audience and wordsize
+ attributes.
+
+Changes to man-page output
+
+ The manpages stylesheet now supports single-pass profiling and single-pass
+ DocBook 5 namespace stripping (just as the HTML and FO stylesheets also
+ do). Also, added handling for mediaobject & inlinemediaobject. (Each
+ imagedata, audiodata, or videodata element within a mediaobject or inline
+ mediaobject is now treated as a "notesource" and so handled in much the
+ same way as links and annotation/alt/footnote are in manpages output.) And
+ added the man.authors.section.enabled and man.copyright.section.enabled
+ parameters to enable control over whether output includes auto-generated
+ AUTHORS and COPYRIGHT sections.
+
+Highlighting support for C
+
+ The highlighting mechanism for generating syntax-highlighted code snippets
+ in output now supports C code listings (along with Java, PHP, XSLT, and
+ others).
+
+Experimental docbook-xsl-update script
+
+ We added an experimental docbook-xsl-update script, the purpose of which is
+ to facilitate easy sync-up to the latest docbook-xsl snapshot (by means of
+ rsync).
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.72.0
+release.
+
+ â— Michael(tm) Smith: locale/lv.xml; Makefile
+
+ Added Latvian localization file, from Girts Ziemelis.
+
+ â— Dongsheng Song: locale/zh_cn.xml
+
+ Brought up to date with en.xml in terms of items. A few strings marked for translation.
+
+ â— Jirka Kosek: locale/cs.xml
+
+ Added missing translations
+
+ â— Robert Stayton: locale/eo.xml
+
+ New locale for Esperanto.
+
+ â— Robert Stayton: locale/mn.xml
+
+ Update from Ganbold Tsagaankhuu.
+
+ â— Jirka Kosek: locale/en.xml; locale/cs.xml
+
+ Rules for normalizing glossary entries before they are sorted can be now different for each language.
+
+ â— Michael(tm) Smith: locale/sr_Latn.xml; locale/sr.xml
+
+ Committed changes from MiloÅ¡ KomarÄević to Serbian files.
+
+ â— Robert Stayton: locale/ja.xml
+
+ Fix chapter in context xref-number-and-title
+
+ â— Robert Stayton: locale/it.xml
+
+ Improved version from contributor.
+
+ â— Mauritz Jeanson: locale/uk.xml
+
+ Applied patch 1592083.
+
+Common
+
+The following changes have been made to the common code since the 1.72.0
+release.
+
+ â— Michael(tm) Smith: labels.xsl
+
+ Changed handling of reference auto-labeling such that reference
+ (when it appears at the component level) is now affected by the
+ label.from.part param, just as preface, chapter, and appendix.
+
+ â— Michael(tm) Smith: common.xsl
+
+ Added support to the HTML stylesheets for proper processing of
+ orgname as a child of author.
+
+ â— Michael(tm) Smith: refentry.xsl
+
+ Refined logging output of refentry metadata-gathering template;
+ for some cases of "missing" elements (refmiscinfo stuff, etc.),
+ the log messages now include URL to corresponding page in the
+ Definitive Guide (TDG).
+
+ â— Robert Stayton: titles.xsl
+
+ Add refsection/info/title support.
+
+ â— Michael(tm) Smith: titles.xsl
+
+ Added support for correct handling of xref to elements that
+ contain info/title descendants but no title children.
+
+ This should be further refined so that it handles any *info
+ elements. And there are probably some other places where similar
+ handling for *info/title should be added.
+
+ â— Mauritz Jeanson: pi.xsl
+
+ Modified <xsl:when> in datetime.format template to work
+ around Xalan bug.
+
+FO
+
+The following changes have been made to the fo code since the 1.72.0 release.
+
+ â— Robert Stayton: component.xsl
+
+ Add parameters to the page.sequence utility template.
+
+ â— Mauritz Jeanson: xref.xsl
+
+ Added template for xref to area/areaset.
+ Part of fix for bug #1675513 (xref to area broken).
+
+ â— Michael(tm) Smith: inline.xsl
+
+ Added template match for person element to fo stylesheet.
+
+ â— Robert Stayton: lists.xsl
+
+ Added support for spacing="compact" in variablelist, per bug report #1722540.
+
+ â— Robert Stayton: table.xsl
+
+ table pgwide="1" should also use pgwide.properties attribute-set.
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Make citations numbered if bibliography.numbered != 0.
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add new profiling parameters for audience and wordsize.
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Added callout.icon.size parameter.
+
+ â— Robert Stayton: inline.xsl; xref.xsl
+
+ Add support for xlink as olink.
+
+ â— Robert Stayton: autotoc.xsl; param.xweb; param.ent
+
+ Add support for qanda.in.toc to fo TOC.
+
+ â— Robert Stayton: component.xsl
+
+ Improved the page.sequence utility template for use with book.
+
+ â— Robert Stayton: division.xsl
+
+ Refactored the big book template into smaller pieces.
+ Used the "page.sequence" utility template in
+ component.xsl to shorten the toc piece.
+ Added placeholder templates for front.cover and back.cover.
+
+ â— Robert Stayton: param.xweb; param.ent; sections.xsl
+
+ Add section.container.element parameter to enable
+ pgwide spans inside sections.
+
+ â— Robert Stayton: param.xweb; param.ent; component.xsl
+
+ Add component.titlepage.properties attribute-set to
+ support span="all" and other properties.
+
+ â— Robert Stayton: htmltbl.xsl; table.xsl
+
+ Apply table.row.properties template to html tr rows too.
+ Add keep-with-next to table.row.properties when row is in thead.
+
+ â— Robert Stayton: table.xsl
+
+ Add support for default.table.frame parameter.
+ Fix bug 1575446 rowsep last check for @morerows.
+
+ â— Robert Stayton: refentry.xsl
+
+ Add support for info/title in refsections.
+
+ â— David Cramer: qandaset.xsl
+
+ Make fo questions and answers behave the same way as html
+
+ â— Jirka Kosek: lists.xsl
+
+ Added missing attribute set for procedure
+
+ â— Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent;
+ biblio-iso690.xsl
+
+ Added support for formatting biblioentries according to ISO690 citation style.
+ New bibliography style can be turned on by setting parameter bibliography.style to "iso690"
+ The code was provided by Jana Dvorakova
+
+ â— Robert Stayton: param.xweb; param.ent; pagesetup.xsl
+
+ Add header.table.properties and footer.table.properties attribute-sets.
+
+ â— Robert Stayton: inline.xsl
+
+ Add fop1.extensions for menuchoice arrow handling exception.
+
+HTML
+
+The following changes have been made to the html code since the 1.72.0 release.
+
+ â— Mauritz Jeanson: param.xweb; param.ent
+
+ Moved declaration and documentation of javahelp.encoding from javahelp.xsl to the
+ regular "parameter machinery".
+
+ â— Michael(tm) Smith: admon.xsl
+
+ Changed handling of titles for note, warning, caution, important,
+ tip admonitions: We now output and HTML h3 head only if
+ admon.textlabel is non-zero or if the admonition actually contains
+ a title; otherwise, we don't output an h3 head at all.
+ (Previously, we were outputting an empty h3 if the admon.textlabel
+ was zero and if the admonition had no title.)
+
+ â— Mauritz Jeanson: xref.xsl
+
+ Added template for xref to area/areaset.
+ Part of fix for bug #1675513 (xref to area broken).
+
+ â— Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; sections.xsl
+
+ Added fixes to avoid duplicate ids when generate.id.attributes = 1.
+ This (hopefully) closes bug #1671052.
+
+ â— Michael(tm) Smith: formal.xsl; pi.xsl
+
+ Made the dbfunclist PI work as intended. Also added doc for
+ dbfunclist and dbcmdlist PIs.
+
+ â— Michael(tm) Smith: pi.xsl; synop.xsl
+
+ Made the dbcmdlist work the way it appears to have been intended
+ to work. Restored dbhtml-dir template back to pi.xsl.
+
+ â— Michael(tm) Smith: titlepage.xsl; param.xweb; param.ent
+
+ Added new param abstract.notitle.enabled.
+ If non-zero, in output of the abstract element on titlepages,
+ display of the abstract title is suppressed.
+ Because sometimes you really don't want or need that title
+ there...
+
+ â— Michael(tm) Smith: chunk-code.xsl; graphics.xsl
+
+ When we are chunking long descriptions for mediaobject instances
+ into separate HTML output files, and use.id.as.filename is
+ non-zero, if a mediaobject has an ID, use that ID as the basename
+ for the long-description file (otherwise, we generate an ID for it
+ and use that ID as the basename for the file).
+ The parallels the recent change made to cause IDs for legalnotice
+ instances to be used as basenames for legalnotice chunks.
+ Also, made some minor refinements to the recent changes for
+ legalnotice chunk handling.
+
+ â— Michael(tm) Smith: titlepage.xsl
+
+ Added support to the HTML stylesheets for proper processing of
+ orgname as a child of author.
+
+ â— Michael(tm) Smith: chunk-code.xsl
+
+ When $generate.legalnotice.link is non-zero and
+ $use.id.as.filename is also non-zero, if a legalnotice has an ID,
+ then instead of assigning the "ln-<generatedID>" basename to the
+ output file for that legalnotice, just use its real ID as the
+ basename for the file -- as we do when chunking other elements
+ that have IDs.
+
+ â— David Cramer: xref.xsl
+
+ Handle alt text on xrefs to steps when the step doesn't have a title.
+
+ â— David Cramer: lists.xsl
+
+ Added <p> element around term in variablelist when formatted as table to avoid misalignment of term and listitem in xhtml (non-quirks mode) output
+
+ â— David Cramer: qandaset.xsl
+
+ Added <p> element around question and answer labels to avoid misalignment of label and listitem in xhtml (non-quirks mode) output
+
+ â— David Cramer: lists.xsl
+
+ Added <p> element around callouts to avoid misalignment of callout and listitem in xhtml (non-quirks mode) output
+
+ â— Mauritz Jeanson: inline.xsl
+
+ Make citations numbered if bibliography.numbered != 0.
+
+ â— Robert Stayton: param.xweb; param.ent
+
+ Add support for new profiling attributes audience and wordsize.
+
+ â— Robert Stayton: inline.xsl; xref.xsl
+
+ Add support for xlink olinks.
+
+ â— Jirka Kosek: glossary.xsl
+
+ Rules for normalizing glossary entries before they are sorted can be now different for each language.
+
+ â— Robert Stayton: chunk-common.xsl; chunk-code.xsl; manifest.xsl; chunk.xsl
+
+ Refactored the chunking modules to move all named templates to
+ chunk-common.xsl and all match templates to chunk-code.xsl, in
+ order to enable better chunk customization.
+ See the comments in chunk.xsl for more details.
+
+ â— Robert Stayton: lists.xsl
+
+ Add anchor for xml:id for listitem in varlistentry.
+
+ â— Robert Stayton: refentry.xsl
+
+ Add support for info/title in refsections for db5.
+
+ â— Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent;
+ biblio-iso690.xsl
+
+ Added support for formatting biblioentries according to ISO690 citation style.
+ New bibliography style can be turned on by setting parameter bibliography.style to "iso690"
+ The code was provided by Jana Dvorakova
+
+ â— Robert Stayton: inline.xsl; xref.xsl
+
+ Add call to class.attribute to <a> output elements so they can
+ have a class value too.
+
+ â— Mauritz Jeanson: glossary.xsl
+
+ Fixed bug #1644881:
+ * Added curly braces around all $language attribute values.
+ * Moved declaration of language variable to top level of stylesheet.
+ Tested with Xalan, Saxon, and xsltproc.
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.72.0
+release.
+
+ â— Michael(tm) Smith: param.xweb; docbook.xsl; param.ent
+
+ Added the man.authors.section.enabled and
+ man.copyright.section.enabled parameters. Set those to zero when
+ you want to suppress display of the auto-generated AUTHORS and
+ COPYRIGHT sections. Closes request #1467806. Thanks to Daniel
+ Leidert.
+
+ â— Michael(tm) Smith: docbook.xsl
+
+ Took the test that the manpages stylesheet does to see if there
+ are any Refentry chilren in current doc, and made it
+ namespace-agnostic. Reason for that is because the test otherwise
+ won't work when it is copied over into the generated
+ profile-docbook.xsl stylesheet.
+
+ â— Michael(tm) Smith: Makefile
+
+ Added a manpages/profile-docbook.xsl file to enable single-pass
+ profiling for manpages output.
+
+ â— Michael(tm) Smith: info.xsl
+
+ Output copyright and legalnotice in man-page output in whatever
+ place they are in in document order. Closes #1690539. Thanks to
+ Daniel Leidert for reporting.
+
+ â— Michael(tm) Smith: docbook.xsl
+
+ Restored support for single-pass namespace stripping to manpages
+ stylesheet.
+
+ â— Michael(tm) Smith: synop.xsl; block.xsl; info.xsl; inline.xsl; lists.xsl;
+ endnotes.xsl; ut⋯
+
+ Changed handling of bold and italic/underline output in manpages
+ output. Should be transparent to users, but...
+
+ This touches handling of all bold and italic/underline output. The
+ exact change is that the mode="bold" and mode="italic" utility
+ templates were changed to named templates. (I think maybe I've
+ changed it back and forth from mode to named before, so this is
+ maybe re-reverting it yet again).
+
+ Anyway, the reason for the change is that the templates are
+ sometimes call on dynamically node-sets, and using modes to format
+ those doesn't allow passing info about the current/real context
+ node from the source (not the node-set created by the stylesheet)
+ to that formatting stage.
+
+ The named templates allow the context to be passed in as a
+ parameter, so that the bold/ital formatting template can use
+ context-aware condition checking.
+
+ This was basically necessary in order to suppress bold formatting
+ in titles, which otherwise gets screwed up because of the numbnut
+ way that roff handles nested bold/ital.
+
+ Closes #1674534). Much thanks to Daniel Leidert, whose in his
+ docbook-xsl bug-finding kung-fu has achieved Grand Master status.
+
+ â— Michael(tm) Smith: block.xsl
+
+ Fixed handling of example instances by adding the example element
+ to the same template we use for processing figure. Closes
+ #1674538. Thanks to Daniel Leidert.
+
+ â— Michael(tm) Smith: utility.xsl
+
+ Don't include lang in manpages filename/pathname if lang=en (that
+ is, only generate lang-qualified file-/pathnames for non-English).
+
+ â— Michael(tm) Smith: endnotes.xsl
+
+ In manpages output, emit warnings for notesources (footnote, etc.)
+ that have something other than para as a child.
+
+ The numbered-with-hanging-indent formatting that's used for
+ rendering endnotes in the NOTES section of man pages places some
+ limits/assumptions on how the DocBook source is marked up; namely,
+ for notesources (footnote, annotation, etc.) that can contain
+ block-level children, if the they have a block-level child such as
+ a table or itemizedlist or orderedlist that is the first child of
+ a footnote, we have no way of rendering/indenting its content
+ properly in the endnotes list.
+
+ Thus, the manpages stylesheet not emits a warning message for that
+ case, and suggests the "fix" (which is to wrap the table or
+ itemizedlist or whatever in a para that has some preferatory text.
+
+ â— Michael(tm) Smith: utility.xsl
+
+ Added support to mixed-block template for handling tables in
+ mixed-blocks (e.g., as child of para) correctly.
+
+ â— Michael(tm) Smith: table.xsl; synop.xsl; block.xsl; info.xsl; lists.xsl;
+ refentry.xsl; end⋯
+
+ Reverted necessary escaping of backslash, dot, and dash
+ out of the well-intentioned (but it now appears,
+ misguided) "marker" mechanism (introduced in the 1.72.0
+ release) -- which made use of alternative "marker"
+ characters as internal representations of those
+ characters, and then replaced them just prior to
+ serialization -- and back into what's basically the
+ system that was used prior to the 1.69.0 release; that
+ is, into a part of stylesheet code that gets executed
+ at the beginning of processing -- before any other roff
+ markup up is. This change obviates the need for the
+ marker system. It also requires a lot less RAM during
+ processing (for large files, the marker mechanism
+ ending up requiring gigabytes of memory).
+
+ Closes bug #1661177. Thanks to Scott Smedley for
+ providing a test case (the fvwm man page) that exposed
+ the problem with the marker mechanism.
+
+ Also moved the mechanism for converting non-breaking
+ spaces back into the same area of the stylesheet code.
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Fixed problem with incorrect formatting of nested variablelist.
+ Closes bug #1650931. Thanks to Daniel "Eagle Eye" Leidert.
+
+ â— Michael(tm) Smith: lists.xsl
+
+ Make sure that all listitems in itemizedlist and orderedlist are
+ preceded by a blank line. This fixes a regression that occurred
+ when instances of the TP macro that were use in a previous
+ versions of the list-handling code were switched to RS/RE (because
+ TP doesn't support nesting). TP automatically generates a blank
+ line, but RS doesn't. So I added a .sp before each .RS
+
+ â— Michael(tm) Smith: block.xsl; inline.xsl; param.xweb; docbook.xsl;
+ links.xsl; param.ent
+
+ Made a number of changes related to elements with
+ out-of-line content:
+
+ - Added handling for mediaobject & inlinemediaobject.
+ Each imagedata, audiodata, or videodata element
+ within a mediaobject or inline mediaobject is now
+ treated as a "notesource" and so handled in much the
+ same way as links and annotation/alt/footnotes.
+
+ That means a numbered marker is generated inline to
+ mark the place in the main flow where the imagedata,
+ audiodata, or videodata element occurs, and a
+ corresponding numbered endnote for it is generated in
+ the endnotes list at the end of the man page; the
+ endnote contains the URL from the fileref attribute
+ of the imagedata, audiodata, or videodata element.
+
+ For mediobject and inlinemediaobject instances that
+ have a textobject child, the textobject is displayed
+ within the main text flow.
+
+ - Renamed several man.link.* params to man.endnotes.*,
+ to reflect that fact that the endnotes list now
+ contains more than just links. Also did similar
+ renaming for a number of stylesheet-internal vars.
+
+ - Added support for xlink:href (along with existing
+ support for the legacy ulink element).
+
+ - Cleaned up and streamlined the endnotes-handling
+ code. It's still messy and klunky and the basic
+ mechanism it uses is very inefficent for documents
+ that contain a lot of notesources, but at least it's
+ a bit better than it was.
+
+Eclipse
+
+The following changes have been made to the eclipse code since the 1.72.0
+release.
+
+ â— Mauritz Jeanson: Makefile
+
+ Fixed bug #1715093: Makefile for creating profiled version of eclipse.xsl added.
+
+ â— David Cramer: eclipse.xsl
+
+ Added normalize-space around to avoid leading whitespace from appearing in the output if there's extra leading whitespace (e.g. <title> Foo</title>) in the source
+
+JavaHelp
+
+The following changes have been made to the javahelp code since the 1.72.0
+release.
+
+ â— Mauritz Jeanson: javahelp.xsl
+
+ Implemented FR #1230233 (sorted index in javahelp).
+
+ â— Mauritz Jeanson: javahelp.xsl
+
+ Added normalize-space() around titles and index entries to work around whitespace problems.
+ Added support for glossary and bibliography in toc and map files.
+
+Roundtrip
+
+The following changes have been made to the roundtrip code since the 1.72.0
+release.
+
+ â— Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl; normalise2sections.xsl;
+ sections2blocks.⋯
+
+ new stylesheets for better word processor support and easier maintenance
+
+ â— Steve Ball: template-pages.xml; dbk2wp.xsl; sections-spec.xml
+
+ fixed bugs
+
+Params
+
+The following changes have been made to the params code since the 1.72.0
+release.
+
+ â— Mauritz Jeanson: htmlhelp.button.back.xml; htmlhelp.button.forward.xml;
+ htmlhelp.button.zo⋯
+
+ Modified refpurpose text.
+
+ â— Mauritz Jeanson: htmlhelp.map.file.xml; htmlhelp.force.map.and.alias.xml;
+ htmlhelp.alias.f⋯
+
+ Fixed typos, made some small changes.
+
+ â— Mauritz Jeanson: javahelp.encoding.xml
+
+ Moved declaration and documentation of javahelp.encoding from javahelp.xsl to the
+ regular "parameter machinery".
+
+ â— Mauritz Jeanson: generate.id.attributes.xml
+
+ Added refpurpose text.
+
+ â— Mauritz Jeanson: annotation.js.xml; annotation.graphic.open.xml;
+ annotation.graphic.close.⋯
+
+ Added better refpurpose texts.
+
+ â— Michael(tm) Smith: chunker.output.cdata-section-elements.xml;
+ chunker.output.standalone.xm⋯
+
+ Fixed some broken formatting in source files for chunker.* params,
+ as pointed out by Dave Pawson.
+
+ â— Michael(tm) Smith: label.from.part.xml
+
+ Changed handling of reference auto-labeling such that reference
+ (when it appears at the component level) is now affected by the
+ label.from.part param, just as preface, chapter, and appendix.
+
+ â— Mauritz Jeanson: callout.graphics.extension.xml
+
+ Clarified that 'extension' refers to file names.
+
+ â— Michael(tm) Smith: abstract.notitle.enabled.xml
+
+ Added new param abstract.notitle.enabled.
+ If non-zero, in output of the abstract element on titlepages,
+ display of the abstract title is suppressed.
+ Because sometimes you really don't want or need that title
+ there...
+
+ â— Michael(tm) Smith: man.string.subst.map.xml
+
+ Updated manpages string-substitute map to reflect fact that
+ because of another recent change to suppress bold markup in .SH
+ output, we no longer need to add a workaround for the accidental
+ uppercasing of roff escapes that occurred previously.
+
+ â— Jirka Kosek: margin.note.float.type.xml; title.font.family.xml;
+ table.frame.border.color.x⋯
+
+ Improved parameter metadata
+
+ â— Robert Stayton: profile.wordsize.xml; profile.audience.xml
+
+ Add support for profiling on new attributes audience and wordsize.
+
+ â— Robert Stayton: callout.graphics.number.limit.xml;
+ callout.graphics.extension.xml
+
+ Added SVG graphics for fo output.
+
+ â— Robert Stayton: callout.icon.size.xml
+
+ Set size of callout graphics.
+
+ â— Jirka Kosek: default.units.xml; chunker.output.method.xml;
+ toc.list.type.xml; output.inden⋯
+
+ Updated parameter metadata to the new format.
+
+ â— Jirka Kosek: man.output.quietly.xml; title.font.family.xml;
+ footnote.sep.leader.properties⋯
+
+ Added type annotations into parameter definition files.
+
+ â— Robert Stayton: section.container.element.xml
+
+ Support spans in sections for certain processors.
+
+ â— Robert Stayton: component.titlepage.properties.xml
+
+ Empty attribute set for top level component titlepage block.
+ Allows setting a span on title info.
+
+ â— Jirka Kosek: bibliography.style.xml
+
+ Added link to WiKi page with description of special markup needed for ISO690 biblioentries
+
+ â— Robert Stayton: make.year.ranges.xml
+
+ Clarify that multiple year elements are required.
+
+ â— Robert Stayton: id.warnings.xml
+
+ Turn off id.warnings by default.
+
+ â— Jirka Kosek: bibliography.style.xml
+
+ Added support for formatting biblioentries according to ISO690 citation style.
+ New bibliography style can be turned on by setting parameter bibliography.style to "iso690"
+ The code was provided by Jana Dvorakova
+
+ â— Robert Stayton: header.table.properties.xml; footer.table.properties.xml
+
+ Support adding table properties to header and footer tables.
+
+Highlighting
+
+The following changes have been made to the highlighting code since the 1.72.0
+release.
+
+ â— Jirka Kosek: c-hl.xml; xslthl-config.xml
+
+ Added support for C language. Provided by Bruno Guegan.
+
+Profiling
+
+The following changes have been made to the profiling code since the 1.72.0
+release.
+
+ â— Robert Stayton: profile-mode.xsl
+
+ Add support for new profiling attributes audience and wordsize.
+
+Lib
+
+The following changes have been made to the lib code since the 1.72.0 release.
+
+ â— Michael(tm) Smith: lib.xweb
+
+ Changed name of prepend-pad template to pad-string and twheeked so
+ it can do both right/left padding.
+
+Tools
+
+The following changes have been made to the tools code since the 1.72.0
+release.
+
+ â— Michael(tm) Smith: bin; bin/docbook-xsl-update
+
+ Did some cleanup to the install.sh source and added a
+ docbook-xsl-update script to the docbook-xsl distro, the purpose
+ of which is to facilitate easy sync-up to the latest docbook-xsl
+ snapshot (by means of rsync).
+
+XSL-Saxon
+
+The following changes have been made to the xsl-saxon code since the 1.72.0
+release.
+
+ â— Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/
+ com/nwalsh/xalan/⋯
+
+ Added modifications so that the new callout.icon.size parameter is taken into account. This
+ parameter is used for FO output (where SVG now is the default graphics format for callouts).
+
+ â— Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/
+ src/com/nwalsh/x⋯
+
+ Added code for generating id attributes on callouts in HTML and FO output.
+ These patches enable cross-references to callouts placed by area coordinates.
+ It works for graphic, unicode and text callouts.
+ Part of fix for bug #1675513 (xref to area broken).
+
+ â— Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/
+ com/nwalsh/xalan⋯
+
+ Copied over Website XSL Java extensions.
+
+XSL-Xalan
+
+The following changes have been made to the xsl-xalan code since the 1.72.0
+release.
+
+ â— Michael(tm) Smith: Makefile; xalan2
+
+ Turned off xalan2.jar build. This removes DocBook XSL
+ Java extensions support for versions of Xalan prior to
+ Xalan 2.7. If you are currently using the extensions
+ with an earlier version of Xalan, you need to upgrade
+ to Xalan 2.7.
+
+ â— Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/
+ com/nwalsh/xalan/⋯
+
+ Added modifications so that the new callout.icon.size parameter is taken into account. This
+ parameter is used for FO output (where SVG now is the default graphics format for callouts).
+
+ â— Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/
+ src/com/nwalsh/x⋯
+
+ Added code for generating id attributes on callouts in HTML and FO output.
+ These patches enable cross-references to callouts placed by area coordinates.
+ It works for graphic, unicode and text callouts.
+ Part of fix for bug #1675513 (xref to area broken).
+
+ â— Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/
+ com/nwalsh/xalan⋯
+
+ Copied over Website XSL Java extensions.
+
+Release: 1.72.0
+
+This release includes important bug fixes and adds the following significant
+feature changes:
+
+Automatic sorting of glossary entries
+
+ The HTML and FO stylesheets now support automatic sorting of glossary
+ entries. To enable glossary sorting, set the value of the glossary.sort
+ parameter to 1 (by default, it’s value is 0). When you enable glossary
+ sorting, glossentry elements within a glossary, glossdiv, or glosslist are
+ sorted on the glossterm, using the current language setting. If you don’t
+ enable glossary sorting, then the order of glossentry elements is left “as
+ is†— that is, they are not sorted but are instead just displayed in
+ document order.
+
+WordML renamed to Roundtrip, OpenOffice support added
+
+ Stylesheets for “roundtrip†conversion between documents in OpenOffice
+ format (ODF) and DocBook XML have been added to the set of stylesheets that
+ formerly had the collective title WordML, and that set of stylesheets has
+ been renamed to Roundtrip to better reflect the actual scope and purpose of
+ its contents.
+
+ So the DocBook XSL Stylesheets now support roundtrip conversion (with
+ certain limitations) of WordML, OpenOffice, and Apple Pages documents to
+ and from DocBook XML.
+
+Including QandASet questions in TOCs
+
+ The HTML stylesheet now provides support for including QandASet questions
+ in the document TOC. To enable display of questions in the document TOC,
+ set the value of the qanda.in.toc to 1 (by default, it’s 0). When you
+ enable qanda.in.toc, then the generated table of contents for a document
+ will include qandaset titles, qandadiv titles, and question elements. The
+ default value of zero excludes them from the TOC.
+
+ Note
+
+ The qanda.in.toc parameter does not affect any tables of contents that may
+ be generated within a qandaset or qandadiv (only in the document TOC).
+
+Language identifier in man-page filenames and pathnames
+
+ Added new parameter man.output.lang.in.name.enabled, which controls whether
+ a language identifier is included in man-page filenames and pathnames. It
+ works like this:
+
+ If the value of man.output.lang.in.name.enabled is non-zero, man-page files
+ are output with a language identifier included in their filenames or
+ pathnames as follows:
+
+ â— if man.output.subdirs.enabled is non-zero, each file is output to,
+ e.g., a /$lang/man8/foo.8 pathname
+
+ â— if man.output.subdirs.enabled is zero, each file is output with a
+ foo.$lang.8 filename
+
+index.page.number.properties property set
+
+ For FO output, use the index.page.number.properties to control formatting
+ of page numbers in index output — to (for example) to display page numbers
+ in index output in a different color (to indicate that they are links).
+
+Crop marks in output from Antenna House XSL Formatter
+
+ Support has been added for generating crop marks in print/PDF output
+ generated using Antenna House XSL Formatter
+
+More string-substitution hooks in manpages output
+
+ The man.string.subst.map.local.pre and man.string.subst.map.local.post
+ parameters have been added to enable easier control over custom string
+ substitutions.
+
+Moved verbatim properties to attribute-set
+
+ The hardcoded properties used in verbatim elements (literallayout,
+ programlisting, screen) were moved to the verbatim.properties attribute-set
+ so they can be more easily customized.
+
+enhanced simple.xlink template
+
+ Now the simple.xlink template in inline.xsl works with cross reference
+ elements xref and link as well. Also, more elements call simple.xlink,
+ which enables DB5 xlink functionality.
+
+DocBook 5 compatibility
+
+ Stylesheets now consistently support DocBook 5 attributes (such as xml:id).
+ Also, DocBook 5 info elements are now checked along with other *info
+ elements, and the use of name() function was replaced by local-name() so it
+ also matches on DocBook 5 elements. These changes enable reusing the
+ stylesheets with DocBook 5 documents with minimal fixup.
+
+HTML class attributes now handled in class.attribute mode
+
+ The HTML class attributes were formerly hardcoded to the element name. Now
+ the class attribute is generated by applying templates in class.attribute
+ mode so class attribute names can be customized. The default is still the
+ element name.
+
+arabic-indic numbering enabled in autolabels
+
+ Numbering of chapter, sections, and pages can now use arabic-indic
+ numbering when number format is set to 'arabicindic' or to Ù¡.
+
+The following is a detailed list of changes (not including bug fixes) that have
+been made since the 1.71.1 release.
+
+Common
+
+The following changes have been made to the common code since the 1.71.1
+release.
+
+ ◠Add support for arabicindic numbering to autolabel.format template.
+
+ ◠Finish support for @xml:id everywhere @id is used.
+
+ ◠replace name() with local-name() in most cases.
+
+ ◠Add support for info.
+
+ ◠Add utility template tabstyle to return the tabstyle from
+ any table element.
+
+FO
+
+The following changes have been made to the fo code since the 1.71.1 release.
+
+ ◠Add support for sorting glossary entries
+
+ ◠Add table.row.properties template to customize table rows.
+
+ ◠Moved all properties to attribute-sets so can be customized more easily.
+
+ ◠Add index.page.number.properties attribute-set to format page numbers.
+
+ ◠xref now supports xlink:href, using simple.xlink template.
+
+ ◠Rewrote simple.xlink, and call it with all charseq templates.
+
+ ◠Add simple.xlink processing to term and member elements.
+
+ ◠Add support for crop marks in Antenna House.
+
+HTML
+
+The following changes have been made to the html code since the 1.71.1 release.
+
+ ◠Add support for sorting glossary entries
+
+ ◠Add support for qanda.in.toc to add qandaentry questions to document TOC.
+
+ ◠add simple.xlink support to variablelist term and simplelist member.
+
+ ◠*.propagates.style now handled in class.attribute mode.
+
+ ◠add class parameter to class.attribute mode to set default class.
+
+ ◠Convert all class attributes to use the class.attribute mode
+ so class names can be customized more easily.
+
+ ◠Add class.attribute mode to generate class attributes.
+
+ ◠Added simple.xlink to most remaining inlines.
+ Changed class attributes to applying class.attributes mode.
+
+ ◠Changed xref template to use simple.xlink tempalte.
+
+ ◠Improve generate.html.title to work with link targets too.
+
+ ◠Improved simple.xlink to support link and xref.
+
+ ◠Use new link.title.attribute now.
+
+ ◠Rewrote simple.xlink to handle linkend also.
+ Better computation of title attribute on link too.
+
+ ◠Handle Xalan quirk as special case.
+
+ ◠Add support for info.
+
+ ◠Fixed imagemaps so they work properly going from calspair coords
+ to HTML area coords.
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.71.1
+release.
+
+ ◠Added doc for man.output.lang.in.name.enabled parameter. This
+ checkin completes support for writing file/pathnames for man-pages
+ with $lang include in the names. Closes #1585967. knightly
+ accolades to Daniel Leidert for providing the feature request.
+
+ ◠Added new param man.output.lang.in.name.enabled, which
+ controls whether $LANG value is included in manpages
+ filenames and pathnames. It works like this:
+
+ If the value of man.output.lang.in.name.enabled is non-zero,
+ man-page files are output with the $lang value included in
+ their filenames or pathnames as follows;
+
+ - if man.output.subdirs.enabled is non-zero, each file is
+   output to, e.g., a /$lang/man8/foo.8 pathname
+
+ - if man.output.subdirs.enabled is zero, each file is output
+   with a foo.$lang.8 filename
+
+ ◠Use "\e" instead of "\\" for backslash output, because the
+ groff docs say that's the correct thing to do; also because
+ testing (thanks, Paul Dubois) shows that "\\" doesn't always
+ work as expected; for example, "\\" within a table seems to
+ mess things up.
+
+ ◠Added the man.string.subst.map.local.pre and
+ man.string.subst.map.local.post parameters. Those parameters
+ enable local additions and changes to string-substitution mappings
+ without the need to change the value of man.string.subst.map
+ parameter (which is for standard system mappings). Closes
+ #1456738. Thanks to Sam Steingold for constructing a true
+ stylesheet torture test (the clisp docs) that exposed the need for
+ these params.
+
+ ◠Added the Markup element to the list of elements that get output
+ in bold. Thanks to Eric S. Raymond.
+
+ ◠Replaced all dots in roff requests with U+2302 ("house"
+ character), and added escaping in output for all instances of dot
+ that are not in roff requests. This fixes the problem case where a
+ string beginning with a dot (for example, the string ".bashrc")
+ might occur at the beginning of a line in output, in which case 
+ would mistakenly get interpreted as a roff request. Thanks to Eric
+ S. Raymond for pushing to fix this.
+
+ ◠Made change to ensure that list content nested in
+ itemizedlist and orderedlist instances is properly indented. This
+ is a switch from using .TP to format those lists to using .RS/.RE
+ to format them instead (because .TP does not allow nesting). Closes bug #
+ 1602616.
+ Thanks to Daniel Leidert.
+
+Params
+
+The following changes have been made to the params code since the 1.71.1
+release.
+
+ ◠Added doc for man.output.lang.in.name.enabled parameter. This
+ checkin completes support for writing file/pathnames for man-pages
+ with $lang include in the names. Closes #1585967. knightly
+ accolades to Daniel Leidert for providing the feature request.
+
+ ◠Added new param man.output.lang.in.name.enabled, which
+ controls whether $LANG value is included in manpages
+ filenames and pathnames. It works like this:
+
+ If the value of man.output.lang.in.name.enabled is non-zero,
+ man-page files are output with the $lang value included in
+ their filenames or pathnames as follows;
+
+ - if man.output.subdirs.enabled is non-zero, each file is
+   output to, e.g., a /$lang/man8/foo.8 pathname
+
+ - if man.output.subdirs.enabled is zero, each file is output
+   with a foo.$lang.8 filename
+
+ ◠Added the man.string.subst.map.local.pre and
+ man.string.subst.map.local.post parameters. Those parameters
+ enable local additions and changes to string-substitution mappings
+ without the need to change the value of man.string.subst.map
+ parameter (which is for standard system mappings). Closes
+ #1456738. Thanks to Sam Steingold for constructing a true
+ stylesheet torture test (the clisp docs) that exposed the need for
+ these params.
+
+ ◠Add index.page.number.properties by default.
+
+ ◠Added index.page.number.properties
+  to allow customizations of page numbers in indexes.
+
+ ◠Move show-destination="replace" property from template to attribute-set
+ so it can be customized.
+
+ ◠Add support for sorting glossary entries
+
+ ◠Add option to include qanda in tables of contents.
+
+ ◠Moved all properties to attribute-sets so can be customized more easily.
+
+Template
+
+The following changes have been made to the template code since the 1.71.1
+release.
+
+ ◠Added workaround for Xalan bug: use for-each and copy instead of copy-of (#
+ 1604770).
+
+Roundtrip
+
+The following changes have been made to the roundtrip code since the 1.71.1
+release.
+
+ ◠rename to roundtrip, add OpenOffice support
+
+Release: 1.71.1
+
+This is a minor update to the 1.71.0 release. Along with a number of bug fixes,
+it includes two feature changes:
+
+ â— Added support for profiling based on xml:lang and status attributes.
+
+ â— Added initial support in manpages output for footnote, annotation, and alt
+ instances. Basically, they all now get handled the same way ulink instances
+ are. They are treated as a class as "note sources": A numbered marker is
+ generated at the place in the main text flow where they occur, then their
+ contents are displayed in an endnotes section at the end of the man page.
+
+Common
+
+The following changes have been made to the common code since the 1.71.1
+release.
+
+ ◠For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.
+
+ ◠Add support for Xalan generating a root xml:base like saxon.
+
+FO
+
+The following changes have been made to the fo code since the 1.71.1 release.
+
+ ◠For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.
+
+ ◠Add support for Xalan to add root node xml:base for db5 docs.
+
+ ◠Added support for profiling based on xml:lang and status attributes.
+
+HTML
+
+The following changes have been made to the html code since the 1.71.1 release.
+
+ ◠For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.
+
+ ◠Add support for Xalan to add root node xml:base for db5 docs.
+
+ ◠Added support for profiling based on xml:lang and status attributes.
+
+ ◠Made changes in namespace declarations to prevent xmllint's
+ canonicalizer from treating them as relative namespace URIs.
+
+   - Changed xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService"
+     to xmlns:k="http://www.isogen.com/functions/
+ com.isogen.saxoni18n.Saxoni18nService";
+     Saxon accepts either form
+     (see http://www.saxonica.com/documentation/extensibility/
+ functions.html);
+     to Saxon, "the part of the URI before the final '/' is immaterial".
+
+   - Changed, e.g. xmlns:xverb="com.nwalsh.xalan.Verbatim" to
+     xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"; Xalan accepts
+     either form
+     (see http://xml.apache.org/xalan-j/extensions.html#
+ java-namespace-declare);
+     just as Saxon does, it will "simply use the string to the
+     right of the rightmost forward slash as the Java class name".
+
+   - Changed xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect"
+     to xmlns:redirect="http://xml.apache.org/xalan/redirect", and
+     adjusted associated code to make the current Xalan redirect spec.
+     (see http://xml.apache.org/xalan-j/apidocs/org/apache/xalan/lib/
+ Redirect.html)
+
+ ◠Added the html.append and chunk.append parameters. By default, the
+ value of both is empty; but the internal DocBook XSL stylesheets
+ build sets their value to "<xsl:text>&#x0a;</xsl:text>", in order
+ to ensure that all files in the docbook-xsl-doc package end in a
+ newline character. (Because diff and some other tools may emit
+ error messages and/or not behave as expected when processing
+ files that are not newline-terminated.)
+
+Highlighting
+
+The following changes have been made to the highlighting code since the 1.71.1
+release.
+
+ ◠Added license information
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.71.1
+release.
+
+ ◠Added initial support in manpages output for footnote, annotation,
+ and alt instances. Basically, they all now get handled the same
+ way ulink instances are. They are treated as a class as "note
+ sources": A numbered marker is generated at the place in the main
+ text flow where they occur, then their contents are displayed in
+ an endnotes section at the end of the man page (currently titled
+ REFERENCES, for English output, but will be changed to NOTES).
+
+ This support is not yet complete. It works for most "normal"
+ cases, but probably mishandles a good number of cases. More
+ testing will be needed to expose the problems. It may well also
+ introduce some bugs and regressions in other areas, including
+ basic paragraph handling, handling of "mixed block" content,
+ handling of other indented content, and handling of authorblurb
+ and personblurb in the AUTHORS section.
+
+Params
+
+The following changes have been made to the params code since the 1.71.1
+release.
+
+ ◠Added support for profiling based on xml:lang and status attributes.
+
+ ◠Added the html.append and chunk.append parameters. By default, the
+ value of both is empty; but the internal DocBook XSL stylesheets
+ build sets their value to "<xsl:text>&#x0a;</xsl:text>", in order
+ to ensure that all files in the docbook-xsl-doc package end in a
+ newline character. (Because diff and some other tools may emit
+ error messages and/or not behave as expected when processing
+ files that are not newline-terminated.)
+
+Profiling
+
+The following changes have been made to the profiling code since the 1.71.1
+release.
+
+ ◠Added support for profiling based on xml:lang and status attributes.
+
+Release: 1.71.0
+
+This is mainly a bug fix release, but it also includes two significant feature
+changes:
+
+Highlighting support added
+
+ The stylesheets now include support for source-code highlighting in output
+ of programlisting instances (controlled through the highlight.source
+ parameter). The Java-based implementation requires Saxon and makes use of
+ Michal Molhanec’s XSLTHL. More details are available at Jirka Kosek’s
+ website:
+
+ http://xmlguru.cz/2006/07/docbook-syntax-highlighting
+
+ The support is currently limited to highlighting of XML, Java, PHP, Delphi,
+ Modula-2 sources, and INI files.
+
+Changes to autoindexing
+
+ The templates that handle alternative indexing methods were reworked to
+ avoid errors produced by certain processors not being able to tolerate the
+ presence of unused functions. With this release, none of the code for the
+ 'kimber' or 'kosek' methods is included in the default stylesheets. In
+ order to use one of those methods, your customization layer must import one
+ of the optional stylesheet modules:
+
+ â— html/autoidx-kosek.xsl
+ â— html/autoidx-kimber.xsl
+ â— fo/autoidx-kosek.xsl
+ â— fo/autoidx-kimber.xsl
+
+ See the index.method parameter reference page for more information.
+
+ Two other changes to note:
+
+ â— The default indexing method now can handle accented characters in
+ latin-based alphabets, not just English. This means accented latin
+ letters will group and sort with their unaccented counterpart.
+ â— The default value for the index.method parameter was changed from
+ 'english' to 'basic' because now the default method can handle
+ latin-based alphabets, not just English.
+
+The following is a list of changes that have been made since the 1.70.1
+release.
+
+Common
+
+The following changes have been made to the common code since the 1.70.1
+release.
+
+ ◠Added reference.autolabel parameter for controlling labels on
+ reference output.
+
+ ◠Support rows that are *completely* overlapped by the preceding row
+
+ ◠New modules for supporting indexing extensions.
+
+ ◠Support startinglinenumber on orderedlist
+
+Extensions
+
+The following changes have been made to the extensions code since the 1.70.1
+release.
+
+ ◠Completely reworked extensions build system; now uses NetBeans and ant
+
+FO
+
+The following changes have been made to the fo code since the 1.70.1 release.
+
+ ◠xsl:sort lang attribute now uses two-char substring of lang attribute.
+
+ ◠Support titlecase "Java", "Perl", and "IDL" as values for the
+ language attribute on classsynopsis, etc. (instead of just
+ lowercase "java", "perl", and "idl"). Also support "c++" and "C++"
+ (instead of just "cpp").
+
+ Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks
+ to "Brian A. Vanderburg II".
+
+ ◠Added support for the reference.autolabel param in (X)HTML and FO
+ output.
+
+ ◠Support rows that are *completely* overlapped by the preceding row
+
+ ◠Rearranged templates for the 3 indexing methods
+ and changed method named 'english' to 'basic'.
+
+ ◠New modules for supporting indexing extensions.
+
+ ◠Turn off blank-body for fop1.extensions too since fop 0.92
+ does not support it either.
+
+ ◠Add Xalan variant to test for exslt:node-set function.
+ Xalan can use function named node-set(), but doesn't
+ recognize it using function-available().
+
+ ◠Added support to FO stylesheets for handling instances of Org
+ where it occurs outside of *info content. In HTML stylesheets,
+ moved handling of Org out of info.xsl and into inline.xsl. In both
+ FO and HTML stylesheets, added support for correctly processing
+ Affiliation and Jobtitle.
+
+ ◠Don't output punctuation between Refname and Refpurpose if
+ Refpurpose is empty. Also corrected handling of Refsect2/title
+ instances, and removed some debugging stuff that was generated in
+ manpages output to mark the ends of sections.
+
+ ◠Added new email.delimiters.enabled param. If non-zero (the
+ default), delimiters are generated around e-mail addresses (output
+ of the email element). If zero, the delimiters are suppressed.
+
+ ◠Initial support of syntax highlighting of programlistings.
+
+ ◠Chapter after preface should restart numbering of pages.
+
+HTML
+
+The following changes have been made to the html code since the 1.70.1 release.
+
+ ◠xsl:sort lang attribute now uses two-char substring of lang attribute.
+
+ ◠Support titlecase "Java", "Perl", and "IDL" as values for the
+ language attribute on classsynopsis, etc. (instead of just
+ lowercase "java", "perl", and "idl"). Also support "c++" and "C++"
+ (instead of just "cpp").
+
+ Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks
+ to "Brian A. Vanderburg II".
+
+ ◠Added support for the reference.autolabel param in (X)HTML and FO
+ output.
+
+ ◠Support rows that are *completely* overlapped by the preceding row
+
+ ◠Rearranged templates for the 3 indexing methods
+ and changed method named 'english' to 'basic'.
+
+ ◠New modules for supporting indexing extensions.
+
+ ◠Added several new HTML parameters for controlling appearance of
+ content on HTML title pages:
+
+ contrib.inline.enabled:
+   If non-zero (the default), output of the contrib element is
+   displayed as inline content rather than as block content.
+
+ othercredit.like.author.enabled:
+   If non-zero, output of the othercredit element on titlepages is
+   displayed in the same style as author and editor output. If zero
+   (the default), othercredit output is displayed using a style
+   different than that of author and editor.
+
+ blurb.on.titlepage.enabled:
+   If non-zero, output from authorblurb and personblurb elements is
+   displayed on title pages. If zero (the default), output from
+   those elements is suppressed on title pages (unless you are
+   using a titlepage customization that causes them to be included).
+
+ editedby.enabled
+   If non-zero (the default), a localized Edited by heading is
+   displayed above editor names in output of the editor element.
+
+ ◠Add Xalan variant to test for exslt:node-set function.
+ Xalan can use function named node-set(), but doesn't
+ recognize it using function-available().
+
+ ◠Added support to FO stylesheets for handling instances of Org
+ where it occurs outside of *info content. In HTML stylesheets,
+ moved handling of Org out of info.xsl and into inline.xsl. In both
+ FO and HTML stylesheets, added support for correctly processing
+ Affiliation and Jobtitle.
+
+ ◠Don't output punctuation between Refname and Refpurpose if
+ Refpurpose is empty. Also corrected handling of Refsect2/title
+ instances, and removed some debugging stuff that was generated in
+ manpages output to mark the ends of sections.
+
+ ◠Added new email.delimiters.enabled param. If non-zero (the
+ default), delimiters are generated around e-mail addresses (output
+ of the email element). If zero, the delimiters are suppressed.
+
+ ◠Added qanda.nested.in.toc param. Default value is zero. If
+ non-zero, instances of "nested" Qandaentry (ones that are children
+ of Answer elements) are displayed in the TOC. Closes patch 1509018
+ (from Daniel Leidert). Currently on affects HTML output (no patch
+ for FO output provided).
+
+ ◠Improved handling of relative locations generated files
+
+ ◠Initial support of syntax highlighting of programlistings.
+
+ ◠Support org
+
+ ◠Support person
+
+ ◠Support $keep.relative.image.uris also when chunking
+
+Highlighting
+
+The following changes have been made to the highlighting code since the 1.70.1
+release.
+
+ ◠Initial support of syntax highlighting of programlistings.
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.70.1
+release.
+
+ ◠Suppress footnote markers and output warning that footnotes are
+ not yet supported.
+
+ ◠Handle instances of address/otheraddr/ulink in author et al in the
+ same way as email instances; that is, display them on the same
+ linke as the author, editor, etc., name.
+
+ ◠Don't number or link-list any Ulink instance whose string value is
+ identical to the value of its url attribute. Just display it inline.
+
+ ◠Don't output punctuation between Refname and Refpurpose if
+ Refpurpose is empty. Also corrected handling of Refsect2/title
+ instances, and removed some debugging stuff that was generated in
+ manpages output to mark the ends of sections.
+
+ ◠Added new email.delimiters.enabled param. If non-zero (the
+ default), delimiters are generated around e-mail addresses (output
+ of the email element). If zero, the delimiters are suppressed.
+
+ ◠In manpages output, if the last/nearest *info element for
+ particular Refentry has multiple Copyright and/or Legalnotice
+ children, process them all (not just the first ones). Closes bug
+ 1524576. Thanks to Sam Steingold for the report and to Daniel
+ Leidert for providing a patch.
+
+Params
+
+The following changes have been made to the params code since the 1.70.1
+release.
+
+ ◠Added reference.autolabel parameter for controlling labels on
+ reference output.
+
+ ◠Added namespace declarations to document elements for all param files.
+
+ ◠Updated index.method doc to describe revised setup for importing index
+  extensions.
+
+ ◠Added several new HTML parameters for controlling appearance of
+ content on HTML title pages:
+
+ contrib.inline.enabled:
+   If non-zero (the default), output of the contrib element is
+   displayed as inline content rather than as block content.
+
+ othercredit.like.author.enabled:
+   If non-zero, output of the othercredit element on titlepages is
+   displayed in the same style as author and editor output. If zero
+   (the default), othercredit output is displayed using a style
+   different than that of author and editor.
+
+ blurb.on.titlepage.enabled:
+   If non-zero, output from authorblurb and personblurb elements is
+   displayed on title pages. If zero (the default), output from
+   those elements is suppressed on title pages (unless you are
+   using a titlepage customization that causes them to be included).
+
+ editedby.enabled
+   If non-zero (the default), a localized Edited by heading is
+   displayed above editor names in output of the editor element.
+
+ ◠Added new email.delimiters.enabled param. If non-zero (the
+ default), delimiters are generated around e-mail addresses (output
+ of the email element). If zero, the delimiters are suppressed.
+
+ ◠Added qanda.nested.in.toc param. Default value is zero. If
+ non-zero, instances of "nested" Qandaentry (ones that are children
+ of Answer elements) are displayed in the TOC. Closes patch 1509018
+ (from Daniel Leidert). Currently on affects HTML output (no patch
+ for FO output provided).
+
+ ◠Initial support of syntax highlighting of programlistings.
+
+Tools
+
+The following changes have been made to the tools code since the 1.70.1
+release.
+
+ ◠Racheted down font sizes of headings in example makefile FO output.
+
+ ◠Added param and attribute set to example makefile, for getting
+ wrapping in verbatims in FO output.
+
+ ◠Renamed Makefile.paramDoc to Makefile.docParam.
+
+ ◠Added Makefile.paramDoc file, for creating versions of param.xsl
+ files with doc embedded.
+
+ ◠Added variable to example makefile for controlling whether HTML or
+ XHTML is generated.
+
+Release: 1.70.1
+
+This is a stable release of the 1.70 stylesheets. It includes only a few small
+changes from 1.70.0.
+
+The following is a list of changes that have been made since the 1.70.0
+release.
+
+FO
+
+The following changes have been made to the fo code since the 1.70.0 release.
+
+ â— Added three new attribute sets (revhistory.title.properties,
+ revhistory.table.properties and revhistory.table.cell.properties) for
+ controlling appearance of revhistory in FO output.
+
+ Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/
+ titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params
+ /revhistory.table.properties.xml,1.1; params/
+ revhistory.title.properties.xml,1.1 - Jirka Kosek
+
+ â— Support DBv5 revisions with full author name (not only authorinitials)
+
+ Modified: fo/block.xsl,1.33; fo/titlepage.xsl,1.40 - Jirka Kosek
+
+HTML
+
+The following changes have been made to the html code since the 1.70.0 release.
+
+ â— Support DBv5 revisions with full author name (not only authorinitials)
+
+ Modified: html/block.xsl,1.23; html/titlepage.xsl,1.34 - Jirka Kosek
+
+HTMLHelp
+
+The following changes have been made to the htmlhelp code since the 1.70.0
+release.
+
+ â— htmlhelp.generate.index is now param, not variable. This means that you can
+ override its setting from outside. This is useful when you generate
+ indexterms on the fly (see http://www.xml.com/pub/a/2004/07/14/dbndx.html?
+ page=3).
+
+ Modified: htmlhelp/htmlhelp-common.xsl,1.38 - Jirka Kosek
+
+ â— Support chunk.tocs.and.lots in HTML Help
+
+ Modified: htmlhelp/htmlhelp-common.xsl,1.37 - Jirka Kosek
+
+Params
+
+The following changes have been made to the params code since the 1.70.0
+release.
+
+ â— Added three new attribute sets (revhistory.title.properties,
+ revhistory.table.properties and revhistory.table.cell.properties) for
+ controlling appearance of revhistory in FO output.
+
+ Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/
+ titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params
+ /revhistory.table.properties.xml,1.1; params/
+ revhistory.title.properties.xml,1.1 - Jirka Kosek
+
+Release: 1.70.0
+
+As with all DocBook Project dot-zero releases, this is an experimental release.
+It will be followed shortly by a stable release.
+
+This release adds a number of new features, including:
+
+ â— support for selecting alternative index-collation methods (in particular,
+ support for using a collation library developed by Eliot Kimber)
+
+ â— improved handling of DocBook 5 document instances (through a
+ namespace-stripping mechanism)
+
+ â— full support for CALS and HTML tables in manpages output
+
+ â— a mechanism for preserving relative URIs in documents that make use of
+ XInclude
+
+ â— support for the "new" .90 version of FOP
+
+ â— enhanced capabilities for controlling formatting of lists in HTML and FO
+ output
+
+ â— autogeneration of AUTHOR and COPYRIGHT sections in manpages output
+
+ â— support for generating crop marks in FO/PDF output
+
+ â— support for qandaset as a root element in FO output
+
+ â— support for floatstyle and orient on all table types
+
+ â— support for floatstyle in figure, and example
+
+ â— pgwide.properties attribute-set supports extending figure, example and
+ table into the left indent area instead of spanning multiple columns.
+
+The following is a detailed list of enhancements and API changes that have been
+made since the 1.69.1 release.
+
+Common
+
+The following changes have been made to the common code since the 1.69.1
+release.
+
+ â— Add the xsl:key for the kimber indexing method.
+
+ Modified: common/autoidx-ng.xsl,1.2 - Robert Stayton
+
+ â— Add support for qandaset.
+
+ Modified: common/labels.xsl,1.37; common/subtitles.xsl,1.7; common/
+ titles.xsl,1.35 - Robert Stayton
+
+ â— Support dbhtml/dbfo start PI for orderedlist numbering in both HTML and FO
+
+ Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman Walsh
+
+ â— Added CVS header.
+
+ Modified: common/stripns.xsl,1.12 - Robert Stayton
+
+ â— Changed content model of text element to ANY rather than #PCDATA because
+ they could contain markup.
+
+ Modified: common/targetdatabase.dtd,1.7 - Robert Stayton
+
+ â— Added refentry.meta.get.quietly param.
+
+ If zero (the default), notes and warnings about "missing" markup are
+ generated during gathering of refentry metadata. If non-zero, the metadata
+ is gathered "quietly" -- that is, the notes and warnings are suppressed.
+
+ NOTE: If you are processing a large amount of refentry content, you may be
+ able to speed up processing significantly by setting a non-zero value for
+ refentry.meta.get.quietly.
+
+ Modified: common/refentry.xsl,1.17; manpages/param.ent,1.15; manpages/
+ param.xweb,1.17; params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+ Smith
+
+ â— After namespace stripping, the source document is the temporary tree
+ created by the stripping process and it has the wrong base URI for relative
+ references. Earlier versions of this code used to try to fix that by
+ patching the elements with relative @fileref attributes. That was
+ inadequate because it calculated an absolute base URI without considering
+ that there might be xml:base attributes already in effect. It seems obvious
+ now that the right thing to do is simply to put the xml:base on the root of
+ the document. And that seems to work.
+
+ Modified: common/stripns.xsl,1.7 - Norman Walsh
+
+ â— Added support for "software" and "sectdesc" class values on refmiscinfo;
+ "software" is treated identically to "source", and "setdesc" is treated
+ identically to "manual".
+
+ Modified: common/refentry.xsl,1.10; params/
+ man.th.extra2.max.length.xml,1.3; params/
+ refentry.source.name.profile.xml,1.4 - Michael(tm) Smith
+
+ â— Added support for DocBook 5 namespace-stripping in manpages stylesheet.
+ Closes request #1210692.
+
+ Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - Michael(tm)
+ Smith
+
+ â— Added <xsl:template match="/"> to make stripns.xsl usable as a standalone
+ stylesheet for stripping out DocBook 5/NG to DocBook 4. Note that DocBook
+ XSLT drivers that include this stylesheet all override the match="/"
+ template.
+
+ Modified: common/stripns.xsl,1.4 - Michael(tm) Smith
+
+ â— Number figures, examples, and tables from book if there is no prefix (i.e.
+ if chapter.autolabel is set to 0). This avoids having the list of figures
+ where the figures mysteriously restart their numeration periodically when
+ chapter.autolabel is set to 0.
+
+ Modified: common/labels.xsl,1.36 - David Cramer
+
+ â— Add task template in title.markup mode.
+
+ Modified: common/titles.xsl,1.34 - Robert Stayton
+
+ â— Add children (with ids) of formal objects to target data.
+
+ Modified: common/targets.xsl,1.10 - Robert Stayton
+
+ â— Added support for case when personname doesn't contain specific name markup
+ (as allowed in DocBook 5.0)
+
+ Modified: common/common.xsl,1.54 - Jirka Kosek
+
+Extensions
+
+The following changes have been made to the extensions code since the 1.69.1
+release.
+
+ â— Support Xalan 2.7
+
+ Modified: extensions/xalan27/.cvsignore,1.1; extensions/xalan27/
+ build.xml,1.1; extensions/xalan27/nbproject/.cvsignore,1.1; extensions/
+ xalan27/nbproject/build-impl.xml,1.1; extensions/xalan27/nbproject/
+ genfiles.properties,1.1; extensions/xalan27/nbproject/
+ project.properties,1.1; extensions/xalan27/nbproject/project.xml,1.1;
+ extensions/xalan27/src/com/nwalsh/xalan/CVS.java,1.1; extensions/xalan27/
+ src/com/nwalsh/xalan/Callout.java,1.1; extensions/xalan27/src/com/nwalsh/
+ xalan/FormatCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/
+ FormatDingbatCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/
+ FormatGraphicCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/
+ FormatTextCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/
+ FormatUnicodeCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/
+ Func.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/
+ ImageIntrinsics.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/
+ Params.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/Table.java,1.1;
+ extensions/xalan27/src/com/nwalsh/xalan/Text.java,1.1; extensions/xalan27/
+ src/com/nwalsh/xalan/Verbatim.java,1.1 - Norman Walsh
+
+ â— Handle the case where the imageFn is actually a URI. This still needs work.
+
+ Modified: extensions/saxon643/com/nwalsh/saxon/ImageIntrinsics.java,1.4 -
+ Norman Walsh
+
+FO
+
+The following changes have been made to the fo code since the 1.69.1 release.
+
+ â— Adapted to the new indexing code. Now works just like a wrapper that calls
+ kosek indexing method, originally implemented here.
+
+ Modified: fo/autoidx-ng.xsl,1.5 - Jirka Kosek
+
+ â— Added parameters for header/footer table minimum height.
+
+ Modified: fo/pagesetup.xsl,1.60; fo/param.ent,1.100; fo/param.xweb,1.113 -
+ Robert Stayton
+
+ â— Add the index.method parameter.
+
+ Modified: fo/param.ent,1.99; fo/param.xweb,1.112 - Robert Stayton
+
+ â— Integrate support for three indexing methods: - the original English-only
+ method. - Jirka Kosek's method using EXSLT extensions. - Eliot Kimber's
+ method using Saxon extensions. Use the 'index.method' parameter to select.
+
+ Modified: fo/autoidx.xsl,1.38 - Robert Stayton
+
+ â— Add support for TOC for qandaset in fo output.
+
+ Modified: fo/autotoc.xsl,1.30; fo/qandaset.xsl,1.20 - Robert Stayton
+
+ â— Added parameter ulink.hyphenate.chars. Added parameter insert.link
+ .page.number.
+
+ Modified: fo/param.ent,1.98; fo/param.xweb,1.111 - Robert Stayton
+
+ â— Implemented feature request #942524 to add insert.link.page.number to allow
+ link element cross references to have a page number.
+
+ Modified: fo/xref.xsl,1.67 - Robert Stayton
+
+ â— Add support for ulink.hyphenate.chars so more characters can be break
+ points in urls.
+
+ Modified: fo/xref.xsl,1.66 - Robert Stayton
+
+ â— Implemented patch #1075144 to make the url text in a ulink in FO output an
+ active link as well.
+
+ Modified: fo/xref.xsl,1.65 - Robert Stayton
+
+ â— table footnotes now have their own table.footnote.properties attribute set.
+
+ Modified: fo/footnote.xsl,1.23 - Robert Stayton
+
+ â— Add qandaset to root.elements.
+
+ Modified: fo/docbook.xsl,1.41 - Robert Stayton
+
+ â— Added mode="page.sequence" to make it easier to put content into a page
+ sequence. First used for qandaset.
+
+ Modified: fo/component.xsl,1.37 - Robert Stayton
+
+ â— Implemented feature request #1434408 to support formatting of biblioentry.
+
+ Modified: fo/biblio.xsl,1.35 - Robert Stayton
+
+ â— Added biblioentry.properties.
+
+ Modified: fo/param.ent,1.97; fo/param.xweb,1.110 - Robert Stayton
+
+ â— Support PTC/Arbortext bookmarks
+
+ Modified: fo/docbook.xsl,1.40; fo/ptc.xsl,1.1 - Norman Walsh
+
+ â— Added table.footnote.properties to permit table footnotes to format
+ differently from regular footnotes.
+
+ Modified: fo/param.ent,1.96; fo/param.xweb,1.109 - Robert Stayton
+
+ â— Refactored table templates to unify their processing and support all
+ options in all types. Now table and informaltable, in both Cals and Html
+ markup, use the same templates where possible, and all support pgwide,
+ rotation, and floats. There is also a placeholder table.container template
+ to support wrapping a table in a layout table, so the XEP table title
+ "continued" extension can be more easily implemented.
+
+ Modified: fo/formal.xsl,1.52; fo/htmltbl.xsl,1.9; fo/table.xsl,1.48 -
+ Robert Stayton
+
+ â— Added new attribute set toc.line.properties for controlling appearance of
+ lines in ToC/LoT
+
+ Modified: fo/autotoc.xsl,1.29; fo/param.ent,1.95; fo/param.xweb,1.108 -
+ Jirka Kosek
+
+ â— Added support for float to example and equation. Added support for pgwide
+ to figure, example, and equation (the latter two via a dbfo pgwide="1"
+ processing instruction).
+
+ Modified: fo/formal.xsl,1.51 - Robert Stayton
+
+ â— Add pgwide.properties attribute-set.
+
+ Modified: fo/param.ent,1.94; fo/param.xweb,1.107 - Robert Stayton
+
+ â— Added refclass.suppress param.
+
+ If the value of refclass.suppress is non-zero, then display refclass
+ contents is suppressed in output. Affects HTML and FO output only.
+
+ Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; html
+ /param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) Smith
+
+ â— Improved support for task subelements
+
+ Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - Jirka Kosek
+
+ â— Adjusted spacing around K&R-formatted Funcdef and Paramdef output such that
+ it can more easily be discerned where one ends and the other begins. Closes
+ #1213264.
+
+ Modified: fo/synop.xsl,1.18 - Michael(tm) Smith
+
+ â— Made handling of paramdef/parameter in FO output consistent with that in
+ HTML and manpages output. Closes #1213259.
+
+ Modified: fo/synop.xsl,1.17 - Michael(tm) Smith
+
+ â— Made handling of Refnamediv consistent with formatting in HTML and manpages
+ output; specifically, changed so that Refname (comma-separated list of
+ multiple instances found) is used (instead of Refentrytitle as previously),
+ then em-dash, then the Refpurpose. Closes #1212562.
+
+ Modified: fo/refentry.xsl,1.30 - Michael(tm) Smith
+
+ â— Added output of Releaseinfo to recto titlepage ("copyright" page) for Book
+ in FO output. This makes it consistent with HTML output. Closes #1327034.
+ Thanks to Paul DuBois for reporting.
+
+ Modified: fo/titlepage.templates.xml,1.28 - Michael(tm) Smith
+
+ â— Added condition for setting block-progression-dimension.minimum on
+ table-row, instead of height, when fop1.extensions is non-zero. For an
+ explanation of the reason for the change, see: http://wiki.apache.org/
+ xmlgraphics-fop/Troubleshooting/CommonLogMessages
+
+ Modified: fo/pagesetup.xsl,1.59 - Michael(tm) Smith
+
+ â— Added new refclass.suppress param for suppressing display of Refclass in
+ HTML and FO output. Did not add it to manpages because manpages stylesheet
+ is currently just silently ignoring Refclass anyway. Closes request #
+ 1461065. Thanks to Davor Ocelic (docelic) for reporting.
+
+ Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - Michael(tm) Smith
+
+ â— Add support for keep-together PI to informal objects.
+
+ Modified: fo/formal.xsl,1.50 - Robert Stayton
+
+ â— Add support for fop1.extensions.
+
+ Modified: fo/formal.xsl,1.49; fo/graphics.xsl,1.44; fo/table.xsl,1.47 -
+ Robert Stayton
+
+ â— Add support for fop1 bookmarks.
+
+ Modified: fo/docbook.xsl,1.39 - Robert Stayton
+
+ â— Add fop1.extentions parameter to add support for fop development version.
+
+ Modified: fo/param.ent,1.92; fo/param.xweb,1.105 - Robert Stayton
+
+ â— Start supporting fop development version, which will become fop version 1.
+
+ Modified: fo/fop1.xsl,1.1 - Robert Stayton
+
+ â— Add template for task in mode="xref-to".
+
+ Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert Stayton
+
+ â— table footnotes now also get footnote.properties attribute-set.
+
+ Modified: fo/footnote.xsl,1.22 - Robert Stayton
+
+ â— Added index.separator named template to compute the separator punctuation
+ based on locale.
+
+ Modified: fo/autoidx.xsl,1.36 - Robert Stayton
+
+ â— Added support for link, olink, and xref within OO Classsynopsis and
+ children. (Because DocBook NG/5 allows it).
+
+ Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) Smith
+
+ â— Support date as an inline
+
+ Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman Walsh
+
+ â— Added new parameter keep.relative.image.uris
+
+ Modified: fo/param.ent,1.91; fo/param.xweb,1.104; html/param.ent,1.87; html
+ /param.xweb,1.96; params/keep.relative.image.uris.xml,1.1 - Norman Walsh
+
+ â— Map Unicode space characters U+2000-U+200A to fo:leaders.
+
+ Modified: fo/docbook.xsl,1.38; fo/passivetex.xsl,1.4; fo/spaces.xsl,1.1 -
+ Jirka Kosek
+
+ â— Output a real em dash for em-dash dingbat (instead of two hypens).
+
+ Modified: fo/fo.xsl,1.7 - Michael(tm) Smith
+
+ â— Support default label width parameters for itemized and ordered lists
+
+ Modified: fo/lists.xsl,1.64; fo/param.ent,1.90; fo/param.xweb,1.103; params
+ /itemizedlist.label.width.xml,1.1; params/orderedlist.label.width.xml,1.1 -
+ Norman Walsh
+
+ â— Generate localized title for Refsynopsisdiv if no appropriate Title
+ descendant found in source. Closes #1212398. This change makes behavior for
+ the Synopsis title consistent with the behavior of HTML and manpages
+ output.
+
+ Also, added xsl:use-attribute-sets="normal.para.spacing" to block generated
+ for Cmdsynopsis output. Previously, that block had no spacing at all
+ specified, which resulted it being crammed up to closely to the Synopsis
+ head.
+
+ Modified: fo/refentry.xsl,1.28; fo/synop.xsl,1.13 - Michael(tm) Smith
+
+ â— Added parameters to support localization of index item punctuation.
+
+ Modified: fo/autoidx.xsl,1.35 - Robert Stayton
+
+ â— Added index.number.separator, index.range.separator, and
+ index.term.separator parameters to support localization of punctuation in
+ index entries.
+
+ Modified: fo/param.ent,1.89; fo/param.xweb,1.102 - Robert Stayton
+
+ â— Added "Cross References" section in HTML doc (for consistency with the FO
+ doc). Also, moved the existing FO "Cross References" section to follow the
+ "Linking" section.
+
+ Modified: fo/param.xweb,1.101; html/param.xweb,1.95 - Michael(tm) Smith
+
+ â— Added ID attribues to all Reference elements (e.g., id="tables" for the doc
+ for section on Table params). So pages for all subsections of ref docs now
+ have stable filenames instead of arbitrary generated filenames.
+
+ Modified: fo/param.xweb,1.100; html/param.xweb,1.94 - Michael(tm) Smith
+
+ â— Added two new parameters for handling of multi-term varlistentry elements:
+
+ variablelist.term.break.after: When the variablelist.term.break.after is
+ non-zero, it will generate a line break after each term multi-term
+ varlistentry.
+
+ variablelist.term.separator: When a varlistentry contains multiple term
+ elements, the string specified in the value of the
+ variablelist.term.separator parameter is placed after each term except the
+ last. The default is ", " (a comma followed by a space). To suppress
+ rendering of the separator, set the value of variablelist.term.separator to
+ the empty string ("").
+
+ These parameters are primarily intended to be useful if you have multi-term
+ varlistentries that have long terms.
+
+ Closes #1306676. Thanks to Sam Steingold for providing an example "lots of
+ long terms" doc that demonstrated the value of having these options.
+
+ Also, added normalize-space() call to processing of each term.
+
+ This change affects all output formats (HTML, PDF, manpages). The default
+ behavior should pretty much remain the same as before, but it is possible
+ (as always) that the change may introduce some new bugginess.
+
+ Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; fo/param.xweb,1.99; html/
+ lists.xsl,1.48; html/param.ent,1.86; html/param.xweb,1.93; manpages/
+ lists.xsl,1.22; manpages/param.ent,1.14; manpages/param.xweb,1.16; params/
+ variablelist.term.break.after.xml,1.1; params/
+ variablelist.term.separator.xml,1.1 - Michael(tm) Smith
+
+ â— Add sidebar titlepage placeholder attset for styles.
+
+ Modified: fo/titlepage.xsl,1.37 - Robert Stayton
+
+ â— Add titlepage for sidebar.
+
+ Modified: fo/titlepage.templates.xml,1.27 - Robert Stayton
+
+ â— Implemented RFE #1292615.
+
+ Added bunch of new parameters (attribute sets) that affect list
+ presentation: list.block.properties, itemizedlist.properties, orderedlist
+ .properties, itemizedlist.label.properties and orderedlist.label
+ .properties. Default behaviour of stylesheets has not been changed but
+ further customizations will be much more easier.
+
+ Modified: fo/lists.xsl,1.61; fo/param.ent,1.87; fo/param.xweb,1.98; params/
+ itemizedlist.label.properties.xml,1.1; params/
+ itemizedlist.properties.xml,1.1; params/list.block.properties.xml,1.1;
+ params/orderedlist.label.properties.xml,1.1; params/
+ orderedlist.properties.xml,1.1 - Jirka Kosek
+
+ â— Implemented RFE #1242092.
+
+ You can enable crop marks in your document by setting crop.marks=1 and
+ xep.extensions=1. Appearance of crop marks can be controlled by parameters
+ crop.mark.bleed (6pt), crop.mark.offset (24pt) and crop.mark.width (0.5pt).
+
+ Also there is new named template called user-xep-pis. You can overwrite it
+ in order to produce some PIs that can control XEP as described in http://
+ www.renderx.com/reference.html#Output_Formats
+
+ Modified: fo/docbook.xsl,1.36; fo/param.ent,1.86; fo/param.xweb,1.97; fo/
+ xep.xsl,1.23; params/crop.mark.bleed.xml,1.1; params/
+ crop.mark.offset.xml,1.1; params/crop.mark.width.xml,1.1; params/
+ crop.marks.xml,1.1 - Jirka Kosek
+
+HTML
+
+The following changes have been made to the html code since the 1.69.1 release.
+
+ â— implemented index.method parameter and three methods.
+
+ Modified: html/autoidx.xsl,1.28 - Robert Stayton
+
+ â— added index.method parameter to support 3 indexing methods.
+
+ Modified: html/param.ent,1.94; html/param.xweb,1.103 - Robert Stayton
+
+ â— Implemented feature request #1072510 as a processing instruction to permit
+ including external HTML content into HTML output.
+
+ Modified: html/pi.xsl,1.9 - Robert Stayton
+
+ â— Added new parameter chunk.tocs.and.lots.has.title which controls presence
+ of title in a separate chunk with ToC/LoT. Disabling title can be very
+ useful if you are generating frameset output (well, yes those frames, but
+ some customers really want them ;-).
+
+ Modified: html/chunk-code.xsl,1.15; html/param.ent,1.93; html/
+ param.xweb,1.102; params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka
+ Kosek
+
+ â— Support dbhtml/dbfo start PI for orderedlist numbering in both HTML and FO
+
+ Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman Walsh
+
+ â— Allow ToC without title also for set and book.
+
+ Modified: html/autotoc.xsl,1.37; html/division.xsl,1.12 - Jirka Kosek
+
+ â— Implemented floats uniformly for figure, example, equation and
+ informalfigure, informalexample, and informalequation.
+
+ Modified: html/formal.xsl,1.22 - Robert Stayton
+
+ â— Added the autotoc.label.in.hyperlink param.
+
+ If the value of autotoc.label.in.hyperlink is non-zero, labels are included
+ in hyperlinked titles in the TOC. If it is instead zero, labels are still
+ displayed prior to the hyperlinked titles, but are not hyperlinked along
+ with the titles.
+
+ Closes patch #1065868. Thanks to anatoly techtonik for the patch.
+
+ Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; html/
+ param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - Michael(tm)
+ Smith
+
+ â— Added two new params: html.head.legalnotice.link.types and html.head.
+ legalnotice.link.multiple.
+
+ If the value of the generate.legalnotice.link is non-zero, then the
+ stylesheet generates (in the head section of the HTML source) either a
+ single HTML link element or, if the value of the html.head.legalnotice.link
+ .multiple is non-zero, one link element for each link type specified. Each
+ link has the following attributes:
+
+ - a rel attribute whose value is derived from the value of html.head.
+ legalnotice.link.types
+
+ - an href attribute whose value is set to the URL of the file containing
+ the legalnotice
+
+ - a title attribute whose value is set to the title of the corresponding
+ legalnotice (or a title programatically determined by the stylesheet)
+
+ For example:
+
+ <link rel="copyright" href="ln-id2524073.html" title="Legal Notice">
+
+ Closes #1476450. Thanks to Sam Steingold.
+
+ Modified: html/chunk-common.xsl,1.45; html/param.ent,1.91; html/
+ param.xweb,1.100; params/generate.legalnotice.link.xml,1.4; params/
+ html.head.legalnotice.link.multiple.xml,1.1; params/
+ html.head.legalnotice.link.types.xml,1.1 - Michael(tm) Smith
+
+ â— Added refclass.suppress param.
+
+ If the value of refclass.suppress is non-zero, then display refclass
+ contents is suppressed in output. Affects HTML and FO output only.
+
+ Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; html
+ /param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) Smith
+
+ â— Improved support for task subelements
+
+ Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - Jirka Kosek
+
+ â— Added new refclass.suppress param for suppressing display of Refclass in
+ HTML and FO output. Did not add it to manpages because manpages stylesheet
+ is currently just silently ignoring Refclass anyway. Closes request #
+ 1461065. Thanks to Davor Ocelic (docelic) for reporting.
+
+ Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - Michael(tm) Smith
+
+ â— Process alt text with normalize-space(). Replace tab indents with spaces.
+
+ Modified: html/graphics.xsl,1.57 - Robert Stayton
+
+ â— Content of citation element is automatically linked to the bibliographic
+ entry with the corresponding abbrev.
+
+ Modified: html/biblio.xsl,1.26; html/inline.xsl,1.47; html/xref.xsl,1.58 -
+ Jirka Kosek
+
+ â— Add template for task in mode="xref-to".
+
+ Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert Stayton
+
+ â— Suppress ID warnings if the .warnings parameter is 0
+
+ Modified: html/html.xsl,1.17 - Norman Walsh
+
+ â— Add support for floatstyle to figure.
+
+ Modified: html/formal.xsl,1.21 - Robert Stayton
+
+ â— Handling of xref to area/areaset need support in extensions code also. I
+ currently have no time to touch extensions code, so code is here to be
+ enabled when extension is fixed also.
+
+ Modified: html/xref.xsl,1.56 - Jirka Kosek
+
+ â— Added 3 parameters for overriding gentext for index punctuation.
+
+ Modified: html/param.ent,1.89; html/param.xweb,1.98 - Robert Stayton
+
+ â— Added parameters to support localization of index item punctuation. Added
+ index.separator named template to compute the separator punctuation based
+ on locale.
+
+ Modified: html/autoidx.xsl,1.27 - Robert Stayton
+
+ â— Added a <div class="{$class}-contents"> wrapper around output of contents
+ of all formal objects. Also, added an optional <br class="{class}-break"/>
+ linebreak after all formal objects.
+
+ WARNING: Because this change places an additional DIV between the DIV
+ wrapper for the equation and the equation contents, it may break some
+ existing CSS stylesheets that have been created with the assumption that
+ there would never be an intervening DIV there.
+
+ The following is an example of what Equation output looks like as a result
+ of the changes described above.
+
+ <div class="equation"> <a name="three" id="three"></a>
+
+ <p class="title"><b>(1.3)</b></p>
+
+ <div class="equation-contents"> <span class="mathphrase">1+1=3</span> </
+ div> </div><br class="equation-break">
+
+ Rationale: These changes allow CSS control of the placement of the
+ formal-object title relative to the formal-object contents. For example,
+ using the CSS "float" property enables the title and contents to be
+ rendered on the same line. Example stylesheet:
+
+ .equation { margin-top: 20px; margin-bottom: 20px; } .equation-contents {
+ float: left; }
+
+ .equation .title { margin-top: 0; float: right; margin-right: 200px; }
+
+ .equation .title b { font-weight: normal; }
+
+ .equation-break { clear: both; }
+
+ Note that the purpose of the ".equation-break" class is to provide a way to
+ clear off the floats.
+
+ If you want to instead have the equation title rendered to the left of the
+ equation contents, you can do something like this:
+
+ .equation { margin-top: 20px; width: 300px; margin-bottom: 20px; }
+ .equation-contents { float: right; }
+
+ .equation .title { margin-top: 0; float: left; margin-right: 200px; }
+
+ .equation .title b { font-weight: normal; }
+
+ .equation-break { clear: both; }
+
+ Modified: html/formal.xsl,1.20 - Michael(tm) Smith
+
+ â— Added a chunker.output.quiet top-level parameter so that the chunker can be
+ made quiet by default
+
+ Modified: html/chunker.xsl,1.26 - Norman Walsh
+
+ â— Added support for link, olink, and xref within OO Classsynopsis and
+ children. (Because DocBook NG/5 allows it).
+
+ Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) Smith
+
+ â— New parameter: id.warnings. If non-zero, warnings are generated for titled
+ objects that don't have titles. True by default; I wonder if this will be
+ too aggressive?
+
+ Modified: html/biblio.xsl,1.25; html/component.xsl,1.27; html/
+ division.xsl,1.11; html/formal.xsl,1.19; html/glossary.xsl,1.20; html/
+ html.xsl,1.13; html/index.xsl,1.16; html/param.ent,1.88; html/
+ param.xweb,1.97; html/refentry.xsl,1.22; html/sections.xsl,1.30; params/
+ id.warnings.xml,1.1 - Norman Walsh
+
+ â— If the keep.relative.image.uris parameter is true, don't use the absolute
+ URI (as calculated from xml:base) in the img src attribute, us the value
+ the author specified. Note that we still have to calculate the absolute
+ filename for use in the image intrinsics extension.
+
+ Modified: html/graphics.xsl,1.56 - Norman Walsh
+
+ â— Support date as an inline
+
+ Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman Walsh
+
+ â— Added new parameter keep.relative.image.uris
+
+ Modified: fo/param.ent,1.91; fo/param.xweb,1.104; html/param.ent,1.87; html
+ /param.xweb,1.96; params/keep.relative.image.uris.xml,1.1 - Norman Walsh
+
+ â— Added two new parameters for handling of multi-term varlistentry elements:
+
+ variablelist.term.break.after: When the variablelist.term.break.after is
+ non-zero, it will generate a line break after each term multi-term
+ varlistentry.
+
+ variablelist.term.separator: When a varlistentry contains multiple term
+ elements, the string specified in the value of the
+ variablelist.term.separator parameter is placed after each term except the
+ last. The default is ", " (a comma followed by a space). To suppress
+ rendering of the separator, set the value of variablelist.term.separator to
+ the empty string ("").
+
+ These parameters are primarily intended to be useful if you have multi-term
+ varlistentries that have long terms.
+
+ Closes #1306676. Thanks to Sam Steingold for providing an example "lots of
+ long terms" doc that demonstrated the value of having these options.
+
+ Also, added normalize-space() call to processing of each term.
+
+ This change affects all output formats (HTML, PDF, manpages). The default
+ behavior should pretty much remain the same as before, but it is possible
+ (as always) that the change may introduce some new bugginess.
+
+ Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; fo/param.xweb,1.99; html/
+ lists.xsl,1.48; html/param.ent,1.86; html/param.xweb,1.93; manpages/
+ lists.xsl,1.22; manpages/param.ent,1.14; manpages/param.xweb,1.16; params/
+ variablelist.term.break.after.xml,1.1; params/
+ variablelist.term.separator.xml,1.1 - Michael(tm) Smith
+
+ â— Added "wrapper-name" param to inline.charseq named template, enabling it to
+ output inlines other than just "span". Acronym and Abbrev templates now use
+ inline.charseq to output HTML "acronym" and "abbr" elements (instead of
+ "span"). Closes #1305468. Thanks to Sam Steingold for suggesting the
+ change.
+
+ Modified: html/inline.xsl,1.45 - Michael(tm) Smith
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.69.1
+release.
+
+ â— Added the following params:
+
+ - man.indent.width (string-valued) - man.indent.refsect (boolean) -
+ man.indent.blurbs (boolean) - man.indent.lists (boolean) -
+ man.indent.verbatims (boolean)
+
+ Note that in earlier snapshots, man.indent.width was named
+ man.indentation.default.value and the boolean params had names like
+ man.indentation.*.adjust. Also the man.indent.blurbs param was called
+ man.indentation.authors.adjust (or something).
+
+ The behavior now is: If the value of a particular man.indent.* boolean
+ param is non-zero, the corresponding contents (refsect*, list items,
+ authorblurb/personblurb, vervatims) are displayed with a left margin
+ indented by a width equal to the value of man.indent.width.
+
+ Modified: params/man.indent.blurbs.xml,1.1; manpages/docbook.xsl,1.74;
+ manpages/info.xsl,1.20; manpages/lists.xsl,1.30; manpages/other.xsl,1.20;
+ manpages/param.ent,1.22; manpages/param.xweb,1.24; manpages/
+ refentry.xsl,1.14; params/man.indent.lists.xml,1.1; params/
+ man.indent.refsect.xml,1.1; params/man.indent.verbatims.xml,1.1; params/
+ man.indent.width.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.table.footnotes.divider param.
+
+ In each table that contains footenotes, the string specified by the man.
+ table.footnotes.divider parameter is output before the list of footnotes
+ for the table.
+
+ Modified: manpages/docbook.xsl,1.73; manpages/links.xsl,1.6; manpages/
+ param.ent,1.21; manpages/param.xweb,1.23; params/
+ man.table.footnotes.divider.xml,1.1 - Michael(tm) Smith
+
+ â— Added the man.output.in.separate.dir, man.output.base.dir, and
+ man.output.subdirs.enabled parameters.
+
+ The man.output.base.dir parameter specifies the base directory into which
+ man-page files are output. The man.output.subdirs.enabled parameter
+ controls whether the files are output in subdirectories within the base
+ directory.
+
+ The values of the man.output.base.dir and man.output.subdirs.enabled
+ parameters are used only if the value of man.output.in.separate.dir
+ parameter is non-zero. If the value of man.output.in.separate.dir is zero,
+ man-page files are not output in a separate directory.
+
+ Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; manpages/
+ param.xweb,1.22; params/man.output.base.dir.xml,1.1; params/
+ man.output.in.separate.dir.xml,1.1; params/
+ man.output.subdirs.enabled.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.font.table.headings and man.font.table.title params, for
+ controlling font in table headings and titles.
+
+ Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; manpages/
+ param.xweb,1.21; params/man.font.table.headings.xml,1.1; params/
+ man.font.table.title.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.font.funcsynopsisinfo and man.font.funcprototype params, for
+ specifying the roff font (for example, BI, B, I) for funcsynopsisinfo and
+ funcprototype output.
+
+ Modified: manpages/block.xsl,1.19; manpages/docbook.xsl,1.69; manpages/
+ param.ent,1.18; manpages/param.xweb,1.20; manpages/synop.xsl,1.29; manpages
+ /table.xsl,1.21; params/man.font.funcprototype.xml,1.1; params/
+ man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.segtitle.suppress param.
+
+ If the value of man.segtitle.suppress is non-zero, then display of segtitle
+ contents is suppressed in output.
+
+ Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17; manpages/
+ param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.output.manifest.enabled and man.output.manifest.filename params.
+
+ If man.output.manifest.enabled is non-zero, a list of filenames for man
+ pages generated by the stylesheet transformation is written to the file
+ named by man.output.manifest.filename
+
+ Modified: manpages/docbook.xsl,1.67; manpages/other.xsl,1.19; manpages/
+ param.ent,1.16; manpages/param.xweb,1.18; params/
+ man.output.manifest.enabled.xml,1.1; params/
+ man.output.manifest.filename.xml,1.1; tools/make/Makefile.DocBook,1.4 -
+ Michael(tm) Smith
+
+ â— Added refentry.meta.get.quietly param.
+
+ If zero (the default), notes and warnings about "missing" markup are
+ generated during gathering of refentry metadata. If non-zero, the metadata
+ is gathered "quietly" -- that is, the notes and warnings are suppressed.
+
+ NOTE: If you are processing a large amount of refentry content, you may be
+ able to speed up processing significantly by setting a non-zero value for
+ refentry.meta.get.quietly.
+
+ Modified: common/refentry.xsl,1.17; manpages/param.ent,1.15; manpages/
+ param.xweb,1.17; params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+ Smith
+
+ â— Changed names of all boolean indentation params to man.indent.* Also
+ discarded individual man.indent.*.value params and switched to just using a
+ common man.indent.width param (3n by default).
+
+ Modified: manpages/docbook.xsl,1.66; manpages/info.xsl,1.19; manpages/
+ lists.xsl,1.29; manpages/other.xsl,1.18; manpages/refentry.xsl,1.13 -
+ Michael(tm) Smith
+
+ â— Added boolean man.output.in.separate.dir param, to control whether or not
+ man files are output in separate directory.
+
+ Modified: manpages/docbook.xsl,1.65; manpages/utility.xsl,1.14 - Michael
+ (tm) Smith
+
+ â— Added options for controlling indentation of verbatim output. Controlled
+ through the man.indentation.verbatims.adjust and
+ man.indentation.verbatims.value params. Closes #1242997
+
+ Modified: manpages/block.xsl,1.15; manpages/docbook.xsl,1.64 - Michael(tm)
+ Smith
+
+ â— Added options for controlling indentation in lists and in *blurb output in
+ the AUTHORS section. Controlled through the man.indentation.lists.adjust,
+ man.indentation.lists.value, man.indentation.authors.adjust, and
+ man.indentation.authors.value parameters. Default is 3 characters (instead
+ of the roff default of 8 characters). Closes #1449369.
+
+ Also, removed the indent that was being set on informalexample outuput. I
+ will instead add an option for indenting verbatims, which I think is what
+ the informalexample indent was intended for originally.
+
+ Modified: manpages/block.xsl,1.14; manpages/docbook.xsl,1.63; manpages/
+ info.xsl,1.18; manpages/lists.xsl,1.28 - Michael(tm) Smith
+
+ â— Changed line-spacing call before synopfragment to use ".sp -1n" ("n" units
+ specified) instead of plain ".sp -1"
+
+ Modified: manpages/synop.xsl,1.28 - Michael(tm) Smith
+
+ â— Added support for writing man files into a specific output directory and
+ into appropriate subdirectories within that output directory. Controlled
+ through the man.base.dir parameter (similar to the base.dir support in the
+ HTML stylesheet) and the man.subdirs.enabled parameter, which automatically
+ determines the name of an appropriate subdir (for example, man/man7, man/
+ man1, etc.) based on the section number/manvolnum of the source Refentry.
+
+ Closes #1255036 and #1170317. Thanks to Denis Bradford for the original
+ feature request, and to Costin Stroie for submitting a patch that was very
+ helpful in implementing the support.
+
+ Modified: manpages/docbook.xsl,1.62; manpages/utility.xsl,1.13 - Michael
+ (tm) Smith
+
+ â— Refined XPath statements and notification messages for refentry metadata
+ handling.
+
+ Modified: common/common.xsl,1.59; common/refentry.xsl,1.14; manpages/
+ docbook.xsl,1.61; manpages/other.xsl,1.17 - Michael(tm) Smith
+
+ â— Added support for copyright and legalnotice. The manpages stylesheets now
+ output a COPYRIGHT section, after the AUTHORS section, if a copyright or
+ legalnotice is found in the source. The section contains the copyright
+ contents followed by the legalnotice contents. Closes #1450209.
+
+ Modified: manpages/docbook.xsl,1.59; manpages/info.xsl,1.17 - Michael(tm)
+ Smith
+
+ â— Drastically reworked all of the XPath expressions used in refentry metadata
+ gathering -- completely removed $parentinfo and turned $info into a set of
+ nodes that includes the *info contents of the Refentry plus the *info
+ contents all all of its ancestor elements. The basic XPath expression now
+ used throughout is (using the example of checking for a date):
+
+ (($info[//date])[last()]/date)[1].
+
+ That selects the "last" *info/date date in document order -- that is, the
+ one eitther on the Refentry itself or on the closest ancestor to the
+ Refentry.
+
+ It's likely this change may break some things; may need to pick up some
+ pieces later.
+
+ Also, changed the default value for the man.th.extra2.max.length from 40 to
+ 30.
+
+ Modified: common/common.xsl,1.58; common/refentry.xsl,1.7; params/
+ man.th.extra2.max.length.xml,1.2; params/refentry.date.profile.xml,1.2;
+ params/refentry.manual.profile.xml,1.2; params/
+ refentry.source.name.profile.xml,1.2; params/
+ refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58; manpages/
+ other.xsl,1.15 - Michael(tm) Smith
+
+ â— Added support for DocBook 5 namespace-stripping in manpages stylesheet.
+ Closes request #1210692.
+
+ Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - Michael(tm)
+ Smith
+
+ â— Fixed handling of table footnotes. With this checkin, the table support in
+ the manpages stylesheet is now basically feature complete. So this change
+ closes request #619532, "No support for tables" -- the oldest currently
+ open manpages feature request, submitted by Ben Secrest (blsecres) on
+ 2002-10-07. Congratulations to me [patting myself on the back].
+
+ Modified: manpages/block.xsl,1.11; manpages/docbook.xsl,1.55; manpages/
+ table.xsl,1.15 - Michael(tm) Smith
+
+ â— Added handling for table titles. Also fixed handling of nested tables; nest
+ tables are now "extracted" and displayed just after their parent tables.
+
+ Modified: manpages/docbook.xsl,1.54; manpages/table.xsl,1.14 - Michael(tm)
+ Smith
+
+ â— Added option for turning off bold formatting in Funcsynopsis. Boldface
+ formatting in function synopsis is mandated in the man(7) man page and is
+ used almost universally in existing man pages. Despite that, it really does
+ look like crap to have an entire Funcsynopsis output in bold, so I added
+ params for turning off the bold formatting and/or replacing it with a
+ different roff special font (e.g., "RI" for alternating roman/italic
+ instead of the default "BI" for alternating bold/italic). The new params
+ are "man.funcprototype.font" and "man.funcsynopsisinfo.font". To be
+ documented later.
+
+ Closes #1452247. Thanks to Joe Orton for the feature request.
+
+ Modified: params/man.string.subst.map.xml,1.16; manpages/block.xsl,1.10;
+ manpages/docbook.xsl,1.51; manpages/inline.xsl,1.16; manpages/
+ synop.xsl,1.27 - Michael(tm) Smith
+
+ â— Use AUTHORS instead of AUTHOR if we have multiple people to attribute.
+ Also, fixed checking such that we generate author section even if we don't
+ have an author (as long as there is at least one other person/entity we can
+ put in the section). Also adjusted assembly of content for Author metainfo
+ field such that we now not only use author, but try to find a "best match"
+ if we can't find an author name to put there.
+
+ Closes #1233592. Thanks to Sam Steingold for the request.
+
+ Modified: manpages/info.xsl,1.12 - Michael(tm) Smith
+
+ â— Changes for request #1243027, "Impove handling of AUTHOR section." This
+ adds support for Collab, Corpauthor, Corpcredt, Orgname, Publishername, and
+ Publisher. Also adds support for output of Affiliation and its children,
+ and support for using gentext strings for auto-attributing roles (Author,
+ Editor, Publisher, Translator, etc.). Also did a lot of code cleanup and
+ modularization of all the AUTHOR handling code. And fixed a bug that was
+ causing Author info to not be picked up correctly for metainfo comment we
+ embed in man-page source.
+
+ Modified: manpages/info.xsl,1.11 - Michael(tm) Smith
+
+ â— Support bold output for "emphasis remap='B'". (because Eric Raymond's
+ doclifter(1) tool converts groff source marked up with ".B" request or "\
+ fB" escapes to DocBook "emphasis remap='B'".)
+
+ Modified: manpages/inline.xsl,1.14 - Michael(tm) Smith
+
+ â— Added support for Segmentedlist. Details: Output is tabular, with no option
+ for "list" type output. Output for Segtitle elements can be supressed by
+ setting man.segtitle.suppress. If Segtitle content is output, it is
+ rendered in italic type (not bold because not all terminals support bold
+ and so italic ensures the stand out on those terminals). Extra space (.sp
+ line) at end of table code ensures that it gets handled correctly in the
+ case where its source is the child of a Para. Closes feature-request #
+ 1400097. Thanks to Daniel Leidert for the patch and push, and to Alastair
+ Rankine for filing the original feature request.
+
+ Modified: manpages/lists.xsl,1.23; manpages/utility.xsl,1.10 - Michael(tm)
+ Smith
+
+ â— Improved handling or Author/Editor/Othercredit.
+
+ Reworked content of (non-visible) comment added at top of each page
+ (metadata stuff).
+
+ Added support for generating a manifest file (useful for cleaning up after
+ builds, etc.)
+
+ Modified: manpages/docbook.xsl,1.46; manpages/info.xsl,1.9; manpages/
+ other.xsl,1.12; manpages/utility.xsl,1.6 - Michael(tm) Smith
+
+ â— Added two new parameters for handling of multi-term varlistentry elements:
+
+ variablelist.term.break.after: When the variablelist.term.break.after is
+ non-zero, it will generate a line break after each term multi-term
+ varlistentry.
+
+ variablelist.term.separator: When a varlistentry contains multiple term
+ elements, the string specified in the value of the
+ variablelist.term.separator parameter is placed after each term except the
+ last. The default is ", " (a comma followed by a space). To suppress
+ rendering of the separator, set the value of variablelist.term.separator to
+ the empty string ("").
+
+ These parameters are primarily intended to be useful if you have multi-term
+ varlistentries that have long terms.
+
+ Closes #1306676. Thanks to Sam Steingold for providing an example "lots of
+ long terms" doc that demonstrated the value of having these options.
+
+ Also, added normalize-space() call to processing of each term.
+
+ This change affects all output formats (HTML, PDF, manpages). The default
+ behavior should pretty much remain the same as before, but it is possible
+ (as always) that the change may introduce some new bugginess.
+
+ Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; fo/param.xweb,1.99; html/
+ lists.xsl,1.48; html/param.ent,1.86; html/param.xweb,1.93; manpages/
+ lists.xsl,1.22; manpages/param.ent,1.14; manpages/param.xweb,1.16; params/
+ variablelist.term.break.after.xml,1.1; params/
+ variablelist.term.separator.xml,1.1 - Michael(tm) Smith
+
+Params
+
+The following changes have been made to the params code since the 1.69.1
+release.
+
+ â— New parameters to set header/footer table minimum height.
+
+ Modified: params/footer.table.height.xml,1.1; params/
+ header.table.height.xml,1.1 - Robert Stayton
+
+ â— Support multiple indexing methods for different languages.
+
+ Modified: params/index.method.xml,1.1 - Robert Stayton
+
+ â— Remove qandaset and qandadiv from generate.toc for fo output because
+ formerly it wasn't working, but now it is and the default behavior should
+ stay the same.
+
+ Modified: params/generate.toc.xml,1.8 - Robert Stayton
+
+ â— add support for page number references to link element too.
+
+ Modified: params/insert.link.page.number.xml,1.1 - Robert Stayton
+
+ â— Add support for more characters to hyphen on when ulink.hyphenate is turned
+ on.
+
+ Modified: params/ulink.hyphenate.chars.xml,1.1; params/
+ ulink.hyphenate.xml,1.3 - Robert Stayton
+
+ â— New attribute-set to format biblioentry and bibliomixed.
+
+ Modified: params/biblioentry.properties.xml,1.1 - Robert Stayton
+
+ â— Added new parameter chunk.tocs.and.lots.has.title which controls presence
+ of title in a separate chunk with ToC/LoT. Disabling title can be very
+ useful if you are generating frameset output (well, yes those frames, but
+ some customers really want them ;-).
+
+ Modified: html/chunk-code.xsl,1.15; html/param.ent,1.93; html/
+ param.xweb,1.102; params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka
+ Kosek
+
+ â— Added new attribute set toc.line.properties for controlling appearance of
+ lines in ToC/LoT
+
+ Modified: params/toc.line.properties.xml,1.1 - Jirka Kosek
+
+ â— Allow table footnotes to have different properties from regular footnotes.
+
+ Modified: params/table.footnote.properties.xml,1.1 - Robert Stayton
+
+ â— Set properties for pgwide="1" objects.
+
+ Modified: params/pgwide.properties.xml,1.1 - Robert Stayton
+
+ â— Added the autotoc.label.in.hyperlink param.
+
+ If the value of autotoc.label.in.hyperlink is non-zero, labels are included
+ in hyperlinked titles in the TOC. If it is instead zero, labels are still
+ displayed prior to the hyperlinked titles, but are not hyperlinked along
+ with the titles.
+
+ Closes patch #1065868. Thanks to anatoly techtonik for the patch.
+
+ Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; html/
+ param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - Michael(tm)
+ Smith
+
+ â— Added two new params: html.head.legalnotice.link.types and html.head.
+ legalnotice.link.multiple.
+
+ If the value of the generate.legalnotice.link is non-zero, then the
+ stylesheet generates (in the head section of the HTML source) either a
+ single HTML link element or, if the value of the html.head.legalnotice.link
+ .multiple is non-zero, one link element for each link type specified. Each
+ link has the following attributes:
+
+ - a rel attribute whose value is derived from the value of html.head.
+ legalnotice.link.types
+
+ - an href attribute whose value is set to the URL of the file containing
+ the legalnotice
+
+ - a title attribute whose value is set to the title of the corresponding
+ legalnotice (or a title programatically determined by the stylesheet)
+
+ For example:
+
+ <link rel="copyright" href="ln-id2524073.html" title="Legal Notice">
+
+ Closes #1476450. Thanks to Sam Steingold.
+
+ Modified: html/chunk-common.xsl,1.45; html/param.ent,1.91; html/
+ param.xweb,1.100; params/generate.legalnotice.link.xml,1.4; params/
+ html.head.legalnotice.link.multiple.xml,1.1; params/
+ html.head.legalnotice.link.types.xml,1.1 - Michael(tm) Smith
+
+ â— Added the following params:
+
+ - man.indent.width (string-valued) - man.indent.refsect (boolean) -
+ man.indent.blurbs (boolean) - man.indent.lists (boolean) -
+ man.indent.verbatims (boolean)
+
+ Note that in earlier snapshots, man.indent.width was named
+ man.indentation.default.value and the boolean params had names like
+ man.indentation.*.adjust. Also the man.indent.blurbs param was called
+ man.indentation.authors.adjust (or something).
+
+ The behavior now is: If the value of a particular man.indent.* boolean
+ param is non-zero, the corresponding contents (refsect*, list items,
+ authorblurb/personblurb, vervatims) are displayed with a left margin
+ indented by a width equal to the value of man.indent.width.
+
+ Modified: params/man.indent.blurbs.xml,1.1; manpages/docbook.xsl,1.74;
+ manpages/info.xsl,1.20; manpages/lists.xsl,1.30; manpages/other.xsl,1.20;
+ manpages/param.ent,1.22; manpages/param.xweb,1.24; manpages/
+ refentry.xsl,1.14; params/man.indent.lists.xml,1.1; params/
+ man.indent.refsect.xml,1.1; params/man.indent.verbatims.xml,1.1; params/
+ man.indent.width.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.table.footnotes.divider param.
+
+ In each table that contains footenotes, the string specified by the man.
+ table.footnotes.divider parameter is output before the list of footnotes
+ for the table.
+
+ Modified: manpages/docbook.xsl,1.73; manpages/links.xsl,1.6; manpages/
+ param.ent,1.21; manpages/param.xweb,1.23; params/
+ man.table.footnotes.divider.xml,1.1 - Michael(tm) Smith
+
+ â— Added the man.output.in.separate.dir, man.output.base.dir, and
+ man.output.subdirs.enabled parameters.
+
+ The man.output.base.dir parameter specifies the base directory into which
+ man-page files are output. The man.output.subdirs.enabled parameter
+ controls whether the files are output in subdirectories within the base
+ directory.
+
+ The values of the man.output.base.dir and man.output.subdirs.enabled
+ parameters are used only if the value of man.output.in.separate.dir
+ parameter is non-zero. If the value of man.output.in.separate.dir is zero,
+ man-page files are not output in a separate directory.
+
+ Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; manpages/
+ param.xweb,1.22; params/man.output.base.dir.xml,1.1; params/
+ man.output.in.separate.dir.xml,1.1; params/
+ man.output.subdirs.enabled.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.font.table.headings and man.font.table.title params, for
+ controlling font in table headings and titles.
+
+ Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; manpages/
+ param.xweb,1.21; params/man.font.table.headings.xml,1.1; params/
+ man.font.table.title.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.font.funcsynopsisinfo and man.font.funcprototype params, for
+ specifying the roff font (for example, BI, B, I) for funcsynopsisinfo and
+ funcprototype output.
+
+ Modified: manpages/block.xsl,1.19; manpages/docbook.xsl,1.69; manpages/
+ param.ent,1.18; manpages/param.xweb,1.20; manpages/synop.xsl,1.29; manpages
+ /table.xsl,1.21; params/man.font.funcprototype.xml,1.1; params/
+ man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) Smith
+
+ â— Changed to select="0" in refclass.suppress (instead of ..>0</..)
+
+ Modified: params/refclass.suppress.xml,1.3 - Michael(tm) Smith
+
+ â— Added man.segtitle.suppress param.
+
+ If the value of man.segtitle.suppress is non-zero, then display of segtitle
+ contents is suppressed in output.
+
+ Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17; manpages/
+ param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 - Michael(tm) Smith
+
+ â— Added man.output.manifest.enabled and man.output.manifest.filename params.
+
+ If man.output.manifest.enabled is non-zero, a list of filenames for man
+ pages generated by the stylesheet transformation is written to the file
+ named by man.output.manifest.filename
+
+ Modified: manpages/docbook.xsl,1.67; manpages/other.xsl,1.19; manpages/
+ param.ent,1.16; manpages/param.xweb,1.18; params/
+ man.output.manifest.enabled.xml,1.1; params/
+ man.output.manifest.filename.xml,1.1; tools/make/Makefile.DocBook,1.4 -
+ Michael(tm) Smith
+
+ â— Added refclass.suppress param.
+
+ If the value of refclass.suppress is non-zero, then display refclass
+ contents is suppressed in output. Affects HTML and FO output only.
+
+ Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; html
+ /param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) Smith
+
+ â— Added refentry.meta.get.quietly param.
+
+ If zero (the default), notes and warnings about "missing" markup are
+ generated during gathering of refentry metadata. If non-zero, the metadata
+ is gathered "quietly" -- that is, the notes and warnings are suppressed.
+
+ NOTE: If you are processing a large amount of refentry content, you may be
+ able to speed up processing significantly by setting a non-zero value for
+ refentry.meta.get.quietly.
+
+ Modified: common/refentry.xsl,1.17; manpages/param.ent,1.15; manpages/
+ param.xweb,1.17; params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+ Smith
+
+ â— Added support for "software" and "sectdesc" class values on refmiscinfo;
+ "software" is treated identically to "source", and "setdesc" is treated
+ identically to "manual".
+
+ Modified: common/refentry.xsl,1.10; params/
+ man.th.extra2.max.length.xml,1.3; params/
+ refentry.source.name.profile.xml,1.4 - Michael(tm) Smith
+
+ â— Drastically reworked all of the XPath expressions used in refentry metadata
+ gathering -- completely removed $parentinfo and turned $info into a set of
+ nodes that includes the *info contents of the Refentry plus the *info
+ contents all all of its ancestor elements. The basic XPath expression now
+ used throughout is (using the example of checking for a date):
+
+ (($info[//date])[last()]/date)[1].
+
+ That selects the "last" *info/date date in document order -- that is, the
+ one eitther on the Refentry itself or on the closest ancestor to the
+ Refentry.
+
+ It's likely this change may break some things; may need to pick up some
+ pieces later.
+
+ Also, changed the default value for the man.th.extra2.max.length from 40 to
+ 30.
+
+ Modified: common/common.xsl,1.58; common/refentry.xsl,1.7; params/
+ man.th.extra2.max.length.xml,1.2; params/refentry.date.profile.xml,1.2;
+ params/refentry.manual.profile.xml,1.2; params/
+ refentry.source.name.profile.xml,1.2; params/
+ refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58; manpages/
+ other.xsl,1.15 - Michael(tm) Smith
+
+ â— Added option for turning off bold formatting in Funcsynopsis. Boldface
+ formatting in function synopsis is mandated in the man(7) man page and is
+ used almost universally in existing man pages. Despite that, it really does
+ look like crap to have an entire Funcsynopsis output in bold, so I added
+ params for turning off the bold formatting and/or replacing it with a
+ different roff special font (e.g., "RI" for alternating roman/italic
+ instead of the default "BI" for alternating bold/italic). The new params
+ are "man.funcprototype.font" and "man.funcsynopsisinfo.font". To be
+ documented later.
+
+ Closes #1452247. Thanks to Joe Orton for the feature request.
+
+ Modified: params/man.string.subst.map.xml,1.16; manpages/block.xsl,1.10;
+ manpages/docbook.xsl,1.51; manpages/inline.xsl,1.16; manpages/
+ synop.xsl,1.27 - Michael(tm) Smith
+
+ â— fop.extensions now only for FOP version 0.20.5 and earlier.
+
+ Modified: params/fop.extensions.xml,1.4 - Robert Stayton
+
+ â— Support for fop1 different from fop 0.20.5 and earlier.
+
+ Modified: params/fop1.extensions.xml,1.1 - Robert Stayton
+
+ â— Reset default value to empty string so template uses gentext first, then
+ the parameter value if not empty.
+
+ Modified: params/index.number.separator.xml,1.2; params/
+ index.range.separator.xml,1.2; params/index.term.separator.xml,1.2 - Robert
+ Stayton
+
+ â— New parameter: id.warnings. If non-zero, warnings are generated for titled
+ objects that don't have titles. True by default; I wonder if this will be
+ too aggressive?
+
+ Modified: html/biblio.xsl,1.25; html/component.xsl,1.27; html/
+ division.xsl,1.11; html/formal.xsl,1.19; html/glossary.xsl,1.20; html/
+ html.xsl,1.13; html/index.xsl,1.16; html/param.ent,1.88; html/
+ param.xweb,1.97; html/refentry.xsl,1.22; html/sections.xsl,1.30; params/
+ id.warnings.xml,1.1 - Norman Walsh
+
+ â— Added new parameter keep.relative.image.uris
+
+ Modified: fo/param.ent,1.91; fo/param.xweb,1.104; html/param.ent,1.87; html
+ /param.xweb,1.96; params/keep.relative.image.uris.xml,1.1 - Norman Walsh
+
+ â— Support default label width parameters for itemized and ordered lists
+
+ Modified: fo/lists.xsl,1.64; fo/param.ent,1.90; fo/param.xweb,1.103; params
+ /itemizedlist.label.width.xml,1.1; params/orderedlist.label.width.xml,1.1 -
+ Norman Walsh
+
+ â— Added parameters to localize punctuation in indexes.
+
+ Modified: params/index.number.separator.xml,1.1; params/
+ index.range.separator.xml,1.1; params/index.term.separator.xml,1.1 - Robert
+ Stayton
+
+ â— Added two new parameters for handling of multi-term varlistentry elements:
+
+ variablelist.term.break.after: When the variablelist.term.break.after is
+ non-zero, it will generate a line break after each term multi-term
+ varlistentry.
+
+ variablelist.term.separator: When a varlistentry contains multiple term
+ elements, the string specified in the value of the
+ variablelist.term.separator parameter is placed after each term except the
+ last. The default is ", " (a comma followed by a space). To suppress
+ rendering of the separator, set the value of variablelist.term.separator to
+ the empty string ("").
+
+ These parameters are primarily intended to be useful if you have multi-term
+ varlistentries that have long terms.
+
+ Closes #1306676. Thanks to Sam Steingold for providing an example "lots of
+ long terms" doc that demonstrated the value of having these options.
+
+ Also, added normalize-space() call to processing of each term.
+
+ This change affects all output formats (HTML, PDF, manpages). The default
+ behavior should pretty much remain the same as before, but it is possible
+ (as always) that the change may introduce some new bugginess.
+
+ Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; fo/param.xweb,1.99; html/
+ lists.xsl,1.48; html/param.ent,1.86; html/param.xweb,1.93; manpages/
+ lists.xsl,1.22; manpages/param.ent,1.14; manpages/param.xweb,1.16; params/
+ variablelist.term.break.after.xml,1.1; params/
+ variablelist.term.separator.xml,1.1 - Michael(tm) Smith
+
+ â— Convert 'no' to string in default value.
+
+ Modified: params/olink.doctitle.xml,1.4 - Robert Stayton
+
+ â— Implemented RFE #1292615.
+
+ Added bunch of new parameters (attribute sets) that affect list
+ presentation: list.block.properties, itemizedlist.properties, orderedlist
+ .properties, itemizedlist.label.properties and orderedlist.label
+ .properties. Default behaviour of stylesheets has not been changed but
+ further customizations will be much more easier.
+
+ Modified: fo/lists.xsl,1.61; fo/param.ent,1.87; fo/param.xweb,1.98; params/
+ itemizedlist.label.properties.xml,1.1; params/
+ itemizedlist.properties.xml,1.1; params/list.block.properties.xml,1.1;
+ params/orderedlist.label.properties.xml,1.1; params/
+ orderedlist.properties.xml,1.1 - Jirka Kosek
+
+ â— Implemented RFE #1242092.
+
+ You can enable crop marks in your document by setting crop.marks=1 and
+ xep.extensions=1. Appearance of crop marks can be controlled by parameters
+ crop.mark.bleed (6pt), crop.mark.offset (24pt) and crop.mark.width (0.5pt).
+
+ Also there is new named template called user-xep-pis. You can overwrite it
+ in order to produce some PIs that can control XEP as described in http://
+ www.renderx.com/reference.html#Output_Formats
+
+ Modified: fo/docbook.xsl,1.36; fo/param.ent,1.86; fo/param.xweb,1.97; fo/
+ xep.xsl,1.23; params/crop.mark.bleed.xml,1.1; params/
+ crop.mark.offset.xml,1.1; params/crop.mark.width.xml,1.1; params/
+ crop.marks.xml,1.1 - Jirka Kosek
+
+ â— Changed short descriptions in doc for *autolabel* params to match new
+ autolabel behavior.
+
+ Modified: params/appendix.autolabel.xml,1.5; params/
+ chapter.autolabel.xml,1.4; params/part.autolabel.xml,1.5; params/
+ preface.autolabel.xml,1.4 - Michael(tm) Smith
+
+Profiling
+
+The following changes have been made to the profiling code since the 1.69.1
+release.
+
+ â— Profiling now works together with namespace stripping (V5 documents).
+ Namespace striping should work with all stylesheets named profile-, even if
+ they are not supporting namespace stripping in a non-profiling variant.
+
+ Modified: profiling/profile-mode.xsl,1.4; profiling/xsl2profile.xsl,1.7 -
+ Jirka Kosek
+
+ â— Moved profiling stage out of templates. This make possible to reuse
+ profiled content by several templates and still maintaing node indentity
+ (needed for example for HTML Help where content is processed multiple
+ times).
+
+ I don't know why this was not on the top level before. Maybe some XSLT
+ processors choked on it. I hope this will be OK now.
+
+ Modified: profiling/xsl2profile.xsl,1.5 - Jirka Kosek
+
+Tools
+
+The following changes have been made to the tools code since the 1.69.1
+release.
+
+ â— Moved Makefile.DocBook from contrib module to xsl module.
+
+ Modified: tools/make/Makefile.DocBook,1.1 - Michael(tm) Smith
+
+WordML
+
+The following changes have been made to the wordml code since the 1.69.1
+release.
+
+ â— added contrib element, better handling of default paragraph style
+
+ Modified: wordml/pages-normalise.xsl,1.6; wordml/supported.xml,1.2; wordml/
+ wordml-final.xsl,1.14 - Steve Ball
+
+ â— added bridgehead
+
+ Modified: wordml/docbook-pages.xsl,1.6; wordml/docbook.xsl,1.17; wordml/
+ pages-normalise.xsl,1.5; wordml/template-pages.xml,1.7; wordml/
+ template.dot,1.4; wordml/template.xml,1.14; wordml/wordml-final.xsl,1.13 -
+ Steve Ball
+
+ â— added blocks stylesheet to support bibliographies, glossaries and qandasets
+
+ Modified: wordml/Makefile,1.4; wordml/README,1.3; wordml/
+ blocks-spec.xml,1.1; wordml/docbook-pages.xsl,1.5; wordml/docbook.xsl,1.16;
+ wordml/pages-normalise.xsl,1.4; wordml/sections-spec.xml,1.3; wordml/
+ specifications.xml,1.13; wordml/template-pages.xml,1.6; wordml/
+ template.dot,1.3; wordml/template.xml,1.13; wordml/wordml-blocks.xsl,1.1;
+ wordml/wordml-final.xsl,1.12; wordml/wordml-sections.xsl,1.3 - Steve Ball
+
+ â— added mediaobject caption
+
+ Modified: wordml/docbook-pages.xsl,1.4; wordml/docbook.xsl,1.15; wordml/
+ specifications.xml,1.12; wordml/template-pages.xml,1.5; wordml/
+ template.dot,1.2; wordml/template.xml,1.12; wordml/wordml-final.xsl,1.11 -
+ Steve Ball
+
+ â— added callouts
+
+ Modified: wordml/docbook-pages.xsl,1.3; wordml/docbook.xsl,1.14; wordml/
+ pages-normalise.xsl,1.3; wordml/specifications.xml,1.11; wordml/
+ template-pages.xml,1.4; wordml/wordml-final.xsl,1.10 - Steve Ball
+
+ â— added Word template file
+
+ Modified: wordml/template.dot,1.1 - Steve Ball
+
+ â— added abstract, fixed itemizedlist, ulink
+
+ Modified: wordml/specifications.xml,1.10; wordml/wordml-final.xsl,1.9 -
+ Steve Ball
+
+ â— fixed Makefile added many features to Pages support added revhistory,
+ inlines, highlights, abstract
+
+ Modified: wordml/Makefile,1.2; wordml/docbook-pages.xsl,1.2; wordml/
+ pages-normalise.xsl,1.2; wordml/sections-spec.xml,1.2; wordml/
+ specifications.xml,1.9; wordml/template-pages.xml,1.3; wordml/
+ template.xml,1.11; wordml/wordml-final.xsl,1.8; wordml/
+ wordml-sections.xsl,1.2 - Steve Ball
+
+ â— fixed handling linebreaks when generating WordML added Apple Pages support
+
+ Modified: wordml/docbook.xsl,1.13; wordml/template-pages.xml,1.2 - Steve
+ Ball
+
+Release 1.69.1
+
+This release is a minor bug-fix update to the 1.69.0 release. Along with bug
+fixes, it includes one configuration-parameter change: The default value of the
+annotation.support parameter is now 0 (off). The reason for that change is that
+there have been reports that annotation handling is causing a significant
+performance degradation in processing of large documents with xsltproc.
+
+Release 1.69.0
+
+The release includes major feature changes, particularly in the manpages
+stylesheets, as well as a large number of bug fixes.
+
+As with all DocBook Project “dot zero†releases, this is an experimental
+release .
+
+Common
+
+ â— This release adds localizations for the following languages: Albanian,
+ Amharic, Azerbaijani, Hindi, Irish (Gaelic), Gujarati, Kannada, Mongolian,
+ Oriya, Punjabi, Tagalog, Tamil, and Welsh.
+
+ â— Added support for specifying number format for auto labels for chapter,
+ appendix, part, and preface. Contolled with the appendix.autolabel,
+ chapter.autolabel, part.autolabel, and preface.autolabel parameters.
+
+ â— Added basic support for biblioref cross referencing.
+
+ â— Added support for align on caption in mediaobject.
+
+ â— Added support for processing documents that use the DocBook V5 namespace.
+
+ â— Added support for termdef and mathphrase.
+
+ â— EXPERIMENTAL: Incorporated the Slides and Website stylesheets into the
+ DocBook XSL stylesheets package. So, for example, Website documents can now
+ be processed using the following URI for the driver Website tabular.xsl
+ file:
+
+ http://docbook.sourceforge.net/release/xsl/current/website/tabular.xsl
+
+ ◠A procedure without a title is now treated as an “informal†procedure
+ (meaning that it is not added to any generated “list of procedures†and has
+ no affect on numbering of generated labels for other procedures).
+
+ â— docname is no longer added to olink when pointing to a root element.
+
+ â— Added support for generation of choice separator in inline simplelist. This
+ enables auto-generation of an appropriate localized “choice separator†(for
+ example, “and†or “orâ€) before the final item in an inline simplelist.
+
+ To indicate that you want a choice separator generated for a particular
+ list, you need to put a processing instruction (PI) of the form <?
+ dbchoice choice="foo"?> as a child of the list. For example:
+
+ <para>Choose from
+ ONE and ONLY ONE of the following:
+ <simplelist type="inline">
+ <?dbchoice choice="or" ?>
+ <member>A</member>
+ <member>B</member>
+ <member>C</member>.</simplelist></para>
+
+ Output (for English):
+
+ Choose from ONE and only ONE of the following choices: A, B, or C.
+
+ As a temporary workaround for the fact that most of the DocBook non-English
+ locale files don't have a localization for the word “orâ€, you can put in a
+ literal string to be used; example for French: <?dbchoice choice="ou">.
+ That is, use “ou†instead of “orâ€.
+
+FO
+
+ â— Added content-type property to external-graphic element, based on imagedata
+ format attribute.
+
+ ◠Added support for generating <rx:meta-field creator="$VERSION"/> field for
+ XEP output. This makes the DocBook XSL stylesheet version information
+ available through the Document Properties menu in Acrobat Reader and other
+ PDF viewers.
+
+ â— Trademark symbol handling made consistent with handling of same in HTML
+ stylesheets. Prior to this change, if you processed a document that
+ contained no value for the class attribute on the trademark element, the
+ HTML stylesheets would default to rendering a superscript TM symbol after
+ the trademark contents, but the FO stylesheets would render nothing.
+
+ â— Added support for generating XEP bookmarks for refentry.
+
+ â— Added support for HTML markup table border attribute, applied to each table
+ cell.
+
+ â— The table.width template can now sum column specs if none use % or *.
+
+ â— Added fox:destination extension inside fox:outline to support linking to
+ internal destinations.
+
+ â— Added support for customizing abstract with property sets. Controlled with
+ the abstract.properties and abstract.title.properties parameters.
+
+ â— Add footnotes in table title to table footnote set, and add support for
+ table footnotes to HTML table markup.
+
+ â— Added support for title in glosslist.
+
+ â— Added support for itemizedlist symbol none.
+
+ â— Implemented the new graphical.admonition.properties and
+ nongraphical.admonition.properties attribute sets.
+
+ â— Added id to formalpara and some other blocks that were missing it.
+
+ â— Changed the anchor template to output fo:inline instead of fo:wrapper.
+
+ â— Added support for toc.max.depth parameter.
+
+Help
+
+ â— Eclipse Help: Added support for generating olink database.
+
+HTML
+
+ â— Added a first cut at support in HTML output for DocBook 5 style annotation
+ s. Controlled using the annotation.support parameter, and implemented using
+ JavaScript and CSS styling. For more details, see the documentation for the
+ annotation.js, annotation.css, annotation.graphic.open, and
+ annotation.graphic.close parameters.
+
+ â— Generate client-side image map for imageobjectco with areas using calspair
+ units
+
+ â— Added support for <?img.src.path?> PI.
+
+ â— Added support for passing img.src.path to DocBook Java XSLT image
+ extensions when appropriate. Controlled using the
+ graphicsize.use.img.src.path parameter.
+
+ â— Added support for (not valid for DocBook 4) xlink:href on area and (not
+ valid for DocBook 4) alt in area.
+
+ â— Added new parameter default.table.frame to control table framing if there
+ is no frame attribute on a table.
+
+ â— Added initial, experimental support for generating content for the HTML
+ title attribute from content of the alt element. This change adds support
+ for the following inline elements only (none of them are block elements):
+ abbrev, accel, acronym, action, application, authorinitials, beginpage,
+ citation, citerefentry, citetitle, city, classname, code, command,
+ computeroutput, constant, country, database, email, envar, errorcode,
+ errorname, errortext, errortype, exceptionname, fax, filename, firstname,
+ firstterm, foreignphrase, function, glossterm, guibutton, guiicon, guilabel
+ , guimenu, guimenuitem, guisubmenu, hardware, honorific, interface,
+ interfacename, keycap, keycode, keysym, lineage, lineannotation, literal,
+ markup, medialabel, methodname, mousebutton, option, optional, otheraddr,
+ othername, package, parameter, personname, phone, pob, postcode,
+ productname, productnumber, prompt, property, quote, refentrytitle, remark,
+ replaceable, returnvalue, tag, shortcut, state, street, structfield,
+ structname, subscript, superscript, surname, symbol, systemitem, tag,
+ termdef, token, trademark, type, uri, userinput, varname, and wordasword
+
+ â— Added support for chunking revhistory into separate file (similar to the
+ support for doing same with legalnotice). Patch from Thomas Schraitle.
+ Controlled through new generate.revhistory.link parameter.
+
+ â— l10n.xsl: Made language codes RFC compliant. Added a new boolean config
+ parameter, l10n.lang.value.rfc.compliant. If it is non-zero (the default),
+ any underscore in a language code will be converted to a hyphen in HTML
+ output. If it is zero, the language code will be left as-is.
+
+man
+
+This release closes out 44 manpages stylesheet bug reports and feature
+requests. It adds more than 35 new configuration parameters for controlling
+aspects of man-page output -- including hyphenation and justification, handling
+of links, conversion of Unicode characters, and contents of man-page headers
+and footers.
+
+ â— New options for globally disabling/enabling hyphenation and justification:
+ man.justify and man.hyphenate.
+
+ Note that the default for the both of those is zero (off), because
+ justified text looks good only when it is also hyphenated; to quote the
+ “Hyphenation†node from the groff info page:
+
+ Since the odds are not great for finding a set of words, for every
+ output line, which fit nicely on a line without inserting excessive
+ amounts of space between words, `gtroff' hyphenates words so that it
+ can justify lines without inserting too much space between words.
+
+ The problem is that groff can end up hyphenating a lot of things that you
+ don't want hyphenated (variable names and command names, for example).
+ Keeping both justification and hyphenation disabled ensures that hyphens
+ won't get inserted where you don't want to them, and you don't end up with
+ lines containing excessive amounts of space between words. These default
+ settings run counter to how most existing man pages are formatted. But
+ there are some notable exceptions, such as the perl man pages.
+
+ â— Added parameters for controlling hyphenation of computer inlines,
+ filenames, and URLs. By default, even when hyphenation is enabled
+ (globally), hyphenation is now suppressed for "computer inlines"
+ (currently, just classname, constant, envar, errorcode, option, replaceable
+ , userinput, type, and varname, and for filenames, and for URLs from link.
+ It can be (re)enabled using the man.hyphenate.computer.inlines,
+ man.hyphenate.filenames, and man.hyphenate.urls parameters.
+
+ â— Implemented a new system for replacing Unicode characters. There are two
+ parts to the new system: a “string substitution map†for doing “essentialâ€
+ replacements, and a “character map†that can optionally be disabled and
+ enabled.
+
+ The new system fixes all open bugs that had to do with literal Unicode
+ numbered entities such as &#8220; and &#8221; showing up in output, and
+ greatly expands the ability of the stylesheets to generate “good†roff
+ equivalents for Unicode symbols and special characters.
+
+ Here are some details...
+
+ The previous manpages mechanism for replacing Unicode symbols and special
+ characters with roff equivalents (the replace-entities template) was not
+ scalable and not complete. The mechanism handled a somewhat arbitrary
+ selection of less than 20 or so Unicode characters. But there are
+ potentially more than 800 Unicode special characters that have some groff
+ equivalent they can be mapped to. And there are about 34 symbols in the
+ Latin-1 (ISO-8859-1) block alone. Users might reasonably expect that if
+ they include any of those Latin-1 characters in their DocBook source
+ documents, they will get correctly converted to known roff equivalents in
+ output.
+
+ In addition to those common symbols, certain users may have a need to use
+ symbols from other Unicode blocks. Say, somebody who is documenting an
+ application related to math might need to use a bunch of symbols from the
+ “Mathematical Operators†Unicode block (there are about 65 characters in
+ that block that have reasonable roff equivalents). Or somebody else might
+ really like Dingbats -- such as the checkmark character -- and so might use
+ a bunch of things from the “Dingbat†block (141 characters in that that
+ have roff equivalents or that can at least be “degraded†somewhat
+ gracefully into roff).
+
+ So, the old replace-entities mechanism was replaced with a completely
+ different mechanism that is based on use of two “mapsâ€: a “substitution
+ map†and a “character map†(the latter in a format compliant with the XSLT
+ 2.0 spec and therefore completely “forward compatible†with XSLT 2.0).
+
+ The substitution map is controlled through the man.string.subst.map
+ parameter, and is used to replace things like the backslash character
+ (which needs special handling to prevent it from being interpreted as a
+ roff escape). The substitution map cannot be disabled, because disabling it
+ will cause the output to be broken. However, you can add to it and change
+ it if needed.
+
+ The “character map†mechanism, on the other hand, can be completely
+ disabled. It is enabled by default, and, by default, does replacement of
+ all Latin-1 symbols, along with most special spaces, dashes, and quotes
+ (about 75 characters by default). Also, you can optionally enable a “fullâ€
+ character map that provides support for converting all 800 or so of the
+ characters that have some reasonable groff equivalent.
+
+ The character-map mechanism is controlled through the following parameters:
+
+ man.charmap.enabled
+
+ turns character-map support on/off
+
+ man.charmap.use.subset
+
+ specifies that a subset of the character map is used instead of the
+ full map
+
+ man.charmap.subset.profile
+
+ specifies profile of character-map subset
+
+ man.charmap.uri
+
+ specifies an alternate character map to use instead of the “standardâ€
+ character map provided in the distribution
+
+ â— Implemented out-of-line handling of display of URLs for links (currently,
+ only for ulink). This gives you three choices for handling of links:
+
+ 1. Number and list links. Each link is numbered inline, with a number in
+ square brackets preceding the link contents, and a numbered list of all
+ links is added to the end of the document.
+
+ 2. Only list links. Links are not numbered, but an (unnumbered) list of
+ links is added to the end of the document.
+
+ 3. Suppress links. Don't number links and don't add any list of links to
+ the end of the document.
+
+ You can also choose whether links should be underlined. The default is “the
+ works†-- list, number, and underline links. You can use the
+ man.links.list.enabled, man.links.are.numbered, and
+ man.links.are.underlined parameters to change the defaults. The default
+ heading for the link list is REFERENCES. You can be change that using the
+ man.links.list.heading parameter.
+
+ â— Changed default output encoding to UTF-8. This does not mean that man pages
+ are output in raw UTF-8, because the character map is applied before final
+ output, causing all UTF-8 characters covered in the map to be converted to
+ roff equivalents.
+
+ â— Added support for processing refsect3 and formalpara and nested refsection
+ elements, down to any arbitrary level of nesting.
+
+ â— Output of the NAME and SYNOPSIS and AUTHOR headings and the headings for
+ admonitions (note, caution, etc.) are no longer hard-coded for English.
+ Instead, headings are generated for those in the correct locale (just as
+ the FO and HTML stylesheets do).
+
+ â— Re-worked mechanism for assembling page headers/footers (the contents of
+ the .TH macro “title lineâ€).
+
+ Here are some details...
+
+ All man pages contain a .TH roff macro whose contents are used for
+ rendering the “title line†displayed in the header and footer of each page.
+ Here are a couple of examples of real-world man pages that have useful page
+ headers/footers:
+
+ gtk-options(7) GTK+ User's Manual gtk-options(7) <-- header
+ GTK+ 1.2 2003-10-20 gtk-options(7) <-- footer
+
+ svgalib(7) Svgalib User Manual svgalib(7) <-- header
+ Svgalib 1.4.1 16 December 1999 svgalib(7) <-- footer
+
+ And here are the terms with which the groff_man(7) man page refers to the
+ various parts of the header/footer:
+
+ title(section) extra3 title(section) <- header
+ extra2 extra1 title(section) <- footer
+
+ Or, using the names with which the man(7) man page refers to those same
+ fields:
+
+ title(section) manual title(section) <- page header
+ source date title(section) <- page footer
+
+ The easiest way to control the contents of those fields is to mark up your
+ refentry content like the following (note that this is a “minimalâ€
+ example).
+
+ <refentry>
+ <info>
+ <date>2003-10-20</date> 1
+ </info>
+ <refmeta>
+ <refentrytitle>gtk-options</refentrytitle> 2
+ <manvolnum>7</manvolnum> 3
+ <refmiscinfo class="source-name">GTK+</refmiscinfo> 4
+ <refmiscinfo class="version">1.2</refmiscinfo> 5
+ <refmiscinfo class="manual">GTK+ User's Manual</refmiscinfo> 6
+ </refmeta>
+ <refnamediv>
+ <refname>gtk-options</refname>
+ <refpurpose>Standard Command Line Options for GTK+ Programs</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Description</title>
+ <para>This manual page describes the command line options, which
+ are common to all GTK+ based applications.</para>
+ </refsect1>
+ </refentry>
+
+ 1 Sets the “date†part of the header/footer.
+
+ 2 Sets the “title†part.
+
+ 3 Sets the “section†part.
+
+ 4 Sets the “source name†part.
+
+ 5 Sets the “version†part.
+
+ 6 Sets the “manual†part.
+
+ Below are explanations of the steps the stylesheets take to attempt to
+ assemble and display “good†headers and footer. [In the descriptions, note
+ that *info is the refentry “info†child (whatever its name), and parentinfo
+ is the “info†child of its parent (again, whatever its name).]
+
+ extra1 field (date)
+
+ Content of the “extra1†field is what shows up in the center footer
+ position of each page. The man(7) man page describes it as “the date of
+ the last revisionâ€.
+
+ To provide this content, if the refentry.date.profile.enabled is
+ non-zero, the stylesheets check the value of refentry.date.profile.
+
+ Otherwise, by default, they check for a date or pubdate not only in the
+ *info contents, but also in the parentinfo contents.
+
+ If a date cannot be found, the stylesheets now automatically generate a
+ localized “long format†date, ensuring that this field always has
+ content in output.
+
+ However, if for some reason you want to suppress this field, you can do
+ so by setting a non-zero value for man.th.extra1.suppress.
+
+ extra2 field (source)
+
+ On Linux systems and on systems with a modern groff, the content of the
+ “extra2†field are what shows up in the left footer position of each
+ page.
+
+ The man(7) man page describes this as “the source of the commandâ€, and
+ provides the following examples:
+
+ â—‹ For binaries, use somwething like: GNU, NET-2, SLS Distribution,
+ MCC Distribution.
+
+ â—‹ For system calls, use the version of the kernel that you are
+ currently looking at: Linux 0.99.11.
+
+ â—‹ For library calls, use the source of the function: GNU, BSD 4.3,
+ Linux DLL 4.4.1.
+
+ In practice, there are many pages that simply have a version number in
+ the “source†field. So, it looks like what we have is a two-part field,
+ Name Version, where:
+
+ Name
+
+ product name (e.g., BSD) or org. name (e.g., GNU)
+
+ Version
+
+ version name
+
+ Each part is optional. If the Name is a product name, then the Version
+ is probably the version of the product. Or there may be no Name, in
+ which case, if there is a Version, it is probably the version of the
+ item itself, not the product it is part of. Or, if the Name is an
+ organization name, then there probably will be no Version.
+
+ To provide this content, if the refentry.source.name.profile.enabled
+ and refentry.version.profile.enabled parameter are non-zero, the
+ stylesheets check the value of refentry.source.name.profile
+ refentry.version.profile.
+
+ Otherwise, by default, they check the following places, in the
+ following order:
+
+ 1. *info/productnumber
+
+ 2. *info/productnumber
+
+ 3. refmeta/refmiscinfo[@class = 'version']
+
+ 4. parentinfo/productnumber
+
+ 5. *info/productname
+
+ 6. parentinfo/productname
+
+ 7. refmeta/refmiscinfo
+
+ 8. [nothing found, so leave it empty]
+
+ extra3 field
+
+ On Linux systems and on systems with a modern groff, the content of the
+ “extra3†field are what shows up in the center header position of each
+ page. Some man pages have “extra2†content, some don't. If a particular
+ man page has it, it is most often “context†data about some larger
+ system the documented item belongs to (for example, the name or
+ description of a group of related applications). The stylesheets now
+ check the following places, in the following order, to look for content
+ to add to the “extra3†field.
+
+ 1. parentinfo/title
+
+ 2. parent's title
+
+ 3. refmeta/refmiscinfo
+
+ 4. [nothing found, so leave it empty]
+
+ â— Reworked *info gathering. For each refentry found, the stylesheets now
+ cache its *info content, then check for any valid parent of it that might
+ have metainfo content and cache that, if found; they then then do all
+ further matches against those node-sets (rather than re-selecting the
+ original *info nodes each time they are needed).
+
+ â— New option for breaking strings after forward slashes. This enables long
+ URLs and pathnames to be broken across lines. Controlled through
+ man.break.after.slash parameter.
+
+ â— Output for servicemark and trademark are now (SM) and (TM). There is a
+ groff "\(tm" escape, but output from that is not acceptable.
+
+ â— New option for controlling the length of the title part of the .TH title
+ line. Controlled through the man.th.title.max.length parameter.
+
+ â— New option for specifying output encoding of each man page; controlled with
+ man.output.encoding (similar to the HTML chunker.output.encoding
+ parameter).
+
+ â— New option for suppressing filename messages when generating output;
+ controlled with man.output.quietly (similar to the HTML chunk.quietly
+ parameter).
+
+ â— The text of cross-references to first-level refentry (refsect1, top-level
+ refsection, refnamediv, and refsynopsisdiv) are now capitalized.
+
+ â— Cross-references to refnamediv now use the localized NAME title instead of
+ using the first refname child. This makes the output inconsistent with HTML
+ and FO output, but for man-page output, it seems to make better sense to
+ have the NAME. (It may actually make better sense to do it that way in HTML
+ and FO output as well...)
+
+ â— Added support for processing funcparams.
+
+ â— Removed the space that was being output between funcdef and paramdef;
+ example: was: float rand (void); now: float rand(void)
+
+ â— Turned off bold formatting for the type element when it occurs within a
+ funcdef or paramdef
+
+ ◠Corrected rendering of simplelist. Any <simplelist type="inline" instance
+ is now rendered as a comma-separated list (also with an optional localized
+ “and†or “or†before the last item -- see description elsewhere in these
+ release notes). Any simplelist instance whose type is not inline is
+ rendered as a one-column vertical list (ignoring the values of the type and
+ columns attributes if present)
+
+ â— Comment added at top of roff source for each page now includes DocBook XSL
+ stylesheets version number (as in the HTML stylesheets)
+
+ ◠Made change to prevent “sticky†fonts changes. Now, when the manpages
+ stylesheets encounter node sets that need to be boldfaced or italicized,
+ they put the \fBfoo\fR and \fIbar\fR groff bold/italic instructions
+ separately around each node in the set.
+
+ â— synop.xsl: Boldface everything in funcsynopsis output except parameters
+ (which are in ital). The man(7) man page says:
+
+ For functions, the arguments are always specified using italics, even
+ in the SYNOPSIS section, where the rest of the function is specified in
+ bold.
+
+ A look through the contents of the man/man2 directory shows that most (all)
+ existing pages do follow this “everything in funcsynopsis bold†rule. That
+ means the type content and any punctuation (parens, semicolons, varargs)
+ also must be bolded.
+
+ â— Removed code for adding backslashes before periods/dots in roff source,
+ because backslashes in front of periods/dots in roff source are needed only
+ in the very rare case where a period is the very first character in a line,
+ without any space in front of it. A better way to deal with that rare case
+ is for you to add a zero-width space in front of the offending dot(s) in
+ your source
+
+ â— Removed special handling of the quote element. That was hard-coded to cause
+ anything marked up with the quote element to be output preceded by two
+ backticks and followed by two apostrophes -- that is, that old-school
+ kludge for generating “curly†quotes in Emacs and in X-Windows fonts. While
+ Emacs still seems to support that, I don't think X-Windows has for a long
+ time now. And, anyway, it looks (and has always looked) like crap when
+ viewed on a normal tty/console. In addition, it breaks localiztion of quote
+ . By default, quote content is output with localized quotation marks,
+ which, depending on the locale, may or may not be left and right double
+ quotation marks.
+
+ â— Changed mappings for left and right single quotation marks. Those had
+ previously been incorrectly mapped to the backtick (&#96;) and apostrophe
+ (&39;) characters (for kludgy reasons -- see above). They are now correctly
+ mapped to the \(oq and \(cq roff escapes. If you want the old (broken)
+ behavior, you need to manually change the mappings for those in the value
+ of the man.string.subst.map parameter.
+
+ â— Removed xref.xsl file. Now, of the various cross-reference elements, only
+ the ulink element is handled differently; the rest are handled exactly as
+ the HTML stylesheets handle them, except that no hypertext links are
+ generated. (Because there is no equivalent hypertext mechanism is man
+ pages.)
+
+ ◠New option for making “subheading dividers†in generated roff source. The
+ dividers are not visible in the rendered man page; they are just there to
+ make the source readable. Controlled using man.subheading.divider.
+
+ â— Fixed many places where too much space was being added between lines.
+
+Release 1.68.1
+
+The release adds localization support for Farsi (thanks to Sina Heshmati) and
+improved support for the XLink-based DocBook NG db:link element. Other than
+that, it is a minor bug-fix update to the 1.68.0 release. The main thing it
+fixes is a build error that caused the XSLT Java extensions to be jarred up
+with the wrong package structure. Thanks to Jens Stavnstrup for quickly
+reporting the problem, and to Mauritz Jeanson for investigating and finding the
+cause.
+
+Release 1.68.0
+
+This release includes some features changes, particularly for FO/PDF output,
+and a number of bug fixes.
+
+FO
+
+ â— Moved footnote properties to attribute-sets.
+
+ â— Added support for side floats, margin notes, and custom floats.
+
+ â— Added new parameters body.start.indent and body.end.indent to the
+ set.flow.properties template.
+
+ â— Added support for xml:id
+
+ â— Added support for refdescriptor.
+
+ â— Added support for multiple refnamedivs.
+
+ â— Added index.entry.properties attribute-set to support customization of
+ index entries.
+
+ â— Added set.flow.properties template call to each fo:flow to support
+ customizations entry point.
+
+ â— Add support for @floatstyle in figure
+
+ â— Moved hardcoded properties for index division titles to the
+ index.div.title.properties attribute-set.
+
+ â— Added support for table-layout="auto" for XEP.
+
+ â— Added index.div.title.properties attribute-set.
+
+ â— $verbose parameter is now passed to most elements.
+
+ â— Added refentry to toc in part, as it is permitted by the DocBook schema/
+ DTD.
+
+ â— Added backmatter elements and article to toc in part, since they are
+ permitted by the DocBook schema/DTD.
+
+ â— Added mode="toc" for simplesect, since it is now permitted in the toc if
+ simplesect.in.toc is set.
+
+ â— Moved hard-coded properties to nongraphical.admonintion.properties and
+ graphical.admonition.properties attribute sets.
+
+ â— Added support for sidebar-width and float-type processing instructions in
+ sidebar.
+
+ â— For tables with HTML markup elements, added support for dbfo bgcolor PI,
+ the attribute-sets named table.properties, informaltable.properties,
+ table.table.properties, and table.cell.padding. Also added support for the
+ templates named table.cell.properties and table.cell.block.properties so
+ that tabstyles can be implemented. Also added support for tables containing
+ only tr instead of tbody with tr.
+
+ â— Added new paramater hyphenate.verbatim.characters which can specify
+ characters after which a line break can occur in verbatim environments.
+ This parameter can be used to extend the initial set of characters which
+ contain only space and non-breakable space.
+
+ â— Added itemizedlist.label.markup to enable selection of different bullet
+ symbol. Also added several potential bullet characters, commented out by
+ default.
+
+ â— Enabled all id's in XEP output for external olinking.
+
+HTML
+
+ â— Added support for refdescriptor.
+
+ â— Added support for multiple refnamedivs.
+
+ â— Added support for xml:id
+
+ â— refsynopsisdiv as a section for counting section levels
+
+Images
+
+ â— Added new SVG admonition graphics and navigation images.
+
+Release 1.67.2
+
+This release fixes a table bug introduced in the 1.67.1 release.
+
+Release 1.67.1
+
+This release includes a number of bug fixes.
+
+The following lists provide details about API and feature changes.
+
+FO
+
+ â— Tables: Inherited cell properties are now passed to the
+ table.cell.properties template so they can be overridden by a
+ customization.
+
+ â— Tables: Added support for bgcolor PI on table row element.
+
+ â— TOCs: Added new parameter simplesect.in.toc; default value of 0 causes
+ simplesect to be omitted from TOCs; to cause simplesect to be included in
+ TOCs, you must set the value of simplesect.in.toc to 1.Comment from Norm:
+
+ Simplesect elements aren't supposed to appear in the ToC at all... The
+ use case for simplesect is when, for example, every chapter in a book
+ ends with "Exercises" or "For More Information" sections and you don't
+ want those to appear in the ToC.
+
+ â— Sections: Reverted change that caused a variable reference to be used in a
+ template match and rewrote code to preserve intended semantics.
+
+ â— Lists: Added workaround to prevent "* 0.60 + 1em" garbage in list output
+ from PassiveTeX
+
+ â— Moved the literal attributes from component.title to the
+ component.title.properties attribute-set so they can be customized.
+
+ â— Lists: Added glossdef's first para to special handling in
+ fo:list-item-body.
+
+HTML
+
+ â— TOCs: Added new parameter simplesect.in.toc; for details, see the list of
+ FO changes for this release.
+
+ â— Indexing: Added new parameter index.prefer.titleabbrev; when set to 1,
+ index references will use titleabbrev instead of title when available.
+
+HTML Help
+
+ â— Added support for generating windows-1252-encoded output using Saxon; for
+ more details, see the list of XSL Java extensions changes for this release.
+
+man pages
+
+ â— Replaced named/numeric character-entity references for non-breaking space
+ with groff equivalent (backslash-tilde).
+
+XSL Java extensions
+
+ â— Saxon extensions: Added the Windows1252 class. It extends Saxon 6.5.x with
+ the windows-1252 character set, which is particularly useful when
+ generating HTML Help for Western European Languages (code from Pontus
+ Haglund and contributed to the DocBook community by Sectra AB, Sweden).
+
+ To use:
+
+ 1. Make sure that the Saxon 6.5.x jar file and the jar file for the
+ DocBook XSL Java extensions are in your CLASSPATH
+
+ 2. Create a DocBook XSL customization layer -- a file named
+ mystylesheet.xsl or whatever -- that, at a minimum, contains the
+ following:
+
+ <xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl"/>
+ <xsl:output method="html" encoding="WINDOWS-1252" indent="no"/>
+ <xsl:param name="htmlhelp.encoding" select="'WINDOWS-1252'"></xsl:param>
+ <xsl:param name="chunker.output.encoding" select="'WINDOWS-1252'"></xsl:param>
+ <xsl:param name="saxon.character.representation" select="'native'"></xsl:param>
+ </xsl:stylesheet>
+
+ Invoke Saxon with the encoding.windows-1252 Java system property set to
+ com.nwalsh.saxon.Windows1252; for example
+
+ java \
+ -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
+ com.icl.saxon.StyleSheet \
+ mydoc.xml mystylesheet.xsl
+
+ Or, for a more complete "real world" case showing other options you'll
+ typically want to use:
+
+ java \
+ -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
+ -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
+ -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
+ -Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl \
+ com.icl.saxon.StyleSheet \
+ -x org.apache.xml.resolver.tools.ResolvingXMLReader \
+ -y org.apache.xml.resolver.tools.ResolvingXMLReader \
+ -r org.apache.xml.resolver.tools.CatalogResolver \
+ mydoc.xml mystylesheet.xsl
+
+ In both cases, the "mystylesheet.xsl" file should be a DocBook
+ customization layer containing the parameters show in step 2.
+
+ â— Saxon extensions: Removed Saxon 8 extensions from release package
+
+Release 1.67.0
+
+ â— A number of important bug fixes.
+
+ â— Added Saxon8 extensions
+
+ â— Enabled dbfo table-width on entrytbl in FO output
+
+ â— Added support for role=strong on emphasis in FO output
+
+ â— Added new FO parameter hyphenate.verbatim that can be used to turn on
+ "intelligent" wrapping of verbatim environments.
+
+ â— Replaced all <tt></tt> output with <code></code>
+
+ â— Changed admon.graphic.width template to a mode so that different
+ admonitions can have different graphical widths.
+
+ â— Deprecated the HTML shade.verbatim parameter (use CSS instead)
+
+ â— Wrapped ToC refentrytitle/refname and refpurpose in span with class values.
+ This makes it possible to style them using a CSS stylesheet.
+
+ â— Use strong/em instead of b/i in HTML output
+
+ â— Added support for converting Emphasis to groff italic and Emphasis role=
+ 'bold' to bold. Controlled by emphasis.propagates.style param, but not
+ documented yet using litprog system. Will do that next (planning to add
+ some other parameter-controllable options for hyphenation and handling of
+ line spacing).
+
+ â— callout.graphics.number.limit.xml param: Changed the default from 10 to 15.
+
+ â— verbatim.properties: Added hyphenate=false
+
+ â— Saxon and Xalan Text.java extensions: Added support for URIResolver() on
+ insertfile href's
+
+ â— Added generated RELEASE-NOTES.txt file.
+
+ â— Added INSTALL file (executable file for generating catalog.xml)
+
+ â— Removed obsolete tools directory from package
+
+Release 1.66.1
+
+ â— A number of important bug fixes.
+
+ â— Now xml:base attributes that are generated by an XInclude processor are
+ resolved for image files.
+
+ â— Rewrote olink templates to support several new features.
+
+ â—‹ Extended full olink support to FO output.
+
+ â—‹ Add support for xrefstyle attribute in olinks.
+
+ â—‹ New parameters to support new olink features: insert.olink.page.number,
+ insert.olink.pdf.frag, olink.debug, olink.lang.fallback.sequence,
+ olink.properties, prefer.internal.olink. See the reference page for
+ each parameter for more information.
+
+ â— Added index.on.type parameter for new type attribute introduced in DocBook
+ 4.3 for indexterms and index. This allows you to create multiple indices
+ containing different categories of entries. For users of 4.2 and earlier,
+ you can use the new parameter index.on.role instead.
+
+ â— Added new section.autolabel.max.depth parameter to turn off section
+ numbering below a certain depth. This permits you to number major section
+ levels and leave minor section levels unnumbered.
+
+ â— Added footnote.sep.leader.properties attribute set to format the line
+ separating footnotes in printed output.
+
+ â— Added parameter img.src.path as a prefix to HTML img src attributes. The
+ prefix is added to whatever path is already generated by the stylesheet for
+ each image file.
+
+ â— Added new attribute-sets informalequation.properties,
+ informalexample.properties, informalfigure.properties, and
+ informaltable.properties, so each such element type can be formatted
+ individually if needed.
+
+ â— Add component.label.includes.part.label parameter to add any part number to
+ chapter, appendix and other component labels when the label.from.part
+ parameter is nonzero. This permits you to distinguish multiple chapters
+ with the same chapter number in cross references and the TOC.
+
+ â— Added chunk.separate.lots parameter for HTML output. This parameter lets
+ you generate separate chunk files for each LOT (list of tables, list of
+ figures, etc.).
+
+ â— Added several table features:
+
+ â—‹ Added table.table.properties attribute set to add properties to the
+ fo:table element.
+
+ â—‹ Added placeholder templates named table.cell.properties and
+ table.cell.block.properties to enable adding properties to any
+ fo:table-cell or the cell's fo:block, respectively. These templates are
+ a start for implementing table styles.
+
+ â— Added new attribute set component.title.properties for easy modifications
+ of component's title formatting in FO output.
+
+ â— Added Saxon support for an encoding attribute on the textdata element.
+ Added new parameter textdata.default.encoding which specifies encoding when
+ encoding attribute on textdata is missing.
+
+ â— Template label.this.section now controls whole section label, not only
+ sub-label which corresponds to particular label. Former behaviour was IMHO
+ bug as it was not usable.
+
+ â— Formatting in titleabbrev for TOC and headers is preserved when there are
+ no hotlink elements in the title. Formerly the title showed only the text
+ of the title, no font changes or other markup.
+
+ â— Added intial.page.number template to set the initial-page-number property
+ for page sequences in print output. Customizing this template lets you
+ change when page numbering restarts. This is similar to the
+ format.page.number template that lets you change how the page number
+ formatting changes in the output.
+
+ â— Added force.page.count template to set the force-page-count property for
+ page sequences in print output. This is similar to the format.page.number
+ template.
+
+ â— Sort language for localized index sorting in autoidx-ng.xsl is now taken
+ from document lang, not from system environment.
+
+ â— Numbering and formatting of normal and ulink footnotes (if turned on) has
+ been unified. Now ulink footnotes are mixed in with any other footnotes.
+
+ â— Added support for renderas attribute in section and sect1 et al. This
+ permits you to render a given section title as if it were a different
+ level.
+
+ â— Added support for label attribute in footnote to manually supply the
+ footnote mark.
+
+ â— Added support for DocBook 4.3 corpcredit element.
+
+ â— Added support for a dbfo keep-together PI for formal objects (table,
+ figure, example, equation, programlisting). That permits a formal object to
+ be kept together if it is not already, or to be broken if it is very long
+ and the default keep-together is not appropriate.
+
+ â— For graphics files, made file extension matching case insensitive, and
+ updated the list of graphics extensions.
+
+ â— Allow calloutlist to have block content before the first callout
+
+ â— Added dbfo-need processing instruction to provide soft page breaks.
+
+ â— Added implementation of existing but unused default.image.width parameter
+ for graphics.
+
+ â— Support DocBook NG tag inline element.
+
+ â— It appears that XEP now supports Unicode characters in bookmarks. There is
+ no further need to strip accents from characters.
+
+ â— Make segmentedlist HTML markup more semantic and available to CSS styles.
+
+ â— Added user.preroot placeholder template to permit xsl-stylesheet and other
+ PIs and comments to be output before the HTML root element.
+
+ â— Non-chunked legalnotice now gets an <a name="id"> element in HTML output so
+ it can be referenced with xref or link.
+
+ â— In chunked HTML output, changed link rel="home" to rel="start", and link
+ rel="previous" to rel="prev", per W3C HTML 4.01 spec.
+
+ â— Added several patches to htmlhelp from W. Borgert
+
+ â— Added Bosnian locale file as common/bs.xml.
+
+Release 1.65.0
+
+ â— A number of important bug fixes.
+
+ â— Added a workaround to allow these stylesheets to process DocBook NG
+ documents. (It’s a hack that pre-processes the document to strip off the
+ namespace and then uses exsl:node-set to process the result.)
+
+ â— Added alternative indexing mechanism which has better internationalization
+ support. New indexing method allows grouping of accented letters like e, é,
+ ë into the same group under letter "e". It can also treat special letters
+ (e.g. "ch") as one character and place them in the correct position (e.g.
+ between "h" and "i" in Czech language).
+
+ In order to use this mechanism you must create customization layer which
+ imports some base stylesheet (like fo/docbook.xsl, html/chunk.xsl) and then
+ includes appropriate stylesheet with new indexing code (fo/autoidx-ng.xsl
+ or html/autoidx-ng.xsl). For example:
+
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
+ <xsl:include href="http://docbook.sourceforge.net/release/xsl/current/fo/autoidx-ng.xsl"/>
+
+ </xsl:stylesheet>
+
+ New method is known to work with Saxon and it should also work with
+ xsltproc 1.1.1 and later. Currently supported languages are English, Czech,
+ German, French, Spanish and Danish.
+
+Release 1.64.1
+
+General bug fixes and improvements. Sorry about the failure to produce an
+updated release notes file for 1.62.0—1.63.2
+
+ â— In the course of fixing bug #849787, wrapping Unicode callouts with an
+ appropriate font change in the Xalan extensions, I discovered that the
+ Xalan APIs have changed a bit. So xalan2.jar will work with older Xalan 2
+ implementations, xalan25.jar works with Xalan 2.5.
+
+Release 1.61.0
+
+Lots of bug fixes and improvements.
+
+ â— Initial support for timestamp PI. From now you can use <?dbtimestamp format
+ ="Y-m-d H:M:S"?> to get current datetime in your document. Added
+ localization support for datetime PI
+
+ â— Added level 6 to test for section depth in section.level template so that
+ section.title.level6.properties will be used for sections that are 6 deep
+ or deeper. This should also cause a h6 to be created in html output.
+
+ â— Don't use SVG graphics if use.svg=0
+
+ â— Now uses number-and-title-template for sections only if section.autolabel
+ is not zero.
+
+ â— Added missing 'english-language-name' attribute to the l10n element, and
+ the missing 'style' attribute to the template element so the current
+ gentext documents will validate.
+
+ â— Corrected several references to parameter qanda.defaultlabel that were
+ missing the "$".
+
+ â— Now accepts admon.textlabel parameter to turn off Note, Warning, etc.
+ label.
+
+ â— FeatReq #684561: support more XEP metadata
+
+ â— Added hyphenation support. Added support for coref. Added beginpage
+ support. (does nothing; see TDG).
+
+ â— Added support for hyphenation-character, hyphenation-push-character-count,
+ and hyphenation-remain-character-count
+
+ â— Added root.properties, ebnf.assignment, and ebnf.statement.terminator
+
+ â— Support bgcolor PI in table cells; make sure rowsep and colsep don't have
+ any effect on the last row or column
+
+ â— Handle othercredit on titlepage a little better
+
+ â— Applied fix from Jeff Beal that fixed the bug that put secondary page
+ numbers on primary entries. Same with tertiary page numbers on secondary
+ entries.
+
+ â— Added definition of missing variable collection.
+
+ â— Make footnote formatting 'normal' even when it occurs in a context that has
+ special formatting
+
+ â— Added warning when glossary.collection is not blank, but it cannot open the
+ specified file.
+
+ â— Pick up the frame attribute on table and informaltable.
+
+ â— indexdiv/title in non-autogenerated indexes are now picked up.
+
+ â— Removed (unused) component.title.properties
+
+ â— Move IDs from page-sequences down to titlepage blocks
+
+ â— Use proportional-column-width(1) on more tables.
+
+ Use proportional-column-width() for header/footer tables; suppress
+ relative-align when when using FOP
+
+ â— Check for glossterm.auto.link when linking firstterms; don't output gl.
+ prefix on glossterm links
+
+ â— Generate Part ToCs
+
+ â— Support glossary, bibliography, and index in component ToCs.
+
+ â— Refactored chunking code so that customization of chunk algorithm and chunk
+ elements is more practical
+
+ â— Support textobject/phrase on inlinemediaobject.
+
+ â— Support 'start' PI on ordered lists
+
+ â— Fixed test of $toc PI to turn on qandaset TOC.
+
+ â— Added process.chunk.footnotes to sect2 through 5 to fix bug of missing
+ footnotes when chunk level greater than 1.
+
+ â— Added paramater toc.max.depth which controls maximal depth of ToC as
+ requested by PHP-DOC group.
+
+ â— Exempted titleabbrev from preamble processing in lists, and fixed
+ variablelist preamble code to use the same syntax as the other lists.
+
+ â— Added support for elements between variablelist and first varlistentry
+ since DocBook 4.2 supports that now.
+
+Release 1.60.1
+
+Lots of bug fixes.
+
+ â— The format of the titlepage.templates.xml files and the stylesheet that
+ transforms them have been significantly changed. All of the attributes used
+ to control the templates are now namespace qualified. So what used to be:
+
+ <t:titlepage element="article" wrapper="fo:block">
+
+ is now:
+
+ <t:titlepage t:element="article" t:wrapper="fo:block">
+
+ Attributes from other namespaces (including those that are unqualified) are
+ now copied directly through. In practice, this means that the names that
+ used to be “fo:†qualified:
+
+ <title named-template="component.title"
+ param:node="ancestor-or-self::article[1]"
+ fo:text-align="center"
+ fo:keep-with-next="always"
+ fo:font-size="&hsize5;"
+ fo:font-weight="bold"
+ fo:font-family="{$title.font.family}"/>
+
+ are now unqualified:
+
+ <title t:named-template="component.title"
+ param:node="ancestor-or-self::article[1]"
+ text-align="center"
+ keep-with-next="always"
+ font-size="&hsize5;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/>
+
+ The t:titlepage and t:titlepage-content elements both generate wrappers
+ now. And unqualified attributes on those elements are passed through. This
+ means that you can now make the title font apply to ane entire titlepage
+ and make the entire “recto†titlepage centered by specifying the font and
+ alignment on the those elements:
+
+ <t:titlepage t:element="article" t:wrapper="fo:block"
+ font-family="{$title.font.family}">
+
+ <t:titlepage-content t:side="recto"
+ text-align="center">
+
+ â— Support use of titleabbrev in running headers and footers.
+
+ â— Added (experimental) xref.with.number.and.title parameter to enable number/
+ title cross references even when the default would be just the number.
+
+ â— Generate part ToCs if they're requested.
+
+ â— Use proportional-column-width() in header/footer tables.
+
+ â— Handle alignment correctly when screenshot wraps a graphic in a figure.
+
+ â— Format chapter and appendix cross references consistently.
+
+ â— Attempt to support tables with multiple tgroups in FO.
+
+ â— Output fo:table-columns in simplelist tables.
+
+ â— Use titlepage.templates.xml for indexdiv and glossdiv formatting.
+
+ â— Improve support for new bibliography elements.
+
+ â— Added footnote.number.format, table.footnote.number.format,
+ footnote.number.symbols, and table.footnote.number.symbols for better
+ control of footnote markers.
+
+ â— Added glossentry.show.acronyms.
+
+ â— Suppress the draft-mode page masters when draft-mode is “noâ€.
+
+ â— Make blank pages verso not recto. D'Oh!
+
+ â— Improved formatting of ulink footnotes.
+
+ â— Fixed bugs in graphic width/height calculations.
+
+ â— Added class attributes to inline elements.
+
+ ◠Don't add “.html†to the filenames identified with the “dbhtml†PI.
+
+ â— Don't force a ToC when sections contain refentrys.
+
+ â— Make section title sizes a function of the body.master.size.
+
+Release 1.59.2
+
+The 1.59.2 fixes an FO bug in the page masters that causes FOP to fail.
+
+ â— Removed the region-name from the region-body of blank pages. There's no
+ reason to give the body of blank pages a unique name and doing so causes a
+ mismatch that FOP detects.
+
+ â— Output IDs for the first paragraphs in listitems.
+
+ â— Fixed some small bugs in the handling of page numbers in double-sided mode.
+
+ â— Attempt to prevent duplicated IDs from being produced when endterm on xref
+ points to something with nested structure.
+
+ â— Fix aligment problems in equations.
+
+ â— Output the type attribute on unordered lists (UL) in HTML only if the
+ css.decoration parameter is true.
+
+ â— Calculate the font size in formal.title.properties so that it's 1.2 times
+ the base font size, not a fixed "12pt".
+
+Release 1.59.1
+
+The 1.59.1 fixes a few bugs.
+
+ â— Added Bulgarian localization.
+
+ â— Indexing improvements; localize book indexes to books but allow setindex to
+ index an entire set.
+
+ â— The default value for rowsep and colsep is now "1" as per CALS.
+
+ â— Added support for titleabbrev (use them for cross references).
+
+ â— Improvements to mediaobject for selecting print vs. online images.
+
+ â— Added seperate property sets for figures, examples, equations, tabless, and
+ procedures.
+
+ â— Make lineannotations italic.
+
+ â— Support xrefstyle attribute.
+
+ â— Make endterm on xref higher priority than xreflabel target.
+
+ â— Glossary formatting improvements.
+
+Release 1.58.0
+
+The 1.58.0 adds some initial support for extensions in xsltproc, adds a few
+features, and fixes bugs.
+
+ â— This release contains the first attempt at extension support for xsltproc.
+ The only extension available to date is the one that adjusts table column
+ widths. Run extensions/xsltproc/python/xslt.py.
+
+ â— Fixed bugs in calculation of adjusted column widths to correct for rounding
+ errors.
+
+ â— Support nested refsection elements correctly.
+
+ â— Reworked gentext.template to take context into consideration. The name of
+ elements in localization files is now an xpath-like context list, not just
+ a simple name.
+
+ â— Made some improvements to bibliography formatting.
+
+ â— Improved graphical formatting of admonitions.
+
+ â— Added support for entrytbl.
+
+ â— Support spanning index terms.
+
+ â— Support bibliosource.
+
+Release 1.57.0
+
+ â— The 1.57.0 release wasn't documented here. Oops.
+
+Release 1.56.0
+
+The 1.56.0 release fixes bugs.
+
+ â— Reworked chunking. This will break all existing customizations layers that
+ change the chunking algorithm. If you're customizing chunking, look at the
+ new “content†parameter that's passed to process-chunk-element and friends.
+
+ â— Support continued and inherited numeration in orderedlist formatting for
+ FOs.
+
+ â— Added Thai localization.
+
+ â— Tweaked stylesheet documentation stylesheets to link to TDG and the
+ parameter references.
+
+ â— Allow title on tables of contents ("Table of Contents") to be optional.
+ Added new keyword to generate.toc. Support tables of contents on sections.
+
+ â— Made separate parameters for table borders and table cell borders:
+ table.frame.border.color, table.frame.border.style,
+ table.frame.border.thickness, table.cell.border.color,
+ table.cell.border.style, and table.cell.border.thickness.
+
+ ◠Suppress formatting of “endofrange†indexterms. This is only half-right.
+ They should generate a range, but I haven't figured out how to do that yet.
+
+ â— Support revdescription. (Bug #582192)
+
+ â— Added default.float.class and fixed figure floats. (Bug #497603)
+
+ â— Fixed formatting of sbr in FOs.
+
+ ◠Added context to the “missing template†error message.
+
+ â— Process arg correctly in a group. (Bug #605150)
+
+ â— Removed 'keep-with-next' from formal.title.properties attribute set now
+ that the stylesheets support the option of putting such titles below the
+ object. Now the $placement value determines if 'keep-with-next' or
+ 'keep-with-previous' is used in the title block.
+
+ ◠Wrap “url()†around external-destinations when appropriate.
+
+ â— Fixed typo in compact list spacing. (Bug #615464)
+
+ â— Removed spurious hash in anchor name. (Bug #617717)
+
+ â— Address is now displayed verbatim on title pages. (Bug #618600)
+
+ â— The bridgehead.in.toc parameter is now properly supported.
+
+ â— Improved effectiveness of HTML cleanup by increasing the number of places
+ where it is used. Improve use of HTML cleanup in XHTML stylesheets.
+
+ â— Support table of contents for appendix in article. (Bug #596599)
+
+ â— Don't duplicate footnotes in bibliographys and glossarys. (Bug #583282)
+
+ â— Added default.image.width. (Bug #516859)
+
+ â— Totally reworked funcsynopsis code; it now supports a 'tabular'
+ presentation style for 'wide' prototypes; see
+ funcsynopsis.tabular.threshold. (HTML only right now, I think, FO support,
+ uh, real soon now.)
+
+ â— Reworked support for difference marking; toned down the colors a bit and
+ added a “system.head.content†template so that the diff CSS wasn't
+ overriding “user.head.contentâ€. (Bug #610660)
+
+ ◠Added call to the “*.head.content†elements when writing out long
+ description chunks.
+
+ â— Make sure legalnotice link is correct even when chunking to a different
+ base.dir.
+
+ â— Use CSS to set viewport characteristics if css.decoration is non-zero, use
+ div instead of p for making graphic a block element; make figure titles the
+ default alt text for images in a figure.
+
+ â— Added space-after to list.block.spacing.
+
+ ◠Reworked section.level template to give “correct†answer instead of being
+ off by one.
+
+ â— When processing tables, use the tabstyle attribute as the division class.
+
+ â— Fixed bug in html2xhtml.xsl that was causing the XHTML chunker to output
+ HTML instead of XHTML.
+
+Older releases
+
+To view the release notes for older releases, see http://cvs.sourceforge.net/
+viewcvs.py/docbook/xsl/RELEASE-NOTES.xml. Be aware that there were no release
+notes for releases prior to the 1.50.0 release.
+
+About dot-zero releases
+
+DocBook Project “dot zero†releases should be considered experimental and are
+always followed by stable “dot one plus†releases, usually within two or three
+weeks. Please help to ensure the stability of “dot one plus†releases by
+carefully testing each “dot zero†release and reporting back about any problems
+you find.
+
+It is not recommended that you use a “dot zero†release in a production system.
+Instead, you should wait for the “dot one†or greater versions.
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml
new file mode 100644
index 0000000..9c50d9a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml
@@ -0,0 +1,10327 @@
+<article xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xml:lang="en" xml:id="releasenotes"
+ version="5.0">
+
+<info>
+ <title>Release Notes for the DocBook XSL Stylesheets</title>
+ <pubdate><?dbtimestamp format="Y-m-d"?></pubdate>
+ <releaseinfo role="cvs">$Revision: 8934 $ $Date: 2010-11-01 13:03:14 -0700 (Mon, 01 Nov 2010) $</releaseinfo>
+ <!-- * <author><orgname>DocBook Project Development Team</orgname></author> -->
+<abstract>
+<para condition="dot-zero;dot-one-plus">This release-notes
+ document is available in the following formats:
+ <link
+ xlink:href="http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.html"
+ >HTML</link>,
+ <link
+ xlink:href="http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.pdf"
+ >PDF</link>,
+ <link
+ xlink:href="http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.txt"
+ >plain text</link>; it provides a per-release list
+of enhancements and changes to the stylesheets’ public APIs
+(user-configurable parameters) and excludes descriptions of most
+bug fixes. For a complete list of all changes (including all bug
+fixes) that have been made since the previous release, see the
+separate <link xlink:href="NEWS">NEWS</link> (plain text) or <link
+ xlink:href="NEWS.html">NEWS.html</link> files. Also available:
+An online <link
+ xlink:href="http://docbook.svn.sourceforge.net/viewvc/docbook/trunk/xsl/?view=log"
+ >hyperlinked change history</link> (warning: big file) of all
+changes made over the entire history of the codebase.</para>
+<para condition="dot-zero">As with all DocBook Project <link
+ linkend="dot0">dot-zero</link> releases, this is an
+ experimental release. It will be followed shortly by a stable
+ release.</para>
+<para condition="dot-one-plus">As with all DocBook Project “dot
+ one plus†releases, this release aspires to be stable (in
+ contrast to <link linkend="dot0">dot-zero</link> releases, which
+ are experimental).</para>
+<para condition="snapshot">This is a pre-release “snapshot†of the
+DocBook XSL Stylesheets. The change information in the first
+section of this file
+(for “<xi:include href="NEWS.xml" xpointer="xpointer(/article/sect1/title/text())"/>â€) is
+auto-generated from change descriptions stored in the project
+source-code repository.</para>
+<para condition="snapshot">That means the first section contains
+descriptions both of bug fixes and of feature changes. The
+remaining sections are manually edited changelog subsets that
+exclude bug-fix descriptions – that is, trimmed down to just those
+those descriptions that document enhancements and changes to the
+public APIs (user-configurable parameters).</para>
+</abstract>
+</info>
+
+<sect1 condition="snapshot" xml:id="current">
+ <xi:include href="NEWS.xml" xpointer="xpointer(/article/sect1/*)"/>
+</sect1>
+<sect1 xml:id="V1.76.1">
+<title>Release Notes: 1.76.1</title>
+<para>The following is a list of changes that have been made
+ since the 1.76.0 release.</para>
+
+<sect2 xml:id="rnV1.76.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl</literal></para><screen><phrase role="commit-message">Apply patch to support named destination in fop1.xsl, per Sourceforge
+bug report #3029845.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.76.1-->
+
+<sect2 xml:id="rnV1.76.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the <filename>html</filename> code since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: highlight.xsl</literal></para><screen><phrase role="commit-message">Implementing handling for &lt;b&gt; and &lt;i&gt;: transform to &lt;strong&gt; and &lt;em&gt; for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.76.1-->
+
+<sect2 xml:id="rnV1.76.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.76.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: draft.mode.xml</literal></para><screen><phrase role="commit-message">Change default for <parameter>draft.mode</parameter> to 'no'.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.76.1-->
+
+
+</sect1>
+ <sect1 xml:id="V1.76.0">
+ <title>Release Notes: 1.76.0</title>
+<para>This release includes important bug fixes and adds the following
+significant feature changes:</para>
+<variablelist>
+<varlistentry>
+<term>Webhelp</term>
+<listitem><para>A new browser-based, cross-platform help format with full-text search and other features typically found in help systems. See <filename>webhelp/docs/content/ch01.html</filename> for more information and a demo. </para></listitem>
+
+</varlistentry>
+
+<varlistentry>
+<term>Gentext</term>
+<listitem><para>Many updates and additions to translation/locales thanks to Red Hat, the Fedora Project, and other contributors.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>Common</term>
+<listitem><para>Faster localization support, as language files are loaded on demand.</para></listitem>
+
+</varlistentry>
+ <varlistentry>
+ <term>FO</term>
+ <listitem><para>Support for SVG content in <tag>imagedata</tag> added.</para></listitem>
+</varlistentry>
+ <varlistentry>
+ <term>HTML</term>
+ <listitem><para>Output improved when using '<parameter>make.clean.html</parameter>' and a stock CSS file is now provided.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>EPUB</term>
+<listitem><para>A number of improvements to NCX, cover and image selection, and XHTML 1.1 element choices</para></listitem>
+</varlistentry>
+
+</variablelist>
+
+ <para>The following is a list of changes that have been made since the 1.75.2 release.</para>
+ <sect2 xml:id="rnV1.76.0_Gentext">
+ <title>Gentext</title>
+ <para>The following changes have been made to the <filename>gentext</filename> code since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>rlandmann: locale/fa.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Update to Persian translation from the Fedora Project</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>rlandmann: locale/nds.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Locale for Low German</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: locale/ka.xml; Makefile</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added support for Georgian based on patch #2917147.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>rlandmann: locale/nl.xml; locale/ja.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Updated translations from Red Hat and the Fedora Project</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>rlandmann: locale/bs.xml; locale/ru.xml; locale/hr.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Updated locales from Red Hat and the Fedora Project</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>rlandmann: locale/pt.xml; locale/cs.xml; locale/es.xml; locale/bg.xml; locale/nl.xml; loca⋯</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Updated translations from Red Hat and the Fedora Project</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>rlandmann: locale/as.xml; locale/bn_IN.xml; locale/ast.xml; locale/ml.xml; locale/te.xml; ⋯</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">New translations from Red Hat and the Fedora Project</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>rlandmann: locale/pt.xml; locale/ca.xml; locale/da.xml; locale/sr.xml; locale/ru.xml; loca⋯</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Updated translations from Red Hat and the Fedora Project</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of Gentext changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_Common">
+ <title>Common</title>
+ <para>The following changes have been made to the <filename>common</filename> code since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: common.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fixed bug in output-orderedlist-starting-number template (@startingnumber did not work for FO).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: gentext.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added fix to catch ID also of descendants of <tag>listitem</tag>. Closes bug #2955077.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: l10n.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Stripped down, faster version of gentext.template is used when there is no localization customization.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: stripns.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added fix that preserves <tag>link</tag>/@role (makes links in the <tag>reference</tag> documentation
+with @role="tcg" work).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: l10n.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fixed bugs related to manpages and L10n.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: entities.ent; autoidx-kosek.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: l10n.xsl; l10n.dtd; l10n.xml; autoidx-kosek.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Refactored localization support. Language files are loaded on demand. Speedup is about 30%.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: l10n.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added xsl:keys for improved performance of localization texts look up. Performance gain around 15%.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: titles.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fixed bug #2912677 (error with <tag>xref</tag> in <tag>title</tag>).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: olink.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug in xrefstyle "<tag>title</tag>" handling introduced with
+the 'insert.targetdb.data' template.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: gentext.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug in <tag>xref</tag> to <tag>equation</tag> without <tag>title</tag> to use context="xref-number" instead
+of "xref-number-and-title".</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: labels.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Number all equations in one sequence, with or without <tag>title</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: entities.ent</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug #2896909 where duplicate @sortas on indexterms caused
+some indexterms to drop out of <tag>index</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: stripns.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Expand the "Stripping namespace ..." message to advise users to
+use the namespaced stylesheets.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: stripns.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">need a local version of $exsl.node.set.available variable because
+this module imported many places.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: olink.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added /node() to the select expression that is used to compute the <tag>title</tag> text
+so that no &lt;ttl&gt; elements end up in the output. Closes bug #2830119.</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of Common changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_FO">
+ <title>FO</title>
+ <para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: table.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 2979166 able - Attribute @rowheader not working</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: inline.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Improved <tag>glossterm</tag> auto-linking by using keys. The old code was inefficient when processing documents
+with many inline glossterms.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: titlepage.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 2805530 <tag>author</tag>/<tag>orgname</tag> not appearing on <tag>title</tag> page.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: graphics.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added support for SVG content in <tag>imagedata</tag> (inspired by patch #2909154).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: table.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Removed superfluous test used when computing column-width. Closes bug #3000898.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: inline.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added missing &lt;xsl:call-template name="<tag>anchor</tag>"/&gt;. Closes bug #2998567.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: lists.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added table-layout="fixed" on <tag>segmentedlist</tag> <tag>table</tag> (required by XSL spec when proportional-column-width() is used).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: autoidx-kosek.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: index.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: xref.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug in <tag>olink</tag> template when an <tag>olink</tag> has an id.
+Add warning message with id value when trying to <tag>link</tag>
+to an element that has no generated text.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: refentry.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fixed bug #2930968 (<tag>indexterm</tag> in <tag>refmeta</tag> not handled correctly).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: block.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">fix bug 2949567 <tag>title</tag> in <tag>revhistory</tag> breaks FO transform.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: glossary.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Output id attributes on <tag>glossdiv</tag> blocks so they can be added to
+xrefs or <tag>TOC</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: xref.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Enabled hyphenation of URLs when ulink content is the same as <tag>link</tag> target</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: table.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Apply patch to turn off <tag>row</tag> recursion if no @morerows attributes present.
+This will enable very large tables without <tag>row</tag> spanning to
+process without running into recursion limits.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: formal.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Format <tag>equation</tag> without <tag>title</tag> using <tag>table</tag> layout with <tag>equation</tag> number
+next to the <tag>equation</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: param.xweb; param.ent</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Add <parameter>equation.number.properties</parameter>.</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of FO changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_HTML">
+ <title>HTML</title>
+ <para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: block.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Modified <tag>acknowledgements</tag> template to avoid invalid output (&lt;p&gt; in &lt;p&gt;).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: titlepage.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added default <tag>sidebar</tag> attribute-sets.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: table.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 2979166 able - Attribute @rowheader not working</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: footnote.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 3033191 footnotes in html tables.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: inline.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Improved <tag>glossterm</tag> auto-linking by using keys. The old code was inefficient when processing documents
+with many inline glossterms.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: docbook.css.xml; verbatim.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 2844927 Validity error for <tag>callout</tag> bugs.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: formal.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Convert formal.object.heading to respect <parameter>make.clean.html</parameter> param.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: titlepage.templates.xml; block.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 2840768 <tag>sidebar</tag> without <tag>title</tag> inserts empty b <tag>tag</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: docbook.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Moved the template that outputs &lt;base&gt; so that the base URI also applies to relative CSS paths that come later.
+See patch #2896121.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: autoidx-kosek.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: chunk-code.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">fix bug 2948363 generated <tag>filename</tag> for <tag>refentry</tag> not unique, when
+used in a set.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: component.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix missing "<tag>Chapter</tag> n" <tag>label</tag> when use <tag>chapter</tag>/<tag>info</tag>/<tag>title</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: table.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message"><tag>Row</tag> recursion turned off if no @morerows attributes in the <tag>table</tag>.
+This will prevent failure on long <tag>table</tag> (with no @morerows) due
+to excessive depth of recursion.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: autotoc.xsl; docbook.css.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Support <parameter>make.clean.html</parameter> in autotoc.xsl.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: docbook.css.xml; block.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Add support for <parameter>make.clean.html</parameter> setting in block elements.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: docbook.css.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Stock CSS styles for DocBook HTML output when '<parameter>make.clean.html</parameter>' is non-zero.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: html.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Add templates for generating CSS files and links to them.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: param.xweb</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bugs in new entity references.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: chunk-common.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">List of Equations now includes on equations with titles.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: table.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">If a <tag>colspec</tag> has a colname attribute, add it to the HTML <tag>col</tag>
+element as a class attribute so it can be styled.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: formal.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 2825842 where <tag>table</tag> footnotes not appearing in HTML-coded <tag>table</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: chunktoc.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug #2834826 where <tag>appendix</tag> inside part was not chunked as it should be.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: chunktoc.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added missing namespace declarations. Closes bug #2890069.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: footnote.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Updated the template for <tag>footnote</tag> paras to use the 'paragraph' template. Closes bug #2803739.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: inline.xsl; lists.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Remove &lt;b&gt; and &lt;i&gt; elements "discouraged in favor of style sheets" from
+XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+Fixes bug #2873153: No &lt;b&gt; and &lt;i&gt; tags in XHTML/EPUB
+
+Added regression to EPUB specs:</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: inline.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fixed bug #2844916 (don't output @target if <parameter>ulink.target</parameter> is empty).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: autoidx.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix a bug when using <parameter>index.on.type</parameter>: an '<tag>index</tag> symbols' <tag>section</tag> was created
+even if that typed <tag>index</tag> didn't include any symbols (they were in the other types).</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of HTML changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_Manpages">
+ <title>Manpages</title>
+ <para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: other.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Modified the write.stubs template so that the <tag>section</tag> directory name is not output twice. Should fix bug #2831602.
+Also ensured that $lang is added to the .so path (when <parameter>man.output.lang.in.name.enabled</parameter>=1).</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: docbook.xsl; other.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fixed bug #2412738 (apostrophe escaping) by applying the submitted patch.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Norman Walsh: block.xsl; endnotes.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug where <tag>simpara</tag> in <tag>footnote</tag> didn't work. Patch by Jonathan Nieder, jrnieder@gmail.com</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>dleidert: lists.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix two indentation issues: In the first case there is no corresponding .RS
+macro (Debian #519438, sf.net 2793873). In the second case an .RS instead of
+the probably intended .sp leads to an indentation bug (Debian #527309,
+sf.net #2642139).</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of Manpages changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_Epub">
+ <title>Epub</title>
+ <para>The following changes have been made to the
+ <filename>epub</filename> code
+ since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: bin/spec/examples/AMasqueOfDays.epub; docbook.xsl; bin/spec/epub_spec.rb</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Resolve some actual regressions in <tag>date</tag> output spotted by more recent versions of epubcheck</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: docbook.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Updated <tag>mediaobject</tag> selection code that better uses roles (when available); based on contributons by Glenn McDonald</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Ensure that NCX documents are always outputted with a default namespace
+to prevent problems with the kindlegen machinery</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/partintro.xml; docbook.x⋯</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Adding support for partintros with sect2s, 3s, etc</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: docbook.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Adding param to workaround horrific ADE bug with the inability to process &lt;br&gt;</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: docbook.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Add support for <tag>authorgroup</tag>/<tag>author</tag> in OPF metadata (via Michael Wiedmann)</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Remove &lt;b&gt; and &lt;i&gt; elements "discouraged in favor of style sheets" from
+XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+Fixes bug #2873153: No &lt;b&gt; and &lt;i&gt; tags in XHTML/EPUB
+
+Added regression to EPUB specs:</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: bin/lib/docbook.rb; bin/spec/files/DejaVuSerif-Italic.otf; docbook.xsl; bi⋯</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">This resolves bug #2873142, Please add support for multiple embedded fonts
+
+
+If you navigate to a checkout of DocBook-XSL and go to:
+xsl/epub/bin/spec/files
+You can now run the following <tag>command</tag>:
+
+../../dbtoepub -f DejaVuSerif.otf -f DejaVuSerif-Italic.otf -c test.css
+-s test_cust.xsl orm.book.001.xml
+
+In dbtoepub, the following option can be used more than once:
+-f, --font [OTF FILE] Embed OTF FILE in .epub.
+
+The underlying stylesheet now accepts a comma-separated list of font file
+names rather than just one as the RENAMED epub.embedded.fonts ('s' added).
+
+The runnable EPUB spec now includes:
+- should be valid .epub after including more than one embedded font</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: docbook.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Improve the selection of <tag>cover</tag> images when working in DocBook 4.x land (work in progress)</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Improve the quality of the OPF spine regression by ensuring that the spine
+elements for deeply nested refentries are in order and adjacent to their
+opening wrapper XHTML chunk.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/orm.book.00⋯</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Add more careful handling of refentries to ensure that they always appear in the opf:spine.
+This was only a problem when refentries were pushed deep into the hierarchy (like inside
+a <tag>sect2</tag>), but presented navigational problems for many reading systems (despite the
+correct NCX references). This may *not* be the best solution, but attacking a better
+chunking strategy for refentries was too big a nut to crack at this time.</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of Epub changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_Eclipse">
+ <title>Eclipse</title>
+ <para>The following changes have been made to the
+ <filename>eclipse</filename> code
+ since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: eclipse3.xsl</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added a stylesheet module that generates plug-ins conforming to the standard (OSGi-based) Eclipse 3.x
+architecture. The main difference to the older format is that metadata is stored in a separate
+<parameter>manifest</parameter> file. The module imports and extends the existing eclipse.xsl module. Based on code
+contributed in patch #2624668.</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of Eclipse changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_Params">
+ <title>Params</title>
+ <para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: draft.watermark.image.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Fix bug 2922488 <parameter>draft.watermark.image</parameter> pointing to web resource.
+Now the value is images/draft.png, and may require customization
+for local resolution.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Mauritz Jeanson: equation.number.properties.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Corrected <tag>refpurpose</tag>.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Norman Walsh: paper.type.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added USlegal and USlegallandscape paper types.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Jirka Kosek: highlight.xslthl.config.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Added note about specifying location as URL</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: docbook.css.source.xml; generate.css.header.xml; custom.css.source.xml; ma⋯</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Params to support generated CSS files.</phrase>
+ </screen>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Robert Stayton: equation.number.properties.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">New attribute set for numbers appearing next to equations.</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of Params changes for 1.76.0-->
+ <sect2 xml:id="rnV1.76.0_XSL-Xalan">
+ <title>XSL-Xalan</title>
+ <para>The following changes have been made to the
+ <filename>xsl-xalan</filename> code
+ since the 1.75.2 release.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>dleidert: nbproject/genfiles.properties; nbproject/build-impl.xml</literal>
+ </para>
+ <screen>
+ <phrase role="commit-message">Rebuild netbeans build files after adding missing Netbeans configuration to allow easier packaging for Debian.</phrase>
+ </screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <!--end of XSL-Xalan changes for 1.76.0-->
+ </sect1>
+<sect1 xml:id="rn_V1.75.2">
+<title>Release Notes: 1.75.2</title>
+<para>The following is a list of changes that have been made
+ since the 1.75.1 release.</para>
+
+<sect2 xml:id="rn_V1.75.2_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the
+ <filename>gentext</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>dleidert: locale/ja.xml</literal></para><screen><phrase role="commit-message">Improved Japanese translation for Note(s). Closes bug #2823965.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>dleidert: locale/pl.xml</literal></para><screen><phrase role="commit-message">Polish alphabet contains O with acute accent, not with grave accent. Closes bug #2823964.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/ja.xml</literal></para><screen><phrase role="commit-message">Fix translation of "<tag>index</tag>", per bug report 2796064.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/is.xml</literal></para><screen><phrase role="commit-message">New Icelandic locale file.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Norman Walsh: stripns.xsl</literal></para><screen><phrase role="commit-message">Support more downconvert cases</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Make sure <tag>title</tag> inside <tag>info</tag> is used if no other <tag>title</tag>.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: pi.xsl</literal></para><screen><phrase role="commit-message">Turn off dbfo-need for <parameter>fop1.extensions</parameter> also, per bug #2816141.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl</literal></para><screen><phrase role="commit-message">Output "<tag>Copyright</tag>" heading in XHTML too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl</literal></para><screen><phrase role="commit-message">Added stylesheet.result.type test for <tag>copyright</tag>. Closes bug #2813289.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Norman Walsh: htmltbl.xsl</literal></para><screen><phrase role="commit-message">Remove ambiguity wrt @span, @rowspan, and @colspan</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: endnotes.xsl</literal></para><screen><phrase role="commit-message">Added normalize-space() for ulink content. Closes bug #2793877.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: docbook.xsl</literal></para><screen><phrase role="commit-message">Added stylesheet.result.type test for <tag>copyright</tag>. Closes bug #2813289.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_Epub">
+<title>Epub</title>
+<para>The following changes have been made to the
+ <filename>epub</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb</literal></para><screen><phrase role="commit-message">Corrected bugs caused by path and file assumptions were not met</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/lib/docbook.rb; docbook.xsl</literal></para><screen><phrase role="commit-message">Cleaning up hardcoded values into parameters and fixing Ruby library to pass them properly; all thanks to patch from Liza Daly</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Epub changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_Profiling">
+<title>Profiling</title>
+<para>The following changes have been made to the
+ <filename>profiling</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: profile.xsl</literal></para><screen><phrase role="commit-message">Fix bug 2815493 missing <parameter>exsl.node.set.available</parameter> parameter.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Profiling changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_XSL-Saxon">
+<title>XSL-Saxon</title>
+<para>The following changes have been made to the
+ <filename>xsl-saxon</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: src/com/nwalsh/saxon/ColumnUpdateEmitter.java; src/com/nwalsh/saxon/Colum⋯</literal></para><screen><phrase role="commit-message">Added fixes so that colgroups in the XHTML namespace are processed properly.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Saxon changes for 1.75.2-->
+
+<sect2 xml:id="rn_V1.75.2_XSL-Xalan">
+<title>XSL-Xalan</title>
+<para>The following changes have been made to the
+ <filename>xsl-xalan</filename> code
+ since the 1.75.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: nbproject/project.xml</literal></para><screen><phrase role="commit-message">Added missing NetBeans configuration.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Xalan changes for 1.75.2-->
+
+</sect1>
+
+
+<sect1 xml:id="rn_V1.75.1">
+<title>Release Notes: 1.75.1</title>
+<para>This release includes bug fixes.</para>
+
+<para>The following is a list of changes that have been made since the 1.75.0 release.</para>
+
+
+<sect2 xml:id="rn_V1.75.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the <filename>fo</filename> code since the 1.75.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: block.xsl</literal></para><screen><phrase role="commit-message">Switching to em dash for character before <tag>attribution</tag> in <tag>epigraph</tag>; resolves Bug #2793878</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Fixed bug 2789947, id attribute missing on <tag>simplelist</tag> fo output.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.75.1-->
+
+<sect2 xml:id="rn_V1.75.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.75.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: block.xsl</literal></para><screen><phrase role="commit-message">Switching to em dash for character before <tag>attribution</tag> in <tag>epigraph</tag>; resolves Bug #2793878</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Fixed bug 2789678: apply-templates line accidentally deleted.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.75.1-->
+
+<sect2 xml:id="rn_V1.75.1_Epub">
+<title>Epub</title>
+<para>The following changes have been made to the
+ <filename>epub</filename> code
+ since the 1.75.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</literal></para><screen><phrase role="commit-message">Added regression and fix to correct "bug" with namespace-prefixed container elements in META-INF/container.xml ; resolves Issue #2790017</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;⋯</literal></para><screen><phrase role="commit-message">Another attempt at flexible named entity and XInclude processing</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/lib/docbook.rb</literal></para><screen><phrase role="commit-message">Tweaking solution to Bug #2750442 following regression reported by Michael Wiedmann.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Epub changes for 1.75.1-->
+
+<sect2 xml:id="rn_V1.75.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.75.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: highlight.source.xml</literal></para><screen><phrase role="commit-message">Updated documentation to reflect changes made in r8419.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.75.1-->
+
+</sect1>
+
+
+<sect1 xml:id="V1.75.0">
+<title>Release Notes: 1.75.0</title>
+<para>This release includes important bug fixes and adds the following
+significant feature changes:
+<variablelist>
+<varlistentry>
+<term>Gentext</term>
+<listitem><para>Modifications to translations have been made. </para></listitem>
+
+</varlistentry>
+<varlistentry>
+<term>Common</term>
+<listitem>
+<para>Added support for some format properties on tables using
+HTML <tag>table</tag> markup. </para>
+<para>Added two new <parameter>qanda.defaultlabel</parameter> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</para>
+<para>Added code to handle <tag>acknowledgements</tag> in <tag>book</tag> and part. The element is processed
+similarly to <tag>dedication</tag>. All <tag>acknowledgements</tag> will appear as front matter, after
+any dedications.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>FO</term>
+<listitem>
+<para>The inclusion of highlighting code has been simplified.</para>
+<para>Add support for pgwide on informal objects.</para>
+<para>Added a new parameter, <parameter>bookmarks.collapse</parameter>, that controls the initial <tag>state</tag> of the bookmark tree. Closes FR #1792326.</para>
+<para>Add support for more dbfo processing instructions.</para>
+<para>Add new <parameter>variablelist.term.properties</parameter> to format terms, per request # 1968513.</para>
+<para>Add support for @width on <tag>screen</tag> and <tag>programlisting</tag>, fixes bug #2012736.</para>
+<para>Add support for writing-mode="rl-tb" (right-to-left) in FO outputs. </para>
+<para>Add <parameter>writing.mode</parameter> param for FO output.</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>HTML</term>
+<listitem>
+<para>Convert all calls to class.attribute to calls to common.html.attributes to support dir, lang, and <tag>title</tag> attributes in html output for all elements. Fulfills feature request #1993833.</para>
+<para>Inclusion of highlighting code was simplified. Only one import is now necessary.</para>
+<para>Add new param <parameter>index.links.to.section</parameter>.</para>
+<para>Add support for the new <parameter>index.links.to.section</parameter> param which permits precise links to indexterms in HTML output rather than to the <tag>section</tag> <tag>title</tag>.</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>ePub</term>
+<listitem>
+<para>Slightly more nuanced handling of <tag>imageobject</tag> alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog.</para>
+<para>Added a colon after an <tag>abstract</tag>/<tag>title</tag> when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann)</para>
+<para>Added DocBook <tag>subjectset</tag> -&gt; OPF dc:<tag>subject</tag> mapping and tests</para>
+<para>Added DocBook <tag>date</tag> -&gt; OPF dc:date mapping and tests</para>
+<para>Added DocBook <tag>abstract</tag> -&gt; OPF dc:description mapping and tests</para>
+<para>Added --output option to dbtoepub based on user request</para>
+</listitem>
+
+</varlistentry>
+<varlistentry>
+<term>HTMLHelp</term>
+<listitem>
+<para>Add support for generating <tag>olink</tag> target <tag>database</tag> for htmlhelp files.</para></listitem>
+
+</varlistentry>
+
+<varlistentry>
+<term>Params</term>
+<listitem>
+<para>Add default setting for @rules attribute on HTML markup tables.</para>
+<para>Added a new parameter, <parameter>bookmarks.collapse</parameter>, that controls the initial <tag>state</tag> of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326.</para>
+<para>Add new <parameter>variablelist.term.properties</parameter> to format terms, per request # 1968513.</para>
+<para>Add two new <parameter>qanda.defaultlabel</parameter> values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045.</para>
+<para>Add param to control whether an <tag>index</tag> <tag>entry</tag> links to a <tag>section</tag> <tag>title</tag> or to the precise location of the <tag>indexterm</tag>.</para>
+<para>New attribute list for <tag>glossentry</tag> in <tag>glossary</tag>.</para>
+<para>New parameter to support @width on <tag>programlisting</tag> and <tag>screen</tag>.</para>
+<para>Add attribute-sets for formatting <tag>glossary</tag> terms and defs.</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Highlighting</term>
+<listitem>
+<para>Inclusion of highlighting code was simplified. Only one import is now necessary.</para>
+</listitem>
+
+</varlistentry>
+</variablelist>
+
+
+</para>
+<para>The following is a list of changes that have been made
+ since the 1.74.3 release.</para>
+
+<sect2 xml:id="rn_V1.75.0_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the
+ <filename>gentext</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: locale/sv.xml; locale/ja.xml; locale/pl.xml</literal></para><screen><phrase role="commit-message">Check in translations of <tag>Legalnotice</tag> submitted on mailing list.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/es.xml</literal></para><screen><phrase role="commit-message">Fix spelling errors in <tag>Acknowledgements</tag> entries.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/es.xml</literal></para><screen><phrase role="commit-message">Check in translations for 4 elements submitted through docbook-apps
+message of 14 April 2009.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: locale/zh.xml; locale/ca.xml; locale/ru.xml; locale/ga.xml; locale/gl.xml; l⋯</literal></para><screen><phrase role="commit-message">Internationalized punctuation in <tag>glosssee</tag> and <tag>glossseealso</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: Makefile</literal></para><screen><phrase role="commit-message">Check in fixes for DSSSL gentext targets from submitted patch #1689633.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/uk.xml</literal></para><screen><phrase role="commit-message">Check in major update submitted with bug report #2008524.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/zh_tw.xml</literal></para><screen><phrase role="commit-message">Check in fix to Note string submitted in bug #2441051.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/ru.xml</literal></para><screen><phrase role="commit-message">Checkin typo fix submitted in bug #2453406.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: gentext.xsl</literal></para><screen><phrase role="commit-message">Fix extra generated space when xrefstyle includes 'nopage'.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Add support for some format properties on tables using
+HTML <tag>table</tag> markup. These include:
+ - frame attribute on <tag>table</tag> (or uses $default.table.frame parameter).
+ - rules attribute on <tag>table</tag> (or uses $default.table.rules parameter).
+ - align attribute on <tag>td</tag> and <tag>th</tag>
+ - valign attribute on <tag>td</tag> and <tag>th</tag>
+ - colspan on <tag>td</tag> and <tag>th</tag>
+ - rowspan on <tag>td</tag> and <tag>th</tag>
+ - bgcolor on <tag>td</tag> and <tag>th</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: olink.xsl</literal></para><screen><phrase role="commit-message">Add placeholder template to massage <tag>olink</tag> hot text to make
+customization easier, per Feature Request 1828608.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: targets.xsl</literal></para><screen><phrase role="commit-message">Add support for collecting <tag>olink</tag> targets from a <tag>glossary</tag>
+generated from a <parameter>glossary.collection</parameter>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Handle <tag>firstterm</tag> like <tag>glossterm</tag> in mode="title.markup".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Add match on <tag>info</tag>/<tag>title</tag> in title.markup templates where missing.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">Changed "ancestor::<tag>title</tag>" to "(ancestor::<tag>title</tag> and (@id or @xml:id))".
+This enables proper formatting of inline elements in titles in TOCs,
+as long as these inlines don't have id or xml:id attributes.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: labels.xsl</literal></para><screen><phrase role="commit-message">Add two new <parameter>qanda.defaultlabel</parameter> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: stripns.xsl; pi.xsl</literal></para><screen><phrase role="commit-message">Convert function-available(exsl:node-set) to use the new param
+so Xalan bug is isolated.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">Added fixes for bugs #2112656 and #1759205:
+1. Reverted mistaken commits r7485 and r7523.
+2. Updated the template with match="<tag>link</tag>" and mode="no.anchor.mode" so that
+@endterm is used if it exists and if the <tag>link</tag> has no content.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">Added code to handle <tag>acknowledgements</tag> in <tag>book</tag> and part. The element is processed
+similarly to <tag>dedication</tag>. All <tag>acknowledgements</tag> will appear as front matter, after
+any dedications.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: olink.xsl</literal></para><screen><phrase role="commit-message">Fix bug #2018717 <parameter>use.local.olink.style</parameter> uses wrong gentext context.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: olink.xsl</literal></para><screen><phrase role="commit-message">Fix bug #1787167 incorrect hot text for some olinks.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: common.xsl</literal></para><screen><phrase role="commit-message">Fix bug #1669654 Broken output if <tag>copyright</tag> &lt;<tag>year</tag>&gt; contains a range.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: labels.xsl</literal></para><screen><phrase role="commit-message">Fix bug in labelling <tag>figure</tag> inside <tag>appendix</tag> inside <tag>article</tag> inside <tag>book</tag>.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: highlight.xsl</literal></para><screen><phrase role="commit-message">Inclusion of highlighting code was simplified. Only one import is now necessary.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: fop1.xsl</literal></para><screen><phrase role="commit-message">Add the new fop extensions namespace declaration, in case FOP
+extension functions are used.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: formal.xsl</literal></para><screen><phrase role="commit-message">Add support for pgwide on informal objects.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Fixed spurious closing <tag>quote</tag> on line 134.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: docbook.xsl; autoidx-kosek.xsl; autoidx.xsl</literal></para><screen><phrase role="commit-message">Convert function-available for node-set() to use
+new $exsl.node.set.available param in test.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xref.xsl</literal></para><screen><phrase role="commit-message">Suppress extra space after <tag>xref</tag> when xrefstyle='select: <tag>label</tag> nopage' (#2740472)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Fixed doc bug for row-height.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: glossary.xsl</literal></para><screen><phrase role="commit-message">Internationalized punctuation in <tag>glosssee</tag> and <tag>glossseealso</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; htmltbl.xsl; table.xsl</literal></para><screen><phrase role="commit-message">Add support for some format properties on tables using
+HTML <tag>table</tag> markup. These include:
+ - frame attribute on <tag>table</tag> (or uses $default.table.frame parameter).
+ - rules attribute on <tag>table</tag> (or uses $default.table.rules parameter).
+ - align attribute on <tag>td</tag> and <tag>th</tag>
+ - valign attribute on <tag>td</tag> and <tag>th</tag>
+ - colspan on <tag>td</tag> and <tag>th</tag>
+ - rowspan on <tag>td</tag> and <tag>th</tag>
+ - bgcolor on <tag>td</tag> and <tag>th</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Add support bgcolor in <tag>td</tag> and <tag>th</tag>
+elements in HTML <tag>table</tag> markup.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: htmltbl.xsl</literal></para><screen><phrase role="commit-message">Add support for colspan and rowspan and bgcolor in <tag>td</tag> and <tag>th</tag>
+elements in HTML <tag>table</tag> markup.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb</literal></para><screen><phrase role="commit-message">Fix working of page-master left and right margins.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: param.xweb; param.ent; fop1.xsl</literal></para><screen><phrase role="commit-message">Added a new parameter, <parameter>bookmarks.collapse</parameter>, that controls the initial <tag>state</tag> of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl; pi.xsl</literal></para><screen><phrase role="commit-message">Add support for dbfo row-height processing instruction, like that in dbhtml.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Add support for dbfo keep-together processing instruction for
+entire list instances.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl; block.xsl</literal></para><screen><phrase role="commit-message">Add support fo dbfo keep-together processing instruction to
+more blocks like list items and paras.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl; param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add new <parameter>variablelist.term.properties</parameter> to format terms, per request # 1968513.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">In simple.xlink, rearrange order of processing.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Handle <tag>firstterm</tag> like <tag>glossterm</tag> in mode="xref-to".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossary.xsl; xref.xsl; pi.xsl; footnote.xsl</literal></para><screen><phrase role="commit-message">Implement simple.xlink for <tag>glosssee</tag> and <tag>glossseealso</tag> so they can use
+other types of linking besides otherterm.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: qandaset.xsl</literal></para><screen><phrase role="commit-message">Add two new <parameter>qanda.defaultlabel</parameter> values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titlepage.xsl</literal></para><screen><phrase role="commit-message">For the <tag>book</tag> <tag>title</tag> templates, I changed <tag>info</tag>/<tag>title</tag> to <tag>book</tag>/<tag>info</tag>/<tag>title</tag>
+so other element's titles will not be affected.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl; verbatim.xsl</literal></para><screen><phrase role="commit-message">Use param <parameter>exsl.node.set.available</parameter> to test for <tag>function</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; footnote.xsl</literal></para><screen><phrase role="commit-message">Start using new param <parameter>exsl.node.set.available</parameter> to work around Xalan bug.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titlepage.templates.xml</literal></para><screen><phrase role="commit-message">Add comment on use of t:predicate for <tag>editor</tag> to prevent
+extra processing of multiple editors. Fixes bug 2687842.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl; autoidx.xsl</literal></para><screen><phrase role="commit-message">An <tag>indexterm</tag> <tag>primary</tag>, <tag>secondary</tag>, or <tag>tertiary</tag> element with an id or xml:id
+now outputs that ID, so that <tag>index</tag> entries can be cross referenced to.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: synop.xsl</literal></para><screen><phrase role="commit-message">Added modeless template for ooclass|oointerface|ooexception.
+Closes bug #1623468.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Add template with match on <tag>indexterm</tag> in mode="xref-to" to fix bug 2102592.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Now <tag>xref</tag> to <tag>qandaentry</tag> will use the <tag>label</tag> element in a <tag>question</tag> for
+the <tag>link</tag> text if it has one.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Add id if specified from @id to output for <tag>quote</tag> and <tag>phrase</tag> so
+they can be <tag>xref</tag>'ed to.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>xref</tag> to <tag>phrase</tag>, <tag>simpara</tag>, <tag>anchor</tag>, and <tag>quote</tag>.
+This assumes the <tag>author</tag> specifies something using xrefstyle since
+the elements don't have ordinary <tag>link</tag> text.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: toc.xsl</literal></para><screen><phrase role="commit-message">Fix bug in new <tag>toc</tag> templates.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates⋯</literal></para><screen><phrase role="commit-message">Added code to handle <tag>acknowledgements</tag> in <tag>book</tag> and part. The element is processed
+similarly to <tag>dedication</tag>. All <tag>acknowledgements</tag> will appear as front matter, after
+any dedications.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: toc.xsl</literal></para><screen><phrase role="commit-message">Rewrite <tag>toc</tag> templates to support an empty <tag>toc</tag> or populated <tag>toc</tag>
+in all permitted contexts. Same for lot elements.
+This fixes bug #1595969 for FO outputs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: index.xsl</literal></para><screen><phrase role="commit-message">Fix indents for <tag>seealsoie</tag> so they are consistent.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: param.xweb</literal></para><screen><phrase role="commit-message">Removed duplicate (<parameter>monospace.font.family</parameter>).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add <parameter>glossentry.list.item.properties</parameter>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add <parameter>monospace.verbatim.font.width</parameter> param to support @width on <tag>programlisting</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: verbatim.xsl</literal></para><screen><phrase role="commit-message">Put <tag>programlisting</tag> in fo:block-container with writing-mode="lr-tb"
+when text direction is right to left because all program languages
+are left-to-right.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: verbatim.xsl</literal></para><screen><phrase role="commit-message">Add support for @width on <tag>screen</tag> and <tag>programlisting</tag>, fixes bug #2012736.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Fix bug #1973585 <tag>xref</tag> to <tag>para</tag> with xrefstyle not handled correctly.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: block.xsl</literal></para><screen><phrase role="commit-message">Added support for <tag>acknowledgements</tag> in <tag>article</tag>.
+Support in <tag>book</tag>/part remains to be added.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Fix bug #1787167 incorrect hot text for some olinks.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: fo.xsl</literal></para><screen><phrase role="commit-message">Add writing-mode="tb-rl" as well since some XSL-FO processors support it.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autotoc.xsl; lists.xsl; glossary.xsl; fo.xsl; table.xsl; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Add support for writing-mode="rl-tb" (right-to-left) in FO outputs.
+Changed instances of margin-left to margin-{$direction.align.start}
+and margin-right to margin-{$direction.align.end}. Those direction.align
+params are computed from the writing mode value in each locale's
+gentext key named 'writing-mode', introduced in 1.74.3 to add
+right-to-left support to HTML outputs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add attribute-sets for formatting <tag>glossary</tag> terms and defs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add <parameter>writing.mode</parameter> param for FO output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autotoc.xsl</literal></para><screen><phrase role="commit-message">Fix bug 1546008: in <tag>qandaentry</tag> in a <tag>TOC</tag>, use its blockinfo/<tag>titleabbrev</tag> or blockinfo/<tag>title</tag>
+instead of <tag>question</tag>, if available. For DocBook 5, use the <tag>info</tag> versions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: verbatim.xsl</literal></para><screen><phrase role="commit-message">Add better pointer to README for XSLTHL</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: verbatim.xsl</literal></para><screen><phrase role="commit-message">More tweaking the way that XSLTHL does or does not get called</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: verbatim.xsl</literal></para><screen><phrase role="commit-message">Alternate attempt at sanely including/excluding XSLTHT code</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Removed redundant lang and <tag>title</tag> attributes on list element inside
+div element for lists.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl; titlepage.xsl; division.xsl; toc.xsl; sections.xsl; table.xsl;⋯</literal></para><screen><phrase role="commit-message">Convert all calls to class.attribute to calls to common.html.attributes
+to support dir, lang, and <tag>title</tag> attributes in html output for all elements.
+Fulfills feature request #1993833.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Fix bug #2750253 wrong links in list of figures in chunk.html
+when target html is in a subdirectory and dbhtml <tag>filename</tag> used.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: highlight.xsl</literal></para><screen><phrase role="commit-message">Inclusion of highlighting code was simplified. Only one import is now necessary.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunk-common.xsl; chunktoc.xsl; docbook.xsl; chunk-changebars.xsl; autoidx⋯</literal></para><screen><phrase role="commit-message">Convert function-available for node-set() to use
+new $exsl.node.set.available param in test.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Fixed doc bug for row-height.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: glossary.xsl</literal></para><screen><phrase role="commit-message">Internationalized punctuation in <tag>glosssee</tag> and <tag>glossseealso</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl; html.xsl; block.xsl</literal></para><screen><phrase role="commit-message">More elements get common.html.attributes.
+Added locale.html.attributes template which does the lang,
+dir, and <tag>title</tag> attributes, but not the class attribute
+(used on <tag>para</tag>, for example).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Replace more <tag>literal</tag> class atts with mode="class.attribute" to support
+easier customization.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossary.xsl</literal></para><screen><phrase role="commit-message">Support olinking in <tag>glosssee</tag> and <tag>glossseealso</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">In simple.xlink, rearrange order of processing.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Handle <tag>firstterm</tag> like <tag>glossterm</tag> in mode="xref-to".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl; html.xsl; block.xsl</literal></para><screen><phrase role="commit-message">Added template named common.html.attributes to output
+class, <tag>title</tag>, lang, and dir for most elements.
+Started adding it to some list and block elements.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: qandaset.xsl</literal></para><screen><phrase role="commit-message">Add two new <parameter>qanda.defaultlabel</parameter> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; chunk-code.xsl; param.ent; xref.xsl; chunkfast.xsl; verbatim.x⋯</literal></para><screen><phrase role="commit-message">Use new param <parameter>exsl.node.set.available</parameter> to test, handles Xalan bug.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Use named anchors for <tag>primary</tag>, <tag>secondary</tag>, and <tag>tertiary</tag> ids so
+duplicate entries with different ids can still have an id output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add new param <parameter>index.links.to.section</parameter>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl; autoidx.xsl</literal></para><screen><phrase role="commit-message">Pass through an id on <tag>primary</tag>, <tag>secondary</tag>, or <tag>tertiary</tag> to
+the <tag>index</tag> <tag>entry</tag>, so that one could <tag>link</tag> to an <tag>index</tag> <tag>entry</tag>.
+You can't <tag>link</tag> to the id on an <tag>indexterm</tag> because that is
+used to place the main <tag>anchor</tag> in the text flow.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Add support for the new <parameter>index.links.to.section</parameter> param which permits
+precise links to indexterms in HTML output rather than to
+the <tag>section</tag> <tag>title</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: synop.xsl</literal></para><screen><phrase role="commit-message">Added modeless template for ooclass|oointerface|ooexception.
+Closes bug #1623468.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: qandaset.xsl</literal></para><screen><phrase role="commit-message">Make sure a <tag>qandaset</tag> has an <tag>anchor</tag>, even when it has no <tag>title</tag>,
+because it may be referenced in a <tag>TOC</tag> or <tag>xref</tag>.
+Before, the <tag>anchor</tag> was output by the <tag>title</tag>, but there was no
+<tag>anchor</tag> if there was no <tag>title</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Add a template for <tag>indexterm</tag> with mode="xref-to" to fix bug 2102592.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Now <tag>xref</tag> to <tag>qandaentry</tag> will use the <tag>label</tag> element in a <tag>question</tag> for
+the <tag>link</tag> text if it has one.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: qandaset.xsl; html.xsl</literal></para><screen><phrase role="commit-message">Create separate templates for computing <tag>label</tag> of <tag>question</tag> and <tag>answer</tag>
+in a <tag>qandaentry</tag>, so such can be used for the <tag>alt</tag> text of an <tag>xref</tag>
+to a <tag>qandaentry</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Now support <tag>xref</tag> to <tag>phrase</tag>, <tag>simpara</tag>, <tag>anchor</tag>, and <tag>quote</tag>,
+most useful when an xrefstyle is used.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: toc.xsl</literal></para><screen><phrase role="commit-message">Rewrite <tag>toc</tag> templates to support an empty <tag>toc</tag> or populated <tag>toc</tag>
+in all permitted contexts. Same for lot elements.
+This fixes bug #1595969 for HTML outputs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates⋯</literal></para><screen><phrase role="commit-message">Added code to handle <tag>acknowledgements</tag> in <tag>book</tag> and part. The element is processed
+similarly to <tag>dedication</tag>. All <tag>acknowledgements</tag> will appear as front matter, after
+any dedications.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: index.xsl</literal></para><screen><phrase role="commit-message">Rewrote <tag>primaryie</tag>, <tag>secondaryie</tag> and <tag>tertiaryie</tag> templates to handle
+nesting of elements and <tag>seeie</tag> and <tag>seealsoie</tag>, as reported in
+bug # 1168912.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autotoc.xsl</literal></para><screen><phrase role="commit-message">Fix <tag>simplesect</tag> in <tag>toc</tag> problem.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: verbatim.xsl</literal></para><screen><phrase role="commit-message">Add support for @width per bug report #2012736.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: formal.xsl; htmltbl.xsl</literal></para><screen><phrase role="commit-message">Fix bug #1787140 HTML tables not handling attributes correctly.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb</literal></para><screen><phrase role="commit-message">Move writing-mode param.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: refentry.xsl</literal></para><screen><phrase role="commit-message">Remove a nesting of &lt;p&gt; inside &lt;p&gt; for <tag>refclass</tag> (made XHTML* invalid, made HTML silly)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Fix bug #1945872 to allow passthrough of colwidth values to
+HTML <tag>table</tag> when no <parameter>tablecolumns.extension</parameter> is available and
+when no instance of * appears in the <tag>table</tag>'s colspecs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: block.xsl</literal></para><screen><phrase role="commit-message">Added support for <tag>acknowledgements</tag> in <tag>article</tag>.
+Support in <tag>book</tag>/part remains to be added.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Fix bug #1787167 incorrect hot text for some olinks.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: qandaset.xsl</literal></para><screen><phrase role="commit-message">Fix bug 1546008: in <tag>qandaentry</tag> in a <tag>TOC</tag>, use its blockinfo/<tag>titleabbrev</tag> or blockinfo/<tag>title</tag>
+instead of <tag>question</tag>, if available. For DocBook 5, use the <tag>info</tag> versions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunktoc.xsl</literal></para><screen><phrase role="commit-message">Add support for generating <tag>olink</tag> <tag>database</tag> when using chunktoc.xsl.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: verbatim.xsl</literal></para><screen><phrase role="commit-message">Add better pointer to README for XSLTHL</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: verbatim.xsl</literal></para><screen><phrase role="commit-message">Another stab at fixing the stupid XSLTHT includes across processors (Saxon regression reported by Sorin Ristache)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: verbatim.xsl</literal></para><screen><phrase role="commit-message">More tweaking the way that XSLTHL does or does not get called</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: verbatim.xsl</literal></para><screen><phrase role="commit-message">Alternate attempt at sanely including/excluding XSLTHT code</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Convert function-available test for node-set() <tag>function</tag> to
+test of $exsl.node.set.available param.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: lists.xsl</literal></para><screen><phrase role="commit-message">Added a template for <tag>bibliolist</tag>. Closes bug #1815916.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_Epub">
+<title>ePub</title>
+<para>The following changes have been made to the
+ <filename>epub</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;⋯</literal></para><screen><phrase role="commit-message">Slightly more nuanced handling of <tag>imageobject</tag> alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">Add a colon after an <tag>abstract</tag>/<tag>title</tag> when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/de.xml</literal></para><screen><phrase role="commit-message">Correctly set dc:language in OPF metadata when i18nizing. Closes Bug #2755150</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</literal></para><screen><phrase role="commit-message">Corrected namespace declarations for <tag>literal</tag> XHTML elements to make them serialize "normally"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">Be a little bit more nuanced about dates</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯</literal></para><screen><phrase role="commit-message">Add DocBook <tag>subjectset</tag> -&gt; OPF dc:<tag>subject</tag> mapping and tests</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯</literal></para><screen><phrase role="commit-message">Add DocBook <tag>date</tag> -&gt; OPF dc:date mapping and tests</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯</literal></para><screen><phrase role="commit-message">Add DocBook <tag>abstract</tag> -&gt; OPF dc:description mapping and tests</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Check in patch submitted by user to add opf:file-as attribute
+to dc:creator element.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/dbtoepub</literal></para><screen><phrase role="commit-message">Adding --output option to dbtoepub based on user request</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb</literal></para><screen><phrase role="commit-message">Cleaning and regularizing the generation of namespaced nodes for OPF, NCX, XHTML and other outputted filetypes (hat <tag>tip</tag> to bobstayton for pointing out the silly, incorrect code)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/refclass.xml</literal></para><screen><phrase role="commit-message">Remove a nesting of &lt;p&gt; inside &lt;p&gt; for <tag>refclass</tag> (made XHTML* invalid, made HTML silly)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/blockquotepre.xml</literal></para><screen><phrase role="commit-message">Added regression test and fix for XHTML validation problem with &lt;a&gt;s added inside &lt;<tag>blockquote</tag>&gt;; This potentially causes another problem (where something is referenced by has no <tag>anchor</tag>, but someone reporting that should cause the whole &lt;a id='thing'/&gt; thing to be reconsidered with modern browsers in mind.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Epub changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_HTMLHelp">
+<title>HTMLHelp</title>
+<para>The following changes have been made to the
+ <filename>htmlhelp</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: htmlhelp-common.xsl</literal></para><screen><phrase role="commit-message">Add support for generating <tag>olink</tag> target <tag>database</tag> for htmlhelp files.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTMLHelp changes for 1.75.0-->
+
+
+<sect2 xml:id="rn_V1.75.0_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: default.table.rules.xml</literal></para><screen><phrase role="commit-message">Add default setting for @rules attribute on HTML markup tables.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: bookmarks.collapse.xml</literal></para><screen><phrase role="commit-message">Added a new parameter, <parameter>bookmarks.collapse</parameter>, that controls the initial <tag>state</tag>
+of the bookmark tree. When the parameter has a non-zero value (the default),
+only the top-level bookmarks are displayed initially. Otherwise, the whole
+tree of bookmarks is displayed.
+
+This is implemented for FOP 0.9X. Closes FR #1792326.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: variablelist.term.properties.xml</literal></para><screen><phrase role="commit-message">Add new <parameter>variablelist.term.properties</parameter> to format terms, per
+request # 1968513.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: qanda.defaultlabel.xml</literal></para><screen><phrase role="commit-message">Add two new <parameter>qanda.defaultlabel</parameter> values so that numbered sections
+and numbered questions can be distinguished. Satisfies
+Feature Request #1539045.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: index.links.to.section.xml</literal></para><screen><phrase role="commit-message">Change default to 1 to match past behavior.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: exsl.node.set.available.xml</literal></para><screen><phrase role="commit-message">Isolate this text for Xalan bug regarding exsl:node-set available.
+If it is ever fixed in Xalan, just fix it here.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: index.links.to.section.xml</literal></para><screen><phrase role="commit-message">Add param to control whether an <tag>index</tag> <tag>entry</tag> links to
+a <tag>section</tag> <tag>title</tag> or to the precise location of the
+<tag>indexterm</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossentry.list.item.properties.xml</literal></para><screen><phrase role="commit-message">New attribute list for <tag>glossentry</tag> in <tag>glossary</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: monospace.verbatim.font.width.xml</literal></para><screen><phrase role="commit-message">New parameter to support @width on <tag>programlisting</tag> and <tag>screen</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: highlight.source.xml</literal></para><screen><phrase role="commit-message">Updated and reorganized the description.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: page.margin.outer.xml; page.margin.inner.xml</literal></para><screen><phrase role="commit-message">Add caveat about XEP bug when writing-mode is right-to-left.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: article.appendix.title.properties.xml; writing.mode.xml; body.start.indent⋯</literal></para><screen><phrase role="commit-message">Change 'left' to 'start' and 'right' to 'end' to support right-to-left
+writing mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossdef.block.properties.xml; glossdef.list.properties.xml; glossterm.blo⋯</literal></para><screen><phrase role="commit-message">Add attribute-sets for formatting <tag>glossary</tag> terms and defs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossterm.separation.xml</literal></para><screen><phrase role="commit-message">Clarify the description.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: make.year.ranges.xml</literal></para><screen><phrase role="commit-message">Now handles <tag>year</tag> element containing a comma or dash without error.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: README</literal></para><screen><phrase role="commit-message">Inclusion of highlighting code was simplified. Only one import is now necessary.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: README</literal></para><screen><phrase role="commit-message">Adding XSLTHL readme</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: common.xsl</literal></para><screen><phrase role="commit-message">Alternate attempt at sanely including/excluding XSLTHT code</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Highlighting changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_XSL-Saxon">
+<title>XSL-Saxon</title>
+<para>The following changes have been made to the
+ <filename>xsl-saxon</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: src/com/nwalsh/saxon/Text.java</literal></para><screen><phrase role="commit-message">Added a fix that prevents output of extra blank line.
+Hopefully this closes bug #894805.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Saxon changes for 1.75.0-->
+
+<sect2 xml:id="rn_V1.75.0_XSL-Xalan">
+<title>XSL-Xalan</title>
+<para>The following changes have been made to the
+ <filename>xsl-xalan</filename> code
+ since the 1.74.3 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: src/com/nwalsh/xalan/Text.java</literal></para><screen><phrase role="commit-message">Added a fix that prevents output of extra blank line.
+Hopefully this closes bug #894805.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Xalan changes for 1.75.0-->
+
+
+</sect1>
+
+<sect1 xml:id="V1.74.3">
+<title>Release Notes: 1.74.3</title>
+<para>This release fixes some bugs in the 1.74.2 release.</para>
+<para>See <filename>highlighting/README</filename> for XSLTHL usage instructions.</para>
+</sect1>
+<sect1 xml:id="V1.74.2">
+<title>Release Notes: 1.74.2</title>
+<para>This release fixes some bugs in the 1.74.1 release.</para>
+</sect1>
+
+<sect1 xml:id="V1.74.1">
+<title>Release Notes: 1.74.1</title>
+<para>This release includes important bug fixes and adds the following
+significant feature changes:
+<variablelist>
+<varlistentry>
+<term>Gentext</term>
+<listitem><para>Kirghiz locale added and Chinese translations have been simplified.</para></listitem>
+<listitem><para>Somme support for gentext and right-to-left languages has been added.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>FO</term>
+<listitem><para>Various bugs have been resolved. </para> </listitem>
+<listitem><para>Support for a new processing instruction: <markup>dbfo funcsynopsis-style</markup> has been added. </para> </listitem>
+<listitem><para>Added new param <parameter>email.mailto.enabled</parameter> for FO output. Patch from Paolo Borelli. </para>
+</listitem>
+<listitem><para>Support for documented metadata in fop1 mode has been added. </para>
+</listitem>
+
+</varlistentry>
+<varlistentry>
+<term>Highlighting</term>
+<listitem><para>Support for the latest version of XSLTHL 2.0 and some new language syntaxes have been added to a variety of outputs.</para></listitem>
+
+</varlistentry>
+
+<varlistentry>
+<term>Manpages</term>
+<listitem><para>Added man.output.better.ps.enabled param (zero default). It non-zero, no such
+markup is embedded in generated man pages, and no enhancements are
+included in the PostScript output generated from those man pages
+by the man -Tps <tag>command</tag>.</para></listitem>
+
+</varlistentry>
+
+
+<varlistentry>
+<term>HTML</term>
+<listitem><para>Support for <parameter>writing.mode</parameter> to set text direction and <parameter>alignment</parameter> based on document locale has been added.</para></listitem>
+<listitem>
+<para>Added a new top-level stylesheet module, chunk-changebars.xsl, to be
+used for generating chunked output with highlighting based on change
+(@revisionflag) markup. The module imports/includes the standard chunking
+and changebars templates and contains additional logic for chunked output.
+See FRs #1015180 and #1819915.</para>
+</listitem>
+
+</varlistentry>
+<varlistentry>
+<term>ePub</term>
+<listitem>
+<para>Covers now look better in Adobe Digital Editions thanks to a patch from Paul Norton of Adobe</para>
+</listitem>
+<listitem><para>Cover handling now more generic (including limited DocBook 5.0 <markup>cover</markup> support thanks to patch contributed by Liza Daly.</para> </listitem>
+<listitem><para>Cover markup now carries more reliably into files destined for .mobi and the Kindle.</para> </listitem>
+<listitem><para><markup>dc:identifiers</markup> are now generated from more types of numbering schemes. </para></listitem>
+<listitem><para>Both SEO and semantic structure of chunked ePub output by ensuring that we always send out one and only one h1 in each XHTML chunk.</para></listitem>
+<listitem>
+<para>Primitive support for embedding a single font added.</para>
+</listitem>
+<listitem>
+<para>Support for embedding a CSS customizations added.</para>
+</listitem>
+
+</varlistentry>
+
+<varlistentry>
+<term>Roundtrip</term>
+
+<listitem>
+<para>Support for imagedata-metadata and <tag>table</tag> as images added.</para>
+</listitem>
+<listitem>
+<para>Support for imagedata-metadata and <tag>legalnotice</tag> as images added.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>Params</term>
+<listitem><para><parameter>man.output.better.ps.enabled</parameter> added for Manpages output </para></listitem>
+<listitem>
+<para><parameter>writing.mode.xml</parameter> added to set text direction.</para>
+</listitem>
+<listitem>
+<para>Added new param <parameter>email.mailto.enabled</parameter> for FO output.
+Patch from Paolo Borelli. Closes #2086321.</para>
+</listitem>
+<listitem>
+<para><parameter>highlight.source</parameter> upgraded to support the latest version of XSLTHL 2.0.</para>
+</listitem>
+
+</varlistentry>
+
+
+
+</variablelist>
+</para>
+<para>The following is a list of changes that have been made since the 1.74.0 release.</para>
+
+
+<sect2 xml:id="summary_V1.74.1_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the <filename>gentext</filename> code since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/ky.xml; Makefile</literal></para><screen><phrase role="commit-message">new Kirghiz locale from Ilyas Bakirov</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: locale/en.xml</literal></para><screen><phrase role="commit-message">Added "<tag>Acknowledgements</tag>".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Dongsheng Song: locale/zh_cn.xml</literal></para><screen><phrase role="commit-message">Simplified Chinese translation.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/lv.xml; locale/ca.xml; locale/pt.xml; locale/tr.xml; locale/af.xml;⋯</literal></para><screen><phrase role="commit-message">Add writing-mode gentext string to support right-to-left languages.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.74.1-->
+
+<sect2 xml:id="summary_V1.74.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the <filename>fo</filename> code since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: footnote.xsl</literal></para><screen><phrase role="commit-message">Added a check to confirm that a <tag>footnoteref</tag>'s linkend points to a <tag>footnote</tag>. Stylesheets stop processing if not and provide a useful error message.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: spaces.xsl</literal></para><screen><phrase role="commit-message">Convert spaces to fo:leader also in elements in the DB 5 namespace.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl; synop.xsl</literal></para><screen><phrase role="commit-message">Added support for a new processing instruction: dbfo funcsynopsis-style.
+Closes bug #1838213.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl; param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Added new param <parameter>email.mailto.enabled</parameter> for FO output.
+Patch from Paolo Borelli. Closes #2086321.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: docbook.xsl</literal></para><screen><phrase role="commit-message">Added support for document metadata for fop1 (patch #2067318).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: param.ent; param.xweb; highlight.xsl</literal></para><screen><phrase role="commit-message">Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.74.1-->
+
+<sect2 xml:id="summary_V1.74.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the <filename>html</filename> code since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; docbook.xsl; param.ent; html.xsl</literal></para><screen><phrase role="commit-message">Add support for <parameter>writing.mode</parameter> to set text direction and <parameter>alignment</parameter> based on document locale.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: chunk-changebars.xsl</literal></para><screen><phrase role="commit-message">Added a new top-level stylesheet module, chunk-changebars.xsl, to be
+used for generating chunked output with highlighting based on change
+(@revisionflag) markup. The module imports/includes the standard chunking
+and changebars templates and contains additional logic for chunked output.
+See FRs #1015180 and #1819915.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.74.1-->
+
+<sect2 xml:id="summary_V1.74.1_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the <filename>manpages</filename> code since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: docbook.xsl</literal></para><screen><phrase role="commit-message">Put the following at the top of generated roff for each page:
+ \" t
+purpose is to explicitly tell AT&amp;T troff that the page needs to be
+pre-processed through tbl(1); groff can <tag>figure</tag> it out
+automatically, but apparently AT&amp;T troff needs to be explicitly told</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.74.1-->
+
+<sect2 xml:id="summary_V1.74.1_Epub">
+<title>ePub</title>
+<para>The following changes have been made to the <filename>epub</filename> code since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">Patch from Paul Norton of Adobe to get covers to look better in Adobe Digital Editions</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/v5cover.xml; bin/spec/sp⋯</literal></para><screen><phrase role="commit-message">Patch contributed by Liza Daly to make ePub <tag>cover</tag> handling more generic. Additionally
+DocBook 5.0's &lt;<tag>cover</tag>&gt; now has some limited support:
+
+- should <tag>reference</tag> a <tag>cover</tag> in the OPF guide for a DocBook 5.0 test document</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/files/isbn.xml; bin/spec/files/issn.xml; bin/spec/files/biblioid.⋯</literal></para><screen><phrase role="commit-message">Liza Daly reported that the dc:identifer-generation code was garbage (she was right).
+
+Added new tests:
+- should include at least one dc:identifier
+- should include an ISBN as URN for dc:identifier if an ISBN was in the metadata
+- should include an ISSN as URN for dc:identifier if an ISSN was in the metadata
+- should include an <tag>biblioid</tag> as a dc:identifier if an <tag>biblioid</tag> was in the metadata
+- should include a URN for a <tag>biblioid</tag> with @class attribute as a dc:identifier if an <tag>biblioid</tag> was in the metadata</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb</literal></para><screen><phrase role="commit-message">Improve both SEO and semantic structure of chunked ePub output by ensuring that
+we always send out one and only one h1 in each XHTML chunk.
+
+DocBook::Epub
+- should include one and only one &lt;h1&gt; in each HTML file in rendered ePub files
+for &lt;<tag>book</tag>&gt;s
+- should include one and only one &lt;h1&gt; in each HTML file in rendered ePub files
+for &lt;<tag>book</tag>&gt;s even if they do not have <tag>section</tag> markup</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯</literal></para><screen><phrase role="commit-message">Adding better support for covers in epub files destined for .mobi and the Kindle</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/DejaVuSerif.otf; docbook.⋯</literal></para><screen><phrase role="commit-message">Adding primitive support for embedding a single font</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/test_cust.xsl; bin/spec/e⋯</literal></para><screen><phrase role="commit-message">Adding support for user-specified customization layers in dbtoepub</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s⋯</literal></para><screen><phrase role="commit-message">Adding CSS support to .epub target &amp; dbtoepub:
+ -c, --css [FILE] Use FILE for CSS on generated XHTML.
+
+
+DocBook::Epub
+...
+- should include a CSS <tag>link</tag> in HTML files when a CSS file has been provided
+- should include CSS file in .epub when a CSS file has been provided
+- should include a CSS <tag>link</tag> in OPF file when a CSS file has been provided</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Epub changes for 1.74.1-->
+
+<sect2 xml:id="summary_V1.74.1_Roundtrip">
+<title>Roundtrip</title>
+<para>The following changes have been made to the
+ <filename>roundtrip</filename> code
+ since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; template.xml; template.dot</literal></para><screen><phrase role="commit-message">added support for imagedata-metadata
+added support for <tag>table</tag> as images</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; normalise2sections.xsl; sections2blocks.xsl</literal></para><screen><phrase role="commit-message">Improved support for <tag>personname</tag> inlines.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml</literal></para><screen><phrase role="commit-message">Added support for <tag>legalnotice</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl</literal></para><screen><phrase role="commit-message">added support for <tag>orgname</tag> in <tag>author</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: specifications.xml; supported.xml; blocks2dbk.xsl; wordml2normalise.xsl; dbk2w⋯</literal></para><screen><phrase role="commit-message">Updated specification.
+to-DocBook: add cols attribute to <tag>tgroup</tag>
+from-DocBook: fix for <tag>blockquote</tag> <tag>title</tag></phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Roundtrip changes for 1.74.1-->
+
+<sect2 xml:id="summary_V1.74.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the <filename>params</filename> since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para>The change was to add man.output.better.ps.enabled parameter, with
+its default value set to zero.
+
+If the value of the man.output.better.ps.enabled parameter is
+non-zero, certain markup is embedded in each generated man page
+such that PostScript output from the man -Tps <tag>command</tag> for that
+page will include a number of enhancements designed to improve the
+quality of that output.
+
+If man.output.better.ps.enabled is zero (the default), no such
+markup is embedded in generated man pages, and no enhancements are
+included in the PostScript output generated from those man pages
+by the man -Tps <tag>command</tag>.
+
+WARNING: The enhancements provided by this parameter rely on
+features that are specific to groff (GNU troff) and that are not
+part of "classic" AT&amp;T troff or any of its derivatives. Therefore,
+any man pages you generate with this parameter enabled will be
+readable only on systems on which the groff (GNU troff) program is
+installed, such as GNU/Linux systems. The pages will not not be
+readable on systems on with the classic troff (AT&amp;T troff) <tag>command</tag>
+is installed.
+
+NOTE: The value of this parameter only affects PostScript output
+generated from the man <tag>command</tag>. It has no effect on output
+generated using the FO backend.
+
+<tag>TIP</tag>: You can generate PostScript output for any man page by
+running the following <tag>command</tag>:
+
+man FOO -Tps &gt; FOO.ps
+
+You can then generate PDF output by running the following <tag>command</tag>:
+
+ps2pdf FOO.ps</para>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: writing.mode.xml</literal></para><screen><phrase role="commit-message">writing mode param used to set text direction.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: email.mailto.enabled.xml</literal></para><screen><phrase role="commit-message">Added new param <parameter>email.mailto.enabled</parameter> for FO output.
+Patch from Paolo Borelli. Closes #2086321.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: highlight.source.xml; highlight.xslthl.config.xml</literal></para><screen><phrase role="commit-message">Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.74.1-->
+
+<sect2 xml:id="summary_V1.74.1_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.74.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: cpp-hl.xml; c-hl.xml; tcl-hl.xml; php-hl.xml; common.xsl; perl-hl.xml; delphi⋯</literal></para><screen><phrase role="commit-message">Upgraded to support the latest version of XSLTHL 2.0
+ -- nested markup in highlited code is now processed
+ -- it is no longer needed to specify path XSLTHL configuration file using Java property
+ -- support for new languages, including Perl, Python and Ruby was added</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Highlighting changes for 1.74.1-->
+
+</sect1>
+
+
+<sect1 xml:id="V1.74.0">
+<title>Release Notes: 1.74.0</title>
+<para>This release includes important bug fixes and adds the following
+significant feature changes:
+<variablelist>
+<varlistentry>
+<term>.epub target</term>
+<listitem><para>Paul Norton (Adobe) and Keith Fahlgren(O'Reilly Media) have donated code that generates <filename>.epub</filename> documents from
+DocBook input. An alpha-reference implementation in Ruby has also been provided.</para>
+<para>.epub is an open standard of the The International Digital Publishing Forum (IDPF),
+a the trade and standards association for the digital publishing industry. </para>
+<para>Read more about this target in <filename>epub/README</filename>
+</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term>XHTML 1.1 target</term>
+<listitem><para>To support .epub output, a strict XHTML 1.1 target has been added. The stylesheets for this output are
+generated and are quite similar to the XHTML target.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>Gentext updates</term>
+<listitem><para>A number of locales have been updated.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>Roundtrip improvements</term>
+<listitem><para>Table, figure, template syncronization, and character style improvements have been made for WordML &amp; Pages. Support added for OpenOffice.org.</para></listitem>
+
+</varlistentry>
+
+<varlistentry>
+ <term>First implementation of a libxslt extension</term>
+ <listitem>
+ <para>A stylesheet extension for libxslt, written in Python, has been added.
+ The extension is a function for adjusting column widths in CALS tables. See
+ <filename>extensions/README.LIBXSLT</filename> for more information.</para>
+ </listitem>
+ </varlistentry>
+
+</variablelist>
+</para>
+<para>The following is a list of changes that have been made
+ since the 1.73.2 release.</para>
+
+<sect2 xml:id="V1.74.0_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the
+ <filename>gentext</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/id.xml</literal></para><screen><phrase role="commit-message">Checked in changes to Indonesion locale submitted by Euis Luhuanam a long time ago.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/lt.xml</literal></para><screen><phrase role="commit-message">Added changes to Lithuanian locate submitted a long time back by Nikolajus Krauklis.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/hu.xml</literal></para><screen><phrase role="commit-message">fixed error in lowercase.alpha definition in Hungarian locale</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/nb.xml</literal></para><screen><phrase role="commit-message">Corrected language code for nb locale, and restored missing "startquote" key.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/ja.xml</literal></para><screen><phrase role="commit-message">Committed changes to ja locale file, from Akagi Kobayashi. Adds bracket quotes around many xref instances that did not have them
+before.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile</literal></para><screen><phrase role="commit-message">"no" locale is now "nb"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/nb.xml</literal></para><screen><phrase role="commit-message">Update Norwegian Bokmål translation. Thanks to Hans F. Nordhaug.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/no.xml; locale/nb.xml</literal></para><screen><phrase role="commit-message">per message from Hans F. Nordhaug, correct identifier for
+Norwegian Bokmål is "nb" (not "no") and has been for quite some
+time now...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/ja.xml</literal></para><screen><phrase role="commit-message">Converted ja.xml source file to use real unicode characters so
+that the actual glyphs so up when you edit it in a text editor
+(instead of the character references).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/ja.xml</literal></para><screen><phrase role="commit-message">Checked in changes to ja.xml locale file. Thanks to Akagi Kobayashi.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/it.xml</literal></para><screen><phrase role="commit-message">Changes from Federico Zenith</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Dongsheng Song: locale/zh_cn.xml</literal></para><screen><phrase role="commit-message">Added missing translations.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: l10n.xsl</literal></para><screen><phrase role="commit-message">Added new template "l10.language.name" for retrieving the
+English-language name of the lang setting of the current document.
+Closes #1916837. Thanks to Simon Kennedy.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">fixed syntax error</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">fixed a couple of typos</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">refined handling of cases where refentry "source" or "manual"
+metadata is missing or when we use fallback content instead. We
+now report a Warning if we use fallback content.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">don't use refmiscinfo@class=date value as fallback for refentry
+"source" or "manual" metadata fields</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">Made reporting of missing refentry metadata more quiet:
+
+ - we no longer report anything if usable-but-not-preferred
+ metadata is found; we just quietly use whatever we manage to
+ find
+
+ - we now only report missing "source" metadata if the refentry
+ is missing BOTH "source name" and "version" metadata; if it
+ has one but not the other, we use whichever one it has and
+ don't report anything as missing
+
+The above changes were made because testing with some "real world"
+source reveals that some authors are intentionally choosing to use
+"non preferred" markup for some metadata, and also choosing to
+omit "source name" or "version" metadata in there DocBook XML. So
+it does no good to give them pedantic reminders about what they
+already know...
+
+Also, changed code to cause "fixme" text to be inserted in output
+in particular cases:
+
+ - if we can't manage to find any "source" metadata at all, we
+ now put fixme text into the output
+
+ - if we can't manage to find any "manual" metadata a all, we
+ now put fixme text into the output
+
+The "source" and "manual" metadata is necessary information, so
+buy putting the fixme stuff in the output, we alert users to the
+need problem of it being missing.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">When generating manpages output, we no longer report anything if
+the refentry source is missing date or pubdate content. In
+practice, many users intentionally omit the date from the source
+because they explicitly want it to be generated.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: l10n.xml</literal></para><screen><phrase role="commit-message">further change needed for switch from no locale to nb.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: common.xsl</literal></para><screen><phrase role="commit-message">Added support for orgname in authorgroup. Thanks to Camille
+Bégnis.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile</literal></para><screen><phrase role="commit-message">"no" locale is now "nb"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: stripns.xsl</literal></para><screen><phrase role="commit-message">Removed the template matching "ng:link|db:link" (in order to make @xlink:show
+work with &lt;link&gt; elements). As far as I can tell, this template is no longer needed.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: entities.ent</literal></para><screen><phrase role="commit-message">Moved declaration of comment.block.parents entity to common/entities.ent.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">Added an update the fix made in revision 7528 (handling of xref/link in no.anchor.mode mode).
+Having xref in title is not a problem as long as the target is not an ancestor element.
+Closes bug #1838136.
+
+Note that an xref that is in a title and whose target is an ancestor element is still not
+rendered in the TOC. This could be considered a bug, but on the other hand I cannot really
+see the point in having such an xref in a document.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">Added a "not(ancestor::title)" test to work around "too many nested
+apply-templates" problems when processing xrefs or links in no.anchor.mode mode.
+Hopefully, this closes bug #1811721.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">Removed old template matching "link" in no.anchor.mode mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">Process &lt;link&gt; in no.anchor.mode mode with the same template as &lt;xref&gt;.
+Closes bug #1759205 (Empty link in no.anchor.mode mode).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titles.xsl</literal></para><screen><phrase role="commit-message">In no.anchor.mode mode, do not output anchors for elements that are descendants
+of &lt;title&gt;. Previously, having inline elements with @id/@xml:id in &lt;title&gt;s
+resulted in anchors both in the TOC and in the main flow. Closes bug #1797492.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem> <para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Updated documentation for keep-together.</phrase></screen> </listitem>
+<listitem> <para><literal>Mauritz Jeanson: task.xsl</literal></para><screen><phrase role="commit-message">Enabled use of the keep-together PI on <tag>task</tag> elements.</phrase></screen> </listitem>
+<listitem>
+<para><literal>Robert Stayton: index.xsl</literal></para><screen><phrase role="commit-message">FOP1 requires fo:wrapper for inline index entries, not fo:inline.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: index.xsl</literal></para><screen><phrase role="commit-message">Fixed non-working inline.or.block template for indexterm wrappers.
+Add fop1 to list of processors using inline.or.block.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: table.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #1891965 (colsep in entytbl not working).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl</literal></para><screen><phrase role="commit-message">Added support for title in revhistory. Closes bug #1842847.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Small doc cleanup (dbfo float-type).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl</literal></para><screen><phrase role="commit-message">Insert commas between multiple copyright holders.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: autotoc.xsl; division.xsl</literal></para><screen><phrase role="commit-message">Added modifications to support nested set elements. See bug #1853172.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: glossary.xsl</literal></para><screen><phrase role="commit-message">Added normalize-space to xsl:sorts to avoid missorting of glossterms due to stray leading spaces.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: glossary.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
+and the "hot text" is the biblioid itself enclosed in brackets.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Moved declaration of comment.block.parents entity to common/entities.ent.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: docbook.xsl</literal></para><screen><phrase role="commit-message">Updated message about unmatched element.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: param.xweb</literal></para><screen><phrase role="commit-message">Added link to profiling chapter of TCG.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: refentry.xsl</literal></para><screen><phrase role="commit-message">Fixed typo (refsynopsysdiv -&gt; refsynopsisdiv).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: fop.xsl; fop1.xsl; ptc.xsl; xep.xsl</literal></para><screen><phrase role="commit-message">Added test to check generate.index param when generating pdf bookmarks</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: graphics.xsl</literal></para><screen><phrase role="commit-message">Added support for MathML in imagedata.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: math.xsl</literal></para><screen><phrase role="commit-message">Removed unnecessary extra test condition in test express that
+checks for passivetex.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: math.xsl</literal></para><screen><phrase role="commit-message">Don't use fo:instream-foreign-object if we are processing with
+passivetex. Closes #1806899. Thanks to Justus Piater.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: component.xsl</literal></para><screen><phrase role="commit-message">Added code to output a TOC for an appendix in an article when
+generate.toc='article/appendix toc'. Closes bug #1669658.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Dongsheng Song: biblio-iso690.xsl</literal></para><screen><phrase role="commit-message">Change encoding from "windows-1250" to "UTF-8".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Updated documentation for dbfo_label-width.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: lists.xsl</literal></para><screen><phrase role="commit-message">Added support for the dbfo_label-width PI in calloutlists.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: biblio.xsl</literal></para><screen><phrase role="commit-message">Support finding glossary database entries inside bibliodivs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: formal.xsl</literal></para><screen><phrase role="commit-message">Complete support for &lt;?dbfo pgwide="1"?&gt; for informal
+elements too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: table.xsl</literal></para><screen><phrase role="commit-message">In the table.block template, added a check for the dbfo_keep-together PI, so that
+a table may break (depending on the PI value) at a page break. This was needed
+since the outer fo:block that surrounds fo:table has keep-together.within-column="always"
+by default, which prevents the table from breaking. Closes bug #1740964 (Titled
+table does not respect dbfo PI).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Added a few missing @role="tcg".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Use normalize-space() in glossterm comparisons (as in html/inline.xsl).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: autoidx.xsl</literal></para><screen><phrase role="commit-message">Removed the [&amp;scope;] predicate from the target variable in the template with name="reference".
+This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
+with index.on.type=1. Closes bug #1680836.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl; xref.xsl; footnote.xsl</literal></para><screen><phrase role="commit-message">Added capability in FO output for displaying URLs for all
+hyperlinks (elements marked up with xlink:href attributes) in the
+same way as URLs for ulinks are already handled (which is to say,
+either inline or as numbered footnotes).
+
+Background on this change:
+DocBook 5 allows "ubiquitous" linking, which means you can make
+any element a hyperlink just by adding an xlink:href attribute to
+it, with the value set to an external URL. That's in contrast to
+DocBook 4, which only allows you to use specific elements (e.g.,
+the link and ulink elements) to mark up hyperlinks.
+
+The existing FO stylesheets have a mechanism for handling display
+of URLs for hyperlinks that are marked up with ulink, but they did
+not handle display of URLs for elements that were marked up with
+xlink:href attributes. This change adds handling for those other
+elements, enabling the URLs they link to be displayed either
+inline or as numbered footnotes (depending on what values the user
+has the ulink.show and ulink.footnotes params set to).
+
+Note that this change only adds URL display support for elements
+that call the simple.xlink template -- which currently is most
+(but not all) inline elements.
+
+This change also moves the URL display handling out of the ulink
+template and into a new "hyperlink.url.display" named template;
+the ulink template and the simple.xlink named template now both
+call the hyperlink.url.display template.
+
+Warning: In the stylesheet code that determines what footnote
+number to assign to each footnote or external hyperlink, there is
+an XPath expression for determining whether a particular
+xlink:href instance is an external hyperlink; that expression is
+necessarily a bit complicated and further testing may reveal that
+it doesn't handle all cases as expected -- so some refinements to
+it may need to be done later.
+
+Closes #1785519. Thanks to Ken Morse for reporting and
+troubleshooting the problem.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem> <para><literal>Keith Fahlgren: inline.xsl; synop.xsl</literal></para><screen><phrase role="commit-message">Work to make HTML and XHTML targets more valid</phrase></screen> </listitem>
+<listitem> <para><literal>Keith Fahlgren: table.xsl</literal></para><screen><phrase role="commit-message">Add better handling for tables that have footnotes in the titles</phrase></screen> </listitem>
+<listitem> <para><literal>Keith Fahlgren: biblio.xsl</literal></para><screen><phrase role="commit-message">Add anchors to bibliodivs</phrase></screen> </listitem>
+<listitem>
+<para><literal>Keith Fahlgren: formal.xsl; Makefile; htmltbl.xsl</literal></para><screen><phrase role="commit-message">Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
+and Keith Fahlgren of O'Reilly.</phrase></screen>
+<para>This change includes new code for generating the XHTML 1.1 target sanely.</para>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: biblio.xsl</literal></para><screen><phrase role="commit-message">Added code for creating URLs from biblioids with @class="doi" (representing Digital
+Object Identifiers). See FR #1934434 and http://doi.org.
+
+To do: 1) Add support for FO output. 2) Figure out how @class="doi" should be handled
+for bibliorelation, bibliosource and citebiblioid.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Norman Walsh: formal.xsl</literal></para><screen><phrase role="commit-message">Don't use xsl:copy because it forces the resulting element to be in the same namespace as the source element; in the XHTML stylesheets, that's wrong. But the HTML-to-XHTML converter does the right thing with literal result elements, so use one of them.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile</literal></para><screen><phrase role="commit-message">Added checks and hacks to various makefiles to enable building
+under Cygwin. This stuff is ugly and maybe not worth the mess and
+trouble, but does seem to work as expected and not break anything
+else.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: docbook.xsl</literal></para><screen><phrase role="commit-message">added "exslt" namespace binding to html/docbook.xsl file (in
+addition to existing "exsl" binding. reason is because lack of it
+seems to cause processing problems when using the profiled
+version of the stylsheet</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Norman Walsh: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Rename link</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: table.xsl</literal></para><screen><phrase role="commit-message">Added a fix to make rowsep apply to the last row of thead in entrytbl.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl</literal></para><screen><phrase role="commit-message">Simplified and streamlined handling of output for ANSI-style
+funcprototype output, to correct a problem that was causing type
+data to be lost in the output parameter definitions. For example,
+for an instance like this:
+ &lt;paramdef&gt;void *&lt;parameter&gt;dataptr&lt;/parameter&gt;[]&lt;/paramdef&gt;
+... the brackets (indicating an array type) were being dropped.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl</literal></para><screen><phrase role="commit-message">Changed HTML handling of K&amp;R-style paramdef output. The parameter
+definitions are no longer output in a table (though the prototype
+still is). The reason for the change is that the
+kr-tabular-funcsynopsis-mode template was causing type data to be
+lost in the output parameter definitions. For example, for an
+instance like this:
+ &lt;paramdef&gt;void *&lt;parameter&gt;dataptr&lt;/parameter&gt;[]&lt;/paramdef&gt;
+... the brackets (indicating an array type) were being dropped.
+The easiest way to deal with the problem is to not try to chop up
+the parameter definitions and display them in table format, but to
+instead just output them as-is. May not look quite as pretty, but
+at least we can be sure no information is being lost...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: pi.xsl</literal></para><screen><phrase role="commit-message">updated wording of doc for funcsynopsis-style PI</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: param.xweb; param.ent; synop.xsl</literal></para><screen><phrase role="commit-message">Removed the funcsynopsis.tabular.threshold param. It's no longer
+being used in the code and hasn't been since mid 2006.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: graphics.xsl</literal></para><screen><phrase role="commit-message">Added support for the img.src.path parameter for SVG graphics. Closes bug #1888169.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Added missing space.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Norman Walsh: component.xsl</literal></para><screen><phrase role="commit-message">Fix bug where component titles inside info elements were not handled properly</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: pi.xsl</literal></para><screen><phrase role="commit-message">Moved dbhtml_stop-chunking embedded doc into alphabetical order,
+fixed text of TCG section it see-also'ed.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: pi.xsl</literal></para><screen><phrase role="commit-message">Added support for &lt;?dbhtml stop-chunking?&gt; processing instruction</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: chunk-common.xsl; pi.xsl</literal></para><screen><phrase role="commit-message">Added support for &lt;?dbhtml stop-chunking?&gt; processing instruction</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: glossary.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry. Also added normalize-space to avoid missorting due to stray leading spaces.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
+and the "hot text" is the biblioid itself enclosed in brackets.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Added support for @xlink:show in the simple.xlink template. The "new" and "replace"
+values are supported (corresponding to values of "_blank" and "_top" for the
+ulink.target parameter). I have assumed that @xlink:show should override ulink.target
+for external URI links. This closes bugs #1762023 and #1727498.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Moved declaration of comment.block.parents entity to common/entities.ent.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: param.xweb</literal></para><screen><phrase role="commit-message">Added link to profiling chapter of TCG.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Dongsheng Song: biblio-iso690.xsl</literal></para><screen><phrase role="commit-message">Change encoding from "windows-1250" to "UTF-8".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: biblio.xsl</literal></para><screen><phrase role="commit-message">Add support in biblio collection to entries in bibliodivs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Added missing @role="tcg".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: chunk-common.xsl; titlepage.xsl</literal></para><screen><phrase role="commit-message">Refactored legalnotice/revhistory chunking, so that the use.id.as.filename
+parameter as well as the dbhtml_filename PI are taken into account. A new named
+template in titlepage.xsl is used to compute the filename.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: chunk-common.xsl; titlepage.xsl</literal></para><screen><phrase role="commit-message">An update to the fix for bug #1790495 (r7433):
+The "ln-" prefix is output only when the legalnotice doesn't have an
+@id/@xml:id, in which case the stylesheets generate an ID value,
+resulting in a filename like "ln-7e0fwgj.html". This is useful because
+without the prefix, you wouldn't know that the file contained a legalnotice.
+The same logic is also applied to revhistory, using an "rh-" prefix.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: autoidx.xsl</literal></para><screen><phrase role="commit-message">Removed the [&amp;scope;] predicate from the target variable in the template with name="reference".
+This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
+with index.on.type=1. Closes bug #1680836.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl</literal></para><screen><phrase role="commit-message">Added 'ln-' prefix to the name of the legalnotice chunk, in order to match the
+&lt;link href"..."&gt; that is output by make.legalnotice.head.links (chunk-common.xsl).
+Modified the href attribute on the legalnotice link.
+Closes bug #1790495.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl</literal></para><screen><phrase role="commit-message">slightly adjusted spacing around admonition markers</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl; utility.xsl</literal></para><screen><phrase role="commit-message">make sure refsect3 titles are preceded by a line of space, and
+make the indenting of their child content less severe</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">only indent verbatim environments in TTY output, not in non-TTY/PS</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">made another adjustment to correct vertical alignment of admonition marker</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl; other.xsl</literal></para><screen><phrase role="commit-message">Adjusted/corrected alignment of adominition marker in PS/non-TTY output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: endnotes.xsl</literal></para><screen><phrase role="commit-message">For PS/non-TTY output, display footnote/endnote numbers in
+superscript.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl</literal></para><screen><phrase role="commit-message">Changed handling of hanging indents for cmdsynopsis, funcsynopsis,
+and synopfragment such that they now look correct in non-TTY/PS
+output. We now use the groff \w escape to hang by the actual width
+-- in the current font -- of the command, funcdef, or
+synopfragment references number (as opposed to hanging by the
+number of characters). This rendering in TTY output remains the
+same, since the width in monospaced TTY output is the same as the
+number of characters.
+
+Also, created new synopsis-block-start and synopsis-block-end
+templates to use for cmdsynopsis and funcsynopsis instead of the
+corresponding verbatim-* templates.
+
+Along with those changes, also corrected a problem that caused the
+content of synopfragment to be dropped, and made a
+vertical-spacing change to adjust spacing around table titles and
+among sibling synopfragment instances.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl</literal></para><screen><phrase role="commit-message">use common l10.language.name template to retrieve English-language name</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl; inline.xsl</literal></para><screen><phrase role="commit-message">added comment in code explaining why we don't put filename output
+in italic (despite the fact that man guidelines say we should)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl</literal></para><screen><phrase role="commit-message">put filename output in monospace instead of italic</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl</literal></para><screen><phrase role="commit-message">put cmdsynopsis in monospace</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl</literal></para><screen><phrase role="commit-message">removed template match for literal. template matches for monospace
+inlines are all imported from the HTML stylesheet</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">don't indent verbatim environments that are descendants of
+refsynopsisdiv, not put backgrounds behind them</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl</literal></para><screen><phrase role="commit-message">set output of the literal element in monospace. this causes all
+inline monospace instances in the git man pages to be set in
+monospace (since DocBook XML source for git docs is generated with
+asciidoc and asciidoc consistently outputs only &lt;literal&gt; for
+inline monospace (not &lt;command&gt; or &lt;code&gt; or anything else).
+Of course this only affects non-TTY output...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">Added inline.monoseq named template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">don't bother using a custom register to store the previous
+font-family value when setting blocks of text in code font; just
+use \F[] .fam with no arg to switch back</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: endnotes.xsl</literal></para><screen><phrase role="commit-message">put links in blue in PS output (note that this matches how groff
+renders content marked up with the .URL macro)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent</literal></para><screen><phrase role="commit-message">removed man.links.are.underlined and added man.font.links. Also,
+changed the default font formatting for links to bold.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Added new param man.base.url.for.relative.links .. specifies a
+base URL for relative links (for ulink, @xlink:href, imagedata,
+audiodata, videodata) shown in the generated NOTES section of
+man-page output. The value of man.base.url.for.relative.links is
+prepended to any relative URI that is a value of ulink url,
+xlink:href, or fileref attribute.
+
+If you use relative URIs in link sources in your DocBook refentry
+source, and you leave man.base.url.for.relative.links unset, the
+relative links will appear "as is" in the NOTES section of any
+man-page output generated from your source. That's probably not
+what you want, because such relative links are only usable in the
+context of HTML output. So, to make the links meaningful and
+usable in the context of man-page output, set a value for
+man.base.url.for.relative.links that points
+to the online version of HTML output generated from your DocBook
+refentry source. For example:
+
+ &lt;xsl:param name="man.base.url.for.relative.links"
+ &gt;http://www.kernel.org/pub/software/scm/git/docs/&lt;/xsl:param&gt;</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">If a source refentry contains a Documentation or DOCUMENTATION
+section, don't report it as having missing AUTHOR information.
+Also, if missing a contrib/personblurb for a person or org, report
+pointers to http://docbook.sf.net/el/personblurb and to
+http://docbook.sf.net/el/contrib</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">If we encounter an author|editor|othercredit instance that lacks a
+personblurb or contrib, report it to the user (because that means
+we have no information about that author|editor|othercredit to
+display in the generated AUTHOR|AUTHORS section...)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl; docbook.xsl; other.xsl</literal></para><screen><phrase role="commit-message">if we can't find any usable author data, emit a warning and insert
+a fixme in the output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">fixed bug in indenting of output for contrib instances in AUTHORS
+section. Thanks to Daniel Leidert and the fglrx docs for exposing
+the bug.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">for a para or simpara that is the first child of a callout,
+suppress the .sp or .PP that would normally be output (because in
+those cases, the output goes into a table cell, and the .sp or .PP
+markup causes a spurious linebreak before it when displayed</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Added support for rendering co callouts and calloutlist instances.
+So you can now use simple callouts -- marking up programlisting
+and such with co instances -- and have the callouts displayed in
+man-page output. ("simple callouts" means using co@id and
+callout@arearefs pointing to co@id instances; in man/roff output,
+we can't/don't support markup that uses areaset and area)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">only put a line of space after a verbatim if it's followed by a
+text node or a paragraph</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">put verbatim environments in slightly smaller font in non-TTY
+output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">minor whitespace-only reformatting of lists.xsl source</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Made refinements/fixes to output of orderedlist and itemizedlist
+-- in part, to get mysql man pages to display correctly. This
+change causes a "\c" continuation marker to be added between
+listitem markers and contents (to ensure that the content remains
+on the same line as the marker when displayed)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">put a line of vertical space after all verbatim output that has
+sibling content following it (not just if that sibling content is
+a text node)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">refined spacing around titles for admonitions</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl; other.xsl</literal></para><screen><phrase role="commit-message">Deal with case of verbatim environments that have a linebreak
+after the opening tag. Assumption is that users generally don't
+want that linebreak to appear in output, so we do some groff
+hackery to mess with vertical spacing and close the space.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl</literal></para><screen><phrase role="commit-message">indexterm instances now produce groff comments like this:
+
+ .\" primary: secondary: tertiary
+
+remark instances, if non-empty, now produce groff comments</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: charmap.groff.xsl; other.xsl</literal></para><screen><phrase role="commit-message">convert no-break space character to groff "\ \&amp;" (instead of just
+"\ "). the reason is that if a space occurs at the end of a line,
+our processing causes it to be eaten. a real-world case of this is
+the mysql(1) man page. appending the "\&amp;" prevents that</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">output "sp" before simpara output, not after it (outputting it
+after results in undesirable whitespace in particular cases; for
+example, in the hg/mercurial docs</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl</literal></para><screen><phrase role="commit-message">renamed from title-preamble to pinch.together and replaced "sp -1"
+between synopsis fragments with call to pinch.together instead</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: table.xsl</literal></para><screen><phrase role="commit-message">use title-preamble template for table titles (instead of "sp -1"
+hack), and "sp 1" after all tables (instead of just "sp"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">created title-preamble template for suppressing line spacing after
+headings</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">further refinement of indenting in AUTHORS section</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl; other.xsl</literal></para><screen><phrase role="commit-message">refined handling of admonitions</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Use RS/RE in another place where we had IP ""</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">Replace (ab)use of IP with "sp -1" in AUTHORS section with RS/RE
+instead.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: table.xsl; synop.xsl; info.xsl</literal></para><screen><phrase role="commit-message">changed all instances of ".sp -1n" to ".sp -1"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl</literal></para><screen><phrase role="commit-message">add extra line before SH heads only in non-TTY output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">Reworked output for admonitions (caution, important, note, tip,
+warning). In TTY output, admonitions now get indented. In non-TTY
+output, a colored marker (yellow) is displayed next to them.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl</literal></para><screen><phrase role="commit-message">Added BM/EM macros for putting a colored marker in margin next to
+a block of text.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">created make.bold.title template by moving title-bolding part out
+from nested-section-title template. This allows the bolding to
+also be used by the template for formatting admonitions</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">put .br before copyright contents to prevent them from getting run in</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl; other.xsl; utility.xsl</literal></para><screen><phrase role="commit-message">made point size of output for Refsect2 and Refsect3 heads bigger</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl</literal></para><screen><phrase role="commit-message">put slightly more space between SH head and underline in non-TTY
+output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: param.xweb; param.ent; other.xsl</literal></para><screen><phrase role="commit-message">Added the man.charmap.subset.profile.english parameter and refined
+the handling of charmap subsets to differentiate between English
+and non-English source.
+
+This way charmap subsets are now handled is this:
+
+If the value of the man.charmap.use.subset parameter is non-zero,
+and your DocBook source is not written in English (that is, if its
+lang or xml:lang attribute has a value other than en), then the
+character-map subset specified by the man.charmap.subset.profile
+parameter is used instead of the full roff character map.
+
+Otherwise, if the lang or xml:lang attribute on the root element
+in your DocBook source or on the first refentry element in your
+source has the value en or if it has no lang or xml:lang
+attribute, then the character-map subset specified by the
+man.charmap.subset.profile.english parameter is used instead of
+man.charmap.subset.profile.
+
+The difference between the two subsets is that
+man.charmap.subset.profile provides mappings for characters in
+Western European languages that are not part of the Roman
+(English) alphabet (ASCII character set).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl</literal></para><screen><phrase role="commit-message">Various updates, mainly related to uppercasing SH titles:
+
+ - added a "Language: " metadata line to the top comment area of
+ output man pages, to indicate the language the page is in
+
+ - added a "toupper" macro of doing locale-aware uppercasing of
+ SH titles and cross-references to SH titles; the mechanism
+ relies on the uppercase.alpha and lowercase.alpha DocBook
+ gentext keys to do locale-aware uppercasing based on the
+ language the page is written in
+
+ - added a "string.shuffle" template, which provides a library
+ function for "shuffling" two strings together into a single
+ string; it takes the first character for the first string, the
+ first character from second string, etc. The only current use
+ for it is to generate the argument for the groff tr request
+ that does string uppercasing.
+
+ - added make.tr.uppercase.arg and make.tr.normalcase.arg named
+ templates for use in generating groff code for uppercasing and
+ "normal"-casing SH titles
+
+ - made the BB/BE "background drawing" macros have effect only in
+ non-TTY output
+
+ - output a few comments in the top part of source</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">removed some leftover kruft</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">To create the name(s) for each man page, we now replace any spaces
+in the refname(s) with underscores. This ensures that tools like
+lexgrog(1) will be able to parse the name (lexgrog won't parse
+names that contain spaces).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: docbook.xsl</literal></para><screen><phrase role="commit-message">Put a comment into source of man page to indicate where the main
+content starts. (We now have a few of macro definitions at the
+start of the source, so putting this comment in helps those that
+might be viewing the source.)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">refined mechanism for generating SH titles</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: charmap.groff.xsl</literal></para><screen><phrase role="commit-message">Added zcaron, Zcaron, scaron, and Scaron to the groff character map.
+This means that generated Finnish man pages will no longer contain
+any raw accented characters -- they'll instead by marked up with
+groff escapes.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl; utility.xsl</literal></para><screen><phrase role="commit-message">corrected a regression I introduced about a year ago that caused
+dots to be output just as "\." -- instead needs to be "\&amp;." (which
+is what it will be now, after this change)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">Changed backend handling for generating titles for SH sections and
+for cross-references to those sections. This should have no effect
+on TTY output (behavior should remain the same hopefully) but
+results in titles in normal case (instead of uppercase) in PS
+output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">use make.subheading template to make subheadings for AUTHORS and
+COPYRIGHT sections (instead of harcoding roff markup)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">put code font around programlisting etc.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl; docbook.xsl</literal></para><screen><phrase role="commit-message">embed custom macro definitions in man pages, plus wrap synopsis in
+code font</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: endnotes.xsl</literal></para><screen><phrase role="commit-message">use the make.subheading template to generated SH subheading for
+endnotes section.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Added some templates for generating if-then-else conditional
+markup in groff, so let's use those instead of hard-coding it in
+multiple places...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl; utility.xsl</literal></para><screen><phrase role="commit-message">Initial checkin of some changes related to making PS/PDF output
+from "man -l -Tps" look better. The current changes:
+
+ - render synopsis and verbatim sections in a monospace/code font
+
+ - put a light-grey background behind all programlisting, screen,
+ and literallayout instances
+
+ - prevent SH heads in PS output from being rendered in uppercase
+ (as they are in console output)
+
+ - also display xrefs to SH heads in PS output in normal case
+ (instead of uppercase)
+
+ - draw a line under SH heads in PS output
+
+The changes made to the code to support the above features were:
+
+ - added some embedded/custom macros: one for conditionally
+ upper-casing SH x-refs, one for redefining the SH macro
+ itself, with some conditional handling for PS output, and
+ finally a macro for putting a background/screen (filled box)
+ around a block of text (e.g., a program listing) in PS output
+
+ - added utility templates for wrapping blocks of text in code
+ font; also templates for inline code font</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: refentry.xsl</literal></para><screen><phrase role="commit-message">refpurpose nodes now get apply-templates instead of just normalize-space().</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Fixed alignment of first lined of text for each listitem in
+orderedlist output for TTY. Existing code seemed to have been
+causing an extra undesirable space to appear.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Wrapped some roff conditionals around roff markup for orderedlist
+and itemizedlist output, so that the lists look acceptable in PS
+output as well as TTY.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: pi.xsl; synop.xsl; param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Added the man.funcsynopsis.style parameter. Has the same effect in
+manpages output as the funcsynopsis.style parameter has in HTML
+output -- except that its default value is 'ansi' instead of 'kr'.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl</literal></para><screen><phrase role="commit-message">Reworked handling of K&amp;R funcprototype output. It no longer relies
+on the HTML kr-tabular templates, but instead just does direct
+transformation to roff. For K&amp;R output, it displays the paramdef
+output in an indented list following the prototype.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl</literal></para><screen><phrase role="commit-message">Properly integrated handling for K&amp;R output into manpages
+stylesheet. The choice between K&amp;R output and ANSI output is
+currently controlled through use of the (HTML) funcsynopsis.style
+parameter. Note that because the mechanism does currently rely on
+funcsynopsis.style, the default in manpages output is now K&amp;R
+(because that's the default of that param). But I suppose I ought
+to create a man.funcsynopsis.style and make the default for that
+ANSI (to preserve the existing default behavior).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: docbook.xsl</literal></para><screen><phrase role="commit-message">added manpages/pi.xsl file</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: .cvsignore; pi.xsl</literal></para><screen><phrase role="commit-message">Added "dbman funcsynopsis-style" PI and incorporated it into the
+doc build.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">Fixed regression that caused an unescaped dash to be output
+between refname and refpurpose content. Closes bug #1894244.
+Thanks to Daniel Leidert.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: other.xsl</literal></para><screen><phrase role="commit-message">Fixed problem with dots being escaped in filenames of generated
+man files. Closes #1827195. Thanks to Daniel Leidert.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl</literal></para><screen><phrase role="commit-message">Added support for processing structfield (was appearing in roff
+output surrounded by HTML &lt;em&gt; tags; fixed so that it gets roff
+ital markup). Closes bug #1858329. Thanks to Sam Varshavchik.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Epub">
+<title>Epub</title>
+<para>The following changes have been made to the
+ <filename>epub</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem> <para><literal>Keith Fahlgren: bin/spec/README; bin/spec/epub_realbook_spec.rb</literal></para><screen><phrase role="commit-message">'Realbook' spec now passes</phrase></screen> </listitem>
+<listitem> <para><literal>Keith Fahlgren: bin/dbtoepub; README; bin/spec/README; bin/lib/docbook.rb; bin/spec/epub_r⋯</literal></para><screen><phrase role="commit-message">Very primitive Windows support for dbtoepub <tag>reference</tag> implementation; README for running tests and for the .epub target in general; shorter realbook test document (still fails for now)</phrase></screen> </listitem>
+<listitem> <para><literal>Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s⋯</literal></para><screen><phrase role="commit-message">Changes to OPF spine to not duplicate idrefs for documents with parts not at the root; regression specs for same</phrase></screen> </listitem>
+<listitem> <para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">Fixing linking to <tag>cover</tag> @id, distinct from other needs of cover-image-id (again, thanks to Martin Goerner)</phrase></screen> </listitem>
+<listitem> <para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">Updating the <tag>title</tag> of the <tag>toc</tag> element in the guide to be more explicit (thanks to Martin Goerner)</phrase></screen> </listitem>
+<listitem>
+<para><literal>Keith Fahlgren: bin/spec/examples/amasque_exploded/content.opf; bin/spec/examples/amasque_⋯</literal></para><screen><phrase role="commit-message">Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
+and Keith Fahlgren of O'Reilly.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: docbook.xsl</literal></para><screen><phrase role="commit-message">== General epub test support
+
+$ spec -O ~/.spec.opts spec/epub_spec.rb
+
+DocBook::Epub
+- should be able to be created
+- should fail on a nonexistent file
+- should be able to render to a file
+- should create a file after rendering
+- should have the correct mimetype after rendering
+- should be valid .epub after rendering an article
+- should be valid .epub after rendering an article without sections
+- should be valid .epub after rendering a book
+- should be valid .epub after rendering a book even if it has one graphic
+- should be valid .epub after rendering a book even if it has many graphics
+- should be valid .epub after rendering a book even if it has many duplicated graphics
+- should report an empty file as invalid
+- should confirm that a valid .epub file is valid
+- should not include PDFs in rendered epub files as valid image inclusions
+- should include a TOC link in rendered epub files for &lt;book&gt;s
+
+Finished in 20.608395 seconds
+
+15 examples, 0 failures
+
+
+== Verbose epub test coverage against _all_ of the testdocs
+
+Fails on only (errors truncated):
+1)
+'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/calloutlist.003.xml [30]' FAILED
+'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/cmdsynopsis.001.xml [35]' FAILED
+....
+
+Finished in 629.89194 seconds
+
+224 examples, 15 failures
+
+224 examples, 15 failures yields 6% failure rate</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Epub changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_HTMLHelp">
+<title>HTMLHelp</title>
+<para>The following changes have been made to the
+ <filename>htmlhelp</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: htmlhelp-common.xsl</literal></para><screen><phrase role="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt; to calls to
+the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+This makes chunk.quietly=1 suppress chunk filename messages also for help
+support files (which seems to be what one would expect). See bug #1648360.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTMLHelp changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Eclipse">
+<title>Eclipse</title>
+<para>The following changes have been made to the
+ <filename>eclipse</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: eclipse.xsl</literal></para><screen><phrase role="commit-message">Use sortas attributes (if they exist) when sorting indexterms</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: eclipse.xsl</literal></para><screen><phrase role="commit-message">Added support for indexterm/see in eclipse index.xml</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: eclipse.xsl</literal></para><screen><phrase role="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt;
+to helpidx template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: eclipse.xsl</literal></para><screen><phrase role="commit-message">Generate index.xml file and add related goo to plugin.xml file. Does not yet support see and seealso.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: eclipse.xsl</literal></para><screen><phrase role="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt; to calls to
+the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+This makes chunk.quietly=1 suppress chunk filename messages also for help
+support files (which seems to be what one would expect). See bug #1648360.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Eclipse changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_JavaHelp">
+<title>JavaHelp</title>
+<para>The following changes have been made to the
+ <filename>javahelp</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: javahelp.xsl</literal></para><screen><phrase role="commit-message">Added &lt;xsl:with-param name="quiet" select="$chunk.quietly"/&gt; to calls to
+the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
+This makes chunk.quietly=1 suppress chunk filename messages also for help
+support files (which seems to be what one would expect). See bug #1648360.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of JavaHelp changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Roundtrip">
+<title>Roundtrip</title>
+<para>The following changes have been made to the
+ <filename>roundtrip</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl</literal></para><screen><phrase role="commit-message">fix table/cell borders for wordml, fix formal figure, add emphasis-strong</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: supported.xml</literal></para><screen><phrase role="commit-message">Changed @cols to 5.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml</literal></para><screen><phrase role="commit-message">added pubdate, fixed metadata handling in biblioentry</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: supported.xml</literal></para><screen><phrase role="commit-message">Added support for edition.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: docbook-pages.xsl; wordml-blocks.xsl; docbook.xsl; wordml.xsl; pages-normalise⋯</literal></para><screen><phrase role="commit-message">Removed stylesheets for old, deprecated conversion method.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: specifications.xml; dbk2ooo.xsl; blocks2dbk.xsl; dbk2pages.xsl; blocks2dbk.dtd⋯</literal></para><screen><phrase role="commit-message">Added support for Open Office, added edition element, improved list and table support in Word and Pages</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: normalise-common.xsl; blocks2dbk.xsl; dbk2pages.xsl; template-pages.xml; templ⋯</literal></para><screen><phrase role="commit-message">Fixed bug in WordML table handling, improved table handling for Pages 08, synchronised WordML and Pages templates.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: normalise-common.xsl; blocks2dbk.xsl; wordml2normalise.xsl; dbk2wp.xsl</literal></para><screen><phrase role="commit-message">fix caption, attributes</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: specifications.xml; blocks2dbk.xsl; wordml2normalise.xsl; blocks2dbk.dtd; temp⋯</literal></para><screen><phrase role="commit-message">Fixes to table and list handling</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl</literal></para><screen><phrase role="commit-message">added support for explicit emphasis character styles</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: wordml2normalise.xsl</literal></para><screen><phrase role="commit-message">added support for customisation in image handling</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl</literal></para><screen><phrase role="commit-message">Added inlinemediaobject support for metadata.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: normalise-common.xsl; blocks2dbk.xsl; template.xml; dbk2wordml.xsl; dbk2wp.xsl</literal></para><screen><phrase role="commit-message">Added support file. Added style locking. Conversion bug fixes.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Roundtrip changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Slides">
+<title>Slides</title>
+<para>The following changes have been made to the
+ <filename>slides</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: fo/Makefile; html/Makefile</literal></para><screen><phrase role="commit-message">Added checks and hacks to various makefiles to enable building
+under Cygwin. This stuff is ugly and maybe not worth the mess and
+trouble, but does seem to work as expected and not break anything
+else.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: html/plain.xsl</literal></para><screen><phrase role="commit-message">Added support for showing foil number</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Slides changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Website">
+<title>Website</title>
+<para>The following changes have been made to the
+ <filename>website</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: extensions/saxon64/.classes/.gitignore; extensions/xalan2/.classes/com/⋯</literal></para><screen><phrase role="commit-message">renamed a bunch more .cvsignore files to .gitignore (to facilitate use of git-svn)</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Website changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem> <para><literal>Keith Fahlgren: epub.autolabel.xml</literal></para><screen><phrase role="commit-message">New parameter for epub, epub.autolabel</phrase></screen> </listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: table.frame.border.color.xml; table.cell.padding.xml; table.cell.border.t⋯</literal></para><screen><phrase role="commit-message">Added missing refpurposes and descriptions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Keith Fahlgren: ade.extensions.xml</literal></para><screen><phrase role="commit-message">Extensions to support Adobe Digital Editions extensions in .epub output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: fop.extensions.xml; fop1.extensions.xml</literal></para><screen><phrase role="commit-message">Clarified that fop1.extensions is for FOP 0.90 and later. Version 1 is not here yet...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.links.are.underlined.xml; man.endnotes.list.enabled.xml; man.font.l⋯</literal></para><screen><phrase role="commit-message">removed man.links.are.underlined and added man.font.links. Also,
+changed the default font formatting for links to bold.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.base.url.for.relative.links.xml</literal></para><screen><phrase role="commit-message">Added new param man.base.url.for.relative.links .. specifies a
+base URL for relative links (for ulink, @xlink:href, imagedata,
+audiodata, videodata) shown in the generated NOTES section of
+man-page output. The value of man.base.url.for.relative.links is
+prepended to any relative URI that is a value of ulink url,
+xlink:href, or fileref attribute.
+
+If you use relative URIs in link sources in your DocBook refentry
+source, and you leave man.base.url.for.relative.links unset, the
+relative links will appear "as is" in the NOTES section of any
+man-page output generated from your source. That's probably not
+what you want, because such relative links are only usable in the
+context of HTML output. So, to make the links meaningful and
+usable in the context of man-page output, set a value for
+man.base.url.for.relative.links that points
+to the online version of HTML output generated from your DocBook
+refentry source. For example:
+
+ &lt;xsl:param name="man.base.url.for.relative.links"
+ &gt;http://www.kernel.org/pub/software/scm/git/docs/&lt;/xsl:param&gt;</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.string.subst.map.xml</literal></para><screen><phrase role="commit-message">squeeze .sp\n.sp into a single .sp (to prevent a extra, spurious
+line of whitespace from being inserted after programlisting etc.
+in certain cases)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.manual.fallback.profile.xml; refentry.source.fallback.profile.⋯</literal></para><screen><phrase role="commit-message">don't use refmiscinfo@class=date value as fallback for refentry
+"source" or "manual" metadata fields</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su⋯</literal></para><screen><phrase role="commit-message">made some further doc tweaks related to the
+man.charmap.subset.profile.english param</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su⋯</literal></para><screen><phrase role="commit-message">Added the man.charmap.subset.profile.english parameter and refined
+the handling of charmap subsets to differentiate between English
+and non-English source.
+
+This way charmap subsets are now handled is this:
+
+If the value of the man.charmap.use.subset parameter is non-zero,
+and your DocBook source is not written in English (that is, if its
+lang or xml:lang attribute has a value other than en), then the
+character-map subset specified by the man.charmap.subset.profile
+parameter is used instead of the full roff character map.
+
+Otherwise, if the lang or xml:lang attribute on the root element
+in your DocBook source or on the first refentry element in your
+source has the value en or if it has no lang or xml:lang
+attribute, then the character-map subset specified by the
+man.charmap.subset.profile.english parameter is used instead of
+man.charmap.subset.profile.
+
+The difference between the two subsets is that
+man.charmap.subset.profile provides mappings for characters in
+Western European languages that are not part of the Roman
+(English) alphabet (ASCII character set).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.charmap.subset.profile.xml</literal></para><screen><phrase role="commit-message">Added to default charmap used by manpages:
+
+ - the "letters" part of the 'C1 Controls And Latin-1 Supplement
+ (Latin-1 Supplement)' Unicode block
+ - Latin Extended-A block (but not all of the characters from
+ that block have mappings in groff, so some of them are still
+ passed through as-is)
+
+The effects of this change are that in man pages generated for
+most Western European languages and for Finnish, all characters
+not part of the Roman alphabet are (e.g., "accented" characters)
+are converted to groff escapes.
+
+Previously, by default we passed through those characters as is
+(and users needed to use the full charmap if they wanted to have
+those characters converted).
+
+As a result of this change, man pages generated for Western
+European languages will be viewable in some environments in which
+they are not viewable if the "raw" non-Roman characters are in them.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: generate.legalnotice.link.xml; generate.revhistory.link.xml</literal></para><screen><phrase role="commit-message">Added information on how the filename is computed.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: default.table.width.xml</literal></para><screen><phrase role="commit-message">Clarified PI usage.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.funcsynopsis.style.xml</literal></para><screen><phrase role="commit-message">Added the man.funcsynopsis.style parameter. Has the same effect in
+manpages output as the funcsynopsis.style parameter has in HTML
+output -- except that its default value is 'ansi' instead of 'kr'.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: funcsynopsis.tabular.threshold.xml</literal></para><screen><phrase role="commit-message">Removed the funcsynopsis.tabular.threshold param. It's no longer
+being used in the code and hasn't been since mid 2006.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: table.properties.xml</literal></para><screen><phrase role="commit-message">Set keep-together.within-column to "auto". This seems to be the most sensible
+default value for tables.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: informal.object.properties.xml; admon.graphics.extension.xml; informalequ⋯</literal></para><screen><phrase role="commit-message">Several small documentation fixes.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: manifest.in.base.dir.xml</literal></para><screen><phrase role="commit-message">Wording fixes.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: header.content.properties.xml; footer.content.properties.xml</literal></para><screen><phrase role="commit-message">Added refpurpose.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: ulink.footnotes.xml; ulink.show.xml</literal></para><screen><phrase role="commit-message">Updated for DocBook 5.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: index.method.xml; glossterm.auto.link.xml</literal></para><screen><phrase role="commit-message">Spelling and wording fixes.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: callout.graphics.extension.xml</literal></para><screen><phrase role="commit-message">Clarifed available graphics formats and extensions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: footnote.sep.leader.properties.xml</literal></para><screen><phrase role="commit-message">Corrected refpurpose.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: footnote.properties.xml</literal></para><screen><phrase role="commit-message">Added more properties which make it possible to render correctly footnotes placed inside verbatim elements.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: img.src.path.xml</literal></para><screen><phrase role="commit-message">img.src.path works with inlinegraphic too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: saxon.character.representation.xml</literal></para><screen><phrase role="commit-message">Added TCG link.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: img.src.path.xml</literal></para><screen><phrase role="commit-message">Updated description of img.src.path. Bug #1785224 revealed that
+there was a risk of misunderstanding how it works.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Profiling">
+<title>Profiling</title>
+<para>The following changes have been made to the
+ <filename>profiling</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: xsl2profile.xsl</literal></para><screen><phrase role="commit-message">Added new rules to profile all content generated by HTML Help (including alias files)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: profile-mode.xsl</literal></para><screen><phrase role="commit-message">use mode="profile" instead of xsl:copy-of for attributes so
+they can be more easily customized.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Profiling changes for 1.74.0-->
+
+
+<sect2 xml:id="V1.74.0_Tools">
+<title>Tools</title>
+<para>The following changes have been made to the
+ <filename>tools</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: make/Makefile.DocBook</literal></para><screen><phrase role="commit-message">various changes and additions to support making with asciidoc as
+an input format</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: make/Makefile.DocBook</literal></para><screen><phrase role="commit-message">make dblatex the default PDF maker for the example makefile</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: xsl/build/html2roff.xsl</literal></para><screen><phrase role="commit-message">Reworked handling of K&amp;R funcprototype output. It no longer relies
+on the HTML kr-tabular templates, but instead just does direct
+transformation to roff. For K&amp;R output, it displays the paramdef
+output in an indented list following the prototype.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: xsl/build/make-xsl-params.xsl</literal></para><screen><phrase role="commit-message">Made attribute-sets members of the param list. This enables links to attribute-sets in the
+reference documentation.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: xsl/build/html2roff.xsl</literal></para><screen><phrase role="commit-message">use .BI handling in K&amp;R funsynopsis output for manpages, just as
+we do already of ANSI output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: xsl/build/html2roff.xsl</literal></para><screen><phrase role="commit-message">Implemented initial support for handling tabular K&amp;R output of
+funcprototype in manpages output. Accomplished by adding more
+templates to the intermediate HTML-to-roff stylesheet that the
+build uses to create the manpages/html-synop.xsl stylesheet.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: xsl/build/doc-link-docbook.xsl</literal></para><screen><phrase role="commit-message">Made the xsl/tools/xsl/build/doc-link-docbook.xsl stylesheet
+import profile-docbook.xsl, so that we can do profiling of release
+notes. Corrected some problems in the target for the release-notes
+HTML build.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Tools changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_Extensions">
+<title>Extensions</title>
+<para>The following changes have been made to the
+ <filename>extensions</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem> <para><literal>Keith Fahlgren: Makefile</literal></para><screen><phrase role="commit-message">Use DOCBOOK_SVN variable everywhere, please; build with PDF_MAKER</phrase></screen> </listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile</literal></para><screen><phrase role="commit-message">moved extensions build targets from master xsl/Makefile to
+xsl/extensions/Makefile</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: .cvsignore</literal></para><screen><phrase role="commit-message">re-adding empty extensions subdir</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Extensions changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_XSL-Saxon">
+<title>XSL-Saxon</title>
+<para>The following changes have been made to the
+ <filename>xsl-saxon</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: VERSION</literal></para><screen><phrase role="commit-message">bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
+recent change to snapshot build infrastructure</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: nbproject/build-impl.xml; nbproject/project.properties</literal></para><screen><phrase role="commit-message">Changed hard-coded file references in "clean" target to variable
+references. Closes #1792043. Thanks to Daniel Leidert.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: VERSION; Makefile</literal></para><screen><phrase role="commit-message">Did post-release wrap-up of xsl-saxon and xsl-xalan dirs</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: nbproject/build-impl.xml; VERSION; Makefile; test</literal></para><screen><phrase role="commit-message">More tweaks to get release-ready</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Saxon changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_XSL-Xalan">
+<title>XSL-Xalan</title>
+<para>The following changes have been made to the
+ <filename>xsl-xalan</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: VERSION</literal></para><screen><phrase role="commit-message">bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
+recent change to snapshot build infrastructure</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: nbproject/build-impl.xml</literal></para><screen><phrase role="commit-message">Changed hard-coded file references in "clean" target to variable
+references. Closes #1792043. Thanks to Daniel Leidert.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile; VERSION</literal></para><screen><phrase role="commit-message">Did post-release wrap-up of xsl-saxon and xsl-xalan dirs</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile; nbproject/build-impl.xml; VERSION</literal></para><screen><phrase role="commit-message">More tweaks to get release-ready</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Xalan changes for 1.74.0-->
+
+<sect2 xml:id="V1.74.0_XSL-libxslt">
+<title>XSL-libxslt</title>
+<para>The following changes have been made to the
+ <filename>xsl-libxslt</filename> code
+ since the 1.73.2 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: python/xslt.py</literal></para><screen><phrase role="commit-message">Print the result to stdout if no outfile has been given.
+Some unnecessary semicolons removed.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: python/xslt.py</literal></para><screen><phrase role="commit-message">Added a function that quotes parameter values (to ensure that they are interpreted as strings).
+Replaced deprecated functions from the string module with string methods.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: python/README; python/README.LIBXSLT</literal></para><screen><phrase role="commit-message">renamed xsl-libxslt/python/README to xsl-libxslt/python/README.LIBXSLT</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: python/README</literal></para><screen><phrase role="commit-message">Tweaked the text a little.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-libxslt changes for 1.74.0-->
+
+</sect1>
+
+<sect1 xml:id="V1.73.2">
+<title>Release Notes: 1.73.2</title>
+<para>This is solely a minor bug-fix update to the 1.73.1 release.
+ It fixes a packaging error in the 1.73.1 package, as well as a
+ bug in footnote handling in FO output.</para>
+</sect1>
+
+<sect1 xml:id="V1.73.1">
+<title>Release: 1.73.1</title>
+<para>This is mostly a bug-fix update to the 1.73.0 release.</para>
+
+<sect2 xml:id="V1.73.1_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the
+ <filename>gentext</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: locale/de.xml</literal></para><screen><phrase role="commit-message">Applied patch #1766009.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/lv.xml</literal></para><screen><phrase role="commit-message">Added localization for <tag>ProductionSet</tag>.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: table.xsl</literal></para><screen><phrase role="commit-message">Modified the <tag>tgroup</tag> template so that, for tables with multiple tgroups,
+a width attribute is output on all corresponding fo:tables. Previously,
+there was a test prohibiting this (and a comment saying that outputting more
+than one width attribute will cause an error). But this seems to be no longer
+relevant; it is not a problem with FOP 0.93 or XEP 4.10. Closes bug #1760559.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: graphics.xsl</literal></para><screen><phrase role="commit-message">Replaced useless &lt;a&gt; elements with warning messages (textinsert extension).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: admon.xsl</literal></para><screen><phrase role="commit-message">Enabled generation of ids (on fo:wrapper) for indexterms in admonition titles, so that page
+references in the <tag>index</tag> can be created. Closes bug #1775086.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl</literal></para><screen><phrase role="commit-message">Added &lt;xsl:call-template name="process.footnotes"/&gt; to <tag>abstract</tag> template
+so that footnotes in <tag>info</tag>/<tag>abstract</tag> are processed. Closes bug #1760907.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: pi.xsl; synop.xsl</literal></para><screen><phrase role="commit-message">Changed handling of HTML output for the <tag>cmdsynopsis</tag> and
+<tag>funcsynopsis</tag> elements, such that a@id instances are generated for
+them if they are descendants of any element containing a dbcmdlist
+or dbfunclist PI. Also, update the embedded <tag>reference</tag> docs for the
+dbcmdlist and dbfunclist PIs to make it clear that they can be
+used within any element for which <tag>cmdsynopsis</tag> or <tag>funcsynopsis</tag> are
+valid children.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: formal.xsl</literal></para><screen><phrase role="commit-message">Reverted the part of <tag>revision</tag> 6952 that caused a@id anchors to be
+generated for output of informal objects. Thanks to Sam Steingold
+for reporting.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossary.xsl</literal></para><screen><phrase role="commit-message">Account for a <tag>glossary</tag> with no <tag>glossdiv</tag> or <tag>glossentry</tag> children.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl</literal></para><screen><phrase role="commit-message">Modified <tag>legalnotice</tag> template so that the base.name parameter is calculated
+in the same way as for <tag>revhistory</tag> chunks. Using &lt;xsl:apply-templates
+mode="chunk-filename" select="."/&gt; did not work for single-page output since
+the template with that mode is in chunk-code.xsl.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: graphics.xsl</literal></para><screen><phrase role="commit-message">Updated support for SVG (must be a child of <tag>imagedata</tag> in DB 5).
+Added support for MathML in <tag>imagedata</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Added documentation for the dbhh PI (used for context-sensitive HTML Help).
+(The two templates matching 'dbhh' are still in htmlhelp-common.xsl).</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: endnotes.xsl</literal></para><screen><phrase role="commit-message">In manpages output, generate warnings about notesources with
+non-para children only if the notesource is a <tag>footnote</tag> or
+<tag>annotation</tag>. Thanks to Sam Steingold for reporting problems with
+the existing handling.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_HTMLHelp">
+<title>HTMLHelp</title>
+<para>The following changes have been made to the
+ <filename>htmlhelp</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: htmlhelp-common.xsl</literal></para><screen><phrase role="commit-message">Added single-pass namespace-stripping support to the htmlhelp,
+eclipse, and javahelp stylesheets.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTMLHelp changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_Eclipse">
+<title>Eclipse</title>
+<para>The following changes have been made to the
+ <filename>eclipse</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: eclipse.xsl</literal></para><screen><phrase role="commit-message">Added single-pass namespace-stripping support to the htmlhelp,
+eclipse, and javahelp stylesheets.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Eclipse changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_JavaHelp">
+<title>JavaHelp</title>
+<para>The following changes have been made to the
+ <filename>javahelp</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: javahelp.xsl</literal></para><screen><phrase role="commit-message">Added single-pass namespace-stripping support to the htmlhelp,
+eclipse, and javahelp stylesheets.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of JavaHelp changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_Roundtrip">
+<title>Roundtrip</title>
+<para>The following changes have been made to the
+ <filename>roundtrip</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; pages2normalise.xsl</literal></para><screen><phrase role="commit-message">Modularised blocks2dbk to allow customisation,
+Added support for tables to pages2normalise</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Roundtrip changes for 1.73.1-->
+
+<sect2 xml:id="V1.73.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.73.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: procedure.properties.xml</literal></para><screen><phrase role="commit-message"><tag>procedure</tag> was inheriting keep-together from formal.object.properties, but
+a <tag>procedure</tag> does not need to be kept together by default.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Dave Pawson: title.font.family.xml; component.label.includes.part.label.xml; table.frame.b⋯</literal></para><screen><phrase role="commit-message">Regular formatting re-org.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.73.1-->
+</sect1>
+
+<sect1 xml:id="V1.73.0">
+<title>Release: 1.73.0</title>
+<para>This release includes important bug fixes and adds the following
+significant feature changes:
+<variablelist>
+ <varlistentry>
+ <term>New localizations and localization updates</term>
+ <listitem>
+ <para>We added two new localizations: Latvian and
+ Esperanto, and made updates to the Czech, Chinese
+ Simplified, Mongolian, Serbian, Italian, and Ukrainian
+ localizations.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ISO690 citation style for bibliography output.</term>
+ <listitem>
+ <para>Set the
+ <parameter>bibliography.style</parameter> parameter to
+ <literal>iso690</literal> to use ISO690 style.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New documentation for processing instructions (PI)</term>
+ <listitem>
+ <para>The reference documentation that ships with the
+ release now includes <link
+ xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/pi/"
+ >documentation on all PIs</link> that you can use to
+ control output from the stylesheets.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New profiling parameters for <literal>audience</literal> and <literal>wordsize</literal></term>
+ <listitem>
+ <para>You can now do profiling based on the values of the
+ <literal>audience</literal> and
+ <literal>wordsize</literal> attributes.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Changes to man-page output</term>
+ <listitem>
+ <para>The manpages stylesheet now supports single-pass
+ profiling and single-pass DocBook 5 namespace stripping
+ (just as the HTML and FO stylesheets also do). Also, added
+ handling for <tag>mediaobject</tag> &amp;
+ <tag>inlinemediaobject</tag>. (Each <tag>imagedata</tag>,
+ <tag>audiodata</tag>, or <tag>videodata</tag> element
+ within a <tag>mediaobject</tag> or inline
+ <tag>mediaobject</tag> is now treated as a "notesource"
+ and so handled in much the same way as links and
+ <tag>annotation</tag>/<tag>alt</tag>/<tag>footnote</tag>
+ are in manpages output.) And added the
+ <parameter>man.authors.section.enabled</parameter> and
+ <parameter>man.copyright.section.enabled</parameter>
+ parameters to enable control over whether output includes
+ auto-generated <literal>AUTHORS</literal> and
+ <literal>COPYRIGHT</literal> sections.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Highlighting support for C</term>
+ <listitem>
+ <para>The highlighting mechanism for generating
+ syntax-highlighted code snippets in output now supports C
+ code listings (along with Java, PHP, XSLT, and others).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Experimental <literal>docbook-xsl-update script</literal></term>
+ <listitem>
+ <para>We added an experimental <literal>docbook-xsl-update
+ script</literal>, the purpose of which is to facilitate
+ easy sync-up to the latest docbook-xsl snapshot (by means
+ of rsync).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+<sect2 xml:id="V1.73.0_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the
+<filename>gentext</filename> code
+since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/lv.xml; Makefile</literal></para><screen><phrase role="commit-message">Added Latvian localization file, from Girts Ziemelis.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Dongsheng Song: locale/zh_cn.xml</literal></para><screen><phrase role="commit-message">Brought up to <tag>date</tag> with en.xml in terms of items. A few strings marked for translation.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: locale/cs.xml</literal></para><screen><phrase role="commit-message">Added missing translations</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/eo.xml</literal></para><screen><phrase role="commit-message">New locale for Esperanto.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/mn.xml</literal></para><screen><phrase role="commit-message">Update from Ganbold Tsagaankhuu.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: locale/en.xml; locale/cs.xml</literal></para><screen><phrase role="commit-message">Rules for normalizing <tag>glossary</tag> entries before they are sorted can be now different for each language.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: locale/sr_Latn.xml; locale/sr.xml</literal></para><screen><phrase role="commit-message">Committed changes from MiloÅ¡ KomarÄević to Serbian files.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/ja.xml</literal></para><screen><phrase role="commit-message">Fix <tag>chapter</tag> in context xref-number-and-title</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/it.xml</literal></para><screen><phrase role="commit-message">Improved version from contributor.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: locale/uk.xml</literal></para><screen><phrase role="commit-message">Applied patch 1592083.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+<filename>common</filename> code
+since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: labels.xsl</literal></para><screen><phrase role="commit-message">Changed handling of <tag>reference</tag> auto-labeling such that <tag>reference</tag>
+(when it appears at the component level) is now affected by the
+<parameter>label.from.part</parameter> param, just as <tag>preface</tag>, <tag>chapter</tag>, and <tag>appendix</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: common.xsl</literal></para><screen><phrase role="commit-message">Added support to the HTML stylesheets for proper processing of
+<tag>orgname</tag> as a child of <tag>author</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: refentry.xsl</literal></para><screen><phrase role="commit-message">Refined logging output of <tag>refentry</tag> metadata-gathering template;
+for some cases of "missing" elements (<tag>refmiscinfo</tag> stuff, etc.),
+the log messages now include URL to corresponding page in the
+Definitive Guide (TDG).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Add <tag>refsection</tag>/<tag>info</tag>/<tag>title</tag> support.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: titles.xsl</literal></para><screen><phrase role="commit-message">Added support for correct handling of <tag>xref</tag> to elements that
+contain <tag>info</tag>/<tag>title</tag> descendants but no <tag>title</tag> children.
+
+This should be further refined so that it handles any *<tag>info</tag>
+elements. And there are probably some other places where similar
+handling for *<tag>info</tag>/<tag>title</tag> should be added.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: pi.xsl</literal></para><screen><phrase role="commit-message">Modified &lt;xsl:when&gt; in datetime.format template to work
+around Xalan bug.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+<filename>fo</filename> code
+since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: component.xsl</literal></para><screen><phrase role="commit-message">Add parameters to the page.sequence utility template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: xref.xsl</literal></para><screen><phrase role="commit-message">Added template for <tag>xref</tag> to <tag>area</tag>/<tag>areaset</tag>.
+Part of fix for bug #1675513 (<tag>xref</tag> to <tag>area</tag> broken).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: inline.xsl</literal></para><screen><phrase role="commit-message">Added template match for <tag>person</tag> element to fo stylesheet.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Added support for spacing="compact" in <tag>variablelist</tag>, per bug report #1722540.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message"><tag>table</tag> pgwide="1" should also use pgwide.properties attribute-set.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Make citations numbered if <parameter>bibliography.numbered</parameter> != 0.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add new profiling parameters for audience and wordsize.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Added <parameter>callout.icon.size</parameter> parameter.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Add support for xlink as <tag>olink</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autotoc.xsl; param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add support for <parameter>qanda.in.toc</parameter> to fo <tag>TOC</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: component.xsl</literal></para><screen><phrase role="commit-message">Improved the page.sequence utility template for use with <tag>book</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: division.xsl</literal></para><screen><phrase role="commit-message">Refactored the big <tag>book</tag> template into smaller pieces.
+Used the "page.sequence" utility template in
+component.xsl to shorten the <tag>toc</tag> piece.
+Added placeholder templates for front.cover and back.cover.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; sections.xsl</literal></para><screen><phrase role="commit-message">Add <parameter>section.container.element</parameter> parameter to enable
+pgwide spans inside sections.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; component.xsl</literal></para><screen><phrase role="commit-message">Add component.titlepage.properties attribute-set to
+support span="all" and other properties.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: htmltbl.xsl; table.xsl</literal></para><screen><phrase role="commit-message">Apply table.row.properties template to html <tag>tr</tag> rows too.
+Add keep-with-next to table.row.properties when <tag>row</tag> is in <tag>thead</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Add support for <parameter>default.table.frame</parameter> parameter.
+Fix bug 1575446 rowsep last check for @morerows.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: refentry.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>info</tag>/<tag>title</tag> in refsections.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: qandaset.xsl</literal></para><screen><phrase role="commit-message">Make fo questions and answers behave the same way as html</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: lists.xsl</literal></para><screen><phrase role="commit-message">Added missing attribute set for <tag>procedure</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xsl</literal></para><screen><phrase role="commit-message">Added support for formatting biblioentries according to ISO690 <tag>citation</tag> style.
+New <tag>bibliography</tag> style can be turned on by setting parameter <parameter>bibliography.style</parameter> to "iso690"
+The code was provided by Jana Dvorakova</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Add header.table.properties and footer.table.properties attribute-sets.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Add <parameter>fop1.extensions</parameter> for <tag>menuchoice</tag> arrow handling exception.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Moved declaration and documentation of <parameter>javahelp.encoding</parameter> from javahelp.xsl to the
+regular "parameter machinery".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: admon.xsl</literal></para><screen><phrase role="commit-message">Changed handling of titles for note, warning, <tag>caution</tag>, <tag>important</tag>,
+<tag>tip</tag> admonitions: We now output and HTML h3 head only if
+<parameter>admon.textlabel</parameter> is non-zero or if the admonition actually contains
+a <tag>title</tag>; otherwise, we don't output an h3 head at all.
+(Previously, we were outputting an empty h3 if the <parameter>admon.textlabel</parameter>
+was zero and if the admonition had no title.)</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: xref.xsl</literal></para><screen><phrase role="commit-message">Added template for <tag>xref</tag> to <tag>area</tag>/<tag>areaset</tag>.
+Part of fix for bug #1675513 (<tag>xref</tag> to <tag>area</tag> broken).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; sections.xsl</literal></para><screen><phrase role="commit-message">Added fixes to avoid duplicate ids when <parameter>generate.id.attributes</parameter> = 1.
+This (hopefully) closes bug #1671052.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: formal.xsl; pi.xsl</literal></para><screen><phrase role="commit-message">Made the dbfunclist PI work as intended. Also added doc for
+dbfunclist and dbcmdlist PIs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: pi.xsl; synop.xsl</literal></para><screen><phrase role="commit-message">Made the dbcmdlist work the way it appears to have been intended
+to work. Restored dbhtml-dir template back to pi.xsl.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: titlepage.xsl; param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Added new param <parameter>abstract.notitle.enabled</parameter>.
+If non-zero, in output of the <tag>abstract</tag> element on titlepages,
+display of the <tag>abstract</tag> <tag>title</tag> is suppressed.
+Because sometimes you really don't want or need that <tag>title</tag>
+there...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: chunk-code.xsl; graphics.xsl</literal></para><screen><phrase role="commit-message">When we are chunking long descriptions for <tag>mediaobject</tag> instances
+into separate HTML output files, and <parameter>use.id.as.filename</parameter> is
+non-zero, if a <tag>mediaobject</tag> has an ID, use that ID as the basename
+for the long-description file (otherwise, we generate an ID for it
+and use that ID as the basename for the file).
+The parallels the recent change made to cause IDs for <tag>legalnotice</tag>
+instances to be used as basenames for <tag>legalnotice</tag> chunks.
+Also, made some minor refinements to the recent changes for
+<tag>legalnotice</tag> chunk handling.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: titlepage.xsl</literal></para><screen><phrase role="commit-message">Added support to the HTML stylesheets for proper processing of
+<tag>orgname</tag> as a child of <tag>author</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: chunk-code.xsl</literal></para><screen><phrase role="commit-message">When $generate.legalnotice.link is non-zero and
+$use.id.as.filename is also non-zero, if a <tag>legalnotice</tag> has an ID,
+then instead of assigning the "ln-&lt;generatedID&gt;" basename to the
+output file for that <tag>legalnotice</tag>, just use its real ID as the
+basename for the file -- as we do when chunking other elements
+that have IDs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xref.xsl</literal></para><screen><phrase role="commit-message">Handle <tag>alt</tag> text on xrefs to steps when the step doesn't have a <tag>title</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: lists.xsl</literal></para><screen><phrase role="commit-message">Added &lt;p&gt; element around <tag>term</tag> in <tag>variablelist</tag> when formatted as <tag>table</tag> to avoid misalignment of <tag>term</tag> and <tag>listitem</tag> in xhtml (non-quirks mode) output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: qandaset.xsl</literal></para><screen><phrase role="commit-message">Added &lt;p&gt; element around <tag>question</tag> and <tag>answer</tag> labels to avoid misalignment of <tag>label</tag> and <tag>listitem</tag> in xhtml (non-quirks mode) output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: lists.xsl</literal></para><screen><phrase role="commit-message">Added &lt;p&gt; element around callouts to avoid misalignment of <tag>callout</tag> and <tag>listitem</tag> in xhtml (non-quirks mode) output</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: inline.xsl</literal></para><screen><phrase role="commit-message">Make citations numbered if <parameter>bibliography.numbered</parameter> != 0.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add support for new profiling attributes audience and wordsize.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Add support for xlink olinks.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: glossary.xsl</literal></para><screen><phrase role="commit-message">Rules for normalizing <tag>glossary</tag> entries before they are sorted can be now different for each language.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunk-common.xsl; chunk-code.xsl; manifest.xsl; chunk.xsl</literal></para><screen><phrase role="commit-message">Refactored the chunking modules to move all named templates to
+chunk-common.xsl and all match templates to chunk-code.xsl, in
+order to enable better chunk customization.
+See the comments in chunk.xsl for more details.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Add <tag>anchor</tag> for xml:id for <tag>listitem</tag> in <tag>varlistentry</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: refentry.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>info</tag>/<tag>title</tag> in refsections for db5.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xsl</literal></para><screen><phrase role="commit-message">Added support for formatting biblioentries according to ISO690 <tag>citation</tag> style.
+New <tag>bibliography</tag> style can be turned on by setting parameter <parameter>bibliography.style</parameter> to "iso690"
+The code was provided by Jana Dvorakova</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Add call to class.attribute to &lt;a&gt; output elements so they can
+have a class value too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: glossary.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #1644881:
+* Added curly braces around all $language attribute values.
+* Moved declaration of language variable to top level of stylesheet.
+Tested with Xalan, Saxon, and xsltproc.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: param.xweb; docbook.xsl; param.ent</literal></para><screen><phrase role="commit-message">Added the <parameter>man.authors.section.enabled</parameter> and
+<parameter>man.copyright.section.enabled</parameter> parameters. Set those to zero when
+you want to suppress display of the auto-generated AUTHORS and
+<tag>COPYRIGHT</tag> sections. Closes request #1467806. Thanks to Daniel
+Leidert.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: docbook.xsl</literal></para><screen><phrase role="commit-message">Took the test that the manpages stylesheet does to see if there
+are any <tag>Refentry</tag> chilren in current doc, and made it
+namespace-agnostic. Reason for that is because the test otherwise
+won't work when it is copied over into the generated
+profile-docbook.xsl stylesheet.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile</literal></para><screen><phrase role="commit-message">Added a manpages/profile-docbook.xsl file to enable single-pass
+profiling for manpages output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: info.xsl</literal></para><screen><phrase role="commit-message">Output <tag>copyright</tag> and <tag>legalnotice</tag> in man-page output in whatever
+place they are in in document order. Closes #1690539. Thanks to
+Daniel Leidert for reporting.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: docbook.xsl</literal></para><screen><phrase role="commit-message">Restored support for single-pass namespace stripping to manpages
+stylesheet.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: synop.xsl; block.xsl; info.xsl; inline.xsl; lists.xsl; endnotes.xsl; ut⋯</literal></para><screen><phrase role="commit-message">Changed handling of bold and italic/underline output in manpages
+output. Should be transparent to users, but...
+
+This touches handling of all bold and italic/underline output. The
+exact change is that the mode="bold" and mode="italic" utility
+templates were changed to named templates. (I think maybe I've
+changed it back and forth from mode to named before, so this is
+maybe re-reverting it yet again).
+
+Anyway, the reason for the change is that the templates are
+sometimes call on dynamically node-sets, and using modes to format
+those doesn't allow passing <tag>info</tag> about the current/real context
+node from the source (not the node-set created by the stylesheet)
+to that formatting stage.
+
+The named templates allow the context to be passed in as a
+parameter, so that the bold/ital formatting template can use
+context-aware condition checking.
+
+This was basically necessary in order to suppress bold formatting
+in titles, which otherwise gets screwed up because of the numbnut
+way that roff handles nested bold/ital.
+
+Closes #1674534). Much thanks to Daniel Leidert, whose in his
+docbook-xsl bug-finding kung-fu has achieved Grand Master status.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl</literal></para><screen><phrase role="commit-message">Fixed handling of example instances by adding the example element
+to the same template we use for processing <tag>figure</tag>. Closes
+#1674538. Thanks to Daniel Leidert.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">Don't include lang in manpages <tag>filename</tag>/pathname if lang=en (that
+is, only generate lang-qualified file-/pathnames for non-English).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: endnotes.xsl</literal></para><screen><phrase role="commit-message">In manpages output, emit warnings for notesources (<tag>footnote</tag>, etc.)
+that have something other than <tag>para</tag> as a child.
+
+The numbered-with-hanging-indent formatting that's used for
+rendering endnotes in the NOTES <tag>section</tag> of man pages places some
+limits/assumptions on how the DocBook source is marked up; namely,
+for notesources (<tag>footnote</tag>, <tag>annotation</tag>, etc.) that can contain
+block-level children, if the they have a block-level child such as
+a <tag>table</tag> or <tag>itemizedlist</tag> or <tag>orderedlist</tag> that is the first child of
+a <tag>footnote</tag>, we have no way of rendering/indenting its content
+properly in the endnotes list.
+
+Thus, the manpages stylesheet not emits a warning message for that
+case, and suggests the "fix" (which is to wrap the <tag>table</tag> or
+<tag>itemizedlist</tag> or whatever in a <tag>para</tag> that has some preferatory text.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: utility.xsl</literal></para><screen><phrase role="commit-message">Added support to mixed-block template for handling tables in
+mixed-blocks (e.g., as child of <tag>para</tag>) correctly.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: table.xsl; synop.xsl; block.xsl; info.xsl; lists.xsl; refentry.xsl; end⋯</literal></para><screen><phrase role="commit-message">Reverted necessary escaping of backslash, dot, and dash
+out of the well-intentioned (but it now appears,
+misguided) "marker" mechanism (introduced in the 1.72.0
+release) -- which made use of alternative "marker"
+characters as internal representations of those
+characters, and then replaced them just prior to
+serialization -- and back into what's basically the
+system that was used prior to the 1.69.0 release; that
+is, into a part of stylesheet code that gets executed
+at the beginning of processing -- before any other roff
+markup up is. This change obviates the need for the
+marker system. It also requires a lot less RAM during
+processing (for large files, the marker mechanism
+ending up requiring gigabytes of memory).
+
+Closes bug #1661177. Thanks to Scott Smedley for
+providing a test case (the fvwm man page) that exposed
+the problem with the marker mechanism.
+
+Also moved the mechanism for converting non-breaking
+spaces back into the same <tag>area</tag> of the stylesheet code.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Fixed problem with incorrect formatting of nested <tag>variablelist</tag>.
+Closes bug #1650931. Thanks to Daniel "Eagle Eye" Leidert.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: lists.xsl</literal></para><screen><phrase role="commit-message">Make sure that all listitems in <tag>itemizedlist</tag> and <tag>orderedlist</tag> are
+preceded by a blank line. This fixes a regression that occurred
+when instances of the TP macro that were use in a previous
+versions of the list-handling code were switched to RS/RE (because
+TP doesn't support nesting). TP automatically generates a blank
+line, but RS doesn't. So I added a .sp before each .RS</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: block.xsl; inline.xsl; param.xweb; docbook.xsl; links.xsl; param.ent</literal></para><screen><phrase role="commit-message">Made a number of changes related to elements with
+out-of-line content:
+
+- Added handling for <tag>mediaobject</tag> &amp; <tag>inlinemediaobject</tag>.
+ Each <tag>imagedata</tag>, <tag>audiodata</tag>, or <tag>videodata</tag> element
+ within a <tag>mediaobject</tag> or inline <tag>mediaobject</tag> is now
+ treated as a "notesource" and so handled in much the
+ same way as links and <tag>annotation</tag>/<tag>alt</tag>/footnotes.
+
+ That means a numbered marker is generated inline to
+ mark the place in the main flow where the <tag>imagedata</tag>,
+ <tag>audiodata</tag>, or <tag>videodata</tag> element occurs, and a
+ corresponding numbered endnote for it is generated in
+ the endnotes list at the end of the man page; the
+ endnote contains the URL from the fileref attribute
+ of the <tag>imagedata</tag>, <tag>audiodata</tag>, or <tag>videodata</tag> element.
+
+ For mediobject and <tag>inlinemediaobject</tag> instances that
+ have a <tag>textobject</tag> child, the <tag>textobject</tag> is displayed
+ within the main text flow.
+
+- Renamed several man.link.* params to man.endnotes.*,
+ to reflect that fact that the endnotes list now
+ contains more than just links. Also did similar
+ renaming for a number of stylesheet-internal vars.
+
+- Added support for xlink:href (along with existing
+ support for the legacy ulink element).
+
+- Cleaned up and streamlined the endnotes-handling
+ code. It's still messy and klunky and the basic
+ mechanism it uses is very inefficent for documents
+ that contain a lot of notesources, but at least it's
+ a bit better than it was.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Eclipse">
+<title>Eclipse</title>
+<para>The following changes have been made to the
+ <filename>eclipse</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: Makefile</literal></para><screen><phrase role="commit-message">Fixed bug #1715093: Makefile for creating profiled version of eclipse.xsl added.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: eclipse.xsl</literal></para><screen><phrase role="commit-message">Added normalize-space around to avoid leading whitespace from appearing in the output if there's extra leading whitespace (e.g. &lt;<tag>title</tag>&gt; Foo&lt;/<tag>title</tag>&gt;) in the source</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Eclipse changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_JavaHelp">
+<title>JavaHelp</title>
+<para>The following changes have been made to the
+ <filename>javahelp</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: javahelp.xsl</literal></para><screen><phrase role="commit-message">Implemented FR #1230233 (sorted <tag>index</tag> in javahelp).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: javahelp.xsl</literal></para><screen><phrase role="commit-message">Added normalize-space() around titles and <tag>index</tag> entries to work around whitespace problems.
+Added support for <tag>glossary</tag> and <tag>bibliography</tag> in <tag>toc</tag> and map files.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of JavaHelp changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Roundtrip">
+<title>Roundtrip</title>
+<para>The following changes have been made to the
+ <filename>roundtrip</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl; normalise2sections.xsl; sections2blocks.⋯</literal></para><screen><phrase role="commit-message">new stylesheets for better word processor support and easier maintenance</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Steve Ball: template-pages.xml; dbk2wp.xsl; sections-spec.xml</literal></para><screen><phrase role="commit-message">fixed bugs</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Roundtrip changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: htmlhelp.button.back.xml; htmlhelp.button.forward.xml; htmlhelp.button.zo⋯</literal></para><screen><phrase role="commit-message">Modified <tag>refpurpose</tag> text.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: htmlhelp.map.file.xml; htmlhelp.force.map.and.alias.xml; htmlhelp.alias.f⋯</literal></para><screen><phrase role="commit-message">Fixed typos, made some small changes.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: javahelp.encoding.xml</literal></para><screen><phrase role="commit-message">Moved declaration and documentation of <parameter>javahelp.encoding</parameter> from javahelp.xsl to the
+regular "parameter machinery".</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: generate.id.attributes.xml</literal></para><screen><phrase role="commit-message">Added <tag>refpurpose</tag> text.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: annotation.js.xml; annotation.graphic.open.xml; annotation.graphic.close.⋯</literal></para><screen><phrase role="commit-message">Added better <tag>refpurpose</tag> texts.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: chunker.output.cdata-section-elements.xml; chunker.output.standalone.xm⋯</literal></para><screen><phrase role="commit-message">Fixed some broken formatting in source files for chunker.* params,
+as pointed out by Dave Pawson.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: label.from.part.xml</literal></para><screen><phrase role="commit-message">Changed handling of <tag>reference</tag> auto-labeling such that <tag>reference</tag>
+(when it appears at the component level) is now affected by the
+<parameter>label.from.part</parameter> param, just as <tag>preface</tag>, <tag>chapter</tag>, and <tag>appendix</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: callout.graphics.extension.xml</literal></para><screen><phrase role="commit-message">Clarified that 'extension' refers to file names.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: abstract.notitle.enabled.xml</literal></para><screen><phrase role="commit-message">Added new param <parameter>abstract.notitle.enabled</parameter>.
+If non-zero, in output of the <tag>abstract</tag> element on titlepages,
+display of the <tag>abstract</tag> <tag>title</tag> is suppressed.
+Because sometimes you really don't want or need that <tag>title</tag>
+there...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: man.string.subst.map.xml</literal></para><screen><phrase role="commit-message">Updated manpages string-substitute map to reflect fact that
+because of another recent change to suppress bold markup in .SH
+output, we no longer need to add a workaround for the accidental
+uppercasing of roff escapes that occurred previously.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: margin.note.float.type.xml; title.font.family.xml; table.frame.border.color.x⋯</literal></para><screen><phrase role="commit-message">Improved parameter metadata</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: profile.wordsize.xml; profile.audience.xml</literal></para><screen><phrase role="commit-message">Add support for profiling on new attributes audience and wordsize.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: callout.graphics.number.limit.xml; callout.graphics.extension.xml</literal></para><screen><phrase role="commit-message">Added SVG graphics for fo output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: callout.icon.size.xml</literal></para><screen><phrase role="commit-message">Set size of <tag>callout</tag> graphics.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: default.units.xml; chunker.output.method.xml; toc.list.type.xml; output.inden⋯</literal></para><screen><phrase role="commit-message">Updated parameter metadata to the new format.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: man.output.quietly.xml; title.font.family.xml; footnote.sep.leader.properties⋯</literal></para><screen><phrase role="commit-message">Added type annotations into parameter definition files.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: section.container.element.xml</literal></para><screen><phrase role="commit-message">Support spans in sections for certain processors.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: component.titlepage.properties.xml</literal></para><screen><phrase role="commit-message">Empty attribute set for top level component titlepage block.
+Allows setting a span on <tag>title</tag> <tag>info</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: bibliography.style.xml</literal></para><screen><phrase role="commit-message">Added <tag>link</tag> to WiKi page with description of special markup needed for ISO690 biblioentries</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: make.year.ranges.xml</literal></para><screen><phrase role="commit-message">Clarify that multiple <tag>year</tag> elements are required.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: id.warnings.xml</literal></para><screen><phrase role="commit-message">Turn off <parameter>id.warnings</parameter> by default.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: bibliography.style.xml</literal></para><screen><phrase role="commit-message">Added support for formatting biblioentries according to ISO690 <tag>citation</tag> style.
+New <tag>bibliography</tag> style can be turned on by setting parameter <parameter>bibliography.style</parameter> to "iso690"
+The code was provided by Jana Dvorakova</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: header.table.properties.xml; footer.table.properties.xml</literal></para><screen><phrase role="commit-message">Support adding <tag>table</tag> properties to header and footer tables.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: c-hl.xml; xslthl-config.xml</literal></para><screen><phrase role="commit-message">Added support for C language. Provided by Bruno Guegan.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Highlighting changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Profiling">
+<title>Profiling</title>
+<para>The following changes have been made to the
+ <filename>profiling</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: profile-mode.xsl</literal></para><screen><phrase role="commit-message">Add support for new profiling attributes audience and wordsize.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Profiling changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Lib">
+<title>Lib</title>
+<para>The following changes have been made to the
+ <filename>lib</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: lib.xweb</literal></para><screen><phrase role="commit-message">Changed name of prepend-pad template to pad-string and twheeked so
+it can do both right/left padding.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Lib changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_Tools">
+<title>Tools</title>
+<para>The following changes have been made to the
+ <filename>tools</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: bin; bin/docbook-xsl-update</literal></para><screen><phrase role="commit-message">Did some cleanup to the install.sh source and added a
+docbook-xsl-update script to the docbook-xsl distro, the purpose
+of which is to facilitate easy sync-up to the latest docbook-xsl
+snapshot (by means of rsync).</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Tools changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_XSL-Saxon">
+<title>XSL-Saxon</title>
+<para>The following changes have been made to the
+ <filename>xsl-saxon</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/⋯</literal></para><screen><phrase role="commit-message">Added modifications so that the new <parameter>callout.icon.size</parameter> parameter is taken into account. This
+parameter is used for FO output (where SVG now is the default graphics format for callouts).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x⋯</literal></para><screen><phrase role="commit-message">Added code for generating id attributes on callouts in HTML and FO output.
+These patches enable cross-references to callouts placed by <tag>area</tag> coordinates.
+It works for graphic, unicode and text callouts.
+Part of fix for bug #1675513 (<tag>xref</tag> to <tag>area</tag> broken).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan⋯</literal></para><screen><phrase role="commit-message">Copied over Website XSL Java extensions.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Saxon changes for 1.73.0-->
+<sect2 xml:id="V1.73.0_XSL-Xalan">
+<title>XSL-Xalan</title>
+<para>The following changes have been made to the
+ <filename>xsl-xalan</filename> code
+ since the 1.72.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Michael(tm) Smith: Makefile; xalan2</literal></para><screen><phrase role="commit-message">Turned off xalan2.jar build. This removes DocBook XSL
+Java extensions support for versions of Xalan prior to
+Xalan 2.7. If you are currently using the extensions
+with an earlier version of Xalan, you need to upgrade
+to Xalan 2.7.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/⋯</literal></para><screen><phrase role="commit-message">Added modifications so that the new <parameter>callout.icon.size</parameter> parameter is taken into account. This
+parameter is used for FO output (where SVG now is the default graphics format for callouts).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x⋯</literal></para><screen><phrase role="commit-message">Added code for generating id attributes on callouts in HTML and FO output.
+These patches enable cross-references to callouts placed by <tag>area</tag> coordinates.
+It works for graphic, unicode and text callouts.
+Part of fix for bug #1675513 (<tag>xref</tag> to <tag>area</tag> broken).</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan⋯</literal></para><screen><phrase role="commit-message">Copied over Website XSL Java extensions.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of XSL-Saxon changes for 1.73.0-->
+</sect1><!--end of changes for the 1.73.0 release-->
+
+<sect1 xml:id="V1.72.0">
+<title>Release: 1.72.0</title>
+<para>This release includes important bug fixes and adds the following
+significant feature changes:
+<variablelist>
+ <varlistentry>
+ <term>Automatic sorting of glossary entries</term>
+ <listitem>
+ <para>The HTML and FO stylesheets now support automatic sorting
+ of <tag>glossary</tag> entries. To enable glossary sorting, set
+ the value of the <parameter>glossary.sort </parameter> parameter
+ to <code>1</code> (by default, it’s value is
+ <code>0</code>). When you enable glossary sorting,
+ <tag>glossentry</tag> elements within a <tag> glossary</tag>,
+ <tag>glossdiv</tag>, or <tag>glosslist</tag> are sorted on the
+ <tag>glossterm</tag>, using the current language setting. If you
+ don’t enable glossary sorting, then the order of
+ <tag>glossentry</tag> elements is left “as is†— that is, they
+ are not sorted but are instead just displayed in document
+ order.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WordML renamed to Roundtrip, OpenOffice support added</term>
+ <listitem>
+ <para>Stylesheets for “roundtrip†conversion between documents in
+ OpenOffice format (ODF) and DocBook XML have been added to the set
+ of stylesheets that formerly had the collective title
+ <wordasword>WordML</wordasword>, and that set of stylesheets has
+ been renamed to <wordasword>Roundtrip</wordasword> to better
+ reflect the actual scope and purpose of its contents.</para>
+ <para>So the DocBook XSL Stylesheets now support roundtrip
+ conversion (with certain limitations) of WordML, OpenOffice, and
+ Apple Pages documents to and from DocBook XML.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Including QandASet questions in TOCs</term>
+ <listitem>
+ <para>The HTML stylesheet now provides support for including
+ <tag>QandASet</tag> <tag>question</tag>s in the document TOC. To
+ enable display of <tag>question</tag>s in the document TOC, set
+ the value of the <parameter>qanda.in.toc</parameter> to
+ <code>1</code> (by default, it’s <code>0</code>). When you
+ enable <parameter>qanda.in.toc</parameter>, then the generated
+ table of contents for a document will include
+ <tag>qandaset</tag> titles, <tag>qandadiv</tag> titles, and
+ <tag>question</tag> elements. The default value of zero
+ excludes them from the TOC.
+ <note>
+ <para>The <parameter>qanda.in.toc</parameter> parameter does
+ not affect any tables of contents that may be generated
+ <emphasis>within</emphasis> a <tag>qandaset</tag> or
+ <tag>qandadiv</tag> (only in the document TOC).</para>
+ </note>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Language identifier in man-page filenames and pathnames</term>
+ <listitem>
+ <para>Added new parameter <parameter
+ >man.output.lang.in.name.enabled</parameter>, which controls whether
+ a language identifier is included in man-page filenames and
+ pathnames. It works like this:</para>
+
+ <para>If the value of <parameter
+ >man.output.lang.in.name.enabled</parameter> is non-zero,
+ man-page files are output with a language identifier included in
+ their filenames or pathnames as follows:</para>
+
+ <itemizedlist>
+ <listitem><para>if
+ <parameter>man.output.subdirs.enabled</parameter> is non-zero,
+ each file is output to, e.g., a
+ <filename>/$lang/man8/foo.8</filename> pathname</para></listitem>
+
+ <listitem><para>if
+ <parameter>man.output.subdirs.enabled</parameter> is zero,
+ each file is output with a <tag>foo.$lang.8</tag>
+ filename</para></listitem>
+ </itemizedlist>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>index.page.number.properties</parameter> property set</term>
+ <listitem>
+ <para>For FO output, use the
+ <parameter>index.page.number.properties</parameter> to control
+ formatting of page numbers in <tag>index</tag> output — to (for
+ example) to display page numbers in <tag>index</tag> output in a
+ different color (to indicate that they are links).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Crop marks in output from Antenna House XSL Formatter</term>
+ <listitem>
+ <para>Support has been added for generating crop marks in
+ print/PDF output generated using Antenna House XSL Formatter</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>More string-substitution hooks in manpages output</term>
+ <listitem>
+ <para>The <parameter>man.string.subst.map.local.pre</parameter>
+ and <parameter>man.string.subst.map.local.post</parameter>
+ parameters have been added to enable easier control over
+ custom string substitutions.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Moved verbatim properties to attribute-set</term>
+ <listitem>
+ <para>The hardcoded properties used in verbatim elements (literallayout,
+ programlisting, screen) were moved to the verbatim.properties
+ attribute-set so they can be more easily customized.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>enhanced simple.xlink template</term>
+ <listitem>
+ <para>Now the simple.xlink template in inline.xsl works with
+ cross reference elements xref and link as well. Also, more elements
+ call simple.xlink, which enables DB5 xlink functionality.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>DocBook 5 compatibility</term>
+ <listitem>
+ <para>Stylesheets now consistently support DocBook 5 attributes
+ (such as xml:id). Also, DocBook 5 info elements are now checked
+ along with other *info elements, and the use of name() function
+ was replaced by local-name() so it also matches on DocBook 5 elements.
+ These changes enable reusing the stylesheets with DocBook 5
+ documents with minimal fixup.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>HTML class attributes now handled in class.attribute mode </term>
+ <listitem>
+ <para>The HTML class attributes were formerly hardcoded to the
+ element name. Now the class attribute is generated by applying
+ templates in class.attribute mode so class attribute names
+ can be customized. The default is still the element name.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>arabic-indic numbering enabled in autolabels</term>
+ <listitem>
+ <para>Numbering of chapter, sections, and pages can now use
+ arabic-indic numbering when number format is set to 'arabicindic' or
+ to &#x661;.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+The following is a detailed list of changes (not
+including bug fixes) that have been made since the 1.71.1
+release.</para>
+
+<sect2 xml:id="V1.72.0_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for arabicindic numbering to autolabel.format template.<alt>M: /trunk/xsl/common/labels.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Finish support for @xml:id everywhere @id is used.<alt>M: /trunk/xsl/common/gentext.xsl; M: /trunk/xsl/common/titles.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">replace name() with local-name() in most cases.<alt>M: /trunk/xsl/common/l10n.xsl; M: /trunk/xsl/common/olink.xsl; M: /trunk/xsl/common/subtitles.xsl; M: /trunk/xsl/common/labels.xsl; M: /trunk/xsl/common/titles.xsl; M: /trunk/xsl/common/common.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for <tag>info</tag>.<alt>M: /trunk/xsl/common/subtitles.xsl; M: /trunk/xsl/common/labels.xsl; M: /trunk/xsl/common/titles.xsl; M: /trunk/xsl/common/common.xsl; M: /trunk/xsl/common/targets.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add utility template tabstyle to return the tabstyle from
+any <tag>table</tag> element.<alt>M: /trunk/xsl/common/table.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.72.0-->
+
+<sect2 xml:id="V1.72.0_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for sorting <tag>glossary</tag> entries<alt>M: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent; M: /trunk/xsl/fo/glossary.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add table.row.properties template to customize <tag>table</tag> rows.<alt>M: /trunk/xsl/fo/table.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Moved all properties to attribute-sets so can be customized more easily.<alt>M: /trunk/xsl/fo/verbatim.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add index.page.number.properties attribute-set to format page numbers.<alt>M: /trunk/xsl/fo/autoidx.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message"><tag>xref</tag> now supports xlink:href, using simple.xlink template.<alt>M: /trunk/xsl/fo/xref.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Rewrote simple.xlink, and call it with all charseq templates.<alt>M: /trunk/xsl/fo/inline.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add simple.xlink processing to <tag>term</tag> and <tag>member</tag> elements.<alt>M: /trunk/xsl/fo/lists.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for crop marks in Antenna House.<alt>M: /trunk/xsl/fo/axf.xsl; M: /trunk/xsl/fo/pagesetup.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.72.0-->
+
+<sect2 xml:id="V1.72.0_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for sorting <tag>glossary</tag> entries<alt>M: /trunk/xsl/html/glossary.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for <parameter>qanda.in.toc</parameter> to add <tag>qandaentry</tag> questions to document <tag>TOC</tag>.<alt>M: /trunk/xsl/html/autotoc.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">add simple.xlink support to <tag>variablelist</tag> <tag>term</tag> and <tag>simplelist</tag> <tag>member</tag>.<alt>M: /trunk/xsl/html/lists.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">*.propagates.style now handled in class.attribute mode.<alt>M: /trunk/xsl/html/inline.xsl; M: /trunk/xsl/html/lists.xsl; M: /trunk/xsl/html/table.xsl; M: /trunk/xsl/html/block.xsl; M: /trunk/xsl/html/footnote.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">add class parameter to class.attribute mode to set default class.<alt>M: /trunk/xsl/html/html.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Convert all class attributes to use the class.attribute mode
+so class names can be customized more easily.<alt>M: /trunk/xsl/html/titlepage.xsl; M: /trunk/xsl/html/chunk-code.xsl; M: /trunk/xsl/html/division.xsl; M: /trunk/xsl/html/sections.xsl; M: /trunk/xsl/html/math.xsl; M: /trunk/xsl/html/block.xsl; M: /trunk/xsl/html/info.xsl; M: /trunk/xsl/html/footnote.xsl; M: /trunk/xsl/html/lists.xsl; M: /trunk/xsl/html/admon.xsl; M: /trunk/xsl/html/refentry.xsl; M: /trunk/xsl/html/qandaset.xsl; M: /trunk/xsl/html/graphics.xsl; M: /trunk/xsl/html/biblio.xsl; M: /trunk/xsl/html/task.xsl; M: /trunk/xsl/html/component.xsl; M: /trunk/xsl/html/glossary.xsl; M: /trunk/xsl/html/callout.xsl; M: /trunk/xsl/html/index.xsl; M: /trunk/xsl/html/synop.xsl; M: /trunk/xsl/html/verbatim.xsl; M: /trunk/xsl/html/ebnf.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add class.attribute mode to generate class attributes.<alt>M: /trunk/xsl/html/html.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added simple.xlink to most remaining inlines.
+Changed class attributes to applying class.attributes mode.<alt>M: /trunk/xsl/html/inline.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Changed <tag>xref</tag> template to use simple.xlink tempalte.<alt>M: /trunk/xsl/html/xref.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Improve generate.html.title to work with <tag>link</tag> targets too.<alt>M: /trunk/xsl/html/html.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Improved simple.xlink to support <tag>link</tag> and <tag>xref</tag>.<alt>M: /trunk/xsl/html/inline.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Use new link.title.attribute now.<alt>M: /trunk/xsl/html/xref.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Rewrote simple.xlink to handle linkend also.
+Better computation of <tag>title</tag> attribute on <tag>link</tag> too.<alt>M: /trunk/xsl/html/inline.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Handle Xalan quirk as special case.<alt>M: /trunk/xsl/html/db5strip.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for <tag>info</tag>.<alt>M: /trunk/xsl/html/admon.xsl; M: /trunk/xsl/html/autotoc.xsl; M: /trunk/xsl/html/lists.xsl; M: /trunk/xsl/html/refentry.xsl; M: /trunk/xsl/html/biblio.xsl; M: /trunk/xsl/html/qandaset.xsl; M: /trunk/xsl/html/component.xsl; M: /trunk/xsl/html/glossary.xsl; M: /trunk/xsl/html/division.xsl; M: /trunk/xsl/html/index.xsl; M: /trunk/xsl/html/sections.xsl; M: /trunk/xsl/html/table.xsl; M: /trunk/xsl/html/block.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Fixed imagemaps so they work properly going from calspair coords
+to HTML <tag>area</tag> coords.<alt>M: /trunk/xsl/html/graphics.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.72.0-->
+
+<sect2 xml:id="V1.72.0_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added doc for <parameter>man.output.lang.in.name.enabled</parameter> parameter. This
+checkin completes support for writing file/pathnames for man-pages
+with $lang include in the names. Closes #1585967. knightly
+accolades to Daniel Leidert for providing the feature request.<alt>M: /trunk/xsl/manpages/param.xweb; M: /trunk/xsl/manpages/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added new param <parameter>man.output.lang.in.name.enabled</parameter>, which
+controls whether $LANG value is included in manpages
+filenames and pathnames. It works like this:
+
+If the value of <parameter>man.output.lang.in.name.enabled</parameter> is non-zero,
+man-page files are output with the $lang value included in
+their filenames or pathnames as follows;
+
+- if <parameter>man.output.subdirs.enabled</parameter> is non-zero, each file is
+ output to, e.g., a /$lang/man8/foo.8 pathname
+
+- if <parameter>man.output.subdirs.enabled</parameter> is zero, each file is output
+ with a foo.$lang.8 <tag>filename</tag><alt>M: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Use "\e" instead of "\\" for backslash output, because the
+groff docs say that's the correct thing to do; also because
+testing (thanks, Paul Dubois) shows that "\\" doesn't always
+work as expected; for example, "\\" within a <tag>table</tag> seems to
+mess things up.<alt>M: /trunk/xsl/manpages/charmap.groff.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added the <parameter>man.string.subst.map.local.pre</parameter> and
+<parameter>man.string.subst.map.local.post</parameter> parameters. Those parameters
+enable local additions and changes to string-substitution mappings
+without the need to change the value of <parameter>man.string.subst.map</parameter>
+parameter (which is for standard system mappings). Closes
+#1456738. Thanks to Sam Steingold for constructing a true
+stylesheet torture test (the clisp docs) that exposed the need for
+these params.<alt>M: /trunk/xsl/manpages/param.xweb; M: /trunk/xsl/manpages/param.ent; M: /trunk/xsl/manpages/other.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added the Markup element to the list of elements that get output
+in bold. Thanks to Eric S. Raymond.<alt>M: /trunk/xsl/manpages/inline.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Replaced all dots in roff requests with U+2302 ("house"
+character), and added escaping in output for all instances of dot
+that are not in roff requests. This fixes the problem case where a
+string beginning with a dot (for example, the string ".bashrc")
+might occur at the beginning of a line in output, in which case
+would mistakenly get interpreted as a roff request. Thanks to Eric
+S. Raymond for pushing to fix this.<alt>M: /trunk/xsl/manpages/table.xsl; M: /trunk/xsl/manpages/synop.xsl; M: /trunk/xsl/manpages/block.xsl; M: /trunk/xsl/manpages/info.xsl; M: /trunk/xsl/manpages/lists.xsl; M: /trunk/xsl/manpages/refentry.xsl; M: /trunk/xsl/manpages/links.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Made change to ensure that list content nested in
+<tag>itemizedlist</tag> and <tag>orderedlist</tag> instances is properly indented. This
+is a switch from using .TP to format those lists to using .RS/.RE
+to format them instead (because .TP does not allow nesting). Closes bug #1602616.
+Thanks to Daniel Leidert.<alt>M: /trunk/xsl/manpages/lists.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.72.0-->
+
+<sect2 xml:id="V1.72.0_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added doc for <parameter>man.output.lang.in.name.enabled</parameter> parameter. This
+checkin completes support for writing file/pathnames for man-pages
+with $lang include in the names. Closes #1585967. knightly
+accolades to Daniel Leidert for providing the feature request.<alt>A: /trunk/xsl/params/man.output.lang.in.name.enabled.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added new param <parameter>man.output.lang.in.name.enabled</parameter>, which
+controls whether $LANG value is included in manpages
+filenames and pathnames. It works like this:
+
+If the value of <parameter>man.output.lang.in.name.enabled</parameter> is non-zero,
+man-page files are output with the $lang value included in
+their filenames or pathnames as follows;
+
+- if <parameter>man.output.subdirs.enabled</parameter> is non-zero, each file is
+ output to, e.g., a /$lang/man8/foo.8 pathname
+
+- if <parameter>man.output.subdirs.enabled</parameter> is zero, each file is output
+ with a foo.$lang.8 <tag>filename</tag><alt>M: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added the <parameter>man.string.subst.map.local.pre</parameter> and
+<parameter>man.string.subst.map.local.post</parameter> parameters. Those parameters
+enable local additions and changes to string-substitution mappings
+without the need to change the value of <parameter>man.string.subst.map</parameter>
+parameter (which is for standard system mappings). Closes
+#1456738. Thanks to Sam Steingold for constructing a true
+stylesheet torture test (the clisp docs) that exposed the need for
+these params.<alt>A: /trunk/xsl/params/man.string.subst.map.local.post.xml; A: /trunk/xsl/params/man.string.subst.map.local.pre.xml; M: /trunk/xsl/params/man.string.subst.map.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add index.page.number.properties by default.<alt>M: /trunk/xsl/params/xep.index.item.properties.xml - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added <parameter>index.page.number.properties</parameter> to allow customizations of page numbers in indexes.<alt>A: /trunk/xsl/params/index.page.number.properties.xml - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Move show-destination="replace" property from template to attribute-set
+so it can be customized.<alt>M: /trunk/xsl/params/olink.properties.xml - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for sorting <tag>glossary</tag> entries<alt>A: /trunk/xsl/params/glossary.sort.xml - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add option to include qanda in tables of contents.<alt>A: /trunk/xsl/params/qanda.in.toc.xml - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Moved all properties to attribute-sets so can be customized more easily.<alt>M: /trunk/xsl/params/verbatim.properties.xml - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.72.0-->
+
+<sect2 xml:id="V1.72.0_Template">
+<title>Template</title>
+<para>The following changes have been made to the
+ <filename>template</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added workaround for Xalan bug: use for-each and copy instead of copy-of (#1604770).<alt>M: /trunk/xsl/template/titlepage.xsl - Mauritz Jeanson</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Template changes for 1.72.0-->
+
+<sect2 xml:id="V1.72.0_Roundtrip">
+<title>Roundtrip</title>
+<para>The following changes have been made to the
+ <filename>roundtrip</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">rename to roundtrip, add OpenOffice support<alt>M: /trunk/xsl/roundtrip/docbook-pages.xsl; M: /trunk/xsl/roundtrip/specifications.xml; A: /trunk/xsl/roundtrip/dbk2ooo.xsl; M: /trunk/xsl/roundtrip/docbook.xsl; A: /trunk/xsl/roundtrip/dbk2pages.xsl; M: /trunk/xsl/roundtrip/template.xml; A: /trunk/xsl/roundtrip/dbk2wordml.xsl; A: /trunk/xsl/roundtrip/dbk2wp.xsl; M: /trunk/xsl/roundtrip/template.dot; M: /trunk/xsl/roundtrip/wordml-final.xsl - Steve Ball</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Roundtrip changes for 1.72.0-->
+</sect1><!--end of V1.72.0-->
+
+<sect1 xml:id="V1.71.1">
+<title>Release: 1.71.1</title>
+<para>This is a minor update to the 1.71.0 release. Along with a
+number of bug fixes, it includes two feature changes:
+
+<itemizedlist>
+ <listitem>
+ <para>Added support for profiling based on <tag
+ class="attribute">xml:lang</tag> and <tag
+ class="attribute">status</tag> attributes.</para>
+ </listitem>
+ <listitem>
+ <para>Added initial support in manpages output for
+ <tag>footnote</tag>, <tag>annotation</tag>, and <tag>alt</tag>
+ instances. Basically, they all now get handled the same way
+ <tag>ulink</tag> instances are. They are treated as a class as
+ "note sources": A numbered marker is generated at the place in the
+ main text flow where they occur, then their contents are displayed
+ in an endnotes section at the end of the man page.</para>
+ </listitem>
+</itemizedlist>
+</para>
+
+<sect2 xml:id="V1.71.1_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.<alt>D: /trunk/xsl/common/autoidx-ng.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for Xalan generating a root xml:base like saxon.<alt>M: /trunk/xsl/common/stripns.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.71.1-->
+
+<sect2 xml:id="V1.71.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.<alt>M: /trunk/xsl/fo/autoidx-ng.xsl; M: /trunk/xsl/fo/autoidx-kosek.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for Xalan to add root node xml:base for db5 docs.<alt>M: /trunk/xsl/fo/docbook.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added support for profiling based on xml:lang and status attributes.<alt>M: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.71.1-->
+
+<sect2 xml:id="V1.71.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.<alt>M: /trunk/xsl/html/autoidx-ng.xsl; M: /trunk/xsl/html/autoidx-kosek.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Add support for Xalan to add root node xml:base for db5 docs.<alt>M: /trunk/xsl/html/chunk-code.xsl; M: /trunk/xsl/html/docbook.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added support for profiling based on xml:lang and status attributes.<alt>M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Made changes in namespace declarations to prevent xmllint's
+canonicalizer from treating them as relative namespace URIs.
+
+ - Changed xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService"
+ to xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService";
+ Saxon accepts either form
+ (see http://www.saxonica.com/documentation/extensibility/functions.html);
+ to Saxon, "the part of the URI before the final '/' is immaterial".
+
+ - Changed, e.g. xmlns:xverb="com.nwalsh.xalan.Verbatim" to
+ xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"; Xalan accepts
+ either form
+ (see http://xml.apache.org/xalan-j/extensions.html#java-namespace-declare);
+ just as Saxon does, it will "simply use the string to the
+ right of the rightmost forward slash as the Java class name".
+
+ - Changed xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect"
+ to xmlns:redirect="http://xml.apache.org/xalan/redirect", and
+ adjusted associated code to make the current Xalan redirect spec.
+ (see http://xml.apache.org/xalan-j/apidocs/org/apache/xalan/lib/Redirect.html)<alt>M: /trunk/xsl/html/oldchunker.xsl; M: /trunk/xsl/html/chunker.xsl; M: /trunk/xsl/html/graphics.xsl; M: /trunk/xsl/html/callout.xsl; M: /trunk/xsl/html/autoidx-kimber.xsl; M: /trunk/xsl/html/autoidx-kosek.xsl; M: /trunk/xsl/html/table.xsl; M: /trunk/xsl/html/verbatim.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added the <parameter>html.append</parameter> and <parameter>chunk.append</parameter> parameters. By default, the
+value of both is empty; but the internal DocBook XSL stylesheets
+build sets their value to "&lt;xsl:text&gt;&amp;#x0a;&lt;/xsl:text&gt;", in order
+to ensure that all files in the docbook-xsl-doc package end in a
+newline character. (Because diff and some other tools may emit
+error messages and/or not behave as expected when processing
+files that are not newline-terminated.)<alt>M: /trunk/xsl/html/chunk-common.xsl; M: /trunk/xsl/html/titlepage.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/docbook.xsl; M: /trunk/xsl/html/graphics.xsl; M: /trunk/xsl/html/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.71.1-->
+
+<sect2 xml:id="V1.71.1_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added license information<alt>M: /trunk/xsl/highlighting/delphi-hl.xml; M: /trunk/xsl/highlighting/myxml-hl.xml; M: /trunk/xsl/highlighting/php-hl.xml; M: /trunk/xsl/highlighting/m2-hl.xml; M: /trunk/xsl/highlighting/ini-hl.xml; M: /trunk/xsl/highlighting/xslthl-config.xml; M: /trunk/xsl/highlighting/java-hl.xml - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Highlighting changes for 1.71.1-->
+
+<sect2 xml:id="V1.71.1_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added initial support in manpages output for <tag>footnote</tag>, <tag>annotation</tag>,
+and <tag>alt</tag> instances. Basically, they all now get handled the same
+way ulink instances are. They are treated as a class as "note
+sources": A numbered marker is generated at the place in the main
+text flow where they occur, then their contents are displayed in
+an endnotes <tag>section</tag> at the end of the man page (currently titled
+REFERENCES, for English output, but will be changed to NOTES).
+
+This support is not yet complete. It works for most "normal"
+cases, but probably mishandles a good number of cases. More
+testing will be needed to expose the problems. It may well also
+introduce some bugs and regressions in other areas, including
+basic paragraph handling, handling of "mixed block" content,
+handling of other indented content, and handling of authorblurb
+and <tag>personblurb</tag> in the AUTHORS <tag>section</tag>.<alt>M: /trunk/xsl/manpages/table.xsl; M: /trunk/xsl/manpages/block.xsl; M: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/links.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.71.1-->
+
+<sect2 xml:id="V1.71.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added support for profiling based on xml:lang and status attributes.<alt>A: /trunk/xsl/params/profile.status.xml - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added the <parameter>html.append</parameter> and <parameter>chunk.append</parameter> parameters. By default, the
+value of both is empty; but the internal DocBook XSL stylesheets
+build sets their value to "&lt;xsl:text&gt;&amp;#x0a;&lt;/xsl:text&gt;", in order
+to ensure that all files in the docbook-xsl-doc <tag>package</tag> end in a
+newline character. (Because diff and some other tools may emit
+error messages and/or not behave as expected when processing
+files that are not newline-terminated.)<alt>A: /trunk/xsl/params/html.append.xml; A: /trunk/xsl/params/chunk.append.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.71.1-->
+
+<sect2 xml:id="V1.71.1_Profiling">
+<title>Profiling</title>
+<para>The following changes have been made to the
+ <filename>profiling</filename> code
+ since the 1.71.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added support for profiling based on xml:lang and status attributes.<alt>M: /trunk/xsl/profiling/profile.xsl; M: /trunk/xsl/profiling/profile-mode.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Profiling changes for 1.71.1-->
+
+</sect1>
+
+<sect1 xml:id="V1.71.0">
+<title>Release: 1.71.0</title>
+<para>This is mainly a bug fix release, but it also includes two
+significant feature changes:
+<variablelist>
+ <varlistentry>
+ <term>Highlighting support added</term>
+ <listitem>
+ <para>The stylesheets now include support for source-code
+ highlighting in output of programlisting instances (controlled
+ through the <parameter>highlight.source</parameter>
+ parameter). The Java-based implementation requires Saxon and
+ makes use of <link
+ xlink:href="http://molhanec.net/"><person><personname
+ ><firstname>Michal</firstname><surname
+ >Molhanec</surname></personname></person></link>’s <link
+ xlink:href="http://sourceforge.net/projects/xslthl"
+ >XSLTHL</link>. More details are available at Jirka Kosek’s
+ website: <blockquote ><simpara ><link
+ xlink:href="http://xmlguru.cz/2006/07/docbook-syntax-highlighting"/></simpara
+ ></blockquote> The support is currently limited to highlighting
+ of XML, Java, PHP, Delphi, Modula-2 sources, and INI
+ files.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Changes to autoindexing</term>
+ <listitem>
+ <para>The templates that handle alternative indexing methods
+ were reworked to avoid errors produced by certain processors not
+ being able to tolerate the presence of unused functions. With
+ this release, none of the code for the 'kimber' or 'kosek'
+ methods is included in the default stylesheets. In order to use
+ one of those methods, your customization layer must import one
+ of the optional stylesheet modules:</para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <simpara>html/autoidx-kosek.xsl</simpara>
+ </listitem>
+ <listitem>
+ <simpara>html/autoidx-kimber.xsl</simpara>
+ </listitem>
+ <listitem>
+ <simpara>fo/autoidx-kosek.xsl</simpara>
+ </listitem>
+ <listitem>
+ <simpara>fo/autoidx-kimber.xsl</simpara>
+ </listitem>
+ </itemizedlist>
+ See the <parameter>index.method</parameter> parameter
+ reference page for more information.
+ </para>
+ <para>Two other changes to note:
+ <itemizedlist>
+ <listitem>
+ <simpara>The default indexing method now can handle accented
+ characters in latin-based alphabets, not just English. This
+ means accented latin letters will group and sort with their
+ unaccented counterpart.</simpara>
+ </listitem>
+ <listitem>
+ <simpara>The default value for the
+ <parameter>index.method</parameter> parameter was changed
+ from 'english' to 'basic' because now the default method can
+ handle latin-based alphabets, not just English.</simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+The following is a list of changes that have
+been made since the 1.70.1 release.</para>
+
+<sect2 xml:id="V1.71.0_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added <parameter>reference.autolabel</parameter> parameter for controlling labels on
+<tag>reference</tag> output.<alt>M: /trunk/xsl/common/labels.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Support <tag>row</tag>s that are *completely* overlapped by the preceding <tag>row</tag><alt>M: /trunk/xsl/common/table.xsl - Norman Walsh</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">New modules for supporting indexing extensions.<alt>A: /trunk/xsl/common/autoidx-kimber.xsl; A: /trunk/xsl/common/autoidx-kosek.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Support startinglinenumber on <tag>orderedlist</tag><alt>M: /trunk/xsl/common/common.xsl - Norman Walsh</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.71.0-->
+
+<sect2 xml:id="V1.71.0_Extensions">
+<title>Extensions</title>
+<para>The following changes have been made to the
+ <filename>extensions</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Completely reworked extensions build system; now uses NetBeans and ant<alt>D: /trunk/xsl/extensions/xalan27/.cvsignore; A: /trunk/xsl/extensions/saxon65/nbproject; A: /trunk/xsl/extensions/saxon65/nbproject/project.properties; D: /trunk/xsl/extensions/prj.el; A: /trunk/xsl/extensions/saxon65/src; A: /trunk/xsl/extensions/xalan2/src/com; M: /trunk/xsl/extensions/xalan2/src/com/nwalsh/xalan/Text.java; A: /trunk/xsl/extensions/saxon65/nbproject/project.xml; D: /trunk/xsl/extensions/build.xml; A: /trunk/xsl/extensions/saxon65/build.xml; A: /trunk/xsl/extensions/xalan2/nbproject/genfiles.properties; A: /trunk/xsl/extensions/saxon65; D: /trunk/xsl/extensions/xalan2/com; M: /trunk/xsl/extensions/xalan2/src/com/nwalsh/xalan/Func.java; A: /trunk/xsl/extensions/xalan2/test; A: /trunk/xsl/extensions/saxon65/src/com; A: /trunk/xsl/extensions/xalan2/nbproject/build-impl.xml; A: /trunk/xsl/extensions/xalan2/nbproject; A: /trunk/xsl/extensions/xalan2/src; A: /trunk/xsl/extensions/xalan2/nbproject/project.properties; D: /trunk/xsl/extensions/.cvsignore; M: /trunk/xsl/extensions/Makefile; D: /trunk/xsl/extensions/saxon8; A: /trunk/xsl/extensions/saxon65/nbproject/genfiles.properties; A: /trunk/xsl/extensions/xalan2/nbproject/project.xml; A: /trunk/xsl/extensions/saxon65/test; M: /trunk/xsl/extensions/xalan2/src/com/nwalsh/xalan/Verbatim.java; A: /trunk/xsl/extensions/xalan2/build.xml; M: /trunk/xsl/extensions/xalan2; D: /trunk/xsl/extensions/saxon643; A: /trunk/xsl/extensions/saxon65/nbproject/build-impl.xml - Norman Walsh</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Extensions changes for 1.71.0-->
+
+<sect2 xml:id="V1.71.0_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+
+<listitem>
+<literallayout><phrase role="commit-message">xsl:sort lang attribute now uses two-char substring of lang attribute.<alt>M: /trunk/xsl/fo/autoidx-kimber.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Support titlecase "Java", "Perl", and "IDL" as values for the
+language attribute on <tag>classsynopsis</tag>, etc. (instead of just
+lowercase "java", "perl", and "idl"). Also support "c++" and "C++"
+(instead of just "cpp").
+
+Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks
+to "Brian A. Vanderburg II".<alt>M: /trunk/xsl/fo/synop.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added support for the <parameter>reference.autolabel</parameter> param in (X)HTML and FO
+output.<alt>M: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Support <tag>row</tag>s that are *completely* overlapped by the preceding <tag>row</tag><alt>M: /trunk/xsl/fo/table.xsl - Norman Walsh</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Rearranged templates for the 3 indexing methods
+and changed method named 'english' to 'basic'.<alt>M: /trunk/xsl/fo/autoidx.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">New modules for supporting indexing extensions.<alt>A: /trunk/xsl/fo/autoidx-kimber.xsl; A: /trunk/xsl/fo/autoidx-kosek.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Turn off blank-body for <parameter>fop1.extensions</parameter> too since fop 0.92
+does not support it either.<alt>M: /trunk/xsl/fo/pagesetup.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Add Xalan variant to test for exslt:node-set <tag>function</tag>.
+Xalan can use <tag>function</tag> named node-set(), but doesn't
+recognize it using function-available().<alt>M: /trunk/xsl/fo/autoidx.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added support to FO stylesheets for handling instances of <tag>Org</tag>
+where it occurs outside of *<tag>info</tag> content. In HTML stylesheets,
+moved handling of <tag>Org</tag> out of info.xsl and into inline.xsl. In both
+FO and HTML stylesheets, added support for correctly processing
+<tag>Affiliation</tag> and <tag>Jobtitle</tag>.<alt>M: /trunk/xsl/fo/inline.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Don't output punctuation between <tag>Refname</tag> and <tag>Refpurpose</tag> if
+<tag>Refpurpose</tag> is empty. Also corrected handling of <tag>Refsect2</tag>/<tag>title</tag>
+instances, and removed some debugging stuff that was generated in
+manpages output to mark the ends of sections.<alt>M: /trunk/xsl/fo/refentry.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added new <parameter>email.delimiters.enabled</parameter> param. If non-zero (the
+default), delimiters are generated around e-mail addresses (output
+of the <tag>email</tag> element). If zero, the delimiters are suppressed.<alt>M: /trunk/xsl/fo/inline.xsl; M: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Initial support of syntax highlighting of programlistings.<alt>M: /trunk/xsl/fo/param.ent; M: /trunk/xsl/fo/param.xweb; A: /trunk/xsl/fo/highlight.xsl; M: /trunk/xsl/fo/verbatim.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message"><tag>Chapter</tag> after <tag>preface</tag> should restart numbering of pages.<alt>M: /trunk/xsl/fo/pagesetup.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.71.0-->
+
+<sect2 xml:id="V1.71.0_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+
+<listitem>
+<literallayout><phrase role="commit-message">xsl:sort lang attribute now uses two-char substring of lang attribute.<alt>M: /trunk/xsl/html/autoidx-kimber.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Support titlecase "Java", "Perl", and "IDL" as values for the
+language attribute on <tag>classsynopsis</tag>, etc. (instead of just
+lowercase "java", "perl", and "idl"). Also support "c++" and "C++"
+(instead of just "cpp").
+
+Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks
+to "Brian A. Vanderburg II".<alt>M: /trunk/xsl/html/synop.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added support for the <parameter>reference.autolabel</parameter> param in (X)HTML and FO
+output.<alt>M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Support <tag>row</tag>s that are *completely* overlapped by the preceding <tag>row</tag><alt>M: /trunk/xsl/html/table.xsl - Norman Walsh</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Rearranged templates for the 3 indexing methods
+and changed method named 'english' to 'basic'.<alt>M: /trunk/xsl/html/autoidx.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">New modules for supporting indexing extensions.<alt>A: /trunk/xsl/html/autoidx-kimber.xsl; A: /trunk/xsl/html/autoidx-kosek.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added several new HTML parameters for controlling appearance of
+content on HTML <tag>title</tag> pages:
+
+<parameter>contrib.inline.enabled</parameter>:
+ If non-zero (the default), output of the <tag>contrib</tag> element is
+ displayed as inline content rather than as block content.
+
+<parameter>othercredit.like.author.enabled</parameter>:
+ If non-zero, output of the <tag>othercredit</tag> element on titlepages is
+ displayed in the same style as <tag>author</tag> and <tag>editor</tag> output. If zero
+ (the default), <tag>othercredit</tag> output is displayed using a style
+ different than that of <tag>author</tag> and <tag>editor</tag>.
+
+<parameter>blurb.on.titlepage.enabled</parameter>:
+ If non-zero, output from authorblurb and <tag>personblurb</tag> elements is
+ displayed on <tag>title</tag> pages. If zero (the default), output from
+ those elements is suppressed on <tag>title</tag> pages (unless you are
+ using a titlepage customization that causes them to be included).
+
+<parameter>editedby.enabled</parameter>
+ If non-zero (the default), a localized Edited by heading is
+ displayed above <tag>editor</tag> names in output of the <tag>editor</tag> element.<alt>M: /trunk/xsl/html/titlepage.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Add Xalan variant to test for exslt:node-set <tag>function</tag>.
+Xalan can use <tag>function</tag> named node-set(), but doesn't
+recognize it using function-available().<alt>M: /trunk/xsl/html/autoidx.xsl - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added support to FO stylesheets for handling instances of <tag>Org</tag>
+where it occurs outside of *<tag>info</tag> content. In HTML stylesheets,
+moved handling of <tag>Org</tag> out of info.xsl and into inline.xsl. In both
+FO and HTML stylesheets, added support for correctly processing
+<tag>Affiliation</tag> and <tag>Jobtitle</tag>.<alt>M: /trunk/xsl/html/inline.xsl; M: /trunk/xsl/html/info.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Don't output punctuation between <tag>Refname</tag> and <tag>Refpurpose</tag> if
+<tag>Refpurpose</tag> is empty. Also corrected handling of <tag>Refsect2</tag>/<tag>title</tag>
+instances, and removed some debugging stuff that was generated in
+manpages output to mark the ends of sections.<alt>M: /trunk/xsl/html/refentry.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added new <parameter>email.delimiters.enabled</parameter> param. If non-zero (the
+default), delimiters are generated around e-mail addresses (output
+of the <tag>email</tag> element). If zero, the delimiters are suppressed.<alt>M: /trunk/xsl/html/inline.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added <parameter>qanda.nested.in.toc</parameter> param. Default value is zero. If
+non-zero, instances of "nested" <tag>Qandaentry</tag> (ones that are children
+of <tag>Answer</tag> elements) are displayed in the <tag>TOC</tag>. Closes patch 1509018
+(from Daniel Leidert). Currently on affects HTML output (no patch
+for FO output provided).<alt>M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent; M: /trunk/xsl/html/qandaset.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+
+<listitem>
+<literallayout><phrase role="commit-message">Improved handling of relative locations generated files<alt>M: /trunk/xsl/html/html.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Initial support of syntax highlighting of programlistings.<alt>M: /trunk/xsl/html/param.ent; M: /trunk/xsl/html/param.xweb; A: /trunk/xsl/html/highlight.xsl; M: /trunk/xsl/html/verbatim.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Support <tag>org</tag><alt>M: /trunk/xsl/html/info.xsl - Norman Walsh</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Support <tag>person</tag><alt>M: /trunk/xsl/html/inline.xsl - Norman Walsh</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Support $keep.relative.image.uris also when chunking<alt>M: /trunk/xsl/html/chunk-code.xsl - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.71.0-->
+
+<sect2 xml:id="V1.71.0_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+
+<listitem>
+<literallayout><phrase role="commit-message">Initial support of syntax highlighting of programlistings.<alt>A: /trunk/xsl/highlighting/php-hl.xml; A: /trunk/xsl/highlighting/common.xsl; A: /trunk/xsl/highlighting/delphi-hl.xml; A: /trunk/xsl/highlighting/myxml-hl.xml; A: /trunk/xsl/highlighting/m2-hl.xml; A: /trunk/xsl/highlighting/ini-hl.xml; A: /trunk/xsl/highlighting/xslthl-config.xml; A: /trunk/xsl/highlighting/java-hl.xml - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Highlighting changes for 1.71.0-->
+
+<sect2 xml:id="V1.71.0_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+
+<listitem>
+<literallayout><phrase role="commit-message">Suppress <tag>footnote</tag> markers and output warning that footnotes are
+not yet supported.<alt>M: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/links.xsl; M: /trunk/xsl/manpages/other.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Handle instances of <tag>address</tag>/<tag>otheraddr</tag>/ulink in <tag>author</tag> et al in the
+same way as <tag>email</tag> instances; that is, display them on the same
+linke as the <tag>author</tag>, <tag>editor</tag>, etc., name.<alt>M: /trunk/xsl/manpages/info.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Don't number or link-list any Ulink instance whose string value is
+identical to the value of its url attribute. Just display it inline.<alt>M: /trunk/xsl/manpages/links.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Don't output punctuation between <tag>Refname</tag> and <tag>Refpurpose</tag> if
+<tag>Refpurpose</tag> is empty. Also corrected handling of <tag>Refsect2</tag>/<tag>title</tag>
+instances, and removed some debugging stuff that was generated in
+manpages output to mark the ends of sections.<alt>M: /trunk/xsl/manpages/refentry.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added new <parameter>email.delimiters.enabled</parameter> param. If non-zero (the
+default), delimiters are generated around e-mail addresses (output
+of the <tag>email</tag> element). If zero, the delimiters are suppressed.<alt>M: /trunk/xsl/manpages/param.xweb; M: /trunk/xsl/manpages/param.ent - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">In manpages output, if the last/nearest *<tag>info</tag> element for
+particular <tag>Refentry</tag> has multiple <tag>Copyright</tag> and/or <tag>Legalnotice</tag>
+children, process them all (not just the first ones). Closes bug
+1524576. Thanks to Sam Steingold for the report and to Daniel
+Leidert for providing a patch.<alt>M: /trunk/xsl/manpages/info.xsl - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.71.0-->
+
+<sect2 xml:id="V1.71.0_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+<listitem>
+<literallayout><phrase role="commit-message">Added <parameter>reference.autolabel</parameter> parameter for controlling labels on
+<tag>reference</tag> output.<alt>A: /trunk/xsl/params/reference.autolabel.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added namespace declarations to document elements for all param files.<alt>M: /trunk/xsl/params/toc.line.properties.xml; M: /trunk/xsl/params/title.font.family.xml; M: /trunk/xsl/params/component.label.includes.part.label.xml; M: /trunk/xsl/params/refentry.manual.profile.xml; M: /trunk/xsl/params/orderedlist.properties.xml; M: /trunk/xsl/params/olink.pubid.xml; M: /trunk/xsl/params/informalexample.properties.xml; M: /trunk/xsl/params/appendix.autolabel.xml; M: /trunk/xsl/params/htmlhelp.show.toolbar.text.xml; M: /trunk/xsl/params/index.on.role.xml; M: /trunk/xsl/params/htmlhelp.button.jump2.url.xml; M: /trunk/xsl/params/variablelist.term.separator.xml; M: /trunk/xsl/params/para.propagates.style.xml; M: /trunk/xsl/params/html.stylesheet.xml; M: /trunk/xsl/params/qanda.nested.in.toc.xml; M: /trunk/xsl/params/annotation.css.xml; M: /trunk/xsl/params/funcsynopsis.style.xml; M: /trunk/xsl/params/htmlhelp.encoding.xml; M: /trunk/xsl/params/footer.content.properties.xml; M: /trunk/xsl/params/verbatim.properties.xml; M: /trunk/xsl/params/autotoc.label.in.hyperlink.xml; M: /trunk/xsl/params/body.margin.top.xml; M: /trunk/xsl/params/bibliography.numbered.xml; M: /trunk/xsl/params/figure.properties.xml; M: /trunk/xsl/params/variablelist.max.termlength.xml; M: /trunk/xsl/params/table.cell.border.style.xml; M: /trunk/xsl/params/htmlhelp.button.options.xml; M: /trunk/xsl/params/preferred.mediaobject.role.xml; M: /trunk/xsl/params/htmlhelp.chm.xml; M: /trunk/xsl/params/man.charmap.subset.profile.xml; M: /trunk/xsl/params/qanda.title.level3.properties.xml; M: /trunk/xsl/params/page.width.xml; M: /trunk/xsl/params/firstterm.only.link.xml; M: /trunk/xsl/params/section.level6.properties.xml; M: /trunk/xsl/params/htmlhelp.button.locate.xml; M: /trunk/xsl/params/chunk.sections.xml; M: /trunk/xsl/params/use.local.olink.style.xml; M: /trunk/xsl/params/refentry.date.profile.enabled.xml; M: /trunk/xsl/params/refentry.version.suppress.xml; M: /trunk/xsl/params/refentry.generate.title.xml; M: /trunk/xsl/params/punct.honorific.xml; M: /trunk/xsl/params/column.gap.index.xml; M: /trunk/xsl/params/body.start.indent.xml; M: /trunk/xsl/params/crop.mark.width.xml; M: /trunk/xsl/params/refentry.version.profile.enabled.xml; M: /trunk/xsl/params/superscript.properties.xml; M: /trunk/xsl/params/chunker.output.doctype-public.xml; M: /trunk/xsl/params/saxon.character.representation.xml; M: /trunk/xsl/params/saxon.linenumbering.xml; M: /trunk/xsl/params/shade.verbatim.style.xml; M: /trunk/xsl/params/annotate.toc.xml; M: /trunk/xsl/params/profile.attribute.xml; M: /trunk/xsl/params/callout.graphics.number.limit.xml; M: /trunk/xsl/params/profile.arch.xml; M: /trunk/xsl/params/saxon.tablecolumns.xml; M: /trunk/xsl/params/glossterm.auto.link.xml; M: /trunk/xsl/params/default.units.xml; M: /trunk/xsl/params/qanda.title.level1.properties.xml; M: /trunk/xsl/params/list.block.spacing.xml; M: /trunk/xsl/params/section.level4.properties.xml; M: /trunk/xsl/params/spacing.paras.xml; M: /trunk/xsl/params/column.count.index.xml; M: /trunk/xsl/params/dingbat.font.family.xml; M: /trunk/xsl/params/citerefentry.link.xml; M: /trunk/xsl/params/keep.relative.image.uris.xml; M: /trunk/xsl/params/ulink.footnotes.xml; M: /trunk/xsl/params/prefer.internal.olink.xml; M: /trunk/xsl/params/refentry.title.properties.xml; M: /trunk/xsl/params/variablelist.term.break.after.xml; M: /trunk/xsl/params/use.id.function.xml; M: /trunk/xsl/params/callout.unicode.start.character.xml; M: /trunk/xsl/params/column.gap.titlepage.xml; M: /trunk/xsl/params/editedby.enabled.xml; M: /trunk/xsl/params/funcsynopsis.tabular.threshold.xml; M: /trunk/xsl/params/use.extensions.xml; M: /trunk/xsl/params/index.preferred.page.properties.xml; M: /trunk/xsl/params/man.th.extra3.max.length.xml; M: /trunk/xsl/params/column.gap.back.xml; M: /trunk/xsl/params/tex.math.delims.xml; M: /trunk/xsl/params/article.appendix.title.properties.xml; M: /trunk/xsl/params/ulink.target.xml; M: /trunk/xsl/params/suppress.header.navigation.xml; M: /trunk/xsl/params/olink.resolver.xml; M: /trunk/xsl/params/admon.textlabel.xml; M: /trunk/xsl/params/procedure.properties.xml; M: /trunk/xsl/params/blurb.on.titlepage.enabled.xml; M: /trunk/xsl/params/section.level2.properties.xml; M: /trunk/xsl/params/column.gap.front.xml; M: /trunk/xsl/params/margin.note.title.properties.xml; M: /trunk/xsl/params/glossary.collection.xml; M: /trunk/xsl/params/admon.graphics.xml; M: /trunk/xsl/params/current.docid.xml; M: /trunk/xsl/params/qanda.inherit.numeration.xml; M: /trunk/xsl/params/table.cell.padding.xml; M: /trunk/xsl/params/preface.autolabel.xml; M: /trunk/xsl/params/man.th.extra3.suppress.xml; M: /trunk/xsl/params/wordml.template.xml; M: /trunk/xsl/params/htmlhelp.use.hhk.xml; M: /trunk/xsl/params/textinsert.extension.xml; M: /trunk/xsl/params/ebnf.table.bgcolor.xml; M: /trunk/xsl/params/refentry.source.fallback.profile.xml; M: /trunk/xsl/params/body.font.master.xml; M: /trunk/xsl/params/l10n.gentext.default.language.xml; M: /trunk/xsl/params/list.block.properties.xml; M: /trunk/xsl/params/refentry.source.name.suppress.xml; M: /trunk/xsl/params/htmlhelp.hhp.window.xml; M: /trunk/xsl/params/sidebar.properties.xml; M: /trunk/xsl/params/tex.math.file.xml; M: /trunk/xsl/params/man.justify.xml; M: /trunk/xsl/params/subscript.properties.xml; M: /trunk/xsl/params/column.count.front.xml; M: /trunk/xsl/params/index.term.separator.xml; M: /trunk/xsl/params/biblioentry.properties.xml; M: /trunk/xsl/params/biblioentry.item.separator.xml; M: /trunk/xsl/params/htmlhelp.button.home.url.xml; M: /trunk/xsl/params/column.count.body.xml; M: /trunk/xsl/params/suppress.navigation.xml; M: /trunk/xsl/params/htmlhelp.remember.window.position.xml; M: /trunk/xsl/params/htmlhelp.hhc.section.depth.xml; M: /trunk/xsl/params/xref.with.number.and.title.xml; M: /trunk/xsl/params/make.year.ranges.xml; M: /trunk/xsl/params/region.before.extent.xml; M: /trunk/xsl/params/xref.label-page.separator.xml; M: /trunk/xsl/params/html.longdesc.link.xml; M: /trunk/xsl/params/man.subheading.divider.enabled.xml; M: /trunk/xsl/params/index.entry.properties.xml; M: /trunk/xsl/params/generate.legalnotice.link.xml; M: /trunk/xsl/params/section.autolabel.xml; M: /trunk/xsl/params/html.base.xml; M: /trunk/xsl/params/suppress.footer.navigation.xml; M: /trunk/xsl/params/nominal.image.depth.xml; M: /trunk/xsl/params/table.footnote.number.symbols.xml; M: /trunk/xsl/params/table.footnote.number.format.xml; M: /trunk/xsl/params/callout.graphics.xml; M: /trunk/xsl/params/man.break.after.slash.xml; M: /trunk/xsl/params/function.parens.xml; M: /trunk/xsl/params/part.autolabel.xml; M: /trunk/xsl/params/saxon.callouts.xml; M: /trunk/xsl/params/css.decoration.xml; M: /trunk/xsl/params/htmlhelp.button.home.xml; M: /trunk/xsl/params/email.delimiters.enabled.xml; M: /trunk/xsl/params/column.count.lot.xml; M: /trunk/xsl/params/draft.mode.xml; M: /trunk/xsl/params/use.role.for.mediaobject.xml; M: /trunk/xsl/params/refentry.separator.xml; M: /trunk/xsl/params/man.font.funcsynopsisinfo.xml; M: /trunk/xsl/params/man.output.manifest.filename.xml; M: /trunk/xsl/params/process.empty.source.toc.xml; M: /trunk/xsl/params/man.output.in.separate.dir.xml; M: /trunk/xsl/params/graphicsize.use.img.src.path.xml; M: /trunk/xsl/params/man.output.encoding.xml; M: /trunk/xsl/params/column.gap.lot.xml; M: /trunk/xsl/params/profile.role.xml; M: /trunk/xsl/params/column.count.titlepage.xml; M: /trunk/xsl/params/show.comments.xml; M: /trunk/xsl/params/informalfigure.properties.xml; M: /trunk/xsl/params/entry.propagates.style.xml; M: /trunk/xsl/params/bibliography.collection.xml; M: /trunk/xsl/params/contrib.inline.enabled.xml; M: /trunk/xsl/params/section.title.level5.properties.xml; M: /trunk/xsl/params/fop.extensions.xml; M: /trunk/xsl/params/htmlhelp.button.jump1.xml; M: /trunk/xsl/params/man.hyphenate.urls.xml; M: /trunk/xsl/params/profile.condition.xml; M: /trunk/xsl/params/header.column.widths.xml; M: /trunk/xsl/params/annotation.js.xml; M: /trunk/xsl/params/chunker.output.standalone.xml; M: /trunk/xsl/params/targets.filename.xml; M: /trunk/xsl/params/default.float.class.xml; M: /trunk/xsl/params/chapter.autolabel.xml; M: /trunk/xsl/params/sidebar.float.type.xml; M: /trunk/xsl/params/profile.separator.xml; M: /trunk/xsl/params/generate.index.xml; M: /trunk/xsl/params/nongraphical.admonition.properties.xml; M: /trunk/xsl/params/navig.graphics.xml; M: /trunk/xsl/params/htmlhelp.button.next.xml; M: /trunk/xsl/params/insert.olink.pdf.frag.xml; M: /trunk/xsl/params/htmlhelp.button.stop.xml; M: /trunk/xsl/params/footnote.font.size.xml; M: /trunk/xsl/params/profile.value.xml; M: /trunk/xsl/params/ebnf.table.border.xml; M: /trunk/xsl/params/htmlhelp.hhc.folders.instead.books.xml; M: /trunk/xsl/params/glossary.as.blocks.xml; M: /trunk/xsl/params/body.end.indent.xml; M: /trunk/xsl/params/use.role.as.xrefstyle.xml; M: /trunk/xsl/params/man.indent.blurbs.xml; M: /trunk/xsl/params/chunker.output.encoding.xml; M: /trunk/xsl/params/chunker.output.omit-xml-declaration.xml; M: /trunk/xsl/params/sans.font.family.xml; M: /trunk/xsl/params/html.cleanup.xml; M: /trunk/xsl/params/htmlhelp.hhp.xml; M: /trunk/xsl/params/htmlhelp.only.xml; M: /trunk/xsl/params/eclipse.plugin.name.xml; M: /trunk/xsl/params/section.title.level3.properties.xml; M: /trunk/xsl/params/man.th.extra1.suppress.xml; M: /trunk/xsl/params/chunk.section.depth.xml; M: /trunk/xsl/params/htmlhelp.hhp.tail.xml; M: /trunk/xsl/params/sidebar.title.properties.xml; M: /trunk/xsl/params/hyphenate.xml; M: /trunk/xsl/params/paper.type.xml; M: /trunk/xsl/params/chunk.tocs.and.lots.has.title.xml; M: /trunk/xsl/params/symbol.font.family.xml; M: /trunk/xsl/params/page.margin.bottom.xml; M: /trunk/xsl/params/callout.unicode.number.limit.xml; M: /trunk/xsl/params/itemizedlist.properties.xml; M: /trunk/xsl/params/root.filename.xml; M: /trunk/xsl/params/tablecolumns.extension.xml; M: /trunk/xsl/params/htmlhelp.show.favorities.xml; M: /trunk/xsl/params/informaltable.properties.xml; M: /trunk/xsl/params/revhistory.table.cell.properties.xml; M: /trunk/xsl/params/htmlhelp.default.topic.xml; M: /trunk/xsl/params/compact.list.item.spacing.xml; M: /trunk/xsl/params/page.height.portrait.xml; M: /trunk/xsl/params/html.head.legalnotice.link.types.xml; M: /trunk/xsl/params/passivetex.extensions.xml; M: /trunk/xsl/params/orderedlist.label.properties.xml; M: /trunk/xsl/params/othercredit.like.author.enabled.xml; M: /trunk/xsl/params/header.content.properties.xml; M: /trunk/xsl/params/refentry.meta.get.quietly.xml; M: /trunk/xsl/params/section.properties.xml; M: /trunk/xsl/params/htmlhelp.button.hideshow.xml; M: /trunk/xsl/params/simplesect.in.toc.xml; M: /trunk/xsl/params/chunk.quietly.xml; M: /trunk/xsl/params/htmlhelp.enumerate.images.xml; M: /trunk/xsl/params/section.title.level1.properties.xml; M: /trunk/xsl/params/qanda.defaultlabel.xml; M: /trunk/xsl/params/htmlhelp.enhanced.decompilation.xml; M: /trunk/xsl/params/man.th.title.max.length.xml; M: /trunk/xsl/params/footnote.number.format.xml; M: /trunk/xsl/params/body.margin.bottom.xml; M: /trunk/xsl/params/htmlhelp.window.geometry.xml; M: /trunk/xsl/params/htmlhelp.button.jump2.xml; M: /trunk/xsl/params/use.svg.xml; M: /trunk/xsl/params/qanda.title.level6.properties.xml; M: /trunk/xsl/params/collect.xref.targets.xml; M: /trunk/xsl/params/html.extra.head.links.xml; M: /trunk/xsl/params/variablelist.as.table.xml; M: /trunk/xsl/params/man.indent.width.xml; M: /trunk/xsl/params/eclipse.plugin.id.xml; M: /trunk/xsl/params/linenumbering.width.xml; M: /trunk/xsl/params/axf.extensions.xml; M: /trunk/xsl/params/menuchoice.separator.xml; M: /trunk/xsl/params/glossterm.separation.xml; M: /trunk/xsl/params/htmlhelp.autolabel.xml; M: /trunk/xsl/params/chunk.separate.lots.xml; M: /trunk/xsl/params/man.hyphenate.computer.inlines.xml; M: /trunk/xsl/params/linenumbering.separator.xml; M: /trunk/xsl/params/htmlhelp.title.xml; M: /trunk/xsl/params/index.number.separator.xml; M: /trunk/xsl/params/htmlhelp.button.prev.xml; M: /trunk/xsl/params/refentry.manual.fallback.profile.xml; M: /trunk/xsl/params/table.frame.border.color.xml; M: /trunk/xsl/params/footnote.sep.leader.properties.xml; M: /trunk/xsl/params/hyphenate.verbatim.characters.xml; M: /trunk/xsl/params/table.cell.border.thickness.xml; M: /trunk/xsl/params/template.xml; M: /trunk/xsl/params/margin.note.properties.xml; M: /trunk/xsl/params/man.segtitle.suppress.xml; M: /trunk/xsl/params/generate.toc.xml; M: /trunk/xsl/params/formal.object.properties.xml; M: /trunk/xsl/params/footnote.mark.properties.xml; M: /trunk/xsl/params/header.table.height.xml; M: /trunk/xsl/params/htmlhelp.button.back.xml; M: /trunk/xsl/params/qanda.title.level4.properties.xml; M: /trunk/xsl/params/man.links.are.numbered.xml; M: /trunk/xsl/params/manual.toc.xml; M: /trunk/xsl/params/olink.lang.fallback.sequence.xml; M: /trunk/xsl/params/refentry.manual.profile.enabled.xml; M: /trunk/xsl/params/ulink.hyphenate.chars.xml; M: /trunk/xsl/params/manifest.xml; M: /trunk/xsl/params/olink.fragid.xml; M: /trunk/xsl/params/refentry.date.profile.xml; M: /trunk/xsl/params/linenumbering.extension.xml; M: /trunk/xsl/params/component.title.properties.xml; M: /trunk/xsl/params/alignment.xml; M: /trunk/xsl/params/refentry.version.profile.xml; M: /trunk/xsl/params/ebnf.assignment.xml; M: /trunk/xsl/params/htmlhelp.button.print.xml; M: /trunk/xsl/params/annotation.support.xml; M: /trunk/xsl/params/sidebar.float.width.xml; M: /trunk/xsl/params/normal.para.spacing.xml; M: /trunk/xsl/params/xref.title-page.separator.xml; M: /trunk/xsl/params/callout.unicode.font.xml; M: /trunk/xsl/params/default.table.frame.xml; M: /trunk/xsl/params/pages.template.xml; M: /trunk/xsl/params/htmlhelp.button.zoom.xml; M: /trunk/xsl/params/admonition.title.properties.xml; M: /trunk/xsl/params/callout.graphics.extension.xml; M: /trunk/xsl/params/make.valid.html.xml; M: /trunk/xsl/params/qanda.title.level2.properties.xml; M: /trunk/xsl/params/page.margin.top.xml; M: /trunk/xsl/params/xep.index.item.properties.xml; M: /trunk/xsl/params/section.level5.properties.xml; M: /trunk/xsl/params/line-height.xml; M: /trunk/xsl/params/table.cell.border.color.xml; M: /trunk/xsl/params/qandadiv.autolabel.xml; M: /trunk/xsl/params/xref.label-title.separator.xml; M: /trunk/xsl/params/chunk.tocs.and.lots.xml; M: /trunk/xsl/params/man.font.funcprototype.xml; M: /trunk/xsl/params/process.source.toc.xml; M: /trunk/xsl/params/page.orientation.xml; M: /trunk/xsl/params/refentry.generate.name.xml; M: /trunk/xsl/params/navig.showtitles.xml; M: /trunk/xsl/params/table.table.properties.xml; M: /trunk/xsl/params/arbortext.extensions.xml; M: /trunk/xsl/params/informalequation.properties.xml; M: /trunk/xsl/params/headers.on.blank.pages.xml; M: /trunk/xsl/params/table.footnote.properties.xml; M: /trunk/xsl/params/root.properties.xml; M: /trunk/xsl/params/htmlhelp.display.progress.xml; M: /trunk/xsl/params/htmlhelp.hhp.windows.xml; M: /trunk/xsl/params/graphical.admonition.properties.xml; M: /trunk/xsl/params/refclass.suppress.xml; M: /trunk/xsl/params/profile.conformance.xml; M: /trunk/xsl/params/htmlhelp.button.forward.xml; M: /trunk/xsl/params/segmentedlist.as.table.xml; M: /trunk/xsl/params/margin.note.float.type.xml; M: /trunk/xsl/params/man.table.footnotes.divider.xml; M: /trunk/xsl/params/man.output.quietly.xml; M: /trunk/xsl/params/htmlhelp.hhc.show.root.xml; M: /trunk/xsl/params/footers.on.blank.pages.xml; M: /trunk/xsl/params/crop.mark.offset.xml; M: /trunk/xsl/params/olink.doctitle.xml; M: /trunk/xsl/params/section.level3.properties.xml; M: /trunk/xsl/params/callout.unicode.xml; M: /trunk/xsl/params/formal.procedures.xml; M: /trunk/xsl/params/toc.section.depth.xml; M: /trunk/xsl/params/index.prefer.titleabbrev.xml; M: /trunk/xsl/params/nominal.image.width.xml; M: /trunk/xsl/params/htmlhelp.show.menu.xml; M: /trunk/xsl/params/linenumbering.everyNth.xml; M: /trunk/xsl/params/double.sided.xml; M: /trunk/xsl/params/generate.revhistory.link.xml; M: /trunk/xsl/params/olink.properties.xml; M: /trunk/xsl/params/tex.math.in.alt.xml; M: /trunk/xsl/params/man.output.subdirs.enabled.xml; M: /trunk/xsl/params/section.title.properties.xml; M: /trunk/xsl/params/column.count.back.xml; M: /trunk/xsl/params/toc.indent.width.xml; M: /trunk/xsl/params/man.charmap.uri.xml; M: /trunk/xsl/params/index.method.xml; M: /trunk/xsl/params/generate.section.toc.level.xml; M: /trunk/xsl/params/page.width.portrait.xml; M: /trunk/xsl/params/man.th.extra2.max.length.xml; M: /trunk/xsl/params/abstract.properties.xml; M: /trunk/xsl/params/revhistory.table.properties.xml; M: /trunk/xsl/params/nominal.table.width.xml; M: /trunk/xsl/params/ulink.show.xml; M: /trunk/xsl/params/htmlhelp.button.jump1.title.xml; M: /trunk/xsl/params/index.div.title.properties.xml; M: /trunk/xsl/params/profile.userlevel.xml; M: /trunk/xsl/params/html.cellpadding.xml; M: /trunk/xsl/params/orderedlist.label.width.xml; M: /trunk/xsl/params/crop.marks.xml; M: /trunk/xsl/params/menuchoice.menu.separator.xml; M: /trunk/xsl/params/author.othername.in.middle.xml; M: /trunk/xsl/params/section.level1.properties.xml; M: /trunk/xsl/params/textdata.default.encoding.xml; M: /trunk/xsl/params/label.from.part.xml; M: /trunk/xsl/params/use.embed.for.svg.xml; M: /trunk/xsl/params/list.item.spacing.xml; M: /trunk/xsl/params/htmlhelp.hhc.width.xml; M: /trunk/xsl/params/column.gap.body.xml; M: /trunk/xsl/params/rootid.xml; M: /trunk/xsl/params/glosslist.as.blocks.xml; M: /trunk/xsl/params/index.range.separator.xml; M: /trunk/xsl/params/html.ext.xml; M: /trunk/xsl/params/callout.list.table.xml; M: /trunk/xsl/params/highlight.source.xml; M: /trunk/xsl/params/show.revisionflag.xml; M: /trunk/xsl/params/man.output.manifest.enabled.xml; M: /trunk/xsl/params/make.single.year.ranges.xml; M: /trunk/xsl/params/pgwide.properties.xml; M: /trunk/xsl/params/generate.id.attributes.xml; M: /trunk/xsl/params/emphasis.propagates.style.xml; M: /trunk/xsl/params/abstract.title.properties.xml; M: /trunk/xsl/params/htmlhelp.hhc.xml; M: /trunk/xsl/params/monospace.properties.xml; M: /trunk/xsl/params/htmlhelp.hhk.xml; M: /trunk/xsl/params/table.borders.with.css.xml; M: /trunk/xsl/params/man.links.are.underlined.xml; M: /trunk/xsl/params/profile.vendor.xml; M: /trunk/xsl/params/shade.verbatim.xml; M: /trunk/xsl/params/callout.graphics.path.xml; M: /trunk/xsl/params/olink.debug.xml; M: /trunk/xsl/params/make.graphic.viewport.xml; M: /trunk/xsl/params/footnote.number.symbols.xml; M: /trunk/xsl/params/man.charmap.enabled.xml; M: /trunk/xsl/params/page.height.xml; M: /trunk/xsl/params/htmlhelp.button.jump1.url.xml; M: /trunk/xsl/params/man.font.table.title.xml; M: /trunk/xsl/params/revhistory.title.properties.xml; M: /trunk/xsl/params/chunker.output.media-type.xml; M: /trunk/xsl/params/glossterm.width.xml; M: /trunk/xsl/params/points.per.em.xml; M: /trunk/xsl/params/page.margin.inner.xml; M: /trunk/xsl/params/itemizedlist.label.width.xml; M: /trunk/xsl/params/ulink.hyphenate.xml; M: /trunk/xsl/params/crop.mark.bleed.xml; M: /trunk/xsl/params/use.id.as.filename.xml; M: /trunk/xsl/params/section.title.level6.properties.xml; M: /trunk/xsl/params/highlight.default.language.xml; M: /trunk/xsl/params/man.th.extra2.suppress.xml; M: /trunk/xsl/params/id.warnings.xml; M: /trunk/xsl/params/title.margin.left.xml; M: /trunk/xsl/params/chunker.output.doctype-system.xml; M: /trunk/xsl/params/man.indent.verbatims.xml; M: /trunk/xsl/params/table.frame.border.thickness.xml; M: /trunk/xsl/params/monospace.verbatim.properties.xml; M: /trunk/xsl/params/formal.title.properties.xml; M: /trunk/xsl/params/margin.note.width.xml; M: /trunk/xsl/params/man.hyphenate.filenames.xml; M: /trunk/xsl/params/blockquote.properties.xml; M: /trunk/xsl/params/callout.defaultcolumn.xml; M: /trunk/xsl/params/profile.security.xml; M: /trunk/xsl/params/informal.object.properties.xml; M: /trunk/xsl/params/formal.title.placement.xml; M: /trunk/xsl/params/draft.watermark.image.xml; M: /trunk/xsl/params/equation.properties.xml; M: /trunk/xsl/params/body.font.family.xml; M: /trunk/xsl/params/ignore.image.scaling.xml; M: /trunk/xsl/params/chunk.first.sections.xml; M: /trunk/xsl/params/base.dir.xml; M: /trunk/xsl/params/footnote.properties.xml; M: /trunk/xsl/params/olink.outline.ext.xml; M: /trunk/xsl/params/img.src.path.xml; M: /trunk/xsl/params/qanda.title.properties.xml; M: /trunk/xsl/params/ebnf.statement.terminator.xml; M: /trunk/xsl/params/callouts.extension.xml; M: /trunk/xsl/params/manifest.in.base.dir.xml; M: /trunk/xsl/params/fop1.extensions.xml; M: /trunk/xsl/params/olink.sysid.xml; M: /trunk/xsl/params/section.title.level4.properties.xml; M: /trunk/xsl/params/monospace.font.family.xml; M: /trunk/xsl/params/l10n.gentext.language.xml; M: /trunk/xsl/params/graphic.default.extension.xml; M: /trunk/xsl/params/default.image.width.xml; M: /trunk/xsl/params/htmlhelp.button.refresh.xml; M: /trunk/xsl/params/chunker.output.cdata-section-elements.xml; M: /trunk/xsl/params/admon.graphics.path.xml; M: /trunk/xsl/params/admon.style.xml; M: /trunk/xsl/params/profile.revision.xml; M: /trunk/xsl/params/generate.manifest.xml; M: /trunk/xsl/params/html.longdesc.xml; M: /trunk/xsl/params/footer.rule.xml; M: /trunk/xsl/params/eclipse.plugin.provider.xml; M: /trunk/xsl/params/refentry.source.name.profile.xml; M: /trunk/xsl/params/toc.max.depth.xml; M: /trunk/xsl/params/chunker.output.indent.xml; M: /trunk/xsl/params/html.head.legalnotice.link.multiple.xml; M: /trunk/xsl/params/toc.list.type.xml; M: /trunk/xsl/params/link.mailto.url.xml; M: /trunk/xsl/params/table.properties.xml; M: /trunk/xsl/params/side.float.properties.xml; M: /trunk/xsl/params/man.charmap.use.subset.xml; M: /trunk/xsl/params/annotation.graphic.open.xml; M: /trunk/xsl/params/html.cellspacing.xml; M: /trunk/xsl/params/default.table.width.xml; M: /trunk/xsl/params/xep.extensions.xml; M: /trunk/xsl/params/admonition.properties.xml; M: /trunk/xsl/params/toc.margin.properties.xml; M: /trunk/xsl/params/chunk.toc.xml; M: /trunk/xsl/params/table.entry.padding.xml; M: /trunk/xsl/params/header.rule.xml; M: /trunk/xsl/params/glossentry.show.acronym.xml; M: /trunk/xsl/params/variablelist.as.blocks.xml; M: /trunk/xsl/params/man.hyphenate.xml; M: /trunk/xsl/params/refentry.source.name.profile.enabled.xml; M: /trunk/xsl/params/section.label.includes.component.label.xml; M: /trunk/xsl/params/bridgehead.in.toc.xml; M: /trunk/xsl/params/section.title.level2.properties.xml; M: /trunk/xsl/params/admon.graphics.extension.xml; M: /trunk/xsl/params/inherit.keywords.xml; M: /trunk/xsl/params/insert.xref.page.number.xml; M: /trunk/xsl/params/pixels.per.inch.xml; M: /trunk/xsl/params/refentry.pagebreak.xml; M: /trunk/xsl/params/profile.lang.xml; M: /trunk/xsl/params/insert.olink.page.number.xml; M: /trunk/xsl/params/generate.meta.abstract.xml; M: /trunk/xsl/params/graphicsize.extension.xml; M: /trunk/xsl/params/man.indent.lists.xml; M: /trunk/xsl/params/funcsynopsis.decoration.xml; M: /trunk/xsl/params/runinhead.title.end.punct.xml; M: /trunk/xsl/params/man.string.subst.map.xml; M: /trunk/xsl/params/man.links.list.enabled.xml; M: /trunk/xsl/params/section.autolabel.max.depth.xml; M: /trunk/xsl/params/htmlhelp.show.advanced.search.xml; M: /trunk/xsl/params/htmlhelp.map.file.xml; M: /trunk/xsl/params/l10n.gentext.use.xref.language.xml; M: /trunk/xsl/params/body.font.size.xml; M: /trunk/xsl/params/html.stylesheet.type.xml; M: /trunk/xsl/params/refentry.xref.manvolnum.xml; M: /trunk/xsl/params/runinhead.default.title.end.punct.xml; M: /trunk/xsl/params/navig.graphics.extension.xml; M: /trunk/xsl/params/itemizedlist.label.properties.xml; M: /trunk/xsl/params/htmlhelp.force.map.and.alias.xml; M: /trunk/xsl/params/profile.os.xml; M: /trunk/xsl/params/htmlhelp.alias.file.xml; M: /trunk/xsl/params/page.margin.outer.xml; M: /trunk/xsl/params/annotation.graphic.close.xml; M: /trunk/xsl/params/eclipse.autolabel.xml; M: /trunk/xsl/params/table.frame.border.style.xml; M: /trunk/xsl/params/navig.graphics.path.xml; M: /trunk/xsl/params/htmlhelp.hhc.binary.xml; M: /trunk/xsl/params/index.on.type.xml; M: /trunk/xsl/params/target.database.document.xml; M: /trunk/xsl/params/man.subheading.divider.xml; M: /trunk/xsl/params/chunker.output.method.xml; M: /trunk/xsl/params/make.index.markup.xml; M: /trunk/xsl/params/olink.base.uri.xml; M: /trunk/xsl/params/phrase.propagates.style.xml; M: /trunk/xsl/params/man.indent.refsect.xml; M: /trunk/xsl/params/example.properties.xml; M: /trunk/xsl/params/man.font.table.headings.xml; M: /trunk/xsl/params/profile.revisionflag.xml; M: /trunk/xsl/params/region.after.extent.xml; M: /trunk/xsl/params/qanda.title.level5.properties.xml; M: /trunk/xsl/params/marker.section.level.xml; M: /trunk/xsl/params/footer.table.height.xml; M: /trunk/xsl/params/autotoc.label.separator.xml; M: /trunk/xsl/params/footer.column.widths.xml; M: /trunk/xsl/params/hyphenate.verbatim.xml; M: /trunk/xsl/params/xref.properties.xml; M: /trunk/xsl/params/man.output.base.dir.xml; M: /trunk/xsl/params/man.links.list.heading.xml; M: /trunk/xsl/params/insert.link.page.number.xml; M: /trunk/xsl/params/htmlhelp.button.jump2.title.xml; M: /trunk/xsl/params/l10n.lang.value.rfc.compliant.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Updated index.method doc to describe revised setup for importing <tag>index</tag> extensions.<alt>M: /trunk/xsl/params/index.method.xml - Robert Stayton</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added several new HTML parameters for controlling appearance of
+content on HTML <tag>title</tag> pages:
+
+<parameter>contrib.inline.enabled</parameter>:
+ If non-zero (the default), output of the <tag>contrib</tag> element is
+ displayed as inline content rather than as block content.
+
+<parameter>othercredit.like.author.enabled</parameter>:
+ If non-zero, output of the <tag>othercredit</tag> element on titlepages is
+ displayed in the same style as <tag>author</tag> and <tag>editor</tag> output. If zero
+ (the default), <tag>othercredit</tag> output is displayed using a style
+ different than that of <tag>author</tag> and <tag>editor</tag>.
+
+<parameter>blurb.on.titlepage.enabled</parameter>:
+ If non-zero, output from authorblurb and <tag>personblurb</tag> elements is
+ displayed on <tag>title</tag> pages. If zero (the default), output from
+ those elements is suppressed on <tag>title</tag> pages (unless you are
+ using a titlepage customization that causes them to be included).
+
+<parameter>editedby.enabled</parameter>
+ If non-zero (the default), a localized Edited by heading is
+ displayed above <tag>editor</tag> names in output of the <tag>editor</tag> element.<alt>A: /trunk/xsl/params/contrib.inline.enabled.xml; A: /trunk/xsl/params/blurb.on.titlepage.enabled.xml; A: /trunk/xsl/params/othercredit.like.author.enabled.xml; A: /trunk/xsl/params/editedby.enabled.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added new <parameter>email.delimiters.enabled</parameter> param. If non-zero (the
+default), delimiters are generated around e-mail addresses (output
+of the <tag>email</tag> element). If zero, the delimiters are suppressed.<alt>A: /trunk/xsl/params/email.delimiters.enabled.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Added <parameter>qanda.nested.in.toc</parameter> param. Default value is zero. If
+non-zero, instances of "nested" <tag>Qandaentry</tag> (ones that are children
+of <tag>Answer</tag> elements) are displayed in the <tag>TOC</tag>. Closes patch 1509018
+(from Daniel Leidert). Currently on affects HTML output (no patch
+for FO output provided).<alt>A: /trunk/xsl/params/qanda.nested.in.toc.xml - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+<listitem>
+<literallayout><phrase role="commit-message">Initial support of syntax highlighting of programlistings.<alt>A: /trunk/xsl/params/highlight.source.xml; A: /trunk/xsl/params/highlight.default.language.xml - Jirka Kosek</alt></phrase></literallayout>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.71.0-->
+
+<sect2 xml:id="V1.71.0_Tools">
+<title>Tools</title>
+<para>The following changes have been made to the
+ <filename>tools</filename> code
+ since the 1.70.1 release.</para>
+<itemizedlist>
+
+<listitem>
+<literallayout><phrase role="commit-message">Racheted down font sizes of headings in example makefile FO output.<alt>M: /trunk/xsl/tools/make/Makefile.DocBook - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added param and attribute set to example makefile, for getting
+wrapping in verbatims in FO output.<alt>M: /trunk/xsl/tools/make/Makefile.DocBook - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Renamed Makefile.paramDoc to Makefile.docParam.<alt>A: /trunk/xsl/tools/make/Makefile.docParam; D: /trunk/xsl/tools/make/Makefile.paramDoc - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added Makefile.paramDoc file, for creating versions of param.xsl
+files with doc embedded.<alt>A: /trunk/xsl/tools/make/Makefile.paramDoc - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+<listitem>
+<literallayout><phrase role="commit-message">Added variable to example makefile for controlling whether HTML or
+XHTML is generated.<alt>M: /trunk/xsl/tools/make/Makefile.DocBook - Michael(tm) Smith</alt></phrase></literallayout>
+</listitem>
+
+</itemizedlist>
+</sect2><!--end of Tools changes for 1.71.0-->
+</sect1>
+
+<sect1 xml:id="V1701">
+<title>Release: 1.70.1</title>
+
+<para>This is a stable release of the 1.70 stylesheets. It includes only a
+few small changes from 1.70.0.</para>
+
+<para>The following is a list of changes that have been made
+ since the 1.70.0 release.</para>
+
+<sect2 xml:id="V1701_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.70.0 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output.</para>
+<para role="commit-changes">Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support DBv5 revisions with full author name (not only authorinitials)</para>
+<para role="commit-changes">Modified: fo/block.xsl,1.33; fo/titlepage.xsl,1.40 - Jirka Kosek</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.70.1-->
+
+<sect2 xml:id="V1701_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.70.0 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Support DBv5 revisions with full author name (not only authorinitials)</para>
+<para role="commit-changes">Modified: html/block.xsl,1.23; html/titlepage.xsl,1.34 - Jirka Kosek</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.70.1-->
+
+<sect2 xml:id="V1701_HTMLHelp">
+<title>HTMLHelp</title>
+<para>The following changes have been made to the
+ <filename>htmlhelp</filename> code
+ since the 1.70.0 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>htmlhelp.generate.index is now param, not variable. This means that you can override its setting from outside. This is useful when you generate indexterms on the fly (see http://www.xml.com/pub/a/2004/07/14/dbndx.html?page=3).</para>
+<para role="commit-changes">Modified: htmlhelp/htmlhelp-common.xsl,1.38 - Jirka Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support chunk.tocs.and.lots in HTML Help</para>
+<para role="commit-changes">Modified: htmlhelp/htmlhelp-common.xsl,1.37 - Jirka Kosek</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTMLHelp changes for 1.70.1-->
+
+<sect2 xml:id="V1701_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.70.0 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output.</para>
+<para role="commit-changes">Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.70.1-->
+
+</sect1>
+
+<sect1 xml:id="V1700">
+<title>Release: 1.70.0</title>
+<para>As with all DocBook Project <link linkend="dot0">dot-zero</link>
+releases, this is an experimental release. It will be followed shortly
+by a stable release.</para>
+
+<para>This release adds a number of new features,
+including:</para>
+
+<itemizedlist>
+ <listitem>
+ <para>support for selecting alternative index-collation methods
+ (in particular, support for using a collation library developed by
+ Eliot Kimber)</para>
+ </listitem>
+ <listitem>
+ <para>improved handling of DocBook 5 document instances (through a
+ namespace-stripping mechanism)</para>
+ </listitem>
+ <listitem>
+ <para>full support for CALS and HTML tables in manpages
+ output</para>
+ </listitem>
+ <listitem>
+ <para>a mechanism for preserving relative URIs in documents that
+ make use of XInclude</para>
+ </listitem>
+ <listitem>
+ <para>support for the "new" <literal>.90</literal> version of
+ FOP</para>
+ </listitem>
+ <listitem>
+ <para>enhanced capabilities for controlling formatting of lists in HTML
+ and FO output</para>
+ </listitem>
+ <listitem>
+ <para>autogeneration of AUTHOR and COPYRIGHT sections in manpages
+ output</para>
+ </listitem>
+ <listitem>
+ <para>support for generating crop marks in FO/PDF output</para>
+ </listitem>
+ <listitem>
+ <para>support for qandaset as a root element in FO output</para>
+ </listitem>
+ <listitem>
+ <para>support for floatstyle and orient on all table types</para>
+ </listitem>
+ <listitem>
+ <para>support for floatstyle in figure, and example</para>
+ </listitem>
+ <listitem>
+ <para>pgwide.properties attribute-set supports extending figure,
+ example and table into the left indent area instead of spanning
+ multiple columns.</para>
+ </listitem>
+</itemizedlist>
+ <para>The following is a detailed list of enhancements and API
+ changes that have been made since the 1.69.1 release.</para>
+
+<sect2 xml:id="V1700_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Add the xsl:key for the kimber
+indexing method.</para>
+<para role="commit-changes">Modified: common/autoidx-ng.xsl,1.2 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for
+<tag>qandaset</tag>.</para>
+<para role="commit-changes">Modified: common/labels.xsl,1.37;
+common/subtitles.xsl,1.7; common/titles.xsl,1.35 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support dbhtml/dbfo start PI for
+<tag>orderedlist</tag> numbering in both HTML and
+FO</para>
+<para role="commit-changes">Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added CVS
+header.</para>
+<para role="commit-changes">Modified: common/stripns.xsl,1.12 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Changed content model of text
+element to ANY rather than #PCDATA because they could contain
+markup.</para>
+<para role="commit-changes">Modified: common/targetdatabase.dtd,1.7 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+<tag>refentry</tag>.meta.get.quietly param.</para>
+<para>If zero (the
+default), notes and warnings about "missing" markup are generated
+during gathering of <tag>refentry</tag> metadata. If
+non-zero, the metadata is gathered "quietly" -- that is, the
+notes and warnings are suppressed.</para>
+<para>NOTE: If you are
+processing a large amount of <tag>refentry</tag> content, you
+may be able to speed up processing significantly by setting a
+non-zero value for
+<tag>refentry</tag>.meta.get.quietly.</para>
+<para role="commit-changes">Modified: common/refentry.xsl,1.17;
+manpages/param.ent,1.15; manpages/param.xweb,1.17;
+params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>After namespace stripping, the
+source document is the temporary tree created by the stripping
+process and it has the wrong base <tag>URI</tag> for relative
+references. Earlier versions of this code used to try to fix that
+by patching the elements with relative @fileref attributes. That
+was inadequate because it calculated an absolute base <tag>URI</tag>
+without considering that there might be xml:base attributes
+already in effect. It seems obvious now that the right thing to
+do is simply to put the xml:base on the root of the document. And
+that seems to work.</para>
+<para role="commit-changes">Modified: common/stripns.xsl,1.7 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for "software" and
+"sectdesc" class values on <tag>refmiscinfo</tag>; "software" is
+treated identically to "source", and "setdesc" is treated
+identically to "manual".</para>
+<para role="commit-changes">Modified: common/refentry.xsl,1.10;
+params/man.th.extra2.max.length.xml,1.3;
+params/refentry.source.name.profile.xml,1.4 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for DocBook 5
+namespace-stripping in manpages stylesheet. Closes request
+#1210692.</para>
+<para role="commit-changes">Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added &lt;xsl:template
+match="/"&gt; to make stripns.xsl usable as a standalone
+stylesheet for stripping out DocBook 5/NG to DocBook 4. Note that
+DocBook XSLT drivers that include this stylesheet all override
+the match="/" template.</para>
+<para role="commit-changes">Modified: common/stripns.xsl,1.4 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Number figures, examples, and
+tables from <tag>book</tag> if there is no prefix (i.e. if
+<parameter>chapter.autolabel</parameter> is set to 0). This avoids
+having the list of figures where the figures mysteriously restart
+their numeration periodically when
+<parameter>chapter.autolabel</parameter> is set to
+0.</para>
+<para role="commit-changes">Modified: common/labels.xsl,1.36 - David Cramer</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add <tag>task</tag> template in
+<tag>title</tag>.markup mode.</para>
+<para role="commit-changes">Modified: common/titles.xsl,1.34 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add children (with ids) of formal
+objects to target data.</para>
+<para role="commit-changes">Modified: common/targets.xsl,1.10 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for case when
+<tag>personname</tag> doesn't contain specific name markup (as allowed
+in DocBook 5.0)</para>
+<para role="commit-changes">Modified: common/common.xsl,1.54 - Jirka
+Kosek</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_Extensions">
+<title>Extensions</title>
+<para>The following changes have been made to the
+ <filename>extensions</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Support Xalan
+2.7</para>
+<para role="commit-changes">Modified: extensions/xalan27/.cvsignore,1.1;
+extensions/xalan27/build.xml,1.1;
+extensions/xalan27/nbproject/.cvsignore,1.1;
+extensions/xalan27/nbproject/build-impl.xml,1.1;
+extensions/xalan27/nbproject/genfiles.properties,1.1;
+extensions/xalan27/nbproject/project.properties,1.1;
+extensions/xalan27/nbproject/project.xml,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/CVS.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Callout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatDingbatCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatGraphicCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatTextCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/FormatUnicodeCallout.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Func.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/ImageIntrinsics.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Params.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Table.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Text.java,1.1;
+extensions/xalan27/src/com/nwalsh/xalan/Verbatim.java,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Handle the case where the imageFn
+is actually a <tag>URI</tag>. This still needs
+work.</para>
+<para role="commit-changes">Modified: extensions/saxon643/com/nwalsh/saxon/ImageIntrinsics.java,1.4
+- Norman Walsh</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Extensions changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Adapted to the new indexing
+code. Now works just like a wrapper that calls kosek indexing method,
+originally implemented here.</para>
+<para role="commit-changes">Modified: fo/autoidx-ng.xsl,1.5 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added parameters for header/footer
+<tag>table</tag> minimum height.</para>
+<para role="commit-changes">Modified: fo/pagesetup.xsl,1.60;
+fo/param.ent,1.100; fo/param.xweb,1.113 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add the <tag>index</tag>.method
+parameter.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.99; fo/param.xweb,1.112 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Integrate support for three
+indexing methods: - the original English-only method. -
+Jirka Kosek's method using EXSLT extensions. - Eliot Kimber's
+method using Saxon extensions. Use the '<tag>index</tag>.method'
+parameter to select.</para>
+<para role="commit-changes">Modified: fo/autoidx.xsl,1.38 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for <tag>TOC</tag> for
+<tag>qandaset</tag> in fo output.</para>
+<para role="commit-changes">Modified: fo/autotoc.xsl,1.30;
+fo/qandaset.xsl,1.20 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added parameter
+<parameter>ulink.hyphenate</parameter>.chars. Added parameter
+insert.<tag>link</tag>.page.number.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.98;
+fo/param.xweb,1.111 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented feature request
+#942524 to add insert.<tag>link</tag>.page.number to allow link
+element cross references to have a page number.</para>
+<para role="commit-changes">Modified: fo/xref.xsl,1.67 -
+Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for
+<parameter>ulink.hyphenate</parameter>.chars so more characters
+can be break points in urls.</para>
+<para role="commit-changes">Modified: fo/xref.xsl,1.66 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented patch #1075144 to make
+the url text in a ulink in FO output an active <tag>link</tag> as
+well.</para>
+<para role="commit-changes">Modified: fo/xref.xsl,1.65 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para><tag>table</tag> footnotes now
+have their own <tag>table</tag>.<tag>footnote</tag>.properties
+attribute set.</para>
+<para role="commit-changes">Modified: fo/footnote.xsl,1.23 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add <tag>qandaset</tag> to
+root.elements.</para>
+<para role="commit-changes">Modified: fo/docbook.xsl,1.41 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added mode="page.sequence" to make
+it easier to put content into a page sequence. First used for
+<tag>qandaset</tag>.</para>
+<para role="commit-changes">Modified: fo/component.xsl,1.37 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented feature request
+#1434408 to support formatting
+of <tag>biblioentry</tag>.</para>
+<para role="commit-changes">Modified: fo/biblio.xsl,1.35 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+<tag>biblioentry</tag>.properties.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.97;
+fo/param.xweb,1.110 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support PTC/Arbortext
+bookmarks</para>
+<para role="commit-changes">Modified: fo/docbook.xsl,1.40; fo/ptc.xsl,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+<tag>table</tag>.<tag>footnote</tag>.properties to permit
+<tag>table</tag> footnotes to format differently from regular
+footnotes.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.96; fo/param.xweb,1.109 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Refactored <tag>table</tag>
+templates to unify their processing and support all options in
+all types. Now <tag>table</tag> and <tag>informaltable</tag>, in
+both Cals and Html markup, use the same templates where possible,
+and all support pgwide, rotation, and floats. There is also a
+placeholder <tag>table</tag>.container template to
+support wrapping a <tag>table</tag> in a layout <tag>table</tag>,
+so the XEP <tag>table</tag> <tag>title</tag> "continued"
+extension can be more easily implemented.</para>
+<para role="commit-changes">Modified: fo/formal.xsl,1.52;
+fo/htmltbl.xsl,1.9; fo/table.xsl,1.48 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new attribute set
+<tag>toc</tag>.line.properties for controlling appearance of lines in
+ToC/LoT</para>
+<para role="commit-changes">Modified: fo/autotoc.xsl,1.29; fo/param.ent,1.95;
+fo/param.xweb,1.108 - Jirka Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for float to example
+and <tag>equation</tag>. Added support for pgwide to
+<tag>figure</tag>, example, and <tag>equation</tag> (the latter
+two via a dbfo pgwide="1" processing
+instruction).</para>
+<para role="commit-changes">Modified: fo/formal.xsl,1.51 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add pgwide.properties
+attribute-set.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.94; fo/param.xweb,1.107 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added <tag>refclass</tag>.suppress
+param.</para>
+<para>If the value of <tag>refclass</tag>.suppress is
+non-zero, then display <tag>refclass</tag> contents is suppressed
+in output. Affects HTML and FO output
+only.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90;
+html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Improved support for
+<tag>task</tag> subelements</para>
+<para role="commit-changes">Modified: fo/task.xsl,1.3; html/task.xsl,1.3 -
+Jirka Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Adjusted spacing around
+K&amp;R-formatted <tag>Funcdef</tag> and <tag>Paramdef</tag>
+output such that it can more easily be discerned where one ends
+and the other begins. Closes #1213264.</para>
+<para role="commit-changes">Modified: fo/synop.xsl,1.18 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Made handling of
+paramdef/parameter in FO output consistent with that in HTML and
+manpages output. Closes #1213259.</para>
+<para role="commit-changes">Modified: fo/synop.xsl,1.17 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Made handling of
+<tag>Refnamediv</tag> consistent with formatting in HTML
+and manpages output; specifically, changed so that
+<tag>Refname</tag> (comma-separated list of multiple instances
+found) is used (instead of <tag>Refentrytitle</tag> as
+previously), then em-dash, then the <tag>Refpurpose</tag>. Closes
+#1212562.</para>
+<para role="commit-changes">Modified: fo/refentry.xsl,1.30 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added output of
+<tag>Releaseinfo</tag> to recto titlepage ("<tag>copyright</tag>"
+page) for <tag>Book</tag> in FO output. This makes it consistent
+with HTML output. Closes #1327034. Thanks to Paul DuBois for
+reporting.</para>
+<para role="commit-changes">Modified: fo/titlepage.templates.xml,1.28 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added condition for setting
+block-progression-dimension.minimum on table-row, instead of
+height, when <parameter>fop1.extensions</parameter> is
+non-zero. For an explanation of the reason for the change,
+<tag>see</tag>: http://wiki.apache.org/xmlgraphics-fop/Troubleshooting/CommonLogMessages</para>
+<para role="commit-changes">Modified: fo/pagesetup.xsl,1.59
+- Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new
+<tag>refclass</tag>.suppress param for suppressing display
+of <tag>Refclass</tag> in HTML and FO output. Did not add it to
+manpages because manpages stylesheet is currently just silently
+ignoring <tag>Refclass</tag> anyway. Closes request
+#1461065. Thanks to Davor Ocelic (docelic) for
+reporting.</para>
+<para role="commit-changes">Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for keep-together PI
+to informal objects.</para>
+<para role="commit-changes">Modified: fo/formal.xsl,1.50 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for
+<parameter>fop1.extensions</parameter>.</para>
+<para role="commit-changes">Modified: fo/formal.xsl,1.49;
+fo/graphics.xsl,1.44; fo/table.xsl,1.47 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for fop1
+bookmarks.</para>
+<para role="commit-changes">Modified: fo/docbook.xsl,1.39 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add fop1.extentions parameter to
+add support for fop development version.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.92;
+fo/param.xweb,1.105 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Start supporting fop development
+version, which will become fop version 1.</para>
+<para role="commit-changes">Modified: fo/fop1.xsl,1.1 -
+Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add template for <tag>task</tag>
+in mode="xref-to".</para>
+<para role="commit-changes">Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para><tag>table</tag> footnotes now
+also get <tag>footnote</tag>.properties
+attribute-set.</para>
+<para role="commit-changes">Modified: fo/footnote.xsl,1.22 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added <tag>index</tag>.separator
+named template to compute the separator punctuation based on
+locale.</para>
+<para role="commit-changes">Modified: fo/autoidx.xsl,1.36 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for <tag>link</tag>,
+<tag>olink</tag>, and <tag>xref</tag> within OO
+<tag>Classsynopsis</tag> and children. (Because DocBook NG/5
+allows it).</para>
+<para role="commit-changes">Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support <tag>date</tag> as an
+inline</para>
+<para role="commit-changes">Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new parameter
+<parameter>keep.relative.image.uris</parameter></para>
+<para role="commit-changes">Modified: fo/param.ent,1.91;
+fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96;
+params/keep.relative.image.uris.xml,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Map Unicode space characters
+U+2000-U+200A to fo:leaders.</para>
+<para role="commit-changes">Modified: fo/docbook.xsl,1.38;
+fo/passivetex.xsl,1.4; fo/spaces.xsl,1.1 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Output a real em dash for em-dash
+dingbat (instead of two hypens).</para>
+<para role="commit-changes">Modified: fo/fo.xsl,1.7 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support default <tag>label</tag>
+width parameters for itemized and ordered lists</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.64;
+fo/param.ent,1.90; fo/param.xweb,1.103;
+params/itemizedlist.label.width.xml,1.1;
+params/orderedlist.label.width.xml,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Generate localized
+<tag>title</tag> for <tag>Refsynopsisdiv</tag> if no
+appropriate <tag>Title</tag> descendant found in source. Closes
+#1212398. This change makes behavior for the <tag>Synopsis</tag>
+<tag>title</tag> consistent with the behavior of HTML and
+manpages output.</para>
+<para>Also, added
+xsl:use-attribute-sets="normal.<tag>para</tag>.spacing" to
+block generated for <tag>Cmdsynopsis</tag> output. Previously,
+that block had no spacing at all specified, which resulted it
+being crammed up to closely to the <tag>Synopsis</tag>
+head.</para>
+<para role="commit-changes">Modified: fo/refentry.xsl,1.28; fo/synop.xsl,1.13 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added parameters to support
+localization of <tag>index</tag>
+item punctuation.</para>
+<para role="commit-changes">Modified: fo/autoidx.xsl,1.35 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+<parameter>index.number.separator</parameter>,
+<parameter>index.range.separator</parameter>,
+and <parameter>index.term.separator</parameter> parameters to
+support localization of punctuation in <tag>index</tag>
+entries.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.89; fo/param.xweb,1.102 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added "Cross References"
+<tag>section</tag> in HTML doc (for consistency with the FO
+doc). Also, moved the existing FO "Cross
+References" <tag>section</tag> to follow the "Linking"
+<tag>section</tag>.</para>
+<para role="commit-changes">Modified: fo/param.xweb,1.101; html/param.xweb,1.95 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added ID attribues to all
+<tag>Reference</tag> elements (e.g., id="tables" for the doc for
+<tag>section</tag> on <tag>Table</tag> params). So pages for
+all subsections of ref docs now have stable filenames instead
+of arbitrary generated filenames.</para>
+<para role="commit-changes">Modified: fo/param.xweb,1.100;
+html/param.xweb,1.94 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added two new parameters for
+handling of multi-term
+<tag>varlistentry</tag> elements:</para>
+<para><parameter>variablelist.term.break.after</parameter>:
+When the <parameter>variablelist.term.break.after</parameter> is
+non-zero, it will generate a line break after each
+<tag>term</tag> multi-term
+<tag>varlistentry</tag>.</para>
+<para><parameter>variablelist.term.separator</parameter>:
+When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is
+placed after each <tag>term</tag> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<parameter>variablelist.term.separator</parameter> to the empty
+string ("").</para>
+<para>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</para>
+<para>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</para>
+<para>Also, added
+normalize-space() call to processing of each
+<tag>term</tag>.</para>
+<para>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add <tag>sidebar</tag> titlepage
+placeholder attset for styles.</para>
+<para role="commit-changes">Modified: fo/titlepage.xsl,1.37 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add titlepage for
+<tag>sidebar</tag>.</para>
+<para role="commit-changes">Modified: fo/titlepage.templates.xml,1.27 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented RFE
+#1292615.</para>
+<para>Added bunch of new parameters (attribute sets)
+that affect list presentation: list.block.properties,
+<tag>itemizedlist</tag>.properties, <tag>orderedlist</tag>.properties,
+<tag>itemizedlist</tag>.<tag>label</tag>.properties and
+<tag>orderedlist</tag>.<tag>label</tag>.properties. Default behaviour
+of stylesheets has not been changed but further customizations will be
+much more easier.</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.61; fo/param.ent,1.87;
+fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1;
+params/itemizedlist.properties.xml,1.1;
+params/list.block.properties.xml,1.1;
+params/orderedlist.label.properties.xml,1.1;
+params/orderedlist.properties.xml,1.1 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented RFE
+#1242092.</para>
+<para>You can enable crop marks in your document by
+setting crop.marks=1 and xep.extensions=1. Appearance of crop
+marks can be controlled by parameters
+<parameter>crop.mark.bleed</parameter> (6pt),
+<parameter>crop.mark.offset</parameter> (24pt) and
+<parameter>crop.mark.width</parameter> (0.5pt).</para>
+<para>Also there
+is new named template called user-xep-pis. You can overwrite it in
+order to produce some PIs that can control XEP as described in
+http://www.renderx.com/reference.html#Output_Formats</para>
+<para role="commit-changes">Modified: fo/docbook.xsl,1.36;
+fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23;
+params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1;
+params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka
+Kosek</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>implemented
+<tag>index</tag>.method parameter and three
+methods.</para>
+<para role="commit-changes">Modified: html/autoidx.xsl,1.28 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>added <tag>index</tag>.method
+parameter to support 3 indexing methods.</para>
+<para role="commit-changes">Modified: html/param.ent,1.94;
+html/param.xweb,1.103 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented feature request
+#1072510 as a processing instruction to permit including external
+HTML content into HTML output.</para>
+<para role="commit-changes">Modified: html/pi.xsl,1.9 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new parameter
+<parameter>chunk.tocs.and.lots</parameter>.has.<tag>title</tag> which
+controls presence of <tag>title</tag> in a separate chunk with
+ToC/LoT. Disabling <tag>title</tag> can be very useful if you are
+generating frameset output (well, yes those frames, but some customers
+really want them ;-).</para>
+<para role="commit-changes">Modified: html/chunk-code.xsl,1.15;
+html/param.ent,1.93; html/param.xweb,1.102;
+params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support dbhtml/dbfo start PI for
+<tag>orderedlist</tag> numbering in both HTML and
+FO</para>
+<para role="commit-changes">Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Allow <tag>ToC</tag> without
+<tag>title</tag> also for set and
+<tag>book</tag>.</para>
+<para role="commit-changes">Modified: html/autotoc.xsl,1.37; html/division.xsl,1.12 -
+Jirka Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented floats uniformly for
+<tag>figure</tag>, example, <tag>equation</tag>
+and <tag>informalfigure</tag>, <tag>informalexample</tag>, and
+<tag>informalequation</tag>.</para>
+<para role="commit-changes">Modified: html/formal.xsl,1.22 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added the
+autotoc.<tag>label</tag>.in.hyperlink param.</para>
+<para>If the value
+of autotoc.<tag>label</tag>.in.hyperlink is non-zero, labels
+are included in hyperlinked titles in the <tag>TOC</tag>. If it
+is instead zero, labels are still displayed prior to the
+hyperlinked titles, but are not hyperlinked along with the
+titles.</para>
+<para>Closes patch #1065868. Thanks to anatoly techtonik
+for the patch.</para>
+<para role="commit-changes">Modified: html/autotoc.xsl,1.36; html/param.ent,1.92;
+html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added two new params:
+html.head.<tag>legalnotice</tag>.<tag>link</tag>.types
+and html.head.<tag>legalnotice</tag>.<tag>link</tag>.multiple.</para>
+<para>If
+the value of the <parameter>generate.legalnotice.link</parameter> is
+non-zero, then the stylesheet generates (in the head
+<tag>section</tag> of the HTML source) either a single HTML
+<tag>link</tag> element or, if the value of
+the html.head.<tag>legalnotice</tag>.<tag>link</tag>.multiple is
+non-zero, one <tag>link</tag> element for each <tag>link</tag>
+type specified. Each <tag>link</tag> has the
+following attributes:</para>
+<para> - a rel attribute whose value
+is derived from the value of
+html.head.<tag>legalnotice</tag>.<tag>link</tag>.types</para>
+<para> -
+an href attribute whose value is set to the URL of the file
+containing the <tag>legalnotice</tag></para>
+<para> - a <tag>title</tag>
+attribute whose value is set to the <tag>title</tag> of the
+corresponding <tag>legalnotice</tag> (or a <tag>title</tag>
+programatically determined by the stylesheet)</para>
+<para>For
+example:</para>
+<para> &lt;<tag>link</tag> rel="<tag>copyright</tag>"
+href="ln-id2524073.html" title="Legal Notice"&gt;</para>
+<para>Closes
+#1476450. Thanks to Sam Steingold.</para>
+<para role="commit-changes">Modified: html/chunk-common.xsl,1.45;
+html/param.ent,1.91; html/param.xweb,1.100;
+params/generate.legalnotice.link.xml,1.4;
+params/html.head.legalnotice.link.multiple.xml,1.1;
+params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added <tag>refclass</tag>.suppress
+param.</para>
+<para>If the value of <tag>refclass</tag>.suppress is
+non-zero, then display <tag>refclass</tag> contents is suppressed
+in output. Affects HTML and FO output
+only.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90;
+html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Improved support for
+<tag>task</tag> subelements</para>
+<para role="commit-changes">Modified: fo/task.xsl,1.3; html/task.xsl,1.3 -
+Jirka Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new
+<tag>refclass</tag>.suppress param for suppressing display
+of <tag>Refclass</tag> in HTML and FO output. Did not add it to
+manpages because manpages stylesheet is currently just silently
+ignoring <tag>Refclass</tag> anyway. Closes request
+#1461065. Thanks to Davor Ocelic (docelic) for
+reporting.</para>
+<para role="commit-changes">Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Process <tag>alt</tag> text with
+normalize-space(). Replace tab indents with
+spaces.</para>
+<para role="commit-changes">Modified: html/graphics.xsl,1.57 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Content of <tag>citation</tag>
+element is automatically linked to the bibliographic <tag>entry</tag>
+with the corresponding <tag>abbrev</tag>.</para>
+<para role="commit-changes">Modified: html/biblio.xsl,1.26;
+html/inline.xsl,1.47; html/xref.xsl,1.58 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add template for <tag>task</tag>
+in mode="xref-to".</para>
+<para role="commit-changes">Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Suppress ID warnings if the
+.warnings parameter is 0</para>
+<para role="commit-changes">Modified: html/html.xsl,1.17 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for floatstyle to
+<tag>figure</tag>.</para>
+<para role="commit-changes">Modified: html/formal.xsl,1.21 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Handling of <tag>xref</tag> to
+area/areaset need support in extensions code also. I currently have no
+time to touch extensions code, so code is here to be enabled when
+extension is fixed also.</para>
+<para role="commit-changes">Modified: html/xref.xsl,1.56 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added 3 parameters for overriding
+gentext for <tag>index</tag>
+punctuation.</para>
+<para role="commit-changes">Modified: html/param.ent,1.89; html/param.xweb,1.98 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added parameters to support
+localization of <tag>index</tag> item punctuation. Added
+<tag>index</tag>.separator named template to compute
+the separator punctuation based on
+locale.</para>
+<para role="commit-changes">Modified: html/autoidx.xsl,1.27 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added a &lt;div
+class="{$class}-contents"&gt; wrapper around output of contents
+of all formal objects. Also, added an optional &lt;br
+class="{class}-break"/&gt; linebreak after all formal
+objects.</para>
+<para>WARNING: Because this change places an additional
+DIV between the DIV wrapper for the <tag>equation</tag> and the
+<tag>equation</tag> contents, it may break some existing CSS
+stylesheets that have been created with the assumption that there
+would never be an intervening DIV there.</para>
+<para>The following is
+an example of what <tag>Equation</tag> output looks like as a
+result of the changes described above.</para>
+<para> &lt;div
+class="<tag>equation</tag>"&gt; &lt;a name="three"
+id="three"&gt;&lt;/a&gt;</para>
+<para> &lt;p
+class="<tag>title</tag>"&gt;&lt;b&gt;(1.3)&lt;/b&gt;&lt;/p&gt;</para>
+<para>
+&lt;div class="equation-contents"&gt; &lt;span
+class="<tag>mathphrase</tag>"&gt;1+1=3&lt;/span&gt;
+&lt;/div&gt; &lt;/div&gt;&lt;br
+class="equation-break"&gt;</para>
+<para>Rationale: These changes allow
+CSS control of the placement of the formal-object
+<tag>title</tag> relative to the formal-object
+contents. For example, using the CSS "float" <tag>property</tag>
+enables the <tag>title</tag> and contents to be rendered on the
+same line. Example stylesheet:</para>
+<para> .<tag>equation</tag>
+{ margin-top: 20px; margin-bottom: 20px; }
+.equation-contents { float: left; }</para>
+<para>
+.<tag>equation</tag> .<tag>title</tag> { margin-top: 0;
+float: right; margin-right: 200px; }</para>
+<para>
+.<tag>equation</tag> .<tag>title</tag> b { font-weight:
+normal; }</para>
+<para> .equation-break { clear: both;
+}</para>
+<para>Note that the purpose of the ".equation-break" class is
+to provide a way to clear off the floats.</para>
+<para>If you want
+to instead have the <tag>equation</tag> <tag>title</tag> rendered to
+the left of the <tag>equation</tag> contents, you can do
+something like this:</para>
+<para> .<tag>equation</tag> {
+margin-top: 20px; width: 300px; margin-bottom: 20px;
+} .equation-contents { float: right; }</para>
+<para>
+.<tag>equation</tag> .<tag>title</tag> { margin-top: 0;
+float: left; margin-right: 200px; }</para>
+<para>
+.<tag>equation</tag> .<tag>title</tag> b { font-weight:
+normal; }</para>
+<para> .equation-break { clear: both;
+}</para>
+<para role="commit-changes">Modified: html/formal.xsl,1.20 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added a chunker.output.quiet
+top-level parameter so that the chunker can be made quiet by
+default</para>
+<para role="commit-changes">Modified: html/chunker.xsl,1.26 - Norman Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for <tag>link</tag>,
+<tag>olink</tag>, and <tag>xref</tag> within OO
+<tag>Classsynopsis</tag> and children. (Because DocBook NG/5
+allows it).</para>
+<para role="commit-changes">Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>New parameter:
+<parameter>id.warnings</parameter>. If non-zero, warnings are
+generated for titled objects that don't have titles. True by default;
+I wonder if this will be too aggressive?</para>
+<para role="commit-changes">Modified: html/biblio.xsl,1.25;
+html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19;
+html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16;
+html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22;
+html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>If the
+<parameter>keep.relative.image.uris</parameter> parameter is true,
+don't use the absolute <tag>URI</tag> (as calculated from xml:base) in
+the img src attribute, us the value the <tag>author</tag>
+specified. Note that we still have to calculate the absolute
+<tag>filename</tag> for use in the image intrinsics
+extension.</para>
+<para role="commit-changes">Modified: html/graphics.xsl,1.56 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support <tag>date</tag> as an
+inline</para>
+<para role="commit-changes">Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new parameter
+<parameter>keep.relative.image.uris</parameter></para>
+<para role="commit-changes">Modified: fo/param.ent,1.91;
+fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96;
+params/keep.relative.image.uris.xml,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added two new parameters for
+handling of multi-term
+<tag>varlistentry</tag> elements:</para>
+<para><parameter>variablelist.term.break.after</parameter>:
+When the <parameter>variablelist.term.break.after</parameter> is
+non-zero, it will generate a line break after each
+<tag>term</tag> multi-term
+<tag>varlistentry</tag>.</para>
+<para><parameter>variablelist.term.separator</parameter>:
+When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is
+placed after each <tag>term</tag> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<parameter>variablelist.term.separator</parameter> to the empty
+string ("").</para>
+<para>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</para>
+<para>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</para>
+<para>Also, added
+normalize-space() call to processing of each
+<tag>term</tag>.</para>
+<para>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added "wrapper-name" param to
+inline.charseq named template, enabling it to output inlines
+other than just "span". <tag>Acronym</tag> and <tag>Abbrev</tag>
+templates now use inline.charseq to output HTML
+"<tag>acronym</tag>" and "abbr" elements (instead of
+"span"). Closes #1305468. Thanks to Sam Steingold for suggesting
+the change.</para>
+<para role="commit-changes">Modified: html/inline.xsl,1.45 - Michael(tm)
+Smith</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Added the following
+params:</para>
+<para> - man.indent.width (string-valued) -
+man.indent.refsect (boolean) - man.indent.blurbs (boolean)
+- man.indent.lists (boolean) - man.indent.verbatims
+(boolean)</para>
+<para>Note that in earlier snapshots, man.indent.width
+was named man.indentation.default.value and the boolean params
+had names like man.indentation.*.adjust. Also the
+man.indent.blurbs param was called man.indentation.authors.adjust
+(or something).</para>
+<para>The behavior now is: If the value of a
+particular man.indent.* boolean param is non-zero, the
+corresponding contents (refsect*, list items,
+authorblurb/personblurb, vervatims) are displayed with a left
+margin indented by a width equal to the value
+of man.indent.width.</para>
+<para role="commit-changes">Modified: params/man.indent.blurbs.xml,1.1;
+manpages/docbook.xsl,1.74; manpages/info.xsl,1.20;
+manpages/lists.xsl,1.30; manpages/other.xsl,1.20;
+manpages/param.ent,1.22; manpages/param.xweb,1.24;
+manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1;
+params/man.indent.refsect.xml,1.1;
+params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.<tag>table</tag>.footnotes.divider param.</para>
+<para>In each
+<tag>table</tag> that contains footenotes, the string specified
+by the man.<tag>table</tag>.footnotes.divider parameter is output
+before the list of footnotes for the
+<tag>table</tag>.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.73;
+manpages/links.xsl,1.6; manpages/param.ent,1.21;
+manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added the
+man.output.in.separate.dir,
+man.output.<parameter>base.dir</parameter>,
+and man.output.subdirs.enabled parameters.</para>
+<para>The
+man.output.<parameter>base.dir</parameter> parameter specifies the
+base directory into which man-page files are
+output. The man.output.subdirs.enabled parameter controls whether
+the files are output in subdirectories within the base
+directory.</para>
+<para>The values of the
+man.output.<parameter>base.dir</parameter>
+and man.output.subdirs.enabled parameters are used only if the
+value of man.output.in.separate.dir parameter is non-zero. If the
+value of man.output.in.separate.dir is zero, man-page files are
+not output in a separate
+directory.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20;
+manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1;
+params/man.output.in.separate.dir.xml,1.1;
+params/man.output.subdirs.enabled.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.font.<tag>table</tag>.headings and
+man.font.<tag>table</tag>.<tag>title</tag> params, for
+controlling font in <tag>table</tag> headings and
+titles.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19;
+manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1;
+params/man.font.table.title.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.font.<tag>funcsynopsisinfo</tag> and
+man.font.<tag>funcprototype</tag> params, for specifying the roff
+font (for example, BI, B, I) for <tag>funcsynopsisinfo</tag> and
+<tag>funcprototype</tag> output.</para>
+<para role="commit-changes">Modified: manpages/block.xsl,1.19;
+manpages/docbook.xsl,1.69; manpages/param.ent,1.18;
+manpages/param.xweb,1.20; manpages/synop.xsl,1.29;
+manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1;
+params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.<tag>segtitle</tag>.suppress param.</para>
+<para>If the value of
+man.<tag>segtitle</tag>.suppress is non-zero, then display
+of <tag>segtitle</tag> contents is suppressed in
+output.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17;
+manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.output.<parameter>manifest</parameter>.enabled and
+man.output.manifest.<tag>filename</tag> params.</para>
+<para>If
+man.output.<parameter>manifest</parameter>.enabled is non-zero, a list
+of filenames for man pages generated by the stylesheet
+transformation is written to the file named by
+man.output.<parameter>manifest</parameter>.<tag>filename</tag></para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.67;
+manpages/other.xsl,1.19; manpages/param.ent,1.16;
+manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1;
+params/man.output.manifest.filename.xml,1.1;
+tools/make/Makefile.DocBook,1.4 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+<tag>refentry</tag>.meta.get.quietly param.</para>
+<para>If zero (the
+default), notes and warnings about "missing" markup are generated
+during gathering of <tag>refentry</tag> metadata. If
+non-zero, the metadata is gathered "quietly" -- that is, the
+notes and warnings are suppressed.</para>
+<para>NOTE: If you are
+processing a large amount of <tag>refentry</tag> content, you
+may be able to speed up processing significantly by setting a
+non-zero value for
+<tag>refentry</tag>.meta.get.quietly.</para>
+<para role="commit-changes">Modified: common/refentry.xsl,1.17;
+manpages/param.ent,1.15; manpages/param.xweb,1.17;
+params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Changed names of all boolean
+indentation params to man.indent.* Also discarded individual
+man.indent.*.value params and switched to just using a common
+man.indent.width param (3n by default).</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.66;
+manpages/info.xsl,1.19; manpages/lists.xsl,1.29;
+manpages/other.xsl,1.18; manpages/refentry.xsl,1.13 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added boolean
+man.output.in.separate.dir param, to control whether or not man
+files are output in separate directory.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.65;
+manpages/utility.xsl,1.14 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added options for controlling
+indentation of verbatim output. Controlled through the
+man.indentation.verbatims.adjust
+and man.indentation.verbatims.value params. Closes
+#1242997</para>
+<para role="commit-changes">Modified: manpages/block.xsl,1.15; manpages/docbook.xsl,1.64 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added options for controlling
+indentation in lists and in *blurb output in the AUTHORS
+<tag>section</tag>. Controlled through
+the man.indentation.lists.adjust,
+man.indentation.lists.value, man.indentation.authors.adjust, and
+man.indentation.authors.value parameters. Default is 3 characters
+(instead of the roff default of 8 characters). Closes
+#1449369.</para>
+<para>Also, removed the indent that was being set on
+<tag>informalexample</tag> outuput. I will instead add an option
+for indenting verbatims, which I think is what the
+<tag>informalexample</tag> indent was intended
+for originally.</para>
+<para role="commit-changes">Modified: manpages/block.xsl,1.14;
+manpages/docbook.xsl,1.63; manpages/info.xsl,1.18;
+manpages/lists.xsl,1.28 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Changed line-spacing call before
+<tag>synopfragment</tag> to use ".sp -1n" ("n" units specified)
+instead of plain ".sp -1"</para>
+<para role="commit-changes">Modified: manpages/synop.xsl,1.28 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for writing man
+files into a specific output directory and into appropriate
+subdirectories within that output directory. Controlled through
+the man.<parameter>base.dir</parameter> parameter (similar to the
+<parameter>base.dir</parameter> support in the HTML stylesheet) and
+the man.subdirs.enabled parameter, which automatically determines
+the name of an appropriate subdir (for example, man/man7,
+man/man1, etc.) based on the <tag>section</tag> number/manvolnum
+of the source <tag>Refentry</tag>.</para>
+<para>Closes #1255036 and
+#1170317. Thanks to Denis Bradford for the original feature
+request, and to Costin Stroie for submitting a patch that was
+very helpful in implementing the
+support.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.62; manpages/utility.xsl,1.13 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Refined XPath statements and
+notification messages for <tag>refentry</tag> metadata
+handling.</para>
+<para role="commit-changes">Modified: common/common.xsl,1.59; common/refentry.xsl,1.14;
+manpages/docbook.xsl,1.61; manpages/other.xsl,1.17 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for
+<tag>copyright</tag> and <tag>legalnotice</tag>. The manpages
+stylesheets now output a <tag>COPYRIGHT</tag> <tag>section</tag>,
+after the AUTHORS <tag>section</tag>, if a <tag>copyright</tag>
+or <tag>legalnotice</tag> is found in the source. The
+<tag>section</tag> contains the <tag>copyright</tag> contents followed
+by the <tag>legalnotice</tag> contents. Closes
+#1450209.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.59; manpages/info.xsl,1.17 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Drastically reworked all of the
+XPath expressions used in <tag>refentry</tag> metadata gathering
+-- completely removed $parentinfo and turned $info into a set of
+nodes that includes the *info contents of the <tag>Refentry</tag>
+plus the *info contents all all of its ancestor elements. The
+basic XPath expression now used throughout is (using the example
+of checking for a <tag>date</tag>):</para>
+<para>
+(($info[//date])[last()]/date)[1].</para>
+<para>That selects the "last"
+*info/date <tag>date</tag> in document order -- that is, the one
+eitther on the <tag>Refentry</tag> itself or on the
+closest ancestor to the <tag>Refentry</tag>.</para>
+<para>It's
+likely this change may break some things; may need to pick up
+some pieces later.</para>
+<para>Also, changed the default value for the
+<parameter>man.th.extra2.max.length</parameter> from 40 to
+30.</para>
+<para role="commit-changes">Modified: common/common.xsl,1.58; common/refentry.xsl,1.7;
+params/man.th.extra2.max.length.xml,1.2;
+params/refentry.date.profile.xml,1.2;
+params/refentry.manual.profile.xml,1.2;
+params/refentry.source.name.profile.xml,1.2;
+params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58;
+manpages/other.xsl,1.15 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for DocBook 5
+namespace-stripping in manpages stylesheet. Closes request
+#1210692.</para>
+<para role="commit-changes">Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Fixed handling of <tag>table</tag>
+footnotes. With this checkin, the <tag>table</tag> support in the
+manpages stylesheet is now basically feature complete. So this
+change closes request #619532, "No support for tables" -- the
+oldest currently open manpages feature request, submitted by Ben
+Secrest (blsecres) on 2002-10-07. Congratulations to me [patting
+myself on the back].</para>
+<para role="commit-changes">Modified: manpages/block.xsl,1.11;
+manpages/docbook.xsl,1.55; manpages/table.xsl,1.15 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added handling for
+<tag>table</tag> titles. Also fixed handling of nested tables;
+nest tables are now "extracted" and displayed just after their
+parent tables.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.54; manpages/table.xsl,1.14
+- Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added option for turning off bold
+formatting in <tag>Funcsynopsis</tag>. Boldface formatting in
+<tag>function</tag> <tag>synopsis</tag> is mandated in the
+man(7) man page and is used almost universally in existing man
+pages. Despite that, it really does look like crap to have an
+entire <tag>Funcsynopsis</tag> output in bold, so I added params
+for turning off the bold formatting and/or replacing it with a
+different roff special font (e.g., "RI" for alternating
+roman/italic instead of the default "BI" for alternating
+bold/italic). The new params
+are "man.<tag>funcprototype</tag>.font" and
+"man.<tag>funcsynopsisinfo</tag>.font". To be documented
+later.</para>
+<para>Closes #1452247. Thanks to Joe Orton for the feature
+request.</para>
+<para role="commit-changes">Modified: params/man.string.subst.map.xml,1.16;
+manpages/block.xsl,1.10; manpages/docbook.xsl,1.51;
+manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Use AUTHORS instead of
+<tag>AUTHOR</tag> if we have multiple people to attribute. Also,
+fixed checking such that we generate
+<tag>author</tag> <tag>section</tag> even if we don't have an
+<tag>author</tag> (as long as there is at least one other
+person/entity we can put in the
+<tag>section</tag>). Also adjusted assembly of content for
+<tag>Author</tag> metainfo field such that we now not only use
+<tag>author</tag>, but try to find a "best match" if we can't
+find an <tag>author</tag> name to put there.</para>
+<para>Closes
+#1233592. Thanks to Sam Steingold for the
+request.</para>
+<para role="commit-changes">Modified: manpages/info.xsl,1.12 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Changes for request #1243027,
+"Impove handling of <tag>AUTHOR</tag> <tag>section</tag>." This
+adds support for <tag>Collab</tag>, Corpauthor, Corpcredt,
+<tag>Orgname</tag>, <tag>Publishername</tag>, and
+<tag>Publisher</tag>. Also adds support for output
+of <tag>Affiliation</tag> and its children, and support for using
+gentext strings for auto-attributing roles (<tag>Author</tag>,
+<tag>Editor</tag>, <tag>Publisher</tag>, Translator, etc.). Also
+did a lot of code cleanup and modularization of all the
+<tag>AUTHOR</tag> handling code. And fixed a bug that was causing
+<tag>Author</tag> <tag>info</tag> to not be picked up correctly
+for metainfo comment we embed in man-page
+source.</para>
+<para role="commit-changes">Modified: manpages/info.xsl,1.11 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support bold output for
+"<tag>emphasis</tag> remap='B'". (because Eric Raymond's
+doclifter(1) tool converts groff source marked up with ".B"
+request or "\fB" escapes to DocBook "<tag>emphasis</tag>
+remap='B'".)</para>
+<para role="commit-changes">Modified: manpages/inline.xsl,1.14 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for
+<tag>Segmentedlist</tag>. Details: Output is tabular, with no
+option for "list" type output. Output for <tag>Segtitle</tag>
+elements can be supressed by
+setting man.<tag>segtitle</tag>.suppress. If <tag>Segtitle</tag>
+content is output, it is rendered in italic type (not bold
+because not all terminals support bold and so italic ensures the
+stand out on those terminals). Extra space (.sp line) at end of
+<tag>table</tag> code ensures that it gets handled correctly in
+the case where its source is the child of a <tag>Para</tag>.
+Closes feature-request #1400097. Thanks to Daniel Leidert for the
+patch and push, and to Alastair Rankine for filing the original
+feature request.</para>
+<para role="commit-changes">Modified: manpages/lists.xsl,1.23;
+manpages/utility.xsl,1.10 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Improved handling or
+Author/Editor/Othercredit.</para>
+<para>Reworked content of
+(non-visible) comment added at top of each page (metadata
+stuff).</para>
+<para>Added support for generating a
+<parameter>manifest</parameter> file (useful for cleaning up
+after builds, etc.)</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.46;
+manpages/info.xsl,1.9; manpages/other.xsl,1.12;
+manpages/utility.xsl,1.6 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added two new parameters for
+handling of multi-term
+<tag>varlistentry</tag> elements:</para>
+<para><parameter>variablelist.term.break.after</parameter>:
+When the <parameter>variablelist.term.break.after</parameter> is
+non-zero, it will generate a line break after each
+<tag>term</tag> multi-term
+<tag>varlistentry</tag>.</para>
+<para><parameter>variablelist.term.separator</parameter>:
+When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is
+placed after each <tag>term</tag> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<parameter>variablelist.term.separator</parameter> to the empty
+string ("").</para>
+<para>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</para>
+<para>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</para>
+<para>Also, added
+normalize-space() call to processing of each
+<tag>term</tag>.</para>
+<para>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>New parameters to set
+header/footer <tag>table</tag> minimum
+height.</para>
+<para role="commit-changes">Modified: params/footer.table.height.xml,1.1;
+params/header.table.height.xml,1.1 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support multiple indexing methods
+for different languages.</para>
+<para role="commit-changes">Modified: params/index.method.xml,1.1 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Remove <tag>qandaset</tag> and
+<tag>qandadiv</tag> from <parameter>generate.toc</parameter> for fo
+output because formerly it wasn't working, but now it is and
+the default behavior should stay the
+same.</para>
+<para role="commit-changes">Modified: params/generate.toc.xml,1.8 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>add support for page number
+references to <tag>link</tag> element
+too.</para>
+<para role="commit-changes">Modified: params/insert.link.page.number.xml,1.1 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Add support for more characters to
+hyphen on when <parameter>ulink.hyphenate</parameter> is turned
+on.</para>
+<para role="commit-changes">Modified: params/ulink.hyphenate.chars.xml,1.1;
+params/ulink.hyphenate.xml,1.3 - Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>New attribute-set to format
+<tag>biblioentry</tag> and
+<tag>bibliomixed</tag>.</para>
+<para role="commit-changes">Modified: params/biblioentry.properties.xml,1.1 -
+Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new parameter
+<parameter>chunk.tocs.and.lots</parameter>.has.<tag>title</tag> which
+controls presence of <tag>title</tag> in a separate chunk with
+ToC/LoT. Disabling <tag>title</tag> can be very useful if you are
+generating frameset output (well, yes those frames, but some customers
+really want them ;-).</para>
+<para role="commit-changes">Modified: html/chunk-code.xsl,1.15;
+html/param.ent,1.93; html/param.xweb,1.102;
+params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new attribute set
+<tag>toc</tag>.line.properties for controlling appearance of lines in
+ToC/LoT</para>
+<para role="commit-changes">Modified: params/toc.line.properties.xml,1.1 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Allow <tag>table</tag> footnotes
+to have different properties from regular
+footnotes.</para>
+<para role="commit-changes">Modified: params/table.footnote.properties.xml,1.1 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Set properties for pgwide="1"
+objects.</para>
+<para role="commit-changes">Modified: params/pgwide.properties.xml,1.1 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added the
+autotoc.<tag>label</tag>.in.hyperlink param.</para>
+<para>If the value
+of autotoc.<tag>label</tag>.in.hyperlink is non-zero, labels
+are included in hyperlinked titles in the <tag>TOC</tag>. If it
+is instead zero, labels are still displayed prior to the
+hyperlinked titles, but are not hyperlinked along with the
+titles.</para>
+<para>Closes patch #1065868. Thanks to anatoly techtonik
+for the patch.</para>
+<para role="commit-changes">Modified: html/autotoc.xsl,1.36; html/param.ent,1.92;
+html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added two new params:
+html.head.<tag>legalnotice</tag>.<tag>link</tag>.types
+and html.head.<tag>legalnotice</tag>.<tag>link</tag>.multiple.</para>
+<para>If
+the value of the <parameter>generate.legalnotice.link</parameter> is
+non-zero, then the stylesheet generates (in the head
+<tag>section</tag> of the HTML source) either a single HTML
+<tag>link</tag> element or, if the value of
+the html.head.<tag>legalnotice</tag>.<tag>link</tag>.multiple is
+non-zero, one <tag>link</tag> element for each <tag>link</tag>
+type specified. Each <tag>link</tag> has the
+following attributes:</para>
+<para> - a rel attribute whose value
+is derived from the value of
+html.head.<tag>legalnotice</tag>.<tag>link</tag>.types</para>
+<para> -
+an href attribute whose value is set to the URL of the file
+containing the <tag>legalnotice</tag></para>
+<para> - a <tag>title</tag>
+attribute whose value is set to the <tag>title</tag> of the
+corresponding <tag>legalnotice</tag> (or a <tag>title</tag>
+programatically determined by the stylesheet)</para>
+<para>For
+example:</para>
+<para> &lt;<tag>link</tag> rel="<tag>copyright</tag>"
+href="ln-id2524073.html" title="Legal Notice"&gt;</para>
+<para>Closes
+#1476450. Thanks to Sam Steingold.</para>
+<para role="commit-changes">Modified: html/chunk-common.xsl,1.45;
+html/param.ent,1.91; html/param.xweb,1.100;
+params/generate.legalnotice.link.xml,1.4;
+params/html.head.legalnotice.link.multiple.xml,1.1;
+params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added the following
+params:</para>
+<para> - man.indent.width (string-valued) -
+man.indent.refsect (boolean) - man.indent.blurbs (boolean)
+- man.indent.lists (boolean) - man.indent.verbatims
+(boolean)</para>
+<para>Note that in earlier snapshots, man.indent.width
+was named man.indentation.default.value and the boolean params
+had names like man.indentation.*.adjust. Also the
+man.indent.blurbs param was called man.indentation.authors.adjust
+(or something).</para>
+<para>The behavior now is: If the value of a
+particular man.indent.* boolean param is non-zero, the
+corresponding contents (refsect*, list items,
+authorblurb/personblurb, vervatims) are displayed with a left
+margin indented by a width equal to the value
+of man.indent.width.</para>
+<para role="commit-changes">Modified: params/man.indent.blurbs.xml,1.1;
+manpages/docbook.xsl,1.74; manpages/info.xsl,1.20;
+manpages/lists.xsl,1.30; manpages/other.xsl,1.20;
+manpages/param.ent,1.22; manpages/param.xweb,1.24;
+manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1;
+params/man.indent.refsect.xml,1.1;
+params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.<tag>table</tag>.footnotes.divider param.</para>
+<para>In each
+<tag>table</tag> that contains footenotes, the string specified
+by the man.<tag>table</tag>.footnotes.divider parameter is output
+before the list of footnotes for the
+<tag>table</tag>.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.73;
+manpages/links.xsl,1.6; manpages/param.ent,1.21;
+manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added the
+man.output.in.separate.dir,
+man.output.<parameter>base.dir</parameter>,
+and man.output.subdirs.enabled parameters.</para>
+<para>The
+man.output.<parameter>base.dir</parameter> parameter specifies the
+base directory into which man-page files are
+output. The man.output.subdirs.enabled parameter controls whether
+the files are output in subdirectories within the base
+directory.</para>
+<para>The values of the
+man.output.<parameter>base.dir</parameter>
+and man.output.subdirs.enabled parameters are used only if the
+value of man.output.in.separate.dir parameter is non-zero. If the
+value of man.output.in.separate.dir is zero, man-page files are
+not output in a separate
+directory.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20;
+manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1;
+params/man.output.in.separate.dir.xml,1.1;
+params/man.output.subdirs.enabled.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.font.<tag>table</tag>.headings and
+man.font.<tag>table</tag>.<tag>title</tag> params, for
+controlling font in <tag>table</tag> headings and
+titles.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19;
+manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1;
+params/man.font.table.title.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.font.<tag>funcsynopsisinfo</tag> and
+man.font.<tag>funcprototype</tag> params, for specifying the roff
+font (for example, BI, B, I) for <tag>funcsynopsisinfo</tag> and
+<tag>funcprototype</tag> output.</para>
+<para role="commit-changes">Modified: manpages/block.xsl,1.19;
+manpages/docbook.xsl,1.69; manpages/param.ent,1.18;
+manpages/param.xweb,1.20; manpages/synop.xsl,1.29;
+manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1;
+params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Changed to select="0" in
+<tag>refclass</tag>.suppress (instead of
+..&gt;0&lt;/..)</para>
+<para role="commit-changes">Modified: params/refclass.suppress.xml,1.3 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.<tag>segtitle</tag>.suppress param.</para>
+<para>If the value of
+man.<tag>segtitle</tag>.suppress is non-zero, then display
+of <tag>segtitle</tag> contents is suppressed in
+output.</para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17;
+manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 -
+Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+man.output.<parameter>manifest</parameter>.enabled and
+man.output.manifest.<tag>filename</tag> params.</para>
+<para>If
+man.output.<parameter>manifest</parameter>.enabled is non-zero, a list
+of filenames for man pages generated by the stylesheet
+transformation is written to the file named by
+man.output.<parameter>manifest</parameter>.<tag>filename</tag></para>
+<para role="commit-changes">Modified: manpages/docbook.xsl,1.67;
+manpages/other.xsl,1.19; manpages/param.ent,1.16;
+manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1;
+params/man.output.manifest.filename.xml,1.1;
+tools/make/Makefile.DocBook,1.4 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added <tag>refclass</tag>.suppress
+param.</para>
+<para>If the value of <tag>refclass</tag>.suppress is
+non-zero, then display <tag>refclass</tag> contents is suppressed
+in output. Affects HTML and FO output
+only.</para>
+<para role="commit-changes">Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90;
+html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added
+<tag>refentry</tag>.meta.get.quietly param.</para>
+<para>If zero (the
+default), notes and warnings about "missing" markup are generated
+during gathering of <tag>refentry</tag> metadata. If
+non-zero, the metadata is gathered "quietly" -- that is, the
+notes and warnings are suppressed.</para>
+<para>NOTE: If you are
+processing a large amount of <tag>refentry</tag> content, you
+may be able to speed up processing significantly by setting a
+non-zero value for
+<tag>refentry</tag>.meta.get.quietly.</para>
+<para role="commit-changes">Modified: common/refentry.xsl,1.17;
+manpages/param.ent,1.15; manpages/param.xweb,1.17;
+params/refentry.meta.get.quietly.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added support for "software" and
+"sectdesc" class values on <tag>refmiscinfo</tag>; "software" is
+treated identically to "source", and "setdesc" is treated
+identically to "manual".</para>
+<para role="commit-changes">Modified: common/refentry.xsl,1.10;
+params/man.th.extra2.max.length.xml,1.3;
+params/refentry.source.name.profile.xml,1.4 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Drastically reworked all of the
+XPath expressions used in <tag>refentry</tag> metadata gathering
+-- completely removed $parentinfo and turned $info into a set of
+nodes that includes the *info contents of the <tag>Refentry</tag>
+plus the *info contents all all of its ancestor elements. The
+basic XPath expression now used throughout is (using the example
+of checking for a <tag>date</tag>):</para>
+<para>
+(($info[//date])[last()]/date)[1].</para>
+<para>That selects the "last"
+*info/date <tag>date</tag> in document order -- that is, the one
+eitther on the <tag>Refentry</tag> itself or on the
+closest ancestor to the <tag>Refentry</tag>.</para>
+<para>It's
+likely this change may break some things; may need to pick up
+some pieces later.</para>
+<para>Also, changed the default value for the
+<parameter>man.th.extra2.max.length</parameter> from 40 to
+30.</para>
+<para role="commit-changes">Modified: common/common.xsl,1.58; common/refentry.xsl,1.7;
+params/man.th.extra2.max.length.xml,1.2;
+params/refentry.date.profile.xml,1.2;
+params/refentry.manual.profile.xml,1.2;
+params/refentry.source.name.profile.xml,1.2;
+params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58;
+manpages/other.xsl,1.15 - Michael(tm) Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added option for turning off bold
+formatting in <tag>Funcsynopsis</tag>. Boldface formatting in
+<tag>function</tag> <tag>synopsis</tag> is mandated in the
+man(7) man page and is used almost universally in existing man
+pages. Despite that, it really does look like crap to have an
+entire <tag>Funcsynopsis</tag> output in bold, so I added params
+for turning off the bold formatting and/or replacing it with a
+different roff special font (e.g., "RI" for alternating
+roman/italic instead of the default "BI" for alternating
+bold/italic). The new params
+are "man.<tag>funcprototype</tag>.font" and
+"man.<tag>funcsynopsisinfo</tag>.font". To be documented
+later.</para>
+<para>Closes #1452247. Thanks to Joe Orton for the feature
+request.</para>
+<para role="commit-changes">Modified: params/man.string.subst.map.xml,1.16;
+manpages/block.xsl,1.10; manpages/docbook.xsl,1.51;
+manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para><parameter>fop.extensions</parameter> now only
+for FOP version 0.20.5 and earlier.</para>
+<para role="commit-changes">Modified: params/fop.extensions.xml,1.4
+- Robert Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support for fop1 different from
+fop 0.20.5 and earlier.</para>
+<para role="commit-changes">Modified: params/fop1.extensions.xml,1.1 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Reset default value to empty
+string so template uses gentext first, then the parameter value
+if not empty.</para>
+<para role="commit-changes">Modified: params/index.number.separator.xml,1.2;
+params/index.range.separator.xml,1.2;
+params/index.term.separator.xml,1.2 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>New parameter:
+<parameter>id.warnings</parameter>. If non-zero, warnings are
+generated for titled objects that don't have titles. True by default;
+I wonder if this will be too aggressive?</para>
+<para role="commit-changes">Modified: html/biblio.xsl,1.25;
+html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19;
+html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16;
+html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22;
+html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added new parameter
+<parameter>keep.relative.image.uris</parameter></para>
+<para role="commit-changes">Modified: fo/param.ent,1.91;
+fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96;
+params/keep.relative.image.uris.xml,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Support default <tag>label</tag>
+width parameters for itemized and ordered lists</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.64;
+fo/param.ent,1.90; fo/param.xweb,1.103;
+params/itemizedlist.label.width.xml,1.1;
+params/orderedlist.label.width.xml,1.1 - Norman
+Walsh</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added parameters to localize
+punctuation in indexes.</para>
+<para role="commit-changes">Modified: params/index.number.separator.xml,1.1;
+params/index.range.separator.xml,1.1;
+params/index.term.separator.xml,1.1 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Added two new parameters for
+handling of multi-term
+<tag>varlistentry</tag> elements:</para>
+<para><parameter>variablelist.term.break.after</parameter>:
+When the <parameter>variablelist.term.break.after</parameter> is
+non-zero, it will generate a line break after each
+<tag>term</tag> multi-term
+<tag>varlistentry</tag>.</para>
+<para><parameter>variablelist.term.separator</parameter>:
+When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is
+placed after each <tag>term</tag> except the last. The default
+is ", " (a comma followed by a space). To suppress rendering of
+the separator, set the value of
+<parameter>variablelist.term.separator</parameter> to the empty
+string ("").</para>
+<para>These parameters are primarily intended to be
+useful if you have multi-term varlistentries that have long
+terms.</para>
+<para>Closes #1306676. Thanks to Sam Steingold for
+providing an example "lots of long terms" doc that demonstrated
+the value of having these options.</para>
+<para>Also, added
+normalize-space() call to processing of each
+<tag>term</tag>.</para>
+<para>This change affects all output formats
+(HTML, PDF, manpages). The default behavior should pretty much
+remain the same as before, but it is possible (as always) that
+the change may introduce some
+new bugginess.</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.62; fo/param.ent,1.88;
+fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86;
+html/param.xweb,1.93; manpages/lists.xsl,1.22;
+manpages/param.ent,1.14; manpages/param.xweb,1.16;
+params/variablelist.term.break.after.xml,1.1;
+params/variablelist.term.separator.xml,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+<listitem role="commit-message">
+<para>Convert 'no' to string in default
+value.</para>
+<para role="commit-changes">Modified: params/olink.doctitle.xml,1.4 - Robert
+Stayton</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented RFE
+#1292615.</para>
+<para>Added bunch of new parameters (attribute sets)
+that affect list presentation: list.block.properties,
+<tag>itemizedlist</tag>.properties, <tag>orderedlist</tag>.properties,
+<tag>itemizedlist</tag>.<tag>label</tag>.properties and
+<tag>orderedlist</tag>.<tag>label</tag>.properties. Default behaviour
+of stylesheets has not been changed but further customizations will be
+much more easier.</para>
+<para role="commit-changes">Modified: fo/lists.xsl,1.61; fo/param.ent,1.87;
+fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1;
+params/itemizedlist.properties.xml,1.1;
+params/list.block.properties.xml,1.1;
+params/orderedlist.label.properties.xml,1.1;
+params/orderedlist.properties.xml,1.1 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Implemented RFE
+#1242092.</para>
+<para>You can enable crop marks in your document by
+setting crop.marks=1 and xep.extensions=1. Appearance of crop
+marks can be controlled by parameters
+<parameter>crop.mark.bleed</parameter> (6pt),
+<parameter>crop.mark.offset</parameter> (24pt) and
+<parameter>crop.mark.width</parameter> (0.5pt).</para>
+<para>Also there
+is new named template called user-xep-pis. You can overwrite it in
+order to produce some PIs that can control XEP as described in
+http://www.renderx.com/reference.html#Output_Formats</para>
+<para role="commit-changes">Modified: fo/docbook.xsl,1.36;
+fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23;
+params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1;
+params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka
+Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Changed short descriptions in doc
+for *autolabel* params to match new autolabel
+behavior.</para>
+<para role="commit-changes">Modified: params/appendix.autolabel.xml,1.5;
+params/chapter.autolabel.xml,1.4; params/part.autolabel.xml,1.5;
+params/preface.autolabel.xml,1.4 - Michael(tm)
+Smith</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_Profiling">
+<title>Profiling</title>
+<para>The following changes have been made to the
+ <filename>profiling</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Profiling now works together with
+namespace stripping (V5 documents). Namespace striping should work
+with all stylesheets named profile-, even if they are not supporting
+namespace stripping in a non-profiling
+variant.</para>
+<para role="commit-changes">Modified: profiling/profile-mode.xsl,1.4;
+profiling/xsl2profile.xsl,1.7 - Jirka Kosek</para>
+</listitem>
+<listitem role="commit-message">
+<para>Moved profiling stage out of
+templates. This make possible to reuse profiled content by several
+templates and still maintaing node indentity (needed for example for
+HTML Help where content is processed multiple times).</para>
+<para>I
+don't know why this was not on the top level before. Maybe some XSLT
+processors choked on it. I hope this will be OK
+now.</para>
+<para role="commit-changes">Modified: profiling/xsl2profile.xsl,1.5 - Jirka
+Kosek</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Profiling changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_Tools">
+<title>Tools</title>
+<para>The following changes have been made to the
+ <filename>tools</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>Moved Makefile.DocBook from
+<tag>contrib</tag> module to xsl
+module.</para>
+<para role="commit-changes">Modified: tools/make/Makefile.DocBook,1.1 - Michael(tm)
+Smith</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Tools changes for snapshot_2006-05-15_0803-->
+
+<sect2 xml:id="V1700_WordML">
+<title>WordML</title>
+<para>The following changes have been made to the
+ <filename>wordml</filename> code
+ since the 1.69.1 release.</para>
+<itemizedlist>
+<listitem role="commit-message">
+<para>added <tag>contrib</tag> element,
+better handling of default paragraph
+style</para>
+<para role="commit-changes">Modified: wordml/pages-normalise.xsl,1.6; wordml/supported.xml,1.2;
+wordml/wordml-final.xsl,1.14 - Steve Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>added
+<tag>bridgehead</tag></para>
+<para role="commit-changes">Modified: wordml/docbook-pages.xsl,1.6;
+wordml/docbook.xsl,1.17; wordml/pages-normalise.xsl,1.5;
+wordml/template-pages.xml,1.7; wordml/template.dot,1.4;
+wordml/template.xml,1.14; wordml/wordml-final.xsl,1.13 - Steve
+Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>added blocks stylesheet to support
+bibliographies, glossaries and qandasets</para>
+<para role="commit-changes">Modified: wordml/Makefile,1.4;
+wordml/README,1.3; wordml/blocks-spec.xml,1.1;
+wordml/docbook-pages.xsl,1.5; wordml/docbook.xsl,1.16;
+wordml/pages-normalise.xsl,1.4; wordml/sections-spec.xml,1.3;
+wordml/specifications.xml,1.13; wordml/template-pages.xml,1.6;
+wordml/template.dot,1.3; wordml/template.xml,1.13;
+wordml/wordml-blocks.xsl,1.1; wordml/wordml-final.xsl,1.12;
+wordml/wordml-sections.xsl,1.3 - Steve Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>added <tag>mediaobject</tag>
+<tag>caption</tag></para>
+<para role="commit-changes">Modified: wordml/docbook-pages.xsl,1.4;
+wordml/docbook.xsl,1.15; wordml/specifications.xml,1.12;
+wordml/template-pages.xml,1.5; wordml/template.dot,1.2;
+wordml/template.xml,1.12; wordml/wordml-final.xsl,1.11 - Steve
+Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>added
+callouts</para>
+<para role="commit-changes">Modified: wordml/docbook-pages.xsl,1.3; wordml/docbook.xsl,1.14;
+wordml/pages-normalise.xsl,1.3; wordml/specifications.xml,1.11;
+wordml/template-pages.xml,1.4; wordml/wordml-final.xsl,1.10 - Steve
+Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>added Word template
+file</para>
+<para role="commit-changes">Modified: wordml/template.dot,1.1 - Steve Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>added <tag>abstract</tag>, fixed
+<tag>itemizedlist</tag>, ulink</para>
+<para role="commit-changes">Modified: wordml/specifications.xml,1.10;
+wordml/wordml-final.xsl,1.9 - Steve Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>fixed Makefile added many
+features to Pages support added <tag>revhistory</tag>, inlines,
+highlights, <tag>abstract</tag></para>
+<para role="commit-changes">Modified: wordml/Makefile,1.2;
+wordml/docbook-pages.xsl,1.2; wordml/pages-normalise.xsl,1.2;
+wordml/sections-spec.xml,1.2; wordml/specifications.xml,1.9;
+wordml/template-pages.xml,1.3; wordml/template.xml,1.11;
+wordml/wordml-final.xsl,1.8; wordml/wordml-sections.xsl,1.2 - Steve
+Ball</para>
+</listitem>
+<listitem role="commit-message">
+<para>fixed handling linebreaks when
+generating WordML added Apple Pages
+support</para>
+<para role="commit-changes">Modified: wordml/docbook.xsl,1.13; wordml/template-pages.xml,1.2 -
+Steve Ball</para>
+</listitem>
+</itemizedlist>
+</sect2><!--end of WordML changes for snapshot_2006-05-15_0803-->
+</sect1>
+
+ <sect1 xml:id="V1691">
+ <title>Release 1.69.1</title>
+ <para>This release is a minor bug-fix update to the 1.69.0
+ release. Along with bug fixes, it includes one
+ configuration-parameter change: The default value of the
+ <parameter>annotation.support</parameter> parameter is now
+ <literal>0</literal> (off). The reason for that change is that
+ there have been reports that <tag>annotation</tag> handling is
+ causing a significant performance degradation in processing of
+ large documents with <command>xsltproc</command>.</para>
+ </sect1>
+ <!-- end of notes for 1.69.1 release -->
+
+ <sect1 xml:id="V1690">
+ <title>Release 1.69.0</title>
+ <para>The release includes major feature changes,
+ particularly in the <link linkend="V1690_MAN">manpages
+ stylesheets</link>, as well as a large number of bug fixes.</para>
+
+ <para>As with all DocBook Project <quote>dot zero</quote> releases, this is an
+ <link linkend="dot0">experimental release </link>.</para>
+
+ <sect2 xml:id="V1690_COMMON">
+ <title>Common</title>
+ <itemizedlist>
+ <listitem>
+ <para>This release adds localizations for the following
+ languages:
+ <simplelist type="inline">
+ <?dbchoice choice="and"?>
+ <member>Albanian</member>
+ <member>Amharic</member>
+ <member>Azerbaijani</member>
+ <member>Hindi</member>
+ <member>Irish (Gaelic)</member>
+ <member>Gujarati</member>
+ <member>Kannada</member>
+ <member>Mongolian</member>
+ <member>Oriya</member>
+ <member>Punjabi</member>
+ <member>Tagalog</member>
+ <member>Tamil</member>
+ <member>Welsh</member>
+ </simplelist>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for specifying number format for auto
+ labels for <tag>chapter</tag>, <tag>appendix</tag>,
+ <tag>part</tag>, and <tag>preface</tag>. Contolled with the
+ <parameter>appendix.autolabel</parameter>,
+ <parameter>chapter.autolabel</parameter>,
+ <parameter>part.autolabel</parameter>, and
+ <parameter>preface.autolabel</parameter> parameters.</para>
+ </listitem>
+ <listitem>
+ <para>Added basic support for <tag>biblioref</tag> cross
+ referencing.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <tag class="attribute">align</tag>
+ on <tag>caption</tag> in <tag>mediaobject</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for processing documents that use the
+ DocBook V5 namespace.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <tag>termdef</tag> and
+ <tag>mathphrase</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>EXPERIMENTAL: Incorporated the Slides and Website
+ stylesheets into the DocBook XSL stylesheets package. So,
+ for example, Website documents can now be processed using
+ the following URI for the driver Website
+ <filename>tabular.xsl</filename> file: <literallayout class="monospaced"><uri>http://docbook.sourceforge.net/release/xsl/current/website/tabular.xsl</uri></literallayout></para>
+ </listitem>
+ <listitem>
+ <para>A <tag>procedure</tag> without a <tag>title</tag> is
+ now treated as an <quote>informal</quote> procedure (meaning
+ that it is not added to any generated <quote>list of
+ procedures</quote> and has no affect on numbering of
+ generated labels for other procedures).</para>
+ </listitem>
+ <listitem>
+ <para><tag>docname</tag> is no longer added to
+ <tag>olink</tag> when pointing to a root element.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Added support for generation of choice separator in
+ inline simplelist. This enables auto-generation of an
+ appropriate localized <quote>choice separator</quote> (for
+ example, <quote>and</quote> or <quote>or</quote>) before the
+ final item in an inline <tag>simplelist</tag>.</para>
+ <para>To indicate that you want a choice separator
+ generated for a particular list, you need to put a processing
+ instruction (PI) of the form
+ <tag class="xmlpi">dbchoice choice="foo"</tag> as a
+ child of the list. For example:
+ <literallayout class="monospaced"> &lt;para&gt;Choose from
+ ONE and ONLY ONE of the following:
+ &lt;simplelist type="inline"&gt;
+ &lt;?dbchoice choice="or" ?&gt;
+ &lt;member&gt;A&lt;/member&gt;
+ &lt;member&gt;B&lt;/member&gt;
+ &lt;member&gt;C&lt;/member&gt;.&lt;/simplelist&gt;&lt;/para&gt;</literallayout>
+
+ Output (for English):
+ <blockquote>
+ <para>Choose from ONE and only ONE of the
+ following choices: A, B, or C.</para>
+ </blockquote>
+ As a temporary workaround for the fact that most of the
+ DocBook non-English locale files don't have a localization for
+ the word <quote>or</quote>, you can put in a literal string to
+ be used; example for French: <tag class="pi">dbchoice choice="ou"</tag>. That is, use
+ <quote>ou</quote> instead of <quote>or</quote>.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <sect2 xml:id="V1690_FO">
+ <title>FO</title>
+ <itemizedlist>
+ <listitem>
+ <para> Added <literal>content-type</literal> property to
+ <literal>external-graphic</literal> element, based on
+ <tag>imagedata</tag> <tag class="attribute">format</tag>
+ attribute.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for generating
+ <literal>&lt;rx:meta-field creator="$VERSION"/&gt;</literal>
+ field for XEP output. This makes the DocBook XSL
+ stylesheet version information available through the
+ <guimenu>Document Properties</guimenu> menu in Acrobat
+ Reader and other PDF viewers.</para>
+ </listitem>
+ <listitem>
+ <para>Trademark symbol handling made consistent with
+ handling of same in HTML stylesheets. Prior to this change,
+ if you processed a document that contained no value for the
+ <tag class="attribute">class</tag> attribute on the
+ <tag>trademark</tag> element, the HTML stylesheets would
+ default to rendering a superscript <literal>TM
+ </literal>symbol after the <tag>trademark</tag> contents,
+ but the FO stylesheets would render nothing.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for generating XEP bookmarks for
+ <tag>refentry</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for HTML markup <tag>table</tag> <tag class="attribute">border</tag> attribute, applied to each
+ table cell.</para>
+ </listitem>
+ <listitem>
+ <para>The <function>table.width</function> template can now
+ sum column specs if none use <literal>%</literal> or
+ <literal>*</literal>.</para>
+ </listitem>
+ <listitem>
+ <para>Added <literal>fox:destination</literal> extension
+ inside <literal>fox:outline</literal> to support linking to
+ internal destinations.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for customizing
+ <literal>abstract</literal> with property sets. Controlled
+ with the <parameter>abstract.properties</parameter> and
+ <parameter>abstract.title.properties</parameter>
+ parameters.</para>
+ </listitem>
+ <listitem>
+ <para>Add <tag>footnote</tag>s in <tag>table</tag> title to
+ table footnote set, and add support for table footnotes to
+ HTML table markup.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <tag>title</tag> in
+ <tag>glosslist</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <tag>itemizedlist</tag> symbol
+ <literal>none</literal>.</para>
+ </listitem>
+ <listitem>
+ <para>Implemented the new
+ <parameter>graphical.admonition.properties</parameter> and
+ <parameter>nongraphical.admonition.properties</parameter>
+ attribute sets.</para>
+ </listitem>
+ <listitem>
+ <para>Added <tag class="attribute">id</tag> to
+ <tag>formalpara</tag> and some other blocks that were
+ missing it.</para>
+ </listitem>
+ <listitem>
+ <para>Changed the anchor template to output
+ <literal>fo:inline</literal> instead of
+ <literal>fo:wrapper</literal>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <parameter>toc.max.depth</parameter>
+ parameter.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 xml:id="V1690_HELP">
+ <title>Help</title>
+ <itemizedlist>
+ <listitem>
+ <para>Eclipse Help: Added support for generating olink
+ database.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 xml:id="V1690_HTML">
+ <title>HTML</title>
+ <itemizedlist>
+ <listitem>
+ <para>Added a first cut at support in HTML output for
+ DocBook 5 style <tag>annotation</tag>s. Controlled using the
+ <parameter>annotation.support</parameter> parameter, and
+ implemented using JavaScript and CSS styling. For more
+ details, see the documentation for the
+ <parameter>annotation.js</parameter>,
+ <parameter>annotation.css</parameter>,
+ <parameter>annotation.graphic.open</parameter>, and
+ <parameter>annotation.graphic.close</parameter>
+ parameters.</para>
+ </listitem>
+ <listitem>
+ <para>Generate client-side image map for
+ <tag>imageobjectco</tag> with areas using
+ <literal>calspair</literal> units</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <tag class="xmlpi">img.src.path</tag> PI.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for passing
+ <parameter>img.src.path</parameter> to DocBook Java XSLT
+ image extensions when appropriate. Controlled using the
+ <parameter>graphicsize.use.img.src.path</parameter>
+ parameter.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for (not
+ valid for DocBook 4) <tag class="attribute">xlink:href</tag>
+ on <tag>area</tag> and (not valid for DocBook 4)
+ <tag>alt</tag> in <tag>area</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>Added new parameter
+ <parameter>default.table.frame</parameter> to control table
+ framing if there is no <tag class="attribute">frame</tag>
+ attribute on a table.</para>
+ </listitem>
+ <listitem>
+ <para>Added initial, experimental support for generating
+ content for the HTML <literal>title</literal> attribute from
+ content of the <tag>alt</tag> element. This change adds
+ support for the following inline elements only (none of them
+ are block elements):
+ <simplelist type="inline">
+ <?dbchoice choice="and"?>
+ <member><tag>abbrev</tag></member>
+ <member><tag>accel</tag></member>
+ <member><tag>acronym</tag></member>
+ <member><tag>action</tag></member>
+ <member><tag>application</tag></member>
+ <member><tag>authorinitials</tag></member>
+ <member><tag>beginpage</tag></member>
+ <member><tag>citation</tag></member>
+ <member><tag>citerefentry</tag></member>
+ <member><tag>citetitle</tag></member>
+ <member><tag>city</tag></member>
+ <member><tag>classname</tag></member>
+ <member><tag>code</tag></member>
+ <member><tag>command</tag></member>
+ <member><tag>computeroutput</tag></member>
+ <member><tag>constant</tag></member>
+ <member><tag>country</tag></member>
+ <member><tag>database</tag></member>
+ <member><tag>email</tag></member>
+ <member><tag>envar</tag></member>
+ <member><tag>errorcode</tag></member>
+ <member><tag>errorname</tag></member>
+ <member><tag>errortext</tag></member>
+ <member><tag>errortype</tag></member>
+ <member><tag>exceptionname</tag></member>
+ <member><tag>fax</tag></member>
+ <member><tag>filename</tag></member>
+ <member><tag>firstname</tag></member>
+ <member><tag>firstterm</tag></member>
+ <member><tag>foreignphrase</tag></member>
+ <member><tag>function</tag></member>
+ <member><tag>glossterm</tag></member>
+ <member><tag>guibutton</tag></member>
+ <member><tag>guiicon</tag></member>
+ <member><tag>guilabel</tag></member>
+ <member><tag>guimenu</tag></member>
+ <member><tag>guimenuitem</tag></member>
+ <member><tag>guisubmenu</tag></member>
+ <member><tag>hardware</tag></member>
+ <member><tag>honorific</tag></member>
+ <member><tag>interface</tag></member>
+ <member><tag>interfacename</tag></member>
+ <member><tag>keycap</tag></member>
+ <member><tag>keycode</tag></member>
+ <member><tag>keysym</tag></member>
+ <member><tag>lineage</tag></member>
+ <member><tag>lineannotation</tag></member>
+ <member><tag>literal</tag></member>
+ <member><tag>markup</tag></member>
+ <member><tag>medialabel</tag></member>
+ <member><tag>methodname</tag></member>
+ <member><tag>mousebutton</tag></member>
+ <member><tag>option</tag></member>
+ <member><tag>optional</tag></member>
+ <member><tag>otheraddr</tag></member>
+ <member><tag>othername</tag></member>
+ <member><tag>package</tag></member>
+ <member><tag>parameter</tag></member>
+ <member><tag>personname</tag></member>
+ <member><tag>phone</tag></member>
+ <member><tag>pob</tag></member>
+ <member><tag>postcode</tag></member>
+ <member><tag>productname</tag></member>
+ <member><tag>productnumber</tag></member>
+ <member><tag>prompt</tag></member>
+ <member><tag>property</tag></member>
+ <member><tag>quote</tag></member>
+ <member><tag>refentrytitle</tag></member>
+ <member><tag>remark</tag></member>
+ <member><tag>replaceable</tag></member>
+ <member><tag>returnvalue</tag></member>
+ <member><tag>tag</tag></member>
+ <member><tag>shortcut</tag></member>
+ <member><tag>state</tag></member>
+ <member><tag>street</tag></member>
+ <member><tag>structfield</tag></member>
+ <member><tag>structname</tag></member>
+ <member><tag>subscript</tag></member>
+ <member><tag>superscript</tag></member>
+ <member><tag>surname</tag></member>
+ <member><tag>symbol</tag></member>
+ <member><tag>systemitem</tag></member>
+ <member><tag>tag</tag></member>
+ <member><tag>termdef</tag></member>
+ <member><tag>token</tag></member>
+ <member><tag>trademark</tag></member>
+ <member><tag>type</tag></member>
+ <member><tag>uri</tag></member>
+ <member><tag>userinput</tag></member>
+ <member><tag>varname</tag></member>
+ <member><tag>wordasword</tag></member>
+ </simplelist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>Added support for chunking <tag>revhistory</tag> into
+ separate file (similar to the support for doing same with
+ <tag>legalnotice</tag>). Patch from Thomas
+ Schraitle. Controlled through <parameter>new
+ generate.revhistory.link</parameter> parameter.</para>
+ </listitem>
+ <listitem>
+ <para>l10n.xsl: Made language codes RFC compliant. Added a
+ new boolean config parameter,
+ <parameter>l10n.lang.value.rfc.compliant</parameter>. If it
+ is non-zero (the default), any underscore in a language code
+ will be converted to a hyphen in HTML output. If it is zero,
+ the language code will be left as-is.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ <sect2 xml:id="V1690_MAN">
+ <title>man</title>
+ <para>This release closes out 44 manpages stylesheet bug reports
+ and feature requests. It adds more than 35 new configuration
+ parameters for controlling aspects of man-page output --
+ including hyphenation and justification, handling of links,
+ conversion of Unicode characters, and contents of man-page
+ headers and footers.</para>
+ <itemizedlist>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>New options for globally disabling/enabling
+ hyphenation and justification:
+ <parameter>man.justify</parameter> and
+ <parameter>man.hyphenate</parameter>.</para>
+ <para>Note that the default
+ for the both of those is zero (off), because justified text
+ looks good only when it is also hyphenated; to quote the
+ <quote>Hyphenation</quote> node from the groff info page:
+ <blockquote>
+ <para><emphasis>Since the odds are not great for finding a
+ set of words, for every output line, which fit nicely on a
+ line without inserting excessive amounts of space between
+ words, `gtroff' hyphenates words so that it can justify
+ lines without inserting too much space between
+ words.</emphasis></para>
+ </blockquote>
+ The problem is that groff can end up hyphenating a lot of
+ things that you don't want hyphenated (variable names and
+ command names, for example). Keeping both justification and
+ hyphenation disabled ensures that hyphens won't get inserted
+ where you don't want to them, and you don't end up with
+ lines containing excessive amounts of space between
+ words. These default settings run counter to how most
+ existing man pages are formatted. But there are some notable
+ exceptions, such as the perl man pages.</para>
+ </listitem>
+ <listitem>
+ <para> Added parameters for controlling hyphenation of
+ computer inlines, filenames, and URLs. By default, even when
+ hyphenation is enabled (globally), hyphenation is now
+ suppressed for "computer inlines" (currently, just
+ <tag>classname</tag>, <tag>constant</tag>, <tag>envar</tag>,
+ <tag>errorcode</tag>, <tag>option</tag>,
+ <tag>replaceable</tag>, <tag>userinput</tag>,
+ <tag>type</tag>, and <tag>varname</tag>, and for
+ <tag>filenames</tag>, and for URLs from <tag>link</tag>. It
+ can be (re)enabled using the
+ <parameter>man.hyphenate.computer.inlines</parameter>,
+ <parameter>man.hyphenate.filenames</parameter>, and
+ <parameter>man.hyphenate.urls parameters</parameter>.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Implemented a new system for replacing Unicode
+ characters. There are two parts to the new system: a
+ <quote>string substitution map</quote> for doing
+ <quote>essential</quote> replacements, and a
+ <quote>character map</quote> that can optionally be disabled
+ and enabled.</para>
+ <para>The new system fixes all open bugs that had to do with
+ literal Unicode numbered entities such as &amp;#8220; and
+ &amp;#8221; showing up in output, and greatly expands the
+ ability of the stylesheets to generate <quote>good</quote> roff
+ equivalents for Unicode symbols and special
+ characters.</para>
+ <para>Here are some details...</para>
+ <para>The previous manpages mechanism for replacing Unicode
+ symbols and special characters with roff equivalents (the
+ <function>replace-entities</function> template) was not
+ scalable and not complete. The mechanism handled a somewhat
+ arbitrary selection of less than 20 or so Unicode
+ characters. But there are potentially more than
+ <emphasis>800</emphasis> Unicode special characters that
+ have some groff equivalent they can be mapped to. And there
+ are about 34 symbols in the Latin-1 (ISO-8859-1) block
+ alone. Users might reasonably expect that if they include
+ any of those Latin-1 characters in their DocBook source
+ documents, they will get correctly converted to known roff
+ equivalents in output.</para>
+ <para>In addition to those common symbols, certain users may
+ have a need to use symbols from other Unicode blocks. Say,
+ somebody who is documenting an application related to math
+ might need to use a bunch of symbols from the
+ <quote>Mathematical Operators</quote> Unicode block (there
+ are about 65 characters in that block that have reasonable
+ roff equivalents). Or somebody else might really like
+ Dingbats -- such as the checkmark character -- and so might
+ use a bunch of things from the <quote>Dingbat</quote> block
+ (141 characters in that that have roff equivalents or that
+ can at least be <quote>degraded</quote> somewhat gracefully
+ into roff).</para>
+ <para>So, the old <function>replace-entities</function>
+ mechanism was replaced with a completely different mechanism
+ that is based on use of two <quote>maps</quote>: a
+ <quote>substitution map</quote> and a <quote>character
+ map</quote> (the latter in a format compliant with the XSLT
+ 2.0 spec and therefore completely <quote>forward
+ compatible</quote> with XSLT 2.0).</para>
+ <para>The substitution map is controlled through the
+ <parameter>man.string.subst.map</parameter> parameter, and
+ is used to replace things like the backslash character
+ (which needs special handling to prevent it from being
+ interpreted as a roff escape). The substitution map cannot
+ be disabled, because disabling it will cause the output to
+ be broken. However, you can add to it and change it if
+ needed.</para>
+
+ <para>The <quote>character map</quote> mechanism, on the
+ other hand, can be completely disabled. It is enabled by
+ default, and, by default, does replacement of all Latin-1
+ symbols, along with most special spaces, dashes, and quotes
+ (about 75 characters by default). Also, you can optionally
+ enable a <quote>full</quote> character map that provides
+ support for converting all 800 or so of the characters that
+ have some reasonable groff equivalent.</para>
+
+ <para>The character-map mechanism is controlled through the
+ following parameters:
+ <variablelist>
+ <varlistentry>
+ <term><parameter>man.charmap.enabled</parameter></term>
+ <listitem><para>turns character-map support
+ on/off</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>man.charmap.use.subset</parameter></term>
+ <listitem><para>specifies that a subset of the character
+ map is used instead of the full map</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>man.charmap.subset.profile</parameter></term>
+ <listitem><para>specifies profile of character-map
+ subset</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>man.charmap.uri</parameter></term>
+ <listitem><para>specifies an alternate character map to
+ use instead of the <quote>standard</quote> character map
+ provided in the distribution</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Implemented out-of-line handling of display of URLs
+ for links (currently, only for <tag>ulink</tag>). This gives
+ you three choices for handling of links:
+ <orderedlist>
+ <listitem>
+ <para>Number and list links. Each link is numbered
+ inline, with a number in square brackets preceding the
+ link contents, and a numbered list of all links is added
+ to the end of the document.</para>
+ </listitem>
+ <listitem>
+ <para>Only list links. Links are not numbered, but an
+ (unnumbered) list of links is added to the end of the
+ document.</para>
+ </listitem>
+ <listitem>
+ <para>Suppress links. Don't number links and don't add
+ any list of links to the end of the document.</para>
+ </listitem>
+ </orderedlist>
+ You can also choose whether links should be underlined. The
+ default is <quote>the works</quote> -- list, number, and
+ underline links. You can use the
+ <parameter>man.links.list.enabled</parameter>, <parameter>
+ man.links.are.numbered</parameter>, and
+ <parameter>man.links.are.underlined</parameter> parameters
+ to change the defaults. The default heading for the link
+ list is REFERENCES. You can be change that using the
+ <parameter>man.links.list.heading</parameter>
+ parameter.</para>
+ </listitem>
+ <listitem>
+ <para>Changed default output encoding to UTF-8. <emphasis role="bold">This does not mean that man pages are output in
+ raw UTF-8</emphasis>, because the character map is applied
+ before final output, causing all UTF-8 characters covered in
+ the map to be converted to roff equivalents.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Added support for processing <tag>refsect3</tag> and
+ <tag>formalpara</tag> and nested <tag>refsection</tag>
+ elements, down to any arbitrary level of nesting.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Output of the <literal>NAME</literal> and
+ <literal>SYNOPSIS</literal> and <literal>AUTHOR</literal>
+ headings and the headings for admonitions (<tag>note</tag>,
+ <tag>caution</tag>, etc.) are no longer hard-coded for
+ English. Instead, headings are generated for those in the
+ correct locale (just as the FO and HTML stylesheets
+ do).</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Re-worked mechanism for assembling page
+ headers/footers (the contents of the <literal>.TH</literal>
+ macro <quote>title line</quote>).</para>
+
+ <para>Here are some details...</para>
+
+ <para>All man pages contain a <literal>.TH</literal> roff
+ macro whose contents are used for rendering the <quote>title
+ line</quote> displayed in the header and footer of each
+ page. Here are a couple of examples of real-world man pages
+ that have useful page headers/footers: <literallayout class="monospaced">
+ gtk-options(7) GTK+ User's Manual gtk-options(7) &lt;-- header
+ GTK+ 1.2 2003-10-20 gtk-options(7) &lt;-- footer
+
+ svgalib(7) Svgalib User Manual svgalib(7) &lt;-- header
+ Svgalib 1.4.1 16 December 1999 svgalib(7) &lt;-- footer</literallayout></para>
+
+ <para>And here are the terms with which the
+ <literal>groff_man(7)</literal> man page refers to the
+ various parts of the header/footer: <literallayout class="monospaced">
+ title(section) extra3 title(section) &lt;- header
+ extra2 extra1 title(section) &lt;- footer</literallayout></para>
+ <para> Or, using the names with which the <literal>man(7)</literal>
+ man page refers to those same fields: <literallayout class="monospaced">
+ title(section) manual title(section) &lt;- page header
+ source date title(section) &lt;- page footer</literallayout></para>
+
+ <para>The easiest way to control the contents of those
+ fields is to mark up your <tag>refentry</tag> content like
+ the following (note that this is a <quote>minimal</quote>
+ example). <programlisting>
+ &lt;refentry&gt;
+ &lt;info&gt;
+ &lt;date&gt;2003-10-20&lt;/date&gt; <co xml:id="V1690_date-co" linkends="V1690_date"/>
+ &lt;/info&gt;
+ &lt;refmeta&gt;
+ &lt;refentrytitle&gt;gtk-options&lt;/refentrytitle&gt; <co xml:id="V1690_title-co" linkends="V1690_title"/>
+ &lt;manvolnum&gt;7&lt;/manvolnum&gt; <co xml:id="V1690_manvolnum-co" linkends="V1690_manvolnum"/>
+ &lt;refmiscinfo class="source-name"&gt;GTK+&lt;/refmiscinfo&gt; <co xml:id="V1690_source-name-co" linkends="V1690_source-name"/>
+ &lt;refmiscinfo class="version"&gt;1.2&lt;/refmiscinfo&gt; <co xml:id="V1690_version-co" linkends="V1690_version"/>
+ &lt;refmiscinfo class="manual"&gt;GTK+ User's Manual&lt;/refmiscinfo&gt; <co xml:id="V1690_manual-co" linkends="V1690_manual"/>
+ &lt;/refmeta&gt;
+ &lt;refnamediv&gt;
+ &lt;refname&gt;gtk-options&lt;/refname&gt;
+ &lt;refpurpose&gt;Standard Command Line Options for GTK+ Programs&lt;/refpurpose&gt;
+ &lt;/refnamediv&gt;
+ &lt;refsect1&gt;
+ &lt;title&gt;Description&lt;/title&gt;
+ &lt;para&gt;This manual page describes the command line options, which
+ are common to all GTK+ based applications.&lt;/para&gt;
+ &lt;/refsect1&gt;
+ &lt;/refentry&gt;</programlisting>
+ <calloutlist>
+ <callout arearefs="V1690_date-co" xml:id="V1690_date">
+ <para>Sets the <quote>date</quote> part of the header/footer.</para>
+ </callout>
+ <callout arearefs="V1690_title-co" xml:id="V1690_title">
+ <para>Sets the <quote>title</quote> part.</para>
+ </callout>
+ <callout arearefs="V1690_manvolnum-co" xml:id="V1690_manvolnum">
+ <para>Sets the <quote>section</quote> part.</para>
+ </callout>
+ <callout arearefs="V1690_source-name-co" xml:id="V1690_source-name">
+ <para>Sets the <quote>source name</quote> part.</para>
+ </callout>
+ <callout arearefs="V1690_version-co" xml:id="V1690_version">
+ <para>Sets the <quote>version</quote> part.</para>
+ </callout>
+ <callout arearefs="V1690_manual-co" xml:id="V1690_manual">
+ <para>Sets the <quote>manual</quote> part.</para>
+ </callout>
+ </calloutlist>
+ </para>
+ <para>Below are explanations of the steps the stylesheets
+ take to attempt to assemble and display
+ <quote>good</quote> headers and footer. [In the
+ descriptions, note that <replaceable>*info</replaceable>
+ is the <tag>refentry</tag> <quote>info</quote> child
+ (whatever its name), and
+ <replaceable>parentinfo</replaceable> is the
+ <quote>info</quote> child of its parent (again, whatever
+ its name).]
+ <variablelist>
+ <varlistentry>
+ <term>extra1 field (date)</term>
+ <listitem>
+ <para>Content of the <quote>extra1</quote> field is
+ what shows up in the <emphasis role="bold">center
+ footer</emphasis> position of each page. The
+ <literal>man(7)</literal> man page describes it as
+ <quote>the date of the last revision</quote>.</para>
+ <para>To provide this content, if the
+ <parameter>refentry.date.profile.enabled</parameter>
+ is non-zero, the stylesheets check the value of
+ <parameter>refentry.date.profile</parameter>.</para>
+ <para>Otherwise, by default, they check for a
+ <tag>date</tag> or <tag>pubdate</tag> not only in the
+ <replaceable>*info</replaceable> contents, but also in
+ the <replaceable>parentinfo</replaceable>
+ contents.</para>
+ <para>If a date cannot be found, the stylesheets now
+ automatically generate a localized <quote>long
+ format</quote> date, ensuring that this field always
+ has content in output.</para>
+ <para>However, if for some reason you want to suppress
+ this field, you can do so by setting a non-zero value
+ for <parameter>man.th.extra1.suppress</parameter>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>extra2 field (source)</term>
+ <listitem>
+ <para>On Linux systems and on systems with a modern
+ groff, the content of the <quote>extra2</quote> field
+ are what shows up in the <emphasis role="bold">left
+ footer</emphasis> position of each page.</para>
+
+ <para>The <literal>man(7)</literal> man page describes
+ this as <quote>the source of the command</quote>, and
+ provides the following examples:
+ <itemizedlist>
+ <listitem>
+ <para>For binaries, use somwething like: GNU,
+ NET-2, SLS Distribution, MCC Distribution.</para>
+ </listitem>
+ <listitem>
+ <para>For system calls, use the version of the
+ kernel that you are currently looking at: Linux
+ 0.99.11.</para>
+ </listitem>
+ <listitem>
+ <para>For library calls, use the source of the
+ function: GNU, BSD 4.3, Linux DLL 4.4.1.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>In practice, there are many pages that simply
+ have a version number in the <quote>source</quote>
+ field. So, it looks like what we have is a two-part
+ field,
+ <replaceable>Name</replaceable> <replaceable>Version</replaceable>,
+ where:
+ <variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+ <para>product name (e.g., BSD) or org. name
+ (e.g., GNU)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+ <para>version name</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ Each part is optional. If the
+ <replaceable>Name</replaceable> is a product name,
+ then the <replaceable>Version</replaceable> is
+ probably the version of the product. Or there may be
+ no <replaceable>Name</replaceable>, in which case, if
+ there is a <replaceable>Version</replaceable>, it is
+ probably the version of the item itself, not the
+ product it is part of. Or, if the
+ <replaceable>Name</replaceable> is an organization
+ name, then there probably will be no
+ <replaceable>Version</replaceable>.
+ </para>
+ <para>To provide this content, if the
+ <parameter>refentry.source.name.profile.enabled</parameter>
+ and
+ <parameter>refentry.version.profile.enabled</parameter>
+ parameter are non-zero, the stylesheets check the
+ value of <parameter>refentry.source.name.profile</parameter>
+ <parameter>refentry.version.profile</parameter>.</para>
+
+ <para>Otherwise, by default, they check the following
+ places, in the following order:
+ <orderedlist>
+ <listitem>
+ <literallayout class="monospaced"><replaceable>*info</replaceable>/<tag>productnumber</tag></literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced"><replaceable>*info</replaceable>/<tag>productnumber</tag></literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced"><tag>refmeta</tag>/<tag>refmiscinfo</tag>[@class = 'version']</literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced"><replaceable>parentinfo</replaceable>/<tag>productnumber</tag></literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced"><replaceable>*info</replaceable>/<tag>productname</tag></literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced"><replaceable>parentinfo</replaceable>/<tag>productname</tag></literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced"><tag>refmeta</tag>/<tag>refmiscinfo</tag></literallayout>
+ </listitem>
+ <listitem>
+ <para>[nothing found, so leave it empty]</para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>extra3 field</term>
+ <listitem>
+ <para>On Linux systems and on systems with a modern
+ groff, the content of the <quote>extra3</quote> field
+ are what shows up in the <emphasis role="bold">center
+ header</emphasis> position of each page. Some man
+ pages have <quote>extra2</quote> content, some
+ don't. If a particular man page has it, it is most
+ often <quote>context</quote> data about some larger
+ system the documented item belongs to (for example,
+ the name or description of a group of related
+ applications). The stylesheets now check the following
+ places, in the following order, to look for content to
+ add to the <quote>extra3</quote> field.</para>
+ <orderedlist>
+ <listitem>
+ <literallayout class="monospaced"><replaceable>parentinfo</replaceable>/<tag>title</tag></literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced">parent's <tag>title</tag></literallayout>
+ </listitem>
+ <listitem>
+ <literallayout class="monospaced"><tag>refmeta</tag>/<tag>refmiscinfo</tag></literallayout>
+ </listitem>
+ <listitem>
+ <para>[nothing found, so leave it empty]</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Reworked <replaceable>*info</replaceable> gathering. For
+ each <tag>refentry</tag> found, the stylesheets now cache its
+ <replaceable>*info</replaceable> content, then check for any
+ valid parent of it that might have metainfo content and cache
+ that, if found; they then then do all further matches against
+ those node-sets (rather than re-selecting the original
+ <replaceable>*info</replaceable> nodes each time they are
+ needed).</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>New option for breaking strings after forward
+ slashes. This enables long URLs and pathnames to be broken
+ across lines. Controlled through
+ <parameter>man.break.after.slash</parameter> parameter.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Output for servicemark and trademark are now
+ <literal>(SM)</literal> and <literal>(TM)</literal>. There is
+ a groff <literal>"\(tm"</literal> escape, but output from that
+ is not acceptable.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>New option for controlling the length of the title
+ part of the <literal>.TH</literal> title line. Controlled
+ through the <parameter>man.th.title.max.length</parameter>
+ parameter.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>New option for specifying output encoding of each man
+ page; controlled with
+ <parameter>man.output.encoding</parameter> (similar to the
+ HTML <parameter>chunker.output.encoding </parameter>
+ parameter).</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>New option for suppressing filename messages when
+ generating output; controlled with
+ <parameter>man.output.quietly</parameter> (similar to the HTML
+ <parameter>chunk.quietly</parameter> parameter).</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>The text of cross-references to first-level
+ <tag>refentry</tag> (<tag>refsect1</tag>, top-level
+ <tag>refsection</tag>, <tag>refnamediv</tag>, and
+ <tag>refsynopsisdiv</tag>) are now capitalized.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Cross-references to <tag>refnamediv</tag> now use the
+ localized <literal>NAME</literal> title instead of using the
+ first <tag>refname</tag> child. This makes the output
+ inconsistent with HTML and FO output, but for man-page output,
+ it seems to make better sense to have the
+ <literal>NAME</literal>. (It may actually make better sense to
+ do it that way in HTML and FO output as well...)</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Added support for processing <tag>funcparams</tag>.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Removed the space that was being output between
+ <tag>funcdef</tag> and <tag>paramdef</tag>; example: was:
+ <literal>float rand (void)</literal>; now:
+ <literal>float rand(void)</literal></para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Turned off bold formatting for the <tag>type</tag>
+ element when it occurs within a <tag>funcdef</tag> or
+ <tag>paramdef</tag></para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Corrected rendering of <tag>simplelist</tag>. Any
+ <literal>&lt;simplelist type="inline"</literal> instance
+ is now rendered as a comma-separated list (also with an
+ optional localized <quote>and</quote> or <quote>or</quote> before the last item -- see
+ description elsewhere in these release notes). Any simplelist
+ instance whose <tag class="attribute">type</tag> is not
+ <literal>inline</literal> is rendered as a one-column vertical
+ list (ignoring the values of the <tag class="attribute">type</tag> and <tag class="attribute">columns</tag> attributes if present)</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Comment added at top of roff source for each page now
+ includes DocBook XSL stylesheets version number (as in the
+ HTML stylesheets)</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Made change to prevent <quote>sticky</quote> fonts
+ changes. Now, when the manpages stylesheets encounter node
+ sets that need to be boldfaced or italicized, they put the
+ <literal>\fBfoo\fR</literal> and <literal>\fIbar\fR</literal>
+ groff bold/italic instructions separately around each node in
+ the set.</para>
+ </listitem>
+ <listitem>
+ <para>synop.xsl: Boldface everything in
+ <tag>funcsynopsis</tag> output except parameters (which are in
+ ital). The <literal>man(7)</literal> man page says:
+ <blockquote>
+ <para>For functions, the arguments are always specified
+ using italics, even in the SYNOPSIS section, where the rest
+ of the function is specified in bold.</para>
+ </blockquote>
+ A look through the contents of the
+ <filename>man/man2</filename> directory shows that most
+ (all) existing pages do follow this <quote>everything in
+ funcsynopsis bold</quote> rule. That means the
+ <tag>type</tag> content and any punctuation (parens,
+ semicolons, <tag>vararg</tag>s) also must be bolded.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Removed code for adding backslashes before periods/dots
+ in roff source, because backslashes in front of periods/dots
+ in roff source are needed only in the very rare case where a
+ period is the very first character in a line, without any
+ space in front of it. A better way to deal with that rare case
+ is for you to add a zero-width space in front of the offending
+ dot(s) in your source</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Removed special handling of the <tag>quote</tag>
+ element. That was hard-coded to cause anything marked up with
+ the <tag>quote</tag> element to be output preceded by two
+ backticks and followed by two apostrophes -- that is, that
+ old-school kludge for generating <quote>curly</quote> quotes in Emacs and
+ in X-Windows fonts. While Emacs still seems to support that, I
+ don't think X-Windows has for a long time now. And, anyway, it
+ looks (and has always looked) like crap when viewed on a
+ normal tty/console. In addition, it breaks localiztion of
+ <tag>quote</tag>. By default, <tag>quote</tag> content is
+ output with localized quotation marks, which, depending on the
+ locale, may or may not be left and right double quotation
+ marks.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Changed mappings for left and right single quotation
+ marks. Those had previously been incorrectly mapped to the
+ backtick (&amp;#96;) and apostrophe (&amp;39;) characters (for
+ kludgy reasons -- see above). They are now correctly mapped to
+ the <literal>\(oq</literal> and <literal>\(cq</literal> roff
+ escapes. If you want the old (broken) behavior, you need to
+ manually change the mappings for those in the value of the
+ <parameter>man.string.subst.map</parameter> parameter.</para>
+ </listitem>
+ <listitem>
+ <para>Removed <filename>xref.xsl</filename> file. Now, of the
+ various cross-reference elements, only the <tag>ulink</tag>
+ element is handled differently; the rest are handled exactly
+ as the HTML stylesheets handle them, except that no hypertext
+ links are generated. (Because there is no equivalent hypertext
+ mechanism is man pages.)</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>New option for making <quote>subheading dividers</quote> in generated
+ roff source. The dividers are not visible in the rendered man
+ page; they are just there to make the source
+ readable. Controlled using
+ <parameter>man.subheading.divider</parameter>.</para>
+ </listitem>
+ <!-- ======================================================= -->
+ <listitem>
+ <para>Fixed many places where too much space was being added
+ between lines.</para>
+ </listitem>
+ </itemizedlist>
+ <!-- end of MAN changes for 1.69.0 release -->
+ </sect2>
+</sect1>
+ <!-- end of notes for 1.69.0 release -->
+
+ <sect1 xml:id="V1681">
+ <title>Release 1.68.1</title>
+ <para>The release adds localization support for Farsi (thanks to
+ Sina Heshmati) and improved support for the XLink-based DocBook NG
+ <tag>db:link</tag> element. Other than that, it is a minor
+ bug-fix update to the 1.68.0 release. The main thing it fixes is a
+ build error that caused the XSLT Java extensions to be jarred up
+ with the wrong package structure. Thanks to Jens Stavnstrup for
+ quickly reporting the problem, and to Mauritz Jeanson for
+ investigating and finding the cause.</para>
+ </sect1>
+ <!-- end of notes for 1.68.1 release -->
+
+ <sect1 xml:id="V1680">
+ <title>Release 1.68.0</title>
+ <para>This release includes some features changes, particularly
+ for FO/PDF output, and a number of bug fixes.
+ <itemizedlist xml:id="V1680_FO">
+ <title>FO</title>
+ <listitem>
+ <para>Moved footnote properties to attribute-sets.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for side floats, margin notes, and
+ custom floats.</para>
+ </listitem>
+ <listitem>
+ <para>Added new parameters
+ <parameter>body.start.indent</parameter> and
+ <parameter>body.end.indent</parameter> to the
+ <parameter>set.flow.properties template</parameter>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <tag class="attribute">xml:id</tag></para>
+ </listitem>
+ <listitem>
+ <para>Added support for
+ <tag>refdescriptor</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for multiple <tag>refnamediv</tag>s.</para>
+ </listitem>
+ <listitem>
+ <para>Added <parameter>index.entry.properties</parameter>
+ attribute-set to support customization of index
+ entries.</para>
+ </listitem>
+ <listitem>
+ <para>Added <parameter>set.flow.properties
+ template</parameter> call to each <tag>fo:flow</tag>
+ to support customizations entry point.</para>
+ </listitem>
+ <listitem>
+ <para>Add support for <literal>@floatstyle</literal> in
+ <tag>figure</tag></para>
+ </listitem>
+ <listitem>
+ <para>Moved hardcoded properties for index division titles
+ to the <parameter>index.div.title.properties</parameter>
+ attribute-set.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for
+ <tag>table-layout</tag>="<tag class="attvalue">auto</tag>" for XEP.</para>
+ </listitem>
+ <listitem>
+ <para>Added <parameter>index.div.title.properties</parameter>
+ attribute-set.</para>
+ </listitem>
+ <listitem>
+ <para><parameter>$verbose</parameter> parameter is now
+ passed to most elements.</para>
+ </listitem>
+ <listitem>
+ <para>Added <tag>refentry</tag> to
+ <tag>toc</tag> in <tag>part</tag>, as it is
+ permitted by the DocBook schema/DTD.</para>
+ </listitem>
+ <listitem>
+ <para>Added backmatter elements and
+ <tag>article</tag> to <tag>toc</tag> in
+ <tag>part</tag>, since they are permitted by the
+ DocBook schema/DTD.</para>
+ </listitem>
+ <listitem>
+ <para>Added <tag class="attribute">mode</tag>="<tag class="attvalue">toc</tag>" for
+ <tag>simplesect</tag>, since it is now permitted in
+ the <tag>toc</tag> if
+ <parameter>simplesect.in.toc</parameter> is set.</para>
+ </listitem>
+ <listitem>
+ <para>Moved hard-coded properties to
+ <parameter>nongraphical.admonintion.properties</parameter>
+ and <parameter>graphical.admonition.properties</parameter>
+ attribute sets.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <literal>sidebar-width</literal> and
+ <literal>float-type</literal> processing instructions in
+ <tag>sidebar</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>For tables with HTML markup elements, added support
+ for <literal>dbfo bgcolor</literal> PI, the attribute-sets
+ named <parameter>table.properties</parameter>,
+ <parameter>informaltable.properties</parameter>,
+ <parameter>table.table.properties</parameter>, and
+ <parameter>table.cell.padding</parameter>. Also added
+ support for the templates named
+ <parameter>table.cell.properties</parameter> and
+ <parameter>table.cell.block.properties</parameter> so that
+ tabstyles can be implemented. Also added support for tables
+ containing only <tag>tr</tag> instead of
+ <tag>tbody</tag> with <tag>tr</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>Added new paramater
+ <parameter>hyphenate.verbatim.characters</parameter> which
+ can specify characters after which a line break can occur in
+ verbatim environments. This parameter can be used to extend
+ the initial set of characters which contain only space and
+ non-breakable space.</para>
+ </listitem>
+ <listitem>
+ <para>Added <parameter>itemizedlist.label.markup</parameter> to enable
+ selection of different bullet symbol. Also added several
+ potential bullet characters, commented out by default.</para>
+ </listitem>
+ <listitem>
+ <para>Enabled all id's in XEP output for external olinking.</para>
+ </listitem>
+ </itemizedlist>
+
+ <itemizedlist xml:id="V1680_HTML">
+ <title>HTML</title>
+ <listitem>
+ <para>Added support for
+ <tag>refdescriptor</tag>.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for multiple <tag>refnamediv</tag>s.</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <tag class="attribute">xml:id</tag></para>
+ </listitem>
+ <listitem>
+ <para><tag>refsynopsisdiv</tag> as a section for
+ counting section levels</para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist xml:id="V1680_images">
+ <title>Images</title>
+ <listitem>
+ <para>Added new SVG admonition graphics and navigation images.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+ <!-- end of notes for 1.68.0 release -->
+
+ <sect1 xml:id="V1672">
+ <title>Release 1.67.2</title>
+ <para>This release fixes a table bug introduced in the 1.67.1
+ release.</para>
+ </sect1>
+ <sect1 xml:id="V1671">
+ <title>Release 1.67.1</title>
+ <para>This release includes a number of bug fixes.</para>
+ <para>The following lists provide details about API and feature changes.
+ <itemizedlist xml:id="V1671_FO">
+ <title>FO</title>
+ <listitem>
+ <para>Tables: Inherited cell properties are now passed to the
+ <literal>table.cell.properties</literal> template so they can
+ be overridden by a customization.</para>
+ </listitem>
+ <listitem>
+ <para>Tables: Added support for bgcolor PI on table row
+ element.</para>
+ </listitem>
+ <listitem>
+ <para>TOCs: Added new parameter
+ <parameter>simplesect.in.toc</parameter>; default value of
+ <literal>0</literal> causes simplesect to be omitted from TOCs; to
+ cause <tag>simplesect</tag> to be included in TOCs, you
+ must set the value of <parameter>simplesect.in.toc</parameter> to
+ <literal>1</literal>.Comment from Norm:
+
+ <blockquote>
+ <para><emphasis>Simplesect elements aren't supposed to
+ appear in the ToC at all... The use case for simplesect
+ is when, for example, every chapter in a book ends with
+ "Exercises" or "For More Information" sections and you
+ don't want those to appear in the ToC.</emphasis></para>
+ </blockquote>
+ </para>
+ </listitem>
+ <listitem>
+ <para>Sections: Reverted change that caused a variable reference
+ to be used in a template match and rewrote code to preserve
+ intended semantics.</para>
+ </listitem>
+ <listitem>
+ <para>Lists: Added workaround to prevent "* 0.60 + 1em" garbage in
+ list output from PassiveTeX</para>
+ </listitem>
+ <listitem>
+ <para>Moved the literal attributes from
+ <parameter>component.title</parameter> to the
+ <parameter>component.title.properties</parameter> attribute-set so
+ they can be customized.</para>
+ </listitem>
+ <listitem>
+ <para>Lists: Added <tag>glossdef</tag>'s first
+ <tag>para</tag> to special handling in
+ <literal>fo:list-item-body</literal>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <itemizedlist xml:id="V1671_HTML">
+ <title>HTML</title>
+ <listitem>
+ <para>TOCs: Added new parameter
+ <parameter>simplesect.in.toc</parameter>; for details, see
+ the list of <xref linkend="V1671_FO"/> changes for this
+ release.</para>
+ </listitem>
+ <listitem>
+ <para>Indexing: Added new parameter
+ <parameter>index.prefer.titleabbrev</parameter>; when set to
+ <literal>1</literal>, index references will use
+ <tag>titleabbrev</tag> instead of
+ <tag>title</tag> when available.</para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist xml:id="V1671_HELP">
+ <title>HTML Help</title>
+ <listitem>
+ <para>Added support for generating windows-1252-encoded
+ output using Saxon; for more details, see the list of <xref linkend="V1671_EXT"/> changes for this release.</para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist xml:id="V1671_MAN">
+ <title>man pages</title>
+ <listitem>
+ <para>Replaced named/numeric character-entity references for
+ non-breaking space with groff equivalent (backslash-tilde).</para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist xml:id="V1671_EXT">
+ <title>XSL Java extensions</title>
+ <listitem>
+ <para>Saxon extensions: Added the
+ <classname>Windows1252</classname> class. It extends Saxon
+ 6.5.x with the windows-1252 character set, which is
+ particularly useful when generating HTML Help for Western
+ European Languages (code from
+ <personname><firstname>Pontus</firstname>
+ <surname>Haglund</surname></personname> and contributed to the
+ DocBook community by Sectra AB, Sweden).</para>
+ <para>To use:
+ <orderedlist>
+ <listitem>
+ <para>Make sure that the Saxon 6.5.x jar file and the jar file for
+ the DocBook XSL Java extensions are in your <envar>CLASSPATH</envar></para>
+ </listitem>
+ <listitem>
+ <para>Create a DocBook XSL customization layer -- a file named
+ <filename>mystylesheet.xsl</filename> or whatever -- that, at a
+ minimum, contains the following:
+ <screen> &lt;xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'&gt;
+ &lt;xsl:import href="http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl"/&gt;
+ &lt;xsl:output method="html" encoding="WINDOWS-1252" indent="no"/&gt;
+ &lt;xsl:param name="htmlhelp.encoding" select="'WINDOWS-1252'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="chunker.output.encoding" select="'WINDOWS-1252'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="saxon.character.representation" select="'native'"&gt;&lt;/xsl:param&gt;
+ &lt;/xsl:stylesheet&gt;</screen>
+ </para>
+ <para>Invoke Saxon with the
+ <literal>encoding.windows-1252</literal> Java system property set
+ to <literal>com.nwalsh.saxon.Windows1252</literal>; for example
+ <screen> java \
+ -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
+ com.icl.saxon.StyleSheet \
+ mydoc.xml mystylesheet.xsl</screen>
+
+ Or, for a more complete "real world" case showing other
+ options you'll typically want to use:
+ <screen> java \
+ -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
+ -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
+ -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
+ -Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl \
+ com.icl.saxon.StyleSheet \
+ -x org.apache.xml.resolver.tools.ResolvingXMLReader \
+ -y org.apache.xml.resolver.tools.ResolvingXMLReader \
+ -r org.apache.xml.resolver.tools.CatalogResolver \
+ mydoc.xml mystylesheet.xsl</screen>
+
+ In both cases, the "mystylesheet.xsl" file should be a
+ DocBook customization layer containing the parameters
+ show in step 2.</para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>Saxon extensions: Removed Saxon 8 extensions from release package</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+<sect1 xml:id="V1670">
+ <title>Release 1.67.0</title>
+ <itemizedlist>
+ <listitem>
+ <para>A number of important bug fixes.</para>
+ </listitem>
+ <listitem>
+ <para>Added Saxon8 extensions</para>
+ </listitem>
+ <listitem>
+ <para>Enabled <literal>dbfo table-width</literal> on
+ <tag>entrytbl</tag> in FO output</para>
+ </listitem>
+ <listitem>
+ <para>Added support for <literal>role=strong</literal> on
+ <tag>emphasis</tag> in FO output</para>
+ </listitem>
+ <listitem>
+ <para>Added new FO parameter
+ <parameter>hyphenate.verbatim</parameter> that can be used to turn
+ on "intelligent" wrapping of verbatim environments.</para>
+ </listitem>
+ <listitem>
+ <para>Replaced all <literal>&lt;tt&gt;&lt;/tt&gt;</literal> output with
+ <literal>&lt;code&gt;&lt;/code&gt;</literal></para>
+ </listitem>
+ <listitem>
+ <para>Changed <literal>admon.graphic.width</literal> template to a
+ mode so that different admonitions can have different graphical
+ widths.</para>
+ </listitem>
+ <listitem>
+ <para>Deprecated the HTML <parameter>shade.verbatim</parameter>
+ parameter (use CSS instead)</para>
+ </listitem>
+ <listitem>
+ <para>Wrapped ToC
+ <tag>refentrytitle</tag>/<tag>refname</tag> and
+ <tag>refpurpose</tag> in span with class values. This
+ makes it possible to style them using a CSS stylesheet.</para>
+ </listitem>
+ <listitem>
+ <para>Use <literal>strong/em</literal> instead of
+ <literal>b/i</literal> in HTML output</para>
+ </listitem>
+ <listitem>
+ <para>Added support for converting <tag>Emphasis</tag> to
+ groff italic and <tag>Emphasis role='bold'</tag> to
+ bold. Controlled by
+ <parameter>emphasis.propagates.style</parameter> param, but not
+ documented yet using litprog system. Will do that next (planning
+ to add some other parameter-controllable options for hyphenation
+ and handling of line spacing).</para>
+ </listitem>
+ <listitem>
+ <para><parameter>callout.graphics.number.limit.xml</parameter>
+ param: Changed the default from <literal>10</literal> to
+ <literal>15</literal>.</para>
+ </listitem>
+ <listitem>
+ <para><parameter>verbatim.properties</parameter>: Added
+ <literal>hyphenate=false</literal></para>
+ </listitem>
+ <listitem>
+ <para>Saxon and Xalan Text.java extensions: Added support for
+ <methodname>URIResolver()</methodname> on insertfile href's</para>
+ </listitem>
+ <listitem>
+ <para>Added generated <filename>RELEASE-NOTES.txt</filename>
+ file.</para>
+ </listitem>
+ <listitem>
+ <para>Added <filename>INSTALL</filename> file (executable file for
+ generating catalog.xml)</para>
+ </listitem>
+ <listitem>
+ <para>Removed obsolete <filename>tools</filename> directory from
+ package</para>
+ </listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1661">
+<title>Release 1.66.1</title>
+ <itemizedlist>
+<listitem>
+<para>A number of important bug fixes.
+</para>
+</listitem>
+<listitem>
+<para>
+Now <literal>xml:base</literal> attributes that are generated by an
+XInclude processor are resolved for image files.
+</para>
+</listitem>
+<listitem>
+<para>
+Rewrote olink templates to support several new features.
+</para>
+<itemizedlist>
+<listitem>
+<para>
+Extended full olink support to FO output.
+</para>
+</listitem>
+<listitem>
+<para>
+Add support for <literal>xrefstyle</literal> attribute in olinks.
+</para>
+</listitem>
+<listitem>
+<para>
+New parameters to support new olink features:
+<parameter>insert.olink.page.number</parameter>, <parameter>insert.olink.pdf.frag</parameter>,
+<parameter>olink.debug</parameter>, <parameter>olink.lang.fallback.sequence</parameter>, <parameter>olink.properties</parameter>,
+<parameter>prefer.internal.olink</parameter>.
+See the reference page for each parameter for more
+information.</para>
+</listitem>
+</itemizedlist>
+</listitem>
+<listitem>
+<para>
+Added <parameter>index.on.type</parameter> parameter for new <tag class="attribute">type</tag>
+attribute introduced in DocBook 4.3 for indexterms and index.
+This allows you to create multiple indices containing
+different categories of entries.
+For users of 4.2 and earlier, you can use the new parameter <parameter>index.on.role</parameter>
+instead.
+</para>
+</listitem>
+<listitem>
+<para>
+Added new
+<parameter>section.autolabel.max.depth</parameter> parameter to turn off section numbering
+below a certain depth.
+This permits you to number major section levels and leave minor
+section levels unnumbered.</para>
+</listitem>
+<listitem>
+<para>
+Added <parameter>footnote.sep.leader.properties</parameter> attribute set to format
+the line separating footnotes in printed output.
+</para>
+</listitem>
+<listitem>
+<para>
+Added parameter <parameter>img.src.path</parameter> as a prefix to HTML img src
+attributes.
+The prefix is added to whatever path is already generated by the
+stylesheet for each image file.</para>
+</listitem>
+<listitem>
+<para>
+Added new attribute-sets
+<parameter>informalequation.properties</parameter>,
+<parameter>informalexample.properties</parameter>,
+<parameter>informalfigure.properties</parameter>, and <parameter>informaltable.properties</parameter>,
+so each such element type can be formatted
+individually if needed.
+</para>
+</listitem>
+<listitem>
+<para>
+Add <parameter>component.label.includes.part.label</parameter>
+parameter to add any part number to chapter, appendix
+and other component labels when
+the <parameter>label.from.part</parameter> parameter is nonzero.
+This permits you to distinguish multiple chapters with the same
+chapter number in cross references and the TOC.</para>
+</listitem>
+<listitem>
+<para>
+Added <parameter>chunk.separate.lots</parameter> parameter for HTML output.
+This parameter lets you generate separate chunk files for each LOT
+(list of tables, list of figures, etc.).</para>
+</listitem>
+<listitem>
+<para>Added several table features:</para>
+<itemizedlist>
+<listitem>
+<para>
+Added <parameter>table.table.properties</parameter> attribute set to add
+properties to the fo:table element.
+</para>
+</listitem>
+<listitem>
+<para>
+Added placeholder templates named <literal>table.cell.properties</literal>
+and <literal>table.cell.block.properties</literal> to enable adding properties
+to any <tag>fo:table-cell</tag> or the cell's <tag>fo:block</tag>, respectively.
+ These templates are a start for implementing table styles.</para>
+</listitem>
+</itemizedlist>
+</listitem>
+<listitem>
+<para>
+Added new attribute
+set <parameter>component.title.properties</parameter> for easy modifications of
+component's title formatting in FO output.
+</para>
+</listitem>
+<listitem>
+<para>
+Added Saxon support for an <tag class="attribute">encoding</tag> attribute on the <tag class="element">textdata</tag> element. Added new parameter
+<parameter>textdata.default.encoding</parameter> which specifies encoding when
+<tag class="attribute">encoding</tag> attribute on
+<tag class="element">textdata</tag> is missing.
+</para>
+</listitem>
+<listitem>
+<para>
+Template <literal>label.this.section</literal> now controls whole
+section label, not only sub-label which corresponds to
+particular label. Former behaviour was IMHO bug as it was
+not usable.
+</para>
+</listitem>
+<listitem>
+<para>
+Formatting in titleabbrev for TOC and headers
+is preserved when there are no hotlink elements in the title. Formerly the title showed only the text of the title, no font changes or other markup.
+</para>
+</listitem>
+<listitem>
+<para>
+Added <literal>intial.page.number</literal> template to set the <literal>initial-page-number
+property</literal> for page sequences in print output.
+Customizing this template lets you change when page numbering restarts. This is similar to the <literal>format.page.number</literal> template that lets you change how the page number formatting changes in the output.
+</para>
+</listitem>
+<listitem>
+<para>
+Added <literal>force.page.count</literal> template to set the force-page-count
+property for page sequences in print output.
+This is similar to the <literal>format.page.number</literal> template.
+</para>
+</listitem>
+<listitem>
+<para>
+Sort language for localized index sorting in <filename>autoidx-ng.xsl</filename> is now taken from document
+lang, not from system environment.
+</para>
+</listitem>
+<listitem>
+<para>
+Numbering and formatting of normal
+and ulink footnotes (if turned on) has been unified.
+Now ulink footnotes are mixed in with any other footnotes.</para>
+</listitem>
+<listitem>
+<para>
+Added support for <tag>renderas</tag> attribute in section and
+sect1 et al.
+This permits you to render a given section title as if it were a different level.</para>
+</listitem>
+<listitem>
+<para>
+Added support for <tag>label</tag> attribute in footnote to manually
+supply the footnote mark.
+</para>
+</listitem>
+<listitem>
+<para>
+Added support for DocBook 4.3 <tag>corpcredit</tag> element.
+</para>
+</listitem>
+<listitem>
+<para>
+Added support for a <literal>dbfo keep-together</literal> PI for
+formal objects (table, figure, example, equation, programlisting). That permits a formal object to be kept together if it is not already, or to be broken if it
+is very long and the
+default keep-together is not appropriate.
+</para>
+</listitem>
+<listitem>
+<para>
+For graphics files, made file extension matching case
+insensitive, and updated the list of graphics extensions.
+</para>
+</listitem>
+<listitem>
+<para>
+Allow <tag>calloutlist</tag> to have block content before
+the first callout
+</para>
+</listitem>
+<listitem>
+<para>
+Added <literal>dbfo-need</literal> processing instruction to provide
+soft page breaks.
+</para>
+</listitem>
+<listitem>
+<para>
+Added implementation of existing but unused
+<parameter>default.image.width</parameter> parameter for graphics.
+</para>
+</listitem>
+<listitem>
+<para>
+Support DocBook NG <tag>tag</tag> inline element.
+</para>
+</listitem>
+<listitem>
+<para>
+It appears that XEP now supports Unicode characters in
+bookmarks. There is no further need to strip accents from
+characters.
+</para>
+</listitem>
+<listitem>
+<para>
+Make <tag>segmentedlist</tag> HTML markup
+more semantic and available to CSS styles.
+</para>
+</listitem>
+<listitem>
+<para>
+Added <literal>user.preroot</literal> placeholder template to
+permit xsl-stylesheet and other PIs and comments to be
+output before the HTML root element.
+</para>
+</listitem>
+<listitem>
+<para>
+Non-chunked legalnotice now gets an &lt;a
+name="id"&gt; element in HTML output
+so it can be referenced with xref or link.
+</para>
+</listitem>
+<listitem>
+<para>
+In chunked HTML output, changed <literal>link rel="home"</literal> to <literal>rel="start"</literal>,
+and <literal>link rel="previous"</literal> to <literal>rel="prev"</literal>, per W3C HTML 4.01
+spec.
+</para>
+</listitem>
+<listitem>
+<para>
+Added several patches to htmlhelp from W. Borgert
+</para>
+</listitem>
+<listitem>
+<para>
+Added Bosnian locale file as common/bs.xml.
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1650">
+<title>Release 1.65.0</title>
+<itemizedlist>
+<listitem>
+<para>A number of important bug fixes.
+</para>
+</listitem>
+<listitem>
+<para>Added a workaround to allow these stylesheets to process DocBook NG
+documents. (It’s a hack that pre-processes the document to strip off the
+namespace and then uses <function>exsl:node-set</function> to process
+the result.)
+</para>
+</listitem>
+<listitem>
+<para>Added alternative indexing mechanism which has better
+internationalization support. New indexing method allows grouping of
+accented letters like e, é, ë into the same group under letter "e". It
+can also treat special letters (e.g. "ch") as one character and place
+them in the correct position (e.g. between "h" and "i" in Czech
+language).</para>
+<para>In order to use this mechanism you must create customization
+layer which imports some base stylesheet (like
+<filename>fo/docbook.xsl</filename>,
+<filename>html/chunk.xsl</filename>) and then includes appropriate
+stylesheet with new indexing code
+(<filename>fo/autoidx-ng.xsl</filename> or
+<filename>html/autoidx-ng.xsl</filename>). For example:</para>
+<programlisting>&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"&gt;
+
+&lt;xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/&gt;
+&lt;xsl:include href="http://docbook.sourceforge.net/release/xsl/current/fo/autoidx-ng.xsl"/&gt;
+
+&lt;/xsl:stylesheet&gt;</programlisting>
+<para>New method is known to work with Saxon and it should also work
+with xsltproc 1.1.1 and later. Currently supported languages are
+English, Czech, German, French, Spanish and Danish.</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1641">
+<title>Release 1.64.1</title>
+<itemizedlist>
+<para>General bug fixes and improvements. Sorry about the failure to produce
+an updated release notes file for 1.62.0—1.63.2</para>
+<listitem>
+<para>In the course of fixing bug #849787, wrapping Unicode callouts
+with an appropriate font change in the Xalan extensions, I discovered
+that the Xalan APIs have changed a bit. So <filename>xalan2.jar</filename>
+will work with older Xalan 2 implementations, <filename>xalan25.jar</filename>
+works with Xalan 2.5.</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1610">
+<title>Release 1.61.0</title>
+<itemizedlist>
+<para>Lots of bug fixes and improvements.</para>
+<listitem>
+<para>Initial support for timestamp PI. From now you
+ can use &lt;?dbtimestamp format="Y-m-d H:M:S"?&gt; to get current
+ datetime in your document. Added localization support for datetime PI
+</para>
+</listitem>
+<listitem>
+<para>Added level 6 to test for <tag>section</tag> depth in
+section.level template so that
+section.title.level6.properties will be used for sections
+that are 6 deep or deeper. This should also cause a h6 to be
+created in html output.
+</para>
+</listitem>
+<listitem>
+<para>Don't use SVG graphics if <parameter>use.svg</parameter>=0
+</para>
+</listitem>
+<listitem>
+<para>Now uses number-and-title-template for sections
+ only if <parameter>section.autolabel</parameter> is not zero.
+</para>
+</listitem>
+<listitem>
+<para>Added missing 'english-language-name' attribute to
+the l10n element, and the missing 'style' attribute to the
+template element so the current gentext documents will
+validate.
+</para>
+</listitem>
+<listitem>
+<para>Corrected several references to parameter
+ <parameter>qanda.defaultlabel</parameter> that were missing the "$".
+</para>
+</listitem>
+<listitem>
+<para>Now accepts <parameter>admon.textlabel</parameter> parameter to turn off
+ Note, Warning, etc. label.
+</para>
+</listitem>
+<listitem>
+<para>FeatReq #684561: support more XEP metadata
+</para>
+</listitem>
+<listitem>
+<para>Added hyphenation support. Added support for <tag>coref</tag>.
+Added <tag>beginpage</tag> support. (does nothing; see TDG).
+</para>
+</listitem>
+<listitem>
+<para>Added support for
+hyphenation-character, hyphenation-push-character-count, and
+hyphenation-remain-character-count
+</para>
+</listitem>
+<listitem>
+<para>Added <parameter>root.properties</parameter>,
+<parameter>ebnf.assignment</parameter>,
+and <parameter>ebnf.statement.terminator</parameter>
+</para>
+</listitem>
+<listitem>
+<para>Support bgcolor PI in table cells; make sure
+rowsep and colsep don't have any effect on the last row or
+column
+</para>
+</listitem>
+<listitem>
+<para>Handle <tag>othercredit</tag> on titlepage a little
+better
+</para>
+</listitem>
+<listitem>
+<para>Applied fix from Jeff Beal that fixed the bug
+that put secondary page numbers on primary entries. Same
+with tertiary page numbers on secondary entries.
+</para>
+</listitem>
+<listitem>
+<para>Added definition of missing variable
+<parameter>collection</parameter>.
+</para>
+</listitem>
+<listitem>
+<para>Make <tag>footnote</tag> formatting 'normal' even when it
+occurs in a context that has special formatting
+</para>
+</listitem>
+<listitem>
+<para>Added warning when <parameter>glossary.collection</parameter> is not
+blank, but it cannot open the specified file.
+</para>
+</listitem>
+<listitem>
+<para>Pick up the frame attribute on <tag>table</tag> and
+<tag>informaltable</tag>.
+</para>
+</listitem>
+<listitem>
+<para><tag>indexdiv</tag>/<tag>title</tag>
+in non-autogenerated indexes are
+now picked up.
+</para>
+</listitem>
+<listitem>
+<para>Removed (unused)
+component.title.properties
+</para>
+</listitem>
+<listitem>
+<para>Move IDs from
+page-sequences down to titlepage blocks
+</para>
+</listitem>
+<listitem>
+<para>Use
+proportional-column-width(1) on more <tag>table</tag>s.
+</para>
+<para>Use proportional-column-width() for
+header/footer tables; suppress relative-align when when
+using FOP
+</para>
+</listitem>
+<listitem>
+<para>Check for <parameter>glossterm.auto.link</parameter> when linking
+firstterms; don't output gl. prefix on glossterm links
+</para>
+</listitem>
+<listitem>
+<para>Generate Part ToCs
+</para>
+</listitem>
+<listitem>
+<para>Support <tag>glossary</tag>, <tag>bibliography</tag>,
+and <tag>index</tag> in component ToCs.
+</para>
+</listitem>
+<listitem>
+<para>Refactored chunking code so that
+customization of chunk algorithm and chunk elements is more
+practical
+</para>
+</listitem>
+<listitem>
+<para>Support <tag>textobject</tag>/<tag>phrase</tag>
+on <tag>inlinemediaobject</tag>.
+</para>
+</listitem>
+<listitem>
+<para>Support 'start' PI on ordered lists
+</para>
+</listitem>
+<listitem>
+<para>Fixed test of $toc PI to turn on qandaset TOC.
+</para>
+</listitem>
+<listitem>
+<para>Added process.chunk.footnotes to sect2 through
+5 to fix bug of missing footnotes when chunk level greater
+than 1.
+</para>
+</listitem>
+<listitem>
+<para>Added
+paramater <parameter>toc.max.depth</parameter> which controls maximal depth of ToC
+as requested by PHP-DOC group.
+</para>
+</listitem>
+<listitem>
+<para>Exempted <tag>titleabbrev</tag> from preamble processing in
+lists, and fixed variablelist preamble code to use the same
+syntax as the other lists.
+</para>
+</listitem>
+<listitem>
+<para>Added support for elements between variablelist
+and first varlistentry since DocBook 4.2 supports that now.
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1601">
+<title>Release 1.60.1</title>
+<itemizedlist>
+<para>Lots of bug fixes.</para>
+<listitem>
+<para>The format of the <filename>titlepage.templates.xml</filename> files and
+the stylesheet that transforms them have been significantly changed. All of the
+attributes used to control the templates are now namespace qualified. So what
+used to be:</para>
+<programlisting>&lt;t:titlepage element="article" wrapper="fo:block"&gt;</programlisting>
+<para>is now:</para>
+<programlisting>&lt;t:titlepage t:element="article" t:wrapper="fo:block"&gt;</programlisting>
+<para>Attributes from other namespaces (including those that are unqualified) are
+now copied directly through. In practice, this means that the names that used
+to be <quote>fo:</quote> qualified:</para>
+<programlisting>&lt;title named-template="component.title"
+ param:node="ancestor-or-self::article[1]"
+ fo:text-align="center"
+ fo:keep-with-next="always"
+ fo:font-size="&amp;hsize5;"
+ fo:font-weight="bold"
+ fo:font-family="{$title.font.family}"/&gt;</programlisting>
+<para>are now unqualified:</para>
+<programlisting>&lt;title t:named-template="component.title"
+ param:node="ancestor-or-self::article[1]"
+ text-align="center"
+ keep-with-next="always"
+ font-size="&amp;hsize5;"
+ font-weight="bold"
+ font-family="{$title.font.family}"/&gt;</programlisting>
+<para>The <tag>t:titlepage</tag> and <tag>t:titlepage-content</tag>
+elements both generate wrappers now. And unqualified attributes on those elements
+are passed through. This means that you can now make the title font apply to
+ane entire titlepage and make the entire <quote>recto</quote>
+titlepage centered by specifying the font and alignment on the those elements:</para>
+<programlisting>&lt;t:titlepage t:element="article" t:wrapper="fo:block"
+ font-family="{$title.font.family}"&gt;
+
+ &lt;t:titlepage-content t:side="recto"
+ text-align="center"&gt;</programlisting>
+
+
+
+
+
+</listitem>
+<listitem>
+<para>Support use of <tag>titleabbrev</tag> in running
+headers and footers.
+</para>
+</listitem>
+<listitem>
+<para>Added (experimental) <parameter>xref.with.number.and.title</parameter>
+parameter to enable number/title cross references even when the
+default would
+be just the number.
+</para>
+</listitem>
+<listitem>
+<para>Generate <tag>part</tag> ToCs if they're requested.
+</para>
+</listitem>
+<listitem>
+<para>Use proportional-column-width() in header/footer tables.
+</para>
+</listitem>
+<listitem>
+<para>Handle alignment correctly when <tag>screenshot</tag>
+wraps a graphic in a <tag>figure</tag>.
+</para>
+</listitem>
+<listitem>
+<para>Format <tag>chapter</tag> and <tag>appendix</tag>
+cross references consistently.
+</para>
+</listitem>
+<listitem>
+<para>Attempt to support tables with multiple <tag>tgroup</tag>s
+in FO.
+</para>
+</listitem>
+<listitem>
+<para>Output <tag>fo:table-columns</tag> in
+<tag>simplelist</tag> tables.
+</para>
+</listitem>
+<listitem>
+<para>Use <filename>titlepage.templates.xml</filename> for
+<tag>indexdiv</tag> and <tag>glossdiv</tag> formatting.
+</para>
+</listitem>
+<listitem>
+<para>Improve support for new bibliography elements.
+</para>
+</listitem>
+<listitem>
+<para>Added
+<parameter>footnote.number.format</parameter>,
+<parameter>table.footnote.number.format</parameter>,
+<parameter>footnote.number.symbols</parameter>, and
+<parameter>table.footnote.number.symbols</parameter> for better control of
+footnote markers.
+</para>
+</listitem>
+<listitem>
+<para>Added <tag>glossentry.show.acronyms</tag>.
+</para>
+</listitem>
+<listitem>
+<para>Suppress the draft-mode page masters when
+<parameter>draft-mode</parameter> is <quote>no</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Make blank pages verso not recto. D'Oh!
+</para>
+</listitem>
+<listitem>
+<para>Improved formatting of <tag>ulink</tag> footnotes.
+</para>
+</listitem>
+<listitem>
+<para>Fixed bugs in graphic width/height calculations.
+</para>
+</listitem>
+<listitem>
+<para>Added class attributes to inline elements.
+</para>
+</listitem>
+<listitem>
+<para>Don't add <quote>.html</quote> to the filenames identified
+with the <quote>dbhtml</quote> PI.
+</para>
+</listitem>
+<listitem>
+<para>Don't force a ToC when sections contain <tag>refentry</tag>s.
+</para>
+</listitem>
+<listitem>
+<para>Make section title sizes a function of the
+<parameter>body.master.size</parameter>.
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1592">
+<title>Release 1.59.2</title>
+<itemizedlist>
+<para>The 1.59.2 fixes an FO bug in the page masters that causes FOP to fail.
+</para>
+<listitem>
+<para>Removed the region-name from the region-body of blank pages. There's
+no reason to give the body of blank pages a unique name and doing so causes
+a mismatch that FOP detects.
+</para>
+</listitem>
+<listitem>
+<para>Output IDs for the first paragraphs in listitems.
+</para>
+</listitem>
+<listitem>
+<para>Fixed some small bugs in the handling of page numbers in double-sided mode.
+</para>
+</listitem>
+<listitem>
+<para>Attempt to prevent duplicated IDs from being produced when
+<tag class="attribute">endterm</tag> on <tag>xref</tag> points
+to something with nested structure.
+</para>
+</listitem>
+<listitem>
+<para>Fix aligment problems in <tag>equation</tag>s.
+</para>
+</listitem>
+<listitem>
+<para>Output the type attribute on unordered lists (UL) in HTML only if
+the css.decoration parameter is true.
+</para>
+</listitem>
+<listitem>
+<para>Calculate the font size in formal.title.properties so that it's 1.2 times
+the base font size, not a fixed "12pt".
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1591">
+<title>Release 1.59.1</title>
+<itemizedlist>
+<para>The 1.59.1 fixes a few bugs.
+</para>
+<listitem>
+<para>Added Bulgarian localization.
+</para>
+</listitem>
+<listitem>
+<para>Indexing improvements; localize book indexes to books but allow setindex
+to index an entire set.
+</para>
+</listitem>
+<listitem>
+<para>The default value for rowsep and colsep is now "1" as per CALS.
+</para>
+</listitem>
+<listitem>
+<para>Added support for <tag>titleabbrev</tag> (use them for cross
+references).
+</para>
+</listitem>
+<listitem>
+<para>Improvements to <tag>mediaobject</tag> for selecting print vs. online
+images.
+</para>
+</listitem>
+<listitem>
+<para>Added seperate property sets for <tag>figure</tag>s,
+<tag>example</tag>s, <tag>equation</tag>s, <tag>tables</tag>s,
+and <tag>procedure</tag>s.
+</para>
+</listitem>
+<listitem>
+<para>Make <tag>lineannotation</tag>s italic.
+</para>
+</listitem>
+<listitem>
+<para>Support <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+<listitem>
+<para>Make <tag class="attribute">endterm</tag> on
+<tag>xref</tag> higher priority than
+<tag class="attribute">xreflabel</tag> target.
+</para>
+</listitem>
+<listitem>
+<para>Glossary formatting improvements.
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1580">
+<title>Release 1.58.0</title>
+<itemizedlist>
+<para>The 1.58.0 adds some initial support for extensions in xsltproc, adds
+a few features, and fixes bugs.
+</para>
+<listitem>
+<para>This release contains the first attempt at extension support for xsltproc.
+The only extension available to date is the one that adjusts table column widths.
+Run <filename>extensions/xsltproc/python/xslt.py</filename>.
+</para>
+</listitem>
+<listitem>
+<para>Fixed bugs in calculation of adjusted column widths to correct for rounding
+errors.
+</para>
+</listitem>
+<listitem>
+<para>Support nested <tag>refsection</tag> elements correctly.
+</para>
+</listitem>
+<listitem>
+<para>Reworked <literal>gentext.template</literal> to take context into consideration.
+The name of elements in localization files is now an xpath-like context list, not
+just a simple name.
+</para>
+</listitem>
+<listitem>
+<para>Made some improvements to bibliography formatting.
+</para>
+</listitem>
+<listitem>
+<para>Improved graphical formatting of admonitions.
+</para>
+</listitem>
+<listitem>
+<para>Added support for <tag>entrytbl</tag>.
+</para>
+</listitem>
+<listitem>
+<para>Support spanning index terms.
+</para>
+</listitem>
+<listitem>
+<para>Support <tag>bibliosource</tag>.
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1570">
+<title>Release 1.57.0</title>
+<itemizedlist>
+<listitem>
+<para>The 1.57.0 release wasn't documented here. Oops.
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="V1560">
+<title>Release 1.56.0</title>
+<itemizedlist>
+<para>The 1.56.0 release fixes bugs.
+</para>
+<listitem>
+<para>Reworked chunking. <emphasis>This will break all existing customizations
+layers that change the chunking algorithm.</emphasis> If you're customizing chunking,
+look at the new <quote>content</quote> parameter that's passed to
+<literal>process-chunk-element</literal> and friends.
+</para>
+</listitem>
+<listitem>
+<para>Support continued and inherited numeration in <tag>orderedlist</tag>
+formatting for FOs.
+</para>
+</listitem>
+<listitem>
+<para>Added Thai localization.
+</para>
+</listitem>
+<listitem>
+<para>Tweaked stylesheet documentation stylesheets to link to TDG and
+the parameter references.
+</para>
+</listitem>
+<listitem>
+<para>Allow title on tables of contents ("Table of Contents") to be optional.
+Added new keyword to <parameter>generate.toc</parameter>.
+Support tables of contents on sections.
+</para>
+</listitem>
+<listitem>
+<para>Made separate parameters for table borders and table cell borders:
+<parameter>table.frame.border.color</parameter>,
+<parameter>table.frame.border.style</parameter>,
+<parameter>table.frame.border.thickness</parameter>,
+<parameter>table.cell.border.color</parameter>,
+<parameter>table.cell.border.style</parameter>, and
+<parameter>table.cell.border.thickness</parameter>.
+</para>
+</listitem>
+<listitem>
+<para>Suppress formatting of <quote>endofrange</quote> <tag>indexterm</tag>s.
+This is only half-right. They should generate a range, but I haven't figured out how
+to do that yet.
+</para>
+</listitem>
+<listitem>
+<para>Support <tag>revdescription</tag>. (Bug #582192)
+</para>
+</listitem>
+<listitem>
+<para>Added <parameter>default.float.class</parameter> and fixed figure
+floats. (Bug #497603)
+</para>
+</listitem>
+<listitem>
+<para>Fixed formatting of <tag>sbr</tag> in FOs.
+</para>
+</listitem>
+<listitem>
+<para>Added context to the <quote>missing template</quote> error message.
+</para>
+</listitem>
+<listitem>
+<para>Process <tag>arg</tag> correctly in a <tag>group</tag>.
+(Bug #605150)
+</para>
+</listitem>
+<listitem>
+<para>Removed 'keep-with-next' from <parameter>formal.title.properties</parameter>
+attribute set now that the stylesheets support the option of putting
+such titles below the object. Now the $placement value determines if
+'keep-with-next' or 'keep-with-previous' is used in the title block.
+</para>
+</listitem>
+<listitem>
+<para>Wrap <quote>url()</quote> around external-destinations when appropriate.
+</para>
+</listitem>
+<listitem>
+<para>Fixed typo in compact list spacing. (Bug #615464)
+</para>
+</listitem>
+<listitem>
+<para>Removed spurious hash in anchor name. (Bug #617717)
+</para>
+</listitem>
+<listitem>
+<para>Address is now displayed verbatim on title pages. (Bug #618600)
+</para>
+</listitem>
+<listitem>
+<para>The <parameter>bridgehead.in.toc</parameter> parameter is now properly
+supported.
+</para>
+</listitem>
+<listitem>
+<para>Improved effectiveness of HTML cleanup by increasing the number
+of places where it is used. Improve use of HTML cleanup in XHTML stylesheets.
+</para>
+</listitem>
+<listitem>
+<para>Support table of contents for <tag>appendix</tag> in
+<tag>article</tag>. (Bug #596599)
+</para>
+</listitem>
+<listitem>
+<para>Don't duplicate footnotes in <tag>bibliography</tag>s and
+<tag>glossary</tag>s. (Bug #583282)
+</para>
+</listitem>
+<listitem>
+<para>Added <parameter>default.image.width</parameter>. (Bug #516859)
+</para>
+</listitem>
+<listitem>
+<para>Totally reworked <tag>funcsynopsis</tag> code; it now
+supports a 'tabular' presentation style for 'wide' prototypes; see
+<parameter>funcsynopsis.tabular.threshold</parameter>. (HTML only
+right now, I think, FO support, uh, real soon now.)
+</para>
+</listitem>
+<listitem>
+<para>Reworked support for difference marking; toned down the colors a bit
+and added a <quote>system.head.content</quote> template so that the diff CSS
+wasn't overriding <quote>user.head.content</quote>. (Bug #610660)
+</para>
+</listitem>
+<listitem>
+<para>Added call to the <quote>*.head.content</quote> elements when writing
+out long description chunks.
+</para>
+</listitem>
+<listitem>
+<para>Make sure <tag>legalnotice</tag> link is correct even when
+chunking to a different <parameter>base.dir</parameter>.
+</para>
+</listitem>
+<listitem>
+<para>Use CSS to set viewport characteristics if
+<parameter>css.decoration</parameter> is non-zero, use div instead of p for making
+graphic a block element; make figure <tag>title</tag>s the
+default alt
+text for images in a <tag>figure</tag>.</para>
+</listitem>
+<listitem>
+<para>Added space-after to <parameter>list.block.spacing</parameter>.
+</para>
+</listitem>
+<listitem>
+<para>Reworked section.level template to give <quote>correct</quote> answer
+instead of being off by one.
+</para>
+</listitem>
+<listitem>
+<para>When processing tables, use the <tag class="attribute">tabstyle</tag>
+attribute as the division class.
+</para>
+</listitem>
+<listitem>
+<para>Fixed bug in <filename>html2xhtml.xsl</filename> that was causing the
+XHTML chunker to output HTML instead of XHTML.
+</para>
+</listitem>
+</itemizedlist>
+</sect1>
+<sect1 xml:id="VOlder">
+ <title>Older releases</title>
+ <para>To view the release notes for older releases, see <uri xlink:href="http://cvs.sourceforge.net/viewcvs.py/docbook/xsl/RELEASE-NOTES.xml">http://cvs.sourceforge.net/viewcvs.py/docbook/xsl/RELEASE-NOTES.xml</uri>. Be
+ aware that there were no release notes for releases prior to the
+ 1.50.0 release.</para>
+</sect1>
+<sect1 xml:id="dot0">
+ <title>About dot-zero releases</title>
+ <para>DocBook Project “dot zero†releases should be
+ considered <emphasis>experimental</emphasis> and are always
+ followed by stable “dot one plus†releases, usually within
+ two or three weeks. Please help to ensure the stability of
+ “dot one plus†releases by carefully testing each
+ “dot zero†release and reporting back about any
+ problems you find. </para>
+ <para>It is not recommended that you use a “dot zeroâ€
+ release in a production system. Instead, you should wait for
+ the “dot one†or greater versions.</para>
+ </sect1>
+</article>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO
new file mode 100644
index 0000000..1f421cd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO
@@ -0,0 +1,23 @@
+The "to do" list for the DocBook Project XSL stylesheets is
+maintained at Sourceforge. To view a list of all open feature
+requests for the stylesheets:
+
+ http://docbook.sf.net/tracker/xsl/requests
+
+To submit a feature request against the stylesheets:
+
+ http://docbook.sf.net/tracker/submit/request
+
+To do a full-text search of all DocBook Project issues:
+
+ http://docbook.sf.net/tracker/search
+
+Discussion about the DocBook Project XSL stylesheets takes place
+on the docbook-apps mailing list:
+
+ http://wiki.docbook.org/topic/DocBookAppsMailingList
+
+Real-time discussion takes place on IRC:
+
+ http://wiki.docbook.org/topic/DocBookIrcChannel
+ irc://irc.freenode.net/docbook
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION
new file mode 100644
index 0000000..a073fbf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION
@@ -0,0 +1,115 @@
+<?xml version='1.0'?> <!-- -*- nxml -*- vim: set foldlevel=2: -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fm="http://freshmeat.net/projects/freshmeat-submit/"
+ xmlns:sf="http://sourceforge.net/"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ exclude-result-prefixes="fm sf"
+ version='1.0'>
+
+<xsl:param name="get"/>
+<xsl:param name="VERSION" select="string(document('')//fm:Version[1])"/>
+<xsl:param name="Tag" select="concat('V',translate(string(document('')//fm:Version[1]),'.',''))"/>
+<xsl:param name="DistroTitle" select="string(document('')//fm:Branch[1])"/>
+<xsl:param name="sf-relid" select="0"/>
+
+<xsl:param name="DistroName">docbook-xsl</xsl:param>
+<xsl:param name="PreviousRelease">1.76.0</xsl:param>
+<xsl:param name="PreviousReleaseRevision">8900</xsl:param>
+<xsl:param name="Revision">$Revision: 8933 $</xsl:param>
+<xsl:param name="VersionFileURL">$URL: https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl/VERSION $</xsl:param>
+
+<xsl:strip-space elements="fm:*"/>
+
+<fm:project>
+ <fm:Project>DocBook</fm:Project>
+ <fm:Branch>XSL Stylesheets</fm:Branch>
+ <!-- * set/keep fm:version as N.NN.N-pre except for official releases, -->
+ <!-- * then after the release, revert it to N.NN.N-pre & check back in -->
+ <fm:Version>1.76.1</fm:Version>
+<!--
+ <fm:License>MIT/X Consortium License</fm:License>
+-->
+ <fm:Release-Focus>
+<!-- * Initial freshmeat announcement -->
+<!-- * Documentation -->
+<!-- * Code cleanup -->
+<!-- * Minor feature enhancements -->
+<!-- * Major feature enhancements -->
+* Minor bugfixes
+<!-- * Major bugfixes -->
+<!-- * Minor security fixes -->
+<!-- * Major security fixes -->
+ </fm:Release-Focus>
+ <fm:Home-Page-URL>http://sourceforge.net/projects/docbook/</fm:Home-Page-URL>
+ <fm:Gzipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.tar.gz?download</fm:Gzipped-Tar-URL>
+ <fm:Zipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.zip?download</fm:Zipped-Tar-URL>
+ <fm:Bzipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.bz2?download</fm:Bzipped-Tar-URL>
+ <fm:Changelog-URL>http://sourceforge.net/project/shownotes.php?release_id={SFRELID}</fm:Changelog-URL>
+ <fm:CVS-URL>http://docbook.svn.sourceforge.net/viewvc/docbook/</fm:CVS-URL>
+ <fm:Mailing-List-URL>http://lists.oasis-open.org/archives/docbook-apps/</fm:Mailing-List-URL>
+ <fm:Changes>This is a release with bugfixes and some enhancements.</fm:Changes>
+</fm:project>
+
+<xsl:template match="/" priority="-100">
+ <xsl:choose>
+ <xsl:when test="$get = 'Tag'">
+ <xsl:value-of select="$Tag"/>
+ </xsl:when>
+ <xsl:when test="$get = 'PreviousRelease'">
+ <xsl:value-of select="$PreviousRelease"/>
+ </xsl:when>
+ <xsl:when test="$get = 'PreviousReleaseRevision'">
+ <xsl:value-of select="$PreviousReleaseRevision"/>
+ </xsl:when>
+ <xsl:when test="$get = 'DistroTitle'">
+ <xsl:value-of select="$DistroTitle"/>
+ </xsl:when>
+ <xsl:when test="$get = 'VERSION'">
+ <xsl:value-of select="$VERSION"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$sf-relid = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>You must specify the sf-relid as a parameter.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:apply-templates select="//fm:project"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="fm:project">
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="fm:Changes" mode="text"/>
+</xsl:template>
+
+<xsl:template match="fm:Changes"/>
+
+<xsl:template match="fm:Gzipped-Tar-URL|fm:Zipped-Tar-URL|fm:Bzipped-Tar-URL">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="substring-before(., '{DISTRONAME-VERSION}')"/>
+ <xsl:value-of select="concat($DistroName, '-', $VERSION)"/>
+ <xsl:value-of select="substring-after(., '{DISTRONAME-VERSION}')"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="fm:Changelog-URL">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="substring-before(., '{SFRELID}')"/>
+ <xsl:value-of select="$sf-relid"/>
+ <xsl:value-of select="substring-after(., '{SFRELID}')"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="fm:*">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml
new file mode 100644
index 0000000..f058646
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <!-- XML Catalog file for DocBook XSL Stylesheets v1.76.1 -->
+ <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="./"/>
+ <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="./"/>
+ <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/1.76.1/" rewritePrefix="./"/>
+ <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/1.76.1/" rewritePrefix="./"/>
+</catalog>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml
new file mode 100644
index 0000000..535b612
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="af" english-language-name="Afrikaans">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/af.xml -->
+<!-- * -->
+<!-- * E-mail the edited af.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Samevatting"/>
+<l:gentext key="abstract" text="samevatting"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Antwoord:"/>
+<l:gentext key="answer" text="antwoord:"/>
+<l:gentext key="Appendix" text="Aanhangsel"/>
+<l:gentext key="appendix" text="aanhangsel"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="artikel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografie"/>
+<l:gentext key="bibliography" text="bibliografie"/>
+<l:gentext key="Book" text="Boek"/>
+<l:gentext key="book" text="boek"/>
+<l:gentext key="CAUTION" text="PAS OP"/>
+<l:gentext key="Caution" text="Pas op"/>
+<l:gentext key="caution" text="pas op"/>
+<l:gentext key="Chapter" text="Hoofdstuk"/>
+<l:gentext key="chapter" text="hoofdstuk"/>
+<l:gentext key="Colophon" text="Kolifon"/>
+<l:gentext key="colophon" text="kolifon"/>
+<l:gentext key="Copyright" text="Kopie reg"/>
+<l:gentext key="copyright" text="kopie reg"/>
+<l:gentext key="Dedication" text="Opgedra aan"/>
+<l:gentext key="dedication" text="opgedra aan"/>
+<l:gentext key="Edition" text="Uitgawe"/>
+<l:gentext key="edition" text="uitgawe"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Vergelyking"/>
+<l:gentext key="equation" text="vergelyking"/>
+<l:gentext key="Example" text="Voorbeeld"/>
+<l:gentext key="example" text="voorbeeld"/>
+<l:gentext key="Figure" text="Figuur"/>
+<l:gentext key="figure" text="figuur"/>
+<l:gentext key="Glossary" text="Woordlys"/>
+<l:gentext key="glossary" text="woordlys"/>
+<l:gentext key="GlossSee" text="WoordelysSien"/>
+<l:gentext key="glosssee" text="woordelyssien"/>
+<l:gentext key="GlossSeeAlso" text="WoordelysSienOok"/>
+<l:gentext key="glossseealso" text="woordelyssienook"/>
+<l:gentext key="IMPORTANT" text="BELANGRIK"/>
+<l:gentext key="important" text="belangrik"/>
+<l:gentext key="Important" text="Belangrik"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="RegsKennisgewing"/>
+<l:gentext key="legalnotice" text="regskennisgewing"/>
+<l:gentext key="MsgAud" text="Teikengroep"/>
+<l:gentext key="msgaud" text="teikengroep"/>
+<l:gentext key="MsgLevel" text="Vlak"/>
+<l:gentext key="msglevel" text="vlak"/>
+<l:gentext key="MsgOrig" text="Herkoms"/>
+<l:gentext key="msgorig" text="herkoms"/>
+<l:gentext key="NOTE" text="OPMERKING"/>
+<l:gentext key="Note" text="Opmerking"/>
+<l:gentext key="note" text="opmerking"/>
+<l:gentext key="Part" text="Deel"/>
+<l:gentext key="part" text="deel"/>
+<l:gentext key="Preface" text="Voorwoord"/>
+<l:gentext key="preface" text="voorwoord"/>
+<l:gentext key="Procedure" text="Prosedure"/>
+<l:gentext key="procedure" text="prosedure"/>
+<l:gentext key="ProductionSet" text="ProduksieStel"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Uitgegee"/>
+<l:gentext key="published" text="uitgegee"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Vraag et Antwoord"/>
+<l:gentext key="qandadiv" text="Vraag et Antwoord"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Vraag:"/>
+<l:gentext key="question" text="vraag:"/>
+<l:gentext key="RefEntry" text="Verwysingslemma"/>
+<l:gentext key="refentry" text="verwysingslemma"/>
+<l:gentext key="Reference" text="Verwysing"/>
+<l:gentext key="reference" text="verwysing"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Verwysingsnaam"/>
+<l:gentext key="refname" text="verwysingsnaam"/>
+<l:gentext key="RefSection" text="Verwysingsparagraaf"/>
+<l:gentext key="refsection" text="verwysingsparagraaf"/>
+<l:gentext key="RefSynopsisDiv" text="Verwysingsamevatting"/>
+<l:gentext key="refsynopsisdiv" text="verwysingsamevatting"/>
+<l:gentext key="RevHistory" text="Hersiening geskiedenis"/>
+<l:gentext key="revhistory" text="hersiening geskiedenis"/>
+<l:gentext key="revision" text="hersiening"/>
+<l:gentext key="Revision" text="Hersiening"/>
+<l:gentext key="sect1" text="Paragraaf"/>
+<l:gentext key="sect2" text="Paragraaf"/>
+<l:gentext key="sect3" text="Paragraaf"/>
+<l:gentext key="sect4" text="Paragraaf"/>
+<l:gentext key="sect5" text="Paragraaf"/>
+<l:gentext key="section" text="paragraaf"/>
+<l:gentext key="Section" text="Paragraaf"/>
+<l:gentext key="see" text="sien"/>
+<l:gentext key="See" text="Sien"/>
+<l:gentext key="seealso" text="sien ook"/>
+<l:gentext key="Seealso" text="Sien ook"/>
+<l:gentext key="SeeAlso" text="Sien Ook"/>
+<l:gentext key="set" text="versameling"/>
+<l:gentext key="Set" text="Versameling"/>
+<l:gentext key="setindex" text="versamelingindeks"/>
+<l:gentext key="SetIndex" text="VersamelingIndeks"/>
+<l:gentext key="Sidebar" text="Kantbalk"/>
+<l:gentext key="sidebar" text="kantbalk"/>
+<l:gentext key="step" text="stap"/>
+<l:gentext key="Step" text="Stap"/>
+<l:gentext key="table" text="tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="leidraad"/>
+<l:gentext key="TIP" text="LEIDRAAD"/>
+<l:gentext key="Tip" text="Leidraad"/>
+<l:gentext key="Warning" text="Waarskuwing"/>
+<l:gentext key="warning" text="waarskuwing"/>
+<l:gentext key="WARNING" text="WAARSKUWING"/>
+<l:gentext key="and" text="en"/>
+<l:gentext key="by" text="deur"/>
+<l:gentext key="Edited" text="Geredigeer"/>
+<l:gentext key="edited" text="geredigeer"/>
+<l:gentext key="Editedby" text="Geredigeer deur"/>
+<l:gentext key="editedby" text="geredigeer deur"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notas"/>
+<l:gentext key="Notes" text="notas"/>
+<l:gentext key="Pgs" text="bl."/>
+<l:gentext key="pgs" text="bl."/>
+<l:gentext key="Revisedby" text="Hersien deur"/>
+<l:gentext key="revisedby" text="hersien deur"/>
+<l:gentext key="TableNotes" text="TabelOpmerking"/>
+<l:gentext key="tablenotes" text="tabelopmerking"/>
+<l:gentext key="TableofContents" text="Inhoudsopgawe"/>
+<l:gentext key="tableofcontents" text="inhoudsopgawe"/>
+<l:gentext key="unexpectedelementname" text="onverwagte element naam"/>
+<l:gentext key="unsupported" text="nie geondersteun"/>
+<l:gentext key="xrefto" text="verwysing na"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="lys van vergelykings"/>
+<l:gentext key="ListofEquations" text="Lys van vergelykings"/>
+<l:gentext key="ListofExamples" text="Lys van voorbeelde"/>
+<l:gentext key="listofexamples" text="lys van voorbeelde"/>
+<l:gentext key="ListofFigures" text="Lys van figure"/>
+<l:gentext key="listoffigures" text="lys van figure"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="lys van tabelle"/>
+<l:gentext key="ListofTables" text="Lys van tabelle"/>
+<l:gentext key="ListofUnknown" text="Lys van onbekende tipes"/>
+<l:gentext key="listofunknown" text="lys van onbekende tipes"/>
+<l:gentext key="nav-home" text="Begin"/>
+<l:gentext key="nav-next" text="Volgende"/>
+<l:gentext key="nav-next-sibling" text="Verder vooruit"/>
+<l:gentext key="nav-prev" text="Terug"/>
+<l:gentext key="nav-prev-sibling" text="Verder terug"/>
+<l:gentext key="nav-up" text="Boontoe"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Proef"/>
+<l:gentext key="above" text="bo"/>
+<l:gentext key="below" text="onder"/>
+<l:gentext key="sectioncalled" text="die seksie genaamd"/>
+<l:gentext key="index symbols" text="indeks simbole"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Aanhangsel %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Vergelyking %n. %t"/>
+<l:template name="example" text="Voorbeeld %n. %t"/>
+<l:template name="figure" text="Figuur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ProduksieStel %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Aanhangsel %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Antwoord: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="die seksie genaamd “%tâ€"/>
+<l:template name="refsection" text="die seksie genaamd “%tâ€"/>
+<l:template name="refsect1" text="die seksie genaamd “%tâ€"/>
+<l:template name="refsect2" text="die seksie genaamd “%tâ€"/>
+<l:template name="refsect3" text="die seksie genaamd “%tâ€"/>
+<l:template name="sect1" text="die seksie genaamd “%tâ€"/>
+<l:template name="sect2" text="die seksie genaamd “%tâ€"/>
+<l:template name="sect3" text="die seksie genaamd “%tâ€"/>
+<l:template name="sect4" text="die seksie genaamd “%tâ€"/>
+<l:template name="sect5" text="die seksie genaamd “%tâ€"/>
+<l:template name="section" text="die seksie genaamd “%tâ€"/>
+<l:template name="simplesect" text="die seksie genaamd “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Antwoord: %n"/>
+<l:template name="appendix" text="Aanhangsel %n"/>
+<l:template name="bridgehead" text="Paragraaf %n"/>
+<l:template name="chapter" text="Hoofdstuk %n"/>
+<l:template name="equation" text="Vergelyking %n"/>
+<l:template name="example" text="Voorbeeld %n"/>
+<l:template name="figure" text="Figuur %n"/>
+<l:template name="part" text="Deel %n"/>
+<l:template name="procedure" text="Prosedure %n"/>
+<l:template name="productionset" text="ProduksieStel %n"/>
+<l:template name="qandadiv" text="Vraag et Antwoord %n"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="sect1" text="Paragraaf %n"/>
+<l:template name="sect2" text="Paragraaf %n"/>
+<l:template name="sect3" text="Paragraaf %n"/>
+<l:template name="sect4" text="Paragraaf %n"/>
+<l:template name="sect5" text="Paragraaf %n"/>
+<l:template name="section" text="Paragraaf %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Aanhangsel %n, %t"/>
+<l:template name="bridgehead" text="Paragraaf %n, “%tâ€"/>
+<l:template name="chapter" text="Hoofdstuk %n, %t"/>
+<l:template name="equation" text="Vergelyking %n, “%tâ€"/>
+<l:template name="example" text="Voorbeeld %n, “%tâ€"/>
+<l:template name="figure" text="Figuur %n, “%tâ€"/>
+<l:template name="part" text="Deel %n, “%tâ€"/>
+<l:template name="procedure" text="Prosedure %n, “%tâ€"/>
+<l:template name="productionset" text="ProduksieStel %n, “%tâ€"/>
+<l:template name="qandadiv" text="Vraag et Antwoord %n, “%tâ€"/>
+<l:template name="refsect1" text="die seksie genaamd “%tâ€"/>
+<l:template name="refsect2" text="die seksie genaamd “%tâ€"/>
+<l:template name="refsect3" text="die seksie genaamd “%tâ€"/>
+<l:template name="refsection" text="die seksie genaamd “%tâ€"/>
+<l:template name="sect1" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect2" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect3" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect4" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect5" text="Paragraaf %n, “%tâ€"/>
+<l:template name="section" text="Paragraaf %n, “%tâ€"/>
+<l:template name="simplesect" text="die seksie genaamd “%tâ€"/>
+<l:template name="table" text="Tabel %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" en "/>
+<l:template name="seplast" text=", en "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="WoordelysSien %t."/>
+<l:template name="seealso" text="WoordelysSienOok %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Teikengroep: "/>
+<l:template name="MsgLevel" text="Vlak: "/>
+<l:template name="MsgOrig" text="Herkoms: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0436 Afrikaans"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml
new file mode 100644
index 0000000..ddb5035
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="am" english-language-name="Amharic">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/am.xml -->
+<!-- * -->
+<!-- * E-mail the edited am.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ረቂቅ"/>
+<l:gentext key="abstract" text="ረቂቅ"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="መá¦"/>
+<l:gentext key="answer" text="መá¦"/>
+<l:gentext key="Appendix" text="ተጨማሪ"/>
+<l:gentext key="appendix" text="ተጨማሪ"/>
+<l:gentext key="Article" text="ጽሑá"/>
+<l:gentext key="article" text="ጽሑá"/>
+<l:gentext key="Author" text="ደራሲ"/>
+<l:gentext key="Bibliography" text="የመጻሕáት á‹áˆ­á‹áˆ­"/>
+<l:gentext key="bibliography" text="የመጻሕáት á‹áˆ­á‹áˆ­"/>
+<l:gentext key="Book" text="መጽáˆá"/>
+<l:gentext key="book" text="መጽáˆá"/>
+<l:gentext key="CAUTION" text="ጥንቃቄ"/>
+<l:gentext key="Caution" text="ጥንቃቄ"/>
+<l:gentext key="caution" text="ጥንቃቄ"/>
+<l:gentext key="Chapter" text="áˆá‹•áˆ«á"/>
+<l:gentext key="chapter" text="áˆá‹•áˆ«á"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="የቅጂዠመብት"/>
+<l:gentext key="copyright" text="የቅጂዠመብት"/>
+<l:gentext key="Dedication" text="ለአላማ መሰዋት"/>
+<l:gentext key="dedication" text="ለአላማ መሰዋት"/>
+<l:gentext key="Edition" text="ቅጂ"/>
+<l:gentext key="edition" text="ቅጂ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="እኩሌታ"/>
+<l:gentext key="equation" text="እኩሌታ"/>
+<l:gentext key="Example" text="ለáˆáˆ³áˆŒ"/>
+<l:gentext key="example" text="ለáˆáˆ³áˆŒ"/>
+<l:gentext key="Figure" text="áˆáˆµáˆ"/>
+<l:gentext key="figure" text="áˆáˆµáˆ"/>
+<l:gentext key="Glossary" text="የቃላቶች áቺ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="glossary" text="የቃላቶች áቺ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="GlossSee" text="ማየት (እይ)"/>
+<l:gentext key="glosssee" text="ማየት (እይ)"/>
+<l:gentext key="GlossSeeAlso" text="…ንሠእይ"/>
+<l:gentext key="glossseealso" text="…ንሠእይ"/>
+<l:gentext key="IMPORTANT" text="አስáˆáˆ‹áŒŠ"/>
+<l:gentext key="important" text="አስáˆáˆ‹áŒŠ"/>
+<l:gentext key="Important" text="አስáˆáˆ‹áŒŠ"/>
+<l:gentext key="Index" text="ማá‹áŒ«"/>
+<l:gentext key="index" text="ማá‹áŒ«"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ህጋዊ ማስታወቂያ"/>
+<l:gentext key="legalnotice" text="ህጋዊ ማስታወቂያ"/>
+<l:gentext key="MsgAud" text="ተመáˆáŠ«á‰½"/>
+<l:gentext key="msgaud" text="ተመáˆáŠ«á‰½"/>
+<l:gentext key="MsgLevel" text="ደረጃ"/>
+<l:gentext key="msglevel" text="ደረጃ"/>
+<l:gentext key="MsgOrig" text="áˆáŠ•áŒ­"/>
+<l:gentext key="msgorig" text="áˆáŠ•áŒ­"/>
+<l:gentext key="NOTE" text="ማስታወሻ"/>
+<l:gentext key="Note" text="ማስታወሻ"/>
+<l:gentext key="note" text="ማስታወሻ"/>
+<l:gentext key="Part" text="ክááˆ"/>
+<l:gentext key="part" text="ክááˆ"/>
+<l:gentext key="Preface" text="መቅድáˆ"/>
+<l:gentext key="preface" text="መቅድáˆ"/>
+<l:gentext key="Procedure" text="ቅደሠተከተáˆ"/>
+<l:gentext key="procedure" text="ቅደሠተከተáˆ"/>
+<l:gentext key="ProductionSet" text="áˆáˆ­á‰µ"/>
+<l:gentext key="PubDate" text="የታተመበት ቀን"/>
+<l:gentext key="pubdate" text="የታተመበት ቀን"/>
+<l:gentext key="Published" text="ታትሟáˆ"/>
+<l:gentext key="published" text="ታትሟáˆ"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ጥያቄ እና መáˆáˆµ"/>
+<l:gentext key="qandadiv" text="ጥያቄ እና መáˆáˆµ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ጥá¦"/>
+<l:gentext key="question" text="ጥá¦"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="ማጣቀሻ"/>
+<l:gentext key="reference" text="ማጣቀሻ"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ስáˆ"/>
+<l:gentext key="refname" text="ስáˆ"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="መáŒáˆˆáŒ«"/>
+<l:gentext key="refsynopsisdiv" text="መáŒáˆˆáŒ«"/>
+<l:gentext key="RevHistory" text="የተሻሻለ ታሪክ"/>
+<l:gentext key="revhistory" text="የተሻሻለ ታሪክ"/>
+<l:gentext key="revision" text="የተሻሻለ"/>
+<l:gentext key="Revision" text="የተሻሻለ"/>
+<l:gentext key="sect1" text="ክááˆ"/>
+<l:gentext key="sect2" text="ክááˆ"/>
+<l:gentext key="sect3" text="ክááˆ"/>
+<l:gentext key="sect4" text="ክááˆ"/>
+<l:gentext key="sect5" text="ክááˆ"/>
+<l:gentext key="section" text="ክááˆ"/>
+<l:gentext key="Section" text="ክááˆ"/>
+<l:gentext key="see" text="ማየት (እይ)"/>
+<l:gentext key="See" text="ማየት (እይ)"/>
+<l:gentext key="seealso" text="…ንሠእይ"/>
+<l:gentext key="Seealso" text="…ንሠእይ"/>
+<l:gentext key="SeeAlso" text="…ንሠእይ"/>
+<l:gentext key="set" text="አድርáŒ"/>
+<l:gentext key="Set" text="አድርáŒ"/>
+<l:gentext key="setindex" text="ማá‹áŒ«á‹áŠ• ይመáˆáŠ¨á‰±"/>
+<l:gentext key="SetIndex" text="ማá‹áŒ«á‹áŠ• ይመáˆáŠ¨á‰±"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="የጥጠቋሚ"/>
+<l:gentext key="step" text="ደረጃ"/>
+<l:gentext key="Step" text="ደረጃ"/>
+<l:gentext key="table" text="ሠንጠረዥ"/>
+<l:gentext key="Table" text="ሠንጠረዥ"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="áንጭ"/>
+<l:gentext key="TIP" text="áንጭ"/>
+<l:gentext key="Tip" text="áንጭ"/>
+<l:gentext key="Warning" text="ማስጠንቀቂያ"/>
+<l:gentext key="warning" text="ማስጠንቀቂያ"/>
+<l:gentext key="WARNING" text="ማስጠንቀቂያ"/>
+<l:gentext key="and" text="እና"/>
+<l:gentext key="by" text="በ"/>
+<l:gentext key="Edited" text="የተዘጋጀ"/>
+<l:gentext key="edited" text="የተዘጋጀ"/>
+<l:gentext key="Editedby" text="የተዘጋጀዠበ"/>
+<l:gentext key="editedby" text="የተዘጋጀዠበ"/>
+<l:gentext key="in" text="á‹áˆµáŒ¥"/>
+<l:gentext key="lastlistcomma" text="á£"/>
+<l:gentext key="listcomma" text="á£"/>
+<l:gentext key="notes" text="ማስታወሻዎች"/>
+<l:gentext key="Notes" text="ማስታወሻዎች"/>
+<l:gentext key="Pgs" text="ገጾች"/>
+<l:gentext key="pgs" text="ገጾች"/>
+<l:gentext key="Revisedby" text="የተሻሻለዠበ"/>
+<l:gentext key="revisedby" text="የተሻሻለዠበ"/>
+<l:gentext key="TableNotes" text="ማስታወሻዎች"/>
+<l:gentext key="tablenotes" text="ማስታወሻዎች"/>
+<l:gentext key="TableofContents" text="ማá‹áŒ«"/>
+<l:gentext key="tableofcontents" text="ማá‹áŒ«"/>
+<l:gentext key="unexpectedelementname" text="á‹«áˆá‰°áŒ á‰ á‰€ የመሠረታዊ áŠáŒˆáˆ­ ስáˆ"/>
+<l:gentext key="unsupported" text="á‹«áˆá‰°á‹°áŒˆáˆ"/>
+<l:gentext key="xrefto" text="xref ወደ"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="የእኩሌታዎች á‹áˆ­á‹áˆ­"/>
+<l:gentext key="ListofEquations" text="የእኩሌታዎች á‹áˆ­á‹áˆ­"/>
+<l:gentext key="ListofExamples" text="የáˆáˆ³áˆŒá‹Žá‰½ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="listofexamples" text="የáˆáˆ³áˆŒá‹Žá‰½ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="ListofFigures" text="የáˆáˆµáˆŽá‰½ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="listoffigures" text="የáˆáˆµáˆŽá‰½ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="ListofProcedures" text="የቅደሠተከተሎቹ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="listofprocedures" text="የቅደሠተከተሎቹ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="listoftables" text="የሠንጠረዦቹ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="ListofTables" text="የሠንጠረዦቹ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="ListofUnknown" text="á‹«áˆá‰³á‹ˆá‰ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="listofunknown" text="á‹«áˆá‰³á‹ˆá‰ á‹áˆ­á‹áˆ­"/>
+<l:gentext key="nav-home" text="መጀመሪያ"/>
+<l:gentext key="nav-next" text="የሚቀጥለá‹"/>
+<l:gentext key="nav-next-sibling" text="በáጥáŠá‰µ ወደáŠá‰µ"/>
+<l:gentext key="nav-prev" text="ያለáˆá‹"/>
+<l:gentext key="nav-prev-sibling" text="በáጥáŠá‰µ ወደኋላ"/>
+<l:gentext key="nav-up" text="ወደ ላይ"/>
+<l:gentext key="nav-toc" text="ወደ ሲ"/>
+<l:gentext key="Draft" text="ንድá"/>
+<l:gentext key="above" text="ከላይ"/>
+<l:gentext key="below" text="ከስር"/>
+<l:gentext key="sectioncalled" text="የክáሉ መጠሪያ"/>
+<l:gentext key="index symbols" text="áˆáˆáŠ­á‰¶á‰½"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ተጨማሪ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="áˆá‹•áˆ«á %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="እኩሌታ %n. %t"/>
+<l:template name="example" text="ለáˆáˆ³áˆŒÂ %n. %t"/>
+<l:template name="figure" text="áˆáˆµáˆÂ %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ክááˆÂ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ቅደሠተከተáˆÂ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="áˆáˆ­á‰µÂ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ሠንጠረዥ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ተጨማሪ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="áˆá‹•áˆ«á %n. %t"/>
+<l:template name="part" text="ክááˆÂ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="መá¦Â %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ጥá¦Â %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ጥá¦Â %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" በ%o"/>
+<l:template name="olink.page.citation" text=" (ገጽ %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(ገጽ %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" በዶሴዠá‹áˆµáŒ¥ ርዕስ የተሰጠዠ%o"/>
+<l:template name="pageabbrev" text="(ገጽ %p)"/>
+<l:template name="Page" text="ገጽ %p"/>
+<l:template name="bridgehead" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="refsection" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="refsect1" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="refsect2" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="refsect3" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="sect1" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="sect2" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="sect3" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="sect4" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="sect5" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="section" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="simplesect" text="የክáሉ መጠሪያ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="መá¦Â %n"/>
+<l:template name="appendix" text="ተጨማሪ %n"/>
+<l:template name="bridgehead" text="ክááˆÂ %n"/>
+<l:template name="chapter" text="áˆá‹•áˆ«á %n"/>
+<l:template name="equation" text="እኩሌታ %n"/>
+<l:template name="example" text="ለáˆáˆ³áˆŒÂ %n"/>
+<l:template name="figure" text="áˆáˆµáˆÂ %n"/>
+<l:template name="part" text="ክááˆÂ %n"/>
+<l:template name="procedure" text="ቅደሠተከተáˆÂ %n"/>
+<l:template name="productionset" text="áˆáˆ­á‰µÂ %n"/>
+<l:template name="qandadiv" text="ጥያቄ እና መáˆáˆµÂ %n"/>
+<l:template name="qandaentry" text="ጥá¦Â %n"/>
+<l:template name="question" text="ጥá¦Â %n"/>
+<l:template name="sect1" text="ክááˆÂ %n"/>
+<l:template name="sect2" text="ክááˆÂ %n"/>
+<l:template name="sect3" text="ክááˆÂ %n"/>
+<l:template name="sect4" text="ክááˆÂ %n"/>
+<l:template name="sect5" text="ክááˆÂ %n"/>
+<l:template name="section" text="ክááˆÂ %n"/>
+<l:template name="table" text="ሠንጠረዥ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ተጨማሪ %n, %t"/>
+<l:template name="bridgehead" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="chapter" text="áˆá‹•áˆ«á %n, %t"/>
+<l:template name="equation" text="እኩሌታ %n, “%tâ€"/>
+<l:template name="example" text="ለáˆáˆ³áˆŒÂ %n, “%tâ€"/>
+<l:template name="figure" text="áˆáˆµáˆÂ %n, “%tâ€"/>
+<l:template name="part" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="procedure" text="ቅደሠተከተáˆÂ %n, “%tâ€"/>
+<l:template name="productionset" text="áˆáˆ­á‰µÂ %n, “%tâ€"/>
+<l:template name="qandadiv" text="ጥያቄ እና መáˆáˆµÂ %n, “%tâ€"/>
+<l:template name="refsect1" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="refsect2" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="refsect3" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="refsection" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="sect1" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="sect2" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="sect3" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="sect4" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="sect5" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="section" text="ክááˆÂ %n, “%tâ€"/>
+<l:template name="simplesect" text="የክáሉ መጠሪያ “%tâ€"/>
+<l:template name="table" text="ሠንጠረዥ %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="ᣠ"/>
+<l:template name="sep2" text=" እና "/>
+<l:template name="seplast" text="ᣠእና "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ማየት (እይ) %t."/>
+<l:template name="seealso" text="…ንሠእይ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ተመáˆáŠ«á‰½á¦ "/>
+<l:template name="MsgLevel" text="ደረጃᦠ"/>
+<l:template name="MsgOrig" text="áˆáŠ•áŒ­á¦ "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d B Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[ትርጉáˆá¦ "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ጃንዩወሪ"/>
+<l:template name="February" text="áŒá‰¥áˆ©á‹ˆáˆª"/>
+<l:template name="March" text="ማርች"/>
+<l:template name="April" text="ኤá•áˆ¨áˆ"/>
+<l:template name="May" text="ሜይ"/>
+<l:template name="June" text="áŒáŠ•"/>
+<l:template name="July" text="áŒáˆ‹á‹­"/>
+<l:template name="August" text="ኦገስት"/>
+<l:template name="September" text="ሴá•á‰´áˆá‰ áˆ­"/>
+<l:template name="October" text="ኦክተá‹á‰ áˆ­"/>
+<l:template name="November" text="ኖቬáˆá‰ áˆ­"/>
+<l:template name="December" text="ዲሴáˆá‰ áˆ­"/>
+<l:template name="Monday" text="ሰኞ"/>
+<l:template name="Tuesday" text="ማክሰኞ"/>
+<l:template name="Wednesday" text="ረቡዕ"/>
+<l:template name="Thursday" text="áˆáˆ™áˆµ"/>
+<l:template name="Friday" text="ዓርብ"/>
+<l:template name="Saturday" text="ቅዳሜ"/>
+<l:template name="Sunday" text="እሑድ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ጃንዩ"/>
+<l:template name="Feb" text="áŒá‰¥áˆ©"/>
+<l:template name="Mar" text="ማርች"/>
+<l:template name="Apr" text="ኤá•áˆ¨"/>
+<l:template name="May" text="ሜይ "/>
+<l:template name="Jun" text="áŒáŠ• "/>
+<l:template name="Jul" text="áŒáˆ‹á‹­"/>
+<l:template name="Aug" text="ኦገስ"/>
+<l:template name="Sep" text="ሴá•á‰´"/>
+<l:template name="Oct" text="ኦክተ"/>
+<l:template name="Nov" text="ኖቬáˆ"/>
+<l:template name="Dec" text="ዲሴáˆ"/>
+<l:template name="Mon" text="ሰኞ "/>
+<l:template name="Tue" text="ማክሰ"/>
+<l:template name="Wed" text="ረቡዕ"/>
+<l:template name="Thu" text="áˆáˆ™áˆµ"/>
+<l:template name="Fri" text="ዓርብ"/>
+<l:template name="Sat" text="ቅዳሜ"/>
+<l:template name="Sun" text="እሑድ"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">áˆáˆáŠ­á‰¶á‰½</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml
new file mode 100644
index 0000000..ac55456
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ar" english-language-name="Arabic">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ar.xml -->
+<!-- * -->
+<!-- * E-mail the edited ar.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="خلاصة"/>
+<l:gentext key="abstract" text="خلاصة"/>
+<l:gentext key="Acknowledgements" text="عرÙان"/>
+<l:gentext key="acknowledgements" text="عرÙان"/>
+<l:gentext key="Answer" text="ج:"/>
+<l:gentext key="answer" text="ج:"/>
+<l:gentext key="Appendix" text="ملحق"/>
+<l:gentext key="appendix" text="ملحق"/>
+<l:gentext key="Article" text="مقال"/>
+<l:gentext key="article" text="مقال"/>
+<l:gentext key="Author" text="مؤلÙ"/>
+<l:gentext key="Bibliography" text="قائمة المراجع"/>
+<l:gentext key="bibliography" text="قائمة المراجع"/>
+<l:gentext key="Book" text="كتاب"/>
+<l:gentext key="book" text="كتاب"/>
+<l:gentext key="CAUTION" text="تحذير"/>
+<l:gentext key="Caution" text="تحذير"/>
+<l:gentext key="caution" text="تحذير"/>
+<l:gentext key="Chapter" text="Ùصل"/>
+<l:gentext key="chapter" text="Ùصل"/>
+<l:gentext key="Colophon" text="الناشر"/>
+<l:gentext key="colophon" text="الناشر"/>
+<l:gentext key="Copyright" text="حقوق النشر"/>
+<l:gentext key="copyright" text="حقوق النشر"/>
+<l:gentext key="Dedication" text="إهداء"/>
+<l:gentext key="dedication" text="إهداء"/>
+<l:gentext key="Edition" text="نسخة"/>
+<l:gentext key="edition" text="نسخة"/>
+<l:gentext key="Editor" text="محرر"/>
+<l:gentext key="Equation" text="معادلة"/>
+<l:gentext key="equation" text="معادلة"/>
+<l:gentext key="Example" text="مثال"/>
+<l:gentext key="example" text="مثال"/>
+<l:gentext key="Figure" text="شكل"/>
+<l:gentext key="figure" text="شكل"/>
+<l:gentext key="Glossary" text="قاموس المÙردات"/>
+<l:gentext key="glossary" text="قاموس المÙردات"/>
+<l:gentext key="GlossSee" text="انظر"/>
+<l:gentext key="glosssee" text="انظر"/>
+<l:gentext key="GlossSeeAlso" text="انظر أيضاً"/>
+<l:gentext key="glossseealso" text="انظر أيضاً"/>
+<l:gentext key="IMPORTANT" text="هام"/>
+<l:gentext key="important" text="هام"/>
+<l:gentext key="Important" text="هام"/>
+<l:gentext key="Index" text="Ùهرس"/>
+<l:gentext key="index" text="Ùهرس"/>
+<l:gentext key="ISBN" text="الترقيم العالمي القياسي للكتاب"/>
+<l:gentext key="isbn" text="الترقيم العالمي القياسي للكتاب"/>
+<l:gentext key="LegalNotice" text="ملاحظة قانونية"/>
+<l:gentext key="legalnotice" text="ملاحظة قانونية"/>
+<l:gentext key="MsgAud" text="الجمهور"/>
+<l:gentext key="msgaud" text="الجمهور"/>
+<l:gentext key="MsgLevel" text="المستوى"/>
+<l:gentext key="msglevel" text="المستوى"/>
+<l:gentext key="MsgOrig" text="المصدر"/>
+<l:gentext key="msgorig" text="المصدر"/>
+<l:gentext key="NOTE" text="ملاحظة"/>
+<l:gentext key="Note" text="ملاحظة"/>
+<l:gentext key="note" text="ملاحظة"/>
+<l:gentext key="Part" text="جزء"/>
+<l:gentext key="part" text="جزء"/>
+<l:gentext key="Preface" text="مقدمة"/>
+<l:gentext key="preface" text="مقدمة"/>
+<l:gentext key="Procedure" text="إجراء"/>
+<l:gentext key="procedure" text="إجراء"/>
+<l:gentext key="ProductionSet" text="منتج"/>
+<l:gentext key="PubDate" text="تاريخ النشر"/>
+<l:gentext key="pubdate" text="تاريخ النشر"/>
+<l:gentext key="Published" text="منشور"/>
+<l:gentext key="published" text="منشور"/>
+<l:gentext key="Publisher" text="الناشر"/>
+<l:gentext key="Qandadiv" text="س و ج"/>
+<l:gentext key="qandadiv" text="س و ج"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="س:"/>
+<l:gentext key="question" text="س:"/>
+<l:gentext key="RefEntry" text="صÙحة"/>
+<l:gentext key="refentry" text="صÙحة"/>
+<l:gentext key="Reference" text="مرجع"/>
+<l:gentext key="reference" text="مرجع"/>
+<l:gentext key="References" text="مراجع"/>
+<l:gentext key="RefName" text="الاسم"/>
+<l:gentext key="refname" text="الاسم"/>
+<l:gentext key="RefSection" text="قسم"/>
+<l:gentext key="refsection" text="قسم"/>
+<l:gentext key="RefSynopsisDiv" text="المختصر"/>
+<l:gentext key="refsynopsisdiv" text="المختصر"/>
+<l:gentext key="RevHistory" text="تاريخ المراجعة"/>
+<l:gentext key="revhistory" text="تاريخ المراجعة"/>
+<l:gentext key="revision" text="مراجعة"/>
+<l:gentext key="Revision" text="مراجعة"/>
+<l:gentext key="sect1" text="قسم"/>
+<l:gentext key="sect2" text="قسم"/>
+<l:gentext key="sect3" text="قسم"/>
+<l:gentext key="sect4" text="قسم"/>
+<l:gentext key="sect5" text="قسم"/>
+<l:gentext key="section" text="قسم"/>
+<l:gentext key="Section" text="قسم"/>
+<l:gentext key="see" text="استعرض"/>
+<l:gentext key="See" text="استعرض"/>
+<l:gentext key="seealso" text="استعرض أيضاً"/>
+<l:gentext key="Seealso" text="استعرض أيضاً"/>
+<l:gentext key="SeeAlso" text="استعرض أيضاً"/>
+<l:gentext key="set" text="مجموعة"/>
+<l:gentext key="Set" text="مجموعة"/>
+<l:gentext key="setindex" text="Ùهرس المجموعة"/>
+<l:gentext key="SetIndex" text="Ùهرس المجموعة"/>
+<l:gentext key="Sidebar" text="الشريط الجانبي"/>
+<l:gentext key="sidebar" text="الشريط الجانبي"/>
+<l:gentext key="step" text="خطوة"/>
+<l:gentext key="Step" text="خطوة"/>
+<l:gentext key="table" text="جدول"/>
+<l:gentext key="Table" text="جدول"/>
+<l:gentext key="task" text="مَهمة"/>
+<l:gentext key="Task" text="مَهمة"/>
+<l:gentext key="tip" text="Ùكرة Ù…Ùيدة"/>
+<l:gentext key="TIP" text="Ùكرة Ù…Ùيدة"/>
+<l:gentext key="Tip" text="Ùكرة Ù…Ùيدة"/>
+<l:gentext key="Warning" text="تنبيه"/>
+<l:gentext key="warning" text="تنبيه"/>
+<l:gentext key="WARNING" text="تنبيه"/>
+<l:gentext key="and" text="Ùˆ"/>
+<l:gentext key="by" text="بواسطة"/>
+<l:gentext key="Edited" text="معدل"/>
+<l:gentext key="edited" text="معدل"/>
+<l:gentext key="Editedby" text="معدل بواسطة"/>
+<l:gentext key="editedby" text="معدل بواسطة"/>
+<l:gentext key="in" text="ÙÙŠ"/>
+<l:gentext key="lastlistcomma" text="،"/>
+<l:gentext key="listcomma" text="،"/>
+<l:gentext key="notes" text="ملاحظات"/>
+<l:gentext key="Notes" text="ملاحظات"/>
+<l:gentext key="Pgs" text="صÙحات"/>
+<l:gentext key="pgs" text="صÙحات"/>
+<l:gentext key="Revisedby" text="تمت المراجعة بواسطة: "/>
+<l:gentext key="revisedby" text="تمت المراجعة بواسطة: "/>
+<l:gentext key="TableNotes" text="ملاحظات"/>
+<l:gentext key="tablenotes" text="ملاحظات"/>
+<l:gentext key="TableofContents" text="قائمة المحتويات"/>
+<l:gentext key="tableofcontents" text="قائمة المحتويات"/>
+<l:gentext key="unexpectedelementname" text="اسم عنصر غير متوقع"/>
+<l:gentext key="unsupported" text="غير مدعوم"/>
+<l:gentext key="xrefto" text="إشارة إلى"/>
+<l:gentext key="Authors" text="مؤلÙون"/>
+<l:gentext key="copyeditor" text="محرر النسخة"/>
+<l:gentext key="graphicdesigner" text="مصمم جراÙيكي"/>
+<l:gentext key="productioneditor" text="محرر إنتاج"/>
+<l:gentext key="technicaleditor" text="محرر Ùني"/>
+<l:gentext key="translator" text="مترجم"/>
+<l:gentext key="listofequations" text="قائمة المعادلات"/>
+<l:gentext key="ListofEquations" text="قائمة المعادلات"/>
+<l:gentext key="ListofExamples" text="قائمة الأمثلة"/>
+<l:gentext key="listofexamples" text="قائمة الأمثلة"/>
+<l:gentext key="ListofFigures" text="قائمة الأشكال"/>
+<l:gentext key="listoffigures" text="قائمة الأشكال"/>
+<l:gentext key="ListofProcedures" text="قائمة الإجراءات"/>
+<l:gentext key="listofprocedures" text="قائمة الإجراءات"/>
+<l:gentext key="listoftables" text="قائمة الجداول"/>
+<l:gentext key="ListofTables" text="قائمة الجداول"/>
+<l:gentext key="ListofUnknown" text="قائمة المجهولات"/>
+<l:gentext key="listofunknown" text="قائمة المجهولات"/>
+<l:gentext key="nav-home" text="البداية"/>
+<l:gentext key="nav-next" text="التالي"/>
+<l:gentext key="nav-next-sibling" text="إلى الأمام"/>
+<l:gentext key="nav-prev" text="السابق"/>
+<l:gentext key="nav-prev-sibling" text="إلى الخلÙ"/>
+<l:gentext key="nav-up" text="أعلى"/>
+<l:gentext key="nav-toc" text="الÙهرس"/>
+<l:gentext key="Draft" text="مسودة"/>
+<l:gentext key="above" text="أعلى"/>
+<l:gentext key="below" text="Ùيما يلي"/>
+<l:gentext key="sectioncalled" text="القسم المسمى"/>
+<l:gentext key="index symbols" text="الرموز"/>
+<l:gentext key="writing-mode" text="rl-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="â€"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ملحق %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Ùصل %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="معادلة %n. %t"/>
+<l:template name="example" text="مثال %n. %t"/>
+<l:template name="figure" text="شكل %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="جزء %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="إجراء %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="منتج %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="جدول %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ملحق %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Ùصل %n. %t"/>
+<l:template name="part" text="جزء %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="ج: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="س: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="س: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="القسم المسمى “%tâ€"/>
+<l:template name="refsection" text="القسم المسمى “%tâ€"/>
+<l:template name="refsect1" text="القسم المسمى “%tâ€"/>
+<l:template name="refsect2" text="القسم المسمى “%tâ€"/>
+<l:template name="refsect3" text="القسم المسمى “%tâ€"/>
+<l:template name="sect1" text="القسم المسمى “%tâ€"/>
+<l:template name="sect2" text="القسم المسمى “%tâ€"/>
+<l:template name="sect3" text="القسم المسمى “%tâ€"/>
+<l:template name="sect4" text="القسم المسمى “%tâ€"/>
+<l:template name="sect5" text="القسم المسمى “%tâ€"/>
+<l:template name="section" text="القسم المسمى “%tâ€"/>
+<l:template name="simplesect" text="القسم المسمى “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ج: %n"/>
+<l:template name="appendix" text="ملحق %n"/>
+<l:template name="bridgehead" text="قسم %n"/>
+<l:template name="chapter" text="Ùصل %n"/>
+<l:template name="equation" text="معادلة %n"/>
+<l:template name="example" text="مثال %n"/>
+<l:template name="figure" text="شكل %n"/>
+<l:template name="part" text="جزء %n"/>
+<l:template name="procedure" text="إجراء %n"/>
+<l:template name="productionset" text="منتج %n"/>
+<l:template name="qandadiv" text="س و ج %n"/>
+<l:template name="qandaentry" text="س: %n"/>
+<l:template name="question" text="س: %n"/>
+<l:template name="sect1" text="قسم %n"/>
+<l:template name="sect2" text="قسم %n"/>
+<l:template name="sect3" text="قسم %n"/>
+<l:template name="sect4" text="قسم %n"/>
+<l:template name="sect5" text="قسم %n"/>
+<l:template name="section" text="قسم %n"/>
+<l:template name="table" text="جدول %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ملحق %n, %t"/>
+<l:template name="bridgehead" text="قسم %n, “%tâ€"/>
+<l:template name="chapter" text="Ùصل %n, %t"/>
+<l:template name="equation" text="معادلة %n, “%tâ€"/>
+<l:template name="example" text="مثال %n, “%tâ€"/>
+<l:template name="figure" text="شكل %n, “%tâ€"/>
+<l:template name="part" text="جزء %n, “%tâ€"/>
+<l:template name="procedure" text="إجراء %n, “%tâ€"/>
+<l:template name="productionset" text="منتج %n, “%tâ€"/>
+<l:template name="qandadiv" text="س Ùˆ ج %n, “%tâ€"/>
+<l:template name="refsect1" text="القسم المسمى “%tâ€"/>
+<l:template name="refsect2" text="القسم المسمى “%tâ€"/>
+<l:template name="refsect3" text="القسم المسمى “%tâ€"/>
+<l:template name="refsection" text="القسم المسمى “%tâ€"/>
+<l:template name="sect1" text="قسم %n, “%tâ€"/>
+<l:template name="sect2" text="قسم %n, “%tâ€"/>
+<l:template name="sect3" text="قسم %n, “%tâ€"/>
+<l:template name="sect4" text="قسم %n, “%tâ€"/>
+<l:template name="sect5" text="قسم %n, “%tâ€"/>
+<l:template name="section" text="قسم %n, “%tâ€"/>
+<l:template name="simplesect" text="القسم المسمى “%tâ€"/>
+<l:template name="table" text="جدول %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="، "/>
+<l:template name="sep2" text=" Ùˆ "/>
+<l:template name="seplast" text="، و "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="انظر %t."/>
+<l:template name="seealso" text="انظر أيضاً %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="الجمهور: "/>
+<l:template name="MsgLevel" text="المستوى: "/>
+<l:template name="MsgOrig" text="المصدر: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="يناير"/>
+<l:template name="February" text="Ùبراير"/>
+<l:template name="March" text="مارس"/>
+<l:template name="April" text="أبريل"/>
+<l:template name="May" text="مايو"/>
+<l:template name="June" text="يونيو"/>
+<l:template name="July" text="يوليو"/>
+<l:template name="August" text="أغسطس"/>
+<l:template name="September" text="سبتمبر"/>
+<l:template name="October" text="أكتوبر"/>
+<l:template name="November" text="نوÙمبر"/>
+<l:template name="December" text="ديسمبر"/>
+<l:template name="Monday" text="الإثنين"/>
+<l:template name="Tuesday" text="الثلاثاء"/>
+<l:template name="Wednesday" text="الأربعاء"/>
+<l:template name="Thursday" text="الخميس"/>
+<l:template name="Friday" text="الجمعة"/>
+<l:template name="Saturday" text="السبت"/>
+<l:template name="Sunday" text="الأحد"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="يناير"/>
+<l:template name="Feb" text="Ùبراير"/>
+<l:template name="Mar" text="مارس"/>
+<l:template name="Apr" text="أبريل"/>
+<l:template name="May" text="مايو"/>
+<l:template name="Jun" text="يونيو"/>
+<l:template name="Jul" text="يوليو"/>
+<l:template name="Aug" text="أغسطس"/>
+<l:template name="Sep" text="سبتمبر"/>
+<l:template name="Oct" text="أكتوبر"/>
+<l:template name="Nov" text="نوÙمبر"/>
+<l:template name="Dec" text="ديسمبر"/>
+<l:template name="Mon" text="الإثنين"/>
+<l:template name="Tue" text="الثلاثاء"/>
+<l:template name="Wed" text="الأربعاء"/>
+<l:template name="Thu" text="الخميس"/>
+<l:template name="Fri" text="الجمعة"/>
+<l:template name="Sat" text="السبت"/>
+<l:template name="Sun" text="الأحد"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)" lang="en"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml
new file mode 100644
index 0000000..28d0b10
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="as" english-language-name="Assamese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/as.xml -->
+<!-- * -->
+<!-- * E-mail the edited as.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="সাৰাংশ"/>
+<l:gentext key="abstract" text="সাৰাংশ"/>
+<l:gentext key="Acknowledgements" text="সà§à¦¬à§€à¦•à§ƒà¦¤à¦¿"/>
+<l:gentext key="acknowledgements" text="সà§à¦¬à§€à¦•à§ƒà¦¤à¦¿"/>
+<l:gentext key="Answer" text="উ:"/>
+<l:gentext key="answer" text="উ:"/>
+<l:gentext key="Appendix" text="পৰিশিষà§à¦Ÿ"/>
+<l:gentext key="appendix" text="পৰিশিষà§à¦Ÿ"/>
+<l:gentext key="Article" text="পà§à§°à¦¬à¦¨à§à¦§"/>
+<l:gentext key="article" text="পà§à§°à¦¬à¦¨à§à¦§"/>
+<l:gentext key="Author" text="লিখক"/>
+<l:gentext key="Bibliography" text="গà§à§°à¦¨à§à¦¥à¦¸à§‚চী"/>
+<l:gentext key="bibliography" text="গà§à§°à¦¨à§à¦¥à¦¸à§‚চী"/>
+<l:gentext key="Book" text="কিতাপ"/>
+<l:gentext key="book" text="কিতাপ"/>
+<l:gentext key="CAUTION" text="সাৱধান"/>
+<l:gentext key="Caution" text="সাৱধান"/>
+<l:gentext key="caution" text="সাৱধান"/>
+<l:gentext key="Chapter" text="অধà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="chapter" text="অধà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="Colophon" text="গà§à§°à¦¨à§à¦¥à¦ªà§°à¦¿à¦šà§Ÿ"/>
+<l:gentext key="colophon" text="গà§à§°à¦¨à§à¦¥à¦ªà§°à¦¿à¦šà§Ÿ"/>
+<l:gentext key="Copyright" text="সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à§°"/>
+<l:gentext key="copyright" text="সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à§°"/>
+<l:gentext key="Dedication" text="উসৰà§à¦—া"/>
+<l:gentext key="dedication" text="উসৰà§à¦—া"/>
+<l:gentext key="Edition" text="সংসà§à¦•à§°à¦£"/>
+<l:gentext key="edition" text="সংসà§à¦•à§°à¦£"/>
+<l:gentext key="Editor" text="সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="Equation" text="সমীকৰণ"/>
+<l:gentext key="equation" text="সমীকৰণ"/>
+<l:gentext key="Example" text="উদাহৰণ"/>
+<l:gentext key="example" text="উদাহৰণ"/>
+<l:gentext key="Figure" text="ছবি"/>
+<l:gentext key="figure" text="ছবি"/>
+<l:gentext key="Glossary" text="শবà§à¦¦à¦•à§‹à¦·"/>
+<l:gentext key="glossary" text="শবà§à¦¦à¦•à§‹à¦·"/>
+<l:gentext key="GlossSee" text="চাওক"/>
+<l:gentext key="glosssee" text="চাওক"/>
+<l:gentext key="GlossSeeAlso" text="ইয়াকো চাওক"/>
+<l:gentext key="glossseealso" text="ইয়াকো চাওক"/>
+<l:gentext key="IMPORTANT" text="গà§à§°à§à¦¤à§à¦¬à¦ªà§‚ৰà§à¦£"/>
+<l:gentext key="important" text="গà§à§°à§à¦¤à§à¦¬à¦ªà§‚ৰà§à¦£"/>
+<l:gentext key="Important" text="গà§à§°à§à¦¤à§à¦¬à¦ªà§‚ৰà§à¦£"/>
+<l:gentext key="Index" text="সূচী"/>
+<l:gentext key="index" text="সূচী"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="আইনসনà§à¦®à¦¤ ঘোষণা"/>
+<l:gentext key="legalnotice" text="আইনসনà§à¦®à¦¤ ঘোষণা"/>
+<l:gentext key="MsgAud" text="শà§à§°à§‹à¦¤à¦¾"/>
+<l:gentext key="msgaud" text="শà§à§°à§‹à¦¤à¦¾"/>
+<l:gentext key="MsgLevel" text="সà§à¦¤à§°"/>
+<l:gentext key="msglevel" text="সà§à¦¤à§°"/>
+<l:gentext key="MsgOrig" text="উৎস"/>
+<l:gentext key="msgorig" text="উৎস"/>
+<l:gentext key="NOTE" text="টোকা"/>
+<l:gentext key="Note" text="টোকা"/>
+<l:gentext key="note" text="টোকা"/>
+<l:gentext key="Part" text="অংশ"/>
+<l:gentext key="part" text="অংশ"/>
+<l:gentext key="Preface" text="পাতনি"/>
+<l:gentext key="preface" text="পাতনি"/>
+<l:gentext key="Procedure" text="পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾"/>
+<l:gentext key="procedure" text="পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾"/>
+<l:gentext key="ProductionSet" text="উৎপাদন"/>
+<l:gentext key="PubDate" text="পà§à§°à¦•à¦¾à¦¶à¦¨à§° দিন"/>
+<l:gentext key="pubdate" text="পà§à§°à¦•à¦¾à¦¶à¦¨à§° দিন"/>
+<l:gentext key="Published" text="পà§à§°à¦•à¦¾à¦¶à¦¿à¦¤"/>
+<l:gentext key="published" text="পà§à§°à¦•à¦¾à¦¶à¦¿à¦¤"/>
+<l:gentext key="Publisher" text="পà§à§°à¦•à¦¾à¦¶à¦•"/>
+<l:gentext key="Qandadiv" text="পà§à§°à¦¶à§à¦¨ &amp; উতà§à¦¤à§°"/>
+<l:gentext key="qandadiv" text="পà§à§°à¦¶à§à¦¨ &amp; উতà§à¦¤à§°"/>
+<l:gentext key="QandASet" text="সঘনাই কৰা পà§à§°à¦¶à§à¦¨"/>
+<l:gentext key="Question" text="পà§à§°:"/>
+<l:gentext key="question" text="পà§à§°:"/>
+<l:gentext key="RefEntry" text="পৃষà§à¦ à¦¾"/>
+<l:gentext key="refentry" text="পৃষà§à¦ à¦¾"/>
+<l:gentext key="Reference" text="পà§à§°à¦¸à¦™à§à¦—"/>
+<l:gentext key="reference" text="পà§à§°à¦¸à¦™à§à¦—"/>
+<l:gentext key="References" text="পà§à§°à¦¸à¦™à§à¦—বোৰ"/>
+<l:gentext key="RefName" text="নাম"/>
+<l:gentext key="refname" text="নাম"/>
+<l:gentext key="RefSection" text="বিভাগ"/>
+<l:gentext key="refsection" text="বিভাগ"/>
+<l:gentext key="RefSynopsisDiv" text="সাৰাংশ"/>
+<l:gentext key="refsynopsisdiv" text="সাৰাংশ"/>
+<l:gentext key="RevHistory" text="পà§à¦¨à§°à§€à¦•à§à¦·à¦£à§° ইতিহাস"/>
+<l:gentext key="revhistory" text="পà§à¦¨à§°à§€à¦•à§à¦·à¦£à§° ইতিহাস"/>
+<l:gentext key="revision" text="পà§à¦¨à§°à§€à¦•à§à¦·à¦£"/>
+<l:gentext key="Revision" text="পà§à¦¨à§°à§€à¦•à§à¦·à¦£"/>
+<l:gentext key="sect1" text="বিভাগ"/>
+<l:gentext key="sect2" text="বিভাগ"/>
+<l:gentext key="sect3" text="বিভাগ"/>
+<l:gentext key="sect4" text="বিভাগ"/>
+<l:gentext key="sect5" text="বিভাগ"/>
+<l:gentext key="section" text="বিভাগ"/>
+<l:gentext key="Section" text="বিভাগ"/>
+<l:gentext key="see" text="চাওক"/>
+<l:gentext key="See" text="চাওক"/>
+<l:gentext key="seealso" text="ইয়াকো চাওক"/>
+<l:gentext key="Seealso" text="ইয়াকো চাওক"/>
+<l:gentext key="SeeAlso" text="ইয়াকো চাওক"/>
+<l:gentext key="set" text="গোট"/>
+<l:gentext key="Set" text="গোট"/>
+<l:gentext key="setindex" text="সূচী পà§à§°à¦¤à¦¿à¦·à§à¦ à¦¾ কৰক"/>
+<l:gentext key="SetIndex" text="সূচী পà§à§°à¦¤à¦¿à¦·à§à¦ à¦¾ কৰক"/>
+<l:gentext key="Sidebar" text="চাইডবাৰ"/>
+<l:gentext key="sidebar" text="চাইডবাৰ"/>
+<l:gentext key="step" text="পৰà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="Step" text="পৰà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="table" text="তালিকা"/>
+<l:gentext key="Table" text="তালিকা"/>
+<l:gentext key="task" text="কাৰà§à¦¯à§à¦¯"/>
+<l:gentext key="Task" text="কাৰà§à¦¯à§à¦¯"/>
+<l:gentext key="tip" text="সঙà§à¦•à§‡à¦¤"/>
+<l:gentext key="TIP" text="সঙà§à¦•à§‡à¦¤"/>
+<l:gentext key="Tip" text="সঙà§à¦•à§‡à¦¤"/>
+<l:gentext key="Warning" text="সকিয়নি"/>
+<l:gentext key="warning" text="সকিয়নি"/>
+<l:gentext key="WARNING" text="সকিয়নি"/>
+<l:gentext key="and" text="আৰà§"/>
+<l:gentext key="by" text="-ৰ দà§à¦¬à¦¾à§°à¦¾"/>
+<l:gentext key="Edited" text="সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="edited" text="সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="Editedby" text="-ৰ দà§à¦¬à¦¾à§°à¦¾ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="editedby" text="-ৰ দà§à¦¬à¦¾à§°à¦¾ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="in" text="-ত"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="টোকা"/>
+<l:gentext key="Notes" text="টোকা"/>
+<l:gentext key="Pgs" text="পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ"/>
+<l:gentext key="pgs" text="পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ"/>
+<l:gentext key="Revisedby" text="পà§à¦¨à§°à§€à¦•à§à¦·à¦£à¦•à§°à§à¦¤à¦¾:"/>
+<l:gentext key="revisedby" text="পà§à¦¨à§°à§€à¦•à§à¦·à¦£à¦•à§°à§à¦¤à¦¾:"/>
+<l:gentext key="TableNotes" text="টোকা"/>
+<l:gentext key="tablenotes" text="টোকা"/>
+<l:gentext key="TableofContents" text="বিষয় সূচী"/>
+<l:gentext key="tableofcontents" text="বিষয় সূচী"/>
+<l:gentext key="unexpectedelementname" text="অপà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ পদাৰà§à¦¥à§° নাম"/>
+<l:gentext key="unsupported" text="অসমৰà§à¦¥à¦¿à¦¤"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="লিখকসমূহ"/>
+<l:gentext key="copyeditor" text="নকলৰ সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="graphicdesigner" text="আলেখীৰ পৰিকলà§à¦ªà¦¨à¦¾à¦•à§°à§à¦¤à¦¾"/>
+<l:gentext key="productioneditor" text="উৎপাদন সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="technicaleditor" text="কাৰিকৰী সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="translator" text="অনà§à¦¬à¦¾à¦¦à¦•"/>
+<l:gentext key="listofequations" text="সমীকৰণৰ তালিকা"/>
+<l:gentext key="ListofEquations" text="সমীকৰণৰ তালিকা"/>
+<l:gentext key="ListofExamples" text="উদাহৰণৰ তালিকা"/>
+<l:gentext key="listofexamples" text="উদাহৰণৰ তালিকা"/>
+<l:gentext key="ListofFigures" text="ছবিৰ তালিকা"/>
+<l:gentext key="listoffigures" text="ছবিৰ তালিকা"/>
+<l:gentext key="ListofProcedures" text="পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾à§° তালিকা"/>
+<l:gentext key="listofprocedures" text="পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾à§° তালিকা"/>
+<l:gentext key="listoftables" text="টেবà§à¦²à§° তালিকা"/>
+<l:gentext key="ListofTables" text="টেবà§à¦²à§° তালিকা"/>
+<l:gentext key="ListofUnknown" text="অজà§à¦žà¦¾à¦¤à§° তালিকা"/>
+<l:gentext key="listofunknown" text="অজà§à¦žà¦¾à¦¤à§° তালিকা"/>
+<l:gentext key="nav-home" text="আৰমà§à¦­"/>
+<l:gentext key="nav-next" text="পিছলৈ"/>
+<l:gentext key="nav-next-sibling" text="দà§à§°à§à¦¤à¦—তিৰে আগবাà§à¦•"/>
+<l:gentext key="nav-prev" text="আগৰ"/>
+<l:gentext key="nav-prev-sibling" text="দà§à§°à§à¦¤à¦—তিৰে পিছলৈ যাওক"/>
+<l:gentext key="nav-up" text="ওপৰলৈ"/>
+<l:gentext key="nav-toc" text="বিষয়বসà§à¦¤à§à§° তালিকা"/>
+<l:gentext key="Draft" text="ৰূপৰেখা"/>
+<l:gentext key="above" text="ওপৰত"/>
+<l:gentext key="below" text="তলত"/>
+<l:gentext key="sectioncalled" text="মাতি অনা বিভাগ"/>
+<l:gentext key="index symbols" text="চিহà§à¦¨"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="পৰিশিষà§à¦ŸÂ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="সমীকৰণ %n. %t"/>
+<l:template name="example" text="উদাহৰণ %n. %t"/>
+<l:template name="figure" text="ছবি %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="অংশ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="উৎপাদন %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="তালিকা %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="পৰিশিষà§à¦ŸÂ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n. %t"/>
+<l:template name="part" text="অংশ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="উ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="পà§à§°: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="পà§à§°: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="refsection" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="refsect1" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="refsect2" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="refsect3" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="sect1" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="sect2" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="sect3" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="sect4" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="sect5" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="section" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="simplesect" text="মাতি অনা বিভাগ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="উ: %n"/>
+<l:template name="appendix" text="পৰিশিষà§à¦ŸÂ %n"/>
+<l:template name="bridgehead" text="বিভাগ %n"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n"/>
+<l:template name="equation" text="সমীকৰণ %n"/>
+<l:template name="example" text="উদাহৰণ %n"/>
+<l:template name="figure" text="ছবি %n"/>
+<l:template name="part" text="অংশ %n"/>
+<l:template name="procedure" text="পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾Â %n"/>
+<l:template name="productionset" text="উৎপাদন %n"/>
+<l:template name="qandadiv" text="পà§à§°à¦¶à§à¦¨ &amp; উতà§à¦¤à§°Â %n"/>
+<l:template name="qandaentry" text="পà§à§°: %n"/>
+<l:template name="question" text="পà§à§°: %n"/>
+<l:template name="sect1" text="বিভাগ %n"/>
+<l:template name="sect2" text="বিভাগ %n"/>
+<l:template name="sect3" text="বিভাগ %n"/>
+<l:template name="sect4" text="বিভাগ %n"/>
+<l:template name="sect5" text="বিভাগ %n"/>
+<l:template name="section" text="বিভাগ %n"/>
+<l:template name="table" text="তালিকা %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="পৰিশিষà§à¦ŸÂ %n, %t"/>
+<l:template name="bridgehead" text="বিভাগ %n, “%tâ€"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n, %t"/>
+<l:template name="equation" text="সমীকৰণ %n, “%tâ€"/>
+<l:template name="example" text="উদাহৰণ %n, “%tâ€"/>
+<l:template name="figure" text="ছবি %n, “%tâ€"/>
+<l:template name="part" text="অংশ %n, “%tâ€"/>
+<l:template name="procedure" text="পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾Â %n, “%tâ€"/>
+<l:template name="productionset" text="উৎপাদন %n, “%tâ€"/>
+<l:template name="qandadiv" text="পà§à§°à¦¶à§à¦¨ &amp; উতà§à¦¤à§°Â %n, “%tâ€"/>
+<l:template name="refsect1" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="refsect2" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="refsect3" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="refsection" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="sect1" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect2" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect3" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect4" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect5" text="বিভাগ %n, “%tâ€"/>
+<l:template name="section" text="বিভাগ %n, “%tâ€"/>
+<l:template name="simplesect" text="মাতি অনা বিভাগ “%tâ€"/>
+<l:template name="table" text="তালিকা %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" আৰৠ"/>
+<l:template name="seplast" text=", আৰৠ"/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="চাওক %t."/>
+<l:template name="seealso" text="ইয়াকো চাওক %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="শà§à§°à§‹à¦¤à¦¾: "/>
+<l:template name="MsgLevel" text="সà§à¦¤à§°: "/>
+<l:template name="MsgOrig" text="উৎস: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="জানà§à§±à¦¾à§°à§€"/>
+<l:template name="February" text="ফেবà§à§°à§à§±à¦¾à§°à§€"/>
+<l:template name="March" text="মাৰà§à¦š"/>
+<l:template name="April" text="à¦à¦ªà§à§°à¦¿à¦²"/>
+<l:template name="May" text="মে'"/>
+<l:template name="June" text="জà§à¦¨"/>
+<l:template name="July" text="জà§à¦²à¦¾à¦‡"/>
+<l:template name="August" text="আগষà§à¦Ÿ"/>
+<l:template name="September" text="চেপà§à¦Ÿà§‡à¦®à§à¦¬à§°"/>
+<l:template name="October" text="অকà§à¦Ÿà§‹à¦¬à§°"/>
+<l:template name="November" text="নৱেমà§à¦¬à§°"/>
+<l:template name="December" text="ডিচেমà§à¦¬à§°"/>
+<l:template name="Monday" text="সোমবাৰ"/>
+<l:template name="Tuesday" text="মঙà§à¦—লবাৰ"/>
+<l:template name="Wednesday" text="বà§à¦§à¦¬à¦¾à§°"/>
+<l:template name="Thursday" text="বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à§°"/>
+<l:template name="Friday" text="শà§à¦•à§à§°à¦¬à¦¾à§°"/>
+<l:template name="Saturday" text="শনিবাৰ"/>
+<l:template name="Sunday" text="দেওবাৰ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="জানà§à§±à¦¾à§°à§€"/>
+<l:template name="Feb" text="ফেবà§à§°à§à§±à¦¾à§°à§€"/>
+<l:template name="Mar" text="মাৰà§à¦š"/>
+<l:template name="Apr" text="à¦à¦ªà§à§°à¦¿à¦²"/>
+<l:template name="May" text="মে'"/>
+<l:template name="Jun" text="জà§à¦¨"/>
+<l:template name="Jul" text="জà§à¦²à¦¾à¦‡"/>
+<l:template name="Aug" text="আগষà§à¦Ÿ"/>
+<l:template name="Sep" text="চেপà§à¦Ÿà§‡à¦®à§à¦¬à§°"/>
+<l:template name="Oct" text="অকà§à¦Ÿà§‹à¦¬à§°"/>
+<l:template name="Nov" text="নৱেমà§à¦¬à§°"/>
+<l:template name="Dec" text="ডিচেমà§à¦¬à§°"/>
+<l:template name="Mon" text="সোম"/>
+<l:template name="Tue" text="মঙà§à¦—ল"/>
+<l:template name="Wed" text="বà§à¦§"/>
+<l:template name="Thu" text="বৃহসà§à¦ªà¦¤à¦¿"/>
+<l:template name="Fri" text="শà§à¦•à§à§°"/>
+<l:template name="Sat" text="শনি"/>
+<l:template name="Sun" text="দেও"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x044d Assamese"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">চিহà§à¦¨</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml
new file mode 100644
index 0000000..26a8e18
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ast" english-language-name="Asturian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ast.xml -->
+<!-- * -->
+<!-- * E-mail the edited ast.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrautu"/>
+<l:gentext key="abstract" text="abstrautu"/>
+<l:gentext key="Acknowledgements" text="Gracies fonderes"/>
+<l:gentext key="acknowledgements" text="gracies fonderes"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="r:"/>
+<l:gentext key="Appendix" text="Apéndiz"/>
+<l:gentext key="appendix" text="apéndiz"/>
+<l:gentext key="Article" text="Artículu"/>
+<l:gentext key="article" text="artículu"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografía"/>
+<l:gentext key="bibliography" text="bibliografía"/>
+<l:gentext key="Book" text="Llibru"/>
+<l:gentext key="book" text="llibru"/>
+<l:gentext key="CAUTION" text="PRECAUCIÓN"/>
+<l:gentext key="Caution" text="Precaución"/>
+<l:gentext key="caution" text="precaución"/>
+<l:gentext key="Chapter" text="Capítulu"/>
+<l:gentext key="chapter" text="capítulu"/>
+<l:gentext key="Colophon" text="Colofón"/>
+<l:gentext key="colophon" text="colofón"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Dedicáu"/>
+<l:gentext key="dedication" text="dedicáu"/>
+<l:gentext key="Edition" text="Edición"/>
+<l:gentext key="edition" text="edición"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Ecuación"/>
+<l:gentext key="equation" text="ecuación"/>
+<l:gentext key="Example" text="Exemplu"/>
+<l:gentext key="example" text="exemplu"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="figura"/>
+<l:gentext key="Glossary" text="Glosariu"/>
+<l:gentext key="glossary" text="glosariu"/>
+<l:gentext key="GlossSee" text="Ver"/>
+<l:gentext key="glosssee" text="ver"/>
+<l:gentext key="GlossSeeAlso" text="Ver Tamién"/>
+<l:gentext key="glossseealso" text="ver tamién"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="Importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Ãndiz"/>
+<l:gentext key="index" text="índiz"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Noticia Llegal"/>
+<l:gentext key="legalnotice" text="noticia llegal"/>
+<l:gentext key="MsgAud" text="Audiencia"/>
+<l:gentext key="msgaud" text="Audiencia"/>
+<l:gentext key="MsgLevel" text="Nivel"/>
+<l:gentext key="msglevel" text="nivel"/>
+<l:gentext key="MsgOrig" text="Orixe"/>
+<l:gentext key="msgorig" text="Orixe"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="parte"/>
+<l:gentext key="Preface" text="Prefaciu"/>
+<l:gentext key="preface" text="Prefaciu"/>
+<l:gentext key="Procedure" text="Procedimientu"/>
+<l:gentext key="procedure" text="procedimientu"/>
+<l:gentext key="ProductionSet" text="Producción"/>
+<l:gentext key="PubDate" text="Data d'Espublización"/>
+<l:gentext key="pubdate" text="data d'espublización"/>
+<l:gentext key="Published" text="Espublizáu"/>
+<l:gentext key="published" text="espublizáu"/>
+<l:gentext key="Publisher" text="Publisher"/>
+<l:gentext key="Qandadiv" text="E &amp; R"/>
+<l:gentext key="qandadiv" text="e &amp; r"/>
+<l:gentext key="QandASet" text="Entrugues más frecuentes"/>
+<l:gentext key="Question" text="E:"/>
+<l:gentext key="question" text="e:"/>
+<l:gentext key="RefEntry" text="Páxina"/>
+<l:gentext key="refentry" text="páxina"/>
+<l:gentext key="Reference" text="Referencia"/>
+<l:gentext key="reference" text="Referencia"/>
+<l:gentext key="References" text="Referencies"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="nome"/>
+<l:gentext key="RefSection" text="Seición"/>
+<l:gentext key="refsection" text="seición"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+<l:gentext key="refsynopsisdiv" text="sinopsis"/>
+<l:gentext key="RevHistory" text="Revision History"/>
+<l:gentext key="revhistory" text="Revision History"/>
+<l:gentext key="revision" text="revisión hestorial"/>
+<l:gentext key="Revision" text="Revisión Hestorial"/>
+<l:gentext key="sect1" text="Seición"/>
+<l:gentext key="sect2" text="Seición"/>
+<l:gentext key="sect3" text="Seición"/>
+<l:gentext key="sect4" text="Seición"/>
+<l:gentext key="sect5" text="Seición"/>
+<l:gentext key="section" text="seición"/>
+<l:gentext key="Section" text="Seición"/>
+<l:gentext key="see" text="ver"/>
+<l:gentext key="See" text="Ver"/>
+<l:gentext key="seealso" text="ver tamién"/>
+<l:gentext key="Seealso" text="Ver tamién"/>
+<l:gentext key="SeeAlso" text="Ver Tamién"/>
+<l:gentext key="set" text="conxuntu"/>
+<l:gentext key="Set" text="Conxuntu"/>
+<l:gentext key="setindex" text="índiz del conxuntu"/>
+<l:gentext key="SetIndex" text="Ãndiz del Conxuntu"/>
+<l:gentext key="Sidebar" text="Panel llateral"/>
+<l:gentext key="sidebar" text="panel llateral"/>
+<l:gentext key="step" text="pasu"/>
+<l:gentext key="Step" text="Pasu"/>
+<l:gentext key="table" text="tabla"/>
+<l:gentext key="Table" text="Tabla"/>
+<l:gentext key="task" text="xera"/>
+<l:gentext key="Task" text="Xera"/>
+<l:gentext key="tip" text="trucu"/>
+<l:gentext key="TIP" text="TRUCU"/>
+<l:gentext key="Tip" text="Trucu"/>
+<l:gentext key="Warning" text="Avisu"/>
+<l:gentext key="warning" text="avisu"/>
+<l:gentext key="WARNING" text="AVISU"/>
+<l:gentext key="and" text="y"/>
+<l:gentext key="by" text="por"/>
+<l:gentext key="Edited" text="Editáu"/>
+<l:gentext key="edited" text="editáu"/>
+<l:gentext key="Editedby" text="Editáu por"/>
+<l:gentext key="editedby" text="editáu por"/>
+<l:gentext key="in" text="en"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="notes"/>
+<l:gentext key="Notes" text="Notes"/>
+<l:gentext key="Pgs" text="Pxs."/>
+<l:gentext key="pgs" text="pxs."/>
+<l:gentext key="Revisedby" text="Revisáu por: "/>
+<l:gentext key="revisedby" text="revisáu por: "/>
+<l:gentext key="TableNotes" text="Notes"/>
+<l:gentext key="tablenotes" text="Notes"/>
+<l:gentext key="TableofContents" text="Tabla de Conteníos"/>
+<l:gentext key="tableofcontents" text="tabla de conteníos"/>
+<l:gentext key="unexpectedelementname" text="nome d'elementu inesperáu"/>
+<l:gentext key="unsupported" text="ensin sofitu"/>
+<l:gentext key="xrefto" text="xref a"/>
+<l:gentext key="Authors" text="Autores"/>
+<l:gentext key="copyeditor" text="Editor de copia"/>
+<l:gentext key="graphicdesigner" text="Diseñador Gráficu"/>
+<l:gentext key="productioneditor" text="Editor de Producción"/>
+<l:gentext key="technicaleditor" text="Editor téunicu"/>
+<l:gentext key="translator" text="Traductor"/>
+<l:gentext key="listofequations" text="llista d'ecuaciones"/>
+<l:gentext key="ListofEquations" text="Llista d'ecuaciones"/>
+<l:gentext key="ListofExamples" text="Llista d'Exemplos"/>
+<l:gentext key="listofexamples" text="llista d'Exemplos"/>
+<l:gentext key="ListofFigures" text="Llista de Figures"/>
+<l:gentext key="listoffigures" text="llista de Figures"/>
+<l:gentext key="ListofProcedures" text="Llista de Procedimientos"/>
+<l:gentext key="listofprocedures" text="llista de Procedimientos"/>
+<l:gentext key="listoftables" text="llista de Tables"/>
+<l:gentext key="ListofTables" text="Llista de Tables"/>
+<l:gentext key="ListofUnknown" text="Llista de Desconocíu"/>
+<l:gentext key="listofunknown" text="llista de Desconocíu"/>
+<l:gentext key="nav-home" text="Entamu"/>
+<l:gentext key="nav-next" text="Siguiente"/>
+<l:gentext key="nav-next-sibling" text="Rápidu Alantre"/>
+<l:gentext key="nav-prev" text="Previu"/>
+<l:gentext key="nav-prev-sibling" text="Rápidu Atrás"/>
+<l:gentext key="nav-up" text="Arriba"/>
+<l:gentext key="nav-toc" text="TdC"/>
+<l:gentext key="Draft" text="Borrador"/>
+<l:gentext key="above" text="enriba"/>
+<l:gentext key="below" text="baxo"/>
+<l:gentext key="sectioncalled" text="la seición denomada"/>
+<l:gentext key="index symbols" text="Símbolos"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apéndiz %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulu %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ecuación %n. %t"/>
+<l:template name="example" text="Exemplu %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimientu %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Producción %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabla %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apéndiz %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Capítulu %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="E: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="E: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="la seición denomada “%tâ€"/>
+<l:template name="refsection" text="la seición denomada “%tâ€"/>
+<l:template name="refsect1" text="la seición denomada “%tâ€"/>
+<l:template name="refsect2" text="la seición denomada “%tâ€"/>
+<l:template name="refsect3" text="la seición denomada “%tâ€"/>
+<l:template name="sect1" text="la seición denomada “%tâ€"/>
+<l:template name="sect2" text="la seición denomada “%tâ€"/>
+<l:template name="sect3" text="la seición denomada “%tâ€"/>
+<l:template name="sect4" text="la seición denomada “%tâ€"/>
+<l:template name="sect5" text="la seición denomada “%tâ€"/>
+<l:template name="section" text="la seición denomada “%tâ€"/>
+<l:template name="simplesect" text="la seición denomada “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apéndiz %n"/>
+<l:template name="bridgehead" text="Seición %n"/>
+<l:template name="chapter" text="Capítulu %n"/>
+<l:template name="equation" text="Ecuación %n"/>
+<l:template name="example" text="Exemplu %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimientu %n"/>
+<l:template name="productionset" text="Producción %n"/>
+<l:template name="qandadiv" text="E &amp; R %n"/>
+<l:template name="qandaentry" text="E: %n"/>
+<l:template name="question" text="E: %n"/>
+<l:template name="sect1" text="Seición %n"/>
+<l:template name="sect2" text="Seición %n"/>
+<l:template name="sect3" text="Seición %n"/>
+<l:template name="sect4" text="Seición %n"/>
+<l:template name="sect5" text="Seición %n"/>
+<l:template name="section" text="Seición %n"/>
+<l:template name="table" text="Tabla %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apéndiz %n, %t"/>
+<l:template name="bridgehead" text="Seición %n, “%tâ€"/>
+<l:template name="chapter" text="Capítulu %n, %t"/>
+<l:template name="equation" text="Ecuación %n, “%tâ€"/>
+<l:template name="example" text="Exemplu %n, “%tâ€"/>
+<l:template name="figure" text="Figura %n, “%tâ€"/>
+<l:template name="part" text="Parte %n, “%tâ€"/>
+<l:template name="procedure" text="Procedimientu %n, “%tâ€"/>
+<l:template name="productionset" text="Producción %n, “%tâ€"/>
+<l:template name="qandadiv" text="E &amp; R %n, “%tâ€"/>
+<l:template name="refsect1" text="la seición denomada “%tâ€"/>
+<l:template name="refsect2" text="la seición denomada “%tâ€"/>
+<l:template name="refsect3" text="la seición denomada “%tâ€"/>
+<l:template name="refsection" text="la seición denomada “%tâ€"/>
+<l:template name="sect1" text="Seición %n, “%tâ€"/>
+<l:template name="sect2" text="Seición %n, “%tâ€"/>
+<l:template name="sect3" text="Seición %n, “%tâ€"/>
+<l:template name="sect4" text="Seición %n, “%tâ€"/>
+<l:template name="sect5" text="Seición %n, “%tâ€"/>
+<l:template name="section" text="Seición %n, “%tâ€"/>
+<l:template name="simplesect" text="la seición denomada “%tâ€"/>
+<l:template name="table" text="Tabla %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" y "/>
+<l:template name="seplast" text=", y "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ver %t."/>
+<l:template name="seealso" text="Ver Tamién %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiencia: "/>
+<l:template name="MsgLevel" text="Nivel: "/>
+<l:template name="MsgOrig" text="Orixe: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Xineru"/>
+<l:template name="February" text="Febreru"/>
+<l:template name="March" text="Marzu"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Mayu"/>
+<l:template name="June" text="Xunu"/>
+<l:template name="July" text="Xunetu"/>
+<l:template name="August" text="Agostu"/>
+<l:template name="September" text="Setiembre"/>
+<l:template name="October" text="Ochobre"/>
+<l:template name="November" text="Payares"/>
+<l:template name="December" text="Avientu"/>
+<l:template name="Monday" text="Llunes"/>
+<l:template name="Tuesday" text="Martes"/>
+<l:template name="Wednesday" text="Miércoles"/>
+<l:template name="Thursday" text="Xueves"/>
+<l:template name="Friday" text="Vienres"/>
+<l:template name="Saturday" text="Sábadu"/>
+<l:template name="Sunday" text="Domingu"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Xin"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Abr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Xun"/>
+<l:template name="Jul" text="Xnt"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Set"/>
+<l:template name="Oct" text="Och"/>
+<l:template name="Nov" text="Pay"/>
+<l:template name="Dec" text="Avi"/>
+<l:template name="Mon" text="Llu"/>
+<l:template name="Tue" text="Mié"/>
+<l:template name="Wed" text="Wed"/>
+<l:template name="Thu" text="Xue"/>
+<l:template name="Fri" text="Vie"/>
+<l:template name="Sat" text="Sáb"/>
+<l:template name="Sun" text="Dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)" lang="en"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Símbolos</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl
new file mode 100644
index 0000000..45c785d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "entities.ent">
+%common.entities;
+<!-- Documents using the kimber index method must have a lang attribute -->
+<!-- Only one of these should be present in the entity -->
+
+<!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'>
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"
+ xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService"
+ exclude-result-prefixes="k">
+
+<!-- ********************************************************************
+ $Id: autoidx-kimber.xsl 8729 2010-07-15 16:43:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="kimber.imported">
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:choose>
+ <xsl:when test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+
+<!-- The following key used in the kimber indexing method. -->
+<xsl:key name="k-group"
+ match="indexterm"
+ use="k:getIndexGroupKey(&lang;, &primary;)"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl
new file mode 100644
index 0000000..3d755c4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl
@@ -0,0 +1,154 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"
+ xmlns:func="http://exslt.org/functions"
+ xmlns:exslt="http://exslt.org/common"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ extension-element-prefixes="func exslt"
+ exclude-result-prefixes="func exslt i l"
+ xmlns:i="urn:cz-kosek:functions:index">
+
+<!-- ********************************************************************
+ $Id: autoidx-kosek.xsl 8759 2010-07-20 21:46:07Z kosek $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="kosek.imported">
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<!-- Returns index group code for given term -->
+<func:function name="i:group-index">
+ <xsl:param name="term"/>
+
+ <xsl:variable name="letters-rtf">
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:variable name="local.l10n.letters"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
+
+ <xsl:for-each select="$l10n.xml">
+ <xsl:variable name="l10n.letters"
+ select="document(key('l10n-lang', $lang)/@href)/l:l10n/l:letters[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($local.l10n.letters) &gt; 0">
+ <xsl:copy-of select="$local.l10n.letters"/>
+ </xsl:when>
+ <xsl:when test="count($l10n.letters) &gt; 0">
+ <xsl:copy-of select="$l10n.letters"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of index grouping letters exists</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>; using "en".</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:message>
+
+ <xsl:copy-of select="document(key('l10n-lang', 'en'))/l:l10n/l:letters[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
+
+ <xsl:variable name="long-letter-index" select="$letters/l:l[. = substring($term,1,2)]/@i"/>
+ <xsl:variable name="short-letter-index" select="$letters/l:l[. = substring($term,1,1)]/@i"/>
+ <xsl:variable name="letter-index">
+ <xsl:choose>
+ <xsl:when test="$long-letter-index">
+ <xsl:value-of select="$long-letter-index"/>
+ </xsl:when>
+ <xsl:when test="$short-letter-index">
+ <xsl:value-of select="$short-letter-index"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <func:result select="number($letter-index)"/>
+</func:function>
+
+<!-- Return index group letter for given group code -->
+<func:function name="i:group-letter">
+ <xsl:param name="index"/>
+
+ <xsl:variable name="letters-rtf">
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:variable name="local.l10n.letters"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
+
+ <xsl:for-each select="$l10n.xml">
+ <xsl:variable name="l10n.letters"
+ select="document(key('l10n-lang', $lang)/@href)/l:l10n/l:letters[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($local.l10n.letters) &gt; 0">
+ <xsl:copy-of select="$local.l10n.letters"/>
+ </xsl:when>
+ <xsl:when test="count($l10n.letters) &gt; 0">
+ <xsl:copy-of select="$l10n.letters"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of index grouping letters exists</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>; using "en".</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:message>
+
+ <xsl:copy-of select="document(key('l10n-lang', 'en')/@href)/l:l10n/l:letters[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
+
+ <func:result select="$letters/l:l[@i=$index][1]"/>
+</func:function>
+
+<xsl:key name="group-code"
+ match="indexterm"
+ use="i:group-index(&primary;)"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml
new file mode 100644
index 0000000..c22ec7b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml
@@ -0,0 +1,672 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="az" english-language-name="Azerbaijani">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/az.xml -->
+<!-- * -->
+<!-- * E-mail the edited az.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Ä°cmal"/>
+<l:gentext key="abstract" text="Ä°cmal"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Cavab:"/>
+<l:gentext key="answer" text="Cavab:"/>
+<l:gentext key="Appendix" text="ÆlavÉ™"/>
+<l:gentext key="appendix" text="ÆlavÉ™"/>
+<l:gentext key="Article" text="Məqalə"/>
+<l:gentext key="article" text="Məqalə"/>
+<l:gentext key="Author" text="Müəllif"/>
+<l:gentext key="Bibliography" text="Qaynaqça"/>
+<l:gentext key="bibliography" text="Qaynaqça"/>
+<l:gentext key="Book" text="Kitab"/>
+<l:gentext key="book" text="Kitab"/>
+<l:gentext key="CAUTION" text="DÄ°QQÆT"/>
+<l:gentext key="Caution" text="Diqqət"/>
+<l:gentext key="caution" text="Diqqət"/>
+<l:gentext key="Chapter" text="Bölüm"/>
+<l:gentext key="chapter" text="Bölüm"/>
+<l:gentext key="Colophon" text="Kitab Haqqında"/>
+<l:gentext key="colophon" text="Kitab Haqqında"/>
+<l:gentext key="Copyright" text="Müəllif Hüququ"/>
+<l:gentext key="copyright" text="Müəllif Hüququ"/>
+<l:gentext key="Dedication" text="Həsr"/>
+<l:gentext key="dedication" text="Həsr"/>
+<l:gentext key="Edition" text="Buraxılış"/>
+<l:gentext key="edition" text="Buraxılış"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Tənlik"/>
+<l:gentext key="equation" text="Tənlik"/>
+<l:gentext key="Example" text="Nümunə"/>
+<l:gentext key="example" text="Nümunə"/>
+<l:gentext key="Figure" text="Fiqur"/>
+<l:gentext key="figure" text="Fiqur"/>
+<l:gentext key="Glossary" text="Lüğət"/>
+<l:gentext key="glossary" text="Lüğət"/>
+<l:gentext key="GlossSee" text="Bax"/>
+<l:gentext key="glosssee" text="Bax"/>
+<l:gentext key="GlossSeeAlso" text="Eləcə Də Bax"/>
+<l:gentext key="glossseealso" text="Eləcə Də Bax"/>
+<l:gentext key="IMPORTANT" text="VACÄ°B"/>
+<l:gentext key="important" text="Vacib"/>
+<l:gentext key="Important" text="Vacib"/>
+<l:gentext key="Index" text="Ä°ndeks"/>
+<l:gentext key="index" text="Ä°ndeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Qanuni Qeyd"/>
+<l:gentext key="legalnotice" text="Qanuni Qeyd"/>
+<l:gentext key="MsgAud" text="Hədəf Oxuyucu"/>
+<l:gentext key="msgaud" text="Hədəf Oxuyucu"/>
+<l:gentext key="MsgLevel" text="Səviyyə"/>
+<l:gentext key="msglevel" text="Səviyyə"/>
+<l:gentext key="MsgOrig" text="Mənbə"/>
+<l:gentext key="msgorig" text="Mənbə"/>
+<l:gentext key="NOTE" text="QEYD"/>
+<l:gentext key="Note" text="Qeyd"/>
+<l:gentext key="note" text="Qeyd"/>
+<l:gentext key="Part" text="HissÉ™"/>
+<l:gentext key="part" text="HissÉ™"/>
+<l:gentext key="Preface" text="Önsöz"/>
+<l:gentext key="preface" text="Önsöz"/>
+<l:gentext key="Procedure" text="Ãœsul"/>
+<l:gentext key="procedure" text="Ãœsul"/>
+<l:gentext key="ProductionSet" text="Produksiya"/>
+<l:gentext key="PubDate" text="Yayimlama Tarixi"/>
+<l:gentext key="pubdate" text="Yayimlama Tarixi"/>
+<l:gentext key="Published" text="Yayimlama"/>
+<l:gentext key="published" text="Yayimlama"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="S vÉ™ C"/>
+<l:gentext key="qandadiv" text="S vÉ™ C"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Sual:"/>
+<l:gentext key="question" text="Sual:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Xatırlatma"/>
+<l:gentext key="reference" text="Xatırlatma"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ad"/>
+<l:gentext key="refname" text="Ad"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Ä°cmal"/>
+<l:gentext key="refsynopsisdiv" text="Ä°cmal"/>
+<l:gentext key="RevHistory" text="Nəzərdən Keçirmə Tarixçəsi"/>
+<l:gentext key="revhistory" text="Nəzərdən Keçirmə Tarixçəsi"/>
+<l:gentext key="revision" text="Nəzərdən Keçirmə"/>
+<l:gentext key="Revision" text="Nəzərdən Keçirmə"/>
+<l:gentext key="sect1" text="Qisim"/>
+<l:gentext key="sect2" text="Qisim"/>
+<l:gentext key="sect3" text="Qisim"/>
+<l:gentext key="sect4" text="Qisim"/>
+<l:gentext key="sect5" text="Qisim"/>
+<l:gentext key="section" text="Qisim"/>
+<l:gentext key="Section" text="Qisim"/>
+<l:gentext key="see" text="bax"/>
+<l:gentext key="See" text="Bax"/>
+<l:gentext key="seealso" text="eləcə də bax"/>
+<l:gentext key="Seealso" text="Eləcə Də Bax"/>
+<l:gentext key="SeeAlso" text="Eləcə Də Bax"/>
+<l:gentext key="set" text="Dəstə"/>
+<l:gentext key="Set" text="Dəstə"/>
+<l:gentext key="setindex" text="İndeksi Seç"/>
+<l:gentext key="SetIndex" text="İndeksi Seç"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="Kənar Çubuğu"/>
+<l:gentext key="step" text="addım"/>
+<l:gentext key="Step" text="Addım"/>
+<l:gentext key="table" text="cədvəl"/>
+<l:gentext key="Table" text="Cədvəl"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="məsləhət"/>
+<l:gentext key="TIP" text="MÆSLÆHÆT"/>
+<l:gentext key="Tip" text="Məsləhət"/>
+<l:gentext key="Warning" text="Xəbərdarlıq"/>
+<l:gentext key="warning" text="Xəbərdarlıq"/>
+<l:gentext key="WARNING" text="XÆBÆRDARLIQ"/>
+<l:gentext key="and" text="vÉ™"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Düzəldildi"/>
+<l:gentext key="edited" text="Düzəldildi"/>
+<l:gentext key="Editedby" text="Düzəliş edən"/>
+<l:gentext key="editedby" text="Düzəliş edən"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Qeydlər"/>
+<l:gentext key="Notes" text="Qeydlər"/>
+<l:gentext key="Pgs" text="Shflr."/>
+<l:gentext key="pgs" text="Shflr."/>
+<l:gentext key="Revisedby" text="Gözdən keçirən: "/>
+<l:gentext key="revisedby" text="Gözdən keçirən: "/>
+<l:gentext key="TableNotes" text="Qeydlər"/>
+<l:gentext key="tablenotes" text="Qeydlər"/>
+<l:gentext key="TableofContents" text="Məzmun"/>
+<l:gentext key="tableofcontents" text="Məzmun"/>
+<l:gentext key="unexpectedelementname" text="Gözlənməyən element adı"/>
+<l:gentext key="unsupported" text="dəstəklənmir"/>
+<l:gentext key="xrefto" text=""/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Tənliklər"/>
+<l:gentext key="ListofEquations" text="Tənliklər"/>
+<l:gentext key="ListofExamples" text="Nümunələr"/>
+<l:gentext key="listofexamples" text="Nümunələr"/>
+<l:gentext key="ListofFigures" text="Fiqurlar"/>
+<l:gentext key="listoffigures" text="Fiqurlar"/>
+<l:gentext key="ListofProcedures" text="Ãœsullar"/>
+<l:gentext key="listofprocedures" text="Ãœsullar"/>
+<l:gentext key="listoftables" text="Cədvəllər"/>
+<l:gentext key="ListofTables" text="Cədvəllər"/>
+<l:gentext key="ListofUnknown" text="Naməlumlar"/>
+<l:gentext key="listofunknown" text="List of Unknown" lang="en"/>
+<l:gentext key="nav-home" text="Ev"/>
+<l:gentext key="nav-next" text="Sonrakı"/>
+<l:gentext key="nav-next-sibling" text="İrəli"/>
+<l:gentext key="nav-prev" text="ÆvvÉ™lki"/>
+<l:gentext key="nav-prev-sibling" text="Geri"/>
+<l:gentext key="nav-up" text="Yuxarı"/>
+<l:gentext key="nav-toc" text="Məzmun"/>
+<l:gentext key="Draft" text="Åžablon"/>
+<l:gentext key="above" text="Üstündə"/>
+<l:gentext key="below" text="Altında"/>
+<l:gentext key="sectioncalled" text=""/>
+<l:gentext key="index symbols" text="Simvollar"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcçdeəfgğhxıijkqlmnoöprsştuüvyz"/>
+<l:gentext key="uppercase.alpha" text="ABCÇDEÆFGÄžHXIÄ°JKQLMNOÖPRSÅžTUÃœVYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Ælavə %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Tənlik %n. %t"/>
+<l:template name="example" text="Nümunə %n. %t"/>
+<l:template name="figure" text="Fiqur %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Hissə %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Üsul %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produksiya %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Cədvəl %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Ælavə %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="part" text="Hissə %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Cavab: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Sual: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Sual: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text=" “%tâ€"/>
+<l:template name="refsection" text=" “%tâ€"/>
+<l:template name="refsect1" text=" “%tâ€"/>
+<l:template name="refsect2" text=" “%tâ€"/>
+<l:template name="refsect3" text=" “%tâ€"/>
+<l:template name="sect1" text=" “%tâ€"/>
+<l:template name="sect2" text=" “%tâ€"/>
+<l:template name="sect3" text=" “%tâ€"/>
+<l:template name="sect4" text=" “%tâ€"/>
+<l:template name="sect5" text=" “%tâ€"/>
+<l:template name="section" text=" “%tâ€"/>
+<l:template name="simplesect" text=" “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Cavab: %n"/>
+<l:template name="appendix" text="Ælavə %n"/>
+<l:template name="bridgehead" text="Qisim %n"/>
+<l:template name="chapter" text="Bölüm %n"/>
+<l:template name="equation" text="Tənlik %n"/>
+<l:template name="example" text="Nümunə %n"/>
+<l:template name="figure" text="Fiqur %n"/>
+<l:template name="part" text="Hissə %n"/>
+<l:template name="procedure" text="Üsul %n"/>
+<l:template name="productionset" text="Produksiya %n"/>
+<l:template name="qandadiv" text="S və C %n"/>
+<l:template name="qandaentry" text="Sual: %n"/>
+<l:template name="question" text="Sual: %n"/>
+<l:template name="sect1" text="Qisim %n"/>
+<l:template name="sect2" text="Qisim %n"/>
+<l:template name="sect3" text="Qisim %n"/>
+<l:template name="sect4" text="Qisim %n"/>
+<l:template name="sect5" text="Qisim %n"/>
+<l:template name="section" text="Qisim %n"/>
+<l:template name="table" text="Cədvəl %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Ælavə %n, %t"/>
+<l:template name="bridgehead" text="Qisim %n, “%tâ€"/>
+<l:template name="chapter" text="Bölüm %n, %t"/>
+<l:template name="equation" text="TÉ™nlik %n, “%tâ€"/>
+<l:template name="example" text="Nümunə %n, “%tâ€"/>
+<l:template name="figure" text="Fiqur %n, “%tâ€"/>
+<l:template name="part" text="Hissə %n, “%tâ€"/>
+<l:template name="procedure" text="Ãœsul %n, “%tâ€"/>
+<l:template name="productionset" text="Produksiya %n, “%tâ€"/>
+<l:template name="qandadiv" text="S vÉ™ C %n, “%tâ€"/>
+<l:template name="refsect1" text=" “%tâ€"/>
+<l:template name="refsect2" text=" “%tâ€"/>
+<l:template name="refsect3" text=" “%tâ€"/>
+<l:template name="refsection" text=" “%tâ€"/>
+<l:template name="sect1" text="Qisim %n, “%tâ€"/>
+<l:template name="sect2" text="Qisim %n, “%tâ€"/>
+<l:template name="sect3" text="Qisim %n, “%tâ€"/>
+<l:template name="sect4" text="Qisim %n, “%tâ€"/>
+<l:template name="sect5" text="Qisim %n, “%tâ€"/>
+<l:template name="section" text="Qisim %n, “%tâ€"/>
+<l:template name="simplesect" text=" “%tâ€"/>
+<l:template name="table" text="CÉ™dvÉ™l %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" vÉ™ "/>
+<l:template name="seplast" text=", vÉ™ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Bax %t."/>
+<l:template name="seealso" text="Eləcə Də Bax %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Hədəf Oxuyucu: "/>
+<l:template name="MsgLevel" text="Səviyyə: "/>
+<l:template name="MsgOrig" text="Mənbə: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Janvar"/>
+<l:template name="February" text="Fevral"/>
+<l:template name="March" text="Mart"/>
+<l:template name="April" text="Aprel"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="Ä°yun"/>
+<l:template name="July" text="Ä°yul"/>
+<l:template name="August" text="Avqust"/>
+<l:template name="September" text="Sentyabr"/>
+<l:template name="October" text="Oktyabr"/>
+<l:template name="November" text="Noyabr"/>
+<l:template name="December" text="Dekabr"/>
+<l:template name="Monday" text="Bazar Ertəsi"/>
+<l:template name="Tuesday" text="Çərşənbə Axşamı "/>
+<l:template name="Wednesday" text="Çərşənbə"/>
+<l:template name="Thursday" text="Cümə Axşamı"/>
+<l:template name="Friday" text="Cümə"/>
+<l:template name="Saturday" text="Şənbə"/>
+<l:template name="Sunday" text="Bazar"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Yan"/>
+<l:template name="Feb" text="Fev"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Ä°yn"/>
+<l:template name="Jul" text="Ä°yl"/>
+<l:template name="Aug" text="Avq"/>
+<l:template name="Sep" text="Sen"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Noy"/>
+<l:template name="Dec" text="Dek"/>
+<l:template name="Mon" text="Ber"/>
+<l:template name="Tue" text="Çax"/>
+<l:template name="Wed" text="Çər"/>
+<l:template name="Thu" text="Cax"/>
+<l:template name="Fri" text="Cüm"/>
+<l:template name="Sat" text="Åžnb"/>
+<l:template name="Sun" text="Baz"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x042c Azerbaijani"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">İşarələr</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Ç</l:l>
+<l:l i="5">ç</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="6">E</l:l>
+<l:l i="6">e</l:l>
+<l:l i="7">e</l:l>
+<l:l i="7">e</l:l>
+<l:l i="8">Æ</l:l>
+<l:l i="8">É™</l:l>
+<l:l i="9">G</l:l>
+<l:l i="9">g</l:l>
+<l:l i="10">Äž</l:l>
+<l:l i="10">ÄŸ</l:l>
+<l:l i="11">H</l:l>
+<l:l i="11">h</l:l>
+<l:l i="12">X</l:l>
+<l:l i="12">x</l:l>
+<l:l i="13">I</l:l>
+<l:l i="13">ı</l:l>
+<l:l i="14">Ä°</l:l>
+<l:l i="14">i</l:l>
+<l:l i="15">J</l:l>
+<l:l i="15">j</l:l>
+<l:l i="16">K</l:l>
+<l:l i="16">k</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">L</l:l>
+<l:l i="18">l</l:l>
+<l:l i="19">M</l:l>
+<l:l i="19">m</l:l>
+<l:l i="20">N</l:l>
+<l:l i="20">n</l:l>
+<l:l i="21">O</l:l>
+<l:l i="21">o</l:l>
+<l:l i="22">Ö</l:l>
+<l:l i="22">ö</l:l>
+<l:l i="23">P</l:l>
+<l:l i="23">p</l:l>
+<l:l i="24">R</l:l>
+<l:l i="24">r</l:l>
+<l:l i="25">S</l:l>
+<l:l i="25">s</l:l>
+<l:l i="26">Åž</l:l>
+<l:l i="26">ÅŸ</l:l>
+<l:l i="27">T</l:l>
+<l:l i="27">t</l:l>
+<l:l i="28">U</l:l>
+<l:l i="28">u</l:l>
+<l:l i="29">Ü</l:l>
+<l:l i="29">ü</l:l>
+<l:l i="30">V</l:l>
+<l:l i="30">v</l:l>
+<l:l i="31">Y</l:l>
+<l:l i="31">y</l:l>
+<l:l i="32">Z</l:l>
+<l:l i="32">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml
new file mode 100644
index 0000000..10e379f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml
@@ -0,0 +1,724 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="bg" english-language-name="Bulgarian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/bg.xml -->
+<!-- * -->
+<!-- * E-mail the edited bg.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ÐнотациÑ"/>
+<l:gentext key="abstract" text="анотациÑ"/>
+<l:gentext key="Acknowledgements" text="БлагодарноÑти на"/>
+<l:gentext key="acknowledgements" text="благодарноÑти на"/>
+<l:gentext key="Answer" text="О"/>
+<l:gentext key="answer" text="о"/>
+<l:gentext key="Appendix" text="Приложение"/>
+<l:gentext key="appendix" text="приложение"/>
+<l:gentext key="Article" text="СтатиÑ"/>
+<l:gentext key="article" text="ÑтатиÑ"/>
+<l:gentext key="Author" text="Ðвтор"/>
+<l:gentext key="Bibliography" text="Литература"/>
+<l:gentext key="bibliography" text="литература"/>
+<l:gentext key="Book" text="Книга"/>
+<l:gentext key="book" text="книга"/>
+<l:gentext key="CAUTION" text="Ð’ÐИМÐÐИЕ"/>
+<l:gentext key="Caution" text="Внимание"/>
+<l:gentext key="caution" text="внимание"/>
+<l:gentext key="Chapter" text="Глава"/>
+<l:gentext key="chapter" text="глава"/>
+<l:gentext key="Colophon" text="БиблиографÑко каре"/>
+<l:gentext key="colophon" text="БиблиографÑко каре"/>
+<l:gentext key="Copyright" text="ÐвторÑки права"/>
+<l:gentext key="copyright" text="авторÑки права"/>
+<l:gentext key="Dedication" text="ПоÑвещение"/>
+<l:gentext key="dedication" text="поÑвещение"/>
+<l:gentext key="Edition" text="Издание"/>
+<l:gentext key="edition" text="издание"/>
+<l:gentext key="Editor" text="Редактор"/>
+<l:gentext key="Equation" text="Формула"/>
+<l:gentext key="equation" text="формула"/>
+<l:gentext key="Example" text="Пример"/>
+<l:gentext key="example" text="пример"/>
+<l:gentext key="Figure" text="Фигура"/>
+<l:gentext key="figure" text="фигура"/>
+<l:gentext key="Glossary" text="Терминологичен речник"/>
+<l:gentext key="glossary" text="терминологичен речник"/>
+<l:gentext key="GlossSee" text="Вж."/>
+<l:gentext key="glosssee" text="вж."/>
+<l:gentext key="GlossSeeAlso" text="Вж."/>
+<l:gentext key="glossseealso" text="вж."/>
+<l:gentext key="IMPORTANT" text="Ð’ÐЖÐО"/>
+<l:gentext key="important" text="важно"/>
+<l:gentext key="Important" text="Важно"/>
+<l:gentext key="Index" text="Ðзбучен указател"/>
+<l:gentext key="index" text="азбучен указател"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ÐвторÑки права"/>
+<l:gentext key="legalnotice" text="авторÑки права"/>
+<l:gentext key="MsgAud" text="ÐаÑоченоÑÑ‚"/>
+<l:gentext key="msgaud" text="наÑоченоÑÑ‚"/>
+<l:gentext key="MsgLevel" text="Ðиво"/>
+<l:gentext key="msglevel" text="ниво"/>
+<l:gentext key="MsgOrig" text="Източник"/>
+<l:gentext key="msgorig" text="източник"/>
+<l:gentext key="NOTE" text="ЗÐБЕЛЕЖКÐ"/>
+<l:gentext key="Note" text="Забележка"/>
+<l:gentext key="note" text="забележка"/>
+<l:gentext key="Part" text="ЧаÑÑ‚"/>
+<l:gentext key="part" text="чаÑÑ‚"/>
+<l:gentext key="Preface" text="Предговор"/>
+<l:gentext key="preface" text="предговор"/>
+<l:gentext key="Procedure" text="Процедура"/>
+<l:gentext key="procedure" text="процедура"/>
+<l:gentext key="ProductionSet" text="ПродукциÑ"/>
+<l:gentext key="PubDate" text="Дата на издаване"/>
+<l:gentext key="pubdate" text="дата на издаване"/>
+<l:gentext key="Published" text="Издаден"/>
+<l:gentext key="published" text="издаден"/>
+<l:gentext key="Publisher" text="Издател"/>
+<l:gentext key="Qandadiv" text="ВъпроÑи и отговори"/>
+<l:gentext key="qandadiv" text="въпроÑи и отговори"/>
+<l:gentext key="QandASet" text="ЧеÑто задавани въпроÑи"/>
+<l:gentext key="Question" text="Ð’"/>
+<l:gentext key="question" text="в"/>
+<l:gentext key="RefEntry" text="Страница"/>
+<l:gentext key="refentry" text="Ñтраница"/>
+<l:gentext key="Reference" text="Справочник"/>
+<l:gentext key="reference" text="Ñправочник"/>
+<l:gentext key="References" text="Препратки"/>
+<l:gentext key="RefName" text="Ðазвание"/>
+<l:gentext key="refname" text="название"/>
+<l:gentext key="RefSection" text="Раздел"/>
+<l:gentext key="refsection" text="раздел"/>
+<l:gentext key="RefSynopsisDiv" text="СинтакÑиÑ"/>
+<l:gentext key="refsynopsisdiv" text="ÑинтакÑиÑ"/>
+<l:gentext key="RevHistory" text="Промени"/>
+<l:gentext key="revhistory" text="промени"/>
+<l:gentext key="revision" text="издание"/>
+<l:gentext key="Revision" text="издание"/>
+<l:gentext key="sect1" text="Раздел"/>
+<l:gentext key="sect2" text="Раздел"/>
+<l:gentext key="sect3" text="Раздел"/>
+<l:gentext key="sect4" text="Раздел"/>
+<l:gentext key="sect5" text="Раздел"/>
+<l:gentext key="section" text="раздел"/>
+<l:gentext key="Section" text="Раздел"/>
+<l:gentext key="see" text="вж."/>
+<l:gentext key="See" text="Вж."/>
+<l:gentext key="seealso" text="вж."/>
+<l:gentext key="Seealso" text="Вж."/>
+<l:gentext key="SeeAlso" text="Вж."/>
+<l:gentext key="set" text="група"/>
+<l:gentext key="Set" text="Група"/>
+<l:gentext key="setindex" text="указател"/>
+<l:gentext key="SetIndex" text="Указател"/>
+<l:gentext key="Sidebar" text="Разделител"/>
+<l:gentext key="sidebar" text="разделител"/>
+<l:gentext key="step" text="Ñтъпка"/>
+<l:gentext key="Step" text="Стъпка"/>
+<l:gentext key="table" text="таблица"/>
+<l:gentext key="Table" text="Таблица"/>
+<l:gentext key="task" text="задача"/>
+<l:gentext key="Task" text="Задача"/>
+<l:gentext key="tip" text="подÑказка"/>
+<l:gentext key="TIP" text="ПОДСКÐЗКÐ"/>
+<l:gentext key="Tip" text="ПодÑказка"/>
+<l:gentext key="Warning" text="Внимание"/>
+<l:gentext key="warning" text="внимание"/>
+<l:gentext key="WARNING" text="Ð’ÐИМÐÐИЕ"/>
+<l:gentext key="and" text="и"/>
+<l:gentext key="by" text="от"/>
+<l:gentext key="Edited" text="Редактирано от"/>
+<l:gentext key="edited" text="редактирано от"/>
+<l:gentext key="Editedby" text="Редактирано от"/>
+<l:gentext key="editedby" text="редактирано от"/>
+<l:gentext key="in" text="в"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="забележки"/>
+<l:gentext key="Notes" text="Забележки"/>
+<l:gentext key="Pgs" text="Стр."/>
+<l:gentext key="pgs" text="ÑÑ‚Ñ€."/>
+<l:gentext key="Revisedby" text="Преработено от"/>
+<l:gentext key="revisedby" text="преработено от"/>
+<l:gentext key="TableNotes" text="Забележки"/>
+<l:gentext key="tablenotes" text="забележки"/>
+<l:gentext key="TableofContents" text="Съдържание"/>
+<l:gentext key="tableofcontents" text="Ñъдържание"/>
+<l:gentext key="unexpectedelementname" text="неочакван елемент"/>
+<l:gentext key="unsupported" text="неподдържан елемент"/>
+<l:gentext key="xrefto" text="вж."/>
+<l:gentext key="Authors" text="Ðвтори"/>
+<l:gentext key="copyeditor" text="Редактор"/>
+<l:gentext key="graphicdesigner" text="Ðвтор на графичното оформление"/>
+<l:gentext key="productioneditor" text="Редактор на изданието"/>
+<l:gentext key="technicaleditor" text="ТехничеÑки редактор"/>
+<l:gentext key="translator" text="Преводач"/>
+<l:gentext key="listofequations" text="ÑпиÑък на формулите"/>
+<l:gentext key="ListofEquations" text="СпиÑък на формулите"/>
+<l:gentext key="ListofExamples" text="СпиÑък на примерите"/>
+<l:gentext key="listofexamples" text="ÑпиÑък на примерите"/>
+<l:gentext key="ListofFigures" text="СпиÑък на фигурите"/>
+<l:gentext key="listoffigures" text="ÑпиÑък на фигурите"/>
+<l:gentext key="ListofProcedures" text="СпиÑък на процедурите"/>
+<l:gentext key="listofprocedures" text="ÑпиÑък на процедурите"/>
+<l:gentext key="listoftables" text="ÑпиÑък на таблиците"/>
+<l:gentext key="ListofTables" text="СпиÑък на таблиците"/>
+<l:gentext key="ListofUnknown" text="СпиÑък Ñ Ð´Ñ€ÑƒÐ³Ð¸ неща"/>
+<l:gentext key="listofunknown" text="ÑпиÑък Ñ Ð´Ñ€ÑƒÐ³Ð¸ неща"/>
+<l:gentext key="nav-home" text="Ðачало"/>
+<l:gentext key="nav-next" text="Ðапред"/>
+<l:gentext key="nav-next-sibling" text="ПреÑкачане напред"/>
+<l:gentext key="nav-prev" text="Ðазад"/>
+<l:gentext key="nav-prev-sibling" text="ПреÑкачане назад"/>
+<l:gentext key="nav-up" text="Ðиво нагоре"/>
+<l:gentext key="nav-toc" text="Съдържание"/>
+<l:gentext key="Draft" text="Чернова"/>
+<l:gentext key="above" text="по-горе"/>
+<l:gentext key="below" text="по-долу"/>
+<l:gentext key="sectioncalled" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ"/>
+<l:gentext key="index symbols" text="Ñимволи"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="абвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ"/>
+<l:gentext key="uppercase.alpha" text="ÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬЭЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="„"/>
+<l:dingbat key="nestedendquote" text="“"/>
+<l:dingbat key="singlestartquote" text="«"/>
+<l:dingbat key="singleendquote" text="»"/>
+<l:dingbat key="bullet" text="—"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Формула %n. %t"/>
+<l:template name="example" text="Пример %n. %t"/>
+<l:template name="figure" text="Фигура %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ЧаÑт %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Процедура %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ПродукциÑ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Таблица %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="part" text="ЧаÑт %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="О. %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="В. %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="В. %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="refsection" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="refsect1" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="refsect2" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="refsect3" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="sect1" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="sect2" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="sect3" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="sect4" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="sect5" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="section" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="simplesect" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="О. %n"/>
+<l:template name="appendix" text="Приложение %n"/>
+<l:template name="bridgehead" text="Раздел %n"/>
+<l:template name="chapter" text="Глава %n"/>
+<l:template name="equation" text="Формула %n"/>
+<l:template name="example" text="Пример %n"/>
+<l:template name="figure" text="Фигура %n"/>
+<l:template name="part" text="ЧаÑт %n"/>
+<l:template name="procedure" text="Процедура %n"/>
+<l:template name="productionset" text="ПродукциÑ %n"/>
+<l:template name="qandadiv" text="ВъпроÑи и отговори %n"/>
+<l:template name="qandaentry" text="В. %n"/>
+<l:template name="question" text="В. %n"/>
+<l:template name="sect1" text="Раздел %n"/>
+<l:template name="sect2" text="Раздел %n"/>
+<l:template name="sect3" text="Раздел %n"/>
+<l:template name="sect4" text="Раздел %n"/>
+<l:template name="sect5" text="Раздел %n"/>
+<l:template name="section" text="Раздел %n"/>
+<l:template name="table" text="Таблица %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Приложение %n, %t"/>
+<l:template name="bridgehead" text="Раздел %n, „%t“"/>
+<l:template name="chapter" text="Глава %n, %t"/>
+<l:template name="equation" text="Формула %n, „%t“"/>
+<l:template name="example" text="Пример %n, „%t“"/>
+<l:template name="figure" text="Фигура %n, „%t“"/>
+<l:template name="part" text="ЧаÑт %n, „%t“"/>
+<l:template name="procedure" text="Процедура %n, „%t“"/>
+<l:template name="productionset" text="ПродукциÑ %n, „%t“"/>
+<l:template name="qandadiv" text="ВъпроÑи и отговори %n, „%t“"/>
+<l:template name="refsect1" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="refsect2" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="refsect3" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="refsection" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="sect1" text="Раздел %n, „%t“"/>
+<l:template name="sect2" text="Раздел %n, „%t“"/>
+<l:template name="sect3" text="Раздел %n, „%t“"/>
+<l:template name="sect4" text="Раздел %n, „%t“"/>
+<l:template name="sect5" text="Раздел %n, „%t“"/>
+<l:template name="section" text="Раздел %n, „%t“"/>
+<l:template name="simplesect" text="разделът ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ „%t“"/>
+<l:template name="table" text="Таблица %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" и "/>
+<l:template name="seplast" text=" и "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Вж. %t."/>
+<l:template name="seealso" text="Вж. %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ÐаÑоченоÑÑ‚: "/>
+<l:template name="MsgLevel" text="Ðиво: "/>
+<l:template name="MsgOrig" text="Източник: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y г."/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Ñнуари"/>
+<l:template name="February" text="февруари"/>
+<l:template name="March" text="март"/>
+<l:template name="April" text="април"/>
+<l:template name="May" text="май"/>
+<l:template name="June" text="юни"/>
+<l:template name="July" text="юли"/>
+<l:template name="August" text="авгуÑÑ‚"/>
+<l:template name="September" text="Ñептември"/>
+<l:template name="October" text="октомври"/>
+<l:template name="November" text="ноември"/>
+<l:template name="December" text="декември"/>
+<l:template name="Monday" text="понеделник"/>
+<l:template name="Tuesday" text="вторник"/>
+<l:template name="Wednesday" text="ÑÑ€Ñда"/>
+<l:template name="Thursday" text="четвъртък"/>
+<l:template name="Friday" text="петък"/>
+<l:template name="Saturday" text="Ñъбота"/>
+<l:template name="Sunday" text="неделÑ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ñн."/>
+<l:template name="Feb" text="фев."/>
+<l:template name="Mar" text="март"/>
+<l:template name="Apr" text="апр."/>
+<l:template name="May" text="май"/>
+<l:template name="Jun" text="юни"/>
+<l:template name="Jul" text="юли"/>
+<l:template name="Aug" text="авг."/>
+<l:template name="Sep" text="Ñеп."/>
+<l:template name="Oct" text="окт."/>
+<l:template name="Nov" text="ноем."/>
+<l:template name="Dec" text="дек."/>
+<l:template name="Mon" text="пон."/>
+<l:template name="Tue" text="вт."/>
+<l:template name="Wed" text="ÑÑ€."/>
+<l:template name="Thu" text="чет."/>
+<l:template name="Fri" text="пет."/>
+<l:template name="Sat" text="Ñъб."/>
+<l:template name="Sun" text="нед."/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0402 Bulgarian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="—"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Цифри и знаци</l:l>
+<l:l i="10">Ð</l:l>
+<l:l i="10">а</l:l>
+<l:l i="20">Б</l:l>
+<l:l i="20">б</l:l>
+<l:l i="30">Ð’</l:l>
+<l:l i="30">в</l:l>
+<l:l i="40">Г</l:l>
+<l:l i="40">г</l:l>
+<l:l i="50">Д</l:l>
+<l:l i="50">д</l:l>
+<l:l i="60">Е</l:l>
+<l:l i="60">е</l:l>
+<l:l i="70">Ж</l:l>
+<l:l i="70">ж</l:l>
+<l:l i="80">З</l:l>
+<l:l i="80">з</l:l>
+<l:l i="90">И</l:l>
+<l:l i="90">и</l:l>
+<l:l i="100">Й</l:l>
+<l:l i="100">й</l:l>
+<l:l i="110">К</l:l>
+<l:l i="110">к</l:l>
+<l:l i="120">Л</l:l>
+<l:l i="120">л</l:l>
+<l:l i="130">М</l:l>
+<l:l i="130">м</l:l>
+<l:l i="140">Ð</l:l>
+<l:l i="140">н</l:l>
+<l:l i="150">О</l:l>
+<l:l i="150">о</l:l>
+<l:l i="160">П</l:l>
+<l:l i="160">п</l:l>
+<l:l i="170">Р</l:l>
+<l:l i="170">Ñ€</l:l>
+<l:l i="180">С</l:l>
+<l:l i="180">Ñ</l:l>
+<l:l i="190">Т</l:l>
+<l:l i="190">Ñ‚</l:l>
+<l:l i="200">У</l:l>
+<l:l i="200">у</l:l>
+<l:l i="210">Ф</l:l>
+<l:l i="210">Ñ„</l:l>
+<l:l i="220">Ð¥</l:l>
+<l:l i="220">Ñ…</l:l>
+<l:l i="230">Ц</l:l>
+<l:l i="230">ц</l:l>
+<l:l i="240">Ч</l:l>
+<l:l i="240">ч</l:l>
+<l:l i="250">Ш</l:l>
+<l:l i="250">ш</l:l>
+<l:l i="260">Щ</l:l>
+<l:l i="260">щ</l:l>
+<l:l i="270">Ъ</l:l>
+<l:l i="270">ÑŠ</l:l>
+<l:l i="280">Ь</l:l>
+<l:l i="280">ь</l:l>
+<l:l i="290">Ю</l:l>
+<l:l i="290">ÑŽ</l:l>
+<l:l i="300">Я</l:l>
+<l:l i="300">Ñ</l:l>
+<l:l i="310">Э</l:l>
+<l:l i="310">Ñ</l:l>
+<l:l i="320">Ы</l:l>
+<l:l i="320">Ñ‹</l:l>
+<l:l i="410">A</l:l>
+<l:l i="410">a</l:l>
+<l:l i="420">B</l:l>
+<l:l i="420">b</l:l>
+<l:l i="430">C</l:l>
+<l:l i="430">c</l:l>
+<l:l i="440">D</l:l>
+<l:l i="440">d</l:l>
+<l:l i="450">E</l:l>
+<l:l i="450">e</l:l>
+<l:l i="460">F</l:l>
+<l:l i="460">f</l:l>
+<l:l i="470">G</l:l>
+<l:l i="470">g</l:l>
+<l:l i="480">H</l:l>
+<l:l i="480">h</l:l>
+<l:l i="490">I</l:l>
+<l:l i="490">i</l:l>
+<l:l i="500">J</l:l>
+<l:l i="500">j</l:l>
+<l:l i="510">K</l:l>
+<l:l i="510">k</l:l>
+<l:l i="520">L</l:l>
+<l:l i="520">l</l:l>
+<l:l i="530">M</l:l>
+<l:l i="530">m</l:l>
+<l:l i="540">N</l:l>
+<l:l i="540">n</l:l>
+<l:l i="550">O</l:l>
+<l:l i="550">o</l:l>
+<l:l i="560">P</l:l>
+<l:l i="560">p</l:l>
+<l:l i="570">Q</l:l>
+<l:l i="570">q</l:l>
+<l:l i="580">R</l:l>
+<l:l i="580">r</l:l>
+<l:l i="590">S</l:l>
+<l:l i="590">s</l:l>
+<l:l i="600">T</l:l>
+<l:l i="600">t</l:l>
+<l:l i="610">U</l:l>
+<l:l i="610">u</l:l>
+<l:l i="620">V</l:l>
+<l:l i="620">v</l:l>
+<l:l i="630">W</l:l>
+<l:l i="630">w</l:l>
+<l:l i="640">X</l:l>
+<l:l i="640">x</l:l>
+<l:l i="650">Y</l:l>
+<l:l i="650">y</l:l>
+<l:l i="660">Z</l:l>
+<l:l i="660">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml
new file mode 100644
index 0000000..8ca9503
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="bn" english-language-name="Bangla">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/bn.xml -->
+<!-- * -->
+<!-- * E-mail the edited bn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="সারসংকà§à¦·à§‡à¦ª"/>
+<l:gentext key="abstract" text="সারসংকà§à¦·à§‡à¦ª"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="উতà§à¦¤à¦°:"/>
+<l:gentext key="answer" text="উতà§à¦¤à¦°:"/>
+<l:gentext key="Appendix" text="পরিশিষà§à¦Ÿ"/>
+<l:gentext key="appendix" text="পরিশিষà§à¦Ÿ"/>
+<l:gentext key="Article" text="পà§à¦°à¦¬à¦¨à§à¦§"/>
+<l:gentext key="article" text="পà§à¦°à¦¬à¦¨à§à¦§"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="গà§à¦°à¦¨à§à¦¥ তালিকা"/>
+<l:gentext key="bibliography" text="গà§à¦°à¦¨à§à¦¥ তালিকা"/>
+<l:gentext key="Book" text="বই"/>
+<l:gentext key="book" text="বই"/>
+<l:gentext key="CAUTION" text="সতরà§à¦•à¦¤à¦¾"/>
+<l:gentext key="Caution" text="সতরà§à¦•à¦¤à¦¾"/>
+<l:gentext key="caution" text="সতরà§à¦•à¦¤à¦¾"/>
+<l:gentext key="Chapter" text="অধà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="chapter" text="অধà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="Colophon" text="পà§à¦°à¦•à¦¾à¦¶à¦¨à¦¾ তথà§à¦¯ পৃষà§à¦ à¦¾"/>
+<l:gentext key="colophon" text="পà§à¦°à¦•à¦¾à¦¶à¦¨à¦¾ তথà§à¦¯ পৃষà§à¦ à¦¾"/>
+<l:gentext key="Copyright" text="সà§à¦¬à¦¤à§à¦¬"/>
+<l:gentext key="copyright" text="সà§à¦¬à¦¤à§à¦¬"/>
+<l:gentext key="Dedication" text="উতà§â€à¦¸à¦°à§à¦—"/>
+<l:gentext key="dedication" text="উতà§â€à¦¸à¦°à§à¦—"/>
+<l:gentext key="Edition" text="সংসà§à¦•à¦°à¦£"/>
+<l:gentext key="edition" text="সংসà§à¦•à¦°à¦£"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="সমীকরণ"/>
+<l:gentext key="equation" text="সমীকরণ"/>
+<l:gentext key="Example" text="উদাহরণ"/>
+<l:gentext key="example" text="উদাহরণ"/>
+<l:gentext key="Figure" text="চিতà§à¦°"/>
+<l:gentext key="figure" text="চিতà§à¦°"/>
+<l:gentext key="Glossary" text="নিরà§à¦˜à¦¨à§à¦Ÿ"/>
+<l:gentext key="glossary" text="নিরà§à¦˜à¦¨à§à¦Ÿ"/>
+<l:gentext key="GlossSee" text="দেখà§à¦¨"/>
+<l:gentext key="glosssee" text="দেখà§à¦¨"/>
+<l:gentext key="GlossSeeAlso" text="আরো দেখà§à¦¨"/>
+<l:gentext key="glossseealso" text="আরো দেখà§à¦¨"/>
+<l:gentext key="IMPORTANT" text="গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£"/>
+<l:gentext key="important" text="গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£"/>
+<l:gentext key="Important" text="গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£"/>
+<l:gentext key="Index" text="সূচি"/>
+<l:gentext key="index" text="সূচি"/>
+<l:gentext key="ISBN" text="আইà¦à¦¸à¦¬à¦¿à¦à¦¨ (ISBN)"/>
+<l:gentext key="isbn" text="আইà¦à¦¸à¦¬à¦¿à¦à¦¨ (ISBN)"/>
+<l:gentext key="LegalNotice" text="আইনী বিজà§à¦žà¦ªà§à¦¤à¦¿"/>
+<l:gentext key="legalnotice" text="আইনী বিজà§à¦žà¦ªà§à¦¤à¦¿"/>
+<l:gentext key="MsgAud" text="শà§à¦°à§‹à¦¤à¦¾"/>
+<l:gentext key="msgaud" text="শà§à¦°à§‹à¦¤à¦¾"/>
+<l:gentext key="MsgLevel" text="সà§à¦¤à¦°"/>
+<l:gentext key="msglevel" text="সà§à¦¤à¦°"/>
+<l:gentext key="MsgOrig" text="উতà§â€à¦¸"/>
+<l:gentext key="msgorig" text="উতà§â€à¦¸"/>
+<l:gentext key="NOTE" text="লকà§à¦·à¦£à§€à§Ÿ"/>
+<l:gentext key="Note" text="লকà§à¦·à¦£à§€à§Ÿ"/>
+<l:gentext key="note" text="লকà§à¦·à¦£à§€à§Ÿ"/>
+<l:gentext key="Part" text="খনà§à¦¡"/>
+<l:gentext key="part" text="খনà§à¦¡"/>
+<l:gentext key="Preface" text="মà§à¦–বনà§à¦§"/>
+<l:gentext key="preface" text="মà§à¦–বনà§à¦§"/>
+<l:gentext key="Procedure" text="পদà§à¦§à¦¤à¦¿"/>
+<l:gentext key="procedure" text="পদà§à¦§à¦¤à¦¿"/>
+<l:gentext key="ProductionSet" text="উতà§â€à¦ªà¦¾à¦¦à¦¨"/>
+<l:gentext key="PubDate" text="পà§à¦°à¦•à¦¾à¦¶à¦¨à¦¾à¦° তারিখ"/>
+<l:gentext key="pubdate" text="পà§à¦°à¦•à¦¾à¦¶à¦¨à¦¾à¦° তারিখ"/>
+<l:gentext key="Published" text="পà§à¦°à¦•à¦¾à¦¶à¦¿à¦¤"/>
+<l:gentext key="published" text="পà§à¦°à¦•à¦¾à¦¶à¦¿à¦¤"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="পà§à¦°à¦¶à§à¦¨à¦à¦¬à¦‚উতà§à¦¤à¦°"/>
+<l:gentext key="qandadiv" text="পà§à¦°à¦¶à§à¦¨à¦à¦¬à¦‚উতà§à¦¤à¦°"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="পà§à¦°à¦¶à§à¦¨:"/>
+<l:gentext key="question" text="পà§à¦°à¦¶à§à¦¨:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="গà§à¦°à¦¨à§à¦¥à¦¸à§‚তà§à¦°"/>
+<l:gentext key="reference" text="গà§à¦°à¦¨à§à¦¥à¦¸à§‚তà§à¦°"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="নাম"/>
+<l:gentext key="refname" text="নাম"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="সারাংশ"/>
+<l:gentext key="refsynopsisdiv" text="সারাংশ"/>
+<l:gentext key="RevHistory" text="পরিবরà§à¦§à¦¨ ও পরিবরà§à¦¤à¦¨ তালিকা"/>
+<l:gentext key="revhistory" text="পরিবরà§à¦§à¦¨ ও পরিবরà§à¦¤à¦¨ তালিকা"/>
+<l:gentext key="revision" text="সংসà§à¦•à¦°à¦£"/>
+<l:gentext key="Revision" text="সংসà§à¦•à¦°à¦£"/>
+<l:gentext key="sect1" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="sect2" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="sect3" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="sect4" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="sect5" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="section" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="Section" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="see" text="দেখà§à¦¨"/>
+<l:gentext key="See" text="দেখà§à¦¨"/>
+<l:gentext key="seealso" text="আরো দেখà§à¦¨"/>
+<l:gentext key="Seealso" text="আরো দেখà§à¦¨"/>
+<l:gentext key="SeeAlso" text="আরো দেখà§à¦¨"/>
+<l:gentext key="set" text="সমষà§à¦Ÿà¦¿"/>
+<l:gentext key="Set" text="সমষà§à¦Ÿà¦¿"/>
+<l:gentext key="setindex" text="সূচিসমষà§à¦Ÿà¦¿"/>
+<l:gentext key="SetIndex" text="সূচিসমষà§à¦Ÿà¦¿"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="সাইডবার"/>
+<l:gentext key="step" text="ধাপ"/>
+<l:gentext key="Step" text="ধাপ"/>
+<l:gentext key="table" text="ছক"/>
+<l:gentext key="Table" text="ছক"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ইঙà§à¦—িত"/>
+<l:gentext key="TIP" text="ইঙà§à¦—িত"/>
+<l:gentext key="Tip" text="ইঙà§à¦—িত"/>
+<l:gentext key="Warning" text="সতরà§à¦•à¦¬à¦¾à¦£à§€"/>
+<l:gentext key="warning" text="সতরà§à¦•à¦¬à¦¾à¦£à§€"/>
+<l:gentext key="WARNING" text="সতরà§à¦•à¦¬à¦¾à¦£à§€"/>
+<l:gentext key="and" text="à¦à¦¬à¦‚"/>
+<l:gentext key="by" text="দà§à¦¬à¦¾à¦°à¦¾"/>
+<l:gentext key="Edited" text="সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="edited" text="সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="Editedby" text="সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="editedby" text="সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="in" text="মধà§à¦¯à§‡"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="নোট"/>
+<l:gentext key="Notes" text="নোট"/>
+<l:gentext key="Pgs" text="পৃষà§à¦ à¦¾."/>
+<l:gentext key="pgs" text="পৃষà§à¦ à¦¾."/>
+<l:gentext key="Revisedby" text="পরিমারà§à¦œà¦¨à¦¾à¦•à¦¾à¦°à§€: "/>
+<l:gentext key="revisedby" text="পরিমারà§à¦œà¦¨à¦¾à¦•à¦¾à¦°à§€: "/>
+<l:gentext key="TableNotes" text="নোট"/>
+<l:gentext key="tablenotes" text="নোট"/>
+<l:gentext key="TableofContents" text="সূচিপতà§à¦°"/>
+<l:gentext key="tableofcontents" text="সূচিপতà§à¦°"/>
+<l:gentext key="unexpectedelementname" text="অপà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ উপাদানের নাম"/>
+<l:gentext key="unsupported" text="অসমরà§à¦¥à¦¿à¦¤"/>
+<l:gentext key="xrefto" text="নিরà§à¦¦à§‡à¦¶ করে"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="সমীকরণ তালিকা"/>
+<l:gentext key="ListofEquations" text="সমীকরণ তালিকা"/>
+<l:gentext key="ListofExamples" text="উদাহরণ তালিকা"/>
+<l:gentext key="listofexamples" text="উদাহরণ তালিকা"/>
+<l:gentext key="ListofFigures" text="চিতà§à¦°à¦¤à¦¾à¦²à¦¿à¦•à¦¾"/>
+<l:gentext key="listoffigures" text="চিতà§à¦°à¦¤à¦¾à¦²à¦¿à¦•à¦¾"/>
+<l:gentext key="ListofProcedures" text="পদà§à¦§à¦¤à¦¿à¦° তালিকা"/>
+<l:gentext key="listofprocedures" text="পদà§à¦§à¦¤à¦¿à¦° তালিকা"/>
+<l:gentext key="listoftables" text="ছকের তালিকা"/>
+<l:gentext key="ListofTables" text="ছকের তালিকা"/>
+<l:gentext key="ListofUnknown" text="অজà§à¦žà¦¾à¦¤ বসà§à¦¤à§à¦° তালিকা"/>
+<l:gentext key="listofunknown" text="অজà§à¦žà¦¾à¦¤ বসà§à¦¤à§à¦° তালিকা"/>
+<l:gentext key="nav-home" text="পà§à¦°à¦¥à¦® অবসà§à¦¥à¦¾à¦¨ (Home)"/>
+<l:gentext key="nav-next" text="পরবরà§à¦¤à§€"/>
+<l:gentext key="nav-next-sibling" text="দà§à¦°à§à¦¤ সমà§à¦®à§à¦–ে"/>
+<l:gentext key="nav-prev" text="পূরà§à¦¬à¦¬à¦°à§à¦¤à§€"/>
+<l:gentext key="nav-prev-sibling" text="দà§à¦°à§à¦¤ পশà§à¦šà¦¾à¦¤à§‡"/>
+<l:gentext key="nav-up" text="উপর"/>
+<l:gentext key="nav-toc" text="সূচিপতà§à¦°"/>
+<l:gentext key="Draft" text="খসড়া"/>
+<l:gentext key="above" text="উপর"/>
+<l:gentext key="below" text="নিচ"/>
+<l:gentext key="sectioncalled" text="অনà§à¦šà§à¦›à§‡à¦¦"/>
+<l:gentext key="index symbols" text="পà§à¦°à¦¤à§€à¦•"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="অআইঈউঊà¦à¦à¦“ঔঋকখগঘঙচছজà¦à¦žà¦Ÿà¦ à¦¡à¦¢à¦£à¦¤à¦¥à¦¦à¦§à¦¨à¦ªà¦«à¦¬à¦­à¦®à¦¯à¦°à¦²à¦¶à¦·à¦¸à¦¹à¦‚ঃ"/>
+<l:gentext key="uppercase.alpha" text="অআইঈউঊà¦à¦à¦“ঔঋকখগঘঙচছজà¦à¦žà¦Ÿà¦ à¦¡à¦¢à¦£à¦¤à¦¥à¦¦à¦§à¦¨à¦ªà¦«à¦¬à¦­à¦®à¦¯à¦°à¦²à¦¶à¦·à¦¸à¦¹à¦‚ঃ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="সমীকরণ %n. %t"/>
+<l:template name="example" text="উদাহরণ %n. %t"/>
+<l:template name="figure" text="চিতà§à¦°Â %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="খনà§à¦¡Â %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="পদà§à¦§à¦¤à¦¿Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="উতà§â€à¦ªà¦¾à¦¦à¦¨Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ছক %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n. %t"/>
+<l:template name="part" text="খনà§à¦¡Â %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="উতà§à¦¤à¦°: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="refsection" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="refsect1" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="refsect2" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="refsect3" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="sect1" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="sect2" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="sect3" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="sect4" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="sect5" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="section" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="simplesect" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="উতà§à¦¤à¦°: %n"/>
+<l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n"/>
+<l:template name="bridgehead" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n"/>
+<l:template name="equation" text="সমীকরণ %n"/>
+<l:template name="example" text="উদাহরণ %n"/>
+<l:template name="figure" text="চিতà§à¦°Â %n"/>
+<l:template name="part" text="খনà§à¦¡Â %n"/>
+<l:template name="procedure" text="পদà§à¦§à¦¤à¦¿Â %n"/>
+<l:template name="productionset" text="উতà§â€à¦ªà¦¾à¦¦à¦¨Â %n"/>
+<l:template name="qandadiv" text="পà§à¦°à¦¶à§à¦¨à¦à¦¬à¦‚উতà§à¦¤à¦°Â %n"/>
+<l:template name="qandaentry" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="question" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="sect1" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="sect2" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="sect3" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="sect4" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="sect5" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="section" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="table" text="ছক %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n, %t"/>
+<l:template name="bridgehead" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n, %t"/>
+<l:template name="equation" text="সমীকরণ %n, “%tâ€"/>
+<l:template name="example" text="উদাহরণ %n, “%tâ€"/>
+<l:template name="figure" text="চিতà§à¦°Â %n, “%tâ€"/>
+<l:template name="part" text="খনà§à¦¡Â %n, “%tâ€"/>
+<l:template name="procedure" text="পদà§à¦§à¦¤à¦¿Â %n, “%tâ€"/>
+<l:template name="productionset" text="উতà§â€à¦ªà¦¾à¦¦à¦¨Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="পà§à¦°à¦¶à§à¦¨à¦à¦¬à¦‚উতà§à¦¤à¦°Â %n, “%tâ€"/>
+<l:template name="refsect1" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="refsect2" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="refsect3" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="refsection" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="sect1" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="sect2" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="sect3" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="sect4" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="sect5" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="section" text="অনà§à¦šà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="simplesect" text="অনà§à¦šà§à¦›à§‡à¦¦ “%tâ€"/>
+<l:template name="table" text="ছক %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" à¦à¦¬à¦‚ "/>
+<l:template name="seplast" text=", à¦à¦¬à¦‚ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="দেখà§à¦¨ %t."/>
+<l:template name="seealso" text="আরো দেখà§à¦¨ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="শà§à¦°à§‹à¦¤à¦¾: "/>
+<l:template name="MsgLevel" text="সà§à¦¤à¦°: "/>
+<l:template name="MsgOrig" text="উতà§â€à¦¸: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="জানà§à§Ÿà¦¾à¦°à§€"/>
+<l:template name="February" text="ফেবà§à¦°à§à§Ÿà¦¾à¦°à§€"/>
+<l:template name="March" text="মারà§à¦š"/>
+<l:template name="April" text="à¦à¦ªà§à¦°à¦¿à¦²"/>
+<l:template name="May" text="মে"/>
+<l:template name="June" text="জà§à¦¨"/>
+<l:template name="July" text="জà§à¦²à¦¾à¦‡"/>
+<l:template name="August" text="আগসà§à¦Ÿ"/>
+<l:template name="September" text="সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°"/>
+<l:template name="October" text="অকà§à¦Ÿà§‹à¦¬à¦°"/>
+<l:template name="November" text="নভেমà§à¦¬à¦°"/>
+<l:template name="December" text="ডিসেমà§à¦¬à¦°"/>
+<l:template name="Monday" text="সোমবার"/>
+<l:template name="Tuesday" text="মঙà§à¦—লবার"/>
+<l:template name="Wednesday" text="বà§à¦§à¦¬à¦¾à¦°"/>
+<l:template name="Thursday" text="বৃহঃসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°"/>
+<l:template name="Friday" text="শà§à¦•à§à¦°à¦¬à¦¾à¦°"/>
+<l:template name="Saturday" text="শনিবার"/>
+<l:template name="Sunday" text="রবিবার"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="জানà§à§Ÿà¦¾à¦°à§€"/>
+<l:template name="Feb" text="ফেবà§à¦°à§à§Ÿà¦¾à¦°à§€"/>
+<l:template name="Mar" text="মারà§à¦š"/>
+<l:template name="Apr" text="à¦à¦ªà§à¦°à¦¿à¦²"/>
+<l:template name="May" text="মে"/>
+<l:template name="Jun" text="জà§à¦¨"/>
+<l:template name="Jul" text="জà§à¦²à¦¾à¦‡"/>
+<l:template name="Aug" text="আগসà§à¦Ÿ"/>
+<l:template name="Sep" text="সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°"/>
+<l:template name="Oct" text="অকà§à¦Ÿà§‹à¦¬à¦°"/>
+<l:template name="Nov" text="নভেমà§à¦¬à¦°"/>
+<l:template name="Dec" text="ডিসেমà§à¦¬à¦°"/>
+<l:template name="Mon" text="সোম"/>
+<l:template name="Tue" text="মঙà§à¦—ল"/>
+<l:template name="Wed" text="বà§à¦§"/>
+<l:template name="Thu" text="বৃহঃসà§à¦ªà¦¤à¦¿"/>
+<l:template name="Fri" text="শà§à¦•à§à¦°"/>
+<l:template name="Sat" text="শনি"/>
+<l:template name="Sun" text="রবি"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0445 Bangla (Bangladesh and India)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml
new file mode 100644
index 0000000..88404a0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en" english-language-name="English">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/bn_in.xml -->
+<!-- * -->
+<!-- * E-mail the edited bn_in.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="সারসংকà§à¦·à§‡à¦ª"/>
+<l:gentext key="abstract" text="সারসংকà§à¦·à§‡à¦ª"/>
+<l:gentext key="Acknowledgements" text="সà§à¦¬à§€à¦•à§ƒà¦¤à¦¿"/>
+<l:gentext key="acknowledgements" text="সà§à¦¬à§€à¦•à§ƒà¦¤à¦¿"/>
+<l:gentext key="Answer" text="উতà§à¦¤à¦°:"/>
+<l:gentext key="answer" text="উতà§à¦¤à¦°:"/>
+<l:gentext key="Appendix" text="পরিশিষà§à¦Ÿ"/>
+<l:gentext key="appendix" text="পরিশিষà§à¦Ÿ"/>
+<l:gentext key="Article" text="পà§à¦°à¦¬à¦¨à§à¦§"/>
+<l:gentext key="article" text="পà§à¦°à¦¬à¦¨à§à¦§"/>
+<l:gentext key="Author" text="লেখক"/>
+<l:gentext key="Bibliography" text="গà§à¦°à¦¨à§à¦¥à¦ªà¦žà§à¦œà¦¿"/>
+<l:gentext key="bibliography" text="গà§à¦°à¦¨à§à¦¥à¦ªà¦žà§à¦œà¦¿"/>
+<l:gentext key="Book" text="বই"/>
+<l:gentext key="book" text="বই"/>
+<l:gentext key="CAUTION" text="সাবধান"/>
+<l:gentext key="Caution" text="সাবধান"/>
+<l:gentext key="caution" text="সাবধান"/>
+<l:gentext key="Chapter" text="অধà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="chapter" text="অধà§à¦¯à¦¾à§Ÿ"/>
+<l:gentext key="Colophon" text="গà§à¦°à¦¨à§à¦¥à¦ªà¦°à¦¿à¦šà§Ÿ"/>
+<l:gentext key="colophon" text="গà§à¦°à¦¨à§à¦¥à¦ªà¦°à¦¿à¦šà§Ÿ"/>
+<l:gentext key="Copyright" text="সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à¦°"/>
+<l:gentext key="copyright" text="সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à¦°"/>
+<l:gentext key="Dedication" text="উৎসরà§à¦—পতà§à¦°"/>
+<l:gentext key="dedication" text="উৎসরà§à¦—পতà§à¦°"/>
+<l:gentext key="Edition" text="সংসà§à¦•à¦°à¦£"/>
+<l:gentext key="edition" text="সংসà§à¦•à¦°à¦£"/>
+<l:gentext key="Editor" text="সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="Equation" text="সমীকরণ"/>
+<l:gentext key="equation" text="সমীকরণ"/>
+<l:gentext key="Example" text="উদাহরণ"/>
+<l:gentext key="example" text="উদাহরণ"/>
+<l:gentext key="Figure" text="চিতà§à¦°"/>
+<l:gentext key="figure" text="চিতà§à¦°"/>
+<l:gentext key="Glossary" text="পরিভাষাকোষ"/>
+<l:gentext key="glossary" text="পরিভাষাকোষ"/>
+<l:gentext key="GlossSee" text="দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="glosssee" text="দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="GlossSeeAlso" text="অতিরিকà§à¦¤ দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="glossseealso" text="অতিরিকà§à¦¤ দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="IMPORTANT" text="গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£"/>
+<l:gentext key="important" text="গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£"/>
+<l:gentext key="Important" text="গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£"/>
+<l:gentext key="Index" text="বিষয়সূচি"/>
+<l:gentext key="index" text="বিষয়সূচি"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="আইনী বিবৃতি"/>
+<l:gentext key="legalnotice" text="আইনী বিবৃতি"/>
+<l:gentext key="MsgAud" text="উদà§à¦¦à¦¿à¦·à§à¦Ÿ পাঠকবরà§à¦—"/>
+<l:gentext key="msgaud" text="উদà§à¦¦à¦¿à¦·à§à¦Ÿ পাঠকবরà§à¦—"/>
+<l:gentext key="MsgLevel" text="সà§à¦¤à¦°"/>
+<l:gentext key="msglevel" text="সà§à¦¤à¦°"/>
+<l:gentext key="MsgOrig" text="মূল"/>
+<l:gentext key="msgorig" text="মূল"/>
+<l:gentext key="NOTE" text="উলà§à¦²à§‡à¦–à§à¦¯"/>
+<l:gentext key="Note" text="উলà§à¦²à§‡à¦–à§à¦¯"/>
+<l:gentext key="note" text="উলà§à¦²à§‡à¦–à§à¦¯"/>
+<l:gentext key="Part" text="পরিচà§à¦›à§‡à¦¦"/>
+<l:gentext key="part" text="পরিচà§à¦›à§‡à¦¦"/>
+<l:gentext key="Preface" text="মà§à¦–বনà§à¦§"/>
+<l:gentext key="preface" text="মà§à¦–বনà§à¦§"/>
+<l:gentext key="Procedure" text="পদà§à¦§à¦¤à¦¿"/>
+<l:gentext key="procedure" text="পদà§à¦§à¦¤à¦¿"/>
+<l:gentext key="ProductionSet" text="নিরà§à¦®à¦¾à¦£"/>
+<l:gentext key="PubDate" text="পà§à¦°à¦•à¦¾à¦¶à¦¨à¦¾à¦° তারিখ"/>
+<l:gentext key="pubdate" text="পà§à¦°à¦•à¦¾à¦¶à¦¨à¦¾à¦° তারিখ"/>
+<l:gentext key="Published" text="পà§à¦°à¦•à¦¾à¦¶à¦¿à¦¤"/>
+<l:gentext key="published" text="পà§à¦°à¦•à¦¾à¦¶à¦¿à¦¤"/>
+<l:gentext key="Publisher" text="পà§à¦°à¦•à¦¾à¦¶à¦•"/>
+<l:gentext key="Qandadiv" text="পà§à¦°à¦¶à§à¦¨à§‹à¦¤à§à¦¤à¦°"/>
+<l:gentext key="qandadiv" text="পà§à¦°à¦¶à§à¦¨à§‹à¦¤à§à¦¤à¦°"/>
+<l:gentext key="QandASet" text="সাধারণ কিছৠজিজà§à¦žà¦¾à¦¸à¦¾"/>
+<l:gentext key="Question" text="পà§à¦°à¦¶à§à¦¨:"/>
+<l:gentext key="question" text="পà§à¦°à¦¶à§à¦¨:"/>
+<l:gentext key="RefEntry" text="পৃষà§à¦ à¦¾"/>
+<l:gentext key="refentry" text="পৃষà§à¦ à¦¾"/>
+<l:gentext key="Reference" text="পà§à¦°à¦¸à¦™à§à¦— নিরà§à¦¦à§‡à¦¶"/>
+<l:gentext key="reference" text="পà§à¦°à¦¸à¦™à§à¦— নিরà§à¦¦à§‡à¦¶"/>
+<l:gentext key="References" text="পà§à¦°à¦¸à¦™à§à¦— নিরà§à¦¦à§‡à¦¶ তালিকা"/>
+<l:gentext key="RefName" text="নাম"/>
+<l:gentext key="refname" text="নাম"/>
+<l:gentext key="RefSection" text="বিভাগ"/>
+<l:gentext key="refsection" text="বিভাগ"/>
+<l:gentext key="RefSynopsisDiv" text="সারাংশ"/>
+<l:gentext key="refsynopsisdiv" text="সারাংশ"/>
+<l:gentext key="RevHistory" text="পরিমারà§à¦œà¦¨à¦¾à¦° তথà§à¦¯"/>
+<l:gentext key="revhistory" text="পরিমারà§à¦œà¦¨à¦¾à¦° তথà§à¦¯"/>
+<l:gentext key="revision" text="পরিমারà§à¦œà¦¨à¦¾"/>
+<l:gentext key="Revision" text="পরিমারà§à¦œà¦¨à¦¾"/>
+<l:gentext key="sect1" text="বিভাগ"/>
+<l:gentext key="sect2" text="বিভাগ"/>
+<l:gentext key="sect3" text="বিভাগ"/>
+<l:gentext key="sect4" text="বিভাগ"/>
+<l:gentext key="sect5" text="বিভাগ"/>
+<l:gentext key="section" text="বিভাগ"/>
+<l:gentext key="Section" text="বিভাগ"/>
+<l:gentext key="see" text="দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="See" text="দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="seealso" text="অতিরিকà§à¦¤ দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="Seealso" text="অতিরিকà§à¦¤ দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="SeeAlso" text="অতিরিকà§à¦¤ দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯"/>
+<l:gentext key="set" text="সংকলন"/>
+<l:gentext key="Set" text="সংকলন"/>
+<l:gentext key="setindex" text="সংকলন সূচি"/>
+<l:gentext key="SetIndex" text="সংকলন সূচি"/>
+<l:gentext key="Sidebar" text="পারà§à¦¶à§à¦¬à¦¬à¦°à§à¦¤à§€ সà§à¦¤à¦®à§à¦­"/>
+<l:gentext key="sidebar" text="পারà§à¦¶à§à¦¬à¦¬à¦°à§à¦¤à§€ সà§à¦¤à¦®à§à¦­"/>
+<l:gentext key="step" text="ধাপ"/>
+<l:gentext key="Step" text="ধাপ"/>
+<l:gentext key="table" text="সারণি"/>
+<l:gentext key="Table" text="সারণি"/>
+<l:gentext key="task" text="করà§à¦®"/>
+<l:gentext key="Task" text="করà§à¦®"/>
+<l:gentext key="tip" text="সূতà§à¦°"/>
+<l:gentext key="TIP" text="সূতà§à¦°"/>
+<l:gentext key="Tip" text="সূতà§à¦°"/>
+<l:gentext key="Warning" text="সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾"/>
+<l:gentext key="warning" text="সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾"/>
+<l:gentext key="WARNING" text="সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾"/>
+<l:gentext key="and" text="à¦à¦¬à¦‚"/>
+<l:gentext key="by" text="দà§à¦¬à¦¾à¦°à¦¾"/>
+<l:gentext key="Edited" text="সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="edited" text="সমà§à¦ªà¦¾à¦¦à¦¿à¦¤"/>
+<l:gentext key="Editedby" text="সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="editedby" text="সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="in" text="অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="টিকা টিপà§à¦ªà¦¨à¦¿"/>
+<l:gentext key="Notes" text="টিকা টিপà§à¦ªà¦¨à¦¿"/>
+<l:gentext key="Pgs" text="পৃষà§à¦ à¦¾"/>
+<l:gentext key="pgs" text="পৃষà§à¦ à¦¾"/>
+<l:gentext key="Revisedby" text="পরিবরà§à¦§à¦•: "/>
+<l:gentext key="revisedby" text="পরিবরà§à¦§à¦•: "/>
+<l:gentext key="TableNotes" text="টিকা টিপà§à¦ªà¦¨à¦¿"/>
+<l:gentext key="tablenotes" text="টিকা টিপà§à¦ªà¦¨à¦¿"/>
+<l:gentext key="TableofContents" text="সূচিপতà§à¦°"/>
+<l:gentext key="tableofcontents" text="সূচিপতà§à¦°"/>
+<l:gentext key="unexpectedelementname" text="অপà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ সতà§à¦¤à§à¦¬à¦¾à¦° নাম"/>
+<l:gentext key="unsupported" text="অসমরà§à¦¥à¦¿à¦¤"/>
+<l:gentext key="xrefto" text="xref নিরà§à¦¦à§‡à¦¶à¦¿à¦•à¦¾"/>
+<l:gentext key="Authors" text="লেখক"/>
+<l:gentext key="copyeditor" text="পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="graphicdesigner" text="চিতà§à¦° শিলà§à¦ªà§€"/>
+<l:gentext key="productioneditor" text="নিরà§à¦®à¦¾à¦£ সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="technicaleditor" text="পà§à¦°à¦¯à§à¦•à§à¦¤à¦¿à¦¬à¦¿à¦·à§Ÿà¦• সমà§à¦ªà¦¾à¦¦à¦•"/>
+<l:gentext key="translator" text="অনà§à¦¬à¦¾à¦¦à¦•"/>
+<l:gentext key="listofequations" text="সমীকরণের তালিকা"/>
+<l:gentext key="ListofEquations" text="সমীকরণের তালিকা"/>
+<l:gentext key="ListofExamples" text="উদাহরণের তালিকা"/>
+<l:gentext key="listofexamples" text="উদাহরণের তালিকা"/>
+<l:gentext key="ListofFigures" text="ছবির তালিকা"/>
+<l:gentext key="listoffigures" text="ছবির তালিকা"/>
+<l:gentext key="ListofProcedures" text="পদà§à¦§à¦¤à¦¿à¦° তালিকা"/>
+<l:gentext key="listofprocedures" text="পদà§à¦§à¦¤à¦¿à¦° তালিকা"/>
+<l:gentext key="listoftables" text="সারণির তালিকা"/>
+<l:gentext key="ListofTables" text="সারণির তালিকা"/>
+<l:gentext key="ListofUnknown" text="অজানা বসà§à¦¤à§à¦° তালিকা"/>
+<l:gentext key="listofunknown" text="অজানা বসà§à¦¤à§à¦° তালিকা"/>
+<l:gentext key="nav-home" text="পà§à¦°à¦¾à¦°à¦®à§à¦­à¦¿à¦• পৃষà§à¦ à¦¾"/>
+<l:gentext key="nav-next" text="পরবরà§à¦¤à§€"/>
+<l:gentext key="nav-next-sibling" text="অতিবরà§à¦¤à¦¨"/>
+<l:gentext key="nav-prev" text="পূরà§à¦¬à¦¬à¦°à§à¦¤à§€"/>
+<l:gentext key="nav-prev-sibling" text="পশà§à¦šà¦¾à§Žà¦¦à¦¿à¦¶à¦¾à§Ÿ অতিবরà§à¦¤à¦¨"/>
+<l:gentext key="nav-up" text="উপর"/>
+<l:gentext key="nav-toc" text="সূচিপতà§à¦°"/>
+<l:gentext key="Draft" text="খসড়া"/>
+<l:gentext key="above" text="ঊরà§à¦§à§à¦¬"/>
+<l:gentext key="below" text="নিমà§à¦¨"/>
+<l:gentext key="sectioncalled" text="উলà§à¦²à¦¿à¦–িত বিভাগ"/>
+<l:gentext key="index symbols" text="সংকেত"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="সমীকরণ %n. %t"/>
+<l:template name="example" text="উদাহরণ %n. %t"/>
+<l:template name="figure" text="চিতà§à¦°Â %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="পরিচà§à¦›à§‡à¦¦Â %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="পদà§à¦§à¦¤à¦¿Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="নিরà§à¦®à¦¾à¦£Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="সারণি %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n. %t"/>
+<l:template name="part" text="পরিচà§à¦›à§‡à¦¦Â %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="উতà§à¦¤à¦°: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="refsection" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="refsect1" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="refsect2" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="refsect3" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="sect1" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="sect2" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="sect3" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="sect4" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="sect5" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="section" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="simplesect" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="উতà§à¦¤à¦°: %n"/>
+<l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n"/>
+<l:template name="bridgehead" text="বিভাগ %n"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n"/>
+<l:template name="equation" text="সমীকরণ %n"/>
+<l:template name="example" text="উদাহরণ %n"/>
+<l:template name="figure" text="চিতà§à¦°Â %n"/>
+<l:template name="part" text="পরিচà§à¦›à§‡à¦¦Â %n"/>
+<l:template name="procedure" text="পদà§à¦§à¦¤à¦¿Â %n"/>
+<l:template name="productionset" text="নিরà§à¦®à¦¾à¦£Â %n"/>
+<l:template name="qandadiv" text="পà§à¦°à¦¶à§à¦¨à§‹à¦¤à§à¦¤à¦°Â %n"/>
+<l:template name="qandaentry" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="question" text="পà§à¦°à¦¶à§à¦¨: %n"/>
+<l:template name="sect1" text="বিভাগ %n"/>
+<l:template name="sect2" text="বিভাগ %n"/>
+<l:template name="sect3" text="বিভাগ %n"/>
+<l:template name="sect4" text="বিভাগ %n"/>
+<l:template name="sect5" text="বিভাগ %n"/>
+<l:template name="section" text="বিভাগ %n"/>
+<l:template name="table" text="সারণি %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="পরিশিষà§à¦ŸÂ %n, %t"/>
+<l:template name="bridgehead" text="বিভাগ %n, “%tâ€"/>
+<l:template name="chapter" text="অধà§à¦¯à¦¾à§ŸÂ %n, %t"/>
+<l:template name="equation" text="সমীকরণ %n, “%tâ€"/>
+<l:template name="example" text="উদাহরণ %n, “%tâ€"/>
+<l:template name="figure" text="চিতà§à¦°Â %n, “%tâ€"/>
+<l:template name="part" text="পরিচà§à¦›à§‡à¦¦Â %n, “%tâ€"/>
+<l:template name="procedure" text="পদà§à¦§à¦¤à¦¿Â %n, “%tâ€"/>
+<l:template name="productionset" text="নিরà§à¦®à¦¾à¦£Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="পà§à¦°à¦¶à§à¦¨à§‹à¦¤à§à¦¤à¦°Â %n, “%tâ€"/>
+<l:template name="refsect1" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="refsect2" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="refsect3" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="refsection" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="sect1" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect2" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect3" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect4" text="বিভাগ %n, “%tâ€"/>
+<l:template name="sect5" text="বিভাগ %n, “%tâ€"/>
+<l:template name="section" text="বিভাগ %n, “%tâ€"/>
+<l:template name="simplesect" text="উলà§à¦²à¦¿à¦–িত বিভাগ “%tâ€"/>
+<l:template name="table" text="সারণি %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" à¦à¦¬à¦‚ "/>
+<l:template name="seplast" text=", à¦à¦¬à¦‚ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯ %t."/>
+<l:template name="seealso" text="অতিরিকà§à¦¤ দà§à¦°à¦·à§à¦Ÿà¦¬à§à¦¯ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="উদà§à¦¦à¦¿à¦·à§à¦Ÿ পাঠকবরà§à¦—: "/>
+<l:template name="MsgLevel" text="সà§à¦¤à¦°: "/>
+<l:template name="MsgOrig" text="মূল: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="জানà§à§Ÿà¦¾à¦°à¦¿"/>
+<l:template name="February" text="ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿"/>
+<l:template name="March" text="মারà§à¦š"/>
+<l:template name="April" text="à¦à¦ªà§à¦°à¦¿à¦²"/>
+<l:template name="May" text="মে"/>
+<l:template name="June" text="জà§à¦¨"/>
+<l:template name="July" text="জà§à¦²à¦¾à¦‡"/>
+<l:template name="August" text="অগাসà§à¦Ÿ"/>
+<l:template name="September" text="সেপটেমà§à¦¬à¦°"/>
+<l:template name="October" text="অকà§à¦Ÿà§‹à¦¬à¦°"/>
+<l:template name="November" text="নভেমà§à¦¬à¦°"/>
+<l:template name="December" text="ডিসেমà§à¦¬à¦°"/>
+<l:template name="Monday" text="সোমবার"/>
+<l:template name="Tuesday" text="মঙà§à¦—লবার"/>
+<l:template name="Wednesday" text="বà§à¦§à¦¬à¦¾à¦°"/>
+<l:template name="Thursday" text="বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°"/>
+<l:template name="Friday" text="শà§à¦•à§à¦°à¦¬à¦¾à¦°"/>
+<l:template name="Saturday" text="শনিবার"/>
+<l:template name="Sunday" text="রবিবার"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="জানà§à§Ÿà¦¾à¦°à¦¿"/>
+<l:template name="Feb" text="ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿"/>
+<l:template name="Mar" text="মারà§à¦š"/>
+<l:template name="Apr" text="à¦à¦ªà§à¦°à¦¿à¦²"/>
+<l:template name="May" text="মে"/>
+<l:template name="Jun" text="জà§à¦¨"/>
+<l:template name="Jul" text="জà§à¦²à¦¾à¦‡"/>
+<l:template name="Aug" text="অগাসà§à¦Ÿ"/>
+<l:template name="Sep" text="সেপটেমà§à¦¬à¦°"/>
+<l:template name="Oct" text="অকà§à¦Ÿà§‹à¦¬à¦°"/>
+<l:template name="Nov" text="নভেমà§à¦¬à¦°"/>
+<l:template name="Dec" text="ডিসেমà§à¦¬à¦°"/>
+<l:template name="Mon" text="সোম"/>
+<l:template name="Tue" text="মঙà§à¦—ল"/>
+<l:template name="Wed" text="বà§à¦§"/>
+<l:template name="Thu" text="বৃহঃ"/>
+<l:template name="Fri" text="শà§à¦•à§à¦°"/>
+<l:template name="Sat" text="শনি"/>
+<l:template name="Sun" text="রবি"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0445 Bangla (Bangladesh and India)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">সংকেত</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml
new file mode 100644
index 0000000..bd9b281
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml
@@ -0,0 +1,662 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="bs" english-language-name="Bosnian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/bs.xml -->
+<!-- * -->
+<!-- * E-mail the edited bs.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sažetak"/>
+<l:gentext key="abstract" text="sažetak"/>
+<l:gentext key="Acknowledgements" text="Priznanja"/>
+<l:gentext key="acknowledgements" text="priznanja"/>
+<l:gentext key="Answer" text="O:"/>
+<l:gentext key="answer" text="o:"/>
+<l:gentext key="Appendix" text="Dodatak"/>
+<l:gentext key="appendix" text="dodatak"/>
+<l:gentext key="Article" text="ÄŒlanak"/>
+<l:gentext key="article" text="Älanak"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="knjiga"/>
+<l:gentext key="CAUTION" text="PAŽNJA"/>
+<l:gentext key="Caution" text="Pažnja"/>
+<l:gentext key="caution" text="pažnja"/>
+<l:gentext key="Chapter" text="Poglavlje"/>
+<l:gentext key="chapter" text="poglavlje"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Autorska prava"/>
+<l:gentext key="copyright" text="autorska prava"/>
+<l:gentext key="Dedication" text="Posveta"/>
+<l:gentext key="dedication" text="posveta"/>
+<l:gentext key="Edition" text="Izdanje"/>
+<l:gentext key="edition" text="izdanje"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="JednaÄina"/>
+<l:gentext key="equation" text="jednaÄina"/>
+<l:gentext key="Example" text="Primjer"/>
+<l:gentext key="example" text="primjer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="slika"/>
+<l:gentext key="Glossary" text="Glosar"/>
+<l:gentext key="glossary" text="glosar"/>
+<l:gentext key="GlossSee" text="Vidi"/>
+<l:gentext key="glosssee" text="vidi"/>
+<l:gentext key="GlossSeeAlso" text="Vidi takođe"/>
+<l:gentext key="glossseealso" text="vidi takođe"/>
+<l:gentext key="IMPORTANT" text="VAŽNO"/>
+<l:gentext key="important" text="važno"/>
+<l:gentext key="Important" text="Važno"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravne odredbe"/>
+<l:gentext key="legalnotice" text="pravne odredbe"/>
+<l:gentext key="MsgAud" text="Primatelji"/>
+<l:gentext key="msgaud" text="primatelji"/>
+<l:gentext key="MsgLevel" text="Nivo"/>
+<l:gentext key="msglevel" text="nivo"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="izvor"/>
+<l:gentext key="NOTE" text="BILJEÅ KA"/>
+<l:gentext key="Note" text="Bilješka"/>
+<l:gentext key="note" text="Bilješka"/>
+<l:gentext key="Part" text="Dio"/>
+<l:gentext key="part" text="dio"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="predgovor"/>
+<l:gentext key="Procedure" text="Postupak"/>
+<l:gentext key="procedure" text="postupak"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="Objavljeno"/>
+<l:gentext key="pubdate" text="objavljeno"/>
+<l:gentext key="Published" text="Objavljeno"/>
+<l:gentext key="published" text="objavljeno"/>
+<l:gentext key="Publisher" text="Objavljeno"/>
+<l:gentext key="Qandadiv" text="P &amp; O"/>
+<l:gentext key="qandadiv" text="P &amp; O"/>
+<l:gentext key="QandASet" text="ÄŒesto Pitana Pitanja"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="P:"/>
+<l:gentext key="RefEntry" text="Stranica"/>
+<l:gentext key="refentry" text="stranica"/>
+<l:gentext key="Reference" text="Referenca"/>
+<l:gentext key="reference" text="referenca"/>
+<l:gentext key="References" text="Referenca"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="ime"/>
+<l:gentext key="RefSection" text="Odjeljak"/>
+<l:gentext key="refsection" text="odjeljak"/>
+<l:gentext key="RefSynopsisDiv" text="Pregled"/>
+<l:gentext key="refsynopsisdiv" text="pregled"/>
+<l:gentext key="RevHistory" text="Historija verzija"/>
+<l:gentext key="revhistory" text="historija verzija"/>
+<l:gentext key="revision" text="verzija"/>
+<l:gentext key="Revision" text="Verzija"/>
+<l:gentext key="sect1" text="Odjeljak"/>
+<l:gentext key="sect2" text="Odjeljak"/>
+<l:gentext key="sect3" text="Odjeljak"/>
+<l:gentext key="sect4" text="Odjeljak"/>
+<l:gentext key="sect5" text="Odjeljak"/>
+<l:gentext key="section" text="odjeljak"/>
+<l:gentext key="Section" text="Odjeljak"/>
+<l:gentext key="see" text="vidi"/>
+<l:gentext key="See" text="Vidi"/>
+<l:gentext key="seealso" text="vidi takođe"/>
+<l:gentext key="Seealso" text="Vidi takođe"/>
+<l:gentext key="SeeAlso" text="Vidi takođe"/>
+<l:gentext key="set" text="set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="indeks"/>
+<l:gentext key="SetIndex" text="Indeks"/>
+<l:gentext key="Sidebar" text="Postrana kolona"/>
+<l:gentext key="sidebar" text="postrana kolona"/>
+<l:gentext key="step" text="korak"/>
+<l:gentext key="Step" text="Korak"/>
+<l:gentext key="table" text="tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="zadatak"/>
+<l:gentext key="Task" text="Zadatak"/>
+<l:gentext key="tip" text="Savjet"/>
+<l:gentext key="TIP" text="SAVJET"/>
+<l:gentext key="Tip" text="Savjet"/>
+<l:gentext key="Warning" text="Upozorenje"/>
+<l:gentext key="warning" text="Upozorenje"/>
+<l:gentext key="WARNING" text="UPOZORENJE"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="od"/>
+<l:gentext key="Edited" text="Izdao"/>
+<l:gentext key="edited" text="izdao"/>
+<l:gentext key="Editedby" text="Izdao"/>
+<l:gentext key="editedby" text="izdao"/>
+<l:gentext key="in" text="u"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="bilješke"/>
+<l:gentext key="Notes" text="Bilješke"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="ptr."/>
+<l:gentext key="Revisedby" text="Izmijenjeno od: "/>
+<l:gentext key="revisedby" text="izmijenjeno od: "/>
+<l:gentext key="TableNotes" text="Napomene"/>
+<l:gentext key="tablenotes" text="napomene"/>
+<l:gentext key="TableofContents" text="Sadržaj"/>
+<l:gentext key="tableofcontents" text="sadržaj"/>
+<l:gentext key="unexpectedelementname" text="NeoÄkivano ime elementa"/>
+<l:gentext key="unsupported" text="nepodržano"/>
+<l:gentext key="xrefto" text="xref prema"/>
+<l:gentext key="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="Autorski Urednik"/>
+<l:gentext key="graphicdesigner" text="Graficki Dizajneri"/>
+<l:gentext key="productioneditor" text="Urednik Produkcije"/>
+<l:gentext key="technicaleditor" text="Tehnicki Editor"/>
+<l:gentext key="translator" text="Prevodilac"/>
+<l:gentext key="listofequations" text="spisak jednaÄina"/>
+<l:gentext key="ListofEquations" text="Spisak jednaÄina"/>
+<l:gentext key="ListofExamples" text="Spisak primjera"/>
+<l:gentext key="listofexamples" text="spisak primjera"/>
+<l:gentext key="ListofFigures" text="Spisak slika"/>
+<l:gentext key="listoffigures" text="spisak slika"/>
+<l:gentext key="ListofProcedures" text="Spisak postupaka"/>
+<l:gentext key="listofprocedures" text="spisak postupaka"/>
+<l:gentext key="listoftables" text="spisak tabela"/>
+<l:gentext key="ListofTables" text="Spisak tabela"/>
+<l:gentext key="ListofUnknown" text="Spisak ???"/>
+<l:gentext key="listofunknown" text="spisak ???"/>
+<l:gentext key="nav-home" text="PoÄetak"/>
+<l:gentext key="nav-next" text="Naprijed"/>
+<l:gentext key="nav-next-sibling" text="Brzo naprijed"/>
+<l:gentext key="nav-prev" text="Nazad"/>
+<l:gentext key="nav-prev-sibling" text="Brzo nazad"/>
+<l:gentext key="nav-up" text="Gore"/>
+<l:gentext key="nav-toc" text="Sadržaj"/>
+<l:gentext key="Draft" text="Nacrt"/>
+<l:gentext key="above" text="iznad"/>
+<l:gentext key="below" text="ispod"/>
+<l:gentext key="sectioncalled" text="odjeljak sa nazivom"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcÄćdÄ‘efghijklmnoprsÅ¡tuvzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČĆDÄEFGHIJKLMNOPRSÅ TUVZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="JednaÄina %n. %t"/>
+<l:template name="example" text="Primjer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postupak %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="refsection" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="refsect1" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="refsect2" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="refsect3" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="sect1" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="sect2" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="sect3" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="sect4" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="sect5" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="section" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="simplesect" text="odjeljak sa nazivom “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="Dodatak %n"/>
+<l:template name="bridgehead" text="Odjeljak %n"/>
+<l:template name="chapter" text="Poglavlje %n"/>
+<l:template name="equation" text="JednaÄina %n"/>
+<l:template name="example" text="Primjer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Dio %n"/>
+<l:template name="procedure" text="Postupak %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="P &amp; O %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Odjeljak %n"/>
+<l:template name="sect2" text="Odjeljak %n"/>
+<l:template name="sect3" text="Odjeljak %n"/>
+<l:template name="sect4" text="Odjeljak %n"/>
+<l:template name="sect5" text="Odjeljak %n"/>
+<l:template name="section" text="Odjeljak %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatak %n, %t"/>
+<l:template name="bridgehead" text="Odjeljak %n, “%tâ€"/>
+<l:template name="chapter" text="Poglavlje %n, %t"/>
+<l:template name="equation" text="JednaÄina %n, “%tâ€"/>
+<l:template name="example" text="Primjer %n, “%tâ€"/>
+<l:template name="figure" text="Slika %n, “%tâ€"/>
+<l:template name="part" text="Dio %n, “%tâ€"/>
+<l:template name="procedure" text="Postupak %n, “%tâ€"/>
+<l:template name="productionset" text="Produkcija %n, “%tâ€"/>
+<l:template name="qandadiv" text="P &amp; O %n, “%tâ€"/>
+<l:template name="refsect1" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="refsect2" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="refsect3" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="refsection" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="sect1" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect2" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect3" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect4" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect5" text="Odjeljak %n, “%tâ€"/>
+<l:template name="section" text="Odjeljak %n, “%tâ€"/>
+<l:template name="simplesect" text="odjeljak sa nazivom “%tâ€"/>
+<l:template name="table" text="Tabela %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=" i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidi %t."/>
+<l:template name="seealso" text="Vidi takođe %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Primatelji: "/>
+<l:template name="MsgLevel" text="Nivo: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definicija: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januar"/>
+<l:template name="February" text="Februar"/>
+<l:template name="March" text="Mart"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="Septembar"/>
+<l:template name="October" text="Oktobar"/>
+<l:template name="November" text="Novembar"/>
+<l:template name="December" text="Decembar"/>
+<l:template name="Monday" text="Ponedeljak"/>
+<l:template name="Tuesday" text="Utorak"/>
+<l:template name="Wednesday" text="Srijeda"/>
+<l:template name="Thursday" text="ÄŒetvrtak"/>
+<l:template name="Friday" text="Petak"/>
+<l:template name="Saturday" text="Subota"/>
+<l:template name="Sunday" text="Nedelja"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Pon"/>
+<l:template name="Tue" text="Uto"/>
+<l:template name="Wed" text="Sri"/>
+<l:template name="Thu" text="ÄŒet"/>
+<l:template name="Fri" text="Pet"/>
+<l:template name="Sat" text="Sub"/>
+<l:template name="Sun" text="Ned"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x141A Bosnian (Bosnia/Herzegovina)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simboli</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml
new file mode 100644
index 0000000..95fd48b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ca" english-language-name="Catalan">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ca.xml -->
+<!-- * -->
+<!-- * E-mail the edited ca.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resum"/>
+<l:gentext key="abstract" text="resum"/>
+<l:gentext key="Acknowledgements" text="Agraïments"/>
+<l:gentext key="acknowledgements" text="agraïments"/>
+<l:gentext key="Answer" text="Resposta"/>
+<l:gentext key="answer" text="resposta"/>
+<l:gentext key="Appendix" text="Apèndix"/>
+<l:gentext key="appendix" text="apèndix"/>
+<l:gentext key="Article" text="Article"/>
+<l:gentext key="article" text="article"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="bibliografia"/>
+<l:gentext key="Book" text="Llibre"/>
+<l:gentext key="book" text="llibre"/>
+<l:gentext key="CAUTION" text="ATENCIÓ"/>
+<l:gentext key="Caution" text="Atenció"/>
+<l:gentext key="caution" text="atenció"/>
+<l:gentext key="Chapter" text="Capítol"/>
+<l:gentext key="chapter" text="capítol"/>
+<l:gentext key="Colophon" text="Colofó"/>
+<l:gentext key="colophon" text="colofó"/>
+<l:gentext key="Copyright" text="Dret de reproducció"/>
+<l:gentext key="copyright" text="dret de reproducció"/>
+<l:gentext key="Dedication" text="Dedicatòria"/>
+<l:gentext key="dedication" text="dedicatòria"/>
+<l:gentext key="Edition" text="Edició"/>
+<l:gentext key="edition" text="edició"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Equació"/>
+<l:gentext key="equation" text="equació"/>
+<l:gentext key="Example" text="Exemple"/>
+<l:gentext key="example" text="exemple"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="figura"/>
+<l:gentext key="Glossary" text="Glossari"/>
+<l:gentext key="glossary" text="glossari"/>
+<l:gentext key="GlossSee" text="Veure"/>
+<l:gentext key="glosssee" text="veure"/>
+<l:gentext key="GlossSeeAlso" text="Veure també"/>
+<l:gentext key="glossseealso" text="veure també"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Ãndex alfabètic"/>
+<l:gentext key="index" text="índex alfabètic"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Avís legal"/>
+<l:gentext key="legalnotice" text="avís legal"/>
+<l:gentext key="MsgAud" text="Audiència"/>
+<l:gentext key="msgaud" text="audiència"/>
+<l:gentext key="MsgLevel" text="Nivell"/>
+<l:gentext key="msglevel" text="nivell"/>
+<l:gentext key="MsgOrig" text="Origen"/>
+<l:gentext key="msgorig" text="origen"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Part"/>
+<l:gentext key="part" text="part"/>
+<l:gentext key="Preface" text="Prefaci"/>
+<l:gentext key="preface" text="prefaci"/>
+<l:gentext key="Procedure" text="Procediment"/>
+<l:gentext key="procedure" text="procediment"/>
+<l:gentext key="ProductionSet" text="Producció"/>
+<l:gentext key="PubDate" text="Data de publicació"/>
+<l:gentext key="pubdate" text="data de publicació"/>
+<l:gentext key="Published" text="Publicat"/>
+<l:gentext key="published" text="publicat"/>
+<l:gentext key="Publisher" text="Editor"/>
+<l:gentext key="Qandadiv" text="Pregunta i Resposta"/>
+<l:gentext key="qandadiv" text="pregunta i resposta"/>
+<l:gentext key="QandASet" text="Preguntes més freqüents"/>
+<l:gentext key="Question" text="Pregunta"/>
+<l:gentext key="question" text="pregunta"/>
+<l:gentext key="RefEntry" text="Pàgina"/>
+<l:gentext key="refentry" text="pàgina"/>
+<l:gentext key="Reference" text="Referència"/>
+<l:gentext key="reference" text="referència"/>
+<l:gentext key="References" text="Referències"/>
+<l:gentext key="RefName" text="Nom"/>
+<l:gentext key="refname" text="nom"/>
+<l:gentext key="RefSection" text="Secció de referència"/>
+<l:gentext key="refsection" text="secció de referència"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsi"/>
+<l:gentext key="refsynopsisdiv" text="sinopsi"/>
+<l:gentext key="RevHistory" text="Historial de revisions"/>
+<l:gentext key="revhistory" text="historial de revisions"/>
+<l:gentext key="revision" text="revisió"/>
+<l:gentext key="Revision" text="Revisió"/>
+<l:gentext key="sect1" text="Secció"/>
+<l:gentext key="sect2" text="Secció"/>
+<l:gentext key="sect3" text="Secció"/>
+<l:gentext key="sect4" text="Secció"/>
+<l:gentext key="sect5" text="Secció"/>
+<l:gentext key="section" text="secció"/>
+<l:gentext key="Section" text="Secció"/>
+<l:gentext key="see" text="veure"/>
+<l:gentext key="See" text="Veure"/>
+<l:gentext key="seealso" text="veure també"/>
+<l:gentext key="Seealso" text="Veure també"/>
+<l:gentext key="SeeAlso" text="Veure També"/>
+<l:gentext key="set" text="conjunt"/>
+<l:gentext key="Set" text="Conjunt"/>
+<l:gentext key="setindex" text="índex del conjunt"/>
+<l:gentext key="SetIndex" text="Ãndex del conjunt"/>
+<l:gentext key="Sidebar" text="Barra lateral"/>
+<l:gentext key="sidebar" text="barra lateral"/>
+<l:gentext key="step" text="Pas"/>
+<l:gentext key="Step" text="pas"/>
+<l:gentext key="table" text="taula"/>
+<l:gentext key="Table" text="Taula"/>
+<l:gentext key="task" text="tasca"/>
+<l:gentext key="Task" text="Tasca"/>
+<l:gentext key="tip" text="suggeriment"/>
+<l:gentext key="TIP" text="SUGGERIMENT"/>
+<l:gentext key="Tip" text="Suggeriment"/>
+<l:gentext key="Warning" text="Avís"/>
+<l:gentext key="warning" text="avís"/>
+<l:gentext key="WARNING" text="AVÃS"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="per"/>
+<l:gentext key="Edited" text="Editat"/>
+<l:gentext key="edited" text="editat"/>
+<l:gentext key="Editedby" text="Editat per"/>
+<l:gentext key="editedby" text="editat per"/>
+<l:gentext key="in" text="a"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="notes"/>
+<l:gentext key="Notes" text="Notes"/>
+<l:gentext key="Pgs" text="Pàgs."/>
+<l:gentext key="pgs" text="pàgs."/>
+<l:gentext key="Revisedby" text="Revisat per: "/>
+<l:gentext key="revisedby" text="revisat per: "/>
+<l:gentext key="TableNotes" text="Notes de taula"/>
+<l:gentext key="tablenotes" text="notes de taula"/>
+<l:gentext key="TableofContents" text="Sumari"/>
+<l:gentext key="tableofcontents" text="sumari"/>
+<l:gentext key="unexpectedelementname" text="nom d'element inesperat"/>
+<l:gentext key="unsupported" text="no reconeguda"/>
+<l:gentext key="xrefto" text="xref a"/>
+<l:gentext key="Authors" text="Autors"/>
+<l:gentext key="copyeditor" text="Editor de copiat"/>
+<l:gentext key="graphicdesigner" text="Dissenyador gràfic"/>
+<l:gentext key="productioneditor" text="Editor de producció"/>
+<l:gentext key="technicaleditor" text="Editor tècnic"/>
+<l:gentext key="translator" text="Traductor"/>
+<l:gentext key="listofequations" text="llistat d'equacions"/>
+<l:gentext key="ListofEquations" text="Llistat d'equacions"/>
+<l:gentext key="ListofExamples" text="Llistat d'exemples"/>
+<l:gentext key="listofexamples" text="llistat d'exemples"/>
+<l:gentext key="ListofFigures" text="Llistat de figures"/>
+<l:gentext key="listoffigures" text="llistat de figures"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="llistat de taules"/>
+<l:gentext key="ListofTables" text="Llistat de taules"/>
+<l:gentext key="ListofUnknown" text="Llistat de desconegut"/>
+<l:gentext key="listofunknown" text="llistat de desconegut"/>
+<l:gentext key="nav-home" text="Inici"/>
+<l:gentext key="nav-next" text="Següent"/>
+<l:gentext key="nav-next-sibling" text="Avançar"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Retrocedir"/>
+<l:gentext key="nav-up" text="Pujar"/>
+<l:gentext key="nav-toc" text="Taula de continguts"/>
+<l:gentext key="Draft" text="Esborrany"/>
+<l:gentext key="above" text="dalt"/>
+<l:gentext key="below" text="baix"/>
+<l:gentext key="sectioncalled" text="secció anomenada"/>
+<l:gentext key="index symbols" text="Símbols"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzàèéíòóúñç"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÀÈÉÃÒÓÚÑÇ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="last-first"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apèndix %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítol %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equació %n. %t"/>
+<l:template name="example" text="Exemple %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procediment %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Producció %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Taula %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apèndix %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Capítol %n. %t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Resposta %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Pregunta %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pregunta %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text=" “%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Resposta %n"/>
+<l:template name="appendix" text="Apèndix %n"/>
+<l:template name="bridgehead" text="Secció %n"/>
+<l:template name="chapter" text="Capítol %n"/>
+<l:template name="equation" text="Equació %n"/>
+<l:template name="example" text="Exemple %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Part %n"/>
+<l:template name="procedure" text="Procediment %n"/>
+<l:template name="productionset" text="Producció %n"/>
+<l:template name="qandadiv" text="Pregunta i Resposta %n"/>
+<l:template name="qandaentry" text="Pregunta %n"/>
+<l:template name="question" text="Pregunta %n"/>
+<l:template name="sect1" text="Secció %n"/>
+<l:template name="sect2" text="Secció %n"/>
+<l:template name="sect3" text="Secció %n"/>
+<l:template name="sect4" text="Secció %n"/>
+<l:template name="sect5" text="Secció %n"/>
+<l:template name="section" text="Secció %n"/>
+<l:template name="table" text="Taula %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apèndix %n, %t"/>
+<l:template name="bridgehead" text="Secció %n, “%tâ€"/>
+<l:template name="chapter" text="Capítol %n, %t"/>
+<l:template name="equation" text="Equació %n, “%tâ€"/>
+<l:template name="example" text="Exemple %n, “%tâ€"/>
+<l:template name="figure" text="Figura %n, “%tâ€"/>
+<l:template name="part" text="Part %n, “%tâ€"/>
+<l:template name="procedure" text="Procediment %n, “%tâ€"/>
+<l:template name="productionset" text="Producció %n, “%tâ€"/>
+<l:template name="qandadiv" text="Pregunta i Resposta %n, “%tâ€"/>
+<l:template name="refsect1" text="secció anomenada “%tâ€"/>
+<l:template name="refsect2" text="secció anomenada “%tâ€"/>
+<l:template name="refsect3" text="secció anomenada “%tâ€"/>
+<l:template name="refsection" text="secció anomenada “%tâ€"/>
+<l:template name="sect1" text="Secció %n, “%tâ€"/>
+<l:template name="sect2" text="Secció %n, “%tâ€"/>
+<l:template name="sect3" text="Secció %n, “%tâ€"/>
+<l:template name="sect4" text="Secció %n, “%tâ€"/>
+<l:template name="sect5" text="Secció %n, “%tâ€"/>
+<l:template name="section" text="Secció %n, “%tâ€"/>
+<l:template name="simplesect" text="secció anomenada “%tâ€"/>
+<l:template name="table" text="Taula %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Veure %t."/>
+<l:template name="seealso" text="Veure també %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiència: "/>
+<l:template name="MsgLevel" text="Nivell: "/>
+<l:template name="MsgOrig" text="Origen: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Gener"/>
+<l:template name="February" text="Febrer"/>
+<l:template name="March" text="Març"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Maig"/>
+<l:template name="June" text="Juny"/>
+<l:template name="July" text="Juliol"/>
+<l:template name="August" text="Agost"/>
+<l:template name="September" text="Setembre"/>
+<l:template name="October" text="Octubre"/>
+<l:template name="November" text="Novembre"/>
+<l:template name="December" text="Desembre"/>
+<l:template name="Monday" text="Dilluns"/>
+<l:template name="Tuesday" text="Dimarts"/>
+<l:template name="Wednesday" text="Dimecres"/>
+<l:template name="Thursday" text="Dijous"/>
+<l:template name="Friday" text="Divendres"/>
+<l:template name="Saturday" text="Dissabte"/>
+<l:template name="Sunday" text="Diumenge"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Gen"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Abr"/>
+<l:template name="May" text="Maig"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Des"/>
+<l:template name="Mon" text="Dl"/>
+<l:template name="Tue" text="Dt"/>
+<l:template name="Wed" text="Dx"/>
+<l:template name="Thu" text="Dj"/>
+<l:template name="Fri" text="Dv"/>
+<l:template name="Sat" text="Ds"/>
+<l:template name="Sun" text="Dg"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0403 Catalan"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Símbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml
new file mode 100644
index 0000000..a12a84f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml
@@ -0,0 +1,185 @@
+<?xml version="1.0"?>
+
+<reference xml:id="charmap">
+ <info>
+ <title>Common » Character-Map Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ character-map templates in the DocBook XSL Stylesheets.</para>
+
+ <note>
+
+<para>These templates are defined in a separate file from the set
+ of “common†templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+
+
+<para>The character-map templates don’t import or include
+ any DocBook XSL stylesheet parameters, so the
+ character-map templates can be used without importing the
+ whole set of parameters.</para>
+
+ </note>
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.apply-character-map">
+<refnamediv>
+<refname>apply-character-map</refname>
+<refpurpose>Applies an XSLT character map</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="apply-character-map"&gt;
+&lt;xsl:param name="content"/&gt;
+&lt;xsl:param name="map.contents"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template applies an <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character map</link>; that is, it causes certain
+ individual characters to be substituted with strings of one
+ or more characters. It is useful mainly for replacing
+ multiple “special†characters or symbols in the same target
+ content. It uses the value of
+ <parameter>map.contents</parameter> to do substitution on
+ <parameter>content</parameter>, and then returns the
+ modified contents.</para>
+
+ <note>
+
+<para>This template is a very slightly modified version of
+ Jeni Tennison’s <function>replace_strings</function>
+ template in the <link xlink:href="http://www.dpawson.co.uk/xsl/sect2/StringReplace.html#d9351e13">multiple string replacements</link> section of Dave Pawson’s
+ <link xlink:href="http://www.dpawson.co.uk/xsl/index.html">XSLT FAQ</link>.</para>
+
+
+<para>The <function>apply-string-subst-map</function>
+ template is essentially the same template as the
+ <function>apply-character-map</function> template; the
+ only difference is that in the map that
+ <function>apply-string-subst-map</function> expects, <tag class="attribute">oldstring</tag> and <tag class="attribute">newstring</tag> attributes are used
+ instead of <tag class="attribute">character</tag> and <tag class="attribute">string</tag> attributes.</para>
+
+ </note>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>content</term>
+ <listitem>
+
+<para>The content on which to perform the character-map
+ substitution.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>map.contents</term>
+ <listitem>
+
+<para>A node set of elements, with each element having
+ the following attributes:
+
+<itemizedlist>
+ <listitem>
+ <simpara><tag class="attribute">character</tag>, a
+ character to be replaced</simpara>
+ </listitem>
+ <listitem>
+ <simpara><tag class="attribute">string</tag>, a
+ string with which to replace <tag class="attribute">character</tag></simpara>
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.read-character-map">
+<refnamediv>
+<refname>read-character-map</refname>
+<refpurpose>Reads in all or part of an XSLT character map</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="read-character-map"&gt;
+&lt;xsl:param name="use.subset"/&gt;
+&lt;xsl:param name="subset.profile"/&gt;
+&lt;xsl:param name="uri"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The XSLT 2.0 specification describes <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">character maps</link> and explains how they may be used
+ to allow a specific character appearing in a text or
+ attribute node in a final result tree to be substituted by
+ a specified string of characters during serialization. The
+ <function>read-character-map</function> template provides a
+ means for reading and using character maps with XSLT
+ 1.0-based tools.</para>
+
+
+<para>This template reads the character-map contents from
+ <parameter>uri</parameter> (in full or in part, depending on
+ the value of the <parameter>use.subset</parameter>
+ parameter), then passes those contents to the
+ <function>apply-character-map</function> template, along with
+ <parameter>content</parameter>, the data on which to perform
+ the character substitution.</para>
+
+
+<para>Using the character map “in part†means that it uses only
+ those <tag>output-character</tag> elements that match the
+ XPath expression given in the value of the
+ <parameter>subset.profile</parameter> parameter. The current
+ implementation of that capability here relies on the
+ <function>evaluate</function> extension XSLT function.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>use.subset</term>
+ <listitem>
+
+<para>Specifies whether to use a subset of the character
+ map instead of the whole map; boolean
+ <literal>0</literal> or <literal>1</literal></para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>subset.profile</term>
+ <listitem>
+
+<para>XPath expression that specifies what subset of the
+ character map to use</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>uri</term>
+ <listitem>
+
+<para>URI for a character map</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl
new file mode 100644
index 0000000..3e0f5d4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl
@@ -0,0 +1,221 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+<doc:reference xmlns="" xml:id="charmap">
+ <info>
+ <title>Common » Character-Map Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the
+ character-map templates in the DocBook XSL Stylesheets.</para>
+ <note>
+ <para>These templates are defined in a separate file from the set
+ of “common†templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+ <para>The character-map templates don’t import or include
+ any DocBook XSL stylesheet parameters, so the
+ character-map templates can be used without importing the
+ whole set of parameters.</para>
+ </note>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ===================================== -->
+<doc:template name="apply-character-map" xmlns="">
+ <refpurpose>Applies an XSLT character map</refpurpose>
+ <refdescription id="apply-character-map-desc">
+ <para>This template applies an <link
+ xlink:href="http://www.w3.org/TR/xslt20/#character-maps"
+ >XSLT character map</link>; that is, it causes certain
+ individual characters to be substituted with strings of one
+ or more characters. It is useful mainly for replacing
+ multiple “special†characters or symbols in the same target
+ content. It uses the value of
+ <parameter>map.contents</parameter> to do substitution on
+ <parameter>content</parameter>, and then returns the
+ modified contents.</para>
+ <note>
+ <para>This template is a very slightly modified version of
+ Jeni Tennison’s <function>replace_strings</function>
+ template in the <link
+ xlink:href="http://www.dpawson.co.uk/xsl/sect2/StringReplace.html#d9351e13"
+ >multiple string replacements</link> section of Dave Pawson’s
+ <link xlink:href="http://www.dpawson.co.uk/xsl/index.html"
+ >XSLT FAQ</link>.</para>
+ <para>The <function>apply-string-subst-map</function>
+ template is essentially the same template as the
+ <function>apply-character-map</function> template; the
+ only difference is that in the map that
+ <function>apply-string-subst-map</function> expects, <tag
+ class="attribute">oldstring</tag> and <tag
+ class="attribute">newstring</tag> attributes are used
+ instead of <tag class="attribute">character</tag> and <tag
+ class="attribute">string</tag> attributes.</para>
+ </note>
+ </refdescription>
+ <refparameter id="apply-character-map-params">
+ <variablelist>
+ <varlistentry><term>content</term>
+ <listitem>
+ <para>The content on which to perform the character-map
+ substitution.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>map.contents</term>
+ <listitem>
+ <para>A node set of elements, with each element having
+ the following attributes:
+ <itemizedlist>
+ <listitem>
+ <simpara><tag class="attribute">character</tag>, a
+ character to be replaced</simpara>
+ </listitem>
+ <listitem>
+ <simpara><tag class="attribute">string</tag>, a
+ string with which to replace <tag
+ class="attribute">character</tag></simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:template>
+<xsl:template name="apply-character-map">
+ <xsl:param name="content"/>
+ <xsl:param name="map.contents"/>
+ <xsl:variable name="replaced_text">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content" />
+ <xsl:with-param name="target"
+ select="$map.contents[1]/@character" />
+ <xsl:with-param name="replacement"
+ select="$map.contents[1]/@string" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$map.contents[2]">
+ <xsl:call-template name="apply-character-map">
+ <xsl:with-param name="content" select="$replaced_text" />
+ <xsl:with-param name="map.contents"
+ select="$map.contents[position() > 1]" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$replaced_text" />
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+<doc:template name="read-character-map" xmlns="">
+ <refpurpose>Reads in all or part of an XSLT character map</refpurpose>
+ <refdescription id="read-character-map-desc">
+ <para>The XSLT 2.0 specification describes <link
+ xlink:href="http://www.w3.org/TR/xslt20/#character-maps"
+ >character maps</link> and explains how they may be used
+ to allow a specific character appearing in a text or
+ attribute node in a final result tree to be substituted by
+ a specified string of characters during serialization. The
+ <function>read-character-map</function> template provides a
+ means for reading and using character maps with XSLT
+ 1.0-based tools.</para>
+ <para>This template reads the character-map contents from
+ <parameter>uri</parameter> (in full or in part, depending on
+ the value of the <parameter>use.subset</parameter>
+ parameter), then passes those contents to the
+ <function>apply-character-map</function> template, along with
+ <parameter>content</parameter>, the data on which to perform
+ the character substitution.</para>
+ <para>Using the character map “in part†means that it uses only
+ those <tag>output-character</tag> elements that match the
+ XPath expression given in the value of the
+ <parameter>subset.profile</parameter> parameter. The current
+ implementation of that capability here relies on the
+ <function>evaluate</function> extension XSLT function.</para>
+ </refdescription>
+ <refparameter id="read-character-map-params">
+ <variablelist>
+ <varlistentry><term>use.subset</term>
+ <listitem>
+ <para>Specifies whether to use a subset of the character
+ map instead of the whole map; boolean
+ <literal>0</literal> or <literal>1</literal></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>subset.profile</term>
+ <listitem>
+ <para>XPath expression that specifies what subset of the
+ character map to use</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>uri</term>
+ <listitem>
+ <para>URI for a character map</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:template>
+<xsl:template name="read-character-map">
+ <xsl:param name="use.subset"/>
+ <xsl:param name="subset.profile"/>
+ <xsl:param name="uri"/>
+ <xsl:choose>
+ <xsl:when test="$use.subset != 0">
+ <!-- *use a subset of the character map instead of the full map -->
+ <xsl:choose>
+ <!-- * xsltproc and Xalan both support dyn:evaluate() -->
+ <xsl:when test="function-available('dyn:evaluate')">
+ <xsl:copy-of select="document($uri)//*[local-name()='output-character']
+ [dyn:evaluate($subset.profile)]"/>
+ </xsl:when>
+ <!-- * Saxon has its own evaluate() and doesn't support dyn:evaluate() -->
+ <xsl:when test="function-available('saxon:evaluate')">
+ <xsl:copy-of select="document($uri)//*[local-name()='output-character']
+ [saxon:evaluate($subset.profile)]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"
+>
+Error: To process character-map subsets, you must use an XSLT engine
+that supports the evaluate() XSLT extension function. Your XSLT engine
+does not support it.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- *value of $use.subset is non-zero, so use the full map -->
+ <xsl:copy-of select="document($uri)//*[local-name()='output-character']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml
new file mode 100644
index 0000000..da79980
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml
@@ -0,0 +1,622 @@
+<?xml version="1.0"?>
+
+<reference xml:id="base">
+ <info>
+ <title>Common » Base Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: common.xsl 8784 2010-07-28 12:32:54Z mzjn $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the “baseâ€
+ set of common templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.is.component">
+<refnamediv>
+<refname>is.component</refname>
+<refpurpose>Tests if a given node is a component-level element</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.component"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The node which is to be tested.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.is.section">
+<refnamediv>
+<refname>is.section</refname>
+<refpurpose>Tests if a given node is a section-level element</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.section"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The node which is to be tested.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.section.level">
+<refnamediv>
+<refname>section.level</refname>
+<refpurpose>Returns the hierarchical level of a section</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="section.level"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template calculates the hierarchical level of a section.
+The element <tag>sect1</tag> is at level 1, <tag>sect2</tag> is
+at level 2, etc.</para>
+
+
+
+<para>Recursive sections are calculated down to the fifth level.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The section node for which the level should be calculated.
+Defaults to the context node.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The section level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.qanda.section.level">
+<refnamediv>
+<refname>qanda.section.level</refname>
+<refpurpose>Returns the hierarchical level of a QandASet</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="qanda.section.level"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template calculates the hierarchical level of a QandASet.
+</para>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.select.mediaobject">
+<refnamediv>
+<refname>select.mediaobject</refname>
+<refpurpose>Selects and processes an appropriate media object from a list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.mediaobject"&gt;
+&lt;xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and processes
+the "right" object.</para>
+
+
+
+<para>This template relies on a template named
+"select.mediaobject.index" to determine which object
+in the list is appropriate.</para>
+
+
+
+<para>If no acceptable object is located, nothing happens.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+
+<para>The node list of potential objects to examine.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>Calls &lt;xsl:apply-templates&gt; on the selected object.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.select.mediaobject.index">
+<refnamediv>
+<refname>select.mediaobject.index</refname>
+<refpurpose>Selects the position of the appropriate media object from a list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.mediaobject.index"&gt;
+&lt;xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/&gt;
+&lt;xsl:param name="count"&gt;1&lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and determines
+the "right" object. It returns the position of that object
+to be used by the calling template.</para>
+
+
+
+<para>If the parameter <parameter>use.role.for.mediaobject</parameter>
+is nonzero, then it first checks for an object with
+a role attribute of the appropriate value. It takes the first
+of those. Otherwise, it takes the first acceptable object
+through a recursive pass through the list.</para>
+
+
+
+<para>This template relies on a template named "is.acceptable.mediaobject"
+to determine if a given object is an acceptable graphic. The semantics
+of media objects is that the first acceptable graphic should be used.
+</para>
+
+
+
+<para>If no acceptable object is located, no index is returned.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+
+<para>The node list of potential objects to examine.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>count</term>
+<listitem>
+
+<para>The position in the list currently being considered by the
+recursive process.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>Returns the position in the original list of the selected object.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.is.acceptable.mediaobject">
+<refnamediv>
+<refname>is.acceptable.mediaobject</refname>
+<refpurpose>Returns '1' if the specified media object is recognized</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.acceptable.mediaobject"&gt;
+&lt;xsl:param name="object"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template examines a media object and returns '1' if the
+object is recognized as a graphic.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>object</term>
+<listitem>
+
+<para>The media object to consider.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>0 or 1</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.check.id.unique">
+<refnamediv>
+<refname>check.id.unique</refname>
+<refpurpose>Warn users about references to non-unique IDs</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="check.id.unique"&gt;
+&lt;xsl:param name="linkend"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.id.unique</function> prints
+a warning message to the user if either the ID does not exist or
+the ID is not unique.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.check.idref.targets">
+<refnamediv>
+<refname>check.idref.targets</refname>
+<refpurpose>Warn users about incorrectly typed references</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="check.idref.targets"&gt;
+&lt;xsl:param name="linkend"/&gt;
+&lt;xsl:param name="element-list"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.idref.targets</function> makes sure that the element
+pointed to by the link is one of the elements listed in
+<varname>element-list</varname> and warns the user otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.copyright.years">
+<refnamediv>
+<refname>copyright.years</refname>
+<refpurpose>Print a set of years with collapsed ranges</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="copyright.years"&gt;
+&lt;xsl:param name="years"/&gt;
+&lt;xsl:param name="print.ranges" select="1"/&gt;
+&lt;xsl:param name="single.year.ranges" select="0"/&gt;
+&lt;xsl:param name="firstyear" select="0"/&gt;
+&lt;xsl:param name="nextyear" select="0"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template prints a list of year elements with consecutive
+years printed as a range. In other words:</para>
+
+
+<screen>&lt;year&gt;1992&lt;/year&gt;
+&lt;year&gt;1993&lt;/year&gt;
+&lt;year&gt;1994&lt;/year&gt;</screen>
+
+
+<para>is printed <quote>1992-1994</quote>, whereas:</para>
+
+
+<screen>&lt;year&gt;1992&lt;/year&gt;
+&lt;year&gt;1994&lt;/year&gt;</screen>
+
+
+<para>is printed <quote>1992, 1994</quote>.</para>
+
+
+
+<para>This template assumes that all the year elements contain only
+decimal year numbers, that the elements are sorted in increasing
+numerical order, that there are no duplicates, and that all the years
+are expressed in full <quote>century+year</quote>
+(<quote>1999</quote> not <quote>99</quote>) notation.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>years</term>
+<listitem>
+
+<para>The initial set of year elements.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>print.ranges</term>
+<listitem>
+
+<para>If non-zero, multi-year ranges are collapsed. If zero, all years
+are printed discretely.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>single.year.ranges</term>
+<listitem>
+
+<para>If non-zero, two consecutive years will be printed as a range,
+otherwise, they will be printed discretely. In other words, a single
+year range is <quote>1991-1992</quote> but discretely it's
+<quote>1991, 1992</quote>.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns the formatted list of years.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.find.path.params">
+<refnamediv>
+<refname>find.path.params</refname>
+<refpurpose>Search in a table for the "best" match for the node</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="find.path.params"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+&lt;xsl:param name="table" select="''"/&gt;
+&lt;xsl:param name="location"&gt;
+ &lt;xsl:call-template name="xpath.location"&gt;
+ &lt;xsl:with-param name="node" select="$node"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template searches in a table for the value that most-closely
+(in the typical best-match sense of XSLT) matches the current (element)
+node location.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.string.upper">
+<refnamediv>
+<refname>string.upper</refname>
+<refpurpose>Converts a string to all uppercase letters</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="string.upper"&gt;
+&lt;xsl:param name="string" select="''"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Given a string, this template does a language-aware conversion
+of that string to all uppercase letters, based on the values of the
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal>. All other characters are left
+unchanged.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+
+<para>The string to convert to uppercase.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.string.lower">
+<refnamediv>
+<refname>string.lower</refname>
+<refpurpose>Converts a string to all lowercase letters</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="string.lower"&gt;
+&lt;xsl:param name="string" select="''"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Given a string, this template does a language-aware conversion
+of that string to all lowercase letters, based on the values of the
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal>. All other characters are left
+unchanged.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+
+<para>The string to convert to lowercase.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.select.choice.separator">
+<refnamediv>
+<refname>select.choice.separator</refname>
+<refpurpose>Returns localized choice separator</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.choice.separator"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template enables auto-generation of an appropriate
+ localized "choice" separator (for example, "and" or "or") before
+ the final item in an inline list (though it could also be useful
+ for generating choice separators for non-inline lists).</para>
+
+
+<para>It currently works by evaluating a processing instruction
+ (PI) of the form &lt;?dbchoice choice="foo"?&gt; :
+
+<itemizedlist>
+ <listitem>
+ <simpara>if the value of the <tag>choice</tag>
+ pseudo-attribute is "and" or "or", returns a localized "and"
+ or "or"</simpara>
+ </listitem>
+ <listitem>
+ <simpara>otherwise returns the literal value of the
+ <tag>choice</tag> pseudo-attribute</simpara>
+ </listitem>
+ </itemizedlist>
+
+ The latter is provided only as a temporary workaround because the
+ locale files do not currently have translations for the word
+ <wordasword>or</wordasword>. So if you want to generate a a
+ logical "or" separator in French (for example), you currently need
+ to do this:
+ <literallayout>&lt;?dbchoice choice="ou"?&gt;</literallayout>
+ </para>
+
+ <warning>
+
+<para>The <tag>dbchoice</tag> processing instruction is
+ an unfortunate hack; support for it may disappear in the future
+ (particularly if and when a more appropriate means for marking
+ up "choice" lists becomes available in DocBook).</para>
+
+ </warning>
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.evaluate.info.profile">
+<refnamediv>
+<refname>evaluate.info.profile</refname>
+<refpurpose>Evaluates an info profile</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="evaluate.info.profile"&gt;
+&lt;xsl:param name="profile"/&gt;
+&lt;xsl:param name="info"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template evaluates an "info profile" matching the XPath
+ expression given by the <parameter>profile</parameter>
+ parameter. It relies on the XSLT <function>evaluate()</function>
+ extension function.</para>
+
+
+
+<para>The value of the <parameter>profile</parameter> parameter
+ can include the literal string <literal>$info</literal>. If found
+ in the value of the <parameter>profile</parameter> parameter, the
+ literal string <literal>$info</literal> string is replaced with
+ the value of the <parameter>info</parameter> parameter, which
+ should be a set of <replaceable>*info</replaceable> nodes; the
+ expression is then evaluated using the XSLT
+ <function>evaluate()</function> extension function.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>profile</term>
+ <listitem>
+
+<para>A string representing an XPath expression </para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of *info nodes</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a node (the result of evaluating the
+ <parameter>profile</parameter> parameter)</para>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl
new file mode 100644
index 0000000..ab8fbb0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl
@@ -0,0 +1,2039 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ exclude-result-prefixes="doc dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: common.xsl 8784 2010-07-28 12:32:54Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="" xml:id="base">
+ <info>
+ <title>Common » Base Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: common.xsl 8784 2010-07-28 12:32:54Z mzjn $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the “baseâ€
+ set of common templates in the DocBook XSL Stylesheets.</para>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+<!-- Establish strip/preserve whitespace rules -->
+
+<xsl:preserve-space elements="*"/>
+
+<xsl:strip-space elements="
+abstract affiliation anchor answer appendix area areaset areaspec
+artheader article audiodata audioobject author authorblurb authorgroup
+beginpage bibliodiv biblioentry bibliography biblioset blockquote book
+bookbiblio bookinfo callout calloutlist caption caution chapter
+citerefentry cmdsynopsis co collab colophon colspec confgroup
+copyright dedication docinfo editor entrytbl epigraph equation
+example figure footnote footnoteref formalpara funcprototype
+funcsynopsis glossary glossdef glossdiv glossentry glosslist graphicco
+group highlights imagedata imageobject imageobjectco important index
+indexdiv indexentry indexterm info informalequation informalexample
+informalfigure informaltable inlineequation inlinemediaobject
+itemizedlist itermset keycombo keywordset legalnotice listitem lot
+mediaobject mediaobjectco menuchoice msg msgentry msgexplan msginfo
+msgmain msgrel msgset msgsub msgtext note objectinfo
+orderedlist othercredit part partintro preface printhistory procedure
+programlistingco publisher qandadiv qandaentry qandaset question
+refentry reference refmeta refnamediv refsection refsect1 refsect1info refsect2
+refsect2info refsect3 refsect3info refsynopsisdiv refsynopsisdivinfo
+revhistory revision row sbr screenco screenshot sect1 sect1info sect2
+sect2info sect3 sect3info sect4 sect4info sect5 sect5info section
+sectioninfo seglistitem segmentedlist seriesinfo set setindex setinfo
+shortcut sidebar simplelist simplesect spanspec step subject
+subjectset substeps synopfragment table tbody textobject tfoot tgroup
+thead tip toc tocchap toclevel1 toclevel2 toclevel3 toclevel4
+toclevel5 tocpart varargs variablelist varlistentry videodata
+videoobject void warning subjectset
+
+classsynopsis
+constructorsynopsis
+destructorsynopsis
+fieldsynopsis
+methodparam
+methodsynopsis
+ooclass
+ooexception
+oointerface
+simplemsgentry
+manvolnum
+"/>
+<!-- ====================================================================== -->
+
+<doc:template name="is.component" xmlns="">
+<refpurpose>Tests if a given node is a component-level element</refpurpose>
+
+<refdescription id="is.component-desc">
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+</refdescription>
+
+<refparameter id="is.component-params">
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The node which is to be tested.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="is.component-returns">
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="is.component">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($node) = 'appendix'
+ or local-name($node) = 'article'
+ or local-name($node) = 'chapter'
+ or local-name($node) = 'preface'
+ or local-name($node) = 'bibliography'
+ or local-name($node) = 'glossary'
+ or local-name($node) = 'index'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="is.section" xmlns="">
+<refpurpose>Tests if a given node is a section-level element</refpurpose>
+
+<refdescription id="is.section-desc">
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+</refdescription>
+
+<refparameter id="is.section-params">
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The node which is to be tested.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="is.section-returns">
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="is.section">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($node) = 'section'
+ or local-name($node) = 'sect1'
+ or local-name($node) = 'sect2'
+ or local-name($node) = 'sect3'
+ or local-name($node) = 'sect4'
+ or local-name($node) = 'sect5'
+ or local-name($node) = 'refsect1'
+ or local-name($node) = 'refsect2'
+ or local-name($node) = 'refsect3'
+ or local-name($node) = 'simplesect'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="section.level" xmlns="">
+<refpurpose>Returns the hierarchical level of a section</refpurpose>
+
+<refdescription id="section.level-desc">
+<para>This template calculates the hierarchical level of a section.
+The element <tag>sect1</tag> is at level 1, <tag>sect2</tag> is
+at level 2, etc.</para>
+
+<para>Recursive sections are calculated down to the fifth level.</para>
+</refdescription>
+
+<refparameter id="section.level-params">
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The section node for which the level should be calculated.
+Defaults to the context node.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="section.level-returns">
+<para>The section level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="section.level">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='sect1'">1</xsl:when>
+ <xsl:when test="local-name($node)='sect2'">2</xsl:when>
+ <xsl:when test="local-name($node)='sect3'">3</xsl:when>
+ <xsl:when test="local-name($node)='sect4'">4</xsl:when>
+ <xsl:when test="local-name($node)='sect5'">5</xsl:when>
+ <xsl:when test="local-name($node)='section'">
+ <xsl:choose>
+ <xsl:when test="$node/../../../../../../section">6</xsl:when>
+ <xsl:when test="$node/../../../../../section">5</xsl:when>
+ <xsl:when test="$node/../../../../section">4</xsl:when>
+ <xsl:when test="$node/../../../section">3</xsl:when>
+ <xsl:when test="$node/../../section">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name($node)='refsect1' or
+ local-name($node)='refsect2' or
+ local-name($node)='refsect3' or
+ local-name($node)='refsection' or
+ local-name($node)='refsynopsisdiv'">
+ <xsl:call-template name="refentry.section.level">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node)='simplesect'">
+ <xsl:choose>
+ <xsl:when test="$node/../../sect1">2</xsl:when>
+ <xsl:when test="$node/../../sect2">3</xsl:when>
+ <xsl:when test="$node/../../sect3">4</xsl:when>
+ <xsl:when test="$node/../../sect4">5</xsl:when>
+ <xsl:when test="$node/../../sect5">5</xsl:when>
+ <xsl:when test="$node/../../section">
+ <xsl:choose>
+ <xsl:when test="$node/../../../../../section">5</xsl:when>
+ <xsl:when test="$node/../../../../section">4</xsl:when>
+ <xsl:when test="$node/../../../section">3</xsl:when>
+ <xsl:otherwise>2</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template><!-- section.level -->
+
+<doc:template name="qanda.section.level" xmlns="">
+<refpurpose>Returns the hierarchical level of a QandASet</refpurpose>
+
+<refdescription id="qanda.section.level-desc">
+<para>This template calculates the hierarchical level of a QandASet.
+</para>
+</refdescription>
+
+<refreturn id="qanda.section.level-returns">
+<para>The level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="qanda.section.level">
+ <xsl:variable name="section"
+ select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect5
+ |ancestor::sect4
+ |ancestor::sect3
+ |ancestor::sect2
+ |ancestor::sect1
+ |ancestor::refsect3
+ |ancestor::refsect2
+ |ancestor::refsect1)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($section) = '0'">1</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Finds the total section depth of a section in a refentry -->
+<xsl:template name="refentry.section.level">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="RElevel">
+ <xsl:call-template name="refentry.level">
+ <xsl:with-param name="node" select="$node/ancestor::refentry[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="levelinRE">
+ <xsl:choose>
+ <xsl:when test="local-name($node)='refsynopsisdiv'">1</xsl:when>
+ <xsl:when test="local-name($node)='refsect1'">1</xsl:when>
+ <xsl:when test="local-name($node)='refsect2'">2</xsl:when>
+ <xsl:when test="local-name($node)='refsect3'">3</xsl:when>
+ <xsl:when test="local-name($node)='refsection'">
+ <xsl:choose>
+ <xsl:when test="$node/../../../../../refsection">5</xsl:when>
+ <xsl:when test="$node/../../../../refsection">4</xsl:when>
+ <xsl:when test="$node/../../../refsection">3</xsl:when>
+ <xsl:when test="$node/../../refsection">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$levelinRE + $RElevel"/>
+</xsl:template>
+
+<!-- Finds the section depth of a refentry -->
+<xsl:template name="refentry.level">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="container"
+ select="($node/ancestor::section |
+ $node/ancestor::sect1 |
+ $node/ancestor::sect2 |
+ $node/ancestor::sect3 |
+ $node/ancestor::sect4 |
+ $node/ancestor::sect5)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$container">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="qandadiv.section.level">
+ <xsl:variable name="section.level">
+ <xsl:call-template name="qanda.section.level"/>
+ </xsl:variable>
+ <xsl:variable name="anc.divs" select="ancestor::qandadiv"/>
+
+ <xsl:value-of select="count($anc.divs) + number($section.level)"/>
+</xsl:template>
+
+<xsl:template name="question.answer.label">
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="label" select="@label"/>
+
+<!--
+ (hnr (hierarchical-number-recursive (normalize "qandadiv") node))
+
+ (parsect (ancestor-member node (section-element-list)))
+
+ (defnum (if (and %qanda-inherit-numeration%
+ %section-autolabel%)
+ (if (node-list-empty? parsect)
+ (section-autolabel-prefix node)
+ (section-autolabel parsect))
+ ""))
+
+ (hnumber (let loop ((numlist hnr) (number defnum)
+ (sep (if (equal? defnum "") "" ".")))
+ (if (null? numlist)
+ number
+ (loop (cdr numlist)
+ (string-append number
+ sep
+ (number->string (car numlist)))
+ "."))))
+ (cnumber (child-number (parent node)))
+ (number (string-append hnumber
+ (if (equal? hnumber "")
+ ""
+ ".")
+ (number->string cnumber))))
+-->
+
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'qanda'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'question'">question</xsl:when>
+ <xsl:when test="local-name(.) = 'answer'">answer</xsl:when>
+ <xsl:when test="local-name(.) = 'qandadiv'">qandadiv</xsl:when>
+ <xsl:otherwise>qandaset</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$deflabel = 'label'">
+ <xsl:value-of select="$label"/>
+ </xsl:when>
+ <xsl:when test="$deflabel = 'number'
+ and local-name(.) = 'question'">
+ <xsl:apply-templates select="ancestor::qandaset[1]"
+ mode="number"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::qandadiv">
+ <xsl:apply-templates select="ancestor::qandadiv[1]"
+ mode="number"/>
+ <xsl:apply-templates select="ancestor::qandaentry"
+ mode="number"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="ancestor::qandaentry"
+ mode="number"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- nothing -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="number">
+ <!-- FIXME: -->
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="number">
+ <xsl:number level="multiple" from="qandaset" format="1."/>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="number">
+ <xsl:choose>
+ <xsl:when test="ancestor::qandadiv">
+ <xsl:number level="single" from="qandadiv" format="1."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="single" from="qandaset" format="1."/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="object.id">
+ <xsl:param name="object" select="."/>
+ <xsl:choose>
+ <xsl:when test="$object/@id">
+ <xsl:value-of select="$object/@id"/>
+ </xsl:when>
+ <xsl:when test="$object/@xml:id">
+ <xsl:value-of select="$object/@xml:id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id($object)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="person.name">
+ <!-- Formats a personal name. Handles corpauthor as a special case. -->
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$node/@role">
+ <xsl:value-of select="$node/@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'styles'"/>
+ <xsl:with-param name="name" select="'person-name'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- the personname element is a specialcase -->
+ <xsl:when test="$node/personname">
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$node/personname"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- handle corpauthor as a special case...-->
+ <!-- * MikeSmith 2007-06: I'm wondering if the person.name template -->
+ <!-- * actually ever gets called to handle corpauthor.. maybe -->
+ <!-- * we don't actually need to check for corpauthor here. -->
+ <xsl:when test="local-name($node)='corpauthor'">
+ <xsl:apply-templates select="$node"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- Handle case when personname contains only general markup (DocBook 5.0) -->
+ <xsl:when test="$node/self::personname and not($node/firstname or $node/honorific or $node/lineage or $node/othername or $node/surname)">
+ <xsl:apply-templates select="$node/node()"/>
+ </xsl:when>
+ <xsl:when test="$style = 'family-given'">
+ <xsl:call-template name="person.name.family-given">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$style = 'last-first'">
+ <xsl:call-template name="person.name.last-first">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name.first-last">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="person.name.family-given">
+ <xsl:param name="node" select="."/>
+
+ <!-- The family-given style applies a convention for identifying given -->
+ <!-- and family names in locales where it may be ambiguous -->
+ <xsl:apply-templates select="$node//surname[1]"/>
+
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="$node//firstname[1]"/>
+
+ <xsl:text> [FAMILY Given]</xsl:text>
+</xsl:template>
+
+<xsl:template name="person.name.last-first">
+ <xsl:param name="node" select="."/>
+
+ <xsl:apply-templates select="$node//surname[1]"/>
+
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="$node//firstname[1]"/>
+</xsl:template>
+
+<xsl:template name="person.name.first-last">
+ <xsl:param name="node" select="."/>
+
+ <xsl:if test="$node//honorific">
+ <xsl:apply-templates select="$node//honorific[1]"/>
+ <xsl:value-of select="$punct.honorific"/>
+ </xsl:if>
+
+ <xsl:if test="$node//firstname">
+ <xsl:if test="$node//honorific">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node//firstname[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node//othername and $author.othername.in.middle != 0">
+ <xsl:if test="$node//honorific or $node//firstname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node//othername[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node//surname">
+ <xsl:if test="$node//honorific or $node//firstname
+ or ($node//othername and $author.othername.in.middle != 0)">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node//surname[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node//lineage">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates select="$node//lineage[1]"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="person.name.list">
+ <!-- Return a formatted string representation of the contents of
+ the current element. The current element must contain one or
+ more AUTHORs, CORPAUTHORs, OTHERCREDITs, and/or EDITORs.
+
+ John Doe
+ or
+ John Doe and Jane Doe
+ or
+ John Doe, Jane Doe, and A. Nonymous
+ -->
+ <xsl:param name="person.list"
+ select="author|corpauthor|othercredit|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template><!-- person.name.list -->
+
+<!-- === synopsis ======================================================= -->
+<!-- The following definitions match those given in the reference
+ documentation for DocBook V3.0
+-->
+
+<xsl:variable name="arg.choice.opt.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.opt.close.str">]</xsl:variable>
+<xsl:variable name="arg.choice.req.open.str">{</xsl:variable>
+<xsl:variable name="arg.choice.req.close.str">}</xsl:variable>
+<xsl:variable name="arg.choice.plain.open.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.plain.close.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.def.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.def.close.str">]</xsl:variable>
+<xsl:variable name="arg.rep.repeat.str">...</xsl:variable>
+<xsl:variable name="arg.rep.norepeat.str"></xsl:variable>
+<xsl:variable name="arg.rep.def.str"></xsl:variable>
+<xsl:variable name="arg.or.sep"> | </xsl:variable>
+<xsl:variable name="cmdsynopsis.hanging.indent">4pi</xsl:variable>
+
+<!-- ====================================================================== -->
+
+<!--
+<xsl:template name="xref.g.subst">
+ <xsl:param name="string"></xsl:param>
+ <xsl:param name="target" select="."/>
+ <xsl:variable name="subst">%g</xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $subst)">
+ <xsl:value-of select="substring-before($string, $subst)"/>
+ <xsl:call-template name="gentext.element.name">
+ <xsl:with-param name="element.name" select="local-name($target)"/>
+ </xsl:call-template>
+ <xsl:call-template name="xref.g.subst">
+ <xsl:with-param name="string"
+ select="substring-after($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="xref.t.subst">
+ <xsl:param name="string"></xsl:param>
+ <xsl:param name="target" select="."/>
+ <xsl:variable name="subst">%t</xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $subst)">
+ <xsl:call-template name="xref.g.subst">
+ <xsl:with-param name="string"
+ select="substring-before($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="title.xref">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string"
+ select="substring-after($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xref.g.subst">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="xref.n.subst">
+ <xsl:param name="string"></xsl:param>
+ <xsl:param name="target" select="."/>
+ <xsl:variable name="subst">%n</xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $subst)">
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string"
+ select="substring-before($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="number.xref">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string"
+ select="substring-after($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="subst.xref.text">
+ <xsl:param name="xref.text"></xsl:param>
+ <xsl:param name="target" select="."/>
+
+ <xsl:call-template name="xref.n.subst">
+ <xsl:with-param name="string" select="$xref.text"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+</xsl:template>
+-->
+
+<!-- ====================================================================== -->
+
+<xsl:template name="filename-basename">
+ <!-- We assume all filenames are really URIs and use "/" -->
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="recurse" select="false()"/>
+
+ <xsl:choose>
+ <xsl:when test="substring-after($filename, '/') != ''">
+ <xsl:call-template name="filename-basename">
+ <xsl:with-param name="filename"
+ select="substring-after($filename, '/')"/>
+ <xsl:with-param name="recurse" select="true()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="filename-extension">
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="recurse" select="false()"/>
+
+ <!-- Make sure we only look at the base name... -->
+ <xsl:variable name="basefn">
+ <xsl:choose>
+ <xsl:when test="$recurse">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="filename-basename">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="substring-after($basefn, '.') != ''">
+ <xsl:call-template name="filename-extension">
+ <xsl:with-param name="filename"
+ select="substring-after($basefn, '.')"/>
+ <xsl:with-param name="recurse" select="true()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$recurse">
+ <xsl:value-of select="$basefn"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="select.mediaobject" xmlns="">
+<refpurpose>Selects and processes an appropriate media object from a list</refpurpose>
+
+<refdescription id="select.mediaobject-desc">
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and processes
+the "right" object.</para>
+
+<para>This template relies on a template named
+"select.mediaobject.index" to determine which object
+in the list is appropriate.</para>
+
+<para>If no acceptable object is located, nothing happens.</para>
+</refdescription>
+
+<refparameter id="select.mediaobject-params">
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+<para>The node list of potential objects to examine.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="select.mediaobject-returns">
+<para>Calls &lt;xsl:apply-templates&gt; on the selected object.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="select.mediaobject">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$mediaobject.index != ''">
+ <xsl:apply-templates select="$olist[position() = $mediaobject.index]"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="select.mediaobject.index" xmlns="">
+<refpurpose>Selects the position of the appropriate media object from a list</refpurpose>
+
+<refdescription id="select.mediaobject.index-desc">
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and determines
+the "right" object. It returns the position of that object
+to be used by the calling template.</para>
+
+<para>If the parameter <parameter>use.role.for.mediaobject</parameter>
+is nonzero, then it first checks for an object with
+a role attribute of the appropriate value. It takes the first
+of those. Otherwise, it takes the first acceptable object
+through a recursive pass through the list.</para>
+
+<para>This template relies on a template named "is.acceptable.mediaobject"
+to determine if a given object is an acceptable graphic. The semantics
+of media objects is that the first acceptable graphic should be used.
+</para>
+
+<para>If no acceptable object is located, no index is returned.</para>
+</refdescription>
+
+<refparameter id="select.mediaobject.index-params">
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+<para>The node list of potential objects to examine.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>count</term>
+<listitem>
+<para>The position in the list currently being considered by the
+recursive process.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="select.mediaobject.index-returns">
+<para>Returns the position in the original list of the selected object.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="select.mediaobject.index">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+ <xsl:param name="count">1</xsl:param>
+
+ <xsl:choose>
+ <!-- Test for objects preferred by role -->
+ <xsl:when test="$use.role.for.mediaobject != 0
+ and $preferred.mediaobject.role != ''
+ and $olist[@role = $preferred.mediaobject.role]">
+
+ <!-- Get the first hit's position index -->
+ <xsl:for-each select="$olist">
+ <xsl:if test="@role = $preferred.mediaobject.role and
+ not(preceding-sibling::*[@role = $preferred.mediaobject.role])">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+
+ <xsl:when test="$use.role.for.mediaobject != 0
+ and $olist[@role = $stylesheet.result.type]">
+ <!-- Get the first hit's position index -->
+ <xsl:for-each select="$olist">
+ <xsl:if test="@role = $stylesheet.result.type and
+ not(preceding-sibling::*[@role = $stylesheet.result.type])">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <!-- Accept 'html' for $stylesheet.result.type = 'xhtml' -->
+ <xsl:when test="$use.role.for.mediaobject != 0
+ and $stylesheet.result.type = 'xhtml'
+ and $olist[@role = 'html']">
+ <!-- Get the first hit's position index -->
+ <xsl:for-each select="$olist">
+ <xsl:if test="@role = 'html' and
+ not(preceding-sibling::*[@role = 'html'])">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+
+ <!-- If no selection by role, and there is only one object, use it -->
+ <xsl:when test="count($olist) = 1 and $count = 1">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- Otherwise select first acceptable object -->
+ <xsl:if test="$count &lt;= count($olist)">
+ <xsl:variable name="object" select="$olist[position()=$count]"/>
+
+ <xsl:variable name="useobject">
+ <xsl:choose>
+ <!-- The phrase is used only when contains TeX Math and output is FO -->
+ <xsl:when test="local-name($object)='textobject' and $object/phrase
+ and $object/@role='tex' and $stylesheet.result.type = 'fo'
+ and $tex.math.in.alt != ''">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- The phrase is never used -->
+ <xsl:when test="local-name($object)='textobject' and $object/phrase">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($object)='textobject'
+ and $object/ancestor::equation ">
+ <!-- The first textobject is not a reasonable fallback
+ for equation image -->
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- The first textobject is a reasonable fallback -->
+ <xsl:when test="local-name($object)='textobject'
+ and $object[not(@role) or @role!='tex']">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- don't use graphic when output is FO, TeX Math is used
+ and there is math in alt element -->
+ <xsl:when test="$object/ancestor::equation and
+ $object/ancestor::equation/alt[@role='tex']
+ and $stylesheet.result.type = 'fo'
+ and $tex.math.in.alt != ''">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- If there's only one object, use it -->
+ <xsl:when test="$count = 1 and count($olist) = 1">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- Otherwise, see if this one is a useable graphic -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- peek inside imageobjectco to simplify the test -->
+ <xsl:when test="local-name($object) = 'imageobjectco'">
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object/imageobject"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$useobject='1'">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="is.acceptable.mediaobject" xmlns="">
+<refpurpose>Returns '1' if the specified media object is recognized</refpurpose>
+
+<refdescription id="is.acceptable.mediaobject-desc">
+<para>This template examines a media object and returns '1' if the
+object is recognized as a graphic.</para>
+</refdescription>
+
+<refparameter id="is.acceptable.mediaobject-params">
+<variablelist>
+<varlistentry><term>object</term>
+<listitem>
+<para>The media object to consider.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="is.acceptable.mediaobject-returns">
+<para>0 or 1</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="is.acceptable.mediaobject">
+ <xsl:param name="object"></xsl:param>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="ext">
+ <xsl:call-template name="filename-extension">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- there will only be one -->
+ <xsl:variable name="data" select="$object/videodata
+ |$object/imagedata
+ |$object/audiodata"/>
+
+ <xsl:variable name="format" select="$data/@format"/>
+
+ <xsl:variable name="graphic.format">
+ <xsl:if test="$format">
+ <xsl:call-template name="is.graphic.format">
+ <xsl:with-param name="format" select="$format"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="graphic.ext">
+ <xsl:if test="$ext">
+ <xsl:call-template name="is.graphic.extension">
+ <xsl:with-param name="ext" select="$ext"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$use.svg = 0 and $format = 'SVG'">0</xsl:when>
+ <xsl:when xmlns:svg="http://www.w3.org/2000/svg"
+ test="$use.svg != 0 and $object/svg:*">1</xsl:when>
+ <xsl:when test="$graphic.format = '1'">1</xsl:when>
+ <xsl:when test="$graphic.ext = '1'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="mediaobject.filename">
+ <xsl:param name="object"></xsl:param>
+
+ <xsl:variable name="data" select="$object/videodata
+ |$object/imagedata
+ |$object/audiodata
+ |$object"/>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$data[@fileref]">
+ <xsl:apply-templates select="$data/@fileref"/>
+ </xsl:when>
+ <xsl:when test="$data[@entityref]">
+ <xsl:value-of select="unparsed-entity-uri($data/@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="real.ext">
+ <xsl:call-template name="filename-extension">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="ext">
+ <xsl:choose>
+ <xsl:when test="$real.ext != ''">
+ <xsl:value-of select="$real.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$graphic.default.extension"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="graphic.ext">
+ <xsl:call-template name="is.graphic.extension">
+ <xsl:with-param name="ext" select="$ext"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$real.ext = ''">
+ <xsl:choose>
+ <xsl:when test="$ext != ''">
+ <xsl:value-of select="$filename"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="not($graphic.ext)">
+ <xsl:choose>
+ <xsl:when test="$graphic.default.extension != ''">
+ <xsl:value-of select="$filename"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$graphic.default.extension"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="check.id.unique" xmlns="">
+<refpurpose>Warn users about references to non-unique IDs</refpurpose>
+<refdescription id="check.id.unique-desc">
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.id.unique</function> prints
+a warning message to the user if either the ID does not exist or
+the ID is not unique.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="check.id.unique">
+ <xsl:param name="linkend"></xsl:param>
+ <xsl:if test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no ID for constraint linkend: </xsl:text>
+ <xsl:value-of select="$linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ <!--
+ <xsl:message>
+ <xsl:text>If the ID exists in your document, did your </xsl:text>
+ <xsl:text>XSLT Processor load the DTD?</xsl:text>
+ </xsl:message>
+ -->
+ </xsl:if>
+
+ <xsl:if test="count($targets)>1">
+ <xsl:message>
+ <xsl:text>Warning: multiple "IDs" for constraint linkend: </xsl:text>
+ <xsl:value-of select="$linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<doc:template name="check.idref.targets" xmlns="">
+<refpurpose>Warn users about incorrectly typed references</refpurpose>
+<refdescription id="check.idref.targets-desc">
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.idref.targets</function> makes sure that the element
+pointed to by the link is one of the elements listed in
+<varname>element-list</varname> and warns the user otherwise.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="check.idref.targets">
+ <xsl:param name="linkend"></xsl:param>
+ <xsl:param name="element-list"></xsl:param>
+ <xsl:if test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($target) &gt; 0">
+ <xsl:if test="not(contains(concat(' ', $element-list, ' '), local-name($target)))">
+ <xsl:message>
+ <xsl:text>Error: linkend (</xsl:text>
+ <xsl:value-of select="$linkend"/>
+ <xsl:text>) points to "</xsl:text>
+ <xsl:value-of select="local-name($target)"/>
+ <xsl:text>" not (one of): </xsl:text>
+ <xsl:value-of select="$element-list"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Procedure Step Numeration -->
+
+<xsl:param name="procedure.step.numeration.formats" select="'1aiAI'"/>
+
+<xsl:template name="procedure.step.numeration">
+ <xsl:param name="context" select="."/>
+ <xsl:variable name="format.length"
+ select="string-length($procedure.step.numeration.formats)"/>
+ <xsl:choose>
+ <xsl:when test="local-name($context) = 'substeps'">
+ <xsl:variable name="ssdepth"
+ select="count($context/ancestor::substeps)"/>
+ <xsl:variable name="sstype" select="($ssdepth mod $format.length)+2"/>
+ <xsl:choose>
+ <xsl:when test="$sstype &gt; $format.length">
+ <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring($procedure.step.numeration.formats,$sstype,1)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name($context) = 'step'">
+ <xsl:variable name="sdepth"
+ select="count($context/ancestor::substeps)"/>
+ <xsl:variable name="stype" select="($sdepth mod $format.length)+1"/>
+ <xsl:value-of select="substring($procedure.step.numeration.formats,$stype,1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected context in procedure.step.numeration: </xsl:text>
+ <xsl:value-of select="local-name($context)"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="step" mode="number">
+ <xsl:param name="rest" select="''"/>
+ <xsl:param name="recursive" select="1"/>
+ <xsl:variable name="format">
+ <xsl:call-template name="procedure.step.numeration"/>
+ </xsl:variable>
+ <xsl:variable name="num">
+ <xsl:number count="step" format="{$format}"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$recursive != 0 and ancestor::step">
+ <xsl:apply-templates select="ancestor::step[1]" mode="number">
+ <xsl:with-param name="rest" select="concat('.', $num, $rest)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($num, $rest)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- OrderedList Numeration -->
+<xsl:template name="output-orderedlist-starting-number">
+ <xsl:param name="list"/>
+ <xsl:param name="pi-start"/>
+ <xsl:choose>
+ <xsl:when test="not($list/@continuation = 'continues')">
+ <xsl:choose>
+ <xsl:when test="$list/@startingnumber">
+ <xsl:value-of select="$list/@startingnumber"/>
+ </xsl:when>
+ <xsl:when test="$pi-start != ''">
+ <xsl:value-of select="$pi-start"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlist"
+ select="$list/preceding::orderedlist[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($prevlist) = 0">2</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlength" select="count($prevlist/listitem)"/>
+ <xsl:variable name="prevstart">
+ <xsl:call-template name="orderedlist-starting-number">
+ <xsl:with-param name="list" select="$prevlist"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prevstart + $prevlength"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="orderedlist-item-number">
+ <!-- context node must be a listitem in an orderedlist -->
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="$node/@override">
+ <xsl:value-of select="$node/@override"/>
+ </xsl:when>
+ <xsl:when test="$node/preceding-sibling::listitem">
+ <xsl:variable name="pnum">
+ <xsl:call-template name="orderedlist-item-number">
+ <xsl:with-param name="node" select="$node/preceding-sibling::listitem[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$pnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="orderedlist-starting-number">
+ <xsl:with-param name="list" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="next.numeration">
+ <xsl:param name="numeration" select="'default'"/>
+ <xsl:choose>
+ <!-- Change this list if you want to change the order of numerations -->
+ <xsl:when test="$numeration = 'arabic'">loweralpha</xsl:when>
+ <xsl:when test="$numeration = 'loweralpha'">lowerroman</xsl:when>
+ <xsl:when test="$numeration = 'lowerroman'">upperalpha</xsl:when>
+ <xsl:when test="$numeration = 'upperalpha'">upperroman</xsl:when>
+ <xsl:when test="$numeration = 'upperroman'">arabic</xsl:when>
+ <xsl:otherwise>arabic</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="list.numeration">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$node/@numeration">
+ <xsl:value-of select="$node/@numeration"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$node/ancestor::orderedlist">
+ <xsl:call-template name="next.numeration">
+ <xsl:with-param name="numeration">
+ <xsl:call-template name="list.numeration">
+ <xsl:with-param name="node" select="$node/ancestor::orderedlist[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="next.numeration"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem" mode="item-number">
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration">
+ <xsl:with-param name="node" select="parent::orderedlist"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">1.</xsl:when>
+ <xsl:when test="$numeration='loweralpha'">a.</xsl:when>
+ <xsl:when test="$numeration='lowerroman'">i.</xsl:when>
+ <xsl:when test="$numeration='upperalpha'">A.</xsl:when>
+ <xsl:when test="$numeration='upperroman'">I.</xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected numeration: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ </xsl:message>
+ <xsl:value-of select="1."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="item-number">
+ <xsl:call-template name="orderedlist-item-number"/>
+ </xsl:variable>
+
+ <xsl:if test="parent::orderedlist/@inheritnum='inherit'
+ and ancestor::listitem[parent::orderedlist]">
+ <xsl:apply-templates select="ancestor::listitem[parent::orderedlist][1]"
+ mode="item-number"/>
+ </xsl:if>
+
+ <xsl:number value="$item-number" format="{$type}"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- ItemizedList "Numeration" -->
+
+<xsl:template name="next.itemsymbol">
+ <xsl:param name="itemsymbol" select="'default'"/>
+ <xsl:choose>
+ <!-- Change this list if you want to change the order of symbols -->
+ <xsl:when test="$itemsymbol = 'disc'">circle</xsl:when>
+ <xsl:when test="$itemsymbol = 'circle'">square</xsl:when>
+ <xsl:otherwise>disc</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="list.itemsymbol">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="@override">
+ <xsl:value-of select="@override"/>
+ </xsl:when>
+ <xsl:when test="$node/@mark">
+ <xsl:value-of select="$node/@mark"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$node/ancestor::itemizedlist">
+ <xsl:call-template name="next.itemsymbol">
+ <xsl:with-param name="itemsymbol">
+ <xsl:call-template name="list.itemsymbol">
+ <xsl:with-param name="node" select="$node/ancestor::itemizedlist[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="next.itemsymbol"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="copyright.years" xmlns="">
+<refpurpose>Print a set of years with collapsed ranges</refpurpose>
+
+<refdescription id="copyright.years-desc">
+<para>This template prints a list of year elements with consecutive
+years printed as a range. In other words:</para>
+
+<screen><![CDATA[<year>1992</year>
+<year>1993</year>
+<year>1994</year>]]></screen>
+
+<para>is printed <quote>1992-1994</quote>, whereas:</para>
+
+<screen><![CDATA[<year>1992</year>
+<year>1994</year>]]></screen>
+
+<para>is printed <quote>1992, 1994</quote>.</para>
+
+<para>This template assumes that all the year elements contain only
+decimal year numbers, that the elements are sorted in increasing
+numerical order, that there are no duplicates, and that all the years
+are expressed in full <quote>century+year</quote>
+(<quote>1999</quote> not <quote>99</quote>) notation.</para>
+</refdescription>
+
+<refparameter id="copyright.years-params">
+<variablelist>
+<varlistentry><term>years</term>
+<listitem>
+<para>The initial set of year elements.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>print.ranges</term>
+<listitem>
+<para>If non-zero, multi-year ranges are collapsed. If zero, all years
+are printed discretely.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>single.year.ranges</term>
+<listitem>
+<para>If non-zero, two consecutive years will be printed as a range,
+otherwise, they will be printed discretely. In other words, a single
+year range is <quote>1991-1992</quote> but discretely it's
+<quote>1991, 1992</quote>.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="copyright.years-returns">
+<para>This template returns the formatted list of years.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="copyright.years">
+ <xsl:param name="years"/>
+ <xsl:param name="print.ranges" select="1"/>
+ <xsl:param name="single.year.ranges" select="0"/>
+ <xsl:param name="firstyear" select="0"/>
+ <xsl:param name="nextyear" select="0"/>
+
+ <!--
+ <xsl:message terminate="no">
+ <xsl:text>CY: </xsl:text>
+ <xsl:value-of select="count($years)"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$nextyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$print.ranges"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$single.year.ranges"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$years[1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:message>
+ -->
+
+ <xsl:choose>
+ <xsl:when test="$print.ranges = 0 and count($years) &gt; 0">
+ <xsl:choose>
+ <xsl:when test="count($years) = 1">
+ <xsl:apply-templates select="$years[1]" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$years[1]" mode="titlepage.mode"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="count($years) = 0">
+ <xsl:variable name="lastyear" select="$nextyear - 1"/>
+ <xsl:choose>
+ <xsl:when test="$firstyear = 0">
+ <!-- there weren't any years at all -->
+ </xsl:when>
+ <!-- Just output a year with range in its text -->
+ <xsl:when test="contains($firstyear, '-') or contains($firstyear, ',')">
+ <xsl:value-of select="$firstyear"/>
+ </xsl:when>
+ <xsl:when test="$firstyear = $lastyear">
+ <xsl:value-of select="$firstyear"/>
+ </xsl:when>
+ <xsl:when test="$single.year.ranges = 0
+ and $lastyear = $firstyear + 1">
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$lastyear"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="$lastyear"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="contains($firstyear, '-') or contains($firstyear, ',')">
+ <!-- Just output a year with range in its text -->
+ <xsl:value-of select="$firstyear"/>
+ <xsl:if test="count($years) != 0">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="firstyear" select="$years[1]"/>
+ <xsl:with-param name="nextyear" select="$years[1] + 1"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$firstyear = 0">
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="firstyear" select="$years[1]"/>
+ <xsl:with-param name="nextyear" select="$years[1] + 1"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$nextyear = $years[1]">
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="firstyear" select="$firstyear"/>
+ <xsl:with-param name="nextyear" select="$nextyear + 1"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- we have years left, but they aren't in the current range -->
+ <xsl:choose>
+ <xsl:when test="$nextyear = $firstyear + 1">
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:when test="$single.year.ranges = 0
+ and $nextyear = $firstyear + 2">
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$nextyear - 1"/>
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="$nextyear - 1"/>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="firstyear" select="$years[1]"/>
+ <xsl:with-param name="nextyear" select="$years[1] + 1"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="find.path.params" xmlns="">
+<refpurpose>Search in a table for the "best" match for the node</refpurpose>
+
+<refdescription id="find.path.params-desc">
+<para>This template searches in a table for the value that most-closely
+(in the typical best-match sense of XSLT) matches the current (element)
+node location.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="find.path.params">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="table" select="''"/>
+ <xsl:param name="location">
+ <xsl:call-template name="xpath.location">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:variable name="value">
+ <xsl:call-template name="lookup.key">
+ <xsl:with-param name="key" select="$location"/>
+ <xsl:with-param name="table" select="$table"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$value != ''">
+ <xsl:value-of select="$value"/>
+ </xsl:when>
+ <xsl:when test="contains($location, '/')">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="table" select="$table"/>
+ <xsl:with-param name="location" select="substring-after($location, '/')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="relative-uri">
+ <xsl:param name="filename" select="."/>
+ <xsl:param name="destdir" select="''"/>
+
+ <xsl:variable name="srcurl">
+ <xsl:call-template name="strippath">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="xml.base.dirs">
+ <xsl:with-param name="base.elem"
+ select="$filename/ancestor-or-self::*
+ [@xml:base != ''][1]"/>
+ </xsl:call-template>
+ <xsl:value-of select="$filename"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="srcurl.trimmed">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$srcurl"/>
+ <xsl:with-param name="uriB" select="$destdir"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="destdir.trimmed">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$srcurl"/>
+ <xsl:with-param name="uriB" select="$destdir"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$destdir.trimmed"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$srcurl.trimmed"/>
+
+</xsl:template>
+
+<!-- ===================================== -->
+
+<xsl:template name="xml.base.dirs">
+ <xsl:param name="base.elem" select="NONODE"/>
+
+ <!-- Recursively resolve xml:base attributes, up to a
+ full path with : in uri -->
+ <xsl:if test="$base.elem/ancestor::*[@xml:base != ''] and
+ not(contains($base.elem/@xml:base, ':'))">
+ <xsl:call-template name="xml.base.dirs">
+ <xsl:with-param name="base.elem"
+ select="$base.elem/ancestor::*[@xml:base != ''][1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="getdir">
+ <xsl:with-param name="filename" select="$base.elem/@xml:base"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ===================================== -->
+
+<xsl:template name="strippath">
+ <xsl:param name="filename" select="''"/>
+ <xsl:choose>
+ <!-- Leading .. are not eliminated -->
+ <xsl:when test="starts-with($filename, '../')">
+ <xsl:value-of select="'../'"/>
+ <xsl:call-template name="strippath">
+ <xsl:with-param name="filename" select="substring-after($filename, '../')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($filename, '/../')">
+ <xsl:call-template name="strippath">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="getdir">
+ <xsl:with-param name="filename" select="substring-before($filename, '/../')"/>
+ </xsl:call-template>
+ <xsl:value-of select="substring-after($filename, '/../')"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<xsl:template name="getdir">
+ <xsl:param name="filename" select="''"/>
+ <xsl:if test="contains($filename, '/')">
+ <xsl:value-of select="substring-before($filename, '/')"/>
+ <xsl:text>/</xsl:text>
+ <xsl:call-template name="getdir">
+ <xsl:with-param name="filename" select="substring-after($filename, '/')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="string.upper" xmlns="">
+<refpurpose>Converts a string to all uppercase letters</refpurpose>
+
+<refdescription id="string.upper-desc">
+<para>Given a string, this template does a language-aware conversion
+of that string to all uppercase letters, based on the values of the
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal>. All other characters are left
+unchanged.</para>
+</refdescription>
+
+<refparameter id="string.upper-params">
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+<para>The string to convert to uppercase.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+</doc:template>
+<xsl:template name="string.upper">
+ <xsl:param name="string" select="''"/>
+ <xsl:variable name="lowercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'lowercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="uppercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'uppercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="translate($string,$lowercase.alpha,$uppercase.alpha)"/>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="string.lower" xmlns="">
+<refpurpose>Converts a string to all lowercase letters</refpurpose>
+
+<refdescription id="string.lower-desc">
+<para>Given a string, this template does a language-aware conversion
+of that string to all lowercase letters, based on the values of the
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal>. All other characters are left
+unchanged.</para>
+</refdescription>
+
+<refparameter id="string.lower-params">
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+<para>The string to convert to lowercase.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+</doc:template>
+<xsl:template name="string.lower">
+ <xsl:param name="string" select="''"/>
+ <xsl:variable name="uppercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'uppercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="lowercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'lowercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="translate($string,$uppercase.alpha,$lowercase.alpha)"/>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="select.choice.separator" xmlns="">
+ <refpurpose>Returns localized choice separator</refpurpose>
+ <refdescription id="select.choice.separator-desc">
+ <para>This template enables auto-generation of an appropriate
+ localized "choice" separator (for example, "and" or "or") before
+ the final item in an inline list (though it could also be useful
+ for generating choice separators for non-inline lists).</para>
+ <para>It currently works by evaluating a processing instruction
+ (PI) of the form &lt;?dbchoice&#xa0;choice="foo"?> :
+ <itemizedlist>
+ <listitem>
+ <simpara>if the value of the <tag>choice</tag>
+ pseudo-attribute is "and" or "or", returns a localized "and"
+ or "or"</simpara>
+ </listitem>
+ <listitem>
+ <simpara>otherwise returns the literal value of the
+ <tag>choice</tag> pseudo-attribute</simpara>
+ </listitem>
+ </itemizedlist>
+ The latter is provided only as a temporary workaround because the
+ locale files do not currently have translations for the word
+ <wordasword>or</wordasword>. So if you want to generate a a
+ logical "or" separator in French (for example), you currently need
+ to do this:
+ <literallayout>&lt;?dbchoice choice="ou"?></literallayout>
+ </para>
+ <warning>
+ <para>The <tag>dbchoice</tag> processing instruction is
+ an unfortunate hack; support for it may disappear in the future
+ (particularly if and when a more appropriate means for marking
+ up "choice" lists becomes available in DocBook).</para>
+ </warning>
+ </refdescription>
+</doc:template>
+<xsl:template name="select.choice.separator">
+ <xsl:variable name="choice">
+ <xsl:call-template name="pi.dbchoice_choice"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- if value of $choice is "and" or "or", translate to equivalent in -->
+ <!-- current locale -->
+ <xsl:when test="$choice = 'and' or $choice = 'or'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$choice"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- otherwise, just output value of $choice, whatever it is -->
+ <xsl:otherwise>
+ <xsl:value-of select="$choice"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="evaluate.info.profile" xmlns="">
+ <refpurpose>Evaluates an info profile</refpurpose>
+ <refdescription id="evaluate.info.profile-desc">
+ <para>This template evaluates an "info profile" matching the XPath
+ expression given by the <parameter>profile</parameter>
+ parameter. It relies on the XSLT <function>evaluate()</function>
+ extension function.</para>
+
+ <para>The value of the <parameter>profile</parameter> parameter
+ can include the literal string <literal>$info</literal>. If found
+ in the value of the <parameter>profile</parameter> parameter, the
+ literal string <literal>$info</literal> string is replaced with
+ the value of the <parameter>info</parameter> parameter, which
+ should be a set of <replaceable>*info</replaceable> nodes; the
+ expression is then evaluated using the XSLT
+ <function>evaluate()</function> extension function.</para>
+ </refdescription>
+ <refparameter id="evaluate.info.profile-params">
+ <variablelist>
+ <varlistentry>
+ <term>profile</term>
+ <listitem>
+ <para>A string representing an XPath expression </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of *info nodes</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn id="evaluate.info.profile-returns">
+ <para>Returns a node (the result of evaluating the
+ <parameter>profile</parameter> parameter)</para>
+ </refreturn>
+</doc:template>
+ <xsl:template name="evaluate.info.profile">
+ <xsl:param name="profile"/>
+ <xsl:param name="info"/>
+ <xsl:choose>
+ <!-- * xsltproc and Xalan both support dyn:evaluate() -->
+ <xsl:when test="function-available('dyn:evaluate')">
+ <xsl:apply-templates
+ select="dyn:evaluate($profile)" mode="get.refentry.metadata"/>
+ </xsl:when>
+ <!-- * Saxon has its own evaluate() & doesn't support dyn:evaluate() -->
+ <xsl:when test="function-available('saxon:evaluate')">
+ <xsl:apply-templates
+ select="saxon:evaluate($profile)" mode="get.refentry.metadata"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+Error: The "info profiling" mechanism currently requires an XSLT
+engine that supports the evaluate() XSLT extension function. Your XSLT
+engine does not support it.
+</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml
new file mode 100644
index 0000000..b803f79
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml
@@ -0,0 +1,700 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="cs" english-language-name="Czech">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/cs.xml -->
+<!-- * -->
+<!-- * E-mail the edited cs.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrakt"/>
+<l:gentext key="abstract" text="Abstrakt"/>
+<l:gentext key="Acknowledgements" text="Poděkování"/>
+<l:gentext key="acknowledgements" text="poděkování"/>
+<l:gentext key="Answer" text="OdpovÄ›Ä:"/>
+<l:gentext key="answer" text="OdpovÄ›Ä:"/>
+<l:gentext key="Appendix" text="Příloha"/>
+<l:gentext key="appendix" text="Příloha"/>
+<l:gentext key="Article" text="Článek"/>
+<l:gentext key="article" text="Článek"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografie"/>
+<l:gentext key="bibliography" text="Bibliografie"/>
+<l:gentext key="Book" text="Kniha"/>
+<l:gentext key="book" text="Kniha"/>
+<l:gentext key="CAUTION" text="Výstraha"/>
+<l:gentext key="Caution" text="Výstraha"/>
+<l:gentext key="caution" text="Výstraha"/>
+<l:gentext key="Chapter" text="Kapitola"/>
+<l:gentext key="chapter" text="Kapitola"/>
+<l:gentext key="Colophon" text="Tiráž"/>
+<l:gentext key="colophon" text="Tiráž"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Věnování"/>
+<l:gentext key="dedication" text="Věnování"/>
+<l:gentext key="Edition" text="Vydání"/>
+<l:gentext key="edition" text="Vydání"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Rovnice"/>
+<l:gentext key="equation" text="Rovnice"/>
+<l:gentext key="Example" text="Příklad"/>
+<l:gentext key="example" text="Příklad"/>
+<l:gentext key="Figure" text="Obrázek"/>
+<l:gentext key="figure" text="Obrázek"/>
+<l:gentext key="Glossary" text="Slovník"/>
+<l:gentext key="glossary" text="Slovník"/>
+<l:gentext key="GlossSee" text="Viz"/>
+<l:gentext key="glosssee" text="Viz"/>
+<l:gentext key="GlossSeeAlso" text="Viz též"/>
+<l:gentext key="glossseealso" text="Viz též"/>
+<l:gentext key="IMPORTANT" text="Důležité"/>
+<l:gentext key="important" text="Důležité"/>
+<l:gentext key="Important" text="Důležité"/>
+<l:gentext key="Index" text="Rejstřík"/>
+<l:gentext key="index" text="Rejstřík"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Právní doložka"/>
+<l:gentext key="legalnotice" text="Právní doložka"/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="Publikum"/>
+<l:gentext key="MsgLevel" text="Úroveň"/>
+<l:gentext key="msglevel" text="Úroveň"/>
+<l:gentext key="MsgOrig" text="Původ"/>
+<l:gentext key="msgorig" text="Původ"/>
+<l:gentext key="NOTE" text="Poznámka"/>
+<l:gentext key="Note" text="Poznámka"/>
+<l:gentext key="note" text="Poznámka"/>
+<l:gentext key="Part" text="Část"/>
+<l:gentext key="part" text="Část"/>
+<l:gentext key="Preface" text="Předmluva"/>
+<l:gentext key="preface" text="Předmluva"/>
+<l:gentext key="Procedure" text="Postup"/>
+<l:gentext key="procedure" text="Postup"/>
+<l:gentext key="ProductionSet" text="Produkce"/>
+<l:gentext key="PubDate" text="Datum vydání"/>
+<l:gentext key="pubdate" text="Datum vydání"/>
+<l:gentext key="Published" text="Vydáno"/>
+<l:gentext key="published" text="Vydáno"/>
+<l:gentext key="Publisher" text="Vydavatel"/>
+<l:gentext key="Qandadiv" text="Otázky a odpovědi"/>
+<l:gentext key="qandadiv" text="Otázky a odpovědi"/>
+<l:gentext key="QandASet" text="Časté dotazy"/>
+<l:gentext key="Question" text="Otázka:"/>
+<l:gentext key="question" text="Otázka:"/>
+<l:gentext key="RefEntry" text="Strana"/>
+<l:gentext key="refentry" text="strana"/>
+<l:gentext key="Reference" text="Odkaz"/>
+<l:gentext key="reference" text="Odkaz"/>
+<l:gentext key="References" text="Odkazy"/>
+<l:gentext key="RefName" text="Jméno"/>
+<l:gentext key="refname" text="Jméno"/>
+<l:gentext key="RefSection" text="Oddíl"/>
+<l:gentext key="refsection" text="oddíl"/>
+<l:gentext key="RefSynopsisDiv" text="Přehled"/>
+<l:gentext key="refsynopsisdiv" text="Přehled"/>
+<l:gentext key="RevHistory" text="Přehled revizí"/>
+<l:gentext key="revhistory" text="Přehled revizí"/>
+<l:gentext key="revision" text="Revize"/>
+<l:gentext key="Revision" text="Revize"/>
+<l:gentext key="sect1" text="Oddíl"/>
+<l:gentext key="sect2" text="Oddíl"/>
+<l:gentext key="sect3" text="Oddíl"/>
+<l:gentext key="sect4" text="Oddíl"/>
+<l:gentext key="sect5" text="Oddíl"/>
+<l:gentext key="section" text="Oddíl"/>
+<l:gentext key="Section" text="Oddíl"/>
+<l:gentext key="see" text="Viz"/>
+<l:gentext key="See" text="Viz"/>
+<l:gentext key="seealso" text="Viz též"/>
+<l:gentext key="Seealso" text="Viz též"/>
+<l:gentext key="SeeAlso" text="Viz též"/>
+<l:gentext key="set" text="Sada"/>
+<l:gentext key="Set" text="Sada"/>
+<l:gentext key="setindex" text="Rejstřík sady"/>
+<l:gentext key="SetIndex" text="Rejstřík sady"/>
+<l:gentext key="Sidebar" text="Marginálie"/>
+<l:gentext key="sidebar" text="Marginálie"/>
+<l:gentext key="step" text="krok"/>
+<l:gentext key="Step" text="Krok"/>
+<l:gentext key="table" text="Tabulka"/>
+<l:gentext key="Table" text="Tabulka"/>
+<l:gentext key="task" text="úloha"/>
+<l:gentext key="Task" text="Úloha"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="Tip"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Varování"/>
+<l:gentext key="warning" text="Varování"/>
+<l:gentext key="WARNING" text="Varování"/>
+<l:gentext key="and" text="a"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Vydáno"/>
+<l:gentext key="edited" text="Vydáno"/>
+<l:gentext key="Editedby" text="Sestavil"/>
+<l:gentext key="editedby" text="Sestavil"/>
+<l:gentext key="in" text="v"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Poznámky"/>
+<l:gentext key="Notes" text="Poznámky"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="Str."/>
+<l:gentext key="Revisedby" text="Revidoval: "/>
+<l:gentext key="revisedby" text="Revidoval: "/>
+<l:gentext key="TableNotes" text="Poznámky"/>
+<l:gentext key="tablenotes" text="Poznámky"/>
+<l:gentext key="TableofContents" text="Obsah"/>
+<l:gentext key="tableofcontents" text="Obsah"/>
+<l:gentext key="unexpectedelementname" text="NeoÄekávané jméno prvku"/>
+<l:gentext key="unsupported" text="nepodporovaný"/>
+<l:gentext key="xrefto" text="xref k"/>
+<l:gentext key="Authors" text="Autoři"/>
+<l:gentext key="copyeditor" text="Korektor"/>
+<l:gentext key="graphicdesigner" text="Grafický designér"/>
+<l:gentext key="productioneditor" text="Produkce"/>
+<l:gentext key="technicaleditor" text="Technický editor"/>
+<l:gentext key="translator" text="Překladatel"/>
+<l:gentext key="listofequations" text="Seznam rovnic"/>
+<l:gentext key="ListofEquations" text="Seznam rovnic"/>
+<l:gentext key="ListofExamples" text="Seznam příkladů"/>
+<l:gentext key="listofexamples" text="Seznam příkladů"/>
+<l:gentext key="ListofFigures" text="Seznam obrázků"/>
+<l:gentext key="listoffigures" text="Seznam obrázků"/>
+<l:gentext key="ListofProcedures" text="Seznam postupů"/>
+<l:gentext key="listofprocedures" text="Seznam postupů"/>
+<l:gentext key="listoftables" text="Seznam tabulek"/>
+<l:gentext key="ListofTables" text="Seznam tabulek"/>
+<l:gentext key="ListofUnknown" text="Seznam neznámého"/>
+<l:gentext key="listofunknown" text="Seznam neznámého"/>
+<l:gentext key="nav-home" text="Domů"/>
+<l:gentext key="nav-next" text="Další"/>
+<l:gentext key="nav-next-sibling" text="Rychle dopředu"/>
+<l:gentext key="nav-prev" text="Předcházející"/>
+<l:gentext key="nav-prev-sibling" text="Rychle zpět"/>
+<l:gentext key="nav-up" text="Nahoru"/>
+<l:gentext key="nav-toc" text="Obsah"/>
+<l:gentext key="Draft" text="Návrh"/>
+<l:gentext key="above" text="nad"/>
+<l:gentext key="below" text="pod"/>
+<l:gentext key="sectioncalled" text="oddíl nazvaný"/>
+<l:gentext key="index symbols" text="Symboly"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aábcÄdÄeéěfghiíjklmnňoópqrÅ™sÅ¡tÅ¥uúůvwxyýzž"/>
+<l:gentext key="uppercase.alpha" text="AÃBCÄŒDÄŽEÉĚFGHIÃJKLMNŇOÓPQRŘSÅ TŤUÚŮVWXYÃZŽ"/>
+<l:gentext key="normalize.sort.input" text="aábcÄdÄeéěfghiíjklmnňoópqrÅ™sÅ¡tÅ¥uúůvwxyýzž"/>
+<l:gentext key="normalize.sort.output" text="AÃBCÄŒDÄŽEÉĚFGHIÃJKLMNŇOÓPQRŘSÅ TŤUÚŮVWXYÃZŽ"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‚"/>
+<l:dingbat key="nestedendquote" text="‘"/>
+<l:dingbat key="singlestartquote" text="‚"/>
+<l:dingbat key="singleendquote" text="‘"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Příloha %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Rovnice %n. %t"/>
+<l:template name="example" text="Příklad %n. %t"/>
+<l:template name="figure" text="Obrázek %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Část %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postup %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkce %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabulka %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Příloha %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="part" text="Část %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text="v %o"/>
+<l:template name="olink.page.citation" text=" (strana %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(strana %p)"/>
+<l:template name="docname" text=" v %o"/>
+<l:template name="docnamelong" text=" v dokumentu nazvaném %o"/>
+<l:template name="pageabbrev" text="(str. %p)"/>
+<l:template name="Page" text="Strana %p"/>
+<l:template name="bridgehead" text="„%t“"/>
+<l:template name="refsection" text="„%t“"/>
+<l:template name="refsect1" text="„%t“"/>
+<l:template name="refsect2" text="„%t“"/>
+<l:template name="refsect3" text="„%t“"/>
+<l:template name="sect1" text="„%t“"/>
+<l:template name="sect2" text="„%t“"/>
+<l:template name="sect3" text="„%t“"/>
+<l:template name="sect4" text="„%t“"/>
+<l:template name="sect5" text="„%t“"/>
+<l:template name="section" text="„%t“"/>
+<l:template name="simplesect" text="„%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="%n"/>
+<l:template name="appendix" text="%n"/>
+<l:template name="bridgehead" text="%n"/>
+<l:template name="chapter" text="%n"/>
+<l:template name="equation" text="%n"/>
+<l:template name="example" text="%n"/>
+<l:template name="figure" text="%n"/>
+<l:template name="part" text="%n"/>
+<l:template name="procedure" text="%n"/>
+<l:template name="productionset" text="%n"/>
+<l:template name="qandadiv" text="%n"/>
+<l:template name="qandaentry" text="%n"/>
+<l:template name="question" text="%n"/>
+<l:template name="sect1" text="%n"/>
+<l:template name="sect2" text="%n"/>
+<l:template name="sect3" text="%n"/>
+<l:template name="sect4" text="%n"/>
+<l:template name="sect5" text="%n"/>
+<l:template name="section" text="%n"/>
+<l:template name="table" text="%n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="%n – „%t“"/>
+<l:template name="bridgehead" text="%n – „%t“"/>
+<l:template name="chapter" text="%n – „%t“"/>
+<l:template name="equation" text="%n – „%t“"/>
+<l:template name="example" text="%n – „%t“"/>
+<l:template name="figure" text="%n – „%t“"/>
+<l:template name="part" text="%n – „%t“"/>
+<l:template name="procedure" text="%n – „%t“"/>
+<l:template name="productionset" text="%n – „%t“"/>
+<l:template name="qandadiv" text="%n – „%t“"/>
+<l:template name="refsect1" text="„%t“"/>
+<l:template name="refsect2" text="„%t“"/>
+<l:template name="refsect3" text="„%t“"/>
+<l:template name="refsection" text="„%t“"/>
+<l:template name="sect1" text="%n – „%t“"/>
+<l:template name="sect2" text="%n – „%t“"/>
+<l:template name="sect3" text="%n – „%t“"/>
+<l:template name="sect4" text="%n – „%t“"/>
+<l:template name="sect5" text="%n – „%t“"/>
+<l:template name="section" text="%n – „%t“"/>
+<l:template name="simplesect" text="%n – „%t“"/>
+<l:template name="table" text="%n – „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" a "/>
+<l:template name="seplast" text=" a "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Viz %t."/>
+<l:template name="seealso" text="Viz též %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Úroveň: "/>
+<l:template name="MsgOrig" text="Původ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d. B Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definice: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ledna"/>
+<l:template name="February" text="února"/>
+<l:template name="March" text="března"/>
+<l:template name="April" text="dubna"/>
+<l:template name="May" text="května"/>
+<l:template name="June" text="Äervna"/>
+<l:template name="July" text="Äervence"/>
+<l:template name="August" text="srpna"/>
+<l:template name="September" text="září"/>
+<l:template name="October" text="října"/>
+<l:template name="November" text="listopadu"/>
+<l:template name="December" text="prosince"/>
+<l:template name="Monday" text="pondělí"/>
+<l:template name="Tuesday" text="úterý"/>
+<l:template name="Wednesday" text="středa"/>
+<l:template name="Thursday" text="Ätvrtek"/>
+<l:template name="Friday" text="pátek"/>
+<l:template name="Saturday" text="sobota"/>
+<l:template name="Sunday" text="neděle"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="led"/>
+<l:template name="Feb" text="úno"/>
+<l:template name="Mar" text="bře"/>
+<l:template name="Apr" text="dub"/>
+<l:template name="May" text="kvÄ›"/>
+<l:template name="Jun" text="Äer"/>
+<l:template name="Jul" text="Änc"/>
+<l:template name="Aug" text="srp"/>
+<l:template name="Sep" text="zář"/>
+<l:template name="Oct" text="řij"/>
+<l:template name="Nov" text="lis"/>
+<l:template name="Dec" text="pro"/>
+<l:template name="Mon" text="po"/>
+<l:template name="Tue" text="út"/>
+<l:template name="Wed" text="st"/>
+<l:template name="Thu" text="Ät"/>
+<l:template name="Fri" text="pá"/>
+<l:template name="Sat" text="so"/>
+<l:template name="Sun" text="ne"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0405 Czech"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cit. "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Dostupné "/>
+<l:template name="acctoo" text="Dostupné také "/>
+<l:template name="onwww" text="na World Wide Web"/>
+<l:template name="oninet" text="na Internetu"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symboly</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">Ã</l:l>
+<l:l i="1">á</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Č</l:l>
+<l:l i="4">Ä</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="5">ÄŽ</l:l>
+<l:l i="5">Ä</l:l>
+<l:l i="7">E</l:l>
+<l:l i="7">e</l:l>
+<l:l i="7">É</l:l>
+<l:l i="7">é</l:l>
+<l:l i="7">Äš</l:l>
+<l:l i="7">Ä›</l:l>
+<l:l i="7">Ë</l:l>
+<l:l i="7">ë</l:l>
+<l:l i="8">F</l:l>
+<l:l i="8">f</l:l>
+<l:l i="9">G</l:l>
+<l:l i="9">g</l:l>
+<l:l i="10">H</l:l>
+<l:l i="10">h</l:l>
+<l:l i="11">Ch</l:l>
+<l:l i="11">ch</l:l>
+<l:l i="11">cH</l:l>
+<l:l i="11">CH</l:l>
+<l:l i="12">I</l:l>
+<l:l i="12">i</l:l>
+<l:l i="12">Ã</l:l>
+<l:l i="12">í</l:l>
+<l:l i="13">J</l:l>
+<l:l i="13">j</l:l>
+<l:l i="14">K</l:l>
+<l:l i="14">k</l:l>
+<l:l i="15">L</l:l>
+<l:l i="15">l</l:l>
+<l:l i="16">M</l:l>
+<l:l i="16">m</l:l>
+<l:l i="17">N</l:l>
+<l:l i="17">n</l:l>
+<l:l i="17">Ň</l:l>
+<l:l i="17">ň</l:l>
+<l:l i="19">O</l:l>
+<l:l i="19">o</l:l>
+<l:l i="19">Ó</l:l>
+<l:l i="19">ó</l:l>
+<l:l i="19">Ö</l:l>
+<l:l i="19">ö</l:l>
+<l:l i="20">P</l:l>
+<l:l i="20">p</l:l>
+<l:l i="21">Q</l:l>
+<l:l i="21">q</l:l>
+<l:l i="22">R</l:l>
+<l:l i="22">r</l:l>
+<l:l i="23">Ř</l:l>
+<l:l i="23">Å™</l:l>
+<l:l i="24">S</l:l>
+<l:l i="24">s</l:l>
+<l:l i="25">Å </l:l>
+<l:l i="25">Å¡</l:l>
+<l:l i="26">T</l:l>
+<l:l i="26">t</l:l>
+<l:l i="26">Ť</l:l>
+<l:l i="26">Å¥</l:l>
+<l:l i="28">U</l:l>
+<l:l i="28">u</l:l>
+<l:l i="28">Ú</l:l>
+<l:l i="28">ú</l:l>
+<l:l i="28">Å®</l:l>
+<l:l i="28">ů</l:l>
+<l:l i="28">Ü</l:l>
+<l:l i="28">ü</l:l>
+<l:l i="29">V</l:l>
+<l:l i="29">v</l:l>
+<l:l i="30">W</l:l>
+<l:l i="30">w</l:l>
+<l:l i="31">X</l:l>
+<l:l i="31">x</l:l>
+<l:l i="32">Y</l:l>
+<l:l i="32">y</l:l>
+<l:l i="32">Ã</l:l>
+<l:l i="32">ý</l:l>
+<l:l i="33">Z</l:l>
+<l:l i="33">z</l:l>
+<l:l i="34">Ž</l:l>
+<l:l i="34">ž</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml
new file mode 100644
index 0000000..bc0f08a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml
@@ -0,0 +1,1245 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="cy" english-language-name="Welsh">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/cy.xml -->
+<!-- * -->
+<!-- * E-mail the edited cy.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Crynodeb"/>
+<l:gentext key="abstract" text="Crynodeb"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Atodiad"/>
+<l:gentext key="appendix" text="Atodiad"/>
+<l:gentext key="Article" text="Erthygl"/>
+<l:gentext key="article" text="Erthygl"/>
+<l:gentext key="Author" text="Awdur"/>
+<l:gentext key="Bibliography" text="Llyfryddiaeth"/>
+<l:gentext key="bibliography" text="Llyfryddiaeth"/>
+<l:gentext key="Book" text="Llyfr"/>
+<l:gentext key="book" text="Llyfr"/>
+<l:gentext key="CAUTION" text="GOFAL"/>
+<l:gentext key="Caution" text="Gofal"/>
+<l:gentext key="caution" text="Gofal"/>
+<l:gentext key="Chapter" text="Pennod"/>
+<l:gentext key="chapter" text="Pennod"/>
+<l:gentext key="Colophon" text="Coloffon"/>
+<l:gentext key="colophon" text="Coloffon"/>
+<l:gentext key="Copyright" text="Hawlfraint"/>
+<l:gentext key="copyright" text="Hawlfraint"/>
+<l:gentext key="Dedication" text="Cyflwyniad"/>
+<l:gentext key="dedication" text="Cyflwyniad"/>
+<l:gentext key="Edition" text="Argraffiad"/>
+<l:gentext key="edition" text="Argraffiad"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Hafaliad"/>
+<l:gentext key="equation" text="Hafaliad"/>
+<l:gentext key="Example" text="Enghraifft"/>
+<l:gentext key="example" text="Enghraifft"/>
+<l:gentext key="Figure" text="Ffigur"/>
+<l:gentext key="figure" text="Ffigur"/>
+<l:gentext key="Glossary" text="Geirfa"/>
+<l:gentext key="glossary" text="Geirfa"/>
+<l:gentext key="GlossSee" text="Gweler"/>
+<l:gentext key="glosssee" text="Gweler"/>
+<l:gentext key="GlossSeeAlso" text="Gweler Hefyd"/>
+<l:gentext key="glossseealso" text="Gweler Hefyd"/>
+<l:gentext key="IMPORTANT" text="PWYSIG"/>
+<l:gentext key="important" text="Pwysig"/>
+<l:gentext key="Important" text="Pwysig"/>
+<l:gentext key="Index" text="Mynegai"/>
+<l:gentext key="index" text="Mynegai"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Rhybudd Cyfreithiol"/>
+<l:gentext key="legalnotice" text="Rhybudd Cyfreithiol"/>
+<l:gentext key="MsgAud" text="Cynulleidfa"/>
+<l:gentext key="msgaud" text="Cynulleidfa"/>
+<l:gentext key="MsgLevel" text="Lefel"/>
+<l:gentext key="msglevel" text="Lefel"/>
+<l:gentext key="MsgOrig" text="Tarddiad"/>
+<l:gentext key="msgorig" text="Tarddiad"/>
+<l:gentext key="NOTE" text="NODYN"/>
+<l:gentext key="Note" text="Nodyn"/>
+<l:gentext key="note" text="Nodyn"/>
+<l:gentext key="Part" text="Rhan"/>
+<l:gentext key="part" text="Rhan"/>
+<l:gentext key="Preface" text="Rhagair"/>
+<l:gentext key="preface" text="Rhagair"/>
+<l:gentext key="Procedure" text="Trefn"/>
+<l:gentext key="procedure" text="Trefn"/>
+<l:gentext key="ProductionSet" text="Cynhyrchiad"/>
+<l:gentext key="PubDate" text="Dyddiad Cyhoeddi"/>
+<l:gentext key="pubdate" text="Dyddiad Cyhoeddi"/>
+<l:gentext key="Published" text="Cyhoeddwyd"/>
+<l:gentext key="published" text="Cyhoeddwyd"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="C &amp; A"/>
+<l:gentext key="qandadiv" text="C &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="C:"/>
+<l:gentext key="question" text="C:"/>
+<l:gentext key="RefEntry" text="Cyfeirnod"/>
+<l:gentext key="refentry" text="Cyfeirnod"/>
+<l:gentext key="Reference" text="Cyfeiriad"/>
+<l:gentext key="reference" text="Cyfeiriad"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Enw"/>
+<l:gentext key="refname" text="Enw"/>
+<l:gentext key="RefSection" text="Adran Gyfeiriad"/>
+<l:gentext key="refsection" text="Adran Gyfeiriad"/>
+<l:gentext key="RefSynopsisDiv" text="Crynodeb"/>
+<l:gentext key="refsynopsisdiv" text="Crynodeb"/>
+<l:gentext key="RevHistory" text="Hanes Adolygu"/>
+<l:gentext key="revhistory" text="Hanes Adolygu"/>
+<l:gentext key="revision" text="Adolygiad"/>
+<l:gentext key="Revision" text="Adolygiad"/>
+<l:gentext key="sect1" text="Adran"/>
+<l:gentext key="sect2" text="Adran"/>
+<l:gentext key="sect3" text="Adran"/>
+<l:gentext key="sect4" text="Adran"/>
+<l:gentext key="sect5" text="Adran"/>
+<l:gentext key="section" text="Adran"/>
+<l:gentext key="Section" text="Adran"/>
+<l:gentext key="see" text="gweler"/>
+<l:gentext key="See" text="Gweler"/>
+<l:gentext key="seealso" text="gweler hefyd"/>
+<l:gentext key="Seealso" text="Gweler hefyd"/>
+<l:gentext key="SeeAlso" text="Gweler Hefyd"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Mynegai Set"/>
+<l:gentext key="SetIndex" text="Mynegai Set"/>
+<l:gentext key="Sidebar" text="Bar Ochr"/>
+<l:gentext key="sidebar" text="bar ochr"/>
+<l:gentext key="step" text="cam"/>
+<l:gentext key="Step" text="Cam"/>
+<l:gentext key="table" text="Tabl"/>
+<l:gentext key="Table" text="Tabl"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Cynghoryn"/>
+<l:gentext key="TIP" text="CYNGHORYN"/>
+<l:gentext key="Tip" text="Cynghoryn"/>
+<l:gentext key="Warning" text="Rhybudd"/>
+<l:gentext key="warning" text="Rhybudd"/>
+<l:gentext key="WARNING" text="RHYBUDD"/>
+<l:gentext key="and" text="a(c)"/>
+<l:gentext key="by" text="gan"/>
+<l:gentext key="Edited" text="Golygwyd"/>
+<l:gentext key="edited" text="Golygwyd"/>
+<l:gentext key="Editedby" text="Golygwyd:"/>
+<l:gentext key="editedby" text="Golygwyd:"/>
+<l:gentext key="in" text="yn"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Nodiadau"/>
+<l:gentext key="Notes" text="Nodiadau"/>
+<l:gentext key="Pgs" text="Tud."/>
+<l:gentext key="pgs" text="Tud."/>
+<l:gentext key="Revisedby" text="Adolygwyd: "/>
+<l:gentext key="revisedby" text="Adolygwyd: "/>
+<l:gentext key="TableNotes" text="Nodiadau"/>
+<l:gentext key="tablenotes" text="Nodiadau"/>
+<l:gentext key="TableofContents" text="Cynnwys"/>
+<l:gentext key="tableofcontents" text="Cynnwys"/>
+<l:gentext key="unexpectedelementname" text="Enw elfen annisgwyl"/>
+<l:gentext key="unsupported" text="ni chynhelir"/>
+<l:gentext key="xrefto" text="xref i"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofEquations" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofExamples" text="Rhestr Hafaliadau"/>
+<l:gentext key="listofexamples" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofFigures" text="Rhestr Hafaliadau"/>
+<l:gentext key="listoffigures" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofProcedures" text="Dull Gweithredu"/>
+<l:gentext key="listofprocedures" text="Dull Gweithredu"/>
+<l:gentext key="listoftables" text="Rhestr Tablau"/>
+<l:gentext key="ListofTables" text="Rhestr Tablau"/>
+<l:gentext key="ListofUnknown" text="Rhestr Anhysbysion"/>
+<l:gentext key="listofunknown" text="Rhestr Anhysbysion"/>
+<l:gentext key="nav-home" text="Cartref"/>
+<l:gentext key="nav-next" text="Nesaf"/>
+<l:gentext key="nav-next-sibling" text="Ymlaen"/>
+<l:gentext key="nav-prev" text="Cynt"/>
+<l:gentext key="nav-prev-sibling" text="Yn Ôl"/>
+<l:gentext key="nav-up" text="I Fyny"/>
+<l:gentext key="nav-toc" text="Cynnwys"/>
+<l:gentext key="Draft" text="Drafft"/>
+<l:gentext key="above" text="uchod"/>
+<l:gentext key="below" text="isod"/>
+<l:gentext key="sectioncalled" text="yr adran o'r enw"/>
+<l:gentext key="index symbols" text="Symbolau"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="cyntaf-olaf"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Atodiad %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Pennod %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Hafaliad %n. %t"/>
+<l:template name="example" text="Enghraifft %n. %t"/>
+<l:template name="figure" text="Ffigur %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Rhan %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Trefn %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Cynhyrchiad %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabl %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Atodiad %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Pennod %n. %t"/>
+<l:template name="part" text="Rhan %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" yn %o"/>
+<l:template name="olink.page.citation" text=" (tudalen %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(tudalen %p)"/>
+<l:template name="docname" text=" yn %o"/>
+<l:template name="docnamelong" text=" yn y ddogfen o'r enw %o"/>
+<l:template name="pageabbrev" text="(tud. %p)"/>
+<l:template name="Page" text="Tudalen %p"/>
+<l:template name="bridgehead" text="yr adran o'r enw “%tâ€"/>
+<l:template name="refsection" text="yr adran o'r enw “%tâ€"/>
+<l:template name="refsect1" text="yr adran o'r enw “%tâ€"/>
+<l:template name="refsect2" text="yr adran o'r enw “%tâ€"/>
+<l:template name="refsect3" text="yr adran o'r enw “%tâ€"/>
+<l:template name="sect1" text="yr adran o'r enw “%tâ€"/>
+<l:template name="sect2" text="yr adran o'r enw “%tâ€"/>
+<l:template name="sect3" text="yr adran o'r enw “%tâ€"/>
+<l:template name="sect4" text="yr adran o'r enw “%tâ€"/>
+<l:template name="sect5" text="yr adran o'r enw “%tâ€"/>
+<l:template name="section" text="yr adran o'r enw “%tâ€"/>
+<l:template name="simplesect" text="yr adran o'r enw “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Atodiad %n"/>
+<l:template name="bridgehead" text="Adran %n"/>
+<l:template name="chapter" text="Pennod %n"/>
+<l:template name="equation" text="Hafaliad %n"/>
+<l:template name="example" text="Enghraifft %n"/>
+<l:template name="figure" text="Ffigur %n"/>
+<l:template name="part" text="Rhan %n"/>
+<l:template name="procedure" text="Trefn %n"/>
+<l:template name="productionset" text="Cynhyrchiad %n"/>
+<l:template name="qandadiv" text="C &amp; A %n"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="sect1" text="Adran %n"/>
+<l:template name="sect2" text="Adran %n"/>
+<l:template name="sect3" text="Adran %n"/>
+<l:template name="sect4" text="Adran %n"/>
+<l:template name="sect5" text="Adran %n"/>
+<l:template name="section" text="Adran %n"/>
+<l:template name="table" text="Tabl %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Atodiad %n, %t"/>
+<l:template name="bridgehead" text="Adran %n, “%tâ€"/>
+<l:template name="chapter" text="Pennod %n, %t"/>
+<l:template name="equation" text="Hafaliad %n, “%tâ€"/>
+<l:template name="example" text="Enghraifft %n, “%tâ€"/>
+<l:template name="figure" text="Ffigur %n, “%tâ€"/>
+<l:template name="part" text="Rhan %n, “%tâ€"/>
+<l:template name="procedure" text="Trefn %n, “%tâ€"/>
+<l:template name="productionset" text="Cynhyrchiad %n, “%tâ€"/>
+<l:template name="qandadiv" text="C &amp; A %n, “%tâ€"/>
+<l:template name="refsect1" text="yr adran o'r enw “%tâ€"/>
+<l:template name="refsect2" text="yr adran o'r enw “%tâ€"/>
+<l:template name="refsect3" text="yr adran o'r enw “%tâ€"/>
+<l:template name="refsection" text="yr adran o'r enw “%tâ€"/>
+<l:template name="sect1" text="Adran %n, “%tâ€"/>
+<l:template name="sect2" text="Adran %n, “%tâ€"/>
+<l:template name="sect3" text="Adran %n, “%tâ€"/>
+<l:template name="sect4" text="Adran %n, “%tâ€"/>
+<l:template name="sect5" text="Adran %n, “%tâ€"/>
+<l:template name="section" text="Adran %n, “%tâ€"/>
+<l:template name="simplesect" text="yr adran o'r enw “%tâ€"/>
+<l:template name="table" text="Tabl %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" a(c) "/>
+<l:template name="seplast" text=", a(c) "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Gweler %t."/>
+<l:template name="seealso" text="Gweler Hefyd %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Cynulleidfa: "/>
+<l:template name="MsgLevel" text="Lefel: "/>
+<l:template name="MsgOrig" text="Tarddiad: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/B"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Diffiniad: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Ionawr"/>
+<l:template name="February" text="Chwefror"/>
+<l:template name="March" text="Mawrth"/>
+<l:template name="April" text="Ebrill"/>
+<l:template name="May" text="Mai"/>
+<l:template name="June" text="Mehefin"/>
+<l:template name="July" text="Gorffenaf"/>
+<l:template name="August" text="Awst"/>
+<l:template name="September" text="Medi"/>
+<l:template name="October" text="Hydref"/>
+<l:template name="November" text="Tachwedd"/>
+<l:template name="December" text="Rhagfyr"/>
+<l:template name="Monday" text="Dydd Llun"/>
+<l:template name="Tuesday" text="Dydd Mawrth"/>
+<l:template name="Wednesday" text="Dydd Mercher"/>
+<l:template name="Thursday" text="Dydd Iau"/>
+<l:template name="Friday" text="Dydd Gwener"/>
+<l:template name="Saturday" text="Dydd Sadwrn"/>
+<l:template name="Sunday" text="Dydd Sul"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ion"/>
+<l:template name="Feb" text="Chwe"/>
+<l:template name="Mar" text="Maw"/>
+<l:template name="Apr" text="Ebr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Meh"/>
+<l:template name="Jul" text="Gorff"/>
+<l:template name="Aug" text="Awst"/>
+<l:template name="Sep" text="Medi"/>
+<l:template name="Oct" text="Hyd"/>
+<l:template name="Nov" text="Tach"/>
+<l:template name="Dec" text="Rhag"/>
+<l:template name="Mon" text="Llun"/>
+<l:template name="Tue" text="Mawrth"/>
+<l:template name="Wed" text="Mercher"/>
+<l:template name="Thu" text="Iau"/>
+<l:template name="Fri" text="Gwener"/>
+<l:template name="Sat" text="Sadwrn"/>
+<l:template name="Sun" text="Sul"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 Welsh (UNITED KINGDOM)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="35">Ch</l:l>
+<l:l i="35">ch</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="45">Dd</l:l>
+<l:l i="45">dd</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="65">Ff</l:l>
+<l:l i="65">ff</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="75">Ng</l:l>
+<l:l i="75">ng</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="125">Ll</l:l>
+<l:l i="125">ll</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="165">Ph</l:l>
+<l:l i="165">ph</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="185">Rh</l:l>
+<l:l i="185">rh</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="205">Th</l:l>
+<l:l i="205">th</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml
new file mode 100644
index 0000000..90eb01c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="da" english-language-name="Danish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/da.xml -->
+<!-- * -->
+<!-- * E-mail the edited da.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumé"/>
+<l:gentext key="abstract" text="resumé"/>
+<l:gentext key="Acknowledgements" text="Erkendelser"/>
+<l:gentext key="acknowledgements" text="erkendelser"/>
+<l:gentext key="Answer" text="Svar:"/>
+<l:gentext key="answer" text="svar:"/>
+<l:gentext key="Appendix" text="Appendiks"/>
+<l:gentext key="appendix" text="appendiks"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="artikel"/>
+<l:gentext key="Author" text="Forfatter"/>
+<l:gentext key="Bibliography" text="Litteraturliste"/>
+<l:gentext key="bibliography" text="litteraturliste"/>
+<l:gentext key="Book" text="Bog"/>
+<l:gentext key="book" text="bog"/>
+<l:gentext key="CAUTION" text="PAS PÃ…"/>
+<l:gentext key="Caution" text="Pas på"/>
+<l:gentext key="caution" text="pas på"/>
+<l:gentext key="Chapter" text="Kapitel"/>
+<l:gentext key="chapter" text="kapitel"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Ophavsret"/>
+<l:gentext key="copyright" text="ophavsret"/>
+<l:gentext key="Dedication" text="Tilegnet"/>
+<l:gentext key="dedication" text="tilegnet"/>
+<l:gentext key="Edition" text="Udgave"/>
+<l:gentext key="edition" text="udgave"/>
+<l:gentext key="Editor" text="Redaktør"/>
+<l:gentext key="Equation" text="Ligning"/>
+<l:gentext key="equation" text="ligning"/>
+<l:gentext key="Example" text="Eksempel"/>
+<l:gentext key="example" text="eksempel"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="figur"/>
+<l:gentext key="Glossary" text="Ordliste"/>
+<l:gentext key="glossary" text="ordliste"/>
+<l:gentext key="GlossSee" text="Se"/>
+<l:gentext key="glosssee" text="se"/>
+<l:gentext key="GlossSeeAlso" text="Se også"/>
+<l:gentext key="glossseealso" text="se også"/>
+<l:gentext key="IMPORTANT" text="VIGTIGT"/>
+<l:gentext key="important" text="vigtigt"/>
+<l:gentext key="Important" text="Vigtigt"/>
+<l:gentext key="Index" text="Stikordsregister"/>
+<l:gentext key="index" text="stikordsregister"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Retslig note"/>
+<l:gentext key="legalnotice" text="retslig note"/>
+<l:gentext key="MsgAud" text="MÃ¥lgruppe"/>
+<l:gentext key="msgaud" text="målgruppe"/>
+<l:gentext key="MsgLevel" text="Niveau"/>
+<l:gentext key="msglevel" text="niveau"/>
+<l:gentext key="MsgOrig" text="Grundlag"/>
+<l:gentext key="msgorig" text="grundlag"/>
+<l:gentext key="NOTE" text="BEMÆRK"/>
+<l:gentext key="Note" text="Bemærk"/>
+<l:gentext key="note" text="bemærk"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="del"/>
+<l:gentext key="Preface" text="Forord"/>
+<l:gentext key="preface" text="forord"/>
+<l:gentext key="Procedure" text="Procedure"/>
+<l:gentext key="procedure" text="procedure"/>
+<l:gentext key="ProductionSet" text="Produktion"/>
+<l:gentext key="PubDate" text="Udgivelsesdato"/>
+<l:gentext key="pubdate" text="udgivelsesdato"/>
+<l:gentext key="Published" text="Udgivet"/>
+<l:gentext key="published" text="udgivet"/>
+<l:gentext key="Publisher" text="Udgiver"/>
+<l:gentext key="Qandadiv" text="Spørgsmål og Svar"/>
+<l:gentext key="qandadiv" text="Spørgsmål og Svar"/>
+<l:gentext key="QandASet" text="Ofte stillede spørgsmål"/>
+<l:gentext key="Question" text="Spørgsmål:"/>
+<l:gentext key="question" text="spørgsmål:"/>
+<l:gentext key="RefEntry" text="Side"/>
+<l:gentext key="refentry" text="side"/>
+<l:gentext key="Reference" text="Henvisning"/>
+<l:gentext key="reference" text="henvisning"/>
+<l:gentext key="References" text="Henvisninger"/>
+<l:gentext key="RefName" text="Navn"/>
+<l:gentext key="refname" text="navn"/>
+<l:gentext key="RefSection" text="Afsnit"/>
+<l:gentext key="refsection" text="afsnit"/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="synopsis"/>
+<l:gentext key="RevHistory" text="Revisionshistorie"/>
+<l:gentext key="revhistory" text="revisionshistorie"/>
+<l:gentext key="revision" text="revision"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Afsnit"/>
+<l:gentext key="sect2" text="Afsnit"/>
+<l:gentext key="sect3" text="Afsnit"/>
+<l:gentext key="sect4" text="Afsnit"/>
+<l:gentext key="sect5" text="Afsnit"/>
+<l:gentext key="section" text="afsnit"/>
+<l:gentext key="Section" text="Afsnit"/>
+<l:gentext key="see" text="se"/>
+<l:gentext key="See" text="Se"/>
+<l:gentext key="seealso" text="se også"/>
+<l:gentext key="Seealso" text="Se også"/>
+<l:gentext key="SeeAlso" text="Se Også"/>
+<l:gentext key="set" text="sæt"/>
+<l:gentext key="Set" text="Sæt"/>
+<l:gentext key="setindex" text="sæt indeks"/>
+<l:gentext key="SetIndex" text="Sæt indeks"/>
+<l:gentext key="Sidebar" text="Sidebjælke"/>
+<l:gentext key="sidebar" text="sidebjælke"/>
+<l:gentext key="step" text="trin"/>
+<l:gentext key="Step" text="Trin"/>
+<l:gentext key="table" text="tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="opgave"/>
+<l:gentext key="Task" text="Opgave"/>
+<l:gentext key="tip" text="vink"/>
+<l:gentext key="TIP" text="VINK"/>
+<l:gentext key="Tip" text="Vink"/>
+<l:gentext key="Warning" text="Advarsel"/>
+<l:gentext key="warning" text="advarsel"/>
+<l:gentext key="WARNING" text="ADVARSEL"/>
+<l:gentext key="and" text="og"/>
+<l:gentext key="by" text="af"/>
+<l:gentext key="Edited" text="Redigeret"/>
+<l:gentext key="edited" text="redigeret"/>
+<l:gentext key="Editedby" text="Redigeret af"/>
+<l:gentext key="editedby" text="redigeret af"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=", "/>
+<l:gentext key="notes" text="slutbemærkning:"/>
+<l:gentext key="Notes" text="Slutbemærkning:"/>
+<l:gentext key="Pgs" text="Siderne"/>
+<l:gentext key="pgs" text="siderne"/>
+<l:gentext key="Revisedby" text="Revideret af: "/>
+<l:gentext key="revisedby" text="revideret af: "/>
+<l:gentext key="TableNotes" text="Noter:"/>
+<l:gentext key="tablenotes" text="noter:"/>
+<l:gentext key="TableofContents" text="Indholdsfortegnelse"/>
+<l:gentext key="tableofcontents" text="indholdsfortegnelse"/>
+<l:gentext key="unexpectedelementname" text="uventet elementnavn"/>
+<l:gentext key="unsupported" text="ikke understøttet"/>
+<l:gentext key="xrefto" text="krydshenvisning til"/>
+<l:gentext key="Authors" text="Forfattere"/>
+<l:gentext key="copyeditor" text="Kopieringsredaktør"/>
+<l:gentext key="graphicdesigner" text="Grafisk designer"/>
+<l:gentext key="productioneditor" text="Produktionsredaktør"/>
+<l:gentext key="technicaleditor" text="Tekniskredaktør"/>
+<l:gentext key="translator" text="Oversætter"/>
+<l:gentext key="listofequations" text="ligningsliste"/>
+<l:gentext key="ListofEquations" text="Ligningsliste"/>
+<l:gentext key="ListofExamples" text="Eksempelliste"/>
+<l:gentext key="listofexamples" text="eksempelliste"/>
+<l:gentext key="ListofFigures" text="Figurliste"/>
+<l:gentext key="listoffigures" text="figurliste"/>
+<l:gentext key="ListofProcedures" text="Procedureliste"/>
+<l:gentext key="listofprocedures" text="lrocedureliste"/>
+<l:gentext key="listoftables" text="tabelliste"/>
+<l:gentext key="ListofTables" text="Tabelliste"/>
+<l:gentext key="ListofUnknown" text="Liste over ukendte"/>
+<l:gentext key="listofunknown" text="liste over ukendte"/>
+<l:gentext key="nav-home" text="hjem"/>
+<l:gentext key="nav-next" text="næste"/>
+<l:gentext key="nav-next-sibling" text="hurtigt fremad"/>
+<l:gentext key="nav-prev" text="forrige"/>
+<l:gentext key="nav-prev-sibling" text="hurtigt tilbage"/>
+<l:gentext key="nav-up" text="op"/>
+<l:gentext key="nav-toc" text="Indholdsfortegnelse"/>
+<l:gentext key="Draft" text="Kladde"/>
+<l:gentext key="above" text="over"/>
+<l:gentext key="below" text="under"/>
+<l:gentext key="sectioncalled" text="afsnittet der hedder"/>
+<l:gentext key="index symbols" text="symboler"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzæøå"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendiks %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ligning %n. %t"/>
+<l:template name="example" text="Eksempel %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produktion %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spørgsmål: %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendiks %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Svar: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Spørgsmål: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spørgsmål: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="afsnittet der hedder “%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Svar: %n"/>
+<l:template name="appendix" text="Appendiks %n"/>
+<l:template name="bridgehead" text="Afsnit %n"/>
+<l:template name="chapter" text="Kapitel %n"/>
+<l:template name="equation" text="Ligning %n"/>
+<l:template name="example" text="Eksempel %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Procedure %n"/>
+<l:template name="productionset" text="Produktion %n"/>
+<l:template name="qandadiv" text="Spørgsmål og Svar %n"/>
+<l:template name="qandaentry" text="Spørgsmål: %n"/>
+<l:template name="question" text="Spørgsmål: %n"/>
+<l:template name="sect1" text="Afsnit %n"/>
+<l:template name="sect2" text="Afsnit %n"/>
+<l:template name="sect3" text="Afsnit %n"/>
+<l:template name="sect4" text="Afsnit %n"/>
+<l:template name="sect5" text="Afsnit %n"/>
+<l:template name="section" text="Afsnit %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendiks %n, %t"/>
+<l:template name="bridgehead" text="Afsnit %n, “%tâ€"/>
+<l:template name="chapter" text="Kapitel %n, %t"/>
+<l:template name="equation" text="Ligning %n, “%tâ€"/>
+<l:template name="example" text="Eksempel %n, “%tâ€"/>
+<l:template name="figure" text="Figur %n, “%tâ€"/>
+<l:template name="part" text="Del %n, “%tâ€"/>
+<l:template name="procedure" text="Procedure %n, “%tâ€"/>
+<l:template name="productionset" text="Produktion %n, “%tâ€"/>
+<l:template name="qandadiv" text="SpørgsmÃ¥l og Svar %n, “%tâ€"/>
+<l:template name="refsect1" text="afsnittet der hedder “%tâ€"/>
+<l:template name="refsect2" text="afsnittet der hedder “%tâ€"/>
+<l:template name="refsect3" text="afsnittet der hedder “%tâ€"/>
+<l:template name="refsection" text="afsnittet der hedder “%tâ€"/>
+<l:template name="sect1" text="Afsnit %n, “%tâ€"/>
+<l:template name="sect2" text="Afsnit %n, “%tâ€"/>
+<l:template name="sect3" text="Afsnit %n, “%tâ€"/>
+<l:template name="sect4" text="Afsnit %n, “%tâ€"/>
+<l:template name="sect5" text="Afsnit %n, “%tâ€"/>
+<l:template name="section" text="Afsnit %n, “%tâ€"/>
+<l:template name="simplesect" text="afsnittet der hedder “%tâ€"/>
+<l:template name="table" text="Tabel %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" og "/>
+<l:template name="seplast" text=" og "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Se %t."/>
+<l:template name="seealso" text="Se også %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="MÃ¥lgruppe: "/>
+<l:template name="MsgLevel" text="Niveau: "/>
+<l:template name="MsgOrig" text="Grundlag: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januar"/>
+<l:template name="February" text="Februar"/>
+<l:template name="March" text="Marts"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Mandag"/>
+<l:template name="Tuesday" text="Tirsdag"/>
+<l:template name="Wednesday" text="Onsdag"/>
+<l:template name="Thursday" text="Torsdag"/>
+<l:template name="Friday" text="Fredag"/>
+<l:template name="Saturday" text="Lørdag"/>
+<l:template name="Sunday" text="Søndag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Man"/>
+<l:template name="Tue" text="Tir"/>
+<l:template name="Wed" text="ins"/>
+<l:template name="Thu" text="Tor"/>
+<l:template name="Fri" text="Fre"/>
+<l:template name="Sat" text="Lør"/>
+<l:template name="Sun" text="Søn"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0406 Danish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+<l:l i="27">Æ</l:l>
+<l:l i="27">æ</l:l>
+<l:l i="28">Ø</l:l>
+<l:l i="28">ø</l:l>
+<l:l i="29">Ã…</l:l>
+<l:l i="29">Ã¥</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml
new file mode 100644
index 0000000..0403153
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml
@@ -0,0 +1,666 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="de" english-language-name="German">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/de.xml -->
+<!-- * -->
+<!-- * E-mail the edited de.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Zusammenfassung"/>
+<l:gentext key="abstract" text="Zusammenfassung"/>
+<l:gentext key="Acknowledgements" text="Danksagungen"/>
+<l:gentext key="acknowledgements" text="Danksagungen"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Anhang"/>
+<l:gentext key="appendix" text="Anhang"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="Artikel"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Literaturverzeichnis"/>
+<l:gentext key="bibliography" text="Literaturverzeichnis"/>
+<l:gentext key="Book" text="Buch"/>
+<l:gentext key="book" text="Buch"/>
+<l:gentext key="CAUTION" text="ACHTUNG"/>
+<l:gentext key="Caution" text="Achtung"/>
+<l:gentext key="caution" text="Achtung"/>
+<l:gentext key="Chapter" text="Kapitel"/>
+<l:gentext key="chapter" text="Kapitel"/>
+<l:gentext key="Colophon" text="Kolophon"/>
+<l:gentext key="colophon" text="Kolophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Widmung"/>
+<l:gentext key="dedication" text="Widmung"/>
+<l:gentext key="Edition" text="Ausgabe"/>
+<l:gentext key="edition" text="Ausgabe"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Gleichung"/>
+<l:gentext key="equation" text="Gleichung"/>
+<l:gentext key="Example" text="Beispiel"/>
+<l:gentext key="example" text="Beispiel"/>
+<l:gentext key="Figure" text="Abbildung"/>
+<l:gentext key="figure" text="Abbildung"/>
+<l:gentext key="Glossary" text="Glossar"/>
+<l:gentext key="glossary" text="Glossar"/>
+<l:gentext key="GlossSee" text="Siehe"/>
+<l:gentext key="glosssee" text="Siehe"/>
+<l:gentext key="GlossSeeAlso" text="Siehe auch"/>
+<l:gentext key="glossseealso" text="Siehe auch"/>
+<l:gentext key="IMPORTANT" text="WICHTIG"/>
+<l:gentext key="important" text="Wichtig"/>
+<l:gentext key="Important" text="Wichtig"/>
+<l:gentext key="Index" text="Stichwortverzeichnis"/>
+<l:gentext key="index" text="Stichwortverzeichnis"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Rechtlicher Hinweis"/>
+<l:gentext key="legalnotice" text="Rechtlicher Hinweis"/>
+<l:gentext key="MsgAud" text="Zielgruppe"/>
+<l:gentext key="msgaud" text="Zielgruppe"/>
+<l:gentext key="MsgLevel" text="Dringlichkeit"/>
+<l:gentext key="msglevel" text="Dringlichkeit"/>
+<l:gentext key="MsgOrig" text="Ursprung"/>
+<l:gentext key="msgorig" text="Ursprung"/>
+<l:gentext key="NOTE" text="ANMERKUNG"/>
+<l:gentext key="Note" text="Anmerkung"/>
+<l:gentext key="note" text="Anmerkung"/>
+<l:gentext key="Part" text="Teil"/>
+<l:gentext key="part" text="Teil"/>
+<l:gentext key="Preface" text="Vorwort"/>
+<l:gentext key="preface" text="Vorwort"/>
+<l:gentext key="Procedure" text="Prozedur"/>
+<l:gentext key="procedure" text="Prozedur"/>
+<l:gentext key="ProductionSet" text="Produktion"/>
+<l:gentext key="PubDate" text="Veröffentlicht"/>
+<l:gentext key="pubdate" text="Veröffentlicht"/>
+<l:gentext key="Published" text="Veröffentlicht"/>
+<l:gentext key="published" text="Veröffentlicht"/>
+<l:gentext key="Publisher" text="Herausgeber"/>
+<l:gentext key="Qandadiv" text="F &amp; A"/>
+<l:gentext key="qandadiv" text="F &amp; A"/>
+<l:gentext key="QandASet" text="Häufig gestellte Fragen"/>
+<l:gentext key="Question" text="F:"/>
+<l:gentext key="question" text="F:"/>
+<l:gentext key="RefEntry" text="Seite"/>
+<l:gentext key="refentry" text="seite"/>
+<l:gentext key="Reference" text="Verweis"/>
+<l:gentext key="reference" text="Verweis"/>
+<l:gentext key="References" text="Verweise"/>
+<l:gentext key="RefName" text="Name"/>
+<l:gentext key="refname" text="Name"/>
+<l:gentext key="RefSection" text="Abschnitt"/>
+<l:gentext key="refsection" text="Abschnitt"/>
+<l:gentext key="RefSynopsisDiv" text="Ãœbersicht"/>
+<l:gentext key="refsynopsisdiv" text="Ãœbersicht"/>
+<l:gentext key="RevHistory" text="Versionsgeschichte"/>
+<l:gentext key="revhistory" text="Versionsgeschichte"/>
+<l:gentext key="revision" text="Version"/>
+<l:gentext key="Revision" text="Version"/>
+<l:gentext key="sect1" text="Abschnitt"/>
+<l:gentext key="sect2" text="Abschnitt"/>
+<l:gentext key="sect3" text="Abschnitt"/>
+<l:gentext key="sect4" text="Abschnitt"/>
+<l:gentext key="sect5" text="Abschnitt"/>
+<l:gentext key="section" text="Abschnitt"/>
+<l:gentext key="Section" text="Abschnitt"/>
+<l:gentext key="see" text="Siehe"/>
+<l:gentext key="See" text="Siehe"/>
+<l:gentext key="seealso" text="Siehe auch"/>
+<l:gentext key="Seealso" text="Siehe auch"/>
+<l:gentext key="SeeAlso" text="Siehe auch"/>
+<l:gentext key="set" text="Satz"/>
+<l:gentext key="Set" text="Satz"/>
+<l:gentext key="setindex" text="Stichwortverzeichnis"/>
+<l:gentext key="SetIndex" text="Stichwortverzeichnis"/>
+<l:gentext key="Sidebar" text="Randnotiz"/>
+<l:gentext key="sidebar" text="randnotiz"/>
+<l:gentext key="step" text="Schritt"/>
+<l:gentext key="Step" text="Schritt"/>
+<l:gentext key="table" text="Tabelle"/>
+<l:gentext key="Table" text="Tabelle"/>
+<l:gentext key="task" text="aufgabe"/>
+<l:gentext key="Task" text="Aufgabe"/>
+<l:gentext key="tip" text="Tipp"/>
+<l:gentext key="TIP" text="TIPP"/>
+<l:gentext key="Tip" text="Tipp"/>
+<l:gentext key="Warning" text="Warnung"/>
+<l:gentext key="warning" text="Warnung"/>
+<l:gentext key="WARNING" text="WARNUNG"/>
+<l:gentext key="and" text="und"/>
+<l:gentext key="by" text="von"/>
+<l:gentext key="Edited" text="Herausgegeben"/>
+<l:gentext key="edited" text="Herausgegeben"/>
+<l:gentext key="Editedby" text="Herausgegeben von"/>
+<l:gentext key="editedby" text="Herausgegeben von"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Fußnoten"/>
+<l:gentext key="Notes" text="Fußnoten"/>
+<l:gentext key="Pgs" text="Seiten"/>
+<l:gentext key="pgs" text="Seiten"/>
+<l:gentext key="Revisedby" text="Geändert durch: "/>
+<l:gentext key="revisedby" text="Geändert durch: "/>
+<l:gentext key="TableNotes" text="Bemerkungen"/>
+<l:gentext key="tablenotes" text="Bemerkungen"/>
+<l:gentext key="TableofContents" text="Inhaltsverzeichnis"/>
+<l:gentext key="tableofcontents" text="Inhaltsverzeichnis"/>
+<l:gentext key="unexpectedelementname" text="Unerwarteter Elementname"/>
+<l:gentext key="unsupported" text="wird nicht unterstützt"/>
+<l:gentext key="xrefto" text="xref auf"/>
+<l:gentext key="Authors" text="Autoren"/>
+<l:gentext key="copyeditor" text="Korrekteur"/>
+<l:gentext key="graphicdesigner" text="Grafikgestalter"/>
+<l:gentext key="productioneditor" text="Produktions-Verfasser"/>
+<l:gentext key="technicaleditor" text="Technischer Verfasser"/>
+<l:gentext key="translator" text="Ãœbersetzer"/>
+<l:gentext key="listofequations" text="Gleichungen"/>
+<l:gentext key="ListofEquations" text="Gleichungen"/>
+<l:gentext key="ListofExamples" text="Liste der Beispiele"/>
+<l:gentext key="listofexamples" text="Liste der Beispiele"/>
+<l:gentext key="ListofFigures" text="Abbildungsverzeichnis"/>
+<l:gentext key="listoffigures" text="Abbildungsverzeichnis"/>
+<l:gentext key="ListofProcedures" text="Liste der Prozeduren"/>
+<l:gentext key="listofprocedures" text="Liste der Prozeduren"/>
+<l:gentext key="listoftables" text="Tabellenverzeichnis"/>
+<l:gentext key="ListofTables" text="Tabellenverzeichnis"/>
+<l:gentext key="ListofUnknown" text="???-Verzeichnis"/>
+<l:gentext key="listofunknown" text="???-Verzeichnis"/>
+<l:gentext key="nav-home" text="Zum Anfang"/>
+<l:gentext key="nav-next" text="Weiter"/>
+<l:gentext key="nav-next-sibling" text="Schnell weiter"/>
+<l:gentext key="nav-prev" text="Zurück"/>
+<l:gentext key="nav-prev-sibling" text="Schnell zurück"/>
+<l:gentext key="nav-up" text="Nach oben"/>
+<l:gentext key="nav-toc" text="InhV"/>
+<l:gentext key="Draft" text="Entwurf"/>
+<l:gentext key="above" text="oben"/>
+<l:gentext key="below" text="unten"/>
+<l:gentext key="sectioncalled" text="der Abschnitt namens"/>
+<l:gentext key="index symbols" text="Symbole"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzäöüß"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‚"/>
+<l:dingbat key="nestedendquote" text="‘"/>
+<l:dingbat key="singlestartquote" text="‚"/>
+<l:dingbat key="singleendquote" text="‘"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Anhang %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Gleichung %n. %t"/>
+<l:template name="example" text="Beispiel %n. %t"/>
+<l:template name="figure" text="Abbildung %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Teil %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prozedur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produktion %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabelle %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Anhang %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="part" text="Teil %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="F: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(Seite %p)"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(S. %p)"/>
+<l:template name="Page" text="Seite %p"/>
+<l:template name="bridgehead" text="„%t“"/>
+<l:template name="refsection" text="„%t“"/>
+<l:template name="refsect1" text="„%t“"/>
+<l:template name="refsect2" text="„%t“"/>
+<l:template name="refsect3" text="„%t“"/>
+<l:template name="sect1" text="„%t“"/>
+<l:template name="sect2" text="„%t“"/>
+<l:template name="sect3" text="„%t“"/>
+<l:template name="sect4" text="„%t“"/>
+<l:template name="sect5" text="„%t“"/>
+<l:template name="section" text="„%t“"/>
+<l:template name="simplesect" text="„%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Anhang %n"/>
+<l:template name="bridgehead" text="Abschnitt %n"/>
+<l:template name="chapter" text="Kapitel %n"/>
+<l:template name="equation" text="Gleichung %n"/>
+<l:template name="example" text="Beispiel %n"/>
+<l:template name="figure" text="Abbildung %n"/>
+<l:template name="part" text="Teil %n"/>
+<l:template name="procedure" text="Prozedur %n"/>
+<l:template name="productionset" text="Produktion %n"/>
+<l:template name="qandadiv" text="F &amp; A %n"/>
+<l:template name="qandaentry" text="F: %n"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="sect1" text="Abschnitt %n"/>
+<l:template name="sect2" text="Abschnitt %n"/>
+<l:template name="sect3" text="Abschnitt %n"/>
+<l:template name="sect4" text="Abschnitt %n"/>
+<l:template name="sect5" text="Abschnitt %n"/>
+<l:template name="section" text="Abschnitt %n"/>
+<l:template name="table" text="Tabelle %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Anhang %n, %t"/>
+<l:template name="bridgehead" text="Abschnitt %n, „%t“"/>
+<l:template name="chapter" text="Kapitel %n, %t"/>
+<l:template name="equation" text="Gleichung %n, „%t“"/>
+<l:template name="example" text="Beispiel %n, „%t“"/>
+<l:template name="figure" text="Abbildung %n, „%t“"/>
+<l:template name="part" text="Teil %n, „%t“"/>
+<l:template name="procedure" text="Prozedur %n, „%t“"/>
+<l:template name="productionset" text="Produktion %n, „%t“"/>
+<l:template name="qandadiv" text="F &amp; A %n, „%t“"/>
+<l:template name="refsect1" text="der Abschnitt namens „%t“"/>
+<l:template name="refsect2" text="der Abschnitt namens „%t“"/>
+<l:template name="refsect3" text="der Abschnitt namens „%t“"/>
+<l:template name="refsection" text="der Abschnitt namens „%t“"/>
+<l:template name="sect1" text="Abschnitt %n, „%t“"/>
+<l:template name="sect2" text="Abschnitt %n, „%t“"/>
+<l:template name="sect3" text="Abschnitt %n, „%t“"/>
+<l:template name="sect4" text="Abschnitt %n, „%t“"/>
+<l:template name="sect5" text="Abschnitt %n, „%t“"/>
+<l:template name="section" text="Abschnitt %n, „%t“"/>
+<l:template name="simplesect" text="der Abschnitt namens „%t“"/>
+<l:template name="table" text="Tabelle %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" und "/>
+<l:template name="seplast" text=" und "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Siehe %t."/>
+<l:template name="seealso" text="Siehe auch %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Zielgruppe: "/>
+<l:template name="MsgLevel" text="Dringlichkeit: "/>
+<l:template name="MsgOrig" text="Ursprung: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januar"/>
+<l:template name="February" text="Februar"/>
+<l:template name="March" text="März"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Mai"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="Dezember"/>
+<l:template name="Monday" text="Montag"/>
+<l:template name="Tuesday" text="Dienstag"/>
+<l:template name="Wednesday" text="Mittwoch"/>
+<l:template name="Thursday" text="Donnerstag"/>
+<l:template name="Friday" text="Freitag"/>
+<l:template name="Saturday" text="Samstag"/>
+<l:template name="Sunday" text="Sonntag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dez"/>
+<l:template name="Mon" text="Mo"/>
+<l:template name="Tue" text="Di"/>
+<l:template name="Wed" text="Mi"/>
+<l:template name="Thu" text="Do"/>
+<l:template name="Fri" text="Fr"/>
+<l:template name="Sat" text="Sa"/>
+<l:template name="Sun" text="So"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0407 German (GERMANY)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbole</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">Ä</l:l>
+<l:l i="1">ä</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="15">Ö</l:l>
+<l:l i="15">ö</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="21">Ü</l:l>
+<l:l i="21">ü</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml
new file mode 100644
index 0000000..f8461d1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml
@@ -0,0 +1,729 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="el" english-language-name="Greek">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/el.xml -->
+<!-- * -->
+<!-- * E-mail the edited el.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ΠεÏίληψη"/>
+<l:gentext key="abstract" text="πεÏίληψη"/>
+<l:gentext key="Acknowledgements" text="ΑναγνωÏίσεις"/>
+<l:gentext key="acknowledgements" text="αναγνωÏίσεις"/>
+<l:gentext key="Answer" text="Α:"/>
+<l:gentext key="answer" text="α:"/>
+<l:gentext key="Appendix" text="ΠαÏάÏτημα"/>
+<l:gentext key="appendix" text="παÏάÏτημα"/>
+<l:gentext key="Article" text="ΆÏθÏο"/>
+<l:gentext key="article" text="άÏθÏο"/>
+<l:gentext key="Author" text="ΣυγγÏαφέας"/>
+<l:gentext key="Bibliography" text="ΒιβλιογÏαφία"/>
+<l:gentext key="bibliography" text="βιβλιογÏαφία"/>
+<l:gentext key="Book" text="Βιβλίο"/>
+<l:gentext key="book" text="βιβλίο"/>
+<l:gentext key="CAUTION" text="ΠΡΟΣΟΧΗ"/>
+<l:gentext key="Caution" text="ΠÏοσοχή"/>
+<l:gentext key="caution" text="Ï€Ïοσοχή"/>
+<l:gentext key="Chapter" text="Κεφάλαιο"/>
+<l:gentext key="chapter" text="κεφάλαιο"/>
+<l:gentext key="Colophon" text="ΚοÏωνίδα"/>
+<l:gentext key="colophon" text="κοÏωνίδα"/>
+<l:gentext key="Copyright" text="Πνευματικά Δικαιώματα"/>
+<l:gentext key="copyright" text="πνευματικά Δικαιώματα"/>
+<l:gentext key="Dedication" text="ΑφιέÏωση"/>
+<l:gentext key="dedication" text="αφιέÏωση"/>
+<l:gentext key="Edition" text="Έκδοση"/>
+<l:gentext key="edition" text="έκδοση"/>
+<l:gentext key="Editor" text="Εκδότης"/>
+<l:gentext key="Equation" text="Εξίσωση"/>
+<l:gentext key="equation" text="εξίσωση"/>
+<l:gentext key="Example" text="ΠαÏάδειγμα"/>
+<l:gentext key="example" text="παÏάδειγμα"/>
+<l:gentext key="Figure" text="Σχήμα"/>
+<l:gentext key="figure" text="σχήμα"/>
+<l:gentext key="Glossary" text="ΓλωσσάÏιο"/>
+<l:gentext key="glossary" text="γλωσσάÏιο"/>
+<l:gentext key="GlossSee" text="Δείτε"/>
+<l:gentext key="glosssee" text="δείτε"/>
+<l:gentext key="GlossSeeAlso" text="Δείτε Επίσης"/>
+<l:gentext key="glossseealso" text="δείτε Επίσης"/>
+<l:gentext key="IMPORTANT" text="ΣΗΜΑÎΤΙΚΟ"/>
+<l:gentext key="important" text="σημαντικό"/>
+<l:gentext key="Important" text="Σημαντικό"/>
+<l:gentext key="Index" text="ΕυÏετήÏιο"/>
+<l:gentext key="index" text="ευÏετήÏιο"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Îομική Σημείωση"/>
+<l:gentext key="legalnotice" text="νομική σημείωση"/>
+<l:gentext key="MsgAud" text="ΑκÏοατήÏιο"/>
+<l:gentext key="msgaud" text="ακÏοατήÏιο"/>
+<l:gentext key="MsgLevel" text="Επίπεδο"/>
+<l:gentext key="msglevel" text="επίπεδο"/>
+<l:gentext key="MsgOrig" text="Πηγή"/>
+<l:gentext key="msgorig" text="πηγή"/>
+<l:gentext key="NOTE" text="ΣΗΜΕΙΩΣΗ"/>
+<l:gentext key="Note" text="Σημείωση"/>
+<l:gentext key="note" text="σημείωση"/>
+<l:gentext key="Part" text="ΜέÏος"/>
+<l:gentext key="part" text="μέÏος"/>
+<l:gentext key="Preface" text="Εισαγωγή"/>
+<l:gentext key="preface" text="εισαγωγή"/>
+<l:gentext key="Procedure" text="Διαδικασία"/>
+<l:gentext key="procedure" text="διαδικασία"/>
+<l:gentext key="ProductionSet" text="ΠαÏαγωγή"/>
+<l:gentext key="PubDate" text="ΗμεÏομηνία Δημοσίευσης"/>
+<l:gentext key="pubdate" text="ημεÏομηνία Δημοσίευσης"/>
+<l:gentext key="Published" text="Δημοσιευμένο"/>
+<l:gentext key="published" text="δημοσιευμένο"/>
+<l:gentext key="Publisher" text="Εκδότης"/>
+<l:gentext key="Qandadiv" text="Ε και Α"/>
+<l:gentext key="qandadiv" text="ε και α"/>
+<l:gentext key="QandASet" text="Συχνές ΕÏωτήσεις"/>
+<l:gentext key="Question" text="Ε:"/>
+<l:gentext key="question" text="ε:"/>
+<l:gentext key="RefEntry" text="Σελίδα"/>
+<l:gentext key="refentry" text="σελίδα"/>
+<l:gentext key="Reference" text="ΑναφοÏά"/>
+<l:gentext key="reference" text="αναφοÏά"/>
+<l:gentext key="References" text="ΑναφοÏές"/>
+<l:gentext key="RefName" text="Όνομα"/>
+<l:gentext key="refname" text="όνομα"/>
+<l:gentext key="RefSection" text="Τμήμα"/>
+<l:gentext key="refsection" text="τμήμα"/>
+<l:gentext key="RefSynopsisDiv" text="ΣÏνοψη"/>
+<l:gentext key="refsynopsisdiv" text="σÏνοψη"/>
+<l:gentext key="RevHistory" text="ΙστοÏικό ΑναθεωÏήσεων"/>
+<l:gentext key="revhistory" text="ιστοÏικό αναθεωÏήσεων"/>
+<l:gentext key="revision" text="αναθεώÏηση"/>
+<l:gentext key="Revision" text="ΑναθεώÏηση"/>
+<l:gentext key="sect1" text="Τμήμα"/>
+<l:gentext key="sect2" text="Τμήμα"/>
+<l:gentext key="sect3" text="Τμήμα"/>
+<l:gentext key="sect4" text="Τμήμα"/>
+<l:gentext key="sect5" text="Τμήμα"/>
+<l:gentext key="section" text="τμήμα"/>
+<l:gentext key="Section" text="Τμήμα"/>
+<l:gentext key="see" text="δείτε"/>
+<l:gentext key="See" text="Δείτε"/>
+<l:gentext key="seealso" text="δείτε Επίσης"/>
+<l:gentext key="Seealso" text="Δείτε επίσης"/>
+<l:gentext key="SeeAlso" text="Δείτε Επίσης"/>
+<l:gentext key="set" text="σÏνολο"/>
+<l:gentext key="Set" text="ΣÏνολο"/>
+<l:gentext key="setindex" text="ευÏετήÏιο συνόλων"/>
+<l:gentext key="SetIndex" text="ΕυÏετήÏιο Συνόλων"/>
+<l:gentext key="Sidebar" text="ΠλευÏική γÏαμμή εÏγαλείων"/>
+<l:gentext key="sidebar" text="πλευÏική γÏαμμή εÏγαλείων"/>
+<l:gentext key="step" text="φάση"/>
+<l:gentext key="Step" text="Φάση"/>
+<l:gentext key="table" text="πίνακας"/>
+<l:gentext key="Table" text="Πίνακας"/>
+<l:gentext key="task" text="εÏγασία"/>
+<l:gentext key="Task" text="ΕÏγασία"/>
+<l:gentext key="tip" text="υπόδειξη"/>
+<l:gentext key="TIP" text="ΥΠΟΔΕΙΞΗ"/>
+<l:gentext key="Tip" text="Υπόδειξη"/>
+<l:gentext key="Warning" text="ΠÏοειδοποίηση"/>
+<l:gentext key="warning" text="Ï€Ïοειδοποίηση"/>
+<l:gentext key="WARNING" text="ΠΡΟΕΙΔΟΠΟΙΗΣΗ"/>
+<l:gentext key="and" text="και"/>
+<l:gentext key="by" text="από"/>
+<l:gentext key="Edited" text="Επιμέλεια"/>
+<l:gentext key="edited" text="επιμέλεια"/>
+<l:gentext key="Editedby" text="Επιμέλεια από"/>
+<l:gentext key="editedby" text="επιμέλεια από"/>
+<l:gentext key="in" text="σε"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="σημειώσεις"/>
+<l:gentext key="Notes" text="Σημειώσεις"/>
+<l:gentext key="Pgs" text="Σλδς."/>
+<l:gentext key="pgs" text="σλδς."/>
+<l:gentext key="Revisedby" text="Επιμέλεια από: "/>
+<l:gentext key="revisedby" text="επιμέλεια από: "/>
+<l:gentext key="TableNotes" text="Σημειώσεις"/>
+<l:gentext key="tablenotes" text="σημειώσεις"/>
+<l:gentext key="TableofContents" text="Πίνακας ΠεÏιεχομένων"/>
+<l:gentext key="tableofcontents" text="πίνακας ΠεÏιεχομένων"/>
+<l:gentext key="unexpectedelementname" text="μη αναμενόμενο όνομα στοιχείου"/>
+<l:gentext key="unsupported" text="μη υποστηÏιζόμενο"/>
+<l:gentext key="xrefto" text="αντιπαÏαπομπή σε"/>
+<l:gentext key="Authors" text="ΣυγγÏαφείς"/>
+<l:gentext key="copyeditor" text="Συντάκτης"/>
+<l:gentext key="graphicdesigner" text="Σχεδιαστής γÏαφικών"/>
+<l:gentext key="productioneditor" text="Εκδότης ΠαÏαγωγής"/>
+<l:gentext key="technicaleditor" text="Τεχνικός Εκδότης"/>
+<l:gentext key="translator" text="ΜεταφÏαστής"/>
+<l:gentext key="listofequations" text="κατάλογος εξισώσεων"/>
+<l:gentext key="ListofEquations" text="Κατάλογος Εξισώσεων"/>
+<l:gentext key="ListofExamples" text="Κατάλογος ΠαÏαδειγμάτων"/>
+<l:gentext key="listofexamples" text="κατάλογος παÏαδειγμάτων"/>
+<l:gentext key="ListofFigures" text="Κατάλογος Σχημάτων"/>
+<l:gentext key="listoffigures" text="κατάλογος σχημάτων"/>
+<l:gentext key="ListofProcedures" text="Κατάλογος Σχημάτων"/>
+<l:gentext key="listofprocedures" text="κατάλογος σχημάτων"/>
+<l:gentext key="listoftables" text="κατάλογος πινάκων"/>
+<l:gentext key="ListofTables" text="Κατάλογος Πινάκων"/>
+<l:gentext key="ListofUnknown" text="Κατάλογος Αγνώστων"/>
+<l:gentext key="listofunknown" text="κατάλογος αγνώστων;"/>
+<l:gentext key="nav-home" text="ΑÏχή"/>
+<l:gentext key="nav-next" text="Επόμενο"/>
+<l:gentext key="nav-next-sibling" text="ΠÏος το τέλος"/>
+<l:gentext key="nav-prev" text="ΠÏοηγ"/>
+<l:gentext key="nav-prev-sibling" text="ΠÏος την αÏχή"/>
+<l:gentext key="nav-up" text="Πάνω"/>
+<l:gentext key="nav-toc" text="Πίνακας πεÏιεχομένων"/>
+<l:gentext key="Draft" text="ΠÏοσχέδιο"/>
+<l:gentext key="above" text="πάνω"/>
+<l:gentext key="below" text="κάτω"/>
+<l:gentext key="sectioncalled" text="το τμήμα ονομάζεται"/>
+<l:gentext key="index symbols" text="ΣÏμβολα"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="αβγδεζηθικλμνξοπÏστυφχψω"/>
+<l:gentext key="uppercase.alpha" text="ΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩ"/>
+<l:gentext key="normalize.sort.input" text="ΑαΆάΒβΓγΔδΕεΈέΖζΗηΉήΘθΙιΊίΪϊÎΚκΛλΜμÎνΞξΟοΌόΠπΡÏΣσςΤτΥυΎÏΫϋΰΦφΧχΨψΩωÎÏŽ"/>
+<l:gentext key="normalize.sort.output" text="ΑΑΑΑΒΒΓΓΔΔΕΕΕΕΖΖΗΗΗΗΘΘΙΙΙΙΙΙΙΚΚΛΛΜΜÎÎΞΞΟΟΟΟΠΠΡΡΣΣΣΤΤΥΥΥΥΥΥΥΦΦΧΧΨΨΩΩΩΩ"/>
+<l:dingbat key="startquote" text="&amp;#x201C;"/>
+<l:dingbat key="endquote" text="&amp;#x201D;"/>
+<l:dingbat key="nestedstartquote" text="&amp;#x2018;"/>
+<l:dingbat key="nestedendquote" text="&amp;#x2019;"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="&amp;#x2022;"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ΠαÏάÏτημα %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Κεφάλαιο %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Εξίσωση %n. %t"/>
+<l:template name="example" text="ΠαÏάδειγμα %n. %t"/>
+<l:template name="figure" text="Σχήμα %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ΜέÏος %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Διαδικασία %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ΠαÏαγωγή %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Πίνακας %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ΠαÏάÏτημα %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Κεφάλαιο %n. %t"/>
+<l:template name="part" text="ΜέÏος %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Α: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Ε: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Ε: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsection" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect1" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect2" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect3" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect1" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect2" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect3" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect4" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect5" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="section" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="simplesect" text="&amp;#x201C;%t&amp;#x201D;"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Α: %n"/>
+<l:template name="appendix" text="ΠαÏάÏτημα %n"/>
+<l:template name="bridgehead" text="Τμήμα %n"/>
+<l:template name="chapter" text="Κεφάλαιο %n"/>
+<l:template name="equation" text="Εξίσωση %n"/>
+<l:template name="example" text="ΠαÏάδειγμα %n"/>
+<l:template name="figure" text="Σχήμα %n"/>
+<l:template name="part" text="ΜέÏος %n"/>
+<l:template name="procedure" text="Διαδικασία %n"/>
+<l:template name="productionset" text="ΠαÏαγωγή %n"/>
+<l:template name="qandadiv" text="Ε και Α %n"/>
+<l:template name="qandaentry" text="Ε: %n"/>
+<l:template name="question" text="Ε: %n"/>
+<l:template name="sect1" text="Τμήμα %n"/>
+<l:template name="sect2" text="Τμήμα %n"/>
+<l:template name="sect3" text="Τμήμα %n"/>
+<l:template name="sect4" text="Τμήμα %n"/>
+<l:template name="sect5" text="Τμήμα %n"/>
+<l:template name="section" text="Τμήμα %n"/>
+<l:template name="table" text="Πίνακας %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ΠαÏάÏτημα %n, %t"/>
+<l:template name="bridgehead" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="chapter" text="Κεφάλαιο %n, %t"/>
+<l:template name="equation" text="Εξίσωση %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="example" text="ΠαÏάδειγμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="figure" text="Σχήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="part" text="ΜέÏος %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="procedure" text="Διαδικασία %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="productionset" text="ΠαÏαγωγή %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="qandadiv" text="Ε και Α %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect1" text="το τμήμα ονομάζεται &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect2" text="το τμήμα ονομάζεται &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect3" text="το τμήμα ονομάζεται &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsection" text="το τμήμα ονομάζεται &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect1" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect2" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect3" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect4" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect5" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="section" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="simplesect" text="το τμήμα ονομάζεται &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="table" text="Πίνακας %n, &amp;#x201C;%t&amp;#x201D;"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" και "/>
+<l:template name="seplast" text=", και "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Δείτε %t."/>
+<l:template name="seealso" text="Δείτε Επίσης %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ΑκÏοατήÏιο: "/>
+<l:template name="MsgLevel" text="Επίπεδο: "/>
+<l:template name="MsgOrig" text="Πηγή: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ΙανουάÏιος"/>
+<l:template name="February" text="ΦεβÏουάÏιος"/>
+<l:template name="March" text="ΜάÏτιος"/>
+<l:template name="April" text="ΑπÏίλιος"/>
+<l:template name="May" text="Μάιος"/>
+<l:template name="June" text="ΙοÏνιος"/>
+<l:template name="July" text="ΙοÏλιος"/>
+<l:template name="August" text="ΑÏγουστος"/>
+<l:template name="September" text="ΣεπτέμβÏιος"/>
+<l:template name="October" text="ΟκτώβÏιος"/>
+<l:template name="November" text="ÎοέμβÏιος"/>
+<l:template name="December" text="ΔεκέμβÏιος"/>
+<l:template name="Monday" text="ΔευτέÏα"/>
+<l:template name="Tuesday" text="ΤÏίτη"/>
+<l:template name="Wednesday" text="ΤετάÏτη"/>
+<l:template name="Thursday" text="Πέμπτη"/>
+<l:template name="Friday" text="ΠαÏασκευή"/>
+<l:template name="Saturday" text="Σάββατο"/>
+<l:template name="Sunday" text="ΚυÏιακή"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ιαν"/>
+<l:template name="Feb" text="Φλεβ"/>
+<l:template name="Mar" text="ΜάÏ"/>
+<l:template name="Apr" text="ΑπÏ"/>
+<l:template name="May" text="Μάης"/>
+<l:template name="Jun" text="ΙοÏν"/>
+<l:template name="Jul" text="ΙοÏλ"/>
+<l:template name="Aug" text="ΑÏγ"/>
+<l:template name="Sep" text="Σεπτ"/>
+<l:template name="Oct" text="Οκτ"/>
+<l:template name="Nov" text="Îοεμ"/>
+<l:template name="Dec" text="Δεκ"/>
+<l:template name="Mon" text="Δευτ"/>
+<l:template name="Tue" text="ΤÏ"/>
+<l:template name="Wed" text="Τετ"/>
+<l:template name="Thu" text="Πεμ"/>
+<l:template name="Fri" text="ΠαÏ"/>
+<l:template name="Sat" text="Σάβ"/>
+<l:template name="Sun" text="ΚυÏ"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0408 Greek"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">ΣÏμβολα</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">Α</l:l>
+<l:l i="270">α</l:l>
+<l:l i="270">Ά</l:l>
+<l:l i="270">ά</l:l>
+<l:l i="280">Î’</l:l>
+<l:l i="280">β</l:l>
+<l:l i="290">Γ</l:l>
+<l:l i="290">γ</l:l>
+<l:l i="300">Δ</l:l>
+<l:l i="300">δ</l:l>
+<l:l i="310">Ε</l:l>
+<l:l i="310">ε</l:l>
+<l:l i="310">Έ</l:l>
+<l:l i="310">έ</l:l>
+<l:l i="320">Ζ</l:l>
+<l:l i="320">ζ</l:l>
+<l:l i="330">Η</l:l>
+<l:l i="330">η</l:l>
+<l:l i="330">Ή</l:l>
+<l:l i="330">ή</l:l>
+<l:l i="340">Θ</l:l>
+<l:l i="340">θ</l:l>
+<l:l i="350">Ι</l:l>
+<l:l i="350">ι</l:l>
+<l:l i="350">Ί</l:l>
+<l:l i="350">ί</l:l>
+<l:l i="350">Ϊ</l:l>
+<l:l i="350">ÏŠ</l:l>
+<l:l i="350">Î</l:l>
+<l:l i="360">Κ</l:l>
+<l:l i="360">κ</l:l>
+<l:l i="370">Λ</l:l>
+<l:l i="370">λ</l:l>
+<l:l i="380">Μ</l:l>
+<l:l i="380">μ</l:l>
+<l:l i="390">Î</l:l>
+<l:l i="390">ν</l:l>
+<l:l i="400">Ξ</l:l>
+<l:l i="400">ξ</l:l>
+<l:l i="410">Ο</l:l>
+<l:l i="410">ο</l:l>
+<l:l i="410">Ό</l:l>
+<l:l i="410">ό</l:l>
+<l:l i="420">Π</l:l>
+<l:l i="420">Ï€</l:l>
+<l:l i="430">Ρ</l:l>
+<l:l i="430">Ï</l:l>
+<l:l i="440">Σ</l:l>
+<l:l i="440">σ</l:l>
+<l:l i="440">Ï‚</l:l>
+<l:l i="450">Τ</l:l>
+<l:l i="450">Ï„</l:l>
+<l:l i="460">Î¥</l:l>
+<l:l i="460">Ï…</l:l>
+<l:l i="460">ÎŽ</l:l>
+<l:l i="460">Ï</l:l>
+<l:l i="460">Ϋ</l:l>
+<l:l i="460">Ï‹</l:l>
+<l:l i="460">ΰ</l:l>
+<l:l i="470">Φ</l:l>
+<l:l i="470">φ</l:l>
+<l:l i="480">Χ</l:l>
+<l:l i="480">χ</l:l>
+<l:l i="490">Ψ</l:l>
+<l:l i="490">ψ</l:l>
+<l:l i="500">Ω</l:l>
+<l:l i="500">ω</l:l>
+<l:l i="500">Î</l:l>
+<l:l i="500">ÏŽ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml
new file mode 100644
index 0000000..b77f2c2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en" english-language-name="English">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/en.xml -->
+<!-- * -->
+<!-- * E-mail the edited en.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstract"/>
+<l:gentext key="abstract" text="Abstract"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements"/>
+<l:gentext key="acknowledgements" text="Acknowledgements"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Appendix"/>
+<l:gentext key="appendix" text="Appendix"/>
+<l:gentext key="Article" text="Article"/>
+<l:gentext key="article" text="Article"/>
+<l:gentext key="Author" text="Author"/>
+<l:gentext key="Bibliography" text="Bibliography"/>
+<l:gentext key="bibliography" text="Bibliography"/>
+<l:gentext key="Book" text="Book"/>
+<l:gentext key="book" text="Book"/>
+<l:gentext key="CAUTION" text="CAUTION"/>
+<l:gentext key="Caution" text="Caution"/>
+<l:gentext key="caution" text="Caution"/>
+<l:gentext key="Chapter" text="Chapter"/>
+<l:gentext key="chapter" text="Chapter"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedication"/>
+<l:gentext key="dedication" text="Dedication"/>
+<l:gentext key="Edition" text="Edition"/>
+<l:gentext key="edition" text="Edition"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Equation"/>
+<l:gentext key="equation" text="Equation"/>
+<l:gentext key="Example" text="Example"/>
+<l:gentext key="example" text="Example"/>
+<l:gentext key="Figure" text="Figure"/>
+<l:gentext key="figure" text="Figure"/>
+<l:gentext key="Glossary" text="Glossary"/>
+<l:gentext key="glossary" text="Glossary"/>
+<l:gentext key="GlossSee" text="See"/>
+<l:gentext key="glosssee" text="See"/>
+<l:gentext key="GlossSeeAlso" text="See Also"/>
+<l:gentext key="glossseealso" text="See Also"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="Important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legal Notice"/>
+<l:gentext key="legalnotice" text="Legal Notice"/>
+<l:gentext key="MsgAud" text="Audience"/>
+<l:gentext key="msgaud" text="Audience"/>
+<l:gentext key="MsgLevel" text="Level"/>
+<l:gentext key="msglevel" text="Level"/>
+<l:gentext key="MsgOrig" text="Origin"/>
+<l:gentext key="msgorig" text="Origin"/>
+<l:gentext key="NOTE" text="NOTE"/>
+<l:gentext key="Note" text="Note"/>
+<l:gentext key="note" text="Note"/>
+<l:gentext key="Part" text="Part"/>
+<l:gentext key="part" text="Part"/>
+<l:gentext key="Preface" text="Preface"/>
+<l:gentext key="preface" text="Preface"/>
+<l:gentext key="Procedure" text="Procedure"/>
+<l:gentext key="procedure" text="Procedure"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date"/>
+<l:gentext key="pubdate" text="Publication date"/>
+<l:gentext key="Published" text="Published"/>
+<l:gentext key="published" text="Published"/>
+<l:gentext key="Publisher" text="Publisher"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Reference"/>
+<l:gentext key="reference" text="Reference"/>
+<l:gentext key="References" text="References"/>
+<l:gentext key="RefName" text="Name"/>
+<l:gentext key="refname" text="Name"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revision History"/>
+<l:gentext key="revhistory" text="Revision History"/>
+<l:gentext key="revision" text="Revision"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="Section"/>
+<l:gentext key="Section" text="Section"/>
+<l:gentext key="see" text="see"/>
+<l:gentext key="See" text="See"/>
+<l:gentext key="seealso" text="see also"/>
+<l:gentext key="Seealso" text="See also"/>
+<l:gentext key="SeeAlso" text="See Also"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="step"/>
+<l:gentext key="Step" text="Step"/>
+<l:gentext key="table" text="Table"/>
+<l:gentext key="Table" text="Table"/>
+<l:gentext key="task" text="Task"/>
+<l:gentext key="Task" text="Task"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Warning"/>
+<l:gentext key="warning" text="Warning"/>
+<l:gentext key="WARNING" text="WARNING"/>
+<l:gentext key="and" text="and"/>
+<l:gentext key="by" text="by"/>
+<l:gentext key="Edited" text="Edited"/>
+<l:gentext key="edited" text="Edited"/>
+<l:gentext key="Editedby" text="Edited by"/>
+<l:gentext key="editedby" text="Edited by"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notes"/>
+<l:gentext key="Notes" text="Notes"/>
+<l:gentext key="Pgs" text="Pgs."/>
+<l:gentext key="pgs" text="Pgs."/>
+<l:gentext key="Revisedby" text="Revised by: "/>
+<l:gentext key="revisedby" text="Revised by: "/>
+<l:gentext key="TableNotes" text="Notes"/>
+<l:gentext key="tablenotes" text="Notes"/>
+<l:gentext key="TableofContents" text="Table of Contents"/>
+<l:gentext key="tableofcontents" text="Table of Contents"/>
+<l:gentext key="unexpectedelementname" text="Unexpected element name"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors"/>
+<l:gentext key="copyeditor" text="Copy Editor"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer"/>
+<l:gentext key="productioneditor" text="Production Editor"/>
+<l:gentext key="technicaleditor" text="Technical Editor"/>
+<l:gentext key="translator" text="Translator"/>
+<l:gentext key="listofequations" text="List of Equations"/>
+<l:gentext key="ListofEquations" text="List of Equations"/>
+<l:gentext key="ListofExamples" text="List of Examples"/>
+<l:gentext key="listofexamples" text="List of Examples"/>
+<l:gentext key="ListofFigures" text="List of Figures"/>
+<l:gentext key="listoffigures" text="List of Figures"/>
+<l:gentext key="ListofProcedures" text="List of Procedures"/>
+<l:gentext key="listofprocedures" text="List of Procedures"/>
+<l:gentext key="listoftables" text="List of Tables"/>
+<l:gentext key="ListofTables" text="List of Tables"/>
+<l:gentext key="ListofUnknown" text="List of Unknown"/>
+<l:gentext key="listofunknown" text="List of Unknown"/>
+<l:gentext key="nav-home" text="Home"/>
+<l:gentext key="nav-next" text="Next"/>
+<l:gentext key="nav-next-sibling" text="Fast Forward"/>
+<l:gentext key="nav-prev" text="Prev"/>
+<l:gentext key="nav-prev-sibling" text="Fast Backward"/>
+<l:gentext key="nav-up" text="Up"/>
+<l:gentext key="nav-toc" text="ToC"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Chapter %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equation %n. %t"/>
+<l:template name="example" text="Example %n. %t"/>
+<l:template name="figure" text="Figure %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Table %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Chapter %n. %t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="the section called “%tâ€"/>
+<l:template name="refsection" text="the section called “%tâ€"/>
+<l:template name="refsect1" text="the section called “%tâ€"/>
+<l:template name="refsect2" text="the section called “%tâ€"/>
+<l:template name="refsect3" text="the section called “%tâ€"/>
+<l:template name="sect1" text="the section called “%tâ€"/>
+<l:template name="sect2" text="the section called “%tâ€"/>
+<l:template name="sect3" text="the section called “%tâ€"/>
+<l:template name="sect4" text="the section called “%tâ€"/>
+<l:template name="sect5" text="the section called “%tâ€"/>
+<l:template name="section" text="the section called “%tâ€"/>
+<l:template name="simplesect" text="the section called “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Appendix %n"/>
+<l:template name="bridgehead" text="Section %n"/>
+<l:template name="chapter" text="Chapter %n"/>
+<l:template name="equation" text="Equation %n"/>
+<l:template name="example" text="Example %n"/>
+<l:template name="figure" text="Figure %n"/>
+<l:template name="part" text="Part %n"/>
+<l:template name="procedure" text="Procedure %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="Section %n"/>
+<l:template name="sect2" text="Section %n"/>
+<l:template name="sect3" text="Section %n"/>
+<l:template name="sect4" text="Section %n"/>
+<l:template name="sect5" text="Section %n"/>
+<l:template name="section" text="Section %n"/>
+<l:template name="table" text="Table %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendix %n, %t"/>
+<l:template name="bridgehead" text="Section %n, “%tâ€"/>
+<l:template name="chapter" text="Chapter %n, %t"/>
+<l:template name="equation" text="Equation %n, “%tâ€"/>
+<l:template name="example" text="Example %n, “%tâ€"/>
+<l:template name="figure" text="Figure %n, “%tâ€"/>
+<l:template name="part" text="Part %n, “%tâ€"/>
+<l:template name="procedure" text="Procedure %n, “%tâ€"/>
+<l:template name="productionset" text="Production %n, “%tâ€"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%tâ€"/>
+<l:template name="refsect1" text="the section called “%tâ€"/>
+<l:template name="refsect2" text="the section called “%tâ€"/>
+<l:template name="refsect3" text="the section called “%tâ€"/>
+<l:template name="refsection" text="the section called “%tâ€"/>
+<l:template name="sect1" text="Section %n, “%tâ€"/>
+<l:template name="sect2" text="Section %n, “%tâ€"/>
+<l:template name="sect3" text="Section %n, “%tâ€"/>
+<l:template name="sect4" text="Section %n, “%tâ€"/>
+<l:template name="sect5" text="Section %n, “%tâ€"/>
+<l:template name="section" text="Section %n, “%tâ€"/>
+<l:template name="simplesect" text="the section called “%tâ€"/>
+<l:template name="table" text="Table %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" and "/>
+<l:template name="seplast" text=", and "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="See %t."/>
+<l:template name="seealso" text="See Also %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audience: "/>
+<l:template name="MsgLevel" text="Level: "/>
+<l:template name="MsgOrig" text="Origin: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January"/>
+<l:template name="February" text="February"/>
+<l:template name="March" text="March"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="June"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="October"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Monday"/>
+<l:template name="Tuesday" text="Tuesday"/>
+<l:template name="Wednesday" text="Wednesday"/>
+<l:template name="Thursday" text="Thursday"/>
+<l:template name="Friday" text="Friday"/>
+<l:template name="Saturday" text="Saturday"/>
+<l:template name="Sunday" text="Sunday"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tue"/>
+<l:template name="Wed" text="Wed"/>
+<l:template name="Thu" text="Thu"/>
+<l:template name="Fri" text="Fri"/>
+<l:template name="Sat" text="Sat"/>
+<l:template name="Sun" text="Sun"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent
new file mode 100644
index 0000000..fb3e932
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent
@@ -0,0 +1,67 @@
+<!-- ********************************************************************
+ $Id: entities.ent 8725 2010-07-15 08:08:04Z kosek $
+ ********************************************************************
+
+ This file contains common entity declarations used for
+ sorting (and other things) by various templates.
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!ENTITY lowercase "'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;'">
+<!ENTITY uppercase "'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'">
+
+<!-- The following three entities are used for sorting and grouping
+ indexterms, not in presentation of them. -->
+<!-- If @sortas is present, sort and group by combination of
+ @sortas, space and entry to keep it separate from other entries
+ with the same @sortas.
+ If @sortas is not present, the first item is empty, and the added space
+ is removed when normalize-space is applied, leaving just the entry -->
+
+<!ENTITY primary 'normalize-space(concat(primary/@sortas, " ", primary))'>
+<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, " ", secondary))'>
+<!ENTITY tertiary 'normalize-space(concat(tertiary/@sortas, " ", tertiary))'>
+
+<!ENTITY section '(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]'>
+
+<!ENTITY section.id 'generate-id(&section;)'>
+<!ENTITY sep '" "'>
+
+<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))'>
+
+<!ENTITY setup-language-variable '
+<xsl:variable name="language" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+'>
+
+<!-- Entity used in html/inline.xsl and fo/inline.xsl -->
+<!ENTITY comment.block.parents "parent::answer|parent::appendix|parent::article|parent::bibliodiv|
+ parent::bibliography|parent::blockquote|parent::caution|parent::chapter|
+ parent::glossary|parent::glossdiv|parent::important|parent::index|
+ parent::indexdiv|parent::listitem|parent::note|parent::orderedlist|
+ parent::partintro|parent::preface|parent::procedure|parent::qandadiv|
+ parent::qandaset|parent::question|parent::refentry|parent::refnamediv|
+ parent::refsect1|parent::refsect2|parent::refsect3|parent::refsection|
+ parent::refsynopsisdiv|parent::sect1|parent::sect2|parent::sect3|parent::sect4|
+ parent::sect5|parent::section|parent::setindex|parent::sidebar|
+ parent::simplesect|parent::taskprerequisites|parent::taskrelated|
+ parent::tasksummary|parent::warning">
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml
new file mode 100644
index 0000000..c6b95d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="eo" english-language-name="Esperanto">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/eo.xml -->
+<!-- * -->
+<!-- * E-mail the edited eo.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumo"/>
+<l:gentext key="abstract" text="Resumo"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="R:"/>
+<l:gentext key="Appendix" text="Apendico"/>
+<l:gentext key="appendix" text="Apendico"/>
+<l:gentext key="Article" text="Artikolo"/>
+<l:gentext key="article" text="Artikolo"/>
+<l:gentext key="Author" text="AÅ­toro"/>
+<l:gentext key="Bibliography" text="Bibliografio"/>
+<l:gentext key="bibliography" text="Bibliografio"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="Libro"/>
+<l:gentext key="CAUTION" text="ATENTU"/>
+<l:gentext key="Caution" text="Atentu"/>
+<l:gentext key="caution" text="Atentu"/>
+<l:gentext key="Chapter" text="Ĉapitro"/>
+<l:gentext key="chapter" text="Ĉapitro"/>
+<l:gentext key="Colophon" text="Kolofono"/>
+<l:gentext key="colophon" text="Kolofono"/>
+<l:gentext key="Copyright" text="Kopirajto"/>
+<l:gentext key="copyright" text="Kopirajto"/>
+<l:gentext key="Dedication" text="Dediĉo"/>
+<l:gentext key="dedication" text="Dediĉo"/>
+<l:gentext key="Edition" text="Eldono"/>
+<l:gentext key="edition" text="Eldono"/>
+<l:gentext key="Editor" text="Redaktoro"/>
+<l:gentext key="Equation" text="Ekvacio"/>
+<l:gentext key="equation" text="Ekvacio"/>
+<l:gentext key="Example" text="Ekzemplo"/>
+<l:gentext key="example" text="Ekzemplo"/>
+<l:gentext key="Figure" text="Figuro"/>
+<l:gentext key="figure" text="Figuro"/>
+<l:gentext key="Glossary" text="Glosaro"/>
+<l:gentext key="glossary" text="Glosaro"/>
+<l:gentext key="GlossSee" text="Vidu"/>
+<l:gentext key="glosssee" text="Vidu"/>
+<l:gentext key="GlossSeeAlso" text="Vidu ankaÅ­"/>
+<l:gentext key="glossseealso" text="Vidu ankaÅ­"/>
+<l:gentext key="IMPORTANT" text="GRAVA"/>
+<l:gentext key="important" text="Grava"/>
+<l:gentext key="Important" text="Grava"/>
+<l:gentext key="Index" text="Indekso"/>
+<l:gentext key="index" text="Indekso"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="LeÄa Avizo"/>
+<l:gentext key="legalnotice" text="LeÄa Avizo"/>
+<l:gentext key="MsgAud" text="Cela legantaro"/>
+<l:gentext key="msgaud" text="Cela legantaro"/>
+<l:gentext key="MsgLevel" text="Nivelo"/>
+<l:gentext key="msglevel" text="Nivelo"/>
+<l:gentext key="MsgOrig" text="Origino"/>
+<l:gentext key="msgorig" text="Origino"/>
+<l:gentext key="NOTE" text="RIMARKO"/>
+<l:gentext key="Note" text="Rimarko"/>
+<l:gentext key="note" text="Rimarko"/>
+<l:gentext key="Part" text="Parto"/>
+<l:gentext key="part" text="Parto"/>
+<l:gentext key="Preface" text="AntaÅ­parolo"/>
+<l:gentext key="preface" text="AntaÅ­parolo"/>
+<l:gentext key="Procedure" text="Procezo"/>
+<l:gentext key="procedure" text="Procezo"/>
+<l:gentext key="ProductionSet" text="Produktaĵo"/>
+<l:gentext key="PubDate" text="Eldona Dato"/>
+<l:gentext key="pubdate" text="Eldona Dato"/>
+<l:gentext key="Published" text="Eldonita "/>
+<l:gentext key="published" text="Eldonita"/>
+<l:gentext key="Publisher" text="Eldonita"/>
+<l:gentext key="Qandadiv" text="Demandoj &amp; Respondoj"/>
+<l:gentext key="qandadiv" text="Demandoj &amp; Respondoj"/>
+<l:gentext key="QandASet" text="Oftaj Demandoj"/>
+<l:gentext key="Question" text="D:"/>
+<l:gentext key="question" text="D:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referenco"/>
+<l:gentext key="reference" text="Referenco"/>
+<l:gentext key="References" text="Referencoj"/>
+<l:gentext key="RefName" text="Nomo"/>
+<l:gentext key="refname" text="Nomo"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Resumo"/>
+<l:gentext key="refsynopsisdiv" text="Resumo"/>
+<l:gentext key="RevHistory" text="Historio de Versioj"/>
+<l:gentext key="revhistory" text="Historio de Versioj"/>
+<l:gentext key="revision" text="Versio"/>
+<l:gentext key="Revision" text="Versio"/>
+<l:gentext key="sect1" text="Sekcio"/>
+<l:gentext key="sect2" text="Sekcio"/>
+<l:gentext key="sect3" text="Sekcio"/>
+<l:gentext key="sect4" text="Sekcio"/>
+<l:gentext key="sect5" text="Sekcio"/>
+<l:gentext key="section" text="Sekcio"/>
+<l:gentext key="Section" text="Sekcio"/>
+<l:gentext key="see" text="vidu"/>
+<l:gentext key="See" text="Vidu"/>
+<l:gentext key="seealso" text="vidu ankaÅ­"/>
+<l:gentext key="Seealso" text="Vidu ankaÅ­"/>
+<l:gentext key="SeeAlso" text="Vidu AnkaÅ­"/>
+<l:gentext key="set" text="Libraro"/>
+<l:gentext key="Set" text="Libraro"/>
+<l:gentext key="setindex" text="Indekso de Libraro"/>
+<l:gentext key="SetIndex" text="Indesko de Libraro"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="flankaĵo"/>
+<l:gentext key="step" text="Åtupo"/>
+<l:gentext key="Step" text="Åœtupo"/>
+<l:gentext key="table" text="Tabelo"/>
+<l:gentext key="Table" text="Tabelo"/>
+<l:gentext key="task" text="Tasko"/>
+<l:gentext key="Task" text="Tasko"/>
+<l:gentext key="tip" text="Sugesto"/>
+<l:gentext key="TIP" text="SUGESTO"/>
+<l:gentext key="Tip" text="Sugesto"/>
+<l:gentext key="Warning" text="Averto"/>
+<l:gentext key="warning" text="Averto"/>
+<l:gentext key="WARNING" text="AVERTO"/>
+<l:gentext key="and" text="kaj"/>
+<l:gentext key="by" text="fare de"/>
+<l:gentext key="Edited" text="Redaktita"/>
+<l:gentext key="edited" text="Redaktita"/>
+<l:gentext key="Editedby" text="Redaktita de"/>
+<l:gentext key="editedby" text="Redaktita de"/>
+<l:gentext key="in" text="en"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notoj"/>
+<l:gentext key="Notes" text="Notoj"/>
+<l:gentext key="Pgs" text="p."/>
+<l:gentext key="pgs" text="p."/>
+<l:gentext key="Revisedby" text="Reviziita de: "/>
+<l:gentext key="revisedby" text="Reviziita de: "/>
+<l:gentext key="TableNotes" text="Notoj"/>
+<l:gentext key="tablenotes" text="Notoj"/>
+<l:gentext key="TableofContents" text="Enhavo"/>
+<l:gentext key="tableofcontents" text="Enhavo"/>
+<l:gentext key="unexpectedelementname" text="NeantaÅ­vidita nomo de elemento"/>
+<l:gentext key="unsupported" text="netraktebla"/>
+<l:gentext key="xrefto" text="aludo al"/>
+<l:gentext key="Authors" text="AÅ­toroj"/>
+<l:gentext key="copyeditor" text="Provredaktinto"/>
+<l:gentext key="graphicdesigner" text="Grafikisto"/>
+<l:gentext key="productioneditor" text="Produkta Redaktoro"/>
+<l:gentext key="technicaleditor" text="Teknika Redaktoro"/>
+<l:gentext key="translator" text="Tradukisto"/>
+<l:gentext key="listofequations" text="Listo de Ekvacioj"/>
+<l:gentext key="ListofEquations" text="Listo de Ekvacioj"/>
+<l:gentext key="ListofExamples" text="Listo de Ekzemploj"/>
+<l:gentext key="listofexamples" text="Listo de Ekzemploj"/>
+<l:gentext key="ListofFigures" text="Listo de Figuroj"/>
+<l:gentext key="listoffigures" text="Listo de Figuroj"/>
+<l:gentext key="ListofProcedures" text="Listo de Procedoj"/>
+<l:gentext key="listofprocedures" text="Listo de Procedoj"/>
+<l:gentext key="listoftables" text="Listo de Tabeloj"/>
+<l:gentext key="ListofTables" text="Listo de Tabeloj"/>
+<l:gentext key="ListofUnknown" text="Listo de Nesciatoj"/>
+<l:gentext key="listofunknown" text="Listo de Nesciatoj"/>
+<l:gentext key="nav-home" text="Hejmen"/>
+<l:gentext key="nav-next" text="Sekven"/>
+<l:gentext key="nav-next-sibling" text="Pli sekven"/>
+<l:gentext key="nav-prev" text="AntaÅ­en"/>
+<l:gentext key="nav-prev-sibling" text="Pli antaÅ­en"/>
+<l:gentext key="nav-up" text="Supren"/>
+<l:gentext key="nav-toc" text="Enhavlisten"/>
+<l:gentext key="Draft" text="Malneto"/>
+<l:gentext key="above" text="supra"/>
+<l:gentext key="below" text="suba"/>
+<l:gentext key="sectioncalled" text="la sekcio nomata"/>
+<l:gentext key="index symbols" text="Simboloj"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcĉdefgÄhÄ¥ijĵklmnopqrsÅtuÅ­vyz"/>
+<l:gentext key="uppercase.alpha" text="ABCĈDEFGĜHĤIJĴKLMNOPQRSŜTUŬVYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apendico %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Ĉapitro %n. %t&quot;"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekvacio %n. %t"/>
+<l:template name="example" text="Ekzemplo %n. %t"/>
+<l:template name="figure" text="Figuro %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parto %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procezo %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produktaĵo %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabelo %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apendico %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Ĉapitro %n. %t"/>
+<l:template name="part" text="Parto %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Demando %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Demando %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (paÄo %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(paÄo %p)"/>
+<l:template name="docname" text=" en %o"/>
+<l:template name="docnamelong" text=" en la dokumento titolata %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="PaÄo %p"/>
+<l:template name="bridgehead" text="la sekcio nomata “%tâ€"/>
+<l:template name="refsection" text="la sekcio nomata “%tâ€"/>
+<l:template name="refsect1" text="la sekcio nomata “%tâ€"/>
+<l:template name="refsect2" text="la sekcio nomata “%tâ€"/>
+<l:template name="refsect3" text="la sekcio nomata “%tâ€"/>
+<l:template name="sect1" text="la sekcio nomata “%tâ€"/>
+<l:template name="sect2" text="la sekcio nomata “%tâ€"/>
+<l:template name="sect3" text="la sekcio nomata “%tâ€"/>
+<l:template name="sect4" text="la sekcio nomata “%tâ€"/>
+<l:template name="sect5" text="la sekcio nomata “%tâ€"/>
+<l:template name="section" text="la sekcio nomata “%tâ€"/>
+<l:template name="simplesect" text="la sekcio nomata “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apendico %n"/>
+<l:template name="bridgehead" text="Sekcio %n"/>
+<l:template name="chapter" text="Ĉapitro %n"/>
+<l:template name="equation" text="Ekvacio %n"/>
+<l:template name="example" text="Ekzemplo %n"/>
+<l:template name="figure" text="Figuro %n"/>
+<l:template name="part" text="Parto %n"/>
+<l:template name="procedure" text="Procezo %n"/>
+<l:template name="productionset" text="Produktaĵo %n"/>
+<l:template name="qandadiv" text="Demandoj &amp; Respondoj %n"/>
+<l:template name="qandaentry" text="D: %n"/>
+<l:template name="question" text="D: %n"/>
+<l:template name="sect1" text="Sekcio %n"/>
+<l:template name="sect2" text="Sekcio %n"/>
+<l:template name="sect3" text="Sekcio %n"/>
+<l:template name="sect4" text="Sekcio %n"/>
+<l:template name="sect5" text="Sekcio %n"/>
+<l:template name="section" text="Sekcio %n"/>
+<l:template name="table" text="Tabelo %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apendico %n, %t"/>
+<l:template name="bridgehead" text="Sekcio %n, “%tâ€"/>
+<l:template name="chapter" text="Ĉapitro %n, %t"/>
+<l:template name="equation" text="Ekvacio %n, “%tâ€"/>
+<l:template name="example" text="Ekzemplo %n, “%tâ€"/>
+<l:template name="figure" text="Figuro %n, “%tâ€"/>
+<l:template name="part" text="Parto %n, “%tâ€"/>
+<l:template name="procedure" text="Procezo %n, “%tâ€"/>
+<l:template name="productionset" text="Produktaĵo %n, “%tâ€"/>
+<l:template name="qandadiv" text="Demandoj &amp; Respondoj %n, “%tâ€"/>
+<l:template name="refsect1" text="la sekcio nomata “%tâ€"/>
+<l:template name="refsect2" text="la sekcio nomata “%tâ€"/>
+<l:template name="refsect3" text="la sekcio nomata “%tâ€"/>
+<l:template name="refsection" text="la sekcio nomata “%tâ€"/>
+<l:template name="sect1" text="Sekcio %n, “%tâ€"/>
+<l:template name="sect2" text="Sekcio %n, “%tâ€"/>
+<l:template name="sect3" text="Sekcio %n, “%tâ€"/>
+<l:template name="sect4" text="Sekcio %n, “%tâ€"/>
+<l:template name="sect5" text="Sekcio %n, “%tâ€"/>
+<l:template name="section" text="Sekcio %n, “%tâ€"/>
+<l:template name="simplesect" text="la sekcio nomata “%tâ€"/>
+<l:template name="table" text="Tabelo %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" kaj "/>
+<l:template name="seplast" text=", kaj "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidu %t."/>
+<l:template name="seealso" text="Vidu ankaÅ­ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Cela legantaro: "/>
+<l:template name="MsgLevel" text="Nivelo: "/>
+<l:template name="MsgOrig" text="Origino: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Difino: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="januaro"/>
+<l:template name="February" text="februaro"/>
+<l:template name="March" text="marto"/>
+<l:template name="April" text="aprilo"/>
+<l:template name="May" text="majo"/>
+<l:template name="June" text="junio"/>
+<l:template name="July" text="julio"/>
+<l:template name="August" text="aÅ­gusto"/>
+<l:template name="September" text="septembro"/>
+<l:template name="October" text="oktobro"/>
+<l:template name="November" text="novembro"/>
+<l:template name="December" text="decembro"/>
+<l:template name="Monday" text="lundo"/>
+<l:template name="Tuesday" text="mardo"/>
+<l:template name="Wednesday" text="merkredo"/>
+<l:template name="Thursday" text="ĵaudo"/>
+<l:template name="Friday" text="vendredo"/>
+<l:template name="Saturday" text="sabato"/>
+<l:template name="Sunday" text="dimanĉo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="maj"/>
+<l:template name="Jun" text="jun"/>
+<l:template name="Jul" text="jul"/>
+<l:template name="Aug" text="aÅ­g"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="okt"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="lun"/>
+<l:template name="Tue" text="mar"/>
+<l:template name="Wed" text="mer"/>
+<l:template name="Thu" text="ĵau"/>
+<l:template name="Fri" text="ven"/>
+<l:template name="Sat" text="sab"/>
+<l:template name="Sun" text="dim"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 Esperanto"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (red.)"/>
+<l:template name="primary.many" text=", k.a."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [referencita "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Havebla "/>
+<l:template name="acctoo" text="AnkaÅ­ havebla "/>
+<l:template name="onwww" text="de la Tut-Tera Teksaĵo"/>
+<l:template name="oninet" text="de la Interreto"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml
new file mode 100644
index 0000000..aad1980
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml
@@ -0,0 +1,676 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="es" english-language-name="Spanish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/es.xml -->
+<!-- * -->
+<!-- * E-mail the edited es.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumen"/>
+<l:gentext key="abstract" text="resumen"/>
+<l:gentext key="Acknowledgements" text="Agradecimientos"/>
+<l:gentext key="acknowledgements" text="agradecimientos"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="r:"/>
+<l:gentext key="Appendix" text="Apéndice"/>
+<l:gentext key="appendix" text="apéndice"/>
+<l:gentext key="Article" text="Artículo"/>
+<l:gentext key="article" text="artículo"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografía"/>
+<l:gentext key="bibliography" text="bibliografía"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="libro"/>
+<l:gentext key="CAUTION" text="ATENCIÓN"/>
+<l:gentext key="Caution" text="Atención"/>
+<l:gentext key="caution" text="atención"/>
+<l:gentext key="Chapter" text="Capítulo"/>
+<l:gentext key="chapter" text="capítulo"/>
+<l:gentext key="Colophon" text="Colofón"/>
+<l:gentext key="colophon" text="colofón"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Dedicatoria"/>
+<l:gentext key="dedication" text="dedicatoria"/>
+<l:gentext key="Edition" text="Edición"/>
+<l:gentext key="edition" text="edición"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ecuación"/>
+<l:gentext key="equation" text="ecuación"/>
+<l:gentext key="Example" text="Ejemplo"/>
+<l:gentext key="example" text="ejemplo"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="figura"/>
+<l:gentext key="Glossary" text="Glosario"/>
+<l:gentext key="glossary" text="glosario"/>
+<l:gentext key="GlossSee" text="Ver"/>
+<l:gentext key="glosssee" text="ver"/>
+<l:gentext key="GlossSeeAlso" text="Ver también"/>
+<l:gentext key="glossseealso" text="ver también"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Ãndice"/>
+<l:gentext key="index" text="índice"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Aviso Legal"/>
+<l:gentext key="legalnotice" text="aviso legal"/>
+<l:gentext key="MsgAud" text="Audiencia"/>
+<l:gentext key="msgaud" text="audiencia"/>
+<l:gentext key="MsgLevel" text="Nivel"/>
+<l:gentext key="msglevel" text="nivel"/>
+<l:gentext key="MsgOrig" text="Origen"/>
+<l:gentext key="msgorig" text="origen"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="parte"/>
+<l:gentext key="Preface" text="Prefacio"/>
+<l:gentext key="preface" text="prefacio"/>
+<l:gentext key="Procedure" text="Procedimiento"/>
+<l:gentext key="procedure" text="procedimiento"/>
+<l:gentext key="ProductionSet" text="Producción"/>
+<l:gentext key="PubDate" text="Fecha de publicación"/>
+<l:gentext key="pubdate" text="fecha de publicación"/>
+<l:gentext key="Published" text="Publicado"/>
+<l:gentext key="published" text="publicado"/>
+<l:gentext key="Publisher" text="Editor"/>
+<l:gentext key="Qandadiv" text="P y R"/>
+<l:gentext key="qandadiv" text="P y R"/>
+<l:gentext key="QandASet" text="Preguntas más frecuentes"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="p:"/>
+<l:gentext key="RefEntry" text="Página"/>
+<l:gentext key="refentry" text="página"/>
+<l:gentext key="Reference" text="Referencia"/>
+<l:gentext key="reference" text="referencia"/>
+<l:gentext key="References" text="Referencias"/>
+<l:gentext key="RefName" text="Nombre de referencia"/>
+<l:gentext key="refname" text="nombre de referencia"/>
+<l:gentext key="RefSection" text="Sección de referencia"/>
+<l:gentext key="refsection" text="sección de referencia"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+<l:gentext key="refsynopsisdiv" text="sinopsis"/>
+<l:gentext key="RevHistory" text="Historial de revisiones"/>
+<l:gentext key="revhistory" text="Historial de revisiones"/>
+<l:gentext key="revision" text="revisión"/>
+<l:gentext key="Revision" text="Revisión"/>
+<l:gentext key="sect1" text="Sección"/>
+<l:gentext key="sect2" text="Sección"/>
+<l:gentext key="sect3" text="Sección"/>
+<l:gentext key="sect4" text="Sección"/>
+<l:gentext key="sect5" text="Sección"/>
+<l:gentext key="section" text="sección"/>
+<l:gentext key="Section" text="Sección"/>
+<l:gentext key="see" text="ver"/>
+<l:gentext key="See" text="Ver"/>
+<l:gentext key="seealso" text="ver también"/>
+<l:gentext key="Seealso" text="Ver también"/>
+<l:gentext key="SeeAlso" text="Ver También"/>
+<l:gentext key="set" text="conjunto"/>
+<l:gentext key="Set" text="Conjunto"/>
+<l:gentext key="setindex" text="índice del conjunto"/>
+<l:gentext key="SetIndex" text="Ãndice del Conjunto"/>
+<l:gentext key="Sidebar" text="Barra lateral"/>
+<l:gentext key="sidebar" text="barra lateral"/>
+<l:gentext key="step" text="paso"/>
+<l:gentext key="Step" text="Paso"/>
+<l:gentext key="table" text="tabla"/>
+<l:gentext key="Table" text="Tabla"/>
+<l:gentext key="task" text="tarea"/>
+<l:gentext key="Task" text="Tarea"/>
+<l:gentext key="tip" text="sugerencia"/>
+<l:gentext key="TIP" text="SUGERENCIA"/>
+<l:gentext key="Tip" text="Sugerencia"/>
+<l:gentext key="Warning" text="Aviso"/>
+<l:gentext key="warning" text="aviso"/>
+<l:gentext key="WARNING" text="AVISO"/>
+<l:gentext key="and" text="y"/>
+<l:gentext key="by" text="por"/>
+<l:gentext key="Edited" text="Editado"/>
+<l:gentext key="edited" text="editado"/>
+<l:gentext key="Editedby" text="Editado por"/>
+<l:gentext key="editedby" text="editado por"/>
+<l:gentext key="in" text="en"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="notas"/>
+<l:gentext key="Notes" text="Notas"/>
+<l:gentext key="Pgs" text="Págs."/>
+<l:gentext key="pgs" text="págs."/>
+<l:gentext key="Revisedby" text="Revisado por: "/>
+<l:gentext key="revisedby" text="revisado por: "/>
+<l:gentext key="TableNotes" text="Notas de tabla"/>
+<l:gentext key="tablenotes" text="notas de tabla"/>
+<l:gentext key="TableofContents" text="Tabla de contenidos"/>
+<l:gentext key="tableofcontents" text="tabla de contenidos"/>
+<l:gentext key="unexpectedelementname" text="nombre de elemento inesperado"/>
+<l:gentext key="unsupported" text="no soportado"/>
+<l:gentext key="xrefto" text="referencia a"/>
+<l:gentext key="Authors" text="Autores"/>
+<l:gentext key="copyeditor" text="Editor de copiado"/>
+<l:gentext key="graphicdesigner" text="Diseñador gráfico"/>
+<l:gentext key="productioneditor" text="Editor de producción"/>
+<l:gentext key="technicaleditor" text="Editor técnico"/>
+<l:gentext key="translator" text="Traductor"/>
+<l:gentext key="listofequations" text="lista de ecuaciones"/>
+<l:gentext key="ListofEquations" text="Lista de ecuaciones"/>
+<l:gentext key="ListofExamples" text="Lista de ejemplos"/>
+<l:gentext key="listofexamples" text="lista de ejemplos"/>
+<l:gentext key="ListofFigures" text="Lista de figuras"/>
+<l:gentext key="listoffigures" text="lista de figuras"/>
+<l:gentext key="ListofProcedures" text="Lista de procedimientos"/>
+<l:gentext key="listofprocedures" text="lista de procedimientos"/>
+<l:gentext key="listoftables" text="lista de tablas"/>
+<l:gentext key="ListofTables" text="Lista de tablas"/>
+<l:gentext key="ListofUnknown" text="Lista de desconocido"/>
+<l:gentext key="listofunknown" text="lista de desconocido"/>
+<l:gentext key="nav-home" text="Inicio"/>
+<l:gentext key="nav-next" text="Siguiente"/>
+<l:gentext key="nav-next-sibling" text="Avanzar"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Retroceder"/>
+<l:gentext key="nav-up" text="Subir"/>
+<l:gentext key="nav-toc" text="TdC"/>
+<l:gentext key="Draft" text="Borrador"/>
+<l:gentext key="above" text="arriba"/>
+<l:gentext key="below" text="abajo"/>
+<l:gentext key="sectioncalled" text="sección llamada"/>
+<l:gentext key="index symbols" text="Símbolos"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzáéíóúñ"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÃÉÃÓÚÑ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apéndice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ecuación %n. %t"/>
+<l:template name="example" text="Ejemplo %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimiento %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Producción %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabla %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apéndice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apéndice %n"/>
+<l:template name="bridgehead" text="Sección %n"/>
+<l:template name="chapter" text="Capítulo %n"/>
+<l:template name="equation" text="Ecuación %n"/>
+<l:template name="example" text="Ejemplo %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimiento %n"/>
+<l:template name="productionset" text="Producción %n"/>
+<l:template name="qandadiv" text="P y R %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Sección %n"/>
+<l:template name="sect2" text="Sección %n"/>
+<l:template name="sect3" text="Sección %n"/>
+<l:template name="sect4" text="Sección %n"/>
+<l:template name="sect5" text="Sección %n"/>
+<l:template name="section" text="Sección %n"/>
+<l:template name="table" text="Tabla %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apéndice %n, %t"/>
+<l:template name="bridgehead" text="Sección %n, “%tâ€"/>
+<l:template name="chapter" text="Capítulo %n, %t"/>
+<l:template name="equation" text="Ecuación %n, “%tâ€"/>
+<l:template name="example" text="Ejemplo %n, “%tâ€"/>
+<l:template name="figure" text="Figura %n, “%tâ€"/>
+<l:template name="part" text="Parte %n, “%tâ€"/>
+<l:template name="procedure" text="Procedimiento %n, “%tâ€"/>
+<l:template name="productionset" text="Producción %n, “%tâ€"/>
+<l:template name="qandadiv" text="P y R %n, “%tâ€"/>
+<l:template name="refsect1" text="sección llamada “%tâ€"/>
+<l:template name="refsect2" text="sección llamada “%tâ€"/>
+<l:template name="refsect3" text="sección llamada “%tâ€"/>
+<l:template name="refsection" text="sección llamada “%tâ€"/>
+<l:template name="sect1" text="Sección %n, “%tâ€"/>
+<l:template name="sect2" text="Sección %n, “%tâ€"/>
+<l:template name="sect3" text="Sección %n, “%tâ€"/>
+<l:template name="sect4" text="Sección %n, “%tâ€"/>
+<l:template name="sect5" text="Sección %n, “%tâ€"/>
+<l:template name="section" text="Sección %n, “%tâ€"/>
+<l:template name="simplesect" text="sección llamada “%tâ€"/>
+<l:template name="table" text="Tabla %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" y "/>
+<l:template name="seplast" text=", y "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ver %t."/>
+<l:template name="seealso" text="Ver también %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiencia: "/>
+<l:template name="MsgLevel" text="Nivel: "/>
+<l:template name="MsgOrig" text="Origen: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definición: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Enero"/>
+<l:template name="February" text="Febrero"/>
+<l:template name="March" text="Marzo"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Mayo"/>
+<l:template name="June" text="Junio"/>
+<l:template name="July" text="Julio"/>
+<l:template name="August" text="Agosto"/>
+<l:template name="September" text="Septiembre"/>
+<l:template name="October" text="Octubre"/>
+<l:template name="November" text="Noviembre"/>
+<l:template name="December" text="Diciembre"/>
+<l:template name="Monday" text="Lunes"/>
+<l:template name="Tuesday" text="Martes"/>
+<l:template name="Wednesday" text="Miércoles"/>
+<l:template name="Thursday" text="Jueves"/>
+<l:template name="Friday" text="Viernes"/>
+<l:template name="Saturday" text="Sábado"/>
+<l:template name="Sunday" text="Domingo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ene"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dic"/>
+<l:template name="Mon" text="Lun"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Mie"/>
+<l:template name="Thu" text="Jue"/>
+<l:template name="Fri" text="Vie"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040a Spanish (Traditional Sort)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Símbolos</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">á</l:l>
+<l:l i="1">Ã</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">CH</l:l>
+<l:l i="4">ch</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="6">E</l:l>
+<l:l i="6">e</l:l>
+<l:l i="6">É</l:l>
+<l:l i="6">é</l:l>
+<l:l i="7">F</l:l>
+<l:l i="7">f</l:l>
+<l:l i="8">G</l:l>
+<l:l i="8">g</l:l>
+<l:l i="9">H</l:l>
+<l:l i="9">h</l:l>
+<l:l i="10">I</l:l>
+<l:l i="10">i</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">í</l:l>
+<l:l i="11">J</l:l>
+<l:l i="11">j</l:l>
+<l:l i="12">K</l:l>
+<l:l i="12">k</l:l>
+<l:l i="13">L</l:l>
+<l:l i="13">l</l:l>
+<l:l i="14">LL</l:l>
+<l:l i="14">ll</l:l>
+<l:l i="15">M</l:l>
+<l:l i="15">m</l:l>
+<l:l i="16">N</l:l>
+<l:l i="16">n</l:l>
+<l:l i="17">Ñ</l:l>
+<l:l i="17">ñ</l:l>
+<l:l i="18">O</l:l>
+<l:l i="18">o</l:l>
+<l:l i="18">Ó</l:l>
+<l:l i="18">ó</l:l>
+<l:l i="19">P</l:l>
+<l:l i="19">p</l:l>
+<l:l i="20">Q</l:l>
+<l:l i="20">q</l:l>
+<l:l i="21">R</l:l>
+<l:l i="21">r</l:l>
+<l:l i="22">S</l:l>
+<l:l i="22">s</l:l>
+<l:l i="23">T</l:l>
+<l:l i="23">t</l:l>
+<l:l i="24">U</l:l>
+<l:l i="24">u</l:l>
+<l:l i="24">Ú</l:l>
+<l:l i="24">ú</l:l>
+<l:l i="25">V</l:l>
+<l:l i="25">v</l:l>
+<l:l i="26">W</l:l>
+<l:l i="26">w</l:l>
+<l:l i="27">X</l:l>
+<l:l i="27">x</l:l>
+<l:l i="28">Y</l:l>
+<l:l i="28">y</l:l>
+<l:l i="29">Z</l:l>
+<l:l i="29">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml
new file mode 100644
index 0000000..b7d224f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="et" english-language-name="Estonian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/et.xml -->
+<!-- * -->
+<!-- * E-mail the edited et.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Ãœlevaade"/>
+<l:gentext key="abstract" text="Ãœlevaade"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="V:"/>
+<l:gentext key="answer" text="V:"/>
+<l:gentext key="Appendix" text="Lisa"/>
+<l:gentext key="appendix" text="lisa"/>
+<l:gentext key="Article" text="Artikkel"/>
+<l:gentext key="article" text="Artikkel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliograafia"/>
+<l:gentext key="bibliography" text="Bibliograafia"/>
+<l:gentext key="Book" text="Raamat"/>
+<l:gentext key="book" text="Raamat"/>
+<l:gentext key="CAUTION" text="ETTEVAATUST"/>
+<l:gentext key="Caution" text="Ettevaatust"/>
+<l:gentext key="caution" text="Ettevaatust"/>
+<l:gentext key="Chapter" text="Peatükk"/>
+<l:gentext key="chapter" text="peatükk"/>
+<l:gentext key="Colophon" text="Lõpumärgis"/>
+<l:gentext key="colophon" text="Lõpumärgis"/>
+<l:gentext key="Copyright" text="Autoriõigus"/>
+<l:gentext key="copyright" text="Autoriõigus"/>
+<l:gentext key="Dedication" text="Pühendus"/>
+<l:gentext key="dedication" text="Pühendus"/>
+<l:gentext key="Edition" text="Väljaanne"/>
+<l:gentext key="edition" text="Väljaanne"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Valem"/>
+<l:gentext key="equation" text="Valem"/>
+<l:gentext key="Example" text="Näide"/>
+<l:gentext key="example" text="Näide"/>
+<l:gentext key="Figure" text="Joonis"/>
+<l:gentext key="figure" text="Joonis"/>
+<l:gentext key="Glossary" text="Sõnastik"/>
+<l:gentext key="glossary" text="Sõnastik"/>
+<l:gentext key="GlossSee" text="Vt."/>
+<l:gentext key="glosssee" text="Vt."/>
+<l:gentext key="GlossSeeAlso" text="Vt. ka"/>
+<l:gentext key="glossseealso" text="Vt. ka"/>
+<l:gentext key="IMPORTANT" text="OLULINE"/>
+<l:gentext key="important" text="Oluline"/>
+<l:gentext key="Important" text="Oluline"/>
+<l:gentext key="Index" text="Aineregister"/>
+<l:gentext key="index" text="Aineregister"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Autoriõiguse märge"/>
+<l:gentext key="legalnotice" text="Autoriõiguse märge"/>
+<l:gentext key="MsgAud" text="Auditoorium"/>
+<l:gentext key="msgaud" text="Auditoorium"/>
+<l:gentext key="MsgLevel" text="Tase"/>
+<l:gentext key="msglevel" text="Tase"/>
+<l:gentext key="MsgOrig" text="Algallikas"/>
+<l:gentext key="msgorig" text="Algallikas"/>
+<l:gentext key="NOTE" text="MÄRKUS"/>
+<l:gentext key="Note" text="Märkus"/>
+<l:gentext key="note" text="Märkus"/>
+<l:gentext key="Part" text="Osa"/>
+<l:gentext key="part" text="Osa"/>
+<l:gentext key="Preface" text="Eessõna"/>
+<l:gentext key="preface" text="Eessõna"/>
+<l:gentext key="Procedure" text="Protseduur"/>
+<l:gentext key="procedure" text="Protseduur"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Avaldatud"/>
+<l:gentext key="published" text="Avaldatud"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="K ja V"/>
+<l:gentext key="qandadiv" text="K ja V"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="K:"/>
+<l:gentext key="question" text="K:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Viide"/>
+<l:gentext key="reference" text="Viide"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nimi"/>
+<l:gentext key="refname" text="Nimi"/>
+<l:gentext key="RefSection" text="Lõik"/>
+<l:gentext key="refsection" text="Lõik"/>
+<l:gentext key="RefSynopsisDiv" text="Sünopsis"/>
+<l:gentext key="refsynopsisdiv" text="Sünopsis"/>
+<l:gentext key="RevHistory" text="Vigade paranduste ajalugu"/>
+<l:gentext key="revhistory" text="Vigade paranduste ajalugu"/>
+<l:gentext key="revision" text="Vigade parandus"/>
+<l:gentext key="Revision" text="Vigade parandus"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="lõik"/>
+<l:gentext key="Section" text="Sektsioon"/>
+<l:gentext key="see" text="Vt."/>
+<l:gentext key="See" text="Vt."/>
+<l:gentext key="seealso" text="Vt. ka"/>
+<l:gentext key="Seealso" text="Vt. ka"/>
+<l:gentext key="SeeAlso" text="Vt. ka"/>
+<l:gentext key="set" text="Sea"/>
+<l:gentext key="Set" text="Sea"/>
+<l:gentext key="setindex" text="Sea indeks"/>
+<l:gentext key="SetIndex" text="Sea indeks"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="külgriba"/>
+<l:gentext key="step" text="samm"/>
+<l:gentext key="Step" text="Samm"/>
+<l:gentext key="table" text="Tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Vihje"/>
+<l:gentext key="TIP" text="VIHJE"/>
+<l:gentext key="Tip" text="Vihje"/>
+<l:gentext key="Warning" text="Hoiatus"/>
+<l:gentext key="warning" text="Hoiatus"/>
+<l:gentext key="WARNING" text="HOIATUS"/>
+<l:gentext key="and" text="ja"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Redaktsioon"/>
+<l:gentext key="edited" text="Redaktsioon"/>
+<l:gentext key="Editedby" text="Redaktsiooni autor(id)"/>
+<l:gentext key="editedby" text="Redaktsiooni autor(id)"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Märkused"/>
+<l:gentext key="Notes" text="Märkused"/>
+<l:gentext key="Pgs" text="Lk."/>
+<l:gentext key="pgs" text="Lk."/>
+<l:gentext key="Revisedby" text="Ãœle vaadanud: "/>
+<l:gentext key="revisedby" text="Ãœle vaadanud: "/>
+<l:gentext key="TableNotes" text="Märkused"/>
+<l:gentext key="tablenotes" text="Märkused"/>
+<l:gentext key="TableofContents" text="Sisukord"/>
+<l:gentext key="tableofcontents" text="Sisukord"/>
+<l:gentext key="unexpectedelementname" text="Ootamatu elemendi nimi"/>
+<l:gentext key="unsupported" text="toetuseta"/>
+<l:gentext key="xrefto" text="viide"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Valemite nimekiri"/>
+<l:gentext key="ListofEquations" text="Valemite nimekiri"/>
+<l:gentext key="ListofExamples" text="Näidete nimekiri"/>
+<l:gentext key="listofexamples" text="Näidete nimekiri"/>
+<l:gentext key="ListofFigures" text="Jooniste nimekiri"/>
+<l:gentext key="listoffigures" text="Jooniste nimekiri"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Tabelite nimekiri"/>
+<l:gentext key="ListofTables" text="Tabelite nimekiri"/>
+<l:gentext key="ListofUnknown" text="Tundmatute nimekiri"/>
+<l:gentext key="listofunknown" text="Tundmatute nimekiri"/>
+<l:gentext key="nav-home" text="Koju"/>
+<l:gentext key="nav-next" text="Järgmine"/>
+<l:gentext key="nav-next-sibling" text="Kiiresti edasi"/>
+<l:gentext key="nav-prev" text="Eelmine"/>
+<l:gentext key="nav-prev-sibling" text="Kiiresti tagasi"/>
+<l:gentext key="nav-up" text="Ãœles"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Lisa %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Peatükk %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Valem %n. %t"/>
+<l:template name="example" text="Näide %n. %t"/>
+<l:template name="figure" text="Joonis %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Protseduur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Lisa %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Peatükk %n. %t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="Lisa %n"/>
+<l:template name="bridgehead" text="Sektsioon %n"/>
+<l:template name="chapter" text="Peatükk %n"/>
+<l:template name="equation" text="Valem %n"/>
+<l:template name="example" text="Näide %n"/>
+<l:template name="figure" text="Joonis %n"/>
+<l:template name="part" text="Osa %n"/>
+<l:template name="procedure" text="Protseduur %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="K ja V %n"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="sect1" text="Sektsioon %n"/>
+<l:template name="sect2" text="Sektsioon %n"/>
+<l:template name="sect3" text="Sektsioon %n"/>
+<l:template name="sect4" text="Sektsioon %n"/>
+<l:template name="sect5" text="Sektsioon %n"/>
+<l:template name="section" text="Sektsioon %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Lisa %n, %t"/>
+<l:template name="bridgehead" text="Sektsioon %n, “%tâ€"/>
+<l:template name="chapter" text="Peatükk %n, %t"/>
+<l:template name="equation" text="Valem %n, “%tâ€"/>
+<l:template name="example" text="Näide %n, “%tâ€"/>
+<l:template name="figure" text="Joonis %n, “%tâ€"/>
+<l:template name="part" text="Osa %n, “%tâ€"/>
+<l:template name="procedure" text="Protseduur %n, “%tâ€"/>
+<l:template name="productionset" text="Production %n, “%tâ€"/>
+<l:template name="qandadiv" text="K ja V %n, “%tâ€"/>
+<l:template name="refsect1" text="the section called “%tâ€"/>
+<l:template name="refsect2" text="the section called “%tâ€"/>
+<l:template name="refsect3" text="the section called “%tâ€"/>
+<l:template name="refsection" text="the section called “%tâ€"/>
+<l:template name="sect1" text="Sektsioon %n, “%tâ€"/>
+<l:template name="sect2" text="Sektsioon %n, “%tâ€"/>
+<l:template name="sect3" text="Sektsioon %n, “%tâ€"/>
+<l:template name="sect4" text="Sektsioon %n, “%tâ€"/>
+<l:template name="sect5" text="Sektsioon %n, “%tâ€"/>
+<l:template name="section" text="Sektsioon %n, “%tâ€"/>
+<l:template name="simplesect" text="the section called “%tâ€"/>
+<l:template name="table" text="Tabel %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ja "/>
+<l:template name="seplast" text=", ja "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vt. %t."/>
+<l:template name="seealso" text="Vt. ka %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Auditoorium: "/>
+<l:template name="MsgLevel" text="Tase: "/>
+<l:template name="MsgOrig" text="Algallikas: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0425 Estonian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml
new file mode 100644
index 0000000..3841d3f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="eu" english-language-name="Basque">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/eu.xml -->
+<!-- * -->
+<!-- * E-mail the edited eu.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Laburpena"/>
+<l:gentext key="abstract" text="Laburpena"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="E:"/>
+<l:gentext key="answer" text="E:"/>
+<l:gentext key="Appendix" text="Eranskina"/>
+<l:gentext key="appendix" text="eranskina"/>
+<l:gentext key="Article" text="Artikulua"/>
+<l:gentext key="article" text="Artikulua"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Liburua"/>
+<l:gentext key="book" text="Liburua"/>
+<l:gentext key="CAUTION" text="KONTUZ"/>
+<l:gentext key="Caution" text="Kontuz"/>
+<l:gentext key="caution" text="Kontuz"/>
+<l:gentext key="Chapter" text="Atala"/>
+<l:gentext key="chapter" text="atala"/>
+<l:gentext key="Colophon" text="Azken ohar"/>
+<l:gentext key="colophon" text="Azken ohar"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Eskaintza"/>
+<l:gentext key="dedication" text="Eskaintza"/>
+<l:gentext key="Edition" text="Edizioa"/>
+<l:gentext key="edition" text="Edizioa"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ekuazioa"/>
+<l:gentext key="equation" text="Ekuazioa"/>
+<l:gentext key="Example" text="Adibidea"/>
+<l:gentext key="example" text="Adibidea"/>
+<l:gentext key="Figure" text="Irudia"/>
+<l:gentext key="figure" text="Irudia"/>
+<l:gentext key="Glossary" text="Glosarioa"/>
+<l:gentext key="glossary" text="Glosarioa"/>
+<l:gentext key="GlossSee" text="Ikus"/>
+<l:gentext key="glosssee" text="Ikus"/>
+<l:gentext key="GlossSeeAlso" text="Ikus baita ere"/>
+<l:gentext key="glossseealso" text="Ikus baita ere"/>
+<l:gentext key="IMPORTANT" text="GARRANTZITSUA"/>
+<l:gentext key="important" text="Garrantzitsua"/>
+<l:gentext key="Important" text="Garrantzitsua"/>
+<l:gentext key="Index" text="Indizea"/>
+<l:gentext key="index" text="Indizea"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legezko abisua"/>
+<l:gentext key="legalnotice" text="Legezko abisua"/>
+<l:gentext key="MsgAud" text="Audientzia"/>
+<l:gentext key="msgaud" text="Audientzia"/>
+<l:gentext key="MsgLevel" text="Maila"/>
+<l:gentext key="msglevel" text="Maila"/>
+<l:gentext key="MsgOrig" text="Jatorria"/>
+<l:gentext key="msgorig" text="Jatorria"/>
+<l:gentext key="NOTE" text="OHARRA"/>
+<l:gentext key="Note" text="Oharra"/>
+<l:gentext key="note" text="Oharra"/>
+<l:gentext key="Part" text="Zatia"/>
+<l:gentext key="part" text="Zatia"/>
+<l:gentext key="Preface" text="Hitzaurrea"/>
+<l:gentext key="preface" text="Hitzaurrea"/>
+<l:gentext key="Procedure" text="Prozedura"/>
+<l:gentext key="procedure" text="Prozedura"/>
+<l:gentext key="ProductionSet" text="Ekoizpena"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Argitaratua"/>
+<l:gentext key="published" text="Argitaratua"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Galdera eta E"/>
+<l:gentext key="qandadiv" text="Galdera eta E"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Galdera"/>
+<l:gentext key="question" text="galdera"/>
+<l:gentext key="RefEntry" text="Sarrera"/>
+<l:gentext key="refentry" text="Sarrera"/>
+<l:gentext key="Reference" text="Erreferentzia"/>
+<l:gentext key="reference" text="Erreferentzia"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Izena"/>
+<l:gentext key="refname" text="Izena"/>
+<l:gentext key="RefSection" text="Sekzioa"/>
+<l:gentext key="refsection" text="sekzioa"/>
+<l:gentext key="RefSynopsisDiv" text="Laburpena"/>
+<l:gentext key="refsynopsisdiv" text="Laburpena"/>
+<l:gentext key="RevHistory" text="Berrikuspenaren historia"/>
+<l:gentext key="revhistory" text="Berrikuspenaren historia"/>
+<l:gentext key="revision" text="Berrikuspena"/>
+<l:gentext key="Revision" text="Berrikuspena"/>
+<l:gentext key="sect1" text="Atala"/>
+<l:gentext key="sect2" text="Atala"/>
+<l:gentext key="sect3" text="Atala"/>
+<l:gentext key="sect4" text="Atala"/>
+<l:gentext key="sect5" text="Atala"/>
+<l:gentext key="section" text="Atala"/>
+<l:gentext key="Section" text="Atala"/>
+<l:gentext key="see" text="Ikus"/>
+<l:gentext key="See" text="Ikus"/>
+<l:gentext key="seealso" text="Ikus baita ere"/>
+<l:gentext key="Seealso" text="Ikus baita ere"/>
+<l:gentext key="SeeAlso" text="Ikus baita ere"/>
+<l:gentext key="set" text="Konfiguratu"/>
+<l:gentext key="Set" text="Konfiguratu"/>
+<l:gentext key="setindex" text="Konfiguratu indizea"/>
+<l:gentext key="SetIndex" text="Konfiguratu indizea"/>
+<l:gentext key="Sidebar" text="Alboko barra"/>
+<l:gentext key="sidebar" text="alboko barra"/>
+<l:gentext key="step" text="urratsa"/>
+<l:gentext key="Step" text="Urratsa"/>
+<l:gentext key="table" text="Taula"/>
+<l:gentext key="Table" text="Taula"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Iradokizuna"/>
+<l:gentext key="TIP" text="IRADOKIZUNA"/>
+<l:gentext key="Tip" text="Iradokizuna"/>
+<l:gentext key="Warning" text="Abisua"/>
+<l:gentext key="warning" text="Abisua"/>
+<l:gentext key="WARNING" text="ABISUA"/>
+<l:gentext key="and" text="eta"/>
+<l:gentext key="by" text="Honek"/>
+<l:gentext key="Edited" text="editatua"/>
+<l:gentext key="edited" text="editatua"/>
+<l:gentext key="Editedby" text="Honek editatua"/>
+<l:gentext key="editedby" text="Honek editatua"/>
+<l:gentext key="in" text="non"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Oharrak"/>
+<l:gentext key="Notes" text="Oharrak"/>
+<l:gentext key="Pgs" text="Orr."/>
+<l:gentext key="pgs" text="Orr."/>
+<l:gentext key="Revisedby" text="Berrikuspena: "/>
+<l:gentext key="revisedby" text="Berrikuspena: "/>
+<l:gentext key="TableNotes" text="Oharrak"/>
+<l:gentext key="tablenotes" text="Oharrak"/>
+<l:gentext key="TableofContents" text="Edukien aurkibidea"/>
+<l:gentext key="tableofcontents" text="Edukien aurkibidea"/>
+<l:gentext key="unexpectedelementname" text="Ustekabeko elemetu-izena"/>
+<l:gentext key="unsupported" text="onartzen ez den"/>
+<l:gentext key="xrefto" text="xref honi"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Ekuazioen zerrenda"/>
+<l:gentext key="ListofEquations" text="Ekuazioen zerrenda"/>
+<l:gentext key="ListofExamples" text="Adibideen zerrenda"/>
+<l:gentext key="listofexamples" text="Adibideen zerrenda"/>
+<l:gentext key="ListofFigures" text="Irudien zerrenda"/>
+<l:gentext key="listoffigures" text="Irudien zerrenda"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Taulen zerrenda"/>
+<l:gentext key="ListofTables" text="Taulen zerrenda"/>
+<l:gentext key="ListofUnknown" text="Ezezagunen zerrenda"/>
+<l:gentext key="listofunknown" text="Ezazagunen zerrenda"/>
+<l:gentext key="nav-home" text="Etxea"/>
+<l:gentext key="nav-next" text="Hurrengoa"/>
+<l:gentext key="nav-next-sibling" text="Aurreratze azkarra"/>
+<l:gentext key="nav-prev" text="Aurrekoa"/>
+<l:gentext key="nav-prev-sibling" text="Atzeratze azkarra"/>
+<l:gentext key="nav-up" text="Gora"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Zirriborroa"/>
+<l:gentext key="above" text="goian"/>
+<l:gentext key="below" text="behean"/>
+<l:gentext key="sectioncalled" text="honela deritzon atala"/>
+<l:gentext key="index symbols" text="Ikurrak"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Eranskina %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Atala %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekuazioa %n. %t"/>
+<l:template name="example" text="Adibidea %n. %t"/>
+<l:template name="figure" text="Irudia %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Zatia %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prozedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Ekoizpena %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Taula %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Eranskina %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Atala %n. %t"/>
+<l:template name="part" text="Zatia %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="E: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Galdera %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Galdera %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="honela deritzon atala “%tâ€"/>
+<l:template name="refsection" text="honela deritzon atala “%tâ€"/>
+<l:template name="refsect1" text="honela deritzon atala “%tâ€"/>
+<l:template name="refsect2" text="honela deritzon atala “%tâ€"/>
+<l:template name="refsect3" text="honela deritzon atala “%tâ€"/>
+<l:template name="sect1" text="honela deritzon atala “%tâ€"/>
+<l:template name="sect2" text="honela deritzon atala “%tâ€"/>
+<l:template name="sect3" text="honela deritzon atala “%tâ€"/>
+<l:template name="sect4" text="honela deritzon atala “%tâ€"/>
+<l:template name="sect5" text="honela deritzon atala “%tâ€"/>
+<l:template name="section" text="honela deritzon atala “%tâ€"/>
+<l:template name="simplesect" text="honela deritzon atala “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="E: %n"/>
+<l:template name="appendix" text="Eranskina %n"/>
+<l:template name="bridgehead" text="Atala %n"/>
+<l:template name="chapter" text="Atala %n"/>
+<l:template name="equation" text="Ekuazioa %n"/>
+<l:template name="example" text="Adibidea %n"/>
+<l:template name="figure" text="Irudia %n"/>
+<l:template name="part" text="Zatia %n"/>
+<l:template name="procedure" text="Prozedura %n"/>
+<l:template name="productionset" text="Ekoizpena %n"/>
+<l:template name="qandadiv" text="Galdera eta E %n"/>
+<l:template name="qandaentry" text="Galdera %n"/>
+<l:template name="question" text="Galdera %n"/>
+<l:template name="sect1" text="Atala %n"/>
+<l:template name="sect2" text="Atala %n"/>
+<l:template name="sect3" text="Atala %n"/>
+<l:template name="sect4" text="Atala %n"/>
+<l:template name="sect5" text="Atala %n"/>
+<l:template name="section" text="Atala %n"/>
+<l:template name="table" text="Taula %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Eranskina %n, %t"/>
+<l:template name="bridgehead" text="Atala %n, “%tâ€"/>
+<l:template name="chapter" text="Atala %n, %t"/>
+<l:template name="equation" text="Ekuazioa %n, “%tâ€"/>
+<l:template name="example" text="Adibidea %n, “%tâ€"/>
+<l:template name="figure" text="Irudia %n, “%tâ€"/>
+<l:template name="part" text="Zatia %n, “%tâ€"/>
+<l:template name="procedure" text="Prozedura %n, “%tâ€"/>
+<l:template name="productionset" text="Ekoizpena %n, “%tâ€"/>
+<l:template name="qandadiv" text="Galdera eta E %n, “%tâ€"/>
+<l:template name="refsect1" text="honela deritzon atala “%tâ€"/>
+<l:template name="refsect2" text="honela deritzon atala “%tâ€"/>
+<l:template name="refsect3" text="honela deritzon atala “%tâ€"/>
+<l:template name="refsection" text="honela deritzon atala “%tâ€"/>
+<l:template name="sect1" text="Atala %n, “%tâ€"/>
+<l:template name="sect2" text="Atala %n, “%tâ€"/>
+<l:template name="sect3" text="Atala %n, “%tâ€"/>
+<l:template name="sect4" text="Atala %n, “%tâ€"/>
+<l:template name="sect5" text="Atala %n, “%tâ€"/>
+<l:template name="section" text="Atala %n, “%tâ€"/>
+<l:template name="simplesect" text="honela deritzon atala “%tâ€"/>
+<l:template name="table" text="Taula %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" eta "/>
+<l:template name="seplast" text=", eta "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ikus %t."/>
+<l:template name="seealso" text="Ikus baita ere %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audientzia: "/>
+<l:template name="MsgLevel" text="Maila: "/>
+<l:template name="MsgOrig" text="Jatorria: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x042d Basque"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml
new file mode 100644
index 0000000..257dc0b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fa" english-language-name="Farsi">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/fa.xml -->
+<!-- * -->
+<!-- * E-mail the edited fa.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="چكيده"/>
+<l:gentext key="abstract" text="چكيده"/>
+<l:gentext key="Acknowledgements" text="تقدیرنامه ها"/>
+<l:gentext key="acknowledgements" text="تقدیرنامه ها"/>
+<l:gentext key="Answer" text="ج:"/>
+<l:gentext key="answer" text="ج:"/>
+<l:gentext key="Appendix" text="پيوست"/>
+<l:gentext key="appendix" text="پيوست"/>
+<l:gentext key="Article" text="مقاله"/>
+<l:gentext key="article" text="مقاله"/>
+<l:gentext key="Author" text="نویسنده"/>
+<l:gentext key="Bibliography" text="كتاب‌شناسی"/>
+<l:gentext key="bibliography" text="كتاب‌شناسی"/>
+<l:gentext key="Book" text="كتاب"/>
+<l:gentext key="book" text="كتاب"/>
+<l:gentext key="CAUTION" text="احتياط"/>
+<l:gentext key="Caution" text="احتياط"/>
+<l:gentext key="caution" text="احتياط"/>
+<l:gentext key="Chapter" text="Ùصل"/>
+<l:gentext key="chapter" text="Ùصل"/>
+<l:gentext key="Colophon" text="درباره‌ی نشريه"/>
+<l:gentext key="colophon" text="درباره‌ی نشريه"/>
+<l:gentext key="Copyright" text="حق طبع ونشر"/>
+<l:gentext key="copyright" text="حق طبع ونشر"/>
+<l:gentext key="Dedication" text="اهداء"/>
+<l:gentext key="dedication" text="اهداء"/>
+<l:gentext key="Edition" text="ويرايش"/>
+<l:gentext key="edition" text="ويرايش"/>
+<l:gentext key="Editor" text="ويرايش"/>
+<l:gentext key="Equation" text="معادله"/>
+<l:gentext key="equation" text="معادله"/>
+<l:gentext key="Example" text="مثال"/>
+<l:gentext key="example" text="مثال"/>
+<l:gentext key="Figure" text="شكل"/>
+<l:gentext key="figure" text="شكل"/>
+<l:gentext key="Glossary" text="واژه‌نامه"/>
+<l:gentext key="glossary" text="واژه‌نامه"/>
+<l:gentext key="GlossSee" text="ببیند"/>
+<l:gentext key="glosssee" text="ببیند"/>
+<l:gentext key="GlossSeeAlso" text="همچنین ببیند"/>
+<l:gentext key="glossseealso" text="همچنین ببیند"/>
+<l:gentext key="IMPORTANT" text="مهم"/>
+<l:gentext key="important" text="مهم"/>
+<l:gentext key="Important" text="مهم"/>
+<l:gentext key="Index" text="راهنما"/>
+<l:gentext key="index" text="راهنما"/>
+<l:gentext key="ISBN" text="شابک"/>
+<l:gentext key="isbn" text="شابک"/>
+<l:gentext key="LegalNotice" text="اخطار قانونی"/>
+<l:gentext key="legalnotice" text="اخطار قانونی"/>
+<l:gentext key="MsgAud" text="شنودگان"/>
+<l:gentext key="msgaud" text="شنودگان"/>
+<l:gentext key="MsgLevel" text="سطح پیام"/>
+<l:gentext key="msglevel" text="سطح پیام"/>
+<l:gentext key="MsgOrig" text="اصل"/>
+<l:gentext key="msgorig" text="اصل"/>
+<l:gentext key="NOTE" text="ياداشت"/>
+<l:gentext key="Note" text="ياداشت"/>
+<l:gentext key="note" text="ياداشت"/>
+<l:gentext key="Part" text="بخش"/>
+<l:gentext key="part" text="بخش"/>
+<l:gentext key="Preface" text="ديباچه"/>
+<l:gentext key="preface" text="ديباچه"/>
+<l:gentext key="Procedure" text="رويه"/>
+<l:gentext key="procedure" text="رويه"/>
+<l:gentext key="ProductionSet" text="توليد"/>
+<l:gentext key="PubDate" text="تاریخ انتشار"/>
+<l:gentext key="pubdate" text="تاریخ انتشار"/>
+<l:gentext key="Published" text="منتشر‌شده"/>
+<l:gentext key="published" text="منتشر‌شده"/>
+<l:gentext key="Publisher" text="منتشر‌شده"/>
+<l:gentext key="Qandadiv" text="پرسش و‌ پاسخ"/>
+<l:gentext key="qandadiv" text="پرسش و پاسخ"/>
+<l:gentext key="QandASet" text="سوالات متداول"/>
+<l:gentext key="Question" text=":پرسش"/>
+<l:gentext key="question" text=":پرسش"/>
+<l:gentext key="RefEntry" text="Ùقره"/>
+<l:gentext key="refentry" text="Ùقره"/>
+<l:gentext key="Reference" text="ارجاع"/>
+<l:gentext key="reference" text="ارجاع"/>
+<l:gentext key="References" text="ارجاع"/>
+<l:gentext key="RefName" text="نام"/>
+<l:gentext key="refname" text="نام"/>
+<l:gentext key="RefSection" text="قسمت"/>
+<l:gentext key="refsection" text="قسمت"/>
+<l:gentext key="RefSynopsisDiv" text="مختصر"/>
+<l:gentext key="refsynopsisdiv" text="مختصر"/>
+<l:gentext key="RevHistory" text="تاريخ بازبينی"/>
+<l:gentext key="revhistory" text="تاريخ بازبينی"/>
+<l:gentext key="revision" text="بازبينی"/>
+<l:gentext key="Revision" text="باز بينی"/>
+<l:gentext key="sect1" text="قسمت"/>
+<l:gentext key="sect2" text="قسمت"/>
+<l:gentext key="sect3" text="قسمت"/>
+<l:gentext key="sect4" text="قسمت"/>
+<l:gentext key="sect5" text="قسمت"/>
+<l:gentext key="section" text="قسمت"/>
+<l:gentext key="Section" text="قسمت"/>
+<l:gentext key="see" text="ببیند"/>
+<l:gentext key="See" text="ببیند"/>
+<l:gentext key="seealso" text="همچنین ببیند"/>
+<l:gentext key="Seealso" text="همچنین ببیند"/>
+<l:gentext key="SeeAlso" text="همچنین ببیند"/>
+<l:gentext key="set" text="مجموعه"/>
+<l:gentext key="Set" text="مجموعه"/>
+<l:gentext key="setindex" text="راهنمای مجموعه"/>
+<l:gentext key="SetIndex" text="راهنمای مجموعه"/>
+<l:gentext key="Sidebar" text="نوار کناری"/>
+<l:gentext key="sidebar" text="نوار کناری"/>
+<l:gentext key="step" text="گام"/>
+<l:gentext key="Step" text="گام"/>
+<l:gentext key="table" text="جدول"/>
+<l:gentext key="Table" text="جدول"/>
+<l:gentext key="task" text="وظیÙÙ‡"/>
+<l:gentext key="Task" text="وظیÙÙ‡"/>
+<l:gentext key="tip" text="نکته"/>
+<l:gentext key="TIP" text="نکته"/>
+<l:gentext key="Tip" text="نکته"/>
+<l:gentext key="Warning" text="هشدار"/>
+<l:gentext key="warning" text="هشدار"/>
+<l:gentext key="WARNING" text="هشدار"/>
+<l:gentext key="and" text="Ùˆ"/>
+<l:gentext key="by" text="توسط"/>
+<l:gentext key="Edited" text="ویرایش شده"/>
+<l:gentext key="edited" text="ویرایش شده"/>
+<l:gentext key="Editedby" text="ویرایستار"/>
+<l:gentext key="editedby" text="ویرایستار"/>
+<l:gentext key="in" text="در"/>
+<l:gentext key="lastlistcomma" text="،"/>
+<l:gentext key="listcomma" text="،"/>
+<l:gentext key="notes" text="ياداشت‌ها"/>
+<l:gentext key="Notes" text="ياداشت‌ها"/>
+<l:gentext key="Pgs" text="صÙحه"/>
+<l:gentext key="pgs" text="صÙحه"/>
+<l:gentext key="Revisedby" text=" :بازبينی شده بوسیله‌ی"/>
+<l:gentext key="revisedby" text=" :بازبينس شده بوسیله‌ی"/>
+<l:gentext key="TableNotes" text="ياداشت‌ها"/>
+<l:gentext key="tablenotes" text="ياداشت‌ها"/>
+<l:gentext key="TableofContents" text="Ùهرست"/>
+<l:gentext key="tableofcontents" text="Ùهرست"/>
+<l:gentext key="unexpectedelementname" text="نام عنصرغيرمنتظره"/>
+<l:gentext key="unsupported" text="پشتيبانی نشده"/>
+<l:gentext key="xrefto" text="ارجاع به"/>
+<l:gentext key="Authors" text="نویسندگان"/>
+<l:gentext key="copyeditor" text="اصلاح کننده کپی"/>
+<l:gentext key="graphicdesigner" text="طراحی گراÙیکی"/>
+<l:gentext key="productioneditor" text="اصلاح کننده محصول"/>
+<l:gentext key="technicaleditor" text="اصلاح کننده تکنیکی"/>
+<l:gentext key="translator" text="مترجم"/>
+<l:gentext key="listofequations" text="Ùهرست معادلات"/>
+<l:gentext key="ListofEquations" text="Ùهرست معادلات"/>
+<l:gentext key="ListofExamples" text="Ùهرست امثال"/>
+<l:gentext key="listofexamples" text="Ùهرست امثال"/>
+<l:gentext key="ListofFigures" text="Ùهرست اشکال"/>
+<l:gentext key="listoffigures" text="Ùهرست اشکال"/>
+<l:gentext key="ListofProcedures" text="Ùهرست روند‌ها"/>
+<l:gentext key="listofprocedures" text="Ùهرست روند‌ها"/>
+<l:gentext key="listoftables" text="Ùهرست جدول‌ها"/>
+<l:gentext key="ListofTables" text="Ùهرست جدول‌ها"/>
+<l:gentext key="ListofUnknown" text="Ùهرست نادانسته‌ها"/>
+<l:gentext key="listofunknown" text="Ùهرست نادانسته‌ها"/>
+<l:gentext key="nav-home" text="خانه"/>
+<l:gentext key="nav-next" text="بعدی"/>
+<l:gentext key="nav-next-sibling" text="هم‌نيای بعدی"/>
+<l:gentext key="nav-prev" text="قبلی"/>
+<l:gentext key="nav-prev-sibling" text="هم‌نيای قبلی"/>
+<l:gentext key="nav-up" text="بالا"/>
+<l:gentext key="nav-toc" text="Ùهرست"/>
+<l:gentext key="Draft" text="پيش‌نويس"/>
+<l:gentext key="above" text="در‌بالا"/>
+<l:gentext key="below" text="در‌پایین"/>
+<l:gentext key="sectioncalled" text="بخشی بنام"/>
+<l:gentext key="index symbols" text="سمبل‌های راهنما"/>
+<l:gentext key="writing-mode" text="rl-tb"/>
+<l:gentext key="lowercase.alpha" text="ا ب پ ت ث ج چ ح خ د ذ ر ز ژس ش ص ض ع غ ٠ق ک گ ل م ن و ه ی"/>
+<l:gentext key="uppercase.alpha" text="ا ب پ ت ث ج چ ح خ د ذ ر ز ژس ش ص ض ع غ ٠ق ک گ ل م ن و ه ی"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="&#10; پيوست %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="&#10; Ùصل %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="&#10; معادله %n. %t"/>
+<l:template name="example" text="&#10; مثال %n. %t"/>
+<l:template name="figure" text="&#10; شكل %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="&#10; بخش %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="&#10; رويه %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="&#10; توليد %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="&#10; جدول %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="&#10; پيوست %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="&#10; Ùصل %n. %t"/>
+<l:template name="part" text="&#10; بخش %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="&#10; ج: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="&#10; :پرسش %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="&#10; :پرسش %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (%p صÙحه‌ی)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(%p صÙحه‌ی)"/>
+<l:template name="docname" text=" %oدر "/>
+<l:template name="docnamelong" text="%o در مستندی بنام "/>
+<l:template name="pageabbrev" text="(%p ص)"/>
+<l:template name="Page" text="%p صÙحه‌ی"/>
+<l:template name="bridgehead" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="refsection" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="refsect1" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="refsect2" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="refsect3" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="sect1" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="sect2" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="sect3" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="sect4" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="sect5" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="section" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="simplesect" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="&#10; ج: %n"/>
+<l:template name="appendix" text="&#10; پيوست %n"/>
+<l:template name="bridgehead" text="&#10; قسمت %n"/>
+<l:template name="chapter" text="&#10; Ùصل %n"/>
+<l:template name="equation" text="&#10; معادله %n"/>
+<l:template name="example" text="&#10; مثال %n"/>
+<l:template name="figure" text="&#10; شكل %n"/>
+<l:template name="part" text="&#10; بخش %n"/>
+<l:template name="procedure" text="&#10; رويه %n"/>
+<l:template name="productionset" text="&#10; توليد %n"/>
+<l:template name="qandadiv" text="&#10; پرسش و‌ پاسخ %n"/>
+<l:template name="qandaentry" text="&#10; :پرسش %n"/>
+<l:template name="question" text="&#10; :پرسش %n"/>
+<l:template name="sect1" text="&#10; قسمت %n"/>
+<l:template name="sect2" text="&#10; قسمت %n"/>
+<l:template name="sect3" text="&#10; قسمت %n"/>
+<l:template name="sect4" text="&#10; قسمت %n"/>
+<l:template name="sect5" text="&#10; قسمت %n"/>
+<l:template name="section" text="&#10; قسمت %n"/>
+<l:template name="table" text="&#10; جدول %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="&#10; پيوست %n, %t"/>
+<l:template name="bridgehead" text="&#10; قسمت %n, “%tâ€&#10; "/>
+<l:template name="chapter" text="&#10; Ùصل %n, %t"/>
+<l:template name="equation" text="&#10; معادله %n, “%tâ€&#10; "/>
+<l:template name="example" text="&#10; مثال %n, “%tâ€&#10; "/>
+<l:template name="figure" text="&#10; شكل %n, “%tâ€&#10; "/>
+<l:template name="part" text="&#10; بخش %n, “%tâ€&#10; "/>
+<l:template name="procedure" text="&#10; رويه %n, “%tâ€&#10; "/>
+<l:template name="productionset" text="&#10; توليد %n, “%tâ€&#10; "/>
+<l:template name="qandadiv" text="&#10; پرسش و‌ پاسخ %n, “%tâ€&#10; "/>
+<l:template name="refsect1" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="refsect2" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="refsect3" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="refsection" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="sect1" text="&#10; قسمت %n, “%tâ€&#10; "/>
+<l:template name="sect2" text="&#10; قسمت %n, “%tâ€&#10; "/>
+<l:template name="sect3" text="&#10; قسمت %n, “%tâ€&#10; "/>
+<l:template name="sect4" text="&#10; قسمت %n, “%tâ€&#10; "/>
+<l:template name="sect5" text="&#10; قسمت %n, “%tâ€&#10; "/>
+<l:template name="section" text="&#10; قسمت %n, “%tâ€&#10; "/>
+<l:template name="simplesect" text="&#10; بخشی بنام&#10; “%tâ€&#10; "/>
+<l:template name="table" text="&#10; جدول %n, “%tâ€&#10; "/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="&#10; ،&#10; "/>
+<l:template name="sep2" text="&#10; Ùˆ&#10; "/>
+<l:template name="seplast" text="&#10; ،&#10; و&#10; "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text=" %t ببیند."/>
+<l:template name="seealso" text="%t همچنین ببیند."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="&#10; شنودگان: "/>
+<l:template name="MsgLevel" text="&#10; سطح پیام: "/>
+<l:template name="MsgOrig" text="&#10; اصل: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[تعری٠"/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ژانويه"/>
+<l:template name="February" text="Ùوريه"/>
+<l:template name="March" text="مارس"/>
+<l:template name="April" text="اوريل"/>
+<l:template name="May" text="مه"/>
+<l:template name="June" text="ژوئن"/>
+<l:template name="July" text="ژوئیه"/>
+<l:template name="August" text="اوت"/>
+<l:template name="September" text="سپتامبر"/>
+<l:template name="October" text="اكتبر"/>
+<l:template name="November" text="نوامبر"/>
+<l:template name="December" text="دسامبر"/>
+<l:template name="Monday" text="دوشنبه"/>
+<l:template name="Tuesday" text="سه شنبه"/>
+<l:template name="Wednesday" text="چهار‌شنبه"/>
+<l:template name="Thursday" text="پنج‌شنبه"/>
+<l:template name="Friday" text="جمعه"/>
+<l:template name="Saturday" text="شنبه"/>
+<l:template name="Sunday" text="يك‌شنبه"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ژانويه"/>
+<l:template name="Feb" text="Ùوريه"/>
+<l:template name="Mar" text="مارس"/>
+<l:template name="Apr" text="اوريل"/>
+<l:template name="May" text="مه"/>
+<l:template name="Jun" text="ژوئن"/>
+<l:template name="Jul" text="ژوئيه"/>
+<l:template name="Aug" text="اوت"/>
+<l:template name="Sep" text="سپتامبر"/>
+<l:template name="Oct" text="اكتبر"/>
+<l:template name="Nov" text="نوامبر"/>
+<l:template name="Dec" text="دسامبر"/>
+<l:template name="Mon" text="دو‌شنبه"/>
+<l:template name="Tue" text="سه‌شنبه"/>
+<l:template name="Wed" text="چهار‌شنبه"/>
+<l:template name="Thu" text="پنج‌شنبه"/>
+<l:template name="Fri" text="جمعه"/>
+<l:template name="Sat" text="شنبه"/>
+<l:template name="Sun" text="يك‌شنبه"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0429 Farsi"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">سمبل‌های راهنم</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml
new file mode 100644
index 0000000..232d057
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml
@@ -0,0 +1,670 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fi" english-language-name="Finnish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/fi.xml -->
+<!-- * -->
+<!-- * E-mail the edited fi.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Tiivistelmä"/>
+<l:gentext key="abstract" text="tiivistelmä"/>
+<l:gentext key="Acknowledgements" text="Kiitokset"/>
+<l:gentext key="acknowledgements" text="kiitokset"/>
+<l:gentext key="Answer" text="V:"/>
+<l:gentext key="answer" text="v:"/>
+<l:gentext key="Appendix" text="Liite"/>
+<l:gentext key="appendix" text="liite"/>
+<l:gentext key="Article" text="Artikkeli"/>
+<l:gentext key="article" text="artikkeli"/>
+<l:gentext key="Author" text="Tekijä"/>
+<l:gentext key="Bibliography" text="Lähteet"/>
+<l:gentext key="bibliography" text="lähteet"/>
+<l:gentext key="Book" text="Kirja"/>
+<l:gentext key="book" text="kirja"/>
+<l:gentext key="CAUTION" text="VARO"/>
+<l:gentext key="Caution" text="Varo"/>
+<l:gentext key="caution" text="varo"/>
+<l:gentext key="Chapter" text="Luku"/>
+<l:gentext key="chapter" text="luku"/>
+<l:gentext key="Colophon" text="Tuontantotavat"/>
+<l:gentext key="colophon" text="tuontantotavat"/>
+<l:gentext key="Copyright" text="Tekijänoikeudet"/>
+<l:gentext key="copyright" text="tekijänoikeudet"/>
+<l:gentext key="Dedication" text="Omistus"/>
+<l:gentext key="dedication" text="omistus"/>
+<l:gentext key="Edition" text="Edition"/>
+<l:gentext key="edition" text="edition"/>
+<l:gentext key="Editor" text="Toimittaja"/>
+<l:gentext key="Equation" text="Kaava"/>
+<l:gentext key="equation" text="kaava"/>
+<l:gentext key="Example" text="Esimerkki"/>
+<l:gentext key="example" text="esimerkki"/>
+<l:gentext key="Figure" text="Kuva"/>
+<l:gentext key="figure" text="kuva"/>
+<l:gentext key="Glossary" text="Sanasto"/>
+<l:gentext key="glossary" text="sanasto"/>
+<l:gentext key="GlossSee" text="Katso"/>
+<l:gentext key="glosssee" text="katso"/>
+<l:gentext key="GlossSeeAlso" text="Katso myös"/>
+<l:gentext key="glossseealso" text="katso myös"/>
+<l:gentext key="IMPORTANT" text="TÄRKEÄÄ"/>
+<l:gentext key="important" text="tärkeää"/>
+<l:gentext key="Important" text="Tärkeää"/>
+<l:gentext key="Index" text="Indeksi"/>
+<l:gentext key="index" text="indeksi"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Oikeudellinen ilmoitus"/>
+<l:gentext key="legalnotice" text="oikeudellinen ilmoitus"/>
+<l:gentext key="MsgAud" text="Yleisö"/>
+<l:gentext key="msgaud" text="yleisö"/>
+<l:gentext key="MsgLevel" text="Taso"/>
+<l:gentext key="msglevel" text="taso"/>
+<l:gentext key="MsgOrig" text="Alkuperä"/>
+<l:gentext key="msgorig" text="alkuperä"/>
+<l:gentext key="NOTE" text="HUOMAA"/>
+<l:gentext key="Note" text="Huomaa"/>
+<l:gentext key="note" text="huomaa"/>
+<l:gentext key="Part" text="Osa"/>
+<l:gentext key="part" text="osa"/>
+<l:gentext key="Preface" text="Esipuhe"/>
+<l:gentext key="preface" text="esipuhe"/>
+<l:gentext key="Procedure" text="Aliohjelma"/>
+<l:gentext key="procedure" text="aliohjelma"/>
+<l:gentext key="ProductionSet" text="Tuotanto"/>
+<l:gentext key="PubDate" text="Julkaisupäivä"/>
+<l:gentext key="pubdate" text="julkaisupäivä"/>
+<l:gentext key="Published" text="Julkaistu"/>
+<l:gentext key="published" text="julkaistu"/>
+<l:gentext key="Publisher" text="Julkaisija"/>
+<l:gentext key="Qandadiv" text="K ja V"/>
+<l:gentext key="qandadiv" text="k ja v"/>
+<l:gentext key="QandASet" text="Usein kysytyt kysymykset"/>
+<l:gentext key="Question" text="K:"/>
+<l:gentext key="question" text="k:"/>
+<l:gentext key="RefEntry" text="Sivu"/>
+<l:gentext key="refentry" text="sivu"/>
+<l:gentext key="Reference" text="Lähdeluettelo"/>
+<l:gentext key="reference" text="lähdeluettelo"/>
+<l:gentext key="References" text="References"/>
+<l:gentext key="RefName" text="Nimi"/>
+<l:gentext key="refname" text="nimi"/>
+<l:gentext key="RefSection" text="Kohta"/>
+<l:gentext key="refsection" text="kohta"/>
+<l:gentext key="RefSynopsisDiv" text="Yhteenveto"/>
+<l:gentext key="refsynopsisdiv" text="yhteenveto"/>
+<l:gentext key="RevHistory" text="Versiohistoria"/>
+<l:gentext key="revhistory" text="versiohistoria"/>
+<l:gentext key="revision" text="versio"/>
+<l:gentext key="Revision" text="Versio"/>
+<l:gentext key="sect1" text="Kohta"/>
+<l:gentext key="sect2" text="Kohta"/>
+<l:gentext key="sect3" text="Kohta"/>
+<l:gentext key="sect4" text="Kohta"/>
+<l:gentext key="sect5" text="Kohta"/>
+<l:gentext key="section" text="kohta"/>
+<l:gentext key="Section" text="Kohta"/>
+<l:gentext key="see" text="katso"/>
+<l:gentext key="See" text="Katso"/>
+<l:gentext key="seealso" text="katso myös"/>
+<l:gentext key="Seealso" text="Katso myös"/>
+<l:gentext key="SeeAlso" text="Katso myös"/>
+<l:gentext key="set" text="Kokoelma"/>
+<l:gentext key="Set" text="Kokoelma"/>
+<l:gentext key="setindex" text="kokoelman indeksi"/>
+<l:gentext key="SetIndex" text="Kokoelman indeksi"/>
+<l:gentext key="Sidebar" text="Sivupalkki"/>
+<l:gentext key="sidebar" text="sivupalkki"/>
+<l:gentext key="step" text="toimenpide"/>
+<l:gentext key="Step" text="Toimenpide"/>
+<l:gentext key="table" text="taulu"/>
+<l:gentext key="Table" text="Taulu"/>
+<l:gentext key="task" text="tehtävä"/>
+<l:gentext key="Task" text="Tehtävä"/>
+<l:gentext key="tip" text="vihje"/>
+<l:gentext key="TIP" text="VIHJE"/>
+<l:gentext key="Tip" text="Vihje"/>
+<l:gentext key="Warning" text="Varoitus"/>
+<l:gentext key="warning" text="varoitus"/>
+<l:gentext key="WARNING" text="VAROITUS"/>
+<l:gentext key="and" text="ja"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Toim."/>
+<l:gentext key="edited" text="toim."/>
+<l:gentext key="Editedby" text="Toimittanut"/>
+<l:gentext key="editedby" text="toimittanut"/>
+<l:gentext key="in" text="teoksessa"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="viitteet"/>
+<l:gentext key="Notes" text="Viitteet"/>
+<l:gentext key="Pgs" text="Sivut"/>
+<l:gentext key="pgs" text="sivut"/>
+<l:gentext key="Revisedby" text="Muokannut: "/>
+<l:gentext key="revisedby" text="muokannut: "/>
+<l:gentext key="TableNotes" text="Viitteet"/>
+<l:gentext key="tablenotes" text="viitteet"/>
+<l:gentext key="TableofContents" text="Sisällys"/>
+<l:gentext key="tableofcontents" text="sisällys"/>
+<l:gentext key="unexpectedelementname" text="Odottamaton elementin nimi"/>
+<l:gentext key="unsupported" text="ei tueta"/>
+<l:gentext key="xrefto" text="xref johonkin"/>
+<l:gentext key="Authors" text="Tekijät"/>
+<l:gentext key="copyeditor" text="Copy Editor"/>
+<l:gentext key="graphicdesigner" text="Graafinen suunnittelija"/>
+<l:gentext key="productioneditor" text="Production Editor"/>
+<l:gentext key="technicaleditor" text="Tekninen toimittaja"/>
+<l:gentext key="translator" text="Kääntäjä"/>
+<l:gentext key="listofequations" text="luettelo esimerkeistä"/>
+<l:gentext key="ListofEquations" text="Luettelo esimerkeistä"/>
+<l:gentext key="ListofExamples" text="Luettelo esimerkeistä"/>
+<l:gentext key="listofexamples" text="luettelo esimerkeistä"/>
+<l:gentext key="ListofFigures" text="Luettelo kuvista"/>
+<l:gentext key="listoffigures" text="luettelo kuvista"/>
+<l:gentext key="ListofProcedures" text="Luettelo aliohjelmista"/>
+<l:gentext key="listofprocedures" text="luettelo aliohjelmista"/>
+<l:gentext key="listoftables" text="luettelo tauluista"/>
+<l:gentext key="ListofTables" text="Luettelo tauluista"/>
+<l:gentext key="ListofUnknown" text="Luettelo tuntemattomista"/>
+<l:gentext key="listofunknown" text="luettelo tuntemattomista"/>
+<l:gentext key="nav-home" text="Alkuun"/>
+<l:gentext key="nav-next" text="Seuraava"/>
+<l:gentext key="nav-next-sibling" text="Nopeasti eteenpäin"/>
+<l:gentext key="nav-prev" text="Edellinen"/>
+<l:gentext key="nav-prev-sibling" text="Nopeasti taaksepäin"/>
+<l:gentext key="nav-up" text="Ylös"/>
+<l:gentext key="nav-toc" text="Sisällysluettelo"/>
+<l:gentext key="Draft" text="Luonnos"/>
+<l:gentext key="above" text="yllä"/>
+<l:gentext key="below" text="alla"/>
+<l:gentext key="sectioncalled" text="kohta nimeltä"/>
+<l:gentext key="index symbols" text="Symbolit"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzåäöšž"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖŠŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="â€"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="’"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Liite %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Luku %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Kaava %n. %t"/>
+<l:template name="example" text="Esimerkki %n. %t"/>
+<l:template name="figure" text="Kuva %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Aliohjelma %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Tuotanto %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Taulu %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Liite %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Luku %n. %t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(sivu %p)"/>
+<l:template name="docname" text=" kirjoitelmassa %o"/>
+<l:template name="docnamelong" text=" kirjoitelmassa otsikoltaan %o"/>
+<l:template name="pageabbrev" text="(s. %p)"/>
+<l:template name="Page" text="Sivu %p"/>
+<l:template name="bridgehead" text="â€%tâ€"/>
+<l:template name="refsection" text="â€%tâ€"/>
+<l:template name="refsect1" text="â€%tâ€"/>
+<l:template name="refsect2" text="â€%tâ€"/>
+<l:template name="refsect3" text="â€%tâ€"/>
+<l:template name="sect1" text="â€%tâ€"/>
+<l:template name="sect2" text="â€%tâ€"/>
+<l:template name="sect3" text="â€%tâ€"/>
+<l:template name="sect4" text="â€%tâ€"/>
+<l:template name="sect5" text="â€%tâ€"/>
+<l:template name="section" text="â€%tâ€"/>
+<l:template name="simplesect" text="â€%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="Liite %n"/>
+<l:template name="bridgehead" text="Kohta %n"/>
+<l:template name="chapter" text="Luku %n"/>
+<l:template name="equation" text="Kaava %n"/>
+<l:template name="example" text="Esimerkki %n"/>
+<l:template name="figure" text="Kuva %n"/>
+<l:template name="part" text="Osa %n"/>
+<l:template name="procedure" text="Aliohjelma %n"/>
+<l:template name="productionset" text="Tuotanto %n"/>
+<l:template name="qandadiv" text="K ja V %n"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="sect1" text="Kohta %n"/>
+<l:template name="sect2" text="Kohta %n"/>
+<l:template name="sect3" text="Kohta %n"/>
+<l:template name="sect4" text="Kohta %n"/>
+<l:template name="sect5" text="Kohta %n"/>
+<l:template name="section" text="Kohta %n"/>
+<l:template name="table" text="Taulu %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Liite %n, %t"/>
+<l:template name="bridgehead" text="Kohta %n, â€%tâ€"/>
+<l:template name="chapter" text="Luku %n, %t"/>
+<l:template name="equation" text="Kaava %n, â€%tâ€"/>
+<l:template name="example" text="Esimerkki %n, â€%tâ€"/>
+<l:template name="figure" text="Kuva %n, â€%tâ€"/>
+<l:template name="part" text="Osa %n, â€%tâ€"/>
+<l:template name="procedure" text="Aliohjelma %n, â€%tâ€"/>
+<l:template name="productionset" text="Tuotanto %n, â€%tâ€"/>
+<l:template name="qandadiv" text="K ja V %n, â€%tâ€"/>
+<l:template name="refsect1" text="kohta nimeltä â€%tâ€"/>
+<l:template name="refsect2" text="kohta nimeltä â€%tâ€"/>
+<l:template name="refsect3" text="kohta nimeltä â€%tâ€"/>
+<l:template name="refsection" text="kohta nimeltä â€%tâ€"/>
+<l:template name="sect1" text="Kohta %n, â€%tâ€"/>
+<l:template name="sect2" text="Kohta %n, â€%tâ€"/>
+<l:template name="sect3" text="Kohta %n, â€%tâ€"/>
+<l:template name="sect4" text="Kohta %n, â€%tâ€"/>
+<l:template name="sect5" text="Kohta %n, â€%tâ€"/>
+<l:template name="section" text="Kohta %n, â€%tâ€"/>
+<l:template name="simplesect" text="kohta nimeltä â€%tâ€"/>
+<l:template name="table" text="Taulu %n, â€%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ja "/>
+<l:template name="seplast" text=", ja "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Katso %t."/>
+<l:template name="seealso" text="Katso myös %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Yleisö: "/>
+<l:template name="MsgLevel" text="Taso: "/>
+<l:template name="MsgOrig" text="Alkuperä: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text=""/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text=""/>
+<l:template name="February" text=""/>
+<l:template name="March" text=""/>
+<l:template name="April" text=""/>
+<l:template name="May" text=""/>
+<l:template name="June" text=""/>
+<l:template name="July" text=""/>
+<l:template name="August" text=""/>
+<l:template name="September" text=""/>
+<l:template name="October" text=""/>
+<l:template name="November" text=""/>
+<l:template name="December" text=""/>
+<l:template name="Monday" text=""/>
+<l:template name="Tuesday" text=""/>
+<l:template name="Wednesday" text=""/>
+<l:template name="Thursday" text=""/>
+<l:template name="Friday" text=""/>
+<l:template name="Saturday" text=""/>
+<l:template name="Sunday" text=""/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text=""/>
+<l:template name="Feb" text=""/>
+<l:template name="Mar" text=""/>
+<l:template name="Apr" text=""/>
+<l:template name="May" text=""/>
+<l:template name="Jun" text=""/>
+<l:template name="Jul" text=""/>
+<l:template name="Aug" text=""/>
+<l:template name="Sep" text=""/>
+<l:template name="Oct" text=""/>
+<l:template name="Nov" text=""/>
+<l:template name="Dec" text=""/>
+<l:template name="Mon" text=""/>
+<l:template name="Tue" text=""/>
+<l:template name="Wed" text=""/>
+<l:template name="Thu" text=""/>
+<l:template name="Fri" text=""/>
+<l:template name="Sat" text=""/>
+<l:template name="Sun" text=""/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040b Finnish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbole</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">Å </l:l>
+<l:l i="20">Å¡</l:l>
+<l:l i="21">T</l:l>
+<l:l i="21">t</l:l>
+<l:l i="22">U</l:l>
+<l:l i="22">u</l:l>
+<l:l i="23">V</l:l>
+<l:l i="23">v</l:l>
+<l:l i="24">W</l:l>
+<l:l i="24">w</l:l>
+<l:l i="25">X</l:l>
+<l:l i="25">x</l:l>
+<l:l i="26">Y</l:l>
+<l:l i="26">y</l:l>
+<l:l i="27">Z</l:l>
+<l:l i="27">z</l:l>
+<l:l i="28">Ž</l:l>
+<l:l i="28">ž</l:l>
+<l:l i="29">Ã…</l:l>
+<l:l i="29">Ã¥</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">ä</l:l>
+<l:l i="31">Ö</l:l>
+<l:l i="31">ö</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml
new file mode 100644
index 0000000..5ca5248
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml
@@ -0,0 +1,690 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fr" english-language-name="French">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/fr.xml -->
+<!-- * -->
+<!-- * E-mail the edited fr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Résumé"/>
+<l:gentext key="abstract" text="Résumé"/>
+<l:gentext key="Acknowledgements" text="Remerciements"/>
+<l:gentext key="acknowledgements" text="Remerciements"/>
+<l:gentext key="Answer" text="R :"/>
+<l:gentext key="answer" text="R :"/>
+<l:gentext key="Appendix" text="Annexe"/>
+<l:gentext key="appendix" text="annexe"/>
+<l:gentext key="Article" text="Article"/>
+<l:gentext key="article" text="Article"/>
+<l:gentext key="Author" text="Auteur"/>
+<l:gentext key="Bibliography" text="Bibliographie"/>
+<l:gentext key="bibliography" text="Bibliographie"/>
+<l:gentext key="Book" text="Livre"/>
+<l:gentext key="book" text="Livre"/>
+<l:gentext key="CAUTION" text="ATTENTION"/>
+<l:gentext key="Caution" text="Attention"/>
+<l:gentext key="caution" text="Attention"/>
+<l:gentext key="Chapter" text="Chapitre"/>
+<l:gentext key="chapter" text="chapitre"/>
+<l:gentext key="Colophon" text="Achevé d'imprimer"/>
+<l:gentext key="colophon" text="Achevé d'imprimer"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dédicace"/>
+<l:gentext key="dedication" text="Dédicace"/>
+<l:gentext key="Edition" text="Édition"/>
+<l:gentext key="edition" text="Édition"/>
+<l:gentext key="Editor" text="Éditeur"/>
+<l:gentext key="Equation" text="Équation"/>
+<l:gentext key="equation" text="Équation"/>
+<l:gentext key="Example" text="Exemple"/>
+<l:gentext key="example" text="Exemple"/>
+<l:gentext key="Figure" text="Figure"/>
+<l:gentext key="figure" text="Figure"/>
+<l:gentext key="Glossary" text="Glossaire"/>
+<l:gentext key="glossary" text="Glossaire"/>
+<l:gentext key="GlossSee" text="Voir"/>
+<l:gentext key="glosssee" text="Voir"/>
+<l:gentext key="GlossSeeAlso" text="Voir aussi"/>
+<l:gentext key="glossseealso" text="Voir aussi"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="Important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Note légale"/>
+<l:gentext key="legalnotice" text="Note légale"/>
+<l:gentext key="MsgAud" text="Public visé"/>
+<l:gentext key="msgaud" text="Public visé"/>
+<l:gentext key="MsgLevel" text="Niveau"/>
+<l:gentext key="msglevel" text="Niveau"/>
+<l:gentext key="MsgOrig" text="Origine"/>
+<l:gentext key="msgorig" text="Origine"/>
+<l:gentext key="NOTE" text="NOTE"/>
+<l:gentext key="Note" text="Note"/>
+<l:gentext key="note" text="Note"/>
+<l:gentext key="Part" text="Partie"/>
+<l:gentext key="part" text="Partie"/>
+<l:gentext key="Preface" text="Préface"/>
+<l:gentext key="preface" text="Préface"/>
+<l:gentext key="Procedure" text="Procédure"/>
+<l:gentext key="procedure" text="Procédure"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Date de publication"/>
+<l:gentext key="pubdate" text="Date de publication"/>
+<l:gentext key="Published" text="Publié le"/>
+<l:gentext key="published" text="Publié le"/>
+<l:gentext key="Publisher" text="Éditeur"/>
+<l:gentext key="Qandadiv" text="Q &amp; R"/>
+<l:gentext key="qandadiv" text="Q &amp; R"/>
+<l:gentext key="QandASet" text="Questions fréquemment posées"/>
+<l:gentext key="Question" text="Q :"/>
+<l:gentext key="question" text="Q :"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Référence"/>
+<l:gentext key="reference" text="Référence"/>
+<l:gentext key="References" text="Références"/>
+<l:gentext key="RefName" text="Nom"/>
+<l:gentext key="refname" text="Nom"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Historique des versions"/>
+<l:gentext key="revhistory" text="Historique des versions"/>
+<l:gentext key="revision" text="Version"/>
+<l:gentext key="Revision" text="Version"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="section"/>
+<l:gentext key="Section" text="Section"/>
+<l:gentext key="see" text="voir"/>
+<l:gentext key="See" text="Voir"/>
+<l:gentext key="seealso" text="voir aussi"/>
+<l:gentext key="Seealso" text="Voir aussi"/>
+<l:gentext key="SeeAlso" text="Voir Aussi"/>
+<l:gentext key="set" text="Ensemble"/>
+<l:gentext key="Set" text="Ensemble"/>
+<l:gentext key="setindex" text="Index"/>
+<l:gentext key="SetIndex" text="Index"/>
+<l:gentext key="Sidebar" text="Filet vertical"/>
+<l:gentext key="sidebar" text="Filet vertical"/>
+<l:gentext key="step" text="étape"/>
+<l:gentext key="Step" text="Étape"/>
+<l:gentext key="table" text="Tableau"/>
+<l:gentext key="Table" text="Tableau"/>
+<l:gentext key="task" text="Tâche"/>
+<l:gentext key="Task" text="Tâche"/>
+<l:gentext key="tip" text="Astuce"/>
+<l:gentext key="TIP" text="ASTUCE"/>
+<l:gentext key="Tip" text="Astuce"/>
+<l:gentext key="Warning" text="Avertissement"/>
+<l:gentext key="warning" text="Avertissement"/>
+<l:gentext key="WARNING" text="AVERTISSEMENT"/>
+<l:gentext key="and" text="et"/>
+<l:gentext key="by" text="par"/>
+<l:gentext key="Edited" text="Publié"/>
+<l:gentext key="edited" text="Publié"/>
+<l:gentext key="Editedby" text="Publié par"/>
+<l:gentext key="editedby" text="Publié par"/>
+<l:gentext key="in" text="dans"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notes"/>
+<l:gentext key="Notes" text="Notes"/>
+<l:gentext key="Pgs" text="Pages"/>
+<l:gentext key="pgs" text="Pages"/>
+<l:gentext key="Revisedby" text="Revu et corrigé par : "/>
+<l:gentext key="revisedby" text="Revu et corrigé par : "/>
+<l:gentext key="TableNotes" text="Remarques"/>
+<l:gentext key="tablenotes" text="Remarques"/>
+<l:gentext key="TableofContents" text="Table des matières"/>
+<l:gentext key="tableofcontents" text="Table des matières"/>
+<l:gentext key="unexpectedelementname" text="Nom d'élément inattendu"/>
+<l:gentext key="unsupported" text="Non reconnu par le système"/>
+<l:gentext key="xrefto" text="Référence vers"/>
+<l:gentext key="Authors" text="Auteurs"/>
+<l:gentext key="copyeditor" text="Relecteur"/>
+<l:gentext key="graphicdesigner" text="Graphiste"/>
+<l:gentext key="productioneditor" text="Directeur de la production"/>
+<l:gentext key="technicaleditor" text="Rédacteur technique"/>
+<l:gentext key="translator" text="Traducteur"/>
+<l:gentext key="listofequations" text="Liste des équations"/>
+<l:gentext key="ListofEquations" text="Liste des équations"/>
+<l:gentext key="ListofExamples" text="Liste des exemples"/>
+<l:gentext key="listofexamples" text="Liste des exemples"/>
+<l:gentext key="ListofFigures" text="Liste des illustrations"/>
+<l:gentext key="listoffigures" text="Liste des illustrations"/>
+<l:gentext key="ListofProcedures" text="Liste des procédures"/>
+<l:gentext key="listofprocedures" text="Liste des procédures"/>
+<l:gentext key="listoftables" text="Liste des tableaux"/>
+<l:gentext key="ListofTables" text="Liste des tableaux"/>
+<l:gentext key="ListofUnknown" text="Liste inconnue"/>
+<l:gentext key="listofunknown" text="Liste inconnue"/>
+<l:gentext key="nav-home" text="Sommaire"/>
+<l:gentext key="nav-next" text="Suivant"/>
+<l:gentext key="nav-next-sibling" text="Avance rapide"/>
+<l:gentext key="nav-prev" text="Précédent"/>
+<l:gentext key="nav-prev-sibling" text="Arrière rapide"/>
+<l:gentext key="nav-up" text="Niveau supérieur"/>
+<l:gentext key="nav-toc" text="TdM"/>
+<l:gentext key="Draft" text="Brouillon"/>
+<l:gentext key="above" text="au-dessus"/>
+<l:gentext key="below" text="au-dessous"/>
+<l:gentext key="sectioncalled" text="la section intitulée"/>
+<l:gentext key="index symbols" text="Symboles"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzâêîôûëïüàèùéçæœ"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÂÊÎÔÛËÃÜÀÈÙÉÇÆŒ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ"/>
+<l:dingbat key="startquote" text="« "/>
+<l:dingbat key="endquote" text=" »"/>
+<l:dingbat key="nestedstartquote" text="“"/>
+<l:dingbat key="nestedendquote" text="â€"/>
+<l:dingbat key="singlestartquote" text="‹"/>
+<l:dingbat key="singleendquote" text="›"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Annexe %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Chapitre %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Équation %n. %t"/>
+<l:template name="example" text="Exemple %n. %t"/>
+<l:template name="figure" text="Figure %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procédure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tableau %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Annexe %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Chapitre %n. %t"/>
+<l:template name="part" text="Partie %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="R : %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q : %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q : %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" dans %o"/>
+<l:template name="docnamelong" text=" dans le document intitulé %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="la section intitulée « %t »"/>
+<l:template name="refsection" text="la section intitulée « %t »"/>
+<l:template name="refsect1" text="la section intitulée « %t »"/>
+<l:template name="refsect2" text="la section intitulée « %t »"/>
+<l:template name="refsect3" text="la section intitulée « %t »"/>
+<l:template name="sect1" text="la section intitulée « %t »"/>
+<l:template name="sect2" text="la section intitulée « %t »"/>
+<l:template name="sect3" text="la section intitulée « %t »"/>
+<l:template name="sect4" text="la section intitulée « %t »"/>
+<l:template name="sect5" text="la section intitulée « %t »"/>
+<l:template name="section" text="la section intitulée « %t »"/>
+<l:template name="simplesect" text="la section intitulée « %t »"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R : %n"/>
+<l:template name="appendix" text="Annexe %n"/>
+<l:template name="bridgehead" text="Section %n"/>
+<l:template name="chapter" text="Chapitre %n"/>
+<l:template name="equation" text="Équation %n"/>
+<l:template name="example" text="Exemple %n"/>
+<l:template name="figure" text="Figure %n"/>
+<l:template name="part" text="Partie %n"/>
+<l:template name="procedure" text="Procédure %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Q &amp; R %n"/>
+<l:template name="qandaentry" text="Q : %n"/>
+<l:template name="question" text="Q : %n"/>
+<l:template name="sect1" text="Section %n"/>
+<l:template name="sect2" text="Section %n"/>
+<l:template name="sect3" text="Section %n"/>
+<l:template name="sect4" text="Section %n"/>
+<l:template name="sect5" text="Section %n"/>
+<l:template name="section" text="Section %n"/>
+<l:template name="table" text="Tableau %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Annexe %n, %t"/>
+<l:template name="bridgehead" text="Section %n, « %t »"/>
+<l:template name="chapter" text="Chapitre %n, %t"/>
+<l:template name="equation" text="Équation %n, « %t »"/>
+<l:template name="example" text="Exemple %n, « %t »"/>
+<l:template name="figure" text="Figure %n, « %t »"/>
+<l:template name="part" text="Partie %n, « %t »"/>
+<l:template name="procedure" text="Procédure %n, « %t »"/>
+<l:template name="productionset" text="Production %n, « %t »"/>
+<l:template name="qandadiv" text="Q &amp; R %n, « %t »"/>
+<l:template name="refsect1" text="la section intitulée « %t »"/>
+<l:template name="refsect2" text="la section intitulée « %t »"/>
+<l:template name="refsect3" text="la section intitulée « %t »"/>
+<l:template name="refsection" text="la section intitulée « %t »"/>
+<l:template name="sect1" text="Section %n, « %t »"/>
+<l:template name="sect2" text="Section %n, « %t »"/>
+<l:template name="sect3" text="Section %n, « %t »"/>
+<l:template name="sect4" text="Section %n, « %t »"/>
+<l:template name="sect5" text="Section %n, « %t »"/>
+<l:template name="section" text="Section %n, « %t »"/>
+<l:template name="simplesect" text="la section intitulée « %t »"/>
+<l:template name="table" text="Tableau %n, « %t »"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" et "/>
+<l:template name="seplast" text=", et "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Voir %t."/>
+<l:template name="seealso" text="Voir aussi %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Public visé: "/>
+<l:template name="MsgLevel" text="Niveau: "/>
+<l:template name="MsgOrig" text="Origine: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Définition : "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="janvier"/>
+<l:template name="February" text="février"/>
+<l:template name="March" text="mars"/>
+<l:template name="April" text="avril"/>
+<l:template name="May" text="mai"/>
+<l:template name="June" text="juin"/>
+<l:template name="July" text="juillet"/>
+<l:template name="August" text="août"/>
+<l:template name="September" text="septembre"/>
+<l:template name="October" text="octobre"/>
+<l:template name="November" text="novembre"/>
+<l:template name="December" text="décembre"/>
+<l:template name="Monday" text="lundi"/>
+<l:template name="Tuesday" text="mardi"/>
+<l:template name="Wednesday" text="mercredi"/>
+<l:template name="Thursday" text="jeudi"/>
+<l:template name="Friday" text="vendredi"/>
+<l:template name="Saturday" text="samedi"/>
+<l:template name="Sunday" text="dimanche"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="fév"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="avr"/>
+<l:template name="May" text="mai"/>
+<l:template name="Jun" text="jun"/>
+<l:template name="Jul" text="jui"/>
+<l:template name="Aug" text="aoû"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="oct"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="déc"/>
+<l:template name="Mon" text="lun"/>
+<l:template name="Tue" text="mar"/>
+<l:template name="Wed" text="mer"/>
+<l:template name="Thu" text="jeu"/>
+<l:template name="Fri" text="ven"/>
+<l:template name="Sat" text="sam"/>
+<l:template name="Sun" text="dim"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040c French (FRANCE)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (éd.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Disponible "/>
+<l:template name="acctoo" text="Également disponible "/>
+<l:template name="onwww" text="sur World Wide Web"/>
+<l:template name="oninet" text="sur Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symboles</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">à</l:l>
+<l:l i="1">À</l:l>
+<l:l i="1">â</l:l>
+<l:l i="1">Â</l:l>
+<l:l i="1">Æ</l:l>
+<l:l i="1">æ</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="3">ç</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="5">ê</l:l>
+<l:l i="5">Ê</l:l>
+<l:l i="5">é</l:l>
+<l:l i="5">É</l:l>
+<l:l i="5">è</l:l>
+<l:l i="5">È</l:l>
+<l:l i="5">ë</l:l>
+<l:l i="5">Ë</l:l>
+<l:l i="5">€</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="9">ÃŽ</l:l>
+<l:l i="9">î</l:l>
+<l:l i="9">Ã</l:l>
+<l:l i="9">ï</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="15">Ö</l:l>
+<l:l i="15">ö</l:l>
+<l:l i="15">Å’</l:l>
+<l:l i="15">Å“</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="21">Ù</l:l>
+<l:l i="21">ù</l:l>
+<l:l i="21">Û</l:l>
+<l:l i="21">û</l:l>
+<l:l i="21">Ü</l:l>
+<l:l i="21">ü</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml
new file mode 100644
index 0000000..054036b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ga" english-language-name="Irish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ga.xml -->
+<!-- * -->
+<!-- * E-mail the edited ga.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Achoimre"/>
+<l:gentext key="abstract" text="Achoimre"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="F:"/>
+<l:gentext key="answer" text="F:"/>
+<l:gentext key="Appendix" text="Aguisín"/>
+<l:gentext key="appendix" text="Aguisín"/>
+<l:gentext key="Article" text="Alt"/>
+<l:gentext key="article" text="Alt"/>
+<l:gentext key="Author" text="Údar"/>
+<l:gentext key="Bibliography" text="Leabharliosta"/>
+<l:gentext key="bibliography" text="Leabharliosta"/>
+<l:gentext key="Book" text="Leabhar"/>
+<l:gentext key="book" text="Leabhar"/>
+<l:gentext key="CAUTION" text="FAINIC"/>
+<l:gentext key="Caution" text="Fainic"/>
+<l:gentext key="caution" text="Fainic"/>
+<l:gentext key="Chapter" text="Caibidil"/>
+<l:gentext key="chapter" text="Caibidil"/>
+<l:gentext key="Colophon" text="Colafan"/>
+<l:gentext key="colophon" text="Colafan"/>
+<l:gentext key="Copyright" text="Cóipcheart"/>
+<l:gentext key="copyright" text="Cóipcheart"/>
+<l:gentext key="Dedication" text="Tíolacadh"/>
+<l:gentext key="dedication" text="Tíolacadh"/>
+<l:gentext key="Edition" text="Eagrán"/>
+<l:gentext key="edition" text="Eagrán"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Cothromóid"/>
+<l:gentext key="equation" text="Cothromóid"/>
+<l:gentext key="Example" text="Sampla"/>
+<l:gentext key="example" text="Sampla"/>
+<l:gentext key="Figure" text="Léaráid"/>
+<l:gentext key="figure" text="Léaráid"/>
+<l:gentext key="Glossary" text="Gluais"/>
+<l:gentext key="glossary" text="Gluais"/>
+<l:gentext key="GlossSee" text="Féach"/>
+<l:gentext key="glosssee" text="Féach"/>
+<l:gentext key="GlossSeeAlso" text="Féach Freisin"/>
+<l:gentext key="glossseealso" text="Féach Freisin"/>
+<l:gentext key="IMPORTANT" text="TÃBHACHTACH"/>
+<l:gentext key="important" text="Tábhachtach"/>
+<l:gentext key="Important" text="Tábhachtach"/>
+<l:gentext key="Index" text="Innéacs"/>
+<l:gentext key="index" text="Innéacs"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Fógra Dlí"/>
+<l:gentext key="legalnotice" text="Fógra Dlí"/>
+<l:gentext key="MsgAud" text="Sprioclucht"/>
+<l:gentext key="msgaud" text="Sprioclucht"/>
+<l:gentext key="MsgLevel" text="Leibhéal"/>
+<l:gentext key="msglevel" text="Leibhéal"/>
+<l:gentext key="MsgOrig" text="Foinse"/>
+<l:gentext key="msgorig" text="Foinse"/>
+<l:gentext key="NOTE" text="NÓTA"/>
+<l:gentext key="Note" text="Nóta"/>
+<l:gentext key="note" text="Nóta"/>
+<l:gentext key="Part" text="Cuid"/>
+<l:gentext key="part" text="Cuid"/>
+<l:gentext key="Preface" text="Réamhrá"/>
+<l:gentext key="preface" text="Réamhrá"/>
+<l:gentext key="Procedure" text="Gnás"/>
+<l:gentext key="procedure" text="Gnás"/>
+<l:gentext key="ProductionSet" text="Rialacha Táirgthe"/>
+<l:gentext key="PubDate" text="Dáta Foilsithe"/>
+<l:gentext key="pubdate" text="Dáta foilsithe"/>
+<l:gentext key="Published" text="Foilsithe"/>
+<l:gentext key="published" text="Foilsithe"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="C &amp; F"/>
+<l:gentext key="qandadiv" text="C &amp; F"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="C:"/>
+<l:gentext key="question" text="C:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Tagairt"/>
+<l:gentext key="reference" text="Tagairt"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ainm"/>
+<l:gentext key="refname" text="Ainm"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Achoimre"/>
+<l:gentext key="refsynopsisdiv" text="Achoimre"/>
+<l:gentext key="RevHistory" text="Stair Leasaithe"/>
+<l:gentext key="revhistory" text="Stair Leasaithe"/>
+<l:gentext key="revision" text="Leasú"/>
+<l:gentext key="Revision" text="Leasú"/>
+<l:gentext key="sect1" text="Rannán"/>
+<l:gentext key="sect2" text="Rannán"/>
+<l:gentext key="sect3" text="Rannán"/>
+<l:gentext key="sect4" text="Rannán"/>
+<l:gentext key="sect5" text="Rannán"/>
+<l:gentext key="section" text="Rannán"/>
+<l:gentext key="Section" text="Rannán"/>
+<l:gentext key="see" text="féach"/>
+<l:gentext key="See" text="Féach"/>
+<l:gentext key="seealso" text="féach freisin"/>
+<l:gentext key="Seealso" text="Féach freisin"/>
+<l:gentext key="SeeAlso" text="Féach Freisin"/>
+<l:gentext key="set" text="Tacar"/>
+<l:gentext key="Set" text="Tacar"/>
+<l:gentext key="setindex" text="Innéacs"/>
+<l:gentext key="SetIndex" text="Innéacs"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="taobhbharra"/>
+<l:gentext key="step" text="céim"/>
+<l:gentext key="Step" text="Céim"/>
+<l:gentext key="table" text="Tábla"/>
+<l:gentext key="Table" text="Tábla"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Leid"/>
+<l:gentext key="TIP" text="LEID"/>
+<l:gentext key="Tip" text="Leid"/>
+<l:gentext key="Warning" text="Rabhadh"/>
+<l:gentext key="warning" text="Rabhadh"/>
+<l:gentext key="WARNING" text="RABHADH"/>
+<l:gentext key="and" text="agus"/>
+<l:gentext key="by" text="le"/>
+<l:gentext key="Edited" text="Curtha in eagar"/>
+<l:gentext key="edited" text="Curtha in eagar"/>
+<l:gentext key="Editedby" text="Curtha in eagar ag"/>
+<l:gentext key="editedby" text="Curtha in eagar ag"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Nótaí"/>
+<l:gentext key="Notes" text="Nótaí"/>
+<l:gentext key="Pgs" text="Lgh."/>
+<l:gentext key="pgs" text="Lgh."/>
+<l:gentext key="Revisedby" text="Leasaithe ag: "/>
+<l:gentext key="revisedby" text="Leasaithe ag: "/>
+<l:gentext key="TableNotes" text="Nótaí"/>
+<l:gentext key="tablenotes" text="Nótaí"/>
+<l:gentext key="TableofContents" text="Clár Ãbhair"/>
+<l:gentext key="tableofcontents" text="Clár Ãbhair"/>
+<l:gentext key="unexpectedelementname" text="Ainm eiliminte gan choinne"/>
+<l:gentext key="unsupported" text="gan tacaíocht"/>
+<l:gentext key="xrefto" text="xref go"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Liosta Cothromóidí"/>
+<l:gentext key="ListofEquations" text="Liosta Cothromóidí"/>
+<l:gentext key="ListofExamples" text="Liosta Samplaí"/>
+<l:gentext key="listofexamples" text="Liosta Samplaí"/>
+<l:gentext key="ListofFigures" text="Liosta Léaráidí"/>
+<l:gentext key="listoffigures" text="Liosta Léaráidí"/>
+<l:gentext key="ListofProcedures" text="Liosta Gnás"/>
+<l:gentext key="listofprocedures" text="Liosta Gnás"/>
+<l:gentext key="listoftables" text="Liosta Táblaí"/>
+<l:gentext key="ListofTables" text="Liosta Táblaí"/>
+<l:gentext key="ListofUnknown" text="Liosta Rudaí Anaithnide"/>
+<l:gentext key="listofunknown" text="Liosta Rudaí Anaithnide"/>
+<l:gentext key="nav-home" text="Baile"/>
+<l:gentext key="nav-next" text="Ar Aghaidh"/>
+<l:gentext key="nav-next-sibling" text="Ar Aghaidh Go Tapa"/>
+<l:gentext key="nav-prev" text="Ar Ais"/>
+<l:gentext key="nav-prev-sibling" text="Ar Ais Go Tapa"/>
+<l:gentext key="nav-up" text="Suas"/>
+<l:gentext key="nav-toc" text="CÃ"/>
+<l:gentext key="Draft" text="Dréacht"/>
+<l:gentext key="above" text="thuas"/>
+<l:gentext key="below" text="thíos"/>
+<l:gentext key="sectioncalled" text="an rannán dar teideal"/>
+<l:gentext key="index symbols" text="Siombailí"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzáéíóú"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÃÉÃÓÚ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Aguisín %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Caibidil %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Cothromóid %n. %t"/>
+<l:template name="example" text="Sampla %n. %t"/>
+<l:template name="figure" text="Léaráid %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Cuid %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Gnás %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Rialacha Táirgthe %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tábla %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Aguisín %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Caibidil %n. %t"/>
+<l:template name="part" text="Cuid %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="F: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" i %o"/>
+<l:template name="olink.page.citation" text=" (leathanach %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(leathanach %p)"/>
+<l:template name="docname" text=" i %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(lch. %p)"/>
+<l:template name="Page" text="Leathanach %p"/>
+<l:template name="bridgehead" text="an rannán dar teideal “%tâ€"/>
+<l:template name="refsection" text="an rannán dar teideal “%tâ€"/>
+<l:template name="refsect1" text="an rannán dar teideal “%tâ€"/>
+<l:template name="refsect2" text="an rannán dar teideal “%tâ€"/>
+<l:template name="refsect3" text="an rannán dar teideal “%tâ€"/>
+<l:template name="sect1" text="an rannán dar teideal “%tâ€"/>
+<l:template name="sect2" text="an rannán dar teideal “%tâ€"/>
+<l:template name="sect3" text="an rannán dar teideal “%tâ€"/>
+<l:template name="sect4" text="an rannán dar teideal “%tâ€"/>
+<l:template name="sect5" text="an rannán dar teideal “%tâ€"/>
+<l:template name="section" text="an rannán dar teideal “%tâ€"/>
+<l:template name="simplesect" text="an rannán dar teideal “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="F: %n"/>
+<l:template name="appendix" text="Aguisín %n"/>
+<l:template name="bridgehead" text="Rannán %n"/>
+<l:template name="chapter" text="Caibidil %n"/>
+<l:template name="equation" text="Cothromóid %n"/>
+<l:template name="example" text="Sampla %n"/>
+<l:template name="figure" text="Léaráid %n"/>
+<l:template name="part" text="Cuid %n"/>
+<l:template name="procedure" text="Gnás %n"/>
+<l:template name="productionset" text="Rialacha Táirgthe %n"/>
+<l:template name="qandadiv" text="C &amp; F %n"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="sect1" text="Rannán %n"/>
+<l:template name="sect2" text="Rannán %n"/>
+<l:template name="sect3" text="Rannán %n"/>
+<l:template name="sect4" text="Rannán %n"/>
+<l:template name="sect5" text="Rannán %n"/>
+<l:template name="section" text="Rannán %n"/>
+<l:template name="table" text="Tábla %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Aguisín %n, %t"/>
+<l:template name="bridgehead" text="Rannán %n, “%tâ€"/>
+<l:template name="chapter" text="Caibidil %n, %t"/>
+<l:template name="equation" text="Cothromóid %n, “%tâ€"/>
+<l:template name="example" text="Sampla %n, “%tâ€"/>
+<l:template name="figure" text="Léaráid %n, “%tâ€"/>
+<l:template name="part" text="Cuid %n, “%tâ€"/>
+<l:template name="procedure" text="Gnás %n, “%tâ€"/>
+<l:template name="productionset" text="Rialacha Táirgthe %n, “%tâ€"/>
+<l:template name="qandadiv" text="C &amp; F %n, “%tâ€"/>
+<l:template name="refsect1" text="an rannán dar teideal “%tâ€"/>
+<l:template name="refsect2" text="an rannán dar teideal “%tâ€"/>
+<l:template name="refsect3" text="an rannán dar teideal “%tâ€"/>
+<l:template name="refsection" text="an rannán dar teideal “%tâ€"/>
+<l:template name="sect1" text="Rannán %n, “%tâ€"/>
+<l:template name="sect2" text="Rannán %n, “%tâ€"/>
+<l:template name="sect3" text="Rannán %n, “%tâ€"/>
+<l:template name="sect4" text="Rannán %n, “%tâ€"/>
+<l:template name="sect5" text="Rannán %n, “%tâ€"/>
+<l:template name="section" text="Rannán %n, “%tâ€"/>
+<l:template name="simplesect" text="an rannán dar teideal “%tâ€"/>
+<l:template name="table" text="Tábla %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" agus "/>
+<l:template name="seplast" text=", agus "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Féach %t."/>
+<l:template name="seealso" text="Féach Freisin %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Sprioclucht: "/>
+<l:template name="MsgLevel" text="Leibhéal: "/>
+<l:template name="MsgOrig" text="Foinse: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Sainmhíniú: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Eanáir"/>
+<l:template name="February" text="Feabhra"/>
+<l:template name="March" text="Márta"/>
+<l:template name="April" text="Aibreán"/>
+<l:template name="May" text="Bealtaine"/>
+<l:template name="June" text="Meitheamh"/>
+<l:template name="July" text="Iúil"/>
+<l:template name="August" text="Lúnasa"/>
+<l:template name="September" text="Meán Fómhair"/>
+<l:template name="October" text="Deireadh Fómhair"/>
+<l:template name="November" text="Samhain"/>
+<l:template name="December" text="Nollaig"/>
+<l:template name="Monday" text="Dé Luain"/>
+<l:template name="Tuesday" text="Dé Máirt"/>
+<l:template name="Wednesday" text="Dé Céadaoin"/>
+<l:template name="Thursday" text="Déardaoin"/>
+<l:template name="Friday" text="Dé hAoine"/>
+<l:template name="Saturday" text="Dé Sathairn"/>
+<l:template name="Sunday" text="Dé Domhnaigh"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ean"/>
+<l:template name="Feb" text="Feabh"/>
+<l:template name="Mar" text="Márta"/>
+<l:template name="Apr" text="Aib"/>
+<l:template name="May" text="Beal"/>
+<l:template name="Jun" text="Meith"/>
+<l:template name="Jul" text="Iúil"/>
+<l:template name="Aug" text="Lún"/>
+<l:template name="Sep" text="MFómh"/>
+<l:template name="Oct" text="DFómh"/>
+<l:template name="Nov" text="Samh"/>
+<l:template name="Dec" text="Noll"/>
+<l:template name="Mon" text="Luan"/>
+<l:template name="Tue" text="Máirt"/>
+<l:template name="Wed" text="Céad"/>
+<l:template name="Thu" text="Déar"/>
+<l:template name="Fri" text="Aoine"/>
+<l:template name="Sat" text="Sath"/>
+<l:template name="Sun" text="Domh"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x083C Gaelic (IRELAND)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Siombailí</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl
new file mode 100644
index 0000000..2417e77
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl
@@ -0,0 +1,839 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: gentext.xsl 8769 2010-07-26 17:38:32Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="object.title.template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="string($chapter.autolabel) != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="appendix" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="string($appendix.autolabel) != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="part" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="string($part.autolabel) != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5|simplesect
+ |bridgehead"
+ mode="object.title.template">
+ <xsl:variable name="is.numbered">
+ <xsl:call-template name="label.this.section"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$is.numbered != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="procedure" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="$formal.procedures != 0 and title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ <xsl:text>.formal</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.subtitle.template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'subtitle'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="is.autonumber">
+ <xsl:value-of select="'0'"/>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5"
+ mode="is.autonumber">
+ <xsl:call-template name="label.this.section"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table|equation" mode="is.autonumber">
+ <xsl:value-of select="'1'"/>
+</xsl:template>
+
+<xsl:template match="appendix" mode="is.autonumber">
+ <xsl:value-of select="$appendix.autolabel"/>
+</xsl:template>
+
+<xsl:template match="chapter" mode="is.autonumber">
+ <xsl:value-of select="$chapter.autolabel"/>
+</xsl:template>
+
+<xsl:template match="part" mode="is.autonumber">
+ <xsl:value-of select="$part.autolabel"/>
+</xsl:template>
+
+<xsl:template match="preface" mode="is.autonumber">
+ <xsl:value-of select="$preface.autolabel"/>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="is.autonumber">
+ <xsl:choose>
+ <xsl:when test="$qanda.defaultlabel = 'number'
+ and not(label)">
+ <xsl:value-of select="'1'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'0'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="is.autonumber">
+ <xsl:value-of select="$qandadiv.autolabel"/>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="is.autonumber">
+ <xsl:value-of select="$section.autolabel"/>
+</xsl:template>
+
+<xsl:template match="procedure" mode="is.autonumber">
+ <xsl:value-of select="$formal.procedures"/>
+</xsl:template>
+
+
+<xsl:template match="*" mode="object.xref.template">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+
+ <!-- Is autonumbering on? -->
+ <xsl:variable name="autonumber">
+ <xsl:apply-templates select="." mode="is.autonumber"/>
+ </xsl:variable>
+
+ <xsl:variable name="number-and-title-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="context">
+ <xsl:choose>
+ <xsl:when test="self::equation and not(title) and not(info/title)">
+ <xsl:value-of select="'xref-number'"/>
+ </xsl:when>
+ <xsl:when test="string($autonumber) != 0
+ and $number-and-title-template != 0
+ and $xref.with.number.and.title != 0">
+ <xsl:value-of select="'xref-number-and-title'"/>
+ </xsl:when>
+ <xsl:when test="string($autonumber) != 0
+ and $number-template != 0">
+ <xsl:value-of select="'xref-number'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'xref'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.title.template"/>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>object.title.markup: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$template"/>
+ </xsl:message>
+-->
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="*" mode="object.title.markup.textonly">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($title)"/>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <!-- Just for consistency in template naming -->
+
+ <xsl:apply-templates select="." mode="titleabbrev.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.subtitle.markup">
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.subtitle.template"/>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.xref.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="template">
+ <xsl:choose>
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')">
+ <xsl:call-template name="make.gentext.template">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'template:')">
+ <xsl:value-of select="substring-after(normalize-space($xrefstyle), 'template:')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.template">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>object.xref.markup: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$purpose"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>: [</xsl:text>
+ <xsl:value-of select="$template"/>
+ <xsl:text>]</xsl:text>
+ </xsl:message>
+-->
+
+ <xsl:if test="$template = '' and $verbose != 0">
+ <xsl:message>
+ <xsl:text>object.xref.markup: empty xref template</xsl:text>
+ <xsl:text> for linkend="</xsl:text>
+ <xsl:value-of select="@id|@xml:id"/>
+ <xsl:text>" and @xrefstyle="</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="listitem" mode="object.xref.markup">
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="parent::orderedlist">
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.xref.template"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$verbose != 0">
+ <xsl:message>
+ <xsl:text>Xref is only supported to listitems in an</xsl:text>
+ <xsl:text> orderedlist: </xsl:text>
+ <xsl:value-of select=".//@id|.//@xml:id"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question" mode="object.xref.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="template">
+ <xsl:choose>
+ <!-- This avoids double Q: Q: in xref when defaultlabel=qanda -->
+ <xsl:when test="$deflabel = 'qanda' and not(label)">%n</xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.template">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="substitute-markup">
+ <xsl:param name="template" select="''"/>
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:param name="title" select="''"/>
+ <xsl:param name="subtitle" select="''"/>
+ <xsl:param name="docname" select="''"/>
+ <xsl:param name="label" select="''"/>
+ <xsl:param name="pagenumber" select="''"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($template, '%')">
+ <xsl:value-of select="substring-before($template, '%')"/>
+ <xsl:variable name="candidate"
+ select="substring(substring-after($template, '%'), 1, 1)"/>
+ <xsl:choose>
+ <xsl:when test="$candidate = 't'">
+ <xsl:apply-templates select="." mode="insert.title.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="title">
+ <xsl:choose>
+ <xsl:when test="$title != ''">
+ <xsl:copy-of select="$title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 's'">
+ <xsl:apply-templates select="." mode="insert.subtitle.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="subtitle">
+ <xsl:choose>
+ <xsl:when test="$subtitle != ''">
+ <xsl:copy-of select="$subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'n'">
+ <xsl:apply-templates select="." mode="insert.label.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="label">
+ <xsl:choose>
+ <xsl:when test="$label != ''">
+ <xsl:copy-of select="$label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'p'">
+ <xsl:apply-templates select="." mode="insert.pagenumber.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="pagenumber">
+ <xsl:choose>
+ <xsl:when test="$pagenumber != ''">
+ <xsl:copy-of select="$pagenumber"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="pagenumber.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'o'">
+ <!-- olink target document title -->
+ <xsl:apply-templates select="." mode="insert.olink.docname.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="docname">
+ <xsl:choose>
+ <xsl:when test="$docname != ''">
+ <xsl:copy-of select="$docname"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="olink.docname.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'd'">
+ <xsl:apply-templates select="." mode="insert.direction.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="direction">
+ <xsl:choose>
+ <xsl:when test="$referrer">
+ <xsl:variable name="referent-is-below">
+ <xsl:for-each select="preceding::xref">
+ <xsl:if test="generate-id(.) = generate-id($referrer)">1</xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$referent-is-below = ''">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'above'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'below'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Attempt to use %d in gentext with no referrer!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = '%' ">
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>%</xsl:text><xsl:value-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- recurse with the rest of the template string -->
+ <xsl:variable name="rest"
+ select="substring($template,
+ string-length(substring-before($template, '%'))+3)"/>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$rest"/>
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="subtitle" select="$subtitle"/>
+ <xsl:with-param name="docname" select="$docname"/>
+ <xsl:with-param name="label" select="$label"/>
+ <xsl:with-param name="pagenumber" select="$pagenumber"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$template"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="make.gentext.template">
+ <xsl:param name="xrefstyle" select="''"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:param name="target.elem" select="local-name(.)"/>
+
+ <!-- parse xrefstyle to get parts -->
+ <xsl:variable name="parts"
+ select="substring-after(normalize-space($xrefstyle), 'select:')"/>
+
+ <xsl:variable name="labeltype">
+ <xsl:choose>
+ <xsl:when test="contains($parts, 'labelnumber')">
+ <xsl:text>labelnumber</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'labelname')">
+ <xsl:text>labelname</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'label')">
+ <xsl:text>label</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="titletype">
+ <xsl:choose>
+ <xsl:when test="contains($parts, 'quotedtitle')">
+ <xsl:text>quotedtitle</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'title')">
+ <xsl:text>title</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="pagetype">
+ <xsl:choose>
+ <xsl:when test="$insert.olink.page.number = 'no' and
+ local-name($referrer) = 'olink'">
+ <!-- suppress page numbers -->
+ </xsl:when>
+ <xsl:when test="$insert.xref.page.number = 'no' and
+ local-name($referrer) != 'olink'">
+ <!-- suppress page numbers -->
+ </xsl:when>
+ <xsl:when test="contains($parts, 'nopage')">
+ <xsl:text>nopage</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'pagenumber')">
+ <xsl:text>pagenumber</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'pageabbrev')">
+ <xsl:text>pageabbrev</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'Page')">
+ <xsl:text>Page</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'page')">
+ <xsl:text>page</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="docnametype">
+ <xsl:choose>
+ <xsl:when test="($olink.doctitle = 0 or
+ $olink.doctitle = 'no') and
+ local-name($referrer) = 'olink'">
+ <!-- suppress docname -->
+ </xsl:when>
+ <xsl:when test="contains($parts, 'nodocname')">
+ <xsl:text>nodocname</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'docnamelong')">
+ <xsl:text>docnamelong</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'docname')">
+ <xsl:text>docname</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$labeltype != ''">
+ <xsl:choose>
+ <xsl:when test="$labeltype = 'labelname'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="local-name($referrer) = 'olink'">
+ <xsl:value-of select="$target.elem"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$labeltype = 'labelnumber'">
+ <xsl:text>%n</xsl:text>
+ </xsl:when>
+ <xsl:when test="$labeltype = 'label'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name">
+ <xsl:choose>
+ <xsl:when test="local-name($referrer) = 'olink'">
+ <xsl:value-of select="$target.elem"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xpath.location"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$titletype != ''">
+ <xsl:value-of select="$xref.label-title.separator"/>
+ </xsl:when>
+ <xsl:when test="$pagetype != '' and $pagetype != 'nopage'">
+ <xsl:value-of select="$xref.label-page.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="$titletype != ''">
+ <xsl:choose>
+ <xsl:when test="$titletype = 'title'">
+ <xsl:text>%t</xsl:text>
+ </xsl:when>
+ <xsl:when test="$titletype = 'quotedtitle'">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat" select="'startquote'"/>
+ </xsl:call-template>
+ <xsl:text>%t</xsl:text>
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat" select="'endquote'"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$pagetype != '' and $pagetype != 'nopage'">
+ <xsl:value-of select="$xref.title-page.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- special case: use regular xref template if just turning off page -->
+ <xsl:if test="($pagetype = 'nopage' or $docnametype = 'nodocname')
+ and local-name($referrer) != 'olink'
+ and $labeltype = ''
+ and $titletype = ''">
+ <xsl:apply-templates select="." mode="object.xref.template">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:if test="$pagetype != ''">
+ <xsl:choose>
+ <xsl:when test="$pagetype = 'page'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'page'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pagetype = 'Page'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'Page'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pagetype = 'pageabbrev'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'pageabbrev'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pagetype = 'pagenumber'">
+ <xsl:text>%p</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:if>
+
+ <!-- Add reference to other document title -->
+ <xsl:if test="$docnametype != '' and local-name($referrer) = 'olink'">
+ <!-- Any separator should be in the gentext template -->
+ <xsl:choose>
+ <xsl:when test="$docnametype = 'docnamelong'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'docnamelong'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$docnametype = 'docname'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'docname'"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:if>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml
new file mode 100644
index 0000000..7346088
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="gl" english-language-name="Galician">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/gl.xml -->
+<!-- * -->
+<!-- * E-mail the edited gl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumo"/>
+<l:gentext key="abstract" text="Resumo"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="R:"/>
+<l:gentext key="Appendix" text="Apêndice"/>
+<l:gentext key="appendix" text="Apêndice"/>
+<l:gentext key="Article" text="Artigo"/>
+<l:gentext key="article" text="Artigo"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografía"/>
+<l:gentext key="bibliography" text="Bibliografía"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="Libro"/>
+<l:gentext key="CAUTION" text="CUIDADO"/>
+<l:gentext key="Caution" text="Cuidado"/>
+<l:gentext key="caution" text="Cuidado"/>
+<l:gentext key="Chapter" text="Capítulo"/>
+<l:gentext key="chapter" text="capítulo"/>
+<l:gentext key="Colophon" text="Colofón"/>
+<l:gentext key="colophon" text="Colofón"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedicatoria"/>
+<l:gentext key="dedication" text="Dedicatoria"/>
+<l:gentext key="Edition" text="Edición"/>
+<l:gentext key="edition" text="Edición"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ecuación"/>
+<l:gentext key="equation" text="Ecuación"/>
+<l:gentext key="Example" text="Exemplo"/>
+<l:gentext key="example" text="Exemplo"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="Figura"/>
+<l:gentext key="Glossary" text="Glosario"/>
+<l:gentext key="glossary" text="Glosario"/>
+<l:gentext key="GlossSee" text="Consulte"/>
+<l:gentext key="glosssee" text="Consulte"/>
+<l:gentext key="GlossSeeAlso" text="Vexa Tamén"/>
+<l:gentext key="glossseealso" text="Vexa Tamén"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="Importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Ãndice"/>
+<l:gentext key="index" text="Ãndice"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Aviso Legal"/>
+<l:gentext key="legalnotice" text="Aviso Legal"/>
+<l:gentext key="MsgAud" text="Audiencia"/>
+<l:gentext key="msgaud" text="Audiencia"/>
+<l:gentext key="MsgLevel" text="Nível"/>
+<l:gentext key="msglevel" text="Nível"/>
+<l:gentext key="MsgOrig" text="Orixen"/>
+<l:gentext key="msgorig" text="Orixen"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="Nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="Parte"/>
+<l:gentext key="Preface" text="Prefacio"/>
+<l:gentext key="preface" text="Prefacio"/>
+<l:gentext key="Procedure" text="Procedimento"/>
+<l:gentext key="procedure" text="Procedimento"/>
+<l:gentext key="ProductionSet" text="Produción"/>
+<l:gentext key="PubDate" text="Data de Publicación"/>
+<l:gentext key="pubdate" text="Data de Publicación"/>
+<l:gentext key="Published" text="Publicado"/>
+<l:gentext key="published" text="Publicado"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="P &amp; R"/>
+<l:gentext key="qandadiv" text="P &amp; R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="P:"/>
+<l:gentext key="RefEntry" text="Entrada de Referencia"/>
+<l:gentext key="refentry" text="Entrada de Referencia"/>
+<l:gentext key="Reference" text="Referencia"/>
+<l:gentext key="reference" text="Referencia"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="Nome"/>
+<l:gentext key="RefSection" text="Sección"/>
+<l:gentext key="refsection" text="sección"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+<l:gentext key="refsynopsisdiv" text="Sinopse"/>
+<l:gentext key="RevHistory" text="Historial de Revisións"/>
+<l:gentext key="revhistory" text="Historial de Revisións"/>
+<l:gentext key="revision" text="Revisión"/>
+<l:gentext key="Revision" text="Revisión"/>
+<l:gentext key="sect1" text="Sección"/>
+<l:gentext key="sect2" text="Sección"/>
+<l:gentext key="sect3" text="Sección"/>
+<l:gentext key="sect4" text="Sección"/>
+<l:gentext key="sect5" text="Sección"/>
+<l:gentext key="section" text="sección"/>
+<l:gentext key="Section" text="Sección"/>
+<l:gentext key="see" text="vexa"/>
+<l:gentext key="See" text="Vexa"/>
+<l:gentext key="seealso" text="Consulte Tamén"/>
+<l:gentext key="Seealso" text="Consulte tamén"/>
+<l:gentext key="SeeAlso" text="Consulte Tamén"/>
+<l:gentext key="set" text="Conxunto"/>
+<l:gentext key="Set" text="Conxunto"/>
+<l:gentext key="setindex" text="Ãndice de Conxuntos"/>
+<l:gentext key="SetIndex" text="Ãndice de Conxuntos"/>
+<l:gentext key="Sidebar" text="Barra Lateral"/>
+<l:gentext key="sidebar" text="barra lateral"/>
+<l:gentext key="step" text="paso"/>
+<l:gentext key="Step" text="Paso"/>
+<l:gentext key="table" text="Táboa"/>
+<l:gentext key="Table" text="Táboa"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Axuda"/>
+<l:gentext key="TIP" text="AXUDA"/>
+<l:gentext key="Tip" text="Axuda"/>
+<l:gentext key="Warning" text="Atención"/>
+<l:gentext key="warning" text="Atención"/>
+<l:gentext key="WARNING" text="ATENCIÓn"/>
+<l:gentext key="and" text="e"/>
+<l:gentext key="by" text="por"/>
+<l:gentext key="Edited" text="Editado"/>
+<l:gentext key="edited" text="Editado"/>
+<l:gentext key="Editedby" text="Editado por"/>
+<l:gentext key="editedby" text="Editado por"/>
+<l:gentext key="in" text="en"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notas"/>
+<l:gentext key="Notes" text="Notas"/>
+<l:gentext key="Pgs" text="Páxinas"/>
+<l:gentext key="pgs" text="Páxinas"/>
+<l:gentext key="Revisedby" text="Revisado por: "/>
+<l:gentext key="revisedby" text="Revisado por: "/>
+<l:gentext key="TableNotes" text="Notas"/>
+<l:gentext key="tablenotes" text="Notas"/>
+<l:gentext key="TableofContents" text="Ãndice"/>
+<l:gentext key="tableofcontents" text="Ãndice"/>
+<l:gentext key="unexpectedelementname" text="Nome de ítem inesperado"/>
+<l:gentext key="unsupported" text="non soportado"/>
+<l:gentext key="xrefto" text="referencia para"/>
+<l:gentext key="Authors" text="Autores"/>
+<l:gentext key="copyeditor" text="Editor de Cópia"/>
+<l:gentext key="graphicdesigner" text="Deseñador Gráfico"/>
+<l:gentext key="productioneditor" text="Editor de Produción"/>
+<l:gentext key="technicaleditor" text="Editor Técnico"/>
+<l:gentext key="translator" text="Trandutor"/>
+<l:gentext key="listofequations" text="Lista de Ecuacións"/>
+<l:gentext key="ListofEquations" text="Lista de Ecuacións"/>
+<l:gentext key="ListofExamples" text="Lista de Exemplos"/>
+<l:gentext key="listofexamples" text="Lista de Exemplos"/>
+<l:gentext key="ListofFigures" text="Lista de Figuras"/>
+<l:gentext key="listoffigures" text="Lista de Figuras"/>
+<l:gentext key="ListofProcedures" text="Lista de Procedimentos"/>
+<l:gentext key="listofprocedures" text="Lista de Procedimentos"/>
+<l:gentext key="listoftables" text="Lista de Táboas"/>
+<l:gentext key="ListofTables" text="Lista de Táboas"/>
+<l:gentext key="ListofUnknown" text="Lista de Descoñecido"/>
+<l:gentext key="listofunknown" text="Lista de Descoñecido"/>
+<l:gentext key="nav-home" text="Inicio"/>
+<l:gentext key="nav-next" text="Próximo"/>
+<l:gentext key="nav-next-sibling" text="Próxima Parte"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Parte Anterior"/>
+<l:gentext key="nav-up" text="Subir"/>
+<l:gentext key="nav-toc" text="Ãndice"/>
+<l:gentext key="Draft" text="Borrador"/>
+<l:gentext key="above" text="acima"/>
+<l:gentext key="below" text="abaixo"/>
+<l:gentext key="sectioncalled" text="a sección chamada"/>
+<l:gentext key="index symbols" text="Símbolos"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzáéíóúñ"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÃÉÃÓÚÑ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="« "/>
+<l:dingbat key="endquote" text=" »"/>
+<l:dingbat key="nestedstartquote" text="« "/>
+<l:dingbat key="nestedendquote" text=" »"/>
+<l:dingbat key="singlestartquote" text="‹"/>
+<l:dingbat key="singleendquote" text="›"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ecuación %n. %t"/>
+<l:template name="example" text="Exemplo %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimento %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produción %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pergunta %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="TáboaTáboa %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="« %t »"/>
+<l:template name="refsection" text="« %t »"/>
+<l:template name="refsect1" text="« %t »"/>
+<l:template name="refsect2" text="« %t »"/>
+<l:template name="refsect3" text="« %t »"/>
+<l:template name="sect1" text="« %t »"/>
+<l:template name="sect2" text="« %t »"/>
+<l:template name="sect3" text="« %t »"/>
+<l:template name="sect4" text="« %t »"/>
+<l:template name="sect5" text="« %t »"/>
+<l:template name="section" text="« %t »"/>
+<l:template name="simplesect" text="« %t »"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apêndice %n"/>
+<l:template name="bridgehead" text="Sección %n"/>
+<l:template name="chapter" text="Capítulo %n"/>
+<l:template name="equation" text="Ecuación %n"/>
+<l:template name="example" text="Exemplo %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimento %n"/>
+<l:template name="productionset" text="Produción %n"/>
+<l:template name="qandadiv" text="P &amp; R %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Sección %n"/>
+<l:template name="sect2" text="Sección %n"/>
+<l:template name="sect3" text="Sección %n"/>
+<l:template name="sect4" text="Sección %n"/>
+<l:template name="sect5" text="Sección %n"/>
+<l:template name="section" text="Sección %n"/>
+<l:template name="table" text="Táboa %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apêndice %n, %t"/>
+<l:template name="bridgehead" text="Sección %n, « %t »"/>
+<l:template name="chapter" text="Capítulo %n, %t"/>
+<l:template name="equation" text="Ecuación %n, « %t »"/>
+<l:template name="example" text="Exemplo %n, « %t »"/>
+<l:template name="figure" text="Figura %n, « %t »"/>
+<l:template name="part" text="Parte %n, « %t »"/>
+<l:template name="procedure" text="Procedimento %n, « %t »"/>
+<l:template name="productionset" text="Produción %n, « %t »"/>
+<l:template name="qandadiv" text="P &amp; R %n, « %t »"/>
+<l:template name="refsect1" text="a sección chamada « %t »"/>
+<l:template name="refsect2" text="a sección chamada « %t »"/>
+<l:template name="refsect3" text="a sección chamada « %t »"/>
+<l:template name="refsection" text="a sección chamada « %t »"/>
+<l:template name="sect1" text="Sección %n, « %t »"/>
+<l:template name="sect2" text="Sección %n, « %t »"/>
+<l:template name="sect3" text="Sección %n, « %t »"/>
+<l:template name="sect4" text="Sección %n, « %t »"/>
+<l:template name="sect5" text="Sección %n, « %t »"/>
+<l:template name="section" text="Sección %n, « %t »"/>
+<l:template name="simplesect" text="a sección chamada « %t »"/>
+<l:template name="table" text="Táboa %n, « %t »"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" e "/>
+<l:template name="seplast" text=", e "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Consulte %t."/>
+<l:template name="seealso" text="Vexa Tamén %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiencia: "/>
+<l:template name="MsgLevel" text="Nível: "/>
+<l:template name="MsgOrig" text="Orixen: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definición: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Xaneiro"/>
+<l:template name="February" text="Febreiro"/>
+<l:template name="March" text="Marzo"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Maio"/>
+<l:template name="June" text="Xuño"/>
+<l:template name="July" text="Xullo"/>
+<l:template name="August" text="Agosto"/>
+<l:template name="September" text="Setembro"/>
+<l:template name="October" text="Outubro"/>
+<l:template name="November" text="Novembro"/>
+<l:template name="December" text="Decembro"/>
+<l:template name="Monday" text="Luns"/>
+<l:template name="Tuesday" text="Martes"/>
+<l:template name="Wednesday" text="Mércores"/>
+<l:template name="Thursday" text="Xoves"/>
+<l:template name="Friday" text="Venres"/>
+<l:template name="Saturday" text="Sábado"/>
+<l:template name="Sunday" text="Domingo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Xan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Abr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Xuñ"/>
+<l:template name="Jul" text="Xul"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Set"/>
+<l:template name="Oct" text="Out"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Lun"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Mer"/>
+<l:template name="Thu" text="Xov"/>
+<l:template name="Fri" text="Ven"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0456 Galician"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml
new file mode 100644
index 0000000..ae7ae2e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="gu" english-language-name="Gujarati">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/gu.xml -->
+<!-- * -->
+<!-- * E-mail the edited gu.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="સાર"/>
+<l:gentext key="abstract" text="સાર"/>
+<l:gentext key="Acknowledgements" text="પà«àª°àª¤à«àª¯à«àª¤à«àª¤àª°"/>
+<l:gentext key="acknowledgements" text="પà«àª°àª¤à«àª¯à«àª¤à«àª¤àª°"/>
+<l:gentext key="Answer" text="જ:"/>
+<l:gentext key="answer" text="જ:"/>
+<l:gentext key="Appendix" text="પરિશિષà«àªŸ"/>
+<l:gentext key="appendix" text="પરિશિષà«àªŸ"/>
+<l:gentext key="Article" text="લેખ"/>
+<l:gentext key="article" text="લેખ"/>
+<l:gentext key="Author" text="લેખક"/>
+<l:gentext key="Bibliography" text="સંદરà«àª­àª—à«àª°àª‚થ"/>
+<l:gentext key="bibliography" text="સંદરà«àª­àª—à«àª°àª‚થ"/>
+<l:gentext key="Book" text="પà«àª¸à«àª¤àª•"/>
+<l:gentext key="book" text="પà«àª¸à«àª¤àª•"/>
+<l:gentext key="CAUTION" text="સાવધાન"/>
+<l:gentext key="Caution" text="સાવધાન"/>
+<l:gentext key="caution" text="સાવધાન"/>
+<l:gentext key="Chapter" text="પà«àª°àª•àª°àª£"/>
+<l:gentext key="chapter" text="પà«àª°àª•àª°àª£"/>
+<l:gentext key="Colophon" text="ગà«àª°àª‚થપરિચય"/>
+<l:gentext key="colophon" text="ગà«àª°àª‚થપરિચય"/>
+<l:gentext key="Copyright" text="કૉપિરાઇટ"/>
+<l:gentext key="copyright" text="કૉપિરાઇટ"/>
+<l:gentext key="Dedication" text="સમરà«àªªàª£"/>
+<l:gentext key="dedication" text="સમરà«àªªàª£"/>
+<l:gentext key="Edition" text="પà«àª°àª•àª¾àª¶àª¨"/>
+<l:gentext key="edition" text="પà«àª°àª•àª¾àª¶àª¨"/>
+<l:gentext key="Editor" text="સંપાદક"/>
+<l:gentext key="Equation" text="સમીકરણ"/>
+<l:gentext key="equation" text="સમીકરણ"/>
+<l:gentext key="Example" text="ઉદાહરણ"/>
+<l:gentext key="example" text="ઉદાહરણ"/>
+<l:gentext key="Figure" text="આકૃતિ"/>
+<l:gentext key="figure" text="આકૃતિ"/>
+<l:gentext key="Glossary" text="શબà«àª¦àª¾àªµàª²à«€"/>
+<l:gentext key="glossary" text="શબà«àª¦àª¾àªµàª²à«€"/>
+<l:gentext key="GlossSee" text="જà«àª“"/>
+<l:gentext key="glosssee" text="જà«àª“"/>
+<l:gentext key="GlossSeeAlso" text="આપણજà«àª“"/>
+<l:gentext key="glossseealso" text="આપણજà«àª“"/>
+<l:gentext key="IMPORTANT" text="મહતà«àªµàª¨à«àª‚"/>
+<l:gentext key="important" text="મહતà«àªµàª¨à«àª‚"/>
+<l:gentext key="Important" text="મહતà«àªµàª¨à«àª‚"/>
+<l:gentext key="Index" text="અનà«àª•à«àª°àª®àª£àª¿àª•àª¾"/>
+<l:gentext key="index" text="અનà«àª•à«àª°àª®àª£àª¿àª•àª¾"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="માનà«àª¯àª¸à«‚ચન"/>
+<l:gentext key="legalnotice" text="માનà«àª¯àª¸à«‚ચન"/>
+<l:gentext key="MsgAud" text="શà«àª°à«‹àª¤àª¾"/>
+<l:gentext key="msgaud" text="શà«àª°à«‹àª¤àª¾"/>
+<l:gentext key="MsgLevel" text="સà«àª¤àª°"/>
+<l:gentext key="msglevel" text="સà«àª¤àª°"/>
+<l:gentext key="MsgOrig" text="મૂળ"/>
+<l:gentext key="msgorig" text="મૂળ"/>
+<l:gentext key="NOTE" text="નોંધ"/>
+<l:gentext key="Note" text="નોંધ"/>
+<l:gentext key="note" text="નોંધ"/>
+<l:gentext key="Part" text="ભાગ"/>
+<l:gentext key="part" text="ભાગ"/>
+<l:gentext key="Preface" text="પà«àª°àª¸à«àª¤àª¾àªµàª¨àª¾"/>
+<l:gentext key="preface" text="પà«àª°àª¸à«àª¤àª¾àªµàª¨àª¾"/>
+<l:gentext key="Procedure" text="પà«àª°àª•à«àª°àª¿àª¯àª¾"/>
+<l:gentext key="procedure" text="પà«àª°àª•à«àª°àª¿àª¯àª¾"/>
+<l:gentext key="ProductionSet" text="ઉતà«àªªàª¾àª¦àª¨"/>
+<l:gentext key="PubDate" text="પà«àª°àª•àª¾àª¶àª¨ તારીખ"/>
+<l:gentext key="pubdate" text="પà«àª°àª•àª¾àª¶àª¨ તારીખ"/>
+<l:gentext key="Published" text="પà«àª°àª•àª¾àª¶àª¿àª¤"/>
+<l:gentext key="published" text="પà«àª°àª•àª¾àª¶àª¿àª¤"/>
+<l:gentext key="Publisher" text="પà«àª°àª•àª¾àª¶àª•"/>
+<l:gentext key="Qandadiv" text="પà«àª°. અને જ."/>
+<l:gentext key="qandadiv" text="પà«àª°. અને જ."/>
+<l:gentext key="QandASet" text="વારંવાર પૂછવામાં આવતા પà«àª°àª¶à«àª°à«àª¨à«‹"/>
+<l:gentext key="Question" text="જ:"/>
+<l:gentext key="question" text="જ:"/>
+<l:gentext key="RefEntry" text="પાનà«àª‚"/>
+<l:gentext key="refentry" text="પાનà«àª‚"/>
+<l:gentext key="Reference" text="સંદરà«àª­"/>
+<l:gentext key="reference" text="સંદરà«àª­"/>
+<l:gentext key="References" text="સંદરà«àª­à«‹"/>
+<l:gentext key="RefName" text="નામ"/>
+<l:gentext key="refname" text="નામ"/>
+<l:gentext key="RefSection" text="વિભાગ"/>
+<l:gentext key="refsection" text="વિભાગ"/>
+<l:gentext key="RefSynopsisDiv" text="સારાંશ"/>
+<l:gentext key="refsynopsisdiv" text="સારાંશ"/>
+<l:gentext key="RevHistory" text="પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨àªˆàª¤àª¿àª¹àª¾àª¸"/>
+<l:gentext key="revhistory" text="પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨àªˆàª¤àª¿àª¹àª¾àª¸"/>
+<l:gentext key="revision" text="પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨"/>
+<l:gentext key="Revision" text="પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨"/>
+<l:gentext key="sect1" text="વિભાગ"/>
+<l:gentext key="sect2" text="વિભાગ"/>
+<l:gentext key="sect3" text="વિભાગ"/>
+<l:gentext key="sect4" text="વિભાગ"/>
+<l:gentext key="sect5" text="વિભાગ"/>
+<l:gentext key="section" text="વિભાગ"/>
+<l:gentext key="Section" text="વિભાગ"/>
+<l:gentext key="see" text="જà«àª“"/>
+<l:gentext key="See" text="જà«àª“"/>
+<l:gentext key="seealso" text="આપણજà«àª“"/>
+<l:gentext key="Seealso" text="આપણજà«àª“"/>
+<l:gentext key="SeeAlso" text="આપણજà«àª“"/>
+<l:gentext key="set" text="સà«àª¯à«‹àªœàª¿àª¤àª•àª°à«‹"/>
+<l:gentext key="Set" text="સà«àª¯à«‹àªœàª¿àª¤àª•àª°à«‹"/>
+<l:gentext key="setindex" text="અનà«àª•à«àª°àª®àª£àª¿àª•àª¾àª¸à«àª¯à«‹àªœàª¿àª¤àª•àª°à«‹"/>
+<l:gentext key="SetIndex" text="અનà«àª•à«àª°àª®àª£àª¿àª•àª¾àª¸à«àª¯à«‹àªœàª¿àª¤àª•àª°à«‹"/>
+<l:gentext key="Sidebar" text="બાજà«àªªàªŸà«àªŸà«€"/>
+<l:gentext key="sidebar" text="બાજà«àªªàªŸà«àªŸà«€"/>
+<l:gentext key="step" text="પગલà«àª‚"/>
+<l:gentext key="Step" text="પગલà«àª‚"/>
+<l:gentext key="table" text="કોષà«àªŸàª•"/>
+<l:gentext key="Table" text="કોષà«àªŸàª•"/>
+<l:gentext key="task" text="કારà«àª¯"/>
+<l:gentext key="Task" text="કારà«àª¯"/>
+<l:gentext key="tip" text="મદદ"/>
+<l:gentext key="TIP" text="મદદ"/>
+<l:gentext key="Tip" text="મદદ"/>
+<l:gentext key="Warning" text="ચેતવણી"/>
+<l:gentext key="warning" text="ચેતવણી"/>
+<l:gentext key="WARNING" text="ચેતવણી"/>
+<l:gentext key="and" text="અને"/>
+<l:gentext key="by" text="દà«àª¦àª¾àª°àª¾"/>
+<l:gentext key="Edited" text="ફેરફારથયેલછે"/>
+<l:gentext key="edited" text="ફેરફારથયેલછે"/>
+<l:gentext key="Editedby" text="દà«àªµàª¾àª°àª¾àª«à«‡àª°àª«àª¾àª°àª¥àª¯à«‡àª²àª›à«‡"/>
+<l:gentext key="editedby" text="દà«àªµàª¾àª°àª¾àª«à«‡àª°àª«àª¾àª°àª¥àª¯à«‡àª²àª›à«‡"/>
+<l:gentext key="in" text="અંદર"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="નોંધો"/>
+<l:gentext key="Notes" text="નોંધો"/>
+<l:gentext key="Pgs" text="પાનાંઓ."/>
+<l:gentext key="pgs" text="પાનાંઓ."/>
+<l:gentext key="Revisedby" text="દà«àªµàª¾àª°àª¾àªªà«àª¨àª°àª¾àªµàª°à«àª¤àª¨àª¥àª¯à«‡àª²: "/>
+<l:gentext key="revisedby" text="દà«àªµàª¾àª°àª¾àªªà«àª¨àª°àª¾àªµàª°à«àª¤àª¨àª¥àª¯à«‡àª²: "/>
+<l:gentext key="TableNotes" text="નોંધો"/>
+<l:gentext key="tablenotes" text="નોંધો"/>
+<l:gentext key="TableofContents" text="વિષયસà«àªšà«€àª•à«‹àª·à«àªŸàª•"/>
+<l:gentext key="tableofcontents" text="વિષયસà«àªšà«€àª•à«‹àª·à«àªŸàª•"/>
+<l:gentext key="unexpectedelementname" text="અનિચà«àª›àª¨àª¿àª¯àª¸àª­à«àª¯àª¨àª¾àª®"/>
+<l:gentext key="unsupported" text="બિનઆધારભૂત"/>
+<l:gentext key="xrefto" text=""/>
+<l:gentext key="Authors" text="લેખકો"/>
+<l:gentext key="copyeditor" text="કૉપી સંપાદન"/>
+<l:gentext key="graphicdesigner" text="ગà«àª°àª¾àª«àª¿àª• રચિયતા"/>
+<l:gentext key="productioneditor" text="ઉતà«àªªàª¾àª¦àª¨ સંપાદક"/>
+<l:gentext key="technicaleditor" text="તકનીકી સંપાદક"/>
+<l:gentext key="translator" text="અનà«àªµàª¾àª¦àª•"/>
+<l:gentext key="listofequations" text="સમીકરણોનીયાદી"/>
+<l:gentext key="ListofEquations" text="સમીકરણોનીયાદી"/>
+<l:gentext key="ListofExamples" text="ઉદાહરણોનીયાદી"/>
+<l:gentext key="listofexamples" text="ઉદાહરણોનીયાદી"/>
+<l:gentext key="ListofFigures" text="આકૃતિઓનીયાદી"/>
+<l:gentext key="listoffigures" text="આકૃતિઓનીયાદી"/>
+<l:gentext key="ListofProcedures" text="પà«àª°àª•à«àª°àª¿àª¯àª¾àª“નીયાદી"/>
+<l:gentext key="listofprocedures" text="પà«àª°àª•à«àª°àª¿àª¯àª¾àª“નીયાદી"/>
+<l:gentext key="listoftables" text="કોષà«àªŸàª•à«‹àª¨à«€àª¯àª¾àª¦à«€"/>
+<l:gentext key="ListofTables" text="કોષà«àªŸàª•à«‹àª¨à«€àª¯àª¾àª¦à«€"/>
+<l:gentext key="ListofUnknown" text="અજાણોનીયાદી"/>
+<l:gentext key="listofunknown" text="અજાણોનીયાદી"/>
+<l:gentext key="nav-home" text="ઘર"/>
+<l:gentext key="nav-next" text="આગળવધો"/>
+<l:gentext key="nav-next-sibling" text="àªàª¡àªªà«€àª†àª—ળધપાવો"/>
+<l:gentext key="nav-prev" text="પહેલાનà«àª‚"/>
+<l:gentext key="nav-prev-sibling" text="àªàª¡àªªà«€àªªàª¾àª›àª³àª§àªªàª¾àªµà«‹"/>
+<l:gentext key="nav-up" text="ઉપર"/>
+<l:gentext key="nav-toc" text="વિષયસà«àªšà«€àª•à«‹àª·à«àªŸàª•"/>
+<l:gentext key="Draft" text="ડà«àª°àª¾àª«à«àªŸ"/>
+<l:gentext key="above" text="ઉપર"/>
+<l:gentext key="below" text="નીચે"/>
+<l:gentext key="sectioncalled" text="બોલાવાયેલવિભાગ"/>
+<l:gentext key="index symbols" text="સંકેતો"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="કખગઘચછજàªàªŸàª àª¡àª¢àª¨àª£àª¯àª°àª²àªµàª¸àª¶àª·àª¹"/>
+<l:gentext key="uppercase.alpha" text="કખગઘચછજàªàªŸàª àª¡àª¢àª¨àª£àª¯àª°àª²àªµàª¸àª¶àª·àª¹"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="પરિશિષà«àªŸÂ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="પà«àª°àª•àª°àª£Â %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="સમીકરણ %n. %t"/>
+<l:template name="example" text="ઉદાહરણ %n. %t"/>
+<l:template name="figure" text="આકૃતિ %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ભાગ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="પà«àª°àª•à«àª°àª¿àª¯àª¾Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ઉતà«àªªàª¾àª¦àª¨Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="કોષà«àªŸàª•Â %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="પરિશિષà«àªŸÂ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="પà«àª°àª•àª°àª£Â %n. %t"/>
+<l:template name="part" text="ભાગ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="જ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="જ: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="જ: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="refsection" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="refsect1" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="refsect2" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="refsect3" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="sect1" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="sect2" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="sect3" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="sect4" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="sect5" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="section" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="simplesect" text="બોલાવાયેલવિભાગ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="જ: %n"/>
+<l:template name="appendix" text="પરિશિષà«àªŸÂ %n"/>
+<l:template name="bridgehead" text="વિભાગ %n"/>
+<l:template name="chapter" text="પà«àª°àª•àª°àª£Â %n"/>
+<l:template name="equation" text="સમીકરણ %n"/>
+<l:template name="example" text="ઉદાહરણ %n"/>
+<l:template name="figure" text="આકૃતિ %n"/>
+<l:template name="part" text="ભાગ %n"/>
+<l:template name="procedure" text="પà«àª°àª•à«àª°àª¿àª¯àª¾Â %n"/>
+<l:template name="productionset" text="ઉતà«àªªàª¾àª¦àª¨Â %n"/>
+<l:template name="qandadiv" text="પà«àª°. અને જ. %n"/>
+<l:template name="qandaentry" text="જ: %n"/>
+<l:template name="question" text="જ: %n"/>
+<l:template name="sect1" text="વિભાગ %n"/>
+<l:template name="sect2" text="વિભાગ %n"/>
+<l:template name="sect3" text="વિભાગ %n"/>
+<l:template name="sect4" text="વિભાગ %n"/>
+<l:template name="sect5" text="વિભાગ %n"/>
+<l:template name="section" text="વિભાગ %n"/>
+<l:template name="table" text="કોષà«àªŸàª•Â %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="પરિશિષà«àªŸÂ %n, %t"/>
+<l:template name="bridgehead" text="વિભાગ %n, “%tâ€"/>
+<l:template name="chapter" text="પà«àª°àª•àª°àª£Â %n, %t"/>
+<l:template name="equation" text="સમીકરણ %n, “%tâ€"/>
+<l:template name="example" text="ઉદાહરણ %n, “%tâ€"/>
+<l:template name="figure" text="આકૃતિ %n, “%tâ€"/>
+<l:template name="part" text="ભાગ %n, “%tâ€"/>
+<l:template name="procedure" text="પà«àª°àª•à«àª°àª¿àª¯àª¾Â %n, “%tâ€"/>
+<l:template name="productionset" text="ઉતà«àªªàª¾àª¦àª¨Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="પà«àª°. અને જ. %n, “%tâ€"/>
+<l:template name="refsect1" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="refsect2" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="refsect3" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="refsection" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="sect1" text="વિભાગ %n, “%tâ€"/>
+<l:template name="sect2" text="વિભાગ %n, “%tâ€"/>
+<l:template name="sect3" text="વિભાગ %n, “%tâ€"/>
+<l:template name="sect4" text="વિભાગ %n, “%tâ€"/>
+<l:template name="sect5" text="વિભાગ %n, “%tâ€"/>
+<l:template name="section" text="વિભાગ %n, “%tâ€"/>
+<l:template name="simplesect" text="બોલાવાયેલવિભાગ “%tâ€"/>
+<l:template name="table" text="કોષà«àªŸàª•Â %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" અને "/>
+<l:template name="seplast" text=", અને "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="જà«àª“ %t."/>
+<l:template name="seealso" text="આપણજà«àª“ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="શà«àª°à«‹àª¤àª¾: "/>
+<l:template name="MsgLevel" text="સà«àª¤àª°: "/>
+<l:template name="MsgOrig" text="મૂળ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[વà«àª¯àª¾àª–à«àª¯àª¾: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="જાનà«àª¯à«àª†àª°à«€"/>
+<l:template name="February" text="ફેબà«àª°à«àª†àª°à«€"/>
+<l:template name="March" text="મારà«àªš"/>
+<l:template name="April" text="àªàªªà«àª°àª¿àª²"/>
+<l:template name="May" text="મે"/>
+<l:template name="June" text="જૂન"/>
+<l:template name="July" text="જà«àª²àª¾àª‡"/>
+<l:template name="August" text="ઑગસà«àªŸ"/>
+<l:template name="September" text="સપà«àªŸà«‡àª®à«àª¬àª°"/>
+<l:template name="October" text="ઑકà«àªŸà«‹àª¬àª°"/>
+<l:template name="November" text="નવેમà«àª¬àª°"/>
+<l:template name="December" text="ડિસેમà«àª¬àª°"/>
+<l:template name="Monday" text="સોમવાર"/>
+<l:template name="Tuesday" text="મંગળવાર"/>
+<l:template name="Wednesday" text="બà«àª§àªµàª¾àª°"/>
+<l:template name="Thursday" text="ગà«àª°à«àªµàª¾àª°"/>
+<l:template name="Friday" text="શà«àª•à«àª°àªµàª¾àª°"/>
+<l:template name="Saturday" text="શનિવાર"/>
+<l:template name="Sunday" text="રવિવાર"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="જાન"/>
+<l:template name="Feb" text="ફેબ"/>
+<l:template name="Mar" text="મારà«àªš"/>
+<l:template name="Apr" text="àªàªªà«àª°"/>
+<l:template name="May" text="મે"/>
+<l:template name="Jun" text="જૂન"/>
+<l:template name="Jul" text="જà«àª²àª¾"/>
+<l:template name="Aug" text="ઑગ"/>
+<l:template name="Sep" text="સપà«àªŸà«‡"/>
+<l:template name="Oct" text="ઑકà«àªŸà«‹"/>
+<l:template name="Nov" text="નવે"/>
+<l:template name="Dec" text="ડિસ"/>
+<l:template name="Mon" text="સોમ"/>
+<l:template name="Tue" text="મંગળ"/>
+<l:template name="Wed" text="બà«àª§"/>
+<l:template name="Thu" text="ગà«àª°à«"/>
+<l:template name="Fri" text="શà«àª•à«àª°"/>
+<l:template name="Sat" text="શનિ"/>
+<l:template name="Sun" text="રવિ"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0447 Gujarati"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">સંકેતો</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml
new file mode 100644
index 0000000..d084df4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="he" english-language-name="Hebrew">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/he.xml -->
+<!-- * -->
+<!-- * E-mail the edited he.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="סיכו×"/>
+<l:gentext key="abstract" text="סיכו×"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="ת:"/>
+<l:gentext key="answer" text="ת:"/>
+<l:gentext key="Appendix" text="נספח"/>
+<l:gentext key="appendix" text="נספח"/>
+<l:gentext key="Article" text="מ×מר"/>
+<l:gentext key="article" text="מ×מר"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="ביבליוגרפיה"/>
+<l:gentext key="bibliography" text="ביבליוגרפיה"/>
+<l:gentext key="Book" text="ספר"/>
+<l:gentext key="book" text="ספר"/>
+<l:gentext key="CAUTION" text="×זהרה"/>
+<l:gentext key="Caution" text="×זהרה"/>
+<l:gentext key="caution" text="×זהרה"/>
+<l:gentext key="Chapter" text="פרק"/>
+<l:gentext key="chapter" text="פרק"/>
+<l:gentext key="Colophon" text="קולופון"/>
+<l:gentext key="colophon" text="קולופון"/>
+<l:gentext key="Copyright" text="זכויות יוצרי×"/>
+<l:gentext key="copyright" text="זכויות יוצרי×"/>
+<l:gentext key="Dedication" text="הקדשה"/>
+<l:gentext key="dedication" text="הקדשה"/>
+<l:gentext key="Edition" text="מהדורה"/>
+<l:gentext key="edition" text="מהדורה"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="משוו××”"/>
+<l:gentext key="equation" text="משוו××”"/>
+<l:gentext key="Example" text="דוגמה"/>
+<l:gentext key="example" text="דוגמה"/>
+<l:gentext key="Figure" text="×יור"/>
+<l:gentext key="figure" text="×יור"/>
+<l:gentext key="Glossary" text="מילון מונחי×"/>
+<l:gentext key="glossary" text="מילון מונחי×"/>
+<l:gentext key="GlossSee" text="ר××”"/>
+<l:gentext key="glosssee" text="ר××”"/>
+<l:gentext key="GlossSeeAlso" text="ר××” ×’×"/>
+<l:gentext key="glossseealso" text="ר××” ×’×"/>
+<l:gentext key="IMPORTANT" text="חשוב"/>
+<l:gentext key="important" text="חשוב"/>
+<l:gentext key="Important" text="חשוב"/>
+<l:gentext key="Index" text="×ינדקס"/>
+<l:gentext key="index" text="×ינדקס"/>
+<l:gentext key="ISBN" text="מספר ספר סטנדרטי בינל×ומי"/>
+<l:gentext key="isbn" text="מספר ספר סטנדרטי בינל×ומי"/>
+<l:gentext key="LegalNotice" text="הודעה משפטית"/>
+<l:gentext key="legalnotice" text="הודעה משפטית"/>
+<l:gentext key="MsgAud" text="קהל יעד"/>
+<l:gentext key="msgaud" text="קהל יעד"/>
+<l:gentext key="MsgLevel" text="רמה"/>
+<l:gentext key="msglevel" text="רמה"/>
+<l:gentext key="MsgOrig" text="מקור"/>
+<l:gentext key="msgorig" text="מקור"/>
+<l:gentext key="NOTE" text="×©×™× ×œ×‘"/>
+<l:gentext key="Note" text="×©×™× ×œ×‘"/>
+<l:gentext key="note" text="×©×™× ×œ×‘"/>
+<l:gentext key="Part" text="חלק"/>
+<l:gentext key="part" text="חלק"/>
+<l:gentext key="Preface" text="מבו×"/>
+<l:gentext key="preface" text="מבו×"/>
+<l:gentext key="Procedure" text="הליך"/>
+<l:gentext key="procedure" text="הליך"/>
+<l:gentext key="ProductionSet" text="ייצור"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="×”×•×¦× ×œ×ור"/>
+<l:gentext key="published" text="×”×•×¦× ×œ×ור"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ת ו ש"/>
+<l:gentext key="qandadiv" text="ת ו ש"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ש:"/>
+<l:gentext key="question" text="ש:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="מר××” מקו×"/>
+<l:gentext key="reference" text="מר××” מקו×"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ש×"/>
+<l:gentext key="refname" text="ש×"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="תמצית"/>
+<l:gentext key="refsynopsisdiv" text="תמצית"/>
+<l:gentext key="RevHistory" text="היסטוריית גירס×ות"/>
+<l:gentext key="revhistory" text="היסטוריית גירס×ות"/>
+<l:gentext key="revision" text="גירסה"/>
+<l:gentext key="Revision" text="גירסה"/>
+<l:gentext key="sect1" text="סעיף"/>
+<l:gentext key="sect2" text="סעיף"/>
+<l:gentext key="sect3" text="סעיף"/>
+<l:gentext key="sect4" text="סעיף"/>
+<l:gentext key="sect5" text="סעיף"/>
+<l:gentext key="section" text="סעיף"/>
+<l:gentext key="Section" text="סעיף"/>
+<l:gentext key="see" text="ר××”"/>
+<l:gentext key="See" text="ר××”"/>
+<l:gentext key="seealso" text="ר××” ×’×"/>
+<l:gentext key="Seealso" text="ר××” ×’×"/>
+<l:gentext key="SeeAlso" text="ר××” ×’×"/>
+<l:gentext key="set" text="סידרה"/>
+<l:gentext key="Set" text="סידרה"/>
+<l:gentext key="setindex" text="×ינקדקס סדרות"/>
+<l:gentext key="SetIndex" text="×ינדקס סדרות"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="פס צדדי"/>
+<l:gentext key="step" text="צעד"/>
+<l:gentext key="Step" text="צעד"/>
+<l:gentext key="table" text="טבלה"/>
+<l:gentext key="Table" text="טבלה"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="עצה"/>
+<l:gentext key="TIP" text="עצה"/>
+<l:gentext key="Tip" text="עצה"/>
+<l:gentext key="Warning" text="×זהרה"/>
+<l:gentext key="warning" text="×זהרה"/>
+<l:gentext key="WARNING" text="×זהרה"/>
+<l:gentext key="and" text="ו"/>
+<l:gentext key="by" text="מ×ת"/>
+<l:gentext key="Edited" text="נערך"/>
+<l:gentext key="edited" text="נערך"/>
+<l:gentext key="Editedby" text="נערך על ידי"/>
+<l:gentext key="editedby" text="נערך על ידי"/>
+<l:gentext key="in" text="ב"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="הערות"/>
+<l:gentext key="Notes" text="הערות"/>
+<l:gentext key="Pgs" text="עמודי×"/>
+<l:gentext key="pgs" text="עמודי×"/>
+<l:gentext key="Revisedby" text="הוגה על ידי: "/>
+<l:gentext key="revisedby" text="הוגה על ידי: "/>
+<l:gentext key="TableNotes" text="הערות"/>
+<l:gentext key="tablenotes" text="הערות"/>
+<l:gentext key="TableofContents" text="תוכן ×”×¢× ×™×™× ×™×"/>
+<l:gentext key="tableofcontents" text="תוכן ×”×¢× ×™×™× ×™×"/>
+<l:gentext key="unexpectedelementname" text="×©× ×ž×¨×›×™×‘ בלתי צפוי"/>
+<l:gentext key="unsupported" text="×œ× × ×ª×ž×š"/>
+<l:gentext key="xrefto" text="התייחסות צולבת ×ל"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="רשימת משוו×ות"/>
+<l:gentext key="ListofEquations" text="רשימת משוו×ות"/>
+<l:gentext key="ListofExamples" text="רשימת דוגמ×ות"/>
+<l:gentext key="listofexamples" text="רשימת דוגמ×ות"/>
+<l:gentext key="ListofFigures" text="רשימת ×יורי×"/>
+<l:gentext key="listoffigures" text="רשימת ×יורי×"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="רשימת טבל×ות"/>
+<l:gentext key="ListofTables" text="רשימת טבל×ות"/>
+<l:gentext key="ListofUnknown" text="רשימה של ×ž×¨×›×™×‘×™× ×œ× ×™×“×•×¢×™×"/>
+<l:gentext key="listofunknown" text="רשימה של ×ž×¨×›×™×‘×™× ×œ× ×™×“×•×¢×™×"/>
+<l:gentext key="nav-home" text="ר×שי"/>
+<l:gentext key="nav-next" text="הב×"/>
+<l:gentext key="nav-next-sibling" text="דלג לסוף"/>
+<l:gentext key="nav-prev" text="הקוד×"/>
+<l:gentext key="nav-prev-sibling" text="חזור להתחלה"/>
+<l:gentext key="nav-up" text="למעלה"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="טיוטה"/>
+<l:gentext key="above" text="למעלה"/>
+<l:gentext key="below" text="למטה"/>
+<l:gentext key="sectioncalled" text="הסעיף שנקר×"/>
+<l:gentext key="index symbols" text="סמלי×"/>
+<l:gentext key="writing-mode" text="rl-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="נספח %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="פרק %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="משוו××” %n. %t"/>
+<l:template name="example" text="דוגמה %n. %t"/>
+<l:template name="figure" text="×יור %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="חלק %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="הליך %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ייצור %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="טבלה %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="נספח %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="פרק %n. %t"/>
+<l:template name="part" text="חלק %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="ת: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ש: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ש: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="refsection" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="refsect1" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="refsect2" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="refsect3" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="sect1" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="sect2" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="sect3" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="sect4" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="sect5" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="section" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="simplesect" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ת: %n"/>
+<l:template name="appendix" text="נספח %n"/>
+<l:template name="bridgehead" text="סעיף %n"/>
+<l:template name="chapter" text="פרק %n"/>
+<l:template name="equation" text="משוו×ה %n"/>
+<l:template name="example" text="דוגמה %n"/>
+<l:template name="figure" text="×יור %n"/>
+<l:template name="part" text="חלק %n"/>
+<l:template name="procedure" text="הליך %n"/>
+<l:template name="productionset" text="ייצור %n"/>
+<l:template name="qandadiv" text="ת ו ש %n"/>
+<l:template name="qandaentry" text="ש: %n"/>
+<l:template name="question" text="ש: %n"/>
+<l:template name="sect1" text="סעיף %n"/>
+<l:template name="sect2" text="סעיף %n"/>
+<l:template name="sect3" text="סעיף %n"/>
+<l:template name="sect4" text="סעיף %n"/>
+<l:template name="sect5" text="סעיף %n"/>
+<l:template name="section" text="סעיף %n"/>
+<l:template name="table" text="טבלה %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="נספח %n, %t"/>
+<l:template name="bridgehead" text="סעיף %n, “%tâ€"/>
+<l:template name="chapter" text="פרק %n, %t"/>
+<l:template name="equation" text="משוו×ה %n, “%tâ€"/>
+<l:template name="example" text="דוגמה %n, “%tâ€"/>
+<l:template name="figure" text="×יור %n, “%tâ€"/>
+<l:template name="part" text="חלק %n, “%tâ€"/>
+<l:template name="procedure" text="הליך %n, “%tâ€"/>
+<l:template name="productionset" text="ייצור %n, “%tâ€"/>
+<l:template name="qandadiv" text="ת ו ש %n, “%tâ€"/>
+<l:template name="refsect1" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="refsect2" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="refsect3" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="refsection" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="sect1" text="סעיף %n, “%tâ€"/>
+<l:template name="sect2" text="סעיף %n, “%tâ€"/>
+<l:template name="sect3" text="סעיף %n, “%tâ€"/>
+<l:template name="sect4" text="סעיף %n, “%tâ€"/>
+<l:template name="sect5" text="סעיף %n, “%tâ€"/>
+<l:template name="section" text="סעיף %n, “%tâ€"/>
+<l:template name="simplesect" text="הסעיף ×©× ×§×¨× â€œ%tâ€"/>
+<l:template name="table" text="טבלה %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ו "/>
+<l:template name="seplast" text=", ו "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ר××” %t."/>
+<l:template name="seealso" text="ר××” ×’× %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="קהל יעד: "/>
+<l:template name="MsgLevel" text="רמה: "/>
+<l:template name="MsgOrig" text="מקור: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040d Hebrew (ISRAEL)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml
new file mode 100644
index 0000000..76a075f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="hi" english-language-name="Hindi">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/hi.xml -->
+<!-- * -->
+<!-- * E-mail the edited hi.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="सार"/>
+<l:gentext key="abstract" text="सार"/>
+<l:gentext key="Acknowledgements" text="जà¥à¤žà¤¾à¤ªà¤¨"/>
+<l:gentext key="acknowledgements" text="जà¥à¤žà¤¾à¤ªà¤¨"/>
+<l:gentext key="Answer" text="उ:"/>
+<l:gentext key="answer" text="उ:"/>
+<l:gentext key="Appendix" text="परिशिषà¥à¤Ÿ"/>
+<l:gentext key="appendix" text="परिशिषà¥à¤Ÿ"/>
+<l:gentext key="Article" text="आलेख"/>
+<l:gentext key="article" text="आलेख"/>
+<l:gentext key="Author" text="लेखक"/>
+<l:gentext key="Bibliography" text="गà¥à¤°à¤‚थ-सूची"/>
+<l:gentext key="bibliography" text="गà¥à¤°à¤‚थ-सूची"/>
+<l:gentext key="Book" text="पà¥à¤¸à¥à¤¤à¤•"/>
+<l:gentext key="book" text="पà¥à¤¸à¥à¤¤à¤•"/>
+<l:gentext key="CAUTION" text="सावधानी"/>
+<l:gentext key="Caution" text="सावधानी"/>
+<l:gentext key="caution" text="सावधानी"/>
+<l:gentext key="Chapter" text="अधà¥à¤¯à¤¾à¤¯"/>
+<l:gentext key="chapter" text="अधà¥à¤¯à¤¾à¤¯"/>
+<l:gentext key="Colophon" text="पà¥à¤¸à¥à¤¤à¤• परिचय"/>
+<l:gentext key="colophon" text="पà¥à¤¸à¥à¤¤à¤• परिचय"/>
+<l:gentext key="Copyright" text="कॉपीराइट"/>
+<l:gentext key="copyright" text="कॉपीराइट"/>
+<l:gentext key="Dedication" text="समरà¥à¤ªà¤£"/>
+<l:gentext key="dedication" text="समरà¥à¤ªà¤£"/>
+<l:gentext key="Edition" text="संसà¥à¤•à¤°à¤£"/>
+<l:gentext key="edition" text="संसà¥à¤•à¤°à¤£"/>
+<l:gentext key="Editor" text="संपादक"/>
+<l:gentext key="Equation" text="समीकरण"/>
+<l:gentext key="equation" text="समीकरण"/>
+<l:gentext key="Example" text="उदाहरण"/>
+<l:gentext key="example" text="उदाहरण"/>
+<l:gentext key="Figure" text="चितà¥à¤°"/>
+<l:gentext key="figure" text="चितà¥à¤°"/>
+<l:gentext key="Glossary" text="शबà¥à¤¦à¤•à¥‹à¤¶"/>
+<l:gentext key="glossary" text="शबà¥à¤¦à¤•à¥‹à¤¶"/>
+<l:gentext key="GlossSee" text="देखें"/>
+<l:gentext key="glosssee" text="देखें"/>
+<l:gentext key="GlossSeeAlso" text="इसे भी देखें"/>
+<l:gentext key="glossseealso" text="इसे भी देखें"/>
+<l:gentext key="IMPORTANT" text="महतà¥à¤µà¤ªà¥‚रà¥à¤£"/>
+<l:gentext key="important" text="महतà¥à¤µà¤ªà¥‚रà¥à¤£"/>
+<l:gentext key="Important" text="महतà¥à¤µà¤ªà¥‚रà¥à¤£"/>
+<l:gentext key="Index" text="सूची"/>
+<l:gentext key="index" text="सूची"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="वैधानिक सूचना"/>
+<l:gentext key="legalnotice" text="वैधानिक सूचना"/>
+<l:gentext key="MsgAud" text="शà¥à¤°à¥‹à¤¤à¤¾"/>
+<l:gentext key="msgaud" text="शà¥à¤°à¥‹à¤¤à¤¾"/>
+<l:gentext key="MsgLevel" text="सà¥à¤¤à¤°"/>
+<l:gentext key="msglevel" text="सà¥à¤¤à¤°"/>
+<l:gentext key="MsgOrig" text="मूल"/>
+<l:gentext key="msgorig" text="मूल"/>
+<l:gentext key="NOTE" text="नोट"/>
+<l:gentext key="Note" text="नोट"/>
+<l:gentext key="note" text="नोट"/>
+<l:gentext key="Part" text="हिसà¥à¤¸à¤¾"/>
+<l:gentext key="part" text="हिसà¥à¤¸à¤¾"/>
+<l:gentext key="Preface" text="पà¥à¤°à¤¸à¥à¤¤à¤¾à¤µà¤¨à¤¾"/>
+<l:gentext key="preface" text="पà¥à¤°à¤¸à¥à¤¤à¤¾à¤µà¤¨à¤¾"/>
+<l:gentext key="Procedure" text="पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾"/>
+<l:gentext key="procedure" text="पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾"/>
+<l:gentext key="ProductionSet" text="उतà¥à¤ªà¤¾à¤¦à¤¨"/>
+<l:gentext key="PubDate" text="पà¥à¤°à¤•à¤¾à¤¶à¤¨ तिथि"/>
+<l:gentext key="pubdate" text="पà¥à¤°à¤•à¤¾à¤¶à¤¨ तिथि"/>
+<l:gentext key="Published" text="पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤"/>
+<l:gentext key="published" text="पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤"/>
+<l:gentext key="Publisher" text="पà¥à¤°à¤•à¤¾à¤¶à¤•"/>
+<l:gentext key="Qandadiv" text="पà¥à¤°. व उ."/>
+<l:gentext key="qandadiv" text="पà¥à¤°. व उ."/>
+<l:gentext key="QandASet" text="बारंबार पूछे जाने वाले पà¥à¤°à¤¶à¥à¤¨"/>
+<l:gentext key="Question" text="पà¥à¤°:"/>
+<l:gentext key="question" text="पà¥à¤°:"/>
+<l:gentext key="RefEntry" text="पृषà¥à¤ "/>
+<l:gentext key="refentry" text="पृषà¥à¤ "/>
+<l:gentext key="Reference" text="संदरà¥à¤­"/>
+<l:gentext key="reference" text="संदरà¥à¤­"/>
+<l:gentext key="References" text="संदरà¥à¤­"/>
+<l:gentext key="RefName" text="नाम"/>
+<l:gentext key="refname" text="नाम"/>
+<l:gentext key="RefSection" text="खंड"/>
+<l:gentext key="refsection" text="खंड"/>
+<l:gentext key="RefSynopsisDiv" text="सारांश"/>
+<l:gentext key="refsynopsisdiv" text="सारांश"/>
+<l:gentext key="RevHistory" text="पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£ इतिहास"/>
+<l:gentext key="revhistory" text="पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£ इतिहास"/>
+<l:gentext key="revision" text="पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£"/>
+<l:gentext key="Revision" text="पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£"/>
+<l:gentext key="sect1" text="खंड"/>
+<l:gentext key="sect2" text="खंड"/>
+<l:gentext key="sect3" text="खंड"/>
+<l:gentext key="sect4" text="खंड"/>
+<l:gentext key="sect5" text="खंड"/>
+<l:gentext key="section" text="खंड"/>
+<l:gentext key="Section" text="खंड"/>
+<l:gentext key="see" text="देखें"/>
+<l:gentext key="See" text="देखें"/>
+<l:gentext key="seealso" text="इसे भी देखें"/>
+<l:gentext key="Seealso" text="इसे भी देखें"/>
+<l:gentext key="SeeAlso" text="इसे भी देखें"/>
+<l:gentext key="set" text="सेट करें"/>
+<l:gentext key="Set" text="सेट करें"/>
+<l:gentext key="setindex" text="विषय सूची सेट करें"/>
+<l:gentext key="SetIndex" text="विषय सूची सेट करें"/>
+<l:gentext key="Sidebar" text="बाज़ू पटà¥à¤Ÿà¥€"/>
+<l:gentext key="sidebar" text="बाज़ू पटà¥à¤Ÿà¥€"/>
+<l:gentext key="step" text="चरण"/>
+<l:gentext key="Step" text="चरण"/>
+<l:gentext key="table" text="तालिका"/>
+<l:gentext key="Table" text="तालिका"/>
+<l:gentext key="task" text="कारà¥à¤¯"/>
+<l:gentext key="Task" text="कारà¥à¤¯"/>
+<l:gentext key="tip" text="संकेत"/>
+<l:gentext key="TIP" text="संकेत"/>
+<l:gentext key="Tip" text="संकेत"/>
+<l:gentext key="Warning" text="चेतावनी"/>
+<l:gentext key="warning" text="चेतावनी"/>
+<l:gentext key="WARNING" text="चेतावनी"/>
+<l:gentext key="and" text="और"/>
+<l:gentext key="by" text="दà¥à¤µà¤¾à¤°à¤¾"/>
+<l:gentext key="Edited" text="संपादित"/>
+<l:gentext key="edited" text="संपादित"/>
+<l:gentext key="Editedby" text="इनके दà¥à¤µà¤¾à¤°à¤¾ संपादित"/>
+<l:gentext key="editedby" text="इनके दà¥à¤µà¤¾à¤°à¤¾ संपादित"/>
+<l:gentext key="in" text="अंदर"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="नोटà¥à¤¸"/>
+<l:gentext key="Notes" text="नोटà¥à¤¸"/>
+<l:gentext key="Pgs" text="पृषà¥à¤ "/>
+<l:gentext key="pgs" text="पृषà¥à¤ "/>
+<l:gentext key="Revisedby" text="पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£à¤•à¤°à¥à¤¤à¤¾: "/>
+<l:gentext key="revisedby" text="पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£à¤•à¤°à¥à¤¤à¤¾: "/>
+<l:gentext key="TableNotes" text="नोटà¥à¤¸"/>
+<l:gentext key="tablenotes" text="नोटà¥à¤¸"/>
+<l:gentext key="TableofContents" text="विषय-सूची"/>
+<l:gentext key="tableofcontents" text="विषय-सूची"/>
+<l:gentext key="unexpectedelementname" text="अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ ततà¥à¤µ नाम"/>
+<l:gentext key="unsupported" text="असमरà¥à¤¥à¤¿à¤¤"/>
+<l:gentext key="xrefto" text=""/>
+<l:gentext key="Authors" text="लेखक"/>
+<l:gentext key="copyeditor" text="कॉपी संपादक"/>
+<l:gentext key="graphicdesigner" text="आलेखी डिजायनर"/>
+<l:gentext key="productioneditor" text="उतà¥à¤ªà¤¾à¤¦à¤¨ संपादक"/>
+<l:gentext key="technicaleditor" text="तकनीकी संपादक"/>
+<l:gentext key="translator" text="अनà¥à¤µà¤¾à¤¦à¤•"/>
+<l:gentext key="listofequations" text="समीकरण सूची"/>
+<l:gentext key="ListofEquations" text="समीकरण सूची"/>
+<l:gentext key="ListofExamples" text="उदाहरण सूची"/>
+<l:gentext key="listofexamples" text="उदाहरण सूची"/>
+<l:gentext key="ListofFigures" text="चितà¥à¤° सूची"/>
+<l:gentext key="listoffigures" text="चितà¥à¤° सूची"/>
+<l:gentext key="ListofProcedures" text="पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ सूची"/>
+<l:gentext key="listofprocedures" text="पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ सूची"/>
+<l:gentext key="listoftables" text="सारणी सूची"/>
+<l:gentext key="ListofTables" text="सारणी सूची"/>
+<l:gentext key="ListofUnknown" text="अजà¥à¤žà¤¾à¤¤ सूची"/>
+<l:gentext key="listofunknown" text="अजà¥à¤žà¤¾à¤¤ सूची"/>
+<l:gentext key="nav-home" text="घर"/>
+<l:gentext key="nav-next" text="आगे"/>
+<l:gentext key="nav-next-sibling" text="दà¥à¤°à¥à¤¤ अगà¥à¤°à¥‡à¤·à¤£"/>
+<l:gentext key="nav-prev" text="पीछे"/>
+<l:gentext key="nav-prev-sibling" text="दà¥à¤°à¥à¤¤ पशà¥à¤šà¤°à¤£"/>
+<l:gentext key="nav-up" text="ऊपर"/>
+<l:gentext key="nav-toc" text="विषय सूची"/>
+<l:gentext key="Draft" text="मसौदा"/>
+<l:gentext key="above" text="ऊपर"/>
+<l:gentext key="below" text="नीचे"/>
+<l:gentext key="sectioncalled" text="यह खंड कहलाता है"/>
+<l:gentext key="index symbols" text="संकेत"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="अधà¥à¤¯à¤¾à¤¯Â %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="समीकरण %n. %t"/>
+<l:template name="example" text="उदाहरण %n. %t"/>
+<l:template name="figure" text="चितà¥à¤°Â %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="हिसà¥à¤¸à¤¾Â %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="उतà¥à¤ªà¤¾à¤¦à¤¨Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="तालिका %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="अधà¥à¤¯à¤¾à¤¯Â %n. %t"/>
+<l:template name="part" text="हिसà¥à¤¸à¤¾Â %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="उ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="पà¥à¤°: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="पà¥à¤°: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="refsection" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="refsect1" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="refsect2" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="refsect3" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="sect1" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="sect2" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="sect3" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="sect4" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="sect5" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="section" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="simplesect" text="यह खंड कहलाता है “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="उ: %n"/>
+<l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n"/>
+<l:template name="bridgehead" text="खंड %n"/>
+<l:template name="chapter" text="अधà¥à¤¯à¤¾à¤¯Â %n"/>
+<l:template name="equation" text="समीकरण %n"/>
+<l:template name="example" text="उदाहरण %n"/>
+<l:template name="figure" text="चितà¥à¤°Â %n"/>
+<l:template name="part" text="हिसà¥à¤¸à¤¾Â %n"/>
+<l:template name="procedure" text="पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾Â %n"/>
+<l:template name="productionset" text="उतà¥à¤ªà¤¾à¤¦à¤¨Â %n"/>
+<l:template name="qandadiv" text="पà¥à¤°. व उ. %n"/>
+<l:template name="qandaentry" text="पà¥à¤°: %n"/>
+<l:template name="question" text="पà¥à¤°: %n"/>
+<l:template name="sect1" text="खंड %n"/>
+<l:template name="sect2" text="खंड %n"/>
+<l:template name="sect3" text="खंड %n"/>
+<l:template name="sect4" text="खंड %n"/>
+<l:template name="sect5" text="खंड %n"/>
+<l:template name="section" text="खंड %n"/>
+<l:template name="table" text="तालिका %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n, %t"/>
+<l:template name="bridgehead" text="खंड %n, “%tâ€"/>
+<l:template name="chapter" text="अधà¥à¤¯à¤¾à¤¯Â %n, %t"/>
+<l:template name="equation" text="समीकरण %n, “%tâ€"/>
+<l:template name="example" text="उदाहरण %n, “%tâ€"/>
+<l:template name="figure" text="चितà¥à¤°Â %n, “%tâ€"/>
+<l:template name="part" text="हिसà¥à¤¸à¤¾Â %n, “%tâ€"/>
+<l:template name="procedure" text="पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾Â %n, “%tâ€"/>
+<l:template name="productionset" text="उतà¥à¤ªà¤¾à¤¦à¤¨Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="पà¥à¤°. व उ. %n, “%tâ€"/>
+<l:template name="refsect1" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="refsect2" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="refsect3" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="refsection" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="sect1" text="खंड %n, “%tâ€"/>
+<l:template name="sect2" text="खंड %n, “%tâ€"/>
+<l:template name="sect3" text="खंड %n, “%tâ€"/>
+<l:template name="sect4" text="खंड %n, “%tâ€"/>
+<l:template name="sect5" text="खंड %n, “%tâ€"/>
+<l:template name="section" text="खंड %n, “%tâ€"/>
+<l:template name="simplesect" text="यह खंड कहलाता है “%tâ€"/>
+<l:template name="table" text="तालिका %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" और "/>
+<l:template name="seplast" text=", और "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="देखें %t."/>
+<l:template name="seealso" text="इसे भी देखें %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="शà¥à¤°à¥‹à¤¤à¤¾: "/>
+<l:template name="MsgLevel" text="सà¥à¤¤à¤°: "/>
+<l:template name="MsgOrig" text="मूल: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="जनवरी"/>
+<l:template name="February" text="फरवरी"/>
+<l:template name="March" text="मारà¥à¤š"/>
+<l:template name="April" text="अपà¥à¤°à¥ˆà¤²"/>
+<l:template name="May" text="मई"/>
+<l:template name="June" text="जून"/>
+<l:template name="July" text="जà¥à¤²à¤¾à¤ˆ"/>
+<l:template name="August" text="अगसà¥à¤¤"/>
+<l:template name="September" text="सितंबर"/>
+<l:template name="October" text="अकà¥à¤Ÿà¥‚बर"/>
+<l:template name="November" text="नवंबर"/>
+<l:template name="December" text="दिसंबर"/>
+<l:template name="Monday" text="सोमवार"/>
+<l:template name="Tuesday" text="मंगलवार"/>
+<l:template name="Wednesday" text="बà¥à¤§à¤µà¤¾à¤°"/>
+<l:template name="Thursday" text="गà¥à¤°à¥à¤µà¤¾à¤°"/>
+<l:template name="Friday" text="शà¥à¤•à¥à¤°à¤µà¤¾à¤°"/>
+<l:template name="Saturday" text="शनिवार"/>
+<l:template name="Sunday" text="रविवार"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="जन"/>
+<l:template name="Feb" text="फर"/>
+<l:template name="Mar" text="मारà¥à¤š"/>
+<l:template name="Apr" text="अपà¥à¤°à¥ˆ"/>
+<l:template name="May" text="मई"/>
+<l:template name="Jun" text="जून"/>
+<l:template name="Jul" text="जà¥à¤²à¤¾"/>
+<l:template name="Aug" text="अग"/>
+<l:template name="Sep" text="सितं"/>
+<l:template name="Oct" text="अकà¥à¤Ÿà¥‚"/>
+<l:template name="Nov" text="नवं"/>
+<l:template name="Dec" text="दिस"/>
+<l:template name="Mon" text="सोम"/>
+<l:template name="Tue" text="मंगल"/>
+<l:template name="Wed" text="बà¥à¤§"/>
+<l:template name="Thu" text="गà¥à¤°à¥"/>
+<l:template name="Fri" text="शà¥à¤•à¥à¤°"/>
+<l:template name="Sat" text="शनि"/>
+<l:template name="Sun" text="रवि"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0439 Hindi"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">संकेत</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml
new file mode 100644
index 0000000..2db7030
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml
@@ -0,0 +1,662 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="hr" english-language-name="Croatian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/hr.xml -->
+<!-- * -->
+<!-- * E-mail the edited hr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sažetak"/>
+<l:gentext key="abstract" text="sažetak"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements"/>
+<l:gentext key="acknowledgements" text="acknowledgements"/>
+<l:gentext key="Answer" text="Odgovor:"/>
+<l:gentext key="answer" text="odgovor:"/>
+<l:gentext key="Appendix" text="Dodatak"/>
+<l:gentext key="appendix" text="dodatak"/>
+<l:gentext key="Article" text="ÄŒlanak"/>
+<l:gentext key="article" text="Älanak"/>
+<l:gentext key="Author" text="Author"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="knjiga"/>
+<l:gentext key="CAUTION" text="OPREZ"/>
+<l:gentext key="Caution" text="Oprez"/>
+<l:gentext key="caution" text="oprez"/>
+<l:gentext key="Chapter" text="Poglavlje"/>
+<l:gentext key="chapter" text="poglavlje"/>
+<l:gentext key="Colophon" text="Impresum"/>
+<l:gentext key="colophon" text="impresum"/>
+<l:gentext key="Copyright" text="Autorska prava"/>
+<l:gentext key="copyright" text="autorska prava"/>
+<l:gentext key="Dedication" text="Posveta"/>
+<l:gentext key="dedication" text="posveta"/>
+<l:gentext key="Edition" text="Izdanje"/>
+<l:gentext key="edition" text="izdanje"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Jednadžba"/>
+<l:gentext key="equation" text="jednadžba"/>
+<l:gentext key="Example" text="Primjer"/>
+<l:gentext key="example" text="primjer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="slika"/>
+<l:gentext key="Glossary" text="RjeÄnik"/>
+<l:gentext key="glossary" text="rjeÄnik"/>
+<l:gentext key="GlossSee" text="Vidi"/>
+<l:gentext key="glosssee" text="vidi"/>
+<l:gentext key="GlossSeeAlso" text="Vidi i"/>
+<l:gentext key="glossseealso" text="vidi i"/>
+<l:gentext key="IMPORTANT" text="VAŽNO"/>
+<l:gentext key="important" text="važno"/>
+<l:gentext key="Important" text="Važno"/>
+<l:gentext key="Index" text="Kazalo"/>
+<l:gentext key="index" text="kazalo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravne odredbe"/>
+<l:gentext key="legalnotice" text="pravne odredbe"/>
+<l:gentext key="MsgAud" text="Primatelji"/>
+<l:gentext key="msgaud" text="primatelji"/>
+<l:gentext key="MsgLevel" text="Razina"/>
+<l:gentext key="msglevel" text="razina"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="izvor"/>
+<l:gentext key="NOTE" text="BILJEÅ KA"/>
+<l:gentext key="Note" text="Bilješka"/>
+<l:gentext key="note" text="bilješka"/>
+<l:gentext key="Part" text="Dio"/>
+<l:gentext key="part" text="dio"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="predgovor"/>
+<l:gentext key="Procedure" text="Postupak"/>
+<l:gentext key="procedure" text="postupak"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="Datum publikacije"/>
+<l:gentext key="pubdate" text="datum publikacije"/>
+<l:gentext key="Published" text="Objavljeno"/>
+<l:gentext key="published" text="objavljeno"/>
+<l:gentext key="Publisher" text="Nakladnik"/>
+<l:gentext key="Qandadiv" text="Pitanje i Odgovor"/>
+<l:gentext key="qandadiv" text="pitanje i Odgovor"/>
+<l:gentext key="QandASet" text="ÄŒesti Upiti"/>
+<l:gentext key="Question" text="Pitanje:"/>
+<l:gentext key="question" text="pitanje:"/>
+<l:gentext key="RefEntry" text="Stranica"/>
+<l:gentext key="refentry" text="stranica"/>
+<l:gentext key="Reference" text="Referenca"/>
+<l:gentext key="reference" text="referenca"/>
+<l:gentext key="References" text="Reference"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="Ime"/>
+<l:gentext key="RefSection" text="Odjeljak"/>
+<l:gentext key="refsection" text="odjeljak"/>
+<l:gentext key="RefSynopsisDiv" text="Pregled"/>
+<l:gentext key="refsynopsisdiv" text="Pregled"/>
+<l:gentext key="RevHistory" text="Povijest preinaka"/>
+<l:gentext key="revhistory" text="Povijest preinaka"/>
+<l:gentext key="revision" text="Preinaka"/>
+<l:gentext key="Revision" text="Preinaka"/>
+<l:gentext key="sect1" text="Odjeljak"/>
+<l:gentext key="sect2" text="Odjeljak"/>
+<l:gentext key="sect3" text="Odjeljak"/>
+<l:gentext key="sect4" text="Odjeljak"/>
+<l:gentext key="sect5" text="Odjeljak"/>
+<l:gentext key="section" text="odjeljak"/>
+<l:gentext key="Section" text="Odjeljak"/>
+<l:gentext key="see" text="vidi"/>
+<l:gentext key="See" text="Vidi"/>
+<l:gentext key="seealso" text="vidi i"/>
+<l:gentext key="Seealso" text="Vidi i"/>
+<l:gentext key="SeeAlso" text="Vidi i"/>
+<l:gentext key="set" text="set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="kazalo"/>
+<l:gentext key="SetIndex" text="Kazalo"/>
+<l:gentext key="Sidebar" text="Rubni stupac"/>
+<l:gentext key="sidebar" text="rubni stupac"/>
+<l:gentext key="step" text="korak"/>
+<l:gentext key="Step" text="Korak"/>
+<l:gentext key="table" text="tablica"/>
+<l:gentext key="Table" text="Tablica"/>
+<l:gentext key="task" text="zadatak"/>
+<l:gentext key="Task" text="Zadatak"/>
+<l:gentext key="tip" text="Savjet"/>
+<l:gentext key="TIP" text="SAVJET"/>
+<l:gentext key="Tip" text="Savjet"/>
+<l:gentext key="Warning" text="Upozorenje"/>
+<l:gentext key="warning" text="upozorenje"/>
+<l:gentext key="WARNING" text="UPOZORENJE"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="po"/>
+<l:gentext key="Edited" text="Uredio/la"/>
+<l:gentext key="edited" text="uredio/la"/>
+<l:gentext key="Editedby" text="Uredio/la"/>
+<l:gentext key="editedby" text="uredio/la"/>
+<l:gentext key="in" text="u"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="bilješke"/>
+<l:gentext key="Notes" text="Bilješke"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="str."/>
+<l:gentext key="Revisedby" text="Promijenjeno po: "/>
+<l:gentext key="revisedby" text="promijenjeno po: "/>
+<l:gentext key="TableNotes" text="Napomene"/>
+<l:gentext key="tablenotes" text="napomene"/>
+<l:gentext key="TableofContents" text="Sadržaj"/>
+<l:gentext key="tableofcontents" text="sadržaj"/>
+<l:gentext key="unexpectedelementname" text="NeoÄekivano ime elementa"/>
+<l:gentext key="unsupported" text="nepodržano"/>
+<l:gentext key="xrefto" text="xref za"/>
+<l:gentext key="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="Urdenik za autorska prava"/>
+<l:gentext key="graphicdesigner" text="GrafiÄki dizajner"/>
+<l:gentext key="productioneditor" text="Urednik produkcija"/>
+<l:gentext key="technicaleditor" text="TehniÄki urednik"/>
+<l:gentext key="translator" text="Prevodilac"/>
+<l:gentext key="listofequations" text="popis jednadžbi"/>
+<l:gentext key="ListofEquations" text="Popis jednadžbi"/>
+<l:gentext key="ListofExamples" text="Popis primjera"/>
+<l:gentext key="listofexamples" text="popis primjera"/>
+<l:gentext key="ListofFigures" text="Popis slika"/>
+<l:gentext key="listoffigures" text="popis slika"/>
+<l:gentext key="ListofProcedures" text="Popis postupaka"/>
+<l:gentext key="listofprocedures" text="popis postupaka"/>
+<l:gentext key="listoftables" text="popis tablica"/>
+<l:gentext key="ListofTables" text="Popis tablica "/>
+<l:gentext key="ListofUnknown" text="Popis nepoznanica"/>
+<l:gentext key="listofunknown" text="popis nepoznanica"/>
+<l:gentext key="nav-home" text="PoÄetak"/>
+<l:gentext key="nav-next" text="Naprijed"/>
+<l:gentext key="nav-next-sibling" text="SkoÄi unaprijed"/>
+<l:gentext key="nav-prev" text="Natrag"/>
+<l:gentext key="nav-prev-sibling" text="SkoÄi unatrag"/>
+<l:gentext key="nav-up" text="Gore"/>
+<l:gentext key="nav-toc" text="Sadržaj"/>
+<l:gentext key="Draft" text="Nacrt"/>
+<l:gentext key="above" text="iznad"/>
+<l:gentext key="below" text="ispod"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Oznake"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcÄćdÄ‘efghijklmnopqrsÅ¡tuvwxyzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČĆDÄEFGHIJKLMNOPQRSÅ TUVWXYZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Jednadžba %n. %t"/>
+<l:template name="example" text="Primjer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postupak %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tablica %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="Odgovor: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Pitanje: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pitanje: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="the section called “%tâ€"/>
+<l:template name="refsection" text="the section called “%tâ€"/>
+<l:template name="refsect1" text="the section called “%tâ€"/>
+<l:template name="refsect2" text="the section called “%tâ€"/>
+<l:template name="refsect3" text="the section called “%tâ€"/>
+<l:template name="sect1" text="the section called “%tâ€"/>
+<l:template name="sect2" text="the section called “%tâ€"/>
+<l:template name="sect3" text="the section called “%tâ€"/>
+<l:template name="sect4" text="the section called “%tâ€"/>
+<l:template name="sect5" text="the section called “%tâ€"/>
+<l:template name="section" text="the section called “%tâ€"/>
+<l:template name="simplesect" text="the section called “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Odgovor: %n"/>
+<l:template name="appendix" text="Dodatak %n"/>
+<l:template name="bridgehead" text="Odjeljak %n"/>
+<l:template name="chapter" text="Poglavlje %n"/>
+<l:template name="equation" text="Jednadžba %n"/>
+<l:template name="example" text="Primjer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Dio %n"/>
+<l:template name="procedure" text="Postupak %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="Pitanje i Odgovor %n"/>
+<l:template name="qandaentry" text="Pitanje: %n"/>
+<l:template name="question" text="Pitanje: %n"/>
+<l:template name="sect1" text="Odjeljak %n"/>
+<l:template name="sect2" text="Odjeljak %n"/>
+<l:template name="sect3" text="Odjeljak %n"/>
+<l:template name="sect4" text="Odjeljak %n"/>
+<l:template name="sect5" text="Odjeljak %n"/>
+<l:template name="section" text="Odjeljak %n"/>
+<l:template name="table" text="Tablica %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatak %n, %t"/>
+<l:template name="bridgehead" text="Odjeljak %n, “%tâ€"/>
+<l:template name="chapter" text="Poglavlje %n, %t"/>
+<l:template name="equation" text="Jednadžba %n, “%tâ€"/>
+<l:template name="example" text="Primjer %n, “%tâ€"/>
+<l:template name="figure" text="Slika %n, “%tâ€"/>
+<l:template name="part" text="Dio %n, “%tâ€"/>
+<l:template name="procedure" text="Postupak %n, “%tâ€"/>
+<l:template name="productionset" text="Produkcija %n, “%tâ€"/>
+<l:template name="qandadiv" text="Pitanje i Odgovor %n, “%tâ€"/>
+<l:template name="refsect1" text="the section called “%tâ€"/>
+<l:template name="refsect2" text="the section called “%tâ€"/>
+<l:template name="refsect3" text="the section called “%tâ€"/>
+<l:template name="refsection" text="the section called “%tâ€"/>
+<l:template name="sect1" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect2" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect3" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect4" text="Odjeljak %n, “%tâ€"/>
+<l:template name="sect5" text="Odjeljak %n, “%tâ€"/>
+<l:template name="section" text="Odjeljak %n, “%tâ€"/>
+<l:template name="simplesect" text="the section called “%tâ€"/>
+<l:template name="table" text="Tablica %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidi %t."/>
+<l:template name="seealso" text="Vidi i %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Primatelji: "/>
+<l:template name="MsgLevel" text="Razina: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definicija: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="SijeÄanj"/>
+<l:template name="February" text="VeljaÄa"/>
+<l:template name="March" text="Ožujak"/>
+<l:template name="April" text="Travanj"/>
+<l:template name="May" text="Svibanj"/>
+<l:template name="June" text="Lipanj"/>
+<l:template name="July" text="Srpanj"/>
+<l:template name="August" text="Kolovoz"/>
+<l:template name="September" text="Rujan"/>
+<l:template name="October" text="Listopad"/>
+<l:template name="November" text="Studeni"/>
+<l:template name="December" text="Prosinac"/>
+<l:template name="Monday" text="Ponedjeljak"/>
+<l:template name="Tuesday" text="Utorak"/>
+<l:template name="Wednesday" text="Srijeda"/>
+<l:template name="Thursday" text="ÄŒetvrtak"/>
+<l:template name="Friday" text="Petak"/>
+<l:template name="Saturday" text="Subota"/>
+<l:template name="Sunday" text="Nedjelja"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Sij"/>
+<l:template name="Feb" text="Velj"/>
+<l:template name="Mar" text="Ožu"/>
+<l:template name="Apr" text="Tra"/>
+<l:template name="May" text="Svi"/>
+<l:template name="Jun" text="Lip"/>
+<l:template name="Jul" text="Srp"/>
+<l:template name="Aug" text="Kol"/>
+<l:template name="Sep" text="Ruj"/>
+<l:template name="Oct" text="Lis"/>
+<l:template name="Nov" text="Stu"/>
+<l:template name="Dec" text="Pro"/>
+<l:template name="Mon" text="Pon"/>
+<l:template name="Tue" text="Uto"/>
+<l:template name="Wed" text="Sri"/>
+<l:template name="Thu" text="ÄŒet"/>
+<l:template name="Fri" text="Pet"/>
+<l:template name="Sat" text="Sub"/>
+<l:template name="Sun" text="Ned"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041a Croatian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Oznake</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml
new file mode 100644
index 0000000..ab90c94
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="hu" english-language-name="Hungarian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/hu.xml -->
+<!-- * -->
+<!-- * E-mail the edited hu.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Kivonat"/>
+<l:gentext key="abstract" text="kivonat"/>
+<l:gentext key="Acknowledgements" text="Köszönetnyilvánítás"/>
+<l:gentext key="acknowledgements" text="köszönetnyilvánítás"/>
+<l:gentext key="Answer" text="V:"/>
+<l:gentext key="answer" text="v:"/>
+<l:gentext key="Appendix" text="Függelék"/>
+<l:gentext key="appendix" text="függelék"/>
+<l:gentext key="Article" text="Cikk"/>
+<l:gentext key="article" text="cikk"/>
+<l:gentext key="Author" text="Szerz"/>
+<l:gentext key="Bibliography" text="Irodalomjegyzék"/>
+<l:gentext key="bibliography" text="irodalomjegyzék"/>
+<l:gentext key="Book" text="Könyv"/>
+<l:gentext key="book" text="könyv"/>
+<l:gentext key="CAUTION" text="FIGYELEM"/>
+<l:gentext key="Caution" text="Figyelem"/>
+<l:gentext key="caution" text="figyelem"/>
+<l:gentext key="Chapter" text="Fejezet"/>
+<l:gentext key="chapter" text="fejezet"/>
+<l:gentext key="Colophon" text="Végszó"/>
+<l:gentext key="colophon" text="végszó"/>
+<l:gentext key="Copyright" text="Szerzői jog"/>
+<l:gentext key="copyright" text="szerzői jog"/>
+<l:gentext key="Dedication" text="Ajánlás"/>
+<l:gentext key="dedication" text="ajánlás"/>
+<l:gentext key="Edition" text="Kiadás"/>
+<l:gentext key="edition" text="kiadás"/>
+<l:gentext key="Editor" text="Szerkesztő"/>
+<l:gentext key="Equation" text="Egyenlet"/>
+<l:gentext key="equation" text="egyenlet"/>
+<l:gentext key="Example" text="Példa"/>
+<l:gentext key="example" text="példa"/>
+<l:gentext key="Figure" text="Ãbra"/>
+<l:gentext key="figure" text="ábra"/>
+<l:gentext key="Glossary" text="Szójegyzék"/>
+<l:gentext key="glossary" text="szójegyzék"/>
+<l:gentext key="GlossSee" text="Lásd"/>
+<l:gentext key="glosssee" text="lásd"/>
+<l:gentext key="GlossSeeAlso" text="Lásd még"/>
+<l:gentext key="glossseealso" text="lásd még"/>
+<l:gentext key="IMPORTANT" text="FONTOS"/>
+<l:gentext key="important" text="fontos"/>
+<l:gentext key="Important" text="Fontos"/>
+<l:gentext key="Index" text="Tárgymutató"/>
+<l:gentext key="index" text="tárgymutató"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Jogi közlemény"/>
+<l:gentext key="legalnotice" text="jogi közlemény"/>
+<l:gentext key="MsgAud" text="Célközönség"/>
+<l:gentext key="msgaud" text="célközönség"/>
+<l:gentext key="MsgLevel" text="Szint"/>
+<l:gentext key="msglevel" text="szint"/>
+<l:gentext key="MsgOrig" text="Eredet"/>
+<l:gentext key="msgorig" text="eredet"/>
+<l:gentext key="NOTE" text="MEGJEGYZÉS"/>
+<l:gentext key="Note" text="Megjegyzés"/>
+<l:gentext key="note" text="megjegyzés"/>
+<l:gentext key="Part" text="Rész"/>
+<l:gentext key="part" text="rész"/>
+<l:gentext key="Preface" text="Előszó"/>
+<l:gentext key="preface" text="előszó"/>
+<l:gentext key="Procedure" text="Eljárás"/>
+<l:gentext key="procedure" text="eljárás"/>
+<l:gentext key="ProductionSet" text="Elemcsoport"/>
+<l:gentext key="PubDate" text="Publication Date"/>
+<l:gentext key="pubdate" text="Publication date"/>
+<l:gentext key="Published" text="Megjelent"/>
+<l:gentext key="published" text="megjelent"/>
+<l:gentext key="Publisher" text="Kiadó"/>
+<l:gentext key="Qandadiv" text="K és V"/>
+<l:gentext key="qandadiv" text="K és V"/>
+<l:gentext key="QandASet" text="Gyakran feltett kérdések"/>
+<l:gentext key="Question" text="K:"/>
+<l:gentext key="question" text="k:"/>
+<l:gentext key="RefEntry" text="Oldal"/>
+<l:gentext key="refentry" text="oldal"/>
+<l:gentext key="Reference" text="Hivatkozás"/>
+<l:gentext key="reference" text="hivatkozás"/>
+<l:gentext key="References" text="Hivatkozások"/>
+<l:gentext key="RefName" text="Név"/>
+<l:gentext key="refname" text="név"/>
+<l:gentext key="RefSection" text="Szakasz"/>
+<l:gentext key="refsection" text="szakasz"/>
+<l:gentext key="RefSynopsisDiv" text="Ãttekintés"/>
+<l:gentext key="refsynopsisdiv" text="áttekintés"/>
+<l:gentext key="RevHistory" text="Verziótörténet"/>
+<l:gentext key="revhistory" text="verziótörténet"/>
+<l:gentext key="revision" text="verzió"/>
+<l:gentext key="Revision" text="Verzió"/>
+<l:gentext key="sect1" text="Szakasz"/>
+<l:gentext key="sect2" text="Szakasz"/>
+<l:gentext key="sect3" text="Szakasz"/>
+<l:gentext key="sect4" text="Szakasz"/>
+<l:gentext key="sect5" text="Szakasz"/>
+<l:gentext key="section" text="szakasz"/>
+<l:gentext key="Section" text="Szakasz"/>
+<l:gentext key="see" text="lásd"/>
+<l:gentext key="See" text="Lásd"/>
+<l:gentext key="seealso" text="lásd még"/>
+<l:gentext key="Seealso" text="Lásd még"/>
+<l:gentext key="SeeAlso" text="Lásd még"/>
+<l:gentext key="set" text="csoport"/>
+<l:gentext key="Set" text="Csoport"/>
+<l:gentext key="setindex" text="csoportmutató"/>
+<l:gentext key="SetIndex" text="Csoportmutató"/>
+<l:gentext key="Sidebar" text="Széljegyzet"/>
+<l:gentext key="sidebar" text="széljegyzet"/>
+<l:gentext key="step" text="lépés"/>
+<l:gentext key="Step" text="Lépés"/>
+<l:gentext key="table" text="táblázat"/>
+<l:gentext key="Table" text="Táblázat"/>
+<l:gentext key="task" text="feladat"/>
+<l:gentext key="Task" text="Feladat"/>
+<l:gentext key="tip" text="tipp"/>
+<l:gentext key="TIP" text="TIPP"/>
+<l:gentext key="Tip" text="Tipp"/>
+<l:gentext key="Warning" text="Figyelem"/>
+<l:gentext key="warning" text="figyelem"/>
+<l:gentext key="WARNING" text="FIGYELEM"/>
+<l:gentext key="and" text="és"/>
+<l:gentext key="by" text="írta"/>
+<l:gentext key="Edited" text="Szerk."/>
+<l:gentext key="edited" text="szerk."/>
+<l:gentext key="Editedby" text="Szerkesztette"/>
+<l:gentext key="editedby" text="szerkesztette"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="megjegyzések"/>
+<l:gentext key="Notes" text="Megjegyzések"/>
+<l:gentext key="Pgs" text="Old."/>
+<l:gentext key="pgs" text="old."/>
+<l:gentext key="Revisedby" text="Felülvizsgálta"/>
+<l:gentext key="revisedby" text="felülvizsgálta"/>
+<l:gentext key="TableNotes" text="Megjegyzések"/>
+<l:gentext key="tablenotes" text="megjegyzések"/>
+<l:gentext key="TableofContents" text="Tartalom"/>
+<l:gentext key="tableofcontents" text="tartalom"/>
+<l:gentext key="unexpectedelementname" text="nem várt elemnév"/>
+<l:gentext key="unsupported" text="nem támogatott"/>
+<l:gentext key="xrefto" text="kereszthiv"/>
+<l:gentext key="Authors" text="Szerzők"/>
+<l:gentext key="copyeditor" text="Kiadás szerkesztő"/>
+<l:gentext key="graphicdesigner" text="Grafikus tervező"/>
+<l:gentext key="productioneditor" text="Főszerkesztőr"/>
+<l:gentext key="technicaleditor" text="Szakszerkesztő"/>
+<l:gentext key="translator" text="Fordító"/>
+<l:gentext key="listofequations" text="az egyenletek listája"/>
+<l:gentext key="ListofEquations" text="Az egyenletek listája"/>
+<l:gentext key="ListofExamples" text="A példák listája"/>
+<l:gentext key="listofexamples" text="a példák listája"/>
+<l:gentext key="ListofFigures" text="Az ábrák listája"/>
+<l:gentext key="listoffigures" text="az ábrák listája"/>
+<l:gentext key="ListofProcedures" text="Eljárások listája"/>
+<l:gentext key="listofprocedures" text="eljárások listája"/>
+<l:gentext key="listoftables" text="a táblázatok listája"/>
+<l:gentext key="ListofTables" text="A táblázatok listája"/>
+<l:gentext key="ListofUnknown" text="Az egyéb elemek listája"/>
+<l:gentext key="listofunknown" text="az egyéb elemek listája"/>
+<l:gentext key="nav-home" text="FÅ‘oldal"/>
+<l:gentext key="nav-next" text="Előre"/>
+<l:gentext key="nav-next-sibling" text="Gyors előre"/>
+<l:gentext key="nav-prev" text="Vissza"/>
+<l:gentext key="nav-prev-sibling" text="Gyors vissza"/>
+<l:gentext key="nav-up" text="Fel"/>
+<l:gentext key="nav-toc" text="Tartalom"/>
+<l:gentext key="Draft" text="Piszkozat"/>
+<l:gentext key="above" text="fent"/>
+<l:gentext key="below" text="alább"/>
+<l:gentext key="sectioncalled" text="a szakasz:"/>
+<l:gentext key="index symbols" text="Jelzések"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aábcdeéfghiíjklmnoóöőpqrstuúüűvwxyz"/>
+<l:gentext key="uppercase.alpha" text="AÃBCDEÉFGHIÃJKLMNOÓÖÅPQRSTUÚÜŰVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="»"/>
+<l:dingbat key="nestedendquote" text="«"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="last-first"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="%n. függelék - %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%n. fejezet - %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%n. egyenlet - %t"/>
+<l:template name="example" text="%n. példa - %t"/>
+<l:template name="figure" text="%n. ábra - %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%n. rész - %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Eljárás %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Elemcsoport %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="%n. táblázat - %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="%n. függelék - %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%n. fejezet - %t"/>
+<l:template name="part" text="%n. rész - %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="„%tâ€"/>
+<l:template name="refsection" text="„%tâ€"/>
+<l:template name="refsect1" text="„%tâ€"/>
+<l:template name="refsect2" text="„%tâ€"/>
+<l:template name="refsect3" text="„%tâ€"/>
+<l:template name="sect1" text="„%tâ€"/>
+<l:template name="sect2" text="„%tâ€"/>
+<l:template name="sect3" text="„%tâ€"/>
+<l:template name="sect4" text="„%tâ€"/>
+<l:template name="sect5" text="„%tâ€"/>
+<l:template name="section" text="„%tâ€"/>
+<l:template name="simplesect" text="„%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="%n. függelék"/>
+<l:template name="bridgehead" text="Szakasz %n"/>
+<l:template name="chapter" text="%n. fejezet"/>
+<l:template name="equation" text="Egyenlet %n"/>
+<l:template name="example" text="%n. példa"/>
+<l:template name="figure" text="%n. ábra"/>
+<l:template name="part" text="%n. rész"/>
+<l:template name="procedure" text="Eljárás %n"/>
+<l:template name="productionset" text="Elemcsoport %n"/>
+<l:template name="qandadiv" text="K és V %n"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="sect1" text="%n. szakasz"/>
+<l:template name="sect2" text="%n. szakasz"/>
+<l:template name="sect3" text="%n. szakasz"/>
+<l:template name="sect4" text="%n. szakasz"/>
+<l:template name="sect5" text="%n. szakasz"/>
+<l:template name="section" text="%n. szakasz"/>
+<l:template name="table" text="Táblázat %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="%n. függelék - %t"/>
+<l:template name="bridgehead" text="Szakasz %n, „%tâ€"/>
+<l:template name="chapter" text="%n. fejezet - %t"/>
+<l:template name="equation" text="Egyenlet %n, „%tâ€"/>
+<l:template name="example" text="%n. példa - %t"/>
+<l:template name="figure" text="%n. ábra - %t"/>
+<l:template name="part" text="%n. rész - %t"/>
+<l:template name="procedure" text="Eljárás %n, „%tâ€"/>
+<l:template name="productionset" text="Elemcsoport %n, „%tâ€"/>
+<l:template name="qandadiv" text="K és V %n, „%tâ€"/>
+<l:template name="refsect1" text="„%tâ€"/>
+<l:template name="refsect2" text="„%tâ€"/>
+<l:template name="refsect3" text="„%tâ€"/>
+<l:template name="refsection" text="„%tâ€"/>
+<l:template name="sect1" text="%n. szakasz - %t"/>
+<l:template name="sect2" text="%n. szakasz - %t"/>
+<l:template name="sect3" text="%n. szakasz - %t"/>
+<l:template name="sect4" text="%n. szakasz - %t"/>
+<l:template name="sect5" text="%n. szakasz - %t"/>
+<l:template name="section" text="%n. szakasz - %t"/>
+<l:template name="simplesect" text="„%tâ€"/>
+<l:template name="table" text="%n. táblázat - %t"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" és "/>
+<l:template name="seplast" text=", és "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Lásd %t."/>
+<l:template name="seealso" text="Lásd még %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Célközönség: "/>
+<l:template name="MsgLevel" text="Szint: "/>
+<l:template name="MsgOrig" text="Eredet: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="január"/>
+<l:template name="February" text="február"/>
+<l:template name="March" text="március"/>
+<l:template name="April" text="április"/>
+<l:template name="May" text="május"/>
+<l:template name="June" text="június"/>
+<l:template name="July" text="július"/>
+<l:template name="August" text="augusztus"/>
+<l:template name="September" text="szeptember"/>
+<l:template name="October" text="október"/>
+<l:template name="November" text="november"/>
+<l:template name="December" text="december"/>
+<l:template name="Monday" text="hétfő"/>
+<l:template name="Tuesday" text="kedd"/>
+<l:template name="Wednesday" text="szerda"/>
+<l:template name="Thursday" text="csütörtök"/>
+<l:template name="Friday" text="péntek"/>
+<l:template name="Saturday" text="szombat"/>
+<l:template name="Sunday" text="vasárnap"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="már"/>
+<l:template name="Apr" text="ápr"/>
+<l:template name="May" text="máj"/>
+<l:template name="Jun" text="jún"/>
+<l:template name="Jul" text="júl"/>
+<l:template name="Aug" text="aug"/>
+<l:template name="Sep" text="szep"/>
+<l:template name="Oct" text="okt"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="hfő"/>
+<l:template name="Tue" text="ked"/>
+<l:template name="Wed" text="sze"/>
+<l:template name="Thu" text="csü"/>
+<l:template name="Fri" text="pén"/>
+<l:template name="Sat" text="szo"/>
+<l:template name="Sun" text="vas"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040e Hungarian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Jelzések</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="160">Ö</l:l>
+<l:l i="160">ö</l:l>
+<l:l i="160">Å</l:l>
+<l:l i="160">Å‘</l:l>
+<l:l i="170">P</l:l>
+<l:l i="170">p</l:l>
+<l:l i="180">Q</l:l>
+<l:l i="180">q</l:l>
+<l:l i="190">R</l:l>
+<l:l i="190">r</l:l>
+<l:l i="200">S</l:l>
+<l:l i="200">s</l:l>
+<l:l i="210">T</l:l>
+<l:l i="210">t</l:l>
+<l:l i="220">U</l:l>
+<l:l i="220">u</l:l>
+<l:l i="220">Ú</l:l>
+<l:l i="220">ú</l:l>
+<l:l i="230">Ü</l:l>
+<l:l i="230">ü</l:l>
+<l:l i="230">Å°</l:l>
+<l:l i="230">ű</l:l>
+<l:l i="240">V</l:l>
+<l:l i="240">v</l:l>
+<l:l i="250">W</l:l>
+<l:l i="250">w</l:l>
+<l:l i="260">X</l:l>
+<l:l i="260">x</l:l>
+<l:l i="270">Y</l:l>
+<l:l i="270">y</l:l>
+<l:l i="280">Z</l:l>
+<l:l i="280">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml
new file mode 100644
index 0000000..b730ad8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="id" english-language-name="Indonesian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/id.xml -->
+<!-- * -->
+<!-- * E-mail the edited id.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrak"/>
+<l:gentext key="abstract" text="abstrak"/>
+<l:gentext key="Acknowledgements" text="Penghargaan"/>
+<l:gentext key="acknowledgements" text="penghargaan"/>
+<l:gentext key="Answer" text="Jawab:"/>
+<l:gentext key="answer" text="jawab:"/>
+<l:gentext key="Appendix" text="Lampiran"/>
+<l:gentext key="appendix" text="lampiran"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="artikel"/>
+<l:gentext key="Author" text="Penulis"/>
+<l:gentext key="Bibliography" text="Bibliografi"/>
+<l:gentext key="bibliography" text="bibliografi"/>
+<l:gentext key="Book" text="Buku"/>
+<l:gentext key="book" text="buku"/>
+<l:gentext key="CAUTION" text="PERHATIAN"/>
+<l:gentext key="Caution" text="Perhatian"/>
+<l:gentext key="caution" text="perhatian"/>
+<l:gentext key="Chapter" text="Bab"/>
+<l:gentext key="chapter" text="bab"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Hak Cipta"/>
+<l:gentext key="copyright" text="hak cipta"/>
+<l:gentext key="Dedication" text="Dedikasi"/>
+<l:gentext key="dedication" text="dedikasi"/>
+<l:gentext key="Edition" text="Edisi"/>
+<l:gentext key="edition" text="edisi"/>
+<l:gentext key="Editor" text="Penyunting"/>
+<l:gentext key="Equation" text="Persamaan"/>
+<l:gentext key="equation" text="persamaan"/>
+<l:gentext key="Example" text="Contoh"/>
+<l:gentext key="example" text="contoh"/>
+<l:gentext key="Figure" text="Gambar"/>
+<l:gentext key="figure" text="gambar"/>
+<l:gentext key="Glossary" text="Daftar Istilah"/>
+<l:gentext key="glossary" text="daftar istilah"/>
+<l:gentext key="GlossSee" text="Lihat"/>
+<l:gentext key="glosssee" text="lihat"/>
+<l:gentext key="GlossSeeAlso" text="Lihat Juga"/>
+<l:gentext key="glossseealso" text="lihat juga"/>
+<l:gentext key="IMPORTANT" text="PENTING"/>
+<l:gentext key="important" text="penting"/>
+<l:gentext key="Important" text="Penting"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Aspek Hukum"/>
+<l:gentext key="legalnotice" text="aspek hukum"/>
+<l:gentext key="MsgAud" text="Pemirsa"/>
+<l:gentext key="msgaud" text="pemirsa"/>
+<l:gentext key="MsgLevel" text="Tingkatan"/>
+<l:gentext key="msglevel" text="tingkatan"/>
+<l:gentext key="MsgOrig" text="Asal"/>
+<l:gentext key="msgorig" text="asal"/>
+<l:gentext key="NOTE" text="CATATAN"/>
+<l:gentext key="Note" text="Catatan"/>
+<l:gentext key="note" text="catatan"/>
+<l:gentext key="Part" text="Bagian"/>
+<l:gentext key="part" text="bagian"/>
+<l:gentext key="Preface" text="Kata Pengantar"/>
+<l:gentext key="preface" text="kata pengantar"/>
+<l:gentext key="Procedure" text="Prosedur"/>
+<l:gentext key="procedure" text="Prosedur"/>
+<l:gentext key="ProductionSet" text="produksi"/>
+<l:gentext key="PubDate" text="Tanggal Publikasi"/>
+<l:gentext key="pubdate" text="tanggal publikasi"/>
+<l:gentext key="Published" text="Diterbitkan"/>
+<l:gentext key="published" text="diterbitkan"/>
+<l:gentext key="Publisher" text="Penerbit"/>
+<l:gentext key="Qandadiv" text="Tanya dan Jawab"/>
+<l:gentext key="qandadiv" text="Tanya dan Jawab"/>
+<l:gentext key="QandASet" text="Pertanyaan yang Sering Diajukan"/>
+<l:gentext key="Question" text="Tanya:"/>
+<l:gentext key="question" text="Tanya:"/>
+<l:gentext key="RefEntry" text="Halaman"/>
+<l:gentext key="refentry" text="halaman"/>
+<l:gentext key="Reference" text="Rujukan"/>
+<l:gentext key="reference" text="Rujukan"/>
+<l:gentext key="References" text="Rujukan-rujukan"/>
+<l:gentext key="RefName" text="Nama"/>
+<l:gentext key="refname" text="Nama"/>
+<l:gentext key="RefSection" text="Bagian"/>
+<l:gentext key="refsection" text="bagian"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+<l:gentext key="refsynopsisdiv" text="Sinopsis"/>
+<l:gentext key="RevHistory" text="Riwayat Revisi"/>
+<l:gentext key="revhistory" text="ciwayat revisi"/>
+<l:gentext key="revision" text="revisi"/>
+<l:gentext key="Revision" text="Revisi"/>
+<l:gentext key="sect1" text="Bagian"/>
+<l:gentext key="sect2" text="Bagian"/>
+<l:gentext key="sect3" text="Bagian"/>
+<l:gentext key="sect4" text="Bagian"/>
+<l:gentext key="sect5" text="Bagian"/>
+<l:gentext key="section" text="bagian"/>
+<l:gentext key="Section" text="Bagian"/>
+<l:gentext key="see" text="lihat"/>
+<l:gentext key="See" text="Lihat"/>
+<l:gentext key="seealso" text="lihat juga"/>
+<l:gentext key="Seealso" text="Lihat juga"/>
+<l:gentext key="SeeAlso" text="Lihat Juga"/>
+<l:gentext key="set" text="set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="indeks set"/>
+<l:gentext key="SetIndex" text="Indeks Set"/>
+<l:gentext key="Sidebar" text="Panel Sisi"/>
+<l:gentext key="sidebar" text="panel sisi"/>
+<l:gentext key="step" text="tahap"/>
+<l:gentext key="Step" text="Tahap"/>
+<l:gentext key="table" text="Tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="tugas"/>
+<l:gentext key="Task" text="Tugas"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Awas"/>
+<l:gentext key="warning" text="Awas"/>
+<l:gentext key="WARNING" text="AWAS"/>
+<l:gentext key="and" text="dan"/>
+<l:gentext key="by" text="oleh"/>
+<l:gentext key="Edited" text="Disunting"/>
+<l:gentext key="edited" text="disunting"/>
+<l:gentext key="Editedby" text="Disunting oleh"/>
+<l:gentext key="editedby" text="disunting oleh"/>
+<l:gentext key="in" text="di"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Catatan"/>
+<l:gentext key="Notes" text="catatan"/>
+<l:gentext key="Pgs" text="Hal."/>
+<l:gentext key="pgs" text="hal."/>
+<l:gentext key="Revisedby" text="Direvisi oleh: "/>
+<l:gentext key="revisedby" text="direvisi oleh: "/>
+<l:gentext key="TableNotes" text="Catatan"/>
+<l:gentext key="tablenotes" text="catatan"/>
+<l:gentext key="TableofContents" text="Daftar Isi"/>
+<l:gentext key="tableofcontents" text="daftar isi"/>
+<l:gentext key="unexpectedelementname" text="Nama elemen tak terduga"/>
+<l:gentext key="unsupported" text="tidak didukung"/>
+<l:gentext key="xrefto" text="xref ke"/>
+<l:gentext key="Authors" text="Penulis"/>
+<l:gentext key="copyeditor" text="Pemeriksa Naskah"/>
+<l:gentext key="graphicdesigner" text="Perancang Grafis"/>
+<l:gentext key="productioneditor" text="Penyunting Produksi"/>
+<l:gentext key="technicaleditor" text="Penyunting Teknis"/>
+<l:gentext key="translator" text="Penerjemah"/>
+<l:gentext key="listofequations" text="daftar persamaan"/>
+<l:gentext key="ListofEquations" text="Daftar Persamaan"/>
+<l:gentext key="ListofExamples" text="Daftar Contoh"/>
+<l:gentext key="listofexamples" text="daftar contoh"/>
+<l:gentext key="ListofFigures" text="Daftar Gambar"/>
+<l:gentext key="listoffigures" text="daftar gambar"/>
+<l:gentext key="ListofProcedures" text="Daftar Prosedur"/>
+<l:gentext key="listofprocedures" text="daftar prosedur"/>
+<l:gentext key="listoftables" text="daftar tabel"/>
+<l:gentext key="ListofTables" text="Daftar Tabel"/>
+<l:gentext key="ListofUnknown" text="Daftar Tidak Dikenal"/>
+<l:gentext key="listofunknown" text="daftar tidak dikenal"/>
+<l:gentext key="nav-home" text="Depan"/>
+<l:gentext key="nav-next" text="Lanjut"/>
+<l:gentext key="nav-next-sibling" text="Lompat ke Depan"/>
+<l:gentext key="nav-prev" text="Sebelumnya"/>
+<l:gentext key="nav-prev-sibling" text="Lompat ke Belakang"/>
+<l:gentext key="nav-up" text="Induk"/>
+<l:gentext key="nav-toc" text="Daftar Isi"/>
+<l:gentext key="Draft" text="Draf"/>
+<l:gentext key="above" text="di atas"/>
+<l:gentext key="below" text="di bawah"/>
+<l:gentext key="sectioncalled" text="bagian bernama"/>
+<l:gentext key="index symbols" text="Simbol"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Lampiran %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Bab %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Persamaan %n. %t"/>
+<l:template name="example" text="Contoh %n. %t"/>
+<l:template name="figure" text="Gambar %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Bagian %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="produksi %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Lampiran %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Bab %n. %t"/>
+<l:template name="part" text="Bagian %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Jawab: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Tanya: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Tanya: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" di %o"/>
+<l:template name="olink.page.citation" text=" (halaman %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(halaman %p)"/>
+<l:template name="docname" text=" di %o"/>
+<l:template name="docnamelong" text=" pada dokumen berjudul %o"/>
+<l:template name="pageabbrev" text="(h. %p)"/>
+<l:template name="Page" text="Halaman %p"/>
+<l:template name="bridgehead" text="bagian bernama “%tâ€"/>
+<l:template name="refsection" text="bagian bernama “%tâ€"/>
+<l:template name="refsect1" text="bagian bernama “%tâ€"/>
+<l:template name="refsect2" text="bagian bernama “%tâ€"/>
+<l:template name="refsect3" text="bagian bernama “%tâ€"/>
+<l:template name="sect1" text="bagian bernama “%tâ€"/>
+<l:template name="sect2" text="bagian bernama “%tâ€"/>
+<l:template name="sect3" text="bagian bernama “%tâ€"/>
+<l:template name="sect4" text="bagian bernama “%tâ€"/>
+<l:template name="sect5" text="bagian bernama “%tâ€"/>
+<l:template name="section" text="bagian bernama “%tâ€"/>
+<l:template name="simplesect" text="bagian bernama “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Jawab: %n"/>
+<l:template name="appendix" text="Lampiran %n"/>
+<l:template name="bridgehead" text="Bagian %n"/>
+<l:template name="chapter" text="Bab %n"/>
+<l:template name="equation" text="Persamaan %n"/>
+<l:template name="example" text="Contoh %n"/>
+<l:template name="figure" text="Gambar %n"/>
+<l:template name="part" text="Bagian %n"/>
+<l:template name="procedure" text="Prosedur %n"/>
+<l:template name="productionset" text="produksi %n"/>
+<l:template name="qandadiv" text="Tanya dan Jawab %n"/>
+<l:template name="qandaentry" text="Tanya: %n"/>
+<l:template name="question" text="Tanya: %n"/>
+<l:template name="sect1" text="Bagian %n"/>
+<l:template name="sect2" text="Bagian %n"/>
+<l:template name="sect3" text="Bagian %n"/>
+<l:template name="sect4" text="Bagian %n"/>
+<l:template name="sect5" text="Bagian %n"/>
+<l:template name="section" text="Bagian %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Lampiran %n, %t"/>
+<l:template name="bridgehead" text="Bagian %n, “%tâ€"/>
+<l:template name="chapter" text="Bab %n, %t"/>
+<l:template name="equation" text="Persamaan %n, “%tâ€"/>
+<l:template name="example" text="Contoh %n, “%tâ€"/>
+<l:template name="figure" text="Gambar %n, “%tâ€"/>
+<l:template name="part" text="Bagian %n, “%tâ€"/>
+<l:template name="procedure" text="Prosedur %n, “%tâ€"/>
+<l:template name="productionset" text="produksi %n, “%tâ€"/>
+<l:template name="qandadiv" text="Tanya dan Jawab %n, “%tâ€"/>
+<l:template name="refsect1" text="bagian bernama “%tâ€"/>
+<l:template name="refsect2" text="bagian bernama “%tâ€"/>
+<l:template name="refsect3" text="bagian bernama “%tâ€"/>
+<l:template name="refsection" text="bagian bernama “%tâ€"/>
+<l:template name="sect1" text="Bagian %n, “%tâ€"/>
+<l:template name="sect2" text="Bagian %n, “%tâ€"/>
+<l:template name="sect3" text="Bagian %n, “%tâ€"/>
+<l:template name="sect4" text="Bagian %n, “%tâ€"/>
+<l:template name="sect5" text="Bagian %n, “%tâ€"/>
+<l:template name="section" text="Bagian %n, “%tâ€"/>
+<l:template name="simplesect" text="bagian bernama “%tâ€"/>
+<l:template name="table" text="Tabel %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" dan "/>
+<l:template name="seplast" text=", dan "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Lihat %t."/>
+<l:template name="seealso" text="Lihat Juga %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Pemirsa: "/>
+<l:template name="MsgLevel" text="Tingkatan: "/>
+<l:template name="MsgOrig" text="Asal: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januari"/>
+<l:template name="February" text="Februari"/>
+<l:template name="March" text="Maret"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Mei"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="Agustus"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="Desember"/>
+<l:template name="Monday" text="Senin"/>
+<l:template name="Tuesday" text="Selasa"/>
+<l:template name="Wednesday" text="Rabu"/>
+<l:template name="Thursday" text="Kamis"/>
+<l:template name="Friday" text="Jumat"/>
+<l:template name="Saturday" text="Sabtu"/>
+<l:template name="Sunday" text="Ahad"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mei"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Des"/>
+<l:template name="Mon" text="Sen"/>
+<l:template name="Tue" text="Sel"/>
+<l:template name="Wed" text="Rab"/>
+<l:template name="Thu" text="Kam"/>
+<l:template name="Fri" text="Jum"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Aha"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0421 Bahasa Indonesia (INDONESIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simbol</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl
new file mode 100644
index 0000000..66bcf41
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl
@@ -0,0 +1,111 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: insertfile.xsl 5262 2005-10-12 14:58:42Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="textdata.default.encoding"></xsl:param>
+
+<!-- * This stylesheet makes a copy of a source tree, replacing all -->
+<!-- * instances of the following with corresponding Xinclude instances -->
+<!-- * in the result tree. -->
+<!-- * -->
+<!-- * <textobject><textdata fileref="foo.txt"> -->
+<!-- * <imagedata format="linespecific" fileref="foo.txt"> -->
+<!-- * <inlinegraphic format="linespecific" fileref="foo.txt"> -->
+<!-- * -->
+<!-- * Those become: -->
+<!-- * -->
+<!-- * <xi:include href="foo.txt" parse="text"/> -->
+<!-- * -->
+<!-- * It also works as expected with entityref in place of fileref, -->
+<!-- * and copies over the value of the <textdata>“encoding†atrribute (if -->
+<!-- * found). It is basically intended as an alternative to using the -->
+<!-- * DocBook XSLT Java insertfile() extension. -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="get.external.filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="textobject[child::textdata[@entityref|@fileref]]">
+ <xsl:apply-templates select="textdata"/>
+</xsl:template>
+
+<xsl:template match="textdata[@entityref|@fileref]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="get.external.filename"/>
+ </xsl:variable>
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="@encoding">
+ <xsl:value-of select="@encoding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$textdata.default.encoding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xi:include href="{$filename}" parse="text" encoding="{$encoding}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template
+ match="inlinemediaobject
+ [child::imageobject
+ [child::imagedata
+ [@format = 'linespecific' and
+ (@entityref|@fileref)]]]">
+ <xsl:apply-templates select="imageobject/imagedata"/>
+</xsl:template>
+
+<xsl:template match="imagedata
+ [@format = 'linespecific' and
+ (@entityref|@fileref)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="get.external.filename"/>
+ </xsl:variable>
+ <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encoding}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="inlinegraphic
+ [@format = 'linespecific' and
+ (@entityref|@fileref)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="get.external.filename"/>
+ </xsl:variable>
+ <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encoding}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * copy everything else into result tree as-is -->
+<xsl:template match="node() | @*">
+ <xsl:copy>
+ <xsl:apply-templates select="@* | node()"/>
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml
new file mode 100644
index 0000000..6a5b07f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml
@@ -0,0 +1,672 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="is" english-language-name="Icelandic">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/is.xml -->
+<!-- * -->
+<!-- * E-mail the edited is.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Ãgrip"/>
+<l:gentext key="abstract" text="ágrip"/>
+<l:gentext key="Acknowledgements" text="Þakkarorð"/>
+<l:gentext key="acknowledgements" text="þakkarorð"/>
+<l:gentext key="Answer" text="Svar"/>
+<l:gentext key="answer" text="svar"/>
+<l:gentext key="Appendix" text="Viðauki"/>
+<l:gentext key="appendix" text="viðauki"/>
+<l:gentext key="Article" text="Grein"/>
+<l:gentext key="article" text="grein"/>
+<l:gentext key="Author" text="Höfundur"/>
+<l:gentext key="Bibliography" text="Heimildaskrá"/>
+<l:gentext key="bibliography" text="heimildaskrá"/>
+<l:gentext key="Book" text="Bók"/>
+<l:gentext key="book" text="bók"/>
+<l:gentext key="CAUTION" text="ATH"/>
+<l:gentext key="Caution" text="Athugið"/>
+<l:gentext key="caution" text="athugið"/>
+<l:gentext key="Chapter" text="Kafli"/>
+<l:gentext key="chapter" text="kafli"/>
+<l:gentext key="Colophon" text="Útgáfuupplýsingar"/>
+<l:gentext key="colophon" text="Útgáfuupplýsingar"/>
+<l:gentext key="Copyright" text="Höfundaréttur"/>
+<l:gentext key="copyright" text="höfundaréttur"/>
+<l:gentext key="Dedication" text="Tileinkun"/>
+<l:gentext key="dedication" text="tileinkun"/>
+<l:gentext key="Edition" text="Útgáfa"/>
+<l:gentext key="edition" text="útgáfa"/>
+<l:gentext key="Editor" text="Ritstjórn"/>
+<l:gentext key="Equation" text="Formúla"/>
+<l:gentext key="equation" text="formúla"/>
+<l:gentext key="Example" text="Dæmi"/>
+<l:gentext key="example" text="dæmi"/>
+<l:gentext key="Figure" text="Skýringamynd"/>
+<l:gentext key="figure" text="skýringamynd"/>
+<l:gentext key="Glossary" text="Orðalisti"/>
+<l:gentext key="glossary" text="orðalisti"/>
+<l:gentext key="GlossSee" text="Sjá"/>
+<l:gentext key="glosssee" text="sjá"/>
+<l:gentext key="GlossSeeAlso" text="Sjá einnig"/>
+<l:gentext key="glossseealso" text="sjá einnig"/>
+<l:gentext key="IMPORTANT" text="MIKILVÆGT"/>
+<l:gentext key="important" text="mikilvægt"/>
+<l:gentext key="Important" text="Mikilvægt"/>
+<l:gentext key="Index" text="Atriðaskrá"/>
+<l:gentext key="index" text="atriðaskrá"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Lagalegur fyrirvari"/>
+<l:gentext key="legalnotice" text="lagalegur fyrirvari"/>
+<l:gentext key="MsgAud" text="Markhópur"/>
+<l:gentext key="msgaud" text="markhópur"/>
+<l:gentext key="MsgLevel" text="Stig"/>
+<l:gentext key="msglevel" text="stig"/>
+<l:gentext key="MsgOrig" text="Uppruni"/>
+<l:gentext key="msgorig" text="uppruni"/>
+<l:gentext key="NOTE" text="ATHUGASEMD"/>
+<l:gentext key="Note" text="Athugasemd"/>
+<l:gentext key="note" text="athugasemd"/>
+<l:gentext key="Part" text="Hluti"/>
+<l:gentext key="part" text="hluti"/>
+<l:gentext key="Preface" text="Formáli"/>
+<l:gentext key="preface" text="formáli"/>
+<l:gentext key="Procedure" text="Vinnuferli"/>
+<l:gentext key="procedure" text="vinnuferli"/>
+<l:gentext key="ProductionSet" text="Framleiðsla"/>
+<l:gentext key="PubDate" text="Birtingardagur"/>
+<l:gentext key="pubdate" text="birtingardagur"/>
+<l:gentext key="Published" text="Útgefið"/>
+<l:gentext key="published" text="útgefið"/>
+<l:gentext key="Publisher" text="Útgefandi"/>
+<l:gentext key="Qandadiv" text="Spurning og svör"/>
+<l:gentext key="qandadiv" text="spurning og svör"/>
+<l:gentext key="QandASet" text="Algengar Spurningar"/>
+<l:gentext key="Question" text="Spurning"/>
+<l:gentext key="question" text="spurning"/>
+<l:gentext key="RefEntry" text="Færsla"/>
+<l:gentext key="refentry" text="færsla"/>
+<l:gentext key="Reference" text="Heimild"/>
+<l:gentext key="reference" text="heimild"/>
+<l:gentext key="References" text="Heimildir"/>
+<l:gentext key="RefName" text="Heiti"/>
+<l:gentext key="refname" text="heiti"/>
+<l:gentext key="RefSection" text="Grein"/>
+<l:gentext key="refsection" text="grein"/>
+<l:gentext key="RefSynopsisDiv" text="Samantekt"/>
+<l:gentext key="refsynopsisdiv" text="samantekt"/>
+<l:gentext key="RevHistory" text="Yfirferðarferill"/>
+<l:gentext key="revhistory" text="yfirferðarferill"/>
+<l:gentext key="revision" text="yfirfarið"/>
+<l:gentext key="Revision" text="Yfirfarið"/>
+<l:gentext key="sect1" text="grein"/>
+<l:gentext key="sect2" text="grein"/>
+<l:gentext key="sect3" text="grein"/>
+<l:gentext key="sect4" text="grein"/>
+<l:gentext key="sect5" text="grein"/>
+<l:gentext key="section" text="grein"/>
+<l:gentext key="Section" text="Grein"/>
+<l:gentext key="see" text="sjá"/>
+<l:gentext key="See" text="Sjá"/>
+<l:gentext key="seealso" text="sjá einnig"/>
+<l:gentext key="Seealso" text="Sjá einnig"/>
+<l:gentext key="SeeAlso" text="Sjá einnig"/>
+<l:gentext key="set" text="setja"/>
+<l:gentext key="Set" text="Setja"/>
+<l:gentext key="setindex" text="stilla yfirlit"/>
+<l:gentext key="SetIndex" text="Stilla yfirlit"/>
+<l:gentext key="Sidebar" text="Hliðarslá"/>
+<l:gentext key="sidebar" text="hliðarslá"/>
+<l:gentext key="step" text="skref"/>
+<l:gentext key="Step" text="Skref"/>
+<l:gentext key="table" text="tafla"/>
+<l:gentext key="Table" text="Tafla"/>
+<l:gentext key="task" text="Verk"/>
+<l:gentext key="Task" text="verk"/>
+<l:gentext key="tip" text="ábending"/>
+<l:gentext key="TIP" text="ÃBENDING"/>
+<l:gentext key="Tip" text="Ãbending"/>
+<l:gentext key="Warning" text="Aðvörun"/>
+<l:gentext key="warning" text="aðvörun"/>
+<l:gentext key="WARNING" text="AÄVÖRUN"/>
+<l:gentext key="and" text="og"/>
+<l:gentext key="by" text="af"/>
+<l:gentext key="Edited" text="Ritstýrt"/>
+<l:gentext key="edited" text="ritstýrt"/>
+<l:gentext key="Editedby" text="Ritstýrt af"/>
+<l:gentext key="editedby" text="ritstýrt af"/>
+<l:gentext key="in" text="í"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="athugasemdir"/>
+<l:gentext key="Notes" text="Athugasemdir"/>
+<l:gentext key="Pgs" text="Bls."/>
+<l:gentext key="pgs" text="bls."/>
+<l:gentext key="Revisedby" text="Yfirfarið af: "/>
+<l:gentext key="revisedby" text="yfirfarið af: "/>
+<l:gentext key="TableNotes" text="athugasemdir"/>
+<l:gentext key="tablenotes" text="Athugasemdir"/>
+<l:gentext key="TableofContents" text="Efnisyfirlit"/>
+<l:gentext key="tableofcontents" text="efnisyfirlit"/>
+<l:gentext key="unexpectedelementname" text="óvænt heiti á einingu"/>
+<l:gentext key="unsupported" text="óstutt"/>
+<l:gentext key="xrefto" text="xref í"/>
+<l:gentext key="Authors" text="Höfundar"/>
+<l:gentext key="copyeditor" text=""/>
+<l:gentext key="graphicdesigner" text=""/>
+<l:gentext key="productioneditor" text=""/>
+<l:gentext key="technicaleditor" text=""/>
+<l:gentext key="translator" text="þýðandi"/>
+<l:gentext key="listofequations" text="yfirlit yfir formúlur"/>
+<l:gentext key="ListofEquations" text="Yfirlit yfir formúlur"/>
+<l:gentext key="ListofExamples" text="Yfirlit yfir dæmi"/>
+<l:gentext key="listofexamples" text="yfirlit yfir dæmi"/>
+<l:gentext key="ListofFigures" text="Yfirlit yfir myndir"/>
+<l:gentext key="listoffigures" text="yfirlit yfir myndir"/>
+<l:gentext key="ListofProcedures" text="Yfirlit yfir verklag"/>
+<l:gentext key="listofprocedures" text="yfirlit yfir verklag"/>
+<l:gentext key="listoftables" text="yfirlit yfir töflur"/>
+<l:gentext key="ListofTables" text="Yfirlit yfir töflur"/>
+<l:gentext key="ListofUnknown" text="Yfirlit yfir óskilgreint"/>
+<l:gentext key="listofunknown" text="yfirlit yfir óskilgreint"/>
+<l:gentext key="nav-home" text="Heim"/>
+<l:gentext key="nav-next" text="Næsta"/>
+<l:gentext key="nav-next-sibling" text=""/>
+<l:gentext key="nav-prev" text="Fyrra"/>
+<l:gentext key="nav-prev-sibling" text=""/>
+<l:gentext key="nav-up" text="Upp"/>
+<l:gentext key="nav-toc" text="Efnisyfirlit"/>
+<l:gentext key="Draft" text="Uppkast"/>
+<l:gentext key="above" text="ofan"/>
+<l:gentext key="below" text="neðar"/>
+<l:gentext key="sectioncalled" text=""/>
+<l:gentext key="index symbols" text="tákn"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aábdðeéfghiíjklmnoóprstuúvxyýþæö"/>
+<l:gentext key="uppercase.alpha" text="AÃBDÄEÉFGHIÃJKLMNOÓPRSTUÚVXYÃÞÆÖ"/>
+<l:gentext key="normalize.sort.input" text="AaÃáBbCcDdÄðEeÉéFfGgHhIiÃíJjKkLlMmNnOoÓóPpQqRrSsTtUuÚúVvWwXxYyÃýZzÞþÆæÖö"/>
+<l:gentext key="normalize.sort.output" text="AAÃÃBBCCDDÄÄEEÉÉFFGGHHIIÃÃJJKKLLMMNNOOÓÓPPQQRRSSTTUUÚÚVVWWXXYYÃÃZZÞÞÆÆÖÖ"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Viðauki %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kafli %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Formúla %n. %t"/>
+<l:template name="example" text="Dæmi %n. %t"/>
+<l:template name="figure" text="Skýringamynd %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Hluti %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Vinnuferli %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Framleiðsla %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tafla %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Viðauki %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kafli %n. %t"/>
+<l:template name="part" text="Hluti %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Spurning %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spurning %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(blaðsíða %p)"/>
+<l:template name="docname" text=" í %o"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(bls. %p)"/>
+<l:template name="Page" text="Blaðsíða %p"/>
+<l:template name="bridgehead" text=" “%tâ€"/>
+<l:template name="refsection" text=" “%tâ€"/>
+<l:template name="refsect1" text=" “%tâ€"/>
+<l:template name="refsect2" text=" “%tâ€"/>
+<l:template name="refsect3" text=" “%tâ€"/>
+<l:template name="sect1" text=" “%tâ€"/>
+<l:template name="sect2" text=" “%tâ€"/>
+<l:template name="sect3" text=" “%tâ€"/>
+<l:template name="sect4" text=" “%tâ€"/>
+<l:template name="sect5" text=" “%tâ€"/>
+<l:template name="section" text=" “%tâ€"/>
+<l:template name="simplesect" text=" “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="Viðauki %n"/>
+<l:template name="bridgehead" text="Grein %n"/>
+<l:template name="chapter" text="Kafli %n"/>
+<l:template name="equation" text="Formúla %n"/>
+<l:template name="example" text="Dæmi %n"/>
+<l:template name="figure" text="Skýringamynd %n"/>
+<l:template name="part" text="Hluti %n"/>
+<l:template name="procedure" text="Vinnuferli %n"/>
+<l:template name="productionset" text="Framleiðsla %n"/>
+<l:template name="qandadiv" text="Spurning og svör %n"/>
+<l:template name="qandaentry" text="Spurning %n"/>
+<l:template name="question" text="Spurning %n"/>
+<l:template name="sect1" text="Grein %n"/>
+<l:template name="sect2" text="Grein %n"/>
+<l:template name="sect3" text="Grein %n"/>
+<l:template name="sect4" text="Grein %n"/>
+<l:template name="sect5" text="Grein %n"/>
+<l:template name="section" text="Grein %n"/>
+<l:template name="table" text="Tafla %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Viðauki %n, %t"/>
+<l:template name="bridgehead" text="Grein %n, “%tâ€"/>
+<l:template name="chapter" text="Kafli %n, %t"/>
+<l:template name="equation" text="Formúla %n, “%tâ€"/>
+<l:template name="example" text="Dæmi %n, “%tâ€"/>
+<l:template name="figure" text="Skýringamynd %n, “%tâ€"/>
+<l:template name="part" text="Hluti %n, “%tâ€"/>
+<l:template name="procedure" text="Vinnuferli %n, “%tâ€"/>
+<l:template name="productionset" text="Framleiðsla %n, “%tâ€"/>
+<l:template name="qandadiv" text="Spurning og svör %n, “%tâ€"/>
+<l:template name="refsect1" text=" “%tâ€"/>
+<l:template name="refsect2" text=" “%tâ€"/>
+<l:template name="refsect3" text=" “%tâ€"/>
+<l:template name="refsection" text=" “%tâ€"/>
+<l:template name="sect1" text="Grein %n, “%tâ€"/>
+<l:template name="sect2" text="Grein %n, “%tâ€"/>
+<l:template name="sect3" text="Grein %n, “%tâ€"/>
+<l:template name="sect4" text="Grein %n, “%tâ€"/>
+<l:template name="sect5" text="Grein %n, “%tâ€"/>
+<l:template name="section" text="Grein %n, “%tâ€"/>
+<l:template name="simplesect" text=" “%tâ€"/>
+<l:template name="table" text="Tafla %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" og "/>
+<l:template name="seplast" text=", og "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Sjá %t."/>
+<l:template name="seealso" text="Sjá einnig %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Markhópur: "/>
+<l:template name="MsgLevel" text="Stig: "/>
+<l:template name="MsgOrig" text="Uppruni: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d-m-Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Janúar"/>
+<l:template name="February" text="Febrúar"/>
+<l:template name="March" text="Mars"/>
+<l:template name="April" text="Apríl"/>
+<l:template name="May" text="Maí"/>
+<l:template name="June" text="Júní"/>
+<l:template name="July" text="Júlí"/>
+<l:template name="August" text="Ãgúst"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Október"/>
+<l:template name="November" text="Nóvember"/>
+<l:template name="December" text="Desember"/>
+<l:template name="Monday" text="Mánudagur"/>
+<l:template name="Tuesday" text="Þriðjudagur"/>
+<l:template name="Wednesday" text="Miðvikudagur"/>
+<l:template name="Thursday" text="Fimmtudagur"/>
+<l:template name="Friday" text="Föstudagur"/>
+<l:template name="Saturday" text="Laugardagur"/>
+<l:template name="Sunday" text="Sunnudagur"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Maí"/>
+<l:template name="Jun" text="Jún"/>
+<l:template name="Jul" text="Júl"/>
+<l:template name="Aug" text="Ãgú"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nóv"/>
+<l:template name="Dec" text="Des"/>
+<l:template name="Mon" text="Mán"/>
+<l:template name="Tue" text="Þri"/>
+<l:template name="Wed" text="Mið"/>
+<l:template name="Thu" text="Fim"/>
+<l:template name="Fri" text="Fös"/>
+<l:template name="Sat" text="Lau"/>
+<l:template name="Sun" text="Sun"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040F Icelandic"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">tákn</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">Ã</l:l>
+<l:l i="20">á</l:l>
+<l:l i="30">B</l:l>
+<l:l i="30">b</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">Ä</l:l>
+<l:l i="50">ð</l:l>
+<l:l i="60">E</l:l>
+<l:l i="60">e</l:l>
+<l:l i="70">É</l:l>
+<l:l i="70">é</l:l>
+<l:l i="80">F</l:l>
+<l:l i="80">f</l:l>
+<l:l i="90">G</l:l>
+<l:l i="90">g</l:l>
+<l:l i="100">H</l:l>
+<l:l i="100">h</l:l>
+<l:l i="110">I</l:l>
+<l:l i="110">i</l:l>
+<l:l i="120">Ã</l:l>
+<l:l i="120">í</l:l>
+<l:l i="130">J</l:l>
+<l:l i="130">j</l:l>
+<l:l i="140">K</l:l>
+<l:l i="140">k</l:l>
+<l:l i="150">L</l:l>
+<l:l i="150">l</l:l>
+<l:l i="160">M</l:l>
+<l:l i="160">m</l:l>
+<l:l i="170">N</l:l>
+<l:l i="170">n</l:l>
+<l:l i="180">O</l:l>
+<l:l i="180">o</l:l>
+<l:l i="190">Ó</l:l>
+<l:l i="190">ó</l:l>
+<l:l i="200">P</l:l>
+<l:l i="200">p</l:l>
+<l:l i="210">R</l:l>
+<l:l i="210">r</l:l>
+<l:l i="220">S</l:l>
+<l:l i="220">s</l:l>
+<l:l i="230">T</l:l>
+<l:l i="230">t</l:l>
+<l:l i="240">U</l:l>
+<l:l i="240">u</l:l>
+<l:l i="250">Ú</l:l>
+<l:l i="250">ú</l:l>
+<l:l i="260">V</l:l>
+<l:l i="260">v</l:l>
+<l:l i="270">X</l:l>
+<l:l i="270">x</l:l>
+<l:l i="280">Y</l:l>
+<l:l i="280">y</l:l>
+<l:l i="290">Ã</l:l>
+<l:l i="290">ý</l:l>
+<l:l i="300">Þ</l:l>
+<l:l i="300">þ</l:l>
+<l:l i="310">Æ</l:l>
+<l:l i="310">æ</l:l>
+<l:l i="320">Ö</l:l>
+<l:l i="320">ö</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml
new file mode 100644
index 0000000..691e4d2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="it" english-language-name="Italian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/it.xml -->
+<!-- * -->
+<!-- * E-mail the edited it.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sommario"/>
+<l:gentext key="abstract" text="Sommario"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Risposta:"/>
+<l:gentext key="answer" text="Risposta:"/>
+<l:gentext key="Appendix" text="Appendice"/>
+<l:gentext key="appendix" text="Appendice"/>
+<l:gentext key="Article" text="Articolo"/>
+<l:gentext key="article" text="Articolo"/>
+<l:gentext key="Author" text="Autore"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="Libro"/>
+<l:gentext key="CAUTION" text="ATTENZIONE"/>
+<l:gentext key="Caution" text="Attenzione"/>
+<l:gentext key="caution" text="Attenzione"/>
+<l:gentext key="Chapter" text="Capitolo"/>
+<l:gentext key="chapter" text="Capitolo"/>
+<l:gentext key="Colophon" text="Colofone"/>
+<l:gentext key="colophon" text="Colofone"/>
+<l:gentext key="Copyright" text="Diritto d'autore"/>
+<l:gentext key="copyright" text="Diritto d'autore"/>
+<l:gentext key="Dedication" text="Dedica"/>
+<l:gentext key="dedication" text="Dedica"/>
+<l:gentext key="Edition" text="Edizione"/>
+<l:gentext key="edition" text="Edizione"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Equazione"/>
+<l:gentext key="equation" text="Equazione"/>
+<l:gentext key="Example" text="Esempio"/>
+<l:gentext key="example" text="Esempio"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="Figura"/>
+<l:gentext key="Glossary" text="Glossario"/>
+<l:gentext key="glossary" text="Glossario"/>
+<l:gentext key="GlossSee" text="Vedi"/>
+<l:gentext key="glosssee" text="Vedi"/>
+<l:gentext key="GlossSeeAlso" text="Vedi anche"/>
+<l:gentext key="glossseealso" text="Vedi anche"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="Importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Indice analitico"/>
+<l:gentext key="index" text="Indice analitico"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Nota Legale"/>
+<l:gentext key="legalnotice" text="Nota Legale"/>
+<l:gentext key="MsgAud" text="Pubblico"/>
+<l:gentext key="msgaud" text="Pubblico"/>
+<l:gentext key="MsgLevel" text="Livello"/>
+<l:gentext key="msglevel" text="Livello"/>
+<l:gentext key="MsgOrig" text="Origine"/>
+<l:gentext key="msgorig" text="Origine"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="Nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="Parte"/>
+<l:gentext key="Preface" text="Prefazione"/>
+<l:gentext key="preface" text="Prefazione"/>
+<l:gentext key="Procedure" text="Procedura"/>
+<l:gentext key="procedure" text="Procedura"/>
+<l:gentext key="ProductionSet" text="Produzione"/>
+<l:gentext key="PubDate" text="Data di pubblicazione"/>
+<l:gentext key="pubdate" text="Data di pubblicazione"/>
+<l:gentext key="Published" text="Pubblicato"/>
+<l:gentext key="published" text="Pubblicato"/>
+<l:gentext key="Publisher" text="Editore"/>
+<l:gentext key="Qandadiv" text="Domande e risposte"/>
+<l:gentext key="qandadiv" text="Domande e risposte"/>
+<l:gentext key="QandASet" text="Domande ricorrenti"/>
+<l:gentext key="Question" text="Domanda:"/>
+<l:gentext key="question" text="Domanda:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Riferimento"/>
+<l:gentext key="reference" text="Riferimento"/>
+<l:gentext key="References" text="Riferimenti"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="Nome"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinossi"/>
+<l:gentext key="refsynopsisdiv" text="Sinossi"/>
+<l:gentext key="RevHistory" text="Diario delle Revisioni"/>
+<l:gentext key="revhistory" text="Diario delle Revisioni"/>
+<l:gentext key="revision" text="Revisione"/>
+<l:gentext key="Revision" text="Revisione"/>
+<l:gentext key="sect1" text="Sezione"/>
+<l:gentext key="sect2" text="Sezione"/>
+<l:gentext key="sect3" text="Sezione"/>
+<l:gentext key="sect4" text="Sezione"/>
+<l:gentext key="sect5" text="Sezione"/>
+<l:gentext key="section" text="Sezione"/>
+<l:gentext key="Section" text="Sezione"/>
+<l:gentext key="see" text="vedi"/>
+<l:gentext key="See" text="Vedi"/>
+<l:gentext key="seealso" text="vedi anche"/>
+<l:gentext key="Seealso" text="Vedi anche"/>
+<l:gentext key="SeeAlso" text="Vedi Anche"/>
+<l:gentext key="set" text="Raccolta"/>
+<l:gentext key="Set" text="Raccolta"/>
+<l:gentext key="setindex" text="Indice della raccolta"/>
+<l:gentext key="SetIndex" text="Indice della raccolta"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="nota a margine"/>
+<l:gentext key="step" text="passo"/>
+<l:gentext key="Step" text="Passo"/>
+<l:gentext key="table" text="Tabella"/>
+<l:gentext key="Table" text="Tabella"/>
+<l:gentext key="task" text="Attività"/>
+<l:gentext key="Task" text="Attività"/>
+<l:gentext key="tip" text="Suggerimento"/>
+<l:gentext key="TIP" text="SUGGERIMENTO"/>
+<l:gentext key="Tip" text="Suggerimento"/>
+<l:gentext key="Warning" text="Avvertimento"/>
+<l:gentext key="warning" text="avvertimento"/>
+<l:gentext key="WARNING" text="AVVERTIMENTO"/>
+<l:gentext key="and" text="e"/>
+<l:gentext key="by" text="di"/>
+<l:gentext key="Edited" text="A cura"/>
+<l:gentext key="edited" text="A cura"/>
+<l:gentext key="Editedby" text="A cura di"/>
+<l:gentext key="editedby" text="A cura di"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Note"/>
+<l:gentext key="Notes" text="Note"/>
+<l:gentext key="Pgs" text="pp."/>
+<l:gentext key="pgs" text="pp."/>
+<l:gentext key="Revisedby" text="Revisionato da: "/>
+<l:gentext key="revisedby" text="Revisionato da: "/>
+<l:gentext key="TableNotes" text="Note"/>
+<l:gentext key="tablenotes" text="Note"/>
+<l:gentext key="TableofContents" text="Indice"/>
+<l:gentext key="tableofcontents" text="Indice"/>
+<l:gentext key="unexpectedelementname" text="Nome di elemento inatteso"/>
+<l:gentext key="unsupported" text="non supportato"/>
+<l:gentext key="xrefto" text="riferimento a"/>
+<l:gentext key="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="Correttore di bozze"/>
+<l:gentext key="graphicdesigner" text="Progettista grafico"/>
+<l:gentext key="productioneditor" text="Montatore"/>
+<l:gentext key="technicaleditor" text="Revisore tecnico"/>
+<l:gentext key="translator" text="Traduttore"/>
+<l:gentext key="listofequations" text="Lista delle equazioni"/>
+<l:gentext key="ListofEquations" text="Lista delle equazioni"/>
+<l:gentext key="ListofExamples" text="Lista degli esempi"/>
+<l:gentext key="listofexamples" text="Lista degli esempi"/>
+<l:gentext key="ListofFigures" text="Lista delle figure"/>
+<l:gentext key="listoffigures" text="Lista delle figure"/>
+<l:gentext key="ListofProcedures" text="Lista delle procedure"/>
+<l:gentext key="listofprocedures" text="Lista delle procedure"/>
+<l:gentext key="listoftables" text="Lista delle tabelle"/>
+<l:gentext key="ListofTables" text="Lista delle tabelle"/>
+<l:gentext key="ListofUnknown" text="Lista degli sconosciuti"/>
+<l:gentext key="listofunknown" text="Lista degli sconosciuti"/>
+<l:gentext key="nav-home" text="Partenza"/>
+<l:gentext key="nav-next" text="Avanti"/>
+<l:gentext key="nav-next-sibling" text="Salta Avanti"/>
+<l:gentext key="nav-prev" text="Indietro"/>
+<l:gentext key="nav-prev-sibling" text="Salta Indietro"/>
+<l:gentext key="nav-up" text="Risali"/>
+<l:gentext key="nav-toc" text="Sommario"/>
+<l:gentext key="Draft" text="Bozza"/>
+<l:gentext key="above" text="sopra"/>
+<l:gentext key="below" text="sotto"/>
+<l:gentext key="sectioncalled" text="sezione chiamata"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="“"/>
+<l:dingbat key="nestedendquote" text="â€"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capitolo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equazione %n. %t"/>
+<l:template name="example" text="Esempio %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produzione %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabella %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Capitolo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Risposta: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Domanda: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Domanda: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (pagina %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(pagina %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" nel documento dal titolo %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Pagina %p"/>
+<l:template name="bridgehead" text="sezione chiamata «%t»"/>
+<l:template name="refsection" text="sezione chiamata «%t»"/>
+<l:template name="refsect1" text="sezione chiamata «%t»"/>
+<l:template name="refsect2" text="sezione chiamata «%t»"/>
+<l:template name="refsect3" text="sezione chiamata «%t»"/>
+<l:template name="sect1" text="sezione chiamata «%t»"/>
+<l:template name="sect2" text="sezione chiamata «%t»"/>
+<l:template name="sect3" text="sezione chiamata «%t»"/>
+<l:template name="sect4" text="sezione chiamata «%t»"/>
+<l:template name="sect5" text="sezione chiamata «%t»"/>
+<l:template name="section" text="sezione chiamata «%t»"/>
+<l:template name="simplesect" text="sezione chiamata «%t»"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Risposta: %n"/>
+<l:template name="appendix" text="Appendice %n"/>
+<l:template name="bridgehead" text="Sezione %n"/>
+<l:template name="chapter" text="Capitolo %n"/>
+<l:template name="equation" text="Equazione %n"/>
+<l:template name="example" text="Esempio %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedura %n"/>
+<l:template name="productionset" text="Produzione %n"/>
+<l:template name="qandadiv" text="Domande e risposte %n"/>
+<l:template name="qandaentry" text="Domanda: %n"/>
+<l:template name="question" text="Domanda: %n"/>
+<l:template name="sect1" text="Sezione %n"/>
+<l:template name="sect2" text="Sezione %n"/>
+<l:template name="sect3" text="Sezione %n"/>
+<l:template name="sect4" text="Sezione %n"/>
+<l:template name="sect5" text="Sezione %n"/>
+<l:template name="section" text="Sezione %n"/>
+<l:template name="table" text="Tabella %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendice %n, %t"/>
+<l:template name="bridgehead" text="Sezione %n, «%t»"/>
+<l:template name="chapter" text="Capitolo %n, %t"/>
+<l:template name="equation" text="Equazione %n, «%t»"/>
+<l:template name="example" text="Esempio %n, «%t»"/>
+<l:template name="figure" text="Figura %n, «%t»"/>
+<l:template name="part" text="Parte %n, «%t»"/>
+<l:template name="procedure" text="Procedura %n, «%t»"/>
+<l:template name="productionset" text="Produzione %n, «%t»"/>
+<l:template name="qandadiv" text="Domande e risposte %n, «%t»"/>
+<l:template name="refsect1" text="sezione chiamata «%t»"/>
+<l:template name="refsect2" text="sezione chiamata «%t»"/>
+<l:template name="refsect3" text="sezione chiamata «%t»"/>
+<l:template name="refsection" text="sezione chiamata «%t»"/>
+<l:template name="sect1" text="Sezione %n, «%t»"/>
+<l:template name="sect2" text="Sezione %n, «%t»"/>
+<l:template name="sect3" text="Sezione %n, «%t»"/>
+<l:template name="sect4" text="Sezione %n, «%t»"/>
+<l:template name="sect5" text="Sezione %n, «%t»"/>
+<l:template name="section" text="Sezione %n, «%t»"/>
+<l:template name="simplesect" text="sezione chiamata «%t»"/>
+<l:template name="table" text="Tabella %n, «%t»"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" e "/>
+<l:template name="seplast" text=", e "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vedi %t."/>
+<l:template name="seealso" text="Vedi anche %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Pubblico: "/>
+<l:template name="MsgLevel" text="Livello: "/>
+<l:template name="MsgOrig" text="Origine: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definizione: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="gennaio"/>
+<l:template name="February" text="febbraio"/>
+<l:template name="March" text="marzo"/>
+<l:template name="April" text="aprile"/>
+<l:template name="May" text="maggio"/>
+<l:template name="June" text="giugno"/>
+<l:template name="July" text="luglio"/>
+<l:template name="August" text="agosto"/>
+<l:template name="September" text="settembre"/>
+<l:template name="October" text="ottobre"/>
+<l:template name="November" text="novembre"/>
+<l:template name="December" text="dicembre"/>
+<l:template name="Monday" text="lunedì"/>
+<l:template name="Tuesday" text="martedì"/>
+<l:template name="Wednesday" text="mercoledì"/>
+<l:template name="Thursday" text="giovedì"/>
+<l:template name="Friday" text="venerdì"/>
+<l:template name="Saturday" text="sabato"/>
+<l:template name="Sunday" text="domenica"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="gen"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="mag"/>
+<l:template name="Jun" text="giu"/>
+<l:template name="Jul" text="lug"/>
+<l:template name="Aug" text="ago"/>
+<l:template name="Sep" text="set"/>
+<l:template name="Oct" text="ott"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dic"/>
+<l:template name="Mon" text="lun"/>
+<l:template name="Tue" text="mar"/>
+<l:template name="Wed" text="mer"/>
+<l:template name="Thu" text="gio"/>
+<l:template name="Fri" text="ven"/>
+<l:template name="Sat" text="sab"/>
+<l:template name="Sun" text="dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0410 Italian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cit.: "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Disponibile "/>
+<l:template name="acctoo" text="Disponibile anche "/>
+<l:template name="onwww" text="sul Web"/>
+<l:template name="oninet" text="su Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simboli</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml
new file mode 100644
index 0000000..4dd809b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ja" english-language-name="Japanese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ja.xml -->
+<!-- * -->
+<!-- * E-mail the edited ja.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="概è¦"/>
+<l:gentext key="abstract" text="概è¦"/>
+<l:gentext key="Acknowledgements" text="è¬è¾ž"/>
+<l:gentext key="acknowledgements" text="è¬è¾ž"/>
+<l:gentext key="Answer" text="答:"/>
+<l:gentext key="answer" text="答:"/>
+<l:gentext key="Appendix" text="付録"/>
+<l:gentext key="appendix" text="付録"/>
+<l:gentext key="Article" text="é …ç›®"/>
+<l:gentext key="article" text="é …ç›®"/>
+<l:gentext key="Author" text="著者"/>
+<l:gentext key="Bibliography" text="å‚考文献"/>
+<l:gentext key="bibliography" text="å‚考文献"/>
+<l:gentext key="Book" text="ブック"/>
+<l:gentext key="book" text="ブック"/>
+<l:gentext key="CAUTION" text="注æ„"/>
+<l:gentext key="Caution" text="注æ„"/>
+<l:gentext key="caution" text="注æ„"/>
+<l:gentext key="Chapter" text="ç« "/>
+<l:gentext key="chapter" text="ç« "/>
+<l:gentext key="Colophon" text="奥付"/>
+<l:gentext key="colophon" text="奥付"/>
+<l:gentext key="Copyright" text="製作著作"/>
+<l:gentext key="copyright" text="製作著作"/>
+<l:gentext key="Dedication" text="è¬è¾ž"/>
+<l:gentext key="dedication" text="è¬è¾ž"/>
+<l:gentext key="Edition" text="エディッション"/>
+<l:gentext key="edition" text="エディッション"/>
+<l:gentext key="Editor" text="編集者"/>
+<l:gentext key="Equation" text="å¼"/>
+<l:gentext key="equation" text="å¼"/>
+<l:gentext key="Example" text="例"/>
+<l:gentext key="example" text="例"/>
+<l:gentext key="Figure" text="図"/>
+<l:gentext key="figure" text="図"/>
+<l:gentext key="Glossary" text="用語集"/>
+<l:gentext key="glossary" text="用語集"/>
+<l:gentext key="GlossSee" text="å‚ç…§"/>
+<l:gentext key="glosssee" text="å‚ç…§"/>
+<l:gentext key="GlossSeeAlso" text="å‚ç…§"/>
+<l:gentext key="glossseealso" text="å‚ç…§"/>
+<l:gentext key="IMPORTANT" text="é‡è¦"/>
+<l:gentext key="important" text="é‡è¦"/>
+<l:gentext key="Important" text="é‡è¦"/>
+<l:gentext key="Index" text="索引"/>
+<l:gentext key="index" text="索引"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="法律上ã®é€šçŸ¥"/>
+<l:gentext key="legalnotice" text="法律上ã®é€šçŸ¥"/>
+<l:gentext key="MsgAud" text="対象者"/>
+<l:gentext key="msgaud" text="対象者"/>
+<l:gentext key="MsgLevel" text="レベル"/>
+<l:gentext key="msglevel" text="レベル"/>
+<l:gentext key="MsgOrig" text="出所"/>
+<l:gentext key="msgorig" text="出所"/>
+<l:gentext key="NOTE" text="注記"/>
+<l:gentext key="Note" text="注記"/>
+<l:gentext key="note" text="注記"/>
+<l:gentext key="Part" text="パート"/>
+<l:gentext key="part" text="パート"/>
+<l:gentext key="Preface" text="å‰æ›¸ã"/>
+<l:gentext key="preface" text="å‰æ›¸ã"/>
+<l:gentext key="Procedure" text="手順"/>
+<l:gentext key="procedure" text="手順"/>
+<l:gentext key="ProductionSet" text="プロダクション"/>
+<l:gentext key="PubDate" text="発行日"/>
+<l:gentext key="pubdate" text="発行日"/>
+<l:gentext key="Published" text="発行"/>
+<l:gentext key="published" text="発行"/>
+<l:gentext key="Publisher" text="発行元"/>
+<l:gentext key="Qandadiv" text="質å•ã¨ç­”ãˆ"/>
+<l:gentext key="qandadiv" text="質å•ã¨ç­”ãˆ"/>
+<l:gentext key="QandASet" text="よãã‚る質å•"/>
+<l:gentext key="Question" text="å•ï¼š"/>
+<l:gentext key="question" text="å•ï¼š"/>
+<l:gentext key="RefEntry" text="ページ"/>
+<l:gentext key="refentry" text="ページ"/>
+<l:gentext key="Reference" text="å‚ç…§"/>
+<l:gentext key="reference" text="å‚ç…§"/>
+<l:gentext key="References" text="å‚ç…§"/>
+<l:gentext key="RefName" text="åå‰"/>
+<l:gentext key="refname" text="åå‰"/>
+<l:gentext key="RefSection" text="é …"/>
+<l:gentext key="refsection" text="é …"/>
+<l:gentext key="RefSynopsisDiv" text="概è¦"/>
+<l:gentext key="refsynopsisdiv" text="概è¦"/>
+<l:gentext key="RevHistory" text="改訂履歴"/>
+<l:gentext key="revhistory" text="改訂履歴"/>
+<l:gentext key="revision" text="改訂"/>
+<l:gentext key="Revision" text="改訂"/>
+<l:gentext key="sect1" text="é …"/>
+<l:gentext key="sect2" text="é …"/>
+<l:gentext key="sect3" text="é …"/>
+<l:gentext key="sect4" text="é …"/>
+<l:gentext key="sect5" text="é …"/>
+<l:gentext key="section" text="é …"/>
+<l:gentext key="Section" text="é …"/>
+<l:gentext key="see" text="å‚ç…§"/>
+<l:gentext key="See" text="å‚ç…§"/>
+<l:gentext key="seealso" text="å‚ç…§"/>
+<l:gentext key="Seealso" text="å‚ç…§"/>
+<l:gentext key="SeeAlso" text="å‚ç…§"/>
+<l:gentext key="set" text="セット"/>
+<l:gentext key="Set" text="セット"/>
+<l:gentext key="setindex" text="セット目次"/>
+<l:gentext key="SetIndex" text="セット目次"/>
+<l:gentext key="Sidebar" text="サイドãƒãƒ¼"/>
+<l:gentext key="sidebar" text="サイドãƒãƒ¼"/>
+<l:gentext key="step" text="ステップ"/>
+<l:gentext key="Step" text="ステップ"/>
+<l:gentext key="table" text="表"/>
+<l:gentext key="Table" text="表"/>
+<l:gentext key="task" text="タスク"/>
+<l:gentext key="Task" text="タスク"/>
+<l:gentext key="tip" text="ヒント"/>
+<l:gentext key="TIP" text="ヒント"/>
+<l:gentext key="Tip" text="ヒント"/>
+<l:gentext key="Warning" text="警告"/>
+<l:gentext key="warning" text="警告"/>
+<l:gentext key="WARNING" text="警告"/>
+<l:gentext key="and" text="ã€"/>
+<l:gentext key="by" text=":"/>
+<l:gentext key="Edited" text="編集者"/>
+<l:gentext key="edited" text="編集者"/>
+<l:gentext key="Editedby" text="編集者"/>
+<l:gentext key="editedby" text="編集者"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="注記"/>
+<l:gentext key="Notes" text="注記"/>
+<l:gentext key="Pgs" text="ページ"/>
+<l:gentext key="pgs" text="ページ"/>
+<l:gentext key="Revisedby" text="校正者:"/>
+<l:gentext key="revisedby" text="校正者: "/>
+<l:gentext key="TableNotes" text="注æ„"/>
+<l:gentext key="tablenotes" text="注æ„"/>
+<l:gentext key="TableofContents" text="目次"/>
+<l:gentext key="tableofcontents" text="目次"/>
+<l:gentext key="unexpectedelementname" text="予期ã—ãªã„è¦ç´ åã§ã™"/>
+<l:gentext key="unsupported" text="サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“"/>
+<l:gentext key="xrefto" text="xref "/>
+<l:gentext key="Authors" text="著者"/>
+<l:gentext key="copyeditor" text="コピーエディター"/>
+<l:gentext key="graphicdesigner" text="グラフィックデザイナー"/>
+<l:gentext key="productioneditor" text="プロダクションエディター"/>
+<l:gentext key="technicaleditor" text="テクニカルエディター"/>
+<l:gentext key="translator" text="翻訳者"/>
+<l:gentext key="listofequations" text="å¼ã®ä¸€è¦§"/>
+<l:gentext key="ListofEquations" text="å¼ã®ä¸€è¦§"/>
+<l:gentext key="ListofExamples" text="例ã®ä¸€è¦§"/>
+<l:gentext key="listofexamples" text="例ã®ä¸€è¦§"/>
+<l:gentext key="ListofFigures" text="図ã®ä¸€è¦§"/>
+<l:gentext key="listoffigures" text="図ã®ä¸€è¦§"/>
+<l:gentext key="ListofProcedures" text="手順ã®ä¸€è¦§"/>
+<l:gentext key="listofprocedures" text="手順ã®ä¸€è¦§"/>
+<l:gentext key="listoftables" text="表ã®ä¸€è¦§"/>
+<l:gentext key="ListofTables" text="表ã®ä¸€è¦§"/>
+<l:gentext key="ListofUnknown" text="ä¸æ˜Žã®ä¸€è¦§"/>
+<l:gentext key="listofunknown" text="ä¸æ˜Žã®ä¸€è¦§"/>
+<l:gentext key="nav-home" text="ホーム"/>
+<l:gentext key="nav-next" text="次ã¸"/>
+<l:gentext key="nav-next-sibling" text="æ—©é€ã‚Š"/>
+<l:gentext key="nav-prev" text="戻る"/>
+<l:gentext key="nav-prev-sibling" text="巻戻ã—"/>
+<l:gentext key="nav-up" text="上ã«æˆ»ã‚‹"/>
+<l:gentext key="nav-toc" text="目次"/>
+<l:gentext key="Draft" text="ドラフト"/>
+<l:gentext key="above" text="上"/>
+<l:gentext key="below" text="下"/>
+<l:gentext key="sectioncalled" text="セクションå"/>
+<l:gentext key="index symbols" text="シンボル"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="「"/>
+<l:dingbat key="endquote" text="ã€"/>
+<l:dingbat key="nestedstartquote" text="『"/>
+<l:dingbat key="nestedendquote" text="ã€"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="â—"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="family-given"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="付録%n %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="第%n章%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="å¼%n %t"/>
+<l:template name="example" text="例%n %t"/>
+<l:template name="figure" text="図%n %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="パート%n %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="手順%n %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="プロダクション %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="表%n %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="付録%n %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n %t"/>
+<l:template name="chapter" text="第%n章 %t"/>
+<l:template name="part" text="パート %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="å•ï¼šÂ %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="å•ï¼šÂ %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="「%tã€"/>
+<l:template name="refsection" text="「%tã€"/>
+<l:template name="refsect1" text="「%tã€"/>
+<l:template name="refsect2" text="「%tã€t"/>
+<l:template name="refsect3" text="「%tã€"/>
+<l:template name="sect1" text="「%tã€"/>
+<l:template name="sect2" text="「%tã€"/>
+<l:template name="sect3" text="「%tã€"/>
+<l:template name="sect4" text="「%tã€"/>
+<l:template name="sect5" text="「%tã€"/>
+<l:template name="section" text="「%tã€"/>
+<l:template name="simplesect" text="「%tã€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="付録%n"/>
+<l:template name="bridgehead" text="項 %n"/>
+<l:template name="chapter" text="第%n章"/>
+<l:template name="equation" text="å¼Â %n"/>
+<l:template name="example" text="例 %n"/>
+<l:template name="figure" text="図 %n"/>
+<l:template name="part" text="パート %n"/>
+<l:template name="procedure" text="手順 %n"/>
+<l:template name="productionset" text="プロダクション %n"/>
+<l:template name="qandadiv" text="質å•ã¨ç­”ãˆÂ %n"/>
+<l:template name="qandaentry" text="å•ï¼šÂ %n"/>
+<l:template name="question" text="å•ï¼šÂ %n"/>
+<l:template name="sect1" text="%n"/>
+<l:template name="sect2" text="%n"/>
+<l:template name="sect3" text="%n"/>
+<l:template name="sect4" text="%n"/>
+<l:template name="sect5" text="%n"/>
+<l:template name="section" text="%n"/>
+<l:template name="table" text="表 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="付録%n %t"/>
+<l:template name="bridgehead" text="%n項「%tã€"/>
+<l:template name="chapter" text="%nç« %t"/>
+<l:template name="equation" text="å¼%n「%tã€"/>
+<l:template name="example" text="例%n「%tã€"/>
+<l:template name="figure" text="図%n「%tã€"/>
+<l:template name="part" text="パート%n「%tã€"/>
+<l:template name="procedure" text="手順%n「%tã€"/>
+<l:template name="productionset" text="プロダクション%n「%tã€"/>
+<l:template name="qandadiv" text="質å•ã¨ç­”ãˆ%n「%tã€"/>
+<l:template name="refsect1" text="「%tã€"/>
+<l:template name="refsect2" text="「%tã€"/>
+<l:template name="refsect3" text="「%tã€"/>
+<l:template name="refsection" text="「%tã€"/>
+<l:template name="sect1" text="「%tã€"/>
+<l:template name="sect2" text="「%tã€"/>
+<l:template name="sect3" text="「%tã€"/>
+<l:template name="sect4" text="「%tã€"/>
+<l:template name="sect5" text="「%tã€"/>
+<l:template name="section" text="「%tã€"/>
+<l:template name="simplesect" text="「%tã€"/>
+<l:template name="table" text="表%n「%tã€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" 〠"/>
+<l:template name="seplast" text=", 〠"/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="%tå‚ç…§"/>
+<l:template name="seealso" text="%tå‚ç…§"/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="対象者: "/>
+<l:template name="MsgLevel" text="レベル: "/>
+<l:template name="MsgOrig" text="出所: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[定義: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="1 月"/>
+<l:template name="February" text="2 月"/>
+<l:template name="March" text="3 月"/>
+<l:template name="April" text="4 月"/>
+<l:template name="May" text="5 月"/>
+<l:template name="June" text="6 月"/>
+<l:template name="July" text="7 月"/>
+<l:template name="August" text="8 月"/>
+<l:template name="September" text="9 月"/>
+<l:template name="October" text="10 月"/>
+<l:template name="November" text="11 月"/>
+<l:template name="December" text="12 月"/>
+<l:template name="Monday" text="月曜日"/>
+<l:template name="Tuesday" text="ç«æ›œæ—¥"/>
+<l:template name="Wednesday" text="水曜日"/>
+<l:template name="Thursday" text="木曜日"/>
+<l:template name="Friday" text="金曜日"/>
+<l:template name="Saturday" text="土曜日"/>
+<l:template name="Sunday" text="日曜日"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="1 月"/>
+<l:template name="Feb" text="2 月"/>
+<l:template name="Mar" text="3 月"/>
+<l:template name="Apr" text="4 月"/>
+<l:template name="May" text="5 月"/>
+<l:template name="Jun" text="6 月"/>
+<l:template name="Jul" text="7 月"/>
+<l:template name="Aug" text="8 月"/>
+<l:template name="Sep" text="9 月"/>
+<l:template name="Oct" text="10 月"/>
+<l:template name="Nov" text="11 月"/>
+<l:template name="Dec" text="12 月"/>
+<l:template name="Mon" text="月"/>
+<l:template name="Tue" text="ç«"/>
+<l:template name="Wed" text="æ°´"/>
+<l:template name="Thu" text="木"/>
+<l:template name="Fri" text="金"/>
+<l:template name="Sat" text="土"/>
+<l:template name="Sun" text="æ—¥"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0411 Japanese"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">シンボル</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml
new file mode 100644
index 0000000..bd6d29c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml
@@ -0,0 +1,700 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ka" english-language-name="Georgian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ka.xml -->
+<!-- * -->
+<!-- * E-mail the edited ka.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="áƒáƒœáƒáƒ¢áƒáƒªáƒ˜áƒ"/>
+<l:gentext key="abstract" text="áƒáƒœáƒáƒ¢áƒáƒªáƒ˜áƒ"/>
+<l:gentext key="Acknowledgements" text="áƒáƒ¦áƒ˜áƒáƒ áƒ”ბáƒ"/>
+<l:gentext key="acknowledgements" text="áƒáƒ¦áƒ˜áƒáƒ áƒ”ბáƒ"/>
+<l:gentext key="Answer" text="პ:"/>
+<l:gentext key="answer" text="პ:"/>
+<l:gentext key="Appendix" text="დáƒáƒœáƒáƒ áƒ—ი"/>
+<l:gentext key="appendix" text="დáƒáƒœáƒáƒ áƒ—ი"/>
+<l:gentext key="Article" text="სტáƒáƒ¢áƒ˜áƒ"/>
+<l:gentext key="article" text="სტáƒáƒ¢áƒ˜áƒ"/>
+<l:gentext key="Author" text="áƒáƒ•áƒ¢áƒáƒ áƒ˜"/>
+<l:gentext key="Bibliography" text="ბიბლიáƒáƒ’რáƒáƒ¤áƒ˜áƒ"/>
+<l:gentext key="bibliography" text="ბიბლიáƒáƒ’რáƒáƒ¤áƒ˜áƒ"/>
+<l:gentext key="Book" text="წიგნი"/>
+<l:gentext key="book" text="წიგნი"/>
+<l:gentext key="CAUTION" text="გáƒáƒ¤áƒ áƒ—ხილებáƒ"/>
+<l:gentext key="Caution" text="გáƒáƒ¤áƒ áƒ—ხილებáƒ"/>
+<l:gentext key="caution" text="გáƒáƒ¤áƒ áƒ—ხილებáƒ"/>
+<l:gentext key="Chapter" text="თáƒáƒ•áƒ˜"/>
+<l:gentext key="chapter" text="თáƒáƒ•áƒ˜"/>
+<l:gentext key="Colophon" text="კáƒáƒšáƒáƒ¤áƒáƒœáƒ˜"/>
+<l:gentext key="colophon" text="კáƒáƒšáƒáƒ¤áƒáƒœáƒ˜"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="მიძღვნáƒ"/>
+<l:gentext key="dedication" text="მიძღვნáƒ"/>
+<l:gentext key="Edition" text="გáƒáƒ›áƒáƒªáƒ”მáƒ"/>
+<l:gentext key="edition" text="გáƒáƒ›áƒáƒªáƒ”მáƒ"/>
+<l:gentext key="Editor" text="რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜"/>
+<l:gentext key="Equation" text="გáƒáƒœáƒ¢áƒáƒšáƒ”ბáƒ"/>
+<l:gentext key="equation" text="გáƒáƒœáƒ¢áƒáƒšáƒ”ბáƒ"/>
+<l:gentext key="Example" text="მáƒáƒ’áƒáƒšáƒ˜áƒ—ი"/>
+<l:gentext key="example" text="მáƒáƒ’áƒáƒšáƒ˜áƒ—ი"/>
+<l:gentext key="Figure" text="სურáƒáƒ—ი"/>
+<l:gentext key="figure" text="სურáƒáƒ—ი"/>
+<l:gentext key="Glossary" text="ტერმინáƒáƒšáƒáƒ’იáƒ"/>
+<l:gentext key="glossary" text="ტერმინáƒáƒšáƒáƒ’იáƒ"/>
+<l:gentext key="GlossSee" text="იხ."/>
+<l:gentext key="glosssee" text="იხ."/>
+<l:gentext key="GlossSeeAlso" text="იხ. áƒáƒ¡áƒ”ვე"/>
+<l:gentext key="glossseealso" text="იხ. áƒáƒ¡áƒ”ვე"/>
+<l:gentext key="IMPORTANT" text="მნიშვნელáƒáƒ•áƒáƒœáƒ˜áƒ"/>
+<l:gentext key="important" text="მნიშვნელáƒáƒ•áƒáƒœáƒ˜áƒ"/>
+<l:gentext key="Important" text="მნიშვნელáƒáƒ•áƒáƒœáƒ˜áƒ"/>
+<l:gentext key="Index" text="áƒáƒœáƒ‘áƒáƒœáƒ£áƒ áƒ˜ სáƒáƒ«áƒ˜áƒ”ბელი"/>
+<l:gentext key="index" text="áƒáƒœáƒ‘áƒáƒœáƒ£áƒ áƒ˜ სáƒáƒ«áƒ˜áƒ”ბელი"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="სáƒáƒáƒ•áƒ¢áƒáƒ áƒ უფლებáƒ"/>
+<l:gentext key="legalnotice" text="სáƒáƒáƒ•áƒ¢áƒáƒ áƒ უფლებáƒ"/>
+<l:gentext key="MsgAud" text="áƒáƒ£áƒ“იტáƒáƒ áƒ˜áƒ"/>
+<l:gentext key="msgaud" text="áƒáƒ£áƒ“იტáƒáƒ áƒ˜áƒ"/>
+<l:gentext key="MsgLevel" text="დáƒáƒœáƒ”"/>
+<l:gentext key="msglevel" text="დáƒáƒœáƒ”"/>
+<l:gentext key="MsgOrig" text="წყáƒáƒ áƒ"/>
+<l:gentext key="msgorig" text="წყáƒáƒ áƒ"/>
+<l:gentext key="NOTE" text="შენიშვნáƒ"/>
+<l:gentext key="Note" text="შენიშვნáƒ"/>
+<l:gentext key="note" text="შენიშვნáƒ"/>
+<l:gentext key="Part" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="part" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="Preface" text="წინáƒáƒ¡áƒ˜áƒ¢áƒ§áƒ•áƒáƒáƒ‘áƒ"/>
+<l:gentext key="preface" text="წინáƒáƒ¡áƒ˜áƒ¢áƒ§áƒ•áƒáƒáƒ‘áƒ"/>
+<l:gentext key="Procedure" text="პრáƒáƒªáƒ”დურáƒ"/>
+<l:gentext key="procedure" text="პრáƒáƒªáƒ”დურáƒ"/>
+<l:gentext key="ProductionSet" text="გáƒáƒ›áƒáƒ¨áƒ•áƒ”ბáƒ"/>
+<l:gentext key="PubDate" text="გáƒáƒ›áƒáƒªáƒ”მის თáƒáƒ áƒ˜áƒ¦áƒ˜"/>
+<l:gentext key="pubdate" text="გáƒáƒ›áƒáƒªáƒ”მის თáƒáƒ áƒ˜áƒ¦áƒ˜"/>
+<l:gentext key="Published" text="გáƒáƒ›áƒáƒªáƒ”მულიáƒ"/>
+<l:gentext key="published" text="გáƒáƒ›áƒáƒªáƒ”მულიáƒ"/>
+<l:gentext key="Publisher" text="გáƒáƒ›áƒáƒ›áƒªáƒ”მელი"/>
+<l:gentext key="Qandadiv" text="კითხვრდრპáƒáƒ¡áƒ£áƒ®áƒ˜"/>
+<l:gentext key="qandadiv" text="კითხვრდრპáƒáƒ¡áƒ£áƒ®áƒ˜"/>
+<l:gentext key="QandASet" text="ხშირáƒáƒ“ დáƒáƒ¡áƒ›áƒ£áƒšáƒ˜ შეკითხვები"/>
+<l:gentext key="Question" text="კ:"/>
+<l:gentext key="question" text="კ:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="მითითებáƒ"/>
+<l:gentext key="reference" text="მითითებáƒ"/>
+<l:gentext key="References" text="მითითებები"/>
+<l:gentext key="RefName" text="დáƒáƒ¡áƒáƒ®áƒ”ლებáƒ"/>
+<l:gentext key="refname" text="დáƒáƒ¡áƒáƒ®áƒ”ლებáƒ"/>
+<l:gentext key="RefSection" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="refsection" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="RefSynopsisDiv" text="სინáƒáƒžáƒ¡áƒ˜áƒ¡áƒ˜"/>
+<l:gentext key="refsynopsisdiv" text="სინáƒáƒžáƒ¡áƒ˜áƒ¡áƒ˜"/>
+<l:gentext key="RevHistory" text="რევიზიების ისტáƒáƒ áƒ˜áƒ"/>
+<l:gentext key="revhistory" text="რევიზიების ისტáƒáƒ áƒ˜áƒ"/>
+<l:gentext key="revision" text="რევიზიáƒ"/>
+<l:gentext key="Revision" text="რევიზიáƒ"/>
+<l:gentext key="sect1" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="sect2" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="sect3" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="sect4" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="sect5" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="section" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="Section" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="see" text="იხ."/>
+<l:gentext key="See" text="იხ."/>
+<l:gentext key="seealso" text="იხ. áƒáƒ¡áƒ”ვე"/>
+<l:gentext key="Seealso" text="იხ. áƒáƒ¡áƒ”ვე"/>
+<l:gentext key="SeeAlso" text="იხ. áƒáƒ¡áƒ”ვე"/>
+<l:gentext key="set" text="ნáƒáƒ™áƒ áƒ”ბი"/>
+<l:gentext key="Set" text="ნáƒáƒ™áƒ áƒ”ბი"/>
+<l:gentext key="setindex" text="ნáƒáƒ™áƒ áƒ”ბის ინდექსი"/>
+<l:gentext key="SetIndex" text="ნáƒáƒ™áƒ áƒ”ბის ინდექსი"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text=""/>
+<l:gentext key="step" text="ბიჯი"/>
+<l:gentext key="Step" text="ბიჯი"/>
+<l:gentext key="table" text="ცხრილი"/>
+<l:gentext key="Table" text="ცხრილი"/>
+<l:gentext key="task" text="áƒáƒ›áƒáƒªáƒáƒœáƒ"/>
+<l:gentext key="Task" text="áƒáƒ›áƒáƒªáƒáƒœáƒ"/>
+<l:gentext key="tip" text="მითითებáƒ"/>
+<l:gentext key="TIP" text="მითითებáƒ"/>
+<l:gentext key="Tip" text="მითითებáƒ"/>
+<l:gentext key="Warning" text="გáƒáƒ¤áƒ áƒ—ხილებáƒ"/>
+<l:gentext key="warning" text="გáƒáƒ¤áƒ áƒ—ხილებáƒ"/>
+<l:gentext key="WARNING" text="გáƒáƒ¤áƒ áƒ—ხილებáƒ"/>
+<l:gentext key="and" text="დáƒ"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="გáƒáƒ›áƒáƒ áƒ—ულიáƒ"/>
+<l:gentext key="edited" text="გáƒáƒ›áƒáƒ áƒ—ულიáƒ"/>
+<l:gentext key="Editedby" text="გáƒáƒ›áƒáƒ áƒ—áƒ:"/>
+<l:gentext key="editedby" text="გáƒáƒ›áƒáƒ áƒ—áƒ:"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="შენიშვნები"/>
+<l:gentext key="Notes" text="შენიშვნები"/>
+<l:gentext key="Pgs" text="გვ. გვ."/>
+<l:gentext key="pgs" text="გვ. გვ."/>
+<l:gentext key="Revisedby" text="გáƒáƒ“áƒáƒáƒ›áƒáƒ¬áƒ›áƒ: "/>
+<l:gentext key="revisedby" text="გáƒáƒ“áƒáƒáƒ›áƒáƒ¬áƒ›áƒ: "/>
+<l:gentext key="TableNotes" text="შენიშვნები"/>
+<l:gentext key="tablenotes" text="შენიშვნები"/>
+<l:gentext key="TableofContents" text="სáƒáƒ áƒ©áƒ”ვი"/>
+<l:gentext key="tableofcontents" text="სáƒáƒ áƒ©áƒ”ვი"/>
+<l:gentext key="unexpectedelementname" text="მáƒáƒ£áƒšáƒáƒ“ნელი ელემენტის სáƒáƒ®áƒ”ლი"/>
+<l:gentext key="unsupported" text="მხáƒáƒ áƒ“áƒáƒ­áƒ”რრáƒáƒ  áƒáƒ áƒ˜áƒ¡"/>
+<l:gentext key="xrefto" text="მითითებáƒ"/>
+<l:gentext key="Authors" text="áƒáƒ•áƒ¢áƒáƒ áƒ”ბი"/>
+<l:gentext key="copyeditor" text="რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜"/>
+<l:gentext key="graphicdesigner" text="დიზáƒáƒ˜áƒœáƒ”რი"/>
+<l:gentext key="productioneditor" text="მთáƒáƒ•áƒáƒ áƒ˜ რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜"/>
+<l:gentext key="technicaleditor" text="ტექნიკური რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜"/>
+<l:gentext key="translator" text="მთáƒáƒ áƒ’მნელი"/>
+<l:gentext key="listofequations" text="გáƒáƒœáƒ¢áƒáƒšáƒ”ბების სიáƒ"/>
+<l:gentext key="ListofEquations" text="გáƒáƒœáƒ¢áƒáƒšáƒ”ბების სიáƒ"/>
+<l:gentext key="ListofExamples" text="მáƒáƒ’áƒáƒšáƒ˜áƒ—ების სიáƒ"/>
+<l:gentext key="listofexamples" text="მáƒáƒ’áƒáƒšáƒ˜áƒ—ების სიáƒ"/>
+<l:gentext key="ListofFigures" text="სურáƒáƒ—ების სიáƒ"/>
+<l:gentext key="listoffigures" text="სურáƒáƒ—ების სიáƒ"/>
+<l:gentext key="ListofProcedures" text="პრáƒáƒªáƒ”დურების სიáƒ"/>
+<l:gentext key="listofprocedures" text="პრáƒáƒªáƒ”დურების სიáƒ"/>
+<l:gentext key="listoftables" text="ცხრილების სიáƒ"/>
+<l:gentext key="ListofTables" text="ცხრილების სიáƒ"/>
+<l:gentext key="ListofUnknown" text="უცნáƒáƒ‘ი ელემენტების სიáƒ"/>
+<l:gentext key="listofunknown" text="უცნáƒáƒ‘ი ელემენტების სიáƒ"/>
+<l:gentext key="nav-home" text="დáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ¨áƒ˜"/>
+<l:gentext key="nav-next" text="წინ"/>
+<l:gentext key="nav-next-sibling" text="წინ სწრáƒáƒ¤áƒáƒ“"/>
+<l:gentext key="nav-prev" text="უკáƒáƒœ"/>
+<l:gentext key="nav-prev-sibling" text="სწრáƒáƒ¤áƒáƒ“ უკáƒáƒœ"/>
+<l:gentext key="nav-up" text="ზემáƒáƒ—"/>
+<l:gentext key="nav-toc" text="სáƒáƒ áƒ©áƒ”ვი"/>
+<l:gentext key="Draft" text="მáƒáƒœáƒáƒ®áƒáƒ–ი"/>
+<l:gentext key="above" text="ზემáƒáƒ—"/>
+<l:gentext key="below" text="ქვემáƒáƒ—"/>
+<l:gentext key="sectioncalled" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜"/>
+<l:gentext key="index symbols" text="სიმბáƒáƒšáƒáƒ”ბი"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzáƒáƒ‘გდევზჱთიკლმნჲáƒáƒžáƒŸáƒ áƒ¡áƒ¢áƒ³áƒ£áƒ¤áƒ¥áƒ¦áƒ§áƒ¨áƒ©áƒªáƒ«áƒ¬áƒ­áƒ®áƒ´áƒ¯áƒ°áƒµáƒ¶áƒ·"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZáƒáƒ‘გდევზჱთიკლმნჲáƒáƒžáƒŸáƒ áƒ¡áƒ¢áƒ³áƒ£áƒ¤áƒ¥áƒ¦áƒ§áƒ¨áƒ©áƒªáƒ«áƒ¬áƒ­áƒ®áƒ´áƒ¯áƒ°áƒµáƒ¶áƒ·"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕáƒáƒ‘გდევზჱთიკლმნჲáƒáƒžáƒŸáƒ áƒ¡áƒ¢áƒ³áƒ£áƒ¤áƒ¥áƒ¦áƒ§áƒ¨áƒ©áƒªáƒ«áƒ¬áƒ­áƒ®áƒ´áƒ¯áƒ°áƒµáƒ¶áƒ·"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZáƒáƒ‘გდევზჱთიკლმნჲáƒáƒžáƒŸáƒ áƒ¡áƒ¢áƒ³áƒ£áƒ¤áƒ¥áƒ¦áƒ§áƒ¨áƒ©áƒªáƒ«áƒ¬áƒ­áƒ®áƒ´áƒ¯áƒ°áƒµáƒ¶áƒ·"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="დáƒáƒœáƒáƒ áƒ—ი %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="თáƒáƒ•áƒ˜Â %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="გáƒáƒœáƒ¢áƒáƒšáƒ”ბáƒÂ %n. %t"/>
+<l:template name="example" text="მáƒáƒ’áƒáƒšáƒ˜áƒ—ი %n. %t"/>
+<l:template name="figure" text="სურáƒáƒ—ი %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="პრáƒáƒªáƒ”დურáƒÂ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="გáƒáƒ›áƒáƒ¨áƒ•áƒ”ბáƒÂ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ცხრილი %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="დáƒáƒœáƒáƒ áƒ—ი %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="თáƒáƒ•áƒ˜Â %n. %t"/>
+<l:template name="part" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="პ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="კ: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="კ: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="refsection" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="refsect1" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="refsect2" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="refsect3" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="sect1" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="sect2" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="sect3" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="sect4" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="sect5" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="section" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="simplesect" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="პ: %n"/>
+<l:template name="appendix" text="დáƒáƒœáƒáƒ áƒ—ი %n"/>
+<l:template name="bridgehead" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="chapter" text="თáƒáƒ•áƒ˜Â %n"/>
+<l:template name="equation" text="გáƒáƒœáƒ¢áƒáƒšáƒ”ბáƒÂ %n"/>
+<l:template name="example" text="მáƒáƒ’áƒáƒšáƒ˜áƒ—ი %n"/>
+<l:template name="figure" text="სურáƒáƒ—ი %n"/>
+<l:template name="part" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="procedure" text="პრáƒáƒªáƒ”დურáƒÂ %n"/>
+<l:template name="productionset" text="გáƒáƒ›áƒáƒ¨áƒ•áƒ”ბáƒÂ %n"/>
+<l:template name="qandadiv" text="კითხვრდრპáƒáƒ¡áƒ£áƒ®áƒ˜Â %n"/>
+<l:template name="qandaentry" text="კ: %n"/>
+<l:template name="question" text="კ: %n"/>
+<l:template name="sect1" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="sect2" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="sect3" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="sect4" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="sect5" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="section" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n"/>
+<l:template name="table" text="ცხრილი %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="დáƒáƒœáƒáƒ áƒ—ი %n, %t"/>
+<l:template name="bridgehead" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="chapter" text="თáƒáƒ•áƒ˜Â %n, %t"/>
+<l:template name="equation" text="გáƒáƒœáƒ¢áƒáƒšáƒ”ბáƒÂ %n, “%tâ€"/>
+<l:template name="example" text="მáƒáƒ’áƒáƒšáƒ˜áƒ—ი %n, “%tâ€"/>
+<l:template name="figure" text="სურáƒáƒ—ი %n, “%tâ€"/>
+<l:template name="part" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="procedure" text="პრáƒáƒªáƒ”დურáƒÂ %n, “%tâ€"/>
+<l:template name="productionset" text="გáƒáƒ›áƒáƒ¨áƒ•áƒ”ბáƒÂ %n, “%tâ€"/>
+<l:template name="qandadiv" text="კითხვრდრპáƒáƒ¡áƒ£áƒ®áƒ˜Â %n, “%tâ€"/>
+<l:template name="refsect1" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="refsect2" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="refsect3" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="refsection" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="sect1" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="sect2" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="sect3" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="sect4" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="sect5" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="section" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜Â %n, “%tâ€"/>
+<l:template name="simplesect" text="ნáƒáƒ¬áƒ˜áƒšáƒ˜ “%tâ€"/>
+<l:template name="table" text="ცხრილი %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" დრ"/>
+<l:template name="seplast" text=", დრ"/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="იხ. %t."/>
+<l:template name="seealso" text="იხ. áƒáƒ¡áƒ”ვე %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="áƒáƒ£áƒ“იტáƒáƒ áƒ˜áƒ: "/>
+<l:template name="MsgLevel" text="დáƒáƒœáƒ”: "/>
+<l:template name="MsgOrig" text="წყáƒáƒ áƒ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[გáƒáƒœáƒ¡áƒáƒ–ღვრებáƒ: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="იáƒáƒœáƒ•áƒáƒ "/>
+<l:template name="February" text="თებერვáƒáƒšáƒ˜"/>
+<l:template name="March" text="მáƒáƒ áƒ¢áƒ˜"/>
+<l:template name="April" text="áƒáƒžáƒ áƒ˜áƒšáƒ˜"/>
+<l:template name="May" text="მáƒáƒ˜áƒ¡áƒ˜"/>
+<l:template name="June" text="ივნისი"/>
+<l:template name="July" text="ივლისი"/>
+<l:template name="August" text="áƒáƒ’ვისტáƒ"/>
+<l:template name="September" text="სექტემბერი"/>
+<l:template name="October" text="áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი"/>
+<l:template name="November" text="ნáƒáƒ”მბერი"/>
+<l:template name="December" text="დეკემბერი"/>
+<l:template name="Monday" text="áƒáƒ áƒ¨áƒáƒ‘áƒáƒ—ი"/>
+<l:template name="Tuesday" text="სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი"/>
+<l:template name="Wednesday" text="áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი"/>
+<l:template name="Thursday" text="ხუთშáƒáƒ‘áƒáƒ—ი"/>
+<l:template name="Friday" text="პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი"/>
+<l:template name="Saturday" text="შáƒáƒ‘áƒáƒ—ი"/>
+<l:template name="Sunday" text="კვირáƒ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="იáƒáƒœ"/>
+<l:template name="Feb" text="თებ"/>
+<l:template name="Mar" text="მáƒáƒ "/>
+<l:template name="Apr" text="áƒáƒžáƒ "/>
+<l:template name="May" text="მáƒáƒ˜"/>
+<l:template name="Jun" text="ივნ"/>
+<l:template name="Jul" text="ივლ"/>
+<l:template name="Aug" text="áƒáƒ’ვ"/>
+<l:template name="Sep" text="სექ"/>
+<l:template name="Oct" text="áƒáƒ¥áƒ¢"/>
+<l:template name="Nov" text="ნáƒáƒ”"/>
+<l:template name="Dec" text="დეკ"/>
+<l:template name="Mon" text="áƒáƒ áƒ¨"/>
+<l:template name="Tue" text="სáƒáƒ›"/>
+<l:template name="Wed" text="áƒáƒ—ხ"/>
+<l:template name="Thu" text="ხუთ"/>
+<l:template name="Fri" text="პáƒáƒ "/>
+<l:template name="Sat" text="შáƒáƒ‘"/>
+<l:template name="Sun" text="კვი"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" დრ"/>
+<l:template name="alt.person.last.sep" text=" დრ"/>
+<l:template name="alt.person.more.sep" text="; "/>
+<l:template name="primary.editor" text=" (რედ.)"/>
+<l:template name="primary.many" text=" დრსხვ."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [ციტáƒáƒ¢áƒ "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="მისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜áƒ "/>
+<l:template name="acctoo" text="მისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜áƒ áƒáƒ¡áƒ”ვე "/>
+<l:template name="onwww" text="გლáƒáƒ‘áƒáƒšáƒ£áƒ  ქსელში"/>
+<l:template name="oninet" text="ინტერნეტში"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">სიმბáƒáƒšáƒáƒ”ბი</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">áƒ</l:l>
+<l:l i="280">ბ</l:l>
+<l:l i="290">გ</l:l>
+<l:l i="300">დ</l:l>
+<l:l i="310">ე</l:l>
+<l:l i="320">ვ</l:l>
+<l:l i="330">ზ</l:l>
+<l:l i="340">ჱ</l:l>
+<l:l i="350">თ</l:l>
+<l:l i="360">ი</l:l>
+<l:l i="370">კ</l:l>
+<l:l i="380">ლ</l:l>
+<l:l i="390">მ</l:l>
+<l:l i="400">ნ</l:l>
+<l:l i="410">ჲ</l:l>
+<l:l i="420">áƒ</l:l>
+<l:l i="430">პ</l:l>
+<l:l i="440">ჟ</l:l>
+<l:l i="450">რ</l:l>
+<l:l i="460">ს</l:l>
+<l:l i="470">ტ</l:l>
+<l:l i="480">ჳ</l:l>
+<l:l i="490">უ</l:l>
+<l:l i="500">ფ</l:l>
+<l:l i="510">ქ</l:l>
+<l:l i="520">ღ</l:l>
+<l:l i="530">ყ</l:l>
+<l:l i="540">შ</l:l>
+<l:l i="550">ჩ</l:l>
+<l:l i="560">ც</l:l>
+<l:l i="570">ძ</l:l>
+<l:l i="580">წ</l:l>
+<l:l i="590">ჭ</l:l>
+<l:l i="600">ხ</l:l>
+<l:l i="610">ჴ</l:l>
+<l:l i="620">ჯ</l:l>
+<l:l i="630">ჰ</l:l>
+<l:l i="640">ჵ</l:l>
+<l:l i="650">ჶ</l:l>
+<l:l i="660">ჷ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml
new file mode 100644
index 0000000..5c246f1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="kn" english-language-name="Kannada">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/kn.xml -->
+<!-- * -->
+<!-- * E-mail the edited kn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ಸಾರಾಂಶ"/>
+<l:gentext key="abstract" text="ಸಾರಾಂಶ"/>
+<l:gentext key="Acknowledgements" text="ಇವರಿಗೆ ಧನà³à²¯à²µà²¾à²¦à²—ಳà³"/>
+<l:gentext key="acknowledgements" text="ಇವರಿಗೆ ಧನà³à²¯à²µà²¾à²¦à²—ಳà³"/>
+<l:gentext key="Answer" text="ಉ:"/>
+<l:gentext key="answer" text="ಉ:"/>
+<l:gentext key="Appendix" text="ಅನà³à²¬à²‚ಧ"/>
+<l:gentext key="appendix" text="ಅನà³à²¬à²‚ಧ"/>
+<l:gentext key="Article" text="ಲೇಖನ"/>
+<l:gentext key="article" text="ಲೇಖನ"/>
+<l:gentext key="Author" text="ಲೇಖಕ"/>
+<l:gentext key="Bibliography" text="ಗà³à²°à²‚ಥಸೂಚಿ"/>
+<l:gentext key="bibliography" text="ಗà³à²°à²‚ಥಸೂಚಿ"/>
+<l:gentext key="Book" text="ಪà³à²¸à³à²¤à²•"/>
+<l:gentext key="book" text="ಪà³à²¸à³à²¤à²•"/>
+<l:gentext key="CAUTION" text="ಎಚà³à²šà²°à²¿à²•à³†"/>
+<l:gentext key="Caution" text="ಎಚà³à²šà²°à²¿à²•à³†"/>
+<l:gentext key="caution" text="ಎಚà³à²šà²°à²¿à²•à³†"/>
+<l:gentext key="Chapter" text="ಅಧà³à²¯à²¾à²¯"/>
+<l:gentext key="chapter" text="ಅಧà³à²¯à²¾à²¯"/>
+<l:gentext key="Colophon" text="ಮà³à²¦à³à²°à²£ ಸಂಕೇತ"/>
+<l:gentext key="colophon" text="ಮà³à²¦à³à²°à²£ ಸಂಕೇತ"/>
+<l:gentext key="Copyright" text="ಕೃತಿಸà³à²µà²¾à²®à³à²¯"/>
+<l:gentext key="copyright" text="ಕೃತಿಸà³à²µà²¾à²®à³à²¯"/>
+<l:gentext key="Dedication" text="ಸಮರà³à²ªà²£à³†"/>
+<l:gentext key="dedication" text="ಸಮರà³à²ªà²£à³†"/>
+<l:gentext key="Edition" text="ಆವೃತà³à²¤à²¿"/>
+<l:gentext key="edition" text="ಆವೃತà³à²¤à²¿"/>
+<l:gentext key="Editor" text="ಸಂಪಾದಕ"/>
+<l:gentext key="Equation" text="ಸಮೀಕರಣ"/>
+<l:gentext key="equation" text="ಸಮೀಕರಣ"/>
+<l:gentext key="Example" text="ಉದಾಹರಣೆ"/>
+<l:gentext key="example" text="ಉದಾಹರಣೆ"/>
+<l:gentext key="Figure" text="ಚಿತà³à²°"/>
+<l:gentext key="figure" text="ಚಿತà³à²°"/>
+<l:gentext key="Glossary" text="ಪಾರಿಭಾಷಿಕಕೋಶ"/>
+<l:gentext key="glossary" text="ಪಾರಿಭಾಷಿಕಕೋಶ"/>
+<l:gentext key="GlossSee" text="ಇದನà³à²¨à³ ನೋಡಿ"/>
+<l:gentext key="glosssee" text="ಇದನà³à²¨à³ ನೋಡಿ"/>
+<l:gentext key="GlossSeeAlso" text="ಇದನà³à²¨à³‚ ಸಹ ನೋಡಿ"/>
+<l:gentext key="glossseealso" text="ಇದನà³à²¨à³‚ ಸಹ ನೋಡಿ"/>
+<l:gentext key="IMPORTANT" text="ಮಹತà³à²µ"/>
+<l:gentext key="important" text="ಮಹತà³à²µ"/>
+<l:gentext key="Important" text="ಮಹತà³à²µ"/>
+<l:gentext key="Index" text="ಅನà³à²•à³à²°à²®à²£à²¿à²•à³†"/>
+<l:gentext key="index" text="ಅನà³à²•à³à²°à²®à²£à²¿à²•à³†"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ಲೀಗಲೠನೋಟೀಸà³"/>
+<l:gentext key="legalnotice" text="ಲೀಗಲೠನೋಟೀಸà³"/>
+<l:gentext key="MsgAud" text="ಶà³à²°à³‹à²¤à³ƒà²—ಳà³"/>
+<l:gentext key="msgaud" text="ಶà³à²°à³‹à²¤à³ƒà²—ಳà³"/>
+<l:gentext key="MsgLevel" text="ಸà³à²¤à²°"/>
+<l:gentext key="msglevel" text="ಸà³à²¤à²°"/>
+<l:gentext key="MsgOrig" text="ಮೂಲ"/>
+<l:gentext key="msgorig" text="ಮೂಲ"/>
+<l:gentext key="NOTE" text="ಸೂಚನೆ"/>
+<l:gentext key="Note" text="ಸೂಚನೆ"/>
+<l:gentext key="note" text="ಸೂಚನೆ"/>
+<l:gentext key="Part" text="ಭಾಗ"/>
+<l:gentext key="part" text="ಭಾಗ"/>
+<l:gentext key="Preface" text="ಪೀಠಿಕೆ"/>
+<l:gentext key="preface" text="ಪೀಠಿಕೆ"/>
+<l:gentext key="Procedure" text="ಕಾರà³à²¯à²µà²¿à²§à²¾à²¨"/>
+<l:gentext key="procedure" text="ಕಾರà³à²¯à²µà²¿à²§à²¾à²¨"/>
+<l:gentext key="ProductionSet" text="ನಿರà³à²®à²¾à²£"/>
+<l:gentext key="PubDate" text="ಪà³à²°à²•à²Ÿà²¨à³† ದಿನಾಂಕ"/>
+<l:gentext key="pubdate" text="ಪà³à²°à²•à²Ÿà²¨à³† ದಿನಾಂಕ"/>
+<l:gentext key="Published" text="ಪà³à²°à²•à²¾à²¶à²ªà²¡à²¿à²¸à²¿à²¦"/>
+<l:gentext key="published" text="ಪà³à²°à²•à²¾à²¶à²ªà²¡à²¿à²¸à²¿à²¦"/>
+<l:gentext key="Publisher" text="ಪà³à²°à²•à²¾à²¶à²•"/>
+<l:gentext key="Qandadiv" text="ಪà³à²°à²¶à³à²¨à³† ಮತà³à²¤à³ ಉತà³à²¤à²°"/>
+<l:gentext key="qandadiv" text="ಪà³à²°à²¶à³à²¨à³† ಮತà³à²¤à³ ಉತà³à²¤à²°"/>
+<l:gentext key="QandASet" text="ಪದೆ ಪದೆ ಕೇಳಲಾಗà³à²µ ಪà³à²°à²¶à³à²¨à³†à²—ಳà³"/>
+<l:gentext key="Question" text="ಪà³à²°à²¶à³à²¨à³†:"/>
+<l:gentext key="question" text="ಪà³à²°à²¶à³à²¨à³†:"/>
+<l:gentext key="RefEntry" text="ಪà³à²Ÿ"/>
+<l:gentext key="refentry" text="ಪà³à²Ÿ"/>
+<l:gentext key="Reference" text="ಉಲà³à²²à³‡à²–"/>
+<l:gentext key="reference" text="ಉಲà³à²²à³‡à²–"/>
+<l:gentext key="References" text="ಉಲà³à²²à³‡à²–ಗಳà³"/>
+<l:gentext key="RefName" text="ಹೆಸರà³"/>
+<l:gentext key="refname" text="ಹೆಸರà³"/>
+<l:gentext key="RefSection" text="ವಿಭಾಗ"/>
+<l:gentext key="refsection" text="ವಿಭಾಗ"/>
+<l:gentext key="RefSynopsisDiv" text="ಸಾರಾಂಶ"/>
+<l:gentext key="refsynopsisdiv" text="ಸಾರಾಂಶ"/>
+<l:gentext key="RevHistory" text="ಪರಿಷà³à²•à²°à²£à³†à²¯ ಇತಿಹಾಸ"/>
+<l:gentext key="revhistory" text="ಪರಿಷà³à²•à²°à²£à³†à²¯ ಇತಿಹಾಸ"/>
+<l:gentext key="revision" text="ಪರಿಷà³à²•à²°à²£à³†"/>
+<l:gentext key="Revision" text="ಪರಿಷà³à²•à²°à²£à³†"/>
+<l:gentext key="sect1" text="ವಿಭಾಗ"/>
+<l:gentext key="sect2" text="ವಿಭಾಗ"/>
+<l:gentext key="sect3" text="ವಿಭಾಗ"/>
+<l:gentext key="sect4" text="ವಿಭಾಗ"/>
+<l:gentext key="sect5" text="ವಿಭಾಗ"/>
+<l:gentext key="section" text="ವಿಭಾಗ"/>
+<l:gentext key="Section" text="ವಿಭಾಗ"/>
+<l:gentext key="see" text="ಇದನà³à²¨à³ ನೋಡಿ"/>
+<l:gentext key="See" text="ಇದನà³à²¨à³ ನೋಡಿ"/>
+<l:gentext key="seealso" text="ಇದನà³à²¨à³‚ ಸಹ ನೋಡಿ"/>
+<l:gentext key="Seealso" text="ಇದನà³à²¨à³‚ ಸಹ ನೋಡಿ"/>
+<l:gentext key="SeeAlso" text="ಇದನà³à²¨à³‚ ಸಹ ನೋಡಿ"/>
+<l:gentext key="set" text="ಹೊಂದಿಸà³"/>
+<l:gentext key="Set" text="ಹೊಂದಿಸà³"/>
+<l:gentext key="setindex" text="ಅನà³à²•à³à²°à²®à²£à²¿à²•à³† ಹೊಂದಿಸà³"/>
+<l:gentext key="SetIndex" text="ಅನà³à²•à³à²°à²®à²£à²¿à²•à³† ಹೊಂದಿಸà³"/>
+<l:gentext key="Sidebar" text="ಬದಿಪಟà³à²Ÿà²¿à²•à³†"/>
+<l:gentext key="sidebar" text="ಬದಿಪಟà³à²Ÿà²¿à²•à³†"/>
+<l:gentext key="step" text="ಹಂತ"/>
+<l:gentext key="Step" text="ಹಂತ"/>
+<l:gentext key="table" text="ಕೋಷà³à²Ÿà²•"/>
+<l:gentext key="Table" text="ಕೋಷà³à²Ÿà²•"/>
+<l:gentext key="task" text="ಕಾರà³à²¯"/>
+<l:gentext key="Task" text="ಕಾರà³à²¯"/>
+<l:gentext key="tip" text="ಕಿವಿಮಾತà³"/>
+<l:gentext key="TIP" text="ಕಿವಿಮಾತà³"/>
+<l:gentext key="Tip" text="ಕಿವಿಮಾತà³"/>
+<l:gentext key="Warning" text="ಎಚà³à²šà²°à²¿à²•à³†"/>
+<l:gentext key="warning" text="ಎಚà³à²šà²°à²¿à²•à³†"/>
+<l:gentext key="WARNING" text="ಎಚà³à²šà²°à²¿à²•à³†"/>
+<l:gentext key="and" text="ಮತà³à²¤à³"/>
+<l:gentext key="by" text="ಯಿಂದ"/>
+<l:gentext key="Edited" text="ಸಂಪಾದಿಸಿದ"/>
+<l:gentext key="edited" text="ಸಂಪಾದಿಸಿದ"/>
+<l:gentext key="Editedby" text="ಸಂಪಾದಕ"/>
+<l:gentext key="editedby" text="ಸಂಪಾದಕ"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="ಟಿಪà³à²ªà²£à²¿à²—ಳà³"/>
+<l:gentext key="Notes" text="ಟಿಪà³à²ªà²£à²¿à²—ಳà³"/>
+<l:gentext key="Pgs" text="ಪà³à²Ÿà²—ಳà³."/>
+<l:gentext key="pgs" text="ಪà³à²Ÿà²—ಳà³."/>
+<l:gentext key="Revisedby" text="ಪರಿಷà³à²•à²°à²¿à²¸à²¿à²¦à²µà²°à³: "/>
+<l:gentext key="revisedby" text="ಪರಿಷà³à²•à²°à²¿à²¸à²¿à²¦à²µà²°à³: "/>
+<l:gentext key="TableNotes" text="ಟಿಪà³à²ªà²£à²¿à²—ಳà³"/>
+<l:gentext key="tablenotes" text="ಟಿಪà³à²ªà²£à²¿à²—ಳà³"/>
+<l:gentext key="TableofContents" text="ವಿಷಯಾನà³à²•à³à²°à²®à²£à²¿à²•à³†"/>
+<l:gentext key="tableofcontents" text="ವಿಷಯಾನà³à²•à³à²°à²®à²£à²¿à²•à³†"/>
+<l:gentext key="unexpectedelementname" text="ಅನಿರೀಕà³à²·à²¿à²¤ ವಸà³à²¤à³à²µà²¿à²¨ ಹೆಸರà³"/>
+<l:gentext key="unsupported" text="ಬೆಂಬಲವಿರದ"/>
+<l:gentext key="xrefto" text="xref ಗಾಗಿ"/>
+<l:gentext key="Authors" text="ಕತೃಗಳà³"/>
+<l:gentext key="copyeditor" text="ಪà³à²°à²¤à²¿à²¯ ಸಂಪಾದಕ"/>
+<l:gentext key="graphicdesigner" text="ಗà³à²°à²¾à²«à²¿à²•à³ ವಿನà³à²¯à²¾à²¸à²—ಾರ"/>
+<l:gentext key="productioneditor" text="ನಿರà³à²®à²¾à²£ ಸಂಪಾದಕ"/>
+<l:gentext key="technicaleditor" text="ತಾಂತà³à²°à²¿à²• ಸಂಪಾದಕ"/>
+<l:gentext key="translator" text="ಅನà³à²µà²¾à²¦à²•"/>
+<l:gentext key="listofequations" text="ಸಮೀಕರಣಪಟà³à²Ÿà²¿ "/>
+<l:gentext key="ListofEquations" text="ಸಮೀಕರಣಪಟà³à²Ÿà²¿ "/>
+<l:gentext key="ListofExamples" text="ಉದಾಹರಣೆಗಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="listofexamples" text="ಉದಾಹರಣೆಗಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="ListofFigures" text="ಆಕೃತಿಗಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="listoffigures" text="ಆಕೃತಿಗಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="ListofProcedures" text="ಕಾರà³à²¯à²µà²¿à²§à²¾à²¨à²—ಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="listofprocedures" text="ಕಾರà³à²¯à²µà²¿à²§à²¾à²¨à²—ಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="listoftables" text="ಕೋಷà³à²Ÿà²•à²—ಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="ListofTables" text="ಕೋಷà³à²Ÿà²•à²—ಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="ListofUnknown" text="ತಿಳಿಯದೆ ಇರà³à²µà²µà³à²—ಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="listofunknown" text="ತಿಳಿಯದೆ ಇರà³à²µà²µà³à²—ಳ ಪಟà³à²Ÿà²¿"/>
+<l:gentext key="nav-home" text="ಮನೆ"/>
+<l:gentext key="nav-next" text="ಮà³à²‚ದಿನ"/>
+<l:gentext key="nav-next-sibling" text="ಮà³à²‚ದಕà³à²•à³† ಓಡಿಸà³"/>
+<l:gentext key="nav-prev" text="ಹಿಂದಿನ"/>
+<l:gentext key="nav-prev-sibling" text="ಹಿಂದಕà³à²•à³† ಓಡಿಸà³"/>
+<l:gentext key="nav-up" text="ಮೇಲೆ"/>
+<l:gentext key="nav-toc" text="ವಿಷಯ ಸೂಚಿ"/>
+<l:gentext key="Draft" text="ಕರಡೠಪà³à²°à²¤à²¿"/>
+<l:gentext key="above" text="ಮೇಲೆ"/>
+<l:gentext key="below" text="ಕೆಳಗೆ"/>
+<l:gentext key="sectioncalled" text="ಕೋರಲಾದ ವಿಭಾಗ"/>
+<l:gentext key="index symbols" text="ಸಂಕೇತಗಳà³"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ಅನà³à²¬à²‚ಧ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ಅಧà³à²¯à²¾à²¯Â %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ಸಮೀಕರಣ %n. %t"/>
+<l:template name="example" text="ಉದಾಹರಣೆ %n. %t"/>
+<l:template name="figure" text="ಚಿತà³à²°Â %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ಭಾಗ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ಕಾರà³à²¯à²µà²¿à²§à²¾à²¨Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ನಿರà³à²®à²¾à²£Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ಕೋಷà³à²Ÿà²•Â %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ಅನà³à²¬à²‚ಧ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="ಅಧà³à²¯à²¾à²¯Â %n. %t"/>
+<l:template name="part" text="ಭಾಗ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="ಉ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ಪà³à²°à²¶à³à²¨à³†: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ಪà³à²°à²¶à³à²¨à³†: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="refsection" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="refsect1" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="refsect2" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="refsect3" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="sect1" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="sect2" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="sect3" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="sect4" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="sect5" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="section" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="simplesect" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ಉ: %n"/>
+<l:template name="appendix" text="ಅನà³à²¬à²‚ಧ %n"/>
+<l:template name="bridgehead" text="ವಿಭಾಗ %n"/>
+<l:template name="chapter" text="ಅಧà³à²¯à²¾à²¯Â %n"/>
+<l:template name="equation" text="ಸಮೀಕರಣ %n"/>
+<l:template name="example" text="ಉದಾಹರಣೆ %n"/>
+<l:template name="figure" text="ಚಿತà³à²°Â %n"/>
+<l:template name="part" text="ಭಾಗ %n"/>
+<l:template name="procedure" text="ಕಾರà³à²¯à²µà²¿à²§à²¾à²¨Â %n"/>
+<l:template name="productionset" text="ನಿರà³à²®à²¾à²£Â %n"/>
+<l:template name="qandadiv" text="ಪà³à²°à²¶à³à²¨à³† ಮತà³à²¤à³ ಉತà³à²¤à²°Â %n"/>
+<l:template name="qandaentry" text="ಪà³à²°à²¶à³à²¨à³†: %n"/>
+<l:template name="question" text="ಪà³à²°à²¶à³à²¨à³†: %n"/>
+<l:template name="sect1" text="ವಿಭಾಗ %n"/>
+<l:template name="sect2" text="ವಿಭಾಗ %n"/>
+<l:template name="sect3" text="ವಿಭಾಗ %n"/>
+<l:template name="sect4" text="ವಿಭಾಗ %n"/>
+<l:template name="sect5" text="ವಿಭಾಗ %n"/>
+<l:template name="section" text="ವಿಭಾಗ %n"/>
+<l:template name="table" text="ಕೋಷà³à²Ÿà²•Â %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ಅನà³à²¬à²‚ಧ %n, %t"/>
+<l:template name="bridgehead" text="ವಿಭಾಗ %n, “%tâ€"/>
+<l:template name="chapter" text="ಅಧà³à²¯à²¾à²¯Â %n, %t"/>
+<l:template name="equation" text="ಸಮೀಕರಣ %n, “%tâ€"/>
+<l:template name="example" text="ಉದಾಹರಣೆ %n, “%tâ€"/>
+<l:template name="figure" text="ಚಿತà³à²°Â %n, “%tâ€"/>
+<l:template name="part" text="ಭಾಗ %n, “%tâ€"/>
+<l:template name="procedure" text="ಕಾರà³à²¯à²µà²¿à²§à²¾à²¨Â %n, “%tâ€"/>
+<l:template name="productionset" text="ನಿರà³à²®à²¾à²£Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="ಪà³à²°à²¶à³à²¨à³† ಮತà³à²¤à³ ಉತà³à²¤à²°Â %n, “%tâ€"/>
+<l:template name="refsect1" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="refsect2" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="refsect3" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="refsection" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="sect1" text="ವಿಭಾಗ %n, “%tâ€"/>
+<l:template name="sect2" text="ವಿಭಾಗ %n, “%tâ€"/>
+<l:template name="sect3" text="ವಿಭಾಗ %n, “%tâ€"/>
+<l:template name="sect4" text="ವಿಭಾಗ %n, “%tâ€"/>
+<l:template name="sect5" text="ವಿಭಾಗ %n, “%tâ€"/>
+<l:template name="section" text="ವಿಭಾಗ %n, “%tâ€"/>
+<l:template name="simplesect" text="ಕೋರಲಾದ ವಿಭಾಗ “%tâ€"/>
+<l:template name="table" text="ಕೋಷà³à²Ÿà²•Â %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ಮತà³à²¤à³ "/>
+<l:template name="seplast" text=", ಮತà³à²¤à³ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ಇದನà³à²¨à³ ನೋಡಿ %t"/>
+<l:template name="seealso" text="ಇದನà³à²¨à³‚ ಸಹ ನೋಡಿ %t"/>
+<l:template name="seealso-separator" text=", " lang="en"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ಶà³à²°à³‹à²¤à³ƒà²—ಳà³: "/>
+<l:template name="MsgLevel" text="ಸà³à²¤à²°: "/>
+<l:template name="MsgOrig" text="ಮೂಲ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ಜನೆವರಿ"/>
+<l:template name="February" text="ಫೆಬà³à²°à³à²µà²°à²¿"/>
+<l:template name="March" text="ಮಾರà³à²šà³"/>
+<l:template name="April" text="à²à²ªà³à²°à²²à³"/>
+<l:template name="May" text="ಮೇ"/>
+<l:template name="June" text="ಜೂನà³"/>
+<l:template name="July" text="ಜà³à²²à³ˆ"/>
+<l:template name="August" text="ಅಗಷà³à²Ÿ"/>
+<l:template name="September" text="ಸೆಪà³à²Ÿà³†à²‚ಬರà³"/>
+<l:template name="October" text="ಅಕà³à²Ÿà³‹à²¬à²°à³"/>
+<l:template name="November" text="ನವೆಂಬರà³"/>
+<l:template name="December" text="ಡಿಸೆಂಬರà³"/>
+<l:template name="Monday" text="ಸೋಮವಾರ"/>
+<l:template name="Tuesday" text="ಮಂಗಳವಾರ"/>
+<l:template name="Wednesday" text="ಬà³à²§à²µà²¾à²°"/>
+<l:template name="Thursday" text="ಗà³à²°à³à²µà²¾à²°"/>
+<l:template name="Friday" text="ಶà³à²•à³à²°à²µà²¾à²°"/>
+<l:template name="Saturday" text="ಶನಿವಾರ"/>
+<l:template name="Sunday" text="ರವಿವಾರ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ಜನೆವರಿ"/>
+<l:template name="Feb" text="ಫೆಬà³à²°à³à²µà²°à²¿"/>
+<l:template name="Mar" text="ಮಾರà³à²šà³"/>
+<l:template name="Apr" text="à²à²ªà³à²°à²¿à²²à³"/>
+<l:template name="May" text="ಮೇ"/>
+<l:template name="Jun" text="ಜೂನà³"/>
+<l:template name="Jul" text="ಜà³à²²à³ˆ"/>
+<l:template name="Aug" text="ಅಗಷà³à²Ÿ"/>
+<l:template name="Sep" text="ಸೆಪà³à²Ÿà³†à²‚ಬರà³"/>
+<l:template name="Oct" text="ಅಕà³à²Ÿà³‹à²¬à²°à³"/>
+<l:template name="Nov" text="ನವೆಂಬರà³"/>
+<l:template name="Dec" text="ಡಿಸೆಂಬರà³"/>
+<l:template name="Mon" text="ಸೋಮ"/>
+<l:template name="Tue" text="ಮಂಗಳ"/>
+<l:template name="Wed" text="ಬà³à²§"/>
+<l:template name="Thu" text="ಗà³à²°à³"/>
+<l:template name="Fri" text="ಶà³à²•à³à²°"/>
+<l:template name="Sat" text="ಶನಿ"/>
+<l:template name="Sun" text="ರವಿ"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x044b Kannada (INDIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">ಸಂಕೇತಗಳà³</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml
new file mode 100644
index 0000000..5264077
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ko" english-language-name="Korean">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ko.xml -->
+<!-- * -->
+<!-- * E-mail the edited ko.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ì´ˆë¡"/>
+<l:gentext key="abstract" text="ì´ˆë¡"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="답변"/>
+<l:gentext key="answer" text="답변"/>
+<l:gentext key="Appendix" text="부ë¡"/>
+<l:gentext key="appendix" text="부ë¡"/>
+<l:gentext key="Article" text="문서"/>
+<l:gentext key="article" text="문서"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="서지사항"/>
+<l:gentext key="bibliography" text="서지사항"/>
+<l:gentext key="Book" text="ì±…"/>
+<l:gentext key="book" text="ì±…"/>
+<l:gentext key="CAUTION" text="[경고]"/>
+<l:gentext key="Caution" text="경고"/>
+<l:gentext key="caution" text="경고"/>
+<l:gentext key="Chapter" text="장"/>
+<l:gentext key="chapter" text="장"/>
+<l:gentext key="Colophon" text="íŒê¶Œ"/>
+<l:gentext key="colophon" text="íŒê¶Œ"/>
+<l:gentext key="Copyright" text="저작권"/>
+<l:gentext key="copyright" text="저작권"/>
+<l:gentext key="Dedication" text="바치는 글"/>
+<l:gentext key="dedication" text="바치는 글"/>
+<l:gentext key="Edition" text="ì—®ìŒ"/>
+<l:gentext key="edition" text="ì—®ìŒ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="수ì‹"/>
+<l:gentext key="equation" text="수ì‹"/>
+<l:gentext key="Example" text="예"/>
+<l:gentext key="example" text="예"/>
+<l:gentext key="Figure" text="그림"/>
+<l:gentext key="figure" text="그림"/>
+<l:gentext key="Glossary" text="용어해설"/>
+<l:gentext key="glossary" text="용어해설"/>
+<l:gentext key="GlossSee" text="살펴볼 내용"/>
+<l:gentext key="glosssee" text="살펴볼 내용"/>
+<l:gentext key="GlossSeeAlso" text="다른 살펴볼 내용"/>
+<l:gentext key="glossseealso" text="다른 살펴볼 내용"/>
+<l:gentext key="IMPORTANT" text="[중요]"/>
+<l:gentext key="important" text="중요"/>
+<l:gentext key="Important" text="중요"/>
+<l:gentext key="Index" text="색ì¸"/>
+<l:gentext key="index" text="색ì¸"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ë²•ì  ê³µì§€"/>
+<l:gentext key="legalnotice" text="ë²•ì  ê³µì§€"/>
+<l:gentext key="MsgAud" text="받는 ì´"/>
+<l:gentext key="msgaud" text="받는 ì´"/>
+<l:gentext key="MsgLevel" text="중요ë„"/>
+<l:gentext key="msglevel" text="중요ë„"/>
+<l:gentext key="MsgOrig" text="보내는 ì´"/>
+<l:gentext key="msgorig" text="보내는 ì´"/>
+<l:gentext key="NOTE" text="[참고]"/>
+<l:gentext key="Note" text="참고"/>
+<l:gentext key="note" text="참고"/>
+<l:gentext key="Part" text="부"/>
+<l:gentext key="part" text="부"/>
+<l:gentext key="Preface" text="서문"/>
+<l:gentext key="preface" text="서문"/>
+<l:gentext key="Procedure" text="절차"/>
+<l:gentext key="procedure" text="절차"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="펴냄"/>
+<l:gentext key="published" text="펴냄"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="질문그리고답변"/>
+<l:gentext key="qandadiv" text="질문그리고답변"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="질문"/>
+<l:gentext key="question" text="질문"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="참고문헌"/>
+<l:gentext key="reference" text="참고문헌"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="제목"/>
+<l:gentext key="refname" text="제목"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="요약"/>
+<l:gentext key="refsynopsisdiv" text="요약"/>
+<l:gentext key="RevHistory" text="고친 과정"/>
+<l:gentext key="revhistory" text="고친 과정"/>
+<l:gentext key="revision" text="고침"/>
+<l:gentext key="Revision" text="고침"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="ì ˆ"/>
+<l:gentext key="Section" text="ì ˆ"/>
+<l:gentext key="see" text="살펴볼 내용"/>
+<l:gentext key="See" text="살펴볼 내용"/>
+<l:gentext key="seealso" text="[살펴볼 다른 내용]"/>
+<l:gentext key="Seealso" text="살펴볼 다른 내용"/>
+<l:gentext key="SeeAlso" text="[살펴볼 다른 내용]"/>
+<l:gentext key="set" text="전집"/>
+<l:gentext key="Set" text="전집"/>
+<l:gentext key="setindex" text="전집 색ì¸"/>
+<l:gentext key="SetIndex" text="전집 색ì¸"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="ë§ë¶™ìž„"/>
+<l:gentext key="step" text="단계"/>
+<l:gentext key="Step" text="단계"/>
+<l:gentext key="table" text="표"/>
+<l:gentext key="Table" text="표"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ìž‘ì€ ì •ë³´"/>
+<l:gentext key="TIP" text="[ìž‘ì€ ì •ë³´]"/>
+<l:gentext key="Tip" text="ìž‘ì€ ì •ë³´"/>
+<l:gentext key="Warning" text="주ì˜"/>
+<l:gentext key="warning" text="주ì˜"/>
+<l:gentext key="WARNING" text="주ì˜!"/>
+<l:gentext key="and" text="그리고"/>
+<l:gentext key="by" text="지ì€ì´"/>
+<l:gentext key="Edited" text="ì—®ìŒ"/>
+<l:gentext key="edited" text="ì—®ìŒ"/>
+<l:gentext key="Editedby" text="ì—®ì€ì´"/>
+<l:gentext key="editedby" text="ì—®ì€ì´"/>
+<l:gentext key="in" text="-"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="주ì„"/>
+<l:gentext key="Notes" text="주ì„"/>
+<l:gentext key="Pgs" text="Pgs."/>
+<l:gentext key="pgs" text="Pgs."/>
+<l:gentext key="Revisedby" text="ê³ ì¹œì´ "/>
+<l:gentext key="revisedby" text="ê³ ì¹œì´ "/>
+<l:gentext key="TableNotes" text="참고"/>
+<l:gentext key="tablenotes" text="참고"/>
+<l:gentext key="TableofContents" text="차례"/>
+<l:gentext key="tableofcontents" text="차례"/>
+<l:gentext key="unexpectedelementname" text="ì•Œ 수 없는 기초요소 ì´ë¦„입니다"/>
+<l:gentext key="unsupported" text="지ì›ë˜ì§€ 않습니다"/>
+<l:gentext key="xrefto" text="ì´ ê³³ì„ ì°¸ì¡°í•˜ì„¸ìš” : "/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="ìˆ˜ì‹ ëª©ë¡"/>
+<l:gentext key="ListofEquations" text="ìˆ˜ì‹ ëª©ë¡"/>
+<l:gentext key="ListofExamples" text="예 목ë¡"/>
+<l:gentext key="listofexamples" text="예 목ë¡"/>
+<l:gentext key="ListofFigures" text="그림 목ë¡"/>
+<l:gentext key="listoffigures" text="그림 목ë¡"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="í‘œ 목ë¡"/>
+<l:gentext key="ListofTables" text="í‘œ 목ë¡"/>
+<l:gentext key="ListofUnknown" text="기타 목ë¡"/>
+<l:gentext key="listofunknown" text="기타 목ë¡"/>
+<l:gentext key="nav-home" text="처ìŒìœ¼ë¡œ"/>
+<l:gentext key="nav-next" text="다ìŒ"/>
+<l:gentext key="nav-next-sibling" text="다ìŒìœ¼ë¡œ 건너뜀"/>
+<l:gentext key="nav-prev" text="ì´ì „"/>
+<l:gentext key="nav-prev-sibling" text="ì´ì „으로 건너뜀"/>
+<l:gentext key="nav-up" text="위로"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ë¶€ë¡ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%n장. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ìˆ˜ì‹ %n. %t"/>
+<l:template name="example" text="예 %n. %t"/>
+<l:template name="figure" text="그림 %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%n부. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="절차 %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="표 %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ë¶€ë¡ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="%n장. %t"/>
+<l:template name="part" text="부 %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="답변 %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="질문 %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="질문 %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="답변 %n"/>
+<l:template name="appendix" text="부ë¡Â %n"/>
+<l:template name="bridgehead" text="절 %n"/>
+<l:template name="chapter" text="%n장"/>
+<l:template name="equation" text="수ì‹Â %n"/>
+<l:template name="example" text="예 %n"/>
+<l:template name="figure" text="그림 %n"/>
+<l:template name="part" text="%n부"/>
+<l:template name="procedure" text="절차 %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="질문그리고답변 %n"/>
+<l:template name="qandaentry" text="질문 %n"/>
+<l:template name="question" text="질문 %n"/>
+<l:template name="sect1" text="%nì ˆ"/>
+<l:template name="sect2" text="%nì ˆ"/>
+<l:template name="sect3" text="%nì ˆ"/>
+<l:template name="sect4" text="%nì ˆ"/>
+<l:template name="sect5" text="%nì ˆ"/>
+<l:template name="section" text="%nì ˆ"/>
+<l:template name="table" text="표 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="부ë¡Â %n. %t"/>
+<l:template name="bridgehead" text="절 %n. “%tâ€"/>
+<l:template name="chapter" text="%n장. %t"/>
+<l:template name="equation" text="수ì‹Â %n. “%tâ€"/>
+<l:template name="example" text="예 %n. “%tâ€"/>
+<l:template name="figure" text="그림 %n. “%tâ€"/>
+<l:template name="part" text="%n부. %t"/>
+<l:template name="procedure" text="절차 %n. “%tâ€"/>
+<l:template name="productionset" text="Production %n. “%tâ€"/>
+<l:template name="qandadiv" text="질문그리고답변 %n. “%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="sect1" text="%nì ˆ. “%tâ€"/>
+<l:template name="sect2" text="%nì ˆ. “%tâ€"/>
+<l:template name="sect3" text="%nì ˆ. “%tâ€"/>
+<l:template name="sect4" text="%nì ˆ. “%tâ€"/>
+<l:template name="sect5" text="%nì ˆ. “%tâ€"/>
+<l:template name="section" text="%nì ˆ. “%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+<l:template name="table" text="표 %n. “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" 그리고 "/>
+<l:template name="seplast" text=", 그리고 "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="살펴볼 내용 %t."/>
+<l:template name="seealso" text="다른 살펴볼 내용 %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="받는 ì´: "/>
+<l:template name="MsgLevel" text="중요ë„: "/>
+<l:template name="MsgOrig" text="보내는 ì´: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0412 Korean"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml
new file mode 100644
index 0000000..eb2e50e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml
@@ -0,0 +1,732 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ky" english-language-name="Kirghiz">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ky.xml -->
+<!-- * -->
+<!-- * E-mail the edited ky.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ÐннотациÑ"/>
+<l:gentext key="abstract" text="ÐннотациÑ"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Жооп:"/>
+<l:gentext key="answer" text="Жооп:"/>
+<l:gentext key="Appendix" text="Тиркеме"/>
+<l:gentext key="appendix" text="Тиркеме"/>
+<l:gentext key="Article" text="Макала"/>
+<l:gentext key="article" text="Макала"/>
+<l:gentext key="Author" text="Ðвтор"/>
+<l:gentext key="Bibliography" text="ÐдабиÑÑ‚"/>
+<l:gentext key="bibliography" text="ÐдабиÑÑ‚"/>
+<l:gentext key="Book" text="Китеп"/>
+<l:gentext key="book" text="Китеп"/>
+<l:gentext key="CAUTION" text="ЭСКЕРТҮҮ"/>
+<l:gentext key="Caution" text="ЭÑкертүү"/>
+<l:gentext key="caution" text="ЭÑкертүү"/>
+<l:gentext key="Chapter" text="Бөлүм"/>
+<l:gentext key="chapter" text="Бөлүм"/>
+<l:gentext key="Colophon" text="Китеп жөнүндө"/>
+<l:gentext key="colophon" text="Китеп жөнүндө"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Ðрноо"/>
+<l:gentext key="dedication" text="Ðрноо"/>
+<l:gentext key="Edition" text="РедакциÑ"/>
+<l:gentext key="edition" text="РедакциÑ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Формула"/>
+<l:gentext key="equation" text="Формула"/>
+<l:gentext key="Example" text="МиÑал"/>
+<l:gentext key="example" text="МиÑал"/>
+<l:gentext key="Figure" text="Сүрөт"/>
+<l:gentext key="figure" text="Сүрөт"/>
+<l:gentext key="Glossary" text="Сөздүк"/>
+<l:gentext key="glossary" text="Сөздүк"/>
+<l:gentext key="GlossSee" text="Караңыз"/>
+<l:gentext key="glosssee" text="Караңыз"/>
+<l:gentext key="GlossSeeAlso" text="Дагы караңыз"/>
+<l:gentext key="glossseealso" text="Дагы караңыз"/>
+<l:gentext key="IMPORTANT" text="ÐœÐÐÐИЛҮҮ"/>
+<l:gentext key="important" text="Маанилүү"/>
+<l:gentext key="Important" text="Маанилүү"/>
+<l:gentext key="Index" text="ИндекÑ"/>
+<l:gentext key="index" text="ИндекÑ"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Ðвтордук укуктар"/>
+<l:gentext key="legalnotice" text="Ðвтордук укуктар"/>
+<l:gentext key="MsgAud" text="Audience"/>
+<l:gentext key="msgaud" text="Audience"/>
+<l:gentext key="MsgLevel" text="ДеңгÑÑл"/>
+<l:gentext key="msglevel" text="ДеңгÑÑл"/>
+<l:gentext key="MsgOrig" text="Булак"/>
+<l:gentext key="msgorig" text="Булак"/>
+<l:gentext key="NOTE" text="ЭСКЕРҮҮ"/>
+<l:gentext key="Note" text="ЭÑкерүү"/>
+<l:gentext key="note" text="ЭÑкерүү"/>
+<l:gentext key="Part" text="Түркүм"/>
+<l:gentext key="part" text="Түркүм"/>
+<l:gentext key="Preface" text="Кириш Ñөз"/>
+<l:gentext key="preface" text="Кириш Ñөз"/>
+<l:gentext key="Procedure" text="Процедура"/>
+<l:gentext key="procedure" text="Процедура"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="ЖариÑланган"/>
+<l:gentext key="published" text="ЖариÑланган"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="С жана Ж"/>
+<l:gentext key="qandadiv" text="С жана Ж"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Суроо:"/>
+<l:gentext key="question" text="Суроо:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Шилтеме"/>
+<l:gentext key="reference" text="Шилтеме"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ðталышы"/>
+<l:gentext key="refname" text="Ðталышы"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="СинтакÑиÑ"/>
+<l:gentext key="refsynopsisdiv" text="СинтакÑиÑ"/>
+<l:gentext key="RevHistory" text="БаÑылыш тарыхы"/>
+<l:gentext key="revhistory" text="БаÑылыш тарыхы"/>
+<l:gentext key="revision" text="БаÑылышы"/>
+<l:gentext key="Revision" text="БаÑылышы"/>
+<l:gentext key="sect1" text="Бөлүк"/>
+<l:gentext key="sect2" text="Бөлүк"/>
+<l:gentext key="sect3" text="Бөлүк"/>
+<l:gentext key="sect4" text="Бөлүк"/>
+<l:gentext key="sect5" text="Бөлүк"/>
+<l:gentext key="section" text="бөлүк"/>
+<l:gentext key="Section" text="Бөлүк"/>
+<l:gentext key="see" text="караңыз"/>
+<l:gentext key="See" text="Караңыз"/>
+<l:gentext key="seealso" text="Дагы караңыз"/>
+<l:gentext key="Seealso" text="Дагы караңыз"/>
+<l:gentext key="SeeAlso" text="Дагы караңыз"/>
+<l:gentext key="set" text="Тизме"/>
+<l:gentext key="Set" text="Тизме"/>
+<l:gentext key="setindex" text="Ылгап алынган тизме"/>
+<l:gentext key="SetIndex" text="Ылгап алынган тизме"/>
+<l:gentext key="Sidebar" text="Белгилөө"/>
+<l:gentext key="sidebar" text="белгилөө"/>
+<l:gentext key="step" text="кадам"/>
+<l:gentext key="Step" text="Кадам"/>
+<l:gentext key="table" text="таблица"/>
+<l:gentext key="Table" text="Таблица"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="шыбыроо"/>
+<l:gentext key="TIP" text="ШЫБЫРОО"/>
+<l:gentext key="Tip" text="Шыбыроо"/>
+<l:gentext key="Warning" text="Көңүл бургула"/>
+<l:gentext key="warning" text="Көңүл бургула"/>
+<l:gentext key="WARNING" text="КӨҢҮЛ БУРГУЛÐ"/>
+<l:gentext key="and" text=""/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="РедакциÑга даÑрдаган"/>
+<l:gentext key="edited" text="РедакциÑга даÑрдаган"/>
+<l:gentext key="Editedby" text="РедакциÑга даÑрдаган"/>
+<l:gentext key="editedby" text="РедакциÑга даÑрдаган"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="ЭÑкертүү"/>
+<l:gentext key="Notes" text="ЭÑкертүү"/>
+<l:gentext key="Pgs" text="Барак"/>
+<l:gentext key="pgs" text="Барак"/>
+<l:gentext key="Revisedby" text="Оңдоолор: "/>
+<l:gentext key="revisedby" text="Оңдоолор: "/>
+<l:gentext key="TableNotes" text="ЭÑкертүү"/>
+<l:gentext key="tablenotes" text="ЭÑкертүү"/>
+<l:gentext key="TableofContents" text="Мазмун"/>
+<l:gentext key="tableofcontents" text="Мазмун"/>
+<l:gentext key="unexpectedelementname" text="unexpected element name"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Формулалар"/>
+<l:gentext key="ListofEquations" text="Формулалар"/>
+<l:gentext key="ListofExamples" text="МиÑалдар"/>
+<l:gentext key="listofexamples" text="МиÑалдар"/>
+<l:gentext key="ListofFigures" text="Сүрөттөр"/>
+<l:gentext key="listoffigures" text="Сүрөттөр"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Таблицалар"/>
+<l:gentext key="ListofTables" text="Таблицалар"/>
+<l:gentext key="ListofUnknown" text="БелгиÑиз"/>
+<l:gentext key="listofunknown" text="БелгиÑиз"/>
+<l:gentext key="nav-home" text="Башы"/>
+<l:gentext key="nav-next" text="Кийинки"/>
+<l:gentext key="nav-next-sibling" text="Кийинки бөлүм"/>
+<l:gentext key="nav-prev" text="Мурунку"/>
+<l:gentext key="nav-prev-sibling" text="Мурунку бөлүм"/>
+<l:gentext key="nav-up" text="ДеңгÑÑлге жогору"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Кол жазма"/>
+<l:gentext key="above" text="жогору"/>
+<l:gentext key="below" text="ылдый"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Символдор"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="абвгдеёжзийклмнңоөпрÑтуүфхцчшщъыьÑÑŽÑ"/>
+<l:gentext key="uppercase.alpha" text="ÐБВГДЕÐЖЗИЙКЛМÐҢОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="„"/>
+<l:dingbat key="nestedendquote" text="“"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Тиркеме %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Бөлүм %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Формула %n. %t"/>
+<l:template name="example" text="МиÑал %n. %t"/>
+<l:template name="figure" text="Сүрөт %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Түркүм %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Процедура %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Таблица %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Тиркеме %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Бөлүм %n. %t"/>
+<l:template name="part" text="Түркүм %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Жооп: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Суроо: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Суроо: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="«%t»"/>
+<l:template name="refsection" text="«%t»"/>
+<l:template name="refsect1" text="«%t»"/>
+<l:template name="refsect2" text="«%t»"/>
+<l:template name="refsect3" text="«%t»"/>
+<l:template name="sect1" text="«%t»"/>
+<l:template name="sect2" text="«%t»"/>
+<l:template name="sect3" text="«%t»"/>
+<l:template name="sect4" text="«%t»"/>
+<l:template name="sect5" text="«%t»"/>
+<l:template name="section" text="«%t»"/>
+<l:template name="simplesect" text="«%t»"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Жооп: %n"/>
+<l:template name="appendix" text="Тиркеме %n"/>
+<l:template name="bridgehead" text="Бөлүк %n"/>
+<l:template name="chapter" text="Бөлүм %n"/>
+<l:template name="equation" text="Формула %n"/>
+<l:template name="example" text="МиÑал %n"/>
+<l:template name="figure" text="Сүрөт %n"/>
+<l:template name="part" text="Түркүм %n"/>
+<l:template name="procedure" text="Процедура %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="С жана Ж %n"/>
+<l:template name="qandaentry" text="Суроо: %n"/>
+<l:template name="question" text="Суроо: %n"/>
+<l:template name="sect1" text="Бөлүк %n"/>
+<l:template name="sect2" text="Бөлүк %n"/>
+<l:template name="sect3" text="Бөлүк %n"/>
+<l:template name="sect4" text="Бөлүк %n"/>
+<l:template name="sect5" text="Бөлүк %n"/>
+<l:template name="section" text="Бөлүк %n"/>
+<l:template name="table" text="Таблица %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Тиркеме %n, %t"/>
+<l:template name="bridgehead" text="Бөлүк %n, «%t»"/>
+<l:template name="chapter" text="Бөлүм %n, %t"/>
+<l:template name="equation" text="Формула %n, «%t»"/>
+<l:template name="example" text="МиÑал %n, «%t»"/>
+<l:template name="figure" text="Сүрөт %n, «%t»"/>
+<l:template name="part" text="Түркүм %n, «%t»"/>
+<l:template name="procedure" text="Процедура %n, «%t»"/>
+<l:template name="productionset" text="Production %n, «%t»"/>
+<l:template name="qandadiv" text="С жана Ж %n, «%t»"/>
+<l:template name="refsect1" text="the section called «%t»"/>
+<l:template name="refsect2" text="the section called «%t»"/>
+<l:template name="refsect3" text="the section called «%t»"/>
+<l:template name="refsection" text="the section called «%t»"/>
+<l:template name="sect1" text="Бөлүк %n, «%t»"/>
+<l:template name="sect2" text="Бөлүк %n, «%t»"/>
+<l:template name="sect3" text="Бөлүк %n, «%t»"/>
+<l:template name="sect4" text="Бөлүк %n, «%t»"/>
+<l:template name="sect5" text="Бөлүк %n, «%t»"/>
+<l:template name="section" text="Бөлүк %n, «%t»"/>
+<l:template name="simplesect" text="the section called «%t»"/>
+<l:template name="table" text="Таблица %n, «%t»"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" "/>
+<l:template name="seplast" text=", "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Караңыз %t."/>
+<l:template name="seealso" text="Дагы караңыз %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audience: "/>
+<l:template name="MsgLevel" text="ДеңгÑÑл: "/>
+<l:template name="MsgOrig" text="Булак: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Январь"/>
+<l:template name="February" text="Февраль"/>
+<l:template name="March" text="Март"/>
+<l:template name="April" text="Ðпрель"/>
+<l:template name="May" text="Май"/>
+<l:template name="June" text="Июнь"/>
+<l:template name="July" text="Июль"/>
+<l:template name="August" text="ÐвгуÑÑ‚"/>
+<l:template name="September" text="СентÑбрь"/>
+<l:template name="October" text="ОктÑбрь"/>
+<l:template name="November" text="ÐоÑбрь"/>
+<l:template name="December" text="Декабрь"/>
+<l:template name="Monday" text="Дүйшөмбү"/>
+<l:template name="Tuesday" text="Шейшемби"/>
+<l:template name="Wednesday" text="Шаршемби"/>
+<l:template name="Thursday" text="Бейшемби"/>
+<l:template name="Friday" text="Жума"/>
+<l:template name="Saturday" text="Ишемби"/>
+<l:template name="Sunday" text="Жекшемби"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Янв"/>
+<l:template name="Feb" text="Фев"/>
+<l:template name="Mar" text="Мар"/>
+<l:template name="Apr" text="Ðпр"/>
+<l:template name="May" text="Май"/>
+<l:template name="Jun" text="Июн"/>
+<l:template name="Jul" text="Июл"/>
+<l:template name="Aug" text="Ðвг"/>
+<l:template name="Sep" text="Сен"/>
+<l:template name="Oct" text="Окт"/>
+<l:template name="Nov" text="ÐоÑ"/>
+<l:template name="Dec" text="Дек"/>
+<l:template name="Mon" text="Дүй"/>
+<l:template name="Tue" text="Шей"/>
+<l:template name="Wed" text="Шар"/>
+<l:template name="Thu" text="Бей"/>
+<l:template name="Fri" text="Жум"/>
+<l:template name="Sat" text="Ише"/>
+<l:template name="Sun" text="Жек"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0440 Kirghiz"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Символдор</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">Ð</l:l>
+<l:l i="270">а</l:l>
+<l:l i="280">Б</l:l>
+<l:l i="280">б</l:l>
+<l:l i="290">Ð’</l:l>
+<l:l i="290">в</l:l>
+<l:l i="300">Г</l:l>
+<l:l i="300">г</l:l>
+<l:l i="310">Д</l:l>
+<l:l i="310">д</l:l>
+<l:l i="320">Е</l:l>
+<l:l i="320">е</l:l>
+<l:l i="320">Ð</l:l>
+<l:l i="320">Ñ‘</l:l>
+<l:l i="330">Ж</l:l>
+<l:l i="330">ж</l:l>
+<l:l i="340">З</l:l>
+<l:l i="340">з</l:l>
+<l:l i="350">И</l:l>
+<l:l i="350">и</l:l>
+<l:l i="360">Й</l:l>
+<l:l i="360">й</l:l>
+<l:l i="370">К</l:l>
+<l:l i="370">к</l:l>
+<l:l i="380">Л</l:l>
+<l:l i="380">л</l:l>
+<l:l i="390">М</l:l>
+<l:l i="390">м</l:l>
+<l:l i="400">Ð</l:l>
+<l:l i="400">н</l:l>
+<l:l i="410">Ò¢</l:l>
+<l:l i="410">Ò£</l:l>
+<l:l i="420">О</l:l>
+<l:l i="420">о</l:l>
+<l:l i="430">Ó¨</l:l>
+<l:l i="430">Ó©</l:l>
+<l:l i="440">П</l:l>
+<l:l i="440">п</l:l>
+<l:l i="450">Р</l:l>
+<l:l i="450">Ñ€</l:l>
+<l:l i="460">С</l:l>
+<l:l i="460">Ñ</l:l>
+<l:l i="470">Т</l:l>
+<l:l i="470">Ñ‚</l:l>
+<l:l i="480">У</l:l>
+<l:l i="480">у</l:l>
+<l:l i="490">Ò®</l:l>
+<l:l i="490">Ò¯</l:l>
+<l:l i="500">Ф</l:l>
+<l:l i="500">Ñ„</l:l>
+<l:l i="510">Ð¥</l:l>
+<l:l i="510">Ñ…</l:l>
+<l:l i="520">Ц</l:l>
+<l:l i="520">ц</l:l>
+<l:l i="530">Ч</l:l>
+<l:l i="530">ч</l:l>
+<l:l i="540">Ш</l:l>
+<l:l i="540">ш</l:l>
+<l:l i="550">Щ</l:l>
+<l:l i="550">щ</l:l>
+<l:l i="560">Ъ</l:l>
+<l:l i="560">ÑŠ</l:l>
+<l:l i="570">Ы</l:l>
+<l:l i="570">Ñ‹</l:l>
+<l:l i="580">Ь</l:l>
+<l:l i="580">ь</l:l>
+<l:l i="590">Э</l:l>
+<l:l i="590">Ñ</l:l>
+<l:l i="600">Ю</l:l>
+<l:l i="600">ÑŽ</l:l>
+<l:l i="610">Я</l:l>
+<l:l i="610">Ñ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd
new file mode 100644
index 0000000..9bf2f66
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd
@@ -0,0 +1,64 @@
+<!ENTITY % prefix "l">
+
+<!ENTITY % xmlns "xmlns:%prefix;">
+<!ENTITY % uri "'http://docbook.sourceforge.net/xmlns/l10n/1.0'">
+
+<!ENTITY % i18n "%prefix;:i18n">
+<!ENTITY % l10n "%prefix;:l10n">
+<!ENTITY % gentext "%prefix;:gentext">
+<!ENTITY % dingbat "%prefix;:dingbat">
+<!ENTITY % context "%prefix;:context">
+<!ENTITY % template "%prefix;:template">
+<!ENTITY % letters "%prefix;:letters">
+<!ENTITY % l "%prefix;:l">
+<!ENTITY % lang "lang NMTOKEN #IMPLIED">
+
+<!ELEMENT %i18n; ((%l10n;)+)>
+<!ATTLIST %i18n;
+ %xmlns; CDATA #FIXED %uri;
+>
+
+<!ELEMENT %l10n; (%gentext;|%dingbat;|%context;|%letters;)*>
+<!ATTLIST %l10n;
+ %xmlns; CDATA #FIXED %uri;
+ language CDATA #REQUIRED
+ english-language-name CDATA #IMPLIED
+ href CDATA #IMPLIED
+>
+
+<!ELEMENT %gentext; EMPTY>
+<!ATTLIST %gentext;
+ %lang;
+ key CDATA #REQUIRED
+ text CDATA #REQUIRED
+>
+
+<!ELEMENT %dingbat; EMPTY>
+<!ATTLIST %dingbat;
+ %lang;
+ key CDATA #REQUIRED
+ text CDATA #REQUIRED
+>
+
+<!ELEMENT %context; ((%template;)+)>
+<!ATTLIST %context;
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT %template; EMPTY>
+<!ATTLIST %template;
+ %lang;
+ name CDATA #REQUIRED
+ text CDATA #REQUIRED
+ style CDATA #IMPLIED
+>
+
+<!ELEMENT %letters; ((%l;)+)>
+<!ATTLIST %letters;
+ %lang;
+>
+
+<!ELEMENT %l; (#PCDATA)>
+<!ATTLIST %l;
+ i CDATA #REQUIRED
+>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml
new file mode 100644
index 0000000..da3df27
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml
@@ -0,0 +1,77 @@
+<?xml version='1.0'?>
+<!DOCTYPE l:i18n SYSTEM "l10n.dtd">
+<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">
+<l:l10n language="af" href="af.xml"/>
+<l:l10n language="am" href="am.xml"/>
+<l:l10n language="ar" href="ar.xml"/>
+<l:l10n language="as" href="as.xml"/>
+<l:l10n language="ast" href="ast.xml"/>
+<l:l10n language="az" href="az.xml"/>
+<l:l10n language="bg" href="bg.xml"/>
+<l:l10n language="bn" href="bn.xml"/>
+<l:l10n language="bn_in" href="bn_in.xml"/>
+<l:l10n language="bs" href="bs.xml"/>
+<l:l10n language="ca" href="ca.xml"/>
+<l:l10n language="cs" href="cs.xml"/>
+<l:l10n language="cy" href="cy.xml"/>
+<l:l10n language="da" href="da.xml"/>
+<l:l10n language="de" href="de.xml"/>
+<l:l10n language="el" href="el.xml"/>
+<l:l10n language="en" href="en.xml"/>
+<l:l10n language="eo" href="eo.xml"/>
+<l:l10n language="es" href="es.xml"/>
+<l:l10n language="et" href="et.xml"/>
+<l:l10n language="eu" href="eu.xml"/>
+<l:l10n language="fa" href="fa.xml"/>
+<l:l10n language="fi" href="fi.xml"/>
+<l:l10n language="fr" href="fr.xml"/>
+<l:l10n language="ga" href="ga.xml"/>
+<l:l10n language="gl" href="gl.xml"/>
+<l:l10n language="gu" href="gu.xml"/>
+<l:l10n language="he" href="he.xml"/>
+<l:l10n language="hi" href="hi.xml"/>
+<l:l10n language="hr" href="hr.xml"/>
+<l:l10n language="hu" href="hu.xml"/>
+<l:l10n language="id" href="id.xml"/>
+<l:l10n language="is" href="is.xml"/>
+<l:l10n language="it" href="it.xml"/>
+<l:l10n language="ja" href="ja.xml"/>
+<l:l10n language="ka" href="ka.xml"/>
+<l:l10n language="kn" href="kn.xml"/>
+<l:l10n language="ko" href="ko.xml"/>
+<l:l10n language="ky" href="ky.xml"/>
+<l:l10n language="la" href="la.xml"/>
+<l:l10n language="lt" href="lt.xml"/>
+<l:l10n language="lv" href="lv.xml"/>
+<l:l10n language="ml" href="ml.xml"/>
+<l:l10n language="mn" href="mn.xml"/>
+<l:l10n language="mr" href="mr.xml"/>
+<l:l10n language="nb" href="nb.xml"/>
+<l:l10n language="nds" href="nds.xml"/>
+<l:l10n language="nl" href="nl.xml"/>
+<l:l10n language="nn" href="nn.xml"/>
+<l:l10n language="or" href="or.xml"/>
+<l:l10n language="pa" href="pa.xml"/>
+<l:l10n language="pl" href="pl.xml"/>
+<l:l10n language="pt" href="pt.xml"/>
+<l:l10n language="pt_br" href="pt_br.xml"/>
+<l:l10n language="ro" href="ro.xml"/>
+<l:l10n language="ru" href="ru.xml"/>
+<l:l10n language="sk" href="sk.xml"/>
+<l:l10n language="sl" href="sl.xml"/>
+<l:l10n language="sq" href="sq.xml"/>
+<l:l10n language="sr" href="sr.xml"/>
+<l:l10n language="sr_latn" href="sr_Latn.xml"/>
+<l:l10n language="sv" href="sv.xml"/>
+<l:l10n language="ta" href="ta.xml"/>
+<l:l10n language="te" href="te.xml"/>
+<l:l10n language="th" href="th.xml"/>
+<l:l10n language="tl" href="tl.xml"/>
+<l:l10n language="tr" href="tr.xml"/>
+<l:l10n language="uk" href="uk.xml"/>
+<l:l10n language="vi" href="vi.xml"/>
+<l:l10n language="xh" href="xh.xml"/>
+<l:l10n language="zh" href="zh.xml"/>
+<l:l10n language="zh_cn" href="zh_cn.xml"/>
+<l:l10n language="zh_tw" href="zh_tw.xml"/>
+</l:i18n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl
new file mode 100644
index 0000000..f35a0b6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl
@@ -0,0 +1,593 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ exclude-result-prefixes="l"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: l10n.xsl 8904 2010-09-11 01:56:22Z kosek $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ This file contains localization templates (for internationalization)
+ ******************************************************************** -->
+
+<xsl:param name="l10n.xml" select="document('../common/l10n.xml')"/>
+<xsl:param name="local.l10n.xml" select="document('')"/>
+<xsl:param name="empty.local.l10n.xml" select="not($local.l10n.xml//l:l10n)"/>
+
+<xsl:key name="l10n-lang" match="l:l10n" use="@language"/>
+<xsl:key name="l10n-gentext" match="l:l10n/l:gentext" use="@key"/>
+<xsl:key name="l10n-dingbat" match="l:l10n/l:dingbat" use="@key"/>
+<xsl:key name="l10n-context" match="l:l10n/l:context" use="@name"/>
+<xsl:key name="l10n-template" match="l:l10n/l:context/l:template[not(@style)]" use="concat(../@name, '#', @name)"/>
+<xsl:key name="l10n-template-style" match="l:l10n/l:context/l:template[@style]" use="concat(../@name, '#', @name, '#', @style)"/>
+
+<xsl:template name="l10n.language">
+ <xsl:param name="target" select="."/>
+ <xsl:param name="xref-context" select="false()"/>
+
+ <xsl:variable name="mc-language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:when test="$xref-context or $l10n.gentext.use.xref.language != 0">
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="$target/ancestor-or-self::*
+ [@lang or @xml:lang][1]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="$target/ancestor-or-self::*
+ [@lang or @xml:lang][1]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="language" select="translate($mc-language,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ-',
+ 'abcdefghijklmnopqrstuvwxyz_')"/>
+
+ <xsl:for-each select="$l10n.xml"> <!-- We need to change context in order to get key work -->
+ <xsl:choose>
+ <xsl:when test="key('l10n-lang', $language)">
+ <xsl:value-of select="$language"/>
+ </xsl:when>
+ <!-- try just the lang code without country -->
+ <xsl:when test="key('l10n-lang', substring-before($language,'_'))">
+ <xsl:value-of select="substring-before($language,'_')"/>
+ </xsl:when>
+ <!-- or use the default -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No localization exists for "</xsl:text>
+ <xsl:value-of select="$language"/>
+ <xsl:text>" or "</xsl:text>
+ <xsl:value-of select="substring-before($language,'_')"/>
+ <xsl:text>". Using default "</xsl:text>
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ <xsl:text>".</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="l10n.language.name">
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:for-each select="$l10n.xml">
+ <xsl:value-of
+ select="document(key('l10n-lang', $lang)/@href)/l:l10n/@english-language-name"/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="language.attribute">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="$node/ancestor-or-self::*
+ [@lang or @xml:lang][1]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$language != ''">
+ <xsl:attribute name="lang">
+ <xsl:choose>
+ <xsl:when test="$l10n.lang.value.rfc.compliant != 0">
+ <xsl:value-of select="translate($language, '_', '-')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- FIXME: This is sort of hack, but it was the easiest way to add at least partial support for dir attribute -->
+ <xsl:copy-of select="ancestor-or-self::*[@dir][1]/@dir"/>
+</xsl:template>
+
+<!-- Duplication of language.attribute template to allow for xml:lang attribute
+ creation for XHTML 1.1 and epub target -->
+<xsl:template name="xml.language.attribute">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="$node/ancestor-or-self::*
+ [@lang or @xml:lang][1]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$language != ''">
+ <xsl:attribute name="xml:lang">
+ <xsl:choose>
+ <xsl:when test="$l10n.lang.value.rfc.compliant != 0">
+ <xsl:value-of select="translate($language, '_', '-')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- FIXME: This is sort of hack, but it was the easiest way to add at least partial support for dir attribute -->
+ <xsl:copy-of select="ancestor-or-self::*[@dir][1]/@dir"/>
+</xsl:template>
+
+<xsl:template name="gentext">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:for-each select="$l10n.xml"> <!-- We need to switch context in order to make key() work -->
+ <xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+ <xsl:variable name="local.l10n.gentext"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
+
+ <xsl:variable name="l10n.gentext"
+ select="key('l10n-gentext', $key)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$local.l10n.gentext">
+ <xsl:value-of select="$local.l10n.gentext/@text"/>
+ </xsl:when>
+ <xsl:when test="$l10n.gentext">
+ <xsl:value-of select="$l10n.gentext/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of "</xsl:text>
+ <xsl:value-of select="$key"/>
+ <xsl:text>" exists</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>; using "en".</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:message>
+
+ <xsl:for-each select="$l10n.xml"> <!-- We need to switch context in order to make key() work -->
+ <xsl:for-each select="document(key('l10n-lang', 'en')/@href)">
+ <xsl:value-of select="key('l10n-gentext', $key)[1]/@text"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="gentext.element.name">
+ <xsl:param name="element.name" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$element.name"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.space">
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template name="gentext.edited.by">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Editedby'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.by">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:for-each select="$l10n.xml"> <!-- We need to switch context in order to make key() work -->
+ <xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+ <xsl:variable name="local.l10n.dingbat"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
+
+ <xsl:variable name="l10n.dingbat"
+ select="key('l10n-dingbat', $dingbat)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$local.l10n.dingbat">
+ <xsl:value-of select="$local.l10n.dingbat/@text"/>
+ </xsl:when>
+ <xsl:when test="$l10n.dingbat">
+ <xsl:value-of select="$l10n.dingbat/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of dingbat </xsl:text>
+ <xsl:value-of select="$dingbat"/>
+ <xsl:text> exists; using "en".</xsl:text>
+ </xsl:message>
+
+ <xsl:for-each select="$l10n.xml"> <!-- We need to switch context in order to make key() work -->
+ <xsl:for-each select="document(key('l10n-lang', 'en')/@href)">
+ <xsl:value-of select="key('l10n-dingbat', $dingbat)[1]/@text"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="gentext.startquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">startquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.endquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">endquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nestedstartquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">nestedstartquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nestedendquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">nestedendquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.prev">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-prev'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.next">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-next'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.home">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-home'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.up">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-up'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="gentext.template">
+ <xsl:param name="context" select="'default'"/>
+ <xsl:param name="name" select="'default'"/>
+ <xsl:param name="origname" select="$name"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$empty.local.l10n.xml">
+ <xsl:for-each select="$l10n.xml"> <!-- We need to switch context in order to make key() work -->
+ <xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+
+ <xsl:variable name="localization.node"
+ select="key('l10n-lang', $lang)[1]"/>
+
+ <xsl:if test="count($localization.node) = 0
+ and $verbose != 0">
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization exists.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="context.node"
+ select="key('l10n-context', $context)[1]"/>
+
+ <xsl:if test="count($context.node) = 0
+ and $verbose != 0">
+ <xsl:message>
+ <xsl:text>No context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" exists in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:for-each select="$context.node">
+ <xsl:variable name="template.node"
+ select="(key('l10n-template-style', concat($context, '#', $name, '#', $xrefstyle))
+ |key('l10n-template', concat($context, '#', $name)))[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$template.node/@text">
+ <xsl:value-of select="$template.node/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="contains($name, '/')">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="substring-after($name, '/')"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$verbose = 0">
+ <!-- silence -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No template for "</xsl:text>
+ <xsl:value-of select="$origname"/>
+ <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$l10n.xml"> <!-- We need to switch context in order to make key() work -->
+ <xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+
+ <xsl:variable name="local.localization.node"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang])[1]"/>
+
+ <xsl:variable name="localization.node"
+ select="key('l10n-lang', $lang)[1]"/>
+
+ <xsl:if test="count($localization.node) = 0
+ and count($local.localization.node) = 0
+ and $verbose != 0">
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization exists.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="local.context.node"
+ select="$local.localization.node/l:context[@name=$context]"/>
+
+ <xsl:variable name="context.node"
+ select="key('l10n-context', $context)[1]"/>
+
+ <xsl:if test="count($context.node) = 0
+ and count($local.context.node) = 0
+ and $verbose != 0">
+ <xsl:message>
+ <xsl:text>No context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" exists in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="local.template.node"
+ select="($local.context.node/l:template[@name=$name
+ and @style
+ and @style=$xrefstyle]
+ |$local.context.node/l:template[@name=$name
+ and not(@style)])[1]"/>
+
+ <xsl:for-each select="$context.node">
+ <xsl:variable name="template.node"
+ select="(key('l10n-template-style', concat($context, '#', $name, '#', $xrefstyle))
+ |key('l10n-template', concat($context, '#', $name)))[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$local.template.node/@text">
+ <xsl:value-of select="$local.template.node/@text"/>
+ </xsl:when>
+ <xsl:when test="$template.node/@text">
+ <xsl:value-of select="$template.node/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="contains($name, '/')">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="substring-after($name, '/')"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$verbose = 0">
+ <!-- silence -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No template for "</xsl:text>
+ <xsl:value-of select="$origname"/>
+ <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- silently test if a gentext template exists -->
+
+<xsl:template name="gentext.template.exists">
+ <xsl:param name="context" select="'default'"/>
+ <xsl:param name="name" select="'default'"/>
+ <xsl:param name="origname" select="$name"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($template) != 0">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml
new file mode 100644
index 0000000..f8a7013
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="la" english-language-name="Latin">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/la.xml -->
+<!-- * -->
+<!-- * E-mail the edited la.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Summarium"/>
+<l:gentext key="abstract" text="summarium"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="r:"/>
+<l:gentext key="Appendix" text="Additamentum"/>
+<l:gentext key="appendix" text="additamentum"/>
+<l:gentext key="Article" text="Articulus"/>
+<l:gentext key="article" text="articulus"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Conspectus librorum"/>
+<l:gentext key="bibliography" text="conspectus librorum"/>
+<l:gentext key="Book" text="Liber"/>
+<l:gentext key="book" text="liber"/>
+<l:gentext key="CAUTION" text="Caveat"/>
+<l:gentext key="Caution" text="Caveat"/>
+<l:gentext key="caution" text="caveat"/>
+<l:gentext key="Chapter" text="Capitulum"/>
+<l:gentext key="chapter" text="capitulum"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="colophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Dedicatoria"/>
+<l:gentext key="dedication" text="dedicatoria"/>
+<l:gentext key="Edition" text="Editio"/>
+<l:gentext key="edition" text="editio"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Equatio"/>
+<l:gentext key="equation" text="equatio"/>
+<l:gentext key="Example" text="Exemplum"/>
+<l:gentext key="example" text="exemplum"/>
+<l:gentext key="Figure" text="Descriptio"/>
+<l:gentext key="figure" text="descriptio"/>
+<l:gentext key="Glossary" text="Glossarium"/>
+<l:gentext key="glossary" text="glossarium"/>
+<l:gentext key="GlossSee" text="Cfr."/>
+<l:gentext key="glosssee" text="Cfr."/>
+<l:gentext key="GlossSeeAlso" text="Cfr. autem"/>
+<l:gentext key="glossseealso" text="cfr. autem"/>
+<l:gentext key="IMPORTANT" text="GRAVE"/>
+<l:gentext key="important" text="grave"/>
+<l:gentext key="Important" text="Grave"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Nuntius legalis"/>
+<l:gentext key="legalnotice" text="nuntius legalis"/>
+<l:gentext key="MsgAud" text="Legentes"/>
+<l:gentext key="msgaud" text="legentes"/>
+<l:gentext key="MsgLevel" text="Libra"/>
+<l:gentext key="msglevel" text="libra"/>
+<l:gentext key="MsgOrig" text="Fons"/>
+<l:gentext key="msgorig" text="fons"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Pars"/>
+<l:gentext key="part" text="pars"/>
+<l:gentext key="Preface" text="Praefatio"/>
+<l:gentext key="preface" text="praefatio"/>
+<l:gentext key="Procedure" text="Progressio"/>
+<l:gentext key="procedure" text="progressio"/>
+<l:gentext key="ProductionSet" text="Compositio"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Editum"/>
+<l:gentext key="published" text="editum"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; R"/>
+<l:gentext key="qandadiv" text="Q &amp; R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="q:"/>
+<l:gentext key="RefEntry" text="Mentionis descriptio"/>
+<l:gentext key="refentry" text="mentionis descriptio"/>
+<l:gentext key="Reference" text="Mentio"/>
+<l:gentext key="reference" text="mentio"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Mentionis signum"/>
+<l:gentext key="refname" text="mentionis signum"/>
+<l:gentext key="RefSection" text="Mentionis pars"/>
+<l:gentext key="refsection" text="mentionis pars"/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revisionum historia"/>
+<l:gentext key="revhistory" text="revisionum historia"/>
+<l:gentext key="revision" text="Revisio"/>
+<l:gentext key="Revision" text="revisio"/>
+<l:gentext key="sect1" text="Sectio"/>
+<l:gentext key="sect2" text="Sectio"/>
+<l:gentext key="sect3" text="Sectio"/>
+<l:gentext key="sect4" text="Sectio"/>
+<l:gentext key="sect5" text="Sectio"/>
+<l:gentext key="section" text="Sectio"/>
+<l:gentext key="Section" text="Sectio"/>
+<l:gentext key="see" text="videtur"/>
+<l:gentext key="See" text="See" lang="en"/>
+<l:gentext key="seealso" text="videtur autem"/>
+<l:gentext key="Seealso" text="See also" lang="en"/>
+<l:gentext key="SeeAlso" text="See Also" lang="en"/>
+<l:gentext key="set" text="complexus"/>
+<l:gentext key="Set" text="Complexus"/>
+<l:gentext key="setindex" text="complexi index"/>
+<l:gentext key="SetIndex" text="Complexi index"/>
+<l:gentext key="Sidebar" text="Linea a latere posita"/>
+<l:gentext key="sidebar" text="linea a latere posita"/>
+<l:gentext key="step" text="peractio"/>
+<l:gentext key="Step" text="Peractio"/>
+<l:gentext key="table" text="tabula"/>
+<l:gentext key="Table" text="Tabula"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="consilium"/>
+<l:gentext key="TIP" text="CONSILIUM"/>
+<l:gentext key="Tip" text="Consilium"/>
+<l:gentext key="Warning" text="MONITUS"/>
+<l:gentext key="warning" text="monitus"/>
+<l:gentext key="WARNING" text="MONITUS"/>
+<l:gentext key="and" text="et"/>
+<l:gentext key="by" text="a"/>
+<l:gentext key="Edited" text="Editum"/>
+<l:gentext key="edited" text="editum"/>
+<l:gentext key="Editedby" text="Editum a"/>
+<l:gentext key="editedby" text="editum a"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="commentaria"/>
+<l:gentext key="Notes" text="Commentaria"/>
+<l:gentext key="Pgs" text="Pag."/>
+<l:gentext key="pgs" text="pag."/>
+<l:gentext key="Revisedby" text="Excussum a: "/>
+<l:gentext key="revisedby" text="excussum a: "/>
+<l:gentext key="TableNotes" text="Tabulae commentaria"/>
+<l:gentext key="tablenotes" text="tabulae commentaria"/>
+<l:gentext key="TableofContents" text="Index rerum notabilium"/>
+<l:gentext key="tableofcontents" text="index rerum notabilium"/>
+<l:gentext key="unexpectedelementname" text="necopinatum nomen"/>
+<l:gentext key="unsupported" text="non sustentatus"/>
+<l:gentext key="xrefto" text="mentio"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="index aequationum"/>
+<l:gentext key="ListofEquations" text="Index aequationum"/>
+<l:gentext key="ListofExamples" text="Index exemplorum"/>
+<l:gentext key="listofexamples" text="index exemplorum"/>
+<l:gentext key="ListofFigures" text="Index descriptionum"/>
+<l:gentext key="listoffigures" text="index descriptionum"/>
+<l:gentext key="ListofProcedures" text="Index progressiorum"/>
+<l:gentext key="listofprocedures" text="index progressiorum"/>
+<l:gentext key="listoftables" text="index tabularum"/>
+<l:gentext key="ListofTables" text="Index tabularum"/>
+<l:gentext key="ListofUnknown" text="Index ignotorum"/>
+<l:gentext key="listofunknown" text="index ignotorum"/>
+<l:gentext key="nav-home" text="Initium"/>
+<l:gentext key="nav-next" text="Sequens"/>
+<l:gentext key="nav-next-sibling" text="Procede"/>
+<l:gentext key="nav-prev" text="Praecedens"/>
+<l:gentext key="nav-prev-sibling" text="Recede"/>
+<l:gentext key="nav-up" text="Ascende"/>
+<l:gentext key="nav-toc" text="Index"/>
+<l:gentext key="Draft" text="Plagula"/>
+<l:gentext key="above" text="supra"/>
+<l:gentext key="below" text="sub"/>
+<l:gentext key="sectioncalled" text="sectio vocata"/>
+<l:gentext key="index symbols" text="signa"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="Ë¢"/>
+<l:dingbat key="endquote" text="Û¢"/>
+<l:dingbat key="nestedstartquote" text="‹"/>
+<l:dingbat key="nestedendquote" text="›"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="â€"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Additamentum%n.%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capitulum%n.%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equatio%n.%t"/>
+<l:template name="example" text="Exemplum%n.%t"/>
+<l:template name="figure" text="Descriptio%n.%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Pars%n.%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Progressio%n.%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Compositio%n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabula%n.%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Additamentum%n.%t"/>
+<l:template name="article/appendix" text="%n.%t"/>
+<l:template name="bridgehead" text="%n.%t"/>
+<l:template name="chapter" text="Capitulum%n.%t"/>
+<l:template name="part" text="Pars%n.%t"/>
+<l:template name="sect1" text="%n.%t"/>
+<l:template name="sect2" text="%n.%t"/>
+<l:template name="sect3" text="%n.%t"/>
+<l:template name="sect4" text="%n.%t"/>
+<l:template name="sect5" text="%n.%t"/>
+<l:template name="section" text="%n.%t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="R:%n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q:%n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q:%n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsection" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect1" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect2" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect3" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect1" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect2" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect3" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect4" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect5" text="sectio vocata ˢ%tۢ"/>
+<l:template name="section" text="sectio vocata ˢ%tۢ"/>
+<l:template name="simplesect" text="sectio vocata ˢ%tۢ"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R:%n"/>
+<l:template name="appendix" text="Additamentum%n"/>
+<l:template name="bridgehead" text="Sectio%n"/>
+<l:template name="chapter" text="Capitulum%n"/>
+<l:template name="equation" text="Equatio%n"/>
+<l:template name="example" text="Exemplum%n"/>
+<l:template name="figure" text="Descriptio%n"/>
+<l:template name="part" text="Pars%n"/>
+<l:template name="procedure" text="Progressio%n"/>
+<l:template name="productionset" text="Compositio%n"/>
+<l:template name="qandadiv" text="Q &amp; R%n"/>
+<l:template name="qandaentry" text="Q:%n"/>
+<l:template name="question" text="Q:%n"/>
+<l:template name="sect1" text="Sectio%n"/>
+<l:template name="sect2" text="Sectio%n"/>
+<l:template name="sect3" text="Sectio%n"/>
+<l:template name="sect4" text="Sectio%n"/>
+<l:template name="sect5" text="Sectio%n"/>
+<l:template name="section" text="Sectio%n"/>
+<l:template name="table" text="Tabula%n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Additamentum%n, %t"/>
+<l:template name="bridgehead" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="chapter" text="Capitulum%n, %t"/>
+<l:template name="equation" text="Equatio%n, ˢ%tۢ"/>
+<l:template name="example" text="Exemplum%n, ˢ%tۢ"/>
+<l:template name="figure" text="Descriptio%n, ˢ%tۢ"/>
+<l:template name="part" text="Pars%n, ˢ%tۢ"/>
+<l:template name="procedure" text="Progressio%n, ˢ%tۢ"/>
+<l:template name="productionset" text="Compositio%n, ˢ%tۢ"/>
+<l:template name="qandadiv" text="Q &amp; R%n, ˢ%tۢ"/>
+<l:template name="refsect1" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect2" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect3" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsection" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect1" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect2" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect3" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect4" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect5" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="section" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="simplesect" text="sectio vocata ˢ%tۢ"/>
+<l:template name="table" text="Tabula%n, ˢ%tۢ"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" et "/>
+<l:template name="seplast" text=", et "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Cfr. %t."/>
+<l:template name="seealso" text="Cfr. autem %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Legentes: "/>
+<l:template name="MsgLevel" text="Libra: "/>
+<l:template name="MsgOrig" text="Fons: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Ianuarii"/>
+<l:template name="February" text="Februarii"/>
+<l:template name="March" text="Martii"/>
+<l:template name="April" text="Aprilis"/>
+<l:template name="May" text="Maii"/>
+<l:template name="June" text="Iunii"/>
+<l:template name="July" text="Iulii"/>
+<l:template name="August" text="Augusti"/>
+<l:template name="September" text="Septembris"/>
+<l:template name="October" text="Octobris"/>
+<l:template name="November" text="Novembris"/>
+<l:template name="December" text="Decembris"/>
+<l:template name="Monday" text="Lunae"/>
+<l:template name="Tuesday" text="Martis"/>
+<l:template name="Wednesday" text="Mercurii"/>
+<l:template name="Thursday" text="Iovis"/>
+<l:template name="Friday" text="Veneris"/>
+<l:template name="Saturday" text="Sabathi"/>
+<l:template name="Sunday" text="Dominica"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ian"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Iun"/>
+<l:template name="Jul" text="Iul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Lun"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Mer"/>
+<l:template name="Thu" text="Iov"/>
+<l:template name="Fri" text="Ven"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)" lang="en"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl
new file mode 100644
index 0000000..c5f74f3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl
@@ -0,0 +1,890 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: labels.xsl 8540 2009-12-02 05:28:09Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- label markup -->
+
+<doc:mode mode="label.markup" xmlns="">
+<refpurpose>Provides access to element labels</refpurpose>
+<refdescription id="label.markup-desc">
+<para>Processing an element in the
+<literal role="mode">label.markup</literal> mode produces the
+element label.</para>
+<para>Trailing punctuation is not added to the label.
+</para>
+</refdescription>
+</doc:mode>
+
+<xsl:template match="*" mode="intralabel.punctuation">
+ <xsl:text>.</xsl:text>
+</xsl:template>
+
+<xsl:template match="*" mode="label.markup">
+ <xsl:param name="verbose" select="1"/>
+ <xsl:if test="$verbose">
+ <xsl:message>
+ <xsl:text>Request for label of unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="set|book" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($part.autolabel) != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$part.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number from="book" count="part" format="{$format}"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="partintro" mode="label.markup">
+ <!-- no label -->
+</xsl:template>
+
+<xsl:template match="preface" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($preface.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$preface.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="preface" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="preface" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="chapter" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($chapter.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$chapter.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="chapter" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="chapter" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="appendix" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($appendix.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$appendix.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="appendix" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book|article"
+ count="appendix" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="article" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="dedication|colophon" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="reference" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($reference.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$reference.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="reference" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="reference" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="refentry" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section" mode="label.markup">
+ <!-- if this is a nested section, label the parent -->
+ <xsl:if test="local-name(..) = 'section'">
+ <xsl:variable name="parent.section.label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != '0'">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- does this section get labelled? -->
+ <xsl:variable name="label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+<!--
+ <xsl:message>
+ test: <xsl:value-of select="$label"/>, <xsl:number count="section"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$label != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number format="{$format}" count="section"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1" mode="label.markup">
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="component.label">
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:variable>
+
+
+ <xsl:variable name="is.numbered">
+ <xsl:call-template name="label.this.section"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$is.numbered != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:copy-of select="$component.label"/>
+ <xsl:number format="{$format}" count="sect1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect2|sect3|sect4|sect5" mode="label.markup">
+ <!-- label the parent -->
+ <xsl:variable name="parent.section.label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != '0'">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+
+ <xsl:variable name="is.numbered">
+ <xsl:call-template name="label.this.section"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$is.numbered != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'sect2'">
+ <xsl:number format="{$format}" count="sect2"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect3'">
+ <xsl:number format="{$format}" count="sect3"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect4'">
+ <xsl:number format="{$format}" count="sect4"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect5'">
+ <xsl:number format="{$format}" count="sect5"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>label.markup: this can't happen!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="label.markup">
+ <!-- FIXME: could we do a better job here? -->
+ <xsl:variable name="contsec"
+ select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface)[last()]"/>
+
+ <xsl:apply-templates select="$contsec" mode="label.markup"/>
+</xsl:template>
+
+<xsl:template match="refsect1" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number count="refsect1" format="{$format}"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="refsect2|refsect3" mode="label.markup">
+ <!-- label the parent -->
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'refsect2'">
+ <xsl:number count="refsect2" format="{$format}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number count="refsect3" format="{$format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="simplesect" mode="label.markup">
+ <!-- if this is a nested section, label the parent -->
+ <xsl:if test="local-name(..) = 'section'
+ or local-name(..) = 'sect1'
+ or local-name(..) = 'sect2'
+ or local-name(..) = 'sect3'
+ or local-name(..) = 'sect4'
+ or local-name(..) = 'sect5'">
+ <xsl:variable name="parent.section.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- does this section get labelled? -->
+ <xsl:variable name="label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$label != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number format="{$format}" count="simplesect"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="label.markup">
+ <xsl:variable name="lparent" select="(ancestor::set
+ |ancestor::book
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3)[last()]"/>
+
+ <xsl:variable name="lparent.prefix">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="$qanda.inherit.numeration != 0">
+ <xsl:if test="$lparent.prefix != ''">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ <xsl:apply-templates select="$lparent" mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$qandadiv.autolabel != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$qandadiv.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prefix"/>
+ <xsl:number level="multiple" count="qandadiv" format="{$format}"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="label.markup">
+ <xsl:variable name="lparent" select="(ancestor::set
+ |ancestor::book
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3)[last()]"/>
+
+ <xsl:variable name="lparent.prefix">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="$qanda.inherit.numeration != 0">
+ <xsl:choose>
+ <xsl:when test="ancestor::qandadiv">
+ <xsl:variable name="div.label">
+ <xsl:apply-templates select="ancestor::qandadiv[1]" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($div.label) != 0">
+ <xsl:copy-of select="$div.label"/>
+ <xsl:apply-templates select="ancestor::qandadiv[1]"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$lparent.prefix != ''">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ <xsl:apply-templates select="$lparent" mode="intralabel.punctuation"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="inhlabel"
+ select="ancestor-or-self::qandaset/@defaultlabel[1]"/>
+
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="$inhlabel != ''">
+ <xsl:value-of select="$inhlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="label" select="label"/>
+
+ <xsl:choose>
+ <xsl:when test="count($label)>0">
+ <xsl:apply-templates select="$label"/>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'qanda' and self::question">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Question'"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'qanda' and self::answer">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Answer'"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="($deflabel = 'qnumber' or
+ $deflabel = 'qnumberanda') and self::question">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Question'"/>
+ </xsl:call-template>
+ <xsl:text>&#xA0;</xsl:text>
+ <xsl:value-of select="$prefix"/>
+ <xsl:number level="multiple" count="qandaentry" format="1"/>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'qnumberanda' and self::answer">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Answer'"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'number' and self::question">
+ <xsl:value-of select="$prefix"/>
+ <xsl:number level="multiple" count="qandaentry" format="1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliography|glossary|
+ qandaset|index|setindex" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example" mode="label.markup">
+ <xsl:variable name="pchap"
+ select="(ancestor::chapter
+ |ancestor::appendix
+ |ancestor::article[ancestor::book])[last()]"/>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="count($pchap) &gt; 0">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$prefix != ''">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
+ <xsl:number format="1" from="chapter|appendix" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number format="1" from="book|article" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="procedure" mode="label.markup">
+ <xsl:variable name="pchap"
+ select="ancestor::chapter
+ |ancestor::appendix
+ |ancestor::article[ancestor::book]"/>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="count($pchap) &gt; 0">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$formal.procedures = 0">
+ <!-- No label -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="count($pchap)>0">
+ <xsl:if test="$prefix != ''">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:number count="procedure[title]" format="1"
+ from="chapter|appendix" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number count="procedure[title]" format="1"
+ from="book|article" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="equation" mode="label.markup">
+ <xsl:variable name="pchap"
+ select="ancestor::chapter
+ |ancestor::appendix
+ |ancestor::article[ancestor::book]"/>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="count($pchap) &gt; 0">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="count($pchap)>0">
+ <xsl:if test="$prefix != ''">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:number format="1" count="equation"
+ from="chapter|appendix" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number format="1" count="equation"
+ from="book|article" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem" mode="label.markup">
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration">
+ <xsl:with-param name="node" select="parent::orderedlist"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">1</xsl:when>
+ <xsl:when test="$numeration='loweralpha'">a</xsl:when>
+ <xsl:when test="$numeration='lowerroman'">i</xsl:when>
+ <xsl:when test="$numeration='upperalpha'">A</xsl:when>
+ <xsl:when test="$numeration='upperroman'">I</xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected numeration: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ </xsl:message>
+ <xsl:value-of select="1."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="item-number">
+ <xsl:call-template name="orderedlist-item-number"/>
+ </xsl:variable>
+
+ <xsl:number value="$item-number" format="{$type}"/>
+</xsl:template>
+
+<xsl:template match="abstract" mode="label.markup">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="sidebar" mode="label.markup">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="label.this.section">
+ <xsl:param name="section" select="."/>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$level &lt;= $section.autolabel.max.depth">
+ <xsl:value-of select="$section.autolabel"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="label.this.section" xmlns="">
+<refpurpose>Returns true if $section should be labelled</refpurpose>
+<refdescription id="label.this.section-desc">
+<para>Returns true if the specified section should be labelled.
+By default, this template returns zero unless
+the section level is less than or equal to the value of the
+<literal>$section.autolabel.max.depth</literal> parameter, in
+which case it returns
+<literal>$section.autolabel</literal>.
+Custom stylesheets may override it to get more selective behavior.</para>
+</refdescription>
+</doc:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="default.autolabel.format">
+ <xsl:param name="context" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($context) = 'appendix'">
+ <xsl:value-of select="'A'"/>
+ </xsl:when>
+ <xsl:when test="local-name($context) = 'part'">
+ <xsl:value-of select="'I'"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="autolabel.format">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="format"/>
+
+ <xsl:choose>
+ <xsl:when test="string($format) != 0">
+ <xsl:choose>
+ <xsl:when test="string($format)='arabic' or $format='1'">1</xsl:when>
+ <xsl:when test="$format='loweralpha' or $format='a'">
+ <xsl:value-of select="'a'"/>
+ </xsl:when>
+ <xsl:when test="$format='lowerroman' or $format='i'">
+ <xsl:value-of select="'i'"/>
+ </xsl:when>
+ <xsl:when test="$format='upperalpha' or $format='A'">
+ <xsl:value-of select="'A'"/>
+ </xsl:when>
+ <xsl:when test="$format='upperroman' or $format='I'">
+ <xsl:value-of select="'I'"/>
+ </xsl:when>
+ <xsl:when test="$format='arabicindic' or $format='&#x661;'">
+ <xsl:value-of select="'&#x661;'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected </xsl:text><xsl:value-of select="local-name(.)"/><xsl:text>.autolabel value: </xsl:text>
+ <xsl:value-of select="$format"/><xsl:text>; using default.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="default.autolabel.format"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="autolabel.format" xmlns="">
+<refpurpose>Returns format for autolabel parameters</refpurpose>
+<refdescription id="autolabel.format-desc">
+<para>Returns format passed as parameter if non zero. Supported
+ format are 'arabic' or '1', 'loweralpha' or 'a', 'lowerroman' or 'i',
+ 'upperlapha' or 'A', 'upperroman' or 'I', 'arabicindic' or '&#x661;'.
+ If its not one of these then
+ returns the default format.</para>
+</refdescription>
+</doc:template>
+
+<!-- ============================================================ -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml
new file mode 100644
index 0000000..9f9a545
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="lt" english-language-name="Lithuanian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/lt.xml -->
+<!-- * -->
+<!-- * E-mail the edited lt.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Santrauka"/>
+<l:gentext key="abstract" text="Santrauka"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Ats:"/>
+<l:gentext key="answer" text="Ats:"/>
+<l:gentext key="Appendix" text="Priedas"/>
+<l:gentext key="appendix" text="Priedas"/>
+<l:gentext key="Article" text="Straipsnis"/>
+<l:gentext key="article" text="Straipsnis"/>
+<l:gentext key="Author" text="Autorius"/>
+<l:gentext key="Bibliography" text="Bibliografija"/>
+<l:gentext key="bibliography" text="Bibliografija"/>
+<l:gentext key="Book" text="Knyga"/>
+<l:gentext key="book" text="Knyga"/>
+<l:gentext key="CAUTION" text="ATSARGIAI"/>
+<l:gentext key="Caution" text="Atsargiai"/>
+<l:gentext key="caution" text="Atsargiai"/>
+<l:gentext key="Chapter" text="Skyrius"/>
+<l:gentext key="chapter" text="Skyrius"/>
+<l:gentext key="Colophon" text="Knygos metrika"/>
+<l:gentext key="colophon" text="Knygos metrika"/>
+<l:gentext key="Copyright" text="AutorinÄ—s teisÄ—s"/>
+<l:gentext key="copyright" text="AutorinÄ—s teisÄ—s"/>
+<l:gentext key="Dedication" text="Dedikacija"/>
+<l:gentext key="dedication" text="Dedikacija"/>
+<l:gentext key="Edition" text="Leidimas"/>
+<l:gentext key="edition" text="Leidimas"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Lygtis"/>
+<l:gentext key="equation" text="Lygtis"/>
+<l:gentext key="Example" text="Pavyzdys"/>
+<l:gentext key="example" text="Pavyzdys"/>
+<l:gentext key="Figure" text="Pav."/>
+<l:gentext key="figure" text="Pav."/>
+<l:gentext key="Glossary" text="Terminų žodynas"/>
+<l:gentext key="glossary" text="Terminų žodynas"/>
+<l:gentext key="GlossSee" text="Žr."/>
+<l:gentext key="glosssee" text="Žr."/>
+<l:gentext key="GlossSeeAlso" text="Taip pat žr."/>
+<l:gentext key="glossseealso" text="Taip pat žr."/>
+<l:gentext key="IMPORTANT" text="SVARBU"/>
+<l:gentext key="important" text="Svarbu"/>
+<l:gentext key="Important" text="Svarbu"/>
+<l:gentext key="Index" text="RodyklÄ—"/>
+<l:gentext key="index" text="RodyklÄ—"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="TeisinÄ— pastaba"/>
+<l:gentext key="legalnotice" text="TeisinÄ— pastaba"/>
+<l:gentext key="MsgAud" text="Auditorija"/>
+<l:gentext key="msgaud" text="Auditorija"/>
+<l:gentext key="MsgLevel" text="Lygmuo"/>
+<l:gentext key="msglevel" text="Lygmuo"/>
+<l:gentext key="MsgOrig" text="KilmÄ—"/>
+<l:gentext key="msgorig" text="KilmÄ—"/>
+<l:gentext key="NOTE" text="PASTABA"/>
+<l:gentext key="Note" text="Pastaba"/>
+<l:gentext key="note" text="Pastaba"/>
+<l:gentext key="Part" text="Dalis"/>
+<l:gentext key="part" text="Dalis"/>
+<l:gentext key="Preface" text="Įvadas"/>
+<l:gentext key="preface" text="Įvadas"/>
+<l:gentext key="Procedure" text="Procedūra"/>
+<l:gentext key="procedure" text="Procedūra"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="IÅ¡leidimo data"/>
+<l:gentext key="pubdate" text="IÅ¡leidimo data"/>
+<l:gentext key="Published" text="IÅ¡leistas"/>
+<l:gentext key="published" text="IÅ¡leistas"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Klaus. ir Ats."/>
+<l:gentext key="qandadiv" text="Klaus. ir Ats."/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Klaus.:"/>
+<l:gentext key="question" text="Klaus.:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Nuoroda"/>
+<l:gentext key="reference" text="Nuoroda"/>
+<l:gentext key="References" text="Nuorodos"/>
+<l:gentext key="RefName" text="Pavadinimas"/>
+<l:gentext key="refname" text="Pavadinimas"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Trumpa apžvalga"/>
+<l:gentext key="refsynopsisdiv" text="Trumpa apžvalga"/>
+<l:gentext key="RevHistory" text="Pataisymų istorija"/>
+<l:gentext key="revhistory" text="Pataisymų istorija"/>
+<l:gentext key="revision" text="Pataisytas leidimas"/>
+<l:gentext key="Revision" text="Pataisytas leidimas"/>
+<l:gentext key="sect1" text="Skyrius"/>
+<l:gentext key="sect2" text="Skyrius"/>
+<l:gentext key="sect3" text="Skyrius"/>
+<l:gentext key="sect4" text="Skyrius"/>
+<l:gentext key="sect5" text="Skyrius"/>
+<l:gentext key="section" text="Skyrius"/>
+<l:gentext key="Section" text="Skyrius"/>
+<l:gentext key="see" text="žr."/>
+<l:gentext key="See" text="Žr."/>
+<l:gentext key="seealso" text="taip pat žr."/>
+<l:gentext key="Seealso" text="Taip pat žr."/>
+<l:gentext key="SeeAlso" text="Taip pat žr."/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="žingsnis"/>
+<l:gentext key="Step" text="Žingsnis"/>
+<l:gentext key="table" text="LentelÄ—"/>
+<l:gentext key="Table" text="LentelÄ—"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Patarimas"/>
+<l:gentext key="TIP" text="PATARIMAS"/>
+<l:gentext key="Tip" text="Patarimas"/>
+<l:gentext key="Warning" text="Įspėjimas"/>
+<l:gentext key="warning" text="Įspėjimas"/>
+<l:gentext key="WARNING" text="ĮSPĖJIMAS"/>
+<l:gentext key="and" text="ir"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Redaguotas"/>
+<l:gentext key="edited" text="Redaguotas"/>
+<l:gentext key="Editedby" text="Redagavo"/>
+<l:gentext key="editedby" text="Redagavo"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Pastabos"/>
+<l:gentext key="Notes" text="Pastabos"/>
+<l:gentext key="Pgs" text="P."/>
+<l:gentext key="pgs" text="P."/>
+<l:gentext key="Revisedby" text="PataisÄ—: "/>
+<l:gentext key="revisedby" text="PataisÄ—: "/>
+<l:gentext key="TableNotes" text="Pastabos"/>
+<l:gentext key="tablenotes" text="Pastabos"/>
+<l:gentext key="TableofContents" text="Turinys"/>
+<l:gentext key="tableofcontents" text="Turinys"/>
+<l:gentext key="unexpectedelementname" text="Nenumatyto elemento pavadinimas"/>
+<l:gentext key="unsupported" text="nepalaikomas"/>
+<l:gentext key="xrefto" text="xref į"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="LygÄių sÄ…raÅ¡as"/>
+<l:gentext key="ListofEquations" text="LygÄių sÄ…raÅ¡as"/>
+<l:gentext key="ListofExamples" text="Pavyzdžių sąrašas"/>
+<l:gentext key="listofexamples" text="Pavyzdžių sąrašas"/>
+<l:gentext key="ListofFigures" text="Paveikslų sąrašas"/>
+<l:gentext key="listoffigures" text="Paveikslų sąrašas"/>
+<l:gentext key="ListofProcedures" text="Procedūrų sąrašas"/>
+<l:gentext key="listofprocedures" text="Procedūrų sąrašas"/>
+<l:gentext key="listoftables" text="Lentelių sąrašas"/>
+<l:gentext key="ListofTables" text="Lentelių sąrašas"/>
+<l:gentext key="ListofUnknown" text="Nežinomas sąrašas"/>
+<l:gentext key="listofunknown" text="Nežinomas sąrašas"/>
+<l:gentext key="nav-home" text="Į pradžią"/>
+<l:gentext key="nav-next" text="Tolesnis"/>
+<l:gentext key="nav-next-sibling" text="Spartus pirmyn"/>
+<l:gentext key="nav-prev" text="Ankstesnis"/>
+<l:gentext key="nav-prev-sibling" text="Spartus atgal"/>
+<l:gentext key="nav-up" text="Aukštyn"/>
+<l:gentext key="nav-toc" text="Turinys"/>
+<l:gentext key="Draft" text="Planas"/>
+<l:gentext key="above" text="aukÅ¡Äiau"/>
+<l:gentext key="below" text="žemiau"/>
+<l:gentext key="sectioncalled" text="skyrius pavadinimu"/>
+<l:gentext key="index symbols" text="Simboliai"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aÄ…bcÄdeęėfghiįyjklmnoprsÅ¡tuųūvzžqwx"/>
+<l:gentext key="uppercase.alpha" text="AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽQWX"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Priedas %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Skyrius %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Lygtis %n. %t"/>
+<l:template name="example" text="Pavyzdys %n. %t"/>
+<l:template name="figure" text="Pav. %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Dalis %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedūra %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Lentelė %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Priedas %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Skyrius %n. %t"/>
+<l:template name="part" text="Dalis %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Ats: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Klaus.: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Klaus.: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(%p puslapis)"/>
+<l:template name="docname" text=" dokumente %o"/>
+<l:template name="docnamelong" text=" dokumente %o"/>
+<l:template name="pageabbrev" text="(%p p.)"/>
+<l:template name="Page" text="%p puslapis"/>
+<l:template name="bridgehead" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsection" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect1" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect2" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect3" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect1" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect2" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect3" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect4" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect5" text="skyrius pavadinimu „%t“"/>
+<l:template name="section" text="skyrius pavadinimu „%t“"/>
+<l:template name="simplesect" text="skyrius pavadinimu „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Ats: %n"/>
+<l:template name="appendix" text="Priedas %n"/>
+<l:template name="bridgehead" text="Skyrius %n"/>
+<l:template name="chapter" text="Skyrius %n"/>
+<l:template name="equation" text="Lygtis %n"/>
+<l:template name="example" text="Pavyzdys %n"/>
+<l:template name="figure" text="Pav. %n"/>
+<l:template name="part" text="Dalis %n"/>
+<l:template name="procedure" text="Procedūra %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="Klaus. ir Ats. %n"/>
+<l:template name="qandaentry" text="Klaus.: %n"/>
+<l:template name="question" text="Klaus.: %n"/>
+<l:template name="sect1" text="Skyrius %n"/>
+<l:template name="sect2" text="Skyrius %n"/>
+<l:template name="sect3" text="Skyrius %n"/>
+<l:template name="sect4" text="Skyrius %n"/>
+<l:template name="sect5" text="Skyrius %n"/>
+<l:template name="section" text="Skyrius %n"/>
+<l:template name="table" text="Lentelė %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Priedas %n, %t"/>
+<l:template name="bridgehead" text="Skyrius %n, „%t“"/>
+<l:template name="chapter" text="Skyrius %n, %t"/>
+<l:template name="equation" text="Lygtis %n, „%t“"/>
+<l:template name="example" text="Pavyzdys %n, „%t“"/>
+<l:template name="figure" text="Pav. %n, „%t“"/>
+<l:template name="part" text="Dalis %n, „%t“"/>
+<l:template name="procedure" text="Procedūra %n, „%t“"/>
+<l:template name="productionset" text="Produkcija %n, „%t“"/>
+<l:template name="qandadiv" text="Klaus. ir Ats. %n, „%t“"/>
+<l:template name="refsect1" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect2" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect3" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsection" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect1" text="Skyrius %n, „%t“"/>
+<l:template name="sect2" text="Skyrius %n, „%t“"/>
+<l:template name="sect3" text="Skyrius %n, „%t“"/>
+<l:template name="sect4" text="Skyrius %n, „%t“"/>
+<l:template name="sect5" text="Skyrius %n, „%t“"/>
+<l:template name="section" text="Skyrius %n, „%t“"/>
+<l:template name="simplesect" text="skyrius pavadinimu „%t“"/>
+<l:template name="table" text="Lentelė %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ir "/>
+<l:template name="seplast" text=", ir "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Žr. %t."/>
+<l:template name="seealso" text="Taip pat žr. %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Auditorija: "/>
+<l:template name="MsgLevel" text="Lygmuo: "/>
+<l:template name="MsgOrig" text="KilmÄ—: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="Y-m-d"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Apibrėžimas: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Sausis"/>
+<l:template name="February" text="Vasaris"/>
+<l:template name="March" text="Kovas"/>
+<l:template name="April" text="Balandis"/>
+<l:template name="May" text="Gegužė"/>
+<l:template name="June" text="Birželis"/>
+<l:template name="July" text="Liepa"/>
+<l:template name="August" text="Rugpjūtis"/>
+<l:template name="September" text="RugsÄ—jis"/>
+<l:template name="October" text="Spalis"/>
+<l:template name="November" text="Lapkritis"/>
+<l:template name="December" text="Gruodis"/>
+<l:template name="Monday" text="Pirmadienis"/>
+<l:template name="Tuesday" text="Antradienis"/>
+<l:template name="Wednesday" text="TreÄiadienis"/>
+<l:template name="Thursday" text="Ketvirtadienis"/>
+<l:template name="Friday" text="Penktadienis"/>
+<l:template name="Saturday" text="Šeštadienis"/>
+<l:template name="Sunday" text="Sekmadienis"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Sau"/>
+<l:template name="Feb" text="Vas"/>
+<l:template name="Mar" text="Kov"/>
+<l:template name="Apr" text="Bal"/>
+<l:template name="May" text="Geg"/>
+<l:template name="Jun" text="Bir"/>
+<l:template name="Jul" text="Lie"/>
+<l:template name="Aug" text="Rugp"/>
+<l:template name="Sep" text="Rugs"/>
+<l:template name="Oct" text="Spa"/>
+<l:template name="Nov" text="Lap"/>
+<l:template name="Dec" text="Gru"/>
+<l:template name="Mon" text="Pr"/>
+<l:template name="Tue" text="An"/>
+<l:template name="Wed" text="Tr"/>
+<l:template name="Thu" text="Kt"/>
+<l:template name="Fri" text="Pn"/>
+<l:template name="Sat" text="Å t"/>
+<l:template name="Sun" text="Sk"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0427 Lithuanian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simboliai</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">Ä„</l:l>
+<l:l i="1">Ä…</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="3">Č</l:l>
+<l:l i="3">Ä</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="5">Ę</l:l>
+<l:l i="5">Ä™</l:l>
+<l:l i="5">Ä–</l:l>
+<l:l i="5">Ä—</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="9">Ä®</l:l>
+<l:l i="9">į</l:l>
+<l:l i="10">Y</l:l>
+<l:l i="10">y</l:l>
+<l:l i="11">J</l:l>
+<l:l i="11">j</l:l>
+<l:l i="12">K</l:l>
+<l:l i="12">k</l:l>
+<l:l i="13">L</l:l>
+<l:l i="13">l</l:l>
+<l:l i="14">M</l:l>
+<l:l i="14">m</l:l>
+<l:l i="15">N</l:l>
+<l:l i="15">n</l:l>
+<l:l i="16">O</l:l>
+<l:l i="16">o</l:l>
+<l:l i="17">P</l:l>
+<l:l i="17">p</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="19">Å </l:l>
+<l:l i="19">Å¡</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="21">Ų</l:l>
+<l:l i="21">ų</l:l>
+<l:l i="21">Ū</l:l>
+<l:l i="21">Å«</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">Z</l:l>
+<l:l i="23">z</l:l>
+<l:l i="23">Ž</l:l>
+<l:l i="23">ž</l:l>
+<l:l i="24">Q</l:l>
+<l:l i="24">q</l:l>
+<l:l i="25">W</l:l>
+<l:l i="25">w</l:l>
+<l:l i="26">X</l:l>
+<l:l i="26">x</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml
new file mode 100644
index 0000000..ce6ba49
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="lv" english-language-name="Latvian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/lv.xml -->
+<!-- * -->
+<!-- * E-mail the edited lv.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="AnotÄcija"/>
+<l:gentext key="abstract" text="anotÄcija"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="a:"/>
+<l:gentext key="Appendix" text="Pielikums"/>
+<l:gentext key="appendix" text="pielikums"/>
+<l:gentext key="Article" text="Raksts"/>
+<l:gentext key="article" text="raksts"/>
+<l:gentext key="Author" text="Autors"/>
+<l:gentext key="Bibliography" text="BibliogrÄfija"/>
+<l:gentext key="bibliography" text="bibliogrÄfija"/>
+<l:gentext key="Book" text="GrÄmata"/>
+<l:gentext key="book" text="grÄmata"/>
+<l:gentext key="CAUTION" text="UZMANĪBU"/>
+<l:gentext key="Caution" text="Uzmanību"/>
+<l:gentext key="caution" text="uzmanību"/>
+<l:gentext key="Chapter" text="Nodaļa"/>
+<l:gentext key="chapter" text="nodaļa"/>
+<l:gentext key="Colophon" text="PÄ“cvÄrds"/>
+<l:gentext key="colophon" text="pÄ“cvÄrds"/>
+<l:gentext key="Copyright" text="Autortiesības"/>
+<l:gentext key="copyright" text="autortiesības"/>
+<l:gentext key="Dedication" text="Veltījums"/>
+<l:gentext key="dedication" text="veltījums"/>
+<l:gentext key="Edition" text="Izdevums"/>
+<l:gentext key="edition" text="izdevums"/>
+<l:gentext key="Editor" text="Redaktors"/>
+<l:gentext key="Equation" text="VienÄdojums"/>
+<l:gentext key="equation" text="vienÄdojums"/>
+<l:gentext key="Example" text="Piemērs"/>
+<l:gentext key="example" text="piemērs"/>
+<l:gentext key="Figure" text="IlustrÄcija"/>
+<l:gentext key="figure" text="ilustrÄcija"/>
+<l:gentext key="Glossary" text="GlosÄrijs"/>
+<l:gentext key="glossary" text="glosÄrijs"/>
+<l:gentext key="GlossSee" text="Skatīties"/>
+<l:gentext key="glosssee" text="skatīties"/>
+<l:gentext key="GlossSeeAlso" text="Skatīt arī"/>
+<l:gentext key="glossseealso" text="skatīt arī"/>
+<l:gentext key="IMPORTANT" text="SVARĪGI"/>
+<l:gentext key="important" text="svarīgi"/>
+<l:gentext key="Important" text="svarīgs"/>
+<l:gentext key="Index" text="Indekss"/>
+<l:gentext key="index" text="indekss"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Autortiesības"/>
+<l:gentext key="legalnotice" text="autortiesības"/>
+<l:gentext key="MsgAud" text="Auditorija"/>
+<l:gentext key="msgaud" text="auditorija"/>
+<l:gentext key="MsgLevel" text="Ziņ.līmenis"/>
+<l:gentext key="msglevel" text="ziņ.līmenis"/>
+<l:gentext key="MsgOrig" text="Ziņ.izcelsme"/>
+<l:gentext key="msgorig" text="Ziņ.izcelsme"/>
+<l:gentext key="NOTE" text="PIEZĪME"/>
+<l:gentext key="Note" text="Piezīme"/>
+<l:gentext key="note" text="piezīme"/>
+<l:gentext key="Part" text="Daļa"/>
+<l:gentext key="part" text="daļa"/>
+<l:gentext key="Preface" text="Ievads"/>
+<l:gentext key="preface" text="ievads"/>
+<l:gentext key="Procedure" text="Procedūra"/>
+<l:gentext key="procedure" text="Procedūra"/>
+<l:gentext key="ProductionSet" text="Produkta"/>
+<l:gentext key="PubDate" text="Izdošanas datums"/>
+<l:gentext key="pubdate" text="Izdošanas datums"/>
+<l:gentext key="Published" text="Izdots"/>
+<l:gentext key="published" text="izdots"/>
+<l:gentext key="Publisher" text="Izdevējs"/>
+<l:gentext key="Qandadiv" text="J un A"/>
+<l:gentext key="qandadiv" text="J un A"/>
+<l:gentext key="QandASet" text="Bieži uzdotie jautÄjumi"/>
+<l:gentext key="Question" text="J:"/>
+<l:gentext key="question" text="J:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Atsauce"/>
+<l:gentext key="reference" text="atsauce"/>
+<l:gentext key="References" text="NorÄdes"/>
+<l:gentext key="RefName" text="Nosaukums"/>
+<l:gentext key="refname" text="nosaukums"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+<l:gentext key="refsynopsisdiv" text="sinopse"/>
+<l:gentext key="RevHistory" text="Izmaiņu vēsture"/>
+<l:gentext key="revhistory" text="izmaiņu vēsture"/>
+<l:gentext key="revision" text="versija"/>
+<l:gentext key="Revision" text="Versija"/>
+<l:gentext key="sect1" text="Sadaļa"/>
+<l:gentext key="sect2" text="Sadaļa"/>
+<l:gentext key="sect3" text="Sadaļa"/>
+<l:gentext key="sect4" text="Sadaļa"/>
+<l:gentext key="sect5" text="Sadaļa"/>
+<l:gentext key="section" text="sadaļa"/>
+<l:gentext key="Section" text="Sadaļa"/>
+<l:gentext key="see" text="skatīt"/>
+<l:gentext key="See" text="Skatīt"/>
+<l:gentext key="seealso" text="skatīt arī"/>
+<l:gentext key="Seealso" text="skatīt arī"/>
+<l:gentext key="SeeAlso" text="Skatīt arī"/>
+<l:gentext key="set" text="Kolekcija"/>
+<l:gentext key="Set" text="Kolekcija"/>
+<l:gentext key="setindex" text="kolekcijas indekss"/>
+<l:gentext key="SetIndex" text="Kolekcijas indekss"/>
+<l:gentext key="Sidebar" text="AtkÄpe"/>
+<l:gentext key="sidebar" text="atkÄpe"/>
+<l:gentext key="step" text="solis"/>
+<l:gentext key="Step" text="Solis"/>
+<l:gentext key="table" text="Tabula"/>
+<l:gentext key="Table" text="Tabula"/>
+<l:gentext key="task" text="Uzdevums"/>
+<l:gentext key="Task" text="Uzdevums"/>
+<l:gentext key="tip" text="Ieteikums"/>
+<l:gentext key="TIP" text="IETEIKUMS"/>
+<l:gentext key="Tip" text="Ieteikums"/>
+<l:gentext key="Warning" text="BrÄ«dinÄjums"/>
+<l:gentext key="warning" text="brÄ«dinÄjums"/>
+<l:gentext key="WARNING" text="BRĪDINĀJUMS"/>
+<l:gentext key="and" text="un"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Rediģēts"/>
+<l:gentext key="edited" text="rediģēts"/>
+<l:gentext key="Editedby" text="Rediģējis"/>
+<l:gentext key="editedby" text="rediģējis"/>
+<l:gentext key="in" text="iekš"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="piezīmes"/>
+<l:gentext key="Notes" text="Piezīmes"/>
+<l:gentext key="Pgs" text="Lpp."/>
+<l:gentext key="pgs" text="lpp."/>
+<l:gentext key="Revisedby" text="PÄrskatÄ«jis: "/>
+<l:gentext key="revisedby" text="PÄrskatÄ«jis: "/>
+<l:gentext key="TableNotes" text="Piezīmes"/>
+<l:gentext key="tablenotes" text="piezīmes"/>
+<l:gentext key="TableofContents" text="Saturs "/>
+<l:gentext key="tableofcontents" text="saturs"/>
+<l:gentext key="unexpectedelementname" text="Negaidīts elementa nosaukums"/>
+<l:gentext key="unsupported" text="neatbalstīts"/>
+<l:gentext key="xrefto" text="saite uz"/>
+<l:gentext key="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="Kopijas redaktors"/>
+<l:gentext key="graphicdesigner" text="Grafikas dizaineris"/>
+<l:gentext key="productioneditor" text="Produkta redaktors"/>
+<l:gentext key="technicaleditor" text="Tehniskais redaktors"/>
+<l:gentext key="translator" text="Tulks"/>
+<l:gentext key="listofequations" text="vienÄdojumu saraksts"/>
+<l:gentext key="ListofEquations" text="VienÄdojumu saraksts"/>
+<l:gentext key="ListofExamples" text="Piemēru saraksts"/>
+<l:gentext key="listofexamples" text="piemēru saraksts"/>
+<l:gentext key="ListofFigures" text="IlustrÄciju saraksts"/>
+<l:gentext key="listoffigures" text="ilustrÄciju saraksts"/>
+<l:gentext key="ListofProcedures" text="Procesu saraksts"/>
+<l:gentext key="listofprocedures" text="procesu saraksts"/>
+<l:gentext key="listoftables" text="tabulu saraksts"/>
+<l:gentext key="ListofTables" text="Tabulu saraksts"/>
+<l:gentext key="ListofUnknown" text="NezinÄmo saraksts"/>
+<l:gentext key="listofunknown" text="NezinÄmo saraksts"/>
+<l:gentext key="nav-home" text="SÄkums"/>
+<l:gentext key="nav-next" text="NÄkamais"/>
+<l:gentext key="nav-next-sibling" text="Ātri uz priekšu"/>
+<l:gentext key="nav-prev" text="Priekšskatījums"/>
+<l:gentext key="nav-prev-sibling" text="Ātri atpakaļ"/>
+<l:gentext key="nav-up" text="Uz augšu"/>
+<l:gentext key="nav-toc" text="Saturs"/>
+<l:gentext key="Draft" text="Uzmetums"/>
+<l:gentext key="above" text="virs"/>
+<l:gentext key="below" text="zem"/>
+<l:gentext key="sectioncalled" text="sadaļa ar nosaukumu"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aÄbcÄdeÄ“fgÄ£hiÄ«jkÄ·lļmnņoprsÅ¡tuÅ«vzž"/>
+<l:gentext key="uppercase.alpha" text="AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Pielikums %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Nodaļa %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="VienÄdojums %n. %t"/>
+<l:template name="example" text="Piemērs %n. %t"/>
+<l:template name="figure" text="IlustrÄcija %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Daļa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedūra %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkta %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabula %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Pielikums %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Nodaļa %n. %t"/>
+<l:template name="part" text="Daļa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="J: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="J: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" (%o)"/>
+<l:template name="olink.page.citation" text=" (lpp. %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(lpp. %p)"/>
+<l:template name="docname" text=" ( %o)"/>
+<l:template name="docnamelong" text=" dokumentÄ ar nosaukumu %o"/>
+<l:template name="pageabbrev" text="(lpp. %p)"/>
+<l:template name="Page" text="Lappuse %p"/>
+<l:template name="bridgehead" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="refsection" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="refsect1" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="refsect2" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="refsect3" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="sect1" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="sect2" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="sect3" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="sect4" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="sect5" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="section" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="simplesect" text="sadaļa ar nosaukumu “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Pielikums %n"/>
+<l:template name="bridgehead" text="Sadaļa %n"/>
+<l:template name="chapter" text="Nodaļa %n"/>
+<l:template name="equation" text="VienÄdojums %n"/>
+<l:template name="example" text="Piemērs %n"/>
+<l:template name="figure" text="IlustrÄcija %n"/>
+<l:template name="part" text="Daļa %n"/>
+<l:template name="procedure" text="Procedūra %n"/>
+<l:template name="productionset" text="Produkta %n"/>
+<l:template name="qandadiv" text="J un A %n"/>
+<l:template name="qandaentry" text="J: %n"/>
+<l:template name="question" text="J: %n"/>
+<l:template name="sect1" text="Sadaļa %n"/>
+<l:template name="sect2" text="Sadaļa %n"/>
+<l:template name="sect3" text="Sadaļa %n"/>
+<l:template name="sect4" text="Sadaļa %n"/>
+<l:template name="sect5" text="Sadaļa %n"/>
+<l:template name="section" text="Sadaļa %n"/>
+<l:template name="table" text="Tabula %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Pielikums %n, %t"/>
+<l:template name="bridgehead" text="Sadaļa %n, “%tâ€"/>
+<l:template name="chapter" text="Nodaļa %n, %t"/>
+<l:template name="equation" text="VienÄdojums %n, “%tâ€"/>
+<l:template name="example" text="PiemÄ“rs %n, “%tâ€"/>
+<l:template name="figure" text="IlustrÄcija %n, “%tâ€"/>
+<l:template name="part" text="Daļa %n, “%tâ€"/>
+<l:template name="procedure" text="ProcedÅ«ra %n, “%tâ€"/>
+<l:template name="productionset" text="Produkta %n, “%tâ€"/>
+<l:template name="qandadiv" text="J un A %n, “%tâ€"/>
+<l:template name="refsect1" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="refsect2" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="refsect3" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="refsection" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="sect1" text="Sadaļa %n, “%tâ€"/>
+<l:template name="sect2" text="Sadaļa %n, “%tâ€"/>
+<l:template name="sect3" text="Sadaļa %n, “%tâ€"/>
+<l:template name="sect4" text="Sadaļa %n, “%tâ€"/>
+<l:template name="sect5" text="Sadaļa %n, “%tâ€"/>
+<l:template name="section" text="Sadaļa %n, “%tâ€"/>
+<l:template name="simplesect" text="sadaļa ar nosaukumu “%tâ€"/>
+<l:template name="table" text="Tabula %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" un "/>
+<l:template name="seplast" text=", un "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Skatīties %t."/>
+<l:template name="seealso" text="Skatīt arī %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Auditorija: "/>
+<l:template name="MsgLevel" text="Ziņ.līmenis: "/>
+<l:template name="MsgOrig" text="Ziņ.izcelsme: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="Maijs"/>
+<l:template name="June" text="JÅ«nijs"/>
+<l:template name="July" text="JÅ«lijs"/>
+<l:template name="August" text="Augusts"/>
+<l:template name="September" text="Septembris"/>
+<l:template name="October" text="Octobris"/>
+<l:template name="November" text="Novembris"/>
+<l:template name="December" text="Decembris"/>
+<l:template name="Monday" text="Pirmdiena"/>
+<l:template name="Tuesday" text="Otrdiena"/>
+<l:template name="Wednesday" text="Trešdiena"/>
+<l:template name="Thursday" text="Ceturtdiena"/>
+<l:template name="Friday" text="Piektdiena"/>
+<l:template name="Saturday" text="Sestdiena"/>
+<l:template name="Sunday" text="Svētdiena"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="JÅ«l"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Pr"/>
+<l:template name="Tue" text="Ot"/>
+<l:template name="Wed" text="Tr"/>
+<l:template name="Thu" text="Ce"/>
+<l:template name="Fri" text="Pk"/>
+<l:template name="Sat" text="Se"/>
+<l:template name="Sun" text="Sv"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0427 Latvian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Pieejams "/>
+<l:template name="acctoo" text="Arī pieejams "/>
+<l:template name="onwww" text=" www"/>
+<l:template name="oninet" text="internetÄ"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml
new file mode 100644
index 0000000..280e7db
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ml" english-language-name="Malayalam">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ml.xml -->
+<!-- * -->
+<!-- * E-mail the edited ml.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="സംഗàµà´°à´¹à´‚"/>
+<l:gentext key="abstract" text="സംഗàµà´°à´¹à´‚"/>
+<l:gentext key="Acknowledgements" text="നനàµà´¦à´¿"/>
+<l:gentext key="acknowledgements" text="നനàµà´¦à´¿"/>
+<l:gentext key="Answer" text="à´‰:"/>
+<l:gentext key="answer" text="à´‰:"/>
+<l:gentext key="Appendix" text="à´…à´¨àµà´¬à´¨àµà´§à´‚"/>
+<l:gentext key="appendix" text="à´…à´¨àµà´¬à´¨àµà´§à´‚"/>
+<l:gentext key="Article" text="ലേഖനം"/>
+<l:gentext key="article" text="ലേഖനം"/>
+<l:gentext key="Author" text="രചയിതാവàµàµ"/>
+<l:gentext key="Bibliography" text="à´—àµà´°à´¨àµà´¥à´¸àµ‚à´šà´¿"/>
+<l:gentext key="bibliography" text="à´—àµà´°à´¨àµà´¥à´¸àµ‚à´šà´¿"/>
+<l:gentext key="Book" text="à´ªàµà´¸àµà´¤à´•à´‚"/>
+<l:gentext key="book" text="à´ªàµà´¸àµà´¤à´•à´‚"/>
+<l:gentext key="CAUTION" text="à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•"/>
+<l:gentext key="Caution" text="à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•"/>
+<l:gentext key="caution" text="à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•"/>
+<l:gentext key="Chapter" text="പാഠം"/>
+<l:gentext key="chapter" text="പാഠം"/>
+<l:gentext key="Colophon" text="കോളോഫോണàµâ€"/>
+<l:gentext key="colophon" text="കോളോഫോണàµâ€"/>
+<l:gentext key="Copyright" text="പകരàµâ€à´ªàµà´ªà´µà´•à´¾à´¶à´‚"/>
+<l:gentext key="copyright" text="പകരàµâ€à´ªàµà´ªà´µà´•à´¾à´¶à´‚"/>
+<l:gentext key="Dedication" text="à´…à´°àµâ€à´ªàµà´ªà´£à´‚"/>
+<l:gentext key="dedication" text="à´…à´°àµâ€à´ªàµà´ªà´£à´‚"/>
+<l:gentext key="Edition" text="à´ªàµà´°à´¸à´¦àµà´§àµ€à´•à´°à´£à´‚"/>
+<l:gentext key="edition" text="à´ªàµà´°à´¸à´¦àµà´§àµ€à´•à´°à´£à´‚"/>
+<l:gentext key="Editor" text="à´Žà´¡à´¿à´±àµà´±à´°àµâ€"/>
+<l:gentext key="Equation" text="സമവാകàµà´¯à´‚"/>
+<l:gentext key="equation" text="സമവാകàµà´¯à´‚"/>
+<l:gentext key="Example" text="ഉദാഹരണം"/>
+<l:gentext key="example" text="ഉദാഹരണം"/>
+<l:gentext key="Figure" text="à´šà´¿à´¤àµà´°à´‚"/>
+<l:gentext key="figure" text="à´šà´¿à´¤àµà´°à´‚"/>
+<l:gentext key="Glossary" text="à´—àµà´²àµ‹à´¸àµà´¸à´±à´¿"/>
+<l:gentext key="glossary" text="à´—àµà´²àµ‹à´¸àµà´¸à´±à´¿"/>
+<l:gentext key="GlossSee" text="കാണàµà´•"/>
+<l:gentext key="glosssee" text="കാണàµà´•"/>
+<l:gentext key="GlossSeeAlso" text="ഇതàµà´‚ കാണàµà´•"/>
+<l:gentext key="glossseealso" text="ഇതàµà´‚ കാണàµà´•"/>
+<l:gentext key="IMPORTANT" text="à´ªàµà´°à´§à´¾à´¨à´‚"/>
+<l:gentext key="important" text="à´ªàµà´°à´§à´¾à´¨à´‚"/>
+<l:gentext key="Important" text="à´ªàµà´°à´§à´¾à´¨à´‚"/>
+<l:gentext key="Index" text="സൂചിക"/>
+<l:gentext key="index" text="സൂചിക"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="നിയമപരമായ à´•àµà´±à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="legalnotice" text="നിയമപരമായ à´•àµà´±à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="MsgAud" text="വായനകàµà´•à´¾à´°àµâ€"/>
+<l:gentext key="msgaud" text="വായനകàµà´•à´¾à´°àµâ€"/>
+<l:gentext key="MsgLevel" text="നില"/>
+<l:gentext key="msglevel" text="നില"/>
+<l:gentext key="MsgOrig" text="à´¤àµà´Ÿà´•àµà´•à´‚"/>
+<l:gentext key="msgorig" text="à´¤àµà´Ÿà´•àµà´•à´‚"/>
+<l:gentext key="NOTE" text="à´•àµà´±à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="Note" text="à´•àµà´±à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="note" text="à´•àµà´±à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="Part" text="ഭാഗം"/>
+<l:gentext key="part" text="ഭാഗം"/>
+<l:gentext key="Preface" text="ആമàµà´–à´‚"/>
+<l:gentext key="preface" text="ആമàµà´–à´‚"/>
+<l:gentext key="Procedure" text="à´ªàµà´°à´•àµà´°à´¿à´¯"/>
+<l:gentext key="procedure" text="à´ªàµà´°à´•àµà´°à´¿à´¯"/>
+<l:gentext key="ProductionSet" text="നിരàµâ€à´®àµà´®à´¾à´£à´‚"/>
+<l:gentext key="PubDate" text="à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´£ തീയതി"/>
+<l:gentext key="pubdate" text="à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´£ തീയതി"/>
+<l:gentext key="Published" text="à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´šàµà´šà´¤àµàµ"/>
+<l:gentext key="published" text="à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´šàµà´šà´¤àµàµ"/>
+<l:gentext key="Publisher" text="à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°àµâ€à´¤àµà´¤à´¾à´µàµ"/>
+<l:gentext key="Qandadiv" text="ചോ &amp; ഉ"/>
+<l:gentext key="qandadiv" text="ചോ &amp; ഉ"/>
+<l:gentext key="QandASet" text="സംശയങàµà´™à´³àµâ€à´•àµà´•àµà´‚ ചോദàµà´¯à´™àµà´™à´³àµâ€à´•àµà´•àµà´®àµà´³àµà´³ മറàµà´ªà´Ÿà´¿à´•à´³àµâ€"/>
+<l:gentext key="Question" text="ചോ:"/>
+<l:gentext key="question" text="ചോ:"/>
+<l:gentext key="RefEntry" text="താളàµâ€"/>
+<l:gentext key="refentry" text="താളàµâ€"/>
+<l:gentext key="Reference" text="സൂചന"/>
+<l:gentext key="reference" text="സൂചന"/>
+<l:gentext key="References" text="സൂചനകളàµâ€"/>
+<l:gentext key="RefName" text="നാമം"/>
+<l:gentext key="refname" text="നാമം"/>
+<l:gentext key="RefSection" text="വിഭാഗം"/>
+<l:gentext key="refsection" text="വിഭാഗം"/>
+<l:gentext key="RefSynopsisDiv" text="à´šàµà´°àµà´•àµà´•à´‚"/>
+<l:gentext key="refsynopsisdiv" text="à´šàµà´°àµà´•àµà´•à´‚"/>
+<l:gentext key="RevHistory" text="à´ªàµà´¨à´°àµâ€à´¨à´¿à´°àµ€à´•àµà´·à´£ à´šà´°à´¿à´¤àµà´°à´‚"/>
+<l:gentext key="revhistory" text="à´ªàµà´¨à´°àµâ€à´¨à´¿à´°àµ€à´•àµà´·à´£ à´šà´°à´¿à´¤àµà´°à´‚"/>
+<l:gentext key="revision" text="à´ªàµà´¨à´°àµâ€à´¨à´¿à´°àµ€à´•àµà´·à´£à´‚"/>
+<l:gentext key="Revision" text="à´ªàµà´¨à´°àµâ€à´¨à´¿à´°àµ€à´•àµà´·à´£à´‚"/>
+<l:gentext key="sect1" text="വിഭാഗം"/>
+<l:gentext key="sect2" text="വിഭാഗം"/>
+<l:gentext key="sect3" text="വിഭാഗം"/>
+<l:gentext key="sect4" text="വിഭാഗം"/>
+<l:gentext key="sect5" text="വിഭാഗം"/>
+<l:gentext key="section" text="വിഭാഗം"/>
+<l:gentext key="Section" text="വിഭാഗം"/>
+<l:gentext key="see" text="കാണàµà´•"/>
+<l:gentext key="See" text="കാണàµà´•"/>
+<l:gentext key="seealso" text="ഇതàµà´‚ കാണàµà´•"/>
+<l:gentext key="Seealso" text="ഇതàµà´‚ കാണàµà´•"/>
+<l:gentext key="SeeAlso" text="ഇതàµà´‚ കാണàµà´•"/>
+<l:gentext key="set" text="à´—àµà´°àµ‚à´ªàµà´ªàµ"/>
+<l:gentext key="Set" text="à´—àµà´°àµ‚à´ªàµà´ªàµ"/>
+<l:gentext key="setindex" text="à´—àµà´°àµ‚à´ªàµà´ªà´¿à´¨àµà´³àµà´³ സൂചിക"/>
+<l:gentext key="SetIndex" text="à´—àµà´°àµ‚à´ªàµà´ªà´¿à´¨àµà´³àµà´³ സൂചിക"/>
+<l:gentext key="Sidebar" text="സൈഡàµà´¬à´¾à´°àµâ€"/>
+<l:gentext key="sidebar" text="സൈഡàµà´¬à´¾à´°àµâ€"/>
+<l:gentext key="step" text="നടപടി"/>
+<l:gentext key="Step" text="നടപടി"/>
+<l:gentext key="table" text="പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="Table" text="പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="task" text="ജോലി"/>
+<l:gentext key="Task" text="ജോലി"/>
+<l:gentext key="tip" text="സൂചന"/>
+<l:gentext key="TIP" text="സൂചന"/>
+<l:gentext key="Tip" text="സൂചന"/>
+<l:gentext key="Warning" text="à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="warning" text="à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="WARNING" text="à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ"/>
+<l:gentext key="and" text=","/>
+<l:gentext key="by" text="."/>
+<l:gentext key="Edited" text="à´šà´¿à´Ÿàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"/>
+<l:gentext key="edited" text="à´šà´¿à´Ÿàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"/>
+<l:gentext key="Editedby" text="à´šà´¿à´Ÿàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¤àµàµ"/>
+<l:gentext key="editedby" text="à´šà´¿à´Ÿàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¤àµàµ"/>
+<l:gentext key="in" text=" "/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="à´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€"/>
+<l:gentext key="Notes" text="à´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€"/>
+<l:gentext key="Pgs" text="താളàµà´•à´³àµâ€."/>
+<l:gentext key="pgs" text="താളàµà´•à´³àµâ€."/>
+<l:gentext key="Revisedby" text="à´ªàµà´¨à´ƒà´ªà´°à´¿à´¶àµ‹à´§à´¿à´šàµà´šà´¤àµàµ: "/>
+<l:gentext key="revisedby" text="à´ªàµà´¨à´ƒà´ªà´°à´¿à´¶àµ‹à´§à´¿à´šàµà´šà´¤àµàµ: "/>
+<l:gentext key="TableNotes" text="à´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€"/>
+<l:gentext key="tablenotes" text="à´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€"/>
+<l:gentext key="TableofContents" text="ഉളàµà´³à´Ÿà´•àµà´•à´¤àµà´¤à´¿à´¨àµà´±àµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="tableofcontents" text="ഉളàµà´³à´Ÿà´•àµà´•à´¤àµà´¤à´¿à´¨àµà´±àµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="unexpectedelementname" text="à´…à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´¤à´®à´¾à´¯ എലമെനàµà´±àµ നാമം"/>
+<l:gentext key="unsupported" text="പിനàµà´¤àµà´£à´¯à´¿à´²àµà´²à´¾à´¤àµà´¤"/>
+<l:gentext key="xrefto" text="xref "/>
+<l:gentext key="Authors" text="രചയിതാകàµà´•à´³àµâ€"/>
+<l:gentext key="copyeditor" text="കോപàµà´ªà´¿ à´Žà´¡à´¿à´±àµà´±à´°àµâ€"/>
+<l:gentext key="graphicdesigner" text="à´—àµà´°à´¾à´«à´¿à´•àµ ഡിസൈനരàµâ€"/>
+<l:gentext key="productioneditor" text="à´ªàµà´°àµŠà´¡à´•àµà´·à´¨àµâ€ à´Žà´¡à´¿à´±àµà´±à´°àµâ€"/>
+<l:gentext key="technicaleditor" text="ടെകàµà´¨à´¿à´•àµà´•à´²àµâ€ à´Žà´¡à´¿à´±àµà´±à´°àµâ€"/>
+<l:gentext key="translator" text="പരിഭാഷകനàµâ€"/>
+<l:gentext key="listofequations" text="സമവാകàµà´¯à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="ListofEquations" text="സമവാകàµà´¯à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="ListofExamples" text="ഉദാഹരണങàµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="listofexamples" text="ഉദാഹരണങàµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="ListofFigures" text="à´šà´¿à´¤àµà´°à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="listoffigures" text="à´šà´¿à´¤àµà´°à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="ListofProcedures" text="à´ªàµà´°à´•àµà´°à´¿à´¯à´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="listofprocedures" text="à´ªàµà´°à´•àµà´°à´¿à´¯à´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="listoftables" text="പടàµà´Ÿà´¿à´•à´•à´³àµà´Ÿàµ† വിവരം"/>
+<l:gentext key="ListofTables" text="പടàµà´Ÿà´¿à´•à´•à´³àµà´Ÿàµ† വിവരം"/>
+<l:gentext key="ListofUnknown" text="അപരിചിതമായവàµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="listofunknown" text="അപരിചിതമായവàµà´Ÿàµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="nav-home" text="ആസàµà´¥à´¾à´¨à´‚"/>
+<l:gentext key="nav-next" text="à´…à´Ÿàµà´¤àµà´¤à´¤àµàµ"/>
+<l:gentext key="nav-next-sibling" text="à´à´±àµà´±à´µàµà´‚ à´®àµà´®àµà´ªàµ‹à´Ÿàµà´Ÿàµ"/>
+<l:gentext key="nav-prev" text="à´®àµà´®àµà´ªàµà´³àµà´³à´¤àµàµ"/>
+<l:gentext key="nav-prev-sibling" text="à´à´±àµà´±à´µàµà´‚ à´ªàµà´±à´•àµ‹à´Ÿàµà´Ÿàµ"/>
+<l:gentext key="nav-up" text="à´®àµà´•à´³à´¿à´²àµ‡à´•àµà´•àµ"/>
+<l:gentext key="nav-toc" text="ഉളàµà´³à´Ÿà´•àµà´•à´¤àµà´¤à´¿à´¨àµà´±àµ† പടàµà´Ÿà´¿à´•"/>
+<l:gentext key="Draft" text="പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´•à´¾à´¤àµà´¤ രേഖ"/>
+<l:gentext key="above" text="à´®àµà´•à´³à´¿à´²àµâ€"/>
+<l:gentext key="below" text="താഴെ"/>
+<l:gentext key="sectioncalled" text="വിഭാഗം"/>
+<l:gentext key="index symbols" text="à´šà´¿à´¹àµà´¨à´™àµà´™à´³àµâ€"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="à´…à´¨àµà´¬à´¨àµà´§à´‚ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="പാഠം %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="സമവാകàµà´¯à´‚ %n. %t"/>
+<l:template name="example" text="ഉദാഹരണം %n. %t"/>
+<l:template name="figure" text="à´šà´¿à´¤àµà´°à´‚ %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ഭാഗം %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="à´ªàµà´°à´•àµà´°à´¿à´¯Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="നിരàµâ€à´®àµà´®à´¾à´£à´‚ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="പടàµà´Ÿà´¿à´•Â %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="à´…à´¨àµà´¬à´¨àµà´§à´‚ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="പാഠം %n. %t"/>
+<l:template name="part" text="ഭാഗം %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="ഉ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ചോ: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ചോ: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="വിഭാഗം “%tâ€"/>
+<l:template name="refsection" text="വിഭാഗം “%tâ€"/>
+<l:template name="refsect1" text="വിഭാഗം “%tâ€"/>
+<l:template name="refsect2" text="വിഭാഗം “%tâ€"/>
+<l:template name="refsect3" text="വിഭാഗം “%tâ€"/>
+<l:template name="sect1" text="വിഭാഗം “%tâ€"/>
+<l:template name="sect2" text="വിഭാഗം “%tâ€"/>
+<l:template name="sect3" text="വിഭാഗം “%tâ€"/>
+<l:template name="sect4" text="വിഭാഗം “%tâ€"/>
+<l:template name="sect5" text="വിഭാഗം “%tâ€"/>
+<l:template name="section" text="വിഭാഗം “%tâ€"/>
+<l:template name="simplesect" text="വിഭാഗം “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ഉ: %n"/>
+<l:template name="appendix" text="à´…à´¨àµà´¬à´¨àµà´§à´‚ %n"/>
+<l:template name="bridgehead" text="വിഭാഗം %n"/>
+<l:template name="chapter" text="പാഠം %n"/>
+<l:template name="equation" text="സമവാകàµà´¯à´‚ %n"/>
+<l:template name="example" text="ഉദാഹരണം %n"/>
+<l:template name="figure" text="à´šà´¿à´¤àµà´°à´‚ %n"/>
+<l:template name="part" text="ഭാഗം %n"/>
+<l:template name="procedure" text="à´ªàµà´°à´•àµà´°à´¿à´¯Â %n"/>
+<l:template name="productionset" text="നിരàµâ€à´®àµà´®à´¾à´£à´‚ %n"/>
+<l:template name="qandadiv" text="ചോ &amp; ഉ %n"/>
+<l:template name="qandaentry" text="ചോ: %n"/>
+<l:template name="question" text="ചോ: %n"/>
+<l:template name="sect1" text="വിഭാഗം %n"/>
+<l:template name="sect2" text="വിഭാഗം %n"/>
+<l:template name="sect3" text="വിഭാഗം %n"/>
+<l:template name="sect4" text="വിഭാഗം %n"/>
+<l:template name="sect5" text="വിഭാഗം %n"/>
+<l:template name="section" text="വിഭാഗം %n"/>
+<l:template name="table" text="പടàµà´Ÿà´¿à´•Â %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="à´…à´¨àµà´¬à´¨àµà´§à´‚ %n, %t"/>
+<l:template name="bridgehead" text="വിഭാഗം %n, “%tâ€"/>
+<l:template name="chapter" text="പാഠം %n, %t"/>
+<l:template name="equation" text="സമവാകàµà´¯à´‚ %n, “%tâ€"/>
+<l:template name="example" text="ഉദാഹരണം %n, “%tâ€"/>
+<l:template name="figure" text="à´šà´¿à´¤àµà´°à´‚ %n, “%tâ€"/>
+<l:template name="part" text="ഭാഗം %n, “%tâ€"/>
+<l:template name="procedure" text="à´ªàµà´°à´•àµà´°à´¿à´¯Â %n, “%tâ€"/>
+<l:template name="productionset" text="നിരàµâ€à´®àµà´®à´¾à´£à´‚ %n, “%tâ€"/>
+<l:template name="qandadiv" text="ചോ &amp; ഉ %n, “%tâ€"/>
+<l:template name="refsect1" text="വിഭാഗം “%tâ€"/>
+<l:template name="refsect2" text="വിഭാഗം “%tâ€"/>
+<l:template name="refsect3" text="വിഭാഗം “%tâ€"/>
+<l:template name="refsection" text="വിഭാഗം “%tâ€"/>
+<l:template name="sect1" text="വിഭാഗം %n, “%tâ€"/>
+<l:template name="sect2" text="വിഭാഗം %n, “%tâ€"/>
+<l:template name="sect3" text="വിഭാഗം %n, “%tâ€"/>
+<l:template name="sect4" text="വിഭാഗം %n, “%tâ€"/>
+<l:template name="sect5" text="വിഭാഗം %n, “%tâ€"/>
+<l:template name="section" text="വിഭാഗം %n, “%tâ€"/>
+<l:template name="simplesect" text="വിഭാഗം “%tâ€"/>
+<l:template name="table" text="പടàµà´Ÿà´¿à´•Â %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" , "/>
+<l:template name="seplast" text=", , "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="കാണàµà´• %t."/>
+<l:template name="seealso" text="ഇതàµà´‚ കാണàµà´• %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="വായനകàµà´•à´¾à´°àµâ€: "/>
+<l:template name="MsgLevel" text="നില: "/>
+<l:template name="MsgOrig" text="à´¤àµà´Ÿà´•àµà´•à´‚: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ജനàµà´µà´°à´¿"/>
+<l:template name="February" text="ഫെബàµà´°àµà´µà´°à´¿"/>
+<l:template name="March" text="മാരàµâ€à´šàµà´šàµ"/>
+<l:template name="April" text="à´à´ªàµà´°à´¿à´²àµâ€"/>
+<l:template name="May" text="മെയàµ"/>
+<l:template name="June" text="ജൂണàµâ€"/>
+<l:template name="July" text="ജൂലൈ"/>
+<l:template name="August" text="à´“à´—à´¸àµà´±àµà´±àµ"/>
+<l:template name="September" text="സെപàµà´±àµà´±à´‚ബരàµâ€"/>
+<l:template name="October" text="à´’à´•àµà´Ÿàµ‹à´¬à´°àµâ€"/>
+<l:template name="November" text="നവംബരàµâ€"/>
+<l:template name="December" text="ഡിസംബരàµâ€"/>
+<l:template name="Monday" text="തിങàµà´•à´³àµâ€"/>
+<l:template name="Tuesday" text="ചൊവàµà´µ"/>
+<l:template name="Wednesday" text="à´¬àµà´§à´¨àµâ€"/>
+<l:template name="Thursday" text="à´µàµà´¯à´¾à´´à´‚"/>
+<l:template name="Friday" text="വെളàµà´³à´¿"/>
+<l:template name="Saturday" text="ശനി"/>
+<l:template name="Sunday" text="ഞായരàµâ€"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ജനàµ"/>
+<l:template name="Feb" text="ഫെബàµà´°àµ"/>
+<l:template name="Mar" text="മാരàµâ€"/>
+<l:template name="Apr" text="à´à´ªàµà´°à´¿"/>
+<l:template name="May" text="മെയàµ"/>
+<l:template name="Jun" text="ജൂണàµâ€"/>
+<l:template name="Jul" text="ജൂലൈ"/>
+<l:template name="Aug" text="à´“à´—"/>
+<l:template name="Sep" text="സെപàµ"/>
+<l:template name="Oct" text="à´’à´•àµà´Ÿàµ"/>
+<l:template name="Nov" text="നവം"/>
+<l:template name="Dec" text="ഡിസം"/>
+<l:template name="Mon" text="തി"/>
+<l:template name="Tue" text="ചൊ"/>
+<l:template name="Wed" text="à´¬àµ"/>
+<l:template name="Thu" text="à´µàµà´¯à´¾"/>
+<l:template name="Fri" text="വെ"/>
+<l:template name="Sat" text="à´¶"/>
+<l:template name="Sun" text="à´žà´¾"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x044c Malayalam"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">à´šà´¿à´¹àµà´¨à´™àµà´™à´³àµâ€</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml
new file mode 100644
index 0000000..ef95526
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml
@@ -0,0 +1,730 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="mn" english-language-name="Mongolian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/mn.xml -->
+<!-- * -->
+<!-- * E-mail the edited mn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Товч агуулга"/>
+<l:gentext key="abstract" text="товч агуулга"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Ð¥:"/>
+<l:gentext key="answer" text="Ð¥:"/>
+<l:gentext key="Appendix" text="ХавÑралт"/>
+<l:gentext key="appendix" text="хавÑралт"/>
+<l:gentext key="Article" text="ӨгүүлÑл"/>
+<l:gentext key="article" text="өгүүлÑл"/>
+<l:gentext key="Author" text="Зохиогч"/>
+<l:gentext key="Bibliography" text="Ðом зүй"/>
+<l:gentext key="bibliography" text="ном зүй"/>
+<l:gentext key="Book" text="Ðом"/>
+<l:gentext key="book" text="ном"/>
+<l:gentext key="CAUTION" text="ÐÐÐ¥ÐÐРУУЛГÐ"/>
+<l:gentext key="Caution" text="Ðнхааруулга"/>
+<l:gentext key="caution" text="анхааруулга"/>
+<l:gentext key="Chapter" text="БүлÑг"/>
+<l:gentext key="chapter" text="бүлÑг"/>
+<l:gentext key="Colophon" text="Сүүл тайлбар"/>
+<l:gentext key="colophon" text="Ñүүл тайлбар"/>
+<l:gentext key="Copyright" text="Зохиогчийн Ñрх"/>
+<l:gentext key="copyright" text="зохиогчийн Ñрх"/>
+<l:gentext key="Dedication" text="Зохиогчийн үг"/>
+<l:gentext key="dedication" text="зохиогчийн үг"/>
+<l:gentext key="Edition" text="Ð¥ÑвлÑл"/>
+<l:gentext key="edition" text="Ñ…ÑвлÑл"/>
+<l:gentext key="Editor" text="Ð¥Ñнан тохиолдуулагч"/>
+<l:gentext key="Equation" text="ТÑгшитгÑл"/>
+<l:gentext key="equation" text="Ñ‚ÑгшитгÑл"/>
+<l:gentext key="Example" text="ЖишÑÑ"/>
+<l:gentext key="example" text="жишÑÑ"/>
+<l:gentext key="Figure" text="Зураг"/>
+<l:gentext key="figure" text="зураг"/>
+<l:gentext key="Glossary" text="ÐÑÑ€ томъёо"/>
+<l:gentext key="glossary" text="нÑÑ€ томъёо"/>
+<l:gentext key="GlossSee" text="харна уу"/>
+<l:gentext key="glosssee" text="харна уу"/>
+<l:gentext key="GlossSeeAlso" text="Ð‘Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу"/>
+<l:gentext key="glossseealso" text="Ð±Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу"/>
+<l:gentext key="IMPORTANT" text="ЧУХÐЛ"/>
+<l:gentext key="important" text="чухал"/>
+<l:gentext key="Important" text="Чухал"/>
+<l:gentext key="Index" text="Үгийн жагÑаалт"/>
+<l:gentext key="index" text="үгийн жагÑаалт"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Хуулийн заалт"/>
+<l:gentext key="legalnotice" text="хуулийн заалт"/>
+<l:gentext key="MsgAud" text="Зориулалт"/>
+<l:gentext key="msgaud" text="зориулалт"/>
+<l:gentext key="MsgLevel" text="Түвшин"/>
+<l:gentext key="msglevel" text="түвшин"/>
+<l:gentext key="MsgOrig" text="Ò®Ò¯ÑÑл"/>
+<l:gentext key="msgorig" text="Ò¯Ò¯ÑÑл"/>
+<l:gentext key="NOTE" text="ТЭМДЭГЛЭЛ"/>
+<l:gentext key="Note" text="ТÑмдÑглÑл"/>
+<l:gentext key="note" text="Ñ‚ÑмдÑглÑл"/>
+<l:gentext key="Part" text="Ñ…ÑÑÑг"/>
+<l:gentext key="part" text="Ð¥ÑÑÑг"/>
+<l:gentext key="Preface" text="Өмнөх үг"/>
+<l:gentext key="preface" text="өмнөх үг"/>
+<l:gentext key="Procedure" text="ГүйцÑтгÑл"/>
+<l:gentext key="procedure" text="гүйцÑтгÑл"/>
+<l:gentext key="ProductionSet" text="БүтÑÑгдÑхүүн"/>
+<l:gentext key="PubDate" text="Ð¥ÑвлÑгдÑÑн огноо"/>
+<l:gentext key="pubdate" text="Ñ…ÑвлÑгдÑÑн огноо"/>
+<l:gentext key="Published" text="Ð¥ÑвлÑгдÑÑн"/>
+<l:gentext key="published" text="Ñ…ÑвлÑгдÑÑн"/>
+<l:gentext key="Publisher" text="Ð¥ÑвлÑÑÑн компани"/>
+<l:gentext key="Qandadiv" text="Рба Х"/>
+<l:gentext key="qandadiv" text="Рба Х"/>
+<l:gentext key="QandASet" text="ТүгÑÑмÑл тавигддаг аÑуултууд"/>
+<l:gentext key="Question" text="Ð:"/>
+<l:gentext key="question" text="Ð:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="ÐшиглаÑан ном"/>
+<l:gentext key="reference" text="ашиглаÑан ном"/>
+<l:gentext key="References" text="ÐшиглаÑан номнууд"/>
+<l:gentext key="RefName" text="ÐÑÑ€"/>
+<l:gentext key="refname" text="нÑÑ€"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Ерөнхий агуулга"/>
+<l:gentext key="refsynopsisdiv" text="ерөнхий агуулга"/>
+<l:gentext key="RevHistory" text="Залруулалтын түүх"/>
+<l:gentext key="revhistory" text="залруулалтын түүх"/>
+<l:gentext key="revision" text="залруулалт"/>
+<l:gentext key="Revision" text="Залруулалт"/>
+<l:gentext key="sect1" text="Ð¥ÑÑÑг"/>
+<l:gentext key="sect2" text="Ð¥ÑÑÑг"/>
+<l:gentext key="sect3" text="Ð¥ÑÑÑг"/>
+<l:gentext key="sect4" text="Ð¥ÑÑÑг"/>
+<l:gentext key="sect5" text="Ð¥ÑÑÑг"/>
+<l:gentext key="section" text="Ð¥ÑÑÑг"/>
+<l:gentext key="Section" text="Ð¥ÑÑÑг"/>
+<l:gentext key="see" text="Харна уу"/>
+<l:gentext key="See" text="харна уу"/>
+<l:gentext key="seealso" text="Ð±Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу"/>
+<l:gentext key="Seealso" text="Ð‘Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу"/>
+<l:gentext key="SeeAlso" text="Ð‘Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу"/>
+<l:gentext key="set" text="цуглуулга"/>
+<l:gentext key="Set" text="Цуглуулга"/>
+<l:gentext key="setindex" text="цуглуулгын жагÑаалт"/>
+<l:gentext key="SetIndex" text="Цуглуулгын жагÑаалт"/>
+<l:gentext key="Sidebar" text="Хажуу Ñамбар"/>
+<l:gentext key="sidebar" text="хажуу Ñамбар"/>
+<l:gentext key="step" text="алхам"/>
+<l:gentext key="Step" text="Ðлхам"/>
+<l:gentext key="table" text="Ñ…Ò¯ÑнÑгт"/>
+<l:gentext key="Table" text="Ð¥Ò¯ÑнÑгт"/>
+<l:gentext key="task" text="даалгавар"/>
+<l:gentext key="Task" text="Даалгавар"/>
+<l:gentext key="tip" text="зөвлөгөө"/>
+<l:gentext key="TIP" text="ЗӨВЛӨГӨӨ"/>
+<l:gentext key="Tip" text="Зөвлөгөө"/>
+<l:gentext key="Warning" text="Сануулга"/>
+<l:gentext key="warning" text="Ñануулга"/>
+<l:gentext key="WARNING" text="СÐÐУУЛГÐ"/>
+<l:gentext key="and" text="ба"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Ð¥ÑнаÑан"/>
+<l:gentext key="edited" text="Ñ…ÑнаÑан"/>
+<l:gentext key="Editedby" text="Ð¥Ñнан тохиолдуулÑан"/>
+<l:gentext key="editedby" text="Ñ…Ñнан тохиолдуулÑан"/>
+<l:gentext key="in" text="дотор"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="тайлбар"/>
+<l:gentext key="Notes" text="Тайлбар"/>
+<l:gentext key="Pgs" text="ХуудаÑ"/>
+<l:gentext key="pgs" text="хуудаÑ"/>
+<l:gentext key="Revisedby" text="ЗалруулÑан: "/>
+<l:gentext key="revisedby" text="залруулÑан: "/>
+<l:gentext key="TableNotes" text="Тайлбар"/>
+<l:gentext key="tablenotes" text="тайлбар"/>
+<l:gentext key="TableofContents" text="Гарчиг"/>
+<l:gentext key="tableofcontents" text="гарчиг"/>
+<l:gentext key="unexpectedelementname" text="СанамÑаргүй Ñлемент"/>
+<l:gentext key="unsupported" text="дÑмжигдÑÑгүй"/>
+<l:gentext key="xrefto" text="xref руу"/>
+<l:gentext key="Authors" text="Зохиогчид"/>
+<l:gentext key="copyeditor" text="Хуулбар Ñ…Ñнан тохиолдуулагч"/>
+<l:gentext key="graphicdesigner" text="График дизайнч"/>
+<l:gentext key="productioneditor" text="БүтÑÑгдÑхүүн Ñ…Ñнан тохиолдуулагч"/>
+<l:gentext key="technicaleditor" text="Техникийн Ñ…Ñнан тохиолдуулагч"/>
+<l:gentext key="translator" text="Орчуулагч"/>
+<l:gentext key="listofequations" text="Ñ‚ÑгшитгÑлийн жагÑаалт"/>
+<l:gentext key="ListofEquations" text="ТÑгшитгÑлийн жагÑаалт"/>
+<l:gentext key="ListofExamples" text="ЖишÑÑний жагÑаалт"/>
+<l:gentext key="listofexamples" text="жишÑÑний жагÑаалт"/>
+<l:gentext key="ListofFigures" text="Зургийн жагÑаалт"/>
+<l:gentext key="listoffigures" text="зургийн жагÑаалт"/>
+<l:gentext key="ListofProcedures" text="ГүйцÑтгÑлийн жагÑаалт"/>
+<l:gentext key="listofprocedures" text="гүйцÑтгÑлийн жагÑаалт"/>
+<l:gentext key="listoftables" text="Ñ…Ò¯ÑнÑгтийн жагÑаалт"/>
+<l:gentext key="ListofTables" text="Ð¥Ò¯ÑнÑгтийн жагÑаалт"/>
+<l:gentext key="ListofUnknown" text="Тодорхойгүй жагÑаалт"/>
+<l:gentext key="listofunknown" text="тодорхойгүй жагÑаалт"/>
+<l:gentext key="nav-home" text="ЭхлÑл"/>
+<l:gentext key="nav-next" text="Дараах"/>
+<l:gentext key="nav-next-sibling" text="Дараах"/>
+<l:gentext key="nav-prev" text="Өмнөх"/>
+<l:gentext key="nav-prev-sibling" text="Өмнөх"/>
+<l:gentext key="nav-up" text="ДÑÑш"/>
+<l:gentext key="nav-toc" text="Гарчиг"/>
+<l:gentext key="Draft" text="Ðоорог"/>
+<l:gentext key="above" text="дÑÑÑ€"/>
+<l:gentext key="below" text="доор"/>
+<l:gentext key="sectioncalled" text="Ð¥ÑÑгийн нÑÑ€"/>
+<l:gentext key="index symbols" text="Ñ‚ÑмдÑгтүүд"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="абвгдеёжзийклмноөпрÑтуүфхцчшщъыьÑÑŽÑ"/>
+<l:gentext key="uppercase.alpha" text="ÐБВГДЕÐЖЗИЙКЛМÐОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="„"/>
+<l:dingbat key="nestedendquote" text="“"/>
+<l:dingbat key="singlestartquote" text="‚"/>
+<l:dingbat key="singleendquote" text="‘"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="styles"><l:template name="person-name" text="овог-нÑÑ€"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ХавÑралт %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="БүлÑг %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ТÑгшитгÑл %n. %t"/>
+<l:template name="example" text="ЖишÑÑ %n. %t"/>
+<l:template name="figure" text="Зураг %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Ñ…ÑÑÑг %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ГүйцÑтгÑл %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="БүтÑÑгдÑхүүн %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Ð: %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Ð¥Ò¯ÑнÑгт %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ХавÑралт %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="БүлÑг %n. %t"/>
+<l:template name="part" text="Ñ…ÑÑÑг %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Х: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Ð: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Ð: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" %o "/>
+<l:template name="olink.page.citation" text=" (Ñ…ÑƒÑƒÐ´Ð°Ñ %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(Ð¥ÑƒÑƒÐ´Ð°Ñ %p)"/>
+<l:template name="docname" text=" %o "/>
+<l:template name="docnamelong" text=" %o гарчигтай баримтад"/>
+<l:template name="pageabbrev" text="(Ð¥. %p)"/>
+<l:template name="Page" text="Ð¥ÑƒÑƒÐ´Ð°Ñ %p"/>
+<l:template name="bridgehead" text="«%t»"/>
+<l:template name="refsection" text="«%t»"/>
+<l:template name="refsect1" text="«%t»"/>
+<l:template name="refsect2" text="«%t»"/>
+<l:template name="refsect3" text="«%t»"/>
+<l:template name="sect1" text="«%t»"/>
+<l:template name="sect2" text="«%t»"/>
+<l:template name="sect3" text="«%t»"/>
+<l:template name="sect4" text="«%t»"/>
+<l:template name="sect5" text="«%t»"/>
+<l:template name="section" text="«%t»"/>
+<l:template name="simplesect" text="«%t»"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Х: %n"/>
+<l:template name="appendix" text="ХавÑралт %n"/>
+<l:template name="bridgehead" text="Ð¥ÑÑÑг %n"/>
+<l:template name="chapter" text="БүлÑг %n"/>
+<l:template name="equation" text="ТÑгшитгÑл %n"/>
+<l:template name="example" text="ЖишÑÑ %n"/>
+<l:template name="figure" text="Зураг %n"/>
+<l:template name="part" text="Ñ…ÑÑÑг %n"/>
+<l:template name="procedure" text="ГүйцÑтгÑл %n"/>
+<l:template name="productionset" text="БүтÑÑгдÑхүүн %n"/>
+<l:template name="qandadiv" text="Рба Х %n"/>
+<l:template name="qandaentry" text="Ð: %n"/>
+<l:template name="question" text="Ð: %n"/>
+<l:template name="sect1" text="Ð¥ÑÑÑг %n"/>
+<l:template name="sect2" text="Ð¥ÑÑÑг %n"/>
+<l:template name="sect3" text="Ð¥ÑÑÑг %n"/>
+<l:template name="sect4" text="Ð¥ÑÑÑг %n"/>
+<l:template name="sect5" text="Ð¥ÑÑÑг %n"/>
+<l:template name="section" text="Ð¥ÑÑÑг %n"/>
+<l:template name="table" text="Ð¥Ò¯ÑнÑгт %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ХавÑралт %n, %t"/>
+<l:template name="bridgehead" text="Ð¥ÑÑÑг %n, «%t»"/>
+<l:template name="chapter" text="БүлÑг %n, %t"/>
+<l:template name="equation" text="ТÑгшитгÑл %n, «%t»"/>
+<l:template name="example" text="ЖишÑÑ %n, «%t»"/>
+<l:template name="figure" text="Зураг %n, «%t»"/>
+<l:template name="part" text="Ñ…ÑÑÑг %n, «%t»"/>
+<l:template name="procedure" text="ГүйцÑтгÑл %n, «%t»"/>
+<l:template name="productionset" text="БүтÑÑгдÑхүүн %n, «%t»"/>
+<l:template name="qandadiv" text="Рба Х %n, «%t»"/>
+<l:template name="refsect1" text="Ð¥ÑÑгийн нÑÑ€ «%t»"/>
+<l:template name="refsect2" text="Ð¥ÑÑгийн нÑÑ€ «%t»"/>
+<l:template name="refsect3" text="Ð¥ÑÑгийн нÑÑ€ «%t»"/>
+<l:template name="refsection" text="Ð¥ÑÑгийн нÑÑ€ «%t»"/>
+<l:template name="sect1" text="Ð¥ÑÑÑг %n, «%t»"/>
+<l:template name="sect2" text="Ð¥ÑÑÑг %n, «%t»"/>
+<l:template name="sect3" text="Ð¥ÑÑÑг %n, «%t»"/>
+<l:template name="sect4" text="Ð¥ÑÑÑг %n, «%t»"/>
+<l:template name="sect5" text="Ð¥ÑÑÑг %n, «%t»"/>
+<l:template name="section" text="Ð¥ÑÑÑг %n, «%t»"/>
+<l:template name="simplesect" text="Ð¥ÑÑгийн нÑÑ€ «%t»"/>
+<l:template name="table" text="Ð¥Ò¯ÑнÑгт %n, «%t»"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ба "/>
+<l:template name="seplast" text=", ба "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="харна уу %t."/>
+<l:template name="seealso" text="Ð‘Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Зориулалт: "/>
+<l:template name="MsgLevel" text="Түвшин: "/>
+<l:template name="MsgOrig" text="Ò®Ò¯ÑÑл: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="Y/m/d"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Тодорхойлолт: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Хулгана Ñарын"/>
+<l:template name="February" text="ҮхÑÑ€ Ñарын"/>
+<l:template name="March" text="Бар Ñарын"/>
+<l:template name="April" text="Туулай Ñарын"/>
+<l:template name="May" text="Луу Ñарын"/>
+<l:template name="June" text="Могой Ñарын"/>
+<l:template name="July" text="Морь Ñарын"/>
+<l:template name="August" text="Хонь Ñарын"/>
+<l:template name="September" text="Бич Ñарын"/>
+<l:template name="October" text="Тахиа Ñарын"/>
+<l:template name="November" text="Ðохой Ñарын"/>
+<l:template name="December" text="Гахай Ñарын"/>
+<l:template name="Monday" text="Даваа"/>
+<l:template name="Tuesday" text="ÐœÑгмар"/>
+<l:template name="Wednesday" text="Лхагва"/>
+<l:template name="Thursday" text="ПүрÑв"/>
+<l:template name="Friday" text="БааÑан"/>
+<l:template name="Saturday" text="БÑмба"/>
+<l:template name="Sunday" text="ÐÑм"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Хул"/>
+<l:template name="Feb" text="ҮхÑ"/>
+<l:template name="Mar" text="Бар"/>
+<l:template name="Apr" text="Туу"/>
+<l:template name="May" text="Луу"/>
+<l:template name="Jun" text="Мог"/>
+<l:template name="Jul" text="Мор"/>
+<l:template name="Aug" text="Хон"/>
+<l:template name="Sep" text="Бич"/>
+<l:template name="Oct" text="Тах"/>
+<l:template name="Nov" text="Ðох"/>
+<l:template name="Dec" text="Гах"/>
+<l:template name="Mon" text="Да"/>
+<l:template name="Tue" text="ÐœÑ"/>
+<l:template name="Wed" text="Лх"/>
+<l:template name="Thu" text="Пү"/>
+<l:template name="Fri" text="Ба"/>
+<l:template name="Sat" text="БÑ"/>
+<l:template name="Sun" text="ÐÑ"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0450 Mongolian (MONGOLIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">ТÑмдÑгтүүд</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">Ð</l:l>
+<l:l i="270">а</l:l>
+<l:l i="280">Б</l:l>
+<l:l i="280">б</l:l>
+<l:l i="290">Ð’</l:l>
+<l:l i="290">в</l:l>
+<l:l i="300">Г</l:l>
+<l:l i="300">г</l:l>
+<l:l i="310">Д</l:l>
+<l:l i="310">д</l:l>
+<l:l i="320">Е</l:l>
+<l:l i="320">е</l:l>
+<l:l i="330">Ð</l:l>
+<l:l i="330">Ñ‘</l:l>
+<l:l i="340">Ж</l:l>
+<l:l i="340">ж</l:l>
+<l:l i="350">З</l:l>
+<l:l i="350">з</l:l>
+<l:l i="360">И</l:l>
+<l:l i="360">и</l:l>
+<l:l i="370">Й</l:l>
+<l:l i="370">й</l:l>
+<l:l i="380">К</l:l>
+<l:l i="380">к</l:l>
+<l:l i="390">Л</l:l>
+<l:l i="390">л</l:l>
+<l:l i="400">М</l:l>
+<l:l i="400">м</l:l>
+<l:l i="410">Ð</l:l>
+<l:l i="410">н</l:l>
+<l:l i="420">О</l:l>
+<l:l i="420">о</l:l>
+<l:l i="430">Ó¨</l:l>
+<l:l i="430">Ó©</l:l>
+<l:l i="440">П</l:l>
+<l:l i="440">п</l:l>
+<l:l i="450">Р</l:l>
+<l:l i="450">Ñ€</l:l>
+<l:l i="460">С</l:l>
+<l:l i="460">Ñ</l:l>
+<l:l i="470">Т</l:l>
+<l:l i="470">Ñ‚</l:l>
+<l:l i="480">У</l:l>
+<l:l i="480">у</l:l>
+<l:l i="490">Ò®</l:l>
+<l:l i="490">Ò¯</l:l>
+<l:l i="500">Ф</l:l>
+<l:l i="500">Ñ„</l:l>
+<l:l i="510">Ð¥</l:l>
+<l:l i="510">Ñ…</l:l>
+<l:l i="520">Ц</l:l>
+<l:l i="520">ц</l:l>
+<l:l i="530">Ч</l:l>
+<l:l i="530">ч</l:l>
+<l:l i="540">Ш</l:l>
+<l:l i="540">ш</l:l>
+<l:l i="550">Щ</l:l>
+<l:l i="550">щ</l:l>
+<l:l i="560">Ъ</l:l>
+<l:l i="560">ÑŠ</l:l>
+<l:l i="570">Ы</l:l>
+<l:l i="570">Ñ‹</l:l>
+<l:l i="580">Ь</l:l>
+<l:l i="580">ь</l:l>
+<l:l i="590">Э</l:l>
+<l:l i="590">Ñ</l:l>
+<l:l i="600">Ю</l:l>
+<l:l i="600">ÑŽ</l:l>
+<l:l i="610">Я</l:l>
+<l:l i="610">Ñ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml
new file mode 100644
index 0000000..798fff5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="mr" english-language-name="Marathi">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/mr.xml -->
+<!-- * -->
+<!-- * E-mail the edited mr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="सारांश"/>
+<l:gentext key="abstract" text="सारांश"/>
+<l:gentext key="Acknowledgements" text="आभार"/>
+<l:gentext key="acknowledgements" text="आभार"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="a:"/>
+<l:gentext key="Appendix" text="परिशिषà¥à¤Ÿ"/>
+<l:gentext key="appendix" text="परिशिषà¥à¤Ÿ"/>
+<l:gentext key="Article" text="लेख"/>
+<l:gentext key="article" text="लेख"/>
+<l:gentext key="Author" text="लेखक"/>
+<l:gentext key="Bibliography" text="गà¥à¤°à¤‚थसूची"/>
+<l:gentext key="bibliography" text="गà¥à¤°à¤‚थसूची"/>
+<l:gentext key="Book" text="पà¥à¤¸à¥à¤¤à¤•"/>
+<l:gentext key="book" text="पà¥à¤¸à¥à¤¤à¤•"/>
+<l:gentext key="CAUTION" text="सावधगिरी"/>
+<l:gentext key="Caution" text="सावधगिरी"/>
+<l:gentext key="caution" text="सावधगिरी"/>
+<l:gentext key="Chapter" text="धडा"/>
+<l:gentext key="chapter" text="धडा"/>
+<l:gentext key="Colophon" text="कोलोफोन"/>
+<l:gentext key="colophon" text="कोलोफोन"/>
+<l:gentext key="Copyright" text="सरà¥à¤µà¤¾à¤¹à¤•à¥à¤•à¤¾à¤§à¤¿à¤•à¤¾à¤°"/>
+<l:gentext key="copyright" text="सरà¥à¤µà¤¾à¤¹à¤•à¥à¤•à¤¾à¤§à¤¿à¤•à¤¾à¤°"/>
+<l:gentext key="Dedication" text="समरà¥à¤ªà¤£"/>
+<l:gentext key="dedication" text="समरà¥à¤ªà¤£"/>
+<l:gentext key="Edition" text="आवृतà¥à¤¤à¥€"/>
+<l:gentext key="edition" text="आवृतà¥à¤¤à¥€"/>
+<l:gentext key="Editor" text="संपादक"/>
+<l:gentext key="Equation" text="समीकरण"/>
+<l:gentext key="equation" text="समीकरण"/>
+<l:gentext key="Example" text="उदाहरण"/>
+<l:gentext key="example" text="उदाहरण"/>
+<l:gentext key="Figure" text="आकृती"/>
+<l:gentext key="figure" text="आकृती"/>
+<l:gentext key="Glossary" text="शबà¥à¤¦à¤•à¥‹à¤·"/>
+<l:gentext key="glossary" text="शबà¥à¤¦à¤•à¥‹à¤·"/>
+<l:gentext key="GlossSee" text="पहा"/>
+<l:gentext key="glosssee" text="पहा"/>
+<l:gentext key="GlossSeeAlso" text="हे ही पहा"/>
+<l:gentext key="glossseealso" text="हे ही पहा"/>
+<l:gentext key="IMPORTANT" text="महतà¥à¤¤à¤¾à¤µà¤šà¥‡"/>
+<l:gentext key="important" text="महतà¥à¤¤à¤¾à¤µà¤šà¥‡"/>
+<l:gentext key="Important" text="महतà¥à¤¤à¤¾à¤µà¤šà¥‡"/>
+<l:gentext key="Index" text="इंडेकà¥à¤¸à¥"/>
+<l:gentext key="index" text="इंडेकà¥à¤¸à¥"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="कायदेशीर सूचना"/>
+<l:gentext key="legalnotice" text="कायदेशीर सूचना"/>
+<l:gentext key="MsgAud" text="पà¥à¤°à¤•à¥à¤·à¥‡à¤•"/>
+<l:gentext key="msgaud" text="पà¥à¤°à¤•à¥à¤·à¥‡à¤•"/>
+<l:gentext key="MsgLevel" text="सà¥à¤¤à¤°"/>
+<l:gentext key="msglevel" text="सà¥à¤¤à¤°"/>
+<l:gentext key="MsgOrig" text="मà¥à¤³"/>
+<l:gentext key="msgorig" text="मà¥à¤³"/>
+<l:gentext key="NOTE" text="टीप"/>
+<l:gentext key="Note" text="टीप"/>
+<l:gentext key="note" text="टीप"/>
+<l:gentext key="Part" text="भाग"/>
+<l:gentext key="part" text="भाग"/>
+<l:gentext key="Preface" text="पà¥à¤°à¤¸à¥à¤¤à¤¾à¤µà¤¨à¤¾"/>
+<l:gentext key="preface" text="पà¥à¤°à¤¸à¥à¤¤à¤¾à¤µà¤¨à¤¾"/>
+<l:gentext key="Procedure" text="कारà¥à¤¯à¤ªà¤¦à¥à¤§à¤¤"/>
+<l:gentext key="procedure" text="कारà¥à¤¯à¤ªà¤¦à¥à¤§à¤¤"/>
+<l:gentext key="ProductionSet" text="पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿"/>
+<l:gentext key="PubDate" text="पà¥à¤°à¤•à¤¾à¤¶à¤¨ दिनांक"/>
+<l:gentext key="pubdate" text="पà¥à¤°à¤•à¤¾à¤¶à¤¨ दिनांक"/>
+<l:gentext key="Published" text="पà¥à¤°à¤•à¤¾à¤¶à¥€à¤¤"/>
+<l:gentext key="published" text="पà¥à¤°à¤•à¤¾à¤¶à¥€à¤¤"/>
+<l:gentext key="Publisher" text="पà¥à¤°à¤•à¤¾à¤¶à¤•"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="नेहमी विचारलेली पà¥à¤°à¤¶à¥à¤¨"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="q:"/>
+<l:gentext key="RefEntry" text="पान"/>
+<l:gentext key="refentry" text="पान"/>
+<l:gentext key="Reference" text="संदरà¥à¤­"/>
+<l:gentext key="reference" text="संदरà¥à¤­"/>
+<l:gentext key="References" text="संदरà¥à¤­"/>
+<l:gentext key="RefName" text="नाव"/>
+<l:gentext key="refname" text="नाव"/>
+<l:gentext key="RefSection" text="विभाग"/>
+<l:gentext key="refsection" text="विभाग"/>
+<l:gentext key="RefSynopsisDiv" text="रूपरेशा"/>
+<l:gentext key="refsynopsisdiv" text="रूपरेशा"/>
+<l:gentext key="RevHistory" text="आवृतà¥à¤¤à¥€ हतिहास"/>
+<l:gentext key="revhistory" text="आवृतà¥à¤¤à¥€ हतिहास"/>
+<l:gentext key="revision" text="आवृतà¥à¤¤à¥€"/>
+<l:gentext key="Revision" text="आवृतà¥à¤¤à¥€"/>
+<l:gentext key="sect1" text="विभाग"/>
+<l:gentext key="sect2" text="विभाग"/>
+<l:gentext key="sect3" text="विभाग"/>
+<l:gentext key="sect4" text="विभाग"/>
+<l:gentext key="sect5" text="विभाग"/>
+<l:gentext key="section" text="विभाग"/>
+<l:gentext key="Section" text="विभाग"/>
+<l:gentext key="see" text="पहा"/>
+<l:gentext key="See" text="पहा"/>
+<l:gentext key="seealso" text="हे ही पहा"/>
+<l:gentext key="Seealso" text="हे ही पहा"/>
+<l:gentext key="SeeAlso" text="हे ही पहा"/>
+<l:gentext key="set" text="गट"/>
+<l:gentext key="Set" text="गट"/>
+<l:gentext key="setindex" text="इंडेकà¥à¤¸à¥ गट"/>
+<l:gentext key="SetIndex" text="इंडेकà¥à¤¸à¥ गट"/>
+<l:gentext key="Sidebar" text="बाजूची पटà¥à¤Ÿà¥€"/>
+<l:gentext key="sidebar" text="बाजूची पटà¥à¤Ÿà¥€"/>
+<l:gentext key="step" text="कारà¥à¤¯"/>
+<l:gentext key="Step" text="कारà¥à¤¯"/>
+<l:gentext key="table" text="तकà¥à¤¤à¤¾"/>
+<l:gentext key="Table" text="तकà¥à¤¤à¤¾"/>
+<l:gentext key="task" text="कारà¥à¤¯"/>
+<l:gentext key="Task" text="कारà¥à¤¯"/>
+<l:gentext key="tip" text="टीप"/>
+<l:gentext key="TIP" text="टीप"/>
+<l:gentext key="Tip" text="टीप"/>
+<l:gentext key="Warning" text="सावधानता"/>
+<l:gentext key="warning" text="सावधानता"/>
+<l:gentext key="WARNING" text="सावधानता"/>
+<l:gentext key="and" text="व"/>
+<l:gentext key="by" text="दà¥à¤µà¤¾à¤°à¥‡"/>
+<l:gentext key="Edited" text="संपादीत"/>
+<l:gentext key="edited" text="संपादीत"/>
+<l:gentext key="Editedby" text="दà¥à¤µà¤¾à¤°à¥‡ संपादीत"/>
+<l:gentext key="editedby" text="दà¥à¤µà¤¾à¤°à¥‡ संपादीत"/>
+<l:gentext key="in" text="मधील"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="टीपा"/>
+<l:gentext key="Notes" text="टीपा"/>
+<l:gentext key="Pgs" text="पाने"/>
+<l:gentext key="pgs" text="पाने"/>
+<l:gentext key="Revisedby" text="दà¥à¤µà¤¾à¤°à¥‡ सà¥à¤§à¤¾à¤°à¥€à¤¤: "/>
+<l:gentext key="revisedby" text="दà¥à¤µà¤¾à¤°à¥‡ सà¥à¤§à¤¾à¤°à¥€à¤¤: "/>
+<l:gentext key="TableNotes" text="टीपा"/>
+<l:gentext key="tablenotes" text="टीपा"/>
+<l:gentext key="TableofContents" text="अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾"/>
+<l:gentext key="tableofcontents" text="अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾"/>
+<l:gentext key="unexpectedelementname" text="अनपेकà¥à¤·à¥€à¤¤ घटकाचे नाव"/>
+<l:gentext key="unsupported" text="असमरà¥à¤¥à¥€à¤¤"/>
+<l:gentext key="xrefto" text="xref"/>
+<l:gentext key="Authors" text="लेखक"/>
+<l:gentext key="copyeditor" text="पà¥à¤°à¤¤ संपादक"/>
+<l:gentext key="graphicdesigner" text="गà¥à¤°à¤¾à¤«à¤¿à¤•à¥à¤¸à¥ डिजाइनर"/>
+<l:gentext key="productioneditor" text="पà¥à¤°à¥‹à¤¡à¤•à¥à¤¶à¤¨ संपादक"/>
+<l:gentext key="technicaleditor" text="तांतà¥à¤°à¤¿à¤• संपादक"/>
+<l:gentext key="translator" text="भाषांतरनकरà¥à¤¤à¤¾"/>
+<l:gentext key="listofequations" text="समीकरणांची सूची"/>
+<l:gentext key="ListofEquations" text="समीकरणांची सूची"/>
+<l:gentext key="ListofExamples" text="उदाहरणांची सूची"/>
+<l:gentext key="listofexamples" text="उदाहरणांची सूची"/>
+<l:gentext key="ListofFigures" text="आकृतींची सूची"/>
+<l:gentext key="listoffigures" text="आकृतींची सूची"/>
+<l:gentext key="ListofProcedures" text="कारà¥à¤¯à¤ªà¤¦à¥à¤§à¤¤à¥€à¤‚ची सूची"/>
+<l:gentext key="listofprocedures" text="कारà¥à¤¯à¤ªà¤¦à¥à¤§à¤¤à¥€à¤‚ची सूची"/>
+<l:gentext key="listoftables" text="तकà¥à¤¤à¥à¤¯à¤¾à¤‚ची सूची"/>
+<l:gentext key="ListofTables" text="तकà¥à¤¤à¥à¤¯à¤¾à¤‚ची सूची"/>
+<l:gentext key="ListofUnknown" text="अपरिचीतांची सूची"/>
+<l:gentext key="listofunknown" text="अपरिचीतांची सूची"/>
+<l:gentext key="nav-home" text="होम"/>
+<l:gentext key="nav-next" text="पà¥à¤¢à¥€à¤²"/>
+<l:gentext key="nav-next-sibling" text="पटकन पà¥à¤¢à¥‡ चला"/>
+<l:gentext key="nav-prev" text="मागील"/>
+<l:gentext key="nav-prev-sibling" text="पटकन माघे चला"/>
+<l:gentext key="nav-up" text="वर"/>
+<l:gentext key="nav-toc" text="अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾"/>
+<l:gentext key="Draft" text="मसà¥à¤¦à¤¾"/>
+<l:gentext key="above" text="वरील"/>
+<l:gentext key="below" text="खालील"/>
+<l:gentext key="sectioncalled" text="...नामक विभाग"/>
+<l:gentext key="index symbols" text="पà¥à¤°à¤¤à¥€à¤•"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="धडा %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="समीकरण %n. %t"/>
+<l:template name="example" text="उदाहरण %n. %t"/>
+<l:template name="figure" text="आकृती %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="भाग %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="कारà¥à¤¯à¤ªà¤¦à¥à¤§à¤¤Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="तकà¥à¤¤à¤¾Â %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="धडा %n. %t"/>
+<l:template name="part" text="भाग %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="...नामक विभाग “%tâ€"/>
+<l:template name="refsection" text="...नामक विभाग “%tâ€"/>
+<l:template name="refsect1" text="...नामक विभाग “%tâ€"/>
+<l:template name="refsect2" text="...नामक विभाग “%tâ€"/>
+<l:template name="refsect3" text="...नामक विभाग “%tâ€"/>
+<l:template name="sect1" text="...नामक विभाग “%tâ€"/>
+<l:template name="sect2" text="...नामक विभाग “%tâ€"/>
+<l:template name="sect3" text="...नामक विभाग “%tâ€"/>
+<l:template name="sect4" text="...नामक विभाग “%tâ€"/>
+<l:template name="sect5" text="...नामक विभाग “%tâ€"/>
+<l:template name="section" text="...नामक विभाग “%tâ€"/>
+<l:template name="simplesect" text="...नामक विभाग “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n"/>
+<l:template name="bridgehead" text="विभाग %n"/>
+<l:template name="chapter" text="धडा %n"/>
+<l:template name="equation" text="समीकरण %n"/>
+<l:template name="example" text="उदाहरण %n"/>
+<l:template name="figure" text="आकृती %n"/>
+<l:template name="part" text="भाग %n"/>
+<l:template name="procedure" text="कारà¥à¤¯à¤ªà¤¦à¥à¤§à¤¤Â %n"/>
+<l:template name="productionset" text="पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿Â %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="विभाग %n"/>
+<l:template name="sect2" text="विभाग %n"/>
+<l:template name="sect3" text="विभाग %n"/>
+<l:template name="sect4" text="विभाग %n"/>
+<l:template name="sect5" text="विभाग %n"/>
+<l:template name="section" text="विभाग %n"/>
+<l:template name="table" text="तकà¥à¤¤à¤¾Â %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="परिशिषà¥à¤ŸÂ %n, %t"/>
+<l:template name="bridgehead" text="विभाग %n, “%tâ€"/>
+<l:template name="chapter" text="धडा %n, %t"/>
+<l:template name="equation" text="समीकरण %n, “%tâ€"/>
+<l:template name="example" text="उदाहरण %n, “%tâ€"/>
+<l:template name="figure" text="आकृती %n, “%tâ€"/>
+<l:template name="part" text="भाग %n, “%tâ€"/>
+<l:template name="procedure" text="कारà¥à¤¯à¤ªà¤¦à¥à¤§à¤¤Â %n, “%tâ€"/>
+<l:template name="productionset" text="पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%tâ€"/>
+<l:template name="refsect1" text="...नामक विभाग “%tâ€"/>
+<l:template name="refsect2" text="...नामक विभाग “%tâ€"/>
+<l:template name="refsect3" text="...नामक विभाग “%tâ€"/>
+<l:template name="refsection" text="...नामक विभाग “%tâ€"/>
+<l:template name="sect1" text="विभाग %n, “%tâ€"/>
+<l:template name="sect2" text="विभाग %n, “%tâ€"/>
+<l:template name="sect3" text="विभाग %n, “%tâ€"/>
+<l:template name="sect4" text="विभाग %n, “%tâ€"/>
+<l:template name="sect5" text="विभाग %n, “%tâ€"/>
+<l:template name="section" text="विभाग %n, “%tâ€"/>
+<l:template name="simplesect" text="...नामक विभाग “%tâ€"/>
+<l:template name="table" text="तकà¥à¤¤à¤¾Â %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" व "/>
+<l:template name="seplast" text=", व "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="पहा %t."/>
+<l:template name="seealso" text="हे ही पहा %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="पà¥à¤°à¤•à¥à¤·à¥‡à¤•: "/>
+<l:template name="MsgLevel" text="सà¥à¤¤à¤°: "/>
+<l:template name="MsgOrig" text="मà¥à¤³: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="जानेवारी"/>
+<l:template name="February" text="फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€"/>
+<l:template name="March" text="मारà¥à¤š"/>
+<l:template name="April" text="à¤à¤ªà¥à¤°à¤¿à¤²"/>
+<l:template name="May" text="मे"/>
+<l:template name="June" text="जून"/>
+<l:template name="July" text="जà¥à¤²à¥ˆ"/>
+<l:template name="August" text="ऑगसà¥à¤Ÿ"/>
+<l:template name="September" text="सपà¥à¤Ÿà¥‡à¤‚बर"/>
+<l:template name="October" text="ऑकà¥à¤Ÿà¥‹à¤¬à¤°"/>
+<l:template name="November" text="नोवà¥à¤¹à¥‡à¤‚बर"/>
+<l:template name="December" text="डिसेंबर"/>
+<l:template name="Monday" text="सोमवार"/>
+<l:template name="Tuesday" text="मंगळवार"/>
+<l:template name="Wednesday" text="बà¥à¤§à¤µà¤¾à¤°"/>
+<l:template name="Thursday" text="गà¥à¤°à¥‚वार"/>
+<l:template name="Friday" text="शà¥à¤•à¥à¤°à¤µà¤¾à¤°"/>
+<l:template name="Saturday" text="शनिवार"/>
+<l:template name="Sunday" text="रविवार"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="जा"/>
+<l:template name="Feb" text="फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€"/>
+<l:template name="Mar" text="मारà¥à¤š"/>
+<l:template name="Apr" text="à¤à¤ªà¥à¤°à¤¿à¤²"/>
+<l:template name="May" text="मे"/>
+<l:template name="Jun" text="जून"/>
+<l:template name="Jul" text="जà¥à¤²à¥ˆ"/>
+<l:template name="Aug" text="ऑगसà¥à¤Ÿ"/>
+<l:template name="Sep" text="सपà¥à¤Ÿà¥‡à¤‚"/>
+<l:template name="Oct" text="ऑकà¥à¤Ÿà¥‹"/>
+<l:template name="Nov" text="नोवà¥à¤¹à¥‡à¤‚बर"/>
+<l:template name="Dec" text="डिसेंबर"/>
+<l:template name="Mon" text="सोम"/>
+<l:template name="Tue" text="मंगळ"/>
+<l:template name="Wed" text="बà¥à¤§"/>
+<l:template name="Thu" text="गà¥à¤°à¥‚"/>
+<l:template name="Fri" text="शà¥à¤•à¥à¤°"/>
+<l:template name="Sat" text="शनि"/>
+<l:template name="Sun" text="रवि"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x044e Marathi"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">पà¥à¤°à¤¤à¥€à¤•</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml
new file mode 100644
index 0000000..b9d8a4f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nb" english-language-name="Norwegian Bokmål">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/nb.xml -->
+<!-- * -->
+<!-- * E-mail the edited nb.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sammendrag"/>
+<l:gentext key="abstract" text="Sammendrag"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Svar"/>
+<l:gentext key="answer" text="svar"/>
+<l:gentext key="Appendix" text="Tillegg"/>
+<l:gentext key="appendix" text="Tillegg"/>
+<l:gentext key="Article" text="Artikkel"/>
+<l:gentext key="article" text="artikkel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografi"/>
+<l:gentext key="bibliography" text="Bibliografi"/>
+<l:gentext key="Book" text="Bok"/>
+<l:gentext key="book" text="bok"/>
+<l:gentext key="CAUTION" text="OBS"/>
+<l:gentext key="Caution" text="Obs"/>
+<l:gentext key="caution" text="obs"/>
+<l:gentext key="Chapter" text="Kapittel"/>
+<l:gentext key="chapter" text="Kapittel"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Opphavsrett"/>
+<l:gentext key="copyright" text="opphavsrett"/>
+<l:gentext key="Dedication" text="Dedikasjon"/>
+<l:gentext key="dedication" text="Dedikasjon"/>
+<l:gentext key="Edition" text="Utgave"/>
+<l:gentext key="edition" text="utgave"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Formel"/>
+<l:gentext key="equation" text="Formel"/>
+<l:gentext key="Example" text="Eksempel"/>
+<l:gentext key="example" text="Eksempel"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="Figur"/>
+<l:gentext key="Glossary" text="Ordliste"/>
+<l:gentext key="glossary" text="Ordliste"/>
+<l:gentext key="GlossSee" text="Se"/>
+<l:gentext key="glosssee" text="Se"/>
+<l:gentext key="GlossSeeAlso" text="Se også"/>
+<l:gentext key="glossseealso" text="se også"/>
+<l:gentext key="IMPORTANT" text="VIKTIG"/>
+<l:gentext key="important" text="viktig"/>
+<l:gentext key="Important" text="Viktig"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="Indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Rettslig merknad"/>
+<l:gentext key="legalnotice" text="rettslig merknad"/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="Publikum"/>
+<l:gentext key="MsgLevel" text="Nivå"/>
+<l:gentext key="msglevel" text="Nivå"/>
+<l:gentext key="MsgOrig" text="Opphav"/>
+<l:gentext key="msgorig" text="Opphav"/>
+<l:gentext key="NOTE" text="NOTAT"/>
+<l:gentext key="Note" text="Notat"/>
+<l:gentext key="note" text="notat"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="del"/>
+<l:gentext key="Preface" text="Forord"/>
+<l:gentext key="preface" text="forord"/>
+<l:gentext key="Procedure" text="Prosedyre"/>
+<l:gentext key="procedure" text="prosedyre"/>
+<l:gentext key="ProductionSet" text="Produksjon"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Publisert"/>
+<l:gentext key="published" text="publisert"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Spørsmål og svar"/>
+<l:gentext key="qandadiv" text="spørsmål og svar"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Spørsmål"/>
+<l:gentext key="question" text="spørsmål"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referanse"/>
+<l:gentext key="reference" text="referanse"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Navn"/>
+<l:gentext key="refname" text="navn"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revisjonshistorie"/>
+<l:gentext key="revhistory" text="revisjonshistorie"/>
+<l:gentext key="revision" text="revisjon"/>
+<l:gentext key="Revision" text="Revisjon"/>
+<l:gentext key="sect1" text="Seksjon"/>
+<l:gentext key="sect2" text="Seksjon"/>
+<l:gentext key="sect3" text="Seksjon"/>
+<l:gentext key="sect4" text="Seksjon"/>
+<l:gentext key="sect5" text="Seksjon"/>
+<l:gentext key="section" text="seksjon"/>
+<l:gentext key="Section" text="Seksjon"/>
+<l:gentext key="see" text="Se"/>
+<l:gentext key="See" text="Se"/>
+<l:gentext key="seealso" text="se også"/>
+<l:gentext key="Seealso" text="Se også"/>
+<l:gentext key="SeeAlso" text="Se også"/>
+<l:gentext key="set" text="sett"/>
+<l:gentext key="Set" text="Sett"/>
+<l:gentext key="setindex" text="settindeks"/>
+<l:gentext key="SetIndex" text="Settindeks"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text=""/>
+<l:gentext key="step" text="steg"/>
+<l:gentext key="Step" text="Steg"/>
+<l:gentext key="table" text="tabell"/>
+<l:gentext key="Table" text="Tabell"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tips"/>
+<l:gentext key="TIP" text="TIPS"/>
+<l:gentext key="Tip" text="Tips"/>
+<l:gentext key="Warning" text="Advarsel"/>
+<l:gentext key="warning" text="advarsel"/>
+<l:gentext key="WARNING" text="ADVARSEL"/>
+<l:gentext key="and" text="og"/>
+<l:gentext key="by" text="av"/>
+<l:gentext key="Edited" text="Redigert"/>
+<l:gentext key="edited" text="redigert"/>
+<l:gentext key="Editedby" text="Redigert av"/>
+<l:gentext key="editedby" text="redigert av"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Sluttnotater"/>
+<l:gentext key="Notes" text="sluttnotater"/>
+<l:gentext key="Pgs" text="Sider"/>
+<l:gentext key="pgs" text="sider"/>
+<l:gentext key="Revisedby" text="Gjennomgått av: "/>
+<l:gentext key="revisedby" text="gjennomgått av: "/>
+<l:gentext key="TableNotes" text="Notater"/>
+<l:gentext key="tablenotes" text="notater"/>
+<l:gentext key="TableofContents" text="Innholdsfortegnelse"/>
+<l:gentext key="tableofcontents" text="innholdsfortegnelse"/>
+<l:gentext key="unexpectedelementname" text="UVENTET-ELEMENTNAVN"/>
+<l:gentext key="unsupported" text="ikke støttet"/>
+<l:gentext key="xrefto" text="xref til"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Formeloversikt"/>
+<l:gentext key="ListofEquations" text="formeloversikt"/>
+<l:gentext key="ListofExamples" text="Eksempeloversikt"/>
+<l:gentext key="listofexamples" text="eksempeloversikt"/>
+<l:gentext key="ListofFigures" text="Figuroversikt"/>
+<l:gentext key="listoffigures" text="figuroversikt"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Tabelloversikt"/>
+<l:gentext key="ListofTables" text="tabelloversikt"/>
+<l:gentext key="ListofUnknown" text="???-oversikt"/>
+<l:gentext key="listofunknown" text="???-oversikt"/>
+<l:gentext key="nav-home" text="Hjem"/>
+<l:gentext key="nav-next" text="Neste"/>
+<l:gentext key="nav-next-sibling" text="Raskt fremover"/>
+<l:gentext key="nav-prev" text="Forrige"/>
+<l:gentext key="nav-prev-sibling" text="Raskt bakover"/>
+<l:gentext key="nav-up" text="Opp"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Utkast"/>
+<l:gentext key="above" text="over"/>
+<l:gentext key="below" text="under"/>
+<l:gentext key="sectioncalled" text="Seksjonen kalt"/>
+<l:gentext key="index symbols" text="Symboler"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzæøå"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Formel %n. %t"/>
+<l:template name="example" text="Eksempel %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedyre %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produksjon %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabell %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Spørsmål %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spørsmål %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="Tillegg %n"/>
+<l:template name="bridgehead" text="Seksjon %n"/>
+<l:template name="chapter" text="Kapittel %n"/>
+<l:template name="equation" text="Formel %n"/>
+<l:template name="example" text="Eksempel %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Prosedyre %n"/>
+<l:template name="productionset" text="Produksjon %n"/>
+<l:template name="qandadiv" text="Spørsmål og svar %n"/>
+<l:template name="qandaentry" text="Spørsmål %n"/>
+<l:template name="question" text="Spørsmål %n"/>
+<l:template name="sect1" text="Seksjon %n"/>
+<l:template name="sect2" text="Seksjon %n"/>
+<l:template name="sect3" text="Seksjon %n"/>
+<l:template name="sect4" text="Seksjon %n"/>
+<l:template name="sect5" text="Seksjon %n"/>
+<l:template name="section" text="Seksjon %n"/>
+<l:template name="table" text="Tabell %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Tillegg %n, %t"/>
+<l:template name="bridgehead" text="Seksjon %n, “%tâ€"/>
+<l:template name="chapter" text="Kapittel %n, %t"/>
+<l:template name="equation" text="Formel %n, “%tâ€"/>
+<l:template name="example" text="Eksempel %n, “%tâ€"/>
+<l:template name="figure" text="Figur %n, “%tâ€"/>
+<l:template name="part" text="Del %n, “%tâ€"/>
+<l:template name="procedure" text="Prosedyre %n, “%tâ€"/>
+<l:template name="productionset" text="Produksjon %n, “%tâ€"/>
+<l:template name="qandadiv" text="SpørsmÃ¥l og svar %n, “%tâ€"/>
+<l:template name="refsect1" text="Seksjonen kalt “%tâ€"/>
+<l:template name="refsect2" text="Seksjonen kalt “%tâ€"/>
+<l:template name="refsect3" text="Seksjonen kalt “%tâ€"/>
+<l:template name="refsection" text="Seksjonen kalt “%tâ€"/>
+<l:template name="sect1" text="Seksjon %n, “%tâ€"/>
+<l:template name="sect2" text="Seksjon %n, “%tâ€"/>
+<l:template name="sect3" text="Seksjon %n, “%tâ€"/>
+<l:template name="sect4" text="Seksjon %n, “%tâ€"/>
+<l:template name="sect5" text="Seksjon %n, “%tâ€"/>
+<l:template name="section" text="Seksjon %n, “%tâ€"/>
+<l:template name="simplesect" text="Seksjonen kalt “%tâ€"/>
+<l:template name="table" text="Tabell %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" og "/>
+<l:template name="seplast" text=", og "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Se %t."/>
+<l:template name="seealso" text="Se også %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Nivå: "/>
+<l:template name="MsgOrig" text="Opphav: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0414 Norwegian Bokmål"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml
new file mode 100644
index 0000000..af4b296
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml
@@ -0,0 +1,666 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nds" english-language-name="Low German">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/nds.xml -->
+<!-- * -->
+<!-- * E-mail the edited nds.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Tosammenfaten"/>
+<l:gentext key="abstract" text="Tosammenfaten"/>
+<l:gentext key="Acknowledgements" text="Danksagungen"/>
+<l:gentext key="acknowledgements" text="Danksagungen"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="a:"/>
+<l:gentext key="Appendix" text="Anhang"/>
+<l:gentext key="appendix" text="Anhang"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="Artikel"/>
+<l:gentext key="Author" text="Schriever"/>
+<l:gentext key="Bibliography" text="Literaturverteeknis"/>
+<l:gentext key="bibliography" text="Literaturverteeknis"/>
+<l:gentext key="Book" text="Book"/>
+<l:gentext key="book" text="Book"/>
+<l:gentext key="CAUTION" text="ACHTUNG"/>
+<l:gentext key="Caution" text="Achtung"/>
+<l:gentext key="caution" text="Achtung"/>
+<l:gentext key="Chapter" text="Kapitel"/>
+<l:gentext key="chapter" text="Kapitel"/>
+<l:gentext key="Colophon" text="Kolophon"/>
+<l:gentext key="colophon" text="Kolophon"/>
+<l:gentext key="Copyright" text="Koperschood"/>
+<l:gentext key="copyright" text="Koperschood"/>
+<l:gentext key="Dedication" text="Widmung"/>
+<l:gentext key="dedication" text="Widmung"/>
+<l:gentext key="Edition" text="Utgav"/>
+<l:gentext key="edition" text="Utgav"/>
+<l:gentext key="Editor" text="Bewarker"/>
+<l:gentext key="Equation" text="Glieken"/>
+<l:gentext key="equation" text="Glieken"/>
+<l:gentext key="Example" text="Bispeel"/>
+<l:gentext key="example" text="Bispeel"/>
+<l:gentext key="Figure" text="Avbillen"/>
+<l:gentext key="figure" text="Avbillen"/>
+<l:gentext key="Glossary" text="Glossar"/>
+<l:gentext key="glossary" text="Glossar"/>
+<l:gentext key="GlossSee" text="Kiek"/>
+<l:gentext key="glosssee" text="kiek"/>
+<l:gentext key="GlossSeeAlso" text="Kiek ook"/>
+<l:gentext key="glossseealso" text="kiek ook"/>
+<l:gentext key="IMPORTANT" text="WICHTIG"/>
+<l:gentext key="important" text="Wichtig"/>
+<l:gentext key="Important" text="Wichtig"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Rechtlicher Henwies"/>
+<l:gentext key="legalnotice" text="rechtlicher Henwies"/>
+<l:gentext key="MsgAud" text="Täälgrupp"/>
+<l:gentext key="msgaud" text="Täälgrupp"/>
+<l:gentext key="MsgLevel" text="Ebene"/>
+<l:gentext key="msglevel" text="Ebene"/>
+<l:gentext key="MsgOrig" text="Ursprung"/>
+<l:gentext key="msgorig" text="Ursprung"/>
+<l:gentext key="NOTE" text="NOTIZ"/>
+<l:gentext key="Note" text="Notiz"/>
+<l:gentext key="note" text="Notiz"/>
+<l:gentext key="Part" text="Deel"/>
+<l:gentext key="part" text="Deel"/>
+<l:gentext key="Preface" text="Vorwoord"/>
+<l:gentext key="preface" text="Vorwoord"/>
+<l:gentext key="Procedure" text="Prozedur"/>
+<l:gentext key="procedure" text="Prozedur"/>
+<l:gentext key="ProductionSet" text="Produktschoon"/>
+<l:gentext key="PubDate" text="Veröpenlichendag"/>
+<l:gentext key="pubdate" text="Veröpenlichendag"/>
+<l:gentext key="Published" text="Veröpenlicht"/>
+<l:gentext key="published" text="Veröpenlicht"/>
+<l:gentext key="Publisher" text="Veröpenlicher"/>
+<l:gentext key="Qandadiv" text="F &amp; A"/>
+<l:gentext key="qandadiv" text="F &amp; A"/>
+<l:gentext key="QandASet" text="Oft stellte Fragen"/>
+<l:gentext key="Question" text="F:"/>
+<l:gentext key="question" text="F:"/>
+<l:gentext key="RefEntry" text="Siet"/>
+<l:gentext key="refentry" text="Siet"/>
+<l:gentext key="Reference" text="Verwies"/>
+<l:gentext key="reference" text="Verwies"/>
+<l:gentext key="References" text="Verwiese"/>
+<l:gentext key="RefName" text="Naam"/>
+<l:gentext key="refname" text="Naam"/>
+<l:gentext key="RefSection" text="Rebeet"/>
+<l:gentext key="refsection" text="Rebeet"/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Verschoonshistorie"/>
+<l:gentext key="revhistory" text="Verschoonshistorie"/>
+<l:gentext key="revision" text="Verschoon"/>
+<l:gentext key="Revision" text="Verschoon"/>
+<l:gentext key="sect1" text="Rebeet"/>
+<l:gentext key="sect2" text="Rebeet"/>
+<l:gentext key="sect3" text="Rebeet"/>
+<l:gentext key="sect4" text="Rebeet"/>
+<l:gentext key="sect5" text="Rebeet"/>
+<l:gentext key="section" text="Rebeet"/>
+<l:gentext key="Section" text="Rebeet"/>
+<l:gentext key="see" text="kiek"/>
+<l:gentext key="See" text="Kiek"/>
+<l:gentext key="seealso" text="kiek ook"/>
+<l:gentext key="Seealso" text="Kiek ook"/>
+<l:gentext key="SeeAlso" text="Kiek ook"/>
+<l:gentext key="set" text="Satt"/>
+<l:gentext key="Set" text="Satt"/>
+<l:gentext key="setindex" text="Stickwoordverteeknis"/>
+<l:gentext key="SetIndex" text="Stickwoordverteeknis"/>
+<l:gentext key="Sidebar" text="Randnotiz"/>
+<l:gentext key="sidebar" text="Randnotiz"/>
+<l:gentext key="step" text="Schritt"/>
+<l:gentext key="Step" text="Schritt"/>
+<l:gentext key="table" text="Tabell"/>
+<l:gentext key="Table" text="Tabell"/>
+<l:gentext key="task" text="Opgav"/>
+<l:gentext key="Task" text="Opgav"/>
+<l:gentext key="tip" text="Henwies"/>
+<l:gentext key="TIP" text="Henwies"/>
+<l:gentext key="Tip" text="Henwies"/>
+<l:gentext key="Warning" text="Warnung"/>
+<l:gentext key="warning" text="Warnung"/>
+<l:gentext key="WARNING" text="WARNUNG"/>
+<l:gentext key="and" text="un"/>
+<l:gentext key="by" text="vun"/>
+<l:gentext key="Edited" text="Bewarkt"/>
+<l:gentext key="edited" text="bewarkt"/>
+<l:gentext key="Editedby" text="Bewarkt vun"/>
+<l:gentext key="editedby" text="bewarkt vun"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notizen"/>
+<l:gentext key="Notes" text="Notizen"/>
+<l:gentext key="Pgs" text="Sieten"/>
+<l:gentext key="pgs" text="Sieten"/>
+<l:gentext key="Revisedby" text="Ännert vun: "/>
+<l:gentext key="revisedby" text="ännert vun: "/>
+<l:gentext key="TableNotes" text="Notizen"/>
+<l:gentext key="tablenotes" text="Notizen"/>
+<l:gentext key="TableofContents" text="Inholltabell"/>
+<l:gentext key="tableofcontents" text="Inholltabell"/>
+<l:gentext key="unexpectedelementname" text="Unerwarteter Elementnaam"/>
+<l:gentext key="unsupported" text="nich unnerstütt"/>
+<l:gentext key="xrefto" text="xref op"/>
+<l:gentext key="Authors" text="Schrievers"/>
+<l:gentext key="copyeditor" text="Korrekteur"/>
+<l:gentext key="graphicdesigner" text="Grafikdesigner"/>
+<l:gentext key="productioneditor" text="Produktschoonsbewarker"/>
+<l:gentext key="technicaleditor" text="Technischer Bewarker"/>
+<l:gentext key="translator" text="Översetter"/>
+<l:gentext key="listofequations" text="Gliekenlist"/>
+<l:gentext key="ListofEquations" text="Gliekenlist"/>
+<l:gentext key="ListofExamples" text="Bispeellist"/>
+<l:gentext key="listofexamples" text="Bispeellist"/>
+<l:gentext key="ListofFigures" text="Avbillenlist"/>
+<l:gentext key="listoffigures" text="Avbillenlist"/>
+<l:gentext key="ListofProcedures" text="Prozedurlist"/>
+<l:gentext key="listofprocedures" text="Prozedurlist"/>
+<l:gentext key="listoftables" text="Tabelllist"/>
+<l:gentext key="ListofTables" text="Tabelllist"/>
+<l:gentext key="ListofUnknown" text="Unbekanntenlist"/>
+<l:gentext key="listofunknown" text="Unbekanntenlist"/>
+<l:gentext key="nav-home" text="Heem"/>
+<l:gentext key="nav-next" text="Nähster"/>
+<l:gentext key="nav-next-sibling" text="Foorts nah vorn"/>
+<l:gentext key="nav-prev" text="Voriger"/>
+<l:gentext key="nav-prev-sibling" text="Foorts torügg"/>
+<l:gentext key="nav-up" text="Op"/>
+<l:gentext key="nav-toc" text="ToC"/>
+<l:gentext key="Draft" text="Entwurf"/>
+<l:gentext key="above" text="över"/>
+<l:gentext key="below" text="unner"/>
+<l:gentext key="sectioncalled" text="avröpter Rebeet"/>
+<l:gentext key="index symbols" text="Symbole"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzäöüß"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Anhang %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Glieken %n. %t"/>
+<l:template name="example" text="Bispeel %n. %t"/>
+<l:template name="figure" text="Avbillen %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prozedur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produktschoon %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabell %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Anhang %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="F: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="avröpter Rebeet “%tâ€"/>
+<l:template name="refsection" text="avröpter Rebeet “%tâ€"/>
+<l:template name="refsect1" text="avröpter Rebeet “%tâ€"/>
+<l:template name="refsect2" text="avröpter Rebeet “%tâ€"/>
+<l:template name="refsect3" text="avröpter Rebeet “%tâ€"/>
+<l:template name="sect1" text="avröpter Rebeet “%tâ€"/>
+<l:template name="sect2" text="avröpter Rebeet “%tâ€"/>
+<l:template name="sect3" text="avröpter Rebeet “%tâ€"/>
+<l:template name="sect4" text="avröpter Rebeet “%tâ€"/>
+<l:template name="sect5" text="avröpter Rebeet “%tâ€"/>
+<l:template name="section" text="avröpter Rebeet “%tâ€"/>
+<l:template name="simplesect" text="avröpter Rebeet “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Anhang %n"/>
+<l:template name="bridgehead" text="Rebeet %n"/>
+<l:template name="chapter" text="Kapitel %n"/>
+<l:template name="equation" text="Glieken %n"/>
+<l:template name="example" text="Bispeel %n"/>
+<l:template name="figure" text="Avbillen %n"/>
+<l:template name="part" text="Deel %n"/>
+<l:template name="procedure" text="Prozedur %n"/>
+<l:template name="productionset" text="Produktschoon %n"/>
+<l:template name="qandadiv" text="F &amp; A %n"/>
+<l:template name="qandaentry" text="F: %n"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="sect1" text="Rebeet %n"/>
+<l:template name="sect2" text="Rebeet %n"/>
+<l:template name="sect3" text="Rebeet %n"/>
+<l:template name="sect4" text="Rebeet %n"/>
+<l:template name="sect5" text="Rebeet %n"/>
+<l:template name="section" text="Rebeet %n"/>
+<l:template name="table" text="Tabell %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Anhang %n, %t"/>
+<l:template name="bridgehead" text="Rebeet %n, “%tâ€"/>
+<l:template name="chapter" text="Kapitel %n, %t"/>
+<l:template name="equation" text="Glieken %n, “%tâ€"/>
+<l:template name="example" text="Bispeel %n, “%tâ€"/>
+<l:template name="figure" text="Avbillen %n, “%tâ€"/>
+<l:template name="part" text="Deel %n, “%tâ€"/>
+<l:template name="procedure" text="Prozedur %n, “%tâ€"/>
+<l:template name="productionset" text="Produktschoon %n, “%tâ€"/>
+<l:template name="qandadiv" text="F &amp; A %n, “%tâ€"/>
+<l:template name="refsect1" text="avröpter Rebeet “%tâ€"/>
+<l:template name="refsect2" text="avröpter Rebeet “%tâ€"/>
+<l:template name="refsect3" text="avröpter Rebeet “%tâ€"/>
+<l:template name="refsection" text="avröpter Rebeet “%tâ€"/>
+<l:template name="sect1" text="Rebeet %n, “%tâ€"/>
+<l:template name="sect2" text="Rebeet %n, “%tâ€"/>
+<l:template name="sect3" text="Rebeet %n, “%tâ€"/>
+<l:template name="sect4" text="Rebeet %n, “%tâ€"/>
+<l:template name="sect5" text="Rebeet %n, “%tâ€"/>
+<l:template name="section" text="Rebeet %n, “%tâ€"/>
+<l:template name="simplesect" text="avröpter Rebeet “%tâ€"/>
+<l:template name="table" text="Tabell %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" un "/>
+<l:template name="seplast" text=", un "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Kiek %t."/>
+<l:template name="seealso" text="Kiek ook %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Täälgrupp: "/>
+<l:template name="MsgLevel" text="Ebene: "/>
+<l:template name="MsgOrig" text="Ursprung: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definitschoon: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januar"/>
+<l:template name="February" text="Februar"/>
+<l:template name="March" text="März"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Mai"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="Dezember"/>
+<l:template name="Monday" text="Mondag"/>
+<l:template name="Tuesday" text="Deensdag"/>
+<l:template name="Wednesday" text="Middeweeken"/>
+<l:template name="Thursday" text="Dünnersdag"/>
+<l:template name="Friday" text="Friedag"/>
+<l:template name="Saturday" text="Sünnavend"/>
+<l:template name="Sunday" text="Sünndag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mär"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dez"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Dee"/>
+<l:template name="Wed" text="Mid"/>
+<l:template name="Thu" text="Dün"/>
+<l:template name="Fri" text="Fri"/>
+<l:template name="Sat" text="Svd"/>
+<l:template name="Sun" text="Sün"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)" lang="en"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbole</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">Ä</l:l>
+<l:l i="1">ä</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="15">Ö</l:l>
+<l:l i="15">ö</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="21">Ü</l:l>
+<l:l i="21">ü</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml
new file mode 100644
index 0000000..33fb1f4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nl" english-language-name="Dutch">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/nl.xml -->
+<!-- * -->
+<!-- * E-mail the edited nl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Samenvatting"/>
+<l:gentext key="abstract" text="samenvatting"/>
+<l:gentext key="Acknowledgements" text="Erkenning"/>
+<l:gentext key="acknowledgements" text="erkenning"/>
+<l:gentext key="Answer" text="Antwoord:"/>
+<l:gentext key="answer" text="antwoord:"/>
+<l:gentext key="Appendix" text="Bijlage"/>
+<l:gentext key="appendix" text="bijlage"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="artikel"/>
+<l:gentext key="Author" text="Auteur"/>
+<l:gentext key="Bibliography" text="Literatuurlijst"/>
+<l:gentext key="bibliography" text="literatuurlijst"/>
+<l:gentext key="Book" text="Boek"/>
+<l:gentext key="book" text="boek"/>
+<l:gentext key="CAUTION" text="LET OP"/>
+<l:gentext key="Caution" text="Let op"/>
+<l:gentext key="caution" text="let op"/>
+<l:gentext key="Chapter" text="Hoofdstuk"/>
+<l:gentext key="chapter" text="hoofdstuk"/>
+<l:gentext key="Colophon" text="Colofon"/>
+<l:gentext key="colophon" text="colofon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Opdracht"/>
+<l:gentext key="dedication" text="opdracht"/>
+<l:gentext key="Edition" text="Uitgave"/>
+<l:gentext key="edition" text="uitgave"/>
+<l:gentext key="Editor" text="Redacteur"/>
+<l:gentext key="Equation" text="Vergelijking"/>
+<l:gentext key="equation" text="vergelijking"/>
+<l:gentext key="Example" text="Voorbeeld"/>
+<l:gentext key="example" text="voorbeeld"/>
+<l:gentext key="Figure" text="Afbeelding"/>
+<l:gentext key="figure" text="afbeelding"/>
+<l:gentext key="Glossary" text="Woordenlijst"/>
+<l:gentext key="glossary" text="woordenlijst"/>
+<l:gentext key="GlossSee" text="Zie"/>
+<l:gentext key="glosssee" text="zie"/>
+<l:gentext key="GlossSeeAlso" text="Zie ook"/>
+<l:gentext key="glossseealso" text="zie ook"/>
+<l:gentext key="IMPORTANT" text="BELANGRIJK"/>
+<l:gentext key="important" text="Belangrijk"/>
+<l:gentext key="Important" text="Belangrijk"/>
+<l:gentext key="Index" text="Register"/>
+<l:gentext key="index" text="Register"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Juridische kennisgeving"/>
+<l:gentext key="legalnotice" text="juridische kennisgeving"/>
+<l:gentext key="MsgAud" text="Doelgroep"/>
+<l:gentext key="msgaud" text="doelgroep"/>
+<l:gentext key="MsgLevel" text="Niveau"/>
+<l:gentext key="msglevel" text="niveau"/>
+<l:gentext key="MsgOrig" text="Herkomst"/>
+<l:gentext key="msgorig" text="herkomst"/>
+<l:gentext key="NOTE" text="OPMERKING"/>
+<l:gentext key="Note" text="Opmerking"/>
+<l:gentext key="note" text="opmerking"/>
+<l:gentext key="Part" text="Deel"/>
+<l:gentext key="part" text="deel"/>
+<l:gentext key="Preface" text="Voorwoord"/>
+<l:gentext key="preface" text="voorwoord"/>
+<l:gentext key="Procedure" text="Procedure"/>
+<l:gentext key="procedure" text="procedure"/>
+<l:gentext key="ProductionSet" text="Productie"/>
+<l:gentext key="PubDate" text="Publicatie datum"/>
+<l:gentext key="pubdate" text="publicatie datum"/>
+<l:gentext key="Published" text="Uitgegeven"/>
+<l:gentext key="published" text="uitgegeven"/>
+<l:gentext key="Publisher" text="Uitgever"/>
+<l:gentext key="Qandadiv" text="Vraag en antwoord"/>
+<l:gentext key="qandadiv" text="vraag en antwoord"/>
+<l:gentext key="QandASet" text="Vaak gestelde vragen"/>
+<l:gentext key="Question" text="Vraag:"/>
+<l:gentext key="question" text="vraag:"/>
+<l:gentext key="RefEntry" text="Pagina"/>
+<l:gentext key="refentry" text="pagina"/>
+<l:gentext key="Reference" text="Referentie"/>
+<l:gentext key="reference" text="referentie"/>
+<l:gentext key="References" text="Referenties"/>
+<l:gentext key="RefName" text="Name"/>
+<l:gentext key="refname" text="name"/>
+<l:gentext key="RefSection" text="Paragraaf"/>
+<l:gentext key="refsection" text="paragraaf"/>
+<l:gentext key="RefSynopsisDiv" text="Samenvatting"/>
+<l:gentext key="refsynopsisdiv" text="samenvatting"/>
+<l:gentext key="RevHistory" text="Wijzigingsgeschiedenis"/>
+<l:gentext key="revhistory" text="wijzigingsgeschiedenis"/>
+<l:gentext key="revision" text="herziening"/>
+<l:gentext key="Revision" text="Herziening"/>
+<l:gentext key="sect1" text="Paragraaf"/>
+<l:gentext key="sect2" text="Paragraaf"/>
+<l:gentext key="sect3" text="Paragraaf"/>
+<l:gentext key="sect4" text="Paragraaf"/>
+<l:gentext key="sect5" text="Paragraaf"/>
+<l:gentext key="section" text="paragraaf"/>
+<l:gentext key="Section" text="Paragraaf"/>
+<l:gentext key="see" text="zie"/>
+<l:gentext key="See" text="Zie"/>
+<l:gentext key="seealso" text="zie ook"/>
+<l:gentext key="Seealso" text="Zie ook"/>
+<l:gentext key="SeeAlso" text="Zie ook"/>
+<l:gentext key="set" text="verzameling"/>
+<l:gentext key="Set" text="Verzameling"/>
+<l:gentext key="setindex" text="hoofdregister"/>
+<l:gentext key="SetIndex" text="Hoofdregister"/>
+<l:gentext key="Sidebar" text="Zijbalk"/>
+<l:gentext key="sidebar" text="zijbalk"/>
+<l:gentext key="step" text="stap"/>
+<l:gentext key="Step" text="Stap"/>
+<l:gentext key="table" text="tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="taap"/>
+<l:gentext key="Task" text="Taap"/>
+<l:gentext key="tip" text="tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Waarschuwing"/>
+<l:gentext key="warning" text="waarschuwing"/>
+<l:gentext key="WARNING" text="WAARSCHUWING"/>
+<l:gentext key="and" text="en"/>
+<l:gentext key="by" text="door"/>
+<l:gentext key="Edited" text="Redactie"/>
+<l:gentext key="edited" text="redactie"/>
+<l:gentext key="Editedby" text="Onder redactie van"/>
+<l:gentext key="editedby" text="onder redactie van"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="opmerkingen"/>
+<l:gentext key="Notes" text="Opmerkingen"/>
+<l:gentext key="Pgs" text="Blz."/>
+<l:gentext key="pgs" text="blz."/>
+<l:gentext key="Revisedby" text="Herzien door: "/>
+<l:gentext key="revisedby" text="Herzien door: "/>
+<l:gentext key="TableNotes" text="Opmerkingen"/>
+<l:gentext key="tablenotes" text="opmerkingen"/>
+<l:gentext key="TableofContents" text="Inhoudsopgave"/>
+<l:gentext key="tableofcontents" text="inhoudsopgave"/>
+<l:gentext key="unexpectedelementname" text="Onverwachte element naam"/>
+<l:gentext key="unsupported" text="niet ondersteund"/>
+<l:gentext key="xrefto" text="xref naar"/>
+<l:gentext key="Authors" text="Auteurs"/>
+<l:gentext key="copyeditor" text="Copy redacteur"/>
+<l:gentext key="graphicdesigner" text="Grafisch ontwerper"/>
+<l:gentext key="productioneditor" text="Productie redacteur"/>
+<l:gentext key="technicaleditor" text="Technische redacteur"/>
+<l:gentext key="translator" text="Vertaler"/>
+<l:gentext key="listofequations" text="lijst van vergelijkingen"/>
+<l:gentext key="ListofEquations" text="Lijst van vergelijkingen"/>
+<l:gentext key="ListofExamples" text="Lijst van voorbeelden"/>
+<l:gentext key="listofexamples" text="lijst van voorbeelden"/>
+<l:gentext key="ListofFigures" text="Lijst van afbeeldingen"/>
+<l:gentext key="listoffigures" text="lijst van afbeeldingen"/>
+<l:gentext key="ListofProcedures" text="Lijst van procedures"/>
+<l:gentext key="listofprocedures" text="lijst van procedures"/>
+<l:gentext key="listoftables" text="lijst van tabellen"/>
+<l:gentext key="ListofTables" text="Lijst van tabellen"/>
+<l:gentext key="ListofUnknown" text="Lijst van onbekenden"/>
+<l:gentext key="listofunknown" text="lijst van onbekenden"/>
+<l:gentext key="nav-home" text="Begin"/>
+<l:gentext key="nav-next" text="Volgende"/>
+<l:gentext key="nav-next-sibling" text="Snel vooruit"/>
+<l:gentext key="nav-prev" text="Terug"/>
+<l:gentext key="nav-prev-sibling" text="Snel terug"/>
+<l:gentext key="nav-up" text="Omhoog"/>
+<l:gentext key="nav-toc" text="Inhoudsopgave"/>
+<l:gentext key="Draft" text="Ontwerp"/>
+<l:gentext key="above" text="boven"/>
+<l:gentext key="below" text="onder"/>
+<l:gentext key="sectioncalled" text="de paragraaf met de naam"/>
+<l:gentext key="index symbols" text="Symbolen"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzëïé"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZËÃÉ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Bijlage %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Vergelijking %n. %t"/>
+<l:template name="example" text="Voorbeeld %n. %t"/>
+<l:template name="figure" text="Afbeelding %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Productie %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Bijlage %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Antwoord: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="refsection" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="refsect1" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="refsect2" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="refsect3" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="sect1" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="sect2" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="sect3" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="sect4" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="sect5" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="section" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="simplesect" text="de paragraaf met de naam “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Antwoord: %n"/>
+<l:template name="appendix" text="Bijlage %n"/>
+<l:template name="bridgehead" text="Paragraaf %n"/>
+<l:template name="chapter" text="Hoofdstuk %n"/>
+<l:template name="equation" text="Vergelijking %n"/>
+<l:template name="example" text="Voorbeeld %n"/>
+<l:template name="figure" text="Afbeelding %n"/>
+<l:template name="part" text="Deel %n"/>
+<l:template name="procedure" text="Procedure %n"/>
+<l:template name="productionset" text="Productie %n"/>
+<l:template name="qandadiv" text="Vraag en antwoord %n"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="sect1" text="Paragraaf %n"/>
+<l:template name="sect2" text="Paragraaf %n"/>
+<l:template name="sect3" text="Paragraaf %n"/>
+<l:template name="sect4" text="Paragraaf %n"/>
+<l:template name="sect5" text="Paragraaf %n"/>
+<l:template name="section" text="Paragraaf %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Bijlage %n, %t"/>
+<l:template name="bridgehead" text="Paragraaf %n, “%tâ€"/>
+<l:template name="chapter" text="Hoofdstuk %n, %t"/>
+<l:template name="equation" text="Vergelijking %n, “%tâ€"/>
+<l:template name="example" text="Voorbeeld %n, “%tâ€"/>
+<l:template name="figure" text="Afbeelding %n, “%tâ€"/>
+<l:template name="part" text="Deel %n, “%tâ€"/>
+<l:template name="procedure" text="Procedure %n, “%tâ€"/>
+<l:template name="productionset" text="Productie %n, “%tâ€"/>
+<l:template name="qandadiv" text="Vraag en antwoord %n, “%tâ€"/>
+<l:template name="refsect1" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="refsect2" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="refsect3" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="refsection" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="sect1" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect2" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect3" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect4" text="Paragraaf %n, “%tâ€"/>
+<l:template name="sect5" text="Paragraaf %n, “%tâ€"/>
+<l:template name="section" text="Paragraaf %n, “%tâ€"/>
+<l:template name="simplesect" text="de paragraaf met de naam “%tâ€"/>
+<l:template name="table" text="Tabel %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" en "/>
+<l:template name="seplast" text=", en "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Zie %t."/>
+<l:template name="seealso" text="Zie ook %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Doelgroep: "/>
+<l:template name="MsgLevel" text="Niveau: "/>
+<l:template name="MsgOrig" text="Herkomst: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definitie: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="januari"/>
+<l:template name="February" text="februari"/>
+<l:template name="March" text="maart"/>
+<l:template name="April" text="april"/>
+<l:template name="May" text="mei"/>
+<l:template name="June" text="juni"/>
+<l:template name="July" text="juli"/>
+<l:template name="August" text="augustus"/>
+<l:template name="September" text="september"/>
+<l:template name="October" text="october"/>
+<l:template name="November" text="november"/>
+<l:template name="December" text="december"/>
+<l:template name="Monday" text="maandag"/>
+<l:template name="Tuesday" text="dinsdag"/>
+<l:template name="Wednesday" text="woensdag"/>
+<l:template name="Thursday" text="donderdag"/>
+<l:template name="Friday" text="vrijdag"/>
+<l:template name="Saturday" text="zaterdag"/>
+<l:template name="Sunday" text="zondag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="maa"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="mei"/>
+<l:template name="Jun" text="jun"/>
+<l:template name="Jul" text="jul"/>
+<l:template name="Aug" text="aug"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="oct"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="maa"/>
+<l:template name="Tue" text="din"/>
+<l:template name="Wed" text="woe"/>
+<l:template name="Thu" text="don"/>
+<l:template name="Fri" text="vrij"/>
+<l:template name="Sat" text="zat"/>
+<l:template name="Sun" text="zon"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0413 Dutch"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbolen</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml
new file mode 100644
index 0000000..4898d42
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nn" english-language-name="Nynorsk">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/nn.xml -->
+<!-- * -->
+<!-- * E-mail the edited nn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Samandrag"/>
+<l:gentext key="abstract" text="Samandrag"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Svar"/>
+<l:gentext key="answer" text="svar"/>
+<l:gentext key="Appendix" text="Tillegg"/>
+<l:gentext key="appendix" text="tillegg"/>
+<l:gentext key="Article" text="Artikkel"/>
+<l:gentext key="article" text="artikkel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografi"/>
+<l:gentext key="bibliography" text="bibliografi"/>
+<l:gentext key="Book" text="Bok"/>
+<l:gentext key="book" text="bok"/>
+<l:gentext key="CAUTION" text="OBS"/>
+<l:gentext key="Caution" text="Obs"/>
+<l:gentext key="caution" text="OBS"/>
+<l:gentext key="Chapter" text="Kapittel"/>
+<l:gentext key="chapter" text="kapittel"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Opphavsrett"/>
+<l:gentext key="copyright" text="opphavsrett"/>
+<l:gentext key="Dedication" text="Dedikasjon"/>
+<l:gentext key="dedication" text="dedikasjon"/>
+<l:gentext key="Edition" text="Utgåve"/>
+<l:gentext key="edition" text="utgåve"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Formel"/>
+<l:gentext key="equation" text="formel"/>
+<l:gentext key="Example" text="Døme"/>
+<l:gentext key="example" text="døme"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="figur"/>
+<l:gentext key="Glossary" text="Ordliste"/>
+<l:gentext key="glossary" text="ordliste"/>
+<l:gentext key="GlossSee" text="Sjå"/>
+<l:gentext key="glosssee" text="sjå"/>
+<l:gentext key="GlossSeeAlso" text="Sjå òg"/>
+<l:gentext key="glossseealso" text="sjå òg"/>
+<l:gentext key="IMPORTANT" text="VIKTIG"/>
+<l:gentext key="important" text="viktig"/>
+<l:gentext key="Important" text="Viktig"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text=""/>
+<l:gentext key="legalnotice" text=""/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="publikum"/>
+<l:gentext key="MsgLevel" text="Nivå"/>
+<l:gentext key="msglevel" text="nivå"/>
+<l:gentext key="MsgOrig" text="Opphav"/>
+<l:gentext key="msgorig" text="Opphav"/>
+<l:gentext key="NOTE" text="NOTAT"/>
+<l:gentext key="Note" text="Notat"/>
+<l:gentext key="note" text="NOTAT"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="del"/>
+<l:gentext key="Preface" text="Forord"/>
+<l:gentext key="preface" text="forord"/>
+<l:gentext key="Procedure" text="Prosedyre"/>
+<l:gentext key="procedure" text="prosedyre"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Utgitt"/>
+<l:gentext key="published" text="utgitt"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Spørsmål og Svar"/>
+<l:gentext key="qandadiv" text="Spørsmål og Svar"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Spørsmål"/>
+<l:gentext key="question" text="spørsmål"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referanse"/>
+<l:gentext key="reference" text="referanse"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Namn"/>
+<l:gentext key="refname" text="namn"/>
+<l:gentext key="RefSection" text="Del"/>
+<l:gentext key="refsection" text="del"/>
+<l:gentext key="RefSynopsisDiv" text="Oversyn"/>
+<l:gentext key="refsynopsisdiv" text="oversyn"/>
+<l:gentext key="RevHistory" text="Revisjonshistorie"/>
+<l:gentext key="revhistory" text="revisjonshistorie"/>
+<l:gentext key="revision" text="revisjon"/>
+<l:gentext key="Revision" text="Revisjon"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="del"/>
+<l:gentext key="Section" text="Del"/>
+<l:gentext key="see" text="sjå"/>
+<l:gentext key="See" text="Sjå"/>
+<l:gentext key="seealso" text="sjå òg"/>
+<l:gentext key="Seealso" text="Sjå òg"/>
+<l:gentext key="SeeAlso" text="Sjå òg"/>
+<l:gentext key="set" text="set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Indeks"/>
+<l:gentext key="SetIndex" text="Indeks"/>
+<l:gentext key="Sidebar" text="Sidestolpe"/>
+<l:gentext key="sidebar" text="sidestolpe"/>
+<l:gentext key="step" text="steg"/>
+<l:gentext key="Step" text="Steg"/>
+<l:gentext key="table" text="tabell"/>
+<l:gentext key="Table" text="Tabell"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="tips"/>
+<l:gentext key="TIP" text="TIPS"/>
+<l:gentext key="Tip" text="Tips"/>
+<l:gentext key="Warning" text="Ã…tvaring"/>
+<l:gentext key="warning" text="Ã¥tvaring"/>
+<l:gentext key="WARNING" text="Ã…TVARING"/>
+<l:gentext key="and" text="og"/>
+<l:gentext key="by" text="av"/>
+<l:gentext key="Edited" text="Redigert"/>
+<l:gentext key="edited" text="redigert"/>
+<l:gentext key="Editedby" text="Redigert av"/>
+<l:gentext key="editedby" text="redigert av"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="merknader"/>
+<l:gentext key="Notes" text="Merknader"/>
+<l:gentext key="Pgs" text="Sider"/>
+<l:gentext key="pgs" text="sider"/>
+<l:gentext key="Revisedby" text="Revidert av: "/>
+<l:gentext key="revisedby" text="revidert av: "/>
+<l:gentext key="TableNotes" text="Merknader"/>
+<l:gentext key="tablenotes" text="merknader"/>
+<l:gentext key="TableofContents" text="Innhald"/>
+<l:gentext key="tableofcontents" text="Innhald"/>
+<l:gentext key="unexpectedelementname" text="UVENTA-ELEMENTNAVN"/>
+<l:gentext key="unsupported" text="ikkje støtta"/>
+<l:gentext key="xrefto" text="xref til"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="formeloversikt"/>
+<l:gentext key="ListofEquations" text="Formeloversikt"/>
+<l:gentext key="ListofExamples" text="Dømeoversikt"/>
+<l:gentext key="listofexamples" text="dømeoversikt"/>
+<l:gentext key="ListofFigures" text="Figuroversikt"/>
+<l:gentext key="listoffigures" text="figuroversikt"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="tabelloversikt"/>
+<l:gentext key="ListofTables" text="Tabelloversikt"/>
+<l:gentext key="ListofUnknown" text="???-oversikt"/>
+<l:gentext key="listofunknown" text="???-oversikt"/>
+<l:gentext key="nav-home" text="Heim"/>
+<l:gentext key="nav-next" text="Fram"/>
+<l:gentext key="nav-next-sibling" text="Raskt framover"/>
+<l:gentext key="nav-prev" text="Att"/>
+<l:gentext key="nav-prev-sibling" text="Raskt bakover"/>
+<l:gentext key="nav-up" text="Opp"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Formel %n. %t"/>
+<l:template name="example" text="Døme %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedyre %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabell %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Spørsmål %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spørsmål %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="Tillegg %n"/>
+<l:template name="bridgehead" text="Del %n"/>
+<l:template name="chapter" text="Kapittel %n"/>
+<l:template name="equation" text="Formel %n"/>
+<l:template name="example" text="Døme %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Prosedyre %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Spørsmål og Svar %n"/>
+<l:template name="qandaentry" text="Spørsmål %n"/>
+<l:template name="question" text="Spørsmål %n"/>
+<l:template name="sect1" text="Del %n"/>
+<l:template name="sect2" text="Del %n"/>
+<l:template name="sect3" text="Del %n"/>
+<l:template name="sect4" text="Del %n"/>
+<l:template name="sect5" text="Del %n"/>
+<l:template name="section" text="Del %n"/>
+<l:template name="table" text="Tabell %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Tillegg %n, %t"/>
+<l:template name="bridgehead" text="Del %n, “%tâ€"/>
+<l:template name="chapter" text="Kapittel %n, %t"/>
+<l:template name="equation" text="Formel %n, “%tâ€"/>
+<l:template name="example" text="Døme %n, “%tâ€"/>
+<l:template name="figure" text="Figur %n, “%tâ€"/>
+<l:template name="part" text="Del %n, “%tâ€"/>
+<l:template name="procedure" text="Prosedyre %n, “%tâ€"/>
+<l:template name="productionset" text="Production %n, “%tâ€"/>
+<l:template name="qandadiv" text="SpørsmÃ¥l og Svar %n, “%tâ€"/>
+<l:template name="refsect1" text="the section called “%tâ€"/>
+<l:template name="refsect2" text="the section called “%tâ€"/>
+<l:template name="refsect3" text="the section called “%tâ€"/>
+<l:template name="refsection" text="the section called “%tâ€"/>
+<l:template name="sect1" text="Del %n, “%tâ€"/>
+<l:template name="sect2" text="Del %n, “%tâ€"/>
+<l:template name="sect3" text="Del %n, “%tâ€"/>
+<l:template name="sect4" text="Del %n, “%tâ€"/>
+<l:template name="sect5" text="Del %n, “%tâ€"/>
+<l:template name="section" text="Del %n, “%tâ€"/>
+<l:template name="simplesect" text="the section called “%tâ€"/>
+<l:template name="table" text="Tabell %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" og "/>
+<l:template name="seplast" text=", og "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Sjå %t."/>
+<l:template name="seealso" text="Sjå òg %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Nivå: "/>
+<l:template name="MsgOrig" text="Opphav: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0814 Norwegian (Nynorsk)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl
new file mode 100644
index 0000000..a790eb7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl
@@ -0,0 +1,1225 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: olink.xsl 8592 2010-03-16 16:40:43Z bobstayton $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- Create keys for quickly looking up olink targets -->
+<xsl:key name="targetdoc-key" match="document" use="@targetdoc" />
+<xsl:key name="targetptr-key" match="div|obj"
+ use="concat(ancestor::document/@targetdoc, '/',
+ @targetptr, '/', ancestor::document/@lang)" />
+
+<!-- Return filename of database -->
+<xsl:template name="select.target.database">
+ <xsl:param name="targetdoc.att" select="''"/>
+ <xsl:param name="targetptr.att" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+
+ <!-- use root's xml:base if exists -->
+ <xsl:variable name="xml.base" select="/*/@xml:base"/>
+
+ <!-- This selection can be customized if needed -->
+ <xsl:variable name="target.database.filename">
+ <xsl:choose>
+ <xsl:when test="$xml.base != '' and
+ not(starts-with($target.database.document, 'file:/')) and
+ not(starts-with($target.database.document, '/'))">
+ <xsl:call-template name="systemIdToBaseURI">
+ <xsl:with-param name="systemId" select="$xml.base"/>
+ </xsl:call-template>
+ <xsl:value-of select="$target.database.document"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database.document"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="target.database"
+ select="document($target.database.filename,/)"/>
+
+ <xsl:choose>
+ <!-- Was the database document parameter not set? -->
+ <xsl:when test="$target.database.document = ''">
+ <xsl:message>
+ <xsl:text>Olinks not processed: must specify a </xsl:text>
+ <xsl:text>$target.database.document parameter&#10;</xsl:text>
+ <xsl:text>when using olinks with targetdoc </xsl:text>
+ <xsl:text>and targetptr attributes.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <!-- Did it not open? Should be a targetset element -->
+ <xsl:when test="not($target.database/*)">
+ <xsl:message>
+ <xsl:text>Olink error: could not open target database '</xsl:text>
+ <xsl:value-of select="$target.database.filename"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database.filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="select.olink.key">
+ <xsl:param name="targetdoc.att" select="''"/>
+ <xsl:param name="targetptr.att" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$target.database/*">
+ <xsl:variable name="olink.fallback.sequence">
+ <xsl:call-template name="select.olink.lang.fallback">
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Recurse through the languages until you find a match -->
+ <xsl:call-template name="select.olink.key.in.lang">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="fallback.index" select="1"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$olink.fallback.sequence"/>
+ </xsl:call-template>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- Locate olink key in a particular language -->
+<xsl:template name="select.olink.key.in.lang">
+ <xsl:param name="targetdoc.att" select="''"/>
+ <xsl:param name="targetptr.att" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+ <xsl:param name="target.database"/>
+ <xsl:param name="fallback.index" select="1"/>
+ <xsl:param name="olink.fallback.sequence" select="''"/>
+
+ <xsl:variable name="target.lang">
+ <xsl:call-template name="select.target.lang">
+ <xsl:with-param name="fallback.index" select="$fallback.index"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$olink.fallback.sequence"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message><xsl:text>Olink debug: cases for targetdoc='</xsl:text>
+ <xsl:value-of select="$targetdoc.att"/>
+ <xsl:text>' and targetptr='</xsl:text>
+ <xsl:value-of select="$targetptr.att"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$target.lang"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <!-- Customize these cases if you want different selection logic -->
+ <xsl:variable name="CaseA">
+ <!-- targetdoc.att = not blank
+ targetptr.att = not blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ $targetptr.att != ''">
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($targetdoc.att, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)[1]/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseA matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseA NOT matched</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseB">
+ <!-- targetdoc.att = not blank
+ targetptr.att = not blank
+ prefer.internal.olink = not zero
+ current.docid = not blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ $targetptr.att != '' and
+ $current.docid != '' and
+ $prefer.internal.olink != 0">
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($current.docid, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)[1]/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseB matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseB NOT matched</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseC">
+ <!-- targetdoc.att = blank
+ targetptr.att = not blank
+ current.docid = not blank
+ -->
+ <xsl:if test="string-length($targetdoc.att) = 0 and
+ $targetptr.att != '' and
+ $current.docid != ''">
+ <!-- Must use a for-each to change context for keys to work -->
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($current.docid, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)[1]/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseC matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseC NOT matched.</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseD">
+ <!-- targetdoc.att = blank
+ targetptr.att = not blank
+ current.docid = blank
+ -->
+ <!-- This is possible if only one document in the database -->
+ <xsl:if test="string-length($targetdoc.att) = 0 and
+ $targetptr.att != '' and
+ string-length($current.docid) = 0 and
+ count($target.database//document) = 1">
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat(.//document/@targetdoc, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)[1]/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseD matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseD NOT matched</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseE">
+ <!-- targetdoc.att = not blank
+ targetptr.att = blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ string-length($targetptr.att) = 0">
+
+ <!-- Try the document's root element id -->
+ <xsl:variable name="rootid">
+ <xsl:choose>
+ <xsl:when test="$target.lang != ''">
+ <xsl:value-of select="$target.database//document[@targetdoc = $targetdoc.att and @lang = $target.lang]/*[1]/@targetptr"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database//document[@targetdoc = $targetdoc.att and not(@lang)]/*[1]/@targetptr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($targetdoc.att, '/',
+ $rootid, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)[1]/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseE matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseE NOT matched.</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseF">
+ <!-- targetdoc.att = not blank
+ targetptr.att = blank
+ prefer.internal.olink = not zero
+ current.docid = not blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ string-length($targetptr.att) = 0 and
+ $current.docid != '' and
+ $prefer.internal.olink != 0">
+ <!-- Try the document's root element id -->
+ <xsl:variable name="rootid">
+ <xsl:choose>
+ <xsl:when test="$target.lang != ''">
+ <xsl:value-of select="$target.database//document[@targetdoc = $current.docid and @lang = $target.lang]/*[1]/@targetptr"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database//document[@targetdoc = $current.docid and not(@lang)]/*[1]/@targetptr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($current.docid, '/',
+ $rootid, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)[1]/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseF matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseF NOT matched.</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <!-- Now select the best match. Customize the order if needed -->
+ <xsl:variable name="selected.key">
+ <xsl:choose>
+ <xsl:when test="$CaseB != ''">
+ <xsl:value-of select="$CaseB"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseB key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseB"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseA != ''">
+ <xsl:value-of select="$CaseA"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseA key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseA"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseC != ''">
+ <xsl:value-of select="$CaseC"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseC key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseC"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseD != ''">
+ <xsl:value-of select="$CaseD"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseD key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseD"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseF != ''">
+ <xsl:value-of select="$CaseF"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseF key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseF"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseE != ''">
+ <xsl:value-of select="$CaseE"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseE key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseE"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: No case matched for lang '</xsl:text>
+ <xsl:value-of select="$target.lang"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$selected.key != ''">
+ <xsl:value-of select="$selected.key"/>
+ </xsl:when>
+ <xsl:when test="string-length($selected.key) = 0 and
+ string-length($target.lang) = 0">
+ <!-- No match on last try, and we are done -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Recurse through next language -->
+ <xsl:call-template name="select.olink.key.in.lang">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="fallback.index" select="$fallback.index + 1"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$olink.fallback.sequence"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="select.target.lang">
+ <xsl:param name="fallback.index" select="1"/>
+ <xsl:param name="olink.fallback.sequence" select="''"/>
+
+ <!-- recurse backwards to find the lang matching the index -->
+ <xsl:variable name="firstlang"
+ select="substring-before($olink.fallback.sequence, ' ')"/>
+ <xsl:variable name="rest"
+ select="substring-after($olink.fallback.sequence, ' ')"/>
+ <xsl:choose>
+ <xsl:when test="$fallback.index = 1">
+ <xsl:value-of select="$firstlang"/>
+ </xsl:when>
+ <xsl:when test="$fallback.index &gt; 1">
+ <xsl:call-template name="select.target.lang">
+ <xsl:with-param name="fallback.index" select="$fallback.index - 1"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$rest"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="select.olink.lang.fallback">
+ <xsl:param name="olink.lang" select="''"/>
+
+ <!-- Prefer language of the olink element -->
+ <xsl:value-of select="concat(normalize-space(concat($olink.lang, ' ',
+ $olink.lang.fallback.sequence)), ' ')"/>
+</xsl:template>
+
+<!-- Returns the complete olink href value if found -->
+<xsl:template name="make.olink.href">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$olink.key != ''">
+ <xsl:variable name="target.href" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)[1]/@href" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <!-- Does the target database use a sitemap? -->
+ <xsl:variable name="use.sitemap">
+ <xsl:choose>
+ <xsl:when test="$target.database//sitemap">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <!-- Get the baseuri for this targetptr -->
+ <xsl:variable name="baseuri" >
+ <xsl:choose>
+ <!-- Does the database use a sitemap? -->
+ <xsl:when test="$use.sitemap != 0" >
+ <xsl:choose>
+ <!-- Was current.docid parameter set? -->
+ <xsl:when test="$current.docid != ''">
+ <!-- Was it found in the database? -->
+ <xsl:variable name="currentdoc.key" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key',
+ $current.docid)[1]/@targetdoc" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$currentdoc.key != ''">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode"
+ select="key('targetdoc-key', $current.docid)[1]/parent::dir"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:for-each >
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path because $current.docid '</xsl:text>
+ <xsl:value-of select="$current.docid"/>
+ <xsl:text>' not found in target database.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink warning: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path without $current.docid parameter</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- In either case, add baseuri from its document entry-->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- No database sitemap in use -->
+ <xsl:otherwise>
+ <!-- Just use any baseuri from its document entry -->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Form the href information -->
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and
+ translate(substring($baseuri, string-length($baseuri) - 3),
+ 'PDF', 'pdf') = '.pdf'
+ and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- Computes the href of the object containing the olink element -->
+<xsl:template name="olink.from.uri">
+ <xsl:param name="target.database"/>
+ <xsl:param name="object" select="NotAnElement"/>
+ <xsl:param name="object.targetdoc" select="$current.docid"/>
+ <xsl:param name="object.lang"
+ select="concat($object/ancestor::*[last()]/@lang,
+ $object/ancestor::*[last()]/@xml:lang)"/>
+
+ <xsl:variable name="parent.id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Get the olink key for the parent of olink element -->
+ <xsl:variable name="from.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$object.targetdoc"/>
+ <xsl:with-param name="targetptr.att" select="$parent.id"/>
+ <xsl:with-param name="olink.lang" select="$object.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="from.olink.href">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $from.key)[1]/@href" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- we found the olink object -->
+ <xsl:when test="$from.olink.href != ''">
+ <xsl:value-of select="$from.olink.href"/>
+ </xsl:when>
+ <xsl:when test="not($object/parent::*)">
+ <xsl:value-of select="$from.olink.href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- recurse upward in current document -->
+ <xsl:call-template name="olink.from.uri">
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="object" select="$object/parent::*"/>
+ <xsl:with-param name="object.targetdoc" select="$object.targetdoc"/>
+ <xsl:with-param name="object.lang" select="$object.lang"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="olink.hottext">
+ <xsl:param name="target.database"/>
+ <xsl:param name="olink.lang" select="''"/>
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="referrer" select="."/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <!-- If it has elements or text (not just PI or comment) -->
+ <xsl:when test="child::text() or child::*">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$olink.key != ''">
+ <!-- Get the xref text for this record -->
+ <xsl:variable name="xref.text" >
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="insert.targetdb.data">
+ <xsl:with-param name="data"
+ select="key('targetptr-key', $olink.key)[1]/xreftext/node()" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="xref.number" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)[1]/@number" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="target.elem" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)[1]/@element" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="lang">
+ <xsl:variable name="candidate">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)[1]/@lang" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$candidate != ''">
+ <xsl:value-of select="$candidate"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$olink.lang"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$xrefstyle != '' and
+ starts-with(normalize-space($xrefstyle), 'select:') and
+ (contains($xrefstyle, 'nodocname') or
+ contains($xrefstyle, 'nopage')) and
+ not(contains($xrefstyle, 'title')) and
+ not(contains($xrefstyle, 'label'))">
+ <xsl:copy-of select="$xref.text"/>
+ </xsl:when>
+ <xsl:when test="$xrefstyle != ''">
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>xrefstyle is '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:variable name="template">
+ <xsl:choose>
+ <xsl:when test="starts-with(normalize-space($xrefstyle),
+ 'select:')">
+ <xsl:call-template name="make.gentext.template">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="purpose" select="'olink'"/>
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="target.elem" select="$target.elem"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with(normalize-space($xrefstyle),
+ 'template:')">
+ <xsl:value-of select="substring-after(
+ normalize-space($xrefstyle), 'template:')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Look for Gentext template with @style attribute -->
+ <!-- Must compare to no style value because gentext.template
+ falls back to no style -->
+
+ <xsl:variable name="xref-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="styled-xref-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="xref-number-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="styled-xref-number-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="xref-number-and-title-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context"
+ select="'xref-number-and-title'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="styled-xref-number-and-title-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context"
+ select="'xref-number-and-title'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$xref-number-and-title-context !=
+ $styled-xref-number-and-title-context and
+ $xref.number != '' and
+ $xref.with.number.and.title != 0">
+ <xsl:value-of
+ select="$styled-xref-number-and-title-context"/>
+ </xsl:when>
+ <xsl:when test="$xref-number-context !=
+ $styled-xref-number-context and
+ $xref.number != ''">
+ <xsl:value-of select="$styled-xref-number-context"/>
+ </xsl:when>
+ <xsl:when test="$xref-context != $styled-xref-context">
+ <xsl:value-of select="$styled-xref-context"/>
+ </xsl:when>
+ <xsl:when test="$xref-number-and-title-context != '' and
+ $xref.number != '' and
+ $xref.with.number.and.title != 0">
+ <xsl:value-of
+ select="$xref-number-and-title-context"/>
+ <xsl:if test="$olink.debug">
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>' in context 'xref-number-and-title</xsl:text>
+ <xsl:text>'. Using template without @style.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$xref-number-context != '' and
+ $xref.number != ''">
+ <xsl:value-of select="$xref-number-context"/>
+ <xsl:if test="$olink.debug">
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>' in context 'xref-number</xsl:text>
+ <xsl:text>'. Using template without @style.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$xref-context != ''">
+ <xsl:value-of select="$xref-context"/>
+ <xsl:if test="$olink.debug">
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>' in context 'xref</xsl:text>
+ <xsl:text>'. Using template without @style.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>'. Trying '%t'.</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="'%t'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: xrefstyle template is '</xsl:text>
+ <xsl:value-of select="$template"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="insert.targetdb.data">
+ <xsl:with-param name="data"
+ select="key('targetptr-key', $olink.key)/ttl/node()"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="label">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)[1]/@number" />
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="pagenumber">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)[1]/@page" />
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="docname">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="insert.targetdb.data">
+ <xsl:with-param name="data"
+ select="key('targetdoc-key', $targetdoc)[1]/div[1]/ttl/node()" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$use.local.olink.style != 0">
+
+ <!-- Is autonumbering on? -->
+ <xsl:variable name="target.number">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)[1]/@number" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="autonumber">
+ <xsl:choose>
+ <xsl:when test="$target.number != ''">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="number-and-title-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="context">
+ <xsl:choose>
+ <xsl:when test="string($autonumber) != 0
+ and $number-and-title-template != 0
+ and $xref.with.number.and.title != 0">
+ <xsl:value-of select="'xref-number-and-title'"/>
+ </xsl:when>
+ <xsl:when test="string($autonumber) != 0
+ and $number-template != 0">
+ <xsl:value-of select="'xref-number'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'xref'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="insert.targetdb.data">
+ <xsl:with-param name="data"
+ select="key('targetptr-key', $olink.key)[1]/ttl/node()" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="label">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="insert.targetdb.data">
+ <xsl:with-param name="data"
+ select="key('targetptr-key', $olink.key)[1]/@number" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$xref.text !=''">
+ <xsl:copy-of select="$xref.text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: no generated text for </xsl:text>
+ <xsl:text>targetdoc/targetptr/lang = '</xsl:text>
+ <xsl:value-of select="$olink.key"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ <xsl:text>????</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@targetdoc != '' or @targetptr != ''">
+ <xsl:if test="$olink.key != ''">
+ <xsl:message>
+ <xsl:text>Olink error: no generated text for </xsl:text>
+ <xsl:text>targetdoc/targetptr/lang = '</xsl:text>
+ <xsl:value-of select="$olink.key"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>????</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- old style olink -->
+ <xsl:call-template name="olink.outline">
+ <xsl:with-param name="outline.base.uri"
+ select="unparsed-entity-uri(@targetdocent)"/>
+ <xsl:with-param name="localinfo" select="@localinfo"/>
+ <xsl:with-param name="return" select="'xreftext'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="insert.targetdb.data">
+ <xsl:param name="data"/>
+ <!-- Customize this to massage data further -->
+ <xsl:copy-of select="$data"/>
+</xsl:template>
+
+<xsl:template match="*" mode="olink.docname.markup">
+ <!-- No-op for now -->
+</xsl:template>
+
+<xsl:template name="targetpath">
+ <xsl:param name="dirnode" />
+ <xsl:param name="targetdoc" select="''"/>
+
+<!--
+<xsl:message>dirnode is <xsl:value-of select="$dirnode/@name"/></xsl:message>
+<xsl:message>targetdoc is <xsl:value-of select="$targetdoc"/></xsl:message>
+-->
+ <!-- recursive template generates path to olink target directory -->
+ <xsl:choose>
+ <!-- Have we arrived at the final path step? -->
+ <xsl:when test="$dirnode/child::document[@targetdoc = $targetdoc]">
+ <!-- We are done -->
+ </xsl:when>
+ <!-- Have we reached the top without a match? -->
+ <xsl:when test="local-name($dirnode) != 'dir'" >
+ <xsl:message>Olink error: cannot locate targetdoc <xsl:value-of select="$targetdoc"/> in sitemap</xsl:message>
+ </xsl:when>
+ <!-- Is the target in a descendant? -->
+ <xsl:when test="$dirnode/descendant::document/@targetdoc = $targetdoc">
+ <xsl:variable name="step" select="$dirnode/child::dir[descendant::document/@targetdoc = $targetdoc]"/>
+ <xsl:if test = "$step">
+ <xsl:value-of select="$step/@name"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ <!-- Now recurse with the child -->
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode" select="$step"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Otherwise we need to move up a step -->
+ <xsl:otherwise>
+ <xsl:if test="$dirnode/parent::dir">
+ <xsl:text>../</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode" select="$dirnode/parent::*"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink.page.citation">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="olink.lang" select="'en'"/>
+ <xsl:param name="target.database"/>
+ <xsl:param name="linkend" select="''"/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:call-template name="xref.page.citation">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="target" select="key('id', $linkend)"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(starts-with(normalize-space($xrefstyle),
+ 'select:')
+ and (contains($xrefstyle, 'page')
+ or contains($xrefstyle, 'Page')))
+ and $current.docid != ''
+ and $current.docid != $targetdoc
+ and $insert.olink.page.number = 'yes' ">
+
+ <xsl:variable name="page-number">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)[1]/@page" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="$page-number != ''">
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'olink.page.citation'"/>
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="pagenumber" select="$page-number"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink.document.citation">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="olink.lang" select="'en'"/>
+ <xsl:param name="target.database"/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="page">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)[1]/@page" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr">
+ <xsl:value-of
+ select="substring-before(substring-after($olink.key, '/'), '/')"/>
+ </xsl:variable>
+
+ <!-- Don't add docname if pointing to root element -->
+ <xsl:variable name="rootptr">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetdoc-key', $targetdoc)[1]/div[1]/@targetptr" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="docname">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="insert.targetdb.data">
+ <xsl:with-param name="data"
+ select="key('targetdoc-key', $targetdoc)[1]/div[1]/ttl/node()" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="not(starts-with(normalize-space($xrefstyle), 'select:')
+ and (contains($xrefstyle, 'docname')))
+ and ($olink.doctitle = 'yes' or $olink.doctitle = '1')
+ and $current.docid != ''
+ and $rootptr != $targetptr
+ and $current.docid != $targetdoc
+ and $docname != ''">
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'olink.document.citation'"/>
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="docname" select="$docname"/>
+ <xsl:with-param name="pagenumber" select="$page"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="xref.page.citation">
+ <!-- Determine if this xref should have a page citation.
+ Context node is the xref or local olink element -->
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="target" select="key('id', $linkend)"/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:if test="not(starts-with(normalize-space($xrefstyle),'select:')
+ and (contains($xrefstyle, 'page')
+ or contains($xrefstyle, 'Page')))
+ and ( $insert.xref.page.number = 'yes'
+ or $insert.xref.page.number = '1')
+ or local-name($target) = 'para'">
+ <xsl:apply-templates select="$target" mode="page.citation">
+ <xsl:with-param name="id" select="$linkend"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml
new file mode 100644
index 0000000..2995ac0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="or" english-language-name="Oriya">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/or.xml -->
+<!-- * -->
+<!-- * E-mail the edited or.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ସାରାଂଶ"/>
+<l:gentext key="abstract" text="ସାରାଂଶ"/>
+<l:gentext key="Acknowledgements" text="ପà­à¬°à¬¾à¬ªà­à¬¤à¬¿ ସୂଚନା"/>
+<l:gentext key="acknowledgements" text="ପà­à¬°à¬¾à¬ªà­à¬¤à¬¿ ସୂଚନା"/>
+<l:gentext key="Answer" text="ଉ:"/>
+<l:gentext key="answer" text="ଉ:"/>
+<l:gentext key="Appendix" text="ପରିଶିଷà­à¬ "/>
+<l:gentext key="appendix" text="ପରିଶିଷà­à¬ "/>
+<l:gentext key="Article" text="ନିବନà­à¬§"/>
+<l:gentext key="article" text="ନିବନà­à¬§"/>
+<l:gentext key="Author" text="ଲେଖକ"/>
+<l:gentext key="Bibliography" text="ଗà­à¬°à¬¨à­à¬¥à¬¸à­‚ଚୀ"/>
+<l:gentext key="bibliography" text="ଗà­à¬°à¬¨à­à¬¥à¬¸à­‚ଚୀ"/>
+<l:gentext key="Book" text="ପà­à¬¸à­à¬¤à¬•"/>
+<l:gentext key="book" text="ପà­à¬¸à­à¬¤à¬•"/>
+<l:gentext key="CAUTION" text="ସାବଧାନ"/>
+<l:gentext key="Caution" text="ସାବଧାନ"/>
+<l:gentext key="caution" text="ସାବଧାନ"/>
+<l:gentext key="Chapter" text="ଅଧà­à¬¯à¬¾à­Ÿ"/>
+<l:gentext key="chapter" text="ଅଧà­à¬¯à¬¾à­Ÿ"/>
+<l:gentext key="Colophon" text="ପà­à¬¸à­à¬¤à¬• ପରିଚୟ"/>
+<l:gentext key="colophon" text="ପà­à¬¸à­à¬¤à¬• ପରିଚୟ"/>
+<l:gentext key="Copyright" text="ସà­à¬¬à¬¤à­à¬¤à­à¬¬à¬¾à¬§à­€à¬•à¬¾à¬°"/>
+<l:gentext key="copyright" text="ସà­à¬¬à¬¤à­à¬¤à­à¬¬à¬¾à¬§à­€à¬•à¬¾à¬°"/>
+<l:gentext key="Dedication" text="ସମରà­à¬ªà¬£"/>
+<l:gentext key="dedication" text="ସମରà­à¬ªà¬£"/>
+<l:gentext key="Edition" text="ସଂସକରଣ"/>
+<l:gentext key="edition" text="ସଂସକରଣ"/>
+<l:gentext key="Editor" text="ସମà­à¬ªà¬¾à¬¦à¬•"/>
+<l:gentext key="Equation" text="ସମୀକରଣ"/>
+<l:gentext key="equation" text="ସମୀକରଣ"/>
+<l:gentext key="Example" text="ଉଦାହରଣ"/>
+<l:gentext key="example" text="ଉଦାହରଣ"/>
+<l:gentext key="Figure" text="ଚିତà­à¬°"/>
+<l:gentext key="figure" text="ଚିତà­à¬°"/>
+<l:gentext key="Glossary" text="ଶବà­à¬¦à¬•à­‹à¬·"/>
+<l:gentext key="glossary" text="ଶବà­à¬¦à¬•à­‹à¬·"/>
+<l:gentext key="GlossSee" text="ଦେଖନà­à¬¤à­"/>
+<l:gentext key="glosssee" text="ଦେଖନà­à¬¤à­"/>
+<l:gentext key="GlossSeeAlso" text="à¬à¬¹à¬¾ ଭି ଦେଖନà­à¬¤à­"/>
+<l:gentext key="glossseealso" text="à¬à¬¹à¬¾ ଭି ଦେଖନà­à¬¤à­"/>
+<l:gentext key="IMPORTANT" text="ଗà­à¬°à­à¬¤à­à¬¬à¬ªà­‚ରà­à¬£à­à¬£"/>
+<l:gentext key="important" text="ଗà­à¬°à­à¬¤à­à¬¬à¬ªà­‚ରà­à¬£à­à¬£"/>
+<l:gentext key="Important" text="ଗà­à¬°à­à¬¤à­à¬¬à¬ªà­‚ରà­à¬£à­à¬£"/>
+<l:gentext key="Index" text="ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾"/>
+<l:gentext key="index" text="ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾"/>
+<l:gentext key="ISBN" text="ଆଇ.à¬à¬¸.ବି.à¬à¬¨."/>
+<l:gentext key="isbn" text="ଆଇ.à¬à¬¸.ବି.à¬à¬¨."/>
+<l:gentext key="LegalNotice" text="ବୈଧାନିକ ସୂଚନା"/>
+<l:gentext key="legalnotice" text="ବୈଧାନିକ ସୂଚନା"/>
+<l:gentext key="MsgAud" text="ଶà­à¬°à­‹à¬¤à­ƒà¬¬à¬°à­à¬—"/>
+<l:gentext key="msgaud" text="ଶà­à¬°à­‹à¬¤à­ƒà¬¬à¬°à­à¬—"/>
+<l:gentext key="MsgLevel" text="ସà­à¬¤à¬°"/>
+<l:gentext key="msglevel" text="ସà­à¬¤à¬°"/>
+<l:gentext key="MsgOrig" text="ଉତà­à¬ªà¬¤à­à¬¤à¬¿"/>
+<l:gentext key="msgorig" text="ଉତà­à¬ªà¬¤à­à¬¤à¬¿"/>
+<l:gentext key="NOTE" text="ଟୀକା"/>
+<l:gentext key="Note" text="ଟୀକା"/>
+<l:gentext key="note" text="ଟୀକା"/>
+<l:gentext key="Part" text="ଭାଗ"/>
+<l:gentext key="part" text="ଭାଗ"/>
+<l:gentext key="Preface" text="ଭୂମିକା"/>
+<l:gentext key="preface" text="ଭୂମିକା"/>
+<l:gentext key="Procedure" text="କାରà­à¬¯à­à¬¯à¬¬à¬¿à¬§à¬¿"/>
+<l:gentext key="procedure" text="କାରà­à¬¯à­à¬¯à¬¬à¬¿à¬§à¬¿"/>
+<l:gentext key="ProductionSet" text="ଉତà­à¬ªà¬¾à¬¦à¬¨"/>
+<l:gentext key="PubDate" text="ପà­à¬°à¬•à¬¾à¬¶à¬¨ ତାରୀଖ"/>
+<l:gentext key="pubdate" text="ପà­à¬°à¬•à¬¾à¬¶à¬¨ ତାରୀଖ"/>
+<l:gentext key="Published" text="ପà­à¬°à¬•à¬¾à¬¶à¬¿à¬¤"/>
+<l:gentext key="published" text="ପà­à¬°à¬•à¬¾à¬¶à¬¿à¬¤"/>
+<l:gentext key="Publisher" text="ପà­à¬°à¬•à¬¾à¬¶à¬•"/>
+<l:gentext key="Qandadiv" text="ପà­à¬° &amp; ଉ"/>
+<l:gentext key="qandadiv" text="ପà­à¬° &amp; ଉ"/>
+<l:gentext key="QandASet" text="ବାରମà­à¬¬à¬¾à¬° ପଚରାଯାଉଥିବା ପà­à¬°à¬¶à­à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•"/>
+<l:gentext key="Question" text="ପà­à¬°:"/>
+<l:gentext key="question" text="ପà­à¬°:"/>
+<l:gentext key="RefEntry" text="ପୃଷà­à¬ à¬¾"/>
+<l:gentext key="refentry" text="ପୃଷà­à¬ à¬¾"/>
+<l:gentext key="Reference" text="ସନà­à¬¦à¬°à­à¬­"/>
+<l:gentext key="reference" text="ସନà­à¬¦à¬°à­à¬­"/>
+<l:gentext key="References" text="ସନà­à¬¦à¬°à­à¬­"/>
+<l:gentext key="RefName" text="ନାମ"/>
+<l:gentext key="refname" text="ନାମ"/>
+<l:gentext key="RefSection" text="ଅଂଶ"/>
+<l:gentext key="refsection" text="ଅଂଶ"/>
+<l:gentext key="RefSynopsisDiv" text="ସାରାଂଶ"/>
+<l:gentext key="refsynopsisdiv" text="ସାରାଂଶ"/>
+<l:gentext key="RevHistory" text="ସଂଶୋଧନ ଇତିହାସ"/>
+<l:gentext key="revhistory" text="ସଂଶୋଧନ ଇତିହାସ"/>
+<l:gentext key="revision" text="ସଂଶୋଧନ"/>
+<l:gentext key="Revision" text="ସଂଶୋଧନ"/>
+<l:gentext key="sect1" text="ଅଂଶ"/>
+<l:gentext key="sect2" text="ଅଂଶ"/>
+<l:gentext key="sect3" text="ଅଂଶ"/>
+<l:gentext key="sect4" text="ଅଂଶ"/>
+<l:gentext key="sect5" text="ଅଂଶ"/>
+<l:gentext key="section" text="ଅଂଶ"/>
+<l:gentext key="Section" text="ଅଂଶ"/>
+<l:gentext key="see" text="ଦେଖନà­à¬¤à­"/>
+<l:gentext key="See" text="ଦେଖନà­à¬¤à­"/>
+<l:gentext key="seealso" text="à¬à¬¹à¬¾ ଭି ଦେଖନà­à¬¤à­"/>
+<l:gentext key="Seealso" text="à¬à¬¹à¬¾ ଭି ଦେଖନà­à¬¤à­"/>
+<l:gentext key="SeeAlso" text="à¬à¬¹à¬¾ ଭି ଦେଖନà­à¬¤à­"/>
+<l:gentext key="set" text="ବିନà­à¬¯à¬¾à¬¸ କରନà­à¬¤à­"/>
+<l:gentext key="Set" text="ବିନà­à¬¯à¬¾à¬¸ କରନà­à¬¤à­"/>
+<l:gentext key="setindex" text="ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ ବିନà­à¬¯à¬¾à¬¸ କରନà­à¬¤à­"/>
+<l:gentext key="SetIndex" text="ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ ବିନà­à¬¯à¬¾à¬¸ କରନà­à¬¤à­"/>
+<l:gentext key="Sidebar" text="ପାରà­à¬¶à­à¬¬à¬ªà¬Ÿà¬¿"/>
+<l:gentext key="sidebar" text="ପାରà­à¬¶à­à¬¬à¬ªà¬Ÿà¬¿"/>
+<l:gentext key="step" text="ପଦକà­à¬·à­‡à¬ª"/>
+<l:gentext key="Step" text="ପଦକà­à¬·à­‡à¬ª"/>
+<l:gentext key="table" text="ସାରଣୀ"/>
+<l:gentext key="Table" text="ସାରଣୀ"/>
+<l:gentext key="task" text="କାରà­à¬¯à­à­Ÿà¬¸à­‚ଚୀ"/>
+<l:gentext key="Task" text="କାରà­à¬¯à­à­Ÿà¬¸à­‚ଚୀ"/>
+<l:gentext key="tip" text="ସଂକେତ"/>
+<l:gentext key="TIP" text="ସଂକେତ"/>
+<l:gentext key="Tip" text="ସଂକେତ"/>
+<l:gentext key="Warning" text="ଚେତାବନୀ"/>
+<l:gentext key="warning" text="ଚେତାବନୀ"/>
+<l:gentext key="WARNING" text="ଚେତାବନୀ"/>
+<l:gentext key="and" text="ଓ"/>
+<l:gentext key="by" text="ଦà­à¬¬à¬¾à¬°à¬¾"/>
+<l:gentext key="Edited" text="ସମà­à¬ªà¬¾à¬¦à¬¿à¬¤"/>
+<l:gentext key="edited" text="ସମà­à¬ªà¬¾à¬¦à¬¿à¬¤"/>
+<l:gentext key="Editedby" text="ଦà­à¬¬à¬¾à¬°à¬¾ ସମà­à¬ªà¬¾à¬¦à¬¿à¬¤"/>
+<l:gentext key="editedby" text="ଦà­à¬¬à¬¾à¬°à¬¾ ସମà­à¬ªà¬¾à¬¦à¬¿à¬¤"/>
+<l:gentext key="in" text="ଭିତରେ"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="ଟୀକା"/>
+<l:gentext key="Notes" text="ଟୀକା"/>
+<l:gentext key="Pgs" text="ପୃଷà­à¬ à¬¾"/>
+<l:gentext key="pgs" text="ପୃଷà­à¬ à¬¾"/>
+<l:gentext key="Revisedby" text="ଦà­à¬¬à¬¾à¬°à¬¾ ସଂଶୋଧିତ: "/>
+<l:gentext key="revisedby" text="ଦà­à¬¬à¬¾à¬°à¬¾ ସଂଶୋଧିତ: "/>
+<l:gentext key="TableNotes" text="ଟୀକା"/>
+<l:gentext key="tablenotes" text="ଟୀକା"/>
+<l:gentext key="TableofContents" text="ସୂଚୀପତà­à¬°"/>
+<l:gentext key="tableofcontents" text="ସୂଚୀପତà­à¬°"/>
+<l:gentext key="unexpectedelementname" text="ଅପà­à¬°à¬¤à­à¬¯à¬¾à¬¶à¬¿à¬¤ ଉପାଦାନ ନାମ"/>
+<l:gentext key="unsupported" text="ଅସହାୟକ"/>
+<l:gentext key="xrefto" text="ସହିତ ପà­à¬°à¬¾à¬¸à¬™à­à¬—ିକ ସନà­à¬¦à¬°à­à¬­ କରନà­à¬¤à­"/>
+<l:gentext key="Authors" text="ଲେଖକ"/>
+<l:gentext key="copyeditor" text="ନକଲ ସମà­à¬ªà¬¾à¬¦à¬•"/>
+<l:gentext key="graphicdesigner" text="ଆଲେଖୀ ରଚନାକାରୀ"/>
+<l:gentext key="productioneditor" text="ଉତà­à¬ªà¬¾à¬¦à¬¨ ସମà­à¬ªà¬¾à¬¦à¬•"/>
+<l:gentext key="technicaleditor" text="ଯାନà­à¬¤à­à¬°à¬¿à¬• ସମà­à¬ªà¬¾à¬¦à¬•"/>
+<l:gentext key="translator" text="ଅନà­à¬¬à¬¾à¬¦à¬•"/>
+<l:gentext key="listofequations" text="ସମୀକରଣ ତାଲିକା"/>
+<l:gentext key="ListofEquations" text="ସମୀକରଣ ତାଲିକା"/>
+<l:gentext key="ListofExamples" text="ଉଦାହରଣ ତାଲିକା"/>
+<l:gentext key="listofexamples" text="ଉଦାହରଣ ତାଲିକା"/>
+<l:gentext key="ListofFigures" text="ଚିତà­à¬° ତାଲିକା"/>
+<l:gentext key="listoffigures" text="ଚିତà­à¬° ତାଲିକା"/>
+<l:gentext key="ListofProcedures" text="କାରà­à¬¯à­à¬¯à¬¬à¬¿à¬§à¬¿ ତାଲିକା"/>
+<l:gentext key="listofprocedures" text="କାରà­à¬¯à­à¬¯à¬¬à¬¿à¬§à¬¿ ତାଲିକା"/>
+<l:gentext key="listoftables" text="ସାରଣୀ ତାଲିକା"/>
+<l:gentext key="ListofTables" text="ସାରଣୀ ତାଲିକା"/>
+<l:gentext key="ListofUnknown" text="ଅଜଣାର ତାଲିକା"/>
+<l:gentext key="listofunknown" text="ଅଜଣାର ତାଲିକା"/>
+<l:gentext key="nav-home" text="ମୂଳ ସà­à¬¥à¬¾à¬¨"/>
+<l:gentext key="nav-next" text="ପରବରà­à¬¤à­à¬¤à­€"/>
+<l:gentext key="nav-next-sibling" text="ଦà­à¬°à­à¬¤ ଆଗକà­"/>
+<l:gentext key="nav-prev" text="ପୂରà­à¬¬"/>
+<l:gentext key="nav-prev-sibling" text="ଦà­à¬°à­à¬¤ ପଛକà­"/>
+<l:gentext key="nav-up" text="ଉପରକà­"/>
+<l:gentext key="nav-toc" text="ସୂଚୀପତà­à¬°"/>
+<l:gentext key="Draft" text="ଡà­à¬°à¬¾à¬«à­à¬Ÿ"/>
+<l:gentext key="above" text="ଉପରେ"/>
+<l:gentext key="below" text="ତଳେ"/>
+<l:gentext key="sectioncalled" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ"/>
+<l:gentext key="index symbols" text="ପà­à¬°à¬¤à­€à¬•"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="ଅଆଇଈଉଊଋà¬à¬à¬“ଔକଖଗଘଙଚଛଜà¬à¬žà¬Ÿà¬ à¬¡à¬¢à¬£à¬¤à¬¥à¬¦à¬§à¬¨à¬ªà¬«à¬¬à¬­à¬®à¬¯à­Ÿà¬°à¬²à¬³à­±à¬¶à¬·à¬¸à¬¹"/>
+<l:gentext key="uppercase.alpha" text="ଅଆଇଈଉଊଋà¬à¬à¬“ଔକଖଗଘଙଚଛଜà¬à¬žà¬Ÿà¬ à¬¡à¬¢à¬£à¬¤à¬¥à¬¦à¬§à¬¨à¬ªà¬«à¬¬à¬­à¬®à¬¯à­Ÿà¬°à¬²à¬³à­±à¬¶à¬·à¬¸à¬¹"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="ପà­à¬°à¬¥à¬®-ଶେଷ"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ପରିଶିଷà­à¬ Â %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ଅଧà­à¬¯à¬¾à­ŸÂ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ସମୀକରଣ %n. %t"/>
+<l:template name="example" text="ଉଦାହରଣ %n. %t"/>
+<l:template name="figure" text="ଚିତà­à¬°Â %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ଭାଗ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="କାରà­à¬¯à­à¬¯à¬¬à¬¿à¬§à¬¿Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ଉତà­à¬ªà¬¾à¬¦à¬¨Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ସାରଣୀ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ପରିଶିଷà­à¬ Â %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="ଅଧà­à¬¯à¬¾à­ŸÂ %n. %t"/>
+<l:template name="part" text="ଭାଗ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="ଉ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ପà­à¬°: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ପà­à¬°: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text="%oରେ"/>
+<l:template name="olink.page.citation" text=" (ପୃଷà­à¬ à¬¾ %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(ପୃଷà­à¬ à¬¾ %p)"/>
+<l:template name="docname" text="%oରେ"/>
+<l:template name="docnamelong" text="%o ନାମକ ଦଲିଲରେ"/>
+<l:template name="pageabbrev" text="(ପୃ. %p)"/>
+<l:template name="Page" text="ପୃଷà­à¬ à¬¾ %p"/>
+<l:template name="bridgehead" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="refsection" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="refsect1" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="refsect2" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="refsect3" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="sect1" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="sect2" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="sect3" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="sect4" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="sect5" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="section" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="simplesect" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ଉ: %n"/>
+<l:template name="appendix" text="ପରିଶିଷà­à¬ Â %n"/>
+<l:template name="bridgehead" text="ଅଂଶ %n"/>
+<l:template name="chapter" text="ଅଧà­à¬¯à¬¾à­ŸÂ %n"/>
+<l:template name="equation" text="ସମୀକରଣ %n"/>
+<l:template name="example" text="ଉଦାହରଣ %n"/>
+<l:template name="figure" text="ଚିତà­à¬°Â %n"/>
+<l:template name="part" text="ଭାଗ %n"/>
+<l:template name="procedure" text="କାରà­à¬¯à­à¬¯à¬¬à¬¿à¬§à¬¿Â %n"/>
+<l:template name="productionset" text="ଉତà­à¬ªà¬¾à¬¦à¬¨Â %n"/>
+<l:template name="qandadiv" text="ପà­à¬° &amp; ଉ %n"/>
+<l:template name="qandaentry" text="ପà­à¬°: %n"/>
+<l:template name="question" text="ପà­à¬°: %n"/>
+<l:template name="sect1" text="ଅଂଶ %n"/>
+<l:template name="sect2" text="ଅଂଶ %n"/>
+<l:template name="sect3" text="ଅଂଶ %n"/>
+<l:template name="sect4" text="ଅଂଶ %n"/>
+<l:template name="sect5" text="ଅଂଶ %n"/>
+<l:template name="section" text="ଅଂଶ %n"/>
+<l:template name="table" text="ସାରଣୀ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ପରିଶିଷà­à¬ Â %n, %t"/>
+<l:template name="bridgehead" text="ଅଂଶ %n, “%tâ€"/>
+<l:template name="chapter" text="ଅଧà­à¬¯à¬¾à­ŸÂ %n, %t"/>
+<l:template name="equation" text="ସମୀକରଣ %n, “%tâ€"/>
+<l:template name="example" text="ଉଦାହରଣ %n, “%tâ€"/>
+<l:template name="figure" text="ଚିତà­à¬°Â %n, “%tâ€"/>
+<l:template name="part" text="ଭାଗ %n, “%tâ€"/>
+<l:template name="procedure" text="କାରà­à¬¯à­à¬¯à¬¬à¬¿à¬§à¬¿Â %n, “%tâ€"/>
+<l:template name="productionset" text="ଉତà­à¬ªà¬¾à¬¦à¬¨Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="ପà­à¬° &amp; ଉ %n, “%tâ€"/>
+<l:template name="refsect1" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="refsect2" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="refsect3" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="refsection" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="sect1" text="ଅଂଶ %n, “%tâ€"/>
+<l:template name="sect2" text="ଅଂଶ %n, “%tâ€"/>
+<l:template name="sect3" text="ଅଂଶ %n, “%tâ€"/>
+<l:template name="sect4" text="ଅଂଶ %n, “%tâ€"/>
+<l:template name="sect5" text="ଅଂଶ %n, “%tâ€"/>
+<l:template name="section" text="ଅଂଶ %n, “%tâ€"/>
+<l:template name="simplesect" text="à¬à¬¹à¬¿ ଅଂଶର ନାମ “%tâ€"/>
+<l:template name="table" text="ସାରଣୀ %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ଓ "/>
+<l:template name="seplast" text=", ଓ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ଦେଖନà­à¬¤à­ %t."/>
+<l:template name="seealso" text="à¬à¬¹à¬¾ ଭି ଦେଖନà­à¬¤à­ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ଶà­à¬°à­‹à¬¤à­ƒà¬¬à¬°à­à¬—: "/>
+<l:template name="MsgLevel" text="ସà­à¬¤à¬°: "/>
+<l:template name="MsgOrig" text="ଉତà­à¬ªà¬¤à­à¬¤à¬¿: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="ମାସ/ଦିନ/ବରà­à¬·"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[ବà­à¬¯à¬¾à¬–à­à¬¯à¬¾: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ଜାନà­à¬†à¬°à¬¿"/>
+<l:template name="February" text="ଫେବà­à¬°à­à¬†à¬°à¬¿"/>
+<l:template name="March" text="ମାରà­à¬šà­à¬š"/>
+<l:template name="April" text="à¬à¬ªà­à¬°à¬¿à¬²"/>
+<l:template name="May" text="ମେ"/>
+<l:template name="June" text="ଜà­à¬¨"/>
+<l:template name="July" text="ଜà­à¬²à¬¾à¬‡"/>
+<l:template name="August" text="ଅଗଷà­à¬Ÿ"/>
+<l:template name="September" text="ସେପà­à¬Ÿà­‡à¬®à­à¬¬à¬°"/>
+<l:template name="October" text="ଅକà­à¬Ÿà­‹à¬¬à¬°"/>
+<l:template name="November" text="ନଭେମà­à¬¬à¬°"/>
+<l:template name="December" text="ଡିସେମà­à¬¬à¬°"/>
+<l:template name="Monday" text="ସୋମବାର"/>
+<l:template name="Tuesday" text="ମଙà­à¬—ଳବାର"/>
+<l:template name="Wednesday" text="ବà­à¬§à¬¬à¬¾à¬°"/>
+<l:template name="Thursday" text="ଗà­à¬°à­à¬¬à¬¾à¬°"/>
+<l:template name="Friday" text="ଶà­à¬•à­à¬°à¬¬à¬¾à¬°"/>
+<l:template name="Saturday" text="ଶନିବାର"/>
+<l:template name="Sunday" text="ରବିବାର"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ଜାନ"/>
+<l:template name="Feb" text="ଫେବ"/>
+<l:template name="Mar" text="ମାର"/>
+<l:template name="Apr" text="à¬à¬ªà­à¬°"/>
+<l:template name="May" text="ମେ"/>
+<l:template name="Jun" text="ଜà­à¬¨"/>
+<l:template name="Jul" text="ଜà­à¬²"/>
+<l:template name="Aug" text="ଅଗ"/>
+<l:template name="Sep" text="ସେପ"/>
+<l:template name="Oct" text="ଅକà­à¬Ÿ"/>
+<l:template name="Nov" text="ନଭ"/>
+<l:template name="Dec" text="ଡିସ"/>
+<l:template name="Mon" text="ସୋମ"/>
+<l:template name="Tue" text="ମଂଗଳ"/>
+<l:template name="Wed" text="ବà­à¬§"/>
+<l:template name="Thu" text="ଗà­à¬°à­"/>
+<l:template name="Fri" text="ଶà­à¬•à­à¬°"/>
+<l:template name="Sat" text="ଶନି"/>
+<l:template name="Sun" text="ରବି"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0448 Oriya"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">ପà­à¬°à¬¤à­€à¬•</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml
new file mode 100644
index 0000000..08ef771
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pa" english-language-name="Punjabi">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pa.xml -->
+<!-- * -->
+<!-- * E-mail the edited pa.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ਸਾਰ"/>
+<l:gentext key="abstract" text="ਸਾਰ"/>
+<l:gentext key="Acknowledgements" text="ਰਸੀਦਾਂ"/>
+<l:gentext key="acknowledgements" text="ਰਸੀਦਾਂ"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="a:"/>
+<l:gentext key="Appendix" text="ਅੰਤਿਕਾ"/>
+<l:gentext key="appendix" text="ਅੰਤਿਕਾ"/>
+<l:gentext key="Article" text="ਲੇਖ"/>
+<l:gentext key="article" text="ਲੇਖ"/>
+<l:gentext key="Author" text="ਲੇਖਕ"/>
+<l:gentext key="Bibliography" text="ਪà©à¨¸à¨¤à¨•-ਸੂਚੀ"/>
+<l:gentext key="bibliography" text="ਪà©à¨¸à¨¤à¨•-ਸੂਚੀ"/>
+<l:gentext key="Book" text="ਪà©à¨¸à¨¤à¨•"/>
+<l:gentext key="book" text="ਪà©à¨¸à¨¤à¨•"/>
+<l:gentext key="CAUTION" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="Caution" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="caution" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="Chapter" text="ਅਧਿਆਇ"/>
+<l:gentext key="chapter" text="ਅਧਿਆਇ"/>
+<l:gentext key="Colophon" text="ਲੇਖਕਾਂਬਾਰੇ"/>
+<l:gentext key="colophon" text="ਲੇਖਕਾਂਬਾਰੇ"/>
+<l:gentext key="Copyright" text="ਹੱਕਰਾਖਵੇਂਹਨ"/>
+<l:gentext key="copyright" text="ਹੱਕਰਾਖਵੇਂਹਨ"/>
+<l:gentext key="Dedication" text="ਸਮਰਪਣ"/>
+<l:gentext key="dedication" text="ਸਮਰਪਣ"/>
+<l:gentext key="Edition" text="ਪà©à¨°à¨•à¨¾à¨¶à¨¨"/>
+<l:gentext key="edition" text="ਪà©à¨°à¨•à¨¾à¨¶à¨¨"/>
+<l:gentext key="Editor" text="ਪà©à¨°à¨•à¨¾à¨¶à¨•"/>
+<l:gentext key="Equation" text="ਸਮੀਕਰਨ"/>
+<l:gentext key="equation" text="ਸਮੀਕਰਨ"/>
+<l:gentext key="Example" text="ਉਦਾਹਰਨ"/>
+<l:gentext key="example" text="ਉਦਾਹਰਨ"/>
+<l:gentext key="Figure" text="ਚਿੱਤਰ"/>
+<l:gentext key="figure" text="ਚਿੱਤਰ"/>
+<l:gentext key="Glossary" text="ਸ਼ਬਦਾਵਲੀ"/>
+<l:gentext key="glossary" text="ਸ਼ਬਦਾਵਲੀ"/>
+<l:gentext key="GlossSee" text="ਵੇਖੋ"/>
+<l:gentext key="glosssee" text="ਵੇਖੋ"/>
+<l:gentext key="GlossSeeAlso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="glossseealso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="IMPORTANT" text="ਖਾਸ"/>
+<l:gentext key="important" text="ਖਾਸ"/>
+<l:gentext key="Important" text="ਖਾਸ"/>
+<l:gentext key="Index" text="ਤਤਕਰਾ"/>
+<l:gentext key="index" text="ਤਤਕਰਾ"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ਕਾਨੂੰਨੀ ਸੂਚਨਾ"/>
+<l:gentext key="legalnotice" text="ਕਾਨੂੰਨੀ ਸੂਚਨਾ"/>
+<l:gentext key="MsgAud" text="ਪਾਠਕ"/>
+<l:gentext key="msgaud" text="ਪਾਠਕ"/>
+<l:gentext key="MsgLevel" text="ਪੱਧਰ"/>
+<l:gentext key="msglevel" text="ਪੱਧਰ"/>
+<l:gentext key="MsgOrig" text="ਮà©à©±à¨¢"/>
+<l:gentext key="msgorig" text="ਮà©à©±à¨¢"/>
+<l:gentext key="NOTE" text="ਸੂਚਨਾ"/>
+<l:gentext key="Note" text="ਸੂਚਨਾ"/>
+<l:gentext key="note" text="ਸੂਚਨਾ"/>
+<l:gentext key="Part" text="ਭਾਗ"/>
+<l:gentext key="part" text="ਭਾਗ"/>
+<l:gentext key="Preface" text="ਭੂਮਿਕਾ"/>
+<l:gentext key="preface" text="ਭੂਮਿਕਾ"/>
+<l:gentext key="Procedure" text="ਤਰੀਕਾ"/>
+<l:gentext key="procedure" text="ਤਰੀਕਾ"/>
+<l:gentext key="ProductionSet" text="ਉਤਪਾਦਨ"/>
+<l:gentext key="PubDate" text="ਪà©à¨°à¨•à¨¾à¨¶à¨¨ ਮਿਤੀ"/>
+<l:gentext key="pubdate" text="ਪà©à¨°à¨•à¨¾à¨¶à¨¨ ਮਿਤੀ"/>
+<l:gentext key="Published" text="ਪà©à¨°à¨•à¨¾à¨¶à¨¿à¨¤"/>
+<l:gentext key="published" text="ਪà©à¨°à¨•à¨¾à¨¶à¨¿à¨¤"/>
+<l:gentext key="Publisher" text="ਪà©à¨°à¨•à¨¾à¨¶à¨•"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="q &amp; a"/>
+<l:gentext key="QandASet" text="ਆਮ ਸਵਾਲ ਜਵਾਬ"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="q:"/>
+<l:gentext key="RefEntry" text="ਸਫਾ"/>
+<l:gentext key="refentry" text="ਸਫਾ"/>
+<l:gentext key="Reference" text="ਹਵਾਲਾ"/>
+<l:gentext key="reference" text="ਹਵਾਲਾ"/>
+<l:gentext key="References" text="ਹਵਾਲਾ"/>
+<l:gentext key="RefName" text="ਨਾਂ"/>
+<l:gentext key="refname" text="ਨਾਂ"/>
+<l:gentext key="RefSection" text="ਹਿੱਸਾ"/>
+<l:gentext key="refsection" text="ਹਿੱਸਾ"/>
+<l:gentext key="RefSynopsisDiv" text="ਖà©à¨²à¨¾à¨¸à¨¾"/>
+<l:gentext key="refsynopsisdiv" text="ਖà©à¨²à¨¾à¨¸à¨¾"/>
+<l:gentext key="RevHistory" text="ਸà©à¨§à¨¾à¨ˆ ਅਤੀਤ"/>
+<l:gentext key="revhistory" text="ਸà©à¨§à¨¾à¨ˆ ਅਤੀਤ"/>
+<l:gentext key="revision" text="ਸà©à¨§à¨¾à¨ˆ"/>
+<l:gentext key="Revision" text="ਸà©à¨§à¨¾à¨ˆ"/>
+<l:gentext key="sect1" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect2" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect3" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect4" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect5" text="ਹਿੱਸਾ"/>
+<l:gentext key="section" text="ਹਿੱਸਾ"/>
+<l:gentext key="Section" text="ਹਿੱਸਾ"/>
+<l:gentext key="see" text="ਵੇਖੋ"/>
+<l:gentext key="See" text="ਵੇਖੋ"/>
+<l:gentext key="seealso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="Seealso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="SeeAlso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="set" text="ਨਿਰਧਾਰਿਤ"/>
+<l:gentext key="Set" text="ਨਿਰਧਾਰਿਤ"/>
+<l:gentext key="setindex" text="ਤਤਕਰਾ ਨਿਰਧਾਰਨ"/>
+<l:gentext key="SetIndex" text="ਤਤਕਰਾ ਨਿਰਧਾਰਨ"/>
+<l:gentext key="Sidebar" text="ਬਾਹੀ"/>
+<l:gentext key="sidebar" text="ਬਾਹੀ"/>
+<l:gentext key="step" text="ਪਗ਼"/>
+<l:gentext key="Step" text="ਪਗ਼"/>
+<l:gentext key="table" text="ਸਾਰਣੀ"/>
+<l:gentext key="Table" text="ਸਾਰਣੀ"/>
+<l:gentext key="task" text="ਕਾਰਜ"/>
+<l:gentext key="Task" text="ਕਾਰਜ"/>
+<l:gentext key="tip" text="ਸੰਕੇਤ"/>
+<l:gentext key="TIP" text="ਸੰਕੇਤ"/>
+<l:gentext key="Tip" text="ਸੰਕੇਤ"/>
+<l:gentext key="Warning" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="warning" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="WARNING" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="and" text="ਅਤੇ"/>
+<l:gentext key="by" text="ਲਈ"/>
+<l:gentext key="Edited" text="ਸੰਪਾਦਨ"/>
+<l:gentext key="edited" text="ਸੰਪਾਦਨ"/>
+<l:gentext key="Editedby" text="ਸੰਪਾਦਨ ਕੀਤਾ"/>
+<l:gentext key="editedby" text="ਸੰਪਾਦਨ ਕੀਤਾ"/>
+<l:gentext key="in" text="ਵਿੱਚ"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="ਸੂਚਨਾ"/>
+<l:gentext key="Notes" text="ਸੂਚਨਾ"/>
+<l:gentext key="Pgs" text="ਸਫ਼ੇ"/>
+<l:gentext key="pgs" text="ਸਫ਼ੇ"/>
+<l:gentext key="Revisedby" text="ਸà©à¨§à¨¾à¨ˆ ਕੀਤੀ: "/>
+<l:gentext key="revisedby" text="ਸà©à¨§à¨¾à¨ˆ ਕੀਤੀ: "/>
+<l:gentext key="TableNotes" text="ਸੂਚਨਾ"/>
+<l:gentext key="tablenotes" text="ਸੂਚਨਾ"/>
+<l:gentext key="TableofContents" text="ਭਾਗ ਸਾਰਣੀ"/>
+<l:gentext key="tableofcontents" text="ਭਾਗ ਸਾਰਣੀ"/>
+<l:gentext key="unexpectedelementname" text="ਨਾ-ਲੋੜੀਦਾ ਇਕਾਈ ਨਾਂ"/>
+<l:gentext key="unsupported" text="ਨਾ-ਸਹਾਇਕ"/>
+<l:gentext key="xrefto" text="xref ਨੂੰ"/>
+<l:gentext key="Authors" text="ਲੇਖਕ"/>
+<l:gentext key="copyeditor" text="ਨਕਲ ਸੰਪਾਦਕ"/>
+<l:gentext key="graphicdesigner" text="ਗਰਾਫਿਕ ਡਿਜ਼ਾਈਨਰ"/>
+<l:gentext key="productioneditor" text="ਉਤਪਾਦਨ ਸੰਪਾਦਕ"/>
+<l:gentext key="technicaleditor" text="ਤਕਨੀਕੀ ਸੰਪਾਦਕ"/>
+<l:gentext key="translator" text="ਅਨà©à¨µà¨¾à¨¦à¨•"/>
+<l:gentext key="listofequations" text="ਸਮੀਕਰਨ ਸੂਚੀ"/>
+<l:gentext key="ListofEquations" text="ਸਮੀਕਰਨ ਸੂਚੀ"/>
+<l:gentext key="ListofExamples" text="ਉਦਾਹਰਨ ਸੂਚੀ"/>
+<l:gentext key="listofexamples" text="ਉਦਾਹਰਨ ਸੂਚੀ"/>
+<l:gentext key="ListofFigures" text="ਚਿੱਤਰ ਸੂਚੀ"/>
+<l:gentext key="listoffigures" text="ਚਿੱਤਰ ਸੂਚੀ"/>
+<l:gentext key="ListofProcedures" text="ਕਾਰਵਾਈ ਸੂਚੀ"/>
+<l:gentext key="listofprocedures" text="ਕਾਰਵਾਈ ਸੂਚੀ"/>
+<l:gentext key="listoftables" text="ਸਾਰਣੀ ਸੂਚੀ"/>
+<l:gentext key="ListofTables" text="ਸਾਰਣੀ ਸੂਚੀ"/>
+<l:gentext key="ListofUnknown" text="ਅਣਜਾਣ ਸੂਚੀ"/>
+<l:gentext key="listofunknown" text="ਅਣਜਾਣ ਸੂਚੀ"/>
+<l:gentext key="nav-home" text="ਘਰ"/>
+<l:gentext key="nav-next" text="ਅੱਗੇ"/>
+<l:gentext key="nav-next-sibling" text="ਤੇਜ਼ ਅੱਗੇ"/>
+<l:gentext key="nav-prev" text="ਪਿੱਛੇ"/>
+<l:gentext key="nav-prev-sibling" text="ਤੇਜ਼ ਪਿੱਛੇ"/>
+<l:gentext key="nav-up" text="ਉੱਪਰ"/>
+<l:gentext key="nav-toc" text="ਸਾਰਣੀ"/>
+<l:gentext key="Draft" text="ਡਰਾਫਟ"/>
+<l:gentext key="above" text="ਉੱਪਰ"/>
+<l:gentext key="below" text="ਹੇਠਾਂ"/>
+<l:gentext key="sectioncalled" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ"/>
+<l:gentext key="index symbols" text="ਚਿੰਨ"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ਅੰਤਿਕਾ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ਸਮੀਕਰਨ %n. %t"/>
+<l:template name="example" text="ਉਦਾਹਰਨ %n. %t"/>
+<l:template name="figure" text="ਚਿੱਤਰ %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ਭਾਗ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ਤਰੀਕਾ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ਉਤਪਾਦਨ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ਸਾਰਣੀ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ਅੰਤਿਕਾ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n. %t"/>
+<l:template name="part" text="ਭਾਗ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="refsection" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="refsect1" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="refsect2" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="refsect3" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="sect1" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="sect2" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="sect3" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="sect4" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="sect5" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="section" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="simplesect" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="ਅੰਤਿਕਾ %n"/>
+<l:template name="bridgehead" text="ਹਿੱਸਾ %n"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n"/>
+<l:template name="equation" text="ਸਮੀਕਰਨ %n"/>
+<l:template name="example" text="ਉਦਾਹਰਨ %n"/>
+<l:template name="figure" text="ਚਿੱਤਰ %n"/>
+<l:template name="part" text="ਭਾਗ %n"/>
+<l:template name="procedure" text="ਤਰੀਕਾ %n"/>
+<l:template name="productionset" text="ਉਤਪਾਦਨ %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect2" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect3" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect4" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect5" text="ਹਿੱਸਾ %n"/>
+<l:template name="section" text="ਹਿੱਸਾ %n"/>
+<l:template name="table" text="ਸਾਰਣੀ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ਅੰਤਿਕਾ %n, %t"/>
+<l:template name="bridgehead" text="ਹਿੱਸਾ %n, “%tâ€"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n, %t"/>
+<l:template name="equation" text="ਸਮੀਕਰਨ %n, “%tâ€"/>
+<l:template name="example" text="ਉਦਾਹਰਨ %n, “%tâ€"/>
+<l:template name="figure" text="ਚਿੱਤਰ %n, “%tâ€"/>
+<l:template name="part" text="ਭਾਗ %n, “%tâ€"/>
+<l:template name="procedure" text="ਤਰੀਕਾ %n, “%tâ€"/>
+<l:template name="productionset" text="ਉਤਪਾਦਨ %n, “%tâ€"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%tâ€"/>
+<l:template name="refsect1" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="refsect2" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="refsect3" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="refsection" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="sect1" text="ਹਿੱਸਾ %n, “%tâ€"/>
+<l:template name="sect2" text="ਹਿੱਸਾ %n, “%tâ€"/>
+<l:template name="sect3" text="ਹਿੱਸਾ %n, “%tâ€"/>
+<l:template name="sect4" text="ਹਿੱਸਾ %n, “%tâ€"/>
+<l:template name="sect5" text="ਹਿੱਸਾ %n, “%tâ€"/>
+<l:template name="section" text="ਹਿੱਸਾ %n, “%tâ€"/>
+<l:template name="simplesect" text="ਭਾਗ ਕਹਿੰਦੇ ਨੇ “%tâ€"/>
+<l:template name="table" text="ਸਾਰਣੀ %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ਅਤੇ "/>
+<l:template name="seplast" text=", ਅਤੇ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ਵੇਖੋ %t."/>
+<l:template name="seealso" text="ਇਹਵੀਵੇਖੋ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ਪਾਠਕ: "/>
+<l:template name="MsgLevel" text="ਪੱਧਰ: "/>
+<l:template name="MsgOrig" text="ਮà©à©±à¨¢: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ਜਨਵਰੀ"/>
+<l:template name="February" text="ਫਰਵਰੀ"/>
+<l:template name="March" text="ਮਾਰਚ"/>
+<l:template name="April" text="ਅਪà©à¨°à©ˆà¨²"/>
+<l:template name="May" text="ਮਈ"/>
+<l:template name="June" text="ਜੂਨ"/>
+<l:template name="July" text="ਜà©à¨²à¨¾à¨ˆ"/>
+<l:template name="August" text="ਅਗਸਤ"/>
+<l:template name="September" text="ਸਤੰਬਰ"/>
+<l:template name="October" text="ਅਕਤੂਬਰ"/>
+<l:template name="November" text="ਨਵੰਬਰ"/>
+<l:template name="December" text="ਦਸੰਬਰ"/>
+<l:template name="Monday" text="ਸੋਮਵਾਰ"/>
+<l:template name="Tuesday" text="ਮੰਗਲਵਾਰ"/>
+<l:template name="Wednesday" text="ਬà©à©±à¨§à¨µà¨¾à¨°"/>
+<l:template name="Thursday" text="ਵੀਰਵਾਰ"/>
+<l:template name="Friday" text="ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°"/>
+<l:template name="Saturday" text="ਸ਼ਨੀਵਾਰ"/>
+<l:template name="Sunday" text="à¨à¨¤à¨µà¨¾à¨°"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ਜੈਨ"/>
+<l:template name="Feb" text="ਫੈਬ"/>
+<l:template name="Mar" text="ਮਾਰ"/>
+<l:template name="Apr" text="ਅਪà©à¨°à©ˆ"/>
+<l:template name="May" text="ਮਈ"/>
+<l:template name="Jun" text="ਜੂਨ"/>
+<l:template name="Jul" text="ਜà©à¨²"/>
+<l:template name="Aug" text="ਅਗ"/>
+<l:template name="Sep" text="ਸਤੰ"/>
+<l:template name="Oct" text="ਅਕਤੂ"/>
+<l:template name="Nov" text="ਨਵੰ"/>
+<l:template name="Dec" text="ਦਸੰ"/>
+<l:template name="Mon" text="ਸੋਮ"/>
+<l:template name="Tue" text="ਮੰਗਲ"/>
+<l:template name="Wed" text="ਬà©à©±à¨§"/>
+<l:template name="Thu" text="ਵੀਰ"/>
+<l:template name="Fri" text="ਸ਼à©à©±à¨•à¨°"/>
+<l:template name="Sat" text="ਸ਼ਨੀ"/>
+<l:template name="Sun" text="à¨à¨¤"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0446 Punjabi"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">ਚਿੰਨ</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml
new file mode 100644
index 0000000..64efdca
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0"?>
+
+<reference><info><title>Common Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8782 2010-07-27 21:15:17Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the
+ “common†part of the DocBook XSL stylesheets.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbchoice_choice">
+<refnamediv>
+<refname>dbchoice_choice</refname>
+<refpurpose>Generates a localized choice separator</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbchoice choice="and"|"or"|<replaceable>string</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbchoice choice</tag> PI to
+ generate an appropriate localized “choice†separator (for
+ example, <literal>and</literal> or <literal>or</literal>)
+ before the final item in an inline <tag>simplelist</tag></para>
+
+ <warning>
+
+<para>This PI is a less-than-ideal hack; support for it may
+ disappear in the future (particularly if and when a more
+ appropriate means for marking up "choice" lists becomes
+ available in DocBook).</para>
+
+ </warning>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>choice="and"</term>
+ <listitem>
+
+<para>generates a localized <literal>and</literal> separator</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="or"</term>
+ <listitem>
+
+<para>generates a localized <literal>or</literal> separator</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="<replaceable>string</replaceable>"</term>
+ <listitem>
+
+<para>generates a literal <replaceable>string</replaceable> separator</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbtimestamp">
+<refnamediv>
+<refname>dbtimestamp</refname>
+<refpurpose>Inserts a date timestamp</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbtimestamp format="<replaceable>formatstring</replaceable>" [padding="0"|"1"]</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbtimestamp</tag> PI at any point in a
+ source document to cause a date timestamp (a formatted
+ string representing the current date and time) to be
+ inserted in output of the document.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>format="<replaceable>formatstring</replaceable>"</term>
+ <listitem>
+
+<para>Specifies format in which the date and time are
+ output</para>
+
+ <note>
+
+<para>For details of the content of the format string,
+ see <link role="tcg" xlink:href="Datetime.html">Date and time</link>.</para>
+
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>padding="0"|"1"</term>
+ <listitem>
+
+<para>Specifies padding behavior; if non-zero, padding is is added</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbtex_delims">
+<refnamediv>
+<refname>dbtex_delims</refname>
+<refpurpose>Generates delimiters around embedded TeX equations
+ in output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbtex delims="no"|"yes"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbtex delims</tag> PI as a
+ child of a <tag>textobject</tag> containing embedded TeX
+ markup, to cause that markup to be surrounded by
+ <literal>$</literal> delimiter characters in output.</para>
+
+ <warning>
+
+<para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+
+ </warning>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>dbtex delims="no"|"yes"</term>
+ <listitem>
+
+<para>Specifies whether delimiters are output</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>tex.math.delims</parameter></para>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl
new file mode 100644
index 0000000..42aac0d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl
@@ -0,0 +1,346 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:date="http://exslt.org/dates-and-times"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc date exsl"
+ extension-element-prefixes="date exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: pi.xsl 8782 2010-07-27 21:15:17Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info><title>Common Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8782 2010-07-27 21:15:17Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro id="partintro">
+ <title>Introduction</title>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the
+ “common†part of the DocBook XSL stylesheets.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+<doc:pi name="dbchoice_choice" xmlns="">
+ <refpurpose>Generates a localized choice separator</refpurpose>
+ <refdescription id="select.choice.separator-desc">
+ <para>Use the <tag class="xmlpi">dbchoice choice</tag> PI to
+ generate an appropriate localized “choice†separator (for
+ example, <literal>and</literal> or <literal>or</literal>)
+ before the final item in an inline <tag>simplelist</tag></para>
+ <warning>
+ <para>This PI is a less-than-ideal hack; support for it may
+ disappear in the future (particularly if and when a more
+ appropriate means for marking up "choice" lists becomes
+ available in DocBook).</para>
+ </warning>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbchoice choice="and"|"or"|<replaceable>string</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>choice="and"</term>
+ <listitem>
+ <para>generates a localized <literal>and</literal> separator</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="or"</term>
+ <listitem>
+ <para>generates a localized <literal>or</literal> separator</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="<replaceable>string</replaceable>"</term>
+ <listitem>
+ <para>generates a literal <replaceable>string</replaceable> separator</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbchoice_choice">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbchoice')"/>
+ <xsl:with-param name="attribute">choice</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbtimestamp" xmlns="">
+ <refpurpose>Inserts a date timestamp</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbtimestamp</tag> PI at any point in a
+ source document to cause a date timestamp (a formatted
+ string representing the current date and time) to be
+ inserted in output of the document.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbtimestamp format="<replaceable>formatstring</replaceable>" [padding="0"|"1"]</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>format="<replaceable>formatstring</replaceable>"</term>
+ <listitem>
+ <para>Specifies format in which the date and time are
+ output</para>
+ <note>
+ <para>For details of the content of the format string,
+ see <link role="tcg" xlink:href="Datetime.html"
+ >Date and time</link>.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>padding="0"|"1"</term>
+ <listitem>
+ <para>Specifies padding behavior; if non-zero, padding is is added</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbtimestamp">
+ <xsl:variable name="format">
+ <xsl:variable name="pi-format">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">format</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$pi-format != ''">
+ <xsl:value-of select="$pi-format"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime'"/>
+ <xsl:with-param name="name" select="'format'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="padding">
+ <xsl:variable name="pi-padding">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">padding</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$pi-padding != ''">
+ <xsl:value-of select="$pi-padding"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="date">
+ <xsl:choose>
+ <xsl:when test="function-available('date:date-time')">
+ <xsl:value-of select="date:date-time()"/>
+ </xsl:when>
+ <xsl:when test="function-available('date:dateTime')">
+ <!-- Xalan quirk -->
+ <xsl:value-of select="date:dateTime()"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="function-available('date:date-time') or
+ function-available('date:dateTime')">
+ <xsl:call-template name="datetime.format">
+ <xsl:with-param name="date" select="$date"/>
+ <xsl:with-param name="format" select="$format"/>
+ <xsl:with-param name="padding" select="$padding"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Timestamp processing requires XSLT processor with EXSLT date support.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:pi name="dbtex_delims" xmlns="">
+ <refpurpose>Generates delimiters around embedded TeX equations
+ in output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbtex delims</tag> PI as a
+ child of a <tag>textobject</tag> containing embedded TeX
+ markup, to cause that markup to be surrounded by
+ <literal>$</literal> delimiter characters in output.</para>
+ <warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+ </warning>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbtex delims="no"|"yes"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>dbtex delims="no"|"yes"</term>
+ <listitem>
+ <para>Specifies whether delimiters are output</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refsee role="params">
+ <para><parameter>tex.math.delims</parameter></para>
+ </refsee>
+
+</doc:pi>
+<xsl:template name="pi.dbtex_delims">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbtex')"/>
+ <xsl:with-param name="attribute" select="'delims'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction()" mode="titlepage.mode">
+ <!-- * Als process PIs on title pages -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbtimestamp')">
+ <xsl:call-template name="pi.dbtimestamp"/>
+</xsl:template>
+
+<xsl:template name="datetime.format">
+ <xsl:param name="date"/>
+ <xsl:param name="format"/>
+ <xsl:param name="padding" select="1"/>
+ <xsl:if test="$format != ''">
+ <!-- replace any whitespace in the format string with a non-breaking space -->
+ <xsl:variable name="format-nbsp"
+ select="translate($format,
+ '&#x20;&#x9;&#xd;&#xa;',
+ '&#xa0;&#xa0;&#xa0;&#xa0;')"/>
+ <xsl:variable name="tokenized-format-string">
+ <xsl:call-template name="str.tokenize.keep.delimiters">
+ <xsl:with-param name="string" select="$format-nbsp"/>
+ <xsl:with-param name="delimiters" select="'&#xa0;,./-()[]:'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <!-- We must preserve context node in order to get valid language -->
+ <xsl:variable name="context" select="."/>
+ <xsl:for-each select="exsl:node-set($tokenized-format-string)/node()">
+ <xsl:variable name="token">
+ <xsl:value-of select="."/>
+ </xsl:variable>
+ <!-- Restore context node -->
+ <xsl:for-each select="$context">
+ <xsl:choose>
+ <xsl:when test="$token = 'a'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-abbrev'"/>
+ <xsl:with-param name="name" select="date:day-abbreviation($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'A'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-full'"/>
+ <xsl:with-param name="name" select="date:day-name($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'b'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-abbrev'"/>
+ <xsl:with-param name="name" select="date:month-abbreviation($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'c'">
+ <xsl:value-of select="date:date($date)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="date:time($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'B'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-full'"/>
+ <xsl:with-param name="name" select="date:month-name($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'd'">
+ <xsl:if test="$padding = 1 and
+ string-length(date:day-in-month($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:day-in-month($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'H'">
+ <xsl:if test="$padding = 1 and string-length(date:hour-in-day($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:hour-in-day($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'j'">
+ <xsl:value-of select="date:day-in-year($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'm'">
+ <xsl:if test="$padding = 1 and string-length(date:month-in-year($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:month-in-year($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'M'">
+ <xsl:if test="string-length(date:minute-in-hour($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:minute-in-hour($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'S'">
+ <xsl:if test="string-length(date:second-in-minute($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:second-in-minute($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'U'">
+ <xsl:value-of select="date:week-in-year($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'w'">
+ <xsl:value-of select="date:day-in-week($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'x'">
+ <xsl:value-of select="date:date($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'X'">
+ <xsl:value-of select="date:time($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'Y'">
+ <xsl:value-of select="date:year($date)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$token"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Timestamp processing requires an XSLT processor with support
+ for the EXSLT node-set() function.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml
new file mode 100644
index 0000000..186ed3b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pl" english-language-name="Polish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pl.xml -->
+<!-- * -->
+<!-- * E-mail the edited pl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrakt"/>
+<l:gentext key="abstract" text="abstrakt"/>
+<l:gentext key="Acknowledgements" text="Podziękowania"/>
+<l:gentext key="acknowledgements" text="podziękowania"/>
+<l:gentext key="Answer" text="Odp.:"/>
+<l:gentext key="answer" text="odp.:"/>
+<l:gentext key="Appendix" text="Dodatek"/>
+<l:gentext key="appendix" text="dodatek"/>
+<l:gentext key="Article" text="Artykuł"/>
+<l:gentext key="article" text="artykuł"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="bibliografia"/>
+<l:gentext key="Book" text="Książka"/>
+<l:gentext key="book" text="książka"/>
+<l:gentext key="CAUTION" text="OSTRZEŻENIE"/>
+<l:gentext key="Caution" text="Ostrzeżenie"/>
+<l:gentext key="caution" text="ostrzeżenie"/>
+<l:gentext key="Chapter" text="Rozdział"/>
+<l:gentext key="chapter" text="rozdział"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedykacja"/>
+<l:gentext key="dedication" text="dedykacja"/>
+<l:gentext key="Edition" text="Wydanie"/>
+<l:gentext key="edition" text="wydanie"/>
+<l:gentext key="Editor" text="Redaktor"/>
+<l:gentext key="Equation" text="Równanie"/>
+<l:gentext key="equation" text="równanie"/>
+<l:gentext key="Example" text="Przykład"/>
+<l:gentext key="example" text="przykład"/>
+<l:gentext key="Figure" text="Rysunek"/>
+<l:gentext key="figure" text="rysunek"/>
+<l:gentext key="Glossary" text="Glosariusz"/>
+<l:gentext key="glossary" text="glosariusz"/>
+<l:gentext key="GlossSee" text="Patrz"/>
+<l:gentext key="glosssee" text="patrz"/>
+<l:gentext key="GlossSeeAlso" text="Patrz też"/>
+<l:gentext key="glossseealso" text="patrz też"/>
+<l:gentext key="IMPORTANT" text="WAŻNE"/>
+<l:gentext key="important" text="ważne"/>
+<l:gentext key="Important" text="Ważne"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Informacja Prawna"/>
+<l:gentext key="legalnotice" text="informacja prawna"/>
+<l:gentext key="MsgAud" text="Odbiorcy"/>
+<l:gentext key="msgaud" text="odbiorcy"/>
+<l:gentext key="MsgLevel" text="Poziom"/>
+<l:gentext key="msglevel" text="poziom"/>
+<l:gentext key="MsgOrig" text="Nadawca"/>
+<l:gentext key="msgorig" text="nadawca"/>
+<l:gentext key="NOTE" text="UWAGA"/>
+<l:gentext key="Note" text="Uwaga"/>
+<l:gentext key="note" text="uwaga"/>
+<l:gentext key="Part" text="Część"/>
+<l:gentext key="part" text="część"/>
+<l:gentext key="Preface" text="Przedmowa"/>
+<l:gentext key="preface" text="przedmowa"/>
+<l:gentext key="Procedure" text="Procedura"/>
+<l:gentext key="procedure" text="procedura"/>
+<l:gentext key="ProductionSet" text="Produkcja"/>
+<l:gentext key="PubDate" text="Data wydania"/>
+<l:gentext key="pubdate" text="data wydania"/>
+<l:gentext key="Published" text="Wydano"/>
+<l:gentext key="published" text="wydano"/>
+<l:gentext key="Publisher" text="Wydawca"/>
+<l:gentext key="Qandadiv" text="Pytania i odpowiedzi"/>
+<l:gentext key="qandadiv" text="Pytania i odpowiedzi"/>
+<l:gentext key="QandASet" text="Najczęściej zadawane pytania"/>
+<l:gentext key="Question" text="Pyt.:"/>
+<l:gentext key="question" text="Pyt.:"/>
+<l:gentext key="RefEntry" text="Strona"/>
+<l:gentext key="refentry" text="strona"/>
+<l:gentext key="Reference" text="Materiały źródłowe"/>
+<l:gentext key="reference" text="Materiały źródłowe"/>
+<l:gentext key="References" text="Materiały źródłowe"/>
+<l:gentext key="RefName" text="Nazwa"/>
+<l:gentext key="refname" text="nazwa"/>
+<l:gentext key="RefSection" text="Sekcja"/>
+<l:gentext key="refsection" text="sekcja"/>
+<l:gentext key="RefSynopsisDiv" text="Streszczenie"/>
+<l:gentext key="refsynopsisdiv" text="streszczenie"/>
+<l:gentext key="RevHistory" text="Historia zmian"/>
+<l:gentext key="revhistory" text="Historia zmian"/>
+<l:gentext key="revision" text="Zmiana"/>
+<l:gentext key="Revision" text="Zmiana"/>
+<l:gentext key="sect1" text="Sekcja"/>
+<l:gentext key="sect2" text="Sekcja"/>
+<l:gentext key="sect3" text="Sekcja"/>
+<l:gentext key="sect4" text="Sekcja"/>
+<l:gentext key="sect5" text="Sekcja"/>
+<l:gentext key="section" text="sekcja"/>
+<l:gentext key="Section" text="Sekcja"/>
+<l:gentext key="see" text="patrz"/>
+<l:gentext key="See" text="Patrz"/>
+<l:gentext key="seealso" text="patrz też"/>
+<l:gentext key="Seealso" text="Patrz też"/>
+<l:gentext key="SeeAlso" text="Patrz też"/>
+<l:gentext key="set" text="zestaw"/>
+<l:gentext key="Set" text="Zestaw"/>
+<l:gentext key="setindex" text="Indeks"/>
+<l:gentext key="SetIndex" text="Indeks"/>
+<l:gentext key="Sidebar" text="Panel boczny"/>
+<l:gentext key="sidebar" text="panel boczny"/>
+<l:gentext key="step" text="krok"/>
+<l:gentext key="Step" text="Krok"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="zadanie"/>
+<l:gentext key="Task" text="Zadanie"/>
+<l:gentext key="tip" text="podpowiedź"/>
+<l:gentext key="TIP" text="PODPOWIEDŹ"/>
+<l:gentext key="Tip" text="Podpowiedź"/>
+<l:gentext key="Warning" text="Ostrzeżenie"/>
+<l:gentext key="warning" text="ostrzeżenie"/>
+<l:gentext key="WARNING" text="OSTRZEŻENIE"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="autorstwa"/>
+<l:gentext key="Edited" text="Redakcja"/>
+<l:gentext key="edited" text="redakcja"/>
+<l:gentext key="Editedby" text="Redakcja: "/>
+<l:gentext key="editedby" text="Redakcja: "/>
+<l:gentext key="in" text="w"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="przypisy"/>
+<l:gentext key="Notes" text="Przypisy"/>
+<l:gentext key="Pgs" text="S."/>
+<l:gentext key="pgs" text="s."/>
+<l:gentext key="Revisedby" text="Korekta: "/>
+<l:gentext key="revisedby" text="korekta: "/>
+<l:gentext key="TableNotes" text="Przypisy"/>
+<l:gentext key="tablenotes" text="przypisy"/>
+<l:gentext key="TableofContents" text="Spis treści"/>
+<l:gentext key="tableofcontents" text="spis treści"/>
+<l:gentext key="unexpectedelementname" text="Nieoczekiwana nazwa elementu"/>
+<l:gentext key="unsupported" text="niewspierane"/>
+<l:gentext key="xrefto" text="xref do"/>
+<l:gentext key="Authors" text="Autorzy"/>
+<l:gentext key="copyeditor" text="Redaktor kopii"/>
+<l:gentext key="graphicdesigner" text="Projektant graficzny"/>
+<l:gentext key="productioneditor" text="Redaktor produkcji"/>
+<l:gentext key="technicaleditor" text="Redaktor techniczny"/>
+<l:gentext key="translator" text="TÅ‚umacz"/>
+<l:gentext key="listofequations" text="spis równań"/>
+<l:gentext key="ListofEquations" text="Spis równań"/>
+<l:gentext key="ListofExamples" text="Spis przykładów"/>
+<l:gentext key="listofexamples" text="spis przykładów"/>
+<l:gentext key="ListofFigures" text="Spis rysunków"/>
+<l:gentext key="listoffigures" text="spis rysunków"/>
+<l:gentext key="ListofProcedures" text="Spis procedur"/>
+<l:gentext key="listofprocedures" text="spis procedur"/>
+<l:gentext key="listoftables" text="spis tabel"/>
+<l:gentext key="ListofTables" text="Spis tabel"/>
+<l:gentext key="ListofUnknown" text="Spis nieznanych"/>
+<l:gentext key="listofunknown" text="spis nieznanych"/>
+<l:gentext key="nav-home" text="Spis treści"/>
+<l:gentext key="nav-next" text="Następny"/>
+<l:gentext key="nav-next-sibling" text="Następny rozdział"/>
+<l:gentext key="nav-prev" text="Poprzedni"/>
+<l:gentext key="nav-prev-sibling" text="Poprzedni rozdział"/>
+<l:gentext key="nav-up" text="Początek rozdziału"/>
+<l:gentext key="nav-toc" text="Spis treści"/>
+<l:gentext key="Draft" text="Szkic"/>
+<l:gentext key="above" text="powyżej"/>
+<l:gentext key="below" text="poniżej"/>
+<l:gentext key="sectioncalled" text="sekcja o nazwie"/>
+<l:gentext key="index symbols" text="Symbole"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż"/>
+<l:gentext key="uppercase.alpha" text="AÄ„BCĆDEĘFGHIJKLÅMNŃOÓPQRSÅšTUVWXYZŹŻ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="«"/>
+<l:dingbat key="nestedendquote" text="»"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="ߦ"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Rozdział %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Równanie %n. %t"/>
+<l:template name="example" text="Przykład %n. %t"/>
+<l:template name="figure" text="Rysunek %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Część %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcja %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Rozdział %n. %t"/>
+<l:template name="part" text="Część %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Odp.: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Pyt.: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pyt.: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="„%tâ€"/>
+<l:template name="refsection" text="„%tâ€"/>
+<l:template name="refsect1" text="„%tâ€"/>
+<l:template name="refsect2" text="„%tâ€"/>
+<l:template name="refsect3" text="„%tâ€"/>
+<l:template name="sect1" text="„%tâ€"/>
+<l:template name="sect2" text="„%tâ€"/>
+<l:template name="sect3" text="„%tâ€"/>
+<l:template name="sect4" text="„%tâ€"/>
+<l:template name="sect5" text="„%tâ€"/>
+<l:template name="section" text="„%tâ€"/>
+<l:template name="simplesect" text="„%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Odp.: %n"/>
+<l:template name="appendix" text="Dodatek %n"/>
+<l:template name="bridgehead" text="Sekcja %n"/>
+<l:template name="chapter" text="Rozdział %n"/>
+<l:template name="equation" text="Równanie %n"/>
+<l:template name="example" text="Przykład %n"/>
+<l:template name="figure" text="Rysunek %n"/>
+<l:template name="part" text="Część %n"/>
+<l:template name="procedure" text="Procedura %n"/>
+<l:template name="productionset" text="Produkcja %n"/>
+<l:template name="qandadiv" text="Pytania i odpowiedzi %n"/>
+<l:template name="qandaentry" text="Pyt.: %n"/>
+<l:template name="question" text="Pyt.: %n"/>
+<l:template name="sect1" text="Sekcja %n"/>
+<l:template name="sect2" text="Sekcja %n"/>
+<l:template name="sect3" text="Sekcja %n"/>
+<l:template name="sect4" text="Sekcja %n"/>
+<l:template name="sect5" text="Sekcja %n"/>
+<l:template name="section" text="Sekcja %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatek %n, %t"/>
+<l:template name="bridgehead" text="Sekcja %n, „%tâ€"/>
+<l:template name="chapter" text="Rozdział %n, %t"/>
+<l:template name="equation" text="Równanie %n, „%tâ€"/>
+<l:template name="example" text="PrzykÅ‚ad %n, „%tâ€"/>
+<l:template name="figure" text="Rysunek %n, „%tâ€"/>
+<l:template name="part" text="Część %n, „%tâ€"/>
+<l:template name="procedure" text="Procedura %n, „%tâ€"/>
+<l:template name="productionset" text="Produkcja %n, „%tâ€"/>
+<l:template name="qandadiv" text="Pytania i odpowiedzi %n, „%tâ€"/>
+<l:template name="refsect1" text="sekcja o nazwie „%tâ€"/>
+<l:template name="refsect2" text="sekcja o nazwie „%tâ€"/>
+<l:template name="refsect3" text="sekcja o nazwie „%tâ€"/>
+<l:template name="refsection" text="sekcja o nazwie „%tâ€"/>
+<l:template name="sect1" text="Sekcja %n, „%tâ€"/>
+<l:template name="sect2" text="Sekcja %n, „%tâ€"/>
+<l:template name="sect3" text="Sekcja %n, „%tâ€"/>
+<l:template name="sect4" text="Sekcja %n, „%tâ€"/>
+<l:template name="sect5" text="Sekcja %n, „%tâ€"/>
+<l:template name="section" text="Sekcja %n, „%tâ€"/>
+<l:template name="simplesect" text="sekcja o nazwie „%tâ€"/>
+<l:template name="table" text="Tabela %n, „%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Patrz %t."/>
+<l:template name="seealso" text="Patrz też %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Odbiorcy: "/>
+<l:template name="MsgLevel" text="Poziom: "/>
+<l:template name="MsgOrig" text="Nadawca: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definicja: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="styczeń"/>
+<l:template name="February" text="luty"/>
+<l:template name="March" text="marzec"/>
+<l:template name="April" text="kwiecień"/>
+<l:template name="May" text="maj"/>
+<l:template name="June" text="czerwiec"/>
+<l:template name="July" text="lipiec"/>
+<l:template name="August" text="sierpień"/>
+<l:template name="September" text="wrzesień"/>
+<l:template name="October" text="październik"/>
+<l:template name="November" text="listopad"/>
+<l:template name="December" text="grudzień"/>
+<l:template name="Monday" text="poniedziałek"/>
+<l:template name="Tuesday" text="wtorek"/>
+<l:template name="Wednesday" text="środa"/>
+<l:template name="Thursday" text="czwartek"/>
+<l:template name="Friday" text="piÄ…tek"/>
+<l:template name="Saturday" text="sobota"/>
+<l:template name="Sunday" text="niedziela"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="sty"/>
+<l:template name="Feb" text="lut"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="kwi"/>
+<l:template name="May" text="maj"/>
+<l:template name="Jun" text="cze"/>
+<l:template name="Jul" text="lip"/>
+<l:template name="Aug" text="sie"/>
+<l:template name="Sep" text="wrz"/>
+<l:template name="Oct" text="paź"/>
+<l:template name="Nov" text="lis"/>
+<l:template name="Dec" text="gru"/>
+<l:template name="Mon" text="pon"/>
+<l:template name="Tue" text="wto"/>
+<l:template name="Wed" text="śro"/>
+<l:template name="Thu" text="czw"/>
+<l:template name="Fri" text="piÄ…"/>
+<l:template name="Sat" text="sob"/>
+<l:template name="Sun" text="nie"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0415 Polish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbole</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">Ä„</l:l>
+<l:l i="20">Ä…</l:l>
+<l:l i="30">B</l:l>
+<l:l i="30">b</l:l>
+<l:l i="40">C</l:l>
+<l:l i="40">c</l:l>
+<l:l i="50">Ć</l:l>
+<l:l i="50">ć</l:l>
+<l:l i="60">D</l:l>
+<l:l i="60">d</l:l>
+<l:l i="70">E</l:l>
+<l:l i="70">e</l:l>
+<l:l i="80">Ę</l:l>
+<l:l i="80">Ä™</l:l>
+<l:l i="90">F</l:l>
+<l:l i="90">f</l:l>
+<l:l i="100">G</l:l>
+<l:l i="100">g</l:l>
+<l:l i="110">H</l:l>
+<l:l i="110">h</l:l>
+<l:l i="120">I</l:l>
+<l:l i="120">i</l:l>
+<l:l i="130">J</l:l>
+<l:l i="130">j</l:l>
+<l:l i="140">K</l:l>
+<l:l i="140">k</l:l>
+<l:l i="150">L</l:l>
+<l:l i="150">l</l:l>
+<l:l i="160">Å</l:l>
+<l:l i="160">Å‚</l:l>
+<l:l i="170">M</l:l>
+<l:l i="170">m</l:l>
+<l:l i="180">N</l:l>
+<l:l i="180">n</l:l>
+<l:l i="190">Ń</l:l>
+<l:l i="190">Å„</l:l>
+<l:l i="200">O</l:l>
+<l:l i="200">o</l:l>
+<l:l i="210">Ó</l:l>
+<l:l i="210">ó</l:l>
+<l:l i="220">P</l:l>
+<l:l i="220">p</l:l>
+<l:l i="230">Q</l:l>
+<l:l i="230">q</l:l>
+<l:l i="240">R</l:l>
+<l:l i="240">r</l:l>
+<l:l i="250">S</l:l>
+<l:l i="250">s</l:l>
+<l:l i="260">Åš</l:l>
+<l:l i="260">Å›</l:l>
+<l:l i="270">T</l:l>
+<l:l i="270">t</l:l>
+<l:l i="280">U</l:l>
+<l:l i="280">u</l:l>
+<l:l i="290">V</l:l>
+<l:l i="290">v</l:l>
+<l:l i="300">W</l:l>
+<l:l i="300">w</l:l>
+<l:l i="310">X</l:l>
+<l:l i="310">x</l:l>
+<l:l i="320">Y</l:l>
+<l:l i="320">y</l:l>
+<l:l i="330">Z</l:l>
+<l:l i="330">z</l:l>
+<l:l i="340">Ź</l:l>
+<l:l i="340">ź</l:l>
+<l:l i="350">Å»</l:l>
+<l:l i="350">ż</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml
new file mode 100644
index 0000000..4a07359
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pt" english-language-name="Portuguese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pt.xml -->
+<!-- * -->
+<!-- * E-mail the edited pt.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumo"/>
+<l:gentext key="abstract" text="resumo"/>
+<l:gentext key="Acknowledgements" text="Agradecimentos"/>
+<l:gentext key="acknowledgements" text="agradecimentos"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="r:"/>
+<l:gentext key="Appendix" text="Apêndice"/>
+<l:gentext key="appendix" text="apêndice"/>
+<l:gentext key="Article" text="Artigo"/>
+<l:gentext key="article" text="artigo"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="bibliografia"/>
+<l:gentext key="Book" text="Livro"/>
+<l:gentext key="book" text="Livro"/>
+<l:gentext key="CAUTION" text="CUIDADO"/>
+<l:gentext key="Caution" text="Cuidado"/>
+<l:gentext key="caution" text="buidado"/>
+<l:gentext key="Chapter" text="Capítulo"/>
+<l:gentext key="chapter" text="bapítulo"/>
+<l:gentext key="Colophon" text="Ficha Técnica"/>
+<l:gentext key="colophon" text="ficha técnica"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Dedicatória"/>
+<l:gentext key="dedication" text="dedicatória"/>
+<l:gentext key="Edition" text="Edição"/>
+<l:gentext key="edition" text="edição"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Equação"/>
+<l:gentext key="equation" text="equação"/>
+<l:gentext key="Example" text="Exemplo"/>
+<l:gentext key="example" text="exemplo"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="figura"/>
+<l:gentext key="Glossary" text="Glossário"/>
+<l:gentext key="glossary" text="glossário"/>
+<l:gentext key="GlossSee" text="Ver"/>
+<l:gentext key="glosssee" text="ver"/>
+<l:gentext key="GlossSeeAlso" text="Ver Também"/>
+<l:gentext key="glossseealso" text="ver também"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Ãndice Remissivo"/>
+<l:gentext key="index" text="índice remissivo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Aviso Legal"/>
+<l:gentext key="legalnotice" text="aviso legal"/>
+<l:gentext key="MsgAud" text="Audiência"/>
+<l:gentext key="msgaud" text="audiência"/>
+<l:gentext key="MsgLevel" text="Nível"/>
+<l:gentext key="msglevel" text="nível"/>
+<l:gentext key="MsgOrig" text="Origem"/>
+<l:gentext key="msgorig" text="origem"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="parte"/>
+<l:gentext key="Preface" text="Prefácio"/>
+<l:gentext key="preface" text="prefácio"/>
+<l:gentext key="Procedure" text="Procedimento"/>
+<l:gentext key="procedure" text="procedimento"/>
+<l:gentext key="ProductionSet" text="produção"/>
+<l:gentext key="PubDate" text="Data de Publicação"/>
+<l:gentext key="pubdate" text="data de publicação"/>
+<l:gentext key="Published" text="Publicado"/>
+<l:gentext key="published" text="publicado"/>
+<l:gentext key="Publisher" text="Editor"/>
+<l:gentext key="Qandadiv" text="P &amp; R"/>
+<l:gentext key="qandadiv" text="P &amp; R"/>
+<l:gentext key="QandASet" text="Questões Frequentes"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="P:"/>
+<l:gentext key="RefEntry" text="Página"/>
+<l:gentext key="refentry" text="página"/>
+<l:gentext key="Reference" text="Referência"/>
+<l:gentext key="reference" text="referência"/>
+<l:gentext key="References" text="Referências"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="nome"/>
+<l:gentext key="RefSection" text="Secção"/>
+<l:gentext key="refsection" text="secção"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+<l:gentext key="refsynopsisdiv" text="sinopse"/>
+<l:gentext key="RevHistory" text="Historial de Revisões"/>
+<l:gentext key="revhistory" text="historial de revisões"/>
+<l:gentext key="revision" text="revisão"/>
+<l:gentext key="Revision" text="Revisão"/>
+<l:gentext key="sect1" text="Secção"/>
+<l:gentext key="sect2" text="Secção"/>
+<l:gentext key="sect3" text="Secção"/>
+<l:gentext key="sect4" text="Secção"/>
+<l:gentext key="sect5" text="Secção"/>
+<l:gentext key="section" text="secção"/>
+<l:gentext key="Section" text="Secção"/>
+<l:gentext key="see" text="ver"/>
+<l:gentext key="See" text="Ver"/>
+<l:gentext key="seealso" text="ver também"/>
+<l:gentext key="Seealso" text="Ver também"/>
+<l:gentext key="SeeAlso" text="Ver Também"/>
+<l:gentext key="set" text="conjunto"/>
+<l:gentext key="Set" text="Conjunto"/>
+<l:gentext key="setindex" text="índice de Conjuntos"/>
+<l:gentext key="SetIndex" text="Ãndice de Conjuntos"/>
+<l:gentext key="Sidebar" text="Barra Lateral"/>
+<l:gentext key="sidebar" text="barra lateral"/>
+<l:gentext key="step" text="passo"/>
+<l:gentext key="Step" text="Passo"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="tarefa"/>
+<l:gentext key="Task" text="Tarefa"/>
+<l:gentext key="tip" text="dica"/>
+<l:gentext key="TIP" text="DICA"/>
+<l:gentext key="Tip" text="Dica"/>
+<l:gentext key="Warning" text="Atenção"/>
+<l:gentext key="warning" text="Atenção"/>
+<l:gentext key="WARNING" text="ATENÇÃO"/>
+<l:gentext key="and" text="e"/>
+<l:gentext key="by" text="por"/>
+<l:gentext key="Edited" text="Editado"/>
+<l:gentext key="edited" text="Editado"/>
+<l:gentext key="Editedby" text="Editado por"/>
+<l:gentext key="editedby" text="Editado por"/>
+<l:gentext key="in" text="em"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="notas"/>
+<l:gentext key="Notes" text="Notas"/>
+<l:gentext key="Pgs" text="Páginas"/>
+<l:gentext key="pgs" text="páginas"/>
+<l:gentext key="Revisedby" text="Revisto por: "/>
+<l:gentext key="revisedby" text="Revisto por: "/>
+<l:gentext key="TableNotes" text="Notas"/>
+<l:gentext key="tablenotes" text="Notas"/>
+<l:gentext key="TableofContents" text="Ãndice"/>
+<l:gentext key="tableofcontents" text="índice"/>
+<l:gentext key="unexpectedelementname" text="Nome de elemento inesperado"/>
+<l:gentext key="unsupported" text="não suportado"/>
+<l:gentext key="xrefto" text="referência cruzada para"/>
+<l:gentext key="Authors" text="Autores"/>
+<l:gentext key="copyeditor" text="Editor"/>
+<l:gentext key="graphicdesigner" text="Designer"/>
+<l:gentext key="productioneditor" text="Produtor"/>
+<l:gentext key="technicaleditor" text="Editor Técnico"/>
+<l:gentext key="translator" text="Tradutor"/>
+<l:gentext key="listofequations" text="lista de equações"/>
+<l:gentext key="ListofEquations" text="Lista de Equações"/>
+<l:gentext key="ListofExamples" text="Lista de Exemplos"/>
+<l:gentext key="listofexamples" text="lista de exemplos"/>
+<l:gentext key="ListofFigures" text="Lista de Figuras"/>
+<l:gentext key="listoffigures" text="lista de figuras"/>
+<l:gentext key="ListofProcedures" text="Lista de Procedimentos"/>
+<l:gentext key="listofprocedures" text="lista de procedimentos"/>
+<l:gentext key="listoftables" text="lista de tabelas"/>
+<l:gentext key="ListofTables" text="Lista de Tabelas"/>
+<l:gentext key="ListofUnknown" text="Lista de Desconhecido"/>
+<l:gentext key="listofunknown" text="lista de desconhecido"/>
+<l:gentext key="nav-home" text="Início"/>
+<l:gentext key="nav-next" text="Próximo"/>
+<l:gentext key="nav-next-sibling" text="Avanço Rápido"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Recuo Rápido"/>
+<l:gentext key="nav-up" text="Subir"/>
+<l:gentext key="nav-toc" text="Ãndice"/>
+<l:gentext key="Draft" text="Rascunho"/>
+<l:gentext key="above" text="acima"/>
+<l:gentext key="below" text="abaixo"/>
+<l:gentext key="sectioncalled" text="a secção chamada"/>
+<l:gentext key="index symbols" text="Símbolos"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equação %n. %t"/>
+<l:template name="example" text="Exemplo %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimento %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="produção %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pergunta %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apêndice %n"/>
+<l:template name="bridgehead" text="Secção %n"/>
+<l:template name="chapter" text="Capítulo %n"/>
+<l:template name="equation" text="Equação %n"/>
+<l:template name="example" text="Exemplo %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimento %n"/>
+<l:template name="productionset" text="produção %n"/>
+<l:template name="qandadiv" text="P &amp; R %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Secção %n"/>
+<l:template name="sect2" text="Secção %n"/>
+<l:template name="sect3" text="Secção %n"/>
+<l:template name="sect4" text="Secção %n"/>
+<l:template name="sect5" text="Secção %n"/>
+<l:template name="section" text="Secção %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apêndice %n, %t"/>
+<l:template name="bridgehead" text="Secção %n, “%tâ€"/>
+<l:template name="chapter" text="Capítulo %n, %t"/>
+<l:template name="equation" text="Equação %n, “%tâ€"/>
+<l:template name="example" text="Exemplo %n, “%tâ€"/>
+<l:template name="figure" text="Figura %n, “%tâ€"/>
+<l:template name="part" text="Parte %n, “%tâ€"/>
+<l:template name="procedure" text="Procedimento %n, “%tâ€"/>
+<l:template name="productionset" text="produção %n, “%tâ€"/>
+<l:template name="qandadiv" text="P &amp; R %n, “%tâ€"/>
+<l:template name="refsect1" text="a secção chamada “%tâ€"/>
+<l:template name="refsect2" text="a secção chamada “%tâ€"/>
+<l:template name="refsect3" text="a secção chamada “%tâ€"/>
+<l:template name="refsection" text="a secção chamada “%tâ€"/>
+<l:template name="sect1" text="Secção %n, “%tâ€"/>
+<l:template name="sect2" text="Secção %n, “%tâ€"/>
+<l:template name="sect3" text="Secção %n, “%tâ€"/>
+<l:template name="sect4" text="Secção %n, “%tâ€"/>
+<l:template name="sect5" text="Secção %n, “%tâ€"/>
+<l:template name="section" text="Secção %n, “%tâ€"/>
+<l:template name="simplesect" text="a secção chamada “%tâ€"/>
+<l:template name="table" text="Tabela %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" e "/>
+<l:template name="seplast" text=" e "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ver %t."/>
+<l:template name="seealso" text="Ver Também %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiência: "/>
+<l:template name="MsgLevel" text="Nível: "/>
+<l:template name="MsgOrig" text="Origem: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definição: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Janeiro"/>
+<l:template name="February" text="Fevereiro"/>
+<l:template name="March" text="Março"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Maio"/>
+<l:template name="June" text="Junho"/>
+<l:template name="July" text="Julho"/>
+<l:template name="August" text="Agosto"/>
+<l:template name="September" text="Setembro"/>
+<l:template name="October" text="Outubro"/>
+<l:template name="November" text="Novembro"/>
+<l:template name="December" text="Dezembro"/>
+<l:template name="Monday" text="Segunda-Feira"/>
+<l:template name="Tuesday" text="Terça-Feira"/>
+<l:template name="Wednesday" text="Quarta-Feira"/>
+<l:template name="Thursday" text="Quinta-Feira"/>
+<l:template name="Friday" text="Sexta-Feira"/>
+<l:template name="Saturday" text="Sábado"/>
+<l:template name="Sunday" text="Domingo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Fev"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Abr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Set"/>
+<l:template name="Oct" text="Out"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dez"/>
+<l:template name="Mon" text="Seg"/>
+<l:template name="Tue" text="Ter"/>
+<l:template name="Wed" text="Qua"/>
+<l:template name="Thu" text="Qui"/>
+<l:template name="Fri" text="Sex"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0816 Portuguese (PORTUGAL)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Símbolos</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml
new file mode 100644
index 0000000..3e71821
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pt_br" english-language-name="Portuguese (Brazil)">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pt_br.xml -->
+<!-- * -->
+<!-- * E-mail the edited pt_br.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumo"/>
+<l:gentext key="abstract" text="resumo"/>
+<l:gentext key="Acknowledgements" text="Agradecimentos"/>
+<l:gentext key="acknowledgements" text="agradecimentos"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="r:"/>
+<l:gentext key="Appendix" text="Apêndice"/>
+<l:gentext key="appendix" text="apêndice"/>
+<l:gentext key="Article" text="Artigo"/>
+<l:gentext key="article" text="artigo"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="bibliografia"/>
+<l:gentext key="Book" text="Livro"/>
+<l:gentext key="book" text="livro"/>
+<l:gentext key="CAUTION" text="CUIDADO"/>
+<l:gentext key="Caution" text="Cuidado"/>
+<l:gentext key="caution" text="cuidado"/>
+<l:gentext key="Chapter" text="Capítulo"/>
+<l:gentext key="chapter" text="capítulo"/>
+<l:gentext key="Colophon" text="Considerações finais"/>
+<l:gentext key="colophon" text="considerações finais"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Dedicatória"/>
+<l:gentext key="dedication" text="dedicatória"/>
+<l:gentext key="Edition" text="Edição"/>
+<l:gentext key="edition" text="edição"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Equação"/>
+<l:gentext key="equation" text="equação"/>
+<l:gentext key="Example" text="Exemplo"/>
+<l:gentext key="example" text="exemplo"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="figura"/>
+<l:gentext key="Glossary" text="Glossário"/>
+<l:gentext key="glossary" text="glossário"/>
+<l:gentext key="GlossSee" text="Ver"/>
+<l:gentext key="glosssee" text="ver"/>
+<l:gentext key="GlossSeeAlso" text="Ver Também"/>
+<l:gentext key="glossseealso" text="ver também"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="Importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Ãndice Remissivo"/>
+<l:gentext key="index" text="índice remissivo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Nota Legal"/>
+<l:gentext key="legalnotice" text="nota legal"/>
+<l:gentext key="MsgAud" text="Audiência"/>
+<l:gentext key="msgaud" text="audiência"/>
+<l:gentext key="MsgLevel" text="Nível"/>
+<l:gentext key="msglevel" text="nível"/>
+<l:gentext key="MsgOrig" text="Origem"/>
+<l:gentext key="msgorig" text="origem"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="parte"/>
+<l:gentext key="Preface" text="Prefácio"/>
+<l:gentext key="preface" text="prefácio"/>
+<l:gentext key="Procedure" text="Procedimento"/>
+<l:gentext key="procedure" text="procedimento"/>
+<l:gentext key="ProductionSet" text="Produção"/>
+<l:gentext key="PubDate" text="Data de Publicação"/>
+<l:gentext key="pubdate" text="data de publicação"/>
+<l:gentext key="Published" text="Publicado"/>
+<l:gentext key="published" text="publicado"/>
+<l:gentext key="Publisher" text="Publicador"/>
+<l:gentext key="Qandadiv" text="P &amp; R"/>
+<l:gentext key="qandadiv" text="P &amp; R"/>
+<l:gentext key="QandASet" text="Perguntas Frequentes"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="P:"/>
+<l:gentext key="RefEntry" text="Página"/>
+<l:gentext key="refentry" text="página"/>
+<l:gentext key="Reference" text="Referência"/>
+<l:gentext key="reference" text="referência"/>
+<l:gentext key="References" text="Referências"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="nome"/>
+<l:gentext key="RefSection" text="Seção"/>
+<l:gentext key="refsection" text="seção"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+<l:gentext key="refsynopsisdiv" text="sinopse"/>
+<l:gentext key="RevHistory" text="Histórico de Revisões"/>
+<l:gentext key="revhistory" text="histórico de revisões"/>
+<l:gentext key="revision" text="revisão"/>
+<l:gentext key="Revision" text="Revisão"/>
+<l:gentext key="sect1" text="Seção"/>
+<l:gentext key="sect2" text="Seção"/>
+<l:gentext key="sect3" text="Seção"/>
+<l:gentext key="sect4" text="Seção"/>
+<l:gentext key="sect5" text="Seção"/>
+<l:gentext key="section" text="seção"/>
+<l:gentext key="Section" text="Seção"/>
+<l:gentext key="see" text="ver"/>
+<l:gentext key="See" text="Ver"/>
+<l:gentext key="seealso" text="ver também"/>
+<l:gentext key="Seealso" text="Ver também"/>
+<l:gentext key="SeeAlso" text="Ver Também"/>
+<l:gentext key="set" text="Conjunto"/>
+<l:gentext key="Set" text="Conjunto"/>
+<l:gentext key="setindex" text="Ãndice do Conjunto"/>
+<l:gentext key="SetIndex" text="Ãndice do Conjunto"/>
+<l:gentext key="Sidebar" text="Quadro Lateral"/>
+<l:gentext key="sidebar" text="quadro lateral"/>
+<l:gentext key="step" text="passo"/>
+<l:gentext key="Step" text="Passo"/>
+<l:gentext key="table" text="tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="tarefa"/>
+<l:gentext key="Task" text="Tarefa"/>
+<l:gentext key="tip" text="dica"/>
+<l:gentext key="TIP" text="DICA"/>
+<l:gentext key="Tip" text="Dica"/>
+<l:gentext key="Warning" text="Atenção"/>
+<l:gentext key="warning" text="Atenção"/>
+<l:gentext key="WARNING" text="ATENÇÃO"/>
+<l:gentext key="and" text="e"/>
+<l:gentext key="by" text="por"/>
+<l:gentext key="Edited" text="Editado"/>
+<l:gentext key="edited" text="editado"/>
+<l:gentext key="Editedby" text="Editado por"/>
+<l:gentext key="editedby" text="editado por"/>
+<l:gentext key="in" text="dentro"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="notas"/>
+<l:gentext key="Notes" text="Notas"/>
+<l:gentext key="Pgs" text="Páginas"/>
+<l:gentext key="pgs" text="páginas"/>
+<l:gentext key="Revisedby" text="Revisado por: "/>
+<l:gentext key="revisedby" text="revisado por: "/>
+<l:gentext key="TableNotes" text="Notas"/>
+<l:gentext key="tablenotes" text="notas"/>
+<l:gentext key="TableofContents" text="Ãndice"/>
+<l:gentext key="tableofcontents" text="índice"/>
+<l:gentext key="unexpectedelementname" text="Nome de elemento inesperado"/>
+<l:gentext key="unsupported" text="não suportado"/>
+<l:gentext key="xrefto" text="xref para"/>
+<l:gentext key="Authors" text="Autores"/>
+<l:gentext key="copyeditor" text="Copidesque"/>
+<l:gentext key="graphicdesigner" text="Designer Gráfico"/>
+<l:gentext key="productioneditor" text="Editor de Produção"/>
+<l:gentext key="technicaleditor" text="Editor Técnico"/>
+<l:gentext key="translator" text="Tradutor"/>
+<l:gentext key="listofequations" text="lista de equações"/>
+<l:gentext key="ListofEquations" text="Lista de Equações"/>
+<l:gentext key="ListofExamples" text="Lista de Exemplos"/>
+<l:gentext key="listofexamples" text="lista de exemplos"/>
+<l:gentext key="ListofFigures" text="Lista de Figuras"/>
+<l:gentext key="listoffigures" text="lista de figuras"/>
+<l:gentext key="ListofProcedures" text="Lista de Procedimentos"/>
+<l:gentext key="listofprocedures" text="lista de procedimentos"/>
+<l:gentext key="listoftables" text="lista de tabelas"/>
+<l:gentext key="ListofTables" text="Lista de Tabelas"/>
+<l:gentext key="ListofUnknown" text="Lista de ???"/>
+<l:gentext key="listofunknown" text="Lista de ???"/>
+<l:gentext key="nav-home" text="Principal"/>
+<l:gentext key="nav-next" text="Próxima"/>
+<l:gentext key="nav-next-sibling" text="Fim"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Início"/>
+<l:gentext key="nav-up" text="Acima"/>
+<l:gentext key="nav-toc" text="TdC"/>
+<l:gentext key="Draft" text="Rascunho"/>
+<l:gentext key="above" text="acima"/>
+<l:gentext key="below" text="abaixo"/>
+<l:gentext key="sectioncalled" text="A seção chamada"/>
+<l:gentext key="index symbols" text="Símbolos"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equação %n. %t"/>
+<l:template name="example" text="Exemplo %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimento %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produção %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t" lang="en"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s" lang="en"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apêndice %n"/>
+<l:template name="bridgehead" text="Seção %n"/>
+<l:template name="chapter" text="Capítulo %n"/>
+<l:template name="equation" text="Equação %n"/>
+<l:template name="example" text="Exemplo %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimento %n"/>
+<l:template name="productionset" text="Produção %n"/>
+<l:template name="qandadiv" text="P &amp; R %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Seção %n"/>
+<l:template name="sect2" text="Seção %n"/>
+<l:template name="sect3" text="Seção %n"/>
+<l:template name="sect4" text="Seção %n"/>
+<l:template name="sect5" text="Seção %n"/>
+<l:template name="section" text="Seção %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apêndice %n, %t"/>
+<l:template name="bridgehead" text="Seção %n, “%tâ€"/>
+<l:template name="chapter" text="Capítulo %n, %t"/>
+<l:template name="equation" text="Equação %n, “%tâ€"/>
+<l:template name="example" text="Exemplo %n, “%tâ€"/>
+<l:template name="figure" text="Figura %n, “%tâ€"/>
+<l:template name="part" text="Parte %n, “%tâ€"/>
+<l:template name="procedure" text="Procedimento %n, “%tâ€"/>
+<l:template name="productionset" text="Produção %n, “%tâ€"/>
+<l:template name="qandadiv" text="P &amp; R %n, “%tâ€"/>
+<l:template name="refsect1" text="A seção chamada “%tâ€"/>
+<l:template name="refsect2" text="A seção chamada “%tâ€"/>
+<l:template name="refsect3" text="A seção chamada “%tâ€"/>
+<l:template name="refsection" text="A seção chamada “%tâ€"/>
+<l:template name="sect1" text="Seção %n, “%tâ€"/>
+<l:template name="sect2" text="Seção %n, “%tâ€"/>
+<l:template name="sect3" text="Seção %n, “%tâ€"/>
+<l:template name="sect4" text="Seção %n, “%tâ€"/>
+<l:template name="sect5" text="Seção %n, “%tâ€"/>
+<l:template name="section" text="Seção %n, “%tâ€"/>
+<l:template name="simplesect" text="A seção chamada “%tâ€"/>
+<l:template name="table" text="Tabela %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" e "/>
+<l:template name="seplast" text=", e "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ver %t."/>
+<l:template name="seealso" text="Ver Também %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiência: "/>
+<l:template name="MsgLevel" text="Nível: "/>
+<l:template name="MsgOrig" text="Origem: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Janeiro"/>
+<l:template name="February" text="Fevereiri"/>
+<l:template name="March" text="Março"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Maio"/>
+<l:template name="June" text="Junho"/>
+<l:template name="July" text="Jullho"/>
+<l:template name="August" text="Agosto"/>
+<l:template name="September" text="Setembro"/>
+<l:template name="October" text="Outubro"/>
+<l:template name="November" text="Novembro"/>
+<l:template name="December" text="Dezembro"/>
+<l:template name="Monday" text="Segunda-feira"/>
+<l:template name="Tuesday" text="Terça-feira"/>
+<l:template name="Wednesday" text="Quarta-feira"/>
+<l:template name="Thursday" text="Quinta-feira"/>
+<l:template name="Friday" text="Sexta-feira"/>
+<l:template name="Saturday" text="Sabado"/>
+<l:template name="Sunday" text="Domingo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Fev"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Abr"/>
+<l:template name="May" text="Maio"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Set"/>
+<l:template name="Oct" text="Out"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dez"/>
+<l:template name="Mon" text="Seg"/>
+<l:template name="Tue" text="Ter"/>
+<l:template name="Wed" text="Qua"/>
+<l:template name="Thu" text="Qui"/>
+<l:template name="Fri" text="Sex"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0416 Portuguese (BRAZIL)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Símbolos</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml
new file mode 100644
index 0000000..4741ce0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml
@@ -0,0 +1,781 @@
+<?xml version="1.0"?>
+
+<reference xml:id="refentry">
+ <info>
+ <title>Common » Refentry Metadata Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: refentry.xsl 7867 2008-03-07 09:54:25Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the “refentry
+ metadata†templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is provided
+ for developers writing customization layers for the stylesheets.</para>
+
+ <note>
+
+<para>Currently, only the manpages stylesheets make use of these
+ templates. They are, however, potentially useful elsewhere.</para>
+
+ </note>
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.metadata">
+<refnamediv>
+<refname>get.refentry.metadata</refname>
+<refpurpose>Gathers metadata from a refentry and its ancestors</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.metadata"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Reference documentation for particular commands, functions,
+ etc., is sometimes viewed in isolation from its greater "context". For
+ example, users view Unix man pages as, well, individual pages, not as
+ part of a "book" of some kind. Therefore, it is sometimes necessary to
+ embed "context" information in output for each <tag>refentry</tag>.</para>
+
+
+
+<para>However, one problem is that different users mark up that
+ context information in different ways. Often (usually), the
+ context information is not actually part of the content of the
+ <tag>refentry</tag> itself, but instead part of the content of a
+ parent or ancestor element to the <tag>refentry</tag>. And
+ even then, DocBook provides a variety of elements that users might
+ potentially use to mark up the same kind of information. One user
+ might use the <tag>productnumber</tag> element to mark up version
+ information about a particular product, while another might use
+ the <tag>releaseinfo</tag> element.</para>
+
+
+
+<para>Taking all that in mind, the
+ <function>get.refentry.metadata</function> template tries to gather
+ metadata from a <tag>refentry</tag> element and its ancestor
+ elements in an intelligent and user-configurable way. The basic
+ mechanism used in the XPath expressions throughout this stylesheet
+ is to select the relevant metadata from the *info element that is
+ closest to the actual <tag>refentry</tag> – either on the
+ <tag>refentry</tag> itself, or on its nearest ancestor.</para>
+
+
+ <note>
+
+<para>The <function>get.refentry.metadata</function>
+ template is actually just sort of a "driver" template; it
+ calls other templates that do the actual data collection,
+ then returns the data as a set.</para>
+
+ </note>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing user preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a node set with the following elements. The
+ descriptions are verbatim from the <literal>man(7)</literal> man
+ page.
+
+<variablelist>
+ <varlistentry>
+ <term>title</term>
+ <listitem>
+
+<para>the title of the man page (e.g., <literal>MAN</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>section</term>
+ <listitem>
+
+<para>the section number the man page should be placed in (e.g.,
+ <literal>7</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>date</term>
+ <listitem>
+
+<para>the date of the last revision</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source</term>
+ <listitem>
+
+<para>the source of the command</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>manual</term>
+ <listitem>
+
+<para>the title of the manual (e.g., <citetitle>Linux
+ Programmer's Manual</citetitle>)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.title">
+<refnamediv>
+<refname>get.refentry.title</refname>
+<refpurpose>Gets title metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.title"&gt;
+&lt;xsl:param name="refname"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ title of the man page (e.g., <literal>MAN</literal>). This differs
+ from <tag>refname</tag> in that, if the <tag>refentry</tag> has a
+ <tag>refentrytitle</tag>, we use that as the <tag>title</tag>;
+ otherwise, we just use first <tag>refname</tag> in the first
+ <tag>refnamediv</tag> in the source.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>title</tag> node.</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.section">
+<refnamediv>
+<refname>get.refentry.section</refname>
+<refpurpose>Gets section metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.section"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="quiet" select="0"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ section number the man page should be placed in (e.g.,
+ <literal>7</literal>)". If we do not find a <tag>manvolnum</tag>
+ specified in the source, and we find that the <tag>refentry</tag> is
+ for a function, we use the section number <literal>3</literal>
+ ["Library calls (functions within program libraries)"]; otherwise, we
+ default to using <literal>1</literal> ["Executable programs or shell
+ commands"].</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>quiet</term>
+ <listitem>
+
+<para>If non-zero, no "missing" message is emitted</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a string representing a section number.</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.date">
+<refnamediv>
+<refname>get.refentry.date</refname>
+<refpurpose>Gets date metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.date"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ date of the last revision". If we cannot find a date in the source, we
+ generate one.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>date</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.source">
+<refnamediv>
+<refname>get.refentry.source</refname>
+<refpurpose>Gets source metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.source"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ source of the command", and provides the following examples:
+
+<itemizedlist>
+ <listitem>
+
+<para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+
+ </listitem>
+ <listitem>
+
+<para>For system calls, use the version of the kernel that you are
+ currently looking at: Linux 0.99.11.</para>
+
+ </listitem>
+ <listitem>
+
+<para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+
+
+<para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "source", except that <literal>solbook(5)</literal> names it
+ "software" and describes it like this:
+ <blockquote>
+
+<para>This is the name of the software product that the topic
+ discussed on the reference page belongs to. For example UNIX
+ commands are part of the <literal>SunOS x.x</literal>
+ release.</para>
+
+ </blockquote>
+ </para>
+
+
+
+<para>In practice, there are many pages that simply have a version
+ number in the "source" field. So, it looks like what we have is a
+ two-part field,
+ <replaceable>Name</replaceable> <replaceable>Version</replaceable>,
+ where:
+
+<variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+
+<para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+
+<para>version name</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ Each part is optional. If the <replaceable>Name</replaceable> is a
+ product name, then the <replaceable>Version</replaceable> is probably
+ the version of the product. Or there may be no
+ <replaceable>Name</replaceable>, in which case, if there is a
+ <replaceable>Version</replaceable>, it is probably the version of the
+ item itself, not the product it is part of. Or, if the
+ <replaceable>Name</replaceable> is an organization name, then there
+ probably will be no <replaceable>Version</replaceable>.
+ </para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>source</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.source.name">
+<refnamediv>
+<refname>get.refentry.source.name</refname>
+<refpurpose>Gets source-name metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.source.name"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>A "source name" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable> <replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "source name" data.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.version">
+<refnamediv>
+<refname>get.refentry.version</refname>
+<refpurpose>Gets version metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.version"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>A "version" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable> <replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "version" data.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.manual">
+<refnamediv>
+<refname>get.refentry.manual</refname>
+<refpurpose>Gets source metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.manual"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ title of the manual (e.g., <citetitle>Linux Programmer's
+ Manual</citetitle>)". Here are some examples from existing man pages:
+
+<itemizedlist>
+ <listitem>
+
+<para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+
+
+<para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "manual", except that <literal>solbook(5)</literal> names it
+ "sectdesc" and describes it like this:
+ <blockquote>
+
+<para>This is the section title of the reference page; for
+ example <literal>User Commands</literal>.</para>
+
+ </blockquote>
+ </para>
+
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>manual</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.metadata.prefs">
+<refnamediv>
+<refname>get.refentry.metadata.prefs</refname>
+<refpurpose>Gets user preferences for refentry metadata gathering</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.metadata.prefs"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The DocBook XSL stylesheets include several user-configurable
+ global stylesheet parameters for controlling <tag>refentry</tag>
+ metadata gathering. Those parameters are not read directly by the
+ other <tag>refentry</tag> metadata-gathering
+ templates. Instead, they are read only by the
+ <function>get.refentry.metadata.prefs</function> template,
+ which assembles them into a structure that is then passed to
+ the other <tag>refentry</tag> metadata-gathering
+ templates.</para>
+
+
+
+<para>So the, <function>get.refentry.metadata.prefs</function>
+ template is the only interface to collecting stylesheet parameters for
+ controlling <tag>refentry</tag> metadata gathering.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<para>There are no local parameters for this template; however, it
+ does rely on a number of global parameters.</para>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>manual</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.set.refentry.metadata">
+<refnamediv>
+<refname>set.refentry.metadata</refname>
+<refpurpose>Sets content of a refentry metadata item</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="set.refentry.metadata"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="contents"/&gt;
+&lt;xsl:param name="context"/&gt;
+&lt;xsl:param name="preferred"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <function>set.refentry.metadata</function> template is
+ called each time a suitable source element is found for a certain
+ metadata field.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A single *info node that contains the selected source element.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>contents</term>
+ <listitem>
+
+<para>A node containing the selected source element.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>context</term>
+ <listitem>
+
+<para>A string describing the metadata context in which the
+ <function>set.refentry.metadata</function> template was
+ called: either "date", "source", "version", or "manual".</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns formatted contents of a selected source element.</para>
+</refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl
new file mode 100644
index 0000000..5a04b60
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl
@@ -0,0 +1,1352 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:date="http://exslt.org/dates-and-times"
+ exclude-result-prefixes="doc date"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 7867 2008-03-07 09:54:25Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<doc:reference xmlns="" xml:id="refentry">
+ <info>
+ <title>Common » Refentry Metadata Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: refentry.xsl 7867 2008-03-07 09:54:25Z xmldoc $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the “refentry
+ metadata†templates in the DocBook XSL Stylesheets.</para>
+ <para>This is not intended to be user documentation. It is provided
+ for developers writing customization layers for the stylesheets.</para>
+ <note>
+ <para>Currently, only the manpages stylesheets make use of these
+ templates. They are, however, potentially useful elsewhere.</para>
+ </note>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.metadata" xmlns="">
+ <refpurpose>Gathers metadata from a refentry and its ancestors</refpurpose>
+ <refdescription id="get.refentry.metadata-desc">
+ <para>Reference documentation for particular commands, functions,
+ etc., is sometimes viewed in isolation from its greater "context". For
+ example, users view Unix man pages as, well, individual pages, not as
+ part of a "book" of some kind. Therefore, it is sometimes necessary to
+ embed "context" information in output for each <tag>refentry</tag>.</para>
+
+ <para>However, one problem is that different users mark up that
+ context information in different ways. Often (usually), the
+ context information is not actually part of the content of the
+ <tag>refentry</tag> itself, but instead part of the content of a
+ parent or ancestor element to the <tag>refentry</tag>. And
+ even then, DocBook provides a variety of elements that users might
+ potentially use to mark up the same kind of information. One user
+ might use the <tag>productnumber</tag> element to mark up version
+ information about a particular product, while another might use
+ the <tag>releaseinfo</tag> element.</para>
+
+ <para>Taking all that in mind, the
+ <function>get.refentry.metadata</function> template tries to gather
+ metadata from a <tag>refentry</tag> element and its ancestor
+ elements in an intelligent and user-configurable way. The basic
+ mechanism used in the XPath expressions throughout this stylesheet
+ is to select the relevant metadata from the *info element that is
+ closest to the actual <tag>refentry</tag>&#160;– either on the
+ <tag>refentry</tag> itself, or on its nearest ancestor.</para>
+
+ <note>
+ <para>The <function>get.refentry.metadata</function>
+ template is actually just sort of a "driver" template; it
+ calls other templates that do the actual data collection,
+ then returns the data as a set.</para>
+ </note>
+
+ </refdescription>
+ <refparameter id="get.refentry.metadata-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing user preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.metadata-returns">
+ <para>Returns a node set with the following elements. The
+ descriptions are verbatim from the <literal>man(7)</literal> man
+ page.
+ <variablelist>
+ <varlistentry>
+ <term>title</term>
+ <listitem>
+ <para>the title of the man page (e.g., <literal>MAN</literal>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>section</term>
+ <listitem>
+ <para>the section number the man page should be placed in (e.g.,
+ <literal>7</literal>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>date</term>
+ <listitem>
+ <para>the date of the last revision</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source</term>
+ <listitem>
+ <para>the source of the command</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>manual</term>
+ <listitem>
+ <para>the title of the manual (e.g., <citetitle>Linux
+ Programmer's Manual</citetitle>)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.metadata">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <title>
+ <xsl:call-template name="get.refentry.title">
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ </title>
+ <section>
+ <xsl:call-template name="get.refentry.section">
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ </section>
+ <date>
+ <xsl:call-template name="get.refentry.date">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/DatePrefs"/>
+ </xsl:call-template>
+ </date>
+ <source>
+ <xsl:call-template name="get.refentry.source">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/SourcePrefs"/>
+ </xsl:call-template>
+ </source>
+ <manual>
+ <xsl:call-template name="get.refentry.manual">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/ManualPrefs"/>
+ </xsl:call-template>
+ </manual>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<doc:template name="get.refentry.title" xmlns="">
+ <refpurpose>Gets title metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.title-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ title of the man page (e.g., <literal>MAN</literal>). This differs
+ from <tag>refname</tag> in that, if the <tag>refentry</tag> has a
+ <tag>refentrytitle</tag>, we use that as the <tag>title</tag>;
+ otherwise, we just use first <tag>refname</tag> in the first
+ <tag>refnamediv</tag> in the source.</para>
+ </refdescription>
+ <refparameter id="get.refentry.title-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.title-returns">
+ <para>Returns a <tag>title</tag> node.</para></refreturn>
+</doc:template>
+<xsl:template name="get.refentry.title">
+ <xsl:param name="refname"/>
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:copy>
+ <xsl:apply-templates select="refmeta/refentrytitle/node()"/>
+ </xsl:copy>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$refname"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.section" xmlns="">
+ <refpurpose>Gets section metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.section-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ section number the man page should be placed in (e.g.,
+ <literal>7</literal>)". If we do not find a <tag>manvolnum</tag>
+ specified in the source, and we find that the <tag>refentry</tag> is
+ for a function, we use the section number <literal>3</literal>
+ ["Library calls (functions within program libraries)"]; otherwise, we
+ default to using <literal>1</literal> ["Executable programs or shell
+ commands"].</para>
+ </refdescription>
+ <refparameter id="get.refentry.section-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>quiet</term>
+ <listitem>
+ <para>If non-zero, no "missing" message is emitted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.section-returns">
+ <para>Returns a string representing a section number.</para></refreturn>
+</doc:template>
+<xsl:template name="get.refentry.section">
+ <xsl:param name="refname"/>
+ <xsl:param name="quiet" select="0"/>
+ <xsl:choose>
+ <xsl:when test="refmeta/manvolnum">
+ <xsl:value-of select="refmeta/manvolnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$quiet = 0">
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manvol</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/manvolnum</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manvol</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/manvolnum</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test=".//funcsynopsis">
+ <xsl:if test="$quiet = 0">
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manvol</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Setting man section to 3</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:text>3</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.date" xmlns="">
+ <refpurpose>Gets date metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.date-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ date of the last revision". If we cannot find a date in the source, we
+ generate one.</para>
+ </refdescription>
+ <refparameter id="get.refentry.date-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.date-returns">
+ <para>Returns a <tag>date</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.date">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:variable name="Date">
+ <xsl:choose>
+ <!-- * if profiling is enabled for date, and the date -->
+ <!-- * profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * either profiling is not enabled for date, or the-->
+ <!-- * date profile is empty, so we need to look for date -->
+ <!-- * in *info -->
+ <xsl:choose>
+ <!-- * look for date or pubdate in *info -->
+ <xsl:when test="$info/date/node()
+ |$info/pubdate/node()">
+ <xsl:apply-templates
+ select="(($info[date])[last()]/date)[1]|
+ (($info[pubdate])[last()]/pubdate)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * found no Date or Pubdate -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($Date = '')">
+ <xsl:value-of select="$Date"/>
+ </xsl:when>
+ <!-- * We couldn't find a date, so we generate a date. -->
+ <!-- * And we make it an appropriately localized date. -->
+ <xsl:otherwise>
+ <!-- * The following block is commented out because: -->
+ <!-- * -->
+ <!-- * - having a missing date in the source doesn’t result in -->
+ <!-- * any information being missing from the generated man -->
+ <!-- * page (since we generate the needed date) -->
+ <!-- * -->
+ <!-- * - experience has shown the many users omit the date -->
+ <!-- * intentionally, because they want to be it generated -->
+ <!-- * -->
+ <!-- * - in practice it’s not really a condition that most users -->
+ <!-- * want reported to them -->
+ <!-- * -->
+ <!-- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- * <xsl:if test="$refentry.meta.get.quietly = 0"> -->
+ <!-- * <xsl:call-template name="log.message"> -->
+ <!-- * <xsl:with-param name="level">Note</xsl:with-param> -->
+ <!-- * <xsl:with-param name="source" select="$refname"/> -->
+ <!-- * <xsl:with-param name="context-desc">meta date</xsl:with-param> -->
+ <!-- * <xsl:with-param name="message"> -->
+ <!-- * <xsl:text>no date; using generated date</xsl:text> -->
+ <!-- * </xsl:with-param> -->
+ <!-- * </xsl:call-template> -->
+ <!-- * <xsl:call-template name="log.message"> -->
+ <!-- * <xsl:with-param name="level">Note</xsl:with-param> -->
+ <!-- * <xsl:with-param name="source" select="$refname"/> -->
+ <!-- * <xsl:with-param name="context-desc">meta date</xsl:with-param> -->
+ <!-- * <xsl:with-param name="message"> -->
+ <!-- * <xsl:text>see http://docbook.sf.net/el/date</xsl:text> -->
+ <!-- * </xsl:with-param> -->
+ <!-- * </xsl:call-template> -->
+ <!-- * </xsl:if> -->
+ <!-- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <xsl:call-template name="datetime.format">
+ <xsl:with-param name="date">
+ <xsl:choose>
+ <xsl:when test="function-available('date:date-time')">
+ <xsl:value-of select="date:date-time()"/>
+ </xsl:when>
+ <xsl:when test="function-available('date:dateTime')">
+ <!-- Xalan quirk -->
+ <xsl:value-of select="date:dateTime()"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="format">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime'"/>
+ <xsl:with-param name="name" select="'format'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.source" xmlns="">
+ <refpurpose>Gets source metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.source-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ source of the command", and provides the following examples:
+ <itemizedlist>
+ <listitem>
+ <para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+ </listitem>
+ <listitem>
+ <para>For system calls, use the version of the kernel that you are
+ currently looking at: Linux 0.99.11.</para>
+ </listitem>
+ <listitem>
+ <para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "source", except that <literal>solbook(5)</literal> names it
+ "software" and describes it like this:
+ <blockquote>
+ <para>This is the name of the software product that the topic
+ discussed on the reference page belongs to. For example UNIX
+ commands are part of the <literal>SunOS x.x</literal>
+ release.</para>
+ </blockquote>
+ </para>
+
+ <para>In practice, there are many pages that simply have a version
+ number in the "source" field. So, it looks like what we have is a
+ two-part field,
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>,
+ where:
+ <variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+ <para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+ <para>version name</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ Each part is optional. If the <replaceable>Name</replaceable> is a
+ product name, then the <replaceable>Version</replaceable> is probably
+ the version of the product. Or there may be no
+ <replaceable>Name</replaceable>, in which case, if there is a
+ <replaceable>Version</replaceable>, it is probably the version of the
+ item itself, not the product it is part of. Or, if the
+ <replaceable>Name</replaceable> is an organization name, then there
+ probably will be no <replaceable>Version</replaceable>.
+ </para>
+ </refdescription>
+ <refparameter id="get.refentry.source-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.source-returns">
+ <para>Returns a <tag>source</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.source">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:variable name="Name">
+ <xsl:if test="$prefs/Name/@suppress = 0">
+ <xsl:call-template name="get.refentry.source.name">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/Name"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="Version">
+ <xsl:if test="$prefs/Version/@suppress = 0">
+ <xsl:call-template name="get.refentry.version">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/Version"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * if we have a Name and/or Version, use either or both -->
+ <!-- * of those, in the form "Name Version" or just "Name" -->
+ <!-- * or just "Version" -->
+ <xsl:when test="not($Name = '') or not($Version = '')">
+ <xsl:choose>
+ <xsl:when test="not($Name = '') and not($Version = '')">
+ <xsl:copy-of select="$Name"/>
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$Name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$Version"/>
+ </xsl:when>
+ <!-- * if no Name and no Version, use fallback (if any) -->
+ <xsl:when test="not($prefs/@fallback = '')">
+ <xsl:variable name="source.fallback">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@fallback"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- * At this point, we know that we don't have properly marked-up -->
+ <!-- * source metadata, so even if we do have source fallback -->
+ <!-- * content, we still report to the user that it should be -->
+ <!-- * marked up properly instead. -->
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="report.missing.source.name">
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ <xsl:call-template name="report.missing.version">
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="not($source.fallback = '')">
+ <xsl:value-of select="$source.fallback"/>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>using</xsl:text>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="$source.fallback"/>
+ <xsl:text>" </xsl:text>
+ <xsl:text>for "source"</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * we have no Name, no Version, and no fallback content, so -->
+ <!-- * insert a fixme -->
+ <xsl:text>[FIXME: source]</xsl:text>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no fallback for source, so inserted a fixme</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * we have no Name, no Version, and no fallback given, so -->
+ <!-- * insert a fixme -->
+ <xsl:text>[FIXME: source]</xsl:text>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no source fallback given, so inserted a fixme</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.source.name" xmlns="">
+ <refpurpose>Gets source-name metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.source.name-desc">
+ <para>A "source name" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+ </refdescription>
+ <refparameter id="get.refentry.source.name-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.source.name-returns">
+ <para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "source name" data.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.source.name">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:choose>
+ <!-- * if profiling is enabled for source.name, and the -->
+ <!-- * source.name profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * either profiling for source.name is not enabled, or-->
+ <!-- * the source.name profile is empty; so we need to look -->
+ <!-- * for a name to use -->
+ <xsl:choose>
+ <xsl:when test="refmeta/refmiscinfo[@class = 'source' or @class = 'software']">
+ <xsl:apply-templates
+ select="refmeta/refmiscinfo[@class = 'source' or @class='software'][1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$info/productname">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[productname])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[productname])[last()]/productname)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/corpname">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[corpname])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[corpname])[last()]/corpname)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/corpcredit">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[corpcredit])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[corpcredit])[last()]/corpcredit)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/corpauthor">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[corpauthor])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[corpauthor])[last()]/corpauthor)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info//orgname">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[//orgname])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[//orgname])[last()]//orgname)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info//publishername">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[//publishername])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[//publishername])[last()]//publishername)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="report.missing.source.name">
+ <xsl:param name="refname"/>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no *info/productname or alternative</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/productname</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/refmiscinfo@class=source</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/refmiscinfo</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.version" xmlns="">
+ <refpurpose>Gets version metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.version-desc">
+ <para>A "version" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+ </refdescription>
+ <refparameter id="get.refentry.version-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.version-returns">
+ <para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "version" data.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.version">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:choose>
+ <!-- * if profiling is enabled for version, and the -->
+ <!-- * version profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * either profiling for source.name is not enabled, or-->
+ <!-- * the source.name profile is empty; so we need to look -->
+ <!-- * for a name to use -->
+ <xsl:choose>
+ <xsl:when test="refmeta/refmiscinfo[@class = 'version']">
+ <xsl:apply-templates
+ select="refmeta/refmiscinfo[@class = 'version'][1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$info/productnumber">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[productnumber])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[productnumber])[last()]/productnumber)[1]"/>
+ <xsl:with-param name="context">version</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/edition">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[edition])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[edition])[last()]/edition)[1]"/>
+ <xsl:with-param name="context">version</xsl:with-param>
+ <xsl:with-param name="preferred">productnumber</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/releaseinfo">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[releaseinfo])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[releaseinfo])[last()]/releaseinfo)[1]"/>
+ <xsl:with-param name="context">version</xsl:with-param>
+ <xsl:with-param name="preferred">productnumber</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="report.missing.version">
+ <xsl:param name="refname"/>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no *info/productnumber or alternative</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/productnumber</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/refmiscinfo@class=version</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/refmiscinfo</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.manual" xmlns="">
+ <refpurpose>Gets source metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.manual-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ title of the manual (e.g., <citetitle>Linux Programmer's
+ Manual</citetitle>)". Here are some examples from existing man pages:
+ <itemizedlist>
+ <listitem>
+ <para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "manual", except that <literal>solbook(5)</literal> names it
+ "sectdesc" and describes it like this:
+ <blockquote>
+ <para>This is the section title of the reference page; for
+ example <literal>User Commands</literal>.</para>
+ </blockquote>
+ </para>
+
+ </refdescription>
+ <refparameter id="get.refentry.manual-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.manual-returns">
+ <para>Returns a <tag>manual</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.manual">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:variable name="Manual">
+ <xsl:choose>
+ <!-- * if profiling is enabled for manual, and the manual -->
+ <!-- * profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="refmeta/refmiscinfo[@class = 'manual' or @class = 'sectdesc']">
+ <xsl:apply-templates
+ select="refmeta/refmiscinfo[@class = 'manual' or @class = 'sectdesc'][1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * only in the case of choosing appropriate -->
+ <!-- * "manual" content do we select the furthest -->
+ <!-- * (first) matching element instead of the -->
+ <!-- * closest (last) matching one -->
+ <xsl:choose>
+ <xsl:when test="ancestor::*/title">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="(ancestor::*[title])[1]"/>
+ <xsl:with-param
+ name="contents"
+ select="(ancestor::*[title])[1]/title"/>
+ <xsl:with-param name="context">manual</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/title">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[title])[1]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[title])[1]/title)[1]"/>
+ <xsl:with-param name="context">manual</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($Manual = '')">
+ <xsl:copy-of select="$Manual"/>
+ </xsl:when>
+ <!-- * if no Manual, use contents of specified fallback (if any) -->
+ <xsl:when test="not($prefs/@fallback = '')">
+ <xsl:variable name="manual.fallback">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@fallback"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- * At this point, we know that we don't have properly marked-up -->
+ <!-- * manual metadata, so even if we do have manual fallback -->
+ <!-- * content, we still report to the user that it should be -->
+ <!-- * marked up properly instead. -->
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="report.missing.manual">
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="not($manual.fallback = '')">
+ <xsl:value-of select="$manual.fallback"/>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>using</xsl:text>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="$manual.fallback"/>
+ <xsl:text>" </xsl:text>
+ <xsl:text>for "manual"</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * we have nothing appropriate to use for manual, and no fallback -->
+ <!-- * content, so report insert a fixme -->
+ <xsl:text>[FIXME: manual]</xsl:text>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no fallback for manual, so inserted a fixme</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * we have nothing appropriate to use for manual, and no fallback -->
+ <!-- * given, so insert a fixme -->
+ <xsl:text>[FIXME: manual]</xsl:text>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no manual fallback given, so inserted a fixme</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="report.missing.manual">
+ <xsl:param name="refname"/>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no titled ancestor of refentry</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/refmiscinfo@class=manual</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/refmiscinfo</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+<!-- ====================================================================== -->
+<doc:template name="get.refentry.metadata.prefs" xmlns="">
+ <refpurpose>Gets user preferences for refentry metadata gathering</refpurpose>
+ <refdescription id="get.refentry.metadata.prefs-desc">
+ <para>The DocBook XSL stylesheets include several user-configurable
+ global stylesheet parameters for controlling <tag>refentry</tag>
+ metadata gathering. Those parameters are not read directly by the
+ other <tag>refentry</tag> metadata-gathering
+ templates. Instead, they are read only by the
+ <function>get.refentry.metadata.prefs</function> template,
+ which assembles them into a structure that is then passed to
+ the other <tag>refentry</tag> metadata-gathering
+ templates.</para>
+
+ <para>So the, <function>get.refentry.metadata.prefs</function>
+ template is the only interface to collecting stylesheet parameters for
+ controlling <tag>refentry</tag> metadata gathering.</para>
+ </refdescription>
+ <refparameter id="get.refentry.metadata.prefs-params">
+ <para>There are no local parameters for this template; however, it
+ does rely on a number of global parameters.</para>
+ </refparameter>
+ <refreturn id="get.refentry.metadata.prefs-returns">
+ <para>Returns a <tag>manual</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.metadata.prefs">
+ <DatePrefs>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.date.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.date.profile.enabled"/>
+ </xsl:attribute>
+ </DatePrefs>
+ <SourcePrefs>
+ <xsl:attribute name="fallback">
+ <xsl:value-of select="$refentry.source.fallback.profile"/>
+ </xsl:attribute>
+ <Name>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.source.name.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.source.name.profile.enabled"/>
+ </xsl:attribute>
+ <xsl:attribute name="suppress">
+ <xsl:value-of select="$refentry.source.name.suppress"/>
+ </xsl:attribute>
+ </Name>
+ <Version>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.version.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.version.profile.enabled"/>
+ </xsl:attribute>
+ <xsl:attribute name="suppress">
+ <xsl:value-of select="$refentry.version.suppress"/>
+ </xsl:attribute>
+ </Version>
+ </SourcePrefs>
+ <ManualPrefs>
+ <xsl:attribute name="fallback">
+ <xsl:value-of select="$refentry.manual.fallback.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.manual.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.manual.profile.enabled"/>
+ </xsl:attribute>
+ </ManualPrefs>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<doc:template name="set.refentry.metadata" xmlns="">
+ <refpurpose>Sets content of a refentry metadata item</refpurpose>
+ <refdescription id="set.refentry.metadata-desc">
+ <para>The <function>set.refentry.metadata</function> template is
+ called each time a suitable source element is found for a certain
+ metadata field.</para>
+ </refdescription>
+ <refparameter id="set.refentry.metadata-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A single *info node that contains the selected source element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>contents</term>
+ <listitem>
+ <para>A node containing the selected source element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>context</term>
+ <listitem>
+ <para>A string describing the metadata context in which the
+ <function>set.refentry.metadata</function> template was
+ called: either "date", "source", "version", or "manual".</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="set.refentry.metadata-returns">
+ <para>Returns formatted contents of a selected source element.</para></refreturn>
+</doc:template>
+<xsl:template name="set.refentry.metadata">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="contents"/>
+ <xsl:param name="context"/>
+ <xsl:param name="preferred"/>
+ <!-- * <xsl:if test="not($preferred = '')"> -->
+ <!-- * <xsl:if test="$refentry.meta.get.quietly = 0"> -->
+ <!-- * <xsl:call-template name="log.message"> -->
+ <!-- * <xsl:with-param name="level">Note</xsl:with-param> -->
+ <!-- * <xsl:with-param name="source" select="$refname"/> -->
+ <!-- * <xsl:with-param name="context-desc" select="concat('meta ', $context)"/> -->
+ <!-- * <xsl:with-param name="message" select="concat('No ', $preferred)"/> -->
+ <!-- * </xsl:call-template> -->
+ <!-- * <xsl:call-template name="log.message"> -->
+ <!-- * <xsl:with-param name="level">Note</xsl:with-param> -->
+ <!-- * <xsl:with-param name="source" select="$refname"/> -->
+ <!-- * <xsl:with-param name="context-desc" select="concat('meta ', $context)"/> -->
+ <!-- * <xsl:with-param name="message"> -->
+ <!-- * <xsl:text>no refentry/refmeta/refmiscinfo@class=</xsl:text> -->
+ <!-- * <xsl:value-of select="$context"/> -->
+ <!-- * </xsl:with-param> -->
+ <!-- * </xsl:call-template> -->
+ <!-- * <xsl:call-template name="log.message"> -->
+ <!-- * <xsl:with-param name="level">Note</xsl:with-param> -->
+ <!-- * <xsl:with-param name="source" select="$refname"/> -->
+ <!-- * <xsl:with-param name="context-desc" select="concat('meta ', $context)"/> -->
+ <!-- * <xsl:with-param name="message" select="concat('Using ', local-name($contents))"/> -->
+ <!-- * </xsl:call-template> -->
+ <!-- * </xsl:if> -->
+ <!-- * </xsl:if> -->
+ <xsl:value-of select="$contents"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml
new file mode 100644
index 0000000..4926311
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ro" english-language-name="Romanian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ro.xml -->
+<!-- * -->
+<!-- * E-mail the edited ro.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Rezumat"/>
+<l:gentext key="abstract" text="Rezumat"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="R:"/>
+<l:gentext key="Appendix" text="Anexa"/>
+<l:gentext key="appendix" text="anexa"/>
+<l:gentext key="Article" text="Articol"/>
+<l:gentext key="article" text="Articol"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografie"/>
+<l:gentext key="bibliography" text="Bibliografie"/>
+<l:gentext key="Book" text="Carte"/>
+<l:gentext key="book" text="Carte"/>
+<l:gentext key="CAUTION" text="ATENÈšIE"/>
+<l:gentext key="Caution" text="Atenție"/>
+<l:gentext key="caution" text="Atenție"/>
+<l:gentext key="Chapter" text="Cap."/>
+<l:gentext key="chapter" text="cap."/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedicație"/>
+<l:gentext key="dedication" text="Dedicație"/>
+<l:gentext key="Edition" text="Ediție"/>
+<l:gentext key="edition" text="Ediție"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="ecuația"/>
+<l:gentext key="equation" text="ecuația"/>
+<l:gentext key="Example" text="Exemplu"/>
+<l:gentext key="example" text="Exemplu"/>
+<l:gentext key="Figure" text="Fig."/>
+<l:gentext key="figure" text="Fig."/>
+<l:gentext key="Glossary" text="Glosar"/>
+<l:gentext key="glossary" text="Glosar"/>
+<l:gentext key="GlossSee" text="Vezi"/>
+<l:gentext key="glosssee" text="Vezi"/>
+<l:gentext key="GlossSeeAlso" text="Vezi și"/>
+<l:gentext key="glossseealso" text="Vezi și"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="Important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text=""/>
+<l:gentext key="legalnotice" text=""/>
+<l:gentext key="MsgAud" text=""/>
+<l:gentext key="msgaud" text=""/>
+<l:gentext key="MsgLevel" text="Nivel"/>
+<l:gentext key="msglevel" text="Nivel"/>
+<l:gentext key="MsgOrig" text="Origine"/>
+<l:gentext key="msgorig" text="Origine"/>
+<l:gentext key="NOTE" text="NOTÄ‚"/>
+<l:gentext key="Note" text="Notă"/>
+<l:gentext key="note" text="Notă"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="Parte"/>
+<l:gentext key="Preface" text="Prefață"/>
+<l:gentext key="preface" text="Prefață"/>
+<l:gentext key="Procedure" text="Procedură"/>
+<l:gentext key="procedure" text="Procedură"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Publicat"/>
+<l:gentext key="published" text="Publicat"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Întrebări și răspunsuri"/>
+<l:gentext key="qandadiv" text="întrebări și răspunsuri"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ÃŽ:"/>
+<l:gentext key="question" text="î:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referință"/>
+<l:gentext key="reference" text="Referință"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nume"/>
+<l:gentext key="refname" text="Nume"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Rezumat"/>
+<l:gentext key="refsynopsisdiv" text="Rezumat"/>
+<l:gentext key="RevHistory" text="Istoricul versiunilor"/>
+<l:gentext key="revhistory" text="Istoricul versiunilor"/>
+<l:gentext key="revision" text="Versiune"/>
+<l:gentext key="Revision" text="Versiune"/>
+<l:gentext key="sect1" text="Secțiune"/>
+<l:gentext key="sect2" text="Secțiune"/>
+<l:gentext key="sect3" text="Secțiune"/>
+<l:gentext key="sect4" text="Secțiune"/>
+<l:gentext key="sect5" text="Secțiune"/>
+<l:gentext key="section" text="sec."/>
+<l:gentext key="Section" text="Secțiune"/>
+<l:gentext key="see" text="Vezi"/>
+<l:gentext key="See" text="Vezi"/>
+<l:gentext key="seealso" text="Vezi și"/>
+<l:gentext key="Seealso" text="Vezi și"/>
+<l:gentext key="SeeAlso" text="Vezi și"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Index"/>
+<l:gentext key="SetIndex" text="Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="operațiune"/>
+<l:gentext key="Step" text="Operație"/>
+<l:gentext key="table" text="Tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Indicație"/>
+<l:gentext key="TIP" text="INDICAÈšIE"/>
+<l:gentext key="Tip" text="Indicație"/>
+<l:gentext key="Warning" text="Avertisment"/>
+<l:gentext key="warning" text="Avertisment"/>
+<l:gentext key="WARNING" text="AVERTISMENT"/>
+<l:gentext key="and" text="și"/>
+<l:gentext key="by" text="de"/>
+<l:gentext key="Edited" text="Publicat"/>
+<l:gentext key="edited" text="Publicat"/>
+<l:gentext key="Editedby" text="Publicat de"/>
+<l:gentext key="editedby" text="Publicat de"/>
+<l:gentext key="in" text="în"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Note"/>
+<l:gentext key="Notes" text="Note"/>
+<l:gentext key="Pgs" text="Pagini"/>
+<l:gentext key="pgs" text="Pagini"/>
+<l:gentext key="Revisedby" text="Revised by: "/>
+<l:gentext key="revisedby" text="Revised by: "/>
+<l:gentext key="TableNotes" text="Remarci"/>
+<l:gentext key="tablenotes" text="Remarci"/>
+<l:gentext key="TableofContents" text="Cuprins"/>
+<l:gentext key="tableofcontents" text="Cuprins"/>
+<l:gentext key="unexpectedelementname" text="Nume de element neașteptat"/>
+<l:gentext key="unsupported" text="nerecunoscut de sisitem"/>
+<l:gentext key="xrefto" text="referință către"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Listă de ecuații"/>
+<l:gentext key="ListofEquations" text="Listă de ecuații"/>
+<l:gentext key="ListofExamples" text="Listă de exemple"/>
+<l:gentext key="listofexamples" text="Listă de exemple"/>
+<l:gentext key="ListofFigures" text="Listă de figuri"/>
+<l:gentext key="listoffigures" text="Listă de figuri"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Listă de tabele"/>
+<l:gentext key="ListofTables" text="Listă de tabele"/>
+<l:gentext key="ListofUnknown" text="Listă de necunoscute"/>
+<l:gentext key="listofunknown" text="Listă de necunoscute"/>
+<l:gentext key="nav-home" text="Acasă"/>
+<l:gentext key="nav-next" text="ÃŽnainte"/>
+<l:gentext key="nav-next-sibling" text="Repede ïnainte"/>
+<l:gentext key="nav-prev" text="ÃŽnapoi"/>
+<l:gentext key="nav-prev-sibling" text="Repede înapoi"/>
+<l:gentext key="nav-up" text="Sus"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Ciornă"/>
+<l:gentext key="above" text="deasupra"/>
+<l:gentext key="below" text="sub"/>
+<l:gentext key="sectioncalled" text="secțiunea numită"/>
+<l:gentext key="index symbols" text="Simboluri"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aăâbcdefghiîjklmnopqrsștșuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="AĂÂBCDEFGHIÎJKLMNOPQRSȘTȚUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="«"/>
+<l:dingbat key="nestedendquote" text="»"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Anexa %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Cap. %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ecuația %n. %t"/>
+<l:template name="example" text="Exemplu %n. %t"/>
+<l:template name="figure" text="Fig. %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedură %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Anexa %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Cap. %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Î: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Î: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="„%tâ€"/>
+<l:template name="refsection" text="„%tâ€"/>
+<l:template name="refsect1" text="„%tâ€"/>
+<l:template name="refsect2" text="„%tâ€"/>
+<l:template name="refsect3" text="„%tâ€"/>
+<l:template name="sect1" text="„%tâ€"/>
+<l:template name="sect2" text="„%tâ€"/>
+<l:template name="sect3" text="„%tâ€"/>
+<l:template name="sect4" text="„%tâ€"/>
+<l:template name="sect5" text="„%tâ€"/>
+<l:template name="section" text="„%tâ€"/>
+<l:template name="simplesect" text="„%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Anexa %n"/>
+<l:template name="bridgehead" text="Secțiune %n"/>
+<l:template name="chapter" text="Cap. %n"/>
+<l:template name="equation" text="ecuația %n"/>
+<l:template name="example" text="Exemplu %n"/>
+<l:template name="figure" text="Fig. %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedură %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Întrebări și răspunsuri %n"/>
+<l:template name="qandaentry" text="Î: %n"/>
+<l:template name="question" text="Î: %n"/>
+<l:template name="sect1" text="Secțiune %n"/>
+<l:template name="sect2" text="Secțiune %n"/>
+<l:template name="sect3" text="Secțiune %n"/>
+<l:template name="sect4" text="Secțiune %n"/>
+<l:template name="sect5" text="Secțiune %n"/>
+<l:template name="section" text="Secțiune %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Anexa %n, %t"/>
+<l:template name="bridgehead" text="SecÈ›iune %n, „%tâ€"/>
+<l:template name="chapter" text="Cap. %n, %t"/>
+<l:template name="equation" text="ecuaÈ›ia %n, „%tâ€"/>
+<l:template name="example" text="Exemplu %n, „%tâ€"/>
+<l:template name="figure" text="Fig. %n, „%tâ€"/>
+<l:template name="part" text="Parte %n, „%tâ€"/>
+<l:template name="procedure" text="Procedură %n, „%tâ€"/>
+<l:template name="productionset" text="Production %n, „%tâ€"/>
+<l:template name="qandadiv" text="ÃŽntrebări È™i răspunsuri %n, „%tâ€"/>
+<l:template name="refsect1" text="secÈ›iunea numită „%tâ€"/>
+<l:template name="refsect2" text="secÈ›iunea numită „%tâ€"/>
+<l:template name="refsect3" text="secÈ›iunea numită „%tâ€"/>
+<l:template name="refsection" text="secÈ›iunea numită „%tâ€"/>
+<l:template name="sect1" text="SecÈ›iune %n, „%tâ€"/>
+<l:template name="sect2" text="SecÈ›iune %n, „%tâ€"/>
+<l:template name="sect3" text="SecÈ›iune %n, „%tâ€"/>
+<l:template name="sect4" text="SecÈ›iune %n, „%tâ€"/>
+<l:template name="sect5" text="SecÈ›iune %n, „%tâ€"/>
+<l:template name="section" text="SecÈ›iune %n, „%tâ€"/>
+<l:template name="simplesect" text="secÈ›iunea numită „%tâ€"/>
+<l:template name="table" text="Tabel %n, „%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" și "/>
+<l:template name="seplast" text=", și "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vezi %t."/>
+<l:template name="seealso" text="Vezi și %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text=": "/>
+<l:template name="MsgLevel" text="Nivel: "/>
+<l:template name="MsgOrig" text="Origine: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0418 Romanian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml
new file mode 100644
index 0000000..67d2c9a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml
@@ -0,0 +1,726 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ru" english-language-name="Russian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ru.xml -->
+<!-- * -->
+<!-- * E-mail the edited ru.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ÐннотациÑ"/>
+<l:gentext key="abstract" text="аннотациÑ"/>
+<l:gentext key="Acknowledgements" text="БлагодарноÑÑ‚ÑŒ"/>
+<l:gentext key="acknowledgements" text="благодарноÑÑ‚ÑŒ"/>
+<l:gentext key="Answer" text="Ответ:"/>
+<l:gentext key="answer" text="ответ:"/>
+<l:gentext key="Appendix" text="Приложение"/>
+<l:gentext key="appendix" text="приложение"/>
+<l:gentext key="Article" text="СтатьÑ"/>
+<l:gentext key="article" text="ÑтатьÑ"/>
+<l:gentext key="Author" text="Ðвтор"/>
+<l:gentext key="Bibliography" text="БиблиографиÑ"/>
+<l:gentext key="bibliography" text="библиографиÑ"/>
+<l:gentext key="Book" text="Книга"/>
+<l:gentext key="book" text="книга"/>
+<l:gentext key="CAUTION" text="Ð’ÐИМÐÐИЕ"/>
+<l:gentext key="Caution" text="Внимание"/>
+<l:gentext key="caution" text="внимание"/>
+<l:gentext key="Chapter" text="Глава"/>
+<l:gentext key="chapter" text="глава"/>
+<l:gentext key="Colophon" text="Издание"/>
+<l:gentext key="colophon" text="издание"/>
+<l:gentext key="Copyright" text="ÐвторÑкие права"/>
+<l:gentext key="copyright" text="авторÑкие права"/>
+<l:gentext key="Dedication" text="ПоÑвÑщаетÑÑ"/>
+<l:gentext key="dedication" text="поÑвÑщаетÑÑ"/>
+<l:gentext key="Edition" text="РедакциÑ"/>
+<l:gentext key="edition" text="редакциÑ"/>
+<l:gentext key="Editor" text="Редактор"/>
+<l:gentext key="Equation" text="Формула"/>
+<l:gentext key="equation" text="формула"/>
+<l:gentext key="Example" text="Пример"/>
+<l:gentext key="example" text="пример"/>
+<l:gentext key="Figure" text="РиÑунок"/>
+<l:gentext key="figure" text="риÑунок"/>
+<l:gentext key="Glossary" text="ГлоÑÑарий"/>
+<l:gentext key="glossary" text="глоÑÑарий"/>
+<l:gentext key="GlossSee" text="См."/>
+<l:gentext key="glosssee" text="Ñм."/>
+<l:gentext key="GlossSeeAlso" text="См. также"/>
+<l:gentext key="glossseealso" text="Ñм. также"/>
+<l:gentext key="IMPORTANT" text="Ð’ÐЖÐО"/>
+<l:gentext key="important" text="важно"/>
+<l:gentext key="Important" text="Важно"/>
+<l:gentext key="Index" text="Предметный указатель"/>
+<l:gentext key="index" text="Предметный указатель"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ЮридичеÑкое уведомление"/>
+<l:gentext key="legalnotice" text="юридичеÑкое уведомление"/>
+<l:gentext key="MsgAud" text="ÐудиториÑ"/>
+<l:gentext key="msgaud" text="аудиториÑ"/>
+<l:gentext key="MsgLevel" text="Уровень"/>
+<l:gentext key="msglevel" text="уровень"/>
+<l:gentext key="MsgOrig" text="ИÑточник"/>
+<l:gentext key="msgorig" text="иÑточник"/>
+<l:gentext key="NOTE" text="ПРИМЕЧÐÐИЕ"/>
+<l:gentext key="Note" text="Примечание"/>
+<l:gentext key="note" text="примечание"/>
+<l:gentext key="Part" text="ЧаÑÑ‚ÑŒ"/>
+<l:gentext key="part" text="чаÑÑ‚ÑŒ"/>
+<l:gentext key="Preface" text="ПредиÑловие"/>
+<l:gentext key="preface" text="предиÑловие"/>
+<l:gentext key="Procedure" text="Процедура"/>
+<l:gentext key="procedure" text="процедура"/>
+<l:gentext key="ProductionSet" text="ПроизводÑтво"/>
+<l:gentext key="PubDate" text="Дата публикации"/>
+<l:gentext key="pubdate" text="дата публикации"/>
+<l:gentext key="Published" text="Опубликовано"/>
+<l:gentext key="published" text="опубликовано"/>
+<l:gentext key="Publisher" text="Издатель"/>
+<l:gentext key="Qandadiv" text="ВопроÑÑ‹ и ответы"/>
+<l:gentext key="qandadiv" text="вопроÑÑ‹ и ответы"/>
+<l:gentext key="QandASet" text="ЧаÑто задаваемые вопроÑÑ‹"/>
+<l:gentext key="Question" text="ВопроÑ:"/>
+<l:gentext key="question" text="вопроÑ:"/>
+<l:gentext key="RefEntry" text="Страница"/>
+<l:gentext key="refentry" text="Ñтраница"/>
+<l:gentext key="Reference" text="СÑылка"/>
+<l:gentext key="reference" text="ÑÑылка"/>
+<l:gentext key="References" text="СÑылки"/>
+<l:gentext key="RefName" text="ИмÑ"/>
+<l:gentext key="refname" text="имÑ"/>
+<l:gentext key="RefSection" text="Раздел"/>
+<l:gentext key="refsection" text="раздел"/>
+<l:gentext key="RefSynopsisDiv" text="СинопÑиÑ"/>
+<l:gentext key="refsynopsisdiv" text="ÑинопÑиÑ"/>
+<l:gentext key="RevHistory" text="ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¸Ð·Ð´Ð°Ð½Ð¸Ñ"/>
+<l:gentext key="revhistory" text="иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¸Ð·Ð´Ð°Ð½Ð¸Ñ"/>
+<l:gentext key="revision" text="издание"/>
+<l:gentext key="Revision" text="Издание"/>
+<l:gentext key="sect1" text="Раздел"/>
+<l:gentext key="sect2" text="Раздел"/>
+<l:gentext key="sect3" text="Раздел"/>
+<l:gentext key="sect4" text="Раздел"/>
+<l:gentext key="sect5" text="Раздел"/>
+<l:gentext key="section" text="раздел"/>
+<l:gentext key="Section" text="Раздел"/>
+<l:gentext key="see" text="Ñм."/>
+<l:gentext key="See" text="См."/>
+<l:gentext key="seealso" text="Ñм. также"/>
+<l:gentext key="Seealso" text="См. также"/>
+<l:gentext key="SeeAlso" text="См. также"/>
+<l:gentext key="set" text="подборка"/>
+<l:gentext key="Set" text="Подборка"/>
+<l:gentext key="setindex" text="Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ð´Ð±Ð¾Ñ€ÐºÐ¸"/>
+<l:gentext key="SetIndex" text="Ð˜Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ð´Ð±Ð¾Ñ€ÐºÐ¸"/>
+<l:gentext key="Sidebar" text="Боковое поле"/>
+<l:gentext key="sidebar" text="боковое поле"/>
+<l:gentext key="step" text="шаг"/>
+<l:gentext key="Step" text="Шаг"/>
+<l:gentext key="table" text="таблица"/>
+<l:gentext key="Table" text="Таблица"/>
+<l:gentext key="task" text="задача"/>
+<l:gentext key="Task" text="Задача"/>
+<l:gentext key="tip" text="ПодÑказка"/>
+<l:gentext key="TIP" text="ПОДСКÐЗКÐ"/>
+<l:gentext key="Tip" text="ПодÑказка"/>
+<l:gentext key="Warning" text="Предупреждение"/>
+<l:gentext key="warning" text="предупреждение"/>
+<l:gentext key="WARNING" text="ПРЕДУПРЕЖДЕÐИЕ"/>
+<l:gentext key="and" text=""/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="под редакцией"/>
+<l:gentext key="edited" text="Под редакцией"/>
+<l:gentext key="Editedby" text="Под редакцией"/>
+<l:gentext key="editedby" text="под редакцией"/>
+<l:gentext key="in" text="в"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="примечаниÑ"/>
+<l:gentext key="Notes" text="ПримечаниÑ"/>
+<l:gentext key="Pgs" text="ÑÑ‚Ñ€."/>
+<l:gentext key="pgs" text="Стр."/>
+<l:gentext key="Revisedby" text="Проверено: "/>
+<l:gentext key="revisedby" text="проверено: "/>
+<l:gentext key="TableNotes" text="ПримечаниÑ"/>
+<l:gentext key="tablenotes" text="примечаниÑ"/>
+<l:gentext key="TableofContents" text="Содержание"/>
+<l:gentext key="tableofcontents" text="Ñодержание"/>
+<l:gentext key="unexpectedelementname" text="unexpected element name"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Ðвторы"/>
+<l:gentext key="copyeditor" text="Редактор копии"/>
+<l:gentext key="graphicdesigner" text="ГрафичеÑкий дизайн"/>
+<l:gentext key="productioneditor" text="Главный редактор"/>
+<l:gentext key="technicaleditor" text="ТехничеÑкий редактор"/>
+<l:gentext key="translator" text="Перевод"/>
+<l:gentext key="listofequations" text="ÑпиÑок выражений"/>
+<l:gentext key="ListofEquations" text="СпиÑок выражений"/>
+<l:gentext key="ListofExamples" text="СпиÑок примеров"/>
+<l:gentext key="listofexamples" text="ÑпиÑок примеров"/>
+<l:gentext key="ListofFigures" text="СпиÑок иллюÑтраций"/>
+<l:gentext key="listoffigures" text="ÑпиÑок иллюÑтраций"/>
+<l:gentext key="ListofProcedures" text="СпиÑок процедур"/>
+<l:gentext key="listofprocedures" text="ÑпиÑок процедур"/>
+<l:gentext key="listoftables" text="ÑпиÑок таблиц"/>
+<l:gentext key="ListofTables" text="СпиÑок таблиц"/>
+<l:gentext key="ListofUnknown" text="СпиÑок других"/>
+<l:gentext key="listofunknown" text="ÑпиÑок других"/>
+<l:gentext key="nav-home" text="Ðачало"/>
+<l:gentext key="nav-next" text="След."/>
+<l:gentext key="nav-next-sibling" text="След. подраздел"/>
+<l:gentext key="nav-prev" text="Пред."/>
+<l:gentext key="nav-prev-sibling" text="Пред. подраздел"/>
+<l:gentext key="nav-up" text="Ðаверх"/>
+<l:gentext key="nav-toc" text="Содержание"/>
+<l:gentext key="Draft" text="Черновик"/>
+<l:gentext key="above" text="выше"/>
+<l:gentext key="below" text="ниже"/>
+<l:gentext key="sectioncalled" text="ÑекциÑ"/>
+<l:gentext key="index symbols" text="Символы"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="абвгдеёжзийклмнопрÑтуфхцчшщъыьÑÑŽÑ"/>
+<l:gentext key="uppercase.alpha" text="ÐБВГДЕÐЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬЭЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="„"/>
+<l:dingbat key="nestedendquote" text="“"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Формула %n. %t"/>
+<l:template name="example" text="Пример %n. %t"/>
+<l:template name="figure" text="РиÑунок %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ЧаÑÑ‚ÑŒ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Процедура %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ПроизводÑтво %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Таблица %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="part" text="ЧаÑть %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Ответ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ВопроÑ: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ВопроÑ: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="«%t»"/>
+<l:template name="refsection" text="«%t»"/>
+<l:template name="refsect1" text="«%t»"/>
+<l:template name="refsect2" text="«%t»"/>
+<l:template name="refsect3" text="«%t»"/>
+<l:template name="sect1" text="«%t»"/>
+<l:template name="sect2" text="«%t»"/>
+<l:template name="sect3" text="«%t»"/>
+<l:template name="sect4" text="«%t»"/>
+<l:template name="sect5" text="«%t»"/>
+<l:template name="section" text="«%t»"/>
+<l:template name="simplesect" text="«%t»"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Ответ: %n"/>
+<l:template name="appendix" text="Приложение %n"/>
+<l:template name="bridgehead" text="Раздел %n"/>
+<l:template name="chapter" text="Глава %n"/>
+<l:template name="equation" text="Формула %n"/>
+<l:template name="example" text="Пример %n"/>
+<l:template name="figure" text="РиÑунок %n"/>
+<l:template name="part" text="ЧаÑть %n"/>
+<l:template name="procedure" text="Процедура %n"/>
+<l:template name="productionset" text="ПроизводÑтво %n"/>
+<l:template name="qandadiv" text="ВопроÑÑ‹ и ответы %n"/>
+<l:template name="qandaentry" text="ВопроÑ: %n"/>
+<l:template name="question" text="ВопроÑ: %n"/>
+<l:template name="sect1" text="Раздел %n"/>
+<l:template name="sect2" text="Раздел %n"/>
+<l:template name="sect3" text="Раздел %n"/>
+<l:template name="sect4" text="Раздел %n"/>
+<l:template name="sect5" text="Раздел %n"/>
+<l:template name="section" text="Раздел %n"/>
+<l:template name="table" text="Таблица %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Приложение %n, %t"/>
+<l:template name="bridgehead" text="Раздел %n, «%t»"/>
+<l:template name="chapter" text="Глава %n, %t"/>
+<l:template name="equation" text="Формула %n, «%t»"/>
+<l:template name="example" text="Пример %n, «%t»"/>
+<l:template name="figure" text="РиÑунок %n, «%t»"/>
+<l:template name="part" text="ЧаÑть %n, «%t»"/>
+<l:template name="procedure" text="Процедура %n, «%t»"/>
+<l:template name="productionset" text="ПроизводÑтво %n, «%t»"/>
+<l:template name="qandadiv" text="ВопроÑÑ‹ и ответы %n, «%t»"/>
+<l:template name="refsect1" text="ÑÐµÐºÑ†Ð¸Ñ Â«%t»"/>
+<l:template name="refsect2" text="ÑÐµÐºÑ†Ð¸Ñ Â«%t»"/>
+<l:template name="refsect3" text="ÑÐµÐºÑ†Ð¸Ñ Â«%t»"/>
+<l:template name="refsection" text="ÑÐµÐºÑ†Ð¸Ñ Â«%t»"/>
+<l:template name="sect1" text="Раздел %n, «%t»"/>
+<l:template name="sect2" text="Раздел %n, «%t»"/>
+<l:template name="sect3" text="Раздел %n, «%t»"/>
+<l:template name="sect4" text="Раздел %n, «%t»"/>
+<l:template name="sect5" text="Раздел %n, «%t»"/>
+<l:template name="section" text="Раздел %n, «%t»"/>
+<l:template name="simplesect" text="ÑÐµÐºÑ†Ð¸Ñ Â«%t»"/>
+<l:template name="table" text="Таблица %n, «%t»"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" "/>
+<l:template name="seplast" text=", "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="См. %t."/>
+<l:template name="seealso" text="См. также %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ÐудиториÑ: "/>
+<l:template name="MsgLevel" text="Уровень: "/>
+<l:template name="MsgOrig" text="ИÑточник: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Определение: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ÑнварÑ"/>
+<l:template name="February" text="февралÑ"/>
+<l:template name="March" text="марта"/>
+<l:template name="April" text="апрелÑ"/>
+<l:template name="May" text="маÑ"/>
+<l:template name="June" text="июнÑ"/>
+<l:template name="July" text="июлÑ"/>
+<l:template name="August" text="авгуÑта"/>
+<l:template name="September" text="ÑентÑбрÑ"/>
+<l:template name="October" text="октÑбрÑ"/>
+<l:template name="November" text="ноÑбрÑ"/>
+<l:template name="December" text="декабрÑ"/>
+<l:template name="Monday" text="понедельник"/>
+<l:template name="Tuesday" text="вторник"/>
+<l:template name="Wednesday" text="Ñреда"/>
+<l:template name="Thursday" text="четверг"/>
+<l:template name="Friday" text="пÑтница"/>
+<l:template name="Saturday" text="Ñуббота"/>
+<l:template name="Sunday" text="воÑкреÑенье"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Янв"/>
+<l:template name="Feb" text="Фев"/>
+<l:template name="Mar" text="Мар"/>
+<l:template name="Apr" text="Ðпр"/>
+<l:template name="May" text="Май"/>
+<l:template name="Jun" text="Июн"/>
+<l:template name="Jul" text="Июл"/>
+<l:template name="Aug" text="Ðвг"/>
+<l:template name="Sep" text="Сен"/>
+<l:template name="Oct" text="Окт"/>
+<l:template name="Nov" text="ÐоÑ"/>
+<l:template name="Dec" text="Дек"/>
+<l:template name="Mon" text="Пнд"/>
+<l:template name="Tue" text="Ð’Ñ‚Ñ€"/>
+<l:template name="Wed" text="Срд"/>
+<l:template name="Thu" text="Чтв"/>
+<l:template name="Fri" text="Птн"/>
+<l:template name="Sat" text="Сбт"/>
+<l:template name="Sun" text="Ð’Ñк"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0419 Russian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0"/>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">Ð</l:l>
+<l:l i="270">а</l:l>
+<l:l i="280">Б</l:l>
+<l:l i="280">б</l:l>
+<l:l i="290">Ð’</l:l>
+<l:l i="290">в</l:l>
+<l:l i="300">Г</l:l>
+<l:l i="300">г</l:l>
+<l:l i="310">Д</l:l>
+<l:l i="310">д</l:l>
+<l:l i="320">Е</l:l>
+<l:l i="320">е</l:l>
+<l:l i="320">Ð</l:l>
+<l:l i="320">Ñ‘</l:l>
+<l:l i="330">Ж</l:l>
+<l:l i="330">ж</l:l>
+<l:l i="340">З</l:l>
+<l:l i="340">з</l:l>
+<l:l i="350">И</l:l>
+<l:l i="350">и</l:l>
+<l:l i="360">Й</l:l>
+<l:l i="360">й</l:l>
+<l:l i="370">К</l:l>
+<l:l i="370">к</l:l>
+<l:l i="380">Л</l:l>
+<l:l i="380">л</l:l>
+<l:l i="390">М</l:l>
+<l:l i="390">м</l:l>
+<l:l i="400">Ð</l:l>
+<l:l i="400">н</l:l>
+<l:l i="410">О</l:l>
+<l:l i="410">о</l:l>
+<l:l i="420">П</l:l>
+<l:l i="420">п</l:l>
+<l:l i="430">Р</l:l>
+<l:l i="430">Ñ€</l:l>
+<l:l i="440">С</l:l>
+<l:l i="440">Ñ</l:l>
+<l:l i="450">Т</l:l>
+<l:l i="450">Ñ‚</l:l>
+<l:l i="460">У</l:l>
+<l:l i="460">у</l:l>
+<l:l i="470">Ф</l:l>
+<l:l i="470">Ñ„</l:l>
+<l:l i="480">Ð¥</l:l>
+<l:l i="480">Ñ…</l:l>
+<l:l i="490">Ц</l:l>
+<l:l i="490">ц</l:l>
+<l:l i="500">Ч</l:l>
+<l:l i="500">ч</l:l>
+<l:l i="510">Ш</l:l>
+<l:l i="510">ш</l:l>
+<l:l i="520">Щ</l:l>
+<l:l i="520">щ</l:l>
+<l:l i="530">Ъ</l:l>
+<l:l i="530">ÑŠ</l:l>
+<l:l i="540">Ы</l:l>
+<l:l i="540">Ñ‹</l:l>
+<l:l i="550">Ь</l:l>
+<l:l i="550">ь</l:l>
+<l:l i="560">Э</l:l>
+<l:l i="560">Ñ</l:l>
+<l:l i="570">Ю</l:l>
+<l:l i="570">ÑŽ</l:l>
+<l:l i="580">Я</l:l>
+<l:l i="580">Ñ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml
new file mode 100644
index 0000000..09309b6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sk" english-language-name="Slovak">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sk.xml -->
+<!-- * -->
+<!-- * E-mail the edited sk.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrakt"/>
+<l:gentext key="abstract" text="Abstrakt"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Dodatok"/>
+<l:gentext key="appendix" text="dodatok"/>
+<l:gentext key="Article" text="Článok"/>
+<l:gentext key="article" text="Článok"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Kniha"/>
+<l:gentext key="book" text="Kniha"/>
+<l:gentext key="CAUTION" text="VÃSTRAHA"/>
+<l:gentext key="Caution" text="Výstraha"/>
+<l:gentext key="caution" text="Výstraha"/>
+<l:gentext key="Chapter" text="Kapitola"/>
+<l:gentext key="chapter" text="kapitola"/>
+<l:gentext key="Colophon" text="Tiráž"/>
+<l:gentext key="colophon" text="Tiráž"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Venovanie"/>
+<l:gentext key="dedication" text="Venovanie"/>
+<l:gentext key="Edition" text="Vydanie"/>
+<l:gentext key="edition" text="Vydanie"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Rovnica"/>
+<l:gentext key="equation" text="Rovnica"/>
+<l:gentext key="Example" text="Príklad"/>
+<l:gentext key="example" text="Príklad"/>
+<l:gentext key="Figure" text="Obrázok"/>
+<l:gentext key="figure" text="Obrázok"/>
+<l:gentext key="Glossary" text="Slovník"/>
+<l:gentext key="glossary" text="Slovník"/>
+<l:gentext key="GlossSee" text="Pozri"/>
+<l:gentext key="glosssee" text="Pozri"/>
+<l:gentext key="GlossSeeAlso" text="Pozri tiež"/>
+<l:gentext key="glossseealso" text="Pozri tiež"/>
+<l:gentext key="IMPORTANT" text="DÔLEŽITÉ"/>
+<l:gentext key="important" text="Dôležité"/>
+<l:gentext key="Important" text="Dôležité"/>
+<l:gentext key="Index" text="Zoznam"/>
+<l:gentext key="index" text="Zoznam"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Právna poznámka"/>
+<l:gentext key="legalnotice" text="Právna poznámka"/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="Publikum"/>
+<l:gentext key="MsgLevel" text="Úroveň"/>
+<l:gentext key="msglevel" text="Úroveň"/>
+<l:gentext key="MsgOrig" text="Pôvod"/>
+<l:gentext key="msgorig" text="Pôvod"/>
+<l:gentext key="NOTE" text="POZNÃMKA"/>
+<l:gentext key="Note" text="Poznámka"/>
+<l:gentext key="note" text="Poznámka"/>
+<l:gentext key="Part" text="Časť"/>
+<l:gentext key="part" text="Časť"/>
+<l:gentext key="Preface" text="Predslov"/>
+<l:gentext key="preface" text="Predslov"/>
+<l:gentext key="Procedure" text="Postup"/>
+<l:gentext key="procedure" text="Postup"/>
+<l:gentext key="ProductionSet" text="Produkcia"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Vydané"/>
+<l:gentext key="published" text="Vydané"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Odkaz"/>
+<l:gentext key="reference" text="Odkaz"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Meno"/>
+<l:gentext key="refname" text="Meno"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Prehľad"/>
+<l:gentext key="refsynopsisdiv" text="Prehľad"/>
+<l:gentext key="RevHistory" text="Prehľad revízií"/>
+<l:gentext key="revhistory" text="Prehľad revízií"/>
+<l:gentext key="revision" text="Revízia"/>
+<l:gentext key="Revision" text="Revízia"/>
+<l:gentext key="sect1" text="Oddiel"/>
+<l:gentext key="sect2" text="Oddiel"/>
+<l:gentext key="sect3" text="Oddiel"/>
+<l:gentext key="sect4" text="Oddiel"/>
+<l:gentext key="sect5" text="Oddiel"/>
+<l:gentext key="section" text="oddiel"/>
+<l:gentext key="Section" text="Oddiel"/>
+<l:gentext key="see" text="Pozri"/>
+<l:gentext key="See" text="Pozri"/>
+<l:gentext key="seealso" text="Pozri tiež"/>
+<l:gentext key="Seealso" text="Pozri tiež"/>
+<l:gentext key="SeeAlso" text="Pozri tiež"/>
+<l:gentext key="set" text="Nastaviť"/>
+<l:gentext key="Set" text="Nastaviť"/>
+<l:gentext key="setindex" text="nastaviť index"/>
+<l:gentext key="SetIndex" text="Nastaviť index"/>
+<l:gentext key="Sidebar" text="Marginália"/>
+<l:gentext key="sidebar" text="marginália"/>
+<l:gentext key="step" text="krok"/>
+<l:gentext key="Step" text="Krok"/>
+<l:gentext key="table" text="Tabuľka"/>
+<l:gentext key="Table" text="Tabuľka"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Varovanie"/>
+<l:gentext key="warning" text="Varovanie"/>
+<l:gentext key="WARNING" text="VAROVANIE"/>
+<l:gentext key="and" text="a"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Vydané"/>
+<l:gentext key="edited" text="Vydané"/>
+<l:gentext key="Editedby" text="Zostavil: "/>
+<l:gentext key="editedby" text="Zostavil: "/>
+<l:gentext key="in" text="v"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Poznámky"/>
+<l:gentext key="Notes" text="Poznámky"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="Str."/>
+<l:gentext key="Revisedby" text="Revidoval: "/>
+<l:gentext key="revisedby" text="Revidoval: "/>
+<l:gentext key="TableNotes" text="Poznámky"/>
+<l:gentext key="tablenotes" text="Poznámky"/>
+<l:gentext key="TableofContents" text="Obsah"/>
+<l:gentext key="tableofcontents" text="Obsah"/>
+<l:gentext key="unexpectedelementname" text="NeoÄakávané meno prvku"/>
+<l:gentext key="unsupported" text="nepodporovaný"/>
+<l:gentext key="xrefto" text="xref k"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Zoznam rovníc"/>
+<l:gentext key="ListofEquations" text="Zoznam rovníc"/>
+<l:gentext key="ListofExamples" text="Zoznam príkladov"/>
+<l:gentext key="listofexamples" text="Zoznam príkladov"/>
+<l:gentext key="ListofFigures" text="Zoznam obrázkov"/>
+<l:gentext key="listoffigures" text="Zoznam obrázkov"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Zoznam tabuliek"/>
+<l:gentext key="ListofTables" text="Zoznam tabuliek"/>
+<l:gentext key="ListofUnknown" text="Zoznam neznámeho"/>
+<l:gentext key="listofunknown" text="Zoznam neznámeho"/>
+<l:gentext key="nav-home" text="Domov"/>
+<l:gentext key="nav-next" text="Nasledujúci"/>
+<l:gentext key="nav-next-sibling" text="Rýchlo dopredu"/>
+<l:gentext key="nav-prev" text="Predchádzajúci"/>
+<l:gentext key="nav-prev-sibling" text="Rýchlo nazpät"/>
+<l:gentext key="nav-up" text="Hore"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Koncept"/>
+<l:gentext key="above" text="nad"/>
+<l:gentext key="below" text="pod"/>
+<l:gentext key="sectioncalled" text="oddiel nazvaný"/>
+<l:gentext key="index symbols" text="Symboly"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="aáäbcÄdÄeéfghiíjklĺľmnňoóôpqrÅ•sÅ¡tÅ¥uúvwxyýzž"/>
+<l:gentext key="uppercase.alpha" text="AÃÄBCÄŒDÄŽEÉFGHIÃJKLĹĽMNŇOÓÔPQRÅ”SÅ TŤUÚVWXYÃZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatok %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Rovnica %n. %t"/>
+<l:template name="example" text="Príklad %n. %t"/>
+<l:template name="figure" text="Obrázok %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Časť %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postup %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcia %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabuľka %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatok %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="part" text="Časť %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Dodatok %n"/>
+<l:template name="bridgehead" text="Oddiel %n"/>
+<l:template name="chapter" text="Kapitola %n"/>
+<l:template name="equation" text="Rovnica %n"/>
+<l:template name="example" text="Príklad %n"/>
+<l:template name="figure" text="Obrázok %n"/>
+<l:template name="part" text="Časť %n"/>
+<l:template name="procedure" text="Postup %n"/>
+<l:template name="productionset" text="Produkcia %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="Oddiel %n"/>
+<l:template name="sect2" text="Oddiel %n"/>
+<l:template name="sect3" text="Oddiel %n"/>
+<l:template name="sect4" text="Oddiel %n"/>
+<l:template name="sect5" text="Oddiel %n"/>
+<l:template name="section" text="Oddiel %n"/>
+<l:template name="table" text="Tabuľka %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatok %n, %t"/>
+<l:template name="bridgehead" text="Oddiel %n, “%tâ€"/>
+<l:template name="chapter" text="Kapitola %n, %t"/>
+<l:template name="equation" text="Rovnica %n, “%tâ€"/>
+<l:template name="example" text="Príklad %n, “%tâ€"/>
+<l:template name="figure" text="Obrázok %n, “%tâ€"/>
+<l:template name="part" text="ÄŒasť %n, “%tâ€"/>
+<l:template name="procedure" text="Postup %n, “%tâ€"/>
+<l:template name="productionset" text="Produkcia %n, “%tâ€"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%tâ€"/>
+<l:template name="refsect1" text="oddiel nazvaný “%tâ€"/>
+<l:template name="refsect2" text="oddiel nazvaný “%tâ€"/>
+<l:template name="refsect3" text="oddiel nazvaný “%tâ€"/>
+<l:template name="refsection" text="oddiel nazvaný “%tâ€"/>
+<l:template name="sect1" text="Oddiel %n, “%tâ€"/>
+<l:template name="sect2" text="Oddiel %n, “%tâ€"/>
+<l:template name="sect3" text="Oddiel %n, “%tâ€"/>
+<l:template name="sect4" text="Oddiel %n, “%tâ€"/>
+<l:template name="sect5" text="Oddiel %n, “%tâ€"/>
+<l:template name="section" text="Oddiel %n, “%tâ€"/>
+<l:template name="simplesect" text="oddiel nazvaný “%tâ€"/>
+<l:template name="table" text="Tabuľka %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" a "/>
+<l:template name="seplast" text=", a "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Pozri %t."/>
+<l:template name="seealso" text="Pozri tiež %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Úroveň: "/>
+<l:template name="MsgOrig" text="Pôvod: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d. B Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="januára"/>
+<l:template name="February" text="februára"/>
+<l:template name="March" text="marca"/>
+<l:template name="April" text="apríla"/>
+<l:template name="May" text="mája"/>
+<l:template name="June" text="júna"/>
+<l:template name="July" text="júla"/>
+<l:template name="August" text="augusta"/>
+<l:template name="September" text="septembra"/>
+<l:template name="October" text="októbra"/>
+<l:template name="November" text="novembra"/>
+<l:template name="December" text="decembra"/>
+<l:template name="Monday" text="pondelok"/>
+<l:template name="Tuesday" text="utorok"/>
+<l:template name="Wednesday" text="streda"/>
+<l:template name="Thursday" text="Å¡tvrtok"/>
+<l:template name="Friday" text="piatok"/>
+<l:template name="Saturday" text="sobota"/>
+<l:template name="Sunday" text="nedeľa"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="máj"/>
+<l:template name="Jun" text="jún"/>
+<l:template name="Jul" text="júl"/>
+<l:template name="Aug" text="aug"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="okt"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="po"/>
+<l:template name="Tue" text="ut"/>
+<l:template name="Wed" text="st"/>
+<l:template name="Thu" text="Å¡t"/>
+<l:template name="Fri" text="pi"/>
+<l:template name="Sat" text="so"/>
+<l:template name="Sun" text="ne"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041b Slovak"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml
new file mode 100644
index 0000000..43aa257
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sl" english-language-name="Slovenian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sl.xml -->
+<!-- * -->
+<!-- * E-mail the edited sl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Povzetek"/>
+<l:gentext key="abstract" text="Povzetek"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="O:"/>
+<l:gentext key="answer" text="O:"/>
+<l:gentext key="Appendix" text="Dodatek"/>
+<l:gentext key="appendix" text="dodatek"/>
+<l:gentext key="Article" text="ÄŒlanek"/>
+<l:gentext key="article" text="ÄŒlanek"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="Literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="Knjiga"/>
+<l:gentext key="CAUTION" text="OPOZORILO"/>
+<l:gentext key="Caution" text="Opozorilo"/>
+<l:gentext key="caution" text="Opozorilo"/>
+<l:gentext key="Chapter" text="Poglavje"/>
+<l:gentext key="chapter" text="poglavje"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="Kolofon"/>
+<l:gentext key="Copyright" text="Pravna zaÅ¡Äita"/>
+<l:gentext key="copyright" text="Pravna zaÅ¡Äita"/>
+<l:gentext key="Dedication" text="Posvetilo"/>
+<l:gentext key="dedication" text="Posvetilo"/>
+<l:gentext key="Edition" text="Izdaja"/>
+<l:gentext key="edition" text="Izdaja"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="EnaÄba"/>
+<l:gentext key="equation" text="EnaÄba"/>
+<l:gentext key="Example" text="Primer"/>
+<l:gentext key="example" text="Primer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="Slika"/>
+<l:gentext key="Glossary" text="SlovarÄek"/>
+<l:gentext key="glossary" text="SlovarÄek"/>
+<l:gentext key="GlossSee" text="glej"/>
+<l:gentext key="glosssee" text="glej"/>
+<l:gentext key="GlossSeeAlso" text="glej tudi"/>
+<l:gentext key="glossseealso" text="glej tudi"/>
+<l:gentext key="IMPORTANT" text="POMEMBNO"/>
+<l:gentext key="important" text="Pomembno"/>
+<l:gentext key="Important" text="Pomembno"/>
+<l:gentext key="Index" text="Stvarno kazalo"/>
+<l:gentext key="index" text="Stvarno kazalo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravno sporoÄilo"/>
+<l:gentext key="legalnotice" text="Pravno sporoÄilo"/>
+<l:gentext key="MsgAud" text="ObÄinstvo"/>
+<l:gentext key="msgaud" text="ObÄinstvo"/>
+<l:gentext key="MsgLevel" text="Raven"/>
+<l:gentext key="msglevel" text="Raven"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="Izvor"/>
+<l:gentext key="NOTE" text="OPOMBA"/>
+<l:gentext key="Note" text="Opomba"/>
+<l:gentext key="note" text="Opomba"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="Del"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="Predgovor"/>
+<l:gentext key="Procedure" text="Postopek"/>
+<l:gentext key="procedure" text="Postopek"/>
+<l:gentext key="ProductionSet" text="Izdelava"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Izdano"/>
+<l:gentext key="published" text="Izdano"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="V in O"/>
+<l:gentext key="qandadiv" text="V in O"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="V:"/>
+<l:gentext key="question" text="V:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Sklic"/>
+<l:gentext key="reference" text="Sklic"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="Ime"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+<l:gentext key="refsynopsisdiv" text="Sinopsis"/>
+<l:gentext key="RevHistory" text="Zgodovina razliÄic"/>
+<l:gentext key="revhistory" text="Zgodovina razliÄic"/>
+<l:gentext key="revision" text="RazliÄica"/>
+<l:gentext key="Revision" text="RazliÄica"/>
+<l:gentext key="sect1" text="Razdelek"/>
+<l:gentext key="sect2" text="Razdelek"/>
+<l:gentext key="sect3" text="Razdelek"/>
+<l:gentext key="sect4" text="Razdelek"/>
+<l:gentext key="sect5" text="Razdelek"/>
+<l:gentext key="section" text="razdelek"/>
+<l:gentext key="Section" text="Razdelek"/>
+<l:gentext key="see" text="glej"/>
+<l:gentext key="See" text="glej"/>
+<l:gentext key="seealso" text="glej tudi"/>
+<l:gentext key="Seealso" text="Glej tudi"/>
+<l:gentext key="SeeAlso" text="glej tudi"/>
+<l:gentext key="set" text="Postavi"/>
+<l:gentext key="Set" text="Postavi"/>
+<l:gentext key="setindex" text="Postavi stvarno kazalo"/>
+<l:gentext key="SetIndex" text="Postavi stvarno kazalo"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="korak"/>
+<l:gentext key="Step" text="Korak"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Namig"/>
+<l:gentext key="TIP" text="NAMIG"/>
+<l:gentext key="Tip" text="Namig"/>
+<l:gentext key="Warning" text="Pozor"/>
+<l:gentext key="warning" text="Pozor"/>
+<l:gentext key="WARNING" text="POZOR"/>
+<l:gentext key="and" text="in"/>
+<l:gentext key="by" text="od"/>
+<l:gentext key="Edited" text="Urejeno"/>
+<l:gentext key="edited" text="Urejeno"/>
+<l:gentext key="Editedby" text="Uredil"/>
+<l:gentext key="editedby" text="Uredil"/>
+<l:gentext key="in" text="v"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notes"/>
+<l:gentext key="Notes" text="Notes"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="Str."/>
+<l:gentext key="Revisedby" text="Pregledal: "/>
+<l:gentext key="revisedby" text="Pregledal: "/>
+<l:gentext key="TableNotes" text="Notes"/>
+<l:gentext key="tablenotes" text="Notes"/>
+<l:gentext key="TableofContents" text="Kazalo"/>
+<l:gentext key="tableofcontents" text="Kazalo"/>
+<l:gentext key="unexpectedelementname" text="NepriÄakovano ime elementa"/>
+<l:gentext key="unsupported" text="nepodprto"/>
+<l:gentext key="xrefto" text="xref na"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Seznam enaÄb"/>
+<l:gentext key="ListofEquations" text="Seznam enaÄb"/>
+<l:gentext key="ListofExamples" text="Seznam primerov"/>
+<l:gentext key="listofexamples" text="Seznam primerov"/>
+<l:gentext key="ListofFigures" text="Seznam slik"/>
+<l:gentext key="listoffigures" text="Seznam slik"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Seznam tabel"/>
+<l:gentext key="ListofTables" text="Seznam tabel"/>
+<l:gentext key="ListofUnknown" text="Seznam neznanih stvari"/>
+<l:gentext key="listofunknown" text="Seznam neznanih stvari"/>
+<l:gentext key="nav-home" text="Domov"/>
+<l:gentext key="nav-next" text="Naprej"/>
+<l:gentext key="nav-next-sibling" text="Hitro naprej"/>
+<l:gentext key="nav-prev" text="Nazaj"/>
+<l:gentext key="nav-prev-sibling" text="Hitro nazaj"/>
+<l:gentext key="nav-up" text="Gor"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="razdelek, imenovan"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcÄdefghijklmnopqrsÅ¡tuvwxyzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČDEFGHIJKLMNOPQRSŠTUVWXYZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="EnaÄba %n. %t"/>
+<l:template name="example" text="Primer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postopek %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Izdelava %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Poglavje %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="V: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="V: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="Dodatek %n"/>
+<l:template name="bridgehead" text="Razdelek %n"/>
+<l:template name="chapter" text="Poglavje %n"/>
+<l:template name="equation" text="EnaÄba %n"/>
+<l:template name="example" text="Primer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Postopek %n"/>
+<l:template name="productionset" text="Izdelava %n"/>
+<l:template name="qandadiv" text="V in O %n"/>
+<l:template name="qandaentry" text="V: %n"/>
+<l:template name="question" text="V: %n"/>
+<l:template name="sect1" text="Razdelek %n"/>
+<l:template name="sect2" text="Razdelek %n"/>
+<l:template name="sect3" text="Razdelek %n"/>
+<l:template name="sect4" text="Razdelek %n"/>
+<l:template name="sect5" text="Razdelek %n"/>
+<l:template name="section" text="Razdelek %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatek %n, %t"/>
+<l:template name="bridgehead" text="Razdelek %n, “%tâ€"/>
+<l:template name="chapter" text="Poglavje %n, %t"/>
+<l:template name="equation" text="EnaÄba %n, “%tâ€"/>
+<l:template name="example" text="Primer %n, “%tâ€"/>
+<l:template name="figure" text="Slika %n, “%tâ€"/>
+<l:template name="part" text="Del %n, “%tâ€"/>
+<l:template name="procedure" text="Postopek %n, “%tâ€"/>
+<l:template name="productionset" text="Izdelava %n, “%tâ€"/>
+<l:template name="qandadiv" text="V in O %n, “%tâ€"/>
+<l:template name="refsect1" text="razdelek, imenovan “%tâ€"/>
+<l:template name="refsect2" text="razdelek, imenovan “%tâ€"/>
+<l:template name="refsect3" text="razdelek, imenovan “%tâ€"/>
+<l:template name="refsection" text="razdelek, imenovan “%tâ€"/>
+<l:template name="sect1" text="Razdelek %n, “%tâ€"/>
+<l:template name="sect2" text="Razdelek %n, “%tâ€"/>
+<l:template name="sect3" text="Razdelek %n, “%tâ€"/>
+<l:template name="sect4" text="Razdelek %n, “%tâ€"/>
+<l:template name="sect5" text="Razdelek %n, “%tâ€"/>
+<l:template name="section" text="Razdelek %n, “%tâ€"/>
+<l:template name="simplesect" text="razdelek, imenovan “%tâ€"/>
+<l:template name="table" text="Tabela %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" in "/>
+<l:template name="seplast" text=", in "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="glej %t."/>
+<l:template name="seealso" text="glej tudi %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ObÄinstvo: "/>
+<l:template name="MsgLevel" text="Raven: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0424 Slovenian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml
new file mode 100644
index 0000000..b566918
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sq" english-language-name="Albanian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sq.xml -->
+<!-- * -->
+<!-- * E-mail the edited sq.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Përshkrimi"/>
+<l:gentext key="abstract" text="Përshkrimi"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="P:"/>
+<l:gentext key="answer" text="P:"/>
+<l:gentext key="Appendix" text="Shtesë"/>
+<l:gentext key="appendix" text="Shtesë"/>
+<l:gentext key="Article" text="Artikull"/>
+<l:gentext key="article" text="Artikull"/>
+<l:gentext key="Author" text="Autorë"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Libri"/>
+<l:gentext key="book" text="Libri"/>
+<l:gentext key="CAUTION" text="KUJDES"/>
+<l:gentext key="Caution" text="Kujdes"/>
+<l:gentext key="caution" text="Kujdes"/>
+<l:gentext key="Chapter" text="Kapitulli"/>
+<l:gentext key="chapter" text="kapitulli"/>
+<l:gentext key="Colophon" text="Shënime publikimi"/>
+<l:gentext key="colophon" text="shënime publikimi"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Përkushtim"/>
+<l:gentext key="dedication" text="Përkushtim"/>
+<l:gentext key="Edition" text="Versioni"/>
+<l:gentext key="edition" text="Versioni"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ekuacion"/>
+<l:gentext key="equation" text="Ekuacion"/>
+<l:gentext key="Example" text="Shembull"/>
+<l:gentext key="example" text="Shembull"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="Figura"/>
+<l:gentext key="Glossary" text="Fjalori"/>
+<l:gentext key="glossary" text="Fjalori"/>
+<l:gentext key="GlossSee" text="Shiko"/>
+<l:gentext key="glosssee" text="Shiko"/>
+<l:gentext key="GlossSeeAlso" text="Shiko Edhe"/>
+<l:gentext key="glossseealso" text="Shiko Edhe"/>
+<l:gentext key="IMPORTANT" text="ME RËNDËSI"/>
+<l:gentext key="important" text="Me rëndësi"/>
+<l:gentext key="Important" text="Me rëndësi"/>
+<l:gentext key="Index" text="Treguesi"/>
+<l:gentext key="index" text="Treguesi"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Shënime Legale"/>
+<l:gentext key="legalnotice" text="Shënime Legale"/>
+<l:gentext key="MsgAud" text="Publiku"/>
+<l:gentext key="msgaud" text="Publiku"/>
+<l:gentext key="MsgLevel" text="Niveli"/>
+<l:gentext key="msglevel" text="Niveli"/>
+<l:gentext key="MsgOrig" text="Origjina"/>
+<l:gentext key="msgorig" text="Origjina"/>
+<l:gentext key="NOTE" text="SHËNIM"/>
+<l:gentext key="Note" text="Shënim"/>
+<l:gentext key="note" text="Shënim"/>
+<l:gentext key="Part" text="Pjesa"/>
+<l:gentext key="part" text="Pjesa"/>
+<l:gentext key="Preface" text="Parathënie"/>
+<l:gentext key="preface" text="Parathënie"/>
+<l:gentext key="Procedure" text="Proçedura"/>
+<l:gentext key="procedure" text="Proçedura"/>
+<l:gentext key="ProductionSet" text="Prodhimi"/>
+<l:gentext key="PubDate" text="Data Publikimit"/>
+<l:gentext key="pubdate" text="Data e publikimit"/>
+<l:gentext key="Published" text="Publikuar"/>
+<l:gentext key="published" text="Publikuar"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="P &amp; P"/>
+<l:gentext key="qandadiv" text="P &amp; P"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Riferim"/>
+<l:gentext key="reference" text="Riferim"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Emri"/>
+<l:gentext key="refname" text="Emri"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Përshkrimi"/>
+<l:gentext key="refsynopsisdiv" text="Përshkrimi"/>
+<l:gentext key="RevHistory" text="Ditari i Revizioneve"/>
+<l:gentext key="revhistory" text="Ditari i Revizioneve"/>
+<l:gentext key="revision" text="Revizioni"/>
+<l:gentext key="Revision" text="Revizioni"/>
+<l:gentext key="sect1" text="Seksioni"/>
+<l:gentext key="sect2" text="Seksioni"/>
+<l:gentext key="sect3" text="Seksioni"/>
+<l:gentext key="sect4" text="Seksioni"/>
+<l:gentext key="sect5" text="Seksioni"/>
+<l:gentext key="section" text="Seksioni"/>
+<l:gentext key="Section" text="Seksioni"/>
+<l:gentext key="see" text="shiko"/>
+<l:gentext key="See" text="Shiko"/>
+<l:gentext key="seealso" text="shiko gjithashtu"/>
+<l:gentext key="Seealso" text="Shiko gjithashtu"/>
+<l:gentext key="SeeAlso" text="Shiko Gjithashtu"/>
+<l:gentext key="set" text="Përmbledhje"/>
+<l:gentext key="Set" text="Përmbledhje"/>
+<l:gentext key="setindex" text="Treguesi i Përmbledhjes"/>
+<l:gentext key="SetIndex" text="Treguesi i Përmbledhjes"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="shënim anësor"/>
+<l:gentext key="step" text="hapi"/>
+<l:gentext key="Step" text="Hapi"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Propozim"/>
+<l:gentext key="TIP" text="PROPOZIM"/>
+<l:gentext key="Tip" text="Propozim"/>
+<l:gentext key="Warning" text="Paralajmërim"/>
+<l:gentext key="warning" text="Paralajmërim"/>
+<l:gentext key="WARNING" text="PARALAJMËRIM"/>
+<l:gentext key="and" text="dhe"/>
+<l:gentext key="by" text="nga"/>
+<l:gentext key="Edited" text="Shkruar"/>
+<l:gentext key="edited" text="Shkruar"/>
+<l:gentext key="Editedby" text="Shkruar nga"/>
+<l:gentext key="editedby" text="Shkruar nga"/>
+<l:gentext key="in" text="në"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Shënime"/>
+<l:gentext key="Notes" text="Shënime"/>
+<l:gentext key="Pgs" text="Fq."/>
+<l:gentext key="pgs" text="Fq."/>
+<l:gentext key="Revisedby" text="Rishikuar nga: "/>
+<l:gentext key="revisedby" text="Rishikuar nga: "/>
+<l:gentext key="TableNotes" text="Shënime"/>
+<l:gentext key="tablenotes" text="Shënime"/>
+<l:gentext key="TableofContents" text="Tabela e përmbajtjes"/>
+<l:gentext key="tableofcontents" text="Tabela e Përmbajtjes"/>
+<l:gentext key="unexpectedelementname" text="Emër i papritur elementi"/>
+<l:gentext key="unsupported" text="nuk suportohet"/>
+<l:gentext key="xrefto" text="riferiment me"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Lista e Ekuacioneve"/>
+<l:gentext key="ListofEquations" text="Lista e Ekuacioneve"/>
+<l:gentext key="ListofExamples" text="Lista e Shembujve"/>
+<l:gentext key="listofexamples" text="Lista e Shembujve"/>
+<l:gentext key="ListofFigures" text="Lista e Figurave"/>
+<l:gentext key="listoffigures" text="Lista e Figurave"/>
+<l:gentext key="ListofProcedures" text="Lista e Proçedurave"/>
+<l:gentext key="listofprocedures" text="Lista e Proçedurave"/>
+<l:gentext key="listoftables" text="Lista e Tabelave"/>
+<l:gentext key="ListofTables" text="Lista e Tabelave"/>
+<l:gentext key="ListofUnknown" text="Lista e të Panjohurave"/>
+<l:gentext key="listofunknown" text="Lista e të Panjohurave"/>
+<l:gentext key="nav-home" text="Fillimi"/>
+<l:gentext key="nav-next" text="Vazhdo"/>
+<l:gentext key="nav-next-sibling" text="Para me Shpejtësi"/>
+<l:gentext key="nav-prev" text="Mbrapa"/>
+<l:gentext key="nav-prev-sibling" text="Mbrapsht me Shpejtësi"/>
+<l:gentext key="nav-up" text="Sipër"/>
+<l:gentext key="nav-toc" text="TeP"/>
+<l:gentext key="Draft" text="Kopje prove"/>
+<l:gentext key="above" text="sipër"/>
+<l:gentext key="below" text="poshtë"/>
+<l:gentext key="sectioncalled" text="seksioni i quajtur"/>
+<l:gentext key="index symbols" text="Simbole"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Shtesë %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitulli %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekuacion %n. %t"/>
+<l:template name="example" text="Shembull %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Pjesa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Proçedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Prodhimi %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Shtesë %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitulli %n. %t"/>
+<l:template name="part" text="Pjesa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="P: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="seksioni i quajtur “%tâ€"/>
+<l:template name="refsection" text="seksioni i quajtur “%tâ€"/>
+<l:template name="refsect1" text="seksioni i quajtur “%tâ€"/>
+<l:template name="refsect2" text="seksioni i quajtur “%tâ€"/>
+<l:template name="refsect3" text="seksioni i quajtur “%tâ€"/>
+<l:template name="sect1" text="seksioni i quajtur “%tâ€"/>
+<l:template name="sect2" text="seksioni i quajtur “%tâ€"/>
+<l:template name="sect3" text="seksioni i quajtur “%tâ€"/>
+<l:template name="sect4" text="seksioni i quajtur “%tâ€"/>
+<l:template name="sect5" text="seksioni i quajtur “%tâ€"/>
+<l:template name="section" text="seksioni i quajtur “%tâ€"/>
+<l:template name="simplesect" text="seksioni i quajtur “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="P: %n"/>
+<l:template name="appendix" text="Shtesë %n"/>
+<l:template name="bridgehead" text="Seksioni %n"/>
+<l:template name="chapter" text="Kapitulli %n"/>
+<l:template name="equation" text="Ekuacion %n"/>
+<l:template name="example" text="Shembull %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Pjesa %n"/>
+<l:template name="procedure" text="Proçedura %n"/>
+<l:template name="productionset" text="Prodhimi %n"/>
+<l:template name="qandadiv" text="P &amp; P %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="Seksioni %n"/>
+<l:template name="sect2" text="Seksioni %n"/>
+<l:template name="sect3" text="Seksioni %n"/>
+<l:template name="sect4" text="Seksioni %n"/>
+<l:template name="sect5" text="Seksioni %n"/>
+<l:template name="section" text="Seksioni %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Shtesë %n, %t"/>
+<l:template name="bridgehead" text="Seksioni %n, “%tâ€"/>
+<l:template name="chapter" text="Kapitulli %n, %t"/>
+<l:template name="equation" text="Ekuacion %n, “%tâ€"/>
+<l:template name="example" text="Shembull %n, “%tâ€"/>
+<l:template name="figure" text="Figura %n, “%tâ€"/>
+<l:template name="part" text="Pjesa %n, “%tâ€"/>
+<l:template name="procedure" text="Proçedura %n, “%tâ€"/>
+<l:template name="productionset" text="Prodhimi %n, “%tâ€"/>
+<l:template name="qandadiv" text="P &amp; P %n, “%tâ€"/>
+<l:template name="refsect1" text="seksioni i quajtur “%tâ€"/>
+<l:template name="refsect2" text="seksioni i quajtur “%tâ€"/>
+<l:template name="refsect3" text="seksioni i quajtur “%tâ€"/>
+<l:template name="refsection" text="seksioni i quajtur “%tâ€"/>
+<l:template name="sect1" text="Seksioni %n, “%tâ€"/>
+<l:template name="sect2" text="Seksioni %n, “%tâ€"/>
+<l:template name="sect3" text="Seksioni %n, “%tâ€"/>
+<l:template name="sect4" text="Seksioni %n, “%tâ€"/>
+<l:template name="sect5" text="Seksioni %n, “%tâ€"/>
+<l:template name="section" text="Seksioni %n, “%tâ€"/>
+<l:template name="simplesect" text="seksioni i quajtur “%tâ€"/>
+<l:template name="table" text="Tabela %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" dhe "/>
+<l:template name="seplast" text=", dhe "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Shiko %t."/>
+<l:template name="seealso" text="Shiko Edhe %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publiku: "/>
+<l:template name="MsgLevel" text="Niveli: "/>
+<l:template name="MsgOrig" text="Origjina: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Janar"/>
+<l:template name="February" text="Shkurt"/>
+<l:template name="March" text="Mars"/>
+<l:template name="April" text="Prill"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Qershor"/>
+<l:template name="July" text="Korrik"/>
+<l:template name="August" text="Gusht"/>
+<l:template name="September" text="Shtator"/>
+<l:template name="October" text="Tetor"/>
+<l:template name="November" text="Nëntor"/>
+<l:template name="December" text="Dhjetor"/>
+<l:template name="Monday" text="E hënë"/>
+<l:template name="Tuesday" text="E martë"/>
+<l:template name="Wednesday" text="E mërkurë"/>
+<l:template name="Thursday" text="E enjte"/>
+<l:template name="Friday" text="E premte"/>
+<l:template name="Saturday" text="E shtunë"/>
+<l:template name="Sunday" text="E djelë"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Shk"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Pri"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Qer"/>
+<l:template name="Jul" text="Kor"/>
+<l:template name="Aug" text="Gsh"/>
+<l:template name="Sep" text="Sht"/>
+<l:template name="Oct" text="Tet"/>
+<l:template name="Nov" text="Nën"/>
+<l:template name="Dec" text="Dhj"/>
+<l:template name="Mon" text="Hën"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Mër"/>
+<l:template name="Thu" text="Enj"/>
+<l:template name="Fri" text="Pre"/>
+<l:template name="Sat" text="Sht"/>
+<l:template name="Sun" text="Dje"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041c Albanian (ALBANIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml
new file mode 100644
index 0000000..413ca4c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml
@@ -0,0 +1,720 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sr" english-language-name="Serbian in Cyrillic script">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sr.xml -->
+<!-- * -->
+<!-- * E-mail the edited sr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Сажетак"/>
+<l:gentext key="abstract" text="Ñажетак"/>
+<l:gentext key="Acknowledgements" text="Признања"/>
+<l:gentext key="acknowledgements" text="признања"/>
+<l:gentext key="Answer" text="О:"/>
+<l:gentext key="answer" text="о:"/>
+<l:gentext key="Appendix" text="Додатак"/>
+<l:gentext key="appendix" text="додатак"/>
+<l:gentext key="Article" text="Чланак"/>
+<l:gentext key="article" text="чланак"/>
+<l:gentext key="Author" text="Ðутор"/>
+<l:gentext key="Bibliography" text="Литература"/>
+<l:gentext key="bibliography" text="литература"/>
+<l:gentext key="Book" text="Књига"/>
+<l:gentext key="book" text="књига"/>
+<l:gentext key="CAUTION" text="УПОЗОРЕЊЕ"/>
+<l:gentext key="Caution" text="Упозорење"/>
+<l:gentext key="caution" text="упозорење"/>
+<l:gentext key="Chapter" text="Поглавље"/>
+<l:gentext key="chapter" text="поглавље"/>
+<l:gentext key="Colophon" text="Колофон"/>
+<l:gentext key="colophon" text="колофон"/>
+<l:gentext key="Copyright" text="ÐуторÑка права"/>
+<l:gentext key="copyright" text="ауторÑка права"/>
+<l:gentext key="Dedication" text="ПоÑвета"/>
+<l:gentext key="dedication" text="поÑвета"/>
+<l:gentext key="Edition" text="Издање"/>
+<l:gentext key="edition" text="издање"/>
+<l:gentext key="Editor" text="Уредник"/>
+<l:gentext key="Equation" text="Једначина"/>
+<l:gentext key="equation" text="једначина"/>
+<l:gentext key="Example" text="Пример"/>
+<l:gentext key="example" text="пример"/>
+<l:gentext key="Figure" text="Слика"/>
+<l:gentext key="figure" text="Ñлика"/>
+<l:gentext key="Glossary" text="Речник"/>
+<l:gentext key="glossary" text="речник"/>
+<l:gentext key="GlossSee" text="Види"/>
+<l:gentext key="glosssee" text="види"/>
+<l:gentext key="GlossSeeAlso" text="Види такође"/>
+<l:gentext key="glossseealso" text="види такође"/>
+<l:gentext key="IMPORTANT" text="Ð’ÐЖÐО"/>
+<l:gentext key="important" text="важно"/>
+<l:gentext key="Important" text="Важно"/>
+<l:gentext key="Index" text="ИндекÑ"/>
+<l:gentext key="index" text="индекÑ"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Правна напомена"/>
+<l:gentext key="legalnotice" text="правна напомена"/>
+<l:gentext key="MsgAud" text="Публика"/>
+<l:gentext key="msgaud" text="публика"/>
+<l:gentext key="MsgLevel" text="Ðиво"/>
+<l:gentext key="msglevel" text="ниво"/>
+<l:gentext key="MsgOrig" text="Извор"/>
+<l:gentext key="msgorig" text="извор"/>
+<l:gentext key="NOTE" text="ПРИМЕДБÐ"/>
+<l:gentext key="Note" text="Примедба"/>
+<l:gentext key="note" text="примедба"/>
+<l:gentext key="Part" text="Део"/>
+<l:gentext key="part" text="део"/>
+<l:gentext key="Preface" text="Предговор"/>
+<l:gentext key="preface" text="предговор"/>
+<l:gentext key="Procedure" text="ПоÑтупак"/>
+<l:gentext key="procedure" text="поÑтупак"/>
+<l:gentext key="ProductionSet" text="Продукција"/>
+<l:gentext key="PubDate" text="Датум издавања"/>
+<l:gentext key="pubdate" text="датум издавања"/>
+<l:gentext key="Published" text="Издано"/>
+<l:gentext key="published" text="издано"/>
+<l:gentext key="Publisher" text="Издавач"/>
+<l:gentext key="Qandadiv" text="П и О"/>
+<l:gentext key="qandadiv" text="п и о"/>
+<l:gentext key="QandASet" text="ЧеÑто поÑтављана питања"/>
+<l:gentext key="Question" text="П:"/>
+<l:gentext key="question" text="п:"/>
+<l:gentext key="RefEntry" text="Страница"/>
+<l:gentext key="refentry" text="Ñтраница"/>
+<l:gentext key="Reference" text="Референца"/>
+<l:gentext key="reference" text="референца"/>
+<l:gentext key="References" text="Референце"/>
+<l:gentext key="RefName" text="Име"/>
+<l:gentext key="refname" text="име"/>
+<l:gentext key="RefSection" text="Одељак"/>
+<l:gentext key="refsection" text="одељак"/>
+<l:gentext key="RefSynopsisDiv" text="Преглед"/>
+<l:gentext key="refsynopsisdiv" text="преглед"/>
+<l:gentext key="RevHistory" text="ИÑторија ревизија"/>
+<l:gentext key="revhistory" text="иÑторија ревизија"/>
+<l:gentext key="revision" text="ревизија"/>
+<l:gentext key="Revision" text="Ревизија"/>
+<l:gentext key="sect1" text="Одељак"/>
+<l:gentext key="sect2" text="Одељак"/>
+<l:gentext key="sect3" text="Одељак"/>
+<l:gentext key="sect4" text="Одељак"/>
+<l:gentext key="sect5" text="Одељак"/>
+<l:gentext key="section" text="одељак"/>
+<l:gentext key="Section" text="Одељак"/>
+<l:gentext key="see" text="види"/>
+<l:gentext key="See" text="Види"/>
+<l:gentext key="seealso" text="види такође"/>
+<l:gentext key="Seealso" text="Види такође"/>
+<l:gentext key="SeeAlso" text="Види такође"/>
+<l:gentext key="set" text="Ñкуп"/>
+<l:gentext key="Set" text="Скуп"/>
+<l:gentext key="setindex" text="Ð¸Ð½Ð´ÐµÐºÑ Ñкупа"/>
+<l:gentext key="SetIndex" text="Ð˜Ð½Ð´ÐµÐºÑ Ñкупа"/>
+<l:gentext key="Sidebar" text="Бочна трака"/>
+<l:gentext key="sidebar" text="бочна трака"/>
+<l:gentext key="step" text="корак"/>
+<l:gentext key="Step" text="Корак"/>
+<l:gentext key="table" text="табела"/>
+<l:gentext key="Table" text="Табела"/>
+<l:gentext key="task" text="задатак"/>
+<l:gentext key="Task" text="Задатак"/>
+<l:gentext key="tip" text="Ñавет"/>
+<l:gentext key="TIP" text="СÐВЕТ"/>
+<l:gentext key="Tip" text="Савет"/>
+<l:gentext key="Warning" text="Упозорење"/>
+<l:gentext key="warning" text="упозорење"/>
+<l:gentext key="WARNING" text="УПОЗОРЕЊЕ"/>
+<l:gentext key="and" text="и"/>
+<l:gentext key="by" text="од"/>
+<l:gentext key="Edited" text="Уређено"/>
+<l:gentext key="edited" text="уређено"/>
+<l:gentext key="Editedby" text="Уредио(ла)"/>
+<l:gentext key="editedby" text="Уредио(ла)"/>
+<l:gentext key="in" text="у"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="примедбе"/>
+<l:gentext key="Notes" text="Примедбе"/>
+<l:gentext key="Pgs" text="Стр."/>
+<l:gentext key="pgs" text="ÑÑ‚Ñ€."/>
+<l:gentext key="Revisedby" text="Прегледао(ла): "/>
+<l:gentext key="revisedby" text="прегледао(ла): "/>
+<l:gentext key="TableNotes" text="Примедбе"/>
+<l:gentext key="tablenotes" text="примедбе"/>
+<l:gentext key="TableofContents" text="Садржај"/>
+<l:gentext key="tableofcontents" text="Ñадржај"/>
+<l:gentext key="unexpectedelementname" text="неочекивано име елемента"/>
+<l:gentext key="unsupported" text="није подржано"/>
+<l:gentext key="xrefto" text="унакрÑна референца на"/>
+<l:gentext key="Authors" text="Ðутори"/>
+<l:gentext key="copyeditor" text="Издавачки уредник"/>
+<l:gentext key="graphicdesigner" text="Графички дизајнер"/>
+<l:gentext key="productioneditor" text="Извршни уредник"/>
+<l:gentext key="technicaleditor" text="Технички уредник"/>
+<l:gentext key="translator" text="Преводилац"/>
+<l:gentext key="listofequations" text="ÑпиÑак једначина"/>
+<l:gentext key="ListofEquations" text="СпиÑак једначина"/>
+<l:gentext key="ListofExamples" text="СпиÑак примера"/>
+<l:gentext key="listofexamples" text="ÑпиÑак примера"/>
+<l:gentext key="ListofFigures" text="СпиÑак Ñлика"/>
+<l:gentext key="listoffigures" text="ÑпиÑак Ñлика"/>
+<l:gentext key="ListofProcedures" text="СпиÑак поÑтупака"/>
+<l:gentext key="listofprocedures" text="ÑпиÑак поÑтупака"/>
+<l:gentext key="listoftables" text="ÑпиÑак табела"/>
+<l:gentext key="ListofTables" text="СпиÑак табела"/>
+<l:gentext key="ListofUnknown" text="ÑпиÑак непознатих"/>
+<l:gentext key="listofunknown" text="СпиÑак непознатих"/>
+<l:gentext key="nav-home" text="Почетак"/>
+<l:gentext key="nav-next" text="Следећи"/>
+<l:gentext key="nav-next-sibling" text="Брзо напред"/>
+<l:gentext key="nav-prev" text="Претходни"/>
+<l:gentext key="nav-prev-sibling" text="Брзо назад"/>
+<l:gentext key="nav-up" text="Врх"/>
+<l:gentext key="nav-toc" text="Садр."/>
+<l:gentext key="Draft" text="Ðацрт"/>
+<l:gentext key="above" text="изнад"/>
+<l:gentext key="below" text="иÑпод"/>
+<l:gentext key="sectioncalled" text="одељак под именом"/>
+<l:gentext key="index symbols" text="Симболи"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="абвгдђежзијклљмнњопрÑтћуфхцчџш"/>
+<l:gentext key="uppercase.alpha" text="ÐБВГДЂЕЖЗИЈКЛЉМÐЊОПРСТЋУФХЦЧÐШ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="име-презиме"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Додатак %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Поглавље %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Једначина %n. %t"/>
+<l:template name="example" text="Пример %n. %t"/>
+<l:template name="figure" text="Слика %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Део %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ПоÑтупак %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Продукција %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Табела %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Додатак %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Поглавље %n. %t"/>
+<l:template name="part" text="Део %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="О: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="П: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="П: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" у %o"/>
+<l:template name="olink.page.citation" text=" (ÑÑ‚Ñ€. %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(Ñтрана %p)"/>
+<l:template name="docname" text=" у %o"/>
+<l:template name="docnamelong" text=" у документу Ñа наÑловом %o"/>
+<l:template name="pageabbrev" text="(ÑÑ‚Ñ€. %p)"/>
+<l:template name="Page" text="Страна %p"/>
+<l:template name="bridgehead" text="одељак под именом „%t“"/>
+<l:template name="refsection" text="одељак под именом „%t“"/>
+<l:template name="refsect1" text="одељак под именом „%t“"/>
+<l:template name="refsect2" text="одељак под именом „%t“"/>
+<l:template name="refsect3" text="одељак под именом „%t“"/>
+<l:template name="sect1" text="одељак под именом „%t“"/>
+<l:template name="sect2" text="одељак под именом „%t“"/>
+<l:template name="sect3" text="одељак под именом „%t“"/>
+<l:template name="sect4" text="одељак под именом „%t“"/>
+<l:template name="sect5" text="одељак под именом „%t“"/>
+<l:template name="section" text="одељак под именом „%t“"/>
+<l:template name="simplesect" text="одељак под именом „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="О: %n"/>
+<l:template name="appendix" text="Додатак %n"/>
+<l:template name="bridgehead" text="Одељак %n"/>
+<l:template name="chapter" text="Поглавље %n"/>
+<l:template name="equation" text="Једначина %n"/>
+<l:template name="example" text="Пример %n"/>
+<l:template name="figure" text="Слика %n"/>
+<l:template name="part" text="Део %n"/>
+<l:template name="procedure" text="ПоÑтупак %n"/>
+<l:template name="productionset" text="Продукција %n"/>
+<l:template name="qandadiv" text="П и О %n"/>
+<l:template name="qandaentry" text="П: %n"/>
+<l:template name="question" text="П: %n"/>
+<l:template name="sect1" text="Одељак %n"/>
+<l:template name="sect2" text="Одељак %n"/>
+<l:template name="sect3" text="Одељак %n"/>
+<l:template name="sect4" text="Одељак %n"/>
+<l:template name="sect5" text="Одељак %n"/>
+<l:template name="section" text="Одељак %n"/>
+<l:template name="table" text="Табела %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Додатак %n, %t"/>
+<l:template name="bridgehead" text="Одељак %n, „%t“"/>
+<l:template name="chapter" text="Поглавље %n, %t"/>
+<l:template name="equation" text="Једначина %n, „%t“"/>
+<l:template name="example" text="Пример %n, „%t“"/>
+<l:template name="figure" text="Слика %n, „%t“"/>
+<l:template name="part" text="Део %n, „%t“"/>
+<l:template name="procedure" text="ПоÑтупак %n, „%t“"/>
+<l:template name="productionset" text="Продукција %n, „%t“"/>
+<l:template name="qandadiv" text="П и О %n, „%t“"/>
+<l:template name="refsect1" text="одељак под именом „%t“"/>
+<l:template name="refsect2" text="одељак под именом „%t“"/>
+<l:template name="refsect3" text="одељак под именом „%t“"/>
+<l:template name="refsection" text="одељак под именом „%t“"/>
+<l:template name="sect1" text="Одељак %n, „%t“"/>
+<l:template name="sect2" text="Одељак %n, „%t“"/>
+<l:template name="sect3" text="Одељак %n, „%t“"/>
+<l:template name="sect4" text="Одељак %n, „%t“"/>
+<l:template name="sect5" text="Одељак %n, „%t“"/>
+<l:template name="section" text="Одељак %n, „%t“"/>
+<l:template name="simplesect" text="одељак под именом „%t“"/>
+<l:template name="table" text="Табела %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" и "/>
+<l:template name="seplast" text=", и "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Види %t."/>
+<l:template name="seealso" text="Види такође %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Публика: "/>
+<l:template name="MsgLevel" text="Ðиво: "/>
+<l:template name="MsgOrig" text="Извор: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y."/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Дефиниција: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="јануар"/>
+<l:template name="February" text="фебруар"/>
+<l:template name="March" text="март"/>
+<l:template name="April" text="април"/>
+<l:template name="May" text="мај"/>
+<l:template name="June" text="јун"/>
+<l:template name="July" text="јул"/>
+<l:template name="August" text="авгуÑÑ‚"/>
+<l:template name="September" text="Ñептембар"/>
+<l:template name="October" text="октобар"/>
+<l:template name="November" text="новембар"/>
+<l:template name="December" text="децембар"/>
+<l:template name="Monday" text="понедељак"/>
+<l:template name="Tuesday" text="уторак"/>
+<l:template name="Wednesday" text="Ñреда"/>
+<l:template name="Thursday" text="четвртак"/>
+<l:template name="Friday" text="петак"/>
+<l:template name="Saturday" text="Ñубота"/>
+<l:template name="Sunday" text="недеља"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="јан"/>
+<l:template name="Feb" text="феб"/>
+<l:template name="Mar" text="мар"/>
+<l:template name="Apr" text="апр"/>
+<l:template name="May" text="мај"/>
+<l:template name="Jun" text="јун"/>
+<l:template name="Jul" text="јул"/>
+<l:template name="Aug" text="авг"/>
+<l:template name="Sep" text="Ñеп"/>
+<l:template name="Oct" text="окт"/>
+<l:template name="Nov" text="нов"/>
+<l:template name="Dec" text="дец"/>
+<l:template name="Mon" text="пон"/>
+<l:template name="Tue" text="уто"/>
+<l:template name="Wed" text="Ñре"/>
+<l:template name="Thu" text="чет"/>
+<l:template name="Fri" text="пет"/>
+<l:template name="Sat" text="Ñуб"/>
+<l:template name="Sun" text="нед"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0C1A Serbian (Cyrillic)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Симболи</l:l>
+<l:l i="1">Ð</l:l>
+<l:l i="1">а</l:l>
+<l:l i="2">Б</l:l>
+<l:l i="2">б</l:l>
+<l:l i="3">Ð’</l:l>
+<l:l i="3">в</l:l>
+<l:l i="4">Г</l:l>
+<l:l i="4">г</l:l>
+<l:l i="5">Д</l:l>
+<l:l i="5">д</l:l>
+<l:l i="6">Ђ</l:l>
+<l:l i="6">Ñ’</l:l>
+<l:l i="7">Е</l:l>
+<l:l i="7">е</l:l>
+<l:l i="8">Ж</l:l>
+<l:l i="8">ж</l:l>
+<l:l i="9">З</l:l>
+<l:l i="9">з</l:l>
+<l:l i="10">И</l:l>
+<l:l i="10">и</l:l>
+<l:l i="11">Ј</l:l>
+<l:l i="11">ј</l:l>
+<l:l i="12">К</l:l>
+<l:l i="12">к</l:l>
+<l:l i="13">Л</l:l>
+<l:l i="13">л</l:l>
+<l:l i="14">Љ</l:l>
+<l:l i="14">Ñ™</l:l>
+<l:l i="15">М</l:l>
+<l:l i="15">м</l:l>
+<l:l i="16">Ð</l:l>
+<l:l i="16">н</l:l>
+<l:l i="17">Њ</l:l>
+<l:l i="17">Ñš</l:l>
+<l:l i="18">О</l:l>
+<l:l i="18">о</l:l>
+<l:l i="19">П</l:l>
+<l:l i="19">п</l:l>
+<l:l i="20">Р</l:l>
+<l:l i="20">Ñ€</l:l>
+<l:l i="21">С</l:l>
+<l:l i="21">Ñ</l:l>
+<l:l i="22">Т</l:l>
+<l:l i="22">Ñ‚</l:l>
+<l:l i="23">Ћ</l:l>
+<l:l i="23">Ñ›</l:l>
+<l:l i="24">У</l:l>
+<l:l i="24">у</l:l>
+<l:l i="25">Ф</l:l>
+<l:l i="25">Ñ„</l:l>
+<l:l i="26">Ð¥</l:l>
+<l:l i="26">Ñ…</l:l>
+<l:l i="27">Ц</l:l>
+<l:l i="27">ц</l:l>
+<l:l i="28">Ч</l:l>
+<l:l i="28">ч</l:l>
+<l:l i="29">Ð</l:l>
+<l:l i="29">ÑŸ</l:l>
+<l:l i="30">Ш</l:l>
+<l:l i="30">ш</l:l>
+<l:l i="31">A</l:l>
+<l:l i="31">a</l:l>
+<l:l i="32">B</l:l>
+<l:l i="32">b</l:l>
+<l:l i="33">C</l:l>
+<l:l i="33">c</l:l>
+<l:l i="34">D</l:l>
+<l:l i="34">d</l:l>
+<l:l i="35">E</l:l>
+<l:l i="35">e</l:l>
+<l:l i="36">F</l:l>
+<l:l i="36">f</l:l>
+<l:l i="37">G</l:l>
+<l:l i="37">g</l:l>
+<l:l i="38">H</l:l>
+<l:l i="38">h</l:l>
+<l:l i="39">I</l:l>
+<l:l i="39">i</l:l>
+<l:l i="40">J</l:l>
+<l:l i="40">j</l:l>
+<l:l i="41">K</l:l>
+<l:l i="41">k</l:l>
+<l:l i="42">L</l:l>
+<l:l i="42">l</l:l>
+<l:l i="43">M</l:l>
+<l:l i="43">m</l:l>
+<l:l i="44">N</l:l>
+<l:l i="44">n</l:l>
+<l:l i="45">O</l:l>
+<l:l i="45">o</l:l>
+<l:l i="46">P</l:l>
+<l:l i="46">p</l:l>
+<l:l i="47">Q</l:l>
+<l:l i="47">Q</l:l>
+<l:l i="48">R</l:l>
+<l:l i="48">r</l:l>
+<l:l i="49">S</l:l>
+<l:l i="49">s</l:l>
+<l:l i="50">T</l:l>
+<l:l i="50">t</l:l>
+<l:l i="51">U</l:l>
+<l:l i="51">u</l:l>
+<l:l i="52">V</l:l>
+<l:l i="52">v</l:l>
+<l:l i="53">W</l:l>
+<l:l i="53">w</l:l>
+<l:l i="54">X</l:l>
+<l:l i="54">x</l:l>
+<l:l i="55">Y</l:l>
+<l:l i="55">y</l:l>
+<l:l i="56">Z</l:l>
+<l:l i="56">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml
new file mode 100644
index 0000000..7ebb8da
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml
@@ -0,0 +1,679 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sr_latn" english-language-name="Serbian in Latin script">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sr_Latn.xml -->
+<!-- * -->
+<!-- * E-mail the edited sr_Latn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sažetak"/>
+<l:gentext key="abstract" text="sažetak"/>
+<l:gentext key="Acknowledgements" text="Priznanja"/>
+<l:gentext key="acknowledgements" text="priznanja"/>
+<l:gentext key="Answer" text="O:"/>
+<l:gentext key="answer" text="o:"/>
+<l:gentext key="Appendix" text="Dodatak"/>
+<l:gentext key="appendix" text="dodatak"/>
+<l:gentext key="Article" text="ÄŒlanak"/>
+<l:gentext key="article" text="Älanak"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="knjiga"/>
+<l:gentext key="CAUTION" text="UPOZORENJE"/>
+<l:gentext key="Caution" text="Upozorenje"/>
+<l:gentext key="caution" text="upozorenje"/>
+<l:gentext key="Chapter" text="Poglavlje"/>
+<l:gentext key="chapter" text="poglavlje"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Autorska prava"/>
+<l:gentext key="copyright" text="autorska prava"/>
+<l:gentext key="Dedication" text="Posveta"/>
+<l:gentext key="dedication" text="posveta"/>
+<l:gentext key="Edition" text="Izdanje"/>
+<l:gentext key="edition" text="izdanje"/>
+<l:gentext key="Editor" text="Urednik"/>
+<l:gentext key="Equation" text="JednaÄina"/>
+<l:gentext key="equation" text="jednaÄina"/>
+<l:gentext key="Example" text="Primer"/>
+<l:gentext key="example" text="primer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="slika"/>
+<l:gentext key="Glossary" text="ReÄnik"/>
+<l:gentext key="glossary" text="reÄnik"/>
+<l:gentext key="GlossSee" text="Vidi"/>
+<l:gentext key="glosssee" text="vidi"/>
+<l:gentext key="GlossSeeAlso" text="Vidi takođe"/>
+<l:gentext key="glossseealso" text="vidi takođe"/>
+<l:gentext key="IMPORTANT" text="VAŽNO"/>
+<l:gentext key="important" text="važno"/>
+<l:gentext key="Important" text="Važno"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravna napomena"/>
+<l:gentext key="legalnotice" text="pravna napomena"/>
+<l:gentext key="MsgAud" text="Publika"/>
+<l:gentext key="msgaud" text="publika"/>
+<l:gentext key="MsgLevel" text="Nivo"/>
+<l:gentext key="msglevel" text="nivo"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="izvor"/>
+<l:gentext key="NOTE" text="PRIMEDBA"/>
+<l:gentext key="Note" text="Primedba"/>
+<l:gentext key="note" text="primedba"/>
+<l:gentext key="Part" text="Deo"/>
+<l:gentext key="part" text="deo"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="predgovor"/>
+<l:gentext key="Procedure" text="Postupak"/>
+<l:gentext key="procedure" text="postupak"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="Datum izdavanja"/>
+<l:gentext key="pubdate" text="datum izdavanja"/>
+<l:gentext key="Published" text="Izdano"/>
+<l:gentext key="published" text="izdano"/>
+<l:gentext key="Publisher" text="IzdavaÄ"/>
+<l:gentext key="Qandadiv" text="P i O"/>
+<l:gentext key="qandadiv" text="p i o"/>
+<l:gentext key="QandASet" text="ÄŒesto postavljana pitanja"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="p:"/>
+<l:gentext key="RefEntry" text="Stranica"/>
+<l:gentext key="refentry" text="stranica"/>
+<l:gentext key="Reference" text="Referenca"/>
+<l:gentext key="reference" text="referenca"/>
+<l:gentext key="References" text="Reference"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="ime"/>
+<l:gentext key="RefSection" text="Odeljak"/>
+<l:gentext key="refsection" text="odeljak"/>
+<l:gentext key="RefSynopsisDiv" text="Pregled"/>
+<l:gentext key="refsynopsisdiv" text="pregled"/>
+<l:gentext key="RevHistory" text="Istorija revizija"/>
+<l:gentext key="revhistory" text="istorija revizija"/>
+<l:gentext key="revision" text="revizija"/>
+<l:gentext key="Revision" text="Revizija"/>
+<l:gentext key="sect1" text="Odeljak"/>
+<l:gentext key="sect2" text="Odeljak"/>
+<l:gentext key="sect3" text="Odeljak"/>
+<l:gentext key="sect4" text="Odeljak"/>
+<l:gentext key="sect5" text="Odeljak"/>
+<l:gentext key="section" text="odeljak"/>
+<l:gentext key="Section" text="Odeljak"/>
+<l:gentext key="see" text="vidi"/>
+<l:gentext key="See" text="Vidi"/>
+<l:gentext key="seealso" text="vidi takođe"/>
+<l:gentext key="Seealso" text="Vidi takođe"/>
+<l:gentext key="SeeAlso" text="Vidi takođe"/>
+<l:gentext key="set" text="skup"/>
+<l:gentext key="Set" text="Skup"/>
+<l:gentext key="setindex" text="indeks skupa"/>
+<l:gentext key="SetIndex" text="Indeks skupa"/>
+<l:gentext key="Sidebar" text="BoÄna traka"/>
+<l:gentext key="sidebar" text="boÄna traka"/>
+<l:gentext key="step" text="korak"/>
+<l:gentext key="Step" text="Korak"/>
+<l:gentext key="table" text="tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="zadatak"/>
+<l:gentext key="Task" text="Zadatak"/>
+<l:gentext key="tip" text="savet"/>
+<l:gentext key="TIP" text="SAVET"/>
+<l:gentext key="Tip" text="Savet"/>
+<l:gentext key="Warning" text="Upozorenje"/>
+<l:gentext key="warning" text="upozorenje"/>
+<l:gentext key="WARNING" text="UPOZORENJE"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="od"/>
+<l:gentext key="Edited" text="Uređeno"/>
+<l:gentext key="edited" text="uređeno"/>
+<l:gentext key="Editedby" text="Uredio(la)"/>
+<l:gentext key="editedby" text="Uredio(la)"/>
+<l:gentext key="in" text="u"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="primedbe"/>
+<l:gentext key="Notes" text="Primedbe"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="str."/>
+<l:gentext key="Revisedby" text="Pregledao(la): "/>
+<l:gentext key="revisedby" text="pregledao(la): "/>
+<l:gentext key="TableNotes" text="Primedbe"/>
+<l:gentext key="tablenotes" text="primedbe"/>
+<l:gentext key="TableofContents" text="Sadržaj"/>
+<l:gentext key="tableofcontents" text="sadržaj"/>
+<l:gentext key="unexpectedelementname" text="neoÄekivano ime elementa"/>
+<l:gentext key="unsupported" text="nije podržano"/>
+<l:gentext key="xrefto" text="unakrsna referenca na"/>
+<l:gentext key="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="IzdavaÄki urednik"/>
+<l:gentext key="graphicdesigner" text="GrafiÄki dizajner"/>
+<l:gentext key="productioneditor" text="Izvršni urednik"/>
+<l:gentext key="technicaleditor" text="TehniÄki urednik"/>
+<l:gentext key="translator" text="Prevodilac"/>
+<l:gentext key="listofequations" text="spisak jednaÄina"/>
+<l:gentext key="ListofEquations" text="Spisak jednaÄina"/>
+<l:gentext key="ListofExamples" text="Spisak primera"/>
+<l:gentext key="listofexamples" text="spisak primera"/>
+<l:gentext key="ListofFigures" text="Spisak slika"/>
+<l:gentext key="listoffigures" text="spisak slika"/>
+<l:gentext key="ListofProcedures" text="Spisak postupaka"/>
+<l:gentext key="listofprocedures" text="spisak postupaka"/>
+<l:gentext key="listoftables" text="spisak tabela"/>
+<l:gentext key="ListofTables" text="Spisak tabela"/>
+<l:gentext key="ListofUnknown" text="spisak nepoznatih"/>
+<l:gentext key="listofunknown" text="Spisak nepoznatih"/>
+<l:gentext key="nav-home" text="PoÄetak"/>
+<l:gentext key="nav-next" text="Sledeći"/>
+<l:gentext key="nav-next-sibling" text="Brzo napred"/>
+<l:gentext key="nav-prev" text="Prethodni"/>
+<l:gentext key="nav-prev-sibling" text="Brzo nazad"/>
+<l:gentext key="nav-up" text="Vrh"/>
+<l:gentext key="nav-toc" text="Sadr."/>
+<l:gentext key="Draft" text="Nacrt"/>
+<l:gentext key="above" text="iznad"/>
+<l:gentext key="below" text="ispod"/>
+<l:gentext key="sectioncalled" text="odeljak pod imenom"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcÄćdÄ‘efghijklmnopqrsÅ¡tuvwxyzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČĆDÄEFGHIJKLMNOPQRSÅ TUVWXYZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="ime-prezime"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="JednaÄina %n. %t"/>
+<l:template name="example" text="Primer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Deo %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postupak %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="part" text="Deo %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" u %o"/>
+<l:template name="olink.page.citation" text=" (str. %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(strana %p)"/>
+<l:template name="docname" text=" u %o"/>
+<l:template name="docnamelong" text=" u dokumentu sa naslovom %o"/>
+<l:template name="pageabbrev" text="(str. %p)"/>
+<l:template name="Page" text="Strana %p"/>
+<l:template name="bridgehead" text="odeljak pod imenom „%t“"/>
+<l:template name="refsection" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect1" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect2" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect3" text="odeljak pod imenom „%t“"/>
+<l:template name="sect1" text="odeljak pod imenom „%t“"/>
+<l:template name="sect2" text="odeljak pod imenom „%t“"/>
+<l:template name="sect3" text="odeljak pod imenom „%t“"/>
+<l:template name="sect4" text="odeljak pod imenom „%t“"/>
+<l:template name="sect5" text="odeljak pod imenom „%t“"/>
+<l:template name="section" text="odeljak pod imenom „%t“"/>
+<l:template name="simplesect" text="odeljak pod imenom „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="Dodatak %n"/>
+<l:template name="bridgehead" text="Odeljak %n"/>
+<l:template name="chapter" text="Poglavlje %n"/>
+<l:template name="equation" text="JednaÄina %n"/>
+<l:template name="example" text="Primer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Deo %n"/>
+<l:template name="procedure" text="Postupak %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="P i O %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Odeljak %n"/>
+<l:template name="sect2" text="Odeljak %n"/>
+<l:template name="sect3" text="Odeljak %n"/>
+<l:template name="sect4" text="Odeljak %n"/>
+<l:template name="sect5" text="Odeljak %n"/>
+<l:template name="section" text="Odeljak %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatak %n, %t"/>
+<l:template name="bridgehead" text="Odeljak %n, „%t“"/>
+<l:template name="chapter" text="Poglavlje %n, %t"/>
+<l:template name="equation" text="JednaÄina %n, „%t“"/>
+<l:template name="example" text="Primer %n, „%t“"/>
+<l:template name="figure" text="Slika %n, „%t“"/>
+<l:template name="part" text="Deo %n, „%t“"/>
+<l:template name="procedure" text="Postupak %n, „%t“"/>
+<l:template name="productionset" text="Produkcija %n, „%t“"/>
+<l:template name="qandadiv" text="P i O %n, „%t“"/>
+<l:template name="refsect1" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect2" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect3" text="odeljak pod imenom „%t“"/>
+<l:template name="refsection" text="odeljak pod imenom „%t“"/>
+<l:template name="sect1" text="Odeljak %n, „%t“"/>
+<l:template name="sect2" text="Odeljak %n, „%t“"/>
+<l:template name="sect3" text="Odeljak %n, „%t“"/>
+<l:template name="sect4" text="Odeljak %n, „%t“"/>
+<l:template name="sect5" text="Odeljak %n, „%t“"/>
+<l:template name="section" text="Odeljak %n, „%t“"/>
+<l:template name="simplesect" text="odeljak pod imenom „%t“"/>
+<l:template name="table" text="Tabela %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidi %t."/>
+<l:template name="seealso" text="Vidi takođe %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publika: "/>
+<l:template name="MsgLevel" text="Nivo: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y."/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definicija: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="januar"/>
+<l:template name="February" text="februar"/>
+<l:template name="March" text="mart"/>
+<l:template name="April" text="april"/>
+<l:template name="May" text="maj"/>
+<l:template name="June" text="jun"/>
+<l:template name="July" text="jul"/>
+<l:template name="August" text="avgust"/>
+<l:template name="September" text="septembar"/>
+<l:template name="October" text="oktobar"/>
+<l:template name="November" text="novembar"/>
+<l:template name="December" text="decembar"/>
+<l:template name="Monday" text="ponedeljak"/>
+<l:template name="Tuesday" text="utorak"/>
+<l:template name="Wednesday" text="sreda"/>
+<l:template name="Thursday" text="Äetvrtak"/>
+<l:template name="Friday" text="petak"/>
+<l:template name="Saturday" text="subota"/>
+<l:template name="Sunday" text="nedelja"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="maj"/>
+<l:template name="Jun" text="jun"/>
+<l:template name="Jul" text="jul"/>
+<l:template name="Aug" text="avg"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="okt"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="pon"/>
+<l:template name="Tue" text="uto"/>
+<l:template name="Wed" text="sre"/>
+<l:template name="Thu" text="Äet"/>
+<l:template name="Fri" text="pet"/>
+<l:template name="Sat" text="sub"/>
+<l:template name="Sun" text="ned"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x081a Serbian (Latin)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simboli</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Č</l:l>
+<l:l i="4">Ä</l:l>
+<l:l i="5">Ć</l:l>
+<l:l i="5">ć</l:l>
+<l:l i="6">D</l:l>
+<l:l i="6">d</l:l>
+<l:l i="7">DŽ</l:l>
+<l:l i="7">Dž</l:l>
+<l:l i="7">dž</l:l>
+<l:l i="8">Ä</l:l>
+<l:l i="8">Ä‘</l:l>
+<l:l i="9">E</l:l>
+<l:l i="9">e</l:l>
+<l:l i="10">F</l:l>
+<l:l i="10">f</l:l>
+<l:l i="11">G</l:l>
+<l:l i="11">g</l:l>
+<l:l i="12">H</l:l>
+<l:l i="12">h</l:l>
+<l:l i="13">I</l:l>
+<l:l i="13">i</l:l>
+<l:l i="14">J</l:l>
+<l:l i="14">j</l:l>
+<l:l i="15">K</l:l>
+<l:l i="15">k</l:l>
+<l:l i="16">L</l:l>
+<l:l i="16">l</l:l>
+<l:l i="17">LJ</l:l>
+<l:l i="17">Lj</l:l>
+<l:l i="17">lj</l:l>
+<l:l i="18">M</l:l>
+<l:l i="18">m</l:l>
+<l:l i="19">N</l:l>
+<l:l i="19">n</l:l>
+<l:l i="20">NJ</l:l>
+<l:l i="20">Nj</l:l>
+<l:l i="20">nj</l:l>
+<l:l i="21">O</l:l>
+<l:l i="21">o</l:l>
+<l:l i="22">P</l:l>
+<l:l i="22">p</l:l>
+<l:l i="23">Q</l:l>
+<l:l i="23">Q</l:l>
+<l:l i="24">R</l:l>
+<l:l i="24">r</l:l>
+<l:l i="25">S</l:l>
+<l:l i="25">s</l:l>
+<l:l i="26">Å </l:l>
+<l:l i="26">Å¡</l:l>
+<l:l i="27">T</l:l>
+<l:l i="27">t</l:l>
+<l:l i="28">U</l:l>
+<l:l i="28">u</l:l>
+<l:l i="29">V</l:l>
+<l:l i="29">v</l:l>
+<l:l i="30">W</l:l>
+<l:l i="30">w</l:l>
+<l:l i="31">X</l:l>
+<l:l i="31">x</l:l>
+<l:l i="32">Y</l:l>
+<l:l i="32">y</l:l>
+<l:l i="33">Z</l:l>
+<l:l i="33">z</l:l>
+<l:l i="34">Ž</l:l>
+<l:l i="34">ž</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl
new file mode 100644
index 0000000..56009d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl
@@ -0,0 +1,352 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:NodeInfo="http://org.apache.xalan.lib.NodeInfo"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="db ng exsl saxon NodeInfo xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: stripns.xsl 8728 2010-07-15 14:37:33Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- put an xml:base attribute on the root element -->
+<xsl:template match="/*" mode="stripNS">
+ <xsl:choose>
+ <xsl:when test="self::ng:* or self::db:*">
+ <xsl:element name="{local-name(.)}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="add-xml-base"/>
+
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="add-xml-base"/>
+
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="stripNS">
+ <xsl:choose>
+ <xsl:when test="self::ng:* or self::db:*">
+ <xsl:element name="{local-name(.)}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="db:info" mode="stripNS">
+ <xsl:variable name="info">
+ <xsl:choose>
+ <xsl:when test="parent::db:article
+ |parent::db:appendix
+ |parent::db:bibliography
+ |parent::db:book
+ |parent::db:chapter
+ |parent::db:glossary
+ |parent::db:index
+ |parent::db:part
+ |parent::db:preface
+ |parent::db:refentry
+ |parent::db:reference
+ |parent::db:refsect1
+ |parent::db:refsect2
+ |parent::db:refsect3
+ |parent::db:refsection
+ |parent::db:refsynopsisdiv
+ |parent::db:sect1
+ |parent::db:sect2
+ |parent::db:sect3
+ |parent::db:sect4
+ |parent::db:sect5
+ |parent::db:section
+ |parent::db:setindex
+ |parent::db:set
+ |parent::db:slides
+ |parent::db:sidebar">
+ <xsl:value-of select="local-name(parent::*)"/>
+ <xsl:text>info</xsl:text>
+ </xsl:when>
+ <xsl:when test="parent::db:audioobject
+ |parent::db:imageobject
+ |parent::db:inlinemediaobject
+ |parent::db:mediaobject
+ |parent::db:mediaobjectco
+ |parent::db:textobject
+ |parent::db:videoobject">
+ <xsl:text>objectinfo</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>blockinfo</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$info}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+
+ <xsl:if test="(not(../db:title) and not(../ng:title))
+ and ($info = 'prefaceinfo'
+ or $info = 'chapterinfo'
+ or $info = 'sectioninfo'
+ or $info = 'sect1info'
+ or $info = 'sect2info'
+ or $info = 'sect3info'
+ or $info = 'sect4info'
+ or $info = 'sect5info'
+ or $info = 'refsectioninfo'
+ or $info = 'refsect1info'
+ or $info = 'refsect2info'
+ or $info = 'refsect3info'
+ or $info = 'blockinfo'
+ or $info = 'appendixinfo')">
+ <xsl:apply-templates select="db:title|ng:title" mode="stripNS"/>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="ng:tag|db:tag" mode="stripNS">
+ <xsl:choose>
+ <xsl:when test="@xlink:href">
+ <ulink url="{@xlink:href}">
+ <sgmltag>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')
+ and not(local-name(.) = 'href')]"/>
+ <xsl:apply-templates mode="stripNS"/>
+ </sgmltag>
+ </ulink>
+ </xsl:when>
+ <xsl:otherwise>
+ <sgmltag>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:apply-templates mode="stripNS"/>
+ </sgmltag>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="db:link[@xlink:href]" mode="stripNS">
+ <ulink url="{@xlink:href}">
+ <xsl:if test="@role">
+ <xsl:attribute name="role">
+ <xsl:value-of select="@role"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </ulink>
+</xsl:template>
+
+<xsl:template match="db:citetitle[@xlink:href]" mode="stripNS">
+ <ulink url="{@xlink:href}">
+ <citetitle>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')
+ and not(local-name(.) = 'href')]"/>
+ <xsl:apply-templates mode="stripNS"/>
+ </citetitle>
+ </ulink>
+</xsl:template>
+
+<xsl:template match="db:citetitle[@linkend]" mode="stripNS">
+ <citetitle>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')
+ and not(name(.) = 'linkend')
+ and not(local-name(.) = 'href')]"/>
+ <xsl:apply-templates mode="stripNS"/>
+ </citetitle>
+</xsl:template>
+
+<xsl:template match="db:alt" mode="stripNS"/>
+
+<xsl:template match="ng:textdata|db:textdata
+ |ng:imagedata|db:imagedata
+ |ng:videodata|db:videodata
+ |ng:audiodata|db:audiodata" mode="stripNS">
+ <xsl:element name="{local-name(.)}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')
+ and not(name(.) = 'entityref')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:attribute name="fileref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="add-xml-base">
+ <xsl:if test="not(@xml:base)">
+ <xsl:variable name="base">
+ <xsl:choose>
+ <xsl:when test="function-available('saxon:systemId')">
+ <xsl:value-of select="saxon:systemId()"/>
+ </xsl:when>
+ <xsl:when test="function-available('NodeInfo:systemId')">
+ <xsl:value-of select="NodeInfo:systemId()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>WARNING: cannot add @xml:base to node </xsl:text>
+ <xsl:text>set root element. </xsl:text>
+ <xsl:text>Relative paths may not work.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- debug
+ <xsl:message>base is <xsl:value-of select="$base"/></xsl:message>
+ -->
+ <xsl:if test="$base != ''">
+ <xsl:attribute name="xml:base">
+ <xsl:call-template name="systemIdToBaseURI">
+ <xsl:with-param name="systemId">
+ <!-- file: seems to confuse some processors. -->
+ <xsl:choose>
+ <!-- however, windows paths must use file:///c:/path -->
+ <xsl:when test="starts-with($base, 'file:///') and
+ substring($base, 10, 1) = ':'">
+ <xsl:value-of select="$base"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file:/')
+ and substring($base, 8, 1) = ':'">
+ <xsl:value-of select="concat('file:///',
+ substring-after($base,'file:/'))"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file:///')">
+ <xsl:value-of select="substring-after($base,'file://')"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file://')">
+ <xsl:value-of select="substring-after($base,'file:/')"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file:/')">
+ <xsl:value-of select="substring-after($base,'file:')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="systemIdToBaseURI">
+ <xsl:param name="systemId" select="''"/>
+ <xsl:if test="contains($systemId,'/')">
+ <xsl:value-of select="substring-before($systemId,'/')"/>
+ <xsl:text>/</xsl:text>
+ <xsl:call-template name="systemIdToBaseURI">
+ <xsl:with-param name="systemId"
+ select="substring-after($systemId,'/')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()" mode="stripNS">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="/" priority="-1">
+ <!-- need a local version of this variable because this module imported many places-->
+ <xsl:variable name="local.exsl.node.set.available">
+ <xsl:choose>
+ <xsl:when exsl:foo="" xmlns:exsl="http://exslt.org/common"
+ test="function-available('exsl:node-set') or
+ contains(system-property('xsl:vendor'),
+ 'Apache Software Foundation')">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$local.exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:message>
+ <xsl:text>Stripping namespace from DocBook 5 document. </xsl:text>
+ <xsl:text>It is suggested to use namespaced version of the stylesheets </xsl:text>
+ <xsl:text>available in distribution file 'docbook-xsl-ns' </xsl:text>
+ <xsl:text>at //http://sourceforge.net/projects/docbook/files/</xsl:text>
+ <xsl:text> which does not require namespace stripping step.</xsl:text>
+ </xsl:message>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:message>Processing stripped document.</xsl:message>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl
new file mode 100644
index 0000000..8211c84
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl
@@ -0,0 +1,155 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: subtitles.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- subtitle markup -->
+
+<doc:mode mode="subtitle.markup" xmlns="">
+<refpurpose>Provides access to element subtitles</refpurpose>
+<refdescription id="subtitle.markup-desc">
+<para>Processing an element in the
+<literal role="mode">subtitle.markup</literal> mode produces the
+subtitle of the element.
+</para>
+</refdescription>
+</doc:mode>
+
+<xsl:template match="*" mode="subtitle.markup">
+ <xsl:message>
+ <xsl:text>Request for subtitle of unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:message>
+ <xsl:text>???SUBTITLE???</xsl:text>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="set" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(setinfo/subtitle|info/subtitle|subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="book" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(bookinfo/subtitle|info/subtitle|subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="part" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(partinfo/subtitle
+ |docinfo/subtitle
+ |info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(docinfo/subtitle
+ |info/subtitle
+ |prefaceinfo/subtitle
+ |chapterinfo/subtitle
+ |appendixinfo/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="article" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(artheader/subtitle
+ |articleinfo/subtitle
+ |info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="dedication|colophon" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(subtitle|info/subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="reference" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(referenceinfo/subtitle
+ |docinfo/subtitle
+ |info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(blockinfo/subtitle|info/subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(refentryinfo/subtitle
+ |info/subtitle
+ |docinfo/subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3
+ |simplesect"
+ mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(info/subtitle
+ |sectioninfo/subtitle
+ |sect1info/subtitle
+ |sect2info/subtitle
+ |sect3info/subtitle
+ |sect4info/subtitle
+ |sect5info/subtitle
+ |refsect1info/subtitle
+ |refsect2info/subtitle
+ |refsect3info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml
new file mode 100644
index 0000000..354c48b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sv" english-language-name="Swedish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sv.xml -->
+<!-- * -->
+<!-- * E-mail the edited sv.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sammanfattning"/>
+<l:gentext key="abstract" text="Sammanfattning"/>
+<l:gentext key="Acknowledgements" text="Tack till"/>
+<l:gentext key="acknowledgements" text="Tack till"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Appendix"/>
+<l:gentext key="appendix" text="appendix"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="Artikel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografi"/>
+<l:gentext key="bibliography" text="Bibliografi"/>
+<l:gentext key="Book" text="Bok"/>
+<l:gentext key="book" text="Bok"/>
+<l:gentext key="CAUTION" text="OBSERVERA"/>
+<l:gentext key="Caution" text="Observera"/>
+<l:gentext key="caution" text="Observera"/>
+<l:gentext key="Chapter" text="Kapitel"/>
+<l:gentext key="chapter" text="kapitel"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedikation"/>
+<l:gentext key="dedication" text="Dedikation"/>
+<l:gentext key="Edition" text="Utgåva"/>
+<l:gentext key="edition" text="Utgåva"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ekvation"/>
+<l:gentext key="equation" text="Ekvation"/>
+<l:gentext key="Example" text="Exempel"/>
+<l:gentext key="example" text="Exempel"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="Figur"/>
+<l:gentext key="Glossary" text="Gloslista"/>
+<l:gentext key="glossary" text="Gloslista"/>
+<l:gentext key="GlossSee" text="Se"/>
+<l:gentext key="glosssee" text="Se"/>
+<l:gentext key="GlossSeeAlso" text="Se Även"/>
+<l:gentext key="glossseealso" text="Se Även"/>
+<l:gentext key="IMPORTANT" text="VIKTIGT"/>
+<l:gentext key="important" text="Viktigt"/>
+<l:gentext key="Important" text="Viktigt"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Rättsligt Meddelande"/>
+<l:gentext key="legalnotice" text="rättsligt meddelande"/>
+<l:gentext key="MsgAud" text="MÃ¥lgrupp"/>
+<l:gentext key="msgaud" text="MÃ¥lgrupp"/>
+<l:gentext key="MsgLevel" text="Nivå"/>
+<l:gentext key="msglevel" text="Nivå"/>
+<l:gentext key="MsgOrig" text="Ursprung"/>
+<l:gentext key="msgorig" text="Ursprung"/>
+<l:gentext key="NOTE" text="NOTERA"/>
+<l:gentext key="Note" text="Notera"/>
+<l:gentext key="note" text="Notera"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="Del"/>
+<l:gentext key="Preface" text="Företal"/>
+<l:gentext key="preface" text="Företal"/>
+<l:gentext key="Procedure" text="Procedur"/>
+<l:gentext key="procedure" text="Procedur"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Publicerad"/>
+<l:gentext key="published" text="Publicerad"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Fråga och A"/>
+<l:gentext key="qandadiv" text="Fråga och A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Fråga:"/>
+<l:gentext key="question" text="Fråga:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referens"/>
+<l:gentext key="reference" text="Referens"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Namn"/>
+<l:gentext key="refname" text="Namn"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revisionshistorik"/>
+<l:gentext key="revhistory" text="Revisionshistorik"/>
+<l:gentext key="revision" text="Revision"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="avsnitt"/>
+<l:gentext key="Section" text="Avsnitt"/>
+<l:gentext key="see" text="se"/>
+<l:gentext key="See" text="Se"/>
+<l:gentext key="seealso" text="se även"/>
+<l:gentext key="Seealso" text="Se även"/>
+<l:gentext key="SeeAlso" text="Se Även"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text="Sidebar"/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="steg"/>
+<l:gentext key="Step" text="Steg"/>
+<l:gentext key="table" text="Tabell"/>
+<l:gentext key="Table" text="Tabell"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tips"/>
+<l:gentext key="TIP" text="TIPS"/>
+<l:gentext key="Tip" text="Tips"/>
+<l:gentext key="Warning" text="Varning"/>
+<l:gentext key="warning" text="Varning"/>
+<l:gentext key="WARNING" text="VARNING"/>
+<l:gentext key="and" text="och"/>
+<l:gentext key="by" text="av"/>
+<l:gentext key="Edited" text="Redigerad"/>
+<l:gentext key="edited" text="Redigerad"/>
+<l:gentext key="Editedby" text="Redigerad av"/>
+<l:gentext key="editedby" text="Redigerad av"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Noter"/>
+<l:gentext key="Notes" text="Noter"/>
+<l:gentext key="Pgs" text="Sid."/>
+<l:gentext key="pgs" text="Sid."/>
+<l:gentext key="Revisedby" text="Reviderad av: "/>
+<l:gentext key="revisedby" text="Reviderad av: "/>
+<l:gentext key="TableNotes" text="Noter"/>
+<l:gentext key="tablenotes" text="Noter"/>
+<l:gentext key="TableofContents" text="Innehållsförteckning"/>
+<l:gentext key="tableofcontents" text="Innehållsförteckning"/>
+<l:gentext key="unexpectedelementname" text="Oväntat elementnamn"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="korsreferens till"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Ekvationsförteckning"/>
+<l:gentext key="ListofEquations" text="Ekvationsförteckning"/>
+<l:gentext key="ListofExamples" text="Exempelförteckning"/>
+<l:gentext key="listofexamples" text="Exempelförteckning"/>
+<l:gentext key="ListofFigures" text="Figurförteckning"/>
+<l:gentext key="listoffigures" text="Figurförteckning"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Tabellförteckning"/>
+<l:gentext key="ListofTables" text="Tabellförteckning"/>
+<l:gentext key="ListofUnknown" text="Förteckning av okända"/>
+<l:gentext key="listofunknown" text="Förteckning av okända"/>
+<l:gentext key="nav-home" text="Hem"/>
+<l:gentext key="nav-next" text="Nästa"/>
+<l:gentext key="nav-next-sibling" text="Snabbt framåt"/>
+<l:gentext key="nav-prev" text="Föregående"/>
+<l:gentext key="nav-prev-sibling" text="Snabbt bakåt"/>
+<l:gentext key="nav-up" text="Upp"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Utkast"/>
+<l:gentext key="above" text="ovan"/>
+<l:gentext key="below" text="nedan"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symboler"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzåäö"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="â€"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="’"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekvation %n. %t"/>
+<l:template name="example" text="Exempel %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t" lang="en"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabell %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s" lang="en"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Fråga: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Fråga: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="â€%tâ€"/>
+<l:template name="refsection" text="â€%tâ€"/>
+<l:template name="refsect1" text="â€%tâ€"/>
+<l:template name="refsect2" text="â€%tâ€"/>
+<l:template name="refsect3" text="â€%tâ€"/>
+<l:template name="sect1" text="â€%tâ€"/>
+<l:template name="sect2" text="â€%tâ€"/>
+<l:template name="sect3" text="â€%tâ€"/>
+<l:template name="sect4" text="â€%tâ€"/>
+<l:template name="sect5" text="â€%tâ€"/>
+<l:template name="section" text="â€%tâ€"/>
+<l:template name="simplesect" text="â€%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Appendix %n"/>
+<l:template name="bridgehead" text="Avsnitt %n"/>
+<l:template name="chapter" text="Kapitel %n"/>
+<l:template name="equation" text="Ekvation %n"/>
+<l:template name="example" text="Exempel %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Procedur %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Fråga och A %n"/>
+<l:template name="qandaentry" text="Fråga: %n"/>
+<l:template name="question" text="Fråga: %n"/>
+<l:template name="sect1" text="Avsnitt %n"/>
+<l:template name="sect2" text="Avsnitt %n"/>
+<l:template name="sect3" text="Avsnitt %n"/>
+<l:template name="sect4" text="Avsnitt %n"/>
+<l:template name="sect5" text="Avsnitt %n"/>
+<l:template name="section" text="Avsnitt %n"/>
+<l:template name="table" text="Tabell %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendix %n, %t"/>
+<l:template name="bridgehead" text="Avsnitt %n, â€%tâ€"/>
+<l:template name="chapter" text="Kapitel %n, %t"/>
+<l:template name="equation" text="Ekvation %n, â€%tâ€"/>
+<l:template name="example" text="Exempel %n, â€%tâ€"/>
+<l:template name="figure" text="Figur %n, â€%tâ€"/>
+<l:template name="part" text="Del %n, â€%tâ€"/>
+<l:template name="procedure" text="Procedur %n, â€%tâ€"/>
+<l:template name="productionset" text="Production %n, â€%tâ€"/>
+<l:template name="qandadiv" text="FrÃ¥ga och A %n, â€%tâ€"/>
+<l:template name="refsect1" text="the section called â€%tâ€"/>
+<l:template name="refsect2" text="the section called â€%tâ€"/>
+<l:template name="refsect3" text="the section called â€%tâ€"/>
+<l:template name="refsection" text="the section called â€%tâ€"/>
+<l:template name="sect1" text="Avsnitt %n, â€%tâ€"/>
+<l:template name="sect2" text="Avsnitt %n, â€%tâ€"/>
+<l:template name="sect3" text="Avsnitt %n, â€%tâ€"/>
+<l:template name="sect4" text="Avsnitt %n, â€%tâ€"/>
+<l:template name="sect5" text="Avsnitt %n, â€%tâ€"/>
+<l:template name="section" text="Avsnitt %n, â€%tâ€"/>
+<l:template name="simplesect" text="the section called â€%tâ€"/>
+<l:template name="table" text="Tabell %n, â€%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" och "/>
+<l:template name="seplast" text=" och "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Se %t."/>
+<l:template name="seealso" text="Se Även %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="MÃ¥lgrupp: "/>
+<l:template name="MsgLevel" text="Nivå: "/>
+<l:template name="MsgOrig" text="Ursprung: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d-m-Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januari"/>
+<l:template name="February" text="Februari"/>
+<l:template name="March" text="Mars"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="Augusti"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="MÃ¥ndag"/>
+<l:template name="Tuesday" text="Tisdag"/>
+<l:template name="Wednesday" text="Onsdag"/>
+<l:template name="Thursday" text="Torsdag"/>
+<l:template name="Friday" text="Fredag"/>
+<l:template name="Saturday" text="Lördag"/>
+<l:template name="Sunday" text="Söndag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tis"/>
+<l:template name="Wed" text="Ons"/>
+<l:template name="Thu" text="Tor"/>
+<l:template name="Fri" text="Fre"/>
+<l:template name="Sat" text="Lör"/>
+<l:template name="Sun" text="Sön"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041d Swedish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+<l:l i="27">Ã…</l:l>
+<l:l i="27">Ã¥</l:l>
+<l:l i="28">Ä</l:l>
+<l:l i="28">ä</l:l>
+<l:l i="29">Ö</l:l>
+<l:l i="29">ö</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml
new file mode 100644
index 0000000..873f1f9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ta" english-language-name="Tamil">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ta.xml -->
+<!-- * -->
+<!-- * E-mail the edited ta.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="சà¯à®°à¯à®•à¯à®•à®®à¯"/>
+<l:gentext key="abstract" text="சà¯à®°à¯à®•à¯à®•à®®à¯"/>
+<l:gentext key="Acknowledgements" text="ஒபà¯à®ªà¯à®¤à®²à¯à®•à®³à¯"/>
+<l:gentext key="acknowledgements" text="ஒபà¯à®ªà¯à®¤à®²à¯à®•à®³à¯"/>
+<l:gentext key="Answer" text="விடை:"/>
+<l:gentext key="answer" text="விடை:"/>
+<l:gentext key="Appendix" text="இணைபà¯à®ªà¯"/>
+<l:gentext key="appendix" text="இணைபà¯à®ªà¯"/>
+<l:gentext key="Article" text="கடà¯à®Ÿà¯à®°à¯ˆ"/>
+<l:gentext key="article" text="கடà¯à®Ÿà¯à®°à¯ˆ"/>
+<l:gentext key="Author" text="ஆசிரியரà¯"/>
+<l:gentext key="Bibliography" text="விவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="bibliography" text="விவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="Book" text="பà¯à®¤à¯à®¤à®•à®®à¯"/>
+<l:gentext key="book" text="பà¯à®¤à¯à®¤à®•à®®à¯"/>
+<l:gentext key="CAUTION" text="எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ"/>
+<l:gentext key="Caution" text="எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ"/>
+<l:gentext key="caution" text="எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ"/>
+<l:gentext key="Chapter" text="பாடமà¯"/>
+<l:gentext key="chapter" text="பாடமà¯"/>
+<l:gentext key="Colophon" text="பினà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="colophon" text="பினà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="Copyright" text="காபà¯à®ªà¯à®°à®¿à®®à¯ˆ"/>
+<l:gentext key="copyright" text="காபà¯à®ªà¯à®°à®¿à®®à¯ˆ"/>
+<l:gentext key="Dedication" text="சமரà¯à®ªà®£à®®à¯"/>
+<l:gentext key="dedication" text="சமரà¯à®ªà®£à®®à¯"/>
+<l:gentext key="Edition" text="பதிபà¯à®ªà¯"/>
+<l:gentext key="edition" text="பதிபà¯à®ªà¯"/>
+<l:gentext key="Editor" text="ஆசிரியரà¯"/>
+<l:gentext key="Equation" text="சமனà¯à®ªà®¾à®Ÿà¯"/>
+<l:gentext key="equation" text="சமனà¯à®ªà®¾à®Ÿà¯"/>
+<l:gentext key="Example" text="உதாரணமà¯"/>
+<l:gentext key="example" text="உதாரணமà¯"/>
+<l:gentext key="Figure" text="படமà¯"/>
+<l:gentext key="figure" text="படமà¯"/>
+<l:gentext key="Glossary" text="அகராதி"/>
+<l:gentext key="glossary" text="அகராதி"/>
+<l:gentext key="GlossSee" text="பாரà¯"/>
+<l:gentext key="glosssee" text="பாரà¯"/>
+<l:gentext key="GlossSeeAlso" text="இதையà¯à®®à¯à®ªà®¾à®°à¯à®•à¯à®•à®µà¯à®®à¯"/>
+<l:gentext key="glossseealso" text="இதையà¯à®®à¯à®ªà®¾à®°à¯à®•à¯à®•à®µà¯à®®à¯"/>
+<l:gentext key="IMPORTANT" text="à®®à¯à®•à¯à®•à®¿à®¯à®®à¯"/>
+<l:gentext key="important" text="à®®à¯à®•à¯à®•à®¿à®¯à®®à¯"/>
+<l:gentext key="Important" text="à®®à¯à®•à¯à®•à®¿à®¯à®®à¯"/>
+<l:gentext key="Index" text="அடà¯à®Ÿà®µà®£à¯ˆ"/>
+<l:gentext key="index" text="அடà¯à®Ÿà®µà®£à¯ˆ"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="சடà¯à®Ÿà®…றிகà¯à®•à¯ˆ"/>
+<l:gentext key="legalnotice" text="சடà¯à®Ÿà®…றிகà¯à®•à¯ˆ"/>
+<l:gentext key="MsgAud" text="பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯"/>
+<l:gentext key="msgaud" text="பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯"/>
+<l:gentext key="MsgLevel" text="நிலை"/>
+<l:gentext key="msglevel" text="நிலை"/>
+<l:gentext key="MsgOrig" text="மூலமà¯"/>
+<l:gentext key="msgorig" text="மூலமà¯"/>
+<l:gentext key="NOTE" text="கà¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="Note" text="கà¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="note" text="கà¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="Part" text="பகà¯à®¤à®¿"/>
+<l:gentext key="part" text="பகà¯à®¤à®¿"/>
+<l:gentext key="Preface" text="à®®à¯à®©à¯à®©à¯à®°à¯ˆ"/>
+<l:gentext key="preface" text="à®®à¯à®©à¯à®©à¯à®°à¯ˆ"/>
+<l:gentext key="Procedure" text="à®®à¯à®±à¯ˆ"/>
+<l:gentext key="procedure" text="à®®à¯à®±à¯ˆ"/>
+<l:gentext key="ProductionSet" text="உறà¯à®ªà®¤à¯à®¤à®¿"/>
+<l:gentext key="PubDate" text="வெளியீட௠தேதி"/>
+<l:gentext key="pubdate" text="வெளியீட௠தேதி"/>
+<l:gentext key="Published" text="பதிபà¯à®ªà®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ"/>
+<l:gentext key="published" text="பதிபà¯à®ªà®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ"/>
+<l:gentext key="Publisher" text="வெளியீடà¯à®Ÿà®¾à®³à®°à¯"/>
+<l:gentext key="Qandadiv" text="வினா &amp; விடை"/>
+<l:gentext key="qandadiv" text="வினா &amp; விடை"/>
+<l:gentext key="QandASet" text="அடிகà¯à®•à®Ÿà®¿ எழà¯à®®à¯ வினாகà¯à®•à®³à¯"/>
+<l:gentext key="Question" text="வினா:"/>
+<l:gentext key="question" text="வினா:"/>
+<l:gentext key="RefEntry" text="பகà¯à®•à®®à¯"/>
+<l:gentext key="refentry" text="பகà¯à®•à®®à¯"/>
+<l:gentext key="Reference" text="கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯"/>
+<l:gentext key="reference" text="கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯"/>
+<l:gentext key="References" text="கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯"/>
+<l:gentext key="RefName" text="பெயரà¯"/>
+<l:gentext key="refname" text="பெயரà¯"/>
+<l:gentext key="RefSection" text="பகà¯à®¤à®¿"/>
+<l:gentext key="refsection" text="பகà¯à®¤à®¿"/>
+<l:gentext key="RefSynopsisDiv" text="சà¯à®°à¯à®•à¯à®•à®®à¯"/>
+<l:gentext key="refsynopsisdiv" text="சà¯à®°à¯à®•à¯à®•à®®à¯"/>
+<l:gentext key="RevHistory" text="மீளà¯à®ªà®¾à®°à¯à®µà¯ˆà®µà®°à®²à®¾à®±à¯"/>
+<l:gentext key="revhistory" text="மீளà¯à®ªà®¾à®°à¯à®µà¯ˆà®µà®°à®²à®¾à®±à¯"/>
+<l:gentext key="revision" text="மீளà¯à®ªà®¾à®°à¯à®µà¯ˆ"/>
+<l:gentext key="Revision" text="மீளà¯à®ªà®¾à®°à¯à®µà¯ˆ"/>
+<l:gentext key="sect1" text="பிரிவà¯"/>
+<l:gentext key="sect2" text="பிரிவà¯"/>
+<l:gentext key="sect3" text="பிரிவà¯"/>
+<l:gentext key="sect4" text="பிரிவà¯"/>
+<l:gentext key="sect5" text="பிரிவà¯"/>
+<l:gentext key="section" text="பிரிவà¯"/>
+<l:gentext key="Section" text="பிரிவà¯"/>
+<l:gentext key="see" text="பாரà¯"/>
+<l:gentext key="See" text="பாரà¯"/>
+<l:gentext key="seealso" text="இதையà¯à®®à¯à®ªà®¾à®°à¯à®•à¯à®•à®µà¯à®®à¯"/>
+<l:gentext key="Seealso" text="இதையà¯à®®à¯à®ªà®¾à®°à¯à®•à¯à®•à®µà¯à®®à¯"/>
+<l:gentext key="SeeAlso" text="இதையà¯à®®à¯à®ªà®¾à®°à¯à®•à¯à®•à®µà¯à®®à¯"/>
+<l:gentext key="set" text="அமை"/>
+<l:gentext key="Set" text="அமை"/>
+<l:gentext key="setindex" text="அடà¯à®Ÿà®µà®£à¯ˆà®…மை"/>
+<l:gentext key="SetIndex" text="அடà¯à®Ÿà®µà®£à¯ˆà®…மை"/>
+<l:gentext key="Sidebar" text="பகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ˆ"/>
+<l:gentext key="sidebar" text="பகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ˆ"/>
+<l:gentext key="step" text="படிமà¯à®±à¯ˆ"/>
+<l:gentext key="Step" text="படிமà¯à®±à¯ˆ"/>
+<l:gentext key="table" text="அடà¯à®Ÿà®µà®£à¯ˆ"/>
+<l:gentext key="Table" text="அடà¯à®Ÿà®µà®£à¯ˆ"/>
+<l:gentext key="task" text="பணி"/>
+<l:gentext key="Task" text="பணி"/>
+<l:gentext key="tip" text="கà¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="TIP" text="கà¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="Tip" text="கà¯à®±à®¿à®ªà¯à®ªà¯"/>
+<l:gentext key="Warning" text="எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ"/>
+<l:gentext key="warning" text="எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ"/>
+<l:gentext key="WARNING" text="எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ"/>
+<l:gentext key="and" text="மறà¯à®±à¯à®®à¯"/>
+<l:gentext key="by" text="ஆலà¯"/>
+<l:gentext key="Edited" text="திரà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ"/>
+<l:gentext key="edited" text="திரà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ"/>
+<l:gentext key="Editedby" text="திரà¯à®¤à¯à®¤à®¿à®¯à®µà®°à¯"/>
+<l:gentext key="editedby" text="திரà¯à®¤à¯à®¤à®¿à®¯à®µà®°à¯"/>
+<l:gentext key="in" text="இலà¯"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯"/>
+<l:gentext key="Notes" text="கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯"/>
+<l:gentext key="Pgs" text="பகà¯à®•à®®à¯"/>
+<l:gentext key="pgs" text="பகà¯à®•à®®à¯"/>
+<l:gentext key="Revisedby" text="மீணà¯à®Ÿà¯à®®à¯à®ªà®¾à®°à¯à®¤à¯à®¤à®µà®°à¯: "/>
+<l:gentext key="revisedby" text="மீணà¯à®Ÿà¯à®®à¯à®ªà®¾à®°à¯à®¤à¯à®¤à®µà®°à¯: "/>
+<l:gentext key="TableNotes" text="கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯"/>
+<l:gentext key="tablenotes" text="கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯"/>
+<l:gentext key="TableofContents" text="உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•à®³à¯"/>
+<l:gentext key="tableofcontents" text="உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•à®³à¯"/>
+<l:gentext key="unexpectedelementname" text="எதிரà¯à®ªà®¾à®°à®¾à®¤à®‰à®±à¯à®ªà¯à®ªà¯à®ªà¯†à®¯à®°à¯"/>
+<l:gentext key="unsupported" text="ஆதரவறà¯à®±"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="ஆசிரியரà¯à®•à®³à¯"/>
+<l:gentext key="copyeditor" text="காபà¯à®ªà®¿ எடிடà¯à®Ÿà®°à¯"/>
+<l:gentext key="graphicdesigner" text="வரைகலை வடிவமைபà¯à®ªà®¾à®³à®°à¯"/>
+<l:gentext key="productioneditor" text="தயாரிபà¯à®ªà¯ எடிடà¯à®Ÿà®°à¯"/>
+<l:gentext key="technicaleditor" text="தொழிலà¯à®¨à¯à®Ÿà¯à®ª ஆசிரியரà¯"/>
+<l:gentext key="translator" text="மொழிபெயரà¯à®ªà¯à®ªà®¾à®³à®°à¯"/>
+<l:gentext key="listofequations" text="சமனà¯à®ªà®¾à®Ÿà¯à®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="ListofEquations" text="சமனà¯à®ªà®¾à®Ÿà¯à®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="ListofExamples" text="சமனà¯à®ªà®¾à®Ÿà¯à®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="listofexamples" text="சமனà¯à®ªà®¾à®Ÿà¯à®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="ListofFigures" text="படஙà¯à®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="listoffigures" text="படஙà¯à®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="ListofProcedures" text="செயà¯à®®à¯à®±à¯ˆà®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="listofprocedures" text="செயà¯à®®à¯à®±à¯ˆà®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="listoftables" text="அடà¯à®Ÿà®µà®£à¯ˆà®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="ListofTables" text="அடà¯à®Ÿà®µà®£à¯ˆà®•à®³à®¿à®©à¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="ListofUnknown" text="தெரியாதபடà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="listofunknown" text="தெரியாதபடà¯à®Ÿà®¿à®¯à®²à¯"/>
+<l:gentext key="nav-home" text="இலà¯à®²à®®à¯"/>
+<l:gentext key="nav-next" text="அடà¯à®¤à¯à®¤à¯"/>
+<l:gentext key="nav-next-sibling" text="வேகமாகமà¯à®©à¯à®šà¯†à®²à¯"/>
+<l:gentext key="nav-prev" text="à®®à¯à®©à¯"/>
+<l:gentext key="nav-prev-sibling" text="வேகமாகபினà¯à®šà¯†à®²à¯"/>
+<l:gentext key="nav-up" text="மேலà¯"/>
+<l:gentext key="nav-toc" text="உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•à®³à¯"/>
+<l:gentext key="Draft" text="ஆவணமà¯"/>
+<l:gentext key="above" text="மேலà¯"/>
+<l:gentext key="below" text="கீழà¯"/>
+<l:gentext key="sectioncalled" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿"/>
+<l:gentext key="index symbols" text="கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•à®³à¯"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="இணைபà¯à®ªà¯Â %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="பாடமà¯Â %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="சமனà¯à®ªà®¾à®Ÿà¯Â %n. %t"/>
+<l:template name="example" text="உதாரணமà¯Â %n. %t"/>
+<l:template name="figure" text="படமà¯Â %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="பகà¯à®¤à®¿Â %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="à®®à¯à®±à¯ˆÂ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="உறà¯à®ªà®¤à¯à®¤à®¿Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="அடà¯à®Ÿà®µà®£à¯ˆÂ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="இணைபà¯à®ªà¯Â %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="பாடமà¯Â %n. %t"/>
+<l:template name="part" text="பகà¯à®¤à®¿Â %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="விடை: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="வினா: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="வினா: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="refsection" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="refsect1" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="refsect2" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="refsect3" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="sect1" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="sect2" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="sect3" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="sect4" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="sect5" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="section" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="simplesect" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="விடை: %n"/>
+<l:template name="appendix" text="இணைபà¯à®ªà¯Â %n"/>
+<l:template name="bridgehead" text="பிரிவà¯Â %n"/>
+<l:template name="chapter" text="பாடமà¯Â %n"/>
+<l:template name="equation" text="சமனà¯à®ªà®¾à®Ÿà¯Â %n"/>
+<l:template name="example" text="உதாரணமà¯Â %n"/>
+<l:template name="figure" text="படமà¯Â %n"/>
+<l:template name="part" text="பகà¯à®¤à®¿Â %n"/>
+<l:template name="procedure" text="à®®à¯à®±à¯ˆÂ %n"/>
+<l:template name="productionset" text="உறà¯à®ªà®¤à¯à®¤à®¿Â %n"/>
+<l:template name="qandadiv" text="வினா &amp; விடை %n"/>
+<l:template name="qandaentry" text="வினா: %n"/>
+<l:template name="question" text="வினா: %n"/>
+<l:template name="sect1" text="பிரிவà¯Â %n"/>
+<l:template name="sect2" text="பிரிவà¯Â %n"/>
+<l:template name="sect3" text="பிரிவà¯Â %n"/>
+<l:template name="sect4" text="பிரிவà¯Â %n"/>
+<l:template name="sect5" text="பிரிவà¯Â %n"/>
+<l:template name="section" text="பிரிவà¯Â %n"/>
+<l:template name="table" text="அடà¯à®Ÿà®µà®£à¯ˆÂ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="இணைபà¯à®ªà¯Â %n, %t"/>
+<l:template name="bridgehead" text="பிரிவà¯Â %n, “%tâ€"/>
+<l:template name="chapter" text="பாடமà¯Â %n, %t"/>
+<l:template name="equation" text="சமனà¯à®ªà®¾à®Ÿà¯Â %n, “%tâ€"/>
+<l:template name="example" text="உதாரணமà¯Â %n, “%tâ€"/>
+<l:template name="figure" text="படமà¯Â %n, “%tâ€"/>
+<l:template name="part" text="பகà¯à®¤à®¿Â %n, “%tâ€"/>
+<l:template name="procedure" text="à®®à¯à®±à¯ˆÂ %n, “%tâ€"/>
+<l:template name="productionset" text="உறà¯à®ªà®¤à¯à®¤à®¿Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="வினா &amp; விடை %n, “%tâ€"/>
+<l:template name="refsect1" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="refsect2" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="refsect3" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="refsection" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="sect1" text="பிரிவà¯Â %n, “%tâ€"/>
+<l:template name="sect2" text="பிரிவà¯Â %n, “%tâ€"/>
+<l:template name="sect3" text="பிரிவà¯Â %n, “%tâ€"/>
+<l:template name="sect4" text="பிரிவà¯Â %n, “%tâ€"/>
+<l:template name="sect5" text="பிரிவà¯Â %n, “%tâ€"/>
+<l:template name="section" text="பிரிவà¯Â %n, “%tâ€"/>
+<l:template name="simplesect" text="அழைகà¯à®•à®ªà®Ÿà¯à®Ÿà®ªà®•à¯à®¤à®¿ “%tâ€"/>
+<l:template name="table" text="அடà¯à®Ÿà®µà®£à¯ˆÂ %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" மறà¯à®±à¯à®®à¯ "/>
+<l:template name="seplast" text=", மறà¯à®±à¯à®®à¯ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="பார௠%t."/>
+<l:template name="seealso" text="இதையà¯à®®à¯à®ªà®¾à®°à¯à®•à¯à®•à®µà¯à®®à¯ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯: "/>
+<l:template name="MsgLevel" text="நிலை: "/>
+<l:template name="MsgOrig" text="மூலமà¯: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ஜனவரி"/>
+<l:template name="February" text="பிபà¯à®°à®µà®°à®¿"/>
+<l:template name="March" text="மாரà¯à®šà¯"/>
+<l:template name="April" text="à®à®ªà¯à®°à®²à¯"/>
+<l:template name="May" text="மே"/>
+<l:template name="June" text="ஜூனà¯"/>
+<l:template name="July" text="ஜூலை"/>
+<l:template name="August" text="ஆகஸà¯à®Ÿà¯"/>
+<l:template name="September" text="செபà¯à®Ÿà®®à¯à®ªà®°à¯"/>
+<l:template name="October" text="அகà¯à®Ÿà¯‹à®ªà®°à¯"/>
+<l:template name="November" text="நவமà¯à®ªà®°à¯"/>
+<l:template name="December" text="டிசமà¯à®ªà®°à¯"/>
+<l:template name="Monday" text="திஙà¯à®•à®Ÿà¯à®•à®¿à®´à®®à¯ˆ"/>
+<l:template name="Tuesday" text="செவà¯à®µà®¾à®¯à¯à®•à®¿à®´à®®à¯ˆ"/>
+<l:template name="Wednesday" text="பà¯à®¤à®©à¯à®•à®¿à®´à®®à¯ˆ"/>
+<l:template name="Thursday" text="வியாழகà¯à®•à®¿à®´à®®à¯ˆ"/>
+<l:template name="Friday" text="வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ"/>
+<l:template name="Saturday" text="சனிகà¯à®•à®¿à®´à®®à¯ˆ"/>
+<l:template name="Sunday" text="ஞாயிறà¯à®±à¯à®•à¯à®•à®¿à®´à®®à¯ˆ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="à®à®©"/>
+<l:template name="Feb" text="பிபà¯"/>
+<l:template name="Mar" text="மாரà¯"/>
+<l:template name="Apr" text="à®à®ªà¯"/>
+<l:template name="May" text="மே"/>
+<l:template name="Jun" text="ஜூனà¯"/>
+<l:template name="Jul" text="ஜூலை"/>
+<l:template name="Aug" text="ஆக"/>
+<l:template name="Sep" text="செபà¯"/>
+<l:template name="Oct" text="அகà¯"/>
+<l:template name="Nov" text="நவ"/>
+<l:template name="Dec" text="டிச"/>
+<l:template name="Mon" text="திஙà¯"/>
+<l:template name="Tue" text="செவà¯"/>
+<l:template name="Wed" text="பà¯à®¤"/>
+<l:template name="Thu" text="வியா"/>
+<l:template name="Fri" text="வெளà¯"/>
+<l:template name="Sat" text="சனி"/>
+<l:template name="Sun" text="ஞாயி"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0049 Tamil"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•à®³à¯</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl
new file mode 100644
index 0000000..aefdb07
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl
@@ -0,0 +1,514 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: table.xsl 8392 2009-04-01 08:47:55Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="blank.spans">
+ <xsl:param name="cols" select="1"/>
+ <xsl:if test="$cols &gt; 0">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="$cols - 1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="calculate.following.spans">
+ <xsl:param name="colspan" select="1"/>
+ <xsl:param name="spans" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="$colspan &gt; 0">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$colspan - 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$spans"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="finaltd">
+ <xsl:param name="spans"/>
+ <xsl:param name="col" select="0"/>
+
+ <xsl:if test="$spans != ''">
+ <xsl:choose>
+ <xsl:when test="starts-with($spans,'0:')">
+ <xsl:call-template name="empty.table.cell">
+ <xsl:with-param name="colnum" select="$col"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ <xsl:with-param name="col" select="$col+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="sfinaltd">
+ <xsl:param name="spans"/>
+
+ <xsl:if test="$spans != ''">
+ <xsl:choose>
+ <xsl:when test="starts-with($spans,'0:')">0:</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="entry.colnum">
+ <xsl:param name="entry" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$entry/@spanname">
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="($entry/ancestor::tgroup/spanspec[@spanname=$spanname]
+ |$entry/ancestor::entrytbl/spanspec[@spanname=$spanname])[last()]"/>
+ <xsl:variable name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$spanspec/@namest]
+ |$entry/ancestor::entrytbl/colspec[@colname=$spanspec/@namest])[last()]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@colname">
+ <xsl:variable name="colname" select="$entry/@colname"/>
+ <xsl:variable name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$colname]
+ |$entry/ancestor::entrytbl/colspec[@colname=$colname])[last()]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@namest">
+ <xsl:variable name="namest" select="$entry/@namest"/>
+ <xsl:variable name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$namest]
+ |$entry/ancestor::entrytbl/colspec[@colname=$namest])[last()]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- no idea, return 0 -->
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="entry.colnum" xmlns="">
+<refpurpose>Determine the column number in which a given entry occurs</refpurpose>
+<refdescription id="entry.colnum-desc">
+<para>If an <tag>entry</tag> has a
+<tag class="attribute">colname</tag> or
+<tag class="attribute">namest</tag> attribute, this template
+will determine the number of the column in which the entry should occur.
+For other <tag>entry</tag>s, nothing is returned.</para>
+</refdescription>
+<refparameter id="entry.colnum-params">
+<variablelist>
+<varlistentry><term>entry</term>
+<listitem>
+<para>The <tag>entry</tag>-element which is to be tested.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="entry.colnum-returns">
+<para>This template returns the column number if it can be determined,
+or 0 (the empty string)</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="colspec.colnum">
+ <xsl:param name="colspec" select="."/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:when test="$colspec/preceding-sibling::colspec">
+ <xsl:variable name="prec.colspec.colnum">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="$colspec/preceding-sibling::colspec[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prec.colspec.colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calculate.colspan">
+ <xsl:param name="entry" select="."/>
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="($entry/ancestor::tgroup/spanspec[@spanname=$spanname]
+ |$entry/ancestor::entrytbl/spanspec[@spanname=$spanname])[last()]"/>
+
+ <xsl:variable name="namest">
+ <xsl:choose>
+ <xsl:when test="@spanname">
+ <xsl:value-of select="$spanspec/@namest"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@namest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="nameend">
+ <xsl:choose>
+ <xsl:when test="@spanname">
+ <xsl:value-of select="$spanspec/@nameend"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@nameend"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$namest]
+ |$entry/ancestor::entrytbl/colspec[@colname=$namest])[last()]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="ecol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$nameend]
+ |$entry/ancestor::entrytbl/colspec[@colname=$nameend])[last()]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$namest != '' and $nameend != ''">
+ <xsl:choose>
+ <xsl:when test="number($ecol) &gt;= number($scol)">
+ <xsl:value-of select="number($ecol) - number($scol) + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="number($scol) - number($ecol) + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calculate.rowsep">
+ <xsl:param name="entry" select="."/>
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="$entry"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="calculate.colsep">
+ <xsl:param name="entry" select="."/>
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="$entry"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="inherited.table.attribute">
+ <xsl:param name="entry" select="."/>
+ <xsl:param name="row" select="$entry/ancestor-or-self::row[1]"/>
+ <xsl:param name="colnum" select="0"/>
+ <xsl:param name="attribute" select="'colsep'"/>
+
+ <xsl:variable name="tgroup" select="$row/parent::*/parent::tgroup[1]"/>
+ <xsl:variable name="tbody" select="$row/parent::*[1]"/>
+
+ <xsl:variable name="table" select="($tgroup/ancestor::table
+ |$tgroup/ancestor::informaltable
+ |$entry/ancestor::entrytbl)[last()]"/>
+
+ <xsl:variable name="entry.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$entry"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="row.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$row"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="span.value">
+ <xsl:if test="$entry/@spanname">
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="$tgroup/spanspec[@spanname=$spanname]"/>
+ <xsl:variable name="span.colspec"
+ select="$tgroup/colspec[@colname=$spanspec/@namest]"/>
+
+ <xsl:variable name="spanspec.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$spanspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="scolspec.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$span.colspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spanspec.value != ''">
+ <xsl:value-of select="$spanspec.value"/>
+ </xsl:when>
+ <xsl:when test="$scolspec.value != ''">
+ <xsl:value-of select="$scolspec.value"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="namest.value">
+ <xsl:if test="$entry/@namest">
+ <xsl:variable name="namest" select="$entry/@namest"/>
+ <xsl:variable name="colspec"
+ select="$tgroup/colspec[@colname=$namest]"/>
+
+ <xsl:variable name="inner.namest.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$inner.namest.value">
+ <xsl:value-of select="$inner.namest.value"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="tgroup.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$tgroup"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="tbody.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$tbody"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="table.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$table"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="default.value">
+ <!-- This section used to say that rowsep and colsep have defaults based -->
+ <!-- on the frame setting. Further reflection and closer examination of the -->
+ <!-- CALS spec reveals I was mistaken. The default is "1" for rowsep and colsep. -->
+ <!-- For everything else, the default is the tgroup value -->
+ <xsl:choose>
+ <xsl:when test="$tgroup.value != ''">
+ <xsl:value-of select="$tgroup.value"/>
+ </xsl:when>
+ <xsl:when test="$attribute = 'rowsep'">1</xsl:when>
+ <xsl:when test="$attribute = 'colsep'">1</xsl:when>
+ <xsl:otherwise><!-- empty --></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="calc.colvalue">
+ <xsl:if test="$colnum &gt; 0">
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$entry.value != ''">
+ <xsl:value-of select="$entry.value"/>
+ </xsl:when>
+ <xsl:when test="$row.value != ''">
+ <xsl:value-of select="$row.value"/>
+ </xsl:when>
+ <xsl:when test="$span.value != ''">
+ <xsl:value-of select="$span.value"/>
+ </xsl:when>
+ <xsl:when test="$namest.value != ''">
+ <xsl:value-of select="$namest.value"/>
+ </xsl:when>
+ <xsl:when test="$calc.colvalue != ''">
+ <xsl:value-of select="$calc.colvalue"/>
+ </xsl:when>
+ <xsl:when test="$tbody.value != ''">
+ <xsl:value-of select="$tbody.value"/>
+ </xsl:when>
+ <xsl:when test="$tgroup.value != ''">
+ <xsl:value-of select="$tgroup.value"/>
+ </xsl:when>
+ <xsl:when test="$table.value != ''">
+ <xsl:value-of select="$table.value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="colnum.colspec">
+ <xsl:param name="colnum" select="0"/>
+ <xsl:param name="attribute" select="'colname'"/>
+ <xsl:param name="colspec.ancestor"
+ select="(ancestor::tgroup|ancestor::entrytbl)
+ [position() = last()]"/>
+ <xsl:param name="colspecs" select="$colspec.ancestor/colspec"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="not($colspecs) or $count &gt; $colnum">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:when test="$colspecs[1]/@colnum">
+ <xsl:choose>
+ <xsl:when test="$colspecs[1]/@colnum = $colnum">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspecs[1]"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="colspecs"
+ select="$colspecs[position()&gt;1]"/>
+ <xsl:with-param name="count"
+ select="$colspecs[1]/@colnum+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$count = $colnum">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspecs[1]"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="colspecs"
+ select="$colspecs[position()&gt;1]"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="get-attribute">
+ <xsl:param name="element" select="."/>
+ <xsl:param name="attribute" select="''"/>
+
+ <xsl:for-each select="$element/@*">
+ <xsl:if test="local-name(.) = $attribute">
+ <xsl:value-of select="."/>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="consume-row">
+ <xsl:param name="spans"/>
+
+ <xsl:if test="contains($spans,':')">
+ <xsl:value-of select="substring-before($spans,':') - 1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- Returns the table style for the context element -->
+<xsl:template name="tabstyle">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="tgroup" select="$node/tgroup[1] |
+ $node/ancestor-or-self::tgroup[1]"/>
+
+ <xsl:variable name="table"
+ select="($node/ancestor-or-self::table |
+ $node/ancestor-or-self::informaltable)[last()]"/>
+
+ <xsl:variable name="tabstyle">
+ <xsl:choose>
+ <xsl:when test="$table/@tabstyle != ''">
+ <xsl:value-of select="normalize-space($table/@tabstyle)"/>
+ </xsl:when>
+ <xsl:when test="$tgroup/@tgroupstyle != ''">
+ <xsl:value-of select="normalize-space($tgroup/@tgroupstyle)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$tabstyle"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd
new file mode 100644
index 0000000..2ace1e0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd
@@ -0,0 +1,49 @@
+<!-- targetdatabase.dtd -->
+<!-- A DTD for managing cross reference target information -->
+
+<!ELEMENT targetset (targetsetinfo?, sitemap*, document*) >
+
+<!ELEMENT targetsetinfo ANY >
+
+<!ELEMENT sitemap (dir) >
+
+<!ELEMENT dir ((dir|document)*) >
+<!ATTLIST dir
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT document (div*) >
+<!ATTLIST document
+ targetdoc CDATA #REQUIRED
+ uri CDATA #IMPLIED
+ baseuri CDATA #IMPLIED
+ href CDATA #IMPLIED
+ dir CDATA #IMPLIED
+>
+
+<!ELEMENT div (ttl?, objttl?, xreftext?, (div|obj)*)>
+<!ATTLIST div
+ targetptr CDATA #IMPLIED
+ element CDATA #IMPLIED
+ name CDATA #IMPLIED
+ number CDATA #IMPLIED
+ href CDATA #IMPLIED
+ lang CDATA #IMPLIED
+ page CDATA #IMPLIED
+>
+
+
+<!ELEMENT ttl ANY >
+<!ELEMENT objttl ANY >
+<!ELEMENT xreftext ANY >
+
+<!ELEMENT obj (ttl?, objttl?, xreftext?)>
+<!ATTLIST obj
+ targetptr CDATA #IMPLIED
+ element CDATA #IMPLIED
+ name CDATA #IMPLIED
+ number CDATA #IMPLIED
+ href CDATA #IMPLIED
+ lang CDATA #IMPLIED
+ page CDATA #IMPLIED
+>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl
new file mode 100644
index 0000000..294c304
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl
@@ -0,0 +1,333 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="doc exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: targets.xsl 8366 2009-03-21 07:49:16Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- cross reference target collection -->
+
+<doc:mode mode="collect.targets" xmlns="">
+<refpurpose>Collects information for potential cross reference targets</refpurpose>
+<refdescription id="collect.targets-desc">
+<para>Processing the root element in the
+<literal role="mode">collect.targets</literal> mode produces
+a set of target database elements that can be used by
+the olink mechanism to resolve external cross references.
+The collection process is controlled by the <literal>
+collect.xref.targets</literal> parameter, which can be
+<literal>yes</literal> to collect targets and process
+the document for output, <literal>only</literal> to
+only collect the targets, and <literal>no</literal>
+(default) to not collect the targets and only process the document.
+</para>
+<para>
+A <literal>targets.filename</literal> parameter must be
+specified to receive the output if
+<literal>collect.xref.targets</literal> is
+set to <literal>yes</literal> so as to
+redirect the target data to a file separate from the
+document output.
+</para>
+</refdescription>
+</doc:mode>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="collect.targets">
+ <xsl:choose>
+ <xsl:when test="$collect.xref.targets = 'yes' and $targets.filename = ''">
+ <xsl:message>
+ Must specify a $targets.filename parameter when
+ $collect.xref.targets is set to 'yes'.
+ The xref targets were not collected.
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$targets.filename">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$targets.filename"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="''"/>
+ <xsl:with-param name="doctype-system" select="''"/>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="quiet" select="0"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Else write to standard output -->
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink.href.target">
+ <xsl:param name="nd" select="."/>
+
+ <xsl:value-of select="$olink.base.uri"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$nd"/>
+ <xsl:with-param name="context" select="NOTANODE"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Templates for extracting cross reference information
+ from a document for use in an xref database.
+-->
+
+<xsl:template name="attrs">
+ <xsl:param name="nd" select="."/>
+
+ <xsl:attribute name="element">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="olink.href.target">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:variable name="num">
+ <xsl:apply-templates select="$nd" mode="label.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:if test="$num">
+ <xsl:attribute name="number">
+ <xsl:value-of select="$num"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$nd/@id">
+ <xsl:attribute name="targetptr">
+ <xsl:value-of select="$nd/@id"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$nd/@xml:id">
+ <xsl:attribute name="targetptr">
+ <xsl:value-of select="$nd/@xml:id"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$nd/@lang">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="$nd/@lang"/>
+ </xsl:attribute>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template name="div">
+ <xsl:param name="nd" select="."/>
+
+ <div>
+ <xsl:call-template name="attrs">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ <ttl>
+ <xsl:apply-templates select="$nd" mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </ttl>
+ <xreftext>
+ <xsl:choose>
+ <xsl:when test="$nd/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$nd"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$nd" mode="xref-to">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xreftext>
+ <xsl:apply-templates mode="olink.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="obj">
+ <xsl:param name="nd" select="."/>
+
+ <obj>
+ <xsl:call-template name="attrs">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ <ttl>
+ <xsl:apply-templates select="$nd" mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </ttl>
+ <xreftext>
+ <xsl:choose>
+ <xsl:when test="$nd/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$nd"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$nd" mode="xref-to">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xreftext>
+ </obj>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()"
+ mode="olink.mode">
+ <!-- nop -->
+</xsl:template>
+
+<!--
+<xsl:template match="*" mode="olink.mode">
+</xsl:template>
+-->
+
+<xsl:template match="set" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="book" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="article" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="bibliography|bibliodiv" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+</xsl:template>
+
+<xsl:template match="refentry" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="refsection|refsect1|refsect2|refsect3" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+ <xsl:apply-templates mode="olink.mode"/>
+</xsl:template>
+
+<xsl:template match="equation[title or info/title]" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+</xsl:template>
+
+<xsl:template match="qandaset|qandaentry" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<!-- handle an glossary collection -->
+<xsl:template match="glossary[@role='auto']" mode="olink.mode" priority="2">
+ <xsl:variable name="collection" select="document($glossary.collection, .)"/>
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not($collection) and $glossary.collection != ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
+ <xsl:text>open glossary.collection file '</xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+
+ <xsl:if test="$exsl.node.set.available != 0">
+ <xsl:variable name="auto.glossary">
+ <xsl:apply-templates select="." mode="assemble.auto.glossary"/>
+ </xsl:variable>
+ <xsl:variable name="auto.glossary.nodeset" select="exsl:node-set($auto.glossary)"/>
+ <xsl:apply-templates select="$auto.glossary.nodeset/*" mode="olink.mode"/>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- construct a glossary in memory -->
+<xsl:template match="glossary" mode="assemble.auto.glossary">
+ <xsl:copy>
+ <xsl:copy-of select="@*[not(local-name() = 'role')]"/>
+ <xsl:apply-templates select="node()" mode="assemble.auto.glossary"/>
+ <xsl:call-template name="select.glossentries"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template name="select.glossentries">
+ <xsl:param name="collection" select="document($glossary.collection, .)"/>
+ <xsl:param name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/>
+
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:copy-of select="."/>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="assemble.auto.glossary">
+ <!-- skip the dummy entries -->
+</xsl:template>
+
+<xsl:template match="*" mode="assemble.auto.glossary">
+ <!-- pass through any titles and intro stuff -->
+ <xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="*" mode="olink.mode">
+ <xsl:if test="@id or @xml:id">
+ <xsl:call-template name="obj"/>
+ </xsl:if>
+ <xsl:apply-templates mode="olink.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml
new file mode 100644
index 0000000..c912fc2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="te" english-language-name="Telugu">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/te.xml -->
+<!-- * -->
+<!-- * E-mail the edited te.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="సంకà±à°·à°¿à°ªà±à°¤à°®à±"/>
+<l:gentext key="abstract" text="సంకà±à°·à°¿à°ªà±à°¤à°®à±"/>
+<l:gentext key="Acknowledgements" text="à°—à±à°°à±à°¤à°¿à°‚à°ªà±à°²à±"/>
+<l:gentext key="acknowledgements" text="à°—à±à°°à±à°¤à°¿à°‚à°ªà±à°²à±"/>
+<l:gentext key="Answer" text="సమాధానం:"/>
+<l:gentext key="answer" text="సమాధానం:"/>
+<l:gentext key="Appendix" text="à°…à°¨à±à°¬à°‚ధం"/>
+<l:gentext key="appendix" text="à°…à°¨à±à°¬à°‚ధం"/>
+<l:gentext key="Article" text="à°ªà±à°°à°•à°°à°£à°®à±"/>
+<l:gentext key="article" text="à°ªà±à°°à°•à°°à°£à°®à±"/>
+<l:gentext key="Author" text="à°—à±à°°à°‚ధకరà±à°¤"/>
+<l:gentext key="Bibliography" text="à°—à±à°°à°‚à°§ పటà±à°Ÿà°¿à°•"/>
+<l:gentext key="bibliography" text="à°—à±à°°à°‚à°§ పటà±à°Ÿà°¿à°•"/>
+<l:gentext key="Book" text="à°ªà±à°¸à±à°¤à°•à°®à±"/>
+<l:gentext key="book" text="à°ªà±à°¸à±à°¤à°•à°®à±"/>
+<l:gentext key="CAUTION" text="à°®à±à°‚à°¦à±à°œà°¾à°—à±à°°à°¤à±à°¤"/>
+<l:gentext key="Caution" text="à°®à±à°‚à°¦à±à°œà°¾à°—à±à°°à°¤à±à°¤"/>
+<l:gentext key="caution" text="à°®à±à°‚à°¦à±à°œà°¾à°—à±à°°à°¤à±à°¤"/>
+<l:gentext key="Chapter" text="à°…à°§à±à°¯à°¾à°¯à°®à±"/>
+<l:gentext key="chapter" text="à°…à°§à±à°¯à°¾à°¯à°®à±"/>
+<l:gentext key="Colophon" text="చివరిమాట"/>
+<l:gentext key="colophon" text="చివరిమాట"/>
+<l:gentext key="Copyright" text="కాపీరైటà±"/>
+<l:gentext key="copyright" text="కాపీరైటà±"/>
+<l:gentext key="Dedication" text="అంకితం"/>
+<l:gentext key="dedication" text="అంకితం"/>
+<l:gentext key="Edition" text="సంచిక"/>
+<l:gentext key="edition" text="సంచిక"/>
+<l:gentext key="Editor" text="సంపాదకà±à°¡à±"/>
+<l:gentext key="Equation" text="సమీకరణమà±"/>
+<l:gentext key="equation" text="సమీకరణమà±"/>
+<l:gentext key="Example" text="ఉదాహరణ"/>
+<l:gentext key="example" text="ఉదాహరణ"/>
+<l:gentext key="Figure" text="మూరà±à°¤à°¿"/>
+<l:gentext key="figure" text="మూరà±à°¤à°¿"/>
+<l:gentext key="Glossary" text="పదకోశం"/>
+<l:gentext key="glossary" text="పదకోశం"/>
+<l:gentext key="GlossSee" text="చూడà±à°®à±"/>
+<l:gentext key="glosssee" text="చూడà±à°®à±"/>
+<l:gentext key="GlossSeeAlso" text="ఇదికూడా చూడà±à°®à±"/>
+<l:gentext key="glossseealso" text="ఇదికూడా చూడà±à°®à±"/>
+<l:gentext key="IMPORTANT" text="à°®à±à°–à±à°¯à°®à±ˆà°¨"/>
+<l:gentext key="important" text="à°®à±à°–à±à°¯à°®à±ˆà°¨"/>
+<l:gentext key="Important" text="à°®à±à°–à±à°¯à°®à±ˆà°¨"/>
+<l:gentext key="Index" text="విషయసూచిక"/>
+<l:gentext key="index" text="విషయసూచిక"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="à°šà°Ÿà±à°Ÿà°¬à°¦à±à°¦ నోటీసà±"/>
+<l:gentext key="legalnotice" text="à°šà°Ÿà±à°Ÿà°¬à°¦à±à°¦ నోటీసà±"/>
+<l:gentext key="MsgAud" text="à°ªà±à°°à±‡à°•à±à°·à°•à±à°²à±"/>
+<l:gentext key="msgaud" text="à°ªà±à°°à±‡à°•à±à°·à°•à±à°²à±"/>
+<l:gentext key="MsgLevel" text="à°¸à±à°¥à°¾à°¯à°¿"/>
+<l:gentext key="msglevel" text="à°¸à±à°¥à°¾à°¯à°¿"/>
+<l:gentext key="MsgOrig" text="మూలమà±"/>
+<l:gentext key="msgorig" text="మూలమà±"/>
+<l:gentext key="NOTE" text="గమనిక"/>
+<l:gentext key="Note" text="గమనిక"/>
+<l:gentext key="note" text="గమనిక"/>
+<l:gentext key="Part" text="భాగమà±"/>
+<l:gentext key="part" text="భాగమà±"/>
+<l:gentext key="Preface" text="à°®à±à°‚à°¦à±à°®à°¾à°Ÿ"/>
+<l:gentext key="preface" text="à°®à±à°‚à°¦à±à°®à°¾à°Ÿ"/>
+<l:gentext key="Procedure" text="పదà±à°§à°¤à°¿"/>
+<l:gentext key="procedure" text="పదà±à°§à°¤à°¿"/>
+<l:gentext key="ProductionSet" text="ఉతà±à°ªà°¤à±à°¤à°¿"/>
+<l:gentext key="PubDate" text="à°ªà±à°°à°šà±à°°à°£ తేది"/>
+<l:gentext key="pubdate" text="à°ªà±à°°à°šà±à°°à°£ తేది"/>
+<l:gentext key="Published" text="à°ªà±à°°à°šà±à°°à°¿à°¤à°®à±ˆà°‚ది"/>
+<l:gentext key="published" text="à°ªà±à°°à°šà±à°°à°¿à°¤à°®à±ˆà°‚ది"/>
+<l:gentext key="Publisher" text="à°ªà±à°°à°šà±à°°à°£à°•à°°à±à°¤"/>
+<l:gentext key="Qandadiv" text="à°ªà±à°°à°¶à±à°¨à°²à± &amp; సమాధానమà±à°²à±"/>
+<l:gentext key="qandadiv" text="à°ªà±à°°à°¶à±à°¨à°²à± &amp; సమాధానమà±à°²à±"/>
+<l:gentext key="QandASet" text="తరచà±à°—à°¾ à°…à°¡à±à°—à± à°ªà±à°°à°¶à±à°¨à°²à±"/>
+<l:gentext key="Question" text="à°ªà±à°°à°¶à±à°¨:"/>
+<l:gentext key="question" text="à°ªà±à°°à°¶à±à°¨:"/>
+<l:gentext key="RefEntry" text="పేజీ"/>
+<l:gentext key="refentry" text="పేజీ"/>
+<l:gentext key="Reference" text="సంభందిత"/>
+<l:gentext key="reference" text="సంభందిత"/>
+<l:gentext key="References" text="సంభందితమà±à°²à±"/>
+<l:gentext key="RefName" text="నామమà±"/>
+<l:gentext key="refname" text="నామమà±"/>
+<l:gentext key="RefSection" text="విభాగమà±"/>
+<l:gentext key="refsection" text="విభాగమà±"/>
+<l:gentext key="RefSynopsisDiv" text="à°®à±à°–à±à°¯à°µà°¿à°·à°¯à°¸à±‚à°šà°¿à°•"/>
+<l:gentext key="refsynopsisdiv" text="à°®à±à°–à±à°¯à°µà°¿à°·à°¯à°¸à±‚à°šà°¿à°•"/>
+<l:gentext key="RevHistory" text="à°ªà±à°¨à°ƒà°ªà°°à°¿à°¶à±€à°²à°¨ à°šà°°à°¿à°¤à±à°°"/>
+<l:gentext key="revhistory" text="à°ªà±à°¨à°ƒà°ªà°°à°¿à°¶à±€à°²à°¨ à°šà°°à°¿à°¤à±à°°"/>
+<l:gentext key="revision" text="à°ªà±à°¨à°ƒà°ªà°°à°¿à°¶à±€à°²à°¨"/>
+<l:gentext key="Revision" text="à°ªà±à°¨à°ƒà°ªà°°à°¿à°¶à±€à°²à°¨"/>
+<l:gentext key="sect1" text="విభాగమà±"/>
+<l:gentext key="sect2" text="విభాగమà±"/>
+<l:gentext key="sect3" text="విభాగమà±"/>
+<l:gentext key="sect4" text="విభాగమà±"/>
+<l:gentext key="sect5" text="విభాగమà±"/>
+<l:gentext key="section" text="విభాగమà±"/>
+<l:gentext key="Section" text="విభాగమà±"/>
+<l:gentext key="see" text="చూడà±à°®à±"/>
+<l:gentext key="See" text="చూడà±à°®à±"/>
+<l:gentext key="seealso" text="ఇదికూడా చూడà±à°®à±"/>
+<l:gentext key="Seealso" text="ఇదికూడా చూడà±à°®à±"/>
+<l:gentext key="SeeAlso" text="ఇదికూడా చూడà±à°®à±"/>
+<l:gentext key="set" text="సమితి"/>
+<l:gentext key="Set" text="సమితి"/>
+<l:gentext key="setindex" text="సమితి విషయసూచిక"/>
+<l:gentext key="SetIndex" text="సమితి విషయసూచిక"/>
+<l:gentext key="Sidebar" text="à°ªà±à°°à°•à±à°•à°ªà°Ÿà±à°Ÿà±€"/>
+<l:gentext key="sidebar" text="à°ªà±à°°à°•à±à°•à°ªà°Ÿà±à°Ÿà±€"/>
+<l:gentext key="step" text="అంచె"/>
+<l:gentext key="Step" text="అంచె"/>
+<l:gentext key="table" text="పటà±à°Ÿà°¿à°•"/>
+<l:gentext key="Table" text="పటà±à°Ÿà°¿à°•"/>
+<l:gentext key="task" text="à°•à°°à±à°¤à°µà±à°¯à°®à±"/>
+<l:gentext key="Task" text="à°•à°°à±à°¤à°µà±à°¯à°®à±"/>
+<l:gentext key="tip" text="à°šà°¿à°Ÿà±à°•à°¾"/>
+<l:gentext key="TIP" text="à°šà°¿à°Ÿà±à°•à°¾"/>
+<l:gentext key="Tip" text="à°šà°¿à°Ÿà±à°•à°¾"/>
+<l:gentext key="Warning" text="హెచà±à°šà°°à°¿à°•"/>
+<l:gentext key="warning" text="హెచà±à°šà°°à°¿à°•"/>
+<l:gentext key="WARNING" text="హెచà±à°šà°°à°¿à°•"/>
+<l:gentext key="and" text="మరియà±"/>
+<l:gentext key="by" text="వీరిచేత"/>
+<l:gentext key="Edited" text="సరికూరà±à°šà°¿à°¨"/>
+<l:gentext key="edited" text="సరికూరà±à°šà°¿à°¨"/>
+<l:gentext key="Editedby" text="వీరిచేత సరికూరà±à°šà°¬à°¡à°¿à°‚ది"/>
+<l:gentext key="editedby" text="వీరిచేత సరికూరà±à°šà°¬à°¡à°¿à°‚ది"/>
+<l:gentext key="in" text="నందà±"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="గమనికలà±"/>
+<l:gentext key="Notes" text="గమనికలà±"/>
+<l:gentext key="Pgs" text="పేజీలà±"/>
+<l:gentext key="pgs" text="పేజీలà±"/>
+<l:gentext key="Revisedby" text="వీరిచేత à°ªà±à°¨à°ƒà°ªà°°à°¿à°¶à±€à°²à°¿à°‚చబడింది: "/>
+<l:gentext key="revisedby" text="వీరిచేత à°ªà±à°¨à°ƒà°ªà°°à°¿à°¶à±€à°²à°¿à°‚చబడింది: "/>
+<l:gentext key="TableNotes" text="గమనికలà±"/>
+<l:gentext key="tablenotes" text="గమనికలà±"/>
+<l:gentext key="TableofContents" text="సారమà±à°² పటà±à°Ÿà°¿à°•"/>
+<l:gentext key="tableofcontents" text="సారమà±à°² పటà±à°Ÿà°¿à°•"/>
+<l:gentext key="unexpectedelementname" text="à°…à°¨à±à°•à±‹à°¨à°¿ మూలకం నామమà±"/>
+<l:gentext key="unsupported" text="మదà±à°¦à°¤à±€à°¯à°¨à°¿"/>
+<l:gentext key="xrefto" text="xref"/>
+<l:gentext key="Authors" text="à°—à±à°°à°‚à°§ à°•à°°à±à°¤à°²à±"/>
+<l:gentext key="copyeditor" text="కాపీ సంపాదకà±à°¡à±"/>
+<l:gentext key="graphicdesigner" text="à°—à±à°°à°¾à°«à°¿à°•à± రూపకరà±à°¤"/>
+<l:gentext key="productioneditor" text="ఉతà±à°ªà°¤à±à°¤à°¿ సంపాదకà±à°¡à±"/>
+<l:gentext key="technicaleditor" text="సాంకేతిక సంపాదకà±à°¡à±"/>
+<l:gentext key="translator" text="à°…à°¨à±à°µà°¾à°¦à°•à±à°¡à±"/>
+<l:gentext key="listofequations" text="సమీకరణమà±à°² జాబితా"/>
+<l:gentext key="ListofEquations" text="సమీకరణమà±à°² జాబితా"/>
+<l:gentext key="ListofExamples" text="ఉదాహరణమà±à°² జాబితా"/>
+<l:gentext key="listofexamples" text="ఉదాహరణమà±à°² జాబితా"/>
+<l:gentext key="ListofFigures" text="మూరà±à°¤à±à°² జాబితా"/>
+<l:gentext key="listoffigures" text="మూరà±à°¤à±à°² జాబితా"/>
+<l:gentext key="ListofProcedures" text="పదà±à°§à°¤à±à°² జాబితా"/>
+<l:gentext key="listofprocedures" text="పదà±à°§à°¤à±à°² జాబితా"/>
+<l:gentext key="listoftables" text="పటà±à°Ÿà°¿à°•à°² జాబితా"/>
+<l:gentext key="ListofTables" text="పటà±à°Ÿà°¿à°•à°² జాబితా"/>
+<l:gentext key="ListofUnknown" text="తెలియనివాటి జాబితా"/>
+<l:gentext key="listofunknown" text="తెలియనివాటి జాబితా"/>
+<l:gentext key="nav-home" text="నివాసమà±"/>
+<l:gentext key="nav-next" text="తరà±à°µà°¾à°¤à°¿"/>
+<l:gentext key="nav-next-sibling" text="à°®à±à°‚à°¦à±à°•à± నడà±à°ªà±"/>
+<l:gentext key="nav-prev" text="à°®à±à°‚దరి"/>
+<l:gentext key="nav-prev-sibling" text="వెనà±à°•à°•à± నడà±à°ªà±"/>
+<l:gentext key="nav-up" text="పైనకà±"/>
+<l:gentext key="nav-toc" text="వివరమà±à°² పటà±à°Ÿà°¿à°•"/>
+<l:gentext key="Draft" text="à°®à±à°¸à°¾à°¯à°¿à°¦à°¾"/>
+<l:gentext key="above" text="పైన"/>
+<l:gentext key="below" text="à°•à±à°°à°¿à°‚ది"/>
+<l:gentext key="sectioncalled" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది"/>
+<l:gentext key="index symbols" text="à°šà°¿à°¹à±à°¨à°®à±à°²à±"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="à°…à°¨à±à°¬à°‚ధం %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="à°…à°§à±à°¯à°¾à°¯à°®à±Â %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="సమీకరణమà±Â %n. %t"/>
+<l:template name="example" text="ఉదాహరణ %n. %t"/>
+<l:template name="figure" text="మూరà±à°¤à°¿Â %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="భాగమà±Â %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="పదà±à°§à°¤à°¿Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ఉతà±à°ªà°¤à±à°¤à°¿Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="పటà±à°Ÿà°¿à°•Â %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="à°…à°¨à±à°¬à°‚ధం %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="à°…à°§à±à°¯à°¾à°¯à°®à±Â %n. %t"/>
+<l:template name="part" text="భాగమà±Â %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="సమాధానం: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="à°ªà±à°°à°¶à±à°¨: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="à°ªà±à°°à°¶à±à°¨: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="refsection" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="refsect1" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="refsect2" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="refsect3" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="sect1" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="sect2" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="sect3" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="sect4" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="sect5" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="section" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="simplesect" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="సమాధానం: %n"/>
+<l:template name="appendix" text="à°…à°¨à±à°¬à°‚ధం %n"/>
+<l:template name="bridgehead" text="విభాగమà±Â %n"/>
+<l:template name="chapter" text="à°…à°§à±à°¯à°¾à°¯à°®à±Â %n"/>
+<l:template name="equation" text="సమీకరణమà±Â %n"/>
+<l:template name="example" text="ఉదాహరణ %n"/>
+<l:template name="figure" text="మూరà±à°¤à°¿Â %n"/>
+<l:template name="part" text="భాగమà±Â %n"/>
+<l:template name="procedure" text="పదà±à°§à°¤à°¿Â %n"/>
+<l:template name="productionset" text="ఉతà±à°ªà°¤à±à°¤à°¿Â %n"/>
+<l:template name="qandadiv" text="à°ªà±à°°à°¶à±à°¨à°²à± &amp; సమాధానమà±à°²à±Â %n"/>
+<l:template name="qandaentry" text="à°ªà±à°°à°¶à±à°¨: %n"/>
+<l:template name="question" text="à°ªà±à°°à°¶à±à°¨: %n"/>
+<l:template name="sect1" text="విభాగమà±Â %n"/>
+<l:template name="sect2" text="విభాగమà±Â %n"/>
+<l:template name="sect3" text="విభాగమà±Â %n"/>
+<l:template name="sect4" text="విభాగమà±Â %n"/>
+<l:template name="sect5" text="విభాగమà±Â %n"/>
+<l:template name="section" text="విభాగమà±Â %n"/>
+<l:template name="table" text="పటà±à°Ÿà°¿à°•Â %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="à°…à°¨à±à°¬à°‚ధం %n, %t"/>
+<l:template name="bridgehead" text="విభాగమà±Â %n, “%tâ€"/>
+<l:template name="chapter" text="à°…à°§à±à°¯à°¾à°¯à°®à±Â %n, %t"/>
+<l:template name="equation" text="సమీకరణమà±Â %n, “%tâ€"/>
+<l:template name="example" text="ఉదాహరణ %n, “%tâ€"/>
+<l:template name="figure" text="మూరà±à°¤à°¿Â %n, “%tâ€"/>
+<l:template name="part" text="భాగమà±Â %n, “%tâ€"/>
+<l:template name="procedure" text="పదà±à°§à°¤à°¿Â %n, “%tâ€"/>
+<l:template name="productionset" text="ఉతà±à°ªà°¤à±à°¤à°¿Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="à°ªà±à°°à°¶à±à°¨à°²à± &amp; సమాధానమà±à°²à±Â %n, “%tâ€"/>
+<l:template name="refsect1" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="refsect2" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="refsect3" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="refsection" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="sect1" text="విభాగమà±Â %n, “%tâ€"/>
+<l:template name="sect2" text="విభాగమà±Â %n, “%tâ€"/>
+<l:template name="sect3" text="విభాగమà±Â %n, “%tâ€"/>
+<l:template name="sect4" text="విభాగమà±Â %n, “%tâ€"/>
+<l:template name="sect5" text="విభాగమà±Â %n, “%tâ€"/>
+<l:template name="section" text="విభాగమà±Â %n, “%tâ€"/>
+<l:template name="simplesect" text="à°† విభాగమౠపిలà±à°µà°¬à°¡à±à°¤à±à°‚ది “%tâ€"/>
+<l:template name="table" text="పటà±à°Ÿà°¿à°•Â %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" మరియౠ"/>
+<l:template name="seplast" text=", మరియౠ"/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="చూడà±à°®à± %t."/>
+<l:template name="seealso" text="ఇదికూడా చూడà±à°®à± %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="à°ªà±à°°à±‡à°•à±à°·à°•à±à°²à±: "/>
+<l:template name="MsgLevel" text="à°¸à±à°¥à°¾à°¯à°¿: "/>
+<l:template name="MsgOrig" text="మూలమà±: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="జనవరి"/>
+<l:template name="February" text="à°«à°¿à°¬à±à°°à°µà°°à°¿"/>
+<l:template name="March" text="మారà±à°šà°¿"/>
+<l:template name="April" text="à°à°ªà±à°°à°¿à°²à±"/>
+<l:template name="May" text="మే"/>
+<l:template name="June" text="జూనà±"/>
+<l:template name="July" text="à°œà±à°²à±ˆ"/>
+<l:template name="August" text="ఆగసà±à°Ÿà±"/>
+<l:template name="September" text="సెపà±à°Ÿà±†à°‚బరà±"/>
+<l:template name="October" text="à°…à°•à±à°Ÿà±‹à°¬à°°à±"/>
+<l:template name="November" text="నవంబరà±"/>
+<l:template name="December" text="డిసెంబరà±"/>
+<l:template name="Monday" text="సోమవారమà±"/>
+<l:template name="Tuesday" text="మంగళవారమà±"/>
+<l:template name="Wednesday" text="à°¬à±à°§à°µà°¾à°°à°®à±"/>
+<l:template name="Thursday" text="à°—à±à°°à±à°µà°¾à°°à°®à±"/>
+<l:template name="Friday" text="à°¶à±à°•à±à°°à°µà°¾à°°à°®à±"/>
+<l:template name="Saturday" text="శనివారమà±"/>
+<l:template name="Sunday" text="ఆదివారమà±"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="జన"/>
+<l:template name="Feb" text="à°«à°¿à°¬à±à°°"/>
+<l:template name="Mar" text="మారà±à°šà°¿"/>
+<l:template name="Apr" text="à°à°ªà±à°°à°¿"/>
+<l:template name="May" text="మే"/>
+<l:template name="Jun" text="జూనà±"/>
+<l:template name="Jul" text="à°œà±à°²à±ˆ"/>
+<l:template name="Aug" text="ఆగ"/>
+<l:template name="Sep" text="సెపà±à°Ÿà±†à°‚"/>
+<l:template name="Oct" text="à°…à°•à±à°Ÿà±‹"/>
+<l:template name="Nov" text="నవం"/>
+<l:template name="Dec" text="డిసెం"/>
+<l:template name="Mon" text="సోమ"/>
+<l:template name="Tue" text="మంగళ"/>
+<l:template name="Wed" text="à°¬à±à°§"/>
+<l:template name="Thu" text="à°—à±à°°à±"/>
+<l:template name="Fri" text="à°¶à±à°•à±à°°"/>
+<l:template name="Sat" text="శని"/>
+<l:template name="Sun" text="ఆది"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x044a Telugu"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">à°šà°¿à°¹à±à°¨à°®à±à°²à±</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml
new file mode 100644
index 0000000..f2e8109
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="th" english-language-name="Thai">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/th.xml -->
+<!-- * -->
+<!-- * E-mail the edited th.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="บทคัดย่อ"/>
+<l:gentext key="abstract" text="บทคัดย่อ"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="ตอบ:"/>
+<l:gentext key="answer" text="ตอบ:"/>
+<l:gentext key="Appendix" text="ภาคผนวà¸"/>
+<l:gentext key="appendix" text="ภาคผนวà¸"/>
+<l:gentext key="Article" text="บทความ"/>
+<l:gentext key="article" text="บทความ"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="บรรณานุà¸à¸£à¸¡"/>
+<l:gentext key="bibliography" text="บรรณานุà¸à¸£à¸¡"/>
+<l:gentext key="Book" text="หนังสือ"/>
+<l:gentext key="book" text="หนังสือ"/>
+<l:gentext key="CAUTION" text="คำเตือน"/>
+<l:gentext key="Caution" text="คำเตือน"/>
+<l:gentext key="caution" text="คำเตือน"/>
+<l:gentext key="Chapter" text="บทที่"/>
+<l:gentext key="chapter" text="บทที่"/>
+<l:gentext key="Colophon" text="เบื้องหลัง"/>
+<l:gentext key="colophon" text="เบื้องหลัง"/>
+<l:gentext key="Copyright" text="สงวนสิขสิทธิ์"/>
+<l:gentext key="copyright" text="สงวนสิขสิทธิ์"/>
+<l:gentext key="Dedication" text="คำอุทิศ"/>
+<l:gentext key="dedication" text="คำอุทิศ"/>
+<l:gentext key="Edition" text="ฉบับ"/>
+<l:gentext key="edition" text="ฉบับ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="สมà¸à¸²à¸£"/>
+<l:gentext key="equation" text="สมà¸à¸²à¸£"/>
+<l:gentext key="Example" text="ตัวอย่าง"/>
+<l:gentext key="example" text="ตัวอย่าง"/>
+<l:gentext key="Figure" text="รูป"/>
+<l:gentext key="figure" text="รูป"/>
+<l:gentext key="Glossary" text="อภิธานศัพท์"/>
+<l:gentext key="glossary" text="อภิธานศัพท์"/>
+<l:gentext key="GlossSee" text="ดู"/>
+<l:gentext key="glosssee" text="ดู"/>
+<l:gentext key="GlossSeeAlso" text="ดูเพิ่มเติม"/>
+<l:gentext key="glossseealso" text="ดูเพิ่มเติม"/>
+<l:gentext key="IMPORTANT" text="ข้อควรจำ"/>
+<l:gentext key="important" text="ข้อควรจำ"/>
+<l:gentext key="Important" text="ข้อควรจำ"/>
+<l:gentext key="Index" text="ดรรชนี"/>
+<l:gentext key="index" text="ดรรชนี"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ข้อผูà¸à¸žà¸±à¸™à¸•à¸²à¸¡à¸à¸Žà¸«à¸¡à¸²à¸¢"/>
+<l:gentext key="legalnotice" text="ข้อผูà¸à¸žà¸±à¸™à¸•à¸²à¸¡à¸à¸Žà¸«à¸¡à¸²à¸¢"/>
+<l:gentext key="MsgAud" text="ผู้อ่าน"/>
+<l:gentext key="msgaud" text="ผู้อ่าน"/>
+<l:gentext key="MsgLevel" text="ระดับ"/>
+<l:gentext key="msglevel" text="ระดับ"/>
+<l:gentext key="MsgOrig" text="ที่มา"/>
+<l:gentext key="msgorig" text="ที่มา"/>
+<l:gentext key="NOTE" text="หมายเหตุ"/>
+<l:gentext key="Note" text="หมายเหตุ"/>
+<l:gentext key="note" text="หมายเหตุ"/>
+<l:gentext key="Part" text="ภาค"/>
+<l:gentext key="part" text="ภาค"/>
+<l:gentext key="Preface" text="คำนำ"/>
+<l:gentext key="preface" text="คำนำ"/>
+<l:gentext key="Procedure" text="ระเบียบà¸à¸²à¸£"/>
+<l:gentext key="procedure" text="ระเบียบà¸à¸²à¸£"/>
+<l:gentext key="ProductionSet" text="ผลิต"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="ตีพิมพ์"/>
+<l:gentext key="published" text="ตีพิมพ์"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ถาม-ตอบ"/>
+<l:gentext key="qandadiv" text="ถาม-ตอบ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ถาม:"/>
+<l:gentext key="question" text="ถาม:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="หนังสืออ้างอิง"/>
+<l:gentext key="reference" text="หนังสืออ้างอิง"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ชื่อ"/>
+<l:gentext key="refname" text="ชื่อ"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="สาระสำคัà¸"/>
+<l:gentext key="refsynopsisdiv" text="สาระสำคัà¸"/>
+<l:gentext key="RevHistory" text="บันทึà¸à¸£à¸¸à¹ˆà¸™"/>
+<l:gentext key="revhistory" text="บันทึà¸à¸£à¸¸à¹ˆà¸™"/>
+<l:gentext key="revision" text="รุ่นที่"/>
+<l:gentext key="Revision" text="รุ่นที่"/>
+<l:gentext key="sect1" text="ตอนที่"/>
+<l:gentext key="sect2" text="ตอนที่"/>
+<l:gentext key="sect3" text="ตอนที่"/>
+<l:gentext key="sect4" text="ตอนที่"/>
+<l:gentext key="sect5" text="ตอนที่"/>
+<l:gentext key="section" text="ตอนที่"/>
+<l:gentext key="Section" text="ตอนที่"/>
+<l:gentext key="see" text="ดู"/>
+<l:gentext key="See" text="ดู"/>
+<l:gentext key="seealso" text="ดูเพิ่มเติม"/>
+<l:gentext key="Seealso" text="ดูเพิ่มเติม"/>
+<l:gentext key="SeeAlso" text="ดูเพิ่มเติม"/>
+<l:gentext key="set" text="ชุด"/>
+<l:gentext key="Set" text="ชุด"/>
+<l:gentext key="setindex" text="สารบัà¸à¸Šà¸¸à¸”"/>
+<l:gentext key="SetIndex" text="สารบัà¸à¸Šà¸¸à¸”"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="ลำดับ"/>
+<l:gentext key="Step" text="ลำดับ"/>
+<l:gentext key="table" text="ตาราง"/>
+<l:gentext key="Table" text="ตาราง"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="คำà¹à¸™à¸°à¸™à¸³"/>
+<l:gentext key="TIP" text="คำà¹à¸™à¸°à¸™à¸³"/>
+<l:gentext key="Tip" text="คำà¹à¸™à¸°à¸™à¸³"/>
+<l:gentext key="Warning" text="คำเตือน"/>
+<l:gentext key="warning" text="คำเตือน"/>
+<l:gentext key="WARNING" text="คำเตือน"/>
+<l:gentext key="and" text="à¹à¸¥à¸°"/>
+<l:gentext key="by" text="โดย"/>
+<l:gentext key="Edited" text="เรียบเรียง"/>
+<l:gentext key="edited" text="เรียบเรียง"/>
+<l:gentext key="Editedby" text="เรียบเรียงโดย"/>
+<l:gentext key="editedby" text="เรียบเรียงโดย"/>
+<l:gentext key="in" text="ใน"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="หมายเหตุ"/>
+<l:gentext key="Notes" text="หมายเหตุ"/>
+<l:gentext key="Pgs" text="หน้า"/>
+<l:gentext key="pgs" text="หน้า"/>
+<l:gentext key="Revisedby" text="à¹à¸à¹‰à¹„ขปรับปรุงโดย: "/>
+<l:gentext key="revisedby" text="à¹à¸à¹‰à¹„ขปรับปรุงโดย: "/>
+<l:gentext key="TableNotes" text="หมายเหตุ"/>
+<l:gentext key="tablenotes" text="หมายเหตุ"/>
+<l:gentext key="TableofContents" text="สารบัà¸"/>
+<l:gentext key="tableofcontents" text="สารบัà¸"/>
+<l:gentext key="unexpectedelementname" text="พบส่วนที่ไม่ต้องà¸à¸²à¸£"/>
+<l:gentext key="unsupported" text="ไม่สนับสนุน"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="สารบัà¸à¸ªà¸¡à¸à¸²à¸£"/>
+<l:gentext key="ListofEquations" text="สารบัà¸à¸ªà¸¡à¸à¸²à¸£"/>
+<l:gentext key="ListofExamples" text="สารบัà¸à¸•à¸±à¸§à¸­à¸¢à¹ˆà¸²à¸‡"/>
+<l:gentext key="listofexamples" text="สารบัà¸à¸•à¸±à¸§à¸­à¸¢à¹ˆà¸²à¸‡"/>
+<l:gentext key="ListofFigures" text="สารบัà¸à¸£à¸¹à¸›"/>
+<l:gentext key="listoffigures" text="สารบัà¸à¸£à¸¹à¸›"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="สารบัà¸à¸•à¸²à¸£à¸²à¸‡"/>
+<l:gentext key="ListofTables" text="สารบัà¸à¸•à¸²à¸£à¸²à¸‡"/>
+<l:gentext key="ListofUnknown" text="สารบัà¸à¸­à¸·à¹ˆà¸™ ๆ"/>
+<l:gentext key="listofunknown" text="สารบัà¸à¸­à¸·à¹ˆà¸™ ๆ"/>
+<l:gentext key="nav-home" text="หน้าà¹à¸£à¸"/>
+<l:gentext key="nav-next" text="ต่อไป"/>
+<l:gentext key="nav-next-sibling" text="ต่อไป"/>
+<l:gentext key="nav-prev" text="à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"/>
+<l:gentext key="nav-prev-sibling" text="à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"/>
+<l:gentext key="nav-up" text="à¸à¸¥à¸±à¸š"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="หัวข้อ"/>
+<l:gentext key="index symbols" text="สัà¸à¸¥à¸±à¸à¸©à¸“์"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ภาคผนวภ%n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="บทที่ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="สมà¸à¸²à¸£ %n. %t"/>
+<l:template name="example" text="ตัวอย่าง %n. %t"/>
+<l:template name="figure" text="รูป %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ภาค %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ระเบียบà¸à¸²à¸£ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ผลิต %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ตาราง %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ภาคผนวภ%n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="บทที่ %n. %t"/>
+<l:template name="part" text="ภาค %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="ตอบ: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ถาม: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ถาม: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="หัวข้อ “%tâ€"/>
+<l:template name="refsection" text="หัวข้อ “%tâ€"/>
+<l:template name="refsect1" text="หัวข้อ “%tâ€"/>
+<l:template name="refsect2" text="หัวข้อ “%tâ€"/>
+<l:template name="refsect3" text="หัวข้อ “%tâ€"/>
+<l:template name="sect1" text="หัวข้อ “%tâ€"/>
+<l:template name="sect2" text="หัวข้อ “%tâ€"/>
+<l:template name="sect3" text="หัวข้อ “%tâ€"/>
+<l:template name="sect4" text="หัวข้อ “%tâ€"/>
+<l:template name="sect5" text="หัวข้อ “%tâ€"/>
+<l:template name="section" text="หัวข้อ “%tâ€"/>
+<l:template name="simplesect" text="หัวข้อ “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ตอบ: %n"/>
+<l:template name="appendix" text="ภาคผนวà¸Â %n"/>
+<l:template name="bridgehead" text="ตอนที่ %n"/>
+<l:template name="chapter" text="บทที่ %n"/>
+<l:template name="equation" text="สมà¸à¸²à¸£Â %n"/>
+<l:template name="example" text="ตัวอย่าง %n"/>
+<l:template name="figure" text="รูป %n"/>
+<l:template name="part" text="ภาค %n"/>
+<l:template name="procedure" text="ระเบียบà¸à¸²à¸£Â %n"/>
+<l:template name="productionset" text="ผลิต %n"/>
+<l:template name="qandadiv" text="ถาม-ตอบ %n"/>
+<l:template name="qandaentry" text="ถาม: %n"/>
+<l:template name="question" text="ถาม: %n"/>
+<l:template name="sect1" text="ตอนที่ %n"/>
+<l:template name="sect2" text="ตอนที่ %n"/>
+<l:template name="sect3" text="ตอนที่ %n"/>
+<l:template name="sect4" text="ตอนที่ %n"/>
+<l:template name="sect5" text="ตอนที่ %n"/>
+<l:template name="section" text="ตอนที่ %n"/>
+<l:template name="table" text="ตาราง %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ภาคผนวà¸Â %n, %t"/>
+<l:template name="bridgehead" text="ตอนที่ %n, “%tâ€"/>
+<l:template name="chapter" text="บทที่ %n, %t"/>
+<l:template name="equation" text="สมà¸à¸²à¸£Â %n, “%tâ€"/>
+<l:template name="example" text="ตัวอย่าง %n, “%tâ€"/>
+<l:template name="figure" text="รูป %n, “%tâ€"/>
+<l:template name="part" text="ภาค %n, “%tâ€"/>
+<l:template name="procedure" text="ระเบียบà¸à¸²à¸£Â %n, “%tâ€"/>
+<l:template name="productionset" text="ผลิต %n, “%tâ€"/>
+<l:template name="qandadiv" text="ถาม-ตอบ %n, “%tâ€"/>
+<l:template name="refsect1" text="หัวข้อ “%tâ€"/>
+<l:template name="refsect2" text="หัวข้อ “%tâ€"/>
+<l:template name="refsect3" text="หัวข้อ “%tâ€"/>
+<l:template name="refsection" text="หัวข้อ “%tâ€"/>
+<l:template name="sect1" text="ตอนที่ %n, “%tâ€"/>
+<l:template name="sect2" text="ตอนที่ %n, “%tâ€"/>
+<l:template name="sect3" text="ตอนที่ %n, “%tâ€"/>
+<l:template name="sect4" text="ตอนที่ %n, “%tâ€"/>
+<l:template name="sect5" text="ตอนที่ %n, “%tâ€"/>
+<l:template name="section" text="ตอนที่ %n, “%tâ€"/>
+<l:template name="simplesect" text="หัวข้อ “%tâ€"/>
+<l:template name="table" text="ตาราง %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" à¹à¸¥à¸° "/>
+<l:template name="seplast" text=", à¹à¸¥à¸° "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ดู %t."/>
+<l:template name="seealso" text="ดูเพิ่มเติม %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ผู้อ่าน: "/>
+<l:template name="MsgLevel" text="ระดับ: "/>
+<l:template name="MsgOrig" text="ที่มา: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041e Thai"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl
new file mode 100644
index 0000000..84fcf79
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl
@@ -0,0 +1,805 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: titles.xsl 8599 2010-03-20 10:47:36Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- title markup -->
+
+<doc:mode mode="title.markup" xmlns="">
+<refpurpose>Provides access to element titles</refpurpose>
+<refdescription id="title.markup-desc">
+<para>Processing an element in the
+<literal role="mode">title.markup</literal> mode produces the
+title of the element. This does not include the label.
+</para>
+</refdescription>
+</doc:mode>
+
+<xsl:template match="*" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+ <xsl:choose>
+ <!-- * FIXME: this should handle other *info elements as well -->
+ <!-- * but this is good enough for now. -->
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'partintro'">
+ <!-- partintro's don't have titles, use the parent (part or reference)
+ title instead. -->
+ <xsl:apply-templates select="parent::*" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$verbose != 0">
+ <xsl:message>
+ <xsl:text>Request for title of element with no title: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:text> (id="</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>")</xsl:text>
+ </xsl:when>
+ <xsl:when test="@xml:id">
+ <xsl:text> (xml:id="</xsl:text>
+ <xsl:value-of select="@xml:id"/>
+ <xsl:text>")</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>???TITLE???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="title" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- only occurs in HTML Tables! -->
+<xsl:template match="caption" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="set" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(setinfo/title|info/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="book" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(bookinfo/title|info/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="part" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(partinfo/title|info/title|docinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$allow-anchors"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="title" select="(docinfo/title
+ |info/title
+ |prefaceinfo/title
+ |chapterinfo/title
+ |appendixinfo/title
+ |title)[1]"/>
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="dedication" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Dedication'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="acknowledgements" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Acknowledgements'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="colophon" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Colophon'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="article" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(artheader/title
+ |articleinfo/title
+ |info/title
+ |title)[1]"/>
+
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="reference" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(referenceinfo/title|docinfo/title|info/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="refmeta" select=".//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select=".//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="title.markup"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc" mode="title.markup"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>REFENTRY WITHOUT TITLE???</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:copy-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="refentrytitle|refname|refdescriptor" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3|refsection
+ |simplesect"
+ mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(info/title
+ |sectioninfo/title
+ |sect1info/title
+ |sect2info/title
+ |sect3info/title
+ |sect4info/title
+ |sect5info/title
+ |refsect1info/title
+ |refsect2info/title
+ |refsect3info/title
+ |refsectioninfo/title
+ |title)[1]"/>
+
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="title.markup">
+ <xsl:apply-templates mode="title.markup"/>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(bibliographyinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Bibliography'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossary" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(glossaryinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.element.name">
+ <xsl:with-param name="element.name" select="local-name(.)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>ERROR: glossdiv missing its required title</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="glossterm" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="glossterm|firstterm" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="index" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(indexinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Index'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(setindexinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'SetIndex'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure|example|equation" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="table" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(title|info/title|caption)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="procedure" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="task" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="sidebar" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(info/title|sidebarinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="abstract" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Abstract'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="caution|tip|warning|important|note" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(title|info/title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question" mode="title.markup">
+ <!-- questions don't have titles -->
+ <xsl:text>Question</xsl:text>
+</xsl:template>
+
+<xsl:template match="answer" mode="title.markup">
+ <!-- answers don't have titles -->
+ <xsl:text>Answer</xsl:text>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="title.markup">
+ <!-- qandaentrys are represented by the first question in them -->
+ <xsl:text>Question</xsl:text>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(info/title|
+ blockinfo/title|
+ title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'QandASet'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'LegalNotice'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="info/titleabbrev">
+ <xsl:apply-templates select="info/titleabbrev[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="book|preface|chapter|appendix" mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="(docinfo/titleabbrev
+ |bookinfo/titleabbrev
+ |info/titleabbrev
+ |prefaceinfo/titleabbrev
+ |chapterinfo/titleabbrev
+ |appendixinfo/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="article" mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="(artheader/titleabbrev
+ |articleinfo/titleabbrev
+ |info/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3
+ |simplesect"
+ mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="(info/titleabbrev
+ |sectioninfo/titleabbrev
+ |sect1info/titleabbrev
+ |sect2info/titleabbrev
+ |sect3info/titleabbrev
+ |sect4info/titleabbrev
+ |sect5info/titleabbrev
+ |refsect1info/titleabbrev
+ |refsect2info/titleabbrev
+ |refsect3info/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="no.anchor.mode">
+ <!-- Switch to normal mode if no links -->
+ <xsl:choose>
+ <xsl:when test="descendant-or-self::footnote or
+ descendant-or-self::anchor or
+ descendant-or-self::ulink or
+ descendant-or-self::link or
+ descendant-or-self::olink or
+ descendant-or-self::xref or
+ descendant-or-self::indexterm or
+ (ancestor::title and (@id or @xml:id))">
+
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="footnote" mode="no.anchor.mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<xsl:template match="anchor" mode="no.anchor.mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<xsl:template match="ulink" mode="no.anchor.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="link" mode="no.anchor.mode">
+ <xsl:choose>
+ <xsl:when test="count(child::node()) &gt; 0">
+ <!-- If it has content, use it -->
+ <xsl:apply-templates/>
+ </xsl:when>
+ <!-- look for an endterm -->
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" mode="no.anchor.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="no.anchor.mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<xsl:template match="xref" mode="no.anchor.mode">
+ <xsl:variable name="targets" select="key('id',@linkend)|key('id',substring-after(@xlink:href,'#'))"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XRef to nonexistent id: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+
+ <xsl:choose>
+ <!-- Watch out for the case when there is a xref or link inside
+ a title. See bugs #1811721 and #1838136. -->
+ <xsl:when test="not(ancestor::*[@id = $target/@id] or ancestor::*[@xml:id = $target/@xml:id])">
+
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+
+ <xsl:apply-templates select="$target" mode="xref-to">
+
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- ============================================================ -->
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml
new file mode 100644
index 0000000..b081d8e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="tl" english-language-name="Tagalog">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/tl.xml -->
+<!-- * -->
+<!-- * E-mail the edited tl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrak"/>
+<l:gentext key="abstract" text="Abstrak"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Sagot:"/>
+<l:gentext key="answer" text="Sagot:"/>
+<l:gentext key="Appendix" text="Apendiks"/>
+<l:gentext key="appendix" text="Apendiks"/>
+<l:gentext key="Article" text="Artikulo"/>
+<l:gentext key="article" text="Artikulo"/>
+<l:gentext key="Author" text="May Akda"/>
+<l:gentext key="Bibliography" text="Bibliograpiya"/>
+<l:gentext key="bibliography" text="Bibliograpiya"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="Libro"/>
+<l:gentext key="CAUTION" text="BABALA"/>
+<l:gentext key="Caution" text="Babala"/>
+<l:gentext key="caution" text="Babala"/>
+<l:gentext key="Chapter" text="Kabanata"/>
+<l:gentext key="chapter" text="Kabanata"/>
+<l:gentext key="Colophon" text="Kolopon"/>
+<l:gentext key="colophon" text="Kolopon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Pag-aalay"/>
+<l:gentext key="dedication" text="Pag-aalay"/>
+<l:gentext key="Edition" text="Edisyon"/>
+<l:gentext key="edition" text="Ediisyon"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Equation"/>
+<l:gentext key="equation" text="Equation"/>
+<l:gentext key="Example" text="Halimbawa"/>
+<l:gentext key="example" text="Halimbawa"/>
+<l:gentext key="Figure" text="Pigyur"/>
+<l:gentext key="figure" text="Pigyur"/>
+<l:gentext key="Glossary" text="Talahuguhanan"/>
+<l:gentext key="glossary" text="Talahuguhanan"/>
+<l:gentext key="GlossSee" text="Tingnan Ang"/>
+<l:gentext key="glosssee" text="Tingnan Ang"/>
+<l:gentext key="GlossSeeAlso" text="Tingnan Din Ang"/>
+<l:gentext key="glossseealso" text="Tingnan din ang"/>
+<l:gentext key="IMPORTANT" text="MAHALAGA"/>
+<l:gentext key="important" text="Mahalaga"/>
+<l:gentext key="Important" text="Mahalaga"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="Indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Paunawang Legal"/>
+<l:gentext key="legalnotice" text="Paunawang Legal"/>
+<l:gentext key="MsgAud" text="Awdiyens"/>
+<l:gentext key="msgaud" text="Awdiyens"/>
+<l:gentext key="MsgLevel" text="Lebel"/>
+<l:gentext key="msglevel" text="Lebel"/>
+<l:gentext key="MsgOrig" text="Pinagmulan"/>
+<l:gentext key="msgorig" text="Pinagmulan"/>
+<l:gentext key="NOTE" text="TALA"/>
+<l:gentext key="Note" text="Tala"/>
+<l:gentext key="note" text="Tala"/>
+<l:gentext key="Part" text="Bahagi"/>
+<l:gentext key="part" text="Bahagi"/>
+<l:gentext key="Preface" text="Panimula"/>
+<l:gentext key="preface" text="Panimula"/>
+<l:gentext key="Procedure" text="Mga Hakbang"/>
+<l:gentext key="procedure" text="Mga Hakbang"/>
+<l:gentext key="ProductionSet" text="Produksiyon"/>
+<l:gentext key="PubDate" text="Petsa ng Paglimbag"/>
+<l:gentext key="pubdate" text="Petsa ng Paglimbag"/>
+<l:gentext key="Published" text="Nalimbag"/>
+<l:gentext key="published" text="Nalimbag"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Tanong at Sagot"/>
+<l:gentext key="qandadiv" text="Tanong at Sagot"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Tanong:"/>
+<l:gentext key="question" text="Tanong:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Reperens"/>
+<l:gentext key="reference" text="Reperens"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Pangalan"/>
+<l:gentext key="refname" text="Pangalan"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Buod"/>
+<l:gentext key="refsynopsisdiv" text="Buod"/>
+<l:gentext key="RevHistory" text="Talaan Ng Mga Rebisyon"/>
+<l:gentext key="revhistory" text="Talaan ng mga Rebisyon"/>
+<l:gentext key="revision" text="Rebisyon"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Bahagi"/>
+<l:gentext key="sect2" text="Bahagi"/>
+<l:gentext key="sect3" text="Bahagi"/>
+<l:gentext key="sect4" text="Bahagi"/>
+<l:gentext key="sect5" text="Bahagi"/>
+<l:gentext key="section" text="Bahagi"/>
+<l:gentext key="Section" text="Bahagi"/>
+<l:gentext key="see" text="tingnan"/>
+<l:gentext key="See" text="Tingnan"/>
+<l:gentext key="seealso" text="tingnan din ang"/>
+<l:gentext key="Seealso" text="Tingnan din ang"/>
+<l:gentext key="SeeAlso" text="Tingnan Din Ang"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Indeks ng Set"/>
+<l:gentext key="SetIndex" text="Indeks ng Set"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="hakbang"/>
+<l:gentext key="Step" text="Hakbang"/>
+<l:gentext key="table" text="Talaan"/>
+<l:gentext key="Table" text="Talaan"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Babala"/>
+<l:gentext key="warning" text="Babala"/>
+<l:gentext key="WARNING" text="BABALA"/>
+<l:gentext key="and" text="at"/>
+<l:gentext key="by" text="ni"/>
+<l:gentext key="Edited" text="In-edit"/>
+<l:gentext key="edited" text="In-edit"/>
+<l:gentext key="Editedby" text="In-edit ni"/>
+<l:gentext key="editedby" text="In-edit ni"/>
+<l:gentext key="in" text="sa"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Mga tala"/>
+<l:gentext key="Notes" text="Mga Tala"/>
+<l:gentext key="Pgs" text="p."/>
+<l:gentext key="pgs" text="p."/>
+<l:gentext key="Revisedby" text="Nirebisa ni: "/>
+<l:gentext key="revisedby" text="Nirebisa ni: "/>
+<l:gentext key="TableNotes" text="Mga Tala"/>
+<l:gentext key="tablenotes" text="Mga Tala"/>
+<l:gentext key="TableofContents" text="Talaan ng Nilalaman"/>
+<l:gentext key="tableofcontents" text="Talaan ng Nilalaman"/>
+<l:gentext key="unexpectedelementname" text="hindi inaasahang element"/>
+<l:gentext key="unsupported" text="hindi sinusuportahan"/>
+<l:gentext key="xrefto" text="xref sa"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Listahan ng mga Ekwasyon"/>
+<l:gentext key="ListofEquations" text="Listahan Ng Mga Ekwasyon"/>
+<l:gentext key="ListofExamples" text="Listahan Ng Mga Halimbawa"/>
+<l:gentext key="listofexamples" text="Listahan ng mga Halimbawa"/>
+<l:gentext key="ListofFigures" text="Listahan Ng Mga Pigyur "/>
+<l:gentext key="listoffigures" text="Listahan ng mga Pigyur"/>
+<l:gentext key="ListofProcedures" text="Listahan Ng Mga Prosidyur"/>
+<l:gentext key="listofprocedures" text="Listahan ng mga Prosidyur"/>
+<l:gentext key="listoftables" text="Listahan ng mga Talaan"/>
+<l:gentext key="ListofTables" text="Listahan Ng Mga Talaan"/>
+<l:gentext key="ListofUnknown" text="Listahan Ng Mga Di Alam"/>
+<l:gentext key="listofunknown" text="Listahan ng mga Di Alam"/>
+<l:gentext key="nav-home" text="Home"/>
+<l:gentext key="nav-next" text="Sulong"/>
+<l:gentext key="nav-next-sibling" text="Mabilis na pasulong"/>
+<l:gentext key="nav-prev" text="Balik"/>
+<l:gentext key="nav-prev-sibling" text="Mabilis na pabalik"/>
+<l:gentext key="nav-up" text="Taas"/>
+<l:gentext key="nav-toc" text="TnN"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="taas"/>
+<l:gentext key="below" text="baba"/>
+<l:gentext key="sectioncalled" text="ang bahaging tinatawag na"/>
+<l:gentext key="index symbols" text="Mga simbolo"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apendiks %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kabanata %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equation %n. %t"/>
+<l:template name="example" text="Halimbawa %n. %t"/>
+<l:template name="figure" text="Pigyur %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Bahagi %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Mga Hakbang %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produksiyon %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Talaan %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apendiks %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kabanata %n. %t"/>
+<l:template name="part" text="Bahagi %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Sagot: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Tanong: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Tanong: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" sa %o"/>
+<l:template name="olink.page.citation" text=" (pahina %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(pahina %p)"/>
+<l:template name="docname" text=" sa %o"/>
+<l:template name="docnamelong" text=" sa dokumento na %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Pahina %p"/>
+<l:template name="bridgehead" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="refsection" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="refsect1" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="refsect2" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="refsect3" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="sect1" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="sect2" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="sect3" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="sect4" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="sect5" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="section" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="simplesect" text="ang bahaging tinatawag na “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Sagot: %n"/>
+<l:template name="appendix" text="Apendiks %n"/>
+<l:template name="bridgehead" text="Bahagi %n"/>
+<l:template name="chapter" text="Kabanata %n"/>
+<l:template name="equation" text="Equation %n"/>
+<l:template name="example" text="Halimbawa %n"/>
+<l:template name="figure" text="Pigyur %n"/>
+<l:template name="part" text="Bahagi %n"/>
+<l:template name="procedure" text="Mga Hakbang %n"/>
+<l:template name="productionset" text="Produksiyon %n"/>
+<l:template name="qandadiv" text="Tanong at Sagot %n"/>
+<l:template name="qandaentry" text="Tanong: %n"/>
+<l:template name="question" text="Tanong: %n"/>
+<l:template name="sect1" text="Bahagi %n"/>
+<l:template name="sect2" text="Bahagi %n"/>
+<l:template name="sect3" text="Bahagi %n"/>
+<l:template name="sect4" text="Bahagi %n"/>
+<l:template name="sect5" text="Bahagi %n"/>
+<l:template name="section" text="Bahagi %n"/>
+<l:template name="table" text="Talaan %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apendiks %n, %t"/>
+<l:template name="bridgehead" text="Bahagi %n, “%tâ€"/>
+<l:template name="chapter" text="Kabanata %n, %t"/>
+<l:template name="equation" text="Equation %n, “%tâ€"/>
+<l:template name="example" text="Halimbawa %n, “%tâ€"/>
+<l:template name="figure" text="Pigyur %n, “%tâ€"/>
+<l:template name="part" text="Bahagi %n, “%tâ€"/>
+<l:template name="procedure" text="Mga Hakbang %n, “%tâ€"/>
+<l:template name="productionset" text="Produksiyon %n, “%tâ€"/>
+<l:template name="qandadiv" text="Tanong at Sagot %n, “%tâ€"/>
+<l:template name="refsect1" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="refsect2" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="refsect3" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="refsection" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="sect1" text="Bahagi %n, “%tâ€"/>
+<l:template name="sect2" text="Bahagi %n, “%tâ€"/>
+<l:template name="sect3" text="Bahagi %n, “%tâ€"/>
+<l:template name="sect4" text="Bahagi %n, “%tâ€"/>
+<l:template name="sect5" text="Bahagi %n, “%tâ€"/>
+<l:template name="section" text="Bahagi %n, “%tâ€"/>
+<l:template name="simplesect" text="ang bahaging tinatawag na “%tâ€"/>
+<l:template name="table" text="Talaan %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" at "/>
+<l:template name="seplast" text=", at "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Tingnan Ang %t."/>
+<l:template name="seealso" text="Tingnan Din Ang %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Awdiyens: "/>
+<l:template name="MsgLevel" text="Lebel: "/>
+<l:template name="MsgOrig" text="Pinagmulan: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Depinisyon: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Enero"/>
+<l:template name="February" text="Pebrero"/>
+<l:template name="March" text="Marso"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Mayo"/>
+<l:template name="June" text="Hunyo"/>
+<l:template name="July" text="Hulyo"/>
+<l:template name="August" text="Agosto"/>
+<l:template name="September" text="Setyembre"/>
+<l:template name="October" text="Oktubre"/>
+<l:template name="November" text="Nobyembre"/>
+<l:template name="December" text="Disyembre"/>
+<l:template name="Monday" text="Lunes"/>
+<l:template name="Tuesday" text="Martes"/>
+<l:template name="Wednesday" text="Miyeskules"/>
+<l:template name="Thursday" text="Huwebes"/>
+<l:template name="Friday" text="Biyernes"/>
+<l:template name="Saturday" text="Sabado"/>
+<l:template name="Sunday" text="Linggo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ene"/>
+<l:template name="Feb" text="Peb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Abr"/>
+<l:template name="May" text="Mayo"/>
+<l:template name="Jun" text="Hun"/>
+<l:template name="Jul" text="Hul"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Set"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nob"/>
+<l:template name="Dec" text="Dis"/>
+<l:template name="Mon" text="Lun"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Miy"/>
+<l:template name="Thu" text="Huw"/>
+<l:template name="Fri" text="Biy"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Lin"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 Tagalog (PHILIPPINES)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml
new file mode 100644
index 0000000..652911d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml
@@ -0,0 +1,666 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="tr" english-language-name="Turkish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/tr.xml -->
+<!-- * -->
+<!-- * E-mail the edited tr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Özet"/>
+<l:gentext key="abstract" text="Özet"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Cevap:"/>
+<l:gentext key="answer" text="Cevap:"/>
+<l:gentext key="Appendix" text="Ek"/>
+<l:gentext key="appendix" text="Ek"/>
+<l:gentext key="Article" text="Makale"/>
+<l:gentext key="article" text="Makale"/>
+<l:gentext key="Author" text="Yazar"/>
+<l:gentext key="Bibliography" text="Kaynakça"/>
+<l:gentext key="bibliography" text="Kaynakça"/>
+<l:gentext key="Book" text="Kitap"/>
+<l:gentext key="book" text="Kitap"/>
+<l:gentext key="CAUTION" text="DÄ°KKAT"/>
+<l:gentext key="Caution" text="Dikkat"/>
+<l:gentext key="caution" text="Dikkat"/>
+<l:gentext key="Chapter" text="Bölüm"/>
+<l:gentext key="chapter" text="Bölüm"/>
+<l:gentext key="Colophon" text="Kitap hakkında"/>
+<l:gentext key="colophon" text="Kitap hakkında"/>
+<l:gentext key="Copyright" text="Telif Hakkı"/>
+<l:gentext key="copyright" text="Telif Hakkı"/>
+<l:gentext key="Dedication" text="Ä°thaf"/>
+<l:gentext key="dedication" text="Ä°thaf"/>
+<l:gentext key="Edition" text="Baskı"/>
+<l:gentext key="edition" text="Baskı"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Denklem"/>
+<l:gentext key="equation" text="Denklem"/>
+<l:gentext key="Example" text="Örnek"/>
+<l:gentext key="example" text="Örnek"/>
+<l:gentext key="Figure" text="Åžekil"/>
+<l:gentext key="figure" text="Åžekil"/>
+<l:gentext key="Glossary" text="Sözlük"/>
+<l:gentext key="glossary" text="Sözlük"/>
+<l:gentext key="GlossSee" text="Bkz."/>
+<l:gentext key="glosssee" text="Bkz."/>
+<l:gentext key="GlossSeeAlso" text="Bkz."/>
+<l:gentext key="glossseealso" text="Bkz."/>
+<l:gentext key="IMPORTANT" text="ÖNEMLİ"/>
+<l:gentext key="important" text="Önemli"/>
+<l:gentext key="Important" text="Önemli"/>
+<l:gentext key="Index" text="Dizin"/>
+<l:gentext key="index" text="Dizin"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Yasal Uyarı"/>
+<l:gentext key="legalnotice" text="Yasal Uyarı"/>
+<l:gentext key="MsgAud" text="Hedef Okuyucu"/>
+<l:gentext key="msgaud" text="Hedef Okuyucu"/>
+<l:gentext key="MsgLevel" text="Düzey"/>
+<l:gentext key="msglevel" text="Düzey"/>
+<l:gentext key="MsgOrig" text="Kaynak"/>
+<l:gentext key="msgorig" text="Kaynak"/>
+<l:gentext key="NOTE" text="NOT"/>
+<l:gentext key="Note" text="Not"/>
+<l:gentext key="note" text="Not"/>
+<l:gentext key="Part" text="Kısım"/>
+<l:gentext key="part" text="Kısım"/>
+<l:gentext key="Preface" text="Önsöz"/>
+<l:gentext key="preface" text="Önsöz"/>
+<l:gentext key="Procedure" text="Yönerge"/>
+<l:gentext key="procedure" text="Yönerge"/>
+<l:gentext key="ProductionSet" text="Prodüksiyon"/>
+<l:gentext key="PubDate" text="Yayımlanma Tarihi"/>
+<l:gentext key="pubdate" text="Yayımlanma Tarihi"/>
+<l:gentext key="Published" text="Yayımlanma"/>
+<l:gentext key="published" text="Yayımlanma"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="S ve C"/>
+<l:gentext key="qandadiv" text="S ve C"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Soru:"/>
+<l:gentext key="question" text="Soru:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referans"/>
+<l:gentext key="reference" text="Referans"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Referans Adı"/>
+<l:gentext key="refname" text="Referans Adı"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Özet"/>
+<l:gentext key="refsynopsisdiv" text="Özet"/>
+<l:gentext key="RevHistory" text="Baskı Tarihçesi"/>
+<l:gentext key="revhistory" text="Baskı Tarihçesi"/>
+<l:gentext key="revision" text="Baskı"/>
+<l:gentext key="Revision" text="Baskı"/>
+<l:gentext key="sect1" text="Kısım"/>
+<l:gentext key="sect2" text="Kısım"/>
+<l:gentext key="sect3" text="Kısım"/>
+<l:gentext key="sect4" text="Kısım"/>
+<l:gentext key="sect5" text="Kısım"/>
+<l:gentext key="section" text="Kısım"/>
+<l:gentext key="Section" text="Kısım"/>
+<l:gentext key="see" text="bkz."/>
+<l:gentext key="See" text="Bkz."/>
+<l:gentext key="seealso" text="Bkz."/>
+<l:gentext key="Seealso" text="Bakınız"/>
+<l:gentext key="SeeAlso" text="Bakınız"/>
+<l:gentext key="set" text="Takım"/>
+<l:gentext key="Set" text="Takım"/>
+<l:gentext key="setindex" text="Takım Dizini"/>
+<l:gentext key="SetIndex" text="Takım Dizini"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="kenar çubuğu"/>
+<l:gentext key="step" text="adım"/>
+<l:gentext key="Step" text="Adım"/>
+<l:gentext key="table" text="Tablo"/>
+<l:gentext key="Table" text="Tablo"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Ä°pucu"/>
+<l:gentext key="TIP" text="Ä°PUCU"/>
+<l:gentext key="Tip" text="Ä°pucu"/>
+<l:gentext key="Warning" text="Uyarı"/>
+<l:gentext key="warning" text="Uyarı"/>
+<l:gentext key="WARNING" text="UYARI"/>
+<l:gentext key="and" text="ve"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Yayına hazırlayan"/>
+<l:gentext key="edited" text="yayına hazırlayan"/>
+<l:gentext key="Editedby" text="Yayına hazırlayan"/>
+<l:gentext key="editedby" text="yayına hazırlayan"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Notlar"/>
+<l:gentext key="Notes" text="Notlar"/>
+<l:gentext key="Pgs" text="Sayfa"/>
+<l:gentext key="pgs" text="Sayfa"/>
+<l:gentext key="Revisedby" text="Düzeltmeler: "/>
+<l:gentext key="revisedby" text="Düzeltmeler: "/>
+<l:gentext key="TableNotes" text="Notlar"/>
+<l:gentext key="tablenotes" text="Notlar"/>
+<l:gentext key="TableofContents" text="İçindekiler"/>
+<l:gentext key="tableofcontents" text="İçindekiler"/>
+<l:gentext key="unexpectedelementname" text="Beklenmeyen eleman adı"/>
+<l:gentext key="unsupported" text="desteklenmiyor"/>
+<l:gentext key="xrefto" text=""/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Denklemler"/>
+<l:gentext key="ListofEquations" text="Denklemler"/>
+<l:gentext key="ListofExamples" text="Örnekler"/>
+<l:gentext key="listofexamples" text="Örnekler"/>
+<l:gentext key="ListofFigures" text="Åžekiller"/>
+<l:gentext key="listoffigures" text="Åžekiller"/>
+<l:gentext key="ListofProcedures" text="Yönergeler"/>
+<l:gentext key="listofprocedures" text="Yönergeler"/>
+<l:gentext key="listoftables" text="Tablolar"/>
+<l:gentext key="ListofTables" text="Tablolar"/>
+<l:gentext key="ListofUnknown" text="Bilinmeyenler"/>
+<l:gentext key="listofunknown" text="Bilinmeyenler"/>
+<l:gentext key="nav-home" text="Başlangıç"/>
+<l:gentext key="nav-next" text="Sonraki"/>
+<l:gentext key="nav-next-sibling" text="Sonraki Bölüm"/>
+<l:gentext key="nav-prev" text="Önceki"/>
+<l:gentext key="nav-prev-sibling" text="Önceki Bölüm"/>
+<l:gentext key="nav-up" text="Yukarı"/>
+<l:gentext key="nav-toc" text="İçindekiler"/>
+<l:gentext key="Draft" text="Taslak"/>
+<l:gentext key="above" text="üstünde"/>
+<l:gentext key="below" text="altında"/>
+<l:gentext key="sectioncalled" text=""/>
+<l:gentext key="index symbols" text="Semboller"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcçdefgğhıijklmnoöprsştuüvyz"/>
+<l:gentext key="uppercase.alpha" text="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="3"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Ek %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Denklem %n. %t"/>
+<l:template name="example" text="Örnek %n. %t"/>
+<l:template name="figure" text="Åžekil %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Kısım %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Yönerge %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Prodüksiyon %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tablo %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Ek %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="part" text="Kısım %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Cevap: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Soru: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Soru: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(sayfa %p)"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(shf. %p)"/>
+<l:template name="Page" text="Sayfa %p"/>
+<l:template name="bridgehead" text=" “%tâ€"/>
+<l:template name="refsection" text=" “%tâ€"/>
+<l:template name="refsect1" text=" “%tâ€"/>
+<l:template name="refsect2" text=" “%tâ€"/>
+<l:template name="refsect3" text=" “%tâ€"/>
+<l:template name="sect1" text=" “%tâ€"/>
+<l:template name="sect2" text=" “%tâ€"/>
+<l:template name="sect3" text=" “%tâ€"/>
+<l:template name="sect4" text=" “%tâ€"/>
+<l:template name="sect5" text=" “%tâ€"/>
+<l:template name="section" text=" “%tâ€"/>
+<l:template name="simplesect" text=" “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Cevap: %n"/>
+<l:template name="appendix" text="Ek %n"/>
+<l:template name="bridgehead" text="Kısım %n"/>
+<l:template name="chapter" text="Bölüm %n"/>
+<l:template name="equation" text="Denklem %n"/>
+<l:template name="example" text="Örnek %n"/>
+<l:template name="figure" text="Şekil %n"/>
+<l:template name="part" text="Kısım %n"/>
+<l:template name="procedure" text="Yönerge %n"/>
+<l:template name="productionset" text="Prodüksiyon %n"/>
+<l:template name="qandadiv" text="S ve C %n"/>
+<l:template name="qandaentry" text="Soru: %n"/>
+<l:template name="question" text="Soru: %n"/>
+<l:template name="sect1" text="Kısım %n"/>
+<l:template name="sect2" text="Kısım %n"/>
+<l:template name="sect3" text="Kısım %n"/>
+<l:template name="sect4" text="Kısım %n"/>
+<l:template name="sect5" text="Kısım %n"/>
+<l:template name="section" text="Kısım %n"/>
+<l:template name="table" text="Tablo %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Ek %n, %t"/>
+<l:template name="bridgehead" text="Kısım %n, “%tâ€"/>
+<l:template name="chapter" text="Bölüm %n, %t"/>
+<l:template name="equation" text="Denklem %n, “%tâ€"/>
+<l:template name="example" text="Örnek %n, “%tâ€"/>
+<l:template name="figure" text="Åžekil %n, “%tâ€"/>
+<l:template name="part" text="Kısım %n, “%tâ€"/>
+<l:template name="procedure" text="Yönerge %n, “%tâ€"/>
+<l:template name="productionset" text="Prodüksiyon %n, “%tâ€"/>
+<l:template name="qandadiv" text="S ve C %n, “%tâ€"/>
+<l:template name="refsect1" text=" “%tâ€"/>
+<l:template name="refsect2" text=" “%tâ€"/>
+<l:template name="refsect3" text=" “%tâ€"/>
+<l:template name="refsection" text=" “%tâ€"/>
+<l:template name="sect1" text="Kısım %n, “%tâ€"/>
+<l:template name="sect2" text="Kısım %n, “%tâ€"/>
+<l:template name="sect3" text="Kısım %n, “%tâ€"/>
+<l:template name="sect4" text="Kısım %n, “%tâ€"/>
+<l:template name="sect5" text="Kısım %n, “%tâ€"/>
+<l:template name="section" text="Kısım %n, “%tâ€"/>
+<l:template name="simplesect" text=" “%tâ€"/>
+<l:template name="table" text="Tablo %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ve "/>
+<l:template name="seplast" text=", ve "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Bkz. %t."/>
+<l:template name="seealso" text="Bkz. %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Hedef Okuyucu: "/>
+<l:template name="MsgLevel" text="Düzey: "/>
+<l:template name="MsgOrig" text="Kaynak: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Ocak"/>
+<l:template name="February" text="Åžubat"/>
+<l:template name="March" text="Mart"/>
+<l:template name="April" text="Nisan"/>
+<l:template name="May" text="Mayıs"/>
+<l:template name="June" text="Haziran"/>
+<l:template name="July" text="Temmuz"/>
+<l:template name="August" text="AÄŸustos"/>
+<l:template name="September" text="Eylül"/>
+<l:template name="October" text="Ekim"/>
+<l:template name="November" text="Kasım"/>
+<l:template name="December" text="Aralık"/>
+<l:template name="Monday" text="Pazartesi"/>
+<l:template name="Tuesday" text="Salı"/>
+<l:template name="Wednesday" text="Çarşamba"/>
+<l:template name="Thursday" text="PerÅŸembe"/>
+<l:template name="Friday" text="Cuma"/>
+<l:template name="Saturday" text="Cumartesi"/>
+<l:template name="Sunday" text="Pazar"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Oca"/>
+<l:template name="Feb" text="Åžub"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Nis"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Haz"/>
+<l:template name="Jul" text="Tem"/>
+<l:template name="Aug" text="AÄŸu"/>
+<l:template name="Sep" text="Eyl"/>
+<l:template name="Oct" text="Eki"/>
+<l:template name="Nov" text="Kas"/>
+<l:template name="Dec" text="Ara"/>
+<l:template name="Mon" text="Pzt"/>
+<l:template name="Tue" text="Sal"/>
+<l:template name="Wed" text="Çar"/>
+<l:template name="Thu" text="Per"/>
+<l:template name="Fri" text="Cum"/>
+<l:template name="Sat" text="Cts"/>
+<l:template name="Sun" text="Paz"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041f Turkish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Semboller</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Ç</l:l>
+<l:l i="4">ç</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="6">E</l:l>
+<l:l i="6">e</l:l>
+<l:l i="7">F</l:l>
+<l:l i="7">f</l:l>
+<l:l i="8">G</l:l>
+<l:l i="8">g</l:l>
+<l:l i="9">Äž</l:l>
+<l:l i="9">ÄŸ</l:l>
+<l:l i="10">H</l:l>
+<l:l i="10">h</l:l>
+<l:l i="11">I</l:l>
+<l:l i="11">ı</l:l>
+<l:l i="12">Ä°</l:l>
+<l:l i="12">i</l:l>
+<l:l i="13">J</l:l>
+<l:l i="13">j</l:l>
+<l:l i="14">K</l:l>
+<l:l i="14">k</l:l>
+<l:l i="15">L</l:l>
+<l:l i="15">l</l:l>
+<l:l i="16">M</l:l>
+<l:l i="16">m</l:l>
+<l:l i="17">N</l:l>
+<l:l i="17">n</l:l>
+<l:l i="18">O</l:l>
+<l:l i="18">o</l:l>
+<l:l i="19">Ö</l:l>
+<l:l i="19">ö</l:l>
+<l:l i="20">P</l:l>
+<l:l i="20">p</l:l>
+<l:l i="21">R</l:l>
+<l:l i="21">r</l:l>
+<l:l i="22">S</l:l>
+<l:l i="22">s</l:l>
+<l:l i="23">Åž</l:l>
+<l:l i="23">ÅŸ</l:l>
+<l:l i="24">T</l:l>
+<l:l i="24">t</l:l>
+<l:l i="25">U</l:l>
+<l:l i="25">u</l:l>
+<l:l i="26">Ü</l:l>
+<l:l i="26">ü</l:l>
+<l:l i="27">V</l:l>
+<l:l i="27">v</l:l>
+<l:l i="28">Y</l:l>
+<l:l i="28">y</l:l>
+<l:l i="29">Z</l:l>
+<l:l i="29">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml
new file mode 100644
index 0000000..4caf73f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml
@@ -0,0 +1,726 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="uk" english-language-name="Ukrainian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/uk.xml -->
+<!-- * -->
+<!-- * E-mail the edited uk.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ÐнотаціÑ"/>
+<l:gentext key="abstract" text="анотаціÑ"/>
+<l:gentext key="Acknowledgements" text="ПодÑки"/>
+<l:gentext key="acknowledgements" text="подÑки"/>
+<l:gentext key="Answer" text="Ð’:"/>
+<l:gentext key="answer" text="в:"/>
+<l:gentext key="Appendix" text="Додаток"/>
+<l:gentext key="appendix" text="додаток"/>
+<l:gentext key="Article" text="СтаттÑ"/>
+<l:gentext key="article" text="ÑтаттÑ"/>
+<l:gentext key="Author" text="Ðвтор"/>
+<l:gentext key="Bibliography" text="Література"/>
+<l:gentext key="bibliography" text="література"/>
+<l:gentext key="Book" text="Книга"/>
+<l:gentext key="book" text="книга"/>
+<l:gentext key="CAUTION" text="ЗÐСТЕРЕЖЕÐÐЯ"/>
+<l:gentext key="Caution" text="ЗаÑтереженнÑ"/>
+<l:gentext key="caution" text="заÑтереженнÑ"/>
+<l:gentext key="Chapter" text="Розділ"/>
+<l:gentext key="chapter" text="розділ"/>
+<l:gentext key="Colophon" text="Вихідні відомоÑÑ‚Ñ–"/>
+<l:gentext key="colophon" text="вихідні відомоÑÑ‚Ñ–"/>
+<l:gentext key="Copyright" text="ÐвторÑьке право"/>
+<l:gentext key="copyright" text="авторÑьке право"/>
+<l:gentext key="Dedication" text="ПриÑвÑта"/>
+<l:gentext key="dedication" text="приÑвÑта"/>
+<l:gentext key="Edition" text="ВиданнÑ"/>
+<l:gentext key="edition" text="виданнÑ"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Формула"/>
+<l:gentext key="equation" text="Формула"/>
+<l:gentext key="Example" text="Приклад"/>
+<l:gentext key="example" text="приклад"/>
+<l:gentext key="Figure" text="РиÑунок"/>
+<l:gentext key="figure" text="РиÑунок"/>
+<l:gentext key="Glossary" text="ГлоÑарій"/>
+<l:gentext key="glossary" text="глоÑарій"/>
+<l:gentext key="GlossSee" text="Див."/>
+<l:gentext key="glosssee" text="див."/>
+<l:gentext key="GlossSeeAlso" text="Див. також"/>
+<l:gentext key="glossseealso" text="див. також"/>
+<l:gentext key="IMPORTANT" text="Ð’ÐЖЛИВО"/>
+<l:gentext key="important" text="важливо"/>
+<l:gentext key="Important" text="Важливо"/>
+<l:gentext key="Index" text="Покажчик"/>
+<l:gentext key="index" text="покажчик"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Правова примітка"/>
+<l:gentext key="legalnotice" text="правова примітка"/>
+<l:gentext key="MsgAud" text="ÐудиторіÑ"/>
+<l:gentext key="msgaud" text="аудиторіÑ"/>
+<l:gentext key="MsgLevel" text="Рівень"/>
+<l:gentext key="msglevel" text="рівень"/>
+<l:gentext key="MsgOrig" text="Джерело"/>
+<l:gentext key="msgorig" text="джерело"/>
+<l:gentext key="NOTE" text="ПРИМІТКÐ"/>
+<l:gentext key="Note" text="Примітка"/>
+<l:gentext key="note" text="примітка"/>
+<l:gentext key="Part" text="ЧаÑтина"/>
+<l:gentext key="part" text="чаÑтина"/>
+<l:gentext key="Preface" text="Передмова"/>
+<l:gentext key="preface" text="передмова"/>
+<l:gentext key="Procedure" text="Процедура"/>
+<l:gentext key="procedure" text="Процедура"/>
+<l:gentext key="ProductionSet" text="ПродукціÑ"/>
+<l:gentext key="PubDate" text="Дата публікації"/>
+<l:gentext key="pubdate" text="дата публікації"/>
+<l:gentext key="Published" text="Опубліковано"/>
+<l:gentext key="published" text="опубліковано"/>
+<l:gentext key="Publisher" text="Видавець"/>
+<l:gentext key="Qandadiv" text="П і В"/>
+<l:gentext key="qandadiv" text="П і В"/>
+<l:gentext key="QandASet" text="ЧаÑÑ‚Ñ– питаннÑ"/>
+<l:gentext key="Question" text="П:"/>
+<l:gentext key="question" text="п:"/>
+<l:gentext key="RefEntry" text="Сторінка"/>
+<l:gentext key="refentry" text="Ñторінка"/>
+<l:gentext key="Reference" text="ПоÑиланнÑ"/>
+<l:gentext key="reference" text="поÑиланнÑ"/>
+<l:gentext key="References" text="ПоÑиланнÑ"/>
+<l:gentext key="RefName" text="Ðазва"/>
+<l:gentext key="refname" text="назва"/>
+<l:gentext key="RefSection" text="Розділ"/>
+<l:gentext key="refsection" text="розділ"/>
+<l:gentext key="RefSynopsisDiv" text="Короткий оглÑд"/>
+<l:gentext key="refsynopsisdiv" text="короткий оглÑд"/>
+<l:gentext key="RevHistory" text="ÐžÐ¿Ð¸Ñ Ð·Ð¼Ñ–Ð½"/>
+<l:gentext key="revhistory" text="Ð¾Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½"/>
+<l:gentext key="revision" text="верÑÑ–Ñ"/>
+<l:gentext key="Revision" text="ВерÑÑ–Ñ"/>
+<l:gentext key="sect1" text="Розділ"/>
+<l:gentext key="sect2" text="Розділ"/>
+<l:gentext key="sect3" text="Розділ"/>
+<l:gentext key="sect4" text="Розділ"/>
+<l:gentext key="sect5" text="Розділ"/>
+<l:gentext key="section" text="розділ"/>
+<l:gentext key="Section" text="Розділ"/>
+<l:gentext key="see" text="див."/>
+<l:gentext key="See" text="Див."/>
+<l:gentext key="seealso" text="див. також"/>
+<l:gentext key="Seealso" text="Див. також"/>
+<l:gentext key="SeeAlso" text="Див. також"/>
+<l:gentext key="set" text="вибірка"/>
+<l:gentext key="Set" text="Вибірка"/>
+<l:gentext key="setindex" text="Ñ–Ð½Ð´ÐµÐºÑ Ð²Ð¸Ð±Ñ–Ñ€ÐºÐ¸"/>
+<l:gentext key="SetIndex" text="Ð†Ð½Ð´ÐµÐºÑ Ð²Ð¸Ð±Ñ–Ñ€ÐºÐ¸"/>
+<l:gentext key="Sidebar" text="Боковина"/>
+<l:gentext key="sidebar" text="боковина"/>
+<l:gentext key="step" text="крок"/>
+<l:gentext key="Step" text="Крок"/>
+<l:gentext key="table" text="таблицÑ"/>
+<l:gentext key="Table" text="ТаблицÑ"/>
+<l:gentext key="task" text="завданнÑ"/>
+<l:gentext key="Task" text="ЗавданнÑ"/>
+<l:gentext key="tip" text="підказка"/>
+<l:gentext key="TIP" text="ПІДКÐЗКÐ"/>
+<l:gentext key="Tip" text="Підказка"/>
+<l:gentext key="Warning" text="ЗаÑтереженнÑ"/>
+<l:gentext key="warning" text="заÑтереженнÑ"/>
+<l:gentext key="WARNING" text="ЗÐСТЕРЕЖЕÐÐЯ"/>
+<l:gentext key="and" text=""/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="За редакції"/>
+<l:gentext key="edited" text="за редакції"/>
+<l:gentext key="Editedby" text="За редакції"/>
+<l:gentext key="editedby" text="за редакції"/>
+<l:gentext key="in" text="у"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="примітки"/>
+<l:gentext key="Notes" text="Примітки"/>
+<l:gentext key="Pgs" text="Стор."/>
+<l:gentext key="pgs" text="Ñтор."/>
+<l:gentext key="Revisedby" text="Коректура:"/>
+<l:gentext key="revisedby" text="коректура:"/>
+<l:gentext key="TableNotes" text="Примітки"/>
+<l:gentext key="tablenotes" text="примітки"/>
+<l:gentext key="TableofContents" text="ЗміÑÑ‚"/>
+<l:gentext key="tableofcontents" text="зміÑÑ‚"/>
+<l:gentext key="unexpectedelementname" text="неочікувана назва елемента"/>
+<l:gentext key="unsupported" text="не підтримуєтьÑÑ"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Ðвтори"/>
+<l:gentext key="copyeditor" text="Редактор"/>
+<l:gentext key="graphicdesigner" text="Художнє оформленнÑ"/>
+<l:gentext key="productioneditor" text="Відповідальний за випуÑк"/>
+<l:gentext key="technicaleditor" text="Технічний редактор"/>
+<l:gentext key="translator" text="Перекладач"/>
+<l:gentext key="listofequations" text="ÑпиÑок формул"/>
+<l:gentext key="ListofEquations" text="СпиÑок формул"/>
+<l:gentext key="ListofExamples" text="СпиÑок прикладів"/>
+<l:gentext key="listofexamples" text="ÑпиÑок прикладів"/>
+<l:gentext key="ListofFigures" text="СпиÑок ілюÑтрацій"/>
+<l:gentext key="listoffigures" text="СпиÑок ілюÑтрацій"/>
+<l:gentext key="ListofProcedures" text="СпиÑок алгоритмів"/>
+<l:gentext key="listofprocedures" text="ÑпиÑок алгоритмів"/>
+<l:gentext key="listoftables" text="ÑпиÑок таблиць"/>
+<l:gentext key="ListofTables" text="СпиÑок таблиць"/>
+<l:gentext key="ListofUnknown" text="СпиÑок невідомих"/>
+<l:gentext key="listofunknown" text="ÑпиÑок невідомих"/>
+<l:gentext key="nav-home" text="Початок"/>
+<l:gentext key="nav-next" text="далі"/>
+<l:gentext key="nav-next-sibling" text="далі за рівнем"/>
+<l:gentext key="nav-prev" text="назад"/>
+<l:gentext key="nav-prev-sibling" text="назад за рівнем"/>
+<l:gentext key="nav-up" text="Догори"/>
+<l:gentext key="nav-toc" text="ЗміÑÑ‚"/>
+<l:gentext key="Draft" text="Чернетка"/>
+<l:gentext key="above" text="вище"/>
+<l:gentext key="below" text="нижче"/>
+<l:gentext key="sectioncalled" text="розділ з назвою"/>
+<l:gentext key="index symbols" text="Символи"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="абвгґдеєжзиіїйклмнопрÑтуфхцчшщьюÑ"/>
+<l:gentext key="uppercase.alpha" text="ÐБВГÒДЕЄЖЗИІЇЙКЛМÐОПРСТУФХЦЧШЩЬЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Додаток %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Розділ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Формула %n. %t"/>
+<l:template name="example" text="Приклад %n. %t"/>
+<l:template name="figure" text="РиÑунок %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ЧаÑтина %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Процедура %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ПродукціÑ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Додаток %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Розділ %n. %t"/>
+<l:template name="part" text="ЧаÑтина %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="В: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="П: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="П: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="В: %n"/>
+<l:template name="appendix" text="Додаток %n"/>
+<l:template name="bridgehead" text="Розділ %n"/>
+<l:template name="chapter" text="Розділ %n"/>
+<l:template name="equation" text="Формула %n"/>
+<l:template name="example" text="Приклад %n"/>
+<l:template name="figure" text="РиÑунок %n"/>
+<l:template name="part" text="ЧаÑтина %n"/>
+<l:template name="procedure" text="Процедура %n"/>
+<l:template name="productionset" text="ПродукціÑ %n"/>
+<l:template name="qandadiv" text="П і В %n"/>
+<l:template name="qandaentry" text="П: %n"/>
+<l:template name="question" text="П: %n"/>
+<l:template name="sect1" text="Розділ %n"/>
+<l:template name="sect2" text="Розділ %n"/>
+<l:template name="sect3" text="Розділ %n"/>
+<l:template name="sect4" text="Розділ %n"/>
+<l:template name="sect5" text="Розділ %n"/>
+<l:template name="section" text="Розділ %n"/>
+<l:template name="table" text="ТаблицÑ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Додаток %n, %t"/>
+<l:template name="bridgehead" text="Розділ %n, “%tâ€"/>
+<l:template name="chapter" text="Розділ %n, %t"/>
+<l:template name="equation" text="Формула %n, “%tâ€"/>
+<l:template name="example" text="Приклад %n, “%tâ€"/>
+<l:template name="figure" text="РиÑунок %n, “%tâ€"/>
+<l:template name="part" text="ЧаÑтина %n, “%tâ€"/>
+<l:template name="procedure" text="Процедура %n, “%tâ€"/>
+<l:template name="productionset" text="ПродукціÑ %n, “%tâ€"/>
+<l:template name="qandadiv" text="П Ñ– В %n, “%tâ€"/>
+<l:template name="refsect1" text="розділ з назвою “%tâ€"/>
+<l:template name="refsect2" text="розділ з назвою “%tâ€"/>
+<l:template name="refsect3" text="розділ з назвою “%tâ€"/>
+<l:template name="refsection" text="розділ з назвою “%tâ€"/>
+<l:template name="sect1" text="Розділ %n, “%tâ€"/>
+<l:template name="sect2" text="Розділ %n, “%tâ€"/>
+<l:template name="sect3" text="Розділ %n, “%tâ€"/>
+<l:template name="sect4" text="Розділ %n, “%tâ€"/>
+<l:template name="sect5" text="Розділ %n, “%tâ€"/>
+<l:template name="section" text="Розділ %n, “%tâ€"/>
+<l:template name="simplesect" text="розділ з назвою “%tâ€"/>
+<l:template name="table" text="ТаблицÑ %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" "/>
+<l:template name="seplast" text=", "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Див. %t."/>
+<l:template name="seealso" text="Див. також %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ÐудиторіÑ: "/>
+<l:template name="MsgLevel" text="Рівень: "/>
+<l:template name="MsgOrig" text="Джерело: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[ВизначеннÑ: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ÑічнÑ"/>
+<l:template name="February" text="лютого"/>
+<l:template name="March" text="березнÑ"/>
+<l:template name="April" text="квітнÑ"/>
+<l:template name="May" text="травнÑ"/>
+<l:template name="June" text="червнÑ"/>
+<l:template name="July" text="липнÑ"/>
+<l:template name="August" text="ÑерпнÑ"/>
+<l:template name="September" text="вереÑнÑ"/>
+<l:template name="October" text="жовтнÑ"/>
+<l:template name="November" text="лиÑтопада"/>
+<l:template name="December" text="груднÑ"/>
+<l:template name="Monday" text="понеділок"/>
+<l:template name="Tuesday" text="вівторок"/>
+<l:template name="Wednesday" text="Ñереда"/>
+<l:template name="Thursday" text="четвер"/>
+<l:template name="Friday" text="п’ÑтницÑ"/>
+<l:template name="Saturday" text="Ñубота"/>
+<l:template name="Sunday" text="неділÑ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Січ"/>
+<l:template name="Feb" text="Лют"/>
+<l:template name="Mar" text="Бер"/>
+<l:template name="Apr" text="Кві"/>
+<l:template name="May" text="Тра"/>
+<l:template name="Jun" text="Чер"/>
+<l:template name="Jul" text="Лип"/>
+<l:template name="Aug" text="Сер"/>
+<l:template name="Sep" text="Вер"/>
+<l:template name="Oct" text="Жов"/>
+<l:template name="Nov" text="ЛиÑ"/>
+<l:template name="Dec" text="Гру"/>
+<l:template name="Mon" text="Пн"/>
+<l:template name="Tue" text="Ð’Ñ‚"/>
+<l:template name="Wed" text="Ср"/>
+<l:template name="Thu" text="Чт"/>
+<l:template name="Fri" text="Пт"/>
+<l:template name="Sat" text="Сб"/>
+<l:template name="Sun" text="Ðд"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0422 Ukrainian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0"/>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">Ð</l:l>
+<l:l i="270">а</l:l>
+<l:l i="280">Б</l:l>
+<l:l i="280">б</l:l>
+<l:l i="290">Ð’</l:l>
+<l:l i="290">в</l:l>
+<l:l i="300">Г</l:l>
+<l:l i="300">г</l:l>
+<l:l i="310">Ò</l:l>
+<l:l i="310">Ò‘</l:l>
+<l:l i="320">Д</l:l>
+<l:l i="320">д</l:l>
+<l:l i="330">Е</l:l>
+<l:l i="330">е</l:l>
+<l:l i="340">Є</l:l>
+<l:l i="340">Ñ”</l:l>
+<l:l i="350">Ж</l:l>
+<l:l i="350">ж</l:l>
+<l:l i="360">З</l:l>
+<l:l i="360">з</l:l>
+<l:l i="370">И</l:l>
+<l:l i="370">и</l:l>
+<l:l i="380">І</l:l>
+<l:l i="380">Ñ–</l:l>
+<l:l i="390">Ї</l:l>
+<l:l i="390">Ñ—</l:l>
+<l:l i="400">Й</l:l>
+<l:l i="400">й</l:l>
+<l:l i="410">К</l:l>
+<l:l i="410">к</l:l>
+<l:l i="420">Л</l:l>
+<l:l i="420">л</l:l>
+<l:l i="430">М</l:l>
+<l:l i="430">м</l:l>
+<l:l i="440">Ð</l:l>
+<l:l i="440">н</l:l>
+<l:l i="450">О</l:l>
+<l:l i="450">о</l:l>
+<l:l i="460">П</l:l>
+<l:l i="460">п</l:l>
+<l:l i="470">Р</l:l>
+<l:l i="470">Ñ€</l:l>
+<l:l i="480">С</l:l>
+<l:l i="480">Ñ</l:l>
+<l:l i="490">Т</l:l>
+<l:l i="490">Ñ‚</l:l>
+<l:l i="500">У</l:l>
+<l:l i="500">у</l:l>
+<l:l i="510">Ф</l:l>
+<l:l i="510">Ñ„</l:l>
+<l:l i="520">Ð¥</l:l>
+<l:l i="520">Ñ…</l:l>
+<l:l i="530">Ц</l:l>
+<l:l i="530">ц</l:l>
+<l:l i="540">Ч</l:l>
+<l:l i="540">ч</l:l>
+<l:l i="550">Ш</l:l>
+<l:l i="550">ш</l:l>
+<l:l i="560">Щ</l:l>
+<l:l i="560">щ</l:l>
+<l:l i="570">Ь</l:l>
+<l:l i="570">ь</l:l>
+<l:l i="580">Ю</l:l>
+<l:l i="580">ÑŽ</l:l>
+<l:l i="590">Я</l:l>
+<l:l i="590">Ñ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml
new file mode 100644
index 0000000..d9cbe3c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml
@@ -0,0 +1,259 @@
+<?xml version="1.0"?>
+
+<reference xml:id="utility">
+ <info>
+ <title>Common » Utility Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ miscellaneous utility templates in the DocBook XSL
+ Stylesheets.</para>
+
+ <note>
+
+<para>These templates are defined in a separate file from the set
+ of “common†templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+
+
+<para>The utility templates don’t import or include any DocBook
+ XSL stylesheet parameters, so the utility templates can be used
+ without importing the whole set of parameters.</para>
+
+ </note>
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.log.message">
+<refnamediv>
+<refname>log.message</refname>
+<refpurpose>Logs/emits formatted notes and warnings</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="log.message"&gt;
+&lt;xsl:param name="level"/&gt;
+&lt;xsl:param name="source"/&gt;
+&lt;xsl:param name="context-desc"/&gt;
+&lt;xsl:param name="context-desc-field-length"&gt;12&lt;/xsl:param&gt;
+&lt;xsl:param name="context-desc-padded"&gt;
+ &lt;xsl:if test="not($context-desc = '')"&gt;
+ &lt;xsl:call-template name="pad-string"&gt;
+ &lt;xsl:with-param name="leftRight"&gt;right&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="padVar" select="substring($context-desc, 1, $context-desc-field-length)"/&gt;
+ &lt;xsl:with-param name="length" select="$context-desc-field-length"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:if&gt;
+ &lt;/xsl:param&gt;
+&lt;xsl:param name="message"/&gt;
+&lt;xsl:param name="message-field-length" select="45"/&gt;
+&lt;xsl:param name="message-padded"&gt;
+ &lt;xsl:variable name="spaces-for-blank-level"&gt;
+ &lt;!-- * if the level field is blank, we'll need to pad out --&gt;
+ &lt;!-- * the message field with spaces to compensate --&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$level = ''"&gt;
+ &lt;xsl:value-of select="4 + 2"/&gt;
+ &lt;!-- * 4 = hard-coded length of comment text ("Note" or "Warn") --&gt;
+ &lt;!-- * + 2 = length of colon-plus-space separator ": " --&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="0"/&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="spaces-for-blank-context-desc"&gt;
+ &lt;!-- * if the context-description field is blank, we'll need --&gt;
+ &lt;!-- * to pad out the message field with spaces to compensate --&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$context-desc = ''"&gt;
+ &lt;xsl:value-of select="$context-desc-field-length + 2"/&gt;
+ &lt;!-- * + 2 = length of colon-plus-space separator ": " --&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="0"/&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="extra-spaces" select="$spaces-for-blank-level + $spaces-for-blank-context-desc"/&gt;
+ &lt;xsl:call-template name="pad-string"&gt;
+ &lt;xsl:with-param name="leftRight"&gt;right&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="padVar" select="substring($message, 1, ($message-field-length + $extra-spaces))"/&gt;
+ &lt;xsl:with-param name="length" select="$message-field-length + $extra-spaces"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <function>log.message</function> template is a utility
+ template for logging/emitting formatted messages – that is,
+ notes and warnings, along with a given log “level†and an
+ identifier for the “source†that the message relates to.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>level</term>
+ <listitem>
+
+<para>Text to log/emit in the message-level field to
+ indicate the message level
+ (<literal>Note</literal> or
+ <literal>Warning</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>source</term>
+ <listitem>
+
+<para>Text to log/emit in the source field to identify the
+ “source†to which the notification/warning relates.
+ This can be any arbitrary string, but because the
+ message lacks line and column numbers to identify the
+ exact part of the source document to which it
+ relates, the intention is that the value you pass
+ into the <literal>source</literal> parameter should
+ give the user some way to identify the portion of
+ their source document on which to take potentially
+ take action in response to the log message (for
+ example, to edit, change, or add content).</para>
+
+
+<para>So the <literal>source</literal> value should be,
+ for example, an ID, book/chapter/article title, title
+ of some formal object, or even a string giving an
+ XPath expression.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc</term>
+ <listitem>
+
+<para>Text to log/emit in the context-description field to
+ describe the context for the message.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc-field-length</term>
+ <listitem>
+
+<para>Specifies length of the context-description field
+ (in characters); default is 12</para>
+
+
+<para>If the text specified by the
+ <literal>context-desc</literal> parameter is longer
+ than the number of characters specified in
+ <literal>context-desc-field-length</literal>, it is
+ truncated to <literal>context-desc-field-length</literal>
+ (12 characters by default).</para>
+
+
+<para>If the specified text is shorter than
+ <literal>context-desc-field-length</literal>,
+ it is right-padded out to
+ <literal>context-desc-field-length</literal> (12 by
+ default).</para>
+
+
+<para>If no value has been specified for the
+ <literal>context-desc</literal> parameter, the field is
+ left empty and the text of the log message begins with
+ the value of the <literal>message</literal>
+ parameter.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message</term>
+ <listitem>
+
+<para>Text to log/emit in the actual message field</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message-field-length</term>
+ <listitem>
+
+<para>Specifies length of the message
+ field (in characters); default is 45</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Outputs a message (generally, to standard error).</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.doc.title">
+<refnamediv>
+<refname>get.doc.title</refname>
+<refpurpose>Gets a title from the current document</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.doc.title"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <function>get.doc.title</function> template is a
+ utility template for returning the first title found in the
+ current document.</para>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a string containing some identifying title for the
+ current document .</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.pad-string">
+<refnamediv>
+<refname>pad-string</refname>
+<refpurpose>Right-pads or left-pads a string out to a certain length</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="pad-string"&gt;
+&lt;xsl:param name="padChar" select="' '"/&gt;
+&lt;xsl:param name="leftRight"&gt;left&lt;/xsl:param&gt;
+&lt;xsl:param name="padVar"/&gt;
+&lt;xsl:param name="length"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This function takes string <parameter>padVar</parameter> and
+ pads it out in the direction <parameter>rightLeft</parameter> to
+ the string-length <parameter>length</parameter>, using string
+ <parameter>padChar</parameter> (a space character by default) as
+ the padding string (note that <parameter>padChar</parameter> can
+ be a string; it is not limited to just being a single
+ character).</para>
+
+ <note>
+
+<para>This function began as a copy of Nate Austin's
+ <function>prepend-pad</function> function in the <link xlink:href="http://www.dpawson.co.uk/xsl/sect2/padding.html">Padding
+ Content</link> section of Dave Pawson's <link xlink:href="http://www.dpawson.co.uk/xsl/index.html">XSLT
+ FAQ</link>.</para>
+
+ </note>
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a (padded) string.</para>
+</refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl
new file mode 100644
index 0000000..37092b7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl
@@ -0,0 +1,290 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+<doc:reference xmlns="" xml:id="utility">
+ <info>
+ <title>Common » Utility Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the
+ miscellaneous utility templates in the DocBook XSL
+ Stylesheets.</para>
+ <note>
+ <para>These templates are defined in a separate file from the set
+ of “common†templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+ <para>The utility templates don’t import or include any DocBook
+ XSL stylesheet parameters, so the utility templates can be used
+ without importing the whole set of parameters.</para>
+ </note>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ====================================================================== -->
+
+<doc:template name="log.message" xmlns="">
+ <refpurpose>Logs/emits formatted notes and warnings</refpurpose>
+
+ <refdescription id="log.message-desc">
+ <para>The <function>log.message</function> template is a utility
+ template for logging/emitting formatted messages&#xa0;– that is,
+ notes and warnings, along with a given log “level†and an
+ identifier for the “source†that the message relates to.</para>
+ </refdescription>
+
+ <refparameter id="log.message-params">
+ <variablelist>
+ <varlistentry><term>level</term>
+ <listitem>
+ <para>Text to log/emit in the message-level field to
+ indicate the message level
+ (<literal>Note</literal> or
+ <literal>Warning</literal>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>source</term>
+ <listitem>
+ <para>Text to log/emit in the source field to identify the
+ “source†to which the notification/warning relates.
+ This can be any arbitrary string, but because the
+ message lacks line and column numbers to identify the
+ exact part of the source document to which it
+ relates, the intention is that the value you pass
+ into the <literal>source</literal> parameter should
+ give the user some way to identify the portion of
+ their source document on which to take potentially
+ take action in response to the log message (for
+ example, to edit, change, or add content).</para>
+ <para>So the <literal>source</literal> value should be,
+ for example, an ID, book/chapter/article title, title
+ of some formal object, or even a string giving an
+ XPath expression.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc</term>
+ <listitem>
+ <para>Text to log/emit in the context-description field to
+ describe the context for the message.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc-field-length</term>
+ <listitem>
+ <para>Specifies length of the context-description field
+ (in characters); default is 12</para>
+ <para>If the text specified by the
+ <literal>context-desc</literal> parameter is longer
+ than the number of characters specified in
+ <literal>context-desc-field-length</literal>, it is
+ truncated to <literal>context-desc-field-length</literal>
+ (12 characters by default).</para>
+ <para>If the specified text is shorter than
+ <literal>context-desc-field-length</literal>,
+ it is right-padded out to
+ <literal>context-desc-field-length</literal> (12 by
+ default).</para>
+ <para>If no value has been specified for the
+ <literal>context-desc</literal> parameter, the field is
+ left empty and the text of the log message begins with
+ the value of the <literal>message</literal>
+ parameter.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message</term>
+ <listitem>
+ <para>Text to log/emit in the actual message field</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message-field-length</term>
+ <listitem>
+ <para>Specifies length of the message
+ field (in characters); default is 45</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="log.message-returns">
+ <para>Outputs a message (generally, to standard error).</para></refreturn>
+</doc:template>
+<xsl:template name="log.message">
+ <xsl:param name="level"/>
+ <xsl:param name="source"/>
+ <xsl:param name="context-desc"/>
+ <xsl:param name="context-desc-field-length">12</xsl:param>
+ <xsl:param name="context-desc-padded">
+ <xsl:if test="not($context-desc = '')">
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="leftRight">right</xsl:with-param>
+ <xsl:with-param name="padVar"
+ select="substring($context-desc, 1, $context-desc-field-length)"/>
+ <xsl:with-param name="length" select="$context-desc-field-length"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="message"/>
+ <xsl:param name="message-field-length" select="45"/>
+ <xsl:param name="message-padded">
+ <xsl:variable name="spaces-for-blank-level">
+ <!-- * if the level field is blank, we'll need to pad out -->
+ <!-- * the message field with spaces to compensate -->
+ <xsl:choose>
+ <xsl:when test="$level = ''">
+ <xsl:value-of select="4 + 2"/>
+ <!-- * 4 = hard-coded length of comment text ("Note" or "Warn") -->
+ <!-- * + 2 = length of colon-plus-space separator ": " -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="spaces-for-blank-context-desc">
+ <!-- * if the context-description field is blank, we'll need -->
+ <!-- * to pad out the message field with spaces to compensate -->
+ <xsl:choose>
+ <xsl:when test="$context-desc = ''">
+ <xsl:value-of select="$context-desc-field-length + 2"/>
+ <!-- * + 2 = length of colon-plus-space separator ": " -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="extra-spaces"
+ select="$spaces-for-blank-level + $spaces-for-blank-context-desc"/>
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="leftRight">right</xsl:with-param>
+ <xsl:with-param name="padVar"
+ select="substring($message, 1, ($message-field-length + $extra-spaces))"/>
+ <xsl:with-param name="length"
+ select="$message-field-length + $extra-spaces"/>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- * emit the actual log message -->
+ <xsl:message>
+ <xsl:if test="not($level = '')">
+ <xsl:value-of select="$level"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:if test="not($context-desc = '')">
+ <xsl:value-of select="$context-desc-padded"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$message-padded"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$source"/>
+ </xsl:message>
+</xsl:template>
+
+<!-- ===================================== -->
+<doc:template name="get.doc.title" xmlns="">
+ <refpurpose>Gets a title from the current document</refpurpose>
+ <refdescription id="get.doc.title-desc">
+ <para>The <function>get.doc.title</function> template is a
+ utility template for returning the first title found in the
+ current document.</para>
+ </refdescription>
+ <refreturn id="get.doc.title-returns">
+ <para>Returns a string containing some identifying title for the
+ current document .</para></refreturn>
+</doc:template>
+<xsl:template name="get.doc.title">
+ <xsl:choose>
+ <xsl:when test="//*[local-name() = 'title'
+ or local-name() = 'refname']">
+ <xsl:value-of select="//*[local-name() = 'title'
+ or local-name() = 'refname'][1]"/>
+ </xsl:when>
+ <xsl:when test="substring(local-name(*[1]),
+ string-length(local-name(*[1])-3) = 'info')
+ and *[1]/*[local-name() = 'title']">
+ <xsl:value-of select="*[1]/*[local-name() = 'title'][1]"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+<doc:template name="pad-string" xmlns="">
+ <refpurpose>Right-pads or left-pads a string out to a certain length</refpurpose>
+ <refdescription id="pad-string-desc">
+ <para>This function takes string <parameter>padVar</parameter> and
+ pads it out in the direction <parameter>rightLeft</parameter> to
+ the string-length <parameter>length</parameter>, using string
+ <parameter>padChar</parameter> (a space character by default) as
+ the padding string (note that <parameter>padChar</parameter> can
+ be a string; it is not limited to just being a single
+ character).</para>
+ <note>
+ <para>This function began as a copy of Nate Austin's
+ <function>prepend-pad</function> function in the <link
+ xlink:href="http://www.dpawson.co.uk/xsl/sect2/padding.html" >Padding
+ Content</link> section of Dave Pawson's <link
+ xlink:href="http://www.dpawson.co.uk/xsl/index.html" >XSLT
+ FAQ</link>.</para>
+ </note>
+ </refdescription>
+ <refreturn id="pad-string-returns">
+ <para>Returns a (padded) string.</para></refreturn>
+</doc:template>
+<xsl:template name="pad-string">
+ <!-- * recursive template to right/left pad the value with -->
+ <!-- * whatever padChar is passed in -->
+ <xsl:param name="padChar" select="' '"/>
+ <xsl:param name="leftRight">left</xsl:param>
+ <xsl:param name="padVar"/>
+ <xsl:param name="length"/>
+ <xsl:choose>
+ <xsl:when test="string-length($padVar) &lt; $length">
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="padChar" select="$padChar"/>
+ <xsl:with-param name="leftRight" select="$leftRight"/>
+ <xsl:with-param name="padVar">
+ <xsl:choose>
+ <!-- * determine whether string should be -->
+ <!-- * right- or left-padded -->
+ <xsl:when test="$leftRight = 'left'">
+ <!-- * pad it to left -->
+ <xsl:value-of select="concat($padChar,$padVar)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, right-pad the string -->
+ <xsl:value-of select="concat($padVar,$padChar)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of
+ select="substring($padVar,string-length($padVar) - $length + 1)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml
new file mode 100644
index 0000000..682c467
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="vi" english-language-name="Vietnamese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/vi.xml -->
+<!-- * -->
+<!-- * E-mail the edited vi.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Tổng quan"/>
+<l:gentext key="abstract" text="Tổng quan"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="Ä:"/>
+<l:gentext key="answer" text="Ä:"/>
+<l:gentext key="Appendix" text="Phụ lục"/>
+<l:gentext key="appendix" text="phụ lục"/>
+<l:gentext key="Article" text="Bài viết"/>
+<l:gentext key="article" text="Bài viết"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Thư mục"/>
+<l:gentext key="bibliography" text="Thư mục"/>
+<l:gentext key="Book" text="Sách"/>
+<l:gentext key="book" text="Sách"/>
+<l:gentext key="CAUTION" text="CẨN THẬN"/>
+<l:gentext key="Caution" text="Cẩn thận"/>
+<l:gentext key="caution" text="Cẩn thận"/>
+<l:gentext key="Chapter" text="ChÆ°Æ¡ng"/>
+<l:gentext key="chapter" text="chÆ°Æ¡ng"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Bản quyá»n"/>
+<l:gentext key="copyright" text="Bản quyá»n"/>
+<l:gentext key="Dedication" text="Tặng"/>
+<l:gentext key="dedication" text="Tặng"/>
+<l:gentext key="Edition" text="Edition"/>
+<l:gentext key="edition" text="Edition"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Phương trình"/>
+<l:gentext key="equation" text="Phương trình"/>
+<l:gentext key="Example" text="Ví dụ"/>
+<l:gentext key="example" text="Ví dụ"/>
+<l:gentext key="Figure" text="Hình"/>
+<l:gentext key="figure" text="Hình"/>
+<l:gentext key="Glossary" text="Thuật ngữ"/>
+<l:gentext key="glossary" text="Thuật ngữ"/>
+<l:gentext key="GlossSee" text="Xem"/>
+<l:gentext key="glosssee" text="Xem"/>
+<l:gentext key="GlossSeeAlso" text="Xem thêm"/>
+<l:gentext key="glossseealso" text="Xem thêm"/>
+<l:gentext key="IMPORTANT" text="QUAN TRỌNG"/>
+<l:gentext key="important" text="Quan trá»ng"/>
+<l:gentext key="Important" text="Quan trá»ng"/>
+<l:gentext key="Index" text="Chỉ mục"/>
+<l:gentext key="index" text="Chỉ mục"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legal Notice"/>
+<l:gentext key="legalnotice" text="Legal Notice"/>
+<l:gentext key="MsgAud" text="Äá»c giả"/>
+<l:gentext key="msgaud" text="Äá»c giả"/>
+<l:gentext key="MsgLevel" text="Cấp"/>
+<l:gentext key="msglevel" text="Cấp"/>
+<l:gentext key="MsgOrig" text="Gốc"/>
+<l:gentext key="msgorig" text="Gốc"/>
+<l:gentext key="NOTE" text="GHI CHÚ"/>
+<l:gentext key="Note" text="Ghi chú"/>
+<l:gentext key="note" text="Ghi chú"/>
+<l:gentext key="Part" text="Phần"/>
+<l:gentext key="part" text="Phần"/>
+<l:gentext key="Preface" text="Mở đầu"/>
+<l:gentext key="preface" text="Mở đầu"/>
+<l:gentext key="Procedure" text="Thủ tục"/>
+<l:gentext key="procedure" text="Thủ tục"/>
+<l:gentext key="ProductionSet" text="Sản phẩm"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Xuất bản"/>
+<l:gentext key="published" text="Xuất bản"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="H và Ä"/>
+<l:gentext key="qandadiv" text="H và Ä"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="H:"/>
+<l:gentext key="question" text="H:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Tham khảo"/>
+<l:gentext key="reference" text="Tham khảo"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Tên"/>
+<l:gentext key="refname" text="Tên"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Tóm tắt"/>
+<l:gentext key="refsynopsisdiv" text="Tóm tắt"/>
+<l:gentext key="RevHistory" text="Revision History"/>
+<l:gentext key="revhistory" text="Revision History"/>
+<l:gentext key="revision" text="Bản hiệu chỉnh"/>
+<l:gentext key="Revision" text="Bản hiệu chỉnh"/>
+<l:gentext key="sect1" text="Phần"/>
+<l:gentext key="sect2" text="Phần"/>
+<l:gentext key="sect3" text="Phần"/>
+<l:gentext key="sect4" text="Phần"/>
+<l:gentext key="sect5" text="Phần"/>
+<l:gentext key="section" text="Phần"/>
+<l:gentext key="Section" text="Phần"/>
+<l:gentext key="see" text="xem"/>
+<l:gentext key="See" text="See" lang="en"/>
+<l:gentext key="seealso" text="xem thêm"/>
+<l:gentext key="Seealso" text="See also" lang="en"/>
+<l:gentext key="SeeAlso" text="See Also" lang="en"/>
+<l:gentext key="set" text="Äặt"/>
+<l:gentext key="Set" text="Äặt"/>
+<l:gentext key="setindex" text="Äặt chỉ mục"/>
+<l:gentext key="SetIndex" text="Äặt chỉ mục"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="thanh bên"/>
+<l:gentext key="step" text="bÆ°á»›c"/>
+<l:gentext key="Step" text="BÆ°á»›c"/>
+<l:gentext key="table" text="Bảng"/>
+<l:gentext key="Table" text="Bảng"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Mẹo"/>
+<l:gentext key="TIP" text="MẸO"/>
+<l:gentext key="Tip" text="Mẹo"/>
+<l:gentext key="Warning" text="Cảnh báo"/>
+<l:gentext key="warning" text="Cảnh báo"/>
+<l:gentext key="WARNING" text="CẢNH BÃO"/>
+<l:gentext key="and" text="và"/>
+<l:gentext key="by" text="bởi"/>
+<l:gentext key="Edited" text="Äược biên soạn"/>
+<l:gentext key="edited" text="Äược biên soạn"/>
+<l:gentext key="Editedby" text="Äược biên soạn bởi"/>
+<l:gentext key="editedby" text="Äược biên soạn bởi"/>
+<l:gentext key="in" text="trong"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="Ghi chú"/>
+<l:gentext key="Notes" text="Ghi chú"/>
+<l:gentext key="Pgs" text="Pgs."/>
+<l:gentext key="pgs" text="Pgs."/>
+<l:gentext key="Revisedby" text="Hiệu chỉnh bởi: "/>
+<l:gentext key="revisedby" text="Hiệu chỉnh bởi: "/>
+<l:gentext key="TableNotes" text="Ghi chú"/>
+<l:gentext key="tablenotes" text="Ghi chú"/>
+<l:gentext key="TableofContents" text="Mục lục"/>
+<l:gentext key="tableofcontents" text="Mục lục"/>
+<l:gentext key="unexpectedelementname" text="Tên phần tử không đúng"/>
+<l:gentext key="unsupported" text="không hỗ trợ"/>
+<l:gentext key="xrefto" text="xref tá»›i"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Danh sách Phương trình"/>
+<l:gentext key="ListofEquations" text="Danh sách Phương trình"/>
+<l:gentext key="ListofExamples" text="Danh sách Ví dụ"/>
+<l:gentext key="listofexamples" text="Danh sách Ví dụ"/>
+<l:gentext key="ListofFigures" text="Danh sách Hình"/>
+<l:gentext key="listoffigures" text="Danh sách Hình"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Danh sách Bảng"/>
+<l:gentext key="ListofTables" text="Danh sách Bảng"/>
+<l:gentext key="ListofUnknown" text="Danh sách Lạ"/>
+<l:gentext key="listofunknown" text="Danh sách Lạ"/>
+<l:gentext key="nav-home" text="Äầu"/>
+<l:gentext key="nav-next" text="Kế tiếp"/>
+<l:gentext key="nav-next-sibling" text="Tá»›i nhanh"/>
+<l:gentext key="nav-prev" text="Trước đó"/>
+<l:gentext key="nav-prev-sibling" text="Lùi nhanh"/>
+<l:gentext key="nav-up" text="Lên"/>
+<l:gentext key="nav-toc" text="Mục lục"/>
+<l:gentext key="Draft" text="Bản thảo"/>
+<l:gentext key="above" text="trên"/>
+<l:gentext key="below" text="dÆ°á»›i"/>
+<l:gentext key="sectioncalled" text="phần"/>
+<l:gentext key="index symbols" text="Ký hiệu"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="last-first"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Phụ lục %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Chương %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Phương trình %n. %t"/>
+<l:template name="example" text="Ví dụ %n. %t"/>
+<l:template name="figure" text="Hình %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Phần %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Thủ tục %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Sản phẩm %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Bảng %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Phụ lục %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Chương %n. %t"/>
+<l:template name="part" text="Phần %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="Ä: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="H: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="H: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="phần “%tâ€"/>
+<l:template name="refsection" text="phần “%tâ€"/>
+<l:template name="refsect1" text="phần “%tâ€"/>
+<l:template name="refsect2" text="phần “%tâ€"/>
+<l:template name="refsect3" text="phần “%tâ€"/>
+<l:template name="sect1" text="phần “%tâ€"/>
+<l:template name="sect2" text="phần “%tâ€"/>
+<l:template name="sect3" text="phần “%tâ€"/>
+<l:template name="sect4" text="phần “%tâ€"/>
+<l:template name="sect5" text="phần “%tâ€"/>
+<l:template name="section" text="phần “%tâ€"/>
+<l:template name="simplesect" text="phần “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Ä: %n"/>
+<l:template name="appendix" text="Phụ lục %n"/>
+<l:template name="bridgehead" text="Phần %n"/>
+<l:template name="chapter" text="Chương %n"/>
+<l:template name="equation" text="Phương trình %n"/>
+<l:template name="example" text="Ví dụ %n"/>
+<l:template name="figure" text="Hình %n"/>
+<l:template name="part" text="Phần %n"/>
+<l:template name="procedure" text="Thủ tục %n"/>
+<l:template name="productionset" text="Sản phẩm %n"/>
+<l:template name="qandadiv" text="H và Ä %n"/>
+<l:template name="qandaentry" text="H: %n"/>
+<l:template name="question" text="H: %n"/>
+<l:template name="sect1" text="Phần %n"/>
+<l:template name="sect2" text="Phần %n"/>
+<l:template name="sect3" text="Phần %n"/>
+<l:template name="sect4" text="Phần %n"/>
+<l:template name="sect5" text="Phần %n"/>
+<l:template name="section" text="Phần %n"/>
+<l:template name="table" text="Bảng %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Phụ lục %n, %t"/>
+<l:template name="bridgehead" text="Phần %n, “%tâ€"/>
+<l:template name="chapter" text="Chương %n, %t"/>
+<l:template name="equation" text="PhÆ°Æ¡ng trình %n, “%tâ€"/>
+<l:template name="example" text="Ví dụ %n, “%tâ€"/>
+<l:template name="figure" text="Hình %n, “%tâ€"/>
+<l:template name="part" text="Phần %n, “%tâ€"/>
+<l:template name="procedure" text="Thủ tục %n, “%tâ€"/>
+<l:template name="productionset" text="Sản phẩm %n, “%tâ€"/>
+<l:template name="qandadiv" text="H và Ä %n, “%tâ€"/>
+<l:template name="refsect1" text="phần “%tâ€"/>
+<l:template name="refsect2" text="phần “%tâ€"/>
+<l:template name="refsect3" text="phần “%tâ€"/>
+<l:template name="refsection" text="phần “%tâ€"/>
+<l:template name="sect1" text="Phần %n, “%tâ€"/>
+<l:template name="sect2" text="Phần %n, “%tâ€"/>
+<l:template name="sect3" text="Phần %n, “%tâ€"/>
+<l:template name="sect4" text="Phần %n, “%tâ€"/>
+<l:template name="sect5" text="Phần %n, “%tâ€"/>
+<l:template name="section" text="Phần %n, “%tâ€"/>
+<l:template name="simplesect" text="phần “%tâ€"/>
+<l:template name="table" text="Bảng %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" và "/>
+<l:template name="seplast" text=", và "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Xem %t."/>
+<l:template name="seealso" text="Xem thêm %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Äá»c giả: "/>
+<l:template name="MsgLevel" text="Cấp: "/>
+<l:template name="MsgOrig" text="Gốc: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x042a Vietnamese"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml
new file mode 100644
index 0000000..db22550
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml
@@ -0,0 +1,1229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="xh" english-language-name="Xhosa">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/xh.xml -->
+<!-- * -->
+<!-- * E-mail the edited xh.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Isiqalo"/>
+<l:gentext key="abstract" text="Isiqalo"/>
+<l:gentext key="Acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="acknowledgements" text="Acknowledgements" lang="en"/>
+<l:gentext key="Answer" text="I:"/>
+<l:gentext key="answer" text="I:"/>
+<l:gentext key="Appendix" text="Isivalo"/>
+<l:gentext key="appendix" text="isivalo"/>
+<l:gentext key="Article" text="Umba"/>
+<l:gentext key="article" text="Umba"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Ezobunzululwazi"/>
+<l:gentext key="bibliography" text="Ezobunzululwazi"/>
+<l:gentext key="Book" text="Incwadi"/>
+<l:gentext key="book" text="Incwadi"/>
+<l:gentext key="CAUTION" text="ISILUMKISO"/>
+<l:gentext key="Caution" text="Isilumkiso"/>
+<l:gentext key="caution" text="Isilumkiso"/>
+<l:gentext key="Chapter" text="Isiqendu"/>
+<l:gentext key="chapter" text="isiqendu"/>
+<l:gentext key="Colophon" text="Ikolophon"/>
+<l:gentext key="colophon" text="Ikolophon"/>
+<l:gentext key="Copyright" text="Ushicilelo olusemthethweni"/>
+<l:gentext key="copyright" text="Ushicilelo olusemthethweni"/>
+<l:gentext key="Dedication" text="Ulwaziso"/>
+<l:gentext key="dedication" text="Ulwaziso"/>
+<l:gentext key="Edition" text="Uhlelo"/>
+<l:gentext key="edition" text="Uhlelo"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ulinganiselo"/>
+<l:gentext key="equation" text="Ulinganiselo"/>
+<l:gentext key="Example" text="Umzekelo"/>
+<l:gentext key="example" text="Umzekelo"/>
+<l:gentext key="Figure" text="Ulungu"/>
+<l:gentext key="figure" text="Ulungu"/>
+<l:gentext key="Glossary" text="Inkcazelo yamagama"/>
+<l:gentext key="glossary" text="Inkcazelo yamagama"/>
+<l:gentext key="GlossSee" text="Bona"/>
+<l:gentext key="glosssee" text="Bona"/>
+<l:gentext key="GlossSeeAlso" text="Bona Kwakhona"/>
+<l:gentext key="glossseealso" text="Bona Kwakhona"/>
+<l:gentext key="IMPORTANT" text="IBALULEKILE"/>
+<l:gentext key="important" text="Ibalulekile"/>
+<l:gentext key="Important" text="Ibalulekile"/>
+<l:gentext key="Index" text="Isalathiso"/>
+<l:gentext key="index" text="Isalathiso"/>
+<l:gentext key="ISBN" text="iISBN"/>
+<l:gentext key="isbn" text="iISBN"/>
+<l:gentext key="LegalNotice" text="Isaziso Esesimthethweni"/>
+<l:gentext key="legalnotice" text="Isaziso Esesimthethweni"/>
+<l:gentext key="MsgAud" text="Ababhali"/>
+<l:gentext key="msgaud" text="Ababhali"/>
+<l:gentext key="MsgLevel" text="Umphakamo"/>
+<l:gentext key="msglevel" text="Umphakamo"/>
+<l:gentext key="MsgOrig" text="Uqobo"/>
+<l:gentext key="msgorig" text="Uqobo"/>
+<l:gentext key="NOTE" text="QAPHELA"/>
+<l:gentext key="Note" text="Qaphela"/>
+<l:gentext key="note" text="Qaphela"/>
+<l:gentext key="Part" text="Inxenye"/>
+<l:gentext key="part" text="Inxenye"/>
+<l:gentext key="Preface" text="Isihloko"/>
+<l:gentext key="preface" text="Isihloko"/>
+<l:gentext key="Procedure" text="Inkqubo"/>
+<l:gentext key="procedure" text="Inkqubo"/>
+<l:gentext key="ProductionSet" text="Imveliso"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Ipapashwe"/>
+<l:gentext key="published" text="Ipapashwe"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="U no I"/>
+<l:gentext key="qandadiv" text="U no I"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="U:"/>
+<l:gentext key="question" text="U:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Uthelekiso"/>
+<l:gentext key="reference" text="Uthelekiso"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Igama lothelekiso"/>
+<l:gentext key="refname" text="Igama lothelekiso"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Isinopsisi"/>
+<l:gentext key="refsynopsisdiv" text="Isinopsisi"/>
+<l:gentext key="RevHistory" text="Imbali yophindo"/>
+<l:gentext key="revhistory" text="Imbali yophindo"/>
+<l:gentext key="revision" text="Iphindo"/>
+<l:gentext key="Revision" text="Iphindo"/>
+<l:gentext key="sect1" text="Icandelo"/>
+<l:gentext key="sect2" text="Icandelo"/>
+<l:gentext key="sect3" text="Icandelo"/>
+<l:gentext key="sect4" text="Icandelo"/>
+<l:gentext key="sect5" text="Icandelo"/>
+<l:gentext key="section" text="Icandelo"/>
+<l:gentext key="Section" text="Icandelo"/>
+<l:gentext key="see" text="Bona"/>
+<l:gentext key="See" text="Bona"/>
+<l:gentext key="seealso" text="Bona Kwakhona"/>
+<l:gentext key="Seealso" text="Bona Kwakhona"/>
+<l:gentext key="SeeAlso" text="Bona Kwakhona"/>
+<l:gentext key="set" text="Cwangcisa"/>
+<l:gentext key="Set" text="Cwangcisa"/>
+<l:gentext key="setindex" text="Cwangcisa Isalathiso"/>
+<l:gentext key="SetIndex" text="Cwangcisa Isalathiso"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="ibar esecaleni"/>
+<l:gentext key="step" text="inqwanqwa"/>
+<l:gentext key="Step" text="Inqwanqwa"/>
+<l:gentext key="table" text="Indlela Yokwenza Imigca"/>
+<l:gentext key="Table" text="Indlela Yokwenza Imigca"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Incam"/>
+<l:gentext key="TIP" text="INCAM"/>
+<l:gentext key="Tip" text="Incam"/>
+<l:gentext key="Warning" text="Isilumkiso"/>
+<l:gentext key="warning" text="Isilumkiso"/>
+<l:gentext key="WARNING" text="ISILUMKISO"/>
+<l:gentext key="and" text="no"/>
+<l:gentext key="by" text="by"/>
+<l:gentext key="Edited" text="Ihleliwe"/>
+<l:gentext key="edited" text="Ihleliwe"/>
+<l:gentext key="Editedby" text="Ihlelwe"/>
+<l:gentext key="editedby" text="Ihlelwe"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=", "/>
+<l:gentext key="listcomma" text=", "/>
+<l:gentext key="notes" text="Iziqaphelo"/>
+<l:gentext key="Notes" text="Iziqaphelo"/>
+<l:gentext key="Pgs" text="Amaphepha"/>
+<l:gentext key="pgs" text="Amaphepha"/>
+<l:gentext key="Revisedby" text="Iphindwe ngu: "/>
+<l:gentext key="revisedby" text="Iphindwe ngu:"/>
+<l:gentext key="TableNotes" text="Iziqaphelo"/>
+<l:gentext key="tablenotes" text="Iziqaphelo"/>
+<l:gentext key="TableofContents" text="Imigca Yemixholo"/>
+<l:gentext key="tableofcontents" text="Imigca Yemixholo"/>
+<l:gentext key="unexpectedelementname" text="Igama lesiqalelo esingalindelwanga"/>
+<l:gentext key="unsupported" text="ayixhaswanga"/>
+<l:gentext key="xrefto" text="thelekiso ku"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Uluhlu Lemilinganiselo"/>
+<l:gentext key="ListofEquations" text="Uluhlu Lemilinganiselo"/>
+<l:gentext key="ListofExamples" text="Uluhlu Lemizekelo"/>
+<l:gentext key="listofexamples" text="Uluhlu Lemizekelo"/>
+<l:gentext key="ListofFigures" text="Uluhlu Lamalungu"/>
+<l:gentext key="listoffigures" text="Uluhlu Lamalungu"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Uluhlu Lendlela Yokwenza Imigca"/>
+<l:gentext key="ListofTables" text="Uluhlu Lendlela Yokwenza Imigca"/>
+<l:gentext key="ListofUnknown" text="Uluhlu Lokungaziwayo"/>
+<l:gentext key="listofunknown" text="Uluhlu Lokungaziwayo"/>
+<l:gentext key="nav-home" text="Ikhaya"/>
+<l:gentext key="nav-next" text="Elandelayo"/>
+<l:gentext key="nav-next-sibling" text="Yisa Phambili"/>
+<l:gentext key="nav-prev" text="Edlulileyo"/>
+<l:gentext key="nav-prev-sibling" text="Yisa Emva"/>
+<l:gentext key="nav-up" text="Phezulu"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="icandelo libizwa ngokuba"/>
+<l:gentext key="index symbols" text="Iimpawu"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Isivalo %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Isiqendu %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ulinganiselo %n. %t"/>
+<l:template name="example" text="Umzekelo %n. %t"/>
+<l:template name="figure" text="Ulungu %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Inxenye %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Inkqubo %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Imveliso %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Indlela Yokwenza Imigca %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Isivalo %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Isiqendu %n. %t"/>
+<l:template name="part" text="Inxenye %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="I: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="U: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="U: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="refsection" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="refsect1" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="refsect2" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="refsect3" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="sect1" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="sect2" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="sect3" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="sect4" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="sect5" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="section" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="simplesect" text="icandelo libizwa ngokuba “%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="I: %n"/>
+<l:template name="appendix" text="Isivalo %n"/>
+<l:template name="bridgehead" text="Icandelo %n"/>
+<l:template name="chapter" text="Isiqendu %n"/>
+<l:template name="equation" text="Ulinganiselo %n"/>
+<l:template name="example" text="Umzekelo %n"/>
+<l:template name="figure" text="Ulungu %n"/>
+<l:template name="part" text="Inxenye %n"/>
+<l:template name="procedure" text="Inkqubo %n"/>
+<l:template name="productionset" text="Imveliso %n"/>
+<l:template name="qandadiv" text="U no I %n"/>
+<l:template name="qandaentry" text="U: %n"/>
+<l:template name="question" text="U: %n"/>
+<l:template name="sect1" text="Icandelo %n"/>
+<l:template name="sect2" text="Icandelo %n"/>
+<l:template name="sect3" text="Icandelo %n"/>
+<l:template name="sect4" text="Icandelo %n"/>
+<l:template name="sect5" text="Icandelo %n"/>
+<l:template name="section" text="Icandelo %n"/>
+<l:template name="table" text="Indlela Yokwenza Imigca %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Isivalo %n, %t"/>
+<l:template name="bridgehead" text="Icandelo %n, “%tâ€"/>
+<l:template name="chapter" text="Isiqendu %n, %t"/>
+<l:template name="equation" text="Ulinganiselo %n, “%tâ€"/>
+<l:template name="example" text="Umzekelo %n, “%tâ€"/>
+<l:template name="figure" text="Ulungu %n, “%tâ€"/>
+<l:template name="part" text="Inxenye %n, “%tâ€"/>
+<l:template name="procedure" text="Inkqubo %n, “%tâ€"/>
+<l:template name="productionset" text="Imveliso %n, “%tâ€"/>
+<l:template name="qandadiv" text="U no I %n, “%tâ€"/>
+<l:template name="refsect1" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="refsect2" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="refsect3" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="refsection" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="sect1" text="Icandelo %n, “%tâ€"/>
+<l:template name="sect2" text="Icandelo %n, “%tâ€"/>
+<l:template name="sect3" text="Icandelo %n, “%tâ€"/>
+<l:template name="sect4" text="Icandelo %n, “%tâ€"/>
+<l:template name="sect5" text="Icandelo %n, “%tâ€"/>
+<l:template name="section" text="Icandelo %n, “%tâ€"/>
+<l:template name="simplesect" text="icandelo libizwa ngokuba “%tâ€"/>
+<l:template name="table" text="Indlela Yokwenza Imigca %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=" no "/>
+<l:template name="sep2" text=" no "/>
+<l:template name="seplast" text=" no "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Bona %t."/>
+<l:template name="seealso" text="Bona Kwakhona %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Ababhali: "/>
+<l:template name="MsgLevel" text="Umphakamo: "/>
+<l:template name="MsgOrig" text="Uqobo: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0434 Xhosa"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Ã…</l:l>
+<l:l i="10">Ã¥</l:l>
+<l:l i="10">Ä€</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">Ä‚</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ä„</l:l>
+<l:l i="10">Ä…</l:l>
+<l:l i="10">Ç</l:l>
+<l:l i="10">ÇŽ</l:l>
+<l:l i="10">Çž</l:l>
+<l:l i="10">ÇŸ</l:l>
+<l:l i="10">Ç </l:l>
+<l:l i="10">Ç¡</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">Ç»</l:l>
+<l:l i="10">È€</l:l>
+<l:l i="10">È</l:l>
+<l:l i="10">È‚</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">á¸</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">Æ€</l:l>
+<l:l i="20">Æ</l:l>
+<l:l i="20">É“</l:l>
+<l:l i="20">Æ‚</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">ÄŠ</l:l>
+<l:l i="30">Ä‹</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">É•</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">ÄŽ</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä</l:l>
+<l:l i="40">Ä‘</l:l>
+<l:l i="40">ÆŠ</l:l>
+<l:l i="40">É—</l:l>
+<l:l i="40">Æ‹</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Ç…</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">È¡</l:l>
+<l:l i="40">É–</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">á¸</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ä’</l:l>
+<l:l i="50">Ä“</l:l>
+<l:l i="50">Ä”</l:l>
+<l:l i="50">Ä•</l:l>
+<l:l i="50">Ä–</l:l>
+<l:l i="50">Ä—</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">Ä™</l:l>
+<l:l i="50">Äš</l:l>
+<l:l i="50">Ä›</l:l>
+<l:l i="50">È„</l:l>
+<l:l i="50">È…</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">È©</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">á¸</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">á»</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">á»…</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Æ‘</l:l>
+<l:l i="60">Æ’</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">Ä</l:l>
+<l:l i="70">Äž</l:l>
+<l:l i="70">ÄŸ</l:l>
+<l:l i="70">Ä </l:l>
+<l:l i="70">Ä¡</l:l>
+<l:l i="70">Ä¢</l:l>
+<l:l i="70">Ä£</l:l>
+<l:l i="70">Æ“</l:l>
+<l:l i="70">É </l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">Ç¥</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ç´</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">Ä¥</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Èž</l:l>
+<l:l i="80">ÈŸ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">ÃŽ</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ã</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">Ä©</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">Ä«</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">Ä­</l:l>
+<l:l i="90">Ä®</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">Ä°</l:l>
+<l:l i="90">Æ—</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ç</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">ÈŠ</l:l>
+<l:l i="90">È‹</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ä´</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">Ç°</l:l>
+<l:l i="100">Ê</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">Ä·</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">Æ™</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">Ç©</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ä»</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ä¿</l:l>
+<l:l i="120">Å€</l:l>
+<l:l i="120">Å</l:l>
+<l:l i="120">Å‚</l:l>
+<l:l i="120">Æš</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">È´</l:l>
+<l:l i="120">É«</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">É­</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">á¹€</l:l>
+<l:l i="130">á¹</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">Å„</l:l>
+<l:l i="140">Å…</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Æ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">Æž</l:l>
+<l:l i="140">È </l:l>
+<l:l i="140">Ç‹</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">á¹…</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ã’</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">ÅŽ</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å</l:l>
+<l:l i="150">Å‘</l:l>
+<l:l i="150">ÆŸ</l:l>
+<l:l i="150">Æ </l:l>
+<l:l i="150">Æ¡</l:l>
+<l:l i="150">Ç‘</l:l>
+<l:l i="150">Ç’</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">Ç«</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">Ç­</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">Ç¿</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">ÈŽ</l:l>
+<l:l i="150">È</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">È«</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">È­</l:l>
+<l:l i="150">È®</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">È°</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">á¹</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">á¹’</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">á»’</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">á»”</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">á»–</l:l>
+<l:l i="150">á»—</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">á»™</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">á»›</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">á»</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">á» </l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">Æ¥</l:l>
+<l:l i="160">á¹”</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">á¹–</l:l>
+<l:l i="160">á¹—</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">Ê </l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Å”</l:l>
+<l:l i="180">Å•</l:l>
+<l:l i="180">Å–</l:l>
+<l:l i="180">Å—</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">Å™</l:l>
+<l:l i="180">È</l:l>
+<l:l i="180">È‘</l:l>
+<l:l i="180">È’</l:l>
+<l:l i="180">È“</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">á¹™</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">á¹›</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">á¹</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Åš</l:l>
+<l:l i="190">Å›</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">Å</l:l>
+<l:l i="190">Åž</l:l>
+<l:l i="190">ÅŸ</l:l>
+<l:l i="190">Å </l:l>
+<l:l i="190">Å¡</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">È™</l:l>
+<l:l i="190">Ê‚</l:l>
+<l:l i="190">á¹ </l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">á¹¢</l:l>
+<l:l i="190">á¹£</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">á¹¥</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Å¢</l:l>
+<l:l i="200">Å£</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">Å¥</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">Æ«</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">Æ­</l:l>
+<l:l i="200">Æ®</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Èš</l:l>
+<l:l i="200">È›</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">á¹­</l:l>
+<l:l i="200">á¹®</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">á¹°</l:l>
+<l:l i="200">á¹±</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">Å©</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">Å«</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">Å­</l:l>
+<l:l i="210">Å®</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Å°</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">Æ°</l:l>
+<l:l i="210">Ç“</l:l>
+<l:l i="210">Ç”</l:l>
+<l:l i="210">Ç•</l:l>
+<l:l i="210">Ç–</l:l>
+<l:l i="210">Ç—</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ç™</l:l>
+<l:l i="210">Çš</l:l>
+<l:l i="210">Ç›</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">È”</l:l>
+<l:l i="210">È•</l:l>
+<l:l i="210">È–</l:l>
+<l:l i="210">È—</l:l>
+<l:l i="210">á¹²</l:l>
+<l:l i="210">á¹³</l:l>
+<l:l i="210">á¹´</l:l>
+<l:l i="210">á¹µ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">á¹·</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">á¹¹</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">á¹»</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">á»­</l:l>
+<l:l i="210">á»®</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">á»°</l:l>
+<l:l i="210">á»±</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">Ê‹</l:l>
+<l:l i="220">á¹¼</l:l>
+<l:l i="220">á¹½</l:l>
+<l:l i="220">á¹¾</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Å´</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">áº</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">áº</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ã</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">Å·</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">Æ´</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">áº</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">á»´</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">á»·</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Å»</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">È¥</l:l>
+<l:l i="260">Ê</l:l>
+<l:l i="260">Ê‘</l:l>
+<l:l i="260">áº</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml
new file mode 100644
index 0000000..d976ed0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh" english-language-name="Chinese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/zh.xml -->
+<!-- * -->
+<!-- * E-mail the edited zh.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="摘è¦"/>
+<l:gentext key="abstract" text="摘è¦"/>
+<l:gentext key="Acknowledgements" text="鸣谢"/>
+<l:gentext key="acknowledgements" text="鸣谢"/>
+<l:gentext key="Answer" text="答:"/>
+<l:gentext key="answer" text="答:"/>
+<l:gentext key="Appendix" text="附录"/>
+<l:gentext key="appendix" text="附录"/>
+<l:gentext key="Article" text="文章"/>
+<l:gentext key="article" text="文章"/>
+<l:gentext key="Author" text="作者"/>
+<l:gentext key="Bibliography" text="å‚考书目"/>
+<l:gentext key="bibliography" text="å‚考书目"/>
+<l:gentext key="Book" text="书"/>
+<l:gentext key="book" text="书"/>
+<l:gentext key="CAUTION" text="å°å¿ƒ"/>
+<l:gentext key="Caution" text="å°å¿ƒ"/>
+<l:gentext key="caution" text="å°å¿ƒ"/>
+<l:gentext key="Chapter" text="ç« "/>
+<l:gentext key="chapter" text="ç« "/>
+<l:gentext key="Colophon" text="åŽè®°"/>
+<l:gentext key="colophon" text="åŽè®°"/>
+<l:gentext key="Copyright" text="版æƒ"/>
+<l:gentext key="copyright" text="版æƒ"/>
+<l:gentext key="Dedication" text="题è¯"/>
+<l:gentext key="dedication" text="题è¯"/>
+<l:gentext key="Edition" text="版"/>
+<l:gentext key="edition" text="版"/>
+<l:gentext key="Editor" text="编者"/>
+<l:gentext key="Equation" text="å…¬å¼"/>
+<l:gentext key="equation" text="å…¬å¼"/>
+<l:gentext key="Example" text="例"/>
+<l:gentext key="example" text="例"/>
+<l:gentext key="Figure" text="图"/>
+<l:gentext key="figure" text="图"/>
+<l:gentext key="Glossary" text="术语表"/>
+<l:gentext key="glossary" text="术语表"/>
+<l:gentext key="GlossSee" text="è§"/>
+<l:gentext key="glosssee" text="è§"/>
+<l:gentext key="GlossSeeAlso" text="å‚è§"/>
+<l:gentext key="glossseealso" text="å‚è§"/>
+<l:gentext key="IMPORTANT" text="é‡è¦"/>
+<l:gentext key="important" text="é‡è¦"/>
+<l:gentext key="Important" text="é‡è¦"/>
+<l:gentext key="Index" text="索引"/>
+<l:gentext key="index" text="索引"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="法律通告"/>
+<l:gentext key="legalnotice" text="法律通告"/>
+<l:gentext key="MsgAud" text="å—ä¼—"/>
+<l:gentext key="msgaud" text="å—ä¼—"/>
+<l:gentext key="MsgLevel" text="级别"/>
+<l:gentext key="msglevel" text="级别"/>
+<l:gentext key="MsgOrig" text="出处"/>
+<l:gentext key="msgorig" text="出处"/>
+<l:gentext key="NOTE" text="注æ„"/>
+<l:gentext key="Note" text="注æ„"/>
+<l:gentext key="note" text="注æ„"/>
+<l:gentext key="Part" text="部分"/>
+<l:gentext key="part" text="部分"/>
+<l:gentext key="Preface" text="å‰è¨€"/>
+<l:gentext key="preface" text="å‰è¨€"/>
+<l:gentext key="Procedure" text="过程"/>
+<l:gentext key="procedure" text="过程"/>
+<l:gentext key="ProductionSet" text="产å“"/>
+<l:gentext key="PubDate" text="出版日期"/>
+<l:gentext key="pubdate" text="出版日期"/>
+<l:gentext key="Published" text="出版方"/>
+<l:gentext key="published" text="出版方"/>
+<l:gentext key="Publisher" text="出版者"/>
+<l:gentext key="Qandadiv" text="è´¨ä¿"/>
+<l:gentext key="qandadiv" text="è´¨ä¿"/>
+<l:gentext key="QandASet" text="常è§é—®é¢˜"/>
+<l:gentext key="Question" text="问:"/>
+<l:gentext key="question" text="问:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="å‚考"/>
+<l:gentext key="reference" text="å‚考"/>
+<l:gentext key="References" text="å‚考"/>
+<l:gentext key="RefName" text="å称"/>
+<l:gentext key="refname" text="å称"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="大纲"/>
+<l:gentext key="refsynopsisdiv" text="大纲"/>
+<l:gentext key="RevHistory" text="修订历å²"/>
+<l:gentext key="revhistory" text="修订历å²"/>
+<l:gentext key="revision" text="修订"/>
+<l:gentext key="Revision" text="修订"/>
+<l:gentext key="sect1" text="节"/>
+<l:gentext key="sect2" text="节"/>
+<l:gentext key="sect3" text="节"/>
+<l:gentext key="sect4" text="节"/>
+<l:gentext key="sect5" text="节"/>
+<l:gentext key="section" text="节"/>
+<l:gentext key="Section" text="节"/>
+<l:gentext key="see" text="è§"/>
+<l:gentext key="See" text="è§"/>
+<l:gentext key="seealso" text="å‚è§"/>
+<l:gentext key="Seealso" text="å‚è§"/>
+<l:gentext key="SeeAlso" text="å‚è§"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text="侧æ "/>
+<l:gentext key="sidebar" text="侧æ "/>
+<l:gentext key="step" text="步骤"/>
+<l:gentext key="Step" text="步骤"/>
+<l:gentext key="table" text="表"/>
+<l:gentext key="Table" text="表"/>
+<l:gentext key="task" text="任务"/>
+<l:gentext key="Task" text="任务"/>
+<l:gentext key="tip" text="æ示"/>
+<l:gentext key="TIP" text="æ示"/>
+<l:gentext key="Tip" text="æ示"/>
+<l:gentext key="Warning" text="警告"/>
+<l:gentext key="warning" text="警告"/>
+<l:gentext key="WARNING" text="警告"/>
+<l:gentext key="and" text="和"/>
+<l:gentext key="by" text="ç”±"/>
+<l:gentext key="Edited" text="编辑时间"/>
+<l:gentext key="edited" text="编辑时间"/>
+<l:gentext key="Editedby" text="编辑"/>
+<l:gentext key="editedby" text="编辑"/>
+<l:gentext key="in" text="于"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text="ã€"/>
+<l:gentext key="notes" text="备注"/>
+<l:gentext key="Notes" text="备注"/>
+<l:gentext key="Pgs" text="页"/>
+<l:gentext key="pgs" text="页"/>
+<l:gentext key="Revisedby" text="修订者:"/>
+<l:gentext key="revisedby" text="修订者:"/>
+<l:gentext key="TableNotes" text="表注"/>
+<l:gentext key="tablenotes" text="表注"/>
+<l:gentext key="TableofContents" text="目录"/>
+<l:gentext key="tableofcontents" text="目录"/>
+<l:gentext key="unexpectedelementname" text="未预期的å称"/>
+<l:gentext key="unsupported" text="ä¸æ”¯æŒ"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="作者"/>
+<l:gentext key="copyeditor" text="版æƒç¼–辑"/>
+<l:gentext key="graphicdesigner" text="美术编辑"/>
+<l:gentext key="productioneditor" text="产å“编辑"/>
+<l:gentext key="technicaleditor" text="技术编辑"/>
+<l:gentext key="translator" text="译者"/>
+<l:gentext key="listofequations" text="å…¬å¼æ¸…å•"/>
+<l:gentext key="ListofEquations" text="å…¬å¼æ¸…å•"/>
+<l:gentext key="ListofExamples" text="范例清å•"/>
+<l:gentext key="listofexamples" text="范例清å•"/>
+<l:gentext key="ListofFigures" text="æ’图清å•"/>
+<l:gentext key="listoffigures" text="æ’图清å•"/>
+<l:gentext key="ListofProcedures" text="过程清å•"/>
+<l:gentext key="listofprocedures" text="过程清å•"/>
+<l:gentext key="listoftables" text="表格清å•"/>
+<l:gentext key="ListofTables" text="表格清å•"/>
+<l:gentext key="ListofUnknown" text="未知清å•"/>
+<l:gentext key="listofunknown" text="未知清å•"/>
+<l:gentext key="nav-home" text="起始页"/>
+<l:gentext key="nav-next" text="下一页"/>
+<l:gentext key="nav-next-sibling" text="å¿«è¿›"/>
+<l:gentext key="nav-prev" text="上一页"/>
+<l:gentext key="nav-prev-sibling" text="快退"/>
+<l:gentext key="nav-up" text="上一级"/>
+<l:gentext key="nav-toc" text="目录"/>
+<l:gentext key="Draft" text="è‰ç¨¿"/>
+<l:gentext key="above" text="以上"/>
+<l:gentext key="below" text="以下"/>
+<l:gentext key="sectioncalled" text="一节"/>
+<l:gentext key="index symbols" text="符å·"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="normalize.sort.output" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="·"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="附录 %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="å…¬å¼Â %n. %t"/>
+<l:template name="example" text="例 %n. %t"/>
+<l:template name="figure" text="图 %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="第 %n 部分 %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="过程 %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="产å“ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="表 %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="附录 %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="part" text="部分 %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="问: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="问: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(第 %p 页)"/>
+<l:template name="docname" text=" 在 %o"/>
+<l:template name="docnamelong" text=" 在文档标题 %o"/>
+<l:template name="pageabbrev" text="(第 %p 页)"/>
+<l:template name="Page" text="第 %p 页"/>
+<l:template name="bridgehead" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsection" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect1" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect2" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect3" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect1" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect2" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect3" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect4" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect5" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="section" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="simplesect" text="“%tâ€ä¸€èŠ‚"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="附录 %n"/>
+<l:template name="bridgehead" text="第 %n 节"/>
+<l:template name="chapter" text="第 %n 章"/>
+<l:template name="equation" text="å…¬å¼Â %n"/>
+<l:template name="example" text="例 %n"/>
+<l:template name="figure" text="图 %n"/>
+<l:template name="part" text="第 %n 部分"/>
+<l:template name="procedure" text="过程 %n"/>
+<l:template name="productionset" text="产å“ %n"/>
+<l:template name="qandadiv" text="è´¨ä¿Â %n"/>
+<l:template name="qandaentry" text="问: %n"/>
+<l:template name="question" text="问: %n"/>
+<l:template name="sect1" text="第 %n 节"/>
+<l:template name="sect2" text="第 %n 节"/>
+<l:template name="sect3" text="第 %n 节"/>
+<l:template name="sect4" text="第 %n 节"/>
+<l:template name="sect5" text="第 %n 节"/>
+<l:template name="section" text="第 %n 节"/>
+<l:template name="table" text="表 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="附录 %n, %t"/>
+<l:template name="bridgehead" text="第 %n 节 “%tâ€"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="equation" text="å…¬å¼Â %n “%tâ€"/>
+<l:template name="example" text="例 %n “%tâ€"/>
+<l:template name="figure" text="图 %n “%tâ€"/>
+<l:template name="part" text="第 %n 部分 “%tâ€"/>
+<l:template name="procedure" text="过程 %n, “%tâ€"/>
+<l:template name="productionset" text="产å“ %n, “%tâ€"/>
+<l:template name="qandadiv" text="è´¨ä¿Â %n, “%tâ€"/>
+<l:template name="refsect1" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect2" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect3" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsection" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect1" text="第 %n 节 “%tâ€"/>
+<l:template name="sect2" text="第 %n 节 “%tâ€"/>
+<l:template name="sect3" text="第 %n 节 “%tâ€"/>
+<l:template name="sect4" text="第 %n 节 “%tâ€"/>
+<l:template name="sect5" text="第 %n 节 “%tâ€"/>
+<l:template name="section" text="第 %n 节 “%tâ€"/>
+<l:template name="simplesect" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="table" text="表 %n “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="ã€"/>
+<l:template name="sep2" text="和"/>
+<l:template name="seplast" text="和"/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="è§%t."/>
+<l:template name="seealso" text="å‚è§%t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="å—众:"/>
+<l:template name="MsgLevel" text="级别:"/>
+<l:template name="MsgOrig" text="出处:"/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="Y-m-d"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[定义:"/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="一月"/>
+<l:template name="February" text="二月"/>
+<l:template name="March" text="三月"/>
+<l:template name="April" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="June" text="六月"/>
+<l:template name="July" text="七月"/>
+<l:template name="August" text="八月"/>
+<l:template name="September" text="ä¹æœˆ"/>
+<l:template name="October" text="å月"/>
+<l:template name="November" text="å一月"/>
+<l:template name="December" text="å二月"/>
+<l:template name="Monday" text="星期一"/>
+<l:template name="Tuesday" text="星期二"/>
+<l:template name="Wednesday" text="星期三"/>
+<l:template name="Thursday" text="星期四"/>
+<l:template name="Friday" text="星期五"/>
+<l:template name="Saturday" text="星期六"/>
+<l:template name="Sunday" text="星期日"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="一月"/>
+<l:template name="Feb" text="二月"/>
+<l:template name="Mar" text="三月"/>
+<l:template name="Apr" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="Jun" text="六月"/>
+<l:template name="Jul" text="七月"/>
+<l:template name="Aug" text="八月"/>
+<l:template name="Sep" text="ä¹æœˆ"/>
+<l:template name="Oct" text="å月"/>
+<l:template name="Nov" text="å一月"/>
+<l:template name="Dec" text="å二月"/>
+<l:template name="Mon" text="周一"/>
+<l:template name="Tue" text="周二"/>
+<l:template name="Wed" text="周三"/>
+<l:template name="Thu" text="周四"/>
+<l:template name="Fri" text="周五"/>
+<l:template name="Sat" text="周六"/>
+<l:template name="Sun" text="周日"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0804 Chinese (CHINA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=","/>
+<l:template name="number-separator" text=","/>
+<l:template name="range-separator" text="ï¼"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=","/>
+<l:template name="alt.person.two.sep" text=" 和 "/>
+<l:template name="alt.person.last.sep" text=" 和 "/>
+<l:template name="alt.person.more.sep" text=","/>
+<l:template name="primary.editor" text="(主编)"/>
+<l:template name="primary.many" text="等。"/>
+<l:template name="primary.sep" text="。"/>
+<l:template name="submaintitle.sep" text=":"/>
+<l:template name="title.sep" text="。"/>
+<l:template name="othertitle.sep" text=","/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="ï¼›"/>
+<l:template name="secondary.sep" text="。"/>
+<l:template name="respons.sep" text="。"/>
+<l:template name="edition.sep" text="。"/>
+<l:template name="edition.serial.sep" text=","/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=","/>
+<l:template name="issuing.sep" text="。"/>
+<l:template name="partnr.sep" text="。"/>
+<l:template name="placepubl.sep" text=":"/>
+<l:template name="publyear.sep" text=","/>
+<l:template name="pubinfo.sep" text="。"/>
+<l:template name="spec.pubinfo.sep" text=","/>
+<l:template name="upd.sep" text=","/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text="。"/>
+<l:template name="locs.sep" text=","/>
+<l:template name="location.sep" text="。"/>
+<l:template name="serie.sep" text="。"/>
+<l:template name="notice.sep" text="。"/>
+<l:template name="access" text="å¯ç”¨"/>
+<l:template name="acctoo" text="也å¯ç”¨"/>
+<l:template name="onwww" text="从万维网"/>
+<l:template name="oninet" text="从互è”网"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text="。"/>
+<l:template name="patcountry.sep" text="。"/>
+<l:template name="pattype.sep" text=","/>
+<l:template name="patnum.sep" text="。"/>
+<l:template name="patdate.sep" text="。"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">符å·</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml
new file mode 100644
index 0000000..f42774c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh_cn" english-language-name="Chinese Simplified">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/zh_cn.xml -->
+<!-- * -->
+<!-- * E-mail the edited zh_cn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="摘è¦"/>
+<l:gentext key="abstract" text="摘è¦"/>
+<l:gentext key="Acknowledgements" text="鸣谢"/>
+<l:gentext key="acknowledgements" text="鸣谢"/>
+<l:gentext key="Answer" text="答:"/>
+<l:gentext key="answer" text="答:"/>
+<l:gentext key="Appendix" text="附录"/>
+<l:gentext key="appendix" text="附录"/>
+<l:gentext key="Article" text="文章"/>
+<l:gentext key="article" text="文章"/>
+<l:gentext key="Author" text="作者"/>
+<l:gentext key="Bibliography" text="å‚考书目"/>
+<l:gentext key="bibliography" text="å‚考书目"/>
+<l:gentext key="Book" text="书"/>
+<l:gentext key="book" text="书"/>
+<l:gentext key="CAUTION" text="å°å¿ƒ"/>
+<l:gentext key="Caution" text="å°å¿ƒ"/>
+<l:gentext key="caution" text="å°å¿ƒ"/>
+<l:gentext key="Chapter" text="ç« "/>
+<l:gentext key="chapter" text="ç« "/>
+<l:gentext key="Colophon" text="åŽè®°"/>
+<l:gentext key="colophon" text="åŽè®°"/>
+<l:gentext key="Copyright" text="版æƒ"/>
+<l:gentext key="copyright" text="版æƒ"/>
+<l:gentext key="Dedication" text="题è¯"/>
+<l:gentext key="dedication" text="题è¯"/>
+<l:gentext key="Edition" text="版"/>
+<l:gentext key="edition" text="版"/>
+<l:gentext key="Editor" text="编者"/>
+<l:gentext key="Equation" text="å…¬å¼"/>
+<l:gentext key="equation" text="å…¬å¼"/>
+<l:gentext key="Example" text="例"/>
+<l:gentext key="example" text="例"/>
+<l:gentext key="Figure" text="图"/>
+<l:gentext key="figure" text="图"/>
+<l:gentext key="Glossary" text="术语表"/>
+<l:gentext key="glossary" text="术语表"/>
+<l:gentext key="GlossSee" text="è§"/>
+<l:gentext key="glosssee" text="è§"/>
+<l:gentext key="GlossSeeAlso" text="å‚è§"/>
+<l:gentext key="glossseealso" text="å‚è§"/>
+<l:gentext key="IMPORTANT" text="é‡è¦"/>
+<l:gentext key="important" text="é‡è¦"/>
+<l:gentext key="Important" text="é‡è¦"/>
+<l:gentext key="Index" text="索引"/>
+<l:gentext key="index" text="索引"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="法律通告"/>
+<l:gentext key="legalnotice" text="法律通告"/>
+<l:gentext key="MsgAud" text="å—ä¼—"/>
+<l:gentext key="msgaud" text="å—ä¼—"/>
+<l:gentext key="MsgLevel" text="级别"/>
+<l:gentext key="msglevel" text="级别"/>
+<l:gentext key="MsgOrig" text="出处"/>
+<l:gentext key="msgorig" text="出处"/>
+<l:gentext key="NOTE" text="注æ„"/>
+<l:gentext key="Note" text="注æ„"/>
+<l:gentext key="note" text="注æ„"/>
+<l:gentext key="Part" text="部分"/>
+<l:gentext key="part" text="部分"/>
+<l:gentext key="Preface" text="å‰è¨€"/>
+<l:gentext key="preface" text="å‰è¨€"/>
+<l:gentext key="Procedure" text="过程"/>
+<l:gentext key="procedure" text="过程"/>
+<l:gentext key="ProductionSet" text="产å“"/>
+<l:gentext key="PubDate" text="出版日期"/>
+<l:gentext key="pubdate" text="出版日期"/>
+<l:gentext key="Published" text="出版方"/>
+<l:gentext key="published" text="出版方"/>
+<l:gentext key="Publisher" text="出版者"/>
+<l:gentext key="Qandadiv" text="答问集"/>
+<l:gentext key="qandadiv" text="答问集"/>
+<l:gentext key="QandASet" text="常è§é—®é¢˜"/>
+<l:gentext key="Question" text="问:"/>
+<l:gentext key="question" text="问:"/>
+<l:gentext key="RefEntry" text="页"/>
+<l:gentext key="refentry" text="页"/>
+<l:gentext key="Reference" text="å‚考"/>
+<l:gentext key="reference" text="å‚考"/>
+<l:gentext key="References" text="å‚考"/>
+<l:gentext key="RefName" text="å称"/>
+<l:gentext key="refname" text="å称"/>
+<l:gentext key="RefSection" text="节"/>
+<l:gentext key="refsection" text="节"/>
+<l:gentext key="RefSynopsisDiv" text="大纲"/>
+<l:gentext key="refsynopsisdiv" text="大纲"/>
+<l:gentext key="RevHistory" text="修订历å²"/>
+<l:gentext key="revhistory" text="修订历å²"/>
+<l:gentext key="revision" text="修订"/>
+<l:gentext key="Revision" text="修订"/>
+<l:gentext key="sect1" text="节"/>
+<l:gentext key="sect2" text="节"/>
+<l:gentext key="sect3" text="节"/>
+<l:gentext key="sect4" text="节"/>
+<l:gentext key="sect5" text="节"/>
+<l:gentext key="section" text="节"/>
+<l:gentext key="Section" text="节"/>
+<l:gentext key="see" text="è§"/>
+<l:gentext key="See" text="è§"/>
+<l:gentext key="seealso" text="å‚è§"/>
+<l:gentext key="Seealso" text="å‚è§"/>
+<l:gentext key="SeeAlso" text="å‚è§"/>
+<l:gentext key="set" text="集åˆ"/>
+<l:gentext key="Set" text="集åˆ"/>
+<l:gentext key="setindex" text="索引"/>
+<l:gentext key="SetIndex" text="索引"/>
+<l:gentext key="Sidebar" text="侧æ "/>
+<l:gentext key="sidebar" text="侧æ "/>
+<l:gentext key="step" text="步骤"/>
+<l:gentext key="Step" text="步骤"/>
+<l:gentext key="table" text="表"/>
+<l:gentext key="Table" text="表"/>
+<l:gentext key="task" text="任务"/>
+<l:gentext key="Task" text="任务"/>
+<l:gentext key="tip" text="æ示"/>
+<l:gentext key="TIP" text="æ示"/>
+<l:gentext key="Tip" text="æ示"/>
+<l:gentext key="Warning" text="警告"/>
+<l:gentext key="warning" text="警告"/>
+<l:gentext key="WARNING" text="警告"/>
+<l:gentext key="and" text="和"/>
+<l:gentext key="by" text="ç”±"/>
+<l:gentext key="Edited" text="编辑时间"/>
+<l:gentext key="edited" text="编辑时间"/>
+<l:gentext key="Editedby" text="编辑"/>
+<l:gentext key="editedby" text="编辑"/>
+<l:gentext key="in" text="于"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text="ã€"/>
+<l:gentext key="notes" text="备注"/>
+<l:gentext key="Notes" text="备注"/>
+<l:gentext key="Pgs" text="页"/>
+<l:gentext key="pgs" text="页"/>
+<l:gentext key="Revisedby" text="修订者:"/>
+<l:gentext key="revisedby" text="修订者:"/>
+<l:gentext key="TableNotes" text="表注"/>
+<l:gentext key="tablenotes" text="表注"/>
+<l:gentext key="TableofContents" text="目录"/>
+<l:gentext key="tableofcontents" text="目录"/>
+<l:gentext key="unexpectedelementname" text="未预期的å称"/>
+<l:gentext key="unsupported" text="ä¸æ”¯æŒ"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="作者"/>
+<l:gentext key="copyeditor" text="版æƒç¼–辑"/>
+<l:gentext key="graphicdesigner" text="美术编辑"/>
+<l:gentext key="productioneditor" text="产å“编辑"/>
+<l:gentext key="technicaleditor" text="技术编辑"/>
+<l:gentext key="translator" text="译者"/>
+<l:gentext key="listofequations" text="å…¬å¼æ¸…å•"/>
+<l:gentext key="ListofEquations" text="å…¬å¼æ¸…å•"/>
+<l:gentext key="ListofExamples" text="范例清å•"/>
+<l:gentext key="listofexamples" text="范例清å•"/>
+<l:gentext key="ListofFigures" text="æ’图清å•"/>
+<l:gentext key="listoffigures" text="æ’图清å•"/>
+<l:gentext key="ListofProcedures" text="过程清å•"/>
+<l:gentext key="listofprocedures" text="过程清å•"/>
+<l:gentext key="listoftables" text="表格清å•"/>
+<l:gentext key="ListofTables" text="表格清å•"/>
+<l:gentext key="ListofUnknown" text="未知清å•"/>
+<l:gentext key="listofunknown" text="未知清å•"/>
+<l:gentext key="nav-home" text="起始页"/>
+<l:gentext key="nav-next" text="下一页"/>
+<l:gentext key="nav-next-sibling" text="å¿«è¿›"/>
+<l:gentext key="nav-prev" text="上一页"/>
+<l:gentext key="nav-prev-sibling" text="快退"/>
+<l:gentext key="nav-up" text="上一级"/>
+<l:gentext key="nav-toc" text="目录"/>
+<l:gentext key="Draft" text="è‰ç¨¿"/>
+<l:gentext key="above" text="以上"/>
+<l:gentext key="below" text="以下"/>
+<l:gentext key="sectioncalled" text="一节"/>
+<l:gentext key="index symbols" text="符å·"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="normalize.sort.output" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="·"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="附录 %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="å…¬å¼Â %n. %t"/>
+<l:template name="example" text="例 %n. %t"/>
+<l:template name="figure" text="图 %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="第 %n 部分 %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="过程 %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="产å“ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="表 %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="附录 %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="part" text="部分 %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t"/>
+<l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="问: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="问: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(第 %p 页)"/>
+<l:template name="docname" text=" 在 %o"/>
+<l:template name="docnamelong" text=" 在文档标题 %o"/>
+<l:template name="pageabbrev" text="(第 %p 页)"/>
+<l:template name="Page" text="第 %p 页"/>
+<l:template name="bridgehead" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsection" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect1" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect2" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect3" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect1" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect2" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect3" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect4" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect5" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="section" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="simplesect" text="“%tâ€ä¸€èŠ‚"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="附录 %n"/>
+<l:template name="bridgehead" text="第 %n 节"/>
+<l:template name="chapter" text="第 %n 章"/>
+<l:template name="equation" text="å…¬å¼Â %n"/>
+<l:template name="example" text="例 %n"/>
+<l:template name="figure" text="图 %n"/>
+<l:template name="part" text="第 %n 部分"/>
+<l:template name="procedure" text="过程 %n"/>
+<l:template name="productionset" text="产å“ %n"/>
+<l:template name="qandadiv" text="答问集 %n"/>
+<l:template name="qandaentry" text="问: %n"/>
+<l:template name="question" text="问: %n"/>
+<l:template name="sect1" text="第 %n 节"/>
+<l:template name="sect2" text="第 %n 节"/>
+<l:template name="sect3" text="第 %n 节"/>
+<l:template name="sect4" text="第 %n 节"/>
+<l:template name="sect5" text="第 %n 节"/>
+<l:template name="section" text="第 %n 节"/>
+<l:template name="table" text="表 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="附录 %n, %t"/>
+<l:template name="bridgehead" text="第 %n 节 “%tâ€"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="equation" text="å…¬å¼Â %n “%tâ€"/>
+<l:template name="example" text="例 %n “%tâ€"/>
+<l:template name="figure" text="图 %n “%tâ€"/>
+<l:template name="part" text="第 %n 部分 “%tâ€"/>
+<l:template name="procedure" text="过程 %n, “%tâ€"/>
+<l:template name="productionset" text="产å“ %n, “%tâ€"/>
+<l:template name="qandadiv" text="答问集 %n, “%tâ€"/>
+<l:template name="refsect1" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect2" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsect3" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="refsection" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="sect1" text="第 %n 节 “%tâ€"/>
+<l:template name="sect2" text="第 %n 节 “%tâ€"/>
+<l:template name="sect3" text="第 %n 节 “%tâ€"/>
+<l:template name="sect4" text="第 %n 节 “%tâ€"/>
+<l:template name="sect5" text="第 %n 节 “%tâ€"/>
+<l:template name="section" text="第 %n 节 “%tâ€"/>
+<l:template name="simplesect" text="“%tâ€ä¸€èŠ‚"/>
+<l:template name="table" text="表 %n “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="ã€"/>
+<l:template name="sep2" text="和"/>
+<l:template name="seplast" text="和"/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="è§%t."/>
+<l:template name="seealso" text="å‚è§%t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="å—众:"/>
+<l:template name="MsgLevel" text="级别:"/>
+<l:template name="MsgOrig" text="出处:"/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="Y-m-d"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[定义:"/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="一月"/>
+<l:template name="February" text="二月"/>
+<l:template name="March" text="三月"/>
+<l:template name="April" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="June" text="六月"/>
+<l:template name="July" text="七月"/>
+<l:template name="August" text="八月"/>
+<l:template name="September" text="ä¹æœˆ"/>
+<l:template name="October" text="å月"/>
+<l:template name="November" text="å一月"/>
+<l:template name="December" text="å二月"/>
+<l:template name="Monday" text="星期一"/>
+<l:template name="Tuesday" text="星期二"/>
+<l:template name="Wednesday" text="星期三"/>
+<l:template name="Thursday" text="星期四"/>
+<l:template name="Friday" text="星期五"/>
+<l:template name="Saturday" text="星期六"/>
+<l:template name="Sunday" text="星期日"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="一月"/>
+<l:template name="Feb" text="二月"/>
+<l:template name="Mar" text="三月"/>
+<l:template name="Apr" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="Jun" text="六月"/>
+<l:template name="Jul" text="七月"/>
+<l:template name="Aug" text="八月"/>
+<l:template name="Sep" text="ä¹æœˆ"/>
+<l:template name="Oct" text="å月"/>
+<l:template name="Nov" text="å一月"/>
+<l:template name="Dec" text="å二月"/>
+<l:template name="Mon" text="周一"/>
+<l:template name="Tue" text="周二"/>
+<l:template name="Wed" text="周三"/>
+<l:template name="Thu" text="周四"/>
+<l:template name="Fri" text="周五"/>
+<l:template name="Sat" text="周六"/>
+<l:template name="Sun" text="周日"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0804 Chinese (CHINA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=","/>
+<l:template name="number-separator" text=","/>
+<l:template name="range-separator" text="ï¼"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=","/>
+<l:template name="alt.person.two.sep" text=" 和 "/>
+<l:template name="alt.person.last.sep" text=" 和 "/>
+<l:template name="alt.person.more.sep" text=","/>
+<l:template name="primary.editor" text="(主编)"/>
+<l:template name="primary.many" text="等。"/>
+<l:template name="primary.sep" text="。"/>
+<l:template name="submaintitle.sep" text=":"/>
+<l:template name="title.sep" text="。"/>
+<l:template name="othertitle.sep" text=","/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="ï¼›"/>
+<l:template name="secondary.sep" text="。"/>
+<l:template name="respons.sep" text="。"/>
+<l:template name="edition.sep" text="。"/>
+<l:template name="edition.serial.sep" text=","/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=","/>
+<l:template name="issuing.sep" text="。"/>
+<l:template name="partnr.sep" text="。"/>
+<l:template name="placepubl.sep" text=":"/>
+<l:template name="publyear.sep" text=","/>
+<l:template name="pubinfo.sep" text="。"/>
+<l:template name="spec.pubinfo.sep" text=","/>
+<l:template name="upd.sep" text=","/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text="。"/>
+<l:template name="locs.sep" text=","/>
+<l:template name="location.sep" text="。"/>
+<l:template name="serie.sep" text="。"/>
+<l:template name="notice.sep" text="。"/>
+<l:template name="access" text="å¯ç”¨"/>
+<l:template name="acctoo" text="也å¯ç”¨"/>
+<l:template name="onwww" text="从万维网"/>
+<l:template name="oninet" text="从互è”网"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text="。"/>
+<l:template name="patcountry.sep" text="。"/>
+<l:template name="pattype.sep" text=","/>
+<l:template name="patnum.sep" text="。"/>
+<l:template name="patdate.sep" text="。"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">符å·</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml
new file mode 100644
index 0000000..49cb5b6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh_tw" english-language-name="Chinese (Taiwan)">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/zh_tw.xml -->
+<!-- * -->
+<!-- * E-mail the edited zh_tw.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="摘è¦"/>
+<l:gentext key="abstract" text="摘è¦"/>
+<l:gentext key="Acknowledgements" text="é³´è¬"/>
+<l:gentext key="acknowledgements" text="é³´è¬"/>
+<l:gentext key="Answer" text="答:"/>
+<l:gentext key="answer" text="答:"/>
+<l:gentext key="Appendix" text="附錄"/>
+<l:gentext key="appendix" text="附錄"/>
+<l:gentext key="Article" text="文章"/>
+<l:gentext key="article" text="文章"/>
+<l:gentext key="Author" text="作者"/>
+<l:gentext key="Bibliography" text="åƒè€ƒæ–‡ç»"/>
+<l:gentext key="bibliography" text="åƒè€ƒæ–‡ç»"/>
+<l:gentext key="Book" text="書目"/>
+<l:gentext key="book" text="書目"/>
+<l:gentext key="CAUTION" text="注æ„"/>
+<l:gentext key="Caution" text="注æ„"/>
+<l:gentext key="caution" text="注æ„"/>
+<l:gentext key="Chapter" text="ç« "/>
+<l:gentext key="chapter" text="ç« "/>
+<l:gentext key="Colophon" text="版本記錄"/>
+<l:gentext key="colophon" text="版本記錄"/>
+<l:gentext key="Copyright" text="版權"/>
+<l:gentext key="copyright" text="版權"/>
+<l:gentext key="Dedication" text="奉ç»"/>
+<l:gentext key="dedication" text="奉ç»"/>
+<l:gentext key="Edition" text="版"/>
+<l:gentext key="edition" text="版"/>
+<l:gentext key="Editor" text="编者"/>
+<l:gentext key="Equation" text="å…¬å¼"/>
+<l:gentext key="equation" text="å…¬å¼"/>
+<l:gentext key="Example" text="範例"/>
+<l:gentext key="example" text="範例"/>
+<l:gentext key="Figure" text="圖形"/>
+<l:gentext key="figure" text="圖形"/>
+<l:gentext key="Glossary" text="å°è¾­å½™"/>
+<l:gentext key="glossary" text="å°è¾­å½™"/>
+<l:gentext key="GlossSee" text="åƒè¦‹"/>
+<l:gentext key="glosssee" text="åƒè¦‹"/>
+<l:gentext key="GlossSeeAlso" text="å¦åƒè¦‹"/>
+<l:gentext key="glossseealso" text="å¦åƒè¦‹"/>
+<l:gentext key="IMPORTANT" text="é‡è¦"/>
+<l:gentext key="important" text="é‡è¦"/>
+<l:gentext key="Important" text="é‡è¦"/>
+<l:gentext key="Index" text="索引"/>
+<l:gentext key="index" text="索引"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="法律è²æ˜Ž"/>
+<l:gentext key="legalnotice" text="法律è²æ˜Ž"/>
+<l:gentext key="MsgAud" text="讀者"/>
+<l:gentext key="msgaud" text="讀者"/>
+<l:gentext key="MsgLevel" text="程度"/>
+<l:gentext key="msglevel" text="程度"/>
+<l:gentext key="MsgOrig" text="出處"/>
+<l:gentext key="msgorig" text="出處"/>
+<l:gentext key="NOTE" text="注æ„"/>
+<l:gentext key="Note" text="注æ„"/>
+<l:gentext key="note" text="注æ„"/>
+<l:gentext key="Part" text="部"/>
+<l:gentext key="part" text="部"/>
+<l:gentext key="Preface" text="åºè¨€"/>
+<l:gentext key="preface" text="åºè¨€"/>
+<l:gentext key="Procedure" text="éŽç¨‹"/>
+<l:gentext key="procedure" text="éŽç¨‹"/>
+<l:gentext key="ProductionSet" text="奉ç»"/>
+<l:gentext key="PubDate" text="出版日期"/>
+<l:gentext key="pubdate" text="出版日期"/>
+<l:gentext key="Published" text="出版"/>
+<l:gentext key="published" text="出版"/>
+<l:gentext key="Publisher" text="出版者"/>
+<l:gentext key="Qandadiv" text="å•ç­”"/>
+<l:gentext key="qandadiv" text="å•ç­”"/>
+<l:gentext key="QandASet" text="常見å•é¡Œé›†"/>
+<l:gentext key="Question" text="å•ï¼š"/>
+<l:gentext key="question" text="å•ï¼š"/>
+<l:gentext key="RefEntry" text="é "/>
+<l:gentext key="refentry" text="é "/>
+<l:gentext key="Reference" text="åƒè€ƒ"/>
+<l:gentext key="reference" text="åƒè€ƒ"/>
+<l:gentext key="References" text="åƒè€ƒ"/>
+<l:gentext key="RefName" text="åƒè€ƒå"/>
+<l:gentext key="refname" text="åƒè€ƒå"/>
+<l:gentext key="RefSection" text="節"/>
+<l:gentext key="refsection" text="節"/>
+<l:gentext key="RefSynopsisDiv" text="大綱"/>
+<l:gentext key="refsynopsisdiv" text="大綱"/>
+<l:gentext key="RevHistory" text="修訂記錄"/>
+<l:gentext key="revhistory" text="修訂記錄"/>
+<l:gentext key="revision" text="修訂"/>
+<l:gentext key="Revision" text="修訂"/>
+<l:gentext key="sect1" text="節"/>
+<l:gentext key="sect2" text="節"/>
+<l:gentext key="sect3" text="節"/>
+<l:gentext key="sect4" text="節"/>
+<l:gentext key="sect5" text="節"/>
+<l:gentext key="section" text="節"/>
+<l:gentext key="Section" text="節"/>
+<l:gentext key="see" text="åƒè¦‹"/>
+<l:gentext key="See" text="åƒè¦‹"/>
+<l:gentext key="seealso" text="å¦åƒè¦‹"/>
+<l:gentext key="Seealso" text="å¦åƒè¦‹"/>
+<l:gentext key="SeeAlso" text="å¦åƒè¦‹"/>
+<l:gentext key="set" text="集åˆ"/>
+<l:gentext key="Set" text="集åˆ"/>
+<l:gentext key="setindex" text="索引"/>
+<l:gentext key="SetIndex" text="索引"/>
+<l:gentext key="Sidebar" text="å´æ¬„"/>
+<l:gentext key="sidebar" text="å´æ¬„"/>
+<l:gentext key="step" text="步驟"/>
+<l:gentext key="Step" text="步驟"/>
+<l:gentext key="table" text="表格"/>
+<l:gentext key="Table" text="表格"/>
+<l:gentext key="task" text="任務"/>
+<l:gentext key="Task" text="任務"/>
+<l:gentext key="tip" text="æ示"/>
+<l:gentext key="TIP" text="æ示"/>
+<l:gentext key="Tip" text="æ示"/>
+<l:gentext key="Warning" text="警告"/>
+<l:gentext key="warning" text="警告"/>
+<l:gentext key="WARNING" text="警告"/>
+<l:gentext key="and" text="且"/>
+<l:gentext key="by" text="ç”±"/>
+<l:gentext key="Edited" text="編輯"/>
+<l:gentext key="edited" text="編輯"/>
+<l:gentext key="Editedby" text="編輯者"/>
+<l:gentext key="editedby" text="編輯者"/>
+<l:gentext key="in" text="在"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="notes" text="注"/>
+<l:gentext key="Notes" text="注"/>
+<l:gentext key="Pgs" text="é "/>
+<l:gentext key="pgs" text="é "/>
+<l:gentext key="Revisedby" text="修訂者 "/>
+<l:gentext key="revisedby" text="修訂者 "/>
+<l:gentext key="TableNotes" text="注"/>
+<l:gentext key="tablenotes" text="注"/>
+<l:gentext key="TableofContents" text="內容目錄"/>
+<l:gentext key="tableofcontents" text="內容目錄"/>
+<l:gentext key="unexpectedelementname" text="éžé æœŸçš„å稱"/>
+<l:gentext key="unsupported" text="未支æ´"/>
+<l:gentext key="xrefto" text="åƒç…§"/>
+<l:gentext key="Authors" text="作者"/>
+<l:gentext key="copyeditor" text="版權"/>
+<l:gentext key="graphicdesigner" text="美術編輯"/>
+<l:gentext key="productioneditor" text="製作編輯"/>
+<l:gentext key="technicaleditor" text="技術編輯"/>
+<l:gentext key="translator" text="翻譯者"/>
+<l:gentext key="listofequations" text="å…¬å¼ç›®éŒ„"/>
+<l:gentext key="ListofEquations" text="å…¬å¼ç›®éŒ„"/>
+<l:gentext key="ListofExamples" text="範例目錄"/>
+<l:gentext key="listofexamples" text="範例目錄"/>
+<l:gentext key="ListofFigures" text="附圖目錄"/>
+<l:gentext key="listoffigures" text="附圖目錄"/>
+<l:gentext key="ListofProcedures" text="éŽç¨‹æ¸…å–®"/>
+<l:gentext key="listofprocedures" text="éŽç¨‹æ¸…å–®"/>
+<l:gentext key="listoftables" text="附表目錄"/>
+<l:gentext key="ListofTables" text="附表目錄"/>
+<l:gentext key="ListofUnknown" text="其他內容目錄"/>
+<l:gentext key="listofunknown" text="其他內容目錄"/>
+<l:gentext key="nav-home" text="起始é "/>
+<l:gentext key="nav-next" text="下一é "/>
+<l:gentext key="nav-next-sibling" text="快速å‘å‰"/>
+<l:gentext key="nav-prev" text="å‰ä¸€é "/>
+<l:gentext key="nav-prev-sibling" text="快速å‘後"/>
+<l:gentext key="nav-up" text="上一層"/>
+<l:gentext key="nav-toc" text="目錄"/>
+<l:gentext key="Draft" text="è‰ç¨¿"/>
+<l:gentext key="above" text="以上"/>
+<l:gentext key="below" text="以下"/>
+<l:gentext key="sectioncalled" text="一節"/>
+<l:gentext key="index symbols" text="符號"/>
+<l:gentext key="writing-mode" text="lr-tb"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="â€"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="附錄 %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ç«  %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="å…¬å¼ %n. %t"/>
+<l:template name="example" text="範例 %n. %t"/>
+<l:template name="figure" text="圖形 %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="部 %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="éŽç¨‹Â %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="奉ç»Â %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t" lang="en"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="表格 %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="附錄 %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="ç«  %n. %t"/>
+<l:template name="part" text="部 %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="acknowledgements" text="%s" lang="en"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s" lang="en"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="acknowledgements" text="%t" lang="en"/>
+<l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="å•ï¼šÂ %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="å•ï¼šÂ %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%tâ€"/>
+<l:template name="refsection" text="“%tâ€"/>
+<l:template name="refsect1" text="“%tâ€"/>
+<l:template name="refsect2" text="“%tâ€"/>
+<l:template name="refsect3" text="“%tâ€"/>
+<l:template name="sect1" text="“%tâ€"/>
+<l:template name="sect2" text="“%tâ€"/>
+<l:template name="sect3" text="“%tâ€"/>
+<l:template name="sect4" text="“%tâ€"/>
+<l:template name="sect5" text="“%tâ€"/>
+<l:template name="section" text="“%tâ€"/>
+<l:template name="simplesect" text="“%tâ€"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="附錄 %n"/>
+<l:template name="bridgehead" text="節 %n"/>
+<l:template name="chapter" text="章 %n"/>
+<l:template name="equation" text="å…¬å¼Â %n"/>
+<l:template name="example" text="範例 %n"/>
+<l:template name="figure" text="圖形 %n"/>
+<l:template name="part" text="部 %n"/>
+<l:template name="procedure" text="éŽç¨‹Â %n"/>
+<l:template name="productionset" text="奉ç»Â %n"/>
+<l:template name="qandadiv" text="å•ç­” %n"/>
+<l:template name="qandaentry" text="å•ï¼šÂ %n"/>
+<l:template name="question" text="å•ï¼šÂ %n"/>
+<l:template name="sect1" text="節 %n"/>
+<l:template name="sect2" text="節 %n"/>
+<l:template name="sect3" text="節 %n"/>
+<l:template name="sect4" text="節 %n"/>
+<l:template name="sect5" text="節 %n"/>
+<l:template name="section" text="節 %n"/>
+<l:template name="table" text="表格 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="附錄 %n, %t"/>
+<l:template name="bridgehead" text="節 %n, “%tâ€"/>
+<l:template name="chapter" text="章 %n, %t"/>
+<l:template name="equation" text="å…¬å¼Â %n, “%tâ€"/>
+<l:template name="example" text="範例 %n, “%tâ€"/>
+<l:template name="figure" text="圖形 %n, “%tâ€"/>
+<l:template name="part" text="部 %n, “%tâ€"/>
+<l:template name="procedure" text="éŽç¨‹Â %n, “%tâ€"/>
+<l:template name="productionset" text="奉ç»Â %n, “%tâ€"/>
+<l:template name="qandadiv" text="å•ç­” %n, “%tâ€"/>
+<l:template name="refsect1" text="一節 “%tâ€"/>
+<l:template name="refsect2" text="一節 “%tâ€"/>
+<l:template name="refsect3" text="一節 “%tâ€"/>
+<l:template name="refsection" text="一節 “%tâ€"/>
+<l:template name="sect1" text="節 %n, “%tâ€"/>
+<l:template name="sect2" text="節 %n, “%tâ€"/>
+<l:template name="sect3" text="節 %n, “%tâ€"/>
+<l:template name="sect4" text="節 %n, “%tâ€"/>
+<l:template name="sect5" text="節 %n, “%tâ€"/>
+<l:template name="section" text="節 %n, “%tâ€"/>
+<l:template name="simplesect" text="一節 “%tâ€"/>
+<l:template name="table" text="表格 %n, “%tâ€"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" 且 "/>
+<l:template name="seplast" text=", 且 "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="åƒè¦‹ %t."/>
+<l:template name="seealso" text="å¦åƒè¦‹ %t."/>
+<l:template name="seealso-separator" text=", "/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="讀者: "/>
+<l:template name="MsgLevel" text="程度: "/>
+<l:template name="MsgOrig" text="出處: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="一月"/>
+<l:template name="February" text="二月"/>
+<l:template name="March" text="三月"/>
+<l:template name="April" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="June" text="六月"/>
+<l:template name="July" text="七月"/>
+<l:template name="August" text="八月"/>
+<l:template name="September" text="ä¹æœˆ"/>
+<l:template name="October" text="å月"/>
+<l:template name="November" text="å一月"/>
+<l:template name="December" text="å二月"/>
+<l:template name="Monday" text="星期一"/>
+<l:template name="Tuesday" text="星期二"/>
+<l:template name="Wednesday" text="星期三"/>
+<l:template name="Thursday" text="星期四"/>
+<l:template name="Friday" text="星期五"/>
+<l:template name="Saturday" text="星期六"/>
+<l:template name="Sunday" text="星期日"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="一月"/>
+<l:template name="Feb" text="二月"/>
+<l:template name="Mar" text="三月"/>
+<l:template name="Apr" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="Jun" text="六月"/>
+<l:template name="Jul" text="七月"/>
+<l:template name="Aug" text="八月"/>
+<l:template name="Sep" text="ä¹æœˆ"/>
+<l:template name="Oct" text="10月"/>
+<l:template name="Nov" text="11月"/>
+<l:template name="Dec" text="12月"/>
+<l:template name="Mon" text="一"/>
+<l:template name="Tue" text="二"/>
+<l:template name="Wed" text="三"/>
+<l:template name="Thu" text="å››"/>
+<l:template name="Fri" text="五"/>
+<l:template name="Sat" text="å…­"/>
+<l:template name="Sun" text="æ—¥"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0404 Chinese (TAIWAN)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">符號</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml
new file mode 100644
index 0000000..ea4bf02
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml
@@ -0,0 +1,10 @@
+<authorgroup xmlns="http://docbook.org/ns/docbook" version="5.0">
+ <author>
+ <personname>
+ <surname>Walsh</surname><firstname>Norman</firstname>
+ </personname>
+ </author>
+ <author>
+ <orgname>The DocBook Project</orgname>
+ </author>
+</authorgroup>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml
new file mode 100644
index 0000000..505f7f8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml
@@ -0,0 +1,18 @@
+<info xmlns="http://docbook.org/ns/docbook" version="5.0">
+ <copyright>
+ <year>1999-2007</year>
+ <holder>Norman Walsh</holder>
+ </copyright>
+ <copyright>
+ <year>2003</year>
+ <holder>Jiří Kosek</holder>
+ </copyright>
+ <copyright>
+ <year>2004-2007</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ <copyright>
+ <year>2001-2007</year>
+ <holder>The DocBook Project</holder>
+ </copyright>
+</info>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml
new file mode 100644
index 0000000..c265ce8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml
@@ -0,0 +1,23 @@
+<legalnotice xmlns="http://docbook.org/ns/docbook" version="5.0"
+ xml:id="copyright"><title>License</title>
+<para>Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the <quote>Software</quote>), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+</para>
+<para>The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.</para>
+<para>Except as contained in this notice, the names of individuals
+credited with contribution to this software shall not be used in
+advertising or otherwise to promote the sale, use or other dealings in
+this Software without prior written authorization from the individuals
+in question.</para>
+<para>Any stylesheet derived from this Software that is publically
+distributed will be identified with a different name and the version
+strings in any derived Software will be changed so that no possibility
+of confusion between the derived package and this Software will
+exist.</para>
+</legalnotice>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css
new file mode 100644
index 0000000..9e7e511
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css
@@ -0,0 +1,79 @@
+/* reference.css, a stylesheet for reference documentation
+ * generated by the DocBook XSL Stylesheets */
+/* $Id: reference.css 8234 2009-02-09 12:10:48Z xmldoc $ */
+
+div.legalnotice {
+ font-size: 80%;
+}
+
+div.note, div.tip, div.warning {
+ margin-left: 5%;
+ margin-right: 10%;
+ padding: 5px;
+}
+
+div.note, div.tip {
+ border-left: solid #d5dee3 20px;
+ border-right: solid #d5dee3 20px;
+}
+
+div.note, div.tip {
+ border-left: solid palegreen 20px;
+ border-right: solid palegreen 20px;
+}
+
+div.warning {
+ border-left: solid yellow 20px;
+ border-right: solid yellow 20px;
+}
+
+div.note p, div.tip p, div.warning p {
+ margin-top: 0px;
+ margin-bottom: 4px;
+}
+
+div.note h3, div.tip h3, div.warning h3 {
+ margin-top: 0;
+}
+
+div.informalexample {
+ background-color: #d5dee3;
+ border-top-width: 2px;
+ border-top-style: double;
+ border-top-color: #d3d3d3;
+ border-bottom-width: 2px;
+ border-bottom-style: double;
+ border-bottom-color: #d3d3d3;
+ padding: 4px;
+ margin: 0em;
+ margin-left: 2em;
+}
+
+pre.programlisting, pre.synopsis {
+ whitespace: pre;
+ font-family: monospace;
+ background-color: #d5dee3;
+ border-top-width: 1px;
+ border-top-style: single;
+ border-top-color: #d3d3d3;
+ border-bottom-width: 1px;
+ border-bottom-style: single;
+ border-bottom-color: #d3d3d3;
+ padding: 4px;
+ margin: 0em;
+ margin-top: 6px;
+ margin-bottom: 6px;
+}
+
+div.informalexample pre {
+ whitespace: pre;
+ font-family: monospace;
+ border-top-width: 0px;
+ border-bottom-width: 0px;
+ padding: 0px;
+}
+
+/* Parameter and PI titles */
+ div.refnamediv h2 {
+ font-size: 2em;
+}
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml
new file mode 100644
index 0000000..7d49306
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml
@@ -0,0 +1,229 @@
+<set xmlns="http://docbook.org/ns/docbook" version="5.0"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xml:base="../docsrc/"
+ >
+ <!-- * WARNING WARNING WARNING -->
+ <!-- * WARNING WARNING WARNING -->
+ <!-- * -->
+ <!-- * This document has duplicate IDs in it and is intended for -->
+ <!-- * processing using the chunk.xsl stylesheet to generate chunked -->
+ <!-- * output from it (not for generating a single HTML output file) -->
+ <!-- * -->
+ <!-- * WARNING WARNING WARNING -->
+ <!-- * WARNING WARNING WARNING -->
+ <title>DocBook XSL Stylesheets: Reference Documentation</title>
+ <info><releaseinfo role="meta">$Id: reference.xml 8321 2009-03-12 18:20:36Z mzjn $ </releaseinfo>
+ <xi:include href="./authors.xml"/>
+ <xi:include href="./copyright.xml" xpointer="xpointer(//*[local-name() = 'copyright'])"/>
+ <xi:include href="./license.xml"/>
+ <xi:include href="./warranty.xml"/>
+ <abstract xml:id="about">
+ <title>About this document</title>
+ <para>This is generated reference documentation for the DocBook
+ XSL stylesheets. It is available in the following formats:
+ <itemizedlist>
+ <listitem>
+ <para><link
+ xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/reference.html"
+ >HTML</link>,
+ <link
+ xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/reference.pdf"
+ >PDF</link>,
+ <link
+ xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/reference.txt"
+ >plain text</link></para>
+ </listitem>
+ </itemizedlist>
+ This is primarily documentation on the parameters and processing instructions you can use
+ to control the behavior of the stylesheets.
+ <note>
+ <para>This is purely reference documentation&#xa0;– not how-to
+ documentation. For a thorough step-by-step how-to guide to
+ publishing content using the DocBook XSL stylesheets, see
+ Bob Stayton’s <link
+ xlink:href="http://www.sagehill.net/book-description.html"
+ >DocBook XSL: The Complete Guide</link>, available online
+ at <link
+ xlink:href="http://www.sagehill.net/docbookxsl/index.html"
+ >http://www.sagehill.net/docbookxsl/index.html</link>
+ </para>
+ </note>
+ This document is divided into three sets of references:
+ the first two sets provides user documentation; the third,
+ developer documentation.</para>
+ </abstract>
+ </info>
+ <book xml:id="param"><title>DocBook XSL Stylesheets User Reference: Parameters</title>
+ <info>
+ <abstract>
+ <para>This is generated reference documentation for all
+ user-configurable parameters in the DocBook XSL
+ stylesheets.
+ <note>
+ <para>This is purely reference documentation&#xa0;– not how-to
+ documentation. For a thorough step-by-step how-to guide to
+ publishing content using the DocBook XSL stylesheets, see
+ Bob Stayton’s <link
+ xlink:href="http://www.sagehill.net/book-description.html"
+ >DocBook XSL: The Complete Guide</link>, available online
+ at <link
+ xlink:href="http://www.sagehill.net/docbookxsl/index.html"
+ >http://www.sagehill.net/docbookxsl/index.html</link>
+ </para>
+ </note>
+ </para>
+ </abstract>
+ </info>
+ <part xml:id="html">
+ <?dbhtml dir="html"?>
+ <?dbhtml filename="index.html"?>
+ <xi:include href="../html/param.xml" xpointer="xpointer(/book/info/title)" />
+ <partintro xml:id="htmlintro">
+ <xi:include href="../html/param.xml" xpointer="xpointer(/book/info/abstract/node())" />
+ </partintro>
+ <xi:include href="../html/param.xml" xpointer="xpointer(/book/reference)" />
+ </part>
+ <part xml:id="fo">
+ <?dbhtml dir="fo"?>
+ <?dbhtml filename="index.html"?>
+ <xi:include href="../fo/param.xml" xpointer="xpointer(/book/info/title)" />
+ <partintro xml:id="fointro">
+ <xi:include href="../fo/param.xml" xpointer="xpointer(/book/info/abstract/node())" />
+ </partintro>
+ <xi:include href="../fo/param.xml" xpointer="xpointer(/book/reference)" />
+ </part>
+ <part xml:id="manpages">
+ <?dbhtml dir="manpages"?>
+ <?dbhtml filename="index.html"?>
+ <xi:include href="../manpages/param.xml" xpointer="xpointer(/book/info/title)" />
+ <partintro xml:id="manintro">
+ <xi:include href="../manpages/param.xml" xpointer="xpointer(/book/info/abstract/node())" />
+ </partintro>
+ <xi:include href="../manpages/param.xml" xpointer="xpointer(/book/reference)" />
+ </part>
+ <part xml:id="roundtrip">
+ <?dbhtml dir="roundtrip"?>
+ <?dbhtml filename="index.html"?>
+ <xi:include href="../roundtrip/param.xml" xpointer="xpointer(/book/info/title)" />
+ <partintro xml:id="roundtripintro">
+ <xi:include href="../roundtrip/param.xml" xpointer="xpointer(/book/info/abstract/node())" />
+ </partintro>
+ <xi:include href="../roundtrip/param.xml" xpointer="xpointer(/book/reference/node()[not(self::title)])" />
+ </part>
+ <part xml:id="slides"><title>Slides Parameter Reference</title>
+ <?dbhtml dir="slides"?>
+ <?dbhtml filename="index.html"?>
+ <partintro xml:id="slidesintro">
+ <para>This is reference documentation for all
+ user-configurable parameters in the DocBook XSL Slides
+ stylesheets (for generating HTML and PDF slide
+ presentations).</para>
+ <note>
+ <para>The Slides stylesheet for HTML output is a
+ customization layer of the DocBook XSL HTML
+ stylesheet; the Slides stylesheet for FO output is a
+ customization layer of the DocBook XSL FO stylesheet.
+ Therefore, in addition to the slides-specific
+ parameters listed in this section, you can also use a
+ number of <link xlink:href="../html">HTML stylesheet
+ parameters</link> and <link xlink:href="../fo">FO
+ stylesheet parameters</link> to control Slides
+ output.</para>
+ </note>
+ </partintro>
+ <xi:include href="../slides/html/param.xml" xpointer="xpointer(/book/reference)" />
+ <xi:include href="../slides/fo/param.xml" xpointer="xpointer(/book/reference)" />
+ </part>
+ <part xml:id="website">
+ <?dbhtml dir="website"?>
+ <?dbhtml filename="index.html"?>
+ <xi:include href="../website/param.xml" xpointer="xpointer(/book/info/title)" />
+ <partintro xml:id="websiteintro">
+ <xi:include href="../website/param.xml" xpointer="xpointer(/book/info/abstract/node())" />
+ </partintro>
+ <xi:include href="../website/param.xml" xpointer="xpointer(/book/reference)" />
+ </part>
+ </book>
+ <book xml:id="pi"><title>DocBook XSL Stylesheets User Reference: PIs</title>
+ <?dbhtml dir="pi"?>
+ <?dbhtml filename="index.html"?>
+ <info>
+ <abstract>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions in the DocBook
+ XSL stylesheets.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </abstract>
+ </info>
+ <part xml:id="pi-html">
+ <xi:include href="../html/pi.xml" xpointer="xpointer(/reference/node())" />
+ </part>
+ <part xml:id="pi-fo">
+ <xi:include href="../fo/pi.xml" xpointer="xpointer(/reference/node())" />
+ </part>
+ <part xml:id="pi-man">
+ <xi:include href="../manpages/pi.xml" xpointer="xpointer(/reference/node())" />
+ </part>
+ <part xml:id="pi-common">
+ <xi:include href="../common/pi.xml" xpointer="xpointer(/reference/node())" />
+ </part>
+ </book>
+ <book xml:id="developer"><title>DocBook XSL Stylesheets Developer Reference</title>
+ <info>
+ <abstract>
+ <para>This is technical reference documentation for
+ developers using the DocBook XSL Stylesheets. It is not
+ intended to be user documentation, but is instead
+ provided for developers writing customization layers for
+ the stylesheets.</para>
+ </abstract>
+ </info>
+ <part xml:id="lib">
+ <?dbhtml dir="lib"?>
+ <?dbhtml filename="index.html"?>
+ <xi:include href="../lib/lib.xml" xpointer="xpointer(/book/info/title)" />
+ <partintro xml:id="libintro">
+ <xi:include href="../lib/lib.xml" xpointer="xpointer(/book/info/abstract/node())" />
+ </partintro>
+ <xi:include href="../lib/lib.xml" xpointer="xpointer(/book/reference)" />
+ </part>
+ <part xml:id="common-part"><title>Common Template Reference</title>
+ <?dbhtml dir="common"?>
+ <?dbhtml filename="index.html"?>
+ <info>
+ <abstract>
+ <para>This is technical reference documentation for the
+ “baseâ€, “refentryâ€, and “utility†sets of common
+ templates in the DocBook XSL Stylesheets. These
+ templates are “common†in that they are shared across
+ output formats (that is, they’re not
+ output-format-dependent)</para>
+ <para>This documentation is not intended to be user
+ documentation. It is provided for developers writing
+ customization layers for the stylesheets.</para>
+ </abstract>
+ </info>
+ <xi:include href="../common/common.xml"/>
+ <xi:include href="../common/refentry.xml"/>
+ <xi:include href="../common/utility.xml"/>
+ <xi:include href="../common/charmap.xml"/>
+ </part>
+ <part xml:id="table-templates">
+ <xi:include href="../fo/table.xml" xpointer="xpointer(/reference/node())"/>
+ </part>
+ <part xml:id="template">
+ <xi:include href="../template/titlepage.xml" xpointer="xpointer(/reference/node())"/>
+ </part>
+ </book>
+</set>
+<!-- * vim: set ft=docbk foldlevel=2: -->
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included
new file mode 100644
index 0000000..94869ee
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included
@@ -0,0 +1,33905 @@
+<?xml version="1.0" encoding="ASCII"?><set xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:src="http://nwalsh.com/xmlns/litprog/fragment" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:base="../docsrc/">
+ <!-- * WARNING WARNING WARNING -->
+ <!-- * WARNING WARNING WARNING -->
+ <!-- * -->
+ <!-- * This document has duplicate IDs in it and is intended for -->
+ <!-- * processing using the chunk.xsl stylesheet to generate chunked -->
+ <!-- * output from it (not for generating a single HTML output file) -->
+ <!-- * -->
+ <!-- * WARNING WARNING WARNING -->
+ <!-- * WARNING WARNING WARNING -->
+ <title>DocBook XSL Stylesheets: Reference&#160;Documentation</title>
+ <info><releaseinfo role="meta">$Id: reference.xml 8321 2009-03-12 18:20:36Z mzjn $ </releaseinfo>
+ <authorgroup version="5.0">
+ <author>
+ <personname>
+ <surname>Walsh</surname><firstname>Norman</firstname>
+ </personname>
+ </author>
+ <author>
+ <orgname>The DocBook Project</orgname>
+ </author>
+</authorgroup>
+ <copyright>
+ <year>1999-2007</year>
+ <holder>Norman Walsh</holder>
+ </copyright><copyright>
+ <year>2003</year>
+ <holder>Ji&#345;&#237; Kosek</holder>
+ </copyright><copyright>
+ <year>2004-2007</year>
+ <holder>Steve Ball</holder>
+ </copyright><copyright>
+ <year>2001-2007</year>
+ <holder>The DocBook Project</holder>
+ </copyright>
+ <legalnotice version="5.0" id="copyright"><title>License</title>
+<para>Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the <quote>Software</quote>), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+</para>
+<para>The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.</para>
+<para>Except as contained in this notice, the names of individuals
+credited with contribution to this software shall not be used in
+advertising or otherwise to promote the sale, use or other dealings in
+this Software without prior written authorization from the individuals
+in question.</para>
+<para>Any stylesheet derived from this Software that is publically
+distributed will be identified with a different name and the version
+strings in any derived Software will be changed so that no possibility
+of confusion between the derived package and this Software will
+exist.</para>
+</legalnotice>
+ <legalnotice version="5.0" id="warranty"><title>Warranty</title>
+<para>THE SOFTWARE IS PROVIDED <quote>AS IS</quote>,
+WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL NORMAN WALSH OR ANY
+OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.</para>
+</legalnotice>
+ <abstract id="about">
+ <title>About this document</title>
+ <para>This is generated reference documentation for the DocBook
+ XSL stylesheets. It is available in the following formats:
+ <itemizedlist>
+ <listitem>
+ <para><link xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/reference.html">HTML</link>,
+ <link xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/reference.pdf">PDF</link>,
+ <link xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/reference.txt">plain text</link></para>
+ </listitem>
+ </itemizedlist>
+ This is primarily documentation on the parameters and processing instructions you can use
+ to control the behavior of the stylesheets.
+ <note>
+ <para>This is purely reference documentation&#160;&#8211; not how-to
+ documentation. For a thorough step-by-step how-to guide to
+ publishing content using the DocBook XSL stylesheets, see
+ Bob Stayton&#8217;s <link xlink:href="http://www.sagehill.net/book-description.html">DocBook XSL: The Complete Guide</link>, available online
+ at <link xlink:href="http://www.sagehill.net/docbookxsl/index.html">http://www.sagehill.net/docbookxsl/index.html</link>
+ </para>
+ </note>
+ This document is divided into three sets of references:
+ the first two sets provides user documentation; the third,
+ developer documentation.</para>
+ </abstract>
+ </info>
+ <book id="param"><title>DocBook XSL Stylesheets User&#160;Reference:&#160;Parameters</title>
+ <info>
+ <abstract>
+ <para>This is generated reference documentation for all
+ user-configurable parameters in the DocBook XSL
+ stylesheets.
+ <note>
+ <para>This is purely reference documentation&#160;&#8211; not how-to
+ documentation. For a thorough step-by-step how-to guide to
+ publishing content using the DocBook XSL stylesheets, see
+ Bob Stayton&#8217;s <link xlink:href="http://www.sagehill.net/book-description.html">DocBook XSL: The Complete Guide</link>, available online
+ at <link xlink:href="http://www.sagehill.net/docbookxsl/index.html">http://www.sagehill.net/docbookxsl/index.html</link>
+ </para>
+ </note>
+ </para>
+ </abstract>
+ </info>
+ <part id="html">
+ <?dbhtml dir="html"?>
+ <?dbhtml filename="index.html"?>
+ <title xml:base="../html/param.xml">HTML Parameter Reference</title>
+ <partintro id="htmlintro">
+
+ <para xml:base="../html/param.xml">This is reference documentation for all user-configurable
+ parameters in the DocBook XSL HTML stylesheets (for generating
+ HTML output).</para>
+
+ </partintro>
+ <reference id="admons" xml:base="../html/param.xml"><title>Admonitions</title>
+<refentry version="5.0" id="admon.graphics.extension">
+<refmeta>
+<refentrytitle>admon.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.extension</refname>
+<refpurpose>Filename extension for admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.extension.frag">
+&lt;xsl:param name="admon.graphics.extension"&gt;.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on admonition graphics.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admon.graphics.path">
+<refmeta>
+<refentrytitle>admon.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.path</refname>
+<refpurpose>Path to admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.path.frag">&lt;xsl:param name="admon.graphics.path"&gt;images/&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory containing the admonition graphics
+(caution.png, important.png etc). This location is normally relative
+to the output html directory. See <parameter>base.dir</parameter></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admon.graphics">
+<refmeta>
+<refentrytitle>admon.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics</refname>
+<refpurpose>Use graphics in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.frag">
+&lt;xsl:param name="admon.graphics" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented in an alternate style that uses
+a graphic. Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admon.textlabel">
+<refmeta>
+<refentrytitle>admon.textlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.textlabel</refname>
+<refpurpose>Use text label in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.textlabel.frag">
+&lt;xsl:param name="admon.textlabel" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented with a generated
+text label such as Note or Warning in the appropriate language.
+If zero, such labels are turned off, but any title child
+of the admonition element are still output.
+The default value is 1.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admon.style">
+<refmeta>
+<refentrytitle>admon.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.style</refname>
+<refpurpose>Specifies the CSS style attribute that should be added to
+admonitions.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.style.frag">&lt;xsl:param name="admon.style"&gt;
+ &lt;xsl:value-of select="concat('margin-', $direction.align.start, ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"&gt;&lt;/xsl:value-of&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the value of the CSS <tag class="attribute">style</tag>
+attribute that should be added to admonitions.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="callouts" xml:base="../html/param.xml"><title>Callouts</title>
+<refentry version="5.0" id="callout.defaultcolumn">
+<refmeta>
+<refentrytitle>callout.defaultcolumn</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.defaultcolumn</refname>
+<refpurpose>Indicates what column callouts appear in by default</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.defaultcolumn.frag">
+&lt;xsl:param name="callout.defaultcolumn"&gt;60&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a callout does not identify a column (for example, if it uses
+the <literal>linerange</literal> <tag class="attribute">unit</tag>),
+it will appear in the default column.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics.extension">
+<refmeta>
+<refentrytitle>callout.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.extension</refname>
+<refpurpose>Filename extension for callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.extension.frag">
+&lt;xsl:param name="callout.graphics.extension"&gt;.png&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Sets the filename extension to use on callout graphics. </para>
+
+<itemizedlist>
+<para>The Docbook XSL distribution provides callout graphics in the following formats:</para>
+<listitem><para>SVG (extension: <filename class="extension">.svg</filename>)</para></listitem>
+<listitem><para>PNG (extension: <filename class="extension">.png</filename>)</para></listitem>
+<listitem><para>GIF (extension: <filename class="extension">.gif</filename>)</para></listitem>
+</itemizedlist>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics.number.limit">
+<refmeta>
+<refentrytitle>callout.graphics.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.number.limit</refname>
+<refpurpose>Number of the largest callout graphic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.number.limit.frag">
+&lt;xsl:param name="callout.graphics.number.limit"&gt;15&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is non-zero, graphics
+are used to represent callout numbers instead of plain text. The value
+of <parameter>callout.graphics.number.limit</parameter> is the largest
+number for which a graphic exists. If the callout number exceeds this
+limit, the default presentation "(plain text instead of a graphic)"
+will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics.path">
+<refmeta>
+<refentrytitle>callout.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.path</refname>
+<refpurpose>Path to callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.path.frag">
+&lt;xsl:param name="callout.graphics.path"&gt;images/callouts/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory holding the callout graphics. his
+location is normally relative to the output html directory. see
+base.dir. Always terminate the directory with / since the graphic file
+is appended to this string, hence needs the separator.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics">
+<refmeta>
+<refentrytitle>callout.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics</refname>
+<refpurpose>Use graphics for callouts?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.frag">
+&lt;xsl:param name="callout.graphics" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, callouts are presented with graphics (e.g., reverse-video
+circled numbers instead of "(1)", "(2)", etc.).
+Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.list.table">
+<refmeta>
+<refentrytitle>callout.list.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.list.table</refname>
+<refpurpose>Present callout lists using a table?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.list.table.frag">
+&lt;xsl:param name="callout.list.table" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default presentation of <tag>calloutlist</tag>s uses
+an HTML <tag>DL</tag> element. Some browsers don't align DLs very well
+if <parameter>callout.graphics</parameter> is used. With this option
+turned on, <tag>calloutlist</tag>s are presented in an HTML
+<tag>TABLE</tag>, which usually results in better alignment
+of the callout number with the callout description.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.unicode.number.limit">
+<refmeta>
+<refentrytitle>callout.unicode.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.number.limit</refname>
+<refpurpose>Number of the largest unicode callout character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.number.limit.frag">
+&lt;xsl:param name="callout.unicode.number.limit"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.number.limit</parameter>
+is
+the largest number for which a unicode character exists. If the callout number
+exceeds this limit, the default presentation "(nnn)" will always
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.unicode.start.character">
+<refmeta>
+<refentrytitle>callout.unicode.start.character</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.start.character</refname>
+<refpurpose>First Unicode character to use, decimal value.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.start.character.frag">
+&lt;xsl:param name="callout.unicode.start.character"&gt;10102&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is zero and <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.start.character</parameter>
+is the decimal unicode value used for callout number one. Currently,
+only 10102 is supported in the stylesheets for this parameter.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.unicode">
+<refmeta>
+<refentrytitle>callout.unicode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode</refname>
+<refpurpose>Use Unicode characters rather than images for callouts.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.frag">&lt;xsl:param name="callout.unicode" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callouts.extension">
+<refmeta>
+<refentrytitle>callouts.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callouts.extension</refname>
+<refpurpose>Enable the callout extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callouts.extension.frag">
+&lt;xsl:param name="callouts.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The callouts extension processes <tag>areaset</tag>
+elements in <tag>programlistingco</tag> and other text-based
+callout elements.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="ebnf" xml:base="../html/param.xml"><title>EBNF</title>
+<refentry version="5.0" id="ebnf.table.bgcolor">
+<refmeta>
+<refentrytitle>ebnf.table.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.bgcolor</refname>
+<refpurpose>Background color for EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.table.bgcolor.frag">
+&lt;xsl:param name="ebnf.table.bgcolor"&gt;#F5DCB3&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the background color for EBNF tables (a pale brown). No
+<tag>bgcolor</tag> attribute is output if
+<parameter>ebnf.table.bgcolor</parameter> is set to the null string. </para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ebnf.table.border">
+<refmeta>
+<refentrytitle>ebnf.table.border</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.border</refname>
+<refpurpose>Selects border on EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.table.border.frag">&lt;xsl:param name="ebnf.table.border" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the border on EBNF tables. If non-zero, the tables have
+borders, otherwise they don't.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ebnf.assignment">
+<refmeta>
+<refentrytitle>ebnf.assignment</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.assignment</refname>
+<refpurpose>The EBNF production assignment operator</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.assignment.frag">
+&lt;xsl:param name="ebnf.assignment"&gt;
+&lt;code&gt;::=&lt;/code&gt;
+&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.assignment</parameter> parameter determines what
+text is used to show <quote>assignment</quote> in <tag>production</tag>s
+in <tag>productionset</tag>s.</para>
+
+<para>While <quote><literal>::=</literal></quote> is common, so are several
+other operators.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ebnf.statement.terminator">
+<refmeta>
+<refentrytitle>ebnf.statement.terminator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.statement.terminator</refname>
+<refpurpose>Punctuation that ends an EBNF statement.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.statement.terminator.frag">
+&lt;xsl:param name="ebnf.statement.terminator"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.statement.terminator</parameter> parameter determines what
+text is used to terminate each <tag>production</tag>
+in <tag>productionset</tag>.</para>
+
+<para>Some notations end each statement with a period.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="toc_index" xml:base="../html/param.xml"><title>ToC/LoT/Index Generation</title>
+<refentry version="5.0" id="annotate.toc">
+<refmeta>
+<refentrytitle>annotate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotate.toc</refname>
+<refpurpose>Annotate the Table of Contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="annotate.toc.frag">&lt;xsl:param name="annotate.toc" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, TOCs will be annotated. At present, this just means
+that the <tag>refpurpose</tag> of <tag>refentry</tag>
+TOC entries will be displayed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="autotoc.label.separator">
+<refmeta>
+<refentrytitle>autotoc.label.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.separator</refname>
+<refpurpose>Separator between labels and titles in the ToC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="autotoc.label.separator.frag">
+&lt;xsl:param name="autotoc.label.separator"&gt;. &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>String used to separate labels and titles in a table of contents.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="autotoc.label.in.hyperlink">
+<refmeta>
+<refentrytitle>autotoc.label.in.hyperlink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.in.hyperlink</refname>
+<refpurpose>Include label in hyperlinked titles in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="autotoc.label.in.hyperlink.frag">&lt;xsl:param name="autotoc.label.in.hyperlink" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>autotoc.label.in.hyperlink</parameter> is non-zero, labels
+are included in hyperlinked titles in the TOC. If it is instead zero,
+labels are still displayed prior to the hyperlinked titles, but
+are not hyperlinked along with the titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="process.source.toc">
+<refmeta>
+<refentrytitle>process.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.source.toc</refname>
+<refpurpose>Process a non-empty <tag>toc</tag> element if it occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="process.source.toc.frag">&lt;xsl:param name="process.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that the contents of a non-empty "hard-coded"
+<tag>toc</tag> element in a source document are processed to
+generate a TOC in output.
+<note>
+ <para>This parameter has no effect on automated generation of
+ TOCs. An automated TOC may still be generated along with the
+ "hard-coded" TOC. To suppress automated TOC generation, adjust the
+ value of the <parameter>generate.toc</parameter> paramameter.</para>
+
+ <para>The <tag>process.source.toc</tag> parameter also has
+ no effect if the <tag>toc</tag> element is empty; handling
+ for empty <tag>toc</tag> is controlled by the
+ <parameter>process.empty.source.toc</parameter> parameter.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="process.empty.source.toc">
+<refmeta>
+<refentrytitle>process.empty.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.empty.source.toc</refname>
+<refpurpose>Generate automated TOC if <tag>toc</tag> element occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="process.empty.source.toc.frag">&lt;xsl:param name="process.empty.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that if an empty <tag>toc</tag> element is found in a
+source document, an automated TOC is generated at this point in the
+document.
+<note>
+ <para>Depending on what the value of the
+ <parameter>generate.toc</parameter> parameter is, setting this
+ parameter to <literal>1</literal> could result in generation of
+ duplicate automated TOCs. So the
+ <parameter>process.empty.source.toc</parameter> is primarily useful
+ as an "override": by placing an empty <tag>toc</tag> in your
+ document and setting this parameter to <literal>1</literal>, you can
+ force a TOC to be generated even if <tag>generate.toc</tag>
+ says not to.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bridgehead.in.toc">
+<refmeta>
+<refentrytitle>bridgehead.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bridgehead.in.toc</refname>
+<refpurpose>Should bridgehead elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bridgehead.in.toc.frag">&lt;xsl:param name="bridgehead.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>bridgehead</tag>s appear in the TOC. Note that
+this option is not fully supported and may be removed in a future
+version of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="simplesect.in.toc">
+<refmeta>
+<refentrytitle>simplesect.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>simplesect.in.toc</refname>
+<refpurpose>Should <tag>simplesect</tag> elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="simplesect.in.toc.frag">&lt;xsl:param name="simplesect.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>simplesect</tag>s will be included in the TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="manual.toc">
+<refmeta>
+<refentrytitle>manual.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>manual.toc</refname>
+<refpurpose>An explicit TOC to be used for the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="manual.toc.frag">
+&lt;xsl:param name="manual.toc"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>manual.toc</parameter> identifies an explicit TOC that
+will be used for building the printed TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.list.type">
+<refmeta>
+<refentrytitle>toc.list.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dl</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ul</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ol</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.list.type</refname>
+<refpurpose>Type of HTML list element to use for Tables of Contents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.list.type.frag">&lt;xsl:param name="toc.list.type"&gt;dl&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When an automatically generated Table of Contents (or List of Titles)
+is produced, this HTML element will be used to make the list.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.section.depth">
+<refmeta>
+<refentrytitle>toc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.section.depth</refname>
+<refpurpose>How deep should recursive <tag>section</tag>s appear
+in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.section.depth.frag">&lt;xsl:param name="toc.section.depth"&gt;2&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the depth to which recursive sections should appear in the
+TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.max.depth">
+<refmeta>
+<refentrytitle>toc.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.max.depth</refname>
+<refpurpose>How many levels should be created for each TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.max.depth.frag">&lt;xsl:param name="toc.max.depth"&gt;8&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximal depth of TOC on all levels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.toc">
+<refmeta>
+<refentrytitle>generate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.toc</refname>
+<refpurpose>Control generation of ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.toc.frag">
+&lt;xsl:param name="generate.toc"&gt;
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has a structured value. It is a table of space-delimited
+path/value pairs. Each path identifies some element in the source document
+using a restricted subset of XPath (only the implicit child axis, no wildcards,
+no predicates). Paths can be either relative or absolute.</para>
+
+<para>When processing a particular element, the stylesheets consult this table to
+determine if a ToC (or LoT(s)) should be generated.</para>
+
+<para>For example, consider the entry:</para>
+
+<screen>book toc,figure</screen>
+
+<para>This indicates that whenever a <tag>book</tag> is formatted, a
+Table Of Contents and a List of Figures should be generated. Similarly,</para>
+
+<screen>/chapter toc</screen>
+
+<para>indicates that whenever a document <emphasis>that has a root
+of</emphasis> <tag>chapter</tag> is formatted, a Table of
+Contents should be generated. The entry <literal>chapter</literal> would match
+all chapters, but <literal>/chapter</literal> matches only <tag>chapter</tag>
+document elements.</para>
+
+<para>Generally, the longest match wins. So, for example, if you want to distinguish
+articles in books from articles in parts, you could use these two entries:</para>
+
+<screen>book/article toc,figure
+part/article toc</screen>
+
+<para>Note that an article in a part can never match a <literal>book/article</literal>,
+so if you want nothing to be generated for articles in parts, you can simply leave
+that rule out.</para>
+
+<para>If you want to leave the rule in, to make it explicit that you're turning
+something off, use the value <quote>nop</quote>. For example, the following
+entry disables ToCs and LoTs for articles:</para>
+
+<screen>article nop</screen>
+
+<para>Do not simply leave the word <quote>article</quote> in the file
+without a matching value. That'd be just begging the silly little
+path/value parser to get confused.</para>
+
+<para>Section ToCs are further controlled by the
+<parameter>generate.section.toc.level</parameter> parameter.
+For a given section level to have a ToC, it must have both an entry in
+<parameter>generate.toc</parameter> and be within the range enabled by
+<parameter>generate.section.toc.level</parameter>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.section.toc.level">
+<refmeta>
+<refentrytitle>generate.section.toc.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.section.toc.level</refname>
+<refpurpose>Control depth of TOC generation in sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.section.toc.level.frag">
+&lt;xsl:param name="generate.section.toc.level" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>generate.section.toc.level</parameter> parameter
+controls the depth of <tag>section</tag> in which TOCs will be generated. Note
+that this is related to, but not the same as
+<parameter>toc.section.depth</parameter>, which controls the depth to
+which TOC entries will be generated in a given TOC.</para>
+<para>If, for example, <parameter>generate.section.toc.level</parameter>
+is <literal>3</literal>, TOCs will be generated in first, second, and third
+level sections, but not in fourth level sections.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.index">
+<refmeta>
+<refentrytitle>generate.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.index</refname>
+<refpurpose>Do you want an index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.index.frag">&lt;xsl:param name="generate.index" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify if an index should be generated. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.method">
+<refmeta>
+<refentrytitle>index.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">basic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kosek</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kimber</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.method</refname>
+<refpurpose>Select method used to group index entries in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.method.frag">
+&lt;xsl:param name="index.method"&gt;basic&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter lets you select which method to use for sorting and grouping
+ index entries in an index.
+Indexes in Latin-based languages that have accented characters typically
+sort together accented words and unaccented words.
+Thus <quote>&#193;</quote> (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together
+with <quote>A</quote> (U+0041 LATIN CAPITAL LETTER A), so both would appear in the <quote>A</quote>
+section of the index.
+Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet)
+and languages using ideographic chararacters (such as Japanese)
+require grouping specific to the languages and alphabets.
+</para>
+
+<para>The default indexing method is limited.
+It can group accented characters in Latin-based languages only.
+It cannot handle non-Latin alphabets or ideographic languages.
+The other indexing methods require extensions of one type or
+another, and do not work with
+all XSLT processors, which is why they are not used by default.</para>
+
+<para>The three choices for indexing method are:</para>
+<variablelist>
+<varlistentry>
+<term><literal>basic</literal></term>
+<listitem>
+<para>
+(default) Sort and groups words based only on the Latin alphabet.
+Words with accented Latin letters will group and sort with
+their respective primary letter, but
+words in non-Latin alphabets will be
+put in the <quote>Symbols</quote> section of the index.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kosek</literal></term>
+<listitem>
+<para>
+This method sorts and groups words based on letter groups configured in
+the DocBook locale file for the given language.
+See, for example, the French locale file <filename>common/fr.xml</filename>.
+This method requires that the XSLT processor
+supports the EXSLT extensions (most do).
+It also requires support for using
+user-defined functions in xsl:key (xsltproc does not).
+</para>
+<para>This method is suitable for any language for which you can
+list all the individual characters that should appear
+in each letter group in an index.
+It is probably not practical to use it for ideographic languages
+such as Chinese that have hundreds or thousands of characters.
+</para>
+
+<para>To use the kosek method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use a processor that supports its extensions, such as
+Saxon 6 or Xalan (xsltproc and Saxon 8 do not).
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kosek</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kosek.xsl</filename> or
+<filename>html/autoidx-kosek.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kimber</literal></term>
+<listitem>
+<para>
+This method uses extensions to the Saxon processor to implement
+sophisticated indexing processes. It uses its own
+configuration file, which can include information for any number of
+languages. Each language's configuration can group
+words using one of two processes. In the
+enumerated process similar to that used in the kosek method,
+you indicate the groupings character-by-character.
+In the between-key process, you specify the
+break-points in the sort order that should start a new group.
+The latter configuration is useful for ideographic languages
+such as Chinese, Japanese, and Korean.
+You can also define your own collation algorithms and how you
+want mixed Latin-alphabet words sorted.</para>
+<itemizedlist>
+<listitem>
+<para>For a whitepaper describing the extensions, see:
+<link xlink:href="http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf">http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf</link>.
+</para>
+</listitem>
+<listitem>
+<para>To download the extension library, see
+<link xlink:href="http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport">http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</link>.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>To use the kimber method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use Saxon (version 6 or 8) as your XSLT processor.
+</para>
+</listitem>
+<listitem>
+<para>Install and configure the Innodata Isogen library, using
+the documentation that comes with it.
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kimber</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kimber.xsl</filename> or
+<filename>html/autoidx-kimber.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.on.type">
+<refmeta>
+<refentrytitle>index.on.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.type</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">type</tag>
+attribute value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.on.type.frag">
+&lt;xsl:param name="index.on.type" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">type</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching <tag class="attribute">type</tag> attribute value.
+If an <tag>index</tag> has no <tag class="attribute">type</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+
+<para>
+If <literal>index.on.type</literal> is zero, then the
+<tag class="attribute">type</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>For those using DocBook version 4.2 or earlier,
+the <tag class="attribute">type</tag> attribute is not available
+for index terms. However, you can achieve the same
+effect by using the <tag class="attribute">role</tag> attribute
+in the same manner on <tag>indexterm</tag>
+and <tag>index</tag>, and setting the stylesheet parameter
+<parameter>index.on.role</parameter> to a nonzero value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.on.role">
+<refmeta>
+<refentrytitle>index.on.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.role</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">role</tag> value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.on.role.frag">
+&lt;xsl:param name="index.on.role" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">role</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching role value.
+If an <tag>index</tag> has no <tag class="attribute">role</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+<para>
+If <literal>index.on.role</literal> is zero, then the
+<tag class="attribute">role</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>If you are using DocBook version 4.3 or later, you should
+use the <tag class="attribute">type</tag> attribute instead of <tag class="attribute">role</tag>
+on <tag>indexterm</tag> and <tag>index</tag>,
+and set the <parameter>index.on.type</parameter> to a nonzero
+value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.links.to.section">
+<refmeta>
+<refentrytitle>index.links.to.section</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.links.to.section</refname>
+<refpurpose>HTML index entries link to container section title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.links.to.section.frag">
+&lt;xsl:param name="index.links.to.section" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero, then an index entry in an index links
+directly to the location of the
+generated <tag>anchor</tag> that is output
+for the indexterm. If two identical indexterm elements
+exist in the same section, then both entries appear
+in the index with the same title but link to different
+locations.</para>
+
+<para>If non-zero, then an index entry in an index links to the
+section title containing the <tag>indexterm</tag>, rather than
+directly to the <tag>anchor</tag> output for the indexterm.
+Duplicate indexterm entries in the same section are dropped.
+</para>
+
+<para>The default value is 1, so index entries link to
+section titles by default.</para>
+
+<para>In both cases, the link text in an index entry is the
+title of the section containing the indexterm.
+That is because HTML does not have numbered pages.
+It also provides the reader with context information
+for each link.</para>
+
+<para>This parameter lets you choose which style of
+index linking you want. </para>
+
+<itemizedlist>
+<listitem>
+<para>When set to 0, an index entry takes you
+to the precise location of its corresponding indexterm.
+However, if you have a lot of duplicate
+entries in sections, then you have a lot of duplicate
+titles in the index, which makes it more cluttered.
+The reader may not recognize why duplicate titles
+appear until they follow the links. Also, the links
+may land the reader in the middle of a section where the
+section title is not visible, which may also be
+confusing to the reader.</para>
+</listitem>
+<listitem>
+<para>When set to 1, an index entry link is
+less precise, but duplicate titles in the
+index entries are eliminated.
+Landing on the section title location may confirm the reader's
+expectation that a link that
+shows a section title will take them to that section title,
+not a location within the section.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.prefer.titleabbrev">
+<refmeta>
+<refentrytitle>index.prefer.titleabbrev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.prefer.titleabbrev</refname>
+<refpurpose>Should abbreviated titles be used as back references?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.prefer.titleabbrev.frag">
+&lt;xsl:param name="index.prefer.titleabbrev" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if a <tag>titleabbrev</tag> is defined, the abbreviated title
+is used as the link text of a back reference in the index.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.term.separator">
+<refmeta>
+<refentrytitle>index.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.term.separator</refname>
+<refpurpose>Override for punctuation separating an index term
+from its list of page references in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.term.separator.frag">
+&lt;xsl:param name="index.term.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override
+the text to insert between
+the end of an index term and its list of page references.
+Typically that might be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'term-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+fill in the content for this normally empty
+override parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+For fo output, it could be an <tag>fo:leader</tag>
+element to provide space of a specific length, or a dot leader.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.number.separator">
+<refmeta>
+<refentrytitle>index.number.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.number.separator</refname>
+<refpurpose>Override for punctuation separating page numbers in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.number.separator.frag">
+&lt;xsl:param name="index.number.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override the text to insert between
+page references in a formatted index entry. Typically
+that would be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'number-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. This punctuation appears between
+such section titles in an HTML index.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.range.separator">
+<refmeta>
+<refentrytitle>index.range.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.range.separator</refname>
+<refpurpose>Override for punctuation separating the two numbers
+in a page range in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.range.separator.frag">
+&lt;xsl:param name="index.range.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you
+to override the text to insert between
+the two numbers of a page range in an index.
+This parameter is only used by those XSL-FO processors
+that support an extension for generating such page ranges
+(such as XEP).</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'range-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. So there are no page ranges
+and this parameter has no effect.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="dbk_ext" xml:base="../html/param.xml"><title>Stylesheet Extensions</title>
+<refentry version="5.0" id="linenumbering.everyNth">
+<refmeta>
+<refentrytitle>linenumbering.everyNth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.everyNth</refname>
+<refpurpose>Indicate which lines should be numbered</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.everyNth.frag">
+&lt;xsl:param name="linenumbering.everyNth"&gt;5&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, everyNth line will be
+numbered. Note that numbering is one based, not zero based.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="linenumbering.extension">
+<refmeta>
+<refentrytitle>linenumbering.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.extension</refname>
+<refpurpose>Enable the line numbering extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.extension.frag">
+&lt;xsl:param name="linenumbering.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, verbatim environments (<tag>address</tag>, <tag>literallayout</tag>,
+<tag>programlisting</tag>, <tag>screen</tag>, <tag>synopsis</tag>) that specify line numbering will
+have line numbers.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="linenumbering.separator">
+<refmeta>
+<refentrytitle>linenumbering.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.separator</refname>
+<refpurpose>Specify a separator between line numbers and lines</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.separator.frag">
+&lt;xsl:param name="linenumbering.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The separator is inserted between line numbers and lines in the
+verbatim environment. The default value is a single white space.
+ Note the interaction with <parameter>linenumbering.width</parameter>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="linenumbering.width">
+<refmeta>
+<refentrytitle>linenumbering.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.width</refname>
+<refpurpose>Indicates the width of line numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.width.frag">
+&lt;xsl:param name="linenumbering.width"&gt;3&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, line numbers will appear right
+justified in a field "width" characters wide.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="tablecolumns.extension">
+<refmeta>
+<refentrytitle>tablecolumns.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tablecolumns.extension</refname>
+<refpurpose>Enable the table columns extension function</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="tablecolumns.extension.frag">
+&lt;xsl:param name="tablecolumns.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The table columns extension function adjusts the widths of table
+columns in the HTML result to more accurately reflect the specifications
+in the CALS table.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="textinsert.extension">
+ <refmeta>
+ <refentrytitle>textinsert.extension</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>textinsert.extension</refname>
+ <refpurpose>Enables the textinsert extension element</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <programlisting id="textinsert.extension.frag">
+ &lt;xsl:param name="textinsert.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+ </refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>The textinsert extension element inserts the contents of
+ a file into the result tree (as text).</para>
+ <note>
+ <para>To use the textinsert extension element, you must use
+ either Saxon or Xalan as your XSLT processor (it doesn&#8217;t
+ work with xsltproc), along with either the DocBook Saxon
+ extensions or DocBook Xalan extensions (for more
+ information about those extensions, see <link role="tcg" xlink:href="InstallingAProcessor.html#SaxonExtensions">DocBook Saxon Extensions</link> and <link role="tcg" xlink:href="InstallingAProcessor.html#XalanExtensions">DocBook Xalan Extensions</link>), and you must set both
+ the <parameter>use.extensions</parameter> and
+ <parameter>textinsert.extension</parameter> parameters to
+ <literal>1</literal>.</para>
+ <para>As an alternative to using the textinsert element,
+ consider using an Xinclude element with the
+ <literal>parse="text"</literal> attribute and value
+ specified, as detailed in <link role="tcg" xlink:href="ExternalCode.html#XIncludeCode">Using XInclude for text inclusions</link>.</para>
+ </note>
+ </refsection>
+ <refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbhtml-include&#160;href</tag> processing
+ instruction to insert external files &#8212; both files containing
+ plain text and files with markup content (including HTML
+ content).</para>
+ </refsection>
+ <refsection><info><title>More information</title></info>
+ <para>For how-to documentation on inserting contents of
+ external code files and other text files into output, see
+ <link role="tcg" xlink:href="ExternalCode.html">External code files</link>.</para>
+ <para>For guidelines on inserting contents of
+ HTML files into output, see <link role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>.</para>
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="textdata.default.encoding">
+<refmeta>
+<refentrytitle>textdata.default.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textdata.default.encoding</refname>
+<refpurpose>Default encoding of external text files which are included
+using textdata element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="textdata.default.encoding.frag">
+&lt;xsl:param name="textdata.default.encoding"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the encoding of any external text files included using
+<tag>textdata</tag> element. This value is used only when you do
+not specify encoding by the appropriate attribute
+directly on textdata. An empty string is interpreted as the system
+default encoding.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="graphicsize.extension">
+<refmeta>
+<refentrytitle>graphicsize.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphicsize.extension</refname>
+<refpurpose>Enable the getWidth()/getDepth() extension functions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="graphicsize.extension.frag">
+&lt;xsl:param name="graphicsize.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (and if <parameter>use.extensions</parameter> is non-zero
+and if you're using a processor that supports extension functions), the
+<function>getWidth</function> and <function>getDepth</function> functions
+will be used to extract image sizes from graphics.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="graphicsize.use.img.src.path">
+<refmeta>
+<refentrytitle>graphicsize.use.img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphicsize.use.img.src.path</refname>
+<refpurpose>Prepend <parameter>img.src.path</parameter> before
+filenames passed to extension functions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="graphicsize.use.img.src.path.frag">
+&lt;xsl:param name="graphicsize.use.img.src.path" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero <parameter>img.src.path</parameter> parameter will
+be appended before filenames passed to extension functions for
+measuring image dimensions.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.extensions">
+<refmeta>
+<refentrytitle>use.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.extensions</refname>
+<refpurpose>Enable extensions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.extensions.frag">
+&lt;xsl:param name="use.extensions" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions may be used. Each extension is
+further controlled by its own parameter. But if
+<parameter>use.extensions</parameter> is zero, no extensions will
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="labels" xml:base="../html/param.xml"><title>Automatic labelling</title>
+<refentry version="5.0" id="chapter.autolabel">
+<refmeta>
+<refentrytitle>chapter.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chapter.autolabel</refname>
+<refpurpose>Specifies the labeling format for Chapter titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chapter.autolabel.frag">
+&lt;xsl:param name="chapter.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then chapters will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="appendix.autolabel">
+<refmeta>
+<refentrytitle>appendix.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>appendix.autolabel</refname>
+<refpurpose>Specifies the labeling format for Appendix titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="appendix.autolabel.frag">
+&lt;xsl:param name="appendix.autolabel"&gt;A&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then appendices will be numbered using the
+parameter value as the number format if the value matches one of the
+following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperalpha).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="part.autolabel">
+<refmeta>
+<refentrytitle>part.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>part.autolabel</refname>
+<refpurpose>Specifies the labeling format for Part titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="part.autolabel.frag">
+&lt;xsl:param name="part.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then parts will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperroman).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="reference.autolabel">
+<refmeta>
+<refentrytitle>reference.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>reference.autolabel</refname>
+<refpurpose>Specifies the labeling format for Reference titles</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="reference.autolabel.frag">
+ &lt;xsl:param name="reference.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, references will be numbered using the parameter
+ value as the number format if the value matches one of the
+ following:
+</para>
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Any non-zero value other than the above will generate
+the default number format (upperroman).
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="preface.autolabel">
+<refmeta>
+<refentrytitle>preface.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preface.autolabel</refname>
+<refpurpose>Specifices the labeling format for Preface titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="preface.autolabel.frag">&lt;xsl:param name="preface.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero then prefaces will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qandadiv.autolabel">
+<refmeta>
+<refentrytitle>qandadiv.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qandadiv.autolabel</refname>
+<refpurpose>Are divisions in QAndASets enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qandadiv.autolabel.frag">&lt;xsl:param name="qandadiv.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, unlabeled qandadivs will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.autolabel">
+<refmeta>
+<refentrytitle>section.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel</refname>
+<refpurpose>Are sections enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.autolabel.frag">&lt;xsl:param name="section.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), unlabeled sections will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.autolabel.max.depth">
+<refmeta>
+<refentrytitle>section.autolabel.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel.max.depth</refname>
+<refpurpose>The deepest level of sections that are numbered.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.autolabel.max.depth.frag">
+&lt;xsl:param name="section.autolabel.max.depth"&gt;8&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When section numbering is turned on by the
+<parameter>section.autolabel</parameter> parameter, then this
+parameter controls the depth of <tag>section</tag> nesting that is
+numbered. Sections nested to a level deeper than this value will not
+be numbered.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.label.includes.component.label">
+<refmeta>
+<refentrytitle>section.label.includes.component.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.label.includes.component.label</refname>
+<refpurpose>Do section labels include the component label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.label.includes.component.label.frag">&lt;xsl:param name="section.label.includes.component.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, section labels are prefixed with the label of the
+component that contains them.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="label.from.part">
+<refmeta>
+<refentrytitle>label.from.part</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>label.from.part</refname>
+<refpurpose>Renumber components in each part?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="label.from.part.frag">
+&lt;xsl:param name="label.from.part" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>label.from.part</parameter> is non-zero, then
+ numbering of components &#8212; <tag>preface</tag>,
+ <tag>chapter</tag>, <tag>appendix</tag>, and
+ <tag>reference</tag> (when <tag>reference</tag> occurs at the
+ component level) &#8212; is re-started within each
+ <tag>part</tag>.</para>
+<para>If <parameter>label.from.part</parameter> is zero (the
+ default), numbering of components is <emphasis>not</emphasis>
+ re-started within each <tag>part</tag>; instead, components are
+ numbered sequentially throughout each <tag>book</tag>,
+ regardless of whether or not they occur within <tag>part</tag>
+ instances.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="component.label.includes.part.label">
+<refmeta>
+<refentrytitle>component.label.includes.part.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.label.includes.part.label</refname>
+<refpurpose>Do component labels include the part label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="component.label.includes.part.label.frag">&lt;xsl:param name="component.label.includes.part.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, number labels for <tag>chapter</tag>,
+<tag>appendix</tag>, and other component elements are prefixed with
+the label of the part element that contains them. So you might see
+Chapter II.3 instead of Chapter 3. Also, the labels for formal
+elements such as <tag>table</tag> and <tag>figure</tag> will include
+the part label. If there is no part element container, then no prefix
+is generated.
+</para>
+<para>
+This feature is most useful when the
+<parameter>label.from.part</parameter> parameter is turned on.
+In that case, there would be more than one <tag>chapter</tag>
+<quote>1</quote>, and the extra part label prefix will identify
+each chapter unambiguously.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="html" xml:base="../html/param.xml"><title>HTML</title>
+<refentry version="5.0" id="html.base">
+<refmeta>
+<refentrytitle>html.base</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.base</refname>
+<refpurpose>An HTML base URI</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.base.frag">
+&lt;xsl:param name="html.base"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If html.base is set, it is used for the <tag>base</tag> element
+in the <tag>head</tag> of the html documents. The parameter specifies
+the base URL for all relative URLs in the document. This is useful
+for dynamically served html where the base URI needs to be
+shifted.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.stylesheet.type">
+<refmeta>
+<refentrytitle>html.stylesheet.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.stylesheet.type</refname>
+<refpurpose>The type of the stylesheet used in the generated HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.stylesheet.type.frag">&lt;xsl:param name="html.stylesheet.type"&gt;text/css&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The type of the stylesheet to place in the HTML <tag>link</tag> tag.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.stylesheet">
+<refmeta>
+<refentrytitle>html.stylesheet</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.stylesheet</refname>
+<refpurpose>Name of the stylesheet(s) to use in the generated HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.stylesheet.frag">
+&lt;xsl:param name="html.stylesheet"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>html.stylesheet</parameter> parameter is either
+empty, indicating that no stylesheet <tag>link</tag> tag should be
+generated in the html output, or it is a list of one or more
+stylesheet files.</para>
+
+<para>Multiple stylesheets are space-delimited. If you need to
+reference a stylesheet URI that includes a space, encode it with
+<literal>%20</literal>. A separate html <literal>link</literal> element will
+be generated for each stylesheet in the order they are listed in the
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="css.decoration">
+<refmeta>
+<refentrytitle>css.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.decoration</refname>
+<refpurpose>Enable CSS decoration of elements</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="css.decoration.frag">
+&lt;xsl:param name="css.decoration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, then html elements produced by the stylesheet may be
+decorated with <literal>style</literal> attributes. For example, the
+<literal>li</literal> tags produced for list items may include a
+fragment of CSS in the <literal>style</literal> attribute which sets
+the CSS property "list-style-type".
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="spacing.paras">
+<refmeta>
+<refentrytitle>spacing.paras</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>spacing.paras</refname>
+<refpurpose>Insert additional &lt;p&gt; elements for spacing?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="spacing.paras.frag">
+&lt;xsl:param name="spacing.paras" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When non-zero, additional, empty paragraphs are inserted in
+several contexts (for example, around informal figures), to create a
+more pleasing visual appearance in many browsers.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="emphasis.propagates.style">
+<refmeta>
+<refentrytitle>emphasis.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>emphasis.propagates.style</refname>
+<refpurpose>Pass emphasis role attribute through to HTML?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="emphasis.propagates.style.frag">
+&lt;xsl:param name="emphasis.propagates.style" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the <literal>role</literal> attribute of
+<tag>emphasis</tag> elements will be passed through to the HTML as a
+class attribute on a <literal>span</literal> that surrounds the
+emphasis.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="para.propagates.style">
+<refmeta>
+<refentrytitle>para.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>para.propagates.style</refname>
+<refpurpose>Pass para role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="para.propagates.style.frag">
+&lt;xsl:param name="para.propagates.style" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, the role attribute of <tag>para</tag> elements
+will be passed through to the HTML as a class attribute on the
+<tag>p</tag> generated for the paragraph.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="phrase.propagates.style">
+<refmeta>
+<refentrytitle>phrase.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>phrase.propagates.style</refname>
+<refpurpose>Pass phrase role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="phrase.propagates.style.frag">
+&lt;xsl:param name="phrase.propagates.style" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the role attribute of <tag>phrase</tag> elements
+will be passed through to the HTML as a <literal>class</literal>
+attribute on a <literal>span</literal> that surrounds the
+phrase.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="entry.propagates.style">
+<refmeta>
+<refentrytitle>entry.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>entry.propagates.style</refname>
+<refpurpose>Pass entry role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="entry.propagates.style.frag">
+&lt;xsl:param name="entry.propagates.style" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, the role attribute of <tag>entry</tag> elements
+will be passed through to the HTML as a class attribute on the
+<tag>td</tag> or <tag>th</tag> generated for the table
+cell.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.longdesc">
+<refmeta>
+<refentrytitle>html.longdesc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc</refname>
+<refpurpose>Should longdesc URIs be created?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="html.longdesc.frag">
+&lt;xsl:param name="html.longdesc" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, HTML files will be created for the
+<literal>longdesc</literal> attribute. These files
+are created from the <tag>textobject</tag>s in
+<tag>mediaobject</tag>s and
+<tag>inlinemediaobject</tag>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.longdesc.link">
+<refmeta>
+<refentrytitle>html.longdesc.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc.link</refname>
+<refpurpose>Should a link to the longdesc be included in the HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.longdesc.link.frag">
+&lt;xsl:param name="html.longdesc.link" select="$html.longdesc"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links will be created to the
+HTML files created for the
+<literal>longdesc</literal> attribute. It makes no
+sense to enable this option without also enabling the
+<parameter>html.longdesc</parameter> parameter.</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="make.valid.html">
+<refmeta>
+<refentrytitle>make.valid.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.valid.html</refname>
+<refpurpose>Attempt to make sure the HTML output is valid HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.valid.html.frag">
+&lt;xsl:param name="make.valid.html" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>make.valid.html</parameter> is true, the stylesheets take
+extra effort to ensure that the resulting HTML is valid. This may mean that some
+<tag>para</tag> tags are translated into HTML <tag>div</tag>s or
+that other substitutions occur.</para>
+
+<para>This parameter is different from <parameter>html.cleanup</parameter>
+because it changes the resulting markup; it does not use extension functions
+to manipulate result-tree-fragments and is therefore applicable to any
+XSLT processor.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.cleanup">
+<refmeta>
+<refentrytitle>html.cleanup</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cleanup</refname>
+<refpurpose>Attempt to clean up the resulting HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.cleanup.frag">
+&lt;xsl:param name="html.cleanup" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if the <link xlink:href="http://www.exslt.org/">EXSLT</link>
+extensions are supported by your processor, the resulting HTML will be
+<quote>cleaned up</quote>. This improves the chances that the
+resulting HTML will be valid. It may also improve the formatting of
+some elements.</para>
+
+<para>This parameter is different from <parameter>make.valid.html</parameter>
+because it uses extension functions to manipulate result-tree-fragments.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.append">
+<refmeta>
+<refentrytitle>html.append</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.append</refname>
+<refpurpose>Specifies content to append to HTML output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.append.frag">&lt;xsl:param name="html.append"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies content to append to the end of HTML files output by
+the <filename>html/docbook.xsl</filename> stylesheet, after the
+closing <code>&lt;html&gt;</code> tag. You probably don&#8217;t want to set any
+value for this parameter; but if you do, the only value it should ever
+be set to is a newline character: <code>&amp;#x0a;</code> or
+<code>&amp;#10;</code></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="draft.mode">
+<refmeta>
+<refentrytitle>draft.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.mode</refname>
+<refpurpose>Select draft mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="draft.mode.frag">
+&lt;xsl:param name="draft.mode"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects draft mode. If <parameter>draft.mode</parameter> is
+<quote><literal>yes</literal></quote>, the entire document will be treated
+as a draft. If it is <quote><literal>no</literal></quote>, the entire document
+will be treated as a final copy. If it is <quote><literal>maybe</literal></quote>,
+individual sections will be treated as draft or final independently, depending
+on how their <literal>status</literal> attribute is set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="draft.watermark.image">
+<refmeta>
+<refentrytitle>draft.watermark.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.watermark.image</refname>
+<refpurpose>The URI of the image to be used for draft watermarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="draft.watermark.image.frag">
+&lt;xsl:param name="draft.watermark.image"&gt;images/draft.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The image to be used for draft watermarks.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.id.attributes">
+<refmeta>
+<refentrytitle>generate.id.attributes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.id.attributes</refname>
+<refpurpose>Generate ID attributes on container elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.id.attributes.frag">
+&lt;xsl:param name="generate.id.attributes" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the HTML stylesheet will generate ID attributes on
+containers. For example, the markup:</para>
+
+<screen>&lt;section id="foo"&gt;&lt;title&gt;Some Title&lt;/title&gt;
+&lt;para&gt;Some para.&lt;/para&gt;
+&lt;/section&gt;</screen>
+
+<para>might produce:</para>
+
+<screen>&lt;div class="section" id="foo"&gt;
+&lt;h2&gt;Some Title&lt;/h2&gt;
+&lt;p&gt;Some para.&lt;/p&gt;
+&lt;/div&gt;</screen>
+
+<para>The alternative is to generate anchors:</para>
+
+<screen>&lt;div class="section"&gt;
+&lt;h2&gt;&lt;a name="foo"&gt;&lt;/a&gt;Some Title&lt;/h2&gt;
+&lt;p&gt;Some para.&lt;/p&gt;
+&lt;/div&gt;</screen>
+
+<para>Because the <tag class="attribute">name</tag> attribute of
+the <tag>a</tag> element and the <tag class="attribute">id</tag>
+attribute of other tags are both of type <quote>ID</quote>, producing both
+generates invalid documents.</para>
+
+<para>As of version 1.50, you can use this switch to control which type of
+identifier is generated. For backwards-compatibility, generating
+<tag>a</tag> anchors is preferred.</para>
+
+<para>Note: at present, this switch is incompletely implemented.
+Disabling ID attributes will suppress them, but enabling ID attributes
+will not suppress the anchors.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.meta.abstract">
+<refmeta>
+<refentrytitle>generate.meta.abstract</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.meta.abstract</refname>
+<refpurpose>Generate HTML <tag>META</tag> element from <tag>abstract</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.meta.abstract.frag">
+&lt;xsl:param name="generate.meta.abstract" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, document abstracts will be reproduced in the HTML
+<literal>head</literal>, with <literal>&gt;meta name="description" content="..."</literal></para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="make.clean.html">
+<refmeta>
+<refentrytitle>make.clean.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.clean.html</refname>
+<refpurpose>Make HTML conform to modern coding standards</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.clean.html.frag">
+&lt;xsl:param name="make.clean.html" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>make.clean.html</parameter> is true, the stylesheets take
+extra effort to ensure that the resulting HTML is conforms to
+modern HTML coding standards. In addition to eliminating
+excessive and noncompliant coding, it moves presentation
+HTML coding to a CSS stylesheet.</para>
+
+<para>The resulting HTML is dependent on
+CSS for formatting, and so the stylesheet is capable of
+generating a supporting CSS file. The <parameter>docbook.css.source</parameter>
+and <parameter>custom.css.source</parameter> parameters control
+how a CSS file is generated.</para>
+
+<para>If you require your CSS to reside in the HTML
+<tag>head</tag> element, then the <parameter>generate.css.header</parameter>
+can be used to do that.</para>
+
+<para>The <parameter>make.clean.html</parameter> parameter is
+different from <parameter>html.cleanup</parameter>
+because the former changes the resulting markup; it does not use extension functions
+like the latter to manipulate result-tree-fragments,
+and is therefore applicable to any XSLT processor.</para>
+
+<para>If <parameter>make.clean.html</parameter> is set to zero (the default),
+then the stylesheet retains its original
+<quote>old style</quote>
+HTML formatting features.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="docbook.css.source">
+ <refmeta>
+ <refentrytitle>docbook.css.source</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>docbook.css.source</refname>
+ <refpurpose>Name of the default CSS input file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting id="docbook.css.source.frag">&lt;xsl:param name="docbook.css.source"&gt;docbook.css.xml&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+<para>The <parameter>docbook.css.source</parameter> parameter
+specifies the name of the file containing the default DocBook
+CSS styles. Those styles are necessary when the
+<parameter>make.clean.html</parameter> parameter is nonzero.</para>
+
+<para>The file is a well-formed XML file that
+must consist of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+The default value of the parameter (and filename)
+is <literal>docbook.css.xml</literal>.
+The stylesheets ship with the default file. You can substitute
+your own and specify its path in this parameter.</para>
+
+<para>If <parameter>docbook.css.source</parameter> is not blank,
+and <parameter>make.clean.html</parameter> is nonzero, then
+the stylesheet takes the following actions:</para>
+
+<orderedlist>
+ <listitem>
+ <para>The stylesheet uses the XSLT <literal>document()</literal>
+ function to open the file specified by the parameter and
+ load it into a variable.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet forms an output pathname consisting of the
+ value of the <parameter>base.dir</parameter> parameter (if it is set)
+ and the value of <parameter>docbook.css.source</parameter>,
+ with the <literal>.xml</literal> suffix stripped off.
+ </para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet removes the <tag>style</tag>
+ wrapper element and writes just the CSS text content to the output file.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet adds a <tag>link</tag> element to the
+ HTML <tag>HEAD</tag> element to reference the external CSS stylesheet.
+ For example:</para>
+ <programlisting>&lt;link rel="stylesheet" href="docbook.css" type="text/css"&gt;
+ </programlisting>
+ <para>However, if the <parameter>docbook.css.link</parameter>
+ parameter is set to zero, then no <tag>link</tag> is written
+ for the default CSS file. That is useful if a custom
+ CSS file will import the default CSS stylesheet to ensure
+ proper cascading of styles.</para>
+ </listitem>
+</orderedlist>
+
+<para>If the <parameter>docbook.css.source</parameter> parameter
+is changed from its default <literal>docbook.css.xml</literal> to blank,
+then no default CSS is generated. Likewise if the
+<parameter>make.clean.html</parameter> parameter is set to zero,
+then no default CSS is generated. The
+<parameter>custom.css.source</parameter> parameter can be used
+instead to generate a complete custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="docbook.css.link">
+<refmeta>
+<refentrytitle>docbook.css.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>docbook.css.link</refname>
+<refpurpose>Insert a link referencing the default CSS stylesheet</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="docbook.css.link.frag">
+&lt;xsl:param name="docbook.css.link" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating a default
+CSS stylesheet file. The parameters
+<parameter>make.clean.html</parameter> and
+<parameter>docbook.css.source</parameter> control that feature.</para>
+
+<para>Normally if a default CSS file is generated, then
+the stylesheet inserts a <tag>link</tag> tag in the HTML
+<tag>HEAD</tag> element to reference it.
+However, you can omit that <tag>link</tag> reference if
+you set the <parameter>docbook.css.link</parameter> to zero
+(1 is the default).</para>
+
+<para>This parameter is useful when you want to import the
+default CSS into a custom CSS file generated using the
+<parameter>custom.css.source</parameter> parameter.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="custom.css.source">
+ <refmeta>
+ <refentrytitle>custom.css.source</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>custom.css.source</refname>
+ <refpurpose>Name of a custom CSS input file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting id="custom.css.source.frag">&lt;xsl:param name="custom.css.source"&gt;&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+<para>The <parameter>custom.css.source</parameter>
+parameter enables you to add CSS styles to DocBook's
+HTML output.</para>
+
+<para>The parameter
+specifies the name of a file containing custom
+CSS styles. The file must be a well-formed XML file that
+consists of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+For example:</para>
+<programlisting>&lt;?xml version="1.0"?&gt;
+&lt;style&gt;
+h2 {
+ font-weight: bold;
+ color: blue;
+}
+...
+&lt;/style&gt;
+</programlisting>
+
+<para>The filename specified by the parameter
+should have a <literal>.xml</literal>
+filename suffix, although that is not required.
+The default value of this parameter is blank.</para>
+
+<para>If <parameter>custom.css.source</parameter> is not blank, then
+the stylesheet takes the following actions.
+These actions take place regardless of the value of
+the <parameter>make.clean.html</parameter> parameter.</para>
+
+<orderedlist>
+ <listitem>
+ <para>The stylesheet uses the XSLT <literal>document()</literal>
+ function to open the file specified by the parameter and
+ load it into a variable.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet forms an output pathname consisting of the
+ value of the <parameter>base.dir</parameter> parameter (if it is set)
+ and the value of <parameter>custom.css.source</parameter>,
+ with the <literal>.xml</literal> suffix stripped off.
+ </para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet removes the <tag>style</tag>
+ wrapper element and writes just the CSS text content to the output file.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet adds a <tag>link</tag> element to the
+ HTML <tag>HEAD</tag> element to reference this external CSS stylesheet.
+ For example:
+ <programlisting>&lt;link rel="stylesheet" href="custom.css" type="text/css"&gt;
+ </programlisting>
+ </para>
+ </listitem>
+</orderedlist>
+
+
+
+<para>If the <parameter>make.clean.html</parameter> parameter is nonzero
+(the default is zero),
+and if the <parameter>docbook.css.source</parameter> parameter
+is not blank (the default is not blank),
+then the stylesheet will also generate a default CSS file
+and add a <tag>link</tag> tag to reference it.
+The <tag>link</tag> to the custom CSS comes after the
+<tag>link</tag> to the default, so it should cascade properly
+in most browsers.
+If you do not want two <tag>link</tag> tags, and
+instead want your custom CSS to import the default generated
+CSS file, then do the following:
+</para>
+
+<orderedlist>
+ <listitem>
+ <para>Add a line like the following to your custom CSS source file:</para>
+ <programlisting>@import url("docbook.css")
+ </programlisting>
+ </listitem>
+ <listitem>
+ <para>Set the <parameter>docbook.css.link</parameter> parameter
+ to zero. This will omit the <tag>link</tag> tag
+ that references the default CSS file.</para>
+ </listitem>
+</orderedlist>
+
+<para>If you set <parameter>make.clean.html</parameter> to nonzero but
+you do not want the default CSS generated, then also set
+the <parameter>docbook.css.source</parameter> parameter to blank.
+Then no default CSS will be generated, and so
+all CSS styles must come from your custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.css.header">
+<refmeta>
+<refentrytitle>generate.css.header</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.css.header</refname>
+<refpurpose>Insert generated CSS styles in HEAD element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.css.header.frag">
+&lt;xsl:param name="generate.css.header" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating both default
+and custom CSS stylesheet files. The parameters
+<parameter>make.clean.html</parameter>,
+<parameter>docbook.css.source</parameter>, and
+<parameter>custom.css.source</parameter> control that feature.</para>
+
+<para>If you require that CSS styles reside in the HTML
+<tag>HEAD</tag> element instead of external CSS files,
+then set the <parameter>generate.css.header</parameter>
+parameter to nonzero (it is zero by default).
+Then instead of generating the CSS in external files,
+they are wrapped in <tag>style</tag> elements in
+the <tag>HEAD</tag> element of each HTML output file.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="xslt" xml:base="../html/param.xml"><title>XSLT Processing</title>
+<refentry version="5.0" id="rootid">
+<refmeta>
+<refentrytitle>rootid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>rootid</refname>
+<refpurpose>Specify the root element to format</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="rootid.frag">
+&lt;xsl:param name="rootid"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>rootid</parameter> is not empty, it must be the
+value of an ID that occurs in the document being formatted. The entire
+document will be loaded and parsed, but formatting will begin at the
+element identified, rather than at the root. For example, this allows
+you to process only <tag>chapter</tag> 4 of a <tag>book</tag>.</para>
+<para>Because the entire document is available to the processor, automatic
+numbering, cross references, and other dependencies are correctly
+resolved.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="suppress.navigation">
+<refmeta>
+<refentrytitle>suppress.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.navigation</refname>
+<refpurpose>Disable header and footer navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="suppress.navigation.frag">
+&lt;xsl:param name="suppress.navigation" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, header and footer navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="suppress.header.navigation">
+<refmeta>
+<refentrytitle>suppress.header.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.header.navigation</refname>
+<refpurpose>Disable header navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="suppress.header.navigation.frag">
+&lt;xsl:param name="suppress.header.navigation" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, header navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="suppress.footer.navigation">
+<refmeta>
+<refentrytitle>suppress.footer.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.footer.navigation</refname>
+<refpurpose>Disable footer navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="suppress.footer.navigation.frag">&lt;xsl:param name="suppress.footer.navigation"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, footer navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="header.rule">
+<refmeta>
+<refentrytitle>header.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.rule</refname>
+<refpurpose>Rule under headers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="header.rule.frag">
+&lt;xsl:param name="header.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn below the page headers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footer.rule">
+<refmeta>
+<refentrytitle>footer.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.rule</refname>
+<refpurpose>Rule over footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footer.rule.frag">
+&lt;xsl:param name="footer.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn above the page footers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="id.warnings">
+<refmeta>
+<refentrytitle>id.warnings</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>id.warnings</refname>
+<refpurpose>Should warnings be generated for titled elements without IDs?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="id.warnings.frag">
+&lt;xsl:param name="id.warnings" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the stylesheet will issue a warning for any element
+(other than the root element) which has a <tag>title</tag> but does not have an
+ID.</para>
+</refsection>
+</refentry>
+
+</reference><reference id="meta" xml:base="../html/param.xml"><title>Meta/*Info and Titlepages</title>
+<refentry version="5.0" id="inherit.keywords">
+<refmeta>
+<refentrytitle>inherit.keywords</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>inherit.keywords</refname>
+<refpurpose>Inherit keywords from ancestor elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="inherit.keywords.frag">
+&lt;xsl:param name="inherit.keywords" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>inherit.keywords</parameter>
+is non-zero, the keyword <literal>meta</literal> for each HTML
+<literal>head</literal> element will include all of the keywords from
+ancestor elements. Otherwise, only the keywords from the current section
+will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="make.single.year.ranges">
+<refmeta>
+<refentrytitle>make.single.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.single.year.ranges</refname>
+<refpurpose>Print single-year ranges (e.g., 1998-1999)</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.single.year.ranges.frag">
+&lt;xsl:param name="make.single.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, year ranges that span a single year will be printed
+in range notation (1998-1999) instead of discrete notation
+(1998, 1999).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="make.year.ranges">
+<refmeta>
+<refentrytitle>make.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.year.ranges</refname>
+<refpurpose>Collate copyright years into ranges?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.year.ranges.frag">&lt;xsl:param name="make.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple copyright <tag>year</tag> elements will be
+collated into ranges.
+This works only if each year number is put into a separate
+year element. The copyright element permits multiple
+year elements. If a year element contains a dash or
+a comma, then that year element will not be merged into
+any range.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="author.othername.in.middle">
+<refmeta>
+<refentrytitle>author.othername.in.middle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>author.othername.in.middle</refname>
+<refpurpose>Is <tag>othername</tag> in <tag>author</tag> a
+middle name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="author.othername.in.middle.frag">
+&lt;xsl:param name="author.othername.in.middle" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag>othername</tag> of an <tag>author</tag>
+appears between the <tag>firstname</tag> and
+<tag>surname</tag>. Otherwise, <tag>othername</tag>
+is suppressed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="blurb.on.titlepage.enabled">
+<refmeta>
+<refentrytitle>blurb.on.titlepage.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>blurb.on.titlepage.enabled</refname>
+<refpurpose>Display personblurb and authorblurb on title pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="blurb.on.titlepage.enabled.frag">
+&lt;xsl:param name="blurb.on.titlepage.enabled" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, output from <tag>authorblurb</tag> and
+<tag>personblurb</tag> elements is displayed on title pages. If zero
+(the default), output from those elements is suppressed on title pages
+(unless you are using a <literal>titlepage</literal> customization
+that causes them to be included).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="contrib.inline.enabled">
+<refmeta>
+<refentrytitle>contrib.inline.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>contrib.inline.enabled</refname>
+<refpurpose>Display contrib output inline?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="contrib.inline.enabled.frag">&lt;xsl:param name="contrib.inline.enabled"&gt;1&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), output of the <tag>contrib</tag> element is
+displayed as inline content rather than as block content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="editedby.enabled">
+<refmeta>
+<refentrytitle>editedby.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>editedby.enabled</refname>
+<refpurpose>Display &#8220;Edited by&#8221; heading above editor name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="editedby.enabled.frag">&lt;xsl:param name="editedby.enabled"&gt;1&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a localized <emphasis role="bold">Edited
+by</emphasis> heading is displayed above editor names in output of the
+<tag>editor</tag> element.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="abstract.notitle.enabled">
+<refmeta>
+<refentrytitle>abstract.notitle.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.notitle.enabled</refname>
+<refpurpose>Suppress display of abstract titles?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+ <programlisting id="abstract.notitle.enabled.frag">&lt;xsl:param name="abstract.notitle.enabled" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, in output of the <tag>abstract</tag> element on titlepages,
+display of the abstract title is suppressed.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="othercredit.like.author.enabled">
+<refmeta>
+<refentrytitle>othercredit.like.author.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>othercredit.like.author.enabled</refname>
+<refpurpose>Display othercredit in same style as author?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="othercredit.like.author.enabled.frag">&lt;xsl:param name="othercredit.like.author.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, output of the
+<tag>othercredit</tag> element on titlepages is displayed in
+the same style as <tag>author</tag> and
+<tag>editor</tag> output. If zero then
+<tag>othercredit</tag> output is displayed using a style
+different than that of <tag>author</tag> and
+<tag>editor</tag>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.legalnotice.link">
+<refmeta>
+<refentrytitle>generate.legalnotice.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.legalnotice.link</refname>
+<refpurpose>Write legalnotice to separate chunk and generate link?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.legalnotice.link.frag">&lt;xsl:param name="generate.legalnotice.link" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>generate.legalnotice.link</parameter>
+is non-zero, the stylesheet:
+
+<itemizedlist>
+ <listitem>
+ <para>writes the contents of <tag>legalnotice</tag> to a separate
+ HTML file</para>
+ </listitem>
+ <listitem>
+ <para>inserts a hyperlink to the <tag>legalnotice</tag> file</para>
+ </listitem>
+ <listitem>
+ <para>adds (in the HTML <literal>head</literal>) either a single
+ <literal>link</literal> or element or multiple
+ <literal>link</literal> elements (depending on the value of the
+ <parameter>html.head.legalnotice.link.multiple</parameter>
+ parameter), with the value or values derived from the
+ <parameter>html.head.legalnotice.link.types</parameter>
+ parameter</para>
+ </listitem>
+ </itemizedlist>
+
+ Otherwise, if <parameter>generate.legalnotice.link</parameter> is
+ zero, <tag>legalnotice</tag> contents are rendered on the title
+ page.</para>
+
+<para>The name of the separate HTML file is computed as follows:
+
+<orderedlist>
+<listitem>
+ <para>If a filename is given by the <tag class="xmlpi">dbhtml filename</tag>
+processing instruction, that filename is used.</para>
+</listitem>
+<listitem>
+ <para>If the legalnotice has an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, and if <parameter>use.id.as.filename</parameter> != 0, the filename
+is the concatenation of the id value and the value of the <parameter>html.ext</parameter>
+parameter.</para>
+</listitem>
+<listitem>
+ <para>If the legalnotice does not have an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+ attribute, or if <parameter>use.id.as.filename</parameter> = 0, the filename is the concatenation of "ln-",
+auto-generated id value, and <parameter>html.ext</parameter> value.
+ </para>
+</listitem>
+</orderedlist>
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.revhistory.link">
+<refmeta>
+<refentrytitle>generate.revhistory.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.revhistory.link</refname>
+<refpurpose>Write revhistory to separate chunk and generate link?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.revhistory.link.frag">&lt;xsl:param name="generate.revhistory.link" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the contents of <tag>revhistory</tag> are written
+to a separate HTML file and a link to the file is
+generated. Otherwise, <tag>revhistory</tag> contents are rendered on
+the title page.</para>
+
+<para>The name of the separate HTML file is computed as follows:
+
+<orderedlist>
+<listitem>
+ <para>If a filename is given by the <tag class="xmlpi">dbhtml filename</tag> processing instruction,
+that filename is used.</para>
+</listitem>
+<listitem>
+ <para>If the revhistory has an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, and if <parameter>use.id.as.filename</parameter> != 0, the filename is the concatenation of
+the id value and the value of the <parameter>html.ext</parameter> parameter.</para>
+</listitem>
+<listitem>
+ <para>If the revhistory does not have an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, or if <parameter>use.id.as.filename</parameter> = 0, the filename is the concatenation of "rh-",
+auto-generated id value, and <parameter>html.ext</parameter> value.
+ </para>
+</listitem>
+</orderedlist>
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.head.legalnotice.link.types">
+<refmeta>
+<refentrytitle>html.head.legalnotice.link.types</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.head.legalnotice.link.types</refname>
+<refpurpose>Specifies link types for legalnotice link in html head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.head.legalnotice.link.types.frag">
+&lt;xsl:param name="html.head.legalnotice.link.types"&gt;copyright&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>html.head.legalnotice.link.types</parameter> is a
+space-separated list of link types, as described in <link xlink:href="http://www.w3.org/TR/html401/types.html#type-links">Section 6.12
+of the HTML 4.01 specification</link>. If the value of the
+<parameter>generate.legalnotice.link</parameter> parameter is
+non-zero, then the stylesheet generates (in the
+<literal>head</literal> section of the HTML source) either a single
+HTML <literal>link</literal> element or, if the value of the
+<parameter>html.head.legalnotice.link.multiple</parameter> is
+non-zero, one <literal>link</literal> element for each link type
+specified. Each <literal>link</literal> has the following attributes:
+
+<itemizedlist>
+ <listitem>
+ <para>a <tag class="attribute">rel</tag> attribute whose
+ value is derived from the value of
+ <parameter>html.head.legalnotice.link.types</parameter></para>
+ </listitem>
+ <listitem>
+ <para>an <tag class="attribute">href</tag> attribute whose
+ value is set to the URL of the file containing the
+ <tag>legalnotice</tag></para>
+ </listitem>
+ <listitem>
+ <para>a <tag class="attribute">title</tag> attribute whose
+ value is set to the title of the corresponding
+ <tag>legalnotice</tag> (or a title programatically
+ determined by the stylesheet)</para>
+ </listitem>
+</itemizedlist>
+
+For example:
+
+<screen> &lt;link rel="license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+</para>
+
+<refsection><info><title>About the default value</title></info>
+
+ <para>In an ideal world, the default value of
+ <parameter>html.head.legalnotice.link.types</parameter> would
+ probably be &#8220;<literal>license</literal>&#8221;, since the content of the
+ DocBook <tag>legalnotice</tag> is typically license
+ information, not copyright information. However, the default value
+ is &#8220;<literal>copyright</literal>&#8221; for pragmatic reasons: because
+ that&#8217;s among the set of &#8220;recognized link types&#8221; listed in <link xlink:href="http://www.w3.org/TR/html401/types.html#type-links">Section
+ 6.12 of the HTML 4.01 specification</link>, and because certain
+ browsers and browser extensions are preconfigured to recognize that
+ value.</para>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.head.legalnotice.link.multiple">
+<refmeta>
+<refentrytitle>html.head.legalnotice.link.multiple</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.head.legalnotice.link.multiple</refname>
+<refpurpose>Generate multiple link instances in html head for legalnotice?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.head.legalnotice.link.multiple.frag">
+&lt;xsl:param name="html.head.legalnotice.link.multiple" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>html.head.legalnotice.link.multiple</parameter> is
+non-zero and the value of
+<parameter>html.head.legalnotice.link.types</parameter> contains
+multiple link types, then the stylesheet generates (in the
+<literal>head</literal> section of the HTML source) one
+<literal>link</literal> element for each link type specified. For
+example, if the value of
+<parameter>html.head.legalnotice.link.types</parameter> is
+&#8220;<literal>copyright license</literal>&#8221;:
+
+<screen> &lt;link rel="copyright" href="ln-id2524073.html" title="Legal Notice"&gt;
+ &lt;link rel="license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+
+ Otherwise, the stylesheet generates generates a single
+ <literal>link</literal> instance; for example:
+
+<screen> &lt;link rel="copyright license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+
+</para>
+</refsection>
+</refentry>
+
+</reference><reference id="refentry" xml:base="../html/param.xml"><title>Reference Pages</title>
+<refentry version="5.0" id="funcsynopsis.decoration">
+<refmeta>
+<refentrytitle>funcsynopsis.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.decoration</refname>
+<refpurpose>Decorate elements of a <tag>funcsynopsis</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="funcsynopsis.decoration.frag">
+&lt;xsl:param name="funcsynopsis.decoration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, elements of the <tag>funcsynopsis</tag> will be
+decorated (e.g. rendered as bold or italic text). The decoration is controlled by
+templates that can be redefined in a customization layer.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="funcsynopsis.style">
+<refmeta>
+<refentrytitle>funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="funcsynopsis.style.frag">&lt;xsl:param name="funcsynopsis.style"&gt;kr&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>funcsynopsis.style</parameter> is <literal>ansi</literal>,
+ANSI-style function synopses are generated for a
+<tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="function.parens">
+<refmeta>
+<refentrytitle>function.parens</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>function.parens</refname>
+<refpurpose>Generate parens after a function?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="function.parens.frag">
+&lt;xsl:param name="function.parens" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the formatting of a <tag>function</tag> element
+will include generated parentheses.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.generate.name">
+<refmeta>
+<refentrytitle>refentry.generate.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.name</refname>
+<refpurpose>Output NAME header before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.generate.name.frag">
+&lt;xsl:param name="refentry.generate.name" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a "NAME" section title is output before the list
+of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.title</parameter> are mutually
+exclusive. This means that if you change this parameter to zero, you
+should set <parameter>refentry.generate.title</parameter> to non-zero unless
+you want get quite strange output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.generate.title">
+<refmeta>
+<refentrytitle>refentry.generate.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.title</refname>
+<refpurpose>Output title before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.generate.title.frag">
+&lt;xsl:param name="refentry.generate.title" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the reference page title or first name is
+output before the list of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.name</parameter> are mutually exclusive.
+This means that if you change this parameter to non-zero, you
+should set <parameter>refentry.generate.name</parameter> to zero unless
+you want get quite strange output.</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.xref.manvolnum">
+<refmeta>
+<refentrytitle>refentry.xref.manvolnum</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.xref.manvolnum</refname>
+<refpurpose>Output <tag>manvolnum</tag> as part of
+<tag>refentry</tag> cross-reference?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.xref.manvolnum.frag">
+&lt;xsl:param name="refentry.xref.manvolnum" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>if non-zero, the <tag>manvolnum</tag> is used when cross-referencing
+<tag>refentry</tag>s, either with <tag>xref</tag>
+or <tag>citerefentry</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="citerefentry.link">
+<refmeta>
+<refentrytitle>citerefentry.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>citerefentry.link</refname>
+<refpurpose>Generate URL links when cross-referencing RefEntrys?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="citerefentry.link.frag">
+&lt;xsl:param name="citerefentry.link" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a web link will be generated, presumably
+to an online man-&gt;HTML gateway. The text of the link is
+generated by the <literal>generate.citerefentry.link</literal> template.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.separator">
+<refmeta>
+<refentrytitle>refentry.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.separator</refname>
+<refpurpose>Generate a separator between consecutive RefEntry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.separator.frag">
+&lt;xsl:param name="refentry.separator" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, a separator will be generated between consecutive
+reference pages.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refclass.suppress">
+<refmeta>
+<refentrytitle>refclass.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refclass.suppress</refname>
+<refpurpose>Suppress display of refclass contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refclass.suppress.frag">
+&lt;xsl:param name="refclass.suppress" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refclass.suppress</parameter> is
+non-zero, then display of <tag>refclass</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="tables" xml:base="../html/param.xml"><title>Tables</title>
+<refentry version="5.0" id="default.table.width">
+<refmeta>
+<refentrytitle>default.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.width</refname>
+<refpurpose>The default width of tables</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="default.table.width.frag">
+&lt;xsl:param name="default.table.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, this value will be used for the
+<literal>width</literal> attribute on <tag>table</tag>s that do not specify an
+alternate width (with the <tag class="xmlpi">dbhtml table-width</tag> or
+<tag class="xmlpi">dbfo table-width</tag> processing instruction).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="nominal.table.width">
+<refmeta>
+<refentrytitle>nominal.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.table.width</refname>
+<refpurpose>The (absolute) nominal width of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="nominal.table.width.frag">
+&lt;xsl:param name="nominal.table.width"&gt;6in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In order to convert CALS column widths into HTML column widths, it
+is sometimes necessary to have an absolute table width to use for conversion
+of mixed absolute and relative widths. This value must be an absolute
+length (not a percentage).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.borders.with.css">
+<refmeta>
+<refentrytitle>table.borders.with.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.borders.with.css</refname>
+<refpurpose>Use CSS to specify table, row, and cell borders?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.borders.with.css.frag">
+&lt;xsl:param name="table.borders.with.css" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, CSS will be used to draw table borders.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.cell.border.style">
+<refmeta>
+<refentrytitle>table.cell.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.style</refname>
+<refpurpose>Specifies the border style of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.cell.border.style.frag">
+&lt;xsl:param name="table.cell.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table cells.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.cell.border.thickness">
+<refmeta>
+<refentrytitle>table.cell.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.thickness</refname>
+<refpurpose>Specifies the thickness of table cell borders</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.cell.border.thickness.frag">
+&lt;xsl:param name="table.cell.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, specifies the thickness of borders on table
+cells. The units are points. See <link xlink:href="http://www.w3.org/TR/CSS21/box.html#border-width-properties">
+CSS</link></para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.cell.border.color">
+<refmeta>
+<refentrytitle>table.cell.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.color</refname>
+<refpurpose>Specifies the border color of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.cell.border.color.frag">
+&lt;xsl:param name="table.cell.border.color"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the color of table cell borders. If non-zero, the value is used
+for the border coloration. See <link xlink:href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS</link>. A
+<literal>color</literal> is either a keyword or a numerical RGB specification.
+Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon,
+navy, olive, orange, purple, red, silver, teal, white, and
+yellow.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.frame.border.style">
+<refmeta>
+<refentrytitle>table.frame.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.style</refname>
+<refpurpose>Specifies the border style of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.frame.border.style.frag">
+&lt;xsl:param name="table.frame.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.frame.border.thickness">
+<refmeta>
+<refentrytitle>table.frame.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.thickness</refname>
+<refpurpose>Specifies the thickness of the frame border</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.frame.border.thickness.frag">
+&lt;xsl:param name="table.frame.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the thickness of the border on the table's frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.frame.border.color">
+<refmeta>
+<refentrytitle>table.frame.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.color</refname>
+<refpurpose>Specifies the border color of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.frame.border.color.frag">
+&lt;xsl:param name="table.frame.border.color"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border color of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.table.frame">
+<refmeta>
+<refentrytitle>default.table.frame</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.frame</refname>
+<refpurpose>The default framing of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.table.frame.frag">
+&lt;xsl:param name="default.table.frame"&gt;all&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This value will be used when there is no frame attribute on the
+table. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.cellspacing">
+<refmeta>
+<refentrytitle>html.cellspacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cellspacing</refname>
+<refpurpose>Default value for cellspacing in HTML tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.cellspacing.frag">
+&lt;xsl:param name="html.cellspacing"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, this value will be used as the default cellspacing
+value in HTML tables. nn for pixels or nn% for percentage
+length. E.g. 5 or 5%</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.cellpadding">
+<refmeta>
+<refentrytitle>html.cellpadding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cellpadding</refname>
+<refpurpose>Default value for cellpadding in HTML tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.cellpadding.frag">
+&lt;xsl:param name="html.cellpadding"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, this value will be used as the default cellpadding value
+in HTML tables. nn for pixels or nn% for percentage length. E.g. 5 or
+5%</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="qa" xml:base="../html/param.xml"><title>QAndASet</title>
+<refentry version="5.0" id="qanda.defaultlabel">
+<refmeta>
+<refentrytitle>qanda.defaultlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">number</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">qanda</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.defaultlabel</refname>
+<refpurpose>Sets the default for defaultlabel on QandASet.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.defaultlabel.frag">
+&lt;xsl:param name="qanda.defaultlabel"&gt;number&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If no <literal>defaultlabel</literal> attribute is specified on
+a <tag>qandaset</tag>, this value is used. It is generally one of the legal
+values for the defaultlabel attribute (<literal>none</literal>,
+<literal>number</literal> or
+<literal>qanda</literal>), or one of the additional stylesheet-specific values
+(<literal>qnumber</literal> or <literal>qnumberanda</literal>).
+The default value is 'number'.
+</para>
+<para>The values are rendered as follows:</para>
+<variablelist>
+<varlistentry><term><literal>qanda</literal></term>
+<listitem>
+<para><tag>question</tag>s are labeled "Q:" and
+<tag>answer</tag>s are labeled "A:". </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>number</literal></term>
+<listitem>
+<para>The questions are enumerated and the answers
+are not labeled. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumber</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and answers are not
+labeled.
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumberanda</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and
+the answers are labeled "A:".
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>none</literal></term>
+<listitem>
+<para>No distinguishing label precedes Questions or Answers.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.inherit.numeration">
+<refmeta>
+<refentrytitle>qanda.inherit.numeration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.inherit.numeration</refname>
+<refpurpose>Does enumeration of QandASet components inherit the numeration of parent elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.inherit.numeration.frag">
+&lt;xsl:param name="qanda.inherit.numeration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, numbered <tag>qandadiv</tag> elements and
+<tag>question</tag> and <tag>answer</tag> inherit the enumeration of
+the ancestors of the <tag>qandaset</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.in.toc">
+<refmeta>
+<refentrytitle>qanda.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.in.toc</refname>
+<refpurpose>Should qandaentry questions appear in
+the document table of contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.in.toc.frag">&lt;xsl:param name="qanda.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), then the generated table of contents
+for a document will include <tag>qandaset</tag> titles,
+<tag>qandadiv</tag> titles,
+and <tag>question</tag> elements. The default value (zero) excludes
+them from the TOC.
+</para>
+<para>This parameter does not affect any tables of contents
+that may be generated inside a qandaset or qandadiv.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.nested.in.toc">
+<refmeta>
+<refentrytitle>qanda.nested.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.nested.in.toc</refname>
+<refpurpose>Should nested answer/qandaentry instances appear in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.nested.in.toc.frag">
+&lt;xsl:param name="qanda.nested.in.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, instances of <tag>qandaentry</tag>
+that are children of <tag>answer</tag> elements are shown in
+the TOC.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="links" xml:base="../html/param.xml"><title>Linking</title>
+<refentry version="5.0" id="target.database.document">
+<refmeta>
+<refentrytitle>target.database.document</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>target.database.document</refname>
+<refpurpose>Name of master database file for resolving
+olinks</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="target.database.document.frag">
+ &lt;xsl:param name="target.database.document"&gt;olinkdb.xml&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+To resolve olinks between documents, the stylesheets use a master
+database document that identifies the target datafiles for all the
+documents within the scope of the olinks. This parameter value is the
+URI of the master document to be read during processing to resolve
+olinks. The default value is <filename>olinkdb.xml</filename>.</para>
+
+<para>The data structure of the file is defined in the
+<filename>targetdatabase.dtd</filename> DTD. The database file
+provides the high level elements to record the identifiers, locations,
+and relationships of documents. The cross reference data for
+individual documents is generally pulled into the database using
+system entity references or XIncludes. See also
+<parameter>targets.filename</parameter>. </para> </refsection>
+</refentry>
+
+<refentry version="5.0" id="targets.filename">
+<refmeta>
+<refentrytitle>targets.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>targets.filename</refname>
+<refpurpose>Name of cross reference targets data file</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="targets.filename.frag">
+&lt;xsl:param name="targets.filename"&gt;target.db&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter lets you change the name of the generated
+file from the default name <filename>target.db</filename>.
+The name must agree with that used in the target database
+used to resolve olinks during processing.
+See also <parameter>target.database.document</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.base.uri">
+<refmeta>
+<refentrytitle>olink.base.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.base.uri</refname>
+<refpurpose>Base URI used in olink hrefs</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="olink.base.uri.frag">
+&lt;xsl:param name="olink.base.uri"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for resolving olinks, it
+may be necessary to prepend a base URI to each target's href. This
+parameter lets you set that base URI when cross reference data is
+collected. This feature is needed when you want to link to a document
+that is processed without chunking. The output filename for such a
+document is not known to the XSL stylesheet; the only target
+information consists of fragment identifiers such as
+<literal>#idref</literal>. To enable the resolution of olinks between
+documents, you should pass the name of the HTML output file as the
+value of this parameter. Then the hrefs recorded in the cross
+reference data collection look like
+<literal>outfile.html#idref</literal>, which can be reached as links
+from other documents.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.local.olink.style">
+<refmeta>
+<refentrytitle>use.local.olink.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.local.olink.style</refname>
+<refpurpose>Process olinks using xref style of current
+document</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="use.local.olink.style.frag">
+&lt;xsl:param name="use.local.olink.style" select="0"&gt;&lt;/xsl:param&gt; </programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the <parameter>use.local.olink.style</parameter> parameter is set to non-zero, then instead the cross
+reference string is formed again from the target title, number, and
+element name, using the stylesheet processing the targeting document.
+Then olinks will match the xref style in the targeting document
+rather than in the target document. If both documents are processed
+with the same stylesheet, then the results will be the same.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="current.docid">
+<refmeta>
+<refentrytitle>current.docid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>current.docid</refname>
+<refpurpose>targetdoc identifier for the document being
+processed</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="current.docid.frag">
+&lt;xsl:param name="current.docid"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the <literal>targetdoc</literal> identifiers for both documents, as they appear in the <parameter>target.database.document</parameter> database file. This parameter passes to the stylesheet
+the targetdoc identifier of the current document, since that
+identifier does not appear in the document itself. </para>
+<para>This parameter can also be used for print output. If an olink's <literal>targetdoc</literal> id differs from the <literal>current.docid</literal>, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also <parameter>olink.doctitle</parameter> to enable that feature.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.doctitle">
+<refmeta>
+<refentrytitle>olink.doctitle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.doctitle</refname>
+<refpurpose>show the document title for external olinks?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting id="olink.doctitle.frag">
+&lt;xsl:param name="olink.doctitle"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved, the generated text
+may not make it clear that the reference is to another document.
+It is possible for the stylesheets to append the other document's
+title to external olinks. For this to happen, two parameters must
+be set.</para>
+<itemizedlist>
+<listitem>
+<para>This <parameter>olink.doctitle</parameter> parameter
+should be set to either <literal>yes</literal> or <literal>maybe</literal>
+to enable this feature.
+</para>
+</listitem>
+<listitem>
+<para>And you should also set the <parameter>current.docid</parameter>
+parameter to the document id for the document currently
+being processed for output.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>
+Then if an olink's <literal>targetdoc</literal> id differs from
+the <literal>current.docid</literal> value, the stylesheet knows
+that it is a reference to another document and can
+append the target document's
+title to the generated olink text. </para>
+
+<para>The text for the target document's title is copied from the
+olink database from the <tag>ttl</tag> element
+of the top-level <tag>div</tag> for that document.
+If that <tag>ttl</tag> element is missing or empty,
+no title is output.
+</para>
+
+<para>The supported values for <parameter>olink.doctitle</parameter> are:
+</para>
+<variablelist>
+<varlistentry>
+<term><literal>yes</literal></term>
+<listitem>
+<para>
+Always insert the title to the target document if it is not
+the current document.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no</literal></term>
+<listitem>
+<para>
+Never insert the title to the target document, even if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>maybe</literal></term>
+<listitem>
+<para>
+Only insert the title to the target document, if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>An <tag class="attribute">xrefstyle</tag> attribute
+may override the global setting for individual olinks.
+The following values are supported in an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>select:</literal> syntax:
+</para>
+
+<variablelist>
+<varlistentry>
+<term><literal>docname</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docname</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>docnamelong</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docnamelong</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>nodocname</literal></term>
+<listitem>
+<para>
+Omit the target document name even if
+the value of <parameter>olink.doctitle</parameter>
+is <literal>yes</literal>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>Another way of inserting the target document name
+for a single olink is to employ an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>template:</literal> syntax.
+The <literal>%o</literal> placeholder (the letter o, not zero)
+in such a template
+will be filled in with the target document's title when it is processed.
+This will occur regardless of
+the value of <parameter>olink.doctitle</parameter>.
+</para>
+<para>Note that prior to version 1.66 of the XSL stylesheets,
+the allowed values for this parameter were 0 and 1. Those
+values are still supported and mapped to 'no' and 'yes', respectively.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.debug">
+<refmeta>
+<refentrytitle>olink.debug</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.debug</refname>
+<refpurpose>Turn on debugging messages for olinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="olink.debug.frag">
+&lt;xsl:param name="olink.debug" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then each olink will generate several
+messages about how it is being resolved during processing.
+This is useful when an olink does not resolve properly
+and the standard error messages are not sufficient to
+find the problem.
+</para>
+
+<para>You may need to read through the olink XSL templates
+to understand the context for some of the debug messages.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.properties">
+<refmeta>
+<refentrytitle>olink.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.properties</refname>
+<refpurpose>Properties associated with the cross-reference
+text of an olink.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="olink.properties.frag">
+&lt;xsl:attribute-set name="olink.properties"&gt;
+ &lt;xsl:attribute name="show-destination"&gt;replace&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This <literal>attribute set</literal> is applied to the
+<literal>fo:basic-link</literal> element of an olink. It is not applied to the
+optional page number or optional title of the external
+document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.lang.fallback.sequence">
+<refmeta>
+<refentrytitle>olink.lang.fallback.sequence</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.lang.fallback.sequence</refname>
+<refpurpose>look up translated documents if olink not found?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting id="olink.lang.fallback.sequence.frag">
+&lt;xsl:param name="olink.lang.fallback.sequence"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+
+<para>This parameter defines a list of lang values
+to search among to resolve olinks.
+</para>
+
+<para>Normally an olink tries to resolve to a document in the same
+language as the olink itself. The language of an olink
+is determined by its nearest ancestor element with a
+<tag class="attribute">lang</tag> attribute, otherwise the
+value of the <parameter>l10n.gentext.default.lang</parameter>
+parameter.
+</para>
+
+<para>An olink database can contain target data for the same
+document in multiple languages. Each set of data has the
+same value for the <tag>targetdoc</tag> attribute in
+the <tag>document</tag> element in the database, but with a
+different <tag>lang</tag> attribute value.
+</para>
+
+<para>When an olink is being resolved, the target is first
+sought in the document with the same language as the olink.
+If no match is found there, then this parameter is consulted
+for additional languages to try.</para>
+
+<para>The <parameter>olink.lang.fallback.sequence</parameter>
+must be a whitespace separated list of lang values to
+try. The first one with a match in the olink database is used.
+The default value is empty.</para>
+
+<para>For example, a document might be written in German
+and contain an olink with
+<literal>targetdoc="adminguide"</literal>.
+When the document is processed, the processor
+first looks for a target dataset in the
+olink database starting with:</para>
+
+<literallayout><literal>&lt;document targetdoc="adminguide" lang="de"&gt;</literal>.
+</literallayout>
+
+<para>If there is no such element, then the
+<parameter>olink.lang.fallback.sequence</parameter>
+parameter is consulted.
+If its value is, for example, <quote>fr en</quote>, then the processor next
+looks for <literal>targetdoc="adminguide" lang="fr"</literal>, and
+then for <literal>targetdoc="adminguide" lang="en"</literal>.
+If there is still no match, it looks for
+<literal>targetdoc="adminguide"</literal> with no
+lang attribute.
+</para>
+
+<para>This parameter is useful when a set of documents is only
+partially translated, or is in the process of being translated.
+If a target of an olink has not yet been translated, then this
+parameter permits the processor to look for the document in
+other languages. This assumes the reader would rather have
+a link to a document in a different language than to have
+a broken link.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="insert.olink.page.number">
+<refmeta>
+<refentrytitle>insert.olink.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.page.number</refname>
+<refpurpose>Turns page numbers in olinks on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="insert.olink.page.number.frag">
+&lt;xsl:param name="insert.olink.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references made between documents with
+<tag>olink</tag> will
+include page number citations.
+In most cases this is only applicable to references in printed output.
+</para>
+<para>The parameter has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated for olinks.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>olink</tag> references.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>olink</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+<para>Olinks that point to targets within the same document
+are treated as <tag>xref</tag>s, and controlled by
+the <parameter>insert.xref.page.number</parameter> parameter.
+</para>
+
+<para>Page number references for olinks to
+external documents can only be inserted if the
+information exists in the olink database.
+This means each olink target element
+(<tag>div</tag> or <tag>obj</tag>)
+must have a <tag class="attribute">page</tag> attribute
+whose value is its page number in the target document.
+The XSL stylesheets are not able to extract that information
+during processing because pages have not yet been created in
+XSLT transformation. Only the XSL-FO processor knows what
+page each element is placed on.
+Therefore some postprocessing must take place to populate
+page numbers in the olink database.
+</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="insert.olink.pdf.frag">
+<refmeta>
+<refentrytitle>insert.olink.pdf.frag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.pdf.frag</refname>
+<refpurpose>Add fragment identifiers for links into PDF files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="insert.olink.pdf.frag.frag">
+&lt;xsl:param name="insert.olink.pdf.frag" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines whether
+the cross reference URIs to PDF documents made with
+<tag>olink</tag> will
+include fragment identifiers.
+</para>
+
+<para>When forming a URI to link to a PDF document,
+a fragment identifier (typically a '#' followed by an
+id value) appended to the PDF filename can be used by
+the PDF viewer to open
+the PDF file to a location within the document instead of
+the first page.
+However, not all PDF files have id
+values embedded in them, and not all PDF viewers can
+handle fragment identifiers.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to a non-zero value, then any olink targeting a
+PDF file will have the fragment identifier appended to the URI.
+The URI is formed by concatenating the value of the
+<parameter>olink.base.uri</parameter> parameter, the
+value of the <tag class="attribute">baseuri</tag>
+attribute from the <tag class="element">document</tag>
+element in the olink database with the matching
+<tag class="attribute">targetdoc</tag> value,
+and the value of the <tag class="attribute">href</tag>
+attribute for the targeted element in the olink database.
+The <tag class="attribute">href</tag> attribute
+contains the fragment identifier.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to zero (the default value), then
+the <tag class="attribute">href</tag> attribute
+from the olink database
+is not appended to PDF olinks, so the fragment identifier is left off.
+A PDF olink is any olink for which the
+<tag class="attribute">baseuri</tag> attribute
+from the matching <tag class="element">document</tag>
+element in the olink database ends with '.pdf'.
+Any other olinks will still have the fragment identifier added.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="prefer.internal.olink">
+<refmeta>
+<refentrytitle>prefer.internal.olink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prefer.internal.olink</refname>
+<refpurpose>Prefer a local olink reference to an external reference</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="prefer.internal.olink.frag">
+&lt;xsl:param name="prefer.internal.olink" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you are re-using XML content modules in multiple documents,
+you may want to redirect some of your olinks. This parameter
+permits you to redirect an olink to the current document.
+</para>
+
+<para>For example: you are writing documentation for a product,
+which includes 3 manuals: a little installation
+booklet (booklet.xml), a user
+guide (user.xml), and a reference manual (reference.xml).
+All 3 documents begin with the same introduction section (intro.xml) that
+contains a reference to the customization section (custom.xml) which is
+included in both user.xml and reference.xml documents.
+</para>
+
+<para>How do you write the link to custom.xml in intro.xml
+so that it is interpreted correctly in all 3 documents?</para>
+<itemizedlist>
+<listitem><para>If you use xref, it will fail in user.xml.</para>
+</listitem>
+<listitem><para>If you use olink (pointing to reference.xml),
+the reference in user.xml
+will point to the customization section of the reference manual, while it is
+actually available in user.xml.</para>
+</listitem>
+</itemizedlist>
+
+<para>If you set the <parameter>prefer.internal.olink</parameter>
+parameter to a non-zero value, then the processor will
+first look in the olink database
+for the olink's <tag>targetptr</tag> attribute value
+in document matching the <parameter>current.docid</parameter>
+parameter value. If it isn't found there, then
+it tries the document in the database
+with the <tag>targetdoc</tag>
+value that matches the olink's <tag>targetdoc</tag>
+attribute.
+</para>
+
+<para>This feature permits an olink reference to resolve to
+the current document if there is an element
+with an id matching the olink's <tag>targetptr</tag>
+value. The current document's olink data must be
+included in the target database for this to work.</para>
+
+<caution>
+<para>There is a potential for incorrect links if
+the same <tag>id</tag> attribute value is used for different
+content in different documents.
+Some of your olinks may be redirected to the current document
+when they shouldn't be. It is not possible to control
+individual olink instances.</para>
+</caution>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="link.mailto.url">
+<refmeta>
+<refentrytitle>link.mailto.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>link.mailto.url</refname>
+<refpurpose>Mailto URL for the LINK REL=made HTML HEAD element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="link.mailto.url.frag">
+&lt;xsl:param name="link.mailto.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If not the empty string, this address will be used for the
+rel=made <literal>link</literal> element in the html <literal>head</literal>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ulink.target">
+<refmeta>
+<refentrytitle>ulink.target</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.target</refname>
+<refpurpose>The HTML anchor target for ULinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ulink.target.frag">
+&lt;xsl:param name="ulink.target"&gt;_top&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>ulink.target</parameter> is non-zero, its value will
+be used for the <literal>target</literal> attribute
+on anchors generated for <tag>ulink</tag>s.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.fragid">
+<refmeta>
+<refentrytitle>olink.fragid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.fragid</refname>
+<refpurpose>Names the fragment identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="olink.fragid.frag">
+&lt;xsl:param name="olink.fragid"&gt;fragid=&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>The fragment identifier portion of an <tag>olink</tag> target.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.outline.ext">
+<refmeta>
+<refentrytitle>olink.outline.ext</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.outline.ext</refname>
+<refpurpose>The extension of OLink outline files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="olink.outline.ext.frag">
+&lt;xsl:param name="olink.outline.ext"&gt;.olink&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The extension to be expected for OLink outline files</para>
+<para>Bob has this parameter as dead. Please don't use</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.pubid">
+<refmeta>
+<refentrytitle>olink.pubid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.pubid</refname>
+<refpurpose>Names the public identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="olink.pubid.frag">
+&lt;xsl:param name="olink.pubid"&gt;pubid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para/>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.sysid">
+<refmeta>
+<refentrytitle>olink.sysid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.sysid</refname>
+<refpurpose>Names the system identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="olink.sysid.frag">
+&lt;xsl:param name="olink.sysid"&gt;sysid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.resolver">
+<refmeta>
+<refentrytitle>olink.resolver</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.resolver</refname>
+<refpurpose>The root name of the OLink resolver (usually a script)</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="olink.resolver.frag">
+ &lt;xsl:param name="olink.resolver"&gt;/cgi-bin/olink&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>FIXME:</para>
+</refsection>
+</refentry>
+
+</reference><reference id="xrefs" xml:base="../html/param.xml"><title>Cross References</title>
+<refentry version="5.0" id="collect.xref.targets">
+<refmeta>
+<refentrytitle>collect.xref.targets</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">only</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>collect.xref.targets</refname>
+<refpurpose>Controls whether cross reference data is
+collected</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="collect.xref.targets.frag">
+&lt;xsl:param name="collect.xref.targets"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is <literal>no</literal>, which means the data file is not generated during processing. The other choices are <literal>yes</literal>, which means the data file is created and the document is processed for output, and <literal>only</literal>, which means the data file is created but the document is not processed for output.
+See also <parameter>targets.filename</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="insert.xref.page.number">
+<refmeta>
+<refentrytitle>insert.xref.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.xref.page.number</refname>
+<refpurpose>Turns page numbers in xrefs on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="insert.xref.page.number.frag">
+&lt;xsl:param name="insert.xref.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references (<tag>xref</tag>s) in
+printed output will
+include page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>xref</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>xref</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.role.as.xrefstyle">
+<refmeta>
+<refentrytitle>use.role.as.xrefstyle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.as.xrefstyle</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute for
+<tag class="attribute">xrefstyle</tag> on <tag>xref</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.role.as.xrefstyle.frag">
+&lt;xsl:param name="use.role.as.xrefstyle" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In DocBook documents that conform to a schema older than V4.3, this parameter allows
+<tag class="attribute">role</tag> to serve the purpose of specifying the cross reference style.</para>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>xref</tag> will be used to select the cross reference style.
+In DocBook V4.3, the <tag class="attribute">xrefstyle</tag> attribute was added for this purpose.
+If the <tag class="attribute">xrefstyle</tag> attribute is present,
+<tag class="attribute">role</tag> will be ignored, regardless of the setting
+of this parameter.</para>
+
+</refsection>
+
+<refsection><info><title>Example</title></info>
+
+<para>The following small stylesheet shows how to configure the
+stylesheets to make use of the cross reference style:</para>
+
+<programlisting>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"&gt;
+
+&lt;xsl:import href="../xsl/html/docbook.xsl"/&gt;
+
+&lt;xsl:output method="html"/&gt;
+
+&lt;xsl:param name="local.l10n.xml" select="document('')"/&gt;
+&lt;l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"&gt;
+ &lt;l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"&gt;
+ &lt;l:context name="xref"&gt;
+ &lt;l:template name="chapter" style="title" text="Chapter %n, %t"/&gt;
+ &lt;l:template name="chapter" text="Chapter %n"/&gt;
+ &lt;/l:context&gt;
+ &lt;/l:l10n&gt;
+&lt;/l:i18n&gt;
+
+&lt;/xsl:stylesheet&gt;</programlisting>
+
+<para>With this stylesheet, the cross references in the following document:</para>
+
+<programlisting>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"&gt;
+&lt;book id="book"&gt;&lt;title&gt;Book&lt;/title&gt;
+
+&lt;preface&gt;
+&lt;title&gt;Preface&lt;/title&gt;
+
+&lt;para&gt;Normal: &lt;xref linkend="ch1"/&gt;.&lt;/para&gt;
+&lt;para&gt;Title: &lt;xref xrefstyle="title" linkend="ch1"/&gt;.&lt;/para&gt;
+
+&lt;/preface&gt;
+
+&lt;chapter id="ch1"&gt;
+&lt;title&gt;First Chapter&lt;/title&gt;
+
+&lt;para&gt;Irrelevant.&lt;/para&gt;
+
+&lt;/chapter&gt;
+&lt;/book&gt;</programlisting>
+
+<para>will appear as:</para>
+
+<informalexample>
+<para>Normal: Chapter 1.</para>
+<para>Title: Chapter 1, <emphasis>First Chapter</emphasis>.</para>
+</informalexample>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="xref.with.number.and.title">
+<refmeta>
+<refentrytitle>xref.with.number.and.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.with.number.and.title</refname>
+<refpurpose>Use number and title in cross references</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.with.number.and.title.frag">
+&lt;xsl:param name="xref.with.number.and.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A cross reference may include the number (for example, the number of
+an example or figure) and the <tag>title</tag> which is a required child of some
+targets. This parameter inserts both the relevant number as well as
+the title into the link. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.label-page.separator">
+<refmeta>
+<refentrytitle>xref.label-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-page.separator</refname>
+<refpurpose>Punctuation or space separating label from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.label-page.separator.frag">&lt;xsl:param name="xref.label-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and page
+but no title,
+then the value of this parameter is inserted between
+label and page number in the output.
+If a title is included, then other separators are used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.label-title.separator">
+<refmeta>
+<refentrytitle>xref.label-title.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-title.separator</refname>
+<refpurpose>Punctuation or space separating label from title in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.label-title.separator.frag">&lt;xsl:param name="xref.label-title.separator"&gt;: &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and title,
+then the value of this parameter is inserted between
+label and title in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.title-page.separator">
+<refmeta>
+<refentrytitle>xref.title-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.title-page.separator</refname>
+<refpurpose>Punctuation or space separating title from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.title-page.separator.frag">&lt;xsl:param name="xref.title-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both title and page number,
+then the value of this parameter is inserted between
+title and page number in the output.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="lists" xml:base="../html/param.xml"><title>Lists</title>
+<refentry version="5.0" id="segmentedlist.as.table">
+<refmeta>
+<refentrytitle>segmentedlist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>segmentedlist.as.table</refname>
+<refpurpose>Format segmented lists as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="segmentedlist.as.table.frag">
+&lt;xsl:param name="segmentedlist.as.table" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>segmentedlist</tag>s will be formatted as
+tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.as.table">
+<refmeta>
+<refentrytitle>variablelist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.as.table</refname>
+<refpurpose>Format <tag>variablelist</tag>s as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.as.table.frag">
+&lt;xsl:param name="variablelist.as.table" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>variablelist</tag>s will be formatted as
+tables. A processing instruction exists to specify a particular width for the
+column containing the <tag>term</tag>s:
+<tag class="xmlpi">dbhtml term-width=".25in"</tag></para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>variablelist</tag>: <tag class="xmlpi">dbhtml
+list-presentation="table"</tag> or <tag class="xmlpi">dbhtml
+list-presentation="list"</tag>.</para>
+
+<para>This parameter only applies to the HTML transformations. In the
+FO case, proper list markup is robust enough to handle the formatting.
+But see also <parameter>variablelist.as.blocks</parameter>.</para>
+
+<programlisting> &lt;variablelist&gt;
+ &lt;?dbhtml list-presentation="table"?&gt;
+ &lt;?dbhtml term-width="1.5in"?&gt;
+ &lt;?dbfo list-presentation="list"?&gt;
+ &lt;?dbfo term-width="1in"?&gt;
+ &lt;varlistentry&gt;
+ &lt;term&gt;list&lt;/term&gt;
+ &lt;listitem&gt;
+ &lt;para&gt;
+ Formatted as a table even if variablelist.as.table is set to 0.
+ &lt;/para&gt;
+ &lt;/listitem&gt;
+ &lt;/varlistentry&gt;
+ &lt;/variablelist&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.term.separator">
+<refmeta>
+<refentrytitle>variablelist.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.separator</refname>
+<refpurpose>Text to separate <tag>term</tag>s within a multi-term
+<tag>varlistentry</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.term.separator.frag">
+&lt;xsl:param name="variablelist.term.separator"&gt;, &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is placed
+after each <tag>term</tag> except the last.</para>
+
+<note>
+ <para>To generate a line break between multiple <tag>term</tag>s in
+ a <tag>varlistentry</tag>, set a non-zero value for the
+ <parameter>variablelist.term.break.after</parameter> parameter. If
+ you do so, you may also want to set the value of the
+ <parameter>variablelist.term.separator</parameter> parameter to an
+ empty string (to suppress rendering of the default comma and space
+ after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.term.break.after">
+<refmeta>
+<refentrytitle>variablelist.term.break.after</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.break.after</refname>
+<refpurpose>Generate line break after each <tag>term</tag> within a
+multi-term <tag>varlistentry</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.term.break.after.frag">
+&lt;xsl:param name="variablelist.term.break.after"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set a non-zero value for the
+<parameter>variablelist.term.break.after</parameter> parameter to
+generate a line break between <tag>term</tag>s in a
+multi-term <tag>varlistentry</tag>.</para>
+
+<note>
+<para>If you set a non-zero value for
+<parameter>variablelist.term.break.after</parameter>, you may also
+want to set the value of the
+<parameter>variablelist.term.separator</parameter> parameter to an
+empty string (to suppress rendering of the default comma and space
+after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+</reference><reference id="biblio" xml:base="../html/param.xml"><title>Bibliography</title>
+<refentry version="5.0" id="bibliography.style">
+<refmeta>
+<refentrytitle>bibliography.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">normal</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iso690</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.style</refname>
+<refpurpose>Style used for formatting of biblioentries.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bibliography.style.frag">
+&lt;xsl:param name="bibliography.style"&gt;normal&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Currently only <literal>normal</literal> and
+<literal>iso690</literal> styles are supported.</para>
+
+<para>In order to use ISO690 style to the full extent you might need
+to use additional markup described on <link xlink:href="http://wiki.docbook.org/topic/ISO690Bibliography">the
+following WiKi page</link>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="biblioentry.item.separator">
+<refmeta>
+<refentrytitle>biblioentry.item.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.item.separator</refname>
+<refpurpose>Text to separate bibliography entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="biblioentry.item.separator.frag">&lt;xsl:param name="biblioentry.item.separator"&gt;. &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Text to separate bibliography entries
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bibliography.collection">
+<refmeta>
+<refentrytitle>bibliography.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.collection</refname>
+<refpurpose>Name of the bibliography collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bibliography.collection.frag">
+&lt;xsl:param name="bibliography.collection"&gt;http://docbook.sourceforge.net/release/bibliography/bibliography.xml&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Maintaining bibliography entries across a set of documents is tedious, time
+consuming, and error prone. It makes much more sense, usually, to store all of
+the bibliography entries in a single place and simply <quote>extract</quote>
+the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>bibliography.collection</parameter> parameter. To setup a global
+bibliography <quote>database</quote>, follow these steps:</para>
+
+<para>First, create a stand-alone bibliography document that contains all of
+the documents that you wish to reference. Make sure that each bibliography
+entry (whether you use <tag>biblioentry</tag> or <tag>bibliomixed</tag>)
+has an ID.</para>
+
+<para>My global bibliography, <filename>~/bibliography.xml</filename> begins
+like this:</para>
+
+<informalexample>
+<programlisting>&lt;!DOCTYPE bibliography
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;bibliography&gt;&lt;title&gt;References&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"&gt;&lt;abbrev&gt;XML 1.0&lt;/abbrev&gt;Tim Bray,
+Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml"&gt;Extensible Markup
+Language (XML) 1.0 Second Edition&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 2000.
+&lt;/bibliomixed&gt;
+
+&lt;bibliomixed id="xml-names"&gt;&lt;abbrev&gt;Namespaces&lt;/abbrev&gt;Tim Bray,
+Dave Hollander,
+and Andrew Layman, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml-names/"&gt;Namespaces in
+XML&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 1999.
+&lt;/bibliomixed&gt;
+
+&lt;!-- ... --&gt;
+&lt;/bibliography&gt;
+</programlisting>
+</informalexample>
+
+<para>When you create a bibliography in your document, simply
+provide <emphasis>empty</emphasis> <tag>bibliomixed</tag>
+entries for each document that you wish to cite. Make sure that these
+elements have the same ID as the corresponding <quote>real</quote>
+entry in your global bibliography.</para>
+
+<para>For example:</para>
+
+<informalexample>
+<programlisting>&lt;bibliography&gt;&lt;title&gt;Bibliography&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"/&gt;
+&lt;bibliomixed id="xml-names"/&gt;
+&lt;bibliomixed id="DKnuth86"&gt;Donald E. Knuth. &lt;citetitle&gt;Computers and
+Typesetting: Volume B, TeX: The Program&lt;/citetitle&gt;. Addison-Wesley,
+1986. ISBN 0-201-13437-3.
+&lt;/bibliomixed&gt;
+&lt;bibliomixed id="relaxng"/&gt;
+
+&lt;/bibliography&gt;</programlisting>
+</informalexample>
+
+<para>Note that it's perfectly acceptable to mix entries from your
+global bibliography with <quote>normal</quote> entries. You can use
+<tag>xref</tag> or other elements to cross-reference your
+bibliography entries in exactly the same way you do now.</para>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>bibliography.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global bibliography.</para>
+
+<para>The stylesheets will format the bibliography in your document as if
+all of the entries referenced appeared there literally.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bibliography.numbered">
+<refmeta>
+<refentrytitle>bibliography.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.numbered</refname>
+<refpurpose>Should bibliography entries be numbered?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bibliography.numbered.frag">
+&lt;xsl:param name="bibliography.numbered" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero bibliography entries will be numbered</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="glossary" xml:base="../html/param.xml"><title>Glossary</title>
+<refentry version="5.0" id="glossterm.auto.link">
+<refmeta>
+<refentrytitle>glossterm.auto.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.auto.link</refname>
+<refpurpose>Generate links from glossterm to glossentry automatically?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossterm.auto.link.frag">
+&lt;xsl:param name="glossterm.auto.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links from inline <tag>glossterm</tag>s to the corresponding
+<tag>glossentry</tag> elements in a <tag>glossary</tag> or <tag>glosslist</tag>
+will be automatically generated. This is useful when your glossterms are consistent
+and you don't want to add links manually.</para>
+
+<para>The automatic link generation feature is not used on <tag>glossterm</tag> elements
+that have a <tag class="attribute">linkend</tag> attribute.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="firstterm.only.link">
+<refmeta>
+<refentrytitle>firstterm.only.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>firstterm.only.link</refname>
+<refpurpose>Does automatic glossterm linking only apply to firstterms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="firstterm.only.link.frag">
+&lt;xsl:param name="firstterm.only.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, only <tag>firstterm</tag>s will be automatically linked
+to the glossary. If glossary linking is not enabled, this parameter
+has no effect.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossary.collection">
+<refmeta>
+<refentrytitle>glossary.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.collection</refname>
+<refpurpose>Name of the glossary collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossary.collection.frag">
+&lt;xsl:param name="glossary.collection"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Glossaries maintained independently across a set of documents
+are likely to become inconsistent unless considerable effort is
+expended to keep them in sync. It makes much more sense, usually, to
+store all of the glossary entries in a single place and simply
+<quote>extract</quote> the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>glossary.collection</parameter> parameter. To setup a global
+glossary <quote>database</quote>, follow these steps:</para>
+
+<refsection><info><title>Setting Up the Glossary Database</title></info>
+
+<para>First, create a stand-alone glossary document that contains all of
+the entries that you wish to reference. Make sure that each glossary
+entry has an ID.</para>
+
+<para>Here's an example glossary:</para>
+
+<informalexample>
+<programlisting>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE glossary
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;glossary&gt;
+&lt;glossaryinfo&gt;
+&lt;editor&gt;&lt;firstname&gt;Eric&lt;/firstname&gt;&lt;surname&gt;Raymond&lt;/surname&gt;&lt;/editor&gt;
+&lt;title&gt;Jargon File 4.2.3 (abridged)&lt;/title&gt;
+&lt;releaseinfo&gt;Just some test data&lt;/releaseinfo&gt;
+&lt;/glossaryinfo&gt;
+
+&lt;glossdiv&gt;&lt;title&gt;0&lt;/title&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;0&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;Numeric zero, as opposed to the letter `O' (the 15th letter of
+the English alphabet). In their unmodified forms they look a lot
+alike, and various kluges invented to make them visually distinct have
+compounded the confusion. If your zero is center-dotted and letter-O
+is not, or if letter-O looks almost rectangular but zero looks more
+like an American football stood on end (or the reverse), you're
+probably looking at a modern character display (though the dotted zero
+seems to have originated as an option on IBM 3270 controllers). If
+your zero is slashed but letter-O is not, you're probably looking at
+an old-style ASCII graphic set descended from the default typewheel on
+the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter,
+curse this arrangement). (Interestingly, the slashed zero long
+predates computers; Florian Cajori's monumental "A History of
+Mathematical Notations" notes that it was used in the twelfth and
+thirteenth centuries.) If letter-O has a slash across it and the zero
+does not, your display is tuned for a very old convention used at IBM
+and a few other early mainframe makers (Scandinavians curse &lt;emphasis&gt;this&lt;/emphasis&gt;
+arrangement even more, because it means two of their letters collide).
+Some Burroughs/Unisys equipment displays a zero with a &lt;emphasis&gt;reversed&lt;/emphasis&gt;
+slash. Old CDC computers rendered letter O as an unbroken oval and 0
+as an oval broken at upper right and lower left. And yet another
+convention common on early line printers left zero unornamented but
+added a tail or hook to the letter-O so that it resembled an inverted
+Q or cursive capital letter-O (this was endorsed by a draft ANSI
+standard for how to draw ASCII characters, but the final standard
+changed the distinguisher to a tick-mark in the upper-left corner).
+Are we sufficiently confused yet?&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;1TBS&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para role="accidence"&gt;
+&lt;phrase role="pronounce"&gt;&lt;/phrase&gt;
+&lt;phrase role="partsofspeach"&gt;n&lt;/phrase&gt;
+&lt;/para&gt;
+&lt;para&gt;The "One True Brace Style"&lt;/para&gt;
+&lt;glossseealso&gt;indent style&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossdiv&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+</refsection>
+
+<refsection><info><title>Marking Up Glossary Terms</title></info>
+
+<para>That takes care of the glossary database, now you have to get the entries
+into your document. Unlike bibliography entries, which can be empty, creating
+<quote>placeholder</quote> glossary entries would be very tedious. So instead,
+support for <parameter>glossary.collection</parameter> relies on implicit linking.</para>
+
+<para>In your source document, simply use <tag>firstterm</tag> and
+<tag>glossterm</tag> to identify the terms you wish to have included
+in the glossary. The stylesheets assume that you will either set the
+<tag class="attribute">baseform</tag> attribute correctly, or that the
+content of the element exactly matches a term in your glossary.</para>
+
+<para>If you're using a <parameter>glossary.collection</parameter>, don't
+make explicit links on the terms in your document.</para>
+
+<para>So, in your document, you might write things like this:</para>
+
+<informalexample>
+<programlisting>&lt;para&gt;This is dummy text, without any real meaning.
+The point is simply to reference glossary terms like &lt;glossterm&gt;0&lt;/glossterm&gt;
+and the &lt;firstterm baseform="1TBS"&gt;One True Brace Style (1TBS)&lt;/firstterm&gt;.
+The &lt;glossterm&gt;1TBS&lt;/glossterm&gt;, as you can probably imagine, is a nearly
+religious issue.&lt;/para&gt;</programlisting>
+</informalexample>
+
+<para>If you set the <parameter>firstterm.only.link</parameter> parameter,
+only the terms marked with <tag>firstterm</tag> will be links.
+Otherwise, all the terms will be linked.</para>
+
+</refsection>
+
+<refsection><info><title>Marking Up the Glossary</title></info>
+
+<para>The glossary itself has to be identified for the stylesheets. For lack
+of a better choice, the <tag class="attribute">role</tag> is used.
+To identify the glossary as the target for automatic processing, set
+the role to <quote><literal>auto</literal></quote>. The title of this
+glossary (and any other information from the <tag>glossaryinfo</tag>
+that's rendered by your stylesheet) will be displayed, but the entries will
+come from the database.
+</para>
+
+<para>Unfortunately, the glossary can't be empty, so you must put in
+at least one <tag>glossentry</tag>. The content of this entry
+is irrelevant, it will not be rendered:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+<para>What about glossary divisions? If your glossary database has glossary
+divisions <emphasis>and</emphasis> your automatic glossary contains at least
+one <tag>glossdiv</tag>, the automic glossary will have divisions.
+If the <tag>glossdiv</tag> is missing from either location, no divisions
+will be rendered.</para>
+
+<para>Glossary entries (and divisions, if appropriate) in the glossary will
+occur in precisely the order they occur in your database.</para>
+
+</refsection>
+
+<refsection><info><title>Formatting the Document</title></info>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>glossary.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global glossary.</para>
+
+<para>The stylesheets will format the glossary in your document as if
+all of the entries implicilty referenced appeared there literally.</para>
+</refsection>
+
+<refsection><info><title>Limitations</title></info>
+
+<para>Glossary cross-references <emphasis>within the glossary</emphasis> are
+not supported. For example, this <emphasis>will not</emphasis> work:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+
+<para>If you put glossary cross-references in your glossary that way,
+you'll get the cryptic error: <computeroutput>Warning:
+glossary.collection specified, but there are 0 automatic
+glossaries</computeroutput>.</para>
+
+<para>Instead, you must do two things:</para>
+
+<orderedlist>
+<listitem>
+<para>Markup your glossary using <tag>glossseealso</tag>:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+</listitem>
+
+<listitem>
+<para>Make sure there is at least one <tag>glossterm</tag> reference to
+<glossterm>gloss-2</glossterm> <emphasis>in your document</emphasis>. The
+easiest way to do that is probably within a <tag>remark</tag> in your
+automatic glossary:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;remark&gt;Make sure there's a reference to &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/remark&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+</listitem>
+</orderedlist>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossary.sort">
+<refmeta>
+<refentrytitle>glossary.sort</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.sort</refname>
+<refpurpose>Sort glossentry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossary.sort.frag">
+&lt;xsl:param name="glossary.sort" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then the glossentry elements within a
+glossary, glossdiv, or glosslist are sorted on the glossterm, using
+the current lang setting. If zero (the default), then
+glossentry elements are not sorted and are presented
+in document order.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossentry.show.acronym">
+<refmeta>
+<refentrytitle>glossentry.show.acronym</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">primary</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.show.acronym</refname>
+<refpurpose>Display <tag>glossentry</tag> acronyms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossentry.show.acronym.frag">
+&lt;xsl:param name="glossentry.show.acronym"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A setting of <quote>yes</quote> means they should be displayed;
+<quote>no</quote> means they shouldn't. If <quote>primary</quote> is used,
+then they are shown as the primary text for the entry.</para>
+
+<note>
+<para>This setting controls both <tag>acronym</tag> and
+<tag>abbrev</tag> elements in the <tag>glossentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
+
+</reference><reference id="misc" xml:base="../html/param.xml"><title>Miscellaneous</title>
+<refentry version="5.0" id="formal.procedures">
+<refmeta>
+<refentrytitle>formal.procedures</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.procedures</refname>
+<refpurpose>Selects formal or informal procedures</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="formal.procedures.frag">
+&lt;xsl:param name="formal.procedures" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formal procedures are numbered and always have a title.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="formal.title.placement">
+<refmeta>
+<refentrytitle>formal.title.placement</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.placement</refname>
+<refpurpose>Specifies where formal object titles should occur</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="formal.title.placement.frag">
+&lt;xsl:param name="formal.title.placement"&gt;
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies where formal object titles should occur. For each formal object
+type (<tag>figure</tag>,
+<tag>example</tag>,
+<tag>equation</tag>,
+<tag>table</tag>, and <tag>procedure</tag>)
+you can specify either the keyword
+<quote><literal>before</literal></quote> or
+<quote><literal>after</literal></quote>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="runinhead.default.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.default.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.default.title.end.punct</refname>
+<refpurpose>Default punctuation character on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="runinhead.default.title.end.punct.frag">&lt;xsl:param name="runinhead.default.title.end.punct"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, For a <tag>formalpara</tag>, use the specified
+string as the separator between the title and following text. The period is the default value.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="runinhead.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.title.end.punct</refname>
+<refpurpose>Characters that count as punctuation on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="runinhead.title.end.punct.frag">
+&lt;xsl:param name="runinhead.title.end.punct"&gt;.!?:&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify which characters are to be counted as punctuation. These
+characters are checked for a match with the last character of the
+title. If no match is found, the
+<parameter>runinhead.default.title.end.punct</parameter> contents are
+inserted. This is to avoid duplicated punctuation in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="show.comments">
+<refmeta>
+<refentrytitle>show.comments</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.comments</refname>
+<refpurpose>Display <tag>remark</tag> elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="show.comments.frag">
+&lt;xsl:param name="show.comments" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, comments will be displayed, otherwise they
+are suppressed. Comments here refers to the <tag>remark</tag> element
+(which was called <literal>comment</literal> prior to DocBook
+4.0), not XML comments (&lt;-- like this --&gt;) which are
+unavailable.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="show.revisionflag">
+<refmeta>
+<refentrytitle>show.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.revisionflag</refname>
+<refpurpose>Enable decoration of elements that have a revisionflag</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="show.revisionflag.frag">
+&lt;xsl:param name="show.revisionflag" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If <parameter>show.revisionflag</parameter> is turned on, then the stylesheets
+may produce additional markup designed to allow a CSS stylesheet to
+highlight elements that have specific revisionflag settings.</para>
+
+<para>The markup inserted will be usually be either a &lt;span&gt; or
+&lt;div&gt; with an appropriate <literal>class</literal>
+attribute. (The value of the class attribute will be the same as the
+value of the revisionflag attribute). In some contexts, for example
+tables, where extra markup would be structurally illegal, the class
+attribute will be added to the appropriate container element.</para>
+
+<para>In general, the stylesheets only test for revisionflag in contexts
+where an importing stylesheet would have to redefine whole templates.
+Most of the revisionflag processing is expected to be done by another
+stylesheet, for example <filename>changebars.xsl</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="shade.verbatim">
+<refmeta>
+<refentrytitle>shade.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim</refname>
+<refpurpose>Should verbatim environments be shaded?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="shade.verbatim.frag">&lt;xsl:param name="shade.verbatim" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In the FO stylesheet, if this parameter is non-zero then the
+<property>shade.verbatim.style</property> properties will be applied
+to verbatim environments.</para>
+
+<para>In the HTML stylesheet, this parameter is now deprecated. Use
+CSS instead.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="shade.verbatim.style">
+<refmeta>
+<refentrytitle>shade.verbatim.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim.style</refname>
+<refpurpose>Properties that specify the style of shaded verbatim listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="shade.verbatim.style.frag">
+&lt;xsl:attribute-set name="shade.verbatim.style"&gt;
+ &lt;xsl:attribute name="border"&gt;0&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="bgcolor"&gt;#E0E0E0&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties that specify the style of shaded verbatim listings. The
+parameters specified (the border and background color) are added to
+the styling of the xsl-fo output. A border might be specified as "thin
+black solid" for example. See <link xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/#border">xsl-fo</link></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="punct.honorific">
+<refmeta>
+<refentrytitle>punct.honorific</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>punct.honorific</refname>
+<refpurpose>Punctuation after an honorific in a personal name.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="punct.honorific.frag">
+&lt;xsl:param name="punct.honorific"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the punctuation that should be added after an
+honorific in a personal name.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="tex.math.in.alt">
+<refmeta>
+<refentrytitle>tex.math.in.alt</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">plain</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">latex</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.in.alt</refname>
+<refpurpose>TeX notation used for equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="tex.math.in.alt.frag">
+&lt;xsl:param name="tex.math.in.alt"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want type math directly in TeX notation in equations,
+this parameter specifies notation used. Currently are supported two
+values -- <literal>plain</literal> and <literal>latex</literal>. Empty
+value means that you are not using TeX math at all.</para>
+
+<para>Preferred way for including TeX alternative of math is inside of
+<tag>textobject</tag> element. Eg.:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;inlinemediaobject&gt;
+&lt;imageobject&gt;
+&lt;imagedata fileref="eq1.gif"/&gt;
+&lt;/imageobject&gt;
+&lt;textobject&gt;&lt;phrase&gt;E=mc squared&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;textobject role="tex"&gt;&lt;phrase&gt;E=mc^2&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;/inlinemediaobject&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you are using <tag>graphic</tag> element, you can
+store TeX inside <tag>alt</tag> element:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;alt role="tex"&gt;a^2+b^2=c^2&lt;/alt&gt;
+&lt;graphic fileref="a2b2c2.gif"/&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you want use this feature, you should process your FO with
+PassiveTeX, which only supports TeX math notation. When calling
+stylsheet, don't forget to specify also
+passivetex.extensions=1.</para>
+
+<para>If you want equations in HTML, just process generated file
+<filename>tex-math-equations.tex</filename> by TeX or LaTeX. Then run
+dvi2bitmap program on result DVI file. You will get images for
+equations in your document.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.delims</parameter>,
+ <parameter>passivetex.extensions</parameter>,
+ <parameter>tex.math.file</parameter></para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="tex.math.file">
+<refmeta>
+<refentrytitle>tex.math.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.file</refname>
+<refpurpose>Name of temporary file for generating images from equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="tex.math.file.frag">
+&lt;xsl:param name="tex.math.file"&gt;tex-math-equations.tex&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Name of auxiliary file for TeX equations. This file can be
+processed by dvi2bitmap to get bitmap versions of equations for HTML
+output.</para>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>tex.math.delims</parameter>,
+ </para>
+</refsection>
+<refsection><info><title>More information</title></info>
+ <para>For how-to documentation on embedding TeX equations and
+ generating output from them, see
+ <link role="tcg" xlink:href="TexMath.html">DBTeXMath</link>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="tex.math.delims">
+<refmeta>
+<refentrytitle>tex.math.delims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.delims</refname>
+<refpurpose>Should equations output for processing by TeX be
+surrounded by math mode delimiters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="tex.math.delims.frag">
+&lt;xsl:param name="tex.math.delims" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For compatibility with DSSSL based DBTeXMath from Allin Cottrell
+you should set this parameter to 0.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>passivetex.extensions</parameter></para>
+</refsection>
+
+<refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbtex delims</tag> processing
+ instruction to control whether delimiters are output.</para>
+</refsection>
+
+
+</refentry>
+
+<refentry version="5.0" id="pixels.per.inch">
+<refmeta>
+<refentrytitle>pixels.per.inch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pixels.per.inch</refname>
+<refpurpose>How many pixels are there per inch?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="pixels.per.inch.frag">
+&lt;xsl:param name="pixels.per.inch"&gt;90&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When lengths are converted to pixels, this value is used to
+determine the size of a pixel. The default value is taken from the
+<link xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/">XSL
+Recommendation</link>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="points.per.em">
+<refmeta>
+<refentrytitle>points.per.em</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>points.per.em</refname>
+<refpurpose>Specify the nominal size of an em-space in points</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="points.per.em.frag">
+&lt;xsl:param name="points.per.em"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The fixed value used for calculations based upon the size of a
+character. The assumption made is that ten point font is in use. This
+assumption may not be valid.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.svg">
+<refmeta>
+<refentrytitle>use.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.svg</refname>
+<refpurpose>Allow SVG in the result tree?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.svg.frag">
+&lt;xsl:param name="use.svg" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, SVG will be considered an acceptable image format. SVG
+is passed through to the result tree, so correct rendering of the resulting
+diagram depends on the formatter (FO processor or web browser) that is used
+to process the output from the stylesheet.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="menuchoice.separator">
+<refmeta>
+<refentrytitle>menuchoice.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+other than <tag>guimenuitem</tag> and
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="menuchoice.separator.frag">
+&lt;xsl:param name="menuchoice.separator"&gt;+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> other
+than <tag>guimenuitem</tag> and <tag>guisubmenu</tag>. The latter
+elements are linked with <parameter>menuchoice.menu.separator</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="menuchoice.menu.separator">
+<refmeta>
+<refentrytitle>menuchoice.menu.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.menu.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+with <tag>guimenuitem</tag> or
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="menuchoice.menu.separator.frag">
+&lt;xsl:param name="menuchoice.menu.separator"&gt; &#8594; &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> with
+<tag>guimenuitem</tag> or <tag>guisubmenu</tag>. Other elements
+are linked with <parameter>menuchoice.separator</parameter>.
+</para>
+<para>The default value is &amp;#x2192;, which is the
+&amp;rarr; (right arrow) character entity.
+The current FOP (0.20.5) requires setting the font-family
+explicitly.
+</para>
+<para>The default value also includes spaces around the arrow,
+which will allow a line to break. Replace the spaces with
+&amp;#xA0; (nonbreaking space) if you don't want those
+spaces to break.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.float.class">
+<refmeta>
+<refentrytitle>default.float.class</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.float.class</refname>
+<refpurpose>Specifies the default float class</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.float.class.frag">
+&lt;xsl:param name="default.float.class"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($stylesheet.result.type,'html')"&gt;left&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;before&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the direction in which a float should be placed. for
+xsl-fo this is before, for html it is left. For Western texts, the
+before direction is the top of the page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.number.format">
+<refmeta>
+<refentrytitle>footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.number.format.frag">
+&lt;xsl:param name="footnote.number.format"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.footnote.number.format">
+<refmeta>
+<refentrytitle>table.footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.footnote.number.format.frag">
+&lt;xsl:param name="table.footnote.number.format"&gt;a&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>table.footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A) in tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.number.symbols">
+<refmeta>
+<refentrytitle>footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype"/>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.symbols</refname>
+<refpurpose>Special characters to use as footnote markers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.number.symbols.frag">
+&lt;xsl:param name="footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>footnote.number.symbols</parameter> is not the empty string,
+footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.footnote.number.symbols">
+<refmeta>
+<refentrytitle>table.footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.symbols</refname>
+<refpurpose>Special characters to use a footnote markers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.footnote.number.symbols.frag">
+&lt;xsl:param name="table.footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>table.footnote.number.symbols</parameter> is not the empty string,
+table footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>table.footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="highlight.source">
+<refmeta>
+<refentrytitle>highlight.source</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.source</refname>
+<refpurpose>Should the content of <tag>programlisting</tag>
+be syntactically highlighted?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="highlight.source.frag">
+&lt;xsl:param name="highlight.source" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the
+content of <tag>programlisting</tag> elements. You specify the language for each programlisting
+by using the <tag class="attribute">language</tag> attribute. The <parameter>highlight.default.language</parameter>
+parameter can be used to specify the language for programlistings without a <tag class="attribute">language</tag>
+attribute. Syntax highlighting also works for <tag>screen</tag> and <tag>synopsis</tag> elements.</para>
+
+<para>The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be
+downloaded separately (see below).</para>
+
+<itemizedlist>
+<para>In order to use this extension, you must</para>
+
+<listitem><para>add <filename>xslthl-2.x.x.jar</filename> to your Java classpath. The latest version is available
+from <link xlink:href="http://sourceforge.net/projects/xslthl">the XSLT syntax highlighting project</link>
+at SourceForge.</para>
+</listitem>
+<listitem>
+<para>use a customization layer in which you import one of the following stylesheet modules:
+<itemizedlist>
+ <listitem>
+ <para><filename>html/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml-1_1/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>fo/highlight.xsl</filename>
+ </para>
+</listitem>
+</itemizedlist>
+</para>
+</listitem>
+<listitem><para>let either the <literal>xslthl.config</literal> Java system property or the
+<parameter>highlight.xslthl.config</parameter> parameter point to the configuration file for syntax
+highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file,
+<filename>highlighting/xslthl-config.xml</filename>.</para>
+</listitem>
+</itemizedlist>
+
+<para>The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is
+an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.)</para>
+
+<para>The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows:</para>
+
+<informalexample>
+<para><command>java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar
+-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet
+-o test.html test.xml myhtml.xsl</command></para>
+</informalexample>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="highlight.xslthl.config">
+<refmeta>
+<refentrytitle>highlight.xslthl.config</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.xslthl.config</refname>
+<refpurpose>Location of XSLTHL configuration file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="highlight.xslthl.config.frag">
+&lt;xsl:param name="highlight.xslthl.config"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This location has precedence over the corresponding Java property.</para>
+
+<para>Please note that usually you have to specify location as URL not
+just as a simple path on the local
+filesystem. E.g. <filename>file:///home/user/xslthl/my-xslthl-config.xml</filename>.</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="highlight.default.language">
+<refmeta>
+<refentrytitle>highlight.default.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.default.language</refname>
+<refpurpose>Default language of programlisting</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="highlight.default.language.frag">
+&lt;xsl:param name="highlight.default.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This language is used when there is no language attribute on programlisting.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="email.delimiters.enabled">
+<refmeta>
+<refentrytitle>email.delimiters.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.delimiters.enabled</refname>
+<refpurpose>Generate delimiters around email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="email.delimiters.enabled.frag">
+&lt;xsl:param name="email.delimiters.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, delimiters
+
+<footnote><para>For delimiters, the
+stylesheets are currently hard-coded to output angle
+brackets.</para></footnote>
+
+are generated around e-mail addresses
+(the output of the <tag>email</tag> element).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="exsl.node.set.available">
+<refmeta>
+<refentrytitle>exsl.node.set.available</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>exsl.node.set.available</refname>
+<refpurpose>Is the test function-available('exsl:node-set') true?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="exsl.node.set.available.frag">&lt;xsl:param name="exsl.node.set.available"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')"&gt;1&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;0&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+then the exsl:node-set() function is available to be used in
+the stylesheet.
+If zero, then the function is not available.
+This param automatically detects the presence of
+the function and does not normally need to be set manually.</para>
+
+<para>This param was created to handle a long-standing
+bug in the Xalan processor that fails to detect the
+function even though it is available.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="annos" xml:base="../html/param.xml"><title>Annotations</title>
+<refentry version="5.0" id="annotation.support">
+<refmeta>
+<refentrytitle>annotation.support</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.support</refname>
+<refpurpose>Enable annotations?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="annotation.support.frag">
+&lt;xsl:param name="annotation.support" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the stylesheets will attempt to support annotation
+elements in HTML by including some JavaScript (see
+<parameter>annotation.js</parameter>).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="annotation.js">
+<refmeta>
+<refentrytitle>annotation.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.js</refname>
+<refpurpose>URIs identifying JavaScript files with support for annotation popups</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="annotation.js.frag">
+
+&lt;xsl:param name="annotation.js"&gt;
+&lt;xsl:text&gt;http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js&lt;/xsl:text&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <property>annotation.support</property> is enabled and the
+document contains <tag>annotation</tag>s, then the URIs listed
+in this parameter will be included. These JavaScript files are required
+for popup annotation support.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="annotation.css">
+<refmeta>
+<refentrytitle>annotation.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.css</refname>
+<refpurpose>CSS rules for annotations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="annotation.css.frag">
+&lt;xsl:param name="annotation.css"&gt;
+/* ======================================================================
+ Annotations
+*/
+
+div.annotation-list { visibility: hidden;
+ }
+
+div.annotation-nocss { position: absolute;
+ visibility: hidden;
+ }
+
+div.annotation-popup { position: absolute;
+ z-index: 4;
+ visibility: hidden;
+ padding: 0px;
+ margin: 2px;
+ border-style: solid;
+ border-width: 1px;
+ width: 200px;
+ background-color: white;
+ }
+
+div.annotation-title { padding: 1px;
+ font-weight: bold;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ color: white;
+ background-color: black;
+ }
+
+div.annotation-body { padding: 2px;
+ }
+
+div.annotation-body p { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+div.annotation-close { position: absolute;
+ top: 2px;
+ right: 2px;
+ }
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>annotation.support</parameter> is enabled and the
+document contains <tag>annotation</tag>s, then the CSS in this
+parameter will be included in the document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="annotation.graphic.open">
+<refmeta>
+<refentrytitle>annotation.graphic.open</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.graphic.open</refname>
+<refpurpose>Image for identifying a link that opens an annotation popup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="annotation.graphic.open.frag">
+&lt;xsl:param name="annotation.graphic.open"&gt;http://docbook.sourceforge.net/release/images/annot-open.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This image is used inline to identify the location of
+annotations. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="annotation.graphic.close">
+<refmeta>
+<refentrytitle>annotation.graphic.close</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.graphic.close</refname>
+<refpurpose>Image for identifying a link that closes an annotation popup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="annotation.graphic.close.frag">
+&lt;xsl:param name="annotation.graphic.close"&gt;
+http://docbook.sourceforge.net/release/images/annot-close.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This image is used on popup annotations as the &#8220;x&#8221; that the
+user can click to dismiss the popup.</para>
+<para>This image is used on popup annotations as the &#8220;x&#8221; that the user can
+click to dismiss the popup. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="graphics" xml:base="../html/param.xml"><title>Graphics</title>
+<refentry version="5.0" id="img.src.path">
+<refmeta>
+<refentrytitle>img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>img.src.path</refname>
+<refpurpose>Path to HTML/FO image files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="img.src.path.frag">&lt;xsl:param name="img.src.path"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Add a path prefix to the value of the <tag class="attribute">fileref</tag>
+attribute of <tag>graphic</tag>, <tag>inlinegraphic</tag>, and <tag>imagedata</tag> elements. The resulting
+compound path is used in the output as the value of the <tag class="attribute">src</tag>
+attribute of <tag class="element">img</tag> (HTML) or <tag class="element">external-graphic</tag> (FO).
+</para>
+
+<para>
+The path given by <literal>img.src.path</literal> could be relative to the directory where the HTML/FO
+files are created, or it could be an absolute URI.
+The default value is empty.
+Be sure to include a trailing slash if needed.
+</para>
+
+<para>This prefix is not applied to any filerefs that start
+with "/" or contain "//:".
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="keep.relative.image.uris">
+<refmeta>
+<refentrytitle>keep.relative.image.uris</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keep.relative.image.uris</refname>
+<refpurpose>Should image URIs be resolved against xml:base?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="keep.relative.image.uris.frag">
+&lt;xsl:param name="keep.relative.image.uris" select="1"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, relative URIs (in, for example
+<literal>fileref</literal> attributes) will be used in the generated
+output. Otherwise, the URIs will be made absolute with respect to the
+base URI.</para>
+
+<para>Note that the stylesheets calculate (and use) the absolute form
+for some purposes, this only applies to the resulting output.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="graphic.default.extension">
+<refmeta>
+<refentrytitle>graphic.default.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphic.default.extension</refname>
+<refpurpose>Default extension for graphic filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="graphic.default.extension.frag">&lt;xsl:param name="graphic.default.extension"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a <tag>graphic</tag> or <tag>mediaobject</tag>
+includes a reference to a filename that does not include an extension,
+and the <tag class="attribute">format</tag> attribute is
+<emphasis>unspecified</emphasis>, the default extension will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.image.width">
+<refmeta>
+<refentrytitle>default.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.image.width</refname>
+<refpurpose>The default width of images</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.image.width.frag">
+&lt;xsl:param name="default.image.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, this value will be used for the
+<tag class="attribute">width</tag> attribute on images that do not specify any
+<emphasis xlink:title="DocBook 5: The Definitive Guide" xlink:href="http://docbook.org/tdg5/en/html/imagedata.html#viewport.area">viewport dimensions</emphasis>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="nominal.image.width">
+<refmeta>
+<refentrytitle>nominal.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.image.width</refname>
+<refpurpose>The nominal image width</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="nominal.image.width.frag">
+&lt;xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Graphic widths expressed as a percentage are problematic. In the
+following discussion, we speak of width and contentwidth, but
+the same issues apply to depth and contentdepth.</para>
+
+<para>A width of 50% means "half of the available space for the image."
+That's fine. But note that in HTML, this is a dynamic property and
+the image size will vary if the browser window is resized.</para>
+
+<para>A contentwidth of 50% means "half of the actual image width".
+But what does that mean if the stylesheets cannot assess the image's
+actual size? Treating this as a width of 50% is one possibility, but
+it produces behavior (dynamic scaling) that seems entirely out of
+character with the meaning.</para>
+
+<para>Instead, the stylesheets define a
+<parameter>nominal.image.width</parameter> and convert percentages to
+actual values based on that nominal size.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="nominal.image.depth">
+<refmeta>
+<refentrytitle>nominal.image.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.image.depth</refname>
+<refpurpose>Nominal image depth</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="nominal.image.depth.frag">
+&lt;xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>See <parameter>nominal.image.width</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.embed.for.svg">
+<refmeta>
+<refentrytitle>use.embed.for.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.embed.for.svg</refname>
+<refpurpose>Use HTML <tag>embed</tag> for SVG?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.embed.for.svg.frag">
+&lt;xsl:param name="use.embed.for.svg" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, an <tag>embed</tag> element will be created for
+SVG figures. An <tag>object</tag> is <emphasis>always</emphasis> created,
+this parameter merely controls whether or not an additional <tag>embed</tag>
+is generated inside the <tag>object</tag>.</para>
+
+<para>On the plus side, this may be more portable among browsers and plug-ins.
+On the minus side, it isn't valid HTML.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="make.graphic.viewport">
+<refmeta>
+<refentrytitle>make.graphic.viewport</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.graphic.viewport</refname>
+<refpurpose>Use tables in HTML to make viewports for graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.graphic.viewport.frag">
+&lt;xsl:param name="make.graphic.viewport" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The HTML <tag>img</tag> element only supports the notion
+of content-area scaling; it doesn't support the distinction between a
+content-area and a viewport-area, so we have to make some compromises.</para>
+
+<para>If <parameter>make.graphic.viewport</parameter> is non-zero, a table
+will be used to frame the image. This creates an effective viewport-area.
+</para>
+
+<para>Tables and alignment don't work together, so this parameter is ignored
+if alignment is specified on an image.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="preferred.mediaobject.role">
+<refmeta>
+<refentrytitle>preferred.mediaobject.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preferred.mediaobject.role</refname>
+<refpurpose>Select which mediaobject to use based on
+this value of an object's <tag class="attribute">role</tag> attribute.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="preferred.mediaobject.role.frag">
+&lt;xsl:param name="preferred.mediaobject.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A mediaobject may contain several objects such as imageobjects.
+If the parameter <parameter>use.role.for.mediaobject</parameter> is
+non-zero, then the <literal>role</literal> attribute on
+<tag>imageobject</tag>s and other objects within a
+<tag>mediaobject</tag> container will be used to select which object
+will be used. If one of the objects has a role value that matches the
+<parameter>preferred.mediaobject.role</parameter> parameter, then it
+has first priority for selection. If more than one has such a role
+value, the first one is used.
+</para>
+<para>
+See the <parameter>use.role.for.mediaobject</parameter> parameter
+for the sequence of selection.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.role.for.mediaobject">
+<refmeta>
+<refentrytitle>use.role.for.mediaobject</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.for.mediaobject</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute
+value for selecting which of several objects within a mediaobject to use.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.role.for.mediaobject.frag">
+&lt;xsl:param name="use.role.for.mediaobject" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>imageobject</tag>s or other objects within a <tag>mediaobject</tag> container will be used to select which object will be
+used.
+</para>
+<para>
+The order of selection when then parameter is non-zero is:
+</para>
+<orderedlist>
+<listitem>
+ <para>If the stylesheet parameter <parameter>preferred.mediaobject.role</parameter> has a value, then the object whose role equals that value is selected.</para>
+</listitem>
+<listitem>
+<para>Else if an object's role attribute has a value of
+<literal>html</literal> for HTML processing or
+<literal>fo</literal> for FO output, then the first
+of such objects is selected.
+</para>
+</listitem>
+<listitem>
+<para>Else the first suitable object is selected.</para>
+</listitem>
+</orderedlist>
+<para>
+If the value of
+<parameter>use.role.for.mediaobject</parameter>
+is zero, then role attributes are not considered
+and the first suitable object
+with or without a role value is used.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ignore.image.scaling">
+<refmeta>
+<refentrytitle>ignore.image.scaling</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ignore.image.scaling</refname>
+<refpurpose>Tell the stylesheets to ignore the author's image scaling attributes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ignore.image.scaling.frag">
+&lt;xsl:param name="ignore.image.scaling" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the scaling attributes on graphics and media objects are
+ignored.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="chunking" xml:base="../html/param.xml"><title>Chunking</title>
+<refentry version="5.0" id="chunker.output.cdata-section-elements">
+<refmeta>
+<refentrytitle>chunker.output.cdata-section-elements</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.cdata-section-elements</refname>
+<refpurpose>List of elements to escape with CDATA sections</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.cdata-section-elements.frag">
+&lt;xsl:param name="chunker.output.cdata-section-elements"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the list of elements that should be escaped
+as CDATA sections by the chunking stylesheet. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.doctype-public">
+<refmeta>
+<refentrytitle>chunker.output.doctype-public</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.doctype-public</refname>
+<refpurpose>Public identifer to use in the document type of generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.doctype-public.frag">
+&lt;xsl:param name="chunker.output.doctype-public"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the public identifier that should be used by
+the chunking stylesheet in the document type declaration of chunked pages.
+Not all processors support specification of
+this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.doctype-system">
+<refmeta>
+<refentrytitle>chunker.output.doctype-system</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.doctype-system</refname>
+<refpurpose>System identifier to use for the document type in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.doctype-system.frag">
+&lt;xsl:param name="chunker.output.doctype-system"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the system identifier that should be used by
+the chunking stylesheet in the document type declaration of chunked pages.
+Not all processors support specification of
+this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.encoding">
+<refmeta>
+<refentrytitle>chunker.output.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.encoding</refname>
+<refpurpose>Encoding used in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.encoding.frag">
+&lt;xsl:param name="chunker.output.encoding"&gt;ISO-8859-1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the encoding to be used in files
+generated by the chunking stylesheet. Not all processors support
+specification of this parameter.
+</para>
+<para>This parameter used to be named <literal>default.encoding</literal>.</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.indent">
+<refmeta>
+<refentrytitle>chunker.output.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.indent</refname>
+<refpurpose>Specification of indentation on generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.indent.frag">
+&lt;xsl:param name="chunker.output.indent"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the indent
+specification for generated pages. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.media-type">
+<refmeta>
+<refentrytitle>chunker.output.media-type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.media-type</refname>
+<refpurpose>Media type to use in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.media-type.frag">
+&lt;xsl:param name="chunker.output.media-type"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the media type that should be used by
+the chunking stylesheet. Not all processors support specification of
+this parameter.
+</para>
+<para>This parameter specifies the media type that should be used by the
+chunking stylesheet. This should be one from those defined in
+<link xlink:href="http://www.ietf.org/rfc/rfc2045.txt">[RFC2045]</link> and
+ <link xlink:href="http://www.ietf.org/rfc/rfc2046.txt">[RFC2046]</link> </para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+<para>It must be one from html, xml or text</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.method">
+<refmeta>
+<refentrytitle>chunker.output.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">html</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">xml</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.method</refname>
+<refpurpose>Method used in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.method.frag">
+&lt;xsl:param name="chunker.output.method"&gt;html&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the output method to be used in files
+generated by the chunking stylesheet.
+</para>
+<para>This parameter used to be named <literal>output.method</literal>.</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.omit-xml-declaration">
+<refmeta>
+<refentrytitle>chunker.output.omit-xml-declaration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.omit-xml-declaration</refname>
+<refpurpose>Omit-xml-declaration for generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.omit-xml-declaration.frag">
+&lt;xsl:param name="chunker.output.omit-xml-declaration"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the omit-xml-declaration
+specification for generated pages. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunker.output.standalone">
+<refmeta>
+<refentrytitle>chunker.output.standalone</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.standalone</refname>
+<refpurpose>Standalone declaration for generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="chunker.output.standalone.frag">
+&lt;xsl:param name="chunker.output.standalone"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the standalone
+ specification for generated pages. It must be either
+ <literal>yes</literal> or <literal>no</literal>. Not all
+ processors support specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="saxon.character.representation">
+<refmeta>
+<refentrytitle>saxon.character.representation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>saxon.character.representation</refname>
+<refpurpose>Saxon character representation used in generated HTML pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="saxon.character.representation.frag">&lt;xsl:param name="saxon.character.representation" select="'entity;decimal'"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has effect only when Saxon 6 is used (version 6.4.2 or later).
+It sets the character representation in files generated by the chunking stylesheets.
+If you want to suppress entity references for characters with direct representations in
+<parameter>chunker.output.encoding</parameter>, set the parameter value to <literal>native</literal>.
+</para>
+
+<para> For more information, see <link role="tcg" xlink:href="OutputEncoding.html#SaxonCharacter">Saxon output character representation</link>.</para>
+
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="html.ext">
+<refmeta>
+<refentrytitle>html.ext</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.ext</refname>
+<refpurpose>Identifies the extension of generated HTML files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.ext.frag">
+&lt;xsl:param name="html.ext"&gt;.html&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The extension identified by <parameter>html.ext</parameter> will
+be used as the filename extension for chunks created by this
+stylesheet. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.id.as.filename">
+<refmeta>
+<refentrytitle>use.id.as.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.id.as.filename</refname>
+<refpurpose>Use ID value of chunk elements as the filename?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.id.as.filename.frag">
+&lt;xsl:param name="use.id.as.filename" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>use.id.as.filename</parameter>
+is non-zero, the filename of chunk elements that have IDs will be
+derived from the ID value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="html.extra.head.links">
+<refmeta>
+<refentrytitle>html.extra.head.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.extra.head.links</refname>
+<refpurpose>Toggle extra HTML head link information</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="html.extra.head.links.frag">
+&lt;xsl:param name="html.extra.head.links" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extra <tag>link</tag> elements will be
+generated in the <tag>head</tag> of chunked HTML files. These
+extra links point to chapters, appendixes, sections, etc. as supported
+by the <quote>Site Navigation Bar</quote> in Mozilla 1.0 (as of CR1, at least).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="root.filename">
+<refmeta>
+<refentrytitle>root.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root.filename</refname>
+<refpurpose>Identifies the name of the root HTML file when chunking</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="root.filename.frag">
+&lt;xsl:param name="root.filename"&gt;index&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>root.filename</parameter> is the base filename for
+the chunk created for the root of each document processed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="base.dir">
+<refmeta>
+<refentrytitle>base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>base.dir</refname>
+<refpurpose>The base directory of chunks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="base.dir.frag">
+&lt;xsl:param name="base.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, the <parameter>base.dir</parameter> identifies
+the output directory for chunks. (If not specified, the output directory
+is system dependent.)</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.manifest">
+ <refmeta>
+ <refentrytitle>generate.manifest</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>generate.manifest</refname>
+ <refpurpose>Generate a manifest file?</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting id="generate.manifest.frag">&lt;xsl:param name="generate.manifest" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>If non-zero, a list of HTML files generated by the
+ stylesheet transformation is written to the file named by
+ the <parameter>manifest</parameter> parameter.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="manifest">
+ <refmeta>
+ <refentrytitle>manifest</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>manifest</refname>
+ <refpurpose>Name of manifest file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting id="manifest.frag">
+ &lt;xsl:param name="manifest"&gt;HTML.manifest&lt;/xsl:param&gt;
+ </programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>The name of the file to which a manifest is written (if the
+ value of the <parameter>generate.manifest</parameter> parameter
+ is non-zero).</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="manifest.in.base.dir">
+<refmeta>
+<refentrytitle>manifest.in.base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>manifest.in.base.dir</refname>
+<refpurpose>Should the manifest file be written into <parameter>base.dir</parameter>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="manifest.in.base.dir.frag">
+&lt;xsl:param name="manifest.in.base.dir" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the manifest file as well as project files for HTML Help and
+Eclipse Help are written into <parameter>base.dir</parameter> instead
+of the current directory.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.toc">
+<refmeta>
+<refentrytitle>chunk.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.toc</refname>
+<refpurpose>An explicit TOC to be used for chunking</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.toc.frag">
+&lt;xsl:param name="chunk.toc"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>chunk.toc</parameter> identifies an explicit TOC that
+will be used for chunking. This parameter is only used by the
+<filename>chunktoc.xsl</filename> stylesheet (and customization layers built
+from it).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.tocs.and.lots">
+<refmeta>
+<refentrytitle>chunk.tocs.and.lots</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.tocs.and.lots</refname>
+<refpurpose>Should ToC and LoTs be in separate chunks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.tocs.and.lots.frag">
+&lt;xsl:param name="chunk.tocs.and.lots" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ToC and LoT (List of Examples, List of Figures, etc.)
+will be put in a separate chunk. At the moment, this chunk is not in the
+normal forward/backward navigation list. Instead, a new link is added to the
+navigation footer.</para>
+
+<para>This feature is still somewhat experimental. Feedback welcome.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.separate.lots">
+<refmeta>
+<refentrytitle>chunk.separate.lots</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.separate.lots</refname>
+<refpurpose>Should each LoT be in its own separate chunk?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.separate.lots.frag">
+&lt;xsl:param name="chunk.separate.lots" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, each of the ToC and LoTs
+(List of Examples, List of Figures, etc.)
+will be put in its own separate chunk.
+The title page includes generated links to each of the separate files.
+</para>
+<para>
+This feature depends on the
+<parameter>chunk.tocs.and.lots</parameter>
+parameter also being non-zero.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.tocs.and.lots.has.title">
+<refmeta>
+<refentrytitle>chunk.tocs.and.lots.has.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.tocs.and.lots.has.title</refname>
+<refpurpose>Should ToC and LoTs in a separate chunks have title?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.tocs.and.lots.has.title.frag">
+&lt;xsl:param name="chunk.tocs.and.lots.has.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero title of document is shown before ToC/LoT in
+separate chunk.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.section.depth">
+<refmeta>
+<refentrytitle>chunk.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.section.depth</refname>
+<refpurpose>Depth to which sections should be chunked</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.section.depth.frag">
+&lt;xsl:param name="chunk.section.depth" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter sets the depth of section chunking.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.first.sections">
+<refmeta>
+<refentrytitle>chunk.first.sections</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.first.sections</refname>
+<refpurpose>Chunk the first top-level section?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.first.sections.frag">
+&lt;xsl:param name="chunk.first.sections" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a chunk will be created for the first top-level
+<tag>sect1</tag> or <tag>section</tag> elements in
+each component. Otherwise, that section will be part of the chunk for
+its parent.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.quietly">
+<refmeta>
+<refentrytitle>chunk.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.quietly</refname>
+<refpurpose>Omit the chunked filename messages.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.quietly.frag">
+&lt;xsl:param name="chunk.quietly" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), the XSL processor emits a message naming
+each separate chunk filename as it is being output.
+If nonzero, then the messages are suppressed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chunk.append">
+<refmeta>
+<refentrytitle>chunk.append</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.append</refname>
+<refpurpose>Specifies content to append to chunked HTML output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chunk.append.frag">&lt;xsl:param name="chunk.append"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies content to append to the end of HTML files output by
+the <filename>html/chunk.xsl</filename> stylesheet, after the closing
+<code>&lt;html&gt;</code> tag. You probably don&#8217;t want to set any value
+for this parameter; but if you do, the only value it should ever be
+set to is a newline character: <code>&amp;#x0a;</code> or
+<code>&amp;#10;</code></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="navig.graphics">
+<refmeta>
+<refentrytitle>navig.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics</refname>
+<refpurpose>Use graphics in navigational headers and footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="navig.graphics.frag">
+&lt;xsl:param name="navig.graphics" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the navigational headers and footers in chunked
+HTML are presented in an alternate style that uses graphical icons for
+Next, Previous, Up, and Home. Default graphics are provided in the
+distribution. If zero, text is used instead of graphics.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="navig.graphics.extension">
+<refmeta>
+<refentrytitle>navig.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics.extension</refname>
+<refpurpose>Extension for navigational graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="navig.graphics.extension.frag">
+&lt;xsl:param name="navig.graphics.extension"&gt;.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on navigational graphics used
+in the headers and footers of chunked HTML.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="navig.graphics.path">
+<refmeta>
+<refentrytitle>navig.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics.path</refname>
+<refpurpose>Path to navigational graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="navig.graphics.path.frag">
+&lt;xsl:param name="navig.graphics.path"&gt;images/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path, probably relative to the directory where the HTML
+files are created, to the navigational graphics used in the
+headers and footers of chunked HTML.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="navig.showtitles">
+<refmeta>
+<refentrytitle>navig.showtitles</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.showtitles</refname>
+<refpurpose>Display titles in HTML headers and footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="navig.showtitles.frag">&lt;xsl:param name="navig.showtitles"&gt;1&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+the headers and footers of chunked HTML
+display the titles of the next and previous chunks,
+along with the words 'Next' and 'Previous' (or the
+equivalent graphical icons if navig.graphics is true).
+If false (zero), then only the words 'Next' and 'Previous'
+(or the icons) are displayed.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="profiling" xml:base="../html/param.xml"><title>Profiling</title>
+<partintro id="partintro">
+<para>The following parameters can be used for attribute-based
+profiling of your document. For more information about profiling, see
+<link role="tcg" xlink:href="Profiling.html">Profiling (conditional text)</link>.</para>
+</partintro>
+<refentry version="5.0" id="profile.arch">
+<refmeta>
+<refentrytitle>profile.arch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.arch</refname>
+<refpurpose>Target profile for <tag class="attribute">arch</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.arch.frag">
+&lt;xsl:param name="profile.arch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.audience">
+<refmeta>
+<refentrytitle>profile.audience</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.audience</refname>
+<refpurpose>Target profile for <tag class="attribute">audience</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.audience.frag">
+&lt;xsl:param name="profile.audience"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.condition">
+<refmeta>
+<refentrytitle>profile.condition</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.condition</refname>
+<refpurpose>Target profile for <tag class="attribute">condition</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.condition.frag">
+&lt;xsl:param name="profile.condition"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.conformance">
+<refmeta>
+<refentrytitle>profile.conformance</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.conformance</refname>
+<refpurpose>Target profile for <tag class="attribute">conformance</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.conformance.frag">
+&lt;xsl:param name="profile.conformance"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.lang">
+<refmeta>
+<refentrytitle>profile.lang</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.lang</refname>
+<refpurpose>Target profile for <tag class="attribute">lang</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.lang.frag">
+&lt;xsl:param name="profile.lang"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.os">
+<refmeta>
+<refentrytitle>profile.os</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.os</refname>
+<refpurpose>Target profile for <tag class="attribute">os</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.os.frag">
+&lt;xsl:param name="profile.os"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.revision">
+<refmeta>
+<refentrytitle>profile.revision</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revision</refname>
+<refpurpose>Target profile for <tag class="attribute">revision</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.revision.frag">
+&lt;xsl:param name="profile.revision"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.revisionflag">
+<refmeta>
+<refentrytitle>profile.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revisionflag</refname>
+<refpurpose>Target profile for <tag class="attribute">revisionflag</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.revisionflag.frag">
+&lt;xsl:param name="profile.revisionflag"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.role">
+<refmeta>
+<refentrytitle>profile.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.role</refname>
+<refpurpose>Target profile for <tag class="attribute">role</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.role.frag">
+&lt;xsl:param name="profile.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+<warning>
+<para>Note that <tag class="attribute">role</tag> is often
+used for other purposes than profiling. For example it is commonly
+used to get emphasize in bold font:</para>
+
+<programlisting>&lt;emphasis role="bold"&gt;very important&lt;/emphasis&gt;</programlisting>
+
+<para>If you are using <tag class="attribute">role</tag> for
+these purposes do not forget to add values like <literal>bold</literal> to
+value of this parameter. If you forgot you will get document with
+small pieces missing which are very hard to track.</para>
+
+<para>For this reason it is not recommended to use <tag class="attribute">role</tag> attribute for profiling. You should
+rather use profiling specific attributes like <tag class="attribute">userlevel</tag>, <tag class="attribute">os</tag>, <tag class="attribute">arch</tag>, <tag class="attribute">condition</tag>, etc.</para>
+</warning>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.security">
+<refmeta>
+<refentrytitle>profile.security</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.security</refname>
+<refpurpose>Target profile for <tag class="attribute">security</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.security.frag">
+&lt;xsl:param name="profile.security"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.status">
+<refmeta>
+<refentrytitle>profile.status</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.status</refname>
+<refpurpose>Target profile for <tag class="attribute">status</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.status.frag">
+&lt;xsl:param name="profile.status"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.userlevel">
+<refmeta>
+<refentrytitle>profile.userlevel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.userlevel</refname>
+<refpurpose>Target profile for <tag class="attribute">userlevel</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.userlevel.frag">
+&lt;xsl:param name="profile.userlevel"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.vendor">
+<refmeta>
+<refentrytitle>profile.vendor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.vendor</refname>
+<refpurpose>Target profile for <tag class="attribute">vendor</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.vendor.frag">
+&lt;xsl:param name="profile.vendor"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.wordsize">
+<refmeta>
+<refentrytitle>profile.wordsize</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.wordsize</refname>
+<refpurpose>Target profile for <tag class="attribute">wordsize</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.wordsize.frag">
+&lt;xsl:param name="profile.wordsize"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.attribute">
+<refmeta>
+<refentrytitle>profile.attribute</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.attribute</refname>
+<refpurpose>Name of user-specified profiling attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.attribute.frag">
+&lt;xsl:param name="profile.attribute"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter is used in conjuction with
+<parameter>profile.value</parameter>.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.value">
+<refmeta>
+<refentrytitle>profile.value</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.value</refname>
+<refpurpose>Target profile for user-specified attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.value.frag">
+&lt;xsl:param name="profile.value"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When you are using this parameter you must also specify name of
+profiling attribute with parameter
+<parameter>profile.attribute</parameter>.</para>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.separator">
+<refmeta>
+<refentrytitle>profile.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.separator</refname>
+<refpurpose>Separator character for compound profile values</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.separator.frag">
+&lt;xsl:param name="profile.separator"&gt;;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator character used for compound profile values. See <parameter>profile.arch</parameter></para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="htmlhelp" xml:base="../html/param.xml"><title>HTML Help</title>
+<refentry version="5.0" id="htmlhelp.encoding">
+<refmeta>
+<refentrytitle>htmlhelp.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.encoding</refname>
+<refpurpose>Character encoding to use in files for HTML Help compiler.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.encoding.frag">
+&lt;xsl:param name="htmlhelp.encoding"&gt;iso-8859-1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>HTML Help Compiler is not UTF-8 aware, so you should always use an
+appropriate single-byte encoding here. Use one from <link xlink:href="ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets">iana</link>, the registered charset values.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.autolabel">
+<refmeta>
+<refentrytitle>htmlhelp.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.autolabel</refname>
+<refpurpose>Should tree-like ToC use autonumbering feature?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.autolabel.frag">
+&lt;xsl:param name="htmlhelp.autolabel" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set this to non-zero to include chapter and section numbers into ToC
+in the left panel.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.chm">
+<refmeta>
+<refentrytitle>htmlhelp.chm</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.chm</refname>
+<refpurpose>Filename of output HTML Help file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.chm.frag">
+&lt;xsl:param name="htmlhelp.chm"&gt;htmlhelp.chm&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the name of resulting CHM file</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.default.topic">
+<refmeta>
+<refentrytitle>htmlhelp.default.topic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.default.topic</refname>
+<refpurpose>Name of file with default topic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.default.topic.frag">
+&lt;xsl:param name="htmlhelp.default.topic"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Normally first chunk of document is displayed when you open HTML
+Help file. If you want to display another topic, simply set its
+filename by this parameter.</para>
+
+<para>This is useful especially if you don't generate ToC in front of
+your document and you also hide root element in ToC. E.g.:</para>
+
+<programlisting>&lt;xsl:param name="generate.book.toc" select="0"/&gt;
+&lt;xsl:param name="htmlhelp.hhc.show.root" select="0"/&gt;
+&lt;xsl:param name="htmlhelp.default.topic"&gt;pr01.html&lt;/xsl:param&gt;
+</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.display.progress">
+<refmeta>
+<refentrytitle>htmlhelp.display.progress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.display.progress</refname>
+<refpurpose>Display compile progress?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.display.progress.frag">
+&lt;xsl:param name="htmlhelp.display.progress" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to to display compile progress
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhp">
+<refmeta>
+<refentrytitle>htmlhelp.hhp</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp</refname>
+<refpurpose>Filename of project file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhp.frag">
+&lt;xsl:param name="htmlhelp.hhp"&gt;htmlhelp.hhp&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Change this parameter if you want different name of project
+file than htmlhelp.hhp.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhc">
+<refmeta>
+<refentrytitle>htmlhelp.hhc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc</refname>
+<refpurpose>Filename of TOC file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhc.frag">
+&lt;xsl:param name="htmlhelp.hhc"&gt;toc.hhc&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the name of the TOC file. The default is <filename>toc.hhc</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhk">
+<refmeta>
+<refentrytitle>htmlhelp.hhk</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhk</refname>
+<refpurpose>Filename of index file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhk.frag">
+&lt;xsl:param name="htmlhelp.hhk"&gt;index.hhk&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>set the name of the index file. The default is <filename>index.hhk</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhp.tail">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.tail</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.tail</refname>
+<refpurpose>Additional content for project file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhp.tail.frag">
+&lt;xsl:param name="htmlhelp.hhp.tail"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want to include some additional parameters into project file,
+store appropriate part of project file into this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhp.window">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.window</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.window</refname>
+<refpurpose>Name of default window.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhp.window.frag">
+&lt;xsl:param name="htmlhelp.hhp.window"&gt;Main&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Name of default window. If empty no [WINDOWS] section will be
+added to project file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhp.windows">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.windows</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.windows</refname>
+<refpurpose>Definition of additional windows</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhp.windows.frag">
+&lt;xsl:param name="htmlhelp.hhp.windows"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Content of this parameter is placed at the end of [WINDOWS]
+section of project file. You can use it for defining your own
+addtional windows.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.enhanced.decompilation">
+<refmeta>
+<refentrytitle>htmlhelp.enhanced.decompilation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.enhanced.decompilation</refname>
+<refpurpose>Allow enhanced decompilation of CHM?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.enhanced.decompilation.frag">
+&lt;xsl:param name="htmlhelp.enhanced.decompilation" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When non-zero this parameter enables enhanced decompilation of CHM.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.enumerate.images">
+<refmeta>
+<refentrytitle>htmlhelp.enumerate.images</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.enumerate.images</refname>
+<refpurpose>Should the paths to all used images be added to the project file?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.enumerate.images.frag">
+&lt;xsl:param name="htmlhelp.enumerate.images" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero if you insert images into your documents as
+external binary entities or if you are using absolute image paths.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.force.map.and.alias">
+<refmeta>
+<refentrytitle>htmlhelp.force.map.and.alias</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.force.map.and.alias</refname>
+<refpurpose>Should [MAP] and [ALIAS] sections be added to the project file unconditionally?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="htmlhelp.force.map.and.alias.frag">
+&lt;xsl:param name="htmlhelp.force.map.and.alias" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+ <para>Set to non-zero if you have your own
+ <literal>alias.h</literal> and <literal>context.h</literal>
+ files and you want to include references to them in the project
+ file.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.map.file">
+<refmeta>
+<refentrytitle>htmlhelp.map.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.map.file</refname>
+<refpurpose>Filename of map file.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="htmlhelp.map.file.frag">
+&lt;xsl:param name="htmlhelp.map.file"&gt;context.h&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Set the name of map file. The default is
+ <filename>context.h</filename>. (used for context-sensitive
+ help).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.alias.file">
+<refmeta>
+<refentrytitle>htmlhelp.alias.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.alias.file</refname>
+<refpurpose>Filename of alias file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.alias.file.frag">
+&lt;xsl:param name="htmlhelp.alias.file"&gt;alias.h&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the alias file (used for context-sensitive help).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhc.section.depth">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.section.depth</refname>
+<refpurpose>Depth of TOC for sections in a left pane.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhc.section.depth.frag">
+&lt;xsl:param name="htmlhelp.hhc.section.depth"&gt;5&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the section depth in the left pane of HTML Help viewer. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhc.show.root">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.show.root</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.show.root</refname>
+<refpurpose>Should there be an entry for the root element in the ToC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhc.show.root.frag">
+&lt;xsl:param name="htmlhelp.hhc.show.root" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If set to zero, there will be no entry for the root element in the
+ToC. This is useful when you want to provide the user with an expanded
+ToC as a default.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhc.folders.instead.books">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.folders.instead.books</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.folders.instead.books</refname>
+<refpurpose>Use folder icons in ToC (instead of book icons)?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhc.folders.instead.books.frag">
+&lt;xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero for folder-like icons or zero for book-like icons in the ToC.
+If you want to use folder-like icons, you must switch off the binary ToC using
+<parameter>htmlhelp.hhc.binary</parameter>.
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhc.binary">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.binary</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.binary</refname>
+<refpurpose>Generate binary ToC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhc.binary.frag">
+&lt;xsl:param name="htmlhelp.hhc.binary" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to generate a binary TOC. You must create a binary TOC
+if you want to add Prev/Next buttons to toolbar (which is default
+behaviour). Files with binary TOC can't be merged.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.hhc.width">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.width</refname>
+<refpurpose>Width of navigation pane</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.hhc.width.frag">
+&lt;xsl:param name="htmlhelp.hhc.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the width of the navigation pane (containing TOC and
+other navigation tabs) in pixels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.title">
+<refmeta>
+<refentrytitle>htmlhelp.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.title</refname>
+<refpurpose>Title of HTML Help</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.title.frag">
+&lt;xsl:param name="htmlhelp.title"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Content of this parameter will be used as a title for generated
+HTML Help. If empty, title will be automatically taken from document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.show.menu">
+<refmeta>
+<refentrytitle>htmlhelp.show.menu</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.menu</refname>
+<refpurpose>Should the menu bar be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.show.menu.frag">
+&lt;xsl:param name="htmlhelp.show.menu" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to have an application menu bar in your HTML Help window.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.show.toolbar.text">
+<refmeta>
+<refentrytitle>htmlhelp.show.toolbar.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.toolbar.text</refname>
+<refpurpose>Show text under toolbar buttons?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.show.toolbar.text.frag">
+&lt;xsl:param name="htmlhelp.show.toolbar.text" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to display texts under toolbar buttons, zero to switch
+off displays.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.show.advanced.search">
+<refmeta>
+<refentrytitle>htmlhelp.show.advanced.search</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.advanced.search</refname>
+<refpurpose>Should advanced search features be available?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.show.advanced.search.frag">
+&lt;xsl:param name="htmlhelp.show.advanced.search" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want advanced search features in your help, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.show.favorities">
+<refmeta>
+<refentrytitle>htmlhelp.show.favorities</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.favorities</refname>
+<refpurpose>Should the Favorites tab be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.show.favorities.frag">
+&lt;xsl:param name="htmlhelp.show.favorities" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include a Favorites tab in the navigation pane
+of the help window.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.hideshow">
+<refmeta>
+<refentrytitle>htmlhelp.button.hideshow</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.hideshow</refname>
+<refpurpose>Should the Hide/Show button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.hideshow.frag">
+&lt;xsl:param name="htmlhelp.button.hideshow" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Hide/Show button shown on toolbar</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.back">
+<refmeta>
+<refentrytitle>htmlhelp.button.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.back</refname>
+<refpurpose>Should the Back button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.back.frag">
+&lt;xsl:param name="htmlhelp.button.back" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Hide/Show button shown on toolbar</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.forward">
+<refmeta>
+<refentrytitle>htmlhelp.button.forward</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.forward</refname>
+<refpurpose>Should the Forward button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.forward.frag">
+&lt;xsl:param name="htmlhelp.button.forward" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Forward button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.stop">
+<refmeta>
+<refentrytitle>htmlhelp.button.stop</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.stop</refname>
+<refpurpose>Should the Stop button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.stop.frag">
+&lt;xsl:param name="htmlhelp.button.stop" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Stop button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.refresh">
+<refmeta>
+<refentrytitle>htmlhelp.button.refresh</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.refresh</refname>
+<refpurpose>Should the Refresh button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.refresh.frag">
+&lt;xsl:param name="htmlhelp.button.refresh" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Stop button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.home">
+<refmeta>
+<refentrytitle>htmlhelp.button.home</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.home</refname>
+<refpurpose>Should the Home button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.home.frag">
+&lt;xsl:param name="htmlhelp.button.home" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Home button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.home.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.home.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.home.url</refname>
+<refpurpose>URL address of page accessible by Home button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.home.url.frag">
+&lt;xsl:param name="htmlhelp.button.home.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Home button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.options">
+<refmeta>
+<refentrytitle>htmlhelp.button.options</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.options</refname>
+<refpurpose>Should the Options button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.options.frag">
+&lt;xsl:param name="htmlhelp.button.options" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Options button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.print">
+<refmeta>
+<refentrytitle>htmlhelp.button.print</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.print</refname>
+<refpurpose>Should the Print button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.print.frag">
+&lt;xsl:param name="htmlhelp.button.print" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Print button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.locate">
+<refmeta>
+<refentrytitle>htmlhelp.button.locate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.locate</refname>
+<refpurpose>Should the Locate button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.locate.frag">
+&lt;xsl:param name="htmlhelp.button.locate" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Locate button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.jump1">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1</refname>
+<refpurpose>Should the Jump1 button be shown?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.jump1.frag">
+&lt;xsl:param name="htmlhelp.button.jump1" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+ <para>Set to non-zero to include the <literal>Jump1</literal> button on the toolbar.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.jump1.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1.url</refname>
+<refpurpose>URL address of page accessible by Jump1 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.jump1.url.frag">
+&lt;xsl:param name="htmlhelp.button.jump1.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Jump1 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.jump1.title">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1.title</refname>
+<refpurpose>Title of Jump1 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.jump1.title.frag">
+&lt;xsl:param name="htmlhelp.button.jump1.title"&gt;User1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Title of Jump1 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.jump2">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2</refname>
+<refpurpose>Should the Jump2 button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.jump2.frag">
+&lt;xsl:param name="htmlhelp.button.jump2" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Jump2 button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.jump2.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2.url</refname>
+<refpurpose>URL address of page accessible by Jump2 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.jump2.url.frag">
+&lt;xsl:param name="htmlhelp.button.jump2.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Jump2 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.jump2.title">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2.title</refname>
+<refpurpose>Title of Jump2 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.jump2.title.frag">
+&lt;xsl:param name="htmlhelp.button.jump2.title"&gt;User2&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Title of Jump2 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.next">
+<refmeta>
+<refentrytitle>htmlhelp.button.next</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.next</refname>
+<refpurpose>Should the Next button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.next.frag">
+&lt;xsl:param name="htmlhelp.button.next" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Next button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.prev">
+<refmeta>
+<refentrytitle>htmlhelp.button.prev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.prev</refname>
+<refpurpose>Should the Prev button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.prev.frag">
+&lt;xsl:param name="htmlhelp.button.prev" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Prev button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.button.zoom">
+<refmeta>
+<refentrytitle>htmlhelp.button.zoom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.zoom</refname>
+<refpurpose>Should the Zoom button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.button.zoom.frag">
+&lt;xsl:param name="htmlhelp.button.zoom" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Zoom button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.remember.window.position">
+<refmeta>
+<refentrytitle>htmlhelp.remember.window.position</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.remember.window.position</refname>
+<refpurpose>Remember help window position?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.remember.window.position.frag">
+&lt;xsl:param name="htmlhelp.remember.window.position" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to remember help window position between starts.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.window.geometry">
+<refmeta>
+<refentrytitle>htmlhelp.window.geometry</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.window.geometry</refname>
+<refpurpose>Set initial geometry of help window</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.window.geometry.frag">
+&lt;xsl:param name="htmlhelp.window.geometry"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies initial position of help
+window. E.g.</para>
+
+<programlisting>&lt;xsl:param name="htmlhelp.window.geometry"&gt;[160,64,992,704]&lt;/xsl:param&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.use.hhk">
+<refmeta>
+<refentrytitle>htmlhelp.use.hhk</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.use.hhk</refname>
+<refpurpose>Should the index be built using the HHK file?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.use.hhk.frag">
+&lt;xsl:param name="htmlhelp.use.hhk" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the index is created using the HHK file (instead of using <tag role="html">object</tag>
+elements in the HTML files). For more information, see <link role="tcg" xlink:href="HtmlHelp.html#HHGenIndex">Generating an index</link>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="htmlhelp.only">
+<refmeta>
+<refentrytitle>htmlhelp.only</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.only</refname>
+<refpurpose>Should only project files be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="htmlhelp.only.frag">
+&lt;xsl:param name="htmlhelp.only" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+
+<para>Set to non-zero if you want to play with various HTML Help parameters
+and you don't need to regenerate all HTML files. This setting will not
+process whole document, only project files (hhp, hhc, hhk,...) will be
+generated.</para>
+
+
+</refsection>
+</refentry>
+
+</reference><reference id="eclipse_help" xml:base="../html/param.xml"><title>Eclipse Help Platform</title>
+<refentry version="5.0" id="eclipse.autolabel">
+<refmeta>
+<refentrytitle>eclipse.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.autolabel</refname>
+<refpurpose>Should tree-like ToC use autonumbering feature?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="eclipse.autolabel.frag">
+&lt;xsl:param name="eclipse.autolabel" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want to include chapter and section numbers into ToC in
+the left panel, set this parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="eclipse.plugin.name">
+<refmeta>
+<refentrytitle>eclipse.plugin.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.name</refname>
+<refpurpose>Eclipse Help plugin name</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="eclipse.plugin.name.frag">
+&lt;xsl:param name="eclipse.plugin.name"&gt;DocBook Online Help Sample&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin name.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="eclipse.plugin.id">
+<refmeta>
+<refentrytitle>eclipse.plugin.id</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.id</refname>
+<refpurpose>Eclipse Help plugin id</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="eclipse.plugin.id.frag">
+&lt;xsl:param name="eclipse.plugin.id"&gt;com.example.help&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin id. You should change this id to something
+unique for each help.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="eclipse.plugin.provider">
+<refmeta>
+<refentrytitle>eclipse.plugin.provider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.provider</refname>
+<refpurpose>Eclipse Help plugin provider name</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="eclipse.plugin.provider.frag">
+&lt;xsl:param name="eclipse.plugin.provider"&gt;Example provider&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin provider name.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="javahelp" xml:base="../html/param.xml"><title>JavaHelp</title>
+<refentry version="5.0" id="javahelp.encoding">
+<refmeta>
+<refentrytitle>javahelp.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>javahelp.encoding</refname>
+<refpurpose>Character encoding to use in control files for JavaHelp.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="javahelp.encoding.frag">
+&lt;xsl:param name="javahelp.encoding"&gt;iso-8859-1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>JavaHelp crashes on some characters when written as character
+references. In that case you can use this parameter to select an appropriate encoding.</para>
+
+</refsection>
+</refentry>
+
+
+
+
+</reference><reference id="l10n" xml:base="../html/param.xml"><title>Localization</title>
+<refentry version="5.0" id="l10n.gentext.language">
+<refmeta>
+<refentrytitle>l10n.gentext.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.language</refname>
+<refpurpose>Sets the gentext language</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="l10n.gentext.language.frag">
+&lt;xsl:param name="l10n.gentext.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this parameter is set to any value other than the empty string, its
+value will be used as the value for the language when generating text. Setting
+<parameter>l10n.gentext.language</parameter> overrides any settings within the
+document being formatted.</para>
+
+<para>It's much more likely that you might want to set the
+<parameter>l10n.gentext.default.language</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="l10n.gentext.default.language">
+ <refmeta>
+ <refentrytitle>l10n.gentext.default.language</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>l10n.gentext.default.language</refname>
+ <refpurpose>Sets the default language for generated text</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<programlisting id="l10n.gentext.default.language.frag">
+&lt;xsl:param name="l10n.gentext.default.language"&gt;en&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of the <parameter>l10n.gentext.default.language</parameter>
+parameter is used as the language for generated text if no setting is provided
+in the source document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="l10n.gentext.use.xref.language">
+<refmeta>
+<refentrytitle>l10n.gentext.use.xref.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.use.xref.language</refname>
+<refpurpose>Use the language of target when generating cross-reference text?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="l10n.gentext.use.xref.language.frag">
+&lt;xsl:param name="l10n.gentext.use.xref.language" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the language of the target will be used when
+generating cross reference text. Usually, the <quote>current</quote>
+language is used when generating text (that is, the language of the
+element that contains the cross-reference element). But setting this parameter
+allows the language of the element <emphasis>pointed to</emphasis> to control
+the generated text.</para>
+
+<para>Consider the following example:</para>
+
+<informalexample>
+<programlisting>&lt;para lang="en"&gt;See also &lt;xref linkend="chap3"/&gt;.&lt;/para&gt;
+</programlisting>
+</informalexample>
+
+<para>Suppose that Chapter 3 happens to be written in German.
+If <parameter>l10n.gentext.use.xref.language</parameter> is non-zero, the
+resulting text will be something like this:</para>
+
+<blockquote>
+<para>See also Kapital 3.</para>
+</blockquote>
+
+<para>Where the more traditional rendering would be:</para>
+
+<blockquote>
+<para>See also Chapter 3.</para>
+</blockquote>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="l10n.lang.value.rfc.compliant">
+<refmeta>
+<refentrytitle>l10n.lang.value.rfc.compliant</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.lang.value.rfc.compliant</refname>
+<refpurpose>Make value of lang attribute RFC compliant?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="l10n.lang.value.rfc.compliant.frag">
+&lt;xsl:param name="l10n.lang.value.rfc.compliant" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ensure that the values for all <tag class="attribute">lang</tag> attributes in HTML output are RFC
+compliant<footnote><para>Section 8.1.1, <link xlink:href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.1.1">Language Codes</link>, in the HTML 4.0 Recommendation states that:
+
+<blockquote><para>[RFC1766] defines and explains the language codes
+that must be used in HTML documents.</para>
+<para>Briefly, language codes consist of a primary code and a possibly
+empty series of subcodes:
+
+<literallayout class="monospaced">language-code = primary-code ( "-" subcode )*</literallayout>
+</para>
+<para>And in RFC 1766, <link xlink:href="http://www.ietf.org/rfc/rfc1766.txt">Tags for the Identification
+of Languages</link>, the EBNF for "language tag" is given as:
+
+<literallayout class="monospaced">Language-Tag = Primary-tag *( "-" Subtag )
+Primary-tag = 1*8ALPHA
+Subtag = 1*8ALPHA</literallayout>
+</para>
+</blockquote>
+</para></footnote>.
+
+by taking any underscore characters in any <tag class="attribute">lang</tag> values found in source documents, and
+replacing them with hyphen characters in output HTML files. For
+example, <literal>zh_CN</literal> in a source document becomes
+<literal>zh-CN</literal> in the HTML output form that source.
+
+<note>
+<para>This parameter does not cause any case change in <tag class="attribute">lang</tag> values, because RFC 1766
+explicitly states that all "language tags" (as it calls them) "are
+to be treated as case insensitive".</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="writing.mode">
+<refmeta>
+<refentrytitle>writing.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>writing.mode</refname>
+<refpurpose>Direction of text flow based on locale</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="writing.mode.frag">
+&lt;xsl:param name="writing.mode"&gt;
+ &lt;xsl:call-template name="gentext"&gt;
+ &lt;xsl:with-param name="key"&gt;writing-mode&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="lang"&gt;
+ &lt;xsl:call-template name="l10n.language"&gt;
+ &lt;xsl:with-param name="target" select="/*[1]"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets direction of text flow and text alignment based on locale.
+The value is normally taken from the gentext file for the
+lang attribute of the document's root element, using the
+key name 'writing-mode' to look it up in the gentext file.
+But the param can also be
+set on the command line to override that gentext value.
+</para>
+<para>Accepted values are:
+<variablelist>
+ <varlistentry>
+ <term>lr-tb</term>
+ <listitem>
+ <para>Left-to-right text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl-tb</term>
+ <listitem>
+ <para>Right-to-left text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb-rl</term>
+ <listitem>
+ <para>Top-to-bottom text flow in each vertical line, lines stack right to left.
+ Supported by only a few XSL-FO processors. Not supported in HTML output.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>lr</term>
+ <listitem>
+ <para>Shorthand for lr-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl</term>
+ <listitem>
+ <para>Shorthand for rl-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb</term>
+ <listitem>
+ <para>Shorthand for tb-rl.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+ </part>
+ <part id="fo">
+ <?dbhtml dir="fo"?>
+ <?dbhtml filename="index.html"?>
+ <title xml:base="../fo/param.xml">FO Parameter Reference</title>
+ <partintro id="fointro">
+
+ <para xml:base="../fo/param.xml">This is reference documentation for all user-configurable
+ parameters in the DocBook XSL FO stylesheets (for generating
+ XSL-FO output destined for final print/PDF output).</para>
+
+ </partintro>
+ <reference id="admons" xml:base="../fo/param.xml"><title>Admonitions</title>
+<refentry version="5.0" id="admon.graphics">
+<refmeta>
+<refentrytitle>admon.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics</refname>
+<refpurpose>Use graphics in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.frag">
+&lt;xsl:param name="admon.graphics" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented in an alternate style that uses
+a graphic. Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admon.graphics.extension">
+<refmeta>
+<refentrytitle>admon.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.extension</refname>
+<refpurpose>Filename extension for admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.extension.frag">
+&lt;xsl:param name="admon.graphics.extension"&gt;.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on admonition graphics.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admon.graphics.path">
+<refmeta>
+<refentrytitle>admon.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.path</refname>
+<refpurpose>Path to admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.path.frag">&lt;xsl:param name="admon.graphics.path"&gt;images/&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory containing the admonition graphics
+(caution.png, important.png etc). This location is normally relative
+to the output html directory. See <parameter>base.dir</parameter></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admon.textlabel">
+<refmeta>
+<refentrytitle>admon.textlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.textlabel</refname>
+<refpurpose>Use text label in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.textlabel.frag">
+&lt;xsl:param name="admon.textlabel" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented with a generated
+text label such as Note or Warning in the appropriate language.
+If zero, such labels are turned off, but any title child
+of the admonition element are still output.
+The default value is 1.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admonition.title.properties">
+
+<refmeta>
+ <refentrytitle>admonition.title.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admonition.title.properties</refname>
+<refpurpose>To set the style for admonitions titles.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admonition.title.properties.frag">
+&lt;xsl:attribute-set name="admonition.title.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;14pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want admonitions titles styled? </para>
+<para>Set the font-size, weight etc to the style required.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="admonition.properties">
+<refmeta>
+ <refentrytitle>admonition.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admonition.properties</refname>
+<refpurpose>To set the style for admonitions.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admonition.properties.frag">&lt;xsl:attribute-set name="admonition.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want admonitions styled? </para>
+<para>Set the font-size, weight, etc. to the style required</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="graphical.admonition.properties">
+<refmeta>
+<refentrytitle>graphical.admonition.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphical.admonition.properties</refname>
+<refpurpose>To add properties to the outer block of a graphical admonition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="graphical.admonition.properties.frag">&lt;xsl:attribute-set name="graphical.admonition.properties"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the outer block containing the
+entire graphical admonition, including its title.
+It is used when the parameter
+<parameter>admon.graphics</parameter> is set to nonzero.
+Use this attribute-set to set the space above and below,
+and any indent for the whole admonition.</para>
+
+<para>In addition to these properties, a graphical admonition
+also applies the <parameter>admonition.title.properties</parameter>
+attribute-set to the title, and applies the
+<parameter>admonition.properties</parameter> attribute-set
+to the rest of the content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="nongraphical.admonition.properties">
+<refmeta>
+<refentrytitle>nongraphical.admonition.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nongraphical.admonition.properties</refname>
+<refpurpose>To add properties to the outer block of a nongraphical admonition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="nongraphical.admonition.properties.frag">&lt;xsl:attribute-set name="nongraphical.admonition.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0.25in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;0.25in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the outer block containing the
+entire nongraphical admonition, including its title.
+It is used when the parameter
+<parameter>admon.graphics</parameter> is set to zero.
+Use this attribute-set to set the space above and below,
+and any indent for the whole admonition.</para>
+
+<para>In addition to these properties, a nongraphical admonition
+also applies the <parameter>admonition.title.properties</parameter>
+attribute-set to the title, and the
+<parameter>admonition.properties</parameter> attribute-set
+to the rest of the content.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="callouts" xml:base="../fo/param.xml"><title>Callouts</title>
+<refentry version="5.0" id="callout.defaultcolumn">
+<refmeta>
+<refentrytitle>callout.defaultcolumn</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.defaultcolumn</refname>
+<refpurpose>Indicates what column callouts appear in by default</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.defaultcolumn.frag">
+&lt;xsl:param name="callout.defaultcolumn"&gt;60&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a callout does not identify a column (for example, if it uses
+the <literal>linerange</literal> <tag class="attribute">unit</tag>),
+it will appear in the default column.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics">
+<refmeta>
+<refentrytitle>callout.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics</refname>
+<refpurpose>Use graphics for callouts?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.frag">
+&lt;xsl:param name="callout.graphics" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, callouts are presented with graphics (e.g., reverse-video
+circled numbers instead of "(1)", "(2)", etc.).
+Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics.extension">
+<refmeta>
+<refentrytitle>callout.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.extension</refname>
+<refpurpose>Filename extension for callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.extension.frag">
+
+&lt;xsl:param name="callout.graphics.extension"&gt;.svg&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Sets the filename extension to use on callout graphics. </para>
+
+<itemizedlist>
+<para>The Docbook XSL distribution provides callout graphics in the following formats:</para>
+<listitem><para>SVG (extension: <filename class="extension">.svg</filename>)</para></listitem>
+<listitem><para>PNG (extension: <filename class="extension">.png</filename>)</para></listitem>
+<listitem><para>GIF (extension: <filename class="extension">.gif</filename>)</para></listitem>
+</itemizedlist>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics.number.limit">
+<refmeta>
+<refentrytitle>callout.graphics.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.number.limit</refname>
+<refpurpose>Number of the largest callout graphic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.number.limit.frag">
+
+&lt;xsl:param name="callout.graphics.number.limit"&gt;30&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is non-zero, graphics
+are used to represent callout numbers instead of plain text. The value
+of <parameter>callout.graphics.number.limit</parameter> is the largest
+number for which a graphic exists. If the callout number exceeds this
+limit, the default presentation "(plain text instead of a graphic)"
+will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.graphics.path">
+<refmeta>
+<refentrytitle>callout.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.path</refname>
+<refpurpose>Path to callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.path.frag">
+&lt;xsl:param name="callout.graphics.path"&gt;images/callouts/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory holding the callout graphics. his
+location is normally relative to the output html directory. see
+base.dir. Always terminate the directory with / since the graphic file
+is appended to this string, hence needs the separator.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.icon.size">
+<refmeta>
+<refentrytitle>callout.icon.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.icon.size</refname>
+<refpurpose>Specifies the size of callout marker icons</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.icon.size.frag">
+&lt;xsl:param name="callout.icon.size"&gt;7pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the size of the callout marker icons.
+The default size is 7 points.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.unicode">
+<refmeta>
+<refentrytitle>callout.unicode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode</refname>
+<refpurpose>Use Unicode characters rather than images for callouts.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.frag">&lt;xsl:param name="callout.unicode" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.unicode.font">
+<refmeta>
+<refentrytitle>callout.unicode.font</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.font</refname>
+<refpurpose>Specify a font for Unicode glyphs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.font.frag">
+&lt;xsl:param name="callout.unicode.font"&gt;ZapfDingbats&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The name of the font to specify around Unicode callout glyphs.
+If set to the empty string, no font change will occur.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.unicode.number.limit">
+<refmeta>
+<refentrytitle>callout.unicode.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.number.limit</refname>
+<refpurpose>Number of the largest unicode callout character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.number.limit.frag">
+&lt;xsl:param name="callout.unicode.number.limit"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.number.limit</parameter>
+is
+the largest number for which a unicode character exists. If the callout number
+exceeds this limit, the default presentation "(nnn)" will always
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callout.unicode.start.character">
+<refmeta>
+<refentrytitle>callout.unicode.start.character</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.start.character</refname>
+<refpurpose>First Unicode character to use, decimal value.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.start.character.frag">
+&lt;xsl:param name="callout.unicode.start.character"&gt;10102&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is zero and <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.start.character</parameter>
+is the decimal unicode value used for callout number one. Currently,
+only 10102 is supported in the stylesheets for this parameter.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="callouts.extension">
+<refmeta>
+<refentrytitle>callouts.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callouts.extension</refname>
+<refpurpose>Enable the callout extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callouts.extension.frag">
+&lt;xsl:param name="callouts.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The callouts extension processes <tag>areaset</tag>
+elements in <tag>programlistingco</tag> and other text-based
+callout elements.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="toc_index" xml:base="../fo/param.xml"><title>ToC/LoT/Index Generation</title>
+<refentry version="5.0" id="autotoc.label.separator">
+<refmeta>
+<refentrytitle>autotoc.label.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.separator</refname>
+<refpurpose>Separator between labels and titles in the ToC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="autotoc.label.separator.frag">
+&lt;xsl:param name="autotoc.label.separator"&gt;. &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>String used to separate labels and titles in a table of contents.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="process.empty.source.toc">
+<refmeta>
+<refentrytitle>process.empty.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.empty.source.toc</refname>
+<refpurpose>Generate automated TOC if <tag>toc</tag> element occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="process.empty.source.toc.frag">&lt;xsl:param name="process.empty.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that if an empty <tag>toc</tag> element is found in a
+source document, an automated TOC is generated at this point in the
+document.
+<note>
+ <para>Depending on what the value of the
+ <parameter>generate.toc</parameter> parameter is, setting this
+ parameter to <literal>1</literal> could result in generation of
+ duplicate automated TOCs. So the
+ <parameter>process.empty.source.toc</parameter> is primarily useful
+ as an "override": by placing an empty <tag>toc</tag> in your
+ document and setting this parameter to <literal>1</literal>, you can
+ force a TOC to be generated even if <tag>generate.toc</tag>
+ says not to.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="process.source.toc">
+<refmeta>
+<refentrytitle>process.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.source.toc</refname>
+<refpurpose>Process a non-empty <tag>toc</tag> element if it occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="process.source.toc.frag">&lt;xsl:param name="process.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that the contents of a non-empty "hard-coded"
+<tag>toc</tag> element in a source document are processed to
+generate a TOC in output.
+<note>
+ <para>This parameter has no effect on automated generation of
+ TOCs. An automated TOC may still be generated along with the
+ "hard-coded" TOC. To suppress automated TOC generation, adjust the
+ value of the <parameter>generate.toc</parameter> paramameter.</para>
+
+ <para>The <tag>process.source.toc</tag> parameter also has
+ no effect if the <tag>toc</tag> element is empty; handling
+ for empty <tag>toc</tag> is controlled by the
+ <parameter>process.empty.source.toc</parameter> parameter.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.toc">
+<refmeta>
+<refentrytitle>generate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.toc</refname>
+<refpurpose>Control generation of ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.toc.frag">
+
+&lt;xsl:param name="generate.toc"&gt;
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has a structured value. It is a table of space-delimited
+path/value pairs. Each path identifies some element in the source document
+using a restricted subset of XPath (only the implicit child axis, no wildcards,
+no predicates). Paths can be either relative or absolute.</para>
+
+<para>When processing a particular element, the stylesheets consult this table to
+determine if a ToC (or LoT(s)) should be generated.</para>
+
+<para>For example, consider the entry:</para>
+
+<screen>book toc,figure</screen>
+
+<para>This indicates that whenever a <tag>book</tag> is formatted, a
+Table Of Contents and a List of Figures should be generated. Similarly,</para>
+
+<screen>/chapter toc</screen>
+
+<para>indicates that whenever a document <emphasis>that has a root
+of</emphasis> <tag>chapter</tag> is formatted, a Table of
+Contents should be generated. The entry <literal>chapter</literal> would match
+all chapters, but <literal>/chapter</literal> matches only <tag>chapter</tag>
+document elements.</para>
+
+<para>Generally, the longest match wins. So, for example, if you want to distinguish
+articles in books from articles in parts, you could use these two entries:</para>
+
+<screen>book/article toc,figure
+part/article toc</screen>
+
+<para>Note that an article in a part can never match a <literal>book/article</literal>,
+so if you want nothing to be generated for articles in parts, you can simply leave
+that rule out.</para>
+
+<para>If you want to leave the rule in, to make it explicit that you're turning
+something off, use the value <quote>nop</quote>. For example, the following
+entry disables ToCs and LoTs for articles:</para>
+
+<screen>article nop</screen>
+
+<para>Do not simply leave the word <quote>article</quote> in the file
+without a matching value. That'd be just begging the silly little
+path/value parser to get confused.</para>
+
+<para>Section ToCs are further controlled by the
+<parameter>generate.section.toc.level</parameter> parameter.
+For a given section level to have a ToC, it must have both an entry in
+<parameter>generate.toc</parameter> and be within the range enabled by
+<parameter>generate.section.toc.level</parameter>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.index">
+<refmeta>
+<refentrytitle>generate.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.index</refname>
+<refpurpose>Do you want an index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.index.frag">&lt;xsl:param name="generate.index" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify if an index should be generated. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="make.index.markup">
+<refmeta>
+<refentrytitle>make.index.markup</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.index.markup</refname>
+<refpurpose>Generate XML index markup in the index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.index.markup.frag">
+&lt;xsl:param name="make.index.markup" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter enables a very neat trick for getting properly
+merged, collated back-of-the-book indexes. G. Ken Holman suggested
+this trick at Extreme Markup Languages 2002 and I'm indebted to him
+for it.</para>
+
+<para>Jeni Tennison's excellent code in
+<filename>autoidx.xsl</filename> does a great job of merging and
+sorting <tag>indexterm</tag>s in the document and building a
+back-of-the-book index. However, there's one thing that it cannot
+reasonably be expected to do: merge page numbers into ranges. (I would
+not have thought that it could collate and suppress duplicate page
+numbers, but in fact it appears to manage that task somehow.)</para>
+
+<para>Ken's trick is to produce a document in which the index at the
+back of the book is <quote>displayed</quote> in XML. Because the index
+is generated by the FO processor, all of the page numbers have been resolved.
+It's a bit hard to explain, but what it boils down to is that instead of having
+an index at the back of the book that looks like this:</para>
+
+<blockquote>
+<formalpara><info><title>A</title></info>
+<para>ap1, 1, 2, 3</para>
+</formalpara>
+</blockquote>
+
+<para>you get one that looks like this:</para>
+
+<blockquote>
+<programlisting>&lt;indexdiv&gt;A&lt;/indexdiv&gt;
+&lt;indexentry&gt;
+&lt;primaryie&gt;ap1&lt;/primaryie&gt;,
+&lt;phrase role="pageno"&gt;1&lt;/phrase&gt;,
+&lt;phrase role="pageno"&gt;2&lt;/phrase&gt;,
+&lt;phrase role="pageno"&gt;3&lt;/phrase&gt;
+&lt;/indexentry&gt;</programlisting>
+</blockquote>
+
+<para>After building a PDF file with this sort of odd-looking index, you can
+extract the text from the PDF file and the result is a proper index expressed in
+XML.</para>
+
+<para>Now you have data that's amenable to processing and a simple Perl script
+(such as <filename>fo/pdf2index</filename>) can
+merge page ranges and generate a proper index.</para>
+
+<para>Finally, reformat your original document using this literal index instead of
+an automatically generated one and <quote>bingo</quote>!</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.method">
+<refmeta>
+<refentrytitle>index.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">basic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kosek</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kimber</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.method</refname>
+<refpurpose>Select method used to group index entries in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.method.frag">
+&lt;xsl:param name="index.method"&gt;basic&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter lets you select which method to use for sorting and grouping
+ index entries in an index.
+Indexes in Latin-based languages that have accented characters typically
+sort together accented words and unaccented words.
+Thus <quote>&#193;</quote> (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together
+with <quote>A</quote> (U+0041 LATIN CAPITAL LETTER A), so both would appear in the <quote>A</quote>
+section of the index.
+Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet)
+and languages using ideographic chararacters (such as Japanese)
+require grouping specific to the languages and alphabets.
+</para>
+
+<para>The default indexing method is limited.
+It can group accented characters in Latin-based languages only.
+It cannot handle non-Latin alphabets or ideographic languages.
+The other indexing methods require extensions of one type or
+another, and do not work with
+all XSLT processors, which is why they are not used by default.</para>
+
+<para>The three choices for indexing method are:</para>
+<variablelist>
+<varlistentry>
+<term><literal>basic</literal></term>
+<listitem>
+<para>
+(default) Sort and groups words based only on the Latin alphabet.
+Words with accented Latin letters will group and sort with
+their respective primary letter, but
+words in non-Latin alphabets will be
+put in the <quote>Symbols</quote> section of the index.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kosek</literal></term>
+<listitem>
+<para>
+This method sorts and groups words based on letter groups configured in
+the DocBook locale file for the given language.
+See, for example, the French locale file <filename>common/fr.xml</filename>.
+This method requires that the XSLT processor
+supports the EXSLT extensions (most do).
+It also requires support for using
+user-defined functions in xsl:key (xsltproc does not).
+</para>
+<para>This method is suitable for any language for which you can
+list all the individual characters that should appear
+in each letter group in an index.
+It is probably not practical to use it for ideographic languages
+such as Chinese that have hundreds or thousands of characters.
+</para>
+
+<para>To use the kosek method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use a processor that supports its extensions, such as
+Saxon 6 or Xalan (xsltproc and Saxon 8 do not).
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kosek</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kosek.xsl</filename> or
+<filename>html/autoidx-kosek.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kimber</literal></term>
+<listitem>
+<para>
+This method uses extensions to the Saxon processor to implement
+sophisticated indexing processes. It uses its own
+configuration file, which can include information for any number of
+languages. Each language's configuration can group
+words using one of two processes. In the
+enumerated process similar to that used in the kosek method,
+you indicate the groupings character-by-character.
+In the between-key process, you specify the
+break-points in the sort order that should start a new group.
+The latter configuration is useful for ideographic languages
+such as Chinese, Japanese, and Korean.
+You can also define your own collation algorithms and how you
+want mixed Latin-alphabet words sorted.</para>
+<itemizedlist>
+<listitem>
+<para>For a whitepaper describing the extensions, see:
+<link xlink:href="http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf">http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf</link>.
+</para>
+</listitem>
+<listitem>
+<para>To download the extension library, see
+<link xlink:href="http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport">http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</link>.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>To use the kimber method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use Saxon (version 6 or 8) as your XSLT processor.
+</para>
+</listitem>
+<listitem>
+<para>Install and configure the Innodata Isogen library, using
+the documentation that comes with it.
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kimber</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kimber.xsl</filename> or
+<filename>html/autoidx-kimber.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.on.type">
+<refmeta>
+<refentrytitle>index.on.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.type</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">type</tag>
+attribute value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.on.type.frag">
+&lt;xsl:param name="index.on.type" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">type</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching <tag class="attribute">type</tag> attribute value.
+If an <tag>index</tag> has no <tag class="attribute">type</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+
+<para>
+If <literal>index.on.type</literal> is zero, then the
+<tag class="attribute">type</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>For those using DocBook version 4.2 or earlier,
+the <tag class="attribute">type</tag> attribute is not available
+for index terms. However, you can achieve the same
+effect by using the <tag class="attribute">role</tag> attribute
+in the same manner on <tag>indexterm</tag>
+and <tag>index</tag>, and setting the stylesheet parameter
+<parameter>index.on.role</parameter> to a nonzero value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.on.role">
+<refmeta>
+<refentrytitle>index.on.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.role</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">role</tag> value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.on.role.frag">
+&lt;xsl:param name="index.on.role" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">role</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching role value.
+If an <tag>index</tag> has no <tag class="attribute">role</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+<para>
+If <literal>index.on.role</literal> is zero, then the
+<tag class="attribute">role</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>If you are using DocBook version 4.3 or later, you should
+use the <tag class="attribute">type</tag> attribute instead of <tag class="attribute">role</tag>
+on <tag>indexterm</tag> and <tag>index</tag>,
+and set the <parameter>index.on.type</parameter> to a nonzero
+value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.preferred.page.properties">
+<refmeta>
+<refentrytitle>index.preferred.page.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.preferred.page.properties</refname>
+<refpurpose>Properties used to emphasize page number references for
+significant index terms</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.preferred.page.properties.frag">
+&lt;xsl:attribute-set name="index.preferred.page.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties used to emphasize page number references for
+significant index terms (<tag class="attribute">significance</tag>=<tag class="attvalue">preferred</tag>). Currently works only with
+XEP.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.entry.properties">
+<refmeta>
+<refentrytitle>index.entry.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.entry.properties</refname>
+<refpurpose>Properties applied to the formatted entries
+in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.entry.properties.frag">
+&lt;xsl:attribute-set name="index.entry.properties"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the block containing
+the entries in a letter division in an index. It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all index entries.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.div.title.properties">
+<refmeta>
+<refentrytitle>index.div.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.div.title.properties</refname>
+<refpurpose>Properties associated with the letter headings in an
+index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.div.title.properties.frag">
+&lt;xsl:attribute-set name="index.div.title.properties"&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;14.4pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$title.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;&lt;xsl:value-of select="concat($body.font.master,'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;&lt;xsl:value-of select="concat($body.font.master,'pt * 0.8')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;&lt;xsl:value-of select="concat($body.font.master,'pt * 1.2')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used on the letter headings that separate
+the divisions in an index.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.number.separator">
+<refmeta>
+<refentrytitle>index.number.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.number.separator</refname>
+<refpurpose>Override for punctuation separating page numbers in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.number.separator.frag">
+&lt;xsl:param name="index.number.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override the text to insert between
+page references in a formatted index entry. Typically
+that would be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'number-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. This punctuation appears between
+such section titles in an HTML index.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.range.separator">
+<refmeta>
+<refentrytitle>index.range.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.range.separator</refname>
+<refpurpose>Override for punctuation separating the two numbers
+in a page range in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.range.separator.frag">
+&lt;xsl:param name="index.range.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you
+to override the text to insert between
+the two numbers of a page range in an index.
+This parameter is only used by those XSL-FO processors
+that support an extension for generating such page ranges
+(such as XEP).</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'range-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. So there are no page ranges
+and this parameter has no effect.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.term.separator">
+<refmeta>
+<refentrytitle>index.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.term.separator</refname>
+<refpurpose>Override for punctuation separating an index term
+from its list of page references in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.term.separator.frag">
+&lt;xsl:param name="index.term.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override
+the text to insert between
+the end of an index term and its list of page references.
+Typically that might be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'term-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+fill in the content for this normally empty
+override parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+For fo output, it could be an <tag>fo:leader</tag>
+element to provide space of a specific length, or a dot leader.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xep.index.item.properties">
+<refmeta>
+<refentrytitle>xep.index.item.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xep.index.item.properties</refname>
+<refpurpose>Properties associated with XEP index-items</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xep.index.item.properties.frag">
+&lt;xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties"&gt;
+ &lt;xsl:attribute name="merge-subsequent-page-numbers"&gt;true&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="link-back"&gt;true&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties associated with XEP index-items, which generate
+page numbers in an index processed by XEP. For more info see
+the XEP documentation section "Indexes" in
+<uri xlink:href="http://www.renderx.com/reference.html#Indexes">http://www.renderx.com/reference.html#Indexes</uri>.</para>
+
+<para>This attribute-set also adds by default any properties from the
+<tag class="attribute">index.page.number.properties</tag>
+attribute-set.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.section.depth">
+<refmeta>
+<refentrytitle>toc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.section.depth</refname>
+<refpurpose>How deep should recursive <tag>section</tag>s appear
+in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.section.depth.frag">&lt;xsl:param name="toc.section.depth"&gt;2&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the depth to which recursive sections should appear in the
+TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.max.depth">
+<refmeta>
+<refentrytitle>toc.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.max.depth</refname>
+<refpurpose>How many levels should be created for each TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.max.depth.frag">&lt;xsl:param name="toc.max.depth"&gt;8&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximal depth of TOC on all levels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.indent.width">
+<refmeta>
+<refentrytitle>toc.indent.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">float</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.indent.width</refname>
+<refpurpose>Amount of indentation for TOC entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.indent.width.frag">
+&lt;xsl:param name="toc.indent.width"&gt;24&lt;/xsl:param&gt;
+&lt;!-- inconsistant point specification? --&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies, in points, the distance by which each level of the
+TOC is indented from its parent.</para>
+
+<para>This value is expressed in points, without
+a unit (in other words, it is a bare number). Using a bare number allows the stylesheet
+to perform calculations that would otherwise have to be performed by the FO processor
+because not all processors support expressions.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.line.properties">
+<refmeta>
+<refentrytitle>toc.line.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.line.properties</refname>
+<refpurpose>Properties for lines in ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.line.properties.frag">
+&lt;xsl:attribute-set name="toc.line.properties"&gt;
+ &lt;xsl:attribute name="text-align-last"&gt;justify&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="end-indent"&gt;&lt;xsl:value-of select="concat($toc.indent.width, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="last-line-end-indent"&gt;&lt;xsl:value-of select="concat('-', $toc.indent.width, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties which are applied to every line in ToC (or LoT). You can
+modify them in order to change appearance of all, or some lines. For
+example, in order to make lines for chapters bold, specify the
+following in your customization layer:</para>
+
+<programlisting>&lt;xsl:attribute-set name="toc.line.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="self::chapter"&gt;bold&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;normal&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.margin.properties">
+<refmeta>
+<refentrytitle>toc.margin.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.margin.properties</refname>
+<refpurpose>Margin properties used on Tables of Contents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.margin.properties.frag">
+&lt;xsl:attribute-set name="toc.margin.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This attribute set is used on Tables of Contents. These attributes are set
+on the wrapper that surrounds the ToC block, not on each individual lines.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bridgehead.in.toc">
+<refmeta>
+<refentrytitle>bridgehead.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bridgehead.in.toc</refname>
+<refpurpose>Should bridgehead elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bridgehead.in.toc.frag">&lt;xsl:param name="bridgehead.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>bridgehead</tag>s appear in the TOC. Note that
+this option is not fully supported and may be removed in a future
+version of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="simplesect.in.toc">
+<refmeta>
+<refentrytitle>simplesect.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>simplesect.in.toc</refname>
+<refpurpose>Should <tag>simplesect</tag> elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="simplesect.in.toc.frag">&lt;xsl:param name="simplesect.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>simplesect</tag>s will be included in the TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="generate.section.toc.level">
+<refmeta>
+<refentrytitle>generate.section.toc.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.section.toc.level</refname>
+<refpurpose>Control depth of TOC generation in sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.section.toc.level.frag">
+&lt;xsl:param name="generate.section.toc.level" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>generate.section.toc.level</parameter> parameter
+controls the depth of <tag>section</tag> in which TOCs will be generated. Note
+that this is related to, but not the same as
+<parameter>toc.section.depth</parameter>, which controls the depth to
+which TOC entries will be generated in a given TOC.</para>
+<para>If, for example, <parameter>generate.section.toc.level</parameter>
+is <literal>3</literal>, TOCs will be generated in first, second, and third
+level sections, but not in fourth level sections.
+</para>
+
+</refsection>
+</refentry>
+
+
+
+
+</reference><reference id="fo_ext" xml:base="../fo/param.xml"><title>Processor Extensions</title>
+<refentry version="5.0" id="arbortext.extensions">
+<refmeta>
+<refentrytitle>arbortext.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>arbortext.extensions</refname>
+<refpurpose>Enable Arbortext extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="arbortext.extensions.frag">&lt;xsl:param name="arbortext.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.arbortext.com/">Arbortext</link>
+extensions will be used.
+</para>
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="axf.extensions">
+<refmeta>
+<refentrytitle>axf.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>axf.extensions</refname>
+<refpurpose>Enable XSL Formatter extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="axf.extensions.frag">
+&lt;xsl:param name="axf.extensions" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.antennahouse.com/">XSL Formatter</link>
+extensions will be used. XSL Formatter extensions consists of PDF bookmarks,
+document information and better index processing.</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="fop.extensions">
+<refmeta>
+<refentrytitle>fop.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fop.extensions</refname>
+<refpurpose>Enable extensions for FOP version 0.20.5 and earlier</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="fop.extensions.frag">&lt;xsl:param name="fop.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions intended for
+<link xlink:href="http://xml.apache.org/fop/">FOP</link>
+version 0.20.5 and earlier will be used.
+At present, this consists of PDF bookmarks.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported.</para>
+
+<para>If you are using a version of FOP beyond
+version 0.20.5, then use the <parameter>fop1.extensions</parameter> parameter
+instead.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="fop1.extensions">
+<refmeta>
+<refentrytitle>fop1.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fop1.extensions</refname>
+<refpurpose>Enable extensions for FOP version 0.90 and later</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="fop1.extensions.frag">&lt;xsl:param name="fop1.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions for
+<link xlink:href="http://xml.apache.org/fop/">FOP</link>
+version 0.90 and later will be used.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported.</para>
+
+<para>The original <parameter>fop.extensions</parameter> parameter
+should still be used for FOP version 0.20.5 and earlier.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="passivetex.extensions">
+<refmeta>
+<refentrytitle>passivetex.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>passivetex.extensions</refname>
+<refpurpose>Enable PassiveTeX extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="passivetex.extensions.frag">&lt;xsl:param name="passivetex.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.tei-c.org.uk/Software/passivetex/">PassiveTeX</link>
+extensions will be used. At present, this consists of PDF bookmarks
+and sorted index terms.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+<note>
+ <para>PassiveTeX is incomplete and development has ceased. In most cases,
+another XSL-FO engine is probably a better choice.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="tex.math.in.alt">
+<refmeta>
+<refentrytitle>tex.math.in.alt</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">plain</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">latex</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.in.alt</refname>
+<refpurpose>TeX notation used for equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="tex.math.in.alt.frag">
+&lt;xsl:param name="tex.math.in.alt"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want type math directly in TeX notation in equations,
+this parameter specifies notation used. Currently are supported two
+values -- <literal>plain</literal> and <literal>latex</literal>. Empty
+value means that you are not using TeX math at all.</para>
+
+<para>Preferred way for including TeX alternative of math is inside of
+<tag>textobject</tag> element. Eg.:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;inlinemediaobject&gt;
+&lt;imageobject&gt;
+&lt;imagedata fileref="eq1.gif"/&gt;
+&lt;/imageobject&gt;
+&lt;textobject&gt;&lt;phrase&gt;E=mc squared&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;textobject role="tex"&gt;&lt;phrase&gt;E=mc^2&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;/inlinemediaobject&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you are using <tag>graphic</tag> element, you can
+store TeX inside <tag>alt</tag> element:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;alt role="tex"&gt;a^2+b^2=c^2&lt;/alt&gt;
+&lt;graphic fileref="a2b2c2.gif"/&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you want use this feature, you should process your FO with
+PassiveTeX, which only supports TeX math notation. When calling
+stylsheet, don't forget to specify also
+passivetex.extensions=1.</para>
+
+<para>If you want equations in HTML, just process generated file
+<filename>tex-math-equations.tex</filename> by TeX or LaTeX. Then run
+dvi2bitmap program on result DVI file. You will get images for
+equations in your document.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.delims</parameter>,
+ <parameter>passivetex.extensions</parameter>,
+ <parameter>tex.math.file</parameter></para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="tex.math.delims">
+<refmeta>
+<refentrytitle>tex.math.delims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.delims</refname>
+<refpurpose>Should equations output for processing by TeX be
+surrounded by math mode delimiters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="tex.math.delims.frag">
+&lt;xsl:param name="tex.math.delims" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For compatibility with DSSSL based DBTeXMath from Allin Cottrell
+you should set this parameter to 0.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>passivetex.extensions</parameter></para>
+</refsection>
+
+<refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbtex delims</tag> processing
+ instruction to control whether delimiters are output.</para>
+</refsection>
+
+
+</refentry>
+
+<refentry version="5.0" id="xep.extensions">
+<refmeta>
+<refentrytitle>xep.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xep.extensions</refname>
+<refpurpose>Enable XEP extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xep.extensions.frag">&lt;xsl:param name="xep.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.renderx.com/">XEP</link>
+extensions will be used. XEP extensions consists of PDF bookmarks,
+document information and better index processing.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+</refsection>
+</refentry>
+
+</reference><reference id="dbk_ext" xml:base="../fo/param.xml"><title>Stylesheet Extensions</title>
+<refentry version="5.0" id="linenumbering.everyNth">
+<refmeta>
+<refentrytitle>linenumbering.everyNth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.everyNth</refname>
+<refpurpose>Indicate which lines should be numbered</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.everyNth.frag">
+&lt;xsl:param name="linenumbering.everyNth"&gt;5&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, everyNth line will be
+numbered. Note that numbering is one based, not zero based.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="linenumbering.extension">
+<refmeta>
+<refentrytitle>linenumbering.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.extension</refname>
+<refpurpose>Enable the line numbering extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.extension.frag">
+&lt;xsl:param name="linenumbering.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, verbatim environments (<tag>address</tag>, <tag>literallayout</tag>,
+<tag>programlisting</tag>, <tag>screen</tag>, <tag>synopsis</tag>) that specify line numbering will
+have line numbers.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="linenumbering.separator">
+<refmeta>
+<refentrytitle>linenumbering.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.separator</refname>
+<refpurpose>Specify a separator between line numbers and lines</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.separator.frag">
+&lt;xsl:param name="linenumbering.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The separator is inserted between line numbers and lines in the
+verbatim environment. The default value is a single white space.
+ Note the interaction with <parameter>linenumbering.width</parameter>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="linenumbering.width">
+<refmeta>
+<refentrytitle>linenumbering.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.width</refname>
+<refpurpose>Indicates the width of line numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="linenumbering.width.frag">
+&lt;xsl:param name="linenumbering.width"&gt;3&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, line numbers will appear right
+justified in a field "width" characters wide.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="tablecolumns.extension">
+<refmeta>
+<refentrytitle>tablecolumns.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tablecolumns.extension</refname>
+<refpurpose>Enable the table columns extension function</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="tablecolumns.extension.frag">
+&lt;xsl:param name="tablecolumns.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The table columns extension function adjusts the widths of table
+columns in the HTML result to more accurately reflect the specifications
+in the CALS table.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="textinsert.extension">
+ <refmeta>
+ <refentrytitle>textinsert.extension</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>textinsert.extension</refname>
+ <refpurpose>Enables the textinsert extension element</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <programlisting id="textinsert.extension.frag">
+ &lt;xsl:param name="textinsert.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+ </refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>The textinsert extension element inserts the contents of
+ a file into the result tree (as text).</para>
+ <note>
+ <para>To use the textinsert extension element, you must use
+ either Saxon or Xalan as your XSLT processor (it doesn&#8217;t
+ work with xsltproc), along with either the DocBook Saxon
+ extensions or DocBook Xalan extensions (for more
+ information about those extensions, see <link role="tcg" xlink:href="InstallingAProcessor.html#SaxonExtensions">DocBook Saxon Extensions</link> and <link role="tcg" xlink:href="InstallingAProcessor.html#XalanExtensions">DocBook Xalan Extensions</link>), and you must set both
+ the <parameter>use.extensions</parameter> and
+ <parameter>textinsert.extension</parameter> parameters to
+ <literal>1</literal>.</para>
+ <para>As an alternative to using the textinsert element,
+ consider using an Xinclude element with the
+ <literal>parse="text"</literal> attribute and value
+ specified, as detailed in <link role="tcg" xlink:href="ExternalCode.html#XIncludeCode">Using XInclude for text inclusions</link>.</para>
+ </note>
+ </refsection>
+ <refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbhtml-include&#160;href</tag> processing
+ instruction to insert external files &#8212; both files containing
+ plain text and files with markup content (including HTML
+ content).</para>
+ </refsection>
+ <refsection><info><title>More information</title></info>
+ <para>For how-to documentation on inserting contents of
+ external code files and other text files into output, see
+ <link role="tcg" xlink:href="ExternalCode.html">External code files</link>.</para>
+ <para>For guidelines on inserting contents of
+ HTML files into output, see <link role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>.</para>
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="textdata.default.encoding">
+<refmeta>
+<refentrytitle>textdata.default.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textdata.default.encoding</refname>
+<refpurpose>Default encoding of external text files which are included
+using textdata element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="textdata.default.encoding.frag">
+&lt;xsl:param name="textdata.default.encoding"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the encoding of any external text files included using
+<tag>textdata</tag> element. This value is used only when you do
+not specify encoding by the appropriate attribute
+directly on textdata. An empty string is interpreted as the system
+default encoding.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.extensions">
+<refmeta>
+<refentrytitle>use.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.extensions</refname>
+<refpurpose>Enable extensions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.extensions.frag">
+&lt;xsl:param name="use.extensions" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions may be used. Each extension is
+further controlled by its own parameter. But if
+<parameter>use.extensions</parameter> is zero, no extensions will
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="labels" xml:base="../fo/param.xml"><title>Automatic labelling</title>
+<refentry version="5.0" id="appendix.autolabel">
+<refmeta>
+<refentrytitle>appendix.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>appendix.autolabel</refname>
+<refpurpose>Specifies the labeling format for Appendix titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="appendix.autolabel.frag">
+&lt;xsl:param name="appendix.autolabel"&gt;A&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then appendices will be numbered using the
+parameter value as the number format if the value matches one of the
+following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperalpha).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="chapter.autolabel">
+<refmeta>
+<refentrytitle>chapter.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chapter.autolabel</refname>
+<refpurpose>Specifies the labeling format for Chapter titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="chapter.autolabel.frag">
+&lt;xsl:param name="chapter.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then chapters will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="part.autolabel">
+<refmeta>
+<refentrytitle>part.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>part.autolabel</refname>
+<refpurpose>Specifies the labeling format for Part titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="part.autolabel.frag">
+&lt;xsl:param name="part.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then parts will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperroman).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="reference.autolabel">
+<refmeta>
+<refentrytitle>reference.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>reference.autolabel</refname>
+<refpurpose>Specifies the labeling format for Reference titles</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="reference.autolabel.frag">
+ &lt;xsl:param name="reference.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, references will be numbered using the parameter
+ value as the number format if the value matches one of the
+ following:
+</para>
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Any non-zero value other than the above will generate
+the default number format (upperroman).
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="preface.autolabel">
+<refmeta>
+<refentrytitle>preface.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preface.autolabel</refname>
+<refpurpose>Specifices the labeling format for Preface titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="preface.autolabel.frag">&lt;xsl:param name="preface.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero then prefaces will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.autolabel">
+<refmeta>
+<refentrytitle>section.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel</refname>
+<refpurpose>Are sections enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.autolabel.frag">&lt;xsl:param name="section.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), unlabeled sections will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.autolabel.max.depth">
+<refmeta>
+<refentrytitle>section.autolabel.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel.max.depth</refname>
+<refpurpose>The deepest level of sections that are numbered.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.autolabel.max.depth.frag">
+&lt;xsl:param name="section.autolabel.max.depth"&gt;8&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When section numbering is turned on by the
+<parameter>section.autolabel</parameter> parameter, then this
+parameter controls the depth of <tag>section</tag> nesting that is
+numbered. Sections nested to a level deeper than this value will not
+be numbered.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.label.includes.component.label">
+<refmeta>
+<refentrytitle>section.label.includes.component.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.label.includes.component.label</refname>
+<refpurpose>Do section labels include the component label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.label.includes.component.label.frag">&lt;xsl:param name="section.label.includes.component.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, section labels are prefixed with the label of the
+component that contains them.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="label.from.part">
+<refmeta>
+<refentrytitle>label.from.part</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>label.from.part</refname>
+<refpurpose>Renumber components in each part?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="label.from.part.frag">
+&lt;xsl:param name="label.from.part" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>label.from.part</parameter> is non-zero, then
+ numbering of components &#8212; <tag>preface</tag>,
+ <tag>chapter</tag>, <tag>appendix</tag>, and
+ <tag>reference</tag> (when <tag>reference</tag> occurs at the
+ component level) &#8212; is re-started within each
+ <tag>part</tag>.</para>
+<para>If <parameter>label.from.part</parameter> is zero (the
+ default), numbering of components is <emphasis>not</emphasis>
+ re-started within each <tag>part</tag>; instead, components are
+ numbered sequentially throughout each <tag>book</tag>,
+ regardless of whether or not they occur within <tag>part</tag>
+ instances.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="component.label.includes.part.label">
+<refmeta>
+<refentrytitle>component.label.includes.part.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.label.includes.part.label</refname>
+<refpurpose>Do component labels include the part label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="component.label.includes.part.label.frag">&lt;xsl:param name="component.label.includes.part.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, number labels for <tag>chapter</tag>,
+<tag>appendix</tag>, and other component elements are prefixed with
+the label of the part element that contains them. So you might see
+Chapter II.3 instead of Chapter 3. Also, the labels for formal
+elements such as <tag>table</tag> and <tag>figure</tag> will include
+the part label. If there is no part element container, then no prefix
+is generated.
+</para>
+<para>
+This feature is most useful when the
+<parameter>label.from.part</parameter> parameter is turned on.
+In that case, there would be more than one <tag>chapter</tag>
+<quote>1</quote>, and the extra part label prefix will identify
+each chapter unambiguously.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="xslt" xml:base="../fo/param.xml"><title>XSLT Processing</title>
+<refentry version="5.0" id="rootid">
+<refmeta>
+<refentrytitle>rootid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>rootid</refname>
+<refpurpose>Specify the root element to format</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="rootid.frag">
+&lt;xsl:param name="rootid"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>rootid</parameter> is not empty, it must be the
+value of an ID that occurs in the document being formatted. The entire
+document will be loaded and parsed, but formatting will begin at the
+element identified, rather than at the root. For example, this allows
+you to process only <tag>chapter</tag> 4 of a <tag>book</tag>.</para>
+<para>Because the entire document is available to the processor, automatic
+numbering, cross references, and other dependencies are correctly
+resolved.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="meta" xml:base="../fo/param.xml"><title>Meta/*Info</title>
+<refentry version="5.0" id="make.single.year.ranges">
+<refmeta>
+<refentrytitle>make.single.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.single.year.ranges</refname>
+<refpurpose>Print single-year ranges (e.g., 1998-1999)</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.single.year.ranges.frag">
+&lt;xsl:param name="make.single.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, year ranges that span a single year will be printed
+in range notation (1998-1999) instead of discrete notation
+(1998, 1999).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="make.year.ranges">
+<refmeta>
+<refentrytitle>make.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.year.ranges</refname>
+<refpurpose>Collate copyright years into ranges?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="make.year.ranges.frag">&lt;xsl:param name="make.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple copyright <tag>year</tag> elements will be
+collated into ranges.
+This works only if each year number is put into a separate
+year element. The copyright element permits multiple
+year elements. If a year element contains a dash or
+a comma, then that year element will not be merged into
+any range.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="author.othername.in.middle">
+<refmeta>
+<refentrytitle>author.othername.in.middle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>author.othername.in.middle</refname>
+<refpurpose>Is <tag>othername</tag> in <tag>author</tag> a
+middle name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="author.othername.in.middle.frag">
+&lt;xsl:param name="author.othername.in.middle" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag>othername</tag> of an <tag>author</tag>
+appears between the <tag>firstname</tag> and
+<tag>surname</tag>. Otherwise, <tag>othername</tag>
+is suppressed.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="refentry" xml:base="../fo/param.xml"><title>Reference Pages</title>
+<refentry version="5.0" id="funcsynopsis.decoration">
+<refmeta>
+<refentrytitle>funcsynopsis.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.decoration</refname>
+<refpurpose>Decorate elements of a <tag>funcsynopsis</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="funcsynopsis.decoration.frag">
+&lt;xsl:param name="funcsynopsis.decoration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, elements of the <tag>funcsynopsis</tag> will be
+decorated (e.g. rendered as bold or italic text). The decoration is controlled by
+templates that can be redefined in a customization layer.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="funcsynopsis.style">
+<refmeta>
+<refentrytitle>funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="funcsynopsis.style.frag">&lt;xsl:param name="funcsynopsis.style"&gt;kr&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>funcsynopsis.style</parameter> is <literal>ansi</literal>,
+ANSI-style function synopses are generated for a
+<tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="function.parens">
+<refmeta>
+<refentrytitle>function.parens</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>function.parens</refname>
+<refpurpose>Generate parens after a function?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="function.parens.frag">
+&lt;xsl:param name="function.parens" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the formatting of a <tag>function</tag> element
+will include generated parentheses.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.generate.name">
+<refmeta>
+<refentrytitle>refentry.generate.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.name</refname>
+<refpurpose>Output NAME header before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.generate.name.frag">
+&lt;xsl:param name="refentry.generate.name" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a "NAME" section title is output before the list
+of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.title</parameter> are mutually
+exclusive. This means that if you change this parameter to zero, you
+should set <parameter>refentry.generate.title</parameter> to non-zero unless
+you want get quite strange output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.generate.title">
+<refmeta>
+<refentrytitle>refentry.generate.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.title</refname>
+<refpurpose>Output title before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.generate.title.frag">
+&lt;xsl:param name="refentry.generate.title" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the reference page title or first name is
+output before the list of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.name</parameter> are mutually exclusive.
+This means that if you change this parameter to non-zero, you
+should set <parameter>refentry.generate.name</parameter> to zero unless
+you want get quite strange output.</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.pagebreak">
+<refmeta>
+<refentrytitle>refentry.pagebreak</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.pagebreak</refname>
+<refpurpose>Start each refentry on a new page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.pagebreak.frag">&lt;xsl:param name="refentry.pagebreak" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), each <tag>refentry</tag>
+element will start on a new page. If zero, a page
+break will not be generated between <tag>refentry</tag> elements.
+The exception is when the <tag>refentry</tag> elements are children of
+a <tag>part</tag> element, in which case the page breaks are always
+retained. That is because a <tag>part</tag> element does not generate
+a page-sequence for its children, so each <tag>refentry</tag> must
+start its own page-sequence.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.title.properties">
+<refmeta>
+<refentrytitle>refentry.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.title.properties</refname>
+<refpurpose>Title properties for a refentry title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.title.properties.frag">
+&lt;xsl:attribute-set name="refentry.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;18pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1.0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.4em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;0.6em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;&lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formatting properties applied to the title generated for the
+<tag>refnamediv</tag> part of output for
+<tag>refentry</tag> when the value of the
+<parameter>refentry.generate.title</parameter> parameter is
+non-zero. The font size is supplied by the appropriate <parameter>section.level<replaceable>X</replaceable>.title.properties</parameter>
+attribute-set, computed from the location of the
+<tag>refentry</tag> in the section hierarchy.</para>
+
+<note>
+ <para>This parameter has no effect on the the title generated for
+ the <tag>refnamediv</tag> part of output for
+ <tag>refentry</tag> when the value of the
+ <parameter>refentry.generate.name</parameter> parameter is
+ non-zero. By default, that title is formatted with the same
+ properties as the titles for all other first-level children of
+ <tag>refentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.xref.manvolnum">
+<refmeta>
+<refentrytitle>refentry.xref.manvolnum</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.xref.manvolnum</refname>
+<refpurpose>Output <tag>manvolnum</tag> as part of
+<tag>refentry</tag> cross-reference?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.xref.manvolnum.frag">
+&lt;xsl:param name="refentry.xref.manvolnum" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>if non-zero, the <tag>manvolnum</tag> is used when cross-referencing
+<tag>refentry</tag>s, either with <tag>xref</tag>
+or <tag>citerefentry</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refclass.suppress">
+<refmeta>
+<refentrytitle>refclass.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refclass.suppress</refname>
+<refpurpose>Suppress display of refclass contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refclass.suppress.frag">
+&lt;xsl:param name="refclass.suppress" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refclass.suppress</parameter> is
+non-zero, then display of <tag>refclass</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="tables" xml:base="../fo/param.xml"><title>Tables</title>
+<refentry version="5.0" id="default.table.width">
+<refmeta>
+<refentrytitle>default.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.width</refname>
+<refpurpose>The default width of tables</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="default.table.width.frag">
+&lt;xsl:param name="default.table.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, this value will be used for the
+<literal>width</literal> attribute on <tag>table</tag>s that do not specify an
+alternate width (with the <tag class="xmlpi">dbhtml table-width</tag> or
+<tag class="xmlpi">dbfo table-width</tag> processing instruction).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="nominal.table.width">
+<refmeta>
+<refentrytitle>nominal.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.table.width</refname>
+<refpurpose>The (absolute) nominal width of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="nominal.table.width.frag">
+&lt;xsl:param name="nominal.table.width"&gt;6in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In order to convert CALS column widths into HTML column widths, it
+is sometimes necessary to have an absolute table width to use for conversion
+of mixed absolute and relative widths. This value must be an absolute
+length (not a percentage).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.table.frame">
+<refmeta>
+<refentrytitle>default.table.frame</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.frame</refname>
+<refpurpose>The default framing of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.table.frame.frag">
+&lt;xsl:param name="default.table.frame"&gt;all&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This value will be used when there is no frame attribute on the
+table. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.table.rules">
+<refmeta>
+<refentrytitle>default.table.rules</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.rules</refname>
+<refpurpose>The default column and row rules for tables using HTML markup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.table.rules.frag">
+&lt;xsl:param name="default.table.rules"&gt;none&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Tables using HTML markup elements can use an attribute
+named <tag class="attribute">rules</tag> on the <tag>table</tag> or
+<tag>informaltable</tag> element
+to specify whether column and row border rules should be
+displayed. This parameter lets you specify a global default
+style for all HTML tables that don't otherwise have
+that attribute.</para>
+<para>These are the supported values:</para>
+
+<variablelist>
+<varlistentry><term>all</term>
+<listitem>
+<para>Rules will appear between all rows and columns.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>rows</term>
+<listitem>
+<para>Rules will appear between rows only.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>cols</term>
+<listitem>
+<para>Rules will appear between columns only.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>groups</term>
+<listitem>
+<para>Rules will appear between row groups (thead, tfoot, tbody).
+No support for rules between column groups yet.
+</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>none</term>
+<listitem>
+<para>No rules. This is the default value.
+</para>
+</listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>The border after the last row and the border after
+the last column are not affected by
+this setting. Those borders are controlled by
+the <tag class="attribute">frame</tag> attribute on the table element.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.cell.padding">
+<refmeta>
+<refentrytitle>table.cell.padding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.padding</refname>
+<refpurpose>Specifies the padding of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.cell.padding.frag">
+&lt;xsl:attribute-set name="table.cell.padding"&gt;
+ &lt;xsl:attribute name="padding-start"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-end"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-top"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-bottom"&gt;2pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the padding of table cells.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.frame.border.thickness">
+<refmeta>
+<refentrytitle>table.frame.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.thickness</refname>
+<refpurpose>Specifies the thickness of the frame border</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.frame.border.thickness.frag">
+&lt;xsl:param name="table.frame.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the thickness of the border on the table's frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.frame.border.style">
+<refmeta>
+<refentrytitle>table.frame.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.style</refname>
+<refpurpose>Specifies the border style of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.frame.border.style.frag">
+&lt;xsl:param name="table.frame.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.frame.border.color">
+<refmeta>
+<refentrytitle>table.frame.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.color</refname>
+<refpurpose>Specifies the border color of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.frame.border.color.frag">
+
+&lt;xsl:param name="table.frame.border.color"&gt;black&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border color of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.cell.border.thickness">
+<refmeta>
+<refentrytitle>table.cell.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.thickness</refname>
+<refpurpose>Specifies the thickness of table cell borders</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.cell.border.thickness.frag">
+&lt;xsl:param name="table.cell.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, specifies the thickness of borders on table
+cells. The units are points. See <link xlink:href="http://www.w3.org/TR/CSS21/box.html#border-width-properties">
+CSS</link></para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.cell.border.style">
+<refmeta>
+<refentrytitle>table.cell.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.style</refname>
+<refpurpose>Specifies the border style of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.cell.border.style.frag">
+&lt;xsl:param name="table.cell.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table cells.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.cell.border.color">
+<refmeta>
+<refentrytitle>table.cell.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.color</refname>
+<refpurpose>Specifies the border color of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.cell.border.color.frag">
+
+&lt;xsl:param name="table.cell.border.color"&gt;black&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the color of table cell borders. If non-zero, the value is used
+for the border coloration. See <link xlink:href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS</link>. A
+<literal>color</literal> is either a keyword or a numerical RGB specification.
+Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon,
+navy, olive, orange, purple, red, silver, teal, white, and
+yellow.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.table.properties">
+<refmeta>
+<refentrytitle>table.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.table.properties</refname>
+<refpurpose>Properties associated with a table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.table.properties.frag">
+&lt;xsl:attribute-set name="table.table.properties"&gt;
+ &lt;xsl:attribute name="border-before-width.conditionality"&gt;retain&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="border-collapse"&gt;collapse&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for tables. This parameter should really
+have been called <literal>table.properties</literal>, but that parameter
+name was inadvertently established for the block-level properties
+of the table as a whole.
+</para>
+
+<para>See also <parameter>table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="links" xml:base="../fo/param.xml"><title>Linking</title>
+<refentry version="5.0" id="current.docid">
+<refmeta>
+<refentrytitle>current.docid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>current.docid</refname>
+<refpurpose>targetdoc identifier for the document being
+processed</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="current.docid.frag">
+&lt;xsl:param name="current.docid"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the <literal>targetdoc</literal> identifiers for both documents, as they appear in the <parameter>target.database.document</parameter> database file. This parameter passes to the stylesheet
+the targetdoc identifier of the current document, since that
+identifier does not appear in the document itself. </para>
+<para>This parameter can also be used for print output. If an olink's <literal>targetdoc</literal> id differs from the <literal>current.docid</literal>, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also <parameter>olink.doctitle</parameter> to enable that feature.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="collect.xref.targets">
+<refmeta>
+<refentrytitle>collect.xref.targets</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">only</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>collect.xref.targets</refname>
+<refpurpose>Controls whether cross reference data is
+collected</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="collect.xref.targets.frag">
+&lt;xsl:param name="collect.xref.targets"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is <literal>no</literal>, which means the data file is not generated during processing. The other choices are <literal>yes</literal>, which means the data file is created and the document is processed for output, and <literal>only</literal>, which means the data file is created but the document is not processed for output.
+See also <parameter>targets.filename</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="insert.olink.page.number">
+<refmeta>
+<refentrytitle>insert.olink.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.page.number</refname>
+<refpurpose>Turns page numbers in olinks on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="insert.olink.page.number.frag">
+&lt;xsl:param name="insert.olink.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references made between documents with
+<tag>olink</tag> will
+include page number citations.
+In most cases this is only applicable to references in printed output.
+</para>
+<para>The parameter has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated for olinks.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>olink</tag> references.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>olink</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+<para>Olinks that point to targets within the same document
+are treated as <tag>xref</tag>s, and controlled by
+the <parameter>insert.xref.page.number</parameter> parameter.
+</para>
+
+<para>Page number references for olinks to
+external documents can only be inserted if the
+information exists in the olink database.
+This means each olink target element
+(<tag>div</tag> or <tag>obj</tag>)
+must have a <tag class="attribute">page</tag> attribute
+whose value is its page number in the target document.
+The XSL stylesheets are not able to extract that information
+during processing because pages have not yet been created in
+XSLT transformation. Only the XSL-FO processor knows what
+page each element is placed on.
+Therefore some postprocessing must take place to populate
+page numbers in the olink database.
+</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="insert.olink.pdf.frag">
+<refmeta>
+<refentrytitle>insert.olink.pdf.frag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.pdf.frag</refname>
+<refpurpose>Add fragment identifiers for links into PDF files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="insert.olink.pdf.frag.frag">
+&lt;xsl:param name="insert.olink.pdf.frag" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines whether
+the cross reference URIs to PDF documents made with
+<tag>olink</tag> will
+include fragment identifiers.
+</para>
+
+<para>When forming a URI to link to a PDF document,
+a fragment identifier (typically a '#' followed by an
+id value) appended to the PDF filename can be used by
+the PDF viewer to open
+the PDF file to a location within the document instead of
+the first page.
+However, not all PDF files have id
+values embedded in them, and not all PDF viewers can
+handle fragment identifiers.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to a non-zero value, then any olink targeting a
+PDF file will have the fragment identifier appended to the URI.
+The URI is formed by concatenating the value of the
+<parameter>olink.base.uri</parameter> parameter, the
+value of the <tag class="attribute">baseuri</tag>
+attribute from the <tag class="element">document</tag>
+element in the olink database with the matching
+<tag class="attribute">targetdoc</tag> value,
+and the value of the <tag class="attribute">href</tag>
+attribute for the targeted element in the olink database.
+The <tag class="attribute">href</tag> attribute
+contains the fragment identifier.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to zero (the default value), then
+the <tag class="attribute">href</tag> attribute
+from the olink database
+is not appended to PDF olinks, so the fragment identifier is left off.
+A PDF olink is any olink for which the
+<tag class="attribute">baseuri</tag> attribute
+from the matching <tag class="element">document</tag>
+element in the olink database ends with '.pdf'.
+Any other olinks will still have the fragment identifier added.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.base.uri">
+<refmeta>
+<refentrytitle>olink.base.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.base.uri</refname>
+<refpurpose>Base URI used in olink hrefs</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="olink.base.uri.frag">
+&lt;xsl:param name="olink.base.uri"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for resolving olinks, it
+may be necessary to prepend a base URI to each target's href. This
+parameter lets you set that base URI when cross reference data is
+collected. This feature is needed when you want to link to a document
+that is processed without chunking. The output filename for such a
+document is not known to the XSL stylesheet; the only target
+information consists of fragment identifiers such as
+<literal>#idref</literal>. To enable the resolution of olinks between
+documents, you should pass the name of the HTML output file as the
+value of this parameter. Then the hrefs recorded in the cross
+reference data collection look like
+<literal>outfile.html#idref</literal>, which can be reached as links
+from other documents.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.debug">
+<refmeta>
+<refentrytitle>olink.debug</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.debug</refname>
+<refpurpose>Turn on debugging messages for olinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="olink.debug.frag">
+&lt;xsl:param name="olink.debug" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then each olink will generate several
+messages about how it is being resolved during processing.
+This is useful when an olink does not resolve properly
+and the standard error messages are not sufficient to
+find the problem.
+</para>
+
+<para>You may need to read through the olink XSL templates
+to understand the context for some of the debug messages.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.doctitle">
+<refmeta>
+<refentrytitle>olink.doctitle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.doctitle</refname>
+<refpurpose>show the document title for external olinks?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting id="olink.doctitle.frag">
+&lt;xsl:param name="olink.doctitle"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved, the generated text
+may not make it clear that the reference is to another document.
+It is possible for the stylesheets to append the other document's
+title to external olinks. For this to happen, two parameters must
+be set.</para>
+<itemizedlist>
+<listitem>
+<para>This <parameter>olink.doctitle</parameter> parameter
+should be set to either <literal>yes</literal> or <literal>maybe</literal>
+to enable this feature.
+</para>
+</listitem>
+<listitem>
+<para>And you should also set the <parameter>current.docid</parameter>
+parameter to the document id for the document currently
+being processed for output.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>
+Then if an olink's <literal>targetdoc</literal> id differs from
+the <literal>current.docid</literal> value, the stylesheet knows
+that it is a reference to another document and can
+append the target document's
+title to the generated olink text. </para>
+
+<para>The text for the target document's title is copied from the
+olink database from the <tag>ttl</tag> element
+of the top-level <tag>div</tag> for that document.
+If that <tag>ttl</tag> element is missing or empty,
+no title is output.
+</para>
+
+<para>The supported values for <parameter>olink.doctitle</parameter> are:
+</para>
+<variablelist>
+<varlistentry>
+<term><literal>yes</literal></term>
+<listitem>
+<para>
+Always insert the title to the target document if it is not
+the current document.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no</literal></term>
+<listitem>
+<para>
+Never insert the title to the target document, even if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>maybe</literal></term>
+<listitem>
+<para>
+Only insert the title to the target document, if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>An <tag class="attribute">xrefstyle</tag> attribute
+may override the global setting for individual olinks.
+The following values are supported in an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>select:</literal> syntax:
+</para>
+
+<variablelist>
+<varlistentry>
+<term><literal>docname</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docname</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>docnamelong</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docnamelong</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>nodocname</literal></term>
+<listitem>
+<para>
+Omit the target document name even if
+the value of <parameter>olink.doctitle</parameter>
+is <literal>yes</literal>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>Another way of inserting the target document name
+for a single olink is to employ an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>template:</literal> syntax.
+The <literal>%o</literal> placeholder (the letter o, not zero)
+in such a template
+will be filled in with the target document's title when it is processed.
+This will occur regardless of
+the value of <parameter>olink.doctitle</parameter>.
+</para>
+<para>Note that prior to version 1.66 of the XSL stylesheets,
+the allowed values for this parameter were 0 and 1. Those
+values are still supported and mapped to 'no' and 'yes', respectively.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.lang.fallback.sequence">
+<refmeta>
+<refentrytitle>olink.lang.fallback.sequence</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.lang.fallback.sequence</refname>
+<refpurpose>look up translated documents if olink not found?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting id="olink.lang.fallback.sequence.frag">
+&lt;xsl:param name="olink.lang.fallback.sequence"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+
+<para>This parameter defines a list of lang values
+to search among to resolve olinks.
+</para>
+
+<para>Normally an olink tries to resolve to a document in the same
+language as the olink itself. The language of an olink
+is determined by its nearest ancestor element with a
+<tag class="attribute">lang</tag> attribute, otherwise the
+value of the <parameter>l10n.gentext.default.lang</parameter>
+parameter.
+</para>
+
+<para>An olink database can contain target data for the same
+document in multiple languages. Each set of data has the
+same value for the <tag>targetdoc</tag> attribute in
+the <tag>document</tag> element in the database, but with a
+different <tag>lang</tag> attribute value.
+</para>
+
+<para>When an olink is being resolved, the target is first
+sought in the document with the same language as the olink.
+If no match is found there, then this parameter is consulted
+for additional languages to try.</para>
+
+<para>The <parameter>olink.lang.fallback.sequence</parameter>
+must be a whitespace separated list of lang values to
+try. The first one with a match in the olink database is used.
+The default value is empty.</para>
+
+<para>For example, a document might be written in German
+and contain an olink with
+<literal>targetdoc="adminguide"</literal>.
+When the document is processed, the processor
+first looks for a target dataset in the
+olink database starting with:</para>
+
+<literallayout><literal>&lt;document targetdoc="adminguide" lang="de"&gt;</literal>.
+</literallayout>
+
+<para>If there is no such element, then the
+<parameter>olink.lang.fallback.sequence</parameter>
+parameter is consulted.
+If its value is, for example, <quote>fr en</quote>, then the processor next
+looks for <literal>targetdoc="adminguide" lang="fr"</literal>, and
+then for <literal>targetdoc="adminguide" lang="en"</literal>.
+If there is still no match, it looks for
+<literal>targetdoc="adminguide"</literal> with no
+lang attribute.
+</para>
+
+<para>This parameter is useful when a set of documents is only
+partially translated, or is in the process of being translated.
+If a target of an olink has not yet been translated, then this
+parameter permits the processor to look for the document in
+other languages. This assumes the reader would rather have
+a link to a document in a different language than to have
+a broken link.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="olink.properties">
+<refmeta>
+<refentrytitle>olink.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.properties</refname>
+<refpurpose>Properties associated with the cross-reference
+text of an olink.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="olink.properties.frag">
+&lt;xsl:attribute-set name="olink.properties"&gt;
+ &lt;xsl:attribute name="show-destination"&gt;replace&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This <literal>attribute set</literal> is applied to the
+<literal>fo:basic-link</literal> element of an olink. It is not applied to the
+optional page number or optional title of the external
+document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="prefer.internal.olink">
+<refmeta>
+<refentrytitle>prefer.internal.olink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prefer.internal.olink</refname>
+<refpurpose>Prefer a local olink reference to an external reference</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="prefer.internal.olink.frag">
+&lt;xsl:param name="prefer.internal.olink" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you are re-using XML content modules in multiple documents,
+you may want to redirect some of your olinks. This parameter
+permits you to redirect an olink to the current document.
+</para>
+
+<para>For example: you are writing documentation for a product,
+which includes 3 manuals: a little installation
+booklet (booklet.xml), a user
+guide (user.xml), and a reference manual (reference.xml).
+All 3 documents begin with the same introduction section (intro.xml) that
+contains a reference to the customization section (custom.xml) which is
+included in both user.xml and reference.xml documents.
+</para>
+
+<para>How do you write the link to custom.xml in intro.xml
+so that it is interpreted correctly in all 3 documents?</para>
+<itemizedlist>
+<listitem><para>If you use xref, it will fail in user.xml.</para>
+</listitem>
+<listitem><para>If you use olink (pointing to reference.xml),
+the reference in user.xml
+will point to the customization section of the reference manual, while it is
+actually available in user.xml.</para>
+</listitem>
+</itemizedlist>
+
+<para>If you set the <parameter>prefer.internal.olink</parameter>
+parameter to a non-zero value, then the processor will
+first look in the olink database
+for the olink's <tag>targetptr</tag> attribute value
+in document matching the <parameter>current.docid</parameter>
+parameter value. If it isn't found there, then
+it tries the document in the database
+with the <tag>targetdoc</tag>
+value that matches the olink's <tag>targetdoc</tag>
+attribute.
+</para>
+
+<para>This feature permits an olink reference to resolve to
+the current document if there is an element
+with an id matching the olink's <tag>targetptr</tag>
+value. The current document's olink data must be
+included in the target database for this to work.</para>
+
+<caution>
+<para>There is a potential for incorrect links if
+the same <tag>id</tag> attribute value is used for different
+content in different documents.
+Some of your olinks may be redirected to the current document
+when they shouldn't be. It is not possible to control
+individual olink instances.</para>
+</caution>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="target.database.document">
+<refmeta>
+<refentrytitle>target.database.document</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>target.database.document</refname>
+<refpurpose>Name of master database file for resolving
+olinks</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="target.database.document.frag">
+ &lt;xsl:param name="target.database.document"&gt;olinkdb.xml&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+To resolve olinks between documents, the stylesheets use a master
+database document that identifies the target datafiles for all the
+documents within the scope of the olinks. This parameter value is the
+URI of the master document to be read during processing to resolve
+olinks. The default value is <filename>olinkdb.xml</filename>.</para>
+
+<para>The data structure of the file is defined in the
+<filename>targetdatabase.dtd</filename> DTD. The database file
+provides the high level elements to record the identifiers, locations,
+and relationships of documents. The cross reference data for
+individual documents is generally pulled into the database using
+system entity references or XIncludes. See also
+<parameter>targets.filename</parameter>. </para> </refsection>
+</refentry>
+
+<refentry version="5.0" id="targets.filename">
+<refmeta>
+<refentrytitle>targets.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>targets.filename</refname>
+<refpurpose>Name of cross reference targets data file</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="targets.filename.frag">
+&lt;xsl:param name="targets.filename"&gt;target.db&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter lets you change the name of the generated
+file from the default name <filename>target.db</filename>.
+The name must agree with that used in the target database
+used to resolve olinks during processing.
+See also <parameter>target.database.document</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.local.olink.style">
+<refmeta>
+<refentrytitle>use.local.olink.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.local.olink.style</refname>
+<refpurpose>Process olinks using xref style of current
+document</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting id="use.local.olink.style.frag">
+&lt;xsl:param name="use.local.olink.style" select="0"&gt;&lt;/xsl:param&gt; </programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the <parameter>use.local.olink.style</parameter> parameter is set to non-zero, then instead the cross
+reference string is formed again from the target title, number, and
+element name, using the stylesheet processing the targeting document.
+Then olinks will match the xref style in the targeting document
+rather than in the target document. If both documents are processed
+with the same stylesheet, then the results will be the same.</para>
+</refsection>
+</refentry>
+
+</reference><reference id="xrefs" xml:base="../fo/param.xml"><title>Cross References</title>
+<refentry version="5.0" id="insert.xref.page.number">
+<refmeta>
+<refentrytitle>insert.xref.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.xref.page.number</refname>
+<refpurpose>Turns page numbers in xrefs on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="insert.xref.page.number.frag">
+&lt;xsl:param name="insert.xref.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references (<tag>xref</tag>s) in
+printed output will
+include page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>xref</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>xref</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.properties">
+<refmeta>
+<refentrytitle>xref.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.properties</refname>
+<refpurpose>Properties associated with cross-reference text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.properties.frag">
+&lt;xsl:attribute-set name="xref.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used to set properties
+on cross reference text.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.label-title.separator">
+<refmeta>
+<refentrytitle>xref.label-title.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-title.separator</refname>
+<refpurpose>Punctuation or space separating label from title in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.label-title.separator.frag">&lt;xsl:param name="xref.label-title.separator"&gt;: &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and title,
+then the value of this parameter is inserted between
+label and title in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.label-page.separator">
+<refmeta>
+<refentrytitle>xref.label-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-page.separator</refname>
+<refpurpose>Punctuation or space separating label from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.label-page.separator.frag">&lt;xsl:param name="xref.label-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and page
+but no title,
+then the value of this parameter is inserted between
+label and page number in the output.
+If a title is included, then other separators are used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.title-page.separator">
+<refmeta>
+<refentrytitle>xref.title-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.title-page.separator</refname>
+<refpurpose>Punctuation or space separating title from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.title-page.separator.frag">&lt;xsl:param name="xref.title-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both title and page number,
+then the value of this parameter is inserted between
+title and page number in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="insert.link.page.number">
+<refmeta>
+<refentrytitle>insert.link.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.link.page.number</refname>
+<refpurpose>Turns page numbers in link elements on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="insert.link.page.number.frag">
+&lt;xsl:param name="insert.link.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references using the <tag>link</tag> element in
+printed output will
+include standard page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>link</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for a <tag>link</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+<para>Although the <tag>xrefstyle</tag> attribute
+can be used to turn the page reference on or off, it cannot be
+used to control the formatting of the page number as it
+can in <tag>xref</tag>.
+In <tag>link</tag> it will always format with
+the style established by the
+gentext template with <literal>name="page.citation"</literal>
+in the <literal>l:context name="xref"</literal>.
+</para>
+</refsection>
+</refentry>
+
+</reference><reference id="lists" xml:base="../fo/param.xml"><title>Lists</title>
+<refentry version="5.0" id="compact.list.item.spacing">
+<refmeta>
+<refentrytitle>compact.list.item.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>compact.list.item.spacing</refname>
+<refpurpose>What space do you want between list items (when spacing="compact")?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="compact.list.item.spacing.frag">&lt;xsl:attribute-set name="compact.list.item.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;0.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify what spacing you want between each list item when
+<tag class="attribute">spacing</tag> is
+<quote><literal>compact</literal></quote>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="itemizedlist.properties">
+<refmeta>
+<refentrytitle>itemizedlist.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>itemizedlist.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by itemizedlist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="itemizedlist.properties.frag">&lt;xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties"&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by itemizedlist.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="itemizedlist.label.properties">
+<refmeta>
+<refentrytitle>itemizedlist.label.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>itemizedlist.label.properties</refname>
+<refpurpose>Properties that apply to each label inside itemized list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="itemizedlist.label.properties.frag">&lt;xsl:attribute-set name="itemizedlist.label.properties"&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each label inside itemized list. E.g.:</para>
+<programlisting>&lt;xsl:attribute-set name="itemizedlist.label.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;right&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="itemizedlist.label.width">
+<refmeta>
+<refentrytitle>itemizedlist.label.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+ <refname>itemizedlist.label.width</refname>
+<refpurpose>The default width of the label (bullet) in an itemized list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="itemizedlist.label.width.frag">
+ &lt;xsl:param name="itemizedlist.label.width"&gt;1.0em&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Specifies the default width of the label (usually a bullet or other
+symbol) in an itemized list. You can override the default value on any
+particular list with the &#8220;dbfo&#8221; processing instruction using the
+&#8220;label-width&#8221; pseudoattribute.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="list.block.properties">
+<refmeta>
+<refentrytitle>list.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.block.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="list.block.properties.frag">&lt;xsl:attribute-set name="list.block.properties"&gt;
+ &lt;xsl:attribute name="provisional-label-separation"&gt;0.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="provisional-distance-between-starts"&gt;1.5em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by itemizedlist/orderedlist.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="list.block.spacing">
+<refmeta>
+<refentrytitle>list.block.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.block.spacing</refname>
+<refpurpose>What spacing do you want before and after lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="list.block.spacing.frag">&lt;xsl:attribute-set name="list.block.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the spacing required before and after a list. It is necessary to specify the space after a list block because lists can come inside of paras. </para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="list.item.spacing">
+<refmeta>
+<refentrytitle>list.item.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.item.spacing</refname>
+<refpurpose>What space do you want between list items?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="list.item.spacing.frag">&lt;xsl:attribute-set name="list.item.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify what spacing you want between each list item.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="orderedlist.properties">
+<refmeta>
+<refentrytitle>orderedlist.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by orderedlist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="orderedlist.properties.frag">&lt;xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties"&gt;
+ &lt;xsl:attribute name="provisional-distance-between-starts"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by orderedlist.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="orderedlist.label.properties">
+<refmeta>
+<refentrytitle>orderedlist.label.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.label.properties</refname>
+<refpurpose>Properties that apply to each label inside ordered list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="orderedlist.label.properties.frag">&lt;xsl:attribute-set name="orderedlist.label.properties"&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each label inside ordered list. E.g.:</para>
+<programlisting>&lt;xsl:attribute-set name="orderedlist.label.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;right&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="orderedlist.label.width">
+<refmeta>
+<refentrytitle>orderedlist.label.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.label.width</refname>
+<refpurpose>The default width of the label (number) in an ordered list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="orderedlist.label.width.frag">
+&lt;xsl:param name="orderedlist.label.width"&gt;1.2em&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Specifies the default width of the label (usually a number or
+sequence of numbers) in an ordered list. You can override the default
+value on any particular list with the &#8220;dbfo&#8221; processing instruction
+using the &#8220;label-width&#8221; pseudoattribute.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.max.termlength">
+<refmeta>
+<refentrytitle>variablelist.max.termlength</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.max.termlength</refname>
+<refpurpose>Specifies the longest term in variablelists</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.max.termlength.frag">
+&lt;xsl:param name="variablelist.max.termlength"&gt;24&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In variablelists, the <tag>listitem</tag>
+is indented to leave room for the
+<tag>term</tag> elements. That indent may be computed
+if it is not specified with a <tag class="attribute">termlength</tag>
+attribute on the <tag>variablelist</tag> element.
+</para>
+<para>
+The computation counts characters in the
+<tag>term</tag> elements in the list
+to find the longest term. However, some terms are very long
+and would produce extreme indents. This parameter lets you
+set a maximum character count. Any terms longer than the maximum
+would line wrap. The default value is 24.
+</para>
+<para>
+The character counts are converted to physical widths
+by multiplying by 0.50em. There will be some variability
+in how many actual characters fit in the space
+since some characters are wider than others.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.term.separator">
+<refmeta>
+<refentrytitle>variablelist.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.separator</refname>
+<refpurpose>Text to separate <tag>term</tag>s within a multi-term
+<tag>varlistentry</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.term.separator.frag">
+&lt;xsl:param name="variablelist.term.separator"&gt;, &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is placed
+after each <tag>term</tag> except the last.</para>
+
+<note>
+ <para>To generate a line break between multiple <tag>term</tag>s in
+ a <tag>varlistentry</tag>, set a non-zero value for the
+ <parameter>variablelist.term.break.after</parameter> parameter. If
+ you do so, you may also want to set the value of the
+ <parameter>variablelist.term.separator</parameter> parameter to an
+ empty string (to suppress rendering of the default comma and space
+ after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.term.properties">
+<refmeta>
+<refentrytitle>variablelist.term.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.properties</refname>
+<refpurpose>To add properties to the term elements in a variablelist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.term.properties.frag">
+&lt;xsl:attribute-set name="variablelist.term.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+term in a variablelist.
+Use this attribute-set to set
+font properties or alignment, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.term.break.after">
+<refmeta>
+<refentrytitle>variablelist.term.break.after</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.break.after</refname>
+<refpurpose>Generate line break after each <tag>term</tag> within a
+multi-term <tag>varlistentry</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.term.break.after.frag">
+&lt;xsl:param name="variablelist.term.break.after"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set a non-zero value for the
+<parameter>variablelist.term.break.after</parameter> parameter to
+generate a line break between <tag>term</tag>s in a
+multi-term <tag>varlistentry</tag>.</para>
+
+<note>
+<para>If you set a non-zero value for
+<parameter>variablelist.term.break.after</parameter>, you may also
+want to set the value of the
+<parameter>variablelist.term.separator</parameter> parameter to an
+empty string (to suppress rendering of the default comma and space
+after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+</reference><reference id="qa" xml:base="../fo/param.xml"><title>QAndASet</title>
+<refentry version="5.0" id="qandadiv.autolabel">
+<refmeta>
+<refentrytitle>qandadiv.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qandadiv.autolabel</refname>
+<refpurpose>Are divisions in QAndASets enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qandadiv.autolabel.frag">&lt;xsl:param name="qandadiv.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, unlabeled qandadivs will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.inherit.numeration">
+<refmeta>
+<refentrytitle>qanda.inherit.numeration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.inherit.numeration</refname>
+<refpurpose>Does enumeration of QandASet components inherit the numeration of parent elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.inherit.numeration.frag">
+&lt;xsl:param name="qanda.inherit.numeration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, numbered <tag>qandadiv</tag> elements and
+<tag>question</tag> and <tag>answer</tag> inherit the enumeration of
+the ancestors of the <tag>qandaset</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.defaultlabel">
+<refmeta>
+<refentrytitle>qanda.defaultlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">number</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">qanda</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.defaultlabel</refname>
+<refpurpose>Sets the default for defaultlabel on QandASet.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.defaultlabel.frag">
+&lt;xsl:param name="qanda.defaultlabel"&gt;number&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If no <literal>defaultlabel</literal> attribute is specified on
+a <tag>qandaset</tag>, this value is used. It is generally one of the legal
+values for the defaultlabel attribute (<literal>none</literal>,
+<literal>number</literal> or
+<literal>qanda</literal>), or one of the additional stylesheet-specific values
+(<literal>qnumber</literal> or <literal>qnumberanda</literal>).
+The default value is 'number'.
+</para>
+<para>The values are rendered as follows:</para>
+<variablelist>
+<varlistentry><term><literal>qanda</literal></term>
+<listitem>
+<para><tag>question</tag>s are labeled "Q:" and
+<tag>answer</tag>s are labeled "A:". </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>number</literal></term>
+<listitem>
+<para>The questions are enumerated and the answers
+are not labeled. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumber</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and answers are not
+labeled.
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumberanda</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and
+the answers are labeled "A:".
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>none</literal></term>
+<listitem>
+<para>No distinguishing label precedes Questions or Answers.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.in.toc">
+<refmeta>
+<refentrytitle>qanda.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.in.toc</refname>
+<refpurpose>Should qandaentry questions appear in
+the document table of contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.in.toc.frag">&lt;xsl:param name="qanda.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), then the generated table of contents
+for a document will include <tag>qandaset</tag> titles,
+<tag>qandadiv</tag> titles,
+and <tag>question</tag> elements. The default value (zero) excludes
+them from the TOC.
+</para>
+<para>This parameter does not affect any tables of contents
+that may be generated inside a qandaset or qandadiv.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.nested.in.toc">
+<refmeta>
+<refentrytitle>qanda.nested.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.nested.in.toc</refname>
+<refpurpose>Should nested answer/qandaentry instances appear in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.nested.in.toc.frag">
+&lt;xsl:param name="qanda.nested.in.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, instances of <tag>qandaentry</tag>
+that are children of <tag>answer</tag> elements are shown in
+the TOC.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="biblio" xml:base="../fo/param.xml"><title>Bibliography</title>
+<refentry version="5.0" id="bibliography.style">
+<refmeta>
+<refentrytitle>bibliography.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">normal</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iso690</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.style</refname>
+<refpurpose>Style used for formatting of biblioentries.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bibliography.style.frag">
+&lt;xsl:param name="bibliography.style"&gt;normal&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Currently only <literal>normal</literal> and
+<literal>iso690</literal> styles are supported.</para>
+
+<para>In order to use ISO690 style to the full extent you might need
+to use additional markup described on <link xlink:href="http://wiki.docbook.org/topic/ISO690Bibliography">the
+following WiKi page</link>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="biblioentry.item.separator">
+<refmeta>
+<refentrytitle>biblioentry.item.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.item.separator</refname>
+<refpurpose>Text to separate bibliography entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="biblioentry.item.separator.frag">&lt;xsl:param name="biblioentry.item.separator"&gt;. &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Text to separate bibliography entries
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bibliography.collection">
+<refmeta>
+<refentrytitle>bibliography.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.collection</refname>
+<refpurpose>Name of the bibliography collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bibliography.collection.frag">
+&lt;xsl:param name="bibliography.collection"&gt;http://docbook.sourceforge.net/release/bibliography/bibliography.xml&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Maintaining bibliography entries across a set of documents is tedious, time
+consuming, and error prone. It makes much more sense, usually, to store all of
+the bibliography entries in a single place and simply <quote>extract</quote>
+the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>bibliography.collection</parameter> parameter. To setup a global
+bibliography <quote>database</quote>, follow these steps:</para>
+
+<para>First, create a stand-alone bibliography document that contains all of
+the documents that you wish to reference. Make sure that each bibliography
+entry (whether you use <tag>biblioentry</tag> or <tag>bibliomixed</tag>)
+has an ID.</para>
+
+<para>My global bibliography, <filename>~/bibliography.xml</filename> begins
+like this:</para>
+
+<informalexample>
+<programlisting>&lt;!DOCTYPE bibliography
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;bibliography&gt;&lt;title&gt;References&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"&gt;&lt;abbrev&gt;XML 1.0&lt;/abbrev&gt;Tim Bray,
+Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml"&gt;Extensible Markup
+Language (XML) 1.0 Second Edition&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 2000.
+&lt;/bibliomixed&gt;
+
+&lt;bibliomixed id="xml-names"&gt;&lt;abbrev&gt;Namespaces&lt;/abbrev&gt;Tim Bray,
+Dave Hollander,
+and Andrew Layman, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml-names/"&gt;Namespaces in
+XML&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 1999.
+&lt;/bibliomixed&gt;
+
+&lt;!-- ... --&gt;
+&lt;/bibliography&gt;
+</programlisting>
+</informalexample>
+
+<para>When you create a bibliography in your document, simply
+provide <emphasis>empty</emphasis> <tag>bibliomixed</tag>
+entries for each document that you wish to cite. Make sure that these
+elements have the same ID as the corresponding <quote>real</quote>
+entry in your global bibliography.</para>
+
+<para>For example:</para>
+
+<informalexample>
+<programlisting>&lt;bibliography&gt;&lt;title&gt;Bibliography&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"/&gt;
+&lt;bibliomixed id="xml-names"/&gt;
+&lt;bibliomixed id="DKnuth86"&gt;Donald E. Knuth. &lt;citetitle&gt;Computers and
+Typesetting: Volume B, TeX: The Program&lt;/citetitle&gt;. Addison-Wesley,
+1986. ISBN 0-201-13437-3.
+&lt;/bibliomixed&gt;
+&lt;bibliomixed id="relaxng"/&gt;
+
+&lt;/bibliography&gt;</programlisting>
+</informalexample>
+
+<para>Note that it's perfectly acceptable to mix entries from your
+global bibliography with <quote>normal</quote> entries. You can use
+<tag>xref</tag> or other elements to cross-reference your
+bibliography entries in exactly the same way you do now.</para>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>bibliography.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global bibliography.</para>
+
+<para>The stylesheets will format the bibliography in your document as if
+all of the entries referenced appeared there literally.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bibliography.numbered">
+<refmeta>
+<refentrytitle>bibliography.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.numbered</refname>
+<refpurpose>Should bibliography entries be numbered?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bibliography.numbered.frag">
+&lt;xsl:param name="bibliography.numbered" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero bibliography entries will be numbered</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="biblioentry.properties">
+<refmeta>
+ <refentrytitle>biblioentry.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.properties</refname>
+<refpurpose>To set the style for biblioentry.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="biblioentry.properties.frag">&lt;xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0.5in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-indent"&gt;-0.5in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want biblioentry styled? </para>
+<para>Set the font-size, weight, space-above and space-below, indents, etc. to the style required</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="glossary" xml:base="../fo/param.xml"><title>Glossary</title>
+<refentry version="5.0" id="glossterm.auto.link">
+<refmeta>
+<refentrytitle>glossterm.auto.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.auto.link</refname>
+<refpurpose>Generate links from glossterm to glossentry automatically?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossterm.auto.link.frag">
+&lt;xsl:param name="glossterm.auto.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links from inline <tag>glossterm</tag>s to the corresponding
+<tag>glossentry</tag> elements in a <tag>glossary</tag> or <tag>glosslist</tag>
+will be automatically generated. This is useful when your glossterms are consistent
+and you don't want to add links manually.</para>
+
+<para>The automatic link generation feature is not used on <tag>glossterm</tag> elements
+that have a <tag class="attribute">linkend</tag> attribute.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="firstterm.only.link">
+<refmeta>
+<refentrytitle>firstterm.only.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>firstterm.only.link</refname>
+<refpurpose>Does automatic glossterm linking only apply to firstterms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="firstterm.only.link.frag">
+&lt;xsl:param name="firstterm.only.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, only <tag>firstterm</tag>s will be automatically linked
+to the glossary. If glossary linking is not enabled, this parameter
+has no effect.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossary.collection">
+<refmeta>
+<refentrytitle>glossary.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.collection</refname>
+<refpurpose>Name of the glossary collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossary.collection.frag">
+&lt;xsl:param name="glossary.collection"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Glossaries maintained independently across a set of documents
+are likely to become inconsistent unless considerable effort is
+expended to keep them in sync. It makes much more sense, usually, to
+store all of the glossary entries in a single place and simply
+<quote>extract</quote> the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>glossary.collection</parameter> parameter. To setup a global
+glossary <quote>database</quote>, follow these steps:</para>
+
+<refsection><info><title>Setting Up the Glossary Database</title></info>
+
+<para>First, create a stand-alone glossary document that contains all of
+the entries that you wish to reference. Make sure that each glossary
+entry has an ID.</para>
+
+<para>Here's an example glossary:</para>
+
+<informalexample>
+<programlisting>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE glossary
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;glossary&gt;
+&lt;glossaryinfo&gt;
+&lt;editor&gt;&lt;firstname&gt;Eric&lt;/firstname&gt;&lt;surname&gt;Raymond&lt;/surname&gt;&lt;/editor&gt;
+&lt;title&gt;Jargon File 4.2.3 (abridged)&lt;/title&gt;
+&lt;releaseinfo&gt;Just some test data&lt;/releaseinfo&gt;
+&lt;/glossaryinfo&gt;
+
+&lt;glossdiv&gt;&lt;title&gt;0&lt;/title&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;0&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;Numeric zero, as opposed to the letter `O' (the 15th letter of
+the English alphabet). In their unmodified forms they look a lot
+alike, and various kluges invented to make them visually distinct have
+compounded the confusion. If your zero is center-dotted and letter-O
+is not, or if letter-O looks almost rectangular but zero looks more
+like an American football stood on end (or the reverse), you're
+probably looking at a modern character display (though the dotted zero
+seems to have originated as an option on IBM 3270 controllers). If
+your zero is slashed but letter-O is not, you're probably looking at
+an old-style ASCII graphic set descended from the default typewheel on
+the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter,
+curse this arrangement). (Interestingly, the slashed zero long
+predates computers; Florian Cajori's monumental "A History of
+Mathematical Notations" notes that it was used in the twelfth and
+thirteenth centuries.) If letter-O has a slash across it and the zero
+does not, your display is tuned for a very old convention used at IBM
+and a few other early mainframe makers (Scandinavians curse &lt;emphasis&gt;this&lt;/emphasis&gt;
+arrangement even more, because it means two of their letters collide).
+Some Burroughs/Unisys equipment displays a zero with a &lt;emphasis&gt;reversed&lt;/emphasis&gt;
+slash. Old CDC computers rendered letter O as an unbroken oval and 0
+as an oval broken at upper right and lower left. And yet another
+convention common on early line printers left zero unornamented but
+added a tail or hook to the letter-O so that it resembled an inverted
+Q or cursive capital letter-O (this was endorsed by a draft ANSI
+standard for how to draw ASCII characters, but the final standard
+changed the distinguisher to a tick-mark in the upper-left corner).
+Are we sufficiently confused yet?&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;1TBS&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para role="accidence"&gt;
+&lt;phrase role="pronounce"&gt;&lt;/phrase&gt;
+&lt;phrase role="partsofspeach"&gt;n&lt;/phrase&gt;
+&lt;/para&gt;
+&lt;para&gt;The "One True Brace Style"&lt;/para&gt;
+&lt;glossseealso&gt;indent style&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossdiv&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+</refsection>
+
+<refsection><info><title>Marking Up Glossary Terms</title></info>
+
+<para>That takes care of the glossary database, now you have to get the entries
+into your document. Unlike bibliography entries, which can be empty, creating
+<quote>placeholder</quote> glossary entries would be very tedious. So instead,
+support for <parameter>glossary.collection</parameter> relies on implicit linking.</para>
+
+<para>In your source document, simply use <tag>firstterm</tag> and
+<tag>glossterm</tag> to identify the terms you wish to have included
+in the glossary. The stylesheets assume that you will either set the
+<tag class="attribute">baseform</tag> attribute correctly, or that the
+content of the element exactly matches a term in your glossary.</para>
+
+<para>If you're using a <parameter>glossary.collection</parameter>, don't
+make explicit links on the terms in your document.</para>
+
+<para>So, in your document, you might write things like this:</para>
+
+<informalexample>
+<programlisting>&lt;para&gt;This is dummy text, without any real meaning.
+The point is simply to reference glossary terms like &lt;glossterm&gt;0&lt;/glossterm&gt;
+and the &lt;firstterm baseform="1TBS"&gt;One True Brace Style (1TBS)&lt;/firstterm&gt;.
+The &lt;glossterm&gt;1TBS&lt;/glossterm&gt;, as you can probably imagine, is a nearly
+religious issue.&lt;/para&gt;</programlisting>
+</informalexample>
+
+<para>If you set the <parameter>firstterm.only.link</parameter> parameter,
+only the terms marked with <tag>firstterm</tag> will be links.
+Otherwise, all the terms will be linked.</para>
+
+</refsection>
+
+<refsection><info><title>Marking Up the Glossary</title></info>
+
+<para>The glossary itself has to be identified for the stylesheets. For lack
+of a better choice, the <tag class="attribute">role</tag> is used.
+To identify the glossary as the target for automatic processing, set
+the role to <quote><literal>auto</literal></quote>. The title of this
+glossary (and any other information from the <tag>glossaryinfo</tag>
+that's rendered by your stylesheet) will be displayed, but the entries will
+come from the database.
+</para>
+
+<para>Unfortunately, the glossary can't be empty, so you must put in
+at least one <tag>glossentry</tag>. The content of this entry
+is irrelevant, it will not be rendered:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+<para>What about glossary divisions? If your glossary database has glossary
+divisions <emphasis>and</emphasis> your automatic glossary contains at least
+one <tag>glossdiv</tag>, the automic glossary will have divisions.
+If the <tag>glossdiv</tag> is missing from either location, no divisions
+will be rendered.</para>
+
+<para>Glossary entries (and divisions, if appropriate) in the glossary will
+occur in precisely the order they occur in your database.</para>
+
+</refsection>
+
+<refsection><info><title>Formatting the Document</title></info>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>glossary.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global glossary.</para>
+
+<para>The stylesheets will format the glossary in your document as if
+all of the entries implicilty referenced appeared there literally.</para>
+</refsection>
+
+<refsection><info><title>Limitations</title></info>
+
+<para>Glossary cross-references <emphasis>within the glossary</emphasis> are
+not supported. For example, this <emphasis>will not</emphasis> work:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+
+<para>If you put glossary cross-references in your glossary that way,
+you'll get the cryptic error: <computeroutput>Warning:
+glossary.collection specified, but there are 0 automatic
+glossaries</computeroutput>.</para>
+
+<para>Instead, you must do two things:</para>
+
+<orderedlist>
+<listitem>
+<para>Markup your glossary using <tag>glossseealso</tag>:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+</listitem>
+
+<listitem>
+<para>Make sure there is at least one <tag>glossterm</tag> reference to
+<glossterm>gloss-2</glossterm> <emphasis>in your document</emphasis>. The
+easiest way to do that is probably within a <tag>remark</tag> in your
+automatic glossary:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;remark&gt;Make sure there's a reference to &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/remark&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+</listitem>
+</orderedlist>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossary.as.blocks">
+<refmeta>
+<refentrytitle>glossary.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.as.blocks</refname>
+<refpurpose>Present glossarys using blocks instead of lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossary.as.blocks.frag">
+&lt;xsl:param name="glossary.as.blocks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>glossary</tag>s will be formatted as
+blocks.</para>
+
+<para>If you have long <tag>glossterm</tag>s, proper list
+markup in the FO case may produce unattractive lists. By setting this
+parameter, you can force the stylesheets to produce block markup
+instead of proper lists.</para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>glossary</tag>: <tag class="xmlpi">dbfo
+glossary-presentation="blocks"</tag> or <tag class="xmlpi">dbfo
+glossary-presentation="list"</tag></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glosslist.as.blocks">
+<refmeta>
+<refentrytitle>glosslist.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glosslist.as.blocks</refname>
+<refpurpose>Use blocks for glosslists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glosslist.as.blocks.frag">
+&lt;xsl:param name="glosslist.as.blocks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>See <parameter>glossary.as.blocks</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossentry.list.item.properties">
+<refmeta>
+<refentrytitle>glossentry.list.item.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.list.item.properties</refname>
+<refpurpose>To add properties to each glossentry in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossentry.list.item.properties.frag">&lt;xsl:attribute-set name="glossentry.list.item.properties"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the fo:list-item containing a
+glossentry in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set
+spacing between entries, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossterm.block.properties">
+<refmeta>
+<refentrytitle>glossterm.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.block.properties</refname>
+<refpurpose>To add properties to the block of a glossentry's glossterm.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossterm.block.properties.frag">&lt;xsl:attribute-set name="glossterm.block.properties"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary term in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is non-zero.
+Use this attribute-set to set the space above and below,
+font properties,
+and any indent for the glossary term.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossdef.block.properties">
+<refmeta>
+<refentrytitle>glossdef.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossdef.block.properties</refname>
+<refpurpose>To add properties to the block of a glossary definition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossdef.block.properties.frag">&lt;xsl:attribute-set name="glossdef.block.properties"&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;.25in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary definition in a glossary when
+the <parameter>glossary.as.blocks</parameter> parameter
+is non-zero.
+Use this attribute-set to set the space above and below,
+any font properties,
+and any indent for the glossary definition.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossterm.list.properties">
+<refmeta>
+<refentrytitle>glossterm.list.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.list.properties</refname>
+<refpurpose>To add properties to the glossterm in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossterm.list.properties.frag">
+&lt;xsl:attribute-set name="glossterm.list.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary term in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set
+font properties, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossdef.list.properties">
+<refmeta>
+<refentrytitle>glossdef.list.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossdef.list.properties</refname>
+<refpurpose>To add properties to the glossary definition in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossdef.list.properties.frag">
+&lt;xsl:attribute-set name="glossdef.list.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary definition in a glossary when
+the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set font properties, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossterm.width">
+<refmeta>
+<refentrytitle>glossterm.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.width</refname>
+<refpurpose>Width of glossterm in list presentation mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossterm.width.frag">
+&lt;xsl:param name="glossterm.width"&gt;2in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the width reserved for glossary terms when
+a list presentation is used.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossterm.separation">
+<refmeta>
+<refentrytitle>glossterm.separation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.separation</refname>
+<refpurpose>Separation between glossary terms and descriptions in list mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossterm.separation.frag">
+&lt;xsl:param name="glossterm.separation"&gt;0.25in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the miminum horizontal
+separation between glossary terms and descriptions when
+they are presented side-by-side using lists
+when the <parameter>glossary.as.blocks</parameter>
+is zero.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossentry.show.acronym">
+<refmeta>
+<refentrytitle>glossentry.show.acronym</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">primary</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.show.acronym</refname>
+<refpurpose>Display <tag>glossentry</tag> acronyms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossentry.show.acronym.frag">
+&lt;xsl:param name="glossentry.show.acronym"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A setting of <quote>yes</quote> means they should be displayed;
+<quote>no</quote> means they shouldn't. If <quote>primary</quote> is used,
+then they are shown as the primary text for the entry.</para>
+
+<note>
+<para>This setting controls both <tag>acronym</tag> and
+<tag>abbrev</tag> elements in the <tag>glossentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="glossary.sort">
+<refmeta>
+<refentrytitle>glossary.sort</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.sort</refname>
+<refpurpose>Sort glossentry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="glossary.sort.frag">
+&lt;xsl:param name="glossary.sort" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then the glossentry elements within a
+glossary, glossdiv, or glosslist are sorted on the glossterm, using
+the current lang setting. If zero (the default), then
+glossentry elements are not sorted and are presented
+in document order.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="misc" xml:base="../fo/param.xml"><title>Miscellaneous</title>
+<refentry version="5.0" id="formal.procedures">
+<refmeta>
+<refentrytitle>formal.procedures</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.procedures</refname>
+<refpurpose>Selects formal or informal procedures</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="formal.procedures.frag">
+&lt;xsl:param name="formal.procedures" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formal procedures are numbered and always have a title.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="formal.title.placement">
+<refmeta>
+<refentrytitle>formal.title.placement</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.placement</refname>
+<refpurpose>Specifies where formal object titles should occur</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="formal.title.placement.frag">
+&lt;xsl:param name="formal.title.placement"&gt;
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies where formal object titles should occur. For each formal object
+type (<tag>figure</tag>,
+<tag>example</tag>,
+<tag>equation</tag>,
+<tag>table</tag>, and <tag>procedure</tag>)
+you can specify either the keyword
+<quote><literal>before</literal></quote> or
+<quote><literal>after</literal></quote>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="runinhead.default.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.default.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.default.title.end.punct</refname>
+<refpurpose>Default punctuation character on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="runinhead.default.title.end.punct.frag">&lt;xsl:param name="runinhead.default.title.end.punct"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, For a <tag>formalpara</tag>, use the specified
+string as the separator between the title and following text. The period is the default value.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="runinhead.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.title.end.punct</refname>
+<refpurpose>Characters that count as punctuation on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="runinhead.title.end.punct.frag">
+&lt;xsl:param name="runinhead.title.end.punct"&gt;.!?:&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify which characters are to be counted as punctuation. These
+characters are checked for a match with the last character of the
+title. If no match is found, the
+<parameter>runinhead.default.title.end.punct</parameter> contents are
+inserted. This is to avoid duplicated punctuation in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="show.comments">
+<refmeta>
+<refentrytitle>show.comments</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.comments</refname>
+<refpurpose>Display <tag>remark</tag> elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="show.comments.frag">
+&lt;xsl:param name="show.comments" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, comments will be displayed, otherwise they
+are suppressed. Comments here refers to the <tag>remark</tag> element
+(which was called <literal>comment</literal> prior to DocBook
+4.0), not XML comments (&lt;-- like this --&gt;) which are
+unavailable.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="punct.honorific">
+<refmeta>
+<refentrytitle>punct.honorific</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>punct.honorific</refname>
+<refpurpose>Punctuation after an honorific in a personal name.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="punct.honorific.frag">
+&lt;xsl:param name="punct.honorific"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the punctuation that should be added after an
+honorific in a personal name.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="segmentedlist.as.table">
+<refmeta>
+<refentrytitle>segmentedlist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>segmentedlist.as.table</refname>
+<refpurpose>Format segmented lists as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="segmentedlist.as.table.frag">
+&lt;xsl:param name="segmentedlist.as.table" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>segmentedlist</tag>s will be formatted as
+tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="variablelist.as.blocks">
+<refmeta>
+<refentrytitle>variablelist.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.as.blocks</refname>
+<refpurpose>Format <tag>variablelist</tag>s lists as blocks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="variablelist.as.blocks.frag">
+&lt;xsl:param name="variablelist.as.blocks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>variablelist</tag>s will be formatted as
+blocks.</para>
+
+<para>If you have long terms, proper list markup in the FO case may produce
+unattractive lists. By setting this parameter, you can force the stylesheets
+to produce block markup instead of proper lists.</para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>variablelist</tag>: <tag class="xmlpi">dbfo
+list-presentation="blocks"</tag> or <tag class="xmlpi">dbfo
+list-presentation="list"</tag>.</para>
+
+<para>When using <literal>list-presentation="list"</literal>,
+you can also control the amount of space used for the <tag>term</tag>s with
+the <tag class="xmlpi">dbfo term-width=".25in"</tag> processing instruction,
+the <tag class="attribute">termlength</tag> attribute on <tag>variablelist</tag>,
+or allow the stylesheets to attempt to calculate the amount of space to leave based on the
+number of letters in the longest term.
+</para>
+
+<programlisting> &lt;variablelist&gt;
+ &lt;?dbfo list-presentation="list"?&gt;
+ &lt;?dbfo term-width="1.5in"?&gt;
+ &lt;?dbhtml list-presentation="table"?&gt;
+ &lt;?dbhtml term-width="1.5in"?&gt;
+ &lt;varlistentry&gt;
+ &lt;term&gt;list&lt;/term&gt;
+ &lt;listitem&gt;
+ &lt;para&gt;
+ Formatted as a list even if variablelist.as.blocks is set to 1.
+ &lt;/para&gt;
+ &lt;/listitem&gt;
+ &lt;/varlistentry&gt;
+ &lt;/variablelist&gt;</programlisting>
+
+
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="blockquote.properties">
+<refmeta>
+ <refentrytitle>blockquote.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>blockquote.properties</refname>
+<refpurpose>To set the style for block quotations.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="blockquote.properties.frag">
+&lt;xsl:attribute-set name="blockquote.properties"&gt;
+&lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0.5in&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="margin-{$direction.align.end}"&gt;0.5in&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>blockquote.properties</parameter> attribute set specifies
+the formating properties of block quotations.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ulink.show">
+<refmeta>
+<refentrytitle>ulink.show</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.show</refname>
+<refpurpose>Display URLs after <tag>ulink</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ulink.show.frag">
+&lt;xsl:param name="ulink.show" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the URL of each <tag>ulink</tag> will
+appear after the text of the link. If the text of the link and the URL
+are identical, the URL is suppressed. </para>
+
+<para>See also <parameter>ulink.footnotes</parameter>.</para>
+
+<note><para>DocBook 5 does not have an <tag>ulink</tag> element. When processing
+DocBoook 5 documents, <parameter>ulink.show</parameter> applies to all inline
+elements that are marked up with <tag class="attribute">xlink:href</tag> attributes
+that point to external resources.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ulink.footnotes">
+<refmeta>
+<refentrytitle>ulink.footnotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.footnotes</refname>
+<refpurpose>Generate footnotes for <tag>ulink</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ulink.footnotes.frag">
+&lt;xsl:param name="ulink.footnotes" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if <parameter>ulink.show</parameter> also is non-zero,
+the URL of each <tag>ulink</tag> will appear as a footnote.</para>
+
+<note><para>DocBook 5 does not have an <tag>ulink</tag> element. When processing
+DocBoook 5 documents, <parameter>ulink.footnotes</parameter> applies to all inline
+elements that are marked up with <tag class="attribute">xlink:href</tag> attributes
+that point to external resources.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ulink.hyphenate">
+<refmeta>
+<refentrytitle>ulink.hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.hyphenate</refname>
+<refpurpose>Allow URLs to be automatically hyphenated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ulink.hyphenate.frag">
+&lt;xsl:param name="ulink.hyphenate"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If not empty, the specified character (or more generally, content) is
+added to URLs after every character included in the string
+in the <parameter>ulink.hyphenate.chars</parameter> parameter (default
+is <quote>/</quote>). If the character in this parameter is a
+Unicode soft hyphen (0x00AD) or Unicode zero-width space (0x200B), some FO
+processors will be able to reasonably hyphenate long URLs.</para>
+
+<para>As of 28 Jan 2002, discretionary hyphens are more widely and correctly
+supported than zero-width spaces for this purpose.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ulink.hyphenate.chars">
+<refmeta>
+<refentrytitle>ulink.hyphenate.chars</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.hyphenate.chars</refname>
+<refpurpose>List of characters to allow ulink URLs to be automatically hyphenated on</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ulink.hyphenate.chars.frag">
+&lt;xsl:param name="ulink.hyphenate.chars"&gt;/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the <parameter>ulink.hyphenate</parameter> is not empty, then
+hyphenation of ulinks is turned on, and any
+character contained in this parameter is treated as an allowable
+hyphenation point.</para>
+
+<para>The default value is <quote>/</quote>, but the parameter
+could be customized
+to contain other URL characters, as for example:</para>
+<programlisting>
+&lt;xsl:param name="ulink.hyphenate.chars"&gt;:/@&amp;?.#&lt;/xsl:param&gt;
+</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="shade.verbatim">
+<refmeta>
+<refentrytitle>shade.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim</refname>
+<refpurpose>Should verbatim environments be shaded?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="shade.verbatim.frag">&lt;xsl:param name="shade.verbatim" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In the FO stylesheet, if this parameter is non-zero then the
+<property>shade.verbatim.style</property> properties will be applied
+to verbatim environments.</para>
+
+<para>In the HTML stylesheet, this parameter is now deprecated. Use
+CSS instead.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="shade.verbatim.style">
+<refmeta>
+<refentrytitle>shade.verbatim.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim.style</refname>
+<refpurpose>Properties that specify the style of shaded verbatim listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="shade.verbatim.style.frag">
+
+&lt;xsl:attribute-set name="shade.verbatim.style"&gt;
+ &lt;xsl:attribute name="background-color"&gt;#E0E0E0&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties that specify the style of shaded verbatim listings. The
+parameters specified (the border and background color) are added to
+the styling of the xsl-fo output. A border might be specified as "thin
+black solid" for example. See <link xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/#border">xsl-fo</link></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="hyphenate.verbatim">
+<refmeta>
+<refentrytitle>hyphenate.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate.verbatim</refname>
+<refpurpose>Should verbatim environments be hyphenated on space characters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="hyphenate.verbatim.frag">&lt;xsl:param name="hyphenate.verbatim" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the lines of program listing are too long to fit into one
+line it is quite common to split them at space and indicite by hook
+arrow that code continues on the next line. You can turn on this
+behaviour for <tag>programlisting</tag>,
+<tag>screen</tag> and <tag>synopsis</tag> elements by
+using this parameter.</para>
+
+<para>Note that you must also enable line wrapping for verbatim environments and
+select appropriate hyphenation character (e.g. hook arrow). This can
+be done using <parameter>monospace.verbatim.properties</parameter>
+attribute set:</para>
+
+<programlisting>&lt;xsl:attribute-set name="monospace.verbatim.properties"
+ use-attribute-sets="verbatim.properties monospace.properties"&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;wrap&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenation-character"&gt;&amp;#x25BA;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+
+<para>For a list of arrows available in Unicode see <uri xlink:href="http://www.unicode.org/charts/PDF/U2190.pdf">http://www.unicode.org/charts/PDF/U2190.pdf</uri> and <uri xlink:href="http://www.unicode.org/charts/PDF/U2900.pdf">http://www.unicode.org/charts/PDF/U2900.pdf</uri> and make sure that
+selected character is available in the font you are using for verbatim
+environments.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="hyphenate.verbatim.characters">
+<refmeta>
+<refentrytitle>hyphenate.verbatim.characters</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate.verbatim.characters</refname>
+<refpurpose>List of characters after which a line break can occur in listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="hyphenate.verbatim.characters.frag">
+&lt;xsl:param name="hyphenate.verbatim.characters"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you enable <parameter>hyphenate.verbatim</parameter> line
+breaks are allowed only on space characters. If this is not enough for
+your document, you can specify list of additional characters after
+which line break is allowed in this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.svg">
+<refmeta>
+<refentrytitle>use.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.svg</refname>
+<refpurpose>Allow SVG in the result tree?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.svg.frag">
+&lt;xsl:param name="use.svg" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, SVG will be considered an acceptable image format. SVG
+is passed through to the result tree, so correct rendering of the resulting
+diagram depends on the formatter (FO processor or web browser) that is used
+to process the output from the stylesheet.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.role.as.xrefstyle">
+<refmeta>
+<refentrytitle>use.role.as.xrefstyle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.as.xrefstyle</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute for
+<tag class="attribute">xrefstyle</tag> on <tag>xref</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.role.as.xrefstyle.frag">
+&lt;xsl:param name="use.role.as.xrefstyle" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In DocBook documents that conform to a schema older than V4.3, this parameter allows
+<tag class="attribute">role</tag> to serve the purpose of specifying the cross reference style.</para>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>xref</tag> will be used to select the cross reference style.
+In DocBook V4.3, the <tag class="attribute">xrefstyle</tag> attribute was added for this purpose.
+If the <tag class="attribute">xrefstyle</tag> attribute is present,
+<tag class="attribute">role</tag> will be ignored, regardless of the setting
+of this parameter.</para>
+
+</refsection>
+
+<refsection><info><title>Example</title></info>
+
+<para>The following small stylesheet shows how to configure the
+stylesheets to make use of the cross reference style:</para>
+
+<programlisting>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"&gt;
+
+&lt;xsl:import href="../xsl/html/docbook.xsl"/&gt;
+
+&lt;xsl:output method="html"/&gt;
+
+&lt;xsl:param name="local.l10n.xml" select="document('')"/&gt;
+&lt;l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"&gt;
+ &lt;l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"&gt;
+ &lt;l:context name="xref"&gt;
+ &lt;l:template name="chapter" style="title" text="Chapter %n, %t"/&gt;
+ &lt;l:template name="chapter" text="Chapter %n"/&gt;
+ &lt;/l:context&gt;
+ &lt;/l:l10n&gt;
+&lt;/l:i18n&gt;
+
+&lt;/xsl:stylesheet&gt;</programlisting>
+
+<para>With this stylesheet, the cross references in the following document:</para>
+
+<programlisting>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"&gt;
+&lt;book id="book"&gt;&lt;title&gt;Book&lt;/title&gt;
+
+&lt;preface&gt;
+&lt;title&gt;Preface&lt;/title&gt;
+
+&lt;para&gt;Normal: &lt;xref linkend="ch1"/&gt;.&lt;/para&gt;
+&lt;para&gt;Title: &lt;xref xrefstyle="title" linkend="ch1"/&gt;.&lt;/para&gt;
+
+&lt;/preface&gt;
+
+&lt;chapter id="ch1"&gt;
+&lt;title&gt;First Chapter&lt;/title&gt;
+
+&lt;para&gt;Irrelevant.&lt;/para&gt;
+
+&lt;/chapter&gt;
+&lt;/book&gt;</programlisting>
+
+<para>will appear as:</para>
+
+<informalexample>
+<para>Normal: Chapter 1.</para>
+<para>Title: Chapter 1, <emphasis>First Chapter</emphasis>.</para>
+</informalexample>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="menuchoice.separator">
+<refmeta>
+<refentrytitle>menuchoice.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+other than <tag>guimenuitem</tag> and
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="menuchoice.separator.frag">
+&lt;xsl:param name="menuchoice.separator"&gt;+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> other
+than <tag>guimenuitem</tag> and <tag>guisubmenu</tag>. The latter
+elements are linked with <parameter>menuchoice.menu.separator</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="menuchoice.menu.separator">
+<refmeta>
+<refentrytitle>menuchoice.menu.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.menu.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+with <tag>guimenuitem</tag> or
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="menuchoice.menu.separator.frag">
+&lt;xsl:param name="menuchoice.menu.separator"&gt; &#8594; &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> with
+<tag>guimenuitem</tag> or <tag>guisubmenu</tag>. Other elements
+are linked with <parameter>menuchoice.separator</parameter>.
+</para>
+<para>The default value is &amp;#x2192;, which is the
+&amp;rarr; (right arrow) character entity.
+The current FOP (0.20.5) requires setting the font-family
+explicitly.
+</para>
+<para>The default value also includes spaces around the arrow,
+which will allow a line to break. Replace the spaces with
+&amp;#xA0; (nonbreaking space) if you don't want those
+spaces to break.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.float.class">
+<refmeta>
+<refentrytitle>default.float.class</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.float.class</refname>
+<refpurpose>Specifies the default float class</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.float.class.frag">
+&lt;xsl:param name="default.float.class"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($stylesheet.result.type,'html')"&gt;left&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;before&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the direction in which a float should be placed. for
+xsl-fo this is before, for html it is left. For Western texts, the
+before direction is the top of the page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.number.format">
+<refmeta>
+<refentrytitle>footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.number.format.frag">
+&lt;xsl:param name="footnote.number.format"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.footnote.number.format">
+<refmeta>
+<refentrytitle>table.footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.footnote.number.format.frag">
+&lt;xsl:param name="table.footnote.number.format"&gt;a&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>table.footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A) in tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.number.symbols">
+<refmeta>
+<refentrytitle>footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype"/>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.symbols</refname>
+<refpurpose>Special characters to use as footnote markers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.number.symbols.frag">
+&lt;xsl:param name="footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>footnote.number.symbols</parameter> is not the empty string,
+footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.footnote.number.symbols">
+<refmeta>
+<refentrytitle>table.footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.symbols</refname>
+<refpurpose>Special characters to use a footnote markers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.footnote.number.symbols.frag">
+&lt;xsl:param name="table.footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>table.footnote.number.symbols</parameter> is not the empty string,
+table footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>table.footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.properties">
+<refmeta>
+<refentrytitle>footnote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to each footnote body
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.properties.frag">
+&lt;xsl:attribute-set name="footnote.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;&lt;xsl:value-of select="$footnote.font.size"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;&lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-indent"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;&lt;xsl:value-of select="$hyphenate"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;wrap&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="linefeed-treatment"&gt;treat-as-space&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote-block
+for each footnote.
+It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.footnote.properties">
+<refmeta>
+<refentrytitle>table.footnote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.properties</refname>
+<refpurpose>Properties applied to each table footnote body
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.footnote.properties.frag">
+&lt;xsl:attribute-set name="table.footnote.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;&lt;xsl:value-of select="$footnote.font.size"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;&lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote-block
+for each table footnote.
+It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all table footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.mark.properties">
+<refmeta>
+<refentrytitle>footnote.mark.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.mark.properties</refname>
+<refpurpose>Properties applied to each footnote mark
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.mark.properties.frag">
+&lt;xsl:attribute-set name="footnote.mark.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;75%&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote mark used
+for each footnote.
+It should contain only inline properties.
+</para>
+
+<para>The property to make the mark a superscript is contained in the
+footnote template itself, because the current version of FOP reports
+an error if baseline-shift is used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.sep.leader.properties">
+<refmeta>
+<refentrytitle>footnote.sep.leader.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.sep.leader.properties</refname>
+<refpurpose>Properties associated with footnote separators</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.sep.leader.properties.frag">
+&lt;xsl:attribute-set name="footnote.sep.leader.properties"&gt;
+ &lt;xsl:attribute name="color"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="leader-pattern"&gt;rule&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="leader-length"&gt;1in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for the rule line that separates the
+footnotes from the body text.
+These are properties applied to the fo:leader used as
+the separator.
+</para>
+<para>If you want to do more than just set properties on
+the leader element, then you can customize the template
+named <literal>footnote.separator</literal> in
+<filename>fo/pagesetup.xsl</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xref.with.number.and.title">
+<refmeta>
+<refentrytitle>xref.with.number.and.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.with.number.and.title</refname>
+<refpurpose>Use number and title in cross references</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xref.with.number.and.title.frag">
+&lt;xsl:param name="xref.with.number.and.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A cross reference may include the number (for example, the number of
+an example or figure) and the <tag>title</tag> which is a required child of some
+targets. This parameter inserts both the relevant number as well as
+the title into the link. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="superscript.properties">
+<refmeta>
+<refentrytitle>superscript.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>superscript.properties</refname>
+<refpurpose>Properties associated with superscripts</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="superscript.properties.frag">
+&lt;xsl:attribute-set name="superscript.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;75%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies styling properties for superscripts.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="subscript.properties">
+<refmeta>
+<refentrytitle>subscript.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>subscript.properties</refname>
+<refpurpose>Properties associated with subscripts</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="subscript.properties.frag">
+&lt;xsl:attribute-set name="subscript.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;75%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies styling properties for subscripts.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="pgwide.properties">
+<refmeta>
+<refentrytitle>pgwide.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pgwide.properties</refname>
+<refpurpose>Properties to make a figure or table page wide.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="pgwide.properties.frag">
+&lt;xsl:attribute-set name="pgwide.properties"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used to set the properties
+that make a figure or table "page wide" in fo output.
+It comes into effect when an attribute <literal>pgwide="1"</literal>
+is used.
+</para>
+
+<para>
+By default, it sets <parameter>start-indent</parameter>
+to <literal>0pt</literal>.
+In a stylesheet that sets the parameter
+<parameter>body.start.indent</parameter>
+to a non-zero value in order to indent body text,
+this attribute set can be used to outdent pgwide
+figures to the start margin.
+</para>
+
+<para>If a document uses a multi-column page layout,
+then this attribute set could try setting <parameter>span</parameter>
+to a value of <literal>all</literal>. However, this may
+not work with some processors because a span property must be on an
+fo:block that is a direct child of fo:flow. It may work in
+some processors anyway.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="highlight.source">
+<refmeta>
+<refentrytitle>highlight.source</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.source</refname>
+<refpurpose>Should the content of <tag>programlisting</tag>
+be syntactically highlighted?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="highlight.source.frag">
+&lt;xsl:param name="highlight.source" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the
+content of <tag>programlisting</tag> elements. You specify the language for each programlisting
+by using the <tag class="attribute">language</tag> attribute. The <parameter>highlight.default.language</parameter>
+parameter can be used to specify the language for programlistings without a <tag class="attribute">language</tag>
+attribute. Syntax highlighting also works for <tag>screen</tag> and <tag>synopsis</tag> elements.</para>
+
+<para>The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be
+downloaded separately (see below).</para>
+
+<itemizedlist>
+<para>In order to use this extension, you must</para>
+
+<listitem><para>add <filename>xslthl-2.x.x.jar</filename> to your Java classpath. The latest version is available
+from <link xlink:href="http://sourceforge.net/projects/xslthl">the XSLT syntax highlighting project</link>
+at SourceForge.</para>
+</listitem>
+<listitem>
+<para>use a customization layer in which you import one of the following stylesheet modules:
+<itemizedlist>
+ <listitem>
+ <para><filename>html/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml-1_1/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>fo/highlight.xsl</filename>
+ </para>
+</listitem>
+</itemizedlist>
+</para>
+</listitem>
+<listitem><para>let either the <literal>xslthl.config</literal> Java system property or the
+<parameter>highlight.xslthl.config</parameter> parameter point to the configuration file for syntax
+highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file,
+<filename>highlighting/xslthl-config.xml</filename>.</para>
+</listitem>
+</itemizedlist>
+
+<para>The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is
+an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.)</para>
+
+<para>The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows:</para>
+
+<informalexample>
+<para><command>java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar
+-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet
+-o test.html test.xml myhtml.xsl</command></para>
+</informalexample>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="highlight.xslthl.config">
+<refmeta>
+<refentrytitle>highlight.xslthl.config</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.xslthl.config</refname>
+<refpurpose>Location of XSLTHL configuration file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="highlight.xslthl.config.frag">
+&lt;xsl:param name="highlight.xslthl.config"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This location has precedence over the corresponding Java property.</para>
+
+<para>Please note that usually you have to specify location as URL not
+just as a simple path on the local
+filesystem. E.g. <filename>file:///home/user/xslthl/my-xslthl-config.xml</filename>.</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="highlight.default.language">
+<refmeta>
+<refentrytitle>highlight.default.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.default.language</refname>
+<refpurpose>Default language of programlisting</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="highlight.default.language.frag">
+&lt;xsl:param name="highlight.default.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This language is used when there is no language attribute on programlisting.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="email.delimiters.enabled">
+<refmeta>
+<refentrytitle>email.delimiters.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.delimiters.enabled</refname>
+<refpurpose>Generate delimiters around email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="email.delimiters.enabled.frag">
+&lt;xsl:param name="email.delimiters.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, delimiters
+
+<footnote><para>For delimiters, the
+stylesheets are currently hard-coded to output angle
+brackets.</para></footnote>
+
+are generated around e-mail addresses
+(the output of the <tag>email</tag> element).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="email.mailto.enabled">
+<refmeta>
+<refentrytitle>email.mailto.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.mailto.enabled</refname>
+<refpurpose>Generate mailto: links for email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="email.mailto.enabled.frag">
+&lt;xsl:param name="email.mailto.enabled" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero the generated output for the <tag>email</tag> element
+will be a clickable mailto: link that brings up the default mail client
+on the system.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.container.element">
+<refmeta>
+<refentrytitle>section.container.element</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">block</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">wrapper</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.container.element</refname>
+<refpurpose>Select XSL-FO element name to contain sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.container.element.frag">
+&lt;xsl:param name="section.container.element"&gt;block&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the element name for outer container of
+each section. The choices are <literal>block</literal> (default)
+or <literal>wrapper</literal>.
+The <literal>fo:</literal> namespace prefix is added
+by the stylesheet to form the full element name.
+</para>
+
+<para>This element receives the section <literal>id</literal>
+attribute and the appropriate section level attribute-set.
+</para>
+
+<para>Changing this parameter to <literal>wrapper</literal>
+is only necessary when producing multi-column output
+that contains page-wide spans. Using <literal>fo:wrapper</literal>
+avoids the nesting of <literal>fo:block</literal>
+elements that prevents spans from working (the standard says
+a span must be on a block that is a direct child of
+<literal>fo:flow</literal>).
+</para>
+
+<para>If set to <literal>wrapper</literal>, the
+section attribute-sets only support properties
+that are inheritable. That's because there is no
+block to apply them to. Properties such as
+font-family are inheritable, but properties such as
+border are not.
+</para>
+
+<para>Only some XSL-FO processors need to use this parameter.
+The Antenna House processor, for example, will handle
+spans in nested blocks without changing the element name.
+The RenderX XEP product and FOP follow the XSL-FO standard
+and need to use <literal>wrapper</literal>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="monospace.verbatim.font.width">
+<refmeta>
+<refentrytitle>monospace.verbatim.font.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.verbatim.font.width</refname>
+<refpurpose>Width of a single monospace font character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="monospace.verbatim.font.width.frag">
+&lt;xsl:param name="monospace.verbatim.font.width"&gt;0.60em&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies with em units the width of a single character
+of the monospace font. The default value is <literal>0.6em</literal>.</para>
+
+<para>This parameter is only used when a <tag>screen</tag>
+or <tag>programlisting</tag> element has a
+<tag class="attribute">width</tag> attribute, which is
+expressed as a plain integer to indicate the maximum character count
+of each line.
+To convert this character count to an actual maximum width
+measurement, the width of the font characters must be provided.
+Different monospace fonts have different character width,
+so this parameter should be adjusted to fit the
+monospace font being used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="exsl.node.set.available">
+<refmeta>
+<refentrytitle>exsl.node.set.available</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>exsl.node.set.available</refname>
+<refpurpose>Is the test function-available('exsl:node-set') true?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="exsl.node.set.available.frag">&lt;xsl:param name="exsl.node.set.available"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')"&gt;1&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;0&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+then the exsl:node-set() function is available to be used in
+the stylesheet.
+If zero, then the function is not available.
+This param automatically detects the presence of
+the function and does not normally need to be set manually.</para>
+
+<para>This param was created to handle a long-standing
+bug in the Xalan processor that fails to detect the
+function even though it is available.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bookmarks.collapse">
+<refmeta>
+<refentrytitle>bookmarks.collapse</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bookmarks.collapse</refname>
+<refpurpose>Specifies the initial state of bookmarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bookmarks.collapse.frag">
+&lt;xsl:param name="bookmarks.collapse" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the bookmark tree is collapsed so that only the
+top-level bookmarks are displayed initially. Otherwise, the whole tree
+of bookmarks is displayed.</para>
+
+<para>This parameter currently works with FOP 0.93 or later.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="graphics" xml:base="../fo/param.xml"><title>Graphics</title>
+<refentry version="5.0" id="graphic.default.extension">
+<refmeta>
+<refentrytitle>graphic.default.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphic.default.extension</refname>
+<refpurpose>Default extension for graphic filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="graphic.default.extension.frag">&lt;xsl:param name="graphic.default.extension"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a <tag>graphic</tag> or <tag>mediaobject</tag>
+includes a reference to a filename that does not include an extension,
+and the <tag class="attribute">format</tag> attribute is
+<emphasis>unspecified</emphasis>, the default extension will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.image.width">
+<refmeta>
+<refentrytitle>default.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.image.width</refname>
+<refpurpose>The default width of images</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.image.width.frag">
+&lt;xsl:param name="default.image.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, this value will be used for the
+<tag class="attribute">width</tag> attribute on images that do not specify any
+<emphasis xlink:title="DocBook 5: The Definitive Guide" xlink:href="http://docbook.org/tdg5/en/html/imagedata.html#viewport.area">viewport dimensions</emphasis>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="preferred.mediaobject.role">
+<refmeta>
+<refentrytitle>preferred.mediaobject.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preferred.mediaobject.role</refname>
+<refpurpose>Select which mediaobject to use based on
+this value of an object's <tag class="attribute">role</tag> attribute.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="preferred.mediaobject.role.frag">
+&lt;xsl:param name="preferred.mediaobject.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A mediaobject may contain several objects such as imageobjects.
+If the parameter <parameter>use.role.for.mediaobject</parameter> is
+non-zero, then the <literal>role</literal> attribute on
+<tag>imageobject</tag>s and other objects within a
+<tag>mediaobject</tag> container will be used to select which object
+will be used. If one of the objects has a role value that matches the
+<parameter>preferred.mediaobject.role</parameter> parameter, then it
+has first priority for selection. If more than one has such a role
+value, the first one is used.
+</para>
+<para>
+See the <parameter>use.role.for.mediaobject</parameter> parameter
+for the sequence of selection.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="use.role.for.mediaobject">
+<refmeta>
+<refentrytitle>use.role.for.mediaobject</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.for.mediaobject</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute
+value for selecting which of several objects within a mediaobject to use.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="use.role.for.mediaobject.frag">
+&lt;xsl:param name="use.role.for.mediaobject" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>imageobject</tag>s or other objects within a <tag>mediaobject</tag> container will be used to select which object will be
+used.
+</para>
+<para>
+The order of selection when then parameter is non-zero is:
+</para>
+<orderedlist>
+<listitem>
+ <para>If the stylesheet parameter <parameter>preferred.mediaobject.role</parameter> has a value, then the object whose role equals that value is selected.</para>
+</listitem>
+<listitem>
+<para>Else if an object's role attribute has a value of
+<literal>html</literal> for HTML processing or
+<literal>fo</literal> for FO output, then the first
+of such objects is selected.
+</para>
+</listitem>
+<listitem>
+<para>Else the first suitable object is selected.</para>
+</listitem>
+</orderedlist>
+<para>
+If the value of
+<parameter>use.role.for.mediaobject</parameter>
+is zero, then role attributes are not considered
+and the first suitable object
+with or without a role value is used.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ignore.image.scaling">
+<refmeta>
+<refentrytitle>ignore.image.scaling</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ignore.image.scaling</refname>
+<refpurpose>Tell the stylesheets to ignore the author's image scaling attributes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ignore.image.scaling.frag">
+&lt;xsl:param name="ignore.image.scaling" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the scaling attributes on graphics and media objects are
+ignored.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="img.src.path">
+<refmeta>
+<refentrytitle>img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>img.src.path</refname>
+<refpurpose>Path to HTML/FO image files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="img.src.path.frag">&lt;xsl:param name="img.src.path"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Add a path prefix to the value of the <tag class="attribute">fileref</tag>
+attribute of <tag>graphic</tag>, <tag>inlinegraphic</tag>, and <tag>imagedata</tag> elements. The resulting
+compound path is used in the output as the value of the <tag class="attribute">src</tag>
+attribute of <tag class="element">img</tag> (HTML) or <tag class="element">external-graphic</tag> (FO).
+</para>
+
+<para>
+The path given by <literal>img.src.path</literal> could be relative to the directory where the HTML/FO
+files are created, or it could be an absolute URI.
+The default value is empty.
+Be sure to include a trailing slash if needed.
+</para>
+
+<para>This prefix is not applied to any filerefs that start
+with "/" or contain "//:".
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="keep.relative.image.uris">
+<refmeta>
+<refentrytitle>keep.relative.image.uris</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keep.relative.image.uris</refname>
+<refpurpose>Should image URIs be resolved against xml:base?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="keep.relative.image.uris.frag">
+
+&lt;xsl:param name="keep.relative.image.uris" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, relative URIs (in, for example
+<literal>fileref</literal> attributes) will be used in the generated
+output. Otherwise, the URIs will be made absolute with respect to the
+base URI.</para>
+
+<para>Note that the stylesheets calculate (and use) the absolute form
+for some purposes, this only applies to the resulting output.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="general" xml:base="../fo/param.xml"><title>Pagination and General Styles</title>
+<partintro id="margins_partintro">
+<section id="margins_intro"><title>Understanding XSL FO Margins</title>
+
+<para>To make sense of the parameters in this section, it's useful to
+consider <xref linkend="fig.pagemodel"/>.</para>
+
+<figure id="fig.pagemodel">
+ <title>Page Model</title>
+ <mediaobject id="fo-pageregions-image">
+ <imageobject role="html">
+ <imagedata fileref="page.png"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata fileref="fo/page.png"/>
+ </imageobject>
+ <textobject><phrase>Figure showing page margins</phrase></textobject>
+ <textobject>
+ <para>This figure shows the physical page with the various FO page regions
+ identified.</para>
+ </textobject>
+ </mediaobject>
+</figure>
+
+<para>First, let's consider the regions on the page.</para>
+
+<para>The white region is the physical page. Its dimensions are determined by
+the <parameter>page.height</parameter> and <parameter>page.width</parameter>
+parameters.</para>
+
+<para>The yellow region is the region-body. The size and placement of
+the region body is constrained by the dimensions labelled in the
+figure.</para>
+
+<para>The pink region at the top of the page is the region-before. The
+darker area inside the region-before is the header text. In XSL, the default
+display alignment for a region is <literal>before</literal>, but the
+DocBook stylesheets still explicitly make it <literal>before</literal>. That's
+why the darker area is at the top.</para>
+
+<para>The pink region at the bottom of the page is the region-after.
+The darker area is the footer text. In XSL, the default display
+alignment for a region is <literal>before</literal>,
+but the DocBook stylesheets explicitly make it
+<literal>after</literal>. That's why the darker area is at the bottom.</para>
+
+<para>The dimensions in the figure are:</para>
+
+<orderedlist numeration="upperalpha">
+<listitem><para>The page-master margin-top.
+</para></listitem>
+<listitem><para>The region-before extent.
+</para></listitem>
+<listitem><para>The region-body margin-top.
+</para></listitem>
+<listitem><para>The region-after extent.
+</para></listitem>
+<listitem><para>The page-master margin-bottom.
+</para></listitem>
+<listitem><para>The region-body margin-bottom.
+</para></listitem>
+<listitem><para>The sum of the page-master margin-left and the
+region-body margin-left. In DocBook, the region-body margin-left is
+zero by default, so this is simply the page-master margin-left.
+</para></listitem>
+<listitem><para>The sum of the page-master margin-right and the
+region-body margin-right. In DocBook, the region-body margin-right is
+zero by default, so this is simply the page-master margin-right.
+</para></listitem>
+</orderedlist>
+
+</section>
+</partintro>
+
+<refentry version="5.0" id="page.height">
+<refmeta>
+<refentrytitle>page.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.height</refname>
+<refpurpose>The height of the physical page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.height.frag">&lt;xsl:param name="page.height"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$page.orientation = 'portrait'"&gt;
+ &lt;xsl:value-of select="$page.height.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$page.width.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The page height is generally calculated from the
+<parameter>paper.type</parameter> and
+<parameter>page.orientation</parameter> parameters.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.height.portrait">
+<refmeta>
+<refentrytitle>page.height.portrait</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.height.portrait</refname>
+<refpurpose>Specify the physical size of the long edge of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.height.portrait.frag">&lt;xsl:param name="page.height.portrait"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$paper.type = 'A4landscape'"&gt;210mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USletter'"&gt;11in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlandscape'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '4A0'"&gt;2378mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '2A0'"&gt;1682mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A0'"&gt;1189mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A1'"&gt;841mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A2'"&gt;594mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A3'"&gt;420mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A4'"&gt;297mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A5'"&gt;210mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A6'"&gt;148mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A7'"&gt;105mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A8'"&gt;74mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A9'"&gt;52mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A10'"&gt;37mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B0'"&gt;1414mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B1'"&gt;1000mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B2'"&gt;707mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B3'"&gt;500mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B4'"&gt;353mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B5'"&gt;250mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B6'"&gt;176mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B7'"&gt;125mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B8'"&gt;88mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B9'"&gt;62mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B10'"&gt;44mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C0'"&gt;1297mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C1'"&gt;917mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C2'"&gt;648mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C3'"&gt;458mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C4'"&gt;324mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C5'"&gt;229mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C6'"&gt;162mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C7'"&gt;114mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C8'"&gt;81mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C9'"&gt;57mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C10'"&gt;40mm&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;11in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The portrait page height is the length of the long
+edge of the physical page.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.margin.bottom">
+<refmeta>
+<refentrytitle>page.margin.bottom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.bottom</refname>
+<refpurpose>The bottom margin of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.margin.bottom.frag">
+&lt;xsl:param name="page.margin.bottom"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The bottom page margin is the distance from the bottom of the region-after
+to the physical bottom of the page.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.margin.inner">
+<refmeta>
+<refentrytitle>page.margin.inner</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.inner</refname>
+<refpurpose>The inner page margin</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.margin.inner.frag">&lt;xsl:param name="page.margin.inner"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$double.sided != 0"&gt;1.25in&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;1in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The inner page margin is the distance from bound edge of the
+page to the first column of text. </para>
+
+<para>The inner page margin is the distance from bound edge of the
+page to the outer edge of the first column of text.</para>
+
+<para>In left-to-right text direction,
+this is the left margin of recto (front side) pages.
+For single-sided output, it is the left margin
+of all pages.</para>
+
+<para>In right-to-left text direction,
+this is the right margin of recto pages.
+For single-sided output, this is the
+right margin of all pages.</para>
+
+<note>
+<para>Current versions (at least as of version 4.13)
+of the XEP XSL-FO processor do not
+correctly handle these margin settings for documents
+with right-to-left text direction.
+The workaround in that situation is to reverse
+the values for <parameter>page.margin.inner</parameter>
+and <parameter>page.margin.outer</parameter>, until
+this bug is fixed by RenderX. It does not affect documents
+with left-to-right text direction.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.margin.outer">
+<refmeta>
+<refentrytitle>page.margin.outer</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.outer</refname>
+<refpurpose>The outer page margin</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.margin.outer.frag">&lt;xsl:param name="page.margin.outer"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$double.sided != 0"&gt;0.75in&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;1in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The outer page margin is the distance from non-bound edge of the
+page to the outer edge of the last column of text.</para>
+
+<para>In left-to-right text direction,
+this is the right margin of recto (front side) pages.
+For single-sided output, it is the right margin
+of all pages.</para>
+
+<para>In right-to-left text direction,
+this is the left margin of recto pages.
+For single-sided output, this is the
+left margin of all pages.</para>
+
+<note>
+<para>Current versions (at least as of version 4.13)
+of the XEP XSL-FO processor do not
+correctly handle these margin settings for documents
+with right-to-left text direction.
+The workaround in that situation is to reverse
+the values for <parameter>page.margin.inner</parameter>
+and <parameter>page.margin.outer</parameter>, until
+this bug is fixed by RenderX. It does not affect documents
+with left-to-right text direction.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.margin.top">
+<refmeta>
+<refentrytitle>page.margin.top</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.top</refname>
+<refpurpose>The top margin of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.margin.top.frag">
+&lt;xsl:param name="page.margin.top"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The top page margin is the distance from the physical top of the
+page to the top of the region-before.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.orientation">
+<refmeta>
+<refentrytitle>page.orientation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">portrait</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">landscape</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.orientation</refname>
+<refpurpose>Select the page orientation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.orientation.frag">
+&lt;xsl:param name="page.orientation"&gt;portrait&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para> Select one from portrait or landscape.
+In portrait orientation, the short edge is horizontal; in
+landscape orientation, it is vertical.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.width">
+<refmeta>
+<refentrytitle>page.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.width</refname>
+<refpurpose>The width of the physical page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.width.frag">&lt;xsl:param name="page.width"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$page.orientation = 'portrait'"&gt;
+ &lt;xsl:value-of select="$page.width.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$page.height.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The page width is generally calculated from the
+<parameter>paper.type</parameter> and
+<parameter>page.orientation</parameter> parameters.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="page.width.portrait">
+<refmeta>
+<refentrytitle>page.width.portrait</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.width.portrait</refname>
+<refpurpose>Specify the physical size of the short edge of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="page.width.portrait.frag">&lt;xsl:param name="page.width.portrait"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$paper.type = 'USletter'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '4A0'"&gt;1682mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '2A0'"&gt;1189mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A0'"&gt;841mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A1'"&gt;594mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A2'"&gt;420mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A3'"&gt;297mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A4'"&gt;210mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A5'"&gt;148mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A6'"&gt;105mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A7'"&gt;74mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A8'"&gt;52mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A9'"&gt;37mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A10'"&gt;26mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B0'"&gt;1000mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B1'"&gt;707mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B2'"&gt;500mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B3'"&gt;353mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B4'"&gt;250mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B5'"&gt;176mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B6'"&gt;125mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B7'"&gt;88mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B8'"&gt;62mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B9'"&gt;44mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B10'"&gt;31mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C0'"&gt;917mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C1'"&gt;648mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C2'"&gt;458mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C3'"&gt;324mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C4'"&gt;229mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C5'"&gt;162mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C6'"&gt;114mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C7'"&gt;81mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C8'"&gt;57mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C9'"&gt;40mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C10'"&gt;28mm&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;8.5in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The portrait page width is the length of the short
+edge of the physical page.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="paper.type">
+<refmeta>
+<refentrytitle>paper.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USletter<alt>8.5x11in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlandscape<alt>11x8.5in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegal<alt>8.5inx14in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegallandscape<alt>14inx8.5in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">4A0<alt>2378x1682mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">2A0<alt>1682x1189mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A0<alt>1189x841mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A1<alt>841x594mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A2<alt>594x420mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A3<alt>420x297mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A4<alt>297x210mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A5<alt>210x148mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A6<alt>148x105mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A7<alt>105x74mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A8<alt>74x52mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A9<alt>52x37mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A10<alt>37x26mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B0<alt>1414x1000mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B1<alt>1000x707mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B2<alt>707x500mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B3<alt>500x353mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B4<alt>353x250mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B5<alt>250x176mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B6<alt>176x125mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B7<alt>125x88mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B8<alt>88x62mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B9<alt>62x44mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B10<alt>44x31mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C0<alt>1297x917mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C1<alt>917x648mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C2<alt>648x458mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C3<alt>458x324mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C4<alt>324x229mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C5<alt>229x162mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C6<alt>162x114mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C7<alt>114x81mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C8<alt>81x57mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C9<alt>57x40mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C10<alt>40x28mm</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>paper.type</refname>
+<refpurpose>Select the paper type</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="paper.type.frag">
+&lt;xsl:param name="paper.type"&gt;USletter&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The paper type is a convenient way to specify the paper size.
+The list of known paper sizes includes USletter and most of the A,
+B, and C sizes. See <parameter>page.width.portrait</parameter>, for example.
+
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="double.sided">
+<refmeta>
+<refentrytitle>double.sided</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>double.sided</refname>
+<refpurpose>Is the document to be printed double sided?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="double.sided.frag">
+&lt;xsl:param name="double.sided" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Double-sided documents are printed with a slightly wider margin
+on the binding edge of the page.
+</para>
+<para>FIXME: The current set of parameters does not take writing direction
+into account.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.margin.bottom">
+<refmeta>
+<refentrytitle>body.margin.bottom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.margin.bottom</refname>
+<refpurpose>The bottom margin of the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.margin.bottom.frag">
+&lt;xsl:param name="body.margin.bottom"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body bottom margin is the distance from the last line of text
+in the page body to the bottom of the region-after.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.margin.top">
+<refmeta>
+<refentrytitle>body.margin.top</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.margin.top</refname>
+<refpurpose>To specify the size of the top margin of a page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.margin.top.frag">
+&lt;xsl:param name="body.margin.top"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body top margin is the distance from the top of the
+region-before to the first line of text in the page body.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.start.indent">
+<refmeta>
+<refentrytitle>body.start.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.start.indent</refname>
+<refpurpose>The start-indent for the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.start.indent.frag">
+&lt;xsl:param name="body.start.indent"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$fop.extensions != 0"&gt;0pt&lt;/xsl:when&gt;
+ &lt;xsl:when test="$passivetex.extensions != 0"&gt;0pt&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;4pc&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter provides
+the means of indenting the body text relative to
+section titles.
+For left-to-right text direction, it indents the left side.
+For right-to-left text direction, it indents the right side.
+It is used in place of the
+<parameter>title.margin.left</parameter> for
+all XSL-FO processors except FOP 0.25.
+It enables support for side floats to appear
+in the indented margin area.
+</para>
+<para>This start-indent property is added to the fo:flow
+for certain page sequences. Which page-sequences it is
+applied to is determined by the template named
+<literal>set.flow.properties</literal>.
+By default, that template adds it to the flow
+for page-sequences using the <quote>body</quote>
+master-reference, as well as appendixes and prefaces.
+</para>
+<para>If this parameter is used, section titles should have
+a start-indent value of 0pt if they are to be
+outdented relative to the body text.
+</para>
+
+<para>If you are using FOP, then set this parameter to a zero
+width value and set the <parameter>title.margin.left</parameter>
+parameter to the negative value of the desired indent.
+</para>
+
+<para>See also <parameter>body.end.indent</parameter> and
+<parameter>title.margin.left</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.end.indent">
+<refmeta>
+<refentrytitle>body.end.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.end.indent</refname>
+<refpurpose>The end-indent for the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.end.indent.frag">
+&lt;xsl:param name="body.end.indent"&gt;0pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This end-indent property is added to the fo:flow
+for certain page sequences. Which page-sequences it is
+applied to is determined by the template named
+<literal>set.flow.properties</literal>.
+By default, that template adds it to the flow
+for page-sequences using the <quote>body</quote>
+master-reference, as well as appendixes and prefaces.
+</para>
+
+<para>See also <parameter>body.start.indent</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="alignment">
+<refmeta>
+<refentrytitle>alignment</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+ <refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">center</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">justify</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>alignment</refname>
+<refpurpose>Specify the default text alignment</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="alignment.frag">&lt;xsl:param name="alignment"&gt;justify&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default text alignment is used for most body text.
+Allowed values are
+<literal>left</literal>,
+<literal>right</literal>,
+<literal>start</literal>,
+<literal>end</literal>,
+<literal>center</literal>,
+<literal>justify</literal>.
+The default value is <literal>justify</literal>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="hyphenate">
+<refmeta>
+<refentrytitle>hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">closed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">true</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">false</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate</refname>
+<refpurpose>Specify hyphenation behavior</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="hyphenate.frag">&lt;xsl:param name="hyphenate"&gt;true&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, words may be hyphenated. Otherwise, they may not.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="line-height">
+<refmeta>
+<refentrytitle>line-height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>line-height</refname>
+<refpurpose>Specify the line-height property</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="line-height.frag">
+&lt;xsl:param name="line-height"&gt;normal&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the line-height property.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.count.back">
+<refmeta>
+<refentrytitle>column.count.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.back</refname>
+<refpurpose>Number of columns on back matter pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.count.back.frag">
+&lt;xsl:param name="column.count.back" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on back matter (appendix, glossary, etc.) pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.count.body">
+<refmeta>
+<refentrytitle>column.count.body</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.body</refname>
+<refpurpose>Number of columns on body pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.count.body.frag">
+&lt;xsl:param name="column.count.body" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on body pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.count.front">
+<refmeta>
+<refentrytitle>column.count.front</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.front</refname>
+<refpurpose>Number of columns on front matter pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.count.front.frag">
+&lt;xsl:param name="column.count.front" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on front matter (dedication, preface, etc.) pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.count.index">
+<refmeta>
+<refentrytitle>column.count.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.index</refname>
+<refpurpose>Number of columns on index pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.count.index.frag">
+&lt;xsl:param name="column.count.index"&gt;2&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on index pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.count.lot">
+<refmeta>
+<refentrytitle>column.count.lot</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.lot</refname>
+<refpurpose>Number of columns on a 'List-of-Titles' page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.count.lot.frag">
+&lt;xsl:param name="column.count.lot" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on a page sequence containing the Table of Contents,
+List of Figures, etc.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.count.titlepage">
+<refmeta>
+<refentrytitle>column.count.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.titlepage</refname>
+<refpurpose>Number of columns on a title page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.count.titlepage.frag">
+&lt;xsl:param name="column.count.titlepage" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on a title page</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.gap.back">
+<refmeta>
+<refentrytitle>column.gap.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.back</refname>
+<refpurpose>Gap between columns in back matter</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.gap.back.frag">
+&lt;xsl:param name="column.gap.back"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in back matter (if
+<parameter>column.count.back</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.gap.body">
+<refmeta>
+<refentrytitle>column.gap.body</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.body</refname>
+<refpurpose>Gap between columns in the body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.gap.body.frag">
+&lt;xsl:param name="column.gap.body"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in body matter (if
+<parameter>column.count.body</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.gap.front">
+<refmeta>
+<refentrytitle>column.gap.front</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.front</refname>
+<refpurpose>Gap between columns in the front matter</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.gap.front.frag">
+&lt;xsl:param name="column.gap.front"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in front matter (if
+<parameter>column.count.front</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.gap.index">
+<refmeta>
+<refentrytitle>column.gap.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.index</refname>
+<refpurpose>Gap between columns in the index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.gap.index.frag">
+&lt;xsl:param name="column.gap.index"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in indexes (if
+<parameter>column.count.index</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.gap.lot">
+<refmeta>
+<refentrytitle>column.gap.lot</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.lot</refname>
+<refpurpose>Gap between columns on a 'List-of-Titles' page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.gap.lot.frag">
+&lt;xsl:param name="column.gap.lot"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns on 'List-of-Titles' pages (if
+<parameter>column.count.lot</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="column.gap.titlepage">
+<refmeta>
+<refentrytitle>column.gap.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.titlepage</refname>
+<refpurpose>Gap between columns on title pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="column.gap.titlepage.frag">
+&lt;xsl:param name="column.gap.titlepage"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns on title pages (if
+<parameter>column.count.titlepage</parameter> is greater than one).</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="region.after.extent">
+<refmeta>
+<refentrytitle>region.after.extent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>region.after.extent</refname>
+<refpurpose>Specifies the height of the footer.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="region.after.extent.frag">
+&lt;xsl:param name="region.after.extent"&gt;0.4in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The region after extent is the height of the area where footers
+are printed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="region.before.extent">
+<refmeta>
+<refentrytitle>region.before.extent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>region.before.extent</refname>
+<refpurpose>Specifies the height of the header</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="region.before.extent.frag">
+&lt;xsl:param name="region.before.extent"&gt;0.4in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The region before extent is the height of the area where headers
+are printed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="default.units">
+<refmeta>
+<refentrytitle>default.units</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">cm</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">mm</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">in</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">pt</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">pc</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">px</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">em</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.units</refname>
+<refpurpose>Default units for an unqualified dimension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="default.units.frag">
+&lt;xsl:param name="default.units"&gt;pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If an unqualified dimension is encountered (for example, in a
+graphic width), the <parameter>default.units</parameter> will be used for the
+units. Unqualified dimensions are not allowed in XSL Formatting Objects.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="normal.para.spacing">
+<refmeta>
+<refentrytitle>normal.para.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>normal.para.spacing</refname>
+<refpurpose>What space do you want between normal paragraphs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="normal.para.spacing.frag">&lt;xsl:attribute-set name="normal.para.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the spacing required between normal paragraphs</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.font.master">
+<refmeta>
+<refentrytitle>body.font.master</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.master</refname>
+<refpurpose>Specifies the default point size for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.font.master.frag">
+&lt;xsl:param name="body.font.master"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font size is specified in two parameters
+(<parameter>body.font.master</parameter> and <parameter>body.font.size</parameter>)
+so that math can be performed on the font size by XSLT.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.font.size">
+<refmeta>
+<refentrytitle>body.font.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.size</refname>
+<refpurpose>Specifies the default font size for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.font.size.frag">
+&lt;xsl:param name="body.font.size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font size is specified in two parameters
+(<parameter>body.font.master</parameter> and <parameter>body.font.size</parameter>)
+so that math can be performed on the font size by XSLT.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footnote.font.size">
+<refmeta>
+<refentrytitle>footnote.font.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.font.size</refname>
+<refpurpose>The font size for footnotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footnote.font.size.frag">&lt;xsl:param name="footnote.font.size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 0.8"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The footnote font size is used for...footnotes!
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="title.margin.left">
+<refmeta>
+<refentrytitle>title.margin.left</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>title.margin.left</refname>
+<refpurpose>Adjust the left margin for titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="title.margin.left.frag">
+&lt;xsl:param name="title.margin.left"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$fop.extensions != 0"&gt;-4pc&lt;/xsl:when&gt;
+ &lt;xsl:when test="$passivetex.extensions != 0"&gt;0pt&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;0pt&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter provides
+the means of adjusting the left margin for titles
+when the XSL-FO processor being used is
+an old version of FOP (0.25 and earlier).
+It is only useful when the <parameter>fop.extensions</parameter>
+is nonzero.</para>
+
+<para>The left margin of the body region
+is calculated to include this space,
+and titles are outdented to the left outside
+the body region by this amount,
+effectively leaving titles at the intended left margin
+and the body text indented.
+Currently this method is only used for old FOP because
+it cannot properly use the <parameter>body.start.indent</parameter>
+parameter.
+</para>
+<para>
+The default value when the <parameter>fop.extensions</parameter>
+parameter is nonzero is -4pc, which means the
+body text is indented 4 picas relative to
+the titles.
+The default value when the <parameter>fop.extensions</parameter>
+parameter equals zero is 0pt, and
+the body indent should instead be specified
+using the <parameter>body.start.indent</parameter>
+parameter.
+</para>
+<para>
+If you set the value to zero, be sure to still include
+a unit indicator such as <literal>0pt</literal>, or
+the FO processor will report errors.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="draft.mode">
+<refmeta>
+<refentrytitle>draft.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.mode</refname>
+<refpurpose>Select draft mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="draft.mode.frag">
+&lt;xsl:param name="draft.mode"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects draft mode. If <parameter>draft.mode</parameter> is
+<quote><literal>yes</literal></quote>, the entire document will be treated
+as a draft. If it is <quote><literal>no</literal></quote>, the entire document
+will be treated as a final copy. If it is <quote><literal>maybe</literal></quote>,
+individual sections will be treated as draft or final independently, depending
+on how their <literal>status</literal> attribute is set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="draft.watermark.image">
+<refmeta>
+<refentrytitle>draft.watermark.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.watermark.image</refname>
+<refpurpose>The URI of the image to be used for draft watermarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="draft.watermark.image.frag">
+&lt;xsl:param name="draft.watermark.image"&gt;images/draft.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The image to be used for draft watermarks.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="headers.on.blank.pages">
+<refmeta>
+<refentrytitle>headers.on.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>headers.on.blank.pages</refname>
+<refpurpose>Put headers on blank pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="headers.on.blank.pages.frag">
+&lt;xsl:param name="headers.on.blank.pages" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, headers will be placed on blank pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footers.on.blank.pages">
+<refmeta>
+<refentrytitle>footers.on.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footers.on.blank.pages</refname>
+<refpurpose>Put footers on blank pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footers.on.blank.pages.frag">
+&lt;xsl:param name="footers.on.blank.pages" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, footers will be placed on blank pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="header.rule">
+<refmeta>
+<refentrytitle>header.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.rule</refname>
+<refpurpose>Rule under headers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="header.rule.frag">
+&lt;xsl:param name="header.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn below the page headers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footer.rule">
+<refmeta>
+<refentrytitle>footer.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.rule</refname>
+<refpurpose>Rule over footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footer.rule.frag">
+&lt;xsl:param name="footer.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn above the page footers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="header.column.widths">
+<refmeta>
+<refentrytitle>header.column.widths</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.column.widths</refname>
+<refpurpose>Specify relative widths of header areas</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting id="header.column.widths.frag">
+&lt;xsl:param name="header.column.widths"&gt;1 1 1&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page headers in print output use a three column table
+to position text at the left, center, and right side of
+the header on the page.
+This parameter lets you specify the relative sizes of the
+three columns. The default value is
+"1 1 1".</para>
+
+<para>The parameter value must be three numbers, separated
+by white space. The first number represents the relative
+width of the inside header for
+double-sided output. The second number is the relative
+width of the center header. The third number is the
+relative width of the outside header for
+double-sided output.
+</para>
+<para>For single-sided output, the first number is the
+relative width of left header for left-to-right
+text direction, or the right header for right-to-left
+text direction.
+The third number is the
+relative width of right header for left-to-right
+text direction, or the left header for right-to-left
+text direction.</para>
+
+<para>The numbers are used to specify the column widths
+for the table that makes up the header area.
+In the FO output, this looks like:
+</para>
+
+<programlisting>
+&lt;fo:table-column column-number="1"
+ column-width="proportional-column-width(1)"/&gt;
+</programlisting>
+
+<para>
+The <literal>proportional-column-width()</literal>
+function computes a column width by dividing its
+argument by the total of the arguments for all the columns, and
+then multiplying the result by the width of the whole table
+(assuming all the column specs use the function).
+Its argument can be any positive integer or floating point number.
+Zero is an acceptable value, although some FO processors
+may warn about it, in which case using a very small number might
+be more satisfactory.
+</para>
+
+<para>For example, the value "1 2 1" means the center
+header should have twice the width of the other areas.
+A value of "0 0 1" means the entire header area
+is reserved for the right (or outside) header text.
+Note that to keep the center area centered on
+the page, the left and right values must be
+the same. A specification like "1 2 3" means the
+center area is no longer centered on the page
+since the right area is three times the width of the left area.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footer.column.widths">
+<refmeta>
+<refentrytitle>footer.column.widths</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.column.widths</refname>
+<refpurpose>Specify relative widths of footer areas</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting id="footer.column.widths.frag">
+&lt;xsl:param name="footer.column.widths"&gt;1 1 1&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page footers in print output use a three column table
+to position text at the left, center, and right side of
+the footer on the page.
+This parameter lets you specify the relative sizes of the
+three columns. The default value is
+"1 1 1".</para>
+
+<para>The parameter value must be three numbers, separated
+by white space. The first number represents the relative
+width of the inside footer for
+double-sided output. The second number is the relative
+width of the center footer. The third number is the
+relative width of the outside footer for
+double-sided output.
+</para>
+<para>For single-sided output, the first number is the
+relative width of left footer for left-to-right
+text direction, or the right footer for right-to-left
+text direction.
+The third number is the
+relative width of right footer for left-to-right
+text direction, or the left footer for right-to-left
+text direction.</para>
+
+<para>The numbers are used to specify the column widths
+for the table that makes up the footer area.
+In the FO output, this looks like:
+</para>
+
+<programlisting>
+&lt;fo:table-column column-number="1"
+ column-width="proportional-column-width(1)"/&gt;
+</programlisting>
+
+<para>
+The <literal>proportional-column-width()</literal>
+function computes a column width by dividing its
+argument by the total of the arguments for all the columns, and
+then multiplying the result by the width of the whole table
+(assuming all the column specs use the function).
+Its argument can be any positive integer or floating point number.
+Zero is an acceptable value, although some FO processors
+may warn about it, in which case using a very small number might
+be more satisfactory.
+</para>
+
+<para>For example, the value "1 2 1" means the center
+footer should have twice the width of the other areas.
+A value of "0 0 1" means the entire footer area
+is reserved for the right (or outside) footer text.
+Note that to keep the center area centered on
+the page, the left and right values must be
+the same. A specification like "1 2 3" means the
+center area is no longer centered on the page
+since the right area is three times the width of the left area.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="header.table.properties">
+<refmeta>
+<refentrytitle>header.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.table.properties</refname>
+<refpurpose>Apply properties to the header layout table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="header.table.properties.frag">
+&lt;xsl:attribute-set name="header.table.properties"&gt;
+ &lt;xsl:attribute name="table-layout"&gt;fixed&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="width"&gt;100%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties applied to the table that lays out the page header.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="header.table.height">
+<refmeta>
+<refentrytitle>header.table.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.table.height</refname>
+<refpurpose>Specify the minimum height of the table containing the running page headers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting id="header.table.height.frag">
+&lt;xsl:param name="header.table.height"&gt;14pt&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page headers in print output use a three column table
+to position text at the left, center, and right side of
+the header on the page.
+This parameter lets you specify the minimum height
+of the single row in the table.
+Since this specifies only the minimum height,
+the table should automatically grow to fit taller content.
+The default value is "14pt".</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footer.table.properties">
+<refmeta>
+<refentrytitle>footer.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.table.properties</refname>
+<refpurpose>Apply properties to the footer layout table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footer.table.properties.frag">
+&lt;xsl:attribute-set name="footer.table.properties"&gt;
+ &lt;xsl:attribute name="table-layout"&gt;fixed&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="width"&gt;100%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties applied to the table that lays out the page footer.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footer.table.height">
+<refmeta>
+<refentrytitle>footer.table.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.table.height</refname>
+<refpurpose>Specify the minimum height of the table containing the running page footers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting id="footer.table.height.frag">
+&lt;xsl:param name="footer.table.height"&gt;14pt&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page footers in print output use a three column table
+to position text at the left, center, and right side of
+the footer on the page.
+This parameter lets you specify the minimum height
+of the single row in the table.
+Since this specifies only the minimum height,
+the table should automatically grow to fit taller content.
+The default value is "14pt".</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="header.content.properties">
+<refmeta>
+<refentrytitle>header.content.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.content.properties</refname>
+<refpurpose>Properties of page header content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="header.content.properties.frag">
+&lt;xsl:attribute-set name="header.content.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties of page header content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footer.content.properties">
+<refmeta>
+<refentrytitle>footer.content.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.content.properties</refname>
+<refpurpose>Properties of page footer content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footer.content.properties.frag">
+&lt;xsl:attribute-set name="footer.content.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties of page footer content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="marker.section.level">
+<refmeta>
+<refentrytitle>marker.section.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>marker.section.level</refname>
+<refpurpose>Control depth of sections shown in running headers or footers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="marker.section.level.frag">
+&lt;xsl:param name="marker.section.level"&gt;2&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>marker.section.level</parameter> parameter
+controls the depth of section levels that may be displayed
+in running headers and footers. For example, if the value
+is 2 (the default), then titles from <tag>sect1</tag> and
+<tag>sect2</tag> or equivalent <tag>section</tag>
+elements are candidates for use in running headers and
+footers.
+</para>
+<para>Each candidate title is marked in the FO output with a
+<tag>&lt;fo:marker marker-class-name="section.head.marker"&gt;</tag>
+element.
+</para>
+<para>In order for such titles to appear in headers
+or footers, the <literal>header.content</literal>
+or <literal>footer.content</literal> template
+must be customized to retrieve the marker using
+an output element such as:
+</para>
+<programlisting>
+&lt;fo:retrieve-marker retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/&gt;
+</programlisting>
+
+
+</refsection>
+</refentry>
+
+</reference><reference id="fonts" xml:base="../fo/param.xml"><title>Font Families</title>
+<refentry version="5.0" id="body.font.family">
+<refmeta>
+<refentrytitle>body.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.family</refname>
+<refpurpose>The default font family for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.font.family.frag">
+&lt;xsl:param name="body.font.family"&gt;serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font family is the default font used for text in the page body.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="dingbat.font.family">
+<refmeta>
+<refentrytitle>dingbat.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dingbat.font.family</refname>
+<refpurpose>The font family for copyright, quotes, and other symbols</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="dingbat.font.family.frag">
+&lt;xsl:param name="dingbat.font.family"&gt;serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The dingbat font family is used for dingbats. If it is defined
+as the empty string, no font change is effected around dingbats.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="monospace.font.family">
+<refmeta>
+<refentrytitle>monospace.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.font.family</refname>
+<refpurpose>The default font family for monospace environments</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="monospace.font.family.frag">
+&lt;xsl:param name="monospace.font.family"&gt;monospace&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The monospace font family is used for verbatim environments
+(program listings, screens, etc.).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="sans.font.family">
+<refmeta>
+<refentrytitle>sans.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sans.font.family</refname>
+<refpurpose>The default sans-serif font family</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="sans.font.family.frag">
+&lt;xsl:param name="sans.font.family"&gt;sans-serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default sans-serif font family. At the present, this isn't
+actually used by the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="title.font.family">
+<refmeta>
+<refentrytitle>title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>title.font.family</refname>
+<refpurpose>The default font family for titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="title.font.family.frag">
+&lt;xsl:param name="title.font.family"&gt;sans-serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The title font family is used for titles (chapter, section, figure,
+etc.)
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="symbol.font.family">
+<refmeta>
+<refentrytitle>symbol.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>symbol.font.family</refname>
+<refpurpose>The font families to be searched for symbols outside
+ of the body font</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="symbol.font.family.frag">
+&lt;xsl:param name="symbol.font.family"&gt;Symbol,ZapfDingbats&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A typical body or title font does not contain all
+the character glyphs that DocBook supports. This parameter
+specifies additional fonts that should be searched for
+special characters not in the normal font.
+These symbol font names are automatically appended
+to the body or title font family name when fonts
+are specified in a
+<tag class="attribute">font-family</tag>
+property in the FO output.
+</para>
+<para>The symbol font names should be entered as a
+comma-separated list. The default value is
+<literal>Symbol,ZapfDingbats</literal>.
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="propsets" xml:base="../fo/param.xml"><title>Property Sets</title>
+<refentry version="5.0" id="formal.object.properties">
+<refmeta>
+<refentrytitle>formal.object.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.object.properties</refname>
+<refpurpose>Properties associated with a formal object such as a figure, or other component that has a title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="formal.object.properties.frag">
+&lt;xsl:attribute-set name="formal.object.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for formal objects in docbook. Specify the spacing
+before and after the object.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="formal.title.properties">
+<refmeta>
+<refentrytitle>formal.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.properties</refname>
+<refpurpose>Style the title element of formal object such as a figure.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="formal.title.properties.frag">
+&lt;xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.2"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.4em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;0.6em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;0.8em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify how the title should be styled. Specify the font size and weight of the title of the formal object.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="informal.object.properties">
+<refmeta>
+<refentrytitle>informal.object.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informal.object.properties</refname>
+<refpurpose>Properties associated with an informal (untitled) object, such as an informalfigure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="informal.object.properties.frag">&lt;xsl:attribute-set name="informal.object.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>The styling for informal objects in docbook. Specify the spacing before and after the object.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="monospace.properties">
+<refmeta>
+<refentrytitle>monospace.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.properties</refname>
+<refpurpose>Properties of monospaced content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="monospace.properties.frag">
+&lt;xsl:attribute-set name="monospace.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$monospace.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font name for monospaced output. This property set
+used to set the font-size as well, but that doesn't work very well
+when different fonts are used (as they are in titles and paragraphs,
+for example).</para>
+
+<para>If you want to set the font-size in a customization layer, it's
+probably going to be more appropriate to set font-size-adjust, if your
+formatter supports it.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="verbatim.properties">
+<refmeta>
+<refentrytitle>verbatim.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>verbatim.properties</refname>
+<refpurpose>Properties associated with verbatim text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="verbatim.properties.frag">
+&lt;xsl:attribute-set name="verbatim.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;no-wrap&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="white-space-collapse"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="white-space-treatment"&gt;preserve&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="linefeed-treatment"&gt;preserve&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This attribute set is used on all verbatim environments.</para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="monospace.verbatim.properties">
+<refmeta>
+<refentrytitle>monospace.verbatim.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.verbatim.properties</refname>
+<refpurpose>What font and size do you want for monospaced content?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="monospace.verbatim.properties.frag">
+&lt;xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;no-wrap&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the font name and size you want for monospaced output</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="sidebar.properties">
+<refmeta>
+<refentrytitle>sidebar.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.properties</refname>
+<refpurpose>Attribute set for sidebar properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="sidebar.properties.frag">
+&lt;xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties"&gt;
+ &lt;xsl:attribute name="border-style"&gt;solid&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="border-width"&gt;1pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="border-color"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="background-color"&gt;#DDDDDD&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-start"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-end"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-top"&gt;6pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-bottom"&gt;6pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;!--
+ &lt;xsl:attribute name="margin-top"&gt;6pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;6pt&lt;/xsl:attribute&gt;
+--&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for sidebars.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="sidebar.title.properties">
+<refmeta>
+<refentrytitle>sidebar.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.title.properties</refname>
+<refpurpose>Attribute set for sidebar titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="sidebar.title.properties.frag">
+&lt;xsl:attribute-set name="sidebar.title.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for sidebars titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="sidebar.float.type">
+<refmeta>
+<refentrytitle>sidebar.float.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">before</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inside</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outside</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.float.type</refname>
+<refpurpose>Select type of float for sidebar elements</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="sidebar.float.type.frag">
+&lt;xsl:param name="sidebar.float.type"&gt;none&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the type of float for sidebar elements.
+</para>
+<itemizedlist>
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>none</literal></quote>, then
+no float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>before</literal></quote>, then
+the float appears at the top of the page. On some processors,
+that may be the next page rather than the current page.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>left</literal></quote>,
+then a left side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>start</literal></quote>,
+then when the text direction is left-to-right a left side float is used.
+When the text direction is right-to-left, a right side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>right</literal></quote>,
+then a right side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>end</literal></quote>,
+then when the text direction is left-to-right a right side float is used.
+When the text direction is right-to-left, a left side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If your XSL-FO processor supports floats positioned on the
+<quote><literal>inside</literal></quote> or
+<quote><literal>outside</literal></quote>
+of double-sided pages, then you have those two
+options for side floats as well.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="sidebar.float.width">
+<refmeta>
+<refentrytitle>sidebar.float.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.float.width</refname>
+<refpurpose>Set the default width for sidebars</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="sidebar.float.width.frag">
+&lt;xsl:param name="sidebar.float.width"&gt;1in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the default width for sidebars when used as a side float.
+The width determines the degree to which the sidebar block intrudes into
+the text area.
+</para>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>before</literal></quote> or
+<quote><literal>none</literal></quote>, then
+this parameter is ignored.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="margin.note.properties">
+<refmeta>
+<refentrytitle>margin.note.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.properties</refname>
+<refpurpose>Attribute set for margin.note properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="margin.note.properties.frag">
+&lt;xsl:attribute-set name="margin.note.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;90%&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for margin notes.
+By default, margin notes are not implemented for any
+element. A stylesheet customization is needed to make
+use of this attribute-set.</para>
+
+<para>You can use a template named <quote>floater</quote>
+to create the customization.
+That template can create side floats by specifying the
+content and characteristics as template parameters.
+</para>
+
+<para>For example:</para>
+<programlisting>&lt;xsl:template match="para[@role='marginnote']"&gt;
+ &lt;xsl:call-template name="floater"&gt;
+ &lt;xsl:with-param name="position"&gt;
+ &lt;xsl:value-of select="$margin.note.float.type"/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="width"&gt;
+ &lt;xsl:value-of select="$margin.note.width"/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="content"&gt;
+ &lt;xsl:apply-imports/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+&lt;/xsl:template&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="margin.note.title.properties">
+<refmeta>
+<refentrytitle>margin.note.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.title.properties</refname>
+<refpurpose>Attribute set for margin note titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="margin.note.title.properties.frag">
+&lt;xsl:attribute-set name="margin.note.title.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for margin note titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="margin.note.float.type">
+<refmeta>
+<refentrytitle>margin.note.float.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">before</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inside</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outside</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.float.type</refname>
+<refpurpose>Select type of float for margin note customizations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="margin.note.float.type.frag">
+&lt;xsl:param name="margin.note.float.type"&gt;none&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the type of float for margin notes.
+DocBook does not define a margin note element, so this
+feature must be implemented as a customization of the stylesheet.
+See <parameter>margin.note.properties</parameter> for
+an example.
+</para>
+<itemizedlist>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>none</literal></quote>, then
+no float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>before</literal></quote>, then
+the float appears at the top of the page. On some processors,
+that may be the next page rather than the current page.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>left</literal></quote> or
+<quote><literal>start</literal></quote>, then
+a left side float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>right</literal></quote> or
+<quote><literal>end</literal></quote>, then
+a right side float is used.
+</para>
+</listitem>
+<listitem>
+<para>If your XSL-FO processor supports floats positioned on the
+<quote><literal>inside</literal></quote> or
+<quote><literal>outside</literal></quote>
+of double-sided pages, then you have those two
+options for side floats as well.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="margin.note.width">
+<refmeta>
+<refentrytitle>margin.note.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.width</refname>
+<refpurpose>Set the default width for margin notes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="margin.note.width.frag">
+&lt;xsl:param name="margin.note.width"&gt;1in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the default width for margin notes when used as a side
+float. The width determines the degree to which the margin note block
+intrudes into the text area.
+</para>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>before</literal></quote> or
+<quote><literal>none</literal></quote>, then
+this parameter is ignored.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="component.title.properties">
+<refmeta>
+<refentrytitle>component.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.title.properties</refname>
+<refpurpose>Properties for component titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="component.title.properties.frag">
+&lt;xsl:attribute-set name="component.title.properties"&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 0.8')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 1.2')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography)) or (parent::slides | parent::slidesinfo)"&gt;center&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;start&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;&lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all component titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="component.titlepage.properties">
+<refmeta>
+<refentrytitle>component.titlepage.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.titlepage.properties</refname>
+<refpurpose>Properties for component titlepages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="component.titlepage.properties.frag">
+&lt;xsl:attribute-set name="component.titlepage.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that are applied to the outer block containing
+all the component title page information.
+Its main use is to set a <literal>span="all"</literal>
+property on the block that is a direct child of the flow.</para>
+
+<para>This attribute-set also applies to index titlepages. It is empty by default.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.title.properties">
+<refmeta>
+<refentrytitle>section.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.properties</refname>
+<refpurpose>Properties for section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.title.properties.frag">
+&lt;xsl:attribute-set name="section.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;!-- font size is calculated dynamically by section.heading template --&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1.0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;&lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.title.level1.properties">
+<refmeta>
+<refentrytitle>section.title.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level1.properties</refname>
+<refpurpose>Properties for level-1 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.title.level1.properties.frag">
+&lt;xsl:attribute-set name="section.title.level1.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 2.0736"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-1 section titles.</para>
+
+</refsection>
+</refentry>
+
+
+<refentry version="5.0" id="section.title.level2.properties">
+<refmeta>
+<refentrytitle>section.title.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level2.properties</refname>
+<refpurpose>Properties for level-2 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.title.level2.properties.frag">
+&lt;xsl:attribute-set name="section.title.level2.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.728"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-2 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.title.level3.properties">
+<refmeta>
+<refentrytitle>section.title.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level3.properties</refname>
+<refpurpose>Properties for level-3 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.title.level3.properties.frag">
+&lt;xsl:attribute-set name="section.title.level3.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.44"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-3 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.title.level4.properties">
+<refmeta>
+<refentrytitle>section.title.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level4.properties</refname>
+<refpurpose>Properties for level-4 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.title.level4.properties.frag">
+&lt;xsl:attribute-set name="section.title.level4.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.2"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-4 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.title.level5.properties">
+<refmeta>
+<refentrytitle>section.title.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level5.properties</refname>
+<refpurpose>Properties for level-5 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.title.level5.properties.frag">
+&lt;xsl:attribute-set name="section.title.level5.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-5 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.title.level6.properties">
+<refmeta>
+<refentrytitle>section.title.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level6.properties</refname>
+<refpurpose>Properties for level-6 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.title.level6.properties.frag">
+&lt;xsl:attribute-set name="section.title.level6.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-6 section titles. This property set is actually
+used for all titles below level 5.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.properties">
+<refmeta>
+<refentrytitle>section.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.properties</refname>
+<refpurpose>Properties for all section levels</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.properties.frag">
+&lt;xsl:attribute-set name="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of all section levels, and therefore apply to
+the whole section.
+This attribute set is inherited by the
+more specific attribute sets such as
+<tag>section.level1.properties</tag>.
+The default is empty.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.level1.properties">
+<refmeta>
+<refentrytitle>section.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level1.properties</refname>
+<refpurpose>Properties for level-1 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.level1.properties.frag">
+&lt;xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-1 section, and therefore apply to
+the whole section. This includes <tag>sect1</tag>
+elements and <tag>section</tag> elements at level 1.
+</para>
+
+<para>For example, you could start each level-1 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level1.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.level2.properties">
+<refmeta>
+<refentrytitle>section.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level2.properties</refname>
+<refpurpose>Properties for level-2 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.level2.properties.frag">
+&lt;xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-2 section, and therefore apply to
+the whole section. This includes <tag>sect2</tag>
+elements and <tag>section</tag> elements at level 2.
+</para>
+
+<para>For example, you could start each level-2 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level2.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.level3.properties">
+<refmeta>
+<refentrytitle>section.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level3.properties</refname>
+<refpurpose>Properties for level-3 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.level3.properties.frag">
+&lt;xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-3 section, and therefore apply to
+the whole section. This includes <tag>sect3</tag>
+elements and <tag>section</tag> elements at level 3.
+</para>
+
+<para>For example, you could start each level-3 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level3.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.level4.properties">
+<refmeta>
+<refentrytitle>section.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level4.properties</refname>
+<refpurpose>Properties for level-4 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.level4.properties.frag">
+&lt;xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-4 section, and therefore apply to
+the whole section. This includes <tag>sect4</tag>
+elements and <tag>section</tag> elements at level 4.
+</para>
+
+<para>For example, you could start each level-4 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level4.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.level5.properties">
+<refmeta>
+<refentrytitle>section.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level5.properties</refname>
+<refpurpose>Properties for level-5 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.level5.properties.frag">
+&lt;xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-5 section, and therefore apply to
+the whole section. This includes <tag>sect5</tag>
+elements and <tag>section</tag> elements at level 5.
+</para>
+
+<para>For example, you could start each level-5 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level5.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="section.level6.properties">
+<refmeta>
+<refentrytitle>section.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level6.properties</refname>
+<refpurpose>Properties for level-6 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="section.level6.properties.frag">
+&lt;xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level 6 or lower section, and therefore apply to
+the whole section. This includes
+<tag>section</tag> elements at level 6 and lower.
+</para>
+
+<para>For example, you could start each level-6 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level6.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="figure.properties">
+<refmeta>
+<refentrytitle>figure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>figure.properties</refname>
+<refpurpose>Properties associated with a figure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="figure.properties.frag">
+&lt;xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for figures.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="example.properties">
+<refmeta>
+<refentrytitle>example.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>example.properties</refname>
+<refpurpose>Properties associated with a example</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="example.properties.frag">
+&lt;xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for examples.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="equation.properties">
+<refmeta>
+<refentrytitle>equation.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>equation.properties</refname>
+<refpurpose>Properties associated with a equation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="equation.properties.frag">
+&lt;xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for equations.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="equation.number.properties">
+<refmeta>
+<refentrytitle>equation.number.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>equation.number.properties</refname>
+<refpurpose>Properties that apply to the <tag>fo:table-cell</tag> containing the number
+of an <tag>equation</tag> that does not have a title.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="equation.number.properties.frag">&lt;xsl:attribute-set name="equation.number.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;end&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="display-align"&gt;center&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to the fo:table-cell containing the number
+of an equation when it has no title. The number in an equation with a
+title is formatted along with the title, and this attribute-set does not apply.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.properties">
+<refmeta>
+<refentrytitle>table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.properties</refname>
+<refpurpose>Properties associated with the block surrounding a table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.properties.frag">
+&lt;xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;auto&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for tables. This parameter should really
+have been called <literal>table.block.properties</literal> or something
+like that, but we&#8217;re leaving it to avoid backwards-compatibility
+problems.</para>
+
+<para>See also <parameter>table.table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="informalfigure.properties">
+<refmeta>
+<refentrytitle>informalfigure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalfigure.properties</refname>
+<refpurpose>Properties associated with an informalfigure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="informalfigure.properties.frag">
+&lt;xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalfigures.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="informalexample.properties">
+<refmeta>
+<refentrytitle>informalexample.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalexample.properties</refname>
+<refpurpose>Properties associated with an informalexample</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="informalexample.properties.frag">
+&lt;xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalexamples.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="informalequation.properties">
+<refmeta>
+<refentrytitle>informalequation.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalequation.properties</refname>
+<refpurpose>Properties associated with an informalequation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="informalequation.properties.frag">
+&lt;xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalequations.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="informaltable.properties">
+<refmeta>
+<refentrytitle>informaltable.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informaltable.properties</refname>
+<refpurpose>Properties associated with the block surrounding an informaltable</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="informaltable.properties.frag">
+&lt;xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for informaltables. This parameter should really
+have been called <literal>informaltable.block.properties</literal> or something
+like that, but we&#8217;re leaving it to avoid backwards-compatibility
+problems.</para>
+
+<para>See also <parameter>table.table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="procedure.properties">
+<refmeta>
+<refentrytitle>procedure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>procedure.properties</refname>
+<refpurpose>Properties associated with a procedure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="procedure.properties.frag">
+&lt;xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties"&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;auto&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for procedures.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="root.properties">
+<refmeta>
+<refentrytitle>root.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root.properties</refname>
+<refpurpose>The properties of the fo:root element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="root.properties.frag">
+&lt;xsl:attribute-set name="root.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;
+ &lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="line-height"&gt;
+ &lt;xsl:value-of select="$line-height"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-selection-strategy"&gt;character-by-character&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="line-height-shift-adjustment"&gt;disregard-shifts&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="writing-mode"&gt;
+ &lt;xsl:value-of select="$direction.mode"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set is used on the <tag>fo:root</tag> element of
+an FO file. It defines a set of default, global parameters.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.title.properties">
+<refmeta>
+<refentrytitle>qanda.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.properties</refname>
+<refpurpose>Properties for qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.title.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;!-- font size is calculated dynamically by qanda.heading template --&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1.0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.title.level1.properties">
+<refmeta>
+<refentrytitle>qanda.title.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level1.properties</refname>
+<refpurpose>Properties for level-1 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.title.level1.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level1.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 2.0736"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-1 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.title.level2.properties">
+<refmeta>
+<refentrytitle>qanda.title.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level2.properties</refname>
+<refpurpose>Properties for level-2 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.title.level2.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level2.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.728"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-2 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.title.level3.properties">
+<refmeta>
+<refentrytitle>qanda.title.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level3.properties</refname>
+<refpurpose>Properties for level-3 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.title.level3.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level3.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.44"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-3 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.title.level4.properties">
+<refmeta>
+<refentrytitle>qanda.title.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level4.properties</refname>
+<refpurpose>Properties for level-4 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.title.level4.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level4.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.2"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-4 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.title.level5.properties">
+<refmeta>
+<refentrytitle>qanda.title.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level5.properties</refname>
+<refpurpose>Properties for level-5 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.title.level5.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level5.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-5 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="qanda.title.level6.properties">
+<refmeta>
+<refentrytitle>qanda.title.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level6.properties</refname>
+<refpurpose>Properties for level-6 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="qanda.title.level6.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level6.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-6 qanda set titles.
+This property set is actually
+used for all titles below level 5.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="article.appendix.title.properties">
+<refmeta>
+<refentrytitle>article.appendix.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>article.appendix.title.properties</refname>
+<refpurpose>Properties for appendix titles that appear in an article</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="article.appendix.title.properties.frag">
+&lt;xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties"&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;
+ &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties for the title of an appendix that
+appears inside an article. The default is to use
+the properties of sect1 titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="abstract.properties">
+<refmeta>
+<refentrytitle>abstract.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.properties</refname>
+<refpurpose>Properties associated with the block surrounding an abstract</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="abstract.properties.frag">
+&lt;xsl:attribute-set name="abstract.properties"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0.0in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="end-indent"&gt;0.0in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for abstract.</para>
+
+<para>See also <parameter>abstract.title.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="abstract.title.properties">
+<refmeta>
+<refentrytitle>abstract.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.title.properties</refname>
+<refpurpose>Properties for abstract titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="abstract.title.properties.frag">
+&lt;xsl:attribute-set name="abstract.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$title.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 0.8')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 1.2')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties for abstract titles.</para>
+
+<para>See also <parameter>abstract.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="index.page.number.properties">
+<refmeta>
+<refentrytitle>index.page.number.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.page.number.properties</refname>
+<refpurpose>Properties associated with index page numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.page.number.properties.frag">
+&lt;xsl:attribute-set name="index.page.number.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties associated with page numbers in indexes.
+Changing color to indicate the page number is a link is
+one possibility.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="revhistory.table.properties">
+<refmeta>
+<refentrytitle>revhistory.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.table.properties</refname>
+<refpurpose>The properties of table used for formatting revhistory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="revhistory.table.properties.frag">
+&lt;xsl:attribute-set name="revhistory.table.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of revhistory table.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="revhistory.table.cell.properties">
+<refmeta>
+<refentrytitle>revhistory.table.cell.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.table.cell.properties</refname>
+<refpurpose>The properties of table cells used for formatting revhistory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="revhistory.table.cell.properties.frag">
+&lt;xsl:attribute-set name="revhistory.table.cell.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of individual cells in revhistory table.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="revhistory.title.properties">
+<refmeta>
+<refentrytitle>revhistory.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.title.properties</refname>
+<refpurpose>The properties of revhistory title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="revhistory.title.properties.frag">
+&lt;xsl:attribute-set name="revhistory.title.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of revhistory title.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="profiling" xml:base="../fo/param.xml"><title>Profiling</title>
+<partintro id="profiling_partintro">
+<para>The following parameters can be used for attribute-based
+profiling of your document. For more information about profiling, see
+<link role="tcg" xlink:href="Profiling.html">Profiling (conditional text)</link>.</para>
+</partintro>
+<refentry version="5.0" id="profile.arch">
+<refmeta>
+<refentrytitle>profile.arch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.arch</refname>
+<refpurpose>Target profile for <tag class="attribute">arch</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.arch.frag">
+&lt;xsl:param name="profile.arch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.audience">
+<refmeta>
+<refentrytitle>profile.audience</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.audience</refname>
+<refpurpose>Target profile for <tag class="attribute">audience</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.audience.frag">
+&lt;xsl:param name="profile.audience"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.condition">
+<refmeta>
+<refentrytitle>profile.condition</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.condition</refname>
+<refpurpose>Target profile for <tag class="attribute">condition</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.condition.frag">
+&lt;xsl:param name="profile.condition"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.conformance">
+<refmeta>
+<refentrytitle>profile.conformance</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.conformance</refname>
+<refpurpose>Target profile for <tag class="attribute">conformance</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.conformance.frag">
+&lt;xsl:param name="profile.conformance"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.lang">
+<refmeta>
+<refentrytitle>profile.lang</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.lang</refname>
+<refpurpose>Target profile for <tag class="attribute">lang</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.lang.frag">
+&lt;xsl:param name="profile.lang"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.os">
+<refmeta>
+<refentrytitle>profile.os</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.os</refname>
+<refpurpose>Target profile for <tag class="attribute">os</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.os.frag">
+&lt;xsl:param name="profile.os"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.revision">
+<refmeta>
+<refentrytitle>profile.revision</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revision</refname>
+<refpurpose>Target profile for <tag class="attribute">revision</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.revision.frag">
+&lt;xsl:param name="profile.revision"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.revisionflag">
+<refmeta>
+<refentrytitle>profile.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revisionflag</refname>
+<refpurpose>Target profile for <tag class="attribute">revisionflag</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.revisionflag.frag">
+&lt;xsl:param name="profile.revisionflag"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.role">
+<refmeta>
+<refentrytitle>profile.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.role</refname>
+<refpurpose>Target profile for <tag class="attribute">role</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.role.frag">
+&lt;xsl:param name="profile.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+<warning>
+<para>Note that <tag class="attribute">role</tag> is often
+used for other purposes than profiling. For example it is commonly
+used to get emphasize in bold font:</para>
+
+<programlisting>&lt;emphasis role="bold"&gt;very important&lt;/emphasis&gt;</programlisting>
+
+<para>If you are using <tag class="attribute">role</tag> for
+these purposes do not forget to add values like <literal>bold</literal> to
+value of this parameter. If you forgot you will get document with
+small pieces missing which are very hard to track.</para>
+
+<para>For this reason it is not recommended to use <tag class="attribute">role</tag> attribute for profiling. You should
+rather use profiling specific attributes like <tag class="attribute">userlevel</tag>, <tag class="attribute">os</tag>, <tag class="attribute">arch</tag>, <tag class="attribute">condition</tag>, etc.</para>
+</warning>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.security">
+<refmeta>
+<refentrytitle>profile.security</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.security</refname>
+<refpurpose>Target profile for <tag class="attribute">security</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.security.frag">
+&lt;xsl:param name="profile.security"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.status">
+<refmeta>
+<refentrytitle>profile.status</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.status</refname>
+<refpurpose>Target profile for <tag class="attribute">status</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.status.frag">
+&lt;xsl:param name="profile.status"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.userlevel">
+<refmeta>
+<refentrytitle>profile.userlevel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.userlevel</refname>
+<refpurpose>Target profile for <tag class="attribute">userlevel</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.userlevel.frag">
+&lt;xsl:param name="profile.userlevel"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.vendor">
+<refmeta>
+<refentrytitle>profile.vendor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.vendor</refname>
+<refpurpose>Target profile for <tag class="attribute">vendor</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.vendor.frag">
+&lt;xsl:param name="profile.vendor"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.wordsize">
+<refmeta>
+<refentrytitle>profile.wordsize</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.wordsize</refname>
+<refpurpose>Target profile for <tag class="attribute">wordsize</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.wordsize.frag">
+&lt;xsl:param name="profile.wordsize"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.attribute">
+<refmeta>
+<refentrytitle>profile.attribute</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.attribute</refname>
+<refpurpose>Name of user-specified profiling attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.attribute.frag">
+&lt;xsl:param name="profile.attribute"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter is used in conjuction with
+<parameter>profile.value</parameter>.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.value">
+<refmeta>
+<refentrytitle>profile.value</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.value</refname>
+<refpurpose>Target profile for user-specified attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.value.frag">
+&lt;xsl:param name="profile.value"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When you are using this parameter you must also specify name of
+profiling attribute with parameter
+<parameter>profile.attribute</parameter>.</para>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="profile.separator">
+<refmeta>
+<refentrytitle>profile.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.separator</refname>
+<refpurpose>Separator character for compound profile values</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="profile.separator.frag">
+&lt;xsl:param name="profile.separator"&gt;;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator character used for compound profile values. See <parameter>profile.arch</parameter></para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="l10n" xml:base="../fo/param.xml"><title>Localization</title>
+<refentry version="5.0" id="l10n.gentext.language">
+<refmeta>
+<refentrytitle>l10n.gentext.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.language</refname>
+<refpurpose>Sets the gentext language</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="l10n.gentext.language.frag">
+&lt;xsl:param name="l10n.gentext.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this parameter is set to any value other than the empty string, its
+value will be used as the value for the language when generating text. Setting
+<parameter>l10n.gentext.language</parameter> overrides any settings within the
+document being formatted.</para>
+
+<para>It's much more likely that you might want to set the
+<parameter>l10n.gentext.default.language</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="l10n.gentext.default.language">
+ <refmeta>
+ <refentrytitle>l10n.gentext.default.language</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>l10n.gentext.default.language</refname>
+ <refpurpose>Sets the default language for generated text</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<programlisting id="l10n.gentext.default.language.frag">
+&lt;xsl:param name="l10n.gentext.default.language"&gt;en&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of the <parameter>l10n.gentext.default.language</parameter>
+parameter is used as the language for generated text if no setting is provided
+in the source document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="l10n.gentext.use.xref.language">
+<refmeta>
+<refentrytitle>l10n.gentext.use.xref.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.use.xref.language</refname>
+<refpurpose>Use the language of target when generating cross-reference text?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="l10n.gentext.use.xref.language.frag">
+&lt;xsl:param name="l10n.gentext.use.xref.language" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the language of the target will be used when
+generating cross reference text. Usually, the <quote>current</quote>
+language is used when generating text (that is, the language of the
+element that contains the cross-reference element). But setting this parameter
+allows the language of the element <emphasis>pointed to</emphasis> to control
+the generated text.</para>
+
+<para>Consider the following example:</para>
+
+<informalexample>
+<programlisting>&lt;para lang="en"&gt;See also &lt;xref linkend="chap3"/&gt;.&lt;/para&gt;
+</programlisting>
+</informalexample>
+
+<para>Suppose that Chapter 3 happens to be written in German.
+If <parameter>l10n.gentext.use.xref.language</parameter> is non-zero, the
+resulting text will be something like this:</para>
+
+<blockquote>
+<para>See also Kapital 3.</para>
+</blockquote>
+
+<para>Where the more traditional rendering would be:</para>
+
+<blockquote>
+<para>See also Chapter 3.</para>
+</blockquote>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="l10n.lang.value.rfc.compliant">
+<refmeta>
+<refentrytitle>l10n.lang.value.rfc.compliant</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.lang.value.rfc.compliant</refname>
+<refpurpose>Make value of lang attribute RFC compliant?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="l10n.lang.value.rfc.compliant.frag">
+&lt;xsl:param name="l10n.lang.value.rfc.compliant" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ensure that the values for all <tag class="attribute">lang</tag> attributes in HTML output are RFC
+compliant<footnote><para>Section 8.1.1, <link xlink:href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.1.1">Language Codes</link>, in the HTML 4.0 Recommendation states that:
+
+<blockquote><para>[RFC1766] defines and explains the language codes
+that must be used in HTML documents.</para>
+<para>Briefly, language codes consist of a primary code and a possibly
+empty series of subcodes:
+
+<literallayout class="monospaced">language-code = primary-code ( "-" subcode )*</literallayout>
+</para>
+<para>And in RFC 1766, <link xlink:href="http://www.ietf.org/rfc/rfc1766.txt">Tags for the Identification
+of Languages</link>, the EBNF for "language tag" is given as:
+
+<literallayout class="monospaced">Language-Tag = Primary-tag *( "-" Subtag )
+Primary-tag = 1*8ALPHA
+Subtag = 1*8ALPHA</literallayout>
+</para>
+</blockquote>
+</para></footnote>.
+
+by taking any underscore characters in any <tag class="attribute">lang</tag> values found in source documents, and
+replacing them with hyphen characters in output HTML files. For
+example, <literal>zh_CN</literal> in a source document becomes
+<literal>zh-CN</literal> in the HTML output form that source.
+
+<note>
+<para>This parameter does not cause any case change in <tag class="attribute">lang</tag> values, because RFC 1766
+explicitly states that all "language tags" (as it calls them) "are
+to be treated as case insensitive".</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="writing.mode">
+<refmeta>
+<refentrytitle>writing.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>writing.mode</refname>
+<refpurpose>Direction of text flow based on locale</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="writing.mode.frag">
+&lt;xsl:param name="writing.mode"&gt;
+ &lt;xsl:call-template name="gentext"&gt;
+ &lt;xsl:with-param name="key"&gt;writing-mode&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="lang"&gt;
+ &lt;xsl:call-template name="l10n.language"&gt;
+ &lt;xsl:with-param name="target" select="/*[1]"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets direction of text flow and text alignment based on locale.
+The value is normally taken from the gentext file for the
+lang attribute of the document's root element, using the
+key name 'writing-mode' to look it up in the gentext file.
+But the param can also be
+set on the command line to override that gentext value.
+</para>
+<para>Accepted values are:
+<variablelist>
+ <varlistentry>
+ <term>lr-tb</term>
+ <listitem>
+ <para>Left-to-right text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl-tb</term>
+ <listitem>
+ <para>Right-to-left text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb-rl</term>
+ <listitem>
+ <para>Top-to-bottom text flow in each vertical line, lines stack right to left.
+ Supported by only a few XSL-FO processors. Not supported in HTML output.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>lr</term>
+ <listitem>
+ <para>Shorthand for lr-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl</term>
+ <listitem>
+ <para>Shorthand for rl-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb</term>
+ <listitem>
+ <para>Shorthand for tb-rl.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="ebnf" xml:base="../fo/param.xml"><title>EBNF</title>
+<refentry version="5.0" id="ebnf.assignment">
+<refmeta>
+<refentrytitle>ebnf.assignment</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.assignment</refname>
+<refpurpose>The EBNF production assignment operator</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.assignment.frag">
+
+&lt;xsl:param name="ebnf.assignment"&gt;
+ &lt;fo:inline font-family="{$monospace.font.family}"&gt;
+ &lt;xsl:text&gt;::=&lt;/xsl:text&gt;
+ &lt;/fo:inline&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.assignment</parameter> parameter determines what
+text is used to show <quote>assignment</quote> in <tag>production</tag>s
+in <tag>productionset</tag>s.</para>
+
+<para>While <quote><literal>::=</literal></quote> is common, so are several
+other operators.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ebnf.statement.terminator">
+<refmeta>
+<refentrytitle>ebnf.statement.terminator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.statement.terminator</refname>
+<refpurpose>Punctuation that ends an EBNF statement.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.statement.terminator.frag">
+
+&lt;xsl:param name="ebnf.statement.terminator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.statement.terminator</parameter> parameter determines what
+text is used to terminate each <tag>production</tag>
+in <tag>productionset</tag>.</para>
+
+<para>Some notations end each statement with a period.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="prepress" xml:base="../fo/param.xml"><title>Prepress</title>
+<refentry version="5.0" id="crop.marks">
+<refmeta>
+<refentrytitle>crop.marks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.marks</refname>
+<refpurpose>Output crop marks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="crop.marks.frag">
+&lt;xsl:param name="crop.marks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, crop marks will be added to each page. Currently this
+works only with XEP if you have <parameter>xep.extensions</parameter> set.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="crop.mark.width">
+<refmeta>
+<refentrytitle>crop.mark.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.width</refname>
+<refpurpose>Width of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="crop.mark.width.frag">
+&lt;xsl:param name="crop.mark.width"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Width of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="crop.mark.offset">
+<refmeta>
+<refentrytitle>crop.mark.offset</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.offset</refname>
+<refpurpose>Length of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="crop.mark.offset.frag">
+&lt;xsl:param name="crop.mark.offset"&gt;24pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Length of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="crop.mark.bleed">
+<refmeta>
+<refentrytitle>crop.mark.bleed</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.bleed</refname>
+<refpurpose>Length of invisible part of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="crop.mark.bleed.frag">
+&lt;xsl:param name="crop.mark.bleed"&gt;6pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Length of invisible part of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+ </part>
+ <part id="manpages">
+ <?dbhtml dir="manpages"?>
+ <?dbhtml filename="index.html"?>
+ <title xml:base="../manpages/param.xml">Manpages Parameter Reference</title>
+ <partintro id="manintro">
+
+ <para xml:base="../manpages/param.xml">This is reference documentation for all user-configurable
+ parameters in the DocBook XSL "manpages" stylesheet (for
+ generating groff/nroff output). Note that the manpages
+ stylesheet is a customization layer of the DocBook XSL HTML
+ stylesheet. Therefore, you can also use a number of <link xlink:href="../html/">HTML stylesheet parameters</link>
+ to control manpages output (in addition to the
+ manpages-specific parameters listed in this section).</para>
+
+ </partintro>
+ <reference id="general" xml:base="../manpages/param.xml">
+ <title>Hyphenation, justification, and breaking</title>
+<refentry version="5.0" id="man.hyphenate">
+<refmeta>
+<refentrytitle>man.hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate</refname>
+<refpurpose>Enable hyphenation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.hyphenate.frag">
+&lt;xsl:param name="man.hyphenate"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, hyphenation is enabled.</para>
+
+<note>
+<para>The default value for this parameter is zero because groff is
+not particularly smart about how it does hyphenation; it can end up
+hyphenating a lot of things that you don't want hyphenated. To
+mitigate that, the default behavior of the stylesheets is to suppress
+hyphenation of computer inlines, filenames, and URLs. (You can
+override the default behavior by setting non-zero values for the
+<parameter>man.hyphenate.urls</parameter>,
+<parameter>man.hyphenate.filenames</parameter>, and
+<parameter>man.hyphenate.computer.inlines</parameter> parameters.) But
+the best way is still to just globally disable hyphenation, as the
+stylesheets do by default.</para>
+
+<para>The only good reason to enabled hyphenation is if you have also
+enabled justification (which is disabled by default). The reason is
+that justified text can look very bad unless you also hyphenate it; to
+quote the <quote>Hypenation</quote> node from the groff info page:
+
+<blockquote>
+ <para><emphasis>Since the odds are not great for finding a set of
+ words, for every output line, which fit nicely on a line without
+ inserting excessive amounts of space between words, 'gtroff'
+ hyphenates words so that it can justify lines without inserting too
+ much space between words.</emphasis></para>
+</blockquote>
+
+So, if you set a non-zero value for the
+<parameter>man.justify</parameter> parameter (to enable
+justification), then you should probably also set a non-zero value for
+<parameter>man.hyphenate</parameter> (to enable hyphenation).</para>
+</note>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.hyphenate.urls">
+<refmeta>
+<refentrytitle>man.hyphenate.urls</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.urls</refname>
+<refpurpose>Hyphenate URLs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.hyphenate.urls.frag">
+&lt;xsl:param name="man.hyphenate.urls"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for output of
+the <tag>ulink</tag> <tag class="attribute">url</tag> attribute.</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting
+ <parameter>man.hyphenate.urls</parameter> is not necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.urls</parameter> is non-zero, URLs
+will not be treated specially and are subject to hyphenation just like
+other words.</para>
+
+<note>
+ <para>If you are thinking about setting a non-zero value for
+ <parameter>man.hyphenate.urls</parameter> in order to make long
+ URLs break across lines, you'd probably be better off
+ experimenting with setting the
+ <parameter>man.break.after.slash</parameter> parameter first. That
+ will cause long URLs to be broken after slashes.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.hyphenate.filenames">
+<refmeta>
+<refentrytitle>man.hyphenate.filenames</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.filenames</refname>
+<refpurpose>Hyphenate filenames?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.hyphenate.filenames.frag">
+&lt;xsl:param name="man.hyphenate.filenames"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for
+<tag>filename</tag> output.</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting
+ <parameter>man.hyphenate.filenames</parameter> is not
+ necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.filenames</parameter> is non-zero,
+filenames will not be treated specially and are subject to hyphenation
+just like other words.</para>
+
+<note>
+ <para>If you are thinking about setting a non-zero value for
+ <parameter>man.hyphenate.filenames</parameter> in order to make long
+ filenames/pathnames break across lines, you'd probably be better off
+ experimenting with setting the
+ <parameter>man.break.after.slash</parameter> parameter first. That
+ will cause long pathnames to be broken after slashes.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.hyphenate.computer.inlines">
+<refmeta>
+<refentrytitle>man.hyphenate.computer.inlines</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.computer.inlines</refname>
+<refpurpose>Hyphenate computer inlines?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.hyphenate.computer.inlines.frag">
+&lt;xsl:param name="man.hyphenate.computer.inlines"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for
+<quote>computer inlines</quote> such as environment variables,
+constants, etc. This parameter current affects output of the following
+elements:
+<simplelist type="inline">
+
+ <member><tag>classname</tag></member>
+ <member><tag>constant</tag></member>
+ <member><tag>envar</tag></member>
+ <member><tag>errorcode</tag></member>
+ <member><tag>option</tag></member>
+ <member><tag>replaceable</tag></member>
+ <member><tag>userinput</tag></member>
+ <member><tag>type</tag></member>
+ <member><tag>varname</tag></member>
+</simplelist>
+</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting the
+ <parameter>man.hyphenate.computer.inlines</parameter> is not
+ necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.computer.inlines</parameter> is
+non-zero, computer inlines will not be treated specially and will be
+hyphenated like other words when needed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.justify">
+<refmeta>
+<refentrytitle>man.justify</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.justify</refname>
+<refpurpose>Justify text to both right and left margins?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.justify.frag">
+&lt;xsl:param name="man.justify"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, text is justified to both the right and left
+margins (or, in roff terminology, "adjusted and filled" to both the
+right and left margins). If zero (the default), text is adjusted to
+the left margin only -- producing what is traditionally called
+"ragged-right" text.</para>
+
+<note>
+<para>The default value for this parameter is zero because justified
+text looks good only when it is also hyphenated. Without hyphenation,
+excessive amounts of space often end up getting between words, in
+order to "pad" lines out to align on the right margin.</para>
+
+<para>The problem is that groff is not particularly smart about how it
+does hyphenation; it can end up hyphenating a lot of things that you
+don't want hyphenated. So, disabling both justification and
+hyphenation ensures that hyphens won't get inserted where you don't
+want to them, and you don't end up with lines containing excessive
+amounts of space between words.</para>
+
+<para>However, if do you decide to set a non-zero value for the
+<parameter>man.justify</parameter> parameter (to enable
+justification), then you should probably also set a non-zero value for
+<parameter>man.hyphenate</parameter> (to enable hyphenation).</para>
+
+<para>Yes, these default settings run counter to how most existing man
+pages are formatted. But there are some notable exceptions, such as
+the <literal>perl</literal> man pages.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.break.after.slash">
+<refmeta>
+<refentrytitle>man.break.after.slash</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.break.after.slash</refname>
+<refpurpose>Enable line-breaking after slashes?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.break.after.slash.frag">
+&lt;xsl:param name="man.break.after.slash"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, line-breaking after slashes is enabled. This is
+mainly useful for causing long URLs or pathnames/filenames to be
+broken up or "wrapped" across lines (though it also has the side
+effect of sometimes causing relatively short URLs and pathnames to be
+broken up across lines too).</para>
+
+<para>If zero (the default), line-breaking after slashes is
+disabled. In that case, strings containing slashes (for example, URLs
+or filenames) are not broken across lines, even if they exceed the
+maximum column widith.</para>
+
+<warning>
+ <para>If you set a non-zero value for this parameter, check your
+ man-page output carefuly afterwards, in order to make sure that the
+ setting has not introduced an excessive amount of breaking-up of URLs
+ or pathnames. If your content contains mostly short URLs or
+ pathnames, setting a non-zero value for
+ <parameter>man.break.after.slash</parameter> will probably result in
+ in a significant number of relatively short URLs and pathnames being
+ broken across lines, which is probably not what you want.</para>
+</warning>
+
+</refsection>
+</refentry>
+
+ </reference><reference id="indent" xml:base="../manpages/param.xml">
+ <title>Indentation</title>
+<refentry version="5.0" id="man.indent.width">
+<refmeta>
+<refentrytitle>man.indent.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.width</refname>
+<refpurpose>Specifies width used for adjusted indents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.indent.width.frag">
+&lt;xsl:param name="man.indent.width"&gt;4&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The <parameter>man.indent.width</parameter> parameter specifies
+the width used for adjusted indents. The value of
+<parameter>man.indent.width</parameter> is used for indenting of
+lists, verbatims, headings, and elsewhere, depending on whether the
+values of certain <literal>man.indent.*</literal> boolean parameters
+are non-zero.</para>
+
+<para>The value of <parameter>man.indent.width</parameter> should
+include a valid roff measurement unit (for example,
+<literal>n</literal> or <literal>u</literal>). The default value of
+<literal>4n</literal> specifies a 4-en width; when viewed on a
+console, that amounts to the width of four characters. For details
+about roff measurment units, see the <literal>Measurements</literal>
+node in the groff info page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.indent.refsect">
+<refmeta>
+<refentrytitle>man.indent.refsect</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.refsect</refname>
+<refpurpose>Adjust indentation of refsect* and refsection?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.indent.refsect.frag">
+&lt;xsl:param name="man.indent.refsect" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.refsect</parameter> is
+non-zero, the width of the left margin for
+<tag>refsect1</tag>, <tag>refsect2</tag> and
+<tag>refsect3</tag> contents and titles (and first-level,
+second-level, and third-level nested
+<tag>refsection</tag>instances) is adjusted by the value of
+the <parameter>man.indent.width</parameter> parameter. With
+<parameter>man.indent.width</parameter> set to its default value of
+<literal>3n</literal>, the main results are that:
+
+<itemizedlist>
+ <listitem>
+ <para>contents of <tag>refsect1</tag> are output with a
+ left margin of three characters instead the roff default of seven
+ or eight characters</para>
+ </listitem>
+ <listitem>
+ <para>contents of <tag>refsect2</tag> are displayed in
+ console output with a left margin of six characters instead the of
+ the roff default of seven characters</para>
+ </listitem>
+ <listitem>
+ <para> the contents of <tag>refsect3</tag> and nested
+ <tag>refsection</tag> instances are adjusted
+ accordingly.</para>
+ </listitem>
+</itemizedlist>
+
+If instead the value of <parameter>man.indent.refsect</parameter> is
+zero, no margin adjustment is done for <literal>refsect*</literal>
+output.</para>
+
+<tip>
+ <para>If your content is primarly comprised of
+ <tag>refsect1</tag> and <tag>refsect2</tag> content
+ (or the <tag>refsection</tag> equivalent)&#160;&#8211; with few or
+ no <tag>refsect3</tag> or lower nested sections , you may be
+ able to &#8220;conserve&#8221; space in your output by setting
+ <parameter>man.indent.refsect</parameter> to a non-zero value. Doing
+ so will &#8220;squeeze&#8221; the left margin in such as way as to provide an
+ additional four characters of &#8220;room&#8221; per line in
+ <tag>refsect1</tag> output. That extra room may be useful
+ if, for example, you have many verbatim sections with long lines in
+ them.</para>
+</tip>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.indent.blurbs">
+<refmeta>
+<refentrytitle>man.indent.blurbs</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.blurbs</refname>
+<refpurpose>Adjust indentation of blurbs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.indent.blurbs.frag">
+&lt;xsl:param name="man.indent.blurbs" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.blurbs</parameter> is
+non-zero, the width of the left margin for
+<tag>authorblurb</tag>, <tag>personblurb</tag>, and
+<tag>contrib</tag> output is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>3n</literal> by default). If instead the value of
+<parameter>man.indent.blurbs</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.indent.lists">
+<refmeta>
+<refentrytitle>man.indent.lists</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.lists</refname>
+<refpurpose>Adjust indentation of lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.indent.lists.frag">
+&lt;xsl:param name="man.indent.lists" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.lists</parameter> is
+non-zero, the width of the left margin for list items in
+<tag>itemizedlist</tag>,
+<tag>orderedlist</tag>,
+<tag>variablelist</tag> output (and output of some other
+lists) is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>4n</literal> by default). If instead the value of
+<parameter>man.indent.lists</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.indent.verbatims">
+<refmeta>
+<refentrytitle>man.indent.verbatims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.verbatims</refname>
+<refpurpose>Adjust indentation of verbatims?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.indent.verbatims.frag">
+&lt;xsl:param name="man.indent.verbatims" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.verbatims</parameter> is
+non-zero, the width of the left margin for output of verbatim
+environments (<tag>programlisting</tag>,
+<tag>screen</tag>, and so on) is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>3n</literal> by default). If instead the value of
+<parameter>man.indent.verbatims</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
+
+ </reference><reference id="fonts" xml:base="../manpages/param.xml">
+ <title>Fonts</title>
+<refentry version="5.0" id="man.font.funcprototype">
+<refmeta>
+<refentrytitle>man.font.funcprototype</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.funcprototype</refname>
+<refpurpose>Specifies font for funcprototype output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.font.funcprototype.frag">
+ &lt;xsl:param name="man.font.funcprototype"&gt;BI&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.funcprototype</parameter> parameter
+specifies the font for <tag>funcprototype</tag> output. It
+should be a valid roff font name, such as <literal>BI</literal> or
+<literal>B</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.font.funcsynopsisinfo">
+<refmeta>
+<refentrytitle>man.font.funcsynopsisinfo</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.funcsynopsisinfo</refname>
+<refpurpose>Specifies font for funcsynopsisinfo output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.font.funcsynopsisinfo.frag">
+ &lt;xsl:param name="man.font.funcsynopsisinfo"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.funcsynopsisinfo</parameter> parameter
+specifies the font for <tag>funcsynopsisinfo</tag> output. It
+should be a valid roff font name, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.font.links">
+<refmeta>
+<refentrytitle>man.font.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.links</refname>
+<refpurpose>Specifies font for links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.font.links.frag">
+&lt;xsl:param name="man.font.links"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.links</parameter> parameter
+specifies the font for output of links (<tag>ulink</tag> instances
+and any instances of any element with an <tag class="attribute">xlink:href</tag> attribute).</para>
+
+<para>The value of <parameter>man.font.links</parameter> must be
+ either <literal>B</literal> or <literal>I</literal>, or empty. If
+the value is empty, no font formatting is applied to links.</para>
+
+<para>If you set <parameter>man.endnotes.are.numbered</parameter> and/or
+<parameter>man.endnotes.list.enabled</parameter> to zero (disabled), then
+you should probably also set an empty value for
+<parameter>man.font.links</parameter>. But if
+<parameter>man.endnotes.are.numbered</parameter> is non-zero (enabled),
+you should probably keep
+<parameter>man.font.links</parameter> set to
+<literal>B</literal> or <literal>I</literal><footnote><para>The
+ main purpose of applying a font format to links in most output
+formats it to indicate that the formatted text is
+&#8220;clickable&#8221;; given that links rendered in man pages are
+not &#8220;real&#8221; hyperlinks that users can click on, it might
+seem like there is never a good reason to have font formatting for
+link contents in man output.</para>
+<para>In fact, if you suppress the
+display of inline link references (by setting
+<parameter>man.endnotes.are.numbered</parameter> to zero), there is no
+good reason to apply font formatting to links. However, if
+<parameter>man.endnotes.are.numbered</parameter> is non-zero, having
+font formatting for links (arguably) serves a purpose: It provides
+&#8220;context&#8221; information about exactly what part of the text
+is being &#8220;annotated&#8221; by the link. Depending on how you
+mark up your content, that context information may or may not
+have value.</para></footnote>.</para>
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter>,
+ <parameter>man.endnotes.are.numbered</parameter></para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" id="man.font.table.headings">
+<refmeta>
+<refentrytitle>man.font.table.headings</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.table.headings</refname>
+<refpurpose>Specifies font for table headings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.font.table.headings.frag">
+ &lt;xsl:param name="man.font.table.headings"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.table.headings</parameter> parameter
+specifies the font for <tag>table</tag> headings. It should be
+a valid roff font, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.font.table.title">
+<refmeta>
+<refentrytitle>man.font.table.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.table.title</refname>
+<refpurpose>Specifies font for table headings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.font.table.title.frag">
+ &lt;xsl:param name="man.font.table.title"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.table.title</parameter> parameter
+specifies the font for <tag>table</tag> titles. It should be
+a valid roff font, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
+
+ </reference><reference id="synopsis" xml:base="../manpages/param.xml">
+ <title>SYNOPSIS section</title>
+<refentry version="5.0" id="man.funcsynopsis.style">
+<refmeta>
+<refentrytitle>man.funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="man.funcsynopsis.style.frag">&lt;xsl:param name="man.funcsynopsis.style"&gt;ansi&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If <parameter>man.funcsynopsis.style</parameter> is
+<literal>ansi</literal>, ANSI-style function synopses are
+generated for a <tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.</para>
+</refsection>
+</refentry>
+
+ </reference><reference id="authors" xml:base="../manpages/param.xml">
+ <title>AUTHORS and COPYRIGHT sections</title>
+ <refentry version="5.0" id="man.authors.section.enabled">
+<refmeta>
+<refentrytitle>man.authors.section.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.authors.section.enabled</refname>
+<refpurpose>Display auto-generated AUTHORS section?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="man.authors.section.enabled.frag">
+&lt;xsl:param name="man.authors.section.enabled"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>man.authors.section.enabled</parameter> is non-zero
+(the default), then an <literal>AUTHORS</literal> section is
+generated near the end of each man page. The output of the
+<literal>AUTHORS</literal> section is assembled from any
+<tag>author</tag>, <tag>editor</tag>, and <tag>othercredit</tag>
+metadata found in the contents of the child <tag>info</tag> or
+<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag>
+itself, or from any <tag>author</tag>, <tag>editor</tag>, and
+<tag>othercredit</tag> metadata that may appear in <tag>info</tag>
+contents of any ancestors of the <tag>refentry</tag>.</para>
+
+<para>If the value of
+<parameter>man.authors.section.enabled</parameter> is zero, the
+the auto-generated <literal>AUTHORS</literal> section is
+suppressed.</para>
+
+<para>Set the value of
+ <parameter>man.authors.section.enabled</parameter> to zero if
+ you want to have a manually created <literal>AUTHORS</literal>
+ section in your source, and you want it to appear in output
+ instead of the auto-generated <literal>AUTHORS</literal>
+ section.</para>
+</refsection>
+</refentry>
+
+ <refentry version="5.0" id="man.copyright.section.enabled">
+<refmeta>
+<refentrytitle>man.copyright.section.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.copyright.section.enabled</refname>
+<refpurpose>Display auto-generated COPYRIGHT section?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="man.copyright.section.enabled.frag">
+&lt;xsl:param name="man.copyright.section.enabled"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>man.copyright.section.enabled</parameter> is non-zero
+(the default), then a <literal>COPYRIGHT</literal> section is
+generated near the end of each man page. The output of the
+<literal>COPYRIGHT</literal> section is assembled from any
+<tag>copyright</tag> and <tag>legalnotice</tag> metadata found in
+the contents of the child <tag>info</tag> or
+<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag>
+itself, or from any <tag>copyright</tag> and
+<tag>legalnotice</tag> metadata that may appear in <tag>info</tag>
+contents of any ancestors of the <tag>refentry</tag>.</para>
+
+<para>If the value of
+<parameter>man.copyright.section.enabled</parameter> is zero, the
+the auto-generated <literal>COPYRIGHT</literal> section is
+suppressed.</para>
+
+<para>Set the value of
+ <parameter>man.copyright.section.enabled</parameter> to zero if
+ you want to have a manually created <literal>COPYRIGHT</literal>
+ section in your source, and you want it to appear in output
+ instead of the auto-generated <literal>COPYRIGHT</literal>
+ section.</para>
+</refsection>
+</refentry>
+
+ </reference><reference id="endnotes" xml:base="../manpages/param.xml">
+ <title>Endnotes and link handling</title>
+<refentry version="5.0" id="man.endnotes.list.enabled">
+<refmeta>
+<refentrytitle>man.endnotes.list.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.list.enabled</refname>
+<refpurpose>Display endnotes list at end of man page?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.endnotes.list.enabled.frag">
+&lt;xsl:param name="man.endnotes.list.enabled"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is
+non-zero (the default), then an endnotes list is added to the end of
+the output man page.</para>
+
+<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is
+zero, the list is suppressed &#8212; unless link numbering is enabled (that
+is, if <parameter>man.endnotes.are.numbered</parameter> is non-zero), in
+which case, that setting overrides the
+<parameter>man.endnotes.list.enabled</parameter> setting, and the
+endnotes list is still displayed. The reason is that inline
+numbering of notesources associated with endnotes only makes sense
+if a (numbered) list of endnotes is also generated.</para>
+
+<note>
+ <para>Leaving
+ <parameter>man.endnotes.list.enabled</parameter> at its default
+ (non-zero) value ensures that no &#8220;out of line&#8221; information (such
+ as the URLs for hyperlinks and images) gets lost in your
+ man-page output. It just gets &#8220;rearranged&#8221;.</para>
+ <para>So if you&#8217;re thinking about disabling endnotes listing by
+ setting the value of
+ <parameter>man.endnotes.list.enabled</parameter> to zero:
+ Before you do so, first take some time to carefully consider
+ the information needs and experiences of your users. The &#8220;out
+ of line&#8221; information has value even if the presentation of it
+ in text output is not as interactive as it may be in other
+ output formats.</para>
+ <para>As far as the specific case of URLs: Even though the URLs
+ displayed in text output may not be &#8220;real&#8221; (clickable)
+ hyperlinks, many X terminals have convenience features for
+ recognizing URLs and can, for example, present users with
+ an options to open a URL in a browser with the user clicks on
+ the URL is a terminal window. And short of those, users with X
+ terminals can always manually cut and paste the URLs into a web
+ browser.</para>
+ <para>Also, note that various &#8220;man to html&#8221; tools, such as the
+ widely used <command><link xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>)
+ application, automatically mark up URLs with <literal>a@href</literal> markup
+ during conversion &#8212; resulting in &#8220;real&#8221; hyperlinks in HTML
+ output from those tools.</para>
+</note>
+
+<para>To &#8220;turn off&#8221; numbering of endnotes in the
+endnotes list, set <parameter>man.endnotes.are.numbered</parameter>
+to zero. The endnotes list will
+still be displayed; it will just be displayed without the
+numbers<footnote><para>It can still make sense to have
+the list of endnotes displayed even if you have endnotes numbering turned
+off. In that case, your endnotes list basically becomes a &#8220;list
+of references&#8221; without any association with specific text in
+your document. This is probably the best option if you find the inline
+endnotes numbering obtrusive. Your users will still have access to all the &#8220;out of line&#8221;
+such as URLs for hyperlinks.</para></footnote>
+</para>
+
+<para>The default heading for the endnotes list is
+<literal>NOTES</literal>. To change that, set a non-empty
+value for the <parameter>man.endnotes.list.heading</parameter>
+parameter.</para>
+
+<para>In the case of notesources that are links: Along with the
+URL for each link, the endnotes list includes the contents of the
+link. The list thus includes only non-empty<footnote>
+
+<para>A &#8220;non-empty&#8221; link is one that looks like
+this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"&gt;manpages&lt;/ulink&gt;</literallayout>
+an &#8220;empty link&#8221; is on that looks like this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/&gt;</literallayout>
+</para></footnote> links.
+
+Empty links are never included, and never numbered. They are simply
+displayed inline, without any numbering.</para>
+
+<para>In addition, if there are multiple instances of links in a
+<tag>refentry</tag> that have the same URL, the URL is listed only
+once. The contents listed for that link in the endnotes list are
+the contents of the first link which has that URL.</para>
+
+<para>If you disable endnotes listing, you should probably also set
+<parameter>man.links.are.underlined</parameter> to zero (to disable
+link underlining).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.endnotes.list.heading">
+<refmeta>
+<refentrytitle>man.endnotes.list.heading</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.list.heading</refname>
+<refpurpose>Specifies an alternate name for endnotes list</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.endnotes.list.heading.frag">
+&lt;xsl:param name="man.endnotes.list.heading"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.endnotes.are.numbered</parameter> parameter
+and/or the <parameter>man.endnotes.list.enabled</parameter>
+parameter is non-zero (the defaults for both are non-zero), a
+numbered list of endnotes is generated near the end of each man
+page. The default heading for the list of endnotes is the
+equivalent of the English word <literal>NOTES</literal> in
+the current locale. To cause an alternate heading to be displayed,
+set a non-empty value for the
+<parameter>man.endnotes.list.heading</parameter> parameter &#8212;
+for example, <literal>REFERENCES</literal>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.endnotes.are.numbered">
+<refmeta>
+<refentrytitle>man.endnotes.are.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.are.numbered</refname>
+<refpurpose>Number endnotes?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.endnotes.are.numbered.frag">
+&lt;xsl:param name="man.endnotes.are.numbered"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is
+non-zero (the default), then for each non-empty<footnote>
+<para>A &#8220;non-empty&#8221; notesource is one that looks like
+this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"&gt;manpages&lt;/ulink&gt;</literallayout>
+an &#8220;empty&#8221; notesource is on that looks like this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/&gt;</literallayout>
+</para></footnote> &#8220;notesource&#8221;:
+
+<itemizedlist>
+ <listitem>
+ <para>a number (in square brackets) is displayed inline after the
+ rendered inline contents (if any) of the notesource</para>
+ </listitem>
+ <listitem>
+ <para>the contents of the notesource are included in a
+ numbered list of endnotes that is generated at the end of
+ each man page; the number for each endnote corresponds to
+ the inline number for the notesource with which it is
+ associated</para>
+ </listitem>
+</itemizedlist>
+The default heading for the list of endnotes is
+<literal>NOTES</literal>. To output a different heading, set a value
+for the <parameter>man.endnotes.section.heading</parameter>
+parameter.</para>
+
+<note>
+ <para>The endnotes list is also displayed (but without
+ numbers) if the value of
+ <parameter>man.endnotes.list.enabled</parameter> is
+ non-zero.</para>
+</note>
+
+
+<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is
+zero, numbering of endnotess is suppressed; only inline
+contents (if any) of the notesource are displayed inline.
+<important>
+ <para>If you are thinking about disabling endnote numbering by setting
+ the value of <parameter>man.endnotes.are.numbered</parameter> to zero,
+ before you do so, first take some time to carefully
+ consider the information needs and experiences of your users. The
+ square-bracketed numbers displayed inline after notesources may seem
+ obstrusive and aesthetically unpleasing<footnote><para>As far as notesources that are links, ytou might
+ think it would be better to just display URLs for non-empty
+ links inline, after their content, rather than displaying
+ square-bracketed numbers all over the place. But it's not better. In
+ fact, it's not even practical, because many (most) URLs for links
+ are too long to be displayed inline. They end up overflowing the
+ right margin. You can set a non-zero value for
+ <parameter>man.break.after.slash</parameter> parameter to deal with
+ that, but it could be argued that what you end up with is at least
+ as ugly, and definitely more obstrusive, then having short
+ square-bracketed numbers displayed inline.</para></footnote>,
+
+ but in a text-only output format, the
+ numbered-notesources/endnotes-listing mechanism is the only
+ practical way to handle this kind of content.</para>
+
+ <para>Also, users of &#8220;text based&#8221; browsers such as
+ <command>lynx</command> will already be accustomed to seeing inline
+ numbers for links. And various "man to html" applications, such as
+ the widely used <command><link xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>)
+ application, can automatically turn URLs into "real" HTML hyperlinks
+ in output. So leaving <parameter>man.endnotes.are.numbered</parameter>
+ at its default (non-zero) value ensures that no information is
+ lost in your man-page output. It just gets
+ &#8220;rearranged&#8221;.</para>
+</important>
+</para>
+<para>The handling of empty links is not affected by this
+parameter. Empty links are handled simply by displaying their URLs
+inline. Empty links are never auto-numbered.</para>
+
+<para>If you disable endnotes numbering, you should probably also set
+<parameter>man.font.links</parameter> to an empty value (to
+disable font formatting for links.</para>
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter>,
+ <parameter>man.font.links</parameter></para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.base.url.for.relative.links">
+ <refmeta>
+ <refentrytitle>man.base.url.for.relative.links</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.base.url.for.relative.links</refname>
+ <refpurpose>Specifies a base URL for relative links</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting id="man.base.url.for.relative.links.frag">&lt;xsl:param name="man.base.url.for.relative.links"&gt;[set $man.base.url.for.relative.links]/&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>For any &#8220;notesource&#8221; listed in the auto-generated
+ &#8220;NOTES&#8221; section of output man pages (which is generated when
+ the value of the
+ <parameter>man.endnotes.list.enabled</parameter> parameter
+ is non-zero), if the notesource is a link source with a
+ relative URI, the URI is displayed in output with the value
+ of the
+ <parameter>man.base.url.for.relative.links</parameter>
+ parameter prepended to the value of the link URI.</para>
+
+ <note>
+ <para>A link source is an notesource that references an
+ external resource:
+ <itemizedlist>
+ <listitem>
+ <para>a <tag>ulink</tag> element with a <tag class="attribute">url</tag> attribute</para>
+ </listitem>
+ <listitem>
+ <para>any element with an <tag class="attribute">xlink:href</tag> attribute</para>
+ </listitem>
+ <listitem>
+ <para>an <tag>imagedata</tag>, <tag>audiodata</tag>, or
+ <tag>videodata</tag> element</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </note>
+
+ <para>If you use relative URIs in link sources in your DocBook
+ <tag>refentry</tag> source, and you leave
+ <parameter>man.base.url.for.relative.links</parameter>
+ unset, the relative links will appear &#8220;as is&#8221; in the &#8220;Notes&#8221;
+ section of any man-page output generated from your source.
+ That&#8217;s probably not what you want, because such relative
+ links are only usable in the context of HTML output. So, to
+ make the links meaningful and usable in the context of
+ man-page output, set a value for
+ <parameter>man.base.url.for.relative.links</parameter> that
+ points to the online version of HTML output generated from
+ your DocBook <tag>refentry</tag> source. For
+ example:
+ <programlisting>&lt;xsl:param name="man.base.url.for.relative.links"
+ &gt;http://www.kernel.org/pub/software/scm/git/docs/&lt;/xsl:param&gt;</programlisting>
+ </para>
+
+ </refsection>
+
+ <refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter></para>
+ </refsection>
+
+</refentry>
+
+ </reference><reference id="lists" xml:base="../manpages/param.xml">
+ <title>Lists</title>
+<refentry version="5.0" id="man.segtitle.suppress">
+<refmeta>
+<refentrytitle>man.segtitle.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.segtitle.suppress</refname>
+<refpurpose>Suppress display of segtitle contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.segtitle.suppress.frag">
+&lt;xsl:param name="man.segtitle.suppress" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.segtitle.suppress</parameter> is
+non-zero, then display of <tag>segtitle</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
+
+ </reference><reference id="charmap" xml:base="../manpages/param.xml">
+ <title>Character/string substitution</title>
+<refentry version="5.0" id="man.charmap.enabled">
+<refmeta>
+<refentrytitle>man.charmap.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.enabled</refname>
+<refpurpose>Apply character map before final output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.charmap.enabled.frag">
+&lt;xsl:param name="man.charmap.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the <parameter>man.charmap.enabled</parameter>
+parameter is non-zero, a "character map" is used to substitute certain
+Unicode symbols and special characters with appropriate roff/groff
+equivalents, just before writing each man-page file to the
+filesystem. If instead the value of
+<parameter>man.charmap.enabled</parameter> is zero, Unicode characters
+are passed through "as is".</para>
+
+<refsection><info><title>Details</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes a <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link> format as detailed in the XSLT 2.0 specification. The map
+contains more than 800 character mappings and can be considered the
+standard roff character map for the distribution.</para>
+
+<para>You can use the <parameter>man.charmap.uri</parameter>
+parameter to specify a URI for the location for an alternate roff
+character map to use in place of the standard roff character map
+provided in the distribution.</para>
+
+<para>You can also use a subset of a character map. For details,
+see the <parameter>man.charmap.use.subset</parameter>,
+<parameter>man.charmap.subset.profile</parameter>, and
+<parameter>man.charmap.subset.profile.english</parameter>
+parameters.</para>
+
+</refsection>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.charmap.uri">
+<refmeta>
+<refentrytitle>man.charmap.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.uri</refname>
+<refpurpose>URI for custom roff character map</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.charmap.uri.frag">
+&lt;xsl:param name="man.charmap.uri"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes an <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link>. That character map can be considered the standard roff
+character map for the distribution.</para>
+
+<para>If the value of the <parameter>man.charmap.uri</parameter>
+parameter is non-empty, that value is used as the URI for the location
+for an alternate roff character map to use in place of the standard
+roff character map provided in the distribution.</para>
+
+<warning>
+<para>Do not set a value for <parameter>man.charmap.uri</parameter>
+unless you have a custom roff character map that differs from the
+standard one provided in the distribution.</para>
+</warning>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.charmap.use.subset">
+<refmeta>
+<refentrytitle>man.charmap.use.subset</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.use.subset</refname>
+<refpurpose>Use subset of character map instead of full map?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.charmap.use.subset.frag">
+&lt;xsl:param name="man.charmap.use.subset" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.charmap.use.subset</parameter> parameter is non-zero,
+a subset of the roff character map is used instead of the full roff
+character map. The profile of the subset used is determined either
+by the value of the
+<parameter>man.charmap.subset.profile</parameter>
+parameter (if the source is not in English) or the
+<parameter>man.charmap.subset.profile.english</parameter>
+parameter (if the source is in English).</para>
+
+<note>
+ <para>You may want to experiment with setting a non-zero value of
+ <parameter>man.charmap.use.subset</parameter>, so that the full
+ character map is used. Depending on which XSLT engine you run,
+ setting a non-zero value for
+ <parameter>man.charmap.use.subset</parameter> may significantly
+ increase the time needed to process your documents. Or it may
+ not. For example, if you set it and run it with xsltproc, it seems
+ to dramatically increase processing time; on the other hand, if you
+ set it and run it with Saxon, it does not seem to increase
+ processing time nearly as much.</para>
+
+ <para>If processing time is not a important concern and/or you can
+ tolerate the increase in processing time imposed by using the full
+ character map, set <parameter>man.charmap.use.subset</parameter> to
+ zero.</para>
+</note>
+
+<refsection><info><title>Details</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes a <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link> format as detailed in the XSLT 2.0 specification. The map
+contains more than 800 character mappings and can be considered the
+standard roff character map for the distribution.</para>
+
+<note>
+<para>You can use the <parameter>man.charmap.uri</parameter>
+parameter to specify a URI for the location for an alternate roff
+character map to use in place of the standard roff character map
+provided in the distribution.</para>
+</note>
+
+<para>Because it is not terrifically efficient to use the standard
+800-character character map in full -- and for most (or all) users,
+never necessary to use it in full -- the DocBook XSL Stylesheets
+support a mechanism for using, within any given character map, a
+subset of character mappings instead of the full set. You can use the
+<parameter>man.charmap.subset.profile</parameter> or
+<parameter>man.charmap.subset.profile.english</parameter>
+parameter to tune the profile of that subset to use.</para>
+
+</refsection>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.charmap.subset.profile">
+<refmeta>
+<refentrytitle>man.charmap.subset.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.subset.profile</refname>
+<refpurpose>Profile of character map subset</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.charmap.subset.profile.frag">
+&lt;xsl:param name="man.charmap.subset.profile"&gt;
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ (@*[local-name() = 'class'] = 'symbols' or
+ @*[local-name() = 'class'] = 'letters')
+) or
+@*[local-name() = 'block'] = 'Latin Extended-A'
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.charmap.use.subset</parameter> parameter is non-zero,
+and your DocBook source is not written in English (that
+ is, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root element
+ in your DocBook source or on the first <tag>refentry</tag>
+ element in your source has a value other than
+ <literal>en</literal>), then the character-map subset specified
+ by the <parameter>man.charmap.subset.profile</parameter>
+ parameter is used instead of the full roff character map.</para>
+
+<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root
+ element in your DocBook
+ source or on the first <tag>refentry</tag> element in your source
+ has the value <literal>en</literal> or if it has no <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute, then the character-map
+ subset specified by the
+ <parameter>man.charmap.subset.profile.english</parameter>
+ parameter is used instead of
+ <parameter>man.charmap.subset.profile</parameter>.</para>
+
+<para>The difference between the two subsets is that
+ <parameter>man.charmap.subset.profile</parameter> provides
+ mappings for characters in Western European languages that are
+ not part of the Roman (English) alphabet (ASCII character set).</para>
+
+<para>The value of <parameter>man.charmap.subset.profile</parameter>
+is a string representing an XPath expression that matches attribute
+names and values for <tag namespace="http://docbook.sf.net/xmlns/unichar/1.0">output-character</tag>
+elements in the character map.</para>
+
+<para>The attributes supported in the <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map included in the distribution</link> are:
+<variablelist>
+ <varlistentry>
+ <term>character</term>
+ <listitem>
+ <simpara>a raw Unicode character or numeric Unicode
+ character-entity value (either in decimal or hex); all
+ characters have this attribute</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <simpara>a standard full/long ISO/Unicode character name (e.g.,
+ "OHM SIGN"); all characters have this attribute</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>block</term>
+ <listitem>
+ <simpara>a standard Unicode "block" name (e.g., "General
+ Punctuation"); all characters have this attribute. For the full
+ list of Unicode block names supported in the standard roff
+ character map, see <xref linkend="BlocksAndClasses"/>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <simpara>a class of characters (e.g., "spaces"). Not all
+ characters have this attribute; currently, it is used only with
+ certain characters within the "C1 Controls And Latin-1
+ Supplement" and "General Punctuation" blocks. For details, see
+ <xref linkend="BlocksAndClasses"/>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>entity</term>
+ <listitem>
+ <simpara>an ISO entity name (e.g., "ohm"); not all characters
+ have this attribute, because not all characters have ISO entity
+ names; for example, of the 800 or so characters in the standard
+ roff character map included in the distribution, only around 300
+ have ISO entity names.
+ </simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>string</term>
+ <listitem>
+ <simpara>a string representing an roff/groff escape-code (with
+ "@esc@" used in place of the backslash), or a simple ASCII
+ string; all characters in the roff character map have this
+ attribute</simpara>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<para>The value of <parameter>man.charmap.subset.profile</parameter>
+is evaluated as an XPath expression at run-time to select a portion of
+the roff character map to use. You can tune the subset used by adding
+or removing parts. For example, if you need to use a wide range of
+mathematical operators in a document, and you want to have them
+converted into roff markup properly, you might add the following:
+
+<literallayout class="monospaced"> @*[local-name() = 'block'] ='MathematicalOperators' </literallayout>
+
+That will cause a additional set of around 67 additional "math"
+characters to be converted into roff markup. </para>
+
+<note>
+<para>Depending on which XSLT engine you use, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>man.charmap.subset.profile</parameter> at run-time. If you
+don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that
+supports <function>dyn:evaluate</function> -- you must either set the
+value of the <parameter>man.charmap.use.subset</parameter> parameter
+to zero and process your documents using the full character map
+instead, or set the value of the
+<parameter>man.charmap.enabled</parameter> parameter to zero instead
+(so that character-map processing is disabled completely.</para>
+</note>
+
+<para>An alternative to using
+<parameter>man.charmap.subset.profile</parameter> is to create your
+own custom character map, and set the value of
+<parameter>man.charmap.uri</parameter> to the URI/filename for
+that. If you use a custom character map, you will probably want to
+include in it just the characters you want to use, and so you will
+most likely also want to set the value of
+<parameter>man.charmap.use.subset</parameter> to zero.</para>
+<para>You can create a
+custom character map by making a copy of the <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map</link> provided in the distribution, and
+then adding to, changing, and/or deleting from that.</para>
+
+<caution>
+<para>If you author your DocBook XML source in UTF-8 or UTF-16
+encoding and aren't sure what OSes or environments your man-page
+output might end up being viewed on, and not sure what version of
+nroff/groff those environments might have, you should be careful about
+what Unicode symbols and special characters you use in your source and
+what parts you add to the value of
+<parameter>man.charmap.subset.profile</parameter>.</para>
+<para>Many of the escape codes used are specific to groff and using
+them may not provide the expected output on an OS or environment that
+uses nroff instead of groff.</para>
+<para>On the other hand, if you intend for your man-page output to be
+viewed only on modern systems (for example, GNU/Linux systems, FreeBSD
+systems, or Cygwin environments) that have a good, up-to-date groff,
+then you can safely include a wide range of Unicode symbols and
+special characters in your UTF-8 or UTF-16 encoded DocBook XML source
+and add any of the supported Unicode block names to the value of
+<parameter>man.charmap.subset.profile</parameter>.</para>
+</caution>
+
+
+<para>For other details, see the documentation for the
+<parameter>man.charmap.use.subset</parameter> parameter.</para>
+
+<refsection id="BlocksAndClasses"><info><title>Supported Unicode block names and "class" values</title></info>
+
+
+ <para>Below is the full list of Unicode block names and "class"
+ values supported in the standard roff stylesheet provided in the
+ distribution, along with a description of which codepoints from the
+ Unicode range corresponding to that block name or block/class
+ combination are supported.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=C1%20Controls%20and%20Latin-1%20Supplement%20(Latin-1%20Supplement)">C1 Controls And Latin-1 Supplement (Latin-1 Supplement)</link> (x00a0 to x00ff)
+ <itemizedlist><info><title>class values</title></info>
+
+ <listitem>
+ <para>symbols</para>
+ </listitem>
+ <listitem>
+ <para>letters</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Latin%20Extended-A">Latin Extended-A</link> (x0100 to x017f, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Spacing%20Modifier%20Letters">Spacing Modifier Letters</link> (x02b0 to x02ee, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Greek%20and%20Coptic">Greek and Coptic</link> (x0370 to x03ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=General%20Punctuation">General Punctuation</link> (x2000 to x206f, partial)
+ <itemizedlist><info><title>class values</title></info>
+
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;start=8192&amp;end=8203">spaces</link></para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;start=8208&amp;end=8213">dashes</link></para>
+ </listitem>
+ <listitem>
+ <para>quotes</para>
+ </listitem>
+ <listitem>
+ <para>daggers</para>
+ </listitem>
+ <listitem>
+ <para>bullets</para>
+ </listitem>
+ <listitem>
+ <para>leaders</para>
+ </listitem>
+ <listitem>
+ <para>primes</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Superscripts%20and%20Subscripts">Superscripts and Subscripts</link> (x2070 to x209f)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Currency%20Symbols">Currency Symbols</link> (x20a0 to x20b1)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Letterlike%20Symbols">Letterlike Symbols</link> (x2100 to x214b)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Number%20Forms">Number Forms</link> (x2150 to x218f)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Arrows">Arrows</link> (x2190 to x21ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Mathematical%20Operators">Mathematical Operators</link> (x2200 to x22ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Control%20Pictures">Control Pictures</link> (x2400 to x243f)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Enclosed%20Alphanumerics">Enclosed Alphanumerics</link> (x2460 to x24ff)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Geometric%20Shapes">Geometric Shapes</link> (x25a0 to x25f7, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Miscellaneous%20Symbols">Miscellaneous Symbols</link> (x2600 to x26ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Dingbats">Dingbats</link> (x2700 to x27be, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Alphabetic%20Presentation%20Forms">Alphabetic Presentation Forms</link> (xfb00 to xfb04 only)</para>
+ </listitem>
+ </itemizedlist>
+</refsection>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.charmap.subset.profile.english">
+<refmeta>
+<refentrytitle>man.charmap.subset.profile.english</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.subset.profile.english</refname>
+<refpurpose>Profile of character map subset</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.charmap.subset.profile.english.frag">
+&lt;xsl:param name="man.charmap.subset.profile.english"&gt;
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ @*[local-name() = 'class'] = 'symbols')
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+ <parameter>man.charmap.use.subset</parameter> parameter is
+ non-zero, and your DocBook source is written in English (that
+ is, if its <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root element
+ in your DocBook source or on the first <tag>refentry</tag>
+ element in your source has the value <literal>en</literal> or if
+ it has no <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute), then the
+ character-map subset specified by the
+ <parameter>man.charmap.subset.profile.english</parameter>
+ parameter is used instead of the full roff character map.</para>
+
+<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute
+ on the root element in your DocBook source or on the first
+ <tag>refentry</tag> element in your source has a value other
+ than <literal>en</literal>, then the character-map subset
+ specified by the
+ <parameter>man.charmap.subset.profile</parameter> parameter is
+ used instead of
+ <parameter>man.charmap.subset.profile.english</parameter>.</para>
+
+<para>The difference between the two subsets is that
+ <parameter>man.charmap.subset.profile</parameter> provides
+ mappings for characters in Western European languages that are
+ not part of the Roman (English) alphabet (ASCII character set).</para>
+
+<para>The value of <parameter>man.charmap.subset.profile.english</parameter>
+is a string representing an XPath expression that matches attribute
+names and values for <tag namespace="http://docbook.sf.net/xmlns/unichar/1.0">output-character</tag> elements in the character map.</para>
+
+<para>For other details, see the documentation for the
+<parameter>man.charmap.subset.profile.english</parameter> and
+<parameter>man.charmap.use.subset</parameter> parameters.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.string.subst.map.local.pre">
+<refmeta>
+<refentrytitle>man.string.subst.map.local.pre</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map.local.pre</refname>
+<refpurpose>Specifies &#8220;local&#8221; string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.string.subst.map.local.pre.frag">
+ &lt;xsl:param name="man.string.subst.map.local.pre"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Use the <parameter>man.string.subst.map.local.pre</parameter>
+parameter to specify any &#8220;local&#8221; string substitutions to perform over
+the entire roff source for each man page <emphasis>before</emphasis>
+performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para>
+
+<para>For details about the format of this parameter, see the
+documentation for the <parameter>man.string.subst.map</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.string.subst.map">
+<refmeta>
+<refentrytitle>man.string.subst.map</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map</refname>
+<refpurpose>Specifies a set of string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.string.subst.map.frag">
+&lt;xsl:param name="man.string.subst.map"&gt;
+
+ &lt;!-- * remove no-break marker at beginning of line (stylesheet artifact) --&gt;
+ &lt;ss:substitution oldstring="&#9618;&#9600;" newstring="&#9618;"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space --&gt;
+ &lt;ss:substitution oldstring="&#9600;" newstring="\ "&gt;&lt;/ss:substitution&gt;
+
+ &lt;!-- ==================================================================== --&gt;
+
+ &lt;!-- * squeeze multiple newlines before a roff request --&gt;
+ &lt;ss:substitution oldstring="
+
+." newstring="
+."&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * remove any .sp instances that directly precede a .PP --&gt;
+ &lt;ss:substitution oldstring=".sp
+.PP" newstring=".PP"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * remove any .sp instances that directly follow a .PP --&gt;
+ &lt;ss:substitution oldstring=".sp
+.sp" newstring=".sp"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * squeeze multiple .sp instances into a single .sp--&gt;
+ &lt;ss:substitution oldstring=".PP
+.sp" newstring=".PP"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * squeeze multiple newlines after start of no-fill (verbatim) env. --&gt;
+ &lt;ss:substitution oldstring=".nf
+
+" newstring=".nf
+"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * squeeze multiple newlines after REstoring margin --&gt;
+ &lt;ss:substitution oldstring=".RE
+
+" newstring=".RE
+"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * U+2591 is a marker we add before and after every Parameter in --&gt;
+ &lt;!-- * Funcprototype output --&gt;
+ &lt;ss:substitution oldstring="&#9617;" newstring=" "&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * U+2592 is a marker we add for the newline before output of &lt;sbr&gt;; --&gt;
+ &lt;ss:substitution oldstring="&#9618;" newstring="
+"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * Now deal with some other characters that are added by the --&gt;
+ &lt;!-- * stylesheets during processing. --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * bullet --&gt;
+ &lt;ss:substitution oldstring="&#8226;" newstring="\(bu"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * left double quote --&gt;
+ &lt;ss:substitution oldstring="&#8220;" newstring="\(lq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * right double quote --&gt;
+ &lt;ss:substitution oldstring="&#8221;" newstring="\(rq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * left single quote --&gt;
+ &lt;ss:substitution oldstring="&#8216;" newstring="\(oq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * right single quote --&gt;
+ &lt;ss:substitution oldstring="&#8217;" newstring="\(cq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * copyright sign --&gt;
+ &lt;ss:substitution oldstring="&#169;" newstring="\(co"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * registered sign --&gt;
+ &lt;ss:substitution oldstring="&#174;" newstring="\(rg"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * ...servicemark... --&gt;
+ &lt;!-- * There is no groff equivalent for it. --&gt;
+ &lt;ss:substitution oldstring="&#8480;" newstring="(SM)"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * ...trademark... --&gt;
+ &lt;!-- * We don't do "\(tm" because for console output, --&gt;
+ &lt;!-- * groff just renders that as "tm"; that is: --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * Product&amp;#x2122; -&gt; Producttm --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * So we just make it to "(TM)" instead; thus: --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * Product&amp;#x2122; -&gt; Product(TM) --&gt;
+ &lt;ss:substitution oldstring="&#8482;" newstring="(TM)"&gt;&lt;/ss:substitution&gt;
+
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.string.subst.map</parameter> parameter
+contains <link linkend="map">a map</link> that specifies a set of
+string substitutions to perform over the entire roff source for each
+man page, either just before generating final man-page output (that
+is, before writing man-page files to disk) or, if the value of the
+<parameter>man.charmap.enabled</parameter> parameter is non-zero,
+before applying the roff character map.</para>
+
+<para>You can use <parameter>man.string.subst.map</parameter> as a
+&#8220;lightweight&#8221; character map to perform &#8220;essential&#8221; substitutions --
+that is, substitutions that are <emphasis>always</emphasis> performed,
+even if the value of the <parameter>man.charmap.enabled</parameter>
+parameter is zero. For example, you can use it to replace quotation
+marks or other special characters that are generated by the DocBook
+XSL stylesheets for a particular locale setting (as opposed to those
+characters that are actually in source XML documents), or to replace
+any special characters that may be automatically generated by a
+particular customization of the DocBook XSL stylesheets.</para>
+
+<warning>
+ <para>Do you not change value of the
+ <parameter>man.string.subst.map</parameter> parameter unless you are
+ sure what you are doing. First consider adding your
+ string-substitution mappings to either or both of the following
+ parameters:
+ <variablelist>
+ <varlistentry>
+ <term><parameter>man.string.subst.map.local.pre</parameter></term>
+ <listitem><para>applied before
+ <parameter>man.string.subst.map</parameter></para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>man.string.subst.map.local.post</parameter></term>
+ <listitem><para>applied after
+ <parameter>man.string.subst.map</parameter></para></listitem>
+ </varlistentry>
+ </variablelist>
+ By default, both of those parameters contain no
+ string substitutions. They are intended as a means for you to
+ specify your own local string-substitution mappings.</para>
+
+ <para>If you remove any of default mappings from the value of the
+ <parameter>man.string.subst.map</parameter> parameter, you are
+ likely to end up with broken output. And be very careful about adding
+ anything to it; it&#8217;s used for doing string substitution over the
+ entire roff source of each man page &#8211; it causes target strings to be
+ replaced in roff requests and escapes, not just in the visible
+ contents of the page.</para>
+
+</warning>
+
+<refsection id="map">
+ <info>
+ <title>Contents of the substitution map</title>
+ </info>
+ <para>The string-substitution map contains one or more
+ <tag>ss:substitution</tag> elements, each of which has two
+ attributes:
+ <variablelist>
+ <varlistentry>
+ <term>oldstring</term>
+ <listitem>
+ <simpara>string to replace</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>newstring</term>
+ <listitem>
+ <simpara>string with which to replace <tag class="attribute">oldstring</tag></simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ It may also include XML comments (that is, delimited with
+ "<literal>&lt;!--</literal>" and "<literal>--&gt;</literal>").
+ </para>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.string.subst.map.local.post">
+<refmeta>
+<refentrytitle>man.string.subst.map.local.post</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map.local.post</refname>
+<refpurpose>Specifies &#8220;local&#8221; string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.string.subst.map.local.post.frag">
+&lt;xsl:param name="man.string.subst.map.local.post"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Use the <parameter>man.string.subst.map.local.post</parameter>
+parameter to specify any &#8220;local&#8221; string substitutions to perform over
+the entire roff source for each man page <emphasis>after</emphasis>
+performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para>
+
+<para>For details about the format of this parameter, see the
+documentation for the <parameter>man.string.subst.map</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+ </reference><reference id="refmeta" xml:base="../manpages/param.xml">
+ <title>Refentry metadata gathering</title>
+<refentry version="5.0" id="refentry.meta.get.quietly">
+<refmeta>
+<refentrytitle>refentry.meta.get.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.meta.get.quietly</refname>
+<refpurpose>Suppress notes and warnings when gathering refentry metadata?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.meta.get.quietly.frag">
+&lt;xsl:param name="refentry.meta.get.quietly" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), notes and warnings about &#8220;missing&#8221; markup
+are generated during gathering of refentry metadata. If non-zero, the
+metadata is gathered &#8220;quietly&#8221; -- that is, the notes and warnings are
+suppressed.</para>
+
+<tip>
+ <para>If you are processing a large amount of <tag>refentry</tag>
+ content, you may be able to speed up processing significantly by
+ setting a non-zero value for
+ <parameter>refentry.meta.get.quietly</parameter>.</para>
+</tip>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.date.profile">
+<refmeta>
+<refentrytitle>refentry.date.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.date.profile</refname>
+<refpurpose>Specifies profile for refentry "date" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.date.profile.frag">
+&lt;xsl:param name="refentry.date.profile"&gt;
+ (($info[//date])[last()]/date)[1]|
+ (($info[//pubdate])[last()]/pubdate)[1]
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.date.profile</parameter> is a
+string representing an XPath expression. It is evaluated at run-time
+and used only if <parameter>refentry.date.profile.enabled</parameter>
+is non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering
+logic "hard coded" into the stylesheets is used.</para>
+
+<para> The <literal>man(7)</literal> man page describes this content
+as "the date of the last revision". In man pages, it is the content
+that is usually displayed in the center footer.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.date.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.date.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.date.profile.enabled</refname>
+<refpurpose>Enable refentry "date" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.date.profile.enabled.frag">
+&lt;xsl:param name="refentry.date.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.date.profile.enabled</parameter> is non-zero, then
+during <tag>refentry</tag> metadata gathering, the info profile
+specified by the customizable
+<parameter>refentry.date.profile</parameter> parameter is used.</para>
+
+<para>If instead the value of
+<parameter>refentry.date.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "date" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "date" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.date.profile.enabled</parameter> and adjusting the
+value of <parameter>refentry.date.profile</parameter> to cause correct
+data to be gathered. </para>
+
+<para>Note that the terms "source" and "date" have special meanings in
+this context. For details, see the documentation for the
+<parameter>refentry.date.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.manual.profile">
+<refmeta>
+<refentrytitle>refentry.manual.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.profile</refname>
+<refpurpose>Specifies profile for refentry "manual" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.manual.profile.frag">
+&lt;xsl:param name="refentry.manual.profile"&gt;
+ (($info[//title])[last()]/title)[1]|
+ ../title/node()
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.manual.profile</parameter> is
+a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.manual.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>In man pages, this content is usually displayed in the middle of
+the header of the page. The <literal>man(7)</literal> man page
+describes this as "the title of the manual (e.g., <citetitle>Linux
+Programmer's Manual</citetitle>)". Here are some examples from
+existing man pages:
+<itemizedlist>
+ <listitem>
+ <para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+ </listitem>
+</itemizedlist>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.manual.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.manual.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.profile.enabled</refname>
+<refpurpose>Enable refentry "manual" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.manual.profile.enabled.frag">
+&lt;xsl:param name="refentry.manual.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.manual.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.manual.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.manual.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "manual" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "manual" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.manual.profile.enabled</parameter> and adjusting
+the value of <parameter>refentry.manual.profile</parameter> to cause
+correct data to be gathered. </para>
+
+<para>Note that the term "manual" has a special meanings in this
+context. For details, see the documentation for the
+<parameter>refentry.manual.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.source.name.suppress">
+<refmeta>
+<refentrytitle>refentry.source.name.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.suppress</refname>
+<refpurpose>Suppress "name" part of refentry "source" contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.source.name.suppress.frag">
+&lt;xsl:param name="refentry.source.name.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.source.name.suppress</parameter> is non-zero, then
+during <tag>refentry</tag> metadata gathering, no "source name" data
+is added to the <tag>refentry</tag> "source" contents. Instead (unless
+<parameter>refentry.version.suppress</parameter> is also non-zero),
+only "version" data is added to the "source" contents.</para>
+
+<para>If you find that the <tag>refentry</tag> metadata gathering
+mechanism is causing unwanted "source name" data to show up in your
+output -- for example, in the footer (or possibly header) of a man
+page -- then you might consider setting a non-zero value for
+<parameter>refentry.source.name.suppress</parameter>.</para>
+
+<para>Note that the terms "source", "source name", and "version" have
+special meanings in this context. For details, see the documentation
+for the <parameter>refentry.source.name.profile</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.source.name.profile">
+<refmeta>
+<refentrytitle>refentry.source.name.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.profile</refname>
+<refpurpose>Specifies profile for refentry "source name" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.source.name.profile.frag">
+&lt;xsl:param name="refentry.source.name.profile"&gt;
+ (($info[//productname])[last()]/productname)[1]|
+ (($info[//corpname])[last()]/corpname)[1]|
+ (($info[//corpcredit])[last()]/corpcredit)[1]|
+ (($info[//corpauthor])[last()]/corpauthor)[1]|
+ (($info[//orgname])[last()]/orgname)[1]|
+ (($info[//publishername])[last()]/publishername)[1]
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.source.name.profile</parameter>
+is a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.source.name.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>A "source name" is one part of a (potentially) two-part
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+"source" field. In man pages, it is usually displayed in the left
+footer of the page. It typically indicates the software system or
+product that the item documented in the man page belongs to. The
+<literal>man(7)</literal> man page describes it as "the source of
+the command", and provides the following examples:
+<itemizedlist>
+ <listitem>
+ <para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+ </listitem>
+ <listitem>
+ <para>For system calls, use the version of the kernel that you
+ are currently looking at: Linux 0.99.11.</para>
+ </listitem>
+ <listitem>
+ <para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+ </listitem>
+</itemizedlist>
+</para>
+
+<para>In practice, there are many pages that simply have a Version
+number in the "source" field. So, it looks like what we have is a
+two-part field,
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>,
+where:
+<variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+ <para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+ <para>version number</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+Each part is optional. If the <replaceable>Name</replaceable> is a
+product name, then the <replaceable>Version</replaceable> is probably
+the version of the product. Or there may be no
+<replaceable>Name</replaceable>, in which case, if there is a
+<replaceable>Version</replaceable>, it is probably the version
+of the item itself, not the product it is part of. Or, if the
+<replaceable>Name</replaceable> is an organization name, then there
+probably will be no <replaceable>Version</replaceable>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.source.name.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.source.name.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.profile.enabled</refname>
+<refpurpose>Enable refentry "source name" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.source.name.profile.enabled.frag">
+&lt;xsl:param name="refentry.source.name.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.source.name.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.source.name.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.source.name.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "source name" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "source name" data to
+show up in your output, then consider setting a non-zero value for
+<parameter>refentry.source.name.profile.enabled</parameter> and
+adjusting the value of
+<parameter>refentry.source.name.profile</parameter> to cause correct
+data to be gathered. </para>
+
+<para>Note that the terms "source" and "source name" have special
+meanings in this context. For details, see the documentation for the
+<parameter>refentry.source.name.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.version.suppress">
+<refmeta>
+<refentrytitle>refentry.version.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.suppress</refname>
+<refpurpose>Suppress "version" part of refentry "source" contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.version.suppress.frag">
+&lt;xsl:param name="refentry.version.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refentry.version.suppress</parameter>
+is non-zero, then during <tag>refentry</tag> metadata gathering, no
+"version" data is added to the <tag>refentry</tag> "source"
+contents. Instead (unless
+<parameter>refentry.source.name.suppress</parameter> is also
+non-zero), only "source name" data is added to the "source"
+contents.</para>
+
+<para>If you find that the <tag>refentry</tag> metadata gathering
+mechanism is causing unwanted "version" data to show up in your output
+-- for example, in the footer (or possibly header) of a man page --
+then you might consider setting a non-zero value for
+<parameter>refentry.version.suppress</parameter>.</para>
+
+<para>Note that the terms "source", "source name", and "version" have
+special meanings in this context. For details, see the documentation
+for the <parameter>refentry.source.name.profile</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.version.profile">
+<refmeta>
+<refentrytitle>refentry.version.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.profile</refname>
+<refpurpose>Specifies profile for refentry "version" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.version.profile.frag">
+&lt;xsl:param name="refentry.version.profile"&gt;
+ (($info[//productnumber])[last()]/productnumber)[1]|
+ (($info[//edition])[last()]/edition)[1]|
+ (($info[//releaseinfo])[last()]/releaseinfo)[1]
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.version.profile</parameter> is
+a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.version.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>A "source.name" is one part of a (potentially) two-part
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+"source" field. For more details, see the documentation for the
+<parameter>refentry.source.name.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.version.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.version.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.profile.enabled</refname>
+<refpurpose>Enable refentry "version" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.version.profile.enabled.frag">
+&lt;xsl:param name="refentry.version.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.version.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.version.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.version.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "version" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "version" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.version.profile.enabled</parameter> and adjusting
+the value of <parameter>refentry.version.profile</parameter> to cause
+correct data to be gathered. </para>
+
+<para>Note that the terms "source" and "version" have special
+meanings in this context. For details, see the documentation for the
+<parameter>refentry.version.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.manual.fallback.profile">
+<refmeta>
+<refentrytitle>refentry.manual.fallback.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.fallback.profile</refname>
+<refpurpose>Specifies profile of "fallback" for refentry "manual" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.manual.fallback.profile.frag">
+&lt;xsl:param name="refentry.manual.fallback.profile"&gt;
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>refentry.manual.fallback.profile</parameter> is a string
+representing an XPath expression. It is evaluated at run-time and
+used only if no "manual" data can be found by other means (that is,
+either using the <tag>refentry</tag> metadata-gathering logic "hard
+coded" in the stylesheets, or the value of
+<parameter>refentry.manual.profile</parameter>, if it is
+enabled).</para>
+
+<important>
+<para>Depending on which XSLT engine you run, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>refentry.manual.fallback.profile</parameter> at
+run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
+XSLT engine that supports <function>dyn:evaluate</function> -- you
+must manually disable fallback processing by setting an empty value
+for the <parameter>refentry.manual.fallback.profile</parameter>
+parameter.</para>
+</important>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="refentry.source.fallback.profile">
+<refmeta>
+<refentrytitle>refentry.source.fallback.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.fallback.profile</refname>
+<refpurpose>Specifies profile of "fallback" for refentry "source" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="refentry.source.fallback.profile.frag">
+&lt;xsl:param name="refentry.source.fallback.profile"&gt;
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>refentry.source.fallback.profile</parameter> is a string
+representing an XPath expression. It is evaluated at run-time and used
+only if no "source" data can be found by other means (that is, either
+using the <tag>refentry</tag> metadata-gathering logic "hard coded" in
+the stylesheets, or the value of the
+<parameter>refentry.source.name.profile</parameter> and
+<parameter>refentry.version.profile</parameter> parameters, if those
+are enabled).</para>
+
+<important>
+<para>Depending on which XSLT engine you run, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>refentry.source.fallback.profile</parameter> at
+run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
+XSLT engine that supports <function>dyn:evaluate</function> -- you
+must manually disable fallback processing by setting an empty value
+for the <parameter>refentry.source.fallback.profile</parameter>
+parameter.</para>
+</important>
+
+</refsection>
+</refentry>
+
+ </reference><reference id="th" xml:base="../manpages/param.xml">
+ <title>Page header/footer</title>
+<refentry version="5.0" id="man.th.extra1.suppress">
+<refmeta>
+<refentrytitle>man.th.extra1.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra1.suppress</refname>
+<refpurpose>Suppress extra1 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.th.extra1.suppress.frag">
+&lt;xsl:param name="man.th.extra1.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra1.suppress</parameter> is
+non-zero, then the <literal>extra1</literal> part of the
+<literal>.TH</literal> title line header/footer is suppressed.</para>
+
+<para>The content of the <literal>extra1</literal> field is almost
+always displayed in the center footer of the page and is, universally,
+a date.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.th.extra2.suppress">
+<refmeta>
+<refentrytitle>man.th.extra2.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra2.suppress</refname>
+<refpurpose>Suppress extra2 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.th.extra2.suppress.frag">
+&lt;xsl:param name="man.th.extra2.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra2.suppress</parameter> is
+non-zero, then the <literal>extra2</literal> part of the
+<literal>.TH</literal> title line header/footer is suppressed.</para>
+
+<para>The content of the <literal>extra2</literal> field is usually
+displayed in the left footer of the page and is typically "source"
+data, often in the form
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>;
+for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal>
+man page).</para>
+
+<note>
+ <para>You can use the
+ <parameter>refentry.source.name.suppress</parameter> and
+ <parameter>refentry.version.suppress</parameter> parameters to
+ independently suppress the <replaceable>Name</replaceable> and
+ <replaceable>Version</replaceable> parts of the
+ <literal>extra2</literal> field.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.th.extra3.suppress">
+<refmeta>
+<refentrytitle>man.th.extra3.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra3.suppress</refname>
+<refpurpose>Suppress extra3 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.th.extra3.suppress.frag">
+&lt;xsl:param name="man.th.extra3.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra3.suppress</parameter> is
+non-zero, then the <literal>extra3</literal> part of the
+<literal>.TH</literal> title line header/footer is
+suppressed.</para>
+
+<para>The content of the <literal>extra3</literal> field is usually
+displayed in the middle header of the page and is typically a "manual
+name"; for example, "GTK+ User's Manual" (from the
+<literal>gtk-options(7)</literal> man page).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.th.title.max.length">
+<refmeta>
+<refentrytitle>man.th.title.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.title.max.length</refname>
+<refpurpose>Maximum length of title in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.th.title.max.length.frag">
+&lt;xsl:param name="man.th.title.max.length"&gt;20&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the title part of the
+man-page <literal>.TH</literal> title line header/footer. If the title
+exceeds the maxiumum specified, it is truncated down to the maximum
+permitted length.</para>
+
+<refsection><info><title>Details</title></info>
+
+
+<para>Every man page generated using the DocBook stylesheets has a
+title line, specified using the <literal>TH</literal> roff
+macro. Within that title line, there is always, at a minimum, a title,
+followed by a section value (representing a man "section" -- usually
+just a number).</para>
+
+<para>The title and section are displayed, together, in the visible
+header of each page. Where in the header they are displayed depends on
+OS the man page is viewed on, and on what version of nroff/groff/man
+is used for viewing the page. But, at a minimum and across all
+systems, the title and section are displayed on the right-hand column
+of the header. On many systems -- those with a modern groff, including
+Linux systems -- they are displayed twice: both in the left and right
+columns of the header.</para>
+
+<para>So if the length of the title exceeds a certain percentage of
+the column width in which the page is viewed, the left and right
+titles can end up overlapping, making them unreadable, or breaking to
+another line, which doesn't look particularly good.</para>
+
+<para>So the stylesheets provide the
+<parameter>man.th.title.max.length</parameter> parameter as a means
+for truncating titles that exceed the maximum length that can be
+viewing properly in a page header.</para>
+
+<para>The default value is reasonable but somewhat arbitrary. If you
+have pages with long titles, you may want to experiment with changing
+the value in order to achieve the correct aesthetic results.</para>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.th.extra2.max.length">
+<refmeta>
+<refentrytitle>man.th.extra2.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra2.max.length</refname>
+<refpurpose>Maximum length of extra2 in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.th.extra2.max.length.frag">
+&lt;xsl:param name="man.th.extra2.max.length"&gt;30&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the
+<literal>extra2</literal> part of the man-page part of the
+<literal>.TH</literal> title line header/footer. If the
+<literal>extra2</literal> content exceeds the maxiumum specified, it
+is truncated down to the maximum permitted length.</para>
+
+<para>The content of the <literal>extra2</literal> field is usually
+displayed in the left footer of the page and is typically "source"
+data indicating the software system or product that the item
+documented in the man page belongs to, often in the form
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>;
+for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal>
+man page).</para>
+
+<para>The default value for this parameter is reasonable but somewhat
+arbitrary. If you are processing pages with long "source" information,
+you may want to experiment with changing the value in order to achieve
+the correct aesthetic results.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.th.extra3.max.length">
+<refmeta>
+<refentrytitle>man.th.extra3.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra3.max.length</refname>
+<refpurpose>Maximum length of extra3 in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.th.extra3.max.length.frag">
+&lt;xsl:param name="man.th.extra3.max.length"&gt;30&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the
+<literal>extra3</literal> part of the man-page <literal>.TH</literal>
+title line header/footer. If the <literal>extra3</literal> content
+exceeds the maxiumum specified, it is truncated down to the maximum
+permitted length.</para>
+
+<para>The content of the <literal>extra3</literal> field is usually
+displayed in the middle header of the page and is typically a "manual
+name"; for example, "GTK+ User's Manual" (from the
+<literal>gtk-options(7)</literal> man page).</para>
+
+<para>The default value for this parameter is reasonable but somewhat
+arbitrary. If you are processing pages with long "manual names" -- or
+especially if you are processing pages that have both long "title"
+parts (command/function, etc. names) <emphasis>and</emphasis> long
+manual names -- you may want to experiment with changing the value in
+order to achieve the correct aesthetic results.</para>
+</refsection>
+</refentry>
+
+ </reference><reference id="output" xml:base="../manpages/param.xml">
+ <title>Output</title>
+<refentry version="5.0" id="man.output.manifest.enabled">
+ <refmeta>
+ <refentrytitle>man.output.manifest.enabled</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.output.manifest.enabled</refname>
+ <refpurpose>Generate a manifest file?</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting id="man.output.manifest.enabled.frag">&lt;xsl:param name="man.output.manifest.enabled" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>If non-zero, a list of filenames for man pages generated by
+ the stylesheet transformation is written to the file named by the
+ <parameter>man.output.manifest.filename</parameter> parameter.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.manifest.filename">
+ <refmeta>
+ <refentrytitle>man.output.manifest.filename</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.output.manifest.filename</refname>
+ <refpurpose>Name of manifest file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting id="man.output.manifest.filename.frag">&lt;xsl:param name="man.output.manifest.filename"&gt;MAN.MANIFEST&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>The <parameter>man.output.manifest.filename</parameter> parameter
+ specifies the name of the file to which the manpages manifest file
+ is written (if the value of the
+ <parameter>man.output.manifest.enabled</parameter> parameter is
+ non-zero).</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.in.separate.dir">
+<refmeta>
+<refentrytitle>man.output.in.separate.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.in.separate.dir</refname>
+<refpurpose>Output man-page files in separate output directory?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.output.in.separate.dir.frag">
+&lt;xsl:param name="man.output.in.separate.dir" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <literal>man.output.in.separate.dir</literal>
+parameter is non-zero, man-page files are output in a separate
+directory, specified by the <parameter>man.output.base.dir</parameter>
+parameter; otherwise, if the value of
+<literal>man.output.in.separate.dir</literal> is zero, man-page files
+are not output in a separate directory.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.lang.in.name.enabled">
+<refmeta>
+<refentrytitle>man.output.lang.in.name.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.lang.in.name.enabled</refname>
+<refpurpose>Include $LANG value in man-page filename/pathname?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.output.lang.in.name.enabled.frag">
+&lt;xsl:param name="man.output.lang.in.name.enabled" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+ <para>The <parameter>man.output.lang.in.name.enabled</parameter>
+ parameter specifies whether a <literal>$lang</literal> value is
+ included in man-page filenames and pathnames.</para>
+
+ <para>If the value of
+ <parameter>man.output.lang.in.name.enabled</parameter> is non-zero,
+ man-page files are output with the <literal>$lang</literal> value
+ included in their filenames or pathnames as follows;
+
+ <itemizedlist>
+ <listitem>
+ <para>if <parameter>man.output.subdirs.enabled</parameter> is
+ non-zero, each file is output to, e.g., a
+ <filename>man/<replaceable>$lang</replaceable>/man8/foo.8</filename>
+ pathname</para>
+ </listitem>
+ <listitem>
+ <para>if <parameter>man.output.subdirs.enabled</parameter> is
+ zero, each file is output with a
+ <literal>foo.<replaceable>$lang</replaceable>.8</literal>
+ filename</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.base.dir">
+<refmeta>
+<refentrytitle>man.output.base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.base.dir</refname>
+<refpurpose>Specifies separate output directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.output.base.dir.frag">&lt;xsl:param name="man.output.base.dir"&gt;man/&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.output.base.dir</parameter> parameter
+specifies the base directory into which man-page files are output. The
+<parameter>man.output.subdirs.enabled</parameter> parameter controls
+whether the files are output in subdirectories within the base
+directory.</para>
+
+<note>
+ <para>The values of the <parameter>man.output.base.dir</parameter>
+ and <parameter>man.output.subdirs.enabled</parameter> parameters are
+ used only if the value of
+ <parameter>man.output.in.separate.dir</parameter> parameter is
+ non-zero. If the value of the
+ <parameter>man.output.in.separate.dir</parameter> is zero, man-page
+ files are not output in a separate directory.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.subdirs.enabled">
+<refmeta>
+<refentrytitle>man.output.subdirs.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.subdirs.enabled</refname>
+<refpurpose>Output man-page files in subdirectories within base output directory?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.output.subdirs.enabled.frag">
+&lt;xsl:param name="man.output.subdirs.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.output.subdirs.enabled</parameter> parameter
+controls whether man-pages files are output in subdirectories within
+the base directory specified by the directory specified by the
+<parameter>man.output.base.dir</parameter> parameter.</para>
+
+<note>
+ <para>The values of the <parameter>man.output.base.dir</parameter>
+ and <parameter>man.output.subdirs.enabled</parameter> parameters are
+ used only if the value of
+ <parameter>man.output.in.separate.dir</parameter> parameter is
+ non-zero. If the value of the
+ <parameter>man.output.in.separate.dir</parameter> is zero, man-page
+ files are not output in a separate directory.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.quietly">
+<refmeta>
+<refentrytitle>man.output.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.quietly</refname>
+<refpurpose>Suppress filename messages emitted when generating output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.output.quietly.frag">
+&lt;xsl:param name="man.output.quietly" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), for each man-page file created, a message
+with the name of the file is emitted. If non-zero, the files are
+output "quietly" -- that is, the filename messages are
+suppressed.</para>
+
+<tip>
+ <para>If you are processing a large amount of <tag>refentry</tag>
+ content, you may be able to speed up processing significantly by
+ setting a non-zero value for
+ <parameter>man.output.quietly</parameter>.</para>
+</tip>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.encoding">
+<refmeta>
+<refentrytitle>man.output.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.encoding</refname>
+<refpurpose>Encoding used for man-page output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.output.encoding.frag">
+&lt;xsl:param name="man.output.encoding"&gt;UTF-8&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the encoding to use for files generated
+by the manpages stylesheet. Not all processors support specification
+of this parameter.</para>
+
+<important>
+ <para>If the value of the <parameter>man.charmap.enabled</parameter>
+ parameter is non-zero (the default), keeping the
+ <parameter>man.output.encoding</parameter> parameter at its default
+ value (<literal>UTF-8</literal>) or setting it to
+ <literal>UTF-16</literal> <emphasis role="bold">does not cause your
+ man pages to be output in raw UTF-8 or UTF-16</emphasis> -- because
+ any Unicode characters for which matches are found in the enabled
+ character map will be replaced with roff escape sequences before the
+ final man-page files are generated.</para>
+
+ <para>So if you want to generate "real" UTF-8 man pages, without any
+ character substitution being performed on your content, you need to
+ set <parameter>man.charmap.enabled</parameter> to zero (which will
+ completely disable character-map processing). </para>
+
+ <para>You may also need to set
+ <parameter>man.charmap.enabled</parameter> to zero if you want to
+ output man pages in an encoding other than <literal>UTF-8</literal>
+ or <literal>UTF-16</literal>. Character-map processing is based on
+ Unicode character values and may not work with other output
+ encodings.</para>
+</important>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.output.better.ps.enabled">
+<refmeta>
+<refentrytitle>man.output.better.ps.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.better.ps.enabled</refname>
+<refpurpose>Enable enhanced print/PostScript output?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting id="man.output.better.ps.enabled.frag">
+&lt;xsl:param name="man.output.better.ps.enabled"&gt;0&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.output.better.ps.enabled</parameter> parameter is
+non-zero, certain markup is embedded in each generated man page
+such that PostScript output from the <command>man -Tps</command>
+command for that page will include a number of enhancements
+designed to improve the quality of that output.</para>
+
+<para>If <parameter>man.output.better.ps.enabled</parameter> is
+zero (the default), no such markup is embedded in generated man
+pages, and no enhancements are included in the PostScript
+output generated from those man pages by the <command>man
+ -Tps</command> command.</para>
+
+<warning>
+ <para>The enhancements provided by this parameter rely on
+ features that are specific to groff (GNU troff) and that are
+ not part of &#8220;classic&#8221; AT&amp;T troff or any of its
+ derivatives. Therefore, any man pages you generate with this
+ parameter enabled will be readable only on systems on which
+ the groff (GNU troff) program is installed, such as GNU/Linux
+ systems. The pages <emphasis role="bold">will not not be
+ readable on systems on with the classic troff (AT&amp;T
+ troff) command is installed</emphasis>.</para>
+</warning>
+
+<para>The value of this parameter only affects PostScript output
+ generated from the <command>man</command> command. It has no
+ effect on output generated using the FO backend.</para>
+
+<tip>
+ <para>You can generate PostScript output for any man page by
+ running the following command:</para>
+ <programlisting> man <replaceable>FOO</replaceable> -Tps &gt; <replaceable>FOO</replaceable>.ps</programlisting>
+ <para>You can then generate PDF output by running the following
+ command:</para>
+ <programlisting> ps2pdf <replaceable>FOO</replaceable>.ps</programlisting>
+</tip>
+
+</refsection>
+</refentry>
+
+ </reference><reference id="other" xml:base="../manpages/param.xml">
+ <title>Other</title>
+<refentry version="5.0" id="man.table.footnotes.divider">
+<refmeta>
+<refentrytitle>man.table.footnotes.divider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.table.footnotes.divider</refname>
+<refpurpose>Specifies divider string that appears before table footnotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.table.footnotes.divider.frag">
+&lt;xsl:param name="man.table.footnotes.divider"&gt;----&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In each table that contains footenotes, the string specified by
+the <parameter>man.table.footnotes.divider</parameter> parameter is
+output before the list of footnotes for the table.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.subheading.divider.enabled">
+<refmeta>
+<refentrytitle>man.subheading.divider.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.subheading.divider.enabled</refname>
+<refpurpose>Add divider comment to roff source before/after subheadings?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.subheading.divider.enabled.frag">
+&lt;xsl:param name="man.subheading.divider.enabled"&gt;0&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.subheading.divider.enabled</parameter> parameter is
+non-zero, the contents of the
+<parameter>man.subheading.divider</parameter> parameter are used to
+add a "divider" before and after subheadings in the roff
+output. <emphasis role="bold">The divider is not visisble in the
+rendered man page</emphasis>; it is added as a comment, in the source,
+simply for the purpose of increasing reability of the source.</para>
+
+<para>If <parameter>man.subheading.divider.enabled</parameter> is zero
+(the default), the subheading divider is suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="man.subheading.divider">
+<refmeta>
+<refentrytitle>man.subheading.divider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.subheading.divider</refname>
+<refpurpose>Specifies string to use as divider comment before/after subheadings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="man.subheading.divider.frag">
+&lt;xsl:param name="man.subheading.divider"&gt;========================================================================&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.subheading.divider.enabled</parameter> parameter is
+non-zero, the contents of the
+<parameter>man.subheading.divider</parameter> parameter are used to
+add a "divider" before and after subheadings in the roff
+output. <emphasis role="bold">The divider is not visisble in the
+rendered man page</emphasis>; it is added as a comment, in the source,
+simply for the purpose of increasing reability of the source.</para>
+
+<para>If <parameter>man.subheading.divider.enabled</parameter> is zero
+(the default), the subheading divider is suppressed.</para>
+
+</refsection>
+</refentry>
+
+ </reference>
+ </part>
+ <part id="roundtrip">
+ <?dbhtml dir="roundtrip"?>
+ <?dbhtml filename="index.html"?>
+ <title xml:base="../roundtrip/param.xml">Roundtrip Parameter Reference</title>
+ <partintro id="roundtripintro">
+
+ <para xml:base="../roundtrip/param.xml">This is reference documentation for all user-configurable
+ parameters in the DocBook &#8220;Roundtrip&#8221; Stylesheets (for
+ transforming DocBook to WordML, OpenDocument, and Apple Pages,
+ and for converting from those formats back to DocBook).</para>
+
+ </partintro>
+
+
+<refentry version="5.0" id="wordml.template" xml:base="../roundtrip/param.xml">
+<refmeta>
+<refentrytitle>wordml.template</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>wordml.template</refname>
+<refpurpose>Specify the template WordML document</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="wordml.template.frag">
+&lt;xsl:param name="wordml.template"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>wordml.template</parameter> parameter specifies a WordML document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored.</para>
+
+<para>A template document is used in order to allow maintenance of the paragraph and character styles to be done using Word itself, rather than these XSL stylesheets.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="pages.template" xml:base="../roundtrip/param.xml">
+<refmeta>
+<refentrytitle>pages.template</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pages.template</refname>
+<refpurpose>Specify the template Pages document</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="pages.template.frag">
+&lt;xsl:param name="pages.template"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>pages.template</parameter> parameter specifies a Pages (the Apple word processing application) document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored.</para>
+
+<para>A template document is used in order to allow maintenance of the paragraph and character styles to be done using Pages itself, rather than these XSL stylesheets.</para>
+
+</refsection>
+</refentry>
+
+
+ </part>
+ <part id="slides"><title>Slides Parameter Reference</title>
+ <?dbhtml dir="slides"?>
+ <?dbhtml filename="index.html"?>
+ <partintro id="slidesintro">
+ <para>This is reference documentation for all
+ user-configurable parameters in the DocBook XSL Slides
+ stylesheets (for generating HTML and PDF slide
+ presentations).</para>
+ <note>
+ <para>The Slides stylesheet for HTML output is a
+ customization layer of the DocBook XSL HTML
+ stylesheet; the Slides stylesheet for FO output is a
+ customization layer of the DocBook XSL FO stylesheet.
+ Therefore, in addition to the slides-specific
+ parameters listed in this section, you can also use a
+ number of <link xlink:href="../html">HTML stylesheet
+ parameters</link> and <link xlink:href="../fo">FO
+ stylesheet parameters</link> to control Slides
+ output.</para>
+ </note>
+ </partintro>
+ <reference id="html" xml:base="../slides/html/param.xml">
+<title>HTML: General Parameters</title>
+<refentry version="5.0" id="keyboard.nav">
+<refmeta>
+<refentrytitle>keyboard.nav</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keyboard.nav</refname>
+<refpurpose>Enable keyboard navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="keyboard.nav.frag">
+&lt;xsl:param name="keyboard.nav" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is added to the slides to enable keyboard
+navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves
+backward.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="css.stylesheet">
+<refmeta>
+<refentrytitle>css.stylesheet</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.stylesheet</refname>
+<refpurpose>CSS stylesheet for slides</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="css.stylesheet.frag">
+&lt;xsl:param name="css.stylesheet"&gt;slides.css&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the CSS stylesheet used by all the slides. This parameter
+can be set in the source document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>css-stylesheet</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="css.stylesheet.dir">
+<refmeta>
+<refentrytitle>css.stylesheet.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.stylesheet.dir</refname>
+<refpurpose>Default directory for CSS stylesheets</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="css.stylesheet.dir.frag">
+&lt;xsl:param name="css.stylesheet.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the default directory for the CSS stylesheet
+generated on all the slides. This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>css-stylesheet-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="titlefoil.html">
+<refmeta>
+<refentrytitle>titlefoil.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>titlefoil.html</refname>
+<refpurpose>Name of title foil HTML file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="titlefoil.html.frag">
+&lt;xsl:param name="titlefoil.html" select="concat('index', $html.ext)"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename used for the slides titlepage.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.html">
+<refmeta>
+<refentrytitle>toc.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.html</refname>
+<refpurpose>Name of ToC HTML file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.html.frag">
+&lt;xsl:param name="toc.html" select="concat('toc', $html.ext)"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename used for the table of contents page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="foilgroup.toc">
+<refmeta>
+<refentrytitle>foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foilgroup.toc</refname>
+<refpurpose>Put ToC on foilgroup pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="foilgroup.toc.frag">
+&lt;xsl:param name="foilgroup.toc" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a ToC will be placed on foilgroup pages (after any
+other content).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="output.indent">
+<refmeta>
+<refentrytitle>output.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>output.indent</refname>
+<refpurpose>Indent output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="output.indent.frag">
+&lt;xsl:param name="output.indent"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the setting of the <parameter>indent</parameter>
+parameter on the HTML slides. For more information, see the discussion
+of the <tag>xsl:output</tag> element in the XSLT specification.</para>
+<para>Select from <literal>yes</literal> or <literal>no</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="overlay">
+<refmeta>
+<refentrytitle>overlay</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay</refname>
+<refpurpose>Overlay footer navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="overlay.frag">
+&lt;xsl:param name="overlay" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is added to the slides to make the
+bottom navigation appear at the bottom of each page. This option and
+<link linkend="multiframe">multiframe</link> are mutually exclusive.</para>
+
+<para>If this parameter is zero, the bottom navigation simply appears
+below the content of each slide.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="show.foil.number">
+<refmeta>
+<refentrytitle>show.foil.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.foil.number</refname>
+<refpurpose>Show foil number on each foil?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="show.foil.number.frag">
+&lt;xsl:param name="show.foil.number" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, on each slide there will be its number. Currently
+not supported in all output formats.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="frames" xml:base="../slides/html/param.xml">
+<title>HTML: Frames Parameters</title>
+<refentry version="5.0" id="nav.separator">
+<refmeta>
+<refentrytitle>nav.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nav.separator</refname>
+<refpurpose>Output separator between navigation and body?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="nav.separator.frag">
+&lt;xsl:param name="nav.separator" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a separator (<literal>&lt;HR&gt;</literal>) is
+added between the navigation links and the content of each slide.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.row.height">
+<refmeta>
+<refentrytitle>toc.row.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.row.height</refname>
+<refpurpose>Height of ToC rows in dynamic ToCs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.row.height.frag">
+&lt;xsl:param name="toc.row.height"&gt;22&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the height of each row in the table of
+contents. This is only applicable if a <link linkend="dynamic.toc">dynamic ToC</link> is used. You may want to
+adjust this parameter for optimal appearance with the font and image
+sizes selected by your <link linkend="css.stylesheet">CSS
+stylesheet</link>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.bg.color">
+<refmeta>
+<refentrytitle>toc.bg.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.bg.color</refname>
+<refpurpose>Background color for ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.bg.color.frag">
+&lt;xsl:param name="toc.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color used in the ToC frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.bg.color">
+<refmeta>
+<refentrytitle>body.bg.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.bg.color</refname>
+<refpurpose>Background color for body frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.bg.color.frag">
+&lt;xsl:param name="body.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color used in the body column of
+tabular slides.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.width">
+<refmeta>
+<refentrytitle>toc.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.width</refname>
+<refpurpose>Width of ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.width.frag">
+&lt;xsl:param name="toc.width"&gt;250&lt;/xsl:param&gt;
+&lt;!-- Presumably in pixels? --&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the width of the ToC frame in pixels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.hide.show">
+<refmeta>
+<refentrytitle>toc.hide.show</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.hide.show</refname>
+<refpurpose>Enable hide/show button for ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.hide.show.frag">
+&lt;xsl:param name="toc.hide.show" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript (and an additional icon, see
+<link linkend="hidetoc.image">hidetoc.image</link> and
+<link linkend="hidetoc.image">showtoc.image</link>) is added to each slide
+to allow the ToC panel to be <quote>toggled</quote> on each panel.</para>
+
+<note><para>There is a bug in Mozilla 1.0 (at least as of CR3) that causes
+the browser to reload the titlepage when this feature is used.</para></note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="dynamic.toc">
+<refmeta>
+<refentrytitle>dynamic.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dynamic.toc</refname>
+<refpurpose>Dynamic ToCs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="dynamic.toc.frag">
+&lt;xsl:param name="dynamic.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is used to make the ToC panel <quote>dynamic</quote>.
+In a dynamic ToC, each section in the ToC can be expanded and collapsed by
+clicking on the appropriate image.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="active.toc">
+<refmeta>
+<refentrytitle>active.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>active.toc</refname>
+<refpurpose>Active ToCs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="active.toc.frag">
+&lt;xsl:param name="active.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is used to keep the ToC and the current slide
+<quote>in sync</quote>. That is, each time the slide changes, the corresponding
+ToC entry will be underlined.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="overlay.logo">
+<refmeta>
+<refentrytitle>overlay.logo</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay.logo</refname>
+<refpurpose>Logo to overlay on ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="overlay.logo.frag">
+&lt;xsl:param name="overlay.logo"&gt;http://docbook.sourceforge.net/release/buttons/slides-1.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this URI is non-empty, JavaScript is used to overlay the
+specified image on the ToC frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="multiframe">
+<refmeta>
+<refentrytitle>multiframe</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe</refname>
+<refpurpose>Use multiple frames for slide bodies?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="multiframe.frag">
+&lt;xsl:param name="multiframe" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple frames are used for the body of each
+slide. This is one way of forcing the slide navigation elements to
+appear in constant locations. The other way is with <link linkend="overlay">overlays</link>. The <link linkend="overlay"><parameter>overlay</parameter></link> and
+<parameter>multiframe</parameter> parameters are mutually
+exclusive.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="multiframe.top.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.top.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.top.bgcolor</refname>
+<refpurpose>Background color for top navigation frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="multiframe.top.bgcolor.frag">
+&lt;xsl:param name="multiframe.top.bgcolor"&gt;white&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color of the top navigation frame when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="multiframe.bottom.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.bottom.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.bottom.bgcolor</refname>
+<refpurpose>Background color for bottom navigation frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="multiframe.bottom.bgcolor.frag">
+&lt;xsl:param name="multiframe.bottom.bgcolor"&gt;white&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color of the bottom navigation frame when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="multiframe.navigation.height">
+<refmeta>
+<refentrytitle>multiframe.navigation.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.navigation.height</refname>
+<refpurpose>Height of navigation frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="multiframe.navigation.height.frag">
+&lt;xsl:param name="multiframe.navigation.height"&gt;40&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the height of the navigation frames in pixels when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="graphics" xml:base="../slides/html/param.xml">
+<title>HTML: Graphics Parameters</title>
+<refentry version="5.0" id="graphics.dir">
+<refmeta>
+<refentrytitle>graphics.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphics.dir</refname>
+<refpurpose>Graphics directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="graphics.dir.frag">
+&lt;xsl:param name="graphics.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the graphics directory for the navigation components
+generated on all the slides. This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>graphics-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the graphic
+image paths.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="bullet.image">
+<refmeta>
+<refentrytitle>bullet.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bullet.image</refname>
+<refpurpose>Bullet image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bullet.image.frag">
+&lt;xsl:param name="bullet.image"&gt;toc/bullet.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the bullet image used for foils in the
+framed ToC.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="next.image">
+<refmeta>
+<refentrytitle>next.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>next.image</refname>
+<refpurpose>Right-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="next.image.frag">
+&lt;xsl:param name="next.image"&gt;active/nav-next.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the right-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="prev.image">
+<refmeta>
+<refentrytitle>prev.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prev.image</refname>
+<refpurpose>Left-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="prev.image.frag">
+&lt;xsl:param name="prev.image"&gt;active/nav-prev.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the left-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="up.image">
+<refmeta>
+<refentrytitle>up.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>up.image</refname>
+<refpurpose>Up-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="up.image.frag">
+&lt;xsl:param name="up.image"&gt;active/nav-up.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the upward-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="home.image">
+<refmeta>
+<refentrytitle>home.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>home.image</refname>
+<refpurpose>Home image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="home.image.frag">
+&lt;xsl:param name="home.image"&gt;active/nav-home.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the home navigation icon.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.image">
+<refmeta>
+<refentrytitle>toc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.image</refname>
+<refpurpose>ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.image.frag">
+&lt;xsl:param name="toc.image"&gt;active/nav-toc.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the ToC navigation icon.</para>
+
+</refsection>
+</refentry>
+
+
+<refentry version="5.0" id="no.next.image">
+<refmeta>
+<refentrytitle>no.next.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.next.image</refname>
+<refpurpose>Inactive right-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="no.next.image.frag">
+&lt;xsl:param name="no.next.image"&gt;inactive/nav-next.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive right-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="no.prev.image">
+<refmeta>
+<refentrytitle>no.prev.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.prev.image</refname>
+<refpurpose>Inactive left-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="no.prev.image.frag">
+&lt;xsl:param name="no.prev.image"&gt;inactive/nav-prev.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive left-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="no.up.image">
+<refmeta>
+<refentrytitle>no.up.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.up.image</refname>
+<refpurpose>Inactive up-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="no.up.image.frag">
+&lt;xsl:param name="no.up.image"&gt;inactive/nav-up.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive upward-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="no.home.image">
+<refmeta>
+<refentrytitle>no.home.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.home.image</refname>
+<refpurpose>Inactive home image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="no.home.image.frag">
+&lt;xsl:param name="no.home.image"&gt;inactive/nav-home.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive home navigation icon.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="no.toc.image">
+<refmeta>
+<refentrytitle>no.toc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.toc.image</refname>
+<refpurpose>Inactive ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="no.toc.image.frag">
+&lt;xsl:param name="no.toc.image"&gt;inactive/nav-toc.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive ToC navigation icon.</para>
+
+</refsection>
+</refentry>
+
+
+<refentry version="5.0" id="plus.image">
+<refmeta>
+<refentrytitle>plus.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>plus.image</refname>
+<refpurpose>Plus image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="plus.image.frag">
+&lt;xsl:param name="plus.image"&gt;toc/closed.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>plus</quote> image; the image used in a
+<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
+can be expanded.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="minus.image">
+<refmeta>
+<refentrytitle>minus.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>minus.image</refname>
+<refpurpose>Minus image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="minus.image.frag">
+&lt;xsl:param name="minus.image"&gt;toc/open.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>minus</quote> image; the image used in a
+<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
+can be collapsed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="hidetoc.image">
+<refmeta>
+<refentrytitle>hidetoc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hidetoc.image</refname>
+<refpurpose>Hide ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="hidetoc.image.frag">
+&lt;xsl:param name="hidetoc.image"&gt;hidetoc.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>hide ToC</quote> image. This is used
+when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
+enabled.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="showtoc.image">
+<refmeta>
+<refentrytitle>showtoc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>showtoc.image</refname>
+<refpurpose>Show ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="showtoc.image.frag">
+&lt;xsl:param name="showtoc.image"&gt;showtoc.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>show ToC</quote> image. This is used
+when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
+enabled.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="javascript" xml:base="../slides/html/param.xml">
+<title>HTML: JavaScript Parameters</title>
+<refentry version="5.0" id="script.dir">
+<refmeta>
+<refentrytitle>script.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>script.dir</refname>
+<refpurpose>Script directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="script.dir.frag">
+&lt;xsl:param name="script.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the JavaScript source directory for the slides.
+This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>script-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the JavaScript files.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="ua.js">
+<refmeta>
+<refentrytitle>ua.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ua.js</refname>
+<refpurpose>UA JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ua.js.frag">
+&lt;xsl:param name="ua.js"&gt;ua.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the UA JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xbDOM.js">
+<refmeta>
+<refentrytitle>xbDOM.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbDOM.js</refname>
+<refpurpose>xbDOM JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xbDOM.js.frag">
+&lt;xsl:param name="xbDOM.js"&gt;xbDOM.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbDOM JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xbStyle.js">
+<refmeta>
+<refentrytitle>xbStyle.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbStyle.js</refname>
+<refpurpose>xbStyle JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xbStyle.js.frag">
+&lt;xsl:param name="xbStyle.js"&gt;xbStyle.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbStyle JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xbLibrary.js">
+<refmeta>
+<refentrytitle>xbLibrary.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbLibrary.js</refname>
+<refpurpose>xbLibrary JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xbLibrary.js.frag">
+&lt;xsl:param name="xbLibrary.js"&gt;xbLibrary.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbLibrary JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="xbCollapsibleLists.js">
+<refmeta>
+<refentrytitle>xbCollapsibleLists.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbCollapsibleLists.js</refname>
+<refpurpose>xbCollapsibleLists JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="xbCollapsibleLists.js.frag">
+&lt;xsl:param name="xbCollapsibleLists.js"&gt;xbCollapsibleLists.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="overlay.js">
+<refmeta>
+<refentrytitle>overlay.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay.js</refname>
+<refpurpose>Overlay JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="overlay.js.frag">
+&lt;xsl:param name="overlay.js"&gt;overlay.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the overlay JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="slides.js">
+<refmeta>
+<refentrytitle>slides.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.js</refname>
+<refpurpose>Slides overlay file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="slides.js.frag">
+&lt;xsl:param name="slides.js"&gt;slides.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the slides JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="l10n" xml:base="../slides/html/param.xml">
+<title>HTML: Localization Parameters</title>
+<refentry version="5.0" id="text.home">
+<refmeta>
+<refentrytitle>text.home</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.home</refname>
+<refpurpose>Home</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="text.home.frag">
+&lt;xsl:param name="text.home"&gt;Home&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="text.toc">
+<refmeta>
+<refentrytitle>text.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.toc</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="text.toc.frag">
+&lt;xsl:param name="text.toc"&gt;ToC&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="text.prev">
+<refmeta>
+<refentrytitle>text.prev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.prev</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="text.prev.frag">
+&lt;xsl:param name="text.prev"&gt;Prev&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="text.up">
+<refmeta>
+<refentrytitle>text.up</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.up</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="text.up.frag">
+&lt;xsl:param name="text.up"&gt;Up&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="text.next">
+<refmeta>
+<refentrytitle>text.next</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.next</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="text.next.frag">
+&lt;xsl:param name="text.next"&gt;Next&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+
+
+</reference>
+ <reference id="fo" xml:base="../slides/fo/param.xml">
+ <title>FO: General Params</title>
+<refentry version="5.0" id="slide.title.font.family">
+<refmeta>
+<refentrytitle>slide.title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slide.title.font.family</refname>
+<refpurpose>Specifies font family to use for slide titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="slide.title.font.family.frag">
+&lt;xsl:param name="slide.title.font.family"&gt;Helvetica&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font family to use for slides titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="slide.font.family">
+<refmeta>
+<refentrytitle>slide.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slide.font.family</refname>
+<refpurpose>Specifies font family to use for slide bodies</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="slide.font.family.frag">
+&lt;xsl:param name="slide.font.family"&gt;Helvetica&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font family to use for slides bodies.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="foil.title.master">
+<refmeta>
+<refentrytitle>foil.title.master</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.master</refname>
+<refpurpose>Specifies unitless font size to use for foil titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="foil.title.master.frag">
+&lt;xsl:param name="foil.title.master"&gt;36&lt;/xsl:param&gt;
+&lt;!-- Inconsistant use of point size? --&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies a unitless font size to use for foil titles; used in
+combination with the <parameter>foil.title.size</parameter>
+parameter.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="foil.title.size">
+<refmeta>
+<refentrytitle>foil.title.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.size</refname>
+<refpurpose>Specifies font size to use for foil titles, including units</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="foil.title.size.frag">
+ &lt;xsl:param name="foil.title.size"&gt;
+ &lt;xsl:value-of select="$foil.title.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter combines the value of the
+<parameter>foil.title.master</parameter> parameter with a unit
+specification. The default unit is <literal>pt</literal>
+(points).</para>
+
+</refsection>
+</refentry>
+
+</reference><reference id="propsets" xml:base="../slides/fo/param.xml">
+ <title>FO: Property Sets</title>
+<refentry version="5.0" id="slides.properties">
+<refmeta>
+<refentrytitle>slides.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.properties</refname>
+<refpurpose>Specifies properties for all slides</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="slides.properties.frag">
+ &lt;xsl:attribute-set name="slides.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all slides.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="foilgroup.properties">
+<refmeta>
+<refentrytitle>foilgroup.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foilgroup.properties</refname>
+<refpurpose>Specifies properties for all foilgroups</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="foilgroup.properties.frag">
+ &lt;xsl:attribute-set name="foilgroup.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foilgroups.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="foil.subtitle.properties">
+<refmeta>
+<refentrytitle>foil.subtitle.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.subtitle.properties</refname>
+<refpurpose>Specifies properties for all foil subtitles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="foil.subtitle.properties.frag">
+ &lt;xsl:attribute-set name="foil.subtitle.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$foil.title.master * 0.8"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foil subtitles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="foil.properties">
+<refmeta>
+<refentrytitle>foil.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.properties</refname>
+<refpurpose>Specifies properties for all foils</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="foil.properties.frag">
+ &lt;xsl:attribute-set name="foil.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foils.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="speakernote.properties">
+<refmeta>
+<refentrytitle>speakernote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>speakernote.properties</refname>
+<refpurpose>Specifies properties for all speakernotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="speakernote.properties.frag">
+ &lt;xsl:attribute-set name="speakernote.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;Times Roman&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;italic&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all speakernotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="running.foot.properties">
+<refmeta>
+<refentrytitle>running.foot.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>running.foot.properties</refname>
+<refpurpose>Specifies properties for running foot on each slide</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting id="running.foot.properties.frag">
+ &lt;xsl:attribute-set name="running.foot.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;14pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="color"&gt;#9F9F9F&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to the
+running foot area of each slide.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+ </part>
+ <part id="website">
+ <?dbhtml dir="website"?>
+ <?dbhtml filename="index.html"?>
+ <title xml:base="../website/param.xml">Website Parameter Reference</title>
+ <partintro id="websiteintro">
+
+ <para xml:base="../website/param.xml">This is reference documentation for all user-configurable
+ parameters in the DocBook XSL Website stylesheet (for
+ generating websites from DocBook XML sources). Note that the
+ Website stylesheet is a customization layer of the DocBook XSL
+ HTML stylesheet. Therefore, in addition to the
+ Website-specific parameters listed in this section, you can
+ also use a number of <link xlink:href="../html/">HTML
+ stylesheet parameters</link> to control Website output.</para>
+
+ </partintro>
+ <reference id="general" xml:base="../website/param.xml">
+<title>General Parameters</title>
+<refentry version="5.0" id="autolayout-file">
+<refmeta>
+<refentrytitle>autolayout-file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autolayout-file</refname>
+<refpurpose>Identifies the autolayout.xml file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="autolayout-file.frag">
+&lt;xsl:param name="autolayout-file"&gt;autolayout.xml&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When the source pages are spread over several directories, this
+parameter can be set (for example, from the command line of a batch-mode
+XSLT processor) to indicate the location of the autolayout.xml file.</para>
+<para>FIXME: for browser-based use, there needs to be a PI for this...
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="body.attributes">
+<refmeta>
+<refentrytitle>body.attributes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.attributes</refname>
+<refpurpose>DEPRECATED</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="body.attributes.frag">
+&lt;xsl:attribute-set name="body.attributes"&gt;
+ &lt;xsl:attribute name="bgcolor"&gt;white&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="link"&gt;#0000FF&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="vlink"&gt;#840084&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="alink"&gt;#0000FF&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>DEPRECATED</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="currentpage.marker">
+<refmeta>
+<refentrytitle>currentpage.marker</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>currentpage.marker</refname>
+<refpurpose>The text symbol used to mark the current page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="currentpage.marker.frag">
+&lt;xsl:param name="currentpage.marker"&gt;@&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Character to use as identifying the current page in </para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="dry-run">
+<refmeta>
+<refentrytitle>dry-run</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dry-run</refname>
+<refpurpose>Indicates that no files should be produced</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+ <programlisting id="dry-run.frag">
+ &lt;xsl:param name="dry-run" select="0"&gt;&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to suppress the generation of
+new and updated files. Effectively, this allows you to see what the
+stylesheet would do, without actually making any changes.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="feedback.href">
+<refmeta>
+<refentrytitle>feedback.href</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.href</refname>
+<refpurpose>HREF (URI) for feedback link</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="feedback.href.frag">
+&lt;xsl:param name="feedback.href"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The <varname>feedback.href</varname> value is used as the value
+for the <tag class="attribute">href</tag> attribute on the feedback
+link. If <varname>feedback.href</varname>
+is empty, no feedback link is generated.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="feedback.link.text">
+<refmeta>
+<refentrytitle>feedback.link.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.link.text</refname>
+<refpurpose>The text of the feedback link</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="feedback.link.text.frag">
+&lt;xsl:param name="feedback.link.text"&gt;Feedback&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The contents of this variable is used as the text of the feedback
+link if <varname>feedback.href</varname> is not empty. If
+<varname>feedback.href</varname> is empty, no feedback link is
+generated.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="feedback.with.ids">
+<refmeta>
+<refentrytitle>feedback.with.ids</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.with.ids</refname>
+<refpurpose>Toggle use of IDs in feedback</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="feedback.with.ids.frag">
+&lt;xsl:param name="feedback.with.ids" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>feedback.with.ids</varname> is non-zero, the ID of the
+current page will be added to the feedback link. This can be used, for
+example, if the <varname>feedback.href</varname> is a CGI script.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="filename-prefix">
+<refmeta>
+<refentrytitle>filename-prefix</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>filename-prefix</refname>
+<refpurpose>Prefix added to all filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="filename-prefix.frag">
+&lt;xsl:param name="filename-prefix"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>To produce the <quote>text-only</quote> (that is, non-tabular) layout
+of a website simultaneously with the tabular layout, the filenames have to
+be distinguished. That's accomplished by adding the
+<varname>filename-prefix</varname> to the front of each filename.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="footer.hr">
+<refmeta>
+<refentrytitle>footer.hr</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.hr</refname>
+<refpurpose>Toggle &lt;HR&gt; before footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="footer.hr.frag">
+&lt;xsl:param name="footer.hr" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, an &lt;HR&gt; is generated at the bottom of each web page,
+before the footer.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="header.hr">
+<refmeta>
+<refentrytitle>header.hr</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.hr</refname>
+<refpurpose>Toggle &lt;HR&gt; after header</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="header.hr.frag">
+&lt;xsl:param name="header.hr" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, an &lt;HR&gt; is generated at the bottom of each web page,
+before the footer.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="output-root">
+<refmeta>
+<refentrytitle>output-root</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>output-root</refname>
+<refpurpose>Specifies the root directory of the website</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="output-root.frag">
+&lt;xsl:param name="output-root"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to indicate the root directory
+where the resulting pages are placed.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="rebuild-all">
+<refmeta>
+<refentrytitle>rebuild-all</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>rebuild-all</refname>
+<refpurpose>Indicates that all files should be produced</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="rebuild-all.frag">
+&lt;xsl:param name="rebuild-all" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to regenerate the whole website,
+updating even pages that don't appear to need to be updated.</para>
+<para>The dependency extension only looks at the source documents. So
+if you change something in the stylesheet, for example, that has a global
+effect, you can use this parameter to force the stylesheet to rebuild the
+whole website.
+</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="sequential.links">
+<refmeta>
+<refentrytitle>sequential.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sequential.links</refname>
+<refpurpose>Make sequentional links?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="sequential.links.frag">
+&lt;xsl:param name="sequential.links" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="suppress.homepage.title">
+<refmeta>
+<refentrytitle>suppress.homepage.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.homepage.title</refname>
+<refpurpose>Suppress title on homepage?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="suppress.homepage.title.frag">
+&lt;xsl:param name="suppress.homepage.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME:If non-zero, the title on the homepage is suppressed?</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="table.spacer.image">
+<refmeta>
+<refentrytitle>table.spacer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.spacer.image</refname>
+<refpurpose>Invisible pixel for tabular accessibility</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="table.spacer.image.frag">
+&lt;xsl:param name="table.spacer.image"&gt;graphics/spacer.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This is the 1x1 pixel, transparent pixel used for <link xlink:href="http://diveintoaccessibility.org/day_10_presenting_your_main_content_first.html">the table trick</link> to increase the accessibility of the tabular
+website presentation.</para>
+</refsection>
+</refentry>
+
+</reference><reference id="nav" xml:base="../website/param.xml">
+<title>Navigation Parameters</title>
+<refentry version="5.0" id="banner.before.navigation">
+<refmeta>
+<refentrytitle>banner.before.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>banner.before.navigation</refname>
+<refpurpose>Put banner before navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="banner.before.navigation.frag">
+&lt;xsl:param name="banner.before.navigation" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="navbgcolor">
+<refmeta>
+<refentrytitle>navbgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navbgcolor</refname>
+<refpurpose>The background color of the navigation TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="navbgcolor.frag">
+&lt;xsl:param name="navbgcolor"&gt;#4080FF&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The background color of the navigation TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="navbodywidth">
+<refmeta>
+<refentrytitle>navbodywidth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navbodywidth</refname>
+<refpurpose>Specifies the width of the navigation table body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="navbodywidth.frag">
+&lt;xsl:param name="navbodywidth"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The width of the body column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="nav.table.summary">
+<refmeta>
+<refentrytitle>nav.table.summary</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nav.table.summary</refname>
+<refpurpose>HTML Table summary attribute value for navigation tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="nav.table.summary.frag">
+&lt;xsl:param name="nav.table.summary"&gt;Navigation&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The value of this parameter is used as the value of the table
+summary attribute for the navigation table.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="navtocwidth">
+<refmeta>
+<refentrytitle>navtocwidth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navtocwidth</refname>
+<refpurpose>Specifies the width of the navigation table TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="navtocwidth.frag">
+&lt;xsl:param name="navtocwidth"&gt;220&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The width, in pixels, of the navigation column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="textbgcolor">
+<refmeta>
+<refentrytitle>textbgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textbgcolor</refname>
+<refpurpose>The background color of the table body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="textbgcolor.frag">
+&lt;xsl:param name="textbgcolor"&gt;white&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The background color of the table body.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+</reference><reference id="toc" xml:base="../website/param.xml">
+<title>ToC Parameters</title>
+<refentry version="5.0" id="toc.blank.graphic">
+<refmeta>
+<refentrytitle>toc.blank.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.graphic</refname>
+<refpurpose>Use graphic for "blanks" in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.blank.graphic.frag">
+&lt;xsl:param name="toc.blank.graphic" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, "blanks" in the the TOC will be accomplished
+with the graphic identified by <varname>toc.spacer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.blank.image">
+<refmeta>
+<refentrytitle>toc.blank.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.image</refname>
+<refpurpose>The image for "blanks" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.blank.image.frag">
+&lt;xsl:param name="toc.blank.image"&gt;graphics/blank.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.blank.graphic</varname> is non-zero, this image
+will be used to for "blanks" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.blank.text">
+<refmeta>
+<refentrytitle>toc.blank.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.text</refname>
+<refpurpose>The text for "blanks" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.blank.text.frag">
+&lt;xsl:param name="toc.blank.text"&gt;&#160;&#160;&#160;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.blank.graphic</varname> is zero, this text string
+will be used for "blanks" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.pointer.graphic">
+<refmeta>
+<refentrytitle>toc.pointer.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.graphic</refname>
+<refpurpose>Use graphic for TOC pointer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.pointer.graphic.frag">
+&lt;xsl:param name="toc.pointer.graphic" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the "pointer" in the TOC will be displayed
+with the graphic identified by <varname>toc.pointer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.pointer.image">
+<refmeta>
+<refentrytitle>toc.pointer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.image</refname>
+<refpurpose>The image for the "pointer" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.pointer.image.frag">
+&lt;xsl:param name="toc.pointer.image"&gt;graphics/arrow.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.pointer.graphic</varname> is non-zero, this image
+will be used for the "pointer" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.pointer.text">
+<refmeta>
+<refentrytitle>toc.pointer.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.text</refname>
+<refpurpose>The text for the "pointer" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.pointer.text.frag">
+&lt;xsl:param name="toc.pointer.text"&gt;&#160;&gt;&#160;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.pointer.graphic</varname> is zero, this text string
+will be used to display the "pointer" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.spacer.graphic">
+<refmeta>
+<refentrytitle>toc.spacer.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.graphic</refname>
+<refpurpose>Use graphic for TOC spacer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.spacer.graphic.frag">
+&lt;xsl:param name="toc.spacer.graphic" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the indentation in the TOC will be accomplished
+with the graphic identified by <varname>toc.spacer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.spacer.image">
+<refmeta>
+<refentrytitle>toc.spacer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.image</refname>
+<refpurpose>The image for spacing the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.spacer.image.frag">
+&lt;xsl:param name="toc.spacer.image"&gt;graphics/blank.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.spacer.graphic</varname> is non-zero, this image
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="toc.spacer.text">
+<refmeta>
+<refentrytitle>toc.spacer.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.text</refname>
+<refpurpose>The text for spacing the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.spacer.text.frag">
+&lt;xsl:param name="toc.spacer.text"&gt;&#160;&#160;&#160;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.spacer.graphic</varname> is zero, this text string
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+</reference>
+ </part>
+ </book>
+ <book id="pi"><title>DocBook XSL Stylesheets User&#160;Reference:&#160;PIs</title>
+ <?dbhtml dir="pi"?>
+ <?dbhtml filename="index.html"?>
+ <info>
+ <abstract>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions in the DocBook
+ XSL stylesheets.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific &#8220;exceptions&#8221; to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it&#8217;s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </abstract>
+ </info>
+ <part id="pi-html">
+ <info xml:base="../html/pi.xml"><title>HTML Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro id="partintro" xml:base="../html/pi.xml">
+ <title>Introduction</title>
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for HTML output.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific &#8220;exceptions&#8221; to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it&#8217;s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry id="dbhtml_background-color" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_background-color</refname>
+<refpurpose>Sets background color for an image</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml background-color="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGcolor.html">Background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_bgcolor" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_bgcolor</refname>
+<refpurpose>Sets background color on a CALS table row or table cell</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml bgcolor</tag> PI as child of a CALS table row
+ or cell to set a background color for that table row or cell.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGtableColor.html#CellBGColor">Cell background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_cellpadding" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_cellpadding</refname>
+<refpurpose>Specifies cellpadding in CALS table or qandaset output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml cellpadding="<replaceable>number</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml cellpadding</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellpadding</literal> attribute in the
+ output HTML table.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>cellpadding="<replaceable>number</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the cellpadding</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>html.cellpadding</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_cellspacing" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_cellspacing</refname>
+<refpurpose>Specifies cellspacing in CALS table or qandaset output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml cellspacing="<replaceable>number</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml cellspacing</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellspacing</literal> attribute in the
+ output HTML table.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>cellspacing="<replaceable>number</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the cellspacing</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>html.cellspacing</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_class" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_class</refname>
+<refpurpose>Set value of the class attribute for a CALS table row</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml class="<replaceable>name</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml class</tag> PI as a child of a
+ <tag>row</tag> to specify a <literal>class</literal>
+ attribute and value in the HTML output for that row.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>class="<replaceable>name</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the class name</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="CSSTableCells.html">Table styles in HTML output</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_dir" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_dir</refname>
+<refpurpose>Specifies a directory name in which to write files</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml dir="<replaceable>path</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>When chunking output, use the <tag class="xmlpi">dbhtml dir</tag> PI
+ as a child of a chunk source to cause the output of that
+ chunk to be written to the specified directory; also, use it
+ as a child of a <tag>mediaobject</tag> to specify a
+ directory into which any long-description files for that
+ <tag>mediaobject</tag> will be written.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>dir="<replaceable>path</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the pathname for the directory</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>base.dir</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Chunking.html#dbhtmlDirPI">dbhtml dir processing instruction</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_filename" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_filename</refname>
+<refpurpose>Specifies a filename for a chunk</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml filename="<replaceable>filename</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>When chunking output, use the <tag class="xmlpi">dbhtml filename</tag>
+ PI as a child of a chunk source to specify a filename for
+ the output file for that chunk.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>filename="<replaceable>path</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the filename for the file</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>use.id.as.filename</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Chunking.html#DbhtmlFilenames">dbhtml filenames</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_funcsynopsis-style" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_funcsynopsis-style</refname>
+<refpurpose>Specifies presentation style for a funcsynopsis</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>funcsynopsis.style</parameter></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_img.src.path" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_img.src.path</refname>
+<refpurpose>Specifies a path to the location of an image file</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml img.src.path="<replaceable>path</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml img.src.path</tag> PI before or
+ after an image (<tag>graphic</tag>,
+ <tag>inlinegraphic</tag>, <tag>imagedata</tag>, or
+ <tag>videodata</tag> element) as a sibling to the element,
+ to specify a path to the location of the image; in HTML
+ output, the value specified for the
+ <code>img.src.path</code> attribute is prepended to the
+ filename.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>img.src.path="<replaceable>path</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the pathname to prepend to the name of the image file</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>img.src.path</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="GraphicsLocations.html#UsingFileref">Using fileref</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_label-width" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_label-width</refname>
+<refpurpose>Specifies the label width for a qandaset</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml label-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml label-width</tag> PI as a child of a
+ <tag>qandaset</tag> to specify the width of labels.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the label width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_linenumbering.everyNth" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_linenumbering.everyNth</refname>
+<refpurpose>Specifies interval for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml linenumbering.everyNth</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the interval at which lines are numbered.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+
+<para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.everyNth</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_linenumbering.separator" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_linenumbering.separator</refname>
+<refpurpose>Specifies separator text for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml linenumbering.separator</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the separator text output between the line numbers and content.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.separator</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_linenumbering.width" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_linenumbering.width</refname>
+<refpurpose>Specifies width for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml linenumbering.width</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the width set aside for line numbers.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the width (inluding units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.width</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_list-presentation" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_list-presentation</refname>
+<refpurpose>Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml list-presentation="list"|"table"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+
+<para>Displays the list as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+
+<para>Displays the list as a table</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<itemizedlist>
+ <listitem>
+
+<para><parameter>variablelist.as.table</parameter></para>
+
+ </listitem>
+ <listitem>
+
+<para><parameter>segmentedlist.as.table</parameter></para>
+
+ </listitem>
+ </itemizedlist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_list-width" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_list-width</refname>
+<refpurpose>Specifies the width of a variablelist or simplelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml list-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml list-width</tag> PI as a child of a
+ <tag>variablelist</tag> or a <tag>simplelist</tag> presented
+ as a table, to specify the output width.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the output width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_row-height" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_row-height</refname>
+<refpurpose>Specifies the height for a CALS table row</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml row-height="<replaceable>height</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the row height (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="RowHeight.html">Row height</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_start" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_start</refname>
+<refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml start="<replaceable>character</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para><emphasis>This PI is obsolete</emphasis>. The intent of
+ this PI was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Orderedlists.html#ListStartNum">List starting number</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_stop-chunking" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_stop-chunking</refname>
+<refpurpose>Do not chunk any descendants of this element.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml stop-chunking</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages:
+<programlisting>&lt;section&gt;
+&lt;title&gt;Configuring pencil&lt;/title&gt;
+&lt;?dbhtml stop-chunking?&gt;
+
+...
+
+&lt;/section&gt;</programlisting>
+</para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Chunking.html">Chunking into multiple HTML files</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_table-summary" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_table-summary</refname>
+<refpurpose>Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml table-summary="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml table-summary</tag> PI as a child of
+ a CALS <tag>table</tag>, <tag>variablelist</tag>,
+ <tag>segmentedlist</tag>, or <tag>qandaset</tag> to specify
+ the text for the HTML <literal>summary</literal> attribute
+ in the output HTML table.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>table-summary="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the summary text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link>,
+ <link role="tcg" xlink:href="TableSummary.html">Table summary text</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_table-width" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_table-width</refname>
+<refpurpose>Specifies the width for a CALS table</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml table-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml table-width</tag> PI as a child of a
+ CALS <tag>table</tag> to specify the width of the table in
+ output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the table width (including units or as a percentage)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>default.table.width</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Tables.html#TableWidth">Table width</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_term-presentation" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_term-presentation</refname>
+<refpurpose>Sets character formatting for terms in a variablelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml term-presentation="bold"|"italic"|"bold-italic"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml term-presentation</tag> PI as a child
+ of a <tag>variablelist</tag> to set character formatting for
+ the <tag>term</tag> output of the list.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-presentation="<replaceable>bold</replaceable>"</term>
+ <listitem>
+
+<para>Specifies that terms are displayed in bold</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>italic</replaceable>"</term>
+ <listitem>
+
+<para>Specifies that terms are displayed in italic</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>bold-italic</replaceable>"</term>
+ <listitem>
+
+<para>Specifies that terms are displayed in bold-italic</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_term-separator" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_term-separator</refname>
+<refpurpose>Specifies separator text among terms in a varlistentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml term-separator="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml term-separator</tag> PI as a child
+ of a <tag>variablelist</tag> to specify the separator text
+ among <tag>term</tag> instances.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>variablelist.term.separator</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_term-width" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_term-width</refname>
+<refpurpose>Specifies the term width for a variablelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml term-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the term width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml_toc" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml_toc</refname>
+<refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml toc="0"|"1"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+
+<para>If zero, no TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+
+<para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAtoc.html">Q and A list of questions</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbcmdlist" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbcmdlist</refname>
+<refpurpose>Generates a hyperlinked list of commands</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbcmdlist</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbcmdlist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>cmdsynopsis</tag> instances; a hyperlinked navigational
+ &#8220;command list&#8221; will be generated at the top of output for that
+ element, enabling users to quickly jump
+ to each command synopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<para>[No parameters]</para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfunclist" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbfunclist</refname>
+<refpurpose>Generates a hyperlinked list of functions</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfunclist</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfunclist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>funcsynopsis</tag> instances; a hyperlinked
+ navigational &#8220;function list&#8221; will be generated at the top of
+ output for that element, enabling users to quickly
+ jump to to each function synopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<para>[No parameters]</para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhtml-include_href" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhtml-include_href</refname>
+<refpurpose>Copies an external well-formed HTML/XML file into current doc</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml-include href="<replaceable>URI</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml-include href</tag> PI anywhere in a
+ document to cause the contents of the file referenced by the
+ <code>href</code> pseudo-attribute to be copied/inserted &#8220;as
+ is&#8221; into your HTML output at the point in document order
+ where the PI occurs in the source.</para>
+
+ <note>
+
+<para>The referenced file may contain plain text (as long as
+ it is &#8220;wrapped&#8221; in an <tag>html</tag> element &#8212; see the
+ note below) or markup in any arbitrary vocabulary,
+ including HTML &#8212; but it must conform to XML
+ well-formedness constraints (because the feature in XSLT
+ 1.0 for opening external files, the
+ <function>document()</function> function, can only handle
+ files that meet XML well-formedness constraints).</para>
+
+
+<para>Among other things, XML well-formedness constraints
+ require a document to have <emphasis>a single root
+ element</emphasis>. So if the content you want to
+ include is plain text or is markup that does
+ <emphasis>not</emphasis> have a single root element,
+ <emphasis role="strong">wrap the content in an
+ <tag>html</tag> element</emphasis>. The stylesheets will
+ strip out that surrounding <tag>html</tag> &#8220;wrapper&#8221; when
+ they find it, leaving just the content you want to
+ insert.</para>
+
+ </note>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>href="<replaceable>URI</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the URI for the file to include; the URI
+ can be, for example, a remote <literal>http:</literal>
+ URI, or a local filesystem <literal>file:</literal>
+ URI</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>textinsert.extension</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>,
+ <link role="tcg" xlink:href="ExternalCode.html">External code files</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbhh" xml:base="../html/pi.xml">
+<refnamediv>
+<refname>dbhh</refname>
+<refpurpose>Sets topic name and topic id for context-sensitive HTML Help</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhh topicname="<replaceable>name</replaceable>" topicid="<replaceable>id</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhh</tag> PI as a child of components
+ that should be used as targets for context-sensitive help requests.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>topicname="<replaceable>name</replaceable>"</term>
+ <listitem>
+
+<para>Specifies a unique string constant that identifies a help topic</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>topicid="<replaceable>id</replaceable>"</term>
+ <listitem>
+
+<para>Specifies a unique integer value for the <literal>topicname</literal> string</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="HtmlHelp.html#HHContextHelp">Context-sensitive help</link></para>
+
+ </refsect1></refentry>
+
+ </part>
+ <part id="pi-fo">
+ <info xml:base="../fo/pi.xml"><title>FO Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8487 2009-07-14 21:43:36Z bobstayton $
+ </releaseinfo>
+ </info>
+
+ <partintro id="partintro" xml:base="../fo/pi.xml">
+ <title>Introduction</title>
+
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for FO output.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific &#8220;exceptions&#8221; to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it&#8217;s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry id="dbfo_background-color" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_background-color</refname>
+<refpurpose>Sets background color for an image</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo background-color="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGcolor.html">Background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_bgcolor" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_bgcolor</refname>
+<refpurpose>Sets background color on a table row or table cell</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo bgcolor</tag> PI as child of a table row
+ or cell to set a background color for that table row or cell.</para>
+
+
+<para>This PI works for both CALS and HTML tables.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGtableColor.html#CellBGColor">Cell background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_float-type" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_float-type</refname>
+<refpurpose>Specifies float behavior for a sidebar</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo float-type="margin.note"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo float-type</tag> PI to specify the float
+ behavior for a <tag>sidebar</tag> (to cause the sidebar to be
+ displayed as a marginal note).</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>float-type="margin.note"</term>
+ <listitem>
+
+<para>Specifies that the <tag>sidebar</tag> should be
+ displayed as a marginal note.</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>sidebar.float.type</parameter> (parameter),
+ <parameter>sidebar.float.width</parameter> (parameter),
+ <parameter>sidebar.properties</parameter> (attribute-set),
+ <parameter>sidebar.title.properties</parameter> (attribute-set)
+ </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="SideFloats.html#SidebarFloats">A sidebar as
+ side float</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_funcsynopsis-style" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_funcsynopsis-style</refname>
+<refpurpose>Specifies presentation style for a funcsynopsis</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>funcsynopsis.style</parameter></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_glossary-presentation" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_glossary-presentation</refname>
+<refpurpose>Specifies presentation style for a glossary</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo glossary-presentation="list"|"blocks"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo glossary-presentation</tag> PI as a child of
+ a <tag>glossary</tag> to control its presentation style.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>glossary-presentation="list"</term>
+ <listitem>
+
+<para>Displays the glossary as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>glossary-presentation="blocks"</term>
+ <listitem>
+
+<para>Displays the glossary as blocks</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>glossary.as.blocks</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint">Glossary
+ formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_glosslist-presentation" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_glosslist-presentation</refname>
+<refpurpose>Specifies presentation style for a glosslist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo glosslist-presentation="list"|"blocks"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo glosslist-presentation</tag> PI as a child of
+ a <tag>glosslist</tag> to control its presentation style.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>glosslist-presentation="list"</term>
+ <listitem>
+
+<para>Displays the glosslist as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>glosslist-presentation="blocks"</term>
+ <listitem>
+
+<para>Displays the glosslist as blocks</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>glosslist.as.blocks</parameter> </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint">Glossary
+ formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_glossterm-width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_glossterm-width</refname>
+<refpurpose>Specifies the glossterm width for a glossary or
+ glosslist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo glossterm-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo glossterm-width</tag> PI as a child of a
+ <tag>glossary</tag> or <tag>glosslist</tag> to specify the
+ width for output of <tag>glossterm</tag> instances in the
+ output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>glossterm-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the glossterm width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>glossterm.width</parameter>,
+ <parameter>glossterm.separation</parameter>
+ </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint">Glossary
+ formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_keep-together" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_keep-together</refname>
+<refpurpose>Specifies &#8220;keep&#8221; behavior for a table, example,
+ figure, equation, procedure, or task</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo keep-together="auto"|"always"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo keep-together</tag> PI as a child of a
+ formal object (<tag>table</tag>, <tag>example</tag>,
+ <tag>figure</tag>, <tag>equation</tag>, <tag>procedure</tag>, or
+ <tag>task</tag>) to specify &#8220;keep&#8221; behavior (to allow the object to
+ &#8220;break&#8221; across a page).</para>
+
+
+<para>The PI also works with <tag>informaltable</tag>, <tag>informalexample</tag>,
+ <tag>informalfigure</tag> and <tag>informalequation</tag>.
+ </para>
+
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>keep-together="auto"</term>
+ <listitem>
+
+<para>Enables the object to break across a page</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>keep-together="always"</term>
+ <listitem>
+
+<para>Prevents the object from breaking across a page (the
+ default stylesheet behavior)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para>formal.object.properties</para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="PageBreaking.html#KeepTogetherPI">Keep-together processing instruction</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_label-width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_label-width</refname>
+<refpurpose>Specifies the label width for a qandaset, itemizedlist, orderedlist
+ or calloutlist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo label-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo label-width</tag> PI as a child of a
+ <tag>qandaset</tag>, <tag>itemizedlist</tag>, <tag>orderedlist</tag>,
+ or <tag>calloutlist</tag> to specify the width of labels.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the label width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_linenumbering.everyNth" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_linenumbering.everyNth</refname>
+<refpurpose>Specifies interval for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo linenumbering.everyNth</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the interval at which lines are numbered.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+
+<para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.everyNth</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_linenumbering.separator" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_linenumbering.separator</refname>
+<refpurpose>Specifies separator text for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo linenumbering.separator</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the separator text output between the line numbers and content.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.separator</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_linenumbering.width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_linenumbering.width</refname>
+<refpurpose>Specifies width for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo linenumbering.width</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the width set aside for line numbers.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the width (inluding units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.width</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_list-presentation" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_list-presentation</refname>
+<refpurpose>Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo list-presentation="list"|"blocks"|"table"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+
+<para>Displays the list as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="blocks"</term>
+ <listitem>
+
+<para>(<tag>variablelist</tag> only) Displays the list as blocks</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+
+<para>(<tag>segmentedlist</tag> only) Displays the list as a table</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<itemizedlist>
+ <listitem>
+
+<para><parameter>variablelist.as.blocks</parameter></para>
+
+ </listitem>
+ <listitem>
+
+<para><parameter>variablelist.as.table</parameter></para>
+
+ </listitem>
+ </itemizedlist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#ListIndents">Variable list formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_list-width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_list-width</refname>
+<refpurpose>Specifies the width of a horizontal simplelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo list-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo list-width</tag> PI as a child of a
+ <tag>simplelist</tag> whose <tag class="attribute">class</tag>
+ value is <literal>horizontal</literal>, to specify the width
+ of the <tag>simplelist</tag>.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the <tag>simplelist</tag> width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_orientation" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_orientation</refname>
+<refpurpose>Specifies the orientation for a CALS table row or cell</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo orientation</tag> PI as a child of a CALS
+ <tag>table</tag> row or cell to specify the orientation
+ (rotation) for the row or cell.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</term>
+ <listitem>
+
+<para>Specifies the number of degrees by which the cell or
+ row is rotated</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_pgwide" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_pgwide</refname>
+<refpurpose>Specifies if an <tag>equation</tag> or <tag>example</tag> goes across full page width</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo pgwide="0"|"1"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo pgwide</tag> PI as a child of an
+ <tag>equation</tag> or <tag>example</tag> to specify that the
+ content should rendered across the full width of the page.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>pgwide="0"</term>
+ <listitem>
+
+<para>If zero, the content is rendered across the current
+ text flow</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>pgwide="1"</term>
+ <listitem>
+
+<para>If <code>1</code> (or any non-zero value), the
+ content is rendered across the full width of the page</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>pgwide.properties</parameter></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_rotated-width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_rotated-width</refname>
+<refpurpose>Specifies the width for a CALS table <tag>entry</tag> or
+ <tag>row</tag></refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo rotated-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo rotated-width</tag> PI as a child of
+ <tag>entry</tag> or <tag>row</tag> instance in a CALS table to specify the
+ width of that the <tag>entry</tag> or <tag>row</tag>; or
+ use it higher up in table to cause the width to be inherited
+ recursively down.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>rotated-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the width of a row or cell (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_sidebar-width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_sidebar-width</refname>
+<refpurpose>Specifies the width of a sidebar</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo sidebar-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo sidebar-width</tag> PI as a child of a
+ <tag>sidebar</tag> to specify the width of the sidebar.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>sidebar-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the <tag>sidebar</tag> width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>sidebar.float.type parameter</parameter>,
+ <parameter>sidebar.float.width parameter</parameter>,
+ <parameter>sidebar.properties attribute-set</parameter>,
+ <parameter>sidebar.title.properties</parameter>
+ </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="SideFloats.html#SidebarFloats">A sidebar as
+ side float</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_start" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_start</refname>
+<refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo start="<replaceable>character</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para><emphasis>This PI is obsolete</emphasis>. The intent of
+ it was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Orderedlists.html#ListStartNum">List starting number</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_table-width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_table-width</refname>
+<refpurpose>Specifies the width for a CALS table or for revhistory
+ output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo table-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo table-width</tag> PI as a child or
+ sibling of a CALS <tag>table</tag>, or as a child of an
+ <tag>informaltable</tag>, <tag>entrytbl</tag>, or
+ <tag>revhistory</tag> instance (which is rendered as a table
+ in output) to specify the width of the table in output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the table width (including units or as a percentage)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Tables.html#TableWidth">Table width</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_term-width" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_term-width</refname>
+<refpurpose>Specifies the term width for a variablelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo term-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the term width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#ListIndents">Variable list formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_toc" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_toc</refname>
+<refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo toc="0"|"1"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+
+<para>If zero, no TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+
+<para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAtoc.html">Q and A list of questions</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo-need" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo-need</refname>
+<refpurpose>Specify a need for space (a kind of soft page break)</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo-need height="<replaceable>n</replaceable>" [space-before="<replaceable>n</replaceable>"]</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>A &#8220;need&#8221; is a request for space on a page. If the
+ requested space is not available, the page breaks and the
+ content that follows the need request appears on the next
+ page. If the requested space is available, then no page break
+ is inserted.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>height="<replaceable>n</replaceable>"</term>
+ <listitem>
+
+<para>The amount of height needed (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>space-before="<replaceable>n</replaceable>"</term>
+ <listitem>
+
+<para>The amount of extra vertical space to add (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="PageBreaking.html#SoftPageBreaks">Soft page breaks</link></para>
+
+ </refsect1></refentry>
+
+<refentry id="dbfo_row-height" xml:base="../fo/pi.xml">
+<refnamediv>
+<refname>dbfo_row-height</refname>
+<refpurpose>Specifies the height for a CALS table row</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo row-height="<replaceable>height</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the row height (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="RowHeight.html">Row height</link></para>
+
+ </refsect1></refentry>
+
+ </part>
+ <part id="pi-man">
+ <info xml:base="../manpages/pi.xml"><title>manpages Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro id="partintro" xml:base="../manpages/pi.xml">
+ <title>Introduction</title>
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for manpages output.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific &#8220;exceptions&#8221; to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it&#8217;s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry id="dbman_funcsynopsis-style" xml:base="../manpages/pi.xml">
+<refnamediv>
+<refname>dbman_funcsynopsis-style</refname>
+<refpurpose>Specifies presentation style for a funcsynopsis.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbman funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbman
+ funcsynopsis-style</tag> PI as a child of a
+ <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+
+<para>Displays the <tag>funcprototype</tag> in K&amp;R style</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+
+<para>Displays the <tag>funcprototype</tag> in ANSI style</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>man.funcsynopsis.style</parameter></para>
+
+ </refsect1></refentry>
+
+ </part>
+ <part id="pi-common">
+ <info xml:base="../common/pi.xml"><title>Common Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8782 2010-07-27 21:15:17Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro id="partintro" xml:base="../common/pi.xml">
+ <title>Introduction</title>
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the
+ &#8220;common&#8221; part of the DocBook XSL stylesheets.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific &#8220;exceptions&#8221; to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it&#8217;s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry id="dbchoice_choice" xml:base="../common/pi.xml">
+<refnamediv>
+<refname>dbchoice_choice</refname>
+<refpurpose>Generates a localized choice separator</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbchoice choice="and"|"or"|<replaceable>string</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbchoice choice</tag> PI to
+ generate an appropriate localized &#8220;choice&#8221; separator (for
+ example, <literal>and</literal> or <literal>or</literal>)
+ before the final item in an inline <tag>simplelist</tag></para>
+
+ <warning>
+
+<para>This PI is a less-than-ideal hack; support for it may
+ disappear in the future (particularly if and when a more
+ appropriate means for marking up "choice" lists becomes
+ available in DocBook).</para>
+
+ </warning>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>choice="and"</term>
+ <listitem>
+
+<para>generates a localized <literal>and</literal> separator</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="or"</term>
+ <listitem>
+
+<para>generates a localized <literal>or</literal> separator</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="<replaceable>string</replaceable>"</term>
+ <listitem>
+
+<para>generates a literal <replaceable>string</replaceable> separator</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry id="dbtimestamp" xml:base="../common/pi.xml">
+<refnamediv>
+<refname>dbtimestamp</refname>
+<refpurpose>Inserts a date timestamp</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbtimestamp format="<replaceable>formatstring</replaceable>" [padding="0"|"1"]</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbtimestamp</tag> PI at any point in a
+ source document to cause a date timestamp (a formatted
+ string representing the current date and time) to be
+ inserted in output of the document.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>format="<replaceable>formatstring</replaceable>"</term>
+ <listitem>
+
+<para>Specifies format in which the date and time are
+ output</para>
+
+ <note>
+
+<para>For details of the content of the format string,
+ see <link role="tcg" xlink:href="Datetime.html">Date and time</link>.</para>
+
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>padding="0"|"1"</term>
+ <listitem>
+
+<para>Specifies padding behavior; if non-zero, padding is is added</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry id="dbtex_delims" xml:base="../common/pi.xml">
+<refnamediv>
+<refname>dbtex_delims</refname>
+<refpurpose>Generates delimiters around embedded TeX equations
+ in output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbtex delims="no"|"yes"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbtex delims</tag> PI as a
+ child of a <tag>textobject</tag> containing embedded TeX
+ markup, to cause that markup to be surrounded by
+ <literal>$</literal> delimiter characters in output.</para>
+
+ <warning>
+
+<para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+
+ </warning>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>dbtex delims="no"|"yes"</term>
+ <listitem>
+
+<para>Specifies whether delimiters are output</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>tex.math.delims</parameter></para>
+
+ </refsect1></refentry>
+
+ </part>
+ </book>
+ <book id="developer"><title>DocBook XSL Stylesheets Developer&#160;Reference</title>
+ <info>
+ <abstract>
+ <para>This is technical reference documentation for
+ developers using the DocBook XSL Stylesheets. It is not
+ intended to be user documentation, but is instead
+ provided for developers writing customization layers for
+ the stylesheets.</para>
+ </abstract>
+ </info>
+ <part id="lib">
+ <?dbhtml dir="lib"?>
+ <?dbhtml filename="index.html"?>
+ <title xml:base="../lib/lib.xml">XSL Library Template Reference</title>
+ <partintro id="libintro">
+ <title xml:base="../lib/lib.xml">Introduction</title>
+ <para xml:base="../lib/lib.xml">This is technical reference documentation for the
+ vocabulary-independent &#8220;library&#8221; templates in the DocBook XSL
+ Stylesheets.</para>
+ <para xml:base="../lib/lib.xml">This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+ <reference id="generallibrary" xml:base="../lib/lib.xml">
+ <title>General Library Templates</title>
+
+<refentry id="dot.count">
+<refnamediv>
+<refname>dot.count</refname>
+<refpurpose>Returns the number of <quote>.</quote> characters in a string</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+ <para>Given a string, the <function>dot.count</function>
+ template returns the number of dot/period characters in the
+ string. This template is useful, for example, when testing the
+ nesting level of nested inline markup (for nested emphasis,
+ quotations, etc.).</para>
+
+<programlisting id="dot.count.frag">
+&lt;xsl:template name="dot.count"&gt;
+ &lt;!-- Returns the number of "." characters in a string --&gt;
+ &lt;xsl:param name="string"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="count" select="0"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($string, '.')"&gt;
+ &lt;xsl:call-template name="dot.count"&gt;
+ &lt;xsl:with-param name="string" select="substring-after($string, '.')"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="count" select="$count+1"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$count"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="copy-string">
+<refnamediv>
+<refname>copy-string</refname>
+<refpurpose>Returns <quote>count</quote> copies of a string</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+ <para>Given a string, the <function>copy-string</function>
+ template creates <replaceable>n</replaceable> copies of the
+ string, when the value of <replaceable>n</replaceable> is
+ given by the <parameter>count</parameter> parameter.</para>
+
+<programlisting id="copy-string.frag">
+&lt;xsl:template name="copy-string"&gt;
+ &lt;!-- returns 'count' copies of 'string' --&gt;
+ &lt;xsl:param name="string"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="count" select="0"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="result"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$count&gt;0"&gt;
+ &lt;xsl:call-template name="copy-string"&gt;
+ &lt;xsl:with-param name="string" select="$string"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="count" select="$count - 1"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="result"&gt;
+ &lt;xsl:value-of select="$result"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:value-of select="$string"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$result"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="string.subst">
+<refnamediv>
+<refname>string.subst</refname>
+<refpurpose>Substitute one text string for another in a string</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>string.subst</function> template replaces all
+occurances of <parameter>target</parameter> in <parameter>string</parameter>
+with <parameter>replacement</parameter> and returns the result.
+</para>
+
+<programlisting id="string.subst.frag">
+&lt;xsl:template name="string.subst"&gt;
+ &lt;xsl:param name="string"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="target"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="replacement"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($string, $target)"&gt;
+ &lt;xsl:variable name="rest"&gt;
+ &lt;xsl:call-template name="string.subst"&gt;
+ &lt;xsl:with-param name="string" select="substring-after($string, $target)"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="target" select="$target"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="replacement" select="$replacement"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:value-of select="concat(substring-before($string, $target), $replacement, $rest)"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$string"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="xpointer.idref">
+<refnamediv>
+<refname>xpointer.idref</refname>
+<refpurpose>Extract IDREF from an XPointer</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>xpointer.idref</function> template returns the
+ID portion of an XPointer which is a pointer to an ID within the current
+document, or the empty string if it is not.</para>
+<para>In other words, <function>xpointer.idref</function> returns
+<quote>foo</quote> when passed either <literal>#foo</literal>
+or <literal>#xpointer(id('foo'))</literal>, otherwise it returns
+the empty string.</para>
+
+<programlisting id="xpointer.idref.frag">
+&lt;xsl:template name="xpointer.idref"&gt;
+ &lt;xsl:param name="xpointer"&gt;http://...&lt;/xsl:param&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="starts-with($xpointer, '#xpointer(id(')"&gt;
+ &lt;xsl:variable name="rest" select="substring-after($xpointer, '#xpointer(id(')"&gt;&lt;/xsl:variable&gt;
+ &lt;xsl:variable name="quote" select="substring($rest, 1, 1)"&gt;&lt;/xsl:variable&gt;
+ &lt;xsl:value-of select="substring-before(substring-after($xpointer, $quote), $quote)"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="starts-with($xpointer, '#')"&gt;
+ &lt;xsl:value-of select="substring-after($xpointer, '#')"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;!-- otherwise it's a pointer to some other document --&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+
+<refentry id="length-magnitude">
+<refnamediv>
+<refname>length-magnitude</refname>
+<refpurpose>Return the unqualified dimension from a length specification</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>length-magnitude</function> template returns the
+unqualified length ("20" for "20pt") from a dimension.
+</para>
+
+<programlisting id="length-magnitude.frag">
+&lt;xsl:template name="length-magnitude"&gt;
+ &lt;xsl:param name="length" select="'0pt'"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="string-length($length) = 0"&gt;&lt;/xsl:when&gt;
+ &lt;xsl:when test="substring($length,1,1) = '0' or substring($length,1,1) = '1' or substring($length,1,1) = '2' or substring($length,1,1) = '3' or substring($length,1,1) = '4' or substring($length,1,1) = '5' or substring($length,1,1) = '6' or substring($length,1,1) = '7' or substring($length,1,1) = '8' or substring($length,1,1) = '9' or substring($length,1,1) = '.'"&gt;
+ &lt;xsl:value-of select="substring($length,1,1)"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:call-template name="length-magnitude"&gt;
+ &lt;xsl:with-param name="length" select="substring($length,2)"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="length-units">
+<refnamediv>
+<refname>length-units</refname>
+<refpurpose>Return the units from a length specification</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>length-units</function> template returns the
+units ("pt" for "20pt") from a length. If no units are supplied on the
+length, the <parameter>defauilt.units</parameter> are returned.</para>
+
+<programlisting id="length-units.frag">
+&lt;xsl:template name="length-units"&gt;
+ &lt;xsl:param name="length" select="'0pt'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="default.units" select="'px'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:variable name="magnitude"&gt;
+ &lt;xsl:call-template name="length-magnitude"&gt;
+ &lt;xsl:with-param name="length" select="$length"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:variable&gt;
+
+ &lt;xsl:variable name="units"&gt;
+ &lt;xsl:value-of select="substring($length, string-length($magnitude)+1)"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:variable&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$units = ''"&gt;
+ &lt;xsl:value-of select="$default.units"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$units"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="length-spec">
+<refnamediv>
+<refname>length-spec</refname>
+<refpurpose>Return a fully qualified length specification</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>length-spec</function> template returns the
+qualified length from a dimension. If an unqualified length is given,
+the <parameter>default.units</parameter> will be added to it.
+</para>
+
+<programlisting id="length-spec.frag">
+&lt;xsl:template name="length-spec"&gt;
+ &lt;xsl:param name="length" select="'0pt'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="default.units" select="'px'"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:variable name="magnitude"&gt;
+ &lt;xsl:call-template name="length-magnitude"&gt;
+ &lt;xsl:with-param name="length" select="$length"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:variable&gt;
+
+ &lt;xsl:variable name="units"&gt;
+ &lt;xsl:value-of select="substring($length, string-length($magnitude)+1)"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:variable&gt;
+
+ &lt;xsl:value-of select="$magnitude"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$units='cm' or $units='mm' or $units='in' or $units='pt' or $units='pc' or $units='px' or $units='em'"&gt;
+ &lt;xsl:value-of select="$units"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="$units = ''"&gt;
+ &lt;xsl:value-of select="$default.units"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:message&gt;
+ &lt;xsl:text&gt;Unrecognized unit of measure: &lt;/xsl:text&gt;
+ &lt;xsl:value-of select="$units"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;.&lt;/xsl:text&gt;
+ &lt;/xsl:message&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="length-in-points">
+<refnamediv>
+<refname>length-in-points</refname>
+<refpurpose>Returns the size, in points, of a specified length</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>length-in-points</function> template converts a length
+specification to points and returns that value as an unqualified
+number.
+</para>
+
+<caution>
+<para>There is no way for the template to infer the size of an
+<literal>em</literal>. It relies on the default <parameter>em.size</parameter>
+which is initially <literal>10</literal> (for 10pt).</para>
+
+<para>Similarly, converting pixels to points relies on the
+<parameter>pixels.per.inch</parameter> parameter which is initially
+<literal>90</literal>.
+</para>
+</caution>
+
+<programlisting id="length-in-points.frag">
+&lt;xsl:template name="length-in-points"&gt;
+ &lt;xsl:param name="length" select="'0pt'"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="em.size" select="10"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="pixels.per.inch" select="90"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:variable name="magnitude"&gt;
+ &lt;xsl:call-template name="length-magnitude"&gt;
+ &lt;xsl:with-param name="length" select="$length"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:variable&gt;
+
+ &lt;xsl:variable name="units"&gt;
+ &lt;xsl:value-of select="substring($length, string-length($magnitude)+1)"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:variable&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$units = 'pt'"&gt;
+ &lt;xsl:value-of select="$magnitude"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="$units = 'cm'"&gt;
+ &lt;xsl:value-of select="$magnitude div 2.54 * 72.0"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="$units = 'mm'"&gt;
+ &lt;xsl:value-of select="$magnitude div 25.4 * 72.0"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="$units = 'in'"&gt;
+ &lt;xsl:value-of select="$magnitude * 72.0"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="$units = 'pc'"&gt;
+ &lt;xsl:value-of select="$magnitude * 12.0"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="$units = 'px'"&gt;
+ &lt;xsl:value-of select="$magnitude div $pixels.per.inch * 72.0"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="$units = 'em'"&gt;
+ &lt;xsl:value-of select="$magnitude * $em.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:message&gt;
+ &lt;xsl:text&gt;Unrecognized unit of measure: &lt;/xsl:text&gt;
+ &lt;xsl:value-of select="$units"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;.&lt;/xsl:text&gt;
+ &lt;/xsl:message&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="pi-attribute">
+<refnamediv>
+<refname>pi-attribute</refname>
+<refpurpose>Extract a pseudo-attribute from a PI</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>pi-attribute</function> template extracts a pseudo-attribute
+from a processing instruction. For example, given the PI
+<quote><literal>&lt;?foo bar="1" baz='red'?&gt;</literal></quote>,</para>
+<programlisting>&lt;xsl:call-template name="pi-attribute"&gt;
+ &lt;xsl:with-param name="pis" select="processing-instruction('foo')"/&gt;
+ &lt;xsl:with-param name="attribute" select="'baz'"/&gt;
+&lt;/xsl:call-template&gt;</programlisting>
+<para>will return <quote>red</quote>. This template returns the first matching
+attribute that it finds. Presented with processing instructions that
+contain badly formed pseudo-attributes (missing or unbalanced quotes,
+for example), the template may silently return erroneous results.</para>
+
+<programlisting id="pi-attribute.frag">
+&lt;xsl:template name="pi-attribute"&gt;
+ &lt;xsl:param name="pis" select="processing-instruction('BOGUS_PI')"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="attribute"&gt;filename&lt;/xsl:param&gt;
+ &lt;xsl:param name="count"&gt;1&lt;/xsl:param&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$count&gt;count($pis)"&gt;
+ &lt;!-- not found --&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:variable name="pi"&gt;
+ &lt;xsl:value-of select="$pis[$count]"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="pivalue"&gt;
+ &lt;xsl:value-of select="concat(' ', normalize-space($pi))"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($pivalue,concat(' ', $attribute, '='))"&gt;
+ &lt;xsl:variable name="rest" select="substring-after($pivalue,concat(' ', $attribute,'='))"&gt;&lt;/xsl:variable&gt;
+ &lt;xsl:variable name="quote" select="substring($rest,1,1)"&gt;&lt;/xsl:variable&gt;
+ &lt;xsl:value-of select="substring-before(substring($rest,2),$quote)"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:call-template name="pi-attribute"&gt;
+ &lt;xsl:with-param name="pis" select="$pis"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="attribute" select="$attribute"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="count" select="$count + 1"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="lookup.key">
+<refnamediv>
+<refname>lookup.key</refname>
+<refpurpose>Retrieve the value associated with a particular key in a table</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>Given a table of space-delimited key/value pairs,
+the <function>lookup.key</function> template extracts the value associated
+with a particular key.</para>
+
+<programlisting id="lookup.key.frag">
+&lt;xsl:template name="lookup.key"&gt;
+ &lt;xsl:param name="key" select="''"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="table" select="''"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:if test="contains($table, ' ')"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="substring-before($table, ' ') = $key"&gt;
+ &lt;xsl:variable name="rest" select="substring-after($table, ' ')"&gt;&lt;/xsl:variable&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($rest, ' ')"&gt;
+ &lt;xsl:value-of select="substring-before($rest, ' ')"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$rest"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:call-template name="lookup.key"&gt;
+ &lt;xsl:with-param name="key" select="$key"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="table" select="substring-after(substring-after($table,' '), ' ')"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:if&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="xpath.location">
+<refnamediv>
+<refname>xpath.location</refname>
+<refpurpose>Calculate the XPath child-sequence to the current node</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>xpath.location</function> template calculates the
+absolute path from the root of the tree to the current element node.
+</para>
+
+<programlisting id="xpath.location.frag">
+&lt;xsl:template name="xpath.location"&gt;
+ &lt;xsl:param name="node" select="."&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="path" select="''"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:variable name="next.path"&gt;
+ &lt;xsl:value-of select="local-name($node)"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:if test="$path != ''"&gt;/&lt;/xsl:if&gt;
+ &lt;xsl:value-of select="$path"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:variable&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$node/parent::*"&gt;
+ &lt;xsl:call-template name="xpath.location"&gt;
+ &lt;xsl:with-param name="node" select="$node/parent::*"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="path" select="$next.path"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:text&gt;/&lt;/xsl:text&gt;
+ &lt;xsl:value-of select="$next.path"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="comment-escape-string">
+<refnamediv>
+<refname>comment-escape-string</refname>
+<refpurpose>Prepare a string for inclusion in an XML comment</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>comment-escape-string</function> template returns a string
+that has been transformed so that it can safely be output as an XML comment.
+Internal occurrences of "--" will be replaced with "- -" and a leading and/or
+trailing space will be added to the string, if necessary.</para>
+
+<programlisting id="comment-escape-string.frag">
+&lt;xsl:template name="comment-escape-string"&gt;
+ &lt;xsl:param name="string" select="''"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:if test="starts-with($string, '-')"&gt;
+ &lt;xsl:text&gt; &lt;/xsl:text&gt;
+ &lt;/xsl:if&gt;
+
+ &lt;xsl:call-template name="comment-escape-string.recursive"&gt;
+ &lt;xsl:with-param name="string" select="$string"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+
+ &lt;xsl:if test="substring($string, string-length($string), 1) = '-'"&gt;
+ &lt;xsl:text&gt; &lt;/xsl:text&gt;
+ &lt;/xsl:if&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="comment-escape-string.recursive">
+<refnamediv>
+<refname>comment-escape-string.recursive</refname>
+<refpurpose>Internal function used by comment-escape-string</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>The <function>comment-escape-string.recursive</function> template is used
+by <function>comment-escape-string</function>.</para>
+
+<programlisting id="comment-escape-string.recursive.frag">
+&lt;xsl:template name="comment-escape-string.recursive"&gt;
+ &lt;xsl:param name="string" select="''"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($string, '--')"&gt;
+ &lt;xsl:value-of select="substring-before($string, '--')"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:value-of select="'- -'"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:call-template name="comment-escape-string.recursive"&gt;
+ &lt;xsl:with-param name="string" select="substring-after($string, '--')"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$string"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+</refsect1>
+</refentry>
+
+
+
+<refentry id="trim.text">
+<refnamediv>
+<refname>trim.text</refname>
+<refpurpose>Trim leading and trailing whitespace from a text node</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>Given a text node, this function trims leading and trailing
+whitespace from it and returns the trimmed contents.</para>
+
+<programlisting id="trim.text.frag">
+
+ &lt;xsl:template name="trim.text"&gt;
+ &lt;xsl:param name="contents" select="."&gt;&lt;/xsl:param&gt;
+ &lt;xsl:variable name="contents-left-trimmed"&gt;
+ &lt;xsl:call-template name="trim-left"&gt;
+ &lt;xsl:with-param name="contents" select="$contents"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="contents-trimmed"&gt;
+ &lt;xsl:call-template name="trim-right"&gt;
+ &lt;xsl:with-param name="contents" select="$contents-left-trimmed"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:value-of select="$contents-trimmed"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:template&gt;
+
+ &lt;xsl:template name="trim-left"&gt;
+ &lt;xsl:param name="contents"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="starts-with($contents,'
+') or starts-with($contents,'&#xD;') or starts-with($contents,' ') or starts-with($contents,' ')"&gt;
+ &lt;xsl:call-template name="trim-left"&gt;
+ &lt;xsl:with-param name="contents" select="substring($contents, 2)"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$contents"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:template&gt;
+
+ &lt;xsl:template name="trim-right"&gt;
+ &lt;xsl:param name="contents"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:variable name="last-char"&gt;
+ &lt;xsl:value-of select="substring($contents, string-length($contents), 1)"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="($last-char = '
+') or ($last-char = '&#xD;') or ($last-char = ' ') or ($last-char = ' ')"&gt;
+ &lt;xsl:call-template name="trim-right"&gt;
+ &lt;xsl:with-param name="contents" select="substring($contents, 1, string-length($contents) - 1)"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$contents"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="str.tokenize.keep.delimiters">
+<refnamediv>
+<refname>str.tokenize.keep.delimiters</refname>
+<refpurpose>Tokenize a string while preserving any delimiters</refpurpose>
+</refnamediv>
+<refsect1><title>Description</title>
+<para>Based on the occurrence of one or more delimiter characters,
+this function breaks a string into a list of tokens and delimiters,
+marking up each of the tokens with a <tag>token</tag> element
+and preserving the delimiters as text nodes between the tokens.</para>
+<note>
+ <para>This function is a very slightly modified version of a
+ function from the <link xlink:href="http://www.exslt.org/">EXSLT
+ site</link>. The original is available at:
+
+<blockquote><para><link xlink:href="http://www.exslt.org/str/functions/tokenize/str.tokenize.template.xsl"/></para></blockquote>
+
+ The <function>str.tokenize.keep.delimiters</function> function
+ differs only in that it preserves the delimiters instead of
+ discarding them.</para>
+</note>
+<programlisting id="str.tokenize.keep.delimiters.frag">
+ &lt;xsl:template name="str.tokenize.keep.delimiters"&gt;
+ &lt;xsl:param name="string" select="''"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="delimiters" select="' '"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="not($string)"&gt;&lt;/xsl:when&gt;
+ &lt;xsl:when test="not($delimiters)"&gt;
+ &lt;xsl:call-template name="str.tokenize.keep.delimiters-characters"&gt;
+ &lt;xsl:with-param name="string" select="$string"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:call-template name="str.tokenize.keep.delimiters-delimiters"&gt;
+ &lt;xsl:with-param name="string" select="$string"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="delimiters" select="$delimiters"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:template&gt;
+ &lt;xsl:template name="str.tokenize.keep.delimiters-characters"&gt;
+ &lt;xsl:param name="string"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:if test="$string"&gt;
+ &lt;ssb:token&gt;&lt;xsl:value-of select="substring($string, 1, 1)"&gt;&lt;/xsl:value-of&gt;&lt;/ssb:token&gt;
+ &lt;xsl:call-template name="str.tokenize.keep.delimiters-characters"&gt;
+ &lt;xsl:with-param name="string" select="substring($string, 2)"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:if&gt;
+ &lt;/xsl:template&gt;
+ &lt;xsl:template name="str.tokenize.keep.delimiters-delimiters"&gt;
+ &lt;xsl:param name="string"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="delimiters"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:variable name="delimiter" select="substring($delimiters, 1, 1)"&gt;&lt;/xsl:variable&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="not($delimiter)"&gt;
+ &lt;ssb:token&gt;&lt;xsl:value-of select="$string"&gt;&lt;/xsl:value-of&gt;&lt;/ssb:token&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:when test="contains($string, $delimiter)"&gt;
+ &lt;xsl:if test="not(starts-with($string, $delimiter))"&gt;
+ &lt;xsl:call-template name="str.tokenize.keep.delimiters-delimiters"&gt;
+ &lt;xsl:with-param name="string" select="substring-before($string, $delimiter)"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="delimiters" select="substring($delimiters, 2)"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:if&gt;
+ &lt;!-- output each delimiter --&gt;
+ &lt;xsl:value-of select="$delimiter"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:call-template name="str.tokenize.keep.delimiters-delimiters"&gt;
+ &lt;xsl:with-param name="string" select="substring-after($string, $delimiter)"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="delimiters" select="$delimiters"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:call-template name="str.tokenize.keep.delimiters-delimiters"&gt;
+ &lt;xsl:with-param name="string" select="$string"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="delimiters" select="substring($delimiters, 2)"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:template&gt;
+</programlisting>
+</refsect1>
+</refentry>
+
+
+
+<refentry id="apply-string-subst-map">
+ <refnamediv>
+ <refname>apply-string-subst-map</refname>
+ <refpurpose>Apply a string-substitution map</refpurpose>
+ </refnamediv>
+ <refsect1><title>Description</title>
+ <para>This function applies a &#8220;string substitution&#8221; map. Use it when
+ you want to do multiple string substitutions on the same target
+ content. It reads in two things: <parameter>content</parameter>, the
+ content on which to perform the substitution, and
+ <parameter>map.contents</parameter>, a node set of
+ elements (the names of the elements don't matter), with each element
+ having the following attributes:
+ <itemizedlist>
+ <listitem>
+ <simpara><tag class="attribute">oldstring</tag>, a string to
+ be replaced</simpara>
+ </listitem>
+ <listitem>
+ <simpara><tag class="attribute">newstring</tag>, a string with
+ which to replace <tag class="attribute">oldstring</tag></simpara>
+ </listitem>
+ </itemizedlist>
+ The function uses <parameter>map.contents</parameter> to
+ do substitution on <parameter>content</parameter>, and then
+ returns the modified contents.</para>
+ <note>
+ <para>This function is a very slightly modified version of Jeni
+ Tennison&#8217;s <function>replace_strings</function> function in the
+ <link xlink:href="http://www.dpawson.co.uk/xsl/sect2/StringReplace.html#d9351e13">multiple string replacements</link> section of Dave Pawson&#8217;s
+ <link xlink:href="http://www.dpawson.co.uk/xsl/index.html">XSLT
+ FAQ</link>.</para>
+ <para>The <function>apply-string-subst-map</function> function is
+ essentially the same function as the
+ <function>apply-character-map</function> function; the only
+ difference is that in the map that
+ <function>apply-string-subst-map</function> expects, <tag class="attribute">oldstring</tag> and <tag class="attribute">newstring</tag> attributes are used instead of
+ <tag class="attribute">character</tag> and <tag class="attribute">string</tag> attributes.</para>
+ </note>
+ <programlisting id="apply-string-subst-map.frag">
+ &lt;xsl:template name="apply-string-subst-map"&gt;
+ &lt;xsl:param name="content"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="map.contents"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:variable name="replaced_text"&gt;
+ &lt;xsl:call-template name="string.subst"&gt;
+ &lt;xsl:with-param name="string" select="$content"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="target" select="$map.contents[1]/@oldstring"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="replacement" select="$map.contents[1]/@newstring"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$map.contents[2]"&gt;
+ &lt;xsl:call-template name="apply-string-subst-map"&gt;
+ &lt;xsl:with-param name="content" select="$replaced_text"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="map.contents" select="$map.contents[position() &gt; 1]"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$replaced_text"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:template&gt;
+ </programlisting>
+ </refsect1>
+</refentry>
+</reference><reference id="relativeuri" xml:base="../lib/lib.xml">
+<title>Relative URI Functions</title>
+
+<partintro id="partintro"><title>Introduction</title>
+
+<para>These functions manipulate relative URI references.</para>
+
+<para>The following assumptions must hold true:</para>
+
+<orderedlist>
+<listitem>
+<para>All URIs are relative.</para>
+</listitem>
+<listitem>
+<para>No URI contains the <quote><literal>../</literal></quote> sequence
+which would effectively move <quote>up</quote> the hierarchy.</para>
+</listitem>
+</orderedlist>
+
+<para>If these assumptions do not hold, the results are unpredictable.</para>
+
+</partintro>
+
+
+
+<refentry id="count.uri.path.depth">
+<refnamediv>
+<refname>count.uri.path.depth</refname>
+<refpurpose>Count the number of path components in a relative URI</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>This function counts the number of path components in a relative URI.</para>
+
+<programlisting id="count.uri.path.depth.frag">
+&lt;xsl:template name="count.uri.path.depth"&gt;
+ &lt;xsl:param name="filename" select="''"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="count" select="0"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($filename, '/')"&gt;
+ &lt;xsl:call-template name="count.uri.path.depth"&gt;
+ &lt;xsl:with-param name="filename" select="substring-after($filename, '/')"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="count" select="$count + 1"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$count"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+
+
+<refentry id="trim.common.uri.paths">
+<refnamediv>
+<refname>trim.common.uri.paths</refname>
+<refpurpose>Trim common leading path components from a relative URI</refpurpose>
+</refnamediv>
+
+<refsect1><title>Description</title>
+
+<para>This function trims common leading path components from a relative URI.</para>
+
+<programlisting id="trim.common.uri.paths.frag">
+&lt;xsl:template name="trim.common.uri.paths"&gt;
+ &lt;xsl:param name="uriA" select="''"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="uriB" select="''"&gt;&lt;/xsl:param&gt;
+ &lt;xsl:param name="return" select="'A'"&gt;&lt;/xsl:param&gt;
+
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($uriA, '/') and contains($uriB, '/') and substring-before($uriA, '/') = substring-before($uriB, '/')"&gt;
+ &lt;xsl:call-template name="trim.common.uri.paths"&gt;
+ &lt;xsl:with-param name="uriA" select="substring-after($uriA, '/')"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="uriB" select="substring-after($uriB, '/')"&gt;&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="return" select="$return"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$return = 'A'"&gt;
+ &lt;xsl:value-of select="$uriA"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$uriB"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+</programlisting>
+
+</refsect1>
+</refentry>
+
+</reference>
+ </part>
+ <part id="common-part"><title>Common&#160;Template&#160;Reference</title>
+ <?dbhtml dir="common"?>
+ <?dbhtml filename="index.html"?>
+ <info>
+ <abstract>
+ <para>This is technical reference documentation for the
+ &#8220;base&#8221;, &#8220;refentry&#8221;, and &#8220;utility&#8221; sets of common
+ templates in the DocBook XSL Stylesheets. These
+ templates are &#8220;common&#8221; in that they are shared across
+ output formats (that is, they&#8217;re not
+ output-format-dependent)</para>
+ <para>This documentation is not intended to be user
+ documentation. It is provided for developers writing
+ customization layers for the stylesheets.</para>
+ </abstract>
+ </info>
+ <reference id="base" xml:base="../common/common.xml">
+ <info>
+ <title>Common &#187; Base Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: common.xsl 8784 2010-07-28 12:32:54Z mzjn $
+ </releaseinfo>
+ </info>
+
+ <partintro id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the &#8220;base&#8221;
+ set of common templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry id="template.is.component">
+<refnamediv>
+<refname>is.component</refname>
+<refpurpose>Tests if a given node is a component-level element</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.component"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The node which is to be tested.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.is.section">
+<refnamediv>
+<refname>is.section</refname>
+<refpurpose>Tests if a given node is a section-level element</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.section"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The node which is to be tested.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.section.level">
+<refnamediv>
+<refname>section.level</refname>
+<refpurpose>Returns the hierarchical level of a section</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="section.level"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template calculates the hierarchical level of a section.
+The element <tag>sect1</tag> is at level 1, <tag>sect2</tag> is
+at level 2, etc.</para>
+
+
+
+<para>Recursive sections are calculated down to the fifth level.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The section node for which the level should be calculated.
+Defaults to the context node.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The section level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+
+</refsect1></refentry>
+
+<refentry id="template.qanda.section.level">
+<refnamediv>
+<refname>qanda.section.level</refname>
+<refpurpose>Returns the hierarchical level of a QandASet</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="qanda.section.level"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template calculates the hierarchical level of a QandASet.
+</para>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+
+</refsect1></refentry>
+
+<refentry id="template.select.mediaobject">
+<refnamediv>
+<refname>select.mediaobject</refname>
+<refpurpose>Selects and processes an appropriate media object from a list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.mediaobject"&gt;
+&lt;xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and processes
+the "right" object.</para>
+
+
+
+<para>This template relies on a template named
+"select.mediaobject.index" to determine which object
+in the list is appropriate.</para>
+
+
+
+<para>If no acceptable object is located, nothing happens.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+
+<para>The node list of potential objects to examine.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>Calls &lt;xsl:apply-templates&gt; on the selected object.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.select.mediaobject.index">
+<refnamediv>
+<refname>select.mediaobject.index</refname>
+<refpurpose>Selects the position of the appropriate media object from a list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.mediaobject.index"&gt;
+&lt;xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/&gt;
+&lt;xsl:param name="count"&gt;1&lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and determines
+the "right" object. It returns the position of that object
+to be used by the calling template.</para>
+
+
+
+<para>If the parameter <parameter>use.role.for.mediaobject</parameter>
+is nonzero, then it first checks for an object with
+a role attribute of the appropriate value. It takes the first
+of those. Otherwise, it takes the first acceptable object
+through a recursive pass through the list.</para>
+
+
+
+<para>This template relies on a template named "is.acceptable.mediaobject"
+to determine if a given object is an acceptable graphic. The semantics
+of media objects is that the first acceptable graphic should be used.
+</para>
+
+
+
+<para>If no acceptable object is located, no index is returned.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+
+<para>The node list of potential objects to examine.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>count</term>
+<listitem>
+
+<para>The position in the list currently being considered by the
+recursive process.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>Returns the position in the original list of the selected object.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.is.acceptable.mediaobject">
+<refnamediv>
+<refname>is.acceptable.mediaobject</refname>
+<refpurpose>Returns '1' if the specified media object is recognized</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.acceptable.mediaobject"&gt;
+&lt;xsl:param name="object"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template examines a media object and returns '1' if the
+object is recognized as a graphic.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>object</term>
+<listitem>
+
+<para>The media object to consider.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>0 or 1</para>
+
+</refsect1></refentry>
+
+<refentry id="template.check.id.unique">
+<refnamediv>
+<refname>check.id.unique</refname>
+<refpurpose>Warn users about references to non-unique IDs</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="check.id.unique"&gt;
+&lt;xsl:param name="linkend"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.id.unique</function> prints
+a warning message to the user if either the ID does not exist or
+the ID is not unique.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.check.idref.targets">
+<refnamediv>
+<refname>check.idref.targets</refname>
+<refpurpose>Warn users about incorrectly typed references</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="check.idref.targets"&gt;
+&lt;xsl:param name="linkend"/&gt;
+&lt;xsl:param name="element-list"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.idref.targets</function> makes sure that the element
+pointed to by the link is one of the elements listed in
+<varname>element-list</varname> and warns the user otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.copyright.years">
+<refnamediv>
+<refname>copyright.years</refname>
+<refpurpose>Print a set of years with collapsed ranges</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="copyright.years"&gt;
+&lt;xsl:param name="years"/&gt;
+&lt;xsl:param name="print.ranges" select="1"/&gt;
+&lt;xsl:param name="single.year.ranges" select="0"/&gt;
+&lt;xsl:param name="firstyear" select="0"/&gt;
+&lt;xsl:param name="nextyear" select="0"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template prints a list of year elements with consecutive
+years printed as a range. In other words:</para>
+
+
+<screen>&lt;year&gt;1992&lt;/year&gt;
+&lt;year&gt;1993&lt;/year&gt;
+&lt;year&gt;1994&lt;/year&gt;</screen>
+
+
+<para>is printed <quote>1992-1994</quote>, whereas:</para>
+
+
+<screen>&lt;year&gt;1992&lt;/year&gt;
+&lt;year&gt;1994&lt;/year&gt;</screen>
+
+
+<para>is printed <quote>1992, 1994</quote>.</para>
+
+
+
+<para>This template assumes that all the year elements contain only
+decimal year numbers, that the elements are sorted in increasing
+numerical order, that there are no duplicates, and that all the years
+are expressed in full <quote>century+year</quote>
+(<quote>1999</quote> not <quote>99</quote>) notation.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>years</term>
+<listitem>
+
+<para>The initial set of year elements.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>print.ranges</term>
+<listitem>
+
+<para>If non-zero, multi-year ranges are collapsed. If zero, all years
+are printed discretely.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>single.year.ranges</term>
+<listitem>
+
+<para>If non-zero, two consecutive years will be printed as a range,
+otherwise, they will be printed discretely. In other words, a single
+year range is <quote>1991-1992</quote> but discretely it's
+<quote>1991, 1992</quote>.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns the formatted list of years.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.find.path.params">
+<refnamediv>
+<refname>find.path.params</refname>
+<refpurpose>Search in a table for the "best" match for the node</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="find.path.params"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+&lt;xsl:param name="table" select="''"/&gt;
+&lt;xsl:param name="location"&gt;
+ &lt;xsl:call-template name="xpath.location"&gt;
+ &lt;xsl:with-param name="node" select="$node"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template searches in a table for the value that most-closely
+(in the typical best-match sense of XSLT) matches the current (element)
+node location.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.string.upper">
+<refnamediv>
+<refname>string.upper</refname>
+<refpurpose>Converts a string to all uppercase letters</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="string.upper"&gt;
+&lt;xsl:param name="string" select="''"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Given a string, this template does a language-aware conversion
+of that string to all uppercase letters, based on the values of the
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal>. All other characters are left
+unchanged.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+
+<para>The string to convert to uppercase.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1></refentry>
+
+<refentry id="template.string.lower">
+<refnamediv>
+<refname>string.lower</refname>
+<refpurpose>Converts a string to all lowercase letters</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="string.lower"&gt;
+&lt;xsl:param name="string" select="''"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Given a string, this template does a language-aware conversion
+of that string to all lowercase letters, based on the values of the
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal>. All other characters are left
+unchanged.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+
+<para>The string to convert to lowercase.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1></refentry>
+
+<refentry id="template.select.choice.separator">
+<refnamediv>
+<refname>select.choice.separator</refname>
+<refpurpose>Returns localized choice separator</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.choice.separator"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template enables auto-generation of an appropriate
+ localized "choice" separator (for example, "and" or "or") before
+ the final item in an inline list (though it could also be useful
+ for generating choice separators for non-inline lists).</para>
+
+
+<para>It currently works by evaluating a processing instruction
+ (PI) of the form &lt;?dbchoice&#160;choice="foo"?&gt; :
+
+<itemizedlist>
+ <listitem>
+ <simpara>if the value of the <tag>choice</tag>
+ pseudo-attribute is "and" or "or", returns a localized "and"
+ or "or"</simpara>
+ </listitem>
+ <listitem>
+ <simpara>otherwise returns the literal value of the
+ <tag>choice</tag> pseudo-attribute</simpara>
+ </listitem>
+ </itemizedlist>
+
+ The latter is provided only as a temporary workaround because the
+ locale files do not currently have translations for the word
+ <wordasword>or</wordasword>. So if you want to generate a a
+ logical "or" separator in French (for example), you currently need
+ to do this:
+ <literallayout>&lt;?dbchoice choice="ou"?&gt;</literallayout>
+ </para>
+
+ <warning>
+
+<para>The <tag>dbchoice</tag> processing instruction is
+ an unfortunate hack; support for it may disappear in the future
+ (particularly if and when a more appropriate means for marking
+ up "choice" lists becomes available in DocBook).</para>
+
+ </warning>
+ </refsect1></refentry>
+
+<refentry id="template.evaluate.info.profile">
+<refnamediv>
+<refname>evaluate.info.profile</refname>
+<refpurpose>Evaluates an info profile</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="evaluate.info.profile"&gt;
+&lt;xsl:param name="profile"/&gt;
+&lt;xsl:param name="info"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template evaluates an "info profile" matching the XPath
+ expression given by the <parameter>profile</parameter>
+ parameter. It relies on the XSLT <function>evaluate()</function>
+ extension function.</para>
+
+
+
+<para>The value of the <parameter>profile</parameter> parameter
+ can include the literal string <literal>$info</literal>. If found
+ in the value of the <parameter>profile</parameter> parameter, the
+ literal string <literal>$info</literal> string is replaced with
+ the value of the <parameter>info</parameter> parameter, which
+ should be a set of <replaceable>*info</replaceable> nodes; the
+ expression is then evaluated using the XSLT
+ <function>evaluate()</function> extension function.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>profile</term>
+ <listitem>
+
+<para>A string representing an XPath expression </para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of *info nodes</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a node (the result of evaluating the
+ <parameter>profile</parameter> parameter)</para>
+
+ </refsect1></refentry>
+</reference>
+ <reference id="refentry" xml:base="../common/refentry.xml">
+ <info>
+ <title>Common &#187; Refentry Metadata Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: refentry.xsl 7867 2008-03-07 09:54:25Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the &#8220;refentry
+ metadata&#8221; templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is provided
+ for developers writing customization layers for the stylesheets.</para>
+
+ <note>
+
+<para>Currently, only the manpages stylesheets make use of these
+ templates. They are, however, potentially useful elsewhere.</para>
+
+ </note>
+ </partintro>
+
+<refentry id="template.get.refentry.metadata">
+<refnamediv>
+<refname>get.refentry.metadata</refname>
+<refpurpose>Gathers metadata from a refentry and its ancestors</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.metadata"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Reference documentation for particular commands, functions,
+ etc., is sometimes viewed in isolation from its greater "context". For
+ example, users view Unix man pages as, well, individual pages, not as
+ part of a "book" of some kind. Therefore, it is sometimes necessary to
+ embed "context" information in output for each <tag>refentry</tag>.</para>
+
+
+
+<para>However, one problem is that different users mark up that
+ context information in different ways. Often (usually), the
+ context information is not actually part of the content of the
+ <tag>refentry</tag> itself, but instead part of the content of a
+ parent or ancestor element to the <tag>refentry</tag>. And
+ even then, DocBook provides a variety of elements that users might
+ potentially use to mark up the same kind of information. One user
+ might use the <tag>productnumber</tag> element to mark up version
+ information about a particular product, while another might use
+ the <tag>releaseinfo</tag> element.</para>
+
+
+
+<para>Taking all that in mind, the
+ <function>get.refentry.metadata</function> template tries to gather
+ metadata from a <tag>refentry</tag> element and its ancestor
+ elements in an intelligent and user-configurable way. The basic
+ mechanism used in the XPath expressions throughout this stylesheet
+ is to select the relevant metadata from the *info element that is
+ closest to the actual <tag>refentry</tag>&#160;&#8211; either on the
+ <tag>refentry</tag> itself, or on its nearest ancestor.</para>
+
+
+ <note>
+
+<para>The <function>get.refentry.metadata</function>
+ template is actually just sort of a "driver" template; it
+ calls other templates that do the actual data collection,
+ then returns the data as a set.</para>
+
+ </note>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing user preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a node set with the following elements. The
+ descriptions are verbatim from the <literal>man(7)</literal> man
+ page.
+
+<variablelist>
+ <varlistentry>
+ <term>title</term>
+ <listitem>
+
+<para>the title of the man page (e.g., <literal>MAN</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>section</term>
+ <listitem>
+
+<para>the section number the man page should be placed in (e.g.,
+ <literal>7</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>date</term>
+ <listitem>
+
+<para>the date of the last revision</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source</term>
+ <listitem>
+
+<para>the source of the command</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>manual</term>
+ <listitem>
+
+<para>the title of the manual (e.g., <citetitle>Linux
+ Programmer's Manual</citetitle>)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ </refsect1></refentry>
+
+<refentry id="template.get.refentry.title">
+<refnamediv>
+<refname>get.refentry.title</refname>
+<refpurpose>Gets title metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.title"&gt;
+&lt;xsl:param name="refname"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ title of the man page (e.g., <literal>MAN</literal>). This differs
+ from <tag>refname</tag> in that, if the <tag>refentry</tag> has a
+ <tag>refentrytitle</tag>, we use that as the <tag>title</tag>;
+ otherwise, we just use first <tag>refname</tag> in the first
+ <tag>refnamediv</tag> in the source.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>title</tag> node.</para>
+</refsect1></refentry>
+
+<refentry id="template.get.refentry.section">
+<refnamediv>
+<refname>get.refentry.section</refname>
+<refpurpose>Gets section metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.section"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="quiet" select="0"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ section number the man page should be placed in (e.g.,
+ <literal>7</literal>)". If we do not find a <tag>manvolnum</tag>
+ specified in the source, and we find that the <tag>refentry</tag> is
+ for a function, we use the section number <literal>3</literal>
+ ["Library calls (functions within program libraries)"]; otherwise, we
+ default to using <literal>1</literal> ["Executable programs or shell
+ commands"].</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>quiet</term>
+ <listitem>
+
+<para>If non-zero, no "missing" message is emitted</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a string representing a section number.</para>
+</refsect1></refentry>
+
+<refentry id="template.get.refentry.date">
+<refnamediv>
+<refname>get.refentry.date</refname>
+<refpurpose>Gets date metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.date"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ date of the last revision". If we cannot find a date in the source, we
+ generate one.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>date</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry id="template.get.refentry.source">
+<refnamediv>
+<refname>get.refentry.source</refname>
+<refpurpose>Gets source metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.source"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ source of the command", and provides the following examples:
+
+<itemizedlist>
+ <listitem>
+
+<para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+
+ </listitem>
+ <listitem>
+
+<para>For system calls, use the version of the kernel that you are
+ currently looking at: Linux 0.99.11.</para>
+
+ </listitem>
+ <listitem>
+
+<para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+
+
+<para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "source", except that <literal>solbook(5)</literal> names it
+ "software" and describes it like this:
+ <blockquote>
+
+<para>This is the name of the software product that the topic
+ discussed on the reference page belongs to. For example UNIX
+ commands are part of the <literal>SunOS x.x</literal>
+ release.</para>
+
+ </blockquote>
+ </para>
+
+
+
+<para>In practice, there are many pages that simply have a version
+ number in the "source" field. So, it looks like what we have is a
+ two-part field,
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>,
+ where:
+
+<variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+
+<para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+
+<para>version name</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ Each part is optional. If the <replaceable>Name</replaceable> is a
+ product name, then the <replaceable>Version</replaceable> is probably
+ the version of the product. Or there may be no
+ <replaceable>Name</replaceable>, in which case, if there is a
+ <replaceable>Version</replaceable>, it is probably the version of the
+ item itself, not the product it is part of. Or, if the
+ <replaceable>Name</replaceable> is an organization name, then there
+ probably will be no <replaceable>Version</replaceable>.
+ </para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>source</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry id="template.get.refentry.source.name">
+<refnamediv>
+<refname>get.refentry.source.name</refname>
+<refpurpose>Gets source-name metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.source.name"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>A "source name" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "source name" data.</para>
+
+ </refsect1></refentry>
+
+<refentry id="template.get.refentry.version">
+<refnamediv>
+<refname>get.refentry.version</refname>
+<refpurpose>Gets version metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.version"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>A "version" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "version" data.</para>
+
+ </refsect1></refentry>
+
+<refentry id="template.get.refentry.manual">
+<refnamediv>
+<refname>get.refentry.manual</refname>
+<refpurpose>Gets source metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.manual"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ title of the manual (e.g., <citetitle>Linux Programmer's
+ Manual</citetitle>)". Here are some examples from existing man pages:
+
+<itemizedlist>
+ <listitem>
+
+<para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+
+
+<para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "manual", except that <literal>solbook(5)</literal> names it
+ "sectdesc" and describes it like this:
+ <blockquote>
+
+<para>This is the section title of the reference page; for
+ example <literal>User Commands</literal>.</para>
+
+ </blockquote>
+ </para>
+
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>manual</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry id="template.get.refentry.metadata.prefs">
+<refnamediv>
+<refname>get.refentry.metadata.prefs</refname>
+<refpurpose>Gets user preferences for refentry metadata gathering</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.metadata.prefs"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The DocBook XSL stylesheets include several user-configurable
+ global stylesheet parameters for controlling <tag>refentry</tag>
+ metadata gathering. Those parameters are not read directly by the
+ other <tag>refentry</tag> metadata-gathering
+ templates. Instead, they are read only by the
+ <function>get.refentry.metadata.prefs</function> template,
+ which assembles them into a structure that is then passed to
+ the other <tag>refentry</tag> metadata-gathering
+ templates.</para>
+
+
+
+<para>So the, <function>get.refentry.metadata.prefs</function>
+ template is the only interface to collecting stylesheet parameters for
+ controlling <tag>refentry</tag> metadata gathering.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<para>There are no local parameters for this template; however, it
+ does rely on a number of global parameters.</para>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>manual</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry id="template.set.refentry.metadata">
+<refnamediv>
+<refname>set.refentry.metadata</refname>
+<refpurpose>Sets content of a refentry metadata item</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="set.refentry.metadata"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="contents"/&gt;
+&lt;xsl:param name="context"/&gt;
+&lt;xsl:param name="preferred"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <function>set.refentry.metadata</function> template is
+ called each time a suitable source element is found for a certain
+ metadata field.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A single *info node that contains the selected source element.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>contents</term>
+ <listitem>
+
+<para>A node containing the selected source element.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>context</term>
+ <listitem>
+
+<para>A string describing the metadata context in which the
+ <function>set.refentry.metadata</function> template was
+ called: either "date", "source", "version", or "manual".</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns formatted contents of a selected source element.</para>
+</refsect1></refentry>
+</reference>
+ <reference id="utility" xml:base="../common/utility.xml">
+ <info>
+ <title>Common &#187; Utility Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ miscellaneous utility templates in the DocBook XSL
+ Stylesheets.</para>
+
+ <note>
+
+<para>These templates are defined in a separate file from the set
+ of &#8220;common&#8221; templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+
+
+<para>The utility templates don&#8217;t import or include any DocBook
+ XSL stylesheet parameters, so the utility templates can be used
+ without importing the whole set of parameters.</para>
+
+ </note>
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry id="template.log.message">
+<refnamediv>
+<refname>log.message</refname>
+<refpurpose>Logs/emits formatted notes and warnings</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="log.message"&gt;
+&lt;xsl:param name="level"/&gt;
+&lt;xsl:param name="source"/&gt;
+&lt;xsl:param name="context-desc"/&gt;
+&lt;xsl:param name="context-desc-field-length"&gt;12&lt;/xsl:param&gt;
+&lt;xsl:param name="context-desc-padded"&gt;
+ &lt;xsl:if test="not($context-desc = '')"&gt;
+ &lt;xsl:call-template name="pad-string"&gt;
+ &lt;xsl:with-param name="leftRight"&gt;right&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="padVar" select="substring($context-desc, 1, $context-desc-field-length)"/&gt;
+ &lt;xsl:with-param name="length" select="$context-desc-field-length"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:if&gt;
+ &lt;/xsl:param&gt;
+&lt;xsl:param name="message"/&gt;
+&lt;xsl:param name="message-field-length" select="45"/&gt;
+&lt;xsl:param name="message-padded"&gt;
+ &lt;xsl:variable name="spaces-for-blank-level"&gt;
+ &lt;!-- * if the level field is blank, we'll need to pad out --&gt;
+ &lt;!-- * the message field with spaces to compensate --&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$level = ''"&gt;
+ &lt;xsl:value-of select="4 + 2"/&gt;
+ &lt;!-- * 4 = hard-coded length of comment text ("Note" or "Warn") --&gt;
+ &lt;!-- * + 2 = length of colon-plus-space separator ": " --&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="0"/&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="spaces-for-blank-context-desc"&gt;
+ &lt;!-- * if the context-description field is blank, we'll need --&gt;
+ &lt;!-- * to pad out the message field with spaces to compensate --&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$context-desc = ''"&gt;
+ &lt;xsl:value-of select="$context-desc-field-length + 2"/&gt;
+ &lt;!-- * + 2 = length of colon-plus-space separator ": " --&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="0"/&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="extra-spaces" select="$spaces-for-blank-level + $spaces-for-blank-context-desc"/&gt;
+ &lt;xsl:call-template name="pad-string"&gt;
+ &lt;xsl:with-param name="leftRight"&gt;right&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="padVar" select="substring($message, 1, ($message-field-length + $extra-spaces))"/&gt;
+ &lt;xsl:with-param name="length" select="$message-field-length + $extra-spaces"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <function>log.message</function> template is a utility
+ template for logging/emitting formatted messages&#160;&#8211; that is,
+ notes and warnings, along with a given log &#8220;level&#8221; and an
+ identifier for the &#8220;source&#8221; that the message relates to.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>level</term>
+ <listitem>
+
+<para>Text to log/emit in the message-level field to
+ indicate the message level
+ (<literal>Note</literal> or
+ <literal>Warning</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>source</term>
+ <listitem>
+
+<para>Text to log/emit in the source field to identify the
+ &#8220;source&#8221; to which the notification/warning relates.
+ This can be any arbitrary string, but because the
+ message lacks line and column numbers to identify the
+ exact part of the source document to which it
+ relates, the intention is that the value you pass
+ into the <literal>source</literal> parameter should
+ give the user some way to identify the portion of
+ their source document on which to take potentially
+ take action in response to the log message (for
+ example, to edit, change, or add content).</para>
+
+
+<para>So the <literal>source</literal> value should be,
+ for example, an ID, book/chapter/article title, title
+ of some formal object, or even a string giving an
+ XPath expression.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc</term>
+ <listitem>
+
+<para>Text to log/emit in the context-description field to
+ describe the context for the message.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc-field-length</term>
+ <listitem>
+
+<para>Specifies length of the context-description field
+ (in characters); default is 12</para>
+
+
+<para>If the text specified by the
+ <literal>context-desc</literal> parameter is longer
+ than the number of characters specified in
+ <literal>context-desc-field-length</literal>, it is
+ truncated to <literal>context-desc-field-length</literal>
+ (12 characters by default).</para>
+
+
+<para>If the specified text is shorter than
+ <literal>context-desc-field-length</literal>,
+ it is right-padded out to
+ <literal>context-desc-field-length</literal> (12 by
+ default).</para>
+
+
+<para>If no value has been specified for the
+ <literal>context-desc</literal> parameter, the field is
+ left empty and the text of the log message begins with
+ the value of the <literal>message</literal>
+ parameter.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message</term>
+ <listitem>
+
+<para>Text to log/emit in the actual message field</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message-field-length</term>
+ <listitem>
+
+<para>Specifies length of the message
+ field (in characters); default is 45</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Outputs a message (generally, to standard error).</para>
+</refsect1></refentry>
+
+<refentry id="template.get.doc.title">
+<refnamediv>
+<refname>get.doc.title</refname>
+<refpurpose>Gets a title from the current document</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.doc.title"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <function>get.doc.title</function> template is a
+ utility template for returning the first title found in the
+ current document.</para>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a string containing some identifying title for the
+ current document .</para>
+</refsect1></refentry>
+
+<refentry id="template.pad-string">
+<refnamediv>
+<refname>pad-string</refname>
+<refpurpose>Right-pads or left-pads a string out to a certain length</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="pad-string"&gt;
+&lt;xsl:param name="padChar" select="' '"/&gt;
+&lt;xsl:param name="leftRight"&gt;left&lt;/xsl:param&gt;
+&lt;xsl:param name="padVar"/&gt;
+&lt;xsl:param name="length"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This function takes string <parameter>padVar</parameter> and
+ pads it out in the direction <parameter>rightLeft</parameter> to
+ the string-length <parameter>length</parameter>, using string
+ <parameter>padChar</parameter> (a space character by default) as
+ the padding string (note that <parameter>padChar</parameter> can
+ be a string; it is not limited to just being a single
+ character).</para>
+
+ <note>
+
+<para>This function began as a copy of Nate Austin's
+ <function>prepend-pad</function> function in the <link xlink:href="http://www.dpawson.co.uk/xsl/sect2/padding.html">Padding
+ Content</link> section of Dave Pawson's <link xlink:href="http://www.dpawson.co.uk/xsl/index.html">XSLT
+ FAQ</link>.</para>
+
+ </note>
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a (padded) string.</para>
+</refsect1></refentry>
+</reference>
+ <reference id="charmap" xml:base="../common/charmap.xml">
+ <info>
+ <title>Common &#187; Character-Map Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ character-map templates in the DocBook XSL Stylesheets.</para>
+
+ <note>
+
+<para>These templates are defined in a separate file from the set
+ of &#8220;common&#8221; templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+
+
+<para>The character-map templates don&#8217;t import or include
+ any DocBook XSL stylesheet parameters, so the
+ character-map templates can be used without importing the
+ whole set of parameters.</para>
+
+ </note>
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry id="template.apply-character-map">
+<refnamediv>
+<refname>apply-character-map</refname>
+<refpurpose>Applies an XSLT character map</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="apply-character-map"&gt;
+&lt;xsl:param name="content"/&gt;
+&lt;xsl:param name="map.contents"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template applies an <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character map</link>; that is, it causes certain
+ individual characters to be substituted with strings of one
+ or more characters. It is useful mainly for replacing
+ multiple &#8220;special&#8221; characters or symbols in the same target
+ content. It uses the value of
+ <parameter>map.contents</parameter> to do substitution on
+ <parameter>content</parameter>, and then returns the
+ modified contents.</para>
+
+ <note>
+
+<para>This template is a very slightly modified version of
+ Jeni Tennison&#8217;s <function>replace_strings</function>
+ template in the <link xlink:href="http://www.dpawson.co.uk/xsl/sect2/StringReplace.html#d9351e13">multiple string replacements</link> section of Dave Pawson&#8217;s
+ <link xlink:href="http://www.dpawson.co.uk/xsl/index.html">XSLT FAQ</link>.</para>
+
+
+<para>The <function>apply-string-subst-map</function>
+ template is essentially the same template as the
+ <function>apply-character-map</function> template; the
+ only difference is that in the map that
+ <function>apply-string-subst-map</function> expects, <tag class="attribute">oldstring</tag> and <tag class="attribute">newstring</tag> attributes are used
+ instead of <tag class="attribute">character</tag> and <tag class="attribute">string</tag> attributes.</para>
+
+ </note>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>content</term>
+ <listitem>
+
+<para>The content on which to perform the character-map
+ substitution.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>map.contents</term>
+ <listitem>
+
+<para>A node set of elements, with each element having
+ the following attributes:
+
+<itemizedlist>
+ <listitem>
+ <simpara><tag class="attribute">character</tag>, a
+ character to be replaced</simpara>
+ </listitem>
+ <listitem>
+ <simpara><tag class="attribute">string</tag>, a
+ string with which to replace <tag class="attribute">character</tag></simpara>
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry id="template.read-character-map">
+<refnamediv>
+<refname>read-character-map</refname>
+<refpurpose>Reads in all or part of an XSLT character map</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="read-character-map"&gt;
+&lt;xsl:param name="use.subset"/&gt;
+&lt;xsl:param name="subset.profile"/&gt;
+&lt;xsl:param name="uri"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The XSLT 2.0 specification describes <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">character maps</link> and explains how they may be used
+ to allow a specific character appearing in a text or
+ attribute node in a final result tree to be substituted by
+ a specified string of characters during serialization. The
+ <function>read-character-map</function> template provides a
+ means for reading and using character maps with XSLT
+ 1.0-based tools.</para>
+
+
+<para>This template reads the character-map contents from
+ <parameter>uri</parameter> (in full or in part, depending on
+ the value of the <parameter>use.subset</parameter>
+ parameter), then passes those contents to the
+ <function>apply-character-map</function> template, along with
+ <parameter>content</parameter>, the data on which to perform
+ the character substitution.</para>
+
+
+<para>Using the character map &#8220;in part&#8221; means that it uses only
+ those <tag>output-character</tag> elements that match the
+ XPath expression given in the value of the
+ <parameter>subset.profile</parameter> parameter. The current
+ implementation of that capability here relies on the
+ <function>evaluate</function> extension XSLT function.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>use.subset</term>
+ <listitem>
+
+<para>Specifies whether to use a subset of the character
+ map instead of the whole map; boolean
+ <literal>0</literal> or <literal>1</literal></para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>subset.profile</term>
+ <listitem>
+
+<para>XPath expression that specifies what subset of the
+ character map to use</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>uri</term>
+ <listitem>
+
+<para>URI for a character map</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+</reference>
+ </part>
+ <part id="table-templates">
+ <?dbhtml dir="fo"?>
+
+ <info xml:base="../fo/table.xml">
+ <title>Formatting Object Table Reference</title>
+ <releaseinfo role="meta">
+ $Id: table.xsl 8814 2010-08-09 21:19:53Z bobstayton $
+ </releaseinfo>
+ </info>
+ <partintro id="partintro" xml:base="../fo/table.xml">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the FO
+ table-processing templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry id="template.calc.column.width" xml:base="../fo/table.xml">
+<refnamediv>
+<refname>calc.column.width</refname>
+<refpurpose>Calculate an XSL FO table column width specification from a
+CALS table column width specification.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="calc.column.width"&gt;
+&lt;xsl:param name="colwidth"&gt;1*&lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>CALS expresses table column widths in the following basic
+forms:</para>
+
+
+
+<itemizedlist>
+<listitem>
+
+<para><emphasis>99.99units</emphasis>, a fixed length specifier.</para>
+
+</listitem>
+<listitem>
+
+<para><emphasis>99.99</emphasis>, a fixed length specifier without any units.</para>
+
+</listitem>
+<listitem>
+
+<para><emphasis>99.99*</emphasis>, a relative length specifier.</para>
+
+</listitem>
+<listitem>
+
+<para><emphasis>99.99*+99.99units</emphasis>, a combination of both.</para>
+
+</listitem>
+</itemizedlist>
+
+
+
+<para>The CALS units are points (pt), picas (pi), centimeters (cm),
+millimeters (mm), and inches (in). These are the same units as XSL,
+except that XSL abbreviates picas "pc" instead of "pi". If a length
+specifier has no units, the CALS default unit (pt) is assumed.</para>
+
+
+
+<para>Relative length specifiers are represented in XSL with the
+proportional-column-width() function.</para>
+
+
+
+<para>Here are some examples:</para>
+
+
+
+<itemizedlist>
+<listitem>
+
+<para>"36pt" becomes "36pt"</para>
+
+</listitem>
+<listitem>
+
+<para>"3pi" becomes "3pc"</para>
+
+</listitem>
+<listitem>
+
+<para>"36" becomes "36pt"</para>
+
+</listitem>
+<listitem>
+
+<para>"3*" becomes "proportional-column-width(3)"</para>
+
+</listitem>
+<listitem>
+
+<para>"3*+2pi" becomes "proportional-column-width(3)+2pc"</para>
+
+</listitem>
+<listitem>
+
+<para>"1*+2" becomes "proportional-column-width(1)+2pt"</para>
+
+</listitem>
+</itemizedlist>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>colwidth</term>
+<listitem>
+
+<para>The CALS column width specification.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The XSL column width specification.</para>
+
+</refsect1></refentry>
+
+ </part>
+ <part id="template">
+ <?dbhtml dir="template"?><?dbhtml filename="index.html"?>
+
+
+ <info xml:base="../template/titlepage.xml">
+ <title>Titlepage Template Stylesheet Reference</title>
+ <releaseinfo role="meta">
+ $Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro id="intro_partintro" xml:base="../template/titlepage.xml">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ &#8220;titlepage&#8221; templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry id="templates" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>t:templates</refname>
+<refpurpose>Construct a stylesheet for the templates provided</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:templates"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>t:templates</literal> element is the root of a
+set of templates. This template creates an appropriate
+<literal>xsl:stylesheet</literal> for the templates.</para>
+
+
+
+<para>If the <literal>t:templates</literal> element has a
+<literal>base-stylesheet</literal> attribute, an
+<literal>xsl:import</literal> statement is constructed for it.</para>
+
+</refsect1></refentry>
+
+<refentry id="star" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>xsl:*</refname>
+<refpurpose>Copy xsl: elements straight through</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="xsl:*"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template simply copies the xsl: elements
+straight through into the result tree.</para>
+
+</refsect1></refentry>
+
+<refentry id="titlepage" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>t:titlepage</refname>
+<refpurpose>Create the templates necessary to construct a title page</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>t:titlepage</literal> element creates a set of
+templates for processing the titlepage for an element. The
+<quote>root</quote> of this template set is the template named
+<quote><literal>wrapper.titlepage</literal></quote>. That is the
+template that should be called to generate the title page.
+</para>
+
+
+
+<para>The <literal>t:titlepage</literal> element has three attributes:
+
+
+<variablelist>
+<varlistentry><term>element</term>
+<listitem>
+<para>The name of the source document element for which
+these templates apply. In other words, to make a title page for the
+<tag>article</tag> element, set the
+<tag class="attribute">element</tag> attribute to
+<quote><literal>article</literal></quote>. This attribute is required.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>wrapper</term>
+<listitem>
+<para>The entire title page can be wrapped with an element.
+This attribute identifies that element.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>class</term>
+<listitem>
+<para>If the <tag class="attribute">class</tag> attribute
+is set, a <tag class="attribute">class</tag> attribute with this
+value will be added to the wrapper element that surrounds the entire
+title page.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</para>
+
+
+
+<para>Any other attributes are copied through literally to the
+wrapper element.</para>
+
+
+
+<para>The content of a <literal>t:titlepage</literal> is one or
+more <literal>t:titlepage-content</literal>,
+<literal>t:titlepage-separator</literal>, and
+<literal>t:titlepage-before</literal> elements.</para>
+
+
+
+<para>Each of these elements may be provided for the <quote>recto</quote>
+and <quote>verso</quote> sides of the title page.</para>
+
+
+</refsect1></refentry>
+
+<refentry id="attr_star_in_copy.literal.atts" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>@* (in copy.literal.atts mode)</refname>
+<refpurpose>Copy t:titlepage attributes</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="@*" mode="copy.literal.atts"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template copies all of the <quote>other</quote> attributes
+from a <literal>t:titlepage</literal> element onto the specified
+wrapper.</para>
+
+</refsect1></refentry>
+
+<refentry id="titlepage-content" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>t:titlepage-content</refname>
+<refpurpose>Create templates for the content of one side of a title page</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage-content"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The title page content, that is, the elements from the source
+document that are rendered on the title page, can be controlled independently
+for the recto and verso sides of the title page.</para>
+
+
+
+<para>The <literal>t:titlepage-content</literal> element has two attributes:
+
+
+<variablelist>
+<varlistentry><term>side</term>
+<listitem>
+<para>Identifies the side of the page to which this title
+page content applies. The
+<tag class="attribute">side</tag> attribute is required and
+must be set to either
+<quote><literal>recto</literal></quote> or
+<quote><literal>verso</literal></quote>. In addition, you must specify
+exactly one <literal>t:titlepage-content</literal> for each side
+within each <literal>t:titlepage</literal>.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>order</term>
+<listitem>
+<para>Indicates how the order of the elements presented on
+the title page is determined. If the
+<tag class="attribute">order</tag> is
+<quote><literal>document</literal></quote>, the elements are presented
+in document order. Otherwise (if the
+<tag class="attribute">order</tag> is
+<quote><literal>stylesheet</literal></quote>), the elements are presented
+in the order that they appear in the template (and consequently in
+the stylesheet).</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</para>
+
+
+
+<para>The content of a <literal>t:titlepage-content</literal> element is
+a list of element names. These names should be unqualified. They identify
+the elements in the source document that should appear on the title page.
+</para>
+
+
+
+<para>Each element may have a single attribute:
+<tag class="attribute">predicate</tag>. The value of this
+attribute is used as a predicate for the expression that matches
+the element on which it occurs.</para>
+
+
+
+<para>In other words, to put only the first three authors on the
+recto-side of a title
+page, you could specify:
+
+<screen>
+ &lt;t:titlepage-contents side="recto"&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;author predicate="[count(previous-sibling::author)&lt;2]"/&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;/t:titlepage-contents&gt;
+</screen>
+</para>
+
+
+
+<para>Usually, the elements so named are empty. But it is possible to
+make one level of selection within them. Suppose that you want to
+process <literal>authorgroup</literal> elements on the title page, but
+you want to select only proper authors, editors, or corporate authors,
+not collaborators or other credited authors.</para>
+
+
+
+<para>In that case, you can put a <literal>t:or</literal> group inside
+the <literal>authorgroup</literal> element:
+
+<screen>
+ &lt;t:titlepage-contents side="recto"&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;authorgroup&gt;
+ &lt;t:or&gt;
+ &lt;author/&gt;
+ &lt;editor/&gt;
+ &lt;corpauthor/&gt;
+ &lt;/t:or&gt;
+ &lt;/authorgroup&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;/t:titlepage-contents&gt;
+</screen>
+</para>
+
+
+
+<para>This will have the effect of automatically generating a template
+for processing <literal>authorgroup</literal>s in the title page mode,
+selecting only the specified children. If you need more complex processing,
+you'll have to construct the templates by hand.</para>
+
+
+</refsect1></refentry>
+
+<refentry id="titlepage-separator" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>t:titlepage-separator</refname>
+<refpurpose>Create templates for the separator</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage-separator"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The title page is separated from the content which follows it by
+the markup specified in the <literal>t:titlepage-separator</literal>
+element.</para>
+
+</refsect1></refentry>
+
+<refentry id="titlepage-before" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>t:titlepage-before</refname>
+<refpurpose>Create templates for what precedes a title page</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage-before"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Each side of the title page is preceded by the markup specified
+in the <literal>t:titlepage-before</literal> element for that
+side.</para>
+
+</refsect1></refentry>
+
+<refentry id="star_in_copy" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>* (in copy mode)</refname>
+<refpurpose>Copy elements</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="copy"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template simply copies the elements that it applies to
+straight through into the result tree.</para>
+
+</refsect1></refentry>
+
+<refentry id="attr_star_in_copy" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>@* (in copy mode)</refname>
+<refpurpose>Copy attributes</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="@*" mode="copy"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template simply copies the attributes that it applies to
+straight through into the result tree.</para>
+
+</refsect1></refentry>
+
+<refentry id="attr_star_in_document.order" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>* (in document.order mode)</refname>
+<refpurpose>Create rules to process titlepage elements in document order</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="document.order"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the hairy
+select expression necessary to process each of those elements in
+the title page.</para>
+
+
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+
+</refsect1></refentry>
+
+<refentry id="star_in_document.order" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>* (in document.order mode)</refname>
+<refpurpose>Create rules to process titlepage elements in stylesheet order</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="document.order"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the set
+of <literal>xsl:apply-templates</literal> elements necessary
+process each of those elements in the title page.</para>
+
+
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+
+</refsect1></refentry>
+
+<refentry id="star_in_titlepage.specialrules" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>* (in titlepage.specialrules mode)</refname>
+<refpurpose>Create templates for special rules</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="titlepage.specialrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process all of the descendants of the
+<literal>t:titlepage-content</literal> element that require special
+processing. At present, that's just <literal>t:or</literal> elements.
+</para>
+
+</refsect1></refentry>
+
+<refentry id="star_in_titlepage.subrules" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>* (in titlepage.subrules mode)</refname>
+<refpurpose>Create template for individual special rules</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="titlepage.subrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process the children of special
+template elements.
+</para>
+
+</refsect1></refentry>
+
+<refentry id="or" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>t:or</refname>
+<refpurpose>Process the t:or special rule</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:or"/&gt;&lt;xsl:template match="t:or" mode="titlepage.subrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template processes t:or.</para>
+
+</refsect1></refentry>
+
+<refentry id="or_in_titlepage.subrules" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>t:or (in titlepage.subrules mode)</refname>
+<refpurpose>Process the t:or special rule in
+titlepage.subrules mode</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:or" mode="titlepage.subrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The titlepage.subrules mode doesn't apply to t:or, so just
+reprocess this node in the normal mode.</para>
+
+</refsect1></refentry>
+
+<refentry id="template.element-or-list" xml:base="../template/titlepage.xml">
+<refnamediv>
+<refname>element-or-list</refname>
+<refpurpose>Construct the "or-list" used in the select attribute for
+special rules.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="element-or-list"&gt;
+&lt;xsl:param name="elements" select="*"/&gt;
+&lt;xsl:param name="element.count" select="count($elements)"/&gt;
+&lt;xsl:param name="count" select="1"/&gt;
+&lt;xsl:param name="orlist"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Walk through each of the children of t:or, producing the
+text of the select attribute.</para>
+
+</refsect1></refentry>
+
+ </part>
+ </book>
+</set><!-- * vim: set ft=docbk foldlevel=2: --> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml
new file mode 100644
index 0000000..3c70d32
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml
@@ -0,0 +1,11 @@
+<legalnotice xmlns="http://docbook.org/ns/docbook" version="5.0"
+ xml:id="warranty"><title>Warranty</title>
+<para>THE SOFTWARE IS PROVIDED <quote>AS IS</quote>,
+WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL NORMAN WALSH OR ANY
+OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.</para>
+</legalnotice>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl
new file mode 100644
index 0000000..07ddcea
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl
@@ -0,0 +1,306 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:exsl="http://exslt.org/common"
+ version="1.0"
+ exclude-result-prefixes="exsl db ng">
+
+<xsl:import href="../html/chunk.xsl"/>
+
+<!-- ********************************************************************
+ $Id: eclipse.xsl 8400 2009-04-08 07:44:54Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:message>Formatting from <xsl:value-of
+ select="$rootid"/></xsl:message>
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="process.root"/>
+ <xsl:call-template name="etoc"/>
+ <xsl:call-template name="plugin.xml"/>
+ <xsl:call-template name="helpidx"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:call-template name="etoc"/>
+ <xsl:call-template name="plugin.xml"/>
+ <xsl:call-template name="helpidx"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template name="etoc">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="'toc.xml'"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+
+ <xsl:when test="$rootid != ''">
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="key('id',$rootid)" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="key('id',$rootid)" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <toc label="{normalize-space($title)}" topic="{$href}">
+ <xsl:apply-templates select="key('id',$rootid)/*" mode="etoc"/>
+ </toc>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="/*" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="/*" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="/"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <toc label="{normalize-space($title)}" topic="{$href}">
+ <xsl:apply-templates select="/*/*" mode="etoc"/>
+ </toc>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book|part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc">
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="context" select="/"/> <!-- Generate links relative to the location of root file/toc.xml file -->
+ </xsl:call-template>
+ </xsl:variable>
+
+ <topic label="{normalize-space($title)}" href="{$href}">
+ <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc"/>
+ </topic>
+
+</xsl:template>
+
+<xsl:template match="text()" mode="etoc"/>
+
+<xsl:template name="plugin.xml">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="'plugin.xml'"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <plugin name="{$eclipse.plugin.name}"
+ id="{$eclipse.plugin.id}"
+ version="1.0"
+ provider-name="{$eclipse.plugin.provider}">
+
+ <extension point="org.eclipse.help.toc">
+ <toc file="toc.xml" primary="true"/>
+ </extension>
+ <extension point="org.eclipse.help.index">
+ <index file="index.xml"/>
+ </extension>
+ </plugin>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- The following templates come from the javahelp xsls with modifications needed to make them generate and ecilpse index.xml file -->
+
+<xsl:template name="helpidx">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir, 'index.xml')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="''"/>
+ <xsl:with-param name="doctype-system" select="''"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpidx.content"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+ <xsl:template name="helpidx.content">
+ <index>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)//indexterm" mode="idx">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = '']))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="//indexterm" mode="idx">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = '']))"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </index>
+ </xsl:template>
+
+ <xsl:template match="indexterm[@class='endofrange']" mode="idx"/>
+
+ <xsl:template match="indexterm|primary|secondary|tertiary" mode="idx">
+
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="context" select="/"/> <!-- Generate links relative to the location of root file/toc.xml file -->
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="text">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="following-sibling::*[1][self::see]">
+ <xsl:text> (</xsl:text><xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template><xsl:text> </xsl:text>
+ <xsl:value-of select="following-sibling::*[1][self::see]"/>)</xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="self::indexterm">
+ <xsl:apply-templates select="primary" mode="idx"/>
+ </xsl:when>
+ <xsl:when test="self::primary">
+ <entry keyword="{$text}">
+ <topic href="{$href}"/>
+ <xsl:apply-templates select="following-sibling::secondary" mode="idx"/>
+ </entry>
+ </xsl:when>
+ <xsl:otherwise>
+ <entry keyword="{$text}">
+ <topic href="{$href}"/>
+ <xsl:apply-templates select="following-sibling::tertiary" mode="idx"/>
+ </entry>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl
new file mode 100644
index 0000000..c0d3a4e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:exsl="http://exslt.org/common" version="1.0"
+ exclude-result-prefixes="exsl db ng">
+
+<!--
+********************************************************************************
+ $Id: eclipse3.xsl 8798 2010-08-07 19:12:48Z mzjn $
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ * Copyright (c) 2008 Standards for Technology in Automotive Retail and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * David Carver - STAR - Extended existing eclipse.xsl file to produce valid
+ * eclipse 3.3 plugin.xml with a manifest file.
+ *******************************************************************************
+ -->
+
+ <xsl:import href="eclipse.xsl"/>
+
+ <xsl:param name="eclipse.manifest">1</xsl:param>
+ <xsl:param name="create.plugin.xml">1</xsl:param>
+
+ <xsl:template name="plugin.xml">
+ <xsl:if test="$create.plugin.xml != 0">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir" />
+ </xsl:if>
+ <xsl:value-of select="'plugin.xml'" />
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'" />
+ <xsl:with-param name="encoding" select="'utf-8'" />
+ <xsl:with-param name="indent" select="'yes'" />
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+
+ <xsl:when test="$eclipse.manifest = '1'">
+ <plugin>
+ <extension point="org.eclipse.help.toc">
+ <toc file="toc.xml" primary="true" />
+ </extension>
+ <xsl:if test="$generate.index = 1">
+ <extension point="org.eclipse.help.index">
+ <index file="index.xml"/>
+ </extension>
+ </xsl:if>
+ </plugin>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir" />
+ </xsl:if>
+ <xsl:value-of select="'META-INF/'" />
+ <xsl:value-of select="'MANIFEST.MF'" />
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'" />
+ <xsl:with-param name="encoding" select="'utf-8'" />
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="manifest.content"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <plugin name="{$eclipse.plugin.name}" id="{$eclipse.plugin.id}"
+ version="1.0" provider-name="{$eclipse.plugin.provider}">
+ <extension point="org.eclipse.help.toc">
+ <toc file="toc.xml" primary="true" />
+ </extension>
+ <xsl:if test="$generate.index = 1">
+ <extension point="org.eclipse.help.index">
+ <index file="index.xml"/>
+ </extension>
+ </xsl:if>
+ </plugin>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="manifest.content">
+ <xsl:text>Manifest-Version: 1.0</xsl:text>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:text>Bundle-Version: 1.0</xsl:text>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:text>Bundle-Name: </xsl:text><xsl:value-of select="$eclipse.plugin.name"/>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:text>Bundle-SymbolicName: </xsl:text><xsl:value-of select="$eclipse.plugin.id"/>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:text>Bundle-Vendor: </xsl:text><xsl:value-of select="$eclipse.plugin.provider"/>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
+ \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl
new file mode 100644
index 0000000..5040c9b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="exsl db ng exslt">
+
+<xsl:import href="../html/chunk.xsl"/>
+
+<!-- ********************************************************************
+ $Id: eclipse.xsl 8400 2009-04-08 07:44:54Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:call-template name="etoc"/>
+ <xsl:call-template name="plugin.xml"/>
+ <xsl:call-template name="helpidx"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:call-template name="etoc"/>
+ <xsl:call-template name="plugin.xml"/>
+ <xsl:call-template name="helpidx"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template name="etoc">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="'toc.xml'"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+
+ <xsl:when test="$rootid != ''">
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <toc label="{normalize-space($title)}" topic="{$href}">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]/*" mode="etoc"/>
+ </toc>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="$profiled-nodes/*" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="$profiled-nodes/*" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="$profiled-nodes"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <toc label="{normalize-space($title)}" topic="{$href}">
+ <xsl:apply-templates select="$profiled-nodes/*/*" mode="etoc"/>
+ </toc>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book|part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc">
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="context" select="/"/> <!-- Generate links relative to the location of root file/toc.xml file -->
+ </xsl:call-template>
+ </xsl:variable>
+
+ <topic label="{normalize-space($title)}" href="{$href}">
+ <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc"/>
+ </topic>
+
+</xsl:template>
+
+<xsl:template match="text()" mode="etoc"/>
+
+<xsl:template name="plugin.xml">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="'plugin.xml'"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <plugin name="{$eclipse.plugin.name}" id="{$eclipse.plugin.id}" version="1.0" provider-name="{$eclipse.plugin.provider}">
+
+ <extension point="org.eclipse.help.toc">
+ <toc file="toc.xml" primary="true"/>
+ </extension>
+ <extension point="org.eclipse.help.index">
+ <index file="index.xml"/>
+ </extension>
+ </plugin>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- The following templates come from the javahelp xsls with modifications needed to make them generate and ecilpse index.xml file -->
+
+<xsl:template name="helpidx">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir, 'index.xml')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="''"/>
+ <xsl:with-param name="doctype-system" select="''"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpidx.content"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+ <xsl:template name="helpidx.content">
+ <index>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)//indexterm" mode="idx">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = '']))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="//indexterm" mode="idx">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = '']))"/>
+ <xsl:sort select="normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = '']))"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </index>
+ </xsl:template>
+
+ <xsl:template match="indexterm[@class='endofrange']" mode="idx"/>
+
+ <xsl:template match="indexterm|primary|secondary|tertiary" mode="idx">
+
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="context" select="/"/> <!-- Generate links relative to the location of root file/toc.xml file -->
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="text">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="following-sibling::*[1][self::see]">
+ <xsl:text> (</xsl:text><xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template><xsl:text> </xsl:text>
+ <xsl:value-of select="following-sibling::*[1][self::see]"/>)</xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="self::indexterm">
+ <xsl:apply-templates select="primary" mode="idx"/>
+ </xsl:when>
+ <xsl:when test="self::primary">
+ <entry keyword="{$text}">
+ <topic href="{$href}"/>
+ <xsl:apply-templates select="following-sibling::secondary" mode="idx"/>
+ </entry>
+ </xsl:when>
+ <xsl:otherwise>
+ <entry keyword="{$text}">
+ <topic href="{$href}"/>
+ <xsl:apply-templates select="following-sibling::tertiary" mode="idx"/>
+ </entry>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README
new file mode 100644
index 0000000..5e2587a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README
@@ -0,0 +1,88 @@
+----------------------------------------------------------------------
+ README file for the DocBook XSL Stylesheets
+----------------------------------------------------------------------
+
+These are XSL stylesheets for transforming DocBook XML document
+instances into .epub format.
+
+.epub is an open standard of the The International Digital Publishing Forum (IDPF),
+a the trade and standards association for the digital publishing industry.
+
+An alpha-quality reference implementation (dbtoepub) for a DocBook to .epub
+converter (written in Ruby) is available under bin/.
+
+From http://idpf.org
+ What is EPUB, .epub, OPS/OCF & OEB?
+
+ ".epub" is the file extension of an XML format for reflowable digital
+ books and publications. ".epub" is composed of three open standards,
+ the Open Publication Structure (OPS), Open Packaging Format (OPF) and
+ Open Container Format (OCF), produced by the IDPF. "EPUB" allows
+ publishers to produce and send a single digital publication file
+ through distribution and offers consumers interoperability between
+ software/hardware for unencrypted reflowable digital books and other
+ publications. The Open eBook Publication Structure or "OEB",
+ originally produced in 1999, is the precursor to OPS.
+
+----------------------------------------------------------------------
+.epub Constraints
+----------------------------------------------------------------------
+
+.epub does not support all of the image formats that DocBook supports.
+When an image is available in an accepted format, it will be used. The
+accepted @formats are: 'GIF','GIF87a','GIF89a','JPEG','JPG','PNG','SVG'
+A mime-type for the image will be guessed from the file extension,
+which may not work if your file extensions are non-standard.
+
+Non-supported elements:
+ * <mediaobjectco>
+ * <inlinegraphic>, <graphic>, <textdata>, <imagedata> with text/XML
+ @filerefs
+ * <olink>
+ * <cmdsynopsis> in lists (generic XHTML rendering inability)
+ * <footnote><para><programlisting> (just make your programlistings
+ siblings, rather than descendents of paras)
+
+----------------------------------------------------------------------
+dbtoepub Reference Implementation
+----------------------------------------------------------------------
+
+An alpha-quality DocBook to .epub conversion program, dbtoepub, is provided
+in bin/dbtoepub.
+
+This tool requires:
+ - 'xsltproc' in your PATH
+ - 'zip' in your PATH
+ - Ruby 1.8.4+
+
+Windows compatibility has not been extensively tested; bug reports encouraged.
+[See http://www.zlatkovic.com/libxml.en.html and http://unxutils.sourceforge.net/]
+
+$ dbtoepub --help
+ Usage: dbtoepub [OPTIONS] [DocBook Files]
+
+ dbtoepub converts DocBook <book> and <article>s into to .epub files.
+
+ .epub is defined by the IDPF at www.idpf.org and is made up of 3 standards:
+ - Open Publication Structure (OPS)
+ - Open Packaging Format (OPF)
+ - Open Container Format (OCF)
+
+ Specific options:
+ -d, --debug Show debugging output.
+ -h, --help Display usage info
+ -v, --verbose Make output verbose
+
+
+----------------------------------------------------------------------
+Validation
+----------------------------------------------------------------------
+
+The epubcheck project provides limited validation for .epub documents.
+See http://code.google.com/p/epubcheck/ for details.
+
+----------------------------------------------------------------------
+Copyright information
+----------------------------------------------------------------------
+See the accompanying file named COPYING.
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub
new file mode 100644
index 0000000..615aed0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub
@@ -0,0 +1,76 @@
+#!/usr/bin/env ruby
+# This program converts DocBook documents into .epub files.
+#
+# Usage: dbtoepub [OPTIONS] [DocBook Files]
+#
+# .epub is defined by the IDPF at www.idpf.org and is made up of 3 standards:
+# - Open Publication Structure (OPS)
+# - Open Packaging Format (OPF)
+# - Open Container Format (OCF)
+#
+# Specific options:
+# -c, --css [FILE] Use FILE for CSS on generated XHTML.
+# -d, --debug Show debugging output.
+# -f, --font [OTF FILE] Embed OTF FILE in .epub.
+# -h, --help Display usage info.
+# -s, --stylesheet [XSL FILE] Use XSL FILE as a customization
+# layer (imports epub/docbook.xsl).
+# -v, --verbose Make output verbose.
+
+lib = File.expand_path(File.join(File.dirname(src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub), 'lib'))
+$LOAD_PATH.unshift(lib) if File.exist?(lib)
+
+require 'fileutils'
+require 'optparse'
+require 'tmpdir'
+
+require 'docbook'
+
+verbose = false
+debug = false
+css_file = nil
+otf_files = []
+customization_layer = nil
+output_file = nil
+
+#$DEBUG=true
+
+# Set up the OptionParser
+opts = OptionParser.new
+opts.banner = "Usage: #{File.basename($0)} [OPTIONS] [DocBook Files]
+
+#{File.basename($0)} converts DocBook <book> and <article>s into to .epub files.
+
+.epub is defined by the IDPF at www.idpf.org and is made up of 3 standards:
+- Open Publication Structure (OPS)
+- Open Packaging Format (OPF)
+- Open Container Format (OCF)
+
+Specific options:"
+opts.on("-c", "--css [FILE]", "Use FILE for CSS on generated XHTML.") {|f| css_file = f}
+opts.on("-d", "--debug", "Show debugging output.") {debug = true; verbose = true}
+opts.on("-f", "--font [OTF FILE]", "Embed OTF FILE in .epub.") {|f| otf_files << f}
+opts.on("-h", "--help", "Display usage info.") {puts opts.to_s; exit 0}
+opts.on("-o", "--output [OUTPUT FILE]", "Output ePub file as OUTPUT FILE.") {|f| output_file = f}
+opts.on("-s", "--stylesheet [XSL FILE]", "Use XSL FILE as a customization layer (imports epub/docbook.xsl).") {|f| customization_layer = f}
+opts.on("-v", "--verbose", "Make output verbose.") {verbose = true}
+
+db_files = opts.parse(ARGV)
+if db_files.size == 0
+ puts opts.to_s
+ exit 0
+end
+
+db_files.each {|docbook_file|
+ dir = File.expand_path(File.join(Dir.tmpdir, ".epubtmp#{Time.now.to_f.to_s}"))
+ FileUtils.mkdir_p(dir)
+ e = DocBook::Epub.new(docbook_file, dir, css_file, customization_layer, otf_files)
+
+ if output_file
+ epub_file = output_file
+ else
+ epub_file = File.basename(docbook_file, ".xml") + ".epub"
+ end
+ puts "Rendering DocBook file #{docbook_file} to #{epub_file}" if verbose
+ e.render_to_file(epub_file)
+}
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb
new file mode 100644
index 0000000..7f4f180
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb
@@ -0,0 +1,227 @@
+require 'fileutils'
+require 'rexml/parsers/pullparser'
+
+module DocBook
+
+ class Epub
+ CHECKER = "epubcheck"
+ STYLESHEET = File.expand_path(File.join(File.dirname(src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb), '..', '..', "docbook.xsl"))
+ CALLOUT_PATH = File.join('images', 'callouts')
+ CALLOUT_FULL_PATH = File.expand_path(File.join(File.dirname(src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb), '..', '..', '..', CALLOUT_PATH))
+ CALLOUT_LIMIT = 15
+ CALLOUT_EXT = ".png"
+ XSLT_PROCESSOR = "xsltproc"
+ OUTPUT_DIR = ".epubtmp#{Time.now.to_f.to_s}"
+ MIMETYPE = "application/epub+zip"
+ META_DIR = "META-INF"
+ OEBPS_DIR = "OEBPS"
+ ZIPPER = "zip"
+
+ attr_reader :output_dir
+
+ def initialize(docbook_file, output_dir=OUTPUT_DIR, css_file=nil, customization_layer=nil, embedded_fonts=[])
+ @docbook_file = docbook_file
+ @output_dir = output_dir
+ @meta_dir = File.join(@output_dir, META_DIR)
+ @oebps_dir = File.join(@output_dir, OEBPS_DIR)
+ @css_file = css_file ? File.expand_path(css_file) : css_file
+ @embedded_fonts = embedded_fonts
+ @to_delete = []
+
+ if customization_layer
+ @stylesheet = File.expand_path(customization_layer)
+ else
+ @stylesheet = STYLESHEET
+ end
+
+ unless File.exist?(@docbook_file)
+ raise ArgumentError.new("File #{@docbook_file} does not exist")
+ end
+ end
+
+ def render_to_file(output_file, verbose=false)
+ render_to_epub(output_file, verbose)
+ bundle_epub(output_file, verbose)
+ cleanup_files(@to_delete)
+ end
+
+ def self.invalid?(file)
+ # Obnoxiously, we can't just check for a non-zero output...
+ cmd = %Q(#{CHECKER} "#{file}")
+ output = `#{cmd} 2>&1`
+
+ if $?.to_i == 0
+ return false
+ else
+ STDERR.puts output if $DEBUG
+ return output
+ end
+ end
+
+ private
+ def render_to_epub(output_file, verbose)
+ @collapsed_docbook_file = collapse_docbook()
+
+ chunk_quietly = "--stringparam chunk.quietly " + (verbose ? '0' : '1')
+ callout_path = "--stringparam callout.graphics.path #{CALLOUT_PATH}/"
+ callout_limit = "--stringparam callout.graphics.number.limit #{CALLOUT_LIMIT}"
+ callout_ext = "--stringparam callout.graphics.extension #{CALLOUT_EXT}"
+ html_stylesheet = "--stringparam html.stylesheet #{File.basename(@css_file)}" if @css_file
+ base = "--stringparam base.dir #{OEBPS_DIR}/"
+ unless @embedded_fonts.empty?
+ embedded_fonts = @embedded_fonts.map {|f| File.basename(f)}.join(',')
+ font = "--stringparam epub.embedded.fonts \"#{embedded_fonts}\""
+ end
+ meta = "--stringparam epub.metainf.dir #{META_DIR}/"
+ oebps = "--stringparam epub.oebps.dir #{OEBPS_DIR}/"
+ options = [chunk_quietly,
+ callout_path,
+ callout_limit,
+ callout_ext,
+ base,
+ font,
+ meta,
+ oebps,
+ html_stylesheet,
+ ].join(" ")
+ # Double-quote stylesheet & file to help Windows cmd.exe
+ db2epub_cmd = %Q(cd "#{@output_dir}" && #{XSLT_PROCESSOR} #{options} "#{@stylesheet}" "#{@collapsed_docbook_file}")
+ STDERR.puts db2epub_cmd if $DEBUG
+ success = system(db2epub_cmd)
+ raise "Could not render as .epub to #{output_file} (#{db2epub_cmd})" unless success
+ @to_delete << Dir["#{@meta_dir}/*"]
+ @to_delete << Dir["#{@oebps_dir}/*"]
+ end
+
+ def bundle_epub(output_file, verbose)
+
+ quiet = verbose ? "" : "-q"
+ mimetype_filename = write_mimetype()
+ meta = File.basename(@meta_dir)
+ oebps = File.basename(@oebps_dir)
+ images = copy_images()
+ csses = copy_csses()
+ fonts = copy_fonts()
+ callouts = copy_callouts()
+ # zip -X -r ../book.epub mimetype META-INF OEBPS
+ # Double-quote stylesheet & file to help Windows cmd.exe
+ zip_cmd = %Q(cd "#{@output_dir}" && #{ZIPPER} #{quiet} -X -r "#{File.expand_path(output_file)}" "#{mimetype_filename}" "#{meta}" "#{oebps}")
+ puts zip_cmd if $DEBUG
+ success = system(zip_cmd)
+ raise "Could not bundle into .epub file to #{output_file}" unless success
+ end
+
+ # Input must be collapsed because REXML couldn't find figures in files that
+ # were XIncluded or added by ENTITY
+ # http://sourceforge.net/tracker/?func=detail&aid=2750442&group_id=21935&atid=373747
+ def collapse_docbook
+ # Double-quote stylesheet & file to help Windows cmd.exe
+ collapsed_file = File.join(File.expand_path(File.dirname(@docbook_file)),
+ '.collapsed.' + File.basename(@docbook_file))
+ entity_collapse_command = %Q(xmllint --loaddtd --noent -o "#{collapsed_file}" "#{@docbook_file}")
+ entity_success = system(entity_collapse_command)
+ raise "Could not collapse named entites in #{@docbook_file}" unless entity_success
+
+ xinclude_collapse_command = %Q(xmllint --xinclude -o "#{collapsed_file}" "#{collapsed_file}")
+ xinclude_success = system(xinclude_collapse_command)
+ raise "Could not collapse XIncludes in #{@docbook_file}" unless xinclude_success
+
+ @to_delete << collapsed_file
+ return collapsed_file
+ end
+
+ def copy_callouts
+ new_callout_images = []
+ if has_callouts?
+ calloutglob = "#{CALLOUT_FULL_PATH}/*#{CALLOUT_EXT}"
+ Dir.glob(calloutglob).each {|img|
+ img_new_filename = File.join(@oebps_dir, CALLOUT_PATH, File.basename(img))
+
+ # TODO: What to rescue for these two?
+ FileUtils.mkdir_p(File.dirname(img_new_filename))
+ FileUtils.cp(img, img_new_filename)
+ @to_delete << img_new_filename
+ new_callout_images << img
+ }
+ end
+ return new_callout_images
+ end
+
+ def copy_fonts
+ new_fonts = []
+ @embedded_fonts.each {|font_file|
+ font_new_filename = File.join(@oebps_dir, File.basename(font_file))
+ FileUtils.cp(font_file, font_new_filename)
+ new_fonts << font_file
+ }
+ return new_fonts
+ end
+
+ def copy_csses
+ if @css_file
+ css_new_filename = File.join(@oebps_dir, File.basename(@css_file))
+ FileUtils.cp(@css_file, css_new_filename)
+ end
+ end
+
+ def copy_images
+ image_references = get_image_refs()
+ new_images = []
+ image_references.each {|img|
+ # TODO: It'd be cooler if we had a filetype lookup rather than just
+ # extension
+ if img =~ /\.(svg|png|gif|jpe?g|xml)/i
+ img_new_filename = File.join(@oebps_dir, img)
+ img_full = File.join(File.expand_path(File.dirname(@docbook_file)), img)
+
+ # TODO: What to rescue for these two?
+ FileUtils.mkdir_p(File.dirname(img_new_filename))
+ puts(img_full + ": " + img_new_filename) if $DEBUG
+ FileUtils.cp(img_full, img_new_filename)
+ @to_delete << img_new_filename
+ new_images << img_full
+ end
+ }
+ return new_images
+ end
+
+ def write_mimetype
+ mimetype_filename = File.join(@output_dir, "mimetype")
+ File.open(mimetype_filename, "w") {|f| f.print MIMETYPE}
+ @to_delete << mimetype_filename
+ return File.basename(mimetype_filename)
+ end
+
+ def cleanup_files(file_list)
+ file_list.flatten.each {|f|
+ # Yikes
+ FileUtils.rm_r(f, :force => true )
+ }
+ end
+
+ # Returns an Array of all of the (image) @filerefs in a document
+ def get_image_refs
+ parser = REXML::Parsers::PullParser.new(File.new(@collapsed_docbook_file))
+ image_refs = []
+ while parser.has_next?
+ el = parser.pull
+ if el.start_element? and (el[0] == "imagedata" or el[0] == "graphic")
+ image_refs << el[1]['fileref']
+ end
+ end
+ return image_refs.uniq
+ end
+
+ # Returns true if the document has code callouts
+ def has_callouts?
+ parser = REXML::Parsers::PullParser.new(File.new(@collapsed_docbook_file))
+ while parser.has_next?
+ el = parser.pull
+ if el.start_element? and (el[0] == "calloutlist" or el[0] == "co")
+ return true
+ end
+ end
+ return false
+ end
+ end
+end
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl
new file mode 100644
index 0000000..4ea4cd5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
+ <xsl:output method="xml" omit-xml-declaration="no" doctype-public="-//OASIS//DTD DocBook XML V4.4//EN" doctype-system="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" indent="no"/>
+ <xsl:template match="@*|*|comment()|processing-instruction()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="text()">
+ <xsl:value-of select="replace(replace(., '[a-z]', 'x'), '[0-9]', 'd')"/>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl
new file mode 100644
index 0000000..753fcd0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl
@@ -0,0 +1,1690 @@
+<?xml version="1.0"?>
+<xsl:stylesheet
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ xmlns:ncx="http://www.daisy.org/z3986/2005/ncx/"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:opf="http://www.idpf.org/2007/opf"
+ xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory"
+ xmlns:str="http://exslt.org/strings"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xtext="xalan://com.nwalsh.xalan.Text"
+
+ extension-element-prefixes="stext xtext"
+ exclude-result-prefixes="exsl db dc h ncx ng opf stext str xtext"
+
+ version="1.0">
+
+ <xsl:import href="../xhtml-1_1/docbook.xsl" />
+ <xsl:import href="../xhtml-1_1/chunk-common.xsl" />
+ <xsl:include href="../xhtml-1_1/chunk-code.xsl" />
+
+
+ <!-- We want a separate TOC file, please -->
+ <xsl:param name="chunk.tocs.and.lots">1</xsl:param>
+ <xsl:param name="toc.section.depth">2</xsl:param>
+ <xsl:param name="generate.toc">
+ book toc,title
+ </xsl:param>
+
+ <xsl:param name="ade.extensions" select="0"/>
+ <xsl:param name="epub.autolabel" select="'1'"/>
+ <xsl:param name="epub.ncx.depth">4</xsl:param> <!-- Not functional until http://code.google.com/p/epubcheck/issues/detail?id=70 is resolved -->
+
+
+ <xsl:param name="manifest.in.base.dir" select="'1'"/>
+ <xsl:param name="base.dir" select="$epub.oebps.dir"/>
+
+ <xsl:param name="epub.oebps.dir" select="'OEBPS/'"/>
+ <xsl:param name="epub.ncx.filename" select="'toc.ncx'"/>
+ <xsl:param name="epub.container.filename" select="'container.xml'"/>
+ <xsl:param name="epub.opf.filename" select="concat($epub.oebps.dir, 'content.opf')"/>
+ <xsl:param name="epub.cover.filename" select="concat($epub.oebps.dir, 'cover', $html.ext)"/>
+ <xsl:param name="epub.cover.id" select="'cover'"/>
+ <xsl:param name="epub.cover.html" select="'cover.html'" />
+ <xsl:param name="epub.cover.image.id" select="'cover-image'"/>
+ <xsl:param name="epub.cover.linear" select="0" />
+ <xsl:param name="epub.ncx.toc.id">ncxtoc</xsl:param>
+ <xsl:param name="epub.html.toc.id">htmltoc</xsl:param>
+ <xsl:param name="epub.metainf.dir" select="'META-INF/'"/>
+
+ <xsl:param name="epub.embedded.fonts"></xsl:param>
+
+ <!-- Turning this on crashes ADE, which is unbelievably awesome -->
+ <xsl:param name="formal.object.break.after">0</xsl:param>
+
+
+ <!-- Per Bob Stayton:
+ """Process your documents with the css.decoration parameter set to zero.
+ That will avoid the use of style attributes in XHTML elements where they are not permitted."""
+ http://www.sagehill.net/docbookxsl/OtherOutputForms.html#StrictXhtmlValid -->
+ <xsl:param name="css.decoration" select="0"/>
+ <xsl:param name="custom.css.source"></xsl:param> <!-- FIXME: Align with current CSS parameter design -->
+
+ <xsl:param name="callout.graphics" select="1"/>
+ <xsl:param name="callout.graphics.extension">.png</xsl:param>
+ <xsl:param name="callout.graphics.number.limit" select="15"/>
+ <xsl:param name="callout.graphics.path" select="'images/callouts/'"/>
+
+ <!-- no navigation in .epub -->
+ <xsl:param name="suppress.navigation" select="'1'"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="/*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="root.is.a.chunk">
+ <xsl:choose>
+ <xsl:when test="/*[not(self::book)][not(sect1) or not(section)]">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="/book[*[last()][self::bookinfo]]|book[bookinfo]">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="/book[*[last()][self::info]]|book[info]">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="/bibliography">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:key name="image-filerefs" match="graphic|inlinegraphic|imagedata" use="@fileref"/>
+
+ <xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title" />
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title" />
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS" />
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title" />
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when
+ test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid" />
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if
+ test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates
+ select="key('id', $rootid)" mode="collect.targets" />
+ </xsl:if>
+ <xsl:if
+ test="$collect.xref.targets != 'only'">
+ <xsl:message>
+ Formatting from
+ <xsl:value-of select="$rootid" />
+ </xsl:message>
+ <xsl:apply-templates
+ select="key('id',$rootid)" mode="process.root" />
+ <xsl:call-template name="ncx" />
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if
+ test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/"
+ mode="collect.targets" />
+ </xsl:if>
+ <xsl:if
+ test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/"
+ mode="process.root" />
+ <xsl:call-template name="ncx" />
+ <xsl:call-template name="opf" />
+ <xsl:call-template name="cover" />
+ <xsl:call-template name="container" />
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="package-identifier">
+ <xsl:choose>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/biblioid">
+ <xsl:if test="/*/*[contains(name(.), 'info')][1]/biblioid[1][@class = 'doi' or
+ @class = 'isbn' or
+ @class = 'isrn' or
+ @class = 'issn']">
+ <xsl:text>urn:</xsl:text>
+ <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/biblioid[1]/@class"/>
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/biblioid[1]"/>
+ </xsl:when>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/isbn">
+ <xsl:text>urn:isbn:</xsl:text>
+ <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/isbn[1]"/>
+ </xsl:when>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/issn">
+ <xsl:text>urn:issn:</xsl:text>
+ <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/issn[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/invpartnumber"> <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/invpartnumber[1]"/> </xsl:when>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/issuenum"> <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/issuenum[1]"/> </xsl:when>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/productnumber"> <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/productnumber[1]"/> </xsl:when>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/seriesvolnums"> <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/seriesvolnums[1]"/> </xsl:when>
+ <xsl:when test="/*/*[contains(name(.), 'info')]/volumenum"> <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/volumenum[1]"/> </xsl:when>
+ <!-- Deprecated -->
+ <xsl:when test="/*/*[contains(name(.), 'info')]/pubsnumber"> <xsl:value-of select="/*/*[contains(name(.), 'info')][1]/pubsnumber[1]"/> </xsl:when>
+ </xsl:choose>
+ <xsl:text>_</xsl:text>
+ <xsl:choose>
+ <xsl:when test="/*/@id">
+ <xsl:value-of select="/*/@id"/>
+ </xsl:when>
+ <xsl:when test="/*/@xml:id">
+ <xsl:value-of select="/*/@xml:id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- TODO: Do UUIDs here -->
+ <xsl:value-of select="generate-id(/*)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="opf">
+ <xsl:variable name="package-identifier-id"><xsl:value-of select="concat(name(/*), 'id')"/></xsl:variable>
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title" />
+ </xsl:variable>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:value-of select="$epub.opf.filename" />
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'" />
+ <xsl:with-param name="encoding" select="'utf-8'" />
+ <xsl:with-param name="indent" select="'no'" />
+ <xsl:with-param name="quiet" select="$chunk.quietly" />
+ <xsl:with-param name="doctype-public" select="''"/> <!-- intentionally blank -->
+ <xsl:with-param name="doctype-system" select="''"/> <!-- intentionally blank -->
+ <xsl:with-param name="content">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="package">
+ <xsl:attribute name="version">2.0</xsl:attribute>
+ <xsl:attribute name="unique-identifier"> <xsl:value-of select="$package-identifier-id"/> </xsl:attribute>
+
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="metadata">
+ <xsl:element name="dc:identifier">
+ <xsl:attribute name="id"><xsl:value-of select="$package-identifier-id"/></xsl:attribute>
+ <xsl:call-template name="package-identifier"/>
+ </xsl:element>
+
+ <xsl:element name="dc:title">
+ <xsl:value-of select="normalize-space($doc.title)"/>
+ </xsl:element>
+
+ <xsl:apply-templates select="/*/*[contains(name(.), 'info')]/*"
+ mode="opf.metadata"/>
+ <xsl:element name="dc:language">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*"/>
+ </xsl:call-template>
+ </xsl:element>
+
+ <xsl:if test="/*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="meta">
+ <xsl:attribute name="name">cover</xsl:attribute>
+ <xsl:attribute name="content">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ </xsl:element>
+ <xsl:call-template name="opf.manifest"/>
+ <xsl:call-template name="opf.spine"/>
+ <xsl:call-template name="opf.guide"/>
+
+ </xsl:element>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="container">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:value-of select="$epub.metainf.dir" />
+ <xsl:value-of select="$epub.container.filename" />
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'" />
+ <xsl:with-param name="encoding" select="'utf-8'" />
+ <xsl:with-param name="indent" select="'no'" />
+ <xsl:with-param name="quiet" select="$chunk.quietly" />
+ <xsl:with-param name="doctype-public" select="''"/> <!-- intentionally blank -->
+ <xsl:with-param name="doctype-system" select="''"/> <!-- intentionally blank -->
+
+ <xsl:with-param name="content">
+ <xsl:element namespace="urn:oasis:names:tc:opendocument:xmlns:container" name="container">
+ <xsl:attribute name="version">1.0</xsl:attribute>
+ <xsl:element namespace="urn:oasis:names:tc:opendocument:xmlns:container" name="rootfiles">
+ <xsl:element namespace="urn:oasis:names:tc:opendocument:xmlns:container" name="rootfile">
+ <xsl:attribute name="full-path">
+ <xsl:value-of select="$epub.opf.filename" />
+ </xsl:attribute>
+ <xsl:attribute name="media-type">
+ <xsl:text>application/oebps-package+xml</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="ncx">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir" />
+ </xsl:if>
+ <xsl:value-of select="$epub.ncx.filename" />
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'" />
+ <xsl:with-param name="encoding" select="'utf-8'" />
+ <xsl:with-param name="indent" select="'no'" />
+ <xsl:with-param name="quiet" select="$chunk.quietly" />
+ <xsl:with-param name="doctype-public" select="''"/> <!-- intentionally blank -->
+ <xsl:with-param name="doctype-system" select="''"/> <!-- intentionally blank -->
+ <xsl:with-param name="content">
+ <xsl:element name="ncx" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:attribute name="version">2005-1</xsl:attribute>
+
+ <!-- Via Martin Goerner: On covers: the IDPF2.0 standard unfortunately does not have a provision for
+ covers. We had to add one and we did so in conjunction with the IDPF and
+ various publishers. The tag chosen to define the covers is:
+ <meta name="cover" content="-reference to a manifest item-">
+ Then, we also added a bit of logic to get rid cleanly of the HTML cover
+ people usually add because the logical cover is not specced by the IDPF. So,
+ if the HTML cover item is marked linear="no" AND there is a guide item of
+ type="cover" pointing to it AND there is a logical cover specified in a
+ <meta name="cover"> tag, THEN, the HTML cover is discarded. -->
+ <xsl:element name="head" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:if test="/*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]">
+ <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:attribute name="name">cover</xsl:attribute>
+ <xsl:attribute name="content">
+ <xsl:value-of select="$epub.cover.id"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:attribute name="name">dtb:uid</xsl:attribute>
+ <xsl:attribute name="content"><xsl:call-template name="package-identifier"/></xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:variable name="title">
+ <xsl:if test="$epub.autolabel != 0">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="key('id',$rootid)" mode="label.markup" />
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)" />
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="key('id',$rootid)" mode="title.markup" />
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="key('id',$rootid)" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:element name="docTitle" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:element name="text" namespace="http://www.daisy.org/z3986/2005/ncx/"><xsl:value-of select="normalize-space($title)" /> </xsl:element>
+ </xsl:element>
+ <xsl:element name="navMap" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:apply-templates select="key('id',$rootid)/*" mode="ncx" />
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="title">
+ <xsl:if test="$epub.autolabel != 0">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="/*" mode="label.markup" />
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)" />
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="/*" mode="title.markup" />
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="/" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:element name="docTitle" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:element name="text" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:value-of select="normalize-space($title)" />
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="navMap" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:choose>
+ <xsl:when test="$root.is.a.chunk != '0'">
+ <xsl:apply-templates select="/*" mode="ncx" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/*/*" mode="ncx" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:element>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="book|
+ article|
+ part|
+ reference|
+ preface|
+ chapter|
+ bibliography|
+ appendix|
+ glossary|
+ section|
+ sect1|
+ sect2|
+ sect3|
+ sect4|
+ sect5|
+ refentry|
+ colophon|
+ bibliodiv[title]|
+ setindex|
+ index"
+ mode="ncx">
+ <xsl:variable name="depth" select="count(ancestor::*)"/>
+ <xsl:variable name="title">
+ <xsl:if test="$epub.autolabel != 0">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup" />
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of
+ select="concat($label.markup,$autotoc.label.separator)" />
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup" />
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="context" select="/" />
+ <!-- Generate links relative to the location of root file/toc.xml file -->
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="id">
+ <xsl:value-of select="generate-id(.)"/>
+ </xsl:variable>
+ <xsl:variable name="order">
+ <xsl:value-of select="$depth +
+ count(preceding::part|
+ preceding::reference|
+ preceding::book[parent::set]|
+ preceding::preface|
+ preceding::chapter|
+ preceding::bibliography|
+ preceding::appendix|
+ preceding::article|
+ preceding::glossary|
+ preceding::section[not(parent::partintro)]|
+ preceding::sect1[not(parent::partintro)]|
+ preceding::sect2[not(ancestor::partintro)]|
+ preceding::sect3[not(ancestor::partintro)]|
+ preceding::sect4[not(ancestor::partintro)]|
+ preceding::sect5[not(ancestor::partintro)]|
+ preceding::refentry|
+ preceding::colophon|
+ preceding::bibliodiv[title]|
+ preceding::index)"/>
+ </xsl:variable>
+
+ <xsl:element name="navPoint" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$id"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="playOrder">
+ <xsl:choose>
+ <xsl:when test="/*[self::set]">
+ <xsl:value-of select="$order"/>
+ </xsl:when>
+ <xsl:when test="$root.is.a.chunk != '0'">
+ <xsl:value-of select="$order + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$order - 0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:element name="navLabel" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:element name="text" namespace="http://www.daisy.org/z3986/2005/ncx/"><xsl:value-of select="normalize-space($title)"/> </xsl:element>
+ </xsl:element>
+ <xsl:element name="content" namespace="http://www.daisy.org/z3986/2005/ncx/">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$href"/>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:apply-templates select="book[parent::set]|part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv[title]|setindex|index" mode="ncx"/>
+ </xsl:element>
+
+ </xsl:template>
+
+ <xsl:template match="*" mode="opf.metadata">
+ <!-- override if you care -->
+ </xsl:template>
+
+ <xsl:template match="authorgroup" mode="opf.metadata">
+ <xsl:apply-templates select="author|corpauthor" mode="opf.metadata"/>
+ </xsl:template>
+
+ <xsl:template match="author|corpauthor" mode="opf.metadata">
+ <xsl:variable name="n">
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:element name="dc:creator">
+ <xsl:attribute name="opf:file-as">
+ <xsl:call-template name="person.name.last-first">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select="normalize-space(string($n))"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="date" mode="opf.metadata">
+ <xsl:element name="dc:date">
+ <xsl:value-of select="normalize-space(string(.))"/>
+ </xsl:element>
+ </xsl:template>
+
+
+ <!-- Space separate the compontents of the abstract (dropping the inline markup, sadly) -->
+ <xsl:template match="abstract" mode="opf.metadata">
+ <xsl:element name="dc:description">
+ <xsl:for-each select="formalpara|para|simpara|title">
+ <xsl:choose>
+ <xsl:when test="self::formalpara">
+ <xsl:value-of select="normalize-space(string(title))"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="normalize-space(string(para))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(string(.))"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="self::title">
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+ <xsl:if test="not(position() = last())">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="subjectset" mode="opf.metadata">
+ <xsl:apply-templates select="subject/subjectterm" mode="opf.metadata"/>
+ </xsl:template>
+
+ <xsl:template match="subjectterm" mode="opf.metadata">
+ <xsl:element name="dc:subject">
+ <xsl:value-of select="normalize-space(string(.))"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="publisher" mode="opf.metadata">
+ <xsl:apply-templates select="publishername" mode="opf.metadata"/>
+ </xsl:template>
+
+ <xsl:template match="publishername" mode="opf.metadata">
+ <xsl:element name="dc:publisher">
+ <xsl:value-of select="normalize-space(string(.))"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="copyright" mode="opf.metadata">
+ <xsl:variable name="copyright.date">
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges" select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="not(../date)">
+ <xsl:element name="dc:date">
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year[last()]"/>
+ <xsl:with-param name="print.ranges" select="0"/>
+ <xsl:with-param name="single.year.ranges" select="0"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+ <xsl:element name="dc:rights">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:text>&#x00A9;</xsl:text>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:value-of select="$copyright.date"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="opf.guide">
+ <xsl:if test="contains($toc.params, 'toc') or
+ /*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="guide">
+ <xsl:if test="/*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="reference">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$epub.cover.html" />
+ </xsl:attribute>
+ <xsl:attribute name="type">cover</xsl:attribute>
+ <xsl:attribute name="title">Cover</xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="reference">
+ <xsl:attribute name="href">
+ <xsl:call-template name="toc-href">
+ <xsl:with-param name="node" select="/*"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="type">toc</xsl:attribute>
+ <xsl:attribute name="title">Table of Contents</xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="opf.spine">
+
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="spine">
+ <xsl:attribute name="toc">
+ <xsl:value-of select="$epub.ncx.toc.id"/>
+ </xsl:attribute>
+
+ <xsl:if test="/*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="itemref">
+ <xsl:attribute name="idref">
+ <xsl:value-of select="$epub.cover.id"/>
+ </xsl:attribute>
+ <xsl:attribute name="linear">
+ <xsl:choose>
+ <xsl:when test="$epub.cover.linear">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>no</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="itemref">
+ <xsl:attribute name="idref"> <xsl:value-of select="$epub.html.toc.id"/> </xsl:attribute>
+ <xsl:attribute name="linear">yes</xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <!-- TODO: be nice to have a idref="titlepage" here -->
+ <xsl:choose>
+ <xsl:when test="$root.is.a.chunk != '0'">
+ <xsl:apply-templates select="/*" mode="opf.spine"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/*/*" mode="opf.spine"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="*" mode="opf.spine">
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$is.chunk != 0">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="itemref">
+ <xsl:attribute name="idref">
+ <xsl:value-of select="generate-id(.)"/>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:apply-templates select="*|.//refentry" mode="opf.spine"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="opf.manifest">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="manifest">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id"> <xsl:value-of select="$epub.ncx.toc.id"/> </xsl:attribute>
+ <xsl:attribute name="media-type">application/x-dtbncx+xml</xsl:attribute>
+ <xsl:attribute name="href"><xsl:value-of select="$epub.ncx.filename"/> </xsl:attribute>
+ </xsl:element>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id"> <xsl:value-of select="$epub.html.toc.id"/> </xsl:attribute>
+ <xsl:attribute name="media-type">application/xhtml+xml</xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:call-template name="toc-href">
+ <xsl:with-param name="node" select="/*"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="media-type">text/css</xsl:attribute>
+ <xsl:attribute name="id">css</xsl:attribute>
+ <xsl:attribute name="href"><xsl:value-of select="$html.stylesheet"/></xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="/*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id"> <xsl:value-of select="$epub.cover.id"/> </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$epub.cover.html"/>
+ </xsl:attribute>
+ <xsl:attribute name="media-type">application/xhtml+xml</xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$epub.embedded.fonts != '' and not(contains($epub.embedded.fonts, ','))">
+ <xsl:call-template name="embedded-font-item">
+ <xsl:with-param name="font.file" select="$epub.embedded.fonts"/> <!-- There is just one -->
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$epub.embedded.fonts != ''">
+ <xsl:variable name="font.file.tokens" select="str:tokenize($epub.embedded.fonts, ',')"/>
+ <xsl:for-each select="exsl:node-set($font.file.tokens)">
+ <xsl:call-template name="embedded-font-item">
+ <xsl:with-param name="font.file" select="."/>
+ <xsl:with-param name="font.order" select="position()"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- TODO: be nice to have a id="titlepage" here -->
+ <xsl:apply-templates select="//part|
+ //book[*[last()][self::bookinfo]]|
+ //book[bookinfo]|
+ /set|
+ /set/book|
+ //reference|
+ //preface|
+ //chapter|
+ //bibliography|
+ //appendix|
+ //article|
+ //glossary|
+ //section|
+ //sect1|
+ //sect2|
+ //sect3|
+ //sect4|
+ //sect5|
+ //refentry|
+ //colophon|
+ //bibliodiv[title]|
+ //index|
+ //setindex|
+ //graphic|
+ //inlinegraphic|
+ //mediaobject|
+ //mediaobjectco|
+ //inlinemediaobject"
+ mode="opf.manifest"/>
+ <xsl:call-template name="opf.calloutlist"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="opf.calloutlist">
+ <xsl:variable name="format">
+ <xsl:call-template name="guess-media-type">
+ <xsl:with-param name="ext" select="$callout.graphics.extension"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="(//calloutlist|//co)">
+ <xsl:call-template name="opf.reference.callout">
+ <xsl:with-param name="conum" select="1"/>
+ <xsl:with-param name="format" select="$format"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="opf.reference.callout">
+ <xsl:param name="conum"/>
+ <xsl:param name="format"/>
+
+ <xsl:variable name="filename" select="concat($callout.graphics.path, $conum, $callout.graphics.extension)"/>
+
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id"> <xsl:value-of select="concat(generate-id(.), 'callout', $conum)"/> </xsl:attribute>
+ <xsl:attribute name="href"> <xsl:value-of select="$filename"/> </xsl:attribute>
+ <xsl:attribute name="media-type">
+ <xsl:value-of select="$format"/>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:if test="($conum &lt; $callout.graphics.number.limit)">
+ <xsl:call-template name="opf.reference.callout">
+ <xsl:with-param name="conum" select="$conum + 1"/>
+ <xsl:with-param name="format" select="$format"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="guess-media-type">
+ <xsl:param name="ext"></xsl:param>
+ <xsl:choose>
+ <xsl:when test="contains($ext, '.gif')">
+ <xsl:text>image/gif</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, 'GIF')">
+ <xsl:text>image/gif</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, '.png')">
+ <xsl:text>image/png</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, 'PNG')">
+ <xsl:text>image/png</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, '.jpeg')">
+ <xsl:text>image/jpeg</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, 'JPEG')">
+ <xsl:text>image/jpeg</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, '.jpg')">
+ <xsl:text>image/jpeg</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, 'JPG')">
+ <xsl:text>image/jpeg</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, '.svg')">
+ <xsl:text>image/svg+xml</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($ext, 'SVG')">
+ <xsl:text>image/svg+xml</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- we failed -->
+ <xsl:text></xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="mediaobject|
+ mediaobjectco|
+ inlinemediaobject"
+ mode="opf.manifest">
+
+ <xsl:variable name="olist" select="imageobject|imageobjectco |videoobject|audioobject |textobject"/>
+
+ <xsl:variable name="object.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+ <xsl:choose>
+ <xsl:when test="$object/descendant::imagedata[@format = 'GIF' or
+ @format = 'GIF87a' or
+ @format = 'GIF89a' or
+ @format = 'JPEG' or
+ @format = 'JPG' or
+ @format = 'PNG' or
+ @format = 'SVG']">
+ <xsl:apply-templates select="$object[descendant::imagedata[@format = 'GIF' or
+ @format = 'GIF87a' or
+ @format = 'GIF89a' or
+ @format = 'JPEG' or
+ @format = 'JPG' or
+ @format = 'PNG' or
+ @format = 'SVG']][1]/imagedata"
+ mode="opf.manifest"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$object/imagedata[1]"
+ mode="opf.manifest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="cover/mediaobject|
+ mediaobject[@role='cover']"
+ mode="opf.manifest">
+ <xsl:choose>
+ <xsl:when test="imageobject[@role='front-large']">
+ <xsl:apply-templates select="imageobject[@role='front-large']/imagedata"
+ mode="opf.manifest"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="imageobject/imagedata[1]"
+ mode="opf.manifest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="mediaobjectco"
+ mode="opf.manifest">
+ <xsl:message>WARNING: mediaobjectco almost certainly will not render as expected in .epub!</xsl:message>
+ <xsl:apply-templates select="imageobjectco/imageobject/imagedata"
+ mode="opf.manifest"/>
+ </xsl:template>
+
+ <!-- TODO: Barf (xsl:message terminate=yes) if you find a graphic with no reasonable format or a mediaobject w/o same? [option to not die?] -->
+
+ <!-- wish I had XSLT2 ...-->
+ <!-- TODO: priority a hack -->
+ <xsl:template match="graphic[not(@format)]|
+ inlinegraphic[not(@format)]|
+ imagedata[not(@format)]"
+ mode="opf.manifest">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="contains(name(.), 'graphic')">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="format">
+ <xsl:call-template name="guess-media-type">
+ <xsl:with-param name="ext" select="@fileref"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="fr" select="@fileref"/>
+ <xsl:if test="$format != ''">
+ <!-- only do this if we're the first file to match -->
+ <!-- TODO: Why can't this be simple equality?? (I couldn't get it to work) -->
+ <xsl:if test="generate-id(.) = generate-id(key('image-filerefs', $fr)[1])">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id">
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject[@role='cover'] and parent::*[@role='front-large']">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:when>
+ <xsl:when test="ancestor::mediaobject[@role='cover'] and (count(ancestor::mediaobject//imageobject) = 1)">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:when>
+ <xsl:when test="ancestor::cover">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="href"> <xsl:value-of select="$filename"/> </xsl:attribute>
+ <xsl:attribute name="media-type">
+ <xsl:value-of select="$format"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Note: Selection of the first interesting imagedata is done in the select -->
+ <xsl:template match="graphic[@format = 'GIF' or @format = 'GIF87a' or @format = 'GIF89a' or @format = 'JPEG' or @format = 'JPG' or @format = 'PNG' or @format = 'SVG']|
+ inlinegraphic[@format = 'GIF' or @format = 'GIF87a' or @format = 'GIF89a' or @format = 'JPEG' or @format = 'JPG' or @format = 'PNG' or @format = 'SVG']|
+ imagedata[@format]"
+ mode="opf.manifest">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="contains(name(.), 'graphic')">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="fr" select="@fileref"/>
+ <!-- only do this if we're the first file to match -->
+ <!-- TODO: Why can't this be simple equality?? (I couldn't get it to work) -->
+ <xsl:if test="generate-id(.) = generate-id(key('image-filerefs', $fr)[1])">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id">
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject[@role='cover'] and parent::*[@role='front-large']">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:when>
+ <xsl:when test="ancestor::mediaobject[@role='cover'] and (count(ancestor::mediaobject//imageobject) = 1)">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:when>
+ <xsl:when test="ancestor::cover">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="href"> <xsl:value-of select="$filename"/> </xsl:attribute>
+ <xsl:attribute name="media-type">
+ <xsl:call-template name="guess-media-type">
+ <xsl:with-param name="ext" select="@format"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Warning: While the test indicate this match list is accurate, it may
+ need further tweaking to ensure _never_ dropping generated content (XHTML)
+ from the manifest (OPF file) -->
+ <xsl:template
+ match="set|
+ book[parent::set]|
+ book[*[last()][self::bookinfo]]|
+ book[bookinfo]|
+ article|
+ part|
+ reference|
+ preface|
+ chapter|
+ bibliography|
+ appendix|
+ glossary|
+ section|
+ sect1|
+ sect2|
+ sect3|
+ sect4|
+ sect5|
+ refentry|
+ colophon|
+ bibliodiv[title]|
+ setindex|
+ index"
+ mode="opf.manifest">
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="context" select="/" />
+ <!-- Generate links relative to the location of root file/toc.xml file -->
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="id">
+ <xsl:value-of select="generate-id(.)"/>
+ </xsl:variable>
+
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$is.chunk != 0">
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id"> <xsl:value-of select="$id"/> </xsl:attribute>
+ <xsl:attribute name="href"> <xsl:value-of select="$href"/> </xsl:attribute>
+ <xsl:attribute name="media-type">application/xhtml+xml</xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="ncx" />
+
+ <xsl:template name="html.head">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:variable name="this" select="."/>
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <head xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ </xsl:template>
+
+ <!-- OVERRIDES xhtml-1_1/graphics.xsl -->
+ <!-- we can't deal with no img/@alt, because it's required. Try grabbing a title before it instead (hopefully meaningful) -->
+ <xsl:template name="process.image.attributes">
+ <xsl:param name="alt"/>
+ <xsl:param name="html.width"/>
+ <xsl:param name="html.depth"/>
+ <xsl:param name="longdesc"/>
+ <xsl:param name="scale"/>
+ <xsl:param name="scalefit"/>
+ <xsl:param name="scaled.contentdepth"/>
+ <xsl:param name="scaled.contentwidth"/>
+ <xsl:param name="viewport"/>
+
+ <xsl:choose>
+ <xsl:when test="@contentwidth or @contentdepth">
+ <!-- ignore @width/@depth, @scale, and @scalefit if specified -->
+ <xsl:if test="@contentwidth and $scaled.contentwidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@contentdepth and $scaled.contentdepth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$scaled.contentdepth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="number($scale) != 1.0">
+ <!-- scaling is always uniform, so we only have to specify one dimension -->
+ <!-- ignore @scalefit if specified -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scalefit != 0">
+ <xsl:choose>
+ <xsl:when test="contains($html.width, '%')">
+ <xsl:choose>
+ <xsl:when test="$viewport != 0">
+ <!-- The *viewport* will be scaled, so use 100% here! -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="contains($html.depth, '%')">
+ <!-- HTML doesn't deal with this case very well...do nothing -->
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != '' and $scaled.contentdepth != '' and $html.depth != ''">
+ <!-- scalefit should not be anamorphic; figure out which direction -->
+ <!-- has the limiting scale factor and scale in that direction -->
+ <xsl:choose>
+ <xsl:when test="$html.width div $scaled.contentwidth &gt; $html.depth div $scaled.contentdepth">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentdepth != '' and $html.depth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- AN OVERRIDE -->
+ <xsl:if test="not(@format ='SVG')">
+ <xsl:attribute name="alt">
+ <xsl:choose>
+ <xsl:when test="$alt != ''">
+ <xsl:value-of select="normalize-space($alt)"/>
+ </xsl:when>
+ <xsl:when test="preceding::title[1]">
+ <xsl:value-of select="normalize-space(preceding::title[1])"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(missing alt)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <!-- END OF OVERRIDE -->
+
+ <xsl:if test="$longdesc != ''">
+ <xsl:attribute name="longdesc">
+ <xsl:value-of select="$longdesc"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@align and $viewport = 0">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- OVERRIDES xhtml-1_1/chunk-common.xsl -->
+ <!-- make a bibliography always a chunk -->
+ <xsl:template name="chunk"
+ priority="1">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <!-- ==================================================================== -->
+ <!-- What's a chunk?
+
+ The root element
+ appendix
+ article
+ bibliography ### NO LONGER TRUE in article or part or book
+ book
+ chapter
+ colophon
+ glossary in article or part or book
+ index in article or part or book
+ part
+ preface
+ refentry
+ reference
+ sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth
+ section if position()>1 && depth < chunk.section.depth
+ set
+ setindex
+ -->
+ <!-- ==================================================================== -->
+
+ <!--
+ <xsl:message>
+ <xsl:text>chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> csd: </xsl:text>
+ <xsl:value-of select="$chunk.section.depth"/>
+ <xsl:text> cfs: </xsl:text>
+ <xsl:value-of select="$chunk.first.sections"/>
+ <xsl:text> ps: </xsl:text>
+ <xsl:value-of select="count($node/parent::section)"/>
+ <xsl:text> prs: </xsl:text>
+ <xsl:value-of select="count($node/preceding-sibling::section)"/>
+ </xsl:message>
+ -->
+
+ <xsl:choose>
+ <xsl:when test="not($node/parent::*)">1</xsl:when>
+
+ <xsl:when test="local-name($node) = 'sect1' and $chunk.section.depth &gt;= 1 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect1) &gt; 0)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect2' and $chunk.section.depth &gt;= 2 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect2) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect3' and $chunk.section.depth &gt;= 3 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect3) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect4' and $chunk.section.depth &gt;= 4 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect4) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect5' and $chunk.section.depth &gt;= 5 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect5) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'section' and $chunk.section.depth &gt;= count($node/ancestor::section)+1 and ($chunk.first.sections != 0 or count($node/preceding-sibling::section) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="local-name($node)='preface'">1</xsl:when>
+ <xsl:when test="local-name($node)='chapter'">1</xsl:when>
+ <xsl:when test="local-name($node)='appendix'">1</xsl:when>
+ <xsl:when test="local-name($node)='article'">1</xsl:when>
+ <xsl:when test="local-name($node)='part'">1</xsl:when>
+ <xsl:when test="local-name($node)='reference'">1</xsl:when>
+ <xsl:when test="local-name($node)='refentry'">1</xsl:when>
+ <xsl:when test="local-name($node)='index' and ($generate.index != 0 or count($node/*) &gt; 0) and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <!-- AN OVERRIDE -->
+ <xsl:when test="local-name($node)='bibliography'">1</xsl:when>
+ <!-- END OF OVERRIDE -->
+ <xsl:when test="local-name($node)='glossary' and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <xsl:when test="local-name($node)='colophon'">1</xsl:when>
+ <xsl:when test="local-name($node)='book'">1</xsl:when>
+ <xsl:when test="local-name($node)='set'">1</xsl:when>
+ <xsl:when test="local-name($node)='setindex'">1</xsl:when>
+ <xsl:when test="local-name($node)='legalnotice' and $generate.legalnotice.link != 0">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- OVERRIDES xhtml-1_1/chunk-code.xsl -->
+ <!-- Add chunking for bibliography as root element -->
+ <!-- AN OVERRIDE -->
+ <xsl:template match="set|
+ book|
+ part|
+ preface|
+ chapter|
+ appendix|
+ article|
+ reference|
+ refentry|
+ book/glossary|
+ article/glossary|
+ part/glossary|
+ bibliography|
+ colophon"
+ priority="1">
+ <!-- END OF OVERRIDE -->
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- OVERRIDES xhtml-1_1/graphics.xsl -->
+ <!-- Do _NOT_ output any xlink garbage, so if you don't have
+ processor with extensions, you're screwed and we're terminating -->
+ <xsl:template match="inlinegraphic">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- AN OVERRIDE -->
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available. Use a different processor (with extensions) or turn on $use.extensions and $textinsert.extension (see docs for more). </xsl:text>
+ </xsl:message>
+ <!-- END OF OVERRIDE -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process.image"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="cover">
+ <xsl:apply-templates select="/*/*[contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]"/>
+ </xsl:template>
+
+ <xsl:template match="/*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:value-of select="$epub.cover.filename" />
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'" />
+ <xsl:with-param name="encoding" select="'utf-8'" />
+ <xsl:with-param name="indent" select="'no'" />
+ <xsl:with-param name="quiet" select="$chunk.quietly" />
+ <xsl:with-param name="content">
+ <xsl:element namespace="http://www.w3.org/1999/xhtml" name="html">
+ <xsl:element namespace="http://www.w3.org/1999/xhtml" name="head">
+ <xsl:element namespace="http://www.w3.org/1999/xhtml" name="title">Cover</xsl:element>
+ <xsl:element namespace="http://www.w3.org/1999/xhtml" name="style">
+ <xsl:attribute name="type">text/css</xsl:attribute>
+ <!-- Help the cover image scale nicely in the CSS then apply a max-width to look better in Adobe Digital Editions -->
+ <xsl:text> img { max-width: 100%; }</xsl:text>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element namespace="http://www.w3.org/1999/xhtml" name="body">
+ <xsl:element namespace="http://www.w3.org/1999/xhtml" name="div">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$epub.cover.image.id"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="imageobject[@role='front-large']">
+ <xsl:apply-templates select="imageobject[@role='front-large']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="imageobject[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ <!-- If this is defined as an explicit cover page, then process
+ any remaining text -->
+ <xsl:if test="ancestor::cover">
+ <xsl:apply-templates select="ancestor::cover/para"/>
+ </xsl:if>
+ </xsl:element>
+ </xsl:element>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="cover-svg">
+ <xsl:param name="node"/>
+ </xsl:template>
+
+ <xsl:template name="toc-href">
+ <xsl:param name="node" select="."/>
+ <xsl:apply-templates select="$node" mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:template>
+
+ <xsl:template match="bibliodiv[title]" mode="label.markup">
+ </xsl:template>
+
+ <xsl:template match="token" mode="opf.manifest.font">
+ <xsl:call-template name="embedded-font-item">
+ <xsl:with-param name="font.file" select="."/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="embedded-font-item">
+ <xsl:param name="font.file"/>
+ <xsl:param name="font.order" select="1"/>
+
+ <xsl:element namespace="http://www.idpf.org/2007/opf" name="item">
+ <xsl:attribute name="id">
+ <xsl:value-of select="concat('epub.embedded.font.', $font.order)"/>
+ </xsl:attribute>
+ <xsl:attribute name="href"><xsl:value-of select="$font.file"/></xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="contains($font.file, 'otf')">
+ <xsl:attribute name="media-type">font/opentype</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>WARNING: OpenType fonts should be supplied! (</xsl:text>
+ <xsl:value-of select="$font.file"/>
+ <xsl:text>)</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:template>
+
+<!-- Change section.heading to improve SEO on generated HTML by doing heading levels
+ "correctly". SEO rules are sometimes silly silly, but this does actually create
+ a semantic improvement.
+ Note: This template needs to be manually maintained outside of the html/sections.xsl
+ code, so make sure important changes get reintegrated. -->
+<xsl:template name="section.heading">
+ <xsl:param name="section" select="."/>
+ <xsl:param name="level" select="1"/>
+ <xsl:param name="allow-anchors" select="1"/>
+ <xsl:param name="title"/>
+ <xsl:param name="class" select="'title'"/>
+
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- Make sure the subtitle doesn't get the same id as the title -->
+ <xsl:when test="self::subtitle">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- For SEO, we try to actually ensure we *always* output one and only one h1,
+ so unlike the regular stylesheets, we don't add one to the section level and
+ we get the right behavior because of chunking. -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <!-- highest valid HTML H level is H6; so anything nested deeper
+ than 7 levels down just becomes H6 -->
+ <xsl:when test="$level &gt; 6">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+ <xsl:if test="$css.decoration != '0'">
+ <xsl:if test="$hlevel&lt;3">
+ <xsl:attribute name="style">clear: both</xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="$allow-anchors != 0 and $generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$section"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$generate.id.attributes != 0 and not(local-name(.) = 'appendix')">
+ <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$title"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bridgehead">
+ <xsl:variable name="container" select="(ancestor::appendix |ancestor::article |ancestor::bibliography |ancestor::chapter |ancestor::glossary |ancestor::glossdiv |ancestor::index |ancestor::partintro |ancestor::preface |ancestor::refsect1 |ancestor::refsect2 |ancestor::refsect3 |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5 |ancestor::section |ancestor::setindex |ancestor::simplesect)[last()]"/>
+
+ <xsl:variable name="clevel">
+ <xsl:choose>
+ <xsl:when test="local-name($container) = 'appendix' or local-name($container) = 'chapter' or local-name($container) = 'article' or local-name($container) = 'bibliography' or local-name($container) = 'glossary' or local-name($container) = 'index' or local-name($container) = 'partintro' or local-name($container) = 'preface' or local-name($container) = 'setindex'">1</xsl:when>
+ <xsl:when test="local-name($container) = 'glossdiv'">
+ <xsl:value-of select="count(ancestor::glossdiv)+1"/>
+ </xsl:when>
+ <xsl:when test="local-name($container) = 'sect1' or local-name($container) = 'sect2' or local-name($container) = 'sect3' or local-name($container) = 'sect4' or local-name($container) = 'sect5' or local-name($container) = 'refsect1' or local-name($container) = 'refsect2' or local-name($container) = 'refsect3' or local-name($container) = 'section' or local-name($container) = 'simplesect'">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$clevel + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- SEO customization #2 -->
+<xsl:template name="component.title">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="h{$level}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:element>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt
new file mode 100644
index 0000000..fed77d9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt
@@ -0,0 +1,264 @@
+LICENSE
+
+ Copyright (c) 2008 N. Quaine - NexWave Solutions All Rights Reserved.
+
+CONDITIONS
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+Neither the name of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+DISCLAIMER
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+Some code in src/java/org/apache/lucene/util/UnicodeUtil.java was
+derived from unicode conversion examples available at
+http://www.unicode.org/Public/PROGRAMS/CVTUTF. Here is the copyright
+from those sources:
+
+/*
+ * Copyright 2001-2004 Unicode, Inc.
+ *
+ * Disclaimer
+ *
+ * This source code is provided as is by Unicode, Inc. No claims are
+ * made as to fitness for any particular purpose. No warranties of any
+ * kind are expressed or implied. The recipient agrees to determine
+ * applicability of information provided. If this file has been
+ * purchased on magnetic or optical media from Unicode, Inc., the
+ * sole remedy for any claim will be exchange of defective media
+ * within 90 days of receipt.
+ *
+ * Limitations on Rights to Redistribute This Code
+ *
+ * Unicode, Inc. hereby grants the right to freely use the information
+ * supplied in this file in the creation of products supporting the
+ * Unicode Standard, and to make copies of this file in any form
+ * for internal or external distribution as long as this notice
+ * remains attached.
+ */
+
+
+Some code in src/java/org/apache/lucene/util/ArrayUtil.java was
+derived from Python 2.4.2 sources available at
+http://www.python.org. Full license is here:
+
+ http://www.python.org/download/releases/2.4.2/license/
+
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt
new file mode 100644
index 0000000..35f247d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt
@@ -0,0 +1,12 @@
+The webhelpindexer is released under the Apache 2.0 license and
+includes software from other projects.
+
+The webhelpindexer was originally developed by N. Quaine and released
+under a MIT/BSD-style license. See LICENSE.txt.
+
+This product includes software developed by The Apache Software
+Foundation (http://www.apache.org/). See LICENSE.txt.
+
+This product also includes software released as part of the Snowball
+project maintained by Martin Porter and Richard Boulton released under
+a BSD-style license: http://snowball.tartarus.org/
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT
new file mode 100644
index 0000000..2c80274
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT
@@ -0,0 +1,52 @@
+----------------------------------------------------------------------
+ README file for the libxslt extensions
+----------------------------------------------------------------------
+$Id: README.LIBXSLT 7877 2008-03-08 04:07:52Z xmldoc $
+
+These are XSLT extensions written in Python for use with the DocBook XML
+stylesheets and the libxslt library[1].
+
+Currently, the only available extension is a function for adjusting column
+widths in tables. For more information, see the section describing the
+equivalent Java extension in "DocBook XSL: The Complete Guide"[2].
+
+----------------------------------------------------------------------
+Preparations
+----------------------------------------------------------------------
+In addition to libxml2 and libxslt, the following software needs to
+be installed before you start using the extensions:
+
+1. Python[3].
+
+2. Python bindings for libxml2/libxslt. Most distributions of
+ libxml2/libxslt for Unix/Linux include these bindings.
+ A native Windows port is provided by Stéphane Bidoul[4].
+
+----------------------------------------------------------------------
+Installation of the extensions
+----------------------------------------------------------------------
+No special installation step is needed.
+
+----------------------------------------------------------------------
+How to use the extensions
+----------------------------------------------------------------------
+Instead of using xsltproc, you run a Python program (xslt.py). The
+command has this general form:
+
+python xslt.py xmlfile xslfile [outputfile] [param1=val1 [param2=val]...]
+
+Modify paths, filenames, and parameters as needed. Make sure to set
+the "use.extensions" and "tablecolumns.extension" parameters to 1.
+
+----------------------------------------------------------------------
+Manifest
+----------------------------------------------------------------------
+README.LIBXSLT This file
+xslt.py Executable script file
+docbook.py Module that implements extensions
+
+----------------------------------------------------------------------
+[1] http://xmlsoft.org/XSLT
+[2] http://www.sagehill.net/docbookxsl/ColumnWidths.html
+[3] http://www.python.org/download
+[4] http://users.skynet.be/sbi/libxml-python
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt
new file mode 100644
index 0000000..35c6fa0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt
@@ -0,0 +1,4 @@
+See webhelp/docs/index.html for more information about the webhelp
+indexer and the webhelp output format. See webhelp/docs/index.html for
+more information about the webhelp indexer and the webhelp output
+format.
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py
new file mode 100644
index 0000000..c070602
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py
@@ -0,0 +1,239 @@
+# docbook.py: extension module
+# $Id: docbook.py 8353 2009-03-17 16:57:50Z mzjn $
+
+import sys
+import string
+import libxml2
+import libxslt
+import re
+import math
+
+# Some globals
+pixelsPerInch = 96.0
+unitHash = { 'in': pixelsPerInch,
+ 'cm': pixelsPerInch / 2.54,
+ 'mm': pixelsPerInch / 25.4,
+ 'pc': (pixelsPerInch / 72.0) * 12,
+ 'pt': pixelsPerInch / 72.0,
+ 'px': 1 }
+
+# ======================================================================
+
+def adjustColumnWidths(ctx, nodeset):
+ #
+ # Small check to verify the context is correcly accessed
+ #
+ try:
+ pctxt = libxslt.xpathParserContext(_obj=ctx)
+ ctxt = pctxt.context()
+ tctxt = ctxt.transformContext()
+ except:
+ pass
+
+ # Get the nominal table width
+ varString = lookupVariable(tctxt, "nominal.table.width", None)
+ if varString == None:
+ nominalWidth = 6 * pixelsPerInch;
+ else:
+ nominalWidth = convertLength(varString);
+
+ # Get the requested table width
+ tableWidth = lookupVariable(tctxt, "table.width", "100%")
+
+ foStylesheet = (tctxt.variableLookup("stylesheet.result.type", None) == "fo")
+
+ relTotal = 0
+ relParts = []
+
+ absTotal = 0
+ absParts = []
+
+ colgroup = libxml2.xmlNode(_obj = nodeset[0])
+ # If this is an foStylesheet, we've been passed a list of fo:table-columns.
+ # Otherwise we've been passed a colgroup that contains a list of cols.
+ if foStylesheet:
+ colChildren = colgroup
+ else:
+ colChildren = colgroup.children
+
+ col = colChildren
+ while col != None:
+ if foStylesheet:
+ width = col.prop("column-width")
+ else:
+ width = col.prop("width")
+
+ if width == None:
+ width = "1*"
+
+ relPart = 0.0
+ absPart = 0.0
+ starPos = string.find(width, "*")
+ if starPos >= 0:
+ relPart, absPart = string.split(width, "*", 2)
+ relPart = float(relPart)
+ relTotal = relTotal + float(relPart)
+ else:
+ absPart = width
+
+ pixels = convertLength(absPart)
+ absTotal = absTotal + pixels
+
+ relParts.append(relPart)
+ absParts.append(pixels)
+
+ col = col.next
+
+ # Ok, now we have the relative widths and absolute widths in
+ # two parallel arrays.
+ #
+ # - If there are no relative widths, output the absolute widths
+ # - If there are no absolute widths, output the relative widths
+ # - If there are a mixture of relative and absolute widths,
+ # - If the table width is absolute, turn these all into absolute
+ # widths.
+ # - If the table width is relative, turn these all into absolute
+ # widths in the nominalWidth and then turn them back into
+ # percentages.
+
+ widths = []
+
+ if relTotal == 0:
+ for absPart in absParts:
+ if foStylesheet:
+ inches = absPart / pixelsPerInch
+ widths.append("%4.2fin" % inches)
+ else:
+ widths.append("%d" % absPart)
+ elif absTotal == 0:
+ for relPart in relParts:
+ rel = relPart / relTotal * 100
+ widths.append(rel)
+ widths = correctRoundingError(widths)
+ else:
+ pixelWidth = nominalWidth
+ if string.find(tableWidth, "%") < 0:
+ pixelWidth = convertLength(tableWidth)
+
+ if pixelWidth <= absTotal:
+ print "Table is wider than table width"
+ else:
+ pixelWidth = pixelWidth - absTotal
+
+ absTotal = 0
+ for count in range(len(relParts)):
+ rel = relParts[count] / relTotal * pixelWidth
+ relParts[count] = rel + absParts[count]
+ absTotal = absTotal + rel + absParts[count]
+
+ if string.find(tableWidth, "%") < 0:
+ for count in range(len(relParts)):
+ if foStylesheet:
+ pixels = relParts[count]
+ inches = pixels / pixelsPerInch
+ widths.append("%4.2fin" % inches)
+ else:
+ widths.append(relParts[count])
+ else:
+ for count in range(len(relParts)):
+ rel = relParts[count] / absTotal * 100
+ widths.append(rel)
+ widths = correctRoundingError(widths)
+
+ # Danger, Will Robinson! In-place modification of the result tree!
+ # Side-effect free? We don' need no steenkin' side-effect free!
+ count = 0
+ col = colChildren
+ while col != None:
+ if foStylesheet:
+ col.setProp("column-width", widths[count])
+ else:
+ col.setProp("width", widths[count])
+
+ count = count+1
+ col = col.next
+
+ return nodeset
+
+def convertLength(length):
+ # Given "3.4in" return the width in pixels
+ global pixelsPerInch
+ global unitHash
+
+ m = re.search('([+-]?[\d\.]+)(\S+)', length)
+ if m != None and m.lastindex > 1:
+ unit = pixelsPerInch
+ if unitHash.has_key(m.group(2)):
+ unit = unitHash[m.group(2)]
+ else:
+ print "Unrecognized length: " + m.group(2)
+
+ pixels = unit * float(m.group(1))
+ else:
+ pixels = 0
+
+ return pixels
+
+def correctRoundingError(floatWidths):
+ # The widths are currently floating point numbers, we have to truncate
+ # them back to integers and then distribute the error so that they sum
+ # to exactly 100%.
+
+ totalWidth = 0
+ widths = []
+ for width in floatWidths:
+ width = math.floor(width)
+ widths.append(width)
+ totalWidth = totalWidth + math.floor(width)
+
+ totalError = 100 - totalWidth
+ columnError = totalError / len(widths)
+ error = 0
+ for count in range(len(widths)):
+ width = widths[count]
+ error = error + columnError
+ if error >= 1.0:
+ adj = math.floor(error)
+ error = error - adj
+ widths[count] = "%d%%" % (width + adj)
+ else:
+ widths[count] = "%d%%" % width
+
+ return widths
+
+def lookupVariable(tctxt, varName, default):
+ varString = tctxt.variableLookup(varName, None)
+ if varString == None:
+ return default
+
+ # If it's a list, get the first element
+ if type(varString) == type([]):
+ varString = varString[0]
+
+ # If it's not a string, it must be a node, get its content
+ if type(varString) != type(""):
+ varString = varString.content
+
+ return varString
+
+# ======================================================================
+# Random notes...
+
+#once you have a node which is a libxml2 python xmlNode wrapper all common
+#operations are possible:
+# .children .last .parent .next .prev .doc for navigation
+# .content .type for introspection
+# .prop("attribute_name") to lookup attribute values
+
+# # Now make a nodeset to return
+# # Danger, Will Robinson! This creates a memory leak!
+# newDoc = libxml2.newDoc("1.0")
+# newColGroup = newDoc.newDocNode(None, "colgroup", None)
+# newDoc.addChild(newColGroup)
+# col = colgroup.children
+# while col != None:
+# newCol = newDoc.newDocNode(None, "col", None)
+# newCol.copyPropList(col);
+# newCol.setProp("width", "4")
+# newColGroup.addChild(newCol)
+# col = col.next
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py
new file mode 100644
index 0000000..c712f65
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py
@@ -0,0 +1,84 @@
+#!/usr/bin/python -u
+# $Id: xslt.py 8353 2009-03-17 16:57:50Z mzjn $
+
+import sys
+import libxml2
+import libxslt
+from docbook import adjustColumnWidths
+
+# Check the arguments
+usage = "Usage: %s xmlfile.xml xslfile.xsl [outputfile] [param1=val [param2=val]...]" % sys.argv[0]
+
+xmlfile = None
+xslfile = None
+outfile = "-"
+params = {}
+
+try:
+ xmlfile = sys.argv[1]
+ xslfile = sys.argv[2]
+except IndexError:
+ print usage
+ sys.exit(1)
+
+def quote(astring):
+ if astring.find("'") < 0:
+ return "'" + astring + "'"
+ else:
+ return '"' + astring + '"'
+
+try:
+ outfile = sys.argv[3]
+ if outfile.find("=") > 0:
+ name, value = outfile.split("=", 2)
+ params[name] = quote(value)
+ outfile = None
+
+ count = 4
+ while (sys.argv[count]):
+ try:
+ name, value = sys.argv[count].split("=", 2)
+ if params.has_key(name):
+ print "Warning: '%s' re-specified; replacing value" % name
+ params[name] = quote(value)
+ except ValueError:
+ print "Invalid parameter specification: '" + sys.argv[count] + "'"
+ print usage
+ sys.exit(1)
+ count = count+1
+except IndexError:
+ pass
+
+# ======================================================================
+# Memory debug specific
+# libxml2.debugMemory(1)
+
+# Setup environment
+libxml2.lineNumbersDefault(1)
+libxml2.substituteEntitiesDefault(1)
+libxslt.registerExtModuleFunction("adjustColumnWidths",
+ "http://nwalsh.com/xslt/ext/xsltproc/python/Table",
+ adjustColumnWidths)
+
+# Initialize and run
+styledoc = libxml2.parseFile(xslfile)
+style = libxslt.parseStylesheetDoc(styledoc)
+doc = libxml2.parseFile(xmlfile)
+result = style.applyStylesheet(doc, params)
+
+# Save the result
+if outfile:
+ style.saveResultToFilename(outfile, result, 0)
+else:
+ print result
+
+# Free things up
+style.freeStylesheet()
+doc.freeDoc()
+result.freeDoc()
+
+# Memory debug specific
+#libxslt.cleanup()
+#if libxml2.debugMemory(1) != 0:
+# print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+# libxml2.dumpMemory()
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl
new file mode 100644
index 0000000..4f69be4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl
@@ -0,0 +1,130 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: admon.xsl 7248 2007-08-18 06:50:21Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="note|important|warning|caution|tip">
+ <xsl:choose>
+ <xsl:when test="$admon.graphics != 0">
+ <xsl:call-template name="graphical.admonition"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="nongraphical.admonition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="admon.graphic.width">
+ <xsl:param name="node" select="."/>
+ <xsl:text>36pt</xsl:text>
+</xsl:template>
+
+<xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="filename">
+ <xsl:value-of select="$admon.graphics.path"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='note'">note</xsl:when>
+ <xsl:when test="local-name($node)='warning'">warning</xsl:when>
+ <xsl:when test="local-name($node)='caution'">caution</xsl:when>
+ <xsl:when test="local-name($node)='tip'">tip</xsl:when>
+ <xsl:when test="local-name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$admon.graphics.extension"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0
+ or $fop.extensions != 0
+ or $arbortext.extensions != 0">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>url(</xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="graphical.admonition">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="graphic.width">
+ <xsl:apply-templates select="." mode="admon.graphic.width"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="graphical.admonition.properties">
+ <fo:list-block provisional-distance-between-starts="{$graphic.width} + 18pt"
+ provisional-label-separation="18pt">
+ <fo:list-item>
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <fo:external-graphic width="auto" height="auto"
+ content-width="{$graphic.width}" >
+ <xsl:attribute name="src">
+ <xsl:call-template name="admon.graphic"/>
+ </xsl:attribute>
+ </fo:external-graphic>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <fo:block xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:apply-templates select="." mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+ <fo:block xsl:use-attribute-sets="admonition.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </fo:list-block>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="nongraphical.admonition">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="nongraphical.admonition.properties">
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <fo:block keep-with-next.within-column='always'
+ xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:apply-templates select="." mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+
+ <fo:block xsl:use-attribute-sets="admonition.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="note/title"></xsl:template>
+<xsl:template match="important/title"></xsl:template>
+<xsl:template match="warning/title"></xsl:template>
+<xsl:template match="caution/title"></xsl:template>
+<xsl:template match="tip/title"></xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl
new file mode 100644
index 0000000..ba6baa6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl
@@ -0,0 +1,18 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: annotations.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="annotation"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl
new file mode 100644
index 0000000..434572f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl
@@ -0,0 +1,172 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+
+<!-- Documents using the kimber index method must have a lang attribute -->
+<!-- Only one of these should be present in the entity -->
+<!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'>
+
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService"
+ exclude-result-prefixes="k"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kimber.xsl 8729 2010-07-15 16:43:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+<!-- ==================================================================== -->
+<!-- *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 *** -->
+<!-- ==================================================================== -->
+
+<xsl:include href="../common/autoidx-kimber.xsl"/>
+
+<!-- Java sort apparently works only on lang part, not country -->
+<xsl:param name="sort.lang">
+ <xsl:choose>
+ <xsl:when test="contains(&lang;, '-')">
+ <xsl:value-of select="substring-before(&lang;, '-')"/>
+ </xsl:when>
+ <xsl:when test="contains(&lang;, '_')">
+ <xsl:value-of select="substring-before(&lang;, '_')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="&lang;"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('k:getIndexGroupKey'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Innodata Isogen &#x0A;Java extensions for </xsl:text>
+ <xsl:text>internationalized indexes. &#x0A;Install those </xsl:text>
+ <xsl:text>extensions, or use a different index method.&#x0A;</xsl:text>
+ <xsl:text>For more information, see:&#x0A;</xsl:text>
+ <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm[count(.|key('k-group',
+ k:getIndexGroupKey(&lang;, &primary;))
+ [&scope;][1]) = 1
+ and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical"
+ select="$terms[not(starts-with(
+ k:getIndexGroupKey(&lang;, &primary;),
+ '#NUMERIC'
+ ))]"/>
+
+ <xsl:variable name="others"
+ select="$terms[starts-with(
+ k:getIndexGroupKey(&lang;, &primary;),
+ '#NUMERIC'
+ )]"/>
+
+ <fo:block>
+ <xsl:if test="$others">
+ <xsl:call-template name="indexdiv.title">
+ <xsl:with-param name="titlecontent">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <fo:block>
+ <xsl:apply-templates select="$others"
+ mode="index-symbol-div">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}"
+ select="k:getIndexGroupSortKey(&lang;,
+ k:getIndexGroupKey(&lang;, &primary;))"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical"
+ mode="index-div-kimber">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}"
+ select="k:getIndexGroupSortKey(&lang;,
+ k:getIndexGroupKey(&lang;, &primary;))"/>
+ </xsl:apply-templates>
+ </fo:block>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kimber">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="k:getIndexGroupKey(&lang;, &primary;)"/>
+
+ <xsl:variable name="label"
+ select="k:getIndexGroupLabel(&lang;, $key)"/>
+
+ <xsl:if test="key('k-group', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <fo:block>
+ <xsl:call-template name="indexdiv.title">
+ <xsl:with-param name="titlecontent">
+ <xsl:value-of select="$label"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <fo:block>
+ <xsl:apply-templates select="key('k-group', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;]
+ [1])=1]"
+ mode="index-primary">
+ <xsl:sort select="&primary;" lang="{$sort.lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl
new file mode 100644
index 0000000..7ed5414
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl
@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:rx="http://www.renderx.com/XSL/Extensions"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ xmlns:i="urn:cz-kosek:functions:index"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ xmlns:func="http://exslt.org/functions"
+ xmlns:exslt="http://exslt.org/common"
+ extension-element-prefixes="func exslt"
+ exclude-result-prefixes="func exslt i l"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kosek.xsl 8725 2010-07-15 08:08:04Z kosek $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+
+<xsl:include href="../common/autoidx-kosek.xsl"/>
+
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="contains($vendor, 'Saxonica')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('i:group-index'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the&#xA;</xsl:text>
+ <xsl:text>index extension functions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="common/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm[count(.|key('group-code',
+ i:group-index(&primary;))
+ [&scope;][1]) = 1
+ and not(@class = 'endofrange')]"/>
+ <fo:block>
+ <xsl:apply-templates select="$terms" mode="index-div-kosek">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="i:group-index(&primary;)" data-type="number"/>
+ </xsl:apply-templates>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kosek">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="i:group-index(&primary;)"/>
+
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:if test="key('group-code', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <fo:block>
+ <xsl:call-template name="indexdiv.title">
+ <xsl:with-param name="titlecontent">
+ <xsl:choose>
+ <xsl:when test="$key = 0">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="i:group-letter($key)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <fo:block>
+ <xsl:apply-templates select="key('group-code', $key)[&scope;]
+ [count(.|key('primary', &primary;)
+ [&scope;][1])=1]"
+ mode="index-primary">
+ <xsl:sort select="&primary;" lang="{$lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl
new file mode 100644
index 0000000..9407b5c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-ng.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- You should have this directly in your customization file. -->
+<!-- This file is there only to retain backward compatibility. -->
+<xsl:import href="autoidx-kosek.xsl"/>
+<xsl:param name="index.method">kosek</xsl:param>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl
new file mode 100644
index 0000000..920760f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl
@@ -0,0 +1,1330 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:rx="http://www.renderx.com/XSL/Extensions"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ xmlns:exslt="http://exslt.org/common"
+ extension-element-prefixes="exslt"
+ exclude-result-prefixes="exslt"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx.xsl 8399 2009-04-08 07:37:42Z bobstayton $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "basic" method derived from Jeni Tennison's work. -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+
+<!-- Importing module for kimber or kosek method overrides one of these -->
+<xsl:param name="kimber.imported" select="0"/>
+<xsl:param name="kosek.imported" select="0"/>
+
+<!-- These keys used primary in all methods -->
+<xsl:key name="letter"
+ match="indexterm"
+ use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
+
+<xsl:key name="primary"
+ match="indexterm"
+ use="&primary;"/>
+
+<xsl:key name="secondary"
+ match="indexterm"
+ use="concat(&primary;, &sep;, &secondary;)"/>
+
+<xsl:key name="tertiary"
+ match="indexterm"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
+
+<xsl:key name="endofrange"
+ match="indexterm[@class='endofrange']"
+ use="@startref"/>
+
+<xsl:key name="see-also"
+ match="indexterm[seealso]"
+ use="concat(&primary;, &sep;,
+ &secondary;, &sep;,
+ &tertiary;, &sep;, seealso)"/>
+
+<xsl:key name="see"
+ match="indexterm[see]"
+ use="concat(&primary;, &sep;,
+ &secondary;, &sep;,
+ &tertiary;, &sep;, see)"/>
+
+
+<xsl:template name="generate-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$index.method = 'kosek'">
+ <xsl:call-template name="generate-kosek-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$index.method = 'kimber'">
+ <xsl:call-template name="generate-kimber-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="generate-basic-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate-basic-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm
+ [count(.|key('letter',
+ translate(substring(&primary;, 1, 1),
+ &lowercase;,
+ &uppercase;))
+ [&scope;][1]) = 1
+ and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical"
+ select="$terms[contains(concat(&lowercase;, &uppercase;),
+ substring(&primary;, 1, 1))]"/>
+
+ <xsl:variable name="others" select="$terms[not(contains(
+ concat(&lowercase;,
+ &uppercase;),
+ substring(&primary;, 1, 1)))]"/>
+ <fo:block>
+ <xsl:if test="$others">
+ <xsl:call-template name="indexdiv.title">
+ <xsl:with-param name="titlecontent">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <fo:block>
+ <xsl:apply-templates select="$others[count(.|key('primary',
+ &primary;)[&scope;][1]) = 1]"
+ mode="index-symbol-div">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;,
+ &uppercase;)"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical[count(.|key('letter',
+ translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;))
+ [&scope;][1]) = 1]"
+ mode="index-div-basic">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </fo:block>
+</xsl:template>
+
+<!-- This template not used if fo/autoidx-kosek.xsl is imported -->
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kosek.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the&#xA;</xsl:text>
+ <xsl:text>kosek index extensions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="fo/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+
+<!-- This template not used if fo/autoidx-kimber.xsl is imported -->
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kimber.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the&#xA;</xsl:text>
+ <xsl:text>kimber index extensions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="fo/autoidx-kimber.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-basic">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;)"/>
+
+ <xsl:if test="key('letter', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <fo:block>
+ <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)">
+ <xsl:call-template name="indexdiv.title">
+ <xsl:with-param name="titlecontent">
+ <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:block xsl:use-attribute-sets="index.entry.properties">
+ <xsl:apply-templates select="key('letter', $key)[&scope;]
+ [count(.|key('primary', &primary;)
+ [&scope;][1])=1]"
+ mode="index-primary">
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-symbol-div">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
+
+ <fo:block xsl:use-attribute-sets="index.entry.properties">
+ <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"
+ mode="index-primary">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-primary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="&primary;"/>
+ <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:block>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute>
+ </xsl:if>
+
+ <xsl:for-each select="$refs/primary">
+ <xsl:if test="@id or @xml:id">
+ <fo:inline id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+
+ <xsl:value-of select="primary"/>
+
+ <xsl:choose>
+ <xsl:when test="$xep.extensions != 0">
+ <xsl:if test="$refs[not(see) and not(secondary)]">
+ <xsl:copy-of select="$term.separator"/>
+ <xsl:variable name="primary" select="&primary;"/>
+ <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/>
+ <rx:page-index list-separator="{$number.separator}"
+ range-separator="{$range.separator}">
+ <xsl:if test="$refs[@significance='preferred'][not(see) and not(secondary)]">
+ <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"
+ ref-key="{$primary.significant}"/>
+ </xsl:if>
+ <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(secondary)]">
+ <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"
+ ref-key="{$primary}"/>
+ </xsl:if>
+ </rx:page-index>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="page-number-citations">
+ <xsl:for-each select="$refs[not(see)
+ and not(secondary)]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="position" select="position()"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != '0'">
+ <fotex:sort xmlns:fotex="http://www.tug.org/fotex">
+ <xsl:copy-of select="$page-number-citations"/>
+ </fotex:sort>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$page-number-citations"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(secondary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ </fo:block>
+
+ <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]">
+ <fo:block start-indent="1pc">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"
+ mode="index-secondary">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-secondary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/>
+ <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:block>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute>
+ </xsl:if>
+
+ <xsl:for-each select="$refs/secondary">
+ <xsl:if test="@id or @xml:id">
+ <fo:inline id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+
+ <xsl:value-of select="secondary"/>
+
+ <xsl:choose>
+ <xsl:when test="$xep.extensions != 0">
+ <xsl:if test="$refs[not(see) and not(tertiary)]">
+ <xsl:copy-of select="$term.separator"/>
+ <xsl:variable name="primary" select="&primary;"/>
+ <xsl:variable name="secondary" select="&secondary;"/>
+ <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/>
+ <rx:page-index list-separator="{$number.separator}"
+ range-separator="{$range.separator}">
+ <xsl:if test="$refs[@significance='preferred'][not(see) and not(tertiary)]">
+ <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties">
+ <xsl:attribute name="ref-key">
+ <xsl:value-of select="$primary.significant"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$secondary"/>
+ </xsl:attribute>
+ </rx:index-item>
+ </xsl:if>
+ <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(tertiary)]">
+ <rx:index-item xsl:use-attribute-sets="xep.index.item.properties">
+ <xsl:attribute name="ref-key">
+ <xsl:value-of select="$primary"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$secondary"/>
+ </xsl:attribute>
+ </rx:index-item>
+ </xsl:if>
+ </rx:page-index>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="page-number-citations">
+ <xsl:for-each select="$refs[not(see)
+ and not(tertiary)]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="position" select="position()"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != '0'">
+ <fotex:sort xmlns:fotex="http://www.tug.org/fotex">
+ <xsl:copy-of select="$page-number-citations"/>
+ </fotex:sort>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$page-number-citations"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(tertiary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ </fo:block>
+
+ <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]">
+ <fo:block start-indent="2pc">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"
+ mode="index-tertiary">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-tertiary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
+ <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:block>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute>
+ </xsl:if>
+
+ <xsl:for-each select="$refs/tertiary">
+ <xsl:if test="@id or @xml:id">
+ <fo:inline id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+
+ <xsl:value-of select="tertiary"/>
+
+ <xsl:choose>
+ <xsl:when test="$xep.extensions != 0">
+ <xsl:if test="$refs[not(see)]">
+ <xsl:copy-of select="$term.separator"/>
+ <xsl:variable name="primary" select="&primary;"/>
+ <xsl:variable name="secondary" select="&secondary;"/>
+ <xsl:variable name="tertiary" select="&tertiary;"/>
+ <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/>
+ <rx:page-index list-separator="{$number.separator}"
+ range-separator="{$range.separator}">
+ <xsl:if test="$refs[@significance='preferred'][not(see)]">
+ <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties">
+ <xsl:attribute name="ref-key">
+ <xsl:value-of select="$primary.significant"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$secondary"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$tertiary"/>
+ </xsl:attribute>
+ </rx:index-item>
+ </xsl:if>
+ <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see)]">
+ <rx:index-item xsl:use-attribute-sets="xep.index.item.properties">
+ <xsl:attribute name="ref-key">
+ <xsl:value-of select="$primary"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$secondary"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$tertiary"/>
+ </xsl:attribute>
+ </rx:index-item>
+ </xsl:if>
+ </rx:page-index>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="page-number-citations">
+ <xsl:for-each select="$refs[not(see)]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="position" select="position()"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != '0'">
+ <fotex:sort xmlns:fotex="http://www.tug.org/fotex">
+ <xsl:copy-of select="$page-number-citations"/>
+ </fotex:sort>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$page-number-citations"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs/see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ </fo:block>
+
+ <xsl:if test="$refs/seealso">
+ <fo:block>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="position" select="0"/>
+ <xsl:param name="separator" select="''"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$separator != ''">
+ <xsl:value-of select="$separator"/>
+ </xsl:when>
+ <xsl:when test="$position = 1">
+ <xsl:value-of select="$term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$number.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="@zone and string(@zone)">
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="normalize-space(@zone)"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="ancestor::*[contains(local-name(),'info') and not(starts-with(local-name(),'info'))]">
+ <xsl:call-template name="info.reference">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+
+ <xsl:if test="key('endofrange', $id)[&scope;]">
+ <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]"
+ mode="reference">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="separator" select="$range.separator"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="zones"/>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($zones, ' ')">
+ <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
+ <xsl:variable name="target" select="key('id', $zone)"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+
+ <xsl:if test="$passivetex.extensions = '0'">
+ <xsl:copy-of select="$number.separator"/>
+ </xsl:if>
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="zone" select="$zones"/>
+ <xsl:variable name="target" select="key('id', $zone)"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="info.reference">
+ <!-- This is not perfect. It doesn't treat indexterm inside info element as a range covering whole parent of info.
+ It also not work when there is no ID generated for parent element. But it works in the most common cases. -->
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="target" select="(ancestor::appendix|ancestor::article|ancestor::bibliography|ancestor::book|
+ ancestor::chapter|ancestor::glossary|ancestor::part|ancestor::preface|
+ ancestor::refentry|ancestor::reference|ancestor::refsect1|ancestor::refsect2|
+ ancestor::refsect3|ancestor::refsection|ancestor::refsynopsisdiv|
+ ancestor::sect1|ancestor::sect2|ancestor::sect3|ancestor::sect4|ancestor::sect5|
+ ancestor::section|ancestor::setindex|ancestor::set|ancestor::sidebar|ancestor::mediaobject)[&scope;]"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target[position() = last()]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-see">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <fo:inline>
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="see"/>
+ <xsl:text>)</xsl:text>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-seealso">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:for-each select="seealso">
+ <xsl:sort select="translate(., &lowercase;, &uppercase;)"/>
+ <fo:block>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>)</xsl:text>
+ </fo:block>
+ </xsl:for-each>
+
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="generate-index-markup">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+ <xsl:param name="role" select="@role"/>
+ <xsl:param name="type" select="@type"/>
+
+ <xsl:variable name="terms" select="$scope//indexterm[count(.|key('letter',
+ translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]"/>
+ <xsl:variable name="alphabetical"
+ select="$terms[contains(concat(&lowercase;, &uppercase;),
+ substring(&primary;, 1, 1))]"/>
+ <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;,
+ &uppercase;),
+ substring(&primary;, 1, 1)))]"/>
+
+ <xsl:text>&lt;index&gt;&#10;</xsl:text>
+ <xsl:if test="$others">
+ <xsl:text>&#10;&lt;indexdiv&gt;&#10;</xsl:text>
+ <xsl:text>&lt;title&gt;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ <xsl:text>&lt;/title&gt;&#10;</xsl:text>
+ <xsl:apply-templates select="$others[count(.|key('primary',
+ &primary;)[&scope;][1]) = 1]"
+ mode="index-symbol-div-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:text>&lt;/indexdiv&gt;&#10;</xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical[count(.|key('letter',
+ translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]"
+ mode="index-div-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:text>&lt;/index&gt;&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="*" mode="index-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>&gt;&#10;</xsl:text>
+ <xsl:apply-templates mode="index-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
+ <xsl:text>&#10;&lt;indexdiv&gt;&#10;</xsl:text>
+ <xsl:text>&lt;title&gt;</xsl:text>
+ <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/>
+ <xsl:text>&lt;/title&gt;&#10;</xsl:text>
+
+ <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"
+ mode="index-primary-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:text>&lt;/indexdiv&gt;&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-symbol-div-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
+
+ <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"
+ mode="index-primary-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-primary-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:variable name="key" select="&primary;"/>
+ <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/>
+ <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/>
+
+ <xsl:text>&#10;&lt;indexentry&gt;&#10;</xsl:text>
+ <xsl:text>&lt;primaryie&gt;</xsl:text>
+ <xsl:text>&lt;phrase&gt;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="string(primary)"/>
+ </xsl:call-template>
+ <xsl:text>&lt;/phrase&gt;</xsl:text>
+ <xsl:if test="$pages">,</xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <xsl:for-each select="$pages">
+ <xsl:apply-templates select="." mode="reference-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+
+ <xsl:text>&lt;/primaryie&gt;&#10;</xsl:text>
+
+ <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::see or self::seealso]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"
+ mode="index-secondary-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:text>&lt;/indexentry&gt;&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-secondary-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/>
+ <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/>
+ <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/>
+
+ <xsl:text>&lt;secondaryie&gt;</xsl:text>
+ <xsl:text>&lt;phrase&gt;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="string(secondary)"/>
+ </xsl:call-template>
+ <xsl:text>&lt;/phrase&gt;</xsl:text>
+ <xsl:if test="$pages">,</xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <xsl:for-each select="$pages">
+ <xsl:apply-templates select="." mode="reference-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+
+ <xsl:text>&lt;/secondaryie&gt;&#10;</xsl:text>
+
+ <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::see or self::seealso]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"
+ mode="index-tertiary-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-tertiary-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
+ <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/>
+ <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/>
+
+ <xsl:text>&lt;tertiaryie&gt;</xsl:text>
+ <xsl:text>&lt;phrase&gt;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="string(tertiary)"/>
+ </xsl:call-template>
+ <xsl:text>&lt;/phrase&gt;</xsl:text>
+ <xsl:if test="$pages">,</xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <xsl:for-each select="$pages">
+ <xsl:apply-templates select="." mode="reference-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+
+ <xsl:text>&lt;/tertiaryie&gt;&#10;</xsl:text>
+
+ <xsl:variable name="see" select="$refs/see | $refs/seealso"/>
+ <xsl:if test="$see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]"
+ mode="index-see-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso-markup">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="reference-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="@zone and string(@zone)">
+ <xsl:call-template name="reference-markup">
+ <xsl:with-param name="zones" select="normalize-space(@zone)"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+
+ <xsl:choose>
+ <xsl:when test="@startref and @class='endofrange'">
+ <xsl:text>&lt;phrase role="pageno"&gt;</xsl:text>
+ <xsl:text>&lt;link linkend="</xsl:text>
+ <xsl:value-of select="@startref"/>
+ <xsl:text>"&gt;</xsl:text>
+ <fo:basic-link internal-destination="{@startref}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{@startref}"/>
+ <xsl:text>-</xsl:text>
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+ <xsl:text>&lt;/link&gt;</xsl:text>
+ <xsl:text>&lt;/phrase&gt;&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&lt;phrase role="pageno"&gt;</xsl:text>
+ <xsl:if test="$id">
+ <xsl:text>&lt;link linkend="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text>"&gt;</xsl:text>
+ </xsl:if>
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+ <xsl:if test="$id">
+ <xsl:text>&lt;/link&gt;</xsl:text>
+ </xsl:if>
+ <xsl:text>&lt;/phrase&gt;&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="reference-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="zones"/>
+ <xsl:choose>
+ <xsl:when test="contains($zones, ' ')">
+ <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
+ <xsl:variable name="target" select="key('id', $zone)[&scope;]"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:text>&lt;phrase fole="pageno"&gt;</xsl:text>
+ <xsl:if test="$target[1]/@id or $target[1]/@xml:id">
+ <xsl:text>&lt;link linkend="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text>"&gt;</xsl:text>
+ </xsl:if>
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+ <xsl:if test="$target[1]/@id or $target[1]/@xml:id">
+ <xsl:text>&lt;/link&gt;</xsl:text>
+ </xsl:if>
+ <xsl:text>&lt;/phrase&gt;&#10;</xsl:text>
+
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="zone" select="$zones"/>
+ <xsl:variable name="target" select="key('id', $zone)[&scope;]"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:text>&lt;phrase role="pageno"&gt;</xsl:text>
+ <xsl:if test="$target[1]/@id or target[1]/@xml:id">
+ <xsl:text>&lt;link linkend="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text>"&gt;</xsl:text>
+ </xsl:if>
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="index.page.number.properties">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+ <xsl:if test="$target[1]/@id or target[1]/@xml:id">
+ <xsl:text>&lt;/link&gt;</xsl:text>
+ </xsl:if>
+ <xsl:text>&lt;/phrase&gt;&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-see-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <fo:block>
+ <xsl:text>&lt;seeie&gt;</xsl:text>
+ <xsl:text>&lt;phrase&gt;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="string(see)"/>
+ </xsl:call-template>
+ <xsl:text>&lt;/phrase&gt;</xsl:text>
+ <xsl:text>&lt;/seeie&gt;&#10;</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-seealso-markup">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <fo:block>
+ <xsl:text>&lt;seealsoie&gt;</xsl:text>
+ <xsl:text>&lt;phrase&gt;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="string(seealso)"/>
+ </xsl:call-template>
+ <xsl:text>&lt;/phrase&gt;</xsl:text>
+ <xsl:text>&lt;/seealsoie&gt;&#10;</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="escape-text">
+ <xsl:param name="text" select="''"/>
+
+ <xsl:variable name="ltpos" select="substring-before($text, '&lt;')"/>
+ <xsl:variable name="amppos" select="substring-before($text, '&amp;')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($text,'&lt;') and contains($text, '&amp;')
+ and string-length($ltpos) &lt; string-length($amppos)">
+ <xsl:value-of select="$ltpos"/>
+ <xsl:text>&amp;lt;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="substring-after($text, '&lt;')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($text,'&lt;') and contains($text, '&amp;')
+ and string-length($amppos) &lt; string-length($ltpos)">
+ <xsl:value-of select="$amppos"/>
+ <xsl:text>&amp;amp;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="substring-after($text, '&amp;')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($text, '&lt;')">
+ <xsl:value-of select="$ltpos"/>
+ <xsl:text>&amp;lt;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="substring-after($text, '&lt;')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($text, '&amp;')">
+ <xsl:value-of select="$amppos"/>
+ <xsl:text>&amp;amp;</xsl:text>
+ <xsl:call-template name="escape-text">
+ <xsl:with-param name="text" select="substring-after($text, '&amp;')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="index.separator">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$key = 'index.term.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.term.separator != ''">
+ <xsl:copy-of select="$index.term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">term-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.number.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.number.separator != ''">
+ <xsl:copy-of select="$index.number.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">number-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.range.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.range.separator != ''">
+ <xsl:copy-of select="$index.range.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">range-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl
new file mode 100644
index 0000000..c1079b8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl
@@ -0,0 +1,915 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: autotoc.xsl 8286 2009-03-06 22:53:04Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="set.toc">
+
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="nodes" select="book|set|setindex"/>
+
+ <xsl:if test="$nodes">
+ <fo:block id="toc...{$id}"
+ xsl:use-attribute-sets="toc.margin.properties">
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:outline-level">1</xsl:attribute>
+ <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
+ <xsl:attribute name="axf:outline-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="table.of.contents.titlepage"/>
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="division.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="nodes"
+ select="$toc-context/part
+ |$toc-context/reference
+ |$toc-context/preface
+ |$toc-context/chapter
+ |$toc-context/appendix
+ |$toc-context/article
+ |$toc-context/bibliography
+ |$toc-context/glossary
+ |$toc-context/index"/>
+
+ <xsl:if test="$nodes">
+ <fo:block id="toc...{$cid}"
+ xsl:use-attribute-sets="toc.margin.properties">
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:outline-level">1</xsl:attribute>
+ <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
+ <xsl:attribute name="axf:outline-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$toc.title.p">
+ <xsl:call-template name="table.of.contents.titlepage"/>
+ </xsl:if>
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="component.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="nodes" select="section|sect1|refentry
+ |article|bibliography|glossary
+ |qandaset[$qanda.in.toc != 0]
+ |appendix|index"/>
+ <xsl:if test="$nodes">
+ <fo:block id="toc...{$id}"
+ xsl:use-attribute-sets="toc.margin.properties">
+ <xsl:if test="$toc.title.p">
+ <xsl:call-template name="table.of.contents.titlepage"/>
+ </xsl:if>
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="component.toc.separator">
+ <!-- Customize to output something between
+ component.toc and first output -->
+</xsl:template>
+
+<xsl:template name="section.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="nodes"
+ select="section|sect1|sect2|sect3|sect4|sect5|refentry
+ |qandaset[$qanda.in.toc != 0]
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level"/>
+ </xsl:variable>
+
+ <xsl:if test="$nodes">
+ <fo:block id="toc...{$id}"
+ xsl:use-attribute-sets="toc.margin.properties">
+
+ <xsl:if test="$toc.title.p">
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="$level + 1"/>
+ <xsl:with-param name="title">
+ <fo:block space-after="0.5em">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="section.toc.separator">
+ <!-- Customize to output something between
+ section.toc and first output -->
+</xsl:template>
+<!-- ==================================================================== -->
+
+<xsl:template name="toc.line">
+ <xsl:param name="toc-context" select="NOTANODE"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="toc.line.properties">
+ <fo:inline keep-with-next.within-line="always">
+ <fo:basic-link internal-destination="{$id}">
+ <xsl:if test="$label != ''">
+ <xsl:copy-of select="$label"/>
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </fo:basic-link>
+ </fo:inline>
+ <fo:inline keep-together.within-line="always">
+ <xsl:text> </xsl:text>
+ <fo:leader leader-pattern="dots"
+ leader-pattern-width="3pt"
+ leader-alignment="reference-area"
+ keep-with-next.within-line="always"/>
+ <xsl:text> </xsl:text>
+ <fo:basic-link internal-destination="{$id}">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+ </fo:inline>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="qandaset.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="nodes" select="qandadiv|qandaentry"/>
+
+ <xsl:if test="$nodes">
+ <fo:block id="toc...{$id}"
+ xsl:use-attribute-sets="toc.margin.properties">
+ <xsl:if test="$toc.title.p">
+ <xsl:call-template name="table.of.contents.titlepage"/>
+ </xsl:if>
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="qandaset.toc.separator">
+ <!-- Customize to output something between
+ qandaset.toc and first output -->
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="nodes" select="qandadiv|qandaentry"/>
+
+ <xsl:if test="$nodes">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="toc">
+ <xsl:apply-templates select="question" mode="toc"/>
+</xsl:template>
+
+<xsl:template match="question" mode="toc">
+ <xsl:variable name="firstchunk">
+ <!-- Use a titleabbrev or title if available -->
+ <xsl:choose>
+ <xsl:when test="../blockinfo/titleabbrev">
+ <xsl:apply-templates select="../blockinfo/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../blockinfo/title">
+ <xsl:apply-templates select="../blockinfo/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/titleabbrev">
+ <xsl:apply-templates select="../info/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../titleabbrev">
+ <xsl:apply-templates select="../titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/title">
+ <xsl:apply-templates select="../info/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../title">
+ <xsl:apply-templates select="../title[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="toc.line.properties"
+ end-indent="{$toc.indent.width}pt"
+ last-line-end-indent="-{$toc.indent.width}pt">
+ <xsl:attribute name="margin-{$direction.align.start}">3em</xsl:attribute>
+ <xsl:attribute name="text-indent">-3em</xsl:attribute>
+ <fo:inline keep-with-next.within-line="always">
+ <fo:basic-link internal-destination="{$id}">
+ <xsl:if test="$label != ''">
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$deflabel = 'number' and not(label)">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:copy-of select="$firstchunk"/>
+ </fo:basic-link>
+ </fo:inline>
+ <fo:inline keep-together.within-line="always">
+ <xsl:text> </xsl:text>
+ <fo:leader leader-pattern="dots"
+ leader-pattern-width="3pt"
+ leader-alignment="reference-area"
+ keep-with-next.within-line="always"/>
+ <xsl:text> </xsl:text>
+ <fo:basic-link internal-destination="{$id}">
+ <fo:page-number-citation ref-id="{$id}"/>
+ </fo:basic-link>
+ </fo:inline>
+ </fo:block>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book|setindex" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="nodes" select="glossary|bibliography|preface|chapter
+ |reference|part|article|appendix|index"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 0
+ and $toc.max.depth > $depth.from.context
+ and $nodes">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="set" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="nodes" select="set|book|setindex"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 0
+ and $toc.max.depth > $depth.from.context
+ and $nodes">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="nodes" select="chapter|appendix|preface|reference|
+ refentry|article|index|glossary|
+ bibliography"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 0
+ and $toc.max.depth > $depth.from.context
+ and $nodes">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="reference" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:if test="$toc.section.depth > 0
+ and $toc.max.depth > $depth.from.context
+ and refentry">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="refentry" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix|article"
+ mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="nodes" select="section|sect1
+ |qandaset[$qanda.in.toc != 0]
+ |simplesect[$simplesect.in.toc != 0]
+ |refentry|appendix"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 0
+ and $toc.max.depth > $depth.from.context
+ and $nodes">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect1" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 1
+ and $toc.max.depth > $depth.from.context
+ and sect2">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="sect2|qandaset[$qanda.in.toc != 0]"
+ mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect2" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 2
+ and $toc.max.depth > $depth.from.context
+ and sect3">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent">
+ <xsl:with-param name="reldepth" select="$reldepth"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="sect3|qandaset[$qanda.in.toc != 0]"
+ mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect3" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 3
+ and $toc.max.depth > $depth.from.context
+ and sect4">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent">
+ <xsl:with-param name="reldepth" select="$reldepth"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="sect4|qandaset[$qanda.in.toc != 0]"
+ mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect4" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth > 4
+ and $toc.max.depth > $depth.from.context
+ and sect5">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent">
+ <xsl:with-param name="reldepth" select="$reldepth"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="sect5|qandaset[$qanda.in.toc != 0]"
+ mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect5|simplesect" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="set.toc.indent">
+ <xsl:param name="reldepth"/>
+
+ <xsl:variable name="depth">
+ <xsl:choose>
+ <xsl:when test="$reldepth != ''">
+ <xsl:value-of select="$reldepth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="count(ancestor::*)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0">
+ <xsl:value-of select="concat($depth*$toc.indent.width, 'pt')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($toc.indent.width, 'pt')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="section" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth" select="count(ancestor::section) + 1"/>
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth &gt;= $depth">
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:if test="$toc.section.depth > $depth
+ and $toc.max.depth > $depth.from.context
+ and section">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent">
+ <xsl:with-param name="reldepth" select="$reldepth"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="section|qandaset[$qanda.in.toc != 0]"
+ mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="bibliography|glossary"
+ mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="index" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="title" mode="toc">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="list.of.titles">
+ <xsl:param name="titles" select="'table'"/>
+ <xsl:param name="nodes" select=".//table"/>
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:if test="$nodes">
+ <fo:block id="lot...{$titles}...{$id}">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">
+ <xsl:call-template name="list.of.tables.titlepage"/>
+ </xsl:when>
+ <xsl:when test="$titles='figure'">
+ <xsl:call-template name="list.of.figures.titlepage"/>
+ </xsl:when>
+ <xsl:when test="$titles='equation'">
+ <xsl:call-template name="list.of.equations.titlepage"/>
+ </xsl:when>
+ <xsl:when test="$titles='example'">
+ <xsl:call-template name="list.of.examples.titlepage"/>
+ </xsl:when>
+ <xsl:when test="$titles='procedure'">
+ <xsl:call-template name="list.of.procedures.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.unknowns.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example|equation|procedure" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- qandaset handled like a section when qanda.in.toc is set -->
+<xsl:template match="qandaset" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="cid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth" select="count(ancestor::section) + 1"/>
+ <xsl:variable name="reldepth"
+ select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:if test="$toc.section.depth &gt;= $depth">
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+
+ <xsl:if test="$toc.section.depth > $depth
+ and $toc.max.depth > $depth.from.context
+ and (child::qandadiv or child::qandaentry)">
+ <fo:block id="toc.{$cid}.{$id}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:call-template name="set.toc.indent">
+ <xsl:with-param name="reldepth" select="$reldepth"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="qandadiv|qandaentry" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl
new file mode 100644
index 0000000..e63c3a6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl
@@ -0,0 +1,110 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: axf.xsl 6483 2007-01-08 18:00:22Z bobstayton $
+ ******************************************************************** -->
+
+<xsl:template name="axf-document-information">
+
+ <xsl:variable name="authors" select="(//author|//editor|
+ //corpauthor|//authorgroup)[1]"/>
+ <xsl:if test="$authors">
+ <xsl:variable name="author">
+ <xsl:choose>
+ <xsl:when test="$authors[self::authorgroup]">
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list"
+ select="$authors/*[self::author|self::corpauthor|
+ self::othercredit|self::editor]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$authors[self::corpauthor]">
+ <xsl:value-of select="$authors"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$authors"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="axf:document-info">
+ <xsl:attribute name="name">author</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:value-of select="normalize-space($author)"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="/*[1]" mode="label.markup"/>
+ <xsl:apply-templates select="/*[1]" mode="title.markup"/>
+ </xsl:variable>
+
+ <!-- * see bug report #1465301 - mzjn -->
+ <axf:document-info name="title">
+ <xsl:attribute name="value">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </axf:document-info>
+
+ <xsl:if test="//keyword">
+ <xsl:element name="axf:document-info">
+ <xsl:attribute name="name">keywords</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:for-each select="//keyword">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="//subjectterm">
+ <xsl:element name="axf:document-info">
+ <xsl:attribute name="name">subject</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:for-each select="//subjectterm">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- These properties are added to fo:simple-page-master -->
+<xsl:template name="axf-page-master-properties">
+ <xsl:param name="page.master" select="''"/>
+
+ <xsl:if test="$crop.marks != 0">
+ <xsl:attribute name="axf:printer-marks">crop</xsl:attribute>
+ <xsl:attribute name="axf:bleed"><xsl:value-of
+ select="$crop.mark.bleed"/></xsl:attribute>
+ <xsl:attribute name="axf:printer-marks-line-width"><xsl:value-of
+ select="$crop.mark.width"/></xsl:attribute>
+ <xsl:attribute name="axf:crop-offset"><xsl:value-of
+ select="$crop.mark.offset"/></xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="user-axf-page-master-properties">
+ <xsl:with-param name="page.master" select="$page.master"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template name="user-axf-page-master-properties">
+ <xsl:param name="page.master" select="''"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl
new file mode 100644
index 0000000..1bc3858
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 6402 2006-11-12 08:23:21Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ The original code for processing bibliography in ISO690 style
+ was provided by Jana Dvorakova <jana4u@seznam.cz>
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep -->
+<xsl:param name="biblioentry.alt.primary.seps" select="0"/>
+
+<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 -->
+<xsl:param name="biblioentry.primary.count" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="iso690.makecitation">
+<!-- Types of resources -->
+ <xsl:choose>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM -->
+ <!-- same as Monographs -->
+ <xsl:when test="./@role='messagesystem'">
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:when>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES -->
+ <!-- same as Contributions to Monographs -->
+ <xsl:when test="./@role='message'">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- SERIALS -->
+ <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn">
+ <xsl:call-template name="iso690.serial"/>
+ </xsl:when>
+
+ <!-- PARTS OF MONOGRAPHS -->
+ <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])">
+ <xsl:call-template name="iso690.monogr.part"/>
+ </xsl:when>
+
+ <!-- CONTRIBUTIONS TO MONOGRAPHS -->
+ <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- ARTICLES, ETC., IN SERIALS -->
+ <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')">
+ <xsl:call-template name="iso690.article"/>
+ </xsl:when>
+
+ <!-- PATENT DOCUMENTS -->
+ <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])">
+ <xsl:call-template name="iso690.patent"/>
+ </xsl:when>
+
+ <!-- MONOGRAPHS -->
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- MONOGRAPHS -->
+<xsl:template name="iso690.monogr">
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Extent -->
+ <xsl:call-template name="iso690.extent"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.isbn"/>
+</xsl:template>
+
+<!-- SERIALS -->
+<xsl:template name="iso690.serial">
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Responsibility [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/>
+ </xsl:call-template>
+ <!-- Issue designation (date and/or n°) [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.issuing"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.issn"/>
+</xsl:template>
+
+<!-- PARTS OF MONOGRAPHS -->
+<xsl:template name="iso690.monogr.part">
+ <!-- Primary responsibility of host document -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium of host document -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility of host document [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./volumenum"/>
+ </xsl:call-template>
+ <!-- Numeration of the part [nonEL]-->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.partnr"/>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.part.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Numeration within host document [EL] -->
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- CONTRIBUTIONS TO MONOGRAPHS -->
+<xsl:template name="iso690.paper.mon">
+<!-- Contribution -->
+ <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/>
+<!-- In -->
+ <xsl:text>In </xsl:text>
+<!-- Host -->
+ <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.part">
+<!-- Contribution -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.book">
+<!-- Host -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.paper.pub"/>
+ <!-- Numeration within host document [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ARTICLES, ETC., IN SERIALS -->
+<xsl:template name="iso690.article">
+<!-- Article -->
+ <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/>
+<!-- Serial -->
+ <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.art">
+<!-- Article -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:if test="not(../*/bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.jour">
+<!-- Serial -->
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/>
+ </xsl:call-template>
+ <!-- Number designation [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.article.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.issn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- PATENT DOCUMENTS -->
+<xsl:template name="iso690.patent">
+ <!-- Primary responsibility (applicant) -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title of the invention -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Identification -->
+ <xsl:call-template name="iso690.pat.ident"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Elements -->
+
+<!-- Primary responsibility -->
+<xsl:template name="iso690.primary">
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./authorgroup/author|./author">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/editor|./editor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/corpauthor|./corpauthor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="(./firstname)and(./surname)">
+ <xsl:call-template name="iso690.author"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author.list">
+ <xsl:param name="person.list"
+ select="author|corpauthor|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="group" select="./authorgroup[@role='many']"/>
+ <xsl:param name="many" select="0"/>
+
+ <xsl:param name="primary.many">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.editor">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"></xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$person.count &lt; 4 and not($group)">
+ <xsl:call-template name="iso690.author">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1 and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.two.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.last.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.more.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($count = $person.count)">
+ <xsl:choose>
+ <xsl:when test="$many!=0">
+ <xsl:if test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ </xsl:if>
+ <xsl:value-of select="$primary.many"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$primary.many"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ <xsl:value-of select="$primary.sep"/>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='corpauthor'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count]//firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="many" select="$many"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="($biblioentry.primary.count&gt;=3) and ($person.count&gt;=3)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]|$person.list[3]"/>
+ <xsl:with-param name="person.count" select="3"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($biblioentry.primary.count&gt;1) and ($person.count&gt;1)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/>
+ <xsl:with-param name="person.count" select="2"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]"/>
+ <xsl:with-param name="person.count" select="1"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="lastfirst.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="name($node)!='corpauthor'">
+ <fo:inline text-transform="uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/>
+ </fo:inline>
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:value-of select="$lastfirst.sep"/>
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline text-transform="uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Title and Type of medium -->
+<xsl:template name="iso690.title">
+ <xsl:param name="medium" select="./bibliomisc[@role='medium']"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:apply-templates mode="iso690.mode" select="./title">
+ <xsl:with-param name="medium" select="$medium"/>
+ <xsl:with-param name="italic" select="$italic"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="title" mode="iso690.mode">
+ <xsl:param name="medium"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$italic=1">
+ <xsl:call-template name="iso690.italic.title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.make.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$medium">
+ <xsl:value-of select="$medium1"/>
+ <xsl:apply-templates mode="iso690.mode" select="$medium"/>
+ <xsl:value-of select="$medium2"/>
+ </xsl:if>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="iso690.italic.title">
+ <fo:inline font-style="italic">
+ <xsl:call-template name="iso690.make.title"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="iso690.make.title">
+ <xsl:param name="submaintitle.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:if test="../subtitle">
+ <xsl:value-of select="$submaintitle.sep"/>
+ <xsl:apply-templates mode="iso690.mode" select="../subtitle"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Subordinate responsibility -->
+<xsl:template name="iso690.secondary">
+ <xsl:param name="secondary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="secondary.person.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:for-each select="./bibliomisc[@role='secondary']">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ <xsl:choose>
+ <xsl:when test="position()=count(../bibliomisc[@role='secondary'])">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$secondary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$secondary.person.sep"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Edition -->
+<xsl:template name="iso690.edition">
+ <xsl:param name="after"/>
+ <xsl:param name="edition.serial.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="string($after)!=''">
+ <xsl:apply-templates mode="iso690.mode" select="./edition">
+ <xsl:with-param name="sep" select="$edition.serial.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./edition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="edition" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Issue designation (date and/or n°) -->
+<xsl:template name="iso690.issuing">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing']">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./volumenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.issuedate">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'][2]">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Numeration of the part -->
+<xsl:template name="iso690.partnr">
+ <xsl:param name="partnr.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$partnr.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+<xsl:template name="iso690.pub">
+ <xsl:param name="onlydate" select="0"/>
+ <xsl:param name="placesep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="pubsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="endsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$pubsep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="$onlydate=1">
+ <xsl:call-template name="iso690.location">
+ <xsl:with-param name="onlypages" select="1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.paper.pub">
+ <xsl:param name="spec.pubinfo.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumnum|./issuenum|./pagenums">
+ <xsl:call-template name="iso690.pub">
+ <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.pub"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.data">
+ <xsl:param name="sep"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/>
+ <xsl:choose>
+ <xsl:when test="./date[@role='cit']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./date[@role='upd']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="publisher/address/city|publishername" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="0"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pubdate|copyright/year" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="1"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="name(.)!='pubdate'">
+ <xsl:value-of select="'&#x00A9;'"/><!-- copyright -->
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:if test="$upd!=0">
+ <xsl:choose>
+ <xsl:when test="name(.)='pubdate'">
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(../date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.space">
+ <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="$text='-'">
+ <xsl:value-of select="' '"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Date of update/revision -->
+<xsl:template match="date[@role='upd']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$sep"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Date of citation -->
+<xsl:template match="date[@role='cit']" mode="iso690.mode">
+ <xsl:param name="datecit1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$datecit1"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$datecit2"/>
+</xsl:template>
+
+<!-- Extent -->
+<xsl:template name="iso690.extent">
+ <xsl:param name="extent.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums">
+ <xsl:with-param name="sep" select="$extent.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Location within host -->
+<xsl:template name="iso690.part.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:when test="./bibliomisc[@role='sectitle']">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.article.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="locs.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])">
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="iso690.location"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="volumenum|issuenum" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Series -->
+<xsl:template name="iso690.serie">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/>
+</xsl:template>
+
+<!-- Notes -->
+<xsl:template name="iso690.notice">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode">
+ <xsl:param name="notice.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$notice.sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Avaibility and access -->
+<xsl:template name="iso690.access">
+ <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']">
+ <xsl:choose>
+ <xsl:when test="position()=1">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select=".">
+ <xsl:with-param name="firstacc" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode">
+ <xsl:param name="link1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="link2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$link1"/>
+ <xsl:call-template name="ulink"/>
+ <xsl:value-of select="$link2"/>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode">
+ <xsl:param name="firstacc" select="1"/>
+ <xsl:param name="access">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="acctoo">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="onwww">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="oninet">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.end">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$firstacc=1">
+ <xsl:value-of select="$access"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$acctoo"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="(./ulink)and(string(./ulink)=string(.))">
+ <xsl:choose>
+ <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))">
+ <xsl:value-of select="$onwww"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$oninet"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="(./ulink)and(string(./ulink)!=string(.))">
+ <xsl:value-of select="text()[1]"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="text()[1]"/>
+ <xsl:with-param name="sep" select="$access.end"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$access.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISBN -->
+<xsl:template name="iso690.isbn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='isbn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/>
+ </xsl:when>
+ <xsl:when test="./isbn">
+ <xsl:apply-templates mode="iso690.mode" select="./isbn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode">
+ <xsl:param name="isbn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$isbn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISSN -->
+<xsl:template name="iso690.issn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='issn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/>
+ </xsl:when>
+ <xsl:when test="./issn">
+ <xsl:apply-templates mode="iso690.mode" select="./issn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode">
+ <xsl:param name="issn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$issn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Identification of patent document -->
+<xsl:template name="iso690.pat.ident">
+ <xsl:param name="patdate.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./address/country"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/>
+ <xsl:choose>
+ <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$patdate.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Country or issuing office -->
+<xsl:template match="address/country" mode="iso690.mode">
+ <xsl:param name="patcountry.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template>
+ </xsl:param>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="iso690.mode"/>
+ </fo:inline>
+ <xsl:value-of select="$patcountry.sep"/>
+</xsl:template>
+
+<!-- Kind of patent document -->
+<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode">
+ <xsl:param name="pattype.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template>
+ </xsl:param>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="iso690.mode"/>
+ </fo:inline>
+ <xsl:value-of select="$pattype.sep"/>
+</xsl:template>
+
+<!-- Number -->
+<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode">
+ <xsl:param name="patnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$patnum.sep"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Supplementary templates -->
+
+<xsl:template name="iso690.endsep">
+ <xsl:param name="text"/>
+ <xsl:param name="sep" select=". "/>
+ <xsl:choose>
+ <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)">
+ <xsl:value-of select="$sep"/>
+ </xsl:when>
+ <xsl:when test="substring($text,string-length($text))=' '">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="' '"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="iso690.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl
new file mode 100644
index 0000000..4524612
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl
@@ -0,0 +1,1169 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 7467 2007-09-27 16:10:31Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliography">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*) or parent::part or parent::book">
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="bibliography.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em">
+ <xsl:call-template name="bibliography.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliography/bibliographyinfo"></xsl:template>
+<xsl:template match="bibliography/info"></xsl:template>
+<xsl:template match="bibliography/title"></xsl:template>
+<xsl:template match="bibliography/subtitle"></xsl:template>
+<xsl:template match="bibliography/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliodiv">
+ <fo:block>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="bibliodiv.titlepage"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="bibliodiv/title"/>
+<xsl:template match="bibliodiv/subtitle"/>
+<xsl:template match="bibliodiv/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliolist">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em">
+
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="*[not(self::blockinfo)
+ and not(self::info)
+ and not(self::title)
+ and not(self::titleabbrev)]"/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="biblioentry">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography//
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties">
+ <xsl:copy-of select="$label"/>
+ <xsl:choose>
+ <xsl:when test="$bibliography.style = 'iso690'">
+ <xsl:call-template name="iso690.makecitation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomixed">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography//
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties">
+ <xsl:copy-of select="$label"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="biblioentry.label">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:text>[</xsl:text>
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node/child::*[1]) = 'abbrev'">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="$node/abbrev[1]"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xreflabel">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xreflabel"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@id or $node/@xml:id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- nop --></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliography.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliography.mode">
+ <xsl:if test="preceding-sibling::*">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="address" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="artheader|articleinfo|article/info"
+ mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:call-template name="person.name"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:call-template name="person.name.list"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="biblioset/title|biblioset/citetitle"
+ mode="bibliography.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bookbiblio" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="collab" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="copyright" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="bibliography.mode"/>
+ <xsl:if test="holder">
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="bibliography.mode"/>
+ </xsl:if>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="year" mode="bibliography.mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="corpauthor" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:call-template name="person.name"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliography.mode">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliography.mode">
+ <fo:block>
+ <xsl:apply-templates select="."/> <!-- use normal mode -->
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="seriesinfo" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliography.mode">
+ <fo:inline>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="collabname" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="confdates" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="confnum" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliography.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliomixed.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliomixed.mode">
+ <xsl:if test="preceding-sibling::*">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliomixed.mode">
+ <fo:block start-indent="1in">
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="para" mode="bibliomixed.mode">
+ <fo:block>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="address" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:call-template name="person.name"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bibliomset" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliomset/title|bibliomset/citetitle"
+ mode="bibliomixed.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliomixed.mode">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="collab" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="copyright" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliomixed.mode">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliomixed.mode">
+ <fo:inline>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl
new file mode 100644
index 0000000..ce19b41
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl
@@ -0,0 +1,654 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: block.xsl 8597 2010-03-20 04:56:04Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- What should we do about styling blockinfo? -->
+
+<xsl:template match="blockinfo|info">
+ <!-- suppress -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="block.object">
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+ <fo:block>
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="para">
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+ <fo:block xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+ <fo:block xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+ <fo:block xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- Only use title from info -->
+<xsl:template match="formalpara/info">
+ <xsl:apply-templates select="title"/>
+</xsl:template>
+
+<xsl:template match="formalpara/title|formalpara/info/title">
+ <xsl:variable name="titleStr">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:variable name="lastChar">
+ <xsl:if test="$titleStr != ''">
+ <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <fo:inline font-weight="bold"
+ keep-with-next.within-line="always"
+ padding-end="1em">
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != ''
+ and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="formalpara/para">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="blockquote">
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+ <fo:block xsl:use-attribute-sets="blockquote.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <fo:block>
+ <xsl:if test="title|info/title">
+ <fo:block xsl:use-attribute-sets="formal.title.properties">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </fo:block>
+ </xsl:if>
+ <xsl:apply-templates select="*[local-name(.) != 'title'
+ and local-name(.) != 'attribution']"/>
+ </fo:block>
+ <xsl:if test="attribution">
+ <fo:block text-align="right">
+ <!-- mdash -->
+ <xsl:text>&#x2014;</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </fo:block>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<!-- Use an em dash per Chicago Manual of Style and https://sourceforge.net/tracker/index.php?func=detail&aid=2793878&group_id=21935&atid=373747 -->
+<xsl:template match="epigraph">
+ <fo:block>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="para|simpara|formalpara|literallayout"/>
+ <xsl:if test="attribution">
+ <fo:inline>
+ <xsl:text>&#x2014;</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </fo:inline>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="attribution">
+ <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="floater">
+ <xsl:param name="position" select="'none'"/>
+ <xsl:param name="clear" select="'both'"/>
+ <xsl:param name="width"/>
+ <xsl:param name="content"/>
+ <xsl:param name="start.indent">0pt</xsl:param>
+ <xsl:param name="end.indent">0pt</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="not($fop.extensions = 0)">
+ <!-- fop 0.20.5 does not support floats -->
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$position = 'none'">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$position = 'before'">
+ <fo:float float="before">
+ <xsl:copy-of select="$content"/>
+ </fo:float>
+ </xsl:when>
+ <xsl:when test="$position = 'left' or
+ $position = 'start' or
+ $position = 'right' or
+ $position = 'end' or
+ $position = 'inside' or
+ $position = 'outside'">
+ <xsl:variable name="float">
+ <fo:float float="{$position}"
+ clear="{$clear}">
+ <fo:block-container
+ start-indent="{$start.indent}"
+ end-indent="{$end.indent}">
+ <xsl:if test="$width != ''">
+ <xsl:attribute name="inline-progression-dimension">
+ <xsl:value-of select="$width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </fo:block-container>
+ </fo:float>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$axf.extensions != 0 and self::sidebar">
+ <fo:block xsl:use-attribute-sets="normal.para.spacing"
+ space-after="0pt"
+ space-after.precedence="force"
+ start-indent="0pt" end-indent="0pt">
+ <xsl:copy-of select="$float"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$axf.extensions != 0 and
+ ($position = 'left' or $position = 'start')">
+ <fo:float float="{$position}"
+ clear="{$clear}">
+ <fo:block-container
+ inline-progression-dimension=".001mm"
+ end-indent="{$start.indent} + {$width} + {$end.indent}">
+ <xsl:attribute name="start-indent">
+ <xsl:choose>
+ <xsl:when test="ancestor::para">
+ <!-- Special case for handling inline floats
+ in Antenna House-->
+ <xsl:value-of select="concat('-', $body.start.indent)"/>
+ </xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <fo:block start-indent="{$start.indent}"
+ end-indent="-{$start.indent} - {$width}">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </fo:block-container>
+ </fo:float>
+
+ </xsl:when>
+ <xsl:when test="$axf.extensions != 0 and
+ ($position = 'right' or $position = 'end')">
+ <!-- Special case for handling inline floats in Antenna House-->
+ <fo:float float="{$position}"
+ clear="{$clear}">
+ <fo:block-container
+ inline-progression-dimension=".001mm"
+ end-indent="-{$body.end.indent}"
+ start-indent="{$start.indent} + {$width} + {$end.indent}">
+ <fo:block end-indent="{$end.indent}"
+ start-indent="-{$end.indent} - {$width}">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </fo:block-container>
+ </fo:float>
+
+ </xsl:when>
+ <xsl:when test="$xep.extensions != 0 and self::sidebar">
+ <!-- float needs some space above to line up with following para -->
+ <fo:block xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:copy-of select="$float"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$xep.extensions != 0">
+ <xsl:copy-of select="$float"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$float"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sidebar" name="sidebar">
+ <!-- Also does margin notes -->
+ <xsl:variable name="pi-type">
+ <xsl:call-template name="pi.dbfo_float-type"/>
+ </xsl:variable>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$pi-type = 'margin.note'">
+ <xsl:call-template name="margin.note"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="content">
+ <fo:block xsl:use-attribute-sets="sidebar.properties"
+ id="{$id}">
+ <xsl:call-template name="sidebar.titlepage"/>
+ <xsl:apply-templates select="node()[not(self::title) and
+ not(self::info) and
+ not(self::sidebarinfo)]"/>
+ </fo:block>
+ </xsl:variable>
+
+ <xsl:variable name="pi-width">
+ <xsl:call-template name="pi.dbfo_sidebar-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="position">
+ <xsl:choose>
+ <xsl:when test="$pi-type != ''">
+ <xsl:value-of select="$pi-type"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$sidebar.float.type"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="floater">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="position" select="$position"/>
+ <xsl:with-param name="width">
+ <xsl:choose>
+ <xsl:when test="$pi-width != ''">
+ <xsl:value-of select="$pi-width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$sidebar.float.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="start.indent">
+ <xsl:choose>
+ <xsl:when test="$position = 'start' or
+ $position = 'left'">0pt</xsl:when>
+ <xsl:when test="$position = 'end' or
+ $position = 'right'">0.5em</xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="end.indent">
+ <xsl:choose>
+ <xsl:when test="$position = 'start' or
+ $position = 'left'">0.5em</xsl:when>
+ <xsl:when test="$position = 'end' or
+ $position = 'right'">0pt</xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template match="sidebar/title|sidebarinfo|sidebar/info"/>
+
+<xsl:template match="sidebar/title|sidebarinfo/title|sidebar/info/title"
+ mode="titlepage.mode" priority="1">
+ <fo:block xsl:use-attribute-sets="sidebar.title.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="margin.note">
+ <xsl:param name="content">
+ <fo:block xsl:use-attribute-sets="margin.note.properties">
+ <xsl:if test="./title">
+ <fo:block xsl:use-attribute-sets="margin.note.title.properties">
+ <xsl:apply-templates select="./title" mode="margin.note.title.mode"/>
+ </fo:block>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:param>
+
+ <xsl:variable name="pi-width">
+ <xsl:call-template name="pi.dbfo_sidebar-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="position" select="$margin.note.float.type"/>
+
+ <xsl:call-template name="floater">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="position" select="$position"/>
+ <xsl:with-param name="width" >
+ <xsl:choose>
+ <xsl:when test="$pi-width != ''">
+ <xsl:value-of select="$pi-width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$margin.note.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="start.indent">
+ <xsl:choose>
+ <xsl:when test="$position = 'start' or
+ $position = 'left'">0pt</xsl:when>
+ <xsl:when test="$position = 'end' or
+ $position = 'right'">0.5em</xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="end.indent">
+ <xsl:choose>
+ <xsl:when test="$position = 'start' or
+ $position = 'left'">0.5em</xsl:when>
+ <xsl:when test="$position = 'end' or
+ $position = 'right'">0pt</xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sidebar/title" mode="margin.note.title.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="abstract">
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+ <fo:block xsl:use-attribute-sets="abstract.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="abstract/title|abstract/info/title">
+ <fo:block xsl:use-attribute-sets="abstract.title.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="msgset">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="simplemsgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msg">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgmain">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgsub">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgrel">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgtext">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msginfo">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msglevel">
+ <fo:block>
+ <fo:inline font-weight="bold"
+ keep-with-next.within-line="always">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="msgorig">
+ <fo:block>
+ <fo:inline font-weight="bold"
+ keep-with-next.within-line="always">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="msgaud">
+ <fo:block>
+ <fo:inline font-weight="bold"
+ keep-with-next.within-line="always">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="msgexplan">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgexplan/title">
+ <fo:block font-weight="bold"
+ keep-with-next.within-column="always"
+ hyphenate="false">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- For better or worse, revhistory is allowed in content... -->
+
+<xsl:template match="revhistory">
+ <fo:table table-layout="fixed" xsl:use-attribute-sets="revhistory.table.properties">
+ <xsl:call-template name="anchor"/>
+ <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>
+ <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>
+ <fo:table-column column-number="3" column-width="proportional-column-width(1)"/>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <fo:table-row>
+ <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block xsl:use-attribute-sets="revhistory.title.properties">
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="title|info/title" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <xsl:apply-templates/>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="revhistory/title">
+ <!-- Handled in titlepage.mode -->
+</xsl:template>
+
+<xsl:template match="revhistory/revision">
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <fo:table-row>
+ <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber[1]"/>
+ </xsl:if>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:apply-templates select="$revdate[1]"/>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <xsl:if test="$revremark">
+ <fo:table-row>
+ <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:apply-templates select="$revremark[1]"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/date">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/author">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revremark">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="ackno|acknowledgements[parent::article]">
+ <fo:block xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="highlights">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl
new file mode 100644
index 0000000..a31f218
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl
@@ -0,0 +1,231 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
+ xmlns:xverb="com.nwalsh.xalan.Verbatim"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ exclude-result-prefixes="sverb xverb lxslt"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: callout.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xverb"
+ functions="insertCallouts"/>
+
+<xsl:template match="programlistingco|screenco">
+ <xsl:variable name="verbatim" select="programlisting|screen"/>
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $callouts.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:apply-templates select="$verbatim">
+ <xsl:with-param name="suppress-numbers" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="rtf-with-callouts">
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON ')">
+ <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache Software Foundation')">
+ <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to do callouts with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$verbatim/@linenumbering = 'numbered'
+ and $linenumbering.extension != '0'">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf-with-callouts"/>
+ <xsl:with-param name="pi.context"
+ select="programlisting|screen"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="calloutlist"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$rtf-with-callouts"/>
+ <xsl:apply-templates select="calloutlist"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="areaspec|areaset|area">
+</xsl:template>
+
+<xsl:template match="areaset" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="area" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="co">
+ <fo:inline>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="coref">
+ <!-- tricky; this relies on the fact that we can process the "co" that's -->
+ <!-- "over there" as if it were "right here" -->
+
+ <xsl:variable name="co" select="key('id', @linkend)"/>
+ <xsl:choose>
+ <xsl:when test="not($co)">
+ <xsl:message>
+ <xsl:text>Error: coref link is broken: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="local-name($co) != 'co'">
+ <xsl:message>
+ <xsl:text>Error: coref doesn't point to a co: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="$co" mode="callout-bug"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="co" mode="callout-bug">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:number count="co"
+ level="any"
+ from="programlisting|screen|literallayout|synopsis"
+ format="1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="callout-bug">
+ <xsl:param name="conum" select='1'/>
+
+ <xsl:choose>
+ <!-- Draw callouts as images -->
+ <xsl:when test="$callout.graphics != '0'
+ and $conum &lt;= $callout.graphics.number.limit">
+ <xsl:variable name="filename"
+ select="concat($callout.graphics.path, $conum,
+ $callout.graphics.extension)"/>
+
+ <fo:external-graphic content-width="{$callout.icon.size}"
+ width="{$callout.icon.size}">
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0
+ or $fop.extensions != 0
+ or $arbortext.extensions != 0">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>url(</xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:external-graphic>
+ </xsl:when>
+
+ <xsl:when test="$callout.unicode != 0
+ and $conum &lt;= $callout.unicode.number.limit">
+ <xsl:variable name="comarkup">
+ <xsl:choose>
+ <xsl:when test="$callout.unicode.start.character = 10102">
+ <xsl:choose>
+ <xsl:when test="$conum = 1">&#10102;</xsl:when>
+ <xsl:when test="$conum = 2">&#10103;</xsl:when>
+ <xsl:when test="$conum = 3">&#10104;</xsl:when>
+ <xsl:when test="$conum = 4">&#10105;</xsl:when>
+ <xsl:when test="$conum = 5">&#10106;</xsl:when>
+ <xsl:when test="$conum = 6">&#10107;</xsl:when>
+ <xsl:when test="$conum = 7">&#10108;</xsl:when>
+ <xsl:when test="$conum = 8">&#10109;</xsl:when>
+ <xsl:when test="$conum = 9">&#10110;</xsl:when>
+ <xsl:when test="$conum = 10">&#10111;</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Don't know how to generate Unicode callouts </xsl:text>
+ <xsl:text>when $callout.unicode.start.character is </xsl:text>
+ <xsl:value-of select="$callout.unicode.start.character"/>
+ </xsl:message>
+ <fo:inline background-color="#404040"
+ color="white"
+ padding-top="0.1em"
+ padding-bottom="0.1em"
+ padding-start="0.2em"
+ padding-end="0.2em"
+ baseline-shift="0.1em"
+ font-family="{$body.fontset}"
+ font-weight="bold"
+ font-size="75%">
+ <xsl:value-of select="$conum"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$callout.unicode.font != ''">
+ <fo:inline font-family="{$callout.unicode.font}">
+ <xsl:copy-of select="$comarkup"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$comarkup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- Most safe: draw a dark gray square with a white number inside -->
+ <xsl:otherwise>
+ <fo:inline background-color="#404040"
+ color="white"
+ padding-top="0.1em"
+ padding-bottom="0.1em"
+ padding-start="0.2em"
+ padding-end="0.2em"
+ baseline-shift="0.1em"
+ font-family="{$body.fontset}"
+ font-weight="bold"
+ font-size="75%">
+ <xsl:value-of select="$conum"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl
new file mode 100644
index 0000000..1466413
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl
@@ -0,0 +1,887 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: component.xsl 8320 2009-03-12 17:43:44Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template name="component.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="pagewide" select="0"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="titleabbrev">
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="2"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$titleabbrev"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:block xsl:use-attribute-sets="component.title.properties">
+ <xsl:if test="$pagewide != 0">
+ <!-- Doesn't work to use 'all' here since not a child of fo:flow -->
+ <xsl:attribute name="span">inherit</xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:outline-level">
+ <xsl:value-of select="count($node/ancestor::*)"/>
+ </xsl:attribute>
+ <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
+ <xsl:attribute name="axf:outline-title">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- Let's handle the case where a component (bibliography, for example)
+ occurs inside a section; will we need parameters for this?
+ Danger Will Robinson: using section.title.level*.properties here
+ runs the risk that someone will set something other than
+ font-size there... -->
+ <xsl:choose>
+ <xsl:when test="$level=2">
+ <fo:block xsl:use-attribute-sets="section.title.level2.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=3">
+ <fo:block xsl:use-attribute-sets="section.title.level3.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=4">
+ <fo:block xsl:use-attribute-sets="section.title.level4.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=5">
+ <fo:block xsl:use-attribute-sets="section.title.level5.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=6">
+ <fo:block xsl:use-attribute-sets="section.title.level6.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- not in a section: do nothing special -->
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="dedication.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="dedication"></xsl:template> <!-- see mode="dedication" -->
+<xsl:template match="dedication/docinfo"></xsl:template>
+<xsl:template match="dedication/title"></xsl:template>
+<xsl:template match="dedication/subtitle"></xsl:template>
+<xsl:template match="dedication/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="acknowledgements" mode="acknowledgements">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="acknowledgements.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="acknowledgements"></xsl:template>
+<xsl:template match="acknowledgements/info"></xsl:template>
+<xsl:template match="acknowledgements/title"></xsl:template>
+<xsl:template match="acknowledgements/titleabbrev"></xsl:template>
+<xsl:template match="acknowledgements/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colophon">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="colophon.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="colophon/title"></xsl:template>
+<xsl:template match="colophon/subtitle"></xsl:template>
+<xsl:template match="colophon/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="preface">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="preface.titlepage"/>
+ </fo:block>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table"
+ select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="preface/docinfo|prefaceinfo"></xsl:template>
+<xsl:template match="preface/info"></xsl:template>
+<xsl:template match="preface/title"></xsl:template>
+<xsl:template match="preface/titleabbrev"></xsl:template>
+<xsl:template match="preface/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="chapter">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="chapter.titlepage"/>
+ </fo:block>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="chapter/docinfo|chapterinfo"></xsl:template>
+<xsl:template match="chapter/info"></xsl:template>
+<xsl:template match="chapter/title"></xsl:template>
+<xsl:template match="chapter/titleabbrev"></xsl:template>
+<xsl:template match="chapter/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="appendix">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="appendix.titlepage"/>
+ </fo:block>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="appendix/docinfo|appendixinfo"></xsl:template>
+<xsl:template match="appendix/info"></xsl:template>
+<xsl:template match="appendix/title"></xsl:template>
+<xsl:template match="appendix/titleabbrev"></xsl:template>
+<xsl:template match="appendix/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="article">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="article.titlepage"/>
+ </fo:block>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="article/artheader"></xsl:template>
+<xsl:template match="article/articleinfo"></xsl:template>
+<xsl:template match="article/info"></xsl:template>
+<xsl:template match="article/title"></xsl:template>
+<xsl:template match="article/subtitle"></xsl:template>
+<xsl:template match="article/titleabbrev"></xsl:template>
+
+<xsl:template match="article/appendix">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="titleabbrev">
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:variable>
+
+ <fo:block id='{$id}'>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:outline-level">
+ <xsl:value-of select="count(ancestor::*)+2"/>
+ </xsl:attribute>
+ <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
+ <xsl:attribute name="axf:outline-title">
+ <xsl:value-of select="normalize-space($titleabbrev)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="{count(ancestor::*)+2}"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$titleabbrev"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:block xsl:use-attribute-sets="article.appendix.title.properties">
+ <fo:marker marker-class-name="section.head.marker">
+ <xsl:choose>
+ <xsl:when test="$titleabbrev = ''">
+ <xsl:value-of select="$title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$titleabbrev"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:marker>
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Utility template to create a page sequence for an element -->
+<xsl:template match="*" mode="page.sequence" name="page.sequence">
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:param name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:param>
+ <xsl:param name="element" select="local-name(.)"/>
+ <xsl:param name="gentext-key" select="local-name(.)"/>
+ <xsl:param name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:param name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ <xsl:with-param name="element" select="$element"/>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:param name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ <xsl:with-param name="element" select="$element"/>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:param name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ <xsl:with-param name="element" select="$element"/>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:value-of select="$language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:value-of select="$format"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:value-of select="$initial-page-number"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:value-of select="$force-page-count"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <xsl:copy-of select="$content"/>
+
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl
new file mode 100644
index 0000000..975d8c5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl
@@ -0,0 +1,612 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: division.xsl 8320 2009-03-12 17:43:44Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="division.title">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup"/>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="1"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$title"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:block keep-with-next.within-column="always"
+ hyphenate="false">
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:outline-level">
+ <xsl:choose>
+ <xsl:when test="count($node/ancestor::*) > 0">
+ <xsl:value-of select="count($node/ancestor::*)"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
+ <xsl:attribute name="axf:outline-title">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::book or self::set or self::setindex)]"/>
+
+ <xsl:variable name="content" select="book|set|setindex"/>
+
+ <xsl:variable name="titlepage-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'titlepage'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="lot-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'lot'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$preamble">
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$titlepage-master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="set.titlepage"/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:if>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$lot-master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$lot-master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$lot-master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="set.toc"/>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:if>
+
+ <xsl:apply-templates select="$content"/>
+</xsl:template>
+
+<xsl:template match="set/setinfo"></xsl:template>
+<xsl:template match="set/title"></xsl:template>
+<xsl:template match="set/subtitle"></xsl:template>
+<xsl:template match="set/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="title|subtitle|titleabbrev|bookinfo|info"/>
+
+ <xsl:variable name="content"
+ select="node()[not(self::title or self::subtitle
+ or self::titleabbrev
+ or self::info
+ or self::bookinfo)]"/>
+
+ <xsl:variable name="titlepage-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'titlepage'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="front.cover"/>
+
+ <xsl:if test="$preamble">
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ <xsl:with-param name="content">
+ <fo:block id="{$id}">
+ <xsl:call-template name="book.titlepage"/>
+ </fo:block>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates select="dedication" mode="dedication"/>
+ <xsl:apply-templates select="acknowledgements" mode="acknowledgements"/>
+
+ <xsl:call-template name="make.book.tocs"/>
+
+ <xsl:apply-templates select="$content"/>
+
+ <xsl:call-template name="back.cover"/>
+
+</xsl:template>
+
+<xsl:template match="book/bookinfo"></xsl:template>
+<xsl:template match="book/info"></xsl:template>
+<xsl:template match="book/title"></xsl:template>
+<xsl:template match="book/subtitle"></xsl:template>
+<xsl:template match="book/titleabbrev"></xsl:template>
+
+<!-- Placeholder templates -->
+<xsl:template name="front.cover"/>
+<xsl:template name="back.cover"/>
+
+<!-- ================================================================= -->
+<xsl:template name="make.book.tocs">
+
+ <xsl:variable name="lot-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'lot'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="gentext-key" select="'TableofContents'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params,'figure') and .//figure">
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="gentext-key" select="'ListofFigures'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params,'table') and .//table">
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="gentext-key" select="'ListofTables'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params,'example') and .//example">
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="gentext-key" select="'ListofExample'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params,'equation') and
+ .//equation[title or info/title]">
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="gentext-key" select="'ListofEquations'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes"
+ select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params,'procedure') and
+ .//procedure[title or info/title]">
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="gentext-key" select="'ListofProcedures'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes"
+ select=".//procedure[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+<!-- ==================================================================== -->
+
+<xsl:template match="part">
+ <xsl:if test="not(partintro)">
+ <xsl:apply-templates select="." mode="part.titlepage.mode"/>
+ <xsl:call-template name="generate.part.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="part" mode="part.titlepage.mode">
+ <!-- done this way to force the context node to be the part -->
+ <xsl:param name="additional.content"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="titlepage-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'titlepage'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$titlepage-master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference"
+ select="$titlepage-master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="part.titlepage"/>
+ </fo:block>
+ <xsl:copy-of select="$additional.content"/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="part/docinfo|partinfo"></xsl:template>
+<xsl:template match="part/info"></xsl:template>
+<xsl:template match="part/title"></xsl:template>
+<xsl:template match="part/subtitle"></xsl:template>
+<xsl:template match="part/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="generate.part.toc">
+ <xsl:param name="part" select="."/>
+
+ <xsl:variable name="lot-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'lot'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="$part"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="nodes" select="reference|
+ preface|
+ chapter|
+ appendix|
+ article|
+ bibliography|
+ glossary|
+ index"/>
+
+ <xsl:if test="count($nodes) &gt; 0 and contains($toc.params, 'toc')">
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$lot-master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$part" mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$lot-master-reference"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="$part" mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$lot-master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc-context" select="$part"/>
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="part/partintro">
+ <xsl:apply-templates select=".." mode="part.titlepage.mode">
+ <xsl:with-param name="additional.content">
+ <xsl:if test="title">
+ <xsl:call-template name="partintro.titlepage"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+
+ <xsl:call-template name="generate.part.toc">
+ <xsl:with-param name="part" select=".."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="partintro/title"></xsl:template>
+<xsl:template match="partintro/subtitle"></xsl:template>
+<xsl:template match="partintro/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book" mode="division.number">
+ <xsl:number from="set" count="book" format="1."/>
+</xsl:template>
+
+<xsl:template match="part" mode="division.number">
+ <xsl:number from="book" count="part" format="I."/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl
new file mode 100644
index 0000000..ee0a1eb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl
@@ -0,0 +1,335 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ exclude-result-prefixes="db ng exsl"
+ version='1.0'>
+
+<!-- It is important to use indent="no" here, otherwise verbatim -->
+<!-- environments get broken by indented tags...at least when the -->
+<!-- callout extension is used...at least with some processors -->
+<xsl:output method="xml" indent="no"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8913 2010-10-01 04:44:57Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="fo.xsl"/>
+<xsl:include href="fo-rtf.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pagesetup.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="spaces.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="../html/chunker.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:include href="fop.xsl"/>
+<xsl:include href="fop1.xsl"/>
+<xsl:include href="passivetex.xsl"/>
+<xsl:include href="xep.xsl"/>
+<xsl:include href="axf.xsl"/>
+<xsl:include href="ptc.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'fo'"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <fo:block color="red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<!-- Update this list if new root elements supported -->
+<xsl:variable name="root.elements" select="' appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex '"/>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:variable name="root.element" select="key('id', $rootid)"/>
+ <xsl:choose>
+ <xsl:when test="count($root.element) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: Document root element ($rootid=</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>) for FO output </xsl:text>
+ <xsl:text>must be one of the following elements:</xsl:text>
+ <xsl:value-of select="$root.elements"/>
+ </xsl:message>
+ </xsl:when>
+ <!-- Otherwise proceed -->
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$root.element"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$root.element"
+ mode="process.root"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Otherwise process the document root element -->
+ <xsl:otherwise>
+ <xsl:variable name="document.element" select="*[1]"/>
+ <xsl:choose>
+ <xsl:when test="not(contains($root.elements,
+ concat(' ', local-name($document.element), ' ')))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: Document root element for FO output </xsl:text>
+ <xsl:text>must be one of the following elements:</xsl:text>
+ <xsl:value-of select="$root.elements"/>
+ </xsl:message>
+ </xsl:when>
+ <!-- Otherwise proceed -->
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/"
+ mode="process.root"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="document.element" select="self::*"/>
+
+ <xsl:call-template name="root.messages"/>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$document.element/title[1]">
+ <xsl:value-of select="$document.element/title[1]"/>
+ </xsl:when>
+ <xsl:otherwise>[could not find document title]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Include all id values in XEP output -->
+ <xsl:if test="$xep.extensions != 0">
+ <xsl:processing-instruction
+ name="xep-pdf-drop-unused-destinations">false</xsl:processing-instruction>
+ </xsl:if>
+
+ <fo:root xsl:use-attribute-sets="root.properties">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*[1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:if test="$xep.extensions != 0">
+ <xsl:call-template name="xep-pis"/>
+ <xsl:call-template name="xep-document-information"/>
+ </xsl:if>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-document-information"/>
+ </xsl:if>
+
+ <xsl:call-template name="setup.pagemasters"/>
+
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:apply-templates select="$document.element" mode="fop.outline"/>
+ </xsl:if>
+
+ <xsl:if test="$fop1.extensions != 0">
+ <xsl:call-template name="fop1-document-information"/>
+ <xsl:variable name="bookmarks">
+ <xsl:apply-templates select="$document.element"
+ mode="fop1.outline"/>
+ </xsl:variable>
+ <xsl:if test="string($bookmarks) != ''">
+ <fo:bookmark-tree>
+ <xsl:copy-of select="$bookmarks"/>
+ </fo:bookmark-tree>
+ </xsl:if>
+ <xsl:apply-templates select="$document.element"
+ mode="fop1.foxdest"/>
+ </xsl:if>
+
+ <xsl:if test="$xep.extensions != 0">
+ <xsl:variable name="bookmarks">
+ <xsl:apply-templates select="$document.element" mode="xep.outline"/>
+ </xsl:variable>
+ <xsl:if test="string($bookmarks) != ''">
+ <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions">
+ <xsl:copy-of select="$bookmarks"/>
+ </rx:outline>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="$arbortext.extensions != 0 and $ati.xsl11.bookmarks != 0">
+ <xsl:variable name="bookmarks">
+ <xsl:apply-templates select="$document.element"
+ mode="ati.xsl11.bookmarks"/>
+ </xsl:variable>
+ <xsl:if test="string($bookmarks) != ''">
+ <fo:bookmark-tree>
+ <xsl:copy-of select="$bookmarks"/>
+ </fo:bookmark-tree>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:apply-templates select="$document.element"/>
+ </fo:root>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+ <xsl:message>
+ <xsl:text>Making </xsl:text>
+ <xsl:value-of select="$page.orientation"/>
+ <xsl:text> pages on </xsl:text>
+ <xsl:value-of select="$paper.type"/>
+ <xsl:text> paper (</xsl:text>
+ <xsl:value-of select="$page.width"/>
+ <xsl:text>x</xsl:text>
+ <xsl:value-of select="$page.height"/>
+ <xsl:text>)</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl
new file mode 100644
index 0000000..09dcb11
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl
@@ -0,0 +1,325 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: ebnf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="">
+<referenceinfo>
+<releaseinfo role="meta">
+$Id: ebnf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+</releaseinfo>
+<author><surname>Walsh</surname>
+<firstname>Norman</firstname></author>
+<copyright><year>1999</year><year>2000</year><year>2001</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</referenceinfo>
+<title>HTML EBNF Reference</title>
+
+<partintro>
+<section><title>Introduction</title>
+
+<para>This is technical reference documentation for the DocBook XSL
+Stylesheets; it documents (some of) the parameters, templates, and
+other elements of the stylesheets.</para>
+
+<para>This reference describes the templates and parameters relevant
+to formatting EBNF markup.</para>
+
+<para>This is not intended to be <quote>user</quote> documentation.
+It is provided for developers writing customization layers for the
+stylesheets, and for anyone who's interested in <quote>how it
+works</quote>.</para>
+
+<para>Although I am trying to be thorough, this documentation is known
+to be incomplete. Don't forget to read the source, too :-)</para>
+</section>
+</partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productionset">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="title">
+ <fo:block id="{$id}" xsl:use-attribute-sets="formal.object.properties">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="'before'"/>
+ </xsl:call-template>
+
+ <fo:table table-layout="fixed" width="100%">
+ <fo:table-column column-number="1" column-width="3%"/>
+ <fo:table-column column-number="2" column-width="15%"/>
+ <fo:table-column column-number="3" column-width="5%"/>
+ <fo:table-column column-number="4" column-width="52%"/>
+ <fo:table-column column-number="5" column-width="25%"/>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <xsl:apply-templates select="production|productionrecap"/>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:table id="{$id}" table-layout="fixed" width="100%">
+ <fo:table-column column-number="1" column-width="3%"/>
+ <fo:table-column column-number="2" column-width="15%"/>
+ <fo:table-column column-number="3" column-width="5%"/>
+ <fo:table-column column-number="4" column-width="52%"/>
+ <fo:table-column column-number="5" column-width="25%"/>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <xsl:apply-templates select="production|productionrecap"/>
+ </fo:table-body>
+ </fo:table>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="productionset/title">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="production">
+ <xsl:param name="recap" select="false()"/>
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <fo:table-row>
+ <fo:table-cell>
+ <fo:block text-align="start">
+ <xsl:text>[</xsl:text>
+ <xsl:number count="production" level="any"/>
+ <xsl:text>]</xsl:text>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block text-align="end">
+ <xsl:choose>
+ <xsl:when test="$recap">
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:apply-templates select="lhs"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:wrapper id="{$id}">
+ <xsl:apply-templates select="lhs"/>
+ </fo:wrapper>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block text-align="center">
+ <xsl:copy-of select="$ebnf.assignment"/>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block>
+ <xsl:apply-templates select="rhs"/>
+ <xsl:copy-of select="$ebnf.statement.terminator"/>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell border-start-width="3pt">
+ <fo:block text-align="start">
+ <xsl:choose>
+ <xsl:when test="rhs/lineannotation|constraint">
+ <xsl:apply-templates select="rhs/lineannotation" mode="rhslo"/>
+ <xsl:apply-templates select="constraint"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+</xsl:template>
+
+<xsl:template match="productionrecap">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no ID for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="count($targets)>1">
+ <xsl:message>
+ <xsl:text>Warning: multiple "IDs" for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target">
+ <xsl:with-param name="recap" select="true()"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="lhs">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="rhs">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="nonterminal">
+ <xsl:variable name="linkend">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="@def"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="element-list">production</xsl:with-param>
+ </xsl:call-template>
+
+ <!-- If you don't provide content, you can't point outside this doc. -->
+ <xsl:choose>
+ <xsl:when test="*|text()"><!--nop--></xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$linkend = ''">
+ <xsl:message>
+ <xsl:text>Non-terminals with no content must point to </xsl:text>
+ <xsl:text>production elements in the current document.</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>Invalid xpointer for empty nt: </xsl:text>
+ <xsl:value-of select="@def"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@def"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:basic-link internal-destination="{$href}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:choose>
+ <xsl:when test="*|text()">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target/lhs"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:basic-link>
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation" mode="rhslo">
+ <xsl:text>/*&#160;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#160;*/</xsl:text>
+</xsl:template>
+
+<xsl:template match="constraint">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ <xsl:with-param name="element-list">constraintdef</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:variable name="href">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::constraint">
+ <fo:inline linefeed-treatment="preserve">&#xA;</fo:inline>
+ </xsl:if>
+ <xsl:text>[&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:if test="$target/@role">
+ <xsl:value-of select="$target/@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <fo:basic-link internal-destination="{$href}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target" mode="title.markup"/>
+ </fo:basic-link>
+ <xsl:text>&#160;]</xsl:text>
+</xsl:template>
+
+<xsl:template match="constraintdef">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <fo:block id="{$id}">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="constraintdef/title">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl
new file mode 100644
index 0000000..4aa0f32
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl
@@ -0,0 +1,154 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:set="http://exslt.org/sets"
+ exclude-result-prefixes="exsl set"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: fo-rtf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- This module contains templates that match against FO nodes. It is used
+ to post-process result tree fragments for some sorts of cleanup.
+ These templates can only ever be fired by a processor that supports
+ exslt:node-set(). -->
+
+<!-- ==================================================================== -->
+
+<!-- insert.fo.fnum mode templates insert a particular RTF at the beginning
+ of the first paragraph in the primary RTF. In fact, they are inserting
+ a footnote-number, so we tinker a few other things too, like spacing and
+ font-sizes. -->
+
+<xsl:template match="/" mode="insert.fo.fnum">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.fo.fnum">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.fo.fnum">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.fo.fnum">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="fo:block" mode="insert.fo.fnum">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="starts-with(name(.), 'space-before')"/>
+ <xsl:when test="starts-with(name(.), 'space-after')"/>
+ <xsl:when test="starts-with(name(.), 'font-size')"/>
+ <xsl:otherwise>
+ <xsl:copy-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:if test="not(preceding::fo:block)">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+ <xsl:apply-templates mode="insert.fo.fnum">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.fnum">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- insert.fo.block mode templates insert a particular RTF at the beginning
+ of the first paragraph in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.fo.block">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.fo.block">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.fo.block">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.fo.block">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="fo:block" mode="insert.fo.block">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="not(preceding::fo:block)">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+ <xsl:apply-templates mode="insert.fo.block">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.block">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- insert.fo.text mode templates insert a particular RTF at the beginning
+ of the first text-node in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.fo.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.fo.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.fo.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.fo.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.text">
+ <xsl:param name="mark" select="'?'"/>
+
+ <xsl:if test="not(preceding::text())">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="insert.fo.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl
new file mode 100644
index 0000000..854098f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl
@@ -0,0 +1,117 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: fo.xsl 8287 2009-03-06 23:53:33Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These variables set the margin-left or -right attribute value for FO output based on
+ the writing-mode specified in the gentext file for the document's lang. -->
+
+<xsl:param name="direction.align.start">
+ <xsl:choose>
+ <!-- FOP does not support writing-mode="rl-tb" -->
+ <xsl:when test="$fop.extensions != 0">left</xsl:when>
+ <xsl:when test="$fop1.extensions != 0">left</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'lr')">left</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">right</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'tb')">top</xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:param name="direction.align.end">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">right</xsl:when>
+ <xsl:when test="$fop1.extensions != 0">right</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'lr')">right</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">left</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'tb')">bottom</xsl:when>
+ <xsl:otherwise>right</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:param name="direction.mode">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0 and
+ starts-with($writing.mode, 'rl')">
+ <xsl:message>WARNING: FOP does not support right-to-left writing-mode</xsl:message>
+ <xsl:text>lr-tb</xsl:text>
+ </xsl:when>
+ <xsl:when test="$fop1.extensions != 0 and
+ starts-with($writing.mode, 'rl')">
+ <xsl:message>WARNING: FOP does not support right-to-left writing-mode</xsl:message>
+ <xsl:text>lr-tb</xsl:text>
+ </xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'lr')">lr-tb</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">rl-tb</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'tb')">tb-rl</xsl:when>
+ <xsl:otherwise>lr-tb</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+
+<xsl:template name="anchor">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="conditional" select="1"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id">
+ <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:variable name="symbol">
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">o</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#x00A9;</xsl:when>
+ <xsl:when test="$dingbat='trademark'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='trade'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='registered'">&#x00AE;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">"</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">"</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">'</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">'</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">&#x2014;</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">-</xsl:when>
+ <xsl:otherwise>o</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$dingbat.font.family = ''">
+ <xsl:copy-of select="$symbol"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-family="{$dingbat.font.family}">
+ <xsl:copy-of select="$symbol"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl
new file mode 100644
index 0000000..cc0242d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl
@@ -0,0 +1,220 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: footnote.xsl 8359 2009-03-20 18:42:06Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template name="format.footnote.mark">
+ <xsl:param name="mark" select="'?'"/>
+ <fo:inline xsl:use-attribute-sets="footnote.mark.properties">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">
+ <xsl:attribute name="vertical-align">super</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="baseline-shift">super</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$mark"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="footnote">
+ <xsl:choose>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <xsl:call-template name="format.footnote.mark">
+ <xsl:with-param name="mark">
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:footnote>
+ <fo:inline>
+ <xsl:call-template name="format.footnote.mark">
+ <xsl:with-param name="mark">
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:inline>
+ <fo:footnote-body xsl:use-attribute-sets="footnote.properties">
+ <xsl:apply-templates/>
+ </fo:footnote-body>
+ </fo:footnote>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="footnoteref">
+ <xsl:variable name="footnote" select="key('id',@linkend)"/>
+
+ <xsl:if test="not(local-name($footnote) = 'footnote')">
+ <xsl:message terminate="yes">
+ERROR: A footnoteref element has a linkend that points to an element that is not a footnote.
+Typically this happens when an id attribute is accidentally applied to the child of a footnote element.
+target element: <xsl:value-of select="local-name($footnote)"/>
+linkend/id: <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:call-template name="format.footnote.mark">
+ <xsl:with-param name="mark">
+ <xsl:apply-templates select="$footnote" mode="footnote.number"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="footnote" mode="footnote.number">
+ <xsl:choose>
+ <xsl:when test="string-length(@label) != 0">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <xsl:variable name="tfnum">
+ <xsl:number level="any" from="table|informaltable" format="1"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($table.footnote.number.symbols) &gt;= $tfnum">
+ <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="table|informaltable"
+ format="{$table.footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="fnum">
+ <!-- * Determine the footnote number to display for this footnote, -->
+ <!-- * by counting all foonotes, ulinks, and any elements that have -->
+ <!-- * an xlink:href attribute that meets the following criteria: -->
+ <!-- * -->
+ <!-- * - the content of the element is not a URI that is the same -->
+ <!-- * URI as the value of the href attribute -->
+ <!-- * - the href attribute is not an internal ID reference (does -->
+ <!-- * not start with a hash sign) -->
+ <!-- * - the href is not part of an olink reference (the element -->
+ <!-- * - does not have an xlink:role attribute that indicates it is -->
+ <!-- * an olink, and the hrf does not contain a hash sign) -->
+ <!-- * - the element either has no xlink:type attribute or has -->
+ <!-- * an xlink:type attribute whose value is 'simple' -->
+ <!-- * -->
+ <!-- * Note that hyperlinks are counted only if both the value of -->
+ <!-- * ulink.footnotes is non-zero and the value of ulink.show is -->
+ <!-- * non-zero -->
+ <!-- FIXME: list in @from is probably not complete -->
+ <xsl:number level="any"
+ from="chapter|appendix|preface|article|refentry|bibliography"
+ count="footnote[not(@label)][not(ancestor::table) and not(ancestor::informaltable)]
+ |ulink[$ulink.footnotes != 0][node()][@url != .][not(ancestor::footnote)][$ulink.show != 0]
+ |*[node()][@xlink:href][not(@xlink:href = .)][not(starts-with(@xlink:href,'#'))]
+ [not(contains(@xlink:href,'#') and @xlink:role = $xolink.role)]
+ [not(@xlink:type) or @xlink:type='simple']
+ [not(ancestor::footnote)][$ulink.footnotes != 0][$ulink.show != 0]
+ "
+ format="1"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($footnote.number.symbols) &gt;= $fnum">
+ <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$fnum" format="{$footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="footnote.body.number">
+ <xsl:variable name="footnote.mark">
+ <xsl:call-template name="format.footnote.mark">
+ <xsl:with-param name="mark">
+ <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="fo">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+
+ <xsl:variable name="fo-nodes" select="exsl:node-set($fo)"/>
+
+ <xsl:choose>
+ <xsl:when test="$fo-nodes//fo:block">
+ <xsl:apply-templates select="$fo-nodes" mode="insert.fo.fnum">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$fo-nodes" mode="insert.fo.text">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="footnote/para[1]
+ |footnote/simpara[1]
+ |footnote/formalpara[1]"
+ priority="2">
+ <!-- this only works if the first thing in a footnote is a para, -->
+ <!-- which is ok, because it usually is. -->
+ <fo:block>
+ <xsl:call-template name="format.footnote.mark">
+ <xsl:with-param name="mark">
+ <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="footnote" mode="table.footnote.mode">
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'para' or local-name(*[1]) = 'simpara'">
+ <fo:block xsl:use-attribute-sets="table.footnote.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+
+ <xsl:when test="$exsl.node.set.available != 0">
+ <fo:block xsl:use-attribute-sets="table.footnote.properties">
+ <xsl:apply-templates select="*[1]" mode="footnote.body.number"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </fo:block>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: footnote number may not be generated </xsl:text>
+ <xsl:text>correctly; </xsl:text>
+ <xsl:value-of select="local-name(*[1])"/>
+ <xsl:text> unexpected as first child of footnote.</xsl:text>
+ </xsl:message>
+ <fo:block xsl:use-attribute-sets="table.footnote.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl
new file mode 100644
index 0000000..c82a48d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl
@@ -0,0 +1,93 @@
+<?xml version='1.0' encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:fox="http://xml.apache.org/fop/extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: fop.xsl 7531 2007-10-17 18:06:49Z dcramer $
+ ********************************************************************
+ (c) Stephane Bline Peregrine Systems 2001
+ Driver file to allow pdf bookmarking (based on fop implementation).
+ ******************************************************************** -->
+<!--
+In PDF bookmarks can't be used characters with code>255. This version of file
+translates characters with code>255 back to ASCII.
+
+ Pavel Zampach (zampach@volny.cz)
+-->
+
+<xsl:variable name="a-dia" select=
+"'&#257;&#259;&#261;&#263;&#265;&#267;&#269;&#271;&#273;&#275;&#277;&#279;&#281;&#283;&#339;&#285;&#287;&#289;&#291;&#293;&#295;&#297;&#299;&#301;&#303;&#305;&#309;&#311;&#314;&#316;&#318;&#320;&#322;&#324;&#326;&#328;&#331;&#333;&#335;&#337;&#341;&#343;&#345;&#347;&#349;&#351;&#353;&#355;&#357;&#359;&#361;&#363;&#365;&#367;&#369;&#371;&#373;&#375;&#378;&#380;&#382;&#256;&#258;&#260;&#262;&#264;&#266;&#268;&#270;&#272;&#274;&#276;&#278;&#280;&#282;&#338;&#284;&#286;&#288;&#290;&#292;&#294;&#296;&#298;&#300;&#302;&#304;&#308;&#310;&#313;&#315;&#317;&#319;&#321;&#323;&#325;&#327;&#330;&#332;&#334;&#336;&#340;&#342;&#344;&#346;&#348;&#350;&#352;&#354;&#356;&#358;&#360;&#362;&#364;&#366;&#368;&#370;&#372;&#374;&#376;&#377;&#379;&#381;'"/>
+<xsl:variable name="a-asc" select=
+"'aaaccccddeeeeeegggghhiiiiijklllllnnnnooorrrsssstttuuuuuuwyzzzAAACCCCDDEEEEEEGGGGHHIIIIIJKLLLLLNNNNOOORRRSSSSTTTUUUUUUWYYZZZ'"/>
+
+<xsl:template match="*" mode="fop.outline">
+ <xsl:variable name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:variable>
+ <xsl:if test="$id != ''">
+ <fox:destination internal-destination="{$id}"/>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="fop.outline"/>
+</xsl:template>
+
+<xsl:template match="set|book|part|reference|preface|chapter|appendix|article
+ |glossary|bibliography|index|setindex
+ |refentry
+ |sect1|sect2|sect3|sect4|sect5|section"
+ mode="fop.outline">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="bookmark-label">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <!-- Put the root element bookmark at the same level as its children -->
+ <!-- If the object is a set or book, generate a bookmark for the toc -->
+
+ <xsl:choose>
+ <xsl:when test="self::index and $generate.index = 0"/>
+ <xsl:when test="parent::*">
+ <fox:outline internal-destination="{$id}">
+ <fox:label>
+ <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/>
+ </fox:label>
+ <xsl:apply-templates select="*" mode="fop.outline"/>
+ </fox:outline>
+ </xsl:when>
+ <xsl:otherwise>
+ <fox:outline internal-destination="{$id}">
+ <fox:label>
+ <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/>
+ </fox:label>
+ </fox:outline>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and (book|part|reference|preface|chapter|appendix|article
+ |glossary|bibliography|index|setindex
+ |refentry
+ |sect1|sect2|sect3|sect4|sect5|section)">
+ <fox:outline internal-destination="toc...{$id}">
+ <fox:label>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </fox:label>
+ </fox:outline>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="fop.outline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <fox:destination internal-destination="{$id}"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl
new file mode 100644
index 0000000..61cb89e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl
@@ -0,0 +1,223 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: fop1.xsl 8913 2010-10-01 04:44:57Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:variable name="bookmarks.state">
+ <xsl:choose>
+ <xsl:when test="$bookmarks.collapse != 0">hide</xsl:when>
+ <xsl:otherwise>show</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:template match="*" mode="fop1.outline">
+ <xsl:apply-templates select="*" mode="fop1.outline"/>
+</xsl:template>
+
+<xsl:template match="set|book|part|reference|
+ preface|chapter|appendix|article
+ |glossary|bibliography|index|setindex
+ |refentry
+ |sect1|sect2|sect3|sect4|sect5|section"
+ mode="fop1.outline">
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="bookmark-label">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <!-- Put the root element bookmark at the same level as its children -->
+ <!-- If the object is a set or book, generate a bookmark for the toc -->
+
+ <xsl:choose>
+ <xsl:when test="self::index and $generate.index = 0"/>
+ <xsl:when test="parent::*">
+ <fo:bookmark internal-destination="{$id}">
+ <xsl:attribute name="starting-state">
+ <xsl:value-of select="$bookmarks.state"/>
+ </xsl:attribute>
+ <fo:bookmark-title>
+ <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/>
+ </fo:bookmark-title>
+ <xsl:apply-templates select="*" mode="fop1.outline"/>
+ </fo:bookmark>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:bookmark internal-destination="{$id}">
+ <xsl:attribute name="starting-state">
+ <xsl:value-of select="$bookmarks.state"/>
+ </xsl:attribute>
+ <fo:bookmark-title>
+ <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/>
+ </fo:bookmark-title>
+ </fo:bookmark>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and (book|part|reference|preface|chapter|appendix|article
+ |glossary|bibliography|index|setindex
+ |refentry
+ |sect1|sect2|sect3|sect4|sect5|section)">
+ <fo:bookmark internal-destination="toc...{$id}">
+ <fo:bookmark-title>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </fo:bookmark-title>
+ </fo:bookmark>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="fop1.outline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+<!--
+ <fo:bookmark internal-destination="{$id}"/>
+-->
+</xsl:template>
+
+<xsl:template match="*" mode="fop1.foxdest">
+ <xsl:apply-templates select="*" mode="fop1.foxdest"/>
+</xsl:template>
+
+<xsl:template match="set|book|part|reference|
+ preface|chapter|appendix|article
+ |glossary|bibliography|index|setindex
+ |refentry
+ |sect1|sect2|sect3|sect4|sect5|section"
+ mode="fop1.foxdest">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="bookmark-label">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+ <!--xsl:if test="$id != ''">
+ <fox:destination internal-destination="{$id}"/>
+ </xsl:if-->
+
+ <!-- Put the root element bookmark at the same level as its children -->
+ <!-- If the object is a set or book, generate a bookmark for the toc -->
+
+ <xsl:choose>
+ <xsl:when test="self::index and $generate.index = 0"/>
+ <xsl:when test="parent::*">
+ <fox:destination internal-destination="{$id}"/>
+ <xsl:apply-templates select="*" mode="fop1.foxdest"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fox:destination internal-destination="{$id}"/>
+ <xsl:apply-templates select="*" mode="fop1.foxdest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<!-- Metadata support ("Document Properties" in Adobe Reader) -->
+<xsl:template name="fop1-document-information">
+ <xsl:variable name="authors" select="(//author|//editor|//corpauthor|//authorgroup)[1]"/>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="/*[1]" mode="label.markup"/>
+ <xsl:apply-templates select="/*[1]" mode="title.markup"/>
+ <xsl:variable name="subtitle">
+ <xsl:apply-templates select="/*[1]" mode="subtitle.markup"/>
+ </xsl:variable>
+ <xsl:if test="$subtitle !=''">
+ <xsl:text> - </xsl:text>
+ <xsl:value-of select="$subtitle"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <fo:declarations>
+ <x:xmpmeta xmlns:x="adobe:ns:meta/">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <!-- Dublin Core properties go here -->
+
+ <!-- Title -->
+ <dc:title><xsl:value-of select="normalize-space($title)"/></dc:title>
+
+ <!-- Author -->
+ <xsl:if test="$authors">
+ <xsl:variable name="author">
+ <xsl:choose>
+ <xsl:when test="$authors[self::authorgroup]">
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list"
+ select="$authors/*[self::author|self::corpauthor|
+ self::othercredit|self::editor]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$authors[self::corpauthor]">
+ <xsl:value-of select="$authors"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$authors"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <dc:creator><xsl:value-of select="normalize-space($author)"/></dc:creator>
+ </xsl:if>
+
+ <!-- Subject -->
+ <xsl:if test="//subjectterm">
+ <dc:description>
+ <xsl:for-each select="//subjectterm">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </dc:description>
+ </xsl:if>
+ </rdf:Description>
+
+ <rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <!-- PDF properties go here -->
+
+ <!-- Keywords -->
+ <xsl:if test="//keyword">
+ <pdf:Keywords>
+ <xsl:for-each select="//keyword">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </pdf:Keywords>
+ </xsl:if>
+ </rdf:Description>
+
+ <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
+ <!-- XMP properties go here -->
+
+ <!-- Creator Tool -->
+ <xmp:CreatorTool>DocBook XSL Stylesheets with Apache FOP</xmp:CreatorTool>
+ </rdf:Description>
+
+ </rdf:RDF>
+ </x:xmpmeta>
+ </fo:declarations>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl
new file mode 100644
index 0000000..bb40aa9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl
@@ -0,0 +1,642 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: formal.xsl 8544 2009-12-02 06:06:53Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- formal.object creates a basic block containing the
+ result of processing the object, including its title
+ and any keep-together properties.
+ The template calling formal.object may wrap these results in a
+ float or pgwide block. -->
+
+<xsl:template name="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="content">
+ <xsl:if test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:if test="$placement != 'before'">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- tables have their own templates and
+ are not handled by formal.object -->
+ <xsl:when test="self::figure">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="figure.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="self::example">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="example.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="self::equation">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="equation.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="self::procedure">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="procedure.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="formal.object.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="placement" select="'before'"/>
+
+ <fo:block xsl:use-attribute-sets="formal.title.properties">
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:attribute
+ name="keep-with-next.within-column">always</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute
+ name="keep-with-previous.within-column">always</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$object" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="informal.object">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <!-- Some don't have a pgwide attribute, so may use a PI -->
+ <xsl:variable name="pgwide.pi">
+ <xsl:call-template name="pi.dbfo_pgwide"/>
+ </xsl:variable>
+
+ <xsl:variable name="pgwide">
+ <xsl:choose>
+ <xsl:when test="@pgwide">
+ <xsl:value-of select="@pgwide"/>
+ </xsl:when>
+ <xsl:when test="$pgwide.pi">
+ <xsl:value-of select="$pgwide.pi"/>
+ </xsl:when>
+ <!-- child element may set pgwide -->
+ <xsl:when test="*[@pgwide]">
+ <xsl:value-of select="*[@pgwide][1]/@pgwide"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- informaltables have their own templates and
+ are not handled by formal.object -->
+ <xsl:when test="local-name(.) = 'equation'">
+ <xsl:choose>
+ <xsl:when test="$pgwide = '1'">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="pgwide.properties
+ equation.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="equation.without.title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="equation.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="equation.without.title"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'procedure'">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="procedure.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'informalfigure'">
+ <xsl:choose>
+ <xsl:when test="$pgwide = '1'">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="pgwide.properties
+ informalfigure.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="informalfigure.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'informalexample'">
+ <xsl:choose>
+ <xsl:when test="$pgwide = '1'">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="pgwide.properties
+ informalexample.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="informalexample.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'informalequation'">
+ <xsl:choose>
+ <xsl:when test="$pgwide = '1'">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="pgwide.properties
+ informalequation.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="informalequation.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="informal.object.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="equation.without.title">
+ <!-- Lay out equation and number next to equation using a table -->
+ <fo:table table-layout="fixed" width="100%">
+ <fo:table-column column-width="proportional-column-width(15)"/>
+ <fo:table-column column-width="proportional-column-width(1)"/>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <fo:table-row>
+ <fo:table-cell padding-end="6pt">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="equation.number.properties">
+ <fo:block>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:text>)</xsl:text>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template name="semiformal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:choose>
+ <xsl:when test="title or info/title">
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="informal.object"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="figure">
+ <xsl:choose>
+ <xsl:when test="@pgwide = '1'">
+ <fo:block xsl:use-attribute-sets="pgwide.properties">
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="position" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$figure"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$figure"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="example">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Example doesn't have a pgwide attribute, so may use a PI -->
+ <xsl:variable name="pgwide.pi">
+ <xsl:call-template name="pi.dbfo_pgwide"/>
+ </xsl:variable>
+
+ <xsl:variable name="pgwide">
+ <xsl:choose>
+ <xsl:when test="$pgwide.pi">
+ <xsl:value-of select="$pgwide.pi"/>
+ </xsl:when>
+ <!-- child element may set pgwide -->
+ <xsl:when test="*[@pgwide]">
+ <xsl:value-of select="*[@pgwide][1]/@pgwide"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Get align value from internal mediaobject -->
+ <xsl:variable name="align">
+ <xsl:if test="mediaobject|mediaobjectco">
+ <xsl:variable name="olist" select="mediaobject/imageobject
+ |mediaobjectco/imageobjectco
+ |mediaobject/videoobject
+ |mediaobject/audioobject
+ |mediaobject/textobject"/>
+
+ <xsl:variable name="object.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+ <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="example">
+ <xsl:choose>
+ <xsl:when test="$pgwide = '1'">
+ <fo:block xsl:use-attribute-sets="pgwide.properties">
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block>
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="position" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$example"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$example"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- Unified handling of CALS and HTML tables, formal and not -->
+<!-- Creates a hierarchy of nested containers:
+ - Outer container does a float.
+ - Nested container does block-container for rotation
+ - Nested block contains title, layout table and footnotes
+ - Nested layout table placeholder template supports extensions.
+ - fo:table is innermost.
+ Created from the innermost and working out.
+ Not all layers apply to every table.
+-->
+<xsl:template match="table|informaltable">
+ <xsl:if test="tgroup/tbody/tr
+ |tgroup/thead/tr
+ |tgroup/tfoot/tr">
+ <xsl:message terminate="yes">
+ <xsl:text>Broken table: tr descendent of CALS Table.</xsl:text>
+ <xsl:text>The text in the first tr is:&#10;</xsl:text>
+ <xsl:value-of
+ select="(tgroup//tr)[1]"/>
+ </xsl:message>
+ </xsl:if>
+ <xsl:if test="not(tgroup) and .//row">
+ <xsl:message terminate="yes">
+ <xsl:text>Broken table: row descendent of HTML table.</xsl:text>
+ <xsl:text>The text in the first row is:&#10;</xsl:text>
+ <xsl:value-of
+ select=".//row[1]"/>
+ </xsl:message>
+ </xsl:if>
+
+ <!-- Contains fo:table, not title or footnotes -->
+ <xsl:variable name="table.content">
+ <xsl:call-template name="make.table.content"/>
+ </xsl:variable>
+
+ <!-- Optional layout table template for extensions -->
+ <xsl:variable name="table.layout">
+ <xsl:call-template name="table.layout">
+ <xsl:with-param name="table.content" select="$table.content"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- fo:block contains title, layout table, and footnotes -->
+ <xsl:variable name="table.block">
+ <xsl:call-template name="table.block">
+ <xsl:with-param name="table.layout" select="$table.layout"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- pgwide or orient container -->
+ <xsl:variable name="table.container">
+ <xsl:call-template name="table.container">
+ <xsl:with-param name="table.block" select="$table.block"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- float or not -->
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="position" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$table.container"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$table.container"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="equation">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Equation doesn't have a pgwide attribute, so may use a PI -->
+ <xsl:variable name="pgwide">
+ <xsl:call-template name="pi.dbfo_pgwide"/>
+ </xsl:variable>
+
+ <xsl:variable name="equation">
+ <xsl:choose>
+ <xsl:when test="$pgwide = '1'">
+ <fo:block xsl:use-attribute-sets="pgwide.properties">
+ <xsl:call-template name="semiformal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="semiformal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="position" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$equation"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$equation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure/title"></xsl:template>
+<xsl:template match="figure/titleabbrev"></xsl:template>
+<xsl:template match="table/title"></xsl:template>
+<xsl:template match="table/titleabbrev"></xsl:template>
+<xsl:template match="table/textobject"></xsl:template>
+<xsl:template match="example/title"></xsl:template>
+<xsl:template match="example/titleabbrev"></xsl:template>
+<xsl:template match="equation/title"></xsl:template>
+<xsl:template match="equation/titleabbrev"></xsl:template>
+
+<xsl:template match="informalfigure">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informalexample">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informaltable/textobject"></xsl:template>
+
+<xsl:template match="informalequation">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template name="floatstyle">
+ <xsl:if test="(@float and @float != '0') or @floatstyle != ''">
+ <xsl:choose>
+ <xsl:when test="@floatstyle != ''">
+ <xsl:value-of select="@floatstyle"/>
+ </xsl:when>
+ <xsl:when test="@float = '1'">
+ <xsl:value-of select="$default.float.class"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@float"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl
new file mode 100644
index 0000000..366b3cb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl
@@ -0,0 +1,1169 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ exclude-result-prefixes="xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: glossary.xsl 8591 2010-02-27 20:42:27Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossary">
+ <xsl:call-template name="make-glossary"/>
+</xsl:template>
+
+<xsl:template match="glossdiv/title"/>
+<xsl:template match="glossdiv/subtitle"/>
+<xsl:template match="glossdiv/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-glossary">
+ <xsl:param name="divs" select="glossdiv"/>
+ <xsl:param name="entries" select="glossentry"/>
+ <xsl:param name="preamble" select="*[not(self::title
+ or self::subtitle
+ or self::glossdiv
+ or self::glossentry)]"/>
+
+ &setup-language-variable;
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_glossary-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbfo_glossterm-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$term-width = ''">
+ <xsl:value-of select="$glossterm.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$term-width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="glossary.titlepage"/>
+ </fo:block>
+
+ <xsl:if test="$preamble">
+ <xsl:apply-templates select="$preamble"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates select="$divs" mode="glossary.as.list">
+ <xsl:with-param name="width" select="$width"/>
+ </xsl:apply-templates>
+ <xsl:if test="$entries">
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="$entries" mode="glossary.as.list">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks'">
+ <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$glossary.as.blocks != 0">
+ <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$divs" mode="glossary.as.list">
+ <xsl:with-param name="width" select="$width"/>
+ </xsl:apply-templates>
+ <xsl:if test="$entries">
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="$entries" mode="glossary.as.list">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="book/glossary|part/glossary|/glossary" priority="2">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="make-glossary"/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="glossary/glossaryinfo"></xsl:template>
+<xsl:template match="glossary/info"></xsl:template>
+<xsl:template match="glossary/title"></xsl:template>
+<xsl:template match="glossary/subtitle"></xsl:template>
+<xsl:template match="glossary/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glosslist">
+ &setup-language-variable;
+
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_glosslist-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbfo_glossterm-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$term-width = ''">
+ <xsl:value-of select="$glossterm.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$term-width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="title or info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="list.title.mode"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry" mode="glossary.as.list">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks'">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry" mode="glossary.as.blocks">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$glosslist.as.blocks != 0">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry" mode="glossary.as.blocks">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry" mode="glossary.as.list">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Glossary collection -->
+
+<xsl:template match="glossary[@role='auto']" priority="2">
+ <xsl:variable name="collection" select="document($glossary.collection, .)"/>
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not($collection) and $glossary.collection != ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
+ <xsl:text>open glossary.collection file '</xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:call-template name="make-auto-glossary"/>
+</xsl:template>
+
+<xsl:template name="make-auto-glossary">
+ <xsl:param name="collection" select="document($glossary.collection, .)"/>
+ <xsl:param name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/>
+ <xsl:param name="preamble" select="*[not(self::title
+ or self::subtitle
+ or self::glossdiv
+ or self::glossentry)]"/>
+
+ &setup-language-variable;
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_glossary-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbfo_glossterm-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$term-width = ''">
+ <xsl:value-of select="$glossterm.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$term-width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="glossary.titlepage"/>
+ </fo:block>
+
+ <xsl:if test="$preamble">
+ <xsl:apply-templates select="$preamble"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv and $collection//glossdiv">
+ <xsl:for-each select="$collection//glossdiv">
+ <!-- first see if there are any in this div -->
+ <xsl:variable name="exist.test">
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:value-of select="glossterm"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="$exist.test != ''">
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates select="." mode="auto-glossary-as-list">
+ <xsl:with-param name="width" select="$width"/>
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks'">
+ <xsl:apply-templates select="." mode="auto-glossary-as-blocks">
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$glossary.as.blocks != 0">
+ <xsl:apply-templates select="." mode="auto-glossary-as-blocks">
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="auto-glossary-as-list">
+ <xsl:with-param name="width" select="$width"/>
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="."
+ mode="auto-glossary-as-list"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="."
+ mode="auto-glossary-as-list"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks' or
+ $glossary.as.blocks != 0">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="."
+ mode="auto-glossary-as-blocks"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="."
+ mode="auto-glossary-as-blocks"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="$collection//glossentry">
+
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="."
+ mode="auto-glossary-as-list"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="."
+ mode="auto-glossary-as-list"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="book/glossary[@role='auto']|
+ part/glossary[@role='auto']|
+ /glossary[@role='auto']" priority="2.5">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="make-auto-glossary"/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="auto-glossary-as-list">
+ <xsl:param name="width" select="$glossterm.width"/>
+ <xsl:param name="terms" select="."/>
+
+ &setup-language-variable;
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::title
+ or self::subtitle
+ or self::glossentry)]"/>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="glossdiv.titlepage"/>
+ </fo:block>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary-as-list"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary-as-list"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="auto-glossary-as-list">
+ <xsl:apply-templates select="." mode="glossary.as.list"/>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="auto-glossary-as-blocks">
+ <xsl:param name="terms" select="."/>
+
+ &setup-language-variable;
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::title
+ or self::subtitle
+ or self::glossentry)]"/>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="glossdiv.titlepage"/>
+ </fo:block>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary-as-blocks"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary-as-blocks"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template match="glossentry" mode="auto-glossary-as-blocks">
+ <xsl:apply-templates select="." mode="glossary.as.blocks"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Format glossary as a list -->
+
+<xsl:template match="glossdiv" mode="glossary.as.list">
+ <xsl:param name="width" select="$glossterm.width"/>
+
+ &setup-language-variable;
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="entries" select="glossentry"/>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::title
+ or self::subtitle
+ or self::glossentry)]"/>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="glossdiv.titlepage"/>
+ </fo:block>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <fo:list-block provisional-distance-between-starts="{$width}"
+ provisional-label-separation="{$glossterm.separation}"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="$entries" mode="glossary.as.list">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-block>
+</xsl:template>
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+
+<xsl:template match="glossentry" mode="glossary.as.list">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:list-item xsl:use-attribute-sets="glossentry.list.item.properties">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0
+ or $glossary.collection != ''">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block xsl:use-attribute-sets="glossterm.list.properties">
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev"
+ mode="glossary.as.list"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm"
+ mode="glossary.as.list"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm"
+ mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
+
+ <xsl:if test="acronym|abbrev">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev"
+ mode="glossary.as.list"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="indexterm"/>
+ </fo:block>
+ </fo:list-item-label>
+
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block xsl:use-attribute-sets="glossdef.list.properties">
+ <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.list"/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match="glossentry/glossterm" mode="glossary.as.list">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <fo:inline id="{$id}">
+ <xsl:apply-templates/>
+ </fo:inline>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/acronym" mode="glossary.as.list">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/abbrev" mode="glossary.as.list">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/revhistory" mode="glossary.as.list">
+</xsl:template>
+
+<xsl:template match="glossentry/glosssee" mode="glossary.as.list">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <fo:block>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$target">
+ <fo:basic-link internal-destination="{$otherterm}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates mode="glossary.as.list"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef" mode="glossary.as.list">
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <fo:block>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="glossseealso" mode="glossary.as.list"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
+ mode="glossary.as.list">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="glossseealso" mode="glossary.as.list">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <fo:basic-link internal-destination="{$otherterm}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates mode="glossary.as.list"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="glossary.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="position() = last()"/>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso-separator'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Format glossary blocks -->
+
+<xsl:template match="glossdiv" mode="glossary.as.blocks">
+ &setup-language-variable;
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="entries" select="glossentry"/>
+ <xsl:variable name="preamble"
+ select="*[not(self::title
+ or self::subtitle
+ or self::glossentry)]"/>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="glossdiv.titlepage"/>
+ </fo:block>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+
+<xsl:template match="glossentry" mode="glossary.as.blocks">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="glossterm.block.properties">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0
+ or $glossary.collection != ''">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
+
+ <xsl:if test="acronym|abbrev">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="indexterm"/>
+ </fo:block>
+
+ <fo:block xsl:use-attribute-sets="glossdef.block.properties">
+ <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.blocks"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="glossentry/glossterm" mode="glossary.as.blocks">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <fo:inline id="{$id}">
+ <xsl:apply-templates/>
+ </fo:inline>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/acronym" mode="glossary.as.blocks">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/abbrev" mode="glossary.as.blocks">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/glosssee" mode="glossary.as.blocks">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$target">
+ <fo:basic-link internal-destination="{$otherterm}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef" mode="glossary.as.blocks">
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"
+ mode="glossary.as.blocks"/>
+ <xsl:if test="glossseealso">
+ <fo:block>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="glossseealso" mode="glossary.as.blocks"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
+ mode="glossary.as.blocks">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- Handle any other glossdef content normally -->
+<xsl:template match="*" mode="glossary.as.blocks">
+ <xsl:apply-templates select="." />
+</xsl:template>
+
+<xsl:template match="glossseealso" mode="glossary.as.blocks">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <fo:basic-link internal-destination="{$otherterm}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="glossary.as.blocks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="position() = last()"/>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso-separator'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl
new file mode 100644
index 0000000..bbbcc0d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl
@@ -0,0 +1,648 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY lowercase "'abcdefghijklmnopqrstuvwxyz'">
+<!ENTITY uppercase "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'">
+ ]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory"
+ xmlns:xtext="com.nwalsh.xalan.Text"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ exclude-result-prefixes="xlink stext xtext lxslt"
+ extension-element-prefixes="stext xtext"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: graphics.xsl 8786 2010-07-28 17:26:46Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ Contributors:
+ Colin Paul Adams, <colin@colina.demon.co.uk>
+ Paul Grosso, <pgrosso@arbortext.com>
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- Graphic format tests for the FO backend -->
+
+<xsl:param name="graphic.notations">
+ <!-- n.b. exactly one leading space, one trailing space, and one inter-word space -->
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0">
+ <xsl:text> PNG PDF JPG JPEG linespecific </xsl:text>
+ </xsl:when>
+ <xsl:when test="$fop1.extensions != 0">
+ <xsl:text> BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific </xsl:text>
+ </xsl:when>
+ <xsl:when test="$fop.extensions != 0">
+ <xsl:text> BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific </xsl:text>
+ </xsl:when>
+ <xsl:when test="$arbortext.extensions != 0">
+ <xsl:text> PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text>
+ </xsl:when>
+ <xsl:when test="$xep.extensions != 0">
+ <xsl:text> SVG PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="is.graphic.format">
+ <xsl:param name="format"/>
+ <xsl:if test="contains($graphic.notations, concat(' ',$format,' '))">1</xsl:if>
+</xsl:template>
+
+<xsl:param name="graphic.extensions">
+ <!-- n.b. exactly one leading space, one trailing space, and one inter-word space -->
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0">
+ <xsl:text> png pdf jpg jpeg </xsl:text>
+ </xsl:when>
+ <xsl:when test="$fop1.extensions != 0">
+ <xsl:text> bmp gif tif tiff svg png pdf jpg jpeg eps </xsl:text>
+ </xsl:when>
+ <xsl:when test="$fop.extensions != 0">
+ <xsl:text> bmp gif tif tiff svg png pdf jpg jpeg eps </xsl:text>
+ </xsl:when>
+ <xsl:when test="$arbortext.extensions != 0">
+ <xsl:text> png pdf jpg jpeg gif tif tiff bmp </xsl:text>
+ </xsl:when>
+ <xsl:when test="$xep.extensions != 0">
+ <xsl:text> svg png pdf jpg jpeg gif tif tiff bmp eps </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> svg png pdf jpg jpeg gif tif tiff bmp eps </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="is.graphic.extension">
+ <xsl:param name="ext"/>
+ <xsl:variable name="lcext" select="translate($ext,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+
+ <xsl:if test="contains($graphic.extensions,
+ concat(' ', $lcext, ' '))">1</xsl:if>
+</xsl:template>
+
+<xsl:template name="graphic.format.content-type">
+ <xsl:param name="format"/>
+ <xsl:variable name="is.graphic.format">
+ <xsl:call-template name="is.graphic.format">
+ <xsl:with-param name="format" select="$format"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$is.graphic.format">
+ <xsl:choose>
+ <xsl:when test="$format = ''"></xsl:when>
+ <xsl:when test="$format = 'linespecific'"></xsl:when>
+ <xsl:when test="$format = 'PS'">application/postscript</xsl:when>
+ <xsl:when test="$format = 'PDF'">application/pdf</xsl:when>
+ <xsl:when test="$format = 'PNG'">image/png</xsl:when>
+ <xsl:when test="$format = 'SVG'">image/svg+xml</xsl:when>
+ <xsl:when test="$format = 'JPG'">image/jpeg</xsl:when>
+ <xsl:when test="$format = 'GIF87a'">image/gif</xsl:when>
+ <xsl:when test="$format = 'GIF89a'">image/gif</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('image/',
+ translate($format, &uppercase;, &lowercase;))"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- ==================================================================== -->
+
+<xsl:template match="screenshot">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="screeninfo">
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Override these templates for FO -->
+<!-- ==================================================================== -->
+
+<xsl:template name="process.image">
+ <!-- When this template is called, the current node should be -->
+ <!-- a graphic, inlinegraphic, imagedata, or videodata. All -->
+ <!-- those elements have the same set of attributes, so we can -->
+ <!-- handle them all in one place. -->
+
+ <xsl:variable name="scalefit">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth">0</xsl:when>
+ <xsl:when test="@contentdepth and
+ @contentdepth != '100%'">0</xsl:when>
+ <xsl:when test="@scale">0</xsl:when>
+ <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when>
+ <xsl:when test="@width or @depth">1</xsl:when>
+ <xsl:when test="$default.image.width != ''">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scale">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when>
+ <xsl:when test="@scale">
+ <xsl:value-of select="@scale div 100.0"/>
+ </xsl:when>
+ <xsl:otherwise>1.0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'graphic'
+ or local-name(.) = 'inlinegraphic'">
+ <!-- handle legacy graphic and inlinegraphic by new template -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- imagedata, videodata, audiodata -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="content-type">
+ <xsl:if test="@format">
+ <xsl:call-template name="graphic.format.content-type">
+ <xsl:with-param name="format" select="@format"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:call-template name="pi.dbfo_background-color">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:external-graphic>
+ <xsl:attribute name="src">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename">
+ <xsl:if test="$img.src.path != '' and
+ not(starts-with($filename, '/')) and
+ not(contains($filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:if>
+ <xsl:value-of select="$filename"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="contains(@width,'%')">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:when test="@width and not(@width = '')">
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@width"/>
+ <xsl:with-param name="default.units" select="'px'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="$default.image.width"/>
+ <xsl:with-param name="default.units" select="'px'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="height">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="contains(@depth,'%')">
+ <xsl:value-of select="@depth"/>
+ </xsl:when>
+ <xsl:when test="@depth">
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@depth"/>
+ <xsl:with-param name="default.units" select="'px'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="content-width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="contains(@contentwidth,'%')">
+ <xsl:value-of select="@contentwidth"/>
+ </xsl:when>
+ <xsl:when test="@contentwidth">
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ <xsl:with-param name="default.units" select="'px'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="number($scale) != 1.0">
+ <xsl:value-of select="$scale * 100"/>
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+ <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="content-height">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
+ <xsl:when test="contains(@contentdepth,'%')">
+ <xsl:value-of select="@contentdepth"/>
+ </xsl:when>
+ <xsl:when test="@contentdepth">
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ <xsl:with-param name="default.units" select="'px'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="number($scale) != 1.0">
+ <xsl:value-of select="$scale * 100"/>
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+ <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:if test="$content-type != ''">
+ <xsl:attribute name="content-type">
+ <xsl:value-of select="concat('content-type:',$content-type)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="background-color">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@valign">
+ <xsl:attribute name="display-align">
+ <xsl:choose>
+ <xsl:when test="@valign = 'top'">before</xsl:when>
+ <xsl:when test="@valign = 'middle'">center</xsl:when>
+ <xsl:when test="@valign = 'bottom'">after</xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ </fo:external-graphic>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="graphic">
+ <xsl:choose>
+ <xsl:when test="parent::inlineequation">
+ <xsl:call-template name="process.image"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block>
+ <xsl:if test="@align">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="process.image"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="inlinegraphic">
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache Software Foundation')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to insert files with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process.image"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="mediaobject|mediaobjectco">
+
+ <xsl:variable name="olist" select="imageobject|imageobjectco
+ |videoobject|audioobject
+ |textobject"/>
+
+ <xsl:variable name="object.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+ <xsl:variable name="align">
+ <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/>
+ </xsl:variable>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:if test="$align != '' ">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="$object"/>
+ <xsl:apply-templates select="caption"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <xsl:call-template name="select.mediaobject"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="imageobjectco">
+ <xsl:apply-templates select="imageobject"/>
+ <xsl:apply-templates select="calloutlist"/>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:choose>
+ <xsl:when test="imagedata">
+ <xsl:apply-templates select="imagedata"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:instream-foreign-object>
+ <xsl:apply-templates mode="copy-all"/>
+ </fo:instream-foreign-object>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="copy-all">
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:copy/>
+ </xsl:for-each>
+ <xsl:apply-templates mode="copy-all"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|comment()|processing-instruction()" mode="copy-all">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="imagedata">
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:variable name="filename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when test="svg:*" xmlns:svg="http://www.w3.org/2000/svg">
+ <fo:instream-foreign-object>
+ <xsl:apply-templates mode="copy-all" select="*"/>
+ </fo:instream-foreign-object>
+ </xsl:when>
+
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache Software Foundation')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to insert files with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process.image"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="videoobject">
+ <xsl:apply-templates select="videodata"/>
+</xsl:template>
+
+<xsl:template match="videodata">
+ <xsl:call-template name="process.image"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="audioobject">
+ <xsl:apply-templates select="audiodata"/>
+</xsl:template>
+
+<xsl:template match="audiodata">
+ <xsl:call-template name="process.image"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="textobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="textdata">
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="@encoding">
+ <xsl:value-of select="@encoding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$textdata.default.encoding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to insert files with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="caption">
+ <fo:block>
+ <xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
+ <xsl:attribute name="text-align"><xsl:value-of
+ select="@align"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="fo-external-image">
+ <xsl:param name="filename"/>
+
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0
+ or $fop.extensions != 0">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('url(', $filename, ')')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':') or starts-with(.,'/')">
+ <!-- it has a uri scheme or starts with '/', so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl
new file mode 100644
index 0000000..7843ad2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl
@@ -0,0 +1,77 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xslthl="http://xslthl.sf.net"
+ exclude-result-prefixes="xslthl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: highlight.xsl 8419 2009-04-29 20:37:52Z kosek $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ and other information.
+
+ ******************************************************************** -->
+
+<xsl:import href="../highlighting/common.xsl"/>
+
+<xsl:template match='xslthl:keyword' mode="xslthl">
+ <fo:inline font-weight="bold"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+<xsl:template match='xslthl:string' mode="xslthl">
+ <fo:inline font-weight="bold" font-style="italic"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+<xsl:template match='xslthl:comment' mode="xslthl">
+ <fo:inline font-style="italic"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+<xsl:template match='xslthl:tag' mode="xslthl">
+ <fo:inline font-weight="bold"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+<xsl:template match='xslthl:attribute' mode="xslthl">
+ <fo:inline font-weight="bold"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+<xsl:template match='xslthl:value' mode="xslthl">
+ <fo:inline font-weight="bold"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+<!--
+<xsl:template match='xslthl:html'>
+ <span style='background:#AFF'><font color='blue'><xsl:apply-templates/></font></span>
+</xsl:template>
+
+<xsl:template match='xslthl:xslt'>
+ <span style='background:#AAA'><font color='blue'><xsl:apply-templates/></font></span>
+</xsl:template>
+
+<xsl:template match='xslthl:section'>
+ <span style='background:yellow'><xsl:apply-templates/></span>
+</xsl:template>
+-->
+
+<xsl:template match='xslthl:number' mode="xslthl">
+ <xsl:apply-templates mode="xslthl"/>
+</xsl:template>
+
+<xsl:template match='xslthl:annotation' mode="xslthl">
+ <fo:inline color="gray"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+<xsl:template match='xslthl:directive' mode="xslthl">
+ <xsl:apply-templates mode="xslthl"/>
+</xsl:template>
+
+<!-- Not sure which element will be in final XSLTHL 2.0 -->
+<xsl:template match='xslthl:doccomment|xslthl:doctype' mode="xslthl">
+ <fo:inline font-weight="bold"><xsl:apply-templates mode="xslthl"/></fo:inline>
+</xsl:template>
+
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl
new file mode 100644
index 0000000..4918b8a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl
@@ -0,0 +1,425 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: htmltbl.xsl 8392 2009-04-01 08:47:55Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- Outputs an fo:table only, not the caption -->
+<xsl:template match="table|informaltable" mode="htmlTable">
+
+ <xsl:variable name="numcols">
+ <xsl:call-template name="widest-html-row">
+ <xsl:with-param name="rows" select=".//tr"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="prop-columns"
+ select=".//col[contains(@width, '%')] |
+ .//colgroup[contains(@width, '%')]"/>
+
+ <xsl:variable name="table.width">
+ <xsl:call-template name="table.width"/>
+ </xsl:variable>
+
+ <fo:table xsl:use-attribute-sets="table.table.properties">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0 or
+ $passivetex.extensions != 0">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="@width">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:when test="$table.width">
+ <xsl:value-of select="$table.width"/>
+ </xsl:when>
+ <xsl:otherwise>100%</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:call-template name="table.frame">
+ <xsl:with-param name="frame">
+ <xsl:choose>
+ <xsl:when test="@frame = 'box'">all</xsl:when>
+ <xsl:when test="@frame = 'border'">all</xsl:when>
+ <xsl:when test="@frame = 'below'">bottom</xsl:when>
+ <xsl:when test="@frame = 'above'">top</xsl:when>
+ <xsl:when test="@frame = 'hsides'">topbot</xsl:when>
+ <xsl:when test="@frame = 'vsides'">sides</xsl:when>
+ <xsl:when test="@frame = 'lhs'">lhs</xsl:when>
+ <xsl:when test="@frame = 'rhs'">rhs</xsl:when>
+ <xsl:when test="@frame = 'void'">none</xsl:when>
+ <xsl:when test="@border != '' and @border != 0">all</xsl:when>
+ <xsl:when test="@border != '' and @border = 0">none</xsl:when>
+ <xsl:when test="@frame != ''">
+ <xsl:value-of select="@frame"/>
+ </xsl:when>
+ <xsl:when test="$default.table.frame != ''">
+ <xsl:value-of select="$default.table.frame"/>
+ </xsl:when>
+ <xsl:otherwise>all</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:call-template name="make-html-table-columns">
+ <xsl:with-param name="count" select="$numcols"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="thead" mode="htmlTable"/>
+ <xsl:apply-templates select="tfoot" mode="htmlTable"/>
+ <xsl:choose>
+ <xsl:when test="tbody">
+ <xsl:apply-templates select="tbody" mode="htmlTable"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <xsl:apply-templates select="tr" mode="htmlTable"/>
+ </fo:table-body>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table>
+
+</xsl:template>
+
+<!-- This template writes rowsep or colsep equivalant for html tables -->
+<xsl:template name="html.table.cell.rules">
+ <xsl:variable name="border"
+ select="(ancestor::table |
+ ancestor::informaltable)[last()]/@border"/>
+ <xsl:variable name="table.rules"
+ select="(ancestor::table |
+ ancestor::informaltable)[last()]/@rules"/>
+
+ <xsl:variable name="rules">
+ <xsl:choose>
+ <xsl:when test="$table.rules != ''">
+ <xsl:value-of select="$table.rules"/>
+ </xsl:when>
+ <xsl:when test="$default.table.rules != ''">
+ <xsl:value-of select="$default.table.rules"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$border != '' and $border != 0">
+ <xsl:attribute name="border">
+ <xsl:value-of select="$table.cell.border.thickness"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$table.cell.border.style"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$table.cell.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$rules = 'none'">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$rules = 'cols' and following-sibling::*">
+ <!-- If not the last column, add border after -->
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- If not the last row, add border below -->
+ <xsl:when test="$rules = 'rows'">
+ <xsl:variable name="rowborder">
+ <xsl:choose>
+ <!-- If in thead and tbody has rows, add border -->
+ <xsl:when test="parent::tr/parent::thead/
+ following-sibling::tbody/tr">1</xsl:when>
+ <!-- If in tbody and tfoot has rows, add border -->
+ <xsl:when test="parent::tr/parent::tbody/
+ following-sibling::tfoot/tr">1</xsl:when>
+ <xsl:when test="parent::tr/parent::tbody/
+ preceding-sibling::tfoot/tr">1</xsl:when>
+ <!-- If following rows, but not rowspan reaches last row -->
+ <xsl:when test="parent::tr/following-sibling::tr and
+ not(@rowspan = count(parent::tr/following-sibling::tr) + 1)">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$rowborder = 1">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$rules = 'all'">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+
+ <xsl:variable name="rowborder">
+ <xsl:choose>
+ <!-- If in thead and tbody has rows, add border -->
+ <xsl:when test="parent::tr/parent::thead/
+ following-sibling::tbody/tr">1</xsl:when>
+ <!-- If in tbody and tfoot has rows, add border -->
+ <xsl:when test="parent::tr/parent::tbody/
+ following-sibling::tfoot/tr">1</xsl:when>
+ <xsl:when test="parent::tr/parent::tbody/
+ preceding-sibling::tfoot/tr">1</xsl:when>
+ <!-- If following rows, but not rowspan reaches last row -->
+ <xsl:when test="parent::tr/following-sibling::tr and
+ not(@rowspan = count(parent::tr/following-sibling::tr) + 1)">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$rowborder = 1">
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="following-sibling::*">
+ <!-- If not the last column, add border after -->
+ <xsl:attribute name="border-end-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$rules = 'groups' and ancestor::thead
+ and not(parent::tr/following-sibling::tr)">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$rules = 'groups' and ancestor::tfoot
+ and not(parent::tr/preceding-sibling::tr)">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="caption" mode="htmlTable">
+ <!-- Handled by formal.object.heading -->
+</xsl:template>
+
+<xsl:template name="widest-html-row">
+ <xsl:param name="rows" select="''"/>
+ <xsl:param name="count" select="0"/>
+ <xsl:choose>
+ <xsl:when test="count($rows) = 0">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$count &gt; count($rows[1]/*)">
+ <xsl:call-template name="widest-html-row">
+ <xsl:with-param name="rows" select="$rows[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="widest-html-row">
+ <xsl:with-param name="rows" select="$rows[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="count($rows[1]/*)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-html-table-columns">
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="number" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="col|colgroup/col">
+ <xsl:for-each select="col|colgroup/col">
+ <fo:table-column>
+ <xsl:attribute name="column-number">
+ <xsl:number from="table|informaltable" level="any" format="1"/>
+ </xsl:attribute>
+ <xsl:if test="@width">
+ <xsl:attribute name="column-width">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0 and
+ contains(@width, '%')">
+ <xsl:value-of select="concat('proportional-column-width(',
+ substring-before(@width, '%'),
+ ')')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ </fo:table-column>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="$fop.extensions != 0">
+ <xsl:if test="$number &lt;= $count">
+ <fo:table-column column-number="{$number}"
+ column-width="{6.5 div $count}in"/>
+ <xsl:call-template name="make-html-table-columns">
+ <xsl:with-param name="count" select="$count"/>
+ <xsl:with-param name="number" select="$number + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tbody" mode="htmlTable">
+ <fo:table-body start-indent="0pt"
+ end-indent="0pt">
+ <xsl:apply-templates mode="htmlTable"/>
+ </fo:table-body>
+</xsl:template>
+
+<xsl:template match="tfoot" mode="htmlTable">
+ <fo:table-footer start-indent="0pt"
+ end-indent="0pt">
+ <xsl:apply-templates mode="htmlTable"/>
+ </fo:table-footer>
+</xsl:template>
+
+<xsl:template match="th|td" mode="htmlTable">
+ <xsl:variable name="bgcolor.pi">
+ <xsl:call-template name="pi.dbfo_bgcolor"/>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:choose>
+ <xsl:when test="$bgcolor.pi != ''">
+ <xsl:value-of select="$bgcolor.pi"/>
+ </xsl:when>
+ <xsl:when test="string-length(@bgcolor) != 0">
+ <xsl:value-of select="@bgcolor"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="align">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="row" select="parent::tr"/>
+ <xsl:with-param name="attribute" select="'align'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="valign">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="row" select="parent::tr"/>
+ <xsl:with-param name="attribute" select="'valign'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:table-cell xsl:use-attribute-sets="table.cell.padding">
+ <xsl:call-template name="table.cell.properties">
+ <xsl:with-param name="bgcolor.pi" select="$bgcolor"/>
+ <xsl:with-param name="rowsep.inherit" select="0"/>
+ <xsl:with-param name="align.inherit" select="$align"/>
+ <xsl:with-param name="valign.inherit" select="$valign"/>
+ <xsl:with-param name="colsep.inherit" select="0"/>
+ </xsl:call-template>
+
+ <xsl:if test="@colspan &gt; 1">
+ <xsl:attribute name="number-columns-spanned">
+ <xsl:value-of select="@colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@rowspan &gt; 1">
+ <xsl:attribute name="number-rows-spanned">
+ <xsl:value-of select="@rowspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <fo:block>
+ <xsl:call-template name="table.cell.block.properties"/>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+<xsl:template match="thead" mode="htmlTable">
+ <fo:table-header start-indent="0pt"
+ end-indent="0pt">
+ <xsl:apply-templates mode="htmlTable"/>
+ </fo:table-header>
+</xsl:template>
+
+<xsl:template match="tr" mode="htmlTable">
+ <fo:table-row>
+ <xsl:call-template name="table.row.properties"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </fo:table-row>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl
new file mode 100644
index 0000000..ff298d1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl
@@ -0,0 +1,484 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:rx="http://www.renderx.com/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: index.xsl 8724 2010-07-15 07:53:27Z kosek $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="index">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:if test="$generate.index != 0">
+ <xsl:choose>
+ <xsl:when test="$make.index.markup != 0">
+ <fo:block>
+ <xsl:call-template name="generate-index-markup">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}">
+ <xsl:call-template name="index.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="book/index|part/index">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:if test="$generate.index != 0">
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass">
+ <xsl:if test="$make.index.markup != 0">body</xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="component.titlepage.properties">
+ <xsl:call-template name="index.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+
+ <xsl:choose>
+ <xsl:when test="$make.index.markup != 0">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ xsl:use-attribute-sets="monospace.verbatim.properties"
+ linefeed-treatment="preserve">
+ <xsl:call-template name="generate-index-markup">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="indexentry|indexdiv/indexentry">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="setindex">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:if test="$generate.index != 0">
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass">
+ <xsl:choose>
+ <xsl:when test="$make.index.markup != 0">body</xsl:when>
+ <xsl:otherwise>index</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="setindex.titlepage"/>
+ </fo:block>
+ <xsl:apply-templates/>
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+
+ <xsl:choose>
+ <xsl:when test="$make.index.markup != 0">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ xsl:use-attribute-sets="monospace.verbatim.properties"
+ linefeed-treatment="preserve">
+ <xsl:call-template name="generate-index-markup">
+ <xsl:with-param name="scope" select="/"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="indexentry|indexdiv/indexentry">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="/"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="index/indexinfo"></xsl:template>
+<xsl:template match="index/info"></xsl:template>
+<xsl:template match="index/title"></xsl:template>
+<xsl:template match="index/subtitle"></xsl:template>
+<xsl:template match="index/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="indexdiv.title">
+ <xsl:param name="title"/>
+ <xsl:param name="titlecontent"/>
+
+ <fo:block xsl:use-attribute-sets="index.div.title.properties">
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="." mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$titlecontent"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="indexdiv">
+ <fo:block>
+ <xsl:call-template name="indexdiv.titlepage"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="indexdiv/title"/>
+<xsl:template match="indexdiv/subtitle"/>
+<xsl:template match="indexdiv/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<!-- Text used for distiguishing between normal and significant entries -->
+<xsl:variable name="significant.flag">.tnacifingis</xsl:variable>
+
+<xsl:template match="indexterm" name="indexterm">
+ <!-- Temporal workaround for bug in AXF -->
+ <xsl:variable name="wrapper.name">
+ <xsl:choose>
+ <xsl:when test="$axf.extensions != 0 or $fop1.extensions != 0">
+ <xsl:call-template name="inline.or.block"/>
+ </xsl:when>
+ <xsl:otherwise>fo:wrapper</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$wrapper.name}">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="$xep.extensions != 0">
+ <xsl:attribute name="rx:key">
+ <xsl:value-of select="&primary;"/>
+ <xsl:if test="@significance='preferred'"><xsl:value-of select="$significant.flag"/></xsl:if>
+ <xsl:if test="secondary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="&secondary;"/>
+ </xsl:if>
+ <xsl:if test="tertiary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="&tertiary;"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:comment>
+ <xsl:call-template name="comment-escape-string">
+ <xsl:with-param name="string">
+ <xsl:value-of select="primary"/>
+ <xsl:if test="secondary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="secondary"/>
+ </xsl:if>
+ <xsl:if test="tertiary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="tertiary"/>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:comment>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='startofrange']">
+ <xsl:choose>
+ <xsl:when test="$xep.extensions != 0">
+ <rx:begin-index-range>
+ <xsl:call-template name="anchor"/>
+ <xsl:attribute name="rx:key">
+ <xsl:value-of select="&primary;"/>
+ <xsl:if test="@significance='preferred'"><xsl:value-of select="$significant.flag"/></xsl:if>
+ <xsl:if test="secondary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="&secondary;"/>
+ </xsl:if>
+ <xsl:if test="tertiary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="&tertiary;"/>
+ </xsl:if>
+ </xsl:attribute>
+ </rx:begin-index-range>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="indexterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='endofrange']">
+ <xsl:choose>
+ <xsl:when test="$xep.extensions != 0">
+ <rx:end-index-range>
+ <xsl:attribute name="ref-id">
+ <xsl:value-of select="@startref"/>
+ </xsl:attribute>
+ </rx:end-index-range>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="indexterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexentry">
+ <fo:block>
+ <!-- don't process 'seeie's from here -->
+ <xsl:apply-templates select="primaryie|secondaryie|tertiaryie|seealsoie"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="primaryie">
+ <fo:block>
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::seeie">
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="following-sibling::seeie"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="secondaryie">
+ <fo:block start-indent="1pc">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::seeie">
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="following-sibling::seeie"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="tertiaryie">
+ <fo:block start-indent="2pc">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::seeie">
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="following-sibling::seeie"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="seeie">
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="seealsoie">
+ <fo:block>
+ <xsl:attribute name="start-indent">
+ <xsl:choose>
+ <xsl:when test="(preceding-sibling::tertiaryie |
+ preceding-sibling::secondaryie)[last()]
+ [self::tertiaryie]">3pc</xsl:when>
+ <xsl:when test="(preceding-sibling::tertiaryie |
+ preceding-sibling::secondaryie)[last()]
+ [self::secondaryie]">2pc</xsl:when>
+ <xsl:otherwise>1pc</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<!-- Determines if an object should be inserted as an fo:inline
+ or an fo:block. Used for indexterms -->
+<xsl:template name="inline.or.block">
+ <xsl:param name="parentnode" select=".."/>
+
+ <xsl:variable name="parent" select="concat('|', local-name($parentnode), '|')"/>
+
+ <xsl:variable name="block.parents" select="'|answer|appendix|appendixinfo|article|articleinfo|bibliodiv|bibliography|bibliographyinfo|blockinfo|blockquote|bookinfo|callout|caution|chapter|chapterinfo|dedication|example|figure|formalpara|funcsynopsisinfo|glossary|glossaryinfo|glossdef|glossdiv|glossentry|highlights|important|index|indexinfo|info|informalexample|informalfigure|informaltable|itemizedlist|legalnotice|listitem|msgexplan|msgtext|note|objectinfo|orderedlist|partinfo|partintro|preface|prefaceinfo|procedure|qandadiv|qandaset|question|refentry|refentryinfo|referenceinfo|refmeta|refmiscinfo|refsect1|refsect1info|refsect2|refsect2info|refsect3|refsect3info|refsection|refsectioninfo|refsynopsisdiv|refsynopsisdivinfo|revdescription|screeninfo|sect1|sect1info|sect2|sect2info|sect3|sect3info|sect4|sect4info|sect5|sect5info|section|sectioninfo|setindex|setindexinfo|setinfo|sidebar|sidebarinfo|simplesect|step|table|task|taskprerequisites|taskrelated|tasksummary|tip|variablelist|warning|'"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($block.parents, $parent)">fo:block</xsl:when>
+ <xsl:when test="$fop1.extensions != 0">fo:wrapper</xsl:when>
+ <xsl:otherwise>fo:inline</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl
new file mode 100644
index 0000000..7497b82
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl
@@ -0,0 +1,34 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: info.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These templates define the "default behavior" for info
+ elements. Even if you don't process the *info wrappers,
+ some of these elements are needed because the elements are
+ processed from named templates that are called with modes.
+ Since modes aren't sticky, these rules apply.
+ (TODO: clarify this comment) -->
+
+<!-- ==================================================================== -->
+<!-- called from named templates in a given mode -->
+
+<xsl:template match="corpauthor">
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl
new file mode 100644
index 0000000..cbc8cff
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl
@@ -0,0 +1,1288 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ exclude-result-prefixes="xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: inline.xsl 8811 2010-08-09 20:24:45Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm)"/>
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm/@baseform)"/>
+
+<xsl:template name="simple.xlink">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:param name="linkend" select="$node/@linkend"/>
+ <xsl:param name="xhref" select="$node/@xlink:href"/>
+
+ <xsl:choose>
+ <xsl:when test="$xhref
+ and (not($node/@xlink:type) or
+ $node/@xlink:type='simple')">
+
+ <!-- Is it a local idref? -->
+ <xsl:variable name="is.idref">
+ <xsl:choose>
+ <!-- if the href starts with # and does not contain an "(" -->
+ <!-- or if the href starts with #xpointer(id(, it's just an ID -->
+ <xsl:when test="starts-with($xhref,'#')
+ and (not(contains($xhref,'&#40;'))
+ or starts-with($xhref,
+ '#xpointer&#40;id&#40;'))">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Is it an olink ? -->
+ <xsl:variable name="is.olink">
+ <xsl:choose>
+ <!-- If xlink:role="http://docbook.org/xlink/role/olink" -->
+ <!-- and if the href contains # -->
+ <xsl:when test="contains($xhref,'#') and
+ @xlink:role = $xolink.role">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$is.olink = 1">
+ <xsl:call-template name="olink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$is.idref = 1">
+
+ <xsl:variable name="idref">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targets" select="key('id',$idref)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$idref"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XLink to nonexistent id: </xsl:text>
+ <xsl:value-of select="$idref"/>
+ </xsl:message>
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <fo:basic-link internal-destination="{$idref}">
+ <xsl:copy-of select="$content"/>
+ </fo:basic-link>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- otherwise it's a URI -->
+ <xsl:otherwise>
+ <fo:basic-link external-destination="url({$xhref})">
+ <xsl:copy-of select="$content"/>
+ </fo:basic-link>
+ <!-- * Call the template for determining whether the URL for this -->
+ <!-- * hyperlink is displayed, and how to display it (either inline or -->
+ <!-- * as a numbered footnote). -->
+ <xsl:call-template name="hyperlink.url.display">
+ <xsl:with-param name="url" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$linkend">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XLink to nonexistent id: </xsl:text>
+ <xsl:value-of select="$linkend"/>
+ </xsl:message>
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <fo:basic-link internal-destination="{$linkend}">
+ <xsl:copy-of select="$content"/>
+ </fo:basic-link>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="inline.charseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="@dir">
+ <fo:inline>
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.monoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:inline xsl:use-attribute-sets="monospace.properties">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@dir">
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="inline.boldseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:inline font-weight="bold">
+ <xsl:if test="@dir">
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="inline.italicseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:inline font-style="italic">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@dir">
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="inline.boldmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:inline font-weight="bold" xsl:use-attribute-sets="monospace.properties">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@dir">
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="inline.italicmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:inline font-style="italic" xsl:use-attribute-sets="monospace.properties">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@dir">
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="inline.superscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:inline xsl:use-attribute-sets="superscript.properties">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@dir">
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">
+ <xsl:attribute name="vertical-align">super</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="baseline-shift">super</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="inline.subscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <fo:inline xsl:use-attribute-sets="subscript.properties">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@dir">
+ <xsl:attribute name="direction">
+ <xsl:choose>
+ <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
+ <xsl:otherwise>rtl</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">
+ <xsl:attribute name="vertical-align">sub</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="baseline-shift">sub</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- some special cases -->
+
+<xsl:template match="author">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="editor">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="othercredit">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="authorinitials">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="accel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="action">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="application">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="exceptionname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="interfacename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="methodname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="computeroutput">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="constant">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="database">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="date">
+ <!-- should this support locale-specific formatting? how? -->
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorcode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortype">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortext">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="envar">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="filename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="function">
+ <xsl:choose>
+ <xsl:when test="$function.parens != '0'
+ and (parameter or function or replaceable)">
+ <xsl:variable name="nodes" select="text()|*"/>
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$nodes[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="$nodes[position()>1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="function/parameter" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="function/replaceable" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="guibutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guiicon">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guilabel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenuitem">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guisubmenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="hardware">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interface">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interfacedefinition">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keycap">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="keycode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keysym">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="literal">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="code">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="medialabel">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="shortcut">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="mousebutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="option">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="package">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="parameter">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="property">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="prompt">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="replaceable">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="returnvalue">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="structfield">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="structname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="symbol">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="systemitem">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="token">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="type">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="userinput">
+ <xsl:call-template name="inline.boldmonoseq"/>
+</xsl:template>
+
+<xsl:template match="abbrev">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="acronym">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="citetitle">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <xsl:variable name="depth">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string">
+ <xsl:number level="multiple"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@role='bold' or @role='strong'">
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:when>
+ <xsl:when test="@role='underline'">
+ <fo:inline text-decoration="underline">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="@role='strikethrough'">
+ <fo:inline text-decoration="line-through">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$depth mod 2 = 1">
+ <fo:inline font-style="normal">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="foreignphrase">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="markup">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phrase">
+ <fo:inline>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="inline.charseq"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="quote">
+ <xsl:variable name="depth">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string"><xsl:number level="multiple"/></xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$depth mod 2 = 0">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nestedstartquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.nestedendquote"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:inline>
+ <xsl:call-template name="anchor"/>
+ <xsl:copy-of select="$content"/>
+ </fo:inline>
+
+</xsl:template>
+
+<xsl:template match="varname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="wordasword">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="lineannotation">
+ <fo:inline font-style="italic">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="superscript">
+ <xsl:call-template name="inline.superscriptseq"/>
+</xsl:template>
+
+<xsl:template match="subscript">
+ <xsl:call-template name="inline.subscriptseq"/>
+</xsl:template>
+
+<xsl:template match="trademark">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:choose>
+ <xsl:when test="@class = 'copyright'
+ or @class = 'registered'">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@class = 'service'">
+ <xsl:call-template name="inline.superscriptseq">
+ <xsl:with-param name="content" select="'SM'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="'trademark'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="firstterm">
+ <xsl:call-template name="glossterm">
+ <xsl:with-param name="firstterm" select="1"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="glossterm" name="glossterm">
+ <xsl:param name="firstterm" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <fo:basic-link internal-destination="{@linkend}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:call-template name="inline.italicseq"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend)
+ and ($firstterm.only.link = 0 or $firstterm = 1)
+ and ($glossterm.auto.link != 0)
+ and $glossary.collection != ''">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="cterm"
+ select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="not($cterm)">
+ <xsl:message>
+ <xsl:text>There's no entry for </xsl:text>
+ <xsl:value-of select="$term"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cterm"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:call-template name="inline.italicseq"/>
+ </fo:basic-link>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend)
+ and ($firstterm.only.link = 0 or $firstterm = 1)
+ and $glossterm.auto.link != 0">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform">
+ <xsl:value-of select="normalize-space(@baseform)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targets"
+ select="key('glossentries', $term)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no glossentry for glossterm: </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="termid">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:basic-link internal-destination="{$termid}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:basic-link>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="termdef">
+ <fo:inline>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'prefix'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'suffix'"/>
+ </xsl:call-template>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="sgmltag|tag">
+ <xsl:variable name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>element</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$class='attribute'">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:when>
+ <xsl:when test="$class='attvalue'">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:when>
+ <xsl:when test="$class='element'">
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:when>
+ <xsl:when test="$class='endtag'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='genentity'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='numcharref'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&amp;#</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='paramentity'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>%</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='pi'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='xmlpi'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>?&gt;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='starttag'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='emptytag'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>/&gt;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$class='sgmlcomment' or $class='comment'">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:text>&lt;!--</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>--&gt;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="email">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <fo:inline keep-together.within-line="always" hyphenate="false">
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&lt;</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="not($email.mailto.enabled = 0)">
+ <fo:basic-link xsl:use-attribute-sets="xref.properties"
+ keep-together.within-line="always" hyphenate="false">
+ <xsl:attribute name="external-destination">
+ mailto:<xsl:value-of select="string(.)" />
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&gt;</xsl:text>
+ </xsl:if>
+ </fo:inline>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="keycombo">
+ <xsl:variable name="action" select="@action"/>
+ <xsl:variable name="joinchar">
+ <xsl:choose>
+ <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when>
+ <xsl:when test="$action='simul'">+</xsl:when>
+ <xsl:when test="$action='press'">-</xsl:when>
+ <xsl:when test="$action='click'">-</xsl:when>
+ <xsl:when test="$action='double-click'">-</xsl:when>
+ <xsl:when test="$action='other'"></xsl:when>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="*">
+ <xsl:if test="position()>1"><xsl:value-of select="$joinchar"/></xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="uri">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="menuchoice">
+ <xsl:variable name="shortcut" select="./shortcut"/>
+ <xsl:call-template name="process.menuchoice"/>
+ <xsl:if test="$shortcut">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="$shortcut"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.menuchoice">
+ <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:variable name="mm.separator">
+ <xsl:choose>
+ <xsl:when test="($fop.extensions != 0 or $fop1.extensions != 0 ) and
+ contains($menuchoice.menu.separator, '&#x2192;')">
+ <fo:inline font-family="Symbol">
+ <xsl:copy-of select="$menuchoice.menu.separator"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$menuchoice.menu.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($nodelist)"></xsl:when>
+ <xsl:when test="$count=1">
+ <xsl:apply-templates select="$nodelist[$count=position()]"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="node" select="$nodelist[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='guimenuitem'
+ or local-name($node)='guisubmenu'">
+ <xsl:copy-of select="$mm.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$menuchoice.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$node"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+</xsl:template>
+
+<xsl:template match="citation">
+ <!-- todo: integrate with bibliography collection -->
+ <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to abbrev -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <fo:basic-link>
+ <xsl:attribute name="internal-destination">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$target" mode="citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </fo:basic-link>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="citebiblioid">
+ <xsl:variable name="targets" select="//*[biblioid = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to parent of biblioid -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <fo:basic-link>
+ <xsl:attribute name="internal-destination">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.charseq"/>
+
+ </fo:basic-link>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="citation">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="comment[&comment.block.parents;]|remark[&comment.block.parents;]">
+ <xsl:if test="$show.comments != 0">
+ <fo:block font-style="italic">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="comment|remark">
+ <xsl:if test="$show.comments != 0">
+ <fo:inline font-style="italic">
+ <xsl:call-template name="inline.charseq"/>
+ </fo:inline>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productname">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="productnumber">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="pob|street|city|state|postcode|country|otheraddr">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phone|fax">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- in Addresses, for example -->
+<xsl:template match="honorific|firstname|surname|lineage|othername">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="person">
+ <xsl:apply-templates select="personname"/>
+</xsl:template>
+
+<xsl:template match="personname">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="jobtitle">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="org">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="orgname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="orgdiv">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="affiliation">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="beginpage">
+ <!-- does nothing; this *is not* markup to force a page break. -->
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl
new file mode 100644
index 0000000..6070b91
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: keywords.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="keywordset"></xsl:template>
+<xsl:template match="subjectset"></xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl
new file mode 100644
index 0000000..51052f1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl
@@ -0,0 +1,1393 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: lists.xsl 8761 2010-07-21 18:58:53Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="itemizedlist">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:variable name="pi-label-width">
+ <xsl:call-template name="pi.dbfo_label-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="label-width">
+ <xsl:choose>
+ <xsl:when test="$pi-label-width = ''">
+ <xsl:value-of select="$itemizedlist.label.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$pi-label-width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="title">
+ <xsl:apply-templates select="title" mode="list.title.mode"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::listitem
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::listitem)]
+ |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <xsl:variable name="content">
+ <xsl:apply-templates
+ select="listitem
+ |comment()[preceding-sibling::listitem]
+ |processing-instruction()[preceding-sibling::listitem]"/>
+ </xsl:variable>
+
+ <!-- nested lists don't add extra list-block spacing -->
+ <xsl:choose>
+ <xsl:when test="ancestor::listitem">
+ <fo:list-block id="{$id}" xsl:use-attribute-sets="itemizedlist.properties">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:value-of select="$label-width"/>
+ </xsl:attribute>
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:list-block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing itemizedlist.properties">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:value-of select="$label-width"/>
+ </xsl:attribute>
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:list-block>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template match="itemizedlist/title|orderedlist/title">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/title" mode="vl.as.list">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/title" mode="vl.as.blocks">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="procedure/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev" mode="vl.as.list">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev" mode="vl.as.blocks">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:variable name="item.contents">
+ <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="itemizedlist.label.properties">
+ <fo:block>
+ <xsl:call-template name="itemizedlist.label.markup">
+ <xsl:with-param name="itemsymbol">
+ <xsl:call-template name="list.itemsymbol">
+ <xsl:with-param name="node" select="parent::itemizedlist"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:choose>
+ <!-- * work around broken passivetex list-item-body rendering -->
+ <xsl:when test="$passivetex.extensions = '1'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-item-body>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="parent::*/@spacing = 'compact'">
+ <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$item.contents"/>
+ </fo:list-item>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$item.contents"/>
+ </fo:list-item>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="itemizedlist.label.markup">
+ <xsl:param name="itemsymbol" select="'disc'"/>
+
+ <xsl:choose>
+ <xsl:when test="$itemsymbol='none'"></xsl:when>
+ <xsl:when test="$itemsymbol='disc'">&#x2022;</xsl:when>
+ <xsl:when test="$itemsymbol='bullet'">&#x2022;</xsl:when>
+ <xsl:when test="$itemsymbol='endash'">&#x2013;</xsl:when>
+ <xsl:when test="$itemsymbol='emdash'">&#x2014;</xsl:when>
+ <!-- Some of these may work in your XSL-FO processor and fonts -->
+ <!--
+ <xsl:when test="$itemsymbol='square'">&#x25A0;</xsl:when>
+ <xsl:when test="$itemsymbol='box'">&#x25A0;</xsl:when>
+ <xsl:when test="$itemsymbol='smallblacksquare'">&#x25AA;</xsl:when>
+ <xsl:when test="$itemsymbol='circle'">&#x25CB;</xsl:when>
+ <xsl:when test="$itemsymbol='opencircle'">&#x25CB;</xsl:when>
+ <xsl:when test="$itemsymbol='whitesquare'">&#x25A1;</xsl:when>
+ <xsl:when test="$itemsymbol='smallwhitesquare'">&#x25AB;</xsl:when>
+ <xsl:when test="$itemsymbol='round'">&#x25CF;</xsl:when>
+ <xsl:when test="$itemsymbol='blackcircle'">&#x25CF;</xsl:when>
+ <xsl:when test="$itemsymbol='whitebullet'">&#x25E6;</xsl:when>
+ <xsl:when test="$itemsymbol='triangle'">&#x2023;</xsl:when>
+ <xsl:when test="$itemsymbol='point'">&#x203A;</xsl:when>
+ <xsl:when test="$itemsymbol='hand'"><fo:inline
+ font-family="Wingdings 2">A</fo:inline></xsl:when>
+ -->
+ <xsl:otherwise>&#x2022;</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="pi-label-width">
+ <xsl:call-template name="pi.dbfo_label-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="label-width">
+ <xsl:choose>
+ <xsl:when test="$pi-label-width = ''">
+ <xsl:value-of select="$orderedlist.label.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$pi-label-width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:if test="title">
+ <xsl:apply-templates select="title" mode="list.title.mode"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::listitem
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::listitem)]
+ |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <xsl:variable name="content">
+ <xsl:apply-templates
+ select="listitem
+ |comment()[preceding-sibling::listitem]
+ |processing-instruction()[preceding-sibling::listitem]"/>
+ </xsl:variable>
+
+ <!-- nested lists don't add extra list-block spacing -->
+ <xsl:choose>
+ <xsl:when test="ancestor::listitem">
+ <fo:list-block id="{$id}" xsl:use-attribute-sets="orderedlist.properties">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:value-of select="$label-width"/>
+ </xsl:attribute>
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:list-block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing orderedlist.properties">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:value-of select="$label-width"/>
+ </xsl:attribute>
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:list-block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:variable name="item.contents">
+ <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="orderedlist.label.properties">
+ <fo:block>
+ <xsl:apply-templates select="." mode="item-number"/>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:list-item-body>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="parent::*/@spacing = 'compact'">
+ <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$item.contents"/>
+ </fo:list-item>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$item.contents"/>
+ </fo:list-item>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="listitem/*[1][local-name()='para' or
+ local-name()='simpara' or
+ local-name()='formalpara']
+ |glossdef/*[1][local-name()='para' or
+ local-name()='simpara' or
+ local-name()='formalpara']
+ |step/*[1][local-name()='para' or
+ local-name()='simpara' or
+ local-name()='formalpara']
+ |callout/*[1][local-name()='para' or
+ local-name()='simpara' or
+ local-name()='formalpara']"
+ priority="2">
+ <fo:block>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_list-presentation"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates select="." mode="vl.as.list"/>
+ </xsl:when>
+ <xsl:when test="$presentation = 'blocks'">
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+ </xsl:when>
+ <xsl:when test="$variablelist.as.blocks != 0">
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="vl.as.list"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="variablelist" mode="vl.as.list">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbfo_term-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="termlength">
+ <xsl:choose>
+ <xsl:when test="$term-width != ''">
+ <xsl:value-of select="$term-width"/>
+ </xsl:when>
+ <xsl:when test="@termlength">
+ <xsl:variable name="termlength.is.number">
+ <xsl:value-of select="@termlength + 0"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string($termlength.is.number) = 'NaN'">
+ <!-- if the term length isn't just a number, assume it's a measurement -->
+ <xsl:value-of select="@termlength"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@termlength"/>
+ <xsl:choose>
+ <!-- workaround for passivetex lack of support for non-constant expressions -->
+ <xsl:when test="$passivetex.extensions != 0">
+ <xsl:text>em</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>em * 0.60</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="longest.term">
+ <xsl:with-param name="terms" select="varlistentry/term"/>
+ <xsl:with-param name="maxlength" select="$variablelist.max.termlength"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <!-- workaround for passivetex lack of support for non-constant expressions -->
+ <xsl:when test="$passivetex.extensions != 0">
+ <xsl:text>em</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>em * 0.60</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>term width: </xsl:text>
+ <xsl:value-of select="$termlength"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="label-separation">1em</xsl:variable>
+ <xsl:variable name="distance-between-starts">
+ <xsl:choose>
+ <!-- workaround for passivetex lack of support for non-constant expressions -->
+ <xsl:when test="$passivetex.extensions != 0">
+ <xsl:value-of select="$termlength"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$termlength"/>
+ <xsl:text>+</xsl:text>
+ <xsl:value-of select="$label-separation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="title">
+ <xsl:apply-templates select="title" mode="list.title.mode"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::varlistentry
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::varlistentry)]
+ |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+
+ <xsl:variable name="content">
+ <xsl:apply-templates mode="vl.as.list"
+ select="varlistentry
+ |comment()[preceding-sibling::varlistentry]
+ |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </xsl:variable>
+
+ <!-- nested lists don't add extra list-block spacing -->
+ <xsl:choose>
+ <xsl:when test="ancestor::listitem">
+ <fo:list-block id="{$id}"
+ provisional-distance-between-starts=
+ "{$distance-between-starts}"
+ provisional-label-separation="{$label-separation}">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:list-block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-block id="{$id}"
+ provisional-distance-between-starts=
+ "{$distance-between-starts}"
+ provisional-label-separation="{$label-separation}"
+ xsl:use-attribute-sets="list.block.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </fo:list-block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="longest.term">
+ <xsl:param name="longest" select="0"/>
+ <xsl:param name="terms" select="."/>
+ <xsl:param name="maxlength" select="-1"/>
+
+ <!-- Process out any indexterms in the term -->
+ <xsl:variable name="term.text">
+ <xsl:apply-templates select="$terms[1]"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$longest &gt; $maxlength and $maxlength &gt; 0">
+ <xsl:value-of select="$maxlength"/>
+ </xsl:when>
+ <xsl:when test="not($terms)">
+ <xsl:value-of select="$longest"/>
+ </xsl:when>
+ <xsl:when test="string-length($term.text) &gt; $longest">
+ <xsl:call-template name="longest.term">
+ <xsl:with-param name="longest"
+ select="string-length($term.text)"/>
+ <xsl:with-param name="maxlength" select="$maxlength"/>
+ <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="longest.term">
+ <xsl:with-param name="longest" select="$longest"/>
+ <xsl:with-param name="maxlength" select="$maxlength"/>
+ <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="vl.as.list">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:variable name="item.contents">
+ <fo:list-item-label end-indent="label-end()" text-align="start">
+ <fo:block xsl:use-attribute-sets="variablelist.term.properties">
+ <xsl:apply-templates select="term"/>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates select="listitem"/>
+ </fo:block>
+ </fo:list-item-body>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="parent::*/@spacing = 'compact'">
+ <fo:list-item id="{$id}"
+ xsl:use-attribute-sets="compact.list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$item.contents"/>
+ </fo:list-item>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$item.contents"/>
+ </fo:list-item>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="variablelist" mode="vl.as.blocks">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <!-- termlength is irrelevant -->
+
+ <xsl:if test="title">
+ <xsl:apply-templates select="title" mode="list.title.mode"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::varlistentry
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::varlistentry)]
+ |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+
+ <xsl:variable name="content">
+ <xsl:apply-templates mode="vl.as.blocks"
+ select="varlistentry
+ |comment()[preceding-sibling::varlistentry]
+ |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </xsl:variable>
+
+ <!-- nested lists don't add extra list-block spacing -->
+ <xsl:choose>
+ <xsl:when test="ancestor::listitem">
+ <fo:block id="{$id}">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}" xsl:use-attribute-sets="list.block.spacing">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="vl.as.blocks">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <fo:block id="{$id}" xsl:use-attribute-sets="variablelist.term.properties
+ list.item.spacing"
+ keep-together.within-column="always"
+ keep-with-next.within-column="always">
+ <xsl:apply-templates select="term"/>
+ </fo:block>
+
+ <fo:block>
+ <xsl:attribute name="margin-{$direction.align.start}">0.25in</xsl:attribute>
+ <xsl:apply-templates select="listitem"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="varlistentry/term">
+ <fo:inline>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:choose>
+ <xsl:when test="not(following-sibling::term)"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <fo:inline><xsl:value-of select="$variablelist.term.separator"/></fo:inline>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <fo:block/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="title" mode="list.title.mode">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="simplelist|simplelist[@type='vert']">
+ <!-- with no type specified, the default is 'vert' -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis"
+ select="processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'list-width'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:table id="{$id}" xsl:use-attribute-sets="normal.para.spacing">
+
+ <xsl:choose>
+ <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0">
+ <xsl:attribute name="table-layout">auto</xsl:attribute>
+ <xsl:if test="$explicit.table.width != ''">
+ <xsl:attribute name="width"><xsl:value-of
+ select="$explicit.table.width"/></xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ <xsl:attribute name="width"><xsl:value-of
+ select="$table.width"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="simplelist.table.columns">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']">
+ <!-- if dbchoice PI exists, use that to determine the choice separator -->
+ <!-- (that is, equivalent of "and" or "or" in current locale), or literal -->
+ <!-- value of "choice" otherwise -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:inline id="{$id}"><xsl:variable name="localized-choice-separator">
+ <xsl:choose>
+ <xsl:when test="processing-instruction('dbchoice')">
+ <xsl:call-template name="select.choice.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="member">
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="position() = last() - 1">
+ <xsl:if test="$localized-choice-separator != ''">
+ <xsl:value-of select="$localized-choice-separator"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each></fo:inline>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='horiz']">
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:call-template name="pi.dbfo_list-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:table id="{$id}" xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:choose>
+ <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0">
+ <xsl:attribute name="table-layout">auto</xsl:attribute>
+ <xsl:if test="$explicit.table.width != ''">
+ <xsl:attribute name="width"><xsl:value-of
+ select="$explicit.table.width"/></xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ <xsl:attribute name="width"><xsl:value-of
+ select="$table.width"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="simplelist.table.columns">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template name="simplelist.table.columns">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="curcol" select="1"/>
+ <fo:table-column column-number="{$curcol}"
+ column-width="proportional-column-width(1)"/>
+ <xsl:if test="$curcol &lt; $cols">
+ <xsl:call-template name="simplelist.table.columns">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="curcol" select="$curcol + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+
+ <xsl:if test="$cell &lt;= count($members)">
+ <fo:table-row>
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </fo:table-row>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell + $cols"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <fo:table-cell>
+ <fo:block>
+ <xsl:if test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:if>
+ </fo:block>
+ </fo:table-cell>
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="rows"
+ select="floor((count($members)+$cols - 1) div $cols)"/>
+
+ <xsl:if test="$cell &lt;= $rows">
+ <fo:table-row>
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </fo:table-row>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="rows">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <fo:table-cell>
+ <fo:block>
+ <xsl:if test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:if>
+ </fo:block>
+ </fo:table-cell>
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell+$rows"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="member">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="procedure">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:variable name="preamble"
+ select="*[not(self::step
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::step)]
+ |processing-instruction()[not(preceding-sibling::step)]"/>
+
+ <xsl:variable name="steps"
+ select="step
+ |comment()[preceding-sibling::step]
+ |processing-instruction()[preceding-sibling::step]"/>
+
+ <fo:block id="{$id}" xsl:use-attribute-sets="procedure.properties list.block.spacing">
+ <xsl:if test="./title and $placement = 'before'">
+ <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
+ <!-- heading even though we called formal.object.heading. odd but true. -->
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-distance-between-starts="2em"
+ provisional-label-separation="0.2em">
+ <xsl:apply-templates select="$steps"/>
+ </fo:list-block>
+
+ <xsl:if test="./title and $placement != 'before'">
+ <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
+ <!-- heading even though we called formal.object.heading. odd but true. -->
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="procedure/title">
+</xsl:template>
+
+<xsl:template match="substeps">
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-distance-between-starts="2em"
+ provisional-label-separation="0.2em">
+ <xsl:apply-templates/>
+ </fo:list-block>
+</xsl:template>
+
+<xsl:template match="procedure/step|substeps/step">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block id="{$id}">
+ <!-- dwc: fix for one step procedures. Use a bullet if there's no step 2 -->
+ <xsl:choose>
+ <xsl:when test="count(../step) = 1">
+ <xsl:text>&#x2022;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="number">
+ <xsl:with-param name="recursive" select="0"/>
+ </xsl:apply-templates>.
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match="stepalternatives">
+ <fo:list-block provisional-distance-between-starts="2em"
+ provisional-label-separation="0.2em">
+ <xsl:apply-templates select="step"/>
+ </fo:list-block>
+</xsl:template>
+
+<xsl:template match="stepalternatives/step">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block id="{$id}">
+ <xsl:text>&#x2022;</xsl:text>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match="step/title">
+ <fo:block font-weight="bold"
+ keep-together.within-column="always"
+ keep-with-next.within-column="always">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="segmentedlist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_list-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <fo:block id="{$id}">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$presentation = 'list'">
+ <fo:block id="{$id}">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$segmentedlist.as.table != 0">
+ <fo:block id="{$id}">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="segmentedlist/title">
+ <xsl:apply-templates select="." mode="list.title.mode" />
+</xsl:template>
+
+<xsl:template match="segtitle">
+</xsl:template>
+
+<xsl:template match="segtitle" mode="segtitle-in-seg">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seglistitem">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <fo:block id="{$id}">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="seg">
+ <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
+ <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
+ <xsl:variable name="segtitles" select="$seglist/segtitle"/>
+
+ <!--
+ Note: segtitle is only going to be the right thing in a well formed
+ SegmentedList. If there are too many Segs or too few SegTitles,
+ you'll get something odd...maybe an error
+ -->
+
+ <fo:block>
+ <fo:inline font-weight="bold">
+ <xsl:apply-templates select="$segtitles[$segnum=position()]"
+ mode="segtitle-in-seg"/>
+ <xsl:text>: </xsl:text>
+ </fo:inline>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="segmentedlist" mode="seglist-table">
+ <xsl:apply-templates select="title" mode="list.title.mode" />
+ <fo:table table-layout="fixed">
+ <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>
+ <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>
+ <fo:table-header start-indent="0pt" end-indent="0pt">
+ <fo:table-row>
+ <xsl:apply-templates select="segtitle" mode="seglist-table"/>
+ </fo:table-row>
+ </fo:table-header>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="segtitle" mode="seglist-table">
+ <fo:table-cell>
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+<xsl:template match="seglistitem" mode="seglist-table">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <fo:table-row id="{$id}">
+ <xsl:apply-templates mode="seglist-table"/>
+ </fo:table-row>
+</xsl:template>
+
+<xsl:template match="seg" mode="seglist-table">
+ <fo:table-cell>
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:table-cell>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="calloutlist">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="pi-label-width">
+ <xsl:call-template name="pi.dbfo_label-width"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}"
+ text-align="{$alignment}">
+ <!-- The above restores alignment altered by image align attribute -->
+ <xsl:if test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]"
+ mode="list.title.mode"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::callout or self::title or self::titleabbrev)]
+ |comment()[not(preceding-sibling::callout)]
+ |processing-instruction()[not(preceding-sibling::callout)]"/>
+
+ <fo:list-block space-before.optimum="1em"
+ space-before.minimum="0.8em"
+ space-before.maximum="1.2em"
+ provisional-distance-between-starts="2.2em"
+ provisional-label-separation="0.2em">
+
+ <xsl:if test="$pi-label-width != ''">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:value-of select="$pi-label-width"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="callout
+ |comment()[preceding-sibling::callout]
+ |processing-instruction()[preceding-sibling::callout]"/>
+ </fo:list-block>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="calloutlist/title">
+</xsl:template>
+
+<xsl:template match="callout">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <fo:list-item id="{$id}">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template name="callout.arearefs">
+ <xsl:param name="arearefs"></xsl:param>
+ <xsl:if test="$arearefs!=''">
+ <xsl:choose>
+ <xsl:when test="substring-before($arearefs,' ')=''">
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="$arearefs"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef"
+ select="substring-before($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs"
+ select="substring-after($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="callout.arearef">
+ <xsl:param name="arearef"></xsl:param>
+ <xsl:variable name="targets" select="key('id',$arearef)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($target)=0">
+ <xsl:value-of select="$arearef"/>
+ <xsl:text>: ???</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='co'">
+ <xsl:apply-templates select="$target" mode="callout-bug"/>
+ </xsl:when>
+ <xsl:when test="local-name($target)='areaset'">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($target)='area'">
+ <xsl:choose>
+ <xsl:when test="$target/parent::areaset">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target/parent::areaset"
+ mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="orderedlist-starting-number">
+ <xsl:param name="list" select="."/>
+ <xsl:variable name="pi-start">
+ <xsl:call-template name="pi.dbfo_start">
+ <xsl:with-param name="node" select="$list"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="output-orderedlist-starting-number">
+ <xsl:with-param name="list" select="$list"/>
+ <xsl:with-param name="pi-start" select="$pi-start"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl
new file mode 100644
index 0000000..6d7d470
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl
@@ -0,0 +1,140 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ exclude-result-prefixes="mml"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: math.xsl 7503 2007-10-08 01:57:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="inlineequation">
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:apply-templates select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']">
+ <xsl:with-param name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="alt">
+</xsl:template>
+
+<xsl:template match="mathphrase">
+ <fo:inline>
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<!-- "Support" for MathML -->
+
+<xsl:template match="mml:math" xmlns:mml="http://www.w3.org/1998/Math/MathML">
+ <xsl:choose>
+ <!-- * If user is using passivetex, we don't wrap the output in -->
+ <!-- * fo:instream-foreign-object (which passivetex doesn't support). -->
+ <xsl:when test="not($passivetex.extensions = 0)">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:instream-foreign-object>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </fo:instream-foreign-object>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="equation/graphic | informalequation/graphic">
+ <xsl:if test="$passivetex.extensions = 0 or $tex.math.in.alt = ''">
+ <fo:block>
+ <xsl:call-template name="process.image"/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="inlineequation/alt[@role='tex'] |
+ inlineequation/inlinemediaobject/textobject[@role='tex']" priority="1">
+ <xsl:param name="output.delims" select="1"/>
+ <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:processing-instruction name="xmltex">
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ </xsl:processing-instruction>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation/alt[@role='tex'] | informalequation/alt[@role='tex'] |
+ equation/mediaobject/textobject[@role='tex'] |
+ informalequation/mediaobject/textobject[@role='tex']" priority="1">
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:processing-instruction name="xmltex">
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ </xsl:processing-instruction>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="alt[@role='tex']">
+ <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:message>
+ Your equation is misplaced. It should be in inlineequation, equation or informalequation.
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="tex.math.output.delims">
+ <xsl:variable name="pi.delims">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select=".//processing-instruction('dbtex')"/>
+ <xsl:with-param name="attribute" select="'delims'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="result">
+ <xsl:choose>
+ <xsl:when test="$pi.delims = 'no'">0</xsl:when>
+ <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$result"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl
new file mode 100644
index 0000000..116a2ca
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl
@@ -0,0 +1,2569 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: pagesetup.xsl 8900 2010-08-29 20:04:32Z dleidert $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="body.fontset">
+ <xsl:value-of select="$body.font.family"/>
+ <xsl:if test="$body.font.family != ''
+ and $symbol.font.family != ''">,</xsl:if>
+ <xsl:value-of select="$symbol.font.family"/>
+</xsl:param>
+
+<xsl:param name="title.fontset">
+ <xsl:value-of select="$title.font.family"/>
+ <xsl:if test="$title.font.family != ''
+ and $symbol.font.family != ''">,</xsl:if>
+ <xsl:value-of select="$symbol.font.family"/>
+</xsl:param>
+
+<xsl:param name="margin.left.inner">
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:text> - </xsl:text>
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="setup.pagemasters">
+ <fo:layout-master-set>
+ <!-- blank pages -->
+ <fo:simple-page-master master-name="blank"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">blank</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body display-align="center"
+ margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}">
+ <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0">
+ <xsl:attribute name="region-name">blank-body</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-blank"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-blank"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- title pages -->
+ <fo:simple-page-master master-name="titlepage-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">titlepage-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="titlepage-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">titlepage-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="titlepage-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">titlepage-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- list-of-title pages -->
+ <fo:simple-page-master master-name="lot-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">lot-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.lot}"
+ column-count="{$column.count.lot}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="lot-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">lot-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.lot}"
+ column-count="{$column.count.lot}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="lot-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">lot-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.lot}"
+ column-count="{$column.count.lot}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- frontmatter pages -->
+ <fo:simple-page-master master-name="front-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">front-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.front}"
+ column-count="{$column.count.front}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="front-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">front-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.front}"
+ column-count="{$column.count.front}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="front-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">front-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.front}"
+ column-count="{$column.count.front}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- body pages -->
+ <fo:simple-page-master master-name="body-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">body-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="body-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">body-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="body-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">body-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- backmatter pages -->
+ <fo:simple-page-master master-name="back-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">back-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.back}"
+ column-count="{$column.count.back}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="back-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">back-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.back}"
+ column-count="{$column.count.back}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="back-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">back-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.back}"
+ column-count="{$column.count.back}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- index pages -->
+ <fo:simple-page-master master-name="index-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">index-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.index}"
+ column-count="{$column.count.index}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="index-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">index-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.index}"
+ column-count="{$column.count.index}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="index-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">index-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.index}"
+ column-count="{$column.count.index}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft blank pages -->
+ <fo:simple-page-master master-name="blank-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">blank-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-blank"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-blank"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft title pages -->
+ <fo:simple-page-master master-name="titlepage-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">titlepage-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="titlepage-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">titlepage-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="titlepage-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">titlepage-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft list-of-title pages -->
+ <fo:simple-page-master master-name="lot-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">lot-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.lot}"
+ column-count="{$column.count.lot}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="lot-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">lot-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.lot}"
+ column-count="{$column.count.lot}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="lot-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">lot-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.lot}"
+ column-count="{$column.count.lot}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft frontmatter pages -->
+ <fo:simple-page-master master-name="front-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">front-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.front}"
+ column-count="{$column.count.front}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="front-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">front-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.front}"
+ column-count="{$column.count.front}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="front-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">front-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.front}"
+ column-count="{$column.count.front}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft body pages -->
+ <fo:simple-page-master master-name="body-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">body-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="body-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">body-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="body-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">body-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft backmatter pages -->
+ <fo:simple-page-master master-name="back-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">back-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.back}"
+ column-count="{$column.count.back}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="back-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">back-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.back}"
+ column-count="{$column.count.back}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="back-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">back-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.back}"
+ column-count="{$column.count.back}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft index pages -->
+ <fo:simple-page-master master-name="index-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">index-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.index}"
+ column-count="{$column.count.index}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="index-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.inner"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">index-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.index}"
+ column-count="{$column.count.index}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="index-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">index-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.index}"
+ column-count="{$column.count.index}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+ </xsl:if>
+
+ <!-- setup for title page(s) -->
+ <fo:page-sequence-master master-name="titlepage">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="titlepage-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="titlepage-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">titlepage-even</xsl:when>
+ <xsl:otherwise>titlepage-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup for lots -->
+ <fo:page-sequence-master master-name="lot">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="lot-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="lot-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">lot-even</xsl:when>
+ <xsl:otherwise>lot-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup front matter -->
+ <fo:page-sequence-master master-name="front">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="front-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="front-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">front-even</xsl:when>
+ <xsl:otherwise>front-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup for body pages -->
+ <fo:page-sequence-master master-name="body">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="body-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="body-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">body-even</xsl:when>
+ <xsl:otherwise>body-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup back matter -->
+ <fo:page-sequence-master master-name="back">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="back-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="back-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">back-even</xsl:when>
+ <xsl:otherwise>back-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup back matter -->
+ <fo:page-sequence-master master-name="index">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="index-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="index-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">index-even</xsl:when>
+ <xsl:otherwise>index-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- setup for draft title page(s) -->
+ <fo:page-sequence-master master-name="titlepage-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank-draft"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="titlepage-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="titlepage-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">titlepage-even-draft</xsl:when>
+ <xsl:otherwise>titlepage-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup for draft lots -->
+ <fo:page-sequence-master master-name="lot-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank-draft"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="lot-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="lot-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">lot-even-draft</xsl:when>
+ <xsl:otherwise>lot-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup draft front matter -->
+ <fo:page-sequence-master master-name="front-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank-draft"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="front-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="front-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">front-even-draft</xsl:when>
+ <xsl:otherwise>front-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup for draft body pages -->
+ <fo:page-sequence-master master-name="body-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank-draft"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="body-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="body-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
+ <xsl:otherwise>body-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup draft back matter -->
+ <fo:page-sequence-master master-name="back-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank-draft"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="back-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="back-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">back-even-draft</xsl:when>
+ <xsl:otherwise>back-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- setup draft index pages -->
+ <fo:page-sequence-master master-name="index-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="blank-draft"
+ blank-or-not-blank="blank"/>
+ <fo:conditional-page-master-reference master-reference="index-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="index-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">index-even-draft</xsl:when>
+ <xsl:otherwise>index-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+ <xsl:call-template name="user.pagemasters"/>
+
+ </fo:layout-master-set>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="user.pagemasters"/> <!-- intentionally empty -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="select.pagemaster">
+ <xsl:param name="element" select="local-name(.)"/>
+ <xsl:param name="pageclass" select="''"/>
+
+ <xsl:variable name="pagemaster">
+ <xsl:choose>
+ <xsl:when test="$pageclass != ''">
+ <xsl:value-of select="$pageclass"/>
+ </xsl:when>
+ <xsl:when test="$pageclass = 'lot'">lot</xsl:when>
+ <xsl:when test="$element = 'dedication'">front</xsl:when>
+ <xsl:when test="$element = 'acknowledgements'">front</xsl:when>
+ <xsl:when test="$element = 'preface'">front</xsl:when>
+ <xsl:when test="$element = 'appendix'">back</xsl:when>
+ <xsl:when test="$element = 'glossary'">back</xsl:when>
+ <xsl:when test="$element = 'bibliography'">back</xsl:when>
+ <xsl:when test="$element = 'index'">index</xsl:when>
+ <xsl:when test="$element = 'colophon'">back</xsl:when>
+ <xsl:otherwise>body</xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$draft.mode = 'yes'">
+ <xsl:text>-draft</xsl:text>
+ </xsl:when>
+ <xsl:when test="$draft.mode = 'no'">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
+ <xsl:text>-draft</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="select.user.pagemaster">
+ <xsl:with-param name="element" select="$element"/>
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="default-pagemaster" select="$pagemaster"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="select.user.pagemaster">
+ <xsl:param name="element"/>
+ <xsl:param name="pageclass"/>
+ <xsl:param name="default-pagemaster"/>
+
+ <!-- by default, return the default. But if you've created your own
+ pagemasters in user.pagemasters, you might want to select one here. -->
+ <xsl:value-of select="$default-pagemaster"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="head.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$header.rule != 0">
+ <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
+ <xsl:attribute name="border-bottom-color">black</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="foot.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$footer.rule != 0">
+ <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">solid</xsl:attribute>
+ <xsl:attribute name="border-top-color">black</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="running.head.mode">
+ <xsl:param name="master-reference" select="'unknown'"/>
+ <xsl:param name="gentext-key" select="local-name(.)"/>
+
+ <!-- remove -draft from reference -->
+ <xsl:variable name="pageclass">
+ <xsl:choose>
+ <xsl:when test="contains($master-reference, '-draft')">
+ <xsl:value-of select="substring-before($master-reference, '-draft')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$master-reference"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:static-content flow-name="xsl-region-before-first">
+ <fo:block xsl:use-attribute-sets="header.content.properties">
+ <xsl:call-template name="header.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'first'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-before-odd">
+ <fo:block xsl:use-attribute-sets="header.content.properties">
+ <xsl:call-template name="header.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'odd'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-before-even">
+ <fo:block xsl:use-attribute-sets="header.content.properties">
+ <xsl:call-template name="header.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'even'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-before-blank">
+ <fo:block xsl:use-attribute-sets="header.content.properties">
+ <xsl:call-template name="header.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'blank'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+
+ <xsl:call-template name="footnote-separator"/>
+
+ <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0">
+ <xsl:call-template name="blank.page.content"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="footnote-separator">
+ <fo:static-content flow-name="xsl-footnote-separator">
+ <fo:block>
+ <fo:leader xsl:use-attribute-sets="footnote.sep.leader.properties"/>
+ </fo:block>
+ </fo:static-content>
+</xsl:template>
+
+<xsl:template name="blank.page.content">
+ <fo:static-content flow-name="blank-body">
+ <fo:block text-align="center"/>
+ </fo:static-content>
+</xsl:template>
+
+<xsl:template name="header.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all headers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table xsl:use-attribute-sets="header.table.properties">
+ <xsl:call-template name="head.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$header.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="start"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="$direction.align.start"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="$direction.align.end"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a header? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="header.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+<!--
+ <fo:block>
+ <xsl:value-of select="$pageclass"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$sequence"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$position"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$gentext-key"/>
+ </fo:block>
+-->
+
+ <fo:block>
+
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="$sequence = 'blank'">
+ <!-- nothing -->
+ </xsl:when>
+
+ <xsl:when test="$position='left'">
+ <!-- Same for odd, even, empty, and blank sequences -->
+ <xsl:call-template name="draft.text"/>
+ </xsl:when>
+
+ <xsl:when test="($sequence='odd' or $sequence='even') and $position='center'">
+ <xsl:if test="$pageclass != 'titlepage'">
+ <xsl:choose>
+ <xsl:when test="ancestor::book and ($double.sided != 0)">
+ <fo:retrieve-marker retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="$position='center'">
+ <!-- nothing for empty and blank sequences -->
+ </xsl:when>
+
+ <xsl:when test="$position='right'">
+ <!-- Same for odd, even, empty, and blank sequences -->
+ <xsl:call-template name="draft.text"/>
+ </xsl:when>
+
+ <xsl:when test="$sequence = 'first'">
+ <!-- nothing for first pages -->
+ </xsl:when>
+
+ <xsl:when test="$sequence = 'blank'">
+ <!-- nothing for blank pages -->
+ </xsl:when>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="header.footer.width">
+ <xsl:param name="location" select="'header'"/>
+ <xsl:param name="position" select="1"/>
+
+ <xsl:variable name="width.set">
+ <xsl:choose>
+ <xsl:when test="$location = 'header'">
+ <xsl:value-of select="normalize-space($header.column.widths)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($footer.column.widths)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$position = 1">
+ <xsl:value-of select="substring-before($width.set, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$position = 2">
+ <xsl:value-of select="substring-before(substring-after($width.set, ' '), ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-after(substring-after($width.set, ' '), ' ')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Make sure it is a number -->
+ <xsl:choose>
+ <xsl:when test = "$width = number($width)">
+ <xsl:value-of select="$width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Error: value in <xsl:value-of select="$location"/>.column.widths at position <xsl:value-of select="$position"/> is not a number.</xsl:message>
+ <xsl:text>1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="draft.text">
+ <xsl:choose>
+ <xsl:when test="$draft.mode = 'yes'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Draft'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$draft.mode = 'no'">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Draft'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="running.foot.mode">
+ <xsl:param name="master-reference" select="'unknown'"/>
+ <xsl:param name="gentext-key" select="local-name(.)"/>
+
+ <!-- remove -draft from reference -->
+ <xsl:variable name="pageclass">
+ <xsl:choose>
+ <xsl:when test="contains($master-reference, '-draft')">
+ <xsl:value-of select="substring-before($master-reference, '-draft')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$master-reference"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:static-content flow-name="xsl-region-after-first">
+ <fo:block xsl:use-attribute-sets="footer.content.properties">
+ <xsl:call-template name="footer.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'first'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-after-odd">
+ <fo:block xsl:use-attribute-sets="footer.content.properties">
+ <xsl:call-template name="footer.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'odd'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-after-even">
+ <fo:block xsl:use-attribute-sets="footer.content.properties">
+ <xsl:call-template name="footer.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'even'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-after-blank">
+ <fo:block xsl:use-attribute-sets="footer.content.properties">
+ <xsl:call-template name="footer.table">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="'blank'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+</xsl:template>
+
+<xsl:template name="footer.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all footers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table xsl:use-attribute-sets="footer.table.properties">
+ <xsl:call-template name="foot.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$footer.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="start"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="$direction.align.start"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="end"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="$direction.align.end"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a footer? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+<!--
+ <fo:block>
+ <xsl:value-of select="$pageclass"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$sequence"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$position"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$gentext-key"/>
+ </fo:block>
+-->
+
+ <fo:block>
+ <!-- pageclass can be front, body, back -->
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $position='center'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0 and $position = 'left'">
+ <fo:page-number/>
+ </xsl:when>
+ <xsl:when test="$double.sided = 0 and $position = 'center'">
+ <fo:page-number/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="page.number.format">
+ <xsl:param name="element" select="local-name(.)"/>
+ <xsl:param name="master-reference" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="$element = 'toc' and self::book">i</xsl:when>
+ <xsl:when test="$element = 'preface'">i</xsl:when>
+ <xsl:when test="$element = 'dedication'">i</xsl:when>
+ <xsl:when test="$element = 'acknowledgements'">i</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="initial.page.number">
+ <xsl:param name="element" select="local-name(.)"/>
+ <xsl:param name="master-reference" select="''"/>
+
+ <!-- Select the first content that the stylesheet places
+ after the TOC -->
+ <xsl:variable name="first.book.content"
+ select="ancestor::book/*[
+ not(self::title or
+ self::subtitle or
+ self::titleabbrev or
+ self::bookinfo or
+ self::info or
+ self::dedication or
+ self::acknowledgements or
+ self::preface or
+ self::toc or
+ self::lot)][1]"/>
+ <xsl:choose>
+ <!-- double-sided output -->
+ <xsl:when test="$double.sided != 0">
+ <xsl:choose>
+ <xsl:when test="$element = 'toc'">auto-odd</xsl:when>
+ <xsl:when test="$element = 'book'">1</xsl:when>
+ <!-- preface typically continues TOC roman numerals -->
+ <!-- Change page.number.format if not -->
+ <xsl:when test="$element = 'preface'">auto-odd</xsl:when>
+ <xsl:when test="($element = 'dedication' or $element = 'article')
+ and not(preceding::chapter
+ or preceding::preface
+ or preceding::appendix
+ or preceding::article
+ or preceding::dedication
+ or parent::part
+ or parent::reference)">1</xsl:when>
+ <xsl:when test="generate-id($first.book.content) =
+ generate-id(.)">1</xsl:when>
+ <xsl:otherwise>auto-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- single-sided output -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$element = 'toc'">auto</xsl:when>
+ <xsl:when test="$element = 'book'">1</xsl:when>
+ <xsl:when test="$element = 'preface'">auto</xsl:when>
+ <xsl:when test="($element = 'dedication' or $element = 'article') and
+ not(preceding::chapter
+ or preceding::preface
+ or preceding::appendix
+ or preceding::article
+ or preceding::dedication
+ or parent::part
+ or parent::reference)">1</xsl:when>
+ <xsl:when test="generate-id($first.book.content) =
+ generate-id(.)">1</xsl:when>
+ <xsl:otherwise>auto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="force.page.count">
+ <xsl:param name="element" select="local-name(.)"/>
+ <xsl:param name="master-reference" select="''"/>
+
+ <xsl:choose>
+ <!-- double-sided output -->
+ <xsl:when test="$double.sided != 0">end-on-even</xsl:when>
+ <!-- single-sided output -->
+ <xsl:otherwise>no-force</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="set.flow.properties">
+ <xsl:param name="element" select="local-name(.)"/>
+ <xsl:param name="master-reference" select="''"/>
+
+ <!-- This template is called after each <fo:flow> starts. -->
+ <!-- Customize this template to set attributes on fo:flow -->
+
+ <!-- remove -draft from reference -->
+ <xsl:variable name="pageclass">
+ <xsl:choose>
+ <xsl:when test="contains($master-reference, '-draft')">
+ <xsl:value-of select="substring-before($master-reference, '-draft')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$master-reference"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0">
+ <!-- body.start.indent does not work well with these processors -->
+ </xsl:when>
+ <xsl:when test="starts-with($pageclass, 'body') or
+ starts-with($pageclass, 'lot') or
+ starts-with($pageclass, 'front') or
+ $element = 'preface' or
+ (starts-with($pageclass, 'back') and
+ $element = 'appendix')">
+ <xsl:attribute name="start-indent">
+ <xsl:value-of select="$body.start.indent"/>
+ </xsl:attribute>
+ <xsl:attribute name="end-indent">
+ <xsl:value-of select="$body.end.indent"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml
new file mode 100644
index 0000000..d179d36
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml
@@ -0,0 +1,12445 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0">
+<info>
+<title>FO Parameter Reference</title>
+<releaseinfo role="meta">
+$Id: param.xweb 8543 2009-12-02 06:05:24Z bobstayton $
+</releaseinfo>
+<author>
+ <personname>
+ <surname>Walsh</surname>
+ <firstname>Norman</firstname>
+ </personname>
+</author>
+<copyright>
+ <year>1999</year>
+ <year>2000</year>
+ <year>2001</year>
+ <year>2002</year>
+ <year>2003</year>
+ <year>2004</year>
+ <year>2005</year>
+ <year>2006</year>
+ <year>2007</year>
+ <holder>Norman Walsh</holder>
+</copyright>
+<abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook XSL FO stylesheets (for generating
+ XSL-FO output destined for final print/PDF output).</para>
+</abstract>
+</info>
+<reference xml:id="admons"><title>Admonitions</title>
+<refentry version="5.0" xml:id="admon.graphics">
+<refmeta>
+<refentrytitle>admon.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics</refname>
+<refpurpose>Use graphics in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.graphics.frag">
+&lt;xsl:param name="admon.graphics" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented in an alternate style that uses
+a graphic. Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admon.graphics.extension">
+<refmeta>
+<refentrytitle>admon.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.extension</refname>
+<refpurpose>Filename extension for admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.graphics.extension.frag">
+&lt;xsl:param name="admon.graphics.extension"&gt;.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on admonition graphics.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admon.graphics.path">
+<refmeta>
+<refentrytitle>admon.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.path</refname>
+<refpurpose>Path to admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.graphics.path.frag">&lt;xsl:param name="admon.graphics.path"&gt;images/&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory containing the admonition graphics
+(caution.png, important.png etc). This location is normally relative
+to the output html directory. See <parameter>base.dir</parameter></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admon.textlabel">
+<refmeta>
+<refentrytitle>admon.textlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.textlabel</refname>
+<refpurpose>Use text label in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.textlabel.frag">
+&lt;xsl:param name="admon.textlabel" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented with a generated
+text label such as Note or Warning in the appropriate language.
+If zero, such labels are turned off, but any title child
+of the admonition element are still output.
+The default value is 1.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admonition.title.properties">
+
+<refmeta>
+ <refentrytitle>admonition.title.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admonition.title.properties</refname>
+<refpurpose>To set the style for admonitions titles.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admonition.title.properties.frag">
+&lt;xsl:attribute-set name="admonition.title.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;14pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want admonitions titles styled? </para>
+<para>Set the font-size, weight etc to the style required.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admonition.properties">
+<refmeta>
+ <refentrytitle>admonition.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admonition.properties</refname>
+<refpurpose>To set the style for admonitions.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admonition.properties.frag">&lt;xsl:attribute-set name="admonition.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want admonitions styled? </para>
+<para>Set the font-size, weight, etc. to the style required</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="graphical.admonition.properties">
+<refmeta>
+<refentrytitle>graphical.admonition.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphical.admonition.properties</refname>
+<refpurpose>To add properties to the outer block of a graphical admonition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="graphical.admonition.properties.frag">&lt;xsl:attribute-set name="graphical.admonition.properties"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the outer block containing the
+entire graphical admonition, including its title.
+It is used when the parameter
+<parameter>admon.graphics</parameter> is set to nonzero.
+Use this attribute-set to set the space above and below,
+and any indent for the whole admonition.</para>
+
+<para>In addition to these properties, a graphical admonition
+also applies the <parameter>admonition.title.properties</parameter>
+attribute-set to the title, and applies the
+<parameter>admonition.properties</parameter> attribute-set
+to the rest of the content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="nongraphical.admonition.properties">
+<refmeta>
+<refentrytitle>nongraphical.admonition.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nongraphical.admonition.properties</refname>
+<refpurpose>To add properties to the outer block of a nongraphical admonition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="nongraphical.admonition.properties.frag">&lt;xsl:attribute-set name="nongraphical.admonition.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0.25in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;0.25in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the outer block containing the
+entire nongraphical admonition, including its title.
+It is used when the parameter
+<parameter>admon.graphics</parameter> is set to zero.
+Use this attribute-set to set the space above and below,
+and any indent for the whole admonition.</para>
+
+<para>In addition to these properties, a nongraphical admonition
+also applies the <parameter>admonition.title.properties</parameter>
+attribute-set to the title, and the
+<parameter>admonition.properties</parameter> attribute-set
+to the rest of the content.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="callouts"><title>Callouts</title>
+<refentry version="5.0" xml:id="callout.defaultcolumn">
+<refmeta>
+<refentrytitle>callout.defaultcolumn</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.defaultcolumn</refname>
+<refpurpose>Indicates what column callouts appear in by default</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.defaultcolumn.frag">
+&lt;xsl:param name="callout.defaultcolumn"&gt;60&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a callout does not identify a column (for example, if it uses
+the <literal>linerange</literal> <tag class="attribute">unit</tag>),
+it will appear in the default column.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics">
+<refmeta>
+<refentrytitle>callout.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics</refname>
+<refpurpose>Use graphics for callouts?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.frag">
+&lt;xsl:param name="callout.graphics" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, callouts are presented with graphics (e.g., reverse-video
+circled numbers instead of "(1)", "(2)", etc.).
+Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics.extension">
+<refmeta>
+<refentrytitle>callout.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.extension</refname>
+<refpurpose>Filename extension for callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.extension.frag">
+
+&lt;xsl:param name="callout.graphics.extension"&gt;.svg&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Sets the filename extension to use on callout graphics. </para>
+
+<itemizedlist>
+<para>The Docbook XSL distribution provides callout graphics in the following formats:</para>
+<listitem><para>SVG (extension: <filename class="extension">.svg</filename>)</para></listitem>
+<listitem><para>PNG (extension: <filename class="extension">.png</filename>)</para></listitem>
+<listitem><para>GIF (extension: <filename class="extension">.gif</filename>)</para></listitem>
+</itemizedlist>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics.number.limit">
+<refmeta>
+<refentrytitle>callout.graphics.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.number.limit</refname>
+<refpurpose>Number of the largest callout graphic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.number.limit.frag">
+
+&lt;xsl:param name="callout.graphics.number.limit"&gt;30&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is non-zero, graphics
+are used to represent callout numbers instead of plain text. The value
+of <parameter>callout.graphics.number.limit</parameter> is the largest
+number for which a graphic exists. If the callout number exceeds this
+limit, the default presentation "(plain text instead of a graphic)"
+will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics.path">
+<refmeta>
+<refentrytitle>callout.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.path</refname>
+<refpurpose>Path to callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.path.frag">
+&lt;xsl:param name="callout.graphics.path"&gt;images/callouts/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory holding the callout graphics. his
+location is normally relative to the output html directory. see
+base.dir. Always terminate the directory with / since the graphic file
+is appended to this string, hence needs the separator.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.icon.size">
+<refmeta>
+<refentrytitle>callout.icon.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.icon.size</refname>
+<refpurpose>Specifies the size of callout marker icons</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.icon.size.frag">
+&lt;xsl:param name="callout.icon.size"&gt;7pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the size of the callout marker icons.
+The default size is 7 points.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.unicode">
+<refmeta>
+<refentrytitle>callout.unicode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode</refname>
+<refpurpose>Use Unicode characters rather than images for callouts.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.unicode.frag">&lt;xsl:param name="callout.unicode" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.unicode.font">
+<refmeta>
+<refentrytitle>callout.unicode.font</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.font</refname>
+<refpurpose>Specify a font for Unicode glyphs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.unicode.font.frag">
+&lt;xsl:param name="callout.unicode.font"&gt;ZapfDingbats&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The name of the font to specify around Unicode callout glyphs.
+If set to the empty string, no font change will occur.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.unicode.number.limit">
+<refmeta>
+<refentrytitle>callout.unicode.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.number.limit</refname>
+<refpurpose>Number of the largest unicode callout character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.unicode.number.limit.frag">
+&lt;xsl:param name="callout.unicode.number.limit"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.number.limit</parameter>
+is
+the largest number for which a unicode character exists. If the callout number
+exceeds this limit, the default presentation "(nnn)" will always
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.unicode.start.character">
+<refmeta>
+<refentrytitle>callout.unicode.start.character</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.start.character</refname>
+<refpurpose>First Unicode character to use, decimal value.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.unicode.start.character.frag">
+&lt;xsl:param name="callout.unicode.start.character"&gt;10102&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is zero and <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.start.character</parameter>
+is the decimal unicode value used for callout number one. Currently,
+only 10102 is supported in the stylesheets for this parameter.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callouts.extension">
+<refmeta>
+<refentrytitle>callouts.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callouts.extension</refname>
+<refpurpose>Enable the callout extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callouts.extension.frag">
+&lt;xsl:param name="callouts.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The callouts extension processes <tag>areaset</tag>
+elements in <tag>programlistingco</tag> and other text-based
+callout elements.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="toc_index"><title>ToC/LoT/Index Generation</title>
+<refentry version="5.0" xml:id="autotoc.label.separator">
+<refmeta>
+<refentrytitle>autotoc.label.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.separator</refname>
+<refpurpose>Separator between labels and titles in the ToC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="autotoc.label.separator.frag">
+&lt;xsl:param name="autotoc.label.separator"&gt;. &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>String used to separate labels and titles in a table of contents.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="process.empty.source.toc">
+<refmeta>
+<refentrytitle>process.empty.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.empty.source.toc</refname>
+<refpurpose>Generate automated TOC if <tag>toc</tag> element occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="process.empty.source.toc.frag">&lt;xsl:param name="process.empty.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that if an empty <tag>toc</tag> element is found in a
+source document, an automated TOC is generated at this point in the
+document.
+<note>
+ <para>Depending on what the value of the
+ <parameter>generate.toc</parameter> parameter is, setting this
+ parameter to <literal>1</literal> could result in generation of
+ duplicate automated TOCs. So the
+ <parameter>process.empty.source.toc</parameter> is primarily useful
+ as an "override": by placing an empty <tag>toc</tag> in your
+ document and setting this parameter to <literal>1</literal>, you can
+ force a TOC to be generated even if <tag>generate.toc</tag>
+ says not to.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="process.source.toc">
+<refmeta>
+<refentrytitle>process.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.source.toc</refname>
+<refpurpose>Process a non-empty <tag>toc</tag> element if it occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="process.source.toc.frag">&lt;xsl:param name="process.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that the contents of a non-empty "hard-coded"
+<tag>toc</tag> element in a source document are processed to
+generate a TOC in output.
+<note>
+ <para>This parameter has no effect on automated generation of
+ TOCs. An automated TOC may still be generated along with the
+ "hard-coded" TOC. To suppress automated TOC generation, adjust the
+ value of the <parameter>generate.toc</parameter> paramameter.</para>
+
+ <para>The <tag>process.source.toc</tag> parameter also has
+ no effect if the <tag>toc</tag> element is empty; handling
+ for empty <tag>toc</tag> is controlled by the
+ <parameter>process.empty.source.toc</parameter> parameter.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.toc">
+<refmeta>
+<refentrytitle>generate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.toc</refname>
+<refpurpose>Control generation of ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.toc.frag">
+
+&lt;xsl:param name="generate.toc"&gt;
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has a structured value. It is a table of space-delimited
+path/value pairs. Each path identifies some element in the source document
+using a restricted subset of XPath (only the implicit child axis, no wildcards,
+no predicates). Paths can be either relative or absolute.</para>
+
+<para>When processing a particular element, the stylesheets consult this table to
+determine if a ToC (or LoT(s)) should be generated.</para>
+
+<para>For example, consider the entry:</para>
+
+<screen>book toc,figure</screen>
+
+<para>This indicates that whenever a <tag>book</tag> is formatted, a
+Table Of Contents and a List of Figures should be generated. Similarly,</para>
+
+<screen>/chapter toc</screen>
+
+<para>indicates that whenever a document <emphasis>that has a root
+of</emphasis> <tag>chapter</tag> is formatted, a Table of
+Contents should be generated. The entry <literal>chapter</literal> would match
+all chapters, but <literal>/chapter</literal> matches only <tag>chapter</tag>
+document elements.</para>
+
+<para>Generally, the longest match wins. So, for example, if you want to distinguish
+articles in books from articles in parts, you could use these two entries:</para>
+
+<screen>book/article toc,figure
+part/article toc</screen>
+
+<para>Note that an article in a part can never match a <literal>book/article</literal>,
+so if you want nothing to be generated for articles in parts, you can simply leave
+that rule out.</para>
+
+<para>If you want to leave the rule in, to make it explicit that you're turning
+something off, use the value <quote>nop</quote>. For example, the following
+entry disables ToCs and LoTs for articles:</para>
+
+<screen>article nop</screen>
+
+<para>Do not simply leave the word <quote>article</quote> in the file
+without a matching value. That'd be just begging the silly little
+path/value parser to get confused.</para>
+
+<para>Section ToCs are further controlled by the
+<parameter>generate.section.toc.level</parameter> parameter.
+For a given section level to have a ToC, it must have both an entry in
+<parameter>generate.toc</parameter> and be within the range enabled by
+<parameter>generate.section.toc.level</parameter>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.index">
+<refmeta>
+<refentrytitle>generate.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.index</refname>
+<refpurpose>Do you want an index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.index.frag">&lt;xsl:param name="generate.index" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify if an index should be generated. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="make.index.markup">
+<refmeta>
+<refentrytitle>make.index.markup</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.index.markup</refname>
+<refpurpose>Generate XML index markup in the index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.index.markup.frag">
+&lt;xsl:param name="make.index.markup" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter enables a very neat trick for getting properly
+merged, collated back-of-the-book indexes. G. Ken Holman suggested
+this trick at Extreme Markup Languages 2002 and I'm indebted to him
+for it.</para>
+
+<para>Jeni Tennison's excellent code in
+<filename>autoidx.xsl</filename> does a great job of merging and
+sorting <tag>indexterm</tag>s in the document and building a
+back-of-the-book index. However, there's one thing that it cannot
+reasonably be expected to do: merge page numbers into ranges. (I would
+not have thought that it could collate and suppress duplicate page
+numbers, but in fact it appears to manage that task somehow.)</para>
+
+<para>Ken's trick is to produce a document in which the index at the
+back of the book is <quote>displayed</quote> in XML. Because the index
+is generated by the FO processor, all of the page numbers have been resolved.
+It's a bit hard to explain, but what it boils down to is that instead of having
+an index at the back of the book that looks like this:</para>
+
+<blockquote>
+<formalpara><info><title>A</title></info>
+<para>ap1, 1, 2, 3</para>
+</formalpara>
+</blockquote>
+
+<para>you get one that looks like this:</para>
+
+<blockquote>
+<programlisting>&lt;indexdiv&gt;A&lt;/indexdiv&gt;
+&lt;indexentry&gt;
+&lt;primaryie&gt;ap1&lt;/primaryie&gt;,
+&lt;phrase role="pageno"&gt;1&lt;/phrase&gt;,
+&lt;phrase role="pageno"&gt;2&lt;/phrase&gt;,
+&lt;phrase role="pageno"&gt;3&lt;/phrase&gt;
+&lt;/indexentry&gt;</programlisting>
+</blockquote>
+
+<para>After building a PDF file with this sort of odd-looking index, you can
+extract the text from the PDF file and the result is a proper index expressed in
+XML.</para>
+
+<para>Now you have data that's amenable to processing and a simple Perl script
+(such as <filename>fo/pdf2index</filename>) can
+merge page ranges and generate a proper index.</para>
+
+<para>Finally, reformat your original document using this literal index instead of
+an automatically generated one and <quote>bingo</quote>!</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.method">
+<refmeta>
+<refentrytitle>index.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">basic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kosek</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kimber</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.method</refname>
+<refpurpose>Select method used to group index entries in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.method.frag">
+&lt;xsl:param name="index.method"&gt;basic&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter lets you select which method to use for sorting and grouping
+ index entries in an index.
+Indexes in Latin-based languages that have accented characters typically
+sort together accented words and unaccented words.
+Thus <quote>&#193;</quote> (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together
+with <quote>A</quote> (U+0041 LATIN CAPITAL LETTER A), so both would appear in the <quote>A</quote>
+section of the index.
+Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet)
+and languages using ideographic chararacters (such as Japanese)
+require grouping specific to the languages and alphabets.
+</para>
+
+<para>The default indexing method is limited.
+It can group accented characters in Latin-based languages only.
+It cannot handle non-Latin alphabets or ideographic languages.
+The other indexing methods require extensions of one type or
+another, and do not work with
+all XSLT processors, which is why they are not used by default.</para>
+
+<para>The three choices for indexing method are:</para>
+<variablelist>
+<varlistentry>
+<term><literal>basic</literal></term>
+<listitem>
+<para>
+(default) Sort and groups words based only on the Latin alphabet.
+Words with accented Latin letters will group and sort with
+their respective primary letter, but
+words in non-Latin alphabets will be
+put in the <quote>Symbols</quote> section of the index.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kosek</literal></term>
+<listitem>
+<para>
+This method sorts and groups words based on letter groups configured in
+the DocBook locale file for the given language.
+See, for example, the French locale file <filename>common/fr.xml</filename>.
+This method requires that the XSLT processor
+supports the EXSLT extensions (most do).
+It also requires support for using
+user-defined functions in xsl:key (xsltproc does not).
+</para>
+<para>This method is suitable for any language for which you can
+list all the individual characters that should appear
+in each letter group in an index.
+It is probably not practical to use it for ideographic languages
+such as Chinese that have hundreds or thousands of characters.
+</para>
+
+<para>To use the kosek method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use a processor that supports its extensions, such as
+Saxon 6 or Xalan (xsltproc and Saxon 8 do not).
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kosek</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kosek.xsl</filename> or
+<filename>html/autoidx-kosek.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kimber</literal></term>
+<listitem>
+<para>
+This method uses extensions to the Saxon processor to implement
+sophisticated indexing processes. It uses its own
+configuration file, which can include information for any number of
+languages. Each language's configuration can group
+words using one of two processes. In the
+enumerated process similar to that used in the kosek method,
+you indicate the groupings character-by-character.
+In the between-key process, you specify the
+break-points in the sort order that should start a new group.
+The latter configuration is useful for ideographic languages
+such as Chinese, Japanese, and Korean.
+You can also define your own collation algorithms and how you
+want mixed Latin-alphabet words sorted.</para>
+<itemizedlist>
+<listitem>
+<para>For a whitepaper describing the extensions, see:
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf">http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf</link>.
+</para>
+</listitem>
+<listitem>
+<para>To download the extension library, see
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport">http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</link>.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>To use the kimber method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use Saxon (version 6 or 8) as your XSLT processor.
+</para>
+</listitem>
+<listitem>
+<para>Install and configure the Innodata Isogen library, using
+the documentation that comes with it.
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kimber</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kimber.xsl</filename> or
+<filename>html/autoidx-kimber.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.on.type">
+<refmeta>
+<refentrytitle>index.on.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.type</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">type</tag>
+attribute value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.on.type.frag">
+&lt;xsl:param name="index.on.type" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">type</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching <tag class="attribute">type</tag> attribute value.
+If an <tag>index</tag> has no <tag class="attribute">type</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+
+<para>
+If <literal>index.on.type</literal> is zero, then the
+<tag class="attribute">type</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>For those using DocBook version 4.2 or earlier,
+the <tag class="attribute">type</tag> attribute is not available
+for index terms. However, you can achieve the same
+effect by using the <tag class="attribute">role</tag> attribute
+in the same manner on <tag>indexterm</tag>
+and <tag>index</tag>, and setting the stylesheet parameter
+<parameter>index.on.role</parameter> to a nonzero value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.on.role">
+<refmeta>
+<refentrytitle>index.on.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.role</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">role</tag> value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.on.role.frag">
+&lt;xsl:param name="index.on.role" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">role</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching role value.
+If an <tag>index</tag> has no <tag class="attribute">role</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+<para>
+If <literal>index.on.role</literal> is zero, then the
+<tag class="attribute">role</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>If you are using DocBook version 4.3 or later, you should
+use the <tag class="attribute">type</tag> attribute instead of <tag class="attribute">role</tag>
+on <tag>indexterm</tag> and <tag>index</tag>,
+and set the <parameter>index.on.type</parameter> to a nonzero
+value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.preferred.page.properties">
+<refmeta>
+<refentrytitle>index.preferred.page.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.preferred.page.properties</refname>
+<refpurpose>Properties used to emphasize page number references for
+significant index terms</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.preferred.page.properties.frag">
+&lt;xsl:attribute-set name="index.preferred.page.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties used to emphasize page number references for
+significant index terms (<tag class="attribute">significance</tag>=<tag class="attvalue">preferred</tag>). Currently works only with
+XEP.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.entry.properties">
+<refmeta>
+<refentrytitle>index.entry.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.entry.properties</refname>
+<refpurpose>Properties applied to the formatted entries
+in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.entry.properties.frag">
+&lt;xsl:attribute-set name="index.entry.properties"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the block containing
+the entries in a letter division in an index. It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all index entries.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.div.title.properties">
+<refmeta>
+<refentrytitle>index.div.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.div.title.properties</refname>
+<refpurpose>Properties associated with the letter headings in an
+index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.div.title.properties.frag">
+&lt;xsl:attribute-set name="index.div.title.properties"&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;14.4pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$title.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;&lt;xsl:value-of select="concat($body.font.master,'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;&lt;xsl:value-of select="concat($body.font.master,'pt * 0.8')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;&lt;xsl:value-of select="concat($body.font.master,'pt * 1.2')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used on the letter headings that separate
+the divisions in an index.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.number.separator">
+<refmeta>
+<refentrytitle>index.number.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.number.separator</refname>
+<refpurpose>Override for punctuation separating page numbers in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.number.separator.frag">
+&lt;xsl:param name="index.number.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override the text to insert between
+page references in a formatted index entry. Typically
+that would be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'number-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. This punctuation appears between
+such section titles in an HTML index.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.range.separator">
+<refmeta>
+<refentrytitle>index.range.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.range.separator</refname>
+<refpurpose>Override for punctuation separating the two numbers
+in a page range in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.range.separator.frag">
+&lt;xsl:param name="index.range.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you
+to override the text to insert between
+the two numbers of a page range in an index.
+This parameter is only used by those XSL-FO processors
+that support an extension for generating such page ranges
+(such as XEP).</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'range-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. So there are no page ranges
+and this parameter has no effect.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.term.separator">
+<refmeta>
+<refentrytitle>index.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.term.separator</refname>
+<refpurpose>Override for punctuation separating an index term
+from its list of page references in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.term.separator.frag">
+&lt;xsl:param name="index.term.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override
+the text to insert between
+the end of an index term and its list of page references.
+Typically that might be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'term-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+fill in the content for this normally empty
+override parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+For fo output, it could be an <tag>fo:leader</tag>
+element to provide space of a specific length, or a dot leader.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xep.index.item.properties">
+<refmeta>
+<refentrytitle>xep.index.item.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xep.index.item.properties</refname>
+<refpurpose>Properties associated with XEP index-items</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xep.index.item.properties.frag">
+&lt;xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties"&gt;
+ &lt;xsl:attribute name="merge-subsequent-page-numbers"&gt;true&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="link-back"&gt;true&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties associated with XEP index-items, which generate
+page numbers in an index processed by XEP. For more info see
+the XEP documentation section "Indexes" in
+<uri xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.renderx.com/reference.html#Indexes">http://www.renderx.com/reference.html#Indexes</uri>.</para>
+
+<para>This attribute-set also adds by default any properties from the
+<tag class="attribute">index.page.number.properties</tag>
+attribute-set.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.section.depth">
+<refmeta>
+<refentrytitle>toc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.section.depth</refname>
+<refpurpose>How deep should recursive <tag>section</tag>s appear
+in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.section.depth.frag">&lt;xsl:param name="toc.section.depth"&gt;2&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the depth to which recursive sections should appear in the
+TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.max.depth">
+<refmeta>
+<refentrytitle>toc.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.max.depth</refname>
+<refpurpose>How many levels should be created for each TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.max.depth.frag">&lt;xsl:param name="toc.max.depth"&gt;8&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximal depth of TOC on all levels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.indent.width">
+<refmeta>
+<refentrytitle>toc.indent.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">float</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.indent.width</refname>
+<refpurpose>Amount of indentation for TOC entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.indent.width.frag">
+&lt;xsl:param name="toc.indent.width"&gt;24&lt;/xsl:param&gt;
+&lt;!-- inconsistant point specification? --&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies, in points, the distance by which each level of the
+TOC is indented from its parent.</para>
+
+<para>This value is expressed in points, without
+a unit (in other words, it is a bare number). Using a bare number allows the stylesheet
+to perform calculations that would otherwise have to be performed by the FO processor
+because not all processors support expressions.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.line.properties">
+<refmeta>
+<refentrytitle>toc.line.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.line.properties</refname>
+<refpurpose>Properties for lines in ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.line.properties.frag">
+&lt;xsl:attribute-set name="toc.line.properties"&gt;
+ &lt;xsl:attribute name="text-align-last"&gt;justify&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="end-indent"&gt;&lt;xsl:value-of select="concat($toc.indent.width, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="last-line-end-indent"&gt;&lt;xsl:value-of select="concat('-', $toc.indent.width, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties which are applied to every line in ToC (or LoT). You can
+modify them in order to change appearance of all, or some lines. For
+example, in order to make lines for chapters bold, specify the
+following in your customization layer:</para>
+
+<programlisting>&lt;xsl:attribute-set name="toc.line.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="self::chapter"&gt;bold&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;normal&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.margin.properties">
+<refmeta>
+<refentrytitle>toc.margin.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.margin.properties</refname>
+<refpurpose>Margin properties used on Tables of Contents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.margin.properties.frag">
+&lt;xsl:attribute-set name="toc.margin.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This attribute set is used on Tables of Contents. These attributes are set
+on the wrapper that surrounds the ToC block, not on each individual lines.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bridgehead.in.toc">
+<refmeta>
+<refentrytitle>bridgehead.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bridgehead.in.toc</refname>
+<refpurpose>Should bridgehead elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bridgehead.in.toc.frag">&lt;xsl:param name="bridgehead.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>bridgehead</tag>s appear in the TOC. Note that
+this option is not fully supported and may be removed in a future
+version of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="simplesect.in.toc">
+<refmeta>
+<refentrytitle>simplesect.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>simplesect.in.toc</refname>
+<refpurpose>Should <tag>simplesect</tag> elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="simplesect.in.toc.frag">&lt;xsl:param name="simplesect.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>simplesect</tag>s will be included in the TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.section.toc.level">
+<refmeta>
+<refentrytitle>generate.section.toc.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.section.toc.level</refname>
+<refpurpose>Control depth of TOC generation in sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.section.toc.level.frag">
+&lt;xsl:param name="generate.section.toc.level" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>generate.section.toc.level</parameter> parameter
+controls the depth of <tag>section</tag> in which TOCs will be generated. Note
+that this is related to, but not the same as
+<parameter>toc.section.depth</parameter>, which controls the depth to
+which TOC entries will be generated in a given TOC.</para>
+<para>If, for example, <parameter>generate.section.toc.level</parameter>
+is <literal>3</literal>, TOCs will be generated in first, second, and third
+level sections, but not in fourth level sections.
+</para>
+
+</refsection>
+</refentry>
+
+
+
+
+</reference>
+<reference xml:id="fo_ext"><title>Processor Extensions</title>
+<refentry version="5.0" xml:id="arbortext.extensions">
+<refmeta>
+<refentrytitle>arbortext.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>arbortext.extensions</refname>
+<refpurpose>Enable Arbortext extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="arbortext.extensions.frag">&lt;xsl:param name="arbortext.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.arbortext.com/">Arbortext</link>
+extensions will be used.
+</para>
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="axf.extensions">
+<refmeta>
+<refentrytitle>axf.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>axf.extensions</refname>
+<refpurpose>Enable XSL Formatter extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="axf.extensions.frag">
+&lt;xsl:param name="axf.extensions" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.antennahouse.com/">XSL Formatter</link>
+extensions will be used. XSL Formatter extensions consists of PDF bookmarks,
+document information and better index processing.</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="fop.extensions">
+<refmeta>
+<refentrytitle>fop.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fop.extensions</refname>
+<refpurpose>Enable extensions for FOP version 0.20.5 and earlier</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="fop.extensions.frag">&lt;xsl:param name="fop.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions intended for
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://xml.apache.org/fop/">FOP</link>
+version 0.20.5 and earlier will be used.
+At present, this consists of PDF bookmarks.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported.</para>
+
+<para>If you are using a version of FOP beyond
+version 0.20.5, then use the <parameter>fop1.extensions</parameter> parameter
+instead.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="fop1.extensions">
+<refmeta>
+<refentrytitle>fop1.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fop1.extensions</refname>
+<refpurpose>Enable extensions for FOP version 0.90 and later</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="fop1.extensions.frag">&lt;xsl:param name="fop1.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions for
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://xml.apache.org/fop/">FOP</link>
+version 0.90 and later will be used.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported.</para>
+
+<para>The original <parameter>fop.extensions</parameter> parameter
+should still be used for FOP version 0.20.5 and earlier.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="passivetex.extensions">
+<refmeta>
+<refentrytitle>passivetex.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>passivetex.extensions</refname>
+<refpurpose>Enable PassiveTeX extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="passivetex.extensions.frag">&lt;xsl:param name="passivetex.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.tei-c.org.uk/Software/passivetex/">PassiveTeX</link>
+extensions will be used. At present, this consists of PDF bookmarks
+and sorted index terms.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+<note>
+ <para>PassiveTeX is incomplete and development has ceased. In most cases,
+another XSL-FO engine is probably a better choice.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="tex.math.in.alt">
+<refmeta>
+<refentrytitle>tex.math.in.alt</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">plain</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">latex</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.in.alt</refname>
+<refpurpose>TeX notation used for equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="tex.math.in.alt.frag">
+&lt;xsl:param name="tex.math.in.alt"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want type math directly in TeX notation in equations,
+this parameter specifies notation used. Currently are supported two
+values -- <literal>plain</literal> and <literal>latex</literal>. Empty
+value means that you are not using TeX math at all.</para>
+
+<para>Preferred way for including TeX alternative of math is inside of
+<tag>textobject</tag> element. Eg.:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;inlinemediaobject&gt;
+&lt;imageobject&gt;
+&lt;imagedata fileref="eq1.gif"/&gt;
+&lt;/imageobject&gt;
+&lt;textobject&gt;&lt;phrase&gt;E=mc squared&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;textobject role="tex"&gt;&lt;phrase&gt;E=mc^2&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;/inlinemediaobject&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you are using <tag>graphic</tag> element, you can
+store TeX inside <tag>alt</tag> element:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;alt role="tex"&gt;a^2+b^2=c^2&lt;/alt&gt;
+&lt;graphic fileref="a2b2c2.gif"/&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you want use this feature, you should process your FO with
+PassiveTeX, which only supports TeX math notation. When calling
+stylsheet, don't forget to specify also
+passivetex.extensions=1.</para>
+
+<para>If you want equations in HTML, just process generated file
+<filename>tex-math-equations.tex</filename> by TeX or LaTeX. Then run
+dvi2bitmap program on result DVI file. You will get images for
+equations in your document.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.delims</parameter>,
+ <parameter>passivetex.extensions</parameter>,
+ <parameter>tex.math.file</parameter></para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="tex.math.delims">
+<refmeta>
+<refentrytitle>tex.math.delims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.delims</refname>
+<refpurpose>Should equations output for processing by TeX be
+surrounded by math mode delimiters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="tex.math.delims.frag">
+&lt;xsl:param name="tex.math.delims" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For compatibility with DSSSL based DBTeXMath from Allin Cottrell
+you should set this parameter to 0.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>passivetex.extensions</parameter></para>
+</refsection>
+
+<refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbtex delims</tag> processing
+ instruction to control whether delimiters are output.</para>
+</refsection>
+
+
+</refentry>
+
+<refentry version="5.0" xml:id="xep.extensions">
+<refmeta>
+<refentrytitle>xep.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xep.extensions</refname>
+<refpurpose>Enable XEP extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xep.extensions.frag">&lt;xsl:param name="xep.extensions" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.renderx.com/">XEP</link>
+extensions will be used. XEP extensions consists of PDF bookmarks,
+document information and better index processing.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="dbk_ext"><title>Stylesheet Extensions</title>
+<refentry version="5.0" xml:id="linenumbering.everyNth">
+<refmeta>
+<refentrytitle>linenumbering.everyNth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.everyNth</refname>
+<refpurpose>Indicate which lines should be numbered</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.everyNth.frag">
+&lt;xsl:param name="linenumbering.everyNth"&gt;5&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, everyNth line will be
+numbered. Note that numbering is one based, not zero based.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="linenumbering.extension">
+<refmeta>
+<refentrytitle>linenumbering.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.extension</refname>
+<refpurpose>Enable the line numbering extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.extension.frag">
+&lt;xsl:param name="linenumbering.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, verbatim environments (<tag>address</tag>, <tag>literallayout</tag>,
+<tag>programlisting</tag>, <tag>screen</tag>, <tag>synopsis</tag>) that specify line numbering will
+have line numbers.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="linenumbering.separator">
+<refmeta>
+<refentrytitle>linenumbering.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.separator</refname>
+<refpurpose>Specify a separator between line numbers and lines</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.separator.frag">
+&lt;xsl:param name="linenumbering.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The separator is inserted between line numbers and lines in the
+verbatim environment. The default value is a single white space.
+ Note the interaction with <parameter>linenumbering.width</parameter>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="linenumbering.width">
+<refmeta>
+<refentrytitle>linenumbering.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.width</refname>
+<refpurpose>Indicates the width of line numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.width.frag">
+&lt;xsl:param name="linenumbering.width"&gt;3&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, line numbers will appear right
+justified in a field "width" characters wide.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="tablecolumns.extension">
+<refmeta>
+<refentrytitle>tablecolumns.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tablecolumns.extension</refname>
+<refpurpose>Enable the table columns extension function</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="tablecolumns.extension.frag">
+&lt;xsl:param name="tablecolumns.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The table columns extension function adjusts the widths of table
+columns in the HTML result to more accurately reflect the specifications
+in the CALS table.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="textinsert.extension">
+ <refmeta>
+ <refentrytitle>textinsert.extension</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>textinsert.extension</refname>
+ <refpurpose>Enables the textinsert extension element</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <programlisting xml:id="textinsert.extension.frag">
+ &lt;xsl:param name="textinsert.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+ </refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>The textinsert extension element inserts the contents of
+ a file into the result tree (as text).</para>
+ <note>
+ <para>To use the textinsert extension element, you must use
+ either Saxon or Xalan as your XSLT processor (it doesn&#8217;t
+ work with xsltproc), along with either the DocBook Saxon
+ extensions or DocBook Xalan extensions (for more
+ information about those extensions, see <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="InstallingAProcessor.html#SaxonExtensions">DocBook Saxon Extensions</link> and <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="InstallingAProcessor.html#XalanExtensions">DocBook Xalan Extensions</link>), and you must set both
+ the <parameter>use.extensions</parameter> and
+ <parameter>textinsert.extension</parameter> parameters to
+ <literal>1</literal>.</para>
+ <para>As an alternative to using the textinsert element,
+ consider using an Xinclude element with the
+ <literal>parse="text"</literal> attribute and value
+ specified, as detailed in <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="ExternalCode.html#XIncludeCode">Using XInclude for text inclusions</link>.</para>
+ </note>
+ </refsection>
+ <refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbhtml-include&#160;href</tag> processing
+ instruction to insert external files &#8212; both files containing
+ plain text and files with markup content (including HTML
+ content).</para>
+ </refsection>
+ <refsection><info><title>More information</title></info>
+ <para>For how-to documentation on inserting contents of
+ external code files and other text files into output, see
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="ExternalCode.html">External code files</link>.</para>
+ <para>For guidelines on inserting contents of
+ HTML files into output, see <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>.</para>
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="textdata.default.encoding">
+<refmeta>
+<refentrytitle>textdata.default.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textdata.default.encoding</refname>
+<refpurpose>Default encoding of external text files which are included
+using textdata element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="textdata.default.encoding.frag">
+&lt;xsl:param name="textdata.default.encoding"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the encoding of any external text files included using
+<tag>textdata</tag> element. This value is used only when you do
+not specify encoding by the appropriate attribute
+directly on textdata. An empty string is interpreted as the system
+default encoding.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.extensions">
+<refmeta>
+<refentrytitle>use.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.extensions</refname>
+<refpurpose>Enable extensions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.extensions.frag">
+&lt;xsl:param name="use.extensions" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions may be used. Each extension is
+further controlled by its own parameter. But if
+<parameter>use.extensions</parameter> is zero, no extensions will
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="labels"><title>Automatic labelling</title>
+<refentry version="5.0" xml:id="appendix.autolabel">
+<refmeta>
+<refentrytitle>appendix.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>appendix.autolabel</refname>
+<refpurpose>Specifies the labeling format for Appendix titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="appendix.autolabel.frag">
+&lt;xsl:param name="appendix.autolabel"&gt;A&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then appendices will be numbered using the
+parameter value as the number format if the value matches one of the
+following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperalpha).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chapter.autolabel">
+<refmeta>
+<refentrytitle>chapter.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chapter.autolabel</refname>
+<refpurpose>Specifies the labeling format for Chapter titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chapter.autolabel.frag">
+&lt;xsl:param name="chapter.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then chapters will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="part.autolabel">
+<refmeta>
+<refentrytitle>part.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>part.autolabel</refname>
+<refpurpose>Specifies the labeling format for Part titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="part.autolabel.frag">
+&lt;xsl:param name="part.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then parts will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperroman).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="reference.autolabel">
+<refmeta>
+<refentrytitle>reference.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>reference.autolabel</refname>
+<refpurpose>Specifies the labeling format for Reference titles</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="reference.autolabel.frag">
+ &lt;xsl:param name="reference.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, references will be numbered using the parameter
+ value as the number format if the value matches one of the
+ following:
+</para>
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Any non-zero value other than the above will generate
+the default number format (upperroman).
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="preface.autolabel">
+<refmeta>
+<refentrytitle>preface.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preface.autolabel</refname>
+<refpurpose>Specifices the labeling format for Preface titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="preface.autolabel.frag">&lt;xsl:param name="preface.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero then prefaces will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.autolabel">
+<refmeta>
+<refentrytitle>section.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel</refname>
+<refpurpose>Are sections enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.autolabel.frag">&lt;xsl:param name="section.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), unlabeled sections will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.autolabel.max.depth">
+<refmeta>
+<refentrytitle>section.autolabel.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel.max.depth</refname>
+<refpurpose>The deepest level of sections that are numbered.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.autolabel.max.depth.frag">
+&lt;xsl:param name="section.autolabel.max.depth"&gt;8&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When section numbering is turned on by the
+<parameter>section.autolabel</parameter> parameter, then this
+parameter controls the depth of <tag>section</tag> nesting that is
+numbered. Sections nested to a level deeper than this value will not
+be numbered.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.label.includes.component.label">
+<refmeta>
+<refentrytitle>section.label.includes.component.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.label.includes.component.label</refname>
+<refpurpose>Do section labels include the component label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.label.includes.component.label.frag">&lt;xsl:param name="section.label.includes.component.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, section labels are prefixed with the label of the
+component that contains them.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="label.from.part">
+<refmeta>
+<refentrytitle>label.from.part</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>label.from.part</refname>
+<refpurpose>Renumber components in each part?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="label.from.part.frag">
+&lt;xsl:param name="label.from.part" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>label.from.part</parameter> is non-zero, then
+ numbering of components &#8212; <tag>preface</tag>,
+ <tag>chapter</tag>, <tag>appendix</tag>, and
+ <tag>reference</tag> (when <tag>reference</tag> occurs at the
+ component level) &#8212; is re-started within each
+ <tag>part</tag>.</para>
+<para>If <parameter>label.from.part</parameter> is zero (the
+ default), numbering of components is <emphasis>not</emphasis>
+ re-started within each <tag>part</tag>; instead, components are
+ numbered sequentially throughout each <tag>book</tag>,
+ regardless of whether or not they occur within <tag>part</tag>
+ instances.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="component.label.includes.part.label">
+<refmeta>
+<refentrytitle>component.label.includes.part.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.label.includes.part.label</refname>
+<refpurpose>Do component labels include the part label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="component.label.includes.part.label.frag">&lt;xsl:param name="component.label.includes.part.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, number labels for <tag>chapter</tag>,
+<tag>appendix</tag>, and other component elements are prefixed with
+the label of the part element that contains them. So you might see
+Chapter II.3 instead of Chapter 3. Also, the labels for formal
+elements such as <tag>table</tag> and <tag>figure</tag> will include
+the part label. If there is no part element container, then no prefix
+is generated.
+</para>
+<para>
+This feature is most useful when the
+<parameter>label.from.part</parameter> parameter is turned on.
+In that case, there would be more than one <tag>chapter</tag>
+<quote>1</quote>, and the extra part label prefix will identify
+each chapter unambiguously.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="xslt"><title>XSLT Processing</title>
+<refentry version="5.0" xml:id="rootid">
+<refmeta>
+<refentrytitle>rootid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>rootid</refname>
+<refpurpose>Specify the root element to format</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="rootid.frag">
+&lt;xsl:param name="rootid"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>rootid</parameter> is not empty, it must be the
+value of an ID that occurs in the document being formatted. The entire
+document will be loaded and parsed, but formatting will begin at the
+element identified, rather than at the root. For example, this allows
+you to process only <tag>chapter</tag> 4 of a <tag>book</tag>.</para>
+<para>Because the entire document is available to the processor, automatic
+numbering, cross references, and other dependencies are correctly
+resolved.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="meta"><title>Meta/*Info</title>
+<refentry version="5.0" xml:id="make.single.year.ranges">
+<refmeta>
+<refentrytitle>make.single.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.single.year.ranges</refname>
+<refpurpose>Print single-year ranges (e.g., 1998-1999)</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.single.year.ranges.frag">
+&lt;xsl:param name="make.single.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, year ranges that span a single year will be printed
+in range notation (1998-1999) instead of discrete notation
+(1998, 1999).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="make.year.ranges">
+<refmeta>
+<refentrytitle>make.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.year.ranges</refname>
+<refpurpose>Collate copyright years into ranges?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.year.ranges.frag">&lt;xsl:param name="make.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple copyright <tag>year</tag> elements will be
+collated into ranges.
+This works only if each year number is put into a separate
+year element. The copyright element permits multiple
+year elements. If a year element contains a dash or
+a comma, then that year element will not be merged into
+any range.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="author.othername.in.middle">
+<refmeta>
+<refentrytitle>author.othername.in.middle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>author.othername.in.middle</refname>
+<refpurpose>Is <tag>othername</tag> in <tag>author</tag> a
+middle name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="author.othername.in.middle.frag">
+&lt;xsl:param name="author.othername.in.middle" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag>othername</tag> of an <tag>author</tag>
+appears between the <tag>firstname</tag> and
+<tag>surname</tag>. Otherwise, <tag>othername</tag>
+is suppressed.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="refentry"><title>Reference Pages</title>
+<refentry version="5.0" xml:id="funcsynopsis.decoration">
+<refmeta>
+<refentrytitle>funcsynopsis.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.decoration</refname>
+<refpurpose>Decorate elements of a <tag>funcsynopsis</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="funcsynopsis.decoration.frag">
+&lt;xsl:param name="funcsynopsis.decoration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, elements of the <tag>funcsynopsis</tag> will be
+decorated (e.g. rendered as bold or italic text). The decoration is controlled by
+templates that can be redefined in a customization layer.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="funcsynopsis.style">
+<refmeta>
+<refentrytitle>funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="funcsynopsis.style.frag">&lt;xsl:param name="funcsynopsis.style"&gt;kr&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>funcsynopsis.style</parameter> is <literal>ansi</literal>,
+ANSI-style function synopses are generated for a
+<tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="function.parens">
+<refmeta>
+<refentrytitle>function.parens</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>function.parens</refname>
+<refpurpose>Generate parens after a function?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="function.parens.frag">
+&lt;xsl:param name="function.parens" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the formatting of a <tag>function</tag> element
+will include generated parentheses.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.generate.name">
+<refmeta>
+<refentrytitle>refentry.generate.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.name</refname>
+<refpurpose>Output NAME header before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.generate.name.frag">
+&lt;xsl:param name="refentry.generate.name" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a "NAME" section title is output before the list
+of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.title</parameter> are mutually
+exclusive. This means that if you change this parameter to zero, you
+should set <parameter>refentry.generate.title</parameter> to non-zero unless
+you want get quite strange output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.generate.title">
+<refmeta>
+<refentrytitle>refentry.generate.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.title</refname>
+<refpurpose>Output title before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.generate.title.frag">
+&lt;xsl:param name="refentry.generate.title" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the reference page title or first name is
+output before the list of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.name</parameter> are mutually exclusive.
+This means that if you change this parameter to non-zero, you
+should set <parameter>refentry.generate.name</parameter> to zero unless
+you want get quite strange output.</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.pagebreak">
+<refmeta>
+<refentrytitle>refentry.pagebreak</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.pagebreak</refname>
+<refpurpose>Start each refentry on a new page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.pagebreak.frag">&lt;xsl:param name="refentry.pagebreak" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), each <tag>refentry</tag>
+element will start on a new page. If zero, a page
+break will not be generated between <tag>refentry</tag> elements.
+The exception is when the <tag>refentry</tag> elements are children of
+a <tag>part</tag> element, in which case the page breaks are always
+retained. That is because a <tag>part</tag> element does not generate
+a page-sequence for its children, so each <tag>refentry</tag> must
+start its own page-sequence.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.title.properties">
+<refmeta>
+<refentrytitle>refentry.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.title.properties</refname>
+<refpurpose>Title properties for a refentry title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.title.properties.frag">
+&lt;xsl:attribute-set name="refentry.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;18pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1.0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.4em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;0.6em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;&lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formatting properties applied to the title generated for the
+<tag>refnamediv</tag> part of output for
+<tag>refentry</tag> when the value of the
+<parameter>refentry.generate.title</parameter> parameter is
+non-zero. The font size is supplied by the appropriate <parameter>section.level<replaceable>X</replaceable>.title.properties</parameter>
+attribute-set, computed from the location of the
+<tag>refentry</tag> in the section hierarchy.</para>
+
+<note>
+ <para>This parameter has no effect on the the title generated for
+ the <tag>refnamediv</tag> part of output for
+ <tag>refentry</tag> when the value of the
+ <parameter>refentry.generate.name</parameter> parameter is
+ non-zero. By default, that title is formatted with the same
+ properties as the titles for all other first-level children of
+ <tag>refentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.xref.manvolnum">
+<refmeta>
+<refentrytitle>refentry.xref.manvolnum</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.xref.manvolnum</refname>
+<refpurpose>Output <tag>manvolnum</tag> as part of
+<tag>refentry</tag> cross-reference?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.xref.manvolnum.frag">
+&lt;xsl:param name="refentry.xref.manvolnum" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>if non-zero, the <tag>manvolnum</tag> is used when cross-referencing
+<tag>refentry</tag>s, either with <tag>xref</tag>
+or <tag>citerefentry</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refclass.suppress">
+<refmeta>
+<refentrytitle>refclass.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refclass.suppress</refname>
+<refpurpose>Suppress display of refclass contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refclass.suppress.frag">
+&lt;xsl:param name="refclass.suppress" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refclass.suppress</parameter> is
+non-zero, then display of <tag>refclass</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="tables"><title>Tables</title>
+<refentry version="5.0" xml:id="default.table.width">
+<refmeta>
+<refentrytitle>default.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.width</refname>
+<refpurpose>The default width of tables</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="default.table.width.frag">
+&lt;xsl:param name="default.table.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, this value will be used for the
+<literal>width</literal> attribute on <tag>table</tag>s that do not specify an
+alternate width (with the <tag class="xmlpi">dbhtml table-width</tag> or
+<tag class="xmlpi">dbfo table-width</tag> processing instruction).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="nominal.table.width">
+<refmeta>
+<refentrytitle>nominal.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.table.width</refname>
+<refpurpose>The (absolute) nominal width of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="nominal.table.width.frag">
+&lt;xsl:param name="nominal.table.width"&gt;6in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In order to convert CALS column widths into HTML column widths, it
+is sometimes necessary to have an absolute table width to use for conversion
+of mixed absolute and relative widths. This value must be an absolute
+length (not a percentage).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.table.frame">
+<refmeta>
+<refentrytitle>default.table.frame</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.frame</refname>
+<refpurpose>The default framing of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.table.frame.frag">
+&lt;xsl:param name="default.table.frame"&gt;all&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This value will be used when there is no frame attribute on the
+table. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.table.rules">
+<refmeta>
+<refentrytitle>default.table.rules</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.rules</refname>
+<refpurpose>The default column and row rules for tables using HTML markup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.table.rules.frag">
+&lt;xsl:param name="default.table.rules"&gt;none&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Tables using HTML markup elements can use an attribute
+named <tag class="attribute">rules</tag> on the <tag>table</tag> or
+<tag>informaltable</tag> element
+to specify whether column and row border rules should be
+displayed. This parameter lets you specify a global default
+style for all HTML tables that don't otherwise have
+that attribute.</para>
+<para>These are the supported values:</para>
+
+<variablelist>
+<varlistentry><term>all</term>
+<listitem>
+<para>Rules will appear between all rows and columns.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>rows</term>
+<listitem>
+<para>Rules will appear between rows only.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>cols</term>
+<listitem>
+<para>Rules will appear between columns only.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>groups</term>
+<listitem>
+<para>Rules will appear between row groups (thead, tfoot, tbody).
+No support for rules between column groups yet.
+</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>none</term>
+<listitem>
+<para>No rules. This is the default value.
+</para>
+</listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>The border after the last row and the border after
+the last column are not affected by
+this setting. Those borders are controlled by
+the <tag class="attribute">frame</tag> attribute on the table element.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.cell.padding">
+<refmeta>
+<refentrytitle>table.cell.padding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.padding</refname>
+<refpurpose>Specifies the padding of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.cell.padding.frag">
+&lt;xsl:attribute-set name="table.cell.padding"&gt;
+ &lt;xsl:attribute name="padding-start"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-end"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-top"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-bottom"&gt;2pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the padding of table cells.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.frame.border.thickness">
+<refmeta>
+<refentrytitle>table.frame.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.thickness</refname>
+<refpurpose>Specifies the thickness of the frame border</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.frame.border.thickness.frag">
+&lt;xsl:param name="table.frame.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the thickness of the border on the table's frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.frame.border.style">
+<refmeta>
+<refentrytitle>table.frame.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.style</refname>
+<refpurpose>Specifies the border style of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.frame.border.style.frag">
+&lt;xsl:param name="table.frame.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.frame.border.color">
+<refmeta>
+<refentrytitle>table.frame.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.color</refname>
+<refpurpose>Specifies the border color of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.frame.border.color.frag">
+
+&lt;xsl:param name="table.frame.border.color"&gt;black&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border color of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.cell.border.thickness">
+<refmeta>
+<refentrytitle>table.cell.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.thickness</refname>
+<refpurpose>Specifies the thickness of table cell borders</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.cell.border.thickness.frag">
+&lt;xsl:param name="table.cell.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, specifies the thickness of borders on table
+cells. The units are points. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/CSS21/box.html#border-width-properties">
+CSS</link></para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.cell.border.style">
+<refmeta>
+<refentrytitle>table.cell.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.style</refname>
+<refpurpose>Specifies the border style of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.cell.border.style.frag">
+&lt;xsl:param name="table.cell.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table cells.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.cell.border.color">
+<refmeta>
+<refentrytitle>table.cell.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.color</refname>
+<refpurpose>Specifies the border color of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.cell.border.color.frag">
+
+&lt;xsl:param name="table.cell.border.color"&gt;black&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the color of table cell borders. If non-zero, the value is used
+for the border coloration. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS</link>. A
+<literal>color</literal> is either a keyword or a numerical RGB specification.
+Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon,
+navy, olive, orange, purple, red, silver, teal, white, and
+yellow.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.table.properties">
+<refmeta>
+<refentrytitle>table.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.table.properties</refname>
+<refpurpose>Properties associated with a table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.table.properties.frag">
+&lt;xsl:attribute-set name="table.table.properties"&gt;
+ &lt;xsl:attribute name="border-before-width.conditionality"&gt;retain&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="border-collapse"&gt;collapse&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for tables. This parameter should really
+have been called <literal>table.properties</literal>, but that parameter
+name was inadvertently established for the block-level properties
+of the table as a whole.
+</para>
+
+<para>See also <parameter>table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="links"><title>Linking</title>
+<refentry version="5.0" xml:id="current.docid">
+<refmeta>
+<refentrytitle>current.docid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>current.docid</refname>
+<refpurpose>targetdoc identifier for the document being
+processed</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="current.docid.frag">
+&lt;xsl:param name="current.docid"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the <literal>targetdoc</literal> identifiers for both documents, as they appear in the <parameter>target.database.document</parameter> database file. This parameter passes to the stylesheet
+the targetdoc identifier of the current document, since that
+identifier does not appear in the document itself. </para>
+<para>This parameter can also be used for print output. If an olink's <literal>targetdoc</literal> id differs from the <literal>current.docid</literal>, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also <parameter>olink.doctitle</parameter> to enable that feature.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="collect.xref.targets">
+<refmeta>
+<refentrytitle>collect.xref.targets</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">only</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>collect.xref.targets</refname>
+<refpurpose>Controls whether cross reference data is
+collected</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="collect.xref.targets.frag">
+&lt;xsl:param name="collect.xref.targets"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is <literal>no</literal>, which means the data file is not generated during processing. The other choices are <literal>yes</literal>, which means the data file is created and the document is processed for output, and <literal>only</literal>, which means the data file is created but the document is not processed for output.
+See also <parameter>targets.filename</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="insert.olink.page.number">
+<refmeta>
+<refentrytitle>insert.olink.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.page.number</refname>
+<refpurpose>Turns page numbers in olinks on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="insert.olink.page.number.frag">
+&lt;xsl:param name="insert.olink.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references made between documents with
+<tag>olink</tag> will
+include page number citations.
+In most cases this is only applicable to references in printed output.
+</para>
+<para>The parameter has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated for olinks.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>olink</tag> references.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>olink</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+<para>Olinks that point to targets within the same document
+are treated as <tag>xref</tag>s, and controlled by
+the <parameter>insert.xref.page.number</parameter> parameter.
+</para>
+
+<para>Page number references for olinks to
+external documents can only be inserted if the
+information exists in the olink database.
+This means each olink target element
+(<tag>div</tag> or <tag>obj</tag>)
+must have a <tag class="attribute">page</tag> attribute
+whose value is its page number in the target document.
+The XSL stylesheets are not able to extract that information
+during processing because pages have not yet been created in
+XSLT transformation. Only the XSL-FO processor knows what
+page each element is placed on.
+Therefore some postprocessing must take place to populate
+page numbers in the olink database.
+</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="insert.olink.pdf.frag">
+<refmeta>
+<refentrytitle>insert.olink.pdf.frag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.pdf.frag</refname>
+<refpurpose>Add fragment identifiers for links into PDF files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="insert.olink.pdf.frag.frag">
+&lt;xsl:param name="insert.olink.pdf.frag" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines whether
+the cross reference URIs to PDF documents made with
+<tag>olink</tag> will
+include fragment identifiers.
+</para>
+
+<para>When forming a URI to link to a PDF document,
+a fragment identifier (typically a '#' followed by an
+id value) appended to the PDF filename can be used by
+the PDF viewer to open
+the PDF file to a location within the document instead of
+the first page.
+However, not all PDF files have id
+values embedded in them, and not all PDF viewers can
+handle fragment identifiers.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to a non-zero value, then any olink targeting a
+PDF file will have the fragment identifier appended to the URI.
+The URI is formed by concatenating the value of the
+<parameter>olink.base.uri</parameter> parameter, the
+value of the <tag class="attribute">baseuri</tag>
+attribute from the <tag class="element">document</tag>
+element in the olink database with the matching
+<tag class="attribute">targetdoc</tag> value,
+and the value of the <tag class="attribute">href</tag>
+attribute for the targeted element in the olink database.
+The <tag class="attribute">href</tag> attribute
+contains the fragment identifier.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to zero (the default value), then
+the <tag class="attribute">href</tag> attribute
+from the olink database
+is not appended to PDF olinks, so the fragment identifier is left off.
+A PDF olink is any olink for which the
+<tag class="attribute">baseuri</tag> attribute
+from the matching <tag class="element">document</tag>
+element in the olink database ends with '.pdf'.
+Any other olinks will still have the fragment identifier added.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.base.uri">
+<refmeta>
+<refentrytitle>olink.base.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.base.uri</refname>
+<refpurpose>Base URI used in olink hrefs</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="olink.base.uri.frag">
+&lt;xsl:param name="olink.base.uri"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for resolving olinks, it
+may be necessary to prepend a base URI to each target's href. This
+parameter lets you set that base URI when cross reference data is
+collected. This feature is needed when you want to link to a document
+that is processed without chunking. The output filename for such a
+document is not known to the XSL stylesheet; the only target
+information consists of fragment identifiers such as
+<literal>#idref</literal>. To enable the resolution of olinks between
+documents, you should pass the name of the HTML output file as the
+value of this parameter. Then the hrefs recorded in the cross
+reference data collection look like
+<literal>outfile.html#idref</literal>, which can be reached as links
+from other documents.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.debug">
+<refmeta>
+<refentrytitle>olink.debug</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.debug</refname>
+<refpurpose>Turn on debugging messages for olinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="olink.debug.frag">
+&lt;xsl:param name="olink.debug" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then each olink will generate several
+messages about how it is being resolved during processing.
+This is useful when an olink does not resolve properly
+and the standard error messages are not sufficient to
+find the problem.
+</para>
+
+<para>You may need to read through the olink XSL templates
+to understand the context for some of the debug messages.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.doctitle">
+<refmeta>
+<refentrytitle>olink.doctitle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.doctitle</refname>
+<refpurpose>show the document title for external olinks?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="olink.doctitle.frag">
+&lt;xsl:param name="olink.doctitle"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved, the generated text
+may not make it clear that the reference is to another document.
+It is possible for the stylesheets to append the other document's
+title to external olinks. For this to happen, two parameters must
+be set.</para>
+<itemizedlist>
+<listitem>
+<para>This <parameter>olink.doctitle</parameter> parameter
+should be set to either <literal>yes</literal> or <literal>maybe</literal>
+to enable this feature.
+</para>
+</listitem>
+<listitem>
+<para>And you should also set the <parameter>current.docid</parameter>
+parameter to the document id for the document currently
+being processed for output.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>
+Then if an olink's <literal>targetdoc</literal> id differs from
+the <literal>current.docid</literal> value, the stylesheet knows
+that it is a reference to another document and can
+append the target document's
+title to the generated olink text. </para>
+
+<para>The text for the target document's title is copied from the
+olink database from the <tag>ttl</tag> element
+of the top-level <tag>div</tag> for that document.
+If that <tag>ttl</tag> element is missing or empty,
+no title is output.
+</para>
+
+<para>The supported values for <parameter>olink.doctitle</parameter> are:
+</para>
+<variablelist>
+<varlistentry>
+<term><literal>yes</literal></term>
+<listitem>
+<para>
+Always insert the title to the target document if it is not
+the current document.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no</literal></term>
+<listitem>
+<para>
+Never insert the title to the target document, even if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>maybe</literal></term>
+<listitem>
+<para>
+Only insert the title to the target document, if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>An <tag class="attribute">xrefstyle</tag> attribute
+may override the global setting for individual olinks.
+The following values are supported in an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>select:</literal> syntax:
+</para>
+
+<variablelist>
+<varlistentry>
+<term><literal>docname</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docname</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>docnamelong</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docnamelong</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>nodocname</literal></term>
+<listitem>
+<para>
+Omit the target document name even if
+the value of <parameter>olink.doctitle</parameter>
+is <literal>yes</literal>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>Another way of inserting the target document name
+for a single olink is to employ an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>template:</literal> syntax.
+The <literal>%o</literal> placeholder (the letter o, not zero)
+in such a template
+will be filled in with the target document's title when it is processed.
+This will occur regardless of
+the value of <parameter>olink.doctitle</parameter>.
+</para>
+<para>Note that prior to version 1.66 of the XSL stylesheets,
+the allowed values for this parameter were 0 and 1. Those
+values are still supported and mapped to 'no' and 'yes', respectively.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.lang.fallback.sequence">
+<refmeta>
+<refentrytitle>olink.lang.fallback.sequence</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.lang.fallback.sequence</refname>
+<refpurpose>look up translated documents if olink not found?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="olink.lang.fallback.sequence.frag">
+&lt;xsl:param name="olink.lang.fallback.sequence"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+
+<para>This parameter defines a list of lang values
+to search among to resolve olinks.
+</para>
+
+<para>Normally an olink tries to resolve to a document in the same
+language as the olink itself. The language of an olink
+is determined by its nearest ancestor element with a
+<tag class="attribute">lang</tag> attribute, otherwise the
+value of the <parameter>l10n.gentext.default.lang</parameter>
+parameter.
+</para>
+
+<para>An olink database can contain target data for the same
+document in multiple languages. Each set of data has the
+same value for the <tag>targetdoc</tag> attribute in
+the <tag>document</tag> element in the database, but with a
+different <tag>lang</tag> attribute value.
+</para>
+
+<para>When an olink is being resolved, the target is first
+sought in the document with the same language as the olink.
+If no match is found there, then this parameter is consulted
+for additional languages to try.</para>
+
+<para>The <parameter>olink.lang.fallback.sequence</parameter>
+must be a whitespace separated list of lang values to
+try. The first one with a match in the olink database is used.
+The default value is empty.</para>
+
+<para>For example, a document might be written in German
+and contain an olink with
+<literal>targetdoc="adminguide"</literal>.
+When the document is processed, the processor
+first looks for a target dataset in the
+olink database starting with:</para>
+
+<literallayout><literal>&lt;document targetdoc="adminguide" lang="de"&gt;</literal>.
+</literallayout>
+
+<para>If there is no such element, then the
+<parameter>olink.lang.fallback.sequence</parameter>
+parameter is consulted.
+If its value is, for example, <quote>fr en</quote>, then the processor next
+looks for <literal>targetdoc="adminguide" lang="fr"</literal>, and
+then for <literal>targetdoc="adminguide" lang="en"</literal>.
+If there is still no match, it looks for
+<literal>targetdoc="adminguide"</literal> with no
+lang attribute.
+</para>
+
+<para>This parameter is useful when a set of documents is only
+partially translated, or is in the process of being translated.
+If a target of an olink has not yet been translated, then this
+parameter permits the processor to look for the document in
+other languages. This assumes the reader would rather have
+a link to a document in a different language than to have
+a broken link.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.properties">
+<refmeta>
+<refentrytitle>olink.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.properties</refname>
+<refpurpose>Properties associated with the cross-reference
+text of an olink.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="olink.properties.frag">
+&lt;xsl:attribute-set name="olink.properties"&gt;
+ &lt;xsl:attribute name="show-destination"&gt;replace&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This <literal>attribute set</literal> is applied to the
+<literal>fo:basic-link</literal> element of an olink. It is not applied to the
+optional page number or optional title of the external
+document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="prefer.internal.olink">
+<refmeta>
+<refentrytitle>prefer.internal.olink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prefer.internal.olink</refname>
+<refpurpose>Prefer a local olink reference to an external reference</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="prefer.internal.olink.frag">
+&lt;xsl:param name="prefer.internal.olink" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you are re-using XML content modules in multiple documents,
+you may want to redirect some of your olinks. This parameter
+permits you to redirect an olink to the current document.
+</para>
+
+<para>For example: you are writing documentation for a product,
+which includes 3 manuals: a little installation
+booklet (booklet.xml), a user
+guide (user.xml), and a reference manual (reference.xml).
+All 3 documents begin with the same introduction section (intro.xml) that
+contains a reference to the customization section (custom.xml) which is
+included in both user.xml and reference.xml documents.
+</para>
+
+<para>How do you write the link to custom.xml in intro.xml
+so that it is interpreted correctly in all 3 documents?</para>
+<itemizedlist>
+<listitem><para>If you use xref, it will fail in user.xml.</para>
+</listitem>
+<listitem><para>If you use olink (pointing to reference.xml),
+the reference in user.xml
+will point to the customization section of the reference manual, while it is
+actually available in user.xml.</para>
+</listitem>
+</itemizedlist>
+
+<para>If you set the <parameter>prefer.internal.olink</parameter>
+parameter to a non-zero value, then the processor will
+first look in the olink database
+for the olink's <tag>targetptr</tag> attribute value
+in document matching the <parameter>current.docid</parameter>
+parameter value. If it isn't found there, then
+it tries the document in the database
+with the <tag>targetdoc</tag>
+value that matches the olink's <tag>targetdoc</tag>
+attribute.
+</para>
+
+<para>This feature permits an olink reference to resolve to
+the current document if there is an element
+with an id matching the olink's <tag>targetptr</tag>
+value. The current document's olink data must be
+included in the target database for this to work.</para>
+
+<caution>
+<para>There is a potential for incorrect links if
+the same <tag>id</tag> attribute value is used for different
+content in different documents.
+Some of your olinks may be redirected to the current document
+when they shouldn't be. It is not possible to control
+individual olink instances.</para>
+</caution>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="target.database.document">
+<refmeta>
+<refentrytitle>target.database.document</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>target.database.document</refname>
+<refpurpose>Name of master database file for resolving
+olinks</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="target.database.document.frag">
+ &lt;xsl:param name="target.database.document"&gt;olinkdb.xml&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+To resolve olinks between documents, the stylesheets use a master
+database document that identifies the target datafiles for all the
+documents within the scope of the olinks. This parameter value is the
+URI of the master document to be read during processing to resolve
+olinks. The default value is <filename>olinkdb.xml</filename>.</para>
+
+<para>The data structure of the file is defined in the
+<filename>targetdatabase.dtd</filename> DTD. The database file
+provides the high level elements to record the identifiers, locations,
+and relationships of documents. The cross reference data for
+individual documents is generally pulled into the database using
+system entity references or XIncludes. See also
+<parameter>targets.filename</parameter>. </para> </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="targets.filename">
+<refmeta>
+<refentrytitle>targets.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>targets.filename</refname>
+<refpurpose>Name of cross reference targets data file</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="targets.filename.frag">
+&lt;xsl:param name="targets.filename"&gt;target.db&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter lets you change the name of the generated
+file from the default name <filename>target.db</filename>.
+The name must agree with that used in the target database
+used to resolve olinks during processing.
+See also <parameter>target.database.document</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.local.olink.style">
+<refmeta>
+<refentrytitle>use.local.olink.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.local.olink.style</refname>
+<refpurpose>Process olinks using xref style of current
+document</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="use.local.olink.style.frag">
+&lt;xsl:param name="use.local.olink.style" select="0"&gt;&lt;/xsl:param&gt; </programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the <parameter>use.local.olink.style</parameter> parameter is set to non-zero, then instead the cross
+reference string is formed again from the target title, number, and
+element name, using the stylesheet processing the targeting document.
+Then olinks will match the xref style in the targeting document
+rather than in the target document. If both documents are processed
+with the same stylesheet, then the results will be the same.</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="xrefs"><title>Cross References</title>
+<refentry version="5.0" xml:id="insert.xref.page.number">
+<refmeta>
+<refentrytitle>insert.xref.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.xref.page.number</refname>
+<refpurpose>Turns page numbers in xrefs on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="insert.xref.page.number.frag">
+&lt;xsl:param name="insert.xref.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references (<tag>xref</tag>s) in
+printed output will
+include page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>xref</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>xref</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.properties">
+<refmeta>
+<refentrytitle>xref.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.properties</refname>
+<refpurpose>Properties associated with cross-reference text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.properties.frag">
+&lt;xsl:attribute-set name="xref.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used to set properties
+on cross reference text.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.label-title.separator">
+<refmeta>
+<refentrytitle>xref.label-title.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-title.separator</refname>
+<refpurpose>Punctuation or space separating label from title in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.label-title.separator.frag">&lt;xsl:param name="xref.label-title.separator"&gt;: &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and title,
+then the value of this parameter is inserted between
+label and title in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.label-page.separator">
+<refmeta>
+<refentrytitle>xref.label-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-page.separator</refname>
+<refpurpose>Punctuation or space separating label from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.label-page.separator.frag">&lt;xsl:param name="xref.label-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and page
+but no title,
+then the value of this parameter is inserted between
+label and page number in the output.
+If a title is included, then other separators are used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.title-page.separator">
+<refmeta>
+<refentrytitle>xref.title-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.title-page.separator</refname>
+<refpurpose>Punctuation or space separating title from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.title-page.separator.frag">&lt;xsl:param name="xref.title-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both title and page number,
+then the value of this parameter is inserted between
+title and page number in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="insert.link.page.number">
+<refmeta>
+<refentrytitle>insert.link.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.link.page.number</refname>
+<refpurpose>Turns page numbers in link elements on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="insert.link.page.number.frag">
+&lt;xsl:param name="insert.link.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references using the <tag>link</tag> element in
+printed output will
+include standard page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>link</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for a <tag>link</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+<para>Although the <tag>xrefstyle</tag> attribute
+can be used to turn the page reference on or off, it cannot be
+used to control the formatting of the page number as it
+can in <tag>xref</tag>.
+In <tag>link</tag> it will always format with
+the style established by the
+gentext template with <literal>name="page.citation"</literal>
+in the <literal>l:context name="xref"</literal>.
+</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="lists"><title>Lists</title>
+<refentry version="5.0" xml:id="compact.list.item.spacing">
+<refmeta>
+<refentrytitle>compact.list.item.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>compact.list.item.spacing</refname>
+<refpurpose>What space do you want between list items (when spacing="compact")?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="compact.list.item.spacing.frag">&lt;xsl:attribute-set name="compact.list.item.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;0.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify what spacing you want between each list item when
+<tag class="attribute">spacing</tag> is
+<quote><literal>compact</literal></quote>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="itemizedlist.properties">
+<refmeta>
+<refentrytitle>itemizedlist.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>itemizedlist.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by itemizedlist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="itemizedlist.properties.frag">&lt;xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties"&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by itemizedlist.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="itemizedlist.label.properties">
+<refmeta>
+<refentrytitle>itemizedlist.label.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>itemizedlist.label.properties</refname>
+<refpurpose>Properties that apply to each label inside itemized list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="itemizedlist.label.properties.frag">&lt;xsl:attribute-set name="itemizedlist.label.properties"&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each label inside itemized list. E.g.:</para>
+<programlisting>&lt;xsl:attribute-set name="itemizedlist.label.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;right&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="itemizedlist.label.width">
+<refmeta>
+<refentrytitle>itemizedlist.label.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+ <refname>itemizedlist.label.width</refname>
+<refpurpose>The default width of the label (bullet) in an itemized list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="itemizedlist.label.width.frag">
+ &lt;xsl:param name="itemizedlist.label.width"&gt;1.0em&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Specifies the default width of the label (usually a bullet or other
+symbol) in an itemized list. You can override the default value on any
+particular list with the &#8220;dbfo&#8221; processing instruction using the
+&#8220;label-width&#8221; pseudoattribute.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="list.block.properties">
+<refmeta>
+<refentrytitle>list.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.block.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="list.block.properties.frag">&lt;xsl:attribute-set name="list.block.properties"&gt;
+ &lt;xsl:attribute name="provisional-label-separation"&gt;0.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="provisional-distance-between-starts"&gt;1.5em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by itemizedlist/orderedlist.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="list.block.spacing">
+<refmeta>
+<refentrytitle>list.block.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.block.spacing</refname>
+<refpurpose>What spacing do you want before and after lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="list.block.spacing.frag">&lt;xsl:attribute-set name="list.block.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the spacing required before and after a list. It is necessary to specify the space after a list block because lists can come inside of paras. </para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="list.item.spacing">
+<refmeta>
+<refentrytitle>list.item.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.item.spacing</refname>
+<refpurpose>What space do you want between list items?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="list.item.spacing.frag">&lt;xsl:attribute-set name="list.item.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify what spacing you want between each list item.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="orderedlist.properties">
+<refmeta>
+<refentrytitle>orderedlist.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by orderedlist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="orderedlist.properties.frag">&lt;xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties"&gt;
+ &lt;xsl:attribute name="provisional-distance-between-starts"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by orderedlist.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="orderedlist.label.properties">
+<refmeta>
+<refentrytitle>orderedlist.label.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.label.properties</refname>
+<refpurpose>Properties that apply to each label inside ordered list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="orderedlist.label.properties.frag">&lt;xsl:attribute-set name="orderedlist.label.properties"&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each label inside ordered list. E.g.:</para>
+<programlisting>&lt;xsl:attribute-set name="orderedlist.label.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;right&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="orderedlist.label.width">
+<refmeta>
+<refentrytitle>orderedlist.label.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.label.width</refname>
+<refpurpose>The default width of the label (number) in an ordered list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="orderedlist.label.width.frag">
+&lt;xsl:param name="orderedlist.label.width"&gt;1.2em&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Specifies the default width of the label (usually a number or
+sequence of numbers) in an ordered list. You can override the default
+value on any particular list with the &#8220;dbfo&#8221; processing instruction
+using the &#8220;label-width&#8221; pseudoattribute.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.max.termlength">
+<refmeta>
+<refentrytitle>variablelist.max.termlength</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.max.termlength</refname>
+<refpurpose>Specifies the longest term in variablelists</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.max.termlength.frag">
+&lt;xsl:param name="variablelist.max.termlength"&gt;24&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In variablelists, the <tag>listitem</tag>
+is indented to leave room for the
+<tag>term</tag> elements. That indent may be computed
+if it is not specified with a <tag class="attribute">termlength</tag>
+attribute on the <tag>variablelist</tag> element.
+</para>
+<para>
+The computation counts characters in the
+<tag>term</tag> elements in the list
+to find the longest term. However, some terms are very long
+and would produce extreme indents. This parameter lets you
+set a maximum character count. Any terms longer than the maximum
+would line wrap. The default value is 24.
+</para>
+<para>
+The character counts are converted to physical widths
+by multiplying by 0.50em. There will be some variability
+in how many actual characters fit in the space
+since some characters are wider than others.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.term.separator">
+<refmeta>
+<refentrytitle>variablelist.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.separator</refname>
+<refpurpose>Text to separate <tag>term</tag>s within a multi-term
+<tag>varlistentry</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.term.separator.frag">
+&lt;xsl:param name="variablelist.term.separator"&gt;, &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is placed
+after each <tag>term</tag> except the last.</para>
+
+<note>
+ <para>To generate a line break between multiple <tag>term</tag>s in
+ a <tag>varlistentry</tag>, set a non-zero value for the
+ <parameter>variablelist.term.break.after</parameter> parameter. If
+ you do so, you may also want to set the value of the
+ <parameter>variablelist.term.separator</parameter> parameter to an
+ empty string (to suppress rendering of the default comma and space
+ after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.term.properties">
+<refmeta>
+<refentrytitle>variablelist.term.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.properties</refname>
+<refpurpose>To add properties to the term elements in a variablelist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.term.properties.frag">
+&lt;xsl:attribute-set name="variablelist.term.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+term in a variablelist.
+Use this attribute-set to set
+font properties or alignment, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.term.break.after">
+<refmeta>
+<refentrytitle>variablelist.term.break.after</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.break.after</refname>
+<refpurpose>Generate line break after each <tag>term</tag> within a
+multi-term <tag>varlistentry</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.term.break.after.frag">
+&lt;xsl:param name="variablelist.term.break.after"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set a non-zero value for the
+<parameter>variablelist.term.break.after</parameter> parameter to
+generate a line break between <tag>term</tag>s in a
+multi-term <tag>varlistentry</tag>.</para>
+
+<note>
+<para>If you set a non-zero value for
+<parameter>variablelist.term.break.after</parameter>, you may also
+want to set the value of the
+<parameter>variablelist.term.separator</parameter> parameter to an
+empty string (to suppress rendering of the default comma and space
+after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="qa"><title>QAndASet</title>
+<refentry version="5.0" xml:id="qandadiv.autolabel">
+<refmeta>
+<refentrytitle>qandadiv.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qandadiv.autolabel</refname>
+<refpurpose>Are divisions in QAndASets enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qandadiv.autolabel.frag">&lt;xsl:param name="qandadiv.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, unlabeled qandadivs will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.inherit.numeration">
+<refmeta>
+<refentrytitle>qanda.inherit.numeration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.inherit.numeration</refname>
+<refpurpose>Does enumeration of QandASet components inherit the numeration of parent elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.inherit.numeration.frag">
+&lt;xsl:param name="qanda.inherit.numeration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, numbered <tag>qandadiv</tag> elements and
+<tag>question</tag> and <tag>answer</tag> inherit the enumeration of
+the ancestors of the <tag>qandaset</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.defaultlabel">
+<refmeta>
+<refentrytitle>qanda.defaultlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">number</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">qanda</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.defaultlabel</refname>
+<refpurpose>Sets the default for defaultlabel on QandASet.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.defaultlabel.frag">
+&lt;xsl:param name="qanda.defaultlabel"&gt;number&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If no <literal>defaultlabel</literal> attribute is specified on
+a <tag>qandaset</tag>, this value is used. It is generally one of the legal
+values for the defaultlabel attribute (<literal>none</literal>,
+<literal>number</literal> or
+<literal>qanda</literal>), or one of the additional stylesheet-specific values
+(<literal>qnumber</literal> or <literal>qnumberanda</literal>).
+The default value is 'number'.
+</para>
+<para>The values are rendered as follows:</para>
+<variablelist>
+<varlistentry><term><literal>qanda</literal></term>
+<listitem>
+<para><tag>question</tag>s are labeled "Q:" and
+<tag>answer</tag>s are labeled "A:". </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>number</literal></term>
+<listitem>
+<para>The questions are enumerated and the answers
+are not labeled. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumber</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and answers are not
+labeled.
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumberanda</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and
+the answers are labeled "A:".
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>none</literal></term>
+<listitem>
+<para>No distinguishing label precedes Questions or Answers.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.in.toc">
+<refmeta>
+<refentrytitle>qanda.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.in.toc</refname>
+<refpurpose>Should qandaentry questions appear in
+the document table of contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.in.toc.frag">&lt;xsl:param name="qanda.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), then the generated table of contents
+for a document will include <tag>qandaset</tag> titles,
+<tag>qandadiv</tag> titles,
+and <tag>question</tag> elements. The default value (zero) excludes
+them from the TOC.
+</para>
+<para>This parameter does not affect any tables of contents
+that may be generated inside a qandaset or qandadiv.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.nested.in.toc">
+<refmeta>
+<refentrytitle>qanda.nested.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.nested.in.toc</refname>
+<refpurpose>Should nested answer/qandaentry instances appear in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.nested.in.toc.frag">
+&lt;xsl:param name="qanda.nested.in.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, instances of <tag>qandaentry</tag>
+that are children of <tag>answer</tag> elements are shown in
+the TOC.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="biblio"><title>Bibliography</title>
+<refentry version="5.0" xml:id="bibliography.style">
+<refmeta>
+<refentrytitle>bibliography.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">normal</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iso690</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.style</refname>
+<refpurpose>Style used for formatting of biblioentries.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bibliography.style.frag">
+&lt;xsl:param name="bibliography.style"&gt;normal&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Currently only <literal>normal</literal> and
+<literal>iso690</literal> styles are supported.</para>
+
+<para>In order to use ISO690 style to the full extent you might need
+to use additional markup described on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://wiki.docbook.org/topic/ISO690Bibliography">the
+following WiKi page</link>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="biblioentry.item.separator">
+<refmeta>
+<refentrytitle>biblioentry.item.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.item.separator</refname>
+<refpurpose>Text to separate bibliography entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="biblioentry.item.separator.frag">&lt;xsl:param name="biblioentry.item.separator"&gt;. &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Text to separate bibliography entries
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bibliography.collection">
+<refmeta>
+<refentrytitle>bibliography.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.collection</refname>
+<refpurpose>Name of the bibliography collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bibliography.collection.frag">
+&lt;xsl:param name="bibliography.collection"&gt;http://docbook.sourceforge.net/release/bibliography/bibliography.xml&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Maintaining bibliography entries across a set of documents is tedious, time
+consuming, and error prone. It makes much more sense, usually, to store all of
+the bibliography entries in a single place and simply <quote>extract</quote>
+the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>bibliography.collection</parameter> parameter. To setup a global
+bibliography <quote>database</quote>, follow these steps:</para>
+
+<para>First, create a stand-alone bibliography document that contains all of
+the documents that you wish to reference. Make sure that each bibliography
+entry (whether you use <tag>biblioentry</tag> or <tag>bibliomixed</tag>)
+has an ID.</para>
+
+<para>My global bibliography, <filename>~/bibliography.xml</filename> begins
+like this:</para>
+
+<informalexample>
+<programlisting>&lt;!DOCTYPE bibliography
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;bibliography&gt;&lt;title&gt;References&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"&gt;&lt;abbrev&gt;XML 1.0&lt;/abbrev&gt;Tim Bray,
+Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml"&gt;Extensible Markup
+Language (XML) 1.0 Second Edition&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 2000.
+&lt;/bibliomixed&gt;
+
+&lt;bibliomixed id="xml-names"&gt;&lt;abbrev&gt;Namespaces&lt;/abbrev&gt;Tim Bray,
+Dave Hollander,
+and Andrew Layman, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml-names/"&gt;Namespaces in
+XML&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 1999.
+&lt;/bibliomixed&gt;
+
+&lt;!-- ... --&gt;
+&lt;/bibliography&gt;
+</programlisting>
+</informalexample>
+
+<para>When you create a bibliography in your document, simply
+provide <emphasis>empty</emphasis> <tag>bibliomixed</tag>
+entries for each document that you wish to cite. Make sure that these
+elements have the same ID as the corresponding <quote>real</quote>
+entry in your global bibliography.</para>
+
+<para>For example:</para>
+
+<informalexample>
+<programlisting>&lt;bibliography&gt;&lt;title&gt;Bibliography&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"/&gt;
+&lt;bibliomixed id="xml-names"/&gt;
+&lt;bibliomixed id="DKnuth86"&gt;Donald E. Knuth. &lt;citetitle&gt;Computers and
+Typesetting: Volume B, TeX: The Program&lt;/citetitle&gt;. Addison-Wesley,
+1986. ISBN 0-201-13437-3.
+&lt;/bibliomixed&gt;
+&lt;bibliomixed id="relaxng"/&gt;
+
+&lt;/bibliography&gt;</programlisting>
+</informalexample>
+
+<para>Note that it's perfectly acceptable to mix entries from your
+global bibliography with <quote>normal</quote> entries. You can use
+<tag>xref</tag> or other elements to cross-reference your
+bibliography entries in exactly the same way you do now.</para>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>bibliography.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global bibliography.</para>
+
+<para>The stylesheets will format the bibliography in your document as if
+all of the entries referenced appeared there literally.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bibliography.numbered">
+<refmeta>
+<refentrytitle>bibliography.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.numbered</refname>
+<refpurpose>Should bibliography entries be numbered?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bibliography.numbered.frag">
+&lt;xsl:param name="bibliography.numbered" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero bibliography entries will be numbered</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="biblioentry.properties">
+<refmeta>
+ <refentrytitle>biblioentry.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.properties</refname>
+<refpurpose>To set the style for biblioentry.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="biblioentry.properties.frag">&lt;xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0.5in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-indent"&gt;-0.5in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want biblioentry styled? </para>
+<para>Set the font-size, weight, space-above and space-below, indents, etc. to the style required</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="glossary"><title>Glossary</title>
+<refentry version="5.0" xml:id="glossterm.auto.link">
+<refmeta>
+<refentrytitle>glossterm.auto.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.auto.link</refname>
+<refpurpose>Generate links from glossterm to glossentry automatically?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossterm.auto.link.frag">
+&lt;xsl:param name="glossterm.auto.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links from inline <tag>glossterm</tag>s to the corresponding
+<tag>glossentry</tag> elements in a <tag>glossary</tag> or <tag>glosslist</tag>
+will be automatically generated. This is useful when your glossterms are consistent
+and you don't want to add links manually.</para>
+
+<para>The automatic link generation feature is not used on <tag>glossterm</tag> elements
+that have a <tag class="attribute">linkend</tag> attribute.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="firstterm.only.link">
+<refmeta>
+<refentrytitle>firstterm.only.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>firstterm.only.link</refname>
+<refpurpose>Does automatic glossterm linking only apply to firstterms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="firstterm.only.link.frag">
+&lt;xsl:param name="firstterm.only.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, only <tag>firstterm</tag>s will be automatically linked
+to the glossary. If glossary linking is not enabled, this parameter
+has no effect.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossary.collection">
+<refmeta>
+<refentrytitle>glossary.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.collection</refname>
+<refpurpose>Name of the glossary collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossary.collection.frag">
+&lt;xsl:param name="glossary.collection"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Glossaries maintained independently across a set of documents
+are likely to become inconsistent unless considerable effort is
+expended to keep them in sync. It makes much more sense, usually, to
+store all of the glossary entries in a single place and simply
+<quote>extract</quote> the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>glossary.collection</parameter> parameter. To setup a global
+glossary <quote>database</quote>, follow these steps:</para>
+
+<refsection><info><title>Setting Up the Glossary Database</title></info>
+
+<para>First, create a stand-alone glossary document that contains all of
+the entries that you wish to reference. Make sure that each glossary
+entry has an ID.</para>
+
+<para>Here's an example glossary:</para>
+
+<informalexample>
+<programlisting>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE glossary
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;glossary&gt;
+&lt;glossaryinfo&gt;
+&lt;editor&gt;&lt;firstname&gt;Eric&lt;/firstname&gt;&lt;surname&gt;Raymond&lt;/surname&gt;&lt;/editor&gt;
+&lt;title&gt;Jargon File 4.2.3 (abridged)&lt;/title&gt;
+&lt;releaseinfo&gt;Just some test data&lt;/releaseinfo&gt;
+&lt;/glossaryinfo&gt;
+
+&lt;glossdiv&gt;&lt;title&gt;0&lt;/title&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;0&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;Numeric zero, as opposed to the letter `O' (the 15th letter of
+the English alphabet). In their unmodified forms they look a lot
+alike, and various kluges invented to make them visually distinct have
+compounded the confusion. If your zero is center-dotted and letter-O
+is not, or if letter-O looks almost rectangular but zero looks more
+like an American football stood on end (or the reverse), you're
+probably looking at a modern character display (though the dotted zero
+seems to have originated as an option on IBM 3270 controllers). If
+your zero is slashed but letter-O is not, you're probably looking at
+an old-style ASCII graphic set descended from the default typewheel on
+the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter,
+curse this arrangement). (Interestingly, the slashed zero long
+predates computers; Florian Cajori's monumental "A History of
+Mathematical Notations" notes that it was used in the twelfth and
+thirteenth centuries.) If letter-O has a slash across it and the zero
+does not, your display is tuned for a very old convention used at IBM
+and a few other early mainframe makers (Scandinavians curse &lt;emphasis&gt;this&lt;/emphasis&gt;
+arrangement even more, because it means two of their letters collide).
+Some Burroughs/Unisys equipment displays a zero with a &lt;emphasis&gt;reversed&lt;/emphasis&gt;
+slash. Old CDC computers rendered letter O as an unbroken oval and 0
+as an oval broken at upper right and lower left. And yet another
+convention common on early line printers left zero unornamented but
+added a tail or hook to the letter-O so that it resembled an inverted
+Q or cursive capital letter-O (this was endorsed by a draft ANSI
+standard for how to draw ASCII characters, but the final standard
+changed the distinguisher to a tick-mark in the upper-left corner).
+Are we sufficiently confused yet?&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;1TBS&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para role="accidence"&gt;
+&lt;phrase role="pronounce"&gt;&lt;/phrase&gt;
+&lt;phrase role="partsofspeach"&gt;n&lt;/phrase&gt;
+&lt;/para&gt;
+&lt;para&gt;The "One True Brace Style"&lt;/para&gt;
+&lt;glossseealso&gt;indent style&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossdiv&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+</refsection>
+
+<refsection><info><title>Marking Up Glossary Terms</title></info>
+
+<para>That takes care of the glossary database, now you have to get the entries
+into your document. Unlike bibliography entries, which can be empty, creating
+<quote>placeholder</quote> glossary entries would be very tedious. So instead,
+support for <parameter>glossary.collection</parameter> relies on implicit linking.</para>
+
+<para>In your source document, simply use <tag>firstterm</tag> and
+<tag>glossterm</tag> to identify the terms you wish to have included
+in the glossary. The stylesheets assume that you will either set the
+<tag class="attribute">baseform</tag> attribute correctly, or that the
+content of the element exactly matches a term in your glossary.</para>
+
+<para>If you're using a <parameter>glossary.collection</parameter>, don't
+make explicit links on the terms in your document.</para>
+
+<para>So, in your document, you might write things like this:</para>
+
+<informalexample>
+<programlisting>&lt;para&gt;This is dummy text, without any real meaning.
+The point is simply to reference glossary terms like &lt;glossterm&gt;0&lt;/glossterm&gt;
+and the &lt;firstterm baseform="1TBS"&gt;One True Brace Style (1TBS)&lt;/firstterm&gt;.
+The &lt;glossterm&gt;1TBS&lt;/glossterm&gt;, as you can probably imagine, is a nearly
+religious issue.&lt;/para&gt;</programlisting>
+</informalexample>
+
+<para>If you set the <parameter>firstterm.only.link</parameter> parameter,
+only the terms marked with <tag>firstterm</tag> will be links.
+Otherwise, all the terms will be linked.</para>
+
+</refsection>
+
+<refsection><info><title>Marking Up the Glossary</title></info>
+
+<para>The glossary itself has to be identified for the stylesheets. For lack
+of a better choice, the <tag class="attribute">role</tag> is used.
+To identify the glossary as the target for automatic processing, set
+the role to <quote><literal>auto</literal></quote>. The title of this
+glossary (and any other information from the <tag>glossaryinfo</tag>
+that's rendered by your stylesheet) will be displayed, but the entries will
+come from the database.
+</para>
+
+<para>Unfortunately, the glossary can't be empty, so you must put in
+at least one <tag>glossentry</tag>. The content of this entry
+is irrelevant, it will not be rendered:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+<para>What about glossary divisions? If your glossary database has glossary
+divisions <emphasis>and</emphasis> your automatic glossary contains at least
+one <tag>glossdiv</tag>, the automic glossary will have divisions.
+If the <tag>glossdiv</tag> is missing from either location, no divisions
+will be rendered.</para>
+
+<para>Glossary entries (and divisions, if appropriate) in the glossary will
+occur in precisely the order they occur in your database.</para>
+
+</refsection>
+
+<refsection><info><title>Formatting the Document</title></info>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>glossary.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global glossary.</para>
+
+<para>The stylesheets will format the glossary in your document as if
+all of the entries implicilty referenced appeared there literally.</para>
+</refsection>
+
+<refsection><info><title>Limitations</title></info>
+
+<para>Glossary cross-references <emphasis>within the glossary</emphasis> are
+not supported. For example, this <emphasis>will not</emphasis> work:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+
+<para>If you put glossary cross-references in your glossary that way,
+you'll get the cryptic error: <computeroutput>Warning:
+glossary.collection specified, but there are 0 automatic
+glossaries</computeroutput>.</para>
+
+<para>Instead, you must do two things:</para>
+
+<orderedlist>
+<listitem>
+<para>Markup your glossary using <tag>glossseealso</tag>:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+</listitem>
+
+<listitem>
+<para>Make sure there is at least one <tag>glossterm</tag> reference to
+<glossterm>gloss-2</glossterm> <emphasis>in your document</emphasis>. The
+easiest way to do that is probably within a <tag>remark</tag> in your
+automatic glossary:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;remark&gt;Make sure there's a reference to &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/remark&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+</listitem>
+</orderedlist>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossary.as.blocks">
+<refmeta>
+<refentrytitle>glossary.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.as.blocks</refname>
+<refpurpose>Present glossarys using blocks instead of lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossary.as.blocks.frag">
+&lt;xsl:param name="glossary.as.blocks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>glossary</tag>s will be formatted as
+blocks.</para>
+
+<para>If you have long <tag>glossterm</tag>s, proper list
+markup in the FO case may produce unattractive lists. By setting this
+parameter, you can force the stylesheets to produce block markup
+instead of proper lists.</para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>glossary</tag>: <tag class="xmlpi">dbfo
+glossary-presentation="blocks"</tag> or <tag class="xmlpi">dbfo
+glossary-presentation="list"</tag></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glosslist.as.blocks">
+<refmeta>
+<refentrytitle>glosslist.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glosslist.as.blocks</refname>
+<refpurpose>Use blocks for glosslists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glosslist.as.blocks.frag">
+&lt;xsl:param name="glosslist.as.blocks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>See <parameter>glossary.as.blocks</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossentry.list.item.properties">
+<refmeta>
+<refentrytitle>glossentry.list.item.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.list.item.properties</refname>
+<refpurpose>To add properties to each glossentry in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossentry.list.item.properties.frag">&lt;xsl:attribute-set name="glossentry.list.item.properties"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the fo:list-item containing a
+glossentry in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set
+spacing between entries, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossterm.block.properties">
+<refmeta>
+<refentrytitle>glossterm.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.block.properties</refname>
+<refpurpose>To add properties to the block of a glossentry's glossterm.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossterm.block.properties.frag">&lt;xsl:attribute-set name="glossterm.block.properties"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary term in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is non-zero.
+Use this attribute-set to set the space above and below,
+font properties,
+and any indent for the glossary term.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossdef.block.properties">
+<refmeta>
+<refentrytitle>glossdef.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossdef.block.properties</refname>
+<refpurpose>To add properties to the block of a glossary definition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossdef.block.properties.frag">&lt;xsl:attribute-set name="glossdef.block.properties"&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;.25in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary definition in a glossary when
+the <parameter>glossary.as.blocks</parameter> parameter
+is non-zero.
+Use this attribute-set to set the space above and below,
+any font properties,
+and any indent for the glossary definition.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossterm.list.properties">
+<refmeta>
+<refentrytitle>glossterm.list.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.list.properties</refname>
+<refpurpose>To add properties to the glossterm in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossterm.list.properties.frag">
+&lt;xsl:attribute-set name="glossterm.list.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary term in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set
+font properties, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossdef.list.properties">
+<refmeta>
+<refentrytitle>glossdef.list.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossdef.list.properties</refname>
+<refpurpose>To add properties to the glossary definition in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossdef.list.properties.frag">
+&lt;xsl:attribute-set name="glossdef.list.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary definition in a glossary when
+the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set font properties, for example.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossterm.width">
+<refmeta>
+<refentrytitle>glossterm.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.width</refname>
+<refpurpose>Width of glossterm in list presentation mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossterm.width.frag">
+&lt;xsl:param name="glossterm.width"&gt;2in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the width reserved for glossary terms when
+a list presentation is used.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossterm.separation">
+<refmeta>
+<refentrytitle>glossterm.separation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.separation</refname>
+<refpurpose>Separation between glossary terms and descriptions in list mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossterm.separation.frag">
+&lt;xsl:param name="glossterm.separation"&gt;0.25in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the miminum horizontal
+separation between glossary terms and descriptions when
+they are presented side-by-side using lists
+when the <parameter>glossary.as.blocks</parameter>
+is zero.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossentry.show.acronym">
+<refmeta>
+<refentrytitle>glossentry.show.acronym</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">primary</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.show.acronym</refname>
+<refpurpose>Display <tag>glossentry</tag> acronyms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossentry.show.acronym.frag">
+&lt;xsl:param name="glossentry.show.acronym"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A setting of <quote>yes</quote> means they should be displayed;
+<quote>no</quote> means they shouldn't. If <quote>primary</quote> is used,
+then they are shown as the primary text for the entry.</para>
+
+<note>
+<para>This setting controls both <tag>acronym</tag> and
+<tag>abbrev</tag> elements in the <tag>glossentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossary.sort">
+<refmeta>
+<refentrytitle>glossary.sort</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.sort</refname>
+<refpurpose>Sort glossentry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossary.sort.frag">
+&lt;xsl:param name="glossary.sort" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then the glossentry elements within a
+glossary, glossdiv, or glosslist are sorted on the glossterm, using
+the current lang setting. If zero (the default), then
+glossentry elements are not sorted and are presented
+in document order.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="misc"><title>Miscellaneous</title>
+<refentry version="5.0" xml:id="formal.procedures">
+<refmeta>
+<refentrytitle>formal.procedures</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.procedures</refname>
+<refpurpose>Selects formal or informal procedures</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="formal.procedures.frag">
+&lt;xsl:param name="formal.procedures" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formal procedures are numbered and always have a title.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="formal.title.placement">
+<refmeta>
+<refentrytitle>formal.title.placement</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.placement</refname>
+<refpurpose>Specifies where formal object titles should occur</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="formal.title.placement.frag">
+&lt;xsl:param name="formal.title.placement"&gt;
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies where formal object titles should occur. For each formal object
+type (<tag>figure</tag>,
+<tag>example</tag>,
+<tag>equation</tag>,
+<tag>table</tag>, and <tag>procedure</tag>)
+you can specify either the keyword
+<quote><literal>before</literal></quote> or
+<quote><literal>after</literal></quote>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="runinhead.default.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.default.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.default.title.end.punct</refname>
+<refpurpose>Default punctuation character on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="runinhead.default.title.end.punct.frag">&lt;xsl:param name="runinhead.default.title.end.punct"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, For a <tag>formalpara</tag>, use the specified
+string as the separator between the title and following text. The period is the default value.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="runinhead.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.title.end.punct</refname>
+<refpurpose>Characters that count as punctuation on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="runinhead.title.end.punct.frag">
+&lt;xsl:param name="runinhead.title.end.punct"&gt;.!?:&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify which characters are to be counted as punctuation. These
+characters are checked for a match with the last character of the
+title. If no match is found, the
+<parameter>runinhead.default.title.end.punct</parameter> contents are
+inserted. This is to avoid duplicated punctuation in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="show.comments">
+<refmeta>
+<refentrytitle>show.comments</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.comments</refname>
+<refpurpose>Display <tag>remark</tag> elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="show.comments.frag">
+&lt;xsl:param name="show.comments" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, comments will be displayed, otherwise they
+are suppressed. Comments here refers to the <tag>remark</tag> element
+(which was called <literal>comment</literal> prior to DocBook
+4.0), not XML comments (&lt;-- like this --&gt;) which are
+unavailable.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="punct.honorific">
+<refmeta>
+<refentrytitle>punct.honorific</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>punct.honorific</refname>
+<refpurpose>Punctuation after an honorific in a personal name.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="punct.honorific.frag">
+&lt;xsl:param name="punct.honorific"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the punctuation that should be added after an
+honorific in a personal name.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="segmentedlist.as.table">
+<refmeta>
+<refentrytitle>segmentedlist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>segmentedlist.as.table</refname>
+<refpurpose>Format segmented lists as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="segmentedlist.as.table.frag">
+&lt;xsl:param name="segmentedlist.as.table" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>segmentedlist</tag>s will be formatted as
+tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.as.blocks">
+<refmeta>
+<refentrytitle>variablelist.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.as.blocks</refname>
+<refpurpose>Format <tag>variablelist</tag>s lists as blocks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.as.blocks.frag">
+&lt;xsl:param name="variablelist.as.blocks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>variablelist</tag>s will be formatted as
+blocks.</para>
+
+<para>If you have long terms, proper list markup in the FO case may produce
+unattractive lists. By setting this parameter, you can force the stylesheets
+to produce block markup instead of proper lists.</para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>variablelist</tag>: <tag class="xmlpi">dbfo
+list-presentation="blocks"</tag> or <tag class="xmlpi">dbfo
+list-presentation="list"</tag>.</para>
+
+<para>When using <literal>list-presentation="list"</literal>,
+you can also control the amount of space used for the <tag>term</tag>s with
+the <tag class="xmlpi">dbfo term-width=".25in"</tag> processing instruction,
+the <tag class="attribute">termlength</tag> attribute on <tag>variablelist</tag>,
+or allow the stylesheets to attempt to calculate the amount of space to leave based on the
+number of letters in the longest term.
+</para>
+
+<programlisting> &lt;variablelist&gt;
+ &lt;?dbfo list-presentation="list"?&gt;
+ &lt;?dbfo term-width="1.5in"?&gt;
+ &lt;?dbhtml list-presentation="table"?&gt;
+ &lt;?dbhtml term-width="1.5in"?&gt;
+ &lt;varlistentry&gt;
+ &lt;term&gt;list&lt;/term&gt;
+ &lt;listitem&gt;
+ &lt;para&gt;
+ Formatted as a list even if variablelist.as.blocks is set to 1.
+ &lt;/para&gt;
+ &lt;/listitem&gt;
+ &lt;/varlistentry&gt;
+ &lt;/variablelist&gt;</programlisting>
+
+
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="blockquote.properties">
+<refmeta>
+ <refentrytitle>blockquote.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>blockquote.properties</refname>
+<refpurpose>To set the style for block quotations.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="blockquote.properties.frag">
+&lt;xsl:attribute-set name="blockquote.properties"&gt;
+&lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0.5in&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="margin-{$direction.align.end}"&gt;0.5in&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+&lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>blockquote.properties</parameter> attribute set specifies
+the formating properties of block quotations.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ulink.show">
+<refmeta>
+<refentrytitle>ulink.show</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.show</refname>
+<refpurpose>Display URLs after <tag>ulink</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ulink.show.frag">
+&lt;xsl:param name="ulink.show" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the URL of each <tag>ulink</tag> will
+appear after the text of the link. If the text of the link and the URL
+are identical, the URL is suppressed. </para>
+
+<para>See also <parameter>ulink.footnotes</parameter>.</para>
+
+<note><para>DocBook 5 does not have an <tag>ulink</tag> element. When processing
+DocBoook 5 documents, <parameter>ulink.show</parameter> applies to all inline
+elements that are marked up with <tag class="attribute">xlink:href</tag> attributes
+that point to external resources.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ulink.footnotes">
+<refmeta>
+<refentrytitle>ulink.footnotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.footnotes</refname>
+<refpurpose>Generate footnotes for <tag>ulink</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ulink.footnotes.frag">
+&lt;xsl:param name="ulink.footnotes" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if <parameter>ulink.show</parameter> also is non-zero,
+the URL of each <tag>ulink</tag> will appear as a footnote.</para>
+
+<note><para>DocBook 5 does not have an <tag>ulink</tag> element. When processing
+DocBoook 5 documents, <parameter>ulink.footnotes</parameter> applies to all inline
+elements that are marked up with <tag class="attribute">xlink:href</tag> attributes
+that point to external resources.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ulink.hyphenate">
+<refmeta>
+<refentrytitle>ulink.hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.hyphenate</refname>
+<refpurpose>Allow URLs to be automatically hyphenated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ulink.hyphenate.frag">
+&lt;xsl:param name="ulink.hyphenate"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If not empty, the specified character (or more generally, content) is
+added to URLs after every character included in the string
+in the <parameter>ulink.hyphenate.chars</parameter> parameter (default
+is <quote>/</quote>). If the character in this parameter is a
+Unicode soft hyphen (0x00AD) or Unicode zero-width space (0x200B), some FO
+processors will be able to reasonably hyphenate long URLs.</para>
+
+<para>As of 28 Jan 2002, discretionary hyphens are more widely and correctly
+supported than zero-width spaces for this purpose.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ulink.hyphenate.chars">
+<refmeta>
+<refentrytitle>ulink.hyphenate.chars</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.hyphenate.chars</refname>
+<refpurpose>List of characters to allow ulink URLs to be automatically hyphenated on</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ulink.hyphenate.chars.frag">
+&lt;xsl:param name="ulink.hyphenate.chars"&gt;/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the <parameter>ulink.hyphenate</parameter> is not empty, then
+hyphenation of ulinks is turned on, and any
+character contained in this parameter is treated as an allowable
+hyphenation point.</para>
+
+<para>The default value is <quote>/</quote>, but the parameter
+could be customized
+to contain other URL characters, as for example:</para>
+<programlisting>
+&lt;xsl:param name="ulink.hyphenate.chars"&gt;:/@&amp;?.#&lt;/xsl:param&gt;
+</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="shade.verbatim">
+<refmeta>
+<refentrytitle>shade.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim</refname>
+<refpurpose>Should verbatim environments be shaded?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="shade.verbatim.frag">&lt;xsl:param name="shade.verbatim" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In the FO stylesheet, if this parameter is non-zero then the
+<property>shade.verbatim.style</property> properties will be applied
+to verbatim environments.</para>
+
+<para>In the HTML stylesheet, this parameter is now deprecated. Use
+CSS instead.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="shade.verbatim.style">
+<refmeta>
+<refentrytitle>shade.verbatim.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim.style</refname>
+<refpurpose>Properties that specify the style of shaded verbatim listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="shade.verbatim.style.frag">
+
+&lt;xsl:attribute-set name="shade.verbatim.style"&gt;
+ &lt;xsl:attribute name="background-color"&gt;#E0E0E0&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties that specify the style of shaded verbatim listings. The
+parameters specified (the border and background color) are added to
+the styling of the xsl-fo output. A border might be specified as "thin
+black solid" for example. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/#border">xsl-fo</link></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="hyphenate.verbatim">
+<refmeta>
+<refentrytitle>hyphenate.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate.verbatim</refname>
+<refpurpose>Should verbatim environments be hyphenated on space characters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="hyphenate.verbatim.frag">&lt;xsl:param name="hyphenate.verbatim" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the lines of program listing are too long to fit into one
+line it is quite common to split them at space and indicite by hook
+arrow that code continues on the next line. You can turn on this
+behaviour for <tag>programlisting</tag>,
+<tag>screen</tag> and <tag>synopsis</tag> elements by
+using this parameter.</para>
+
+<para>Note that you must also enable line wrapping for verbatim environments and
+select appropriate hyphenation character (e.g. hook arrow). This can
+be done using <parameter>monospace.verbatim.properties</parameter>
+attribute set:</para>
+
+<programlisting>&lt;xsl:attribute-set name="monospace.verbatim.properties"
+ use-attribute-sets="verbatim.properties monospace.properties"&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;wrap&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenation-character"&gt;&amp;#x25BA;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+
+<para>For a list of arrows available in Unicode see <uri xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unicode.org/charts/PDF/U2190.pdf">http://www.unicode.org/charts/PDF/U2190.pdf</uri> and <uri xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unicode.org/charts/PDF/U2900.pdf">http://www.unicode.org/charts/PDF/U2900.pdf</uri> and make sure that
+selected character is available in the font you are using for verbatim
+environments.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="hyphenate.verbatim.characters">
+<refmeta>
+<refentrytitle>hyphenate.verbatim.characters</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate.verbatim.characters</refname>
+<refpurpose>List of characters after which a line break can occur in listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="hyphenate.verbatim.characters.frag">
+&lt;xsl:param name="hyphenate.verbatim.characters"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you enable <parameter>hyphenate.verbatim</parameter> line
+breaks are allowed only on space characters. If this is not enough for
+your document, you can specify list of additional characters after
+which line break is allowed in this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.svg">
+<refmeta>
+<refentrytitle>use.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.svg</refname>
+<refpurpose>Allow SVG in the result tree?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.svg.frag">
+&lt;xsl:param name="use.svg" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, SVG will be considered an acceptable image format. SVG
+is passed through to the result tree, so correct rendering of the resulting
+diagram depends on the formatter (FO processor or web browser) that is used
+to process the output from the stylesheet.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.role.as.xrefstyle">
+<refmeta>
+<refentrytitle>use.role.as.xrefstyle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.as.xrefstyle</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute for
+<tag class="attribute">xrefstyle</tag> on <tag>xref</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.role.as.xrefstyle.frag">
+&lt;xsl:param name="use.role.as.xrefstyle" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In DocBook documents that conform to a schema older than V4.3, this parameter allows
+<tag class="attribute">role</tag> to serve the purpose of specifying the cross reference style.</para>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>xref</tag> will be used to select the cross reference style.
+In DocBook V4.3, the <tag class="attribute">xrefstyle</tag> attribute was added for this purpose.
+If the <tag class="attribute">xrefstyle</tag> attribute is present,
+<tag class="attribute">role</tag> will be ignored, regardless of the setting
+of this parameter.</para>
+
+</refsection>
+
+<refsection><info><title>Example</title></info>
+
+<para>The following small stylesheet shows how to configure the
+stylesheets to make use of the cross reference style:</para>
+
+<programlisting>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"&gt;
+
+&lt;xsl:import href="../xsl/html/docbook.xsl"/&gt;
+
+&lt;xsl:output method="html"/&gt;
+
+&lt;xsl:param name="local.l10n.xml" select="document('')"/&gt;
+&lt;l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"&gt;
+ &lt;l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"&gt;
+ &lt;l:context name="xref"&gt;
+ &lt;l:template name="chapter" style="title" text="Chapter %n, %t"/&gt;
+ &lt;l:template name="chapter" text="Chapter %n"/&gt;
+ &lt;/l:context&gt;
+ &lt;/l:l10n&gt;
+&lt;/l:i18n&gt;
+
+&lt;/xsl:stylesheet&gt;</programlisting>
+
+<para>With this stylesheet, the cross references in the following document:</para>
+
+<programlisting>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"&gt;
+&lt;book id="book"&gt;&lt;title&gt;Book&lt;/title&gt;
+
+&lt;preface&gt;
+&lt;title&gt;Preface&lt;/title&gt;
+
+&lt;para&gt;Normal: &lt;xref linkend="ch1"/&gt;.&lt;/para&gt;
+&lt;para&gt;Title: &lt;xref xrefstyle="title" linkend="ch1"/&gt;.&lt;/para&gt;
+
+&lt;/preface&gt;
+
+&lt;chapter id="ch1"&gt;
+&lt;title&gt;First Chapter&lt;/title&gt;
+
+&lt;para&gt;Irrelevant.&lt;/para&gt;
+
+&lt;/chapter&gt;
+&lt;/book&gt;</programlisting>
+
+<para>will appear as:</para>
+
+<informalexample>
+<para>Normal: Chapter 1.</para>
+<para>Title: Chapter 1, <emphasis>First Chapter</emphasis>.</para>
+</informalexample>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="menuchoice.separator">
+<refmeta>
+<refentrytitle>menuchoice.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+other than <tag>guimenuitem</tag> and
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="menuchoice.separator.frag">
+&lt;xsl:param name="menuchoice.separator"&gt;+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> other
+than <tag>guimenuitem</tag> and <tag>guisubmenu</tag>. The latter
+elements are linked with <parameter>menuchoice.menu.separator</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="menuchoice.menu.separator">
+<refmeta>
+<refentrytitle>menuchoice.menu.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.menu.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+with <tag>guimenuitem</tag> or
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="menuchoice.menu.separator.frag">
+&lt;xsl:param name="menuchoice.menu.separator"&gt; &#8594; &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> with
+<tag>guimenuitem</tag> or <tag>guisubmenu</tag>. Other elements
+are linked with <parameter>menuchoice.separator</parameter>.
+</para>
+<para>The default value is &amp;#x2192;, which is the
+&amp;rarr; (right arrow) character entity.
+The current FOP (0.20.5) requires setting the font-family
+explicitly.
+</para>
+<para>The default value also includes spaces around the arrow,
+which will allow a line to break. Replace the spaces with
+&amp;#xA0; (nonbreaking space) if you don't want those
+spaces to break.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.float.class">
+<refmeta>
+<refentrytitle>default.float.class</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.float.class</refname>
+<refpurpose>Specifies the default float class</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.float.class.frag">
+&lt;xsl:param name="default.float.class"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($stylesheet.result.type,'html')"&gt;left&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;before&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the direction in which a float should be placed. for
+xsl-fo this is before, for html it is left. For Western texts, the
+before direction is the top of the page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.number.format">
+<refmeta>
+<refentrytitle>footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.number.format.frag">
+&lt;xsl:param name="footnote.number.format"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.footnote.number.format">
+<refmeta>
+<refentrytitle>table.footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.footnote.number.format.frag">
+&lt;xsl:param name="table.footnote.number.format"&gt;a&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>table.footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A) in tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.number.symbols">
+<refmeta>
+<refentrytitle>footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype"/>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.symbols</refname>
+<refpurpose>Special characters to use as footnote markers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.number.symbols.frag">
+&lt;xsl:param name="footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>footnote.number.symbols</parameter> is not the empty string,
+footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.footnote.number.symbols">
+<refmeta>
+<refentrytitle>table.footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.symbols</refname>
+<refpurpose>Special characters to use a footnote markers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.footnote.number.symbols.frag">
+&lt;xsl:param name="table.footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>table.footnote.number.symbols</parameter> is not the empty string,
+table footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>table.footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.properties">
+<refmeta>
+<refentrytitle>footnote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to each footnote body
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.properties.frag">
+&lt;xsl:attribute-set name="footnote.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;&lt;xsl:value-of select="$footnote.font.size"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;&lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-indent"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;&lt;xsl:value-of select="$hyphenate"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;wrap&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="linefeed-treatment"&gt;treat-as-space&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote-block
+for each footnote.
+It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.footnote.properties">
+<refmeta>
+<refentrytitle>table.footnote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.properties</refname>
+<refpurpose>Properties applied to each table footnote body
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.footnote.properties.frag">
+&lt;xsl:attribute-set name="table.footnote.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;&lt;xsl:value-of select="$footnote.font.size"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before"&gt;2pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;&lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote-block
+for each table footnote.
+It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all table footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.mark.properties">
+<refmeta>
+<refentrytitle>footnote.mark.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.mark.properties</refname>
+<refpurpose>Properties applied to each footnote mark
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.mark.properties.frag">
+&lt;xsl:attribute-set name="footnote.mark.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;75%&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote mark used
+for each footnote.
+It should contain only inline properties.
+</para>
+
+<para>The property to make the mark a superscript is contained in the
+footnote template itself, because the current version of FOP reports
+an error if baseline-shift is used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.sep.leader.properties">
+<refmeta>
+<refentrytitle>footnote.sep.leader.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.sep.leader.properties</refname>
+<refpurpose>Properties associated with footnote separators</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.sep.leader.properties.frag">
+&lt;xsl:attribute-set name="footnote.sep.leader.properties"&gt;
+ &lt;xsl:attribute name="color"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="leader-pattern"&gt;rule&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="leader-length"&gt;1in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for the rule line that separates the
+footnotes from the body text.
+These are properties applied to the fo:leader used as
+the separator.
+</para>
+<para>If you want to do more than just set properties on
+the leader element, then you can customize the template
+named <literal>footnote.separator</literal> in
+<filename>fo/pagesetup.xsl</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.with.number.and.title">
+<refmeta>
+<refentrytitle>xref.with.number.and.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.with.number.and.title</refname>
+<refpurpose>Use number and title in cross references</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.with.number.and.title.frag">
+&lt;xsl:param name="xref.with.number.and.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A cross reference may include the number (for example, the number of
+an example or figure) and the <tag>title</tag> which is a required child of some
+targets. This parameter inserts both the relevant number as well as
+the title into the link. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="superscript.properties">
+<refmeta>
+<refentrytitle>superscript.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>superscript.properties</refname>
+<refpurpose>Properties associated with superscripts</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="superscript.properties.frag">
+&lt;xsl:attribute-set name="superscript.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;75%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies styling properties for superscripts.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="subscript.properties">
+<refmeta>
+<refentrytitle>subscript.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>subscript.properties</refname>
+<refpurpose>Properties associated with subscripts</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="subscript.properties.frag">
+&lt;xsl:attribute-set name="subscript.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;75%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies styling properties for subscripts.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="pgwide.properties">
+<refmeta>
+<refentrytitle>pgwide.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pgwide.properties</refname>
+<refpurpose>Properties to make a figure or table page wide.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="pgwide.properties.frag">
+&lt;xsl:attribute-set name="pgwide.properties"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used to set the properties
+that make a figure or table "page wide" in fo output.
+It comes into effect when an attribute <literal>pgwide="1"</literal>
+is used.
+</para>
+
+<para>
+By default, it sets <parameter>start-indent</parameter>
+to <literal>0pt</literal>.
+In a stylesheet that sets the parameter
+<parameter>body.start.indent</parameter>
+to a non-zero value in order to indent body text,
+this attribute set can be used to outdent pgwide
+figures to the start margin.
+</para>
+
+<para>If a document uses a multi-column page layout,
+then this attribute set could try setting <parameter>span</parameter>
+to a value of <literal>all</literal>. However, this may
+not work with some processors because a span property must be on an
+fo:block that is a direct child of fo:flow. It may work in
+some processors anyway.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="highlight.source">
+<refmeta>
+<refentrytitle>highlight.source</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.source</refname>
+<refpurpose>Should the content of <tag>programlisting</tag>
+be syntactically highlighted?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="highlight.source.frag">
+&lt;xsl:param name="highlight.source" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the
+content of <tag>programlisting</tag> elements. You specify the language for each programlisting
+by using the <tag class="attribute">language</tag> attribute. The <parameter>highlight.default.language</parameter>
+parameter can be used to specify the language for programlistings without a <tag class="attribute">language</tag>
+attribute. Syntax highlighting also works for <tag>screen</tag> and <tag>synopsis</tag> elements.</para>
+
+<para>The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be
+downloaded separately (see below).</para>
+
+<itemizedlist>
+<para>In order to use this extension, you must</para>
+
+<listitem><para>add <filename>xslthl-2.x.x.jar</filename> to your Java classpath. The latest version is available
+from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceforge.net/projects/xslthl">the XSLT syntax highlighting project</link>
+at SourceForge.</para>
+</listitem>
+<listitem>
+<para>use a customization layer in which you import one of the following stylesheet modules:
+<itemizedlist>
+ <listitem>
+ <para><filename>html/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml-1_1/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>fo/highlight.xsl</filename>
+ </para>
+</listitem>
+</itemizedlist>
+</para>
+</listitem>
+<listitem><para>let either the <literal>xslthl.config</literal> Java system property or the
+<parameter>highlight.xslthl.config</parameter> parameter point to the configuration file for syntax
+highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file,
+<filename>highlighting/xslthl-config.xml</filename>.</para>
+</listitem>
+</itemizedlist>
+
+<para>The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is
+an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.)</para>
+
+<para>The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows:</para>
+
+<informalexample>
+<para><command>java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar
+-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet
+-o test.html test.xml myhtml.xsl</command></para>
+</informalexample>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="highlight.xslthl.config">
+<refmeta>
+<refentrytitle>highlight.xslthl.config</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.xslthl.config</refname>
+<refpurpose>Location of XSLTHL configuration file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="highlight.xslthl.config.frag">
+&lt;xsl:param name="highlight.xslthl.config"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This location has precedence over the corresponding Java property.</para>
+
+<para>Please note that usually you have to specify location as URL not
+just as a simple path on the local
+filesystem. E.g. <filename>file:///home/user/xslthl/my-xslthl-config.xml</filename>.</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="highlight.default.language">
+<refmeta>
+<refentrytitle>highlight.default.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.default.language</refname>
+<refpurpose>Default language of programlisting</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="highlight.default.language.frag">
+&lt;xsl:param name="highlight.default.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This language is used when there is no language attribute on programlisting.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="email.delimiters.enabled">
+<refmeta>
+<refentrytitle>email.delimiters.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.delimiters.enabled</refname>
+<refpurpose>Generate delimiters around email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="email.delimiters.enabled.frag">
+&lt;xsl:param name="email.delimiters.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, delimiters
+
+<footnote><para>For delimiters, the
+stylesheets are currently hard-coded to output angle
+brackets.</para></footnote>
+
+are generated around e-mail addresses
+(the output of the <tag>email</tag> element).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="email.mailto.enabled">
+<refmeta>
+<refentrytitle>email.mailto.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.mailto.enabled</refname>
+<refpurpose>Generate mailto: links for email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="email.mailto.enabled.frag">
+&lt;xsl:param name="email.mailto.enabled" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero the generated output for the <tag>email</tag> element
+will be a clickable mailto: link that brings up the default mail client
+on the system.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.container.element">
+<refmeta>
+<refentrytitle>section.container.element</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">block</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">wrapper</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.container.element</refname>
+<refpurpose>Select XSL-FO element name to contain sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.container.element.frag">
+&lt;xsl:param name="section.container.element"&gt;block&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the element name for outer container of
+each section. The choices are <literal>block</literal> (default)
+or <literal>wrapper</literal>.
+The <literal>fo:</literal> namespace prefix is added
+by the stylesheet to form the full element name.
+</para>
+
+<para>This element receives the section <literal>id</literal>
+attribute and the appropriate section level attribute-set.
+</para>
+
+<para>Changing this parameter to <literal>wrapper</literal>
+is only necessary when producing multi-column output
+that contains page-wide spans. Using <literal>fo:wrapper</literal>
+avoids the nesting of <literal>fo:block</literal>
+elements that prevents spans from working (the standard says
+a span must be on a block that is a direct child of
+<literal>fo:flow</literal>).
+</para>
+
+<para>If set to <literal>wrapper</literal>, the
+section attribute-sets only support properties
+that are inheritable. That's because there is no
+block to apply them to. Properties such as
+font-family are inheritable, but properties such as
+border are not.
+</para>
+
+<para>Only some XSL-FO processors need to use this parameter.
+The Antenna House processor, for example, will handle
+spans in nested blocks without changing the element name.
+The RenderX XEP product and FOP follow the XSL-FO standard
+and need to use <literal>wrapper</literal>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="monospace.verbatim.font.width">
+<refmeta>
+<refentrytitle>monospace.verbatim.font.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.verbatim.font.width</refname>
+<refpurpose>Width of a single monospace font character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="monospace.verbatim.font.width.frag">
+&lt;xsl:param name="monospace.verbatim.font.width"&gt;0.60em&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies with em units the width of a single character
+of the monospace font. The default value is <literal>0.6em</literal>.</para>
+
+<para>This parameter is only used when a <tag>screen</tag>
+or <tag>programlisting</tag> element has a
+<tag class="attribute">width</tag> attribute, which is
+expressed as a plain integer to indicate the maximum character count
+of each line.
+To convert this character count to an actual maximum width
+measurement, the width of the font characters must be provided.
+Different monospace fonts have different character width,
+so this parameter should be adjusted to fit the
+monospace font being used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="exsl.node.set.available">
+<refmeta>
+<refentrytitle>exsl.node.set.available</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>exsl.node.set.available</refname>
+<refpurpose>Is the test function-available('exsl:node-set') true?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="exsl.node.set.available.frag">&lt;xsl:param name="exsl.node.set.available"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')"&gt;1&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;0&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+then the exsl:node-set() function is available to be used in
+the stylesheet.
+If zero, then the function is not available.
+This param automatically detects the presence of
+the function and does not normally need to be set manually.</para>
+
+<para>This param was created to handle a long-standing
+bug in the Xalan processor that fails to detect the
+function even though it is available.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bookmarks.collapse">
+<refmeta>
+<refentrytitle>bookmarks.collapse</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bookmarks.collapse</refname>
+<refpurpose>Specifies the initial state of bookmarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bookmarks.collapse.frag">
+&lt;xsl:param name="bookmarks.collapse" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the bookmark tree is collapsed so that only the
+top-level bookmarks are displayed initially. Otherwise, the whole tree
+of bookmarks is displayed.</para>
+
+<para>This parameter currently works with FOP 0.93 or later.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="graphics"><title>Graphics</title>
+<refentry version="5.0" xml:id="graphic.default.extension">
+<refmeta>
+<refentrytitle>graphic.default.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphic.default.extension</refname>
+<refpurpose>Default extension for graphic filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="graphic.default.extension.frag">&lt;xsl:param name="graphic.default.extension"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a <tag>graphic</tag> or <tag>mediaobject</tag>
+includes a reference to a filename that does not include an extension,
+and the <tag class="attribute">format</tag> attribute is
+<emphasis>unspecified</emphasis>, the default extension will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.image.width">
+<refmeta>
+<refentrytitle>default.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.image.width</refname>
+<refpurpose>The default width of images</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.image.width.frag">
+&lt;xsl:param name="default.image.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, this value will be used for the
+<tag class="attribute">width</tag> attribute on images that do not specify any
+<emphasis xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title="DocBook 5: The Definitive Guide" xlink:href="http://docbook.org/tdg5/en/html/imagedata.html#viewport.area">viewport dimensions</emphasis>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="preferred.mediaobject.role">
+<refmeta>
+<refentrytitle>preferred.mediaobject.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preferred.mediaobject.role</refname>
+<refpurpose>Select which mediaobject to use based on
+this value of an object's <tag class="attribute">role</tag> attribute.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="preferred.mediaobject.role.frag">
+&lt;xsl:param name="preferred.mediaobject.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A mediaobject may contain several objects such as imageobjects.
+If the parameter <parameter>use.role.for.mediaobject</parameter> is
+non-zero, then the <literal>role</literal> attribute on
+<tag>imageobject</tag>s and other objects within a
+<tag>mediaobject</tag> container will be used to select which object
+will be used. If one of the objects has a role value that matches the
+<parameter>preferred.mediaobject.role</parameter> parameter, then it
+has first priority for selection. If more than one has such a role
+value, the first one is used.
+</para>
+<para>
+See the <parameter>use.role.for.mediaobject</parameter> parameter
+for the sequence of selection.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.role.for.mediaobject">
+<refmeta>
+<refentrytitle>use.role.for.mediaobject</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.for.mediaobject</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute
+value for selecting which of several objects within a mediaobject to use.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.role.for.mediaobject.frag">
+&lt;xsl:param name="use.role.for.mediaobject" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>imageobject</tag>s or other objects within a <tag>mediaobject</tag> container will be used to select which object will be
+used.
+</para>
+<para>
+The order of selection when then parameter is non-zero is:
+</para>
+<orderedlist>
+<listitem>
+ <para>If the stylesheet parameter <parameter>preferred.mediaobject.role</parameter> has a value, then the object whose role equals that value is selected.</para>
+</listitem>
+<listitem>
+<para>Else if an object's role attribute has a value of
+<literal>html</literal> for HTML processing or
+<literal>fo</literal> for FO output, then the first
+of such objects is selected.
+</para>
+</listitem>
+<listitem>
+<para>Else the first suitable object is selected.</para>
+</listitem>
+</orderedlist>
+<para>
+If the value of
+<parameter>use.role.for.mediaobject</parameter>
+is zero, then role attributes are not considered
+and the first suitable object
+with or without a role value is used.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ignore.image.scaling">
+<refmeta>
+<refentrytitle>ignore.image.scaling</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ignore.image.scaling</refname>
+<refpurpose>Tell the stylesheets to ignore the author's image scaling attributes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ignore.image.scaling.frag">
+&lt;xsl:param name="ignore.image.scaling" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the scaling attributes on graphics and media objects are
+ignored.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="img.src.path">
+<refmeta>
+<refentrytitle>img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>img.src.path</refname>
+<refpurpose>Path to HTML/FO image files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="img.src.path.frag">&lt;xsl:param name="img.src.path"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Add a path prefix to the value of the <tag class="attribute">fileref</tag>
+attribute of <tag>graphic</tag>, <tag>inlinegraphic</tag>, and <tag>imagedata</tag> elements. The resulting
+compound path is used in the output as the value of the <tag class="attribute">src</tag>
+attribute of <tag class="element">img</tag> (HTML) or <tag class="element">external-graphic</tag> (FO).
+</para>
+
+<para>
+The path given by <literal>img.src.path</literal> could be relative to the directory where the HTML/FO
+files are created, or it could be an absolute URI.
+The default value is empty.
+Be sure to include a trailing slash if needed.
+</para>
+
+<para>This prefix is not applied to any filerefs that start
+with "/" or contain "//:".
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="keep.relative.image.uris">
+<refmeta>
+<refentrytitle>keep.relative.image.uris</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keep.relative.image.uris</refname>
+<refpurpose>Should image URIs be resolved against xml:base?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="keep.relative.image.uris.frag">
+
+&lt;xsl:param name="keep.relative.image.uris" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, relative URIs (in, for example
+<literal>fileref</literal> attributes) will be used in the generated
+output. Otherwise, the URIs will be made absolute with respect to the
+base URI.</para>
+
+<para>Note that the stylesheets calculate (and use) the absolute form
+for some purposes, this only applies to the resulting output.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="general"><title>Pagination and General Styles</title>
+<partintro xml:id="margins_partintro">
+<section xml:id="margins_intro"><title>Understanding XSL FO Margins</title>
+
+<para>To make sense of the parameters in this section, it's useful to
+consider <xref linkend="fig.pagemodel"/>.</para>
+
+<figure xml:id="fig.pagemodel">
+ <title>Page Model</title>
+ <mediaobject xml:id="fo-pageregions-image">
+ <imageobject role="html">
+ <imagedata fileref="page.png"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata fileref="fo/page.png"/>
+ </imageobject>
+ <textobject><phrase>Figure showing page margins</phrase></textobject>
+ <textobject>
+ <para>This figure shows the physical page with the various FO page regions
+ identified.</para>
+ </textobject>
+ </mediaobject>
+</figure>
+
+<para>First, let's consider the regions on the page.</para>
+
+<para>The white region is the physical page. Its dimensions are determined by
+the <parameter>page.height</parameter> and <parameter>page.width</parameter>
+parameters.</para>
+
+<para>The yellow region is the region-body. The size and placement of
+the region body is constrained by the dimensions labelled in the
+figure.</para>
+
+<para>The pink region at the top of the page is the region-before. The
+darker area inside the region-before is the header text. In XSL, the default
+display alignment for a region is <literal>before</literal>, but the
+DocBook stylesheets still explicitly make it <literal>before</literal>. That's
+why the darker area is at the top.</para>
+
+<para>The pink region at the bottom of the page is the region-after.
+The darker area is the footer text. In XSL, the default display
+alignment for a region is <literal>before</literal>,
+but the DocBook stylesheets explicitly make it
+<literal>after</literal>. That's why the darker area is at the bottom.</para>
+
+<para>The dimensions in the figure are:</para>
+
+<orderedlist numeration="upperalpha">
+<listitem><para>The page-master margin-top.
+</para></listitem>
+<listitem><para>The region-before extent.
+</para></listitem>
+<listitem><para>The region-body margin-top.
+</para></listitem>
+<listitem><para>The region-after extent.
+</para></listitem>
+<listitem><para>The page-master margin-bottom.
+</para></listitem>
+<listitem><para>The region-body margin-bottom.
+</para></listitem>
+<listitem><para>The sum of the page-master margin-left and the
+region-body margin-left. In DocBook, the region-body margin-left is
+zero by default, so this is simply the page-master margin-left.
+</para></listitem>
+<listitem><para>The sum of the page-master margin-right and the
+region-body margin-right. In DocBook, the region-body margin-right is
+zero by default, so this is simply the page-master margin-right.
+</para></listitem>
+</orderedlist>
+
+</section>
+</partintro>
+
+<refentry version="5.0" xml:id="page.height">
+<refmeta>
+<refentrytitle>page.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.height</refname>
+<refpurpose>The height of the physical page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.height.frag">&lt;xsl:param name="page.height"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$page.orientation = 'portrait'"&gt;
+ &lt;xsl:value-of select="$page.height.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$page.width.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The page height is generally calculated from the
+<parameter>paper.type</parameter> and
+<parameter>page.orientation</parameter> parameters.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.height.portrait">
+<refmeta>
+<refentrytitle>page.height.portrait</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.height.portrait</refname>
+<refpurpose>Specify the physical size of the long edge of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.height.portrait.frag">&lt;xsl:param name="page.height.portrait"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$paper.type = 'A4landscape'"&gt;210mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USletter'"&gt;11in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlandscape'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '4A0'"&gt;2378mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '2A0'"&gt;1682mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A0'"&gt;1189mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A1'"&gt;841mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A2'"&gt;594mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A3'"&gt;420mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A4'"&gt;297mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A5'"&gt;210mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A6'"&gt;148mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A7'"&gt;105mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A8'"&gt;74mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A9'"&gt;52mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A10'"&gt;37mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B0'"&gt;1414mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B1'"&gt;1000mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B2'"&gt;707mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B3'"&gt;500mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B4'"&gt;353mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B5'"&gt;250mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B6'"&gt;176mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B7'"&gt;125mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B8'"&gt;88mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B9'"&gt;62mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B10'"&gt;44mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C0'"&gt;1297mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C1'"&gt;917mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C2'"&gt;648mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C3'"&gt;458mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C4'"&gt;324mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C5'"&gt;229mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C6'"&gt;162mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C7'"&gt;114mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C8'"&gt;81mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C9'"&gt;57mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C10'"&gt;40mm&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;11in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The portrait page height is the length of the long
+edge of the physical page.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.margin.bottom">
+<refmeta>
+<refentrytitle>page.margin.bottom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.bottom</refname>
+<refpurpose>The bottom margin of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.margin.bottom.frag">
+&lt;xsl:param name="page.margin.bottom"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The bottom page margin is the distance from the bottom of the region-after
+to the physical bottom of the page.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.margin.inner">
+<refmeta>
+<refentrytitle>page.margin.inner</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.inner</refname>
+<refpurpose>The inner page margin</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.margin.inner.frag">&lt;xsl:param name="page.margin.inner"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$double.sided != 0"&gt;1.25in&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;1in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The inner page margin is the distance from bound edge of the
+page to the first column of text. </para>
+
+<para>The inner page margin is the distance from bound edge of the
+page to the outer edge of the first column of text.</para>
+
+<para>In left-to-right text direction,
+this is the left margin of recto (front side) pages.
+For single-sided output, it is the left margin
+of all pages.</para>
+
+<para>In right-to-left text direction,
+this is the right margin of recto pages.
+For single-sided output, this is the
+right margin of all pages.</para>
+
+<note>
+<para>Current versions (at least as of version 4.13)
+of the XEP XSL-FO processor do not
+correctly handle these margin settings for documents
+with right-to-left text direction.
+The workaround in that situation is to reverse
+the values for <parameter>page.margin.inner</parameter>
+and <parameter>page.margin.outer</parameter>, until
+this bug is fixed by RenderX. It does not affect documents
+with left-to-right text direction.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.margin.outer">
+<refmeta>
+<refentrytitle>page.margin.outer</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.outer</refname>
+<refpurpose>The outer page margin</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.margin.outer.frag">&lt;xsl:param name="page.margin.outer"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$double.sided != 0"&gt;0.75in&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;1in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The outer page margin is the distance from non-bound edge of the
+page to the outer edge of the last column of text.</para>
+
+<para>In left-to-right text direction,
+this is the right margin of recto (front side) pages.
+For single-sided output, it is the right margin
+of all pages.</para>
+
+<para>In right-to-left text direction,
+this is the left margin of recto pages.
+For single-sided output, this is the
+left margin of all pages.</para>
+
+<note>
+<para>Current versions (at least as of version 4.13)
+of the XEP XSL-FO processor do not
+correctly handle these margin settings for documents
+with right-to-left text direction.
+The workaround in that situation is to reverse
+the values for <parameter>page.margin.inner</parameter>
+and <parameter>page.margin.outer</parameter>, until
+this bug is fixed by RenderX. It does not affect documents
+with left-to-right text direction.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.margin.top">
+<refmeta>
+<refentrytitle>page.margin.top</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.top</refname>
+<refpurpose>The top margin of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.margin.top.frag">
+&lt;xsl:param name="page.margin.top"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The top page margin is the distance from the physical top of the
+page to the top of the region-before.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.orientation">
+<refmeta>
+<refentrytitle>page.orientation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">portrait</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">landscape</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.orientation</refname>
+<refpurpose>Select the page orientation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.orientation.frag">
+&lt;xsl:param name="page.orientation"&gt;portrait&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para> Select one from portrait or landscape.
+In portrait orientation, the short edge is horizontal; in
+landscape orientation, it is vertical.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.width">
+<refmeta>
+<refentrytitle>page.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.width</refname>
+<refpurpose>The width of the physical page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.width.frag">&lt;xsl:param name="page.width"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$page.orientation = 'portrait'"&gt;
+ &lt;xsl:value-of select="$page.width.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="$page.height.portrait"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The page width is generally calculated from the
+<parameter>paper.type</parameter> and
+<parameter>page.orientation</parameter> parameters.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="page.width.portrait">
+<refmeta>
+<refentrytitle>page.width.portrait</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.width.portrait</refname>
+<refpurpose>Specify the physical size of the short edge of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="page.width.portrait.frag">&lt;xsl:param name="page.width.portrait"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$paper.type = 'USletter'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '4A0'"&gt;1682mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = '2A0'"&gt;1189mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A0'"&gt;841mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A1'"&gt;594mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A2'"&gt;420mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A3'"&gt;297mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A4'"&gt;210mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A5'"&gt;148mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A6'"&gt;105mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A7'"&gt;74mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A8'"&gt;52mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A9'"&gt;37mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'A10'"&gt;26mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B0'"&gt;1000mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B1'"&gt;707mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B2'"&gt;500mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B3'"&gt;353mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B4'"&gt;250mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B5'"&gt;176mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B6'"&gt;125mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B7'"&gt;88mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B8'"&gt;62mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B9'"&gt;44mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'B10'"&gt;31mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C0'"&gt;917mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C1'"&gt;648mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C2'"&gt;458mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C3'"&gt;324mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C4'"&gt;229mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C5'"&gt;162mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C6'"&gt;114mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C7'"&gt;81mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C8'"&gt;57mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C9'"&gt;40mm&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'C10'"&gt;28mm&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;8.5in&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The portrait page width is the length of the short
+edge of the physical page.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="paper.type">
+<refmeta>
+<refentrytitle>paper.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USletter<alt>8.5x11in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlandscape<alt>11x8.5in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegal<alt>8.5inx14in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegallandscape<alt>14inx8.5in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">4A0<alt>2378x1682mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">2A0<alt>1682x1189mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A0<alt>1189x841mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A1<alt>841x594mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A2<alt>594x420mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A3<alt>420x297mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A4<alt>297x210mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A5<alt>210x148mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A6<alt>148x105mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A7<alt>105x74mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A8<alt>74x52mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A9<alt>52x37mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A10<alt>37x26mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B0<alt>1414x1000mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B1<alt>1000x707mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B2<alt>707x500mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B3<alt>500x353mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B4<alt>353x250mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B5<alt>250x176mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B6<alt>176x125mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B7<alt>125x88mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B8<alt>88x62mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B9<alt>62x44mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B10<alt>44x31mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C0<alt>1297x917mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C1<alt>917x648mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C2<alt>648x458mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C3<alt>458x324mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C4<alt>324x229mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C5<alt>229x162mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C6<alt>162x114mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C7<alt>114x81mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C8<alt>81x57mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C9<alt>57x40mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C10<alt>40x28mm</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>paper.type</refname>
+<refpurpose>Select the paper type</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="paper.type.frag">
+&lt;xsl:param name="paper.type"&gt;USletter&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The paper type is a convenient way to specify the paper size.
+The list of known paper sizes includes USletter and most of the A,
+B, and C sizes. See <parameter>page.width.portrait</parameter>, for example.
+
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="double.sided">
+<refmeta>
+<refentrytitle>double.sided</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>double.sided</refname>
+<refpurpose>Is the document to be printed double sided?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="double.sided.frag">
+&lt;xsl:param name="double.sided" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Double-sided documents are printed with a slightly wider margin
+on the binding edge of the page.
+</para>
+<para>FIXME: The current set of parameters does not take writing direction
+into account.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.margin.bottom">
+<refmeta>
+<refentrytitle>body.margin.bottom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.margin.bottom</refname>
+<refpurpose>The bottom margin of the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.margin.bottom.frag">
+&lt;xsl:param name="body.margin.bottom"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body bottom margin is the distance from the last line of text
+in the page body to the bottom of the region-after.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.margin.top">
+<refmeta>
+<refentrytitle>body.margin.top</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.margin.top</refname>
+<refpurpose>To specify the size of the top margin of a page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.margin.top.frag">
+&lt;xsl:param name="body.margin.top"&gt;0.5in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body top margin is the distance from the top of the
+region-before to the first line of text in the page body.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.start.indent">
+<refmeta>
+<refentrytitle>body.start.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.start.indent</refname>
+<refpurpose>The start-indent for the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.start.indent.frag">
+&lt;xsl:param name="body.start.indent"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$fop.extensions != 0"&gt;0pt&lt;/xsl:when&gt;
+ &lt;xsl:when test="$passivetex.extensions != 0"&gt;0pt&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;4pc&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter provides
+the means of indenting the body text relative to
+section titles.
+For left-to-right text direction, it indents the left side.
+For right-to-left text direction, it indents the right side.
+It is used in place of the
+<parameter>title.margin.left</parameter> for
+all XSL-FO processors except FOP 0.25.
+It enables support for side floats to appear
+in the indented margin area.
+</para>
+<para>This start-indent property is added to the fo:flow
+for certain page sequences. Which page-sequences it is
+applied to is determined by the template named
+<literal>set.flow.properties</literal>.
+By default, that template adds it to the flow
+for page-sequences using the <quote>body</quote>
+master-reference, as well as appendixes and prefaces.
+</para>
+<para>If this parameter is used, section titles should have
+a start-indent value of 0pt if they are to be
+outdented relative to the body text.
+</para>
+
+<para>If you are using FOP, then set this parameter to a zero
+width value and set the <parameter>title.margin.left</parameter>
+parameter to the negative value of the desired indent.
+</para>
+
+<para>See also <parameter>body.end.indent</parameter> and
+<parameter>title.margin.left</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.end.indent">
+<refmeta>
+<refentrytitle>body.end.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.end.indent</refname>
+<refpurpose>The end-indent for the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.end.indent.frag">
+&lt;xsl:param name="body.end.indent"&gt;0pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This end-indent property is added to the fo:flow
+for certain page sequences. Which page-sequences it is
+applied to is determined by the template named
+<literal>set.flow.properties</literal>.
+By default, that template adds it to the flow
+for page-sequences using the <quote>body</quote>
+master-reference, as well as appendixes and prefaces.
+</para>
+
+<para>See also <parameter>body.start.indent</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="alignment">
+<refmeta>
+<refentrytitle>alignment</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+ <refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">center</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">justify</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>alignment</refname>
+<refpurpose>Specify the default text alignment</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="alignment.frag">&lt;xsl:param name="alignment"&gt;justify&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default text alignment is used for most body text.
+Allowed values are
+<literal>left</literal>,
+<literal>right</literal>,
+<literal>start</literal>,
+<literal>end</literal>,
+<literal>center</literal>,
+<literal>justify</literal>.
+The default value is <literal>justify</literal>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="hyphenate">
+<refmeta>
+<refentrytitle>hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">closed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">true</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">false</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate</refname>
+<refpurpose>Specify hyphenation behavior</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="hyphenate.frag">&lt;xsl:param name="hyphenate"&gt;true&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, words may be hyphenated. Otherwise, they may not.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="line-height">
+<refmeta>
+<refentrytitle>line-height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>line-height</refname>
+<refpurpose>Specify the line-height property</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="line-height.frag">
+&lt;xsl:param name="line-height"&gt;normal&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the line-height property.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.count.back">
+<refmeta>
+<refentrytitle>column.count.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.back</refname>
+<refpurpose>Number of columns on back matter pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.count.back.frag">
+&lt;xsl:param name="column.count.back" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on back matter (appendix, glossary, etc.) pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.count.body">
+<refmeta>
+<refentrytitle>column.count.body</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.body</refname>
+<refpurpose>Number of columns on body pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.count.body.frag">
+&lt;xsl:param name="column.count.body" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on body pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.count.front">
+<refmeta>
+<refentrytitle>column.count.front</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.front</refname>
+<refpurpose>Number of columns on front matter pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.count.front.frag">
+&lt;xsl:param name="column.count.front" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on front matter (dedication, preface, etc.) pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.count.index">
+<refmeta>
+<refentrytitle>column.count.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.index</refname>
+<refpurpose>Number of columns on index pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.count.index.frag">
+&lt;xsl:param name="column.count.index"&gt;2&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on index pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.count.lot">
+<refmeta>
+<refentrytitle>column.count.lot</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.lot</refname>
+<refpurpose>Number of columns on a 'List-of-Titles' page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.count.lot.frag">
+&lt;xsl:param name="column.count.lot" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on a page sequence containing the Table of Contents,
+List of Figures, etc.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.count.titlepage">
+<refmeta>
+<refentrytitle>column.count.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.titlepage</refname>
+<refpurpose>Number of columns on a title page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.count.titlepage.frag">
+&lt;xsl:param name="column.count.titlepage" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on a title page</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.gap.back">
+<refmeta>
+<refentrytitle>column.gap.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.back</refname>
+<refpurpose>Gap between columns in back matter</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.gap.back.frag">
+&lt;xsl:param name="column.gap.back"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in back matter (if
+<parameter>column.count.back</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.gap.body">
+<refmeta>
+<refentrytitle>column.gap.body</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.body</refname>
+<refpurpose>Gap between columns in the body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.gap.body.frag">
+&lt;xsl:param name="column.gap.body"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in body matter (if
+<parameter>column.count.body</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.gap.front">
+<refmeta>
+<refentrytitle>column.gap.front</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.front</refname>
+<refpurpose>Gap between columns in the front matter</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.gap.front.frag">
+&lt;xsl:param name="column.gap.front"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in front matter (if
+<parameter>column.count.front</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.gap.index">
+<refmeta>
+<refentrytitle>column.gap.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.index</refname>
+<refpurpose>Gap between columns in the index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.gap.index.frag">
+&lt;xsl:param name="column.gap.index"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in indexes (if
+<parameter>column.count.index</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.gap.lot">
+<refmeta>
+<refentrytitle>column.gap.lot</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.lot</refname>
+<refpurpose>Gap between columns on a 'List-of-Titles' page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.gap.lot.frag">
+&lt;xsl:param name="column.gap.lot"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns on 'List-of-Titles' pages (if
+<parameter>column.count.lot</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="column.gap.titlepage">
+<refmeta>
+<refentrytitle>column.gap.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.titlepage</refname>
+<refpurpose>Gap between columns on title pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="column.gap.titlepage.frag">
+&lt;xsl:param name="column.gap.titlepage"&gt;12pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns on title pages (if
+<parameter>column.count.titlepage</parameter> is greater than one).</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="region.after.extent">
+<refmeta>
+<refentrytitle>region.after.extent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>region.after.extent</refname>
+<refpurpose>Specifies the height of the footer.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="region.after.extent.frag">
+&lt;xsl:param name="region.after.extent"&gt;0.4in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The region after extent is the height of the area where footers
+are printed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="region.before.extent">
+<refmeta>
+<refentrytitle>region.before.extent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>region.before.extent</refname>
+<refpurpose>Specifies the height of the header</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="region.before.extent.frag">
+&lt;xsl:param name="region.before.extent"&gt;0.4in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The region before extent is the height of the area where headers
+are printed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.units">
+<refmeta>
+<refentrytitle>default.units</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">cm</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">mm</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">in</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">pt</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">pc</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">px</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">em</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.units</refname>
+<refpurpose>Default units for an unqualified dimension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.units.frag">
+&lt;xsl:param name="default.units"&gt;pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If an unqualified dimension is encountered (for example, in a
+graphic width), the <parameter>default.units</parameter> will be used for the
+units. Unqualified dimensions are not allowed in XSL Formatting Objects.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="normal.para.spacing">
+<refmeta>
+<refentrytitle>normal.para.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>normal.para.spacing</refname>
+<refpurpose>What space do you want between normal paragraphs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="normal.para.spacing.frag">&lt;xsl:attribute-set name="normal.para.spacing"&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the spacing required between normal paragraphs</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.font.master">
+<refmeta>
+<refentrytitle>body.font.master</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.master</refname>
+<refpurpose>Specifies the default point size for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.font.master.frag">
+&lt;xsl:param name="body.font.master"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font size is specified in two parameters
+(<parameter>body.font.master</parameter> and <parameter>body.font.size</parameter>)
+so that math can be performed on the font size by XSLT.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.font.size">
+<refmeta>
+<refentrytitle>body.font.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.size</refname>
+<refpurpose>Specifies the default font size for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.font.size.frag">
+&lt;xsl:param name="body.font.size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font size is specified in two parameters
+(<parameter>body.font.master</parameter> and <parameter>body.font.size</parameter>)
+so that math can be performed on the font size by XSLT.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.font.size">
+<refmeta>
+<refentrytitle>footnote.font.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.font.size</refname>
+<refpurpose>The font size for footnotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.font.size.frag">&lt;xsl:param name="footnote.font.size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 0.8"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The footnote font size is used for...footnotes!
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="title.margin.left">
+<refmeta>
+<refentrytitle>title.margin.left</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>title.margin.left</refname>
+<refpurpose>Adjust the left margin for titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="title.margin.left.frag">
+&lt;xsl:param name="title.margin.left"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$fop.extensions != 0"&gt;-4pc&lt;/xsl:when&gt;
+ &lt;xsl:when test="$passivetex.extensions != 0"&gt;0pt&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;0pt&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter provides
+the means of adjusting the left margin for titles
+when the XSL-FO processor being used is
+an old version of FOP (0.25 and earlier).
+It is only useful when the <parameter>fop.extensions</parameter>
+is nonzero.</para>
+
+<para>The left margin of the body region
+is calculated to include this space,
+and titles are outdented to the left outside
+the body region by this amount,
+effectively leaving titles at the intended left margin
+and the body text indented.
+Currently this method is only used for old FOP because
+it cannot properly use the <parameter>body.start.indent</parameter>
+parameter.
+</para>
+<para>
+The default value when the <parameter>fop.extensions</parameter>
+parameter is nonzero is -4pc, which means the
+body text is indented 4 picas relative to
+the titles.
+The default value when the <parameter>fop.extensions</parameter>
+parameter equals zero is 0pt, and
+the body indent should instead be specified
+using the <parameter>body.start.indent</parameter>
+parameter.
+</para>
+<para>
+If you set the value to zero, be sure to still include
+a unit indicator such as <literal>0pt</literal>, or
+the FO processor will report errors.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="draft.mode">
+<refmeta>
+<refentrytitle>draft.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.mode</refname>
+<refpurpose>Select draft mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="draft.mode.frag">
+&lt;xsl:param name="draft.mode"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects draft mode. If <parameter>draft.mode</parameter> is
+<quote><literal>yes</literal></quote>, the entire document will be treated
+as a draft. If it is <quote><literal>no</literal></quote>, the entire document
+will be treated as a final copy. If it is <quote><literal>maybe</literal></quote>,
+individual sections will be treated as draft or final independently, depending
+on how their <literal>status</literal> attribute is set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="draft.watermark.image">
+<refmeta>
+<refentrytitle>draft.watermark.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.watermark.image</refname>
+<refpurpose>The URI of the image to be used for draft watermarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="draft.watermark.image.frag">
+&lt;xsl:param name="draft.watermark.image"&gt;images/draft.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The image to be used for draft watermarks.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="headers.on.blank.pages">
+<refmeta>
+<refentrytitle>headers.on.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>headers.on.blank.pages</refname>
+<refpurpose>Put headers on blank pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="headers.on.blank.pages.frag">
+&lt;xsl:param name="headers.on.blank.pages" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, headers will be placed on blank pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footers.on.blank.pages">
+<refmeta>
+<refentrytitle>footers.on.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footers.on.blank.pages</refname>
+<refpurpose>Put footers on blank pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footers.on.blank.pages.frag">
+&lt;xsl:param name="footers.on.blank.pages" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, footers will be placed on blank pages.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="header.rule">
+<refmeta>
+<refentrytitle>header.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.rule</refname>
+<refpurpose>Rule under headers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="header.rule.frag">
+&lt;xsl:param name="header.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn below the page headers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footer.rule">
+<refmeta>
+<refentrytitle>footer.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.rule</refname>
+<refpurpose>Rule over footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footer.rule.frag">
+&lt;xsl:param name="footer.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn above the page footers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="header.column.widths">
+<refmeta>
+<refentrytitle>header.column.widths</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.column.widths</refname>
+<refpurpose>Specify relative widths of header areas</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting xml:id="header.column.widths.frag">
+&lt;xsl:param name="header.column.widths"&gt;1 1 1&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page headers in print output use a three column table
+to position text at the left, center, and right side of
+the header on the page.
+This parameter lets you specify the relative sizes of the
+three columns. The default value is
+"1 1 1".</para>
+
+<para>The parameter value must be three numbers, separated
+by white space. The first number represents the relative
+width of the inside header for
+double-sided output. The second number is the relative
+width of the center header. The third number is the
+relative width of the outside header for
+double-sided output.
+</para>
+<para>For single-sided output, the first number is the
+relative width of left header for left-to-right
+text direction, or the right header for right-to-left
+text direction.
+The third number is the
+relative width of right header for left-to-right
+text direction, or the left header for right-to-left
+text direction.</para>
+
+<para>The numbers are used to specify the column widths
+for the table that makes up the header area.
+In the FO output, this looks like:
+</para>
+
+<programlisting>
+&lt;fo:table-column column-number="1"
+ column-width="proportional-column-width(1)"/&gt;
+</programlisting>
+
+<para>
+The <literal>proportional-column-width()</literal>
+function computes a column width by dividing its
+argument by the total of the arguments for all the columns, and
+then multiplying the result by the width of the whole table
+(assuming all the column specs use the function).
+Its argument can be any positive integer or floating point number.
+Zero is an acceptable value, although some FO processors
+may warn about it, in which case using a very small number might
+be more satisfactory.
+</para>
+
+<para>For example, the value "1 2 1" means the center
+header should have twice the width of the other areas.
+A value of "0 0 1" means the entire header area
+is reserved for the right (or outside) header text.
+Note that to keep the center area centered on
+the page, the left and right values must be
+the same. A specification like "1 2 3" means the
+center area is no longer centered on the page
+since the right area is three times the width of the left area.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footer.column.widths">
+<refmeta>
+<refentrytitle>footer.column.widths</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.column.widths</refname>
+<refpurpose>Specify relative widths of footer areas</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting xml:id="footer.column.widths.frag">
+&lt;xsl:param name="footer.column.widths"&gt;1 1 1&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page footers in print output use a three column table
+to position text at the left, center, and right side of
+the footer on the page.
+This parameter lets you specify the relative sizes of the
+three columns. The default value is
+"1 1 1".</para>
+
+<para>The parameter value must be three numbers, separated
+by white space. The first number represents the relative
+width of the inside footer for
+double-sided output. The second number is the relative
+width of the center footer. The third number is the
+relative width of the outside footer for
+double-sided output.
+</para>
+<para>For single-sided output, the first number is the
+relative width of left footer for left-to-right
+text direction, or the right footer for right-to-left
+text direction.
+The third number is the
+relative width of right footer for left-to-right
+text direction, or the left footer for right-to-left
+text direction.</para>
+
+<para>The numbers are used to specify the column widths
+for the table that makes up the footer area.
+In the FO output, this looks like:
+</para>
+
+<programlisting>
+&lt;fo:table-column column-number="1"
+ column-width="proportional-column-width(1)"/&gt;
+</programlisting>
+
+<para>
+The <literal>proportional-column-width()</literal>
+function computes a column width by dividing its
+argument by the total of the arguments for all the columns, and
+then multiplying the result by the width of the whole table
+(assuming all the column specs use the function).
+Its argument can be any positive integer or floating point number.
+Zero is an acceptable value, although some FO processors
+may warn about it, in which case using a very small number might
+be more satisfactory.
+</para>
+
+<para>For example, the value "1 2 1" means the center
+footer should have twice the width of the other areas.
+A value of "0 0 1" means the entire footer area
+is reserved for the right (or outside) footer text.
+Note that to keep the center area centered on
+the page, the left and right values must be
+the same. A specification like "1 2 3" means the
+center area is no longer centered on the page
+since the right area is three times the width of the left area.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="header.table.properties">
+<refmeta>
+<refentrytitle>header.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.table.properties</refname>
+<refpurpose>Apply properties to the header layout table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="header.table.properties.frag">
+&lt;xsl:attribute-set name="header.table.properties"&gt;
+ &lt;xsl:attribute name="table-layout"&gt;fixed&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="width"&gt;100%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties applied to the table that lays out the page header.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="header.table.height">
+<refmeta>
+<refentrytitle>header.table.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.table.height</refname>
+<refpurpose>Specify the minimum height of the table containing the running page headers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting xml:id="header.table.height.frag">
+&lt;xsl:param name="header.table.height"&gt;14pt&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page headers in print output use a three column table
+to position text at the left, center, and right side of
+the header on the page.
+This parameter lets you specify the minimum height
+of the single row in the table.
+Since this specifies only the minimum height,
+the table should automatically grow to fit taller content.
+The default value is "14pt".</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footer.table.properties">
+<refmeta>
+<refentrytitle>footer.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.table.properties</refname>
+<refpurpose>Apply properties to the footer layout table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footer.table.properties.frag">
+&lt;xsl:attribute-set name="footer.table.properties"&gt;
+ &lt;xsl:attribute name="table-layout"&gt;fixed&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="width"&gt;100%&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties applied to the table that lays out the page footer.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footer.table.height">
+<refmeta>
+<refentrytitle>footer.table.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.table.height</refname>
+<refpurpose>Specify the minimum height of the table containing the running page footers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><programlisting xml:id="footer.table.height.frag">
+&lt;xsl:param name="footer.table.height"&gt;14pt&lt;/xsl:param&gt;
+</programlisting></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page footers in print output use a three column table
+to position text at the left, center, and right side of
+the footer on the page.
+This parameter lets you specify the minimum height
+of the single row in the table.
+Since this specifies only the minimum height,
+the table should automatically grow to fit taller content.
+The default value is "14pt".</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="header.content.properties">
+<refmeta>
+<refentrytitle>header.content.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.content.properties</refname>
+<refpurpose>Properties of page header content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="header.content.properties.frag">
+&lt;xsl:attribute-set name="header.content.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties of page header content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footer.content.properties">
+<refmeta>
+<refentrytitle>footer.content.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.content.properties</refname>
+<refpurpose>Properties of page footer content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footer.content.properties.frag">
+&lt;xsl:attribute-set name="footer.content.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties of page footer content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="marker.section.level">
+<refmeta>
+<refentrytitle>marker.section.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>marker.section.level</refname>
+<refpurpose>Control depth of sections shown in running headers or footers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="marker.section.level.frag">
+&lt;xsl:param name="marker.section.level"&gt;2&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>marker.section.level</parameter> parameter
+controls the depth of section levels that may be displayed
+in running headers and footers. For example, if the value
+is 2 (the default), then titles from <tag>sect1</tag> and
+<tag>sect2</tag> or equivalent <tag>section</tag>
+elements are candidates for use in running headers and
+footers.
+</para>
+<para>Each candidate title is marked in the FO output with a
+<tag>&lt;fo:marker marker-class-name="section.head.marker"&gt;</tag>
+element.
+</para>
+<para>In order for such titles to appear in headers
+or footers, the <literal>header.content</literal>
+or <literal>footer.content</literal> template
+must be customized to retrieve the marker using
+an output element such as:
+</para>
+<programlisting>
+&lt;fo:retrieve-marker retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/&gt;
+</programlisting>
+
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="fonts"><title>Font Families</title>
+<refentry version="5.0" xml:id="body.font.family">
+<refmeta>
+<refentrytitle>body.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.family</refname>
+<refpurpose>The default font family for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.font.family.frag">
+&lt;xsl:param name="body.font.family"&gt;serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font family is the default font used for text in the page body.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="dingbat.font.family">
+<refmeta>
+<refentrytitle>dingbat.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dingbat.font.family</refname>
+<refpurpose>The font family for copyright, quotes, and other symbols</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="dingbat.font.family.frag">
+&lt;xsl:param name="dingbat.font.family"&gt;serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The dingbat font family is used for dingbats. If it is defined
+as the empty string, no font change is effected around dingbats.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="monospace.font.family">
+<refmeta>
+<refentrytitle>monospace.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.font.family</refname>
+<refpurpose>The default font family for monospace environments</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="monospace.font.family.frag">
+&lt;xsl:param name="monospace.font.family"&gt;monospace&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The monospace font family is used for verbatim environments
+(program listings, screens, etc.).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="sans.font.family">
+<refmeta>
+<refentrytitle>sans.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sans.font.family</refname>
+<refpurpose>The default sans-serif font family</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="sans.font.family.frag">
+&lt;xsl:param name="sans.font.family"&gt;sans-serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default sans-serif font family. At the present, this isn't
+actually used by the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="title.font.family">
+<refmeta>
+<refentrytitle>title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>title.font.family</refname>
+<refpurpose>The default font family for titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="title.font.family.frag">
+&lt;xsl:param name="title.font.family"&gt;sans-serif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The title font family is used for titles (chapter, section, figure,
+etc.)
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="symbol.font.family">
+<refmeta>
+<refentrytitle>symbol.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>symbol.font.family</refname>
+<refpurpose>The font families to be searched for symbols outside
+ of the body font</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="symbol.font.family.frag">
+&lt;xsl:param name="symbol.font.family"&gt;Symbol,ZapfDingbats&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A typical body or title font does not contain all
+the character glyphs that DocBook supports. This parameter
+specifies additional fonts that should be searched for
+special characters not in the normal font.
+These symbol font names are automatically appended
+to the body or title font family name when fonts
+are specified in a
+<tag class="attribute">font-family</tag>
+property in the FO output.
+</para>
+<para>The symbol font names should be entered as a
+comma-separated list. The default value is
+<literal>Symbol,ZapfDingbats</literal>.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="propsets"><title>Property Sets</title>
+<refentry version="5.0" xml:id="formal.object.properties">
+<refmeta>
+<refentrytitle>formal.object.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.object.properties</refname>
+<refpurpose>Properties associated with a formal object such as a figure, or other component that has a title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="formal.object.properties.frag">
+&lt;xsl:attribute-set name="formal.object.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for formal objects in docbook. Specify the spacing
+before and after the object.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="formal.title.properties">
+<refmeta>
+<refentrytitle>formal.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.properties</refname>
+<refpurpose>Style the title element of formal object such as a figure.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="formal.title.properties.frag">
+&lt;xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.2"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.4em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;0.6em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;0.8em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify how the title should be styled. Specify the font size and weight of the title of the formal object.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="informal.object.properties">
+<refmeta>
+<refentrytitle>informal.object.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informal.object.properties</refname>
+<refpurpose>Properties associated with an informal (untitled) object, such as an informalfigure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="informal.object.properties.frag">&lt;xsl:attribute-set name="informal.object.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.5em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>The styling for informal objects in docbook. Specify the spacing before and after the object.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="monospace.properties">
+<refmeta>
+<refentrytitle>monospace.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.properties</refname>
+<refpurpose>Properties of monospaced content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="monospace.properties.frag">
+&lt;xsl:attribute-set name="monospace.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$monospace.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font name for monospaced output. This property set
+used to set the font-size as well, but that doesn't work very well
+when different fonts are used (as they are in titles and paragraphs,
+for example).</para>
+
+<para>If you want to set the font-size in a customization layer, it's
+probably going to be more appropriate to set font-size-adjust, if your
+formatter supports it.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="verbatim.properties">
+<refmeta>
+<refentrytitle>verbatim.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>verbatim.properties</refname>
+<refpurpose>Properties associated with verbatim text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="verbatim.properties.frag">
+&lt;xsl:attribute-set name="verbatim.properties"&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.optimum"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;no-wrap&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="white-space-collapse"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="white-space-treatment"&gt;preserve&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="linefeed-treatment"&gt;preserve&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This attribute set is used on all verbatim environments.</para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="monospace.verbatim.properties">
+<refmeta>
+<refentrytitle>monospace.verbatim.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.verbatim.properties</refname>
+<refpurpose>What font and size do you want for monospaced content?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="monospace.verbatim.properties.frag">
+&lt;xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;no-wrap&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the font name and size you want for monospaced output</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="sidebar.properties">
+<refmeta>
+<refentrytitle>sidebar.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.properties</refname>
+<refpurpose>Attribute set for sidebar properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="sidebar.properties.frag">
+&lt;xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties"&gt;
+ &lt;xsl:attribute name="border-style"&gt;solid&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="border-width"&gt;1pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="border-color"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="background-color"&gt;#DDDDDD&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-start"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-end"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-top"&gt;6pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-bottom"&gt;6pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;0pt&lt;/xsl:attribute&gt;
+&lt;!--
+ &lt;xsl:attribute name="margin-top"&gt;6pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;6pt&lt;/xsl:attribute&gt;
+--&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for sidebars.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="sidebar.title.properties">
+<refmeta>
+<refentrytitle>sidebar.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.title.properties</refname>
+<refpurpose>Attribute set for sidebar titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="sidebar.title.properties.frag">
+&lt;xsl:attribute-set name="sidebar.title.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for sidebars titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="sidebar.float.type">
+<refmeta>
+<refentrytitle>sidebar.float.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">before</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inside</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outside</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.float.type</refname>
+<refpurpose>Select type of float for sidebar elements</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="sidebar.float.type.frag">
+&lt;xsl:param name="sidebar.float.type"&gt;none&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the type of float for sidebar elements.
+</para>
+<itemizedlist>
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>none</literal></quote>, then
+no float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>before</literal></quote>, then
+the float appears at the top of the page. On some processors,
+that may be the next page rather than the current page.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>left</literal></quote>,
+then a left side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>start</literal></quote>,
+then when the text direction is left-to-right a left side float is used.
+When the text direction is right-to-left, a right side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>right</literal></quote>,
+then a right side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>end</literal></quote>,
+then when the text direction is left-to-right a right side float is used.
+When the text direction is right-to-left, a left side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If your XSL-FO processor supports floats positioned on the
+<quote><literal>inside</literal></quote> or
+<quote><literal>outside</literal></quote>
+of double-sided pages, then you have those two
+options for side floats as well.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="sidebar.float.width">
+<refmeta>
+<refentrytitle>sidebar.float.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.float.width</refname>
+<refpurpose>Set the default width for sidebars</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="sidebar.float.width.frag">
+&lt;xsl:param name="sidebar.float.width"&gt;1in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the default width for sidebars when used as a side float.
+The width determines the degree to which the sidebar block intrudes into
+the text area.
+</para>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>before</literal></quote> or
+<quote><literal>none</literal></quote>, then
+this parameter is ignored.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="margin.note.properties">
+<refmeta>
+<refentrytitle>margin.note.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.properties</refname>
+<refpurpose>Attribute set for margin.note properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="margin.note.properties.frag">
+&lt;xsl:attribute-set name="margin.note.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;90%&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for margin notes.
+By default, margin notes are not implemented for any
+element. A stylesheet customization is needed to make
+use of this attribute-set.</para>
+
+<para>You can use a template named <quote>floater</quote>
+to create the customization.
+That template can create side floats by specifying the
+content and characteristics as template parameters.
+</para>
+
+<para>For example:</para>
+<programlisting>&lt;xsl:template match="para[@role='marginnote']"&gt;
+ &lt;xsl:call-template name="floater"&gt;
+ &lt;xsl:with-param name="position"&gt;
+ &lt;xsl:value-of select="$margin.note.float.type"/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="width"&gt;
+ &lt;xsl:value-of select="$margin.note.width"/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="content"&gt;
+ &lt;xsl:apply-imports/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+&lt;/xsl:template&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="margin.note.title.properties">
+<refmeta>
+<refentrytitle>margin.note.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.title.properties</refname>
+<refpurpose>Attribute set for margin note titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="margin.note.title.properties.frag">
+&lt;xsl:attribute-set name="margin.note.title.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for margin note titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="margin.note.float.type">
+<refmeta>
+<refentrytitle>margin.note.float.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">before</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inside</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outside</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.float.type</refname>
+<refpurpose>Select type of float for margin note customizations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="margin.note.float.type.frag">
+&lt;xsl:param name="margin.note.float.type"&gt;none&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the type of float for margin notes.
+DocBook does not define a margin note element, so this
+feature must be implemented as a customization of the stylesheet.
+See <parameter>margin.note.properties</parameter> for
+an example.
+</para>
+<itemizedlist>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>none</literal></quote>, then
+no float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>before</literal></quote>, then
+the float appears at the top of the page. On some processors,
+that may be the next page rather than the current page.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>left</literal></quote> or
+<quote><literal>start</literal></quote>, then
+a left side float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>right</literal></quote> or
+<quote><literal>end</literal></quote>, then
+a right side float is used.
+</para>
+</listitem>
+<listitem>
+<para>If your XSL-FO processor supports floats positioned on the
+<quote><literal>inside</literal></quote> or
+<quote><literal>outside</literal></quote>
+of double-sided pages, then you have those two
+options for side floats as well.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="margin.note.width">
+<refmeta>
+<refentrytitle>margin.note.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.width</refname>
+<refpurpose>Set the default width for margin notes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="margin.note.width.frag">
+&lt;xsl:param name="margin.note.width"&gt;1in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the default width for margin notes when used as a side
+float. The width determines the degree to which the margin note block
+intrudes into the text area.
+</para>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>before</literal></quote> or
+<quote><literal>none</literal></quote>, then
+this parameter is ignored.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="component.title.properties">
+<refmeta>
+<refentrytitle>component.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.title.properties</refname>
+<refpurpose>Properties for component titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="component.title.properties.frag">
+&lt;xsl:attribute-set name="component.title.properties"&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 0.8')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 1.2')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography)) or (parent::slides | parent::slidesinfo)"&gt;center&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;start&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;&lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all component titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="component.titlepage.properties">
+<refmeta>
+<refentrytitle>component.titlepage.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.titlepage.properties</refname>
+<refpurpose>Properties for component titlepages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="component.titlepage.properties.frag">
+&lt;xsl:attribute-set name="component.titlepage.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that are applied to the outer block containing
+all the component title page information.
+Its main use is to set a <literal>span="all"</literal>
+property on the block that is a direct child of the flow.</para>
+
+<para>This attribute-set also applies to index titlepages. It is empty by default.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.title.properties">
+<refmeta>
+<refentrytitle>section.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.properties</refname>
+<refpurpose>Properties for section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.title.properties.frag">
+&lt;xsl:attribute-set name="section.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;!-- font size is calculated dynamically by section.heading template --&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1.0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;start&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="start-indent"&gt;&lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.title.level1.properties">
+<refmeta>
+<refentrytitle>section.title.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level1.properties</refname>
+<refpurpose>Properties for level-1 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.title.level1.properties.frag">
+&lt;xsl:attribute-set name="section.title.level1.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 2.0736"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-1 section titles.</para>
+
+</refsection>
+</refentry>
+
+
+<refentry version="5.0" xml:id="section.title.level2.properties">
+<refmeta>
+<refentrytitle>section.title.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level2.properties</refname>
+<refpurpose>Properties for level-2 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.title.level2.properties.frag">
+&lt;xsl:attribute-set name="section.title.level2.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.728"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-2 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.title.level3.properties">
+<refmeta>
+<refentrytitle>section.title.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level3.properties</refname>
+<refpurpose>Properties for level-3 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.title.level3.properties.frag">
+&lt;xsl:attribute-set name="section.title.level3.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.44"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-3 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.title.level4.properties">
+<refmeta>
+<refentrytitle>section.title.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level4.properties</refname>
+<refpurpose>Properties for level-4 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.title.level4.properties.frag">
+&lt;xsl:attribute-set name="section.title.level4.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.2"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-4 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.title.level5.properties">
+<refmeta>
+<refentrytitle>section.title.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level5.properties</refname>
+<refpurpose>Properties for level-5 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.title.level5.properties.frag">
+&lt;xsl:attribute-set name="section.title.level5.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-5 section titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.title.level6.properties">
+<refmeta>
+<refentrytitle>section.title.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level6.properties</refname>
+<refpurpose>Properties for level-6 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.title.level6.properties.frag">
+&lt;xsl:attribute-set name="section.title.level6.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-6 section titles. This property set is actually
+used for all titles below level 5.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.properties">
+<refmeta>
+<refentrytitle>section.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.properties</refname>
+<refpurpose>Properties for all section levels</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.properties.frag">
+&lt;xsl:attribute-set name="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of all section levels, and therefore apply to
+the whole section.
+This attribute set is inherited by the
+more specific attribute sets such as
+<tag>section.level1.properties</tag>.
+The default is empty.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.level1.properties">
+<refmeta>
+<refentrytitle>section.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level1.properties</refname>
+<refpurpose>Properties for level-1 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.level1.properties.frag">
+&lt;xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-1 section, and therefore apply to
+the whole section. This includes <tag>sect1</tag>
+elements and <tag>section</tag> elements at level 1.
+</para>
+
+<para>For example, you could start each level-1 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level1.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.level2.properties">
+<refmeta>
+<refentrytitle>section.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level2.properties</refname>
+<refpurpose>Properties for level-2 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.level2.properties.frag">
+&lt;xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-2 section, and therefore apply to
+the whole section. This includes <tag>sect2</tag>
+elements and <tag>section</tag> elements at level 2.
+</para>
+
+<para>For example, you could start each level-2 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level2.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.level3.properties">
+<refmeta>
+<refentrytitle>section.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level3.properties</refname>
+<refpurpose>Properties for level-3 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.level3.properties.frag">
+&lt;xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-3 section, and therefore apply to
+the whole section. This includes <tag>sect3</tag>
+elements and <tag>section</tag> elements at level 3.
+</para>
+
+<para>For example, you could start each level-3 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level3.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.level4.properties">
+<refmeta>
+<refentrytitle>section.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level4.properties</refname>
+<refpurpose>Properties for level-4 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.level4.properties.frag">
+&lt;xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-4 section, and therefore apply to
+the whole section. This includes <tag>sect4</tag>
+elements and <tag>section</tag> elements at level 4.
+</para>
+
+<para>For example, you could start each level-4 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level4.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.level5.properties">
+<refmeta>
+<refentrytitle>section.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level5.properties</refname>
+<refpurpose>Properties for level-5 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.level5.properties.frag">
+&lt;xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-5 section, and therefore apply to
+the whole section. This includes <tag>sect5</tag>
+elements and <tag>section</tag> elements at level 5.
+</para>
+
+<para>For example, you could start each level-5 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level5.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.level6.properties">
+<refmeta>
+<refentrytitle>section.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level6.properties</refname>
+<refpurpose>Properties for level-6 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.level6.properties.frag">
+&lt;xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level 6 or lower section, and therefore apply to
+the whole section. This includes
+<tag>section</tag> elements at level 6 and lower.
+</para>
+
+<para>For example, you could start each level-6 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level6.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="figure.properties">
+<refmeta>
+<refentrytitle>figure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>figure.properties</refname>
+<refpurpose>Properties associated with a figure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="figure.properties.frag">
+&lt;xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for figures.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="example.properties">
+<refmeta>
+<refentrytitle>example.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>example.properties</refname>
+<refpurpose>Properties associated with a example</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="example.properties.frag">
+&lt;xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for examples.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="equation.properties">
+<refmeta>
+<refentrytitle>equation.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>equation.properties</refname>
+<refpurpose>Properties associated with a equation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="equation.properties.frag">
+&lt;xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for equations.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="equation.number.properties">
+<refmeta>
+<refentrytitle>equation.number.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>equation.number.properties</refname>
+<refpurpose>Properties that apply to the <tag>fo:table-cell</tag> containing the number
+of an <tag>equation</tag> that does not have a title.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="equation.number.properties.frag">&lt;xsl:attribute-set name="equation.number.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;end&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="display-align"&gt;center&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to the fo:table-cell containing the number
+of an equation when it has no title. The number in an equation with a
+title is formatted along with the title, and this attribute-set does not apply.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.properties">
+<refmeta>
+<refentrytitle>table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.properties</refname>
+<refpurpose>Properties associated with the block surrounding a table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.properties.frag">
+&lt;xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;auto&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for tables. This parameter should really
+have been called <literal>table.block.properties</literal> or something
+like that, but we&#8217;re leaving it to avoid backwards-compatibility
+problems.</para>
+
+<para>See also <parameter>table.table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="informalfigure.properties">
+<refmeta>
+<refentrytitle>informalfigure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalfigure.properties</refname>
+<refpurpose>Properties associated with an informalfigure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="informalfigure.properties.frag">
+&lt;xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalfigures.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="informalexample.properties">
+<refmeta>
+<refentrytitle>informalexample.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalexample.properties</refname>
+<refpurpose>Properties associated with an informalexample</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="informalexample.properties.frag">
+&lt;xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalexamples.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="informalequation.properties">
+<refmeta>
+<refentrytitle>informalequation.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalequation.properties</refname>
+<refpurpose>Properties associated with an informalequation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="informalequation.properties.frag">
+&lt;xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalequations.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="informaltable.properties">
+<refmeta>
+<refentrytitle>informaltable.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informaltable.properties</refname>
+<refpurpose>Properties associated with the block surrounding an informaltable</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="informaltable.properties.frag">
+&lt;xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for informaltables. This parameter should really
+have been called <literal>informaltable.block.properties</literal> or something
+like that, but we&#8217;re leaving it to avoid backwards-compatibility
+problems.</para>
+
+<para>See also <parameter>table.table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="procedure.properties">
+<refmeta>
+<refentrytitle>procedure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>procedure.properties</refname>
+<refpurpose>Properties associated with a procedure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="procedure.properties.frag">
+&lt;xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties"&gt;
+ &lt;xsl:attribute name="keep-together.within-column"&gt;auto&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for procedures.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="root.properties">
+<refmeta>
+<refentrytitle>root.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root.properties</refname>
+<refpurpose>The properties of the fo:root element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="root.properties.frag">
+&lt;xsl:attribute-set name="root.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$body.fontset"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;
+ &lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="line-height"&gt;
+ &lt;xsl:value-of select="$line-height"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-selection-strategy"&gt;character-by-character&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="line-height-shift-adjustment"&gt;disregard-shifts&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="writing-mode"&gt;
+ &lt;xsl:value-of select="$direction.mode"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set is used on the <tag>fo:root</tag> element of
+an FO file. It defines a set of default, global parameters.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.title.properties">
+<refmeta>
+<refentrytitle>qanda.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.properties</refname>
+<refpurpose>Properties for qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.title.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;!-- font size is calculated dynamically by qanda.heading template --&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;0.8em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;1.0em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;1.2em&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.title.level1.properties">
+<refmeta>
+<refentrytitle>qanda.title.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level1.properties</refname>
+<refpurpose>Properties for level-1 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.title.level1.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level1.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 2.0736"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-1 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.title.level2.properties">
+<refmeta>
+<refentrytitle>qanda.title.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level2.properties</refname>
+<refpurpose>Properties for level-2 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.title.level2.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level2.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.728"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-2 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.title.level3.properties">
+<refmeta>
+<refentrytitle>qanda.title.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level3.properties</refname>
+<refpurpose>Properties for level-3 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.title.level3.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level3.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.44"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-3 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.title.level4.properties">
+<refmeta>
+<refentrytitle>qanda.title.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level4.properties</refname>
+<refpurpose>Properties for level-4 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.title.level4.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level4.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master * 1.2"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-4 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.title.level5.properties">
+<refmeta>
+<refentrytitle>qanda.title.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level5.properties</refname>
+<refpurpose>Properties for level-5 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.title.level5.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level5.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-5 qanda set titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.title.level6.properties">
+<refmeta>
+<refentrytitle>qanda.title.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level6.properties</refname>
+<refpurpose>Properties for level-6 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.title.level6.properties.frag">
+&lt;xsl:attribute-set name="qanda.title.level6.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.master"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-6 qanda set titles.
+This property set is actually
+used for all titles below level 5.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="article.appendix.title.properties">
+<refmeta>
+<refentrytitle>article.appendix.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>article.appendix.title.properties</refname>
+<refpurpose>Properties for appendix titles that appear in an article</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="article.appendix.title.properties.frag">
+&lt;xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties"&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;
+ &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties for the title of an appendix that
+appears inside an article. The default is to use
+the properties of sect1 titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="abstract.properties">
+<refmeta>
+<refentrytitle>abstract.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.properties</refname>
+<refpurpose>Properties associated with the block surrounding an abstract</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="abstract.properties.frag">
+&lt;xsl:attribute-set name="abstract.properties"&gt;
+ &lt;xsl:attribute name="start-indent"&gt;0.0in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="end-indent"&gt;0.0in&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for abstract.</para>
+
+<para>See also <parameter>abstract.title.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="abstract.title.properties">
+<refmeta>
+<refentrytitle>abstract.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.title.properties</refname>
+<refpurpose>Properties for abstract titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="abstract.title.properties.frag">
+&lt;xsl:attribute-set name="abstract.title.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;&lt;xsl:value-of select="$title.fontset"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next.within-column"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.optimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.minimum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 0.8')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-before.maximum"&gt;&lt;xsl:value-of select="concat($body.font.master, 'pt * 1.2')"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;false&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties for abstract titles.</para>
+
+<para>See also <parameter>abstract.properties</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.page.number.properties">
+<refmeta>
+<refentrytitle>index.page.number.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.page.number.properties</refname>
+<refpurpose>Properties associated with index page numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.page.number.properties.frag">
+&lt;xsl:attribute-set name="index.page.number.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties associated with page numbers in indexes.
+Changing color to indicate the page number is a link is
+one possibility.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="revhistory.table.properties">
+<refmeta>
+<refentrytitle>revhistory.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.table.properties</refname>
+<refpurpose>The properties of table used for formatting revhistory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="revhistory.table.properties.frag">
+&lt;xsl:attribute-set name="revhistory.table.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of revhistory table.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="revhistory.table.cell.properties">
+<refmeta>
+<refentrytitle>revhistory.table.cell.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.table.cell.properties</refname>
+<refpurpose>The properties of table cells used for formatting revhistory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="revhistory.table.cell.properties.frag">
+&lt;xsl:attribute-set name="revhistory.table.cell.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of individual cells in revhistory table.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="revhistory.title.properties">
+<refmeta>
+<refentrytitle>revhistory.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.title.properties</refname>
+<refpurpose>The properties of revhistory title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="revhistory.title.properties.frag">
+&lt;xsl:attribute-set name="revhistory.title.properties"&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of revhistory title.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="profiling"><title>Profiling</title>
+<partintro xml:id="profiling_partintro">
+<para>The following parameters can be used for attribute-based
+profiling of your document. For more information about profiling, see
+<link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="Profiling.html">Profiling (conditional text)</link>.</para>
+</partintro>
+<refentry version="5.0" xml:id="profile.arch">
+<refmeta>
+<refentrytitle>profile.arch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.arch</refname>
+<refpurpose>Target profile for <tag class="attribute">arch</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.arch.frag">
+&lt;xsl:param name="profile.arch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.audience">
+<refmeta>
+<refentrytitle>profile.audience</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.audience</refname>
+<refpurpose>Target profile for <tag class="attribute">audience</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.audience.frag">
+&lt;xsl:param name="profile.audience"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.condition">
+<refmeta>
+<refentrytitle>profile.condition</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.condition</refname>
+<refpurpose>Target profile for <tag class="attribute">condition</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.condition.frag">
+&lt;xsl:param name="profile.condition"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.conformance">
+<refmeta>
+<refentrytitle>profile.conformance</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.conformance</refname>
+<refpurpose>Target profile for <tag class="attribute">conformance</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.conformance.frag">
+&lt;xsl:param name="profile.conformance"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.lang">
+<refmeta>
+<refentrytitle>profile.lang</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.lang</refname>
+<refpurpose>Target profile for <tag class="attribute">lang</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.lang.frag">
+&lt;xsl:param name="profile.lang"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.os">
+<refmeta>
+<refentrytitle>profile.os</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.os</refname>
+<refpurpose>Target profile for <tag class="attribute">os</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.os.frag">
+&lt;xsl:param name="profile.os"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.revision">
+<refmeta>
+<refentrytitle>profile.revision</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revision</refname>
+<refpurpose>Target profile for <tag class="attribute">revision</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.revision.frag">
+&lt;xsl:param name="profile.revision"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.revisionflag">
+<refmeta>
+<refentrytitle>profile.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revisionflag</refname>
+<refpurpose>Target profile for <tag class="attribute">revisionflag</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.revisionflag.frag">
+&lt;xsl:param name="profile.revisionflag"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.role">
+<refmeta>
+<refentrytitle>profile.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.role</refname>
+<refpurpose>Target profile for <tag class="attribute">role</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.role.frag">
+&lt;xsl:param name="profile.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+<warning>
+<para>Note that <tag class="attribute">role</tag> is often
+used for other purposes than profiling. For example it is commonly
+used to get emphasize in bold font:</para>
+
+<programlisting>&lt;emphasis role="bold"&gt;very important&lt;/emphasis&gt;</programlisting>
+
+<para>If you are using <tag class="attribute">role</tag> for
+these purposes do not forget to add values like <literal>bold</literal> to
+value of this parameter. If you forgot you will get document with
+small pieces missing which are very hard to track.</para>
+
+<para>For this reason it is not recommended to use <tag class="attribute">role</tag> attribute for profiling. You should
+rather use profiling specific attributes like <tag class="attribute">userlevel</tag>, <tag class="attribute">os</tag>, <tag class="attribute">arch</tag>, <tag class="attribute">condition</tag>, etc.</para>
+</warning>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.security">
+<refmeta>
+<refentrytitle>profile.security</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.security</refname>
+<refpurpose>Target profile for <tag class="attribute">security</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.security.frag">
+&lt;xsl:param name="profile.security"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.status">
+<refmeta>
+<refentrytitle>profile.status</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.status</refname>
+<refpurpose>Target profile for <tag class="attribute">status</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.status.frag">
+&lt;xsl:param name="profile.status"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.userlevel">
+<refmeta>
+<refentrytitle>profile.userlevel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.userlevel</refname>
+<refpurpose>Target profile for <tag class="attribute">userlevel</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.userlevel.frag">
+&lt;xsl:param name="profile.userlevel"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.vendor">
+<refmeta>
+<refentrytitle>profile.vendor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.vendor</refname>
+<refpurpose>Target profile for <tag class="attribute">vendor</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.vendor.frag">
+&lt;xsl:param name="profile.vendor"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.wordsize">
+<refmeta>
+<refentrytitle>profile.wordsize</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.wordsize</refname>
+<refpurpose>Target profile for <tag class="attribute">wordsize</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.wordsize.frag">
+&lt;xsl:param name="profile.wordsize"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.attribute">
+<refmeta>
+<refentrytitle>profile.attribute</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.attribute</refname>
+<refpurpose>Name of user-specified profiling attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.attribute.frag">
+&lt;xsl:param name="profile.attribute"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter is used in conjuction with
+<parameter>profile.value</parameter>.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.value">
+<refmeta>
+<refentrytitle>profile.value</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.value</refname>
+<refpurpose>Target profile for user-specified attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.value.frag">
+&lt;xsl:param name="profile.value"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When you are using this parameter you must also specify name of
+profiling attribute with parameter
+<parameter>profile.attribute</parameter>.</para>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.separator">
+<refmeta>
+<refentrytitle>profile.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.separator</refname>
+<refpurpose>Separator character for compound profile values</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.separator.frag">
+&lt;xsl:param name="profile.separator"&gt;;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator character used for compound profile values. See <parameter>profile.arch</parameter></para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="l10n"><title>Localization</title>
+<refentry version="5.0" xml:id="l10n.gentext.language">
+<refmeta>
+<refentrytitle>l10n.gentext.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.language</refname>
+<refpurpose>Sets the gentext language</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="l10n.gentext.language.frag">
+&lt;xsl:param name="l10n.gentext.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this parameter is set to any value other than the empty string, its
+value will be used as the value for the language when generating text. Setting
+<parameter>l10n.gentext.language</parameter> overrides any settings within the
+document being formatted.</para>
+
+<para>It's much more likely that you might want to set the
+<parameter>l10n.gentext.default.language</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="l10n.gentext.default.language">
+ <refmeta>
+ <refentrytitle>l10n.gentext.default.language</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>l10n.gentext.default.language</refname>
+ <refpurpose>Sets the default language for generated text</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<programlisting xml:id="l10n.gentext.default.language.frag">
+&lt;xsl:param name="l10n.gentext.default.language"&gt;en&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of the <parameter>l10n.gentext.default.language</parameter>
+parameter is used as the language for generated text if no setting is provided
+in the source document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="l10n.gentext.use.xref.language">
+<refmeta>
+<refentrytitle>l10n.gentext.use.xref.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.use.xref.language</refname>
+<refpurpose>Use the language of target when generating cross-reference text?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="l10n.gentext.use.xref.language.frag">
+&lt;xsl:param name="l10n.gentext.use.xref.language" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the language of the target will be used when
+generating cross reference text. Usually, the <quote>current</quote>
+language is used when generating text (that is, the language of the
+element that contains the cross-reference element). But setting this parameter
+allows the language of the element <emphasis>pointed to</emphasis> to control
+the generated text.</para>
+
+<para>Consider the following example:</para>
+
+<informalexample>
+<programlisting>&lt;para lang="en"&gt;See also &lt;xref linkend="chap3"/&gt;.&lt;/para&gt;
+</programlisting>
+</informalexample>
+
+<para>Suppose that Chapter 3 happens to be written in German.
+If <parameter>l10n.gentext.use.xref.language</parameter> is non-zero, the
+resulting text will be something like this:</para>
+
+<blockquote>
+<para>See also Kapital 3.</para>
+</blockquote>
+
+<para>Where the more traditional rendering would be:</para>
+
+<blockquote>
+<para>See also Chapter 3.</para>
+</blockquote>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="l10n.lang.value.rfc.compliant">
+<refmeta>
+<refentrytitle>l10n.lang.value.rfc.compliant</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.lang.value.rfc.compliant</refname>
+<refpurpose>Make value of lang attribute RFC compliant?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="l10n.lang.value.rfc.compliant.frag">
+&lt;xsl:param name="l10n.lang.value.rfc.compliant" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ensure that the values for all <tag class="attribute">lang</tag> attributes in HTML output are RFC
+compliant<footnote><para>Section 8.1.1, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.1.1">Language Codes</link>, in the HTML 4.0 Recommendation states that:
+
+<blockquote><para>[RFC1766] defines and explains the language codes
+that must be used in HTML documents.</para>
+<para>Briefly, language codes consist of a primary code and a possibly
+empty series of subcodes:
+
+<literallayout class="monospaced">language-code = primary-code ( "-" subcode )*</literallayout>
+</para>
+<para>And in RFC 1766, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ietf.org/rfc/rfc1766.txt">Tags for the Identification
+of Languages</link>, the EBNF for "language tag" is given as:
+
+<literallayout class="monospaced">Language-Tag = Primary-tag *( "-" Subtag )
+Primary-tag = 1*8ALPHA
+Subtag = 1*8ALPHA</literallayout>
+</para>
+</blockquote>
+</para></footnote>.
+
+by taking any underscore characters in any <tag class="attribute">lang</tag> values found in source documents, and
+replacing them with hyphen characters in output HTML files. For
+example, <literal>zh_CN</literal> in a source document becomes
+<literal>zh-CN</literal> in the HTML output form that source.
+
+<note>
+<para>This parameter does not cause any case change in <tag class="attribute">lang</tag> values, because RFC 1766
+explicitly states that all "language tags" (as it calls them) "are
+to be treated as case insensitive".</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="writing.mode">
+<refmeta>
+<refentrytitle>writing.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>writing.mode</refname>
+<refpurpose>Direction of text flow based on locale</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="writing.mode.frag">
+&lt;xsl:param name="writing.mode"&gt;
+ &lt;xsl:call-template name="gentext"&gt;
+ &lt;xsl:with-param name="key"&gt;writing-mode&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="lang"&gt;
+ &lt;xsl:call-template name="l10n.language"&gt;
+ &lt;xsl:with-param name="target" select="/*[1]"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets direction of text flow and text alignment based on locale.
+The value is normally taken from the gentext file for the
+lang attribute of the document's root element, using the
+key name 'writing-mode' to look it up in the gentext file.
+But the param can also be
+set on the command line to override that gentext value.
+</para>
+<para>Accepted values are:
+<variablelist>
+ <varlistentry>
+ <term>lr-tb</term>
+ <listitem>
+ <para>Left-to-right text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl-tb</term>
+ <listitem>
+ <para>Right-to-left text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb-rl</term>
+ <listitem>
+ <para>Top-to-bottom text flow in each vertical line, lines stack right to left.
+ Supported by only a few XSL-FO processors. Not supported in HTML output.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>lr</term>
+ <listitem>
+ <para>Shorthand for lr-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl</term>
+ <listitem>
+ <para>Shorthand for rl-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb</term>
+ <listitem>
+ <para>Shorthand for tb-rl.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="ebnf"><title>EBNF</title>
+<refentry version="5.0" xml:id="ebnf.assignment">
+<refmeta>
+<refentrytitle>ebnf.assignment</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.assignment</refname>
+<refpurpose>The EBNF production assignment operator</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ebnf.assignment.frag">
+
+&lt;xsl:param name="ebnf.assignment"&gt;
+ &lt;fo:inline font-family="{$monospace.font.family}"&gt;
+ &lt;xsl:text&gt;::=&lt;/xsl:text&gt;
+ &lt;/fo:inline&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.assignment</parameter> parameter determines what
+text is used to show <quote>assignment</quote> in <tag>production</tag>s
+in <tag>productionset</tag>s.</para>
+
+<para>While <quote><literal>::=</literal></quote> is common, so are several
+other operators.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ebnf.statement.terminator">
+<refmeta>
+<refentrytitle>ebnf.statement.terminator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.statement.terminator</refname>
+<refpurpose>Punctuation that ends an EBNF statement.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ebnf.statement.terminator.frag">
+
+&lt;xsl:param name="ebnf.statement.terminator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.statement.terminator</parameter> parameter determines what
+text is used to terminate each <tag>production</tag>
+in <tag>productionset</tag>.</para>
+
+<para>Some notations end each statement with a period.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="prepress"><title>Prepress</title>
+<refentry version="5.0" xml:id="crop.marks">
+<refmeta>
+<refentrytitle>crop.marks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.marks</refname>
+<refpurpose>Output crop marks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="crop.marks.frag">
+&lt;xsl:param name="crop.marks" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, crop marks will be added to each page. Currently this
+works only with XEP if you have <parameter>xep.extensions</parameter> set.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="crop.mark.width">
+<refmeta>
+<refentrytitle>crop.mark.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.width</refname>
+<refpurpose>Width of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="crop.mark.width.frag">
+&lt;xsl:param name="crop.mark.width"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Width of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="crop.mark.offset">
+<refmeta>
+<refentrytitle>crop.mark.offset</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.offset</refname>
+<refpurpose>Length of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="crop.mark.offset.frag">
+&lt;xsl:param name="crop.mark.offset"&gt;24pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Length of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="crop.mark.bleed">
+<refmeta>
+<refentrytitle>crop.mark.bleed</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.bleed</refname>
+<refpurpose>Length of invisible part of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="crop.mark.bleed.frag">
+&lt;xsl:param name="crop.mark.bleed"&gt;6pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Length of invisible part of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+
+<appendix xml:id="stylesheet"><title>The Stylesheet</title>
+
+<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
+around all these parameters.</para>
+
+<programlisting xml:id="top">
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 8543 2009-12-02 06:05:24Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="abstract.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="abstract.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.graphics.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.graphics.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.graphics.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.textlabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admonition.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admonition.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="graphical.admonition.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="nongraphical.admonition.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="alignment.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="appendix.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="arbortext.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="article.appendix.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="author.othername.in.middle.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="autotoc.label.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="axf.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="biblioentry.item.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="biblioentry.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bibliography.collection.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bibliography.numbered.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bibliography.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="blockquote.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.font.master.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.font.size.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.margin.bottom.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.margin.top.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.start.indent.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.end.indent.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bookmarks.collapse.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bridgehead.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.defaultcolumn.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.icon.size.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.number.limit.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.unicode.font.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.unicode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.unicode.number.limit.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.unicode.start.character.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callouts.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chapter.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="collect.xref.targets.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.count.back.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.count.body.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.count.front.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.count.index.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.count.lot.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.count.titlepage.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.gap.back.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.gap.body.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.gap.front.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.gap.index.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.gap.lot.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="column.gap.titlepage.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="compact.list.item.spacing.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="component.label.includes.part.label.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="component.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="component.titlepage.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="crop.marks.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="crop.mark.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="crop.mark.offset.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="crop.mark.bleed.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="current.docid.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.float.class.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.image.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.table.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.table.frame.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.table.rules.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.units.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="dingbat.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="double.sided.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="draft.mode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="draft.watermark.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ebnf.assignment.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ebnf.statement.terminator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="email.delimiters.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="email.mailto.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="equation.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="equation.number.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="example.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="exsl.node.set.available.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="figure.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="firstterm.only.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footer.content.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footer.rule.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footer.column.widths.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footer.table.height.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footer.table.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footers.on.blank.pages.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.font.size.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.number.format.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.number.symbols.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.mark.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.sep.leader.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="fop.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="fop1.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="formal.object.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="formal.procedures.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="formal.title.placement.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="formal.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="funcsynopsis.decoration.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="funcsynopsis.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="function.parens.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.index.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.section.toc.level.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossary.as.blocks.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossary.collection.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossary.sort.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossentry.show.acronym.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glosslist.as.blocks.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossterm.auto.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossterm.separation.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossterm.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossentry.list.item.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossterm.list.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossterm.block.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossdef.list.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossdef.block.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="graphic.default.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="header.content.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="header.rule.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="header.column.widths.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="header.table.height.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="header.table.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="headers.on.blank.pages.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="highlight.default.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="highlight.source.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="highlight.xslthl.config.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="hyphenate.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="hyphenate.verbatim.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="hyphenate.verbatim.characters.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ignore.image.scaling.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="img.src.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.method.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.on.role.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.on.type.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.page.number.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="informalequation.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="informalexample.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="informalfigure.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="informal.object.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="informaltable.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.preferred.page.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.div.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.entry.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.number.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.range.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.term.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="insert.link.page.number.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="insert.xref.page.number.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="itemizedlist.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="itemizedlist.label.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="itemizedlist.label.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="keep.relative.image.uris.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.gentext.default.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.gentext.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.gentext.use.xref.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.lang.value.rfc.compliant.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="label.from.part.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="line-height.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.everyNth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="list.block.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="list.block.spacing.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="list.item.spacing.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.index.markup.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.single.year.ranges.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.year.ranges.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="margin.note.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="margin.note.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="margin.note.float.type.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="margin.note.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="marker.section.level.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="menuchoice.menu.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="menuchoice.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="monospace.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="monospace.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="monospace.verbatim.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="monospace.verbatim.font.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="nominal.table.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="normal.para.spacing.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.doctitle.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.base.uri.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.debug.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.lang.fallback.sequence.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="orderedlist.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="orderedlist.label.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="orderedlist.label.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="prefer.internal.olink.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="insert.olink.page.number.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="insert.olink.pdf.frag.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.height.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.height.portrait.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.margin.bottom.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.margin.inner.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.margin.outer.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.margin.top.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.orientation.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="page.width.portrait.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="paper.type.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="part.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="passivetex.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="pgwide.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="preface.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="preferred.mediaobject.role.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="procedure.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="process.empty.source.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="process.source.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.arch.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.audience.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.attribute.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.condition.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.conformance.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.lang.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.os.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.revision.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.revisionflag.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.role.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.security.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.status.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.userlevel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.value.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.vendor.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.wordsize.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="punct.honorific.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.defaultlabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.nested.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.inherit.numeration.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qandadiv.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.title.level1.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.title.level2.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.title.level3.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.title.level4.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.title.level5.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.title.level6.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.generate.name.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.generate.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.pagebreak.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.xref.manvolnum.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="reference.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refclass.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="region.after.extent.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="region.before.extent.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="revhistory.table.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="revhistory.table.cell.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="revhistory.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="root.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="rootid.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="runinhead.default.title.end.punct.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="runinhead.title.end.punct.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="sans.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.autolabel.max.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.container.element.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.label.includes.component.label.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.title.level1.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.title.level2.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.title.level3.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.title.level4.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.title.level5.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.title.level6.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.level1.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.level2.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.level3.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.level4.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.level5.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.level6.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="segmentedlist.as.table.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="shade.verbatim.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="shade.verbatim.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="show.comments.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="sidebar.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="sidebar.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="sidebar.float.type.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="sidebar.float.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="simplesect.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="subscript.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="superscript.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="symbol.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.cell.border.color.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.cell.border.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.cell.border.thickness.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.cell.padding.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.footnote.number.format.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.footnote.number.symbols.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.footnote.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.frame.border.color.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.frame.border.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.frame.border.thickness.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="tablecolumns.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.table.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="target.database.document.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="targets.filename.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="textdata.default.encoding.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="tex.math.delims.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="tex.math.in.alt.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="textinsert.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="title.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="title.margin.left.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.indent.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.line.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.margin.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.max.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.section.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ulink.footnotes.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ulink.hyphenate.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ulink.hyphenate.chars.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ulink.show.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.local.olink.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.role.as.xrefstyle.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.role.for.mediaobject.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.svg.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.as.blocks.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.max.termlength.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.term.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.term.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.term.break.after.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="verbatim.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="writing.mode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xep.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xep.index.item.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.label-page.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.label-title.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.title-page.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.with.number.and.title.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;/xsl:stylesheet&gt;
+</programlisting>
+
+</appendix>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl
new file mode 100644
index 0000000..b65ac4d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl
@@ -0,0 +1,946 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- This file is generated from param.xweb -->
+
+<!-- ********************************************************************
+ $Id: param.xweb 8543 2009-12-02 06:05:24Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:attribute-set name="abstract.properties">
+ <xsl:attribute name="start-indent">0.0in</xsl:attribute>
+ <xsl:attribute name="end-indent">0.0in</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="abstract.title.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute>
+ <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute>
+ <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="admon.graphics.extension">.png</xsl:param>
+<xsl:param name="admon.graphics" select="0"/>
+<xsl:param name="admon.graphics.path">images/</xsl:param>
+<xsl:param name="admon.textlabel" select="1"/>
+<xsl:attribute-set name="admonition.properties"/>
+<xsl:attribute-set name="admonition.title.properties">
+ <xsl:attribute name="font-size">14pt</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="graphical.admonition.properties">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="nongraphical.admonition.properties">
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.start}">0.25in</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">0.25in</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="alignment">justify</xsl:param>
+<xsl:param name="appendix.autolabel">A</xsl:param>
+<xsl:param name="arbortext.extensions" select="0"/>
+<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="author.othername.in.middle" select="1"/>
+<xsl:param name="autotoc.label.separator">. </xsl:param>
+<xsl:param name="axf.extensions" select="0"/>
+<xsl:param name="biblioentry.item.separator">. </xsl:param>
+<xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing">
+ <xsl:attribute name="start-indent">0.5in</xsl:attribute>
+ <xsl:attribute name="text-indent">-0.5in</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param>
+
+<xsl:param name="bibliography.numbered" select="0"/>
+<xsl:param name="bibliography.style">normal</xsl:param>
+<xsl:attribute-set name="blockquote.properties">
+<xsl:attribute name="margin-{$direction.align.start}">0.5in</xsl:attribute>
+<xsl:attribute name="margin-{$direction.align.end}">0.5in</xsl:attribute>
+<xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+<xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+<xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="body.font.family">serif</xsl:param>
+<xsl:param name="body.font.master">10</xsl:param>
+<xsl:param name="body.font.size">
+ <xsl:value-of select="$body.font.master"/><xsl:text>pt</xsl:text>
+</xsl:param>
+<xsl:param name="body.margin.bottom">0.5in</xsl:param>
+<xsl:param name="body.margin.top">0.5in</xsl:param>
+<xsl:param name="body.start.indent">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">0pt</xsl:when>
+ <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when>
+ <xsl:otherwise>4pc</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="body.end.indent">0pt</xsl:param>
+<xsl:param name="bookmarks.collapse" select="1"/>
+<xsl:param name="bridgehead.in.toc" select="0"/>
+<xsl:param name="callout.defaultcolumn">60</xsl:param>
+
+<xsl:param name="callout.graphics.extension">.svg</xsl:param>
+<xsl:param name="callout.graphics" select="1"/>
+<xsl:param name="callout.icon.size">7pt</xsl:param>
+
+<xsl:param name="callout.graphics.number.limit">30</xsl:param>
+<xsl:param name="callout.graphics.path">images/callouts/</xsl:param>
+<xsl:param name="callout.unicode.font">ZapfDingbats</xsl:param>
+<xsl:param name="callout.unicode" select="0"/>
+<xsl:param name="callout.unicode.number.limit">10</xsl:param>
+<xsl:param name="callout.unicode.start.character">10102</xsl:param>
+<xsl:param name="callouts.extension" select="1"/>
+<xsl:param name="chapter.autolabel" select="1"/>
+<xsl:param name="collect.xref.targets">no</xsl:param>
+<xsl:param name="column.count.back" select="1"/>
+<xsl:param name="column.count.body" select="1"/>
+<xsl:param name="column.count.front" select="1"/>
+<xsl:param name="column.count.index">2</xsl:param>
+<xsl:param name="column.count.lot" select="1"/>
+<xsl:param name="column.count.titlepage" select="1"/>
+<xsl:param name="column.gap.back">12pt</xsl:param>
+<xsl:param name="column.gap.body">12pt</xsl:param>
+<xsl:param name="column.gap.front">12pt</xsl:param>
+<xsl:param name="column.gap.index">12pt</xsl:param>
+<xsl:param name="column.gap.lot">12pt</xsl:param>
+<xsl:param name="column.gap.titlepage">12pt</xsl:param>
+<xsl:attribute-set name="compact.list.item.spacing">
+ <xsl:attribute name="space-before.optimum">0em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="component.label.includes.part.label" select="0"/>
+<xsl:attribute-set name="component.title.properties">
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute>
+ <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute>
+ <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">
+ <xsl:choose>
+ <xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography)) or (parent::slides | parent::slidesinfo)">center</xsl:when>
+ <xsl:otherwise>start</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="component.titlepage.properties">
+</xsl:attribute-set>
+<xsl:param name="crop.marks" select="0"/>
+<xsl:param name="crop.mark.width">0.5pt</xsl:param>
+<xsl:param name="crop.mark.offset">24pt</xsl:param>
+<xsl:param name="crop.mark.bleed">6pt</xsl:param>
+<xsl:param name="current.docid"/>
+<xsl:param name="default.float.class">
+ <xsl:choose>
+ <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when>
+ <xsl:otherwise>before</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="default.image.width"/>
+<xsl:param name="default.table.width"/>
+<xsl:param name="default.table.frame">all</xsl:param>
+<xsl:param name="default.table.rules">none</xsl:param>
+<xsl:param name="default.units">pt</xsl:param>
+<xsl:param name="dingbat.font.family">serif</xsl:param>
+<xsl:param name="double.sided" select="0"/>
+<xsl:param name="draft.mode">no</xsl:param>
+<xsl:param name="draft.watermark.image">images/draft.png</xsl:param>
+
+<xsl:param name="ebnf.assignment">
+ <fo:inline xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$monospace.font.family}">
+ <xsl:text>::=</xsl:text>
+ </fo:inline>
+</xsl:param>
+
+<xsl:param name="ebnf.statement.terminator"/>
+<xsl:param name="email.delimiters.enabled" select="1"/>
+<xsl:param name="email.mailto.enabled" select="0"/>
+<xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"/>
+<xsl:attribute-set name="equation.number.properties">
+ <xsl:attribute name="text-align">end</xsl:attribute>
+ <xsl:attribute name="display-align">center</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"/>
+<xsl:param name="exsl.node.set.available">
+ <xsl:choose>
+ <xsl:when xmlns:exsl="http://exslt.org/common" exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"/>
+<xsl:param name="firstterm.only.link" select="0"/>
+<xsl:attribute-set name="footer.content.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$body.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="footer.rule" select="1"/>
+<xsl:param name="footer.column.widths">1 1 1</xsl:param>
+<xsl:param name="footer.table.height">14pt</xsl:param>
+<xsl:attribute-set name="footer.table.properties">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ <xsl:attribute name="width">100%</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="footers.on.blank.pages" select="1"/>
+<xsl:param name="footnote.font.size">
+ <xsl:value-of select="$body.font.master * 0.8"/><xsl:text>pt</xsl:text>
+</xsl:param>
+<xsl:param name="footnote.number.format">1</xsl:param>
+<xsl:param name="footnote.number.symbols"/>
+<xsl:attribute-set name="footnote.mark.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-size">75%</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="font-style">normal</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="footnote.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="font-style">normal</xsl:attribute>
+ <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute>
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+ <xsl:attribute name="text-indent">0pt</xsl:attribute>
+ <xsl:attribute name="hyphenate"><xsl:value-of select="$hyphenate"/></xsl:attribute>
+ <xsl:attribute name="wrap-option">wrap</xsl:attribute>
+ <xsl:attribute name="linefeed-treatment">treat-as-space</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="footnote.sep.leader.properties">
+ <xsl:attribute name="color">black</xsl:attribute>
+ <xsl:attribute name="leader-pattern">rule</xsl:attribute>
+ <xsl:attribute name="leader-length">1in</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="fop.extensions" select="0"/>
+<xsl:param name="fop1.extensions" select="0"/>
+<xsl:attribute-set name="formal.object.properties">
+ <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+ <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="formal.procedures" select="1"/>
+<xsl:param name="formal.title.placement">
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+</xsl:param>
+<xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="funcsynopsis.decoration" select="1"/>
+<xsl:param name="funcsynopsis.style">kr</xsl:param>
+<xsl:param name="function.parens" select="0"/>
+<xsl:param name="generate.index" select="1"/>
+<xsl:param name="generate.section.toc.level" select="0"/>
+
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+<xsl:param name="glossary.as.blocks" select="0"/>
+<xsl:param name="glossary.collection"/>
+<xsl:param name="glossary.sort" select="0"/>
+<xsl:param name="glossentry.show.acronym">no</xsl:param>
+<xsl:param name="glosslist.as.blocks" select="0"/>
+<xsl:param name="glossterm.auto.link" select="0"/>
+<xsl:param name="glossterm.separation">0.25in</xsl:param>
+<xsl:param name="glossterm.width">2in</xsl:param>
+<xsl:attribute-set name="glossentry.list.item.properties">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="glossterm.list.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="glossterm.block.properties">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="glossdef.list.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="glossdef.block.properties">
+ <xsl:attribute name="margin-{$direction.align.start}">.25in</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="graphic.default.extension"/>
+<xsl:attribute-set name="header.content.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$body.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="header.rule" select="1"/>
+<xsl:param name="header.column.widths">1 1 1</xsl:param>
+<xsl:param name="header.table.height">14pt</xsl:param>
+<xsl:attribute-set name="header.table.properties">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ <xsl:attribute name="width">100%</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="headers.on.blank.pages" select="1"/>
+<xsl:param name="highlight.default.language"/>
+<xsl:param name="highlight.source" select="0"/>
+<xsl:param name="highlight.xslthl.config"/>
+<xsl:param name="hyphenate">true</xsl:param>
+<xsl:param name="hyphenate.verbatim" select="0"/>
+<xsl:param name="hyphenate.verbatim.characters"/>
+<xsl:param name="ignore.image.scaling" select="0"/>
+<xsl:param name="img.src.path"/>
+<xsl:param name="index.method">basic</xsl:param>
+<xsl:param name="index.on.role" select="0"/>
+<xsl:param name="index.on.type" select="0"/>
+<xsl:attribute-set name="index.page.number.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"/>
+<xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"/>
+<xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"/>
+<xsl:attribute-set name="informal.object.properties">
+ <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"/>
+<xsl:attribute-set name="index.preferred.page.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="index.div.title.properties">
+ <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute>
+ <xsl:attribute name="font-size">14.4pt</xsl:attribute>
+ <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master,'pt')"/></xsl:attribute>
+ <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master,'pt * 0.8')"/></xsl:attribute>
+ <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master,'pt * 1.2')"/></xsl:attribute>
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="index.entry.properties">
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="index.number.separator"/>
+<xsl:param name="index.range.separator"/>
+<xsl:param name="index.term.separator"/>
+<xsl:param name="insert.link.page.number">no</xsl:param>
+<xsl:param name="insert.xref.page.number">no</xsl:param>
+<xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="itemizedlist.label.properties">
+</xsl:attribute-set>
+ <xsl:param name="itemizedlist.label.width">1.0em</xsl:param>
+
+
+<xsl:param name="keep.relative.image.uris" select="0"/>
+<xsl:param name="l10n.gentext.default.language">en</xsl:param>
+<xsl:param name="l10n.gentext.language"/>
+<xsl:param name="l10n.gentext.use.xref.language" select="0"/>
+<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/>
+<xsl:param name="label.from.part" select="0"/>
+<xsl:param name="line-height">normal</xsl:param>
+<xsl:param name="linenumbering.everyNth">5</xsl:param>
+<xsl:param name="linenumbering.extension" select="1"/>
+<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="linenumbering.width">3</xsl:param>
+<xsl:attribute-set name="list.block.properties">
+ <xsl:attribute name="provisional-label-separation">0.2em</xsl:attribute>
+ <xsl:attribute name="provisional-distance-between-starts">1.5em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="list.block.spacing">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="list.item.spacing">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="make.index.markup" select="0"/>
+<xsl:param name="make.single.year.ranges" select="0"/>
+<xsl:param name="make.year.ranges" select="0"/>
+<xsl:attribute-set name="margin.note.properties">
+ <xsl:attribute name="font-size">90%</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="margin.note.title.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="margin.note.float.type">none</xsl:param>
+<xsl:param name="margin.note.width">1in</xsl:param>
+<xsl:param name="marker.section.level">2</xsl:param>
+<xsl:param name="menuchoice.menu.separator"> &#8594; </xsl:param>
+<xsl:param name="menuchoice.separator">+</xsl:param>
+<xsl:param name="monospace.font.family">monospace</xsl:param>
+<xsl:attribute-set name="monospace.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$monospace.font.family"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties">
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="monospace.verbatim.font.width">0.60em</xsl:param>
+<xsl:param name="nominal.table.width">6in</xsl:param>
+<xsl:attribute-set name="normal.para.spacing">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="olink.doctitle">no</xsl:param>
+<xsl:param name="olink.base.uri"/>
+<xsl:param name="olink.debug" select="0"/>
+<xsl:attribute-set name="olink.properties">
+ <xsl:attribute name="show-destination">replace</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="olink.lang.fallback.sequence"/>
+<xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties">
+ <xsl:attribute name="provisional-distance-between-starts">2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="orderedlist.label.properties">
+</xsl:attribute-set>
+<xsl:param name="orderedlist.label.width">1.2em</xsl:param>
+<xsl:param name="prefer.internal.olink" select="0"/>
+<xsl:param name="insert.olink.page.number">no</xsl:param>
+<xsl:param name="insert.olink.pdf.frag" select="0"/>
+<xsl:param name="page.height">
+ <xsl:choose>
+ <xsl:when test="$page.orientation = 'portrait'">
+ <xsl:value-of select="$page.height.portrait"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$page.width.portrait"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="page.height.portrait">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4landscape'">210mm</xsl:when>
+ <xsl:when test="$paper.type = 'USletter'">11in</xsl:when>
+ <xsl:when test="$paper.type = 'USlandscape'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = '4A0'">2378mm</xsl:when>
+ <xsl:when test="$paper.type = '2A0'">1682mm</xsl:when>
+ <xsl:when test="$paper.type = 'A0'">1189mm</xsl:when>
+ <xsl:when test="$paper.type = 'A1'">841mm</xsl:when>
+ <xsl:when test="$paper.type = 'A2'">594mm</xsl:when>
+ <xsl:when test="$paper.type = 'A3'">420mm</xsl:when>
+ <xsl:when test="$paper.type = 'A4'">297mm</xsl:when>
+ <xsl:when test="$paper.type = 'A5'">210mm</xsl:when>
+ <xsl:when test="$paper.type = 'A6'">148mm</xsl:when>
+ <xsl:when test="$paper.type = 'A7'">105mm</xsl:when>
+ <xsl:when test="$paper.type = 'A8'">74mm</xsl:when>
+ <xsl:when test="$paper.type = 'A9'">52mm</xsl:when>
+ <xsl:when test="$paper.type = 'A10'">37mm</xsl:when>
+ <xsl:when test="$paper.type = 'B0'">1414mm</xsl:when>
+ <xsl:when test="$paper.type = 'B1'">1000mm</xsl:when>
+ <xsl:when test="$paper.type = 'B2'">707mm</xsl:when>
+ <xsl:when test="$paper.type = 'B3'">500mm</xsl:when>
+ <xsl:when test="$paper.type = 'B4'">353mm</xsl:when>
+ <xsl:when test="$paper.type = 'B5'">250mm</xsl:when>
+ <xsl:when test="$paper.type = 'B6'">176mm</xsl:when>
+ <xsl:when test="$paper.type = 'B7'">125mm</xsl:when>
+ <xsl:when test="$paper.type = 'B8'">88mm</xsl:when>
+ <xsl:when test="$paper.type = 'B9'">62mm</xsl:when>
+ <xsl:when test="$paper.type = 'B10'">44mm</xsl:when>
+ <xsl:when test="$paper.type = 'C0'">1297mm</xsl:when>
+ <xsl:when test="$paper.type = 'C1'">917mm</xsl:when>
+ <xsl:when test="$paper.type = 'C2'">648mm</xsl:when>
+ <xsl:when test="$paper.type = 'C3'">458mm</xsl:when>
+ <xsl:when test="$paper.type = 'C4'">324mm</xsl:when>
+ <xsl:when test="$paper.type = 'C5'">229mm</xsl:when>
+ <xsl:when test="$paper.type = 'C6'">162mm</xsl:when>
+ <xsl:when test="$paper.type = 'C7'">114mm</xsl:when>
+ <xsl:when test="$paper.type = 'C8'">81mm</xsl:when>
+ <xsl:when test="$paper.type = 'C9'">57mm</xsl:when>
+ <xsl:when test="$paper.type = 'C10'">40mm</xsl:when>
+ <xsl:otherwise>11in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="page.margin.bottom">0.5in</xsl:param>
+<xsl:param name="page.margin.inner">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">1.25in</xsl:when>
+ <xsl:otherwise>1in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="page.margin.outer">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">0.75in</xsl:when>
+ <xsl:otherwise>1in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="page.margin.top">0.5in</xsl:param>
+<xsl:param name="page.orientation">portrait</xsl:param>
+<xsl:param name="page.width">
+ <xsl:choose>
+ <xsl:when test="$page.orientation = 'portrait'">
+ <xsl:value-of select="$page.width.portrait"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$page.height.portrait"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="page.width.portrait">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = '4A0'">1682mm</xsl:when>
+ <xsl:when test="$paper.type = '2A0'">1189mm</xsl:when>
+ <xsl:when test="$paper.type = 'A0'">841mm</xsl:when>
+ <xsl:when test="$paper.type = 'A1'">594mm</xsl:when>
+ <xsl:when test="$paper.type = 'A2'">420mm</xsl:when>
+ <xsl:when test="$paper.type = 'A3'">297mm</xsl:when>
+ <xsl:when test="$paper.type = 'A4'">210mm</xsl:when>
+ <xsl:when test="$paper.type = 'A5'">148mm</xsl:when>
+ <xsl:when test="$paper.type = 'A6'">105mm</xsl:when>
+ <xsl:when test="$paper.type = 'A7'">74mm</xsl:when>
+ <xsl:when test="$paper.type = 'A8'">52mm</xsl:when>
+ <xsl:when test="$paper.type = 'A9'">37mm</xsl:when>
+ <xsl:when test="$paper.type = 'A10'">26mm</xsl:when>
+ <xsl:when test="$paper.type = 'B0'">1000mm</xsl:when>
+ <xsl:when test="$paper.type = 'B1'">707mm</xsl:when>
+ <xsl:when test="$paper.type = 'B2'">500mm</xsl:when>
+ <xsl:when test="$paper.type = 'B3'">353mm</xsl:when>
+ <xsl:when test="$paper.type = 'B4'">250mm</xsl:when>
+ <xsl:when test="$paper.type = 'B5'">176mm</xsl:when>
+ <xsl:when test="$paper.type = 'B6'">125mm</xsl:when>
+ <xsl:when test="$paper.type = 'B7'">88mm</xsl:when>
+ <xsl:when test="$paper.type = 'B8'">62mm</xsl:when>
+ <xsl:when test="$paper.type = 'B9'">44mm</xsl:when>
+ <xsl:when test="$paper.type = 'B10'">31mm</xsl:when>
+ <xsl:when test="$paper.type = 'C0'">917mm</xsl:when>
+ <xsl:when test="$paper.type = 'C1'">648mm</xsl:when>
+ <xsl:when test="$paper.type = 'C2'">458mm</xsl:when>
+ <xsl:when test="$paper.type = 'C3'">324mm</xsl:when>
+ <xsl:when test="$paper.type = 'C4'">229mm</xsl:when>
+ <xsl:when test="$paper.type = 'C5'">162mm</xsl:when>
+ <xsl:when test="$paper.type = 'C6'">114mm</xsl:when>
+ <xsl:when test="$paper.type = 'C7'">81mm</xsl:when>
+ <xsl:when test="$paper.type = 'C8'">57mm</xsl:when>
+ <xsl:when test="$paper.type = 'C9'">40mm</xsl:when>
+ <xsl:when test="$paper.type = 'C10'">28mm</xsl:when>
+ <xsl:otherwise>8.5in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="paper.type">USletter</xsl:param>
+<xsl:param name="part.autolabel">I</xsl:param>
+<xsl:param name="passivetex.extensions" select="0"/>
+<xsl:attribute-set name="pgwide.properties">
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="preface.autolabel" select="0"/>
+<xsl:param name="preferred.mediaobject.role"/>
+<xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="keep-together.within-column">auto</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="process.empty.source.toc" select="0"/>
+<xsl:param name="process.source.toc" select="0"/>
+<xsl:param name="profile.arch"/>
+<xsl:param name="profile.audience"/>
+<xsl:param name="profile.attribute"/>
+<xsl:param name="profile.condition"/>
+<xsl:param name="profile.conformance"/>
+<xsl:param name="profile.lang"/>
+<xsl:param name="profile.os"/>
+<xsl:param name="profile.revision"/>
+<xsl:param name="profile.revisionflag"/>
+<xsl:param name="profile.role"/>
+<xsl:param name="profile.security"/>
+<xsl:param name="profile.separator">;</xsl:param>
+<xsl:param name="profile.status"/>
+<xsl:param name="profile.userlevel"/>
+<xsl:param name="profile.value"/>
+<xsl:param name="profile.vendor"/>
+<xsl:param name="profile.wordsize"/>
+<xsl:param name="punct.honorific">.</xsl:param>
+<xsl:param name="qanda.defaultlabel">number</xsl:param>
+<xsl:param name="qanda.in.toc" select="0"/>
+<xsl:param name="qanda.nested.in.toc" select="0"/>
+<xsl:param name="qanda.inherit.numeration" select="1"/>
+<xsl:param name="qandadiv.autolabel" select="1"/>
+<xsl:attribute-set name="qanda.title.level1.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 2.0736"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="qanda.title.level2.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.728"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="qanda.title.level3.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.44"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="qanda.title.level4.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="qanda.title.level5.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="qanda.title.level6.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="qanda.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <!-- font size is calculated dynamically by qanda.heading template -->
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="refentry.generate.name" select="1"/>
+<xsl:param name="refentry.generate.title" select="0"/>
+<xsl:param name="refentry.pagebreak" select="1"/>
+<xsl:attribute-set name="refentry.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">18pt</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute>
+ <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="refentry.xref.manvolnum" select="1"/>
+ <xsl:param name="reference.autolabel">I</xsl:param>
+<xsl:param name="refclass.suppress" select="0"/>
+<xsl:param name="region.after.extent">0.4in</xsl:param>
+<xsl:param name="region.before.extent">0.4in</xsl:param>
+<xsl:attribute-set name="revhistory.table.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="revhistory.table.cell.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="revhistory.title.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="root.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$body.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.size"/>
+ </xsl:attribute>
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$alignment"/>
+ </xsl:attribute>
+ <xsl:attribute name="line-height">
+ <xsl:value-of select="$line-height"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-selection-strategy">character-by-character</xsl:attribute>
+ <xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute>
+ <xsl:attribute name="writing-mode">
+ <xsl:value-of select="$direction.mode"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="rootid"/>
+<xsl:param name="runinhead.default.title.end.punct">.</xsl:param>
+<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param>
+<xsl:param name="sans.font.family">sans-serif</xsl:param>
+<xsl:param name="section.autolabel" select="0"/>
+<xsl:param name="section.autolabel.max.depth">8</xsl:param>
+<xsl:param name="section.container.element">block</xsl:param>
+<xsl:param name="section.label.includes.component.label" select="0"/>
+<xsl:attribute-set name="section.title.level1.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 2.0736"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level2.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.728"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level3.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.44"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level4.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level5.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level6.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <!-- font size is calculated dynamically by section.heading template -->
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+<xsl:attribute-set name="section.properties">
+</xsl:attribute-set>
+<xsl:param name="segmentedlist.as.table" select="0"/>
+<xsl:param name="shade.verbatim" select="0"/>
+
+<xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="background-color">#E0E0E0</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="show.comments" select="1"/>
+<xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-color">black</xsl:attribute>
+ <xsl:attribute name="background-color">#DDDDDD</xsl:attribute>
+ <xsl:attribute name="padding-start">12pt</xsl:attribute>
+ <xsl:attribute name="padding-end">12pt</xsl:attribute>
+ <xsl:attribute name="padding-top">6pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">6pt</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">0pt</xsl:attribute>
+<!--
+ <xsl:attribute name="margin-top">6pt</xsl:attribute>
+ <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
+-->
+</xsl:attribute-set>
+<xsl:attribute-set name="sidebar.title.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="sidebar.float.type">none</xsl:param>
+<xsl:param name="sidebar.float.width">1in</xsl:param>
+<xsl:param name="simplesect.in.toc" select="0"/>
+<xsl:attribute-set name="subscript.properties">
+ <xsl:attribute name="font-size">75%</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="superscript.properties">
+ <xsl:attribute name="font-size">75%</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="symbol.font.family">Symbol,ZapfDingbats</xsl:param>
+
+<xsl:param name="table.cell.border.color">black</xsl:param>
+<xsl:param name="table.cell.border.style">solid</xsl:param>
+<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param>
+<xsl:attribute-set name="table.cell.padding">
+ <xsl:attribute name="padding-start">2pt</xsl:attribute>
+ <xsl:attribute name="padding-end">2pt</xsl:attribute>
+ <xsl:attribute name="padding-top">2pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">2pt</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="table.footnote.number.format">a</xsl:param>
+<xsl:param name="table.footnote.number.symbols"/>
+<xsl:attribute-set name="table.footnote.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="font-style">normal</xsl:attribute>
+ <xsl:attribute name="space-before">2pt</xsl:attribute>
+ <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:param name="table.frame.border.color">black</xsl:param>
+<xsl:param name="table.frame.border.style">solid</xsl:param>
+<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
+<xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="keep-together.within-column">auto</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="tablecolumns.extension" select="1"/>
+<xsl:attribute-set name="table.table.properties">
+ <xsl:attribute name="border-before-width.conditionality">retain</xsl:attribute>
+ <xsl:attribute name="border-collapse">collapse</xsl:attribute>
+</xsl:attribute-set>
+ <xsl:param name="target.database.document">olinkdb.xml</xsl:param>
+<xsl:param name="targets.filename">target.db</xsl:param>
+<xsl:param name="textdata.default.encoding"/>
+<xsl:param name="tex.math.delims" select="1"/>
+<xsl:param name="tex.math.in.alt"/>
+ <xsl:param name="textinsert.extension" select="1"/>
+<xsl:param name="title.font.family">sans-serif</xsl:param>
+<xsl:param name="title.margin.left">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">-4pc</xsl:when>
+ <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="toc.indent.width">24</xsl:param>
+<!-- inconsistant point specification? -->
+<xsl:attribute-set name="toc.line.properties">
+ <xsl:attribute name="text-align-last">justify</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="end-indent"><xsl:value-of select="concat($toc.indent.width, 'pt')"/></xsl:attribute>
+ <xsl:attribute name="last-line-end-indent"><xsl:value-of select="concat('-', $toc.indent.width, 'pt')"/></xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="toc.margin.properties">
+ <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="toc.max.depth">8</xsl:param>
+<xsl:param name="toc.section.depth">2</xsl:param>
+<xsl:param name="ulink.footnotes" select="0"/>
+<xsl:param name="ulink.hyphenate"/>
+<xsl:param name="ulink.hyphenate.chars">/</xsl:param>
+<xsl:param name="ulink.show" select="1"/>
+<xsl:param name="use.extensions" select="0"/>
+<xsl:param name="use.local.olink.style" select="0"/>
+<xsl:param name="use.role.as.xrefstyle" select="1"/>
+<xsl:param name="use.role.for.mediaobject" select="1"/>
+<xsl:param name="use.svg" select="1"/>
+<xsl:param name="variablelist.as.blocks" select="0"/>
+<xsl:param name="variablelist.max.termlength">24</xsl:param>
+<xsl:param name="variablelist.term.separator">, </xsl:param>
+<xsl:attribute-set name="variablelist.term.properties">
+</xsl:attribute-set>
+<xsl:param name="variablelist.term.break.after">0</xsl:param>
+<xsl:attribute-set name="verbatim.properties">
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
+ <xsl:attribute name="white-space-collapse">false</xsl:attribute>
+ <xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="writing.mode">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">writing-mode</xsl:with-param>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:param>
+<xsl:param name="xep.extensions" select="0"/>
+<xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties">
+ <xsl:attribute name="merge-subsequent-page-numbers">true</xsl:attribute>
+ <xsl:attribute name="link-back">true</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.label-title.separator">: </xsl:param>
+<xsl:attribute-set name="xref.properties">
+</xsl:attribute-set>
+<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.with.number.and.title" select="1"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl
new file mode 100644
index 0000000..9fa28ec
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: passivetex.xsl 5315 2005-10-20 10:08:42Z kosek $
+ ********************************************************************
+ This extension stops PassiveTeX from merging subsequent '-' to
+ dashes. You must set passivetex.extensions to '1' if you want get
+ this functionality.
+ ******************************************************************** -->
+
+<xsl:template name="passivetex.dash.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '--')">
+ <xsl:variable name="rest">
+ <xsl:call-template name="passivetex.dash.subst">
+ <xsl:with-param name="string"
+ select="concat('-', substring-after($string, '--'))"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="concat(substring-before($string, '--'),
+ '-&#x200b;',
+ $rest)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index
new file mode 100644
index 0000000..c14d8ec
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index
@@ -0,0 +1,140 @@
+#!/usr/bin/perl -- # -*- Perl -*-
+
+# this needs some cleanup...
+
+my $PSTOTEXT = "pstotext";
+
+my $pdf = shift @ARGV;
+
+my $index = "";
+my $inindex = 0;
+open (F, "$PSTOTEXT $pdf |");
+while (<F>) {
+ if (/^<\/index/) {
+ $index .= $_;
+ $inindex = 0;
+ }
+ $inindex = 1 if /^<index/;
+
+ if ($inindex) {
+ $index .= $_ if /^\s*</;
+ }
+}
+
+my $cindex = "";
+while ($index =~ /^(.*?)((<phrase role=\"pageno\">.*?<\/phrase>\s*)+)/s) {
+ $cindex .= $1;
+ $_ = $2;
+ $index = $'; # '
+
+ my @pages = m/<phrase role=\"pageno\">.*?<\/phrase>\s*/sg;
+
+ # Expand ranges
+ if ($#pages >= 0) {
+ my @mpages = ();
+ foreach my $page (@pages) {
+ my $pageno = &pageno($page);
+ if ($pageno =~ /^([0-9]+)[^0-9]([0-9]+)$/) { # funky -
+ for (my $count = $1; $count <= $2; $count++) {
+ push (@mpages, "<phrase role=\"$pageno\">$count</phrase>");
+ }
+ } else {
+ push (@mpages, $page);
+ }
+ }
+ @pages = sort rangesort @mpages;
+ }
+
+ # Remove duplicates...
+ if ($#pages > 0) {
+ my @mpages = ();
+ my $current = "";
+ foreach my $page (@pages) {
+ my $pageno = &pageno($page);
+ if ($pageno ne $current) {
+ push (@mpages, $page);
+ $current = $pageno;
+ }
+ }
+ @pages = @mpages;
+ }
+
+ # Collapse ranges...
+ if ($#pages > 1) {
+ my @cpages = ();
+ while (@pages) {
+ my $count = 0;
+ my $len = &rangelen($count, @pages);
+ if ($len <= 2) {
+ my $page = shift @pages;
+ push (@cpages, $page);
+ } else {
+ my $fpage = shift @pages;
+ my $lpage = "";
+ while ($len > 1) {
+ $lpage = shift @pages;
+ $len--;
+ }
+ my $fpno = &pageno($fpage);
+ my $lpno = &pageno($lpage);
+ $fpage =~ s/>$fpno</>${fpno}-$lpno</s;
+ push (@cpages, $fpage);
+ }
+ }
+ @pages = @cpages;
+ }
+
+ my $page = shift @pages;
+ $page =~ s/\s*$//s;
+ $cindex .= $page;
+ while (@pages) {
+ $page = shift @pages;
+ $page =~ s/\s*$//s;
+ $cindex .= ", $page";
+ }
+}
+$cindex .= $index;
+
+print "$cindex\n";
+
+sub pageno {
+ my $page = shift;
+
+ $page =~ s/^<phrase.*?>//;
+ $page =~ s/^<link.*?>//;
+
+ return $1 if $page =~ /^([^<>]+)/;
+ return "?";
+}
+
+sub rangesort {
+ my $apno = &pageno($a);
+ my $bpno = &pageno($b);
+
+ # Make sure roman pages come before arabic ones, otherwise sort them in order
+ return -1 if ($apno !~ /^\d+/ && $bpno =~ /^\d+/);
+ return 1 if ($apno =~ /^\d+/ && $bpno !~ /^\d+/);
+ return $apno <=> $bpno;
+}
+
+sub rangelen {
+ my $count = shift;
+ my @pages = @_;
+ my $len = 1;
+ my $inrange = 1;
+
+ my $current = &pageno($pages[$count]);
+ while ($count < $#pages && $inrange) {
+ $count++;
+ my $next = &pageno($pages[$count]);
+ if ($current + 1 eq $next) {
+ $current = $next;
+ $inrange = 1;
+ $len++;
+ } else {
+ $inrange = 0;
+ }
+ }
+
+ return $len;
+}
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml
new file mode 100644
index 0000000..701d414
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml
@@ -0,0 +1,1002 @@
+<?xml version="1.0"?>
+
+<reference><info><title>FO Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8487 2009-07-14 21:43:36Z bobstayton $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for FO output.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_background-color">
+<refnamediv>
+<refname>dbfo_background-color</refname>
+<refpurpose>Sets background color for an image</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo background-color="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGcolor.html">Background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_bgcolor">
+<refnamediv>
+<refname>dbfo_bgcolor</refname>
+<refpurpose>Sets background color on a table row or table cell</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo bgcolor</tag> PI as child of a table row
+ or cell to set a background color for that table row or cell.</para>
+
+
+<para>This PI works for both CALS and HTML tables.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGtableColor.html#CellBGColor">Cell background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_float-type">
+<refnamediv>
+<refname>dbfo_float-type</refname>
+<refpurpose>Specifies float behavior for a sidebar</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo float-type="margin.note"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo float-type</tag> PI to specify the float
+ behavior for a <tag>sidebar</tag> (to cause the sidebar to be
+ displayed as a marginal note).</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>float-type="margin.note"</term>
+ <listitem>
+
+<para>Specifies that the <tag>sidebar</tag> should be
+ displayed as a marginal note.</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>sidebar.float.type</parameter> (parameter),
+ <parameter>sidebar.float.width</parameter> (parameter),
+ <parameter>sidebar.properties</parameter> (attribute-set),
+ <parameter>sidebar.title.properties</parameter> (attribute-set)
+ </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="SideFloats.html#SidebarFloats">A sidebar as
+ side float</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_funcsynopsis-style">
+<refnamediv>
+<refname>dbfo_funcsynopsis-style</refname>
+<refpurpose>Specifies presentation style for a funcsynopsis</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>funcsynopsis.style</parameter></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_glossary-presentation">
+<refnamediv>
+<refname>dbfo_glossary-presentation</refname>
+<refpurpose>Specifies presentation style for a glossary</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo glossary-presentation="list"|"blocks"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo glossary-presentation</tag> PI as a child of
+ a <tag>glossary</tag> to control its presentation style.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>glossary-presentation="list"</term>
+ <listitem>
+
+<para>Displays the glossary as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>glossary-presentation="blocks"</term>
+ <listitem>
+
+<para>Displays the glossary as blocks</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>glossary.as.blocks</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint">Glossary
+ formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_glosslist-presentation">
+<refnamediv>
+<refname>dbfo_glosslist-presentation</refname>
+<refpurpose>Specifies presentation style for a glosslist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo glosslist-presentation="list"|"blocks"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo glosslist-presentation</tag> PI as a child of
+ a <tag>glosslist</tag> to control its presentation style.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>glosslist-presentation="list"</term>
+ <listitem>
+
+<para>Displays the glosslist as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>glosslist-presentation="blocks"</term>
+ <listitem>
+
+<para>Displays the glosslist as blocks</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>glosslist.as.blocks</parameter> </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint">Glossary
+ formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_glossterm-width">
+<refnamediv>
+<refname>dbfo_glossterm-width</refname>
+<refpurpose>Specifies the glossterm width for a glossary or
+ glosslist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo glossterm-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo glossterm-width</tag> PI as a child of a
+ <tag>glossary</tag> or <tag>glosslist</tag> to specify the
+ width for output of <tag>glossterm</tag> instances in the
+ output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>glossterm-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the glossterm width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>glossterm.width</parameter>,
+ <parameter>glossterm.separation</parameter>
+ </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint">Glossary
+ formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_keep-together">
+<refnamediv>
+<refname>dbfo_keep-together</refname>
+<refpurpose>Specifies “keep†behavior for a table, example,
+ figure, equation, procedure, or task</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo keep-together="auto"|"always"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo keep-together</tag> PI as a child of a
+ formal object (<tag>table</tag>, <tag>example</tag>,
+ <tag>figure</tag>, <tag>equation</tag>, <tag>procedure</tag>, or
+ <tag>task</tag>) to specify “keep†behavior (to allow the object to
+ “break†across a page).</para>
+
+
+<para>The PI also works with <tag>informaltable</tag>, <tag>informalexample</tag>,
+ <tag>informalfigure</tag> and <tag>informalequation</tag>.
+ </para>
+
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>keep-together="auto"</term>
+ <listitem>
+
+<para>Enables the object to break across a page</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>keep-together="always"</term>
+ <listitem>
+
+<para>Prevents the object from breaking across a page (the
+ default stylesheet behavior)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para>formal.object.properties</para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="PageBreaking.html#KeepTogetherPI">Keep-together processing instruction</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_label-width">
+<refnamediv>
+<refname>dbfo_label-width</refname>
+<refpurpose>Specifies the label width for a qandaset, itemizedlist, orderedlist
+ or calloutlist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo label-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo label-width</tag> PI as a child of a
+ <tag>qandaset</tag>, <tag>itemizedlist</tag>, <tag>orderedlist</tag>,
+ or <tag>calloutlist</tag> to specify the width of labels.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the label width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_linenumbering.everyNth">
+<refnamediv>
+<refname>dbfo_linenumbering.everyNth</refname>
+<refpurpose>Specifies interval for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo linenumbering.everyNth</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the interval at which lines are numbered.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+
+<para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.everyNth</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_linenumbering.separator">
+<refnamediv>
+<refname>dbfo_linenumbering.separator</refname>
+<refpurpose>Specifies separator text for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo linenumbering.separator</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the separator text output between the line numbers and content.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.separator</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_linenumbering.width">
+<refnamediv>
+<refname>dbfo_linenumbering.width</refname>
+<refpurpose>Specifies width for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo linenumbering.width</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the width set aside for line numbers.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the width (inluding units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.width</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_list-presentation">
+<refnamediv>
+<refname>dbfo_list-presentation</refname>
+<refpurpose>Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo list-presentation="list"|"blocks"|"table"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+
+<para>Displays the list as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="blocks"</term>
+ <listitem>
+
+<para>(<tag>variablelist</tag> only) Displays the list as blocks</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+
+<para>(<tag>segmentedlist</tag> only) Displays the list as a table</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<itemizedlist>
+ <listitem>
+
+<para><parameter>variablelist.as.blocks</parameter></para>
+
+ </listitem>
+ <listitem>
+
+<para><parameter>variablelist.as.table</parameter></para>
+
+ </listitem>
+ </itemizedlist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#ListIndents">Variable list formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_list-width">
+<refnamediv>
+<refname>dbfo_list-width</refname>
+<refpurpose>Specifies the width of a horizontal simplelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo list-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo list-width</tag> PI as a child of a
+ <tag>simplelist</tag> whose <tag class="attribute">class</tag>
+ value is <literal>horizontal</literal>, to specify the width
+ of the <tag>simplelist</tag>.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the <tag>simplelist</tag> width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_orientation">
+<refnamediv>
+<refname>dbfo_orientation</refname>
+<refpurpose>Specifies the orientation for a CALS table row or cell</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo orientation</tag> PI as a child of a CALS
+ <tag>table</tag> row or cell to specify the orientation
+ (rotation) for the row or cell.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</term>
+ <listitem>
+
+<para>Specifies the number of degrees by which the cell or
+ row is rotated</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_pgwide">
+<refnamediv>
+<refname>dbfo_pgwide</refname>
+<refpurpose>Specifies if an <tag>equation</tag> or <tag>example</tag> goes across full page width</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo pgwide="0"|"1"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo pgwide</tag> PI as a child of an
+ <tag>equation</tag> or <tag>example</tag> to specify that the
+ content should rendered across the full width of the page.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>pgwide="0"</term>
+ <listitem>
+
+<para>If zero, the content is rendered across the current
+ text flow</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>pgwide="1"</term>
+ <listitem>
+
+<para>If <code>1</code> (or any non-zero value), the
+ content is rendered across the full width of the page</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>pgwide.properties</parameter></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_rotated-width">
+<refnamediv>
+<refname>dbfo_rotated-width</refname>
+<refpurpose>Specifies the width for a CALS table <tag>entry</tag> or
+ <tag>row</tag></refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo rotated-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo rotated-width</tag> PI as a child of
+ <tag>entry</tag> or <tag>row</tag> instance in a CALS table to specify the
+ width of that the <tag>entry</tag> or <tag>row</tag>; or
+ use it higher up in table to cause the width to be inherited
+ recursively down.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>rotated-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the width of a row or cell (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_sidebar-width">
+<refnamediv>
+<refname>dbfo_sidebar-width</refname>
+<refpurpose>Specifies the width of a sidebar</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo sidebar-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo sidebar-width</tag> PI as a child of a
+ <tag>sidebar</tag> to specify the width of the sidebar.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>sidebar-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the <tag>sidebar</tag> width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>sidebar.float.type parameter</parameter>,
+ <parameter>sidebar.float.width parameter</parameter>,
+ <parameter>sidebar.properties attribute-set</parameter>,
+ <parameter>sidebar.title.properties</parameter>
+ </para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="SideFloats.html#SidebarFloats">A sidebar as
+ side float</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_start">
+<refnamediv>
+<refname>dbfo_start</refname>
+<refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo start="<replaceable>character</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para><emphasis>This PI is obsolete</emphasis>. The intent of
+ it was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Orderedlists.html#ListStartNum">List starting number</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_table-width">
+<refnamediv>
+<refname>dbfo_table-width</refname>
+<refpurpose>Specifies the width for a CALS table or for revhistory
+ output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo table-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo table-width</tag> PI as a child or
+ sibling of a CALS <tag>table</tag>, or as a child of an
+ <tag>informaltable</tag>, <tag>entrytbl</tag>, or
+ <tag>revhistory</tag> instance (which is rendered as a table
+ in output) to specify the width of the table in output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the table width (including units or as a percentage)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Tables.html#TableWidth">Table width</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_term-width">
+<refnamediv>
+<refname>dbfo_term-width</refname>
+<refpurpose>Specifies the term width for a variablelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo term-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the term width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#ListIndents">Variable list formatting in print</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_toc">
+<refnamediv>
+<refname>dbfo_toc</refname>
+<refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo toc="0"|"1"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+
+<para>If zero, no TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+
+<para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAtoc.html">Q and A list of questions</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo-need">
+<refnamediv>
+<refname>dbfo-need</refname>
+<refpurpose>Specify a need for space (a kind of soft page break)</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo-need height="<replaceable>n</replaceable>" [space-before="<replaceable>n</replaceable>"]</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>A “need†is a request for space on a page. If the
+ requested space is not available, the page breaks and the
+ content that follows the need request appears on the next
+ page. If the requested space is available, then no page break
+ is inserted.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>height="<replaceable>n</replaceable>"</term>
+ <listitem>
+
+<para>The amount of height needed (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>space-before="<replaceable>n</replaceable>"</term>
+ <listitem>
+
+<para>The amount of extra vertical space to add (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="PageBreaking.html#SoftPageBreaks">Soft page breaks</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfo_row-height">
+<refnamediv>
+<refname>dbfo_row-height</refname>
+<refpurpose>Specifies the height for a CALS table row</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfo row-height="<replaceable>height</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfo row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the row height (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="RowHeight.html">Row height</link></para>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl
new file mode 100644
index 0000000..c5f258b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl
@@ -0,0 +1,1092 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: pi.xsl 8487 2009-07-14 21:43:36Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info><title>FO Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8487 2009-07-14 21:43:36Z bobstayton $
+ </releaseinfo>
+ </info>
+
+ <partintro id="partintro">
+ <title>Introduction</title>
+
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for FO output.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<doc:pi name="dbfo_background-color" xmlns="">
+ <refpurpose>Sets background color for an image</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo background-color="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="BGcolor.html"
+ >Background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_background-color">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'background-color'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_bgcolor" xmlns="">
+ <refpurpose>Sets background color on a table row or table cell</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo bgcolor</tag> PI as child of a table row
+ or cell to set a background color for that table row or cell.</para>
+ <para>This PI works for both CALS and HTML tables.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="BGtableColor.html#CellBGColor"
+ >Cell background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_bgcolor">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'bgcolor'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_float-type" xmlns="">
+ <refpurpose>Specifies float behavior for a sidebar</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo float-type</tag> PI to specify the float
+ behavior for a <tag>sidebar</tag> (to cause the sidebar to be
+ displayed as a marginal note).</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo float-type="margin.note"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>float-type="margin.note"</term>
+ <listitem>
+ <para>Specifies that the <tag>sidebar</tag> should be
+ displayed as a marginal note.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>sidebar.float.type</parameter> (parameter),
+ <parameter>sidebar.float.width</parameter> (parameter),
+ <parameter>sidebar.properties</parameter> (attribute-set),
+ <parameter>sidebar.title.properties</parameter> (attribute-set)
+ </para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg" xlink:href="SideFloats.html#SidebarFloats" >A sidebar as
+ side float</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_float-type">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'float-type'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_funcsynopsis-style" xmlns="">
+ <refpurpose>Specifies presentation style for a funcsynopsis</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>funcsynopsis.style</parameter></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_funcsynopsis-style">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'funcsynopsis-style'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_glossary-presentation" xmlns="">
+ <refpurpose>Specifies presentation style for a glossary</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo glossary-presentation</tag> PI as a child of
+ a <tag>glossary</tag> to control its presentation style.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo glossary-presentation="list"|"blocks"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>glossary-presentation="list"</term>
+ <listitem>
+ <para>Displays the glossary as a list</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>glossary-presentation="blocks"</term>
+ <listitem>
+ <para>Displays the glossary as blocks</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>glossary.as.blocks</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary
+ formatting in print</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_glossary-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'glossary-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_glosslist-presentation" xmlns="">
+ <refpurpose>Specifies presentation style for a glosslist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo glosslist-presentation</tag> PI as a child of
+ a <tag>glosslist</tag> to control its presentation style.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo glosslist-presentation="list"|"blocks"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>glosslist-presentation="list"</term>
+ <listitem>
+ <para>Displays the glosslist as a list</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>glosslist-presentation="blocks"</term>
+ <listitem>
+ <para>Displays the glosslist as blocks</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>glosslist.as.blocks</parameter> </para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary
+ formatting in print</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_glosslist-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'glosslist-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_glossterm-width" xmlns="">
+ <refpurpose>Specifies the glossterm width for a glossary or
+ glosslist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo glossterm-width</tag> PI as a child of a
+ <tag>glossary</tag> or <tag>glosslist</tag> to specify the
+ width for output of <tag>glossterm</tag> instances in the
+ output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo glossterm-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>glossterm-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the glossterm width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>glossterm.width</parameter>,
+ <parameter>glossterm.separation</parameter>
+ </para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg" xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary
+ formatting in print</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_glossterm-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'glossterm-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_keep-together" xmlns="">
+ <refpurpose>Specifies “keep†behavior for a table, example,
+ figure, equation, procedure, or task</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo keep-together</tag> PI as a child of a
+ formal object (<tag>table</tag>, <tag>example</tag>,
+ <tag>figure</tag>, <tag>equation</tag>, <tag>procedure</tag>, or
+ <tag>task</tag>) to specify “keep†behavior (to allow the object to
+ “break†across a page).</para>
+ <para>The PI also works with <tag>informaltable</tag>, <tag>informalexample</tag>,
+ <tag>informalfigure</tag> and <tag>informalequation</tag>.
+ </para>
+
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo keep-together="auto"|"always"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>keep-together="auto"</term>
+ <listitem>
+ <para>Enables the object to break across a page</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>keep-together="always"</term>
+ <listitem>
+ <para>Prevents the object from breaking across a page (the
+ default stylesheet behavior)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para>formal.object.properties</para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg" xlink:href="PageBreaking.html#KeepTogetherPI"
+ >Keep-together processing instruction</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_keep-together">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'keep-together'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_label-width" xmlns="">
+ <refpurpose>Specifies the label width for a qandaset, itemizedlist, orderedlist
+ or calloutlist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo label-width</tag> PI as a child of a
+ <tag>qandaset</tag>, <tag>itemizedlist</tag>, <tag>orderedlist</tag>,
+ or <tag>calloutlist</tag> to specify the width of labels.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo label-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the label width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_label-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'label-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_linenumbering.everyNth" xmlns="">
+ <refpurpose>Specifies interval for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo linenumbering.everyNth</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the interval at which lines are numbered.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+ <para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.everyNth</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_linenumbering.everyNth">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_linenumbering.separator" xmlns="">
+ <refpurpose>Specifies separator text for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo linenumbering.separator</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the separator text output between the line numbers and content.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.separator</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_linenumbering.separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_linenumbering.width" xmlns="">
+ <refpurpose>Specifies width for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo linenumbering.width</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the width set aside for line numbers.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the width (inluding units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.width</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_linenumbering.width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_list-presentation" xmlns="">
+ <refpurpose>Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo list-presentation="list"|"blocks"|"table"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+ <para>Displays the list as a list</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="blocks"</term>
+ <listitem>
+ <para>(<tag>variablelist</tag> only) Displays the list as blocks</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+ <para>(<tag>segmentedlist</tag> only) Displays the list as a table</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <itemizedlist>
+ <listitem>
+ <para><parameter>variablelist.as.blocks</parameter></para>
+ </listitem>
+ <listitem>
+ <para><parameter>variablelist.as.table</parameter></para>
+ </listitem>
+ </itemizedlist>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#ListIndents"
+ >Variable list formatting in print</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_list-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'list-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_list-width" xmlns="">
+ <refpurpose>Specifies the width of a horizontal simplelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo list-width</tag> PI as a child of a
+ <tag>simplelist</tag> whose <tag class="attribute">class</tag>
+ value is <literal>horizontal</literal>, to specify the width
+ of the <tag>simplelist</tag>.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo list-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the <tag>simplelist</tag> width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_list-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'list-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_orientation" xmlns="">
+ <refpurpose>Specifies the orientation for a CALS table row or cell</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo orientation</tag> PI as a child of a CALS
+ <tag>table</tag> row or cell to specify the orientation
+ (rotation) for the row or cell.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</term>
+ <listitem>
+ <para>Specifies the number of degrees by which the cell or
+ row is rotated</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_orientation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'orientation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_pgwide" xmlns="">
+ <refpurpose>Specifies if an <tag>equation</tag> or <tag>example</tag> goes across full page width</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo pgwide</tag> PI as a child of an
+ <tag>equation</tag> or <tag>example</tag> to specify that the
+ content should rendered across the full width of the page.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo pgwide="0"|"1"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>pgwide="0"</term>
+ <listitem>
+ <para>If zero, the content is rendered across the current
+ text flow</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>pgwide="1"</term>
+ <listitem>
+ <para>If <code>1</code> (or any non-zero value), the
+ content is rendered across the full width of the page</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>pgwide.properties</parameter></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_pgwide">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'pgwide'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_rotated-width" xmlns="">
+ <refpurpose>Specifies the width for a CALS table <tag>entry</tag> or
+ <tag>row</tag></refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo rotated-width</tag> PI as a child of
+ <tag>entry</tag> or <tag>row</tag> instance in a CALS table to specify the
+ width of that the <tag>entry</tag> or <tag>row</tag>; or
+ use it higher up in table to cause the width to be inherited
+ recursively down.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo rotated-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>rotated-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the width of a row or cell (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_rotated-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'rotated-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_sidebar-width" xmlns="">
+ <refpurpose>Specifies the width of a sidebar</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo sidebar-width</tag> PI as a child of a
+ <tag>sidebar</tag> to specify the width of the sidebar.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo sidebar-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>sidebar-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the <tag>sidebar</tag> width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>sidebar.float.type parameter</parameter>,
+ <parameter>sidebar.float.width parameter</parameter>,
+ <parameter>sidebar.properties attribute-set</parameter>,
+ <parameter>sidebar.title.properties</parameter>
+ </para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg" xlink:href="SideFloats.html#SidebarFloats" >A sidebar as
+ side float</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_sidebar-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'sidebar-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_start" xmlns="">
+ <refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose>
+ <refdescription>
+ <para><emphasis>This PI is obsolete</emphasis>. The intent of
+ it was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo start="<replaceable>character</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+ <para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Orderedlists.html#ListStartNum"
+ >List starting number</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_start">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'start'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_table-width" xmlns="">
+ <refpurpose>Specifies the width for a CALS table or for revhistory
+ output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo table-width</tag> PI as a child or
+ sibling of a CALS <tag>table</tag>, or as a child of an
+ <tag>informaltable</tag>, <tag>entrytbl</tag>, or
+ <tag>revhistory</tag> instance (which is rendered as a table
+ in output) to specify the width of the table in output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo table-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the table width (including units or as a percentage)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Tables.html#TableWidth"
+ >Table width</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_table-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'table-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_term-width" xmlns="">
+ <refpurpose>Specifies the term width for a variablelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo term-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the term width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#ListIndents"
+ >Variable list formatting in print</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_term-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'term-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_toc" xmlns="">
+ <refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo toc="0"|"1"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+ <para>If zero, no TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+ <para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="QandAtoc.html"
+ >Q and A list of questions</link>,
+ <link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_toc">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'toc'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo-need" xmlns="">
+ <refpurpose>Specify a need for space (a kind of soft page break)</refpurpose>
+ <refdescription>
+ <para>A “need†is a request for space on a page. If the
+ requested space is not available, the page breaks and the
+ content that follows the need request appears on the next
+ page. If the requested space is available, then no page break
+ is inserted.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo-need height="<replaceable>n</replaceable>" [space-before="<replaceable>n</replaceable>"]</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>height="<replaceable>n</replaceable>"</term>
+ <listitem>
+ <para>The amount of height needed (including units)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>space-before="<replaceable>n</replaceable>"</term>
+ <listitem>
+ <para>The amount of extra vertical space to add (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="PageBreaking.html#SoftPageBreaks"
+ >Soft page breaks</link></para>
+ </refsee>
+</doc:pi>
+
+<doc:pi name="dbfo_row-height" xmlns="">
+ <refpurpose>Specifies the height for a CALS table row</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfo row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfo row-height="<replaceable>height</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+ <para>Specifies the row height (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="RowHeight.html"
+ >Row height</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbfo_row-height">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+ <xsl:with-param name="attribute" select="'row-height'"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+<xsl:template name="pi.dbfo-need">
+ <xsl:variable name="pi-height">
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute" select="'height'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="height">
+ <xsl:choose>
+ <xsl:when test="$pi-height != ''">
+ <xsl:value-of select="$pi-height"/>
+ </xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="pi-before">
+ <xsl:call-template name="dbfo-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute" select="'space-before'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="spacer">
+ <fo:block-container width="100%" height="{$height}">
+ <fo:block><fo:leader leader-length="0pt"/></fo:block>
+ </fo:block-container>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$fop1.extensions != 0">
+ <!-- Doesn't work in fop -->
+ </xsl:when>
+ <xsl:when test="$fop.extensions != 0">
+ <!-- Doesn't work in fop -->
+ </xsl:when>
+ <xsl:when test="$pi-before != '' and
+ not(following-sibling::listitem) and
+ not(following-sibling::step)">
+ <fo:block space-after="0pt" space-before="{$pi-before}">
+ <xsl:copy-of select="$spacer"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="following-sibling::para">
+ <fo:block space-after="0pt"
+ xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:copy-of select="$spacer"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="following-sibling::table or
+ following-sibling::figure or
+ following-sibling::example or
+ following-sibling::equation">
+ <fo:block space-after="0pt"
+ xsl:use-attribute-sets="formal.object.properties">
+ <xsl:copy-of select="$spacer"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="following-sibling::informaltable or
+ following-sibling::informalfigure or
+ following-sibling::informalexample or
+ following-sibling::informalequation">
+ <fo:block space-after="0pt"
+ xsl:use-attribute-sets="informal.object.properties">
+ <xsl:copy-of select="$spacer"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="following-sibling::itemizedlist or
+ following-sibling::orderedlist or
+ following-sibling::variablelist or
+ following-sibling::simplelist">
+ <fo:block space-after="0pt"
+ xsl:use-attribute-sets="informal.object.properties">
+ <xsl:copy-of select="$spacer"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="following-sibling::listitem or
+ following-sibling::step">
+ <fo:list-item space-after="0pt"
+ xsl:use-attribute-sets="informal.object.properties">
+ <fo:list-item-label/>
+ <fo:list-item-body start-indent="0pt" end-indent="0pt">
+ <xsl:copy-of select="$spacer"/>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:when>
+ <xsl:when test="following-sibling::sect1 or
+ following-sibling::sect2 or
+ following-sibling::sect3 or
+ following-sibling::sect4 or
+ following-sibling::sect5 or
+ following-sibling::section">
+ <fo:block space-after="0pt"
+ xsl:use-attribute-sets="section.title.properties">
+ <xsl:copy-of select="$spacer"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block space-after="0pt" space-before="0em">
+ <xsl:copy-of select="$spacer"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$fop1.extensions != 0">
+ <!-- Doesn't work in fop -->
+ </xsl:when>
+ <xsl:when test="$fop.extensions != 0">
+ <!-- Doesn't work in fop -->
+ </xsl:when>
+ <xsl:when test="following-sibling::listitem or
+ following-sibling::step">
+ <fo:list-item space-before.precedence="force"
+ space-before="-{$height}"
+ space-after="0pt"
+ space-after.precedence="force">
+ <fo:list-item-label/>
+ <fo:list-item-body start-indent="0pt" end-indent="0pt"/>
+ </fo:list-item>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block space-before.precedence="force"
+ space-before="-{$height}"
+ space-after="0pt"
+ space-after.precedence="force">
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbfo-attribute">
+ <!-- * dbfo-attribute is an interal utility template for retrieving -->
+ <!-- * pseudo-attributes/parameters from PIs -->
+ <xsl:param name="pis" select="processing-instruction('dbfo')"/>
+ <xsl:param name="attribute">filename</xsl:param>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$pis"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction()">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbfo-need')">
+ <xsl:call-template name="pi.dbfo-need"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl
new file mode 100644
index 0000000..3b9b9c1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt" version="1.0">
+
+<!-- It is important to use indent="no" here, otherwise verbatim -->
+<!-- environments get broken by indented tags...at least when the -->
+<!-- callout extension is used...at least with some processors -->
+<xsl:output method="xml" indent="no"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8913 2010-10-01 04:44:57Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="fo.xsl"/>
+<xsl:include href="fo-rtf.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pagesetup.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="spaces.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="../html/chunker.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:include href="fop.xsl"/>
+<xsl:include href="fop1.xsl"/>
+<xsl:include href="passivetex.xsl"/>
+<xsl:include href="xep.xsl"/>
+<xsl:include href="axf.xsl"/>
+<xsl:include href="ptc.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'fo'"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <fo:block color="red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<!-- Update this list if new root elements supported -->
+<xsl:variable name="root.elements" select="' appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex '"/>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:variable name="root.element" select="key('id', $rootid)"/>
+ <xsl:choose>
+ <xsl:when test="count($root.element) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: Document root element ($rootid=</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>) for FO output </xsl:text>
+ <xsl:text>must be one of the following elements:</xsl:text>
+ <xsl:value-of select="$root.elements"/>
+ </xsl:message>
+ </xsl:when>
+ <!-- Otherwise proceed -->
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$root.element" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$root.element" mode="process.root"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Otherwise process the document root element -->
+ <xsl:otherwise>
+ <xsl:variable name="document.element" select="*[1]"/>
+ <xsl:choose>
+ <xsl:when test="not(contains($root.elements, concat(' ', local-name($document.element), ' ')))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: Document root element for FO output </xsl:text>
+ <xsl:text>must be one of the following elements:</xsl:text>
+ <xsl:value-of select="$root.elements"/>
+ </xsl:message>
+ </xsl:when>
+ <!-- Otherwise proceed -->
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="document.element" select="self::*"/>
+
+ <xsl:call-template name="root.messages"/>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$document.element/title[1]">
+ <xsl:value-of select="$document.element/title[1]"/>
+ </xsl:when>
+ <xsl:otherwise>[could not find document title]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Include all id values in XEP output -->
+ <xsl:if test="$xep.extensions != 0">
+ <xsl:processing-instruction name="xep-pdf-drop-unused-destinations">false</xsl:processing-instruction>
+ </xsl:if>
+
+ <fo:root xsl:use-attribute-sets="root.properties">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*[1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:if test="$xep.extensions != 0">
+ <xsl:call-template name="xep-pis"/>
+ <xsl:call-template name="xep-document-information"/>
+ </xsl:if>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-document-information"/>
+ </xsl:if>
+
+ <xsl:call-template name="setup.pagemasters"/>
+
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:apply-templates select="$document.element" mode="fop.outline"/>
+ </xsl:if>
+
+ <xsl:if test="$fop1.extensions != 0">
+ <xsl:call-template name="fop1-document-information"/>
+ <xsl:variable name="bookmarks">
+ <xsl:apply-templates select="$document.element" mode="fop1.outline"/>
+ </xsl:variable>
+ <xsl:if test="string($bookmarks) != ''">
+ <fo:bookmark-tree>
+ <xsl:copy-of select="$bookmarks"/>
+ </fo:bookmark-tree>
+ </xsl:if>
+ <xsl:apply-templates select="$document.element" mode="fop1.foxdest"/>
+ </xsl:if>
+
+ <xsl:if test="$xep.extensions != 0">
+ <xsl:variable name="bookmarks">
+ <xsl:apply-templates select="$document.element" mode="xep.outline"/>
+ </xsl:variable>
+ <xsl:if test="string($bookmarks) != ''">
+ <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions">
+ <xsl:copy-of select="$bookmarks"/>
+ </rx:outline>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="$arbortext.extensions != 0 and $ati.xsl11.bookmarks != 0">
+ <xsl:variable name="bookmarks">
+ <xsl:apply-templates select="$document.element" mode="ati.xsl11.bookmarks"/>
+ </xsl:variable>
+ <xsl:if test="string($bookmarks) != ''">
+ <fo:bookmark-tree>
+ <xsl:copy-of select="$bookmarks"/>
+ </fo:bookmark-tree>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:apply-templates select="$document.element"/>
+ </fo:root>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+ <xsl:message>
+ <xsl:text>Making </xsl:text>
+ <xsl:value-of select="$page.orientation"/>
+ <xsl:text> pages on </xsl:text>
+ <xsl:value-of select="$paper.type"/>
+ <xsl:text> paper (</xsl:text>
+ <xsl:value-of select="$page.width"/>
+ <xsl:text>x</xsl:text>
+ <xsl:value-of select="$page.height"/>
+ <xsl:text>)</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl
new file mode 100644
index 0000000..a8874d8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl
@@ -0,0 +1,77 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+<!-- ================================================================ -->
+<!-- -->
+<!-- PTC/Arbortext Code for XSL 1.1 bookmark support -->
+<!-- -->
+<!-- ================================================================ -->
+
+<xsl:param name="ati.xsl11.bookmarks" select="1"/>
+
+<xsl:variable name="ati-a-dia" select=
+"'&#257;&#259;&#261;&#263;&#265;&#267;&#269;&#271;&#273;&#275;&#277;&#279;&#281;&#283;&#339;&#285;&#287;&#289;&#291;&#293;&#295;&#297;&#299;&#301;&#303;&#305;&#309;&#311;&#314;&#316;&#318;&#320;&#322;&#324;&#326;&#328;&#331;&#333;&#335;&#337;&#341;&#343;&#345;&#347;&#349;&#351;&#353;&#355;&#357;&#359;&#361;&#363;&#365;&#367;&#369;&#371;&#373;&#375;&#378;&#380;&#382;&#256;&#258;&#260;&#262;&#264;&#266;&#268;&#270;&#272;&#274;&#276;&#278;&#280;&#282;&#338;&#284;&#286;&#288;&#290;&#292;&#294;&#296;&#298;&#300;&#302;&#304;&#308;&#310;&#313;&#315;&#317;&#319;&#321;&#323;&#325;&#327;&#330;&#332;&#334;&#336;&#340;&#342;&#344;&#346;&#348;&#350;&#352;&#354;&#356;&#358;&#360;&#362;&#364;&#366;&#368;&#370;&#372;&#374;&#376;&#377;&#379;&#381;'"/>
+
+<xsl:variable name="ati-a-asc" select=
+"'aaaccccddeeeeeegggghhiiiiijklllllnnnnooorrrsssstttuuuuuuwyzzzAAACCCCDDEEEEEEGGGGHHIIIIIJKLLLLLNNNNOOORRRSSSSTTTUUUUUUWYYZZZ'"/>
+
+<xsl:template match="*" mode="ati.xsl11.bookmarks">
+ <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/>
+</xsl:template>
+
+<xsl:template match="set|book|part|reference|preface|chapter|appendix|article
+ |glossary|bibliography|index|setindex
+ |refentry
+ |sect1|sect2|sect3|sect4|sect5|section"
+ mode="ati.xsl11.bookmarks">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="bookmark-label">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <!-- Put the root element bookmark at the same level as its children -->
+ <!-- If the object is a set or book, generate a bookmark for the toc -->
+
+ <xsl:choose>
+ <xsl:when test="self::index and $generate.index = 0"/>
+ <xsl:when test="parent::*">
+ <fo:bookmark internal-destination="{$id}">
+ <fo:bookmark-title>
+ <xsl:value-of select="translate($bookmark-label, $ati-a-dia, $ati-a-asc)"/>
+ </fo:bookmark-title>
+ <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/>
+ </fo:bookmark>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:bookmark internal-destination="{$id}">
+ <fo:bookmark-title>
+ <xsl:value-of select="translate($bookmark-label, $ati-a-dia, $ati-a-asc)"/>
+ </fo:bookmark-title>
+ </fo:bookmark>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')
+ and section|sect1|refentry
+ |article|bibliography|glossary
+ |appendix">
+ <fo:bookmark internal-destination="toc...{$id}">
+ <fo:bookmark-title>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </fo:bookmark-title>
+ </fo:bookmark>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl
new file mode 100644
index 0000000..cbf118a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl
@@ -0,0 +1,395 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: qandaset.xsl 8350 2009-03-17 07:24:29Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="qandaset" name="process.qandaset">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="label-length">
+ <xsl:call-template name="qandaset.label.length"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbfo_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="content">
+ <fo:block id="{$id}">
+ <xsl:choose>
+ <xsl:when test="parent::*">
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:apply-templates select="(blockinfo/title|
+ info/title|title)[1]"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- If it is the root element -->
+ <xsl:otherwise>
+ <xsl:call-template name="qandaset.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="(contains($toc.params, 'toc') and $toc != '0')
+ or $toc = '1'">
+ <xsl:call-template name="qandaset.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="qandaset.toc.separator"/>
+
+ <xsl:apply-templates select="*[local-name(.) != 'title'
+ and local-name(.) != 'titleabbrev'
+ and local-name(.) != 'qandadiv'
+ and local-name(.) != 'qandaentry']"/>
+ <xsl:apply-templates select="qandadiv"/>
+
+ <xsl:if test="qandaentry">
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-label-separation="0.2em">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:choose>
+ <xsl:when test="$label-length != ''">
+ <xsl:value-of select="$label-length"/>
+ </xsl:when>
+ <xsl:otherwise>2.5em</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:apply-templates select="qandaentry"/>
+ </fo:list-block>
+ </xsl:if>
+ </fo:block>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <!-- Otherwise create a page sequence -->
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="page.sequence">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="master-reference" select="'body'"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="qandaset.label.length">
+ <xsl:param name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:param>
+
+ <xsl:variable name="label-width">
+ <xsl:call-template name="pi.dbfo_label-width"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$label-width != ''">
+ <xsl:value-of select="$label-width"/>
+ </xsl:when>
+ <xsl:when test="descendant::label">
+ <xsl:call-template name="longest.term">
+ <xsl:with-param name="terms" select="descendant::label"/>
+ <xsl:with-param name="maxlength" select="20"/>
+ </xsl:call-template>
+ <xsl:text>em * 0.50</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($deflabel, 'qnumber') and
+ $qandadiv.autolabel != 0 and
+ $qanda.inherit.numeration != 0">
+ <xsl:text>5em</xsl:text>
+ </xsl:when>
+ <xsl:when test="$deflabel ='qnumber' and
+ $qandadiv.autolabel != 0 and
+ $qanda.inherit.numeration != 0">
+ <xsl:text>4em</xsl:text>
+ </xsl:when>
+ <xsl:when test="$deflabel = 'number'">
+ <xsl:text>3em</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>2.5em</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo/title|qandset/info/title|qandaset/title">
+ <xsl:variable name="enclsect" select="(ancestor::section
+ | ancestor::simplesect
+ | ancestor::sect5
+ | ancestor::sect4
+ | ancestor::sect3
+ | ancestor::sect2
+ | ancestor::sect1
+ | ancestor::refsect3
+ | ancestor::refsect2
+ | ancestor::refsect1)[last()]"/>
+ <xsl:variable name="sectlvl">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$enclsect"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="qanda.heading">
+ <xsl:with-param name="level" select="$sectlvl + 1"/>
+ <xsl:with-param name="marker" select="0"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo|qandaset/info">
+ <!-- what should this template really do? -->
+ <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="qandadiv">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+
+ <xsl:variable name="label-length">
+ <xsl:call-template name="qandaset.label.length"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:apply-templates select="(blockinfo/title|info/title|title)[1]"/>
+ <xsl:apply-templates select="*[local-name(.) != 'title'
+ and local-name(.) != 'titleabbrev'
+ and local-name(.) != 'qandadiv'
+ and local-name(.) != 'qandaentry']"/>
+ <fo:block>
+ <xsl:apply-templates select="qandadiv"/>
+
+ <xsl:if test="qandaentry">
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+ provisional-label-separation="0.2em">
+ <xsl:attribute name="provisional-distance-between-starts">
+ <xsl:choose>
+ <xsl:when test="$label-length != ''">
+ <xsl:value-of select="$label-length"/>
+ </xsl:when>
+ <xsl:otherwise>2.5em</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:apply-templates select="qandaentry"/>
+ </fo:list-block>
+ </xsl:if>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title|qandadiv/info/title|qandadiv/title">
+ <xsl:variable name="enclsect" select="(ancestor::section
+ | ancestor::simplesect
+ | ancestor::sect5
+ | ancestor::sect4
+ | ancestor::sect3
+ | ancestor::sect2
+ | ancestor::sect1
+ | ancestor::refsect3
+ | ancestor::refsect2
+ | ancestor::refsect1)[last()]"/>
+ <xsl:variable name="sectlvl">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$enclsect"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="qanda.heading">
+ <xsl:with-param name="level" select="$sectlvl + 1 + count(ancestor::qandadiv)"/>
+ <xsl:with-param name="marker" select="0"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ <xsl:if test="$qandadiv.autolabel != 0">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="qandaentry">
+ <!-- Omit revhistory from fo:list-block because it is a table -->
+ <xsl:apply-templates select="question|answer"/>
+</xsl:template>
+
+<xsl:template match="question">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="entry.id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+
+ <xsl:variable name="label.content">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="contains($deflabel, 'number') and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <fo:list-item id="{$entry.id}" xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label id="{$id}" end-indent="label-end()">
+ <xsl:if test="string-length($label.content) &gt; 0">
+ <fo:block font-weight="bold">
+ <xsl:copy-of select="$label.content"/>
+ </fo:block>
+ </xsl:if>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'none' and not(label)">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates select="*[local-name(.)!='label']"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[local-name(.)!='label']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- Uncomment this line to get revhistory output in the question -->
+ <!-- <xsl:apply-templates select="preceding-sibling::revhistory"/> -->
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match="answer">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:variable name="entry.id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <xsl:variable name="answer.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label id="{$id}" end-indent="label-end()">
+ <xsl:choose>
+ <xsl:when test="string-length($answer.label) &gt; 0">
+ <fo:block font-weight="bold">
+ <xsl:copy-of select="$answer.label"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()">
+ <xsl:apply-templates select="*[local-name(.)!='label' and local-name(.) != 'qandaentry']"/>
+ <!-- * handle nested answer/qandaentry instances -->
+ <!-- * (bug 1509043 from Daniel Leidert) -->
+ <xsl:if test="descendant::question">
+ <xsl:call-template name="process.qandaset"/>
+ </xsl:if>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match="*" mode="qanda.defaultlabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="label">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template name="qanda.heading">
+ <xsl:param name="level" select="1"/>
+ <xsl:param name="marker" select="0"/>
+ <xsl:param name="title"/>
+ <xsl:param name="titleabbrev"/>
+
+ <fo:block xsl:use-attribute-sets="qanda.title.properties">
+ <xsl:if test="$marker != 0">
+ <fo:marker marker-class-name="section.head.marker">
+ <xsl:choose>
+ <xsl:when test="$titleabbrev = ''">
+ <xsl:value-of select="$title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$titleabbrev"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:marker>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$level=1">
+ <fo:block xsl:use-attribute-sets="qanda.title.level1.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=2">
+ <fo:block xsl:use-attribute-sets="qanda.title.level2.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=3">
+ <fo:block xsl:use-attribute-sets="qanda.title.level3.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=4">
+ <fo:block xsl:use-attribute-sets="qanda.title.level4.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=5">
+ <fo:block xsl:use-attribute-sets="qanda.title.level5.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block xsl:use-attribute-sets="qanda.title.level6.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl
new file mode 100644
index 0000000..1a35693
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl
@@ -0,0 +1,638 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 8598 2010-03-20 09:59:03Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="reference">
+ <xsl:if test="not(partintro)">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="reference.titlepage"/>
+ </fo:block>
+ <!-- Create one page sequence if no pagebreaks needed -->
+ <xsl:if test="$refentry.pagebreak = 0">
+ <xsl:apply-templates select="refentry"/>
+ </xsl:if>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:if>
+ <xsl:apply-templates select="partintro"/>
+ <xsl:if test="$refentry.pagebreak != 0">
+ <xsl:apply-templates select="refentry"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="reference" mode="reference.titlepage.mode">
+ <xsl:call-template name="reference.titlepage"/>
+</xsl:template>
+
+<xsl:template match="reference/partintro">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::reference"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ <fo:block id="{$id}">
+ <xsl:apply-templates select=".." mode="reference.titlepage.mode"/>
+ </fo:block>
+ <xsl:if test="title">
+ <xsl:call-template name="partintro.titlepage"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <!-- Create one page sequence if no pagebreaks needed -->
+ <xsl:if test="$refentry.pagebreak = 0">
+ <xsl:apply-templates select="../refentry"/>
+ </xsl:if>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="reference/docinfo|refentry/refentryinfo"></xsl:template>
+<xsl:template match="reference/info"></xsl:template>
+<xsl:template match="reference/title"></xsl:template>
+<xsl:template match="reference/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="refentry">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <xsl:variable name="refentry.content">
+ <fo:block id="{$id}">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*) or
+ (parent::reference and $refentry.pagebreak != 0) or
+ parent::part">
+ <!-- make a page sequence -->
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <xsl:copy-of select="$refentry.content"/>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block>
+ <xsl:if test="$refentry.pagebreak != 0">
+ <xsl:attribute name="break-before">page</xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$refentry.content"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="refmeta">
+ <xsl:apply-templates select=".//indexterm"/>
+</xsl:template>
+
+<xsl:template match="manvolnum">
+ <xsl:if test="$refentry.xref.manvolnum != 0">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refmiscinfo">
+</xsl:template>
+
+<xsl:template match="refentrytitle">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+
+ <!-- if refentry.generate.name is non-zero, then we need to generate a -->
+ <!-- localized "Name" subheading for this refnamdiv (unless it has a -->
+ <!-- preceding sibling that is a refnamediv, in which case we have already -->
+ <!-- generated a "Name" subheading, so we don't need to do it again -->
+ <xsl:if test="$refentry.generate.name != 0">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no generated title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xsl:use-attribute-sets="refnamediv.titlepage.recto.style"
+ font-family="{$title.fontset}">
+ <!-- Contents of what is now the format.refentry.subheading -->
+ <!-- template were formerly intended to be used only to -->
+ <!-- process those subsections of Refentry that have "real" -->
+ <!-- title children. So as a kludge to get around the fact -->
+ <!-- that the template still basically "expects" to be -->
+ <!-- processing that kind of a node, when we call the -->
+ <!-- template to process generated titles, we must call it -->
+ <!-- with values for the "offset" and "section" parameters -->
+ <!-- that are different from the default values in the -->
+ <!-- format.refentry.subheading template itself. Because -->
+ <!-- those defaults are the values appropriate for processing -->
+ <!-- "real" title nodes. -->
+ <xsl:call-template name="format.refentry.subheading">
+ <xsl:with-param name="section" select="self::*"/>
+ <xsl:with-param name="offset" select="1"/>
+ <xsl:with-param name="gentext.key" select="'RefName'"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="$refentry.generate.title != 0">
+ <xsl:variable name="section.level">
+ <xsl:call-template name="refentry.level">
+ <xsl:with-param name="node" select="ancestor::refentry"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="reftitle">
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- xsl:use-attribute-sets takes only a Qname, not a variable -->
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$section.level = 1">
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <fo:block xsl:use-attribute-sets="section.title.level1.properties">
+ <xsl:value-of select="$reftitle"/>
+ </fo:block>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$section.level = 2">
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <fo:block xsl:use-attribute-sets="section.title.level2.properties">
+ <xsl:value-of select="$reftitle"/>
+ </fo:block>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$section.level = 3">
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <fo:block xsl:use-attribute-sets="section.title.level3.properties">
+ <xsl:value-of select="$reftitle"/>
+ </fo:block>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$section.level = 4">
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <fo:block xsl:use-attribute-sets="section.title.level4.properties">
+ <xsl:value-of select="$reftitle"/>
+ </fo:block>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$section.level = 5">
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <fo:block xsl:use-attribute-sets="section.title.level5.properties">
+ <xsl:value-of select="$reftitle"/>
+ </fo:block>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block xsl:use-attribute-sets="refentry.title.properties">
+ <fo:block xsl:use-attribute-sets="section.title.level6.properties">
+ <xsl:value-of select="$reftitle"/>
+ </fo:block>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <fo:block>
+ <xsl:if test="not(following-sibling::refnamediv)">
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="refname">
+ <xsl:if test="not(preceding-sibling::refdescriptor)">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::refname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refpurpose">
+ <xsl:if test="node()">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">em-dash</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refdescriptor">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refclass">
+ <xsl:if test="$refclass.suppress = 0">
+ <fo:block font-weight="bold">
+ <xsl:if test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:if test="not(refsynopsisdivinfo/title|docinfo/title|info/title|title)">
+ <!-- * if we there is no appropriate title for this Refsynopsisdiv, -->
+ <!-- * then we need to call format.refentry.subheading to generate one -->
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style"
+ font-family="{$title.fontset}">
+ <!-- Contents of what is now the format.refentry.subheading -->
+ <!-- template were formerly intended to be used only to -->
+ <!-- process those subsections of Refentry that have "real" -->
+ <!-- title children. So as a kludge to get around the fact -->
+ <!-- that the template still basically "expects" to be -->
+ <!-- processing that kind of a node, when we call the -->
+ <!-- template to process generated titles, we must call it -->
+ <!-- with values for the "offset" and "section" parameters -->
+ <!-- that are different from the default values in the -->
+ <!-- format.refentry.subheading template itself. Because -->
+ <!-- those defaults are the values appropriate for processing -->
+ <!-- "real" title nodes. -->
+ <xsl:call-template name="format.refentry.subheading">
+ <xsl:with-param name="section" select="parent::*"/>
+ <xsl:with-param name="offset" select="1"/>
+ <xsl:with-param name="gentext.key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsynopsisdiv.titlepage"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="refsection">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="refsection.titlepage"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="refsect1">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="refsect1.titlepage"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="refsect2">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="refsect2.titlepage"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="refsect3">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="refsect3.titlepage"/>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv/title
+ |refsection/title
+ |refsect1/title
+ |refsect2/title
+ |refsect3/title">
+ <!-- nop; titlepage.mode instead -->
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv/title
+ |refsection/title
+ |refsect1/title
+ |refsect2/title
+ |refsect3/title
+ |refsynopsisdiv/info/title
+ |refsection/info/title
+ |refsect1/info/title
+ |refsect2/info/title
+ |refsect3/info/title"
+ mode="titlepage.mode"
+ priority="2">
+ <xsl:call-template name="format.refentry.subheading"/>
+</xsl:template>
+
+<xsl:template name="format.refentry.subheading">
+<!-- This template is now called to process generated titles for -->
+<!-- Refnamediv and Refsynopsisdiv, as well as "real" titles for -->
+<!-- Refsynopsisdiv, Refsection, and Refsect[1-3]. -->
+<!-- -->
+<!-- But the contents of this template were formerly intended to be used -->
+<!-- only to process those subsections of Refentry that have "real" title -->
+<!-- children. So as a kludge to get around the fact that the template -->
+<!-- still basically "expects" to be processing that kind of a node, the -->
+<!-- "offset" parameter was added and the "section" variable was changed to -->
+<!-- a parameter so that when called for a generated title on a Refnamediv -->
+<!-- or Refsynopsisdiv, we can call it like this: -->
+<!-- -->
+<!-- <xsl:call-template name="format.refentry.subheading"> -->
+<!-- <xsl:with-param name="section" select="self::*"/> -->
+<!-- <xsl:with-param name="offset" select="1"/> -->
+<!-- <xsl:with-param name="gentext.key" select="'RefName'"/> -->
+<!-- </xsl:call-template> -->
+<!-- -->
+ <xsl:param name="section"
+ select="(ancestor::refsynopsisdiv
+ |ancestor::refsection
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3)[last()]"/>
+ <xsl:param name="offset" select="0"/>
+ <xsl:param name="gentext.key"/>
+
+ <fo:block keep-with-next.within-column="always">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <!-- If we have a non-empty value for the $gentext.key param, then we -->
+ <!-- generate an appropriate title here. Otherwise, we have a real -->
+ <!-- title child, so we copy contents of that to the result tree. -->
+ <xsl:choose>
+ <xsl:when test="$gentext.key != ''">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$gentext.key"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$section" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="{$level + 2 + $offset}"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$title"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:outline-level">
+ <xsl:value-of select="count(ancestor::*)-1 + $offset"/>
+ </xsl:attribute>
+ <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
+ <xsl:attribute name="axf:outline-title">
+ <xsl:value-of select="$title"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="$level + $offset"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="refsectioninfo|refsection/info"></xsl:template>
+<xsl:template match="refsect1info|refsect1/info"></xsl:template>
+<xsl:template match="refsect2info|refsect2/info"></xsl:template>
+<xsl:template match="refsect3info|refsect3/info"></xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl
new file mode 100644
index 0000000..4569f2d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl
@@ -0,0 +1,764 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: sections.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="section">
+ <xsl:choose>
+ <xsl:when test="$rootid = @id or $rootid = @xml:id">
+ <xsl:call-template name="section.page.sequence"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="renderas">
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="$renderas != ''">
+ <xsl:value-of select="$renderas"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="section.level"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- xsl:use-attribute-sets takes only a Qname, not a variable -->
+ <xsl:choose>
+ <xsl:when test="$level = 1">
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level1.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="section.content"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="$level = 2">
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level2.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="section.content"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="$level = 3">
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level3.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="section.content"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="$level = 4">
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level4.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="section.content"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="$level = 5">
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level5.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="section.content"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level6.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="section.content"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="section.content">
+ <xsl:call-template name="section.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and (count(ancestor::section)+1) &lt;=
+ $generate.section.toc.level">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="/section" name="section.page.sequence">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="section.level1.properties">
+ <xsl:call-template name="section.titlepage"/>
+ </fo:block>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and (count(ancestor::section)+1) &lt;=
+ $generate.section.toc.level">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="section/title
+ |simplesect/title
+ |sect1/title
+ |sect2/title
+ |sect3/title
+ |sect4/title
+ |sect5/title
+ |section/info/title
+ |simplesect/info/title
+ |sect1/info/title
+ |sect2/info/title
+ |sect3/info/title
+ |sect4/info/title
+ |sect5/info/title
+ |section/sectioninfo/title
+ |sect1/sect1info/title
+ |sect2/sect2info/title
+ |sect3/sect3info/title
+ |sect4/sect4info/title
+ |sect5/sect5info/title"
+ mode="titlepage.mode"
+ priority="2">
+
+ <xsl:variable name="section"
+ select="(ancestor::section |
+ ancestor::simplesect |
+ ancestor::sect1 |
+ ancestor::sect2 |
+ ancestor::sect3 |
+ ancestor::sect4 |
+ ancestor::sect5)[position() = last()]"/>
+
+ <fo:block keep-with-next.within-column="always">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="renderas">
+ <xsl:choose>
+ <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="$renderas != ''">
+ <xsl:value-of select="$renderas"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="marker">
+ <xsl:choose>
+ <xsl:when test="$level &lt;= $marker.section.level">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$section" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="marker.title">
+ <xsl:apply-templates select="$section" mode="titleabbrev.markup">
+ <xsl:with-param name="allow-anchors" select="0"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="{$level + 2}"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$marker.title"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:attribute name="axf:outline-level">
+ <xsl:value-of select="count(ancestor::*)-1"/>
+ </xsl:attribute>
+ <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
+ <xsl:attribute name="axf:outline-title">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="$level"/>
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="marker" select="$marker"/>
+ <xsl:with-param name="marker.title" select="$marker.title"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="sect1">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level1.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="sect1.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 1">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="/sect1">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+ <xsl:attribute name="format">
+ <xsl:call-template name="page.number.format">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="initial-page-number">
+ <xsl:call-template name="initial.page.number">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="force-page-count">
+ <xsl:call-template name="force.page.count">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:attribute name="hyphenation-character">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-character'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-push-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenation-remain-character-count">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <xsl:call-template name="set.flow.properties">
+ <xsl:with-param name="element" select="local-name(.)"/>
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:call-template>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="section.level1.properties">
+ <xsl:call-template name="sect1.titlepage"/>
+ </fo:block>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 1">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="sect2">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level2.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="sect2.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 2">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="sect3">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level3.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="sect3.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 3">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="sect4">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level4.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="sect4.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 4">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="sect5">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:element name="fo:{$section.container.element}"
+ use-attribute-sets="section.level5.properties">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="sect5.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 5">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="simplesect">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:element name="fo:{$section.container.element}">
+ <xsl:attribute name="id"><xsl:value-of
+ select="$id"/></xsl:attribute>
+ <xsl:call-template name="simplesect.titlepage"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="sectioninfo"></xsl:template>
+<xsl:template match="section/info"></xsl:template>
+<xsl:template match="section/title"></xsl:template>
+<xsl:template match="section/titleabbrev"></xsl:template>
+<xsl:template match="section/subtitle"></xsl:template>
+
+<xsl:template match="sect1info"></xsl:template>
+<xsl:template match="sect1/info"></xsl:template>
+<xsl:template match="sect1/title"></xsl:template>
+<xsl:template match="sect1/titleabbrev"></xsl:template>
+<xsl:template match="sect1/subtitle"></xsl:template>
+
+<xsl:template match="sect2info"></xsl:template>
+<xsl:template match="sect2/info"></xsl:template>
+<xsl:template match="sect2/title"></xsl:template>
+<xsl:template match="sect2/titleabbrev"></xsl:template>
+<xsl:template match="sect2/subtitle"></xsl:template>
+
+<xsl:template match="sect3info"></xsl:template>
+<xsl:template match="sect3/info"></xsl:template>
+<xsl:template match="sect3/title"></xsl:template>
+<xsl:template match="sect3/titleabbrev"></xsl:template>
+<xsl:template match="sect3/subtitle"></xsl:template>
+
+<xsl:template match="sect4info"></xsl:template>
+<xsl:template match="sect4/info"></xsl:template>
+<xsl:template match="sect4/title"></xsl:template>
+<xsl:template match="sect4/titleabbrev"></xsl:template>
+<xsl:template match="sect4/subtitle"></xsl:template>
+
+<xsl:template match="sect5info"></xsl:template>
+<xsl:template match="sect5/info"></xsl:template>
+<xsl:template match="sect5/title"></xsl:template>
+<xsl:template match="sect5/titleabbrev"></xsl:template>
+<xsl:template match="sect5/subtitle"></xsl:template>
+
+<xsl:template match="simplesect/info"></xsl:template>
+<xsl:template match="simplesect/title"></xsl:template>
+<xsl:template match="simplesect/titleabbrev"></xsl:template>
+<xsl:template match="simplesect/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="section.heading">
+ <xsl:param name="level" select="1"/>
+ <xsl:param name="marker" select="1"/>
+ <xsl:param name="title"/>
+ <xsl:param name="marker.title"/>
+
+ <fo:block xsl:use-attribute-sets="section.title.properties">
+ <xsl:if test="$marker != 0">
+ <fo:marker marker-class-name="section.head.marker">
+ <xsl:copy-of select="$marker.title"/>
+ </fo:marker>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$level=1">
+ <fo:block xsl:use-attribute-sets="section.title.level1.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=2">
+ <fo:block xsl:use-attribute-sets="section.title.level2.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=3">
+ <fo:block xsl:use-attribute-sets="section.title.level3.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=4">
+ <fo:block xsl:use-attribute-sets="section.title.level4.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="$level=5">
+ <fo:block xsl:use-attribute-sets="section.title.level5.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block xsl:use-attribute-sets="section.title.level6.properties">
+ <xsl:copy-of select="$title"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bridgehead">
+ <xsl:variable name="container"
+ select="(ancestor::appendix
+ |ancestor::article
+ |ancestor::bibliography
+ |ancestor::chapter
+ |ancestor::glossary
+ |ancestor::glossdiv
+ |ancestor::index
+ |ancestor::partintro
+ |ancestor::preface
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::section
+ |ancestor::setindex
+ |ancestor::simplesect)[last()]"/>
+
+ <xsl:variable name="clevel">
+ <xsl:choose>
+ <xsl:when test="local-name($container) = 'appendix'
+ or local-name($container) = 'chapter'
+ or local-name($container) = 'article'
+ or local-name($container) = 'bibliography'
+ or local-name($container) = 'glossary'
+ or local-name($container) = 'index'
+ or local-name($container) = 'partintro'
+ or local-name($container) = 'preface'
+ or local-name($container) = 'setindex'">2</xsl:when>
+ <xsl:when test="local-name($container) = 'glossdiv'">
+ <xsl:value-of select="count(ancestor::glossdiv)+2"/>
+ </xsl:when>
+ <xsl:when test="local-name($container) = 'sect1'
+ or local-name($container) = 'sect2'
+ or local-name($container) = 'sect3'
+ or local-name($container) = 'sect4'
+ or local-name($container) = 'sect5'
+ or local-name($container) = 'refsect1'
+ or local-name($container) = 'refsect2'
+ or local-name($container) = 'refsect3'
+ or local-name($container) = 'section'
+ or local-name($container) = 'simplesect'">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>2</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$clevel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="marker">
+ <xsl:choose>
+ <xsl:when test="$level &lt;= $marker.section.level">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="marker.title">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="$level"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ <xsl:with-param name="marker" select="$marker"/>
+ <xsl:with-param name="marker.title" select="$marker.title"/>
+ </xsl:call-template>
+ </fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl
new file mode 100644
index 0000000..d34c9cd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl
@@ -0,0 +1,274 @@
+<?xml version='1.0' encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: spaces.xsl 8121 2008-09-13 17:21:11Z mzjn $
+ ********************************************************************
+ XSL-FO specification treats all space characters like ordinary spaces.
+ We need to map them to fo:leader with different widths in order to
+ simulate desired behaviour.
+ ******************************************************************** -->
+
+<xsl:template match="text()[namespace-uri(..) = '' or
+ namespace-uri(..) = 'http://docbook.org/ns/docbook']">
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0">
+ <xsl:call-template name="passivetex.dash.subst">
+ <xsl:with-param name="string">
+ <xsl:call-template name="space.2000.subst">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2000.subst">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:param name="space.enquad.width">0.5em</xsl:param> <!-- U+2000 -->
+<xsl:param name="space.emquad.width">1em</xsl:param> <!-- U+2001 -->
+<xsl:param name="space.enspace.width">0.5em</xsl:param> <!-- U+2002 -->
+<xsl:param name="space.emspace.width">1em</xsl:param> <!-- U+2003 -->
+<xsl:param name="space.3emspace.width">0.33em</xsl:param><!-- U+2004 -->
+<xsl:param name="space.4emspace.width">0.25em</xsl:param><!-- U+2005 -->
+<xsl:param name="space.6emspace.width">0.16em</xsl:param><!-- U+2006 -->
+<xsl:param name="space.figspace.width"></xsl:param> <!-- U+2007 -->
+<xsl:param name="space.punctspace.width"></xsl:param> <!-- U+2008 -->
+<xsl:param name="space.thinspace.width">0.2em</xsl:param><!-- U+2009 -->
+<xsl:param name="space.hairspace.width">0.1em</xsl:param><!-- U+200A -->
+
+<xsl:template name="space.2000.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2000;') and $space.enquad.width != ''">
+ <xsl:call-template name="space.2001.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2000;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.enquad.width}"/>
+ <xsl:call-template name="space.2000.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2000;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2001.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2001.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2001;') and $space.emquad.width != ''">
+ <xsl:call-template name="space.2002.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2001;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.emquad.width}"/>
+ <xsl:call-template name="space.2001.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2001;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2002.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2002.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2002;') and $space.enspace.width != ''">
+ <xsl:call-template name="space.2003.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2002;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.enspace.width}"/>
+ <xsl:call-template name="space.2002.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2002;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2003.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2003.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2003;') and $space.emspace.width != ''">
+ <xsl:call-template name="space.2004.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2003;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.emspace.width}"/>
+ <xsl:call-template name="space.2003.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2003;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2004.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2004.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2004;') and $space.3emspace.width != ''">
+ <xsl:call-template name="space.2005.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2004;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.3emspace.width}"/>
+ <xsl:call-template name="space.2004.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2004;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2005.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2005.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2005;') and $space.4emspace.width != ''">
+ <xsl:call-template name="space.2006.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2005;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.4emspace.width}"/>
+ <xsl:call-template name="space.2005.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2005;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2006.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2006.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2006;') and $space.6emspace.width != ''">
+ <xsl:call-template name="space.2007.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2006;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.6emspace.width}"/>
+ <xsl:call-template name="space.2006.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2006;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2007.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2007.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2007;') and $space.figspace.width != ''">
+ <xsl:call-template name="space.2008.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2007;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.figspace.width}"/>
+ <xsl:call-template name="space.2007.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2007;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2008.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2008.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2008;') and $space.punctspace.width != ''">
+ <xsl:call-template name="space.2009.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2008;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.punctspace.width}"/>
+ <xsl:call-template name="space.2008.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2008;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.2009.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.2009.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x2009;') and $space.thinspace.width != ''">
+ <xsl:call-template name="space.200A.subst">
+ <xsl:with-param name="string" select="substring-before($string, '&#x2009;')"/>
+ </xsl:call-template>
+ <fo:leader leader-length="{$space.thinspace.width}"/>
+ <xsl:call-template name="space.2009.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x2009;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="space.200A.subst">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="space.200A.subst">
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, '&#x200A;') and $space.hairspace.width != ''">
+ <xsl:value-of select="substring-before($string, '&#x200A;')"/>
+ <fo:leader leader-length="{$space.hairspace.width}"/>
+ <xsl:call-template name="space.200A.subst">
+ <xsl:with-param name="string" select="substring-after($string, '&#x200A;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl
new file mode 100644
index 0000000..92afc20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl
@@ -0,0 +1,1007 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY RE "&#10;">
+<!ENTITY nbsp "&#160;">
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: synop.xsl 8334 2009-03-15 14:26:23Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- synopsis is in verbatim -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <fo:block xsl:use-attribute-sets="normal.para.spacing">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$sepchar"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$arg.or.sep"/>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <fo:block/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <fo:inline font-style="italic">
+ <fo:basic-link internal-destination="{@linkend}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </fo:basic-link>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <fo:block id="{$id}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="funcsynopsis">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsisinfo">
+ <fo:block space-after.minimum="0.8em"
+ space-after.optimum="1em"
+ space-after.maximum="1.2em">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="funcprototype">
+
+ <xsl:variable name="style">
+ <xsl:call-template name="funcsynopsis.style"/>
+ </xsl:variable>
+
+ <fo:block font-family="{$monospace.font.family}"
+ space-before.minimum="0.8em"
+ space-before.optimum="1em"
+ space-before.maximum="1.2em">
+ <xsl:apply-templates/>
+
+ <xsl:if test="$style='kr'">
+ <fo:block
+ space-before.minimum="0.8em"
+ space-before.optimum="1em"
+ space-before.maximum="1.2em">
+ <xsl:apply-templates select="./paramdef" mode="kr-funcsynopsis-mode"/>
+ </fo:block>
+ </xsl:if>
+
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="funcdef">
+ <fo:inline font-family="{$monospace.font.family}">
+ <xsl:apply-templates/>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template match="funcdef/function">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <fo:inline font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void">
+
+ <xsl:variable name="style">
+ <xsl:call-template name="funcsynopsis.style"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$style='ansi'">
+ <xsl:text>(void);</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>();</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varargs">
+ <xsl:text>(...);</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef">
+
+ <xsl:variable name="style">
+ <xsl:call-template name="funcsynopsis.style"/>
+ </xsl:variable>
+
+ <xsl:variable name="paramnum">
+ <xsl:number count="paramdef" format="1"/>
+ </xsl:variable>
+ <xsl:if test="$paramnum=1">(</xsl:if>
+ <xsl:choose>
+ <xsl:when test="$style='ansi'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="./parameter"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="following-sibling::paramdef">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>);</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="following-sibling::parameter">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
+ <fo:block>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="funcparams">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<!-- Return value of PI or parameter -->
+<xsl:template name="funcsynopsis.style">
+ <xsl:variable name="pi.style">
+ <xsl:call-template name="pi.dbfo_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$pi.style != ''">
+ <xsl:value-of select="$pi.style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<xsl:template match="classsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |constructorsynopsis
+ |destructorsynopsis">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <!--
+ <xsl:message>process <xsl:value-of select="local-name(.)"/> in <xsl:value-of select="$language"/></xsl:message>
+ -->
+
+ <xsl:choose>
+ <xsl:when test="$language='java' or $language='Java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl' or $language='Perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl' or $language='IDL'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+ </xsl:message>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language"
+ select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="parent::classsynopsis
+ or (following-sibling::fieldsynopsis
+ |following-sibling::methodsynopsis
+ |following-sibling::constructorsynopsis
+ |following-sibling::destructorsynopsis)">
+ <fo:inline>&RE;</fo:inline>
+ </xsl:if>
+</xsl:template>
+
+<!-- ===== Java ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="java">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{&RE;</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="java">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="java">
+ <xsl:apply-templates mode="java"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="classname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="java">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ <xsl:call-template name="synop-break"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="type" mode="java">
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varname" mode="java">
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="initializer" mode="java">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="void" mode="java">
+ <xsl:text>void&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="methodname" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>,&RE;</xsl:text>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">&nbsp;</xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="parameter" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template mode="java"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="decl">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$start-modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{&RE;</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp">
+ <xsl:text>void&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template mode="cpp"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{&RE;</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="void" mode="idl">
+ <xsl:text>void&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template mode="idl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$start-modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>&RE;&nbsp;&nbsp;&nbsp;&nbsp;raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="idl"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;&RE;</xsl:text>
+
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
+ <xsl:text>);&RE;</xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="perl"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl">
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </fo:block>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl">
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="void" mode="perl">
+ <xsl:text>void&nbsp;</xsl:text>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template mode="perl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <fo:block wrap-option='no-wrap'
+ white-space-collapse='false'
+ linefeed-treatment="preserve"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ <xsl:call-template name="synop-break"/>
+ </fo:block>
+</xsl:template>
+
+<!-- Used when not occurring as a child of classsynopsis -->
+<xsl:template match="ooclass|oointerface|ooexception">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
+<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
+<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
+<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
+<!-- * per-mode matches for those linking elements in order for them -->
+<!-- * to be processed as expected. -->
+
+<xsl:template match="link|olink|xref" mode="java">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="cpp">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="idl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="perl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml
new file mode 100644
index 0000000..f29952a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+
+<reference xml:id="table-templates"><?dbhtml dir="fo"?>
+
+ <info>
+ <title>Formatting Object Table Reference</title>
+ <releaseinfo role="meta">
+ $Id: table.xsl 8814 2010-08-09 21:19:53Z bobstayton $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the FO
+ table-processing templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.calc.column.width">
+<refnamediv>
+<refname>calc.column.width</refname>
+<refpurpose>Calculate an XSL FO table column width specification from a
+CALS table column width specification.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="calc.column.width"&gt;
+&lt;xsl:param name="colwidth"&gt;1*&lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>CALS expresses table column widths in the following basic
+forms:</para>
+
+
+
+<itemizedlist>
+<listitem>
+
+<para><emphasis>99.99units</emphasis>, a fixed length specifier.</para>
+
+</listitem>
+<listitem>
+
+<para><emphasis>99.99</emphasis>, a fixed length specifier without any units.</para>
+
+</listitem>
+<listitem>
+
+<para><emphasis>99.99*</emphasis>, a relative length specifier.</para>
+
+</listitem>
+<listitem>
+
+<para><emphasis>99.99*+99.99units</emphasis>, a combination of both.</para>
+
+</listitem>
+</itemizedlist>
+
+
+
+<para>The CALS units are points (pt), picas (pi), centimeters (cm),
+millimeters (mm), and inches (in). These are the same units as XSL,
+except that XSL abbreviates picas "pc" instead of "pi". If a length
+specifier has no units, the CALS default unit (pt) is assumed.</para>
+
+
+
+<para>Relative length specifiers are represented in XSL with the
+proportional-column-width() function.</para>
+
+
+
+<para>Here are some examples:</para>
+
+
+
+<itemizedlist>
+<listitem>
+
+<para>"36pt" becomes "36pt"</para>
+
+</listitem>
+<listitem>
+
+<para>"3pi" becomes "3pc"</para>
+
+</listitem>
+<listitem>
+
+<para>"36" becomes "36pt"</para>
+
+</listitem>
+<listitem>
+
+<para>"3*" becomes "proportional-column-width(3)"</para>
+
+</listitem>
+<listitem>
+
+<para>"3*+2pi" becomes "proportional-column-width(3)+2pc"</para>
+
+</listitem>
+<listitem>
+
+<para>"1*+2" becomes "proportional-column-width(1)+2pt"</para>
+
+</listitem>
+</itemizedlist>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>colwidth</term>
+<listitem>
+
+<para>The CALS column width specification.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The XSL column width specification.</para>
+
+</refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl
new file mode 100644
index 0000000..c9a60c9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl
@@ -0,0 +1,1681 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:rx="http://www.renderx.com/XSL/Extensions"
+ xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table"
+ xmlns:xtbl="com.nwalsh.xalan.Table"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table"
+ exclude-result-prefixes="doc stbl xtbl lxslt ptbl"
+ version='1.0'>
+
+<xsl:include href="../common/table.xsl"/>
+
+<!-- ********************************************************************
+ $Id: table.xsl 8814 2010-08-09 21:19:53Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="" xml:id="table-templates">
+ <?dbhtml dir="fo"?>
+ <info>
+ <title>Formatting Object Table Reference</title>
+ <releaseinfo role="meta">
+ $Id: table.xsl 8814 2010-08-09 21:19:53Z bobstayton $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the FO
+ table-processing templates in the DocBook XSL Stylesheets.</para>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<lxslt:component prefix="xtbl"
+ functions="adjustColumnWidths"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make.table.content">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="calsTable"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="htmlTable"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="calsTable">
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:for-each select="tgroup">
+
+ <fo:table xsl:use-attribute-sets="table.table.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column">
+ <xsl:value-of select="$keep.together"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="table.frame"/>
+ <xsl:if test="following-sibling::tgroup">
+ <xsl:attribute name="border-bottom-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="padding-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0pt</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="preceding-sibling::tgroup">
+ <xsl:attribute name="border-top-width">0pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="padding-top">0pt</xsl:attribute>
+ <xsl:attribute name="margin-top">0pt</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0pt</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </fo:table>
+
+ <xsl:for-each select="mediaobject|graphic">
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Placeholder template enables wrapping a fo:table in
+ another table for purposes of layout or applying
+ extensions such as XEP table-omit-initial-header to
+ create "continued" titles on page breaks. -->
+<xsl:template name="table.layout">
+ <xsl:param name="table.content" select="NOTANODE"/>
+
+ <xsl:copy-of select="$table.content"/>
+</xsl:template>
+
+<xsl:template name="table.block">
+ <xsl:param name="table.layout" select="NOTANODE"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space(
+ $formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="self::table">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="table.properties">
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column">
+ <xsl:value-of select="$keep.together"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:copy-of select="$table.layout"/>
+ <xsl:call-template name="table.footnote.block"/>
+ <xsl:if test="$placement != 'before'">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ </xsl:if>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="informaltable.properties">
+ <xsl:copy-of select="$table.layout"/>
+ <xsl:call-template name="table.footnote.block"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+</xsl:template>
+
+<!-- Output a table's footnotes in a block -->
+<xsl:template name="table.footnote.block">
+ <xsl:if test=".//footnote">
+ <fo:block keep-with-previous.within-column="always">
+ <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="table.container">
+ <xsl:param name="table.block"/>
+ <xsl:choose>
+ <xsl:when test="@orient='land' and
+ $fop.extensions = 0 and
+ $passivetex.extensions = 0" >
+ <fo:block-container reference-orientation="90"
+ padding="6pt"
+ xsl:use-attribute-sets="list.block.spacing">
+ <xsl:attribute name="width">
+ <xsl:call-template name="table.width"/>
+ </xsl:attribute>
+ <fo:block start-indent="0pt" end-indent="0pt">
+ <xsl:copy-of select="$table.block"/>
+ </fo:block>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:when test="@pgwide = 1">
+ <fo:block xsl:use-attribute-sets="pgwide.properties">
+ <xsl:copy-of select="$table.block"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$table.block"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="empty.table.cell">
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies (except when
+ the ancestor tgroup has a following sibling tgroup) -->
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row
+ or ancestor-or-self::thead/following-sibling::tbody
+ or ancestor-or-self::tbody/preceding-sibling::tfoot)
+ and not(ancestor::tgroup/following-sibling::tgroup)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="number($colnum) &gt;= ancestor::tgroup/@cols">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:table-cell text-align="center"
+ display-align="center"
+ xsl:use-attribute-sets="table.cell.padding">
+ <xsl:if test="$xep.extensions != 0">
+ <!-- Suggested by RenderX to workaround a bug in their implementation -->
+ <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colsep &gt; 0 and number($colnum) &lt; ancestor::tgroup/@cols">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'end'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- fo:table-cell should not be empty -->
+ <fo:block/>
+ </fo:table-cell>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="table.frame">
+ <xsl:param name="frame">
+ <xsl:choose>
+ <xsl:when test="../@frame">
+ <xsl:value-of select="../@frame"/>
+ </xsl:when>
+ <xsl:when test="$default.table.frame != ''">
+ <xsl:value-of select="$default.table.frame"/>
+ </xsl:when>
+ <xsl:otherwise>all</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+
+ <xsl:choose>
+ <xsl:when test="$frame='all'">
+ <xsl:attribute name="border-start-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-start-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-start-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='bottom'">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='sides'">
+ <xsl:attribute name="border-start-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-start-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-start-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='lhs'">
+ <xsl:attribute name="border-start-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-start-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-start-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='rhs'">
+ <xsl:attribute name="border-end-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-end-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='top'">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='topbot'">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-style">
+ <xsl:value-of select="$table.frame.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-width">
+ <xsl:value-of select="$table.frame.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-top-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-bottom-color">
+ <xsl:value-of select="$table.frame.border.color"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$frame='none'">
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Impossible frame on table: </xsl:text>
+ <xsl:value-of select="$frame"/>
+ </xsl:message>
+ <xsl:attribute name="border-start-style">none</xsl:attribute>
+ <xsl:attribute name="border-end-style">none</xsl:attribute>
+ <xsl:attribute name="border-top-style">none</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">none</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="border">
+ <xsl:param name="side" select="'start'"/>
+
+ <xsl:attribute name="border-{$side}-width">
+ <xsl:value-of select="$table.cell.border.thickness"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-{$side}-style">
+ <xsl:value-of select="$table.cell.border.style"/>
+ </xsl:attribute>
+ <xsl:attribute name="border-{$side}-color">
+ <xsl:value-of select="$table.cell.border.color"/>
+ </xsl:attribute>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tgroup" name="tgroup">
+ <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'">
+ <xsl:message terminate="yes">
+ <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="table.width">
+ <xsl:call-template name="table.width"/>
+ </xsl:variable>
+
+ <xsl:variable name="colspecs">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:call-template name="generate.colgroup.raw">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="prop-columns"
+ select=".//colspec[contains(@colwidth, '*')]"/>
+ <xsl:if test="count($prop-columns) != 0 or
+ $fop.extensions != 0 or
+ $fop1.extensions != 0 or
+ $passivetex.extensions != 0">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="width">
+ <xsl:value-of select="$table.width"/>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:adjustColumnWidths')">
+ <xsl:copy-of select="stbl:adjustColumnWidths($colspecs)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:adjustColumnWidths')">
+ <xsl:copy-of select="xtbl:adjustColumnWidths($colspecs)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ptbl:adjustColumnWidths')">
+ <xsl:copy-of select="ptbl:adjustColumnWidths($colspecs)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No adjustColumnWidths function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$colspecs"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="thead"/>
+ <xsl:apply-templates select="tfoot"/>
+ <xsl:apply-templates select="tbody"/>
+</xsl:template>
+
+<xsl:template match="colspec"></xsl:template>
+
+<xsl:template name="table.width">
+
+ <xsl:variable name="numcols">
+ <xsl:call-template name="widest-html-row">
+ <xsl:with-param name="rows" select=".//tr"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:choose>
+ <xsl:when test="self::entrytbl">
+ <xsl:call-template name="pi.dbfo_table-width"/>
+ </xsl:when>
+ <xsl:when test="self::table or self::informaltable">
+ <xsl:call-template name="pi.dbfo_table-width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * no dbfo@table-width PI as a child of this table, so check -->
+ <!-- * the parent of this table to see if the table has any -->
+ <!-- * sibling dbfo@table-width PIs (FIXME: 2007-07 MikeSmith: we -->
+ <!-- * should really instead be checking here just to see if the -->
+ <!-- * first preceding sibling of this table is a -->
+ <!-- * dbfo@table-width PI) -->
+ <xsl:call-template name="pi.dbfo_table-width">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column.sum">
+ <xsl:choose>
+ <!-- CALS table -->
+ <xsl:when test="tgroup/@cols">
+ <!-- change context to the first tgroup -->
+ <xsl:for-each select="tgroup[1]">
+ <xsl:if test="count(colspec) = @cols">
+ <xsl:for-each select="colspec">
+ <xsl:if test="position() != 1">
+ <xsl:text> + </xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="not(@colwidth)">NOWIDTH</xsl:when>
+ <xsl:when test="contains(@colwidth, '*')">NOWIDTH</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- HTML table -->
+ <xsl:if test="count(col|colgroup/col) = $numcols">
+ <xsl:for-each select="col|colgroup/col">
+ <xsl:if test="position() != 1">
+ <xsl:text> + </xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="not(@width)">NOWIDTH</xsl:when>
+ <xsl:when test="contains(@width, '%')">NOWIDTH</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column.sum.width">
+ <xsl:if test="not(contains($column.sum, 'NOWIDTH'))">
+ <xsl:value-of select="$column.sum"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="prop-columns"
+ select=".//colspec[contains(@colwidth, '*')]"/>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$column.sum.width != ''">
+ <xsl:value-of select="$column.sum.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:choose>
+ <!-- These processors don't support table-layout="auto" -->
+ <xsl:when test="$fop.extensions != 0 or
+ $fop1.extensions != 0 or
+ $passivetex.extensions != 0">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <!-- Proportional columns imply 100% width -->
+ <xsl:when test="count($prop-columns) != 0">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>auto</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$table.width"/>
+
+</xsl:template>
+
+<xsl:template match="spanspec"></xsl:template>
+
+<xsl:template match="thead">
+ <xsl:variable name="tgroup" select="parent::*"/>
+
+ <fo:table-header start-indent="0pt" end-indent="0pt">
+ <xsl:choose>
+ <!-- Use recursion if @morerows is used -->
+ <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'" />
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-header>
+</xsl:template>
+
+<xsl:template match="tfoot">
+ <xsl:variable name="tgroup" select="parent::*"/>
+
+ <fo:table-footer start-indent="0pt" end-indent="0pt">
+ <xsl:choose>
+ <!-- Use recursion if @morerows is used -->
+ <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'" />
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-footer>
+</xsl:template>
+
+<xsl:template match="tbody">
+ <xsl:variable name="tgroup" select="parent::*"/>
+
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <xsl:choose>
+ <!-- Use recursion if @morerows is used -->
+ <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'" />
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-body>
+</xsl:template>
+
+<xsl:template match="row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($spans, '0')">
+ <xsl:call-template name="normal-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!--
+ <xsl:message>
+ <xsl:text>Ignoring row: </xsl:text>
+ <xsl:value-of select="$spans"/>
+ <xsl:text> = </xsl:text>
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:message>
+ -->
+
+ <xsl:if test="normalize-space(.//text()) != ''">
+ <xsl:message>Warning: overlapped row contains content!</xsl:message>
+ </xsl:if>
+
+ <fo:table-row>
+ <xsl:comment> This row intentionally left blank </xsl:comment>
+ <fo:table-cell><fo:block/></fo:table-cell>
+ </fo:table-row>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="normal-row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <fo:table-row>
+ <xsl:call-template name="table.row.properties"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:apply-templates select="(entry|entrytbl)[1]">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </fo:table-row>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:if test="following-sibling::row">
+ <xsl:variable name="nextspans">
+ <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans" select="$nextspans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- customize this template to add row properties -->
+<xsl:template name="table.row.properties">
+
+ <xsl:variable name="row-height">
+ <xsl:if test="processing-instruction('dbfo')">
+ <xsl:call-template name="pi.dbfo_row-height"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$row-height != ''">
+ <xsl:attribute name="block-progression-dimension">
+ <xsl:value-of select="$row-height"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:variable name="bgcolor">
+ <xsl:call-template name="pi.dbfo_bgcolor"/>
+ </xsl:variable>
+
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="background-color">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- Keep header row with next row -->
+ <xsl:if test="ancestor::thead">
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="entry">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="row" select="parent::row"/>
+ <xsl:variable name="group" select="$row/parent::*[1]"/>
+ <xsl:variable name="frame" select="ancestor::tgroup/parent::*/@frame"/>
+
+ <xsl:variable name="empty.cell" select="count(node()) = 0"/>
+
+ <xsl:variable name="named.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:choose>
+ <xsl:when test="$named.colnum &gt; 0">
+ <xsl:value-of select="$named.colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$col"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies (except when
+ the ancestor tgroup has a following sibling tgroup) -->
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row
+ or ancestor-or-self::thead/following-sibling::tbody
+ or ancestor-or-self::tbody/preceding-sibling::tfoot)
+ and not(ancestor::tgroup/following-sibling::tgroup)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <!-- Check for morerows too -->
+ <xsl:when test="(@morerows and count(ancestor-or-self::row[1]/
+ following-sibling::row) = @morerows )
+ and not (ancestor-or-self::thead/following-sibling::tbody
+ or ancestor-or-self::tbody/preceding-sibling::tfoot)
+ and not(ancestor::tgroup/following-sibling::tgroup)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message><xsl:value-of select="."/>: <xsl:value-of select="$rowsep"/></xsl:message>
+-->
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="$following.spans = ''">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="valign">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'valign'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="align">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'align'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="char">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'char'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="charoff">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'charoff'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:call-template name="empty.table.cell">
+ <xsl:with-param name="colnum" select="$col"/>
+ </xsl:call-template>
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="cell.content">
+ <fo:block>
+ <xsl:call-template name="table.cell.block.properties"/>
+
+ <!-- are we missing any indexterms? -->
+ <xsl:if test="not(preceding-sibling::entry)
+ and not(parent::row/preceding-sibling::row)">
+ <!-- this is the first entry of the first row -->
+ <xsl:if test="ancestor::thead or
+ (ancestor::tbody
+ and not(ancestor::tbody/preceding-sibling::thead
+ or ancestor::tbody/preceding-sibling::tbody))">
+ <!-- of the thead or the first tbody -->
+ <xsl:apply-templates select="ancestor::tgroup/preceding-sibling::indexterm"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!--
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$rowsep"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="$colsep"/>
+ <xsl:text>)</xsl:text>
+ -->
+ <xsl:choose>
+ <xsl:when test="$empty.cell">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:when test="self::entrytbl">
+ <xsl:variable name="prop-columns"
+ select=".//colspec[contains(@colwidth, '*')]"/>
+ <fo:table xsl:use-attribute-sets="table.table.properties">
+ <xsl:if test="count($prop-columns) != 0">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="tgroup"/>
+ </fo:table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:variable>
+
+ <xsl:variable name="cell-orientation">
+ <xsl:call-template name="pi.dbfo_orientation">
+ <xsl:with-param name="node" select="ancestor-or-self::entry"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="row-orientation">
+ <xsl:call-template name="pi.dbfo_orientation">
+ <xsl:with-param name="node" select="ancestor-or-self::row"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="cell-width">
+ <xsl:call-template name="pi.dbfo_rotated-width">
+ <xsl:with-param name="node" select="ancestor-or-self::entry"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="row-width">
+ <xsl:call-template name="pi.dbfo_rotated-width">
+ <xsl:with-param name="node" select="ancestor-or-self::row"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="orientation">
+ <xsl:choose>
+ <xsl:when test="$cell-orientation != ''">
+ <xsl:value-of select="$cell-orientation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$row-orientation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="rotated-width">
+ <xsl:choose>
+ <xsl:when test="$cell-width != ''">
+ <xsl:value-of select="$cell-width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$row-width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:call-template name="pi.dbfo_bgcolor">
+ <xsl:with-param name="node" select="ancestor-or-self::entry"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:table-cell xsl:use-attribute-sets="table.cell.padding">
+ <xsl:call-template name="table.cell.properties">
+ <xsl:with-param name="bgcolor.pi" select="$bgcolor"/>
+ <xsl:with-param name="rowsep.inherit" select="$rowsep"/>
+ <xsl:with-param name="colsep.inherit" select="$colsep"/>
+ <xsl:with-param name="col" select="$col"/>
+ <xsl:with-param name="valign.inherit" select="$valign"/>
+ <xsl:with-param name="align.inherit" select="$align"/>
+ <xsl:with-param name="char.inherit" select="$char"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="@morerows">
+ <xsl:attribute name="number-rows-spanned">
+ <xsl:value-of select="@morerows+1"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$entry.colspan &gt; 1">
+ <xsl:attribute name="number-columns-spanned">
+ <xsl:value-of select="$entry.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+<!--
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$fop.extensions = 0 and $passivetex.extensions = 0
+ and $orientation != ''">
+ <fo:block-container reference-orientation="{$orientation}">
+ <xsl:if test="$rotated-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$rotated-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$cell.content"/>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$cell.content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Expand this template to add properties to any fo:table-cell -->
+<xsl:template name="table.cell.properties">
+ <xsl:param name="bgcolor.pi" select="''"/>
+ <xsl:param name="rowsep.inherit" select="1"/>
+ <xsl:param name="colsep.inherit" select="1"/>
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="valign.inherit" select="''"/>
+ <xsl:param name="align.inherit" select="''"/>
+ <xsl:param name="char.inherit" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::tgroup">
+ <xsl:if test="$bgcolor.pi != ''">
+ <xsl:attribute name="background-color">
+ <xsl:value-of select="$bgcolor.pi"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$rowsep.inherit &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colsep.inherit &gt; 0 and
+ $col &lt; (ancestor::tgroup/@cols|ancestor::entrytbl/@cols)[last()]">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'end'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$valign.inherit != ''">
+ <xsl:attribute name="display-align">
+ <xsl:choose>
+ <xsl:when test="$valign.inherit='top'">before</xsl:when>
+ <xsl:when test="$valign.inherit='middle'">center</xsl:when>
+ <xsl:when test="$valign.inherit='bottom'">after</xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected valign value: </xsl:text>
+ <xsl:value-of select="$valign.inherit"/>
+ <xsl:text>, center used.</xsl:text>
+ </xsl:message>
+ <xsl:text>center</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$align.inherit = 'char' and $char.inherit != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$char.inherit"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$align.inherit != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align.inherit"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- HTML table -->
+ <xsl:if test="$bgcolor.pi != ''">
+ <xsl:attribute name="background-color">
+ <xsl:value-of select="$bgcolor.pi"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$align.inherit != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align.inherit"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$valign.inherit != ''">
+ <xsl:attribute name="display-align">
+ <xsl:choose>
+ <xsl:when test="$valign.inherit='top'">before</xsl:when>
+ <xsl:when test="$valign.inherit='middle'">center</xsl:when>
+ <xsl:when test="$valign.inherit='bottom'">after</xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected valign value: </xsl:text>
+ <xsl:value-of select="$valign.inherit"/>
+ <xsl:text>, center used.</xsl:text>
+ </xsl:message>
+ <xsl:text>center</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="html.table.cell.rules"/>
+
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- Expand this template to add properties to any cell's block -->
+<xsl:template name="table.cell.block.properties">
+ <!-- highlight this entry? -->
+ <xsl:choose>
+ <xsl:when test="ancestor::thead or ancestor::tfoot">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:when>
+ <!-- Make row headers bold too -->
+ <xsl:when test="ancestor::tbody and
+ (ancestor::table[@rowheader = 'firstcol'] or
+ ancestor::informaltable[@rowheader = 'firstcol']) and
+ ancestor-or-self::entry[1][count(preceding-sibling::entry) = 0]">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="sentry" mode="span">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col + 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="count" select="$entry.colspan"/>
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="@morerows">
+ <xsl:value-of select="@morerows"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>:</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]"
+ mode="span">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.colgroup.raw">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>$cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col.raw">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup.raw">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>$cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.col.raw">
+ <!-- generate the table-column for column countcol -->
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <fo:table-column column-number="{$countcol}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colspec.colwidth">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>1*</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colspec.colwidth"/>
+ </xsl:attribute>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col.raw">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.col">
+ <!-- generate the table-column for column countcol -->
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:variable name="colwidth">
+ <xsl:call-template name="calc.column.width"/>
+ </xsl:variable>
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colwidth"/>
+ </xsl:attribute>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colspec.colwidth">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>1*</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <fo:table-column column-number="{$countcol}">
+ <xsl:variable name="colwidth">
+ <xsl:call-template name="calc.column.width">
+ <xsl:with-param name="colwidth">
+ <xsl:value-of select="$colspec.colwidth"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:attribute name="column-width">
+ <xsl:value-of select="$colwidth"/>
+ </xsl:attribute>
+ </fo:table-column>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="calc.column.width" xmlns="">
+<refpurpose>Calculate an XSL FO table column width specification from a
+CALS table column width specification.</refpurpose>
+
+<refdescription>
+<para>CALS expresses table column widths in the following basic
+forms:</para>
+
+<itemizedlist>
+<listitem>
+<para><emphasis>99.99units</emphasis>, a fixed length specifier.</para>
+</listitem>
+<listitem>
+<para><emphasis>99.99</emphasis>, a fixed length specifier without any units.</para>
+</listitem>
+<listitem>
+<para><emphasis>99.99*</emphasis>, a relative length specifier.</para>
+</listitem>
+<listitem>
+<para><emphasis>99.99*+99.99units</emphasis>, a combination of both.</para>
+</listitem>
+</itemizedlist>
+
+<para>The CALS units are points (pt), picas (pi), centimeters (cm),
+millimeters (mm), and inches (in). These are the same units as XSL,
+except that XSL abbreviates picas "pc" instead of "pi". If a length
+specifier has no units, the CALS default unit (pt) is assumed.</para>
+
+<para>Relative length specifiers are represented in XSL with the
+proportional-column-width() function.</para>
+
+<para>Here are some examples:</para>
+
+<itemizedlist>
+<listitem>
+<para>"36pt" becomes "36pt"</para>
+</listitem>
+<listitem>
+<para>"3pi" becomes "3pc"</para>
+</listitem>
+<listitem>
+<para>"36" becomes "36pt"</para>
+</listitem>
+<listitem>
+<para>"3*" becomes "proportional-column-width(3)"</para>
+</listitem>
+<listitem>
+<para>"3*+2pi" becomes "proportional-column-width(3)+2pc"</para>
+</listitem>
+<listitem>
+<para>"1*+2" becomes "proportional-column-width(1)+2pt"</para>
+</listitem>
+</itemizedlist>
+</refdescription>
+
+<refparameter>
+<variablelist>
+<varlistentry><term>colwidth</term>
+<listitem>
+<para>The CALS column width specification.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn>
+<para>The XSL column width specification.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="calc.column.width">
+ <xsl:param name="colwidth">1*</xsl:param>
+
+ <!-- Ok, the colwidth could have any one of the following forms: -->
+ <!-- 1* = proportional width -->
+ <!-- * = same as 1* -->
+ <!-- 1unit = 1.0 units wide -->
+ <!-- 1 = 1pt wide -->
+ <!-- 1*+1unit = proportional width + some fixed width -->
+ <!-- 1*+1 = proportional width + some fixed width -->
+
+ <!-- If it has a proportional width, translate it to XSL -->
+ <xsl:if test="contains($colwidth, '*')">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:choose>
+ <xsl:when test="substring-before($colwidth, '*') != ''">
+ <xsl:value-of select="substring-before($colwidth, '*')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1.00</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+
+ <!-- Now grab the non-proportional part of the specification -->
+ <xsl:variable name="width-units">
+ <xsl:choose>
+ <xsl:when test="contains($colwidth, '*')">
+ <xsl:value-of
+ select="normalize-space(substring-after($colwidth, '*'))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($colwidth)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Ok, now the width-units could have any one of the following forms: -->
+ <!-- = <empty string> -->
+ <!-- 1unit = 1.0 units wide -->
+ <!-- 1 = 1pt wide -->
+ <!-- with an optional leading sign -->
+
+ <!-- Grab the width part by blanking out the units part and discarding -->
+ <!-- whitespace. It's not pretty, but it works. -->
+ <xsl:variable name="width"
+ select="normalize-space(translate($width-units,
+ '+-0123456789.abcdefghijklmnopqrstuvwxyz',
+ '+-0123456789.'))"/>
+
+ <!-- Grab the units part by blanking out the width part and discarding -->
+ <!-- whitespace. It's not pretty, but it works. -->
+ <xsl:variable name="units"
+ select="normalize-space(translate($width-units,
+ 'abcdefghijklmnopqrstuvwxyz+-0123456789.',
+ 'abcdefghijklmnopqrstuvwxyz'))"/>
+
+ <!-- Output the width -->
+ <xsl:value-of select="$width"/>
+
+ <!-- Output the units, translated appropriately -->
+ <xsl:choose>
+ <xsl:when test="$units = 'pi'">pc</xsl:when>
+ <xsl:when test="$units = '' and $width != ''">pt</xsl:when>
+ <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl
new file mode 100644
index 0000000..c864bc6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: task.xsl 8011 2008-05-23 15:14:57Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="task">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::title
+ or self::titleabbrev)]"/>
+
+ <xsl:variable name="keep.together">
+ <xsl:call-template name="pi.dbfo_keep-together"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="formal.object.properties">
+
+ <xsl:if test="$keep.together != ''">
+ <xsl:attribute name="keep-together.within-column"><xsl:value-of
+ select="$keep.together"/></xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="task/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="tasksummary">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="tasksummary/title"/>
+
+<xsl:template match="taskprerequisites">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskprerequisites/title"/>
+
+<xsl:template match="taskrelated">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskrelated/title"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml
new file mode 100644
index 0000000..e3434bc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml
@@ -0,0 +1,1354 @@
+<!DOCTYPE t:templates [
+<!ENTITY hsize0 "10pt">
+<!ENTITY hsize1 "12pt">
+<!ENTITY hsize2 "14.4pt">
+<!ENTITY hsize3 "17.28pt">
+<!ENTITY hsize4 "20.736pt">
+<!ENTITY hsize5 "24.8832pt">
+<!ENTITY hsize0space "7.5pt"> <!-- 0.75 * hsize0 -->
+<!ENTITY hsize1space "9pt"> <!-- 0.75 * hsize1 -->
+<!ENTITY hsize2space "10.8pt"> <!-- 0.75 * hsize2 -->
+<!ENTITY hsize3space "12.96pt"> <!-- 0.75 * hsize3 -->
+<!ENTITY hsize4space "15.552pt"> <!-- 0.75 * hsize4 -->
+<!ENTITY hsize5space "18.6624pt"> <!-- 0.75 * hsize5 -->
+]>
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- ********************************************************************
+ $Id: titlepage.templates.xml 8341 2009-03-16 03:00:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="article" t:wrapper="fo:block"
+ font-family="{$title.fontset}">
+
+ <t:titlepage-content t:side="recto"
+ start-indent="0pt"
+ text-align="center">
+
+ <title t:named-template="component.title"
+ param:node="ancestor-or-self::article[1]"
+ keep-with-next.within-column="always"
+ font-size="&hsize5;"
+ font-weight="bold"/>
+
+ <subtitle/>
+
+ <corpauthor space-before="0.5em"
+ font-size="&hsize2;"/>
+ <authorgroup space-before="0.5em"
+ font-size="&hsize2;"/>
+ <author space-before="0.5em"
+ font-size="&hsize2;"/>
+
+ <!-- If you add editor, include this t:predicate attribute
+ because only the first editor generates the list of editors.
+ <editor t:predicate="[position() = 1]"/>
+ -->
+ <othercredit space-before="0.5em"/>
+ <releaseinfo space-before="0.5em"/>
+ <copyright space-before="0.5em"/>
+ <legalnotice text-align="start"
+ margin-left="0.5in"
+ margin-right="0.5in"
+ font-family="{$body.fontset}"/>
+ <pubdate space-before="0.5em"/>
+ <revision space-before="0.5em"/>
+ <revhistory space-before="0.5em"/>
+ <abstract space-before="0.5em"
+ text-align="start"
+ margin-left="0.5in"
+ margin-right="0.5in"
+ font-family="{$body.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="set" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-template="division.title"
+ param:node="ancestor-or-self::set[1]"
+ text-align="center"
+ font-size="&hsize5;"
+ space-before="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"
+ text-align="center"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="book" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-template="division.title"
+ param:node="ancestor-or-self::book[1]"
+ text-align="center"
+ font-size="&hsize5;"
+ space-before="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ text-align="center"
+ font-size="&hsize4;"
+ space-before="&hsize4space;"
+ font-family="{$title.fontset}"/>
+ <corpauthor font-size="&hsize3;"
+ keep-with-next.within-column="always"
+ space-before="2in"/>
+ <authorgroup space-before="2in"/>
+ <author font-size="&hsize3;"
+ space-before="&hsize2space;"
+ keep-with-next.within-column="always"/>
+ <!-- If you add editor, include this t:predicate attribute
+ because only the first editor generates the list of editors.
+ <editor t:predicate="[position() = 1]"/>
+ -->
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ <title
+ t:named-template="book.verso.title"
+ font-size="&hsize2;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup t:named-template="verso.authorgroup"/>
+ <author/>
+ <!-- If you add editor, include this t:predicate attribute
+ because only the first editor generates the list of editors.
+ <editor t:predicate="[position() = 1]"/>
+ -->
+ <othercredit/>
+ <releaseinfo space-before="0.5em"/>
+ <pubdate space-before="1em"/>
+ <copyright/>
+ <abstract/>
+ <legalnotice font-size="8pt"/>
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <fo:block break-after="page"/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ <fo:block break-after="page"/>
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="part" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-template="division.title"
+ param:node="ancestor-or-self::part[1]"
+ text-align="center"
+ font-size="&hsize5;"
+ space-before="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ text-align="center"
+ font-size="&hsize4;"
+ space-before="&hsize4space;"
+ font-weight='bold'
+ font-style='italic'
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="partintro" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ text-align="center"
+ font-size="&hsize5;"
+ font-weight="bold"
+ space-before="1em"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ text-align="center"
+ font-size="&hsize2;"
+ font-weight="bold"
+ font-style="italic"
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="reference" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-template="division.title"
+ param:node="ancestor-or-self::reference[1]"
+ text-align="center"
+ font-size="&hsize5;"
+ space-before="&hsize5space;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"
+ text-align="center"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refsynopsisdiv" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refsection" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refsect1" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refsect2" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refsect3" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="dedication" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::dedication[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<!-- Same formatting as dedication -->
+ <t:titlepage t:element="acknowledgements" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::acknowledgements[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="preface" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::preface[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="chapter" t:wrapper="fo:block"
+ font-family="{$title.fontset}">
+ <t:titlepage-content t:side="recto" margin-left="{$title.margin.left}">
+ <title t:named-template="component.title"
+ param:node="ancestor-or-self::chapter[1]"
+ font-size="&hsize5;"
+ font-weight="bold"/>
+
+ <subtitle space-before="0.5em"
+ font-style="italic"
+ font-size="&hsize2;"
+ font-weight="bold"/>
+
+ <corpauthor space-before="0.5em"
+ space-after="0.5em"
+ font-size="&hsize2;"/>
+
+ <authorgroup space-before="0.5em"
+ space-after="0.5em"
+ font-size="&hsize2;"/>
+
+ <author space-before="0.5em"
+ space-after="0.5em"
+ font-size="&hsize2;"/>
+
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="appendix" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-template="component.title"
+ param:node="ancestor-or-self::appendix[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="section" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ margin-left="{$title.margin.left}"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect1" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ margin-left="{$title.margin.left}"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect2" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ margin-left="{$title.margin.left}"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect3" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ margin-left="{$title.margin.left}"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect4" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ margin-left="{$title.margin.left}"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect5" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ margin-left="{$title.margin.left}"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="simplesect" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ margin-left="{$title.margin.left}"
+ font-family="{$title.fontset}"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="bibliography" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::bibliography[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="bibliodiv" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title t:named-template="component.title"
+ param:node="ancestor-or-self::bibliodiv[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize4;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="glossary" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::glossary[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="glossdiv" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title t:named-template="component.title"
+ param:node="ancestor-or-self::glossdiv[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize4;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="index" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::index[1]"
+ param:pagewide="1"
+ margin-left="0pt"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <!-- The indexdiv.title template is used so that manual and -->
+ <!-- automatically generated indexdiv titles get the same -->
+ <!-- formatting. -->
+
+ <t:titlepage t:element="indexdiv" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title t:force="1"
+ t:named-template="indexdiv.title"
+ param:title="title"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="setindex" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::setindex[1]"
+ param:pagewide="1"
+ margin-left="0pt"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="colophon" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::colophon[1]"
+ margin-left="{$title.margin.left}"
+ font-size="&hsize5;"
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="sidebar" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ font-family="{$title.fontset}"
+ font-weight="bold"/>
+ <subtitle
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+<t:titlepage t:element="qandaset" t:wrapper="fo:block"
+ font-family="{$title.fontset}">
+
+ <t:titlepage-content t:side="recto"
+ start-indent="0pt"
+ text-align="center">
+
+ <title t:named-template="component.title"
+ param:node="ancestor-or-self::qandaset[1]"
+ keep-with-next.within-column="always"
+ font-size="&hsize5;"
+ font-weight="bold"/>
+
+ <subtitle/>
+
+ <corpauthor space-before="0.5em"
+ font-size="&hsize2;"/>
+ <authorgroup space-before="0.5em"
+ font-size="&hsize2;"/>
+ <author space-before="0.5em"
+ font-size="&hsize2;"/>
+
+ <othercredit space-before="0.5em"/>
+ <releaseinfo space-before="0.5em"/>
+ <copyright space-before="0.5em"/>
+ <legalnotice text-align="start"
+ margin-left="0.5in"
+ margin-right="0.5in"
+ font-family="{$body.fontset}"/>
+ <pubdate space-before="0.5em"/>
+ <revision space-before="0.5em"/>
+ <revhistory space-before="0.5em"/>
+ <abstract space-before="0.5em"
+ text-align="start"
+ margin-left="0.5in"
+ margin-right="0.5in"
+ font-family="{$body.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="table.of.contents" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="gentext"
+ param:key="'TableofContents'"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em"
+ space-after="0.5em"
+ margin-left="{$title.margin.left}"
+ start-indent="0pt"
+ font-size="&hsize3;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+ <t:titlepage t:element="list.of.tables" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="gentext"
+ param:key="'ListofTables'"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em"
+ space-after="0.5em"
+ margin-left="{$title.margin.left}"
+ start-indent="0pt"
+ font-size="&hsize3;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+ <t:titlepage t:element="list.of.figures" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="gentext"
+ param:key="'ListofFigures'"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em"
+ space-after="0.5em"
+ margin-left="{$title.margin.left}"
+ start-indent="0pt"
+ font-size="&hsize3;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+ <t:titlepage t:element="list.of.examples" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="gentext"
+ param:key="'ListofExamples'"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em"
+ space-after="0.5em"
+ margin-left="{$title.margin.left}"
+ start-indent="0pt"
+ font-size="&hsize3;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+ <t:titlepage t:element="list.of.equations" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="gentext"
+ param:key="'ListofEquations'"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em"
+ space-after="0.5em"
+ margin-left="{$title.margin.left}"
+ start-indent="0pt"
+ font-size="&hsize3;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+ <t:titlepage t:element="list.of.procedures" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="gentext"
+ param:key="'ListofProcedures'"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em"
+ space-after="0.5em"
+ margin-left="{$title.margin.left}"
+ start-indent="0pt"
+ font-size="&hsize3;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+ <t:titlepage t:element="list.of.unknowns" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="gentext"
+ param:key="'ListofUnknown'"
+ space-before.minimum="1em"
+ space-before.optimum="1.5em"
+ space-before.maximum="2em"
+ space-after="0.5em"
+ margin-left="{$title.margin.left}"
+ start-indent="0pt"
+ font-size="&hsize3;"
+ font-weight="bold"
+ font-family="{$title.fontset}"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+ </t:titlepage>
+
+<!-- ==================================================================== -->
+
+</t:templates>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl
new file mode 100644
index 0000000..0b9cafa
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl
@@ -0,0 +1,5182 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl-->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::article[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::set[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="book.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/abstract"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/legalnotice"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" keep-with-next.within-column="always" space-before="2in">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="2in">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" space-before="10.8pt" keep-with-next.within-column="always">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="title" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="14.4pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="book.verso.title">
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:call-template name="verso.authorgroup">
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="1em">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="8pt">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsynopsisdivinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsynopsisdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsectioninfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsection.titlepage.before.recto"/>
+ <xsl:call-template name="refsection.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsection.titlepage.before.verso"/>
+ <xsl:call-template name="refsection.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsection.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect1info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect1.titlepage.before.recto"/>
+ <xsl:call-template name="refsect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect1.titlepage.before.verso"/>
+ <xsl:call-template name="refsect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect2info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect2.titlepage.before.recto"/>
+ <xsl:call-template name="refsect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect2.titlepage.before.verso"/>
+ <xsl:call-template name="refsect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect3info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect3.titlepage.before.recto"/>
+ <xsl:call-template name="refsect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect3.titlepage.before.verso"/>
+ <xsl:call-template name="refsect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="acknowledgements.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::acknowledgements[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="acknowledgementsinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="acknowledgementsinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.recto"/>
+ <xsl:call-template name="acknowledgements.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.verso"/>
+ <xsl:call-template name="acknowledgements.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="acknowledgements.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="acknowledgements.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="acknowledgements.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.recto"/>
+ <xsl:call-template name="bibliodiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.verso"/>
+ <xsl:call-template name="bibliodiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliodiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossdiv.titlepage.before.recto"/>
+ <xsl:call-template name="glossdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossdiv.titlepage.before.verso"/>
+ <xsl:call-template name="glossdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style">
+<xsl:call-template name="indexdiv.title">
+<xsl:with-param name="title" select="title"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexdivinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="indexdiv.titlepage.before.recto"/>
+ <xsl:call-template name="indexdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="indexdiv.titlepage.before.verso"/>
+ <xsl:call-template name="indexdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="indexdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="colophoninfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="colophon.titlepage.before.recto"/>
+ <xsl:call-template name="colophon.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="colophon.titlepage.before.verso"/>
+ <xsl:call-template name="colophon.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="colophon.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="qandaset.titlepage.before.recto"/>
+ <xsl:call-template name="qandaset.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="qandaset.titlepage.before.verso"/>
+ <xsl:call-template name="qandaset.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="qandaset.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'TableofContents'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.recto"/>
+ <xsl:call-template name="table.of.contents.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.verso"/>
+ <xsl:call-template name="table.of.contents.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="table.of.contents.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofTables'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.tables.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.tables.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.tables.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofFigures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.figures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.figures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.figures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofExamples'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.examples.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.examples.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.examples.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofEquations'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.equations.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.equations.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.equations.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofProcedures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.procedures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.procedures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.procedures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofUnknown'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.unknowns.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl
new file mode 100644
index 0000000..2e2ec75
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl
@@ -0,0 +1,767 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: titlepage.xsl 8804 2010-08-09 16:41:43Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:attribute-set name="book.titlepage.recto.style">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-size">12pt</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="book.titlepage.verso.style">
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="article.titlepage.recto.style"/>
+<xsl:attribute-set name="article.titlepage.verso.style"/>
+
+<xsl:attribute-set name="set.titlepage.recto.style"/>
+<xsl:attribute-set name="set.titlepage.verso.style"/>
+
+<xsl:attribute-set name="part.titlepage.recto.style">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="part.titlepage.verso.style"/>
+
+<xsl:attribute-set name="partintro.titlepage.recto.style"/>
+<xsl:attribute-set name="partintro.titlepage.verso.style"/>
+
+<xsl:attribute-set name="reference.titlepage.recto.style"/>
+<xsl:attribute-set name="reference.titlepage.verso.style"/>
+
+<xsl:attribute-set name="dedication.titlepage.recto.style"/>
+<xsl:attribute-set name="dedication.titlepage.verso.style"/>
+
+<xsl:attribute-set name="acknowledgements.titlepage.recto.style"/>
+<xsl:attribute-set name="acknowledgements.titlepage.verso.style"/>
+
+<xsl:attribute-set name="preface.titlepage.recto.style"/>
+<xsl:attribute-set name="preface.titlepage.verso.style"/>
+
+<xsl:attribute-set name="chapter.titlepage.recto.style"/>
+<xsl:attribute-set name="chapter.titlepage.verso.style"/>
+
+<xsl:attribute-set name="appendix.titlepage.recto.style"/>
+<xsl:attribute-set name="appendix.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliography.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliography.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliodiv.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliodiv.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossary.titlepage.recto.style"/>
+<xsl:attribute-set name="glossary.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossdiv.titlepage.recto.style"/>
+<xsl:attribute-set name="glossdiv.titlepage.verso.style"/>
+
+<xsl:attribute-set name="index.titlepage.recto.style"/>
+<xsl:attribute-set name="index.titlepage.verso.style"/>
+
+<xsl:attribute-set name="setindex.titlepage.recto.style"/>
+<xsl:attribute-set name="setindex.titlepage.verso.style"/>
+
+<xsl:attribute-set name="indexdiv.titlepage.recto.style"/>
+<xsl:attribute-set name="indexdiv.titlepage.verso.style"/>
+
+<xsl:attribute-set name="colophon.titlepage.recto.style"/>
+<xsl:attribute-set name="colophon.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sidebar.titlepage.recto.style"/>
+<xsl:attribute-set name="sidebar.titlepage.verso.style"/>
+
+<xsl:attribute-set name="qandaset.titlepage.recto.style"/>
+<xsl:attribute-set name="qandaset.titlepage.verso.style"/>
+
+<xsl:attribute-set name="section.titlepage.recto.style">
+ <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="section.titlepage.verso.style">
+ <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="sect1.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect1.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect2.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect2.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect3.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect3.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect4.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect4.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect5.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect5.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="simplesect.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="simplesect.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refnamediv.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refnamediv.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsynopsisdiv.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsynopsisdiv.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsection.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsection.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsect1.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsect1.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsect2.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsect2.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refsect3.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="refsect3.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
+<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.procedures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.procedures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="titlepage.mode">
+ <!-- if an element isn't found in this mode, try the default mode -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="abbrev" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="abstract" mode="titlepage.mode">
+ <fo:block xsl:use-attribute-sets="abstract.properties">
+ <fo:block xsl:use-attribute-sets="abstract.title.properties">
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="title|info/title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Abstract'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ <xsl:apply-templates select="*[not(self::title)]" mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="abstract/title" mode="titlepage.mode"/>
+
+<xsl:template match="abstract/title" mode="titlepage.abstract.title.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="address" mode="titlepage.mode">
+ <!-- use the normal address handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="titlepage.mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="author" mode="titlepage.mode">
+ <fo:block>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="orgname">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name"/>
+ <xsl:if test="affiliation/orgname">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/>
+ </xsl:if>
+ <xsl:if test="email|affiliation/address/email">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="(email|affiliation/address/email)[1]"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="authorblurb" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="titlepage.mode">
+ <fo:wrapper>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:wrapper>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="collab" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="titlepage.mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="confdates" mode="titlepage.mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="titlepage.mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="confnum" mode="titlepage.mode">
+ <!-- suppress -->
+</xsl:template>
+
+<xsl:template match="contractnum" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="contrib" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="copyright" mode="titlepage.mode">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="year" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="titlepage.mode">
+ <xsl:apply-templates/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="corpname" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="date" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="edition" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Edition'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="editor" mode="titlepage.mode">
+ <!-- The first editor is dealt with in the following template,
+ which in turn displays all editors of the same mode. -->
+</xsl:template>
+
+<xsl:template match="editor[1]" priority="2" mode="titlepage.mode">
+ <xsl:call-template name="gentext.edited.by"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list" select="../editor"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="firstname" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="graphic" mode="titlepage.mode">
+ <!-- use the normal graphic handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="honorific" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="isbn" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="issn" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="biblioid" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="itermset" mode="titlepage.mode">
+ <!-- discard -->
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="titlepage.mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="keywordset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="titlepage.mode">
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <fo:block id="{$id}">
+ <xsl:if test="title"> <!-- FIXME: add param for using default title? -->
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice/title" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="lineage" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="modespec" mode="titlepage.mode">
+ <!-- discard -->
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="titlepage.mode">
+ <xsl:if test="preceding-sibling::*[1][self::orgname]">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="orgname" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.mode">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
+ </fo:block>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><xsl:call-template name="person.name"/></fo:block>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.othercredits">
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="othername" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="productname" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="publisher" mode="titlepage.mode">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="publishername" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="titlepage.mode">
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:call-template name="pi.dbfo_table-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:table table-layout="fixed" width="{$table.width}" xsl:use-attribute-sets="revhistory.table.properties">
+ <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>
+ <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>
+ <fo:table-column column-number="3" column-width="proportional-column-width(1)"/>
+ <fo:table-body start-indent="0pt" end-indent="0pt">
+ <fo:table-row>
+ <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block xsl:use-attribute-sets="revhistory.title.properties">
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="title|info/title" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <xsl:apply-templates select="*[not(self::title)]" mode="titlepage.mode"/>
+ </fo:table-body>
+ </fo:table>
+
+</xsl:template>
+
+
+<xsl:template match="revhistory/revision" mode="titlepage.mode">
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <fo:table-row>
+ <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
+ </xsl:if>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <xsl:if test="$revremark">
+ <fo:table-row>
+ <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">
+ <fo:block>
+ <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/date" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/author" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revremark" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subjectset" mode="titlepage.mode">
+ <!-- discard -->
+</xsl:template>
+
+<xsl:template match="subtitle" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="surname" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Book templates -->
+
+<!-- Note: these templates cannot use *.titlepage.recto.mode or
+ *.titlepage.verso.mode. If they do then subsequent use of a custom
+ titlepage.templates.xml file will not work correctly. -->
+
+<!-- book recto -->
+
+<xsl:template match="bookinfo/authorgroup|book/info/authorgroup"
+ mode="titlepage.mode" priority="2">
+ <fo:block>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<!-- book verso -->
+
+<xsl:template name="book.verso.title">
+ <fo:block>
+ <xsl:apply-templates mode="titlepage.mode"/>
+
+ <xsl:if test="following-sibling::subtitle
+ |following-sibling::info/subtitle
+ |following-sibling::bookinfo/subtitle">
+ <xsl:text>: </xsl:text>
+
+ <xsl:apply-templates select="(following-sibling::subtitle
+ |following-sibling::info/subtitle
+ |following-sibling::bookinfo/subtitle)[1]"
+ mode="book.verso.subtitle.mode"/>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.verso.subtitle.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:if test="following-sibling::subtitle">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="following-sibling::subtitle[1]"
+ mode="book.verso.subtitle.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="verso.authorgroup">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list" select="author|corpauthor|editor"/>
+ </xsl:call-template>
+ </fo:block>
+ <xsl:apply-templates select="othercredit" mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="bookinfo/author|book/info/author"
+ mode="titlepage.mode" priority="2">
+ <fo:block>
+ <xsl:call-template name="person.name"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="bookinfo/corpauthor|book/info/corpauthor"
+ mode="titlepage.mode" priority="2">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="bookinfo/pubdate|book/info/pubdate"
+ mode="titlepage.mode" priority="2">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'pubdate'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl
new file mode 100644
index 0000000..cf32724
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl
@@ -0,0 +1,332 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: toc.xsl 8323 2009-03-12 22:52:17Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- only set, book and part puts toc in its own page sequence -->
+
+<xsl:template match="set/toc | book/toc | part/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and
+ ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <!-- Don't generate a page sequence unless there is content -->
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to parent element -->
+ <xsl:for-each select="parent::*">
+ <xsl:choose>
+ <xsl:when test="self::set">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::book">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::part">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:variable name="lot-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'lot'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="gentext-key" select="'TableofContents'"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/toc | appendix/toc | preface/toc | article/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and
+ ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section/toc
+ |sect1/toc
+ |sect2/toc
+ |sect3/toc
+ |sect4/toc
+ |sect5/toc">
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and
+ ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tocpart|tocchap
+ |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:apply-templates select="tocentry"/>
+ <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <fo:block start-indent="{count(ancestor::*)*2}pc">
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="tocentry|lotentry|tocdiv|tocfront|tocback">
+ <fo:block text-align-last="justify"
+ end-indent="2pc"
+ last-line-end-indent="-2pc">
+ <fo:inline keep-with-next.within-line="always">
+ <xsl:choose>
+ <xsl:when test="@linkend">
+ <fo:basic-link internal-destination="{@linkend}">
+ <xsl:apply-templates/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+
+ <xsl:choose>
+ <xsl:when test="@linkend">
+ <fo:inline keep-together.within-line="always">
+ <xsl:text> </xsl:text>
+ <fo:leader leader-pattern="dots"
+ keep-with-next.within-line="always"/>
+ <xsl:text> </xsl:text>
+ <fo:basic-link internal-destination="{@linkend}">
+ <xsl:choose>
+ <xsl:when test="@pagenum">
+ <xsl:value-of select="@pagenum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:page-number-citation ref-id="{@linkend}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:basic-link>
+ </fo:inline>
+ </xsl:when>
+ <xsl:when test="@pagenum">
+ <fo:inline keep-together.within-line="always">
+ <xsl:text> </xsl:text>
+ <fo:leader leader-pattern="dots"
+ keep-with-next.within-line="always"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@pagenum"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- just the leaders, what else can I do? -->
+ <fo:inline keep-together.within-line="always">
+ <xsl:text> </xsl:text>
+ <fo:leader leader-pattern="space"
+ keep-with-next.within-line="always"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="toc/title">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="toc/subtitle">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="toc/titleabbrev">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- A lot element must have content, because there is no attribute
+ to select what kind of list should be generated -->
+<xsl:template match="book/lot | part/lot">
+ <!-- Don't generate a page sequence unless there is content -->
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:variable name="lot-master-reference">
+ <xsl:call-template name="select.pagemaster">
+ <xsl:with-param name="pageclass" select="'lot'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="page.sequence">
+ <xsl:with-param name="master-reference"
+ select="$lot-master-reference"/>
+ <xsl:with-param name="element" select="'toc'"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/lot | appendix/lot | preface/lot | article/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section/lot
+ |sect1/lot
+ |sect2/lot
+ |sect3/lot
+ |sect4/lot
+ |sect5/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <fo:block>
+ <xsl:apply-templates/>
+ </fo:block>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.empty.lot">
+ <!-- An empty lot element does not provide any information to indicate
+ what should be included in it. You can customize this
+ template to generate a lot based on @role or something -->
+ <xsl:message>
+ <xsl:text>Warning: don't know what to generate for </xsl:text>
+ <xsl:text>lot that has no children.</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+<xsl:template match="lot/title">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="lot/subtitle">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="lot/titleabbrev">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl
new file mode 100644
index 0000000..098489a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl
@@ -0,0 +1,465 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
+ xmlns:xverb="com.nwalsh.xalan.Verbatim"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="sverb xverb lxslt exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: verbatim.xsl 8344 2009-03-16 06:35:43Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- XSLTHL highlighting is turned off by default. See highlighting/README
+ for instructions on how to turn on XSLTHL -->
+<xsl:template name="apply-highlighting">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<lxslt:component prefix="xverb"
+ functions="numberLines"/>
+
+<xsl:template match="programlisting|screen|synopsis">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf">
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="block.content">
+ <xsl:choose>
+ <xsl:when test="$shade.verbatim != 0">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style">
+ <xsl:choose>
+ <xsl:when test="$hyphenate.verbatim != 0 and
+ $exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($content)"
+ mode="hyphenate.verbatim"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:choose>
+ <xsl:when test="$hyphenate.verbatim != 0 and
+ $exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($content)"
+ mode="hyphenate.verbatim"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- Need a block-container for these features -->
+ <xsl:when test="@width != '' or
+ (self::programlisting and
+ starts-with($writing.mode, 'rl'))">
+ <fo:block-container start-indent="0pt" end-indent="0pt">
+ <xsl:if test="@width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="concat(@width, '*', $monospace.verbatim.font.width)"/>
+ </xsl:attribute>
+ </xsl:if>
+ <!-- All known program code is left-to-right -->
+ <xsl:if test="self::programlisting and
+ starts-with($writing.mode, 'rl')">
+ <xsl:attribute name="writing-mode">lr-tb</xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$block.content"/>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$block.content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template match="literallayout">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <xsl:choose>
+ <xsl:when test="$shade.verbatim != 0">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style">
+
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="monospace.verbatim.properties">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$shade.verbatim != 0">
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="verbatim.properties shade.verbatim.style">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{$id}"
+ xsl:use-attribute-sets="verbatim.properties">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="address">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="verbatim.properties">
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="number.rtf.lines">
+ <xsl:param name="rtf" select="''"/>
+ <xsl:param name="pi.context" select="."/>
+
+ <!-- Save the global values -->
+ <xsl:variable name="global.linenumbering.everyNth"
+ select="$linenumbering.everyNth"/>
+
+ <xsl:variable name="global.linenumbering.separator"
+ select="$linenumbering.separator"/>
+
+ <xsl:variable name="global.linenumbering.width"
+ select="$linenumbering.width"/>
+
+ <!-- Extract the <?dbfo linenumbering.*?> PI values -->
+ <xsl:variable name="pi.linenumbering.everyNth">
+ <xsl:call-template name="pi.dbfo_linenumbering.everyNth">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.separator">
+ <xsl:call-template name="pi.dbfo_linenumbering.separator">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.width">
+ <xsl:call-template name="pi.dbfo_linenumbering.width">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Construct the 'in-context' values -->
+ <xsl:variable name="linenumbering.everyNth">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.everyNth != ''">
+ <xsl:value-of select="$pi.linenumbering.everyNth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.everyNth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.separator">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.separator != ''">
+ <xsl:value-of select="$pi.linenumbering.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.width">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.width != ''">
+ <xsl:value-of select="$pi.linenumbering.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.startinglinenumber">
+ <xsl:choose>
+ <xsl:when test="$pi.context/@startinglinenumber">
+ <xsl:value-of select="$pi.context/@startinglinenumber"/>
+ </xsl:when>
+ <xsl:when test="$pi.context/@continuation='continues'">
+ <xsl:variable name="lastLine">
+ <xsl:choose>
+ <xsl:when test="$pi.context/self::programlisting">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::programlisting[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::screen">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::screen[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::literallayout">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::literallayout[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::address">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::address[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::synopsis">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::synopsis[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected verbatim environment: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:message>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$lastLine + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:numberLines')">
+ <xsl:copy-of select="sverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:numberLines')">
+ <xsl:copy-of select="xverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No numberLines function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================== -->
+
+<xsl:template name="lastLineNumber">
+ <xsl:param name="listings"/>
+ <xsl:param name="number" select="0"/>
+
+ <xsl:variable name="lines">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="string($listings[1])"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($listings)">
+ <xsl:value-of select="$number"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@startinglinenumber">
+ <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@continuation='continues'">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="number" select="$number + $lines"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lines"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="countLines">
+ <xsl:param name="listing"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($listing, '&#10;')">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="substring-after($listing, '&#10;')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================== -->
+
+<xsl:template match="node()|@*" mode="hyphenate.verbatim">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="hyphenate.verbatim"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()" mode="hyphenate.verbatim" priority="2">
+ <xsl:call-template name="hyphenate.verbatim.block">
+ <xsl:with-param name="content" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="hyphenate.verbatim.block">
+ <xsl:param name="content" select="''"/>
+ <xsl:param name="count" select="1"/>
+
+ <!-- recurse on lines first to keep recursion depth reasonable -->
+ <xsl:choose>
+ <xsl:when test="contains($content, '&#xA;')">
+ <xsl:variable name="line" select="substring-before($content, '&#xA;')"/>
+ <xsl:variable name="rest" select="substring-after($content, '&#xA;')"/>
+ <xsl:call-template name="hyphenate.verbatim">
+ <xsl:with-param name="content" select="concat($line, '&#xA;')"/>
+ </xsl:call-template>
+ <xsl:call-template name="hyphenate.verbatim.block">
+ <xsl:with-param name="content" select="$rest"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="hyphenate.verbatim">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="hyphenate.verbatim">
+ <xsl:param name="content"/>
+ <xsl:variable name="head" select="substring($content, 1, 1)"/>
+ <xsl:variable name="tail" select="substring($content, 2)"/>
+ <xsl:choose>
+ <!-- Place soft-hyphen after space or non-breakable space. -->
+ <xsl:when test="$head = ' ' or $head = '&#160;'">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:text>&#x00AD;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$hyphenate.verbatim.characters != '' and
+ translate($head, $hyphenate.verbatim.characters, '') = '' and not($tail = '')">
+ <xsl:value-of select="$head"/>
+ <xsl:text>&#x00AD;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$head"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$tail">
+ <xsl:call-template name="hyphenate.verbatim">
+ <xsl:with-param name="content" select="$tail"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl
new file mode 100644
index 0000000..14ce59f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl
@@ -0,0 +1,180 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:rx="http://www.renderx.com/XSL/Extensions"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: xep.xsl 7531 2007-10-17 18:06:49Z dcramer $
+ ********************************************************************
+ (c) Stephane Bline Peregrine Systems 2001
+ Implementation of xep extensions:
+ * Pdf bookmarks (based on the XEP 2.5 implementation)
+ * Document information (XEP 2.5 meta information extensions)
+ ******************************************************************** -->
+
+<!-- FIXME: Norm, I changed things so that the top-level element (book or set)
+ does not appear in the TOC. Is this the right thing? -->
+
+<xsl:template name="xep-document-information">
+ <rx:meta-info>
+ <xsl:variable name="authors"
+ select="(//author|//editor|//corpauthor|//authorgroup)[1]"/>
+ <xsl:if test="$authors">
+ <xsl:variable name="author">
+ <xsl:choose>
+ <xsl:when test="$authors[self::authorgroup]">
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list"
+ select="$authors/*[self::author|self::corpauthor|
+ self::othercredit|self::editor]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$authors[self::corpauthor]">
+ <xsl:value-of select="$authors"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$authors"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="rx:meta-field">
+ <xsl:attribute name="name">author</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:value-of select="normalize-space($author)"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="/*[1]" mode="label.markup"/>
+ <xsl:apply-templates select="/*[1]" mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:element name="rx:meta-field">
+ <xsl:attribute name="name">creator</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:text>DocBook </xsl:text>
+ <xsl:value-of select="$DistroTitle"/>
+ <xsl:text> V</xsl:text>
+ <xsl:value-of select="$VERSION"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <xsl:element name="rx:meta-field">
+ <xsl:attribute name="name">title</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <xsl:if test="//keyword">
+ <xsl:element name="rx:meta-field">
+ <xsl:attribute name="name">keywords</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:for-each select="//keyword">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="//subjectterm">
+ <xsl:element name="rx:meta-field">
+ <xsl:attribute name="name">subject</xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:for-each select="//subjectterm">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </rx:meta-info>
+</xsl:template>
+
+<!-- ********************************************************************
+ Pdf bookmarks
+ ******************************************************************** -->
+
+<xsl:template match="*" mode="xep.outline">
+ <xsl:apply-templates select="*" mode="xep.outline"/>
+</xsl:template>
+
+<xsl:template match="set|book|part|reference|preface|chapter|appendix|article
+ |glossary|bibliography|index|setindex
+ |refentry|refsynopsisdiv
+ |refsect1|refsect2|refsect3|refsection
+ |sect1|sect2|sect3|sect4|sect5|section"
+ mode="xep.outline">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="bookmark-label">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <!-- Put the root element bookmark at the same level as its children -->
+ <!-- If the object is a set or book, generate a bookmark for the toc -->
+ <xsl:choose>
+ <xsl:when test="self::index and $generate.index = 0"/>
+ <xsl:when test="parent::*">
+ <rx:bookmark internal-destination="{$id}">
+ <rx:bookmark-label>
+ <xsl:value-of select="normalize-space($bookmark-label)"/>
+ </rx:bookmark-label>
+ <xsl:apply-templates select="*" mode="xep.outline"/>
+ </rx:bookmark>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$bookmark-label != ''">
+ <rx:bookmark internal-destination="{$id}">
+ <rx:bookmark-label>
+ <xsl:value-of select="normalize-space($bookmark-label)"/>
+ </rx:bookmark-label>
+ </rx:bookmark>
+ </xsl:if>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')
+ and set|book|part|reference|section|sect1|refentry
+ |article|bibliography|glossary|chapter
+ |appendix">
+ <rx:bookmark internal-destination="toc...{$id}">
+ <rx:bookmark-label>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </rx:bookmark-label>
+ </rx:bookmark>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="xep.outline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="xep-pis">
+ <xsl:if test="$crop.marks != 0">
+ <xsl:processing-instruction name="xep-pdf-crop-mark-width"><xsl:value-of select="$crop.mark.width"/></xsl:processing-instruction>
+ <xsl:processing-instruction name="xep-pdf-crop-offset"><xsl:value-of select="$crop.mark.offset"/></xsl:processing-instruction>
+ <xsl:processing-instruction name="xep-pdf-bleed"><xsl:value-of select="$crop.mark.bleed"/></xsl:processing-instruction>
+ </xsl:if>
+
+ <xsl:call-template name="user-xep-pis"/>
+</xsl:template>
+
+<!-- Placeholder for user defined PIs -->
+<xsl:template name="user-xep-pis"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl
new file mode 100644
index 0000000..771d39b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl
@@ -0,0 +1,1538 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ exclude-result-prefixes="exsl xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: xref.xsl 8913 2010-10-01 04:44:57Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- Use internal variable for olink xlink role for consistency -->
+<xsl:variable
+ name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="anchor">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <fo:inline id="{$id}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="xref" name="xref">
+ <xsl:param name="xhref" select="@xlink:href"/>
+ <!-- is the @xlink:href a local idref link? -->
+ <xsl:param name="xlink.idref">
+ <xsl:if test="starts-with($xhref,'#')
+ and (not(contains($xhref,'&#40;'))
+ or starts-with($xhref, '#xpointer&#40;id&#40;'))">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/>
+ <xsl:param name="linkend.targets" select="key('id',@linkend)"/>
+ <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/>
+ <xsl:param name="refelem" select="local-name($target)"/>
+
+ <xsl:variable name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="content">
+ <fo:inline xsl:use-attribute-sets="xref.properties">
+ <xsl:choose>
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$target">
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:apply-templates>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: xref linking to </xsl:text>
+ <xsl:value-of select="@linkend|@xlink:href"/>
+ <xsl:text> has no generated link text.</xsl:text>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+ </xsl:variable>
+
+ <!-- Convert it into an active link -->
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+
+ <!-- Add standard page reference? -->
+ <xsl:choose>
+ <xsl:when test="not($target)">
+ <!-- page numbers only for local targets -->
+ </xsl:when>
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')
+ and contains($xrefstyle, 'nopage')">
+ <!-- negative xrefstyle in instance turns it off -->
+ </xsl:when>
+ <!-- positive xrefstyle already handles it -->
+ <xsl:when test="not(starts-with(normalize-space($xrefstyle), 'select:')
+ and (contains($xrefstyle, 'page')
+ or contains($xrefstyle, 'Page')))
+ and ( $insert.xref.page.number = 'yes'
+ or $insert.xref.page.number = '1')
+ or (local-name($target) = 'para' and
+ $xrefstyle = '')">
+ <xsl:apply-templates select="$target" mode="page.citation">
+ <xsl:with-param name="id" select="$target/@id|$target/@xml:id"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Handled largely like an xref -->
+<!-- To be done: add support for begin, end, and units attributes -->
+<xsl:template match="biblioref" name="biblioref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$refelem=''">
+ <xsl:message>
+ <xsl:text>XRef to nonexistent id: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="@endterm">
+ <fo:basic-link internal-destination="{@linkend}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:basic-link>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <fo:basic-link internal-destination="{@linkend}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </fo:basic-link>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <fo:basic-link internal-destination="{@linkend}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </fo:basic-link>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="endterm">
+ <!-- Process the children of the endterm element -->
+ <xsl:variable name="endterm">
+ <xsl:apply-templates select="child::node()"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="remove-ids">
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of select="name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:copy>
+</xsl:template>
+
+<!--- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-to-prefix"/>
+<xsl:template match="*" mode="xref-to-suffix"/>
+
+<xsl:template match="*" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+
+ <xsl:if test="$verbose != 0">
+ <xsl:message>
+ <xsl:text>Don't know what gentext to create for xref to: "</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>"</xsl:text>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="title" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- if you xref to a title, xref to the parent... -->
+ <xsl:choose>
+ <!-- FIXME: how reliable is this? -->
+ <xsl:when test="contains(local-name(parent::*), 'info')">
+ <xsl:apply-templates select="parent::*[2]" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="abstract|article|authorblurb|bibliodiv|bibliomset
+ |biblioset|blockquote|calloutlist|caution|colophon
+ |constraintdef|formalpara|glossdiv|important|indexdiv
+ |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain
+ |msgrel|msgset|msgsub|note|orderedlist|partintro
+ |productionset|qandadiv|refsynopsisdiv|segmentedlist
+ |set|setindex|sidebar|tip|toc|variablelist|warning"
+ mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- catch-all for things with (possibly optional) titles -->
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="author|editor|othercredit|personname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:call-template name="person.name.list"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table|equation" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="procedure" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="task" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="dedication|acknowledgements|preface|chapter|appendix" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix">
+ <xsl:text>[</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix">
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:variable name="entry" select="$bib/bibliography/
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name($entry/*[1]) = 'abbrev'">
+ <xsl:apply-templates select="$entry/*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossary" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="xref-to">
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="(acronym|abbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossterm|firstterm" mode="xref-to">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="index" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="section|simplesect
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3|refsection" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="qandaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="question[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length(label) != 0">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:apply-templates select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refnamediv/refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="refmeta/manvolnum"/>
+</xsl:template>
+
+<xsl:template match="refnamediv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="refname[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="term[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="varlistentry/term" mode="xref-to">
+ <xsl:param name="verbose" select="1"/>
+ <!-- to avoid the comma that will be generated if there are several terms -->
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="callout-bug"/>
+</xsl:template>
+
+<xsl:template match="area|areaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="." mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- These are elements for which no link text exists, so an xref to one
+ uses the xrefstyle attribute if specified, or if not it falls back
+ to the container element's link text -->
+<xsl:template match="para|phrase|simpara|anchor|quote" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:variable name="context" select="(ancestor::simplesect
+ |ancestor::section
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsection
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::partintro
+ |ancestor::dedication
+ |ancestor::acknowledgements
+ |ancestor::colophon
+ |ancestor::bibliography
+ |ancestor::index
+ |ancestor::glossary
+ |ancestor::glossentry
+ |ancestor::listitem
+ |ancestor::varlistentry)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$xrefstyle != ''">
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$verbose != 0">
+ <xsl:message>
+ <xsl:text>WARNING: xref to &lt;</xsl:text>
+ <xsl:value-of select="local-name()"/>
+ <xsl:text> id="</xsl:text>
+ <xsl:value-of select="@id|@xml:id"/>
+ <xsl:text>"&gt; has no generated text. Trying its ancestor elements.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:apply-templates select="$context" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="xref-to">
+ <xsl:value-of select="primary"/>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary" mode="xref-to">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="link" name="link">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="targets" select="key('id',$linkend)"/>
+ <xsl:param name="target" select="$targets[1]"/>
+
+ <xsl:variable name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="content">
+ <fo:inline xsl:use-attribute-sets="xref.properties">
+ <xsl:choose>
+ <xsl:when test="count(child::node()) &gt; 0">
+ <!-- If it has content, use it -->
+ <xsl:apply-templates/>
+ </xsl:when>
+ <!-- look for an endterm -->
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Use the xlink:href if no other text -->
+ <xsl:when test="@xlink:href">
+ <xsl:call-template name="hyphenate-url">
+ <xsl:with-param name="url" select="@xlink:href"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Link element has no content and no Endterm. </xsl:text>
+ <xsl:text>Nothing to show in the link to </xsl:text>
+ <xsl:value-of select="$target"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+
+ <!-- Add standard page reference? -->
+ <xsl:choose>
+ <!-- page numbering on link only enabled for @linkend -->
+ <!-- There is no link element in DB5 with xlink:href -->
+ <xsl:when test="not($linkend)">
+ </xsl:when>
+ <!-- negative xrefstyle in instance turns it off -->
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')
+ and contains($xrefstyle, 'nopage')">
+ </xsl:when>
+ <xsl:when test="(starts-with(normalize-space($xrefstyle), 'select:')
+ and $insert.link.page.number = 'maybe'
+ and (contains($xrefstyle, 'page')
+ or contains($xrefstyle, 'Page')))
+ or ( $insert.link.page.number = 'yes'
+ or $insert.link.page.number = '1')
+ or local-name($target) = 'para'">
+ <xsl:apply-templates select="$target" mode="page.citation">
+ <xsl:with-param name="id" select="$linkend"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="ulink" name="ulink">
+ <xsl:param name="url" select="@url"/>
+
+ <xsl:variable name ="ulink.url">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$url"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <fo:basic-link xsl:use-attribute-sets="xref.properties"
+ external-destination="{$ulink.url}">
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0 or (string(.) = $url)">
+ <xsl:call-template name="hyphenate-url">
+ <xsl:with-param name="url" select="$url"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:basic-link>
+ <!-- * Call the template for determining whether the URL for this -->
+ <!-- * hyperlink is displayed, and how to display it (either inline or -->
+ <!-- * as a numbered footnote). -->
+ <xsl:call-template name="hyperlink.url.display">
+ <xsl:with-param name="url" select="$url"/>
+ <xsl:with-param name="ulink.url" select="$ulink.url"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="hyperlink.url.display">
+ <!-- * This template is called for all external hyperlinks (ulinks and -->
+ <!-- * for all simple xlinks); it determines whether the URL for the -->
+ <!-- * hyperlink is displayed, and how to display it (either inline or -->
+ <!-- * as a numbered footnote). -->
+ <xsl:param name="url"/>
+ <xsl:param name="ulink.url">
+ <!-- * ulink.url is just the value of the URL wrapped in 'url(...)' -->
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$url"/>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:if test="count(child::node()) != 0
+ and string(.) != $url
+ and $ulink.show != 0">
+ <!-- * Display the URL for this hyperlink only if it is non-empty, -->
+ <!-- * and the value of its content is not a URL that is the same as -->
+ <!-- * URL it links to, and if ulink.show is non-zero. -->
+ <xsl:choose>
+ <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)">
+ <!-- * ulink.show and ulink.footnote are both non-zero; that -->
+ <!-- * means we display the URL as a footnote (instead of inline) -->
+ <fo:footnote>
+ <xsl:call-template name="ulink.footnote.number"/>
+ <fo:footnote-body xsl:use-attribute-sets="footnote.properties">
+ <fo:block>
+ <xsl:call-template name="ulink.footnote.number"/>
+ <xsl:text> </xsl:text>
+ <fo:basic-link external-destination="{$ulink.url}">
+ <xsl:value-of select="$url"/>
+ </fo:basic-link>
+ </fo:block>
+ </fo:footnote-body>
+ </fo:footnote>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * ulink.show is non-zero, but ulink.footnote is not; that -->
+ <!-- * means we display the URL inline -->
+ <fo:inline hyphenate="false">
+ <!-- * put square brackets around the URL -->
+ <xsl:text> [</xsl:text>
+ <fo:basic-link external-destination="{$ulink.url}">
+ <xsl:call-template name="hyphenate-url">
+ <xsl:with-param name="url" select="$url"/>
+ </xsl:call-template>
+ </fo:basic-link>
+ <xsl:text>]</xsl:text>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template name="ulink.footnote.number">
+ <fo:inline xsl:use-attribute-sets="footnote.mark.properties">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">
+ <xsl:attribute name="vertical-align">super</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="baseline-shift">super</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:variable name="fnum">
+ <!-- * Determine the footnote number to display for this hyperlink, -->
+ <!-- * by counting all foonotes, ulinks, and any elements that have -->
+ <!-- * an xlink:href attribute that meets the following criteria: -->
+ <!-- * -->
+ <!-- * - the content of the element is not a URI that is the same -->
+ <!-- * URI as the value of the href attribute -->
+ <!-- * - the href attribute is not an internal ID reference (does -->
+ <!-- * not start with a hash sign) -->
+ <!-- * - the href is not part of an olink reference (the element -->
+ <!-- * - does not have an xlink:role attribute that indicates it is -->
+ <!-- * an olink, and the href does not contain a hash sign) -->
+ <!-- * - the element either has no xlink:type attribute or has -->
+ <!-- * an xlink:type attribute whose value is 'simple' -->
+ <!-- FIXME: list in @from is probably not complete -->
+ <xsl:number level="any"
+ from="chapter|appendix|preface|article|refentry|bibliography[not(parent::article)]"
+ count="footnote[not(@label)][not(ancestor::tgroup)]
+ |ulink[node()][@url != .][not(ancestor::footnote)]
+ |*[node()][@xlink:href][not(@xlink:href = .)][not(starts-with(@xlink:href,'#'))]
+ [not(contains(@xlink:href,'#') and @xlink:role = $xolink.role)]
+ [not(@xlink:type) or @xlink:type='simple']
+ [not(ancestor::footnote)]"
+ format="1"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($footnote.number.symbols) &gt;= $fnum">
+ <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$fnum" format="{$footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:inline>
+</xsl:template>
+
+<xsl:template name="hyphenate-url">
+ <xsl:param name="url" select="''"/>
+ <xsl:choose>
+ <xsl:when test="$ulink.hyphenate = ''">
+ <xsl:value-of select="$url"/>
+ </xsl:when>
+ <xsl:when test="string-length($url) &gt; 1">
+ <xsl:variable name="char" select="substring($url, 1, 1)"/>
+ <xsl:value-of select="$char"/>
+ <xsl:if test="contains($ulink.hyphenate.chars, $char)">
+ <!-- Do not hyphen in-between // -->
+ <xsl:if test="not($char = '/' and substring($url,2,1) = '/')">
+ <xsl:copy-of select="$ulink.hyphenate"/>
+ </xsl:if>
+ </xsl:if>
+ <!-- recurse to the next character -->
+ <xsl:call-template name="hyphenate-url">
+ <xsl:with-param name="url" select="substring($url, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$url"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" name="olink">
+ <!-- olink content may be passed in from xlink olink -->
+ <xsl:param name="content" select="NOTANELEMENT"/>
+
+ <xsl:variable name="localinfo" select="@localinfo"/>
+
+ <xsl:choose>
+ <!-- olinks resolved by stylesheet and target database -->
+ <xsl:when test="@targetdoc or @targetptr or
+ (@xlink:role=$xolink.role and
+ contains(@xlink:href, '#') )" >
+
+ <xsl:variable name="targetdoc.att">
+ <xsl:choose>
+ <xsl:when test="@targetdoc != ''">
+ <xsl:value-of select="@targetdoc"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and
+ contains(@xlink:href, '#')" >
+ <xsl:value-of select="substring-before(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr.att">
+ <xsl:choose>
+ <xsl:when test="@targetptr != ''">
+ <xsl:value-of select="@targetptr"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and
+ contains(@xlink:href, '#')" >
+ <xsl:value-of select="substring-after(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="xref-context" select="true()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database.filename">
+ <xsl:call-template name="select.target.database">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database"
+ select="document($target.database.filename, /)"/>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: root element of target.database is '</xsl:text>
+ <xsl:value-of select="local-name($target.database/*[1])"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="olink.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="string-length($olink.key) = 0">
+ <xsl:message>
+ <xsl:text>Error: unresolved olink: </xsl:text>
+ <xsl:text>targetdoc/targetptr = '</xsl:text>
+ <xsl:value-of select="$targetdoc.att"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$targetptr.att"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make.olink.href">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Olink that points to internal id can be a link -->
+ <xsl:variable name="linkend">
+ <xsl:call-template name="olink.as.linkend">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="hottext">
+ <xsl:choose>
+ <xsl:when test="string-length($content) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.docname.citation">
+ <xsl:call-template name="olink.document.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="olink.page.citation">
+ <xsl:call-template name="olink.page.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <fo:basic-link internal-destination="{$linkend}"
+ xsl:use-attribute-sets="xref.properties">
+ <xsl:call-template name="anchor"/>
+ <xsl:copy-of select="$hottext"/>
+ <xsl:copy-of select="$olink.page.citation"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:when test="$href != ''">
+ <xsl:choose>
+ <xsl:when test="$fop1.extensions != 0">
+ <xsl:variable name="mybeg" select="substring-before($href,'#')"/>
+ <xsl:variable name="myend" select="substring-after($href,'#')"/>
+ <fo:basic-link external-destination="url({concat($mybeg,'#dest=',$myend)})"
+ xsl:use-attribute-sets="olink.properties">
+ <xsl:copy-of select="$hottext"/>
+ </fo:basic-link>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:when>
+ <xsl:when test="$xep.extensions != 0">
+ <fo:basic-link external-destination="url({$href})"
+ xsl:use-attribute-sets="olink.properties">
+ <xsl:call-template name="anchor"/>
+ <xsl:copy-of select="$hottext"/>
+ </fo:basic-link>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:when>
+ <xsl:when test="$axf.extensions != 0">
+ <fo:basic-link external-destination="{$href}"
+ xsl:use-attribute-sets="olink.properties">
+ <xsl:copy-of select="$hottext"/>
+ </fo:basic-link>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:basic-link external-destination="{$href}"
+ xsl:use-attribute-sets="olink.properties">
+ <xsl:copy-of select="$hottext"/>
+ </fo:basic-link>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$hottext"/>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- olink never implemented in FO for old olink entity syntax -->
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.olink.docname.markup">
+ <xsl:param name="docname" select="''"/>
+
+ <fo:inline font-style="italic">
+ <xsl:value-of select="$docname"/>
+ </fo:inline>
+
+</xsl:template>
+
+<!-- This prevents error message when processing olinks with xrefstyle -->
+<xsl:template match="olink" mode="object.xref.template"/>
+
+
+<xsl:template name="olink.as.linkend">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+ <xsl:param name="target.database" select="NotANode"/>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr">
+ <xsl:value-of
+ select="substring-before(substring-after($olink.key, '/'), '/')"/>
+ </xsl:variable>
+
+ <xsl:variable name="target.lang">
+ <xsl:variable name="candidate">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)[1]/@lang" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$candidate != ''">
+ <xsl:value-of select="$candidate"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$olink.lang"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$current.docid = $targetdoc and
+ $olink.lang = $target.lang">
+ <xsl:variable name="targets" select="key('id',$targetptr)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:if test="$target">
+ <xsl:value-of select="$targetptr"/>
+ </xsl:if>
+ </xsl:if>
+
+</xsl:template>
+
+
+<xsl:template name="olink.outline">
+ <xsl:param name="outline.base.uri"/>
+ <xsl:param name="localinfo"/>
+ <xsl:param name="return" select="href"/>
+
+ <xsl:message terminate="yes">Fatal error: olink.outline template: what is this supposed to do?</xsl:message>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="title.xref">
+ <xsl:param name="target" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($target) = 'figure'
+ or local-name($target) = 'example'
+ or local-name($target) = 'equation'
+ or local-name($target) = 'table'
+ or local-name($target) = 'dedication'
+ or local-name($target) = 'acknowledgements'
+ or local-name($target) = 'preface'
+ or local-name($target) = 'bibliography'
+ or local-name($target) = 'glossary'
+ or local-name($target) = 'index'
+ or local-name($target) = 'setindex'
+ or local-name($target) = 'colophon'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates select="$target" mode="title.markup"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline font-style="italic">
+ <xsl:apply-templates select="$target" mode="title.markup"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="number.xref">
+ <xsl:param name="target" select="."/>
+ <xsl:apply-templates select="$target" mode="label.markup"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="xref.xreflabel">
+ <!-- called to process an xreflabel...you might use this to make -->
+ <!-- xreflabels come out in the right font for different targets, -->
+ <!-- for example. -->
+ <xsl:param name="target" select="."/>
+ <xsl:value-of select="$target/@xreflabel"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="title" mode="xref">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="command" mode="xref">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="function" mode="xref">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="*" mode="page.citation">
+ <xsl:param name="id" select="'???'"/>
+
+ <fo:basic-link internal-destination="{$id}"
+ xsl:use-attribute-sets="xref.properties">
+ <fo:inline keep-together.within-line="always">
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'page.citation'"/>
+ <xsl:with-param name="context" select="'xref'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:inline>
+ </fo:basic-link>
+</xsl:template>
+
+<xsl:template match="*" mode="pagenumber.markup">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <fo:page-number-citation ref-id="{$id}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <!-- FIXME: what about the case where titleabbrev is inside the info? -->
+ <xsl:when test="$purpose = 'xref' and titleabbrev">
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="chapter|appendix" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <xsl:when test="$purpose = 'xref'">
+ <fo:inline font-style="italic">
+ <xsl:copy-of select="$title"/>
+ </fo:inline>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.subtitle.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="subtitle"/>
+
+ <xsl:copy-of select="$subtitle"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.label.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="label"/>
+
+ <xsl:copy-of select="$label"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.pagenumber.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="pagenumber"/>
+
+ <xsl:copy-of select="$pagenumber"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.direction.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="direction"/>
+
+ <xsl:copy-of select="$direction"/>
+</xsl:template>
+
+<xsl:template match="olink" mode="pagenumber.markup">
+ <!-- Local olinks can use page-citation -->
+ <xsl:variable name="targetdoc.att" select="@targetdoc"/>
+ <xsl:variable name="targetptr.att" select="@targetptr"/>
+
+ <xsl:variable name="olink.lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="xref-context" select="true()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database.filename">
+ <xsl:call-template name="select.target.database">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database"
+ select="document($target.database.filename, /)"/>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: root element of target.database is '</xsl:text>
+ <xsl:value-of select="local-name($target.database/*[1])"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="olink.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Olink that points to internal id can be a link -->
+ <xsl:variable name="linkend">
+ <xsl:call-template name="olink.as.linkend">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <fo:page-number-citation ref-id="{$linkend}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: no page number linkend for local olink '</xsl:text>
+ <xsl:value-of select="$olink.key"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README
new file mode 100644
index 0000000..0b31d32
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README
@@ -0,0 +1,16 @@
+To use the syntax higlighting extension with DocBook-XSL 1.74.3+, you must:
+1. Use a processor that works with the extension: Saxon 6 or Xalan-J.
+2. Add the latest version of xslthl-2.X.X.jar to your classpath.
+3. Set the highlight.source parameter to 1.
+4. Import into your customization one of the following stylesheet module:
+ * html/highlight.xsl
+ * xhtml/highlight.xsl
+ * xhtml-1_1/highlight.xsl
+ * fo/highlight.xsl
+5. Use that customiztion layer.
+
+
+Note: Saxon 8.5 or later is also supported, but since it is an XSLT 2.0
+processor it is not guaranteed to work with DocBook-XSL in all
+circumstances.
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml
new file mode 100644
index 0000000..1503dd1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Syntax highlighting definition for C xslthl - XSLT Syntax Highlighting http://sourceforge.net/projects/xslthl/
+ Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks This software is provided 'as-is', without any
+ express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this
+ software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and
+ to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not
+ be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an
+ acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must
+ be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be
+ removed or altered from any source distribution. Michal Molhanec <mol1111 at users.sourceforge.net> Jirka Kosek <kosek
+ at users.sourceforge.net> Michiel Hendriks <elmuerte at users.sourceforge.net>
+ -->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/**</start>
+ <end>*/</end>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="oneline-comment">
+ <start>///</start>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="oneline-comment">
+ <!-- use the online-comment highlighter to detect directives -->
+ <start>#</start>
+ <lineBreakEscape>\</lineBreakEscape>
+ <style>directive</style>
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>f</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>auto</keyword>
+ <keyword>_Bool</keyword>
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>char</keyword>
+ <keyword>_Complex</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>default</keyword>
+ <keyword>do</keyword>
+ <keyword>double</keyword>
+ <keyword>else</keyword>
+ <keyword>enum</keyword>
+ <keyword>extern</keyword>
+ <keyword>float</keyword>
+ <keyword>for</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>_Imaginary</keyword>
+ <keyword>inline</keyword>
+ <keyword>int</keyword>
+ <keyword>long</keyword>
+ <keyword>register</keyword>
+ <keyword>restrict</keyword>
+ <keyword>return</keyword>
+ <keyword>short</keyword>
+ <keyword>signed</keyword>
+ <keyword>sizeof</keyword>
+ <keyword>static</keyword>
+ <keyword>struct</keyword>
+ <keyword>switch</keyword>
+ <keyword>typedef</keyword>
+ <keyword>union</keyword>
+ <keyword>unsigned</keyword>
+ <keyword>void</keyword>
+ <keyword>volatile</keyword>
+ <keyword>while</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl
new file mode 100644
index 0000000..e9b5650
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl
@@ -0,0 +1,120 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+
+ xmlns:s6hl="http://net.sf.xslthl/ConnectorSaxon6"
+ xmlns:sbhl="http://net.sf.xslthl/ConnectorSaxonB"
+ xmlns:xhl="http://net.sf.xslthl/ConnectorXalan"
+ xmlns:saxon6="http://icl.com/saxon"
+ xmlns:saxonb="http://saxon.sf.net/"
+ xmlns:xalan="http://xml.apache.org/xalan"
+
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:xslthl="http://xslthl.sf.net"
+ exclude-result-prefixes="exsl xslthl s6hl sbhl xhl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: common.xsl 8257 2009-02-20 04:40:16Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ and other information.
+
+ ******************************************************************** -->
+
+<!-- this construction is needed to have the saxon and xalan connectors working alongside each other -->
+<xalan:component prefix="xhl" functions="highlight">
+ <xalan:script lang="javaclass" src="xalan://net.sf.xslthl.ConnectorXalan" />
+</xalan:component>
+
+<!-- for saxon 6 -->
+<saxon6:script implements-prefix="s6hl" language="java" src="java:net.sf.xslthl.ConnectorSaxon6" />
+
+<!-- for saxon 8.5 and later -->
+<saxonb:script implements-prefix="sbhl" language="java" src="java:net.sf.xslthl.ConnectorSaxonB" />
+
+
+<!-- You can override this template to do more complex mapping of
+ language attribute to highlighter language ID (see xslthl-config.xml) -->
+<xsl:template name="language.to.xslthl">
+ <xsl:param name="context"/>
+
+ <xsl:choose>
+ <xsl:when test="$context/@language != ''">
+ <xsl:value-of select="$context/@language"/>
+ </xsl:when>
+ <xsl:when test="$highlight.default.language != ''">
+ <xsl:value-of select="$highlight.default.language"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="apply-highlighting">
+ <xsl:choose>
+ <!-- Do we want syntax highlighting -->
+ <xsl:when test="$highlight.source != 0">
+ <xsl:variable name="language">
+ <xsl:call-template name="language.to.xslthl">
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$language != ''">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="function-available('s6hl:highlight')">
+ <xsl:apply-templates select="s6hl:highlight($language, exsl:node-set($content), $highlight.xslthl.config)"
+ mode="xslthl"/>
+ </xsl:when>
+ <xsl:when test="function-available('sbhl:highlight')">
+ <xsl:apply-templates select="sbhl:highlight($language, exsl:node-set($content), $highlight.xslthl.config)"
+ mode="xslthl"/>
+ </xsl:when>
+ <xsl:when test="function-available('xhl:highlight')">
+ <xsl:apply-templates select="xhl:highlight($language, exsl:node-set($content), $highlight.xslthl.config)"
+ mode="xslthl"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- No syntax highlighting -->
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- A fallback when the specific style isn't recognized -->
+<xsl:template match="xslthl:*" mode="xslthl">
+ <xsl:message>
+ <xsl:text>unprocessed xslthl style: </xsl:text>
+ <xsl:value-of select="local-name(.)" />
+ </xsl:message>
+ <xsl:apply-templates mode="xslthl"/>
+</xsl:template>
+
+<!-- Copy over already produced markup (FO/HTML) -->
+<xsl:template match="node()" mode="xslthl" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="node()" mode="xslthl"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="*" mode="xslthl">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates select="node()" mode="xslthl"/>
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml
new file mode 100644
index 0000000..db57d5e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for C++
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/**</start>
+ <end>*/</end>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="oneline-comment">
+ <start>///</start>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="oneline-comment">
+ <!-- use the online-comment highlighter to detect directives -->
+ <start>#</start>
+ <lineBreakEscape>\</lineBreakEscape>
+ <style>directive</style>
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>f</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- C keywords -->
+ <keyword>auto</keyword>
+ <keyword>_Bool</keyword>
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>char</keyword>
+ <keyword>_Complex</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>default</keyword>
+ <keyword>do</keyword>
+ <keyword>double</keyword>
+ <keyword>else</keyword>
+ <keyword>enum</keyword>
+ <keyword>extern</keyword>
+ <keyword>float</keyword>
+ <keyword>for</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>_Imaginary</keyword>
+ <keyword>inline</keyword>
+ <keyword>int</keyword>
+ <keyword>long</keyword>
+ <keyword>register</keyword>
+ <keyword>restrict</keyword>
+ <keyword>return</keyword>
+ <keyword>short</keyword>
+ <keyword>signed</keyword>
+ <keyword>sizeof</keyword>
+ <keyword>static</keyword>
+ <keyword>struct</keyword>
+ <keyword>switch</keyword>
+ <keyword>typedef</keyword>
+ <keyword>union</keyword>
+ <keyword>unsigned</keyword>
+ <keyword>void</keyword>
+ <keyword>volatile</keyword>
+ <keyword>while</keyword>
+ <!-- C++ keywords -->
+ <keyword>asm</keyword>
+ <keyword>dynamic_cast</keyword>
+ <keyword>namespace</keyword>
+ <keyword>reinterpret_cast</keyword>
+ <keyword>try</keyword>
+ <keyword>bool</keyword>
+ <keyword>explicit</keyword>
+ <keyword>new</keyword>
+ <keyword>static_cast</keyword>
+ <keyword>typeid</keyword>
+ <keyword>catch</keyword>
+ <keyword>false</keyword>
+ <keyword>operator</keyword>
+ <keyword>template</keyword>
+ <keyword>typename</keyword>
+ <keyword>class</keyword>
+ <keyword>friend</keyword>
+ <keyword>private</keyword>
+ <keyword>this</keyword>
+ <keyword>using</keyword>
+ <keyword>const_cast</keyword>
+ <keyword>inline</keyword>
+ <keyword>public</keyword>
+ <keyword>throw</keyword>
+ <keyword>virtual</keyword>
+ <keyword>delete</keyword>
+ <keyword>mutable</keyword>
+ <keyword>protected</keyword>
+ <keyword>true</keyword>
+ <keyword>wchar_t</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml
new file mode 100644
index 0000000..99c2e3e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for C#
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/**</start>
+ <end>*/</end>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="oneline-comment">
+ <start>///</start>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="annotation">
+ <!-- annotations are called (custom) "attributes" in .NET -->
+ <start>[</start>
+ <end>]</end>
+ <valueStart>(</valueStart>
+ <valueEnd>)</valueEnd>
+ </highlighter>
+ <highlighter type="oneline-comment">
+ <!-- C# supports a couple of directives -->
+ <start>#</start>
+ <lineBreakEscape>\</lineBreakEscape>
+ <style>directive</style>
+ </highlighter>
+ <highlighter type="string">
+ <!-- strings starting with an "@" can span multiple lines -->
+ <string>@"</string>
+ <endString>"</endString>
+ <escape>\</escape>
+ <spanNewLines />
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>f</suffix>
+ <suffix>d</suffix>
+ <suffix>m</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>abstract</keyword>
+ <keyword>as</keyword>
+ <keyword>base</keyword>
+ <keyword>bool</keyword>
+ <keyword>break</keyword>
+ <keyword>byte</keyword>
+ <keyword>case</keyword>
+ <keyword>catch</keyword>
+ <keyword>char</keyword>
+ <keyword>checked</keyword>
+ <keyword>class</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>decimal</keyword>
+ <keyword>default</keyword>
+ <keyword>delegate</keyword>
+ <keyword>do</keyword>
+ <keyword>double</keyword>
+ <keyword>else</keyword>
+ <keyword>enum</keyword>
+ <keyword>event</keyword>
+ <keyword>explicit</keyword>
+ <keyword>extern</keyword>
+ <keyword>false</keyword>
+ <keyword>finally</keyword>
+ <keyword>fixed</keyword>
+ <keyword>float</keyword>
+ <keyword>for</keyword>
+ <keyword>foreach</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>implicit</keyword>
+ <keyword>in</keyword>
+ <keyword>int</keyword>
+ <keyword>interface</keyword>
+ <keyword>internal</keyword>
+ <keyword>is</keyword>
+ <keyword>lock</keyword>
+ <keyword>long</keyword>
+ <keyword>namespace</keyword>
+ <keyword>new</keyword>
+ <keyword>null</keyword>
+ <keyword>object</keyword>
+ <keyword>operator</keyword>
+ <keyword>out</keyword>
+ <keyword>override</keyword>
+ <keyword>params</keyword>
+ <keyword>private</keyword>
+ <keyword>protected</keyword>
+ <keyword>public</keyword>
+ <keyword>readonly</keyword>
+ <keyword>ref</keyword>
+ <keyword>return</keyword>
+ <keyword>sbyte</keyword>
+ <keyword>sealed</keyword>
+ <keyword>short</keyword>
+ <keyword>sizeof</keyword>
+ <keyword>stackalloc</keyword>
+ <keyword>static</keyword>
+ <keyword>string</keyword>
+ <keyword>struct</keyword>
+ <keyword>switch</keyword>
+ <keyword>this</keyword>
+ <keyword>throw</keyword>
+ <keyword>true</keyword>
+ <keyword>try</keyword>
+ <keyword>typeof</keyword>
+ <keyword>uint</keyword>
+ <keyword>ulong</keyword>
+ <keyword>unchecked</keyword>
+ <keyword>unsafe</keyword>
+ <keyword>ushort</keyword>
+ <keyword>using</keyword>
+ <keyword>virtual</keyword>
+ <keyword>void</keyword>
+ <keyword>volatile</keyword>
+ <keyword>while</keyword>
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- special words, not really keywords -->
+ <keyword>add</keyword>
+ <keyword>alias</keyword>
+ <keyword>get</keyword>
+ <keyword>global</keyword>
+ <keyword>partial</keyword>
+ <keyword>remove</keyword>
+ <keyword>set</keyword>
+ <keyword>value</keyword>
+ <keyword>where</keyword>
+ <keyword>yield</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml
new file mode 100644
index 0000000..d5b4d1a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for Delphi (also suitable for Pascal)
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <!-- multiline comments starting with an $ are directives -->
+ <start>{$</start>
+ <end>}</end>
+ <style>directive</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <!-- multiline comments starting with an $ are directives -->
+ <start>(*$</start>
+ <end>)</end>
+ <style>directive</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>{</start>
+ <end>}</end>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>(*</start>
+ <end>*)</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>#$</prefix>
+ <ignoreCase />
+ <style>string</style>
+ </highlighter>
+ <highlighter type="number">
+ <prefix>#</prefix>
+ <ignoreCase />
+ <style>string</style>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>$</prefix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- Reserved words -->
+ <keyword>and</keyword>
+ <keyword>else</keyword>
+ <keyword>inherited</keyword>
+ <keyword>packed</keyword>
+ <keyword>then</keyword>
+ <keyword>array</keyword>
+ <keyword>end</keyword>
+ <keyword>initialization</keyword>
+ <keyword>procedure</keyword>
+ <keyword>threadvar</keyword>
+ <keyword>as</keyword>
+ <keyword>except</keyword>
+ <keyword>inline</keyword>
+ <keyword>program</keyword>
+ <keyword>to</keyword>
+ <keyword>asm</keyword>
+ <keyword>exports</keyword>
+ <keyword>interface</keyword>
+ <keyword>property</keyword>
+ <keyword>try</keyword>
+ <keyword>begin</keyword>
+ <keyword>file</keyword>
+ <keyword>is</keyword>
+ <keyword>raise</keyword>
+ <keyword>type</keyword>
+ <keyword>case</keyword>
+ <keyword>final</keyword>
+ <keyword>label</keyword>
+ <keyword>record</keyword>
+ <keyword>unit</keyword>
+ <keyword>class</keyword>
+ <keyword>finalization</keyword>
+ <keyword>library</keyword>
+ <keyword>repeat</keyword>
+ <keyword>unsafe</keyword>
+ <keyword>const</keyword>
+ <keyword>finally</keyword>
+ <keyword>mod</keyword>
+ <keyword>resourcestring</keyword>
+ <keyword>until</keyword>
+ <keyword>constructor</keyword>
+ <keyword>for</keyword>
+ <keyword>nil</keyword>
+ <keyword>sealed</keyword>
+ <keyword>uses</keyword>
+ <keyword>destructor</keyword>
+ <keyword>function</keyword>
+ <keyword>not</keyword>
+ <keyword>set</keyword>
+ <keyword>var</keyword>
+ <keyword>dispinterface</keyword>
+ <keyword>goto</keyword>
+ <keyword>object</keyword>
+ <keyword>shl</keyword>
+ <keyword>while</keyword>
+ <keyword>div</keyword>
+ <keyword>if</keyword>
+ <keyword>of</keyword>
+ <keyword>shr</keyword>
+ <keyword>with</keyword>
+ <keyword>do</keyword>
+ <keyword>implementation</keyword>
+ <keyword>or</keyword>
+ <keyword>static</keyword>
+ <keyword>xor</keyword>
+ <keyword>downto</keyword>
+ <keyword>in</keyword>
+ <keyword>out</keyword>
+ <keyword>string</keyword>
+
+ <!-- Special meaning -->
+ <keyword>at</keyword>
+ <keyword>on</keyword>
+
+ <!-- Directives -->
+ <keyword>absolute</keyword>
+ <keyword>dynamic</keyword>
+ <keyword>local</keyword>
+ <keyword>platform</keyword>
+ <keyword>requires</keyword>
+ <keyword>abstract</keyword>
+ <keyword>export</keyword>
+ <keyword>message</keyword>
+ <keyword>private</keyword>
+ <keyword>resident</keyword>
+ <keyword>assembler</keyword>
+ <keyword>external</keyword>
+ <keyword>name</keyword>
+ <keyword>protected</keyword>
+ <keyword>safecall</keyword>
+ <keyword>automated</keyword>
+ <keyword>far</keyword>
+ <keyword>near</keyword>
+ <keyword>public</keyword>
+ <keyword>stdcall</keyword>
+ <keyword>cdecl</keyword>
+ <keyword>forward</keyword>
+ <keyword>nodefault</keyword>
+ <keyword>published</keyword>
+ <keyword>stored</keyword>
+ <keyword>contains</keyword>
+ <keyword>implements</keyword>
+ <keyword>overload</keyword>
+ <keyword>read</keyword>
+ <keyword>varargs</keyword>
+ <keyword>default</keyword>
+ <keyword>index</keyword>
+ <keyword>override</keyword>
+ <keyword>readonly</keyword>
+ <keyword>virtual</keyword>
+ <keyword>deprecated</keyword>
+ <keyword>inline</keyword>
+ <keyword>package</keyword>
+ <keyword>register</keyword>
+ <keyword>write</keyword>
+ <keyword>dispid</keyword>
+ <keyword>library</keyword>
+ <keyword>pascal</keyword>
+ <keyword>reintroduce</keyword>
+ <keyword>writeonly</keyword>
+ <ignoreCase />
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml
new file mode 100644
index 0000000..8a938f3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for ini files
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">;</highlighter>
+ <highlighter type="regex">
+ <!-- ini sections -->
+ <pattern>^(\[.+\]\s*)$</pattern>
+ <style>keyword</style>
+ <flags>MULTILINE</flags>
+ </highlighter>
+ <highlighter type="regex">
+ <!-- the keys in an ini section -->
+ <pattern>^(.+)(?==)</pattern>
+ <style>attribute</style>
+ <flags>MULTILINE</flags>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml
new file mode 100644
index 0000000..672d518
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for Java
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/**</start>
+ <end>*/</end>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="annotation">
+ <start>@</start>
+ <valueStart>(</valueStart>
+ <valueEnd>)</valueEnd>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <exponent>e</exponent>
+ <suffix>f</suffix>
+ <suffix>d</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>abstract</keyword>
+ <keyword>boolean</keyword>
+ <keyword>break</keyword>
+ <keyword>byte</keyword>
+ <keyword>case</keyword>
+ <keyword>catch</keyword>
+ <keyword>char</keyword>
+ <keyword>class</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>default</keyword>
+ <keyword>do</keyword>
+ <keyword>double</keyword>
+ <keyword>else</keyword>
+ <keyword>extends</keyword>
+ <keyword>final</keyword>
+ <keyword>finally</keyword>
+ <keyword>float</keyword>
+ <keyword>for</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>implements</keyword>
+ <keyword>import</keyword>
+ <keyword>instanceof</keyword>
+ <keyword>int</keyword>
+ <keyword>interface</keyword>
+ <keyword>long</keyword>
+ <keyword>native</keyword>
+ <keyword>new</keyword>
+ <keyword>package</keyword>
+ <keyword>private</keyword>
+ <keyword>protected</keyword>
+ <keyword>public</keyword>
+ <keyword>return</keyword>
+ <keyword>short</keyword>
+ <keyword>static</keyword>
+ <keyword>strictfp</keyword>
+ <keyword>super</keyword>
+ <keyword>switch</keyword>
+ <keyword>synchronized</keyword>
+ <keyword>this</keyword>
+ <keyword>throw</keyword>
+ <keyword>throws</keyword>
+ <keyword>transient</keyword>
+ <keyword>try</keyword>
+ <keyword>void</keyword>
+ <keyword>volatile</keyword>
+ <keyword>while</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml
new file mode 100644
index 0000000..08c90ba
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for JavaScript
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>catch</keyword>
+ <keyword>continue</keyword>
+ <keyword>default</keyword>
+ <keyword>delete</keyword>
+ <keyword>do</keyword>
+ <keyword>else</keyword>
+ <keyword>finally</keyword>
+ <keyword>for</keyword>
+ <keyword>function</keyword>
+ <keyword>if</keyword>
+ <keyword>in</keyword>
+ <keyword>instanceof</keyword>
+ <keyword>new</keyword>
+ <keyword>return</keyword>
+ <keyword>switch</keyword>
+ <keyword>this</keyword>
+ <keyword>throw</keyword>
+ <keyword>try</keyword>
+ <keyword>typeof</keyword>
+ <keyword>var</keyword>
+ <keyword>void</keyword>
+ <keyword>while</keyword>
+ <keyword>with</keyword>
+ <!-- future keywords -->
+ <keyword>abstract</keyword>
+ <keyword>boolean</keyword>
+ <keyword>byte</keyword>
+ <keyword>char</keyword>
+ <keyword>class</keyword>
+ <keyword>const</keyword>
+ <keyword>debugger</keyword>
+ <keyword>double</keyword>
+ <keyword>enum</keyword>
+ <keyword>export</keyword>
+ <keyword>extends</keyword>
+ <keyword>final</keyword>
+ <keyword>float</keyword>
+ <keyword>goto</keyword>
+ <keyword>implements</keyword>
+ <keyword>import</keyword>
+ <keyword>int</keyword>
+ <keyword>interface</keyword>
+ <keyword>long</keyword>
+ <keyword>native</keyword>
+ <keyword>package</keyword>
+ <keyword>private</keyword>
+ <keyword>protected</keyword>
+ <keyword>public</keyword>
+ <keyword>short</keyword>
+ <keyword>static</keyword>
+ <keyword>super</keyword>
+ <keyword>synchronized</keyword>
+ <keyword>throws</keyword>
+ <keyword>transient</keyword>
+ <keyword>volatile</keyword>
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>prototype</keyword>
+ <!-- Global Objects -->
+ <keyword>Array</keyword>
+ <keyword>Boolean</keyword>
+ <keyword>Date</keyword>
+ <keyword>Error</keyword>
+ <keyword>EvalError</keyword>
+ <keyword>Function</keyword>
+ <keyword>Math</keyword>
+ <keyword>Number</keyword>
+ <keyword>Object</keyword>
+ <keyword>RangeError</keyword>
+ <keyword>ReferenceError</keyword>
+ <keyword>RegExp</keyword>
+ <keyword>String</keyword>
+ <keyword>SyntaxError</keyword>
+ <keyword>TypeError</keyword>
+ <keyword>URIError</keyword>
+ <!-- Global functions -->
+ <keyword>decodeURI</keyword>
+ <keyword>decodeURIComponent</keyword>
+ <keyword>encodeURI</keyword>
+ <keyword>encodeURIComponent</keyword>
+ <keyword>eval</keyword>
+ <keyword>isFinite</keyword>
+ <keyword>isNaN</keyword>
+ <keyword>parseFloat</keyword>
+ <keyword>parseInt</keyword>
+ <!-- Global properties -->
+ <keyword>Infinity</keyword>
+ <keyword>NaN</keyword>
+ <keyword>undefined</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml
new file mode 100644
index 0000000..b145f74
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for Modulo-2
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="nested-multiline-comment">
+ <start>(*</start>
+ <end>*)</end>
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>and</keyword>
+ <keyword>array</keyword>
+ <keyword>begin</keyword>
+ <keyword>by</keyword>
+ <keyword>case</keyword>
+ <keyword>const</keyword>
+ <keyword>definition</keyword>
+ <keyword>div</keyword>
+ <keyword>do</keyword>
+ <keyword>else</keyword>
+ <keyword>elsif</keyword>
+ <keyword>end</keyword>
+ <keyword>exit</keyword>
+ <keyword>export</keyword>
+ <keyword>for</keyword>
+ <keyword>from</keyword>
+ <keyword>if</keyword>
+ <keyword>implementation</keyword>
+ <keyword>import</keyword>
+ <keyword>in</keyword>
+ <keyword>loop</keyword>
+ <keyword>mod</keyword>
+ <keyword>module</keyword>
+ <keyword>not</keyword>
+ <keyword>of</keyword>
+ <keyword>or</keyword>
+ <keyword>pointer</keyword>
+ <keyword>procedure</keyword>
+ <keyword>qualified</keyword>
+ <keyword>record</keyword>
+ <keyword>repeat</keyword>
+ <keyword>return</keyword>
+ <keyword>set</keyword>
+ <keyword>then</keyword>
+ <keyword>to</keyword>
+ <keyword>type</keyword>
+ <keyword>until</keyword>
+ <keyword>var</keyword>
+ <keyword>while</keyword>
+ <keyword>with</keyword>
+ <ignoreCase />
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml
new file mode 100644
index 0000000..afa4be7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml
@@ -0,0 +1,116 @@
+<?xml version='1.0'?>
+<!--
+
+ Bakalarska prace: Zvyraznovani syntaxe v XSLT
+ Michal Molhanec 2005
+
+ myxml-hl.xml - konfigurace zvyraznovace XML, ktera zvlast zvyrazni
+ HTML elementy a XSL elementy
+
+-->
+<highlighters>
+
+<wholehighlighter type='xml'>
+ <elementSet>
+ <style>html</style>
+ <element>A</element>
+ <element>ABBR</element>
+ <element>ACRONYM</element>
+ <element>ADDRESS</element>
+ <element>APPLET</element>
+ <element>AREA</element>
+ <element>B</element>
+ <element>BASE</element>
+ <element>BASEFONT</element>
+ <element>BDO</element>
+ <element>BIG</element>
+ <element>BLOCKQUOTE</element>
+ <element>BODY</element>
+ <element>BR</element>
+ <element>BUTTON</element>
+ <element>CAPTION</element>
+ <element>CENTER</element>
+ <element>CITE</element>
+ <element>CODE</element>
+ <element>COL</element>
+ <element>COLGROUP</element>
+ <element>DD</element>
+ <element>DEL</element>
+ <element>DFN</element>
+ <element>DIR</element>
+ <element>DIV</element>
+ <element>DL</element>
+ <element>DT</element>
+ <element>EM</element>
+ <element>FIELDSET</element>
+ <element>FONT</element>
+ <element>FORM</element>
+ <element>FRAME</element>
+ <element>FRAMESET</element>
+ <element>H1</element>
+ <element>H2</element>
+ <element>H3</element>
+ <element>H4</element>
+ <element>H5</element>
+ <element>H6</element>
+ <element>HEAD</element>
+ <element>HR</element>
+ <element>HTML</element>
+ <element>I</element>
+ <element>IFRAME</element>
+ <element>IMG</element>
+ <element>INPUT</element>
+ <element>INS</element>
+ <element>ISINDEX</element>
+ <element>KBD</element>
+ <element>LABEL</element>
+ <element>LEGEND</element>
+ <element>LI</element>
+ <element>LINK</element>
+ <element>MAP</element>
+ <element>MENU</element>
+ <element>META</element>
+ <element>NOFRAMES</element>
+ <element>NOSCRIPT</element>
+ <element>OBJECT</element>
+ <element>OL</element>
+ <element>OPTGROUP</element>
+ <element>OPTION</element>
+ <element>P</element>
+ <element>PARAM</element>
+ <element>PRE</element>
+ <element>Q</element>
+ <element>S</element>
+ <element>SAMP</element>
+ <element>SCRIPT</element>
+ <element>SELECT</element>
+ <element>SMALL</element>
+ <element>SPAN</element>
+ <element>STRIKE</element>
+ <element>STRONG</element>
+ <element>STYLE</element>
+ <element>SUB</element>
+ <element>SUP</element>
+ <element>TABLE</element>
+ <element>TBODY</element>
+ <element>TD</element>
+ <element>TEXTAREA</element>
+ <element>TFOOT</element>
+ <element>TH</element>
+ <element>THEAD</element>
+ <element>TITLE</element>
+ <element>TR</element>
+ <element>TT</element>
+ <element>U</element>
+ <element>UL</element>
+ <element>VAR</element>
+ <element>XMP</element>
+ <ignoreCase/>
+ </elementSet>
+ <elementPrefix>
+ <style>xslt</style>
+ <prefix>xsl:</prefix>
+ </elementPrefix>
+</wholehighlighter>
+
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml
new file mode 100644
index 0000000..da1924a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for Perl
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">#</highlighter>
+ <highlighter type="heredoc">
+ <start>&lt;&lt;</start>
+ <quote>'</quote>
+ <quote>"</quote>
+ <noWhiteSpace/>
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ <spanNewLines/>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>if</keyword>
+ <keyword>unless</keyword>
+ <keyword>while</keyword>
+ <keyword>until</keyword>
+ <keyword>foreach</keyword>
+ <keyword>else</keyword>
+ <keyword>elsif</keyword>
+ <keyword>for</keyword>
+ <keyword>when</keyword>
+ <keyword>default</keyword>
+ <keyword>given</keyword>
+ <!-- Keywords related to the control flow of your perl program -->
+ <keyword>caller</keyword>
+ <keyword>continue</keyword>
+ <keyword>die</keyword>
+ <keyword>do</keyword>
+ <keyword>dump</keyword>
+ <keyword>eval</keyword>
+ <keyword>exit</keyword>
+ <keyword>goto</keyword>
+ <keyword>last</keyword>
+ <keyword>next</keyword>
+ <keyword>redo</keyword>
+ <keyword>return</keyword>
+ <keyword>sub</keyword>
+ <keyword>wantarray</keyword>
+ <!-- Keywords related to scoping -->
+ <keyword>caller</keyword>
+ <keyword>import</keyword>
+ <keyword>local</keyword>
+ <keyword>my</keyword>
+ <keyword>package</keyword>
+ <keyword>use</keyword>
+ <!-- Keywords related to perl modules -->
+ <keyword>do</keyword>
+ <keyword>import</keyword>
+ <keyword>no</keyword>
+ <keyword>package</keyword>
+ <keyword>require</keyword>
+ <keyword>use</keyword>
+ <!-- Keywords related to classes and object-orientedness -->
+ <keyword>bless</keyword>
+ <keyword>dbmclose</keyword>
+ <keyword>dbmopen</keyword>
+ <keyword>package</keyword>
+ <keyword>ref</keyword>
+ <keyword>tie</keyword>
+ <keyword>tied</keyword>
+ <keyword>untie</keyword>
+ <keyword>use</keyword>
+ <!-- operators -->
+ <keyword>and</keyword>
+ <keyword>or</keyword>
+ <keyword>not</keyword>
+ <keyword>eq</keyword>
+ <keyword>ne</keyword>
+ <keyword>lt</keyword>
+ <keyword>gt</keyword>
+ <keyword>le</keyword>
+ <keyword>ge</keyword>
+ <keyword>cmp</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml
new file mode 100644
index 0000000..395453b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for PHP
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/**</start>
+ <end>*/</end>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="oneline-comment">
+ <start>///</start>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="oneline-comment">#</highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ <spanNewLines />
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ <spanNewLines />
+ </highlighter>
+ <highlighter type="heredoc">
+ <start>&lt;&lt;&lt;</start>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>and</keyword>
+ <keyword>or</keyword>
+ <keyword>xor</keyword>
+ <keyword>src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml</keyword>
+ <keyword>exception</keyword>
+ <keyword>__LINE__</keyword>
+ <keyword>array</keyword>
+ <keyword>as</keyword>
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>class</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>declare</keyword>
+ <keyword>default</keyword>
+ <keyword>die</keyword>
+ <keyword>do</keyword>
+ <keyword>echo</keyword>
+ <keyword>else</keyword>
+ <keyword>elseif</keyword>
+ <keyword>empty</keyword>
+ <keyword>enddeclare</keyword>
+ <keyword>endfor</keyword>
+ <keyword>endforeach</keyword>
+ <keyword>endif</keyword>
+ <keyword>endswitch</keyword>
+ <keyword>endwhile</keyword>
+ <keyword>eval</keyword>
+ <keyword>exit</keyword>
+ <keyword>extends</keyword>
+ <keyword>for</keyword>
+ <keyword>foreach</keyword>
+ <keyword>function</keyword>
+ <keyword>global</keyword>
+ <keyword>if</keyword>
+ <keyword>include</keyword>
+ <keyword>include_once</keyword>
+ <keyword>isset</keyword>
+ <keyword>list</keyword>
+ <keyword>new</keyword>
+ <keyword>print</keyword>
+ <keyword>require</keyword>
+ <keyword>require_once</keyword>
+ <keyword>return</keyword>
+ <keyword>static</keyword>
+ <keyword>switch</keyword>
+ <keyword>unset</keyword>
+ <keyword>use</keyword>
+ <keyword>var</keyword>
+ <keyword>while</keyword>
+ <keyword>__FUNCTION__</keyword>
+ <keyword>__CLASS__</keyword>
+ <keyword>__METHOD__</keyword>
+ <keyword>final</keyword>
+ <keyword>php_user_filter</keyword>
+ <keyword>interface</keyword>
+ <keyword>implements</keyword>
+ <keyword>extends</keyword>
+ <keyword>public</keyword>
+ <keyword>private</keyword>
+ <keyword>protected</keyword>
+ <keyword>abstract</keyword>
+ <keyword>clone</keyword>
+ <keyword>try</keyword>
+ <keyword>catch</keyword>
+ <keyword>throw</keyword>
+ <keyword>cfunction</keyword>
+ <keyword>old_function</keyword>
+ <keyword>true</keyword>
+ <keyword>false</keyword>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="word">
+ <!-- highlight the php open and close tags as directives -->
+ <word>?&gt;</word>
+ <word>&lt;?php</word>
+ <word>&lt;?=</word>
+ <style>directive</style>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml
new file mode 100644
index 0000000..791bc7a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for Python
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="annotation">
+ <!-- these are actually called decorators -->
+ <start>@</start>
+ <valueStart>(</valueStart>
+ <valueEnd>)</valueEnd>
+ </highlighter>
+ <highlighter type="oneline-comment">#</highlighter>
+ <highlighter type="string">
+ <string>"""</string>
+ <spanNewLines />
+ </highlighter>
+ <highlighter type="string">
+ <string>'''</string>
+ <spanNewLines />
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>and</keyword>
+ <keyword>del</keyword>
+ <keyword>from</keyword>
+ <keyword>not</keyword>
+ <keyword>while</keyword>
+ <keyword>as</keyword>
+ <keyword>elif</keyword>
+ <keyword>global</keyword>
+ <keyword>or</keyword>
+ <keyword>with</keyword>
+ <keyword>assert</keyword>
+ <keyword>else</keyword>
+ <keyword>if</keyword>
+ <keyword>pass</keyword>
+ <keyword>yield</keyword>
+ <keyword>break</keyword>
+ <keyword>except</keyword>
+ <keyword>import</keyword>
+ <keyword>print</keyword>
+ <keyword>class</keyword>
+ <keyword>exec</keyword>
+ <keyword>in</keyword>
+ <keyword>raise</keyword>
+ <keyword>continue</keyword>
+ <keyword>finally</keyword>
+ <keyword>is</keyword>
+ <keyword>return</keyword>
+ <keyword>def</keyword>
+ <keyword>for</keyword>
+ <keyword>lambda</keyword>
+ <keyword>try</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml
new file mode 100644
index 0000000..78189b0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for Ruby
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">#</highlighter>
+ <highlighter type="heredoc">
+ <start>&lt;&lt;</start>
+ <noWhiteSpace/>
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>%Q{</string>
+ <endString>}</endString>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>%/</string>
+ <endString>/</endString>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>%q{</string>
+ <endString>}</endString>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>alias</keyword>
+ <keyword>and</keyword>
+ <keyword>BEGIN</keyword>
+ <keyword>begin</keyword>
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>class</keyword>
+ <keyword>def</keyword>
+ <keyword>defined</keyword>
+ <keyword>do</keyword>
+ <keyword>else</keyword>
+ <keyword>elsif</keyword>
+ <keyword>END</keyword>
+ <keyword>end</keyword>
+ <keyword>ensure</keyword>
+ <keyword>false</keyword>
+ <keyword>for</keyword>
+ <keyword>if</keyword>
+ <keyword>in</keyword>
+ <keyword>module</keyword>
+ <keyword>next</keyword>
+ <keyword>nil</keyword>
+ <keyword>not</keyword>
+ <keyword>or</keyword>
+ <keyword>redo</keyword>
+ <keyword>rescue</keyword>
+ <keyword>retry</keyword>
+ <keyword>return</keyword>
+ <keyword>self</keyword>
+ <keyword>super</keyword>
+ <keyword>then</keyword>
+ <keyword>true</keyword>
+ <keyword>undef</keyword>
+ <keyword>unless</keyword>
+ <keyword>until</keyword>
+ <keyword>when</keyword>
+ <keyword>while</keyword>
+ <keyword>yield</keyword>
+ </highlighter>
+</highlighters> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml
new file mode 100644
index 0000000..7a8fa9f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+xslthl highlighter definition fof Tcl/Tk.
+written by Arndt Roger Schneider
+
+Copyright 2008 Arndt Roger Schneider
+License: xlib/libpng
+
+This software is provided "as-is", without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">#</highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="regex">
+ <pattern>-[\p{javaJavaIdentifierStart}][\p{javaJavaIdentifierPart}]+
+ </pattern>
+ <style>none</style>
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- Tcl and itcl / structural -->
+ <keyword>if</keyword>
+ <keyword>then</keyword>
+ <keyword>else</keyword>
+ <keyword>elseif</keyword>
+ <keyword>for</keyword>
+ <keyword>foreach</keyword>
+ <keyword>break</keyword>
+ <keyword>continue</keyword>
+ <keyword>while</keyword>
+ <keyword>eval</keyword>
+ <keyword>case</keyword>
+ <keyword>in</keyword>
+ <keyword>switch</keyword>
+ <keyword>default</keyword>
+ <keyword>exit</keyword>
+ <keyword>error</keyword>
+ <keyword>proc</keyword>
+ <keyword>rename</keyword>
+ <keyword>exec</keyword>
+ <keyword>return</keyword>
+ <keyword>uplevel</keyword>
+ <keyword>upvar</keyword>
+ <keyword>constructor</keyword>
+ <keyword>destructor</keyword>
+ <keyword>itcl_class</keyword>
+ <keyword>loop</keyword>
+ <keyword>for_array_keys</keyword>
+ <keyword>for_recursive_glob</keyword>
+ <keyword>for_file</keyword>
+ <keyword>method</keyword>
+ <keyword>body</keyword>
+ <keyword>configbody</keyword>
+ <keyword>catch</keyword>
+ <keyword>namespace</keyword>
+ <keyword>class</keyword>
+ <keyword>array</keyword>
+ <keyword>set</keyword>
+ <keyword>unset</keyword>
+ <keyword>package</keyword>
+ <keyword>source</keyword>
+
+ <!-- Additional commands -->
+ <keyword>subst</keyword>
+ <keyword>list</keyword>
+ <keyword>format</keyword>
+ <keyword>lappend</keyword>
+ <keyword>option</keyword>
+ <keyword>expr</keyword>
+ <keyword>puts</keyword>
+ <keyword>winfo</keyword>
+ <keyword>lindex</keyword>
+ <keyword>string</keyword>
+
+
+ <!-- Runtime Library / structural -->
+ <keyword>verified</keyword>
+ <keyword>seteach</keyword>
+ <keyword>fixme</keyword>
+ <keyword>debug</keyword>
+ <keyword>rtl::debug</keyword>
+ <keyword>rtl::verified</keyword>
+ <keyword>rtl::template</keyword>
+ <keyword>rtl::seteach</keyword>
+
+ <!-- Runtime Library / Additional -->
+ <keyword>mkProc</keyword>
+ <keyword>getCreator</keyword>
+ <keyword>properties</keyword>
+ <keyword>lappendunique</keyword>
+ <keyword>rtl::lappendunique</keyword>
+
+ <!-- geometry managers from Tk -->
+ <keyword>place</keyword>
+ <keyword>pack</keyword>
+ <keyword>grid</keyword>
+
+
+ <!-- Additional Tk stuff -->
+ <keyword>image</keyword>
+ <keyword>font</keyword>
+ <keyword>focus</keyword>
+ <keyword>tk</keyword>
+ <keyword>bind</keyword>
+ <keyword>after</keyword>
+
+ <!-- Window classes from Tk, ... -->
+ <keyword>toplevel</keyword>
+ <keyword>frame</keyword>
+ <keyword>entry</keyword>
+ <keyword>listbox</keyword>
+ <keyword>button</keyword>
+ <keyword>radiobutton</keyword>
+ <keyword>checkbutton</keyword>
+ <keyword>canvas</keyword>
+ <keyword>menu</keyword>
+ <keyword>menubutton</keyword>
+ <keyword>text</keyword>
+ <keyword>label</keyword>
+ <keyword>message</keyword>
+ <!--
+ The rest of Tk's windows is omitted: scrollbar, scale, panedwindow, labelframe, spinbox ...
+ -->
+
+ <!-- ... from tkZinc, ... -->
+ <keyword>zinc</keyword>
+
+ <!-- ... from tkpath, ... -->
+ <keyword>tkpath::gradient</keyword>
+
+ <!-- ... from Runtime Library, ... -->
+ <keyword>rtl_combobox</keyword>
+ <keyword>rtl_tree</keyword>
+ <keyword>rtl_tabset</keyword>
+ <keyword>rtl_mlistbox</keyword>
+ <keyword>rtl_gridwin</keyword>
+ <keyword>rtlysizer</keyword>
+ <keyword>rtlxsizer</keyword>
+ <!--
+ The rest of RTL's windows is omitted: spinbox, decoratedframe, symbolbar, symbolbarcustomize, question ...
+ -->
+
+ <!-- ... from GEI, ... -->
+ <keyword>goolbar</keyword>
+ <keyword>gstripes</keyword>
+ <keyword>zoolbar</keyword>
+ <keyword>gistbox</keyword>
+ <keyword>gooleditor</keyword>
+ <keyword>galette</keyword>
+ </highlighter>
+</highlighters>
+ <!--
+ Local Variables: mode: sgml coding: utf-8-unix sgml-indent-step: 2 sgml-indent-data: t sgml-set-face: t
+ sgml-insert-missing-element-comment: nil End:
+ --> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml
new file mode 100644
index 0000000..b24e469
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+-->
+<xslthl-config>
+ <highlighter id="java" file="java-hl.xml" />
+ <highlighter id="delphi" file="delphi-hl.xml" />
+ <highlighter id="pascal" file="delphi-hl.xml" />
+ <highlighter id="ini" file="ini-hl.xml" />
+ <highlighter id="php" file="php-hl.xml" />
+ <highlighter id="myxml" file="myxml-hl.xml" />
+ <highlighter id="m2" file="m2-hl.xml" />
+ <highlighter id="tcl" file="tcl-hl.xml" />
+ <highlighter id="c" file="c-hl.xml" />
+ <highlighter id="cpp" file="cpp-hl.xml" />
+ <highlighter id="csharp" file="csharp-hl.xml" />
+ <highlighter id="python" file="python-hl.xml" />
+ <highlighter id="ruby" file="ruby-hl.xml" />
+ <highlighter id="perl" file="perl-hl.xml" />
+ <highlighter id="javascript" file="javascript-hl.xml" />
+ <namespace prefix="xslthl" uri="http://xslthl.sf.net" />
+</xslthl-config> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl
new file mode 100644
index 0000000..3d1462d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl
@@ -0,0 +1,134 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: admon.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="*" mode="admon.graphic.width">
+ <xsl:param name="node" select="."/>
+ <xsl:text>25</xsl:text>
+</xsl:template>
+
+<xsl:template match="note|important|warning|caution|tip">
+ <xsl:choose>
+ <xsl:when test="$admon.graphics != 0">
+ <xsl:call-template name="graphical.admonition"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="nongraphical.admonition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+ <xsl:value-of select="$admon.graphics.path"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='note'">note</xsl:when>
+ <xsl:when test="local-name($node)='warning'">warning</xsl:when>
+ <xsl:when test="local-name($node)='caution'">caution</xsl:when>
+ <xsl:when test="local-name($node)='tip'">tip</xsl:when>
+ <xsl:when test="local-name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$admon.graphics.extension"/>
+</xsl:template>
+
+<xsl:template name="graphical.admonition">
+ <xsl:variable name="admon.type">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:otherwise>Note</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="alt">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$admon.type"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$admon.style != ''">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$admon.type"/>
+ <xsl:if test="title|info/title">
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="(title|info/title)[1]"/>
+ </xsl:if>
+ </xsl:attribute>
+ <tr>
+ <td rowspan="2" align="center" valign="top">
+ <xsl:attribute name="width">
+ <xsl:apply-templates select="." mode="admon.graphic.width"/>
+ </xsl:attribute>
+ <img alt="[{$alt}]">
+ <xsl:attribute name="src">
+ <xsl:call-template name="admon.graphic"/>
+ </xsl:attribute>
+ </img>
+ </td>
+ <th align="{$direction.align.start}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:if>
+ </th>
+ </tr>
+ <tr>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="nongraphical.admonition">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$admon.style">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <h3 class="title">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h3>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="note/title"></xsl:template>
+<xsl:template match="important/title"></xsl:template>
+<xsl:template match="warning/title"></xsl:template>
+<xsl:template match="caution/title"></xsl:template>
+<xsl:template match="tip/title"></xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl
new file mode 100644
index 0000000..f010632
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl
@@ -0,0 +1,169 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<xsl:template name="add.annotation.links">
+ <xsl:param name="scripts" select="normalize-space($annotation.js)"/>
+ <xsl:choose>
+ <xsl:when test="contains($scripts, ' ')">
+ <script type="text/javascript" src="{substring-before($scripts, ' ')}"/>
+ <xsl:call-template name="add.annotation.links">
+ <xsl:with-param name="scripts" select="substring-after($scripts, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <script type="text/javascript" src="{$scripts}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation"/>
+
+<xsl:template name="apply-annotations">
+ <xsl:if test="$annotation.support != 0">
+ <!-- do any annotations apply to the context node? -->
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+
+ <xsl:variable name="aids">
+ <xsl:for-each select="//annotation">
+ <xsl:if test="@annotates=$id
+ or starts-with(@annotates, concat($id, ' '))
+ or contains(@annotates, concat(' ', $id, ' '))
+ or substring(@annotates, string-length(@annotates)-3)
+ = concat(' ', $id)">
+ <xsl:value-of select="generate-id()"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="normalize-space(@annotations) != ''">
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations"
+ select="normalize-space(@annotations)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$aids != ''">
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids" select="normalize-space($aids)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="annotations-pointed-to">
+ <xsl:param name="annotations"/>
+ <xsl:choose>
+ <xsl:when test="contains($annotations, ' ')">
+ <xsl:variable name='a'
+ select="key('id', substring-before($annotations, ' '))"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations"
+ select="substring-after($annotations, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name='a'
+ select="key('id', $annotations)"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="apply-annotations-by-gid">
+ <xsl:param name="gids"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($gids, ' ')">
+ <xsl:variable name="gid" select="substring-before($gids, ' ')"/>
+ <xsl:apply-templates select="key('gid', $gid)"
+ mode="annotation-inline"/>
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids"
+ select="substring-after($gids, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="key('gid', $gids)"
+ mode="annotation-inline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-inline">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a href="#annot-{generate-id(.)}" title="{$title}"
+ name="anch-{generate-id(.)}" id="anch-{generate-id(.)}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="onClick">
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.showPopup('anch-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>'); return false;</xsl:text>
+ </xsl:attribute>
+ <img src="{$annotation.graphic.open}" border="0" alt="{$title}"/>
+ </a>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-popup">
+ <div class="annotation-nocss">
+ <p>
+ <a name="annot-{generate-id(.)}"/>
+ <xsl:text>Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>:</xsl:text>
+ </p>
+ </div>
+
+ <div id="popup-{generate-id(.)}" class="annotation-popup">
+ <xsl:if test="string-length(.) &gt; 300">
+ <xsl:attribute name="style">width:400px</xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="annotation-title"/>
+ <div class="annotation-body">
+ <xsl:apply-templates select="*[local-name(.) != 'title']"/>
+ </div>
+ <div class="annotation-close">
+ <a href="#" onclick="popup_{generate-id(.)}.hidePopup();return false;">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <img src="{$annotation.graphic.close}" alt="X" border="0"/>
+ </a>
+ </div>
+ </div>
+</xsl:template>
+
+<xsl:template name="annotation-title">
+ <div class="annotation-title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Annotation</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl
new file mode 100644
index 0000000..f67b1f6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl
@@ -0,0 +1,165 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+
+<!-- Documents using the kimber index method must have a lang attribute -->
+<!-- Only one of these should be present in the entity -->
+<!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'>
+
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService"
+ exclude-result-prefixes="k"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kimber.xsl 8729 2010-07-15 16:43:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+<!-- ==================================================================== -->
+<!-- *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 *** -->
+<!-- ==================================================================== -->
+
+
+<xsl:include href="../common/autoidx-kimber.xsl"/>
+
+<!-- Java sort apparently works only on lang part, not country -->
+<xsl:param name="sort.lang">
+ <xsl:choose>
+ <xsl:when test="contains(&lang;, '-')">
+ <xsl:value-of select="substring-before(&lang;, '-')"/>
+ </xsl:when>
+ <xsl:when test="contains(&lang;, '_')">
+ <xsl:value-of select="substring-before(&lang;, '_')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="&lang;"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('k:getIndexGroupKey'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Innodata Isogen &#x0A;Java extensions for </xsl:text>
+ <xsl:text>internationalized indexes. &#x0A;Install those </xsl:text>
+ <xsl:text>extensions, or use a different index method.&#x0A;</xsl:text>
+ <xsl:text>For more information, see:&#x0A;</xsl:text>
+ <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm[count(.|key('k-group', k:getIndexGroupKey(&lang;, &primary;))[&scope;][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical"
+ select="$terms[not(starts-with(
+ k:getIndexGroupKey(&lang;, &primary;),
+ '#NUMERIC'
+ ))]"/>
+
+ <xsl:variable name="others"
+ select="$terms[starts-with(
+ k:getIndexGroupKey(&lang;, &primary;),
+ '#NUMERIC'
+ )]"/>
+
+ <div class="index">
+ <xsl:if test="$others">
+ <div class="indexdev">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others"
+ mode="index-symbol-div">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}"
+ select="k:getIndexGroupSortKey(&lang;,
+ k:getIndexGroupKey(&lang;, &primary;))"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical"
+ mode="index-div-kimber">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}"
+ select="k:getIndexGroupSortKey(&lang;,
+ k:getIndexGroupKey(&lang;, &primary;))"/>
+ </xsl:apply-templates>
+ </div>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kimber">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="k:getIndexGroupKey(&lang;, &primary;)"/>
+
+ <xsl:variable name="label"
+ select="k:getIndexGroupLabel(&lang;, $key)"/>
+
+ <xsl:if test="key('k-group', $label)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="$label"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('k-group', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;]
+ [1])=1]"
+ mode="index-primary">
+ <xsl:sort select="&primary;" lang="{$sort.lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl
new file mode 100644
index 0000000..d03ff4f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl
@@ -0,0 +1,120 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:i="urn:cz-kosek:functions:index"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ xmlns:func="http://exslt.org/functions"
+ xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService"
+ xmlns:exslt="http://exslt.org/common"
+ extension-element-prefixes="func exslt"
+ exclude-result-prefixes="func exslt i l k"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kosek.xsl 8725 2010-07-15 08:08:04Z kosek $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+
+<xsl:include href="../common/autoidx-kosek.xsl"/>
+
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="contains($vendor, 'Saxonica')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('i:group-index'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the&#xA;</xsl:text>
+ <xsl:text>index extension functions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="common/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm[count(.|key('group-code', i:group-index(&primary;))[&scope;][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <div class="index">
+ <xsl:apply-templates select="$terms" mode="index-div-kosek">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="i:group-index(&primary;)" data-type="number"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kosek">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="i:group-index(&primary;)"/>
+
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:if test="key('group-code', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="i:group-letter($key)"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('group-code', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1])=1]"
+ mode="index-primary">
+ <xsl:sort select="&primary;" lang="{$lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl
new file mode 100644
index 0000000..9407b5c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-ng.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- You should have this directly in your customization file. -->
+<!-- This file is there only to retain backward compatibility. -->
+<xsl:import href="autoidx-kosek.xsl"/>
+<xsl:param name="index.method">kosek</xsl:param>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl
new file mode 100644
index 0000000..7268fcd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl
@@ -0,0 +1,739 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exslt="http://exslt.org/common"
+ extension-element-prefixes="exslt"
+ exclude-result-prefixes="exslt"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx.xsl 8516 2009-08-12 02:54:56Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "basic" method derived from Jeni Tennison's work. -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+
+<xsl:variable name="kimber.imported" select="0"/>
+<xsl:variable name="kosek.imported" select="0"/>
+
+<xsl:key name="letter"
+ match="indexterm"
+ use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
+
+<xsl:key name="primary"
+ match="indexterm"
+ use="&primary;"/>
+
+<xsl:key name="secondary"
+ match="indexterm"
+ use="concat(&primary;, &sep;, &secondary;)"/>
+
+<xsl:key name="tertiary"
+ match="indexterm"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
+
+<xsl:key name="endofrange"
+ match="indexterm[@class='endofrange']"
+ use="@startref"/>
+
+<xsl:key name="primary-section"
+ match="indexterm[not(secondary) and not(see)]"
+ use="concat(&primary;, &sep;, &section.id;)"/>
+
+<xsl:key name="secondary-section"
+ match="indexterm[not(tertiary) and not(see)]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &section.id;)"/>
+
+<xsl:key name="tertiary-section"
+ match="indexterm[not(see)]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, &section.id;)"/>
+
+<xsl:key name="see-also"
+ match="indexterm[seealso]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso)"/>
+
+<xsl:key name="see"
+ match="indexterm[see]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see)"/>
+
+<xsl:key name="sections" match="*[@id or @xml:id]" use="@id|@xml:id"/>
+
+
+<xsl:template name="generate-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$index.method = 'kosek'">
+ <xsl:call-template name="generate-kosek-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$index.method = 'kimber'">
+ <xsl:call-template name="generate-kimber-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="generate-basic-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate-basic-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm
+ [count(.|key('letter',
+ translate(substring(&primary;, 1, 1),
+ &lowercase;,
+ &uppercase;))
+ [&scope;][1]) = 1
+ and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical"
+ select="$terms[contains(concat(&lowercase;, &uppercase;),
+ substring(&primary;, 1, 1))]"/>
+
+ <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;,
+ &uppercase;),
+ substring(&primary;, 1, 1)))]"/>
+ <div class="index">
+ <xsl:if test="$others">
+ <xsl:choose>
+ <xsl:when test="normalize-space($type) != '' and
+ $others[@type = $type][count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others[count(.|key('primary', &primary;)[&scope;][1]) = 1]"
+ mode="index-symbol-div">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:when>
+ <xsl:when test="normalize-space($type) != ''">
+ <!-- Output nothing, as there isn't a match for $other using this $type -->
+ </xsl:when>
+ <xsl:otherwise>
+ <div class="indexdiv">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others[count(.|key('primary',
+ &primary;)[&scope;][1]) = 1]"
+ mode="index-symbol-div">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical[count(.|key('letter',
+ translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;))[&scope;][1]) = 1]"
+ mode="index-div-basic">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kosek.xsl is imported -->
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kosek.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the&#xA;</xsl:text>
+ <xsl:text>kosek index extensions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kimber.xsl is imported -->
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kimber.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the&#xA;</xsl:text>
+ <xsl:text>kimber index extensions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kimber.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-basic">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;)"/>
+
+ <xsl:if test="key('letter', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <div class="indexdiv">
+ <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)">
+ <h3>
+ <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/>
+ </h3>
+ </xsl:if>
+ <dl>
+ <xsl:apply-templates select="key('letter', $key)[&scope;]
+ [count(.|key('primary', &primary;)
+ [&scope;][1])=1]"
+ mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-symbol-div">
+ <xsl:param name="scope" select="/"/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;)"/>
+
+ <xsl:apply-templates select="key('letter', $key)
+ [&scope;][count(.|key('primary', &primary;)[1]) = 1]"
+ mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-primary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="&primary;"/>
+ <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/>
+ <dt>
+ <xsl:for-each select="$refs/primary">
+ <xsl:if test="@id or @xml:id">
+ <a name="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="primary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('primary-section', concat($key, &sep;, &section.id;))[&scope;][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[&scope;]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(secondary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"
+ mode="index-secondary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-secondary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/>
+ <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/>
+ <dt>
+ <xsl:for-each select="$refs/secondary">
+ <xsl:if test="@id or @xml:id">
+ <a name="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="secondary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('secondary-section', concat($key, &sep;, &section.id;))[&scope;][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[&scope;]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(tertiary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"
+ mode="index-tertiary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-tertiary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
+ <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/>
+ <dt>
+ <xsl:for-each select="$refs/tertiary">
+ <xsl:if test="@id or @xml:id">
+ <a name="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="tertiary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('tertiary-section', concat($key, &sep;, &section.id;))[&scope;][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[&scope;]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs/see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/seealso">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="position"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$position = 1">
+ <xsl:value-of select="$term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$number.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="@zone and string(@zone)">
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="normalize-space(@zone)"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="&section;/titleabbrev and $index.prefer.titleabbrev != 0">
+ <xsl:apply-templates select="&section;" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="&section;" mode="title.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="&section;"/>
+ <xsl:with-param name="context" select="//index[&scope;][1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="."/>
+ <xsl:with-param name="context" select="//index[&scope;][1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:attribute>
+
+ <xsl:value-of select="$title"/> <!-- text only -->
+ </a>
+
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:if test="key('endofrange', $id)[&scope;]">
+ <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]"
+ mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="separator" select="$range.separator"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="zones"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($zones, ' ')">
+ <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[&scope;][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="zone" select="$zones"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[&scope;][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-see">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="see"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-seealso">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:for-each select="seealso">
+ <xsl:sort select="translate(., &lowercase;, &uppercase;)"/>
+ <dt>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>)</xsl:text>
+ </dt>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="*" mode="index-title-content">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="&section;" mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template name="index.separator">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$key = 'index.term.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.term.separator != ''">
+ <xsl:copy-of select="$index.term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">term-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.number.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.number.separator != ''">
+ <xsl:copy-of select="$index.number.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">number-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.range.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.range.separator != ''">
+ <xsl:copy-of select="$index.range.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">range-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl
new file mode 100644
index 0000000..0859b49
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl
@@ -0,0 +1,707 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: autotoc.xsl 8558 2009-12-11 00:33:17Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="toc.listitem.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dt</xsl:when>
+ <xsl:otherwise>li</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<!-- this is just hack because dl and ul aren't completely isomorphic -->
+<xsl:variable name="toc.dd.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dd</xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:template name="make.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="toc.title">
+ <xsl:if test="$toc.title.p">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="toc-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </b>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$manual.toc != ''">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="toc" select="document($manual.toc, .)"/>
+ <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
+ <xsl:if test="$tocentry and $tocentry/*">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:if test="$nodes.plus">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="$nodes.plus" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$nodes">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="set.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="book|setindex"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="division.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="part|reference
+ |preface|chapter|appendix
+ |article
+ |bibliography|glossary|index
+ |refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="section|sect1
+ |simplesect[$simplesect.in.toc != 0]
+ |refentry
+ |article|bibliography|glossary
+ |appendix|index
+ |bridgehead[not(@renderas)
+ and $bridgehead.in.toc != 0]
+ |.//bridgehead[@renderas='sect1'
+ and $bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc.separator">
+ <!-- Customize to output something between
+ component.toc and first output -->
+</xsl:template>
+
+<xsl:template name="section.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes"
+ select="section|sect1|sect2|sect3|sect4|sect5|refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="section.toc.separator">
+ <!-- Customize to output something between
+ section.toc and first output -->
+</xsl:template>
+<!-- ==================================================================== -->
+
+<xsl:template name="subtoc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="subtoc">
+ <xsl:element name="{$toc.list.type}">
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:apply-templates mode="toc" select="$nodes.plus">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="toc" select="$nodes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'section'">
+ <xsl:value-of select="count(ancestor::section) + 1"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'sect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'sect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'sect4'">4</xsl:when>
+ <xsl:when test="local-name(.) = 'sect5'">5</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'simplesect'">
+ <!-- sigh... -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'section'">
+ <xsl:value-of select="count(ancestor::section)"/>
+ </xsl:when>
+ <xsl:when test="local-name(..) = 'sect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'sect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'sect3'">4</xsl:when>
+ <xsl:when test="local-name(..) = 'sect4'">5</xsl:when>
+ <xsl:when test="local-name(..) = 'sect5'">6</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect3'">4</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="subtoc.list">
+ <xsl:choose>
+ <xsl:when test="$toc.dd.type = ''">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.dd.type}">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ <xsl:if test="$toc.listitem.type = 'li'
+ and $toc.section.depth > $depth and
+ ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or
+ ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) )
+ and $toc.max.depth > $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+ </xsl:element>
+ <xsl:if test="$toc.listitem.type != 'li'
+ and $toc.section.depth > $depth and
+ ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or
+ ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) )
+ and $toc.max.depth > $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc.line">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="depth" select="1"/>
+ <xsl:param name="depth.from.context" select="8"/>
+
+ <span>
+ <xsl:attribute name="class"><xsl:value-of select="local-name(.)"/></xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is zero, then output the label -->
+ <!-- * before the hyperlinked title (as the DSSSL stylesheet does) -->
+ <xsl:if test="$autotoc.label.in.hyperlink = 0">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$toc-context"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is non-zero, then output the label -->
+ <!-- * as part of the hyperlinked title -->
+ <xsl:if test="not($autotoc.label.in.hyperlink = 0)">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </span>
+</xsl:template>
+
+<xsl:template match="book" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="part|reference
+ |preface|chapter|appendix
+ |article
+ |bibliography|glossary|index
+ |refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="setindex" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the setindex tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="appendix|chapter|article
+ |index|glossary|bibliography
+ |preface|reference|refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix|article" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section|sect1
+ |simplesect[$simplesect.in.toc != 0]
+ |refentry
+ |glossary|bibliography|index
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect1" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect2
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect2" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect3
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect3" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect4
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect4" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect5
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect5" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="simplesect" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section|refentry
+ |simplesect[$simplesect.in.toc != 0]
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:if test="$bridgehead.in.toc != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="bibliography|glossary" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="index" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the index tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="refmeta" select=".//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select=".//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]"
+ mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc"
+ mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]"
+ mode="titleabbrev.markup"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <span class='refentrytitle'>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:copy-of select="$title"/>
+ </a>
+ </span>
+ <span class='refpurpose'>
+ <xsl:if test="$annotate.toc != 0">
+ <!-- * DocBook 5 says inlinemediaobject (among other things) -->
+ <!-- * is allowed in refpurpose; so we need to run -->
+ <!-- * apply-templates on refpurpose here, instead of value-of -->
+ <xsl:apply-templates select="refnamediv/refpurpose"/>
+ </xsl:if>
+ </span>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="title" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template name="manual-toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="tocentry"/>
+
+ <!-- be careful, we don't want to change the current document to the other tree! -->
+
+ <xsl:if test="$tocentry">
+ <xsl:variable name="node" select="key('id', $tocentry/@linkend)"/>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="$node" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$node"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+
+ <xsl:if test="$tocentry/*">
+ <xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="$tocentry/following-sibling::*">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/following-sibling::*[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="list.of.titles">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="titles" select="'table'"/>
+ <xsl:param name="nodes" select=".//table"/>
+
+ <xsl:if test="$nodes">
+ <div class="list-of-{$titles}s">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="toc-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">ListofTables</xsl:when>
+ <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+ <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">ListofTables</xsl:when>
+ <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+ <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </b>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example|equation|procedure" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+</xsl:template>
+
+<!-- Used only if qanda.in.toc parameter is non-zero -->
+<xsl:template match="qandaset" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="qandadiv | qandaentry"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="qandadiv|qandaentry" mode="toc">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl
new file mode 100644
index 0000000..d420bec
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 6402 2006-11-12 08:23:21Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ The original code for processing bibliography in ISO690 style
+ was provided by Jana Dvorakova <jana4u@seznam.cz>
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep -->
+<xsl:param name="biblioentry.alt.primary.seps" select="0"/>
+
+<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 -->
+<xsl:param name="biblioentry.primary.count" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="iso690.makecitation">
+<!-- Types of resources -->
+ <xsl:choose>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM -->
+ <!-- same as Monographs -->
+ <xsl:when test="./@role='messagesystem'">
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:when>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES -->
+ <!-- same as Contributions to Monographs -->
+ <xsl:when test="./@role='message'">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- SERIALS -->
+ <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn">
+ <xsl:call-template name="iso690.serial"/>
+ </xsl:when>
+
+ <!-- PARTS OF MONOGRAPHS -->
+ <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])">
+ <xsl:call-template name="iso690.monogr.part"/>
+ </xsl:when>
+
+ <!-- CONTRIBUTIONS TO MONOGRAPHS -->
+ <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- ARTICLES, ETC., IN SERIALS -->
+ <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')">
+ <xsl:call-template name="iso690.article"/>
+ </xsl:when>
+
+ <!-- PATENT DOCUMENTS -->
+ <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])">
+ <xsl:call-template name="iso690.patent"/>
+ </xsl:when>
+
+ <!-- MONOGRAPHS -->
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- MONOGRAPHS -->
+<xsl:template name="iso690.monogr">
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Extent -->
+ <xsl:call-template name="iso690.extent"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.isbn"/>
+</xsl:template>
+
+<!-- SERIALS -->
+<xsl:template name="iso690.serial">
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Responsibility [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/>
+ </xsl:call-template>
+ <!-- Issue designation (date and/or num) [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.issuing"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.issn"/>
+</xsl:template>
+
+<!-- PARTS OF MONOGRAPHS -->
+<xsl:template name="iso690.monogr.part">
+ <!-- Primary responsibility of host document -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium of host document -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility of host document [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./volumenum"/>
+ </xsl:call-template>
+ <!-- Numeration of the part [nonEL]-->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.partnr"/>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.part.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Numeration within host document [EL] -->
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- CONTRIBUTIONS TO MONOGRAPHS -->
+<xsl:template name="iso690.paper.mon">
+<!-- Contribution -->
+ <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/>
+<!-- In -->
+ <xsl:text>In </xsl:text>
+<!-- Host -->
+ <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.part">
+<!-- Contribution -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.book">
+<!-- Host -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.paper.pub"/>
+ <!-- Numeration within host document [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ARTICLES, ETC., IN SERIALS -->
+<xsl:template name="iso690.article">
+<!-- Article -->
+ <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/>
+<!-- Serial -->
+ <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.art">
+<!-- Article -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:if test="not(../*/bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.jour">
+<!-- Serial -->
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/>
+ </xsl:call-template>
+ <!-- Number designation [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.article.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.issn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- PATENT DOCUMENTS -->
+<xsl:template name="iso690.patent">
+ <!-- Primary responsibility (applicant) -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title of the invention -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Identification -->
+ <xsl:call-template name="iso690.pat.ident"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Elements -->
+
+<!-- Primary responsibility -->
+<xsl:template name="iso690.primary">
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./authorgroup/author|./author">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/editor|./editor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/corpauthor|./corpauthor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="(./firstname)and(./surname)">
+ <xsl:call-template name="iso690.author"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author.list">
+ <xsl:param name="person.list"
+ select="author|corpauthor|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="group" select="./authorgroup[@role='many']"/>
+ <xsl:param name="many" select="0"/>
+
+ <xsl:param name="primary.many">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.editor">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"></xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$person.count &lt; 4 and not($group)">
+ <xsl:call-template name="iso690.author">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1 and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.two.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.last.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.more.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($count = $person.count)">
+ <xsl:choose>
+ <xsl:when test="$many!=0">
+ <xsl:if test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ </xsl:if>
+ <xsl:value-of select="$primary.many"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$primary.many"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ <xsl:value-of select="$primary.sep"/>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='corpauthor'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count]//firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="many" select="$many"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="($biblioentry.primary.count&gt;=3) and ($person.count&gt;=3)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]|$person.list[3]"/>
+ <xsl:with-param name="person.count" select="3"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($biblioentry.primary.count&gt;1) and ($person.count&gt;1)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/>
+ <xsl:with-param name="person.count" select="2"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]"/>
+ <xsl:with-param name="person.count" select="1"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="lastfirst.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="name($node)!='corpauthor'">
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/>
+ </span>
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:value-of select="$lastfirst.sep"/>
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Title and Type of medium -->
+<xsl:template name="iso690.title">
+ <xsl:param name="medium" select="./bibliomisc[@role='medium']"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:apply-templates mode="iso690.mode" select="./title">
+ <xsl:with-param name="medium" select="$medium"/>
+ <xsl:with-param name="italic" select="$italic"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="title" mode="iso690.mode">
+ <xsl:param name="medium"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$italic=1">
+ <xsl:call-template name="iso690.italic.title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.make.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$medium">
+ <xsl:value-of select="$medium1"/>
+ <xsl:apply-templates mode="iso690.mode" select="$medium"/>
+ <xsl:value-of select="$medium2"/>
+ </xsl:if>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="iso690.italic.title">
+ <i>
+ <xsl:call-template name="iso690.make.title"/>
+ </i>
+</xsl:template>
+
+<xsl:template name="iso690.make.title">
+ <xsl:param name="submaintitle.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:if test="../subtitle">
+ <xsl:value-of select="$submaintitle.sep"/>
+ <xsl:apply-templates mode="iso690.mode" select="../subtitle"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Subordinate responsibility -->
+<xsl:template name="iso690.secondary">
+ <xsl:param name="secondary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="secondary.person.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:for-each select="./bibliomisc[@role='secondary']">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ <xsl:choose>
+ <xsl:when test="position()=count(../bibliomisc[@role='secondary'])">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$secondary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$secondary.person.sep"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Edition -->
+<xsl:template name="iso690.edition">
+ <xsl:param name="after"/>
+ <xsl:param name="edition.serial.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="string($after)!=''">
+ <xsl:apply-templates mode="iso690.mode" select="./edition">
+ <xsl:with-param name="sep" select="$edition.serial.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./edition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="edition" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Issue designation (date and/or num) -->
+<xsl:template name="iso690.issuing">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing']">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./volumenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.issuedate">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'][2]">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Numeration of the part -->
+<xsl:template name="iso690.partnr">
+ <xsl:param name="partnr.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$partnr.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+<xsl:template name="iso690.pub">
+ <xsl:param name="onlydate" select="0"/>
+ <xsl:param name="placesep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="pubsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="endsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$pubsep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="$onlydate=1">
+ <xsl:call-template name="iso690.location">
+ <xsl:with-param name="onlypages" select="1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.paper.pub">
+ <xsl:param name="spec.pubinfo.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumnum|./issuenum|./pagenums">
+ <xsl:call-template name="iso690.pub">
+ <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.pub"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.data">
+ <xsl:param name="sep"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/>
+ <xsl:choose>
+ <xsl:when test="./date[@role='cit']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./date[@role='upd']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="publisher/address/city|publishername" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="0"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pubdate|copyright/year" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="1"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="name(.)!='pubdate'">
+ <xsl:value-of select="'&#x00A9;'"/><!-- copyright -->
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:if test="$upd!=0">
+ <xsl:choose>
+ <xsl:when test="name(.)='pubdate'">
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(../date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.space">
+ <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="$text='-'">
+ <xsl:value-of select="' '"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Date of update/revision -->
+<xsl:template match="date[@role='upd']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$sep"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Date of citation -->
+<xsl:template match="date[@role='cit']" mode="iso690.mode">
+ <xsl:param name="datecit1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$datecit1"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$datecit2"/>
+</xsl:template>
+
+<!-- Extent -->
+<xsl:template name="iso690.extent">
+ <xsl:param name="extent.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums">
+ <xsl:with-param name="sep" select="$extent.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Location within host -->
+<xsl:template name="iso690.part.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:when test="./bibliomisc[@role='sectitle']">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.article.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="locs.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])">
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="iso690.location"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="volumenum|issuenum" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Series -->
+<xsl:template name="iso690.serie">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/>
+</xsl:template>
+
+<!-- Notes -->
+<xsl:template name="iso690.notice">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode">
+ <xsl:param name="notice.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$notice.sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Avaibility and access -->
+<xsl:template name="iso690.access">
+ <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']">
+ <xsl:choose>
+ <xsl:when test="position()=1">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select=".">
+ <xsl:with-param name="firstacc" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode">
+ <xsl:param name="link1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="link2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$link1"/>
+ <xsl:call-template name="ulink"/>
+ <xsl:value-of select="$link2"/>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode">
+ <xsl:param name="firstacc" select="1"/>
+ <xsl:param name="access">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="acctoo">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="onwww">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="oninet">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.end">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$firstacc=1">
+ <xsl:value-of select="$access"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$acctoo"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="(./ulink)and(string(./ulink)=string(.))">
+ <xsl:choose>
+ <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))">
+ <xsl:value-of select="$onwww"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$oninet"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="(./ulink)and(string(./ulink)!=string(.))">
+ <xsl:value-of select="text()[1]"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="text()[1]"/>
+ <xsl:with-param name="sep" select="$access.end"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$access.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISBN -->
+<xsl:template name="iso690.isbn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='isbn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/>
+ </xsl:when>
+ <xsl:when test="./isbn">
+ <xsl:apply-templates mode="iso690.mode" select="./isbn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode">
+ <xsl:param name="isbn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$isbn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISSN -->
+<xsl:template name="iso690.issn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='issn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/>
+ </xsl:when>
+ <xsl:when test="./issn">
+ <xsl:apply-templates mode="iso690.mode" select="./issn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode">
+ <xsl:param name="issn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$issn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Identification of patent document -->
+<xsl:template name="iso690.pat.ident">
+ <xsl:param name="patdate.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./address/country"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/>
+ <xsl:choose>
+ <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$patdate.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Country or issuing office -->
+<xsl:template match="address/country" mode="iso690.mode">
+ <xsl:param name="patcountry.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template>
+ </xsl:param>
+ <i>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </i>
+ <xsl:value-of select="$patcountry.sep"/>
+</xsl:template>
+
+<!-- Kind of patent document -->
+<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode">
+ <xsl:param name="pattype.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template>
+ </xsl:param>
+ <i>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </i>
+ <xsl:value-of select="$pattype.sep"/>
+</xsl:template>
+
+<!-- Number -->
+<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode">
+ <xsl:param name="patnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$patnum.sep"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Supplementary templates -->
+
+<xsl:template name="iso690.endsep">
+ <xsl:param name="text"/>
+ <xsl:param name="sep" select=". "/>
+ <xsl:choose>
+ <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)">
+ <xsl:value-of select="$sep"/>
+ </xsl:when>
+ <xsl:when test="substring($text,string-length($text))=' '">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="' '"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="iso690.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl
new file mode 100644
index 0000000..f145bb9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl
@@ -0,0 +1,1253 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliography">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="bibliography.titlepage"/>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliography/bibliographyinfo"></xsl:template>
+<xsl:template match="bibliography/info"></xsl:template>
+<xsl:template match="bibliography/title"></xsl:template>
+<xsl:template match="bibliography/subtitle"></xsl:template>
+<xsl:template match="bibliography/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliodiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliodiv/title">
+ <h3>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliolist">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[not(self::blockinfo)
+ and not(self::info)
+ and not(self::title)
+ and not(self::titleabbrev)
+ and not(self::biblioentry)
+ and not(self::bibliomixed)]"/>
+ <xsl:apply-templates select="biblioentry|bibliomixed"/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="biblioentry">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography//
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:choose>
+ <xsl:when test="$bibliography.style = 'iso690'">
+ <xsl:call-template name="iso690.makecitation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomixed">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography//
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$label"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="biblioentry.label">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:text>[</xsl:text>
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node/child::*[1]) = 'abbrev'">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="$node/abbrev[1]"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xreflabel">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xreflabel"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xml:id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xml:id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- nop --></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliography.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliography.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="address" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artheader|articleinfo|info" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name.list"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioset/title|biblioset/citetitle"
+ mode="bibliography.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <i><xsl:apply-templates/></i>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bookbiblio" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collab" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confdates" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="copyright" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="bibliography.mode"/>
+ <xsl:if test="holder">
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="bibliography.mode"/>
+ </xsl:if>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="year" mode="bibliography.mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="corpauthor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliography.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesinfo" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <i><xsl:apply-templates mode="bibliography.mode"/></i>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- See FR #1934434 and http://doi.org -->
+<xsl:template match="biblioid[@class='doi']"
+ mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliomixed.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliomixed.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="address" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bibliomset" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset/title|bibliomset/citetitle"
+ mode="bibliomixed.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <i><xsl:apply-templates/></i>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+
+<xsl:template match="collab" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="copyright" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliomixed.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- See FR #1934434 and http://doi.org -->
+<xsl:template match="biblioid[@class='doi']"
+ mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl
new file mode 100644
index 0000000..c76beaf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl
@@ -0,0 +1,538 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: block.xsl 8831 2010-08-13 17:08:49Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- What should we do about styling blockinfo? -->
+
+<xsl:template match="blockinfo|info">
+ <!-- suppress -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="block.object">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="para">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:if test="position() = 1 and parent::listitem">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="parent::listitem"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="paragraph">
+ <xsl:param name="class" select="''"/>
+ <xsl:param name="content"/>
+
+ <xsl:variable name="p">
+ <p>
+ <xsl:choose>
+ <xsl:when test="$class != ''">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="locale.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$content"/>
+ </p>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$html.cleanup != 0">
+ <xsl:call-template name="unwrap.p">
+ <xsl:with-param name="p" select="$p"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <!-- see also listitem/simpara in lists.xsl -->
+ <p>
+ <xsl:call-template name="locale.html.attributes"/>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Only use title from info -->
+<xsl:template match="formalpara/info">
+ <xsl:apply-templates select="title"/>
+</xsl:template>
+
+<xsl:template match="formalpara/title|formalpara/info/title">
+ <xsl:variable name="titleStr">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:variable name="lastChar">
+ <xsl:if test="$titleStr != ''">
+ <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="formalpara-title">
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != ''
+ and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <b>
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != ''
+ and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </b>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="formalpara/para">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="blockquote">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="attribution">
+ <table border="0" width="100%"
+ cellspacing="0" cellpadding="0" class="blockquote"
+ summary="Block quote">
+ <tr>
+ <td width="10%" valign="top">&#160;</td>
+ <td width="80%" valign="top">
+ <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/>
+ </td>
+ <td width="10%" valign="top">&#160;</td>
+ </tr>
+ <tr>
+ <td width="10%" valign="top">&#160;</td>
+ <td colspan="2" align="{$direction.align.end}" valign="top">
+ <xsl:text>--</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <blockquote>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </blockquote>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="blockquote/title|blockquote/info/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="blockquote-title">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div class="blockquote-title">
+ <p>
+ <b>
+ <xsl:apply-templates/>
+ </b>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Use an em dash per Chicago Manual of Style and https://sourceforge.net/tracker/index.php?func=detail&aid=2793878&group_id=21935&atid=373747 -->
+<xsl:template match="epigraph">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates select="para|simpara|formalpara|literallayout"/>
+ <xsl:if test="attribution">
+ <div class="attribution">
+ <span>&#x2014;<xsl:apply-templates select="attribution"/></span>
+ </div>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="attribution">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="abstract|sidebar">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="sidebar.titlepage"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title|sidebar/title">
+</xsl:template>
+
+<xsl:template match="sidebar/sidebarinfo|sidebar/info"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="msgset">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="simplemsgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msg">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgmain">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgmain/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgmain-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <b><xsl:apply-templates/></b>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgsub">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgsub/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgsub-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <b><xsl:apply-templates/></b>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgrel">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgrel/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgrel-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <b><xsl:apply-templates/></b>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgtext">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msginfo">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msglevel">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msglevel">
+ <span class="msglevel-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <b>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </b>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgorig">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgorig">
+ <span class="msgorig-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <b>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </b>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgaud">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgaud">
+ <span class="msgaud-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <b>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </b>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgexplan">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgexplan/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgexplan">
+ <span class="msgexplan-title">
+ <xsl:apply-templates/>
+ </span>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <b>
+ <xsl:apply-templates/>
+ </b>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="revhistory">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <table border="0" width="100%" summary="Revision history">
+ <tr>
+ <th align="{$direction.align.start}" valign="top" colspan="3">
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </b>
+ </th>
+ </tr>
+ <xsl:apply-templates/>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="revhistory/revision">
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber"/>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}">
+ <xsl:apply-templates select="$revdate"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="count($revauthor)=0">
+ <td align="{$direction.align.start}">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">nbsp</xsl:with-param>
+ </xsl:call-template>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td align="{$direction.align.start}">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="{$direction.align.start}" colspan="3">
+ <xsl:apply-templates select="$revremark"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/date">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials[1]" priority="2">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revremark">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="ackno|acknowledgements[parent::article]">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="highlights">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl
new file mode 100644
index 0000000..88a9bd0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl
@@ -0,0 +1,201 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
+ xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ exclude-result-prefixes="sverb xverb lxslt"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: callout.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xverb"
+ functions="insertCallouts"/>
+
+<xsl:template match="programlistingco|screenco">
+ <xsl:variable name="verbatim" select="programlisting|screen"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $callouts.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:apply-templates select="$verbatim">
+ <xsl:with-param name="suppress-numbers" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="rtf-with-callouts">
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:insertCallouts')">
+ <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:insertCallouts')">
+ <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertCallouts function is available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$verbatim/@linenumbering = 'numbered'
+ and $linenumbering.extension != '0'">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf-with-callouts"/>
+ <xsl:with-param name="pi.context"
+ select="programlisting|screen"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$rtf-with-callouts"/>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="areaspec|areaset|area">
+</xsl:template>
+
+<xsl:template match="areaset" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="area" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="co" name="co">
+ <!-- Support a single linkend in HTML -->
+ <xsl:variable name="targets" select="key('id', @linkends)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="coref">
+ <!-- tricky; this relies on the fact that we can process the "co" that's -->
+ <!-- "over there" as if it were "right here" -->
+
+ <xsl:variable name="co" select="key('id', @linkend)"/>
+ <xsl:choose>
+ <xsl:when test="not($co)">
+ <xsl:message>
+ <xsl:text>Error: coref link is broken: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="local-name($co) != 'co'">
+ <xsl:message>
+ <xsl:text>Error: coref doesn't point to a co: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$co"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="co" mode="callout-bug">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:number count="co"
+ level="any"
+ from="programlisting|screen|literallayout|synopsis"
+ format="1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="callout-bug">
+ <xsl:param name="conum" select='1'/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.graphics != 0
+ and $conum &lt;= $callout.graphics.number.limit">
+ <img src="{$callout.graphics.path}{$conum}{$callout.graphics.extension}"
+ alt="{$conum}" border="0"/>
+ </xsl:when>
+ <xsl:when test="$callout.unicode != 0
+ and $conum &lt;= $callout.unicode.number.limit">
+ <xsl:choose>
+ <xsl:when test="$callout.unicode.start.character = 10102">
+ <xsl:choose>
+ <xsl:when test="$conum = 1">&#10102;</xsl:when>
+ <xsl:when test="$conum = 2">&#10103;</xsl:when>
+ <xsl:when test="$conum = 3">&#10104;</xsl:when>
+ <xsl:when test="$conum = 4">&#10105;</xsl:when>
+ <xsl:when test="$conum = 5">&#10106;</xsl:when>
+ <xsl:when test="$conum = 6">&#10107;</xsl:when>
+ <xsl:when test="$conum = 7">&#10108;</xsl:when>
+ <xsl:when test="$conum = 8">&#10109;</xsl:when>
+ <xsl:when test="$conum = 9">&#10110;</xsl:when>
+ <xsl:when test="$conum = 10">&#10111;</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Don't know how to generate Unicode callouts </xsl:text>
+ <xsl:text>when $callout.unicode.start.character is </xsl:text>
+ <xsl:value-of select="$callout.unicode.start.character"/>
+ </xsl:message>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl
new file mode 100644
index 0000000..dae1cc3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl
@@ -0,0 +1,121 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: changebars.xsl 8128 2008-09-29 17:16:10Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<xsl:import href="docbook.xsl"/>
+
+<xsl:param name="show.revisionflag" select="'1'"/>
+
+<xsl:template name="system.head.content">
+<xsl:param name="node" select="."/>
+
+<style type="text/css">
+<xsl:text>
+div.added { background-color: #ffff99;
+ text-decoration: underline; }
+div.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+div.changed { background-color: #99ff99; }
+div.off { }
+
+span.added { background-color: #ffff99;
+ text-decoration: underline; }
+span.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+span.changed { background-color: #99ff99; }
+span.off { }
+</xsl:text>
+</style>
+</xsl:template>
+
+<xsl:template match="*[@revisionflag]">
+ <xsl:call-template name="block.or.inline.revision"/>
+</xsl:template>
+
+<xsl:template name="block.or.inline.revision">
+ <xsl:param name="revisionflag" select="@revisionflag"/>
+
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'para'
+ or local-name(.) = 'formalpara'
+ or local-name(.) = 'simpara'
+ or local-name(.) = 'simplesect'
+ or local-name(.) = 'section'
+ or local-name(.) = 'sect1'
+ or local-name(.) = 'sect2'
+ or local-name(.) = 'sect3'
+ or local-name(.) = 'sect4'
+ or local-name(.) = 'sect5'
+ or local-name(.) = 'chapter'
+ or local-name(.) = 'preface'
+ or local-name(.) = 'itemizedlist'
+ or local-name(.) = 'orderedlist'
+ or local-name(.) = 'variablelist'
+ or local-name(.) = 'varlistentry'
+ or local-name(.) = 'informaltable'
+ or local-name(.) = 'informalexample'
+ or local-name(.) = 'note'
+ or local-name(.) = 'example'
+ or local-name(.) = 'mediaobject'
+ or local-name(.) = 'sidebar'
+ or local-name(.) = 'glossary'
+ or local-name(.) = 'glossentry'
+ or local-name(.) = 'bibliography'
+ or local-name(.) = 'index'
+ or local-name(.) = 'appendix'">
+ <div class='{$revisionflag}'>
+ <xsl:apply-imports/>
+ </div>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'phrase'
+ or local-name(.) = 'ulink'
+ or local-name(.) = 'link'
+ or local-name(.) = 'olink'
+ or local-name(.) = 'inlinemediaobject'
+ or local-name(.) = 'filename'
+ or local-name(.) = 'literal'
+ or local-name(.) = 'member'
+ or local-name(.) = 'term'
+ or local-name(.) = 'guilabel'
+ or local-name(.) = 'glossterm'
+ or local-name(.) = 'sgmltag'
+ or local-name(.) = 'tag'
+ or local-name(.) = 'quote'
+ or local-name(.) = 'emphasis'
+ or local-name(.) = 'command'
+ or local-name(.) = 'xref'">
+ <span class='{$revisionflag}'>
+ <xsl:apply-imports/>
+ </span>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'listitem'
+ or local-name(.) = 'entry'
+ or local-name(.) = 'title'">
+ <!-- nop; these are handled directly in the stylesheet -->
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Revisionflag on unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> (Assuming block)</xsl:text>
+ </xsl:message>
+ <div class='{$revisionflag}'>
+ <xsl:apply-imports/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl
new file mode 100644
index 0000000..6bfd3c0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl
@@ -0,0 +1,99 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
+ version="1.0"
+ exclude-result-prefixes="exsl cf">
+
+<!-- ********************************************************************
+ $Id: chunk-changebars.xsl 8399 2009-04-08 07:37:42Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This file is a variant of chunk.xsl, to be used for generating chunked
+ output with highlighting based on change markup. -->
+
+<xsl:import href="changebars.xsl"/>
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- This customization of "process-chunk-element" is needed in order to make change
+ highlighting be inherited by chunked children of an element with change markup. -->
+<xsl:template name="process-chunk-element">
+ <xsl:param name="content">
+ <xsl:choose>
+
+ <xsl:when test="ancestor-or-self::*[@revisionflag] and $show.revisionflag != 0">
+ <xsl:variable name="revisionflag" select="ancestor-or-self::*[@revisionflag][1]/@revisionflag" />
+ <xsl:call-template name="block.or.inline.revision">
+ <xsl:with-param name="revisionflag" select="$revisionflag"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-imports/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv"
+ select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv"
+ select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:include href="chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl
new file mode 100644
index 0000000..694e9fe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl
@@ -0,0 +1,674 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ exclude-result-prefixes="exsl cf ng db"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 8596 2010-03-20 04:36:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)>0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1
+ or self::sect2
+ or self::sect3
+ or self::sect4
+ or self::sect5
+ or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="generate.css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix
+ |article
+ |reference|refentry
+ |book/glossary|article/glossary|part/glossary
+ |book/bibliography|article/bibliography|part/bibliography
+ |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex
+ |book/index
+ |article/index
+ |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix
+ |article
+ |reference|refentry
+ |sect1|sect2|sect3|sect4|sect5
+ |section
+ |book/glossary|article/glossary|part/glossary
+ |book/bibliography|article/bibliography|part/bibliography
+ |colophon"
+ mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index"
+ mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject"
+ select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl
new file mode 100644
index 0000000..0ea2df5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl
@@ -0,0 +1,1920 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ version="1.0"
+ exclude-result-prefixes="exsl cf ng db">
+
+<!-- ********************************************************************
+ $Id: chunk-common.xsl 8551 2009-12-07 06:03:50Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="onechunk" select="0"/>
+<xsl:param name="refentry.separator" select="0"/>
+<xsl:param name="chunk.fast" select="0"/>
+
+<xsl:key name="genid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:variable name="chunk.hierarchy">
+ <xsl:if test="$chunk.fast != 0">
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:message>Computing chunks...</xsl:message>
+ <xsl:apply-templates select="/*" mode="find.chunks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Fast chunking requires exsl:node-set(). </xsl:text>
+ <xsl:text>Using "slow" chunking.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv"
+ select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv"
+ select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-chunk">
+ <xsl:param name="prev" select="."/>
+ <xsl:param name="next" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:message>
+ <xsl:text>Error </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> is not a chunk!</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-first-section-with-parent">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <!-- These xpath expressions are really hairy. The trick is to pick sections -->
+ <!-- that are not first children and are not the children of first children -->
+
+ <!-- Break these variables into pieces to work around
+ http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6063 -->
+
+ <xsl:variable name="prev-v1"
+ select="(ancestor::sect1[$chunk.section.depth &gt; 0
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect1][1]
+
+ |ancestor::sect2[$chunk.section.depth &gt; 1
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::sect3[$chunk.section.depth &gt; 2
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::sect4[$chunk.section.depth &gt; 3
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::sect5[$chunk.section.depth &gt; 4
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::section[$chunk.section.depth &gt; count(ancestor::section)
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev-v2"
+ select="(preceding::sect1[$chunk.section.depth &gt; 0
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect1][1]
+
+ |preceding::sect2[$chunk.section.depth &gt; 1
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::sect3[$chunk.section.depth &gt; 2
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::sect4[$chunk.section.depth &gt; 3
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::sect5[$chunk.section.depth &gt; 4
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::section[$chunk.section.depth &gt; count(ancestor::section)
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::section
+ and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev"
+ select="(preceding::book[1]
+ |preceding::preface[1]
+ |preceding::chapter[1]
+ |preceding::appendix[1]
+ |preceding::part[1]
+ |preceding::reference[1]
+ |preceding::refentry[1]
+ |preceding::colophon[1]
+ |preceding::article[1]
+ |preceding::bibliography[parent::article or parent::book or parent::part][1]
+ |preceding::glossary[parent::article or parent::book or parent::part][1]
+ |preceding::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |preceding::setindex[$generate.index != 0][1]
+ |ancestor::set
+ |ancestor::book[1]
+ |ancestor::preface[1]
+ |ancestor::chapter[1]
+ |ancestor::appendix[1]
+ |ancestor::part[1]
+ |ancestor::reference[1]
+ |ancestor::article[1]
+ |$prev-v1
+ |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1"
+ select="(following::sect1[$chunk.section.depth &gt; 0
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect1][1]
+
+ |following::sect2[$chunk.section.depth &gt; 1
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |following::sect3[$chunk.section.depth &gt; 2
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |following::sect4[$chunk.section.depth &gt; 3
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |following::sect5[$chunk.section.depth &gt; 4
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |following::section[$chunk.section.depth &gt; count(ancestor::section)
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::section
+ and not(ancestor::section[not(preceding-sibling::section)])][1])[1]"/>
+
+ <xsl:variable name="next-v2"
+ select="(descendant::sect1[$chunk.section.depth &gt; 0
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect1][1]
+
+ |descendant::sect2[$chunk.section.depth &gt; 1
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::sect3[$chunk.section.depth &gt; 2
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::sect4[$chunk.section.depth &gt; 3
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::sect5[$chunk.section.depth &gt; 4
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::section[$chunk.section.depth &gt; count(ancestor::section)
+ and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])
+ and preceding-sibling::section
+ and not(ancestor::section[not(preceding-sibling::section)])])[1]"/>
+
+ <xsl:variable name="next"
+ select="(following::book[1]
+ |following::preface[1]
+ |following::chapter[1]
+ |following::appendix[1]
+ |following::part[1]
+ |following::reference[1]
+ |following::refentry[1]
+ |following::colophon[1]
+ |following::bibliography[parent::article or parent::book or parent::part][1]
+ |following::glossary[parent::article or parent::book or parent::part][1]
+ |following::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |following::article[1]
+ |following::setindex[$generate.index != 0][1]
+ |descendant::book[1]
+ |descendant::preface[1]
+ |descendant::chapter[1]
+ |descendant::appendix[1]
+ |descendant::article[1]
+ |descendant::bibliography[parent::article or parent::book or parent::part][1]
+ |descendant::glossary[parent::article or parent::book or parent::part][1]
+ |descendant::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |descendant::colophon[1]
+ |descendant::setindex[$generate.index != 0][1]
+ |descendant::part[1]
+ |descendant::reference[1]
+ |descendant::refentry[1]
+ |$next-v1
+ |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-all-sections">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="prev-v1"
+ select="(preceding::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |preceding::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |preceding::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |preceding::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |preceding::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |preceding::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/>
+
+ <xsl:variable name="prev-v2"
+ select="(ancestor::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |ancestor::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |ancestor::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |ancestor::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |ancestor::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |ancestor::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/>
+
+ <xsl:variable name="prev"
+ select="(preceding::book[1]
+ |preceding::preface[1]
+ |preceding::chapter[1]
+ |preceding::appendix[1]
+ |preceding::part[1]
+ |preceding::reference[1]
+ |preceding::refentry[1]
+ |preceding::colophon[1]
+ |preceding::article[1]
+ |preceding::bibliography[parent::article or parent::book or parent::part][1]
+ |preceding::glossary[parent::article or parent::book or parent::part][1]
+ |preceding::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |preceding::setindex[$generate.index != 0][1]
+ |ancestor::set
+ |ancestor::book[1]
+ |ancestor::preface[1]
+ |ancestor::chapter[1]
+ |ancestor::appendix[1]
+ |ancestor::part[1]
+ |ancestor::reference[1]
+ |ancestor::article[1]
+ |$prev-v1
+ |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1"
+ select="(following::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |following::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |following::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |following::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |following::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |following::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/>
+
+ <xsl:variable name="next-v2"
+ select="(descendant::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |descendant::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |descendant::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |descendant::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |descendant::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1]
+ |descendant::section[$chunk.section.depth
+ &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/>
+
+ <xsl:variable name="next"
+ select="(following::book[1]
+ |following::preface[1]
+ |following::chapter[1]
+ |following::appendix[1]
+ |following::part[1]
+ |following::reference[1]
+ |following::refentry[1]
+ |following::colophon[1]
+ |following::bibliography[parent::article or parent::book or parent::part][1]
+ |following::glossary[parent::article or parent::book or parent::part][1]
+ |following::index[$generate.index != 0]
+ [parent::article or parent::book][1]
+ |following::article[1]
+ |following::setindex[$generate.index != 0][1]
+ |descendant::book[1]
+ |descendant::preface[1]
+ |descendant::chapter[1]
+ |descendant::appendix[1]
+ |descendant::article[1]
+ |descendant::bibliography[parent::article or parent::book][1]
+ |descendant::glossary[parent::article or parent::book or parent::part][1]
+ |descendant::index[$generate.index != 0]
+ [parent::article or parent::book][1]
+ |descendant::colophon[1]
+ |descendant::setindex[$generate.index != 0][1]
+ |descendant::part[1]
+ |descendant::reference[1]
+ |descendant::refentry[1]
+ |$next-v1
+ |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:if test="$chunk.tocs.and.lots.has.title != 0">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ </xsl:if>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="in.other.chunk">
+ <xsl:param name="chunk" select="."/>
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>in.other.chunk: </xsl:text>
+ <xsl:value-of select="name($chunk)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$chunk = $node"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$is.chunk"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$chunk = $node">0</xsl:when>
+ <xsl:when test="$is.chunk = 1">1</xsl:when>
+ <xsl:when test="count($node) = 0">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$chunk"/>
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="count.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+ <xsl:param name="count" select="0"/>
+
+<!--
+ <xsl:message>
+ <xsl:text>count.footnotes.in.this.chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table
+ |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+
+<!--
+ <xsl:message>process.footnotes.in.this.chunk</xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table
+ |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$footnotes[1]"
+ mode="process.footnote.mode"/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="fcount">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> fcount: </xsl:text>
+ <xsl:value-of select="$fcount"/>
+ </xsl:message>
+-->
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="$fcount &gt; 0">
+ <div class="footnotes">
+ <br/>
+ <hr width="100" align="{$direction.align.start}"/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn’t support the user-interface
+ techniques used to make them appear as ‘popups’ on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation"
+ mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+ <xsl:if test="$is.chunk = 1">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <!-- ==================================================================== -->
+ <!-- What's a chunk?
+
+ The root element
+ appendix
+ article
+ bibliography in article or part or book
+ book
+ chapter
+ colophon
+ glossary in article or part or book
+ index in article or part or book
+ part
+ preface
+ refentry
+ reference
+ sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth
+ section if position()>1 && depth < chunk.section.depth
+ set
+ setindex
+ -->
+ <!-- ==================================================================== -->
+
+<!--
+ <xsl:message>
+ <xsl:text>chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> csd: </xsl:text>
+ <xsl:value-of select="$chunk.section.depth"/>
+ <xsl:text> cfs: </xsl:text>
+ <xsl:value-of select="$chunk.first.sections"/>
+ <xsl:text> ps: </xsl:text>
+ <xsl:value-of select="count($node/parent::section)"/>
+ <xsl:text> prs: </xsl:text>
+ <xsl:value-of select="count($node/preceding-sibling::section)"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$node/parent::*/processing-instruction('dbhtml')[normalize-space(.) = 'stop-chunking']">0</xsl:when>
+ <xsl:when test="not($node/parent::*)">1</xsl:when>
+
+ <xsl:when test="local-name($node) = 'sect1'
+ and $chunk.section.depth &gt;= 1
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect1) &gt; 0)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect2'
+ and $chunk.section.depth &gt;= 2
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect2) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect3'
+ and $chunk.section.depth &gt;= 3
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect3) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect4'
+ and $chunk.section.depth &gt;= 4
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect4) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect5'
+ and $chunk.section.depth &gt;= 5
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect5) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'section'
+ and $chunk.section.depth &gt;= count($node/ancestor::section)+1
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::section) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="local-name($node)='preface'">1</xsl:when>
+ <xsl:when test="local-name($node)='chapter'">1</xsl:when>
+ <xsl:when test="local-name($node)='appendix'">1</xsl:when>
+ <xsl:when test="local-name($node)='article'">1</xsl:when>
+ <xsl:when test="local-name($node)='part'">1</xsl:when>
+ <xsl:when test="local-name($node)='reference'">1</xsl:when>
+ <xsl:when test="local-name($node)='refentry'">1</xsl:when>
+ <xsl:when test="local-name($node)='index' and ($generate.index != 0 or count($node/*) > 0)
+ and (local-name($node/parent::*) = 'article'
+ or local-name($node/parent::*) = 'book'
+ or local-name($node/parent::*) = 'part'
+ )">1</xsl:when>
+ <xsl:when test="local-name($node)='bibliography'
+ and (local-name($node/parent::*) = 'article'
+ or local-name($node/parent::*) = 'book'
+ or local-name($node/parent::*) = 'part'
+ )">1</xsl:when>
+ <xsl:when test="local-name($node)='glossary'
+ and (local-name($node/parent::*) = 'article'
+ or local-name($node/parent::*) = 'book'
+ or local-name($node/parent::*) = 'part'
+ )">1</xsl:when>
+ <xsl:when test="local-name($node)='colophon'">1</xsl:when>
+ <xsl:when test="local-name($node)='book'">1</xsl:when>
+ <xsl:when test="local-name($node)='set'">1</xsl:when>
+ <xsl:when test="local-name($node)='setindex'">1</xsl:when>
+ <xsl:when test="local-name($node)='legalnotice'
+ and $generate.legalnotice.link != 0">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:apply-templates mode="chunk-filename" select="$object"/>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:param name="toc-context" select="."/>
+ <!-- * If $toc-context contains some node other than the current node, -->
+ <!-- * it means we're processing a link in a TOC. In that case, to -->
+ <!-- * ensure the link will work correctly, we need to take a look at -->
+ <!-- * where the file containing the TOC will get written, and where -->
+ <!-- * the file that's being linked to will get written. -->
+ <xsl:variable name="toc-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the $toc-context node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the -->
+ <!-- * toc-context node that has a "dbhtml dir" PI, and get the -->
+ <!-- * directory name from that. That's the name of the directory -->
+ <!-- * to which the current toc output file will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context"
+ select="$toc-context/ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="linked-file-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the current node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the current -->
+ <!-- * node that has a "dbhtml dir" PI, and get the directory name -->
+ <!-- * from that. That's the name of the directory to which the -->
+ <!-- * file that's being linked to will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context"
+ select="ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="href.to.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href.from.uri">
+ <xsl:choose>
+ <xsl:when test="not($toc-context = .)">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$context"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- * <xsl:message>toc-context: <xsl:value-of select="local-name($toc-context)"/></xsl:message> -->
+ <!-- * <xsl:message>node: <xsl:value-of select="local-name(.)"/></xsl:message> -->
+ <!-- * <xsl:message>context: <xsl:value-of select="local-name($context)"/></xsl:message> -->
+ <!-- * <xsl:message>object: <xsl:value-of select="local-name($object)"/></xsl:message> -->
+ <!-- * <xsl:message>toc-output-dir: <xsl:value-of select="$toc-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>linked-file-output-dir: <xsl:value-of select="$linked-file-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>href.to.uri: <xsl:value-of select="$href.to.uri"/></xsl:message> -->
+ <!-- * <xsl:message>href.from.uri: <xsl:value-of select="$href.from.uri"/></xsl:message> -->
+ <xsl:variable name="href.to">
+ <xsl:choose>
+ <!-- * 2007-07-19, MikeSmith: Added the following conditional to -->
+ <!-- * deal with a problem case for links in TOCs. It checks to see -->
+ <!-- * if the output dir that a TOC will get written to is -->
+ <!-- * different from the output dir of the file being linked to. -->
+ <!-- * If it is different, we do not call trim.common.uri.paths. -->
+ <!-- * -->
+ <!-- * Reason why I added that conditional is: I ran into a bug for -->
+ <!-- * this case: -->
+ <!-- * -->
+ <!-- * 1. we are chunking into separate dirs -->
+ <!-- * -->
+ <!-- * 2. output for the TOC is written to current dir, but the file -->
+ <!-- * being linked to is written to some subdir "foo". -->
+ <!-- * -->
+ <!-- * For that case, links to that file in that TOC did not show -->
+ <!-- * the correct path - they omitted the "foo". -->
+ <!-- * -->
+ <!-- * The cause of that problem was that the trim.common.uri.paths -->
+ <!-- * template[1] was being called under all conditions. But it's -->
+ <!-- * apparent that we don't want to call trim.common.uri.paths in -->
+ <!-- * the case where a linked file is being written to a different -->
+ <!-- * directory than the TOC that contains the link, because doing -->
+ <!-- * so will cause a necessary (not redundant) directory-name -->
+ <!-- * part of the link to get inadvertently trimmed, resulting in -->
+ <!-- * a broken link to that file. Thus, added the conditional. -->
+ <!-- * -->
+ <!-- * [1] The purpose of the trim.common.uri.paths template is to -->
+ <!-- * prevent cases where, if we didn't call it, we end up with -->
+ <!-- * unnecessary, redundant directory names getting output; for -->
+ <!-- * example, "foo/foo/refname.html". -->
+ <xsl:when test="not($toc-output-dir = $linked-file-output-dir)">
+ <xsl:value-of select="$href.to.uri"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>
+ <xsl:text>In </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$href.from"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="$depth"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="name($object)"/>
+ <xsl:text> href=</xsl:text>
+ <xsl:value-of select="$href"/>
+ </xsl:message>
+ -->
+ <xsl:value-of select="$href"/>
+</xsl:template>
+
+<!-- Returns the complete olink href value if found -->
+<!-- Must take into account any dbhtml dir of the chunk containing the olink -->
+<xsl:template name="make.olink.href">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$olink.key != ''">
+ <xsl:variable name="target.href" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)[1]/@href" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- an olink starting point may be in a subdirectory, so need
+ the "from" reference point to compute a relative path -->
+
+ <xsl:variable name="from.href">
+ <xsl:call-template name="olink.from.uri">
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="object" select="."/>
+ <xsl:with-param name="object.targetdoc" select="$current.docid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- If the from.href has directory path, then must "../" upward
+ to document level -->
+ <xsl:variable name="upward.from.path">
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="$from.href"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <!-- Does the target database use a sitemap? -->
+ <xsl:variable name="use.sitemap">
+ <xsl:choose>
+ <xsl:when test="$target.database//sitemap">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <!-- Get the baseuri for this targetptr -->
+ <xsl:variable name="baseuri" >
+ <xsl:choose>
+ <!-- Does the database use a sitemap? -->
+ <xsl:when test="$use.sitemap != 0" >
+ <xsl:choose>
+ <!-- Was current.docid parameter set? -->
+ <xsl:when test="$current.docid != ''">
+ <!-- Was it found in the database? -->
+ <xsl:variable name="currentdoc.key" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key',
+ $current.docid)/@targetdoc" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$currentdoc.key != ''">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode"
+ select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:for-each >
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path because $current.docid '</xsl:text>
+ <xsl:value-of select="$current.docid"/>
+ <xsl:text>' not found in target database.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink warning: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path without $current.docid parameter</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- In either case, add baseuri from its document entry-->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- No database sitemap in use -->
+ <xsl:otherwise>
+ <!-- Just use any baseuri from its document entry -->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Form the href information -->
+ <xsl:if test="not(contains($baseuri, ':'))">
+ <!-- if not an absolute uri, add upward path from olink chunk -->
+ <xsl:value-of select="$upward.from.path"/>
+ </xsl:if>
+
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and
+ translate(substring($baseuri, string-length($baseuri) - 3),
+ 'PDF', 'pdf') = '.pdf'
+ and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- Computes "../" to reach top -->
+<xsl:template name="upward.path">
+ <xsl:param name="path" select="''"/>
+ <xsl:choose>
+ <!-- Don't bother with absolute uris -->
+ <xsl:when test="contains($path, ':')"/>
+ <xsl:when test="starts-with($path, '/')"/>
+ <xsl:when test="contains($path, '/')">
+ <xsl:text>../</xsl:text>
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="substring-after($path, '/')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="html.head">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:variable name="this" select="."/>
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+
+ <xsl:if test="$home">
+ <link rel="home">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$home"
+ mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$up">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$up" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prev">
+ <link rel="prev">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$prev" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$next">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$next" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$html.extra.head.links != 0">
+ <xsl:for-each select="//part
+ |//reference
+ |//preface
+ |//chapter
+ |//article
+ |//refentry
+ |//appendix[not(parent::article)]|appendix
+ |//glossary[not(parent::article)]|glossary
+ |//index[not(parent::article)]|index">
+ <link rel="{local-name(.)}">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="section|sect1|refsection|refsect1">
+ <link>
+ <xsl:attribute name="rel">
+ <xsl:choose>
+ <xsl:when test="local-name($this) = 'section'
+ or local-name($this) = 'refsection'">
+ <xsl:value-of select="'subsection'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'section'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="sect2|sect3|sect4|sect5|refsect2|refsect3">
+ <link rel="subsection">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- * if we have a legalnotice and user wants it output as a -->
+ <!-- * separate page and $html.head.legalnotice.link.types is -->
+ <!-- * non-empty, we generate a link or links for each value in -->
+ <!-- * $html.head.legalnotice.link.types -->
+ <xsl:if test="//legalnotice
+ and not($generate.legalnotice.link = 0)
+ and not($html.head.legalnotice.link.types = '')">
+ <xsl:call-template name="make.legalnotice.head.links"/>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="header.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="$navig.showtitles != 0"/>
+ <xsl:variable name="row2" select="count($prev) &gt; 0
+ or (count($up) &gt; 0
+ and generate-id($up) != generate-id($home)
+ and $navig.showtitles != 0)
+ or count($next) &gt; 0"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'">
+ <div class="navheader">
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation header">
+ <xsl:if test="$row1">
+ <tr>
+ <th colspan="3" align="center">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </th>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td width="20%" align="{$direction.align.start}">
+ <xsl:if test="count($prev)>0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <th width="60%" align="center">
+ <xsl:choose>
+ <xsl:when test="count($up) > 0
+ and generate-id($up) != generate-id($home)
+ and $navig.showtitles != 0">
+ <xsl:apply-templates select="$up" mode="object.title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </th>
+ <td width="20%" align="{$direction.align.end}">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)>0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ <xsl:if test="$header.rule != 0">
+ <hr/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="footer.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="count($prev) &gt; 0
+ or count($up) &gt; 0
+ or count($next) &gt; 0"/>
+
+ <xsl:variable name="row2" select="($prev and $navig.showtitles != 0)
+ or (generate-id($home) != generate-id(.)
+ or $nav.context = 'toc')
+ or ($chunk.tocs.and.lots != 0
+ and $nav.context != 'toc')
+ or ($next and $navig.showtitles != 0)"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.footer.navigation = '0'">
+ <div class="navfooter">
+ <xsl:if test="$footer.rule != 0">
+ <hr/>
+ </xsl:if>
+
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation footer">
+ <xsl:if test="$row1">
+ <tr>
+ <td width="40%" align="{$direction.align.start}">
+ <xsl:if test="count($prev)>0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="20%" align="center">
+ <xsl:choose>
+ <xsl:when test="count($up)&gt;0
+ and generate-id($up) != generate-id($home)">
+ <a accesskey="u">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'up'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td width="40%" align="{$direction.align.end}">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)>0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td width="40%" align="{$direction.align.start}" valign="top">
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$prev" mode="object.title.markup"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="20%" align="center">
+ <xsl:choose>
+ <xsl:when test="$home != . or $nav.context = 'toc'">
+ <a accesskey="h">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'home'"/>
+ </xsl:call-template>
+ </a>
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <xsl:text>&#160;|&#160;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <a accesskey="t">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="/*[1]"
+ mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:attribute>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-toc'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ <td width="40%" align="{$direction.align.end}" valign="top">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$next" mode="object.title.markup"/>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="navig.content">
+ <xsl:param name="direction" select="next"/>
+ <xsl:variable name="navtext">
+ <xsl:choose>
+ <xsl:when test="$direction = 'prev'">
+ <xsl:call-template name="gentext.nav.prev"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'next'">
+ <xsl:call-template name="gentext.nav.next"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'up'">
+ <xsl:call-template name="gentext.nav.up"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'home'">
+ <xsl:call-template name="gentext.nav.home"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>xxx</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$navig.graphics != 0">
+ <img>
+ <xsl:attribute name="src">
+ <xsl:value-of select="$navig.graphics.path"/>
+ <xsl:value-of select="$direction"/>
+ <xsl:value-of select="$navig.graphics.extension"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$navtext"/>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$navtext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * The following template assumes that the first legalnotice -->
+<!-- * instance found in a document applies to the contents of the -->
+<!-- * entire document. It generates an HTML link in each chunk, back -->
+<!-- * to the file containing the contents of the first legalnotice. -->
+<!-- * -->
+<!-- * Actually, it may generate multiple link instances in each chunk, -->
+<!-- * because it walks through the space-separated list of link -->
+<!-- * types specified in the $html.head.legalnotice.link.types param, -->
+<!-- * popping off link types and generating links for them until it -->
+<!-- * depletes the list. -->
+
+<xsl:template name="make.legalnotice.head.links">
+ <!-- * the following ID is used as part of the legalnotice filename; -->
+ <!-- * we need it in order to construct the filename for use in the -->
+ <!-- * value of the href attribute on the link -->
+
+ <xsl:param name="ln-node" select="(//legalnotice)[1]"/>
+
+ <xsl:param name="linktype">
+ <xsl:choose>
+ <xsl:when test="contains($html.head.legalnotice.link.types, ' ')">
+ <xsl:value-of
+ select="normalize-space(
+ substring-before($html.head.legalnotice.link.types, ' '))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.head.legalnotice.link.types"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param
+ name="remaining.linktypes"
+ select="concat(
+ normalize-space(
+ substring-after($html.head.legalnotice.link.types, ' ')),' ')"/>
+ <xsl:if test="not($linktype = '')">
+
+ <!-- Compute name of legalnotice file (see titlepage.xsl) -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="node" select="$ln-node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <link rel="{$linktype}">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$file"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="(//legalnotice)[1]"
+ mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ <xsl:call-template name="make.legalnotice.head.links">
+ <!-- * pop the next value off the list of link types -->
+ <xsl:with-param
+ name="linktype"
+ select="substring-before($remaining.linktypes, ' ')"/>
+ <!-- * remove the link type from the list of remaining link types -->
+ <xsl:with-param
+ name="remaining.linktypes"
+ select="substring-after($remaining.linktypes, ' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="chunk-element-content">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:call-template name="user.preroot"/>
+
+ <html>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.navigation"/>
+
+ <xsl:call-template name="header.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.header.content"/>
+
+ <xsl:copy-of select="$content"/>
+
+ <xsl:call-template name="user.footer.content"/>
+
+ <xsl:call-template name="footer.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.footer.navigation"/>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.manifest">
+ <xsl:param name="node" select="/"/>
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$manifest"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$node" mode="enumerate-files"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl
new file mode 100644
index 0000000..a89e242
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl
@@ -0,0 +1,52 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ version="1.0"
+ exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl
new file mode 100644
index 0000000..89a5d23
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl
@@ -0,0 +1,439 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:redirect="http://xml.apache.org/xalan/redirect"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="saxon lxslt redirect exsl doc"
+ extension-element-prefixes="saxon redirect lxslt exsl">
+
+<!-- ********************************************************************
+ $Id: chunker.xsl 8526 2009-10-14 18:59:40Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with XSLT implementations that support -->
+<!-- exsl:document, saxon:output, or Xalan's redirect:write -->
+<!-- Note: Only Saxon 6.4.2 or later is supported. -->
+
+<xsl:param name="chunker.output.method" select="'html'"/>
+<xsl:param name="chunker.output.encoding" select="'ISO-8859-1'"/>
+<xsl:param name="chunker.output.indent" select="'no'"/>
+<xsl:param name="chunker.output.omit-xml-declaration" select="'no'"/>
+<xsl:param name="chunker.output.standalone" select="'no'"/>
+<xsl:param name="chunker.output.doctype-public" select="''"/>
+<xsl:param name="chunker.output.doctype-system" select="''"/>
+<xsl:param name="chunker.output.media-type" select="''"/>
+<xsl:param name="chunker.output.cdata-section-elements" select="''"/>
+<xsl:param name="chunker.output.quiet" select="0"/>
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:choose>
+ <!-- put Saxon first to work around a bug in libxslt -->
+ <xsl:when test="element-available('saxon:output')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="element-available('exsl:document')">
+ <!-- EXSL document does make the chunks relative, I think -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*) = 0">
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to chunk with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration"
+ select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements"
+ select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:if test="$quiet = 0">
+ <xsl:message>
+ <xsl:if test="not($message-prolog = '')">
+ <xsl:value-of select="$message-prolog"/>
+ </xsl:if>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != '' and $suppress-context-node-name = 0">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="not($message-epilog = '')">
+ <xsl:value-of select="$message-epilog"/>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="element-available('exsl:document')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('saxon:output')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration"
+ select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements"
+ select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="$indent"/>
+ <xsl:with-param name="omit-xml-declaration" select="$omit-xml-declaration"/>
+ <xsl:with-param name="standalone" select="$standalone"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements" select="$cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="write.text.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+ <xsl:param name="method" select="'text'"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="suppress-context-node-name" select="$suppress-context-node-name"/>
+ <xsl:with-param name="message-prolog" select="$message-prolog"/>
+ <xsl:with-param name="message-epilog" select="$message-epilog"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="standalone" select="'no'"/>
+ <xsl:with-param name="doctype-public"/>
+ <xsl:with-param name="doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl
new file mode 100644
index 0000000..35a4631
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl
@@ -0,0 +1,72 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
+ version="1.0"
+ exclude-result-prefixes="cf exsl">
+
+<!-- ********************************************************************
+ $Id: chunkfast.xsl 8345 2009-03-16 06:44:07Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+<xsl:param name="chunk.fast" select="1"/>
+
+<xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv"
+ select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv"
+ select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl
new file mode 100644
index 0000000..8422aa4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl
@@ -0,0 +1,543 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ version="1.0"
+ exclude-result-prefixes="doc exsl ng db">
+
+<!-- ********************************************************************
+ $Id: chunktoc.xsl 8545 2009-12-02 07:22:10Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk-common.xsl"/>
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:choose>
+ <xsl:when test="$chunks//tocentry[@linkend=$id]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$chunk"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="chunk-filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="prev-id"
+ select="($chunk/preceding::tocentry
+ |$chunk/ancestor::tocentry)[last()]/@linkend"/>
+ <xsl:variable name="next-id"
+ select="($chunk/following::tocentry
+ |$chunk/child::tocentry)[1]/@linkend"/>
+
+ <xsl:variable name="prev" select="key('id',$prev-id)"/>
+ <xsl:variable name="next" select="key('id',$next-id)"/>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="appendix">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="preface|chapter">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="part|reference">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="colophon">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk != 0">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-imports/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex
+ |book/index
+ |article/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$chunk.toc = ''">
+ <xsl:message terminate="yes">
+ <xsl:text>The chunk.toc file is not set.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl
new file mode 100644
index 0000000..666ea17
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl
@@ -0,0 +1,425 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: component.xsl 8568 2010-01-11 03:16:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="component.title">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Let's handle the case where a component (bibliography, for example)
+ occurs inside a section; will we need parameters for this? -->
+
+ <xsl:element name="h{$level+1}">
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="component.subtitle">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="subtitle"
+ select="($node/docinfo/subtitle
+ |$node/info/subtitle
+ |$node/prefaceinfo/subtitle
+ |$node/chapterinfo/subtitle
+ |$node/appendixinfo/subtitle
+ |$node/articleinfo/subtitle
+ |$node/artheader/subtitle
+ |$node/subtitle)[1]"/>
+
+ <xsl:if test="$subtitle">
+ <h3 class="subtitle">
+ <i>
+ <xsl:apply-templates select="$node" mode="object.subtitle.markup"/>
+ </i>
+ </h3>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="component.separator">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="dedication.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="dedication/title|dedication/info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication/subtitle|dedication/info/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication"></xsl:template> <!-- see mode="dedication" -->
+<xsl:template match="dedication/title"></xsl:template>
+<xsl:template match="dedication/subtitle"></xsl:template>
+<xsl:template match="dedication/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="acknowledgements" mode="acknowledgements">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="acknowledgements.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="acknowledgements/title|acknowledgements/info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acknowledgements/subtitle|acknowledgements/info/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acknowledgements"></xsl:template> <!-- see mode="acknowledgements" -->
+<xsl:template match="acknowledgements/title"></xsl:template>
+<xsl:template match="acknowledgements/subtitle"></xsl:template>
+<xsl:template match="acknowledgements/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colophon">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="component.title"/>
+ <xsl:call-template name="component.subtitle"/>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="colophon/title"></xsl:template>
+<xsl:template match="colophon/subtitle"></xsl:template>
+<xsl:template match="colophon/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="preface">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="preface.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="preface/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/subtitle
+ |preface/prefaceinfo/subtitle
+ |preface/info/subtitle
+ |preface/docinfo/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/docinfo|prefaceinfo"></xsl:template>
+<xsl:template match="preface/info"></xsl:template>
+<xsl:template match="preface/title"></xsl:template>
+<xsl:template match="preface/titleabbrev"></xsl:template>
+<xsl:template match="preface/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="chapter">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="chapter.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="chapter/title|chapter/chapterinfo/title|chapter/info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/subtitle
+ |chapter/chapterinfo/subtitle
+ |chapter/info/subtitle
+ |chapter/docinfo/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/docinfo|chapterinfo"></xsl:template>
+<xsl:template match="chapter/info"></xsl:template>
+<xsl:template match="chapter/title"></xsl:template>
+<xsl:template match="chapter/titleabbrev"></xsl:template>
+<xsl:template match="chapter/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="appendix">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="parent::article and $ischunk = 0">
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="1"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="appendix.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article) or $ischunk != 0">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="appendix/title|appendix/appendixinfo/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/subtitle
+ |appendix/appendixinfo/subtitle
+ |appendix/info/subtitle
+ |appendix/docinfo/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/docinfo|appendixinfo"></xsl:template>
+<xsl:template match="appendix/info"></xsl:template>
+<xsl:template match="appendix/title"></xsl:template>
+<xsl:template match="appendix/titleabbrev"></xsl:template>
+<xsl:template match="appendix/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="article">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="article.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="article/title|article/articleinfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/subtitle
+ |article/articleinfo/subtitle
+ |article/info/subtitle
+ |article/artheader/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/artheader|article/articleinfo"></xsl:template>
+<xsl:template match="article/info"></xsl:template>
+<xsl:template match="article/title"></xsl:template>
+<xsl:template match="article/titleabbrev"></xsl:template>
+<xsl:template match="article/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl
new file mode 100644
index 0000000..e910fdd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl
@@ -0,0 +1,217 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: division.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="set.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="set/setinfo"></xsl:template>
+<xsl:template match="set/title"></xsl:template>
+<xsl:template match="set/titleabbrev"></xsl:template>
+<xsl:template match="set/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="book.titlepage"/>
+
+ <xsl:apply-templates select="dedication" mode="dedication"/>
+ <xsl:apply-templates select="acknowledgements" mode="acknowledgements"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="book/bookinfo"></xsl:template>
+<xsl:template match="book/info"></xsl:template>
+<xsl:template match="book/title"></xsl:template>
+<xsl:template match="book/titleabbrev"></xsl:template>
+<xsl:template match="book/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="part">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="part.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="part" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="reference" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="part/docinfo"></xsl:template>
+<xsl:template match="part/partinfo"></xsl:template>
+<xsl:template match="part/info"></xsl:template>
+<xsl:template match="part/title"></xsl:template>
+<xsl:template match="part/titleabbrev"></xsl:template>
+<xsl:template match="part/subtitle"></xsl:template>
+
+<xsl:template match="partintro">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="partintro.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <!-- not ancestor::part because partintro appears in reference -->
+ <xsl:apply-templates select="parent::*" mode="make.part.toc"/>
+ </xsl:if>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="partintro/title"></xsl:template>
+<xsl:template match="partintro/titleabbrev"></xsl:template>
+<xsl:template match="partintro/subtitle"></xsl:template>
+
+<xsl:template match="partintro/title" mode="partintro.title.mode">
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="partintro/subtitle" mode="partintro.title.mode">
+ <h3>
+ <i><xsl:apply-templates/></i>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book" mode="division.number">
+ <xsl:number from="set" count="book" format="1."/>
+</xsl:template>
+
+<xsl:template match="part" mode="division.number">
+ <xsl:number from="book" count="part" format="I."/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="division.title">
+ <xsl:param name="node" select="."/>
+
+ <h1>
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </h1>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml
new file mode 100644
index 0000000..d93a25c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<style>
+
+/********************************/
+/* start of styles in block.xsl */
+
+.formalpara-title {
+ font-weight: bold;
+}
+
+div.blockquote-title {
+ font-weight: bold;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msgmain-title {
+ font-weight: bold;
+}
+
+span.msgsub-title {
+ font-weight: bold;
+}
+
+span.msgrel-title {
+ font-weight: bold;
+}
+
+div.msglevel, div.msgorig, div.msgaud {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msglevel-title, span.msgorig-title, span.msgaud-title {
+ font-weight: bold;
+}
+
+div.msgexplan {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msgexplan-title {
+ font-weight: bold;
+}
+
+/* end of styles in block.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in autotoc.xsl */
+
+ font-weight: bold;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+
+/* end of styles in autotoc.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in formal.xsl */
+
+div.figure-title {
+ font-weight: bold;
+}
+
+div.example-title {
+ font-weight: bold;
+}
+
+div.equation-title {
+ font-weight: bold;
+}
+
+div.table-title {
+ font-weight: bold;
+}
+
+div.sidebar-title {
+ font-weight: bold;
+}
+
+
+/* end of styles in formal.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in verbatim.xsl */
+
+div.programlisting {
+ white-space: pre;
+ font-family: monospace;
+}
+
+div.screen {
+ white-space: pre;
+ font-family: monospace;
+}
+
+div.synopsis {
+ white-space: pre;
+ font-family: monospace;
+}
+
+/* end of styles in verbatim.xsl */
+/********************************/
+</style>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl
new file mode 100644
index 0000000..523ed0d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl
@@ -0,0 +1,480 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:exslt="http://exslt.org/common"
+ exclude-result-prefixes="db ng exsl exslt"
+ version='1.0'>
+
+<xsl:output method="html"
+ encoding="ISO-8859-1"
+ indent="no"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8783 2010-07-28 10:59:39Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'html'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes">
+ <xsl:attribute name="bgcolor">white</xsl:attribute>
+ <xsl:attribute name="text">black</xsl:attribute>
+ <xsl:attribute name="link">#0000FF</xsl:attribute>
+ <xsl:attribute name="vlink">#840084</xsl:attribute>
+ <xsl:attribute name="alink">#0000FF</xsl:attribute>
+ <xsl:if test="starts-with($writing.mode, 'rl')">
+ <xsl:attribute name="dir">rtl</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <!-- Insert links to CSS files or insert literal style elements -->
+ <xsl:call-template name="generate.css"/>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made"
+ href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo
+ |bookinfo
+ |prefaceinfo
+ |chapterinfo
+ |appendixinfo
+ |sectioninfo
+ |sect1info
+ |sect2info
+ |sect3info
+ |sect4info
+ |sect5info
+ |referenceinfo
+ |refentryinfo
+ |partinfo
+ |info
+ |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or
+ ($draft.mode = 'maybe' and
+ ancestor-or-self::*[@status][1]/@status = 'draft'))
+ and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$css.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0
+ and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>&#10;// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>&#10;var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");&#10;</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;&#10;</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();&#10;</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>Saving stripped document.</xsl:message>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="'/tmp/stripped.xml'"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="exsl:node-set($nons)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+
+ <!-- Generate any css files only once, not once per chunk -->
+ <xsl:call-template name="generate.css.files"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl
new file mode 100644
index 0000000..b2ab23a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl
@@ -0,0 +1,329 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="">
+<referenceinfo>
+<releaseinfo role="meta">
+$Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $
+</releaseinfo>
+<author><surname>Walsh</surname>
+<firstname>Norman</firstname></author>
+<copyright><year>1999</year><year>2000</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</referenceinfo>
+<title>HTML EBNF Reference</title>
+
+<partintro>
+<section><title>Introduction</title>
+
+<para>This is technical reference documentation for the DocBook XSL
+Stylesheets; it documents (some of) the parameters, templates, and
+other elements of the stylesheets.</para>
+
+<para>This reference describes the templates and parameters relevant
+to formatting EBNF markup.</para>
+
+<para>This is not intended to be <quote>user</quote> documentation.
+It is provided for developers writing customization layers for the
+stylesheets, and for anyone who's interested in <quote>how it
+works</quote>.</para>
+
+<para>Although I am trying to be thorough, this documentation is known
+to be incomplete. Don't forget to read the source, too :-)</para>
+</section>
+</partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productionset">
+ <table width="100%" cellpadding="5">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$ebnf.table.border != 0">
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">
+ <xsl:text>EBNF</xsl:text>
+ <xsl:if test="title">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="title"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:if test="title">
+ <tr>
+ <th align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="title"/>
+ </th>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td>
+ <table border="0" width="99%" cellpadding="0">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">EBNF productions</xsl:attribute>
+ <xsl:apply-templates select="production|productionrecap"/>
+ </table>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<xsl:template match="productionset/title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="production">
+ <xsl:param name="recap" select="false()"/>
+ <tr>
+ <td align="{$direction.align.start}" valign="top" width="3%">
+ <xsl:text>[</xsl:text>
+ <xsl:number count="production" level="any"/>
+ <xsl:text>]</xsl:text>
+ </td>
+ <td align="{$direction.align.end}" valign="top" width="10%">
+ <xsl:choose>
+ <xsl:when test="$recap">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="lhs"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="lhs"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td valign="top" width="5%" align="center">
+ <xsl:copy-of select="$ebnf.assignment"/>
+ </td>
+ <td valign="top" width="52%">
+ <xsl:apply-templates select="rhs"/>
+ <xsl:copy-of select="$ebnf.statement.terminator"/>
+ </td>
+ <td align="{$direction.align.start}" valign="top" width="30%">
+ <xsl:choose>
+ <xsl:when test="rhs/lineannotation|constraint">
+ <xsl:apply-templates select="rhs/lineannotation" mode="rhslo"/>
+ <xsl:apply-templates select="constraint"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="productionrecap">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no ID for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="count($targets)>1">
+ <xsl:message>
+ <xsl:text>Warning: multiple "IDs" for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target">
+ <xsl:with-param name="recap" select="true()"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="lhs">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="rhs">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::rhs">
+ <xsl:text> |</xsl:text>
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="nonterminal">
+ <xsl:variable name="linkend">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="@def"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="element-list">production</xsl:with-param>
+ </xsl:call-template>
+
+ <!-- If you don't provide content, you can't point outside this doc. -->
+ <xsl:choose>
+ <xsl:when test="*|text()"><!--nop--></xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$linkend = ''">
+ <xsl:message>
+ <xsl:text>Non-terminals with no content must point to </xsl:text>
+ <xsl:text>production elements in the current document.</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>Invalid xpointer for empty nt: </xsl:text>
+ <xsl:value-of select="@def"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@def"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a href="{$href}">
+ <xsl:choose>
+ <xsl:when test="*|text()">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target/lhs"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation" mode="rhslo">
+ <xsl:text>/*&#160;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#160;*/</xsl:text>
+ <br/>
+</xsl:template>
+
+<xsl:template match="constraint">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ <xsl:with-param name="element-list">constraintdef</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:variable name="href">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:text>[&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:if test="$target/@role">
+ <xsl:value-of select="$target/@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <a href="{$href}">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target" mode="title.markup"/>
+ </a>
+ <xsl:text>&#160;]</xsl:text>
+ <xsl:if test="following-sibling::constraint">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="constraintdef">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="constraintdef/title">
+ <p><b><xsl:apply-templates/></b></p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl
new file mode 100644
index 0000000..035e3f3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl
@@ -0,0 +1,313 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: footnote.xsl 8812 2010-08-09 20:51:51Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="footnote">
+ <xsl:variable name="name">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a name="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a name="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="footnoteref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="footnote" select="$targets[1]"/>
+
+ <xsl:if test="not(local-name($footnote) = 'footnote')">
+ <xsl:message terminate="yes">
+ERROR: A footnoteref element has a linkend that points to an element that is not a footnote.
+Typically this happens when an id attribute is accidentally applied to the child of a footnote element.
+target element: <xsl:value-of select="local-name($footnote)"/>
+linkend/id: <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="target.href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:value-of select="substring-before($target.href, '#')"/>
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:value-of select="substring-after($target.href, '#')"/>
+ </xsl:variable>
+
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="$footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+</xsl:template>
+
+<xsl:template match="footnote" mode="footnote.number">
+ <xsl:choose>
+ <xsl:when test="string-length(@label) != 0">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <xsl:variable name="tfnum">
+ <xsl:number level="any" from="table|informaltable" format="1"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($table.footnote.number.symbols) &gt;= $tfnum">
+ <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="table | informaltable"
+ format="{$table.footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="pfoot" select="preceding::footnote[not(@label)]"/>
+ <xsl:variable name="ptfoot" select="preceding::table//footnote |
+ preceding::informaltable//footnote"/>
+ <xsl:variable name="fnum" select="count($pfoot) - count($ptfoot) + 1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($footnote.number.symbols) &gt;= $fnum">
+ <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$fnum" format="{$footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="footnote/para[1]|footnote/simpara[1]" priority="2">
+ <!-- this only works if the first thing in a footnote is a para, -->
+ <!-- which is ok, because it usually is. -->
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="footnote.body.number">
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="footnote.mark">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a name="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote"
+ mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ </xsl:variable>
+
+ <xsl:variable name="html">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:variable name="html-nodes" select="exsl:node-set($html)"/>
+ <xsl:choose>
+ <xsl:when test="$html-nodes//p">
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.p">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.text">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$html"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+<xsl:template name="count-element-from">
+ <xsl:param name="from" select=".."/>
+ <xsl:param name="to" select="."/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="list" select="$from/following::*[local-name(.)=local-name($to)]
+ |$from/descendant-or-self::*[local-name(.)=local-name($to)]"/>
+
+ <xsl:choose>
+ <xsl:when test="not($list)">
+ <xsl:text>-1</xsl:text>
+ </xsl:when>
+ <xsl:when test="$list[1] = $to">
+ <xsl:value-of select="$count + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+-->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="table.footnotes"
+ select=".//table//footnote | .//informaltable//footnote"/>
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="count($footnotes)>count($table.footnotes)">
+ <div class="footnotes">
+ <br/>
+ <hr width="100" align="{$direction.align.start}"/>
+ <xsl:apply-templates select="$footnotes" mode="process.footnote.mode"/>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn’t support the user-interface
+ techniques used to make them appear as ‘popups’ on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation"
+ mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="footnote" name="process.footnote" mode="process.footnote.mode">
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'para' or local-name(*[1]) = 'simpara'">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+
+ <xsl:when test="$html.cleanup != 0 and
+ $exsl.node.set.available != 0">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates select="*[1]" mode="footnote.body.number"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: footnote number may not be generated </xsl:text>
+ <xsl:text>correctly; </xsl:text>
+ <xsl:value-of select="local-name(*[1])"/>
+ <xsl:text> unexpected as first child of footnote.</xsl:text>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="table//footnote | informaltable//footnote"
+ mode="process.footnote.mode">
+</xsl:template>
+
+<xsl:template match="footnote" mode="table.footnote.mode">
+ <xsl:call-template name="process.footnote"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl
new file mode 100644
index 0000000..768ca58
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl
@@ -0,0 +1,425 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: formal.xsl 8806 2010-08-09 18:25:58Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="formal.object.break.after">1</xsl:param>
+
+<xsl:template name="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class">
+ <xsl:apply-templates select="." mode="class.value"/>
+ </xsl:param>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ <div class="{$class}-contents">
+ <xsl:apply-templates/>
+ </div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <div class="{$class}-contents"><xsl:apply-templates/></div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ <xsl:if test="not($formal.object.break.after = '0')">
+ <br class="{$class}-break"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of
+ select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$object" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:param>
+
+
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <xsl:variable name="html.class" select="concat(local-name($object),'-title')"/>
+ <div class="{$html.class}">
+ <xsl:copy-of select="$title"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p class="title">
+ <b>
+ <xsl:copy-of select="$title"/>
+ </b>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="informal.object">
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'informaltable'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </div>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of
+ select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="semiformal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:choose>
+ <xsl:when test="title or info/title">
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="table">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="calsTable"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- do not use xsl:copy because of XHTML's needs -->
+ <xsl:element name="table" namespace="">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calsTable">
+ <xsl:if test="tgroup/tbody/tr
+ |tgroup/thead/tr
+ |tgroup/tfoot/tr">
+ <xsl:message terminate="yes">Broken table: tr descendent of CALS Table.</xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <!-- hack, this will only ever occur on table, not example -->
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="htmlTable">
+ <xsl:if test="tgroup/tbody/row
+ |tgroup/thead/row
+ |tgroup/tfoot/row">
+ <xsl:message terminate="yes">Broken table: row descendent of HTML table.</xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates mode="htmlTable"/>
+
+ <xsl:if test=".//footnote|../title//footnote">
+ <tbody class="footnotes">
+ <tr>
+ <td colspan="50">
+ <xsl:apply-templates select=".//footnote|../title//footnote" mode="table.footnote.mode"/>
+ </td>
+ </tr>
+ </tbody>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="example">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="equation">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="figure/title"></xsl:template>
+<xsl:template match="figure/titleabbrev"></xsl:template>
+<xsl:template match="table/title"></xsl:template>
+<xsl:template match="table/titleabbrev"></xsl:template>
+<xsl:template match="table/textobject"></xsl:template>
+<xsl:template match="example/title"></xsl:template>
+<xsl:template match="example/titleabbrev"></xsl:template>
+<xsl:template match="equation/title"></xsl:template>
+<xsl:template match="equation/titleabbrev"></xsl:template>
+
+<xsl:template match="informalfigure">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informalexample">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informaltable">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="table" namespace="">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="informaltable/textobject"></xsl:template>
+
+<xsl:template name="table.longdesc">
+ <!-- HACK: This doesn't belong inside formal.objectt; it should be done by -->
+ <!-- the table template, but I want the link to be inside the DIV, so... -->
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="irrelevant">
+ <!-- write.longdesc returns the filename ... -->
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0
+ and textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="informalequation">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template name="floatstyle">
+ <xsl:if test="(@float and @float != '0') or @floatstyle != ''">
+ <xsl:choose>
+ <xsl:when test="@floatstyle != ''">
+ <xsl:value-of select="@floatstyle"/>
+ </xsl:when>
+ <xsl:when test="@float = '1'">
+ <xsl:value-of select="$default.float.class"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@float"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="floater">
+ <xsl:param name="content"/>
+ <xsl:param name="class" select="'float'"/>
+ <xsl:param name="floatstyle" select="'left'"/>
+
+ <div class="{$class}">
+ <xsl:if test="$floatstyle = 'left' or $floatstyle = 'right'">
+ <xsl:attribute name="style">
+ <xsl:text>float: </xsl:text>
+ <xsl:value-of select="$floatstyle"/>
+ <xsl:text>;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl
new file mode 100644
index 0000000..f98ddbc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl
@@ -0,0 +1,492 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ exclude-result-prefixes="xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: glossary.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossary">
+ &setup-language-variable;
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="(glossdiv[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="glossdiv"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty glossary -->
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossary/glossaryinfo"></xsl:template>
+<xsl:template match="glossary/info"></xsl:template>
+<xsl:template match="glossary/title"></xsl:template>
+<xsl:template match="glossary/subtitle"></xsl:template>
+<xsl:template match="glossary/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glosslist">
+ &setup-language-variable;
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossdiv">
+ &setup-language-variable;
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}"
+ select="translate(glossterm, $lowercase,
+ $uppercase)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+
+<xsl:template match="glossentry">
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dt>
+ </xsl:when>
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+
+ <xsl:if test="acronym|abbrev">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+ </dt>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="indexterm|revhistory|glosssee|glossdef"/>
+</xsl:template>
+
+<xsl:template match="glossentry/glossterm">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/acronym">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/abbrev">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/revhistory">
+</xsl:template>
+
+<xsl:template match="glossentry/glosssee">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <dd>
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </p>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef">
+ <dd>
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="glossseealso"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </p>
+ </xsl:if>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossseealso">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="position() = last()"/>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso-separator'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Glossary collection -->
+
+<xsl:template match="glossary[@role='auto']" priority="2">
+ &setup-language-variable;
+ <xsl:variable name="terms"
+ select="//glossterm[not(parent::glossdef)]|//firstterm"/>
+ <xsl:variable name="collection" select="document($glossary.collection, .)"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not($collection) and $glossary.collection != ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
+ <xsl:text>open glossary.collection file '</xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv and $collection//glossdiv">
+ <xsl:for-each select="$collection//glossdiv">
+ <!-- first see if there are any in this div -->
+ <xsl:variable name="exist.test">
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:value-of select="glossterm"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="$exist.test != ''">
+ <xsl:apply-templates select="." mode="auto-glossary">
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="auto-glossary">
+ <!-- pop back out to the default mode for most elements -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="auto-glossary">
+ <xsl:param name="terms" select="."/>
+
+ &setup-language-variable;
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>!
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl
new file mode 100644
index 0000000..93ea95f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl
@@ -0,0 +1,1515 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory"
+ xmlns:simg="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.ImageIntrinsics"
+ xmlns:ximg="xalan://com.nwalsh.xalan.ImageIntrinsics"
+ xmlns:xtext="xalan://com.nwalsh.xalan.Text"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ exclude-result-prefixes="xlink stext xtext lxslt simg ximg"
+ extension-element-prefixes="stext xtext"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: graphics.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ Contributors:
+ Colin Paul Adams, <colin@colina.demon.co.uk>
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtext" elements="insertfile"/>
+<lxslt:component prefix="ximg" functions="new getWidth getDepth"/>
+
+<!-- ==================================================================== -->
+<!-- Graphic format tests for the HTML backend -->
+
+<xsl:template name="is.graphic.format">
+ <xsl:param name="format"></xsl:param>
+ <xsl:if test="$format = 'SVG'
+ or $format = 'PNG'
+ or $format = 'JPG'
+ or $format = 'JPEG'
+ or $format = 'linespecific'
+ or $format = 'GIF'
+ or $format = 'GIF87a'
+ or $format = 'GIF89a'
+ or $format = 'BMP'">1</xsl:if>
+</xsl:template>
+
+<xsl:template name="is.graphic.extension">
+ <xsl:param name="ext"></xsl:param>
+ <xsl:variable name="lcext" select="translate($ext,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+ <xsl:if test="$lcext = 'svg'
+ or $lcext = 'png'
+ or $lcext = 'jpeg'
+ or $lcext = 'jpg'
+ or $lcext = 'avi'
+ or $lcext = 'mpg'
+ or $lcext = 'mpeg'
+ or $lcext = 'qt'
+ or $lcext = 'gif'
+ or $lcext = 'bmp'">1</xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="screenshot">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="screeninfo">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.image">
+ <!-- When this template is called, the current node should be -->
+ <!-- a graphic, inlinegraphic, imagedata, or videodata. All -->
+ <!-- those elements have the same set of attributes, so we can -->
+ <!-- handle them all in one place. -->
+ <xsl:param name="tag" select="'img'"/>
+ <xsl:param name="alt"/>
+ <xsl:param name="longdesc"/>
+
+ <!-- The HTML img element only supports the notion of content-area
+ scaling; it doesn't support the distinction between a
+ content-area and a viewport-area, so we have to make some
+ compromises.
+
+ 1. If only the content-area is specified, everything is fine.
+ (If you ask for a three inch image, that's what you'll get.)
+
+ 2. If only the viewport-area is provided:
+ - If scalefit=1, treat it as both the content-area and
+ the viewport-area. (If you ask for an image in a five inch
+ area, we'll make the image five inches to fill that area.)
+ - If scalefit=0, ignore the viewport-area specification.
+
+ Note: this is not quite the right semantic and has the additional
+ problem that it can result in anamorphic scaling, which scalefit
+ should never cause.
+
+ 3. If both the content-area and the viewport-area is specified
+ on a graphic element, ignore the viewport-area.
+ (If you ask for a three inch image in a five inch area, we'll assume
+ it's better to give you a three inch image in an unspecified area
+ than a five inch image in a five inch area.
+
+ Relative units also cause problems. As a general rule, the stylesheets
+ are operating too early and too loosely coupled with the rendering engine
+ to know things like the current font size or the actual dimensions of
+ an image. Therefore:
+
+ 1. We use a fixed size for pixels, $pixels.per.inch
+
+ 2. We use a fixed size for "em"s, $points.per.em
+
+ Percentages are problematic. In the following discussion, we speak
+ of width and contentwidth, but the same issues apply to depth and
+ contentdepth
+
+ 1. A width of 50% means "half of the available space for the image."
+ That's fine. But note that in HTML, this is a dynamic property and
+ the image size will vary if the browser window is resized.
+
+ 2. A contentwidth of 50% means "half of the actual image width". But
+ the stylesheets have no way to assess the image's actual size. Treating
+ this as a width of 50% is one possibility, but it produces behavior
+ (dynamic scaling) that seems entirely out of character with the
+ meaning.
+
+ Instead, the stylesheets define a $nominal.image.width
+ and convert percentages to actual values based on that nominal size.
+
+ Scale can be problematic. Scale applies to the contentwidth, so
+ a scale of 50 when a contentwidth is not specified is analagous to a
+ width of 50%. (If a contentwidth is specified, the scaling factor can
+ be applied to that value and no problem exists.)
+
+ If scale is specified but contentwidth is not supplied, the
+ nominal.image.width is used to calculate a base size
+ for scaling.
+
+ Warning: as a consequence of these decisions, unless the aspect ratio
+ of your image happens to be exactly the same as (nominal width / nominal height),
+ specifying contentwidth="50%" and contentdepth="50%" is NOT going to
+ scale the way you expect (or really, the way it should).
+
+ Don't do that. In fact, a percentage value is not recommended for content
+ size at all. Use scale instead.
+
+ Finally, align and valign are troublesome. Horizontal alignment is now
+ supported by wrapping the image in a <div align="{@align}"> (in block
+ contexts!). I can't think of anything (practical) to do about vertical
+ alignment.
+ -->
+
+ <xsl:variable name="width-units">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@width">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="$default.image.width"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@width">
+ <xsl:choose>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:value-of select="$default.image.width"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scalefit">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">0</xsl:when>
+ <xsl:when test="@scale">0</xsl:when>
+ <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when>
+ <xsl:when test="$width != '' or @depth">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scale">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">1.0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when>
+ <xsl:when test="@scale">
+ <xsl:value-of select="@scale div 100.0"/>
+ </xsl:when>
+ <xsl:otherwise>1.0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'graphic'
+ or local-name(.) = 'inlinegraphic'">
+ <!-- handle legacy graphic and inlinegraphic by new template -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- imagedata, videodata, audiodata -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="output_filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <!--
+ Moved test for $keep.relative.image.uris to template below:
+ <xsl:template match="@fileref">
+ -->
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="img.src.path.pi">
+ <xsl:call-template name="pi.dbhtml_img.src.path">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename.for.graphicsize">
+ <xsl:choose>
+ <xsl:when test="$img.src.path.pi != ''">
+ <xsl:value-of select="concat($img.src.path.pi, $filename)"/>
+ </xsl:when>
+ <xsl:when test="$img.src.path != '' and
+ $graphicsize.use.img.src.path != 0 and
+ $tag = 'img' and
+ not(starts-with($filename, '/')) and
+ not(contains($filename, '://'))">
+ <xsl:value-of select="concat($img.src.path, $filename)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="realintrinsicwidth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getWidth')">
+ <xsl:value-of select="simg:getWidth(simg:new($filename.for.graphicsize),
+ $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getWidth')">
+ <xsl:value-of select="ximg:getWidth(ximg:new($filename.for.graphicsize),
+ $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicwidth">
+ <xsl:choose>
+ <xsl:when test="$realintrinsicwidth = 0">
+ <xsl:value-of select="$nominal.image.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$realintrinsicwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicdepth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getDepth')">
+ <xsl:value-of select="simg:getDepth(simg:new($filename.for.graphicsize),
+ $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getDepth')">
+ <xsl:value-of select="ximg:getDepth(ximg:new($filename.for.graphicsize),
+ $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentwidth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@contentwidth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicwidth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentwidth">
+ <xsl:if test="$contentwidth != ''">
+ <xsl:variable name="cwidth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentwidth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cwidth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="$width"/>
+ </xsl:when>
+ <xsl:when test="$width != ''">
+ <xsl:variable name="width.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$width"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($width.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentdepth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@contentdepth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicdepth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicdepth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentdepth">
+ <xsl:if test="$contentdepth != ''">
+ <xsl:variable name="cdepth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentdepth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cdepth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth-units">
+ <xsl:if test="@depth">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:if test="@depth">
+ <xsl:choose>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="@depth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.depth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="$depth"/>
+ </xsl:when>
+ <xsl:when test="@depth and @depth != ''">
+ <xsl:variable name="depth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$depth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($depth.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="viewport">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="local-name(.) = 'inlinegraphic'
+ or ancestor::inlinemediaobject
+ or ancestor::inlineequation">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$make.graphic.viewport"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>=====================================
+scale: <xsl:value-of select="$scale"/>, <xsl:value-of select="$scalefit"/>
+@contentwidth <xsl:value-of select="@contentwidth"/>
+$contentwidth <xsl:value-of select="$contentwidth"/>
+scaled.contentwidth: <xsl:value-of select="$scaled.contentwidth"/>
+@width: <xsl:value-of select="@width"/>
+width: <xsl:value-of select="$width"/>
+html.width: <xsl:value-of select="$html.width"/>
+@contentdepth <xsl:value-of select="@contentdepth"/>
+$contentdepth <xsl:value-of select="$contentdepth"/>
+scaled.contentdepth: <xsl:value-of select="$scaled.contentdepth"/>
+@depth: <xsl:value-of select="@depth"/>
+depth: <xsl:value-of select="$depth"/>
+html.depth: <xsl:value-of select="$html.depth"/>
+align: <xsl:value-of select="@align"/>
+valign: <xsl:value-of select="@valign"/></xsl:message>
+-->
+
+ <xsl:variable name="scaled"
+ select="@width|@depth|@contentwidth|@contentdepth
+ |@scale|@scalefit"/>
+
+ <xsl:variable name="img">
+ <xsl:choose>
+ <xsl:when test="@format = 'SVG'">
+ <object type="image/svg+xml">
+ <xsl:attribute name="data">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and
+ $tag = 'img' and
+ not(starts-with($output_filename, '/')) and
+ not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here-->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$use.embed.for.svg != 0">
+ <embed type="image/svg+xml">
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and
+ $tag = 'img' and
+ not(starts-with($output_filename, '/')) and
+ not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here -->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </embed>
+ </xsl:if>
+ </object>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$tag}">
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$scaled">
+ <!-- It might be possible to handle some scaling; needs -->
+ <!-- more investigation -->
+ <xsl:message>
+ <xsl:text>Warning: imagemaps not supported </xsl:text>
+ <xsl:text>on scaled images</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="usemap">
+ <xsl:value-of select="concat('#', $mapname)"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and
+ $tag = 'img' and
+ not(starts-with($output_filename, '/')) and
+ not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="process.image.attributes">
+ <xsl:with-param name="alt">
+ <xsl:choose>
+ <xsl:when test="$alt != ''">
+ <xsl:copy-of select="$alt"/>
+ </xsl:when>
+ <xsl:when test="ancestor::figure">
+ <xsl:value-of select="normalize-space(ancestor::figure/title)"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:call-template name="pi.dbhtml_background-color">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="use.viewport"
+ select="$viewport != 0
+ and ($html.width != ''
+ or ($html.depth != '' and $depth-units != '%')
+ or $bgcolor != ''
+ or @valign)"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.viewport">
+ <table border="0" summary="manufactured viewport for HTML img"
+ cellspacing="0" cellpadding="0">
+ <xsl:if test="$html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <tr>
+ <xsl:if test="$html.depth != '' and $depth-units != '%'">
+ <!-- don't do this for percentages because browsers get confused -->
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>height: </xsl:text>
+ <xsl:value-of select="$html.depth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <td>
+ <xsl:if test="$bgcolor != ''">
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$img"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$img"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco and not($scaled)">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <map name="{$mapname}">
+ <xsl:for-each select="../../areaspec//area">
+ <xsl:variable name="units">
+ <xsl:choose>
+ <xsl:when test="@units = 'other' and @otherunits">
+ <xsl:value-of select="@otherunits"/>
+ </xsl:when>
+ <xsl:when test="@units">
+ <xsl:value-of select="@units"/>
+ </xsl:when>
+ <!-- areaspec|areaset/area -->
+ <xsl:when test="../@units = 'other' and ../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../@units">
+ <xsl:value-of select="../@units"/>
+ </xsl:when>
+ <!-- areaspec/areaset/area -->
+ <xsl:when test="../../@units = 'other' and ../../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../../@units">
+ <xsl:value-of select="../../@units"/>
+ </xsl:when>
+ <xsl:otherwise>calspair</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair' or
+ $units = 'imagemap'">
+ <xsl:variable name="coords" select="normalize-space(@coords)"/>
+
+ <area shape="rect">
+ <xsl:variable name="linkends">
+ <xsl:choose>
+ <xsl:when test="@linkends">
+ <xsl:value-of select="normalize-space(@linkends)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(../@linkends)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="../@xlink:href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkends != ''">
+ <xsl:variable name="linkend">
+ <xsl:choose>
+ <xsl:when test="contains($linkends, ' ')">
+ <xsl:value-of select="substring-before($linkends, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$linkends"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="target" select="key('id', $linkend)[1]"/>
+
+ <xsl:if test="$target">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$href != ''">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$href"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="alt">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="alt[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="coords">
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair'">
+
+ <xsl:variable name="p1"
+ select="substring-before($coords, ' ')"/>
+ <xsl:variable name="p2"
+ select="substring-after($coords, ' ')"/>
+
+ <xsl:variable name="x1" select="substring-before($p1,',')"/>
+ <xsl:variable name="y1" select="substring-after($p1,',')"/>
+ <xsl:variable name="x2" select="substring-before($p2,',')"/>
+ <xsl:variable name="y2" select="substring-after($p2,',')"/>
+
+ <xsl:variable name="x1p" select="$x1 div 100.0"/>
+ <xsl:variable name="y1p" select="$y1 div 100.0"/>
+ <xsl:variable name="x2p" select="$x2 div 100.0"/>
+ <xsl:variable name="y2p" select="$y2 div 100.0"/>
+
+ <!--
+ <xsl:message>
+ <xsl:text>units: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$x1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$x2p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y2p"/><xsl:text>, </xsl:text>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$intrinsicdepth"/>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of
+ select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($x2p *
+ $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:message>
+ -->
+ <xsl:value-of
+ select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of
+ select="round($x2p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$coords"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </area>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: only calspair or </xsl:text>
+ <xsl:text>otherunits='imagemap' supported </xsl:text>
+ <xsl:text>in imageobjectco</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </map>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.image.attributes">
+ <xsl:param name="alt"/>
+ <xsl:param name="html.width"/>
+ <xsl:param name="html.depth"/>
+ <xsl:param name="longdesc"/>
+ <xsl:param name="scale"/>
+ <xsl:param name="scalefit"/>
+ <xsl:param name="scaled.contentdepth"/>
+ <xsl:param name="scaled.contentwidth"/>
+ <xsl:param name="viewport"/>
+
+ <xsl:choose>
+ <xsl:when test="@contentwidth or @contentdepth">
+ <!-- ignore @width/@depth, @scale, and @scalefit if specified -->
+ <xsl:if test="@contentwidth and $scaled.contentwidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@contentdepth and $scaled.contentdepth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$scaled.contentdepth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="number($scale) != 1.0">
+ <!-- scaling is always uniform, so we only have to specify one dimension -->
+ <!-- ignore @scalefit if specified -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scalefit != 0">
+ <xsl:choose>
+ <xsl:when test="contains($html.width, '%')">
+ <xsl:choose>
+ <xsl:when test="$viewport != 0">
+ <!-- The *viewport* will be scaled, so use 100% here! -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="contains($html.depth, '%')">
+ <!-- HTML doesn't deal with this case very well...do nothing -->
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != ''
+ and $scaled.contentdepth != '' and $html.depth != ''">
+ <!-- scalefit should not be anamorphic; figure out which direction -->
+ <!-- has the limiting scale factor and scale in that direction -->
+ <xsl:choose>
+ <xsl:when test="$html.width div $scaled.contentwidth &gt;
+ $html.depth div $scaled.contentdepth">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentdepth != '' and $html.depth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$alt != ''">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="normalize-space($alt)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$longdesc != ''">
+ <xsl:attribute name="longdesc">
+ <xsl:value-of select="$longdesc"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@align and $viewport = 0">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="graphic">
+ <xsl:choose>
+ <xsl:when test="parent::inlineequation">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="inlinegraphic">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process.image"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="mediaobject|mediaobjectco">
+
+ <xsl:variable name="olist" select="imageobject|imageobjectco
+ |videoobject|audioobject
+ |textobject"/>
+
+ <xsl:variable name="object.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+ <xsl:variable name="align">
+ <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$align != '' ">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:apply-templates select="$object"/>
+ <xsl:apply-templates select="caption"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="select.mediaobject"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="programlisting/inlinemediaobject
+ |screen/inlinemediaobject" priority="2">
+ <!-- the additional span causes problems in some cases -->
+ <xsl:call-template name="select.mediaobject"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="imageobjectco">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="imageobject"/>
+ <xsl:apply-templates select="calloutlist"/>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:apply-templates select="imagedata"/>
+</xsl:template>
+
+<xsl:template match="imagedata">
+ <xsl:variable name="filename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- Handle MathML and SVG markup in imagedata -->
+ <xsl:when test="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when test="svg:*" xmlns:svg="http://www.w3.org/2000/svg">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"
+ href="{$filename}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject"
+ select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="phrases"
+ select="ancestor::mediaobject/textobject[phrase]
+ |ancestor::inlinemediaobject/textobject[phrase]
+ |ancestor::mediaobjectco/textobject[phrase]"/>
+
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ </xsl:with-param>
+ <xsl:with-param name="longdesc">
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject"
+ select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0
+ and ancestor::imageobject/parent::*/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="longdesc.uri">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc">
+ <xsl:if test="$mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="dbhtml.dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:choose>
+ <xsl:when test="$dbhtml.dir != ''">
+ <xsl:value-of select="$dbhtml.dir"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:choose>
+ <xsl:when test="
+ $mediaobject/@*[local-name() = 'id']
+ and not($use.id.as.filename = 0)">
+ <!-- * if this mediaobject has an ID, then we use the -->
+ <!-- * value of that ID as basename for the "longdesc" -->
+ <!-- * file (that is, without prepending an "ld-" too it) -->
+ <xsl:value-of select="$mediaobject/@*[local-name() = 'id']"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this mediaobject does not have an -->
+ <!-- * ID, then we generate an ID... -->
+ <xsl:variable name="image-id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ld-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ld-',$image-id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="write.longdesc">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title" select="'Long Description'"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:for-each select="$mediaobject/textobject[not(phrase)]">
+ <xsl:apply-templates select="./*"/>
+ </xsl:for-each>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="longdesc.link">
+ <xsl:param name="longdesc.uri" select="''"/>
+
+ <xsl:variable name="this.uri">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$longdesc.uri"/>
+ <xsl:with-param name="uriB" select="$this.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div class="longdesc-link" align="{$direction.align.end}">
+ <br clear="all"/>
+ <span class="longdesc-link">
+ <xsl:text>[</xsl:text>
+ <a href="{$href.to}" target="longdesc">D</a>
+ <xsl:text>]</xsl:text>
+ </span>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="videoobject">
+ <xsl:apply-templates select="videodata"/>
+</xsl:template>
+
+<xsl:template match="videodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="audioobject">
+ <xsl:apply-templates select="audiodata"/>
+</xsl:template>
+
+<xsl:template match="audiodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="textobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="textdata">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="@encoding">
+ <xsl:value-of select="@encoding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$textdata.default.encoding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="caption">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
+ <xsl:attribute name="align"><xsl:value-of
+ select="@align"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- "Support" for SVG -->
+
+<xsl:template match="svg:*" xmlns:svg="http://www.w3.org/2000/svg">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+
+<!-- The following works sometimes, but needs to take into account
+ 1. When there is no /*/@xml:base
+ 2. When the chunks are going somewhere else
+<xsl:variable name="relpath">
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="filename" select="@fileref"/>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:choose>
+ <xsl:when test="/*/@xml:base
+ and starts-with($relpath,/*/@xml:base)">
+ <xsl:value-of select="substring-after($relpath,/*/@xml:base)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@fileref"/>
+ </xsl:otherwise>
+</xsl:choose>
+<xsl:value-of select="@fileref"/>
+ </xsl:when>
+-->
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri that needs xml:base processing -->
+ <xsl:call-template name="relative-uri">
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl
new file mode 100644
index 0000000..f7307a4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslthl="http://xslthl.sf.net" exclude-result-prefixes="xslthl" version="1.0">
+ <!-- ********************************************************************
+ $Id: highlight.xsl 8911 2010-09-28 17:02:06Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ and other information.
+
+ ******************************************************************** -->
+ <xsl:import href="../highlighting/common.xsl"/>
+ <xsl:template match="xslthl:keyword" mode="xslthl">
+ <strong class="hl-keyword">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:string" mode="xslthl">
+ <strong class="hl-string">
+ <em style="color:red">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:comment" mode="xslthl">
+ <em class="hl-comment" style="color: silver">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </xsl:template>
+ <xsl:template match="xslthl:directive" mode="xslthl">
+ <span class="hl-directive" style="color: maroon">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:tag" mode="xslthl">
+ <strong class="hl-tag" style="color: #000096">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:attribute" mode="xslthl">
+ <span class="hl-attribute" style="color: #F5844C">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:value" mode="xslthl">
+ <span class="hl-value" style="color: #993300">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:html" mode="xslthl">
+ <strong>
+ <em style="color: red">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:xslt" mode="xslthl">
+ <strong style="color: #0066FF">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <!-- Not emitted since XSLTHL 2.0 -->
+ <xsl:template match="xslthl:section" mode="xslthl">
+ <strong>
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:number" mode="xslthl">
+ <span class="hl-number">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:annotation" mode="xslthl">
+ <em>
+ <span class="hl-annotation" style="color: gray">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </em>
+ </xsl:template>
+ <!-- Not sure which element will be in final XSLTHL 2.0 -->
+ <xsl:template match="xslthl:doccomment|xslthl:doctype" mode="xslthl">
+ <strong class="hl-tag" style="color: blue">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl
new file mode 100644
index 0000000..8de6bb3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl
@@ -0,0 +1,336 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:set="http://exslt.org/sets"
+ exclude-result-prefixes="exsl set"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: html-rtf.xsl 8345 2009-03-16 06:44:07Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This module contains templates that match against HTML nodes. It is used
+ to post-process result tree fragments for some sorts of cleanup.
+ These templates can only ever be fired by a processor that supports
+ exslt:node-set(). -->
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.p mode templates insert a particular RTF at the beginning
+ of the first paragraph in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml"
+ match="html:p|p" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="not(preceding::p|preceding::html:p)">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.text mode templates insert a particular RTF at the beginning
+ of the first text-node in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+
+ <xsl:if test="not(preceding::text())">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- unwrap.p mode templates remove blocks from HTML p elements (and
+ other places where blocks aren't allowed) -->
+
+<xsl:template name="unwrap.p">
+ <xsl:param name="p"/>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0
+ and function-available('set:leading')
+ and function-available('set:trailing')">
+ <xsl:apply-templates select="exsl:node-set($p)" mode="unwrap.p"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml"
+ match="html:p|p" mode="unwrap.p">
+ <!-- xmlns:html is necessary for the xhtml stylesheet case -->
+ <xsl:variable name="blocks" xmlns:html="http://www.w3.org/1999/xhtml"
+ select="address|blockquote|div|hr|h1|h2|h3|h4|h5|h6
+ |layer|p|pre|table|dl|menu|ol|ul|form
+ |html:address|html:blockquote|html:div|html:hr
+ |html:h1|html:h2|html:h3|html:h4|html:h5|html:h6
+ |html:layer|html:p|html:pre|html:table|html:dl
+ |html:menu|html:ol|html:ul|html:form"/>
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="."/>
+ <xsl:with-param name="first" select="1"/>
+ <xsl:with-param name="nodes" select="node()"/>
+ <xsl:with-param name="blocks" select="$blocks"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="unwrap.p">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="unwrap.p">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template name="unwrap.p.nodes">
+ <xsl:param name="wrap" select="."/>
+ <xsl:param name="first" select="0"/>
+ <xsl:param name="nodes"/>
+ <xsl:param name="blocks"/>
+ <xsl:variable name="block" select="$blocks[1]"/>
+
+ <!-- This template should never get called if these functions aren't available -->
+ <!-- but this test is still necessary so that processors don't choke on the -->
+ <!-- function calls if they don't support the set: functions -->
+ <xsl:if test="function-available('set:leading')
+ and function-available('set:trailing')">
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:variable name="leading" select="set:leading($nodes,$block)"/>
+ <xsl:variable name="trailing" select="set:trailing($nodes,$block)"/>
+
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id)
+ and $first = 1) or $leading">
+ <xsl:element name="{local-name($wrap)}" namespace="{namespace-uri($wrap)}">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$leading" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:apply-templates select="$block" mode="unwrap.p"/>
+
+ <xsl:if test="$trailing">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="nodes" select="$trailing"/>
+ <xsl:with-param name="blocks" select="$blocks[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id) and $first = 1) or $nodes">
+ <xsl:element name="{local-name($wrap)}" namespace="{namespace-uri($wrap)}">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$nodes" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- make.verbatim.mode replaces spaces and newlines -->
+
+<xsl:template match="/" mode="make.verbatim.mode">
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="make.verbatim.mode">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="make.verbatim.mode">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="text()" mode="make.verbatim.mode">
+ <xsl:variable name="text" select="translate(., ' ', '&#160;')"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#xA;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>&#xA;</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text"
+ select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim-recursive">
+ <xsl:param name="text" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#xA;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>&#xA;</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text"
+ select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- remove.empty.div mode templates remove empty blocks -->
+
+<xsl:template name="remove.empty.div">
+ <xsl:param name="div"/>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($div)" mode="remove.empty.div"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$div"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml"
+ match="html:p|p|html:div|div" mode="remove.empty.div">
+ <xsl:if test="node()">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="*" mode="remove.empty.div">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="remove.empty.div">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl
new file mode 100644
index 0000000..bf76e83
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl
@@ -0,0 +1,612 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: html.xsl 8556 2009-12-11 00:05:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These variables set the align attribute value for HTML output based on
+ the writing-mode specified in the gentext file for the document's lang. -->
+
+<xsl:variable name="direction.align.start">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">left</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">right</xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:variable name="direction.align.end">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">right</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">left</xsl:when>
+ <xsl:otherwise>right</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:variable name="direction.mode">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">ltr</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">rtl</xsl:when>
+ <xsl:otherwise>ltr</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<!-- The generate.html.title template is currently used for generating HTML -->
+<!-- "title" attributes for some inline elements only, but not for any -->
+<!-- block elements. It is called in eleven places in the inline.xsl -->
+<!-- file. But it's called by all the inline.* templates (e.g., -->
+<!-- inline.boldseq), which in turn are called by other (element) -->
+<!-- templates, so it results, currently, in supporting generation of the -->
+<!-- HTML "title" attribute for a total of about 92 elements. -->
+<!-- You can use mode="html.title.attribute" to get a title for -->
+<!-- an element specified by a param, including targets of cross references. -->
+<xsl:template name="generate.html.title">
+ <xsl:apply-templates select="." mode="html.title.attribute"/>
+</xsl:template>
+
+<!-- Generate a title attribute for the context node -->
+<xsl:template match="*" mode="html.title.attribute">
+ <xsl:variable name="is.title">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-numbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-unnumbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="has.title.markup">
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="gentext.title">
+ <xsl:if test="$has.title.markup != '???TITLE???' and
+ ($is.title != 0 or
+ $is.title-numbered != 0 or
+ $is.title-unnumbered != 0)">
+ <xsl:apply-templates select="."
+ mode="object.title.markup.textonly"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($gentext.title) != 0">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$gentext.title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Fall back to alt if available -->
+ <xsl:when test="alt">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(alt)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="html.title.attribute">
+ <xsl:apply-templates select="question" mode="html.title.attribute"/>
+</xsl:template>
+
+<xsl:template match="question" mode="html.title.attribute">
+ <xsl:variable name="label.text">
+ <xsl:apply-templates select="." mode="qanda.label"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($label.text) != 0">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$label.text"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Fall back to alt if available -->
+ <xsl:when test="alt">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(alt)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="dir">
+ <xsl:param name="inherit" select="0"/>
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="@dir">
+ <xsl:value-of select="@dir"/>
+ </xsl:when>
+ <xsl:when test="$inherit != 0">
+ <xsl:value-of select="ancestor::*/@dir[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$dir != ''">
+ <xsl:attribute name="dir">
+ <xsl:value-of select="$dir"/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="anchor">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="conditional" select="1"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id">
+ <a name="{$id}"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target.with.base.dir">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:call-template name="dingbat.characters">
+ <xsl:with-param name="dingbat" select="$dingbat"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat.characters">
+ <!-- now that I'm using the real serializer, all that dingbat malarky -->
+ <!-- isn't necessary anymore... -->
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">&#x2022;</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#x00A9;</xsl:when>
+ <xsl:when test="$dingbat='trademark'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='trade'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='registered'">&#x00AE;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='nbsp'">&#x00A0;</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">&#x201C;</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">&#x201D;</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">&#x2018;</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">&#x2019;</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">&#x2014;</xsl:when>
+ <xsl:when test="$dingbat='mdash'">&#x2014;</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">&#x2013;</xsl:when>
+ <xsl:when test="$dingbat='ndash'">&#x2013;</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#x2022;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="id.warning">
+ <xsl:if test="$id.warnings != 0 and not(@id) and not(@xml:id) and parent::*">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:when>
+ <xsl:when test="substring(local-name(*[1]),
+ string-length(local-name(*[1])-3) = 'info')
+ and *[1]/title">
+ <xsl:value-of select="*[1]/title[1]"/>
+ </xsl:when>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:value-of select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:when test="refnamediv/refname">
+ <xsl:value-of select="refnamediv/refname[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:message>
+ <xsl:text>ID recommended on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="$title != ''">
+ <xsl:text>: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($title) &gt; 40">
+ <xsl:value-of select="substring($title,1,40)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.class.attribute">
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="class.attribute">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class attributes -->
+ <!-- Use element name by default -->
+ <xsl:attribute name="class">
+ <xsl:apply-templates select="." mode="class.value">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="*" mode="class.value">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class value only -->
+ <!-- Use element name by default -->
+ <xsl:value-of select="$class"/>
+</xsl:template>
+
+<!-- Apply common attributes such as class, lang, dir -->
+<xsl:template name="common.html.attributes">
+ <xsl:param name="inherit" select="0"/>
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="$class"/>
+ <xsl:with-param name="inherit" select="$inherit"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="common.html.attributes">
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:param name="inherit" select="0"/>
+ <xsl:call-template name="generate.html.lang"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="$inherit"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="generate.html.title"/>
+</xsl:template>
+
+<!-- Apply common attributes not including class -->
+<xsl:template name="locale.html.attributes">
+ <xsl:apply-templates select="." mode="locale.html.attributes"/>
+</xsl:template>
+
+<xsl:template match="*" mode="locale.html.attributes">
+ <xsl:call-template name="generate.html.lang"/>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+</xsl:template>
+
+<!-- Pass through any lang attributes -->
+<xsl:template name="generate.html.lang">
+ <xsl:apply-templates select="." mode="html.lang.attribute"/>
+</xsl:template>
+
+<xsl:template match="*" mode="html.lang.attribute">
+ <!-- match the attribute name to the output type -->
+ <xsl:choose>
+ <xsl:when test="@lang and $stylesheet.result.type = 'html'">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="@lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@lang and $stylesheet.result.type = 'xhtml'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="@lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@xml:lang and $stylesheet.result.type = 'html'">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="@xml:lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@xml:lang and $stylesheet.result.type = 'xhtml'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="@xml:lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Insert link to css or insert literal CSS in head element -->
+<xsl:template name="generate.css">
+ <xsl:choose>
+ <xsl:when test="$generate.css.header = 0">
+ <xsl:call-template name="generate.css.links"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.css.headers"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.css.headers">
+ <xsl:call-template name="generate.default.css.header"/>
+ <xsl:call-template name="generate.custom.css.header"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.header">
+ <xsl:if test="$make.clean.html != 0 and
+ $docbook.css.source != ''">
+ <!-- Select default file relative to stylesheet -->
+ <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+ <xsl:call-template name="output.css.header">
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.header">
+ <xsl:if test="$custom.css.source != ''">
+ <!-- Select custom file relative to document -->
+ <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+ <xsl:call-template name="output.css.header">
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="output.css.header">
+ <xsl:param name="css.node"/>
+
+ <xsl:choose>
+ <xsl:when test="count($css.node) = 0">
+ </xsl:when>
+ <xsl:otherwise>
+ <style type="text/css">
+ <xsl:copy-of select="$css.node/text()"/>
+ </style>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.css.links">
+ <xsl:call-template name="generate.default.css.link"/>
+ <xsl:call-template name="generate.custom.css.link"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.link">
+ <xsl:if test="$make.clean.html != 0 and
+ $docbook.css.link != 0 and
+ $docbook.css.source != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="src" select="$docbook.css.source"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.link">
+ <xsl:if test="$custom.css.source != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="src" select="$custom.css.source"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- a CSS link reference must take into account the relative
+ path to a CSS file when chunked HTML is output to more than one directory -->
+<xsl:template name="make.css.link">
+ <xsl:param name="css.filename" select="''"/>
+
+ <xsl:variable name="href.to.uri" select="$css.filename"/>
+
+ <xsl:variable name="href.from.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+
+ <xsl:if test="string-length($css.filename) != 0">
+ <link rel="stylesheet"
+ type="text/css"
+ href="{$href}"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="generate.css.files">
+ <xsl:call-template name="generate.default.css.file"/>
+ <xsl:call-template name="generate.custom.css.file"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.file">
+ <xsl:if test="$make.clean.html != 0 and
+ $generate.css.header = 0 and
+ $docbook.css.source != ''">
+ <!-- Select default file relative to stylesheet -->
+ <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+ <xsl:call-template name="generate.css.file">
+ <xsl:with-param name="src" select="$docbook.css.source"/>
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.file">
+ <xsl:if test="$custom.css.source != '' and
+ $generate.css.header = 0">
+ <!-- Select custom file relative to document -->
+ <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+ <xsl:call-template name="generate.css.file">
+ <xsl:with-param name="src" select="$custom.css.source"/>
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.css.file">
+ <xsl:param name="css.node"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="css.text" select="$css.node/text()"/>
+
+ <xsl:choose>
+ <xsl:when test="count($css.node) = 0">
+ <xsl:message>
+ <xsl:text>ERROR: no root element for CSS source file'</xsl:text>
+ <xsl:value-of select="$src"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.pathname">
+ <xsl:with-param name="src" select="$src"/>
+ <xsl:with-param name="content" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content" select="$css.text"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="css.output.filename">
+ <xsl:param name="content"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="candidate">
+ <xsl:choose>
+ <xsl:when test="string-length($src) = 0">
+ <xsl:message>
+ <xsl:text>ERROR: missing CSS input filename.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="substring($src,string-length($src)-3) = '.xml'">
+ <xsl:value-of select="substring($src, 1, string-length($src) - 4)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$src"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$candidate"/>
+</xsl:template>
+
+<xsl:template name="css.output.pathname">
+ <xsl:param name="content"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="file">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="src" select="$src"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="path" select="concat($base.dir, $file)"/>
+ <xsl:value-of select="$path"/>
+
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl
new file mode 100644
index 0000000..1fb5d6f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: htmltbl.xsl 8477 2009-07-13 11:38:55Z nwalsh $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colgroup" mode="htmlTable">
+ <xsl:element name="{local-name()}" namespace="">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="col" mode="htmlTable">
+ <xsl:element name="{local-name()}" namespace="">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="caption" mode="htmlTable">
+ <!-- do not use xsl:copy because of XHTML's needs -->
+ <caption>
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+
+ <xsl:apply-templates select=".." mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+
+ </caption>
+</xsl:template>
+
+<xsl:template match="tbody|thead|tfoot|tr" mode="htmlTable">
+ <xsl:element name="{local-name(.)}">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="th|td" mode="htmlTable">
+ <xsl:element name="{local-name(.)}">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates/> <!-- *not* mode=htmlTable -->
+ </xsl:element>
+</xsl:template>
+
+<!-- don't copy through DocBook-specific attributes on HTML table markup -->
+<!-- default behavior is to not copy through because there are more
+ DocBook attributes than HTML attributes -->
+<xsl:template mode="htmlTableAtt" match="@*"/>
+
+<!-- copy these through -->
+<xsl:template mode="htmlTableAtt"
+ match="@abbr
+ | @align
+ | @axis
+ | @bgcolor
+ | @border
+ | @cellpadding
+ | @cellspacing
+ | @char
+ | @charoff
+ | @class
+ | @dir
+ | @frame
+ | @headers
+ | @height
+ | @lang
+ | @nowrap
+ | @onclick
+ | @ondblclick
+ | @onkeydown
+ | @onkeypress
+ | @onkeyup
+ | @onmousedown
+ | @onmousemove
+ | @onmouseout
+ | @onmouseover
+ | @onmouseup
+ | @rules
+ | @style
+ | @summary
+ | @title
+ | @valign
+ | @valign
+ | @width
+ | @xml:lang">
+ <xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="@span|@rowspan|@colspan" mode="htmlTableAtt">
+ <!-- No need to copy through the DTD's default value "1" of the attribute -->
+ <xsl:if test="number(.) != 1">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- map floatstyle to HTML float values -->
+<xsl:template match="@floatstyle" mode="htmlTableAtt">
+ <xsl:attribute name="style">
+ <xsl:text>float: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains(., 'left')">left</xsl:when>
+ <xsl:when test="contains(., 'right')">right</xsl:when>
+ <xsl:when test="contains(., 'start')">
+ <xsl:value-of select="$direction.align.start"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'end')">
+ <xsl:value-of select="$direction.align.end"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'inside')">
+ <xsl:value-of select="$direction.align.start"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'outside')">
+ <xsl:value-of select="$direction.align.end"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'before')">none</xsl:when>
+ <xsl:when test="contains(., 'none')">none</xsl:when>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:attribute>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl
new file mode 100644
index 0000000..1837020
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl
@@ -0,0 +1,288 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: index.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="index.titlepage"/>
+ <xsl:choose>
+ <xsl:when test="indexdiv">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <!-- Because it's actually valid for Index to have neither any -->
+ <!-- Indexdivs nor any Indexentries, we need to check and make -->
+ <!-- sure that at least one Indexentry exists, and generate a -->
+ <!-- wrapper dl if there is at least one; otherwise, do nothing. -->
+ <xsl:if test="indexentry">
+ <!-- The indexentry template assumes a parent dl wrapper has -->
+ <!-- been generated; for Indexes that have Indexdivs, the dl -->
+ <!-- wrapper is generated by the indexdiv template; however, -->
+ <!-- for Indexes that lack Indexdivs, if we don't generate a -->
+ <!-- dl here, HTML output will not be valid. -->
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="setindex">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="setindex.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="index/indexinfo"></xsl:template>
+<xsl:template match="index/info"></xsl:template>
+<xsl:template match="index/title"></xsl:template>
+<xsl:template match="index/subtitle"></xsl:template>
+<xsl:template match="index/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexdiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexterm">
+ <!-- this one must have a name, even if it doesn't have an ID -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <a class="indexterm" name="{$id}"/>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary|see|seealso">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexentry">
+ <xsl:apply-templates select="primaryie"/>
+</xsl:template>
+
+<xsl:template match="primaryie">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <xsl:apply-templates select="following-sibling::seeie
+ [not(preceding-sibling::secondaryie)]"
+ mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie
+ [not(preceding-sibling::secondaryie)]"
+ mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::secondaryie"
+ mode="indexentry"/>
+ </dd>
+</xsl:template>
+
+<!-- Handled in mode to convert flat list to structured output -->
+<xsl:template match="secondaryie">
+</xsl:template>
+<xsl:template match="tertiaryie">
+</xsl:template>
+<xsl:template match="seeie|seealsoie">
+</xsl:template>
+
+<xsl:template match="secondaryie" mode="indexentry">
+ <dl>
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <!-- select following see* elements up to next secondaryie or tertiary or end -->
+ <xsl:variable name="after.this"
+ select="following-sibling::*"/>
+ <xsl:variable name="next.entry"
+ select="(following-sibling::secondaryie|following-sibling::tertiaryie)[1]"/>
+ <xsl:variable name="before.entry"
+ select="$next.entry/preceding-sibling::*"/>
+ <xsl:variable name="see.intersection"
+ select="$after.this[count(.|$before.entry) = count($before.entry)]
+ [self::seeie or self::seealsoie]"/>
+ <xsl:choose>
+ <xsl:when test="count($see.intersection) != 0">
+ <xsl:apply-templates select="$see.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="count($next.entry) = 0">
+ <xsl:apply-templates select="following-sibling::seeie"
+ mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie"
+ mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- now process any tertiaryie before the next secondaryie -->
+ <xsl:variable name="before.next.secondary"
+ select="following-sibling::secondaryie[1]/preceding-sibling::*"/>
+ <xsl:variable name="tertiary.intersection"
+ select="$after.this[count(.|$before.next.secondary) =
+ count($before.next.secondary)]
+ [not(self::seeie) and not(self::seealsoie)]"/>
+ <xsl:choose>
+ <xsl:when test="count($tertiary.intersection) != 0">
+ <xsl:apply-templates select="$tertiary.intersection"
+ mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="not(following-sibling::secondaryie)">
+ <xsl:apply-templates select="following-sibling::tertiaryie"
+ mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+ </dd>
+ </dl>
+</xsl:template>
+
+<xsl:template match="tertiaryie" mode="indexentry">
+ <dl>
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <!-- select following see* elements up to next secondaryie or tertiary or end -->
+ <xsl:variable name="after.this"
+ select="following-sibling::*"/>
+ <xsl:variable name="next.entry"
+ select="(following-sibling::secondaryie|following-sibling::tertiaryie)[1]"/>
+ <xsl:variable name="before.entry"
+ select="$next.entry/preceding-sibling::*"/>
+ <xsl:variable name="see.intersection"
+ select="$after.this[count(.|$before.entry) = count($before.entry)]
+ [self::seeie or self::seealsoie]"/>
+ <xsl:choose>
+ <xsl:when test="count($see.intersection) != 0">
+ <xsl:apply-templates select="$see.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="count($next.entry) = 0">
+ <xsl:apply-templates select="following-sibling::seeie"
+ mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie"
+ mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+ </dd>
+ </dl>
+</xsl:template>
+
+<xsl:template match="seeie" mode="indexentry">
+ <dt>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </dt>
+</xsl:template>
+
+<xsl:template match="seealsoie" mode="indexentry">
+ <div>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl
new file mode 100644
index 0000000..404ac13
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl
@@ -0,0 +1,43 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: info.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These templates define the "default behavior" for info
+ elements. Even if you don't process the *info wrappers,
+ some of these elements are needed because the elements are
+ processed from named templates that are called with modes.
+ Since modes aren't sticky, these rules apply.
+ (TODO: clarify this comment) -->
+
+<!-- ==================================================================== -->
+<!-- called from named templates in a given mode -->
+
+<xsl:template match="corpauthor">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="jobtitle">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl
new file mode 100644
index 0000000..cd3d342
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl
@@ -0,0 +1,1490 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
+ exclude-result-prefixes="xlink suwl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: inline.xsl 8811 2010-08-09 20:24:45Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm)"/>
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm/@baseform)"/>
+
+<xsl:template name="simple.xlink">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:param name="linkend" select="$node/@linkend"/>
+ <xsl:param name="xhref" select="$node/@xlink:href"/>
+
+ <!-- Support for @xlink:show -->
+ <xsl:variable name="target.show">
+ <xsl:choose>
+ <xsl:when test="$node/@xlink:show = 'new'">_blank</xsl:when>
+ <xsl:when test="$node/@xlink:show = 'replace'">_top</xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="link">
+ <xsl:choose>
+ <xsl:when test="$xhref and
+ (not($node/@xlink:type) or
+ $node/@xlink:type='simple')">
+
+ <!-- Is it a local idref or a uri? -->
+ <xsl:variable name="is.idref">
+ <xsl:choose>
+ <!-- if the href starts with # and does not contain an "(" -->
+ <!-- or if the href starts with #xpointer(id(, it's just an ID -->
+ <xsl:when test="starts-with($xhref,'#')
+ and (not(contains($xhref,'&#40;'))
+ or starts-with($xhref,
+ '#xpointer&#40;id&#40;'))">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Is it an olink ? -->
+ <xsl:variable name="is.olink">
+ <xsl:choose>
+ <!-- If xlink:role="http://docbook.org/xlink/role/olink" -->
+ <!-- and if the href contains # -->
+ <xsl:when test="contains($xhref,'#') and
+ @xlink:role = $xolink.role">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$is.olink = 1">
+ <xsl:call-template name="olink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$is.idref = 1">
+
+ <xsl:variable name="idref">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targets" select="key('id',$idref)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$idref"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XLink to nonexistent id: </xsl:text>
+ <xsl:value-of select="$idref"/>
+ </xsl:message>
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$target"
+ mode="html.title.attribute"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$target.show !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$target.show"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- otherwise it's a URI -->
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$xhref"/>
+ </xsl:attribute>
+ <xsl:if test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- For URIs, use @xlink:show if defined, otherwise use ulink.target -->
+ <xsl:choose>
+ <xsl:when test="$target.show !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$target.show"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$ulink.target !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:copy-of select="$content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$linkend">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$target" mode="html.title.attribute"/>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.charseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- * if you want output from the inline.charseq template wrapped in -->
+ <!-- * something other than a Span, call the template with some value -->
+ <!-- * for the 'wrapper-name' param -->
+ <xsl:param name="wrapper-name">span</xsl:param>
+ <xsl:element name="{$wrapper-name}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="inline.monoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+</xsl:template>
+
+<xsl:template name="inline.boldseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title'
+ and (local-name(../..) = 'figure'
+ or local-name(../..) = 'example'
+ or local-name(../..) = 'table')">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:copy-of select="$content"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.italicseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.boldmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <!-- or other titles that may already be represented with <strong>'s. -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title'
+ and (local-name(../..) = 'figure'
+ or local-name(../..) = 'example'
+ or local-name(../..) = 'table'
+ or local-name(../..) = 'formalpara')">
+ <code>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:call-template name="common.html.attributes"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ </code>
+ <xsl:call-template name="apply-annotations"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.italicmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:call-template name="common.html.attributes"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.superscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sup>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sup>
+</xsl:template>
+
+<xsl:template name="inline.subscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sub>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sub>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- some special cases -->
+
+<xsl:template match="author">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="accel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="action">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="application">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="exceptionname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="interfacename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="methodname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="computeroutput">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="constant">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="database">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="date">
+ <!-- should this support locale-specific formatting? how? -->
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorcode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortype">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortext">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="envar">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="filename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="function">
+ <xsl:choose>
+ <xsl:when test="$function.parens != '0'
+ and (parameter or function or replaceable)">
+ <xsl:variable name="nodes" select="text()|*"/>
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$nodes[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="$nodes[position()>1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="function/parameter" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="function/replaceable" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="guibutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guiicon">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guilabel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenuitem">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guisubmenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="hardware">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interface">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interfacedefinition">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keycap">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="keycode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keysym">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="literal">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="code">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="medialabel">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="shortcut">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="mousebutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="option">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="package">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="parameter">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="property">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="prompt">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="replaceable" priority="1">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="returnvalue">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="structfield">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="structname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="symbol">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="systemitem">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="token">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="type">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="userinput">
+ <xsl:call-template name="inline.boldmonoseq"/>
+</xsl:template>
+
+<xsl:template match="abbrev">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">abbr</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acronym">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">acronym</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <xsl:choose>
+ <xsl:when test="$citerefentry.link != '0'">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="generate.citerefentry.link"/>
+ </xsl:attribute>
+ <xsl:call-template name="inline.charseq"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.citerefentry.link">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template name="x.generate.citerefentry.link">
+ <xsl:text>http://example.com/cgi-bin/man.cgi?</xsl:text>
+ <xsl:value-of select="refentrytitle"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="manvolnum"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="citetitle">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <span>
+ <xsl:choose>
+ <!-- We don't want empty @class values, so do not propagate empty @roles -->
+ <xsl:when test="@role and
+ normalize-space(@role) != '' and
+ $emphasis.propagates.style != 0">
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="@role = 'bold' or @role='strong'">
+ <!-- backwards compatibility: make bold into b elements, but -->
+ <!-- don't put bold inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title'
+ and (local-name(../..) = 'figure'
+ or local-name(../..) = 'example'
+ or local-name(../..) = 'table')">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@role and $emphasis.propagates.style != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="foreignphrase">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.italicseq"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="markup">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phrase">
+ <span>
+ <xsl:call-template name="locale.html.attributes"/>
+ <!-- We don't want empty @class values, so do not propagate empty @roles -->
+ <xsl:if test="@role and
+ normalize-space(@role) != '' and
+ $phrase.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="quote">
+ <xsl:variable name="depth">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string">
+ <xsl:number level="multiple"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$depth mod 2 = 0">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nestedstartquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.nestedendquote"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="wordasword">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="lineannotation">
+ <em>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.charseq"/>
+ </em>
+</xsl:template>
+
+<xsl:template match="superscript">
+ <xsl:call-template name="inline.superscriptseq"/>
+</xsl:template>
+
+<xsl:template match="subscript">
+ <xsl:call-template name="inline.subscriptseq"/>
+</xsl:template>
+
+<xsl:template match="trademark">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:choose>
+ <xsl:when test="@class = 'copyright'
+ or @class = 'registered'">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@class = 'service'">
+ <sup>SM</sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="'trademark'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="firstterm">
+ <xsl:call-template name="glossterm">
+ <xsl:with-param name="firstterm" select="1"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="glossterm" name="glossterm">
+ <xsl:param name="firstterm" select="0"/>
+
+ <!-- To avoid extra <a name=""> anchor from inline.italicseq -->
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend)
+ and ($firstterm.only.link = 0 or $firstterm = 1)
+ and ($glossterm.auto.link != 0)
+ and $glossary.collection != ''">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cterm"
+ select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/>
+
+ <!-- HACK HACK HACK! But it works... -->
+ <!-- You'd need to do more work if you wanted to chunk on glossdiv, though -->
+
+ <xsl:variable name="glossary" select="//glossary[@role='auto']"/>
+
+ <xsl:if test="count($glossary) != 1">
+ <xsl:message>
+ <xsl:text>Warning: glossary.collection specified, but there are </xsl:text>
+ <xsl:value-of select="count($glossary)"/>
+ <xsl:text> automatic glossaries</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="glosschunk">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$glossary"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunkbase">
+ <xsl:choose>
+ <xsl:when test="contains($glosschunk, '#')">
+ <xsl:value-of select="substring-before($glosschunk, '#')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$glosschunk"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($cterm)">
+ <xsl:message>
+ <xsl:text>There's no entry for </xsl:text>
+ <xsl:value-of select="$term"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cterm"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <a href="{$chunkbase}#{$id}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend)
+ and ($firstterm.only.link = 0 or $firstterm = 1)
+ and $glossterm.auto.link != 0">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform">
+ <xsl:value-of select="normalize-space(@baseform)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="targets"
+ select="key('glossentries', $term)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no glossentry for glossterm: </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="termdef">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'prefix'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'suffix'"/>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="sgmltag|tag">
+ <xsl:call-template name="format.sgmltag"/>
+</xsl:template>
+
+<xsl:template name="format.sgmltag">
+ <xsl:param name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>element</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$class='attribute'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='attvalue'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='element'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='endtag'">
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='genentity'">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='numcharref'">
+ <xsl:text>&amp;#</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='paramentity'">
+ <xsl:text>%</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='pi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='xmlpi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>?&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='starttag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='emptytag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>/&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='sgmlcomment' or $class='comment'">
+ <xsl:text>&lt;!--</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>--&gt;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="concat('sgmltag-', $class)"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </code>
+</xsl:template>
+
+<xsl:template match="email">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&lt;</xsl:text>
+ </xsl:if>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:text>mailto:</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&gt;</xsl:text>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="keycombo">
+ <xsl:variable name="action" select="@action"/>
+ <xsl:variable name="joinchar">
+ <xsl:choose>
+ <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when>
+ <xsl:when test="$action='simul'">+</xsl:when>
+ <xsl:when test="$action='press'">-</xsl:when>
+ <xsl:when test="$action='click'">-</xsl:when>
+ <xsl:when test="$action='double-click'">-</xsl:when>
+ <xsl:when test="$action='other'"></xsl:when>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="*">
+ <xsl:if test="position()>1"><xsl:value-of select="$joinchar"/></xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="uri">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="menuchoice">
+ <xsl:variable name="shortcut" select="./shortcut"/>
+ <xsl:call-template name="process.menuchoice"/>
+ <xsl:if test="$shortcut">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="$shortcut"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.menuchoice">
+ <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($nodelist)"></xsl:when>
+ <xsl:when test="$count=1">
+ <xsl:apply-templates select="$nodelist[$count=position()]"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="node" select="$nodelist[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='guimenuitem'
+ or local-name($node)='guisubmenu'">
+ <xsl:value-of select="$menuchoice.menu.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$menuchoice.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$node"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+</xsl:template>
+
+<xsl:template match="citation">
+ <!-- todo: integrate with bibliography collection -->
+ <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to abbrev -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$target" mode="citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </a>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="citebiblioid">
+ <xsl:variable name="targets" select="//*[biblioid = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to parent of biblioid -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.charseq"/>
+
+ </a>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="citation">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="comment[&comment.block.parents;]|remark[&comment.block.parents;]">
+ <xsl:if test="$show.comments != 0">
+ <p class="remark"><em><xsl:call-template name="inline.charseq"/></em></p>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="comment|remark">
+ <xsl:if test="$show.comments != 0">
+ <em><xsl:call-template name="inline.charseq"/></em>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productname">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="productnumber">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="pob|street|city|state|postcode|country|otheraddr">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phone|fax">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- in Addresses, for example -->
+<xsl:template match="honorific|firstname|surname|lineage|othername">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="person">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="personname"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="personname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="org">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="beginpage">
+ <!-- does nothing; this *is not* markup to force a page break. -->
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl
new file mode 100644
index 0000000..c12e39f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl
@@ -0,0 +1,35 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: keywords.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="keywordset"></xsl:template>
+<xsl:template match="subjectset"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="keywordset" mode="html.header">
+ <meta name="keywords">
+ <xsl:attribute name="content">
+ <xsl:apply-templates select="keyword" mode="html.header"/>
+ </xsl:attribute>
+ </meta>
+</xsl:template>
+
+<xsl:template match="keyword" mode="html.header">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::keyword">, </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl
new file mode 100644
index 0000000..52123b0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl
@@ -0,0 +1,1183 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: lists.xsl 8524 2009-10-10 02:45:47Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="itemizedlist">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::listitem
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::listitem)]
+ |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <ul>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:if test="$css.decoration != 0">
+ <xsl:attribute name="type">
+ <xsl:call-template name="list.itemsymbol"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@spacing='compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates
+ select="listitem
+ |comment()[preceding-sibling::listitem]
+ |processing-instruction()[preceding-sibling::listitem]"/>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="itemizedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <xsl:variable name="mark" select="../@mark"/>
+ <xsl:variable name="override" select="@override"/>
+
+ <xsl:variable name="usemark">
+ <xsl:choose>
+ <xsl:when test="$override != ''">
+ <xsl:value-of select="$override"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$mark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cssmark">
+ <xsl:choose>
+ <xsl:when test="$usemark = 'opencircle'">circle</xsl:when>
+ <xsl:when test="$usemark = 'bullet'">disc</xsl:when>
+ <xsl:when test="$usemark = 'box'">square</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$usemark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$css.decoration = '1' and $cssmark != ''">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:value-of select="$cssmark"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="orderedlist">
+ <xsl:variable name="start">
+ <xsl:call-template name="orderedlist-starting-number"/>
+ </xsl:variable>
+
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration"/>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">1</xsl:when>
+ <xsl:when test="$numeration='loweralpha'">a</xsl:when>
+ <xsl:when test="$numeration='lowerroman'">i</xsl:when>
+ <xsl:when test="$numeration='upperalpha'">A</xsl:when>
+ <xsl:when test="$numeration='upperroman'">I</xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected numeration: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ </xsl:message>
+ <xsl:value-of select="1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::listitem
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::listitem)]
+ |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <xsl:choose>
+ <xsl:when test="@inheritnum='inherit' and ancestor::listitem[parent::orderedlist]">
+ <table border="0">
+ <xsl:call-template name="generate.class.attribute"/>
+ <col align="{$direction.align.start}" valign="top"/>
+ <tbody>
+ <xsl:apply-templates
+ mode="orderedlist-table"
+ select="listitem
+ |comment()[preceding-sibling::listitem]
+ |processing-instruction()[preceding-sibling::listitem]"/>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:if test="$start != '1'">
+ <xsl:attribute name="start">
+ <xsl:value-of select="$start"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$numeration != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$type"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@spacing='compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates
+ select="listitem
+ |comment()[preceding-sibling::listitem]
+ |processing-instruction()[preceding-sibling::listitem]"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="orderedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem">
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="@override">
+ <xsl:attribute name="value">
+ <xsl:value-of select="@override"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem" mode="orderedlist-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="." mode="item-number"/>
+ </td>
+ <td>
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="pi-presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:choose>
+ <xsl:when test="$pi-presentation != ''">
+ <xsl:value-of select="$pi-presentation"/>
+ </xsl:when>
+ <xsl:when test="$variablelist.as.table != 0">
+ <xsl:value-of select="'table'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'list'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbhtml_term-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::varlistentry
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::varlistentry)]
+ |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <col align="{$direction.align.start}" valign="top">
+ <xsl:if test="$term-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$term-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ <tbody>
+ <xsl:apply-templates mode="varlist-table"
+ select="varlistentry
+ |comment()[preceding-sibling::varlistentry]
+ |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::varlistentry
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::varlistentry)]
+ |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <dl>
+ <xsl:apply-templates
+ select="varlistentry
+ |comment()[preceding-sibling::varlistentry]
+ |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="variablelist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="listitem/simpara" priority="2">
+ <!-- If a listitem contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*)
+ and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:choose>
+ <xsl:when test="@role and $para.propagates.style != 0">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry">
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="term"/>
+ </dt>
+ <dd>
+ <xsl:apply-templates select="listitem"/>
+ </dd>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="varlist-table">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_term-presentation">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="separator">
+ <xsl:call-template name="pi.dbhtml_term-separator">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="variablelist" count="varlistentry"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td>
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$presentation = 'bold'">
+ <strong>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </strong>
+ </xsl:when>
+ <xsl:when test="$presentation = 'italic'">
+ <em>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </em>
+ </xsl:when>
+ <xsl:when test="$presentation = 'bold-italic'">
+ <strong>
+ <em>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </em>
+ </strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </td>
+ <td>
+ <xsl:apply-templates select="listitem"/>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="varlistentry/term">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <xsl:value-of select="$variablelist.term.separator"/>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <br/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem">
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="simplelist">
+ <!-- with no type specified, the default is 'vert' -->
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <!-- if dbchoice PI exists, use that to determine the choice separator -->
+ <!-- (that is, equivalent of "and" or "or" in current locale), or literal -->
+ <!-- value of "choice" otherwise -->
+ <xsl:variable name="localized-choice-separator">
+ <xsl:choose>
+ <xsl:when test="processing-instruction('dbchoice')">
+ <xsl:call-template name="select.choice.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="member">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="position() = last() - 1">
+ <xsl:if test="$localized-choice-separator != ''">
+ <xsl:value-of select="$localized-choice-separator"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </span>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='horiz']">
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='vert']">
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+
+ <xsl:if test="$cell &lt;= count($members)">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="(($cell - 1) div $cols) + 1"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell + $cols"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="rows"
+ select="floor((count($members)+$cols - 1) div $cols)"/>
+
+ <xsl:if test="$cell &lt;= $rows">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="$cell"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="rows">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell+$rows"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="member">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="procedure">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:variable name="preamble"
+ select="*[not(self::step
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::step)]
+ |processing-instruction()[not(preceding-sibling::step)]"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="title">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:choose>
+ <xsl:when test="count(step) = 1">
+ <ul>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:apply-templates
+ select="step
+ |comment()[preceding-sibling::step]
+ |processing-instruction()[preceding-sibling::step]"/>
+ </ul>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:attribute name="type">
+ <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/>
+ </xsl:attribute>
+ <xsl:apply-templates
+ select="step
+ |comment()[preceding-sibling::step]
+ |processing-instruction()[preceding-sibling::step]"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="procedure/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="substeps">
+ <xsl:variable name="numeration">
+ <xsl:call-template name="procedure.step.numeration"/>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <ol type="{$numeration}">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </ol>
+</xsl:template>
+
+<xsl:template match="step">
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<xsl:template match="stepalternatives">
+ <xsl:call-template name="anchor"/>
+ <ul>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </ul>
+</xsl:template>
+
+<xsl:template match="step/title">
+ <p>
+ <xsl:call-template name="common.html.attributes"/>
+ <b>
+ <xsl:apply-templates/>
+ </b>
+ </p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="segmentedlist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$segmentedlist.as.table != 0">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist/title">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong>
+ <span>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:apply-templates/>
+ </span>
+ </strong>
+ </div>
+</xsl:template>
+
+<xsl:template match="segtitle">
+</xsl:template>
+
+<xsl:template match="segtitle" mode="segtitle-in-seg">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seglistitem">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="seg">
+ <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
+ <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
+ <xsl:variable name="segtitles" select="$seglist/segtitle"/>
+
+ <!--
+ Note: segtitle is only going to be the right thing in a well formed
+ SegmentedList. If there are too many Segs or too few SegTitles,
+ you'll get something odd...maybe an error
+ -->
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong>
+ <span class="segtitle">
+ <xsl:apply-templates select="$segtitles[$segnum=position()]"
+ mode="segtitle-in-seg"/>
+ <xsl:text>: </xsl:text>
+ </span>
+ </strong>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist" mode="seglist-table">
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:apply-templates select="title"/>
+
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <thead>
+ <tr class="segtitle">
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="segtitle[1]"/>
+ <xsl:with-param name="rownum" select="1"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="segtitle" mode="seglist-table"/>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<xsl:template match="segtitle" mode="seglist-table">
+ <th><xsl:apply-templates/></th>
+</xsl:template>
+
+<xsl:template match="seglistitem" mode="seglist-table">
+ <xsl:variable name="seglinum">
+ <xsl:number from="segmentedlist" count="seglistitem"/>
+ </xsl:variable>
+
+ <tr>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum" select="$seglinum + 1"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="seglist-table"/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="seg" mode="seglist-table">
+ <td>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </td>
+</xsl:template>
+
+<xsl:template match="seg[1]" mode="seglist-table">
+ <td>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::seglistitem"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="calloutlist">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title|info/title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::callout or self::title or self::titleabbrev)]
+ |comment()[not(preceding-sibling::callout)]
+ |processing-instruction()[not(preceding-sibling::callout)]"/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <table border="0" summary="Callout list">
+ <xsl:apply-templates select="callout
+ |comment()[preceding-sibling::callout]
+ |processing-instruction()[preceding-sibling::callout]"/>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl compact="compact">
+ <xsl:apply-templates select="callout
+ |comment()[preceding-sibling::callout]
+ |processing-instruction()[preceding-sibling::callout]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="calloutlist/title">
+</xsl:template>
+
+<xsl:template match="callout">
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="calloutlist" count="callout"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td width="5%" valign="top" align="{$direction.align.start}">
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </p>
+ </td>
+ <td valign="top" align="{$direction.align.start}">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </dt>
+ <dd><xsl:apply-templates/></dd>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="callout/simpara" priority="2">
+ <!-- If a callout contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*)
+ and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:choose>
+ <xsl:when test="@role and $para.propagates.style != 0">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="callout.arearefs">
+ <xsl:param name="arearefs"></xsl:param>
+ <xsl:if test="$arearefs!=''">
+ <xsl:choose>
+ <xsl:when test="substring-before($arearefs,' ')=''">
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="$arearefs"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef"
+ select="substring-before($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs"
+ select="substring-after($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="callout.arearef">
+ <xsl:param name="arearef"></xsl:param>
+ <xsl:variable name="targets" select="key('id',$arearef)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$arearef"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target)=0">
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='co'">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="$arearef"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="callout-bug"/>
+ </a>
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='areaset'">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($target)='area'">
+ <xsl:choose>
+ <xsl:when test="$target/parent::areaset">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target/parent::areaset"
+ mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="orderedlist-starting-number">
+ <xsl:param name="list" select="."/>
+ <xsl:variable name="pi-start">
+ <xsl:call-template name="pi.dbhtml_start">
+ <xsl:with-param name="node" select="$list"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="output-orderedlist-starting-number">
+ <xsl:with-param name="list" select="$list"/>
+ <xsl:with-param name="pi-start" select="$pi-start"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl
new file mode 100644
index 0000000..1ba3931
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl
@@ -0,0 +1,86 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: maketoc.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk.xsl"/>
+
+<xsl:output method="xml" indent="no" encoding='utf-8'/>
+
+<xsl:param name="toc.list.type" select="'tocentry'"/>
+
+<!-- refentry in autotoc.xsl does not use subtoc, so must
+ handle it explicitly here. -->
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+<xsl:template name="subtoc">
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+ <xsl:variable name="filename">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:if test="$chunk != 0">
+ <xsl:call-template name="indent-spaces"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <tocentry linkend="{$id}">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:text>filename="</xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:apply-templates mode="toc" select="$nodes"/>
+ <xsl:call-template name="indent-spaces"/>
+ </tocentry>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="indent-spaces">
+ <xsl:param name="node" select="."/>
+ <xsl:text> </xsl:text>
+ <xsl:if test="$node/parent::*">
+ <xsl:call-template name="indent-spaces">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/" priority="-1">
+ <xsl:text>&#xA;</xsl:text>
+ <toc role="chunk-toc">
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:apply-templates select="/" mode="toc"/>
+ </toc>
+ <xsl:text>&#xA;</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl
new file mode 100644
index 0000000..01faacc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl
@@ -0,0 +1,22 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: manifest.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- OBSOLETE. The templates from this file were moved to -->
+<!-- chunk-common.xsl and chunk-code.xsl. -->
+<!-- ==================================================================== -->
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl
new file mode 100644
index 0000000..801b106
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl
@@ -0,0 +1,270 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ exclude-result-prefixes="mml"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: math.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="inlineequation">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="alt">
+</xsl:template>
+
+<xsl:template match="mathphrase">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- "Support" for MathML -->
+
+<xsl:template match="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- Support for TeX math in alt -->
+
+<xsl:template match="*" mode="collect.tex.math">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$tex.math.file"/>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$tex.math.in.alt = 'plain'">
+ <xsl:call-template name="tex.math.plain.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.plain"/>
+ <xsl:call-template name="tex.math.plain.tail"/>
+ </xsl:when>
+ <xsl:when test="$tex.math.in.alt = 'latex'">
+ <xsl:call-template name="tex.math.latex.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.latex"/>
+ <xsl:call-template name="tex.math.latex.tail"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Unsupported TeX math notation:
+ <xsl:value-of select="$tex.math.in.alt"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- PlainTeX -->
+
+<xsl:template name="tex.math.plain.head">
+ <xsl:text>\nopagenumbers &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.plain.tail">
+ <xsl:text>\bye &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.plain"/>
+
+<!-- LaTeX -->
+
+<xsl:template name="tex.math.latex.head">
+ <xsl:text>\documentclass{article} &#xA;</xsl:text>
+ <xsl:text>\pagestyle{empty} &#xA;</xsl:text>
+ <xsl:text>\begin{document} &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.latex.tail">
+ <xsl:text>\end{document} &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.latex"/>
+
+<!-- Extracting image filename from mediaobject and graphic elements -->
+
+<xsl:template name="select.mediaobject.filename">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$mediaobject.index != ''">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object"
+ select="$olist[position() = $mediaobject.index]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="tex.math.output.delims">
+ <xsl:variable name="pi.delims">
+ <xsl:call-template name="pi.dbtex_delims">
+ <xsl:with-param name="node" select="descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="result">
+ <xsl:choose>
+ <xsl:when test="$pi.delims = 'no'">0</xsl:when>
+ <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$result"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl
new file mode 100644
index 0000000..fe6b17c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl
@@ -0,0 +1,202 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:redirect="http://xml.apache.org/xalan/redirect"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.1"
+ exclude-result-prefixes="doc"
+ extension-element-prefixes="saxon redirect lxslt">
+
+<!-- ********************************************************************
+ $Id: oldchunker.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with Saxon and Xalan; for XT use xtchunker.xsl -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="default.encoding" select="'ISO-8859-1'" doc:type='string'/>
+
+<doc:param name="default.encoding" xmlns="">
+<refpurpose>Encoding used in generated HTML pages</refpurpose>
+<refdescription>
+<para>This encoding is used in files generated by chunking stylesheet. Currently
+only Saxon is able to change output encoding.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'" doc:type='string'/>
+
+<doc:param name="saxon.character.representation" xmlns="">
+<refpurpose>Saxon character representation used in generated HTML pages</refpurpose>
+<refdescription>
+<para>This character representation is used in files generated by chunking stylesheet. If
+you want to suppress entity references for characters with direct representation
+in default.encoding, set this parameter to value <literal>native</literal>.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Chunking isn't supported with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="doctype-public" select="''"/>
+ <xsl:param name="doctype-system" select="''"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl
new file mode 100644
index 0000000..527dccf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml
new file mode 100644
index 0000000..e70de9c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml
@@ -0,0 +1,10905 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0">
+<info>
+<title>HTML Parameter Reference</title>
+<releaseinfo role="meta">
+$Id: param.xweb 8552 2009-12-07 17:45:26Z bobstayton $
+</releaseinfo>
+<author>
+ <personname>
+ <surname>Walsh</surname>
+ <firstname>Norman</firstname>
+ </personname>
+</author>
+<copyright>
+ <year>1999</year>
+ <year>2000</year>
+ <year>2001</year>
+ <year>2002</year>
+ <year>2003</year>
+ <year>2004</year>
+ <year>2005</year>
+ <year>2006</year>
+ <year>2007</year>
+ <holder>Norman Walsh</holder>
+</copyright>
+<abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook XSL HTML stylesheets (for generating
+ HTML output).</para>
+</abstract>
+</info>
+<reference xml:id="admons"><title>Admonitions</title>
+<refentry version="5.0" xml:id="admon.graphics.extension">
+<refmeta>
+<refentrytitle>admon.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.extension</refname>
+<refpurpose>Filename extension for admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.graphics.extension.frag">
+&lt;xsl:param name="admon.graphics.extension"&gt;.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on admonition graphics.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admon.graphics.path">
+<refmeta>
+<refentrytitle>admon.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.path</refname>
+<refpurpose>Path to admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.graphics.path.frag">&lt;xsl:param name="admon.graphics.path"&gt;images/&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory containing the admonition graphics
+(caution.png, important.png etc). This location is normally relative
+to the output html directory. See <parameter>base.dir</parameter></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admon.graphics">
+<refmeta>
+<refentrytitle>admon.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics</refname>
+<refpurpose>Use graphics in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.graphics.frag">
+&lt;xsl:param name="admon.graphics" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented in an alternate style that uses
+a graphic. Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admon.textlabel">
+<refmeta>
+<refentrytitle>admon.textlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.textlabel</refname>
+<refpurpose>Use text label in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.textlabel.frag">
+&lt;xsl:param name="admon.textlabel" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented with a generated
+text label such as Note or Warning in the appropriate language.
+If zero, such labels are turned off, but any title child
+of the admonition element are still output.
+The default value is 1.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="admon.style">
+<refmeta>
+<refentrytitle>admon.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.style</refname>
+<refpurpose>Specifies the CSS style attribute that should be added to
+admonitions.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="admon.style.frag">&lt;xsl:param name="admon.style"&gt;
+ &lt;xsl:value-of select="concat('margin-', $direction.align.start, ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"&gt;&lt;/xsl:value-of&gt;
+&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the value of the CSS <tag class="attribute">style</tag>
+attribute that should be added to admonitions.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="callouts"><title>Callouts</title>
+<refentry version="5.0" xml:id="callout.defaultcolumn">
+<refmeta>
+<refentrytitle>callout.defaultcolumn</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.defaultcolumn</refname>
+<refpurpose>Indicates what column callouts appear in by default</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.defaultcolumn.frag">
+&lt;xsl:param name="callout.defaultcolumn"&gt;60&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a callout does not identify a column (for example, if it uses
+the <literal>linerange</literal> <tag class="attribute">unit</tag>),
+it will appear in the default column.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics.extension">
+<refmeta>
+<refentrytitle>callout.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.extension</refname>
+<refpurpose>Filename extension for callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.extension.frag">
+&lt;xsl:param name="callout.graphics.extension"&gt;.png&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Sets the filename extension to use on callout graphics. </para>
+
+<itemizedlist>
+<para>The Docbook XSL distribution provides callout graphics in the following formats:</para>
+<listitem><para>SVG (extension: <filename class="extension">.svg</filename>)</para></listitem>
+<listitem><para>PNG (extension: <filename class="extension">.png</filename>)</para></listitem>
+<listitem><para>GIF (extension: <filename class="extension">.gif</filename>)</para></listitem>
+</itemizedlist>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics.number.limit">
+<refmeta>
+<refentrytitle>callout.graphics.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.number.limit</refname>
+<refpurpose>Number of the largest callout graphic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.number.limit.frag">
+&lt;xsl:param name="callout.graphics.number.limit"&gt;15&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is non-zero, graphics
+are used to represent callout numbers instead of plain text. The value
+of <parameter>callout.graphics.number.limit</parameter> is the largest
+number for which a graphic exists. If the callout number exceeds this
+limit, the default presentation "(plain text instead of a graphic)"
+will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics.path">
+<refmeta>
+<refentrytitle>callout.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.path</refname>
+<refpurpose>Path to callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.path.frag">
+&lt;xsl:param name="callout.graphics.path"&gt;images/callouts/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory holding the callout graphics. his
+location is normally relative to the output html directory. see
+base.dir. Always terminate the directory with / since the graphic file
+is appended to this string, hence needs the separator.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.graphics">
+<refmeta>
+<refentrytitle>callout.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics</refname>
+<refpurpose>Use graphics for callouts?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.graphics.frag">
+&lt;xsl:param name="callout.graphics" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, callouts are presented with graphics (e.g., reverse-video
+circled numbers instead of "(1)", "(2)", etc.).
+Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.list.table">
+<refmeta>
+<refentrytitle>callout.list.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.list.table</refname>
+<refpurpose>Present callout lists using a table?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.list.table.frag">
+&lt;xsl:param name="callout.list.table" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default presentation of <tag>calloutlist</tag>s uses
+an HTML <tag>DL</tag> element. Some browsers don't align DLs very well
+if <parameter>callout.graphics</parameter> is used. With this option
+turned on, <tag>calloutlist</tag>s are presented in an HTML
+<tag>TABLE</tag>, which usually results in better alignment
+of the callout number with the callout description.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.unicode.number.limit">
+<refmeta>
+<refentrytitle>callout.unicode.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.number.limit</refname>
+<refpurpose>Number of the largest unicode callout character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.unicode.number.limit.frag">
+&lt;xsl:param name="callout.unicode.number.limit"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.number.limit</parameter>
+is
+the largest number for which a unicode character exists. If the callout number
+exceeds this limit, the default presentation "(nnn)" will always
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.unicode.start.character">
+<refmeta>
+<refentrytitle>callout.unicode.start.character</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.start.character</refname>
+<refpurpose>First Unicode character to use, decimal value.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.unicode.start.character.frag">
+&lt;xsl:param name="callout.unicode.start.character"&gt;10102&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is zero and <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.start.character</parameter>
+is the decimal unicode value used for callout number one. Currently,
+only 10102 is supported in the stylesheets for this parameter.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callout.unicode">
+<refmeta>
+<refentrytitle>callout.unicode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode</refname>
+<refpurpose>Use Unicode characters rather than images for callouts.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callout.unicode.frag">&lt;xsl:param name="callout.unicode" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="callouts.extension">
+<refmeta>
+<refentrytitle>callouts.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callouts.extension</refname>
+<refpurpose>Enable the callout extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="callouts.extension.frag">
+&lt;xsl:param name="callouts.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The callouts extension processes <tag>areaset</tag>
+elements in <tag>programlistingco</tag> and other text-based
+callout elements.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="ebnf"><title>EBNF</title>
+<refentry version="5.0" xml:id="ebnf.table.bgcolor">
+<refmeta>
+<refentrytitle>ebnf.table.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.bgcolor</refname>
+<refpurpose>Background color for EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ebnf.table.bgcolor.frag">
+&lt;xsl:param name="ebnf.table.bgcolor"&gt;#F5DCB3&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the background color for EBNF tables (a pale brown). No
+<tag>bgcolor</tag> attribute is output if
+<parameter>ebnf.table.bgcolor</parameter> is set to the null string. </para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ebnf.table.border">
+<refmeta>
+<refentrytitle>ebnf.table.border</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.border</refname>
+<refpurpose>Selects border on EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ebnf.table.border.frag">&lt;xsl:param name="ebnf.table.border" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the border on EBNF tables. If non-zero, the tables have
+borders, otherwise they don't.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ebnf.assignment">
+<refmeta>
+<refentrytitle>ebnf.assignment</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.assignment</refname>
+<refpurpose>The EBNF production assignment operator</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ebnf.assignment.frag">
+&lt;xsl:param name="ebnf.assignment"&gt;
+&lt;code&gt;::=&lt;/code&gt;
+&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.assignment</parameter> parameter determines what
+text is used to show <quote>assignment</quote> in <tag>production</tag>s
+in <tag>productionset</tag>s.</para>
+
+<para>While <quote><literal>::=</literal></quote> is common, so are several
+other operators.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ebnf.statement.terminator">
+<refmeta>
+<refentrytitle>ebnf.statement.terminator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.statement.terminator</refname>
+<refpurpose>Punctuation that ends an EBNF statement.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ebnf.statement.terminator.frag">
+&lt;xsl:param name="ebnf.statement.terminator"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.statement.terminator</parameter> parameter determines what
+text is used to terminate each <tag>production</tag>
+in <tag>productionset</tag>.</para>
+
+<para>Some notations end each statement with a period.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="toc_index"><title>ToC/LoT/Index Generation</title>
+<refentry version="5.0" xml:id="annotate.toc">
+<refmeta>
+<refentrytitle>annotate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotate.toc</refname>
+<refpurpose>Annotate the Table of Contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="annotate.toc.frag">&lt;xsl:param name="annotate.toc" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, TOCs will be annotated. At present, this just means
+that the <tag>refpurpose</tag> of <tag>refentry</tag>
+TOC entries will be displayed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="autotoc.label.separator">
+<refmeta>
+<refentrytitle>autotoc.label.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.separator</refname>
+<refpurpose>Separator between labels and titles in the ToC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="autotoc.label.separator.frag">
+&lt;xsl:param name="autotoc.label.separator"&gt;. &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>String used to separate labels and titles in a table of contents.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="autotoc.label.in.hyperlink">
+<refmeta>
+<refentrytitle>autotoc.label.in.hyperlink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.in.hyperlink</refname>
+<refpurpose>Include label in hyperlinked titles in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="autotoc.label.in.hyperlink.frag">&lt;xsl:param name="autotoc.label.in.hyperlink" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>autotoc.label.in.hyperlink</parameter> is non-zero, labels
+are included in hyperlinked titles in the TOC. If it is instead zero,
+labels are still displayed prior to the hyperlinked titles, but
+are not hyperlinked along with the titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="process.source.toc">
+<refmeta>
+<refentrytitle>process.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.source.toc</refname>
+<refpurpose>Process a non-empty <tag>toc</tag> element if it occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="process.source.toc.frag">&lt;xsl:param name="process.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that the contents of a non-empty "hard-coded"
+<tag>toc</tag> element in a source document are processed to
+generate a TOC in output.
+<note>
+ <para>This parameter has no effect on automated generation of
+ TOCs. An automated TOC may still be generated along with the
+ "hard-coded" TOC. To suppress automated TOC generation, adjust the
+ value of the <parameter>generate.toc</parameter> paramameter.</para>
+
+ <para>The <tag>process.source.toc</tag> parameter also has
+ no effect if the <tag>toc</tag> element is empty; handling
+ for empty <tag>toc</tag> is controlled by the
+ <parameter>process.empty.source.toc</parameter> parameter.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="process.empty.source.toc">
+<refmeta>
+<refentrytitle>process.empty.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.empty.source.toc</refname>
+<refpurpose>Generate automated TOC if <tag>toc</tag> element occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="process.empty.source.toc.frag">&lt;xsl:param name="process.empty.source.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that if an empty <tag>toc</tag> element is found in a
+source document, an automated TOC is generated at this point in the
+document.
+<note>
+ <para>Depending on what the value of the
+ <parameter>generate.toc</parameter> parameter is, setting this
+ parameter to <literal>1</literal> could result in generation of
+ duplicate automated TOCs. So the
+ <parameter>process.empty.source.toc</parameter> is primarily useful
+ as an "override": by placing an empty <tag>toc</tag> in your
+ document and setting this parameter to <literal>1</literal>, you can
+ force a TOC to be generated even if <tag>generate.toc</tag>
+ says not to.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bridgehead.in.toc">
+<refmeta>
+<refentrytitle>bridgehead.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bridgehead.in.toc</refname>
+<refpurpose>Should bridgehead elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bridgehead.in.toc.frag">&lt;xsl:param name="bridgehead.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>bridgehead</tag>s appear in the TOC. Note that
+this option is not fully supported and may be removed in a future
+version of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="simplesect.in.toc">
+<refmeta>
+<refentrytitle>simplesect.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>simplesect.in.toc</refname>
+<refpurpose>Should <tag>simplesect</tag> elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="simplesect.in.toc.frag">&lt;xsl:param name="simplesect.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>simplesect</tag>s will be included in the TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="manual.toc">
+<refmeta>
+<refentrytitle>manual.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>manual.toc</refname>
+<refpurpose>An explicit TOC to be used for the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="manual.toc.frag">
+&lt;xsl:param name="manual.toc"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>manual.toc</parameter> identifies an explicit TOC that
+will be used for building the printed TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.list.type">
+<refmeta>
+<refentrytitle>toc.list.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dl</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ul</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ol</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.list.type</refname>
+<refpurpose>Type of HTML list element to use for Tables of Contents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.list.type.frag">&lt;xsl:param name="toc.list.type"&gt;dl&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When an automatically generated Table of Contents (or List of Titles)
+is produced, this HTML element will be used to make the list.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.section.depth">
+<refmeta>
+<refentrytitle>toc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.section.depth</refname>
+<refpurpose>How deep should recursive <tag>section</tag>s appear
+in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.section.depth.frag">&lt;xsl:param name="toc.section.depth"&gt;2&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the depth to which recursive sections should appear in the
+TOC.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.max.depth">
+<refmeta>
+<refentrytitle>toc.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.max.depth</refname>
+<refpurpose>How many levels should be created for each TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.max.depth.frag">&lt;xsl:param name="toc.max.depth"&gt;8&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximal depth of TOC on all levels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.toc">
+<refmeta>
+<refentrytitle>generate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.toc</refname>
+<refpurpose>Control generation of ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.toc.frag">
+&lt;xsl:param name="generate.toc"&gt;
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has a structured value. It is a table of space-delimited
+path/value pairs. Each path identifies some element in the source document
+using a restricted subset of XPath (only the implicit child axis, no wildcards,
+no predicates). Paths can be either relative or absolute.</para>
+
+<para>When processing a particular element, the stylesheets consult this table to
+determine if a ToC (or LoT(s)) should be generated.</para>
+
+<para>For example, consider the entry:</para>
+
+<screen>book toc,figure</screen>
+
+<para>This indicates that whenever a <tag>book</tag> is formatted, a
+Table Of Contents and a List of Figures should be generated. Similarly,</para>
+
+<screen>/chapter toc</screen>
+
+<para>indicates that whenever a document <emphasis>that has a root
+of</emphasis> <tag>chapter</tag> is formatted, a Table of
+Contents should be generated. The entry <literal>chapter</literal> would match
+all chapters, but <literal>/chapter</literal> matches only <tag>chapter</tag>
+document elements.</para>
+
+<para>Generally, the longest match wins. So, for example, if you want to distinguish
+articles in books from articles in parts, you could use these two entries:</para>
+
+<screen>book/article toc,figure
+part/article toc</screen>
+
+<para>Note that an article in a part can never match a <literal>book/article</literal>,
+so if you want nothing to be generated for articles in parts, you can simply leave
+that rule out.</para>
+
+<para>If you want to leave the rule in, to make it explicit that you're turning
+something off, use the value <quote>nop</quote>. For example, the following
+entry disables ToCs and LoTs for articles:</para>
+
+<screen>article nop</screen>
+
+<para>Do not simply leave the word <quote>article</quote> in the file
+without a matching value. That'd be just begging the silly little
+path/value parser to get confused.</para>
+
+<para>Section ToCs are further controlled by the
+<parameter>generate.section.toc.level</parameter> parameter.
+For a given section level to have a ToC, it must have both an entry in
+<parameter>generate.toc</parameter> and be within the range enabled by
+<parameter>generate.section.toc.level</parameter>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.section.toc.level">
+<refmeta>
+<refentrytitle>generate.section.toc.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.section.toc.level</refname>
+<refpurpose>Control depth of TOC generation in sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.section.toc.level.frag">
+&lt;xsl:param name="generate.section.toc.level" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>generate.section.toc.level</parameter> parameter
+controls the depth of <tag>section</tag> in which TOCs will be generated. Note
+that this is related to, but not the same as
+<parameter>toc.section.depth</parameter>, which controls the depth to
+which TOC entries will be generated in a given TOC.</para>
+<para>If, for example, <parameter>generate.section.toc.level</parameter>
+is <literal>3</literal>, TOCs will be generated in first, second, and third
+level sections, but not in fourth level sections.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.index">
+<refmeta>
+<refentrytitle>generate.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.index</refname>
+<refpurpose>Do you want an index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.index.frag">&lt;xsl:param name="generate.index" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify if an index should be generated. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.method">
+<refmeta>
+<refentrytitle>index.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">basic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kosek</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kimber</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.method</refname>
+<refpurpose>Select method used to group index entries in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.method.frag">
+&lt;xsl:param name="index.method"&gt;basic&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter lets you select which method to use for sorting and grouping
+ index entries in an index.
+Indexes in Latin-based languages that have accented characters typically
+sort together accented words and unaccented words.
+Thus <quote>&#193;</quote> (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together
+with <quote>A</quote> (U+0041 LATIN CAPITAL LETTER A), so both would appear in the <quote>A</quote>
+section of the index.
+Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet)
+and languages using ideographic chararacters (such as Japanese)
+require grouping specific to the languages and alphabets.
+</para>
+
+<para>The default indexing method is limited.
+It can group accented characters in Latin-based languages only.
+It cannot handle non-Latin alphabets or ideographic languages.
+The other indexing methods require extensions of one type or
+another, and do not work with
+all XSLT processors, which is why they are not used by default.</para>
+
+<para>The three choices for indexing method are:</para>
+<variablelist>
+<varlistentry>
+<term><literal>basic</literal></term>
+<listitem>
+<para>
+(default) Sort and groups words based only on the Latin alphabet.
+Words with accented Latin letters will group and sort with
+their respective primary letter, but
+words in non-Latin alphabets will be
+put in the <quote>Symbols</quote> section of the index.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kosek</literal></term>
+<listitem>
+<para>
+This method sorts and groups words based on letter groups configured in
+the DocBook locale file for the given language.
+See, for example, the French locale file <filename>common/fr.xml</filename>.
+This method requires that the XSLT processor
+supports the EXSLT extensions (most do).
+It also requires support for using
+user-defined functions in xsl:key (xsltproc does not).
+</para>
+<para>This method is suitable for any language for which you can
+list all the individual characters that should appear
+in each letter group in an index.
+It is probably not practical to use it for ideographic languages
+such as Chinese that have hundreds or thousands of characters.
+</para>
+
+<para>To use the kosek method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use a processor that supports its extensions, such as
+Saxon 6 or Xalan (xsltproc and Saxon 8 do not).
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kosek</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kosek.xsl</filename> or
+<filename>html/autoidx-kosek.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kimber</literal></term>
+<listitem>
+<para>
+This method uses extensions to the Saxon processor to implement
+sophisticated indexing processes. It uses its own
+configuration file, which can include information for any number of
+languages. Each language's configuration can group
+words using one of two processes. In the
+enumerated process similar to that used in the kosek method,
+you indicate the groupings character-by-character.
+In the between-key process, you specify the
+break-points in the sort order that should start a new group.
+The latter configuration is useful for ideographic languages
+such as Chinese, Japanese, and Korean.
+You can also define your own collation algorithms and how you
+want mixed Latin-alphabet words sorted.</para>
+<itemizedlist>
+<listitem>
+<para>For a whitepaper describing the extensions, see:
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf">http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf</link>.
+</para>
+</listitem>
+<listitem>
+<para>To download the extension library, see
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport">http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</link>.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>To use the kimber method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use Saxon (version 6 or 8) as your XSLT processor.
+</para>
+</listitem>
+<listitem>
+<para>Install and configure the Innodata Isogen library, using
+the documentation that comes with it.
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kimber</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kimber.xsl</filename> or
+<filename>html/autoidx-kimber.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.on.type">
+<refmeta>
+<refentrytitle>index.on.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.type</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">type</tag>
+attribute value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.on.type.frag">
+&lt;xsl:param name="index.on.type" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">type</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching <tag class="attribute">type</tag> attribute value.
+If an <tag>index</tag> has no <tag class="attribute">type</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+
+<para>
+If <literal>index.on.type</literal> is zero, then the
+<tag class="attribute">type</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>For those using DocBook version 4.2 or earlier,
+the <tag class="attribute">type</tag> attribute is not available
+for index terms. However, you can achieve the same
+effect by using the <tag class="attribute">role</tag> attribute
+in the same manner on <tag>indexterm</tag>
+and <tag>index</tag>, and setting the stylesheet parameter
+<parameter>index.on.role</parameter> to a nonzero value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.on.role">
+<refmeta>
+<refentrytitle>index.on.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.role</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">role</tag> value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.on.role.frag">
+&lt;xsl:param name="index.on.role" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">role</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching role value.
+If an <tag>index</tag> has no <tag class="attribute">role</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+<para>
+If <literal>index.on.role</literal> is zero, then the
+<tag class="attribute">role</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>If you are using DocBook version 4.3 or later, you should
+use the <tag class="attribute">type</tag> attribute instead of <tag class="attribute">role</tag>
+on <tag>indexterm</tag> and <tag>index</tag>,
+and set the <parameter>index.on.type</parameter> to a nonzero
+value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.links.to.section">
+<refmeta>
+<refentrytitle>index.links.to.section</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.links.to.section</refname>
+<refpurpose>HTML index entries link to container section title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.links.to.section.frag">
+&lt;xsl:param name="index.links.to.section" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero, then an index entry in an index links
+directly to the location of the
+generated <tag>anchor</tag> that is output
+for the indexterm. If two identical indexterm elements
+exist in the same section, then both entries appear
+in the index with the same title but link to different
+locations.</para>
+
+<para>If non-zero, then an index entry in an index links to the
+section title containing the <tag>indexterm</tag>, rather than
+directly to the <tag>anchor</tag> output for the indexterm.
+Duplicate indexterm entries in the same section are dropped.
+</para>
+
+<para>The default value is 1, so index entries link to
+section titles by default.</para>
+
+<para>In both cases, the link text in an index entry is the
+title of the section containing the indexterm.
+That is because HTML does not have numbered pages.
+It also provides the reader with context information
+for each link.</para>
+
+<para>This parameter lets you choose which style of
+index linking you want. </para>
+
+<itemizedlist>
+<listitem>
+<para>When set to 0, an index entry takes you
+to the precise location of its corresponding indexterm.
+However, if you have a lot of duplicate
+entries in sections, then you have a lot of duplicate
+titles in the index, which makes it more cluttered.
+The reader may not recognize why duplicate titles
+appear until they follow the links. Also, the links
+may land the reader in the middle of a section where the
+section title is not visible, which may also be
+confusing to the reader.</para>
+</listitem>
+<listitem>
+<para>When set to 1, an index entry link is
+less precise, but duplicate titles in the
+index entries are eliminated.
+Landing on the section title location may confirm the reader's
+expectation that a link that
+shows a section title will take them to that section title,
+not a location within the section.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.prefer.titleabbrev">
+<refmeta>
+<refentrytitle>index.prefer.titleabbrev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.prefer.titleabbrev</refname>
+<refpurpose>Should abbreviated titles be used as back references?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.prefer.titleabbrev.frag">
+&lt;xsl:param name="index.prefer.titleabbrev" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if a <tag>titleabbrev</tag> is defined, the abbreviated title
+is used as the link text of a back reference in the index.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.term.separator">
+<refmeta>
+<refentrytitle>index.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.term.separator</refname>
+<refpurpose>Override for punctuation separating an index term
+from its list of page references in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.term.separator.frag">
+&lt;xsl:param name="index.term.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override
+the text to insert between
+the end of an index term and its list of page references.
+Typically that might be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'term-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+fill in the content for this normally empty
+override parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+For fo output, it could be an <tag>fo:leader</tag>
+element to provide space of a specific length, or a dot leader.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.number.separator">
+<refmeta>
+<refentrytitle>index.number.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.number.separator</refname>
+<refpurpose>Override for punctuation separating page numbers in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.number.separator.frag">
+&lt;xsl:param name="index.number.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override the text to insert between
+page references in a formatted index entry. Typically
+that would be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'number-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. This punctuation appears between
+such section titles in an HTML index.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="index.range.separator">
+<refmeta>
+<refentrytitle>index.range.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.range.separator</refname>
+<refpurpose>Override for punctuation separating the two numbers
+in a page range in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="index.range.separator.frag">
+&lt;xsl:param name="index.range.separator"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you
+to override the text to insert between
+the two numbers of a page range in an index.
+This parameter is only used by those XSL-FO processors
+that support an extension for generating such page ranges
+(such as XEP).</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'range-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. So there are no page ranges
+and this parameter has no effect.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="dbk_ext"><title>Stylesheet Extensions</title>
+<refentry version="5.0" xml:id="linenumbering.everyNth">
+<refmeta>
+<refentrytitle>linenumbering.everyNth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.everyNth</refname>
+<refpurpose>Indicate which lines should be numbered</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.everyNth.frag">
+&lt;xsl:param name="linenumbering.everyNth"&gt;5&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, everyNth line will be
+numbered. Note that numbering is one based, not zero based.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="linenumbering.extension">
+<refmeta>
+<refentrytitle>linenumbering.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.extension</refname>
+<refpurpose>Enable the line numbering extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.extension.frag">
+&lt;xsl:param name="linenumbering.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, verbatim environments (<tag>address</tag>, <tag>literallayout</tag>,
+<tag>programlisting</tag>, <tag>screen</tag>, <tag>synopsis</tag>) that specify line numbering will
+have line numbers.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="linenumbering.separator">
+<refmeta>
+<refentrytitle>linenumbering.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.separator</refname>
+<refpurpose>Specify a separator between line numbers and lines</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.separator.frag">
+&lt;xsl:param name="linenumbering.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The separator is inserted between line numbers and lines in the
+verbatim environment. The default value is a single white space.
+ Note the interaction with <parameter>linenumbering.width</parameter>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="linenumbering.width">
+<refmeta>
+<refentrytitle>linenumbering.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.width</refname>
+<refpurpose>Indicates the width of line numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="linenumbering.width.frag">
+&lt;xsl:param name="linenumbering.width"&gt;3&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, line numbers will appear right
+justified in a field "width" characters wide.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="tablecolumns.extension">
+<refmeta>
+<refentrytitle>tablecolumns.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tablecolumns.extension</refname>
+<refpurpose>Enable the table columns extension function</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="tablecolumns.extension.frag">
+&lt;xsl:param name="tablecolumns.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The table columns extension function adjusts the widths of table
+columns in the HTML result to more accurately reflect the specifications
+in the CALS table.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="textinsert.extension">
+ <refmeta>
+ <refentrytitle>textinsert.extension</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>textinsert.extension</refname>
+ <refpurpose>Enables the textinsert extension element</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <programlisting xml:id="textinsert.extension.frag">
+ &lt;xsl:param name="textinsert.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+ </refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>The textinsert extension element inserts the contents of
+ a file into the result tree (as text).</para>
+ <note>
+ <para>To use the textinsert extension element, you must use
+ either Saxon or Xalan as your XSLT processor (it doesn&#8217;t
+ work with xsltproc), along with either the DocBook Saxon
+ extensions or DocBook Xalan extensions (for more
+ information about those extensions, see <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="InstallingAProcessor.html#SaxonExtensions">DocBook Saxon Extensions</link> and <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="InstallingAProcessor.html#XalanExtensions">DocBook Xalan Extensions</link>), and you must set both
+ the <parameter>use.extensions</parameter> and
+ <parameter>textinsert.extension</parameter> parameters to
+ <literal>1</literal>.</para>
+ <para>As an alternative to using the textinsert element,
+ consider using an Xinclude element with the
+ <literal>parse="text"</literal> attribute and value
+ specified, as detailed in <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="ExternalCode.html#XIncludeCode">Using XInclude for text inclusions</link>.</para>
+ </note>
+ </refsection>
+ <refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbhtml-include&#160;href</tag> processing
+ instruction to insert external files &#8212; both files containing
+ plain text and files with markup content (including HTML
+ content).</para>
+ </refsection>
+ <refsection><info><title>More information</title></info>
+ <para>For how-to documentation on inserting contents of
+ external code files and other text files into output, see
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="ExternalCode.html">External code files</link>.</para>
+ <para>For guidelines on inserting contents of
+ HTML files into output, see <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>.</para>
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="textdata.default.encoding">
+<refmeta>
+<refentrytitle>textdata.default.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textdata.default.encoding</refname>
+<refpurpose>Default encoding of external text files which are included
+using textdata element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="textdata.default.encoding.frag">
+&lt;xsl:param name="textdata.default.encoding"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the encoding of any external text files included using
+<tag>textdata</tag> element. This value is used only when you do
+not specify encoding by the appropriate attribute
+directly on textdata. An empty string is interpreted as the system
+default encoding.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="graphicsize.extension">
+<refmeta>
+<refentrytitle>graphicsize.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphicsize.extension</refname>
+<refpurpose>Enable the getWidth()/getDepth() extension functions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="graphicsize.extension.frag">
+&lt;xsl:param name="graphicsize.extension" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (and if <parameter>use.extensions</parameter> is non-zero
+and if you're using a processor that supports extension functions), the
+<function>getWidth</function> and <function>getDepth</function> functions
+will be used to extract image sizes from graphics.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="graphicsize.use.img.src.path">
+<refmeta>
+<refentrytitle>graphicsize.use.img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphicsize.use.img.src.path</refname>
+<refpurpose>Prepend <parameter>img.src.path</parameter> before
+filenames passed to extension functions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="graphicsize.use.img.src.path.frag">
+&lt;xsl:param name="graphicsize.use.img.src.path" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero <parameter>img.src.path</parameter> parameter will
+be appended before filenames passed to extension functions for
+measuring image dimensions.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.extensions">
+<refmeta>
+<refentrytitle>use.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.extensions</refname>
+<refpurpose>Enable extensions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.extensions.frag">
+&lt;xsl:param name="use.extensions" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions may be used. Each extension is
+further controlled by its own parameter. But if
+<parameter>use.extensions</parameter> is zero, no extensions will
+be used.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="labels"><title>Automatic labelling</title>
+<refentry version="5.0" xml:id="chapter.autolabel">
+<refmeta>
+<refentrytitle>chapter.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chapter.autolabel</refname>
+<refpurpose>Specifies the labeling format for Chapter titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chapter.autolabel.frag">
+&lt;xsl:param name="chapter.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then chapters will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="appendix.autolabel">
+<refmeta>
+<refentrytitle>appendix.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>appendix.autolabel</refname>
+<refpurpose>Specifies the labeling format for Appendix titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="appendix.autolabel.frag">
+&lt;xsl:param name="appendix.autolabel"&gt;A&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then appendices will be numbered using the
+parameter value as the number format if the value matches one of the
+following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperalpha).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="part.autolabel">
+<refmeta>
+<refentrytitle>part.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>part.autolabel</refname>
+<refpurpose>Specifies the labeling format for Part titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="part.autolabel.frag">
+&lt;xsl:param name="part.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then parts will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperroman).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="reference.autolabel">
+<refmeta>
+<refentrytitle>reference.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>reference.autolabel</refname>
+<refpurpose>Specifies the labeling format for Reference titles</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="reference.autolabel.frag">
+ &lt;xsl:param name="reference.autolabel"&gt;I&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, references will be numbered using the parameter
+ value as the number format if the value matches one of the
+ following:
+</para>
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Any non-zero value other than the above will generate
+the default number format (upperroman).
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="preface.autolabel">
+<refmeta>
+<refentrytitle>preface.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preface.autolabel</refname>
+<refpurpose>Specifices the labeling format for Preface titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="preface.autolabel.frag">&lt;xsl:param name="preface.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero then prefaces will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qandadiv.autolabel">
+<refmeta>
+<refentrytitle>qandadiv.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qandadiv.autolabel</refname>
+<refpurpose>Are divisions in QAndASets enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qandadiv.autolabel.frag">&lt;xsl:param name="qandadiv.autolabel" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, unlabeled qandadivs will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.autolabel">
+<refmeta>
+<refentrytitle>section.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel</refname>
+<refpurpose>Are sections enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.autolabel.frag">&lt;xsl:param name="section.autolabel" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), unlabeled sections will be enumerated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.autolabel.max.depth">
+<refmeta>
+<refentrytitle>section.autolabel.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel.max.depth</refname>
+<refpurpose>The deepest level of sections that are numbered.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.autolabel.max.depth.frag">
+&lt;xsl:param name="section.autolabel.max.depth"&gt;8&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When section numbering is turned on by the
+<parameter>section.autolabel</parameter> parameter, then this
+parameter controls the depth of <tag>section</tag> nesting that is
+numbered. Sections nested to a level deeper than this value will not
+be numbered.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="section.label.includes.component.label">
+<refmeta>
+<refentrytitle>section.label.includes.component.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.label.includes.component.label</refname>
+<refpurpose>Do section labels include the component label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="section.label.includes.component.label.frag">&lt;xsl:param name="section.label.includes.component.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, section labels are prefixed with the label of the
+component that contains them.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="label.from.part">
+<refmeta>
+<refentrytitle>label.from.part</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>label.from.part</refname>
+<refpurpose>Renumber components in each part?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="label.from.part.frag">
+&lt;xsl:param name="label.from.part" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>label.from.part</parameter> is non-zero, then
+ numbering of components &#8212; <tag>preface</tag>,
+ <tag>chapter</tag>, <tag>appendix</tag>, and
+ <tag>reference</tag> (when <tag>reference</tag> occurs at the
+ component level) &#8212; is re-started within each
+ <tag>part</tag>.</para>
+<para>If <parameter>label.from.part</parameter> is zero (the
+ default), numbering of components is <emphasis>not</emphasis>
+ re-started within each <tag>part</tag>; instead, components are
+ numbered sequentially throughout each <tag>book</tag>,
+ regardless of whether or not they occur within <tag>part</tag>
+ instances.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="component.label.includes.part.label">
+<refmeta>
+<refentrytitle>component.label.includes.part.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.label.includes.part.label</refname>
+<refpurpose>Do component labels include the part label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="component.label.includes.part.label.frag">&lt;xsl:param name="component.label.includes.part.label" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, number labels for <tag>chapter</tag>,
+<tag>appendix</tag>, and other component elements are prefixed with
+the label of the part element that contains them. So you might see
+Chapter II.3 instead of Chapter 3. Also, the labels for formal
+elements such as <tag>table</tag> and <tag>figure</tag> will include
+the part label. If there is no part element container, then no prefix
+is generated.
+</para>
+<para>
+This feature is most useful when the
+<parameter>label.from.part</parameter> parameter is turned on.
+In that case, there would be more than one <tag>chapter</tag>
+<quote>1</quote>, and the extra part label prefix will identify
+each chapter unambiguously.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+
+<reference xml:id="html"><title>HTML</title>
+<refentry version="5.0" xml:id="html.base">
+<refmeta>
+<refentrytitle>html.base</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.base</refname>
+<refpurpose>An HTML base URI</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.base.frag">
+&lt;xsl:param name="html.base"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If html.base is set, it is used for the <tag>base</tag> element
+in the <tag>head</tag> of the html documents. The parameter specifies
+the base URL for all relative URLs in the document. This is useful
+for dynamically served html where the base URI needs to be
+shifted.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.stylesheet.type">
+<refmeta>
+<refentrytitle>html.stylesheet.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.stylesheet.type</refname>
+<refpurpose>The type of the stylesheet used in the generated HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.stylesheet.type.frag">&lt;xsl:param name="html.stylesheet.type"&gt;text/css&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The type of the stylesheet to place in the HTML <tag>link</tag> tag.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.stylesheet">
+<refmeta>
+<refentrytitle>html.stylesheet</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.stylesheet</refname>
+<refpurpose>Name of the stylesheet(s) to use in the generated HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.stylesheet.frag">
+&lt;xsl:param name="html.stylesheet"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>html.stylesheet</parameter> parameter is either
+empty, indicating that no stylesheet <tag>link</tag> tag should be
+generated in the html output, or it is a list of one or more
+stylesheet files.</para>
+
+<para>Multiple stylesheets are space-delimited. If you need to
+reference a stylesheet URI that includes a space, encode it with
+<literal>%20</literal>. A separate html <literal>link</literal> element will
+be generated for each stylesheet in the order they are listed in the
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="css.decoration">
+<refmeta>
+<refentrytitle>css.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.decoration</refname>
+<refpurpose>Enable CSS decoration of elements</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="css.decoration.frag">
+&lt;xsl:param name="css.decoration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, then html elements produced by the stylesheet may be
+decorated with <literal>style</literal> attributes. For example, the
+<literal>li</literal> tags produced for list items may include a
+fragment of CSS in the <literal>style</literal> attribute which sets
+the CSS property "list-style-type".
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="spacing.paras">
+<refmeta>
+<refentrytitle>spacing.paras</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>spacing.paras</refname>
+<refpurpose>Insert additional &lt;p&gt; elements for spacing?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="spacing.paras.frag">
+&lt;xsl:param name="spacing.paras" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When non-zero, additional, empty paragraphs are inserted in
+several contexts (for example, around informal figures), to create a
+more pleasing visual appearance in many browsers.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="emphasis.propagates.style">
+<refmeta>
+<refentrytitle>emphasis.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>emphasis.propagates.style</refname>
+<refpurpose>Pass emphasis role attribute through to HTML?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="emphasis.propagates.style.frag">
+&lt;xsl:param name="emphasis.propagates.style" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the <literal>role</literal> attribute of
+<tag>emphasis</tag> elements will be passed through to the HTML as a
+class attribute on a <literal>span</literal> that surrounds the
+emphasis.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="para.propagates.style">
+<refmeta>
+<refentrytitle>para.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>para.propagates.style</refname>
+<refpurpose>Pass para role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="para.propagates.style.frag">
+&lt;xsl:param name="para.propagates.style" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, the role attribute of <tag>para</tag> elements
+will be passed through to the HTML as a class attribute on the
+<tag>p</tag> generated for the paragraph.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="phrase.propagates.style">
+<refmeta>
+<refentrytitle>phrase.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>phrase.propagates.style</refname>
+<refpurpose>Pass phrase role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="phrase.propagates.style.frag">
+&lt;xsl:param name="phrase.propagates.style" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the role attribute of <tag>phrase</tag> elements
+will be passed through to the HTML as a <literal>class</literal>
+attribute on a <literal>span</literal> that surrounds the
+phrase.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="entry.propagates.style">
+<refmeta>
+<refentrytitle>entry.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>entry.propagates.style</refname>
+<refpurpose>Pass entry role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="entry.propagates.style.frag">
+&lt;xsl:param name="entry.propagates.style" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, the role attribute of <tag>entry</tag> elements
+will be passed through to the HTML as a class attribute on the
+<tag>td</tag> or <tag>th</tag> generated for the table
+cell.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.longdesc">
+<refmeta>
+<refentrytitle>html.longdesc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc</refname>
+<refpurpose>Should longdesc URIs be created?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="html.longdesc.frag">
+&lt;xsl:param name="html.longdesc" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, HTML files will be created for the
+<literal>longdesc</literal> attribute. These files
+are created from the <tag>textobject</tag>s in
+<tag>mediaobject</tag>s and
+<tag>inlinemediaobject</tag>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.longdesc.link">
+<refmeta>
+<refentrytitle>html.longdesc.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc.link</refname>
+<refpurpose>Should a link to the longdesc be included in the HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.longdesc.link.frag">
+&lt;xsl:param name="html.longdesc.link" select="$html.longdesc"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links will be created to the
+HTML files created for the
+<literal>longdesc</literal> attribute. It makes no
+sense to enable this option without also enabling the
+<parameter>html.longdesc</parameter> parameter.</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="make.valid.html">
+<refmeta>
+<refentrytitle>make.valid.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.valid.html</refname>
+<refpurpose>Attempt to make sure the HTML output is valid HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.valid.html.frag">
+&lt;xsl:param name="make.valid.html" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>make.valid.html</parameter> is true, the stylesheets take
+extra effort to ensure that the resulting HTML is valid. This may mean that some
+<tag>para</tag> tags are translated into HTML <tag>div</tag>s or
+that other substitutions occur.</para>
+
+<para>This parameter is different from <parameter>html.cleanup</parameter>
+because it changes the resulting markup; it does not use extension functions
+to manipulate result-tree-fragments and is therefore applicable to any
+XSLT processor.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.cleanup">
+<refmeta>
+<refentrytitle>html.cleanup</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cleanup</refname>
+<refpurpose>Attempt to clean up the resulting HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.cleanup.frag">
+&lt;xsl:param name="html.cleanup" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.exslt.org/">EXSLT</link>
+extensions are supported by your processor, the resulting HTML will be
+<quote>cleaned up</quote>. This improves the chances that the
+resulting HTML will be valid. It may also improve the formatting of
+some elements.</para>
+
+<para>This parameter is different from <parameter>make.valid.html</parameter>
+because it uses extension functions to manipulate result-tree-fragments.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.append">
+<refmeta>
+<refentrytitle>html.append</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.append</refname>
+<refpurpose>Specifies content to append to HTML output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.append.frag">&lt;xsl:param name="html.append"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies content to append to the end of HTML files output by
+the <filename>html/docbook.xsl</filename> stylesheet, after the
+closing <code>&lt;html&gt;</code> tag. You probably don&#8217;t want to set any
+value for this parameter; but if you do, the only value it should ever
+be set to is a newline character: <code>&amp;#x0a;</code> or
+<code>&amp;#10;</code></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="draft.mode">
+<refmeta>
+<refentrytitle>draft.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.mode</refname>
+<refpurpose>Select draft mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="draft.mode.frag">
+&lt;xsl:param name="draft.mode"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects draft mode. If <parameter>draft.mode</parameter> is
+<quote><literal>yes</literal></quote>, the entire document will be treated
+as a draft. If it is <quote><literal>no</literal></quote>, the entire document
+will be treated as a final copy. If it is <quote><literal>maybe</literal></quote>,
+individual sections will be treated as draft or final independently, depending
+on how their <literal>status</literal> attribute is set.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="draft.watermark.image">
+<refmeta>
+<refentrytitle>draft.watermark.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.watermark.image</refname>
+<refpurpose>The URI of the image to be used for draft watermarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="draft.watermark.image.frag">
+&lt;xsl:param name="draft.watermark.image"&gt;images/draft.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The image to be used for draft watermarks.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.id.attributes">
+<refmeta>
+<refentrytitle>generate.id.attributes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.id.attributes</refname>
+<refpurpose>Generate ID attributes on container elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.id.attributes.frag">
+&lt;xsl:param name="generate.id.attributes" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the HTML stylesheet will generate ID attributes on
+containers. For example, the markup:</para>
+
+<screen>&lt;section id="foo"&gt;&lt;title&gt;Some Title&lt;/title&gt;
+&lt;para&gt;Some para.&lt;/para&gt;
+&lt;/section&gt;</screen>
+
+<para>might produce:</para>
+
+<screen>&lt;div class="section" id="foo"&gt;
+&lt;h2&gt;Some Title&lt;/h2&gt;
+&lt;p&gt;Some para.&lt;/p&gt;
+&lt;/div&gt;</screen>
+
+<para>The alternative is to generate anchors:</para>
+
+<screen>&lt;div class="section"&gt;
+&lt;h2&gt;&lt;a name="foo"&gt;&lt;/a&gt;Some Title&lt;/h2&gt;
+&lt;p&gt;Some para.&lt;/p&gt;
+&lt;/div&gt;</screen>
+
+<para>Because the <tag class="attribute">name</tag> attribute of
+the <tag>a</tag> element and the <tag class="attribute">id</tag>
+attribute of other tags are both of type <quote>ID</quote>, producing both
+generates invalid documents.</para>
+
+<para>As of version 1.50, you can use this switch to control which type of
+identifier is generated. For backwards-compatibility, generating
+<tag>a</tag> anchors is preferred.</para>
+
+<para>Note: at present, this switch is incompletely implemented.
+Disabling ID attributes will suppress them, but enabling ID attributes
+will not suppress the anchors.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.meta.abstract">
+<refmeta>
+<refentrytitle>generate.meta.abstract</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.meta.abstract</refname>
+<refpurpose>Generate HTML <tag>META</tag> element from <tag>abstract</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.meta.abstract.frag">
+&lt;xsl:param name="generate.meta.abstract" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, document abstracts will be reproduced in the HTML
+<literal>head</literal>, with <literal>&gt;meta name="description" content="..."</literal></para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="make.clean.html">
+<refmeta>
+<refentrytitle>make.clean.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.clean.html</refname>
+<refpurpose>Make HTML conform to modern coding standards</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.clean.html.frag">
+&lt;xsl:param name="make.clean.html" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>make.clean.html</parameter> is true, the stylesheets take
+extra effort to ensure that the resulting HTML is conforms to
+modern HTML coding standards. In addition to eliminating
+excessive and noncompliant coding, it moves presentation
+HTML coding to a CSS stylesheet.</para>
+
+<para>The resulting HTML is dependent on
+CSS for formatting, and so the stylesheet is capable of
+generating a supporting CSS file. The <parameter>docbook.css.source</parameter>
+and <parameter>custom.css.source</parameter> parameters control
+how a CSS file is generated.</para>
+
+<para>If you require your CSS to reside in the HTML
+<tag>head</tag> element, then the <parameter>generate.css.header</parameter>
+can be used to do that.</para>
+
+<para>The <parameter>make.clean.html</parameter> parameter is
+different from <parameter>html.cleanup</parameter>
+because the former changes the resulting markup; it does not use extension functions
+like the latter to manipulate result-tree-fragments,
+and is therefore applicable to any XSLT processor.</para>
+
+<para>If <parameter>make.clean.html</parameter> is set to zero (the default),
+then the stylesheet retains its original
+<quote>old style</quote>
+HTML formatting features.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="docbook.css.source">
+ <refmeta>
+ <refentrytitle>docbook.css.source</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>docbook.css.source</refname>
+ <refpurpose>Name of the default CSS input file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting xml:id="docbook.css.source.frag">&lt;xsl:param name="docbook.css.source"&gt;docbook.css.xml&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+<para>The <parameter>docbook.css.source</parameter> parameter
+specifies the name of the file containing the default DocBook
+CSS styles. Those styles are necessary when the
+<parameter>make.clean.html</parameter> parameter is nonzero.</para>
+
+<para>The file is a well-formed XML file that
+must consist of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+The default value of the parameter (and filename)
+is <literal>docbook.css.xml</literal>.
+The stylesheets ship with the default file. You can substitute
+your own and specify its path in this parameter.</para>
+
+<para>If <parameter>docbook.css.source</parameter> is not blank,
+and <parameter>make.clean.html</parameter> is nonzero, then
+the stylesheet takes the following actions:</para>
+
+<orderedlist>
+ <listitem>
+ <para>The stylesheet uses the XSLT <literal>document()</literal>
+ function to open the file specified by the parameter and
+ load it into a variable.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet forms an output pathname consisting of the
+ value of the <parameter>base.dir</parameter> parameter (if it is set)
+ and the value of <parameter>docbook.css.source</parameter>,
+ with the <literal>.xml</literal> suffix stripped off.
+ </para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet removes the <tag>style</tag>
+ wrapper element and writes just the CSS text content to the output file.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet adds a <tag>link</tag> element to the
+ HTML <tag>HEAD</tag> element to reference the external CSS stylesheet.
+ For example:</para>
+ <programlisting>&lt;link rel="stylesheet" href="docbook.css" type="text/css"&gt;
+ </programlisting>
+ <para>However, if the <parameter>docbook.css.link</parameter>
+ parameter is set to zero, then no <tag>link</tag> is written
+ for the default CSS file. That is useful if a custom
+ CSS file will import the default CSS stylesheet to ensure
+ proper cascading of styles.</para>
+ </listitem>
+</orderedlist>
+
+<para>If the <parameter>docbook.css.source</parameter> parameter
+is changed from its default <literal>docbook.css.xml</literal> to blank,
+then no default CSS is generated. Likewise if the
+<parameter>make.clean.html</parameter> parameter is set to zero,
+then no default CSS is generated. The
+<parameter>custom.css.source</parameter> parameter can be used
+instead to generate a complete custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="docbook.css.link">
+<refmeta>
+<refentrytitle>docbook.css.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>docbook.css.link</refname>
+<refpurpose>Insert a link referencing the default CSS stylesheet</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="docbook.css.link.frag">
+&lt;xsl:param name="docbook.css.link" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating a default
+CSS stylesheet file. The parameters
+<parameter>make.clean.html</parameter> and
+<parameter>docbook.css.source</parameter> control that feature.</para>
+
+<para>Normally if a default CSS file is generated, then
+the stylesheet inserts a <tag>link</tag> tag in the HTML
+<tag>HEAD</tag> element to reference it.
+However, you can omit that <tag>link</tag> reference if
+you set the <parameter>docbook.css.link</parameter> to zero
+(1 is the default).</para>
+
+<para>This parameter is useful when you want to import the
+default CSS into a custom CSS file generated using the
+<parameter>custom.css.source</parameter> parameter.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="custom.css.source">
+ <refmeta>
+ <refentrytitle>custom.css.source</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>custom.css.source</refname>
+ <refpurpose>Name of a custom CSS input file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting xml:id="custom.css.source.frag">&lt;xsl:param name="custom.css.source"&gt;&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+<para>The <parameter>custom.css.source</parameter>
+parameter enables you to add CSS styles to DocBook's
+HTML output.</para>
+
+<para>The parameter
+specifies the name of a file containing custom
+CSS styles. The file must be a well-formed XML file that
+consists of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+For example:</para>
+<programlisting>&lt;?xml version="1.0"?&gt;
+&lt;style&gt;
+h2 {
+ font-weight: bold;
+ color: blue;
+}
+...
+&lt;/style&gt;
+</programlisting>
+
+<para>The filename specified by the parameter
+should have a <literal>.xml</literal>
+filename suffix, although that is not required.
+The default value of this parameter is blank.</para>
+
+<para>If <parameter>custom.css.source</parameter> is not blank, then
+the stylesheet takes the following actions.
+These actions take place regardless of the value of
+the <parameter>make.clean.html</parameter> parameter.</para>
+
+<orderedlist>
+ <listitem>
+ <para>The stylesheet uses the XSLT <literal>document()</literal>
+ function to open the file specified by the parameter and
+ load it into a variable.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet forms an output pathname consisting of the
+ value of the <parameter>base.dir</parameter> parameter (if it is set)
+ and the value of <parameter>custom.css.source</parameter>,
+ with the <literal>.xml</literal> suffix stripped off.
+ </para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet removes the <tag>style</tag>
+ wrapper element and writes just the CSS text content to the output file.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet adds a <tag>link</tag> element to the
+ HTML <tag>HEAD</tag> element to reference this external CSS stylesheet.
+ For example:
+ <programlisting>&lt;link rel="stylesheet" href="custom.css" type="text/css"&gt;
+ </programlisting>
+ </para>
+ </listitem>
+</orderedlist>
+
+
+
+<para>If the <parameter>make.clean.html</parameter> parameter is nonzero
+(the default is zero),
+and if the <parameter>docbook.css.source</parameter> parameter
+is not blank (the default is not blank),
+then the stylesheet will also generate a default CSS file
+and add a <tag>link</tag> tag to reference it.
+The <tag>link</tag> to the custom CSS comes after the
+<tag>link</tag> to the default, so it should cascade properly
+in most browsers.
+If you do not want two <tag>link</tag> tags, and
+instead want your custom CSS to import the default generated
+CSS file, then do the following:
+</para>
+
+<orderedlist>
+ <listitem>
+ <para>Add a line like the following to your custom CSS source file:</para>
+ <programlisting>@import url("docbook.css")
+ </programlisting>
+ </listitem>
+ <listitem>
+ <para>Set the <parameter>docbook.css.link</parameter> parameter
+ to zero. This will omit the <tag>link</tag> tag
+ that references the default CSS file.</para>
+ </listitem>
+</orderedlist>
+
+<para>If you set <parameter>make.clean.html</parameter> to nonzero but
+you do not want the default CSS generated, then also set
+the <parameter>docbook.css.source</parameter> parameter to blank.
+Then no default CSS will be generated, and so
+all CSS styles must come from your custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.css.header">
+<refmeta>
+<refentrytitle>generate.css.header</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.css.header</refname>
+<refpurpose>Insert generated CSS styles in HEAD element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.css.header.frag">
+&lt;xsl:param name="generate.css.header" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating both default
+and custom CSS stylesheet files. The parameters
+<parameter>make.clean.html</parameter>,
+<parameter>docbook.css.source</parameter>, and
+<parameter>custom.css.source</parameter> control that feature.</para>
+
+<para>If you require that CSS styles reside in the HTML
+<tag>HEAD</tag> element instead of external CSS files,
+then set the <parameter>generate.css.header</parameter>
+parameter to nonzero (it is zero by default).
+Then instead of generating the CSS in external files,
+they are wrapped in <tag>style</tag> elements in
+the <tag>HEAD</tag> element of each HTML output file.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="xslt"><title>XSLT Processing</title>
+<refentry version="5.0" xml:id="rootid">
+<refmeta>
+<refentrytitle>rootid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>rootid</refname>
+<refpurpose>Specify the root element to format</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="rootid.frag">
+&lt;xsl:param name="rootid"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>rootid</parameter> is not empty, it must be the
+value of an ID that occurs in the document being formatted. The entire
+document will be loaded and parsed, but formatting will begin at the
+element identified, rather than at the root. For example, this allows
+you to process only <tag>chapter</tag> 4 of a <tag>book</tag>.</para>
+<para>Because the entire document is available to the processor, automatic
+numbering, cross references, and other dependencies are correctly
+resolved.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="suppress.navigation">
+<refmeta>
+<refentrytitle>suppress.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.navigation</refname>
+<refpurpose>Disable header and footer navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="suppress.navigation.frag">
+&lt;xsl:param name="suppress.navigation" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, header and footer navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="suppress.header.navigation">
+<refmeta>
+<refentrytitle>suppress.header.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.header.navigation</refname>
+<refpurpose>Disable header navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="suppress.header.navigation.frag">
+&lt;xsl:param name="suppress.header.navigation" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, header navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="suppress.footer.navigation">
+<refmeta>
+<refentrytitle>suppress.footer.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.footer.navigation</refname>
+<refpurpose>Disable footer navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="suppress.footer.navigation.frag">&lt;xsl:param name="suppress.footer.navigation"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, footer navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="header.rule">
+<refmeta>
+<refentrytitle>header.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.rule</refname>
+<refpurpose>Rule under headers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="header.rule.frag">
+&lt;xsl:param name="header.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn below the page headers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footer.rule">
+<refmeta>
+<refentrytitle>footer.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.rule</refname>
+<refpurpose>Rule over footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footer.rule.frag">
+&lt;xsl:param name="footer.rule" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn above the page footers.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="id.warnings">
+<refmeta>
+<refentrytitle>id.warnings</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>id.warnings</refname>
+<refpurpose>Should warnings be generated for titled elements without IDs?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="id.warnings.frag">
+&lt;xsl:param name="id.warnings" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the stylesheet will issue a warning for any element
+(other than the root element) which has a <tag>title</tag> but does not have an
+ID.</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="meta"><title>Meta/*Info and Titlepages</title>
+<refentry version="5.0" xml:id="inherit.keywords">
+<refmeta>
+<refentrytitle>inherit.keywords</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>inherit.keywords</refname>
+<refpurpose>Inherit keywords from ancestor elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="inherit.keywords.frag">
+&lt;xsl:param name="inherit.keywords" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>inherit.keywords</parameter>
+is non-zero, the keyword <literal>meta</literal> for each HTML
+<literal>head</literal> element will include all of the keywords from
+ancestor elements. Otherwise, only the keywords from the current section
+will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="make.single.year.ranges">
+<refmeta>
+<refentrytitle>make.single.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.single.year.ranges</refname>
+<refpurpose>Print single-year ranges (e.g., 1998-1999)</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.single.year.ranges.frag">
+&lt;xsl:param name="make.single.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, year ranges that span a single year will be printed
+in range notation (1998-1999) instead of discrete notation
+(1998, 1999).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="make.year.ranges">
+<refmeta>
+<refentrytitle>make.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.year.ranges</refname>
+<refpurpose>Collate copyright years into ranges?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.year.ranges.frag">&lt;xsl:param name="make.year.ranges" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple copyright <tag>year</tag> elements will be
+collated into ranges.
+This works only if each year number is put into a separate
+year element. The copyright element permits multiple
+year elements. If a year element contains a dash or
+a comma, then that year element will not be merged into
+any range.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="author.othername.in.middle">
+<refmeta>
+<refentrytitle>author.othername.in.middle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>author.othername.in.middle</refname>
+<refpurpose>Is <tag>othername</tag> in <tag>author</tag> a
+middle name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="author.othername.in.middle.frag">
+&lt;xsl:param name="author.othername.in.middle" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag>othername</tag> of an <tag>author</tag>
+appears between the <tag>firstname</tag> and
+<tag>surname</tag>. Otherwise, <tag>othername</tag>
+is suppressed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="blurb.on.titlepage.enabled">
+<refmeta>
+<refentrytitle>blurb.on.titlepage.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>blurb.on.titlepage.enabled</refname>
+<refpurpose>Display personblurb and authorblurb on title pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="blurb.on.titlepage.enabled.frag">
+&lt;xsl:param name="blurb.on.titlepage.enabled" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, output from <tag>authorblurb</tag> and
+<tag>personblurb</tag> elements is displayed on title pages. If zero
+(the default), output from those elements is suppressed on title pages
+(unless you are using a <literal>titlepage</literal> customization
+that causes them to be included).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="contrib.inline.enabled">
+<refmeta>
+<refentrytitle>contrib.inline.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>contrib.inline.enabled</refname>
+<refpurpose>Display contrib output inline?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="contrib.inline.enabled.frag">&lt;xsl:param name="contrib.inline.enabled"&gt;1&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), output of the <tag>contrib</tag> element is
+displayed as inline content rather than as block content.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="editedby.enabled">
+<refmeta>
+<refentrytitle>editedby.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>editedby.enabled</refname>
+<refpurpose>Display &#8220;Edited by&#8221; heading above editor name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="editedby.enabled.frag">&lt;xsl:param name="editedby.enabled"&gt;1&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a localized <emphasis role="bold">Edited
+by</emphasis> heading is displayed above editor names in output of the
+<tag>editor</tag> element.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="abstract.notitle.enabled">
+<refmeta>
+<refentrytitle>abstract.notitle.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.notitle.enabled</refname>
+<refpurpose>Suppress display of abstract titles?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+ <programlisting xml:id="abstract.notitle.enabled.frag">&lt;xsl:param name="abstract.notitle.enabled" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, in output of the <tag>abstract</tag> element on titlepages,
+display of the abstract title is suppressed.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="othercredit.like.author.enabled">
+<refmeta>
+<refentrytitle>othercredit.like.author.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>othercredit.like.author.enabled</refname>
+<refpurpose>Display othercredit in same style as author?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="othercredit.like.author.enabled.frag">&lt;xsl:param name="othercredit.like.author.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, output of the
+<tag>othercredit</tag> element on titlepages is displayed in
+the same style as <tag>author</tag> and
+<tag>editor</tag> output. If zero then
+<tag>othercredit</tag> output is displayed using a style
+different than that of <tag>author</tag> and
+<tag>editor</tag>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.legalnotice.link">
+<refmeta>
+<refentrytitle>generate.legalnotice.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.legalnotice.link</refname>
+<refpurpose>Write legalnotice to separate chunk and generate link?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.legalnotice.link.frag">&lt;xsl:param name="generate.legalnotice.link" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>generate.legalnotice.link</parameter>
+is non-zero, the stylesheet:
+
+<itemizedlist>
+ <listitem>
+ <para>writes the contents of <tag>legalnotice</tag> to a separate
+ HTML file</para>
+ </listitem>
+ <listitem>
+ <para>inserts a hyperlink to the <tag>legalnotice</tag> file</para>
+ </listitem>
+ <listitem>
+ <para>adds (in the HTML <literal>head</literal>) either a single
+ <literal>link</literal> or element or multiple
+ <literal>link</literal> elements (depending on the value of the
+ <parameter>html.head.legalnotice.link.multiple</parameter>
+ parameter), with the value or values derived from the
+ <parameter>html.head.legalnotice.link.types</parameter>
+ parameter</para>
+ </listitem>
+ </itemizedlist>
+
+ Otherwise, if <parameter>generate.legalnotice.link</parameter> is
+ zero, <tag>legalnotice</tag> contents are rendered on the title
+ page.</para>
+
+<para>The name of the separate HTML file is computed as follows:
+
+<orderedlist>
+<listitem>
+ <para>If a filename is given by the <tag class="xmlpi">dbhtml filename</tag>
+processing instruction, that filename is used.</para>
+</listitem>
+<listitem>
+ <para>If the legalnotice has an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, and if <parameter>use.id.as.filename</parameter> != 0, the filename
+is the concatenation of the id value and the value of the <parameter>html.ext</parameter>
+parameter.</para>
+</listitem>
+<listitem>
+ <para>If the legalnotice does not have an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+ attribute, or if <parameter>use.id.as.filename</parameter> = 0, the filename is the concatenation of "ln-",
+auto-generated id value, and <parameter>html.ext</parameter> value.
+ </para>
+</listitem>
+</orderedlist>
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.revhistory.link">
+<refmeta>
+<refentrytitle>generate.revhistory.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.revhistory.link</refname>
+<refpurpose>Write revhistory to separate chunk and generate link?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="generate.revhistory.link.frag">&lt;xsl:param name="generate.revhistory.link" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the contents of <tag>revhistory</tag> are written
+to a separate HTML file and a link to the file is
+generated. Otherwise, <tag>revhistory</tag> contents are rendered on
+the title page.</para>
+
+<para>The name of the separate HTML file is computed as follows:
+
+<orderedlist>
+<listitem>
+ <para>If a filename is given by the <tag class="xmlpi">dbhtml filename</tag> processing instruction,
+that filename is used.</para>
+</listitem>
+<listitem>
+ <para>If the revhistory has an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, and if <parameter>use.id.as.filename</parameter> != 0, the filename is the concatenation of
+the id value and the value of the <parameter>html.ext</parameter> parameter.</para>
+</listitem>
+<listitem>
+ <para>If the revhistory does not have an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, or if <parameter>use.id.as.filename</parameter> = 0, the filename is the concatenation of "rh-",
+auto-generated id value, and <parameter>html.ext</parameter> value.
+ </para>
+</listitem>
+</orderedlist>
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.head.legalnotice.link.types">
+<refmeta>
+<refentrytitle>html.head.legalnotice.link.types</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.head.legalnotice.link.types</refname>
+<refpurpose>Specifies link types for legalnotice link in html head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.head.legalnotice.link.types.frag">
+&lt;xsl:param name="html.head.legalnotice.link.types"&gt;copyright&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>html.head.legalnotice.link.types</parameter> is a
+space-separated list of link types, as described in <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/html401/types.html#type-links">Section 6.12
+of the HTML 4.01 specification</link>. If the value of the
+<parameter>generate.legalnotice.link</parameter> parameter is
+non-zero, then the stylesheet generates (in the
+<literal>head</literal> section of the HTML source) either a single
+HTML <literal>link</literal> element or, if the value of the
+<parameter>html.head.legalnotice.link.multiple</parameter> is
+non-zero, one <literal>link</literal> element for each link type
+specified. Each <literal>link</literal> has the following attributes:
+
+<itemizedlist>
+ <listitem>
+ <para>a <tag class="attribute">rel</tag> attribute whose
+ value is derived from the value of
+ <parameter>html.head.legalnotice.link.types</parameter></para>
+ </listitem>
+ <listitem>
+ <para>an <tag class="attribute">href</tag> attribute whose
+ value is set to the URL of the file containing the
+ <tag>legalnotice</tag></para>
+ </listitem>
+ <listitem>
+ <para>a <tag class="attribute">title</tag> attribute whose
+ value is set to the title of the corresponding
+ <tag>legalnotice</tag> (or a title programatically
+ determined by the stylesheet)</para>
+ </listitem>
+</itemizedlist>
+
+For example:
+
+<screen> &lt;link rel="license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+</para>
+
+<refsection><info><title>About the default value</title></info>
+
+ <para>In an ideal world, the default value of
+ <parameter>html.head.legalnotice.link.types</parameter> would
+ probably be &#8220;<literal>license</literal>&#8221;, since the content of the
+ DocBook <tag>legalnotice</tag> is typically license
+ information, not copyright information. However, the default value
+ is &#8220;<literal>copyright</literal>&#8221; for pragmatic reasons: because
+ that&#8217;s among the set of &#8220;recognized link types&#8221; listed in <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/html401/types.html#type-links">Section
+ 6.12 of the HTML 4.01 specification</link>, and because certain
+ browsers and browser extensions are preconfigured to recognize that
+ value.</para>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.head.legalnotice.link.multiple">
+<refmeta>
+<refentrytitle>html.head.legalnotice.link.multiple</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.head.legalnotice.link.multiple</refname>
+<refpurpose>Generate multiple link instances in html head for legalnotice?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.head.legalnotice.link.multiple.frag">
+&lt;xsl:param name="html.head.legalnotice.link.multiple" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>html.head.legalnotice.link.multiple</parameter> is
+non-zero and the value of
+<parameter>html.head.legalnotice.link.types</parameter> contains
+multiple link types, then the stylesheet generates (in the
+<literal>head</literal> section of the HTML source) one
+<literal>link</literal> element for each link type specified. For
+example, if the value of
+<parameter>html.head.legalnotice.link.types</parameter> is
+&#8220;<literal>copyright license</literal>&#8221;:
+
+<screen> &lt;link rel="copyright" href="ln-id2524073.html" title="Legal Notice"&gt;
+ &lt;link rel="license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+
+ Otherwise, the stylesheet generates generates a single
+ <literal>link</literal> instance; for example:
+
+<screen> &lt;link rel="copyright license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+
+</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="refentry"><title>Reference Pages</title>
+<refentry version="5.0" xml:id="funcsynopsis.decoration">
+<refmeta>
+<refentrytitle>funcsynopsis.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.decoration</refname>
+<refpurpose>Decorate elements of a <tag>funcsynopsis</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="funcsynopsis.decoration.frag">
+&lt;xsl:param name="funcsynopsis.decoration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, elements of the <tag>funcsynopsis</tag> will be
+decorated (e.g. rendered as bold or italic text). The decoration is controlled by
+templates that can be redefined in a customization layer.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="funcsynopsis.style">
+<refmeta>
+<refentrytitle>funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="funcsynopsis.style.frag">&lt;xsl:param name="funcsynopsis.style"&gt;kr&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>funcsynopsis.style</parameter> is <literal>ansi</literal>,
+ANSI-style function synopses are generated for a
+<tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="function.parens">
+<refmeta>
+<refentrytitle>function.parens</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>function.parens</refname>
+<refpurpose>Generate parens after a function?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="function.parens.frag">
+&lt;xsl:param name="function.parens" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the formatting of a <tag>function</tag> element
+will include generated parentheses.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.generate.name">
+<refmeta>
+<refentrytitle>refentry.generate.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.name</refname>
+<refpurpose>Output NAME header before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.generate.name.frag">
+&lt;xsl:param name="refentry.generate.name" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a "NAME" section title is output before the list
+of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.title</parameter> are mutually
+exclusive. This means that if you change this parameter to zero, you
+should set <parameter>refentry.generate.title</parameter> to non-zero unless
+you want get quite strange output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.generate.title">
+<refmeta>
+<refentrytitle>refentry.generate.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.title</refname>
+<refpurpose>Output title before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.generate.title.frag">
+&lt;xsl:param name="refentry.generate.title" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the reference page title or first name is
+output before the list of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.name</parameter> are mutually exclusive.
+This means that if you change this parameter to non-zero, you
+should set <parameter>refentry.generate.name</parameter> to zero unless
+you want get quite strange output.</para>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.xref.manvolnum">
+<refmeta>
+<refentrytitle>refentry.xref.manvolnum</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.xref.manvolnum</refname>
+<refpurpose>Output <tag>manvolnum</tag> as part of
+<tag>refentry</tag> cross-reference?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.xref.manvolnum.frag">
+&lt;xsl:param name="refentry.xref.manvolnum" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>if non-zero, the <tag>manvolnum</tag> is used when cross-referencing
+<tag>refentry</tag>s, either with <tag>xref</tag>
+or <tag>citerefentry</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="citerefentry.link">
+<refmeta>
+<refentrytitle>citerefentry.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>citerefentry.link</refname>
+<refpurpose>Generate URL links when cross-referencing RefEntrys?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="citerefentry.link.frag">
+&lt;xsl:param name="citerefentry.link" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a web link will be generated, presumably
+to an online man-&gt;HTML gateway. The text of the link is
+generated by the <literal>generate.citerefentry.link</literal> template.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.separator">
+<refmeta>
+<refentrytitle>refentry.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.separator</refname>
+<refpurpose>Generate a separator between consecutive RefEntry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.separator.frag">
+&lt;xsl:param name="refentry.separator" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, a separator will be generated between consecutive
+reference pages.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refclass.suppress">
+<refmeta>
+<refentrytitle>refclass.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refclass.suppress</refname>
+<refpurpose>Suppress display of refclass contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refclass.suppress.frag">
+&lt;xsl:param name="refclass.suppress" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refclass.suppress</parameter> is
+non-zero, then display of <tag>refclass</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="tables"><title>Tables</title>
+<refentry version="5.0" xml:id="default.table.width">
+<refmeta>
+<refentrytitle>default.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.width</refname>
+<refpurpose>The default width of tables</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="default.table.width.frag">
+&lt;xsl:param name="default.table.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, this value will be used for the
+<literal>width</literal> attribute on <tag>table</tag>s that do not specify an
+alternate width (with the <tag class="xmlpi">dbhtml table-width</tag> or
+<tag class="xmlpi">dbfo table-width</tag> processing instruction).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="nominal.table.width">
+<refmeta>
+<refentrytitle>nominal.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.table.width</refname>
+<refpurpose>The (absolute) nominal width of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="nominal.table.width.frag">
+&lt;xsl:param name="nominal.table.width"&gt;6in&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In order to convert CALS column widths into HTML column widths, it
+is sometimes necessary to have an absolute table width to use for conversion
+of mixed absolute and relative widths. This value must be an absolute
+length (not a percentage).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.borders.with.css">
+<refmeta>
+<refentrytitle>table.borders.with.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.borders.with.css</refname>
+<refpurpose>Use CSS to specify table, row, and cell borders?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.borders.with.css.frag">
+&lt;xsl:param name="table.borders.with.css" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, CSS will be used to draw table borders.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.cell.border.style">
+<refmeta>
+<refentrytitle>table.cell.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.style</refname>
+<refpurpose>Specifies the border style of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.cell.border.style.frag">
+&lt;xsl:param name="table.cell.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table cells.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.cell.border.thickness">
+<refmeta>
+<refentrytitle>table.cell.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.thickness</refname>
+<refpurpose>Specifies the thickness of table cell borders</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.cell.border.thickness.frag">
+&lt;xsl:param name="table.cell.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, specifies the thickness of borders on table
+cells. The units are points. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/CSS21/box.html#border-width-properties">
+CSS</link></para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.cell.border.color">
+<refmeta>
+<refentrytitle>table.cell.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.color</refname>
+<refpurpose>Specifies the border color of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.cell.border.color.frag">
+&lt;xsl:param name="table.cell.border.color"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the color of table cell borders. If non-zero, the value is used
+for the border coloration. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS</link>. A
+<literal>color</literal> is either a keyword or a numerical RGB specification.
+Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon,
+navy, olive, orange, purple, red, silver, teal, white, and
+yellow.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.frame.border.style">
+<refmeta>
+<refentrytitle>table.frame.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.style</refname>
+<refpurpose>Specifies the border style of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.frame.border.style.frag">
+&lt;xsl:param name="table.frame.border.style"&gt;solid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.frame.border.thickness">
+<refmeta>
+<refentrytitle>table.frame.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.thickness</refname>
+<refpurpose>Specifies the thickness of the frame border</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.frame.border.thickness.frag">
+&lt;xsl:param name="table.frame.border.thickness"&gt;0.5pt&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the thickness of the border on the table's frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.frame.border.color">
+<refmeta>
+<refentrytitle>table.frame.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.color</refname>
+<refpurpose>Specifies the border color of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.frame.border.color.frag">
+&lt;xsl:param name="table.frame.border.color"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border color of table frames.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.table.frame">
+<refmeta>
+<refentrytitle>default.table.frame</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.frame</refname>
+<refpurpose>The default framing of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.table.frame.frag">
+&lt;xsl:param name="default.table.frame"&gt;all&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This value will be used when there is no frame attribute on the
+table. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.cellspacing">
+<refmeta>
+<refentrytitle>html.cellspacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cellspacing</refname>
+<refpurpose>Default value for cellspacing in HTML tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.cellspacing.frag">
+&lt;xsl:param name="html.cellspacing"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, this value will be used as the default cellspacing
+value in HTML tables. nn for pixels or nn% for percentage
+length. E.g. 5 or 5%</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.cellpadding">
+<refmeta>
+<refentrytitle>html.cellpadding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cellpadding</refname>
+<refpurpose>Default value for cellpadding in HTML tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.cellpadding.frag">
+&lt;xsl:param name="html.cellpadding"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, this value will be used as the default cellpadding value
+in HTML tables. nn for pixels or nn% for percentage length. E.g. 5 or
+5%</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="qa"><title>QAndASet</title>
+<refentry version="5.0" xml:id="qanda.defaultlabel">
+<refmeta>
+<refentrytitle>qanda.defaultlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">number</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">qanda</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.defaultlabel</refname>
+<refpurpose>Sets the default for defaultlabel on QandASet.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.defaultlabel.frag">
+&lt;xsl:param name="qanda.defaultlabel"&gt;number&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If no <literal>defaultlabel</literal> attribute is specified on
+a <tag>qandaset</tag>, this value is used. It is generally one of the legal
+values for the defaultlabel attribute (<literal>none</literal>,
+<literal>number</literal> or
+<literal>qanda</literal>), or one of the additional stylesheet-specific values
+(<literal>qnumber</literal> or <literal>qnumberanda</literal>).
+The default value is 'number'.
+</para>
+<para>The values are rendered as follows:</para>
+<variablelist>
+<varlistentry><term><literal>qanda</literal></term>
+<listitem>
+<para><tag>question</tag>s are labeled "Q:" and
+<tag>answer</tag>s are labeled "A:". </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>number</literal></term>
+<listitem>
+<para>The questions are enumerated and the answers
+are not labeled. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumber</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and answers are not
+labeled.
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumberanda</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and
+the answers are labeled "A:".
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>none</literal></term>
+<listitem>
+<para>No distinguishing label precedes Questions or Answers.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.inherit.numeration">
+<refmeta>
+<refentrytitle>qanda.inherit.numeration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.inherit.numeration</refname>
+<refpurpose>Does enumeration of QandASet components inherit the numeration of parent elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.inherit.numeration.frag">
+&lt;xsl:param name="qanda.inherit.numeration" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, numbered <tag>qandadiv</tag> elements and
+<tag>question</tag> and <tag>answer</tag> inherit the enumeration of
+the ancestors of the <tag>qandaset</tag>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.in.toc">
+<refmeta>
+<refentrytitle>qanda.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.in.toc</refname>
+<refpurpose>Should qandaentry questions appear in
+the document table of contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.in.toc.frag">&lt;xsl:param name="qanda.in.toc" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), then the generated table of contents
+for a document will include <tag>qandaset</tag> titles,
+<tag>qandadiv</tag> titles,
+and <tag>question</tag> elements. The default value (zero) excludes
+them from the TOC.
+</para>
+<para>This parameter does not affect any tables of contents
+that may be generated inside a qandaset or qandadiv.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="qanda.nested.in.toc">
+<refmeta>
+<refentrytitle>qanda.nested.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.nested.in.toc</refname>
+<refpurpose>Should nested answer/qandaentry instances appear in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="qanda.nested.in.toc.frag">
+&lt;xsl:param name="qanda.nested.in.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, instances of <tag>qandaentry</tag>
+that are children of <tag>answer</tag> elements are shown in
+the TOC.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="links"><title>Linking</title>
+<refentry version="5.0" xml:id="target.database.document">
+<refmeta>
+<refentrytitle>target.database.document</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>target.database.document</refname>
+<refpurpose>Name of master database file for resolving
+olinks</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="target.database.document.frag">
+ &lt;xsl:param name="target.database.document"&gt;olinkdb.xml&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+To resolve olinks between documents, the stylesheets use a master
+database document that identifies the target datafiles for all the
+documents within the scope of the olinks. This parameter value is the
+URI of the master document to be read during processing to resolve
+olinks. The default value is <filename>olinkdb.xml</filename>.</para>
+
+<para>The data structure of the file is defined in the
+<filename>targetdatabase.dtd</filename> DTD. The database file
+provides the high level elements to record the identifiers, locations,
+and relationships of documents. The cross reference data for
+individual documents is generally pulled into the database using
+system entity references or XIncludes. See also
+<parameter>targets.filename</parameter>. </para> </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="targets.filename">
+<refmeta>
+<refentrytitle>targets.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>targets.filename</refname>
+<refpurpose>Name of cross reference targets data file</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="targets.filename.frag">
+&lt;xsl:param name="targets.filename"&gt;target.db&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter lets you change the name of the generated
+file from the default name <filename>target.db</filename>.
+The name must agree with that used in the target database
+used to resolve olinks during processing.
+See also <parameter>target.database.document</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.base.uri">
+<refmeta>
+<refentrytitle>olink.base.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.base.uri</refname>
+<refpurpose>Base URI used in olink hrefs</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="olink.base.uri.frag">
+&lt;xsl:param name="olink.base.uri"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for resolving olinks, it
+may be necessary to prepend a base URI to each target's href. This
+parameter lets you set that base URI when cross reference data is
+collected. This feature is needed when you want to link to a document
+that is processed without chunking. The output filename for such a
+document is not known to the XSL stylesheet; the only target
+information consists of fragment identifiers such as
+<literal>#idref</literal>. To enable the resolution of olinks between
+documents, you should pass the name of the HTML output file as the
+value of this parameter. Then the hrefs recorded in the cross
+reference data collection look like
+<literal>outfile.html#idref</literal>, which can be reached as links
+from other documents.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.local.olink.style">
+<refmeta>
+<refentrytitle>use.local.olink.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.local.olink.style</refname>
+<refpurpose>Process olinks using xref style of current
+document</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="use.local.olink.style.frag">
+&lt;xsl:param name="use.local.olink.style" select="0"&gt;&lt;/xsl:param&gt; </programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the <parameter>use.local.olink.style</parameter> parameter is set to non-zero, then instead the cross
+reference string is formed again from the target title, number, and
+element name, using the stylesheet processing the targeting document.
+Then olinks will match the xref style in the targeting document
+rather than in the target document. If both documents are processed
+with the same stylesheet, then the results will be the same.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="current.docid">
+<refmeta>
+<refentrytitle>current.docid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>current.docid</refname>
+<refpurpose>targetdoc identifier for the document being
+processed</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="current.docid.frag">
+&lt;xsl:param name="current.docid"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the <literal>targetdoc</literal> identifiers for both documents, as they appear in the <parameter>target.database.document</parameter> database file. This parameter passes to the stylesheet
+the targetdoc identifier of the current document, since that
+identifier does not appear in the document itself. </para>
+<para>This parameter can also be used for print output. If an olink's <literal>targetdoc</literal> id differs from the <literal>current.docid</literal>, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also <parameter>olink.doctitle</parameter> to enable that feature.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.doctitle">
+<refmeta>
+<refentrytitle>olink.doctitle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.doctitle</refname>
+<refpurpose>show the document title for external olinks?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="olink.doctitle.frag">
+&lt;xsl:param name="olink.doctitle"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved, the generated text
+may not make it clear that the reference is to another document.
+It is possible for the stylesheets to append the other document's
+title to external olinks. For this to happen, two parameters must
+be set.</para>
+<itemizedlist>
+<listitem>
+<para>This <parameter>olink.doctitle</parameter> parameter
+should be set to either <literal>yes</literal> or <literal>maybe</literal>
+to enable this feature.
+</para>
+</listitem>
+<listitem>
+<para>And you should also set the <parameter>current.docid</parameter>
+parameter to the document id for the document currently
+being processed for output.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>
+Then if an olink's <literal>targetdoc</literal> id differs from
+the <literal>current.docid</literal> value, the stylesheet knows
+that it is a reference to another document and can
+append the target document's
+title to the generated olink text. </para>
+
+<para>The text for the target document's title is copied from the
+olink database from the <tag>ttl</tag> element
+of the top-level <tag>div</tag> for that document.
+If that <tag>ttl</tag> element is missing or empty,
+no title is output.
+</para>
+
+<para>The supported values for <parameter>olink.doctitle</parameter> are:
+</para>
+<variablelist>
+<varlistentry>
+<term><literal>yes</literal></term>
+<listitem>
+<para>
+Always insert the title to the target document if it is not
+the current document.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no</literal></term>
+<listitem>
+<para>
+Never insert the title to the target document, even if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>maybe</literal></term>
+<listitem>
+<para>
+Only insert the title to the target document, if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>An <tag class="attribute">xrefstyle</tag> attribute
+may override the global setting for individual olinks.
+The following values are supported in an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>select:</literal> syntax:
+</para>
+
+<variablelist>
+<varlistentry>
+<term><literal>docname</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docname</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>docnamelong</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docnamelong</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>nodocname</literal></term>
+<listitem>
+<para>
+Omit the target document name even if
+the value of <parameter>olink.doctitle</parameter>
+is <literal>yes</literal>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>Another way of inserting the target document name
+for a single olink is to employ an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>template:</literal> syntax.
+The <literal>%o</literal> placeholder (the letter o, not zero)
+in such a template
+will be filled in with the target document's title when it is processed.
+This will occur regardless of
+the value of <parameter>olink.doctitle</parameter>.
+</para>
+<para>Note that prior to version 1.66 of the XSL stylesheets,
+the allowed values for this parameter were 0 and 1. Those
+values are still supported and mapped to 'no' and 'yes', respectively.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.debug">
+<refmeta>
+<refentrytitle>olink.debug</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.debug</refname>
+<refpurpose>Turn on debugging messages for olinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="olink.debug.frag">
+&lt;xsl:param name="olink.debug" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then each olink will generate several
+messages about how it is being resolved during processing.
+This is useful when an olink does not resolve properly
+and the standard error messages are not sufficient to
+find the problem.
+</para>
+
+<para>You may need to read through the olink XSL templates
+to understand the context for some of the debug messages.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.properties">
+<refmeta>
+<refentrytitle>olink.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.properties</refname>
+<refpurpose>Properties associated with the cross-reference
+text of an olink.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="olink.properties.frag">
+&lt;xsl:attribute-set name="olink.properties"&gt;
+ &lt;xsl:attribute name="show-destination"&gt;replace&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This <literal>attribute set</literal> is applied to the
+<literal>fo:basic-link</literal> element of an olink. It is not applied to the
+optional page number or optional title of the external
+document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.lang.fallback.sequence">
+<refmeta>
+<refentrytitle>olink.lang.fallback.sequence</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.lang.fallback.sequence</refname>
+<refpurpose>look up translated documents if olink not found?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="olink.lang.fallback.sequence.frag">
+&lt;xsl:param name="olink.lang.fallback.sequence"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+
+<para>This parameter defines a list of lang values
+to search among to resolve olinks.
+</para>
+
+<para>Normally an olink tries to resolve to a document in the same
+language as the olink itself. The language of an olink
+is determined by its nearest ancestor element with a
+<tag class="attribute">lang</tag> attribute, otherwise the
+value of the <parameter>l10n.gentext.default.lang</parameter>
+parameter.
+</para>
+
+<para>An olink database can contain target data for the same
+document in multiple languages. Each set of data has the
+same value for the <tag>targetdoc</tag> attribute in
+the <tag>document</tag> element in the database, but with a
+different <tag>lang</tag> attribute value.
+</para>
+
+<para>When an olink is being resolved, the target is first
+sought in the document with the same language as the olink.
+If no match is found there, then this parameter is consulted
+for additional languages to try.</para>
+
+<para>The <parameter>olink.lang.fallback.sequence</parameter>
+must be a whitespace separated list of lang values to
+try. The first one with a match in the olink database is used.
+The default value is empty.</para>
+
+<para>For example, a document might be written in German
+and contain an olink with
+<literal>targetdoc="adminguide"</literal>.
+When the document is processed, the processor
+first looks for a target dataset in the
+olink database starting with:</para>
+
+<literallayout><literal>&lt;document targetdoc="adminguide" lang="de"&gt;</literal>.
+</literallayout>
+
+<para>If there is no such element, then the
+<parameter>olink.lang.fallback.sequence</parameter>
+parameter is consulted.
+If its value is, for example, <quote>fr en</quote>, then the processor next
+looks for <literal>targetdoc="adminguide" lang="fr"</literal>, and
+then for <literal>targetdoc="adminguide" lang="en"</literal>.
+If there is still no match, it looks for
+<literal>targetdoc="adminguide"</literal> with no
+lang attribute.
+</para>
+
+<para>This parameter is useful when a set of documents is only
+partially translated, or is in the process of being translated.
+If a target of an olink has not yet been translated, then this
+parameter permits the processor to look for the document in
+other languages. This assumes the reader would rather have
+a link to a document in a different language than to have
+a broken link.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="insert.olink.page.number">
+<refmeta>
+<refentrytitle>insert.olink.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.page.number</refname>
+<refpurpose>Turns page numbers in olinks on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="insert.olink.page.number.frag">
+&lt;xsl:param name="insert.olink.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references made between documents with
+<tag>olink</tag> will
+include page number citations.
+In most cases this is only applicable to references in printed output.
+</para>
+<para>The parameter has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated for olinks.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>olink</tag> references.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>olink</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+<para>Olinks that point to targets within the same document
+are treated as <tag>xref</tag>s, and controlled by
+the <parameter>insert.xref.page.number</parameter> parameter.
+</para>
+
+<para>Page number references for olinks to
+external documents can only be inserted if the
+information exists in the olink database.
+This means each olink target element
+(<tag>div</tag> or <tag>obj</tag>)
+must have a <tag class="attribute">page</tag> attribute
+whose value is its page number in the target document.
+The XSL stylesheets are not able to extract that information
+during processing because pages have not yet been created in
+XSLT transformation. Only the XSL-FO processor knows what
+page each element is placed on.
+Therefore some postprocessing must take place to populate
+page numbers in the olink database.
+</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="insert.olink.pdf.frag">
+<refmeta>
+<refentrytitle>insert.olink.pdf.frag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.pdf.frag</refname>
+<refpurpose>Add fragment identifiers for links into PDF files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="insert.olink.pdf.frag.frag">
+&lt;xsl:param name="insert.olink.pdf.frag" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines whether
+the cross reference URIs to PDF documents made with
+<tag>olink</tag> will
+include fragment identifiers.
+</para>
+
+<para>When forming a URI to link to a PDF document,
+a fragment identifier (typically a '#' followed by an
+id value) appended to the PDF filename can be used by
+the PDF viewer to open
+the PDF file to a location within the document instead of
+the first page.
+However, not all PDF files have id
+values embedded in them, and not all PDF viewers can
+handle fragment identifiers.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to a non-zero value, then any olink targeting a
+PDF file will have the fragment identifier appended to the URI.
+The URI is formed by concatenating the value of the
+<parameter>olink.base.uri</parameter> parameter, the
+value of the <tag class="attribute">baseuri</tag>
+attribute from the <tag class="element">document</tag>
+element in the olink database with the matching
+<tag class="attribute">targetdoc</tag> value,
+and the value of the <tag class="attribute">href</tag>
+attribute for the targeted element in the olink database.
+The <tag class="attribute">href</tag> attribute
+contains the fragment identifier.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to zero (the default value), then
+the <tag class="attribute">href</tag> attribute
+from the olink database
+is not appended to PDF olinks, so the fragment identifier is left off.
+A PDF olink is any olink for which the
+<tag class="attribute">baseuri</tag> attribute
+from the matching <tag class="element">document</tag>
+element in the olink database ends with '.pdf'.
+Any other olinks will still have the fragment identifier added.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="prefer.internal.olink">
+<refmeta>
+<refentrytitle>prefer.internal.olink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prefer.internal.olink</refname>
+<refpurpose>Prefer a local olink reference to an external reference</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="prefer.internal.olink.frag">
+&lt;xsl:param name="prefer.internal.olink" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you are re-using XML content modules in multiple documents,
+you may want to redirect some of your olinks. This parameter
+permits you to redirect an olink to the current document.
+</para>
+
+<para>For example: you are writing documentation for a product,
+which includes 3 manuals: a little installation
+booklet (booklet.xml), a user
+guide (user.xml), and a reference manual (reference.xml).
+All 3 documents begin with the same introduction section (intro.xml) that
+contains a reference to the customization section (custom.xml) which is
+included in both user.xml and reference.xml documents.
+</para>
+
+<para>How do you write the link to custom.xml in intro.xml
+so that it is interpreted correctly in all 3 documents?</para>
+<itemizedlist>
+<listitem><para>If you use xref, it will fail in user.xml.</para>
+</listitem>
+<listitem><para>If you use olink (pointing to reference.xml),
+the reference in user.xml
+will point to the customization section of the reference manual, while it is
+actually available in user.xml.</para>
+</listitem>
+</itemizedlist>
+
+<para>If you set the <parameter>prefer.internal.olink</parameter>
+parameter to a non-zero value, then the processor will
+first look in the olink database
+for the olink's <tag>targetptr</tag> attribute value
+in document matching the <parameter>current.docid</parameter>
+parameter value. If it isn't found there, then
+it tries the document in the database
+with the <tag>targetdoc</tag>
+value that matches the olink's <tag>targetdoc</tag>
+attribute.
+</para>
+
+<para>This feature permits an olink reference to resolve to
+the current document if there is an element
+with an id matching the olink's <tag>targetptr</tag>
+value. The current document's olink data must be
+included in the target database for this to work.</para>
+
+<caution>
+<para>There is a potential for incorrect links if
+the same <tag>id</tag> attribute value is used for different
+content in different documents.
+Some of your olinks may be redirected to the current document
+when they shouldn't be. It is not possible to control
+individual olink instances.</para>
+</caution>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="link.mailto.url">
+<refmeta>
+<refentrytitle>link.mailto.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>link.mailto.url</refname>
+<refpurpose>Mailto URL for the LINK REL=made HTML HEAD element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="link.mailto.url.frag">
+&lt;xsl:param name="link.mailto.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If not the empty string, this address will be used for the
+rel=made <literal>link</literal> element in the html <literal>head</literal>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ulink.target">
+<refmeta>
+<refentrytitle>ulink.target</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.target</refname>
+<refpurpose>The HTML anchor target for ULinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ulink.target.frag">
+&lt;xsl:param name="ulink.target"&gt;_top&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>ulink.target</parameter> is non-zero, its value will
+be used for the <literal>target</literal> attribute
+on anchors generated for <tag>ulink</tag>s.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.fragid">
+<refmeta>
+<refentrytitle>olink.fragid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.fragid</refname>
+<refpurpose>Names the fragment identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="olink.fragid.frag">
+&lt;xsl:param name="olink.fragid"&gt;fragid=&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>The fragment identifier portion of an <tag>olink</tag> target.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.outline.ext">
+<refmeta>
+<refentrytitle>olink.outline.ext</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.outline.ext</refname>
+<refpurpose>The extension of OLink outline files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="olink.outline.ext.frag">
+&lt;xsl:param name="olink.outline.ext"&gt;.olink&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The extension to be expected for OLink outline files</para>
+<para>Bob has this parameter as dead. Please don't use</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.pubid">
+<refmeta>
+<refentrytitle>olink.pubid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.pubid</refname>
+<refpurpose>Names the public identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="olink.pubid.frag">
+&lt;xsl:param name="olink.pubid"&gt;pubid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para/>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.sysid">
+<refmeta>
+<refentrytitle>olink.sysid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.sysid</refname>
+<refpurpose>Names the system identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="olink.sysid.frag">
+&lt;xsl:param name="olink.sysid"&gt;sysid&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="olink.resolver">
+<refmeta>
+<refentrytitle>olink.resolver</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.resolver</refname>
+<refpurpose>The root name of the OLink resolver (usually a script)</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="olink.resolver.frag">
+ &lt;xsl:param name="olink.resolver"&gt;/cgi-bin/olink&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>FIXME:</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="xrefs"><title>Cross References</title>
+<refentry version="5.0" xml:id="collect.xref.targets">
+<refmeta>
+<refentrytitle>collect.xref.targets</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">only</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>collect.xref.targets</refname>
+<refpurpose>Controls whether cross reference data is
+collected</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <programlisting xml:id="collect.xref.targets.frag">
+&lt;xsl:param name="collect.xref.targets"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is <literal>no</literal>, which means the data file is not generated during processing. The other choices are <literal>yes</literal>, which means the data file is created and the document is processed for output, and <literal>only</literal>, which means the data file is created but the document is not processed for output.
+See also <parameter>targets.filename</parameter>.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="insert.xref.page.number">
+<refmeta>
+<refentrytitle>insert.xref.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.xref.page.number</refname>
+<refpurpose>Turns page numbers in xrefs on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="insert.xref.page.number.frag">
+&lt;xsl:param name="insert.xref.page.number"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references (<tag>xref</tag>s) in
+printed output will
+include page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>xref</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>xref</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.role.as.xrefstyle">
+<refmeta>
+<refentrytitle>use.role.as.xrefstyle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.as.xrefstyle</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute for
+<tag class="attribute">xrefstyle</tag> on <tag>xref</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.role.as.xrefstyle.frag">
+&lt;xsl:param name="use.role.as.xrefstyle" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In DocBook documents that conform to a schema older than V4.3, this parameter allows
+<tag class="attribute">role</tag> to serve the purpose of specifying the cross reference style.</para>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>xref</tag> will be used to select the cross reference style.
+In DocBook V4.3, the <tag class="attribute">xrefstyle</tag> attribute was added for this purpose.
+If the <tag class="attribute">xrefstyle</tag> attribute is present,
+<tag class="attribute">role</tag> will be ignored, regardless of the setting
+of this parameter.</para>
+
+</refsection>
+
+<refsection><info><title>Example</title></info>
+
+<para>The following small stylesheet shows how to configure the
+stylesheets to make use of the cross reference style:</para>
+
+<programlisting>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"&gt;
+
+&lt;xsl:import href="../xsl/html/docbook.xsl"/&gt;
+
+&lt;xsl:output method="html"/&gt;
+
+&lt;xsl:param name="local.l10n.xml" select="document('')"/&gt;
+&lt;l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"&gt;
+ &lt;l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"&gt;
+ &lt;l:context name="xref"&gt;
+ &lt;l:template name="chapter" style="title" text="Chapter %n, %t"/&gt;
+ &lt;l:template name="chapter" text="Chapter %n"/&gt;
+ &lt;/l:context&gt;
+ &lt;/l:l10n&gt;
+&lt;/l:i18n&gt;
+
+&lt;/xsl:stylesheet&gt;</programlisting>
+
+<para>With this stylesheet, the cross references in the following document:</para>
+
+<programlisting>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"&gt;
+&lt;book id="book"&gt;&lt;title&gt;Book&lt;/title&gt;
+
+&lt;preface&gt;
+&lt;title&gt;Preface&lt;/title&gt;
+
+&lt;para&gt;Normal: &lt;xref linkend="ch1"/&gt;.&lt;/para&gt;
+&lt;para&gt;Title: &lt;xref xrefstyle="title" linkend="ch1"/&gt;.&lt;/para&gt;
+
+&lt;/preface&gt;
+
+&lt;chapter id="ch1"&gt;
+&lt;title&gt;First Chapter&lt;/title&gt;
+
+&lt;para&gt;Irrelevant.&lt;/para&gt;
+
+&lt;/chapter&gt;
+&lt;/book&gt;</programlisting>
+
+<para>will appear as:</para>
+
+<informalexample>
+<para>Normal: Chapter 1.</para>
+<para>Title: Chapter 1, <emphasis>First Chapter</emphasis>.</para>
+</informalexample>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="xref.with.number.and.title">
+<refmeta>
+<refentrytitle>xref.with.number.and.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.with.number.and.title</refname>
+<refpurpose>Use number and title in cross references</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.with.number.and.title.frag">
+&lt;xsl:param name="xref.with.number.and.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A cross reference may include the number (for example, the number of
+an example or figure) and the <tag>title</tag> which is a required child of some
+targets. This parameter inserts both the relevant number as well as
+the title into the link. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.label-page.separator">
+<refmeta>
+<refentrytitle>xref.label-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-page.separator</refname>
+<refpurpose>Punctuation or space separating label from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.label-page.separator.frag">&lt;xsl:param name="xref.label-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and page
+but no title,
+then the value of this parameter is inserted between
+label and page number in the output.
+If a title is included, then other separators are used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.label-title.separator">
+<refmeta>
+<refentrytitle>xref.label-title.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-title.separator</refname>
+<refpurpose>Punctuation or space separating label from title in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.label-title.separator.frag">&lt;xsl:param name="xref.label-title.separator"&gt;: &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and title,
+then the value of this parameter is inserted between
+label and title in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xref.title-page.separator">
+<refmeta>
+<refentrytitle>xref.title-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.title-page.separator</refname>
+<refpurpose>Punctuation or space separating title from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xref.title-page.separator.frag">&lt;xsl:param name="xref.title-page.separator"&gt;&lt;xsl:text&gt; &lt;/xsl:text&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both title and page number,
+then the value of this parameter is inserted between
+title and page number in the output.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="lists"><title>Lists</title>
+<refentry version="5.0" xml:id="segmentedlist.as.table">
+<refmeta>
+<refentrytitle>segmentedlist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>segmentedlist.as.table</refname>
+<refpurpose>Format segmented lists as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="segmentedlist.as.table.frag">
+&lt;xsl:param name="segmentedlist.as.table" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>segmentedlist</tag>s will be formatted as
+tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.as.table">
+<refmeta>
+<refentrytitle>variablelist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.as.table</refname>
+<refpurpose>Format <tag>variablelist</tag>s as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.as.table.frag">
+&lt;xsl:param name="variablelist.as.table" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>variablelist</tag>s will be formatted as
+tables. A processing instruction exists to specify a particular width for the
+column containing the <tag>term</tag>s:
+<tag class="xmlpi">dbhtml term-width=".25in"</tag></para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>variablelist</tag>: <tag class="xmlpi">dbhtml
+list-presentation="table"</tag> or <tag class="xmlpi">dbhtml
+list-presentation="list"</tag>.</para>
+
+<para>This parameter only applies to the HTML transformations. In the
+FO case, proper list markup is robust enough to handle the formatting.
+But see also <parameter>variablelist.as.blocks</parameter>.</para>
+
+<programlisting> &lt;variablelist&gt;
+ &lt;?dbhtml list-presentation="table"?&gt;
+ &lt;?dbhtml term-width="1.5in"?&gt;
+ &lt;?dbfo list-presentation="list"?&gt;
+ &lt;?dbfo term-width="1in"?&gt;
+ &lt;varlistentry&gt;
+ &lt;term&gt;list&lt;/term&gt;
+ &lt;listitem&gt;
+ &lt;para&gt;
+ Formatted as a table even if variablelist.as.table is set to 0.
+ &lt;/para&gt;
+ &lt;/listitem&gt;
+ &lt;/varlistentry&gt;
+ &lt;/variablelist&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.term.separator">
+<refmeta>
+<refentrytitle>variablelist.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.separator</refname>
+<refpurpose>Text to separate <tag>term</tag>s within a multi-term
+<tag>varlistentry</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.term.separator.frag">
+&lt;xsl:param name="variablelist.term.separator"&gt;, &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is placed
+after each <tag>term</tag> except the last.</para>
+
+<note>
+ <para>To generate a line break between multiple <tag>term</tag>s in
+ a <tag>varlistentry</tag>, set a non-zero value for the
+ <parameter>variablelist.term.break.after</parameter> parameter. If
+ you do so, you may also want to set the value of the
+ <parameter>variablelist.term.separator</parameter> parameter to an
+ empty string (to suppress rendering of the default comma and space
+ after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="variablelist.term.break.after">
+<refmeta>
+<refentrytitle>variablelist.term.break.after</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.break.after</refname>
+<refpurpose>Generate line break after each <tag>term</tag> within a
+multi-term <tag>varlistentry</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="variablelist.term.break.after.frag">
+&lt;xsl:param name="variablelist.term.break.after"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set a non-zero value for the
+<parameter>variablelist.term.break.after</parameter> parameter to
+generate a line break between <tag>term</tag>s in a
+multi-term <tag>varlistentry</tag>.</para>
+
+<note>
+<para>If you set a non-zero value for
+<parameter>variablelist.term.break.after</parameter>, you may also
+want to set the value of the
+<parameter>variablelist.term.separator</parameter> parameter to an
+empty string (to suppress rendering of the default comma and space
+after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="biblio"><title>Bibliography</title>
+<refentry version="5.0" xml:id="bibliography.style">
+<refmeta>
+<refentrytitle>bibliography.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">normal</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iso690</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.style</refname>
+<refpurpose>Style used for formatting of biblioentries.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bibliography.style.frag">
+&lt;xsl:param name="bibliography.style"&gt;normal&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Currently only <literal>normal</literal> and
+<literal>iso690</literal> styles are supported.</para>
+
+<para>In order to use ISO690 style to the full extent you might need
+to use additional markup described on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://wiki.docbook.org/topic/ISO690Bibliography">the
+following WiKi page</link>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="biblioentry.item.separator">
+<refmeta>
+<refentrytitle>biblioentry.item.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.item.separator</refname>
+<refpurpose>Text to separate bibliography entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="biblioentry.item.separator.frag">&lt;xsl:param name="biblioentry.item.separator"&gt;. &lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Text to separate bibliography entries
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bibliography.collection">
+<refmeta>
+<refentrytitle>bibliography.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.collection</refname>
+<refpurpose>Name of the bibliography collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bibliography.collection.frag">
+&lt;xsl:param name="bibliography.collection"&gt;http://docbook.sourceforge.net/release/bibliography/bibliography.xml&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Maintaining bibliography entries across a set of documents is tedious, time
+consuming, and error prone. It makes much more sense, usually, to store all of
+the bibliography entries in a single place and simply <quote>extract</quote>
+the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>bibliography.collection</parameter> parameter. To setup a global
+bibliography <quote>database</quote>, follow these steps:</para>
+
+<para>First, create a stand-alone bibliography document that contains all of
+the documents that you wish to reference. Make sure that each bibliography
+entry (whether you use <tag>biblioentry</tag> or <tag>bibliomixed</tag>)
+has an ID.</para>
+
+<para>My global bibliography, <filename>~/bibliography.xml</filename> begins
+like this:</para>
+
+<informalexample>
+<programlisting>&lt;!DOCTYPE bibliography
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;bibliography&gt;&lt;title&gt;References&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"&gt;&lt;abbrev&gt;XML 1.0&lt;/abbrev&gt;Tim Bray,
+Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml"&gt;Extensible Markup
+Language (XML) 1.0 Second Edition&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 2000.
+&lt;/bibliomixed&gt;
+
+&lt;bibliomixed id="xml-names"&gt;&lt;abbrev&gt;Namespaces&lt;/abbrev&gt;Tim Bray,
+Dave Hollander,
+and Andrew Layman, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml-names/"&gt;Namespaces in
+XML&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 1999.
+&lt;/bibliomixed&gt;
+
+&lt;!-- ... --&gt;
+&lt;/bibliography&gt;
+</programlisting>
+</informalexample>
+
+<para>When you create a bibliography in your document, simply
+provide <emphasis>empty</emphasis> <tag>bibliomixed</tag>
+entries for each document that you wish to cite. Make sure that these
+elements have the same ID as the corresponding <quote>real</quote>
+entry in your global bibliography.</para>
+
+<para>For example:</para>
+
+<informalexample>
+<programlisting>&lt;bibliography&gt;&lt;title&gt;Bibliography&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"/&gt;
+&lt;bibliomixed id="xml-names"/&gt;
+&lt;bibliomixed id="DKnuth86"&gt;Donald E. Knuth. &lt;citetitle&gt;Computers and
+Typesetting: Volume B, TeX: The Program&lt;/citetitle&gt;. Addison-Wesley,
+1986. ISBN 0-201-13437-3.
+&lt;/bibliomixed&gt;
+&lt;bibliomixed id="relaxng"/&gt;
+
+&lt;/bibliography&gt;</programlisting>
+</informalexample>
+
+<para>Note that it's perfectly acceptable to mix entries from your
+global bibliography with <quote>normal</quote> entries. You can use
+<tag>xref</tag> or other elements to cross-reference your
+bibliography entries in exactly the same way you do now.</para>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>bibliography.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global bibliography.</para>
+
+<para>The stylesheets will format the bibliography in your document as if
+all of the entries referenced appeared there literally.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bibliography.numbered">
+<refmeta>
+<refentrytitle>bibliography.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.numbered</refname>
+<refpurpose>Should bibliography entries be numbered?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bibliography.numbered.frag">
+&lt;xsl:param name="bibliography.numbered" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero bibliography entries will be numbered</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="glossary"><title>Glossary</title>
+<refentry version="5.0" xml:id="glossterm.auto.link">
+<refmeta>
+<refentrytitle>glossterm.auto.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.auto.link</refname>
+<refpurpose>Generate links from glossterm to glossentry automatically?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossterm.auto.link.frag">
+&lt;xsl:param name="glossterm.auto.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links from inline <tag>glossterm</tag>s to the corresponding
+<tag>glossentry</tag> elements in a <tag>glossary</tag> or <tag>glosslist</tag>
+will be automatically generated. This is useful when your glossterms are consistent
+and you don't want to add links manually.</para>
+
+<para>The automatic link generation feature is not used on <tag>glossterm</tag> elements
+that have a <tag class="attribute">linkend</tag> attribute.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="firstterm.only.link">
+<refmeta>
+<refentrytitle>firstterm.only.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>firstterm.only.link</refname>
+<refpurpose>Does automatic glossterm linking only apply to firstterms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="firstterm.only.link.frag">
+&lt;xsl:param name="firstterm.only.link" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, only <tag>firstterm</tag>s will be automatically linked
+to the glossary. If glossary linking is not enabled, this parameter
+has no effect.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossary.collection">
+<refmeta>
+<refentrytitle>glossary.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.collection</refname>
+<refpurpose>Name of the glossary collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossary.collection.frag">
+&lt;xsl:param name="glossary.collection"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Glossaries maintained independently across a set of documents
+are likely to become inconsistent unless considerable effort is
+expended to keep them in sync. It makes much more sense, usually, to
+store all of the glossary entries in a single place and simply
+<quote>extract</quote> the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>glossary.collection</parameter> parameter. To setup a global
+glossary <quote>database</quote>, follow these steps:</para>
+
+<refsection><info><title>Setting Up the Glossary Database</title></info>
+
+<para>First, create a stand-alone glossary document that contains all of
+the entries that you wish to reference. Make sure that each glossary
+entry has an ID.</para>
+
+<para>Here's an example glossary:</para>
+
+<informalexample>
+<programlisting>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE glossary
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;glossary&gt;
+&lt;glossaryinfo&gt;
+&lt;editor&gt;&lt;firstname&gt;Eric&lt;/firstname&gt;&lt;surname&gt;Raymond&lt;/surname&gt;&lt;/editor&gt;
+&lt;title&gt;Jargon File 4.2.3 (abridged)&lt;/title&gt;
+&lt;releaseinfo&gt;Just some test data&lt;/releaseinfo&gt;
+&lt;/glossaryinfo&gt;
+
+&lt;glossdiv&gt;&lt;title&gt;0&lt;/title&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;0&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;Numeric zero, as opposed to the letter `O' (the 15th letter of
+the English alphabet). In their unmodified forms they look a lot
+alike, and various kluges invented to make them visually distinct have
+compounded the confusion. If your zero is center-dotted and letter-O
+is not, or if letter-O looks almost rectangular but zero looks more
+like an American football stood on end (or the reverse), you're
+probably looking at a modern character display (though the dotted zero
+seems to have originated as an option on IBM 3270 controllers). If
+your zero is slashed but letter-O is not, you're probably looking at
+an old-style ASCII graphic set descended from the default typewheel on
+the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter,
+curse this arrangement). (Interestingly, the slashed zero long
+predates computers; Florian Cajori's monumental "A History of
+Mathematical Notations" notes that it was used in the twelfth and
+thirteenth centuries.) If letter-O has a slash across it and the zero
+does not, your display is tuned for a very old convention used at IBM
+and a few other early mainframe makers (Scandinavians curse &lt;emphasis&gt;this&lt;/emphasis&gt;
+arrangement even more, because it means two of their letters collide).
+Some Burroughs/Unisys equipment displays a zero with a &lt;emphasis&gt;reversed&lt;/emphasis&gt;
+slash. Old CDC computers rendered letter O as an unbroken oval and 0
+as an oval broken at upper right and lower left. And yet another
+convention common on early line printers left zero unornamented but
+added a tail or hook to the letter-O so that it resembled an inverted
+Q or cursive capital letter-O (this was endorsed by a draft ANSI
+standard for how to draw ASCII characters, but the final standard
+changed the distinguisher to a tick-mark in the upper-left corner).
+Are we sufficiently confused yet?&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;1TBS&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para role="accidence"&gt;
+&lt;phrase role="pronounce"&gt;&lt;/phrase&gt;
+&lt;phrase role="partsofspeach"&gt;n&lt;/phrase&gt;
+&lt;/para&gt;
+&lt;para&gt;The "One True Brace Style"&lt;/para&gt;
+&lt;glossseealso&gt;indent style&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossdiv&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+</refsection>
+
+<refsection><info><title>Marking Up Glossary Terms</title></info>
+
+<para>That takes care of the glossary database, now you have to get the entries
+into your document. Unlike bibliography entries, which can be empty, creating
+<quote>placeholder</quote> glossary entries would be very tedious. So instead,
+support for <parameter>glossary.collection</parameter> relies on implicit linking.</para>
+
+<para>In your source document, simply use <tag>firstterm</tag> and
+<tag>glossterm</tag> to identify the terms you wish to have included
+in the glossary. The stylesheets assume that you will either set the
+<tag class="attribute">baseform</tag> attribute correctly, or that the
+content of the element exactly matches a term in your glossary.</para>
+
+<para>If you're using a <parameter>glossary.collection</parameter>, don't
+make explicit links on the terms in your document.</para>
+
+<para>So, in your document, you might write things like this:</para>
+
+<informalexample>
+<programlisting>&lt;para&gt;This is dummy text, without any real meaning.
+The point is simply to reference glossary terms like &lt;glossterm&gt;0&lt;/glossterm&gt;
+and the &lt;firstterm baseform="1TBS"&gt;One True Brace Style (1TBS)&lt;/firstterm&gt;.
+The &lt;glossterm&gt;1TBS&lt;/glossterm&gt;, as you can probably imagine, is a nearly
+religious issue.&lt;/para&gt;</programlisting>
+</informalexample>
+
+<para>If you set the <parameter>firstterm.only.link</parameter> parameter,
+only the terms marked with <tag>firstterm</tag> will be links.
+Otherwise, all the terms will be linked.</para>
+
+</refsection>
+
+<refsection><info><title>Marking Up the Glossary</title></info>
+
+<para>The glossary itself has to be identified for the stylesheets. For lack
+of a better choice, the <tag class="attribute">role</tag> is used.
+To identify the glossary as the target for automatic processing, set
+the role to <quote><literal>auto</literal></quote>. The title of this
+glossary (and any other information from the <tag>glossaryinfo</tag>
+that's rendered by your stylesheet) will be displayed, but the entries will
+come from the database.
+</para>
+
+<para>Unfortunately, the glossary can't be empty, so you must put in
+at least one <tag>glossentry</tag>. The content of this entry
+is irrelevant, it will not be rendered:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+<para>What about glossary divisions? If your glossary database has glossary
+divisions <emphasis>and</emphasis> your automatic glossary contains at least
+one <tag>glossdiv</tag>, the automic glossary will have divisions.
+If the <tag>glossdiv</tag> is missing from either location, no divisions
+will be rendered.</para>
+
+<para>Glossary entries (and divisions, if appropriate) in the glossary will
+occur in precisely the order they occur in your database.</para>
+
+</refsection>
+
+<refsection><info><title>Formatting the Document</title></info>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>glossary.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global glossary.</para>
+
+<para>The stylesheets will format the glossary in your document as if
+all of the entries implicilty referenced appeared there literally.</para>
+</refsection>
+
+<refsection><info><title>Limitations</title></info>
+
+<para>Glossary cross-references <emphasis>within the glossary</emphasis> are
+not supported. For example, this <emphasis>will not</emphasis> work:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+
+<para>If you put glossary cross-references in your glossary that way,
+you'll get the cryptic error: <computeroutput>Warning:
+glossary.collection specified, but there are 0 automatic
+glossaries</computeroutput>.</para>
+
+<para>Instead, you must do two things:</para>
+
+<orderedlist>
+<listitem>
+<para>Markup your glossary using <tag>glossseealso</tag>:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+</listitem>
+
+<listitem>
+<para>Make sure there is at least one <tag>glossterm</tag> reference to
+<glossterm>gloss-2</glossterm> <emphasis>in your document</emphasis>. The
+easiest way to do that is probably within a <tag>remark</tag> in your
+automatic glossary:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;remark&gt;Make sure there's a reference to &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/remark&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+</listitem>
+</orderedlist>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossary.sort">
+<refmeta>
+<refentrytitle>glossary.sort</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.sort</refname>
+<refpurpose>Sort glossentry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossary.sort.frag">
+&lt;xsl:param name="glossary.sort" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then the glossentry elements within a
+glossary, glossdiv, or glosslist are sorted on the glossterm, using
+the current lang setting. If zero (the default), then
+glossentry elements are not sorted and are presented
+in document order.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="glossentry.show.acronym">
+<refmeta>
+<refentrytitle>glossentry.show.acronym</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">primary</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.show.acronym</refname>
+<refpurpose>Display <tag>glossentry</tag> acronyms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="glossentry.show.acronym.frag">
+&lt;xsl:param name="glossentry.show.acronym"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A setting of <quote>yes</quote> means they should be displayed;
+<quote>no</quote> means they shouldn't. If <quote>primary</quote> is used,
+then they are shown as the primary text for the entry.</para>
+
+<note>
+<para>This setting controls both <tag>acronym</tag> and
+<tag>abbrev</tag> elements in the <tag>glossentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="misc"><title>Miscellaneous</title>
+<refentry version="5.0" xml:id="formal.procedures">
+<refmeta>
+<refentrytitle>formal.procedures</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.procedures</refname>
+<refpurpose>Selects formal or informal procedures</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="formal.procedures.frag">
+&lt;xsl:param name="formal.procedures" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formal procedures are numbered and always have a title.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="formal.title.placement">
+<refmeta>
+<refentrytitle>formal.title.placement</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.placement</refname>
+<refpurpose>Specifies where formal object titles should occur</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="formal.title.placement.frag">
+&lt;xsl:param name="formal.title.placement"&gt;
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies where formal object titles should occur. For each formal object
+type (<tag>figure</tag>,
+<tag>example</tag>,
+<tag>equation</tag>,
+<tag>table</tag>, and <tag>procedure</tag>)
+you can specify either the keyword
+<quote><literal>before</literal></quote> or
+<quote><literal>after</literal></quote>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="runinhead.default.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.default.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.default.title.end.punct</refname>
+<refpurpose>Default punctuation character on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="runinhead.default.title.end.punct.frag">&lt;xsl:param name="runinhead.default.title.end.punct"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, For a <tag>formalpara</tag>, use the specified
+string as the separator between the title and following text. The period is the default value.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="runinhead.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.title.end.punct</refname>
+<refpurpose>Characters that count as punctuation on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="runinhead.title.end.punct.frag">
+&lt;xsl:param name="runinhead.title.end.punct"&gt;.!?:&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify which characters are to be counted as punctuation. These
+characters are checked for a match with the last character of the
+title. If no match is found, the
+<parameter>runinhead.default.title.end.punct</parameter> contents are
+inserted. This is to avoid duplicated punctuation in the output.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="show.comments">
+<refmeta>
+<refentrytitle>show.comments</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.comments</refname>
+<refpurpose>Display <tag>remark</tag> elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="show.comments.frag">
+&lt;xsl:param name="show.comments" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, comments will be displayed, otherwise they
+are suppressed. Comments here refers to the <tag>remark</tag> element
+(which was called <literal>comment</literal> prior to DocBook
+4.0), not XML comments (&lt;-- like this --&gt;) which are
+unavailable.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="show.revisionflag">
+<refmeta>
+<refentrytitle>show.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.revisionflag</refname>
+<refpurpose>Enable decoration of elements that have a revisionflag</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="show.revisionflag.frag">
+&lt;xsl:param name="show.revisionflag" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If <parameter>show.revisionflag</parameter> is turned on, then the stylesheets
+may produce additional markup designed to allow a CSS stylesheet to
+highlight elements that have specific revisionflag settings.</para>
+
+<para>The markup inserted will be usually be either a &lt;span&gt; or
+&lt;div&gt; with an appropriate <literal>class</literal>
+attribute. (The value of the class attribute will be the same as the
+value of the revisionflag attribute). In some contexts, for example
+tables, where extra markup would be structurally illegal, the class
+attribute will be added to the appropriate container element.</para>
+
+<para>In general, the stylesheets only test for revisionflag in contexts
+where an importing stylesheet would have to redefine whole templates.
+Most of the revisionflag processing is expected to be done by another
+stylesheet, for example <filename>changebars.xsl</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="shade.verbatim">
+<refmeta>
+<refentrytitle>shade.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim</refname>
+<refpurpose>Should verbatim environments be shaded?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="shade.verbatim.frag">&lt;xsl:param name="shade.verbatim" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In the FO stylesheet, if this parameter is non-zero then the
+<property>shade.verbatim.style</property> properties will be applied
+to verbatim environments.</para>
+
+<para>In the HTML stylesheet, this parameter is now deprecated. Use
+CSS instead.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="shade.verbatim.style">
+<refmeta>
+<refentrytitle>shade.verbatim.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim.style</refname>
+<refpurpose>Properties that specify the style of shaded verbatim listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="shade.verbatim.style.frag">
+&lt;xsl:attribute-set name="shade.verbatim.style"&gt;
+ &lt;xsl:attribute name="border"&gt;0&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="bgcolor"&gt;#E0E0E0&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties that specify the style of shaded verbatim listings. The
+parameters specified (the border and background color) are added to
+the styling of the xsl-fo output. A border might be specified as "thin
+black solid" for example. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/#border">xsl-fo</link></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="punct.honorific">
+<refmeta>
+<refentrytitle>punct.honorific</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>punct.honorific</refname>
+<refpurpose>Punctuation after an honorific in a personal name.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="punct.honorific.frag">
+&lt;xsl:param name="punct.honorific"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the punctuation that should be added after an
+honorific in a personal name.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="tex.math.in.alt">
+<refmeta>
+<refentrytitle>tex.math.in.alt</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">plain</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">latex</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.in.alt</refname>
+<refpurpose>TeX notation used for equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="tex.math.in.alt.frag">
+&lt;xsl:param name="tex.math.in.alt"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want type math directly in TeX notation in equations,
+this parameter specifies notation used. Currently are supported two
+values -- <literal>plain</literal> and <literal>latex</literal>. Empty
+value means that you are not using TeX math at all.</para>
+
+<para>Preferred way for including TeX alternative of math is inside of
+<tag>textobject</tag> element. Eg.:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;inlinemediaobject&gt;
+&lt;imageobject&gt;
+&lt;imagedata fileref="eq1.gif"/&gt;
+&lt;/imageobject&gt;
+&lt;textobject&gt;&lt;phrase&gt;E=mc squared&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;textobject role="tex"&gt;&lt;phrase&gt;E=mc^2&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;/inlinemediaobject&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you are using <tag>graphic</tag> element, you can
+store TeX inside <tag>alt</tag> element:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;alt role="tex"&gt;a^2+b^2=c^2&lt;/alt&gt;
+&lt;graphic fileref="a2b2c2.gif"/&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you want use this feature, you should process your FO with
+PassiveTeX, which only supports TeX math notation. When calling
+stylsheet, don't forget to specify also
+passivetex.extensions=1.</para>
+
+<para>If you want equations in HTML, just process generated file
+<filename>tex-math-equations.tex</filename> by TeX or LaTeX. Then run
+dvi2bitmap program on result DVI file. You will get images for
+equations in your document.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.delims</parameter>,
+ <parameter>passivetex.extensions</parameter>,
+ <parameter>tex.math.file</parameter></para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="tex.math.file">
+<refmeta>
+<refentrytitle>tex.math.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.file</refname>
+<refpurpose>Name of temporary file for generating images from equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="tex.math.file.frag">
+&lt;xsl:param name="tex.math.file"&gt;tex-math-equations.tex&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Name of auxiliary file for TeX equations. This file can be
+processed by dvi2bitmap to get bitmap versions of equations for HTML
+output.</para>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>tex.math.delims</parameter>,
+ </para>
+</refsection>
+<refsection><info><title>More information</title></info>
+ <para>For how-to documentation on embedding TeX equations and
+ generating output from them, see
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="TexMath.html">DBTeXMath</link>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="tex.math.delims">
+<refmeta>
+<refentrytitle>tex.math.delims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.delims</refname>
+<refpurpose>Should equations output for processing by TeX be
+surrounded by math mode delimiters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="tex.math.delims.frag">
+&lt;xsl:param name="tex.math.delims" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For compatibility with DSSSL based DBTeXMath from Allin Cottrell
+you should set this parameter to 0.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>passivetex.extensions</parameter></para>
+</refsection>
+
+<refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag class="xmlpi">dbtex delims</tag> processing
+ instruction to control whether delimiters are output.</para>
+</refsection>
+
+
+</refentry>
+
+<refentry version="5.0" xml:id="pixels.per.inch">
+<refmeta>
+<refentrytitle>pixels.per.inch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pixels.per.inch</refname>
+<refpurpose>How many pixels are there per inch?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="pixels.per.inch.frag">
+&lt;xsl:param name="pixels.per.inch"&gt;90&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When lengths are converted to pixels, this value is used to
+determine the size of a pixel. The default value is taken from the
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/">XSL
+Recommendation</link>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="points.per.em">
+<refmeta>
+<refentrytitle>points.per.em</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>points.per.em</refname>
+<refpurpose>Specify the nominal size of an em-space in points</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="points.per.em.frag">
+&lt;xsl:param name="points.per.em"&gt;10&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The fixed value used for calculations based upon the size of a
+character. The assumption made is that ten point font is in use. This
+assumption may not be valid.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.svg">
+<refmeta>
+<refentrytitle>use.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.svg</refname>
+<refpurpose>Allow SVG in the result tree?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.svg.frag">
+&lt;xsl:param name="use.svg" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, SVG will be considered an acceptable image format. SVG
+is passed through to the result tree, so correct rendering of the resulting
+diagram depends on the formatter (FO processor or web browser) that is used
+to process the output from the stylesheet.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="menuchoice.separator">
+<refmeta>
+<refentrytitle>menuchoice.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+other than <tag>guimenuitem</tag> and
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="menuchoice.separator.frag">
+&lt;xsl:param name="menuchoice.separator"&gt;+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> other
+than <tag>guimenuitem</tag> and <tag>guisubmenu</tag>. The latter
+elements are linked with <parameter>menuchoice.menu.separator</parameter>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="menuchoice.menu.separator">
+<refmeta>
+<refentrytitle>menuchoice.menu.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.menu.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+with <tag>guimenuitem</tag> or
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="menuchoice.menu.separator.frag">
+&lt;xsl:param name="menuchoice.menu.separator"&gt; &#8594; &lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> with
+<tag>guimenuitem</tag> or <tag>guisubmenu</tag>. Other elements
+are linked with <parameter>menuchoice.separator</parameter>.
+</para>
+<para>The default value is &amp;#x2192;, which is the
+&amp;rarr; (right arrow) character entity.
+The current FOP (0.20.5) requires setting the font-family
+explicitly.
+</para>
+<para>The default value also includes spaces around the arrow,
+which will allow a line to break. Replace the spaces with
+&amp;#xA0; (nonbreaking space) if you don't want those
+spaces to break.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.float.class">
+<refmeta>
+<refentrytitle>default.float.class</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.float.class</refname>
+<refpurpose>Specifies the default float class</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.float.class.frag">
+&lt;xsl:param name="default.float.class"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="contains($stylesheet.result.type,'html')"&gt;left&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;before&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the direction in which a float should be placed. for
+xsl-fo this is before, for html it is left. For Western texts, the
+before direction is the top of the page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.number.format">
+<refmeta>
+<refentrytitle>footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.number.format.frag">
+&lt;xsl:param name="footnote.number.format"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.footnote.number.format">
+<refmeta>
+<refentrytitle>table.footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.footnote.number.format.frag">
+&lt;xsl:param name="table.footnote.number.format"&gt;a&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>table.footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A) in tables.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footnote.number.symbols">
+<refmeta>
+<refentrytitle>footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype"/>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.symbols</refname>
+<refpurpose>Special characters to use as footnote markers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footnote.number.symbols.frag">
+&lt;xsl:param name="footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>footnote.number.symbols</parameter> is not the empty string,
+footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.footnote.number.symbols">
+<refmeta>
+<refentrytitle>table.footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.symbols</refname>
+<refpurpose>Special characters to use a footnote markers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.footnote.number.symbols.frag">
+&lt;xsl:param name="table.footnote.number.symbols"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>table.footnote.number.symbols</parameter> is not the empty string,
+table footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>&#8224;</quote>, <quote>&#8225;</quote>,
+<quote>&#9674;</quote>, and <quote>&#10016;</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>table.footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="highlight.source">
+<refmeta>
+<refentrytitle>highlight.source</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.source</refname>
+<refpurpose>Should the content of <tag>programlisting</tag>
+be syntactically highlighted?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="highlight.source.frag">
+&lt;xsl:param name="highlight.source" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the
+content of <tag>programlisting</tag> elements. You specify the language for each programlisting
+by using the <tag class="attribute">language</tag> attribute. The <parameter>highlight.default.language</parameter>
+parameter can be used to specify the language for programlistings without a <tag class="attribute">language</tag>
+attribute. Syntax highlighting also works for <tag>screen</tag> and <tag>synopsis</tag> elements.</para>
+
+<para>The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be
+downloaded separately (see below).</para>
+
+<itemizedlist>
+<para>In order to use this extension, you must</para>
+
+<listitem><para>add <filename>xslthl-2.x.x.jar</filename> to your Java classpath. The latest version is available
+from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceforge.net/projects/xslthl">the XSLT syntax highlighting project</link>
+at SourceForge.</para>
+</listitem>
+<listitem>
+<para>use a customization layer in which you import one of the following stylesheet modules:
+<itemizedlist>
+ <listitem>
+ <para><filename>html/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml-1_1/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>fo/highlight.xsl</filename>
+ </para>
+</listitem>
+</itemizedlist>
+</para>
+</listitem>
+<listitem><para>let either the <literal>xslthl.config</literal> Java system property or the
+<parameter>highlight.xslthl.config</parameter> parameter point to the configuration file for syntax
+highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file,
+<filename>highlighting/xslthl-config.xml</filename>.</para>
+</listitem>
+</itemizedlist>
+
+<para>The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is
+an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.)</para>
+
+<para>The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows:</para>
+
+<informalexample>
+<para><command>java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar
+-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet
+-o test.html test.xml myhtml.xsl</command></para>
+</informalexample>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="highlight.xslthl.config">
+<refmeta>
+<refentrytitle>highlight.xslthl.config</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.xslthl.config</refname>
+<refpurpose>Location of XSLTHL configuration file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="highlight.xslthl.config.frag">
+&lt;xsl:param name="highlight.xslthl.config"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This location has precedence over the corresponding Java property.</para>
+
+<para>Please note that usually you have to specify location as URL not
+just as a simple path on the local
+filesystem. E.g. <filename>file:///home/user/xslthl/my-xslthl-config.xml</filename>.</para>
+
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="highlight.default.language">
+<refmeta>
+<refentrytitle>highlight.default.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.default.language</refname>
+<refpurpose>Default language of programlisting</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="highlight.default.language.frag">
+&lt;xsl:param name="highlight.default.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This language is used when there is no language attribute on programlisting.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="email.delimiters.enabled">
+<refmeta>
+<refentrytitle>email.delimiters.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.delimiters.enabled</refname>
+<refpurpose>Generate delimiters around email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="email.delimiters.enabled.frag">
+&lt;xsl:param name="email.delimiters.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, delimiters
+
+<footnote><para>For delimiters, the
+stylesheets are currently hard-coded to output angle
+brackets.</para></footnote>
+
+are generated around e-mail addresses
+(the output of the <tag>email</tag> element).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="exsl.node.set.available">
+<refmeta>
+<refentrytitle>exsl.node.set.available</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>exsl.node.set.available</refname>
+<refpurpose>Is the test function-available('exsl:node-set') true?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="exsl.node.set.available.frag">&lt;xsl:param name="exsl.node.set.available"&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')"&gt;1&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;0&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+then the exsl:node-set() function is available to be used in
+the stylesheet.
+If zero, then the function is not available.
+This param automatically detects the presence of
+the function and does not normally need to be set manually.</para>
+
+<para>This param was created to handle a long-standing
+bug in the Xalan processor that fails to detect the
+function even though it is available.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="annos"><title>Annotations</title>
+<refentry version="5.0" xml:id="annotation.support">
+<refmeta>
+<refentrytitle>annotation.support</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.support</refname>
+<refpurpose>Enable annotations?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="annotation.support.frag">
+&lt;xsl:param name="annotation.support" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the stylesheets will attempt to support annotation
+elements in HTML by including some JavaScript (see
+<parameter>annotation.js</parameter>).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="annotation.js">
+<refmeta>
+<refentrytitle>annotation.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.js</refname>
+<refpurpose>URIs identifying JavaScript files with support for annotation popups</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="annotation.js.frag">
+
+&lt;xsl:param name="annotation.js"&gt;
+&lt;xsl:text&gt;http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js&lt;/xsl:text&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <property>annotation.support</property> is enabled and the
+document contains <tag>annotation</tag>s, then the URIs listed
+in this parameter will be included. These JavaScript files are required
+for popup annotation support.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="annotation.css">
+<refmeta>
+<refentrytitle>annotation.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.css</refname>
+<refpurpose>CSS rules for annotations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="annotation.css.frag">
+&lt;xsl:param name="annotation.css"&gt;
+/* ======================================================================
+ Annotations
+*/
+
+div.annotation-list { visibility: hidden;
+ }
+
+div.annotation-nocss { position: absolute;
+ visibility: hidden;
+ }
+
+div.annotation-popup { position: absolute;
+ z-index: 4;
+ visibility: hidden;
+ padding: 0px;
+ margin: 2px;
+ border-style: solid;
+ border-width: 1px;
+ width: 200px;
+ background-color: white;
+ }
+
+div.annotation-title { padding: 1px;
+ font-weight: bold;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ color: white;
+ background-color: black;
+ }
+
+div.annotation-body { padding: 2px;
+ }
+
+div.annotation-body p { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+div.annotation-close { position: absolute;
+ top: 2px;
+ right: 2px;
+ }
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>annotation.support</parameter> is enabled and the
+document contains <tag>annotation</tag>s, then the CSS in this
+parameter will be included in the document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="annotation.graphic.open">
+<refmeta>
+<refentrytitle>annotation.graphic.open</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.graphic.open</refname>
+<refpurpose>Image for identifying a link that opens an annotation popup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="annotation.graphic.open.frag">
+&lt;xsl:param name="annotation.graphic.open"&gt;http://docbook.sourceforge.net/release/images/annot-open.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This image is used inline to identify the location of
+annotations. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="annotation.graphic.close">
+<refmeta>
+<refentrytitle>annotation.graphic.close</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.graphic.close</refname>
+<refpurpose>Image for identifying a link that closes an annotation popup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="annotation.graphic.close.frag">
+&lt;xsl:param name="annotation.graphic.close"&gt;
+http://docbook.sourceforge.net/release/images/annot-close.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This image is used on popup annotations as the &#8220;x&#8221; that the
+user can click to dismiss the popup.</para>
+<para>This image is used on popup annotations as the &#8220;x&#8221; that the user can
+click to dismiss the popup. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="graphics"><title>Graphics</title>
+<refentry version="5.0" xml:id="img.src.path">
+<refmeta>
+<refentrytitle>img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>img.src.path</refname>
+<refpurpose>Path to HTML/FO image files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="img.src.path.frag">&lt;xsl:param name="img.src.path"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Add a path prefix to the value of the <tag class="attribute">fileref</tag>
+attribute of <tag>graphic</tag>, <tag>inlinegraphic</tag>, and <tag>imagedata</tag> elements. The resulting
+compound path is used in the output as the value of the <tag class="attribute">src</tag>
+attribute of <tag class="element">img</tag> (HTML) or <tag class="element">external-graphic</tag> (FO).
+</para>
+
+<para>
+The path given by <literal>img.src.path</literal> could be relative to the directory where the HTML/FO
+files are created, or it could be an absolute URI.
+The default value is empty.
+Be sure to include a trailing slash if needed.
+</para>
+
+<para>This prefix is not applied to any filerefs that start
+with "/" or contain "//:".
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="keep.relative.image.uris">
+<refmeta>
+<refentrytitle>keep.relative.image.uris</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keep.relative.image.uris</refname>
+<refpurpose>Should image URIs be resolved against xml:base?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="keep.relative.image.uris.frag">
+&lt;xsl:param name="keep.relative.image.uris" select="1"&gt;&lt;/xsl:param&gt;
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, relative URIs (in, for example
+<literal>fileref</literal> attributes) will be used in the generated
+output. Otherwise, the URIs will be made absolute with respect to the
+base URI.</para>
+
+<para>Note that the stylesheets calculate (and use) the absolute form
+for some purposes, this only applies to the resulting output.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="graphic.default.extension">
+<refmeta>
+<refentrytitle>graphic.default.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphic.default.extension</refname>
+<refpurpose>Default extension for graphic filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="graphic.default.extension.frag">&lt;xsl:param name="graphic.default.extension"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a <tag>graphic</tag> or <tag>mediaobject</tag>
+includes a reference to a filename that does not include an extension,
+and the <tag class="attribute">format</tag> attribute is
+<emphasis>unspecified</emphasis>, the default extension will be used.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="default.image.width">
+<refmeta>
+<refentrytitle>default.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.image.width</refname>
+<refpurpose>The default width of images</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="default.image.width.frag">
+&lt;xsl:param name="default.image.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, this value will be used for the
+<tag class="attribute">width</tag> attribute on images that do not specify any
+<emphasis xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title="DocBook 5: The Definitive Guide" xlink:href="http://docbook.org/tdg5/en/html/imagedata.html#viewport.area">viewport dimensions</emphasis>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="nominal.image.width">
+<refmeta>
+<refentrytitle>nominal.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.image.width</refname>
+<refpurpose>The nominal image width</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="nominal.image.width.frag">
+&lt;xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Graphic widths expressed as a percentage are problematic. In the
+following discussion, we speak of width and contentwidth, but
+the same issues apply to depth and contentdepth.</para>
+
+<para>A width of 50% means "half of the available space for the image."
+That's fine. But note that in HTML, this is a dynamic property and
+the image size will vary if the browser window is resized.</para>
+
+<para>A contentwidth of 50% means "half of the actual image width".
+But what does that mean if the stylesheets cannot assess the image's
+actual size? Treating this as a width of 50% is one possibility, but
+it produces behavior (dynamic scaling) that seems entirely out of
+character with the meaning.</para>
+
+<para>Instead, the stylesheets define a
+<parameter>nominal.image.width</parameter> and convert percentages to
+actual values based on that nominal size.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="nominal.image.depth">
+<refmeta>
+<refentrytitle>nominal.image.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.image.depth</refname>
+<refpurpose>Nominal image depth</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="nominal.image.depth.frag">
+&lt;xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>See <parameter>nominal.image.width</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.embed.for.svg">
+<refmeta>
+<refentrytitle>use.embed.for.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.embed.for.svg</refname>
+<refpurpose>Use HTML <tag>embed</tag> for SVG?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.embed.for.svg.frag">
+&lt;xsl:param name="use.embed.for.svg" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, an <tag>embed</tag> element will be created for
+SVG figures. An <tag>object</tag> is <emphasis>always</emphasis> created,
+this parameter merely controls whether or not an additional <tag>embed</tag>
+is generated inside the <tag>object</tag>.</para>
+
+<para>On the plus side, this may be more portable among browsers and plug-ins.
+On the minus side, it isn't valid HTML.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="make.graphic.viewport">
+<refmeta>
+<refentrytitle>make.graphic.viewport</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.graphic.viewport</refname>
+<refpurpose>Use tables in HTML to make viewports for graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="make.graphic.viewport.frag">
+&lt;xsl:param name="make.graphic.viewport" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The HTML <tag>img</tag> element only supports the notion
+of content-area scaling; it doesn't support the distinction between a
+content-area and a viewport-area, so we have to make some compromises.</para>
+
+<para>If <parameter>make.graphic.viewport</parameter> is non-zero, a table
+will be used to frame the image. This creates an effective viewport-area.
+</para>
+
+<para>Tables and alignment don't work together, so this parameter is ignored
+if alignment is specified on an image.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="preferred.mediaobject.role">
+<refmeta>
+<refentrytitle>preferred.mediaobject.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preferred.mediaobject.role</refname>
+<refpurpose>Select which mediaobject to use based on
+this value of an object's <tag class="attribute">role</tag> attribute.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="preferred.mediaobject.role.frag">
+&lt;xsl:param name="preferred.mediaobject.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A mediaobject may contain several objects such as imageobjects.
+If the parameter <parameter>use.role.for.mediaobject</parameter> is
+non-zero, then the <literal>role</literal> attribute on
+<tag>imageobject</tag>s and other objects within a
+<tag>mediaobject</tag> container will be used to select which object
+will be used. If one of the objects has a role value that matches the
+<parameter>preferred.mediaobject.role</parameter> parameter, then it
+has first priority for selection. If more than one has such a role
+value, the first one is used.
+</para>
+<para>
+See the <parameter>use.role.for.mediaobject</parameter> parameter
+for the sequence of selection.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.role.for.mediaobject">
+<refmeta>
+<refentrytitle>use.role.for.mediaobject</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.for.mediaobject</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute
+value for selecting which of several objects within a mediaobject to use.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.role.for.mediaobject.frag">
+&lt;xsl:param name="use.role.for.mediaobject" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>imageobject</tag>s or other objects within a <tag>mediaobject</tag> container will be used to select which object will be
+used.
+</para>
+<para>
+The order of selection when then parameter is non-zero is:
+</para>
+<orderedlist>
+<listitem>
+ <para>If the stylesheet parameter <parameter>preferred.mediaobject.role</parameter> has a value, then the object whose role equals that value is selected.</para>
+</listitem>
+<listitem>
+<para>Else if an object's role attribute has a value of
+<literal>html</literal> for HTML processing or
+<literal>fo</literal> for FO output, then the first
+of such objects is selected.
+</para>
+</listitem>
+<listitem>
+<para>Else the first suitable object is selected.</para>
+</listitem>
+</orderedlist>
+<para>
+If the value of
+<parameter>use.role.for.mediaobject</parameter>
+is zero, then role attributes are not considered
+and the first suitable object
+with or without a role value is used.
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ignore.image.scaling">
+<refmeta>
+<refentrytitle>ignore.image.scaling</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ignore.image.scaling</refname>
+<refpurpose>Tell the stylesheets to ignore the author's image scaling attributes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ignore.image.scaling.frag">
+&lt;xsl:param name="ignore.image.scaling" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the scaling attributes on graphics and media objects are
+ignored.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="chunking"><title>Chunking</title>
+<refentry version="5.0" xml:id="chunker.output.cdata-section-elements">
+<refmeta>
+<refentrytitle>chunker.output.cdata-section-elements</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.cdata-section-elements</refname>
+<refpurpose>List of elements to escape with CDATA sections</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.cdata-section-elements.frag">
+&lt;xsl:param name="chunker.output.cdata-section-elements"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the list of elements that should be escaped
+as CDATA sections by the chunking stylesheet. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.doctype-public">
+<refmeta>
+<refentrytitle>chunker.output.doctype-public</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.doctype-public</refname>
+<refpurpose>Public identifer to use in the document type of generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.doctype-public.frag">
+&lt;xsl:param name="chunker.output.doctype-public"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the public identifier that should be used by
+the chunking stylesheet in the document type declaration of chunked pages.
+Not all processors support specification of
+this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.doctype-system">
+<refmeta>
+<refentrytitle>chunker.output.doctype-system</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.doctype-system</refname>
+<refpurpose>System identifier to use for the document type in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.doctype-system.frag">
+&lt;xsl:param name="chunker.output.doctype-system"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the system identifier that should be used by
+the chunking stylesheet in the document type declaration of chunked pages.
+Not all processors support specification of
+this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.encoding">
+<refmeta>
+<refentrytitle>chunker.output.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.encoding</refname>
+<refpurpose>Encoding used in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.encoding.frag">
+&lt;xsl:param name="chunker.output.encoding"&gt;ISO-8859-1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the encoding to be used in files
+generated by the chunking stylesheet. Not all processors support
+specification of this parameter.
+</para>
+<para>This parameter used to be named <literal>default.encoding</literal>.</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.indent">
+<refmeta>
+<refentrytitle>chunker.output.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.indent</refname>
+<refpurpose>Specification of indentation on generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.indent.frag">
+&lt;xsl:param name="chunker.output.indent"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the indent
+specification for generated pages. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.media-type">
+<refmeta>
+<refentrytitle>chunker.output.media-type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.media-type</refname>
+<refpurpose>Media type to use in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.media-type.frag">
+&lt;xsl:param name="chunker.output.media-type"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the media type that should be used by
+the chunking stylesheet. Not all processors support specification of
+this parameter.
+</para>
+<para>This parameter specifies the media type that should be used by the
+chunking stylesheet. This should be one from those defined in
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ietf.org/rfc/rfc2045.txt">[RFC2045]</link> and
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ietf.org/rfc/rfc2046.txt">[RFC2046]</link> </para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+<para>It must be one from html, xml or text</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.method">
+<refmeta>
+<refentrytitle>chunker.output.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">html</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">xml</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.method</refname>
+<refpurpose>Method used in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.method.frag">
+&lt;xsl:param name="chunker.output.method"&gt;html&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the output method to be used in files
+generated by the chunking stylesheet.
+</para>
+<para>This parameter used to be named <literal>output.method</literal>.</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.omit-xml-declaration">
+<refmeta>
+<refentrytitle>chunker.output.omit-xml-declaration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.omit-xml-declaration</refname>
+<refpurpose>Omit-xml-declaration for generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.omit-xml-declaration.frag">
+&lt;xsl:param name="chunker.output.omit-xml-declaration"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the omit-xml-declaration
+specification for generated pages. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunker.output.standalone">
+<refmeta>
+<refentrytitle>chunker.output.standalone</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.standalone</refname>
+<refpurpose>Standalone declaration for generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="chunker.output.standalone.frag">
+&lt;xsl:param name="chunker.output.standalone"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the standalone
+ specification for generated pages. It must be either
+ <literal>yes</literal> or <literal>no</literal>. Not all
+ processors support specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="saxon.character.representation">
+<refmeta>
+<refentrytitle>saxon.character.representation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>saxon.character.representation</refname>
+<refpurpose>Saxon character representation used in generated HTML pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="saxon.character.representation.frag">&lt;xsl:param name="saxon.character.representation" select="'entity;decimal'"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has effect only when Saxon 6 is used (version 6.4.2 or later).
+It sets the character representation in files generated by the chunking stylesheets.
+If you want to suppress entity references for characters with direct representations in
+<parameter>chunker.output.encoding</parameter>, set the parameter value to <literal>native</literal>.
+</para>
+
+<para> For more information, see <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="OutputEncoding.html#SaxonCharacter">Saxon output character representation</link>.</para>
+
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="html.ext">
+<refmeta>
+<refentrytitle>html.ext</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.ext</refname>
+<refpurpose>Identifies the extension of generated HTML files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.ext.frag">
+&lt;xsl:param name="html.ext"&gt;.html&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The extension identified by <parameter>html.ext</parameter> will
+be used as the filename extension for chunks created by this
+stylesheet. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="use.id.as.filename">
+<refmeta>
+<refentrytitle>use.id.as.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.id.as.filename</refname>
+<refpurpose>Use ID value of chunk elements as the filename?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="use.id.as.filename.frag">
+&lt;xsl:param name="use.id.as.filename" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>use.id.as.filename</parameter>
+is non-zero, the filename of chunk elements that have IDs will be
+derived from the ID value.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="html.extra.head.links">
+<refmeta>
+<refentrytitle>html.extra.head.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.extra.head.links</refname>
+<refpurpose>Toggle extra HTML head link information</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="html.extra.head.links.frag">
+&lt;xsl:param name="html.extra.head.links" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extra <tag>link</tag> elements will be
+generated in the <tag>head</tag> of chunked HTML files. These
+extra links point to chapters, appendixes, sections, etc. as supported
+by the <quote>Site Navigation Bar</quote> in Mozilla 1.0 (as of CR1, at least).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="root.filename">
+<refmeta>
+<refentrytitle>root.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root.filename</refname>
+<refpurpose>Identifies the name of the root HTML file when chunking</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="root.filename.frag">
+&lt;xsl:param name="root.filename"&gt;index&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>root.filename</parameter> is the base filename for
+the chunk created for the root of each document processed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="base.dir">
+<refmeta>
+<refentrytitle>base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>base.dir</refname>
+<refpurpose>The base directory of chunks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="base.dir.frag">
+&lt;xsl:param name="base.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, the <parameter>base.dir</parameter> identifies
+the output directory for chunks. (If not specified, the output directory
+is system dependent.)</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.manifest">
+ <refmeta>
+ <refentrytitle>generate.manifest</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>generate.manifest</refname>
+ <refpurpose>Generate a manifest file?</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting xml:id="generate.manifest.frag">&lt;xsl:param name="generate.manifest" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>If non-zero, a list of HTML files generated by the
+ stylesheet transformation is written to the file named by
+ the <parameter>manifest</parameter> parameter.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="manifest">
+ <refmeta>
+ <refentrytitle>manifest</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>manifest</refname>
+ <refpurpose>Name of manifest file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting xml:id="manifest.frag">
+ &lt;xsl:param name="manifest"&gt;HTML.manifest&lt;/xsl:param&gt;
+ </programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>The name of the file to which a manifest is written (if the
+ value of the <parameter>generate.manifest</parameter> parameter
+ is non-zero).</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="manifest.in.base.dir">
+<refmeta>
+<refentrytitle>manifest.in.base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>manifest.in.base.dir</refname>
+<refpurpose>Should the manifest file be written into <parameter>base.dir</parameter>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="manifest.in.base.dir.frag">
+&lt;xsl:param name="manifest.in.base.dir" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the manifest file as well as project files for HTML Help and
+Eclipse Help are written into <parameter>base.dir</parameter> instead
+of the current directory.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.toc">
+<refmeta>
+<refentrytitle>chunk.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.toc</refname>
+<refpurpose>An explicit TOC to be used for chunking</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.toc.frag">
+&lt;xsl:param name="chunk.toc"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>chunk.toc</parameter> identifies an explicit TOC that
+will be used for chunking. This parameter is only used by the
+<filename>chunktoc.xsl</filename> stylesheet (and customization layers built
+from it).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.tocs.and.lots">
+<refmeta>
+<refentrytitle>chunk.tocs.and.lots</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.tocs.and.lots</refname>
+<refpurpose>Should ToC and LoTs be in separate chunks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.tocs.and.lots.frag">
+&lt;xsl:param name="chunk.tocs.and.lots" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ToC and LoT (List of Examples, List of Figures, etc.)
+will be put in a separate chunk. At the moment, this chunk is not in the
+normal forward/backward navigation list. Instead, a new link is added to the
+navigation footer.</para>
+
+<para>This feature is still somewhat experimental. Feedback welcome.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.separate.lots">
+<refmeta>
+<refentrytitle>chunk.separate.lots</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.separate.lots</refname>
+<refpurpose>Should each LoT be in its own separate chunk?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.separate.lots.frag">
+&lt;xsl:param name="chunk.separate.lots" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, each of the ToC and LoTs
+(List of Examples, List of Figures, etc.)
+will be put in its own separate chunk.
+The title page includes generated links to each of the separate files.
+</para>
+<para>
+This feature depends on the
+<parameter>chunk.tocs.and.lots</parameter>
+parameter also being non-zero.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.tocs.and.lots.has.title">
+<refmeta>
+<refentrytitle>chunk.tocs.and.lots.has.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.tocs.and.lots.has.title</refname>
+<refpurpose>Should ToC and LoTs in a separate chunks have title?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.tocs.and.lots.has.title.frag">
+&lt;xsl:param name="chunk.tocs.and.lots.has.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero title of document is shown before ToC/LoT in
+separate chunk.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.section.depth">
+<refmeta>
+<refentrytitle>chunk.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.section.depth</refname>
+<refpurpose>Depth to which sections should be chunked</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.section.depth.frag">
+&lt;xsl:param name="chunk.section.depth" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter sets the depth of section chunking.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.first.sections">
+<refmeta>
+<refentrytitle>chunk.first.sections</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.first.sections</refname>
+<refpurpose>Chunk the first top-level section?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.first.sections.frag">
+&lt;xsl:param name="chunk.first.sections" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a chunk will be created for the first top-level
+<tag>sect1</tag> or <tag>section</tag> elements in
+each component. Otherwise, that section will be part of the chunk for
+its parent.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.quietly">
+<refmeta>
+<refentrytitle>chunk.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.quietly</refname>
+<refpurpose>Omit the chunked filename messages.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.quietly.frag">
+&lt;xsl:param name="chunk.quietly" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), the XSL processor emits a message naming
+each separate chunk filename as it is being output.
+If nonzero, then the messages are suppressed.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="chunk.append">
+<refmeta>
+<refentrytitle>chunk.append</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.append</refname>
+<refpurpose>Specifies content to append to chunked HTML output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="chunk.append.frag">&lt;xsl:param name="chunk.append"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies content to append to the end of HTML files output by
+the <filename>html/chunk.xsl</filename> stylesheet, after the closing
+<code>&lt;html&gt;</code> tag. You probably don&#8217;t want to set any value
+for this parameter; but if you do, the only value it should ever be
+set to is a newline character: <code>&amp;#x0a;</code> or
+<code>&amp;#10;</code></para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="navig.graphics">
+<refmeta>
+<refentrytitle>navig.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics</refname>
+<refpurpose>Use graphics in navigational headers and footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="navig.graphics.frag">
+&lt;xsl:param name="navig.graphics" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the navigational headers and footers in chunked
+HTML are presented in an alternate style that uses graphical icons for
+Next, Previous, Up, and Home. Default graphics are provided in the
+distribution. If zero, text is used instead of graphics.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="navig.graphics.extension">
+<refmeta>
+<refentrytitle>navig.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics.extension</refname>
+<refpurpose>Extension for navigational graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="navig.graphics.extension.frag">
+&lt;xsl:param name="navig.graphics.extension"&gt;.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on navigational graphics used
+in the headers and footers of chunked HTML.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="navig.graphics.path">
+<refmeta>
+<refentrytitle>navig.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics.path</refname>
+<refpurpose>Path to navigational graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="navig.graphics.path.frag">
+&lt;xsl:param name="navig.graphics.path"&gt;images/&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path, probably relative to the directory where the HTML
+files are created, to the navigational graphics used in the
+headers and footers of chunked HTML.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="navig.showtitles">
+<refmeta>
+<refentrytitle>navig.showtitles</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.showtitles</refname>
+<refpurpose>Display titles in HTML headers and footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="navig.showtitles.frag">&lt;xsl:param name="navig.showtitles"&gt;1&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+the headers and footers of chunked HTML
+display the titles of the next and previous chunks,
+along with the words 'Next' and 'Previous' (or the
+equivalent graphical icons if navig.graphics is true).
+If false (zero), then only the words 'Next' and 'Previous'
+(or the icons) are displayed.
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="profiling"><title>Profiling</title>
+<partintro xml:id="partintro">
+<para>The following parameters can be used for attribute-based
+profiling of your document. For more information about profiling, see
+<link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="Profiling.html">Profiling (conditional text)</link>.</para>
+</partintro>
+<refentry version="5.0" xml:id="profile.arch">
+<refmeta>
+<refentrytitle>profile.arch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.arch</refname>
+<refpurpose>Target profile for <tag class="attribute">arch</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.arch.frag">
+&lt;xsl:param name="profile.arch"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.audience">
+<refmeta>
+<refentrytitle>profile.audience</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.audience</refname>
+<refpurpose>Target profile for <tag class="attribute">audience</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.audience.frag">
+&lt;xsl:param name="profile.audience"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.condition">
+<refmeta>
+<refentrytitle>profile.condition</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.condition</refname>
+<refpurpose>Target profile for <tag class="attribute">condition</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.condition.frag">
+&lt;xsl:param name="profile.condition"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.conformance">
+<refmeta>
+<refentrytitle>profile.conformance</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.conformance</refname>
+<refpurpose>Target profile for <tag class="attribute">conformance</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.conformance.frag">
+&lt;xsl:param name="profile.conformance"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.lang">
+<refmeta>
+<refentrytitle>profile.lang</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.lang</refname>
+<refpurpose>Target profile for <tag class="attribute">lang</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.lang.frag">
+&lt;xsl:param name="profile.lang"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.os">
+<refmeta>
+<refentrytitle>profile.os</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.os</refname>
+<refpurpose>Target profile for <tag class="attribute">os</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.os.frag">
+&lt;xsl:param name="profile.os"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.revision">
+<refmeta>
+<refentrytitle>profile.revision</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revision</refname>
+<refpurpose>Target profile for <tag class="attribute">revision</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.revision.frag">
+&lt;xsl:param name="profile.revision"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.revisionflag">
+<refmeta>
+<refentrytitle>profile.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revisionflag</refname>
+<refpurpose>Target profile for <tag class="attribute">revisionflag</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.revisionflag.frag">
+&lt;xsl:param name="profile.revisionflag"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.role">
+<refmeta>
+<refentrytitle>profile.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.role</refname>
+<refpurpose>Target profile for <tag class="attribute">role</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.role.frag">
+&lt;xsl:param name="profile.role"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+<warning>
+<para>Note that <tag class="attribute">role</tag> is often
+used for other purposes than profiling. For example it is commonly
+used to get emphasize in bold font:</para>
+
+<programlisting>&lt;emphasis role="bold"&gt;very important&lt;/emphasis&gt;</programlisting>
+
+<para>If you are using <tag class="attribute">role</tag> for
+these purposes do not forget to add values like <literal>bold</literal> to
+value of this parameter. If you forgot you will get document with
+small pieces missing which are very hard to track.</para>
+
+<para>For this reason it is not recommended to use <tag class="attribute">role</tag> attribute for profiling. You should
+rather use profiling specific attributes like <tag class="attribute">userlevel</tag>, <tag class="attribute">os</tag>, <tag class="attribute">arch</tag>, <tag class="attribute">condition</tag>, etc.</para>
+</warning>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.security">
+<refmeta>
+<refentrytitle>profile.security</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.security</refname>
+<refpurpose>Target profile for <tag class="attribute">security</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.security.frag">
+&lt;xsl:param name="profile.security"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.status">
+<refmeta>
+<refentrytitle>profile.status</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.status</refname>
+<refpurpose>Target profile for <tag class="attribute">status</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.status.frag">
+&lt;xsl:param name="profile.status"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.userlevel">
+<refmeta>
+<refentrytitle>profile.userlevel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.userlevel</refname>
+<refpurpose>Target profile for <tag class="attribute">userlevel</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.userlevel.frag">
+&lt;xsl:param name="profile.userlevel"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.vendor">
+<refmeta>
+<refentrytitle>profile.vendor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.vendor</refname>
+<refpurpose>Target profile for <tag class="attribute">vendor</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.vendor.frag">
+&lt;xsl:param name="profile.vendor"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.wordsize">
+<refmeta>
+<refentrytitle>profile.wordsize</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.wordsize</refname>
+<refpurpose>Target profile for <tag class="attribute">wordsize</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.wordsize.frag">
+&lt;xsl:param name="profile.wordsize"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.attribute">
+<refmeta>
+<refentrytitle>profile.attribute</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.attribute</refname>
+<refpurpose>Name of user-specified profiling attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.attribute.frag">
+&lt;xsl:param name="profile.attribute"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter is used in conjuction with
+<parameter>profile.value</parameter>.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.value">
+<refmeta>
+<refentrytitle>profile.value</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.value</refname>
+<refpurpose>Target profile for user-specified attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.value.frag">
+&lt;xsl:param name="profile.value"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When you are using this parameter you must also specify name of
+profiling attribute with parameter
+<parameter>profile.attribute</parameter>.</para>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, &#8230;) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, &#8230;).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="profile.separator">
+<refmeta>
+<refentrytitle>profile.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.separator</refname>
+<refpurpose>Separator character for compound profile values</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="profile.separator.frag">
+&lt;xsl:param name="profile.separator"&gt;;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator character used for compound profile values. See <parameter>profile.arch</parameter></para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="htmlhelp"><title>HTML Help</title>
+<refentry version="5.0" xml:id="htmlhelp.encoding">
+<refmeta>
+<refentrytitle>htmlhelp.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.encoding</refname>
+<refpurpose>Character encoding to use in files for HTML Help compiler.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.encoding.frag">
+&lt;xsl:param name="htmlhelp.encoding"&gt;iso-8859-1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>HTML Help Compiler is not UTF-8 aware, so you should always use an
+appropriate single-byte encoding here. Use one from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets">iana</link>, the registered charset values.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.autolabel">
+<refmeta>
+<refentrytitle>htmlhelp.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.autolabel</refname>
+<refpurpose>Should tree-like ToC use autonumbering feature?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.autolabel.frag">
+&lt;xsl:param name="htmlhelp.autolabel" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set this to non-zero to include chapter and section numbers into ToC
+in the left panel.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.chm">
+<refmeta>
+<refentrytitle>htmlhelp.chm</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.chm</refname>
+<refpurpose>Filename of output HTML Help file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.chm.frag">
+&lt;xsl:param name="htmlhelp.chm"&gt;htmlhelp.chm&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the name of resulting CHM file</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.default.topic">
+<refmeta>
+<refentrytitle>htmlhelp.default.topic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.default.topic</refname>
+<refpurpose>Name of file with default topic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.default.topic.frag">
+&lt;xsl:param name="htmlhelp.default.topic"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Normally first chunk of document is displayed when you open HTML
+Help file. If you want to display another topic, simply set its
+filename by this parameter.</para>
+
+<para>This is useful especially if you don't generate ToC in front of
+your document and you also hide root element in ToC. E.g.:</para>
+
+<programlisting>&lt;xsl:param name="generate.book.toc" select="0"/&gt;
+&lt;xsl:param name="htmlhelp.hhc.show.root" select="0"/&gt;
+&lt;xsl:param name="htmlhelp.default.topic"&gt;pr01.html&lt;/xsl:param&gt;
+</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.display.progress">
+<refmeta>
+<refentrytitle>htmlhelp.display.progress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.display.progress</refname>
+<refpurpose>Display compile progress?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.display.progress.frag">
+&lt;xsl:param name="htmlhelp.display.progress" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to to display compile progress
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhp">
+<refmeta>
+<refentrytitle>htmlhelp.hhp</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp</refname>
+<refpurpose>Filename of project file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhp.frag">
+&lt;xsl:param name="htmlhelp.hhp"&gt;htmlhelp.hhp&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Change this parameter if you want different name of project
+file than htmlhelp.hhp.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhc">
+<refmeta>
+<refentrytitle>htmlhelp.hhc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc</refname>
+<refpurpose>Filename of TOC file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhc.frag">
+&lt;xsl:param name="htmlhelp.hhc"&gt;toc.hhc&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the name of the TOC file. The default is <filename>toc.hhc</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhk">
+<refmeta>
+<refentrytitle>htmlhelp.hhk</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhk</refname>
+<refpurpose>Filename of index file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhk.frag">
+&lt;xsl:param name="htmlhelp.hhk"&gt;index.hhk&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>set the name of the index file. The default is <filename>index.hhk</filename>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhp.tail">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.tail</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.tail</refname>
+<refpurpose>Additional content for project file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhp.tail.frag">
+&lt;xsl:param name="htmlhelp.hhp.tail"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want to include some additional parameters into project file,
+store appropriate part of project file into this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhp.window">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.window</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.window</refname>
+<refpurpose>Name of default window.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhp.window.frag">
+&lt;xsl:param name="htmlhelp.hhp.window"&gt;Main&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Name of default window. If empty no [WINDOWS] section will be
+added to project file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhp.windows">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.windows</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.windows</refname>
+<refpurpose>Definition of additional windows</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhp.windows.frag">
+&lt;xsl:param name="htmlhelp.hhp.windows"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Content of this parameter is placed at the end of [WINDOWS]
+section of project file. You can use it for defining your own
+addtional windows.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.enhanced.decompilation">
+<refmeta>
+<refentrytitle>htmlhelp.enhanced.decompilation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.enhanced.decompilation</refname>
+<refpurpose>Allow enhanced decompilation of CHM?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.enhanced.decompilation.frag">
+&lt;xsl:param name="htmlhelp.enhanced.decompilation" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When non-zero this parameter enables enhanced decompilation of CHM.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.enumerate.images">
+<refmeta>
+<refentrytitle>htmlhelp.enumerate.images</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.enumerate.images</refname>
+<refpurpose>Should the paths to all used images be added to the project file?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.enumerate.images.frag">
+&lt;xsl:param name="htmlhelp.enumerate.images" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero if you insert images into your documents as
+external binary entities or if you are using absolute image paths.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.force.map.and.alias">
+<refmeta>
+<refentrytitle>htmlhelp.force.map.and.alias</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.force.map.and.alias</refname>
+<refpurpose>Should [MAP] and [ALIAS] sections be added to the project file unconditionally?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.force.map.and.alias.frag">
+&lt;xsl:param name="htmlhelp.force.map.and.alias" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+ <para>Set to non-zero if you have your own
+ <literal>alias.h</literal> and <literal>context.h</literal>
+ files and you want to include references to them in the project
+ file.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.map.file">
+<refmeta>
+<refentrytitle>htmlhelp.map.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.map.file</refname>
+<refpurpose>Filename of map file.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.map.file.frag">
+&lt;xsl:param name="htmlhelp.map.file"&gt;context.h&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Set the name of map file. The default is
+ <filename>context.h</filename>. (used for context-sensitive
+ help).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.alias.file">
+<refmeta>
+<refentrytitle>htmlhelp.alias.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.alias.file</refname>
+<refpurpose>Filename of alias file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.alias.file.frag">
+&lt;xsl:param name="htmlhelp.alias.file"&gt;alias.h&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the alias file (used for context-sensitive help).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhc.section.depth">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.section.depth</refname>
+<refpurpose>Depth of TOC for sections in a left pane.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhc.section.depth.frag">
+&lt;xsl:param name="htmlhelp.hhc.section.depth"&gt;5&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the section depth in the left pane of HTML Help viewer. </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhc.show.root">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.show.root</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.show.root</refname>
+<refpurpose>Should there be an entry for the root element in the ToC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhc.show.root.frag">
+&lt;xsl:param name="htmlhelp.hhc.show.root" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If set to zero, there will be no entry for the root element in the
+ToC. This is useful when you want to provide the user with an expanded
+ToC as a default.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhc.folders.instead.books">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.folders.instead.books</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.folders.instead.books</refname>
+<refpurpose>Use folder icons in ToC (instead of book icons)?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhc.folders.instead.books.frag">
+&lt;xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero for folder-like icons or zero for book-like icons in the ToC.
+If you want to use folder-like icons, you must switch off the binary ToC using
+<parameter>htmlhelp.hhc.binary</parameter>.
+
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhc.binary">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.binary</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.binary</refname>
+<refpurpose>Generate binary ToC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhc.binary.frag">
+&lt;xsl:param name="htmlhelp.hhc.binary" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to generate a binary TOC. You must create a binary TOC
+if you want to add Prev/Next buttons to toolbar (which is default
+behaviour). Files with binary TOC can't be merged.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.hhc.width">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.width</refname>
+<refpurpose>Width of navigation pane</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.hhc.width.frag">
+&lt;xsl:param name="htmlhelp.hhc.width"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the width of the navigation pane (containing TOC and
+other navigation tabs) in pixels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.title">
+<refmeta>
+<refentrytitle>htmlhelp.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.title</refname>
+<refpurpose>Title of HTML Help</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.title.frag">
+&lt;xsl:param name="htmlhelp.title"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Content of this parameter will be used as a title for generated
+HTML Help. If empty, title will be automatically taken from document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.show.menu">
+<refmeta>
+<refentrytitle>htmlhelp.show.menu</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.menu</refname>
+<refpurpose>Should the menu bar be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.show.menu.frag">
+&lt;xsl:param name="htmlhelp.show.menu" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to have an application menu bar in your HTML Help window.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.show.toolbar.text">
+<refmeta>
+<refentrytitle>htmlhelp.show.toolbar.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.toolbar.text</refname>
+<refpurpose>Show text under toolbar buttons?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.show.toolbar.text.frag">
+&lt;xsl:param name="htmlhelp.show.toolbar.text" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to display texts under toolbar buttons, zero to switch
+off displays.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.show.advanced.search">
+<refmeta>
+<refentrytitle>htmlhelp.show.advanced.search</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.advanced.search</refname>
+<refpurpose>Should advanced search features be available?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.show.advanced.search.frag">
+&lt;xsl:param name="htmlhelp.show.advanced.search" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want advanced search features in your help, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.show.favorities">
+<refmeta>
+<refentrytitle>htmlhelp.show.favorities</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.favorities</refname>
+<refpurpose>Should the Favorites tab be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.show.favorities.frag">
+&lt;xsl:param name="htmlhelp.show.favorities" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include a Favorites tab in the navigation pane
+of the help window.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.hideshow">
+<refmeta>
+<refentrytitle>htmlhelp.button.hideshow</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.hideshow</refname>
+<refpurpose>Should the Hide/Show button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.hideshow.frag">
+&lt;xsl:param name="htmlhelp.button.hideshow" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Hide/Show button shown on toolbar</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.back">
+<refmeta>
+<refentrytitle>htmlhelp.button.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.back</refname>
+<refpurpose>Should the Back button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.back.frag">
+&lt;xsl:param name="htmlhelp.button.back" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Hide/Show button shown on toolbar</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.forward">
+<refmeta>
+<refentrytitle>htmlhelp.button.forward</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.forward</refname>
+<refpurpose>Should the Forward button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.forward.frag">
+&lt;xsl:param name="htmlhelp.button.forward" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Forward button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.stop">
+<refmeta>
+<refentrytitle>htmlhelp.button.stop</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.stop</refname>
+<refpurpose>Should the Stop button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.stop.frag">
+&lt;xsl:param name="htmlhelp.button.stop" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Stop button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.refresh">
+<refmeta>
+<refentrytitle>htmlhelp.button.refresh</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.refresh</refname>
+<refpurpose>Should the Refresh button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.refresh.frag">
+&lt;xsl:param name="htmlhelp.button.refresh" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Stop button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.home">
+<refmeta>
+<refentrytitle>htmlhelp.button.home</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.home</refname>
+<refpurpose>Should the Home button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.home.frag">
+&lt;xsl:param name="htmlhelp.button.home" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Home button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.home.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.home.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.home.url</refname>
+<refpurpose>URL address of page accessible by Home button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.home.url.frag">
+&lt;xsl:param name="htmlhelp.button.home.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Home button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.options">
+<refmeta>
+<refentrytitle>htmlhelp.button.options</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.options</refname>
+<refpurpose>Should the Options button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.options.frag">
+&lt;xsl:param name="htmlhelp.button.options" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Options button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.print">
+<refmeta>
+<refentrytitle>htmlhelp.button.print</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.print</refname>
+<refpurpose>Should the Print button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.print.frag">
+&lt;xsl:param name="htmlhelp.button.print" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Print button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.locate">
+<refmeta>
+<refentrytitle>htmlhelp.button.locate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.locate</refname>
+<refpurpose>Should the Locate button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.locate.frag">
+&lt;xsl:param name="htmlhelp.button.locate" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Locate button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.jump1">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1</refname>
+<refpurpose>Should the Jump1 button be shown?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.jump1.frag">
+&lt;xsl:param name="htmlhelp.button.jump1" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+ <para>Set to non-zero to include the <literal>Jump1</literal> button on the toolbar.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.jump1.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1.url</refname>
+<refpurpose>URL address of page accessible by Jump1 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.jump1.url.frag">
+&lt;xsl:param name="htmlhelp.button.jump1.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Jump1 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.jump1.title">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1.title</refname>
+<refpurpose>Title of Jump1 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.jump1.title.frag">
+&lt;xsl:param name="htmlhelp.button.jump1.title"&gt;User1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Title of Jump1 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.jump2">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2</refname>
+<refpurpose>Should the Jump2 button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.jump2.frag">
+&lt;xsl:param name="htmlhelp.button.jump2" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Jump2 button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.jump2.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2.url</refname>
+<refpurpose>URL address of page accessible by Jump2 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.jump2.url.frag">
+&lt;xsl:param name="htmlhelp.button.jump2.url"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Jump2 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.jump2.title">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2.title</refname>
+<refpurpose>Title of Jump2 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.jump2.title.frag">
+&lt;xsl:param name="htmlhelp.button.jump2.title"&gt;User2&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Title of Jump2 button.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.next">
+<refmeta>
+<refentrytitle>htmlhelp.button.next</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.next</refname>
+<refpurpose>Should the Next button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.next.frag">
+&lt;xsl:param name="htmlhelp.button.next" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Next button on the toolbar.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.prev">
+<refmeta>
+<refentrytitle>htmlhelp.button.prev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.prev</refname>
+<refpurpose>Should the Prev button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.prev.frag">
+&lt;xsl:param name="htmlhelp.button.prev" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Prev button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.button.zoom">
+<refmeta>
+<refentrytitle>htmlhelp.button.zoom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.zoom</refname>
+<refpurpose>Should the Zoom button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.button.zoom.frag">
+&lt;xsl:param name="htmlhelp.button.zoom" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Zoom button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.remember.window.position">
+<refmeta>
+<refentrytitle>htmlhelp.remember.window.position</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.remember.window.position</refname>
+<refpurpose>Remember help window position?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.remember.window.position.frag">
+&lt;xsl:param name="htmlhelp.remember.window.position" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to remember help window position between starts.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.window.geometry">
+<refmeta>
+<refentrytitle>htmlhelp.window.geometry</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.window.geometry</refname>
+<refpurpose>Set initial geometry of help window</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.window.geometry.frag">
+&lt;xsl:param name="htmlhelp.window.geometry"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies initial position of help
+window. E.g.</para>
+
+<programlisting>&lt;xsl:param name="htmlhelp.window.geometry"&gt;[160,64,992,704]&lt;/xsl:param&gt;</programlisting>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.use.hhk">
+<refmeta>
+<refentrytitle>htmlhelp.use.hhk</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.use.hhk</refname>
+<refpurpose>Should the index be built using the HHK file?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.use.hhk.frag">
+&lt;xsl:param name="htmlhelp.use.hhk" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the index is created using the HHK file (instead of using <tag role="html">object</tag>
+elements in the HTML files). For more information, see <link xmlns:xlink="http://www.w3.org/1999/xlink" role="tcg" xlink:href="HtmlHelp.html#HHGenIndex">Generating an index</link>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="htmlhelp.only">
+<refmeta>
+<refentrytitle>htmlhelp.only</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.only</refname>
+<refpurpose>Should only project files be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="htmlhelp.only.frag">
+&lt;xsl:param name="htmlhelp.only" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+
+<para>Set to non-zero if you want to play with various HTML Help parameters
+and you don't need to regenerate all HTML files. This setting will not
+process whole document, only project files (hhp, hhc, hhk,...) will be
+generated.</para>
+
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="eclipse_help"><title>Eclipse Help Platform</title>
+<refentry version="5.0" xml:id="eclipse.autolabel">
+<refmeta>
+<refentrytitle>eclipse.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.autolabel</refname>
+<refpurpose>Should tree-like ToC use autonumbering feature?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="eclipse.autolabel.frag">
+&lt;xsl:param name="eclipse.autolabel" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want to include chapter and section numbers into ToC in
+the left panel, set this parameter to 1.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="eclipse.plugin.name">
+<refmeta>
+<refentrytitle>eclipse.plugin.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.name</refname>
+<refpurpose>Eclipse Help plugin name</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="eclipse.plugin.name.frag">
+&lt;xsl:param name="eclipse.plugin.name"&gt;DocBook Online Help Sample&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin name.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="eclipse.plugin.id">
+<refmeta>
+<refentrytitle>eclipse.plugin.id</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.id</refname>
+<refpurpose>Eclipse Help plugin id</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="eclipse.plugin.id.frag">
+&lt;xsl:param name="eclipse.plugin.id"&gt;com.example.help&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin id. You should change this id to something
+unique for each help.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="eclipse.plugin.provider">
+<refmeta>
+<refentrytitle>eclipse.plugin.provider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.provider</refname>
+<refpurpose>Eclipse Help plugin provider name</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="eclipse.plugin.provider.frag">
+&lt;xsl:param name="eclipse.plugin.provider"&gt;Example provider&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin provider name.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="javahelp"><title>JavaHelp</title>
+<refentry version="5.0" xml:id="javahelp.encoding">
+<refmeta>
+<refentrytitle>javahelp.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>javahelp.encoding</refname>
+<refpurpose>Character encoding to use in control files for JavaHelp.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="javahelp.encoding.frag">
+&lt;xsl:param name="javahelp.encoding"&gt;iso-8859-1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>JavaHelp crashes on some characters when written as character
+references. In that case you can use this parameter to select an appropriate encoding.</para>
+
+</refsection>
+</refentry>
+
+
+
+
+</reference>
+<reference xml:id="l10n"><title>Localization</title>
+<refentry version="5.0" xml:id="l10n.gentext.language">
+<refmeta>
+<refentrytitle>l10n.gentext.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.language</refname>
+<refpurpose>Sets the gentext language</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="l10n.gentext.language.frag">
+&lt;xsl:param name="l10n.gentext.language"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this parameter is set to any value other than the empty string, its
+value will be used as the value for the language when generating text. Setting
+<parameter>l10n.gentext.language</parameter> overrides any settings within the
+document being formatted.</para>
+
+<para>It's much more likely that you might want to set the
+<parameter>l10n.gentext.default.language</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="l10n.gentext.default.language">
+ <refmeta>
+ <refentrytitle>l10n.gentext.default.language</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>l10n.gentext.default.language</refname>
+ <refpurpose>Sets the default language for generated text</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<programlisting xml:id="l10n.gentext.default.language.frag">
+&lt;xsl:param name="l10n.gentext.default.language"&gt;en&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of the <parameter>l10n.gentext.default.language</parameter>
+parameter is used as the language for generated text if no setting is provided
+in the source document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="l10n.gentext.use.xref.language">
+<refmeta>
+<refentrytitle>l10n.gentext.use.xref.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.use.xref.language</refname>
+<refpurpose>Use the language of target when generating cross-reference text?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="l10n.gentext.use.xref.language.frag">
+&lt;xsl:param name="l10n.gentext.use.xref.language" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the language of the target will be used when
+generating cross reference text. Usually, the <quote>current</quote>
+language is used when generating text (that is, the language of the
+element that contains the cross-reference element). But setting this parameter
+allows the language of the element <emphasis>pointed to</emphasis> to control
+the generated text.</para>
+
+<para>Consider the following example:</para>
+
+<informalexample>
+<programlisting>&lt;para lang="en"&gt;See also &lt;xref linkend="chap3"/&gt;.&lt;/para&gt;
+</programlisting>
+</informalexample>
+
+<para>Suppose that Chapter 3 happens to be written in German.
+If <parameter>l10n.gentext.use.xref.language</parameter> is non-zero, the
+resulting text will be something like this:</para>
+
+<blockquote>
+<para>See also Kapital 3.</para>
+</blockquote>
+
+<para>Where the more traditional rendering would be:</para>
+
+<blockquote>
+<para>See also Chapter 3.</para>
+</blockquote>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="l10n.lang.value.rfc.compliant">
+<refmeta>
+<refentrytitle>l10n.lang.value.rfc.compliant</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.lang.value.rfc.compliant</refname>
+<refpurpose>Make value of lang attribute RFC compliant?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="l10n.lang.value.rfc.compliant.frag">
+&lt;xsl:param name="l10n.lang.value.rfc.compliant" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ensure that the values for all <tag class="attribute">lang</tag> attributes in HTML output are RFC
+compliant<footnote><para>Section 8.1.1, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.1.1">Language Codes</link>, in the HTML 4.0 Recommendation states that:
+
+<blockquote><para>[RFC1766] defines and explains the language codes
+that must be used in HTML documents.</para>
+<para>Briefly, language codes consist of a primary code and a possibly
+empty series of subcodes:
+
+<literallayout class="monospaced">language-code = primary-code ( "-" subcode )*</literallayout>
+</para>
+<para>And in RFC 1766, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ietf.org/rfc/rfc1766.txt">Tags for the Identification
+of Languages</link>, the EBNF for "language tag" is given as:
+
+<literallayout class="monospaced">Language-Tag = Primary-tag *( "-" Subtag )
+Primary-tag = 1*8ALPHA
+Subtag = 1*8ALPHA</literallayout>
+</para>
+</blockquote>
+</para></footnote>.
+
+by taking any underscore characters in any <tag class="attribute">lang</tag> values found in source documents, and
+replacing them with hyphen characters in output HTML files. For
+example, <literal>zh_CN</literal> in a source document becomes
+<literal>zh-CN</literal> in the HTML output form that source.
+
+<note>
+<para>This parameter does not cause any case change in <tag class="attribute">lang</tag> values, because RFC 1766
+explicitly states that all "language tags" (as it calls them) "are
+to be treated as case insensitive".</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="writing.mode">
+<refmeta>
+<refentrytitle>writing.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>writing.mode</refname>
+<refpurpose>Direction of text flow based on locale</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="writing.mode.frag">
+&lt;xsl:param name="writing.mode"&gt;
+ &lt;xsl:call-template name="gentext"&gt;
+ &lt;xsl:with-param name="key"&gt;writing-mode&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="lang"&gt;
+ &lt;xsl:call-template name="l10n.language"&gt;
+ &lt;xsl:with-param name="target" select="/*[1]"&gt;&lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets direction of text flow and text alignment based on locale.
+The value is normally taken from the gentext file for the
+lang attribute of the document's root element, using the
+key name 'writing-mode' to look it up in the gentext file.
+But the param can also be
+set on the command line to override that gentext value.
+</para>
+<para>Accepted values are:
+<variablelist>
+ <varlistentry>
+ <term>lr-tb</term>
+ <listitem>
+ <para>Left-to-right text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl-tb</term>
+ <listitem>
+ <para>Right-to-left text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb-rl</term>
+ <listitem>
+ <para>Top-to-bottom text flow in each vertical line, lines stack right to left.
+ Supported by only a few XSL-FO processors. Not supported in HTML output.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>lr</term>
+ <listitem>
+ <para>Shorthand for lr-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl</term>
+ <listitem>
+ <para>Shorthand for rl-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb</term>
+ <listitem>
+ <para>Shorthand for tb-rl.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<appendix xml:id="stylesheet"><title>The Stylesheet</title>
+
+<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
+around all these parameters.</para>
+
+<programlisting xml:id="top">
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 8552 2009-12-07 17:45:26Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="abstract.notitle.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.graphics.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.graphics.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.graphics.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="admon.textlabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="annotate.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="annotation.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="annotation.graphic.close.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="annotation.graphic.open.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="annotation.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="annotation.support.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="appendix.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="author.othername.in.middle.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="autotoc.label.in.hyperlink.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="autotoc.label.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="base.dir.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="biblioentry.item.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bibliography.collection.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bibliography.numbered.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bibliography.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="blurb.on.titlepage.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bridgehead.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.defaultcolumn.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.number.limit.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.graphics.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.list.table.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.unicode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.unicode.number.limit.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callout.unicode.start.character.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="callouts.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chapter.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.append.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.first.sections.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.quietly.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.section.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.separate.lots.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.tocs.and.lots.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="chunk.tocs.and.lots.has.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="citerefentry.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="collect.xref.targets.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="component.label.includes.part.label.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="contrib.inline.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="css.decoration.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="current.docid.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="custom.css.source.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.float.class.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.image.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.table.frame.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="default.table.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="docbook.css.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="docbook.css.source.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="draft.mode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="draft.watermark.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ebnf.assignment.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ebnf.statement.terminator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ebnf.table.bgcolor.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ebnf.table.border.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="eclipse.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="eclipse.plugin.id.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="eclipse.plugin.name.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="eclipse.plugin.provider.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="editedby.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="email.delimiters.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="emphasis.propagates.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="entry.propagates.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="exsl.node.set.available.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="firstterm.only.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footer.rule.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.number.format.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footnote.number.symbols.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="formal.procedures.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="formal.title.placement.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="funcsynopsis.decoration.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="funcsynopsis.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="function.parens.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.css.header.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.id.attributes.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.index.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.legalnotice.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.manifest.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.meta.abstract.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.revhistory.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.section.toc.level.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossary.collection.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossary.sort.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossentry.show.acronym.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="glossterm.auto.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="graphic.default.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="graphicsize.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="graphicsize.use.img.src.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="header.rule.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="highlight.default.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="highlight.source.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="highlight.xslthl.config.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.append.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.base.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.cellpadding.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.cellspacing.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.cleanup.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.ext.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.extra.head.links.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.head.legalnotice.link.multiple.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.head.legalnotice.link.types.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.longdesc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.longdesc.link.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.stylesheet.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="html.stylesheet.type.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.alias.file.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.back.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.forward.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.hideshow.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.home.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.home.url.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.jump1.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.jump1.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.jump1.url.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.jump2.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.jump2.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.jump2.url.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.locate.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.next.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.options.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.prev.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.print.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.refresh.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.stop.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.button.zoom.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.chm.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.default.topic.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.display.progress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.encoding.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.enhanced.decompilation.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.enumerate.images.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.force.map.and.alias.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhc.binary.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhc.folders.instead.books.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhc.section.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhc.show.root.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhc.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhk.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhp.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhp.tail.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhp.window.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.hhp.windows.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.map.file.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.only.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.remember.window.position.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.show.advanced.search.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.show.favorities.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.show.menu.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.show.toolbar.text.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.use.hhk.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="htmlhelp.window.geometry.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="id.warnings.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ignore.image.scaling.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="img.src.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.links.to.section.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.method.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.number.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.on.role.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.on.type.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.prefer.titleabbrev.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.range.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="index.term.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="inherit.keywords.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="insert.olink.page.number.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="insert.olink.pdf.frag.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="insert.xref.page.number.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="javahelp.encoding.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="keep.relative.image.uris.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.gentext.default.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.gentext.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.gentext.use.xref.language.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="l10n.lang.value.rfc.compliant.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="label.from.part.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.everyNth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="linenumbering.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="link.mailto.url.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.clean.html.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.graphic.viewport.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.single.year.ranges.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.valid.html.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="make.year.ranges.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="manifest.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="manifest.in.base.dir.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="manual.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="menuchoice.menu.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="menuchoice.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="navig.graphics.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="navig.graphics.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="navig.graphics.path.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="navig.showtitles.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="nominal.image.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="nominal.image.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="nominal.table.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.base.uri.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.debug.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.doctitle.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.fragid.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.lang.fallback.sequence.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.outline.ext.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.pubid.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.resolver.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="olink.sysid.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="othercredit.like.author.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="para.propagates.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="part.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="phrase.propagates.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="pixels.per.inch.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="points.per.em.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="preface.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="prefer.internal.olink.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="preferred.mediaobject.role.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="process.empty.source.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="process.source.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.arch.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.attribute.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.audience.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.condition.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.conformance.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.lang.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.os.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.revision.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.revisionflag.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.role.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.security.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.status.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.userlevel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.value.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.vendor.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="profile.wordsize.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="punct.honorific.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.defaultlabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.inherit.numeration.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qanda.nested.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="qandadiv.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refclass.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.generate.name.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.generate.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.xref.manvolnum.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="reference.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="root.filename.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="rootid.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="runinhead.default.title.end.punct.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="runinhead.title.end.punct.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.autolabel.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.autolabel.max.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="section.label.includes.component.label.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="segmentedlist.as.table.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="shade.verbatim.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="shade.verbatim.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="show.comments.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="show.revisionflag.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="simplesect.in.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="spacing.paras.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="suppress.footer.navigation.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="suppress.header.navigation.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="suppress.navigation.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.borders.with.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.cell.border.color.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.cell.border.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.cell.border.thickness.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.footnote.number.format.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.footnote.number.symbols.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.frame.border.color.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.frame.border.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.frame.border.thickness.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="tablecolumns.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="target.database.document.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="targets.filename.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="tex.math.delims.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="tex.math.file.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="tex.math.in.alt.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="textdata.default.encoding.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="textinsert.extension.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.list.type.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.max.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.section.depth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ulink.target.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.embed.for.svg.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.id.as.filename.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.local.olink.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.role.as.xrefstyle.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.role.for.mediaobject.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="use.svg.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.as.table.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.term.break.after.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="variablelist.term.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="writing.mode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.label-page.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.label-title.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.title-page.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xref.with.number.and.title.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;/xsl:stylesheet&gt;
+</programlisting>
+
+</appendix>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl
new file mode 100644
index 0000000..d5e6086
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 8552 2009-12-07 17:45:26Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="abstract.notitle.enabled" select="0"/>
+<xsl:param name="admon.graphics.extension">.png</xsl:param>
+<xsl:param name="admon.graphics" select="0"/>
+<xsl:param name="admon.graphics.path">images/</xsl:param>
+<xsl:param name="admon.style">
+ <xsl:value-of select="concat('margin-', $direction.align.start, ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"/>
+</xsl:param>
+<xsl:param name="admon.textlabel" select="1"/>
+<xsl:param name="annotate.toc" select="1"/>
+<xsl:param name="annotation.css">
+/* ======================================================================
+ Annotations
+*/
+
+div.annotation-list { visibility: hidden;
+ }
+
+div.annotation-nocss { position: absolute;
+ visibility: hidden;
+ }
+
+div.annotation-popup { position: absolute;
+ z-index: 4;
+ visibility: hidden;
+ padding: 0px;
+ margin: 2px;
+ border-style: solid;
+ border-width: 1px;
+ width: 200px;
+ background-color: white;
+ }
+
+div.annotation-title { padding: 1px;
+ font-weight: bold;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ color: white;
+ background-color: black;
+ }
+
+div.annotation-body { padding: 2px;
+ }
+
+div.annotation-body p { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+div.annotation-close { position: absolute;
+ top: 2px;
+ right: 2px;
+ }
+</xsl:param>
+<xsl:param name="annotation.graphic.close">
+http://docbook.sourceforge.net/release/images/annot-close.png</xsl:param>
+<xsl:param name="annotation.graphic.open">http://docbook.sourceforge.net/release/images/annot-open.png</xsl:param>
+
+<xsl:param name="annotation.js">
+<xsl:text>http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js</xsl:text></xsl:param>
+
+<xsl:param name="annotation.support" select="0"/>
+<xsl:param name="appendix.autolabel">A</xsl:param>
+<xsl:param name="author.othername.in.middle" select="1"/>
+<xsl:param name="autotoc.label.in.hyperlink" select="1"/>
+<xsl:param name="autotoc.label.separator">. </xsl:param>
+<xsl:param name="base.dir"/>
+<xsl:param name="biblioentry.item.separator">. </xsl:param>
+<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param>
+
+<xsl:param name="bibliography.numbered" select="0"/>
+<xsl:param name="bibliography.style">normal</xsl:param>
+<xsl:param name="blurb.on.titlepage.enabled" select="0"/>
+<xsl:param name="bridgehead.in.toc" select="0"/>
+<xsl:param name="callout.defaultcolumn">60</xsl:param>
+<xsl:param name="callout.graphics.extension">.png</xsl:param>
+
+<xsl:param name="callout.graphics" select="1"/>
+<xsl:param name="callout.graphics.number.limit">15</xsl:param>
+
+<xsl:param name="callout.graphics.path">images/callouts/</xsl:param>
+<xsl:param name="callout.list.table" select="1"/>
+<xsl:param name="callout.unicode" select="0"/>
+<xsl:param name="callout.unicode.number.limit">10</xsl:param>
+<xsl:param name="callout.unicode.start.character">10102</xsl:param>
+<xsl:param name="callouts.extension" select="1"/>
+<xsl:param name="chapter.autolabel" select="1"/>
+<xsl:param name="chunk.append"/>
+<xsl:param name="chunk.first.sections" select="0"/>
+<xsl:param name="chunk.quietly" select="0"/>
+<xsl:param name="chunk.section.depth" select="1"/>
+<xsl:param name="chunk.separate.lots" select="0"/>
+<xsl:param name="chunk.toc"/>
+<xsl:param name="chunk.tocs.and.lots" select="0"/>
+<xsl:param name="chunk.tocs.and.lots.has.title" select="1"/>
+<xsl:param name="citerefentry.link" select="0"/>
+<xsl:param name="collect.xref.targets">no</xsl:param>
+<xsl:param name="component.label.includes.part.label" select="0"/>
+<xsl:param name="contrib.inline.enabled">1</xsl:param>
+<xsl:param name="css.decoration" select="1"/>
+<xsl:param name="current.docid"/>
+<xsl:param name="custom.css.source"/>
+<xsl:param name="default.float.class">
+ <xsl:choose>
+ <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when>
+ <xsl:otherwise>before</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="default.image.width"/>
+<xsl:param name="default.table.frame">all</xsl:param>
+<xsl:param name="default.table.width"/>
+<xsl:param name="docbook.css.link" select="1"/>
+<xsl:param name="docbook.css.source">docbook.css.xml</xsl:param>
+<xsl:param name="draft.mode">no</xsl:param>
+<xsl:param name="draft.watermark.image">images/draft.png</xsl:param>
+<xsl:param name="ebnf.assignment">
+<code>::=</code>
+</xsl:param>
+
+<xsl:param name="ebnf.statement.terminator"/>
+
+<xsl:param name="ebnf.table.bgcolor">#F5DCB3</xsl:param>
+<xsl:param name="ebnf.table.border" select="1"/>
+<xsl:param name="eclipse.autolabel" select="0"/>
+<xsl:param name="eclipse.plugin.id">com.example.help</xsl:param>
+<xsl:param name="eclipse.plugin.name">DocBook Online Help Sample</xsl:param>
+<xsl:param name="eclipse.plugin.provider">Example provider</xsl:param>
+<xsl:param name="editedby.enabled">1</xsl:param>
+<xsl:param name="email.delimiters.enabled" select="1"/>
+<xsl:param name="emphasis.propagates.style" select="1"/>
+<xsl:param name="entry.propagates.style" select="1"/>
+<xsl:param name="exsl.node.set.available">
+ <xsl:choose>
+ <xsl:when xmlns:exsl="http://exslt.org/common" exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="firstterm.only.link" select="0"/>
+<xsl:param name="footer.rule" select="1"/>
+<xsl:param name="footnote.number.format">1</xsl:param>
+<xsl:param name="footnote.number.symbols"/>
+<xsl:param name="formal.procedures" select="1"/>
+<xsl:param name="formal.title.placement">
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+</xsl:param>
+<xsl:param name="funcsynopsis.decoration" select="1"/>
+<xsl:param name="funcsynopsis.style">kr</xsl:param>
+<xsl:param name="function.parens" select="0"/>
+<xsl:param name="generate.css.header" select="0"/>
+<xsl:param name="generate.id.attributes" select="0"/>
+<xsl:param name="generate.index" select="1"/>
+<xsl:param name="generate.legalnotice.link" select="0"/>
+<xsl:param name="generate.manifest" select="0"/>
+<xsl:param name="generate.meta.abstract" select="1"/>
+<xsl:param name="generate.revhistory.link" select="0"/>
+<xsl:param name="generate.section.toc.level" select="0"/>
+<xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+</xsl:param>
+
+<xsl:param name="glossary.collection"/>
+<xsl:param name="glossary.sort" select="0"/>
+<xsl:param name="glossentry.show.acronym">no</xsl:param>
+<xsl:param name="glossterm.auto.link" select="0"/>
+<xsl:param name="graphic.default.extension"/>
+<xsl:param name="graphicsize.extension" select="1"/>
+<xsl:param name="graphicsize.use.img.src.path" select="0"/>
+<xsl:param name="header.rule" select="1"/>
+<xsl:param name="highlight.default.language"/>
+<xsl:param name="highlight.source" select="0"/>
+<xsl:param name="highlight.xslthl.config"/>
+<xsl:param name="html.append"/>
+<xsl:param name="html.base"/>
+<xsl:param name="html.cellpadding"/>
+<xsl:param name="html.cellspacing"/>
+<xsl:param name="html.cleanup" select="1"/>
+<xsl:param name="html.ext">.html</xsl:param>
+<xsl:param name="html.extra.head.links" select="0"/>
+<xsl:param name="html.head.legalnotice.link.multiple" select="1"/>
+<xsl:param name="html.head.legalnotice.link.types">copyright</xsl:param>
+<xsl:param name="html.longdesc" select="1"/>
+<xsl:param name="html.longdesc.link" select="$html.longdesc"/>
+<xsl:param name="html.stylesheet"/>
+<xsl:param name="html.stylesheet.type">text/css</xsl:param>
+<xsl:param name="htmlhelp.alias.file">alias.h</xsl:param>
+<xsl:param name="htmlhelp.autolabel" select="0"/>
+<xsl:param name="htmlhelp.button.back" select="1"/>
+<xsl:param name="htmlhelp.button.forward" select="0"/>
+<xsl:param name="htmlhelp.button.hideshow" select="1"/>
+<xsl:param name="htmlhelp.button.home" select="0"/>
+<xsl:param name="htmlhelp.button.home.url"/>
+<xsl:param name="htmlhelp.button.jump1" select="0"/>
+<xsl:param name="htmlhelp.button.jump1.title">User1</xsl:param>
+<xsl:param name="htmlhelp.button.jump1.url"/>
+<xsl:param name="htmlhelp.button.jump2" select="0"/>
+<xsl:param name="htmlhelp.button.jump2.title">User2</xsl:param>
+<xsl:param name="htmlhelp.button.jump2.url"/>
+<xsl:param name="htmlhelp.button.locate" select="0"/>
+<xsl:param name="htmlhelp.button.next" select="1"/>
+<xsl:param name="htmlhelp.button.options" select="1"/>
+<xsl:param name="htmlhelp.button.prev" select="1"/>
+<xsl:param name="htmlhelp.button.print" select="1"/>
+<xsl:param name="htmlhelp.button.refresh" select="0"/>
+<xsl:param name="htmlhelp.button.stop" select="0"/>
+<xsl:param name="htmlhelp.button.zoom" select="0"/>
+<xsl:param name="htmlhelp.chm">htmlhelp.chm</xsl:param>
+<xsl:param name="htmlhelp.default.topic"/>
+<xsl:param name="htmlhelp.display.progress" select="1"/>
+<xsl:param name="htmlhelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="htmlhelp.enhanced.decompilation" select="0"/>
+<xsl:param name="htmlhelp.enumerate.images" select="0"/>
+<xsl:param name="htmlhelp.force.map.and.alias" select="0"/>
+<xsl:param name="htmlhelp.hhc.binary" select="1"/>
+<xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"/>
+<xsl:param name="htmlhelp.hhc">toc.hhc</xsl:param>
+<xsl:param name="htmlhelp.hhc.section.depth">5</xsl:param>
+<xsl:param name="htmlhelp.hhc.show.root" select="1"/>
+<xsl:param name="htmlhelp.hhc.width"/>
+<xsl:param name="htmlhelp.hhk">index.hhk</xsl:param>
+<xsl:param name="htmlhelp.hhp">htmlhelp.hhp</xsl:param>
+<xsl:param name="htmlhelp.hhp.tail"/>
+<xsl:param name="htmlhelp.hhp.window">Main</xsl:param>
+<xsl:param name="htmlhelp.hhp.windows"/>
+<xsl:param name="htmlhelp.map.file">context.h</xsl:param>
+<xsl:param name="htmlhelp.only" select="0"/>
+<xsl:param name="htmlhelp.remember.window.position" select="0"/>
+<xsl:param name="htmlhelp.show.advanced.search" select="0"/>
+<xsl:param name="htmlhelp.show.favorities" select="0"/>
+<xsl:param name="htmlhelp.show.menu" select="0"/>
+<xsl:param name="htmlhelp.show.toolbar.text" select="1"/>
+<xsl:param name="htmlhelp.title"/>
+<xsl:param name="htmlhelp.use.hhk" select="0"/>
+<xsl:param name="htmlhelp.window.geometry"/>
+<xsl:param name="id.warnings" select="0"/>
+<xsl:param name="ignore.image.scaling" select="0"/>
+<xsl:param name="img.src.path"/>
+<xsl:param name="index.links.to.section" select="1"/>
+<xsl:param name="index.method">basic</xsl:param>
+<xsl:param name="index.number.separator"/>
+<xsl:param name="index.on.role" select="0"/>
+<xsl:param name="index.on.type" select="0"/>
+<xsl:param name="index.prefer.titleabbrev" select="0"/>
+<xsl:param name="index.range.separator"/>
+<xsl:param name="index.term.separator"/>
+<xsl:param name="inherit.keywords" select="1"/>
+<xsl:param name="insert.olink.page.number">no</xsl:param>
+<xsl:param name="insert.olink.pdf.frag" select="0"/>
+<xsl:param name="insert.xref.page.number">no</xsl:param>
+<xsl:param name="javahelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="keep.relative.image.uris" select="1"/>
+
+<xsl:param name="l10n.gentext.default.language">en</xsl:param>
+<xsl:param name="l10n.gentext.language"/>
+<xsl:param name="l10n.gentext.use.xref.language" select="0"/>
+<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/>
+<xsl:param name="label.from.part" select="0"/>
+<xsl:param name="linenumbering.everyNth">5</xsl:param>
+<xsl:param name="linenumbering.extension" select="1"/>
+<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="linenumbering.width">3</xsl:param>
+<xsl:param name="link.mailto.url"/>
+<xsl:param name="make.clean.html" select="0"/>
+<xsl:param name="make.graphic.viewport" select="1"/>
+<xsl:param name="make.single.year.ranges" select="0"/>
+<xsl:param name="make.valid.html" select="0"/>
+<xsl:param name="make.year.ranges" select="0"/>
+ <xsl:param name="manifest">HTML.manifest</xsl:param>
+
+<xsl:param name="manifest.in.base.dir" select="0"/>
+<xsl:param name="manual.toc"/>
+<xsl:param name="menuchoice.menu.separator"> &#8594; </xsl:param>
+<xsl:param name="menuchoice.separator">+</xsl:param>
+<xsl:param name="navig.graphics.extension">.gif</xsl:param>
+<xsl:param name="navig.graphics" select="0"/>
+<xsl:param name="navig.graphics.path">images/</xsl:param>
+<xsl:param name="navig.showtitles">1</xsl:param>
+<xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"/>
+<xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"/>
+<xsl:param name="nominal.table.width">6in</xsl:param>
+<xsl:param name="olink.base.uri"/>
+<xsl:param name="olink.debug" select="0"/>
+<xsl:param name="olink.doctitle">no</xsl:param>
+<xsl:param name="olink.fragid">fragid=</xsl:param>
+<xsl:param name="olink.lang.fallback.sequence"/>
+<xsl:param name="olink.outline.ext">.olink</xsl:param>
+<xsl:attribute-set name="olink.properties">
+ <xsl:attribute name="show-destination">replace</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="olink.pubid">pubid</xsl:param>
+ <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param>
+<xsl:param name="olink.sysid">sysid</xsl:param>
+<xsl:param name="othercredit.like.author.enabled">0</xsl:param>
+<xsl:param name="para.propagates.style" select="1"/>
+<xsl:param name="part.autolabel">I</xsl:param>
+<xsl:param name="phrase.propagates.style" select="1"/>
+<xsl:param name="pixels.per.inch">90</xsl:param>
+<xsl:param name="points.per.em">10</xsl:param>
+<xsl:param name="preface.autolabel" select="0"/>
+<xsl:param name="prefer.internal.olink" select="0"/>
+<xsl:param name="preferred.mediaobject.role"/>
+<xsl:param name="process.empty.source.toc" select="0"/>
+<xsl:param name="process.source.toc" select="0"/>
+<xsl:param name="profile.arch"/>
+<xsl:param name="profile.attribute"/>
+<xsl:param name="profile.audience"/>
+<xsl:param name="profile.condition"/>
+<xsl:param name="profile.conformance"/>
+<xsl:param name="profile.lang"/>
+<xsl:param name="profile.os"/>
+<xsl:param name="profile.revision"/>
+<xsl:param name="profile.revisionflag"/>
+<xsl:param name="profile.role"/>
+<xsl:param name="profile.security"/>
+<xsl:param name="profile.separator">;</xsl:param>
+<xsl:param name="profile.status"/>
+<xsl:param name="profile.userlevel"/>
+<xsl:param name="profile.value"/>
+<xsl:param name="profile.vendor"/>
+<xsl:param name="profile.wordsize"/>
+<xsl:param name="punct.honorific">.</xsl:param>
+<xsl:param name="qanda.defaultlabel">number</xsl:param>
+<xsl:param name="qanda.in.toc" select="0"/>
+<xsl:param name="qanda.inherit.numeration" select="1"/>
+<xsl:param name="qanda.nested.in.toc" select="0"/>
+<xsl:param name="qandadiv.autolabel" select="1"/>
+<xsl:param name="refclass.suppress" select="0"/>
+<xsl:param name="refentry.generate.name" select="1"/>
+<xsl:param name="refentry.generate.title" select="0"/>
+<xsl:param name="refentry.separator" select="1"/>
+<xsl:param name="refentry.xref.manvolnum" select="1"/>
+ <xsl:param name="reference.autolabel">I</xsl:param>
+<xsl:param name="root.filename">index</xsl:param>
+<xsl:param name="rootid"/>
+<xsl:param name="runinhead.default.title.end.punct">.</xsl:param>
+<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param>
+<xsl:param name="section.autolabel" select="0"/>
+<xsl:param name="section.autolabel.max.depth">8</xsl:param>
+<xsl:param name="section.label.includes.component.label" select="0"/>
+<xsl:param name="segmentedlist.as.table" select="0"/>
+<xsl:param name="shade.verbatim" select="0"/>
+<xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="bgcolor">#E0E0E0</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:param name="show.comments" select="1"/>
+<xsl:param name="show.revisionflag" select="0"/>
+<xsl:param name="simplesect.in.toc" select="0"/>
+<xsl:param name="spacing.paras" select="0"/>
+<xsl:param name="suppress.footer.navigation">0</xsl:param>
+<xsl:param name="suppress.header.navigation" select="0"/>
+<xsl:param name="suppress.navigation" select="0"/>
+<xsl:param name="table.borders.with.css" select="0"/>
+<xsl:param name="table.cell.border.color"/>
+
+<xsl:param name="table.cell.border.style">solid</xsl:param>
+<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param>
+<xsl:param name="table.footnote.number.format">a</xsl:param>
+<xsl:param name="table.footnote.number.symbols"/>
+<xsl:param name="table.frame.border.color"/>
+
+<xsl:param name="table.frame.border.style">solid</xsl:param>
+<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
+<xsl:param name="tablecolumns.extension" select="1"/>
+ <xsl:param name="target.database.document">olinkdb.xml</xsl:param>
+<xsl:param name="targets.filename">target.db</xsl:param>
+<xsl:param name="tex.math.delims" select="1"/>
+<xsl:param name="tex.math.file">tex-math-equations.tex</xsl:param>
+<xsl:param name="tex.math.in.alt"/>
+<xsl:param name="textdata.default.encoding"/>
+ <xsl:param name="textinsert.extension" select="1"/>
+<xsl:param name="toc.list.type">dl</xsl:param>
+<xsl:param name="toc.max.depth">8</xsl:param>
+<xsl:param name="toc.section.depth">2</xsl:param>
+<xsl:param name="ulink.target">_top</xsl:param>
+<xsl:param name="use.embed.for.svg" select="0"/>
+<xsl:param name="use.extensions" select="0"/>
+<xsl:param name="use.id.as.filename" select="0"/>
+<xsl:param name="use.local.olink.style" select="0"/>
+<xsl:param name="use.role.as.xrefstyle" select="1"/>
+<xsl:param name="use.role.for.mediaobject" select="1"/>
+<xsl:param name="use.svg" select="1"/>
+<xsl:param name="variablelist.as.table" select="0"/>
+<xsl:param name="variablelist.term.break.after">0</xsl:param>
+<xsl:param name="variablelist.term.separator">, </xsl:param>
+<xsl:param name="writing.mode">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">writing-mode</xsl:with-param>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:param>
+<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.label-title.separator">: </xsl:param>
+<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.with.number.and.title" select="1"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml
new file mode 100644
index 0000000..a8f357e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml
@@ -0,0 +1,1113 @@
+<?xml version="1.0"?>
+
+<reference><info><title>HTML Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for HTML output.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_background-color">
+<refnamediv>
+<refname>dbhtml_background-color</refname>
+<refpurpose>Sets background color for an image</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml background-color="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGcolor.html">Background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_bgcolor">
+<refnamediv>
+<refname>dbhtml_bgcolor</refname>
+<refpurpose>Sets background color on a CALS table row or table cell</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml bgcolor</tag> PI as child of a CALS table row
+ or cell to set a background color for that table row or cell.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+
+<para>An HTML color value</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="BGtableColor.html#CellBGColor">Cell background color</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_cellpadding">
+<refnamediv>
+<refname>dbhtml_cellpadding</refname>
+<refpurpose>Specifies cellpadding in CALS table or qandaset output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml cellpadding="<replaceable>number</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml cellpadding</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellpadding</literal> attribute in the
+ output HTML table.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>cellpadding="<replaceable>number</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the cellpadding</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>html.cellpadding</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_cellspacing">
+<refnamediv>
+<refname>dbhtml_cellspacing</refname>
+<refpurpose>Specifies cellspacing in CALS table or qandaset output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml cellspacing="<replaceable>number</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml cellspacing</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellspacing</literal> attribute in the
+ output HTML table.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>cellspacing="<replaceable>number</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the cellspacing</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>html.cellspacing</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_class">
+<refnamediv>
+<refname>dbhtml_class</refname>
+<refpurpose>Set value of the class attribute for a CALS table row</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml class="<replaceable>name</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml class</tag> PI as a child of a
+ <tag>row</tag> to specify a <literal>class</literal>
+ attribute and value in the HTML output for that row.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>class="<replaceable>name</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the class name</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="CSSTableCells.html">Table styles in HTML output</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_dir">
+<refnamediv>
+<refname>dbhtml_dir</refname>
+<refpurpose>Specifies a directory name in which to write files</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml dir="<replaceable>path</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>When chunking output, use the <tag class="xmlpi">dbhtml dir</tag> PI
+ as a child of a chunk source to cause the output of that
+ chunk to be written to the specified directory; also, use it
+ as a child of a <tag>mediaobject</tag> to specify a
+ directory into which any long-description files for that
+ <tag>mediaobject</tag> will be written.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>dir="<replaceable>path</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the pathname for the directory</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>base.dir</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Chunking.html#dbhtmlDirPI">dbhtml dir processing instruction</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_filename">
+<refnamediv>
+<refname>dbhtml_filename</refname>
+<refpurpose>Specifies a filename for a chunk</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml filename="<replaceable>filename</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>When chunking output, use the <tag class="xmlpi">dbhtml filename</tag>
+ PI as a child of a chunk source to specify a filename for
+ the output file for that chunk.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>filename="<replaceable>path</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the filename for the file</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>use.id.as.filename</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Chunking.html#DbhtmlFilenames">dbhtml filenames</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_funcsynopsis-style">
+<refnamediv>
+<refname>dbhtml_funcsynopsis-style</refname>
+<refpurpose>Specifies presentation style for a funcsynopsis</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+
+<para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>funcsynopsis.style</parameter></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_img.src.path">
+<refnamediv>
+<refname>dbhtml_img.src.path</refname>
+<refpurpose>Specifies a path to the location of an image file</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml img.src.path="<replaceable>path</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml img.src.path</tag> PI before or
+ after an image (<tag>graphic</tag>,
+ <tag>inlinegraphic</tag>, <tag>imagedata</tag>, or
+ <tag>videodata</tag> element) as a sibling to the element,
+ to specify a path to the location of the image; in HTML
+ output, the value specified for the
+ <code>img.src.path</code> attribute is prepended to the
+ filename.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>img.src.path="<replaceable>path</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the pathname to prepend to the name of the image file</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>img.src.path</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="GraphicsLocations.html#UsingFileref">Using fileref</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_label-width">
+<refnamediv>
+<refname>dbhtml_label-width</refname>
+<refpurpose>Specifies the label width for a qandaset</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml label-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml label-width</tag> PI as a child of a
+ <tag>qandaset</tag> to specify the width of labels.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the label width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_linenumbering.everyNth">
+<refnamediv>
+<refname>dbhtml_linenumbering.everyNth</refname>
+<refpurpose>Specifies interval for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml linenumbering.everyNth</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the interval at which lines are numbered.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+
+<para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.everyNth</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_linenumbering.separator">
+<refnamediv>
+<refname>dbhtml_linenumbering.separator</refname>
+<refpurpose>Specifies separator text for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml linenumbering.separator</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the separator text output between the line numbers and content.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.separator</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_linenumbering.width">
+<refnamediv>
+<refname>dbhtml_linenumbering.width</refname>
+<refpurpose>Specifies width for line numbers in verbatims</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml linenumbering.width</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the width set aside for line numbers.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the width (inluding units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>linenumbering.width</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_list-presentation">
+<refnamediv>
+<refname>dbhtml_list-presentation</refname>
+<refpurpose>Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml list-presentation="list"|"table"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+
+<para>Displays the list as a list</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+
+<para>Displays the list as a table</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<itemizedlist>
+ <listitem>
+
+<para><parameter>variablelist.as.table</parameter></para>
+
+ </listitem>
+ <listitem>
+
+<para><parameter>segmentedlist.as.table</parameter></para>
+
+ </listitem>
+ </itemizedlist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_list-width">
+<refnamediv>
+<refname>dbhtml_list-width</refname>
+<refpurpose>Specifies the width of a variablelist or simplelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml list-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml list-width</tag> PI as a child of a
+ <tag>variablelist</tag> or a <tag>simplelist</tag> presented
+ as a table, to specify the output width.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the output width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_row-height">
+<refnamediv>
+<refname>dbhtml_row-height</refname>
+<refpurpose>Specifies the height for a CALS table row</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml row-height="<replaceable>height</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the row height (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="RowHeight.html">Row height</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_start">
+<refnamediv>
+<refname>dbhtml_start</refname>
+<refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml start="<replaceable>character</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para><emphasis>This PI is obsolete</emphasis>. The intent of
+ this PI was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Orderedlists.html#ListStartNum">List starting number</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_stop-chunking">
+<refnamediv>
+<refname>dbhtml_stop-chunking</refname>
+<refpurpose>Do not chunk any descendants of this element.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml stop-chunking</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages:
+<programlisting>&lt;section&gt;
+&lt;title&gt;Configuring pencil&lt;/title&gt;
+&lt;?dbhtml stop-chunking?&gt;
+
+...
+
+&lt;/section&gt;</programlisting>
+</para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Chunking.html">Chunking into multiple HTML files</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_table-summary">
+<refnamediv>
+<refname>dbhtml_table-summary</refname>
+<refpurpose>Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml table-summary="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml table-summary</tag> PI as a child of
+ a CALS <tag>table</tag>, <tag>variablelist</tag>,
+ <tag>segmentedlist</tag>, or <tag>qandaset</tag> to specify
+ the text for the HTML <literal>summary</literal> attribute
+ in the output HTML table.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>table-summary="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the summary text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link>,
+ <link role="tcg" xlink:href="TableSummary.html">Table summary text</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_table-width">
+<refnamediv>
+<refname>dbhtml_table-width</refname>
+<refpurpose>Specifies the width for a CALS table</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml table-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml table-width</tag> PI as a child of a
+ CALS <tag>table</tag> to specify the width of the table in
+ output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the table width (including units or as a percentage)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>default.table.width</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Tables.html#TableWidth">Table width</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_term-presentation">
+<refnamediv>
+<refname>dbhtml_term-presentation</refname>
+<refpurpose>Sets character formatting for terms in a variablelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml term-presentation="bold"|"italic"|"bold-italic"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml term-presentation</tag> PI as a child
+ of a <tag>variablelist</tag> to set character formatting for
+ the <tag>term</tag> output of the list.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-presentation="<replaceable>bold</replaceable>"</term>
+ <listitem>
+
+<para>Specifies that terms are displayed in bold</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>italic</replaceable>"</term>
+ <listitem>
+
+<para>Specifies that terms are displayed in italic</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>bold-italic</replaceable>"</term>
+ <listitem>
+
+<para>Specifies that terms are displayed in bold-italic</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_term-separator">
+<refnamediv>
+<refname>dbhtml_term-separator</refname>
+<refpurpose>Specifies separator text among terms in a varlistentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml term-separator="<replaceable>text</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml term-separator</tag> PI as a child
+ of a <tag>variablelist</tag> to specify the separator text
+ among <tag>term</tag> instances.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the text (zero or more characters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>variablelist.term.separator</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_term-width">
+<refnamediv>
+<refname>dbhtml_term-width</refname>
+<refpurpose>Specifies the term width for a variablelist</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml term-width="<replaceable>width</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the term width (including units)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml_toc">
+<refnamediv>
+<refname>dbhtml_toc</refname>
+<refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml toc="0"|"1"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+
+<para>If zero, no TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+
+<para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="QandAtoc.html">Q and A list of questions</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbcmdlist">
+<refnamediv>
+<refname>dbcmdlist</refname>
+<refpurpose>Generates a hyperlinked list of commands</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbcmdlist</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbcmdlist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>cmdsynopsis</tag> instances; a hyperlinked navigational
+ “command list†will be generated at the top of output for that
+ element, enabling users to quickly jump
+ to each command synopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<para>[No parameters]</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbfunclist">
+<refnamediv>
+<refname>dbfunclist</refname>
+<refpurpose>Generates a hyperlinked list of functions</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbfunclist</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbfunclist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>funcsynopsis</tag> instances; a hyperlinked
+ navigational “function list†will be generated at the top of
+ output for that element, enabling users to quickly
+ jump to to each function synopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<para>[No parameters]</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhtml-include_href">
+<refnamediv>
+<refname>dbhtml-include_href</refname>
+<refpurpose>Copies an external well-formed HTML/XML file into current doc</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhtml-include href="<replaceable>URI</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhtml-include href</tag> PI anywhere in a
+ document to cause the contents of the file referenced by the
+ <code>href</code> pseudo-attribute to be copied/inserted “as
+ is†into your HTML output at the point in document order
+ where the PI occurs in the source.</para>
+
+ <note>
+
+<para>The referenced file may contain plain text (as long as
+ it is “wrapped†in an <tag>html</tag> element — see the
+ note below) or markup in any arbitrary vocabulary,
+ including HTML — but it must conform to XML
+ well-formedness constraints (because the feature in XSLT
+ 1.0 for opening external files, the
+ <function>document()</function> function, can only handle
+ files that meet XML well-formedness constraints).</para>
+
+
+<para>Among other things, XML well-formedness constraints
+ require a document to have <emphasis>a single root
+ element</emphasis>. So if the content you want to
+ include is plain text or is markup that does
+ <emphasis>not</emphasis> have a single root element,
+ <emphasis role="strong">wrap the content in an
+ <tag>html</tag> element</emphasis>. The stylesheets will
+ strip out that surrounding <tag>html</tag> “wrapper†when
+ they find it, leaving just the content you want to
+ insert.</para>
+
+ </note>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>href="<replaceable>URI</replaceable>"</term>
+ <listitem>
+
+<para>Specifies the URI for the file to include; the URI
+ can be, for example, a remote <literal>http:</literal>
+ URI, or a local filesystem <literal>file:</literal>
+ URI</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>textinsert.extension</parameter></para>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>,
+ <link role="tcg" xlink:href="ExternalCode.html">External code files</link></para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbhh">
+<refnamediv>
+<refname>dbhh</refname>
+<refpurpose>Sets topic name and topic id for context-sensitive HTML Help</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbhh topicname="<replaceable>name</replaceable>" topicid="<replaceable>id</replaceable>"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbhh</tag> PI as a child of components
+ that should be used as targets for context-sensitive help requests.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>topicname="<replaceable>name</replaceable>"</term>
+ <listitem>
+
+<para>Specifies a unique string constant that identifies a help topic</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>topicid="<replaceable>id</replaceable>"</term>
+ <listitem>
+
+<para>Specifies a unique integer value for the <literal>topicname</literal> string</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="tcg"><title>Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link></title>
+
+<para><link role="tcg" xlink:href="HtmlHelp.html#HHContextHelp">Context-sensitive help</link></para>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl
new file mode 100644
index 0000000..ac1345f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl
@@ -0,0 +1,1263 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info><title>HTML Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for HTML output.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<doc:pi name="dbhtml_background-color" xmlns="">
+ <refpurpose>Sets background color for an image</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml background-color="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="BGcolor.html"
+ >Background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_background-color">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'background-color'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_bgcolor" xmlns="">
+ <refpurpose>Sets background color on a CALS table row or table cell</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml bgcolor</tag> PI as child of a CALS table row
+ or cell to set a background color for that table row or cell.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="BGtableColor.html#CellBGColor"
+ >Cell background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_bgcolor">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'bgcolor'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_cellpadding" xmlns="">
+ <refpurpose>Specifies cellpadding in CALS table or qandaset output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml cellpadding</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellpadding</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml cellpadding="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>cellpadding="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellpadding</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>html.cellpadding</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="CellSpacing.html"
+ >Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellpadding">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellpadding'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_cellspacing" xmlns="">
+ <refpurpose>Specifies cellspacing in CALS table or qandaset output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml cellspacing</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellspacing</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml cellspacing="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>cellspacing="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellspacing</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>html.cellspacing</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="CellSpacing.html"
+ >Cell spacing and cell padding</link>,
+ <link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellspacing">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellspacing'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_class" xmlns="">
+ <refpurpose>Set value of the class attribute for a CALS table row</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml class</tag> PI as a child of a
+ <tag>row</tag> to specify a <literal>class</literal>
+ attribute and value in the HTML output for that row.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml class="<replaceable>name</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>class="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies the class name</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="CSSTableCells.html"
+ >Table styles in HTML output</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_class">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'class'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_dir" xmlns="">
+ <refpurpose>Specifies a directory name in which to write files</refpurpose>
+ <refdescription>
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml dir</tag> PI
+ as a child of a chunk source to cause the output of that
+ chunk to be written to the specified directory; also, use it
+ as a child of a <tag>mediaobject</tag> to specify a
+ directory into which any long-description files for that
+ <tag>mediaobject</tag> will be written.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml dir="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>dir="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname for the directory</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>base.dir</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Chunking.html#dbhtmlDirPI"
+ >dbhtml dir processing instruction</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_dir">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'dir'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_filename" xmlns="">
+ <refpurpose>Specifies a filename for a chunk</refpurpose>
+ <refdescription>
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml filename</tag>
+ PI as a child of a chunk source to specify a filename for
+ the output file for that chunk.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml filename="<replaceable>filename</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>filename="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the filename for the file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>use.id.as.filename</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Chunking.html#DbhtmlFilenames"
+ >dbhtml filenames</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_filename">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'filename'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_funcsynopsis-style" xmlns="">
+ <refpurpose>Specifies presentation style for a funcsynopsis</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>funcsynopsis.style</parameter></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'funcsynopsis-style'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_img.src.path" xmlns="">
+ <refpurpose>Specifies a path to the location of an image file</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml img.src.path</tag> PI before or
+ after an image (<tag>graphic</tag>,
+ <tag>inlinegraphic</tag>, <tag>imagedata</tag>, or
+ <tag>videodata</tag> element) as a sibling to the element,
+ to specify a path to the location of the image; in HTML
+ output, the value specified for the
+ <code>img.src.path</code> attribute is prepended to the
+ filename.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml img.src.path="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>img.src.path="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname to prepend to the name of the image file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>img.src.path</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="GraphicsLocations.html#UsingFileref"
+ >Using fileref</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_img.src.path">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'img.src.path'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_label-width" xmlns="">
+ <refpurpose>Specifies the label width for a qandaset</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml label-width</tag> PI as a child of a
+ <tag>qandaset</tag> to specify the width of labels.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml label-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the label width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_label-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'label-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_linenumbering.everyNth" xmlns="">
+ <refpurpose>Specifies interval for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.everyNth</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the interval at which lines are numbered.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+ <para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.everyNth</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_linenumbering.separator" xmlns="">
+ <refpurpose>Specifies separator text for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.separator</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the separator text output between the line numbers and content.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.separator</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_linenumbering.width" xmlns="">
+ <refpurpose>Specifies width for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.width</tag> PI as a child
+ of a “verbatim†element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the width set aside for line numbers.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the width (inluding units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.width</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_list-presentation" xmlns="">
+ <refpurpose>Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml list-presentation="list"|"table"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+ <para>Displays the list as a list</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+ <para>Displays the list as a table</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <itemizedlist>
+ <listitem>
+ <para><parameter>variablelist.as.table</parameter></para>
+ </listitem>
+ <listitem>
+ <para><parameter>segmentedlist.as.table</parameter></para>
+ </listitem>
+ </itemizedlist>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_list-width" xmlns="">
+ <refpurpose>Specifies the width of a variablelist or simplelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml list-width</tag> PI as a child of a
+ <tag>variablelist</tag> or a <tag>simplelist</tag> presented
+ as a table, to specify the output width.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml list-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the output width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_row-height" xmlns="">
+ <refpurpose>Specifies the height for a CALS table row</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml row-height="<replaceable>height</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+ <para>Specifies the row height (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="RowHeight.html"
+ >Row height</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_row-height">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'row-height'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_start" xmlns="">
+ <refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose>
+ <refdescription>
+ <para><emphasis>This PI is obsolete</emphasis>. The intent of
+ this PI was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml start="<replaceable>character</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+ <para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Orderedlists.html#ListStartNum"
+ >List starting number</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_start">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'start'"/>
+ </xsl:call-template>
+</xsl:template>
+
+ <doc:pi name="dbhtml_stop-chunking" xmlns="">
+ <refpurpose>Do not chunk any descendants of this element.</refpurpose>
+ <refdescription>
+ <para>When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages:
+<programlisting><![CDATA[<section>
+<title>Configuring pencil</title>
+<?dbhtml stop-chunking?>
+
+...
+
+</section>]]></programlisting>
+</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml stop-chunking</tag></synopsis>
+ </refsynopsisdiv>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Chunking.html"
+ >Chunking into multiple HTML files</link></para>
+ </refsee>
+ </doc:pi>
+ <!-- The code that handles the stop-chunking pi is in chunk-common.xsl -->
+
+<doc:pi name="dbhtml_table-summary" xmlns="">
+ <refpurpose>Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml table-summary</tag> PI as a child of
+ a CALS <tag>table</tag>, <tag>variablelist</tag>,
+ <tag>segmentedlist</tag>, or <tag>qandaset</tag> to specify
+ the text for the HTML <literal>summary</literal> attribute
+ in the output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml table-summary="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>table-summary="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the summary text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link>,
+ <link role="tcg" xlink:href="TableSummary.html"
+ >Table summary text</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-summary">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-summary'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_table-width" xmlns="">
+ <refpurpose>Specifies the width for a CALS table</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml table-width</tag> PI as a child of a
+ CALS <tag>table</tag> to specify the width of the table in
+ output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml table-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the table width (including units or as a percentage)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>default.table.width</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Tables.html#TableWidth"
+ >Table width</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_term-presentation" xmlns="">
+ <refpurpose>Sets character formatting for terms in a variablelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml term-presentation</tag> PI as a child
+ of a <tag>variablelist</tag> to set character formatting for
+ the <tag>term</tag> output of the list.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml term-presentation="bold"|"italic"|"bold-italic"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>term-presentation="<replaceable>bold</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in italic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>bold-italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold-italic</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_term-separator" xmlns="">
+ <refpurpose>Specifies separator text among terms in a varlistentry</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml term-separator</tag> PI as a child
+ of a <tag>variablelist</tag> to specify the separator text
+ among <tag>term</tag> instances.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml term-separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>term-separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>variablelist.term.separator</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_term-width" xmlns="">
+ <refpurpose>Specifies the term width for a variablelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml term-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the term width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_toc" xmlns="">
+ <refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml toc="0"|"1"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+ <para>If zero, no TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+ <para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="QandAtoc.html"
+ >Q and A list of questions</link>,
+ <link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_toc">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'toc'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbcmdlist" xmlns="">
+ <refpurpose>Generates a hyperlinked list of commands</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbcmdlist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>cmdsynopsis</tag> instances; a hyperlinked navigational
+ “command list†will be generated at the top of output for that
+ element, enabling users to quickly jump
+ to each command synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbcmdlist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbcmdlist">
+ <xsl:variable name="cmdsynopses" select="..//cmdsynopsis"/>
+ <xsl:if test="count($cmdsynopses)&lt;1">
+ <xsl:message><xsl:text>No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi name="dbfunclist" xmlns="">
+ <refpurpose>Generates a hyperlinked list of functions</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfunclist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>funcsynopsis</tag> instances; a hyperlinked
+ navigational “function list†will be generated at the top of
+ output for that element, enabling users to quickly
+ jump to to each function synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfunclist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfunclist">
+ <xsl:variable name="funcsynopses" select="..//funcsynopsis"/>
+ <xsl:if test="count($funcsynopses)&lt;1">
+ <xsl:message><xsl:text>No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi name="dbhtml-include_href" xmlns="">
+ <refpurpose>Copies an external well-formed HTML/XML file into current doc</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml-include href</tag> PI anywhere in a
+ document to cause the contents of the file referenced by the
+ <code>href</code> pseudo-attribute to be copied/inserted “as
+ is†into your HTML output at the point in document order
+ where the PI occurs in the source.</para>
+ <note>
+ <para>The referenced file may contain plain text (as long as
+ it is “wrapped†in an <tag>html</tag> element — see the
+ note below) or markup in any arbitrary vocabulary,
+ including HTML — but it must conform to XML
+ well-formedness constraints (because the feature in XSLT
+ 1.0 for opening external files, the
+ <function>document()</function> function, can only handle
+ files that meet XML well-formedness constraints).</para>
+ <para>Among other things, XML well-formedness constraints
+ require a document to have <emphasis>a single root
+ element</emphasis>. So if the content you want to
+ include is plain text or is markup that does
+ <emphasis>not</emphasis> have a single root element,
+ <emphasis role="strong">wrap the content in an
+ <tag>html</tag> element</emphasis>. The stylesheets will
+ strip out that surrounding <tag>html</tag> “wrapper†when
+ they find it, leaving just the content you want to
+ insert.</para>
+ </note>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml-include href="<replaceable>URI</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>href="<replaceable>URI</replaceable>"</term>
+ <listitem>
+ <para>Specifies the URI for the file to include; the URI
+ can be, for example, a remote <literal>http:</literal>
+ URI, or a local filesystem <literal>file:</literal>
+ URI</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>textinsert.extension</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="InsertExtHtml.html"
+ >Inserting external HTML code</link>,
+ <link role="tcg"
+ xlink:href="ExternalCode.html"
+ >External code files</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml-include">
+ <xsl:param name="href">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">href</xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <xsl:variable name="content" select="document($href,/)"/>
+ <xsl:choose>
+ <xsl:when test="$content/*">
+ <xsl:choose>
+ <xsl:when test="$content/*[1][self::html]">
+ <!-- include just the children of html wrapper -->
+ <xsl:copy-of select="$content/*[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction </xsl:text>
+ <xsl:text>href has no content.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction has </xsl:text>
+ <xsl:text>missing or empty href value.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- There are two templates matching this PI in htmlhelp-common.xsl -->
+<doc:pi name="dbhh" xmlns="">
+ <refpurpose>Sets topic name and topic id for context-sensitive HTML Help</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhh</tag> PI as a child of components
+ that should be used as targets for context-sensitive help requests.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhh topicname="<replaceable>name</replaceable>" topicid="<replaceable>id</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>topicname="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique string constant that identifies a help topic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>topicid="<replaceable>id</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique integer value for the <literal>topicname</literal> string</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="HtmlHelp.html#HHContextHelp"
+ >Context-sensitive help</link></para>
+ </refsee>
+</doc:pi>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-attribute">
+ <!-- * dbhtml-attribute is an interal utility template for retrieving -->
+ <!-- * pseudo-attributes/parameters from PIs -->
+ <xsl:param name="pis" select="processing-instruction('dbhtml')"/>
+ <xsl:param name="attribute">filename</xsl:param>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$pis"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction()">
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbcmdlist')">
+ <xsl:call-template name="pi.dbcmdlist"/>
+</xsl:template>
+<xsl:template name="process.cmdsynopsis.list">
+ <xsl:param name="cmdsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($cmdsynopses)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$cmdsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbfunclist')">
+ <xsl:call-template name="pi.dbfunclist"/>
+</xsl:template>
+<xsl:template name="process.funcsynopsis.list">
+ <xsl:param name="funcsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($funcsynopses)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$funcsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbhtml-include')">
+ <xsl:call-template name="pi.dbhtml-include"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl
new file mode 100644
index 0000000..cabfd91
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl
@@ -0,0 +1,615 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="exsl cf ng db exslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 8596 2010-03-20 04:36:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)&gt;0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1 or self::sect2 or self::sect3 or self::sect4 or self::sect5 or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="$profiled-nodes"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="generate.css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |sect1|sect2|sect3|sect4|sect5 |section |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon" mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index" mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl
new file mode 100644
index 0000000..02920b1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl
@@ -0,0 +1,52 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ version="1.0"
+ exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: profile-chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="profile-chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl
new file mode 100644
index 0000000..45e55f2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl
@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt exslt" version="1.0">
+
+<xsl:output method="html" encoding="ISO-8859-1" indent="no"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8783 2010-07-28 10:59:39Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'html'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes">
+ <xsl:attribute name="bgcolor">white</xsl:attribute>
+ <xsl:attribute name="text">black</xsl:attribute>
+ <xsl:attribute name="link">#0000FF</xsl:attribute>
+ <xsl:attribute name="vlink">#840084</xsl:attribute>
+ <xsl:attribute name="alink">#0000FF</xsl:attribute>
+ <xsl:if test="starts-with($writing.mode, 'rl')">
+ <xsl:attribute name="dir">rtl</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <!-- Insert links to CSS files or insert literal style elements -->
+ <xsl:call-template name="generate.css"/>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made" href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$css.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0 and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>
+// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>
+var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();
+</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+
+ <!-- Generate any css files only once, not once per chunk -->
+ <xsl:call-template name="generate.css.files"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl
new file mode 100644
index 0000000..325b8b1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: profile-onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="profile-chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl
new file mode 100644
index 0000000..3bf35e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl
@@ -0,0 +1,437 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: qandaset.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="qandaset">
+ <xsl:variable name="title" select="(blockinfo/title|info/title|title)[1]"/>
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title'
+ and local-name(.) != 'titleabbrev'
+ and local-name(.) != 'qandadiv'
+ and local-name(.) != 'qandaentry']"/>
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="$title"/>
+ <xsl:if test="not($title)">
+ <!-- id is output on title if there is one -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="((contains($toc.params, 'toc') and $toc != '0') or $toc = '1')
+ and not(ancestor::answer and not($qanda.nested.in.toc=0))">
+ <xsl:call-template name="process.qanda.toc"/>
+ </xsl:if>
+ <xsl:apply-templates select="$preamble"/>
+ <xsl:call-template name="process.qandaset"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo/title|
+ qandaset/info/title|
+ qandaset/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qanda.section.level"/>
+ </xsl:variable>
+ <xsl:element name="h{string(number($qalevel)+1)}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo|qandaset/info">
+ <!-- what should this template really do? -->
+ <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="qandadiv">
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title'
+ and local-name(.) != 'titleabbrev'
+ and local-name(.) != 'qandadiv'
+ and local-name(.) != 'qandaentry']"/>
+
+ <xsl:if test="blockinfo/title|info/title|title">
+ <tr class="qandadiv">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:apply-templates select="(blockinfo/title|info/title|title)[1]"/>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="(contains($toc.params, 'toc') and $toc != '0') or $toc = '1'">
+ <tr class="toc">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:call-template name="process.qanda.toc"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="$preamble">
+ <tr class="toc">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:apply-templates select="$preamble"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:apply-templates select="qandadiv|qandaentry"/>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title|
+ qandadiv/info/title|
+ qandadiv/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+
+ <xsl:element name="h{string(number($qalevel)+1)}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ <xsl:if test="$qandadiv.autolabel != 0">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaentry">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="question">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <tr>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:variable name="label.content">
+ <xsl:apply-templates select="." mode="qanda.label"/>
+ </xsl:variable>
+
+ <xsl:if test="string-length($label.content) &gt; 0">
+ <p><b>
+ <xsl:copy-of select="$label.content"/>
+ </b></p>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'none' and not(label)">
+ <b><xsl:apply-templates select="*[local-name(.) != 'label']"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[local-name(.) != 'label']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="*" mode="qanda.defaultlabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question" mode="qanda.label">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="contains($deflabel, 'number') and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="answer">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <tr class="{local-name(.)}">
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:call-template name="anchor"/>
+ <xsl:variable name="answer.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($answer.label) &gt; 0">
+ <p><b>
+ <xsl:copy-of select="$answer.label"/>
+ </b></p>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates select="*[local-name(.) != 'label'
+ and local-name(.) != 'qandaentry']"/>
+ <!-- * handle nested answer/qandaentry instances -->
+ <!-- * (bug 1509043 from Daniel Leidert) -->
+ <xsl:if test="descendant::question">
+ <xsl:call-template name="process.qandaset"/>
+ </xsl:if>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="answer" mode="qanda.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+</xsl:template>
+
+<xsl:template match="label">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qanda.toc">
+ <!-- * if user wants nested qandaset and qandaentry in main Qandaset TOC, -->
+ <!-- * then don't also include the nested stuff in the sub TOCs -->
+ <dl>
+ <xsl:apply-templates select="qandadiv" mode="qandatoc.mode"/>
+ <xsl:apply-templates select="qandaset|qandaentry" mode="qandatoc.mode"/>
+ </dl>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="qandatoc.mode">
+ <dt><xsl:apply-templates select="title" mode="qandatoc.mode"/></dt>
+ <dd><xsl:call-template name="process.qanda.toc"/></dd>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title|
+ qandadiv/info/title|
+ qandadiv/title" mode="qandatoc.mode">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="div.label">
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($div.label) != 0">
+ <xsl:copy-of select="$div.label"/>
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="qandatoc.mode">
+ <xsl:for-each select="qandaentry">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="qandatoc.mode">
+ <xsl:apply-templates select="question" mode="qandatoc.mode"/>
+</xsl:template>
+
+<xsl:template match="question" mode="qandatoc.mode">
+ <xsl:variable name="firstch">
+ <!-- Use a titleabbrev or title if available -->
+ <xsl:choose>
+ <xsl:when test="../blockinfo/titleabbrev">
+ <xsl:apply-templates select="../blockinfo/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../blockinfo/title">
+ <xsl:apply-templates select="../blockinfo/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/titleabbrev">
+ <xsl:apply-templates select="../info/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../titleabbrev">
+ <xsl:apply-templates select="../titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/title">
+ <xsl:apply-templates select="../info/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../title">
+ <xsl:apply-templates select="../title[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <dt>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="contains($deflabel,'number') and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select="$firstch"/>
+ </a>
+ </dt>
+ <!-- * include nested qandaset/qandaentry in TOC if user wants it -->
+ <xsl:if test="not($qanda.nested.in.toc = 0)">
+ <xsl:apply-templates select="following-sibling::answer" mode="qandatoc.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="answer" mode="qandatoc.mode">
+ <xsl:if test="descendant::question">
+ <dd>
+ <xsl:call-template name="process.qanda.toc"/>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qandaset">
+
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <xsl:variable name="label-width">
+ <xsl:call-template name="pi.dbhtml_label-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <table border="0" width="100%" summary="Q and A Set">
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <col align="{$direction.align.start}">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$label-width != ''">
+ <xsl:value-of select="$label-width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1%</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </col>
+ <col/>
+ <tbody>
+ <xsl:apply-templates select="qandaentry|qandadiv"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="no.wrapper.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl
new file mode 100644
index 0000000..8eaf768
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl
@@ -0,0 +1,299 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="reference">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="reference.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="reference" mode="division.number">
+ <xsl:number from="book" count="reference" format="I."/>
+</xsl:template>
+
+<xsl:template match="reference/docinfo"></xsl:template>
+<xsl:template match="reference/referenceinfo"></xsl:template>
+<xsl:template match="reference/title"></xsl:template>
+<xsl:template match="reference/subtitle"></xsl:template>
+<xsl:template match="reference/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="refentry.title">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="refmeta" select="$node//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select="$node//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="title"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1 class="title">
+ <xsl:copy-of select="$title"/>
+ </h1>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$refentry.separator != 0 and preceding-sibling::refentry">
+ <div class="refentry.separator">
+ <hr/>
+ </div>
+ </xsl:if>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="refentry.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refentry/docinfo|refentry/refentryinfo"></xsl:template>
+<xsl:template match="refentry/info"></xsl:template>
+
+<xsl:template match="refentrytitle|refname|refdescriptor" mode="title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refmeta">
+</xsl:template>
+
+<xsl:template match="manvolnum">
+ <xsl:if test="$refentry.xref.manvolnum != 0">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refmiscinfo">
+</xsl:template>
+
+<xsl:template match="refentrytitle">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h2>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h2>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="refname">
+ <xsl:if test="not(preceding-sibling::refdescriptor)">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::refname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refpurpose">
+ <xsl:if test="node()">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">em-dash</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refdescriptor">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refclass">
+ <xsl:if test="$refclass.suppress = 0">
+ <b>
+ <xsl:if test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </b>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+ <h2>
+ <xsl:choose>
+ <xsl:when test="refsynopsisdiv/title|title">
+ <xsl:apply-templates select="(refsynopsisdiv/title|title)[1]"
+ mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsynopsisdivinfo"></xsl:template>
+
+<xsl:template match="refsynopsisdiv/title">
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv/title" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refsection|refsect1|refsect2|refsect3">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <!-- pick up info title -->
+ <xsl:apply-templates select="(title|info/title)[1]"/>
+ <xsl:apply-templates select="node()[not(self::title) and not(self::info)]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsection/title|refsection/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <xsl:variable name="level" select="count(ancestor-or-self::refsection)"/>
+ <xsl:variable name="refsynopsisdiv">
+ <xsl:text>0</xsl:text>
+ <xsl:if test="ancestor::refsynopsisdiv">1</xsl:if>
+ </xsl:variable>
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="$level+$refsynopsisdiv &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level+1+$refsynopsisdiv"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="refsect1/title|refsect1/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="refsect2/title|refsect2/info/title">
+ <!-- the ID is output in the block.object call for refsect2 -->
+ <h3>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="refsect3/title|refsect3/info/title">
+ <!-- the ID is output in the block.object call for refsect3 -->
+ <h4>
+ <xsl:apply-templates/>
+ </h4>
+</xsl:template>
+
+<xsl:template match="refsectioninfo|refsection/info"></xsl:template>
+<xsl:template match="refsect1info|refsect1/info"></xsl:template>
+<xsl:template match="refsect2info|refsect2/info"></xsl:template>
+<xsl:template match="refsect3info|refsect3/info"></xsl:template>
+
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl
new file mode 100644
index 0000000..4278d2f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl
@@ -0,0 +1,615 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: sections.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="section">
+ <xsl:variable name="depth" select="count(ancestor::section)+1"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $depth &lt;= $generate.section.toc.level">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="section.title">
+ <!-- the context node should be the title of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="renderas">
+ <xsl:choose>
+ <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="$renderas != ''">
+ <xsl:value-of select="$renderas"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="level" select="$level"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section/title
+ |section/info/title
+ |sectioninfo/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect1">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 1">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect1/title
+ |sect1/info/title
+ |sect1info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect2">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 2">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect2/title
+ |sect2/info/title
+ |sect2info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect3">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 3">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect3/title
+ |sect3/info/title
+ |sect3info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect4">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 4">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect4/title
+ |sect4/info/title
+ |sect4info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect5">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 5">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect5/title
+ |sect5/info/title
+ |sect5info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="simplesect">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplesect.titlepage"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="simplesect/title|simplesect/info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="section/title"></xsl:template>
+<xsl:template match="section/titleabbrev"></xsl:template>
+<xsl:template match="section/subtitle"></xsl:template>
+<xsl:template match="sectioninfo"></xsl:template>
+<xsl:template match="section/info"></xsl:template>
+
+<xsl:template match="sect1/title"></xsl:template>
+<xsl:template match="sect1/titleabbrev"></xsl:template>
+<xsl:template match="sect1/subtitle"></xsl:template>
+<xsl:template match="sect1info"></xsl:template>
+<xsl:template match="sect1/info"></xsl:template>
+
+<xsl:template match="sect2/title"></xsl:template>
+<xsl:template match="sect2/subtitle"></xsl:template>
+<xsl:template match="sect2/titleabbrev"></xsl:template>
+<xsl:template match="sect2info"></xsl:template>
+<xsl:template match="sect2/info"></xsl:template>
+
+<xsl:template match="sect3/title"></xsl:template>
+<xsl:template match="sect3/subtitle"></xsl:template>
+<xsl:template match="sect3/titleabbrev"></xsl:template>
+<xsl:template match="sect3info"></xsl:template>
+<xsl:template match="sect3/info"></xsl:template>
+
+<xsl:template match="sect4/title"></xsl:template>
+<xsl:template match="sect4/subtitle"></xsl:template>
+<xsl:template match="sect4/titleabbrev"></xsl:template>
+<xsl:template match="sect4info"></xsl:template>
+<xsl:template match="sect4/info"></xsl:template>
+
+<xsl:template match="sect5/title"></xsl:template>
+<xsl:template match="sect5/subtitle"></xsl:template>
+<xsl:template match="sect5/titleabbrev"></xsl:template>
+<xsl:template match="sect5info"></xsl:template>
+<xsl:template match="sect5/info"></xsl:template>
+
+<xsl:template match="simplesect/title"></xsl:template>
+<xsl:template match="simplesect/subtitle"></xsl:template>
+<xsl:template match="simplesect/titleabbrev"></xsl:template>
+<xsl:template match="simplesect/info"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="section.heading">
+ <xsl:param name="section" select="."/>
+ <xsl:param name="level" select="1"/>
+ <xsl:param name="allow-anchors" select="1"/>
+ <xsl:param name="title"/>
+ <xsl:param name="class" select="'title'"/>
+
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- Make sure the subtitle doesn't get the same id as the title -->
+ <xsl:when test="self::subtitle">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <!-- highest valid HTML H level is H6; so anything nested deeper
+ than 5 levels down just becomes H6 -->
+ <xsl:when test="$level &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}">
+ <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+ <xsl:if test="$css.decoration != '0'">
+ <xsl:if test="$hlevel&lt;3">
+ <xsl:attribute name="style">clear: both</xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="$allow-anchors != 0 and $generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$section"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$generate.id.attributes != 0 and not(local-name(.) = 'appendix')">
+ <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$title"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bridgehead">
+ <xsl:variable name="container"
+ select="(ancestor::appendix
+ |ancestor::article
+ |ancestor::bibliography
+ |ancestor::chapter
+ |ancestor::glossary
+ |ancestor::glossdiv
+ |ancestor::index
+ |ancestor::partintro
+ |ancestor::preface
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::section
+ |ancestor::setindex
+ |ancestor::simplesect)[last()]"/>
+
+ <xsl:variable name="clevel">
+ <xsl:choose>
+ <xsl:when test="local-name($container) = 'appendix'
+ or local-name($container) = 'chapter'
+ or local-name($container) = 'article'
+ or local-name($container) = 'bibliography'
+ or local-name($container) = 'glossary'
+ or local-name($container) = 'index'
+ or local-name($container) = 'partintro'
+ or local-name($container) = 'preface'
+ or local-name($container) = 'setindex'">1</xsl:when>
+ <xsl:when test="local-name($container) = 'glossdiv'">
+ <xsl:value-of select="count(ancestor::glossdiv)+1"/>
+ </xsl:when>
+ <xsl:when test="local-name($container) = 'sect1'
+ or local-name($container) = 'sect2'
+ or local-name($container) = 'sect3'
+ or local-name($container) = 'sect4'
+ or local-name($container) = 'sect5'
+ or local-name($container) = 'refsect1'
+ or local-name($container) = 'refsect2'
+ or local-name($container) = 'refsect3'
+ or local-name($container) = 'section'
+ or local-name($container) = 'simplesect'">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">2</xsl:when>
+ <xsl:when test="@renderas = 'sect2'">3</xsl:when>
+ <xsl:when test="@renderas = 'sect3'">4</xsl:when>
+ <xsl:when test="@renderas = 'sect4'">5</xsl:when>
+ <xsl:when test="@renderas = 'sect5'">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$clevel + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="h{$hlevel}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="section/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="simplesect/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect1/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect2/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect3/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect4/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect5/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template name="section.subtitle">
+ <!-- the context node should be the subtitle of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select=".."/>
+ <xsl:with-param name="allow-anchors" select="0"/>
+ <!-- subtitle heading level one higher than section level -->
+ <xsl:with-param name="level" select="$level + 1"/>
+ <xsl:with-param name="class" select="'subtitle'"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="0"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl
new file mode 100644
index 0000000..be19756
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl
@@ -0,0 +1,1554 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp "&#160;">
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: synop.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- synopsis is in verbatim -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:if test="..//processing-instruction('dbcmdlist')">
+ <!-- * Placing a dbcmdlist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all cmdsynopsis instances -->
+ <!-- * that are descendants of that element; so for any -->
+ <!-- * cmdsynopsis that is a descendant of an element containing -->
+ <!-- * a dbcmdlist PI, we need to output an a@id instance so that -->
+ <!-- * we will have something to link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command">
+ <br/>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$sepchar"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$arg.or.sep"/>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <br/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <i>
+ <a href="#{@linkend}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates/>
+ </i>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <!-- You can't introduce another <p> here, because you're
+ already in a <p> from cmdsynopsis-->
+ <span>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <a name="{$id}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template match="funcsynopsis">
+ <xsl:if test="..//processing-instruction('dbfunclist')">
+ <!-- * Placing a dbfunclist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all funcsynopsis instances that -->
+ <!-- * are descendants of that element; so for any funcsynopsis that is -->
+ <!-- * a descendant of an element containing a dbfunclist PI, we need -->
+ <!-- * to output an a@id instance so that we will have something to -->
+ <!-- * link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsisinfo">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </pre>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype -->
+<!--
+
+funcprototype ::= (funcdef,
+ (void|varargs|paramdef+))
+
+funcdef ::= (#PCDATA|type|replaceable|function)*
+
+paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
+-->
+
+<xsl:template match="funcprototype">
+ <xsl:variable name="html-style">
+ <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$html-style != ''">
+ <xsl:value-of select="$html-style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!-- * 2008-02-17. the code no longer relies on the funcsynopsis.tabular.threshold -->
+<!-- * param at all (the stuff below has been commented out since mid -->
+<!-- * 2006), so I completely removed the funcsynopsis.tabular.threshold param -->
+<!-- * .. MikeSmith -->
+<!--
+ <xsl:variable name="tabular-p"
+ select="$funcsynopsis.tabular.threshold &gt; 0
+ and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
+-->
+
+ <xsl:variable name="tabular-p" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$style = 'kr' and $tabular-p">
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'kr'">
+ <xsl:apply-templates select="." mode="kr-nontabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'ansi' and $tabular-p">
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, non-tabular -->
+
+<xsl:template match="funcprototype" mode="kr-nontabular">
+ <p>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:if test="paramdef">
+ <br/>
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </xsl:if>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-nontabular">
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-nontabular">
+ <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
+ <xsl:if test="preceding-sibling::paramdef"><br/></xsl:if>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, tabular -->
+
+<xsl:template match="funcprototype" mode="kr-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"
+ class="funcprototype-table"
+ >
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <xsl:if test="paramdef">
+ <div class="paramdef-list">
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </div>
+ </xsl:if>
+ <div class="funcprototype-spacer">&#160;</div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-tabular">
+ <td>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular">
+ <td>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <code>
+ <xsl:copy-of select="$type"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:when test="funcparams">
+ <td colspan="2">
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter"
+ mode="kr-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, non-tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-nontabular">
+ <p>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-nontabular">
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-nontabular">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-nontabular">
+ <code>(</code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"
+ class="funcprototype-table"
+ >
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <div class="funcprototype-spacer">&#160;</div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-tabular">
+ <td>
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <td>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-tabular">
+ <code>(</code>
+ <xsl:apply-templates/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<xsl:template match="classsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |constructorsynopsis
+ |destructorsynopsis">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$language='java' or $language='Java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl' or $language='Perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl' or $language='IDL'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+ </xsl:message>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language"
+ select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="parent::classsynopsis
+ or (following-sibling::fieldsynopsis
+ |following-sibling::methodsynopsis
+ |following-sibling::constructorsynopsis
+ |following-sibling::destructorsynopsis)">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- ===== Java ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="java">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="java">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="java">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>,</xsl:text>
+ <br/>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">&nbsp;</xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="java"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="decl">
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="cpp"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="idl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="idl"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;</xsl:text>
+ <br/>
+
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
+ <xsl:text>);</xsl:text>
+ <br/>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="perl"/>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="perl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- Used when not occurring as a child of classsynopsis -->
+<xsl:template match="ooclass|oointerface|ooexception">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
+<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
+<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
+<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
+<!-- * per-mode matches for those linking elements in order for them -->
+<!-- * to be processed as expected. -->
+
+<xsl:template match="link|olink|xref" mode="java">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="cpp">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="idl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="perl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl
new file mode 100644
index 0000000..405be13
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl
@@ -0,0 +1,1200 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table"
+ xmlns:xtbl="xalan://com.nwalsh.xalan.Table"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table"
+ exclude-result-prefixes="doc stbl xtbl lxslt ptbl"
+ version='1.0'>
+
+<xsl:include href="../common/table.xsl"/>
+
+<!-- ********************************************************************
+ $Id: table.xsl 8813 2010-08-09 21:18:23Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtbl"
+ functions="adjustColumnWidths"/>
+
+<xsl:template name="empty.table.cell">
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row
+ or ancestor-or-self::thead/following-sibling::tbody
+ or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="number($colnum) &gt;= ancestor::tgroup/@cols">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <td class="auto-generated">
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="border">
+ <xsl:param name="side" select="'left'"/>
+ <xsl:param name="padding" select="0"/>
+ <xsl:param name="style" select="$table.cell.border.style"/>
+ <xsl:param name="color" select="$table.cell.border.color"/>
+ <xsl:param name="thickness" select="$table.cell.border.thickness"/>
+
+ <!-- Note: Some browsers (mozilla) require at least a width and style. -->
+
+ <xsl:choose>
+ <xsl:when test="($thickness != ''
+ and $style != ''
+ and $color != '')
+ or ($thickness != ''
+ and $style != '')
+ or ($thickness != '')">
+ <!-- use the compound property if we can: -->
+ <!-- it saves space and probably works more reliably -->
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- we need to specify the styles individually -->
+ <xsl:if test="$thickness != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-width: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$style != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-style: </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$color != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-color: </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tgroup" name="tgroup">
+ <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'">
+ <xsl:message terminate="yes">
+ <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <table>
+ <xsl:choose>
+ <!-- If there's a textobject/phrase for the table summary, use it -->
+ <xsl:when test="../textobject/phrase">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="../textobject/phrase"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- If there's a <?dbhtml table-summary="foo"?> PI, use it for
+ the HTML table summary attribute -->
+ <xsl:when test="$summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$summary"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, if there's a title, use that -->
+ <xsl:when test="../title">
+ <xsl:attribute name="summary">
+ <!-- This screws up on inline markup and footnotes, oh well... -->
+ <xsl:value-of select="string(../title)"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, forget the whole idea -->
+ <xsl:otherwise><!-- nevermind --></xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$cellspacing != '' or $html.cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:choose>
+ <xsl:when test="$cellspacing != ''">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellspacing"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != '' or $html.cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:choose>
+ <xsl:when test="$cellpadding != ''">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellpadding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="../@pgwide=1 or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="width">100%</xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$table.borders.with.css != 0">
+ <xsl:choose>
+ <xsl:when test="../@frame='all' or (not(../@frame) and $default.table.frame='all')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='topbot' or (not(../@frame) and $default.table.frame='topbot')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='top' or (not(../@frame) and $default.table.frame='top')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='bottom' or (not(../@frame) and $default.table.frame='bottom')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='sides' or (not(../@frame) and $default.table.frame='sides')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='none'">
+ <xsl:attribute name="style">
+ <xsl:text>border: none;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:when test="../@frame='none' or (not(../@frame) and $default.table.frame='none') or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="border">0</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="colgroup">
+ <colgroup>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </colgroup>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:call-template name="pi.dbhtml_table-width">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$default.table.width != ''
+ or $explicit.table.width != ''">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="contains($table.width, '%')">
+ <xsl:value-of select="$table.width"/>
+ </xsl:when>
+ <xsl:when test="$use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:convertLength')">
+ <xsl:value-of select="stbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:convertLength')">
+ <xsl:value-of select="xtbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No convertLength function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:adjustColumnWidths')">
+ <xsl:copy-of select="stbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:adjustColumnWidths')">
+ <xsl:copy-of select="xtbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ptbl:adjustColumnWidths')">
+ <xsl:copy-of select="ptbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No adjustColumnWidths function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$colgroup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="thead"/>
+ <xsl:apply-templates select="tfoot"/>
+ <xsl:apply-templates select="tbody"/>
+
+ <xsl:if test=".//footnote|../title//footnote">
+ <tbody class="footnotes">
+ <tr>
+ <td colspan="{@cols}">
+ <xsl:apply-templates select=".//footnote|../title//footnote" mode="table.footnote.mode"/>
+ </td>
+ </tr>
+ </tbody>
+ </xsl:if>
+ </table>
+</xsl:template>
+
+<xsl:template match="tgroup/processing-instruction('dbhtml')">
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <!-- Suppress the table-summary PI -->
+ <xsl:if test="$summary = ''">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:value-of select="."/>
+ </xsl:processing-instruction>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="colspec"></xsl:template>
+
+<xsl:template match="spanspec"></xsl:template>
+
+<xsl:template match="thead|tfoot">
+ <xsl:element name="{local-name(.)}">
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <!-- recurse on rows only if @morerows is present -->
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'" />
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="tbody">
+ <tbody>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'" />
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </tbody>
+</xsl:template>
+
+<xsl:template match="row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($spans, '0')">
+ <xsl:call-template name="normal-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!--
+ <xsl:message>
+ <xsl:text>Ignoring row: </xsl:text>
+ <xsl:value-of select="$spans"/>
+ <xsl:text> = </xsl:text>
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:message>
+ -->
+
+ <xsl:if test="normalize-space(.//text()) != ''">
+ <xsl:message>Warning: overlapped row contains content!</xsl:message>
+ </xsl:if>
+
+ <tr><xsl:comment> This row intentionally left blank </xsl:comment></tr>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="normal-row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <xsl:variable name="row-height">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_row-height"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="class">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_class"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="tgroup" count="row"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$row-height != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$row-height"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$class != ''">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$class"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:if test="@rowsep = 1 and following-sibling::row">
+ <xsl:attribute name="style">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="(entry|entrytbl)[1]">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </tr>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:if test="following-sibling::row">
+ <xsl:variable name="nextspans">
+ <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans" select="$nextspans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="entry">
+ <xsl:param name="col">
+ <xsl:choose>
+ <xsl:when test="@revisionflag">
+ <xsl:number from="row"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="cellgi">
+ <xsl:choose>
+ <xsl:when test="ancestor::thead">th</xsl:when>
+ <xsl:when test="ancestor::tfoot">th</xsl:when>
+ <xsl:when test="ancestor::tbody and
+ (ancestor::table[@rowheader = 'firstcol'] or
+ ancestor::informaltable[@rowheader = 'firstcol']) and
+ ancestor-or-self::entry[1][count(preceding-sibling::entry) = 0]">
+ <xsl:text>th</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>td</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="empty.cell" select="count(node()) = 0"/>
+
+ <xsl:variable name="named.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:choose>
+ <xsl:when test="$named.colnum &gt; 0">
+ <xsl:value-of select="$named.colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$col"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="ancestor::entrytbl
+ and not (ancestor-or-self::row[1]/following-sibling::row)
+ and not (ancestor::thead)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row
+ or ancestor-or-self::thead/following-sibling::tbody
+ or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="@morerows and not(@morerows &lt;
+ count(ancestor-or-self::row[1]/following-sibling::row))">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="$following.spans = ''">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="valign">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'valign'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="align">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'align'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="char">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'char'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="charoff">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'charoff'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:call-template name="empty.table.cell"/>
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:element name="{$cellgi}">
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="locale.html.attributes"/>
+ <xsl:if test="$entry.propagates.style != 0 and @role">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:if test="$show.revisionflag and @revisionflag">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@revisionflag"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@morerows &gt; 0">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="1+@morerows"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$entry.colspan &gt; 1">
+ <xsl:attribute name="colspan">
+ <xsl:value-of select="$entry.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$valign != ''">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="$valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$char != ''">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$charoff != ''">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="not(preceding-sibling::*) and
+ (ancestor::row[1]/@id or ancestor::row[1]/@xml:id)">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::row[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$empty.cell">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:when test="self::entrytbl">
+ <xsl:call-template name="tgroup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="sentry" mode="span">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col + 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="count" select="$entry.colspan"/>
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="@morerows">
+ <xsl:value-of select="@morerows"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>:</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]"
+ mode="span">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$count &gt; $cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.col">
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <col/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <col>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth
+ and $use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="normalize-space($colspec/@colwidth) = '*'">
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- pass through to HTML if no * in colspecs -->
+ <xsl:when test="$colspec/@colwidth and
+ not($colspec/parent::*/colspec/@colwidth[contains(.,'*')])">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="normalize-space($colspec/@colwidth) = '*'">
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$colspec/@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$colspec/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Suggested by Pavel ZAMPACH <zampach@nemcb.cz> -->
+ <xsl:when test="$colspecs/ancestor::tgroup/@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$colspecs/ancestor::tgroup/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$colspec/@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$colspec/@char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$colspec/@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$colspec/@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$colspec/@colname">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$colspec/@colname"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="colspec.colwidth">
+ <!-- when this macro is called, the current context must be an entry -->
+ <xsl:param name="colname"></xsl:param>
+ <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup -->
+ <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colname=$colname">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colspec.colwidth">
+ <xsl:with-param name="colname" select="$colname"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="tr.attributes">
+ <xsl:param name="row" select="."/>
+ <xsl:param name="rownum" select="0"/>
+
+ <!-- by default, do nothing. But you might want to say:
+
+ <xsl:if test="$rownum mod 2 = 0">
+ <xsl:attribute name="class">oddrow</xsl:attribute>
+ </xsl:if>
+
+ -->
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl
new file mode 100644
index 0000000..01da940
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: task.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="task">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::title
+ or self::titleabbrev)]"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="task/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="tasksummary">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="tasksummary/title"/>
+
+<xsl:template match="taskprerequisites">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskprerequisites/title"/>
+
+<xsl:template match="taskrelated">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskrelated/title"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml
new file mode 100644
index 0000000..cae5160
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml
@@ -0,0 +1,708 @@
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="article" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="set" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="book" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="part" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="division.title"
+ param:node="ancestor-or-self::part[1]"/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="partintro" t:wrapper="div">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="reference" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refentry" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+<!-- uncomment this if you want refentry titlepages
+ <title t:force="1"
+ t:named-template="refentry.title"
+ param:node="ancestor-or-self::refentry[1]"/>
+-->
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator/>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::dedication[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="acknowledgements" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::acknowledgements[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="preface" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="chapter" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="appendix" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="section" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect1" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect2" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect3" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect4" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect5" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="simplesect" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::bibliography[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="glossary" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::glossary[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="index" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::index[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="setindex" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::setindex[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+<t:titlepage t:element="sidebar" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-template="formal.object.heading"
+ param:object="ancestor-or-self::sidebar[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+</t:templates>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl
new file mode 100644
index 0000000..a025c43
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl
@@ -0,0 +1,3817 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl-->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="book.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/abstract"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <div>
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refentry.titlepage.before.recto"/>
+ <xsl:call-template name="refentry.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refentry.titlepage.before.verso"/>
+ <xsl:call-template name="refentry.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="refentry.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.recto">
+ <div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::acknowledgements[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="acknowledgementsinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="acknowledgementsinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.recto"/>
+ <xsl:call-template name="acknowledgements.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.verso"/>
+ <xsl:call-template name="acknowledgements.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="acknowledgements.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="acknowledgements.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
+<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
+<xsl:call-template name="formal.object.heading">
+<xsl:with-param name="object" select="ancestor-or-self::sidebar[1]"/>
+</xsl:call-template>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl
new file mode 100644
index 0000000..3c285f0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl
@@ -0,0 +1,1047 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: titlepage.xsl 8816 2010-08-10 11:56:35Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:attribute-set name="book.titlepage.recto.style"/>
+<xsl:attribute-set name="book.titlepage.verso.style"/>
+
+<xsl:attribute-set name="article.titlepage.recto.style"/>
+<xsl:attribute-set name="article.titlepage.verso.style"/>
+
+<xsl:attribute-set name="set.titlepage.recto.style"/>
+<xsl:attribute-set name="set.titlepage.verso.style"/>
+
+<xsl:attribute-set name="part.titlepage.recto.style"/>
+<xsl:attribute-set name="part.titlepage.verso.style"/>
+
+<xsl:attribute-set name="partintro.titlepage.recto.style"/>
+<xsl:attribute-set name="partintro.titlepage.verso.style"/>
+
+<xsl:attribute-set name="reference.titlepage.recto.style"/>
+<xsl:attribute-set name="reference.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refentry.titlepage.recto.style"/>
+<xsl:attribute-set name="refentry.titlepage.verso.style"/>
+
+<xsl:attribute-set name="dedication.titlepage.recto.style"/>
+<xsl:attribute-set name="dedication.titlepage.verso.style"/>
+
+<xsl:attribute-set name="acknowledgements.titlepage.recto.style"/>
+<xsl:attribute-set name="acknowledgements.titlepage.verso.style"/>
+
+<xsl:attribute-set name="preface.titlepage.recto.style"/>
+<xsl:attribute-set name="preface.titlepage.verso.style"/>
+
+<xsl:attribute-set name="chapter.titlepage.recto.style"/>
+<xsl:attribute-set name="chapter.titlepage.verso.style"/>
+
+<xsl:attribute-set name="appendix.titlepage.recto.style"/>
+<xsl:attribute-set name="appendix.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliography.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliography.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossary.titlepage.recto.style"/>
+<xsl:attribute-set name="glossary.titlepage.verso.style"/>
+
+<xsl:attribute-set name="index.titlepage.recto.style"/>
+<xsl:attribute-set name="index.titlepage.verso.style"/>
+
+<xsl:attribute-set name="setindex.titlepage.recto.style"/>
+<xsl:attribute-set name="setindex.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sidebar.titlepage.recto.style"/>
+<xsl:attribute-set name="sidebar.titlepage.verso.style"/>
+
+<xsl:attribute-set name="section.titlepage.recto.style"/>
+<xsl:attribute-set name="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect1.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect1.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect2.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect2.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect3.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect3.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect4.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect4.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect5.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect5.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="simplesect.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="simplesect.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
+<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="titlepage.mode">
+ <!-- if an element isn't found in this mode, try the default mode -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="abbrev" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="abstract" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$abstract.notitle.enabled = 0">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="address" mode="titlepage.mode">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author|editor" mode="titlepage.mode">
+ <xsl:call-template name="credits.div"/>
+</xsl:template>
+
+<xsl:template name="credits.div">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="self::editor[position()=1] and not($editedby.enabled = 0)">
+ <h4 class="editedby"><xsl:call-template name="gentext.edited.by"/></h4>
+ </xsl:if>
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="orgname">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h3>
+ <xsl:if test="not($contrib.inline.enabled = 0)">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates mode="titlepage.mode" select="email"/>
+ <xsl:if test="not($blurb.on.titlepage.enabled = 0)">
+ <xsl:choose>
+ <xsl:when test="$contrib.inline.enabled = 0">
+ <xsl:apply-templates mode="titlepage.mode"
+ select="contrib|authorblurb|personblurb"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"
+ select="authorblurb|personblurb"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::refentryinfo">
+ <h2>Authors</h2>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="collab" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="confdates" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="titlepage.mode">
+ <!-- suppress -->
+</xsl:template>
+
+<xsl:template match="contractnum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="not($contrib.inline.enabled = 0)">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span><xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p><xsl:apply-templates mode="titlepage.mode"/></p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="copyright" mode="titlepage.mode">
+
+ <xsl:if test="generate-id() = generate-id(//refentryinfo/copyright[1])
+ and ($stylesheet.result.type = 'html' or $stylesheet.result.type = 'xhtml')">
+ <h2>Copyright</h2>
+ </xsl:if>
+
+ <p>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="year" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="holder" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="titlepage.mode">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="titlepage.mode">
+ <p>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Edition'"/>
+ </xsl:call-template>
+ </p>
+</xsl:template>
+
+<xsl:template match="email" mode="titlepage.mode">
+ <!-- use the normal e-mail handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="firstname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="graphic" mode="titlepage.mode">
+ <!-- use the normal graphic handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="honorific" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioid" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="itermset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="keywordset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="titlepage.mode">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.legalnotice.link != 0">
+
+ <!-- Compute name of legalnotice file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <a name="{$id}"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="legalnotice/title" mode="titlepage.mode">
+ <p class="legalnotice-title"><b><xsl:apply-templates/></b></p>
+</xsl:template>
+
+<xsl:template match="lineage" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modespec" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="titlepage.mode">
+ <xsl:if test="preceding-sibling::*[1][self::orgname]">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.mode">
+<xsl:choose>
+ <xsl:when test="not($othercredit.like.author.enabled = 0)">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="credits.div"/>
+ </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.othercredits">
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="othername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="productname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publisher" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publishername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="titlepage.mode">
+ <xsl:variable name="numcols">
+ <xsl:choose>
+ <xsl:when test=".//authorinitials|.//author">3</xsl:when>
+ <xsl:otherwise>2</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">RevHistory</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="contents">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <table border="1" width="100%" summary="Revision history">
+ <tr>
+ <th align="{$direction.align.start}" valign="top" colspan="{$numcols}">
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </b>
+ </th>
+ </tr>
+ <xsl:apply-templates mode="titlepage.mode">
+ <xsl:with-param name="numcols" select="$numcols"/>
+ </xsl:apply-templates>
+ </table>
+ </div>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.revhistory.link != 0">
+
+ <!-- Compute name of revhistory file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="is.ln" select="false()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title">
+ <xsl:value-of select="$title"/>
+ <xsl:if test="../../title">
+ <xsl:value-of select="concat(' (', ../../title, ')')"/>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:copy-of select="$contents"/>
+ </body>
+ </html>
+ <xsl:text>&#x0a;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="revhistory/revision" mode="titlepage.mode">
+ <xsl:param name="numcols" select="'3'"/>
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}">
+ <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="$revauthor">
+ <td align="{$direction.align.start}">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:when>
+ <xsl:when test="$numcols &gt; 2">
+ <td>&#160;</td>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="{$direction.align.start}" colspan="{$numcols}">
+ <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/date" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/author" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revremark" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subjectset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="subtitle" mode="titlepage.mode">
+ <h2>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="surname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="titlepage.mode">
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes = 0">
+ <a name="{$id}"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h1>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="titlepage.mode">
+ <!-- nop; title abbreviations don't belong on the title page! -->
+</xsl:template>
+
+<xsl:template match="volumenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<!-- This template computes the filename for legalnotice and revhistory chunks -->
+<xsl:template name="ln.or.rh.filename">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="is.ln" select="true()"/>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- 1. If there is a dbhtml_filename PI, use that -->
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <xsl:when test="($node/@id or $node/@xml:id) and not($use.id.as.filename = 0)">
+ <!-- * 2. If this legalnotice/revhistory has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" or "rh-" to it) -->
+ <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:when test="not ($node/@id or $node/@xml:id) or $use.id.as.filename = 0">
+ <!-- * 3. Otherwise, if this legalnotice/revhistory does not have an ID, or -->
+ <!-- * if $use.id.as.filename = 0 -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:value-of select="generate-id($node)"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend a -->
+ <!-- * prefix to it, and use that as the basename for the file -->
+ <xsl:choose>
+ <xsl:when test="$is.ln">
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('rh-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl
new file mode 100644
index 0000000..d8c1be5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl
@@ -0,0 +1,350 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: toc.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set/toc | book/toc | part/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and
+ ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to parent element -->
+ <xsl:for-each select="parent::*">
+ <xsl:choose>
+ <xsl:when test="self::set">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::book">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::part">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/toc | appendix/toc | preface/toc | article/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and
+ ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="title"/>
+ <dl>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ </dl>
+ </div>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section/toc
+ |sect1/toc
+ |sect2/toc
+ |sect3/toc
+ |sect4/toc
+ |sect5/toc">
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and
+ ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="title"/>
+ <dl>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ </dl>
+ </div>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p"
+ select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tocpart|tocchap
+ |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:variable name="sub-toc">
+ <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dd>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2|
+ toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </dd>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2|
+ toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:apply-templates select="tocentry[position() != last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ </dt>
+ <xsl:copy-of select="$sub-toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ <xsl:copy-of select="$sub-toc"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry|tocdiv|lotentry|tocfront|tocback">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="tocentry-content"/>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="tocentry-content"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry[position() = last()]" priority="2">
+ <xsl:call-template name="tocentry-content"/>
+</xsl:template>
+
+<xsl:template name="tocentry-content">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="@linkend">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="toc/title">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="toc/subtitle">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="toc/titleabbrev">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- A lot element must have content, because there is no attribute
+ to select what kind of list should be generated -->
+<xsl:template match="book/lot | part/lot">
+ <!-- Don't generate a page sequence unless there is content -->
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates />
+ </div>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/lot | appendix/lot | preface/lot | article/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates />
+ </div>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section/lot
+ |sect1/lot
+ |sect2/lot
+ |sect3/lot
+ |sect4/lot
+ |sect5/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.empty.lot">
+ <!-- An empty lot element does not provide any information to indicate
+ what should be included in it. You can customize this
+ template to generate a lot based on @role or something -->
+ <xsl:message>
+ <xsl:text>Warning: don't know what to generate for </xsl:text>
+ <xsl:text>lot that has no children.</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+<xsl:template match="lot/title">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="lot/subtitle">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="lot/titleabbrev">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl
new file mode 100644
index 0000000..8c7b263
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl
@@ -0,0 +1,410 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
+ xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="sverb xverb lxslt exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: verbatim.xsl 8807 2010-08-09 18:57:41Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- XSLTHL highlighting is turned off by default. See highlighting/README
+ for instructions on how to turn on XSLTHL -->
+<xsl:template name="apply-highlighting">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<lxslt:component prefix="xverb"
+ functions="numberLines"/>
+
+<xsl:template match="programlisting|screen|synopsis">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="div.element">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">div</xsl:when>
+ <xsl:otherwise>pre</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$shade.verbatim != 0">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$div.element}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$div.element}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="literallayout">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:if test="$shade.verbatim != 0 and @class='monospaced'">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$rtf"/>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="address">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="number.rtf.lines">
+ <xsl:param name="rtf" select="''"/>
+ <xsl:param name="pi.context" select="."/>
+
+ <!-- Save the global values -->
+ <xsl:variable name="global.linenumbering.everyNth"
+ select="$linenumbering.everyNth"/>
+
+ <xsl:variable name="global.linenumbering.separator"
+ select="$linenumbering.separator"/>
+
+ <xsl:variable name="global.linenumbering.width"
+ select="$linenumbering.width"/>
+
+ <!-- Extract the <?dbhtml linenumbering.*?> PI values -->
+ <xsl:variable name="pi.linenumbering.everyNth">
+ <xsl:call-template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.separator">
+ <xsl:call-template name="pi.dbhtml_linenumbering.separator">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.width">
+ <xsl:call-template name="pi.dbhtml_linenumbering.width">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Construct the 'in-context' values -->
+ <xsl:variable name="linenumbering.everyNth">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.everyNth != ''">
+ <xsl:value-of select="$pi.linenumbering.everyNth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.everyNth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.separator">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.separator != ''">
+ <xsl:value-of select="$pi.linenumbering.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.width">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.width != ''">
+ <xsl:value-of select="$pi.linenumbering.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.startinglinenumber">
+ <xsl:choose>
+ <xsl:when test="$pi.context/@startinglinenumber">
+ <xsl:value-of select="$pi.context/@startinglinenumber"/>
+ </xsl:when>
+ <xsl:when test="$pi.context/@continuation='continues'">
+ <xsl:variable name="lastLine">
+ <xsl:choose>
+ <xsl:when test="$pi.context/self::programlisting">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::programlisting[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::screen">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::screen[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::literallayout">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::literallayout[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::address">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::address[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::synopsis">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::synopsis[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected verbatim environment: </xsl:text>
+ <xsl:value-of select="local-name($pi.context)"/>
+ </xsl:message>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$lastLine + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:numberLines')">
+ <xsl:copy-of select="sverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:numberLines')">
+ <xsl:copy-of select="xverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No numberLines function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim">
+ <xsl:param name="rtf"/>
+
+ <!-- I want to make this RTF verbatim. There are two possibilities: either
+ I have access to the exsl:node-set extension function and I can "do it right"
+ or I have to rely on CSS. -->
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($rtf)" mode="make.verbatim.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="white-space: pre;">
+ <xsl:copy-of select="$rtf"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================== -->
+
+<xsl:template name="lastLineNumber">
+ <xsl:param name="listings"/>
+ <xsl:param name="number" select="0"/>
+
+ <xsl:variable name="lines">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="string($listings[1])"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($listings)">
+ <xsl:value-of select="$number"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@startinglinenumber">
+ <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@continuation='continues'">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="number" select="$number + $lines"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lines"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="countLines">
+ <xsl:param name="listing"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($listing, '&#10;')">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="substring-after($listing, '&#10;')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl
new file mode 100644
index 0000000..771bca5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl
@@ -0,0 +1,1377 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ exclude-result-prefixes="suwl exsl xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: xref.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- Use internal variable for olink xlink role for consistency -->
+<xsl:variable
+ name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="anchor">
+ <xsl:call-template name="anchor"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="xref" name="xref">
+ <xsl:param name="xhref" select="@xlink:href"/>
+ <!-- is the @xlink:href a local idref link? -->
+ <xsl:param name="xlink.idref">
+ <xsl:if test="starts-with($xhref,'#')
+ and (not(contains($xhref,'&#40;'))
+ or starts-with($xhref, '#xpointer&#40;id&#40;'))">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/>
+ <xsl:param name="linkend.targets" select="key('id',@linkend)"/>
+ <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/>
+
+ <xsl:variable name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$target">
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:apply-templates>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: xref linking to </xsl:text>
+ <xsl:value-of select="@linkend|@xlink:href"/>
+ <xsl:text> has no generated link text.</xsl:text>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- biblioref handled largely like an xref -->
+<!-- To be done: add support for begin, end, and units attributes -->
+<xsl:template match="biblioref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XRef to nonexistent id: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>???</xsl:text>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$target/title or $target/*/title">
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$target" mode="xref-title"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </a>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="endterm">
+ <!-- Process the children of the endterm element -->
+ <xsl:variable name="endterm">
+ <xsl:apply-templates select="child::node()"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="remove-ids">
+ <xsl:choose>
+ <!-- handle html or xhtml -->
+ <xsl:when test="local-name(.) = 'a'
+ and (namespace-uri(.) = ''
+ or namespace-uri(.) = 'http://www.w3.org/1999/xhtml')">
+ <xsl:choose>
+ <xsl:when test="(@name and count(@*) = 1)
+ or (@id and count(@*) = 1)
+ or (@xml:id and count(@*) = 1)
+ or (@xml:id and @name and count(@*) = 2)
+ or (@id and @name and count(@*) = 2)">
+ <xsl:message>suppress anchor</xsl:message>
+ <!-- suppress the whole thing -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'name' and local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of
+ select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:copy>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of
+ select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-to-prefix"/>
+<xsl:template match="*" mode="xref-to-suffix"/>
+
+<xsl:template match="*" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:if test="$verbose">
+ <xsl:message>
+ <xsl:text>Don't know what gentext to create for xref to: "</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>", ("</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>")</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>???</xsl:text>
+</xsl:template>
+
+<xsl:template match="title" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- if you xref to a title, xref to the parent... -->
+ <xsl:choose>
+ <!-- FIXME: how reliable is this? -->
+ <xsl:when test="contains(local-name(parent::*), 'info')">
+ <xsl:apply-templates select="parent::*[2]" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset
+ |biblioset|blockquote|calloutlist|caution|colophon
+ |constraintdef|formalpara|glossdiv|important|indexdiv
+ |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain
+ |msgrel|msgset|msgsub|note|orderedlist|partintro
+ |productionset|qandadiv|refsynopsisdiv|segmentedlist
+ |set|setindex|sidebar|tip|toc|variablelist|warning"
+ mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- catch-all for things with (possibly optional) titles -->
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="author|editor|othercredit|personname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name.list"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table|equation" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="procedure" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="task" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="dedication|acknowledgements|preface|chapter|appendix|article" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix">
+ <xsl:text>[</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix">
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:variable name="entry" select="$bib/bibliography/
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name($entry/*[1]) = 'abbrev'">
+ <xsl:apply-templates select="$entry/*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossary" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="(acronym|abbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossterm|firstterm" mode="xref-to">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="index" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="section|simplesect
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3|refsection" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="qandaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="question[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length(label) != 0">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:apply-templates select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refnamediv/refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="refmeta/manvolnum"/>
+</xsl:template>
+
+<xsl:template match="refnamediv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="refname[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates mode="xref-to"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="term[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary" mode="xref-to">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="xref-to">
+ <xsl:value-of select="primary"/>
+</xsl:template>
+
+<xsl:template match="varlistentry/term" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <!-- to avoid the comma that will be generated if there are several terms -->
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="callout-bug"/>
+</xsl:template>
+
+<xsl:template match="area|areaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="." mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- These are elements for which no link text exists, so an xref to one
+ uses the xrefstyle attribute if specified, or if not it falls back
+ to the container element's link text -->
+<xsl:template match="para|phrase|simpara|anchor|quote" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="context" select="(ancestor::simplesect
+ |ancestor::section
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsection
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::partintro
+ |ancestor::dedication
+ |ancestor::acknowledgements
+ |ancestor::colophon
+ |ancestor::bibliography
+ |ancestor::index
+ |ancestor::glossary
+ |ancestor::glossentry
+ |ancestor::listitem
+ |ancestor::varlistentry)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$xrefstyle != ''">
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$context" mode="xref-to">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="author" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name.list"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-title">
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:variable name="title">
+ <xsl:text>[</xsl:text>
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>]</xsl:text>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="step[not(./title)]" mode="title.markup">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="link" name="link">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="a.target"/>
+ <xsl:param name="xhref" select="@xlink:href"/>
+
+ <xsl:variable name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="count(child::node()) &gt; 0">
+ <!-- If it has content, use it -->
+ <xsl:apply-templates/>
+ </xsl:when>
+ <!-- else look for an endterm -->
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Use the xlink:href if no other text -->
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Link element has no content and no Endterm. </xsl:text>
+ <xsl:text>Nothing to show in the link to </xsl:text>
+ <xsl:value-of select="(@xlink:href|@linkend)[1]"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="a.target" select="$a.target"/>
+ <xsl:with-param name="xhref" select="$xhref"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="ulink" name="ulink">
+ <xsl:param name="url" select="@url"/>
+ <xsl:variable name="link">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="$url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" name="olink">
+ <!-- olink content may be passed in from xlink olink -->
+ <xsl:param name="content" select="NOTANELEMENT"/>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="localinfo" select="@localinfo"/>
+
+ <xsl:choose>
+ <!-- olinks resolved by stylesheet and target database -->
+ <xsl:when test="@targetdoc or @targetptr or
+ (@xlink:role=$xolink.role and
+ contains(@xlink:href, '#') )" >
+
+ <xsl:variable name="targetdoc.att">
+ <xsl:choose>
+ <xsl:when test="@targetdoc != ''">
+ <xsl:value-of select="@targetdoc"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and
+ contains(@xlink:href, '#')" >
+ <xsl:value-of select="substring-before(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr.att">
+ <xsl:choose>
+ <xsl:when test="@targetptr != ''">
+ <xsl:value-of select="@targetptr"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and
+ contains(@xlink:href, '#')" >
+ <xsl:value-of select="substring-after(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="xref-context" select="true()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database.filename">
+ <xsl:call-template name="select.target.database">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database"
+ select="document($target.database.filename,/)"/>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: root element of target.database '</xsl:text>
+ <xsl:value-of select="$target.database.filename"/>
+ <xsl:text>' is '</xsl:text>
+ <xsl:value-of select="local-name($target.database/*[1])"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="olink.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="string-length($olink.key) = 0">
+ <xsl:message>
+ <xsl:text>Error: unresolved olink: </xsl:text>
+ <xsl:text>targetdoc/targetptr = '</xsl:text>
+ <xsl:value-of select="$targetdoc.att"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$targetptr.att"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make.olink.href">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="hottext">
+ <xsl:choose>
+ <xsl:when test="string-length($content) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.docname.citation">
+ <xsl:call-template name="olink.document.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="olink.page.citation">
+ <xsl:call-template name="olink.page.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$hottext"/>
+ </a>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="olink"><xsl:copy-of select="$hottext"/></span>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+
+ <!-- Or use old olink mechanism -->
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@linkmode">
+ <!-- use the linkmode to get the base URI, use localinfo as fragid -->
+ <xsl:variable name="modespec" select="key('id',@linkmode)"/>
+ <xsl:if test="count($modespec) != 1
+ or local-name($modespec) != 'modespec'">
+ <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
+ </xsl:if>
+ <xsl:value-of select="$modespec"/>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="@type = 'href'">
+ <xsl:call-template name="olink.outline">
+ <xsl:with-param name="outline.base.uri"
+ select="unparsed-entity-uri(@targetdocent)"/>
+ <xsl:with-param name="localinfo" select="@localinfo"/>
+ <xsl:with-param name="return" select="'href'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$olink.resolver"/>
+ <xsl:text>?</xsl:text>
+ <xsl:value-of select="$olink.sysid"/>
+ <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
+ <!-- XSL gives no access to the public identifier (grumble...) -->
+ <xsl:if test="@localinfo">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:value-of select="$olink.fragid"/>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="olink.hottext"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="pagenumber.markup">
+ <!-- no-op in HTML -->
+</xsl:template>
+
+
+<xsl:template name="olink.outline">
+ <xsl:param name="outline.base.uri"/>
+ <xsl:param name="localinfo"/>
+ <xsl:param name="return" select="href"/>
+
+ <xsl:variable name="outline-file"
+ select="concat($outline.base.uri,
+ $olink.outline.ext)"/>
+
+ <xsl:variable name="outline" select="document($outline-file,.)/div"/>
+
+ <xsl:variable name="node-href">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline//
+ *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:value-of select="$node/@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/@href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="node-xref">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline//
+ *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:copy-of select="$node/xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$return = 'href'">
+ <xsl:value-of select="$node-href"/>
+ </xsl:when>
+ <xsl:when test="$return = 'xref'">
+ <xsl:value-of select="$node-xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$node-xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="xref.xreflabel">
+ <!-- called to process an xreflabel...you might use this to make -->
+ <!-- xreflabels come out in the right font for different targets, -->
+ <!-- for example. -->
+ <xsl:param name="target" select="."/>
+ <xsl:value-of select="$target/@xreflabel"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="title" mode="xref">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="command" mode="xref">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="function" mode="xref">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <!-- FIXME: what about the case where titleabbrev is inside the info? -->
+ <xsl:when test="$purpose = 'xref' and titleabbrev">
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="chapter|appendix" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <xsl:when test="$purpose = 'xref'">
+ <i>
+ <xsl:copy-of select="$title"/>
+ </i>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.subtitle.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="subtitle"/>
+
+ <xsl:copy-of select="$subtitle"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.label.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="label"/>
+
+ <xsl:copy-of select="$label"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.pagenumber.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="pagenumber"/>
+
+ <xsl:copy-of select="$pagenumber"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.direction.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="direction"/>
+
+ <xsl:copy-of select="$direction"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.olink.docname.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="docname"/>
+
+ <span class="olinkdocname">
+ <xsl:copy-of select="$docname"/>
+ </span>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl
new file mode 100644
index 0000000..303b81e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl
@@ -0,0 +1,1120 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY lf '<xsl:text xmlns:xsl="http://www.w3.org/1999/XSL/Transform">&#xA;</xsl:text>'>
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:set="http://exslt.org/sets"
+ xmlns:h="urn:x-hex"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ version="1.0"
+ exclude-result-prefixes="doc exsl set h db ng">
+
+<!-- ********************************************************************
+ $Id: htmlhelp-common.xsl 8400 2009-04-08 07:44:54Z bobstayton $
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- Customizations of standard HTML stylesheet parameters -->
+
+<!-- no navigation on pages by default, HTML Help provides its own navigation controls -->
+<xsl:param name="suppress.navigation" select="1"/>
+
+<!-- no separate HTML page with index, index is built inside CHM index pane -->
+<xsl:param name="generate.index" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:param name="htmlhelp.generate.index" select="//indexterm[1]|//db:indexterm[1]|//ng:indexterm[1]"/>
+
+<!-- Set up HTML Help flag -->
+<xsl:variable name="htmlhelp.output" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$htmlhelp.only != 1">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:call-template name="hhp"/>
+ <xsl:call-template name="hhc"/>
+ <xsl:if test="($rootid = '' and //processing-instruction('dbhh')) or
+ ($rootid != '' and key('id',$rootid)//processing-instruction('dbhh'))">
+ <xsl:call-template name="hh-map"/>
+ <xsl:call-template name="hh-alias"/>
+ </xsl:if>
+ <xsl:if test="$htmlhelp.generate.index">
+ <xsl:call-template name="hhk"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hhp">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.hhp"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="hhp-main"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="hhp-main">
+
+ <xsl:variable name="raw.help.title">
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.title = ''">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/*" mode="title.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$htmlhelp.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="help.title" select="normalize-space($raw.help.title)"/>
+
+<xsl:variable name="default.topic">
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.default.topic != ''">
+ <xsl:value-of select="$htmlhelp.default.topic"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="chunk-filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="chunk-filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+<xsl:variable name="xnavigation">
+ <xsl:text>0x</xsl:text>
+ <xsl:call-template name="toHex">
+ <xsl:with-param name="n" select="9504 + $htmlhelp.show.menu * 65536
+ + $htmlhelp.show.advanced.search * 131072
+ + $htmlhelp.show.favorities * 4096
+ + (1 - $htmlhelp.show.toolbar.text) * 64
+ + $htmlhelp.remember.window.position * 262144"/>
+ </xsl:call-template>
+</xsl:variable>
+<xsl:variable name="xbuttons">
+ <xsl:text>0x</xsl:text>
+ <xsl:call-template name="toHex">
+ <xsl:with-param name="n" select="0 + $htmlhelp.button.hideshow * 2
+ + $htmlhelp.button.back * 4
+ + $htmlhelp.button.forward * 8
+ + $htmlhelp.button.stop * 16
+ + $htmlhelp.button.refresh * 32
+ + $htmlhelp.button.home * 64
+ + $htmlhelp.button.options * 4096
+ + $htmlhelp.button.print * 8192
+ + $htmlhelp.button.locate * 2048
+ + $htmlhelp.button.jump1 * 262144
+ + $htmlhelp.button.jump2 * 524288
+ + $htmlhelp.button.next * 2097152
+ + $htmlhelp.button.prev * 4194304
+ + $htmlhelp.button.zoom * 1048576"/>
+ </xsl:call-template>
+</xsl:variable>
+<xsl:text>[OPTIONS]
+</xsl:text>
+<xsl:if test="$htmlhelp.generate.index">
+<xsl:text>Auto Index=Yes
+</xsl:text></xsl:if>
+<xsl:if test="$htmlhelp.hhc.binary != 0">
+<xsl:text>Binary TOC=Yes
+</xsl:text></xsl:if>
+<xsl:text>Compatibility=1.1 or later
+Compiled file=</xsl:text><xsl:value-of select="$htmlhelp.chm"/><xsl:text>
+Contents file=</xsl:text><xsl:value-of select="$htmlhelp.hhc"/><xsl:text>
+</xsl:text>
+<xsl:if test="$htmlhelp.hhp.window != ''">
+<xsl:text>Default Window=</xsl:text><xsl:value-of select="$htmlhelp.hhp.window"/><xsl:text>
+</xsl:text></xsl:if>
+<xsl:text>Default topic=</xsl:text><xsl:value-of select="$default.topic"/>
+<xsl:text>
+Display compile progress=</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.display.progress != 1">
+ <xsl:text>No</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Yes</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+<xsl:text>
+Full-text search=Yes
+</xsl:text>
+<xsl:if test="$htmlhelp.generate.index">
+<xsl:text>Index file=</xsl:text><xsl:value-of select="$htmlhelp.hhk"/><xsl:text>
+</xsl:text></xsl:if>
+<xsl:text>Language=</xsl:text>
+<xsl:for-each select="*"> <!-- Change context from / to root element -->
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'htmlhelp'"/>
+ <xsl:with-param name="name" select="'langcode'"/>
+ </xsl:call-template>
+</xsl:for-each>
+<xsl:text>
+Title=</xsl:text>
+ <xsl:value-of select="$help.title"/>
+<xsl:text>
+Enhanced decompilation=</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.enhanced.decompilation != 0">
+ <xsl:text>Yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>No</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+<xsl:if test="$htmlhelp.hhp.window != ''">
+ <xsl:text>
+
+[WINDOWS]
+</xsl:text>
+<xsl:value-of select="$htmlhelp.hhp.window"/>
+<xsl:text>="</xsl:text>
+<xsl:value-of select="$help.title"/>
+<xsl:text>","</xsl:text><xsl:value-of select="$htmlhelp.hhc"/>
+<xsl:text>",</xsl:text>
+<xsl:if test="$htmlhelp.generate.index">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.hhk"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,"</xsl:text>
+<xsl:value-of select="$default.topic"/>
+<xsl:text>",</xsl:text>
+<xsl:text>"</xsl:text>
+<xsl:choose>
+ <xsl:when test="$htmlhelp.button.home != 0">
+ <xsl:value-of select="$htmlhelp.button.home.url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.topic"/>
+ </xsl:otherwise>
+</xsl:choose>
+<xsl:text>"</xsl:text>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump1 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump1.url"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump1 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump1.title"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump2 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump2.url"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump2 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump2.title"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$xnavigation"/>
+<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.hhc.width"/><xsl:text>,</xsl:text>
+<xsl:value-of select="$xbuttons"/>
+<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.window.geometry"/><xsl:text>,,,,,,,0
+</xsl:text>
+</xsl:if>
+
+<!--
+ Needs more investigation to generate propetly all fields
+<xsl:text>search="</xsl:text>
+<xsl:value-of select="normalize-space(//title[1])"/>
+<xsl:text>","toc.hhc","index.hhk","</xsl:text>
+<xsl:value-of select="$root.filename"/>
+<xsl:text>.html","</xsl:text>
+<xsl:value-of select="$root.filename"/>
+<xsl:text>.html",,,,,</xsl:text>
+<xsl:value-of select="$xnavigation"/>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$htmlhelp.hhc.width"/>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$xbuttons"/>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$htmlhelp.window.geometry"/>
+<xsl:text>,,,,,2,,0
+</xsl:text>
+-->
+
+<xsl:if test="$htmlhelp.hhp.windows">
+ <xsl:value-of select="$htmlhelp.hhp.windows"/>
+</xsl:if>
+<xsl:text>
+
+[FILES]
+</xsl:text>
+
+<xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="enumerate-files"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="enumerate-files"/>
+ </xsl:otherwise>
+</xsl:choose>
+
+<xsl:if test="$htmlhelp.enumerate.images">
+ <xsl:variable name="imagelist">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="enumerate-images"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="enumerate-images"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0
+ and function-available('set:distinct')">
+ <xsl:for-each select="set:distinct(exsl:node-set($imagelist)/filename)">
+ <xsl:value-of select="."/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$imagelist"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:if>
+
+<xsl:if test="($htmlhelp.force.map.and.alias != 0) or
+ ($rootid = '' and //processing-instruction('dbhh')) or
+ ($rootid != '' and key('id',$rootid)//processing-instruction('dbhh'))">
+ <xsl:text>
+[ALIAS]
+#include </xsl:text><xsl:value-of select="$htmlhelp.alias.file"/><xsl:text>
+
+[MAP]
+#include </xsl:text><xsl:value-of select="$htmlhelp.map.file"/><xsl:text>
+</xsl:text>
+</xsl:if>
+
+<xsl:value-of select="$htmlhelp.hhp.tail"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="graphic|inlinegraphic[@format!='linespecific']" mode="enumerate-images">
+ <xsl:call-template name="write.filename.enumerate-images">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="mediaobject.filename.enumerate-images">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="mediaobject|inlinemediaobject" mode="enumerate-images">
+ <xsl:call-template name="select.mediaobject.enumerate-images"/>
+</xsl:template>
+
+<xsl:template name="select.mediaobject.enumerate-images">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+ <xsl:param name="count">1</xsl:param>
+
+ <xsl:if test="$count &lt;= count($olist)">
+ <xsl:variable name="object" select="$olist[position()=$count]"/>
+
+ <xsl:variable name="useobject">
+ <xsl:choose>
+ <!-- The phrase is never used -->
+ <xsl:when test="name($object)='textobject' and $object/phrase">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- The first textobject is a reasonable fallback (but not for image in HH) -->
+ <xsl:when test="name($object)='textobject'">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- If there's only one object, use it -->
+ <xsl:when test="$count = 1 and count($olist) = 1">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- Otherwise, see if this one is a useable graphic -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- peek inside imageobjectco to simplify the test -->
+ <xsl:when test="local-name($object) = 'imageobjectco'">
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object/imageobject"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$useobject='1' and $object[not(*/@format='linespecific')]">
+ <xsl:call-template name="write.filename.enumerate-images">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="mediaobject.filename.enumerate-images">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.enumerate-images">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="mediaobject.filename.enumerate-images">
+ <xsl:param name="object"/>
+
+ <xsl:variable name="urifilename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="starts-with($urifilename, 'file:/')">
+ <xsl:value-of select="substring-after($urifilename, 'file:/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$urifilename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="translate($filename, '/', '\')"/>
+
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-images">
+</xsl:template>
+
+<xsl:template name="write.filename.enumerate-images">
+ <xsl:param name="filename"/>
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set') and function-available('set:distinct')">
+ <filename><xsl:value-of select="$filename"/></filename>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- HHC and HHK files are processed by compiler line by line
+ and therefore are very sensitive to whitespaces (linefeeds for sure). -->
+
+<xsl:template name="hhc">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.hhc"/>
+ </xsl:with-param>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="hhc-main"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="hhc-main">
+<HTML>&lf;
+ <HEAD></HEAD>&lf;
+ <BODY>&lf;
+ <xsl:if test="$htmlhelp.hhc.folders.instead.books != 0">
+ <OBJECT type="text/site properties">&lf;
+ <param name="ImageType" value="Folder"/>&lf;
+ </OBJECT>&lf;
+ </xsl:if>
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="hhc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="hhc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.hhc.show.root != 0">
+ <UL>&lf;
+ <xsl:copy-of select="$content"/>
+ </UL>&lf;
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </BODY>
+</HTML>
+</xsl:template>
+
+<xsl:template name="hhc.entry">
+ <xsl:param name="title">
+ <xsl:if test="$htmlhelp.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:param>
+
+ <LI><OBJECT type="text/sitemap">&lf;
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </param>&lf;
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI>&lf;
+</xsl:template>
+
+<xsl:template match="set" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="book">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <UL>
+ <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0">
+ <LI><OBJECT type="text/sitemap">&lf;
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </param>&lf;
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI>&lf;
+ </xsl:if>
+ <xsl:apply-templates select="book" mode="hhc"/>
+ </UL>&lf;
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="book" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="part|reference|preface|chapter|appendix|bibliography|article|colophon|glossary">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <UL>
+ <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0 and not(parent::*)">
+ <LI><OBJECT type="text/sitemap">&lf;
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </param>&lf;
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI>&lf;
+ </xsl:if>
+ <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|colophon|glossary"
+ mode="hhc"/>
+ </UL>&lf;
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part|reference|preface|chapter|bibliography|appendix|article|glossary"
+ mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv">
+ <UL>&lf;
+ <xsl:apply-templates
+ select="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv"
+ mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="section[count(ancestor::section) &lt; $htmlhelp.hhc.section.depth]|refentry">
+ <UL>&lf;
+ <xsl:apply-templates select="section|refentry" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect1" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect2[$htmlhelp.hhc.section.depth > 1]|refentry">
+ <UL>&lf;
+ <xsl:apply-templates select="sect2|refentry"
+ mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect2" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect3[$htmlhelp.hhc.section.depth > 2]|refentry">
+ <UL>&lf;
+ <xsl:apply-templates select="sect3|refentry"
+ mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect3" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect4[$htmlhelp.hhc.section.depth > 3]|refentry">
+ <UL>&lf;
+ <xsl:apply-templates select="sect4|refentry"
+ mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect4" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect5[$htmlhelp.hhc.section.depth > 4]|refentry">
+ <UL>&lf;
+ <xsl:apply-templates select="sect5|refentry"
+ mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect5|refentry|colophon|bibliodiv" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="refentry">
+ <UL>&lf;
+ <xsl:apply-templates select="refentry"
+ mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexterm">
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.use.hhk = 0">
+
+ <xsl:variable name="primary" select="normalize-space(primary)"/>
+ <xsl:variable name="secondary" select="normalize-space(secondary)"/>
+ <xsl:variable name="tertiary" select="normalize-space(tertiary)"/>
+
+ <xsl:variable name="text">
+ <xsl:value-of select="$primary"/>
+ <xsl:if test="secondary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$secondary"/>
+ </xsl:if>
+ <xsl:if test="tertiary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$tertiary"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="secondary">
+ <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])">
+ <xsl:call-template name="write.indexterm">
+ <xsl:with-param name="text" select="$primary"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="tertiary">
+ <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and
+ normalize-space(secondary)=$secondary and not(tertiary)])">
+ <xsl:call-template name="write.indexterm">
+ <xsl:with-param name="text" select="concat($primary, ', ', $secondary)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:call-template name="write.indexterm">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:attribute name="name">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </a>
+ </xsl:otherwise>
+
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.indexterm">
+ <xsl:param name="text"/>
+ <OBJECT type="application/x-oleobject"
+ classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
+ <param name="Keyword" value="{$text}"/>
+ </OBJECT>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hhk">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.hhk"/>
+ </xsl:with-param>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="content"><xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<OBJECT type="text/site properties">
+</OBJECT>
+<UL>]]>
+</xsl:text>
+<xsl:if test="($htmlhelp.use.hhk != 0) and $htmlhelp.generate.index">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="hhk"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="hhk"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:if>
+<xsl:text disable-output-escaping="yes"><![CDATA[</UL>
+</BODY></HTML>]]>
+</xsl:text></xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='endofrange']" mode="hhk"/>
+
+<xsl:template match="indexterm" mode="hhk">
+ <xsl:variable name="primary" select="normalize-space(primary)"/>
+ <xsl:variable name="secondary" select="normalize-space(secondary)"/>
+ <xsl:variable name="tertiary" select="normalize-space(tertiary)"/>
+
+ <xsl:call-template name="write.indexterm.hhk">
+ <xsl:with-param name="text" select="$primary"/>
+ <xsl:with-param name="seealso" select="seealso"/>
+ </xsl:call-template>
+
+ <xsl:if test="secondary">
+ <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])">
+ <xsl:call-template name="write.indexterm.hhk">
+ <!-- We must create fake entry when there is secondary without primary -->
+ <xsl:with-param name="text" select="$primary"/>
+ <xsl:with-param name="seealso" select="$primary"/>
+ </xsl:call-template>
+ </xsl:if>
+ <UL>
+ <xsl:call-template name="write.indexterm.hhk">
+ <xsl:with-param name="text" select="$secondary"/>
+ <xsl:with-param name="seealso" select="secondary/seealso"/>
+ </xsl:call-template>
+ <xsl:if test="tertiary">
+ <UL>&lf;
+ <xsl:call-template name="write.indexterm.hhk">
+ <xsl:with-param name="text" select="$tertiary"/>
+ <xsl:with-param name="seealso" select="tertiary/seealso"/>
+ </xsl:call-template>
+ </UL>
+ </xsl:if>
+ </UL>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template name="write.indexterm.hhk">
+ <xsl:param name="text"/>
+ <xsl:param name="seealso"/>
+
+ <LI> <OBJECT type="text/sitemap">&lf;
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$text"/>
+ </xsl:attribute>
+ </param>&lf;
+
+ <xsl:if test="not(seealso)">
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:call-template name="nearest.title">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$title"/>
+ </xsl:attribute>
+ </param>&lf;
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$href"/>
+ </xsl:attribute>
+ </param>&lf;
+ </xsl:if>
+
+ <xsl:if test="seealso">
+ <param name="See Also">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$seealso"/>
+ </xsl:attribute>
+ </param>&lf;
+ </xsl:if>
+ </OBJECT></LI>
+</xsl:template>
+
+<xsl:template match="text()" mode="hhk"/>
+
+<xsl:template name="nearest.title">
+ <xsl:param name="object"/>
+ <xsl:apply-templates select="$object/ancestor-or-self::*[title][1]" mode="title.markup"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hh-map">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.map.file"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="hh-map"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="hh-map"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhh')" mode="hh-map">
+ <xsl:variable name="topicname">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis"
+ select="."/>
+ <xsl:with-param name="attribute" select="'topicname'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="topicid">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis"
+ select="."/>
+ <xsl:with-param name="attribute" select="'topicid'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:text>#define </xsl:text>
+ <xsl:value-of select="$topicname"/>
+ <xsl:text>&#9;</xsl:text>
+ <xsl:value-of select="$topicid"/>
+ <xsl:text>&#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template match="text()" mode="hh-map"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hh-alias">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.alias.file"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="hh-alias"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="hh-alias"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhh')" mode="hh-alias">
+ <xsl:variable name="topicname">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis"
+ select="."/>
+ <xsl:with-param name="attribute" select="'topicname'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$topicname"/>
+ <xsl:text>=</xsl:text>
+ <!-- Some versions of HH doesn't like fragment identifires, but some does. -->
+ <!-- <xsl:value-of select="substring-before(concat($href, '#'), '#')"/> -->
+ <xsl:value-of select="$href"/>
+ <xsl:text>&#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template match="text()" mode="hh-alias"/>
+
+<!-- ==================================================================== -->
+<!-- This code can be used to convert any number to hexadecimal format -->
+
+ <h:hex>
+ <d>0</d>
+ <d>1</d>
+ <d>2</d>
+ <d>3</d>
+ <d>4</d>
+ <d>5</d>
+ <d>6</d>
+ <d>7</d>
+ <d>8</d>
+ <d>9</d>
+ <d>A</d>
+ <d>B</d>
+ <d>C</d>
+ <d>D</d>
+ <d>E</d>
+ <d>F</d>
+ </h:hex>
+
+ <xsl:template name="toHex">
+ <xsl:param name="n" select="0"/>
+ <xsl:param name="digit" select="$n mod 16"/>
+ <xsl:param name="rest" select="floor($n div 16)"/>
+ <xsl:if test="$rest > 0">
+ <xsl:call-template name="toHex">
+ <xsl:with-param name="n" select="$rest"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:value-of select="document('')//h:hex/d[$digit+1]"/>
+ </xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Modification to standard HTML stylesheets -->
+
+<!-- There are links from ToC pane to bibliodivs, so there must be anchor -->
+<xsl:template match="bibliodiv/title">
+ <h3 class="{name(.)}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl
new file mode 100644
index 0000000..8e8ee95
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:set="http://exslt.org/sets"
+ version="1.0"
+ exclude-result-prefixes="doc exsl set">
+
+<!-- ********************************************************************
+ $Id: htmlhelp.xsl 1676 2002-06-12 13:21:54Z kosek $
+ ********************************************************************
+
+ This file is used by htmlhelp.xsl if you want to generate source
+ files for HTML Help. It is based on the XSL DocBook Stylesheet
+ distribution (especially on JavaHelp code) from Norman Walsh.
+
+ ******************************************************************** -->
+
+<xsl:import href="../html/chunk.xsl"/>
+<xsl:include href="htmlhelp-common.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl
new file mode 100644
index 0000000..d2ab70e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl
@@ -0,0 +1,1083 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:exsl="http://exslt.org/common" xmlns:set="http://exslt.org/sets" xmlns:h="urn:x-hex" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="doc exsl set h db ng exslt">
+
+<!-- ********************************************************************
+ $Id: htmlhelp-common.xsl 8400 2009-04-08 07:44:54Z bobstayton $
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- Customizations of standard HTML stylesheet parameters -->
+
+<!-- no navigation on pages by default, HTML Help provides its own navigation controls -->
+<xsl:param name="suppress.navigation" select="1"/>
+
+<!-- no separate HTML page with index, index is built inside CHM index pane -->
+<xsl:param name="generate.index" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:param name="htmlhelp.generate.index" select="//indexterm[1]|//db:indexterm[1]|//ng:indexterm[1]"/>
+
+<!-- Set up HTML Help flag -->
+<xsl:variable name="htmlhelp.output" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:if test="$htmlhelp.only != 1">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:call-template name="hhp"/>
+ <xsl:call-template name="hhc"/>
+ <xsl:if test="($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid]//processing-instruction('dbhh'))">
+ <xsl:call-template name="hh-map"/>
+ <xsl:call-template name="hh-alias"/>
+ </xsl:if>
+ <xsl:if test="$htmlhelp.generate.index">
+ <xsl:call-template name="hhk"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hhp">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.hhp"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="hhp-main"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="hhp-main">
+
+ <xsl:variable name="raw.help.title">
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.title = ''">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes/*" mode="title.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$htmlhelp.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="help.title" select="normalize-space($raw.help.title)"/>
+
+<xsl:variable name="default.topic">
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.default.topic != ''">
+ <xsl:value-of select="$htmlhelp.default.topic"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="chunk-filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="chunk-filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+<xsl:variable name="xnavigation">
+ <xsl:text>0x</xsl:text>
+ <xsl:call-template name="toHex">
+ <xsl:with-param name="n" select="9504 + $htmlhelp.show.menu * 65536 + $htmlhelp.show.advanced.search * 131072 + $htmlhelp.show.favorities * 4096 + (1 - $htmlhelp.show.toolbar.text) * 64 + $htmlhelp.remember.window.position * 262144"/>
+ </xsl:call-template>
+</xsl:variable>
+<xsl:variable name="xbuttons">
+ <xsl:text>0x</xsl:text>
+ <xsl:call-template name="toHex">
+ <xsl:with-param name="n" select="0 + $htmlhelp.button.hideshow * 2 + $htmlhelp.button.back * 4 + $htmlhelp.button.forward * 8 + $htmlhelp.button.stop * 16 + $htmlhelp.button.refresh * 32 + $htmlhelp.button.home * 64 + $htmlhelp.button.options * 4096 + $htmlhelp.button.print * 8192 + $htmlhelp.button.locate * 2048 + $htmlhelp.button.jump1 * 262144 + $htmlhelp.button.jump2 * 524288 + $htmlhelp.button.next * 2097152 + $htmlhelp.button.prev * 4194304 + $htmlhelp.button.zoom * 1048576"/>
+ </xsl:call-template>
+</xsl:variable>
+<xsl:text>[OPTIONS]
+</xsl:text>
+<xsl:if test="$htmlhelp.generate.index">
+<xsl:text>Auto Index=Yes
+</xsl:text></xsl:if>
+<xsl:if test="$htmlhelp.hhc.binary != 0">
+<xsl:text>Binary TOC=Yes
+</xsl:text></xsl:if>
+<xsl:text>Compatibility=1.1 or later
+Compiled file=</xsl:text><xsl:value-of select="$htmlhelp.chm"/><xsl:text>
+Contents file=</xsl:text><xsl:value-of select="$htmlhelp.hhc"/><xsl:text>
+</xsl:text>
+<xsl:if test="$htmlhelp.hhp.window != ''">
+<xsl:text>Default Window=</xsl:text><xsl:value-of select="$htmlhelp.hhp.window"/><xsl:text>
+</xsl:text></xsl:if>
+<xsl:text>Default topic=</xsl:text><xsl:value-of select="$default.topic"/>
+<xsl:text>
+Display compile progress=</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.display.progress != 1">
+ <xsl:text>No</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Yes</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+<xsl:text>
+Full-text search=Yes
+</xsl:text>
+<xsl:if test="$htmlhelp.generate.index">
+<xsl:text>Index file=</xsl:text><xsl:value-of select="$htmlhelp.hhk"/><xsl:text>
+</xsl:text></xsl:if>
+<xsl:text>Language=</xsl:text>
+<xsl:for-each select="*"> <!-- Change context from / to root element -->
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'htmlhelp'"/>
+ <xsl:with-param name="name" select="'langcode'"/>
+ </xsl:call-template>
+</xsl:for-each>
+<xsl:text>
+Title=</xsl:text>
+ <xsl:value-of select="$help.title"/>
+<xsl:text>
+Enhanced decompilation=</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.enhanced.decompilation != 0">
+ <xsl:text>Yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>No</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+<xsl:if test="$htmlhelp.hhp.window != ''">
+ <xsl:text>
+
+[WINDOWS]
+</xsl:text>
+<xsl:value-of select="$htmlhelp.hhp.window"/>
+<xsl:text>="</xsl:text>
+<xsl:value-of select="$help.title"/>
+<xsl:text>","</xsl:text><xsl:value-of select="$htmlhelp.hhc"/>
+<xsl:text>",</xsl:text>
+<xsl:if test="$htmlhelp.generate.index">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.hhk"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,"</xsl:text>
+<xsl:value-of select="$default.topic"/>
+<xsl:text>",</xsl:text>
+<xsl:text>"</xsl:text>
+<xsl:choose>
+ <xsl:when test="$htmlhelp.button.home != 0">
+ <xsl:value-of select="$htmlhelp.button.home.url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.topic"/>
+ </xsl:otherwise>
+</xsl:choose>
+<xsl:text>"</xsl:text>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump1 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump1.url"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump1 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump1.title"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump2 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump2.url"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:if test="$htmlhelp.button.jump2 != 0">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$htmlhelp.button.jump2.title"/>
+ <xsl:text>"</xsl:text>
+</xsl:if>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$xnavigation"/>
+<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.hhc.width"/><xsl:text>,</xsl:text>
+<xsl:value-of select="$xbuttons"/>
+<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.window.geometry"/><xsl:text>,,,,,,,0
+</xsl:text>
+</xsl:if>
+
+<!--
+ Needs more investigation to generate propetly all fields
+<xsl:text>search="</xsl:text>
+<xsl:value-of select="normalize-space(//title[1])"/>
+<xsl:text>","toc.hhc","index.hhk","</xsl:text>
+<xsl:value-of select="$root.filename"/>
+<xsl:text>.html","</xsl:text>
+<xsl:value-of select="$root.filename"/>
+<xsl:text>.html",,,,,</xsl:text>
+<xsl:value-of select="$xnavigation"/>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$htmlhelp.hhc.width"/>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$xbuttons"/>
+<xsl:text>,</xsl:text>
+<xsl:value-of select="$htmlhelp.window.geometry"/>
+<xsl:text>,,,,,2,,0
+</xsl:text>
+-->
+
+<xsl:if test="$htmlhelp.hhp.windows">
+ <xsl:value-of select="$htmlhelp.hhp.windows"/>
+</xsl:if>
+<xsl:text>
+
+[FILES]
+</xsl:text>
+
+<xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="enumerate-files"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="enumerate-files"/>
+ </xsl:otherwise>
+</xsl:choose>
+
+<xsl:if test="$htmlhelp.enumerate.images">
+ <xsl:variable name="imagelist">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="enumerate-images"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="enumerate-images"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0 and function-available('set:distinct')">
+ <xsl:for-each select="set:distinct(exsl:node-set($imagelist)/filename)">
+ <xsl:value-of select="."/>
+ <xsl:text>
+</xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$imagelist"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:if>
+
+<xsl:if test="($htmlhelp.force.map.and.alias != 0) or ($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid]//processing-instruction('dbhh'))">
+ <xsl:text>
+[ALIAS]
+#include </xsl:text><xsl:value-of select="$htmlhelp.alias.file"/><xsl:text>
+
+[MAP]
+#include </xsl:text><xsl:value-of select="$htmlhelp.map.file"/><xsl:text>
+</xsl:text>
+</xsl:if>
+
+<xsl:value-of select="$htmlhelp.hhp.tail"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="graphic|inlinegraphic[@format!='linespecific']" mode="enumerate-images">
+ <xsl:call-template name="write.filename.enumerate-images">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="mediaobject.filename.enumerate-images">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="mediaobject|inlinemediaobject" mode="enumerate-images">
+ <xsl:call-template name="select.mediaobject.enumerate-images"/>
+</xsl:template>
+
+<xsl:template name="select.mediaobject.enumerate-images">
+ <xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/>
+ <xsl:param name="count">1</xsl:param>
+
+ <xsl:if test="$count &lt;= count($olist)">
+ <xsl:variable name="object" select="$olist[position()=$count]"/>
+
+ <xsl:variable name="useobject">
+ <xsl:choose>
+ <!-- The phrase is never used -->
+ <xsl:when test="name($object)='textobject' and $object/phrase">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- The first textobject is a reasonable fallback (but not for image in HH) -->
+ <xsl:when test="name($object)='textobject'">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- If there's only one object, use it -->
+ <xsl:when test="$count = 1 and count($olist) = 1">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- Otherwise, see if this one is a useable graphic -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- peek inside imageobjectco to simplify the test -->
+ <xsl:when test="local-name($object) = 'imageobjectco'">
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object/imageobject"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$useobject='1' and $object[not(*/@format='linespecific')]">
+ <xsl:call-template name="write.filename.enumerate-images">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="mediaobject.filename.enumerate-images">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.enumerate-images">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="mediaobject.filename.enumerate-images">
+ <xsl:param name="object"/>
+
+ <xsl:variable name="urifilename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="starts-with($urifilename, 'file:/')">
+ <xsl:value-of select="substring-after($urifilename, 'file:/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$urifilename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="translate($filename, '/', '\')"/>
+
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-images">
+</xsl:template>
+
+<xsl:template name="write.filename.enumerate-images">
+ <xsl:param name="filename"/>
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set') and function-available('set:distinct')">
+ <filename><xsl:value-of select="$filename"/></filename>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>
+</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- HHC and HHK files are processed by compiler line by line
+ and therefore are very sensitive to whitespaces (linefeeds for sure). -->
+
+<xsl:template name="hhc">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.hhc"/>
+ </xsl:with-param>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="hhc-main"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="hhc-main">
+<HTML><xsl:text>
+</xsl:text>
+ <HEAD/><xsl:text>
+</xsl:text>
+ <BODY><xsl:text>
+</xsl:text>
+ <xsl:if test="$htmlhelp.hhc.folders.instead.books != 0">
+ <OBJECT type="text/site properties"><xsl:text>
+</xsl:text>
+ <param name="ImageType" value="Folder"/><xsl:text>
+</xsl:text>
+ </OBJECT><xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hhc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="hhc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.hhc.show.root != 0">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:copy-of select="$content"/>
+ </UL><xsl:text>
+</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </BODY>
+</HTML>
+</xsl:template>
+
+<xsl:template name="hhc.entry">
+ <xsl:param name="title">
+ <xsl:if test="$htmlhelp.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:param>
+
+ <LI><OBJECT type="text/sitemap"><xsl:text>
+</xsl:text>
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </param><xsl:text>
+</xsl:text>
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI><xsl:text>
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="set" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="book">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <UL>
+ <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0">
+ <LI><OBJECT type="text/sitemap"><xsl:text>
+</xsl:text>
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </param><xsl:text>
+</xsl:text>
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI><xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="book" mode="hhc"/>
+ </UL><xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="book" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="part|reference|preface|chapter|appendix|bibliography|article|colophon|glossary">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <UL>
+ <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0 and not(parent::*)">
+ <LI><OBJECT type="text/sitemap"><xsl:text>
+</xsl:text>
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </param><xsl:text>
+</xsl:text>
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI><xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|colophon|glossary" mode="hhc"/>
+ </UL><xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part|reference|preface|chapter|bibliography|appendix|article|glossary" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="section[count(ancestor::section) &lt; $htmlhelp.hhc.section.depth]|refentry">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="section|refentry" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect1" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect2[$htmlhelp.hhc.section.depth &gt; 1]|refentry">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="sect2|refentry" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect2" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect3[$htmlhelp.hhc.section.depth &gt; 2]|refentry">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="sect3|refentry" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect3" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect4[$htmlhelp.hhc.section.depth &gt; 3]|refentry">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="sect4|refentry" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect4" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="sect5[$htmlhelp.hhc.section.depth &gt; 4]|refentry">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="sect5|refentry" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="sect5|refentry|colophon|bibliodiv" mode="hhc">
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <xsl:call-template name="hhc.entry"/>
+ </xsl:if>
+ <xsl:if test="refentry">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="refentry" mode="hhc"/>
+ </UL>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexterm">
+ <xsl:choose>
+ <xsl:when test="$htmlhelp.use.hhk = 0">
+
+ <xsl:variable name="primary" select="normalize-space(primary)"/>
+ <xsl:variable name="secondary" select="normalize-space(secondary)"/>
+ <xsl:variable name="tertiary" select="normalize-space(tertiary)"/>
+
+ <xsl:variable name="text">
+ <xsl:value-of select="$primary"/>
+ <xsl:if test="secondary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$secondary"/>
+ </xsl:if>
+ <xsl:if test="tertiary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$tertiary"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="secondary">
+ <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])">
+ <xsl:call-template name="write.indexterm">
+ <xsl:with-param name="text" select="$primary"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="tertiary">
+ <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and normalize-space(secondary)=$secondary and not(tertiary)])">
+ <xsl:call-template name="write.indexterm">
+ <xsl:with-param name="text" select="concat($primary, ', ', $secondary)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:call-template name="write.indexterm">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:attribute name="name">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </a>
+ </xsl:otherwise>
+
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.indexterm">
+ <xsl:param name="text"/>
+ <OBJECT type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
+ <param name="Keyword" value="{$text}"/>
+ </OBJECT>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hhk">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.hhk"/>
+ </xsl:with-param>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="content"><xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
+&lt;HTML&gt;
+&lt;HEAD&gt;
+&lt;meta name="GENERATOR" content="Microsoft&amp;reg; HTML Help Workshop 4.1"&gt;
+&lt;!-- Sitemap 1.0 --&gt;
+&lt;/HEAD&gt;&lt;BODY&gt;
+&lt;OBJECT type="text/site properties"&gt;
+&lt;/OBJECT&gt;
+&lt;UL&gt;
+</xsl:text>
+<xsl:if test="($htmlhelp.use.hhk != 0) and $htmlhelp.generate.index">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hhk"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="hhk"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:if>
+<xsl:text disable-output-escaping="yes">&lt;/UL&gt;
+&lt;/BODY&gt;&lt;/HTML&gt;
+</xsl:text></xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='endofrange']" mode="hhk"/>
+
+<xsl:template match="indexterm" mode="hhk">
+ <xsl:variable name="primary" select="normalize-space(primary)"/>
+ <xsl:variable name="secondary" select="normalize-space(secondary)"/>
+ <xsl:variable name="tertiary" select="normalize-space(tertiary)"/>
+
+ <xsl:call-template name="write.indexterm.hhk">
+ <xsl:with-param name="text" select="$primary"/>
+ <xsl:with-param name="seealso" select="seealso"/>
+ </xsl:call-template>
+
+ <xsl:if test="secondary">
+ <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])">
+ <xsl:call-template name="write.indexterm.hhk">
+ <!-- We must create fake entry when there is secondary without primary -->
+ <xsl:with-param name="text" select="$primary"/>
+ <xsl:with-param name="seealso" select="$primary"/>
+ </xsl:call-template>
+ </xsl:if>
+ <UL>
+ <xsl:call-template name="write.indexterm.hhk">
+ <xsl:with-param name="text" select="$secondary"/>
+ <xsl:with-param name="seealso" select="secondary/seealso"/>
+ </xsl:call-template>
+ <xsl:if test="tertiary">
+ <UL><xsl:text>
+</xsl:text>
+ <xsl:call-template name="write.indexterm.hhk">
+ <xsl:with-param name="text" select="$tertiary"/>
+ <xsl:with-param name="seealso" select="tertiary/seealso"/>
+ </xsl:call-template>
+ </UL>
+ </xsl:if>
+ </UL>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template name="write.indexterm.hhk">
+ <xsl:param name="text"/>
+ <xsl:param name="seealso"/>
+
+ <LI> <OBJECT type="text/sitemap"><xsl:text>
+</xsl:text>
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$text"/>
+ </xsl:attribute>
+ </param><xsl:text>
+</xsl:text>
+
+ <xsl:if test="not(seealso)">
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:call-template name="nearest.title">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <param name="Name">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$title"/>
+ </xsl:attribute>
+ </param><xsl:text>
+</xsl:text>
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$href"/>
+ </xsl:attribute>
+ </param><xsl:text>
+</xsl:text>
+ </xsl:if>
+
+ <xsl:if test="seealso">
+ <param name="See Also">
+ <xsl:attribute name="value">
+ <xsl:value-of select="$seealso"/>
+ </xsl:attribute>
+ </param><xsl:text>
+</xsl:text>
+ </xsl:if>
+ </OBJECT></LI>
+</xsl:template>
+
+<xsl:template match="text()" mode="hhk"/>
+
+<xsl:template name="nearest.title">
+ <xsl:param name="object"/>
+ <xsl:apply-templates select="$object/ancestor-or-self::*[title][1]" mode="title.markup"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hh-map">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.map.file"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hh-map"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="hh-map"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhh')" mode="hh-map">
+ <xsl:variable name="topicname">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute" select="'topicname'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="topicid">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute" select="'topicid'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:text>#define </xsl:text>
+ <xsl:value-of select="$topicname"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$topicid"/>
+ <xsl:text>
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="text()" mode="hh-map"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="hh-alias">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$htmlhelp.alias.file"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hh-alias"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="hh-alias"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$htmlhelp.encoding"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhh')" mode="hh-alias">
+ <xsl:variable name="topicname">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute" select="'topicname'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$topicname"/>
+ <xsl:text>=</xsl:text>
+ <!-- Some versions of HH doesn't like fragment identifires, but some does. -->
+ <!-- <xsl:value-of select="substring-before(concat($href, '#'), '#')"/> -->
+ <xsl:value-of select="$href"/>
+ <xsl:text>
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="text()" mode="hh-alias"/>
+
+<!-- ==================================================================== -->
+<!-- This code can be used to convert any number to hexadecimal format -->
+
+ <h:hex>
+ <d>0</d>
+ <d>1</d>
+ <d>2</d>
+ <d>3</d>
+ <d>4</d>
+ <d>5</d>
+ <d>6</d>
+ <d>7</d>
+ <d>8</d>
+ <d>9</d>
+ <d>A</d>
+ <d>B</d>
+ <d>C</d>
+ <d>D</d>
+ <d>E</d>
+ <d>F</d>
+ </h:hex>
+
+ <xsl:template name="toHex">
+ <xsl:param name="n" select="0"/>
+ <xsl:param name="digit" select="$n mod 16"/>
+ <xsl:param name="rest" select="floor($n div 16)"/>
+ <xsl:if test="$rest &gt; 0">
+ <xsl:call-template name="toHex">
+ <xsl:with-param name="n" select="$rest"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:value-of select="document('')//h:hex/d[$digit+1]"/>
+ </xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Modification to standard HTML stylesheets -->
+
+<!-- There are links from ToC pane to bibliodivs, so there must be anchor -->
+<xsl:template match="bibliodiv/title">
+ <h3 class="{name(.)}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl
new file mode 100644
index 0000000..eddde3b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:set="http://exslt.org/sets"
+ version="1.0"
+ exclude-result-prefixes="doc exsl set">
+
+<!-- ********************************************************************
+ $Id: profile-htmlhelp.xsl 1676 2002-06-12 13:21:54Z kosek $
+ ********************************************************************
+
+ This file is used by htmlhelp.xsl if you want to generate source
+ files for HTML Help. It is based on the XSL DocBook Stylesheet
+ distribution (especially on JavaHelp code) from Norman Walsh.
+
+ ******************************************************************** -->
+
+<xsl:import href="../html/chunk.xsl"/>
+<xsl:include href="profile-htmlhelp-common.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg
new file mode 100644
index 0000000..e2e87dc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M10.428,10.411h0.56c3.78,0,4.788-1.96,4.872-3.444h3.22v19.88h-3.92V13.154h-4.732V10.411z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg
new file mode 100644
index 0000000..4740f58
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.815,10.758h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.04h-3.36V13.11H3.815V10.758z"/>
+ <path style="fill:#FFFFFF;" d="M22.175,7.806c4.009,0,5.904,2.76,5.904,8.736c0,5.975-1.896,8.76-5.904,8.76
+ c-4.008,0-5.904-2.785-5.904-8.76C16.271,10.566,18.167,7.806,22.175,7.806z M22.175,22.613c1.921,0,2.448-1.68,2.448-6.071
+ c0-4.393-0.527-6.049-2.448-6.049c-1.92,0-2.448,1.656-2.448,6.049C19.727,20.934,20.255,22.613,22.175,22.613z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg
new file mode 100644
index 0000000..09a0b2c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M5.209,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H5.209V10.412z"/>
+ <path style="fill:#FFFFFF;" d="M18.553,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.359V12.764h-4.056V10.412z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg
new file mode 100644
index 0000000..9794044
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M4.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H4.813V10.412z"/>
+ <path style="fill:#FFFFFF;" d="M17.316,13.484c0-5.545,4.056-6.024,5.568-6.024c3.265,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.553,5.544c-2.256,1.584-3.432,2.353-3.815,3.145h7.392V24.5h-11.64c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.353-2.424c-2.352,0-2.423,1.944-2.447,3.192H17.316z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg
new file mode 100644
index 0000000..64268bb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H3.813V10.412z"/>
+ <path style="fill:#FFFFFF;" d="M20.611,14.636h0.529c1.008,0,2.855-0.096,2.855-2.304c0-0.624-0.288-2.185-2.137-2.185
+ c-2.303,0-2.303,2.185-2.303,2.784h-3.12c0-3.191,1.8-5.472,5.64-5.472c2.279,0,5.279,1.152,5.279,4.752
+ c0,1.728-1.08,2.808-2.039,3.24V15.5c0.6,0.168,2.568,1.056,2.568,3.96c0,3.216-2.377,5.496-5.809,5.496
+ c-1.607,0-5.928-0.36-5.928-5.688h3.288l-0.024,0.024c0,0.912,0.24,2.976,2.496,2.976c1.344,0,2.52-0.911,2.52-2.808
+ c0-2.328-2.256-2.424-3.816-2.424V14.636z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg
new file mode 100644
index 0000000..469aa97
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M4.146,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H4.146V10.412z"/>
+ <path style="fill:#FFFFFF;" d="M28.457,20.732h-1.896V24.5h-3.36v-3.768h-6.72v-2.904L22.746,7.46h3.815v10.656h1.896V20.732z
+ M23.201,18.116c0-4.128,0.072-6.792,0.072-7.32h-0.048l-4.272,7.32H23.201z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg
new file mode 100644
index 0000000..8202233
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.479,11.079h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.04h-3.36V13.43H3.479V11.079z"/>
+ <path style="fill:#FFFFFF;" d="M19.342,14.943c0.625-0.433,1.392-0.937,3.048-0.937c2.279,0,5.16,1.584,5.16,5.496
+ c0,2.328-1.176,6.121-6.192,6.121c-2.664,0-5.376-1.584-5.544-5.016h3.36c0.144,1.391,0.888,2.326,2.376,2.326
+ c1.607,0,2.544-1.367,2.544-3.191c0-1.512-0.72-3.047-2.496-3.047c-0.456,0-1.608,0.023-2.256,1.223l-3-0.143l1.176-9.361h9.36
+ v2.832h-6.937L19.342,14.943z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg
new file mode 100644
index 0000000..01d6bf8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H3.813V10.412z"/>
+ <path style="fill:#FFFFFF;" d="M24.309,11.78c-0.097-0.96-0.721-1.633-1.969-1.633c-2.184,0-2.688,2.496-2.808,4.704L19.58,14.9
+ c0.456-0.624,1.296-1.416,3.191-1.416c3.529,0,5.209,2.712,5.209,5.256c0,3.72-2.28,6.216-5.568,6.216
+ c-5.16,0-6.168-4.32-6.168-8.568c0-3.24,0.432-8.928,6.336-8.928c0.695,0,2.641,0.264,3.48,1.104
+ c0.936,0.912,1.271,1.416,1.584,3.217H24.309z M22.172,16.172c-1.271,0-2.568,0.792-2.568,2.928c0,1.849,1.056,3.168,2.664,3.168
+ c1.225,0,2.353-0.936,2.353-3.239C24.62,16.868,23.229,16.172,22.172,16.172z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg
new file mode 100644
index 0000000..0a04c55
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.479,11.079h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.04h-3.36V13.43H3.479V11.079z"/>
+ <path style="fill:#FFFFFF;" d="M27.838,11.006c-1.631,1.776-5.807,6.816-6.215,14.16h-3.457c0.36-6.816,4.632-12.24,6.072-13.776
+ h-8.472l0.072-2.976h12V11.006z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg
new file mode 100644
index 0000000..1cb891b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M4.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H4.813V10.412z"/>
+ <path style="fill:#FFFFFF;" d="M23.172,24.956c-4.392,0-5.904-2.856-5.904-5.185c0-0.863,0-3.119,2.592-4.319
+ c-1.344-0.672-2.064-1.752-2.064-3.336c0-2.904,2.328-4.656,5.304-4.656c3.528,0,5.4,2.088,5.4,4.44
+ c0,1.464-0.6,2.712-1.968,3.432c1.632,0.815,2.544,1.896,2.544,4.104C29.076,21.596,27.684,24.956,23.172,24.956z M23.124,16.916
+ c-1.224,0-2.4,0.792-2.4,2.64c0,1.632,0.936,2.712,2.472,2.712c1.752,0,2.424-1.512,2.424-2.688
+ C25.62,18.38,24.996,16.916,23.124,16.916z M25.284,12.26c0-1.296-0.888-2.112-1.968-2.112c-1.512,0-2.305,0.864-2.305,2.112
+ c0,1.008,0.744,2.112,2.185,2.112C24.516,14.372,25.284,13.484,25.284,12.26z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg
new file mode 100644
index 0000000..e6fbb17
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M4.146,10.746h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.041h-3.36V13.097H4.146V10.746z"/>
+ <path style="fill:#FFFFFF;" d="M20.225,20.898v0.023c0.192,1.176,0.936,1.68,1.968,1.68c1.392,0,2.783-1.176,2.808-4.752
+ l-0.048-0.049c-0.768,1.152-2.088,1.441-3.24,1.441c-3.264,0-5.16-2.473-5.16-5.329c0-4.176,2.472-6.12,5.808-6.12
+ c5.904,0,6,6.36,6,8.76c0,6.601-3.12,8.736-6.192,8.736c-2.904,0-4.992-1.68-5.28-4.391H20.225z M22.434,16.553
+ c1.176,0,2.472-0.84,2.472-2.855c0-1.944-0.841-3.145-2.568-3.145c-0.864,0-2.424,0.433-2.424,2.88
+ C19.913,16.001,21.161,16.553,22.434,16.553z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg
new file mode 100644
index 0000000..07d0339
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M9.668,12.328c0-6.469,4.732-7.028,6.496-7.028c3.808,0,6.833,2.24,6.833,6.271
+ c0,3.416-2.213,5.152-4.145,6.469c-2.632,1.848-4.004,2.744-4.452,3.668h8.624v3.472H9.444c0.14-2.324,0.308-4.76,4.62-7.896
+ c3.584-2.604,5.012-3.612,5.012-5.853c0-1.315-0.84-2.828-2.744-2.828c-2.744,0-2.828,2.269-2.856,3.725H9.668z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg
new file mode 100644
index 0000000..ccbfd40
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M23.172,7.46c4.008,0,5.904,2.76,5.904,8.736c0,5.976-1.896,8.76-5.904,8.76
+ s-5.904-2.784-5.904-8.76C17.268,10.22,19.164,7.46,23.172,7.46z M23.172,22.268c1.92,0,2.448-1.68,2.448-6.071
+ c0-4.393-0.528-6.049-2.448-6.049s-2.448,1.656-2.448,6.049C20.724,20.588,21.252,22.268,23.172,22.268z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg
new file mode 100644
index 0000000..93ec53f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M5.306,13.151c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392v2.976H5.114c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H5.306z"/>
+ <path style="fill:#FFFFFF;" d="M19.49,10.079h0.48c3.239,0,4.104-1.681,4.176-2.952h2.761v17.04h-3.361V12.431H19.49V10.079z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg
new file mode 100644
index 0000000..f48c5f3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M17.316,13.484c0-5.545,4.056-6.024,5.568-6.024c3.265,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.553,5.544c-2.256,1.584-3.432,2.353-3.815,3.145h7.392V24.5h-11.64c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.353-2.424c-2.352,0-2.423,1.944-2.447,3.192H17.316z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg
new file mode 100644
index 0000000..6624212
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M21.612,14.636h0.528c1.008,0,2.855-0.096,2.855-2.304c0-0.624-0.287-2.185-2.136-2.185
+ c-2.304,0-2.304,2.185-2.304,2.784h-3.12c0-3.191,1.8-5.472,5.64-5.472c2.28,0,5.28,1.152,5.28,4.752
+ c0,1.728-1.08,2.808-2.04,3.24V15.5c0.6,0.168,2.568,1.056,2.568,3.96c0,3.216-2.377,5.496-5.809,5.496
+ c-1.607,0-5.928-0.36-5.928-5.688h3.288l-0.024,0.024c0,0.912,0.24,2.976,2.496,2.976c1.344,0,2.521-0.911,2.521-2.808
+ c0-2.328-2.257-2.424-3.816-2.424V14.636z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg
new file mode 100644
index 0000000..a3d5525
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M4.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H4.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H4.972z"/>
+ <path style="fill:#FFFFFF;" d="M30.124,20.732h-1.896V24.5h-3.36v-3.768h-6.72v-2.904L24.412,7.46h3.816v10.656h1.896V20.732z
+ M24.868,18.116c0-4.128,0.071-6.792,0.071-7.32h-0.047l-4.272,7.32H24.868z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg
new file mode 100644
index 0000000..56614a9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M20.676,14.276c0.624-0.433,1.393-0.937,3.049-0.937c2.279,0,5.16,1.584,5.16,5.496
+ c0,2.328-1.177,6.12-6.193,6.12c-2.664,0-5.375-1.584-5.543-5.016h3.36c0.144,1.392,0.889,2.327,2.376,2.327
+ c1.608,0,2.544-1.367,2.544-3.191c0-1.513-0.72-3.048-2.496-3.048c-0.455,0-1.607,0.023-2.256,1.224l-3-0.144l1.176-9.36h9.36
+ v2.832h-6.937L20.676,14.276z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg
new file mode 100644
index 0000000..56faeac
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M25.309,11.78c-0.097-0.96-0.721-1.633-1.969-1.633c-2.184,0-2.688,2.496-2.808,4.704L20.58,14.9
+ c0.456-0.624,1.296-1.416,3.191-1.416c3.529,0,5.209,2.712,5.209,5.256c0,3.72-2.28,6.216-5.568,6.216
+ c-5.16,0-6.168-4.32-6.168-8.568c0-3.24,0.432-8.928,6.336-8.928c0.695,0,2.641,0.264,3.48,1.104
+ c0.936,0.912,1.271,1.416,1.584,3.217H25.309z M23.172,16.172c-1.271,0-2.568,0.792-2.568,2.928c0,1.849,1.056,3.168,2.664,3.168
+ c1.225,0,2.353-0.936,2.353-3.239C25.62,16.868,24.229,16.172,23.172,16.172z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg
new file mode 100644
index 0000000..a75c812
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M29.172,10.34c-1.632,1.776-5.808,6.816-6.216,14.16H19.5c0.36-6.816,4.632-12.24,6.072-13.776
+ H17.1l0.072-2.976h12V10.34z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg
new file mode 100644
index 0000000..7f8cf1a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M23.172,24.956c-4.392,0-5.904-2.856-5.904-5.185c0-0.863,0-3.119,2.592-4.319
+ c-1.344-0.672-2.064-1.752-2.064-3.336c0-2.904,2.328-4.656,5.304-4.656c3.528,0,5.4,2.088,5.4,4.44
+ c0,1.464-0.6,2.712-1.968,3.432c1.632,0.815,2.544,1.896,2.544,4.104C29.076,21.596,27.684,24.956,23.172,24.956z M23.124,16.916
+ c-1.224,0-2.4,0.792-2.4,2.64c0,1.632,0.936,2.712,2.472,2.712c1.752,0,2.424-1.512,2.424-2.688
+ C25.62,18.38,24.996,16.916,23.124,16.916z M25.284,12.26c0-1.296-0.888-2.112-1.968-2.112c-1.512,0-2.305,0.864-2.305,2.112
+ c0,1.008,0.744,2.112,2.185,2.112C24.516,14.372,25.284,13.484,25.284,12.26z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg
new file mode 100644
index 0000000..cb63adf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376
+ c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768
+ c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/>
+ <path style="fill:#FFFFFF;" d="M20.893,20.564v0.023c0.191,1.176,0.936,1.68,1.967,1.68c1.393,0,2.785-1.176,2.809-4.752
+ l-0.048-0.048c-0.769,1.152-2.088,1.44-3.24,1.44c-3.264,0-5.16-2.473-5.16-5.328c0-4.176,2.472-6.12,5.807-6.12
+ c5.904,0,6.001,6.36,6.001,8.76c0,6.601-3.12,8.736-6.192,8.736c-2.904,0-4.992-1.68-5.28-4.392H20.893z M23.1,16.22
+ c1.176,0,2.473-0.84,2.473-2.855c0-1.944-0.84-3.145-2.568-3.145c-0.863,0-2.424,0.433-2.424,2.88
+ C20.58,15.668,21.828,16.22,23.1,16.22z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg
new file mode 100644
index 0000000..918be80
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M15.127,14.005h0.616c1.176,0,3.332-0.112,3.332-2.688c0-0.728-0.336-2.548-2.492-2.548
+ c-2.688,0-2.688,2.548-2.688,3.248h-3.64c0-3.724,2.1-6.384,6.58-6.384c2.66,0,6.16,1.344,6.16,5.544
+ c0,2.016-1.261,3.276-2.38,3.78v0.056c0.699,0.196,2.996,1.232,2.996,4.62c0,3.752-2.772,6.412-6.776,6.412
+ c-1.876,0-6.916-0.42-6.916-6.636h3.836l-0.028,0.027c0,1.064,0.28,3.473,2.912,3.473c1.568,0,2.94-1.064,2.94-3.276
+ c0-2.716-2.632-2.828-4.452-2.828V14.005z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg
new file mode 100644
index 0000000..dc43ba1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M8.268,14.636h0.528c1.008,0,2.856-0.096,2.856-2.304c0-0.624-0.288-2.185-2.136-2.185
+ c-2.304,0-2.304,2.185-2.304,2.784h-3.12c0-3.191,1.8-5.472,5.64-5.472c2.28,0,5.28,1.152,5.28,4.752
+ c0,1.728-1.08,2.808-2.04,3.24V15.5c0.6,0.168,2.568,1.056,2.568,3.96c0,3.216-2.376,5.496-5.808,5.496
+ c-1.608,0-5.928-0.36-5.928-5.688h3.288l-0.024,0.024c0,0.912,0.24,2.976,2.496,2.976c1.344,0,2.52-0.911,2.52-2.808
+ c0-2.328-2.256-2.424-3.816-2.424V14.636z"/>
+ <path style="fill:#FFFFFF;" d="M23.172,7.46c4.008,0,5.904,2.76,5.904,8.736c0,5.976-1.896,8.76-5.904,8.76
+ s-5.904-2.784-5.904-8.76C17.268,10.22,19.164,7.46,23.172,7.46z M23.172,22.268c1.92,0,2.448-1.68,2.448-6.071
+ c0-4.393-0.528-6.049-2.448-6.049s-2.448,1.656-2.448,6.049C20.724,20.588,21.252,22.268,23.172,22.268z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg
new file mode 100644
index 0000000..8eb6a53
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M21.891,20.784h-2.212v4.396h-3.92v-4.396h-7.84v-3.389L15.227,5.3h4.452v12.432h2.212V20.784z
+ M15.759,17.731c0-4.815,0.084-7.924,0.084-8.54h-0.056l-4.984,8.54H15.759z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg
new file mode 100644
index 0000000..ca7a9f2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M14.035,14.252c0.728-0.504,1.624-1.092,3.556-1.092c2.66,0,6.02,1.848,6.02,6.411
+ c0,2.717-1.372,7.141-7.224,7.141c-3.108,0-6.272-1.849-6.468-5.853h3.92c0.168,1.624,1.036,2.717,2.772,2.717
+ c1.876,0,2.968-1.597,2.968-3.725c0-1.764-0.839-3.556-2.912-3.556c-0.532,0-1.876,0.028-2.632,1.428l-3.5-0.168l1.372-10.92
+ h10.919v3.304h-8.092L14.035,14.252z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg
new file mode 100644
index 0000000..783a0b9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M19.106,10.673c-0.112-1.12-0.84-1.904-2.296-1.904c-2.548,0-3.136,2.912-3.276,5.488l0.056,0.056
+ c0.532-0.728,1.512-1.651,3.724-1.651c4.116,0,6.077,3.164,6.077,6.131c0,4.34-2.66,7.252-6.497,7.252
+ c-6.02,0-7.196-5.039-7.196-9.996c0-3.78,0.504-10.416,7.392-10.416c0.812,0,3.08,0.308,4.061,1.288
+ c1.092,1.063,1.483,1.652,1.848,3.752H19.106z M16.614,15.797c-1.484,0-2.996,0.924-2.996,3.416c0,2.156,1.232,3.697,3.108,3.697
+ c1.428,0,2.745-1.094,2.745-3.781C19.471,16.609,17.846,15.797,16.614,15.797z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg
new file mode 100644
index 0000000..59b3714
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M24.28,9.66c-1.904,2.071-6.776,7.951-7.252,16.52h-4.032c0.42-7.952,5.404-14.28,7.084-16.072
+ h-9.884l0.084-3.472h14V9.66z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg
new file mode 100644
index 0000000..c1803a3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M16.28,26.712c-5.124,0-6.888-3.332-6.888-6.048c0-1.009,0-3.641,3.024-5.04
+ c-1.568-0.784-2.408-2.044-2.408-3.893c0-3.388,2.716-5.432,6.188-5.432c4.116,0,6.3,2.436,6.3,5.18
+ c0,1.708-0.7,3.164-2.296,4.004c1.903,0.952,2.968,2.212,2.968,4.788C23.168,22.792,21.544,26.712,16.28,26.712z M16.224,17.332
+ c-1.428,0-2.8,0.924-2.8,3.08c0,1.903,1.092,3.164,2.884,3.164c2.043,0,2.829-1.765,2.829-3.137
+ C19.137,19.04,18.408,17.332,16.224,17.332z M18.744,11.899c0-1.512-1.036-2.464-2.296-2.464c-1.764,0-2.688,1.008-2.688,2.464
+ c0,1.177,0.868,2.464,2.548,2.464C17.848,14.363,18.744,13.328,18.744,11.899z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg
new file mode 100644
index 0000000..bc149d3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33"
+ style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve">
+<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/>
+<g>
+ <g style="enable-background:new ;">
+ <path style="fill:#FFFFFF;" d="M13.953,21.921v0.027c0.224,1.372,1.092,1.961,2.296,1.961c1.624,0,3.248-1.372,3.276-5.545
+ l-0.057-0.056c-0.896,1.344-2.436,1.68-3.78,1.68c-3.808,0-6.02-2.884-6.02-6.216c0-4.872,2.884-7.14,6.776-7.14
+ c6.888,0,7,7.42,7,10.22c0,7.7-3.641,10.192-7.224,10.192c-3.388,0-5.824-1.96-6.16-5.124H13.953z M16.529,16.853
+ c1.372,0,2.884-0.979,2.884-3.332c0-2.268-0.98-3.668-2.996-3.668c-1.008,0-2.828,0.504-2.828,3.36
+ C13.589,16.209,15.045,16.853,16.529,16.853z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg
new file mode 100644
index 0000000..dd84f3f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:#FFFFFF;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke-width:6.6112;stroke-linecap:round;stroke-linejoin:round;">
+ <!ENTITY st2 "stroke:#FFFFFF;stroke-width:6.6112;">
+ <!ENTITY st3 "fill:none;stroke:none;">
+ <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st5 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st4;">
+ <g>
+ <path style="&st2;" d="M41.7,35.3L26.6,9.4c-0.6-1-1.7-1.7-2.9-1.6c-1.2,0-2.3,0.7-2.9,1.7L6.3,35.4c-0.6,1-0.6,2.3,0,3.3c0.6,1,1.7,1.6,2.9,1.6h29.6c1.2,0,2.3-0.6,2.9-1.7c0.6-1,0.6-2.3,0-3.3z"/>
+ <path style="&st1;" d="M23.7,11L9.2,37h29.6L23.7,11z"/>
+ <path style="&st0;" d="M23.7,11.9L10.3,36.1h27.5l-14-24.1z"/>
+ <g>
+ <path style="&st5;" d="M24.1,34c-1.1,0-1.8-0.8-1.8-1.8c0-1.1,0.7-1.8,1.8-1.8c1.1,0,1.8,0.7,1.8,1.8c0,1-0.7,1.8-1.8,1.8h0z M22.9,29.3l-0.4-9.1h3.2l-0.4,9.1h-2.3z"/>
+ </g>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st4;">
+ <path style="&st3;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg
new file mode 100644
index 0000000..7a0db0b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="caution" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g>
+ <g>
+ <g>
+ <path stroke="#FFFFFF" stroke-width="6.6112" d="M41.629,36.303L26.527,10.403c-0.602-1-1.698-1.7-2.898-1.6
+ c-1.2,0-2.3,0.7-2.9,1.7l-14.5,25.899c-0.6,1-0.6,2.301,0,3.301s1.7,1.6,2.9,1.6h29.599c1.199,0,2.301-0.6,2.899-1.699
+ C42.229,38.604,42.229,37.303,41.629,36.303L41.629,36.303z"/>
+ <g>
+ <path fill="#FFFFFF" stroke="#FFCC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M23.581,12.003
+ l-14.5,26H38.68L23.581,12.003z"/>
+ <polygon fill="#FFFFFF" stroke="#FFCD00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.582,12.054 9.137,37.953 38.622,37.953 "/>
+ <polygon fill="#FFFFFF" stroke="#FFCE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.583,12.104 9.193,37.9 38.566,37.9 "/>
+ <polygon fill="#FFFFFF" stroke="#FFCF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.583,12.153 9.25,37.854 38.508,37.854 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD000" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.584,12.205 9.309,37.805 38.451,37.805 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD100" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.585,12.253 9.364,37.753 38.395,37.753 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD200" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.586,12.304 9.421,37.703 38.337,37.703 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD300" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.587,12.354 9.479,37.652 38.279,37.652 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD400" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.588,12.403 9.537,37.604 38.223,37.604 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD500" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.589,12.455 9.591,37.553 38.166,37.553 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.591,12.503 9.649,37.503 38.109,37.503 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD700" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.591,12.554 9.707,37.453 38.053,37.453 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD800" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.593,12.604 9.764,37.402 37.996,37.402 "/>
+ <polygon fill="#FFFFFF" stroke="#FFD900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.594,12.653 9.819,37.354 37.939,37.354 "/>
+ <polygon fill="#FFFFFF" stroke="#FFDA00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.596,12.705 9.876,37.303 37.882,37.303 "/>
+ <polygon fill="#FFFFFF" stroke="#FFDB00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.597,12.753 9.935,37.253 37.824,37.253 "/>
+ <polygon fill="#FFFFFF" stroke="#FFDC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.599,12.804 9.991,37.203 37.768,37.203 "/>
+ <polygon fill="#FFFFFF" stroke="#FFDD00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.601,12.854 10.047,37.152 37.711,37.152 "/>
+ <polygon fill="#FFFFFF" stroke="#FFDE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.602,12.903 10.104,37.104 37.654,37.104 "/>
+ <polygon fill="#FFFFFF" stroke="#FFDF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.603,12.955 10.163,37.053 37.598,37.053 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE000" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.604,13.003 10.218,37.003 37.54,37.003 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE100" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.604,13.054 10.275,36.953 37.482,36.953 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE200" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.605,13.104 10.333,36.902 37.427,36.902 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE300" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.606,13.153 10.389,36.854 37.37,36.854 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE400" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.607,13.205 10.445,36.805 37.312,36.805 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE500" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.608,13.253 10.502,36.753 37.256,36.753 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.609,13.304 10.561,36.703 37.197,36.703 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.61,13.354 10.617,36.652 37.143,36.652 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE700" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.611,13.403 10.673,36.604 37.085,36.604 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE800" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.613,13.455 10.73,36.553 37.027,36.553 "/>
+ <polygon fill="#FFFFFF" stroke="#FFE900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.614,13.503 10.789,36.503 36.971,36.503 "/>
+ <polygon fill="#FFFFFF" stroke="#FFEA00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.616,13.554 10.844,36.453 36.914,36.453 "/>
+ <polygon fill="#FFFFFF" stroke="#FFEB00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.617,13.604 10.901,36.402 36.857,36.402 "/>
+ <polygon fill="#FFFFFF" stroke="#FFEC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.618,13.653 10.958,36.354 36.8,36.354 "/>
+ <polygon fill="#FFFFFF" stroke="#FFED00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.619,13.705 11.017,36.303 36.742,36.303 "/>
+ <polygon fill="#FFFFFF" stroke="#FFEE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.622,13.753 11.071,36.253 36.688,36.253 "/>
+ <polygon fill="#FFFFFF" stroke="#FFEF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.623,13.804 11.129,36.203 36.63,36.203 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF000" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.624,13.854 11.188,36.152 36.572,36.152 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF100" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.625,13.903 11.243,36.104 36.516,36.104 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF200" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.625,13.955 11.299,36.053 36.459,36.053 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF300" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.626,14.003 11.356,36.003 36.4,36.003 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF400" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.627,14.054 11.415,35.953 36.346,35.953 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF500" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.628,14.104 11.471,35.902 36.288,35.902 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.629,14.153 11.527,35.854 36.232,35.854 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF700" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.63,14.205 11.584,35.805 36.174,35.805 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF800" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.631,14.253 11.643,35.753 36.117,35.753 "/>
+ <polygon fill="#FFFFFF" stroke="#FFF900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.632,14.304 11.699,35.703 36.061,35.703 "/>
+ <polygon fill="#FFFFFF" stroke="#FFFA00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.633,14.354 11.754,35.652 36.003,35.652 "/>
+ <polygon fill="#FFFFFF" stroke="#FFFB00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.635,14.403 11.812,35.604 35.945,35.604 "/>
+ <polygon fill="#FFFFFF" stroke="#FFFC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.637,14.455 11.869,35.555 35.891,35.555 "/>
+ <polygon fill="#FFFFFF" stroke="#FFFD00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.638,14.503 11.925,35.503 35.833,35.503 "/>
+ <polygon fill="#FFFFFF" stroke="#FFFE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 23.639,14.554 11.982,35.453 35.775,35.453 "/>
+ <path fill="#FFFFFF" stroke="#FFFF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M23.64,14.604
+ l-11.6,20.8h23.678L23.64,14.604z"/>
+ </g>
+ </g>
+
+ <linearGradient id="XMLID_50_" gradientUnits="userSpaceOnUse" x1="395.8457" y1="758.1504" x2="395.8457" y2="785.7822" gradientTransform="matrix(1 0 0 1 -372 -747)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#FFFF00"/>
+ </linearGradient>
+ <path fill="url(#XMLID_50_)" d="M38.891,34.532L26.055,12.519c-0.511-0.85-1.443-1.445-2.462-1.36
+ c-1.02,0-1.955,0.595-2.465,1.445L8.8,34.617c-0.51,0.851-0.51,1.953,0,2.805c0.51,0.852,1.445,1.36,2.465,1.36h25.158
+ c1.021,0,1.956-0.511,2.467-1.445C39.4,36.484,39.4,35.382,38.891,34.532L38.891,34.532z"/>
+ </g>
+ <g>
+ <path d="M23.929,33.948c-1.1,0-1.8-0.8-1.8-1.8c0-1.102,0.7-1.801,1.8-1.801c1.101,0,1.8,0.699,1.8,1.801
+ C25.729,33.148,25.029,33.948,23.929,33.948L23.929,33.948z M22.729,29.248l-0.4-9.1h3.2l-0.399,9.1h-2.297H22.729z"/>
+ </g>
+</g>
+<g id="crop_x0020_marks">
+ <path fill="none" d="M47.93,49.049H-0.071v-48H47.93V49.049z"/>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg
new file mode 100644
index 0000000..d6dbc01
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg
@@ -0,0 +1,498 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g id="Home">
+ <g>
+ <g id="Chimney">
+ <g>
+ <path fill="#660000" d="M30.417,17.563c2.776,2.348,8.258,0.835,7.742,0.434c0-1.2,0-6.9,0-6.9c0-1.2-0.802-2-2-2h-4.802
+ c-1,0-1.698,0.6-1.899,1.5C28.648,9.916,28.359,15.822,30.417,17.563z"/>
+ <path fill="#670000" d="M30.422,17.556c2.771,2.343,8.244,0.833,7.729,0.433c0-1.199,0-6.889,0-6.889
+ c0-1.198-0.799-1.997-1.996-1.997h-4.793c-0.998,0-1.695,0.599-1.896,1.498C28.657,9.921,28.368,15.818,30.422,17.556z"/>
+ <path fill="#680000" d="M30.428,17.548c2.768,2.34,8.229,0.832,7.717,0.432c0-1.196,0-6.876,0-6.876
+ c0-1.196-0.799-1.993-1.994-1.993h-4.783c-0.997,0-1.693,0.598-1.895,1.495C28.665,9.927,28.377,15.813,30.428,17.548z"/>
+ <path fill="#690000" d="M30.434,17.541c2.762,2.336,8.215,0.831,7.703,0.432c0-1.194,0-6.865,0-6.865
+ c0-1.194-0.798-1.989-1.99-1.989H31.37c-0.994,0-1.69,0.596-1.892,1.492C28.674,9.932,28.387,15.809,30.434,17.541z"/>
+ <path fill="#6B0000" d="M30.438,17.533c2.758,2.332,8.203,0.829,7.69,0.431c0-1.192,0-6.853,0-6.853
+ c0-1.192-0.796-1.987-1.987-1.987h-4.768c-0.993,0-1.688,0.596-1.889,1.49C28.682,9.937,28.395,15.804,30.438,17.533z"/>
+ <path fill="#6C0000" d="M30.443,17.525c2.752,2.328,8.188,0.828,7.677,0.43c0-1.19,0-6.841,0-6.841
+ c0-1.19-0.795-1.983-1.983-1.983h-4.76c-0.99,0-1.686,0.595-1.885,1.487C28.689,9.943,28.402,15.799,30.443,17.525z"/>
+ <path fill="#6D0000" d="M30.448,17.518c2.747,2.323,8.174,0.826,7.663,0.429c0-1.188,0-6.829,0-6.829
+ c0-1.188-0.793-1.979-1.979-1.979h-4.751c-0.99,0-1.682,0.593-1.881,1.485C28.698,9.949,28.412,15.795,30.448,17.518z"/>
+ <path fill="#6E0000" d="M30.454,17.51c2.743,2.32,8.159,0.825,7.649,0.429c0-1.187,0-6.818,0-6.818
+ c0-1.186-0.791-1.976-1.977-1.976h-4.744c-0.986,0-1.679,0.592-1.877,1.482C28.707,9.954,28.421,15.791,30.454,17.51z"/>
+ <path fill="#6F0000" d="M30.46,17.503c2.738,2.315,8.146,0.824,7.636,0.427c0-1.184,0-6.806,0-6.806
+ c0-1.184-0.789-1.973-1.972-1.973h-4.735c-0.986,0-1.677,0.592-1.875,1.479C28.715,9.96,28.43,15.786,30.46,17.503z"/>
+ <path fill="#700000" d="M30.465,17.495c2.733,2.312,8.131,0.822,7.623,0.427c0-1.182,0-6.794,0-6.794
+ c0-1.182-0.789-1.969-1.969-1.969h-4.729c-0.983,0-1.673,0.59-1.871,1.477C28.725,9.965,28.438,15.781,30.465,17.495z"/>
+ <path fill="#720000" d="M30.471,17.487c2.729,2.308,8.116,0.821,7.609,0.426c0-1.18,0-6.782,0-6.782
+ c0-1.179-0.787-1.966-1.967-1.966h-4.719c-0.982,0-1.67,0.589-1.867,1.475C28.73,9.97,28.447,15.776,30.471,17.487z"/>
+ <path fill="#730000" d="M30.477,17.48c2.724,2.304,8.103,0.819,7.597,0.426c0-1.178,0-6.771,0-6.771
+ c0-1.177-0.786-1.962-1.962-1.962H31.4c-0.981,0-1.668,0.589-1.865,1.472C28.74,9.976,28.456,15.772,30.477,17.48z"/>
+ <path fill="#740000" d="M30.48,17.473c2.72,2.299,8.088,0.817,7.584,0.424c0-1.176,0-6.759,0-6.759
+ c0-1.175-0.785-1.959-1.959-1.959h-4.703c-0.979,0-1.664,0.587-1.861,1.469C28.748,9.981,28.465,15.767,30.48,17.473z"/>
+ <path fill="#750000" d="M30.484,17.465c2.717,2.295,8.076,0.816,7.572,0.424c0-1.174,0-6.747,0-6.747
+ c0-1.174-0.783-1.956-1.957-1.956h-4.693c-0.979,0-1.661,0.586-1.858,1.467C28.757,9.987,28.475,15.763,30.484,17.465z"/>
+ <path fill="#760000" d="M30.491,17.458c2.71,2.292,8.061,0.815,7.558,0.423c0-1.172,0-6.735,0-6.735
+ c0-1.171-0.781-1.953-1.953-1.953H31.41c-0.977,0-1.658,0.585-1.854,1.465C28.766,9.993,28.482,15.758,30.491,17.458z"/>
+ <path fill="#770000" d="M30.496,17.45c2.706,2.288,8.047,0.813,7.545,0.422c0-1.17,0-6.724,0-6.724
+ c0-1.169-0.781-1.949-1.949-1.949h-4.678c-0.975,0-1.656,0.584-1.854,1.461C28.773,9.998,28.491,15.754,30.496,17.45z"/>
+ <path fill="#790000" d="M30.502,17.442c2.701,2.284,8.032,0.812,7.531,0.422c0-1.167,0-6.712,0-6.712
+ c0-1.167-0.779-1.945-1.945-1.945h-4.671c-0.972,0-1.651,0.583-1.849,1.458C28.781,10.004,28.5,15.749,30.502,17.442z"/>
+ <path fill="#7A0000" d="M30.507,17.435c2.696,2.28,8.019,0.811,7.519,0.421c0-1.166,0-6.7,0-6.7
+ c0-1.166-0.777-1.942-1.942-1.942h-4.661c-0.971,0-1.648,0.583-1.845,1.457C28.79,10.009,28.509,15.745,30.507,17.435z"/>
+ <path fill="#7B0000" d="M30.514,17.427c2.689,2.276,8.004,0.81,7.504,0.42c0-1.164,0-6.688,0-6.688
+ c0-1.163-0.776-1.938-1.938-1.938h-4.653c-0.97,0-1.646,0.582-1.842,1.454C28.798,10.014,28.518,15.74,30.514,17.427z"/>
+ <path fill="#7C0000" d="M30.518,17.42c2.688,2.271,7.99,0.808,7.491,0.419c0-1.162,0-6.677,0-6.677
+ c0-1.161-0.774-1.935-1.935-1.935h-4.646c-0.968,0-1.645,0.58-1.839,1.451C28.807,10.02,28.525,15.736,30.518,17.42z"/>
+ <path fill="#7D0000" d="M30.521,17.412c2.683,2.268,7.978,0.806,7.479,0.418c0-1.159,0-6.665,0-6.665
+ c0-1.159-0.774-1.932-1.933-1.932h-4.637c-0.967,0-1.642,0.58-1.836,1.449C28.814,10.025,28.535,15.73,30.521,17.412z"/>
+ <path fill="#7E0000" d="M30.527,17.404c2.678,2.264,7.963,0.805,7.466,0.418c0-1.157,0-6.652,0-6.652
+ c0-1.158-0.772-1.929-1.929-1.929h-4.629c-0.965,0-1.639,0.578-1.832,1.446C28.823,10.031,28.544,15.726,30.527,17.404z"/>
+ <path fill="#800000" d="M30.533,17.397c2.673,2.26,7.947,0.804,7.451,0.417c0-1.155,0-6.641,0-6.641
+ c0-1.155-0.771-1.925-1.924-1.925h-4.621c-0.963,0-1.635,0.577-1.83,1.443C28.831,10.037,28.553,15.722,30.533,17.397z"/>
+ <path fill="#810000" d="M30.538,17.39c2.668,2.255,7.935,0.802,7.438,0.417c0-1.153,0-6.629,0-6.629
+ c0-1.153-0.77-1.922-1.922-1.922h-4.611c-0.961,0-1.633,0.576-1.826,1.442C28.84,10.042,28.562,15.717,30.538,17.39z"/>
+ <path fill="#820000" d="M30.544,17.382c2.663,2.252,7.92,0.801,7.427,0.416c0-1.151,0-6.618,0-6.618
+ c0-1.151-0.77-1.918-1.92-1.918h-4.604c-0.961,0-1.631,0.575-1.823,1.438C28.85,10.047,28.57,15.713,30.544,17.382z"/>
+ <path fill="#830000" d="M30.549,17.375c2.659,2.248,7.906,0.799,7.413,0.415c0-1.149,0-6.606,0-6.606
+ c0-1.149-0.769-1.915-1.915-1.915H31.45c-0.957,0-1.626,0.574-1.819,1.436C28.855,10.053,28.579,15.708,30.549,17.375z"/>
+ <path fill="#840000" d="M30.555,17.367c2.653,2.243,7.893,0.797,7.399,0.414c0-1.147,0-6.594,0-6.594
+ c0-1.147-0.767-1.911-1.912-1.911h-4.588c-0.955,0-1.623,0.573-1.815,1.434C28.865,10.059,28.588,15.704,30.555,17.367z"/>
+ <path fill="#850000" d="M30.561,17.359c2.648,2.24,7.877,0.797,7.387,0.414c0-1.145,0-6.583,0-6.583
+ c0-1.145-0.766-1.908-1.908-1.908h-4.58c-0.954,0-1.621,0.572-1.812,1.431C28.873,10.064,28.598,15.699,30.561,17.359z"/>
+ <path fill="#860000" d="M30.564,17.352c2.645,2.235,7.863,0.795,7.373,0.413c0-1.143,0-6.57,0-6.57
+ c0-1.143-0.764-1.905-1.904-1.905h-4.571c-0.953,0-1.618,0.571-1.81,1.428C28.882,10.069,28.605,15.694,30.564,17.352z"/>
+ <path fill="#880000" d="M30.57,17.344c2.64,2.232,7.85,0.794,7.359,0.412c0-1.141,0-6.559,0-6.559
+ c0-1.141-0.762-1.901-1.902-1.901h-4.562c-0.949,0-1.613,0.57-1.806,1.426C28.891,10.075,28.613,15.689,30.57,17.344z"/>
+ <path fill="#890000" d="M30.576,17.337c2.634,2.228,7.835,0.792,7.346,0.411c0-1.139,0-6.547,0-6.547
+ c0-1.139-0.76-1.898-1.896-1.898h-4.557c-0.947,0-1.611,0.569-1.803,1.423C28.898,10.08,28.623,15.685,30.576,17.337z"/>
+ <path fill="#8A0000" d="M30.581,17.33c2.63,2.223,7.821,0.79,7.333,0.41c0-1.137,0-6.535,0-6.535
+ c0-1.137-0.76-1.894-1.895-1.894h-4.547c-0.947,0-1.609,0.567-1.801,1.421C28.906,10.086,28.632,15.681,30.581,17.33z"/>
+ <path fill="#8B0000" d="M30.587,17.321c2.625,2.22,7.808,0.79,7.319,0.41c0-1.135,0-6.523,0-6.523
+ c0-1.135-0.758-1.891-1.891-1.891h-4.539c-0.945,0-1.606,0.567-1.797,1.418C28.915,10.091,28.641,15.676,30.587,17.321z"/>
+ <path fill="#8C0000" d="M30.592,17.314c2.62,2.216,7.793,0.788,7.307,0.409c0-1.132,0-6.512,0-6.512
+ c0-1.132-0.756-1.887-1.887-1.887H31.48c-0.943,0-1.604,0.566-1.793,1.416C28.923,10.097,28.648,15.671,30.592,17.314z"/>
+ <path fill="#8D0000" d="M30.598,17.307c2.614,2.211,7.778,0.787,7.293,0.409c0-1.131,0-6.5,0-6.5
+ c0-1.13-0.754-1.884-1.884-1.884h-4.522c-0.941,0-1.601,0.564-1.791,1.413C28.932,10.103,28.658,15.667,30.598,17.307z"/>
+ <path fill="#8F0000" d="M30.604,17.299c2.609,2.208,7.765,0.785,7.279,0.408c0-1.128,0-6.488,0-6.488
+ c0-1.128-0.753-1.881-1.881-1.881h-4.516c-0.939,0-1.598,0.564-1.786,1.411C28.939,10.107,28.668,15.662,30.604,17.299z"/>
+ <path fill="#900000" d="M30.607,17.292c2.605,2.204,7.75,0.784,7.268,0.407c0-1.127,0-6.477,0-6.477
+ c0-1.127-0.753-1.877-1.878-1.877h-4.506c-0.938,0-1.595,0.563-1.783,1.408C28.948,10.113,28.676,15.658,30.607,17.292z"/>
+ <path fill="#910000" d="M30.611,17.284c2.604,2.199,7.738,0.782,7.256,0.406c0-1.124,0-6.464,0-6.464
+ c0-1.125-0.751-1.874-1.874-1.874h-4.498c-0.938,0-1.593,0.562-1.781,1.405C28.956,10.119,28.686,15.653,30.611,17.284z"/>
+ <path fill="#920000" d="M30.618,17.276c2.597,2.196,7.723,0.781,7.241,0.406c0-1.123,0-6.453,0-6.453
+ c0-1.123-0.75-1.871-1.871-1.871h-4.49c-0.936,0-1.588,0.561-1.775,1.403C28.965,10.124,28.693,15.649,30.618,17.276z"/>
+ <path fill="#930000" d="M30.623,17.269c2.592,2.191,7.709,0.779,7.229,0.404c0-1.12,0-6.441,0-6.441
+ c0-1.121-0.748-1.867-1.867-1.867h-4.481c-0.935,0-1.586,0.56-1.772,1.4C28.973,10.13,28.703,15.644,30.623,17.269z"/>
+ <path fill="#940000" d="M30.629,17.261c2.587,2.188,7.694,0.778,7.214,0.404c0-1.119,0-6.43,0-6.43
+ c0-1.119-0.745-1.863-1.862-1.863h-4.475c-0.932,0-1.583,0.559-1.771,1.397C28.98,10.135,28.711,15.64,30.629,17.261z"/>
+ <path fill="#960000" d="M30.634,17.254c2.583,2.184,7.681,0.776,7.201,0.403c0-1.116,0-6.417,0-6.417
+ c0-1.116-0.745-1.86-1.86-1.86H31.51c-0.93,0-1.58,0.558-1.768,1.395C28.988,10.141,28.721,15.635,30.634,17.254z"/>
+ <path fill="#970000" d="M30.641,17.247c2.576,2.179,7.666,0.775,7.188,0.402c0-1.115,0-6.406,0-6.406
+ c0-1.114-0.744-1.856-1.855-1.856h-4.459c-0.928,0-1.576,0.557-1.764,1.393C28.998,10.146,28.729,15.63,30.641,17.247z"/>
+ <path fill="#980000" d="M30.645,17.239c2.573,2.176,7.652,0.774,7.176,0.401c0-1.112,0-6.394,0-6.394
+ c0-1.112-0.742-1.853-1.854-1.853h-4.448c-0.928,0-1.574,0.556-1.762,1.39C29.006,10.151,28.738,15.625,30.645,17.239z"/>
+ <path fill="#990000" d="M30.65,17.231c2.567,2.172,7.638,0.772,7.16,0.401c0-1.11,0-6.383,0-6.383c0-1.11-0.74-1.85-1.85-1.85
+ H31.52c-0.924,0-1.57,0.555-1.758,1.387C29.016,10.157,28.747,15.621,30.65,17.231z"/>
+ <path fill="#9A0000" d="M30.654,17.224c2.563,2.167,7.625,0.771,7.148,0.4c0-1.108,0-6.371,0-6.371
+ c0-1.108-0.74-1.846-1.847-1.846h-4.433c-0.924,0-1.568,0.554-1.756,1.385C29.021,10.163,28.755,15.616,30.654,17.224z"/>
+ <path fill="#9B0000" d="M30.66,17.216c2.561,2.164,7.609,0.769,7.136,0.399c0-1.106,0-6.359,0-6.359
+ c0-1.106-0.737-1.843-1.844-1.843h-4.425c-0.922,0-1.564,0.553-1.752,1.382C29.031,10.168,28.766,15.612,30.66,17.216z"/>
+ <path fill="#9C0000" d="M30.666,17.209c2.555,2.16,7.596,0.768,7.122,0.399c0-1.104,0-6.347,0-6.347
+ c0-1.104-0.737-1.84-1.84-1.84h-4.417c-0.92,0-1.562,0.552-1.748,1.38C29.039,10.174,28.771,15.607,30.666,17.209z"/>
+ <path fill="#9E0000" d="M30.671,17.201c2.55,2.155,7.582,0.767,7.108,0.398c0-1.102,0-6.335,0-6.335
+ c0-1.102-0.735-1.836-1.836-1.836h-4.408c-0.918,0-1.561,0.551-1.745,1.377C29.048,10.179,28.782,15.603,30.671,17.201z"/>
+ <path fill="#9F0000" d="M30.677,17.193c2.544,2.152,7.567,0.765,7.097,0.397c0-1.1,0-6.324,0-6.324
+ c0-1.1-0.735-1.833-1.834-1.833H31.54c-0.916,0-1.558,0.549-1.741,1.375C29.057,10.185,28.79,15.598,30.677,17.193z"/>
+ <path fill="#A00000" d="M30.682,17.186c2.541,2.147,7.555,0.764,7.082,0.396c0-1.098,0-6.312,0-6.312
+ c0-1.098-0.731-1.829-1.828-1.829h-4.393c-0.915,0-1.555,0.548-1.738,1.372C29.064,10.19,28.8,15.594,30.682,17.186z"/>
+ <path fill="#A10000" d="M30.688,17.178c2.535,2.144,7.539,0.763,7.068,0.396c0-1.096,0-6.3,0-6.3
+ c0-1.096-0.73-1.826-1.826-1.826h-4.384c-0.912,0-1.551,0.547-1.733,1.37C29.072,10.196,28.809,15.589,30.688,17.178z"/>
+ <path fill="#A20000" d="M30.691,17.171c2.531,2.14,7.525,0.761,7.057,0.395c0-1.094,0-6.289,0-6.289
+ c0-1.093-0.73-1.822-1.822-1.822H31.55c-0.911,0-1.548,0.546-1.731,1.367C29.081,10.201,28.816,15.584,30.691,17.171z"/>
+ <path fill="#A30000" d="M30.697,17.163c2.525,2.136,7.512,0.76,7.043,0.395c0-1.092,0-6.277,0-6.277
+ c0-1.091-0.729-1.819-1.819-1.819h-4.366c-0.91,0-1.546,0.545-1.729,1.365C29.089,10.207,28.825,15.58,30.697,17.163z"/>
+ <path fill="#A50000" d="M30.703,17.156c2.521,2.132,7.497,0.758,7.029,0.394c0-1.09,0-6.265,0-6.265
+ c0-1.09-0.729-1.816-1.815-1.816h-4.358c-0.908,0-1.543,0.544-1.727,1.362C29.098,10.212,28.835,15.575,30.703,17.156z"/>
+ <path fill="#A60000" d="M30.708,17.148c2.517,2.127,7.483,0.756,7.017,0.393c0-1.087,0-6.253,0-6.253
+ c0-1.088-0.727-1.812-1.812-1.812h-4.351c-0.906,0-1.541,0.543-1.724,1.359C29.105,10.218,28.844,15.571,30.708,17.148z"/>
+ <path fill="#A70000" d="M30.714,17.141c2.511,2.124,7.47,0.755,7.003,0.392c0-1.086,0-6.241,0-6.241
+ c0-1.085-0.725-1.809-1.81-1.809h-4.343c-0.904,0-1.537,0.542-1.719,1.357C29.113,10.223,28.854,15.566,30.714,17.141z"/>
+ <path fill="#A80000" d="M30.719,17.133c2.508,2.12,7.455,0.753,6.99,0.391c0-1.083,0-6.229,0-6.229
+ c0-1.083-0.725-1.806-1.807-1.806h-4.334c-0.902,0-1.533,0.542-1.717,1.354C29.122,10.229,28.861,15.562,30.719,17.133z"/>
+ <path fill="#A90000" d="M30.725,17.125c2.502,2.116,7.44,0.752,6.978,0.391c0-1.082,0-6.218,0-6.218
+ c0-1.081-0.724-1.802-1.804-1.802h-4.325c-0.901,0-1.53,0.54-1.714,1.352C29.131,10.234,28.87,15.557,30.725,17.125z"/>
+ <path fill="#AA0000" d="M30.729,17.118c2.498,2.111,7.428,0.75,6.965,0.39c0-1.08,0-6.206,0-6.206
+ c0-1.079-0.721-1.798-1.799-1.798h-4.318c-0.899,0-1.528,0.539-1.71,1.349C29.139,10.24,28.879,15.552,30.729,17.118z"/>
+ <path fill="#AC0000" d="M30.734,17.11c2.492,2.108,7.412,0.75,6.951,0.389c0-1.078,0-6.194,0-6.194
+ c0-1.077-0.721-1.795-1.797-1.795h-4.311c-0.896,0-1.523,0.538-1.705,1.346C29.146,10.245,28.889,15.548,30.734,17.11z"/>
+ <path fill="#AD0000" d="M30.74,17.103c2.486,2.104,7.398,0.748,6.937,0.389c0-1.076,0-6.183,0-6.183
+ c0-1.075-0.718-1.792-1.792-1.792h-4.302c-0.896,0-1.521,0.537-1.702,1.344C29.154,10.251,28.896,15.543,30.74,17.103z"/>
+ <path fill="#AE0000" d="M30.745,17.096c2.483,2.1,7.385,0.746,6.924,0.388c0-1.074,0-6.171,0-6.171
+ c0-1.073-0.717-1.789-1.788-1.789h-4.294c-0.896,0-1.519,0.537-1.698,1.341C29.164,10.256,28.904,15.539,30.745,17.096z"/>
+ <path fill="#AF0000" d="M30.751,17.088c2.478,2.096,7.37,0.745,6.91,0.387c0-1.072,0-6.159,0-6.159
+ c0-1.071-0.716-1.785-1.785-1.785h-4.285c-0.893,0-1.517,0.535-1.696,1.339C29.172,10.262,28.914,15.534,30.751,17.088z"/>
+ <path fill="#B00000" d="M30.756,17.08c2.475,2.092,7.355,0.744,6.896,0.387c0-1.07,0-6.147,0-6.147
+ c0-1.069-0.713-1.782-1.781-1.782h-4.277c-0.891,0-1.513,0.535-1.691,1.336C29.182,10.267,28.923,15.53,30.756,17.08z"/>
+ <path fill="#B10000" d="M30.762,17.073c2.469,2.088,7.342,0.743,6.885,0.386c0-1.067,0-6.136,0-6.136
+ c0-1.067-0.713-1.778-1.778-1.778h-4.271c-0.889,0-1.51,0.533-1.688,1.334C29.188,10.272,28.932,15.525,30.762,17.073z"/>
+ <path fill="#B30000" d="M30.768,17.065c2.463,2.083,7.328,0.741,6.871,0.385c0-1.065,0-6.124,0-6.124
+ c0-1.065-0.712-1.775-1.775-1.775h-4.262c-0.887,0-1.506,0.532-1.687,1.332C29.197,10.278,28.939,15.521,30.768,17.065z"/>
+ <path fill="#B40000" d="M30.771,17.058c2.459,2.08,7.313,0.74,6.857,0.384c0-1.063,0-6.112,0-6.112
+ c0-1.063-0.71-1.771-1.771-1.771h-4.252c-0.887,0-1.506,0.531-1.685,1.329C29.205,10.284,28.949,15.516,30.771,17.058z"/>
+ <path fill="#B50000" d="M30.777,17.05c2.453,2.076,7.3,0.738,6.845,0.383c0-1.062,0-6.101,0-6.101
+ c0-1.061-0.709-1.768-1.769-1.768h-4.244c-0.885,0-1.502,0.53-1.682,1.326C29.214,10.289,28.958,15.511,30.777,17.05z"/>
+ <path fill="#B60000" d="M30.782,17.043c2.45,2.071,7.286,0.736,6.831,0.382c0-1.059,0-6.088,0-6.088
+ c0-1.059-0.707-1.765-1.766-1.765h-4.236c-0.881,0-1.498,0.529-1.676,1.323C29.223,10.294,28.967,15.507,30.782,17.043z"/>
+ <path fill="#B70000" d="M30.787,17.035c2.445,2.067,7.271,0.735,6.818,0.382c0-1.057,0-6.077,0-6.077
+ c0-1.057-0.705-1.761-1.762-1.761h-4.229c-0.881,0-1.495,0.528-1.674,1.321C29.23,10.3,28.977,15.502,30.787,17.035z"/>
+ <path fill="#B80000" d="M30.793,17.028c2.439,2.063,7.258,0.733,6.807,0.381c0-1.055,0-6.065,0-6.065
+ c0-1.055-0.705-1.758-1.76-1.758h-4.22c-0.879,0-1.493,0.527-1.67,1.318C29.238,10.306,28.984,15.498,30.793,17.028z"/>
+ <path fill="#B90000" d="M30.798,17.02c2.437,2.06,7.244,0.732,6.792,0.38c0-1.053,0-6.053,0-6.053
+ c0-1.053-0.703-1.754-1.754-1.754h-4.212c-0.877,0-1.49,0.526-1.667,1.316C29.247,10.311,28.993,15.493,30.798,17.02z"/>
+ <path fill="#BB0000" d="M30.805,17.013c2.43,2.056,7.229,0.731,6.777,0.379c0-1.051,0-6.042,0-6.042
+ c0-1.051-0.701-1.751-1.751-1.751h-4.204c-0.875,0-1.486,0.525-1.663,1.313C29.255,10.316,29.002,15.488,30.805,17.013z"/>
+ <path fill="#BC0000" d="M30.809,17.005c2.428,2.052,7.217,0.729,6.767,0.379c0-1.049,0-6.03,0-6.03
+ c0-1.048-0.7-1.748-1.748-1.748h-4.195c-0.873,0-1.483,0.524-1.659,1.311C29.264,10.322,29.012,15.484,30.809,17.005z"/>
+ <path fill="#BD0000" d="M30.814,16.998c2.42,2.047,7.201,0.728,6.752,0.378c0-1.047,0-6.018,0-6.018
+ c0-1.046-0.699-1.744-1.744-1.744h-4.188c-0.872,0-1.481,0.523-1.657,1.309C29.271,10.328,29.02,15.48,30.814,16.998z"/>
+ <path fill="#BE0000" d="M30.818,16.99c2.418,2.044,7.188,0.727,6.74,0.377c0-1.045,0-6.006,0-6.006
+ c0-1.044-0.699-1.74-1.742-1.74h-4.178c-0.871,0-1.479,0.522-1.654,1.305C29.279,10.333,29.027,15.475,30.818,16.99z"/>
+ <path fill="#BF0000" d="M30.824,16.982c2.412,2.04,7.174,0.725,6.727,0.376c0-1.043,0-5.994,0-5.994
+ c0-1.043-0.695-1.737-1.736-1.737h-4.172c-0.869,0-1.476,0.521-1.65,1.303C29.288,10.338,29.037,15.47,30.824,16.982z"/>
+ <path fill="#C00000" d="M30.83,16.975c2.406,2.036,7.158,0.724,6.713,0.376c0-1.041,0-5.982,0-5.982
+ c0-1.041-0.695-1.734-1.734-1.734h-4.162c-0.867,0-1.473,0.52-1.647,1.3C29.297,10.344,29.046,15.466,30.83,16.975z"/>
+ <path fill="#C20000" d="M30.835,16.967c2.403,2.032,7.146,0.722,6.7,0.375c0-1.039,0-5.971,0-5.971
+ c0-1.039-0.694-1.73-1.73-1.73H31.65c-0.865,0-1.471,0.519-1.646,1.298C29.305,10.35,29.055,15.461,30.835,16.967z"/>
+ <path fill="#C30000" d="M30.841,16.96c2.397,2.027,7.132,0.721,6.687,0.375c0-1.037,0-5.959,0-5.959
+ c0-1.037-0.691-1.727-1.728-1.727h-4.146c-0.863,0-1.467,0.518-1.643,1.295C29.312,10.355,29.062,15.457,30.841,16.96z"/>
+ <path fill="#C40000" d="M30.846,16.952c2.395,2.023,7.117,0.72,6.674,0.374c0-1.035,0-5.948,0-5.948
+ c0-1.034-0.69-1.724-1.725-1.724h-4.138c-0.862,0-1.464,0.517-1.64,1.293C29.32,10.36,29.072,15.452,30.846,16.952z"/>
+ <path fill="#C50000" d="M30.852,16.945c2.39,2.02,7.104,0.718,6.66,0.373c0-1.033,0-5.936,0-5.936
+ c0-1.032-0.689-1.72-1.721-1.72H31.66c-0.859,0-1.46,0.516-1.635,1.291C29.33,10.366,29.081,15.447,30.852,16.945z"/>
+ <path fill="#C60000" d="M30.855,16.937c2.385,2.016,7.09,0.717,6.646,0.373c0-1.031,0-5.924,0-5.924
+ c0-1.03-0.688-1.717-1.717-1.717h-4.122c-0.858,0-1.458,0.515-1.631,1.288C29.338,10.372,29.09,15.443,30.855,16.937z"/>
+ <path fill="#C70000" d="M30.861,16.93c2.38,2.012,7.074,0.715,6.634,0.372c0-1.029,0-5.913,0-5.913
+ c0-1.028-0.687-1.713-1.714-1.713h-4.113c-0.855,0-1.455,0.514-1.628,1.285C29.348,10.377,29.1,15.438,30.861,16.93z"/>
+ <path fill="#C90000" d="M30.867,16.922c2.374,2.008,7.061,0.714,6.619,0.371c0-1.027,0-5.9,0-5.9c0-1.026-0.686-1.71-1.709-1.71
+ h-4.105c-0.855,0-1.451,0.513-1.625,1.282C29.354,10.382,29.107,15.434,30.867,16.922z"/>
+ <path fill="#CA0000" d="M30.872,16.915c2.37,2.003,7.047,0.712,6.606,0.37c0-1.024,0-5.889,0-5.889
+ c0-1.024-0.685-1.707-1.707-1.707h-4.098c-0.854,0-1.447,0.512-1.621,1.28C29.363,10.388,29.116,15.429,30.872,16.915z"/>
+ <path fill="#CB0000" d="M30.878,16.907c2.364,2,7.032,0.711,6.595,0.37c0-1.022,0-5.877,0-5.877
+ c0-1.022-0.684-1.703-1.703-1.703h-4.09c-0.853,0-1.447,0.511-1.619,1.277C29.371,10.394,29.125,15.424,30.878,16.907z"/>
+ <path fill="#CC0000" d="M30.883,16.899c2.36,1.996,7.02,0.709,6.581,0.369c0-1.021,0-5.865,0-5.865c0-1.02-0.682-1.7-1.7-1.7
+ h-4.08c-0.851,0-1.443,0.51-1.615,1.275C29.38,10.399,29.134,15.42,30.883,16.899z"/>
+ </g>
+
+ <linearGradient id="Chimney_Highlight_1_" gradientUnits="userSpaceOnUse" x1="219.5195" y1="-239.7031" x2="219.5195" y2="-247.9902" gradientTransform="matrix(1 0 0 -1 -186 -230)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#CC0000"/>
+ </linearGradient>
+ <path id="Chimney_Highlight" fill="url(#Chimney_Highlight_1_)" d="M30.883,16.899c2.36,1.996,7.02,0.709,6.581,0.369
+ c0-1.021,0-5.865,0-5.865c0-1.02-0.682-1.7-1.7-1.7h-4.08c-0.851,0-1.443,0.51-1.615,1.275
+ C29.38,10.399,29.134,15.42,30.883,16.899z"/>
+ </g>
+ <g id="House">
+ <g>
+ <path fill="#FFCC00" d="M8.5,24.788c0,2.4,0,14.2,0,14.2c0,1.101,0.8,1.9,1.8,1.9h27.4c1.1,0,1.899-0.9,1.899-2
+ c0,0,0-11.8,0-14.2C40.6,24.688,7.4,24.788,8.5,24.788z"/>
+ <path fill="#FFCD00" d="M8.545,24.812c0,2.395,0,14.159,0,14.159c0,1.097,0.798,1.895,1.794,1.895h27.322
+ c1.097,0,1.894-0.897,1.894-1.993c0,0,0-11.767,0-14.16C40.552,24.711,7.448,24.812,8.545,24.812z"/>
+ <path fill="#FFCE00" d="M8.589,24.835c0,2.387,0,14.119,0,14.119c0,1.094,0.795,1.889,1.79,1.889h27.242
+ c1.094,0,1.889-0.896,1.889-1.988c0,0,0-11.73,0-14.118C40.504,24.735,7.496,24.835,8.589,24.835z"/>
+ <path fill="#FFCF00" d="M8.634,24.857c0,2.38,0,14.077,0,14.077c0,1.091,0.793,1.884,1.785,1.884h27.163
+ c1.09,0,1.883-0.894,1.883-1.981c0,0,0-11.698,0-14.078C40.456,24.758,7.543,24.857,8.634,24.857z"/>
+ <path fill="#FFD000" d="M8.68,24.88c0,2.373,0,14.037,0,14.037c0,1.088,0.791,1.879,1.779,1.879h27.084
+ c1.087,0,1.877-0.892,1.877-1.979c0,0,0-11.663,0-14.036C40.409,24.782,7.592,24.88,8.68,24.88z"/>
+ <path fill="#FFD100" d="M8.725,24.903c0,2.366,0,13.995,0,13.995c0,1.085,0.788,1.874,1.773,1.874h27.006
+ c1.083,0,1.872-0.889,1.872-1.973c0,0,0-11.629,0-13.994C40.361,24.806,7.64,24.903,8.725,24.903z"/>
+ <path fill="#FFD200" d="M8.769,24.925c0,2.359,0,13.955,0,13.955c0,1.082,0.786,1.867,1.769,1.867h26.926
+ c1.081,0,1.866-0.884,1.866-1.965c0,0,0-11.596,0-13.953C40.312,24.829,7.688,24.925,8.769,24.925z"/>
+ <path fill="#FFD300" d="M8.814,24.949c0,2.354,0,13.914,0,13.914c0,1.078,0.784,1.861,1.763,1.861h26.848
+ c1.077,0,1.86-0.882,1.86-1.959c0,0,0-11.562,0-13.914C40.266,24.852,7.736,24.949,8.814,24.949z"/>
+ <path fill="#FFD400" d="M8.858,24.973c0,2.345,0,13.872,0,13.872c0,1.074,0.781,1.855,1.758,1.855h26.768
+ c1.074,0,1.854-0.88,1.854-1.953c0,0,0-11.526,0-13.873C40.217,24.876,7.784,24.973,8.858,24.973z"/>
+ <path fill="#FFD500" d="M8.903,24.997c0,2.338,0,13.83,0,13.83c0,1.072,0.779,1.853,1.753,1.853h26.689
+ c1.07,0,1.85-0.877,1.85-1.948c0,0,0-11.493,0-13.832C40.17,24.898,7.832,24.997,8.903,24.997z"/>
+ <path fill="#FFD600" d="M8.949,25.019c0,2.331,0,13.791,0,13.791c0,1.068,0.777,1.846,1.748,1.846h26.61
+ c1.067,0,1.846-0.875,1.846-1.941c0,0,0-11.459,0-13.791C40.122,24.921,7.88,25.019,8.949,25.019z"/>
+ <path fill="#FFD700" d="M8.993,25.042c0,2.324,0,13.75,0,13.75c0,1.064,0.774,1.84,1.743,1.84h26.532
+ c1.064,0,1.838-0.871,1.838-1.937c0,0,0-11.426,0-13.75C40.074,24.945,7.928,25.042,8.993,25.042z"/>
+ <path fill="#FFD800" d="M9.039,25.065c0,2.316,0,13.708,0,13.708c0,1.063,0.772,1.835,1.737,1.835h26.453
+ c1.062,0,1.834-0.869,1.834-1.931c0,0,0-11.392,0-13.71C40.027,24.968,7.977,25.065,9.039,25.065z"/>
+ <path fill="#FFD900" d="M9.083,25.087c0,2.312,0,13.668,0,13.668c0,1.061,0.77,1.83,1.732,1.83h26.373
+ c1.06,0,1.828-0.867,1.828-1.926c0,0,0-11.356,0-13.668C39.979,24.993,8.024,25.087,9.083,25.087z"/>
+ <path fill="#FFDA00" d="M9.128,25.111c0,2.304,0,13.626,0,13.626c0,1.057,0.767,1.824,1.727,1.824h26.293
+ c1.056,0,1.822-0.864,1.822-1.919c0,0,0-11.323,0-13.627C39.932,25.016,8.072,25.111,9.128,25.111z"/>
+ <path fill="#FFDB00" d="M9.172,25.134c0,2.297,0,13.586,0,13.586c0,1.053,0.766,1.818,1.722,1.818h26.215
+ c1.052,0,1.816-0.861,1.816-1.914c0,0,0-11.289,0-13.586C39.884,25.04,8.12,25.134,9.172,25.134z"/>
+ <path fill="#FFDC00" d="M9.217,25.157c0,2.29,0,13.545,0,13.545c0,1.051,0.763,1.812,1.717,1.812H37.07
+ c1.049,0,1.812-0.858,1.812-1.907c0,0,0-11.256,0-13.545C39.836,25.062,8.168,25.157,9.217,25.157z"/>
+ <path fill="#FFDD00" d="M9.263,25.18c0,2.282,0,13.505,0,13.505c0,1.046,0.76,1.807,1.711,1.807h26.055
+ c1.047,0,1.808-0.855,1.808-1.902c0,0,0-11.221,0-13.502C39.788,25.085,8.216,25.18,9.263,25.18z"/>
+ <path fill="#FFDE00" d="M9.307,25.204c0,2.275,0,13.463,0,13.463c0,1.043,0.758,1.801,1.707,1.801h25.978
+ c1.043,0,1.801-0.854,1.801-1.896c0,0,0-11.188,0-13.463C39.74,25.109,8.265,25.204,9.307,25.204z"/>
+ <path fill="#FFDF00" d="M9.352,25.226c0,2.27,0,13.423,0,13.423c0,1.04,0.756,1.796,1.701,1.796h25.899
+ c1.039,0,1.795-0.852,1.795-1.89c0,0,0-11.153,0-13.423C39.691,25.132,8.312,25.226,9.352,25.226z"/>
+ <path fill="#FFE000" d="M9.397,25.251c0,2.262,0,13.379,0,13.379c0,1.037,0.753,1.791,1.696,1.791h25.819
+ c1.036,0,1.79-0.849,1.79-1.883c0,0,0-11.119,0-13.383C39.645,25.155,8.36,25.251,9.397,25.251z"/>
+ <path fill="#FFE100" d="M9.442,25.272c0,2.255,0,13.34,0,13.34c0,1.034,0.751,1.785,1.691,1.785h25.74
+ c1.033,0,1.784-0.846,1.784-1.879c0,0,0-11.084,0-13.34C39.598,25.179,8.408,25.272,9.442,25.272z"/>
+ <path fill="#FFE200" d="M9.486,25.296c0,2.248,0,13.299,0,13.299c0,1.029,0.749,1.779,1.686,1.779h25.662
+ c1.029,0,1.777-0.844,1.777-1.873c0,0,0-11.051,0-13.299C39.549,25.202,8.457,25.296,9.486,25.296z"/>
+ <path fill="#FFE300" d="M9.532,25.318c0,2.241,0,13.259,0,13.259c0,1.027,0.747,1.773,1.68,1.773h25.583
+ c1.025,0,1.771-0.84,1.771-1.866c0,0,0-11.017,0-13.259C39.502,25.226,8.504,25.318,9.532,25.318z"/>
+ <path fill="#FFE400" d="M9.577,25.341c0,2.234,0,13.218,0,13.218c0,1.024,0.744,1.769,1.675,1.769h25.503
+ c1.022,0,1.769-0.838,1.769-1.859c0,0,0-10.983,0-13.219C39.454,25.249,8.553,25.341,9.577,25.341z"/>
+ <path fill="#FFE500" d="M9.621,25.364c0,2.229,0,13.178,0,13.178c0,1.021,0.742,1.763,1.67,1.763h25.424
+ c1.02,0,1.764-0.835,1.764-1.855c0,0,0-10.948,0-13.176C39.406,25.272,8.601,25.364,9.621,25.364z"/>
+ <path fill="#FFE600" d="M9.666,25.388c0,2.221,0,13.135,0,13.135c0,1.02,0.74,1.758,1.665,1.758h25.345
+ c1.018,0,1.758-0.832,1.758-1.85c0,0,0-10.914,0-13.135C39.357,25.296,8.648,25.388,9.666,25.388z"/>
+ <path fill="#FFE600" d="M9.711,25.411c0,2.215,0,13.094,0,13.094c0,1.016,0.737,1.754,1.66,1.754h25.266
+ c1.016,0,1.752-0.83,1.752-1.846c0,0,0-10.879,0-13.094C39.311,25.319,8.696,25.411,9.711,25.411z"/>
+ <path fill="#FFE700" d="M9.756,25.434c0,2.207,0,13.054,0,13.054c0,1.012,0.735,1.747,1.654,1.747h25.188
+ c1.012,0,1.746-0.827,1.746-1.839c0,0,0-10.846,0-13.053C39.264,25.343,8.745,25.434,9.756,25.434z"/>
+ <path fill="#FFE800" d="M9.801,25.458c0,2.199,0,13.013,0,13.013c0,1.008,0.732,1.741,1.649,1.741h25.108
+ c1.008,0,1.74-0.825,1.74-1.834c0,0,0-10.812,0-13.012C39.215,25.366,8.792,25.458,9.801,25.458z"/>
+ <path fill="#FFE900" d="M9.845,25.48c0,2.192,0,12.972,0,12.972c0,1.006,0.73,1.735,1.644,1.735h25.029
+ c1.006,0,1.735-0.822,1.735-1.827c0,0,0-10.777,0-12.971C39.167,25.39,8.84,25.48,9.845,25.48z"/>
+ <path fill="#FFEA00" d="M9.89,25.503c0,2.187,0,12.931,0,12.931c0,1.002,0.729,1.729,1.639,1.729h24.95
+ c1.002,0,1.729-0.818,1.729-1.82c0,0,0-10.744,0-12.93C39.12,25.413,8.889,25.503,9.89,25.503z"/>
+ <path fill="#FFEB00" d="M9.935,25.526c0,2.18,0,12.891,0,12.891c0,0.998,0.726,1.725,1.634,1.725h24.871
+ c1,0,1.726-0.817,1.726-1.814c0,0,0-10.711,0-12.89C39.072,25.437,8.937,25.526,9.935,25.526z"/>
+ <path fill="#FFEC00" d="M9.98,25.548c0,2.174,0,12.85,0,12.85c0,0.996,0.724,1.721,1.628,1.721H36.4
+ c0.994,0,1.719-0.814,1.719-1.811c0,0,0-10.676,0-12.85C39.023,25.46,8.985,25.548,9.98,25.548z"/>
+ <path fill="#FFED00" d="M10.025,25.572c0,2.165,0,12.808,0,12.808c0,0.992,0.721,1.715,1.623,1.715h24.713
+ c0.99,0,1.713-0.812,1.713-1.805c0,0,0-10.642,0-12.808C38.977,25.482,9.033,25.572,10.025,25.572z"/>
+ <path fill="#FFEE00" d="M10.07,25.595c0,2.158,0,12.768,0,12.768c0,0.989,0.719,1.708,1.618,1.708h24.635
+ c0.987,0,1.706-0.809,1.706-1.798c0,0,0-10.607,0-12.768C38.93,25.505,9.081,25.595,10.07,25.595z"/>
+ <path fill="#FFEF00" d="M10.114,25.618c0,2.151,0,12.727,0,12.727c0,0.986,0.717,1.703,1.613,1.703h24.555
+ c0.985,0,1.702-0.808,1.702-1.793c0,0,0-10.573,0-12.726C38.881,25.529,9.129,25.618,10.114,25.618z"/>
+ <path fill="#FFF000" d="M10.159,25.642c0,2.145,0,12.686,0,12.686c0,0.982,0.714,1.696,1.608,1.696h24.476
+ c0.981,0,1.696-0.804,1.696-1.786c0,0,0-10.54,0-12.685C38.833,25.553,9.177,25.642,10.159,25.642z"/>
+ <path fill="#FFF100" d="M10.204,25.665c0,2.138,0,12.644,0,12.644c0,0.979,0.712,1.692,1.603,1.692h24.397
+ c0.979,0,1.69-0.802,1.69-1.78c0,0,0-10.507,0-12.644C38.785,25.577,9.225,25.665,10.204,25.665z"/>
+ <path fill="#FFF200" d="M10.249,25.688c0,2.131,0,12.603,0,12.603c0,0.978,0.71,1.688,1.597,1.688h24.318
+ c0.977,0,1.686-0.799,1.686-1.773c0,0,0-10.473,0-12.604C38.736,25.6,9.273,25.688,10.249,25.688z"/>
+ <path fill="#FFF300" d="M10.294,25.71c0,2.125,0,12.562,0,12.562c0,0.975,0.708,1.682,1.592,1.682h24.239
+ c0.973,0,1.68-0.797,1.68-1.77c0,0,0-10.438,0-12.562C38.689,25.624,9.321,25.71,10.294,25.71z"/>
+ <path fill="#FFF400" d="M10.339,25.733c0,2.117,0,12.521,0,12.521c0,0.97,0.705,1.675,1.587,1.675h24.16
+ c0.969,0,1.674-0.793,1.674-1.763c0,0,0-10.403,0-12.521C38.643,25.646,9.369,25.733,10.339,25.733z"/>
+ <path fill="#FFF500" d="M10.384,25.757c0,2.109,0,12.479,0,12.479c0,0.969,0.703,1.67,1.582,1.67h24.081
+ c0.967,0,1.669-0.79,1.669-1.757c0,0,0-10.369,0-12.479C38.596,25.669,9.417,25.757,10.384,25.757z"/>
+ <path fill="#FFF600" d="M10.428,25.779c0,2.104,0,12.438,0,12.438c0,0.965,0.701,1.664,1.577,1.664h24.002
+ c0.964,0,1.663-0.787,1.663-1.75c0,0,0-10.336,0-12.438C38.547,25.693,9.465,25.779,10.428,25.779z"/>
+ <path fill="#FFF700" d="M10.473,25.803c0,2.097,0,12.397,0,12.397c0,0.961,0.698,1.659,1.571,1.659h23.923
+ c0.96,0,1.658-0.786,1.658-1.746c0,0,0-10.302,0-12.397C38.499,25.716,9.513,25.803,10.473,25.803z"/>
+ <path fill="#FFF800" d="M10.518,25.827c0,2.088,0,12.355,0,12.355c0,0.958,0.696,1.654,1.566,1.654h23.844
+ c0.957,0,1.653-0.783,1.653-1.74c0,0,0-10.268,0-12.356C38.451,25.74,9.561,25.827,10.518,25.827z"/>
+ <path fill="#FFF900" d="M10.563,25.849c0,2.083,0,12.316,0,12.316c0,0.953,0.693,1.647,1.561,1.647h23.765
+ c0.953,0,1.647-0.78,1.647-1.733c0,0,0-10.233,0-12.316C38.402,25.763,9.609,25.849,10.563,25.849z"/>
+ <path fill="#FFFA00" d="M10.608,25.872c0,2.075,0,12.275,0,12.275c0,0.951,0.691,1.643,1.556,1.643H35.85
+ c0.95,0,1.643-0.777,1.643-1.729c0,0,0-10.199,0-12.275C38.355,25.786,9.657,25.872,10.608,25.872z"/>
+ <path fill="#FFFB00" d="M10.653,25.896c0,2.068,0,12.232,0,12.232c0,0.949,0.689,1.639,1.55,1.639h23.607
+ c0.946,0,1.637-0.775,1.637-1.723c0,0,0-10.166,0-12.234C38.309,25.81,9.705,25.896,10.653,25.896z"/>
+ <path fill="#FFFC00" d="M10.697,25.917c0,2.062,0,12.193,0,12.193c0,0.945,0.687,1.633,1.545,1.633H35.77
+ c0.944,0,1.631-0.772,1.631-1.718c0,0,0-10.132,0-12.192C38.262,25.833,9.753,25.917,10.697,25.917z"/>
+ <path fill="#FFFD00" d="M10.742,25.941c0,2.056,0,12.151,0,12.151c0,0.941,0.685,1.627,1.541,1.627h23.449
+ c0.939,0,1.625-0.771,1.625-1.711c0,0,0-10.098,0-12.152C38.213,25.856,9.801,25.941,10.742,25.941z"/>
+ <path fill="#FFFE00" d="M10.787,25.964c0,2.048,0,12.11,0,12.11c0,0.939,0.682,1.621,1.535,1.621h23.37
+ c0.938,0,1.619-0.768,1.619-1.705c0,0,0-10.062,0-12.11C38.165,25.88,9.849,25.964,10.787,25.964z"/>
+ <path fill="#FFFF00" d="M10.832,25.987c0,2.041,0,12.07,0,12.07c0,0.936,0.68,1.615,1.53,1.615h23.291
+ c0.936,0,1.615-0.766,1.615-1.699c0,0,0-10.029,0-12.07C38.117,25.903,9.897,25.987,10.832,25.987z"/>
+ </g>
+
+ <linearGradient id="House_Highlight_1_" gradientUnits="userSpaceOnUse" x1="210.0469" y1="-255.9038" x2="210.0469" y2="-269.6733" gradientTransform="matrix(1 0 0 -1 -186 -230)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#FFFF00"/>
+ </linearGradient>
+ <path id="House_Highlight" fill="url(#House_Highlight_1_)" d="M10.832,25.987c0,2.041,0,12.07,0,12.07
+ c0,0.936,0.68,1.615,1.53,1.615h23.291c0.936,0,1.615-0.766,1.615-1.699c0,0,0-10.029,0-12.07
+ C38.117,25.903,9.897,25.987,10.832,25.987z"/>
+ </g>
+ <g id="Roof">
+ <g>
+ <path fill="#006600" d="M22.8,6.963l-17.7,15.1l0,0c-0.3,0.301-0.5,0.801-0.5,1.2c0,0.2,0,0.399,0.1,0.601c0.3,0.6,0.9,1,1.6,1
+ l35.3-0.1c0.801,0,1.4-0.5,1.7-1.201c0.101-0.199,0.101-0.4,0.101-0.6c0-0.5-0.199-1-0.699-1.4L25.4,6.963l0.1,0.1
+ C24.8,6.363,23.7,6.263,22.8,6.963L22.8,6.963z"/>
+ <path fill="#006700" d="M22.803,6.989L5.155,22.044l0,0c-0.299,0.3-0.499,0.799-0.499,1.197c0,0.2,0,0.398,0.1,0.599
+ c0.299,0.598,0.897,0.997,1.595,0.997l35.198-0.1c0.799,0,1.396-0.5,1.695-1.197c0.102-0.198,0.102-0.399,0.102-0.598
+ c0-0.498-0.199-0.997-0.699-1.396L25.396,6.989l0.1,0.099C24.798,6.391,23.701,6.291,22.803,6.989L22.803,6.989z"/>
+ <path fill="#006800" d="M22.807,7.014L5.209,22.026l0,0c-0.298,0.299-0.497,0.796-0.497,1.193c0,0.199,0,0.397,0.1,0.598
+ c0.298,0.596,0.895,0.994,1.591,0.994l35.096-0.1c0.796,0,1.394-0.498,1.69-1.194c0.1-0.198,0.1-0.397,0.1-0.596
+ c0-0.497-0.198-0.995-0.696-1.393l-17.2-14.514l0.099,0.099C24.795,6.417,23.702,6.317,22.807,7.014L22.807,7.014z"/>
+ <path fill="#006900" d="M22.81,7.039L5.264,22.008l0,0c-0.298,0.298-0.496,0.793-0.496,1.189c0,0.198,0,0.396,0.099,0.596
+ c0.297,0.594,0.893,0.99,1.586,0.99l34.995-0.099c0.794,0,1.388-0.497,1.686-1.19c0.101-0.198,0.101-0.397,0.101-0.594
+ c0-0.496-0.198-0.991-0.694-1.389L25.389,7.039l0.1,0.099C24.793,6.444,23.703,6.345,22.81,7.039L22.81,7.039z"/>
+ <path fill="#006A00" d="M22.814,7.064L5.318,21.989l0,0c-0.296,0.298-0.494,0.792-0.494,1.187c0,0.198,0,0.395,0.099,0.594
+ c0.295,0.593,0.89,0.987,1.582,0.987l34.892-0.098c0.793,0,1.386-0.494,1.682-1.187c0.1-0.197,0.1-0.396,0.1-0.593
+ c0-0.494-0.197-0.988-0.691-1.384l-17.1-14.431l0.098,0.099C24.791,6.471,23.704,6.372,22.814,7.064L22.814,7.064z"/>
+ <path fill="#006B00" d="M22.817,7.089L5.373,21.971l0,0C5.077,22.267,4.88,22.76,4.88,23.154c0,0.197,0,0.394,0.099,0.592
+ c0.295,0.591,0.887,0.984,1.577,0.984l34.792-0.099c0.789,0,1.381-0.493,1.676-1.183c0.1-0.196,0.1-0.395,0.1-0.591
+ c0-0.493-0.197-0.986-0.689-1.38L25.381,7.089l0.098,0.098C24.788,6.498,23.705,6.399,22.817,7.089L22.817,7.089z"/>
+ <path fill="#006C00" d="M22.821,7.114L5.427,21.953l0,0c-0.295,0.295-0.492,0.787-0.492,1.179c0,0.197,0,0.393,0.099,0.59
+ c0.294,0.589,0.884,0.981,1.572,0.981l34.688-0.098c0.787,0,1.376-0.492,1.671-1.181c0.1-0.196,0.1-0.393,0.1-0.589
+ c0-0.492-0.196-0.983-0.688-1.376l-17-14.347l0.099,0.098C24.786,6.524,23.706,6.426,22.821,7.114L22.821,7.114z"/>
+ <path fill="#006D00" d="M22.824,7.139L5.481,21.934l0,0c-0.294,0.295-0.49,0.785-0.49,1.176c0,0.196,0,0.391,0.098,0.589
+ c0.293,0.587,0.882,0.98,1.567,0.98l34.587-0.099c0.784,0,1.372-0.49,1.666-1.176c0.099-0.195,0.099-0.393,0.099-0.588
+ c0-0.49-0.195-0.979-0.688-1.372L25.372,7.139l0.099,0.098C24.783,6.551,23.706,6.453,22.824,7.139L22.824,7.139z"/>
+ <path fill="#006E00" d="M22.827,7.164L5.536,21.915l0,0c-0.293,0.294-0.488,0.783-0.488,1.173c0,0.195,0,0.39,0.098,0.587
+ c0.293,0.585,0.879,0.977,1.563,0.977l34.484-0.097c0.783,0,1.369-0.49,1.662-1.173c0.098-0.194,0.098-0.391,0.098-0.586
+ c0-0.489-0.195-0.977-0.684-1.368L25.367,7.164l0.098,0.098C24.781,6.578,23.707,6.48,22.827,7.164L22.827,7.164z"/>
+ <path fill="#006F00" d="M22.831,7.189L5.591,21.897l0,0c-0.292,0.292-0.487,0.78-0.487,1.168c0,0.195,0,0.39,0.097,0.585
+ c0.292,0.584,0.876,0.973,1.558,0.973l34.384-0.097c0.779,0,1.363-0.487,1.655-1.169c0.099-0.194,0.099-0.39,0.099-0.584
+ c0-0.487-0.194-0.974-0.683-1.364L25.363,7.189l0.099,0.098C24.779,6.605,23.708,6.507,22.831,7.189L22.831,7.189z"/>
+ <path fill="#007000" d="M22.834,7.215L5.646,21.879l0,0c-0.292,0.292-0.486,0.778-0.486,1.165c0,0.195,0,0.388,0.098,0.584
+ c0.291,0.582,0.874,0.971,1.554,0.971l34.281-0.098c0.778,0,1.36-0.485,1.651-1.166c0.098-0.193,0.098-0.389,0.098-0.583
+ c0-0.485-0.193-0.971-0.68-1.36L25.359,7.215l0.098,0.097C24.775,6.632,23.709,6.535,22.834,7.215L22.834,7.215z"/>
+ <path fill="#007100" d="M22.838,7.24L5.7,21.86l0,0c-0.291,0.292-0.484,0.775-0.484,1.162c0,0.194,0,0.387,0.097,0.582
+ c0.29,0.58,0.871,0.967,1.549,0.967l34.18-0.096c0.774,0,1.354-0.484,1.646-1.162c0.1-0.193,0.1-0.388,0.1-0.581
+ c0-0.484-0.194-0.968-0.68-1.356L25.355,7.24l0.097,0.097C24.773,6.659,23.709,6.562,22.838,7.24L22.838,7.24z"/>
+ <path fill="#007200" d="M22.842,7.265L5.755,21.842l0,0C5.465,22.133,5.272,22.615,5.272,23c0,0.194,0,0.386,0.097,0.581
+ c0.289,0.578,0.868,0.964,1.544,0.964l34.077-0.096c0.773,0,1.353-0.483,1.642-1.159c0.097-0.192,0.097-0.387,0.097-0.579
+ c0-0.483-0.191-0.965-0.676-1.352L25.352,7.265l0.098,0.096C24.771,6.686,23.711,6.589,22.842,7.265L22.842,7.265z"/>
+ <path fill="#007300" d="M22.845,7.29L5.809,21.824l0,0c-0.29,0.29-0.481,0.771-0.481,1.155c0,0.193,0,0.385,0.096,0.579
+ c0.289,0.577,0.867,0.961,1.54,0.961l33.976-0.097c0.771,0,1.35-0.481,1.638-1.155c0.097-0.192,0.097-0.386,0.097-0.577
+ c0-0.481-0.191-0.963-0.674-1.348L25.348,7.29l0.098,0.096C24.771,6.712,23.711,6.616,22.845,7.29L22.845,7.29z"/>
+ <path fill="#007400" d="M22.848,7.315L5.863,21.805l0,0c-0.288,0.289-0.48,0.769-0.48,1.152c0,0.192,0,0.383,0.096,0.576
+ c0.288,0.575,0.864,0.959,1.535,0.959l33.875-0.096c0.769,0,1.344-0.479,1.631-1.152c0.098-0.191,0.098-0.384,0.098-0.575
+ c0-0.479-0.192-0.959-0.672-1.344L25.344,7.315l0.096,0.096C24.768,6.739,23.712,6.643,22.848,7.315L22.848,7.315z"/>
+ <path fill="#007500" d="M22.852,7.34L5.918,21.787l0,0c-0.288,0.288-0.479,0.767-0.479,1.148c0,0.191,0,0.382,0.096,0.575
+ c0.287,0.574,0.861,0.956,1.53,0.956l33.772-0.096c0.767,0,1.34-0.478,1.627-1.148c0.097-0.19,0.097-0.383,0.097-0.574
+ c0-0.479-0.19-0.957-0.67-1.34L25.34,7.34l0.096,0.095C24.766,6.767,23.713,6.67,22.852,7.34L22.852,7.34z"/>
+ <path fill="#007600" d="M22.855,7.365L5.973,21.768l0,0c-0.287,0.287-0.477,0.764-0.477,1.145c0,0.191,0,0.381,0.095,0.573
+ c0.286,0.572,0.858,0.953,1.526,0.953l33.67-0.095c0.764,0,1.336-0.477,1.622-1.146c0.096-0.19,0.096-0.382,0.096-0.572
+ c0-0.477-0.19-0.954-0.668-1.336L25.336,7.365l0.096,0.095C24.764,6.793,23.714,6.697,22.855,7.365L22.855,7.365z"/>
+ <path fill="#007700" d="M22.858,7.391L6.027,21.75l0,0c-0.286,0.286-0.476,0.762-0.476,1.142c0,0.19,0,0.38,0.095,0.571
+ c0.285,0.57,0.856,0.95,1.521,0.95l33.567-0.095c0.763,0,1.332-0.476,1.617-1.141c0.097-0.189,0.097-0.381,0.097-0.57
+ c0-0.476-0.19-0.951-0.666-1.332L25.331,7.391l0.096,0.095C24.762,6.82,23.715,6.725,22.858,7.391L22.858,7.391z"/>
+ <path fill="#007800" d="M22.862,7.416L6.082,21.731l0,0c-0.285,0.285-0.475,0.759-0.475,1.138c0,0.19,0,0.379,0.095,0.57
+ c0.284,0.568,0.854,0.947,1.517,0.947l33.467-0.095c0.76,0,1.328-0.474,1.61-1.138c0.097-0.189,0.097-0.379,0.097-0.568
+ c0-0.474-0.189-0.948-0.664-1.328L25.327,7.416l0.095,0.095C24.758,6.847,23.716,6.751,22.862,7.416L22.862,7.416z"/>
+ <path fill="#007900" d="M22.865,7.441L6.136,21.713l0,0c-0.284,0.284-0.473,0.757-0.473,1.135c0,0.189,0,0.377,0.095,0.567
+ c0.283,0.567,0.851,0.944,1.512,0.944l33.365-0.094c0.758,0,1.324-0.473,1.607-1.135c0.095-0.188,0.095-0.378,0.095-0.566
+ c0-0.473-0.188-0.945-0.662-1.324L25.323,7.441l0.095,0.094C24.756,6.874,23.716,6.779,22.865,7.441L22.865,7.441z"/>
+ <path fill="#007A00" d="M22.869,7.466L6.19,21.694l0,0c-0.283,0.283-0.471,0.754-0.471,1.131c0,0.188,0,0.376,0.094,0.566
+ c0.283,0.564,0.848,0.941,1.507,0.941l33.263-0.094c0.755,0,1.319-0.471,1.603-1.131c0.096-0.188,0.096-0.377,0.096-0.565
+ c0-0.471-0.188-0.942-0.66-1.32L25.318,7.466l0.095,0.094C24.754,6.901,23.717,6.806,22.869,7.466L22.869,7.466z"/>
+ <path fill="#007B00" d="M22.872,7.491L6.245,21.676l0,0c-0.282,0.283-0.47,0.752-0.47,1.128c0,0.188,0,0.375,0.094,0.564
+ c0.282,0.563,0.846,0.939,1.503,0.939l33.161-0.094c0.753,0,1.316-0.469,1.598-1.127c0.096-0.187,0.096-0.376,0.096-0.563
+ c0-0.47-0.188-0.939-0.658-1.316L25.314,7.491l0.095,0.094C24.751,6.927,23.718,6.833,22.872,7.491L22.872,7.491z"/>
+ <path fill="#007C00" d="M22.876,7.516L6.299,21.658l0,0c-0.281,0.281-0.468,0.75-0.468,1.124c0,0.188,0,0.374,0.094,0.562
+ c0.281,0.562,0.843,0.936,1.499,0.936l33.059-0.093c0.75,0,1.312-0.468,1.594-1.124c0.094-0.187,0.094-0.375,0.094-0.562
+ c0-0.468-0.188-0.937-0.656-1.312L25.312,7.516l0.094,0.094C24.749,6.954,23.719,6.86,22.876,7.516L22.876,7.516z"/>
+ <path fill="#007D00" d="M22.879,7.542L6.354,21.639l0,0c-0.281,0.281-0.467,0.748-0.467,1.121c0,0.187,0,0.373,0.094,0.561
+ c0.28,0.56,0.84,0.933,1.494,0.933l32.958-0.093c0.748,0,1.308-0.467,1.586-1.121c0.096-0.186,0.096-0.374,0.096-0.56
+ c0-0.467-0.188-0.934-0.654-1.307L25.307,7.542L25.4,7.635C24.746,6.981,23.72,6.887,22.879,7.542L22.879,7.542z"/>
+ <path fill="#007E00" d="M22.883,7.566L6.408,21.621l0,0c-0.279,0.28-0.465,0.745-0.465,1.117c0,0.187,0,0.372,0.093,0.559
+ c0.279,0.558,0.838,0.93,1.489,0.93l32.856-0.093c0.746,0,1.305-0.465,1.583-1.117c0.095-0.186,0.095-0.373,0.095-0.559
+ c0-0.465-0.188-0.93-0.652-1.303L25.303,7.566l0.094,0.093C24.744,7.008,23.721,6.915,22.883,7.566L22.883,7.566z"/>
+ <path fill="#007F00" d="M22.886,7.592L6.463,21.603l0,0c-0.279,0.279-0.464,0.743-0.464,1.113c0,0.186,0,0.371,0.093,0.558
+ c0.278,0.556,0.835,0.927,1.484,0.927l32.754-0.092c0.743,0,1.3-0.464,1.577-1.114c0.094-0.185,0.094-0.372,0.094-0.557
+ c0-0.464-0.187-0.928-0.649-1.299L25.299,7.592l0.094,0.092C24.742,7.035,23.722,6.941,22.886,7.592L22.886,7.592z"/>
+ <path fill="#007F00" d="M22.89,7.617L6.518,21.584l0,0c-0.278,0.278-0.462,0.741-0.462,1.11c0,0.185,0,0.369,0.092,0.556
+ c0.276,0.555,0.833,0.924,1.48,0.924l32.651-0.092c0.742,0,1.297-0.462,1.572-1.11c0.094-0.185,0.094-0.371,0.094-0.555
+ c0-0.462-0.186-0.925-0.647-1.295L25.295,7.617l0.094,0.092C24.738,7.062,23.723,6.969,22.89,7.617L22.89,7.617z"/>
+ <path fill="#008000" d="M22.893,7.642L6.572,21.565l0,0c-0.277,0.277-0.461,0.739-0.461,1.107c0,0.185,0,0.368,0.092,0.554
+ c0.276,0.553,0.83,0.921,1.475,0.921l32.55-0.092c0.738,0,1.291-0.461,1.566-1.106c0.094-0.184,0.094-0.369,0.094-0.553
+ c0-0.461-0.185-0.922-0.646-1.292L25.291,7.642l0.093,0.092C24.736,7.088,23.724,6.996,22.893,7.642L22.893,7.642z"/>
+ <path fill="#008100" d="M22.896,7.667l-16.27,13.88l0,0c-0.276,0.277-0.459,0.736-0.459,1.104c0,0.184,0,0.367,0.092,0.552
+ c0.275,0.551,0.827,0.918,1.471,0.918l32.448-0.091c0.736,0,1.288-0.459,1.562-1.104c0.093-0.183,0.093-0.368,0.093-0.551
+ c0-0.459-0.185-0.919-0.644-1.287L25.287,7.667l0.092,0.092C24.734,7.116,23.725,7.023,22.896,7.667L22.896,7.667z"/>
+ <path fill="#008200" d="M22.9,7.692L6.681,21.529l0,0c-0.275,0.275-0.458,0.734-0.458,1.1c0,0.184,0,0.366,0.092,0.55
+ c0.275,0.549,0.825,0.916,1.466,0.916l32.347-0.091c0.733,0,1.284-0.458,1.558-1.1c0.094-0.183,0.094-0.367,0.094-0.55
+ c0-0.458-0.184-0.917-0.643-1.283L25.282,7.692l0.093,0.091C24.732,7.143,23.725,7.05,22.9,7.692L22.9,7.692z"/>
+ <path fill="#008300" d="M22.903,7.717L6.735,21.51l0,0c-0.274,0.275-0.457,0.731-0.457,1.096c0,0.183,0,0.365,0.091,0.549
+ c0.274,0.547,0.822,0.913,1.461,0.913l32.245-0.091c0.731,0,1.28-0.457,1.554-1.096c0.092-0.182,0.092-0.366,0.092-0.548
+ c0-0.457-0.183-0.914-0.64-1.279L25.277,7.717l0.093,0.091C24.73,7.169,23.726,7.078,22.903,7.717L22.903,7.717z"/>
+ <path fill="#008400" d="M22.907,7.742L6.79,21.492l0,0c-0.273,0.274-0.456,0.729-0.456,1.093c0,0.183,0,0.364,0.091,0.547
+ c0.273,0.546,0.82,0.909,1.457,0.909l32.144-0.09c0.729,0,1.274-0.455,1.548-1.093c0.092-0.181,0.092-0.364,0.092-0.546
+ c0-0.455-0.183-0.911-0.638-1.275L25.273,7.742l0.093,0.091C24.729,7.196,23.727,7.105,22.907,7.742L22.907,7.742z"/>
+ <path fill="#008500" d="M22.911,7.768L6.845,21.474l0,0c-0.272,0.273-0.454,0.727-0.454,1.089c0,0.182,0,0.363,0.091,0.546
+ c0.272,0.543,0.817,0.906,1.452,0.906l32.041-0.09c0.729,0,1.271-0.454,1.543-1.089c0.092-0.181,0.092-0.363,0.092-0.544
+ c0-0.454-0.182-0.908-0.635-1.271L25.271,7.768l0.09,0.09C24.727,7.223,23.728,7.132,22.911,7.768L22.911,7.768z"/>
+ <path fill="#008600" d="M22.914,7.792L6.899,21.455l0,0c-0.272,0.272-0.453,0.725-0.453,1.086c0,0.181,0,0.361,0.091,0.543
+ c0.271,0.542,0.814,0.904,1.447,0.904l31.939-0.09c0.726,0,1.269-0.452,1.538-1.086c0.092-0.18,0.092-0.362,0.092-0.542
+ c0-0.452-0.181-0.905-0.634-1.267L25.268,7.792l0.09,0.09C24.725,7.25,23.729,7.159,22.914,7.792L22.914,7.792z"/>
+ <path fill="#008700" d="M22.917,7.818L6.954,21.437l0,0c-0.271,0.271-0.451,0.722-0.451,1.083c0,0.181,0,0.36,0.09,0.542
+ c0.271,0.54,0.812,0.901,1.443,0.901l31.837-0.09c0.723,0,1.264-0.451,1.533-1.082c0.092-0.18,0.092-0.361,0.092-0.541
+ c0-0.451-0.182-0.902-0.633-1.263L25.264,7.818l0.09,0.09C24.723,7.277,23.729,7.186,22.917,7.818L22.917,7.818z"/>
+ <path fill="#008800" d="M22.921,7.843L7.008,21.418l0,0c-0.27,0.27-0.45,0.72-0.45,1.079c0,0.18,0,0.359,0.09,0.54
+ c0.27,0.539,0.809,0.898,1.438,0.898l31.734-0.09c0.722,0,1.261-0.449,1.529-1.079c0.09-0.179,0.09-0.36,0.09-0.539
+ c0-0.449-0.18-0.899-0.629-1.259L25.259,7.843l0.091,0.09C24.719,7.303,23.73,7.213,22.921,7.843L22.921,7.843z"/>
+ <path fill="#008900" d="M22.924,7.868L7.062,21.4l0,0c-0.269,0.269-0.448,0.717-0.448,1.075c0,0.18,0,0.358,0.09,0.539
+ c0.269,0.537,0.807,0.895,1.434,0.895l31.633-0.089c0.72,0,1.256-0.448,1.523-1.075c0.092-0.179,0.092-0.359,0.092-0.538
+ c0-0.448-0.181-0.896-0.629-1.255L25.255,7.868l0.091,0.089C24.717,7.331,23.731,7.241,22.924,7.868L22.924,7.868z"/>
+ <path fill="#008A00" d="M22.928,7.893L7.117,21.381l0,0C6.849,21.65,6.67,22.097,6.67,22.453c0,0.179,0,0.357,0.089,0.537
+ c0.268,0.536,0.804,0.893,1.429,0.893l31.533-0.089c0.715,0,1.252-0.446,1.518-1.072c0.092-0.178,0.092-0.358,0.092-0.536
+ c0-0.446-0.18-0.894-0.626-1.251L25.25,7.893l0.09,0.089C24.714,7.357,23.732,7.268,22.928,7.893L22.928,7.893z"/>
+ <path fill="#008B00" d="M22.931,7.918L7.172,21.363l0,0c-0.268,0.268-0.445,0.713-0.445,1.069c0,0.178,0,0.355,0.089,0.535
+ c0.267,0.534,0.801,0.89,1.424,0.89l31.43-0.089c0.714,0,1.248-0.445,1.514-1.068c0.09-0.178,0.09-0.357,0.09-0.534
+ c0-0.445-0.178-0.891-0.623-1.247L25.246,7.918l0.09,0.089C24.712,7.384,23.733,7.295,22.931,7.918L22.931,7.918z"/>
+ <path fill="#008C00" d="M22.935,7.943L7.227,21.345l0,0c-0.267,0.267-0.444,0.71-0.444,1.065c0,0.178,0,0.354,0.089,0.533
+ c0.266,0.532,0.799,0.887,1.42,0.887l31.328-0.089c0.711,0,1.243-0.443,1.509-1.065c0.09-0.177,0.09-0.355,0.09-0.532
+ c0-0.444-0.178-0.888-0.621-1.243L25.242,7.943l0.089,0.089C24.71,7.411,23.734,7.322,22.935,7.943L22.935,7.943z"/>
+ <path fill="#008D00" d="M22.938,7.968L7.281,21.326l0,0c-0.266,0.266-0.442,0.708-0.442,1.062c0,0.177,0,0.353,0.088,0.532
+ c0.264,0.53,0.796,0.883,1.415,0.883l31.227-0.088c0.709,0,1.24-0.442,1.505-1.062c0.09-0.176,0.09-0.354,0.09-0.53
+ c0-0.442-0.177-0.885-0.62-1.239L25.238,7.968l0.089,0.088C24.707,7.438,23.735,7.349,22.938,7.968L22.938,7.968z"/>
+ <path fill="#008E00" d="M22.941,7.994L7.335,21.308l0,0c-0.265,0.265-0.441,0.706-0.441,1.058c0,0.177,0,0.352,0.088,0.53
+ c0.264,0.528,0.793,0.881,1.411,0.881l31.125-0.088c0.707,0,1.235-0.441,1.5-1.058c0.088-0.176,0.088-0.353,0.088-0.529
+ c0-0.441-0.176-0.882-0.617-1.235L25.234,7.994l0.089,0.088C24.705,7.465,23.736,7.376,22.941,7.994L22.941,7.994z"/>
+ <path fill="#008F00" d="M22.945,8.019L7.39,21.289l0,0c-0.264,0.264-0.44,0.704-0.44,1.055c0,0.176,0,0.351,0.088,0.528
+ c0.263,0.527,0.791,0.878,1.406,0.878l31.022-0.088c0.704,0,1.231-0.439,1.494-1.055c0.089-0.175,0.089-0.352,0.089-0.527
+ c0-0.439-0.176-0.879-0.615-1.231L25.229,8.019l0.09,0.088C24.703,7.492,23.736,7.403,22.945,8.019L22.945,8.019z"/>
+ <path fill="#009000" d="M22.948,8.044L7.444,21.271l0,0c-0.263,0.263-0.438,0.701-0.438,1.051c0,0.175,0,0.35,0.087,0.526
+ c0.263,0.525,0.789,0.875,1.401,0.875l30.921-0.088c0.702,0,1.228-0.438,1.489-1.051c0.089-0.174,0.089-0.351,0.089-0.525
+ c0-0.438-0.177-0.876-0.614-1.227L25.227,8.044l0.088,0.087C24.7,7.519,23.737,7.431,22.948,8.044L22.948,8.044z"/>
+ <path fill="#009100" d="M22.952,8.069L7.499,21.252l0,0c-0.262,0.262-0.437,0.699-0.437,1.048c0,0.175,0,0.349,0.087,0.524
+ c0.262,0.523,0.786,0.872,1.397,0.872l30.819-0.087c0.699,0,1.224-0.436,1.484-1.047c0.088-0.174,0.088-0.35,0.088-0.524
+ c0-0.436-0.174-0.873-0.611-1.223L25.223,8.069l0.088,0.087C24.698,7.545,23.738,7.458,22.952,8.069L22.952,8.069z"/>
+ <path fill="#009200" d="M22.955,8.094L7.553,21.234l0,0c-0.261,0.262-0.435,0.697-0.435,1.044c0,0.174,0,0.347,0.087,0.523
+ c0.259,0.521,0.783,0.869,1.392,0.869l30.717-0.087c0.697,0,1.22-0.435,1.479-1.044c0.088-0.173,0.088-0.348,0.088-0.522
+ c0-0.435-0.174-0.87-0.609-1.218L25.218,8.094l0.089,0.087C24.695,7.572,23.739,7.485,22.955,8.094L22.955,8.094z"/>
+ <path fill="#009300" d="M22.959,8.119L7.608,21.215l0,0c-0.26,0.261-0.434,0.695-0.434,1.041c0,0.174,0,0.346,0.087,0.521
+ c0.26,0.52,0.781,0.867,1.388,0.867l30.615-0.087c0.695,0,1.217-0.434,1.475-1.041c0.089-0.173,0.089-0.348,0.089-0.521
+ c0-0.433-0.175-0.867-0.606-1.214L25.214,8.119l0.088,0.087C24.693,7.599,23.74,7.512,22.959,8.119L22.959,8.119z"/>
+ <path fill="#009400" d="M22.962,8.145l-15.3,13.053l0,0c-0.26,0.26-0.433,0.692-0.433,1.037c0,0.173,0,0.345,0.086,0.52
+ c0.259,0.518,0.778,0.863,1.383,0.863l30.514-0.086c0.692,0,1.212-0.432,1.47-1.038c0.088-0.172,0.088-0.346,0.088-0.519
+ c0-0.432-0.172-0.864-0.605-1.21L25.21,8.145l0.087,0.086C24.691,7.626,23.741,7.539,22.962,8.145L22.962,8.145z"/>
+ <path fill="#009500" d="M22.966,8.169L7.717,21.179l0,0c-0.259,0.259-0.431,0.69-0.431,1.034c0,0.173,0,0.344,0.086,0.518
+ c0.257,0.517,0.775,0.86,1.378,0.86l30.412-0.086c0.689,0,1.207-0.431,1.465-1.034c0.087-0.171,0.087-0.345,0.087-0.517
+ c0-0.431-0.172-0.861-0.604-1.207L25.206,8.169l0.087,0.086C24.688,7.653,23.742,7.566,22.966,8.169L22.966,8.169z"/>
+ <path fill="#009600" d="M22.969,8.195L7.771,21.16l0,0c-0.258,0.258-0.43,0.688-0.43,1.03c0,0.172,0,0.343,0.086,0.516
+ c0.257,0.515,0.773,0.858,1.374,0.858l30.311-0.086c0.688,0,1.203-0.429,1.459-1.03c0.088-0.171,0.088-0.344,0.088-0.515
+ c0-0.429-0.172-0.859-0.602-1.203L25.201,8.195l0.087,0.085C24.688,7.68,23.743,7.593,22.969,8.195L22.969,8.195z"/>
+ <path fill="#009700" d="M22.973,8.22L7.826,21.142l0,0c-0.257,0.257-0.428,0.686-0.428,1.027c0,0.171,0,0.341,0.085,0.514
+ c0.255,0.513,0.771,0.855,1.369,0.855l30.208-0.086c0.687,0,1.198-0.428,1.455-1.027c0.086-0.17,0.086-0.343,0.086-0.513
+ c0-0.428-0.172-0.856-0.6-1.198L25.197,8.22l0.087,0.085C24.686,7.707,23.743,7.621,22.973,8.22L22.973,8.22z"/>
+ <path fill="#009800" d="M22.976,8.245L7.88,21.124l0,0c-0.256,0.256-0.427,0.683-0.427,1.023c0,0.171,0,0.34,0.085,0.512
+ c0.256,0.511,0.768,0.852,1.364,0.852l30.106-0.085c0.684,0,1.195-0.426,1.45-1.023c0.086-0.17,0.086-0.342,0.086-0.512
+ c0-0.426-0.17-0.853-0.599-1.194L25.193,8.245l0.086,0.085C24.682,7.733,23.744,7.647,22.976,8.245L22.976,8.245z"/>
+ <path fill="#009900" d="M22.979,8.27L7.935,21.105l0,0C7.68,21.36,7.51,21.786,7.51,22.125c0,0.17,0,0.339,0.085,0.511
+ c0.255,0.509,0.765,0.849,1.36,0.849L38.959,23.4c0.682,0,1.191-0.425,1.445-1.02c0.086-0.169,0.086-0.34,0.086-0.51
+ c0-0.425-0.17-0.85-0.596-1.19L25.189,8.27l0.086,0.085C24.68,7.76,23.745,7.675,22.979,8.27L22.979,8.27z"/>
+ </g>
+
+ <linearGradient id="Roof_Highlight_1_" gradientUnits="userSpaceOnUse" x1="210" y1="-237.8638" x2="210" y2="-253.4849" gradientTransform="matrix(1 0 0 -1 -186 -230)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#009900"/>
+ </linearGradient>
+ <path id="Roof_Highlight" fill="url(#Roof_Highlight_1_)" d="M22.979,8.27L7.935,21.105l0,0C7.68,21.36,7.51,21.786,7.51,22.125
+ c0,0.17,0,0.339,0.085,0.51c0.255,0.51,0.765,0.85,1.36,0.85L38.959,23.4c0.682,0,1.191-0.425,1.445-1.021
+ c0.086-0.169,0.086-0.34,0.086-0.51c0-0.424-0.17-0.85-0.596-1.189L25.189,8.27l0.086,0.085C24.68,7.76,23.745,7.675,22.979,8.27
+ L22.979,8.27z"/>
+ </g>
+ </g>
+</g>
+<g id="Layer_2">
+ <g id="crop_x0020_marks">
+ <path fill="none" d="M48,47.687H0v-48h48V47.687z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg
new file mode 100644
index 0000000..803ad8d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Caution" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g>
+ <path stroke="#FFFFFF" stroke-width="6.6112" d="M42.35,35.841L27.248,9.941c-0.602-1-1.699-1.7-2.899-1.6c-1.2,0-2.3,0.7-2.9,1.7
+ l-14.5,25.901c-0.6,1-0.6,2.299,0,3.299c0.6,1,1.7,1.6,2.9,1.6h29.601c1.199,0,2.301-0.6,2.898-1.697
+ C42.949,38.142,42.949,36.841,42.35,35.841L42.35,35.841z"/>
+ <g>
+ <path fill="#FFFFFF" stroke="#009900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M24.349,11.586
+ l-14.5,26h29.601L24.349,11.586z"/>
+ <polygon fill="#FFFFFF" stroke="#009A00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.35,11.611 9.877,37.562 39.42,37.562 "/>
+ <polygon fill="#FFFFFF" stroke="#009B01" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.35,11.637 9.907,37.536 39.391,37.536 "/>
+ <polygon fill="#FFFFFF" stroke="#009C01" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.351,11.662 9.935,37.511 39.361,37.511 "/>
+ <polygon fill="#FFFFFF" stroke="#009D02" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.352,11.688 9.963,37.485 39.334,37.485 "/>
+ <polygon fill="#FFFFFF" stroke="#009E02" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.352,11.712 9.993,37.46 39.305,37.46 "/>
+ <polygon fill="#FFFFFF" stroke="#009F03" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.353,11.738 10.021,37.435 39.275,37.435 "/>
+ <polygon fill="#FFFFFF" stroke="#00A003" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.353,11.763 10.049,37.409 39.248,37.409 "/>
+ <polygon fill="#FFFFFF" stroke="#00A104" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.354,11.789 10.079,37.386 39.219,37.386 "/>
+ <polygon fill="#FFFFFF" stroke="#00A204" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.354,11.813 10.106,37.36 39.189,37.36 "/>
+ <polygon fill="#FFFFFF" stroke="#00A305" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.354,11.838 10.135,37.335 39.16,37.335 "/>
+ <polygon fill="#FFFFFF" stroke="#00A405" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.355,11.864 10.166,37.31 39.133,37.31 "/>
+ <polygon fill="#FFFFFF" stroke="#00A506" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.355,11.89 10.193,37.284 39.104,37.284 "/>
+ <polygon fill="#FFFFFF" stroke="#00A606" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.355,11.915 10.223,37.259 39.074,37.259 "/>
+ <polygon fill="#FFFFFF" stroke="#00A707" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.356,11.939 10.25,37.233 39.047,37.233 "/>
+ <polygon fill="#FFFFFF" stroke="#00A807" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.357,11.965 10.279,37.21 39.018,37.21 "/>
+ <polygon fill="#FFFFFF" stroke="#00A908" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.357,11.99 10.309,37.183 38.988,37.183 "/>
+ <polygon fill="#FFFFFF" stroke="#00AA08" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.357,12.016 10.336,37.157 38.959,37.157 "/>
+ <polygon fill="#FFFFFF" stroke="#00AB09" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.358,12.041 10.367,37.132 38.932,37.132 "/>
+ <polygon fill="#FFFFFF" stroke="#00AC09" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.359,12.066 10.396,37.106 38.902,37.106 "/>
+ <polygon fill="#FFFFFF" stroke="#00AD0A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.359,12.091 10.423,37.083 38.873,37.083 "/>
+ <polygon fill="#FFFFFF" stroke="#00AE0A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.36,12.116 10.453,37.056 38.846,37.056 "/>
+ <polygon fill="#FFFFFF" stroke="#00AF0B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.361,12.142 10.48,37.032 38.816,37.032 "/>
+ <polygon fill="#FFFFFF" stroke="#00B00B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.362,12.167 10.509,37.007 38.789,37.007 "/>
+ <polygon fill="#FFFFFF" stroke="#00B10C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.362,12.191 10.539,36.981 38.76,36.981 "/>
+ <polygon fill="#FFFFFF" stroke="#00B20C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.362,12.217 10.566,36.956 38.729,36.956 "/>
+ <polygon fill="#FFFFFF" stroke="#00B30D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.363,12.242 10.596,36.931 38.701,36.931 "/>
+ <polygon fill="#FFFFFF" stroke="#00B40D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.364,12.269 10.625,36.905 38.674,36.905 "/>
+ <polygon fill="#FFFFFF" stroke="#00B50E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.364,12.293 10.653,36.88 38.645,36.88 "/>
+ <polygon fill="#FFFFFF" stroke="#00B60E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.366,12.317 10.682,36.854 38.613,36.854 "/>
+ <polygon fill="#FFFFFF" stroke="#00B70F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.367,12.343 10.71,36.829 38.586,36.829 "/>
+ <polygon fill="#FFFFFF" stroke="#00B80F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.367,12.37 10.739,36.804 38.559,36.804 "/>
+ <polygon fill="#FFFFFF" stroke="#00B910" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.368,12.395 10.769,36.778 38.527,36.778 "/>
+ <polygon fill="#FFFFFF" stroke="#00BA10" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.368,12.419 10.796,36.755 38.5,36.755 "/>
+ <polygon fill="#FFFFFF" stroke="#00BB11" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.369,12.444 10.826,36.728 38.471,36.728 "/>
+ <polygon fill="#FFFFFF" stroke="#00BC11" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.37,12.469 10.854,36.704 38.441,36.704 "/>
+ <polygon fill="#FFFFFF" stroke="#00BD12" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.37,12.496 10.883,36.677 38.414,36.677 "/>
+ <polygon fill="#FFFFFF" stroke="#00BE12" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.371,12.521 10.912,36.651 38.385,36.651 "/>
+ <polygon fill="#FFFFFF" stroke="#00BF13" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.371,12.545 10.94,36.628 38.355,36.628 "/>
+ <polygon fill="#FFFFFF" stroke="#00C013" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.372,12.57 10.969,36.603 38.328,36.603 "/>
+ <polygon fill="#FFFFFF" stroke="#00C114" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.372,12.595 10.999,36.577 38.299,36.577 "/>
+ <polygon fill="#FFFFFF" stroke="#00C214" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.373,12.622 11.026,36.552 38.27,36.552 "/>
+ <polygon fill="#FFFFFF" stroke="#00C315" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.373,12.646 11.056,36.526 38.242,36.526 "/>
+ <polygon fill="#FFFFFF" stroke="#00C415" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.374,12.672 11.084,36.503 38.213,36.503 "/>
+ <polygon fill="#FFFFFF" stroke="#00C516" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.375,12.696 11.113,36.476 38.184,36.476 "/>
+ <polygon fill="#FFFFFF" stroke="#00C616" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.375,12.721 11.142,36.45 38.154,36.45 "/>
+ <polygon fill="#FFFFFF" stroke="#00C717" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.375,12.748 11.17,36.425 38.127,36.425 "/>
+ <polygon fill="#FFFFFF" stroke="#00C817" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.375,12.773 11.2,36.401 38.098,36.401 "/>
+ <polygon fill="#FFFFFF" stroke="#00C918" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.376,12.797 11.229,36.376 38.068,36.376 "/>
+ <polygon fill="#FFFFFF" stroke="#00CA18" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.376,12.822 11.256,36.349 38.041,36.349 "/>
+ <polygon fill="#FFFFFF" stroke="#00CB19" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.377,12.849 11.286,36.325 38.012,36.325 "/>
+ <polygon fill="#FFFFFF" stroke="#00CC19" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.378,12.875 11.314,36.3 37.982,36.3 "/>
+ <polygon fill="#FFFFFF" stroke="#00CC1A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.378,12.899 11.342,36.274 37.955,36.274 "/>
+ <polygon fill="#FFFFFF" stroke="#00CD1A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.379,12.923 11.372,36.249 37.926,36.249 "/>
+ <polygon fill="#FFFFFF" stroke="#00CE1B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.379,12.949 11.4,36.224 37.896,36.224 "/>
+ <polygon fill="#FFFFFF" stroke="#00CF1B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.38,12.975 11.43,36.198 37.867,36.198 "/>
+ <polygon fill="#FFFFFF" stroke="#00D01C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.381,13 11.458,36.173 37.84,36.173 "/>
+ <polygon fill="#FFFFFF" stroke="#00D11C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.381,13.024 11.486,36.147 37.811,36.147 "/>
+ <polygon fill="#FFFFFF" stroke="#00D21D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.381,13.05 11.516,36.124 37.781,36.124 "/>
+ <polygon fill="#FFFFFF" stroke="#00D31D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.382,13.075 11.543,36.097 37.754,36.097 "/>
+ <polygon fill="#FFFFFF" stroke="#00D41E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.383,13.102 11.572,36.071 37.725,36.071 "/>
+ <polygon fill="#FFFFFF" stroke="#00D51E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.383,13.126 11.602,36.046 37.695,36.046 "/>
+ <polygon fill="#FFFFFF" stroke="#00D61F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.384,13.151 11.63,36.022 37.666,36.022 "/>
+ <polygon fill="#FFFFFF" stroke="#00D71F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.385,13.176 11.66,35.997 37.639,35.997 "/>
+ <polygon fill="#FFFFFF" stroke="#00D820" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.385,13.201 11.688,35.972 37.609,35.972 "/>
+ <polygon fill="#FFFFFF" stroke="#00D920" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.387,13.228 11.716,35.946 37.58,35.946 "/>
+ <polygon fill="#FFFFFF" stroke="#00DA21" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.387,13.252 11.746,35.921 37.553,35.921 "/>
+ <polygon fill="#FFFFFF" stroke="#00DB21" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.388,13.277 11.773,35.896 37.521,35.896 "/>
+ <polygon fill="#FFFFFF" stroke="#00DC22" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.389,13.302 11.802,35.872 37.494,35.872 "/>
+ <polygon fill="#FFFFFF" stroke="#00DD22" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.389,13.327 11.832,35.845 37.465,35.845 "/>
+ <polygon fill="#FFFFFF" stroke="#00DE23" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.39,13.354 11.86,35.819 37.438,35.819 "/>
+ <polygon fill="#FFFFFF" stroke="#00DF23" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.39,13.378 11.89,35.796 37.408,35.796 "/>
+ <polygon fill="#FFFFFF" stroke="#00E024" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.391,13.403 11.917,35.769 37.379,35.769 "/>
+ <polygon fill="#FFFFFF" stroke="#00E124" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.391,13.429 11.946,35.743 37.352,35.743 "/>
+ <polygon fill="#FFFFFF" stroke="#00E225" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.392,13.455 11.976,35.718 37.32,35.718 "/>
+ <polygon fill="#FFFFFF" stroke="#00E325" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.393,13.479 12.003,35.694 37.293,35.694 "/>
+ <polygon fill="#FFFFFF" stroke="#00E426" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.393,13.504 12.033,35.669 37.264,35.669 "/>
+ <polygon fill="#FFFFFF" stroke="#00E526" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.394,13.529 12.062,35.644 37.234,35.644 "/>
+ <polygon fill="#FFFFFF" stroke="#00E627" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.394,13.556 12.09,35.618 37.207,35.618 "/>
+ <polygon fill="#FFFFFF" stroke="#00E727" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.395,13.581 12.12,35.593 37.178,35.593 "/>
+ <polygon fill="#FFFFFF" stroke="#00E828" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.396,13.605 12.147,35.567 37.148,35.567 "/>
+ <polygon fill="#FFFFFF" stroke="#00E928" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.396,13.63 12.176,35.544 37.121,35.544 "/>
+ <polygon fill="#FFFFFF" stroke="#00EA29" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.396,13.655 12.206,35.517 37.092,35.517 "/>
+ <polygon fill="#FFFFFF" stroke="#00EB29" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.396,13.682 12.233,35.491 37.062,35.491 "/>
+ <polygon fill="#FFFFFF" stroke="#00EC2A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.397,13.707 12.263,35.466 37.035,35.466 "/>
+ <polygon fill="#FFFFFF" stroke="#00ED2A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.397,13.732 12.292,35.44 37.006,35.44 "/>
+ <polygon fill="#FFFFFF" stroke="#00EE2B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.398,13.756 12.319,35.417 36.977,35.417 "/>
+ <polygon fill="#FFFFFF" stroke="#00EF2B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.398,13.782 12.349,35.392 36.949,35.392 "/>
+ <polygon fill="#FFFFFF" stroke="#00F02C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.399,13.808 12.377,35.366 36.92,35.366 "/>
+ <polygon fill="#FFFFFF" stroke="#00F12C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.399,13.833 12.407,35.341 36.891,35.341 "/>
+ <polygon fill="#FFFFFF" stroke="#00F22D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.4,13.858 12.436,35.315 36.861,35.315 "/>
+ <polygon fill="#FFFFFF" stroke="#00F32D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.401,13.883 12.463,35.29 36.834,35.29 "/>
+ <polygon fill="#FFFFFF" stroke="#00F42E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.401,13.908 12.493,35.265 36.805,35.265 "/>
+ <polygon fill="#FFFFFF" stroke="#00F52E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.402,13.934 12.521,35.239 36.775,35.239 "/>
+ <polygon fill="#FFFFFF" stroke="#00F62F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.402,13.959 12.549,35.214 36.748,35.214 "/>
+ <polygon fill="#FFFFFF" stroke="#00F72F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.403,13.983 12.579,35.188 36.719,35.188 "/>
+ <polygon fill="#FFFFFF" stroke="#00F830" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.404,14.009 12.607,35.165 36.689,35.165 "/>
+ <polygon fill="#FFFFFF" stroke="#00F930" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.404,14.034 12.637,35.138 36.662,35.138 "/>
+ <polygon fill="#FFFFFF" stroke="#00FA31" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.405,14.061 12.666,35.112 36.633,35.112 "/>
+ <polygon fill="#FFFFFF" stroke="#00FB31" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.405,14.085 12.693,35.089 36.604,35.089 "/>
+ <polygon fill="#FFFFFF" stroke="#00FC32" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.407,14.11 12.723,35.063 36.574,35.063 "/>
+ <polygon fill="#FFFFFF" stroke="#00FD32" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.408,14.135 12.75,35.038 36.547,35.038 "/>
+ <polygon fill="#FFFFFF" stroke="#00FE33" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points="
+ 24.408,14.16 12.779,35.013 36.518,35.013 "/>
+ <path fill="#FFFFFF" stroke="#00FF33" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M24.409,14.187
+ l-11.6,20.801h23.68L24.409,14.187z"/>
+ </g>
+
+ <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="582.6475" y1="-987.77" x2="582.6475" y2="-1015.4038" gradientTransform="matrix(1 0 0 -1 -558 -977)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#00FF33"/>
+ </linearGradient>
+ <path fill="url(#XMLID_4_)" d="M39.693,34.153L26.857,12.138c-0.51-0.85-1.443-1.445-2.463-1.36c-1.021,0-1.955,0.595-2.465,1.445
+ L9.604,34.239c-0.511,0.85-0.511,1.953,0,2.805c0.51,0.852,1.444,1.359,2.465,1.359h25.16c1.021,0,1.955-0.51,2.465-1.445
+ C40.203,36.106,40.203,35.003,39.693,34.153L39.693,34.153z"/>
+ <g>
+ <path d="M24.648,33.487c-1.1,0-1.8-0.801-1.8-1.801c0-1.102,0.7-1.801,1.8-1.801c1.1,0,1.801,0.699,1.801,1.801
+ C26.449,32.687,25.748,33.487,24.648,33.487L24.648,33.487z M23.449,28.786l-0.4-9.1h3.2l-0.4,9.1H23.55H23.449z"/>
+ </g>
+</g>
+<g id="crop_x0020_marks">
+ <path fill="none" d="M48.648,48.586h-48v-48h48V48.586z"/>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg
new file mode 100644
index 0000000..52b73cf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g>
+ <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="7.5901" stroke-linejoin="round" d="M22.34,41.101c0,0.301,0.3,0.301,0.5,0.2
+ l16.6-16.899c0.5-0.5,0.4-0.7,0-1l-16.6-16.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.84c-0.3,0-0.5,0.2-0.5,0.4v13.299
+ c0,0.4,0.2,0.5,0.6,0.5h13.5L22.34,41.101z"/>
+ <g>
+ <path fill="#0033CC" d="M22.34,41.101c0,0.301,0.3,0.301,0.5,0.2l16.6-16.899c0.5-0.5,0.4-0.7,0-1l-16.6-16.7
+ c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.84c-0.3,0-0.5,0.2-0.5,0.4v13.299c0,0.4,0.2,0.5,0.6,0.5h13.5L22.34,41.101z"/>
+ <path fill="#0134CC" d="M22.351,41.074c0,0.3,0.3,0.3,0.5,0.2L39.427,24.4c0.5-0.499,0.4-0.699,0-0.999L22.85,6.729
+ c-0.1-0.1-0.399-0.1-0.399,0.099v9.984H8.87c-0.299,0-0.5,0.2-0.5,0.4v13.279c0,0.398,0.2,0.499,0.6,0.499H22.45L22.351,41.074z"
+ />
+ <path fill="#0235CD" d="M22.359,41.047c0,0.3,0.299,0.3,0.499,0.2l16.553-16.848c0.5-0.498,0.399-0.697,0-0.997L22.858,6.755
+ c-0.1-0.1-0.399-0.1-0.399,0.1v9.969H8.897c-0.299,0-0.499,0.199-0.499,0.399v13.258c0,0.398,0.2,0.498,0.598,0.498h13.462
+ L22.359,41.047z"/>
+ <path fill="#0336CD" d="M22.369,41.021c0,0.301,0.299,0.301,0.498,0.199l16.53-16.82c0.498-0.498,0.397-0.696,0-0.995
+ L22.866,6.783c-0.1-0.1-0.398-0.1-0.398,0.099v9.953H8.926c-0.299,0-0.498,0.199-0.498,0.398v13.239
+ c0,0.397,0.199,0.496,0.598,0.496h13.442L22.369,41.021z"/>
+ <path fill="#0437CE" d="M22.378,40.994c0,0.299,0.298,0.299,0.497,0.198l16.506-16.794c0.496-0.497,0.397-0.695,0-0.994
+ L22.876,6.81c-0.1-0.1-0.398-0.1-0.398,0.099v9.937H8.956c-0.298,0-0.498,0.199-0.498,0.398v13.217c0,0.397,0.2,0.496,0.597,0.496
+ h13.423L22.378,40.994z"/>
+ <path fill="#0538CE" d="M22.389,40.968c0,0.299,0.298,0.299,0.496,0.198l16.483-16.769c0.496-0.496,0.397-0.694,0-0.992
+ L22.884,6.836c-0.099-0.099-0.397-0.099-0.397,0.099v9.922H8.983c-0.297,0-0.496,0.199-0.496,0.397V30.45
+ c0,0.396,0.199,0.496,0.596,0.496h13.404L22.389,40.968z"/>
+ <path fill="#0639CF" d="M22.398,40.94c0,0.299,0.298,0.299,0.496,0.199l16.46-16.742c0.495-0.496,0.396-0.694,0-0.991
+ L22.894,6.863c-0.099-0.099-0.396-0.099-0.396,0.099v9.906H9.012c-0.297,0-0.496,0.198-0.496,0.396V30.44
+ c0,0.396,0.199,0.494,0.595,0.494h13.386L22.398,40.94z"/>
+ <path fill="#073ACF" d="M22.407,40.914c0,0.298,0.298,0.298,0.495,0.198l16.437-16.716c0.494-0.495,0.396-0.692,0-0.989
+ L22.902,6.891c-0.099-0.099-0.396-0.099-0.396,0.099v9.891H9.041c-0.296,0-0.495,0.198-0.495,0.396v13.154
+ c0,0.396,0.198,0.493,0.594,0.493h13.367L22.407,40.914z"/>
+ <path fill="#083BD0" d="M22.417,40.888c0,0.297,0.297,0.297,0.495,0.198l16.413-16.689c0.494-0.494,0.396-0.691,0-0.987
+ L22.912,6.917c-0.099-0.099-0.396-0.099-0.396,0.099v9.875H9.069c-0.296,0-0.494,0.198-0.494,0.396v13.133
+ c0,0.395,0.198,0.493,0.594,0.493h13.347L22.417,40.888z"/>
+ <path fill="#093CD0" d="M22.426,40.86c0,0.297,0.296,0.297,0.493,0.197l16.39-16.662c0.492-0.494,0.395-0.69,0-0.986L22.919,6.943
+ c-0.099-0.099-0.395-0.099-0.395,0.098v9.86H9.099c-0.296,0-0.494,0.197-0.494,0.395V30.41c0,0.396,0.198,0.493,0.593,0.493
+ h13.328L22.426,40.86z"/>
+ <path fill="#0A3DD1" d="M22.437,40.834c0,0.297,0.296,0.297,0.493,0.196l16.367-16.636c0.492-0.493,0.395-0.689,0-0.984
+ L22.928,6.97c-0.099-0.099-0.394-0.099-0.394,0.098v9.844H9.127c-0.296,0-0.493,0.197-0.493,0.394v13.093
+ c0,0.395,0.197,0.492,0.592,0.492h13.309L22.437,40.834z"/>
+ <path fill="#0B3ED1" d="M22.445,40.808c0,0.297,0.296,0.297,0.492,0.197l16.343-16.61c0.492-0.492,0.395-0.688,0-0.982
+ L22.938,6.999C22.84,6.9,22.544,6.9,22.544,7.097v9.829H9.155c-0.295,0-0.493,0.196-0.493,0.394v13.072
+ c0,0.394,0.198,0.49,0.591,0.49h13.29L22.445,40.808z"/>
+ <path fill="#0C3FD2" d="M22.456,40.78c0,0.296,0.295,0.296,0.492,0.197l16.319-16.584c0.49-0.491,0.395-0.687,0-0.982
+ L22.946,7.024c-0.098-0.098-0.393-0.098-0.393,0.098v9.813H9.185c-0.294,0-0.492,0.196-0.492,0.393v13.05
+ c0,0.394,0.197,0.491,0.59,0.491h13.271L22.456,40.78z"/>
+ <path fill="#0D40D2" d="M22.464,40.754c0,0.295,0.294,0.295,0.491,0.196l16.295-16.558c0.489-0.49,0.393-0.686,0-0.98
+ L22.956,7.051c-0.099-0.098-0.393-0.098-0.393,0.097v9.797H9.212c-0.294,0-0.49,0.197-0.49,0.393v13.031
+ c0,0.393,0.196,0.489,0.588,0.489h13.252L22.464,40.754z"/>
+ <path fill="#0E41D3" d="M22.475,40.728c0,0.295,0.294,0.295,0.49,0.196l16.272-16.531c0.49-0.489,0.394-0.684,0-0.978L22.964,7.08
+ c-0.098-0.098-0.392-0.098-0.392,0.097v9.782H9.241c-0.294,0-0.49,0.196-0.49,0.392v13.01c0,0.392,0.196,0.488,0.588,0.488h13.233
+ L22.475,40.728z"/>
+ <path fill="#0F42D3" d="M22.483,40.701c0,0.294,0.294,0.294,0.49,0.194l16.248-16.504c0.488-0.488,0.393-0.683,0-0.977
+ L22.974,7.105c-0.098-0.098-0.391-0.098-0.391,0.097v9.767H9.271c-0.293,0-0.489,0.195-0.489,0.391v12.988
+ c0,0.392,0.196,0.487,0.587,0.487h13.214L22.483,40.701z"/>
+ <path fill="#1043D4" d="M22.494,40.675c0,0.293,0.294,0.293,0.489,0.194l16.226-16.478c0.487-0.488,0.392-0.683,0-0.975
+ L22.982,7.132c-0.098-0.098-0.391-0.098-0.391,0.097v9.751H9.298c-0.293,0-0.489,0.195-0.489,0.39v12.967
+ c0,0.392,0.196,0.487,0.586,0.487H22.59L22.494,40.675z"/>
+ <path fill="#1144D4" d="M22.502,40.647c0,0.293,0.293,0.293,0.488,0.194L39.191,24.39c0.487-0.487,0.392-0.682,0-0.974
+ L22.991,7.16c-0.098-0.098-0.391-0.098-0.391,0.097v9.735H9.328c-0.293,0-0.488,0.195-0.488,0.39v12.948
+ c0,0.39,0.195,0.486,0.585,0.486h13.176L22.502,40.647z"/>
+ <path fill="#1245D5" d="M22.514,40.621c0,0.292,0.292,0.292,0.487,0.194L39.177,24.39c0.488-0.486,0.392-0.68,0-0.972L23,7.188
+ c-0.098-0.098-0.39-0.098-0.39,0.096v9.72H9.356c-0.292,0-0.487,0.195-0.487,0.39v12.926c0,0.39,0.195,0.486,0.585,0.486H22.61
+ L22.514,40.621z"/>
+ <path fill="#1346D5" d="M22.522,40.595c0,0.292,0.292,0.292,0.487,0.194L39.165,24.39c0.485-0.485,0.389-0.679,0-0.97
+ L23.009,7.213c-0.098-0.097-0.389-0.097-0.389,0.097v9.704H9.384c-0.292,0-0.486,0.194-0.486,0.389V30.31
+ c0,0.389,0.195,0.484,0.584,0.484h13.138L22.522,40.595z"/>
+ <path fill="#1447D6" d="M22.531,40.567c0,0.291,0.292,0.291,0.486,0.193l16.132-16.372c0.484-0.484,0.389-0.678,0-0.969
+ L23.018,7.241c-0.097-0.097-0.389-0.097-0.389,0.097v9.688H9.414c-0.292,0-0.486,0.194-0.486,0.388v12.885
+ c0,0.388,0.195,0.483,0.583,0.483h13.118L22.531,40.567z"/>
+ <path fill="#1548D6" d="M22.542,40.541c0,0.291,0.292,0.291,0.485,0.192l16.107-16.346c0.484-0.484,0.389-0.677,0-0.968
+ L23.026,7.268c-0.097-0.097-0.388-0.097-0.388,0.097v9.672H9.441c-0.291,0-0.485,0.194-0.485,0.388v12.865
+ c0,0.388,0.194,0.483,0.582,0.483h13.099L22.542,40.541z"/>
+ <path fill="#1649D7" d="M22.551,40.515c0,0.291,0.291,0.291,0.484,0.193l16.083-16.321c0.485-0.483,0.389-0.676,0-0.966
+ L23.036,7.294c-0.097-0.097-0.388-0.097-0.388,0.096v9.657H9.47c-0.291,0-0.484,0.193-0.484,0.387v12.844
+ c0,0.387,0.194,0.481,0.582,0.481h13.08L22.551,40.515z"/>
+ <path fill="#174AD7" d="M22.561,40.487c0,0.291,0.291,0.291,0.484,0.193l16.061-16.294c0.483-0.482,0.388-0.674,0-0.964
+ L23.044,7.321c-0.097-0.096-0.387-0.096-0.387,0.097v9.641H9.5c-0.29,0-0.483,0.193-0.483,0.386v12.823
+ c0,0.387,0.193,0.481,0.58,0.481h13.062L22.561,40.487z"/>
+ <path fill="#184BD8" d="M22.57,40.462c0,0.289,0.29,0.289,0.483,0.191l16.038-16.267c0.481-0.481,0.387-0.673,0-0.962
+ L23.053,7.349c-0.097-0.096-0.387-0.096-0.387,0.096v9.626H9.527c-0.29,0-0.483,0.193-0.483,0.385v12.802
+ c0,0.386,0.193,0.481,0.58,0.481h13.042L22.57,40.462z"/>
+ <path fill="#194CD8" d="M22.58,40.435c0,0.289,0.29,0.289,0.482,0.192l16.014-16.242c0.481-0.481,0.387-0.672,0-0.961
+ L23.062,7.375c-0.097-0.096-0.386-0.096-0.386,0.096v9.611H9.557c-0.289,0-0.482,0.192-0.482,0.385v12.782
+ c0,0.384,0.193,0.479,0.579,0.479h13.023L22.58,40.435z"/>
+ <path fill="#1A4DD9" d="M22.589,40.408c0,0.288,0.289,0.288,0.482,0.192l15.99-16.216c0.48-0.48,0.386-0.672,0-0.959L23.071,7.402
+ c-0.097-0.096-0.385-0.096-0.385,0.095v9.595H9.585c-0.289,0-0.482,0.192-0.482,0.384v12.761c0,0.385,0.193,0.479,0.578,0.479
+ h13.004L22.589,40.408z"/>
+ <path fill="#1B4ED9" d="M22.6,40.382c0,0.288,0.289,0.288,0.481,0.192l15.967-16.19c0.48-0.479,0.385-0.67,0-0.958L23.081,7.43
+ c-0.096-0.096-0.384-0.096-0.384,0.095v9.58H9.614c-0.288,0-0.481,0.192-0.481,0.384v12.741c0,0.383,0.193,0.478,0.577,0.478
+ h12.985L22.6,40.382z"/>
+ <path fill="#1C4FDA" d="M22.608,40.354c0,0.289,0.289,0.289,0.48,0.192l15.943-16.164c0.479-0.478,0.386-0.669,0-0.957
+ L23.088,7.457c-0.096-0.096-0.384-0.096-0.384,0.095v9.564H9.643c-0.288,0-0.48,0.191-0.48,0.383v12.719
+ c0,0.383,0.192,0.479,0.577,0.479h12.966L22.608,40.354z"/>
+ <path fill="#1D50DA" d="M22.619,40.328c0,0.287,0.288,0.287,0.479,0.19l15.92-16.136c0.479-0.478,0.384-0.668,0-0.955
+ L23.098,7.482c-0.096-0.096-0.384-0.096-0.384,0.095v9.548H9.67c-0.288,0-0.479,0.191-0.479,0.382v12.699
+ c0,0.382,0.191,0.479,0.575,0.479h12.947L22.619,40.328z"/>
+ <path fill="#1E51DB" d="M22.628,40.302c0,0.287,0.288,0.287,0.479,0.191l15.896-16.111c0.479-0.477,0.385-0.667,0-0.954
+ L23.106,7.51c-0.096-0.096-0.383-0.096-0.383,0.094v9.533H9.699c-0.287,0-0.479,0.191-0.479,0.382v12.679
+ c0,0.382,0.191,0.477,0.575,0.477h12.928L22.628,40.302z"/>
+ <path fill="#1F52DB" d="M22.637,40.274c0,0.287,0.288,0.287,0.479,0.19L38.99,24.381c0.478-0.476,0.382-0.666,0-0.952
+ L23.115,7.538c-0.095-0.096-0.382-0.096-0.382,0.094v9.517H9.729c-0.287,0-0.478,0.191-0.478,0.381v12.657
+ c0,0.381,0.191,0.477,0.574,0.477h12.909L22.637,40.274z"/>
+ <path fill="#2053DC" d="M22.647,40.249c0,0.285,0.287,0.285,0.478,0.189l15.85-16.058c0.477-0.475,0.382-0.665,0-0.95
+ L23.125,7.563c-0.096-0.095-0.382-0.095-0.382,0.095v9.501H9.757c-0.286,0-0.478,0.19-0.478,0.381v12.636
+ c0,0.381,0.191,0.475,0.573,0.475h12.89L22.647,40.249z"/>
+ <path fill="#2154DC" d="M22.656,40.222c0,0.285,0.287,0.285,0.477,0.19L38.96,24.38c0.477-0.475,0.381-0.664,0-0.949L23.133,7.59
+ c-0.096-0.095-0.382-0.095-0.382,0.095v9.486H9.786c-0.286,0-0.477,0.19-0.477,0.38v12.617c0,0.379,0.191,0.474,0.572,0.474
+ h12.871L22.656,40.222z"/>
+ <path fill="#2255DD" d="M22.667,40.194c0,0.285,0.286,0.285,0.477,0.189l15.802-16.004c0.476-0.474,0.382-0.663,0-0.947
+ L23.143,7.618c-0.096-0.095-0.381-0.095-0.381,0.094v9.471H9.814c-0.285,0-0.476,0.189-0.476,0.379v12.596
+ c0,0.379,0.191,0.473,0.572,0.473h12.851L22.667,40.194z"/>
+ <path fill="#2356DD" d="M22.675,40.169c0,0.284,0.286,0.284,0.476,0.189l15.779-15.979c0.475-0.473,0.381-0.662,0-0.945
+ L23.151,7.645c-0.095-0.094-0.38-0.094-0.38,0.094v9.455H9.843c-0.285,0-0.475,0.189-0.475,0.378v12.574
+ c0,0.379,0.19,0.474,0.571,0.474h12.832L22.675,40.169z"/>
+ <path fill="#2457DE" d="M22.686,40.144c0,0.282,0.285,0.282,0.475,0.188l15.756-15.953c0.474-0.472,0.379-0.66,0-0.944
+ L23.159,7.671c-0.095-0.094-0.379-0.094-0.379,0.094v9.439H9.873c-0.285,0-0.475,0.189-0.475,0.378v12.554
+ c0,0.378,0.19,0.472,0.569,0.472H22.78L22.686,40.144z"/>
+ <path fill="#2558DE" d="M22.694,40.115c0,0.282,0.285,0.282,0.474,0.188l15.733-15.925c0.473-0.471,0.379-0.66,0-0.942
+ L23.168,7.698c-0.095-0.094-0.379-0.094-0.379,0.094v9.424H9.9c-0.284,0-0.474,0.189-0.474,0.377v12.535
+ c0,0.376,0.189,0.471,0.568,0.471h12.794L22.694,40.115z"/>
+ <path fill="#2659DF" d="M22.705,40.089c0,0.283,0.284,0.283,0.473,0.188l15.708-15.899c0.474-0.471,0.38-0.659,0-0.941
+ L23.177,7.726c-0.095-0.094-0.379-0.094-0.379,0.094v9.408H9.929c-0.284,0-0.473,0.188-0.473,0.377v12.514
+ c0,0.376,0.189,0.469,0.568,0.469h12.775L22.705,40.089z"/>
+ <path fill="#275ADF" d="M22.714,40.063c0,0.281,0.284,0.281,0.473,0.188l15.685-15.874c0.473-0.47,0.379-0.658,0-0.939
+ L23.188,7.752c-0.095-0.094-0.378-0.094-0.378,0.094v9.392H9.958c-0.283,0-0.472,0.188-0.472,0.376v12.492
+ c0,0.375,0.189,0.47,0.567,0.47H22.81L22.714,40.063z"/>
+ <path fill="#285BE0" d="M22.724,40.036c0,0.281,0.283,0.281,0.472,0.188l15.662-15.847c0.472-0.469,0.378-0.656,0-0.938
+ L23.195,7.779c-0.095-0.094-0.377-0.094-0.377,0.094v9.376H9.986c-0.283,0-0.472,0.188-0.472,0.375v12.472
+ c0,0.375,0.189,0.467,0.566,0.467h12.737L22.724,40.036z"/>
+ <path fill="#295CE0" d="M22.732,40.009c0,0.281,0.283,0.281,0.471,0.188l15.639-15.82c0.471-0.468,0.377-0.655,0-0.936
+ L23.205,7.807c-0.094-0.094-0.377-0.094-0.377,0.093v9.361H10.016c-0.283,0-0.471,0.188-0.471,0.375v12.451
+ c0,0.374,0.188,0.468,0.565,0.468h12.718L22.732,40.009z"/>
+ <path fill="#2A5DE1" d="M22.742,39.981c0,0.28,0.283,0.28,0.47,0.188l15.615-15.793c0.471-0.468,0.377-0.654,0-0.935L23.212,7.833
+ c-0.094-0.094-0.376-0.094-0.376,0.093v9.345H10.044c-0.282,0-0.471,0.188-0.471,0.375v12.431c0,0.374,0.188,0.467,0.565,0.467
+ h12.699L22.742,39.981z"/>
+ <path fill="#2B5EE1" d="M22.752,39.956c0,0.279,0.282,0.279,0.469,0.188l15.592-15.768c0.469-0.467,0.376-0.653,0-0.933
+ L23.223,7.86c-0.094-0.093-0.375-0.093-0.375,0.093v9.331H10.072c-0.282,0-0.47,0.187-0.47,0.373v12.41
+ c0,0.373,0.188,0.466,0.563,0.466h12.68L22.752,39.956z"/>
+ <path fill="#2C5FE2" d="M22.761,39.929c0,0.28,0.282,0.28,0.469,0.188l15.567-15.742c0.47-0.466,0.377-0.652,0-0.932L23.231,7.887
+ c-0.094-0.093-0.375-0.093-0.375,0.092v9.315H10.102c-0.281,0-0.469,0.187-0.469,0.373v12.388c0,0.372,0.188,0.465,0.563,0.465
+ h12.661L22.761,39.929z"/>
+ <path fill="#2D60E2" d="M22.771,39.901c0,0.279,0.281,0.279,0.469,0.187l15.544-15.714c0.469-0.465,0.375-0.65,0-0.93
+ L23.239,7.914c-0.094-0.093-0.375-0.093-0.375,0.093v9.299H10.129c-0.28,0-0.468,0.186-0.468,0.373v12.367
+ c0,0.372,0.188,0.465,0.562,0.465h12.642L22.771,39.901z"/>
+ <path fill="#2E61E3" d="M22.781,39.876c0,0.277,0.281,0.277,0.468,0.186l15.521-15.688c0.468-0.464,0.375-0.649,0-0.928
+ L23.25,7.94c-0.094-0.093-0.375-0.093-0.375,0.092v9.284H10.158c-0.28,0-0.467,0.186-0.467,0.372v12.347
+ c0,0.372,0.188,0.464,0.561,0.464h12.623L22.781,39.876z"/>
+ <path fill="#2F62E3" d="M22.792,39.851c0,0.277,0.28,0.277,0.467,0.186l15.499-15.663c0.466-0.464,0.373-0.649,0-0.927
+ l-15.5-15.479c-0.093-0.092-0.374-0.092-0.374,0.092v9.268H10.188c-0.28,0-0.467,0.186-0.467,0.372v12.325
+ c0,0.371,0.187,0.463,0.56,0.463h12.604L22.792,39.851z"/>
+ <path fill="#3063E4" d="M22.799,39.821c0,0.279,0.281,0.279,0.467,0.187l15.475-15.636c0.465-0.463,0.373-0.648,0-0.925
+ L23.267,7.995c-0.093-0.092-0.373-0.092-0.373,0.092v9.252H10.215c-0.279,0-0.466,0.185-0.466,0.371v12.305
+ c0,0.369,0.187,0.461,0.56,0.461h12.584L22.799,39.821z"/>
+ <path fill="#3164E4" d="M22.81,39.796c0,0.277,0.28,0.277,0.466,0.186l15.451-15.61c0.465-0.462,0.372-0.646,0-0.924L23.275,8.021
+ c-0.094-0.092-0.373-0.092-0.373,0.092v9.237H10.245c-0.279,0-0.465,0.185-0.465,0.37v12.285c0,0.369,0.187,0.461,0.559,0.461
+ h12.565L22.81,39.796z"/>
+ <path fill="#3265E5" d="M22.819,39.771c0,0.276,0.279,0.276,0.465,0.185l15.428-15.583c0.465-0.461,0.373-0.646,0-0.922
+ L23.284,8.048c-0.093-0.092-0.372-0.092-0.372,0.092v9.221H10.273c-0.279,0-0.464,0.185-0.464,0.37v12.265
+ c0,0.369,0.186,0.46,0.558,0.46h12.546L22.819,39.771z"/>
+ <path fill="#3366E5" d="M22.83,39.743c0,0.275,0.278,0.275,0.464,0.185l15.404-15.557c0.464-0.46,0.371-0.645,0-0.921
+ L23.293,8.076c-0.093-0.092-0.372-0.092-0.372,0.092v9.206h-12.62c-0.278,0-0.464,0.184-0.464,0.369v12.243
+ c0,0.369,0.186,0.461,0.557,0.461h12.527L22.83,39.743z"/>
+ <path fill="#3366E6" d="M22.838,39.716c0,0.276,0.278,0.276,0.464,0.186l15.38-15.532c0.463-0.459,0.371-0.643,0-0.918
+ L23.302,8.103c-0.093-0.092-0.371-0.092-0.371,0.091v9.19H10.331c-0.278,0-0.463,0.185-0.463,0.368v12.222
+ c0,0.368,0.186,0.459,0.556,0.459h12.508L22.838,39.716z"/>
+ <path fill="#3467E6" d="M22.849,39.688c0,0.275,0.278,0.275,0.463,0.185l15.357-15.504c0.461-0.458,0.369-0.642,0-0.917
+ L23.312,8.129C23.217,8.038,22.94,8.038,22.94,8.22v9.174H10.358c-0.277,0-0.462,0.184-0.462,0.368v12.203
+ c0,0.366,0.185,0.458,0.555,0.458H22.94L22.849,39.688z"/>
+ <path fill="#3568E7" d="M22.857,39.663c0,0.275,0.277,0.275,0.462,0.184l15.333-15.478c0.461-0.458,0.37-0.641,0-0.916
+ L23.319,8.156c-0.093-0.092-0.37-0.092-0.37,0.091v9.159H10.387c-0.277,0-0.461,0.184-0.461,0.367v12.182
+ c0,0.366,0.185,0.457,0.554,0.457h12.47L22.857,39.663z"/>
+ <path fill="#3669E7" d="M22.867,39.637c0,0.274,0.277,0.274,0.461,0.183l15.31-15.452c0.461-0.458,0.368-0.64,0-0.915
+ l-15.31-15.27c-0.092-0.091-0.369-0.091-0.369,0.091v9.143H10.417c-0.277,0-0.461,0.184-0.461,0.366v12.16
+ c0,0.365,0.184,0.457,0.553,0.457h12.451L22.867,39.637z"/>
+ <path fill="#376AE8" d="M22.877,39.608c0,0.274,0.276,0.274,0.46,0.184l15.287-15.425c0.461-0.457,0.369-0.639,0-0.913
+ L23.337,8.21c-0.092-0.091-0.368-0.091-0.368,0.091v9.127H10.445c-0.276,0-0.46,0.183-0.46,0.366v12.14
+ c0,0.365,0.184,0.455,0.552,0.455h12.432L22.877,39.608z"/>
+ <path fill="#386BE8" d="M22.886,39.583c0,0.273,0.276,0.273,0.46,0.184l15.263-15.4c0.459-0.456,0.368-0.638,0-0.911L23.347,8.237
+ c-0.092-0.091-0.368-0.091-0.368,0.091v9.112H10.474c-0.275,0-0.459,0.183-0.459,0.365v12.119c0,0.363,0.184,0.454,0.552,0.454
+ h12.413L22.886,39.583z"/>
+ <path fill="#396CE9" d="M22.896,39.558c0,0.272,0.276,0.272,0.459,0.182l15.239-15.374c0.459-0.455,0.367-0.637,0-0.91
+ L23.355,8.265c-0.092-0.091-0.368-0.091-0.368,0.09v9.097H10.502c-0.275,0-0.459,0.183-0.459,0.364v12.099
+ c0,0.364,0.184,0.454,0.551,0.454h12.394L22.896,39.558z"/>
+ <path fill="#3A6DE9" d="M22.905,39.528c0,0.273,0.276,0.273,0.459,0.184l15.217-15.348c0.457-0.454,0.366-0.635,0-0.908
+ L23.364,8.292c-0.092-0.091-0.367-0.091-0.367,0.09v9.081H10.531c-0.275,0-0.458,0.182-0.458,0.364v12.079
+ c0,0.361,0.184,0.453,0.55,0.453h12.374L22.905,39.528z"/>
+ <path fill="#3B6EEA" d="M22.916,39.503c0,0.271,0.275,0.271,0.458,0.182l15.193-15.32c0.456-0.453,0.366-0.634,0-0.906
+ L23.374,8.318c-0.092-0.091-0.366-0.091-0.366,0.09v9.065H10.56c-0.274,0-0.458,0.182-0.458,0.363v12.057
+ c0,0.362,0.183,0.453,0.549,0.453h12.355L22.916,39.503z"/>
+ <path fill="#3C6FEA" d="M22.924,39.478c0,0.271,0.274,0.271,0.457,0.181l15.17-15.294c0.455-0.453,0.365-0.633,0-0.905
+ L23.381,8.344c-0.092-0.09-0.366-0.09-0.366,0.09v9.05H10.588c-0.274,0-0.457,0.181-0.457,0.363v12.036
+ c0,0.361,0.183,0.451,0.548,0.451h12.336L22.924,39.478z"/>
+ <path fill="#3D70EB" d="M22.935,39.45c0,0.271,0.274,0.271,0.456,0.181l15.146-15.269c0.455-0.452,0.365-0.632,0-0.904
+ L23.391,8.373c-0.091-0.09-0.365-0.09-0.365,0.09v9.034H10.617c-0.274,0-0.456,0.181-0.456,0.362v12.017
+ c0,0.36,0.182,0.45,0.547,0.45h12.317L22.935,39.45z"/>
+ <path fill="#3E71EB" d="M22.943,39.424c0,0.271,0.274,0.271,0.456,0.181l15.123-15.243c0.455-0.451,0.363-0.631,0-0.902
+ L23.399,8.398c-0.091-0.09-0.365-0.09-0.365,0.09v9.019h-12.39c-0.273,0-0.455,0.181-0.455,0.361v11.994
+ c0,0.361,0.182,0.451,0.546,0.451h12.298L22.943,39.424z"/>
+ <path fill="#3F72EC" d="M22.954,39.397c0,0.271,0.273,0.271,0.455,0.181l15.099-15.217c0.455-0.45,0.365-0.63,0-0.9L23.408,8.425
+ c-0.091-0.09-0.364-0.09-0.364,0.089v9.003h-12.37c-0.272,0-0.455,0.18-0.455,0.361v11.974c0,0.359,0.182,0.449,0.546,0.449
+ h12.279L22.954,39.397z"/>
+ <path fill="#4073EC" d="M22.962,39.37c0,0.27,0.273,0.27,0.455,0.18l15.076-15.188c0.453-0.45,0.363-0.629,0-0.898L23.417,8.453
+ c-0.091-0.09-0.363-0.09-0.363,0.089v8.988H10.704c-0.272,0-0.454,0.18-0.454,0.36v11.954c0,0.358,0.182,0.448,0.545,0.448h12.26
+ L22.962,39.37z"/>
+ <path fill="#4174ED" d="M22.973,39.344c0,0.271,0.272,0.271,0.454,0.181L38.479,24.36c0.452-0.449,0.362-0.628,0-0.897
+ L23.426,8.48c-0.091-0.09-0.363-0.09-0.363,0.089v8.972H10.731c-0.272,0-0.453,0.18-0.453,0.359v11.933
+ c0,0.357,0.181,0.447,0.544,0.447h12.241L22.973,39.344z"/>
+ <path fill="#4275ED" d="M22.982,39.315c0,0.271,0.272,0.271,0.453,0.181l15.028-15.137c0.453-0.448,0.363-0.626,0-0.896
+ L23.436,8.506c-0.091-0.09-0.362-0.09-0.362,0.089v8.957H10.76c-0.271,0-0.453,0.18-0.453,0.358v11.913
+ c0,0.357,0.181,0.445,0.543,0.445h12.222L22.982,39.315z"/>
+ <path fill="#4376EE" d="M22.991,39.29c0,0.27,0.272,0.27,0.453,0.179l15.005-15.109c0.451-0.447,0.362-0.625,0-0.894L23.444,8.534
+ c-0.091-0.089-0.362-0.089-0.362,0.089v8.94H10.79c-0.271,0-0.452,0.18-0.452,0.358v11.893c0,0.355,0.181,0.444,0.542,0.444
+ h12.203L22.991,39.29z"/>
+ <path fill="#4477EE" d="M23.001,39.265c0,0.268,0.271,0.268,0.452,0.178l14.981-15.083c0.449-0.446,0.361-0.625,0-0.893
+ L23.454,8.561c-0.091-0.089-0.361-0.089-0.361,0.089v8.925H10.817c-0.271,0-0.451,0.179-0.451,0.357v11.87
+ c0,0.356,0.181,0.445,0.542,0.445h12.184L23.001,39.265z"/>
+ <path fill="#4578EF" d="M23.01,39.237c0,0.268,0.271,0.268,0.451,0.178l14.959-15.058c0.449-0.445,0.359-0.624,0-0.891
+ L23.461,8.587c-0.09-0.089-0.361-0.089-0.361,0.089v8.91H10.847c-0.27,0-0.45,0.179-0.45,0.356v11.851
+ c0,0.354,0.18,0.444,0.541,0.444h12.165L23.01,39.237z"/>
+ <path fill="#4679EF" d="M23.021,39.21c0,0.268,0.271,0.268,0.45,0.18l14.935-15.032c0.449-0.445,0.36-0.623,0-0.889L23.47,8.614
+ c-0.09-0.089-0.36-0.089-0.36,0.089v8.894H10.875c-0.27,0-0.45,0.179-0.45,0.356v11.83c0,0.354,0.18,0.444,0.54,0.444H23.11
+ L23.021,39.21z"/>
+ <path fill="#477AF0" d="M23.03,39.185c0,0.267,0.27,0.267,0.449,0.178l14.912-15.005c0.447-0.444,0.359-0.622,0-0.888
+ L23.479,8.642c-0.09-0.089-0.359-0.089-0.359,0.088v8.878H10.903c-0.27,0-0.449,0.178-0.449,0.356v11.809
+ c0,0.354,0.18,0.441,0.539,0.441h12.127L23.03,39.185z"/>
+ <path fill="#487BF0" d="M23.041,39.157c0,0.266,0.269,0.266,0.448,0.177l14.89-14.979c0.446-0.443,0.357-0.62,0-0.886
+ L23.488,8.668c-0.09-0.089-0.359-0.089-0.359,0.088v8.863H10.933c-0.269,0-0.448,0.177-0.448,0.354v11.788
+ c0,0.354,0.179,0.441,0.538,0.441h12.107L23.041,39.157z"/>
+ <path fill="#497CF1" d="M23.049,39.13c0,0.268,0.269,0.268,0.448,0.178l14.865-14.952c0.446-0.442,0.357-0.619,0-0.885
+ L23.498,8.695c-0.09-0.088-0.358-0.088-0.358,0.088v8.848H10.961c-0.269,0-0.448,0.177-0.448,0.354v11.767
+ c0,0.354,0.179,0.44,0.538,0.44H23.14L23.049,39.13z"/>
+ <path fill="#4A7DF1" d="M23.06,39.104c0,0.266,0.269,0.266,0.447,0.176l14.841-14.925c0.446-0.442,0.356-0.618,0-0.883
+ L23.506,8.723c-0.09-0.088-0.358-0.088-0.358,0.088v8.832H10.989c-0.268,0-0.447,0.177-0.447,0.354v11.747
+ c0,0.354,0.179,0.439,0.537,0.439h12.069L23.06,39.104z"/>
+ <path fill="#4B7EF2" d="M23.068,39.077c0,0.265,0.269,0.265,0.447,0.177l14.817-14.899c0.445-0.441,0.357-0.617,0-0.882
+ L23.516,8.75c-0.09-0.088-0.357-0.088-0.357,0.088v8.816h-12.14c-0.268,0-0.446,0.177-0.446,0.354v11.726
+ c0,0.353,0.179,0.439,0.536,0.439h12.05L23.068,39.077z"/>
+ <path fill="#4C7FF2" d="M23.079,39.051c0,0.265,0.268,0.265,0.446,0.177l14.794-14.874c0.444-0.44,0.356-0.616,0-0.88
+ L23.523,8.775c-0.089-0.088-0.357-0.088-0.357,0.088v8.8h-12.12c-0.268,0-0.446,0.176-0.446,0.353v11.705
+ c0,0.353,0.178,0.439,0.535,0.439h12.031L23.079,39.051z"/>
+ <path fill="#4D80F3" d="M23.087,39.024c0,0.264,0.268,0.264,0.445,0.176l14.771-14.848c0.443-0.439,0.355-0.615,0-0.878
+ L23.532,8.803c-0.089-0.088-0.356-0.088-0.356,0.087v8.785H11.075c-0.267,0-0.445,0.176-0.445,0.352v11.685
+ c0,0.352,0.178,0.438,0.534,0.438h12.012L23.087,39.024z"/>
+ <path fill="#4E81F3" d="M23.098,38.997c0,0.264,0.267,0.264,0.445,0.176l14.748-14.82c0.442-0.438,0.354-0.614,0-0.877
+ L23.542,8.831c-0.089-0.088-0.356-0.088-0.356,0.087v8.769H11.104c-0.266,0-0.444,0.176-0.444,0.352v11.665
+ c0,0.35,0.178,0.437,0.533,0.437h11.993L23.098,38.997z"/>
+ <path fill="#4F82F4" d="M23.107,38.972c0,0.262,0.267,0.262,0.444,0.174l14.723-14.794c0.441-0.438,0.355-0.613,0-0.875
+ L23.55,8.856c-0.089-0.087-0.355-0.087-0.355,0.087v8.754H11.132c-0.266,0-0.443,0.176-0.443,0.351V29.69
+ c0,0.351,0.177,0.438,0.532,0.438h11.974L23.107,38.972z"/>
+ <path fill="#5083F4" d="M23.116,38.944c0,0.262,0.266,0.262,0.443,0.175l14.699-14.769c0.443-0.437,0.354-0.611,0-0.874
+ L23.56,8.883c-0.089-0.087-0.354-0.087-0.354,0.087v8.738H11.162c-0.266,0-0.443,0.175-0.443,0.35v11.622
+ c0,0.35,0.177,0.437,0.531,0.437h11.955L23.116,38.944z"/>
+ <path fill="#5184F5" d="M23.126,38.918c0,0.263,0.266,0.263,0.442,0.174l14.677-14.741c0.441-0.436,0.354-0.61,0-0.872
+ L23.568,8.911c-0.089-0.087-0.354-0.087-0.354,0.087v8.723H11.19c-0.265,0-0.442,0.175-0.442,0.35v11.603
+ c0,0.348,0.177,0.436,0.531,0.436h11.936L23.126,38.918z"/>
+ <path fill="#5285F5" d="M23.135,38.892c0,0.262,0.266,0.262,0.442,0.174L38.23,24.35c0.44-0.436,0.354-0.609,0-0.871L23.578,8.938
+ c-0.088-0.087-0.354-0.087-0.354,0.087v8.707H11.218c-0.265,0-0.441,0.175-0.441,0.349v11.581c0,0.348,0.177,0.434,0.53,0.434
+ h11.917L23.135,38.892z"/>
+ <path fill="#5386F6" d="M23.146,38.864c0,0.261,0.265,0.261,0.441,0.174l14.629-14.689c0.44-0.435,0.354-0.608,0-0.869
+ L23.586,8.964c-0.088-0.087-0.353-0.087-0.353,0.086v8.691H11.248c-0.264,0-0.441,0.174-0.441,0.348v11.562
+ c0,0.347,0.177,0.433,0.529,0.433h11.898L23.146,38.864z"/>
+ <path fill="#5487F6" d="M23.154,38.838c0,0.261,0.264,0.261,0.44,0.174l14.608-14.663c0.438-0.434,0.352-0.607,0-0.867
+ L23.595,8.992c-0.088-0.087-0.353-0.087-0.353,0.086v8.676H11.276c-0.264,0-0.44,0.174-0.44,0.348v11.54
+ c0,0.346,0.176,0.433,0.528,0.433h11.878L23.154,38.838z"/>
+ <path fill="#5588F7" d="M23.165,38.812c0,0.26,0.264,0.26,0.44,0.174l14.583-14.637c0.438-0.433,0.353-0.606,0-0.866L23.604,9.019
+ c-0.088-0.086-0.352-0.086-0.352,0.086v8.661H11.304c-0.263,0-0.439,0.173-0.439,0.347v11.52c0,0.346,0.176,0.432,0.527,0.432
+ h11.859L23.165,38.812z"/>
+ <path fill="#5689F7" d="M23.173,38.784c0,0.26,0.264,0.26,0.439,0.173l14.561-14.609c0.438-0.433,0.351-0.605,0-0.865
+ L23.612,9.045c-0.088-0.086-0.351-0.086-0.351,0.086v8.645H11.333c-0.263,0-0.438,0.173-0.438,0.346v11.499
+ c0,0.345,0.175,0.431,0.526,0.431h11.84L23.173,38.784z"/>
+ <path fill="#578AF8" d="M23.184,38.758c0,0.259,0.263,0.259,0.438,0.173l14.537-14.584c0.437-0.432,0.351-0.604,0-0.863
+ L23.622,9.072c-0.088-0.086-0.351-0.086-0.351,0.086v8.629H11.362c-0.263,0-0.438,0.173-0.438,0.346V29.61
+ c0,0.346,0.175,0.432,0.525,0.432h11.821L23.184,38.758z"/>
+ <path fill="#588BF8" d="M23.192,38.731c0,0.258,0.263,0.258,0.438,0.172l14.513-14.558c0.436-0.431,0.35-0.603,0-0.861L23.63,9.1
+ c-0.087-0.086-0.35-0.086-0.35,0.086v8.614h-11.89c-0.262,0-0.437,0.173-0.437,0.345v11.456c0,0.344,0.175,0.43,0.524,0.43H23.28
+ L23.192,38.731z"/>
+ <path fill="#598CF9" d="M23.203,38.704c0,0.259,0.262,0.259,0.437,0.173l14.488-14.532c0.437-0.43,0.351-0.602,0-0.86L23.64,9.126
+ c-0.088-0.086-0.35-0.086-0.35,0.085v8.598h-11.87c-0.262,0-0.437,0.172-0.437,0.344v11.438c0,0.344,0.175,0.428,0.524,0.428
+ h11.784L23.203,38.704z"/>
+ <path fill="#5A8DF9" d="M23.212,38.678c0,0.259,0.262,0.259,0.436,0.173l14.466-14.506c0.436-0.429,0.35-0.6,0-0.858L23.648,9.153
+ c-0.088-0.086-0.349-0.086-0.349,0.085v8.583H11.448c-0.262,0-0.436,0.172-0.436,0.344v11.416c0,0.343,0.174,0.428,0.523,0.428
+ h11.764L23.212,38.678z"/>
+ <path fill="#5B8EFA" d="M23.222,38.651c0,0.257,0.262,0.257,0.436,0.17L38.1,24.343c0.434-0.428,0.349-0.599,0-0.856L23.657,9.181
+ c-0.087-0.085-0.349-0.085-0.349,0.085v8.567H11.477c-0.261,0-0.435,0.171-0.435,0.343v11.394c0,0.343,0.174,0.428,0.522,0.428
+ h11.745L23.222,38.651z"/>
+ <path fill="#5C8FFA" d="M23.231,38.625c0,0.256,0.261,0.256,0.435,0.171l14.418-14.453c0.435-0.428,0.349-0.598,0-0.855
+ L23.667,9.208c-0.087-0.085-0.348-0.085-0.348,0.085v8.551H11.505c-0.261,0-0.434,0.172-0.434,0.343v11.375
+ c0,0.34,0.173,0.426,0.521,0.426h11.726L23.231,38.625z"/>
+ <path fill="#5D90FB" d="M23.24,38.599c0,0.256,0.261,0.256,0.434,0.17L38.07,24.342c0.433-0.427,0.349-0.598,0-0.854L23.674,9.233
+ c-0.087-0.085-0.347-0.085-0.347,0.085v8.536H11.534c-0.26,0-0.434,0.171-0.434,0.342V29.55c0,0.342,0.173,0.426,0.52,0.426
+ h11.707L23.24,38.599z"/>
+ <path fill="#5E91FB" d="M23.25,38.571c0,0.256,0.26,0.256,0.434,0.171l14.371-14.401c0.432-0.426,0.347-0.596,0-0.852
+ L23.685,9.261c-0.087-0.085-0.347-0.085-0.347,0.084v8.521H11.562c-0.259,0-0.433,0.171-0.433,0.342V29.54
+ c0,0.34,0.173,0.424,0.52,0.424h11.688L23.25,38.571z"/>
+ <path fill="#5F92FC" d="M23.26,38.545c0,0.255,0.26,0.255,0.433,0.17l14.349-14.374c0.432-0.425,0.347-0.595,0-0.85L23.692,9.289
+ c-0.087-0.085-0.346-0.085-0.346,0.084v8.504H11.591c-0.259,0-0.432,0.171-0.432,0.341V29.53c0,0.339,0.173,0.423,0.519,0.423
+ h11.669L23.26,38.545z"/>
+ <path fill="#6093FC" d="M23.27,38.519c0,0.254,0.259,0.254,0.432,0.17l14.326-14.347c0.431-0.425,0.345-0.594,0-0.849
+ L23.702,9.314c-0.087-0.085-0.346-0.085-0.346,0.084v8.489H11.621c-0.259,0-0.432,0.17-0.432,0.34v11.291
+ c0,0.34,0.173,0.424,0.518,0.424h11.649L23.27,38.519z"/>
+ <path fill="#6194FD" d="M23.279,38.491c0,0.255,0.259,0.255,0.431,0.17l14.302-14.322c0.429-0.424,0.345-0.593,0-0.847
+ L23.71,9.341c-0.086-0.084-0.345-0.084-0.345,0.084v8.473H11.648c-0.259,0-0.431,0.17-0.431,0.34v11.271
+ c0,0.338,0.172,0.422,0.517,0.422h11.63L23.279,38.491z"/>
+ <path fill="#6295FD" d="M23.29,38.465c0,0.254,0.258,0.254,0.43,0.169l14.28-14.294c0.428-0.423,0.344-0.592,0-0.846L23.719,9.369
+ c-0.086-0.084-0.344-0.084-0.344,0.084v8.458H11.677c-0.258,0-0.43,0.17-0.43,0.339v11.25c0,0.338,0.172,0.422,0.516,0.422h11.612
+ L23.29,38.465z"/>
+ <path fill="#6396FE" d="M23.298,38.438c0,0.254,0.258,0.254,0.43,0.17l14.255-14.269c0.428-0.422,0.344-0.591,0-0.844
+ l-14.255-14.1c-0.086-0.084-0.344-0.084-0.344,0.084v8.442H11.707c-0.258,0-0.429,0.169-0.429,0.338v11.228
+ c0,0.338,0.171,0.422,0.515,0.422h11.592L23.298,38.438z"/>
+ <path fill="#6497FE" d="M23.309,38.412c0,0.253,0.257,0.253,0.429,0.168l14.23-14.242c0.428-0.422,0.344-0.59,0-0.843
+ L23.737,9.422c-0.086-0.084-0.344-0.084-0.344,0.083v8.427H11.734c-0.257,0-0.429,0.169-0.429,0.338v11.209
+ c0,0.336,0.171,0.418,0.514,0.418h11.573L23.309,38.412z"/>
+ <path fill="#6598FF" d="M23.317,38.385c0,0.253,0.257,0.253,0.429,0.169l14.208-14.216c0.428-0.42,0.344-0.588,0-0.841
+ L23.747,9.45c-0.086-0.084-0.343-0.084-0.343,0.083v8.411h-11.64c-0.257,0-0.428,0.169-0.428,0.337v11.188
+ c0,0.336,0.171,0.419,0.514,0.419h11.554L23.317,38.385z"/>
+ <path fill="#6699FF" d="M23.328,38.358c0,0.252,0.257,0.252,0.428,0.168l14.185-14.19c0.426-0.42,0.342-0.587,0-0.839
+ L23.754,9.477c-0.086-0.084-0.342-0.084-0.342,0.083v8.396h-11.62c-0.256,0-0.427,0.168-0.427,0.336v11.167
+ c0,0.335,0.171,0.418,0.513,0.418h11.535L23.328,38.358z"/>
+ </g>
+
+ <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="210.7969" y1="-239.4214" x2="210.7969" y2="-268.5771" gradientTransform="matrix(1 0 0 -1 -186 -230)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#6699FF"/>
+ </linearGradient>
+ <path fill="url(#XMLID_10_)" d="M23.328,38.358c0,0.252,0.257,0.252,0.428,0.168l14.185-14.19c0.426-0.42,0.342-0.587,0-0.839
+ L23.754,9.477c-0.086-0.084-0.342-0.084-0.342,0.083v8.396h-11.62c-0.256,0-0.427,0.168-0.427,0.336v11.167
+ c0,0.335,0.171,0.418,0.513,0.418h11.535L23.328,38.358z"/>
+</g>
+<g id="crop_x0020_marks">
+ <path fill="none" d="M48.06,47.999h-48v-48h48V47.999z"/>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg
new file mode 100644
index 0000000..e94c610
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="25.5" height="25.5" viewBox="0 0 25.5 25.5"
+ overflow="visible" enable-background="new 0 0 25.5 25.5" xml:space="preserve">
+<g id="Layer_x0020_1">
+ <g>
+ <path fill="#1F60A9" d="M25.5,12.7c0,7-5.7,12.7-12.7,12.7C5.7,25.5,0,19.8,0,12.7C0,5.6,5.7,0,12.7,0s12.7,5.7,12.7,12.7H25.5z"
+ />
+ <path fill="#2060AA" d="M25.473,12.7c0,6.983-5.688,12.671-12.672,12.671C5.718,25.471,0.03,19.783,0.03,12.7
+ S5.718,0.029,12.701,0.029c6.984,0,12.671,5.687,12.671,12.671H25.473z"/>
+ <path fill="#2160AB" d="M25.443,12.7c0,6.968-5.674,12.642-12.643,12.642C5.734,25.439,0.061,19.768,0.061,12.7
+ c0-7.068,5.674-12.642,12.642-12.642c6.968,0,12.641,5.674,12.641,12.642H25.443z"/>
+ <path fill="#2160AC" d="M25.415,12.7c0,6.95-5.661,12.612-12.612,12.612C5.752,25.412,0.091,19.751,0.091,12.7
+ c0-7.051,5.661-12.612,12.612-12.612S25.316,5.749,25.316,12.7H25.415z"/>
+ <path fill="#2260AD" d="M25.387,12.7c0,6.936-5.648,12.583-12.583,12.583C5.769,25.383,0.121,19.734,0.121,12.7
+ c0-7.035,5.648-12.583,12.583-12.583c6.937,0,12.583,5.648,12.583,12.583H25.387z"/>
+ <path fill="#2360AE" d="M25.357,12.701c0,6.919-5.635,12.554-12.553,12.554C5.787,25.354,0.152,19.719,0.152,12.701
+ c0-7.019,5.635-12.554,12.554-12.554S25.26,5.782,25.26,12.701H25.357z"/>
+ <path fill="#2460AF" d="M25.33,12.7c0,6.903-5.622,12.524-12.525,12.524C5.803,25.323,0.181,19.702,0.181,12.7
+ S5.803,0.175,12.706,0.175c6.903,0,12.524,5.621,12.524,12.525H25.33z"/>
+ <path fill="#2560B0" d="M25.302,12.701c0,6.887-5.608,12.496-12.496,12.496C5.82,25.294,0.212,19.686,0.212,12.701
+ c0-6.986,5.608-12.496,12.496-12.496c6.888,0,12.496,5.608,12.496,12.496H25.302z"/>
+ <path fill="#2661B1" d="M25.273,12.7c0,6.87-5.597,12.467-12.467,12.467C5.837,25.266,0.242,19.67,0.242,12.7
+ c0-6.969,5.595-12.467,12.467-12.467c6.871,0,12.467,5.596,12.467,12.467H25.273z"/>
+ <path fill="#2661B2" d="M25.245,12.7c0,6.854-5.583,12.438-12.438,12.438C5.854,25.234,0.272,19.652,0.272,12.7
+ S5.854,0.262,12.709,0.262c6.855,0,12.438,5.583,12.438,12.438H25.245z"/>
+ <path fill="#2761B3" d="M25.216,12.7c0,6.839-5.567,12.407-12.408,12.407C5.872,25.205,0.303,19.637,0.303,12.7
+ c0-6.937,5.569-12.408,12.408-12.408S25.12,5.861,25.12,12.7H25.216z"/>
+ <path fill="#2861B4" d="M25.188,12.7c0,6.823-5.557,12.38-12.378,12.38C5.889,25.177,0.333,19.62,0.333,12.7
+ c0-6.92,5.556-12.379,12.379-12.379c6.823,0,12.38,5.556,12.38,12.379H25.188z"/>
+ <path fill="#2961B5" d="M25.16,12.7c0,6.807-5.543,12.35-12.351,12.35C5.906,25.146,0.363,19.604,0.363,12.7
+ c0-6.904,5.543-12.35,12.35-12.35s12.35,5.543,12.35,12.35H25.16z"/>
+ <path fill="#2A61B6" d="M25.131,12.7c0,6.792-5.529,12.321-12.32,12.321C5.923,25.117,0.393,19.588,0.393,12.7
+ c0-6.888,5.53-12.32,12.321-12.32s12.32,5.53,12.32,12.32H25.131z"/>
+ <path fill="#2A61B7" d="M25.104,12.7c0,6.774-5.518,12.292-12.292,12.292C5.94,25.088,0.424,19.57,0.424,12.7
+ c0-6.872,5.517-12.292,12.291-12.292c6.773,0,12.292,5.517,12.292,12.292H25.104z"/>
+ <path fill="#2B61B8" d="M25.075,12.7c0,6.759-5.505,12.263-12.263,12.263C5.958,25.059,0.455,19.555,0.455,12.7
+ c0-6.855,5.503-12.262,12.262-12.262c6.76,0,12.262,5.504,12.262,12.262H25.075z"/>
+ <path fill="#2C61B9" d="M25.046,12.7c0,6.743-5.489,12.233-12.232,12.233C5.975,25.029,0.484,19.539,0.484,12.7
+ c0-6.839,5.491-12.233,12.233-12.233c6.743,0,12.233,5.491,12.233,12.233H25.046z"/>
+ <path fill="#2D61BA" d="M25.018,12.7c0,6.727-5.478,12.204-12.204,12.204C5.992,25,0.514,19.521,0.514,12.7
+ c0-6.822,5.478-12.204,12.204-12.204S24.922,5.973,24.922,12.7H25.018z"/>
+ <path fill="#2E61BB" d="M24.988,12.7c0,6.711-5.463,12.175-12.173,12.175C6.009,24.971,0.544,19.506,0.544,12.7
+ c0-6.807,5.464-12.175,12.175-12.175S24.895,5.99,24.895,12.7H24.988z"/>
+ <path fill="#2F61BC" d="M24.962,12.701c0,6.693-5.45,12.145-12.146,12.145C6.026,24.941,0.575,19.49,0.575,12.701
+ c0-6.79,5.451-12.146,12.146-12.146c6.695,0,12.146,5.452,12.146,12.146H24.962z"/>
+ <path fill="#2F61BD" d="M24.934,12.7c0,6.678-5.438,12.116-12.117,12.116C6.043,24.911,0.605,19.475,0.605,12.7
+ S6.043,0.584,12.722,0.584c6.678,0,12.116,5.438,12.116,12.116H24.934z"/>
+ <path fill="#3061BE" d="M24.904,12.7c0,6.661-5.426,12.087-12.087,12.087C6.06,24.882,0.635,19.457,0.635,12.7
+ c0-6.757,5.425-12.087,12.087-12.087c6.661,0,12.086,5.425,12.086,12.087H24.904z"/>
+ <path fill="#3162BF" d="M24.876,12.7c0,6.646-5.412,12.059-12.058,12.059C6.078,24.854,0.666,19.439,0.666,12.7
+ c0-6.741,5.412-12.058,12.058-12.058S24.783,6.054,24.783,12.7H24.876z"/>
+ <path fill="#3262C0" d="M24.85,12.701c0,6.63-5.399,12.027-12.03,12.027C6.095,24.823,0.696,19.425,0.696,12.701
+ c0-6.725,5.399-12.029,12.029-12.029c6.628,0,12.028,5.399,12.028,12.029H24.85z"/>
+ <path fill="#3362C1" d="M24.818,12.7c0,6.614-5.385,11.999-12,11.999C6.112,24.794,0.727,19.408,0.727,12.7s5.385-12,12-12
+ c6.614,0,12,5.386,12,12H24.818z"/>
+ <path fill="#3362C2" d="M24.791,12.7c0,6.598-5.373,11.97-11.971,11.97C6.129,24.764,0.756,19.393,0.756,12.7
+ S6.129,0.73,12.727,0.73c6.597,0,11.968,5.372,11.968,11.97H24.791z"/>
+ <path fill="#3462C3" d="M24.764,12.7c0,6.582-5.359,11.94-11.942,11.94C6.146,24.734,0.787,19.375,0.787,12.7
+ c0-6.676,5.359-11.941,11.941-11.941c6.583,0,11.941,5.36,11.941,11.941H24.764z"/>
+ <path fill="#3562C4" d="M24.734,12.7c0,6.565-5.348,11.911-11.913,11.911C6.164,24.705,0.817,19.359,0.817,12.7
+ S6.164,0.788,12.729,0.788c6.566,0,11.912,5.347,11.912,11.912H24.734z"/>
+ <path fill="#3662C5" d="M24.706,12.7c0,6.55-5.333,11.883-11.883,11.883C6.181,24.676,0.847,19.343,0.847,12.7
+ c0-6.643,5.333-11.883,11.883-11.883c6.549,0,11.881,5.333,11.881,11.883H24.706z"/>
+ <path fill="#3762C6" d="M24.678,12.7c0,6.534-5.32,11.854-11.854,11.854C6.198,24.646,0.877,19.326,0.877,12.7
+ S6.198,0.846,12.731,0.846c6.535,0,11.853,5.32,11.853,11.854H24.678z"/>
+ <path fill="#3762C7" d="M24.648,12.7c0,6.518-5.308,11.823-11.824,11.823C6.215,24.617,0.908,19.311,0.908,12.7
+ c0-6.611,5.307-11.824,11.824-11.824S24.557,6.183,24.557,12.7H24.648z"/>
+ <path fill="#3862C8" d="M24.621,12.7c0,6.502-5.294,11.795-11.795,11.795C6.232,24.588,0.938,19.294,0.938,12.7
+ c0-6.594,5.293-11.795,11.795-11.795c6.501,0,11.794,5.294,11.794,11.795H24.621z"/>
+ <path fill="#3962C9" d="M24.593,12.7c0,6.485-5.28,11.766-11.766,11.766C6.249,24.559,0.968,19.277,0.968,12.7
+ c0-6.578,5.281-11.766,11.766-11.766S24.5,6.215,24.5,12.7H24.593z"/>
+ <path fill="#3A62CA" d="M24.564,12.7c0,6.469-5.27,11.737-11.737,11.737C6.266,24.527,0.999,19.261,0.999,12.7
+ c0-6.561,5.267-11.737,11.736-11.737c6.469,0,11.738,5.268,11.738,11.736L24.564,12.7L24.564,12.7z"/>
+ <path fill="#3B62CB" d="M24.536,12.7c0,6.452-5.255,11.707-11.708,11.707C6.284,24.5,1.029,19.245,1.029,12.7
+ c0-6.545,5.255-11.707,11.707-11.707s11.708,5.255,11.708,11.708L24.536,12.7L24.536,12.7z"/>
+ <path fill="#3C62CC" d="M24.508,12.701c0,6.438-5.24,11.678-11.678,11.678c-6.529,0.092-11.77-5.15-11.77-11.678
+ c0-6.528,5.241-11.679,11.678-11.679S24.416,6.263,24.416,12.7L24.508,12.701L24.508,12.701z"/>
+ <path fill="#3C62CD" d="M24.479,12.7c0,6.421-5.229,11.649-11.648,11.649C6.318,24.439,1.09,19.212,1.09,12.7
+ c0-6.513,5.228-11.649,11.649-11.649c6.42,0,11.65,5.228,11.65,11.649H24.479z"/>
+ <path fill="#3D63CE" d="M24.45,12.7c0,6.403-5.216,11.618-11.62,11.618C6.335,24.41,1.12,19.195,1.12,12.7
+ c0-6.497,5.215-11.62,11.62-11.62c6.404,0,11.619,5.215,11.619,11.62H24.45z"/>
+ <path fill="#3E63CF" d="M24.423,12.7c0,6.389-5.202,11.591-11.591,11.591C6.353,24.382,1.15,19.18,1.15,12.7
+ c0-6.48,5.203-11.591,11.591-11.591c6.388,0,11.59,5.203,11.59,11.591H24.423z"/>
+ <path fill="#3F63D0" d="M24.395,12.701c0,6.373-5.188,11.561-11.562,11.561C6.37,24.354,1.18,19.164,1.18,12.701
+ c0-6.464,5.189-11.562,11.562-11.562c6.371,0,11.562,5.189,11.562,11.562H24.395z"/>
+ <path fill="#4063D1" d="M24.365,12.7c0,6.356-5.176,11.532-11.532,11.532C6.387,24.322,1.21,19.146,1.21,12.7
+ c0-6.447,5.177-11.533,11.533-11.533c6.354,0,11.532,5.176,11.532,11.533H24.365z"/>
+ <path fill="#4063D2" d="M24.337,12.7c0,6.341-5.163,11.503-11.503,11.503C6.403,24.293,1.24,19.13,1.24,12.7
+ c0-6.431,5.163-11.503,11.503-11.503c6.34,0,11.504,5.163,11.504,11.503H24.337z"/>
+ <path fill="#4163D3" d="M24.311,12.7c0,6.323-5.15,11.474-11.476,11.474C6.42,24.264,1.271,19.114,1.271,12.7
+ c0-6.415,5.149-11.474,11.474-11.474c6.323,0,11.474,5.15,11.474,11.474H24.311z"/>
+ <path fill="#4263D4" d="M24.281,12.701c0,6.308-5.137,11.445-11.445,11.445C6.438,24.234,1.301,19.1,1.301,12.701
+ c0-6.399,5.137-11.445,11.445-11.445c6.307,0,11.445,5.136,11.445,11.445H24.281z"/>
+ <path fill="#4363D4" d="M24.253,12.7c0,6.292-5.124,11.416-11.416,11.416C6.455,24.205,1.332,19.082,1.332,12.7
+ c0-6.382,5.123-11.415,11.415-11.415S24.163,6.408,24.163,12.7H24.253z"/>
+ <path fill="#4463D5" d="M24.225,12.7c0,6.276-5.111,11.387-11.387,11.387C6.472,24.176,1.362,19.064,1.362,12.7
+ c0-6.366,5.11-11.386,11.386-11.386c6.275,0,11.387,5.11,11.387,11.386H24.225z"/>
+ <path fill="#4563D6" d="M24.195,12.7c0,6.26-5.098,11.356-11.357,11.356C6.49,24.146,1.392,19.049,1.392,12.7
+ c0-6.35,5.098-11.357,11.357-11.357S24.105,6.441,24.105,12.7H24.195z"/>
+ <path fill="#4563D7" d="M24.167,12.7c0,6.243-5.084,11.327-11.328,11.327C6.506,24.116,1.422,19.033,1.422,12.7
+ S6.506,1.372,12.75,1.372S24.078,6.456,24.078,12.7H24.167z"/>
+ <path fill="#4663D8" d="M24.139,12.7c0,6.228-5.07,11.299-11.299,11.299C6.523,24.087,1.453,19.018,1.453,12.7
+ S6.523,1.401,12.751,1.401c6.228,0,11.298,5.071,11.298,11.299H24.139z"/>
+ <path fill="#4763D9" d="M24.109,12.7c0,6.212-5.058,11.271-11.27,11.271C6.541,24.059,1.483,19,1.483,12.7
+ c0-6.3,5.058-11.27,11.27-11.27S24.023,6.488,24.023,12.7H24.109z"/>
+ <path fill="#4863DA" d="M24.082,12.7c0,6.194-5.045,11.239-11.24,11.239C6.558,24.027,1.513,18.982,1.513,12.7
+ c0-6.284,5.045-11.24,11.24-11.24c6.195,0,11.241,5.045,11.241,11.24H24.082z"/>
+ <path fill="#4964DB" d="M24.055,12.7c0,6.18-5.033,11.211-11.212,11.211c-6.268,0.088-11.3-4.943-11.3-11.211
+ c0-6.268,5.032-11.211,11.211-11.211c6.18,0,11.212,5.032,11.212,11.211H24.055z"/>
+ <path fill="#4964DC" d="M24.025,12.7c0,6.164-5.02,11.182-11.183,11.182C6.592,23.971,1.574,18.951,1.574,12.7
+ S6.593,1.518,12.756,1.518S23.938,6.537,23.938,12.7H24.025z"/>
+ <path fill="#4A64DD" d="M23.997,12.7c0,6.147-5.006,11.153-11.153,11.153C6.609,23.939,1.604,18.936,1.604,12.7
+ S6.609,1.547,12.757,1.547c6.146,0,11.152,5.006,11.152,11.153H23.997z"/>
+ <path fill="#4B64DE" d="M23.969,12.7c0,6.131-4.992,11.124-11.124,11.124C6.626,23.91,1.634,18.918,1.634,12.7
+ c0-6.219,4.992-11.124,11.124-11.124c6.131,0,11.124,4.992,11.124,11.124H23.969z"/>
+ <path fill="#4C64DF" d="M23.939,12.7c0,6.114-4.979,11.095-11.094,11.095C6.644,23.882,1.665,18.902,1.665,12.7
+ c0-6.203,4.979-11.094,11.094-11.094c6.115,0,11.095,4.979,11.095,11.094H23.939z"/>
+ <path fill="#4D64E0" d="M23.912,12.7c0,6.1-4.967,11.065-11.065,11.065C6.661,23.852,1.695,18.886,1.695,12.7
+ c0-6.186,4.966-11.065,11.065-11.065c6.098,0,11.065,4.966,11.065,11.065H23.912z"/>
+ <path fill="#4E64E1" d="M23.884,12.7c0,6.083-4.952,11.036-11.036,11.036C6.678,23.822,1.725,18.869,1.725,12.7
+ c0-6.17,4.954-11.036,11.036-11.036c6.083,0,11.036,4.954,11.036,11.036H23.884z"/>
+ <path fill="#4E64E2" d="M23.855,12.7c0,6.067-4.94,11.007-11.007,11.007C6.695,23.793,1.755,18.854,1.755,12.7
+ c0-6.154,4.94-11.007,11.007-11.007c6.066,0,11.005,4.94,11.005,11.007H23.855z"/>
+ <path fill="#4F64E3" d="M23.827,12.7c0,6.051-4.929,10.978-10.978,10.978C6.712,23.764,1.786,18.837,1.786,12.7
+ c0-6.137,4.927-10.978,10.978-10.978c6.05,0,10.977,4.927,10.977,10.978H23.827z"/>
+ <path fill="#5064E4" d="M23.799,12.7c0,6.034-4.914,10.948-10.949,10.948C6.729,23.734,1.816,18.82,1.816,12.7
+ c0-6.121,4.914-10.948,10.948-10.948c6.034,0,10.949,4.914,10.949,10.948H23.799z"/>
+ <path fill="#5164E5" d="M23.771,12.7c0,6.019-4.901,10.919-10.919,10.919C6.747,23.705,1.846,18.805,1.846,12.7
+ c0-6.105,4.9-10.919,10.919-10.919c6.018,0,10.918,4.9,10.918,10.919H23.771z"/>
+ <path fill="#5264E6" d="M23.742,12.7c0,6.003-4.889,10.89-10.891,10.89C6.764,23.675,1.876,18.788,1.876,12.7
+ c0-6.088,4.888-10.89,10.89-10.89c6.001,0,10.89,4.888,10.89,10.89H23.742z"/>
+ <path fill="#5264E7" d="M23.714,12.7c0,5.985-4.875,10.86-10.861,10.86C6.781,23.646,1.906,18.771,1.906,12.7
+ c0-6.072,4.875-10.861,10.861-10.861c5.985,0,10.86,4.875,10.86,10.861H23.714z"/>
+ <path fill="#5364E8" d="M23.686,12.7c0,5.971-4.861,10.832-10.832,10.832C6.798,23.616,1.937,18.755,1.937,12.7
+ c0-6.056,4.862-10.832,10.832-10.832C18.738,1.869,23.6,6.73,23.6,12.7H23.686z"/>
+ <path fill="#5464E9" d="M23.657,12.7c0,5.954-4.849,10.803-10.803,10.803C6.815,23.587,1.967,18.739,1.967,12.7
+ c0-6.04,4.849-10.802,10.803-10.802c5.955,0,10.802,4.848,10.802,10.802H23.657z"/>
+ <path fill="#5565EA" d="M23.629,12.7c0,5.938-4.836,10.772-10.774,10.772C6.833,23.559,1.998,18.723,1.998,12.7
+ c0-6.023,4.835-10.773,10.773-10.773S23.544,6.762,23.544,12.7H23.629z"/>
+ <path fill="#5665EB" d="M23.602,12.7c0,5.922-4.824,10.743-10.746,10.743C6.85,23.527,2.027,18.706,2.027,12.7
+ c0-6.006,4.822-10.744,10.744-10.744c5.922,0,10.745,4.822,10.745,10.744H23.602z"/>
+ <path fill="#5665EC" d="M23.572,12.7c0,5.905-4.811,10.715-10.715,10.715C6.867,23.499,2.058,18.689,2.058,12.7
+ c0-5.99,4.809-10.715,10.714-10.715S23.486,6.794,23.486,12.7H23.572z"/>
+ <path fill="#5765ED" d="M23.544,12.7c0,5.89-4.797,10.686-10.687,10.686C6.884,23.471,2.088,18.674,2.088,12.7
+ c0-5.974,4.796-10.686,10.686-10.686c5.889,0,10.686,4.796,10.686,10.686H23.544z"/>
+ <path fill="#5865EE" d="M23.516,12.7c0,5.874-4.783,10.655-10.657,10.655C6.901,23.439,2.118,18.657,2.118,12.7
+ c0-5.958,4.783-10.657,10.657-10.657c5.874,0,10.657,4.784,10.657,10.657H23.516z"/>
+ <path fill="#5965EF" d="M23.486,12.7c0,5.858-4.771,10.627-10.627,10.627C6.918,23.41,2.148,18.641,2.148,12.7
+ c0-5.941,4.77-10.627,10.627-10.627S23.402,6.843,23.402,12.7H23.486z"/>
+ <path fill="#5A65F0" d="M23.459,12.7c0,5.842-4.758,10.598-10.599,10.598C6.936,23.381,2.179,18.625,2.179,12.7
+ c0-5.925,4.757-10.598,10.598-10.598c5.841,0,10.598,4.757,10.598,10.598H23.459z"/>
+ <path fill="#5B65F1" d="M23.432,12.7c0,5.825-4.744,10.569-10.571,10.569C6.953,23.352,2.209,18.607,2.209,12.7
+ c0-5.909,4.744-10.569,10.569-10.569c5.826,0,10.57,4.744,10.57,10.569H23.432z"/>
+ <path fill="#5B65F2" d="M23.4,12.7c0,5.81-4.729,10.54-10.54,10.54C6.97,23.322,2.239,18.592,2.239,12.7
+ c0-5.892,4.73-10.54,10.54-10.54c5.809,0,10.54,4.73,10.54,10.54H23.4z"/>
+ <path fill="#5C65F3" d="M23.373,12.7c0,5.794-4.719,10.511-10.511,10.511C6.987,23.293,2.27,18.576,2.27,12.7
+ S6.987,2.189,12.78,2.189c5.793,0,10.511,4.717,10.511,10.511H23.373z"/>
+ <path fill="#5D65F4" d="M23.346,12.7c0,5.776-4.705,10.481-10.482,10.481C7.004,23.264,2.3,18.561,2.3,12.7
+ S7.004,2.219,12.781,2.219c5.775,0,10.48,4.704,10.48,10.481H23.346z"/>
+ <path fill="#5E65F5" d="M23.316,12.7c0,5.762-4.691,10.452-10.453,10.452C7.021,23.232,2.33,18.543,2.33,12.7
+ c0-5.843,4.691-10.452,10.452-10.452c5.761,0,10.452,4.691,10.452,10.452H23.316z"/>
+ <path fill="#5F65F6" d="M23.288,12.7c0,5.745-4.679,10.423-10.423,10.423C7.039,23.204,2.36,18.525,2.36,12.7
+ c0-5.827,4.678-10.423,10.423-10.423c5.744,0,10.423,4.678,10.423,10.423H23.288z"/>
+ <path fill="#5F65F7" d="M23.26,12.7c0,5.729-4.664,10.394-10.394,10.394C7.056,23.175,2.391,18.511,2.391,12.7
+ c0-5.811,4.665-10.393,10.394-10.393c5.729,0,10.393,4.665,10.393,10.394L23.26,12.7L23.26,12.7z"/>
+ <path fill="#6066F8" d="M23.23,12.7c0,5.713-4.651,10.364-10.364,10.364C7.073,23.146,2.421,18.494,2.421,12.7
+ S7.073,2.335,12.786,2.335c5.712,0,10.364,4.652,10.364,10.365H23.23z"/>
+ <path fill="#6166F9" d="M23.203,12.7c0,5.696-4.639,10.335-10.335,10.335C7.09,23.116,2.451,18.479,2.451,12.7
+ S7.09,2.365,12.786,2.365S23.121,7.004,23.121,12.7H23.203z"/>
+ <path fill="#6266FA" d="M23.175,12.7c0,5.681-4.626,10.306-10.307,10.306C7.107,23.087,2.481,18.462,2.481,12.7
+ c0-5.762,4.626-10.306,10.307-10.306c5.68,0,10.306,4.625,10.306,10.306H23.175z"/>
+ <path fill="#6366FB" d="M23.146,12.7c0,5.665-4.613,10.276-10.277,10.276C7.124,23.059,2.512,18.445,2.512,12.7
+ c0-5.746,4.612-10.277,10.277-10.277S23.064,7.036,23.064,12.7H23.146z"/>
+ <path fill="#6466FC" d="M23.118,12.7c0,5.647-4.601,10.248-10.248,10.248C7.142,23.027,2.542,18.43,2.542,12.7
+ c0-5.729,4.6-10.248,10.248-10.248c5.647,0,10.247,4.6,10.247,10.248H23.118z"/>
+ <path fill="#6466FD" d="M23.09,12.7c0,5.633-4.587,10.219-10.219,10.219C7.159,22.998,2.572,18.412,2.572,12.7
+ c0-5.713,4.586-10.219,10.219-10.219c5.632,0,10.219,4.586,10.219,10.219H23.09z"/>
+ <path fill="#6566FE" d="M23.062,12.7c0,5.616-4.574,10.188-10.19,10.188C7.176,22.969,2.603,18.396,2.603,12.7
+ S7.176,2.511,12.792,2.511c5.615,0,10.188,4.573,10.188,10.189H23.062z"/>
+ <path fill="#6666FF" d="M23.033,12.7c0,5.601-4.561,10.159-10.161,10.159c-5.68,0.08-10.24-4.479-10.24-10.159
+ c0-5.68,4.56-10.16,10.16-10.16c5.601,0,10.16,4.56,10.16,10.16H23.033z"/>
+ </g>
+
+ <linearGradient id="XMLID_12_" gradientUnits="userSpaceOnUse" x1="198.625" y1="-253.916" x2="198.625" y2="-262.334" gradientTransform="matrix(1 0 0 -1 -186 -252.5)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#6666FF"/>
+ </linearGradient>
+ <ellipse fill="url(#XMLID_12_)" cx="12.625" cy="5.625" rx="7.542" ry="4.209"/>
+ <g>
+ <path fill="#FFFFFF" d="M14.1,19.2c0,0.2,0,0.3-0.3,0.3H12c-0.2,0-0.3-0.1-0.3-0.3v-7.1h-1.4c-0.2,0-0.3-0.1-0.3-0.3v-1.2
+ c0-0.2,0-0.3,0.3-0.3h3.5c0.2,0,0.3,0.1,0.3,0.3v8.5V19.2z M13,9.2c-0.8,0-1.5-0.7-1.5-1.5c0-0.8,0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5
+ C14.5,8.5,13.8,9.2,13,9.2z"/>
+ </g>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg
new file mode 100644
index 0000000..7ceddec
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Previous" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g>
+ <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="7.5901" stroke-linejoin="round" d="M25.659,6.898c0-0.301-0.3-0.301-0.5-0.2
+ l-16.6,16.9c-0.5,0.5-0.4,0.7,0,1l16.6,16.7c0.103,0.101,0.399,0.101,0.399-0.1v-10h13.601c0.301,0,0.5-0.2,0.5-0.4v-13.3
+ c0-0.4-0.199-0.5-0.601-0.5h-13.5L25.659,6.898z"/>
+ <g>
+ <path fill="#0033CC" d="M25.659,6.898c0-0.301-0.3-0.301-0.5-0.2l-16.6,16.9c-0.5,0.5-0.4,0.7,0,1l16.6,16.7
+ c0.103,0.101,0.399,0.101,0.399-0.1v-10h13.601c0.301,0,0.5-0.2,0.5-0.4v-13.3c0-0.4-0.199-0.5-0.601-0.5h-13.5L25.659,6.898z"/>
+ <path fill="#0134CC" d="M25.648,6.925c0-0.3-0.299-0.3-0.498-0.2L8.575,23.6c-0.499,0.499-0.4,0.698,0,1L25.15,41.271
+ c0.101,0.102,0.398,0.102,0.398-0.1v-9.984h13.58c0.303,0,0.5-0.197,0.5-0.397V17.508c0-0.4-0.197-0.499-0.6-0.499H25.55
+ L25.648,6.925z"/>
+ <path fill="#0235CD" d="M25.641,6.953c0-0.3-0.3-0.3-0.498-0.2L8.588,23.601c-0.499,0.498-0.399,0.697,0,0.997l16.553,16.647
+ c0.101,0.101,0.398,0.101,0.398-0.101v-9.971h13.562c0.299,0,0.498-0.197,0.498-0.398V17.519c0-0.399-0.199-0.499-0.6-0.499H25.54
+ L25.641,6.953z"/>
+ <path fill="#0336CD" d="M25.63,6.979c0-0.299-0.299-0.299-0.498-0.199L8.603,23.601c-0.498,0.498-0.399,0.696,0,0.997
+ l16.529,16.62c0.101,0.101,0.397,0.101,0.397-0.099v-9.954h13.544c0.299,0,0.495-0.199,0.495-0.397v-13.24
+ c0-0.399-0.196-0.498-0.598-0.498H25.532L25.63,6.979z"/>
+ <path fill="#0437CE" d="M25.622,7.005c0-0.299-0.299-0.299-0.498-0.199L8.619,23.602c-0.498,0.497-0.398,0.695,0,0.994
+ l16.505,16.598c0.101,0.1,0.396,0.1,0.396-0.102v-9.938h13.521c0.301,0,0.498-0.197,0.498-0.396V17.54
+ c0-0.397-0.197-0.497-0.598-0.497h-13.42L25.622,7.005z"/>
+ <path fill="#0538CE" d="M25.611,7.033c0-0.298-0.299-0.298-0.498-0.199L8.633,23.602c-0.497,0.496-0.398,0.694,0,0.994
+ l16.48,16.568c0.101,0.1,0.398,0.1,0.398-0.1v-9.924h13.502c0.299,0,0.498-0.197,0.498-0.396V17.548
+ c0-0.397-0.199-0.496-0.598-0.496h-13.4L25.611,7.033z"/>
+ <path fill="#0639CF" d="M25.602,7.06c0-0.298-0.297-0.298-0.496-0.199L8.646,23.603c-0.496,0.496-0.396,0.693,0,0.99
+ l16.458,16.546c0.101,0.101,0.396,0.101,0.396-0.1v-9.907h13.482c0.301,0,0.496-0.196,0.496-0.396V17.56
+ c0-0.396-0.195-0.495-0.595-0.495H25.503L25.602,7.06z"/>
+ <path fill="#073ACF" d="M25.592,7.085c0-0.298-0.298-0.298-0.494-0.199L8.662,23.603c-0.495,0.495-0.396,0.692,0,0.989
+ l16.436,16.518c0.1,0.102,0.396,0.102,0.396-0.098V31.12h13.465c0.297,0,0.494-0.197,0.494-0.396V17.569
+ c0-0.396-0.197-0.495-0.595-0.495H25.493L25.592,7.085z"/>
+ <path fill="#083BD0" d="M25.583,7.111c0-0.297-0.297-0.297-0.494-0.198L8.677,23.604c-0.494,0.494-0.396,0.691,0,0.987
+ l16.412,16.493c0.101,0.1,0.396,0.1,0.396-0.1v-9.877h13.447c0.297,0,0.493-0.195,0.493-0.396V17.58
+ c0-0.396-0.196-0.494-0.594-0.494H25.484L25.583,7.111z"/>
+ <path fill="#093CD0" d="M25.573,7.139c0-0.296-0.296-0.296-0.494-0.197L8.69,23.604c-0.493,0.494-0.395,0.69,0,0.985l16.389,16.47
+ c0.103,0.099,0.396,0.099,0.396-0.101V31.1h13.428c0.298,0,0.494-0.197,0.494-0.396V17.589c0-0.395-0.196-0.493-0.594-0.493
+ H25.475L25.573,7.139z"/>
+ <path fill="#0A3DD1" d="M25.562,7.165c0-0.296-0.295-0.296-0.492-0.197L8.706,23.604c-0.493,0.492-0.395,0.688,0,0.983
+ l16.366,16.44c0.1,0.098,0.396,0.098,0.396-0.101v-9.845h13.405c0.297,0,0.494-0.196,0.494-0.396V17.596
+ c0-0.395-0.197-0.492-0.592-0.492H25.464L25.562,7.165z"/>
+ <path fill="#0B3ED1" d="M25.555,7.191c0-0.295-0.296-0.295-0.492-0.197L8.72,23.605c-0.492,0.491-0.394,0.688,0,0.982
+ l16.342,16.414c0.1,0.099,0.395,0.099,0.395-0.099v-9.828h13.391c0.295,0,0.49-0.197,0.49-0.395V17.609
+ c0-0.393-0.195-0.491-0.59-0.491H25.456L25.555,7.191z"/>
+ <path fill="#0C3FD2" d="M25.544,7.219c0-0.295-0.295-0.295-0.491-0.196L8.734,23.606c-0.491,0.49-0.394,0.687,0,0.98
+ l16.318,16.389c0.099,0.101,0.394,0.101,0.394-0.098v-9.812h13.369c0.297,0,0.492-0.194,0.492-0.394V17.62
+ c0-0.393-0.195-0.49-0.591-0.49H25.445L25.544,7.219z"/>
+ <path fill="#0D40D2" d="M25.534,7.245c0-0.294-0.293-0.294-0.49-0.196L8.749,23.606c-0.491,0.489-0.394,0.685,0,0.979
+ l16.295,16.362c0.099,0.098,0.394,0.098,0.394-0.098v-9.798h13.35c0.295,0,0.49-0.196,0.49-0.395V17.628
+ c0-0.392-0.195-0.489-0.588-0.489H25.438L25.534,7.245z"/>
+ <path fill="#0E41D3" d="M25.525,7.271c0-0.294-0.295-0.294-0.489-0.196L8.764,23.607c-0.49,0.489-0.393,0.685,0,0.979
+ l16.271,16.335c0.102,0.101,0.395,0.101,0.395-0.097v-9.782h13.33c0.295,0,0.488-0.194,0.488-0.394V17.64
+ c0-0.392-0.193-0.489-0.588-0.489H25.428L25.525,7.271z"/>
+ <path fill="#0F42D3" d="M25.516,7.298c0-0.293-0.293-0.293-0.488-0.195L8.778,23.607c-0.489,0.489-0.392,0.684,0,0.978
+ l16.248,16.312c0.101,0.099,0.394,0.099,0.394-0.099v-9.767H38.73c0.293,0,0.49-0.195,0.49-0.393V17.65
+ c0-0.391-0.197-0.488-0.589-0.488H25.417L25.516,7.298z"/>
+ <path fill="#1043D4" d="M25.505,7.325c0-0.293-0.293-0.293-0.487-0.195L8.792,23.608c-0.488,0.488-0.391,0.683,0,0.976
+ l16.224,16.283c0.101,0.098,0.394,0.098,0.394-0.098v-9.752H38.7c0.295,0,0.489-0.192,0.489-0.39V17.661
+ c0-0.391-0.194-0.487-0.586-0.487H25.409L25.505,7.325z"/>
+ <path fill="#1144D4" d="M25.497,7.352c0-0.292-0.293-0.292-0.487-0.194L8.808,23.608c-0.488,0.487-0.391,0.682,0,0.974
+ L25.009,40.84c0.099,0.1,0.392,0.1,0.392-0.097v-9.734h13.272c0.293,0,0.488-0.194,0.488-0.39V17.67
+ c0-0.39-0.195-0.487-0.586-0.487H25.398L25.497,7.352z"/>
+ <path fill="#1245D5" d="M25.486,7.378c0-0.292-0.293-0.292-0.487-0.195L8.822,23.609c-0.487,0.486-0.39,0.68,0,0.973l16.177,16.23
+ c0.099,0.099,0.392,0.099,0.392-0.099v-9.72h13.254c0.293,0,0.485-0.194,0.485-0.391V17.681c0-0.389-0.192-0.486-0.584-0.486
+ H25.391L25.486,7.378z"/>
+ <path fill="#1346D5" d="M25.479,7.406c0-0.292-0.293-0.292-0.486-0.195L8.837,23.61c-0.487,0.485-0.39,0.679,0,0.971
+ l16.154,16.206c0.098,0.097,0.389,0.097,0.389-0.098v-9.705h13.236c0.291,0,0.485-0.192,0.485-0.389V17.69
+ c0-0.388-0.194-0.485-0.584-0.485H25.38L25.479,7.406z"/>
+ <path fill="#1447D6" d="M25.468,7.432c0-0.292-0.292-0.292-0.485-0.194L8.852,23.611c-0.485,0.484-0.389,0.678,0,0.969
+ l16.13,16.18c0.1,0.098,0.389,0.098,0.389-0.096v-9.688h13.217c0.291,0,0.486-0.192,0.486-0.39V17.702
+ c0-0.388-0.195-0.484-0.584-0.484H25.37L25.468,7.432z"/>
+ <path fill="#1548D6" d="M25.458,7.458c0-0.291-0.291-0.291-0.485-0.194L8.866,23.611c-0.484,0.483-0.388,0.677,0,0.968
+ L24.973,40.73c0.1,0.099,0.389,0.099,0.389-0.097v-9.673h13.197c0.291,0,0.483-0.193,0.483-0.388V17.71
+ c0-0.387-0.192-0.483-0.582-0.483H25.359L25.458,7.458z"/>
+ <path fill="#1649D7" d="M25.448,7.484c0-0.291-0.289-0.291-0.484-0.194L8.88,23.613c-0.484,0.482-0.388,0.675,0,0.965
+ l16.083,16.128c0.098,0.099,0.389,0.099,0.389-0.097v-9.657h13.178c0.291,0,0.484-0.192,0.484-0.388V17.722
+ c0-0.387-0.193-0.482-0.582-0.482h-13.08L25.448,7.484z"/>
+ <path fill="#174AD7" d="M25.439,7.512c0-0.29-0.291-0.29-0.483-0.193L8.895,23.614c-0.483,0.482-0.387,0.675,0,0.963l16.06,16.104
+ c0.1,0.096,0.391,0.096,0.391-0.098v-9.645H38.5c0.291,0,0.484-0.191,0.484-0.385V17.731c0-0.386-0.193-0.481-0.58-0.481H25.343
+ L25.439,7.512z"/>
+ <path fill="#184BD8" d="M25.43,7.539c0-0.29-0.289-0.29-0.482-0.193L8.91,23.614c-0.482,0.482-0.387,0.674,0,0.962L24.947,40.65
+ c0.098,0.098,0.387,0.098,0.387-0.096V30.93h13.141c0.291,0,0.48-0.193,0.48-0.388v-12.8c0-0.385-0.189-0.481-0.578-0.481H25.333
+ L25.43,7.539z"/>
+ <path fill="#194CD8" d="M25.419,7.564c0-0.289-0.289-0.289-0.481-0.192L8.923,23.614c-0.481,0.481-0.386,0.673,0,0.961
+ l16.015,16.05c0.097,0.098,0.386,0.098,0.386-0.098v-9.608h13.118c0.291,0,0.482-0.19,0.482-0.386V17.751
+ c0-0.385-0.191-0.48-0.578-0.48H25.323L25.419,7.564z"/>
+ <path fill="#1A4DD9" d="M25.411,7.59c0-0.288-0.289-0.288-0.479-0.192L8.938,23.615c-0.481,0.48-0.385,0.671,0,0.96L24.93,40.598
+ c0.096,0.096,0.385,0.096,0.385-0.096v-9.595h13.102c0.289,0,0.48-0.192,0.48-0.386V17.762c0-0.384-0.191-0.479-0.578-0.479
+ H25.314L25.411,7.59z"/>
+ <path fill="#1B4ED9" d="M25.4,7.618c0-0.288-0.289-0.288-0.479-0.191L8.954,23.616c-0.481,0.479-0.385,0.67,0,0.958L24.919,40.57
+ c0.099,0.097,0.386,0.097,0.386-0.096v-9.58h13.082c0.288,0,0.479-0.189,0.479-0.383V17.771c0-0.383-0.191-0.479-0.576-0.479
+ H25.305L25.4,7.618z"/>
+ <path fill="#1C4FDA" d="M25.393,7.645c0-0.287-0.289-0.287-0.48-0.191L8.968,23.617c-0.48,0.479-0.384,0.669,0,0.958
+ l15.941,15.971c0.099,0.097,0.385,0.097,0.385-0.095v-9.562h13.062c0.289,0,0.48-0.193,0.48-0.384V17.782
+ c0-0.383-0.191-0.478-0.577-0.478H25.294L25.393,7.645z"/>
+ <path fill="#1D50DA" d="M25.38,7.67c0-0.287-0.286-0.287-0.479-0.19L8.981,23.617c-0.479,0.478-0.384,0.667,0,0.955L24.9,40.518
+ c0.097,0.096,0.384,0.096,0.384-0.098v-9.548h13.043c0.289,0,0.479-0.188,0.479-0.383V17.792c0-0.382-0.19-0.477-0.576-0.477
+ H25.286L25.38,7.67z"/>
+ <path fill="#1E51DB" d="M25.372,7.698c0-0.287-0.287-0.287-0.479-0.191L8.997,23.618c-0.479,0.477-0.383,0.667,0,0.954
+ L24.893,40.49c0.098,0.095,0.385,0.095,0.385-0.096v-9.533H38.3c0.287,0,0.479-0.189,0.479-0.381V17.803
+ c0-0.382-0.191-0.476-0.574-0.476h-12.93L25.372,7.698z"/>
+ <path fill="#1F52DB" d="M25.361,7.725c0-0.286-0.284-0.286-0.479-0.19L9.012,23.619c-0.478,0.475-0.383,0.666,0,0.951
+ l15.872,15.895c0.097,0.096,0.384,0.096,0.384-0.095v-9.519h13.004c0.287,0,0.479-0.189,0.479-0.381V17.812
+ c0-0.381-0.19-0.476-0.574-0.476H25.268L25.361,7.725z"/>
+ <path fill="#2053DC" d="M25.354,7.75c0-0.286-0.287-0.286-0.479-0.19L9.025,23.619c-0.477,0.475-0.382,0.665,0,0.951
+ l15.849,15.867c0.099,0.095,0.385,0.095,0.385-0.098v-9.501h12.982c0.286,0,0.479-0.188,0.479-0.381V17.823
+ c0-0.38-0.188-0.475-0.574-0.475h-12.89L25.354,7.75z"/>
+ <path fill="#2154DC" d="M25.343,7.777c0-0.286-0.286-0.286-0.477-0.19L9.04,23.619c-0.476,0.475-0.381,0.664,0,0.949L24.867,40.41
+ c0.096,0.095,0.383,0.095,0.383-0.094V30.83h12.965c0.287,0,0.479-0.189,0.479-0.38V17.832c0-0.379-0.188-0.474-0.569-0.474
+ H25.249L25.343,7.777z"/>
+ <path fill="#2255DD" d="M25.333,7.805c0-0.285-0.285-0.285-0.478-0.19L9.056,23.62c-0.476,0.474-0.381,0.663,0,0.948
+ l15.801,15.812c0.098,0.096,0.383,0.096,0.383-0.095v-9.472h12.945c0.285,0,0.477-0.188,0.477-0.381V17.842
+ c0-0.378-0.188-0.473-0.569-0.473H25.238L25.333,7.805z"/>
+ <path fill="#2356DD" d="M25.325,7.832c0-0.284-0.285-0.284-0.478-0.189L9.069,23.621c-0.475,0.473-0.381,0.662,0,0.945
+ l15.779,15.791c0.096,0.094,0.381,0.094,0.381-0.098v-9.451h12.929c0.284,0,0.477-0.189,0.477-0.379V17.853
+ c0-0.378-0.188-0.472-0.569-0.472H25.229L25.325,7.832z"/>
+ <path fill="#2457DE" d="M25.314,7.857c0-0.284-0.285-0.284-0.477-0.189L9.084,23.622c-0.474,0.472-0.38,0.66,0,0.944L24.838,40.33
+ c0.098,0.094,0.381,0.094,0.381-0.094v-9.439h12.908c0.285,0,0.475-0.189,0.475-0.378V17.863c0-0.378-0.188-0.471-0.567-0.471
+ H25.221L25.314,7.857z"/>
+ <path fill="#2558DE" d="M25.305,7.883c0-0.283-0.283-0.283-0.474-0.188L9.099,23.622c-0.473,0.471-0.379,0.659,0,0.942
+ L24.831,40.3c0.095,0.097,0.379,0.097,0.379-0.094v-9.424H38.1c0.284,0,0.475-0.188,0.475-0.38V17.873
+ c0-0.377-0.188-0.47-0.568-0.47H25.21L25.305,7.883z"/>
+ <path fill="#2659DF" d="M25.294,7.911c0-0.283-0.282-0.283-0.474-0.188l-15.708,15.9c-0.473,0.47-0.378,0.658,0,0.941
+ L24.82,40.275c0.097,0.094,0.38,0.094,0.38-0.094v-9.408h12.868c0.285,0,0.476-0.188,0.476-0.377V17.882
+ c0-0.376-0.188-0.469-0.567-0.469H25.2L25.294,7.911z"/>
+ <path fill="#275ADF" d="M25.286,7.938c0-0.282-0.283-0.282-0.474-0.188L9.127,23.624c-0.472,0.469-0.378,0.657,0,0.938
+ L24.812,40.25c0.097,0.094,0.379,0.094,0.379-0.093v-9.394h12.851c0.283,0,0.476-0.188,0.476-0.379V17.894
+ c0-0.375-0.188-0.469-0.566-0.469h-12.76L25.286,7.938z"/>
+ <path fill="#285BE0" d="M25.275,7.963c0-0.282-0.282-0.282-0.473-0.188L9.143,23.624c-0.471,0.469-0.377,0.656,0,0.938
+ l15.662,15.658c0.096,0.094,0.379,0.094,0.379-0.094V30.75h12.83c0.282,0,0.473-0.188,0.473-0.376V17.902
+ c0-0.375-0.188-0.468-0.564-0.468h-12.74L25.275,7.963z"/>
+ <path fill="#295CE0" d="M25.268,7.991c0-0.281-0.283-0.281-0.474-0.188L9.158,23.624c-0.471,0.468-0.377,0.655,0,0.937
+ l15.638,15.633c0.095,0.096,0.377,0.096,0.377-0.092V30.74h12.812c0.283,0,0.473-0.188,0.473-0.375V17.914
+ c0-0.375-0.188-0.467-0.564-0.467H25.171L25.268,7.991z"/>
+ <path fill="#2A5DE1" d="M25.257,8.018c0-0.281-0.282-0.281-0.471-0.188L9.171,23.625c-0.47,0.467-0.377,0.654,0,0.936
+ l15.615,15.605c0.094,0.093,0.377,0.093,0.377-0.093v-9.347h12.793c0.28,0,0.471-0.188,0.471-0.375V17.923
+ c0-0.374-0.188-0.467-0.563-0.467h-12.7L25.257,8.018z"/>
+ <path fill="#2B5EE1" d="M25.247,8.043c0-0.28-0.28-0.28-0.472-0.187L9.187,23.625c-0.469,0.467-0.376,0.653,0,0.934l15.59,15.582
+ c0.096,0.092,0.377,0.092,0.377-0.094v-9.33h12.773c0.28,0,0.471-0.188,0.471-0.373v-12.41c0-0.373-0.188-0.466-0.562-0.466
+ H25.152L25.247,8.043z"/>
+ <path fill="#2C5FE2" d="M25.238,8.07c0-0.28-0.282-0.28-0.471-0.186L9.201,23.625c-0.468,0.466-0.375,0.652,0,0.932L24.77,40.114
+ c0.096,0.093,0.375,0.093,0.375-0.095v-9.312h12.754c0.281,0,0.471-0.188,0.471-0.373V17.943c0-0.373-0.188-0.465-0.562-0.465
+ H25.145L25.238,8.07z"/>
+ <path fill="#2D60E2" d="M25.229,8.097c0-0.28-0.279-0.28-0.469-0.187L9.214,23.626c-0.468,0.465-0.375,0.651,0,0.931L24.76,40.086
+ c0.094,0.094,0.374,0.094,0.374-0.093v-9.3H37.87c0.278,0,0.469-0.188,0.469-0.371V17.954c0-0.372-0.188-0.464-0.562-0.464H25.134
+ L25.229,8.097z"/>
+ <path fill="#2E61E3" d="M25.219,8.124c0-0.279-0.281-0.279-0.468-0.186L9.229,23.627c-0.467,0.464-0.375,0.649,0,0.928
+ l15.522,15.506c0.095,0.094,0.373,0.094,0.373-0.094v-9.281h12.718c0.28,0,0.467-0.188,0.467-0.373v-12.35
+ c0-0.371-0.187-0.463-0.562-0.463H25.124L25.219,8.124z"/>
+ <path fill="#2F62E3" d="M25.208,8.15c0-0.279-0.278-0.279-0.467-0.186L9.245,23.628c-0.466,0.463-0.374,0.648,0,0.927
+ l15.499,15.479c0.094,0.093,0.373,0.093,0.373-0.095v-9.268h12.695c0.28,0,0.469-0.186,0.469-0.371V17.975
+ c0-0.371-0.188-0.463-0.562-0.463H25.116L25.208,8.15z"/>
+ <path fill="#3063E4" d="M25.2,8.177c0-0.278-0.279-0.278-0.468-0.185L9.259,23.628c-0.465,0.462-0.373,0.647,0,0.925l15.476,15.45
+ c0.094,0.093,0.373,0.093,0.373-0.092V30.66h12.678c0.279,0,0.467-0.188,0.467-0.371V17.984c0-0.37-0.188-0.462-0.561-0.462
+ H25.105L25.2,8.177z"/>
+ <path fill="#3164E4" d="M25.189,8.204c0-0.277-0.278-0.277-0.465-0.185L9.273,23.629c-0.465,0.462-0.373,0.646,0,0.924
+ l15.452,15.426c0.092,0.092,0.371,0.092,0.371-0.092v-9.238h12.658c0.279,0,0.467-0.187,0.467-0.371V17.995
+ c0-0.37-0.188-0.461-0.561-0.461H25.098L25.189,8.204z"/>
+ <path fill="#3265E5" d="M25.182,8.229c0-0.277-0.279-0.277-0.466-0.185L9.289,23.629c-0.464,0.461-0.372,0.645,0,0.921
+ l15.428,15.4c0.094,0.093,0.372,0.093,0.372-0.093v-9.217h12.64c0.276,0,0.465-0.188,0.465-0.369V18.004
+ c0-0.369-0.188-0.46-0.559-0.46H25.087L25.182,8.229z"/>
+ <path fill="#3366E5" d="M25.171,8.256c0-0.276-0.278-0.276-0.465-0.184L9.304,23.63c-0.463,0.46-0.372,0.644,0,0.92l15.404,15.373
+ c0.093,0.093,0.371,0.093,0.371-0.092v-9.205h12.619c0.276,0,0.465-0.185,0.465-0.369V18.015c0-0.368-0.188-0.459-0.56-0.459
+ H25.079L25.171,8.256z"/>
+ <path fill="#3366E6" d="M25.161,8.284c0-0.276-0.276-0.276-0.463-0.184L9.317,23.631c-0.462,0.459-0.371,0.643,0,0.919
+ l15.381,15.347c0.094,0.095,0.37,0.095,0.37-0.09v-9.188h12.601c0.279,0,0.466-0.187,0.466-0.368V18.024
+ c0-0.367-0.187-0.458-0.558-0.458H25.068L25.161,8.284z"/>
+ <path fill="#3467E6" d="M25.15,8.311c0-0.276-0.276-0.276-0.463-0.184L9.332,23.631c-0.462,0.459-0.371,0.642,0,0.917
+ L24.688,39.87c0.096,0.091,0.371,0.091,0.371-0.093v-9.174h12.582c0.276,0,0.463-0.187,0.463-0.369V18.035
+ c0-0.367-0.187-0.458-0.558-0.458H25.059L25.15,8.311z"/>
+ <path fill="#3568E7" d="M25.143,8.336c0-0.275-0.277-0.275-0.463-0.183L9.347,23.632c-0.461,0.458-0.37,0.641,0,0.917
+ L24.68,39.846c0.094,0.092,0.37,0.092,0.37-0.093v-9.157h12.562c0.277,0,0.463-0.186,0.463-0.367V18.044
+ c0-0.366-0.186-0.457-0.555-0.457H25.05L25.143,8.336z"/>
+ <path fill="#3669E7" d="M25.133,8.364c0-0.275-0.277-0.275-0.462-0.183L9.361,23.632c-0.461,0.458-0.369,0.64,0,0.916
+ l15.31,15.271c0.095,0.093,0.369,0.093,0.369-0.09v-9.146h12.543c0.276,0,0.463-0.185,0.463-0.367V18.055
+ c0-0.365-0.187-0.456-0.555-0.456H25.04L25.133,8.364z"/>
+ <path fill="#376AE8" d="M25.122,8.39c0-0.274-0.274-0.274-0.461-0.183L9.375,23.633c-0.459,0.457-0.368,0.639,0,0.914
+ L24.663,39.79c0.092,0.091,0.366,0.091,0.366-0.091V30.57h12.525c0.275,0,0.461-0.184,0.461-0.364V18.064
+ c0-0.365-0.186-0.455-0.555-0.455H25.029L25.122,8.39z"/>
+ <path fill="#386BE8" d="M25.113,8.417c0-0.274-0.276-0.274-0.461-0.183L9.39,23.634c-0.459,0.456-0.368,0.638,0,0.912
+ l15.262,15.218c0.095,0.09,0.369,0.09,0.369-0.091v-9.112h12.504c0.275,0,0.461-0.184,0.461-0.365v-12.12
+ c0-0.364-0.186-0.455-0.553-0.455H25.021L25.113,8.417z"/>
+ <path fill="#396CE9" d="M25.104,8.442c0-0.273-0.273-0.273-0.459-0.182L9.405,23.636c-0.458,0.455-0.368,0.636,0,0.909
+ l15.24,15.189c0.092,0.093,0.367,0.093,0.367-0.09v-9.097h12.485c0.274,0,0.459-0.183,0.459-0.364v-12.1
+ c0-0.363-0.185-0.454-0.552-0.454H25.012L25.104,8.442z"/>
+ <path fill="#3A6DE9" d="M25.094,8.47c0-0.273-0.273-0.273-0.457-0.182L9.419,23.636c-0.458,0.455-0.367,0.636,0,0.908
+ l15.216,15.165c0.092,0.091,0.367,0.091,0.367-0.09v-9.081h12.466c0.274,0,0.459-0.185,0.459-0.364V18.096
+ c0-0.363-0.185-0.453-0.552-0.453H25.003L25.094,8.47z"/>
+ <path fill="#3B6EEA" d="M25.085,8.497c0-0.272-0.274-0.272-0.459-0.181L9.435,23.637c-0.457,0.453-0.366,0.634,0,0.906
+ l15.193,15.141c0.093,0.09,0.365,0.09,0.365-0.092v-9.064h12.446c0.271,0,0.457-0.182,0.457-0.361v-12.06
+ c0-0.362-0.186-0.452-0.549-0.452H24.993L25.085,8.497z"/>
+ <path fill="#3C6FEA" d="M25.075,8.522c0-0.272-0.272-0.272-0.457-0.181L9.449,23.637c-0.457,0.453-0.366,0.633,0,0.905
+ l15.169,15.112c0.092,0.091,0.362,0.091,0.362-0.09v-9.051h12.431c0.272,0,0.457-0.183,0.457-0.363V18.116
+ c0-0.362-0.185-0.452-0.55-0.452H24.982L25.075,8.522z"/>
+ <path fill="#3D70EB" d="M25.064,8.549c0-0.271-0.272-0.271-0.455-0.181L9.462,23.638c-0.455,0.452-0.365,0.632,0,0.903
+ l15.147,15.087c0.093,0.093,0.363,0.093,0.363-0.089v-9.035h12.409c0.272,0,0.456-0.181,0.456-0.359v-12.02
+ c0-0.361-0.184-0.451-0.549-0.451H24.975L25.064,8.549z"/>
+ <path fill="#3E71EB" d="M25.057,8.577c0-0.271-0.273-0.271-0.455-0.181L9.478,23.639c-0.455,0.451-0.364,0.631,0,0.901
+ l15.124,15.062c0.09,0.09,0.362,0.09,0.362-0.09v-9.021h12.392c0.272,0,0.455-0.183,0.455-0.361V18.136
+ c0-0.36-0.183-0.45-0.547-0.45h-12.3L25.057,8.577z"/>
+ <path fill="#3F72EC" d="M25.046,8.603c0-0.27-0.272-0.27-0.455-0.18L9.493,23.639c-0.454,0.45-0.364,0.63,0,0.9l15.099,15.035
+ c0.092,0.09,0.364,0.09,0.364-0.09V30.48h12.369c0.272,0,0.454-0.183,0.454-0.359V18.146c0-0.36-0.182-0.449-0.547-0.449H24.956
+ L25.046,8.603z"/>
+ <path fill="#4073EC" d="M25.038,8.629c0-0.27-0.272-0.27-0.455-0.18L9.506,23.64c-0.453,0.45-0.363,0.629,0,0.898l15.075,15.01
+ c0.092,0.091,0.362,0.091,0.362-0.09v-8.985h12.353c0.272,0,0.455-0.183,0.455-0.361V18.157c0-0.359-0.183-0.448-0.545-0.448
+ H24.945L25.038,8.629z"/>
+ <path fill="#4174ED" d="M25.027,8.656c0-0.269-0.272-0.269-0.454-0.179L9.521,23.641c-0.453,0.449-0.363,0.627,0,0.896
+ L24.573,39.52c0.092,0.09,0.362,0.09,0.362-0.09v-8.972h12.332c0.271,0,0.453-0.181,0.453-0.36V18.166
+ c0-0.358-0.182-0.447-0.544-0.447H24.938L25.027,8.656z"/>
+ <path fill="#4275ED" d="M25.018,8.683c0-0.269-0.271-0.269-0.453-0.179L9.537,23.641c-0.452,0.448-0.362,0.626,0,0.896
+ l15.027,14.957c0.092,0.09,0.362,0.09,0.362-0.09v-8.955h12.312c0.271,0,0.453-0.18,0.453-0.359V18.177
+ c0-0.358-0.182-0.447-0.543-0.447H24.927L25.018,8.683z"/>
+ <path fill="#4376EE" d="M25.008,8.709c0-0.269-0.271-0.269-0.451-0.179L9.551,23.642c-0.451,0.447-0.361,0.625,0,0.895
+ l15.006,14.932c0.09,0.09,0.36,0.09,0.36-0.089v-8.94H37.21c0.271,0,0.453-0.18,0.453-0.356V18.187
+ c0-0.357-0.183-0.446-0.543-0.446H24.917L25.008,8.709z"/>
+ <path fill="#4477EE" d="M24.997,8.735c0-0.268-0.271-0.268-0.45-0.179L9.564,23.642c-0.45,0.446-0.361,0.625,0,0.893
+ l14.982,14.904c0.091,0.09,0.36,0.09,0.36-0.088v-8.928H37.18c0.271,0,0.451-0.179,0.451-0.355V18.197
+ c0-0.356-0.181-0.445-0.542-0.445h-12.18L24.997,8.735z"/>
+ <path fill="#4578EF" d="M24.988,8.763c0-0.268-0.271-0.268-0.449-0.178L9.58,23.643c-0.449,0.445-0.36,0.623,0,0.891l14.958,14.88
+ c0.09,0.089,0.358,0.089,0.358-0.089v-8.909h12.256c0.271,0,0.451-0.18,0.451-0.357V18.207c0-0.356-0.182-0.444-0.541-0.444
+ H24.898L24.988,8.763z"/>
+ <path fill="#4679EF" d="M24.979,8.79c0-0.267-0.271-0.267-0.449-0.178L9.595,23.644c-0.449,0.445-0.36,0.622,0,0.891
+ l14.934,14.851c0.091,0.091,0.359,0.091,0.359-0.088v-8.896h12.234c0.271,0,0.451-0.18,0.451-0.355V18.216
+ c0-0.355-0.184-0.443-0.541-0.443H24.891L24.979,8.79z"/>
+ <path fill="#477AF0" d="M24.971,8.815c0-0.267-0.271-0.267-0.451-0.178L9.608,23.644c-0.448,0.444-0.359,0.621,0,0.889
+ L24.52,39.357c0.09,0.09,0.36,0.09,0.36-0.088v-8.879h12.218c0.27,0,0.448-0.18,0.448-0.354V18.228
+ c0-0.355-0.183-0.443-0.541-0.443H24.88L24.971,8.815z"/>
+ <path fill="#487BF0" d="M24.96,8.842c0-0.266-0.271-0.266-0.448-0.177L9.624,23.645c-0.448,0.443-0.359,0.62,0,0.888
+ l14.888,14.801c0.09,0.088,0.358,0.088,0.358-0.088v-8.863h12.196c0.271,0,0.449-0.178,0.449-0.355v-11.79
+ c0-0.354-0.182-0.442-0.539-0.442H24.87L24.96,8.842z"/>
+ <path fill="#497CF1" d="M24.95,8.87c0-0.266-0.269-0.266-0.447-0.177L9.638,23.645c-0.447,0.442-0.358,0.619,0,0.886
+ l14.865,14.773c0.09,0.09,0.356,0.09,0.356-0.09v-8.846H37.04c0.271,0,0.446-0.18,0.446-0.354V18.248
+ c0-0.353-0.18-0.441-0.536-0.441H24.859L24.95,8.87z"/>
+ <path fill="#4A7DF1" d="M24.939,8.896c0-0.265-0.268-0.265-0.446-0.177L9.652,23.646c-0.446,0.442-0.357,0.618,0,0.883
+ l14.841,14.75c0.089,0.088,0.358,0.088,0.358-0.088v-8.832H37.01c0.27,0,0.448-0.178,0.448-0.354V18.257
+ c0-0.353-0.183-0.44-0.537-0.44H24.852L24.939,8.896z"/>
+ <path fill="#4B7EF2" d="M24.932,8.922c0-0.265-0.269-0.265-0.447-0.177L9.667,23.646c-0.445,0.441-0.357,0.617,0,0.881
+ l14.818,14.724c0.089,0.088,0.357,0.088,0.357-0.088V30.35h12.141c0.268,0,0.447-0.18,0.447-0.354V18.268
+ c0-0.353-0.181-0.44-0.537-0.44H24.842L24.932,8.922z"/>
+ <path fill="#4C7FF2" d="M24.921,8.949c0-0.264-0.269-0.264-0.445-0.176L9.682,23.646c-0.444,0.44-0.356,0.616,0,0.879
+ l14.794,14.697c0.088,0.088,0.355,0.088,0.355-0.089v-8.801h12.121c0.269,0,0.444-0.177,0.444-0.354V18.277
+ c0-0.352-0.18-0.438-0.535-0.438h-12.03L24.921,8.949z"/>
+ <path fill="#4D80F3" d="M24.913,8.976c0-0.264-0.269-0.264-0.444-0.176L9.697,23.647c-0.444,0.439-0.356,0.615,0,0.878
+ l14.771,14.672c0.091,0.088,0.355,0.088,0.355-0.088v-8.784h12.102c0.269,0,0.445-0.179,0.445-0.354V18.288
+ c0-0.351-0.181-0.438-0.535-0.438H24.823L24.913,8.976z"/>
+ <path fill="#4E81F3" d="M24.902,9.002c0-0.264-0.268-0.264-0.444-0.176L9.71,23.647c-0.443,0.439-0.355,0.614,0,0.876
+ L24.458,39.17c0.089,0.088,0.354,0.088,0.354-0.087v-8.771h12.082c0.268,0,0.444-0.176,0.444-0.354V18.297
+ c0-0.35-0.178-0.437-0.532-0.437H24.812L24.902,9.002z"/>
+ <path fill="#4F82F4" d="M24.895,9.028c0-0.263-0.269-0.263-0.444-0.175L9.726,23.648c-0.442,0.438-0.354,0.612,0,0.875
+ L24.45,39.145c0.089,0.088,0.354,0.088,0.354-0.086v-8.754h12.062c0.267,0,0.442-0.178,0.442-0.354V18.308
+ c0-0.349-0.18-0.436-0.533-0.436H24.805L24.895,9.028z"/>
+ <path fill="#5083F4" d="M24.884,9.056c0-0.262-0.268-0.262-0.443-0.175L9.74,23.649c-0.441,0.437-0.354,0.611,0,0.875l14.7,14.595
+ c0.089,0.087,0.354,0.087,0.354-0.087v-8.737h12.045c0.267,0,0.44-0.176,0.44-0.353V18.317c0-0.349-0.178-0.436-0.53-0.436H24.794
+ L24.884,9.056z"/>
+ <path fill="#5184F5" d="M24.874,9.082c0-0.262-0.269-0.262-0.442-0.175L9.754,23.649c-0.441,0.437-0.354,0.61,0,0.873
+ l14.677,14.566c0.088,0.088,0.354,0.088,0.354-0.086v-8.723h12.025c0.266,0,0.44-0.176,0.44-0.35V18.329
+ c0-0.348-0.176-0.435-0.53-0.435H24.786L24.874,9.082z"/>
+ <path fill="#5285F5" d="M24.863,9.108c0-0.262-0.264-0.262-0.44-0.174L9.769,23.65c-0.44,0.436-0.353,0.609,0,0.872l14.654,14.541
+ c0.089,0.086,0.353,0.086,0.353-0.086V30.27h12.008c0.264,0,0.439-0.176,0.439-0.351V18.338c0-0.348-0.177-0.434-0.529-0.434
+ H24.775L24.863,9.108z"/>
+ <path fill="#5386F6" d="M24.854,9.136c0-0.261-0.266-0.261-0.44-0.174l-14.63,14.69c-0.439,0.435-0.353,0.608,0,0.87l14.63,14.517
+ c0.089,0.087,0.353,0.087,0.353-0.086V30.26H36.75c0.266,0,0.439-0.175,0.439-0.349V18.349c0-0.347-0.176-0.433-0.527-0.433
+ H24.768L24.854,9.136z"/>
+ <path fill="#5487F6" d="M24.846,9.163c0-0.261-0.265-0.261-0.441-0.174L9.798,23.651c-0.439,0.434-0.352,0.607,0,0.867
+ l14.606,14.49c0.088,0.086,0.352,0.086,0.352-0.086v-8.676h11.967c0.264,0,0.439-0.176,0.439-0.35V18.358
+ c0-0.346-0.178-0.432-0.527-0.432H24.757L24.846,9.163z"/>
+ <path fill="#5588F7" d="M24.835,9.188c0-0.26-0.265-0.26-0.439-0.173L9.812,23.652c-0.438,0.433-0.352,0.606,0,0.866L24.395,38.98
+ c0.088,0.088,0.352,0.088,0.352-0.086v-8.66h11.946c0.265,0,0.439-0.174,0.439-0.348V18.369c0-0.346-0.178-0.432-0.527-0.432
+ H24.747L24.835,9.188z"/>
+ <path fill="#5689F7" d="M24.827,9.215c0-0.26-0.265-0.26-0.438-0.173L9.828,23.653c-0.437,0.432-0.351,0.604,0,0.865l14.56,14.438
+ c0.088,0.086,0.352,0.086,0.352-0.086v-8.646h11.928c0.266,0,0.438-0.176,0.438-0.349v-11.5c0-0.345-0.176-0.431-0.525-0.431
+ H24.74L24.827,9.215z"/>
+ <path fill="#578AF8" d="M24.816,9.242c0-0.259-0.264-0.259-0.438-0.172L9.842,23.653c-0.437,0.432-0.35,0.604,0,0.863
+ l14.537,14.41c0.088,0.086,0.35,0.086,0.35-0.086v-8.629h11.91c0.262,0,0.438-0.173,0.438-0.346V18.389
+ c0-0.344-0.176-0.43-0.524-0.43H24.729L24.816,9.242z"/>
+ <path fill="#588BF8" d="M24.807,9.269c0-0.259-0.262-0.259-0.437-0.172L9.856,23.655c-0.436,0.431-0.35,0.603,0,0.863
+ L24.37,38.898c0.088,0.086,0.349,0.086,0.349-0.084v-8.612h11.891c0.264,0,0.438-0.175,0.438-0.347V18.398
+ c0-0.344-0.176-0.429-0.524-0.429H24.719L24.807,9.269z"/>
+ <path fill="#598CF9" d="M24.796,9.294c0-0.258-0.261-0.258-0.438-0.172L9.872,23.655c-0.435,0.43-0.349,0.602,0,0.861
+ L24.36,38.872c0.088,0.086,0.35,0.086,0.35-0.085v-8.602h11.871c0.263,0,0.438-0.172,0.438-0.344V18.41
+ c0-0.343-0.177-0.429-0.522-0.429H24.71L24.796,9.294z"/>
+ <path fill="#5A8DF9" d="M24.788,9.322c0-0.258-0.263-0.258-0.437-0.172L9.886,23.656c-0.435,0.429-0.349,0.6,0,0.857
+ l14.466,14.334c0.088,0.086,0.349,0.086,0.349-0.088v-8.58h11.854c0.262,0,0.438-0.174,0.438-0.346V18.418
+ c0-0.342-0.177-0.427-0.522-0.427H24.7L24.788,9.322z"/>
+ <path fill="#5B8EFA" d="M24.777,9.349c0-0.257-0.262-0.257-0.436-0.171L9.9,23.657c-0.434,0.428-0.348,0.6,0,0.856L24.342,38.82
+ c0.087,0.086,0.348,0.086,0.348-0.084v-8.567h11.834c0.261,0,0.437-0.172,0.437-0.344V18.43c0-0.342-0.176-0.427-0.522-0.427
+ H24.689L24.777,9.349z"/>
+ <path fill="#5C8FFA" d="M24.77,9.375c0-0.257-0.262-0.257-0.436-0.171L9.915,23.657c-0.433,0.428-0.348,0.599,0,0.854
+ l14.419,14.281c0.087,0.086,0.348,0.086,0.348-0.085v-8.551h11.812c0.262,0,0.438-0.174,0.438-0.346V18.439
+ c0-0.341-0.176-0.426-0.521-0.426H24.682L24.77,9.375z"/>
+ <path fill="#5D90FB" d="M24.759,9.401c0-0.256-0.26-0.256-0.434-0.17L9.93,23.658c-0.432,0.427-0.347,0.597,0,0.855l14.396,14.254
+ c0.087,0.086,0.347,0.086,0.347-0.084v-8.537h11.794c0.26,0,0.436-0.172,0.436-0.342V18.45c0-0.341-0.176-0.425-0.521-0.425
+ h-11.71L24.759,9.401z"/>
+ <path fill="#5E91FB" d="M24.749,9.429c0-0.256-0.26-0.256-0.435-0.17l-14.371,14.4c-0.432,0.426-0.346,0.596,0,0.852L24.315,38.74
+ c0.087,0.085,0.346,0.085,0.346-0.086v-8.521h11.774c0.26,0,0.435-0.172,0.435-0.342V18.459c0-0.34-0.175-0.424-0.521-0.424
+ H24.663L24.749,9.429z"/>
+ <path fill="#5F92FC" d="M24.741,9.455c0-0.255-0.261-0.255-0.434-0.17L9.958,23.659c-0.431,0.425-0.346,0.595,0,0.851
+ l14.349,14.202c0.087,0.085,0.345,0.085,0.345-0.084v-8.505h11.757c0.258,0,0.434-0.171,0.434-0.341V18.47
+ c0-0.339-0.176-0.423-0.521-0.423h-11.67L24.741,9.455z"/>
+ <path fill="#6093FC" d="M24.73,9.481c0-0.255-0.259-0.255-0.433-0.17L9.974,23.66c-0.43,0.425-0.345,0.594,0,0.849l14.325,14.179
+ c0.087,0.084,0.346,0.084,0.346-0.084v-8.489H36.38c0.259,0,0.433-0.171,0.433-0.341V18.479c0-0.339-0.174-0.423-0.521-0.423
+ H24.645L24.73,9.481z"/>
+ <path fill="#6194FD" d="M24.721,9.507c0-0.254-0.259-0.254-0.431-0.169L9.988,23.661c-0.43,0.424-0.345,0.593,0,0.847
+ l14.302,14.15c0.086,0.085,0.344,0.085,0.344-0.084V30.1h11.718c0.258,0,0.432-0.17,0.432-0.342v-11.27
+ c0-0.338-0.174-0.422-0.518-0.422H24.634L24.721,9.507z"/>
+ <path fill="#6295FD" d="M24.71,9.535c0-0.254-0.257-0.254-0.429-0.169L10.002,23.661c-0.429,0.423-0.344,0.592,0,0.846
+ L24.28,38.631c0.086,0.085,0.343,0.085,0.343-0.083V30.09H36.32c0.258,0,0.432-0.17,0.432-0.34V18.5
+ c0-0.337-0.174-0.421-0.52-0.421H24.623L24.71,9.535z"/>
+ <path fill="#6396FE" d="M24.702,9.561c0-0.253-0.259-0.253-0.43-0.169l-14.256,14.27c-0.428,0.422-0.343,0.591,0,0.844
+ l14.255,14.1c0.086,0.084,0.342,0.084,0.342-0.084V30.08h11.681c0.258,0,0.431-0.17,0.431-0.338v-11.23
+ c0-0.337-0.173-0.42-0.517-0.42H24.616L24.702,9.561z"/>
+ <path fill="#6497FE" d="M24.691,9.587c0-0.253-0.257-0.253-0.429-0.168l-14.23,14.243c-0.427,0.422-0.343,0.59,0,0.843
+ l14.231,14.072c0.086,0.084,0.342,0.084,0.342-0.083v-8.428h11.66c0.258,0,0.43-0.17,0.43-0.338V18.521
+ c0-0.336-0.172-0.42-0.516-0.42H24.605L24.691,9.587z"/>
+ <path fill="#6598FF" d="M24.684,9.615c0-0.252-0.258-0.252-0.43-0.168L10.045,23.663c-0.426,0.42-0.342,0.588,0,0.841
+ l14.208,14.047c0.086,0.084,0.343,0.084,0.343-0.084v-8.41h11.641c0.257,0,0.429-0.168,0.429-0.336V18.531
+ c0-0.335-0.172-0.418-0.515-0.418H24.598L24.684,9.615z"/>
+ <path fill="#6699FF" d="M24.673,9.642c0-0.252-0.257-0.252-0.428-0.168L10.06,23.664c-0.426,0.42-0.342,0.587,0,0.839
+ l14.185,14.021c0.086,0.084,0.342,0.084,0.342-0.084v-8.396h11.621c0.256,0,0.429-0.169,0.429-0.337V18.541
+ c0-0.335-0.173-0.418-0.515-0.418H24.587L24.673,9.642z"/>
+ </g>
+
+ <linearGradient id="XMLID_16_" gradientUnits="userSpaceOnUse" x1="-1112.2041" y1="1225.4229" x2="-1112.2041" y2="1254.5781" gradientTransform="matrix(-1 0 0 1 -1089 -1216)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#6699FF"/>
+ </linearGradient>
+ <path fill="url(#XMLID_16_)" d="M24.673,9.642c0-0.252-0.257-0.252-0.428-0.168L10.06,23.664c-0.426,0.42-0.342,0.587,0,0.839
+ l14.185,14.021c0.086,0.084,0.342,0.084,0.342-0.084v-8.396h11.621c0.256,0,0.429-0.169,0.429-0.337V18.541
+ c0-0.335-0.173-0.418-0.515-0.418H24.587L24.673,9.642z"/>
+</g>
+<g id="crop_x0020_marks">
+ <path fill="none" d="M-0.06,0.001h48v48h-48V0.001z"/>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg
new file mode 100644
index 0000000..7ec92e3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Tip" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g>
+ <path stroke="#FFFFFF" stroke-width="5.6139" d="M9.525,18.6c0,8,6.5,14.4,14.4,14.4c8.001,0,14.399-6.5,14.399-14.4
+ c0-8-6.5-14.4-14.399-14.4C15.925,4.2,9.525,10.7,9.525,18.6z M12.825,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2
+ c0,6.2-5,11.2-11.2,11.2C17.825,29.8,12.825,24.8,12.825,18.6z"/>
+ <path stroke="#FFFFFF" stroke-width="5.6139" d="M28.125,37.9l-7.6,0.8c-0.9,0.1-1.5,0.899-1.4,1.8s0.9,1.5,1.8,1.4l7.601-0.801
+ c0.9-0.102,1.5-0.899,1.4-1.802C29.824,38.4,29.025,37.8,28.125,37.9z"/>
+ <path stroke="#FFFFFF" stroke-width="5.6139" d="M28.125,34.8l-7.6,0.8c-0.9,0.101-1.5,0.9-1.4,1.801c0.1,0.897,0.9,1.5,1.8,1.397
+ l7.601-0.8c0.9-0.102,1.5-0.898,1.4-1.8C29.824,35.3,29.025,34.7,28.125,34.8z"/>
+ <path stroke="#FFFFFF" stroke-width="5.6139" d="M28.125,31.6l-7.6,0.801c-0.9,0.1-1.5,0.897-1.4,1.8c0.1,0.899,0.9,1.5,1.8,1.399
+ l7.601-0.802c0.9-0.1,1.5-0.897,1.4-1.8C29.824,32.1,29.025,31.5,28.125,31.6z"/>
+ <path stroke="#FFFFFF" stroke-width="5.6139" d="M23.125,41.3v0.9c0,0.899,0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6v-0.9h-3.299
+ H23.125z"/>
+ <path fill="#FFFFFF" d="M35.926,18.7c0,6.6-5.4,12-12.001,12c-6.6,0-12-5.4-12-12c0-6.6,5.4-12,12-12
+ C30.525,6.7,35.926,12.1,35.926,18.7z"/>
+ <g>
+ <path fill="#FFFF00" d="M9.625,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.401-6.5,14.401-14.4c0-8-6.5-14.4-14.401-14.4
+ C16.025,4.2,9.625,10.7,9.625,18.6z"/>
+ <path fill="#FFFF01" d="M9.647,18.6c0-7.889,6.391-14.379,14.379-14.379c7.89,0,14.378,6.391,14.378,14.379
+ c0,7.889-6.391,14.378-14.378,14.378C16.137,32.979,9.647,26.588,9.647,18.6z"/>
+ <path fill="#FFFF02" d="M9.668,18.6c0-7.878,6.382-14.358,14.358-14.358c7.878,0,14.359,6.382,14.359,14.358
+ c0,7.876-6.383,14.358-14.359,14.358C16.149,32.958,9.668,26.576,9.668,18.6z"/>
+ <path fill="#FFFF03" d="M9.69,18.6c0-7.867,6.373-14.337,14.337-14.337c7.868,0,14.338,6.373,14.338,14.337
+ c0,7.867-6.373,14.337-14.338,14.337C16.16,32.938,9.69,26.564,9.69,18.6z"/>
+ <path fill="#FFFF04" d="M9.712,18.6c0-7.855,6.363-14.316,14.316-14.316c7.855,0,14.316,6.363,14.316,14.316
+ c0,7.856-6.363,14.316-14.316,14.316C16.172,32.916,9.712,26.553,9.712,18.6z"/>
+ <path fill="#FFFF05" d="M9.733,18.6c0-7.844,6.354-14.295,14.295-14.295c7.847,0,14.296,6.354,14.296,14.295
+ c0,7.843-6.354,14.294-14.296,14.294C16.184,32.896,9.733,26.541,9.733,18.6z"/>
+ <path fill="#FFFF06" d="M9.754,18.6c0-7.833,6.345-14.274,14.274-14.274c7.833,0,14.275,6.345,14.275,14.274
+ c0,7.833-6.346,14.274-14.275,14.274C16.196,32.874,9.754,26.529,9.754,18.6z"/>
+ <path fill="#FFFF07" d="M9.776,18.6c0-7.822,6.336-14.253,14.254-14.253c7.822,0,14.253,6.335,14.253,14.253
+ c0,7.823-6.336,14.253-14.253,14.253C16.208,32.854,9.776,26.518,9.776,18.6z"/>
+ <path fill="#FFFF08" d="M9.798,18.6c0-7.811,6.326-14.232,14.232-14.232c7.812,0,14.234,6.326,14.234,14.232
+ c0,7.811-6.328,14.233-14.234,14.233C16.219,32.833,9.798,26.506,9.798,18.6z"/>
+ <path fill="#FFFF09" d="M9.819,18.6c0-7.8,6.317-14.211,14.211-14.211c7.8,0,14.212,6.317,14.212,14.211
+ c0,7.8-6.318,14.21-14.212,14.21C16.231,32.812,9.819,26.494,9.819,18.6z"/>
+ <path fill="#FFFF0A" d="M9.84,18.6c0-7.789,6.309-14.191,14.191-14.191c7.79,0,14.192,6.309,14.192,14.191
+ c0,7.789-6.309,14.191-14.192,14.191C16.243,32.791,9.84,26.482,9.84,18.6z"/>
+ <path fill="#FFFF0B" d="M9.862,18.6c0-7.778,6.299-14.17,14.17-14.17c7.779,0,14.169,6.299,14.169,14.17
+ c0,7.778-6.299,14.169-14.169,14.169C16.254,32.77,9.862,26.471,9.862,18.6z"/>
+ <path fill="#FFFF0C" d="M9.884,18.6c0-7.767,6.29-14.149,14.149-14.149c7.768,0,14.149,6.29,14.149,14.149
+ c0,7.767-6.291,14.149-14.149,14.149C16.266,32.749,9.884,26.459,9.884,18.6z"/>
+ <path fill="#FFFF0D" d="M9.905,18.6c0-7.756,6.281-14.128,14.128-14.128c7.756,0,14.129,6.281,14.129,14.128
+ c0,7.755-6.281,14.128-14.129,14.128C16.278,32.729,9.905,26.447,9.905,18.6z"/>
+ <path fill="#FFFF0E" d="M9.927,18.6c0-7.745,6.272-14.107,14.107-14.107c7.746,0,14.107,6.272,14.107,14.107
+ c0,7.746-6.27,14.107-14.107,14.107C16.29,32.707,9.927,26.436,9.927,18.6z"/>
+ <path fill="#FFFF0F" d="M9.949,18.6c0-7.733,6.263-14.086,14.086-14.086c7.733,0,14.088,6.262,14.088,14.086
+ c0,7.733-6.266,14.085-14.088,14.085C16.302,32.688,9.949,26.423,9.949,18.6z"/>
+ <path fill="#FFFF10" d="M9.97,18.6c0-7.722,6.253-14.065,14.065-14.065c7.723,0,14.067,6.253,14.067,14.065
+ c0,7.722-6.254,14.066-14.067,14.066C16.313,32.666,9.97,26.411,9.97,18.6z"/>
+ <path fill="#FFFF11" d="M9.992,18.6c0-7.711,6.244-14.044,14.044-14.044c7.712,0,14.044,6.245,14.044,14.044
+ c0,7.71-6.244,14.044-14.044,14.044C16.325,32.645,9.992,26.398,9.992,18.6z"/>
+ <path fill="#FFFF12" d="M10.013,18.6c0-7.7,6.235-14.023,14.023-14.023c7.7,0,14.024,6.235,14.024,14.023
+ c0,7.7-6.236,14.023-14.024,14.023C16.337,32.623,10.013,26.389,10.013,18.6z"/>
+ <path fill="#FFFF13" d="M10.035,18.6c0-7.688,6.226-14.002,14.002-14.002c7.689,0,14.004,6.226,14.004,14.002
+ c0,7.689-6.229,14.001-14.004,14.001C16.348,32.604,10.035,26.376,10.035,18.6z"/>
+ <path fill="#FFFF14" d="M10.057,18.6c0-7.678,6.217-13.981,13.981-13.981c7.679,0,13.981,6.217,13.981,13.981
+ c0,7.677-6.217,13.981-13.981,13.981C16.36,32.581,10.057,26.364,10.057,18.6z"/>
+ <path fill="#FFFF15" d="M10.078,18.6c0-7.667,6.208-13.961,13.961-13.961C31.707,4.639,38,10.847,38,18.6
+ c0,7.667-6.209,13.96-13.961,13.96C16.372,32.561,10.078,26.354,10.078,18.6z"/>
+ <path fill="#FFFF16" d="M10.1,18.6c0-7.655,6.198-13.94,13.939-13.94c7.656,0,13.941,6.199,13.941,13.94
+ c0,7.656-6.201,13.94-13.941,13.94C16.384,32.54,10.1,26.341,10.1,18.6z"/>
+ <path fill="#FFFF17" d="M10.121,18.6c0-7.644,6.189-13.919,13.919-13.919c7.646,0,13.919,6.189,13.919,13.919
+ c0,7.644-6.189,13.917-13.919,13.917C16.396,32.52,10.121,26.329,10.121,18.6z"/>
+ <path fill="#FFFF18" d="M10.143,18.6c0-7.633,6.181-13.898,13.898-13.898c7.633,0,13.898,6.18,13.898,13.898
+ c0,7.632-6.182,13.898-13.898,13.898C16.408,32.498,10.143,26.316,10.143,18.6z"/>
+ <path fill="#FFFF19" d="M10.164,18.6c0-7.622,6.171-13.877,13.877-13.877c7.623,0,13.877,6.171,13.877,13.877
+ c0,7.623-6.172,13.876-13.877,13.876C16.419,32.479,10.164,26.307,10.164,18.6z"/>
+ <path fill="#FFFF1A" d="M10.186,18.6c0-7.611,6.162-13.856,13.856-13.856c7.61,0,13.856,6.162,13.856,13.856
+ c0,7.611-6.162,13.856-13.856,13.856C16.431,32.456,10.186,26.294,10.186,18.6z"/>
+ <path fill="#FFFF1B" d="M10.208,18.6c0-7.6,6.153-13.835,13.835-13.835c7.602,0,13.836,6.153,13.836,13.835
+ c0,7.6-6.152,13.835-13.836,13.835C16.443,32.436,10.208,26.282,10.208,18.6z"/>
+ <path fill="#FFFF1C" d="M10.229,18.6c0-7.589,6.144-13.814,13.814-13.814c7.59,0,13.814,6.144,13.814,13.814
+ c0,7.587-6.145,13.814-13.814,13.814C16.454,32.414,10.229,26.271,10.229,18.6z"/>
+ <path fill="#FFFF1D" d="M10.251,18.6c0-7.578,6.135-13.793,13.793-13.793c7.579,0,13.794,6.135,13.794,13.793
+ c0,7.578-6.137,13.792-13.794,13.792C16.466,32.395,10.251,26.259,10.251,18.6z"/>
+ <path fill="#FFFF1E" d="M10.272,18.6c0-7.566,6.125-13.772,13.772-13.772c7.567,0,13.772,6.125,13.772,13.772
+ c0,7.567-6.125,13.773-13.772,13.773C16.478,32.373,10.272,26.247,10.272,18.6z"/>
+ <path fill="#FFFF1F" d="M10.294,18.6c0-7.556,6.116-13.752,13.751-13.752c7.557,0,13.752,6.117,13.752,13.752
+ c0,7.554-6.117,13.751-13.752,13.751C16.49,32.352,10.294,26.234,10.294,18.6z"/>
+ <path fill="#FFFF20" d="M10.315,18.6c0-7.544,6.107-13.731,13.731-13.731c7.544,0,13.731,6.107,13.731,13.731
+ c0,7.544-6.107,13.731-13.731,13.731C16.502,32.331,10.315,26.225,10.315,18.6z"/>
+ <path fill="#FFFF21" d="M10.337,18.6c0-7.533,6.098-13.71,13.709-13.71c7.534,0,13.71,6.098,13.71,13.71
+ c0,7.534-6.1,13.708-13.71,13.708C16.513,32.311,10.337,26.212,10.337,18.6z"/>
+ <path fill="#FFFF22" d="M10.358,18.6c0-7.522,6.088-13.688,13.689-13.688c7.521,0,13.689,6.088,13.689,13.688
+ c0,7.522-6.09,13.689-13.689,13.689C16.525,32.289,10.358,26.199,10.358,18.6z"/>
+ <path fill="#FFFF23" d="M10.38,18.6c0-7.511,6.08-13.668,13.668-13.668c7.511,0,13.669,6.08,13.669,13.668
+ c0,7.511-6.08,13.667-13.669,13.667C16.537,32.268,10.38,26.188,10.38,18.6z"/>
+ <path fill="#FFFF24" d="M10.401,18.6c0-7.5,6.071-13.647,13.647-13.647c7.501,0,13.647,6.07,13.647,13.647
+ c0,7.5-6.07,13.647-13.647,13.647C16.549,32.247,10.401,26.176,10.401,18.6z"/>
+ <path fill="#FFFF25" d="M10.423,18.6c0-7.489,6.062-13.626,13.626-13.626c7.49,0,13.627,6.061,13.627,13.626
+ c0,7.489-6.062,13.625-13.627,13.625C16.56,32.227,10.423,26.164,10.423,18.6z"/>
+ <path fill="#FFFF26" d="M10.445,18.6c0-7.478,6.052-13.605,13.605-13.605c7.478,0,13.606,6.052,13.606,13.605
+ c0,7.478-6.053,13.605-13.606,13.605C16.572,32.205,10.445,26.152,10.445,18.6z"/>
+ <path fill="#FFFF27" d="M10.466,18.6c0-7.467,6.043-13.584,13.584-13.584c7.468,0,13.585,6.043,13.585,13.584
+ c0,7.466-6.043,13.583-13.585,13.583C16.584,32.186,10.466,26.141,10.466,18.6z"/>
+ <path fill="#FFFF28" d="M10.488,18.6c0-7.456,6.034-13.563,13.563-13.563c7.457,0,13.562,6.034,13.562,13.563
+ c0,7.457-6.033,13.563-13.562,13.563C16.596,32.163,10.488,26.129,10.488,18.6z"/>
+ <path fill="#FFFF29" d="M10.509,18.6c0-7.445,6.025-13.542,13.542-13.542c7.445,0,13.543,6.024,13.543,13.542
+ c0,7.444-6.025,13.542-13.543,13.542C16.608,32.143,10.509,26.117,10.509,18.6z"/>
+ <path fill="#FFFF2A" d="M10.531,18.6c0-7.434,6.016-13.522,13.521-13.522c7.435,0,13.521,6.016,13.521,13.522
+ c0,7.433-6.016,13.521-13.521,13.521C16.619,32.121,10.531,26.105,10.531,18.6z"/>
+ <path fill="#FFFF2B" d="M10.552,18.6c0-7.422,6.006-13.501,13.501-13.501c7.422,0,13.502,6.007,13.502,13.501
+ c0,7.421-6.008,13.5-13.502,13.5C16.631,32.102,10.552,26.094,10.552,18.6z"/>
+ <path fill="#FFFF2C" d="M10.574,18.6c0-7.411,5.997-13.479,13.479-13.479c7.412,0,13.48,5.997,13.48,13.479
+ c0,7.411-5.998,13.48-13.48,13.48C16.643,32.08,10.574,26.082,10.574,18.6z"/>
+ <path fill="#FFFF2D" d="M10.596,18.6c0-7.4,5.988-13.458,13.458-13.458c7.401,0,13.46,5.988,13.46,13.458
+ c0,7.4-5.988,13.458-13.46,13.458C16.654,32.059,10.596,26.07,10.596,18.6z"/>
+ <path fill="#FFFF2E" d="M10.617,18.6c0-7.389,5.979-13.438,13.438-13.438c7.389,0,13.438,5.979,13.438,13.438
+ c0,7.389-5.979,13.438-13.438,13.438C16.666,32.038,10.617,26.059,10.617,18.6z"/>
+ <path fill="#FFFF2F" d="M10.639,18.6c0-7.377,5.97-13.417,13.417-13.417c7.377,0,13.417,5.97,13.417,13.417
+ c0,7.376-5.971,13.417-13.417,13.417C16.678,32.018,10.639,26.047,10.639,18.6z"/>
+ <path fill="#FFFF30" d="M10.66,18.6c0-7.366,5.96-13.396,13.396-13.396c7.368,0,13.395,5.961,13.395,13.396
+ c0,7.367-5.961,13.396-13.395,13.396C16.69,31.996,10.66,26.035,10.66,18.6z"/>
+ <path fill="#FFFF31" d="M10.682,18.6c0-7.355,5.951-13.375,13.375-13.375c7.355,0,13.375,5.952,13.375,13.375
+ c0,7.355-5.951,13.375-13.375,13.375C16.701,31.977,10.682,26.023,10.682,18.6z"/>
+ <path fill="#FFFF32" d="M10.703,18.6c0-7.344,5.943-13.354,13.354-13.354c7.343,0,13.355,5.943,13.355,13.354
+ c0,7.343-5.943,13.354-13.355,13.354C16.713,31.954,10.703,26.012,10.703,18.6z"/>
+ <path fill="#FFFF33" d="M10.725,18.6c0-7.333,5.933-13.333,13.333-13.333c7.334,0,13.334,5.934,13.334,13.333
+ c0,7.333-5.934,13.333-13.334,13.333C16.725,31.934,10.725,26,10.725,18.6z"/>
+ <path fill="#FFFF34" d="M10.747,18.6c0-7.322,5.924-13.312,13.312-13.312c7.322,0,13.312,5.924,13.312,13.312
+ c0,7.322-5.926,13.312-13.312,13.312C16.737,31.912,10.747,25.988,10.747,18.6z"/>
+ <path fill="#FFFF35" d="M10.768,18.6c0-7.311,5.915-13.292,13.292-13.292c7.311,0,13.292,5.915,13.292,13.292
+ c0,7.311-5.914,13.292-13.292,13.292C16.749,31.893,10.768,25.977,10.768,18.6z"/>
+ <path fill="#FFFF36" d="M10.79,18.6c0-7.3,5.906-13.271,13.271-13.271c7.3,0,13.271,5.906,13.271,13.271
+ c0,7.298-5.904,13.27-13.271,13.27C16.76,31.87,10.79,25.964,10.79,18.6z"/>
+ <path fill="#FFFF37" d="M10.811,18.6c0-7.289,5.897-13.25,13.25-13.25c7.289,0,13.25,5.896,13.25,13.25
+ c0,7.289-5.896,13.25-13.25,13.25C16.772,31.85,10.811,25.952,10.811,18.6z"/>
+ <path fill="#FFFF38" d="M10.833,18.6c0-7.278,5.888-13.229,13.229-13.229c7.278,0,13.229,5.887,13.229,13.229
+ c0,7.278-5.889,13.228-13.229,13.228C16.784,31.828,10.833,25.939,10.833,18.6z"/>
+ <path fill="#FFFF39" d="M10.854,18.6c0-7.267,5.878-13.208,13.208-13.208c7.268,0,13.208,5.878,13.208,13.208
+ c0,7.266-5.877,13.208-13.208,13.208C16.796,31.809,10.854,25.93,10.854,18.6z"/>
+ <path fill="#FFFF3A" d="M10.876,18.6c0-7.255,5.869-13.187,13.187-13.187c7.255,0,13.187,5.869,13.187,13.187
+ c0,7.255-5.869,13.187-13.187,13.187C16.807,31.787,10.876,25.917,10.876,18.6z"/>
+ <path fill="#FFFF3B" d="M10.898,18.6c0-7.245,5.86-13.166,13.166-13.166c7.245,0,13.167,5.86,13.167,13.166
+ c0,7.244-5.859,13.166-13.167,13.166C16.819,31.766,10.898,25.904,10.898,18.6z"/>
+ <path fill="#FFFF3C" d="M10.92,18.6c0-7.233,5.851-13.145,13.145-13.145c7.234,0,13.146,5.851,13.146,13.145
+ c0,7.233-5.854,13.145-13.146,13.145C16.831,31.745,10.92,25.895,10.92,18.6z"/>
+ <path fill="#FFFF3D" d="M10.941,18.6c0-7.222,5.842-13.125,13.124-13.125c7.222,0,13.125,5.842,13.125,13.125
+ c0,7.222-5.842,13.125-13.125,13.125C16.843,31.725,10.941,25.882,10.941,18.6z"/>
+ <path fill="#FFFF3E" d="M10.963,18.6c0-7.211,5.833-13.104,13.103-13.104c7.211,0,13.104,5.833,13.104,13.104
+ c0,7.21-5.832,13.103-13.104,13.103C16.855,31.703,10.963,25.87,10.963,18.6z"/>
+ <path fill="#FFFF3F" d="M10.984,18.6c0-7.2,5.823-13.082,13.083-13.082c7.201,0,13.083,5.823,13.083,13.082
+ c0,7.2-5.824,13.083-13.083,13.083C16.866,31.684,10.984,25.857,10.984,18.6z"/>
+ <path fill="#FFFF40" d="M11.005,18.6c0-7.189,5.815-13.062,13.062-13.062c7.189,0,13.062,5.814,13.062,13.062
+ c0,7.189-5.812,13.061-13.062,13.061C16.878,31.661,11.005,25.848,11.005,18.6z"/>
+ <path fill="#FFFF41" d="M11.027,18.6c0-7.178,5.805-13.041,13.041-13.041c7.178,0,13.042,5.805,13.042,13.041
+ c0,7.177-5.805,13.041-13.042,13.041C16.889,31.641,11.027,25.835,11.027,18.6z"/>
+ <path fill="#FFFF42" d="M11.048,18.6c0-7.167,5.796-13.02,13.02-13.02c7.167,0,13.02,5.796,13.02,13.02
+ c0,7.167-5.797,13.02-13.02,13.02C16.901,31.62,11.048,25.823,11.048,18.6z"/>
+ <path fill="#FFFF43" d="M11.07,18.6c0-7.156,5.787-12.999,12.998-12.999c7.157,0,13,5.787,13,12.999c0,7.155-5.787,13-13,13
+ C16.913,31.6,11.07,25.812,11.07,18.6z"/>
+ <path fill="#FFFF44" d="M11.091,18.6c0-7.145,5.778-12.978,12.978-12.978c7.146,0,12.978,5.778,12.978,12.978
+ c0,7.144-5.777,12.978-12.978,12.978C16.925,31.578,11.091,25.8,11.091,18.6z"/>
+ <path fill="#FFFF45" d="M11.113,18.6c0-7.133,5.769-12.957,12.957-12.957c7.133,0,12.958,5.769,12.958,12.957
+ c0,7.132-5.77,12.957-12.958,12.957C16.937,31.557,11.113,25.788,11.113,18.6z"/>
+ <path fill="#FFFF46" d="M11.135,18.6c0-7.123,5.759-12.936,12.936-12.936c7.123,0,12.937,5.759,12.937,12.936
+ c0,7.123-5.76,12.936-12.937,12.936C16.949,31.536,11.135,25.775,11.135,18.6z"/>
+ <path fill="#FFFF47" d="M11.157,18.6c0-7.111,5.75-12.915,12.915-12.915c7.112,0,12.915,5.75,12.915,12.915
+ c0,7.111-5.75,12.916-12.915,12.916C16.96,31.516,11.157,25.766,11.157,18.6z"/>
+ <path fill="#FFFF48" d="M11.178,18.6c0-7.1,5.741-12.894,12.895-12.894c7.101,0,12.894,5.741,12.894,12.894
+ c0,7.099-5.74,12.894-12.894,12.894C16.972,31.494,11.178,25.752,11.178,18.6z"/>
+ <path fill="#FFFF49" d="M11.199,18.6c0-7.089,5.732-12.873,12.874-12.873c7.089,0,12.873,5.731,12.873,12.873
+ c0,7.087-5.73,12.873-12.873,12.873C16.984,31.473,11.199,25.74,11.199,18.6z"/>
+ <path fill="#FFFF4A" d="M11.221,18.6c0-7.078,5.723-12.852,12.852-12.852c7.078,0,12.853,5.722,12.853,12.852
+ c0,7.078-5.725,12.852-12.854,12.852C16.995,31.452,11.221,25.729,11.221,18.6z"/>
+ <path fill="#FFFF4B" d="M11.242,18.6c0-7.067,5.714-12.832,12.832-12.832c7.067,0,12.833,5.713,12.833,12.832
+ c0,7.066-5.715,12.832-12.833,12.832C17.007,31.432,11.242,25.717,11.242,18.6z"/>
+ <path fill="#FFFF4C" d="M11.264,18.6c0-7.056,5.705-12.811,12.811-12.811c7.056,0,12.812,5.704,12.812,12.811
+ c0,7.054-5.705,12.81-12.812,12.81C17.019,31.41,11.264,25.705,11.264,18.6z"/>
+ <path fill="#FFFF4D" d="M11.286,18.6c0-7.044,5.695-12.79,12.79-12.79c7.045,0,12.79,5.695,12.79,12.79
+ c0,7.044-5.693,12.791-12.79,12.791C17.031,31.391,11.286,25.693,11.286,18.6z"/>
+ <path fill="#FFFF4E" d="M11.307,18.6c0-7.033,5.686-12.769,12.769-12.769c7.034,0,12.77,5.686,12.77,12.769
+ c0,7.034-5.688,12.768-12.77,12.768C17.043,31.368,11.307,25.684,11.307,18.6z"/>
+ <path fill="#FFFF4F" d="M11.329,18.6c0-7.022,5.677-12.748,12.748-12.748c7.023,0,12.748,5.677,12.748,12.748
+ c0,7.022-5.678,12.748-12.748,12.748C17.054,31.348,11.329,25.67,11.329,18.6z"/>
+ <path fill="#FFFF50" d="M11.351,18.6c0-7.011,5.667-12.727,12.727-12.727c7.012,0,12.727,5.668,12.727,12.727
+ c0,7.011-5.668,12.727-12.727,12.727C17.066,31.327,11.351,25.658,11.351,18.6z"/>
+ <path fill="#FFFF51" d="M11.372,18.6c0-7,5.659-12.706,12.706-12.706c7,0,12.705,5.659,12.705,12.706
+ c0,7-5.658,12.707-12.705,12.707C17.078,31.307,11.372,25.646,11.372,18.6z"/>
+ <path fill="#FFFF52" d="M11.394,18.6c0-6.989,5.65-12.685,12.685-12.685c6.987,0,12.685,5.65,12.685,12.685
+ c0,6.989-5.648,12.685-12.685,12.685C17.09,31.285,11.394,25.635,11.394,18.6z"/>
+ <path fill="#FFFF53" d="M11.415,18.6c0-6.978,5.641-12.664,12.664-12.664c6.978,0,12.665,5.641,12.665,12.664
+ c0,6.978-5.641,12.664-12.665,12.664C17.102,31.264,11.415,25.623,11.415,18.6z"/>
+ <path fill="#FFFF54" d="M11.437,18.6c0-6.967,5.631-12.643,12.643-12.643c6.967,0,12.645,5.631,12.645,12.643
+ c0,6.966-5.633,12.643-12.645,12.643C17.113,31.243,11.437,25.611,11.437,18.6z"/>
+ <path fill="#FFFF55" d="M11.459,18.6c0-6.956,5.622-12.623,12.622-12.623c6.956,0,12.622,5.623,12.622,12.623
+ c0,6.957-5.621,12.623-12.622,12.623C17.125,31.223,11.459,25.6,11.459,18.6z"/>
+ <path fill="#FFFF56" d="M11.48,18.6c0-6.944,5.613-12.602,12.602-12.602c6.945,0,12.602,5.613,12.602,12.602
+ c0,6.944-5.613,12.601-12.602,12.601C17.137,31.201,11.48,25.588,11.48,18.6z"/>
+ <path fill="#FFFF57" d="M11.502,18.6c0-6.934,5.604-12.581,12.581-12.581c6.933,0,12.581,5.604,12.581,12.581
+ c0,6.933-5.604,12.582-12.581,12.582C17.149,31.182,11.502,25.576,11.502,18.6z"/>
+ <path fill="#FFFF58" d="M11.523,18.6c0-6.922,5.595-12.56,12.56-12.56c6.923,0,12.56,5.595,12.56,12.56
+ c0,6.921-5.594,12.559-12.56,12.559C17.16,31.159,11.523,25.564,11.523,18.6z"/>
+ <path fill="#FFFF59" d="M11.545,18.6c0-6.911,5.585-12.539,12.539-12.539c6.912,0,12.539,5.585,12.539,12.539
+ c0,6.911-5.586,12.539-12.539,12.539C17.172,31.139,11.545,25.553,11.545,18.6z"/>
+ <path fill="#FFFF5A" d="M11.566,18.6c0-6.9,5.577-12.518,12.518-12.518c6.9,0,12.518,5.576,12.518,12.518
+ c0,6.9-5.576,12.517-12.518,12.517C17.184,31.117,11.566,25.541,11.566,18.6z"/>
+ <path fill="#FFFF5B" d="M11.588,18.6c0-6.889,5.567-12.497,12.497-12.497c6.89,0,12.497,5.567,12.497,12.497
+ c0,6.889-5.566,12.498-12.497,12.498C17.195,31.098,11.588,25.529,11.588,18.6z"/>
+ <path fill="#FFFF5C" d="M11.609,18.6c0-6.878,5.558-12.476,12.476-12.476c6.878,0,12.476,5.559,12.476,12.476
+ c0,6.876-5.559,12.476-12.476,12.476C17.208,31.076,11.609,25.518,11.609,18.6z"/>
+ <path fill="#FFFF5D" d="M11.631,18.6c0-6.867,5.549-12.455,12.455-12.455c6.867,0,12.455,5.549,12.455,12.455
+ c0,6.867-5.549,12.455-12.455,12.455C17.219,31.055,11.631,25.506,11.631,18.6z"/>
+ <path fill="#FFFF5E" d="M11.652,18.6c0-6.855,5.54-12.434,12.434-12.434c6.855,0,12.434,5.54,12.434,12.434
+ c0,6.855-5.539,12.434-12.434,12.434C17.231,31.034,11.652,25.494,11.652,18.6z"/>
+ <path fill="#FFFF5F" d="M11.674,18.6c0-6.844,5.531-12.413,12.413-12.413c6.845,0,12.415,5.531,12.415,12.413
+ c0,6.843-5.531,12.414-12.415,12.414C17.243,31.014,11.674,25.482,11.674,18.6z"/>
+ <path fill="#FFFF60" d="M11.695,18.6c0-6.833,5.521-12.392,12.393-12.392c6.834,0,12.393,5.521,12.393,12.392
+ c0,6.833-5.521,12.392-12.393,12.392C17.254,30.992,11.695,25.471,11.695,18.6z"/>
+ <path fill="#FFFF61" d="M11.717,18.6c0-6.822,5.513-12.371,12.372-12.371c6.823,0,12.372,5.512,12.372,12.371
+ c0,6.822-5.514,12.371-12.372,12.371C17.266,30.971,11.717,25.459,11.717,18.6z"/>
+ <path fill="#FFFF62" d="M11.739,18.6c0-6.811,5.503-12.351,12.35-12.351c6.812,0,12.351,5.503,12.351,12.351
+ c0,6.811-5.504,12.35-12.351,12.35C17.278,30.95,11.739,25.447,11.739,18.6z"/>
+ <path fill="#FFFF63" d="M11.76,18.6c0-6.8,5.494-12.33,12.33-12.33c6.799,0,12.33,5.494,12.33,12.33
+ c0,6.798-5.494,12.33-12.33,12.33C17.29,30.93,11.76,25.436,11.76,18.6z"/>
+ <path fill="#FFFF64" d="M11.782,18.6c0-6.789,5.485-12.309,12.309-12.309c6.79,0,12.31,5.485,12.31,12.309
+ c0,6.789-5.484,12.308-12.31,12.308C17.301,30.908,11.782,25.423,11.782,18.6z"/>
+ <path fill="#FFFF65" d="M11.803,18.6c0-6.778,5.476-12.288,12.288-12.288c6.778,0,12.288,5.476,12.288,12.288
+ c0,6.778-5.477,12.289-12.288,12.289C17.313,30.889,11.803,25.411,11.803,18.6z"/>
+ <path fill="#FFFF66" d="M11.825,18.6c0-6.767,5.467-12.267,12.267-12.267c6.768,0,12.268,5.466,12.268,12.267
+ c0,6.766-5.467,12.266-12.268,12.266C17.325,30.866,11.825,25.398,11.825,18.6z"/>
+ <path fill="#FFFF67" d="M11.847,18.6c0-6.756,5.457-12.246,12.246-12.246c6.757,0,12.247,5.458,12.247,12.246
+ c0,6.755-5.459,12.246-12.247,12.246C17.337,30.846,11.847,25.389,11.847,18.6z"/>
+ <path fill="#FFFF68" d="M11.868,18.6c0-6.745,5.449-12.225,12.225-12.225c6.745,0,12.226,5.448,12.226,12.225
+ c0,6.746-5.449,12.224-12.226,12.224C17.348,30.824,11.868,25.376,11.868,18.6z"/>
+ <path fill="#FFFF69" d="M11.89,18.6c0-6.733,5.439-12.204,12.204-12.204c6.732,0,12.205,5.439,12.205,12.204
+ c0,6.733-5.439,12.205-12.205,12.205C17.36,30.805,11.89,25.364,11.89,18.6z"/>
+ <path fill="#FFFF6A" d="M11.911,18.6c0-6.723,5.43-12.183,12.183-12.183c6.723,0,12.184,5.43,12.184,12.183
+ c0,6.722-5.43,12.183-12.184,12.183C17.372,30.783,11.911,25.354,11.911,18.6z"/>
+ <path fill="#FFFF6B" d="M11.933,18.6c0-6.711,5.421-12.162,12.162-12.162c6.712,0,12.163,5.421,12.163,12.162
+ c0,6.71-5.422,12.162-12.163,12.162C17.384,30.762,11.933,25.341,11.933,18.6z"/>
+ <path fill="#FFFF6C" d="M11.954,18.6c0-6.7,5.412-12.141,12.142-12.141c6.701,0,12.141,5.412,12.141,12.141
+ c0,6.7-5.412,12.141-12.141,12.141C17.396,30.741,11.954,25.329,11.954,18.6z"/>
+ <path fill="#FFFF6D" d="M11.976,18.6c0-6.689,5.402-12.121,12.12-12.121c6.688,0,12.121,5.403,12.121,12.121
+ c0,6.689-5.402,12.121-12.121,12.121C17.407,30.721,11.976,25.316,11.976,18.6z"/>
+ <path fill="#FFFF6E" d="M11.998,18.6c0-6.678,5.393-12.099,12.099-12.099c6.679,0,12.099,5.393,12.099,12.099
+ c0,6.677-5.393,12.099-12.099,12.099C17.419,30.699,11.998,25.307,11.998,18.6z"/>
+ <path fill="#FFFF6F" d="M12.019,18.6c0-6.667,5.384-12.079,12.079-12.079c6.667,0,12.078,5.384,12.078,12.079
+ c0,6.667-5.383,12.078-12.078,12.078C17.431,30.678,12.019,25.294,12.019,18.6z"/>
+ <path fill="#FFFF70" d="M12.041,18.6c0-6.656,5.375-12.058,12.058-12.058c6.655,0,12.057,5.375,12.057,12.058
+ c0,6.655-5.375,12.057-12.057,12.057C17.442,30.657,12.041,25.282,12.041,18.6z"/>
+ <path fill="#FFFF71" d="M12.062,18.6c0-6.645,5.366-12.037,12.037-12.037c6.645,0,12.036,5.366,12.036,12.037
+ c0,6.644-5.365,12.037-12.036,12.037C17.454,30.637,12.062,25.271,12.062,18.6z"/>
+ <path fill="#FFFF72" d="M12.084,18.6c0-6.633,5.357-12.016,12.016-12.016c6.632,0,12.015,5.357,12.015,12.016
+ c0,6.632-5.355,12.015-12.015,12.015C17.466,30.615,12.084,25.259,12.084,18.6z"/>
+ <path fill="#FFFF73" d="M12.105,18.6c0-6.622,5.348-11.995,11.995-11.995c6.623,0,11.996,5.348,11.996,11.995
+ c0,6.623-5.35,11.996-11.996,11.996C17.478,30.596,12.105,25.247,12.105,18.6z"/>
+ <path fill="#FFFF74" d="M12.127,18.6c0-6.611,5.338-11.974,11.974-11.974c6.612,0,11.973,5.339,11.973,11.974
+ c0,6.611-5.338,11.973-11.973,11.973C17.49,30.573,12.127,25.234,12.127,18.6z"/>
+ <path fill="#FFFF75" d="M12.149,18.6c0-6.6,5.329-11.953,11.953-11.953c6.599,0,11.953,5.33,11.953,11.953
+ c0,6.6-5.328,11.953-11.953,11.953C17.502,30.553,12.149,25.225,12.149,18.6z"/>
+ <path fill="#FFFF76" d="M12.17,18.6c0-6.589,5.32-11.932,11.932-11.932c6.589,0,11.931,5.32,11.931,11.932
+ c0,6.587-5.318,11.932-11.931,11.932C17.513,30.532,12.17,25.212,12.17,18.6z"/>
+ <path fill="#FFFF77" d="M12.192,18.6c0-6.578,5.311-11.911,11.911-11.911c6.579,0,11.913,5.311,11.913,11.911
+ c0,6.578-5.312,11.911-11.913,11.911C17.525,30.511,12.192,25.2,12.192,18.6z"/>
+ <path fill="#FFFF78" d="M12.213,18.6c0-6.567,5.302-11.89,11.891-11.89c6.568,0,11.89,5.302,11.89,11.89
+ c0,6.567-5.303,11.89-11.89,11.89C17.537,30.49,12.213,25.188,12.213,18.6z"/>
+ <path fill="#FFFF79" d="M12.235,18.6c0-6.556,5.292-11.87,11.869-11.87c6.556,0,11.869,5.293,11.869,11.87
+ c0,6.554-5.293,11.869-11.869,11.869C17.548,30.469,12.235,25.176,12.235,18.6z"/>
+ <path fill="#FFFF7A" d="M12.256,18.6c0-6.544,5.284-11.849,11.848-11.849c6.544,0,11.847,5.284,11.847,11.849
+ c0,6.544-5.281,11.848-11.847,11.848C17.56,30.448,12.256,25.164,12.256,18.6z"/>
+ <path fill="#FFFF7B" d="M12.278,18.6c0-6.533,5.274-11.828,11.828-11.828c6.533,0,11.828,5.274,11.828,11.828
+ c0,6.533-5.275,11.828-11.828,11.828C17.572,30.428,12.278,25.152,12.278,18.6z"/>
+ <path fill="#FFFF7C" d="M12.299,18.6c0-6.522,5.266-11.807,11.807-11.807c6.523,0,11.808,5.265,11.808,11.807
+ c0,6.522-5.268,11.806-11.808,11.806C17.584,30.406,12.299,25.141,12.299,18.6z"/>
+ <path fill="#FFFF7D" d="M12.321,18.6c0-6.511,5.256-11.786,11.786-11.786c6.51,0,11.786,5.256,11.786,11.786
+ c0,6.511-5.256,11.786-11.786,11.786C17.595,30.386,12.321,25.129,12.321,18.6z"/>
+ <path fill="#FFFF7E" d="M12.342,18.6c0-6.5,5.247-11.765,11.765-11.765c6.5,0,11.764,5.247,11.764,11.765
+ c0,6.5-5.246,11.764-11.764,11.764C17.608,30.364,12.342,25.117,12.342,18.6z"/>
+ <path fill="#FFFF7F" d="M12.364,18.6c0-6.489,5.238-11.744,11.744-11.744c6.49,0,11.744,5.238,11.744,11.744
+ c0,6.489-5.238,11.744-11.744,11.744C17.619,30.344,12.364,25.105,12.364,18.6z"/>
+ <path fill="#FFFF80" d="M12.386,18.6c0-6.478,5.229-11.723,11.723-11.723c6.479,0,11.723,5.229,11.723,11.723
+ c0,6.477-5.229,11.722-11.723,11.722C17.631,30.322,12.386,25.094,12.386,18.6z"/>
+ <path fill="#FFFF81" d="M12.407,18.6c0-6.467,5.22-11.702,11.702-11.702c6.465,0,11.702,5.22,11.702,11.702
+ c0,6.466-5.219,11.702-11.702,11.702C17.643,30.302,12.407,25.082,12.407,18.6z"/>
+ <path fill="#FFFF82" d="M12.429,18.6c0-6.456,5.21-11.681,11.681-11.681c6.455,0,11.681,5.21,11.681,11.681
+ c0,6.457-5.209,11.681-11.681,11.681C17.654,30.281,12.429,25.07,12.429,18.6z"/>
+ <path fill="#FFFF83" d="M12.45,18.6c0-6.444,5.202-11.66,11.661-11.66c6.444,0,11.661,5.201,11.661,11.66
+ c0,6.444-5.203,11.66-11.661,11.66C17.666,30.26,12.45,25.059,12.45,18.6z"/>
+ <path fill="#FFFF84" d="M12.472,18.6c0-6.434,5.192-11.639,11.639-11.639c6.434,0,11.639,5.192,11.639,11.639
+ c0,6.433-5.191,11.639-11.639,11.639C17.678,30.239,12.472,25.047,12.472,18.6z"/>
+ <path fill="#FFFF85" d="M12.493,18.6c0-6.422,5.183-11.619,11.619-11.619c6.421,0,11.619,5.183,11.619,11.619
+ c0,6.421-5.184,11.618-11.619,11.618C17.69,30.218,12.493,25.035,12.493,18.6z"/>
+ <path fill="#FFFF86" d="M12.515,18.6c0-6.411,5.174-11.598,11.598-11.598c6.411,0,11.598,5.174,11.598,11.598
+ c0,6.411-5.174,11.597-11.598,11.597C17.701,30.197,12.515,25.023,12.515,18.6z"/>
+ <path fill="#FFFF87" d="M12.537,18.6c0-6.4,5.165-11.577,11.577-11.577c6.4,0,11.578,5.165,11.578,11.577
+ c0,6.4-5.166,11.577-11.578,11.577C17.713,30.177,12.537,25.012,12.537,18.6z"/>
+ <path fill="#FFFF88" d="M12.558,18.6c0-6.389,5.156-11.556,11.556-11.556c6.39,0,11.556,5.155,11.556,11.556
+ c0,6.388-5.156,11.554-11.556,11.554C17.725,30.154,12.558,25,12.558,18.6z"/>
+ <path fill="#FFFF89" d="M12.58,18.6c0-6.378,5.146-11.535,11.535-11.535c6.377,0,11.534,5.146,11.534,11.535
+ c0,6.376-5.145,11.535-11.534,11.535C17.737,30.135,12.58,24.988,12.58,18.6z"/>
+ <path fill="#FFFF8A" d="M12.601,18.6c0-6.367,5.138-11.514,11.514-11.514c6.368,0,11.514,5.137,11.514,11.514
+ c0,6.367-5.139,11.513-11.514,11.513C17.749,30.113,12.601,24.977,12.601,18.6z"/>
+ <path fill="#FFFF8B" d="M12.623,18.6c0-6.356,5.128-11.493,11.493-11.493c6.355,0,11.494,5.128,11.494,11.493
+ c0,6.355-5.129,11.493-11.494,11.493C17.76,30.093,12.623,24.965,12.623,18.6z"/>
+ <path fill="#FFFF8C" d="M12.645,18.6c0-6.345,5.119-11.472,11.472-11.472c6.344,0,11.473,5.119,11.473,11.472
+ c0,6.343-5.119,11.47-11.473,11.47C17.772,30.07,12.645,24.953,12.645,18.6z"/>
+ <path fill="#FFFF8D" d="M12.666,18.6c0-6.333,5.11-11.451,11.451-11.451c6.333,0,11.452,5.11,11.452,11.451
+ c0,6.333-5.109,11.451-11.452,11.451C17.784,30.051,12.666,24.941,12.666,18.6z"/>
+ <path fill="#FFFF8E" d="M12.688,18.6c0-6.322,5.101-11.43,11.43-11.43c6.322,0,11.431,5.101,11.431,11.43
+ c0,6.322-5.102,11.429-11.431,11.429C17.796,30.029,12.688,24.93,12.688,18.6z"/>
+ <path fill="#FFFF8F" d="M12.709,18.6c0-6.312,5.092-11.409,11.41-11.409c6.311,0,11.409,5.091,11.409,11.409
+ c0,6.311-5.092,11.409-11.409,11.409C17.807,30.009,12.709,24.917,12.709,18.6z"/>
+ <path fill="#FFFF90" d="M12.731,18.6c0-6.3,5.083-11.388,11.389-11.388c6.3,0,11.388,5.082,11.388,11.388
+ c0,6.298-5.082,11.388-11.388,11.388C17.819,29.988,12.731,24.904,12.731,18.6z"/>
+ <path fill="#FFFF91" d="M12.753,18.6c0-6.289,5.073-11.368,11.367-11.368c6.288,0,11.366,5.073,11.366,11.368
+ c0,6.289-5.072,11.367-11.366,11.367C17.831,29.967,12.753,24.895,12.753,18.6z"/>
+ <path fill="#FFFF92" d="M12.774,18.6c0-6.278,5.064-11.347,11.347-11.347c6.277,0,11.346,5.064,11.346,11.347
+ c0,6.278-5.062,11.345-11.346,11.345C17.842,29.945,12.774,24.882,12.774,18.6z"/>
+ <path fill="#FFFF93" d="M12.796,18.6c0-6.267,5.055-11.326,11.326-11.326c6.267,0,11.325,5.055,11.325,11.326
+ c0,6.266-5.055,11.326-11.325,11.326C17.854,29.926,12.796,24.87,12.796,18.6z"/>
+ <path fill="#FFFF94" d="M12.817,18.6c0-6.256,5.046-11.305,11.305-11.305c6.257,0,11.306,5.046,11.306,11.305
+ c0,6.255-5.047,11.304-11.306,11.304C17.866,29.904,12.817,24.857,12.817,18.6z"/>
+ <path fill="#FFFF95" d="M12.838,18.6c0-6.245,5.037-11.284,11.284-11.284c6.243,0,11.282,5.037,11.282,11.284
+ c0,6.246-5.035,11.284-11.282,11.284C17.878,29.884,12.838,24.848,12.838,18.6z"/>
+ <path fill="#FFFF96" d="M12.86,18.6c0-6.233,5.028-11.263,11.263-11.263c6.232,0,11.262,5.028,11.262,11.263
+ c0,6.233-5.027,11.261-11.262,11.261C17.89,29.861,12.86,24.835,12.86,18.6z"/>
+ <path fill="#FFFF97" d="M12.882,18.6c0-6.223,5.018-11.242,11.242-11.242c6.222,0,11.241,5.019,11.241,11.242
+ c0,6.222-5.018,11.242-11.241,11.242C17.901,29.842,12.882,24.823,12.882,18.6z"/>
+ <path fill="#FFFF98" d="M12.903,18.6c0-6.211,5.009-11.221,11.221-11.221S35.346,12.388,35.346,18.6
+ c0,6.21-5.01,11.22-11.222,11.22C17.913,29.82,12.903,24.812,12.903,18.6z"/>
+ <path fill="#FFFF99" d="M12.925,18.6c0-6.2,5-11.2,11.2-11.2c6.199,0,11.199,5,11.199,11.2c0,6.2-5,11.2-11.199,11.2
+ C17.925,29.8,12.925,24.8,12.925,18.6z"/>
+ </g>
+
+ <linearGradient id="XMLID_67_" gradientUnits="userSpaceOnUse" x1="396.2324" y1="753.8262" x2="396.2324" y2="763.584" gradientTransform="matrix(1 0 0 1 -372 -747)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#FFFF99"/>
+ </linearGradient>
+ <path fill="url(#XMLID_67_)" d="M15.358,11.705c0-2.701,3.961-4.879,8.875-4.879c4.912,0,8.875,2.178,8.875,4.879
+ s-3.963,4.879-8.875,4.879C19.32,16.583,15.358,14.405,15.358,11.705z"/>
+ <path fill="#666666" d="M23.125,41.3v0.9c0,0.899,0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6v-0.9h-3.299H23.125z"/>
+
+ <linearGradient id="XMLID_68_" gradientUnits="userSpaceOnUse" x1="396.625" y1="784.8896" x2="396.625" y2="788.9111" gradientTransform="matrix(1 0 0 1 -372 -747)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#000000"/>
+ </linearGradient>
+ <path fill="url(#XMLID_68_)" d="M28.225,37.9l-7.6,0.8c-0.9,0.1-1.5,0.899-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.801
+ c0.9-0.102,1.5-0.899,1.4-1.802C29.926,38.4,29.125,37.8,28.225,37.9z"/>
+
+ <linearGradient id="XMLID_69_" gradientUnits="userSpaceOnUse" x1="396.625" y1="781.6895" x2="396.625" y2="785.7109" gradientTransform="matrix(1 0 0 1 -372 -747)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#000000"/>
+ </linearGradient>
+ <path fill="url(#XMLID_69_)" d="M28.225,34.7l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8
+ c0.9-0.101,1.5-0.9,1.4-1.801C29.926,35.2,29.125,34.6,28.225,34.7z"/>
+
+ <linearGradient id="XMLID_70_" gradientUnits="userSpaceOnUse" x1="396.625" y1="778.5889" x2="396.625" y2="782.6104" gradientTransform="matrix(1 0 0 1 -372 -747)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#000000"/>
+ </linearGradient>
+ <path fill="url(#XMLID_70_)" d="M28.225,31.6l-7.6,0.801c-0.9,0.1-1.5,0.897-1.4,1.8c0.1,0.899,0.9,1.5,1.8,1.399l7.6-0.802
+ c0.9-0.1,1.5-0.897,1.4-1.8S29.125,31.5,28.225,31.6z"/>
+ <path fill="none" stroke="#000000" stroke-width="1.0944" d="M22.325,28.3l-3.5-10.7c0,0,6.601,3.9,10.5,0"/>
+</g>
+<g id="crop_x0020_marks">
+ <path fill="none" d="M47.975,48h-48V0h48V48z"/>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg
new file mode 100644
index 0000000..8eca45f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Up" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g>
+ <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="7.5901" stroke-linejoin="round" d="M41.104,25.661
+ c0.301,0,0.301-0.3,0.198-0.5l-16.899-16.6c-0.5-0.5-0.7-0.4-1,0l-16.7,16.6c-0.1,0.103-0.1,0.399,0.1,0.399h10v13.601
+ c0,0.301,0.2,0.5,0.4,0.5h13.299c0.398,0,0.5-0.199,0.5-0.601v-13.5L41.104,25.661z"/>
+ <g>
+ <path fill="#0033CC" d="M41.104,25.661c0.301,0,0.301-0.3,0.198-0.5l-16.899-16.6c-0.5-0.5-0.7-0.4-1,0l-16.7,16.6
+ c-0.1,0.103-0.1,0.399,0.1,0.399h10v13.601c0,0.301,0.2,0.5,0.4,0.5h13.299c0.398,0,0.5-0.199,0.5-0.601v-13.5L41.104,25.661z"/>
+ <path fill="#0134CC" d="M41.075,25.65c0.3,0,0.3-0.299,0.198-0.498L24.402,8.577c-0.499-0.499-0.699-0.4-0.998,0L6.73,25.152
+ c-0.1,0.101-0.1,0.397,0.099,0.397h9.984v13.581c0,0.303,0.2,0.499,0.4,0.499h13.279c0.398,0,0.499-0.196,0.499-0.601V25.55
+ L41.075,25.65z"/>
+ <path fill="#0235CD" d="M41.049,25.643c0.301,0,0.301-0.3,0.199-0.498L24.401,8.591c-0.498-0.498-0.697-0.399-0.996,0
+ L6.757,25.145c-0.1,0.101-0.1,0.397,0.099,0.397h9.969v13.562c0,0.301,0.199,0.5,0.399,0.5H30.48c0.397,0,0.498-0.199,0.498-0.601
+ V25.542L41.049,25.643z"/>
+ <path fill="#0336CD" d="M41.021,25.632c0.299,0,0.299-0.299,0.199-0.498L24.4,8.604c-0.498-0.498-0.696-0.399-0.995,0
+ L6.783,25.134c-0.099,0.101-0.099,0.398,0.099,0.398h9.953v13.543c0,0.299,0.199,0.495,0.398,0.495h13.24
+ c0.396,0,0.495-0.196,0.495-0.596v-13.44L41.021,25.632z"/>
+ <path fill="#0437CE" d="M40.995,25.622c0.299,0,0.299-0.299,0.198-0.496L24.4,8.62c-0.497-0.497-0.696-0.398-0.994,0L6.811,25.126
+ c-0.099,0.101-0.099,0.396,0.099,0.396h9.938v13.523c0,0.299,0.199,0.496,0.397,0.496h13.217c0.396,0,0.496-0.197,0.496-0.598
+ v-13.42L40.995,25.622z"/>
+ <path fill="#0538CE" d="M40.969,25.614c0.299,0,0.299-0.3,0.198-0.498L24.399,8.634c-0.496-0.496-0.694-0.397-0.992,0
+ L6.837,25.116c-0.099,0.102-0.099,0.397,0.099,0.397h9.922v13.504c0,0.299,0.199,0.496,0.398,0.496h13.195
+ c0.396,0,0.494-0.197,0.494-0.597V25.514L40.969,25.614z"/>
+ <path fill="#0639CF" d="M40.941,25.604c0.297,0,0.297-0.297,0.197-0.496L24.399,8.649c-0.496-0.496-0.693-0.397-0.99,0
+ L6.864,25.107c-0.099,0.101-0.099,0.396,0.099,0.396h9.906v13.483c0,0.3,0.199,0.496,0.397,0.496h13.173
+ c0.396,0,0.496-0.196,0.496-0.596V25.505L40.941,25.604z"/>
+ <path fill="#073ACF" d="M40.915,25.594c0.298,0,0.298-0.298,0.196-0.494L24.398,8.664c-0.495-0.495-0.692-0.397-0.989,0
+ L6.891,25.1c-0.099,0.101-0.099,0.396,0.098,0.396h9.892V38.96c0,0.298,0.198,0.494,0.396,0.494h13.155
+ c0.396,0,0.494-0.196,0.494-0.593V25.495L40.915,25.594z"/>
+ <path fill="#083BD0" d="M40.891,25.585c0.297,0,0.297-0.297,0.196-0.496l-16.69-16.41c-0.494-0.494-0.691-0.396-0.987,0
+ L6.918,25.089c-0.099,0.101-0.099,0.396,0.098,0.396h9.875V38.93c0,0.299,0.198,0.495,0.396,0.495h13.134
+ c0.396,0,0.494-0.196,0.494-0.595V25.486L40.891,25.585z"/>
+ <path fill="#093CD0" d="M40.859,25.575c0.3,0,0.3-0.296,0.199-0.494L24.397,8.692c-0.493-0.494-0.69-0.396-0.985,0L6.945,25.081
+ c-0.098,0.101-0.098,0.396,0.098,0.396h9.86v13.428c0,0.298,0.197,0.494,0.395,0.494h13.113c0.396,0,0.491-0.196,0.491-0.594
+ V25.477L40.859,25.575z"/>
+ <path fill="#0A3DD1" d="M40.835,25.564c0.296,0,0.296-0.295,0.197-0.491L24.396,8.707c-0.492-0.493-0.689-0.395-0.984,0
+ L6.972,25.073c-0.098,0.098-0.098,0.395,0.098,0.395h9.844v13.408c0,0.295,0.197,0.492,0.394,0.492h13.09
+ c0.396,0,0.492-0.197,0.492-0.593V25.465L40.835,25.564z"/>
+ <path fill="#0B3ED1" d="M40.811,25.557c0.295,0,0.295-0.296,0.195-0.492L24.396,8.723c-0.492-0.493-0.688-0.394-0.983,0
+ L6.999,25.062c-0.098,0.101-0.098,0.396,0.098,0.396h9.829v13.388c0,0.297,0.197,0.491,0.394,0.491h13.073
+ c0.395,0,0.489-0.194,0.489-0.59V25.458L40.811,25.557z"/>
+ <path fill="#0C3FD2" d="M40.782,25.546c0.295,0,0.295-0.295,0.194-0.491L24.395,8.736c-0.491-0.492-0.687-0.394-0.981,0
+ L7.026,25.055c-0.098,0.1-0.098,0.396,0.098,0.396h9.813v13.368c0,0.296,0.197,0.49,0.393,0.49h13.051
+ c0.395,0,0.49-0.194,0.49-0.588V25.448L40.782,25.546z"/>
+ <path fill="#0D40D2" d="M40.755,25.536c0.295,0,0.295-0.293,0.196-0.49L24.394,8.75c-0.489-0.491-0.685-0.393-0.979,0
+ L7.053,25.046c-0.098,0.099-0.098,0.394,0.098,0.394h9.797V38.79c0,0.297,0.196,0.492,0.392,0.492h13.03
+ c0.394,0,0.489-0.195,0.489-0.591V25.438L40.755,25.536z"/>
+ <path fill="#0E41D3" d="M40.729,25.527c0.293,0,0.293-0.295,0.195-0.489L24.394,8.766c-0.489-0.489-0.685-0.392-0.978,0
+ L7.08,25.038c-0.097,0.099-0.097,0.394,0.098,0.394h9.782V38.76c0,0.295,0.196,0.489,0.392,0.489h13.007
+ c0.394,0,0.488-0.194,0.488-0.588V25.43L40.729,25.527z"/>
+ <path fill="#0F42D3" d="M40.702,25.518c0.294,0,0.294-0.293,0.194-0.488L24.393,8.781c-0.488-0.489-0.683-0.392-0.976,0
+ L7.107,25.027c-0.097,0.101-0.097,0.394,0.098,0.394h9.766v13.312c0,0.295,0.195,0.49,0.391,0.49h12.99
+ c0.393,0,0.487-0.195,0.487-0.588V25.419L40.702,25.518z"/>
+ <path fill="#1043D4" d="M40.676,25.508c0.293,0,0.293-0.294,0.195-0.488L24.392,8.794c-0.487-0.488-0.682-0.392-0.975,0
+ L7.134,25.02c-0.097,0.101-0.097,0.394,0.097,0.394h9.75v13.293c0,0.293,0.196,0.485,0.391,0.485H30.34
+ c0.393,0,0.487-0.192,0.487-0.586V25.411L40.676,25.508z"/>
+ <path fill="#1144D4" d="M40.646,25.497c0.293,0,0.293-0.293,0.194-0.487l-16.45-16.2c-0.487-0.488-0.681-0.391-0.973,0L7.16,25.01
+ C7.063,25.107,7.063,25.4,7.257,25.4h9.735v13.271c0,0.294,0.195,0.487,0.39,0.487H30.33c0.389,0,0.484-0.193,0.484-0.586V25.4
+ L40.646,25.497z"/>
+ <path fill="#1245D5" d="M40.622,25.489c0.293,0,0.293-0.294,0.194-0.488L24.391,8.824c-0.486-0.487-0.68-0.39-0.972,0
+ L7.188,25.001c-0.097,0.099-0.097,0.392,0.096,0.392h9.72v13.254c0,0.293,0.195,0.486,0.389,0.486h12.925
+ c0.391,0,0.486-0.193,0.486-0.585V25.393L40.622,25.489z"/>
+ <path fill="#1346D5" d="M40.598,25.479c0.291,0,0.291-0.291,0.192-0.484L24.391,8.838c-0.485-0.486-0.679-0.39-0.97,0
+ L7.215,24.993c-0.097,0.099-0.097,0.39,0.096,0.39h9.704v13.235c0,0.291,0.195,0.485,0.389,0.485h12.907
+ c0.391,0,0.484-0.194,0.484-0.584V25.382L40.598,25.479z"/>
+ <path fill="#1447D6" d="M40.568,25.471c0.291,0,0.291-0.293,0.193-0.486L24.39,8.853c-0.484-0.485-0.678-0.389-0.968,0
+ L7.242,24.982c-0.097,0.1-0.097,0.391,0.096,0.391h9.688v13.215c0,0.293,0.194,0.486,0.388,0.486H30.3
+ c0.39,0,0.484-0.193,0.484-0.582v-13.12L40.568,25.471z"/>
+ <path fill="#1548D6" d="M40.542,25.46c0.291,0,0.291-0.291,0.192-0.485L24.389,8.868c-0.483-0.485-0.677-0.388-0.966,0
+ L7.269,24.975c-0.097,0.101-0.097,0.392,0.096,0.392h9.673v13.194c0,0.291,0.193,0.483,0.387,0.483h12.864
+ c0.387,0,0.482-0.192,0.482-0.582V25.361L40.542,25.46z"/>
+ <path fill="#1649D7" d="M40.518,25.45c0.291,0,0.291-0.291,0.191-0.483L24.389,8.881c-0.483-0.484-0.676-0.388-0.966,0
+ L7.295,24.966c-0.096,0.099-0.096,0.388,0.096,0.388h9.657v13.181c0,0.291,0.193,0.481,0.387,0.481h12.842
+ c0.388,0,0.48-0.19,0.48-0.582v-13.08L40.518,25.45z"/>
+ <path fill="#174AD7" d="M40.488,25.441c0.289,0,0.289-0.291,0.193-0.483L24.388,8.896c-0.482-0.483-0.675-0.388-0.964,0
+ L7.323,24.956c-0.096,0.099-0.096,0.39,0.096,0.39h9.642v13.155c0,0.291,0.193,0.483,0.386,0.483h12.825
+ c0.386,0,0.479-0.192,0.479-0.58V25.346L40.488,25.441z"/>
+ <path fill="#184BD8" d="M40.463,25.432c0.289,0,0.289-0.289,0.191-0.481L24.387,8.912c-0.481-0.482-0.673-0.387-0.962,0
+ L7.349,24.948c-0.096,0.098-0.096,0.387,0.096,0.387h9.626v13.14c0,0.291,0.193,0.483,0.386,0.483h12.802
+ c0.388,0,0.479-0.192,0.479-0.58V25.335L40.463,25.432z"/>
+ <path fill="#194CD8" d="M40.438,25.421c0.289,0,0.289-0.289,0.19-0.481L24.386,8.926c-0.48-0.481-0.672-0.386-0.96,0L7.376,24.938
+ c-0.096,0.1-0.096,0.389,0.096,0.389h9.61v13.117c0,0.291,0.192,0.482,0.385,0.482h12.782c0.385,0,0.479-0.191,0.479-0.578V25.325
+ L40.438,25.421z"/>
+ <path fill="#1A4DD9" d="M40.409,25.413c0.289,0,0.289-0.289,0.19-0.481L24.386,8.939c-0.48-0.481-0.671-0.385-0.959,0
+ L7.403,24.932c-0.096,0.096-0.096,0.385,0.096,0.385h9.595v13.103c0,0.289,0.192,0.479,0.384,0.479h12.76
+ c0.385,0,0.479-0.19,0.479-0.578V25.316L40.409,25.413z"/>
+ <path fill="#1B4ED9" d="M40.383,25.402c0.288,0,0.288-0.288,0.191-0.479L24.386,8.956c-0.479-0.481-0.67-0.385-0.958,0
+ L7.43,24.921c-0.095,0.099-0.095,0.386,0.096,0.386h9.579v13.082c0,0.288,0.192,0.479,0.384,0.479H30.23
+ c0.383,0,0.479-0.191,0.479-0.576V25.307L40.383,25.402z"/>
+ <path fill="#1C4FDA" d="M40.355,25.395c0.287,0,0.287-0.289,0.188-0.479L24.385,8.97c-0.479-0.48-0.669-0.384-0.956,0
+ L7.457,24.913c-0.096,0.097-0.096,0.385,0.095,0.385h9.563v13.062c0,0.289,0.192,0.479,0.383,0.479h12.72
+ c0.384,0,0.479-0.19,0.479-0.575V25.296L40.355,25.395z"/>
+ <path fill="#1D50DA" d="M40.329,25.383c0.287,0,0.287-0.287,0.19-0.479L24.384,8.983c-0.478-0.479-0.668-0.384-0.955,0
+ L7.484,24.902c-0.095,0.099-0.095,0.386,0.095,0.386h9.548v13.043c0,0.287,0.191,0.479,0.382,0.479h12.699
+ c0.383,0,0.478-0.191,0.478-0.576V25.288L40.329,25.383z"/>
+ <path fill="#1E51DB" d="M40.303,25.374c0.286,0,0.286-0.287,0.19-0.479L24.384,8.999c-0.477-0.479-0.667-0.383-0.953,0
+ L7.511,24.895c-0.095,0.099-0.095,0.385,0.094,0.385h9.533v13.022c0,0.287,0.191,0.479,0.382,0.479h12.678
+ c0.382,0,0.477-0.189,0.477-0.574v-12.93L40.303,25.374z"/>
+ <path fill="#1F52DB" d="M40.275,25.364c0.285,0,0.285-0.287,0.188-0.479L24.383,9.014c-0.476-0.478-0.666-0.383-0.951,0
+ L7.539,24.886c-0.095,0.097-0.095,0.384,0.094,0.384h9.517v13.004c0,0.287,0.191,0.479,0.381,0.479h12.658
+ c0.381,0,0.476-0.19,0.476-0.573V25.27L40.275,25.364z"/>
+ <path fill="#2053DC" d="M40.25,25.354c0.285,0,0.285-0.285,0.188-0.479L24.382,9.027c-0.475-0.477-0.665-0.382-0.95,0
+ L7.565,24.876c-0.095,0.097-0.095,0.383,0.094,0.383h9.501v12.984c0,0.286,0.19,0.479,0.381,0.479h12.637
+ c0.381,0,0.477-0.189,0.477-0.572V25.259L40.25,25.354z"/>
+ <path fill="#2154DC" d="M40.225,25.346c0.283,0,0.283-0.287,0.188-0.478L24.381,9.042c-0.474-0.476-0.664-0.381-0.948,0
+ L7.591,24.868c-0.094,0.096-0.094,0.383,0.095,0.383h9.486v12.965c0,0.287,0.19,0.478,0.38,0.478h12.616
+ c0.38,0,0.475-0.188,0.475-0.569V25.249L40.225,25.346z"/>
+ <path fill="#2255DD" d="M40.195,25.335c0.285,0,0.285-0.285,0.188-0.478L24.38,9.057c-0.474-0.475-0.663-0.381-0.947,0
+ L7.619,24.859c-0.094,0.097-0.094,0.382,0.094,0.382h9.471v12.946c0,0.285,0.189,0.476,0.379,0.476h12.596
+ c0.378,0,0.473-0.188,0.473-0.57V25.241L40.195,25.335z"/>
+ <path fill="#2356DD" d="M40.17,25.327c0.284,0,0.284-0.285,0.188-0.478L24.381,9.072c-0.473-0.475-0.662-0.38-0.945,0
+ l-15.79,15.78c-0.094,0.097-0.094,0.381,0.094,0.381h9.455V38.16c0,0.285,0.189,0.476,0.379,0.476h12.574
+ c0.377,0,0.473-0.188,0.473-0.569V25.23L40.17,25.327z"/>
+ <path fill="#2457DE" d="M40.145,25.316c0.282,0,0.282-0.284,0.188-0.478L24.38,9.085c-0.472-0.474-0.661-0.38-0.944,0
+ L7.673,24.841c-0.095,0.097-0.095,0.382,0.094,0.382h9.439V38.13c0,0.285,0.189,0.476,0.378,0.476h12.555
+ c0.379,0,0.473-0.188,0.473-0.569V25.223L40.145,25.316z"/>
+ <path fill="#2558DE" d="M40.116,25.307c0.282,0,0.282-0.285,0.188-0.476L24.379,9.101c-0.472-0.474-0.66-0.379-0.942,0
+ L7.699,24.831c-0.094,0.097-0.094,0.381,0.094,0.381h9.424v12.89c0,0.284,0.189,0.476,0.377,0.476h12.533
+ c0.378,0,0.473-0.188,0.473-0.568V25.212L40.116,25.307z"/>
+ <path fill="#2659DF" d="M40.09,25.298c0.283,0,0.283-0.284,0.188-0.475L24.379,9.116c-0.471-0.473-0.659-0.379-0.94,0
+ L7.727,24.823c-0.094,0.096-0.094,0.381,0.094,0.381h9.408v12.869c0,0.282,0.189,0.473,0.377,0.473h12.512
+ c0.376,0,0.47-0.188,0.47-0.567V25.204L40.09,25.298z"/>
+ <path fill="#275ADF" d="M40.062,25.288c0.28,0,0.28-0.283,0.188-0.474L24.378,9.13c-0.47-0.472-0.657-0.378-0.938,0L7.754,24.814
+ c-0.094,0.097-0.094,0.379,0.093,0.379h9.393v12.851c0,0.285,0.188,0.474,0.376,0.474h12.489c0.377,0,0.472-0.188,0.472-0.565
+ V25.193L40.062,25.288z"/>
+ <path fill="#285BE0" d="M40.037,25.277c0.279,0,0.279-0.282,0.188-0.471L24.377,9.145c-0.469-0.471-0.656-0.378-0.937,0
+ L7.781,24.807c-0.094,0.096-0.094,0.377,0.093,0.377h9.377v12.832c0,0.283,0.188,0.474,0.376,0.474H30.1
+ c0.375,0,0.467-0.188,0.467-0.566V25.184L40.037,25.277z"/>
+ <path fill="#295CE0" d="M40.01,25.27c0.281,0,0.281-0.283,0.188-0.474L24.376,9.159c-0.468-0.47-0.655-0.377-0.936,0L7.807,24.796
+ c-0.093,0.097-0.093,0.378,0.093,0.378h9.361v12.812c0,0.281,0.188,0.471,0.375,0.471h12.45c0.374,0,0.467-0.188,0.467-0.562
+ V25.174L40.01,25.27z"/>
+ <path fill="#2A5DE1" d="M39.982,25.259c0.281,0,0.281-0.282,0.188-0.471L24.376,9.174c-0.467-0.469-0.654-0.376-0.934,0
+ L7.834,24.788c-0.093,0.096-0.093,0.377,0.093,0.377h9.346v12.793c0,0.283,0.188,0.472,0.375,0.472h12.43
+ c0.373,0,0.467-0.188,0.467-0.563v-12.7L39.982,25.259z"/>
+ <path fill="#2B5EE1" d="M39.957,25.249c0.279,0,0.279-0.281,0.188-0.472L24.376,9.188c-0.466-0.469-0.652-0.376-0.933,0
+ L7.861,24.779c-0.093,0.095-0.093,0.375,0.093,0.375h9.33V37.93c0,0.282,0.188,0.471,0.374,0.471h12.408
+ c0.373,0,0.467-0.188,0.467-0.563v-12.68L39.957,25.249z"/>
+ <path fill="#2C5FE2" d="M39.932,25.239c0.278,0,0.278-0.281,0.188-0.47L24.375,9.203c-0.465-0.468-0.652-0.375-0.931,0
+ L7.888,24.771c-0.093,0.096-0.093,0.375,0.092,0.375h9.314V37.9c0,0.281,0.187,0.47,0.374,0.47h12.389
+ c0.373,0,0.465-0.188,0.465-0.562V25.146L39.932,25.239z"/>
+ <path fill="#2D60E2" d="M39.902,25.229c0.279,0,0.279-0.277,0.187-0.468L24.374,9.217c-0.465-0.467-0.651-0.375-0.929,0
+ L7.915,24.762c-0.093,0.094-0.093,0.374,0.092,0.374h9.299V37.87c0,0.28,0.187,0.469,0.373,0.469h12.368
+ c0.371,0,0.465-0.188,0.465-0.562V25.136L39.902,25.229z"/>
+ <path fill="#2E61E3" d="M39.877,25.221c0.277,0,0.277-0.279,0.188-0.468L24.374,9.231c-0.464-0.466-0.649-0.374-0.928,0
+ L7.942,24.753c-0.092,0.095-0.092,0.373,0.092,0.373h9.284v12.717c0,0.281,0.186,0.47,0.372,0.47h12.347
+ c0.372,0,0.464-0.188,0.464-0.562V25.126L39.877,25.221z"/>
+ <path fill="#2F62E3" d="M39.852,25.212c0.277,0,0.277-0.28,0.188-0.469L24.373,9.248c-0.463-0.466-0.648-0.374-0.926,0
+ L7.969,24.745c-0.092,0.094-0.092,0.373,0.092,0.373h9.268v12.696c0,0.278,0.186,0.468,0.371,0.468h12.325
+ c0.371,0,0.463-0.188,0.463-0.562V25.118L39.852,25.212z"/>
+ <path fill="#3063E4" d="M39.823,25.202c0.276,0,0.276-0.279,0.186-0.468L24.372,9.262c-0.462-0.465-0.647-0.373-0.925,0
+ L7.996,24.734c-0.092,0.095-0.092,0.373,0.092,0.373h9.252v12.679c0,0.278,0.186,0.467,0.371,0.467h12.307
+ c0.369,0,0.461-0.188,0.461-0.562V25.107L39.823,25.202z"/>
+ <path fill="#3164E4" d="M39.797,25.191c0.277,0,0.277-0.278,0.186-0.467L24.373,9.274c-0.462-0.465-0.646-0.373-0.923,0
+ L8.023,24.727C7.931,24.82,7.931,25.1,8.115,25.1h9.236v12.657c0,0.279,0.186,0.466,0.371,0.466h12.284
+ c0.369,0,0.461-0.187,0.461-0.56V25.1L39.797,25.191z"/>
+ <path fill="#3265E5" d="M39.771,25.184c0.275,0,0.275-0.279,0.186-0.467L24.371,9.29c-0.461-0.464-0.645-0.372-0.922,0
+ L8.05,24.717c-0.092,0.094-0.092,0.372,0.091,0.372h9.221v12.64c0,0.279,0.185,0.465,0.37,0.465h12.264
+ c0.367,0,0.46-0.186,0.46-0.558V25.089L39.771,25.184z"/>
+ <path fill="#3366E5" d="M39.744,25.173c0.275,0,0.275-0.278,0.186-0.465L24.371,9.306c-0.46-0.463-0.644-0.372-0.92,0
+ L8.077,24.708c-0.092,0.094-0.092,0.371,0.091,0.371h9.206V37.7c0,0.276,0.185,0.463,0.369,0.463h12.241
+ c0.369,0,0.461-0.187,0.461-0.558V25.081L39.744,25.173z"/>
+ <path fill="#3366E6" d="M39.717,25.163c0.276,0,0.276-0.277,0.186-0.463L24.37,9.319c-0.459-0.462-0.643-0.371-0.918,0L8.104,24.7
+ c-0.092,0.094-0.092,0.37,0.091,0.37h9.189v12.601c0,0.279,0.185,0.465,0.369,0.465h12.224c0.366,0,0.459-0.186,0.459-0.557V25.07
+ L39.717,25.163z"/>
+ <path fill="#3467E6" d="M39.689,25.152c0.273,0,0.273-0.276,0.185-0.463L24.369,9.333c-0.458-0.462-0.642-0.371-0.917,0
+ L8.131,24.689c-0.092,0.095-0.092,0.371,0.091,0.371h9.174v12.582c0,0.274,0.184,0.463,0.368,0.463h12.202
+ c0.366,0,0.458-0.188,0.458-0.558V25.061L39.689,25.152z"/>
+ <path fill="#3568E7" d="M39.664,25.145c0.273,0,0.273-0.276,0.186-0.463L24.369,9.349c-0.458-0.461-0.641-0.37-0.916,0
+ L8.158,24.682c-0.091,0.094-0.091,0.37,0.091,0.37h9.159v12.562c0,0.276,0.184,0.461,0.367,0.461h12.181
+ c0.367,0,0.458-0.185,0.458-0.556V25.05L39.664,25.145z"/>
+ <path fill="#3669E7" d="M39.639,25.135c0.273,0,0.273-0.277,0.185-0.462L24.368,9.364c-0.458-0.46-0.64-0.37-0.914,0l-15.27,15.31
+ c-0.091,0.094-0.091,0.368,0.091,0.368h9.144v12.543c0,0.276,0.183,0.463,0.366,0.463h12.158c0.365,0,0.457-0.187,0.457-0.555
+ V25.042L39.639,25.135z"/>
+ <path fill="#376AE8" d="M39.609,25.124c0.272,0,0.272-0.274,0.184-0.461L24.367,9.377c-0.457-0.459-0.639-0.369-0.912,0
+ L8.211,24.663c-0.091,0.094-0.091,0.369,0.091,0.369h9.127v12.522c0,0.274,0.184,0.461,0.366,0.461h12.141
+ c0.363,0,0.455-0.187,0.455-0.554v-12.43L39.609,25.124z"/>
+ <path fill="#386BE8" d="M39.584,25.116c0.271,0,0.271-0.277,0.184-0.462L24.368,9.393c-0.456-0.459-0.638-0.368-0.911,0
+ L8.239,24.654c-0.091,0.093-0.091,0.369,0.09,0.369h9.112v12.504c0,0.274,0.183,0.462,0.365,0.462h12.12
+ c0.363,0,0.454-0.188,0.454-0.554V25.023L39.584,25.116z"/>
+ <path fill="#396CE9" d="M39.559,25.105c0.272,0,0.272-0.274,0.183-0.459L24.366,9.407c-0.455-0.458-0.636-0.367-0.909,0
+ L8.266,24.646c-0.091,0.093-0.091,0.367,0.09,0.367h9.096v12.483c0,0.272,0.183,0.459,0.365,0.459h12.098
+ c0.362,0,0.454-0.187,0.454-0.552V25.014L39.559,25.105z"/>
+ <path fill="#3A6DE9" d="M39.529,25.096c0.271,0,0.271-0.275,0.184-0.457L24.365,9.421c-0.454-0.458-0.635-0.367-0.907,0
+ L8.293,24.639c-0.091,0.092-0.091,0.364,0.09,0.364h9.081v12.468c0,0.274,0.182,0.459,0.364,0.459h12.076
+ c0.363,0,0.453-0.185,0.453-0.552V25.003L39.529,25.096z"/>
+ <path fill="#3B6EEA" d="M39.504,25.087c0.271,0,0.271-0.274,0.184-0.459L24.365,9.436c-0.454-0.457-0.634-0.366-0.906,0
+ L8.319,24.628c-0.09,0.093-0.09,0.367,0.09,0.367h9.065v12.446c0,0.272,0.182,0.457,0.363,0.457h12.06
+ c0.359,0,0.451-0.185,0.451-0.549V24.995L39.504,25.087z"/>
+ <path fill="#3C6FEA" d="M39.479,25.077c0.271,0,0.271-0.272,0.183-0.457L24.364,9.451c-0.453-0.456-0.633-0.366-0.905,0
+ L8.346,24.62c-0.09,0.092-0.09,0.364,0.09,0.364h9.05v12.429c0,0.274,0.182,0.457,0.363,0.457h12.036
+ c0.361,0,0.451-0.183,0.451-0.55V24.984L39.479,25.077z"/>
+ <path fill="#3D70EB" d="M39.451,25.066c0.271,0,0.271-0.272,0.181-0.457L24.363,9.464c-0.452-0.455-0.632-0.365-0.903,0
+ L8.374,24.609c-0.09,0.093-0.09,0.367,0.089,0.367h9.034v12.406c0,0.271,0.181,0.456,0.362,0.456h12.016
+ c0.359,0,0.45-0.185,0.45-0.549V24.977L39.451,25.066z"/>
+ <path fill="#3E71EB" d="M39.424,25.059c0.271,0,0.271-0.272,0.182-0.457L24.363,9.479c-0.451-0.455-0.631-0.365-0.901,0
+ L8.4,24.602c-0.09,0.092-0.09,0.365,0.09,0.365h9.019v12.389c0,0.272,0.181,0.457,0.362,0.457h11.992
+ c0.361,0,0.451-0.185,0.451-0.547V24.967L39.424,25.059z"/>
+ <path fill="#3F72EC" d="M39.396,25.048c0.271,0,0.271-0.272,0.182-0.455L24.362,9.495c-0.45-0.454-0.63-0.364-0.9,0L8.427,24.593
+ c-0.09,0.093-0.09,0.363,0.089,0.363h9.003v12.371c0,0.272,0.181,0.455,0.361,0.455h11.976c0.357,0,0.447-0.183,0.447-0.548
+ V24.956L39.396,25.048z"/>
+ <path fill="#4073EC" d="M39.371,25.038c0.271,0,0.271-0.272,0.18-0.455L24.362,9.509c-0.45-0.453-0.629-0.363-0.898,0
+ L8.454,24.583c-0.09,0.093-0.09,0.362,0.089,0.362h8.987v12.354c0,0.271,0.181,0.454,0.36,0.454h11.954
+ c0.358,0,0.448-0.183,0.448-0.545v-12.26L39.371,25.038z"/>
+ <path fill="#4174ED" d="M39.346,25.029c0.271,0,0.271-0.271,0.18-0.454L24.361,9.523c-0.449-0.453-0.627-0.363-0.897,0
+ L8.481,24.575c-0.089,0.092-0.089,0.362,0.089,0.362h8.972V37.27c0,0.272,0.18,0.455,0.359,0.455h11.933
+ c0.357,0,0.445-0.183,0.445-0.545V24.938L39.346,25.029z"/>
+ <path fill="#4275ED" d="M39.316,25.02c0.271,0,0.271-0.271,0.181-0.453L24.36,9.539c-0.448-0.452-0.626-0.362-0.895,0
+ L8.508,24.566c-0.09,0.091-0.09,0.36,0.088,0.36h8.957V37.24c0,0.271,0.18,0.451,0.359,0.451h11.912
+ c0.355,0,0.445-0.183,0.445-0.543V24.93L39.316,25.02z"/>
+ <path fill="#4376EE" d="M39.291,25.01c0.27,0,0.27-0.271,0.18-0.453L24.36,9.553c-0.447-0.451-0.625-0.361-0.894,0L8.535,24.559
+ c-0.089,0.09-0.089,0.362,0.089,0.362h8.941v12.293c0,0.271,0.179,0.451,0.358,0.451h11.892c0.356,0,0.445-0.181,0.445-0.543
+ V24.919L39.291,25.01z"/>
+ <path fill="#4477EE" d="M39.266,24.999c0.27,0,0.27-0.271,0.18-0.451L24.359,9.566c-0.446-0.45-0.625-0.361-0.893,0L8.562,24.549
+ c-0.089,0.09-0.089,0.362,0.088,0.362h8.925v12.272c0,0.271,0.179,0.45,0.358,0.45h11.87c0.356,0,0.445-0.182,0.445-0.542V24.911
+ L39.266,24.999z"/>
+ <path fill="#4578EF" d="M39.236,24.991c0.27,0,0.27-0.271,0.18-0.451L24.359,9.582c-0.446-0.45-0.624-0.36-0.891,0L8.589,24.54
+ C8.5,24.63,8.5,24.9,8.677,24.9h8.91v12.254c0,0.271,0.179,0.451,0.357,0.451h11.85c0.354,0,0.442-0.182,0.442-0.541V24.9
+ L39.236,24.991z"/>
+ <path fill="#4679EF" d="M39.211,24.98c0.27,0,0.27-0.271,0.18-0.449L24.358,9.597c-0.445-0.449-0.622-0.36-0.889,0L8.616,24.531
+ c-0.089,0.089-0.089,0.359,0.088,0.359h8.894v12.233c0,0.271,0.179,0.451,0.356,0.451h11.83c0.354,0,0.442-0.183,0.442-0.541
+ V24.891L39.211,24.98z"/>
+ <path fill="#477AF0" d="M39.186,24.973c0.269,0,0.269-0.271,0.178-0.451L24.357,9.61c-0.444-0.448-0.621-0.359-0.888,0
+ L8.643,24.521c-0.088,0.09-0.088,0.358,0.088,0.358h8.878v12.218c0,0.271,0.179,0.448,0.356,0.448h11.809
+ c0.354,0,0.441-0.182,0.441-0.54V24.882L39.186,24.973z"/>
+ <path fill="#487BF0" d="M39.158,24.962c0.267,0,0.267-0.271,0.178-0.448L24.356,9.625c-0.443-0.447-0.62-0.359-0.886,0
+ L8.669,24.514c-0.088,0.09-0.088,0.358,0.088,0.358h8.863v12.196c0,0.271,0.178,0.449,0.355,0.449h11.789
+ c0.354,0,0.44-0.181,0.44-0.539V24.872L39.158,24.962z"/>
+ <path fill="#497CF1" d="M39.132,24.952c0.267,0,0.267-0.269,0.179-0.447L24.356,9.64c-0.442-0.446-0.619-0.358-0.884,0
+ L8.697,24.504c-0.088,0.09-0.088,0.357,0.087,0.357h8.847V37.04c0,0.271,0.178,0.449,0.355,0.449h11.768
+ c0.354,0,0.439-0.181,0.439-0.539V24.861L39.132,24.952z"/>
+ <path fill="#4A7DF1" d="M39.104,24.943c0.269,0,0.269-0.271,0.18-0.448L24.355,9.655c-0.442-0.446-0.618-0.358-0.883,0
+ L8.724,24.496c-0.088,0.089-0.088,0.357,0.087,0.357h8.832v12.16c0,0.268,0.177,0.445,0.354,0.445h11.747
+ c0.354,0,0.439-0.182,0.439-0.537V24.854L39.104,24.943z"/>
+ <path fill="#4B7EF2" d="M39.078,24.934c0.265,0,0.265-0.269,0.177-0.447L24.355,9.67c-0.441-0.445-0.617-0.357-0.881,0
+ L8.751,24.486c-0.088,0.091-0.088,0.357,0.087,0.357h8.816v12.14c0,0.27,0.177,0.447,0.354,0.447h11.727
+ c0.354,0,0.438-0.18,0.438-0.535V24.844L39.078,24.934z"/>
+ <path fill="#4C7FF2" d="M39.052,24.924c0.265,0,0.265-0.27,0.177-0.446L24.354,9.684c-0.44-0.444-0.616-0.356-0.879,0
+ L8.777,24.478c-0.088,0.09-0.088,0.355,0.087,0.355h8.8v12.121c0,0.269,0.177,0.444,0.353,0.444h11.706
+ c0.354,0,0.438-0.178,0.438-0.534V24.833L39.052,24.924z"/>
+ <path fill="#4D80F3" d="M39.023,24.913c0.266,0,0.266-0.269,0.178-0.444L24.354,9.699c-0.439-0.444-0.615-0.356-0.878,0
+ L8.804,24.469c-0.087,0.09-0.087,0.356,0.087,0.356h8.785v12.101c0,0.268,0.177,0.444,0.353,0.444h11.684
+ c0.352,0,0.438-0.179,0.438-0.533V24.825L39.023,24.913z"/>
+ <path fill="#4E81F3" d="M38.998,24.904c0.266,0,0.266-0.269,0.176-0.445L24.353,9.712c-0.439-0.443-0.614-0.355-0.877,0
+ L8.832,24.459c-0.088,0.089-0.088,0.355,0.086,0.355h8.77v12.082c0,0.269,0.176,0.443,0.352,0.443h11.664
+ c0.351,0,0.438-0.179,0.438-0.531V24.814L38.998,24.904z"/>
+ <path fill="#4F82F4" d="M38.973,24.896c0.264,0,0.264-0.27,0.176-0.445L24.353,9.728c-0.438-0.442-0.613-0.355-0.875,0
+ L8.858,24.451c-0.087,0.089-0.087,0.355,0.087,0.355h8.754V36.87c0,0.266,0.176,0.442,0.351,0.442h11.644
+ c0.352,0,0.438-0.18,0.438-0.533V24.807L38.973,24.896z"/>
+ <path fill="#5083F4" d="M38.943,24.886c0.264,0,0.264-0.268,0.177-0.444l-14.769-14.7c-0.437-0.441-0.611-0.354-0.874,0
+ l-14.593,14.7c-0.087,0.09-0.087,0.354,0.086,0.354h8.738v12.043c0,0.267,0.176,0.443,0.351,0.443h11.623
+ c0.351,0,0.438-0.179,0.438-0.531V24.796L38.943,24.886z"/>
+ <path fill="#5184F5" d="M38.919,24.876c0.263,0,0.263-0.267,0.174-0.443L24.351,9.756c-0.437-0.441-0.61-0.354-0.872,0
+ L8.912,24.434c-0.087,0.089-0.087,0.354,0.086,0.354h8.723v12.022c0,0.267,0.175,0.44,0.35,0.44h11.602
+ c0.349,0,0.437-0.178,0.437-0.528V24.788L38.919,24.876z"/>
+ <path fill="#5285F5" d="M38.893,24.866c0.262,0,0.262-0.267,0.176-0.441L24.351,9.771c-0.436-0.44-0.609-0.353-0.871,0
+ L8.939,24.425c-0.087,0.089-0.087,0.353,0.086,0.353h8.707v12.009c0,0.265,0.175,0.438,0.349,0.438h11.581
+ c0.348,0,0.436-0.177,0.436-0.529V24.777L38.893,24.866z"/>
+ <path fill="#5386F6" d="M38.863,24.855c0.263,0,0.263-0.266,0.176-0.44L24.35,9.786c-0.435-0.439-0.608-0.353-0.869,0
+ L8.966,24.415C8.88,24.504,8.88,24.77,9.052,24.77h8.691v11.983c0,0.267,0.175,0.44,0.349,0.44h11.561
+ c0.349,0,0.435-0.176,0.435-0.528V24.77L38.863,24.855z"/>
+ <path fill="#5487F6" d="M38.839,24.848c0.261,0,0.261-0.267,0.175-0.439L24.349,9.801c-0.434-0.439-0.607-0.352-0.867,0
+ L8.993,24.407c-0.087,0.089-0.087,0.353,0.086,0.353h8.676v11.967c0,0.267,0.174,0.44,0.348,0.44h11.54
+ c0.349,0,0.435-0.178,0.435-0.528v-11.88L38.839,24.848z"/>
+ <path fill="#5588F7" d="M38.812,24.837c0.262,0,0.262-0.264,0.174-0.439L24.349,9.814c-0.433-0.438-0.606-0.352-0.866,0
+ L9.02,24.397c-0.086,0.088-0.086,0.352,0.086,0.352h8.66v11.949c0,0.262,0.174,0.438,0.347,0.438h11.519
+ c0.347,0,0.433-0.177,0.433-0.528V24.749L38.812,24.837z"/>
+ <path fill="#5689F7" d="M38.785,24.829c0.26,0,0.26-0.265,0.173-0.439L24.348,9.83c-0.432-0.438-0.604-0.351-0.864,0L9.047,24.389
+ c-0.086,0.088-0.086,0.353,0.085,0.353h8.645V36.67c0,0.264,0.174,0.438,0.347,0.438h11.498c0.345,0,0.431-0.176,0.431-0.524
+ v-11.84L38.785,24.829z"/>
+ <path fill="#578AF8" d="M38.759,24.818c0.261,0,0.261-0.264,0.175-0.438L24.347,9.844c-0.432-0.437-0.604-0.35-0.863,0
+ L9.074,24.379c-0.086,0.088-0.086,0.352,0.085,0.352h8.629v11.91c0,0.262,0.173,0.438,0.346,0.438h11.476
+ c0.348,0,0.434-0.177,0.434-0.524V24.73L38.759,24.818z"/>
+ <path fill="#588BF8" d="M38.73,24.809c0.258,0,0.258-0.263,0.172-0.438L24.347,9.858c-0.431-0.436-0.603-0.35-0.861,0
+ L9.101,24.372c-0.086,0.088-0.086,0.351,0.085,0.351H17.8v11.892c0,0.262,0.173,0.438,0.345,0.438h11.458
+ c0.344,0,0.428-0.177,0.428-0.524V24.721L38.73,24.809z"/>
+ <path fill="#598CF9" d="M38.705,24.799c0.259,0,0.259-0.262,0.173-0.438L24.346,9.873c-0.43-0.435-0.602-0.349-0.86,0
+ L9.128,24.361c-0.086,0.088-0.086,0.351,0.085,0.351h8.598v11.869c0,0.263,0.173,0.438,0.345,0.438h11.436
+ c0.344,0,0.43-0.178,0.43-0.524V24.712L38.705,24.799z"/>
+ <path fill="#5A8DF9" d="M38.68,24.79c0.258,0,0.258-0.265,0.172-0.438L24.345,9.888c-0.429-0.435-0.6-0.349-0.858,0L9.155,24.353
+ c-0.086,0.088-0.086,0.35,0.085,0.35h8.583v11.852c0,0.262,0.172,0.438,0.344,0.438h11.414c0.343,0,0.428-0.177,0.428-0.524
+ V24.702L38.68,24.79z"/>
+ <path fill="#5B8EFA" d="M38.65,24.779c0.259,0,0.259-0.262,0.173-0.437L24.345,9.902c-0.428-0.434-0.599-0.348-0.856,0
+ L9.182,24.345c-0.085,0.087-0.085,0.348,0.085,0.348h8.567v11.832c0,0.262,0.172,0.438,0.343,0.438h11.396
+ c0.342,0,0.427-0.176,0.427-0.523V24.691L38.65,24.779z"/>
+ <path fill="#5C8FFA" d="M38.626,24.771c0.256,0,0.256-0.263,0.171-0.437L24.344,9.917c-0.428-0.433-0.599-0.348-0.855,0
+ L9.209,24.335c-0.085,0.087-0.085,0.349,0.084,0.349h8.552v11.812c0,0.262,0.172,0.438,0.343,0.438h11.375
+ c0.342,0,0.426-0.176,0.426-0.521V24.684L38.626,24.771z"/>
+ <path fill="#5D90FB" d="M38.6,24.761c0.258,0,0.258-0.261,0.172-0.434L24.344,9.932c-0.427-0.432-0.598-0.347-0.854,0
+ L9.235,24.327c-0.085,0.087-0.085,0.347,0.084,0.347h8.536v11.794c0,0.261,0.172,0.435,0.343,0.435h11.353
+ c0.342,0,0.428-0.174,0.428-0.521V24.674L38.6,24.761z"/>
+ <path fill="#5E91FB" d="M38.57,24.751c0.258,0,0.258-0.26,0.173-0.434l-14.4-14.372c-0.426-0.432-0.596-0.346-0.852,0
+ L9.263,24.317c-0.085,0.087-0.085,0.346,0.084,0.346h8.52v11.776c0,0.259,0.171,0.433,0.342,0.433h11.332
+ c0.34,0,0.424-0.174,0.424-0.521V24.663L38.57,24.751z"/>
+ <path fill="#5F92FC" d="M38.546,24.743c0.255,0,0.255-0.262,0.17-0.435L24.342,9.96c-0.425-0.431-0.595-0.346-0.85,0L9.29,24.309
+ c-0.085,0.087-0.085,0.347,0.084,0.347h8.504v11.756c0,0.258,0.171,0.434,0.341,0.434h11.311c0.342,0,0.426-0.176,0.426-0.521
+ V24.654L38.546,24.743z"/>
+ <path fill="#6093FC" d="M38.521,24.732c0.254,0,0.254-0.26,0.17-0.435L24.342,9.976c-0.425-0.43-0.594-0.345-0.849,0L9.316,24.3
+ c-0.085,0.087-0.085,0.347,0.084,0.347h8.489v11.735c0,0.259,0.171,0.433,0.341,0.433h11.292c0.34,0,0.424-0.174,0.424-0.521
+ V24.646L38.521,24.732z"/>
+ <path fill="#6194FD" d="M38.492,24.723c0.255,0,0.255-0.259,0.17-0.432L24.341,9.99c-0.424-0.43-0.593-0.345-0.847,0L9.343,24.291
+ c-0.084,0.086-0.084,0.345,0.084,0.345H17.9v11.718c0,0.258,0.17,0.433,0.34,0.433h11.27c0.34,0,0.424-0.175,0.424-0.519V24.636
+ L38.492,24.723z"/>
+ <path fill="#6295FD" d="M38.466,24.712c0.255,0,0.255-0.258,0.169-0.43L24.34,10.004c-0.423-0.429-0.592-0.344-0.846,0
+ L9.37,24.283c-0.084,0.086-0.084,0.345,0.084,0.345h8.458v11.697c0,0.258,0.17,0.43,0.339,0.43H29.5
+ c0.338,0,0.422-0.172,0.422-0.516V24.626L38.466,24.712z"/>
+ <path fill="#6396FE" d="M38.438,24.704c0.254,0,0.254-0.259,0.17-0.431L24.34,10.019c-0.422-0.428-0.591-0.343-0.844,0
+ L9.397,24.273c-0.084,0.086-0.084,0.345,0.083,0.345h8.442v11.678c0,0.259,0.17,0.431,0.339,0.431H29.49
+ c0.338,0,0.422-0.172,0.422-0.517V24.618L38.438,24.704z"/>
+ <path fill="#6497FE" d="M38.413,24.693c0.252,0,0.252-0.257,0.168-0.429l-14.242-14.23c-0.422-0.427-0.59-0.343-0.843,0
+ L9.424,24.265c-0.084,0.086-0.084,0.342,0.083,0.342h8.427v11.66c0,0.258,0.169,0.43,0.338,0.43H29.48
+ c0.336,0,0.42-0.172,0.42-0.516V24.607L38.413,24.693z"/>
+ <path fill="#6598FF" d="M38.387,24.686c0.254,0,0.254-0.259,0.17-0.43L24.338,10.047c-0.42-0.426-0.588-0.342-0.841,0
+ L9.451,24.255c-0.084,0.086-0.084,0.343,0.083,0.343h8.411V36.24c0,0.256,0.169,0.428,0.337,0.428h11.187
+ c0.338,0,0.42-0.172,0.42-0.516V24.6L38.387,24.686z"/>
+ <path fill="#6699FF" d="M38.357,24.675c0.252,0,0.252-0.257,0.168-0.428L24.338,10.062c-0.42-0.426-0.587-0.342-0.839,0
+ L9.478,24.247c-0.084,0.086-0.084,0.342,0.083,0.342h8.396V36.21c0,0.256,0.169,0.429,0.337,0.429h11.167
+ c0.335,0,0.418-0.173,0.418-0.515V24.589L38.357,24.675z"/>
+ </g>
+
+ <linearGradient id="XMLID_20_" gradientUnits="userSpaceOnUse" x1="-1371.771" y1="-727.9985" x2="-1398.6362" y2="-727.9985" gradientTransform="matrix(4.371139e-08 -1 -1 -4.371139e-08 -703.999 -1361.9985)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#6699FF"/>
+ </linearGradient>
+ <path fill="url(#XMLID_20_)" d="M38.357,24.675c0.252,0,0.252-0.257,0.168-0.428L24.338,10.062c-0.42-0.426-0.587-0.342-0.839,0
+ L9.478,24.247c-0.084,0.086-0.084,0.342,0.083,0.342h8.396V36.21c0,0.256,0.169,0.429,0.337,0.429h11.167
+ c0.335,0,0.418-0.173,0.418-0.515V24.589L38.357,24.675z"/>
+</g>
+<g id="crop_x0020_marks">
+ <path fill="none" d="M48-0.058v48H0v-48H48z"/>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg
new file mode 100644
index 0000000..ae0081d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48"
+ overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve">
+<g>
+ <path stroke="#FFFFFF" stroke-width="7.9139" stroke-linejoin="round" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2
+ L31.6,42.3H16.4z"/>
+ <g>
+ <path fill="#990000" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/>
+ <polygon fill="#9A0000" points="16.415,42.266 5.736,31.586 5.736,16.416 16.415,5.737 31.585,5.737 42.266,16.416 42.266,31.586
+ 31.585,42.266 "/>
+ <polygon fill="#9B0000" points="16.429,42.23 5.771,31.572 5.771,16.432 16.429,5.774 31.57,5.774 42.229,16.432 42.229,31.572
+ 31.57,42.23 "/>
+ <polygon fill="#9C0000" points="16.444,42.195 5.806,31.559 5.806,16.447 16.444,5.81 31.557,5.81 42.191,16.447 42.191,31.559
+ 31.557,42.195 "/>
+ <polygon fill="#9D0000" points="16.459,42.162 5.842,31.545 5.842,16.464 16.459,5.847 31.54,5.847 42.157,16.464 42.157,31.545
+ 31.54,42.162 "/>
+ <polygon fill="#9E0000" points="16.473,42.128 5.877,31.531 5.877,16.479 16.473,5.884 31.525,5.884 42.122,16.479 42.122,31.531
+ 31.525,42.128 "/>
+ <polygon fill="#9F0000" points="16.488,42.094 5.914,31.52 5.914,16.496 16.488,5.921 31.512,5.921 42.087,16.496 42.087,31.52
+ 31.512,42.094 "/>
+ <polygon fill="#A00000" points="16.503,42.061 5.949,31.505 5.949,16.511 16.503,5.958 31.496,5.958 42.051,16.511 42.051,31.505
+ 31.496,42.061 "/>
+ <polygon fill="#A10000" points="16.518,42.025 5.984,31.491 5.984,16.528 16.518,5.994 31.48,5.994 42.016,16.528 42.016,31.491
+ 31.48,42.025 "/>
+ <polygon fill="#A20000" points="16.533,41.991 6.02,31.479 6.02,16.544 16.533,6.031 31.467,6.031 41.98,16.544 41.98,31.479
+ 31.467,41.991 "/>
+ <polygon fill="#A30000" points="16.547,41.956 6.055,31.464 6.055,16.56 16.547,6.067 31.452,6.067 41.943,16.56 41.943,31.464
+ 31.452,41.956 "/>
+ <polygon fill="#A40000" points="16.562,41.923 6.091,31.451 6.091,16.576 16.562,6.104 31.438,6.104 41.909,16.576 41.909,31.451
+ 31.438,41.923 "/>
+ <polygon fill="#A50000" points="16.577,41.889 6.126,31.438 6.126,16.592 16.577,6.141 31.423,6.141 41.873,16.592 41.873,31.438
+ 31.423,41.889 "/>
+ <polygon fill="#A60000" points="16.592,41.854 6.162,31.424 6.162,16.607 16.592,6.177 31.407,6.177 41.838,16.607 41.838,31.424
+ 31.407,41.854 "/>
+ <polygon fill="#A70000" points="16.606,41.818 6.197,31.41 6.197,16.624 16.606,6.214 31.395,6.214 41.803,16.624 41.803,31.41
+ 31.395,41.818 "/>
+ <polygon fill="#A80000" points="16.622,41.785 6.233,31.396 6.233,16.64 16.622,6.251 31.379,6.251 41.768,16.64 41.768,31.396
+ 31.379,41.785 "/>
+ <polygon fill="#A90000" points="16.636,41.751 6.269,31.383 6.269,16.655 16.636,6.288 31.363,6.288 41.73,16.655 41.73,31.383
+ 31.363,41.751 "/>
+ <polygon fill="#AA0000" points="16.65,41.716 6.304,31.369 6.304,16.671 16.65,6.325 31.35,6.325 41.695,16.671 41.695,31.369
+ 31.35,41.716 "/>
+ <polygon fill="#AB0000" points="16.666,41.682 6.339,31.355 6.339,16.688 16.666,6.361 31.334,6.361 41.66,16.688 41.66,31.355
+ 31.334,41.682 "/>
+ <polygon fill="#AC0000" points="16.681,41.648 6.375,31.343 6.375,16.704 16.681,6.398 31.318,6.398 41.625,16.704 41.625,31.343
+ 31.318,41.648 "/>
+ <polygon fill="#AD0000" points="16.695,41.613 6.411,31.329 6.411,16.719 16.695,6.435 31.305,6.435 41.589,16.719 41.589,31.329
+ 31.305,41.613 "/>
+ <polygon fill="#AE0000" points="16.709,41.579 6.446,31.314 6.446,16.735 16.709,6.472 31.29,6.472 41.555,16.735 41.555,31.314
+ 31.29,41.579 "/>
+ <polygon fill="#AF0000" points="16.725,41.545 6.482,31.302 6.482,16.751 16.725,6.509 31.273,6.509 41.52,16.751 41.52,31.302
+ 31.273,41.545 "/>
+ <polygon fill="#B00000" points="16.739,41.511 6.518,31.288 6.518,16.767 16.739,6.545 31.262,6.545 41.482,16.767 41.482,31.288
+ 31.262,41.511 "/>
+ <polygon fill="#B10000" points="16.754,41.477 6.553,31.273 6.553,16.783 16.754,6.582 31.245,6.582 41.447,16.783 41.447,31.273
+ 31.245,41.477 "/>
+ <polygon fill="#B20000" points="16.769,41.441 6.588,31.261 6.588,16.799 16.769,6.619 31.23,6.619 41.411,16.799 41.411,31.261
+ 31.23,41.441 "/>
+ <polygon fill="#B30000" points="16.783,41.407 6.624,31.248 6.624,16.815 16.783,6.656 31.216,6.656 41.376,16.815 41.376,31.248
+ 31.216,41.407 "/>
+ <polygon fill="#B40000" points="16.799,41.373 6.66,31.234 6.66,16.832 16.799,6.693 31.202,6.693 41.341,16.832 41.341,31.234
+ 31.202,41.373 "/>
+ <polygon fill="#B50000" points="16.813,41.339 6.695,31.221 6.695,16.847 16.813,6.729 31.188,6.729 41.305,16.847 41.305,31.221
+ 31.188,41.339 "/>
+ <polygon fill="#B60000" points="16.828,41.305 6.73,31.207 6.73,16.863 16.828,6.765 31.172,6.765 41.27,16.863 41.27,31.207
+ 31.172,41.305 "/>
+ <polygon fill="#B70000" points="16.843,41.27 6.766,31.193 6.766,16.879 16.843,6.802 31.157,6.802 41.232,16.879 41.232,31.193
+ 31.157,41.27 "/>
+ <polygon fill="#B80000" points="16.858,41.236 6.802,31.182 6.802,16.896 16.858,6.839 31.143,6.839 41.198,16.896 41.198,31.182
+ 31.143,41.236 "/>
+ <polygon fill="#B90000" points="16.872,41.202 6.837,31.166 6.837,16.911 16.872,6.876 31.128,6.876 41.163,16.911 41.163,31.166
+ 31.128,41.202 "/>
+ <polygon fill="#BA0000" points="16.887,41.167 6.873,31.152 6.873,16.927 16.887,6.913 31.111,6.913 41.127,16.927 41.127,31.152
+ 31.111,41.167 "/>
+ <polygon fill="#BB0000" points="16.902,41.133 6.908,31.139 6.908,16.943 16.902,6.949 31.098,6.949 41.092,16.943 41.092,31.139
+ 31.098,41.133 "/>
+ <polygon fill="#BC0000" points="16.917,41.1 6.944,31.126 6.944,16.959 16.917,6.986 31.083,6.986 41.057,16.959 41.057,31.126
+ 31.083,41.1 "/>
+ <polygon fill="#BD0000" points="16.931,41.064 6.979,31.111 6.979,16.975 16.931,7.023 31.068,7.023 41.021,16.975 41.021,31.111
+ 31.068,41.064 "/>
+ <polygon fill="#BE0000" points="16.946,41.029 7.015,31.1 7.015,16.991 16.946,7.06 31.055,7.06 40.984,16.991 40.984,31.1
+ 31.055,41.029 "/>
+ <polygon fill="#BF0000" points="16.96,40.995 7.051,31.085 7.051,17.007 16.96,7.097 31.039,7.097 40.949,17.007 40.949,31.085
+ 31.039,40.995 "/>
+ <polygon fill="#C00000" points="16.976,40.962 7.086,31.072 7.086,17.023 16.976,7.133 31.023,7.133 40.914,17.023 40.914,31.072
+ 31.023,40.962 "/>
+ <polygon fill="#C10000" points="16.99,40.927 7.121,31.059 7.121,17.039 16.99,7.17 31.01,7.17 40.878,17.039 40.878,31.059
+ 31.01,40.927 "/>
+ <polygon fill="#C20000" points="17.004,40.893 7.157,31.044 7.157,17.054 17.004,7.207 30.994,7.207 40.843,17.054 40.843,31.044
+ 30.994,40.893 "/>
+ <polygon fill="#C30000" points="17.02,40.857 7.192,31.031 7.192,17.07 17.02,7.244 30.979,7.244 40.809,17.07 40.809,31.031
+ 30.979,40.857 "/>
+ <polygon fill="#C40000" points="17.035,40.824 7.229,31.018 7.229,17.086 17.035,7.281 30.966,7.281 40.771,17.086 40.771,31.018
+ 30.966,40.824 "/>
+ <polygon fill="#C50000" points="17.049,40.789 7.263,31.004 7.263,17.103 17.049,7.317 30.95,7.317 40.736,17.103 40.736,31.004
+ 30.95,40.789 "/>
+ <polygon fill="#C60000" points="17.064,40.755 7.299,30.99 7.299,17.119 17.064,7.354 30.936,7.354 40.701,17.119 40.701,30.99
+ 30.936,40.755 "/>
+ <polygon fill="#C70000" points="17.079,40.721 7.334,30.977 7.334,17.135 17.079,7.391 30.921,7.391 40.665,17.135 40.665,30.977
+ 30.921,40.721 "/>
+ <polygon fill="#C80000" points="17.094,40.688 7.371,30.964 7.371,17.151 17.094,7.428 30.906,7.428 40.63,17.151 40.63,30.964
+ 30.906,40.688 "/>
+ <polygon fill="#C90000" points="17.108,40.652 7.406,30.949 7.406,17.167 17.108,7.464 30.893,7.464 40.594,17.167 40.594,30.949
+ 30.893,40.652 "/>
+ <polygon fill="#CA0000" points="17.123,40.618 7.441,30.936 7.441,17.182 17.123,7.5 30.877,7.5 40.559,17.182 40.559,30.936
+ 30.877,40.618 "/>
+ <polygon fill="#CB0000" points="17.138,40.584 7.477,30.923 7.477,17.199 17.138,7.537 30.861,7.537 40.523,17.199 40.523,30.923
+ 30.861,40.584 "/>
+ <polygon fill="#CC0000" points="17.153,40.55 7.513,30.909 7.513,17.215 17.153,7.574 30.848,7.574 40.486,17.215 40.486,30.909
+ 30.848,40.55 "/>
+ <polygon fill="#CC0000" points="17.167,40.516 7.548,30.896 7.548,17.23 17.167,7.611 30.832,7.611 40.452,17.23 40.452,30.896
+ 30.832,40.516 "/>
+ <polygon fill="#CD0000" points="17.182,40.48 7.583,30.882 7.583,17.246 17.182,7.647 30.816,7.647 40.416,17.246 40.416,30.882
+ 30.816,40.48 "/>
+ <polygon fill="#CE0000" points="17.197,40.445 7.619,30.868 7.619,17.262 17.197,7.685 30.803,7.685 40.381,17.262 40.381,30.868
+ 30.803,40.445 "/>
+ <polygon fill="#CF0000" points="17.211,40.412 7.654,30.855 7.654,17.278 17.211,7.721 30.788,7.721 40.346,17.278 40.346,30.855
+ 30.788,40.412 "/>
+ <polygon fill="#D00000" points="17.226,40.378 7.69,30.842 7.69,17.294 17.226,7.758 30.773,7.758 40.311,17.294 40.311,30.842
+ 30.773,40.378 "/>
+ <polygon fill="#D10000" points="17.241,40.344 7.726,30.828 7.726,17.311 17.241,7.794 30.759,7.794 40.273,17.311 40.273,30.828
+ 30.759,40.344 "/>
+ <polygon fill="#D20000" points="17.256,40.311 7.761,30.814 7.761,17.326 17.256,7.831 30.744,7.831 40.238,17.326 40.238,30.814
+ 30.744,40.311 "/>
+ <polygon fill="#D30000" points="17.271,40.273 7.796,30.801 7.796,17.342 17.271,7.868 30.729,7.868 40.203,17.342 40.203,30.801
+ 30.729,40.273 "/>
+ <polygon fill="#D40000" points="17.285,40.24 7.832,30.787 7.832,17.358 17.285,7.905 30.715,7.905 40.168,17.358 40.168,30.787
+ 30.715,40.24 "/>
+ <polygon fill="#D50000" points="17.3,40.206 7.868,30.773 7.868,17.374 17.3,7.941 30.7,7.941 40.132,17.374 40.132,30.773
+ 30.7,40.206 "/>
+ <polygon fill="#D60000" points="17.315,40.172 7.903,30.761 7.903,17.39 17.315,7.979 30.686,7.979 40.098,17.39 40.098,30.761
+ 30.686,40.172 "/>
+ <polygon fill="#D70000" points="17.33,40.139 7.938,30.747 7.938,17.406 17.33,8.015 30.67,8.015 40.062,17.406 40.062,30.747
+ 30.67,40.139 "/>
+ <polygon fill="#D80000" points="17.344,40.104 7.974,30.732 7.974,17.422 17.344,8.052 30.654,8.052 40.025,17.422 40.025,30.732
+ 30.654,40.104 "/>
+ <polygon fill="#D90000" points="17.359,40.068 8.01,30.721 8.01,17.438 17.359,8.089 30.641,8.089 39.99,17.438 39.99,30.721
+ 30.641,40.068 "/>
+ <polygon fill="#DA0000" points="17.374,40.034 8.045,30.706 8.045,17.454 17.374,8.125 30.626,8.125 39.954,17.454 39.954,30.706
+ 30.626,40.034 "/>
+ <polygon fill="#DB0000" points="17.389,40 8.081,30.691 8.081,17.47 17.389,8.162 30.611,8.162 39.919,17.47 39.919,30.691
+ 30.611,40 "/>
+ <polygon fill="#DC0000" points="17.403,39.966 8.116,30.68 8.116,17.486 17.403,8.199 30.598,8.199 39.884,17.486 39.884,30.68
+ 30.598,39.966 "/>
+ <polygon fill="#DD0000" points="17.418,39.932 8.152,30.665 8.152,17.502 17.418,8.235 30.582,8.235 39.848,17.502 39.848,30.665
+ 30.582,39.932 "/>
+ <polygon fill="#DE0000" points="17.433,39.896 8.188,30.652 8.188,17.518 17.433,8.272 30.566,8.272 39.812,17.518 39.812,30.652
+ 30.566,39.896 "/>
+ <polygon fill="#DF0000" points="17.448,39.863 8.223,30.639 8.223,17.534 17.448,8.309 30.553,8.309 39.775,17.534 39.775,30.639
+ 30.553,39.863 "/>
+ <polygon fill="#E00000" points="17.462,39.828 8.258,30.625 8.258,17.55 17.462,8.346 30.537,8.346 39.741,17.55 39.741,30.625
+ 30.537,39.828 "/>
+ <polygon fill="#E10000" points="17.477,39.794 8.294,30.611 8.294,17.565 17.477,8.383 30.521,8.383 39.706,17.565 39.706,30.611
+ 30.521,39.794 "/>
+ <polygon fill="#E20000" points="17.492,39.76 8.33,30.598 8.33,17.582 17.492,8.419 30.508,8.419 39.67,17.582 39.67,30.598
+ 30.508,39.76 "/>
+ <polygon fill="#E30000" points="17.507,39.727 8.365,30.584 8.365,17.598 17.507,8.456 30.493,8.456 39.635,17.598 39.635,30.584
+ 30.493,39.727 "/>
+ <polygon fill="#E40000" points="17.521,39.691 8.4,30.57 8.4,17.614 17.521,8.493 30.479,8.493 39.6,17.614 39.6,30.57
+ 30.479,39.691 "/>
+ <polygon fill="#E50000" points="17.536,39.657 8.436,30.559 8.436,17.63 17.536,8.529 30.464,8.529 39.562,17.63 39.562,30.559
+ 30.464,39.657 "/>
+ <polygon fill="#E60000" points="17.551,39.623 8.472,30.544 8.472,17.646 17.551,8.566 30.449,8.566 39.527,17.646 39.527,30.544
+ 30.449,39.623 "/>
+ <polygon fill="#E70000" points="17.566,39.589 8.507,30.529 8.507,17.662 17.566,8.603 30.436,8.603 39.492,17.662 39.492,30.529
+ 30.436,39.589 "/>
+ <polygon fill="#E80000" points="17.581,39.555 8.542,30.518 8.542,17.678 17.581,8.64 30.419,8.64 39.457,17.678 39.457,30.518
+ 30.419,39.555 "/>
+ <polygon fill="#E90000" points="17.595,39.52 8.578,30.503 8.578,17.693 17.595,8.676 30.404,8.676 39.422,17.693 39.422,30.503
+ 30.404,39.52 "/>
+ <polygon fill="#EA0000" points="17.61,39.484 8.614,30.489 8.614,17.709 17.61,8.713 30.391,8.713 39.387,17.709 39.387,30.489
+ 30.391,39.484 "/>
+ <polygon fill="#EB0000" points="17.625,39.451 8.649,30.477 8.649,17.726 17.625,8.75 30.375,8.75 39.352,17.726 39.352,30.477
+ 30.375,39.451 "/>
+ <polygon fill="#EC0000" points="17.64,39.417 8.685,30.462 8.685,17.742 17.64,8.787 30.359,8.787 39.314,17.742 39.314,30.462
+ 30.359,39.417 "/>
+ <polygon fill="#ED0000" points="17.654,39.383 8.72,30.449 8.72,17.757 17.654,8.823 30.346,8.823 39.279,17.757 39.279,30.449
+ 30.346,39.383 "/>
+ <polygon fill="#EE0000" points="17.669,39.35 8.756,30.436 8.756,17.773 17.669,8.86 30.331,8.86 39.244,17.773 39.244,30.436
+ 30.331,39.35 "/>
+ <polygon fill="#EF0000" points="17.684,39.312 8.792,30.422 8.792,17.79 17.684,8.897 30.316,8.897 39.208,17.79 39.208,30.422
+ 30.316,39.312 "/>
+ <polygon fill="#F00000" points="17.699,39.279 8.827,30.408 8.827,17.805 17.699,8.934 30.302,8.934 39.173,17.805 39.173,30.408
+ 30.302,39.279 "/>
+ <polygon fill="#F10000" points="17.713,39.245 8.862,30.395 8.862,17.821 17.713,8.971 30.286,8.971 39.137,17.821 39.137,30.395
+ 30.286,39.245 "/>
+ <polygon fill="#F20000" points="17.728,39.211 8.898,30.381 8.898,17.837 17.728,9.007 30.271,9.007 39.102,17.837 39.102,30.381
+ 30.271,39.211 "/>
+ <polygon fill="#F30000" points="17.743,39.177 8.934,30.367 8.934,17.853 17.743,9.044 30.257,9.044 39.066,17.853 39.066,30.367
+ 30.257,39.177 "/>
+ <polygon fill="#F40000" points="17.758,39.143 8.969,30.354 8.969,17.869 17.758,9.081 30.242,9.081 39.029,17.869 39.029,30.354
+ 30.242,39.143 "/>
+ <polygon fill="#F50000" points="17.772,39.107 9.004,30.341 9.004,17.885 17.772,9.117 30.229,9.117 38.995,17.885 38.995,30.341
+ 30.229,39.107 "/>
+ <polygon fill="#F60000" points="17.787,39.073 9.04,30.327 9.04,17.901 17.787,9.154 30.213,9.154 38.959,17.901 38.959,30.327
+ 30.213,39.073 "/>
+ <polygon fill="#F70000" points="17.802,39.039 9.076,30.312 9.076,17.917 17.802,9.191 30.198,9.191 38.924,17.917 38.924,30.312
+ 30.198,39.039 "/>
+ <polygon fill="#F80000" points="17.816,39.005 9.111,30.3 9.111,17.933 17.816,9.228 30.184,9.228 38.889,17.933 38.889,30.3
+ 30.184,39.005 "/>
+ <polygon fill="#F90000" points="17.832,38.971 9.146,30.286 9.146,17.949 17.832,9.265 30.169,9.265 38.854,17.949 38.854,30.286
+ 30.169,38.971 "/>
+ <polygon fill="#FA0000" points="17.846,38.938 9.182,30.271 9.182,17.965 17.846,9.301 30.154,9.301 38.816,17.965 38.816,30.271
+ 30.154,38.938 "/>
+ <polygon fill="#FB0000" points="17.861,38.902 9.218,30.259 9.218,17.981 17.861,9.338 30.139,9.338 38.782,17.981 38.782,30.259
+ 30.139,38.902 "/>
+ <polygon fill="#FC0000" points="17.875,38.867 9.253,30.246 9.253,17.997 17.875,9.375 30.124,9.375 38.746,17.997 38.746,30.246
+ 30.124,38.867 "/>
+ <polygon fill="#FD0000" points="17.891,38.833 9.289,30.232 9.289,18.013 17.891,9.411 30.109,9.411 38.711,18.013 38.711,30.232
+ 30.109,38.833 "/>
+ <polygon fill="#FE0000" points="17.905,38.799 9.324,30.219 9.324,18.029 17.905,9.448 30.096,9.448 38.675,18.029 38.675,30.219
+ 30.096,38.799 "/>
+ <path fill="#FF0000" d="M17.92,38.766l-8.56-8.561v-12.16l8.56-8.56h12.16l8.561,8.56v12.16l-8.561,8.561H17.92z"/>
+ </g>
+
+ <linearGradient id="XMLID_46_" gradientUnits="userSpaceOnUse" x1="582" y1="-986.6099" x2="582" y2="-1015.8911" gradientTransform="matrix(1 0 0 -1 -558 -977)">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#FF0000"/>
+ </linearGradient>
+ <path fill="url(#XMLID_46_)" d="M17.92,38.891L9.36,30.33V18.17l8.56-8.56h12.16l8.561,8.56v12.16l-8.561,8.561H17.92z"/>
+ <path d="M11.7,17.7l18.7,18.7l5.896-5.9L17.6,11.7l-5.9,5.9V17.7z"/>
+ <path d="M11.7,30.5l5.9,5.9l18.7-18.7L30.4,11.8L11.7,30.5z"/>
+</g>
+<g id="crop_x0020_marks">
+ <path fill="none" d="M48,48H0V0h48V48z"/>
+</g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg
new file mode 100644
index 0000000..e803a31
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st1 "fill:none;stroke:none;">
+ <!ENTITY st2 "fill:#000000;">
+ <!ENTITY st3 "fill:none;stroke:#FFFFFF;stroke-width:6.3469;stroke-linejoin:round;">
+ <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;">
+ <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st0;">
+ <g style="&st4;">
+ <path style="&st3;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2
+ c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/>
+ <path style="&st2;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2
+ c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/>
+ <path style="&st2;" d="M41.8,22.8l-5.1-4.2v-0.1L31,13.7v0l-6.5-5.5C24.2,8,24,8,23.8,8.2L6.2,22.9c-0.1,0.1-0.1,0.3,0.1,0.3h1.6H10h28.1h1.2h2.3c0.2,0,0.4-0.2,0.2-0.4z"/>
+ <path d="M35.8,16.8l0-5.1c0-0.2-0.1-0.4-0.3-0.4h-3.2c-0.2,0-0.3,0.1-0.3,0.3v2.2l3.9,2.9z"/>
+ <path d="M11.9,24.7V37c0,0.3,0.1,0.4,0.3,0.4h23.6c0.3,0,0.4-0.2,0.4-0.4V24.7H11.9z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st5;">
+ <path style="&st1;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg
new file mode 100644
index 0000000..dd84f3f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:#FFFFFF;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke-width:6.6112;stroke-linecap:round;stroke-linejoin:round;">
+ <!ENTITY st2 "stroke:#FFFFFF;stroke-width:6.6112;">
+ <!ENTITY st3 "fill:none;stroke:none;">
+ <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st5 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st4;">
+ <g>
+ <path style="&st2;" d="M41.7,35.3L26.6,9.4c-0.6-1-1.7-1.7-2.9-1.6c-1.2,0-2.3,0.7-2.9,1.7L6.3,35.4c-0.6,1-0.6,2.3,0,3.3c0.6,1,1.7,1.6,2.9,1.6h29.6c1.2,0,2.3-0.6,2.9-1.7c0.6-1,0.6-2.3,0-3.3z"/>
+ <path style="&st1;" d="M23.7,11L9.2,37h29.6L23.7,11z"/>
+ <path style="&st0;" d="M23.7,11.9L10.3,36.1h27.5l-14-24.1z"/>
+ <g>
+ <path style="&st5;" d="M24.1,34c-1.1,0-1.8-0.8-1.8-1.8c0-1.1,0.7-1.8,1.8-1.8c1.1,0,1.8,0.7,1.8,1.8c0,1-0.7,1.8-1.8,1.8h0z M22.9,29.3l-0.4-9.1h3.2l-0.4,9.1h-2.3z"/>
+ </g>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st4;">
+ <path style="&st3;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg
new file mode 100644
index 0000000..75fa83e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+ <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st3 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st2;">
+ <g>
+ <path style="&st1;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/>
+ <path style="&st3;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st2;">
+ <path style="&st0;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg
new file mode 100644
index 0000000..648299d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:#FFFFFF;stroke-width:12.1438;stroke-linejoin:round;">
+ <!ENTITY st1 "fill:none;stroke-width:1.2429;">
+ <!ENTITY st2 "fill:#FFFFFF;stroke:none;">
+ <!ENTITY st3 "fill:none;stroke:#FFFFFF;stroke-width:12.7649;stroke-linejoin:round;">
+ <!ENTITY st4 "fill:#FFFFFF;stroke-width:6.3824;stroke-linejoin:round;">
+ <!ENTITY st5 "fill:none;stroke:none;">
+ <!ENTITY st6 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st7 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:12.7649;stroke-linejoin:round;">
+ <!ENTITY st8 "stroke:none;">
+ <!ENTITY st9 "fill:none;stroke-width:4.9715;stroke-linejoin:round;">
+]>
+<svg xmlns="http://www.w3.org/2000/svg" width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve">
+ <g id="Layer_x0020_1" style="&st6;">
+ <path style="&st0;" d="M35.7,19.8v18.9H11V8.8h13.9l10.8,11z"/>
+ <path style="&st3;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/>
+ <path style="&st7;" d="M35.7,8.8H11v29.9h24.7V8.8z"/>
+ <path style="&st4;" d="M35.7,8.8H11v29.9h24.7V8.8z"/>
+ <path style="&st2;" d="M35.7,8.8H11v29.9h24.7V8.8z"/>
+ </g>
+ <g id="Layer_x0020_4" style="&st6;">
+ <path style="&st9;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/>
+ <path style="&st8;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/>
+ <path style="&st8;" d="M20.6,14.7l-2.5,2.5L17,13.4l3.6,1.3z"/>
+ <path style="&st1;" d="M19.6,22.2l3-0.3l2.4-2.4l0.4-2.8"/>
+ <path style="&st2;" d="M20.4,14.9L18.3,17l1.6,5.2l2.7-0.3l2.4-2.4l0.3-2.4l-5-2.2z"/>
+ </g>
+ <g id="crop" style="&st6;">
+ <path style="&st5;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg
new file mode 100644
index 0000000..6d88ffd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+ <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st3 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st2;">
+ <g>
+ <path style="&st1;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/>
+ <path style="&st3;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st2;">
+ <path style="&st0;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg
new file mode 100644
index 0000000..4a64a15
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:#000000;stroke-width:1.0944;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke:none;">
+ <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#FFFFFF;stroke-width:5.6139;stroke-miterlimit:4;">
+ <!ENTITY st3 "fill:none;stroke:none;">
+ <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st5 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st2;">
+ <g>
+ <path d="M9.5,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.4-6.5,14.4-14.4c0-8-6.5-14.4-14.4-14.4c-8,0-14.4,6.5-14.4,14.4z M12.8,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2c0,6.2-5,11.2-11.2,11.2c-6.2,0-11.2-5-11.2-11.2z"/>
+ <path d="M28.1,37.9l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+ <path d="M28.1,34.8l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+ <path d="M28.1,31.6l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8s0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8s-0.9-1.5-1.8-1.4z"/>
+ <path d="M23.1,41.3v0.9c0,0.9,0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6v-0.9h-3.3z"/>
+ <path style="&st1;" d="M35.9,18.7c0,6.6-5.4,12-12,12c-6.6,0-12-5.4-12-12s5.4-12,12-12c6.6,0,12,5.4,12,12z"/>
+ <path style="&st5;" d="M9.6,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.4-6.5,14.4-14.4c0-8-6.5-14.4-14.4-14.4c-8,0-14.4,6.5-14.4,14.4z M12.9,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2c0,6.2-5,11.2-11.2,11.2c-6.2,0-11.2-5-11.2-11.2z"/>
+ <path style="&st5;" d="M28.2,37.9l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+ <path style="&st5;" d="M28.2,34.7l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+ <path style="&st5;" d="M28.2,31.6l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+ <path style="&st5;" d="M23.1,41.3v0.9c0,0.9,0.7,1.6,1.6,1.6s1.6-0.7,1.6-1.6v-0.9h-3.3z"/>
+ <path style="&st0;" d="M22.3,28.3l-3.5-10.7c0,0,6.6,3.9,10.5,0"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st4;">
+ <path style="&st3;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg
new file mode 100644
index 0000000..d31aa9c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+ <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st3 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st2;">
+ <g>
+ <path style="&st1;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/>
+ <path style="&st3;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st2;">
+ <path style="&st0;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg
new file mode 100644
index 0000000..fc8d748
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:#000000;stroke:#FFFFFF;stroke-width:7.9139;stroke-linejoin:round;">
+ <!ENTITY st1 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st2 "fill:none;stroke:none;">
+ <!ENTITY st3 "fill:#000000;">
+ <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;">
+ <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_4" style="&st1;">
+ <g style="&st4;">
+ <path style="&st0;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/>
+ <path style="&st3;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/>
+ <path d="M11.7,17.7l18.7,18.7l5.9-5.9L17.6,11.7l-5.9,5.9z"/>
+ <path d="M11.7,30.5l5.9,5.9l18.7-18.7l-5.9-5.9L11.7,30.5z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st5;">
+ <path style="&st2;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh
new file mode 100644
index 0000000..4071619
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh
@@ -0,0 +1,977 @@
+#!/bin/bash
+# $Id: install.sh 7942 2008-03-26 06:08:08Z xmldoc $
+# $Source$ #
+
+# install.sh - Set up user environment for a XML/XSLT distribution
+
+# This is as an interactive installer for updating your
+# environment to use an XML/XSLT distribution such as the DocBook
+# XSL Stylesheets. Its main purpose is to configure your
+# environment with XML catalog data and schema "locating rules"
+# data provided in the XML/XSLT distribution.
+#
+# Although this installer was created for the DocBook project, it
+# is a general-purpose tool that can be used with any XML/XSLT
+# distribution that provides XML/SGML catalogs and locating rules.
+#
+# This script is mainly intended to make things easier for you if
+# you want to install a particular XML/XSLT distribution that has
+# not (yet) been packaged for your OS distro (Debian, Fedora,
+# whatever), or to use "snapshot" or development releases
+#
+# It works by updating your shell startup file (e.g., .bashrc and
+# .cshrc) and .emacs file and by finding or creating a writable
+# CatalogManager.properties file to update.
+#
+# It makes backup copies of any files it touches, and also
+# generates a uninstall.sh script for reverting its changes.
+#
+# In the same directory where it is located, it expects to find
+# the following four files:
+# - locatingrules.xml
+# - catalog.xml
+# - catalog
+# - .urilist
+# And if it's unable to locate a CatalogManager.properties file in
+# your environment, it expects to find an "example" one in the
+# same directory as itself, which it copies over to your
+# ~/.resolver directory.
+#
+# If the distribution contains any executables, change the value
+# of the thisBinDir to a colon-separated list of the pathnames of
+# the directories that contain those executables.
+
+# mydir is the "canonical" absolute pathname for install.sh
+mydir=$(cd -P $(dirname $0) && pwd -P) || exit 1
+
+thisLocatingRules=$mydir/locatingrules.xml
+thisXmlCatalog=$mydir/catalog.xml
+thisSgmlCatalog=$mydir/catalog
+
+# .urilist file contains a list of pairs of local pathnames and
+# URIs to test for catalog resolution
+thisUriList=$mydir/.urilist
+exampleCatalogManager=$mydir/.CatalogManager.properties.example
+thisCatalogManager=$HOME/.resolver/CatalogManager.properties
+
+# thisBinDir directory is a colon-separated list of the pathnames
+# to all directories that contain executables provided with the
+# distribution (for example, the DocBook XSL Stylesheets
+# distribution contains a "docbook-xsl-update" convenience script
+# for rsync'ing up to the latest docbook-xsl snapshot). The
+# install.sh script adds the value of thisBinDir to your PATH
+# environment variable
+thisBinDir=$mydir/tools/bin
+
+emit_message() {
+ echo "$1" 1>&2
+}
+
+if [ ! "${*#--batch}" = "$*" ]; then
+ batchmode="Yes";
+else
+ batchmode="No";
+ emit_message
+ if [ ! "$1" = "--test" ]; then
+ emit_message "NOTE: For non-interactive installs/uninstalls, use --batch"
+ if [ ! "$1" = "--uninstall" ]; then
+ emit_message
+ fi
+ fi
+fi
+
+osName="Unidentified"
+if uname -s | grep -qi "cygwin"; then
+ osName="Cygwin"
+fi
+
+classPathSeparator=":"
+if [ "$osName" = "Cygwin" ]; then
+ thisJavaXmlCatalog=$(cygpath -m $thisXmlCatalog)
+ classPathSeparator=";"
+else
+ thisJavaXmlCatalog=$thisXmlCatalog
+fi
+
+main() {
+ removeOldFiles
+ checkRoot
+ updateCatalogManager
+ checkForResolver
+ writeDotFiles
+ updateUserStartupFiles
+ updateUserDotEmacs
+ writeUninstallFile
+ writeTestFile
+ printExitMessage
+}
+
+removeOldFiles() {
+ rm -f $mydir/.profile.incl
+ rm -f $mydir/.cshrc.incl
+ rm -f $mydir/.emacs.el
+}
+
+checkRoot() {
+ if [ $(id -u) == "0" ]; then
+ cat 1>&2 <<EOF
+
+WARNING: This install script is meant to be run as a non-root
+ user, but you are running it as root.
+
+EOF
+ read -s -n1 -p "Are you sure you want to continue? [No] "
+ emit_message "$REPLY"
+ case $REPLY in
+ [yY])
+ emit_message
+ ;;
+ *) emit_message "OK, exiting without making changes."
+ exit
+ ;;
+ esac
+ fi
+ return 0
+}
+
+updateCatalogManager() {
+
+ # - finds or creates a writable CatalogManager.properties file
+ #
+ # - adds the catalog.xml file for this distribution to the
+ # CatalogManager.properties file found
+
+ if [ -z "$CLASSPATH" ]; then
+ cat 1>&2 <<EOF
+
+NOTE: There is no CLASSPATH variable set in your environment.
+ No attempt was made to find a CatalogManager.properties
+ file. Using $thisCatalogManager instead
+EOF
+ else
+ # split CLASSPATH in a list of pathnames by replacing all separator
+ # characters with spaces
+ if [ "$osName" = "Cygwin" ]; then
+ pathnames=$(echo $CLASSPATH | tr ";" " ")
+ else
+ pathnames=$(echo $CLASSPATH | tr ":" " ")
+ fi
+ for path in $pathnames; do
+ if [ "$osName" = "Cygwin" ]; then
+ path=$(cygpath -u $path)
+ fi
+ # strip out trailing slash from pathname
+ path=$(echo $path | sed 's/\/$//')
+ # find CatalogManager.properties file
+ if [ -f $path/CatalogManager.properties ];
+ then
+ existingCatalogManager=$path/CatalogManager.properties
+ break
+ fi
+ done
+ fi
+ # end of CLASSPATH check
+
+ if [ -w "$existingCatalogManager" ]; then
+ # existing CatalogManager.properties was found and it is
+ # writable, so use it
+ myCatalogManager=$existingCatalogManager
+ else
+ if [ -f "$existingCatalogManager" ]; then
+ # a non-writable CatalogManager.properties exists, so emit a
+ # note saying that it won't be used
+ cat 1>&2 <<EOF
+NOTE: $existingCatalogManager file found,
+ but you don't have permission to write to it.
+ Will instead use:
+ $thisCatalogManager
+EOF
+ else
+ # CLASSPATH is set, but no CatalogManager.properties found
+ if [ -n "$CLASSPATH" ]; then
+ cat 1>&2 <<EOF
+NOTE: No CatalogManager.properties found from CLASSPATH.
+ Will instead use:
+ $thisCatalogManager
+EOF
+ fi
+ fi
+ if [ "$batchmode" = "Yes" ]; then
+ emit_message
+ fi
+ # end of check for existing writable CatalogManager.properties
+
+ if [ -f $thisCatalogManager ]; then
+ myCatalogManager=$thisCatalogManager
+ else
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ emit_message
+ read -s -n1 -p "Create $thisCatalogManager file? [Yes] "
+ emit_message "$REPLY"
+ emit_message
+ fi
+ case $REPLY in
+ [nNqQ])
+ emitNoChangeMsg
+ ;;
+ *)
+ if [ ! -d "${thisCatalogManager%/*}" ]; then
+ mkdir -p ${thisCatalogManager%/*}
+ fi
+ cp $mydir/.CatalogManager.properties.example $thisCatalogManager || exit 1
+ emit_message "NOTE: Created the following file:"
+ emit_message " $thisCatalogManager"
+ myCatalogManager=$thisCatalogManager
+ ;;
+ esac
+ # end of creating "private" CatalogManager.properties
+ fi
+ # end of check for "private" CatalogManager.properties
+ fi
+ # end of check finding/creating writable CatalogManager.properties
+
+ if [ -n "$myCatalogManager" ]; then
+ etcXmlCatalog=
+ catalogsLine=$(grep "^catalogs=" $myCatalogManager)
+ if [ -f /etc/xml/catalog ] && [ "$osName" != "Cygwin" ] \
+ && [ "${catalogsLine#*/etc/xml/catalog*}" = "$catalogsLine" ]; then
+ cat 1>&2 <<EOF
+
+WARNING: /etc/xml/catalog exists but was not found in:
+ $myCatalogManager
+ If /etc/xml/catalog file has content, you probably
+ should reference it in:
+ $myCatalogManager
+ This installer can automatically add it for you,
+ but BE WARNED that once it has been added, the
+ uninstaller for this distribution CANNOT REMOVE IT
+ automatically during uninstall. If you no longer want
+ it included, you will need to remove it manually.
+
+EOF
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ read -s -n1 -p "Add /etc/xml/catalog to $myCatalogManager? [Yes] "
+ emit_message "$REPLY"
+ fi
+ case $REPLY in
+ [nNqQ])
+ emit_message
+ ;;
+ *)
+ etcXmlCatalog=/etc/xml/catalog
+ ;;
+ esac
+ fi
+
+ catalogBackup="$myCatalogManager.$$.bak"
+ if [ ! -w "${myCatalogManager%/*}" ]; then
+ emit_message
+ emit_message "WARNING: ${myCatalogManager%/*} directory is not writable."
+ emit_message
+ emitNoChangeMsg
+ else
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ emit_message
+ emit_message "Add $thisJavaXmlCatalog"
+ read -s -n1 -p "to $myCatalogManager file? [Yes] "
+ emit_message "$REPLY"
+ emit_message
+ fi
+ case $REPLY in
+ [nNqQ])
+ emitNoChangeMsg
+ ;;
+ *)
+ if [ "$catalogsLine" ] ; then
+ if [ "${catalogsLine#*$thisJavaXmlCatalog*}" != "$catalogsLine" ]; then
+ emit_message "NOTE: $thisJavaXmlCatalog"
+ emit_message " already in:"
+ emit_message " $myCatalogManager"
+ else
+ mv $myCatalogManager $catalogBackup || exit 1
+ sed "s#^catalogs=\(.*\)\$#catalogs=$thisJavaXmlCatalog;\1;$etcXmlCatalog#" $catalogBackup \
+ | sed 's/;\+/;/' | sed 's/;$//' > $myCatalogManager || exit 1
+ emit_message "NOTE: Successfully updated the following file:"
+ emit_message " $myCatalogManager"
+ emit_message " Backup written to:"
+ emit_message " $catalogBackup"
+ fi
+ else
+ mv $myCatalogManager $catalogBackup || exit 1
+ cp $catalogBackup $myCatalogManager
+ echo "catalogs=$thisJavaXmlCatalog;$etcXmlCatalog" \
+ | sed 's/;\+/;/' | sed 's/;$//' >> $myCatalogManager || exit 1
+ emit_message "NOTE: \"catalogs=\" line added to $myCatalogManager."
+ emit_message " Backup written to $catalogBackup"
+ fi
+ ;;
+ esac
+ # end of backing up and updating CatalogManager.properties
+ fi
+ fi
+ # end of CatalogManager.properties updates
+
+ if [ "$osName" = "Cygwin" ]; then
+ myCatalogManager=$(cygpath -m $myCatalogManager)
+ fi
+ return 0
+}
+
+writeDotFiles() {
+ while read; do
+ echo "$REPLY" >> $mydir/.profile.incl
+ done <<EOF
+# $thisBinDir is not in PATH, so add it
+if [ "\${PATH#*$thisBinDir*}" = "\$PATH" ]; then
+ PATH="$thisBinDir:\$PATH"
+ export PATH
+fi
+if [ -z "\$XML_CATALOG_FILES" ]; then
+ XML_CATALOG_FILES="$thisXmlCatalog"
+else
+ # $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
+ if [ "\${XML_CATALOG_FILES#*$thisXmlCatalog*}" = "\$XML_CATALOG_FILES" ]; then
+ XML_CATALOG_FILES="$thisXmlCatalog \$XML_CATALOG_FILES"
+ fi
+fi
+# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
+if [ -f /etc/xml/catalog ] && \
+ [ "\${XML_CATALOG_FILES#*/etc/xml/catalog*}" = "\$XML_CATALOG_FILES" ]; then
+ XML_CATALOG_FILES="\$XML_CATALOG_FILES /etc/xml/catalog"
+fi
+export XML_CATALOG_FILES
+
+if [ -z "\$SGML_CATALOG_FILES" ]; then
+ SGML_CATALOG_FILES="$thisSgmlCatalog"
+else
+ # $thisSgmlCatalog is not in SGML_CATALOG_FILES, so add it
+ if [ "\${SGML_CATALOG_FILES#*$thisSgmlCatalog}" = "\$SGML_CATALOG_FILES" ]; then
+ SGML_CATALOG_FILES="$thisSgmlCatalog:\$SGML_CATALOG_FILES"
+ fi
+fi
+# /etc/sgml/catalog exists but is not in SGML_CATALOG_FILES, so add it
+if [ -f /etc/sgml/catalog ] && \
+ [ "\${SGML_CATALOG_FILES#*/etc/sgml/catalog*}" = "\$SGML_CATALOG_FILES" ]; then
+ SGML_CATALOG_FILES="\$SGML_CATALOG_FILES:/etc/sgml/catalog"
+fi
+export SGML_CATALOG_FILES
+EOF
+
+while read; do
+ echo "$REPLY" >> $mydir/.cshrc.incl
+done <<EOF
+# $thisBinDir is not in PATH, so add it
+if ( "\\\`echo \$PATH | grep -v $thisBinDir\\\`" != "" ) then
+ setenv PATH "$thisBinDir:\$PATH"
+endif
+if ( ! $\?XML_CATALOG_FILES ) then
+ setenv XML_CATALOG_FILES "$thisXmlCatalog"
+# $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
+else if ( "\\\`echo \$XML_CATALOG_FILES | grep -v $thisXmlCatalog\\\`" != "" ) then
+ setenv XML_CATALOG_FILES "$thisXmlCatalog \$XML_CATALOG_FILES"
+endif
+endif
+# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
+if ( -f /etc/xml/catalog && "\\\`echo \$XML_CATALOG_FILES | grep -v /etc/xml/catalog\\\`" != "" ) then
+ setenv XML_CATALOG_FILES "\$XML_CATALOG_FILES /etc/xml/catalog"
+endif
+
+endif
+if ( ! $\?SGML_CATALOG_FILES ) then
+ setenv SGML_CATALOG_FILES "$thisSgmlCatalog"
+else if ( "\\\`echo \$SGML_CATALOG_FILES | grep -v $thisSgmlCatalog\\\`" != "" ) then
+ setenv SGML_CATALOG_FILES "$thisSgmlCatalog:\$SGML_CATALOG_FILES"
+endif
+endif
+# /etc/SGML/catalog exists but is not in SGML_CATALOG_FILES, so add it
+if ( -f /etc/sgml/catalog && "\\\`echo \$SGML_CATALOG_FILES | grep -v /etc/sgml/catalog\\\`" != "" ) then
+ setenv SGML_CATALOG_FILES {\$SGML_CATALOG_FILES}:/etc/sgml/catalog
+endif
+EOF
+
+if [ -n "$myCatalogManager" ]; then
+ myCatalogManagerDir=${myCatalogManager%/*}
+ while read; do
+ echo "$REPLY" >> $mydir/.profile.incl
+ done <<EOF
+
+
+if [ -z "\$CLASSPATH" ]; then
+ CLASSPATH="$myCatalogManagerDir"
+else
+ # $myCatalogManagerDir is not in CLASSPATH, so add it
+ if [ "\${CLASSPATH#*$myCatalogManagerDir*}" = "\$CLASSPATH" ]; then
+ CLASSPATH="$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
+ fi
+fi
+export CLASSPATH
+EOF
+
+ while read; do
+ echo "$REPLY" >> $mydir/.cshrc.incl
+ done <<EOF
+
+
+if ( ! $\?CLASSPATH ) then
+ setenv CLASSPATH "$myCatalogManagerDir"
+# $myCatalogManagerDir is not in CLASSPATH, so add it
+else if ( "\\\`echo \$CLASSPATH | grep -v $myCatalogManagerDir\\\`" != "" ) then
+ setenv CLASSPATH "$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
+endif
+endif
+EOF
+
+fi
+
+while read; do
+ echo "$REPLY" >> $mydir/.emacs.el
+done <<EOF
+(add-hook
+ 'nxml-mode-hook
+ (lambda ()
+ (setq rng-schema-locating-files-default
+ (append '("$thisLocatingRules")
+ rng-schema-locating-files-default ))))
+EOF
+
+return 0
+}
+
+updateUserStartupFiles() {
+ if [ ! "$batchmode" = "Yes" ]; then
+ cat 1>&2 <<EOF
+
+NOTE: To source your environment correctly for using the catalog
+ files in this distribution, you need to update one or more
+ of your shell startup files. This installer can
+ automatically make the necessary changes. Or, if you prefer,
+ you can make the changes manually.
+
+EOF
+ else
+ emit_message
+ fi
+
+ # if running csh or tcsh, target .cshrc and .tcshrc files for
+ # update; otherwise, target .bash_* and .profiles
+
+ parent=$(ps -p $PPID | grep "/")
+ if [ "${parent#*csh}" != "$parent" ] || [ "${parent#*tcsh}" != "$parent" ]; then
+ myStartupFiles=".cshrc .tcshrc"
+ appendLine="source $mydir/.cshrc.incl"
+ else
+ myStartupFiles=".bash_profile .bash_login .profile .bashrc"
+ appendLine=". $mydir/.profile.incl"
+ fi
+
+ for file in $myStartupFiles; do
+ if [ -f "$HOME/$file" ]; then
+ dotFileBackup=$HOME/$file.$$.bak
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ read -s -n1 -p "Update $HOME/$file? [Yes] "
+ emit_message "$REPLY"
+ fi
+ case $REPLY in
+ [nNqQ])
+ cat 1>&2 <<EOF
+
+NOTE: No change made to $HOME/$file. You either need
+ to add the following line to it, or manually source
+ the shell environment for this distribution each
+ time you want use it.
+
+$appendLine
+
+EOF
+ ;;
+ *)
+ lineExists="$(grep "$appendLine" $HOME/$file )"
+ if [ ! "$lineExists" ]; then
+ mv $HOME/$file $dotFileBackup || exit 1
+ cp $dotFileBackup $HOME/$file || exit 1
+ echo "$appendLine" >> $HOME/$file || exit 1
+ cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+ $HOME/$file
+ Backup written to:
+ $dotFileBackup
+
+EOF
+ else
+ cat 1>&2 <<EOF
+NOTE: The following file already contains information for this
+ distribution, so I did not update it.
+ $HOME/$file
+
+EOF
+ fi
+ ;;
+ esac
+ fi
+ done
+ if [ -z "$dotFileBackup" ]; then
+ if [ ! "$batchmode" = "Yes" ]; then
+ emit_message
+ fi
+ cat 1>&2 <<EOF
+NOTE: No shell startup files updated. You can source the
+ environment for this distribution manually, each time you
+ want to use it, by typing the following.
+
+$appendLine
+
+EOF
+ fi
+}
+
+updateUserDotEmacs() {
+ if [ -f $thisLocatingRules ]; then
+ cat 1>&2 <<EOF
+
+NOTE: This distribution includes a "schema locating rules" file
+ for Emacs/nXML. To use it, you should update either your
+ .emacs or .emacs.el file. This installer can automatically
+ make the necessary changes. Or, if you prefer, you can make
+ the changes manually.
+
+EOF
+
+ emacsAppendLine="(load-file \"$mydir/.emacs.el\")"
+ myEmacsFile=
+ for file in .emacs .emacs.el; do
+ if [ -f "$HOME/$file" ]; then
+ myEmacsFile=$HOME/$file
+ break
+ fi
+ done
+ if [ ! -f "$myEmacsFile" ]; then
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ read -s -n1 -p "No .emacs or .emacs.el file. Create one? [No] "
+ emit_message "$REPLY"
+ emit_message
+ fi
+ case $REPLY in
+ [yY])
+ myEmacsFile=$HOME/.emacs
+ touch $myEmacsFile
+ ;;
+ *)
+ cat 1>&2 <<EOF
+NOTE: No Emacs changes made. To use this distribution with,
+ Emacs/nXML, you can create a .emacs file and manually add
+ the following line to it, or you can run it as a command
+ within Emacs.
+
+$emacsAppendLine
+
+EOF
+ ;;
+ esac
+ fi
+ if [ -n "$myEmacsFile" ]; then
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ read -s -n1 -p "Update $myEmacsFile? [Yes] "
+ emit_message "$REPLY"
+ emit_message
+ fi
+ case $REPLY in
+ [nNqQ])
+ cat 1>&2 <<EOF
+
+NOTE: No change made to $myEmacsFile. To use this distribution
+ with Emacs/nXML, you can manually add the following line
+ to your $myEmacsFile, or you can run it as a command
+ within Emacs.
+
+$emacsAppendLine
+
+EOF
+ ;;
+ *)
+ lineExists="$(grep "$emacsAppendLine" $myEmacsFile)"
+ if [ ! "$lineExists" ]; then
+ dotEmacsBackup=$myEmacsFile.$$.bak
+ mv $myEmacsFile $dotEmacsBackup || exit 1
+ cp $dotEmacsBackup $myEmacsFile || exit 1
+ echo "$emacsAppendLine" >> $myEmacsFile || exit 1
+ cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+ $myEmacsFile
+ Backup written to:
+ $dotEmacsBackup
+EOF
+ else
+ cat 1>&2 <<EOF
+
+NOTE: The following file already contains information for this
+ distribution, so I did not update it.
+ $myEmacsFile
+
+EOF
+ fi
+ ;;
+ esac
+ fi
+fi
+}
+
+uninstall() {
+ if [ ! "$batchmode" = "Yes" ]; then
+ cat 1>&2 <<EOF
+
+NOTE: To "uninstall" this distribution, the changes made to your
+ CatalogManagers.properties, startup files, and/or .emacs
+ file need to be reverted. This uninstaller can automatically
+ revert them. Or, if you prefer, you can revert them manually.
+
+EOF
+ fi
+
+ if [ "$osName" = "Cygwin" ]; then
+ thisXmlCatalog=$thisJavaXmlCatalog
+ fi
+
+ # make "escaped" version of PWD to use with sed and grep
+ escapedPwd=$(echo $mydir | sed "s#/#\\\\\/#g")
+
+ # check to see if a non-empty value for catalogManager was fed
+ # to uninstaller.
+ if [ -n ${1#--catalogManager=} ]; then
+ myCatalogManager=${1#--catalogManager=}
+ catalogBackup="$myCatalogManager.$$.bak"
+ catalogsLine=$(grep "^catalogs=" $myCatalogManager)
+ if [ "$catalogsLine" ] ; then
+ if [ "${catalogsLine#*$thisXmlCatalog*}" != "$catalogsLine" ]; then
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ read -s -n1 -p "Revert $myCatalogManager? [Yes] "
+ emit_message "$REPLY"
+ fi
+ case $REPLY in
+ [nNqQ]*)
+ cat 1>&2 <<EOF
+
+NOTE: No change made to $myCatalogManager. You need to manually
+ remove the following path from the "catalog=" line.
+
+ $thisXmlCatalog
+
+EOF
+ ;;
+ *)
+ mv $myCatalogManager $catalogBackup || exit 1
+ sed "s#^catalogs=\(.*\)$thisXmlCatalog\(.*\)\$#catalogs=\1\2#" $catalogBackup \
+ | sed 's/;\+/;/' | sed 's/;$//' | sed 's/=;/=/' > $myCatalogManager || exit 1
+ cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+ $myCatalogManager
+ Backup written to:
+ $catalogBackup
+
+EOF
+ ;;
+ esac
+ else
+ emit_message "NOTE: No data for this distribution found in:"
+ emit_message " $myCatalogManager"
+ emit_message
+ fi
+ else
+ cat 1>&2 <<EOF
+NOTE: No data for this distribution was found in the following
+ file, so I did not revert it.
+ $myCatalogManager
+EOF
+ fi
+ fi
+
+ if [ -n "$myEmacsFile" ]; then
+ # check to see if a non-empty value for --dotEmacs file was fed
+ # to uninstaller.
+ if [ -n ${2#--dotEmacs=} ]; then
+ myEmacsFile=${2#--dotEmacs=}
+ revertLine="(load-file \"$escapedPwd\/\.emacs\.el\")"
+ loadLine="$(grep "$revertLine" "$myEmacsFile")"
+ if [ -n "$loadLine" ]; then
+ emit_message
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ read -s -n1 -p "Revert $myEmacsFile? [Yes] "
+ emit_message "$REPLY"
+ fi
+ case $REPLY in
+ [nNqQ]*)
+ cat 1>&2 <<EOF
+
+NOTE: No change made to $myEmacsFile. You need to manually
+remove the following line.
+
+(load-file \"$mydir/.emacs.el\")
+
+EOF
+ ;;
+ *)
+ dotEmacsBackup=$myEmacsFile.$$.bak
+ sed -e "/$revertLine/d" -i".$$.bak" $myEmacsFile || exit 1
+ cat 1>&2 <<EOF
+NOTE: successfully reverted the following file:
+ $myEmacsFile
+ Backup written to:
+ $dotEmacsBackup
+
+EOF
+ ;;
+ esac
+ else
+ emit_message "NOTE: No data for this distribution found in:"
+ emit_message " $myEmacsFile"
+ fi
+ fi
+ fi
+
+ # check all startup files
+ myStartupFiles=".bash_profile .bash_login .profile .bashrc .cshrc .tcshrc"
+ for file in $myStartupFiles; do
+ if [ -e "$HOME/$file" ]; then
+ case $file in
+ .tcshrc|.cshrc)
+ revertLine="source $mydir/.cshrc.incl"
+ revertLineEsc="source $escapedPwd\/\.cshrc\.incl"
+ ;;
+ *)
+ revertLine=". $mydir/.profile.incl"
+ revertLineEsc="\. $escapedPwd\/\.profile\.incl"
+ ;;
+ esac
+ lineExists="$(grep "$revertLineEsc" $HOME/$file )"
+ if [ "$lineExists" ]; then
+ REPLY=""
+ if [ ! "$batchmode" = "Yes" ]; then
+ read -s -n1 -p "Update $HOME/$file? [Yes] "
+ emit_message "$REPLY"
+ fi
+ case $REPLY in
+ [nNqQ]*)
+ cat 1>&2 <<EOF
+
+NOTE: No change made to $HOME/$file. You need to manually remove
+ the following line from it.
+
+ $revertLine
+
+EOF
+ ;;
+ *)
+ dotFileBackup=$HOME/$file.$$.bak
+ sed -e "/$revertLineEsc/d" -i".$$.bak" $HOME/$file || exit 1
+ cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+ $HOME/$file
+ Backup written to:
+ $dotFileBackup
+
+EOF
+ ;;
+ esac
+ else
+ emit_message "NOTE: No data for this distribution found in:"
+ emit_message " $HOME/$file"
+ emit_message
+ fi
+ fi
+ done
+ removeOldFiles
+ emit_message "Done. Deleted uninstall.sh file."
+ rm -f $mydir/test.sh || exit 1
+ rm -f $mydir/uninstall.sh || exit 1
+}
+
+writeUninstallFile() {
+ uninstallFile=$mydir/uninstall.sh
+ echo '#!/bin/bash' > $uninstallFile || exit 1
+ echo 'mydir=$(cd -P $(dirname $0) && pwd -P)' >> $uninstallFile || exit 1
+ echo "\$mydir/install.sh \\" >> $uninstallFile || exit 1
+ echo " --uninstall \\" >> $uninstallFile || exit 1
+ echo " --catalogManager=$myCatalogManager \\" >> $uninstallFile || exit 1
+ echo " --dotEmacs='$myEmacsFile' \\" >> $uninstallFile || exit 1
+ echo ' $@' >> $uninstallFile || exit 1
+ chmod 755 $uninstallFile || exit 1
+}
+
+writeTestFile() {
+ testFile=$mydir/test.sh
+ echo "#!/bin/bash" > $testFile || exit 1
+ echo 'mydir=$(cd -P $(dirname $0) && pwd -P)' >> $testFile || exit 1
+ echo '$mydir/install.sh --test' >> $testFile || exit 1
+ chmod 755 $testFile || exit 1
+}
+
+printExitMessage() {
+ cat 1>&2 <<EOF
+To source your shell environment for this distribution, type the
+following:
+
+$appendLine
+
+EOF
+}
+
+checkForResolver() {
+ resolverResponse="$(java org.apache.xml.resolver.apps.resolver uri -u foo 2>/dev/null)"
+ if [ -z "$resolverResponse" ]; then
+ cat 1>&2 <<EOF
+
+NOTE: Your environment does not seem to contain the Apache XML
+ Commons Resolver; without that, you can't use XML catalogs
+ with Java applications. For more information, see the "How
+ to use a catalog file" section in Bob Stayton's "DocBook
+ XSL: The Complete Guide"
+
+ http://sagehill.net/docbookxsl/UseCatalog.html
+
+EOF
+ fi
+}
+
+emitNoChangeMsg() {
+ cat 1>&2 <<EOF
+
+NOTE: No changes were made to CatalogManagers.properties. To
+ provide your Java tools with XML catalog information for
+ this distribution, you will need to make the appropriate
+ changes manually.
+
+EOF
+}
+
+testCatalogs() {
+ if [ ! -f "$thisXmlCatalog" ]; then
+ cat 1>&2 <<EOF
+
+FATAL: $thisXmlCatalog file needed but not found. Stopping.
+EOF
+ exit
+ fi
+
+ if [ -z "$XML_CATALOG_FILES" ]; then
+ emit_message
+ emit_message "WARNING: XML_CATALOG_FILES not set. Not testing with xmlcatalog."
+ else
+ xmlCatalogResponse="$(xmlcatalog 2>/dev/null)"
+ if [ -z "$xmlCatalogResponse" ]; then
+ cat 1>&2 <<EOF
+
+WARNING: Cannot locate the "xmlcatalog" command. Make sure that
+ you have libxml2 and its associated utilities installed.
+
+ http://xmlsoft.org/
+
+EOF
+ else
+ emit_message "Testing with xmlcatalog..."
+ # read in pathname-uri pairs from .urilist file
+ while read pair; do
+ if [ ! "${pair%* *}" = "." ]; then
+ path=$mydir/${pair%* *}
+ else
+ path=$mydir/
+ fi
+ uri=${pair#* *}
+ emit_message
+ emit_message " Tested: $uri"
+ for catalog in $XML_CATALOG_FILES; do
+ response="$(xmlcatalog $catalog $uri| grep -v "No entry")"
+ if [ -n "$response" ]; then
+ if [ "$response" = "$path" ]; then
+ emit_message " Result: $path"
+ break
+ else
+ emit_message " Result: FAILED"
+ fi
+ fi
+ done
+ done < $mydir/.urilist
+ fi
+ fi
+
+ if [ -z "$CLASSPATH" ]; then
+ emit_message
+ emit_message "NOTE: CLASSPATH not set. Not testing with Apache XML Commons Resolver."
+ else
+ if [ "$(checkForResolver)" ]; then
+ checkForResolver
+ else
+ emit_message
+ emit_message "Testing with Apache XML Commons Resolver..."
+ # read in pathname-uri pairs from .urilist file
+ while read pair; do
+ if [ ! "${pair%* *}" = "." ]; then
+ path=$mydir/${pair%* *}
+ else
+ path=$mydir/
+ fi
+ uri=${pair#* *}
+ emit_message
+ emit_message " Tested: $uri"
+ if [ ${uri%.dtd} != $uri ]; then
+ response="$(java org.apache.xml.resolver.apps.resolver system -s $uri | grep "Result")"
+ else
+ response="$(java org.apache.xml.resolver.apps.resolver uri -u $uri | grep "Result")"
+ fi
+ if [ "$response" ]; then
+ if [ "${response#*$path}" != "$response" ]; then
+ emit_message " Result: $path"
+ else
+ emit_message " Result: FAILED"
+ fi
+ echo
+ fi
+ done < $mydir/.urilist
+ fi
+ fi
+}
+
+# get opts and execute appropriate function
+case $1 in
+ *-uninstall)
+ uninstall $2 $3 $4
+ ;;
+ *-test)
+ testCatalogs
+ ;;
+ *)
+ main
+ ;;
+esac
+
+# Copyright
+# ---------
+# Copyright 2005-2007 Michael(tm) Smith <smith@sideshowbarker.net>
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, sublicense, and/or sell copies
+# of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+# vim: number
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl
new file mode 100644
index 0000000..593e9b0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl
@@ -0,0 +1,625 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:exsl="http://exslt.org/common"
+ version="1.0"
+ exclude-result-prefixes="doc ng db exsl">
+
+<xsl:import href="../html/chunk.xsl"/>
+
+<xsl:output method="html"/>
+
+<!-- ********************************************************************
+ $Id: javahelp.xsl 8400 2009-04-08 07:44:54Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="$exsl.node.set.available != 0
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="process.root"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:for-each select="/"> <!-- This is just a hook for building profiling stylesheets -->
+ <xsl:call-template name="helpset"/>
+ <xsl:call-template name="helptoc"/>
+ <xsl:call-template name="helpmap"/>
+ <xsl:call-template name="helpidx"/>
+ </xsl:for-each>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template name="header.navigation">
+</xsl:template>
+
+<xsl:template name="footer.navigation">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helpset">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir,'jhelpset.hs')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/helpset_1_0.dtd'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpset.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helpset.content">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <helpset version="1.0">
+ <title>
+ <xsl:value-of select="normalize-space($title)"/>
+ </title>
+
+ <!-- maps -->
+ <maps>
+ <homeID>top</homeID>
+ <mapref location="jhelpmap.jhm"/>
+ </maps>
+
+ <!-- views -->
+ <view>
+ <name>TOC</name>
+ <label>Table Of Contents</label>
+ <type>javax.help.TOCView</type>
+ <data>jhelptoc.xml</data>
+ </view>
+
+ <view>
+ <name>Index</name>
+ <label>Index</label>
+ <type>javax.help.IndexView</type>
+ <data>jhelpidx.xml</data>
+ </view>
+
+ <view>
+ <name>Search</name>
+ <label>Search</label>
+ <type>javax.help.SearchView</type>
+ <data engine="com.sun.java.help.search.DefaultSearchEngine">JavaHelpSearch</data>
+ </view>
+ </helpset>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helptoc">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir,'jhelptoc.xml')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/toc_1_0.dtd'"/>
+ <xsl:with-param name="encoding" select="$javahelp.encoding"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helptoc.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helptoc.content">
+ <toc version="1.0">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="jhtoc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="jhtoc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </toc>
+</xsl:template>
+
+<xsl:template match="set" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="book" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="book" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="part|reference|preface|chapter|appendix|article|colophon|glossary|bibliography"
+ mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="part|reference|preface|chapter|appendix|article"
+ mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates
+ select="article|preface|chapter|appendix|refentry|section|sect1|glossary|bibliography"
+ mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="section" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="section" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect1" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect2" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect2" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect3" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect3" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect4" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect4" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect5" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect5|colophon|refentry" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </tocitem>
+</xsl:template>
+
+
+<xsl:template match="glossary" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Glossary'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="$title"/>
+ </xsl:attribute>
+ </tocitem>
+
+</xsl:template>
+
+<xsl:template match="bibliography" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Bibliography'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="$title"/>
+ </xsl:attribute>
+
+ </tocitem>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helpmap">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir, 'jhelpmap.jhm')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/map_1_0.dtd'"/>
+ <xsl:with-param name="encoding" select="$javahelp.encoding"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpmap.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helpmap.content">
+ <map version="1.0">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)//set
+ | key('id',$rootid)//book
+ | key('id',$rootid)//part
+ | key('id',$rootid)//reference
+ | key('id',$rootid)//preface
+ | key('id',$rootid)//chapter
+ | key('id',$rootid)//appendix
+ | key('id',$rootid)//article
+ | key('id',$rootid)//colophon
+ | key('id',$rootid)//refentry
+ | key('id',$rootid)//section
+ | key('id',$rootid)//sect1
+ | key('id',$rootid)//sect2
+ | key('id',$rootid)//sect3
+ | key('id',$rootid)//sect4
+ | key('id',$rootid)//sect5
+ | key('id',$rootid)//indexterm
+ | key('id',$rootid)//glossary
+ | key('id',$rootid)//bibliography
+ | key('id',$rootid)//*[@id]"
+ mode="map"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="//set
+ | //book
+ | //part
+ | //reference
+ | //preface
+ | //chapter
+ | //appendix
+ | //article
+ | //colophon
+ | //refentry
+ | //section
+ | //sect1
+ | //sect2
+ | //sect3
+ | //sect4
+ | //sect5
+ | //indexterm
+ | //glossary
+ | //bibliography
+ | //*[@id]"
+ mode="map"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </map>
+</xsl:template>
+
+<xsl:template match="set" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="book" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="part|reference|preface|chapter|appendix|refentry|article|glossary|bibliography"
+ mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5|colophon" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='endofrange']" mode="map"/>
+
+<xsl:template match="indexterm" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="*[@id]" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helpidx">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir, 'jhelpidx.xml')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/index_1_0.dtd'"/>
+ <xsl:with-param name="encoding" select="$javahelp.encoding"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpidx.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helpidx.content">
+ <index version="1.0">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)//indexterm" mode="idx">
+ <xsl:sort select="primary"/>
+ <xsl:sort select="secondary"/>
+ <xsl:sort select="tertiary"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="//indexterm" mode="idx">
+ <xsl:sort select="primary"/>
+ <xsl:sort select="secondary"/>
+ <xsl:sort select="tertiary"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </index>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='endofrange']" mode="idx"/>
+
+<xsl:template match="indexterm" mode="idx">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="text">
+ <xsl:value-of select="normalize-space(primary)"/>
+ <xsl:if test="secondary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="normalize-space(secondary)"/>
+ </xsl:if>
+ <xsl:if test="tertiary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="normalize-space(tertiary)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="see">
+ <xsl:variable name="see"><xsl:value-of select="normalize-space(see)"/></xsl:variable>
+ <indexitem text="{$text} see '{$see}'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <indexitem text="{$text}" target="{$id}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Kludge for Xalan outputting &trade; which fails in javahelp -->
+<xsl:template name="dingbat.characters">
+ <!-- now that I'm using the real serializer, all that dingbat malarky -->
+ <!-- isn't necessary anymore... -->
+ <xsl:param name="dingbat">bullet</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">&#x2022;</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#x00A9;</xsl:when>
+ <xsl:when test="$dingbat='trademark' or $dingbat='trade'">
+ <xsl:choose>
+ <xsl:when test="contains(system-property('xsl:vendor'),
+ 'Apache Software Foundation')">
+ <sup>TM</sup>
+ </xsl:when>
+ <xsl:otherwise>&#x2122;</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$dingbat='registered'">&#x00AE;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='nbsp'">&#x00A0;</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">&#x201C;</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">&#x201D;</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">&#x2018;</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">&#x2019;</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">&#x2014;</xsl:when>
+ <xsl:when test="$dingbat='mdash'">&#x2014;</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">&#x2013;</xsl:when>
+ <xsl:when test="$dingbat='ndash'">&#x2013;</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#x2022;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl
new file mode 100644
index 0000000..eabac3e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="doc ng db exsl exslt">
+
+<xsl:import href="../html/chunk.xsl"/>
+
+<xsl:output method="html"/>
+
+<!-- ********************************************************************
+ $Id: javahelp.xsl 8400 2009-04-08 07:44:54Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:for-each select="$profiled-nodes"> <!-- This is just a hook for building profiling stylesheets -->
+ <xsl:call-template name="helpset"/>
+ <xsl:call-template name="helptoc"/>
+ <xsl:call-template name="helpmap"/>
+ <xsl:call-template name="helpidx"/>
+ </xsl:for-each>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template name="header.navigation">
+</xsl:template>
+
+<xsl:template name="footer.navigation">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helpset">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir,'jhelpset.hs')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/helpset_1_0.dtd'"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpset.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helpset.content">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <helpset version="1.0">
+ <title>
+ <xsl:value-of select="normalize-space($title)"/>
+ </title>
+
+ <!-- maps -->
+ <maps>
+ <homeID>top</homeID>
+ <mapref location="jhelpmap.jhm"/>
+ </maps>
+
+ <!-- views -->
+ <view>
+ <name>TOC</name>
+ <label>Table Of Contents</label>
+ <type>javax.help.TOCView</type>
+ <data>jhelptoc.xml</data>
+ </view>
+
+ <view>
+ <name>Index</name>
+ <label>Index</label>
+ <type>javax.help.IndexView</type>
+ <data>jhelpidx.xml</data>
+ </view>
+
+ <view>
+ <name>Search</name>
+ <label>Search</label>
+ <type>javax.help.SearchView</type>
+ <data engine="com.sun.java.help.search.DefaultSearchEngine">JavaHelpSearch</data>
+ </view>
+ </helpset>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helptoc">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir,'jhelptoc.xml')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/toc_1_0.dtd'"/>
+ <xsl:with-param name="encoding" select="$javahelp.encoding"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helptoc.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helptoc.content">
+ <toc version="1.0">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="jhtoc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="jhtoc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </toc>
+</xsl:template>
+
+<xsl:template match="set" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="book" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="book" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="part|reference|preface|chapter|appendix|article|colophon|glossary|bibliography" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="part|reference|preface|chapter|appendix|article" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="article|preface|chapter|appendix|refentry|section|sect1|glossary|bibliography" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="section" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="section" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect1" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect2" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect2" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect3" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect3" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect4" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect4" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="sect5" mode="jhtoc"/>
+ </tocitem>
+</xsl:template>
+
+<xsl:template match="sect5|colophon|refentry" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:attribute>
+ </tocitem>
+</xsl:template>
+
+
+<xsl:template match="glossary" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Glossary'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="$title"/>
+ </xsl:attribute>
+ </tocitem>
+
+</xsl:template>
+
+<xsl:template match="bibliography" mode="jhtoc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Bibliography'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <tocitem target="{$id}">
+ <xsl:attribute name="text">
+ <xsl:value-of select="$title"/>
+ </xsl:attribute>
+
+ </tocitem>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helpmap">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir, 'jhelpmap.jhm')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/map_1_0.dtd'"/>
+ <xsl:with-param name="encoding" select="$javahelp.encoding"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpmap.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helpmap.content">
+ <map version="1.0">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)//set | key('id',$rootid)//book | key('id',$rootid)//part | key('id',$rootid)//reference | key('id',$rootid)//preface | key('id',$rootid)//chapter | key('id',$rootid)//appendix | key('id',$rootid)//article | key('id',$rootid)//colophon | key('id',$rootid)//refentry | key('id',$rootid)//section | key('id',$rootid)//sect1 | key('id',$rootid)//sect2 | key('id',$rootid)//sect3 | key('id',$rootid)//sect4 | key('id',$rootid)//sect5 | key('id',$rootid)//indexterm | key('id',$rootid)//glossary | key('id',$rootid)//bibliography | key('id',$rootid)//*[@id]" mode="map"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="//set | //book | //part | //reference | //preface | //chapter | //appendix | //article | //colophon | //refentry | //section | //sect1 | //sect2 | //sect3 | //sect4 | //sect5 | //indexterm | //glossary | //bibliography | //*[@id]" mode="map"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </map>
+</xsl:template>
+
+<xsl:template match="set" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="book" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="part|reference|preface|chapter|appendix|refentry|article|glossary|bibliography" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5|colophon" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='endofrange']" mode="map"/>
+
+<xsl:template match="indexterm" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<xsl:template match="*[@id]" mode="map">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <mapID target="{$id}">
+ <xsl:attribute name="url">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:attribute>
+ </mapID>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="helpidx">
+ <xsl:call-template name="write.chunk.with.doctype">
+ <xsl:with-param name="filename" select="concat($base.dir, 'jhelpidx.xml')"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN'"/>
+ <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/index_1_0.dtd'"/>
+ <xsl:with-param name="encoding" select="$javahelp.encoding"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="helpidx.content"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="helpidx.content">
+ <index version="1.0">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)//indexterm" mode="idx">
+ <xsl:sort select="primary"/>
+ <xsl:sort select="secondary"/>
+ <xsl:sort select="tertiary"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="//indexterm" mode="idx">
+ <xsl:sort select="primary"/>
+ <xsl:sort select="secondary"/>
+ <xsl:sort select="tertiary"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </index>
+</xsl:template>
+
+<xsl:template match="indexterm[@class='endofrange']" mode="idx"/>
+
+<xsl:template match="indexterm" mode="idx">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="text">
+ <xsl:value-of select="normalize-space(primary)"/>
+ <xsl:if test="secondary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="normalize-space(secondary)"/>
+ </xsl:if>
+ <xsl:if test="tertiary">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="normalize-space(tertiary)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="see">
+ <xsl:variable name="see"><xsl:value-of select="normalize-space(see)"/></xsl:variable>
+ <indexitem text="{$text} see '{$see}'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <indexitem text="{$text}" target="{$id}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Kludge for Xalan outputting &trade; which fails in javahelp -->
+<xsl:template name="dingbat.characters">
+ <!-- now that I'm using the real serializer, all that dingbat malarky -->
+ <!-- isn't necessary anymore... -->
+ <xsl:param name="dingbat">bullet</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">&#8226;</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#169;</xsl:when>
+ <xsl:when test="$dingbat='trademark' or $dingbat='trade'">
+ <xsl:choose>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <sup>TM</sup>
+ </xsl:when>
+ <xsl:otherwise>&#8482;</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$dingbat='registered'">&#174;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='nbsp'">&#160;</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">&#8220;</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">&#8221;</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">&#8216;</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">&#8217;</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">&#8212;</xsl:when>
+ <xsl:when test="$dingbat='mdash'">&#8212;</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">&#8211;</xsl:when>
+ <xsl:when test="$dingbat='ndash'">&#8211;</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#8226;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl
new file mode 100644
index 0000000..5eee486
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl
@@ -0,0 +1,480 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!-- ********************************************************************
+ $Id: lib.xweb 7102 2007-07-20 15:35:24Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ This module implements DTD-independent functions
+
+ ******************************************************************** -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:template name="dot.count">
+ <!-- Returns the number of "." characters in a string -->
+ <xsl:param name="string"/>
+ <xsl:param name="count" select="0"/>
+ <xsl:choose>
+ <xsl:when test="contains($string, '.')">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string" select="substring-after($string, '.')"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="copy-string">
+ <!-- returns 'count' copies of 'string' -->
+ <xsl:param name="string"/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="result"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="count" select="$count - 1"/>
+ <xsl:with-param name="result">
+ <xsl:value-of select="$result"/>
+ <xsl:value-of select="$string"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$result"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="string.subst">
+ <xsl:param name="string"/>
+ <xsl:param name="target"/>
+ <xsl:param name="replacement"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $target)">
+ <xsl:variable name="rest">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="substring-after($string, $target)"/>
+ <xsl:with-param name="target" select="$target"/>
+ <xsl:with-param name="replacement" select="$replacement"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="concat(substring-before($string, $target), $replacement, $rest)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="xpointer.idref">
+ <xsl:param name="xpointer">http://...</xsl:param>
+ <xsl:choose>
+ <xsl:when test="starts-with($xpointer, '#xpointer(id(')">
+ <xsl:variable name="rest" select="substring-after($xpointer, '#xpointer(id(')"/>
+ <xsl:variable name="quote" select="substring($rest, 1, 1)"/>
+ <xsl:value-of select="substring-before(substring-after($xpointer, $quote), $quote)"/>
+ </xsl:when>
+ <xsl:when test="starts-with($xpointer, '#')">
+ <xsl:value-of select="substring-after($xpointer, '#')"/>
+ </xsl:when>
+ <!-- otherwise it's a pointer to some other document -->
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-magnitude">
+ <xsl:param name="length" select="'0pt'"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($length) = 0"/>
+ <xsl:when test="substring($length,1,1) = '0' or substring($length,1,1) = '1' or substring($length,1,1) = '2' or substring($length,1,1) = '3' or substring($length,1,1) = '4' or substring($length,1,1) = '5' or substring($length,1,1) = '6' or substring($length,1,1) = '7' or substring($length,1,1) = '8' or substring($length,1,1) = '9' or substring($length,1,1) = '.'">
+ <xsl:value-of select="substring($length,1,1)"/>
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="substring($length,2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-units">
+ <xsl:param name="length" select="'0pt'"/>
+ <xsl:param name="default.units" select="'px'"/>
+ <xsl:variable name="magnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="units">
+ <xsl:value-of select="substring($length, string-length($magnitude)+1)"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = ''">
+ <xsl:value-of select="$default.units"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$units"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-spec">
+ <xsl:param name="length" select="'0pt'"/>
+ <xsl:param name="default.units" select="'px'"/>
+
+ <xsl:variable name="magnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="units">
+ <xsl:value-of select="substring($length, string-length($magnitude)+1)"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$magnitude"/>
+ <xsl:choose>
+ <xsl:when test="$units='cm' or $units='mm' or $units='in' or $units='pt' or $units='pc' or $units='px' or $units='em'">
+ <xsl:value-of select="$units"/>
+ </xsl:when>
+ <xsl:when test="$units = ''">
+ <xsl:value-of select="$default.units"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized unit of measure: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-in-points">
+ <xsl:param name="length" select="'0pt'"/>
+ <xsl:param name="em.size" select="10"/>
+ <xsl:param name="pixels.per.inch" select="90"/>
+
+ <xsl:variable name="magnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="units">
+ <xsl:value-of select="substring($length, string-length($magnitude)+1)"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'pt'">
+ <xsl:value-of select="$magnitude"/>
+ </xsl:when>
+ <xsl:when test="$units = 'cm'">
+ <xsl:value-of select="$magnitude div 2.54 * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'mm'">
+ <xsl:value-of select="$magnitude div 25.4 * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'in'">
+ <xsl:value-of select="$magnitude * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'pc'">
+ <xsl:value-of select="$magnitude * 12.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'px'">
+ <xsl:value-of select="$magnitude div $pixels.per.inch * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'em'">
+ <xsl:value-of select="$magnitude * $em.size"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized unit of measure: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="pi-attribute">
+ <xsl:param name="pis" select="processing-instruction('BOGUS_PI')"/>
+ <xsl:param name="attribute">filename</xsl:param>
+ <xsl:param name="count">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($pis)">
+ <!-- not found -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="pi">
+ <xsl:value-of select="$pis[$count]"/>
+ </xsl:variable>
+ <xsl:variable name="pivalue">
+ <xsl:value-of select="concat(' ', normalize-space($pi))"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="contains($pivalue,concat(' ', $attribute, '='))">
+ <xsl:variable name="rest" select="substring-after($pivalue,concat(' ', $attribute,'='))"/>
+ <xsl:variable name="quote" select="substring($rest,1,1)"/>
+ <xsl:value-of select="substring-before(substring($rest,2),$quote)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$pis"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="lookup.key">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="table" select="''"/>
+
+ <xsl:if test="contains($table, ' ')">
+ <xsl:choose>
+ <xsl:when test="substring-before($table, ' ') = $key">
+ <xsl:variable name="rest" select="substring-after($table, ' ')"/>
+ <xsl:choose>
+ <xsl:when test="contains($rest, ' ')">
+ <xsl:value-of select="substring-before($rest, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="lookup.key">
+ <xsl:with-param name="key" select="$key"/>
+ <xsl:with-param name="table" select="substring-after(substring-after($table,' '), ' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+<xsl:template name="xpath.location">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="path" select="''"/>
+
+ <xsl:variable name="next.path">
+ <xsl:value-of select="local-name($node)"/>
+ <xsl:if test="$path != ''">/</xsl:if>
+ <xsl:value-of select="$path"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$node/parent::*">
+ <xsl:call-template name="xpath.location">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ <xsl:with-param name="path" select="$next.path"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$next.path"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="comment-escape-string">
+ <xsl:param name="string" select="''"/>
+
+ <xsl:if test="starts-with($string, '-')">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:call-template name="comment-escape-string.recursive">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+
+ <xsl:if test="substring($string, string-length($string), 1) = '-'">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+</xsl:template>
+<xsl:template name="comment-escape-string.recursive">
+ <xsl:param name="string" select="''"/>
+ <xsl:choose>
+ <xsl:when test="contains($string, '--')">
+ <xsl:value-of select="substring-before($string, '--')"/>
+ <xsl:value-of select="'- -'"/>
+ <xsl:call-template name="comment-escape-string.recursive">
+ <xsl:with-param name="string" select="substring-after($string, '--')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+ <xsl:template name="str.tokenize.keep.delimiters">
+ <xsl:param name="string" select="''"/>
+ <xsl:param name="delimiters" select="' '"/>
+ <xsl:choose>
+ <xsl:when test="not($string)"/>
+ <xsl:when test="not($delimiters)">
+ <xsl:call-template name="str.tokenize.keep.delimiters-characters">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="delimiters" select="$delimiters"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name="str.tokenize.keep.delimiters-characters">
+ <xsl:param name="string"/>
+ <xsl:if test="$string">
+ <ssb:token xmlns:ssb="http://sideshowbarker.net/ns"><xsl:value-of select="substring($string, 1, 1)"/></ssb:token>
+ <xsl:call-template name="str.tokenize.keep.delimiters-characters">
+ <xsl:with-param name="string" select="substring($string, 2)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:param name="string"/>
+ <xsl:param name="delimiters"/>
+ <xsl:variable name="delimiter" select="substring($delimiters, 1, 1)"/>
+ <xsl:choose>
+ <xsl:when test="not($delimiter)">
+ <ssb:token xmlns:ssb="http://sideshowbarker.net/ns"><xsl:value-of select="$string"/></ssb:token>
+ </xsl:when>
+ <xsl:when test="contains($string, $delimiter)">
+ <xsl:if test="not(starts-with($string, $delimiter))">
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="substring-before($string, $delimiter)"/>
+ <xsl:with-param name="delimiters" select="substring($delimiters, 2)"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- output each delimiter -->
+ <xsl:value-of select="$delimiter"/>
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="substring-after($string, $delimiter)"/>
+ <xsl:with-param name="delimiters" select="$delimiters"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="delimiters" select="substring($delimiters, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name="apply-string-subst-map">
+ <xsl:param name="content"/>
+ <xsl:param name="map.contents"/>
+ <xsl:variable name="replaced_text">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target" select="$map.contents[1]/@oldstring"/>
+ <xsl:with-param name="replacement" select="$map.contents[1]/@newstring"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$map.contents[2]">
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$replaced_text"/>
+ <xsl:with-param name="map.contents" select="$map.contents[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$replaced_text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<xsl:template name="count.uri.path.depth">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($filename, '/')">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="substring-after($filename, '/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="trim.common.uri.paths">
+ <xsl:param name="uriA" select="''"/>
+ <xsl:param name="uriB" select="''"/>
+ <xsl:param name="return" select="'A'"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($uriA, '/') and contains($uriB, '/') and substring-before($uriA, '/') = substring-before($uriB, '/')">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="substring-after($uriA, '/')"/>
+ <xsl:with-param name="uriB" select="substring-after($uriB, '/')"/>
+ <xsl:with-param name="return" select="$return"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$return = 'A'">
+ <xsl:value-of select="$uriA"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$uriB"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+ <xsl:template name="trim.text">
+ <xsl:param name="contents" select="."/>
+ <xsl:variable name="contents-left-trimmed">
+ <xsl:call-template name="trim-left">
+ <xsl:with-param name="contents" select="$contents"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="contents-trimmed">
+ <xsl:call-template name="trim-right">
+ <xsl:with-param name="contents" select="$contents-left-trimmed"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$contents-trimmed"/>
+ </xsl:template>
+
+ <xsl:template name="trim-left">
+ <xsl:param name="contents"/>
+ <xsl:choose>
+ <xsl:when test="starts-with($contents,'&#10;') or starts-with($contents,'&#13;') or starts-with($contents,' ') or starts-with($contents,'&#9;')">
+ <xsl:call-template name="trim-left">
+ <xsl:with-param name="contents" select="substring($contents, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="trim-right">
+ <xsl:param name="contents"/>
+ <xsl:variable name="last-char">
+ <xsl:value-of select="substring($contents, string-length($contents), 1)"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="($last-char = '&#10;') or ($last-char = '&#13;') or ($last-char = ' ') or ($last-char = '&#9;')">
+ <xsl:call-template name="trim-right">
+ <xsl:with-param name="contents" select="substring($contents, 1, string-length($contents) - 1)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917
new file mode 100644
index 0000000..c170cc0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917
@@ -0,0 +1,195 @@
+Note: This changelog is a record of descriptions of all changes
+made to the DocBook XSL manpages stylesheets during the time when
+they were maintained in their original home in the
+[cvs]/docbook/contrib/xsl/db2man area of the DocBook Project
+source-code repository at Sourceforge; that is, from October 2001
+(when they were contributed to the project by Martijn van Beers)
+until September 2002 (when they were moved to the
+[cvs]/docbook/xsl/manpages area and became a standard part of all
+subsequent DocBook XSL Stylesheets releases).
+
+2002-09-17 Norman Walsh <nwalsh@users.sourceforge.net>
+
+ * README, db2man.xsl, lists.xsl, sect23.xsl, synop.xsl, xref.xsl:
+ Moved to docbook/xsl/manpages
+
+ * db2man.xsl, synop.xsl: Patch from Joe Orton
+
+2002-06-16 <lotr@users.sourceforge.net>
+
+ * db2man.xsl: commit patch sent by Joe Orton:
+
+ This patch adds support for using the productname, date and title out of
+ a <referenceinfo> if one is present, rather than having to add each of
+ these individually for every refentry.
+
+ * db2man.xsl: Tim Waugh sent:
+
+ This patch normalizes space in each refname before displaying it in
+ the name section.
+
+2002-05-21 <lotr@users.sourceforge.net>
+
+ * xref.xsl: from Joe Orton:
+ this patch allows cross-referencing to a specific refname. I
+ need this since I'm documenting several different (but related)
+ functions per refentry, and want to cross-reference them individually,
+ rather than just by the title used for the refentry as a whole.
+
+2002-05-17 <lotr@users.sourceforge.net>
+
+ * lists.xsl: apply glosslist support patch from twaugh
+
+2002-05-15 <lotr@users.sourceforge.net>
+
+ * db2man.xsl: slightly sanitize the filenames we generate. again from twaugh
+
+ * db2man.xsl: Apply twaugh's fix for making the entity transform stuff work
+
+2002-05-14 <lotr@users.sourceforge.net>
+
+ * db2man.xsl: generalize the tip template for all admonitions
+ (caution,important,note,tip,warning)
+
+ * db2man.xsl: Apply Joe Orton's <tip> patch, modified to be indented. Also show "Tip"
+ in the title.
+
+ so if <tip><title>foo</title></tip>, you get
+ Tip: foo
+
+ * synop.xsl: rewrote funcprototype. It used to convert all its children to a single
+ string and the split it up again through recursion. Now has a nice
+ foreach loop for the paramdefs, which seems much cleaner than throwing
+ everything in a big string before processing it.
+
+2002-05-10 <lotr@users.sourceforge.net>
+
+ * db2man.xsl: add support for simpara
+
+ * db2man.xsl, lists.xsl: fix refsect2 titles
+
+ * synop.xsl: also from twaugh:
+
+ I found some input that goes wrong with the synop.xsl we have in CVS:
+
+ <group choice="opt">
+ <arg>-o <replaceable>FILE</replaceable></arg>
+ <arg>--output=<replaceable>FILE</replaceable></arg>
+ </group>
+
+ It gets rendered as (with *bold* and _italic_):
+
+ [*-o FILE* | *--output=FILE*]
+
+ The desired markup should look like:
+ The following macro does the trick:
+
+ [\fB-o \fIFILE\fR\fR | \fB--output=\fIFILE\fR\fR]
+
+ The trouble is that the named template 'bold' uses value-of, and so
+ strips <replaceable> of its significance.
+
+ Another thing I found is that the arg/replaceable template is
+ superfluous altogether: db2man.xsl has a 'replaceable' template which
+ does the same thing.
+
+ Here is a patch to make those two modifications.
+
+ NOTE TO SELF: must try to fix bold template so we can use it everywhere
+
+2002-05-09 <lotr@users.sourceforge.net>
+
+ * db2man.xsl: oops, removed too much
+
+ * db2man.xsl: remove stuff that's apparently left-over from sect23.xsl
+
+ * db2man.xsl, lists.xsl, synop.xsl: batch of patches from twaugh:
+ * This patch (based on one from Jirka Kosek) adds support for
+ block-level elements inside <para>s---<screen>s for example, or lists.
+ * This patch replaces entities (like '&#x8212;') with sensible
+ characters or groups of characters.
+ * This patch adds support for sbr.
+ * This patch normalizes spaces in varlistentry terms.
+ * This patch normalizes spaces in terminal varlistentry terms.
+ * This patch allows variable lists to be nested (once).
+ * This patch prevents variable list item paragraphs from merging into
+ one another.
+ * This patch improves the rendering of itemized lists, and adds support
+ for ordered lists and procedures.
+ * This patch makes some small adjustments to group/arg: don't put extra
+ spaces in where they aren't needed, and normalize the space of $arg.
+ * This patch makes adjustments to cmdsynopsis elements. In particular,
+ they can now be wrapped if no <sbr/> is provided.
+ * This patch adds funcsynopsis//* support. Again, wrapping is done
+ automatically.
+
+ * synop.xsl: make synopsises work for --arg=foo <arg>s too
+
+ * synop.xsl: remove unneccesary adding of whitespace for arg/replaceable
+
+2002-05-01 <lotr@users.sourceforge.net>
+
+ * db2man.xsl: This patch adds support for multiple refnames.
+
+ (another twaugh patch)
+
+ * db2man.xsl: modified ulink patch from twaugh. Be nice to content-less ulinks. But we
+ don't accomodate silly people who don't understand ulink and put the
+ url as the content too.
+
+ * db2man.xsl, synop.xsl: db2man.xsl:
+ * temporarily add some params that chunker.xsl needs
+ * fix bold/italic templates
+ * update calls to bold/italic templates for new syntax
+ synop.xsl:
+ * add support for synopfragment
+ * update calls to bold/italic templates for new syntax
+
+2002-04-30 <lotr@users.sourceforge.net>
+
+ * db2man.xsl: Add twaug's patch for xref support
+
+ * db2man.xsl: This patch adds support for:
+
+ - Multiple authors.
+ - A (single) man page editor.
+
+ (another patch from twaugh)
+
+ * db2man.xsl: more twaugh patches:
+ - Use refentrytitle, not refname[1], for title.
+ - Upper-case it.
+ - Use date, productname, and title.
+ - Pick up author from main document if not contained in refentry.
+ - Use refname[1] for man page filename, not refentrytitle.
+
+ * db2man.xsl: add varname support
+
+ * db2man.xsl: This patch makes userinput (an inline element) have inline formatting.
+
+ * db2man.xsl: This patch adds support for the top-level document being something
+ other than an article.
+
+ It also emits a helpful warning if no refentry elements are found.
+
+ * db2man.xsl: next twaugh patch:
+ Instead of writing to stdout, create a file for each
+ refentry. Plus, for bonus points, a file for each additional refname
+ within that entry (pointing to the main page).
+
+ * db2man.xsl: Add named templates for bold-ifying and italicizing stuff. Inspired
+ by yet another twaugh patch
+
+ * db2man.xsl, lists.xsl, sect23.xsl: consistently use &#10; instead of a newline
+
+ * db2man.xsl, synop.xsl: * add support for informalexample, screen, errorcode, constant, type,
+ quote, programlisting and citerefentry
+ * use the 'bold' and 'italic' named templates
+
+ * xref.xsl: New file.
+
+2001-12-01 Norman Walsh <nwalsh@users.sourceforge.net>
+
+ * README, db2man.xsl, lists.xsl, sect23.xsl, synop.xsl:
+ New file.
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl
new file mode 100644
index 0000000..9278561
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl
@@ -0,0 +1,411 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: block.xsl 8703 2010-07-06 20:57:06Z nwalsh $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="caution|important|note|tip|warning">
+ <xsl:call-template name="roff-if-start">
+ <xsl:with-param name="condition">n</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:call-template name="roff-if-end"/>
+ <xsl:text>.RS 4&#10;</xsl:text>
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>.BM yellow&#10;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="pinch.together"/>
+ <xsl:text>.ps +1&#10;</xsl:text>
+ <xsl:call-template name="make.bold.title"/>
+ <xsl:text>.ps -1&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.sp .5v&#10;</xsl:text>
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>.EM yellow&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text>.RE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <xsl:variable name="title.wrapper">
+ <xsl:value-of select="normalize-space(title[1])"/>
+ </xsl:variable>
+ <xsl:text>.PP&#10;</xsl:text>
+ <!-- * don't put linebreak after head; instead render it as a "run in" -->
+ <!-- * head, that is, inline, with a period and space following it -->
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($title.wrapper)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>. </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="formalpara/para">
+ <xsl:call-template name="mixed-block"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="para">
+ <!-- * FIXME: Need to extract the ancestor::footnote, etc. checking and -->
+ <!-- * move to named template so that we can call it from templates for -->
+ <!-- * other block elements also -->
+ <xsl:choose>
+ <!-- * If a para is a descendant of a footnote, etc., then indent it -->
+ <!-- * (unless it is the first child, in which case don't generate -->
+ <!-- * anything at all to mark its start). -->
+ <!-- * FIXME: *blurb checking should not be munged in here the way -->
+ <!-- * it currently is; this probably breaks blurb indenting. -->
+ <xsl:when test="ancestor::footnote or
+ ancestor::annotation or
+ ancestor::authorblurb or
+ ancestor::personblurb or
+ ancestor::callout">
+ <xsl:if test="preceding-sibling::*[not(name() ='')]">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS 4n</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.PP</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="mixed-block"/>
+ <xsl:if test="ancestor::footnote or
+ ancestor::annotation or
+ ancestor::authorblurb or
+ ancestor::personblurb">
+ <xsl:if test="preceding-sibling::*[not(name() ='')]">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <xsl:choose>
+ <xsl:when test="ancestor::footnote or
+ ancestor::annotation or
+ ancestor::authorblurb or
+ ancestor::personblurb or
+ ancestor::callout">
+ <xsl:if test="preceding-sibling::*[not(name() ='')]">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS 4n</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * Yes, address, synopsis, and funcsynopsisinfo are verbatim environments. -->
+<xsl:template match="literallayout|programlisting|screen|
+ address|synopsis|funcsynopsisinfo">
+ <xsl:param name="indent">
+ <!-- * Only indent this verbatim if $man.indent.verbatims is -->
+ <!-- * non-zero and it is not a child of a *synopsis element or a -->
+ <!-- * descendant of a refsynopsisdiv -->
+ <xsl:if test="not($man.indent.verbatims = 0)
+ and not(substring(local-name(..),
+ string-length(local-name(..))-7) = 'synopsis')
+ and not(ancestor::*[local-name() = 'refsynopsisdiv'])
+ ">
+ <xsl:text>Yes</xsl:text>
+ </xsl:if>
+ </xsl:param>
+
+ <!-- * if this verbatim environment starts with a newline/linebreak -->
+ <!-- * (that is, if there is a linebreak after the opening tag), that -->
+ <!-- * break would otherwise show up in output; that does not seem to -->
+ <!-- * be what most users would expect, so we check to see if it does -->
+ <!-- * indeed start with a leading newline. if so, later in this -->
+ <!-- * template, we adjust for the leading new line by doing some -->
+ <!-- * monkeyshines with "sp -1" vertical spacing -->
+ <xsl:variable name="adjust-for-leading-newline">
+ <xsl:if test="substring(., 1, 1) = '&#10;'">Yes</xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- * Check to see if this verbatim item is within a parent element that -->
+ <!-- * allows mixed content. -->
+ <!-- * -->
+ <!-- * If it is within a mixed-content parent, then a line space is -->
+ <!-- * already added before it by the mixed-block template, so we don't -->
+ <!-- * need to add one here. -->
+ <!-- * -->
+ <!-- * If it is not within a mixed-content parent, then we need to add a -->
+ <!-- * line space before it. -->
+ <xsl:when test="parent::caption|parent::entry|parent::para|
+ parent::td|parent::th" /> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$indent = 'Yes'">
+ <!-- * start indented section -->
+ <xsl:call-template name="roff-if-start"/>
+ <!-- * only indent in TTY output, not in non-TTY/PS -->
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($man.indent.width = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$man.indent.width"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="roff-if-end"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="self::funcsynopsisinfo">
+ <!-- * All Funcsynopsisinfo content is by default rendered in bold, -->
+ <!-- * because the man(7) man page says this: -->
+ <!-- * -->
+ <!-- * For functions, the arguments are always specified using -->
+ <!-- * italics, even in the SYNOPSIS section, where the rest of -->
+ <!-- * the function is specified in bold -->
+ <!-- * -->
+ <!-- * Look through the contents of the man/man2 and man3 directories -->
+ <!-- * on your system, and you'll see that most existing pages do follow -->
+ <!-- * this "bold everything in function synopsis" rule. -->
+ <!-- * -->
+ <!-- * Users who don't want the bold output can choose to adjust the -->
+ <!-- * man.font.funcsynopsisinfo parameter on their own. So even if you -->
+ <!-- * don't personally like the way it looks, please don't change the -->
+ <!-- * default to be non-bold - because it's a convention that's -->
+ <!-- * followed is the vast majority of existing man pages that document -->
+ <!-- * functions, and we need to follow it by default, like it or no. -->
+ <xsl:text>.ft </xsl:text>
+ <xsl:value-of select="$man.font.funcsynopsisinfo"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="verbatim-block-start"/>
+ <xsl:text>.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.fi&#10;</xsl:text>
+ <xsl:call-template name="verbatim-block-end"/>
+ <xsl:text>.ft&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Other verbatims do not need to get bolded -->
+ <xsl:call-template name="verbatim-block-start"/>
+ <xsl:text>.nf&#10;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="self::literallayout|self::programlisting|self::screen
+ and not(ancestor::*[local-name() = 'refsynopsisdiv'])
+ and not($man.output.better.ps.enabled = 0)
+ ">
+ <!-- * if this is a literallayout|programlisting|screen, -->
+ <!-- * and user has set man.output.better.ps.enabled to non-zero, -->
+ <!-- * then we put a background behind it in non-TTY output; except -->
+ <!-- * if it’s a descendant of a refsynopsisdiv (as can be -->
+ <!-- * found in the git docs) -->
+ <xsl:choose>
+ <!-- * if content has a leading newline, we need to back up -->
+ <!-- * one line vertically to get it boxed correctly -->
+ <xsl:when test="not($adjust-for-leading-newline = '')">
+ <xsl:call-template name="roff-if-start">
+ <xsl:with-param name="condition">t</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>.sp -1&#10;</xsl:text>
+ <xsl:call-template name="roff-if-end"/>
+ <xsl:text>.BB lightgray</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:text>adjust-for-leading-newline&#10;</xsl:text>
+ <!-- * in non-TTY output, for the case where we have a -->
+ <!-- * leading newline, we need to also back up one line -->
+ <!-- * vertically inside the background box -->
+ <xsl:text>.sp -1&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.BB lightgray&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($adjust-for-leading-newline = '')">
+ <xsl:text>.EB lightgray</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:text>adjust-for-leading-newline&#10;</xsl:text>
+ <xsl:call-template name="roff-if-start">
+ <xsl:with-param name="condition">t</xsl:with-param>
+ </xsl:call-template>
+ <!-- * in non-TTY output, for the case where we have a -->
+ <!-- * leading newline, we need to add back at the end of -->
+ <!-- * the content some of the vertical space we chopped -->
+ <!-- * off at the beginning -->
+ <xsl:text>.sp 1&#10;</xsl:text>
+ <xsl:call-template name="roff-if-end"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.EB lightgray&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise this is not a literallayout|programlisting|screen, -->
+ <!-- * so we don’t put a background behind -->
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>.fi&#10;</xsl:text>
+ <xsl:call-template name="verbatim-block-end"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$indent = 'Yes'">
+ <!-- * end indented section -->
+ <xsl:call-template name="roff-if-start"/>
+ <xsl:text>.RE&#10;</xsl:text>
+ <xsl:call-template name="roff-if-end"/>
+ </xsl:if>
+ <!-- * if this verbatim environment has a following sibling node, -->
+ <!-- * output a line of space to separate the content -->
+ <xsl:if test="following-sibling::text()
+ |following-sibling::para
+ |following-sibling::simpara">
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="table|informaltable">
+ <xsl:apply-templates select="." mode="to.tbl">
+ <!--* we call the to.tbl mode with the "source" param so that we can -->
+ <!--* preserve the context information and pass it down to the -->
+ <!--* named templates that do the actual table processing -->
+ <xsl:with-param name="source" select="ancestor::refentry/refnamediv[1]/refname[1]"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="informalexample">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="figure|example">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="mediaobject">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:text>[IMAGE]</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="textobject[parent::inlinemediaobject]">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="textobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$object" mode="object.title.markup.textonly"/>
+ </xsl:param>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($title)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * suppress abstract -->
+<xsl:template match="abstract"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl
new file mode 100644
index 0000000..a9492fa
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl
@@ -0,0 +1,6013 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<xsl:stylesheet version="2.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:u="http://docbook.sf.net/xmlns/unichar/1.0"
+ exclude-result-prefixes="u">
+
+<!-- ********************************************************************
+ $Id: charmap.groff.xsl 7806 2008-03-04 03:27:47Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:character-map name="groff">
+
+ <!-- * *************************************************************** -->
+ <!-- * Commentary -->
+ <!-- * *************************************************************** -->
+ <!-- * -->
+ <!-- * This file maps a selection of Unicode symbols and special -->
+ <!-- * characters (about 800) to corresponding groff escape sequences.-->
+ <!-- * -->
+ <!-- * Although the format of this file follows the "character map" -->
+ <!-- * format described in the XSLT 2.0 specification[1], the file can -->
+ <!-- * also be used with an appropriate XSLT 1.0 stylesheet and any -->
+ <!-- * XSLT 1.0 processor. -->
+ <!-- * -->
+ <!-- * [1] http://www.w3.org/TR/xslt20/#character-maps -->
+ <!-- * -->
+ <!-- * In order to make the character map more readable, and to make -->
+ <!-- * it possible to create subsets of it at run time, it uses the -->
+ <!-- * following "extension attributes" (in the "unichar" namespace): -->
+ <!-- * -->
+ <!-- * - u:name = ISO character name (e.g., "OHM SIGN") -->
+ <!-- * - u:entity = ISO entity name (e.g., "ohm") -->
+ <!-- * - u:block = Unicode block name (e.g., "Letterlike Symbols") -->
+ <!-- * - u:class = character class (e.g., "bullets") -->
+ <!-- * -->
+ <!-- * Use of such extension attributes is permitted by the XSLT 2.0 -->
+ <!-- * spec; see the "Extension Attributes" section[2]. -->
+ <!-- * -->
+ <!-- * [2] http://www.w3.org/TR/xslt20/#extension-attributes -->
+ <!-- * -->
+ <!-- * *************************************************************** -->
+ <!-- * Acknowledgements -->
+ <!-- * *************************************************************** -->
+ <!-- * The following references were consulted when selecting roff -->
+ <!-- * mappings and character information: -->
+ <!-- * -->
+ <!-- * - groff_char(7) man page[3] -->
+ <!-- * - groff info file[4]; in particular, the "Page Motions" node[5] -->
+ <!-- * - tables in "Character Sets" chapter of "XML In a Nutshell"[6] -->
+ <!-- * - Zvon Character Search[7] -->
+ <!-- * -->
+ <!-- * [3] http://www.linux.se/showMan.php?TITLE=groff_char&SECTION=7 -->
+ <!-- * [4] http://www.fifi.org/cgi-bin/info2www?(groff) -->
+ <!-- * [5] http://www.fifi.org/cgi-bin/info2www?(groff)Page+Motions -->
+ <!-- * [6] http://www.ibiblio.org/xml/books/xian2/ -->
+ <!-- * [7] http://zvon.org/other/charSearch/PHP/search.php -->
+ <!-- * -->
+ <!-- * The initial version of this file (before the "string" mappings -->
+ <!-- * were added) was generated by taking the "unichars.el" file from -->
+ <!-- * Norm Walsh's "xmlunicode.el"[8] elisp distro, and running a -->
+ <!-- * script on it to convert it to XML. -->
+ <!-- * -->
+ <!-- * [8] http://nwalsh.com/emacs/xmlchars/ -->
+ <!-- * -->
+ <!-- * The idea for implementing a character map in the DocBook Project -->
+ <!-- * manpages system was inspired by Steve Cheng's docbook2x[9]; -->
+ <!-- * in particular, its "utf8trans" utility and character-map system. -->
+ <!-- * -->
+ <!-- * [9] http://docbook2x.sourceforge.net/ -->
+ <!-- * -->
+ <!-- * ################################################################# -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Latin-1/ISO-8859-1 -->
+ <!-- * x00a0 to x00ff -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * A no-break space can be written two ways in roff; the difference, -->
+ <!-- * according to the "Page Motions" node in the groff info page, is: -->
+ <!-- * -->
+ <!-- * "\ " = -->
+ <!-- * An unbreakable and unpaddable (i.e. not expanded during filling) -->
+ <!-- * space. -->
+ <!-- * -->
+ <!-- * "\~" = -->
+ <!-- * An unbreakable space that stretches like a normal -->
+ <!-- * inter-word space when a line is adjusted." -->
+ <!-- * -->
+ <!-- * Unfortunately, roff seems to do some weird things with long -->
+ <!-- * lines that only have words separated by "\~" spaces, so it's -->
+ <!-- * safer just to stick with the "\ " space -->
+ <xsl:output-character
+ character="&#x00a0;"
+ u:name="NO-BREAK SPACE"
+ u:entity="nbsp"
+ string="\ \&amp;"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a1;"
+ u:name="INVERTED EXCLAMATION MARK"
+ u:entity="iexcl"
+ string="\(r!"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a2;"
+ u:name="CENT SIGN"
+ u:entity="cent"
+ string="\(ct"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a3;"
+ u:name="POUND SIGN"
+ u:entity="pound"
+ string="\(Po"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a4;"
+ u:name="CURRENCY SIGN"
+ u:entity="curren"
+ string="\(Cs"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a5;"
+ u:name="YEN SIGN"
+ u:entity="yen"
+ string="\(Ye"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a6;"
+ u:name="BROKEN BAR"
+ u:entity="brvbar"
+ string="\(bb"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a7;"
+ u:name="SECTION SIGN"
+ u:entity="sect"
+ string="\(sc"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a8;"
+ u:name="DIAERESIS"
+ u:entity="Dot"
+ string="\(ad"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a9;"
+ u:name="COPYRIGHT SIGN"
+ u:entity="copy"
+ string="\(co"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00aa;"
+ u:name="FEMININE ORDINAL INDICATOR"
+ u:entity="ordf"
+ string="\(Of"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ab;"
+ u:name="LEFT-POINTING DOUBLE ANGLE QUOTATION MARK"
+ u:entity="laquo"
+ string="\(Fo"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ac;"
+ u:name="NOT SIGN"
+ u:entity="not"
+ string="\(no"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <!-- * groff_char(7) man page sayxsl: "the soft hyphen control character -->
+ <!-- * (prints as itself). groff never use this character for output -->
+ <!-- * (thus it is omitted in the table below); the input character 173 -->
+ <!-- * is onto \%." -->
+ <xsl:output-character
+ character="&#x00ad;"
+ u:name="SOFT HYPHEN"
+ u:entity="shy"
+ string="\%"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ae;"
+ u:name="REGISTERED SIGN"
+ u:entity="reg"
+ string="\(rg"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00af;"
+ u:name="MACRON"
+ u:entity="macr"
+ string="\(a-"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b0;"
+ u:name="DEGREE SIGN"
+ u:entity="deg"
+ string="\(de"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b1;"
+ u:name="PLUS-MINUS SIGN"
+ u:entity="plusmn"
+ string="\(+-"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b2;"
+ u:name="SUPERSCRIPT TWO"
+ u:entity="sup2"
+ string="\(S2"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b3;"
+ u:name="SUPERSCRIPT THREE"
+ u:entity="sup3"
+ string="\(S3"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b4;"
+ u:name="ACUTE ACCENT"
+ u:entity="acute"
+ string="\(aa"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b5;"
+ u:name="MICRO SIGN"
+ u:entity="micro"
+ string="\(mc"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b6;"
+ u:name="PILCROW SIGN"
+ u:entity="para"
+ string="\(ps"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <!-- * according to groff_char(7), I think the escape string \(pc -->
+ <!-- * "periodcentered" could also be used for middot; not sure which -->
+ <!-- * is better, but "md" mnemonic is a better fit :-) -->
+ <xsl:output-character
+ character="&#x00b7;"
+ u:name="MIDDLE DOT"
+ u:entity="middot"
+ string="\(md"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b8;"
+ u:name="CEDILLA"
+ u:entity="cedil"
+ string="\(ac"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b9;"
+ u:name="SUPERSCRIPT ONE"
+ u:entity="sup1"
+ string="\(S1"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ba;"
+ u:name="MASCULINE ORDINAL INDICATOR"
+ u:entity="ordm"
+ string="\(Om"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bb;"
+ u:name="RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"
+ u:entity="raquo"
+ string="\(Fc"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bc;"
+ u:name="VULGAR FRACTION ONE QUARTER"
+ u:entity="frac14"
+ string="\(14"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bd;"
+ u:name="VULGAR FRACTION ONE HALF"
+ u:entity="frac12"
+ string="\(12"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00be;"
+ u:name="VULGAR FRACTION THREE QUARTERS"
+ u:entity="frac34"
+ string="\(34"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bf;"
+ u:name="INVERTED QUESTION MARK"
+ u:entity="iquest"
+ string="\(r?"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00c0;"
+ u:name="LATIN CAPITAL LETTER A WITH GRAVE"
+ u:entity="Agrave"
+ string="\(`A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c1;"
+ u:name="LATIN CAPITAL LETTER A WITH ACUTE"
+ u:entity="Aacute"
+ string="\('A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c2;"
+ u:name="LATIN CAPITAL LETTER A WITH CIRCUMFLEX"
+ u:entity="Acirc"
+ string="\(^A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c3;"
+ u:name="LATIN CAPITAL LETTER A WITH TILDE"
+ u:entity="Atilde"
+ string="\(~A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c4;"
+ u:name="LATIN CAPITAL LETTER A WITH DIAERESIS"
+ u:entity="Auml"
+ string="\(:A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c5;"
+ u:name="LATIN CAPITAL LETTER A WITH RING ABOVE"
+ u:entity="Aring"
+ string="\(oA"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c6;"
+ u:name="LATIN CAPITAL LETTER AE"
+ u:entity="AElig"
+ string="\(AE"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c7;"
+ u:name="LATIN CAPITAL LETTER C WITH CEDILLA"
+ u:entity="Ccedil"
+ string="\(,C"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c8;"
+ u:name="LATIN CAPITAL LETTER E WITH GRAVE"
+ u:entity="Egrave"
+ string="\(`E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c9;"
+ u:name="LATIN CAPITAL LETTER E WITH ACUTE"
+ u:entity="Eacute"
+ string="\('E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ca;"
+ u:name="LATIN CAPITAL LETTER E WITH CIRCUMFLEX"
+ u:entity="Ecirc"
+ string="\(^E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cb;"
+ u:name="LATIN CAPITAL LETTER E WITH DIAERESIS"
+ u:entity="Euml"
+ string="\(:E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cc;"
+ u:name="LATIN CAPITAL LETTER I WITH GRAVE"
+ u:entity="Igrave"
+ string="\(`I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cd;"
+ u:name="LATIN CAPITAL LETTER I WITH ACUTE"
+ u:entity="Iacute"
+ string="\('I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ce;"
+ u:name="LATIN CAPITAL LETTER I WITH CIRCUMFLEX"
+ u:entity="Icirc"
+ string="\(^I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cf;"
+ u:name="LATIN CAPITAL LETTER I WITH DIAERESIS"
+ u:entity="Iuml"
+ string="\(:I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d0;"
+ u:name="LATIN CAPITAL LETTER ETH"
+ u:entity="ETH"
+ string="\(-D"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d1;"
+ u:name="LATIN CAPITAL LETTER N WITH TILDE"
+ u:entity="Ntilde"
+ string="\(~N"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d2;"
+ u:name="LATIN CAPITAL LETTER O WITH GRAVE"
+ u:entity="Ograve"
+ string="\(`O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d3;"
+ u:name="LATIN CAPITAL LETTER O WITH ACUTE"
+ u:entity="Oacute"
+ string="\('O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d4;"
+ u:name="LATIN CAPITAL LETTER O WITH CIRCUMFLEX"
+ u:entity="Ocirc"
+ string="\(^O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d5;"
+ u:name="LATIN CAPITAL LETTER O WITH TILDE"
+ u:entity="Otilde"
+ string="\(~O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d6;"
+ u:name="LATIN CAPITAL LETTER O WITH DIAERESIS"
+ u:entity="Ouml"
+ string="\(:O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d7;"
+ u:name="MULTIPLICATION SIGN"
+ u:entity="times"
+ string="\(mu"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00d8;"
+ u:name="LATIN CAPITAL LETTER O WITH STROKE"
+ u:entity="Oslash"
+ string="\(/O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d9;"
+ u:name="LATIN CAPITAL LETTER U WITH GRAVE"
+ u:entity="Ugrave"
+ string="\(`U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00da;"
+ u:name="LATIN CAPITAL LETTER U WITH ACUTE"
+ u:entity="Uacute"
+ string="\('U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00db;"
+ u:name="LATIN CAPITAL LETTER U WITH CIRCUMFLEX"
+ u:entity="Ucirc"
+ string="\(^U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00dc;"
+ u:name="LATIN CAPITAL LETTER U WITH DIAERESIS"
+ u:entity="Uuml"
+ string="\(:U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00dd;"
+ u:name="LATIN CAPITAL LETTER Y WITH ACUTE"
+ u:entity="Yacute"
+ string="\('Y"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00de;"
+ u:name="LATIN CAPITAL LETTER THORN"
+ u:entity="THORN"
+ string="\(TP"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00df;"
+ u:name="LATIN SMALL LETTER SHARP S"
+ u:entity="szlig"
+ string="\(ss"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e0;"
+ u:name="LATIN SMALL LETTER A WITH GRAVE"
+ u:entity="agrave"
+ string="\(`a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e1;"
+ u:name="LATIN SMALL LETTER A WITH ACUTE"
+ u:entity="aacute"
+ string="\('a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e2;"
+ u:name="LATIN SMALL LETTER A WITH CIRCUMFLEX"
+ u:entity="acirc"
+ string="\(^a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e3;"
+ u:name="LATIN SMALL LETTER A WITH TILDE"
+ u:entity="atilde"
+ string="\(~a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e4;"
+ u:name="LATIN SMALL LETTER A WITH DIAERESIS"
+ u:entity="auml"
+ string="\(:a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e5;"
+ u:name="LATIN SMALL LETTER A WITH RING ABOVE"
+ u:entity="aring"
+ string="\(oa"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e6;"
+ u:name="LATIN SMALL LETTER AE"
+ u:entity="aelig"
+ string="\(ae"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e7;"
+ u:name="LATIN SMALL LETTER C WITH CEDILLA"
+ u:entity="ccedil"
+ string="\(,c"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e8;"
+ u:name="LATIN SMALL LETTER E WITH GRAVE"
+ u:entity="egrave"
+ string="\(`e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e9;"
+ u:name="LATIN SMALL LETTER E WITH ACUTE"
+ u:entity="eacute"
+ string="\('e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ea;"
+ u:name="LATIN SMALL LETTER E WITH CIRCUMFLEX"
+ u:entity="ecirc"
+ string="\(^e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00eb;"
+ u:name="LATIN SMALL LETTER E WITH DIAERESIS"
+ u:entity="euml"
+ string="\(:e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ec;"
+ u:name="LATIN SMALL LETTER I WITH GRAVE"
+ u:entity="igrave"
+ string="\(`i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ed;"
+ u:name="LATIN SMALL LETTER I WITH ACUTE"
+ u:entity="iacute"
+ string="\('i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ee;"
+ u:name="LATIN SMALL LETTER I WITH CIRCUMFLEX"
+ u:entity="icirc"
+ string="\(^i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ef;"
+ u:name="LATIN SMALL LETTER I WITH DIAERESIS"
+ u:entity="iuml"
+ string="\(:i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f0;"
+ u:name="LATIN SMALL LETTER ETH"
+ u:entity="eth"
+ string="\(Sd"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f1;"
+ u:name="LATIN SMALL LETTER N WITH TILDE"
+ u:entity="ntilde"
+ string="\(~n"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f2;"
+ u:name="LATIN SMALL LETTER O WITH GRAVE"
+ u:entity="ograve"
+ string="\(`o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f3;"
+ u:name="LATIN SMALL LETTER O WITH ACUTE"
+ u:entity="oacute"
+ string="\('o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f4;"
+ u:name="LATIN SMALL LETTER O WITH CIRCUMFLEX"
+ u:entity="ocirc"
+ string="\(^o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f5;"
+ u:name="LATIN SMALL LETTER O WITH TILDE"
+ u:entity="otilde"
+ string="\(~o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f6;"
+ u:name="LATIN SMALL LETTER O WITH DIAERESIS"
+ u:entity="ouml"
+ string="\(:o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f7;"
+ u:name="DIVISION SIGN"
+ u:entity="divide"
+ string="\(di"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00f8;"
+ u:name="LATIN SMALL LETTER O WITH STROKE"
+ u:entity="oslash"
+ string="\(/o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f9;"
+ u:name="LATIN SMALL LETTER U WITH GRAVE"
+ u:entity="ugrave"
+ string="\(`u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fa;"
+ u:name="LATIN SMALL LETTER U WITH ACUTE"
+ u:entity="uacute"
+ string="\('u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fb;"
+ u:name="LATIN SMALL LETTER U WITH CIRCUMFLEX"
+ u:entity="ucirc"
+ string="\(^u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fc;"
+ u:name="LATIN SMALL LETTER U WITH DIAERESIS"
+ u:entity="uuml"
+ string="\(:u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fd;"
+ u:name="LATIN SMALL LETTER Y WITH ACUTE"
+ u:entity="yacute"
+ string="\('y"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fe;"
+ u:name="LATIN SMALL LETTER THORN"
+ u:entity="thorn"
+ string="\(Tp"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ff;"
+ u:name="LATIN SMALL LETTER Y WITH DIAERESIS"
+ u:entity="yuml"
+ string="\(:y"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <!-- * **************************************************************** -->
+ <!-- * End: Latin-1/ISO-8859-1 -->
+ <!-- * **************************************************************** -->
+
+ <!-- * **************************************************************** -->
+ <!-- * Begin: -->
+ <!-- * -->
+ <!-- * - x0100 to x017f (Latin Extended-A) -->
+ <!-- * - x0180 to x023f (Latin Extended-B) -->
+ <!-- * - x0250 to x02ad (IPA Extensions) -->
+ <!-- * - x02b0 to x02ee (Spacing Modifier Letters) -->
+ <!-- * - x0300 to x036f (Combining Diacritical Marks) -->
+ <!-- * -->
+ <!-- * Other than the following exceptions, characters in these -->
+ <!-- * blocks don't have any roff equivalents -->
+ <!-- * **************************************************************** -->
+
+ <xsl:output-character
+ character="&#x0131;"
+ u:name="LATIN SMALL LETTER DOTLESS I"
+ u:entity="inodot"
+ string="\(.i"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0132;"
+ u:name="LATIN CAPITAL LIGATURE IJ"
+ u:entity="IJlig"
+ string="\(IJ"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0133;"
+ u:name="LATIN SMALL LIGATURE IJ"
+ u:entity="ijlig"
+ string="\(ij"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0141;"
+ u:name="LATIN CAPITAL LETTER L WITH STROKE"
+ u:entity="Lstrok"
+ string="\(/L"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0142;"
+ u:name="LATIN SMALL LETTER L WITH STROKE"
+ u:entity="lstrok"
+ string="\(/l"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0152;"
+ u:name="LATIN CAPITAL LIGATURE OE"
+ u:entity="OElig"
+ string="\(OE"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0153;"
+ u:name="LATIN SMALL LIGATURE OE"
+ u:entity="oelig"
+ string="\(oe"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x160;"
+ u:name="LATIN CAPITAL LETTER S WITH CARON"
+ u:entity="Scaron"
+ string="\(vS"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x161;"
+ u:name="LATIN SMALL LETTER S WITH CARON"
+ u:entity="scaron"
+ string="\(vs"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x17D;"
+ u:name="LATIN CAPITAL LETTER Z WITH CARON"
+ u:entity="Zcaron"
+ string="\(vZ"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x17E;"
+ u:name="LATIN SMALL LETTER Z WITH CARON"
+ u:entity="zcaron"
+ string="\(vz"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0192;"
+ u:name="LATIN SMALL LETTER F WITH HOOK"
+ u:entity="fnof"
+ string="\(Fn"
+ u:block="Latin Extended-B"
+ />
+ <xsl:output-character
+ character="&#x02c6;"
+ u:name="MODIFIER LETTER CIRCUMFLEX ACCENT"
+ u:entity="circ"
+ string="\(a^"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02c7;"
+ u:name="CARON"
+ u:entity="caron"
+ string="\(ac"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02c9;"
+ u:name="MODIFIER LETTER MACRON"
+ string="\(a-"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02d8;"
+ u:name="BREVE"
+ u:entity="breve"
+ string="\(ab"
+ u:block="Spacing Modifier Letters"
+ />
+<!-- * there does not seem to by any roff equivalent for "dot above" -->
+<!-- * <xsl:output-character -->
+<!-- * character="&#x02d9;" -->
+<!-- * u:name="DOT ABOVE" -->
+<!-- * u:entity="dot" -->
+<!-- * /> -->
+ <xsl:output-character
+ character="&#x02da;"
+ u:name="RING ABOVE"
+ u:entity="ring"
+ string="\(ao"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02db;"
+ u:name="OGONEK"
+ u:entity="ogon"
+ string="\(ho"
+ u:block="Spacing Modifier Letters"
+ />
+ <!-- groff_char(7) calls Unicode x02dd a "Hungarian umlaut" -->
+ <xsl:output-character
+ character="&#x02dd;"
+ u:name="DOUBLE ACUTE ACCENT"
+ u:entity="dblac"
+ string='\(a"'
+ u:block="Spacing Modifier Letters"
+ />
+
+ <!-- * **************************************************************** -->
+ <!-- * End: -->
+ <!-- * - Latin Extended-A -->
+ <!-- * - Latin Extended-B -->
+ <!-- * - IPA Extensions -->
+ <!-- * - Spacing Modifier Letters -->
+ <!-- * - Combining Diacritical Marks -->
+ <!-- * **************************************************************** -->
+
+ <!-- * **************************************************************** -->
+ <!-- * Begin: Greek and Coptic -->
+ <!-- * x0370 to x03ff -->
+ <!-- * **************************************************************** -->
+
+ <xsl:output-character
+ character="&#x0391;"
+ u:name="GREEK CAPITAL LETTER ALPHA"
+ u:entity="Agr"
+ string="\(*A)"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0392;"
+ u:name="GREEK CAPITAL LETTER BETA"
+ u:entity="Bgr"
+ string="\(*B"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0393;"
+ u:name="GREEK CAPITAL LETTER GAMMA"
+ u:entity="Gamma"
+ string="\(*G"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0394;"
+ u:name="GREEK CAPITAL LETTER DELTA"
+ u:entity="Delta"
+ string="\(*D"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0395;"
+ u:name="GREEK CAPITAL LETTER EPSILON"
+ u:entity="Egr"
+ string="\(*E"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0396;"
+ u:name="GREEK CAPITAL LETTER ZETA"
+ u:entity="Zgr"
+ string="\(*Z"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0397;"
+ u:name="GREEK CAPITAL LETTER ETA"
+ u:entity="EEgr"
+ string="\(*Y"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0398;"
+ u:name="GREEK CAPITAL LETTER THETA"
+ u:entity="THgr"
+ string="\(*H"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0399;"
+ u:name="GREEK CAPITAL LETTER IOTA"
+ u:entity="Igr"
+ string="\(*I"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039a;"
+ u:name="GREEK CAPITAL LETTER KAPPA"
+ u:entity="Kgr"
+ string="\(*K"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039b;"
+ u:name="GREEK CAPITAL LETTER LAMDA"
+ u:entity="Lambda"
+ string="\(*L"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039c;"
+ u:name="GREEK CAPITAL LETTER MU"
+ u:entity="Mgr"
+ string="\(*M"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039d;"
+ u:name="GREEK CAPITAL LETTER NU"
+ u:entity="Ngr"
+ string="\(*N"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039e;"
+ u:name="GREEK CAPITAL LETTER XI"
+ u:entity="Xgr"
+ string="\(*C"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039f;"
+ u:name="GREEK CAPITAL LETTER OMICRON"
+ u:entity="Ogr"
+ string="\(*O"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a0;"
+ u:name="GREEK CAPITAL LETTER PI"
+ u:entity="Pgr"
+ string="\(*P"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a1;"
+ u:name="GREEK CAPITAL LETTER RHO"
+ u:entity="Rgr"
+ string="\(*R"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a3;"
+ u:name="GREEK CAPITAL LETTER SIGMA"
+ u:entity="Sgr"
+ string="\(*S"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a4;"
+ u:name="GREEK CAPITAL LETTER TAU"
+ u:entity="Tgr"
+ string="\(*T"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a5;"
+ u:name="GREEK CAPITAL LETTER UPSILON"
+ u:entity="Ugr"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a6;"
+ u:name="GREEK CAPITAL LETTER PHI"
+ u:entity="PHgr"
+ string="\(*F"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a7;"
+ u:name="GREEK CAPITAL LETTER CHI"
+ u:entity="KHgr"
+ string="\(*X"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a8;"
+ u:name="GREEK CAPITAL LETTER PSI"
+ u:entity="PSgr"
+ string="\(*Q"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a9;"
+ u:name="GREEK CAPITAL LETTER OMEGA"
+ u:entity="OHgr"
+ string="\(*W"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03aa;"
+ u:name="GREEK CAPITAL LETTER IOTA WITH DIALYTIKA"
+ u:entity="Idigr"
+ string="\(*I"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ab;"
+ u:name="GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA"
+ u:entity="Udigr"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ac;"
+ u:name="GREEK SMALL LETTER ALPHA WITH TONOS"
+ u:entity="aacgr"
+ string="\(*a"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ad;"
+ u:name="GREEK SMALL LETTER EPSILON WITH TONOS"
+ u:entity="eacgr"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ae;"
+ u:name="GREEK SMALL LETTER ETA WITH TONOS"
+ u:entity="eeacgr"
+ string="\(*y"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03af;"
+ u:name="GREEK SMALL LETTER IOTA WITH TONOS"
+ u:entity="iacgr"
+ string="\(*i"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b0;"
+ u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS"
+ u:entity="udiagr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b1;"
+ u:name="GREEK SMALL LETTER ALPHA"
+ u:entity="agr"
+ string="\(*a"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b2;"
+ u:name="GREEK SMALL LETTER BETA"
+ u:entity="beta"
+ string="\(*b"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b3;"
+ u:name="GREEK SMALL LETTER GAMMA"
+ u:entity="gamma"
+ string="\(*g"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b4;"
+ u:name="GREEK SMALL LETTER DELTA"
+ u:entity="delta"
+ string="\(*d"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b5;"
+ u:name="GREEK SMALL LETTER EPSILON"
+ u:entity="epsi"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b6;"
+ u:name="GREEK SMALL LETTER ZETA"
+ u:entity="zeta"
+ string="\(*z"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b7;"
+ u:name="GREEK SMALL LETTER ETA"
+ u:entity="eegr"
+ string="\(*y"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b8;"
+ u:name="GREEK SMALL LETTER THETA"
+ u:entity="thetas"
+ string="\(*h"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b9;"
+ u:name="GREEK SMALL LETTER IOTA"
+ u:entity="igr"
+ string="\(*i"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ba;"
+ u:name="GREEK SMALL LETTER KAPPA"
+ u:entity="kappa"
+ string="\(*k"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bb;"
+ u:name="GREEK SMALL LETTER LAMDA"
+ u:entity="lambda"
+ string="\(*l"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bc;"
+ u:name="GREEK SMALL LETTER MU"
+ u:entity="mgr"
+ string="\(*m"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bd;"
+ u:name="GREEK SMALL LETTER NU"
+ u:entity="ngr"
+ string="\(*n"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03be;"
+ u:name="GREEK SMALL LETTER XI"
+ u:entity="xgr"
+ string="\(*c"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bf;"
+ u:name="GREEK SMALL LETTER OMICRON"
+ u:entity="ogr"
+ string="\(*o"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c0;"
+ u:name="GREEK SMALL LETTER PI"
+ u:entity="pgr"
+ string="\(*p"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c1;"
+ u:name="GREEK SMALL LETTER RHO"
+ u:entity="rgr"
+ string="\(*r"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c2;"
+ u:name="GREEK SMALL LETTER FINAL SIGMA"
+ u:entity="sfgr"
+ string="\(ts"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c3;"
+ u:name="GREEK SMALL LETTER SIGMA"
+ u:entity="sgr"
+ string="\(*s"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c4;"
+ u:name="GREEK SMALL LETTER TAU"
+ u:entity="tau"
+ string="\(*t"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c5;"
+ u:name="GREEK SMALL LETTER UPSILON"
+ u:entity="ugr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c6;"
+ u:name="GREEK SMALL LETTER PHI"
+ u:entity="phgr"
+ string="\(*f"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c7;"
+ u:name="GREEK SMALL LETTER CHI"
+ u:entity="chi"
+ string="\(*x"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c8;"
+ u:name="GREEK SMALL LETTER PSI"
+ u:entity="psgr"
+ string="\(*q"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c9;"
+ u:name="GREEK SMALL LETTER OMEGA"
+ u:entity="ohgr"
+ string="\(*w"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ca;"
+ u:name="GREEK SMALL LETTER IOTA WITH DIALYTIKA"
+ u:entity="idigr"
+ string="\(*i"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03cb;"
+ u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA"
+ u:entity="udigr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03cc;"
+ u:name="GREEK SMALL LETTER OMICRON WITH TONOS"
+ u:entity="oacgr"
+ string="\(*o"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03cd;"
+ u:name="GREEK SMALL LETTER UPSILON WITH TONOS"
+ u:entity="uacgr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ce;"
+ u:name="GREEK SMALL LETTER OMEGA WITH TONOS"
+ u:entity="ohacgr"
+ string="\(*w"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d0;"
+ u:name="GREEK BETA SYMBOL"
+ string="\(*B"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d1;"
+ u:name="GREEK THETA SYMBOL"
+ u:entity="thetav"
+ string="\(+h"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d2;"
+ u:name="GREEK UPSILON WITH HOOK SYMBOL"
+ u:entity="Upsi"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d3;"
+ u:name="GREEK UPSILON WITH ACUTE AND HOOK SYMBOL"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d4;"
+ u:name="GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d5;"
+ u:name="GREEK PHI SYMBOL"
+ u:entity="phis"
+ string="\(+f"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d6;"
+ u:name="GREEK PI SYMBOL"
+ u:entity="piv"
+ string="\(+p"
+ u:block="Greek and Coptic"
+ />
+ <!-- no mappings for remaining chars x03d7 to x03ef -->
+ <xsl:output-character
+ character="&#x03f0;"
+ u:name="GREEK KAPPA SYMBOL"
+ u:entity="kappav"
+ string="(*k"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f1;"
+ u:name="GREEK RHO SYMBOL"
+ u:entity="rhov"
+ string="\(*r"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f2;"
+ u:name="GREEK LUNATE SIGMA SYMBOL"
+ string="\(*s"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f4;"
+ u:name="GREEK CAPITAL THETA SYMBOL"
+ string="\(*H"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f5;"
+ u:name="GREEK LUNATE EPSILON SYMBOL"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f6;"
+ u:name="GREEK REVERSED LUNATE EPSILON SYMBOL"
+ u:entity="bepsi"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Greek and Coptic -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Cyrillic -->
+ <!-- * x0400 to x04ff -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: General Punctuation -->
+ <!-- * x2000 to x206f -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * first, spaces of various widths -->
+
+ <!-- * Note: There does not seem to be either a real em space or en space -->
+ <!-- * in roff; to approximate them, this character map assumes that in -->
+ <!-- * most fonts, an en space is about the same as the width of a digit -->
+ <!-- * (in roff, "\0"), so an em space (which by definition is -->
+ <!-- * equal to the width of two en spaces) is about the same as the width -->
+ <!-- * of two digits (thus, in roff, "\0\0") -->
+
+ <xsl:output-character
+ character="&#x2000;"
+ u:name="EN QUAD"
+ string="\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2001;"
+ u:name="EM QUAD"
+ string="\0\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2002;"
+ u:name="EN SPACE"
+ u:entity="ensp"
+ string="\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2003;"
+ u:name="EM SPACE"
+ u:entity="emsp"
+ string="\0\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * roughly same width as a normal space -->
+ <xsl:output-character
+ character="&#x2004;"
+ u:name="THREE-PER-EM SPACE"
+ u:entity="emsp13"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * roughly same width as a normal space -->
+ <xsl:output-character
+ character="&#x2005;"
+ u:name="FOUR-PER-EM SPACE"
+ u:entity="emsp14"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * roughly same width as a normal space -->
+ <xsl:output-character
+ character="&#x2006;"
+ u:name="SIX-PER-EM SPACE"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * same as roff "digit" space -->
+ <xsl:output-character
+ character="&#x2007;"
+ u:name="FIGURE SPACE"
+ u:entity="numsp"
+ string="\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * punctuation space in most fonts is actually closer to a normal -->
+ <!-- * space than it is to a thin space -->
+ <xsl:output-character
+ character="&#x2008;"
+ u:name="PUNCTUATION SPACE"
+ u:entity="puncsp"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * Note: Not sure how best to deal with thin space, because the roff -->
+ <!-- * thin space, "\^", prints as a zero-width space in TTY -->
+ <!-- * output. However, it seems that, unlike a hair space, a thin space, -->
+ <!-- * at 1/12 of an em, is still recognizable to most people as a space, -->
+ <!-- * so treating it as zero-width seems wrong. So, for the sake of making -->
+ <!-- * TTY output look OK, just substitute with a normal space; but real -->
+ <!-- * roff escape is "\(\^" -->
+ <xsl:output-character
+ character="&#x2009;"
+ u:name="THIN SPACE"
+ u:entity="thinsp"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * I don't think there's a standard definition of what a hair -->
+ <!-- * space is; some guides just say it's "less than 1/5 of an em" or -->
+ <!-- * that it's "narrower than a thin space"; seems like in practice, -->
+ <!-- * it's *a lot* narrower than a thin space, to the point where -->
+ <!-- * it's close to being a non-space, so here it's substituted with -->
+ <!-- * roff equivalent of a zero-width no-break space -->
+ <xsl:output-character
+ character="&#x200a;"
+ u:name="HAIR SPACE"
+ u:entity="hairsp"
+ string="\&amp;"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * map to roff "zero-width break point" -->
+ <xsl:output-character
+ character="&#x200b;"
+ u:name="ZERO WIDTH SPACE"
+ string="\:"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+
+ <!-- * x200c and x200d have special purposes in some Indic languages (I -->
+ <!-- * think); for the "correct" zero-width space, according to Unicode docs, -->
+ <!-- * use x2060, not x200c or x200d -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200c;" -->
+ <!-- * u:name="ZERO WIDTH NON-JOINER" -->
+ <!-- * string="\:" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200d;" -->
+ <!-- * u:name="ZERO WIDTH JOINER" -->
+ <!-- * string="\&amp;" -->
+ <!-- * /> -->
+ <!-- * non-visible -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200e;" -->
+ <!-- * u:name="LEFT-TO-RIGHT MARK" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200f;" -->
+ <!-- * u:name="RIGHT-TO-LEFT MARK" -->
+ <!-- * /> -->
+
+ <!-- * .................................................... -->
+ <!-- * next, hyphens and various dashes, bars, underscores -->
+ <xsl:output-character
+ character="&#x2010;"
+ u:name="HYPHEN"
+ u:entity="hyphen"
+ string="\(hy"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <!-- * although the groff docs do not make it clear, testing -->
+ <!-- * indicates that the only reliable way to make a non-breaking -->
+ <!-- * hyphen is to put just a backslash in front of it. -->
+ <!-- * -->
+ <!-- * based on testing, it also appears that no character is needed -->
+ <!-- * after the hyphen in order to make it non-breaking -->
+ <xsl:output-character
+ character="&#x2011;"
+ u:name="NON-BREAKING HYPHEN"
+ string="\-"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <!-- * roughly same width as en dash -->
+ <xsl:output-character
+ character="&#x2012;"
+ u:name="FIGURE DASH"
+ string="\(en"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <xsl:output-character
+ character="&#x2013;"
+ u:name="EN DASH"
+ u:entity="ndash"
+ string="\(en"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <xsl:output-character
+ character="&#x2014;"
+ u:name="EM DASH"
+ u:entity="mdash"
+ string="\(em"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <!-- * seems roughly same width as em dash -->
+ <xsl:output-character
+ character="&#x2015;"
+ u:name="HORIZONTAL BAR"
+ u:entity="horbar"
+ string="\(em"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <xsl:output-character
+ character="&#x2016;"
+ u:name="DOUBLE VERTICAL LINE"
+ u:entity="Verbar"
+ string="\(bv\(bv"
+ u:block="General Punctuation"
+ />
+ <!-- * no double-underscore in roff; so just make it a single -->
+ <!-- * underscore -->
+ <xsl:output-character
+ character="&#x2017;"
+ u:name="DOUBLE LOW LINE"
+ string="_"
+ u:block="General Punctuation"
+ />
+
+ <!-- * .................................................... -->
+ <!-- * various quotation marks -->
+ <xsl:output-character
+ character="&#x2018;"
+ u:name="LEFT SINGLE QUOTATION MARK"
+ u:entity="lsquo"
+ string="\(oq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x2019;"
+ u:name="RIGHT SINGLE QUOTATION MARK"
+ u:entity="rsquo"
+ string="\(cq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201a;"
+ u:name="SINGLE LOW-9 QUOTATION MARK"
+ u:entity="lsquor"
+ string="\(bq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <!-- * no roff equiv; treat same as lsquo -->
+ <xsl:output-character
+ character="&#x201b;"
+ u:name="SINGLE HIGH-REVERSED-9 QUOTATION MARK"
+ string="\(oq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201c;"
+ u:name="LEFT DOUBLE QUOTATION MARK"
+ u:entity="ldquo"
+ string="\(lq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201d;"
+ u:name="RIGHT DOUBLE QUOTATION MARK"
+ u:entity="rdquo"
+ string="\(rq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201e;"
+ u:name="DOUBLE LOW-9 QUOTATION MARK"
+ u:entity="ldquor"
+ string="\(Bq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <!-- * no roff equiv; treat same as rdquo -->
+ <xsl:output-character
+ character="&#x201f;"
+ u:name="DOUBLE HIGH-REVERSED-9 QUOTATION MARK"
+ string="\(rq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+
+ <!-- * .................................................... -->
+ <!-- * various symbols -->
+ <xsl:output-character
+ character="&#x2020;"
+ u:name="DAGGER"
+ u:entity="dagger"
+ string="\(dg"
+ u:block="General Punctuation_daggers"
+ />
+ <xsl:output-character
+ character="&#x2021;"
+ u:name="DOUBLE DAGGER"
+ u:entity="Dagger"
+ string="\(dd"
+ u:block="General Punctuation_daggers"
+ />
+ <xsl:output-character
+ character="&#x2022;"
+ u:name="BULLET"
+ u:entity="bull"
+ string="\(bu"
+ u:block="General Punctuation"
+ u:class="bullets"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2023;"
+ u:name="TRIANGULAR BULLET"
+ string=">\&amp;"
+ u:block="General Punctuation"
+ u:class="bullets"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2024;"
+ u:name="ONE DOT LEADER"
+ string="\&amp;."
+ u:block="General Punctuation_leaders"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2025;"
+ u:name="TWO DOT LEADER"
+ u:entity="nldr"
+ string="\&amp;.."
+ u:block="General Punctuation_leaders"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2026;"
+ u:name="HORIZONTAL ELLIPSIS"
+ u:entity="hellip"
+ string="\&amp;..."
+ u:block="General Punctuation"
+ />
+ <!-- what is "hyphenation point" used for? looks like middot to me... -->
+ <xsl:output-character
+ character="&#x2027;"
+ u:name="HYPHENATION POINT"
+ string="\(md"
+ u:block="General Punctuation"
+ />
+ <!-- * Begin x2028 to x202e - no idea what to do with these -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2028;" -->
+ <!-- * u:name="LINE SEPARATOR" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2029;" -->
+ <!-- * u:name="PARAGRAPH SEPARATOR" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202a;" -->
+ <!-- * u:name="LEFT-TO-RIGHT EMBEDDING" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202b;" -->
+ <!-- * u:name="RIGHT-TO-LEFT EMBEDDING" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202c;" -->
+ <!-- * u:name="POP DIRECTIONAL FORMATTING" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202d;" -->
+ <!-- * u:name="LEFT-TO-RIGHT OVERRIDE" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202e;" -->
+ <!-- * u:name="RIGHT-TO-LEFT OVERRIDE" -->
+ <!-- * /> -->
+ <!-- * End x2028 to x202e - no idea what to do with these -->
+
+ <!-- * seems like "narrow" nbsp is basically the same as a no-break -->
+ <!-- * space -->
+ <xsl:output-character
+ character="&#x202f;"
+ u:name="NARROW NO-BREAK SPACE"
+ string="\ "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2030;"
+ u:name="PER MILLE SIGN"
+ u:entity="permil"
+ string="\(%0"
+ u:block="General Punctuation"
+ />
+ <!-- * no roff equiv; no idea what to do with it -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2031;" -->
+ <!-- * u:name="PER TEN THOUSAND SIGN" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2032;"
+ u:name="PRIME"
+ u:entity="prime"
+ string="\(fm"
+ u:block="General Punctuation"
+ u:class="primes"
+ />
+ <xsl:output-character
+ character="&#x2033;"
+ u:name="DOUBLE PRIME"
+ u:entity="Prime"
+ string="\(sd"
+ u:block="General Punctuation"
+ u:class="primes"
+ />
+ <xsl:output-character
+ character="&#x2034;"
+ u:name="TRIPLE PRIME"
+ u:entity="tprime"
+ string="\(sd\(fm"
+ u:block="General Punctuation"
+ u:class="primes"
+ />
+ <!-- * no idea for these -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2035;" -->
+ <!-- * u:name="REVERSED PRIME" -->
+ <!-- * u:entity="bprime" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2036;" -->
+ <!-- * u:name="REVERSED DOUBLE PRIME" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2037;" -->
+ <!-- * u:name="REVERSED TRIPLE PRIME" -->
+ <!-- * /> -->
+
+ <!-- * there is no low caret in roff -->
+ <xsl:output-character
+ character="&#x2038;"
+ u:name="CARET"
+ string="^"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2039;"
+ u:name="SINGLE LEFT-POINTING ANGLE QUOTATION MARK"
+ string="\(fo"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x203a;"
+ u:name="SINGLE RIGHT-POINTING ANGLE QUOTATION MARK"
+ string="\(fc"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x203b;"
+ u:name="REFERENCE MARK"
+ string="*"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203c;"
+ u:name="DOUBLE EXCLAMATION MARK"
+ string="!!"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203d;"
+ u:name="INTERROBANG"
+ string="?!"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203e;"
+ u:name="OVERLINE"
+ string="\(rn"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203f;"
+ u:name="UNDERTIE"
+ string="\(ul"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2040;"
+ u:name="CHARACTER TIE"
+ string="\(rn"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2041;"
+ u:name="CARET INSERTION POINT"
+ u:entity="caret"
+ string="^"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2042;"
+ u:name="ASTERISM"
+ string="*"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just make bold hyphen -->
+ <xsl:output-character
+ character="&#x2043;"
+ u:name="HYPHEN BULLET"
+ u:entity="hybull"
+ string="\fB-\fR"
+ u:block="General Punctuation"
+ u:class="bullets"
+ />
+ <xsl:output-character
+ character="&#x2044;"
+ u:name="FRACTION SLASH"
+ string="\(sl"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2045;"
+ u:name="LEFT SQUARE BRACKET WITH QUILL"
+ string="["
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2046;"
+ u:name="RIGHT SQUARE BRACKET WITH QUILL"
+ string="]"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2047;"
+ u:name="DOUBLE QUESTION MARK"
+ string="??"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2048;"
+ u:name="QUESTION EXCLAMATION MARK"
+ string="?!"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2049;"
+ u:name="EXCLAMATION QUESTION MARK"
+ string="!?"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x204a;"
+ u:name="TIRONIAN SIGN ET"
+ string="7"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just replace with un-reversed pilcrow -->
+ <xsl:output-character
+ character="&#x204b;"
+ u:name="REVERSED PILCROW SIGN"
+ string="\(ps"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just make regular bullet -->
+ <xsl:output-character
+ character="&#x204c;"
+ u:name="BLACK LEFTWARDS BULLET"
+ string="\(bu"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just make regular bullet -->
+ <xsl:output-character
+ character="&#x204d;"
+ u:name="BLACK RIGHTWARDS BULLET"
+ string="\(bu"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x204e;"
+ u:name="LOW ASTERISK"
+ string="*"
+ u:block="General Punctuation"
+ />
+
+ <!-- * ............................................................... -->
+ <!-- * Remaining General Punctuation -->
+ <!-- * from x2050 to x206f -->
+ <!-- * only map a couple of these -->
+ <!-- * ............................................................... -->
+
+ <!-- * basically same as a normal space -->
+ <xsl:output-character
+ character="&#x205f;"
+ u:name="MEDIUM MATHEMATICAL SPACE"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
+ <!-- * Line Breaking Properties"[1] says: -->
+ <!-- * -->
+ <!-- * The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
+ <!-- * choice for an invisible character to keep other characters -->
+ <!-- * together that would otherwise be split across the line at a direct -->
+ <!-- * break. The character FEFF has the same effect, but because it is -->
+ <!-- * also used in an unrelated way as a byte order mark, the use of the -->
+ <!-- * WJ as the preferred interword glue simplifies the handling of FEFF. -->
+ <!-- * -->
+ <!-- * [1] http://www.unicode.org/reports/tr14/ -->
+ <!-- * -->
+ <!-- * The groff docs seem ambiguous about whether \& is a joiner and -->
+ <!-- * prevents breaks, but, based on testing, seems like it does -->
+ <xsl:output-character
+ character="&#x2060;"
+ u:name="WORD JOINER"
+ string="\&amp;"
+ u:block="General Punctuation"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: General Punctuation -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Superscripts and Subscripts -->
+ <!-- * x2070 to x209f -->
+ <!-- * For superscripts, just do a^n thing -->
+ <!-- * For subscripts, just do a_n -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2070;"
+ u:name="SUPERSCRIPT ZERO"
+ string="^0"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2071;"
+ u:name="SUPERSCRIPT LATIN SMALL LETTER I"
+ string="^i"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2074;"
+ u:name="SUPERSCRIPT FOUR"
+ string="^4"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2075;"
+ u:name="SUPERSCRIPT FIVE"
+ string="^5"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2076;"
+ u:name="SUPERSCRIPT SIX"
+ string="^6"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2077;"
+ u:name="SUPERSCRIPT SEVEN"
+ string="^7"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2078;"
+ u:name="SUPERSCRIPT EIGHT"
+ string="^8"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2079;"
+ u:name="SUPERSCRIPT NINE"
+ string="^9"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207a;"
+ u:name="SUPERSCRIPT PLUS SIGN"
+ string="^+"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207b;"
+ u:name="SUPERSCRIPT MINUS"
+ string="^-"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207c;"
+ u:name="SUPERSCRIPT EQUALS SIGN"
+ string="^="
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207d;"
+ u:name="SUPERSCRIPT LEFT PARENTHESIS"
+ string="^("
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207e;"
+ u:name="SUPERSCRIPT RIGHT PARENTHESIS"
+ string="^)"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207f;"
+ u:name="SUPERSCRIPT LATIN SMALL LETTER N"
+ string="^n"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2080;"
+ u:name="SUBSCRIPT ZERO"
+ string="_0"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2081;"
+ u:name="SUBSCRIPT ONE"
+ string="_1"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2082;"
+ u:name="SUBSCRIPT TWO"
+ string="_2"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2083;"
+ u:name="SUBSCRIPT THREE"
+ string="_3"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2084;"
+ u:name="SUBSCRIPT FOUR"
+ string="_4"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2085;"
+ u:name="SUBSCRIPT FIVE"
+ string="_5"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2086;"
+ u:name="SUBSCRIPT SIX"
+ string="_6"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2087;"
+ u:name="SUBSCRIPT SEVEN"
+ string="_7"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2088;"
+ u:name="SUBSCRIPT EIGHT"
+ string="_8"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2089;"
+ u:name="SUBSCRIPT NINE"
+ string="_9"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208a;"
+ u:name="SUBSCRIPT PLUS SIGN"
+ string="_+"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208b;"
+ u:name="SUBSCRIPT MINUS"
+ string="_-"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208c;"
+ u:name="SUBSCRIPT EQUALS SIGN"
+ string="_="
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208d;"
+ u:name="SUBSCRIPT LEFT PARENTHESIS"
+ string="_("
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208e;"
+ u:name="SUBSCRIPT RIGHT PARENTHESIS"
+ string="_)"
+ u:block="Superscripts and Subscripts"
+ />
+ <!-- * ***************************************************************** -->
+ <!-- * End: Superscripts and Subscripts -->
+ <!-- * x2070 to x209f -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Currency Symbols -->
+ <!-- * x20a0 to x20b1 -->
+ <!-- * No mappings for any of these; just spell out -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x20a0;"
+ u:name="EURO-CURRENCY SIGN"
+ string="EUR"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a1;"
+ u:name="COLON SIGN"
+ string="COLON"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a2;"
+ u:name="CRUZEIRO SIGN"
+ string="CRUZEIRO"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a3;"
+ u:name="FRENCH FRANC SIGN"
+ string="FRANC"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a4;"
+ u:name="LIRA SIGN"
+ string="LIRA"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a5;"
+ u:name="MILL SIGN"
+ string="MILL"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a6;"
+ u:name="NAIRA SIGN"
+ string="NAIRA"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a7;"
+ u:name="PESETA SIGN"
+ string="PESETA"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a8;"
+ u:name="RUPEE SIGN"
+ string="RUPEE"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a9;"
+ u:name="WON SIGN"
+ string="WON"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20aa;"
+ u:name="NEW SHEQEL SIGN"
+ string="SHEQEL"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ab;"
+ u:name="DONG SIGN"
+ string="DONG"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ac;"
+ u:name="EURO SIGN"
+ string="EUR"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ad;"
+ u:name="KIP SIGN"
+ string="KIP"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ae;"
+ u:name="TUGRIK SIGN"
+ string="TUGRIK"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20af;"
+ u:name="DRACHMA SIGN"
+ string="DRACHMA"
+ u:block="Currency Symbols"
+ />
+ <!-- <xsl:output-character -->
+ <!-- character="&#x20b0;" -->
+ <!-- u:name="GERMAN PENNY SIGN" -->
+ <!-- string="?" -->
+ <!-- u:block="Currency Symbols" -->
+ <!-- /> -->
+ <xsl:output-character
+ character="&#x20b1;"
+ u:name="PESO SIGN"
+ string="PESO"
+ u:block="Currency Symbols"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Currency Symbols -->
+ <!-- * x20a0 to x20b1 -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Combining Diacritical Marks for Symbols -->
+ <!-- * x20d0 to x20ff -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Letterlike Symbols -->
+ <!-- * x2100 to x214b -->
+ <!-- * -->
+ <!-- * No mappings for any of these, and nothing appropriate for -->
+ <!-- * most of them; so, just spell out the ones that we can -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2103;"
+ u:name="DEGREE CELSIUS"
+ string="\(deC"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2105;"
+ u:name="CARE OF"
+ u:entity="incare"
+ string="c/o"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2109;"
+ u:name="DEGREE FAHRENHEIT"
+ string="\(deF"
+ u:block="Letterlike Symbols"
+ />
+ <!-- roff Ifraktur -->
+ <xsl:output-character
+ character="&#x2111;"
+ u:name="BLACK-LETTER CAPITAL I"
+ string="\(Im"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2113;"
+ u:name="SCRIPT SMALL L"
+ u:entity="ell"
+ string="l"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2116;"
+ u:name="NUMERO SIGN"
+ u:entity="numero"
+ string="No."
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2118;"
+ u:name="SCRIPT CAPITAL P"
+ u:entity="weierp"
+ string="\(wp"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x211c;"
+ u:name="BLACK-LETTER CAPITAL R"
+ u:entity="real"
+ string="\(Re"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x211e;"
+ u:name="PRESCRIPTION TAKE"
+ u:entity="rx"
+ string="Rx"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2120;"
+ u:name="SERVICE MARK"
+ string="(SM)"
+ u:block="Letterlike Symbols"
+ />
+ <!-- * We don't do "\(tm" for &#x2122; because for console output, groff -->
+ <!-- * just renders that as "tm", without any preceding space, parens, -->
+ <!-- * or anything. So it just gets run into the preceding word; i.e.: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Producttm -->
+ <!-- * -->
+ <!-- * That it probably not what most people would want. So we just -->
+ <!-- * render it as (TM) instead, Thus: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Product(TM) -->
+ <xsl:output-character
+ character="&#x2122;"
+ u:name="TRADE MARK SIGN"
+ u:entity="trade"
+ string="(TM)"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2126;"
+ u:name="OHM SIGN"
+ u:entity="ohm"
+ string="\(*W"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x212a;"
+ u:name="KELVIN SIGN"
+ string="K"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x212b;"
+ u:name="ANGSTROM SIGN"
+ u:entity="angst"
+ string="\(oA"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2135;"
+ u:name="ALEF SYMBOL"
+ u:entity="aleph"
+ string="\(Ah"
+ u:block="Letterlike Symbols"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Letterlike Symbols -->
+ <!-- * x2100 to x214b -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Number Forms -->
+ <!-- * x2150 to x218f -->
+ <!-- * -->
+ <!-- * No mappings for any of these, and nothing appropriate for most -->
+ <!-- * of them; so, just spell out the ones that we can -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2153;"
+ u:name="VULGAR FRACTION ONE THIRD"
+ u:entity="frac13"
+ string="1/3"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2154;"
+ u:name="VULGAR FRACTION TWO THIRDS"
+ u:entity="frac23"
+ string="2/3"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2155;"
+ u:name="VULGAR FRACTION ONE FIFTH"
+ u:entity="frac15"
+ string="1/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2156;"
+ u:name="VULGAR FRACTION TWO FIFTHS"
+ u:entity="frac25"
+ string="2/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2157;"
+ u:name="VULGAR FRACTION THREE FIFTHS"
+ u:entity="frac35"
+ string="3/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2158;"
+ u:name="VULGAR FRACTION FOUR FIFTHS"
+ u:entity="frac45"
+ string="4/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2159;"
+ u:name="VULGAR FRACTION ONE SIXTH"
+ u:entity="frac16"
+ string="1/6"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215a;"
+ u:name="VULGAR FRACTION FIVE SIXTHS"
+ u:entity="frac56"
+ string="5/6"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215b;"
+ u:name="VULGAR FRACTION ONE EIGHTH"
+ u:entity="frac18"
+ string="1/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215c;"
+ u:name="VULGAR FRACTION THREE EIGHTHS"
+ u:entity="frac38"
+ string="3/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215d;"
+ u:name="VULGAR FRACTION FIVE EIGHTHS"
+ u:entity="frac58"
+ string="5/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215e;"
+ u:name="VULGAR FRACTION SEVEN EIGHTHS"
+ u:entity="frac78"
+ string="7/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215f;"
+ u:name="FRACTION NUMERATOR ONE"
+ string="1/"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2160;"
+ u:name="ROMAN NUMERAL ONE"
+ string="I"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2161;"
+ u:name="ROMAN NUMERAL TWO"
+ string="II"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2162;"
+ u:name="ROMAN NUMERAL THREE"
+ string="III"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2163;"
+ u:name="ROMAN NUMERAL FOUR"
+ string="IV"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2164;"
+ u:name="ROMAN NUMERAL FIVE"
+ string="V"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2165;"
+ u:name="ROMAN NUMERAL SIX"
+ string="VI"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2166;"
+ u:name="ROMAN NUMERAL SEVEN"
+ string="VII"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2167;"
+ u:name="ROMAN NUMERAL EIGHT"
+ string="VIII"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2168;"
+ u:name="ROMAN NUMERAL NINE"
+ string="IX"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2169;"
+ u:name="ROMAN NUMERAL TEN"
+ string="X"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216a;"
+ u:name="ROMAN NUMERAL ELEVEN"
+ string="XI"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216b;"
+ u:name="ROMAN NUMERAL TWELVE"
+ string="XII"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216c;"
+ u:name="ROMAN NUMERAL FIFTY"
+ string="L"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216d;"
+ u:name="ROMAN NUMERAL ONE HUNDRED"
+ string="C"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216e;"
+ u:name="ROMAN NUMERAL FIVE HUNDRED"
+ string="D"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216f;"
+ u:name="ROMAN NUMERAL ONE THOUSAND"
+ string="M"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2170;"
+ u:name="SMALL ROMAN NUMERAL ONE"
+ string="i"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2171;"
+ u:name="SMALL ROMAN NUMERAL TWO"
+ string="ii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2172;"
+ u:name="SMALL ROMAN NUMERAL THREE"
+ string="iii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2173;"
+ u:name="SMALL ROMAN NUMERAL FOUR"
+ string="iv"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2174;"
+ u:name="SMALL ROMAN NUMERAL FIVE"
+ string="v"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2175;"
+ u:name="SMALL ROMAN NUMERAL SIX"
+ string="vi"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2176;"
+ u:name="SMALL ROMAN NUMERAL SEVEN"
+ string="vii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2177;"
+ u:name="SMALL ROMAN NUMERAL EIGHT"
+ string="viii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2178;"
+ u:name="SMALL ROMAN NUMERAL NINE"
+ string="ix"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2179;"
+ u:name="SMALL ROMAN NUMERAL TEN"
+ string="x"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217a;"
+ u:name="SMALL ROMAN NUMERAL ELEVEN"
+ string="xi"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217b;"
+ u:name="SMALL ROMAN NUMERAL TWELVE"
+ string="xii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217c;"
+ u:name="SMALL ROMAN NUMERAL FIFTY"
+ string="l"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217d;"
+ u:name="SMALL ROMAN NUMERAL ONE HUNDRED"
+ string="c"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217e;"
+ u:name="SMALL ROMAN NUMERAL FIVE HUNDRED"
+ string="d"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217f;"
+ u:name="SMALL ROMAN NUMERAL ONE THOUSAND"
+ string="m"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2180;"
+ u:name="ROMAN NUMERAL ONE THOUSAND C D"
+ string="CD"
+ u:block="Number Forms"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Number Forms -->
+ <!-- * x2150 to x218f -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Arrows -->
+ <!-- * x2190 to x21ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2190;"
+ u:name="LEFTWARDS ARROW"
+ u:entity="larr"
+ string="\(&lt;-"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2191;"
+ u:name="UPWARDS ARROW"
+ u:entity="uarr"
+ string="\(ua"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2192;"
+ u:name="RIGHTWARDS ARROW"
+ u:entity="rarr"
+ string="\(->"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2193;"
+ u:name="DOWNWARDS ARROW"
+ u:entity="darr"
+ string="\(da"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2194;"
+ u:name="LEFT RIGHT ARROW"
+ u:entity="harr"
+ string="\(&lt;>"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2195;"
+ u:name="UP DOWN ARROW"
+ u:entity="varr"
+ string="\(va"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21b5;"
+ u:name="DOWNWARDS ARROW WITH CORNER LEFTWARDS"
+ u:entity="crarr"
+ string="\(CR"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d0;"
+ u:name="LEFTWARDS DOUBLE ARROW"
+ u:entity="lArr"
+ string="\(la"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d1;"
+ u:name="UPWARDS DOUBLE ARROW"
+ u:entity="uArr"
+ string="\(uA"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d2;"
+ u:name="RIGHTWARDS DOUBLE ARROW"
+ u:entity="rArr"
+ string="\(rA"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d3;"
+ u:name="DOWNWARDS DOUBLE ARROW"
+ u:entity="dArr"
+ string="\(dA"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d4;"
+ u:name="LEFT RIGHT DOUBLE ARROW"
+ u:entity="hArr"
+ string="\(hA"
+ u:block="Arrows"
+ />
+ <!-- no roff equiv; render same as single arrow -->
+ <xsl:output-character
+ character="&#x21d5;"
+ u:name="UP DOWN DOUBLE ARROW"
+ u:entity="vArr"
+ string="\(va"
+ u:block="Arrows"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Mathematical Operators -->
+ <!-- * x2200 to x22ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2200;"
+ u:name="FOR ALL"
+ u:entity="forall"
+ string="\(fa"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2201;"
+ u:name="COMPLEMENT"
+ u:entity="comp"
+ string="C"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2202;"
+ u:name="PARTIAL DIFFERENTIAL"
+ u:entity="part"
+ string="\(pd"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2203;"
+ u:name="THERE EXISTS"
+ u:entity="exist"
+ string="\(te"
+ u:block="Mathematical Operators"
+ />
+ <!-- * no roff equiv -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2204;" -->
+ <!-- * u:name="THERE DOES NOT EXIST" -->
+ <!-- * u:entity="nexist" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2205;"
+ u:name="EMPTY SET"
+ u:entity="empty"
+ string="\(es"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2206;"
+ u:name="INCREMENT"
+ string="\(*D"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2207;"
+ u:name="NABLA"
+ u:entity="nabla"
+ string="\(gr"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2208;"
+ u:name="ELEMENT OF"
+ u:entity="isin"
+ string="\(mo"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2209;"
+ u:name="NOT AN ELEMENT OF"
+ u:entity="notin"
+ string="\(nm"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x220a;"
+ u:name="SMALL ELEMENT OF"
+ string="\(mo"
+ u:block="Mathematical Operators"
+ />
+
+ <xsl:output-character
+ character="&#x220b;"
+ u:name="CONTAINS AS MEMBER"
+ u:entity="ni"
+ string="\(st"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x220c;" -->
+ <!-- * u:name="DOES NOT CONTAIN AS MEMBER" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x220d;"
+ u:name="SMALL CONTAINS AS MEMBER"
+ string="\(st"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x220e;" -->
+ <!-- * u:name="END OF PROOF" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x220f;"
+ u:name="N-ARY PRODUCT"
+ u:entity="prod"
+ string="\(product"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2210;" -->
+ <!-- * u:name="N-ARY COPRODUCT" -->
+ <!-- * u:entity="coprod" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2211;"
+ u:name="N-ARY SUMMATION"
+ u:entity="sum"
+ string="\(sum"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2212;"
+ u:name="MINUS SIGN"
+ u:entity="minus"
+ string="\-"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2213;"
+ u:name="MINUS-OR-PLUS SIGN"
+ u:entity="mnplus"
+ string="\(+-"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2214;" -->
+ <!-- * u:name="DOT PLUS" -->
+ <!-- * u:entity="plusdo" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2215;"
+ u:name="DIVISION SLASH"
+ string="\(f/"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2216;"
+ u:name="SET MINUS"
+ u:entity="setmn"
+ string="\e"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2217;"
+ u:name="ASTERISK OPERATOR"
+ u:entity="lowast"
+ string="\(**"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2218;" -->
+ <!-- * u:name="RING OPERATOR" -->
+ <!-- * u:entity="compfn" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2219;"
+ u:name="BULLET OPERATOR"
+ string="\(bu"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x221a;"
+ u:name="SQUARE ROOT"
+ u:entity="radic"
+ string="\(sr"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x221b;" -->
+ <!-- * u:name="CUBE ROOT" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x221c;" -->
+ <!-- * u:name="FOURTH ROOT" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x221d;"
+ u:name="PROPORTIONAL TO"
+ u:entity="prop"
+ string="\(pt"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x221e;"
+ u:name="INFINITY"
+ u:entity="infin"
+ string="\(if"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x221f;" -->
+ <!-- * u:name="RIGHT ANGLE" -->
+ <!-- * u:entity="ang90" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2220;"
+ u:name="ANGLE"
+ u:entity="ang"
+ string="\(/_"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x2221 to 0x2226 not in roff; -->
+ <!-- * but fake a parallel sign with vert bars -->
+
+ <xsl:output-character
+ character="&#x2225;"
+ u:name="PARALLEL TO"
+ u:entity="par"
+ string="\(bv\(bv"
+ u:block="Mathematical Operators"
+ />
+
+ <xsl:output-character
+ character="&#x2227;"
+ u:name="LOGICAL AND"
+ u:entity="and"
+ string="\(AN"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2228;"
+ u:name="LOGICAL OR"
+ u:entity="or"
+ string="\(OR"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2229;"
+ u:name="INTERSECTION"
+ u:entity="cap"
+ string="\(ca"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222a;"
+ u:name="UNION"
+ u:entity="cup"
+ string="\(cu"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222b;"
+ u:name="INTEGRAL"
+ u:entity="int"
+ string="\(is"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222c;"
+ u:name="DOUBLE INTEGRAL"
+ string="\(is\(is"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222d;"
+ u:name="TRIPLE INTEGRAL"
+ string="\(is\(is\(is"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x222e to 0x2233 not in roff -->
+
+ <xsl:output-character
+ character="&#x2234;"
+ u:name="THEREFORE"
+ u:entity="there4"
+ string="\(tf"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2235;" -->
+ <!-- * u:name="BECAUSE" -->
+ <!-- * u:entity="becaus" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2236;"
+ u:name="RATIO"
+ string=":"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2237;"
+ u:name="PROPORTION"
+ string="::"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x2238 to 0x223b not in roff -->
+
+ <xsl:output-character
+ character="&#x223c;"
+ u:name="TILDE OPERATOR"
+ u:entity="sim"
+ string="\(ti"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x223d to 0x224b not in roff -->
+
+ <xsl:output-character
+ character="&#x2245;"
+ u:name="APPROXIMATELY EQUAL TO"
+ u:entity="cong"
+ string="\(=~"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2246;" -->
+ <!-- * u:name="APPROXIMATELY BUT NOT ACTUALLY EQUAL TO" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2247;" -->
+ <!-- * u:name="NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO" -->
+ <!-- * u:entity="ncong" -->
+ <!-- * /> -->
+
+ <xsl:output-character
+ character="&#x2248;"
+ u:name="ALMOST EQUAL TO"
+ u:entity="asymp"
+ string="\(~~"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x2249 to x2253 not in roff -->
+
+ <xsl:output-character
+ character="&#x2254;"
+ u:name="COLON EQUALS"
+ u:entity="colone"
+ string=":="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2255;"
+ u:name="EQUALS COLON"
+ u:entity="ecolon"
+ string="=:"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x2256 to x2255 not in roff -->
+
+ <xsl:output-character
+ character="&#x225f;"
+ u:name="QUESTIONED EQUAL TO"
+ string="?="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2260;"
+ u:name="NOT EQUAL TO"
+ u:entity="ne"
+ string="\(!="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2261;"
+ u:name="IDENTICAL TO"
+ u:entity="equiv"
+ string="\(=="
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2262;" -->
+ <!-- * u:name="NOT IDENTICAL TO" -->
+ <!-- * u:entity="nequiv" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2263;" -->
+ <!-- * u:name="STRICTLY EQUIVALENT TO" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2264;"
+ u:name="LESS-THAN OR EQUAL TO"
+ u:entity="le"
+ string="\(&lt;="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2265;"
+ u:name="GREATER-THAN OR EQUAL TO"
+ u:entity="ge"
+ string="\(>="
+ u:block="Mathematical Operators"
+ />
+ <!-- * x2266 to x2269 not in roff -->
+
+ <xsl:output-character
+ character="&#x226a;"
+ u:name="MUCH LESS-THAN"
+ u:entity="Lt"
+ string="&lt;&lt;"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x226b;"
+ u:name="MUCH GREATER-THAN"
+ u:entity="Gt"
+ string=">>"
+ u:block="Mathematical Operators"
+ />
+ <!-- * x226c to x2281 not in roff -->
+
+ <xsl:output-character
+ character="&#x2282;"
+ u:name="SUBSET OF"
+ u:entity="sub"
+ string="\(sb"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2283;"
+ u:name="SUPERSET OF"
+ u:entity="sup"
+ string="\(sp"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2284;"
+ u:name="NOT A SUBSET OF"
+ u:entity="nsub"
+ string="\(nb"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2285;" -->
+ <!-- * u:name="NOT A SUPERSET OF" -->
+ <!-- * u:entity="nsup" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2286;"
+ u:name="SUBSET OF OR EQUAL TO"
+ u:entity="sube"
+ string="\(ib"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2287;"
+ u:name="SUPERSET OF OR EQUAL TO"
+ u:entity="supe"
+ string="\(ip"
+ u:block="Mathematical Operators"
+ />
+ <!-- * x2288 to x2294 not in roff -->
+
+ <xsl:output-character
+ character="&#x2295;"
+ u:name="CIRCLED PLUS"
+ u:entity="oplus"
+ string="\(c+"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2296;"
+ u:name="CIRCLED MINUS"
+ u:entity="ominus"
+ string="\(c*"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2297;"
+ u:name="CIRCLED TIMES"
+ u:entity="otimes"
+ string="\(c*"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x2298 to x22a4 not in roff -->
+
+ <xsl:output-character
+ character="&#x22a5;"
+ u:name="UP TACK"
+ u:entity="bottom"
+ string="\(pp"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22a6 to x22bf not in roff -->
+
+ <xsl:output-character
+ character="&#x22c0;"
+ u:name="N-ARY LOGICAL AND"
+ string="\(AN"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c1;"
+ u:name="N-ARY LOGICAL OR"
+ string="\(OR"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c2;"
+ u:name="N-ARY INTERSECTION"
+ string="\(ca"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c3;"
+ u:name="N-ARY UNION"
+ string="\(cu"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x22c4;" -->
+ <!-- * u:name="DIAMOND OPERATOR" -->
+ <!-- * u:entity="diam" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x22c5;"
+ u:name="DOT OPERATOR"
+ u:entity="sdot"
+ string="\(md"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c6;"
+ u:name="STAR OPERATOR"
+ u:entity="sstarf"
+ string="\(**"
+ u:block="Mathematical Operators"
+ />
+ <!-- * x22c7 to x22cd not in roff -->
+
+ <xsl:output-character
+ character="&#x22ce;"
+ u:name="CURLY LOGICAL OR"
+ u:entity="cuvee"
+ string="\(OR"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22cf;"
+ u:name="CURLY LOGICAL AND"
+ u:entity="cuwed"
+ string="\(AN"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22d0 to x22d7 not in roff -->
+
+ <xsl:output-character
+ character="&#x22d8;"
+ u:name="VERY MUCH LESS-THAN"
+ u:entity="Ll"
+ string="&lt;&lt;&lt;"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22d9;"
+ u:name="VERY MUCH GREATER-THAN"
+ u:entity="Gg"
+ string=">>>"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22da to x22ee not in roff -->
+
+ <xsl:output-character
+ character="&#x22ef;"
+ u:name="MIDLINE HORIZONTAL ELLIPSIS"
+ string="\&amp;..."
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22fo to x22ff not in roff -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Mathematical Operators -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Miscellaneous Technical -->
+ <!-- * x2300 to x23ff -->
+ <!-- * - do nothing except for angle brackets - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <xsl:output-character
+ character="&#x2329;"
+ u:name="LEFT-POINTING ANGLE BRACKET"
+ u:entity="lang"
+ string="\(la"
+ u:block="Miscellaneous Technical"
+ />
+ <xsl:output-character
+ character="&#x232a;"
+ u:name="RIGHT-POINTING ANGLE BRACKET"
+ u:entity="rang"
+ string="\(ra"
+ u:block="Miscellaneous Technical"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Control Pictures -->
+ <!-- * x2400 to x243f -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2400;"
+ u:name="SYMBOL FOR NULL"
+ string="NUL"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2401;"
+ u:name="SYMBOL FOR START OF HEADING"
+ string="SOH"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2402;"
+ u:name="SYMBOL FOR START OF TEXT"
+ string="STX"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2403;"
+ u:name="SYMBOL FOR END OF TEXT"
+ string="ETX"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2404;"
+ u:name="SYMBOL FOR END OF TRANSMISSION"
+ string="EOT"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2405;"
+ u:name="SYMBOL FOR ENQUIRY"
+ string="ENQ"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2406;"
+ u:name="SYMBOL FOR ACKNOWLEDGE"
+ string="ACK"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2407;"
+ u:name="SYMBOL FOR BELL"
+ string="BEL"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2408;"
+ u:name="SYMBOL FOR BACKSPACE"
+ string="BS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2409;"
+ u:name="SYMBOL FOR HORIZONTAL TABULATION"
+ string="HT"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240a;"
+ u:name="SYMBOL FOR LINE FEED"
+ string="LF"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240b;"
+ u:name="SYMBOL FOR VERTICAL TABULATION"
+ string="VT"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240c;"
+ u:name="SYMBOL FOR FORM FEED"
+ string="FF"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240d;"
+ u:name="SYMBOL FOR CARRIAGE RETURN"
+ string="CR"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240e;"
+ u:name="SYMBOL FOR SHIFT OUT"
+ string="SO"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240f;"
+ u:name="SYMBOL FOR SHIFT IN"
+ string="SI"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2410;"
+ u:name="SYMBOL FOR DATA LINK ESCAPE"
+ string="DLE"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2411;"
+ u:name="SYMBOL FOR DEVICE CONTROL ONE"
+ string="DC1"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2412;"
+ u:name="SYMBOL FOR DEVICE CONTROL TWO"
+ string="DC2"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2413;"
+ u:name="SYMBOL FOR DEVICE CONTROL THREE"
+ string="DC3"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2414;"
+ u:name="SYMBOL FOR DEVICE CONTROL FOUR"
+ string="DC4"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2415;"
+ u:name="SYMBOL FOR NEGATIVE ACKNOWLEDGE"
+ string="NAK"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2416;"
+ u:name="SYMBOL FOR SYNCHRONOUS IDLE"
+ string="SYN"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2417;"
+ u:name="SYMBOL FOR END OF TRANSMISSION BLOCK"
+ string="ETB"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2418;"
+ u:name="SYMBOL FOR CANCEL"
+ string="CAN"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2419;"
+ u:name="SYMBOL FOR END OF MEDIUM"
+ string="EM"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241a;"
+ u:name="SYMBOL FOR SUBSTITUTE"
+ string="SUB"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241b;"
+ u:name="SYMBOL FOR ESCAPE"
+ string="ESC"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241c;"
+ u:name="SYMBOL FOR FILE SEPARATOR"
+ string="FS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241d;"
+ u:name="SYMBOL FOR GROUP SEPARATOR"
+ string="GS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241e;"
+ u:name="SYMBOL FOR RECORD SEPARATOR"
+ string="RS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241f;"
+ u:name="SYMBOL FOR UNIT SEPARATOR"
+ string="US"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2420;"
+ u:name="SYMBOL FOR SPACE"
+ string="SP"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2421;"
+ u:name="SYMBOL FOR DELETE"
+ string="DEL"
+ u:block="Control Pictures"
+ />
+ <!-- * no roff equivs for x2422 and x2423 -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2422;" -->
+ <!-- * u:name="BLANK SYMBOL" -->
+ <!-- * string="?" -->
+ <!-- * u:block="Control Pictures" -->
+ <!-- * /> -->
+ <!-- * I think there should be a roff equiv for &blank;, but as far as I -->
+ <!-- * know, there is not... -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2423;" -->
+ <!-- * u:name="OPEN BOX" -->
+ <!-- * u:entity="blank" -->
+ <!-- * string="?" -->
+ <!-- * u:block="Control Pictures" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2424;"
+ u:name="SYMBOL FOR NEWLINE"
+ string="NL"
+ u:block="Control Pictures"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Control Pictures -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Optical Character Recognition -->
+ <!-- * x2440 to x24ff -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Enclosed Alphanumerics -->
+ <!-- * x2460 to x24ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2460;"
+ u:name="CIRCLED DIGIT ONE"
+ string="1"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2461;"
+ u:name="CIRCLED DIGIT TWO"
+ string="2"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2462;"
+ u:name="CIRCLED DIGIT THREE"
+ string="3"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2463;"
+ u:name="CIRCLED DIGIT FOUR"
+ string="4"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2464;"
+ u:name="CIRCLED DIGIT FIVE"
+ string="5"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2465;"
+ u:name="CIRCLED DIGIT SIX"
+ string="6"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2466;"
+ u:name="CIRCLED DIGIT SEVEN"
+ string="7"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2467;"
+ u:name="CIRCLED DIGIT EIGHT"
+ string="8"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2468;"
+ u:name="CIRCLED DIGIT NINE"
+ string="9"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2469;"
+ u:name="CIRCLED NUMBER TEN"
+ string="10"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246a;"
+ u:name="CIRCLED NUMBER ELEVEN"
+ string="11"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246b;"
+ u:name="CIRCLED NUMBER TWELVE"
+ string="12"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246c;"
+ u:name="CIRCLED NUMBER THIRTEEN"
+ string="13"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246d;"
+ u:name="CIRCLED NUMBER FOURTEEN"
+ string="14"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246e;"
+ u:name="CIRCLED NUMBER FIFTEEN"
+ string="15"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246f;"
+ u:name="CIRCLED NUMBER SIXTEEN"
+ string="16"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2470;"
+ u:name="CIRCLED NUMBER SEVENTEEN"
+ string="17"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2471;"
+ u:name="CIRCLED NUMBER EIGHTEEN"
+ string="18"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2472;"
+ u:name="CIRCLED NUMBER NINETEEN"
+ string="19"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2473;"
+ u:name="CIRCLED NUMBER TWENTY"
+ string="20"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2474;"
+ u:name="PARENTHESIZED DIGIT ONE"
+ string="(1)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2475;"
+ u:name="PARENTHESIZED DIGIT TWO"
+ string="(2)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2476;"
+ u:name="PARENTHESIZED DIGIT THREE"
+ string="(3)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2477;"
+ u:name="PARENTHESIZED DIGIT FOUR"
+ string="(4)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2478;"
+ u:name="PARENTHESIZED DIGIT FIVE"
+ string="(5)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2479;"
+ u:name="PARENTHESIZED DIGIT SIX"
+ string="(6)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247a;"
+ u:name="PARENTHESIZED DIGIT SEVEN"
+ string="(7)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247b;"
+ u:name="PARENTHESIZED DIGIT EIGHT"
+ string="(8)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247c;"
+ u:name="PARENTHESIZED DIGIT NINE"
+ string="(9)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247d;"
+ u:name="PARENTHESIZED NUMBER TEN"
+ string="(10)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247e;"
+ u:name="PARENTHESIZED NUMBER ELEVEN"
+ string="(11)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247f;"
+ u:name="PARENTHESIZED NUMBER TWELVE"
+ string="(12)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2480;"
+ u:name="PARENTHESIZED NUMBER THIRTEEN"
+ string="(13)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2481;"
+ u:name="PARENTHESIZED NUMBER FOURTEEN"
+ string="(14)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2482;"
+ u:name="PARENTHESIZED NUMBER FIFTEEN"
+ string="(15)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2483;"
+ u:name="PARENTHESIZED NUMBER SIXTEEN"
+ string="(16)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2484;"
+ u:name="PARENTHESIZED NUMBER SEVENTEEN"
+ string="(17)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2485;"
+ u:name="PARENTHESIZED NUMBER EIGHTEEN"
+ string="(18)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2486;"
+ u:name="PARENTHESIZED NUMBER NINETEEN"
+ string="(19)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2487;"
+ u:name="PARENTHESIZED NUMBER TWENTY"
+ string="(20)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2488;"
+ u:name="DIGIT ONE FULL STOP"
+ string="1."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2489;"
+ u:name="DIGIT TWO FULL STOP"
+ string="2."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248a;"
+ u:name="DIGIT THREE FULL STOP"
+ string="3."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248b;"
+ u:name="DIGIT FOUR FULL STOP"
+ string="4."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248c;"
+ u:name="DIGIT FIVE FULL STOP"
+ string="5."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248d;"
+ u:name="DIGIT SIX FULL STOP"
+ string="6."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248e;"
+ u:name="DIGIT SEVEN FULL STOP"
+ string="7."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248f;"
+ u:name="DIGIT EIGHT FULL STOP"
+ string="8."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2490;"
+ u:name="DIGIT NINE FULL STOP"
+ string="9."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2491;"
+ u:name="NUMBER TEN FULL STOP"
+ string="10."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2492;"
+ u:name="NUMBER ELEVEN FULL STOP"
+ string="11."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2493;"
+ u:name="NUMBER TWELVE FULL STOP"
+ string="12."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2494;"
+ u:name="NUMBER THIRTEEN FULL STOP"
+ string="13."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2495;"
+ u:name="NUMBER FOURTEEN FULL STOP"
+ string="14."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2496;"
+ u:name="NUMBER FIFTEEN FULL STOP"
+ string="15."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2497;"
+ u:name="NUMBER SIXTEEN FULL STOP"
+ string="16."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2498;"
+ u:name="NUMBER SEVENTEEN FULL STOP"
+ string="17."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2499;"
+ u:name="NUMBER EIGHTEEN FULL STOP"
+ string="18."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249a;"
+ u:name="NUMBER NINETEEN FULL STOP"
+ string="19."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249b;"
+ u:name="NUMBER TWENTY FULL STOP"
+ string="20."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249c;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER A"
+ string="(a)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249d;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER B"
+ string="(b)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249e;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER C"
+ string="(c)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249f;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER D"
+ string="(d)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a0;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER E"
+ string="(e)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a1;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER F"
+ string="(f)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a2;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER G"
+ string="(g)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a3;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER H"
+ string="(h)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a4;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER I"
+ string="(i)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a5;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER J"
+ string="(j)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a6;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER K"
+ string="(k)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a7;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER L"
+ string="(l)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a8;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER M"
+ string="(m)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a9;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER N"
+ string="(n)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24aa;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER O"
+ string="(o)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ab;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER P"
+ string="(p)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ac;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER Q"
+ string="(q)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ad;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER R"
+ string="(r)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ae;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER S"
+ string="(s)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24af;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER T"
+ string="(t)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b0;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER U"
+ string="(u)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b1;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER V"
+ string="(v)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b2;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER W"
+ string="(w)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b3;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER X"
+ string="(x)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b4;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER Y"
+ string="(y)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b5;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER Z"
+ string="(z)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b6;"
+ u:name="CIRCLED LATIN CAPITAL LETTER A"
+ string="A"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b7;"
+ u:name="CIRCLED LATIN CAPITAL LETTER B"
+ string="B"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b8;"
+ u:name="CIRCLED LATIN CAPITAL LETTER C"
+ string="C"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b9;"
+ u:name="CIRCLED LATIN CAPITAL LETTER D"
+ string="D"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ba;"
+ u:name="CIRCLED LATIN CAPITAL LETTER E"
+ string="E"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bb;"
+ u:name="CIRCLED LATIN CAPITAL LETTER F"
+ string="F"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bc;"
+ u:name="CIRCLED LATIN CAPITAL LETTER G"
+ string="G"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bd;"
+ u:name="CIRCLED LATIN CAPITAL LETTER H"
+ string="H"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24be;"
+ u:name="CIRCLED LATIN CAPITAL LETTER I"
+ string="I"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bf;"
+ u:name="CIRCLED LATIN CAPITAL LETTER J"
+ string="J"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c0;"
+ u:name="CIRCLED LATIN CAPITAL LETTER K"
+ string="K"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c1;"
+ u:name="CIRCLED LATIN CAPITAL LETTER L"
+ string="L"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c2;"
+ u:name="CIRCLED LATIN CAPITAL LETTER M"
+ string="M"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c3;"
+ u:name="CIRCLED LATIN CAPITAL LETTER N"
+ string="N"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c4;"
+ u:name="CIRCLED LATIN CAPITAL LETTER O"
+ string="O"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c5;"
+ u:name="CIRCLED LATIN CAPITAL LETTER P"
+ string="P"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c6;"
+ u:name="CIRCLED LATIN CAPITAL LETTER Q"
+ string="Q"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c7;"
+ u:name="CIRCLED LATIN CAPITAL LETTER R"
+ string="R"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c8;"
+ u:name="CIRCLED LATIN CAPITAL LETTER S"
+ u:entity="oS"
+ string="S"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c9;"
+ u:name="CIRCLED LATIN CAPITAL LETTER T"
+ string="T"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ca;"
+ u:name="CIRCLED LATIN CAPITAL LETTER U"
+ string="U"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cb;"
+ u:name="CIRCLED LATIN CAPITAL LETTER V"
+ string="V"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cc;"
+ u:name="CIRCLED LATIN CAPITAL LETTER W"
+ string="W"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cd;"
+ u:name="CIRCLED LATIN CAPITAL LETTER X"
+ string="X"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ce;"
+ u:name="CIRCLED LATIN CAPITAL LETTER Y"
+ string="Y"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cf;"
+ u:name="CIRCLED LATIN CAPITAL LETTER Z"
+ string="Z"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d0;"
+ u:name="CIRCLED LATIN SMALL LETTER A"
+ string="a"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d1;"
+ u:name="CIRCLED LATIN SMALL LETTER B"
+ string="b"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d2;"
+ u:name="CIRCLED LATIN SMALL LETTER C"
+ string="c"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d3;"
+ u:name="CIRCLED LATIN SMALL LETTER D"
+ string="d"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d4;"
+ u:name="CIRCLED LATIN SMALL LETTER E"
+ string="e"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d5;"
+ u:name="CIRCLED LATIN SMALL LETTER F"
+ string="f"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d6;"
+ u:name="CIRCLED LATIN SMALL LETTER G"
+ string="g"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d7;"
+ u:name="CIRCLED LATIN SMALL LETTER H"
+ string="h"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d8;"
+ u:name="CIRCLED LATIN SMALL LETTER I"
+ string="i"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d9;"
+ u:name="CIRCLED LATIN SMALL LETTER J"
+ string="j"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24da;"
+ u:name="CIRCLED LATIN SMALL LETTER K"
+ string="k"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24db;"
+ u:name="CIRCLED LATIN SMALL LETTER L"
+ string="l"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24dc;"
+ u:name="CIRCLED LATIN SMALL LETTER M"
+ string="m"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24dd;"
+ u:name="CIRCLED LATIN SMALL LETTER N"
+ string="n"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24de;"
+ u:name="CIRCLED LATIN SMALL LETTER O"
+ string="o"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24df;"
+ u:name="CIRCLED LATIN SMALL LETTER P"
+ string="p"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e0;"
+ u:name="CIRCLED LATIN SMALL LETTER Q"
+ string="q"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e1;"
+ u:name="CIRCLED LATIN SMALL LETTER R"
+ string="r"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e2;"
+ u:name="CIRCLED LATIN SMALL LETTER S"
+ string="s"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e3;"
+ u:name="CIRCLED LATIN SMALL LETTER T"
+ string="t"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e4;"
+ u:name="CIRCLED LATIN SMALL LETTER U"
+ string="u"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e5;"
+ u:name="CIRCLED LATIN SMALL LETTER V"
+ string="b"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e6;"
+ u:name="CIRCLED LATIN SMALL LETTER W"
+ string="w"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e7;"
+ u:name="CIRCLED LATIN SMALL LETTER X"
+ string="x"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e8;"
+ u:name="CIRCLED LATIN SMALL LETTER Y"
+ string="y"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e9;"
+ u:name="CIRCLED LATIN SMALL LETTER Z"
+ string="z"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ea;"
+ u:name="CIRCLED DIGIT ZERO"
+ string="0"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24eb;"
+ u:name="NEGATIVE CIRCLED NUMBER ELEVEN"
+ string="11"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ec;"
+ u:name="NEGATIVE CIRCLED NUMBER TWELVE"
+ string="12"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ed;"
+ u:name="NEGATIVE CIRCLED NUMBER THIRTEEN"
+ string="13"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ee;"
+ u:name="NEGATIVE CIRCLED NUMBER FOURTEEN"
+ string="14"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ef;"
+ u:name="NEGATIVE CIRCLED NUMBER FIFTEEN"
+ string="15"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f0;"
+ u:name="NEGATIVE CIRCLED NUMBER SIXTEEN"
+ string="16"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f1;"
+ u:name="NEGATIVE CIRCLED NUMBER SEVENTEEN"
+ string="17"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f2;"
+ u:name="NEGATIVE CIRCLED NUMBER EIGHTEEN"
+ string="18"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f3;"
+ u:name="NEGATIVE CIRCLED NUMBER NINETEEN"
+ string="19"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f4;"
+ u:name="NEGATIVE CIRCLED NUMBER TWENTY"
+ string="20"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f5;"
+ u:name="DOUBLE CIRCLED DIGIT ONE"
+ string="1"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f6;"
+ u:name="DOUBLE CIRCLED DIGIT TWO"
+ string="2"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f7;"
+ u:name="DOUBLE CIRCLED DIGIT THREE"
+ string="3"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f8;"
+ u:name="DOUBLE CIRCLED DIGIT FOUR"
+ string="4"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f9;"
+ u:name="DOUBLE CIRCLED DIGIT FIVE"
+ string="5"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fa;"
+ u:name="DOUBLE CIRCLED DIGIT SIX"
+ string="6"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fb;"
+ u:name="DOUBLE CIRCLED DIGIT SEVEN"
+ string="7"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fc;"
+ u:name="DOUBLE CIRCLED DIGIT EIGHT"
+ string="8"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fd;"
+ u:name="DOUBLE CIRCLED DIGIT NINE"
+ string="9"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fe;"
+ u:name="DOUBLE CIRCLED NUMBER TEN"
+ string="10"
+ u:block="Enclosed Alphanumerics"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Enclosed Alphanumerics -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Box Drawing -->
+ <!-- * x2500 to x257f -->
+ <!-- * Block Elements -->
+ <!-- * x2580 to x259f -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Geometric Shapes -->
+ <!-- * x25a0 to x25f7 -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x25a1;"
+ u:name="WHITE SQUARE"
+ u:entity="squ"
+ string="\(sq"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25a2;"
+ u:name="WHITE SQUARE WITH ROUNDED CORNERS"
+ string="\(sq"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ab;"
+ u:name="WHITE SMALL SQUARE"
+ string="\(sq"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ba;"
+ u:name="BLACK RIGHT-POINTING POINTER"
+ string="\fB>\fR"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25bb;"
+ u:name="WHITE RIGHT-POINTING POINTER"
+ string=">"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25bc;"
+ u:name="BLACK DOWN-POINTING TRIANGLE"
+ string="\fBv\fR"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25bd;"
+ u:name="WHITE DOWN-POINTING TRIANGLE"
+ u:entity="xdtri"
+ string="v"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c4;"
+ u:name="BLACK LEFT-POINTING POINTER"
+ string="\fB&lt;\fR"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c5;"
+ u:name="WHITE LEFT-POINTING POINTER"
+ string="&lt;"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c6;"
+ u:name="BLACK DIAMOND"
+ string="\(DI"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c7;"
+ u:name="WHITE DIAMOND"
+ string="\(lz"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ca;"
+ u:name="LOZENGE"
+ u:entity="loz"
+ string="\(lz"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25cb;"
+ u:name="WHITE CIRCLE"
+ u:entity="cir"
+ string="\(ci"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25cf;"
+ u:name="BLACK CIRCLE"
+ string="\(bu"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25e6;"
+ u:name="WHITE BULLET"
+ string="\(ci"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ef;"
+ u:name="LARGE CIRCLE"
+ u:entity="xcirc"
+ string="\(ci"
+ u:block="Geometric Shapes"
+ />
+ <!-- * ***************************************************************** -->
+ <!-- * End: Geometric Shapes -->
+ <!-- * x25a0 to x25f7 -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Miscellaneous Symbols -->
+ <!-- * x2600 to x26ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x261a;"
+ u:name="BLACK LEFT POINTING INDEX"
+ string="\(lh"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x261b;"
+ u:name="BLACK RIGHT POINTING INDEX"
+ string="\(rh)"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x261c;"
+ u:name="WHITE LEFT POINTING INDEX"
+ string="\(lh"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x261e;"
+ u:name="WHITE RIGHT POINTING INDEX"
+ string="\(rh)"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2660;"
+ u:name="BLACK SPADE SUIT"
+ u:entity="spades"
+ string="\(SP"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2661;"
+ u:name="WHITE HEART SUIT"
+ string="\(HE"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2662;"
+ u:name="WHITE DIAMOND SUIT"
+ string="\(DI"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2663;"
+ u:name="BLACK CLUB SUIT"
+ u:entity="clubs"
+ string="\(CL"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2664;"
+ u:name="WHITE SPADE SUIT"
+ string="\(SP"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2665;"
+ u:name="BLACK HEART SUIT"
+ u:entity="hearts"
+ string="\(HE"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2666;"
+ u:name="BLACK DIAMOND SUIT"
+ u:entity="diams"
+ string="\(DI"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2667;"
+ u:name="WHITE CLUB SUIT"
+ string="\(CL"
+ u:block="Miscellaneous Symbols"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Miscellaneous Symbols -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Dingbats -->
+ <!-- * x2700 to x27be -->
+ <!-- * No roff equiv for most of these; just map to something close -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2713;"
+ u:name="CHECK MARK"
+ u:entity="check"
+ string="\(OK"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2714;"
+ u:name="HEAVY CHECK MARK"
+ string="\fB\(OK\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2715;"
+ u:name="MULTIPLICATION X"
+ string="\(mu"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2716;"
+ u:name="HEAVY MULTIPLICATION X"
+ string="\fB\(mu\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2717;"
+ u:name="BALLOT X"
+ u:entity="cross"
+ string="\(mu"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2718;"
+ u:name="HEAVY BALLOT X"
+ string="\fB\(mu\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2719;"
+ u:name="OUTLINED GREEK CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271a;"
+ u:name="HEAVY GREEK CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271b;"
+ u:name="OPEN CENTRE CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271c;"
+ u:name="HEAVY OPEN CENTRE CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271d;"
+ u:name="LATIN CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271e;"
+ u:name="SHADOWED WHITE LATIN CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271f;"
+ u:name="OUTLINED LATIN CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2720;"
+ u:name="MALTESE CROSS"
+ u:entity="malt"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2721;"
+ u:name="STAR OF DAVID"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2722;"
+ u:name="FOUR TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2723;"
+ u:name="FOUR BALLOON-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2724;"
+ u:name="HEAVY FOUR BALLOON-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2725;"
+ u:name="FOUR CLUB-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2726;"
+ u:name="BLACK FOUR POINTED STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2727;"
+ u:name="WHITE FOUR POINTED STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2729;"
+ u:name="STRESS OUTLINED WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272a;"
+ u:name="CIRCLED WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272b;"
+ u:name="OPEN CENTRE BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272c;"
+ u:name="BLACK CENTRE WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272d;"
+ u:name="OUTLINED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272e;"
+ u:name="HEAVY OUTLINED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272f;"
+ u:name="PINWHEEL STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2730;"
+ u:name="SHADOWED WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2731;"
+ u:name="HEAVY ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2732;"
+ u:name="OPEN CENTRE ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2733;"
+ u:name="EIGHT SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2734;"
+ u:name="EIGHT POINTED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2735;"
+ u:name="EIGHT POINTED PINWHEEL STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2736;"
+ u:name="SIX POINTED BLACK STAR"
+ u:entity="sext"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2737;"
+ u:name="EIGHT POINTED RECTILINEAR BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2738;"
+ u:name="HEAVY EIGHT POINTED RECTILINEAR BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2739;"
+ u:name="TWELVE POINTED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273a;"
+ u:name="SIXTEEN POINTED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273b;"
+ u:name="TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273c;"
+ u:name="OPEN CENTRE TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273d;"
+ u:name="HEAVY TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273e;"
+ u:name="SIX PETALLED BLACK AND WHITE FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273f;"
+ u:name="BLACK FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2740;"
+ u:name="WHITE FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2741;"
+ u:name="EIGHT PETALLED OUTLINED BLACK FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2742;"
+ u:name="CIRCLED OPEN CENTRE EIGHT POINTED STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2743;"
+ u:name="HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2744;"
+ u:name="SNOWFLAKE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2745;"
+ u:name="TIGHT TRIFOLIATE SNOWFLAKE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2746;"
+ u:name="HEAVY CHEVRON SNOWFLAKE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2747;"
+ u:name="SPARKLE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2748;"
+ u:name="HEAVY SPARKLE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2749;"
+ u:name="BALLOON-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274a;"
+ u:name="EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274b;"
+ u:name="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274d;"
+ u:name="SHADOWED WHITE CIRCLE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274f;"
+ u:name="LOWER RIGHT DROP-SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2750;"
+ u:name="UPPER RIGHT DROP-SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2751;"
+ u:name="LOWER RIGHT SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2752;"
+ u:name="UPPER RIGHT SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2756;"
+ u:name="BLACK DIAMOND MINUS WHITE X"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2758;"
+ u:name="LIGHT VERTICAL BAR"
+ string="\(bv"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2759;"
+ u:name="MEDIUM VERTICAL BAR"
+ string="\fB\(bv\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275a;"
+ u:name="HEAVY VERTICAL BAR"
+ string="\fB\(bv\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275b;"
+ u:name="HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(oq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275c;"
+ u:name="HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(cq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275d;"
+ u:name="HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(lq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275e;"
+ u:name="HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(rq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2761;"
+ u:name="CURVED STEM PARAGRAPH SIGN ORNAMENT"
+ string="\(ps"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2762;"
+ u:name="HEAVY EXCLAMATION MARK ORNAMENT"
+ string="\fB!\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2763;"
+ u:name="HEAVY HEART EXCLAMATION MARK ORNAMENT"
+ string="\fB!\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2764;"
+ u:name="HEAVY BLACK HEART"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2765;"
+ u:name="ROTATED HEAVY BLACK HEART BULLET"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2766;"
+ u:name="FLORAL HEART"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2767;"
+ u:name="ROTATED FLORAL HEART BULLET"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2776;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT ONE"
+ string="1"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2777;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT TWO"
+ string="2"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2778;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT THREE"
+ string="3"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2779;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT FOUR"
+ string="4"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277a;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT FIVE"
+ string="5"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277b;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT SIX"
+ string="6"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277c;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT SEVEN"
+ string="7"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277d;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT EIGHT"
+ string="8"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277e;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT NINE"
+ string="9"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277f;"
+ u:name="DINGBAT NEGATIVE CIRCLED NUMBER TEN"
+ string="10"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2780;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT ONE"
+ string="1"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2781;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT TWO"
+ string="2"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2782;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT THREE"
+ string="3"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2783;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FOUR"
+ string="4"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2784;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FIVE"
+ string="5"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2785;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SIX"
+ string="6"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2786;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN"
+ string="7"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2787;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT"
+ string="8"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2788;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT NINE"
+ string="9"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2789;"
+ u:name="DINGBAT CIRCLED SANS-SERIF NUMBER TEN"
+ string="10"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278a;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE"
+ string="1"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278b;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO"
+ string="2"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278c;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE"
+ string="3"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278d;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR"
+ string="4"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278e;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE"
+ string="5"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278f;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX"
+ string="6"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2790;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN"
+ string="7"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2791;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT"
+ string="8"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2792;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE"
+ string="9"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2793;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN"
+ string="10"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2794;"
+ u:name="HEAVY WIDE-HEADED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2799;"
+ u:name="HEAVY RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279b;"
+ u:name="DRAFTING POINT RIGHTWARDS ARROW"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279c;"
+ u:name="HEAVY ROUND-TIPPED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279d;"
+ u:name="TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279e;"
+ u:name="HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279f;"
+ u:name="DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a0;"
+ u:name="HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a1;"
+ u:name="BLACK RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a2;"
+ u:name="THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a3;"
+ u:name="THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a4;"
+ u:name="BLACK RIGHTWARDS ARROWHEAD"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a7;"
+ u:name="SQUAT BLACK RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a8;"
+ u:name="HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a9;"
+ u:name="RIGHT-SHADED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27aa;"
+ u:name="LEFT-SHADED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ab;"
+ u:name="BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ac;"
+ u:name="FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ad;"
+ u:name="HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ae;"
+ u:name="HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27af;"
+ u:name="NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b1;"
+ u:name="NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b2;"
+ u:name="CIRCLED HEAVY WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b3;"
+ u:name="WHITE-FEATHERED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b4;"
+ u:name="BLACK-FEATHERED SOUTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b5;"
+ u:name="BLACK-FEATHERED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b6;"
+ u:name="BLACK-FEATHERED NORTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b7;"
+ u:name="HEAVY BLACK-FEATHERED SOUTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b8;"
+ u:name="HEAVY BLACK-FEATHERED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b9;"
+ u:name="HEAVY BLACK-FEATHERED NORTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ba;"
+ u:name="TEARDROP-BARBED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27bb;"
+ u:name="HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27bc;"
+ u:name="WEDGE-TAILED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27bd;"
+ u:name="HEAVY WEDGE-TAILED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27be;"
+ u:name="OPEN-OUTLINED RIGHTWARDS ARROW"
+ string="\fR\(rA\fB"
+ u:block="Dingbats"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Dingbats -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Miscellaneous Mathematical Symbols -->
+ <!-- * x27c0 to x27ef -->
+ <!-- * Supplemental Arrows -->
+ <!-- * x27f0 to x297f -->
+ <!-- * Miscellaneous Mathematical Symbols -->
+ <!-- * x2980 to x29ff -->
+ <!-- * Supplemental Mathematical Operators -->
+ <!-- * x2a00 to x2aff -->
+ <!-- * - no nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Alphabetic Presentation Forms -->
+ <!-- * xfb00 to xfb04 -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#xfb00;"
+ u:name="LATIN SMALL LIGATURE FF"
+ u:entity="fflig"
+ string="\(ff"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb01;"
+ u:name="LATIN SMALL LIGATURE FI"
+ u:entity="filig"
+ string="\(fi"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb02;"
+ u:name="LATIN SMALL LIGATURE FL"
+ u:entity="fllig"
+ string="\(fl"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb03;"
+ u:name="LATIN SMALL LIGATURE FFI"
+ u:entity="ffilig"
+ string="\(Fi"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb04;"
+ u:name="LATIN SMALL LIGATURE FFL"
+ u:entity="ffllig"
+ string="\(Fl"
+ u:block="Alphabetic Presentation Forms"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Alphabetic Presentation Forms -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ================================================================= -->
+
+ <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
+ <!-- * Line Breaking Properties"[1] says: -->
+ <!-- * -->
+ <!-- * The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
+ <!-- * choice for an invisible character to keep other characters -->
+ <!-- * together that would otherwise be split across the line at a direct -->
+ <!-- * break. The character FEFF has the same effect, but because it is -->
+ <!-- * also used in an unrelated way as a byte order mark, the use of the -->
+ <!-- * WJ as the preferred interword glue simplifies the handling of FEFF. -->
+ <!-- * -->
+ <!-- * [1] http://www.unicode.org/reports/tr14/ -->
+ <!-- * -->
+ <!-- * We include it here anyway & map to the roff zero-width no-break -->
+ <xsl:output-character
+ character="&#xfeff;"
+ u:name="ZERO WIDTH NO-BREAK SPACE"
+ string="\&amp;"
+ u:block="Arabic Presentation Forms-B"
+ />
+</xsl:character-map>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl
new file mode 100644
index 0000000..a0a4251
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl
@@ -0,0 +1,311 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+ <xsl:import href="../html/docbook.xsl"/>
+ <xsl:import href="../html/manifest.xsl"/>
+ <!-- * html-synop.xsl file is generated by build -->
+ <xsl:import href="html-synop.xsl"/>
+ <xsl:output method="text"
+ encoding="UTF-8"
+ indent="no"/>
+ <!-- ********************************************************************
+ $Id: docbook.xsl 8841 2010-08-14 07:21:25Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <!-- ==================================================================== -->
+
+ <xsl:include href="../common/refentry.xsl"/>
+ <xsl:include href="../common/charmap.xsl"/>
+ <xsl:include href="param.xsl"/>
+ <xsl:include href="utility.xsl"/>
+ <xsl:include href="info.xsl"/>
+ <xsl:include href="other.xsl"/>
+ <xsl:include href="refentry.xsl"/>
+ <xsl:include href="block.xsl"/>
+ <xsl:include href="inline.xsl"/>
+ <xsl:include href="synop.xsl"/>
+ <xsl:include href="lists.xsl"/>
+ <xsl:include href="endnotes.xsl"/>
+ <xsl:include href="table.xsl"/>
+ <xsl:include href="pi.xsl"/>
+
+ <!-- * we rename the following just to avoid using params with "man" -->
+ <!-- * prefixes in the table.xsl stylesheet (because that stylesheet -->
+ <!-- * can potentially be reused for more than just man output) -->
+ <xsl:param name="tbl.font.headings" select="$man.font.table.headings"/>
+ <xsl:param name="tbl.font.title" select="$man.font.table.title"/>
+
+ <xsl:param name="stylesheet.result.type" select="'manpages'"/>
+
+ <!-- ==================================================================== -->
+
+ <xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * when we find a namespaced document, strip the -->
+ <!-- * namespace and then continue processing it. -->
+ <xsl:when test="//self::db:*">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="stripns">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($stripns)"/>
+ </xsl:when>
+ <xsl:when test="//*[local-name() = 'refentry']">
+ <!-- * Check to see if we have any refentry children in this -->
+ <!-- * document; if so, process them. The reason we use -->
+ <!-- * local-name()=refentry (instead of just //refentry) to to -->
+ <!-- * check for refentry children is because this stylsheet is -->
+ <!-- * also post-processed by the stylesheet build to create the -->
+ <!-- * manpages/profile-docbook.xsl, and the refentry child check -->
+ <!-- * in the profile-docbook.xsl stylesheet won't work if we do -->
+ <!-- * a simple //refentry check. -->
+ <xsl:apply-templates select="//refentry"/>
+ <!-- * if $man.output.manifest.enabled is non-zero, -->
+ <!-- * generate a manifest file -->
+ <xsl:if test="not($man.output.manifest.enabled = 0)">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="filename">
+ <xsl:choose>
+ <xsl:when test="not($man.output.manifest.filename = '')">
+ <!-- * If a name for the manifest file is specified, -->
+ <!-- * use that name. -->
+ <xsl:value-of select="$man.output.manifest.filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, if user has unset -->
+ <!-- * $man.output.manifest.filename, default to -->
+ <!-- * using "MAN.MANIFEST" as the filename. Because -->
+ <!-- * $man.output.manifest.enabled is non-zero and -->
+ <!-- * so we must have a filename in order to -->
+ <!-- * generate the manifest. -->
+ <xsl:text>MAN.MANIFEST</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, the document does not contain any -->
+ <!-- * refentry elements, so log/emit message and stop. -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Erro</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text> no refentry</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>No refentry elements found</xsl:text>
+ <xsl:if test="$doc.title != ''">
+ <xsl:text> in "</xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($doc.title) &gt; 30">
+ <xsl:value-of select="substring($doc.title,1,30)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$doc.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"</xsl:text>
+ </xsl:if>
+ <xsl:text>.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <xsl:template match="refentry">
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <!-- * Just use the first refname found as the "name" of the man -->
+ <!-- * page (which may different from the "title"...) -->
+ <xsl:variable name="first.refname" select="refnamediv[1]/refname[1]"/>
+
+ <xsl:call-template name="root.messages">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ </xsl:call-template>
+
+ <!-- * Because there are several times when we need to check *info of -->
+ <!-- * each refentry and its ancestors, we get those and store the -->
+ <!-- * data from them as a node-set in memory. -->
+
+ <!-- * Make a node-set with contents of *info -->
+ <xsl:variable name="get.info"
+ select="ancestor-or-self::*/*[substring(local-name(),
+ string-length(local-name()) - 3) = 'info']"
+ />
+ <xsl:variable name="info" select="exsl:node-set($get.info)"/>
+
+ <!-- * The get.refentry.metadata template is in -->
+ <!-- * ../common/refentry.xsl. It looks for metadata in $info -->
+ <!-- * and in various other places and then puts it into a form -->
+ <!-- * that's easier for us to digest. -->
+ <xsl:variable name="get.refentry.metadata">
+ <xsl:call-template name="get.refentry.metadata">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="prefs" select="$refentry.metadata.prefs"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="refentry.metadata" select="exsl:node-set($get.refentry.metadata)"/>
+
+ <!-- * Assemble the various parts into a complete page, then store into -->
+ <!-- * $manpage.contents so that we can manipluate them further. -->
+ <xsl:variable name="manpage.contents">
+ <!-- * preprocessor invocation (need for legacy AT&T troff use) -->
+ <!-- * this tells troff to pre-process the page through tbl(1) -->
+ <!-- * (groff can figure it out automatically, but AT&T troff can't) -->
+ <xsl:text>'\" t&#10;</xsl:text>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * top.comment = commented-out section at top of roff source -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="top.comment">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="date" select="$refentry.metadata/date"/>
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="manual" select="$refentry.metadata/manual"/>
+ <xsl:with-param name="source" select="$refentry.metadata/source"/>
+ <xsl:with-param name="refname" select="$first.refname"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * TH.title.line = title line in header/footer of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="TH.title.line">
+ <!-- * .TH TITLE section extra1 extra2 extra3 -->
+ <!-- * -->
+ <!-- * According to the man(7) man page: -->
+ <!-- * -->
+ <!-- * extra1 = date, "the date of the last revision" -->
+ <!-- * extra2 = source, "the source of the command" -->
+ <!-- * extra3 = manual, "the title of the manual -->
+ <!-- * (e.g., Linux Programmer's Manual)" -->
+ <!-- * -->
+ <!-- * So, we end up with: -->
+ <!-- * -->
+ <!-- * .TH TITLE section date source manual -->
+ <!-- * -->
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="extra1" select="$refentry.metadata/date"/>
+ <xsl:with-param name="extra2" select="$refentry.metadata/source"/>
+ <xsl:with-param name="extra3" select="$refentry.metadata/manual"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * (re)define some macros -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="define.portability.macros"/>
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:call-template name="define.macros"/>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Set default hyphenation, justification, indentation, and -->
+ <!-- * line-breaking -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="set.default.formatting"/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Main body of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:text>.\" * MAIN CONTENT STARTS HERE *&#10;</xsl:text>
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * AUTHOR section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.authors.section.enabled = 0)">
+ <xsl:call-template name="author.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * COPYRIGHT section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.copyright.section.enabled = 0)">
+ <xsl:call-template name="copyright.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * NOTES list (only if user wants endnotes numbered and/or listed) -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="$man.endnotes.list.enabled != 0 or
+ $man.endnotes.are.numbered != 0">
+ <xsl:call-template name="endnotes.list"/>
+ </xsl:if>
+ </xsl:variable> <!-- * end of manpage.contents -->
+
+ <!-- * Prepare the page contents for final output, then store in -->
+ <!-- * $manpage.contents.prepared so the we can pass it on to the -->
+ <!-- * write.text.chunk() function -->
+ <xsl:variable name="manpage.contents.prepared">
+ <!-- * "Preparing" the page contents involves, at a minimum, -->
+ <!-- * doubling any backslashes found (so they aren't interpreted -->
+ <!-- * as roff escapes). -->
+ <!-- * -->
+ <!-- * If $charmap.enabled is true, "preparing" the page contents also -->
+ <!-- * involves applying a character map to convert Unicode symbols and -->
+ <!-- * special characters into corresponding roff escape sequences. -->
+ <xsl:call-template name="prepare.manpage.contents">
+ <xsl:with-param name="content" select="$manpage.contents"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- * Write the prepared page contents to disk to create -->
+ <!-- * the final man page. -->
+ <xsl:call-template name="write.man.file">
+ <xsl:with-param name="name" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="content" select="$manpage.contents.prepared"/>
+ </xsl:call-template>
+
+ <!-- * Generate "stub" (alias) pages (if any needed) -->
+ <xsl:call-template name="write.stubs">
+ <xsl:with-param name="first.refname" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl
new file mode 100644
index 0000000..8e52e01
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl
@@ -0,0 +1,586 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="db ng exsl xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: endnotes.xsl 8703 2010-07-06 20:57:06Z nwalsh $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- * -->
+<!-- * The templates in this file handle elements whose contents can't -->
+<!-- * be displayed completely within the main text flow in output, but -->
+<!-- * instead need to be displayed "out of line". Those elements are: -->
+<!-- * -->
+<!-- * - elements providing annotative text (annotation|alt|footnote) -->
+<!-- * - elements pointing at external resources (ulink, link, and -->
+<!-- * any elements with xlink:href attributes; and imagedata, -->
+<!-- * audiodata, and videodata - which (using their fileref -->
+<!-- * attribute) reference external files -->
+<!-- * -->
+<!-- * Within this stylesheet, the above are collectively referred to as -->
+<!-- * a "notesources". This stylesheet handles those notesources in -->
+<!-- * this way: -->
+<!-- * -->
+<!-- * 1. Constructs a numbered in-memory index of all unique "earmarks“ -->
+<!-- * of all notesources in the document. For each link, the -->
+<!-- * earmark is the value of its url or xlink:href attribute; for -->
+<!-- * each imagedata|audiodata|videodata: the value of its fileref -->
+<!-- * attribute; for each annotative element: its content. -->
+<!-- * -->
+<!-- * Notesources with the same earmark are assigned the same -->
+<!-- * number. -->
+<!-- * -->
+<!-- * By design, that index excludes any element whose string value -->
+<!-- * is identical to the value of its url xlink:href attribute). -->
+<!-- * -->
+<!-- * 2. Puts a numbered marker inline to mark the place where the -->
+<!-- * notesource occurs in the main text flow. -->
+<!-- * -->
+<!-- * 3. Generates a numbered endnotes list (titled NOTES in English) -->
+<!-- * at the end of the man page, with the contents of each -->
+<!-- * notesource. -->
+<!-- * -->
+<!-- * Note that table footnotes are not listed in the endnotes list, -->
+<!-- * and are not handled by this stylesheet (they are instead handled -->
+<!-- * by the table.xsl stylesheet). -->
+<!-- * -->
+<!-- * Also, we don't get notesources in *info sections or Refmeta or -->
+<!-- * Refnamediv or Indexterm, because, in manpages output, contents of -->
+<!-- * those are either suppressed or are displayed out of document -->
+<!-- * order - for example, the Info/Author content gets moved to the -->
+<!-- * end of the page. So, if we were to number notesources in the -->
+<!-- * Author content, it would "throw off" the numbering at the -->
+<!-- * beginning of the main text flow. -->
+<!-- * -->
+<!-- * And for the record, one reason we don't use xsl:key to index the -->
+<!-- * earmarks is that we need to get and check the sets of -->
+<!-- * earmarks for uniqueness per-Refentry (not per-document). -->
+<!-- * -->
+<!-- * FIXME: -->
+<!-- * as with "repeat" URLS, alt instances that have the same string value -->
+<!-- * as preceding ones (likely to occur for repeat acroynyms and -->
+<!-- * abbreviations) should be listed only once in the endnotes list, -->
+<!-- * and numbered accordingly inline; split man.indent.width into -->
+<!-- * man.indent.width.value (default 4) and man.indent.width.units -->
+<!-- * (default n); also, if the first child of notesource is some block -->
+<!-- * content other than a (non-formal) paragraph, the current code -->
+<!-- * will probably end up generating a blank line after the -->
+<!-- * corresponding number in the endnotes list... we should probably -->
+<!-- * try to instead display the title of that block content there (if -->
+<!-- * there is one: e.g., the list title, admonition title, etc.) -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="get.all.earmark.indexes.in.current.document">
+ <!-- * Here we create a tree to hold indexes of all earmarks in -->
+ <!-- * the current document. If the current document contains -->
+ <!-- * multiple refentry instances, then this tree will contain -->
+ <!-- * multiple indexes. -->
+ <xsl:if test="$man.endnotes.are.numbered != 0">
+ <!-- * Only create earmark indexes if user wants numbered endnotes -->
+ <xsl:for-each select="//refentry">
+ <earmark.index>
+ <xsl:attribute name="idref">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <xsl:for-each
+ select=".//*[self::*[@xlink:href]
+ or self::ulink
+ or self::imagedata
+ or self::audiodata
+ or self::videodata
+ or self::footnote[not(ancestor::table)]
+ or self::annotation
+ or self::alt]
+ [(node()
+ or self::imagedata
+ or self::audiodata
+ or self::videodata
+ )
+ and not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and not(. = @url)
+ and not(. = @xlink:href)
+ and not(@url =
+ preceding::ulink[node()
+ and not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and (generate-id(ancestor::refentry)
+ = generate-id(current()))]/@url)
+ and not(@xlink:href =
+ preceding::*[@xlink:href][node()
+ and not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and (generate-id(ancestor::refentry)
+ = generate-id(current()))]/@xlink:href)
+ and not(@fileref =
+ preceding::*[@fileref][
+ not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and (generate-id(ancestor::refentry)
+ = generate-id(current()))]/@fileref)]">
+ <earmark>
+ <xsl:attribute name="id">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <xsl:attribute name="number">
+ <xsl:value-of select="position()"/>
+ </xsl:attribute>
+ <xsl:if test="@url|@xlink:href|@fileref">
+ <!-- * Only add a uri attribute if the notesource is -->
+ <!-- * a link or an element that references an external -->
+ <!-- * (an imagedata, audiodata, or videodata element) -->
+ <xsl:attribute name="uri">
+ <xsl:value-of select="@url|@xlink:href|@fileref"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy>
+ <xsl:copy-of select="node()"/>
+ </xsl:copy>
+ </earmark>
+ </xsl:for-each>
+ </earmark.index>
+ </xsl:for-each>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*[@xlink:href]|ulink
+ |imagedata|audiodata|videodata
+ |footnote[not(ancestor::table)]
+ |annotation|alt">
+ <xsl:variable name="refname" select="ancestor::refentry/refnamediv[1]/refname[1]"/>
+ <xsl:variable name="all.earmark.indexes.in.current.document.rtf">
+ <xsl:call-template name="get.all.earmark.indexes.in.current.document"/>
+ </xsl:variable>
+ <xsl:variable name="all.earmark.indexes.in.current.document"
+ select="exsl:node-set($all.earmark.indexes.in.current.document.rtf)"/>
+ <xsl:variable name="all.earmarks.in.current.refentry.rtf">
+ <!-- * get the set of all earmarks for the ancestor Refentry of -->
+ <!-- * this notesource -->
+ <xsl:copy-of
+ select="$all.earmark.indexes.in.current.document/earmark.index
+ [@idref =
+ generate-id(current()/ancestor::refentry)]/earmark"/>
+ </xsl:variable>
+ <xsl:variable name="all.earmarks.in.current.refentry"
+ select="exsl:node-set($all.earmarks.in.current.refentry.rtf)"/>
+
+ <!-- * identify the earmark for the current element -->
+ <xsl:variable name="earmark">
+ <xsl:choose>
+ <xsl:when test="@url|@xlink:href">
+ <xsl:value-of select="@url|@xlink:href"/>
+ </xsl:when>
+ <xsl:when test="@fileref">
+ <xsl:value-of select="@fileref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="notesource.number">
+ <!-- * Get the number for this notesource -->
+ <!-- * -->
+ <!-- * If this is an imagedata, audiodata, or videodata element -->
+ <!-- * OR if it's a non-empty element AND its string value is not -->
+ <!-- * equal to the value of its url or xlink:href attribute (if -->
+ <!-- * it has one) AND user wants endnotes numbered, only then -->
+ <!-- * do we output a number for it -->
+ <xsl:if test="(self::imagedata or
+ self::audiodata or
+ self::videodata or
+ (node()
+ and not(. = @url)
+ and not(. = @xlink:href))
+ )
+ and $man.endnotes.are.numbered != 0">
+ <!-- * To select the number for this notesource, we -->
+ <!-- * check the index of all earmarks for the current refentry -->
+ <!-- * and find the number of the indexed earmark which matches -->
+ <!-- * this notesource's earmark. -->
+ <!-- * Note that multiple notesources may share the same -->
+ <!-- * numbered earmark; in that case, they get the same number. -->
+ <!-- * -->
+ <xsl:choose>
+ <xsl:when test="self::ulink or
+ self::*[@xlink:href] or
+ self::imagedata or
+ self::audiodata or
+ self::videodata">
+ <xsl:value-of select="$all.earmarks.in.current.refentry/earmark[@uri = $earmark]/@number"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$all.earmarks.in.current.refentry/earmark[@id = $earmark]/@number"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="notesource.contents">
+ <xsl:choose>
+ <!-- * check to see if the element is empty or not -->
+ <xsl:when test="node()">
+ <!-- * this is a non-empty node, so process its contents -->
+ <xsl:apply-templates/>
+ <xsl:if test="../footnote or ../annotation">
+ <!-- * if this element is a footnote or annotation, we need to -->
+ <!-- * do some further checking on it, so we can emit warnings -->
+ <!-- * about potential problems -->
+ <xsl:for-each select="node()">
+ <xsl:if test="local-name() != 'para' and
+ local-name() != 'simpara' and
+ local-name() !=''">
+ <!-- * for each node we find as a child of a footnote or -->
+ <!-- * annotation, if it's not a para or a text node, emit a -->
+ <!-- * warning... because in manpages output, we can't render -->
+ <!-- * block-level child content of an endnote properly unless -->
+ <!-- * it's wrapped in a para that has some "prefatory" text -->
+ <xsl:variable name="parent-name" select="local-name(..)"/>
+ <xsl:variable name="endnote-number">
+ <xsl:call-template name="pad-string">
+ <!-- * endnote number may be 2 digits, so pad it with a space -->
+ <!-- * if we have only 1 digit -->
+ <xsl:with-param name="padVar" select="concat('#',$notesource.number)"/>
+ <xsl:with-param name="length" select="3"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>endnote </xsl:text>
+ <xsl:value-of select="$endnote-number"/>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Bad: </xsl:text>
+ <xsl:value-of select="$parent-name"/>
+ <!-- * figure out which occurance of this element type this -->
+ <!-- * instance is and output a number in square brackets so -->
+ <!-- * that end-user can know which element to fix -->
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="count(preceding::*[local-name() = $parent-name]) + 1"/>
+ <xsl:text>]</xsl:text>
+ <xsl:text> in source</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>endnote </xsl:text>
+ <xsl:value-of select="$endnote-number"/>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Has: </xsl:text>
+ <xsl:value-of select="$parent-name"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>endnote </xsl:text>
+ <xsl:value-of select="$endnote-number"/>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Fix: </xsl:text>
+ <xsl:value-of select="$parent-name"/>
+ <xsl:text>/</xsl:text>
+ <xsl:text>para/</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise this is an empty link or an empty imagedata, -->
+ <!-- * audiodata, or videodata element, so we just get the -->
+ <!-- * value of its url, xlink:href, or fileref attribute. -->
+ <xsl:if test="$man.hyphenate.urls = 0
+ and $man.break.after.slash = 0">
+ <!-- * Add hyphenation suppression in URL output only if -->
+ <!-- * break.after.slash is also non-zero -->
+ <xsl:call-template name="suppress.hyphenation"/>
+ <xsl:text>\%</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$earmark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="self::ulink or self::*[@xlink:href]">
+ <xsl:variable name="link.wrapper">
+ <xsl:value-of select="normalize-space($notesource.contents)"/>
+ </xsl:variable>
+ <xsl:text>\m[blue]</xsl:text>
+ <!-- * This is a hyperlink, so we need to determine if the user wants -->
+ <!-- * font formatting applied to it, and if so, what font -->
+ <xsl:choose>
+ <xsl:when test="$man.font.links = 'B'">
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($link.wrapper)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$man.font.links = 'I'">
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="exsl:node-set($link.wrapper)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$man.font.links = ''">
+ <!-- * if man.font.links is empty, user doesn't want links -->
+ <!-- * underlined, so just display content -->
+ <xsl:value-of select="$notesource.contents"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise the user has specified an unsupported value for -->
+ <!-- * man.font.links, so emit a warning and don't apply any font -->
+ <!-- * formatting -->
+ <xsl:message>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>link font</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>invalid $man.font.links value: </xsl:text>
+ <xsl:text>'</xsl:text>
+ <xsl:value-of select="$man.font.links"/>
+ <xsl:text>'</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:message>
+ <xsl:value-of select="$notesource.contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>\m[]</xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$notesource.number != ''">
+ <!-- * Format the number by placing it in square brackets. -->
+ <!-- * Also, set the number in font-size -2, and superscripted (\u -->
+ <!-- * means to move up half a line vertically) -->
+ <xsl:text>\&amp;\s-2\u[</xsl:text>
+ <xsl:value-of select="$notesource.number"/>
+ <xsl:text>]\d\s+2</xsl:text>
+ <!-- * Revert superscripting (\d means to move down half a line), and -->
+ <!-- * move the font-size back to what it was before. -->
+ <!-- * Note that the reason for the \& before the opening bracket -->
+ <!-- * is to prevent any possible linebreak from being introduced -->
+ <!-- * between the opening bracket and the following text. -->
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="endnotes.list">
+ <!-- We have stored earmark indexes for all refentry instances in the -->
+ <!-- current document, with the ID for each index being the same ID as -->
+ <!-- its corresponding refentry; so we now need to get the ID for the -->
+ <!-- current refentry so we can grab its corresponding earmark index -->
+ <xsl:variable name="current.refentry.id">
+ <xsl:value-of select="generate-id(.)"/>
+ </xsl:variable>
+
+ <xsl:variable name="endnotes.rtf">
+ <xsl:variable name="all.earmark.indexes.in.current.document.rtf">
+ <xsl:call-template name="get.all.earmark.indexes.in.current.document"/>
+ </xsl:variable>
+ <xsl:variable name="all.earmark.indexes.in.current.document"
+ select="exsl:node-set($all.earmark.indexes.in.current.document.rtf)"/>
+ <xsl:copy-of
+ select="$all.earmark.indexes.in.current.document/earmark.index
+ [@idref = $current.refentry.id]/earmark"/>
+ </xsl:variable>
+
+ <xsl:variable name="endnotes" select="exsl:node-set($endnotes.rtf)"/>
+
+ <!-- * check to see if we have actually found any content to use as -->
+ <!-- * endnotes; if we have, we generate the endnotes list, if not, -->
+ <!-- * we do nothing -->
+ <xsl:if test="$endnotes/node()">
+ <xsl:call-template name="format.endnotes.list">
+ <xsl:with-param name="endnotes" select="$endnotes"/>
+ </xsl:call-template>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="format.endnotes.list">
+ <xsl:param name="endnotes"/>
+
+ <!-- * ======= make the endnotes-list section heading ============= -->
+ <xsl:call-template name="make.subheading">
+ <xsl:with-param name="title">
+ <xsl:choose>
+ <!-- * if user has specified a heading, use that -->
+ <xsl:when test="$man.endnotes.list.heading != ''">
+ <xsl:value-of select="$man.endnotes.list.heading"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, get localized heading from gentext -->
+ <!-- * (in English, NOTES) -->
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Notes'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <!-- * ================ process each earmark ====================== -->
+ <xsl:for-each select="$endnotes/earmark">
+ <!-- * make paragraph with hanging indent, and starting with a -->
+ <!-- * number in the form " 1." (padded to $man.indent.width - 1) -->
+ <xsl:text>.IP</xsl:text>
+ <xsl:text> "</xsl:text>
+ <xsl:variable name="endnote.number">
+ <xsl:value-of select="@number"/>
+ <xsl:text>.</xsl:text>
+ </xsl:variable>
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="padVar" select="$endnote.number"/>
+ <!-- FIXME: the following assumes that $man.indent.width is in -->
+ <!-- en's; also, this should probably use $list.indent instead -->
+ <xsl:with-param name="length" select="$man.indent.width - 1"/>
+ </xsl:call-template>
+ <xsl:text>"</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * ========================================================= -->
+ <!-- * print the notesource/endnote contents -->
+ <!-- * ========================================================= -->
+ <xsl:choose>
+ <xsl:when test="*/node()">
+ <!-- * if the earmark has non-empty child content, then -->
+ <!-- * its corresponding notesource is either a link or -->
+ <!-- * an instance of annotative text, so we want to -->
+ <!-- * display that content -->
+ <xsl:choose>
+ <xsl:when test="*/node()[name(.)!='']">
+ <!-- * if node is not text only, then process it as-is -->
+ <xsl:apply-templates select="*/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise node is text-only, so normalize it -->
+ <xsl:value-of select="normalize-space(*/node())"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, this earmark has empty content, -->
+ <!-- * which means its corresponding notesource is an -->
+ <!-- * imagedata, audiodata, or videodata instance; in -->
+ <!-- * that case, we use the value of the notesource's -->
+ <!-- * @fileref attribute (which is stored in the -->
+ <!-- * earmark uri attribute) as the "contents" for -->
+ <!-- * this endnote/notesource -->
+ <xsl:call-template name="display.uri">
+ <xsl:with-param name="uri" select="@uri"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * ========================================================= -->
+ <!-- * print the URL for links -->
+ <!-- * ========================================================= -->
+ <!-- * In addition to the notesource contents, if the -->
+ <!-- * notesource is a link, we display the URL for the link. -->
+ <!-- * But for notesources that are imagedata, audiodata, or -->
+ <!-- * videodata instances, we don't want to (re)display the -->
+ <!-- * URL for those here, because for those elements, the -->
+ <!-- * notesource contents are the URL (the value of the -->
+ <!-- * @fileref attribute), and we have already rendered them. -->
+ <!-- * -->
+ <!-- * We know an earmark is a link if it has non-empty child -->
+ <!-- * content and a uri attribute; so we check for that -->
+ <!-- * condition here. -->
+ <xsl:if test="*/node() and @uri">
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * Add hyphenation suppression in URL output only if -->
+ <!-- * $break.after.slash is also non-zero -->
+ <xsl:if test="$man.hyphenate.urls = 0
+ and $man.break.after.slash = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ <xsl:text>\%</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="display.uri">
+ <xsl:with-param name="uri" select="@uri"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="display.uri">
+ <xsl:param name="uri"/>
+ <xsl:choose>
+ <xsl:when test="contains($uri, ':')">
+ <!-- * if this URI contains a colon character, it’s probably -->
+ <!-- * an absolute URI with a scheme, so we output it as-is -->
+ <xsl:value-of select="$uri"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise this is probably not an absolute URI, so we -->
+ <!-- * need to prepend $man.base.url.for.relative.links to -->
+ <!-- * give the URI some "context" in man-page output -->
+ <xsl:value-of
+ select="concat($man.base.url.for.relative.links, $uri)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl
new file mode 100644
index 0000000..06c3eb2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl
@@ -0,0 +1,1567 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- ********************************************************************
+ $Id: synop.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- synopsis is in verbatim -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:if test="..//processing-instruction('dbcmdlist')">
+ <!-- * Placing a dbcmdlist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all cmdsynopsis instances -->
+ <!-- * that are descendants of that element; so for any -->
+ <!-- * cmdsynopsis that is a descendant of an element containing -->
+ <!-- * a dbcmdlist PI, we need to output an a@id instance so that -->
+ <!-- * we will have something to link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$sepchar"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$arg.or.sep"/>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <xsl:text>
+.
+</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <i>
+ <a href="#{@linkend}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </i>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <!-- You can't introduce another <p> here, because you're
+ already in a <p> from cmdsynopsis-->
+ <span>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <a name="{$id}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template match="funcsynopsis">
+ <xsl:if test="..//processing-instruction('dbfunclist')">
+ <!-- * Placing a dbfunclist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all funcsynopsis instances that -->
+ <!-- * are descendants of that element; so for any funcsynopsis that is -->
+ <!-- * a descendant of an element containing a dbfunclist PI, we need -->
+ <!-- * to output an a@id instance so that we will have something to -->
+ <!-- * link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsisinfo">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype -->
+<!--
+
+funcprototype ::= (funcdef,
+ (void|varargs|paramdef+))
+
+funcdef ::= (#PCDATA|type|replaceable|function)*
+
+paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
+-->
+
+<xsl:template match="funcprototype">
+ <xsl:variable name="html-style">
+ <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$html-style != ''">
+ <xsl:value-of select="$html-style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!-- * 2008-02-17. the code no longer relies on the funcsynopsis.tabular.threshold -->
+<!-- * param at all (the stuff below has been commented out since mid -->
+<!-- * 2006), so I completely removed the funcsynopsis.tabular.threshold param -->
+<!-- * .. MikeSmith -->
+<!--
+ <xsl:variable name="tabular-p"
+ select="$funcsynopsis.tabular.threshold &gt; 0
+ and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
+-->
+
+ <xsl:variable name="tabular-p" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$style = 'kr' and $tabular-p">
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'kr'">
+ <xsl:apply-templates select="." mode="kr-nontabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'ansi' and $tabular-p">
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, non-tabular -->
+
+<xsl:template match="funcprototype" mode="kr-nontabular">
+ <p>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:if test="paramdef">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </xsl:if>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-nontabular">
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-nontabular">
+ <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
+ <xsl:if test="preceding-sibling::paramdef"><xsl:text>
+.
+</xsl:text></xsl:if>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, tabular -->
+
+<xsl:template match="funcprototype" mode="kr-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td> </td>
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <xsl:if test="paramdef">
+ <div class="paramdef-list">
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </div>
+ </xsl:if>
+ <div class="funcprototype-spacer"> </div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-tabular">
+ <td>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular">
+ <td>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <code>
+ <xsl:copy-of select="$type"/>
+ </code>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:when test="funcparams">
+ <td colspan="2">
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, non-tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-nontabular">
+ <p>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-nontabular">
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-nontabular">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-nontabular">
+ <code>(</code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td> </td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <div class="funcprototype-spacer"> </div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-tabular">
+ <td>
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <td>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-tabular">
+ <code>(</code>
+ <xsl:apply-templates/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<xsl:template match="classsynopsis |fieldsynopsis |methodsynopsis |constructorsynopsis |destructorsynopsis">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$language='java' or $language='Java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl' or $language='Perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl' or $language='IDL'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+ </xsl:message>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language" select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="parent::classsynopsis or (following-sibling::fieldsynopsis |following-sibling::methodsynopsis |following-sibling::constructorsynopsis |following-sibling::destructorsynopsis)">
+ <xsl:text>
+.
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- ===== Java ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="java">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text> {</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="java">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="java">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>,</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string"> </xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="java" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="decl">
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    throws </xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:text> {</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="cpp" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    throws </xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text> {</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="idl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="idl"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
+ <xsl:text>);</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="perl"/>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- Used when not occurring as a child of classsynopsis -->
+<xsl:template match="ooclass|oointerface|ooexception">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
+<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
+<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
+<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
+<!-- * per-mode matches for those linking elements in order for them -->
+<!-- * to be processed as expected. -->
+
+<xsl:template match="link|olink|xref" mode="java">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="cpp">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="idl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="perl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl
new file mode 100644
index 0000000..6698fb9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl
@@ -0,0 +1,800 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:date="http://exslt.org/dates-and-times"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="date exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: info.xsl 7883 2008-03-08 17:59:39Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <xsl:variable name="blurb-indent">
+ <xsl:choose>
+ <xsl:when test="not($man.indent.blurbs = 0)">
+ <xsl:value-of select="$man.indent.width"/>
+ </xsl:when>
+ <xsl:when test="not($man.indent.refsect = 0)">
+ <!-- * "zq" is the name of a register we set for -->
+ <!-- * preserving the original default indent value -->
+ <!-- * when $man.indent.refsect is non-zero; -->
+ <!-- * "u" is a roff unit specifier -->
+ <xsl:text>\n(zqu</xsl:text>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * otherwise, just leave it empty -->
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- ================================================================== -->
+ <!-- * About the $info param used in this stylesheet -->
+ <!-- * -->
+ <!-- * The $info param is a "master info" node set that contains -->
+ <!-- * the entire contents of the *info child of the current -->
+ <!-- * Refentry, plus the entire contents of the *info children of -->
+ <!-- * all ancestors of the current Refentry, in document order. -->
+ <!-- * -->
+ <!-- * We try to find a "best match" for selecting content from -->
+ <!-- * $infor; we look through it in reverse document order until we -->
+ <!-- * can find something usable. -->
+ <!-- * -->
+ <!-- * Specifically what the basic metadata-gathering XPath expression -->
+ <!-- * in this stylesheet does is: -->
+ <!-- * -->
+ <!-- * 1. Look through the entire "master info" node set.-->
+ <!-- * 2. Get the last node in the set that contains, for -->
+ <!-- * example, an Author element. That amounts to being the -->
+ <!-- * closest *info node to the Refentry - either its *info -->
+ <!-- * child, or the *info node of its closest ancestor that -->
+ <!-- * contains an Author. -->
+
+ <!-- ================================================================== -->
+ <!-- * Get user "refentry metadata" preferences -->
+ <!-- ================================================================== -->
+ <!-- * The DocBook XSL stylesheets include several user-configurable -->
+ <!-- * global stylesheet parameters for controlling refentry metadata -->
+ <!-- * gathering. Those parameters are not read directly by the other -->
+ <!-- * refentry metadata-gathering templates. Instead, they are read -->
+ <!-- * only by the get.refentry.metadata.prefs template, which -->
+ <!-- * assembles them into a structure that is then passed to the -->
+ <!-- * other refentry metadata-gathering template. -->
+
+ <xsl:variable name="get.refentry.metadata.prefs">
+ <!-- * get.refentry.metadata.prefs is in common/refentry.xsl -->
+ <xsl:call-template name="get.refentry.metadata.prefs"/>
+ </xsl:variable>
+
+ <xsl:variable name="refentry.metadata.prefs"
+ select="exsl:node-set($get.refentry.metadata.prefs)"/>
+
+ <!-- * ============================================================== -->
+ <!-- * Get content for Author metadata field. -->
+ <!-- * ============================================================== -->
+
+ <!-- * The make.roff.metatada.author template and metadata.author -->
+ <!-- * mode are used only for populating the Author field in the -->
+ <!-- * metadata "top comment" we embed in roff source of each page. -->
+ <xsl:template name="make.roff.metadata.author">
+ <xsl:param name="info"/>
+ <xsl:param name="refname"/>
+ <xsl:choose>
+ <xsl:when test="$info//author">
+ <xsl:apply-templates
+ select="(($info[//author])[last()]//author)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//corpauthor">
+ <xsl:apply-templates
+ select="(($info[//corpauthor])[last()]//corpauthor)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//editor">
+ <xsl:apply-templates
+ select="(($info[//editor])[last()]//editor)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//corpcredit">
+ <xsl:apply-templates
+ select="(($info[//corpcredit])[last()]//corpcredit)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//othercredit">
+ <xsl:apply-templates
+ select="(($info[//othercredit])[last()]//othercredit)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//collab">
+ <xsl:apply-templates
+ select="(($info[//collab])[last()]//collab)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//orgname">
+ <xsl:apply-templates
+ select="(($info[//orgname])[last()]//orgname)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//publishername">
+ <xsl:apply-templates
+ select="(($info[//publishername])[last()]//publishername)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, we need to check to see if we have an "Author" -->
+ <!-- * or "Authors" section in the refentry -->
+ <xsl:variable name="gentext.author">
+ <xsl:text>"</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Author'"/>
+ </xsl:call-template>
+ <xsl:text>"</xsl:text>
+ </xsl:variable>
+ <xsl:variable name="gentext.AUTHOR">
+ <xsl:if test="not($gentext.author = '')">
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string" select="$gentext.author"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="gentext.authors">
+ <xsl:text>"</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Authors'"/>
+ </xsl:call-template>
+ <xsl:text>"</xsl:text>
+ </xsl:variable>
+ <xsl:variable name="gentext.AUTHORS">
+ <xsl:if test="not($gentext.authors = '')">
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string" select="$gentext.authors"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <!-- * get all refentry/refsect1/title & refentry/refsection/title -->
+ <!-- * instances, delimit each with double quotes, and put them -->
+ <!-- * into a single refsect1.titles string -->
+ <xsl:variable name="refsect1.titles">
+ <xsl:for-each select="refsect1/title">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text>"</xsl:text>
+ <xsl:text> </xsl:text>
+ </xsl:for-each>
+ <xsl:for-each select="refsection/title">
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text>"</xsl:text>
+ <xsl:text> </xsl:text>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="author.section.title">
+ <xsl:choose>
+ <xsl:when test="not($gentext.authors = '') and
+ contains($refsect1.titles,$gentext.authors)">
+ <xsl:value-of select="$gentext.authors"/>
+ </xsl:when>
+ <xsl:when test="not($gentext.AUTHORS = '') and
+ contains($refsect1.titles,$gentext.AUTHORS)">
+ <xsl:value-of select="$gentext.AUTHORS"/>
+ </xsl:when>
+ <xsl:when test="not($gentext.author = '') and
+ contains($refsect1.titles,$gentext.author)">
+ <xsl:value-of select="$gentext.author"/>
+ </xsl:when>
+ <xsl:when test="not($gentext.AUTHOR = '') and
+ contains($refsect1.titles,$gentext.AUTHOR)">
+ <xsl:value-of select="$gentext.AUTHOR"/>
+ </xsl:when>
+ <!-- * git docs (for one) use "DOCUMENTATION" for their authors section -->
+ <xsl:when test="contains($refsect1.titles,'Documentation')">
+ <xsl:text>Documentation</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($refsect1.titles,'DOCUMENTATION')">
+ <xsl:text>DOCUMENTATION</xsl:text>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * otherwise, leave empty -->
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($author.section.title = '')">
+ <!-- * if we have a non-empty $author.section.title value, -->
+ <!-- * then reference that title (instead of putting a -->
+ <!-- * specific author name) -->
+ <xsl:text>[see the </xsl:text>
+ <xsl:value-of select="$author.section.title"/>
+ <xsl:text> section]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise we have no info/author content and no Author -->
+ <!-- * or Authors section, so we insert a fixme and report -->
+ <!-- * the problem to the user -->
+ <xsl:text>[FIXME: author] [see http://docbook.sf.net/el/author]</xsl:text>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta author</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/info/author</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta author</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/author</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta author</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no author data, so inserted a fixme</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="author|editor|othercredit|collab" mode="metadata.author">
+ <xsl:choose>
+ <xsl:when test="collabname">
+ <!-- * If this node is a Collab, then it should have a -->
+ <!-- * Collabname child, so get that. -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="collabname"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, this node is not a Collab, but instead -->
+ <!-- * an author|editor|othercredit, which must have a name -->
+ <!-- * of some kind; so get that name -->
+ <xsl:call-template name="person.name.normalized"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test=".//email|address/otheraddr/ulink">
+ <xsl:text> </xsl:text>
+ <!-- * For each attribution found, use only the first e-mail -->
+ <!-- * address or ulink value found -->
+ <xsl:apply-templates select="(.//email|address/otheraddr/ulink)[1]"
+ mode="metadata.author"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="email|address/otheraddr/ulink" mode="metadata.author">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="self::email">
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ <xsl:when test="self::ulink">
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="corpauthor|corpcredit|orgname|publishername" mode="metadata.author">
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Assemble the AUTHOR/AUTHORS section -->
+ <!-- * ============================================================== -->
+
+ <xsl:template name="author.section">
+ <xsl:param name="info"/>
+ <!-- * The $info param is a "master info" node set that contains -->
+ <!-- * the entires contents of the *info child of the current -->
+ <!-- * Refentry, plus the entire contents of the *info children of -->
+ <!-- * all ancestors of the current Refentry, in document order. -->
+ <xsl:choose>
+ <xsl:when test="$info//author|$info//editor|$info//collab|
+ $info//corpauthor|$info//corpcredit|
+ $info//othercredit|$info/orgname|
+ $info/publishername|$info/publisher">
+ <xsl:variable name="authorcount">
+ <xsl:value-of
+ select="count(
+ $info//author|$info//editor|$info//collab|
+ $info//corpauthor|$info//corpcredit|
+ $info//othercredit)">
+ </xsl:value-of>
+ </xsl:variable>
+ <xsl:call-template name="make.subheading">
+ <xsl:with-param name="title">
+ <xsl:call-template name="make.authorsecttitle">
+ <xsl:with-param name="authorcount" select="$authorcount"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <!-- * Now output all the actual author, editor, etc. content -->
+ <xsl:for-each
+ select="$info//author|$info//editor|$info//collab|
+ $info//corpauthor|$info//corpcredit|
+ $info//othercredit|$info/orgname|
+ $info/publishername|$info/publisher">
+ <xsl:apply-templates select="." mode="authorsect"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * do nothing, no author info found -->
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="make.authorsecttitle">
+ <!-- * If we have exactly one attributable person/entity, then output -->
+ <!-- * localized gentext for 'Author'; otherwise, output 'Authors'. -->
+ <xsl:param name="authorcount"/>
+ <xsl:param name="authorsecttitle">
+ <xsl:choose>
+ <xsl:when test="$authorcount = 1">
+ <xsl:text>Author</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Authors</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$authorsecttitle"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="author|editor|othercredit" mode="authorsect">
+ <xsl:variable name="person-name">
+ <xsl:call-template name="person.name.normalized"/>
+ </xsl:variable>
+ <!-- * If we have a person-name or email or ulink content, then -->
+ <!-- * output name and email or ulink content on the same line -->
+ <xsl:choose>
+ <xsl:when test="not($person-name = '') or .//email or address/otheraddr/ulink">
+ <xsl:text>.PP&#10;</xsl:text>
+ <!-- * Display person name in bold -->
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($person-name)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <!-- * Display e-mail address(es) and ulink(s) on same line as name -->
+ <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * Display affiliation(s) on separate lines -->
+ <xsl:apply-templates select="affiliation" mode="authorsect"/>
+ <!-- * Display direct-child addresses on separate lines -->
+ <xsl:apply-templates select="address" mode="authorsect"/>
+ <!-- * Call template for handling various attribution possibilities -->
+ <xsl:call-template name="attribution">
+ <xsl:with-param name="person-name" select="$person-name"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="collab" mode="authorsect">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="collabname"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <!-- * Display e-mail address(es) and ulink(s) on same line as name -->
+ <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * Display affilition(s) on separate lines -->
+ <xsl:apply-templates select="affiliation" mode="authorsect"/>
+ </xsl:template>
+
+ <xsl:template match="corpauthor|corpcredit|orgname|publishername" mode="authorsect">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="self::publishername">
+ <!-- * Display localized "Publisher" gentext -->
+ <xsl:call-template name="publisher.attribution"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="publisher" mode="authorsect">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="publishername"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <!-- * Display e-mail address(es) and ulink(s) on same line as name -->
+ <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/>
+ <!-- * Display addresses on separate lines -->
+ <xsl:apply-templates select="address" mode="authorsect"/>
+ <!-- * Display localized "Publisher" literal -->
+ <xsl:call-template name="publisher.attribution"/>
+ </xsl:template>
+
+ <xsl:template name="publisher.attribution">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Publisher'"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="email|address/otheraddr/ulink" mode="authorsect">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*[descendant-or-self::email]
+ or preceding-sibling::address/otheraddr/ulink
+ or ancestor::address[preceding-sibling::*[descendant-or-self::email]]
+ or ancestor::address[preceding-sibling::address/otheraddr/ulink]">
+ <!-- * This is not the first instance, so do nothing. -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * This is first instances of an e-mail address or ulink, -->
+ <!-- * so put a space before it. -->
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * Note that the reason for the \& character after the opening -->
+ <!-- * angle bracket and before the closing angle bracket is to -->
+ <!-- * prevent groff from inserting a linebreak at those points and -->
+ <!-- * outputting a hyphen character where the break occurs -->
+ <xsl:text>&lt;\&amp;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="self::email">
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ <xsl:when test="self::ulink">
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:text>\&amp;&gt;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not(following-sibling::*[descendant-or-self::email]
+ or following-sibling::address/otheraddr/ulink
+ or ancestor::address[following-sibling::*[descendant-or-self::email]]
+ or ancestor::address[following-sibling::address/otheraddr/ulink])">
+ <!-- * This is the final instance, so do nothing. -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Separate multiple e-mail addresses or ulinks with a comma -->
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="affiliation" mode="authorsect">
+ <!-- * Get the string value of the contents of this Affiliation. If the -->
+ <!-- * affiliation only contains an Address child whose only content is -->
+ <!-- * an email address or ulink, then these contents will end up empty. -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates mode="authorsect"/>
+ </xsl:variable>
+ <!-- * If contents are actually empty except for an email address -->
+ <!-- * or ulink, then output nothing. -->
+ <xsl:if test="$contents != ''">
+ <xsl:text>.br&#10;</xsl:text>
+ <xsl:for-each select="shortaffil|jobtitle|orgname|orgdiv|address">
+ <!-- * only display output of nodes other than email or ulink -->
+ <xsl:apply-templates select="node()[not(self::email) and not(self::otheraddr/ulink)]"/>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * only add comma if the node has a child node other than -->
+ <!-- * an email address or ulink -->
+ <xsl:if test="child::node()[not(self::email) and not(self::otheraddr/ulink)]">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * put a line break after every Affiliation instance except -->
+ <!-- * the last one in the set -->
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="address" mode="authorsect">
+ <xsl:variable name="contents"
+ select="normalize-space(node()[not(self::email)
+ and not(self::otheraddr/ulink)])"/>
+ <!-- * If this contents of this Address do not contain anything except -->
+ <!-- * an email address or ulink, then output nothing. -->
+ <xsl:if test="$contents != ''">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ <!--* Skip email and ulink descendants of Address (rendered elsewhere) -->
+ <xsl:apply-templates select="node()[not(self::email) and not(self::otheraddr/ulink)]"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="attribution">
+ <xsl:param name="person-name"/>
+ <xsl:param name="refname" select="ancestor::refentry/refnamediv[1]/refname[1]"/>
+ <!-- * Determine appropriate attribution for a particular person's role. -->
+ <xsl:choose>
+ <!-- * if we have a *blurb or contrib, just use that -->
+ <xsl:when test="contrib|personblurb|authorblurb">
+ <xsl:apply-templates select="contrib|personblurb|authorblurb" mode="authorsect"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise we have no attribution information to use... -->
+ <xsl:if test="not($person-name = '')">
+ <!-- * if we have a person name or organization name -->
+ <!-- * ($person-name can actually be an orgname, not just a -->
+ <!-- * person name), then report to the user that we are -->
+ <!-- * lacking attribution information for that person -->
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">AUTHOR sect.</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no personblurb|contrib for </xsl:text>
+ <xsl:value-of select="$person-name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">AUTHOR sect.</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see see http://docbook.sf.net/el/contrib</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">AUTHOR sect.</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see see http://docbook.sf.net/el/personblurb</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:choose>
+ <!-- * If we have no *blurb or contrib, but this is an Author or -->
+ <!-- * Editor, then render the corresponding localized gentext -->
+ <xsl:when test="self::author">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Author'"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:when>
+ <xsl:when test="self::editor">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Editor'"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:when>
+ <!-- * If we have no *blurb or contrib, but this is an Othercredit, -->
+ <!-- * check value of Class attribute and use corresponding gentext. -->
+ <xsl:when test="self::othercredit">
+ <xsl:choose>
+ <xsl:when test="@class and @class != 'other'">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="@class"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * We have an Othercredit, but no usable value for the Class -->
+ <!-- * attribute, so nothing to show, do nothing -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * We have no *blurb or contrib or anything else we can use to -->
+ <!-- * display appropriate attribution for this person, so do nothing -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="personblurb|authorblurb" mode="authorsect">
+ <xsl:call-template name="mark.up.blurb.or.contrib"/>
+ <!-- * yeah, it's possible for a *blurb to have a "title" -->
+ <xsl:apply-templates select="title"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ <!-- * If this *blurb has a sibling "name" element of some kind, then -->
+ <!-- * the mark.up.blurb.or.contrib template will generated an "RS" -->
+ <!-- * call that will cause it to be indented; so we need to call -->
+ <!-- * "RE" to restore the previous indent level -->
+ <xsl:if test="../personname|../surname|../firstname
+ |../othername|../lineage|../honorific
+ |../affiliation|../email|../address">
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="personblurb/title|authorblurb/title">
+ <!-- * always render period after title -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>.</xsl:text>
+ <!-- * render space after Title+period if the title is followed -->
+ <!-- * by something element content -->
+ <xsl:if test="following-sibling::*[name() != '']">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="contrib" mode="authorsect">
+ <xsl:call-template name="mark.up.blurb.or.contrib"/>
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="../personname|../surname|../firstname
+ |../othername|../lineage|../honorific
+ |../affiliation|../email|../address">
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="mark.up.blurb.or.contrib">
+ <xsl:choose>
+ <!-- * If this *blurb has a sibling "name" element of some kind, then -->
+ <!-- * we are already outputting the name content, and we need to -->
+ <!-- * indent the *blurb content after that. -->
+ <xsl:when
+ test="../personname|../surname|../firstname
+ |../othername|../lineage|../honorific
+ |../affiliation|../email|../address">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, we have no "name" content, so don't indent; -->
+ <!-- * instead, decide if we need a .PP or just a .br -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*)">
+ <!-- * if this *blurb or contrib has no preceding -->
+ <!-- * siblings, then we need to start a new paragraph -->
+ <xsl:text>.PP</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, this has no preceding siblings, so -->
+ <!-- * just put a linebreak -->
+ <xsl:text>.br</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Assemble the COPYRIGHT section -->
+ <!-- * ============================================================== -->
+ <!-- * The COPYRIGHT section is output only if a copyright or -->
+ <!-- * legalnotice is found. It contains the copyright contents -->
+ <!-- * followed by the legalnotice contents. -->
+ <xsl:template name="copyright.section">
+ <xsl:param name="info"/>
+ <xsl:choose>
+ <xsl:when test="$info//copyright|$info//legalnotice">
+ <xsl:call-template name="make.subheading">
+ <xsl:with-param name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">Copyright</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>.br&#10;</xsl:text>
+ <!-- * the copyright mode="titlepage.mode" template is -->
+ <!-- * imported from the HTML stylesheets -->
+ <xsl:for-each select="
+ (($info[//copyright])[last()]//copyright)
+ | (($info[//legalnotice])[last()]//legalnotice)">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'copyright'">
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * do nothing, no copyright or legalnotice found -->
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="legalnotice">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+
+ <!-- * suppress refmeta and all *info (we grab what we need from them -->
+ <!-- * elsewhere) -->
+
+ <xsl:template match="refmeta"/>
+
+ <xsl:template match="info|refentryinfo|referenceinfo|refsynopsisdivinfo
+ |refsectioninfo|refsect1info|refsect2info|refsect3info
+ |setinfo|bookinfo|articleinfo|chapterinfo|sectioninfo
+ |sect1info|sect2info|sect3info|sect4info|sect5info
+ |partinfo|prefaceinfo|appendixinfo|docinfo"/>
+
+ <!-- ============================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl
new file mode 100644
index 0000000..56ca4c5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl
@@ -0,0 +1,219 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: inline.xsl 7897 2008-03-10 15:46:03Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="replaceable|varname|structfield">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="option|userinput|envar|errorcode|constant|markup">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="type[not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)]">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="function[not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)]">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="parameter[not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)]">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="filename">
+ <!-- * add hyphenation suppression in Filename output only if -->
+ <!-- * break.after.slash is also non-zero -->
+ <xsl:if test="$man.hyphenate.filenames = 0 and
+ $man.break.after.slash = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <!-- * part of the old man(7) man page, now man-pages(7), says, -->
+ <!-- * "Filenames (whether pathnames, or references to files in the -->
+ <!-- * /usr/include directory) are always in italics". But that's dumb, -->
+ <!-- * and looks like crap in PS/printed/PDF output, and there's no -->
+ <!-- * sound rationale for it, so we don't do it. -->
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <xsl:choose>
+ <xsl:when test="
+ @role = 'bold' or
+ @role = 'strong' or
+ @remap = 'B'">
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:apply-templates/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+</xsl:template>
+
+<xsl:template name="do-citerefentry">
+ <xsl:param name="refentrytitle" select="''"/>
+ <xsl:param name="manvolnum" select="''"/>
+ <xsl:variable name="title">
+ <xsl:value-of select="$refentrytitle"/>
+ </xsl:variable>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($title)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$manvolnum"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <xsl:call-template name="do-citerefentry">
+ <xsl:with-param name="refentrytitle" select="refentrytitle"/>
+ <xsl:with-param name="manvolnum" select="manvolnum"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="trademark|productname">
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <!-- * Just use true Unicode chars for copyright, trademark, etc., -->
+ <!-- * symbols (by default, we later automatically translate them -->
+ <!-- * with the apply-string-subst-map template, or with the -->
+ <!-- * default character map, if man.charmap.enabled is true). -->
+ <xsl:when test="@class = 'copyright'">
+ <xsl:text>&#x00a9;</xsl:text>
+ </xsl:when>
+ <xsl:when test="@class = 'registered'">
+ <xsl:text>&#x00ae;</xsl:text>
+ </xsl:when>
+ <xsl:when test="@class = 'service'">
+ <xsl:text>&#x2120;</xsl:text>
+ </xsl:when>
+ <xsl:when test="@class = 'trade'">
+ <xsl:text>&#x2122;</xsl:text>
+ </xsl:when>
+ <!-- * for Trademark element, render a trademark symbol by default -->
+ <!-- * even if no "class" value is specified -->
+ <xsl:when test="self::trademark" >
+ <xsl:text>&#x2122;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise we have a Productname with no value for the -->
+ <!-- * "class" attribute, so don't render any symbol by default -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- * span seems to sneak through into output sometimes, possibly due -->
+<!-- * to failed Olink processing; so we need to catch it -->
+<xsl:template match="span">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- * indexterm instances produce groff comments like this: -->
+<!-- * .\" primary: secondary: tertiary -->
+<xsl:template match="indexterm">
+ <xsl:text>.\" </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="primary">
+ <xsl:value-of select="normalize-space(.)"/>
+</xsl:template>
+
+<xsl:template match="secondary|tertiary">
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+</xsl:template>
+
+<!-- * non-empty remark instances produce groff comments -->
+<xsl:template match="remark">
+ <xsl:variable name="content" select="normalize-space(.)"/>
+ <xsl:if test="not($content = '')">
+ <xsl:text>.\" </xsl:text>
+ <xsl:value-of select="$content"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl
new file mode 100644
index 0000000..dd90174
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl
@@ -0,0 +1,604 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: lists.xsl 8530 2009-11-02 02:38:47Z dleidert $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="list-indent">
+ <xsl:choose>
+ <xsl:when test="not($man.indent.lists = 0)">
+ <xsl:value-of select="$man.indent.width"/>
+ </xsl:when>
+ <xsl:when test="not($man.indent.refsect = 0)">
+ <!-- * "zq" is the name of a register we set for -->
+ <!-- * preserving the original default indent value -->
+ <!-- * when $man.indent.refsect is non-zero; -->
+ <!-- * "u" is a roff unit specifier -->
+ <xsl:text>\n(zqu</xsl:text>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * otherwise, just leave it empty -->
+ </xsl:choose>
+</xsl:variable>
+
+<!-- ================================================================== -->
+
+<xsl:template match="para[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ simpara[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ remark[ancestor::listitem or ancestor::step or ancestor::glossdef]">
+ <xsl:call-template name="mixed-block"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="following-sibling::*[1][
+ self::para or
+ self::simpara or
+ self::remark
+ ]">
+ <!-- * Make sure multiple paragraphs within a list item don't -->
+ <!-- * merge together. -->
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="bibliolist">
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="variablelist|glosslist">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="varlistentry|glossentry">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:for-each select="term|glossterm">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <!-- * -->
+ <!-- * note that it is not valid to have multiple glossterms -->
+ <!-- * within a glossentry, so this logic never gets exercised -->
+ <!-- * for glossterms (every glossterm is always the last in -->
+ <!-- * its parent glossentry) -->
+ <xsl:value-of select="$variablelist.term.separator"/>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varlistentry/term"/>
+<xsl:template match="glossentry/glossterm"/>
+
+<xsl:template match="variablelist[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ glosslist[ancestor::listitem or ancestor::step or ancestor::glossdef]">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::node() or
+ parent::para[following-sibling::node()] or
+ parent::simpara[following-sibling::node()] or
+ parent::remark[following-sibling::node()]">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem|glossentry/glossdef">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <!-- * We output a real bullet here (rather than, "\(bu", -->
+ <!-- * the roff bullet) because, when we do character-map -->
+ <!-- * processing before final output, the character-map will -->
+ <!-- * handle conversion of the &#x2022; to "\(bu" for us -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * if "n" then we are using "nroff", which means the output is for -->
+ <!-- * TTY; so we do some fixed-width-font hackery with \h to make a -->
+ <!-- * hanging indent (instead of using .IP, which has some -->
+ <!-- * undesirable side effects under certain circumstances) -->
+ <xsl:call-template name="roff-if-else-start"/>
+ <xsl:text>\h'-</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\n(INu</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>'</xsl:text>
+ <xsl:text>&#x2022;</xsl:text>
+ <xsl:text>\h'+</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent - 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\n(INu-1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>'\c&#10;</xsl:text>
+ <!-- * else, we are not using for "nroff", but instead "troff" - which -->
+ <!-- * means not for TTY, but for PS or whatever; so we’re not using a -->
+ <!-- * fixed-width font, so use a real .IP instead -->
+ <xsl:call-template name="roff-else"/>
+ <!-- * .IP generates a blank like of space, so let’s go backwards one -->
+ <!-- * line up to compensate for that -->
+ <xsl:text>.sp -1&#10;</xsl:text>
+ <xsl:text>.IP \(bu 2.3&#10;</xsl:text>
+ <!-- * The value 2.3 is the amount of indentation; we use 2.3 instead -->
+ <!-- * of 2 because when the font family is New Century Schoolbook it -->
+ <!-- * seems to require the extra space. -->
+ <xsl:call-template name="roff-if-end"/>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem|procedure/step">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * if "n" then we are using "nroff", which means the output is for -->
+ <!-- * TTY; so we do some fixed-width-font hackery with \h to make a -->
+ <!-- * hanging indents (instead of using .IP, which has some -->
+ <!-- * undesirable side effects under certain circumstances) -->
+ <xsl:call-template name="roff-if-else-start"/>
+ <xsl:text>\h'-</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\n(INu+3n</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>'</xsl:text>
+ <xsl:if test="count(preceding-sibling::listitem) &lt; 9">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:number format="1."/>
+ <xsl:text>\h'+</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent - 3"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1n</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>'\c&#10;</xsl:text>
+ <!-- * else, we are not using for "nroff", but instead "troff" - which -->
+ <!-- * means not for TTY, but for PS or whatever; so we’re not using a -->
+ <!-- * fixed-width font, so use a real .IP instead -->
+ <xsl:call-template name="roff-else"/>
+ <!-- * .IP generates a blank line of space, so let’s go backwards one -->
+ <!-- * line up to compensate for that -->
+ <xsl:text>.sp -1&#10;</xsl:text>
+ <xsl:text>.IP "</xsl:text>
+ <xsl:if test="count(preceding-sibling::listitem) &lt; 9">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:number format="1."/>
+ <xsl:text>" 4.2&#10;</xsl:text>
+ <!-- * The value 4.2 is the amount of indentation; we use 4.2 instead -->
+ <!-- * of 4 because when the font family is Bookman it seems to require -->
+ <!-- * the extra space. -->
+ <xsl:call-template name="roff-if-end"/>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="itemizedlist|orderedlist|procedure">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <!-- * DocBook allows just about any block content to appear in -->
+ <!-- * lists before the actual list items, so we need to get that -->
+ <!-- * content (if any) before getting the list items -->
+ <xsl:apply-templates
+ select="*[not(self::listitem) and not(self::title)]"/>
+ <xsl:apply-templates select="listitem"/>
+ <!-- * If this list is a child of para and has content following -->
+ <!-- * it, within the same para, then add a blank line and move -->
+ <!-- * the left margin back to where it was -->
+ <xsl:if test="parent::para and following-sibling::node()">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="itemizedlist[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ orderedlist[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ procedure[ancestor::listitem or ancestor::step or ancestor::glossdef]">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::node() or
+ parent::para[following-sibling::node()] or
+ parent::simpara[following-sibling::node()] or
+ parent::remark[following-sibling::node()]">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ================================================================== -->
+
+<!-- * for simplelist type="inline", render it as a comma-separated list -->
+<xsl:template match="simplelist[@type='inline']">
+ <!-- * if dbchoice PI exists, use that to determine the choice separator -->
+ <!-- * (that is, equivalent of "and" or "or" in current locale), or literal -->
+ <!-- * value of "choice" otherwise -->
+ <xsl:variable name="localized-choice-separator">
+ <xsl:choose>
+ <xsl:when test="processing-instruction('dbchoice')">
+ <xsl:call-template name="select.choice.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * empty -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="member">
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="position() = last() - 1">
+ <xsl:if test="$localized-choice-separator != ''">
+ <xsl:value-of select="$localized-choice-separator"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<!-- * if simplelist type is not inline, render it as a one-column vertical -->
+<!-- * list (ignoring the values of the type and columns attributes) -->
+<xsl:template match="simplelist">
+ <xsl:for-each select="member">
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ================================================================== -->
+
+<!-- * We output Segmentedlist as a table, using tbl(1) markup. There -->
+<!-- * is no option for outputting it in manpages in "list" form. -->
+<xsl:template match="segmentedlist">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text>.\" line length increase to cope w/ tbl weirdness&#10;</xsl:text>
+ <xsl:text>.ll +(\n(LLu * 62u / 100u)&#10;</xsl:text>
+ <!-- * .TS = "Table Start" -->
+ <xsl:text>.TS&#10;</xsl:text>
+ <!-- * first output the table "format" spec, which tells tbl(1) how -->
+ <!-- * how to format each row and column. -->
+ <xsl:for-each select=".//segtitle">
+ <!-- * l = "left", which hard-codes left-alignment for tabular -->
+ <!-- * output of all segmentedlist content -->
+ <xsl:text>l</xsl:text>
+ </xsl:for-each>
+ <!-- * last line of table format section must end with a dot -->
+ <xsl:text>.&#10;</xsl:text>
+ <!-- * optionally suppress output of segtitle -->
+ <xsl:choose>
+ <xsl:when test="$man.segtitle.suppress != 0">
+ <!-- * non-zero = "suppress", so do nothing -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * "0" = "do not suppress", so output the segtitle(s) -->
+ <xsl:apply-templates select=".//segtitle" mode="table-title"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <!-- * .TE = "Table End" -->
+ <xsl:text>.TE&#10;</xsl:text>
+ <xsl:text>.\" line length decrease back to previous value&#10;</xsl:text>
+ <xsl:text>.ll -(\n(LLu * 62u / 100u)&#10;</xsl:text>
+ <!-- * put a blank line of space below the table -->
+ <xsl:text>.sp&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="segmentedlist/segtitle" mode="table-title">
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * tbl(1) treats tab characters as delimiters between -->
+ <!-- * cells; so we need to output a tab after each -->
+ <!-- * segtitle except the last one -->
+ <xsl:text>&#09;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="segmentedlist/seglistitem">
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="segmentedlist/seglistitem/seg">
+ <!-- * the T{ and T} stuff are delimiters to tell tbl(1) that -->
+ <!-- * the delimited contents are "text blocks" that groff(1) -->
+ <!-- * needs to process -->
+ <xsl:text>T{&#10;</xsl:text>
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>&#10;T}</xsl:text>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * tbl(1) treats tab characters as delimiters between -->
+ <!-- * cells; so we need to output a tab after each -->
+ <!-- * segtitle except the last one -->
+ <xsl:text>&#09;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="calloutlist">
+ <xsl:if test="title|info/title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <!-- * This template was originally copied over from the HTML -->
+ <!-- * calloutlist template, which precedes the following -->
+ <!-- * apply-templates with the comment "Preserve order of PIs and -->
+ <!-- * comments"; I'm not certain that it will actually have that -->
+ <!-- * effect for all cases, and it seems like there is probably a -->
+ <!-- * better way to do it, but anyway, I’m preserving it here for -->
+ <!-- * consistency. -->
+ <xsl:apply-templates
+ select="*[not(self::callout or self::title or self::titleabbrev)]
+ |comment()[not(preceding-sibling::callout)]
+ |processing-instruction()[not(preceding-sibling::callout)]"/>
+ <!-- * put callout list into a table -->
+ <xsl:text>.TS&#10;</xsl:text>
+ <xsl:text>tab(:);&#10;</xsl:text>
+ <!-- * the following defines the row layout for the table: two columns, -->
+ <!-- * with the first cell in each row right-aligned, and the second -->
+ <!-- * cell left aligned with a width of 75% of the line length -->
+ <xsl:text>r lw(\n(.lu*75u/100u).&#10;</xsl:text>
+ <xsl:apply-templates select="callout
+ |comment()[preceding-sibling::callout]
+ |processing-instruction()[preceding-sibling::callout]"/>
+ <xsl:text>.TE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="calloutlist/title"/>
+
+<xsl:template match="callout">
+ <!-- * first cell of each row is the set of callout numbers for this -->
+ <!-- * particular callout -->
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ <!-- * end of the first cell in the row; the \h hackery is to correct -->
+ <!-- * for the excessive horizontal whitespace that tbl(1) adds between -->
+ <!-- * cells in the same row -->
+ <xsl:text>\h'-2n':</xsl:text>
+ <!-- * start the next cell in the row, which has the prose contents -->
+ <!-- * (description/explanation) for the callout -->
+ <xsl:text>T{&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>T}&#10;</xsl:text>
+ <!-- * end of the last cell and end of the row -->
+</xsl:template>
+
+<xsl:template name="callout.arearefs">
+ <xsl:param name="arearefs"></xsl:param>
+ <!-- * callout can have multiple values in its arearefs attribute, so -->
+ <!-- * we use the position param to track the postion of each value -->
+ <xsl:param name="position">1</xsl:param>
+ <xsl:if test="$arearefs!=''">
+ <xsl:choose>
+ <xsl:when test="substring-before($arearefs,' ')=''">
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="$arearefs"/>
+ <xsl:with-param name="position" select="$position"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef"
+ select="substring-before($arearefs,' ')"/>
+ <xsl:with-param name="position" select="$position"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs"
+ select="substring-after($arearefs,' ')"/>
+ <xsl:with-param name="position" select="$position + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="callout.arearef">
+ <xsl:param name="arearef"></xsl:param>
+ <!-- * callout can have multiple values in its arearefs attribute, so -->
+ <!-- * we use the position param to track the postion of each value -->
+ <xsl:param name="position"></xsl:param>
+ <xsl:variable name="targets" select="key('id',$arearef)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$arearef"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target)=0">
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='co'">
+ <!-- * if this is not the first value in the set of values in the -->
+ <!-- * arearef attribute for this callout, then we prepend a groff -->
+ <!-- * non-breaking space to it, to prevent groff from injecting -->
+ <!-- * linebreaks into the output. For callout instances with -->
+ <!-- * multiple values in their arearefs attributes, that results -->
+ <!-- * in all of callout numbers beings listed on the same line. -->
+ <xsl:if test="not($position = 1)">
+ <xsl:text>\ </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$target"
+ mode="calloutlist-callout-number"/>
+ </xsl:when>
+ <!-- * the manpages stylesheet does not really support areaset and -->
+ <!-- * area (because we can't/don't actually render the callout bugs -->
+ <!-- * at the specified coordinates); however, the following (for -->
+ <!-- * what it's worth) might cause the callout numbers in the -->
+ <!-- * calloutlist to be render at least (then again, maybe it won't; -->
+ <!-- * it's not actually been tested... -->
+ <xsl:when test="local-name($target)='areaset'">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($target)='area'">
+ <xsl:choose>
+ <xsl:when test="$target/parent::areaset">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates
+ select="$target/parent::areaset" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target"
+ mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- * we bold the actual callout bugs and put -->
+<!-- * parenthesis around them -->
+<xsl:template name="callout-bug">
+ <xsl:param name="conum" select='1'/>
+ <xsl:text>\fB(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)\fR</xsl:text>
+</xsl:template>
+
+<!-- * we bold the callout numbers and follow each -->
+<!-- * with a period -->
+<xsl:template name="calloutlist-callout-number">
+ <xsl:param name="conum" select='1'/>
+ <xsl:text>\fB</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>.\fR</xsl:text>
+</xsl:template>
+
+<xsl:template match="co" mode="calloutlist-callout-number">
+ <xsl:call-template name="calloutlist-callout-number">
+ <xsl:with-param name="conum">
+ <xsl:number count="co"
+ level="any"
+ from="programlisting|screen|literallayout|synopsis"
+ format="1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl
new file mode 100644
index 0000000..5431925
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl
@@ -0,0 +1,888 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: other.xsl 8865 2010-08-20 18:22:06Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- * This file contains named templates related to things other than -->
+<!-- * just assembling the actual text of the main text flow of each man -->
+<!-- * page. This "other" stuff currently amounts to these steps: -->
+<!-- * -->
+<!-- * - get contents of the "map" used to convert special characters -->
+<!-- * - output boilerplate messages -->
+<!-- * - escape backslash, dot, dash, and apostrophe characters -->
+<!-- * - convert non-breaking spaces -->
+<!-- * - add a comment to top part of roff source of each page -->
+<!-- * - make a .TH title line (for controlling page header/footer) -->
+<!-- * - set hyphenation, alignment, indent & line-breaking defaults -->
+<!-- * - "prepare" the complete man page contents for final output -->
+<!-- * - write the actual man file to the filesystem -->
+<!-- * - write any "stub" pages to the filesystem -->
+<!-- * -->
+<!-- * The templates in this file are actually called only once per -->
+<!-- * each Refentry; they are just in a separate file for the purpose -->
+<!-- * of keeping things modular. -->
+
+<!-- ==================================================================== -->
+
+<xsl:preserve-space elements="*"/>
+
+<xsl:strip-space elements="
+abstract affiliation anchor answer appendix area areaset areaspec
+artheader article audiodata audioobject author authorblurb authorgroup
+beginpage bibliodiv biblioentry bibliography biblioset blockquote book
+bookbiblio bookinfo callout calloutlist caption caution chapter
+citerefentry cmdsynopsis co collab colophon colspec confgroup
+copyright dedication docinfo editor entrytbl epigraph equation
+example figure footnote footnoteref formalpara funcprototype
+funcsynopsis glossary glossdef glossdiv glossentry glosslist graphicco
+group highlights imagedata imageobject imageobjectco important index
+indexdiv indexentry indexterm informalequation informalexample
+informalfigure informaltable inlineequation inlinemediaobject
+itemizedlist itermset keycombo keywordset legalnotice listitem lot
+mediaobject mediaobjectco menuchoice msg msgentry msgexplan msginfo
+msgmain msgrel msgset msgsub msgtext note objectinfo
+orderedlist othercredit part partintro preface printhistory procedure
+programlistingco publisher qandadiv qandaentry qandaset question
+refentry reference refmeta refnamediv refsection refsect1 refsect1info refsect2
+refsect2info refsect3 refsect3info refsynopsisdiv refsynopsisdivinfo
+revhistory revision row sbr screenco screenshot sect1 sect1info sect2
+sect2info sect3 sect3info sect4 sect4info sect5 sect5info section
+sectioninfo seglistitem segmentedlist seriesinfo set setindex setinfo
+shortcut sidebar simplelist simplesect spanspec step subject
+subjectset substeps synopfragment table tbody textobject tfoot tgroup
+thead tip toc tocchap toclevel1 toclevel2 toclevel3 toclevel4
+toclevel5 tocpart varargs variablelist varlistentry videodata
+videoobject void warning subjectset
+
+classsynopsis
+constructorsynopsis
+destructorsynopsis
+fieldsynopsis
+methodparam
+methodsynopsis
+ooclass
+ooexception
+oointerface
+simplemsgentry
+manvolnum
+"/>
+
+<!-- ==================================================================== -->
+<!-- * Get character map contents -->
+<!-- ==================================================================== -->
+
+ <xsl:variable name="man.charmap.contents">
+ <xsl:if test="$man.charmap.enabled != 0">
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="//refentry[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="read-character-map">
+ <xsl:with-param name="use.subset" select="$man.charmap.use.subset"/>
+ <xsl:with-param name="subset.profile">
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:value-of select="$man.charmap.subset.profile.english"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$man.charmap.subset.profile"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="uri">
+ <xsl:choose>
+ <xsl:when test="$man.charmap.uri != ''">
+ <xsl:value-of select="$man.charmap.uri"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'../manpages/charmap.groff.xsl'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="root.messages">
+ <xsl:param name="refname"/>
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+ <!-- Example:
+ <xsl:if test="//foo">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>limitation</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Output for foo element is not yet supported.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- * Escape roff special chars -->
+<!-- ==================================================================== -->
+
+<!-- ******************************************************************** -->
+<!-- * -->
+<!-- * The backslash, dot, dash, and apostrophe (\, ., -, ') characters -->
+<!-- * have special meaning for roff, so before we do any other -->
+<!-- * processing, we must escape those characters where they appear in -->
+<!-- * the source content. -->
+<!-- * -->
+<!-- * Here we also deal with replacing U+00a0 (non-breaking space) with -->
+<!-- * its roff equivalent -->
+<!-- * -->
+<!-- ******************************************************************** -->
+
+<xsl:template match="//refentry//text()">
+ <xsl:call-template name="escape.roff.specials">
+ <xsl:with-param name="content">
+ <xsl:value-of select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.roff.specials">
+ <xsl:param name="content"/>
+ <xsl:call-template name="convert.nobreak-space">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.apostrophe">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.dash">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.dot">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.backslash">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.backslash">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">\</xsl:with-param>
+ <!-- * we use "\e" instead of "\\" because the groff docs say -->
+ <!-- * that's the correct thing to do; also because testing -->
+ <!-- * shows that "\\" doesn't always work as expected; for -->
+ <!-- * example, "\\" within a table seems to mess things up -->
+ <xsl:with-param name="replacement">\e</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.dot">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">.</xsl:with-param>
+ <xsl:with-param name="replacement">\&amp;.</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.dash">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">-</xsl:with-param>
+ <xsl:with-param name="replacement">\-</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.apostrophe">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\*(Aq</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="convert.nobreak-space">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">&#x00a0;</xsl:with-param>
+ <!-- * A no-break space can be written two ways in roff; the -->
+ <!-- * difference, according to the "Page Motions" node in the -->
+ <!-- * groff info page, is: -->
+ <!-- * -->
+ <!-- * "\ " = -->
+ <!-- * An unbreakable and unpaddable (i.e. not expanded -->
+ <!-- * during filling) space. -->
+ <!-- * -->
+ <!-- * "\~" = -->
+ <!-- * An unbreakable space that stretches like a normal -->
+ <!-- * inter-word space when a line is adjusted." -->
+ <!-- * -->
+ <!-- * Unfortunately, roff seems to do some weird things with -->
+ <!-- * long lines that only have words separated by "\~" -->
+ <!-- * spaces, so it's safer just to stick with the "\ " space -->
+ <!-- * -->
+ <!-- * We append a "\&" to handle the case of a no-break space that -->
+ <!-- * appears at the end of a line - because later processing will -->
+ <!-- * cause that space to get eaten otherwise. -->
+ <xsl:with-param name="replacement">\ \&amp;</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * top.comment generates a comment containing metadata for the man -->
+<!-- * page; for example, Author, Generator, and Date information -->
+
+ <xsl:template name="top.comment">
+ <xsl:param name="info"/>
+ <xsl:param name="date"/>
+ <xsl:param name="title"/>
+ <xsl:param name="manual"/>
+ <xsl:param name="source"/>
+ <xsl:param name="refname"/>
+ <xsl:text>.\" Title: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$title"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Author: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content">
+ <xsl:call-template name="make.roff.metadata.author">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Generator: DocBook </xsl:text>
+ <xsl:value-of select="$DistroTitle"/>
+ <xsl:text> v</xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$VERSION"/>
+ </xsl:call-template>
+ <xsl:text> &lt;http://docbook.sf.net/></xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Date: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$date"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Manual: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$manual"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Source: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$source"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Language: </xsl:text>
+ <xsl:call-template name="l10n.language.name"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\"</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+<!-- ==================================================================== -->
+
+ <xsl:template name="TH.title.line">
+
+ <!-- * The exact way that .TH contents are displayed is system- -->
+ <!-- * dependent; it varies somewhat between OSes and roff -->
+ <!-- * versions. Below is a description of how Linux systems with -->
+ <!-- * a modern groff seem to render .TH contents. -->
+ <!-- * -->
+ <!-- * title(section) extra3 title(section) <- page header -->
+ <!-- * extra2 extra1 title(section) <- page footer-->
+ <!-- * -->
+ <!-- * Or, using the names with which the man(7) man page refers -->
+ <!-- * to the various fields: -->
+ <!-- * -->
+ <!-- * title(section) manual title(section) <- page header -->
+ <!-- * source date title(section) <- page footer-->
+ <!-- * -->
+ <!-- * Note that while extra1, extra2, and extra3 are all (nominally) -->
+ <!-- * optional, in practice almost all pages include an "extra1" -->
+ <!-- * field, which is, universally, a date (in some form), and it is -->
+ <!-- * always rendered in the same place (the middle footer position) -->
+ <!-- * -->
+ <!-- * Here are a couple of examples of real-world man pages that -->
+ <!-- * have somewhat useful page headers/footers: -->
+ <!-- * -->
+ <!-- * gtk-options(7) GTK+ User's Manual gtk-options(7) -->
+ <!-- * GTK+ 1.2 2003-10-20 gtk-options(7) -->
+ <!-- * -->
+ <!-- * svgalib(7) Svgalib User Manual svgalib(7) -->
+ <!-- * Svgalib 1.4.1 16 December 1999 svgalib(7) -->
+ <!-- * -->
+ <xsl:param name="title"/>
+ <xsl:param name="section"/>
+ <xsl:param name="extra1"/>
+ <xsl:param name="extra2"/>
+ <xsl:param name="extra3"/>
+
+ <xsl:call-template name="mark.subheading"/>
+ <!-- * Note that we generate quotes around _every_ field in the -->
+ <!-- * .TH title line, including the "title" and "section" -->
+ <!-- * fields. That is because we use the contents of those "as -->
+ <!-- * is", unchanged from the DocBook source; and DTD-based -->
+ <!-- * validation does not provide a way to constrain them to be -->
+ <!-- * "space free" -->
+ <xsl:text>.TH "</xsl:text>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="$man.th.title.max.length != ''">
+ <xsl:value-of
+ select="normalize-space(substring($title, 1, $man.th.title.max.length))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>" "</xsl:text>
+ <xsl:value-of select="normalize-space($section)"/>
+ <xsl:text>" "</xsl:text>
+ <xsl:if test="$man.th.extra1.suppress = 0">
+ <!-- * there is no max.length for the extra1 field; the reason -->
+ <!-- * is, it is almost always a date, and it is not possible -->
+ <!-- * to truncate dates without changing their meaning -->
+ <xsl:value-of select="normalize-space($extra1)"/>
+ </xsl:if>
+ <xsl:text>" "</xsl:text>
+ <xsl:if test="$man.th.extra2.suppress = 0">
+ <xsl:choose>
+ <!-- * if max.length is non-empty, use value to truncate field -->
+ <xsl:when test="$man.th.extra2.max.length != ''">
+ <xsl:value-of
+ select="normalize-space(substring($extra2, 1, $man.th.extra2.max.length))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($extra2)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:text>" "</xsl:text>
+ <xsl:if test="$man.th.extra3.suppress = 0">
+ <xsl:choose>
+ <!-- * if max.length is non-empty, use value to truncate field -->
+ <xsl:when test="$man.th.extra3.max.length != ''">
+ <xsl:value-of
+ select="normalize-space(substring($extra3, 1, $man.th.extra3.max.length))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($extra3)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:text>"&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <xsl:template name="set.default.formatting">
+ <!-- * Set default hyphenation, justification, indentation and -->
+ <!-- * line-breaking -->
+ <!-- * -->
+ <!-- * If the value of man.hypenate is zero (the default), then -->
+ <!-- * disable hyphenation (".nh" = "no hyphenation") -->
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:text>.\" * set default formatting&#10;</xsl:text>
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:if test="$man.hyphenate = 0">
+ <xsl:text>.\" disable hyphenation&#10;</xsl:text>
+ <xsl:text>.nh&#10;</xsl:text>
+ </xsl:if>
+ <!-- * If the value of man.justify is zero (the default), then -->
+ <!-- * disable justification (".ad l" means "adjust to left only") -->
+ <xsl:if test="$man.justify = 0">
+ <xsl:text>.\" disable justification</xsl:text>
+ <xsl:text> (adjust text to left margin only)&#10;</xsl:text>
+ <xsl:text>.ad l&#10;</xsl:text>
+ </xsl:if>
+ <xsl:if test="not($man.indent.refsect = 0)">
+ <xsl:text>.\" store initial "default indentation value"&#10;</xsl:text>
+ <xsl:text>.nr zq \n(IN&#10;</xsl:text>
+ <xsl:text>.\" adjust default indentation&#10;</xsl:text>
+ <xsl:text>.nr IN </xsl:text>
+ <xsl:value-of select="$man.indent.width"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" adjust indentation of SS headings&#10;</xsl:text>
+ <xsl:text>.nr SN \n(IN&#10;</xsl:text>
+ </xsl:if>
+ <!-- * Unless the value of man.break.after.slash is zero (the -->
+ <!-- * default), tell groff that it is OK to break a line -->
+ <!-- * after a slash when needed. -->
+ <xsl:if test="$man.break.after.slash != 0">
+ <xsl:text>.\" enable line breaks after slashes&#10;</xsl:text>
+ <xsl:text>.cflags 4 /&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The prepare.manpage.contents template is called after all -->
+ <!-- * other processing has been done, before serializing the -->
+ <!-- * result of all the other processing. It basically works on -->
+ <!-- * the result as one big string. -->
+ <xsl:template name="prepare.manpage.contents">
+ <xsl:param name="content" select="''"/>
+
+ <!-- * If user has provided a "local" string-substitution map to -->
+ <!-- * be applied /before/ the standard string-substitution map, -->
+ <!-- * apply it. -->
+ <xsl:variable name="pre.adjusted.content">
+ <xsl:choose>
+ <xsl:when test="$man.string.subst.map.local.pre">
+ <!-- * normalized value of man.string.subst.map.local.pre -->
+ <!-- * is non-empty, so get contents of map and apply them -->
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.string.subst.map.local.pre)/*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * value of man.string.subst.map.local.pre is empty, -->
+ <!-- * so just copy original contents -->
+ <xsl:value-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- * Apply standard string-substitution map. The main purpose -->
+ <!-- * of this map is to escape certain characters that have -->
+ <!-- * special meaning in roff, and to replace certain characters -->
+ <!-- * used within the stylesheet internally to represent roff -->
+ <!-- * markup characters. -->
+ <xsl:variable name="adjusted.content">
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$pre.adjusted.content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.string.subst.map)/*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- * If user has provided a "local" string-substitution map to -->
+ <!-- * be applied /after/ the standard string-substitution map, -->
+ <!-- * apply it. -->
+ <xsl:variable name="post.adjusted.content">
+ <xsl:choose>
+ <xsl:when test="$man.string.subst.map.local.post">
+ <!-- * normalized value of man.string.subst.map.local.post -->
+ <!-- * is non-empty, so get contents of map and apply them -->
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$adjusted.content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.string.subst.map.local.post)/*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * value of man.string.subst.map.local.post is empty, -->
+ <!-- * so just copy original contents -->
+ <xsl:value-of select="$adjusted.content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- * Optionally, apply a character map to replace Unicode -->
+ <!-- * symbols and special characters. -->
+ <xsl:choose>
+ <xsl:when test="$man.charmap.enabled != 0">
+ <xsl:call-template name="apply-character-map">
+ <xsl:with-param name="content" select="$post.adjusted.content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.charmap.contents)/*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * if we reach here, value of $man.charmap.enabled is zero, -->
+ <!-- * so we just pass the adjusted contents through "as is" -->
+ <xsl:value-of select="$adjusted.content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="write.man.file">
+ <xsl:param name="name"/>
+ <xsl:param name="section"/>
+ <xsl:param name="lang"/>
+ <xsl:param name="content"/>
+ <xsl:param name="filename">
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="suppress-context-node-name" select="1"/>
+ <xsl:with-param name="quiet" select="$man.output.quietly"/>
+ <xsl:with-param
+ name="message-prolog"
+ >Note: </xsl:with-param>
+ <xsl:with-param name="encoding" select="$man.output.encoding"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <!-- * A "stub" is sort of alias for another file, intended to be read -->
+ <!-- * and expanded by soelim(1); it's simply a file whose complete -->
+ <!-- * contents are just a single line of the following form: -->
+ <!-- * -->
+ <!-- * .so manX/realname.X -->
+ <!-- * -->
+ <!-- * "realname" is a name of another man-page file. That .so line is -->
+ <!-- * basically a roff "include" statement. When the man command finds -->
+ <!-- * it, it calls soelim(1) and includes and displays the contents of -->
+ <!-- * the manX/realqname.X file. -->
+ <!-- * -->
+ <!-- * If a refentry has multiple refnames, we generate a "stub" page for -->
+ <!-- * each refname found, except for the first one. -->
+ <xsl:template name="write.stubs">
+ <xsl:param name="first.refname"/>
+ <xsl:param name="section"/>
+ <xsl:param name="lang"/>
+ <xsl:for-each select="refnamediv/refname">
+ <xsl:if test=". != $first.refname">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name" select="."/>
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$man.output.quietly"/>
+ <xsl:with-param name="suppress-context-node-name" select="1"/>
+ <xsl:with-param name="message-prolog">Note: </xsl:with-param>
+ <xsl:with-param name="message-epilog"> (soelim stub)</xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:value-of select="'.so '"/>
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name" select="$first.refname"/>
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <!-- * A manifest file is useful for doing "make clean" during -->
+ <!-- * builds and for other purposes. When we make the manifest -->
+ <!-- * file, we need to include in it a filename for each man-page -->
+ <!-- * generated, including any "stub" pages. -->
+ <xsl:template name="generate.manifest">
+ <xsl:variable name="filelist">
+ <xsl:for-each select="//refentry">
+ <!-- * all refname instances in a Refentry inherit their section -->
+ <!-- * numbers from the parent Refentry; so we only need to get -->
+ <!-- * the section once per Refentry, not once per Refname -->
+ <xsl:variable name="section">
+ <xsl:call-template name="get.refentry.section">
+ <xsl:with-param name="quiet" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+ <xsl:for-each select="refnamediv/refname">
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name" select="."/>
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- * we write the manifest file once per document, not once per -->
+ <!-- * Refentry -->
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:value-of select="$man.output.manifest.filename"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="1"/>
+ <xsl:with-param name="message-prolog">Note: </xsl:with-param>
+ <xsl:with-param name="message-epilog"> (manifest file)</xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:value-of select="$filelist"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="$man.output.quietly = 0">
+ <xsl:message><xsl:text>&#10;</xsl:text></xsl:message>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <!-- There is some stuff, that is not portable between groff/troff. -->
+ <xsl:template name="define.portability.macros">
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:text>.\" * Define some portability stuff&#10;</xsl:text>
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.\" http://bugs.debian.org/507673&#10;</xsl:text>
+ <xsl:text>.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.ie \n(.g .ds Aq \(aq</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.el .ds Aq '</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <xsl:template name="define.macros">
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:text>.\" * (re)Define some macros&#10;</xsl:text>
+ <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.\" toupper - uppercase a string (locale-aware)&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.de toupper&#10;</xsl:text>
+ <xsl:text>.tr</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="make.tr.uppercase.arg"/>
+ <xsl:text>\\$*&#10;</xsl:text>
+ <xsl:text>.tr</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="make.tr.normalcase.arg"/>
+ <xsl:text>..&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.\" SH-xref - format a cross-reference to an SH section&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.\" SH - level-one heading that works better for non-TTY output&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.de1 SH&#10;</xsl:text>
+ <xsl:text>.\" put an extra blank line of space above the head in non-TTY output&#10;</xsl:text>
+ <xsl:call-template name="roff-if-start">
+ <xsl:with-param name="condition">t</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>.sp 1&#10;</xsl:text>
+ <xsl:call-template name="roff-if-end"/>
+ <xsl:text>.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.\" SS - level-two heading that works better for non-TTY output&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&amp;\\$*
+..&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.\" BB/EB - put background/screen (filled box) around block of text&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.\" BM/EM - put colored marker in margin next to block of text&#10;</xsl:text>
+ <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+ <xsl:text>.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template name="make.tr.uppercase.arg">
+ <xsl:call-template name="string.shuffle">
+ <xsl:with-param name="string1">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'lowercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="string2">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'uppercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template name="make.tr.normalcase.arg">
+ <xsl:call-template name="string.shuffle">
+ <xsl:with-param name="string1">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'lowercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="string2">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'lowercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template name="string.shuffle">
+ <!-- * given two strings, "shuffle" them together into one -->
+ <xsl:param name="string1"/>
+ <xsl:param name="string2"/>
+ <xsl:value-of select="substring($string1, 1, 1)"/>
+ <xsl:value-of select="substring($string2, 1, 1)"/>
+ <xsl:if test="string-length($string1) > 1">
+ <xsl:call-template name="string.shuffle">
+ <xsl:with-param name="string1">
+ <xsl:value-of select="substring($string1, 2)"/>
+ </xsl:with-param>
+ <xsl:with-param name="string2">
+ <xsl:value-of select="substring($string2, 2)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml
new file mode 100644
index 0000000..706c99d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml
@@ -0,0 +1,3220 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0">
+ <info>
+ <title>Manpages Parameter Reference</title>
+ <releaseinfo role="meta">
+ $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $
+ </releaseinfo>
+ <author>
+ <orgname>The DocBook Project</orgname>
+ </author>
+ <copyright>
+ <year>2005-2007</year>
+ <holder>The DocBook Project</holder>
+ </copyright>
+ <abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook XSL "manpages" stylesheet (for
+ generating groff/nroff output). Note that the manpages
+ stylesheet is a customization layer of the DocBook XSL HTML
+ stylesheet. Therefore, you can also use a number of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../html/">HTML stylesheet parameters</link>
+ to control manpages output (in addition to the
+ manpages-specific parameters listed in this section).</para>
+ </abstract>
+ </info>
+ <reference xml:id="general">
+ <title>Hyphenation, justification, and breaking</title>
+<refentry version="5.0" xml:id="man.hyphenate">
+<refmeta>
+<refentrytitle>man.hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate</refname>
+<refpurpose>Enable hyphenation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.hyphenate.frag">
+&lt;xsl:param name="man.hyphenate"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, hyphenation is enabled.</para>
+
+<note>
+<para>The default value for this parameter is zero because groff is
+not particularly smart about how it does hyphenation; it can end up
+hyphenating a lot of things that you don't want hyphenated. To
+mitigate that, the default behavior of the stylesheets is to suppress
+hyphenation of computer inlines, filenames, and URLs. (You can
+override the default behavior by setting non-zero values for the
+<parameter>man.hyphenate.urls</parameter>,
+<parameter>man.hyphenate.filenames</parameter>, and
+<parameter>man.hyphenate.computer.inlines</parameter> parameters.) But
+the best way is still to just globally disable hyphenation, as the
+stylesheets do by default.</para>
+
+<para>The only good reason to enabled hyphenation is if you have also
+enabled justification (which is disabled by default). The reason is
+that justified text can look very bad unless you also hyphenate it; to
+quote the <quote>Hypenation</quote> node from the groff info page:
+
+<blockquote>
+ <para><emphasis>Since the odds are not great for finding a set of
+ words, for every output line, which fit nicely on a line without
+ inserting excessive amounts of space between words, 'gtroff'
+ hyphenates words so that it can justify lines without inserting too
+ much space between words.</emphasis></para>
+</blockquote>
+
+So, if you set a non-zero value for the
+<parameter>man.justify</parameter> parameter (to enable
+justification), then you should probably also set a non-zero value for
+<parameter>man.hyphenate</parameter> (to enable hyphenation).</para>
+</note>
+
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.hyphenate.urls">
+<refmeta>
+<refentrytitle>man.hyphenate.urls</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.urls</refname>
+<refpurpose>Hyphenate URLs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.hyphenate.urls.frag">
+&lt;xsl:param name="man.hyphenate.urls"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for output of
+the <tag>ulink</tag> <tag class="attribute">url</tag> attribute.</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting
+ <parameter>man.hyphenate.urls</parameter> is not necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.urls</parameter> is non-zero, URLs
+will not be treated specially and are subject to hyphenation just like
+other words.</para>
+
+<note>
+ <para>If you are thinking about setting a non-zero value for
+ <parameter>man.hyphenate.urls</parameter> in order to make long
+ URLs break across lines, you'd probably be better off
+ experimenting with setting the
+ <parameter>man.break.after.slash</parameter> parameter first. That
+ will cause long URLs to be broken after slashes.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.hyphenate.filenames">
+<refmeta>
+<refentrytitle>man.hyphenate.filenames</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.filenames</refname>
+<refpurpose>Hyphenate filenames?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.hyphenate.filenames.frag">
+&lt;xsl:param name="man.hyphenate.filenames"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for
+<tag>filename</tag> output.</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting
+ <parameter>man.hyphenate.filenames</parameter> is not
+ necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.filenames</parameter> is non-zero,
+filenames will not be treated specially and are subject to hyphenation
+just like other words.</para>
+
+<note>
+ <para>If you are thinking about setting a non-zero value for
+ <parameter>man.hyphenate.filenames</parameter> in order to make long
+ filenames/pathnames break across lines, you'd probably be better off
+ experimenting with setting the
+ <parameter>man.break.after.slash</parameter> parameter first. That
+ will cause long pathnames to be broken after slashes.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.hyphenate.computer.inlines">
+<refmeta>
+<refentrytitle>man.hyphenate.computer.inlines</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.computer.inlines</refname>
+<refpurpose>Hyphenate computer inlines?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.hyphenate.computer.inlines.frag">
+&lt;xsl:param name="man.hyphenate.computer.inlines"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for
+<quote>computer inlines</quote> such as environment variables,
+constants, etc. This parameter current affects output of the following
+elements:
+<simplelist type="inline">
+
+ <member><tag>classname</tag></member>
+ <member><tag>constant</tag></member>
+ <member><tag>envar</tag></member>
+ <member><tag>errorcode</tag></member>
+ <member><tag>option</tag></member>
+ <member><tag>replaceable</tag></member>
+ <member><tag>userinput</tag></member>
+ <member><tag>type</tag></member>
+ <member><tag>varname</tag></member>
+</simplelist>
+</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting the
+ <parameter>man.hyphenate.computer.inlines</parameter> is not
+ necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.computer.inlines</parameter> is
+non-zero, computer inlines will not be treated specially and will be
+hyphenated like other words when needed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.justify">
+<refmeta>
+<refentrytitle>man.justify</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.justify</refname>
+<refpurpose>Justify text to both right and left margins?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.justify.frag">
+&lt;xsl:param name="man.justify"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, text is justified to both the right and left
+margins (or, in roff terminology, "adjusted and filled" to both the
+right and left margins). If zero (the default), text is adjusted to
+the left margin only -- producing what is traditionally called
+"ragged-right" text.</para>
+
+<note>
+<para>The default value for this parameter is zero because justified
+text looks good only when it is also hyphenated. Without hyphenation,
+excessive amounts of space often end up getting between words, in
+order to "pad" lines out to align on the right margin.</para>
+
+<para>The problem is that groff is not particularly smart about how it
+does hyphenation; it can end up hyphenating a lot of things that you
+don't want hyphenated. So, disabling both justification and
+hyphenation ensures that hyphens won't get inserted where you don't
+want to them, and you don't end up with lines containing excessive
+amounts of space between words.</para>
+
+<para>However, if do you decide to set a non-zero value for the
+<parameter>man.justify</parameter> parameter (to enable
+justification), then you should probably also set a non-zero value for
+<parameter>man.hyphenate</parameter> (to enable hyphenation).</para>
+
+<para>Yes, these default settings run counter to how most existing man
+pages are formatted. But there are some notable exceptions, such as
+the <literal>perl</literal> man pages.</para>
+</note>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.break.after.slash">
+<refmeta>
+<refentrytitle>man.break.after.slash</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.break.after.slash</refname>
+<refpurpose>Enable line-breaking after slashes?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.break.after.slash.frag">
+&lt;xsl:param name="man.break.after.slash"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, line-breaking after slashes is enabled. This is
+mainly useful for causing long URLs or pathnames/filenames to be
+broken up or "wrapped" across lines (though it also has the side
+effect of sometimes causing relatively short URLs and pathnames to be
+broken up across lines too).</para>
+
+<para>If zero (the default), line-breaking after slashes is
+disabled. In that case, strings containing slashes (for example, URLs
+or filenames) are not broken across lines, even if they exceed the
+maximum column widith.</para>
+
+<warning>
+ <para>If you set a non-zero value for this parameter, check your
+ man-page output carefuly afterwards, in order to make sure that the
+ setting has not introduced an excessive amount of breaking-up of URLs
+ or pathnames. If your content contains mostly short URLs or
+ pathnames, setting a non-zero value for
+ <parameter>man.break.after.slash</parameter> will probably result in
+ in a significant number of relatively short URLs and pathnames being
+ broken across lines, which is probably not what you want.</para>
+</warning>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="indent">
+ <title>Indentation</title>
+<refentry version="5.0" xml:id="man.indent.width">
+<refmeta>
+<refentrytitle>man.indent.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.width</refname>
+<refpurpose>Specifies width used for adjusted indents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.indent.width.frag">
+&lt;xsl:param name="man.indent.width"&gt;4&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The <parameter>man.indent.width</parameter> parameter specifies
+the width used for adjusted indents. The value of
+<parameter>man.indent.width</parameter> is used for indenting of
+lists, verbatims, headings, and elsewhere, depending on whether the
+values of certain <literal>man.indent.*</literal> boolean parameters
+are non-zero.</para>
+
+<para>The value of <parameter>man.indent.width</parameter> should
+include a valid roff measurement unit (for example,
+<literal>n</literal> or <literal>u</literal>). The default value of
+<literal>4n</literal> specifies a 4-en width; when viewed on a
+console, that amounts to the width of four characters. For details
+about roff measurment units, see the <literal>Measurements</literal>
+node in the groff info page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.indent.refsect">
+<refmeta>
+<refentrytitle>man.indent.refsect</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.refsect</refname>
+<refpurpose>Adjust indentation of refsect* and refsection?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.indent.refsect.frag">
+&lt;xsl:param name="man.indent.refsect" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.refsect</parameter> is
+non-zero, the width of the left margin for
+<tag>refsect1</tag>, <tag>refsect2</tag> and
+<tag>refsect3</tag> contents and titles (and first-level,
+second-level, and third-level nested
+<tag>refsection</tag>instances) is adjusted by the value of
+the <parameter>man.indent.width</parameter> parameter. With
+<parameter>man.indent.width</parameter> set to its default value of
+<literal>3n</literal>, the main results are that:
+
+<itemizedlist>
+ <listitem>
+ <para>contents of <tag>refsect1</tag> are output with a
+ left margin of three characters instead the roff default of seven
+ or eight characters</para>
+ </listitem>
+ <listitem>
+ <para>contents of <tag>refsect2</tag> are displayed in
+ console output with a left margin of six characters instead the of
+ the roff default of seven characters</para>
+ </listitem>
+ <listitem>
+ <para> the contents of <tag>refsect3</tag> and nested
+ <tag>refsection</tag> instances are adjusted
+ accordingly.</para>
+ </listitem>
+</itemizedlist>
+
+If instead the value of <parameter>man.indent.refsect</parameter> is
+zero, no margin adjustment is done for <literal>refsect*</literal>
+output.</para>
+
+<tip>
+ <para>If your content is primarly comprised of
+ <tag>refsect1</tag> and <tag>refsect2</tag> content
+ (or the <tag>refsection</tag> equivalent)&#160;&#8211; with few or
+ no <tag>refsect3</tag> or lower nested sections , you may be
+ able to &#8220;conserve&#8221; space in your output by setting
+ <parameter>man.indent.refsect</parameter> to a non-zero value. Doing
+ so will &#8220;squeeze&#8221; the left margin in such as way as to provide an
+ additional four characters of &#8220;room&#8221; per line in
+ <tag>refsect1</tag> output. That extra room may be useful
+ if, for example, you have many verbatim sections with long lines in
+ them.</para>
+</tip>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.indent.blurbs">
+<refmeta>
+<refentrytitle>man.indent.blurbs</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.blurbs</refname>
+<refpurpose>Adjust indentation of blurbs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.indent.blurbs.frag">
+&lt;xsl:param name="man.indent.blurbs" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.blurbs</parameter> is
+non-zero, the width of the left margin for
+<tag>authorblurb</tag>, <tag>personblurb</tag>, and
+<tag>contrib</tag> output is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>3n</literal> by default). If instead the value of
+<parameter>man.indent.blurbs</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.indent.lists">
+<refmeta>
+<refentrytitle>man.indent.lists</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.lists</refname>
+<refpurpose>Adjust indentation of lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.indent.lists.frag">
+&lt;xsl:param name="man.indent.lists" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.lists</parameter> is
+non-zero, the width of the left margin for list items in
+<tag>itemizedlist</tag>,
+<tag>orderedlist</tag>,
+<tag>variablelist</tag> output (and output of some other
+lists) is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>4n</literal> by default). If instead the value of
+<parameter>man.indent.lists</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.indent.verbatims">
+<refmeta>
+<refentrytitle>man.indent.verbatims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.verbatims</refname>
+<refpurpose>Adjust indentation of verbatims?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.indent.verbatims.frag">
+&lt;xsl:param name="man.indent.verbatims" select="1"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.verbatims</parameter> is
+non-zero, the width of the left margin for output of verbatim
+environments (<tag>programlisting</tag>,
+<tag>screen</tag>, and so on) is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>3n</literal> by default). If instead the value of
+<parameter>man.indent.verbatims</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="fonts">
+ <title>Fonts</title>
+<refentry version="5.0" xml:id="man.font.funcprototype">
+<refmeta>
+<refentrytitle>man.font.funcprototype</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.funcprototype</refname>
+<refpurpose>Specifies font for funcprototype output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.font.funcprototype.frag">
+ &lt;xsl:param name="man.font.funcprototype"&gt;BI&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.funcprototype</parameter> parameter
+specifies the font for <tag>funcprototype</tag> output. It
+should be a valid roff font name, such as <literal>BI</literal> or
+<literal>B</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.font.funcsynopsisinfo">
+<refmeta>
+<refentrytitle>man.font.funcsynopsisinfo</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.funcsynopsisinfo</refname>
+<refpurpose>Specifies font for funcsynopsisinfo output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.font.funcsynopsisinfo.frag">
+ &lt;xsl:param name="man.font.funcsynopsisinfo"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.funcsynopsisinfo</parameter> parameter
+specifies the font for <tag>funcsynopsisinfo</tag> output. It
+should be a valid roff font name, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.font.links">
+<refmeta>
+<refentrytitle>man.font.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.links</refname>
+<refpurpose>Specifies font for links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.font.links.frag">
+&lt;xsl:param name="man.font.links"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.links</parameter> parameter
+specifies the font for output of links (<tag>ulink</tag> instances
+and any instances of any element with an <tag class="attribute">xlink:href</tag> attribute).</para>
+
+<para>The value of <parameter>man.font.links</parameter> must be
+ either <literal>B</literal> or <literal>I</literal>, or empty. If
+the value is empty, no font formatting is applied to links.</para>
+
+<para>If you set <parameter>man.endnotes.are.numbered</parameter> and/or
+<parameter>man.endnotes.list.enabled</parameter> to zero (disabled), then
+you should probably also set an empty value for
+<parameter>man.font.links</parameter>. But if
+<parameter>man.endnotes.are.numbered</parameter> is non-zero (enabled),
+you should probably keep
+<parameter>man.font.links</parameter> set to
+<literal>B</literal> or <literal>I</literal><footnote><para>The
+ main purpose of applying a font format to links in most output
+formats it to indicate that the formatted text is
+&#8220;clickable&#8221;; given that links rendered in man pages are
+not &#8220;real&#8221; hyperlinks that users can click on, it might
+seem like there is never a good reason to have font formatting for
+link contents in man output.</para>
+<para>In fact, if you suppress the
+display of inline link references (by setting
+<parameter>man.endnotes.are.numbered</parameter> to zero), there is no
+good reason to apply font formatting to links. However, if
+<parameter>man.endnotes.are.numbered</parameter> is non-zero, having
+font formatting for links (arguably) serves a purpose: It provides
+&#8220;context&#8221; information about exactly what part of the text
+is being &#8220;annotated&#8221; by the link. Depending on how you
+mark up your content, that context information may or may not
+have value.</para></footnote>.</para>
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter>,
+ <parameter>man.endnotes.are.numbered</parameter></para>
+</refsection>
+
+</refentry>
+
+<refentry version="5.0" xml:id="man.font.table.headings">
+<refmeta>
+<refentrytitle>man.font.table.headings</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.table.headings</refname>
+<refpurpose>Specifies font for table headings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.font.table.headings.frag">
+ &lt;xsl:param name="man.font.table.headings"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.table.headings</parameter> parameter
+specifies the font for <tag>table</tag> headings. It should be
+a valid roff font, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.font.table.title">
+<refmeta>
+<refentrytitle>man.font.table.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.table.title</refname>
+<refpurpose>Specifies font for table headings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.font.table.title.frag">
+ &lt;xsl:param name="man.font.table.title"&gt;B&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.table.title</parameter> parameter
+specifies the font for <tag>table</tag> titles. It should be
+a valid roff font, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="synopsis">
+ <title>SYNOPSIS section</title>
+<refentry version="5.0" xml:id="man.funcsynopsis.style">
+<refmeta>
+<refentrytitle>man.funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="man.funcsynopsis.style.frag">&lt;xsl:param name="man.funcsynopsis.style"&gt;ansi&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If <parameter>man.funcsynopsis.style</parameter> is
+<literal>ansi</literal>, ANSI-style function synopses are
+generated for a <tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.</para>
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="authors">
+ <title>AUTHORS and COPYRIGHT sections</title>
+ <refentry version="5.0" xml:id="man.authors.section.enabled">
+<refmeta>
+<refentrytitle>man.authors.section.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.authors.section.enabled</refname>
+<refpurpose>Display auto-generated AUTHORS section?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="man.authors.section.enabled.frag">
+&lt;xsl:param name="man.authors.section.enabled"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>man.authors.section.enabled</parameter> is non-zero
+(the default), then an <literal>AUTHORS</literal> section is
+generated near the end of each man page. The output of the
+<literal>AUTHORS</literal> section is assembled from any
+<tag>author</tag>, <tag>editor</tag>, and <tag>othercredit</tag>
+metadata found in the contents of the child <tag>info</tag> or
+<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag>
+itself, or from any <tag>author</tag>, <tag>editor</tag>, and
+<tag>othercredit</tag> metadata that may appear in <tag>info</tag>
+contents of any ancestors of the <tag>refentry</tag>.</para>
+
+<para>If the value of
+<parameter>man.authors.section.enabled</parameter> is zero, the
+the auto-generated <literal>AUTHORS</literal> section is
+suppressed.</para>
+
+<para>Set the value of
+ <parameter>man.authors.section.enabled</parameter> to zero if
+ you want to have a manually created <literal>AUTHORS</literal>
+ section in your source, and you want it to appear in output
+ instead of the auto-generated <literal>AUTHORS</literal>
+ section.</para>
+</refsection>
+</refentry>
+
+ <refentry version="5.0" xml:id="man.copyright.section.enabled">
+<refmeta>
+<refentrytitle>man.copyright.section.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.copyright.section.enabled</refname>
+<refpurpose>Display auto-generated COPYRIGHT section?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="man.copyright.section.enabled.frag">
+&lt;xsl:param name="man.copyright.section.enabled"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>man.copyright.section.enabled</parameter> is non-zero
+(the default), then a <literal>COPYRIGHT</literal> section is
+generated near the end of each man page. The output of the
+<literal>COPYRIGHT</literal> section is assembled from any
+<tag>copyright</tag> and <tag>legalnotice</tag> metadata found in
+the contents of the child <tag>info</tag> or
+<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag>
+itself, or from any <tag>copyright</tag> and
+<tag>legalnotice</tag> metadata that may appear in <tag>info</tag>
+contents of any ancestors of the <tag>refentry</tag>.</para>
+
+<para>If the value of
+<parameter>man.copyright.section.enabled</parameter> is zero, the
+the auto-generated <literal>COPYRIGHT</literal> section is
+suppressed.</para>
+
+<para>Set the value of
+ <parameter>man.copyright.section.enabled</parameter> to zero if
+ you want to have a manually created <literal>COPYRIGHT</literal>
+ section in your source, and you want it to appear in output
+ instead of the auto-generated <literal>COPYRIGHT</literal>
+ section.</para>
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="endnotes">
+ <title>Endnotes and link handling</title>
+<refentry version="5.0" xml:id="man.endnotes.list.enabled">
+<refmeta>
+<refentrytitle>man.endnotes.list.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.list.enabled</refname>
+<refpurpose>Display endnotes list at end of man page?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.endnotes.list.enabled.frag">
+&lt;xsl:param name="man.endnotes.list.enabled"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is
+non-zero (the default), then an endnotes list is added to the end of
+the output man page.</para>
+
+<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is
+zero, the list is suppressed &#8212; unless link numbering is enabled (that
+is, if <parameter>man.endnotes.are.numbered</parameter> is non-zero), in
+which case, that setting overrides the
+<parameter>man.endnotes.list.enabled</parameter> setting, and the
+endnotes list is still displayed. The reason is that inline
+numbering of notesources associated with endnotes only makes sense
+if a (numbered) list of endnotes is also generated.</para>
+
+<note>
+ <para>Leaving
+ <parameter>man.endnotes.list.enabled</parameter> at its default
+ (non-zero) value ensures that no &#8220;out of line&#8221; information (such
+ as the URLs for hyperlinks and images) gets lost in your
+ man-page output. It just gets &#8220;rearranged&#8221;.</para>
+ <para>So if you&#8217;re thinking about disabling endnotes listing by
+ setting the value of
+ <parameter>man.endnotes.list.enabled</parameter> to zero:
+ Before you do so, first take some time to carefully consider
+ the information needs and experiences of your users. The &#8220;out
+ of line&#8221; information has value even if the presentation of it
+ in text output is not as interactive as it may be in other
+ output formats.</para>
+ <para>As far as the specific case of URLs: Even though the URLs
+ displayed in text output may not be &#8220;real&#8221; (clickable)
+ hyperlinks, many X terminals have convenience features for
+ recognizing URLs and can, for example, present users with
+ an options to open a URL in a browser with the user clicks on
+ the URL is a terminal window. And short of those, users with X
+ terminals can always manually cut and paste the URLs into a web
+ browser.</para>
+ <para>Also, note that various &#8220;man to html&#8221; tools, such as the
+ widely used <command><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>)
+ application, automatically mark up URLs with <literal>a@href</literal> markup
+ during conversion &#8212; resulting in &#8220;real&#8221; hyperlinks in HTML
+ output from those tools.</para>
+</note>
+
+<para>To &#8220;turn off&#8221; numbering of endnotes in the
+endnotes list, set <parameter>man.endnotes.are.numbered</parameter>
+to zero. The endnotes list will
+still be displayed; it will just be displayed without the
+numbers<footnote><para>It can still make sense to have
+the list of endnotes displayed even if you have endnotes numbering turned
+off. In that case, your endnotes list basically becomes a &#8220;list
+of references&#8221; without any association with specific text in
+your document. This is probably the best option if you find the inline
+endnotes numbering obtrusive. Your users will still have access to all the &#8220;out of line&#8221;
+such as URLs for hyperlinks.</para></footnote>
+</para>
+
+<para>The default heading for the endnotes list is
+<literal>NOTES</literal>. To change that, set a non-empty
+value for the <parameter>man.endnotes.list.heading</parameter>
+parameter.</para>
+
+<para>In the case of notesources that are links: Along with the
+URL for each link, the endnotes list includes the contents of the
+link. The list thus includes only non-empty<footnote>
+
+<para>A &#8220;non-empty&#8221; link is one that looks like
+this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"&gt;manpages&lt;/ulink&gt;</literallayout>
+an &#8220;empty link&#8221; is on that looks like this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/&gt;</literallayout>
+</para></footnote> links.
+
+Empty links are never included, and never numbered. They are simply
+displayed inline, without any numbering.</para>
+
+<para>In addition, if there are multiple instances of links in a
+<tag>refentry</tag> that have the same URL, the URL is listed only
+once. The contents listed for that link in the endnotes list are
+the contents of the first link which has that URL.</para>
+
+<para>If you disable endnotes listing, you should probably also set
+<parameter>man.links.are.underlined</parameter> to zero (to disable
+link underlining).</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.endnotes.list.heading">
+<refmeta>
+<refentrytitle>man.endnotes.list.heading</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.list.heading</refname>
+<refpurpose>Specifies an alternate name for endnotes list</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.endnotes.list.heading.frag">
+&lt;xsl:param name="man.endnotes.list.heading"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.endnotes.are.numbered</parameter> parameter
+and/or the <parameter>man.endnotes.list.enabled</parameter>
+parameter is non-zero (the defaults for both are non-zero), a
+numbered list of endnotes is generated near the end of each man
+page. The default heading for the list of endnotes is the
+equivalent of the English word <literal>NOTES</literal> in
+the current locale. To cause an alternate heading to be displayed,
+set a non-empty value for the
+<parameter>man.endnotes.list.heading</parameter> parameter &#8212;
+for example, <literal>REFERENCES</literal>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.endnotes.are.numbered">
+<refmeta>
+<refentrytitle>man.endnotes.are.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.are.numbered</refname>
+<refpurpose>Number endnotes?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.endnotes.are.numbered.frag">
+&lt;xsl:param name="man.endnotes.are.numbered"&gt;1&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is
+non-zero (the default), then for each non-empty<footnote>
+<para>A &#8220;non-empty&#8221; notesource is one that looks like
+this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"&gt;manpages&lt;/ulink&gt;</literallayout>
+an &#8220;empty&#8221; notesource is on that looks like this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/&gt;</literallayout>
+</para></footnote> &#8220;notesource&#8221;:
+
+<itemizedlist>
+ <listitem>
+ <para>a number (in square brackets) is displayed inline after the
+ rendered inline contents (if any) of the notesource</para>
+ </listitem>
+ <listitem>
+ <para>the contents of the notesource are included in a
+ numbered list of endnotes that is generated at the end of
+ each man page; the number for each endnote corresponds to
+ the inline number for the notesource with which it is
+ associated</para>
+ </listitem>
+</itemizedlist>
+The default heading for the list of endnotes is
+<literal>NOTES</literal>. To output a different heading, set a value
+for the <parameter>man.endnotes.section.heading</parameter>
+parameter.</para>
+
+<note>
+ <para>The endnotes list is also displayed (but without
+ numbers) if the value of
+ <parameter>man.endnotes.list.enabled</parameter> is
+ non-zero.</para>
+</note>
+
+
+<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is
+zero, numbering of endnotess is suppressed; only inline
+contents (if any) of the notesource are displayed inline.
+<important>
+ <para>If you are thinking about disabling endnote numbering by setting
+ the value of <parameter>man.endnotes.are.numbered</parameter> to zero,
+ before you do so, first take some time to carefully
+ consider the information needs and experiences of your users. The
+ square-bracketed numbers displayed inline after notesources may seem
+ obstrusive and aesthetically unpleasing<footnote><para>As far as notesources that are links, ytou might
+ think it would be better to just display URLs for non-empty
+ links inline, after their content, rather than displaying
+ square-bracketed numbers all over the place. But it's not better. In
+ fact, it's not even practical, because many (most) URLs for links
+ are too long to be displayed inline. They end up overflowing the
+ right margin. You can set a non-zero value for
+ <parameter>man.break.after.slash</parameter> parameter to deal with
+ that, but it could be argued that what you end up with is at least
+ as ugly, and definitely more obstrusive, then having short
+ square-bracketed numbers displayed inline.</para></footnote>,
+
+ but in a text-only output format, the
+ numbered-notesources/endnotes-listing mechanism is the only
+ practical way to handle this kind of content.</para>
+
+ <para>Also, users of &#8220;text based&#8221; browsers such as
+ <command>lynx</command> will already be accustomed to seeing inline
+ numbers for links. And various "man to html" applications, such as
+ the widely used <command><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>)
+ application, can automatically turn URLs into "real" HTML hyperlinks
+ in output. So leaving <parameter>man.endnotes.are.numbered</parameter>
+ at its default (non-zero) value ensures that no information is
+ lost in your man-page output. It just gets
+ &#8220;rearranged&#8221;.</para>
+</important>
+</para>
+<para>The handling of empty links is not affected by this
+parameter. Empty links are handled simply by displaying their URLs
+inline. Empty links are never auto-numbered.</para>
+
+<para>If you disable endnotes numbering, you should probably also set
+<parameter>man.font.links</parameter> to an empty value (to
+disable font formatting for links.</para>
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter>,
+ <parameter>man.font.links</parameter></para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.base.url.for.relative.links">
+ <refmeta>
+ <refentrytitle>man.base.url.for.relative.links</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.base.url.for.relative.links</refname>
+ <refpurpose>Specifies a base URL for relative links</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting xml:id="man.base.url.for.relative.links.frag">&lt;xsl:param name="man.base.url.for.relative.links"&gt;[set $man.base.url.for.relative.links]/&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>For any &#8220;notesource&#8221; listed in the auto-generated
+ &#8220;NOTES&#8221; section of output man pages (which is generated when
+ the value of the
+ <parameter>man.endnotes.list.enabled</parameter> parameter
+ is non-zero), if the notesource is a link source with a
+ relative URI, the URI is displayed in output with the value
+ of the
+ <parameter>man.base.url.for.relative.links</parameter>
+ parameter prepended to the value of the link URI.</para>
+
+ <note>
+ <para>A link source is an notesource that references an
+ external resource:
+ <itemizedlist>
+ <listitem>
+ <para>a <tag>ulink</tag> element with a <tag class="attribute">url</tag> attribute</para>
+ </listitem>
+ <listitem>
+ <para>any element with an <tag class="attribute">xlink:href</tag> attribute</para>
+ </listitem>
+ <listitem>
+ <para>an <tag>imagedata</tag>, <tag>audiodata</tag>, or
+ <tag>videodata</tag> element</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </note>
+
+ <para>If you use relative URIs in link sources in your DocBook
+ <tag>refentry</tag> source, and you leave
+ <parameter>man.base.url.for.relative.links</parameter>
+ unset, the relative links will appear &#8220;as is&#8221; in the &#8220;Notes&#8221;
+ section of any man-page output generated from your source.
+ That&#8217;s probably not what you want, because such relative
+ links are only usable in the context of HTML output. So, to
+ make the links meaningful and usable in the context of
+ man-page output, set a value for
+ <parameter>man.base.url.for.relative.links</parameter> that
+ points to the online version of HTML output generated from
+ your DocBook <tag>refentry</tag> source. For
+ example:
+ <programlisting>&lt;xsl:param name="man.base.url.for.relative.links"
+ &gt;http://www.kernel.org/pub/software/scm/git/docs/&lt;/xsl:param&gt;</programlisting>
+ </para>
+
+ </refsection>
+
+ <refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter></para>
+ </refsection>
+
+</refentry>
+
+ </reference>
+ <reference xml:id="lists">
+ <title>Lists</title>
+<refentry version="5.0" xml:id="man.segtitle.suppress">
+<refmeta>
+<refentrytitle>man.segtitle.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.segtitle.suppress</refname>
+<refpurpose>Suppress display of segtitle contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.segtitle.suppress.frag">
+&lt;xsl:param name="man.segtitle.suppress" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.segtitle.suppress</parameter> is
+non-zero, then display of <tag>segtitle</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="charmap">
+ <title>Character/string substitution</title>
+<refentry version="5.0" xml:id="man.charmap.enabled">
+<refmeta>
+<refentrytitle>man.charmap.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.enabled</refname>
+<refpurpose>Apply character map before final output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.charmap.enabled.frag">
+&lt;xsl:param name="man.charmap.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the <parameter>man.charmap.enabled</parameter>
+parameter is non-zero, a "character map" is used to substitute certain
+Unicode symbols and special characters with appropriate roff/groff
+equivalents, just before writing each man-page file to the
+filesystem. If instead the value of
+<parameter>man.charmap.enabled</parameter> is zero, Unicode characters
+are passed through "as is".</para>
+
+<refsection><info><title>Details</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link> format as detailed in the XSLT 2.0 specification. The map
+contains more than 800 character mappings and can be considered the
+standard roff character map for the distribution.</para>
+
+<para>You can use the <parameter>man.charmap.uri</parameter>
+parameter to specify a URI for the location for an alternate roff
+character map to use in place of the standard roff character map
+provided in the distribution.</para>
+
+<para>You can also use a subset of a character map. For details,
+see the <parameter>man.charmap.use.subset</parameter>,
+<parameter>man.charmap.subset.profile</parameter>, and
+<parameter>man.charmap.subset.profile.english</parameter>
+parameters.</para>
+
+</refsection>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.charmap.uri">
+<refmeta>
+<refentrytitle>man.charmap.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.uri</refname>
+<refpurpose>URI for custom roff character map</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.charmap.uri.frag">
+&lt;xsl:param name="man.charmap.uri"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes an <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link>. That character map can be considered the standard roff
+character map for the distribution.</para>
+
+<para>If the value of the <parameter>man.charmap.uri</parameter>
+parameter is non-empty, that value is used as the URI for the location
+for an alternate roff character map to use in place of the standard
+roff character map provided in the distribution.</para>
+
+<warning>
+<para>Do not set a value for <parameter>man.charmap.uri</parameter>
+unless you have a custom roff character map that differs from the
+standard one provided in the distribution.</para>
+</warning>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.charmap.use.subset">
+<refmeta>
+<refentrytitle>man.charmap.use.subset</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.use.subset</refname>
+<refpurpose>Use subset of character map instead of full map?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.charmap.use.subset.frag">
+&lt;xsl:param name="man.charmap.use.subset" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.charmap.use.subset</parameter> parameter is non-zero,
+a subset of the roff character map is used instead of the full roff
+character map. The profile of the subset used is determined either
+by the value of the
+<parameter>man.charmap.subset.profile</parameter>
+parameter (if the source is not in English) or the
+<parameter>man.charmap.subset.profile.english</parameter>
+parameter (if the source is in English).</para>
+
+<note>
+ <para>You may want to experiment with setting a non-zero value of
+ <parameter>man.charmap.use.subset</parameter>, so that the full
+ character map is used. Depending on which XSLT engine you run,
+ setting a non-zero value for
+ <parameter>man.charmap.use.subset</parameter> may significantly
+ increase the time needed to process your documents. Or it may
+ not. For example, if you set it and run it with xsltproc, it seems
+ to dramatically increase processing time; on the other hand, if you
+ set it and run it with Saxon, it does not seem to increase
+ processing time nearly as much.</para>
+
+ <para>If processing time is not a important concern and/or you can
+ tolerate the increase in processing time imposed by using the full
+ character map, set <parameter>man.charmap.use.subset</parameter> to
+ zero.</para>
+</note>
+
+<refsection><info><title>Details</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link> format as detailed in the XSLT 2.0 specification. The map
+contains more than 800 character mappings and can be considered the
+standard roff character map for the distribution.</para>
+
+<note>
+<para>You can use the <parameter>man.charmap.uri</parameter>
+parameter to specify a URI for the location for an alternate roff
+character map to use in place of the standard roff character map
+provided in the distribution.</para>
+</note>
+
+<para>Because it is not terrifically efficient to use the standard
+800-character character map in full -- and for most (or all) users,
+never necessary to use it in full -- the DocBook XSL Stylesheets
+support a mechanism for using, within any given character map, a
+subset of character mappings instead of the full set. You can use the
+<parameter>man.charmap.subset.profile</parameter> or
+<parameter>man.charmap.subset.profile.english</parameter>
+parameter to tune the profile of that subset to use.</para>
+
+</refsection>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.charmap.subset.profile">
+<refmeta>
+<refentrytitle>man.charmap.subset.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.subset.profile</refname>
+<refpurpose>Profile of character map subset</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.charmap.subset.profile.frag">
+&lt;xsl:param name="man.charmap.subset.profile"&gt;
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ (@*[local-name() = 'class'] = 'symbols' or
+ @*[local-name() = 'class'] = 'letters')
+) or
+@*[local-name() = 'block'] = 'Latin Extended-A'
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.charmap.use.subset</parameter> parameter is non-zero,
+and your DocBook source is not written in English (that
+ is, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root element
+ in your DocBook source or on the first <tag>refentry</tag>
+ element in your source has a value other than
+ <literal>en</literal>), then the character-map subset specified
+ by the <parameter>man.charmap.subset.profile</parameter>
+ parameter is used instead of the full roff character map.</para>
+
+<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root
+ element in your DocBook
+ source or on the first <tag>refentry</tag> element in your source
+ has the value <literal>en</literal> or if it has no <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute, then the character-map
+ subset specified by the
+ <parameter>man.charmap.subset.profile.english</parameter>
+ parameter is used instead of
+ <parameter>man.charmap.subset.profile</parameter>.</para>
+
+<para>The difference between the two subsets is that
+ <parameter>man.charmap.subset.profile</parameter> provides
+ mappings for characters in Western European languages that are
+ not part of the Roman (English) alphabet (ASCII character set).</para>
+
+<para>The value of <parameter>man.charmap.subset.profile</parameter>
+is a string representing an XPath expression that matches attribute
+names and values for <tag namespace="http://docbook.sf.net/xmlns/unichar/1.0">output-character</tag>
+elements in the character map.</para>
+
+<para>The attributes supported in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map included in the distribution</link> are:
+<variablelist>
+ <varlistentry>
+ <term>character</term>
+ <listitem>
+ <simpara>a raw Unicode character or numeric Unicode
+ character-entity value (either in decimal or hex); all
+ characters have this attribute</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <simpara>a standard full/long ISO/Unicode character name (e.g.,
+ "OHM SIGN"); all characters have this attribute</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>block</term>
+ <listitem>
+ <simpara>a standard Unicode "block" name (e.g., "General
+ Punctuation"); all characters have this attribute. For the full
+ list of Unicode block names supported in the standard roff
+ character map, see <xref linkend="BlocksAndClasses"/>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <simpara>a class of characters (e.g., "spaces"). Not all
+ characters have this attribute; currently, it is used only with
+ certain characters within the "C1 Controls And Latin-1
+ Supplement" and "General Punctuation" blocks. For details, see
+ <xref linkend="BlocksAndClasses"/>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>entity</term>
+ <listitem>
+ <simpara>an ISO entity name (e.g., "ohm"); not all characters
+ have this attribute, because not all characters have ISO entity
+ names; for example, of the 800 or so characters in the standard
+ roff character map included in the distribution, only around 300
+ have ISO entity names.
+ </simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>string</term>
+ <listitem>
+ <simpara>a string representing an roff/groff escape-code (with
+ "@esc@" used in place of the backslash), or a simple ASCII
+ string; all characters in the roff character map have this
+ attribute</simpara>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<para>The value of <parameter>man.charmap.subset.profile</parameter>
+is evaluated as an XPath expression at run-time to select a portion of
+the roff character map to use. You can tune the subset used by adding
+or removing parts. For example, if you need to use a wide range of
+mathematical operators in a document, and you want to have them
+converted into roff markup properly, you might add the following:
+
+<literallayout class="monospaced"> @*[local-name() = 'block'] ='MathematicalOperators' </literallayout>
+
+That will cause a additional set of around 67 additional "math"
+characters to be converted into roff markup. </para>
+
+<note>
+<para>Depending on which XSLT engine you use, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>man.charmap.subset.profile</parameter> at run-time. If you
+don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that
+supports <function>dyn:evaluate</function> -- you must either set the
+value of the <parameter>man.charmap.use.subset</parameter> parameter
+to zero and process your documents using the full character map
+instead, or set the value of the
+<parameter>man.charmap.enabled</parameter> parameter to zero instead
+(so that character-map processing is disabled completely.</para>
+</note>
+
+<para>An alternative to using
+<parameter>man.charmap.subset.profile</parameter> is to create your
+own custom character map, and set the value of
+<parameter>man.charmap.uri</parameter> to the URI/filename for
+that. If you use a custom character map, you will probably want to
+include in it just the characters you want to use, and so you will
+most likely also want to set the value of
+<parameter>man.charmap.use.subset</parameter> to zero.</para>
+<para>You can create a
+custom character map by making a copy of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map</link> provided in the distribution, and
+then adding to, changing, and/or deleting from that.</para>
+
+<caution>
+<para>If you author your DocBook XML source in UTF-8 or UTF-16
+encoding and aren't sure what OSes or environments your man-page
+output might end up being viewed on, and not sure what version of
+nroff/groff those environments might have, you should be careful about
+what Unicode symbols and special characters you use in your source and
+what parts you add to the value of
+<parameter>man.charmap.subset.profile</parameter>.</para>
+<para>Many of the escape codes used are specific to groff and using
+them may not provide the expected output on an OS or environment that
+uses nroff instead of groff.</para>
+<para>On the other hand, if you intend for your man-page output to be
+viewed only on modern systems (for example, GNU/Linux systems, FreeBSD
+systems, or Cygwin environments) that have a good, up-to-date groff,
+then you can safely include a wide range of Unicode symbols and
+special characters in your UTF-8 or UTF-16 encoded DocBook XML source
+and add any of the supported Unicode block names to the value of
+<parameter>man.charmap.subset.profile</parameter>.</para>
+</caution>
+
+
+<para>For other details, see the documentation for the
+<parameter>man.charmap.use.subset</parameter> parameter.</para>
+
+<refsection xml:id="BlocksAndClasses"><info><title>Supported Unicode block names and "class" values</title></info>
+
+
+ <para>Below is the full list of Unicode block names and "class"
+ values supported in the standard roff stylesheet provided in the
+ distribution, along with a description of which codepoints from the
+ Unicode range corresponding to that block name or block/class
+ combination are supported.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=C1%20Controls%20and%20Latin-1%20Supplement%20(Latin-1%20Supplement)">C1 Controls And Latin-1 Supplement (Latin-1 Supplement)</link> (x00a0 to x00ff)
+ <itemizedlist><info><title>class values</title></info>
+
+ <listitem>
+ <para>symbols</para>
+ </listitem>
+ <listitem>
+ <para>letters</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Latin%20Extended-A">Latin Extended-A</link> (x0100 to x017f, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Spacing%20Modifier%20Letters">Spacing Modifier Letters</link> (x02b0 to x02ee, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Greek%20and%20Coptic">Greek and Coptic</link> (x0370 to x03ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=General%20Punctuation">General Punctuation</link> (x2000 to x206f, partial)
+ <itemizedlist><info><title>class values</title></info>
+
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;start=8192&amp;end=8203">spaces</link></para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;start=8208&amp;end=8213">dashes</link></para>
+ </listitem>
+ <listitem>
+ <para>quotes</para>
+ </listitem>
+ <listitem>
+ <para>daggers</para>
+ </listitem>
+ <listitem>
+ <para>bullets</para>
+ </listitem>
+ <listitem>
+ <para>leaders</para>
+ </listitem>
+ <listitem>
+ <para>primes</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Superscripts%20and%20Subscripts">Superscripts and Subscripts</link> (x2070 to x209f)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Currency%20Symbols">Currency Symbols</link> (x20a0 to x20b1)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Letterlike%20Symbols">Letterlike Symbols</link> (x2100 to x214b)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Number%20Forms">Number Forms</link> (x2150 to x218f)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Arrows">Arrows</link> (x2190 to x21ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Mathematical%20Operators">Mathematical Operators</link> (x2200 to x22ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Control%20Pictures">Control Pictures</link> (x2400 to x243f)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Enclosed%20Alphanumerics">Enclosed Alphanumerics</link> (x2460 to x24ff)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Geometric%20Shapes">Geometric Shapes</link> (x25a0 to x25f7, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Miscellaneous%20Symbols">Miscellaneous Symbols</link> (x2600 to x26ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Dingbats">Dingbats</link> (x2700 to x27be, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Alphabetic%20Presentation%20Forms">Alphabetic Presentation Forms</link> (xfb00 to xfb04 only)</para>
+ </listitem>
+ </itemizedlist>
+</refsection>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.charmap.subset.profile.english">
+<refmeta>
+<refentrytitle>man.charmap.subset.profile.english</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.subset.profile.english</refname>
+<refpurpose>Profile of character map subset</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.charmap.subset.profile.english.frag">
+&lt;xsl:param name="man.charmap.subset.profile.english"&gt;
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ @*[local-name() = 'class'] = 'symbols')
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+ <parameter>man.charmap.use.subset</parameter> parameter is
+ non-zero, and your DocBook source is written in English (that
+ is, if its <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root element
+ in your DocBook source or on the first <tag>refentry</tag>
+ element in your source has the value <literal>en</literal> or if
+ it has no <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute), then the
+ character-map subset specified by the
+ <parameter>man.charmap.subset.profile.english</parameter>
+ parameter is used instead of the full roff character map.</para>
+
+<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute
+ on the root element in your DocBook source or on the first
+ <tag>refentry</tag> element in your source has a value other
+ than <literal>en</literal>, then the character-map subset
+ specified by the
+ <parameter>man.charmap.subset.profile</parameter> parameter is
+ used instead of
+ <parameter>man.charmap.subset.profile.english</parameter>.</para>
+
+<para>The difference between the two subsets is that
+ <parameter>man.charmap.subset.profile</parameter> provides
+ mappings for characters in Western European languages that are
+ not part of the Roman (English) alphabet (ASCII character set).</para>
+
+<para>The value of <parameter>man.charmap.subset.profile.english</parameter>
+is a string representing an XPath expression that matches attribute
+names and values for <tag namespace="http://docbook.sf.net/xmlns/unichar/1.0">output-character</tag> elements in the character map.</para>
+
+<para>For other details, see the documentation for the
+<parameter>man.charmap.subset.profile.english</parameter> and
+<parameter>man.charmap.use.subset</parameter> parameters.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.string.subst.map.local.pre">
+<refmeta>
+<refentrytitle>man.string.subst.map.local.pre</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map.local.pre</refname>
+<refpurpose>Specifies &#8220;local&#8221; string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.string.subst.map.local.pre.frag">
+ &lt;xsl:param name="man.string.subst.map.local.pre"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Use the <parameter>man.string.subst.map.local.pre</parameter>
+parameter to specify any &#8220;local&#8221; string substitutions to perform over
+the entire roff source for each man page <emphasis>before</emphasis>
+performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para>
+
+<para>For details about the format of this parameter, see the
+documentation for the <parameter>man.string.subst.map</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.string.subst.map">
+<refmeta>
+<refentrytitle>man.string.subst.map</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map</refname>
+<refpurpose>Specifies a set of string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.string.subst.map.frag">
+&lt;xsl:param name="man.string.subst.map"&gt;
+
+ &lt;!-- * remove no-break marker at beginning of line (stylesheet artifact) --&gt;
+ &lt;ss:substitution oldstring="&#9618;&#9600;" newstring="&#9618;"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space --&gt;
+ &lt;ss:substitution oldstring="&#9600;" newstring="\ "&gt;&lt;/ss:substitution&gt;
+
+ &lt;!-- ==================================================================== --&gt;
+
+ &lt;!-- * squeeze multiple newlines before a roff request --&gt;
+ &lt;ss:substitution oldstring="
+
+." newstring="
+."&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * remove any .sp instances that directly precede a .PP --&gt;
+ &lt;ss:substitution oldstring=".sp
+.PP" newstring=".PP"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * remove any .sp instances that directly follow a .PP --&gt;
+ &lt;ss:substitution oldstring=".sp
+.sp" newstring=".sp"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * squeeze multiple .sp instances into a single .sp--&gt;
+ &lt;ss:substitution oldstring=".PP
+.sp" newstring=".PP"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * squeeze multiple newlines after start of no-fill (verbatim) env. --&gt;
+ &lt;ss:substitution oldstring=".nf
+
+" newstring=".nf
+"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * squeeze multiple newlines after REstoring margin --&gt;
+ &lt;ss:substitution oldstring=".RE
+
+" newstring=".RE
+"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * U+2591 is a marker we add before and after every Parameter in --&gt;
+ &lt;!-- * Funcprototype output --&gt;
+ &lt;ss:substitution oldstring="&#9617;" newstring=" "&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * U+2592 is a marker we add for the newline before output of &lt;sbr&gt;; --&gt;
+ &lt;ss:substitution oldstring="&#9618;" newstring="
+"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * Now deal with some other characters that are added by the --&gt;
+ &lt;!-- * stylesheets during processing. --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * bullet --&gt;
+ &lt;ss:substitution oldstring="&#8226;" newstring="\(bu"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * left double quote --&gt;
+ &lt;ss:substitution oldstring="&#8220;" newstring="\(lq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * right double quote --&gt;
+ &lt;ss:substitution oldstring="&#8221;" newstring="\(rq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * left single quote --&gt;
+ &lt;ss:substitution oldstring="&#8216;" newstring="\(oq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * right single quote --&gt;
+ &lt;ss:substitution oldstring="&#8217;" newstring="\(cq"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * copyright sign --&gt;
+ &lt;ss:substitution oldstring="&#169;" newstring="\(co"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * registered sign --&gt;
+ &lt;ss:substitution oldstring="&#174;" newstring="\(rg"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * ...servicemark... --&gt;
+ &lt;!-- * There is no groff equivalent for it. --&gt;
+ &lt;ss:substitution oldstring="&#8480;" newstring="(SM)"&gt;&lt;/ss:substitution&gt;
+ &lt;!-- * ...trademark... --&gt;
+ &lt;!-- * We don't do "\(tm" because for console output, --&gt;
+ &lt;!-- * groff just renders that as "tm"; that is: --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * Product&amp;#x2122; -&gt; Producttm --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * So we just make it to "(TM)" instead; thus: --&gt;
+ &lt;!-- * --&gt;
+ &lt;!-- * Product&amp;#x2122; -&gt; Product(TM) --&gt;
+ &lt;ss:substitution oldstring="&#8482;" newstring="(TM)"&gt;&lt;/ss:substitution&gt;
+
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.string.subst.map</parameter> parameter
+contains <link linkend="map">a map</link> that specifies a set of
+string substitutions to perform over the entire roff source for each
+man page, either just before generating final man-page output (that
+is, before writing man-page files to disk) or, if the value of the
+<parameter>man.charmap.enabled</parameter> parameter is non-zero,
+before applying the roff character map.</para>
+
+<para>You can use <parameter>man.string.subst.map</parameter> as a
+&#8220;lightweight&#8221; character map to perform &#8220;essential&#8221; substitutions --
+that is, substitutions that are <emphasis>always</emphasis> performed,
+even if the value of the <parameter>man.charmap.enabled</parameter>
+parameter is zero. For example, you can use it to replace quotation
+marks or other special characters that are generated by the DocBook
+XSL stylesheets for a particular locale setting (as opposed to those
+characters that are actually in source XML documents), or to replace
+any special characters that may be automatically generated by a
+particular customization of the DocBook XSL stylesheets.</para>
+
+<warning>
+ <para>Do you not change value of the
+ <parameter>man.string.subst.map</parameter> parameter unless you are
+ sure what you are doing. First consider adding your
+ string-substitution mappings to either or both of the following
+ parameters:
+ <variablelist>
+ <varlistentry>
+ <term><parameter>man.string.subst.map.local.pre</parameter></term>
+ <listitem><para>applied before
+ <parameter>man.string.subst.map</parameter></para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>man.string.subst.map.local.post</parameter></term>
+ <listitem><para>applied after
+ <parameter>man.string.subst.map</parameter></para></listitem>
+ </varlistentry>
+ </variablelist>
+ By default, both of those parameters contain no
+ string substitutions. They are intended as a means for you to
+ specify your own local string-substitution mappings.</para>
+
+ <para>If you remove any of default mappings from the value of the
+ <parameter>man.string.subst.map</parameter> parameter, you are
+ likely to end up with broken output. And be very careful about adding
+ anything to it; it&#8217;s used for doing string substitution over the
+ entire roff source of each man page &#8211; it causes target strings to be
+ replaced in roff requests and escapes, not just in the visible
+ contents of the page.</para>
+
+</warning>
+
+<refsection xml:id="map">
+ <info>
+ <title>Contents of the substitution map</title>
+ </info>
+ <para>The string-substitution map contains one or more
+ <tag>ss:substitution</tag> elements, each of which has two
+ attributes:
+ <variablelist>
+ <varlistentry>
+ <term>oldstring</term>
+ <listitem>
+ <simpara>string to replace</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>newstring</term>
+ <listitem>
+ <simpara>string with which to replace <tag class="attribute">oldstring</tag></simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ It may also include XML comments (that is, delimited with
+ "<literal>&lt;!--</literal>" and "<literal>--&gt;</literal>").
+ </para>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.string.subst.map.local.post">
+<refmeta>
+<refentrytitle>man.string.subst.map.local.post</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map.local.post</refname>
+<refpurpose>Specifies &#8220;local&#8221; string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.string.subst.map.local.post.frag">
+&lt;xsl:param name="man.string.subst.map.local.post"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Use the <parameter>man.string.subst.map.local.post</parameter>
+parameter to specify any &#8220;local&#8221; string substitutions to perform over
+the entire roff source for each man page <emphasis>after</emphasis>
+performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para>
+
+<para>For details about the format of this parameter, see the
+documentation for the <parameter>man.string.subst.map</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="refmeta">
+ <title>Refentry metadata gathering</title>
+<refentry version="5.0" xml:id="refentry.meta.get.quietly">
+<refmeta>
+<refentrytitle>refentry.meta.get.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.meta.get.quietly</refname>
+<refpurpose>Suppress notes and warnings when gathering refentry metadata?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.meta.get.quietly.frag">
+&lt;xsl:param name="refentry.meta.get.quietly" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), notes and warnings about &#8220;missing&#8221; markup
+are generated during gathering of refentry metadata. If non-zero, the
+metadata is gathered &#8220;quietly&#8221; -- that is, the notes and warnings are
+suppressed.</para>
+
+<tip>
+ <para>If you are processing a large amount of <tag>refentry</tag>
+ content, you may be able to speed up processing significantly by
+ setting a non-zero value for
+ <parameter>refentry.meta.get.quietly</parameter>.</para>
+</tip>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.date.profile">
+<refmeta>
+<refentrytitle>refentry.date.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.date.profile</refname>
+<refpurpose>Specifies profile for refentry "date" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.date.profile.frag">
+&lt;xsl:param name="refentry.date.profile"&gt;
+ (($info[//date])[last()]/date)[1]|
+ (($info[//pubdate])[last()]/pubdate)[1]
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.date.profile</parameter> is a
+string representing an XPath expression. It is evaluated at run-time
+and used only if <parameter>refentry.date.profile.enabled</parameter>
+is non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering
+logic "hard coded" into the stylesheets is used.</para>
+
+<para> The <literal>man(7)</literal> man page describes this content
+as "the date of the last revision". In man pages, it is the content
+that is usually displayed in the center footer.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.date.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.date.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.date.profile.enabled</refname>
+<refpurpose>Enable refentry "date" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.date.profile.enabled.frag">
+&lt;xsl:param name="refentry.date.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.date.profile.enabled</parameter> is non-zero, then
+during <tag>refentry</tag> metadata gathering, the info profile
+specified by the customizable
+<parameter>refentry.date.profile</parameter> parameter is used.</para>
+
+<para>If instead the value of
+<parameter>refentry.date.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "date" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "date" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.date.profile.enabled</parameter> and adjusting the
+value of <parameter>refentry.date.profile</parameter> to cause correct
+data to be gathered. </para>
+
+<para>Note that the terms "source" and "date" have special meanings in
+this context. For details, see the documentation for the
+<parameter>refentry.date.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.manual.profile">
+<refmeta>
+<refentrytitle>refentry.manual.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.profile</refname>
+<refpurpose>Specifies profile for refentry "manual" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.manual.profile.frag">
+&lt;xsl:param name="refentry.manual.profile"&gt;
+ (($info[//title])[last()]/title)[1]|
+ ../title/node()
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.manual.profile</parameter> is
+a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.manual.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>In man pages, this content is usually displayed in the middle of
+the header of the page. The <literal>man(7)</literal> man page
+describes this as "the title of the manual (e.g., <citetitle>Linux
+Programmer's Manual</citetitle>)". Here are some examples from
+existing man pages:
+<itemizedlist>
+ <listitem>
+ <para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+ </listitem>
+</itemizedlist>
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.manual.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.manual.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.profile.enabled</refname>
+<refpurpose>Enable refentry "manual" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.manual.profile.enabled.frag">
+&lt;xsl:param name="refentry.manual.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.manual.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.manual.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.manual.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "manual" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "manual" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.manual.profile.enabled</parameter> and adjusting
+the value of <parameter>refentry.manual.profile</parameter> to cause
+correct data to be gathered. </para>
+
+<para>Note that the term "manual" has a special meanings in this
+context. For details, see the documentation for the
+<parameter>refentry.manual.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.source.name.suppress">
+<refmeta>
+<refentrytitle>refentry.source.name.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.suppress</refname>
+<refpurpose>Suppress "name" part of refentry "source" contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.source.name.suppress.frag">
+&lt;xsl:param name="refentry.source.name.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.source.name.suppress</parameter> is non-zero, then
+during <tag>refentry</tag> metadata gathering, no "source name" data
+is added to the <tag>refentry</tag> "source" contents. Instead (unless
+<parameter>refentry.version.suppress</parameter> is also non-zero),
+only "version" data is added to the "source" contents.</para>
+
+<para>If you find that the <tag>refentry</tag> metadata gathering
+mechanism is causing unwanted "source name" data to show up in your
+output -- for example, in the footer (or possibly header) of a man
+page -- then you might consider setting a non-zero value for
+<parameter>refentry.source.name.suppress</parameter>.</para>
+
+<para>Note that the terms "source", "source name", and "version" have
+special meanings in this context. For details, see the documentation
+for the <parameter>refentry.source.name.profile</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.source.name.profile">
+<refmeta>
+<refentrytitle>refentry.source.name.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.profile</refname>
+<refpurpose>Specifies profile for refentry "source name" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.source.name.profile.frag">
+&lt;xsl:param name="refentry.source.name.profile"&gt;
+ (($info[//productname])[last()]/productname)[1]|
+ (($info[//corpname])[last()]/corpname)[1]|
+ (($info[//corpcredit])[last()]/corpcredit)[1]|
+ (($info[//corpauthor])[last()]/corpauthor)[1]|
+ (($info[//orgname])[last()]/orgname)[1]|
+ (($info[//publishername])[last()]/publishername)[1]
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.source.name.profile</parameter>
+is a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.source.name.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>A "source name" is one part of a (potentially) two-part
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+"source" field. In man pages, it is usually displayed in the left
+footer of the page. It typically indicates the software system or
+product that the item documented in the man page belongs to. The
+<literal>man(7)</literal> man page describes it as "the source of
+the command", and provides the following examples:
+<itemizedlist>
+ <listitem>
+ <para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+ </listitem>
+ <listitem>
+ <para>For system calls, use the version of the kernel that you
+ are currently looking at: Linux 0.99.11.</para>
+ </listitem>
+ <listitem>
+ <para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+ </listitem>
+</itemizedlist>
+</para>
+
+<para>In practice, there are many pages that simply have a Version
+number in the "source" field. So, it looks like what we have is a
+two-part field,
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>,
+where:
+<variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+ <para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+ <para>version number</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+Each part is optional. If the <replaceable>Name</replaceable> is a
+product name, then the <replaceable>Version</replaceable> is probably
+the version of the product. Or there may be no
+<replaceable>Name</replaceable>, in which case, if there is a
+<replaceable>Version</replaceable>, it is probably the version
+of the item itself, not the product it is part of. Or, if the
+<replaceable>Name</replaceable> is an organization name, then there
+probably will be no <replaceable>Version</replaceable>.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.source.name.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.source.name.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.profile.enabled</refname>
+<refpurpose>Enable refentry "source name" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.source.name.profile.enabled.frag">
+&lt;xsl:param name="refentry.source.name.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.source.name.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.source.name.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.source.name.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "source name" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "source name" data to
+show up in your output, then consider setting a non-zero value for
+<parameter>refentry.source.name.profile.enabled</parameter> and
+adjusting the value of
+<parameter>refentry.source.name.profile</parameter> to cause correct
+data to be gathered. </para>
+
+<para>Note that the terms "source" and "source name" have special
+meanings in this context. For details, see the documentation for the
+<parameter>refentry.source.name.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.version.suppress">
+<refmeta>
+<refentrytitle>refentry.version.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.suppress</refname>
+<refpurpose>Suppress "version" part of refentry "source" contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.version.suppress.frag">
+&lt;xsl:param name="refentry.version.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refentry.version.suppress</parameter>
+is non-zero, then during <tag>refentry</tag> metadata gathering, no
+"version" data is added to the <tag>refentry</tag> "source"
+contents. Instead (unless
+<parameter>refentry.source.name.suppress</parameter> is also
+non-zero), only "source name" data is added to the "source"
+contents.</para>
+
+<para>If you find that the <tag>refentry</tag> metadata gathering
+mechanism is causing unwanted "version" data to show up in your output
+-- for example, in the footer (or possibly header) of a man page --
+then you might consider setting a non-zero value for
+<parameter>refentry.version.suppress</parameter>.</para>
+
+<para>Note that the terms "source", "source name", and "version" have
+special meanings in this context. For details, see the documentation
+for the <parameter>refentry.source.name.profile</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.version.profile">
+<refmeta>
+<refentrytitle>refentry.version.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.profile</refname>
+<refpurpose>Specifies profile for refentry "version" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.version.profile.frag">
+&lt;xsl:param name="refentry.version.profile"&gt;
+ (($info[//productnumber])[last()]/productnumber)[1]|
+ (($info[//edition])[last()]/edition)[1]|
+ (($info[//releaseinfo])[last()]/releaseinfo)[1]
+&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.version.profile</parameter> is
+a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.version.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>A "source.name" is one part of a (potentially) two-part
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+"source" field. For more details, see the documentation for the
+<parameter>refentry.source.name.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.version.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.version.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.profile.enabled</refname>
+<refpurpose>Enable refentry "version" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.version.profile.enabled.frag">
+&lt;xsl:param name="refentry.version.profile.enabled"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.version.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.version.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.version.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "version" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "version" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.version.profile.enabled</parameter> and adjusting
+the value of <parameter>refentry.version.profile</parameter> to cause
+correct data to be gathered. </para>
+
+<para>Note that the terms "source" and "version" have special
+meanings in this context. For details, see the documentation for the
+<parameter>refentry.version.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.manual.fallback.profile">
+<refmeta>
+<refentrytitle>refentry.manual.fallback.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.fallback.profile</refname>
+<refpurpose>Specifies profile of "fallback" for refentry "manual" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.manual.fallback.profile.frag">
+&lt;xsl:param name="refentry.manual.fallback.profile"&gt;
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>refentry.manual.fallback.profile</parameter> is a string
+representing an XPath expression. It is evaluated at run-time and
+used only if no "manual" data can be found by other means (that is,
+either using the <tag>refentry</tag> metadata-gathering logic "hard
+coded" in the stylesheets, or the value of
+<parameter>refentry.manual.profile</parameter>, if it is
+enabled).</para>
+
+<important>
+<para>Depending on which XSLT engine you run, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>refentry.manual.fallback.profile</parameter> at
+run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
+XSLT engine that supports <function>dyn:evaluate</function> -- you
+must manually disable fallback processing by setting an empty value
+for the <parameter>refentry.manual.fallback.profile</parameter>
+parameter.</para>
+</important>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="refentry.source.fallback.profile">
+<refmeta>
+<refentrytitle>refentry.source.fallback.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.fallback.profile</refname>
+<refpurpose>Specifies profile of "fallback" for refentry "source" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="refentry.source.fallback.profile.frag">
+&lt;xsl:param name="refentry.source.fallback.profile"&gt;
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>refentry.source.fallback.profile</parameter> is a string
+representing an XPath expression. It is evaluated at run-time and used
+only if no "source" data can be found by other means (that is, either
+using the <tag>refentry</tag> metadata-gathering logic "hard coded" in
+the stylesheets, or the value of the
+<parameter>refentry.source.name.profile</parameter> and
+<parameter>refentry.version.profile</parameter> parameters, if those
+are enabled).</para>
+
+<important>
+<para>Depending on which XSLT engine you run, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>refentry.source.fallback.profile</parameter> at
+run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
+XSLT engine that supports <function>dyn:evaluate</function> -- you
+must manually disable fallback processing by setting an empty value
+for the <parameter>refentry.source.fallback.profile</parameter>
+parameter.</para>
+</important>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="th">
+ <title>Page header/footer</title>
+<refentry version="5.0" xml:id="man.th.extra1.suppress">
+<refmeta>
+<refentrytitle>man.th.extra1.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra1.suppress</refname>
+<refpurpose>Suppress extra1 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.th.extra1.suppress.frag">
+&lt;xsl:param name="man.th.extra1.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra1.suppress</parameter> is
+non-zero, then the <literal>extra1</literal> part of the
+<literal>.TH</literal> title line header/footer is suppressed.</para>
+
+<para>The content of the <literal>extra1</literal> field is almost
+always displayed in the center footer of the page and is, universally,
+a date.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.th.extra2.suppress">
+<refmeta>
+<refentrytitle>man.th.extra2.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra2.suppress</refname>
+<refpurpose>Suppress extra2 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.th.extra2.suppress.frag">
+&lt;xsl:param name="man.th.extra2.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra2.suppress</parameter> is
+non-zero, then the <literal>extra2</literal> part of the
+<literal>.TH</literal> title line header/footer is suppressed.</para>
+
+<para>The content of the <literal>extra2</literal> field is usually
+displayed in the left footer of the page and is typically "source"
+data, often in the form
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>;
+for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal>
+man page).</para>
+
+<note>
+ <para>You can use the
+ <parameter>refentry.source.name.suppress</parameter> and
+ <parameter>refentry.version.suppress</parameter> parameters to
+ independently suppress the <replaceable>Name</replaceable> and
+ <replaceable>Version</replaceable> parts of the
+ <literal>extra2</literal> field.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.th.extra3.suppress">
+<refmeta>
+<refentrytitle>man.th.extra3.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra3.suppress</refname>
+<refpurpose>Suppress extra3 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.th.extra3.suppress.frag">
+&lt;xsl:param name="man.th.extra3.suppress"&gt;0&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra3.suppress</parameter> is
+non-zero, then the <literal>extra3</literal> part of the
+<literal>.TH</literal> title line header/footer is
+suppressed.</para>
+
+<para>The content of the <literal>extra3</literal> field is usually
+displayed in the middle header of the page and is typically a "manual
+name"; for example, "GTK+ User's Manual" (from the
+<literal>gtk-options(7)</literal> man page).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.th.title.max.length">
+<refmeta>
+<refentrytitle>man.th.title.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.title.max.length</refname>
+<refpurpose>Maximum length of title in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.th.title.max.length.frag">
+&lt;xsl:param name="man.th.title.max.length"&gt;20&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the title part of the
+man-page <literal>.TH</literal> title line header/footer. If the title
+exceeds the maxiumum specified, it is truncated down to the maximum
+permitted length.</para>
+
+<refsection><info><title>Details</title></info>
+
+
+<para>Every man page generated using the DocBook stylesheets has a
+title line, specified using the <literal>TH</literal> roff
+macro. Within that title line, there is always, at a minimum, a title,
+followed by a section value (representing a man "section" -- usually
+just a number).</para>
+
+<para>The title and section are displayed, together, in the visible
+header of each page. Where in the header they are displayed depends on
+OS the man page is viewed on, and on what version of nroff/groff/man
+is used for viewing the page. But, at a minimum and across all
+systems, the title and section are displayed on the right-hand column
+of the header. On many systems -- those with a modern groff, including
+Linux systems -- they are displayed twice: both in the left and right
+columns of the header.</para>
+
+<para>So if the length of the title exceeds a certain percentage of
+the column width in which the page is viewed, the left and right
+titles can end up overlapping, making them unreadable, or breaking to
+another line, which doesn't look particularly good.</para>
+
+<para>So the stylesheets provide the
+<parameter>man.th.title.max.length</parameter> parameter as a means
+for truncating titles that exceed the maximum length that can be
+viewing properly in a page header.</para>
+
+<para>The default value is reasonable but somewhat arbitrary. If you
+have pages with long titles, you may want to experiment with changing
+the value in order to achieve the correct aesthetic results.</para>
+</refsection>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.th.extra2.max.length">
+<refmeta>
+<refentrytitle>man.th.extra2.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra2.max.length</refname>
+<refpurpose>Maximum length of extra2 in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.th.extra2.max.length.frag">
+&lt;xsl:param name="man.th.extra2.max.length"&gt;30&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the
+<literal>extra2</literal> part of the man-page part of the
+<literal>.TH</literal> title line header/footer. If the
+<literal>extra2</literal> content exceeds the maxiumum specified, it
+is truncated down to the maximum permitted length.</para>
+
+<para>The content of the <literal>extra2</literal> field is usually
+displayed in the left footer of the page and is typically "source"
+data indicating the software system or product that the item
+documented in the man page belongs to, often in the form
+<replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>;
+for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal>
+man page).</para>
+
+<para>The default value for this parameter is reasonable but somewhat
+arbitrary. If you are processing pages with long "source" information,
+you may want to experiment with changing the value in order to achieve
+the correct aesthetic results.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.th.extra3.max.length">
+<refmeta>
+<refentrytitle>man.th.extra3.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra3.max.length</refname>
+<refpurpose>Maximum length of extra3 in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.th.extra3.max.length.frag">
+&lt;xsl:param name="man.th.extra3.max.length"&gt;30&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the
+<literal>extra3</literal> part of the man-page <literal>.TH</literal>
+title line header/footer. If the <literal>extra3</literal> content
+exceeds the maxiumum specified, it is truncated down to the maximum
+permitted length.</para>
+
+<para>The content of the <literal>extra3</literal> field is usually
+displayed in the middle header of the page and is typically a "manual
+name"; for example, "GTK+ User's Manual" (from the
+<literal>gtk-options(7)</literal> man page).</para>
+
+<para>The default value for this parameter is reasonable but somewhat
+arbitrary. If you are processing pages with long "manual names" -- or
+especially if you are processing pages that have both long "title"
+parts (command/function, etc. names) <emphasis>and</emphasis> long
+manual names -- you may want to experiment with changing the value in
+order to achieve the correct aesthetic results.</para>
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="output">
+ <title>Output</title>
+<refentry version="5.0" xml:id="man.output.manifest.enabled">
+ <refmeta>
+ <refentrytitle>man.output.manifest.enabled</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.output.manifest.enabled</refname>
+ <refpurpose>Generate a manifest file?</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting xml:id="man.output.manifest.enabled.frag">&lt;xsl:param name="man.output.manifest.enabled" select="0"&gt;&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>If non-zero, a list of filenames for man pages generated by
+ the stylesheet transformation is written to the file named by the
+ <parameter>man.output.manifest.filename</parameter> parameter.</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.manifest.filename">
+ <refmeta>
+ <refentrytitle>man.output.manifest.filename</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.output.manifest.filename</refname>
+ <refpurpose>Name of manifest file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <programlisting xml:id="man.output.manifest.filename.frag">&lt;xsl:param name="man.output.manifest.filename"&gt;MAN.MANIFEST&lt;/xsl:param&gt;</programlisting>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>The <parameter>man.output.manifest.filename</parameter> parameter
+ specifies the name of the file to which the manpages manifest file
+ is written (if the value of the
+ <parameter>man.output.manifest.enabled</parameter> parameter is
+ non-zero).</para>
+
+ </refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.in.separate.dir">
+<refmeta>
+<refentrytitle>man.output.in.separate.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.in.separate.dir</refname>
+<refpurpose>Output man-page files in separate output directory?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.output.in.separate.dir.frag">
+&lt;xsl:param name="man.output.in.separate.dir" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <literal>man.output.in.separate.dir</literal>
+parameter is non-zero, man-page files are output in a separate
+directory, specified by the <parameter>man.output.base.dir</parameter>
+parameter; otherwise, if the value of
+<literal>man.output.in.separate.dir</literal> is zero, man-page files
+are not output in a separate directory.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.lang.in.name.enabled">
+<refmeta>
+<refentrytitle>man.output.lang.in.name.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.lang.in.name.enabled</refname>
+<refpurpose>Include $LANG value in man-page filename/pathname?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.output.lang.in.name.enabled.frag">
+&lt;xsl:param name="man.output.lang.in.name.enabled" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+ <para>The <parameter>man.output.lang.in.name.enabled</parameter>
+ parameter specifies whether a <literal>$lang</literal> value is
+ included in man-page filenames and pathnames.</para>
+
+ <para>If the value of
+ <parameter>man.output.lang.in.name.enabled</parameter> is non-zero,
+ man-page files are output with the <literal>$lang</literal> value
+ included in their filenames or pathnames as follows;
+
+ <itemizedlist>
+ <listitem>
+ <para>if <parameter>man.output.subdirs.enabled</parameter> is
+ non-zero, each file is output to, e.g., a
+ <filename>man/<replaceable>$lang</replaceable>/man8/foo.8</filename>
+ pathname</para>
+ </listitem>
+ <listitem>
+ <para>if <parameter>man.output.subdirs.enabled</parameter> is
+ zero, each file is output with a
+ <literal>foo.<replaceable>$lang</replaceable>.8</literal>
+ filename</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.base.dir">
+<refmeta>
+<refentrytitle>man.output.base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.base.dir</refname>
+<refpurpose>Specifies separate output directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.output.base.dir.frag">&lt;xsl:param name="man.output.base.dir"&gt;man/&lt;/xsl:param&gt;</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.output.base.dir</parameter> parameter
+specifies the base directory into which man-page files are output. The
+<parameter>man.output.subdirs.enabled</parameter> parameter controls
+whether the files are output in subdirectories within the base
+directory.</para>
+
+<note>
+ <para>The values of the <parameter>man.output.base.dir</parameter>
+ and <parameter>man.output.subdirs.enabled</parameter> parameters are
+ used only if the value of
+ <parameter>man.output.in.separate.dir</parameter> parameter is
+ non-zero. If the value of the
+ <parameter>man.output.in.separate.dir</parameter> is zero, man-page
+ files are not output in a separate directory.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.subdirs.enabled">
+<refmeta>
+<refentrytitle>man.output.subdirs.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.subdirs.enabled</refname>
+<refpurpose>Output man-page files in subdirectories within base output directory?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.output.subdirs.enabled.frag">
+&lt;xsl:param name="man.output.subdirs.enabled" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.output.subdirs.enabled</parameter> parameter
+controls whether man-pages files are output in subdirectories within
+the base directory specified by the directory specified by the
+<parameter>man.output.base.dir</parameter> parameter.</para>
+
+<note>
+ <para>The values of the <parameter>man.output.base.dir</parameter>
+ and <parameter>man.output.subdirs.enabled</parameter> parameters are
+ used only if the value of
+ <parameter>man.output.in.separate.dir</parameter> parameter is
+ non-zero. If the value of the
+ <parameter>man.output.in.separate.dir</parameter> is zero, man-page
+ files are not output in a separate directory.</para>
+</note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.quietly">
+<refmeta>
+<refentrytitle>man.output.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.quietly</refname>
+<refpurpose>Suppress filename messages emitted when generating output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.output.quietly.frag">
+&lt;xsl:param name="man.output.quietly" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), for each man-page file created, a message
+with the name of the file is emitted. If non-zero, the files are
+output "quietly" -- that is, the filename messages are
+suppressed.</para>
+
+<tip>
+ <para>If you are processing a large amount of <tag>refentry</tag>
+ content, you may be able to speed up processing significantly by
+ setting a non-zero value for
+ <parameter>man.output.quietly</parameter>.</para>
+</tip>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.encoding">
+<refmeta>
+<refentrytitle>man.output.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.encoding</refname>
+<refpurpose>Encoding used for man-page output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.output.encoding.frag">
+&lt;xsl:param name="man.output.encoding"&gt;UTF-8&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the encoding to use for files generated
+by the manpages stylesheet. Not all processors support specification
+of this parameter.</para>
+
+<important>
+ <para>If the value of the <parameter>man.charmap.enabled</parameter>
+ parameter is non-zero (the default), keeping the
+ <parameter>man.output.encoding</parameter> parameter at its default
+ value (<literal>UTF-8</literal>) or setting it to
+ <literal>UTF-16</literal> <emphasis role="bold">does not cause your
+ man pages to be output in raw UTF-8 or UTF-16</emphasis> -- because
+ any Unicode characters for which matches are found in the enabled
+ character map will be replaced with roff escape sequences before the
+ final man-page files are generated.</para>
+
+ <para>So if you want to generate "real" UTF-8 man pages, without any
+ character substitution being performed on your content, you need to
+ set <parameter>man.charmap.enabled</parameter> to zero (which will
+ completely disable character-map processing). </para>
+
+ <para>You may also need to set
+ <parameter>man.charmap.enabled</parameter> to zero if you want to
+ output man pages in an encoding other than <literal>UTF-8</literal>
+ or <literal>UTF-16</literal>. Character-map processing is based on
+ Unicode character values and may not work with other output
+ encodings.</para>
+</important>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.output.better.ps.enabled">
+<refmeta>
+<refentrytitle>man.output.better.ps.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.better.ps.enabled</refname>
+<refpurpose>Enable enhanced print/PostScript output?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<programlisting xml:id="man.output.better.ps.enabled.frag">
+&lt;xsl:param name="man.output.better.ps.enabled"&gt;0&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.output.better.ps.enabled</parameter> parameter is
+non-zero, certain markup is embedded in each generated man page
+such that PostScript output from the <command>man -Tps</command>
+command for that page will include a number of enhancements
+designed to improve the quality of that output.</para>
+
+<para>If <parameter>man.output.better.ps.enabled</parameter> is
+zero (the default), no such markup is embedded in generated man
+pages, and no enhancements are included in the PostScript
+output generated from those man pages by the <command>man
+ -Tps</command> command.</para>
+
+<warning>
+ <para>The enhancements provided by this parameter rely on
+ features that are specific to groff (GNU troff) and that are
+ not part of &#8220;classic&#8221; AT&amp;T troff or any of its
+ derivatives. Therefore, any man pages you generate with this
+ parameter enabled will be readable only on systems on which
+ the groff (GNU troff) program is installed, such as GNU/Linux
+ systems. The pages <emphasis role="bold">will not not be
+ readable on systems on with the classic troff (AT&amp;T
+ troff) command is installed</emphasis>.</para>
+</warning>
+
+<para>The value of this parameter only affects PostScript output
+ generated from the <command>man</command> command. It has no
+ effect on output generated using the FO backend.</para>
+
+<tip>
+ <para>You can generate PostScript output for any man page by
+ running the following command:</para>
+ <programlisting> man <replaceable>FOO</replaceable> -Tps &gt; <replaceable>FOO</replaceable>.ps</programlisting>
+ <para>You can then generate PDF output by running the following
+ command:</para>
+ <programlisting> ps2pdf <replaceable>FOO</replaceable>.ps</programlisting>
+</tip>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <reference xml:id="other">
+ <title>Other</title>
+<refentry version="5.0" xml:id="man.table.footnotes.divider">
+<refmeta>
+<refentrytitle>man.table.footnotes.divider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.table.footnotes.divider</refname>
+<refpurpose>Specifies divider string that appears before table footnotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.table.footnotes.divider.frag">
+&lt;xsl:param name="man.table.footnotes.divider"&gt;----&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In each table that contains footenotes, the string specified by
+the <parameter>man.table.footnotes.divider</parameter> parameter is
+output before the list of footnotes for the table.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.subheading.divider.enabled">
+<refmeta>
+<refentrytitle>man.subheading.divider.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.subheading.divider.enabled</refname>
+<refpurpose>Add divider comment to roff source before/after subheadings?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.subheading.divider.enabled.frag">
+&lt;xsl:param name="man.subheading.divider.enabled"&gt;0&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.subheading.divider.enabled</parameter> parameter is
+non-zero, the contents of the
+<parameter>man.subheading.divider</parameter> parameter are used to
+add a "divider" before and after subheadings in the roff
+output. <emphasis role="bold">The divider is not visisble in the
+rendered man page</emphasis>; it is added as a comment, in the source,
+simply for the purpose of increasing reability of the source.</para>
+
+<para>If <parameter>man.subheading.divider.enabled</parameter> is zero
+(the default), the subheading divider is suppressed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="man.subheading.divider">
+<refmeta>
+<refentrytitle>man.subheading.divider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.subheading.divider</refname>
+<refpurpose>Specifies string to use as divider comment before/after subheadings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="man.subheading.divider.frag">
+&lt;xsl:param name="man.subheading.divider"&gt;========================================================================&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.subheading.divider.enabled</parameter> parameter is
+non-zero, the contents of the
+<parameter>man.subheading.divider</parameter> parameter are used to
+add a "divider" before and after subheadings in the roff
+output. <emphasis role="bold">The divider is not visisble in the
+rendered man page</emphasis>; it is added as a comment, in the source,
+simply for the purpose of increasing reability of the source.</para>
+
+<para>If <parameter>man.subheading.divider.enabled</parameter> is zero
+(the default), the subheading divider is suppressed.</para>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <appendix xml:id="stylesheet">
+ <title>The Stylesheet</title>
+
+ <para>The <filename>param.xsl</filename> stylesheet is just a
+ wrapper around all of these parameters.</para>
+
+ <programlisting xml:id="top">
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="man.authors.section.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.break.after.slash.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.base.url.for.relative.links.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.charmap.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.charmap.subset.profile.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.charmap.subset.profile.english.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.charmap.uri.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.charmap.use.subset.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.copyright.section.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.endnotes.are.numbered.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.endnotes.list.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.endnotes.list.heading.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.font.funcprototype.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.font.funcsynopsisinfo.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.font.links.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.font.table.headings.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.font.table.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.funcsynopsis.style.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.hyphenate.computer.inlines.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.hyphenate.filenames.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.hyphenate.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.hyphenate.urls.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.indent.blurbs.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.indent.lists.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.indent.refsect.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.indent.verbatims.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.indent.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.justify.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.base.dir.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.encoding.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.in.separate.dir.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.lang.in.name.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.manifest.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.manifest.filename.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.better.ps.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.quietly.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.output.subdirs.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.segtitle.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.string.subst.map.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.string.subst.map.local.post.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.string.subst.map.local.pre.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.subheading.divider.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.subheading.divider.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.table.footnotes.divider.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.th.extra1.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.th.extra2.max.length.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.th.extra2.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.th.extra3.max.length.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.th.extra3.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="man.th.title.max.length.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.date.profile.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.date.profile.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.manual.fallback.profile.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.manual.profile.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.manual.profile.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.meta.get.quietly.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.source.fallback.profile.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.source.name.profile.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.source.name.profile.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.source.name.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.version.profile.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.version.profile.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="refentry.version.suppress.frag"&gt;&lt;/src:fragref&gt;
+&lt;/xsl:stylesheet&gt;
+ </programlisting>
+
+ </appendix>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl
new file mode 100644
index 0000000..39d2059
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- This file is generated from param.xweb -->
+
+<!-- ********************************************************************
+ $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="man.authors.section.enabled">1</xsl:param>
+<xsl:param name="man.break.after.slash">0</xsl:param>
+<xsl:param name="man.base.url.for.relative.links">[set $man.base.url.for.relative.links]/</xsl:param>
+<xsl:param name="man.charmap.enabled" select="1"/>
+<xsl:param name="man.charmap.subset.profile">
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ (@*[local-name() = 'class'] = 'symbols' or
+ @*[local-name() = 'class'] = 'letters')
+) or
+@*[local-name() = 'block'] = 'Latin Extended-A'
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+</xsl:param>
+<xsl:param name="man.charmap.subset.profile.english">
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ @*[local-name() = 'class'] = 'symbols')
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+</xsl:param>
+<xsl:param name="man.charmap.uri"/>
+<xsl:param name="man.charmap.use.subset" select="1"/>
+<xsl:param name="man.copyright.section.enabled">1</xsl:param>
+<xsl:param name="man.endnotes.are.numbered">1</xsl:param>
+<xsl:param name="man.endnotes.list.enabled">1</xsl:param>
+<xsl:param name="man.endnotes.list.heading"/>
+ <xsl:param name="man.font.funcprototype">BI</xsl:param>
+ <xsl:param name="man.font.funcsynopsisinfo">B</xsl:param>
+<xsl:param name="man.font.links">B</xsl:param>
+ <xsl:param name="man.font.table.headings">B</xsl:param>
+ <xsl:param name="man.font.table.title">B</xsl:param>
+<xsl:param name="man.funcsynopsis.style">ansi</xsl:param>
+<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param>
+<xsl:param name="man.hyphenate.filenames">0</xsl:param>
+<xsl:param name="man.hyphenate">0</xsl:param>
+<xsl:param name="man.hyphenate.urls">0</xsl:param>
+<xsl:param name="man.indent.blurbs" select="1"/>
+<xsl:param name="man.indent.lists" select="1"/>
+<xsl:param name="man.indent.refsect" select="0"/>
+<xsl:param name="man.indent.verbatims" select="1"/>
+<xsl:param name="man.indent.width">4</xsl:param>
+<xsl:param name="man.justify">0</xsl:param>
+<xsl:param name="man.output.base.dir">man/</xsl:param>
+<xsl:param name="man.output.encoding">UTF-8</xsl:param>
+<xsl:param name="man.output.in.separate.dir" select="0"/>
+<xsl:param name="man.output.lang.in.name.enabled" select="0"/>
+<xsl:param name="man.output.manifest.enabled" select="0"/>
+<xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param>
+<xsl:param name="man.output.better.ps.enabled">0</xsl:param>
+<xsl:param name="man.output.quietly" select="0"/>
+<xsl:param name="man.output.subdirs.enabled" select="1"/>
+<xsl:param name="man.segtitle.suppress" select="0"/>
+<xsl:param name="man.string.subst.map">
+
+ <!-- * remove no-break marker at beginning of line (stylesheet artifact) -->
+ <substitution oldstring="&#9618;&#9600;" newstring="&#9618;"/>
+ <!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space -->
+ <substitution oldstring="&#9600;" newstring="\ "/>
+
+ <!-- ==================================================================== -->
+
+ <!-- * squeeze multiple newlines before a roff request -->
+ <substitution oldstring="&#10;&#10;." newstring="&#10;."/>
+ <!-- * remove any .sp instances that directly precede a .PP -->
+ <substitution oldstring=".sp&#10;.PP" newstring=".PP"/>
+ <!-- * remove any .sp instances that directly follow a .PP -->
+ <substitution oldstring=".sp&#10;.sp" newstring=".sp"/>
+ <!-- * squeeze multiple .sp instances into a single .sp-->
+ <substitution oldstring=".PP&#10;.sp" newstring=".PP"/>
+ <!-- * squeeze multiple newlines after start of no-fill (verbatim) env. -->
+ <substitution oldstring=".nf&#10;&#10;" newstring=".nf&#10;"/>
+ <!-- * squeeze multiple newlines after REstoring margin -->
+ <substitution oldstring=".RE&#10;&#10;" newstring=".RE&#10;"/>
+ <!-- * U+2591 is a marker we add before and after every Parameter in -->
+ <!-- * Funcprototype output -->
+ <substitution oldstring="&#9617;" newstring=" "/>
+ <!-- * U+2592 is a marker we add for the newline before output of <sbr>; -->
+ <substitution oldstring="&#9618;" newstring="&#10;"/>
+ <!-- * -->
+ <!-- * Now deal with some other characters that are added by the -->
+ <!-- * stylesheets during processing. -->
+ <!-- * -->
+ <!-- * bullet -->
+ <substitution oldstring="&#8226;" newstring="\(bu"/>
+ <!-- * left double quote -->
+ <substitution oldstring="&#8220;" newstring="\(lq"/>
+ <!-- * right double quote -->
+ <substitution oldstring="&#8221;" newstring="\(rq"/>
+ <!-- * left single quote -->
+ <substitution oldstring="&#8216;" newstring="\(oq"/>
+ <!-- * right single quote -->
+ <substitution oldstring="&#8217;" newstring="\(cq"/>
+ <!-- * copyright sign -->
+ <substitution oldstring="&#169;" newstring="\(co"/>
+ <!-- * registered sign -->
+ <substitution oldstring="&#174;" newstring="\(rg"/>
+ <!-- * ...servicemark... -->
+ <!-- * There is no groff equivalent for it. -->
+ <substitution oldstring="&#8480;" newstring="(SM)"/>
+ <!-- * ...trademark... -->
+ <!-- * We don't do "\(tm" because for console output, -->
+ <!-- * groff just renders that as "tm"; that is: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Producttm -->
+ <!-- * -->
+ <!-- * So we just make it to "(TM)" instead; thus: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Product(TM) -->
+ <substitution oldstring="&#8482;" newstring="(TM)"/>
+
+</xsl:param>
+<xsl:param name="man.string.subst.map.local.post"/>
+ <xsl:param name="man.string.subst.map.local.pre"/>
+<xsl:param name="man.subheading.divider.enabled">0</xsl:param>
+<xsl:param name="man.subheading.divider">========================================================================</xsl:param>
+<xsl:param name="man.table.footnotes.divider">----</xsl:param>
+<xsl:param name="man.th.extra1.suppress">0</xsl:param>
+<xsl:param name="man.th.extra2.max.length">30</xsl:param>
+<xsl:param name="man.th.extra2.suppress">0</xsl:param>
+<xsl:param name="man.th.extra3.max.length">30</xsl:param>
+<xsl:param name="man.th.extra3.suppress">0</xsl:param>
+<xsl:param name="man.th.title.max.length">20</xsl:param>
+<xsl:param name="refentry.date.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.date.profile">
+ (($info[//date])[last()]/date)[1]|
+ (($info[//pubdate])[last()]/pubdate)[1]
+</xsl:param>
+<xsl:param name="refentry.manual.fallback.profile">
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param>
+<xsl:param name="refentry.manual.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.manual.profile">
+ (($info[//title])[last()]/title)[1]|
+ ../title/node()
+</xsl:param>
+<xsl:param name="refentry.meta.get.quietly" select="0"/>
+<xsl:param name="refentry.source.fallback.profile">
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param>
+<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.source.name.profile">
+ (($info[//productname])[last()]/productname)[1]|
+ (($info[//corpname])[last()]/corpname)[1]|
+ (($info[//corpcredit])[last()]/corpcredit)[1]|
+ (($info[//corpauthor])[last()]/corpauthor)[1]|
+ (($info[//orgname])[last()]/orgname)[1]|
+ (($info[//publishername])[last()]/publishername)[1]
+</xsl:param>
+<xsl:param name="refentry.source.name.suppress">0</xsl:param>
+<xsl:param name="refentry.version.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.version.profile">
+ (($info[//productnumber])[last()]/productnumber)[1]|
+ (($info[//edition])[last()]/edition)[1]|
+ (($info[//releaseinfo])[last()]/releaseinfo)[1]
+</xsl:param>
+<xsl:param name="refentry.version.suppress">0</xsl:param>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml
new file mode 100644
index 0000000..8db98d3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+
+<reference><info><title>manpages Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for manpages output.
+ <note>
+
+<para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+
+ </note>
+ </para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbman_funcsynopsis-style">
+<refnamediv>
+<refname>dbman_funcsynopsis-style</refname>
+<refpurpose>Specifies presentation style for a funcsynopsis.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+
+ <synopsis><tag class="xmlpi">dbman funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Use the <tag class="xmlpi">dbman
+ funcsynopsis-style</tag> PI as a child of a
+ <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+
+<para>Displays the <tag>funcprototype</tag> in K&amp;R style</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+
+<para>Displays the <tag>funcprototype</tag> in ANSI style</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1 role="params"><title>Related Global Parameters</title>
+
+<para><parameter>man.funcsynopsis.style</parameter></para>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl
new file mode 100644
index 0000000..7b0975b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl
@@ -0,0 +1,79 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info><title>manpages Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for manpages output.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific “exceptions†to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<doc:pi name="dbman_funcsynopsis-style" xmlns="">
+ <refpurpose>Specifies presentation style for a funcsynopsis.</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbman
+ funcsynopsis-style</tag> PI as a child of a
+ <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbman funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+ <para>Displays the <tag>funcprototype</tag> in K&amp;R style</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+ <para>Displays the <tag>funcprototype</tag> in ANSI style</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>man.funcsynopsis.style</parameter></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbman_funcsynopsis-style">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbman')"/>
+ <xsl:with-param name="attribute" select="'funcsynopsis-style'"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl
new file mode 100644
index 0000000..41b14c7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="exsl exslt" version="1.0">
+
+ <xsl:import href="../html/docbook.xsl"/>
+ <xsl:import href="../html/manifest.xsl"/>
+ <!-- * html-synop.xsl file is generated by build -->
+ <xsl:import href="html-synop.xsl"/>
+ <xsl:output method="text" encoding="UTF-8" indent="no"/>
+ <!-- ********************************************************************
+ $Id: docbook.xsl 8841 2010-08-14 07:21:25Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <!-- ==================================================================== -->
+
+ <xsl:include href="../common/refentry.xsl"/>
+ <xsl:include href="../common/charmap.xsl"/>
+ <xsl:include href="param.xsl"/>
+ <xsl:include href="utility.xsl"/>
+ <xsl:include href="info.xsl"/>
+ <xsl:include href="other.xsl"/>
+ <xsl:include href="refentry.xsl"/>
+ <xsl:include href="block.xsl"/>
+ <xsl:include href="inline.xsl"/>
+ <xsl:include href="synop.xsl"/>
+ <xsl:include href="lists.xsl"/>
+ <xsl:include href="endnotes.xsl"/>
+ <xsl:include href="table.xsl"/>
+ <xsl:include href="pi.xsl"/>
+
+ <!-- * we rename the following just to avoid using params with "man" -->
+ <!-- * prefixes in the table.xsl stylesheet (because that stylesheet -->
+ <!-- * can potentially be reused for more than just man output) -->
+ <xsl:param name="tbl.font.headings" select="$man.font.table.headings"/>
+ <xsl:param name="tbl.font.title" select="$man.font.table.title"/>
+
+ <xsl:param name="stylesheet.result.type" select="'manpages'"/>
+
+ <!-- ==================================================================== -->
+
+ <xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * when we find a namespaced document, strip the -->
+ <!-- * namespace and then continue processing it. -->
+ <xsl:when test="false()"/>
+ <xsl:when test="//*[local-name() = 'refentry']">
+ <!-- * Check to see if we have any refentry children in this -->
+ <!-- * document; if so, process them. The reason we use -->
+ <!-- * local-name()=refentry (instead of just //refentry) to to -->
+ <!-- * check for refentry children is because this stylsheet is -->
+ <!-- * also post-processed by the stylesheet build to create the -->
+ <!-- * manpages/profile-docbook.xsl, and the refentry child check -->
+ <!-- * in the profile-docbook.xsl stylesheet won't work if we do -->
+ <!-- * a simple //refentry check. -->
+ <xsl:apply-templates select="$profiled-nodes//refentry"/>
+ <!-- * if $man.output.manifest.enabled is non-zero, -->
+ <!-- * generate a manifest file -->
+ <xsl:if test="not($man.output.manifest.enabled = 0)">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="filename">
+ <xsl:choose>
+ <xsl:when test="not($man.output.manifest.filename = '')">
+ <!-- * If a name for the manifest file is specified, -->
+ <!-- * use that name. -->
+ <xsl:value-of select="$man.output.manifest.filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, if user has unset -->
+ <!-- * $man.output.manifest.filename, default to -->
+ <!-- * using "MAN.MANIFEST" as the filename. Because -->
+ <!-- * $man.output.manifest.enabled is non-zero and -->
+ <!-- * so we must have a filename in order to -->
+ <!-- * generate the manifest. -->
+ <xsl:text>MAN.MANIFEST</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, the document does not contain any -->
+ <!-- * refentry elements, so log/emit message and stop. -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Erro</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text> no refentry</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>No refentry elements found</xsl:text>
+ <xsl:if test="$doc.title != ''">
+ <xsl:text> in "</xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($doc.title) &gt; 30">
+ <xsl:value-of select="substring($doc.title,1,30)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$doc.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"</xsl:text>
+ </xsl:if>
+ <xsl:text>.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <xsl:template match="refentry">
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <!-- * Just use the first refname found as the "name" of the man -->
+ <!-- * page (which may different from the "title"...) -->
+ <xsl:variable name="first.refname" select="refnamediv[1]/refname[1]"/>
+
+ <xsl:call-template name="root.messages">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ </xsl:call-template>
+
+ <!-- * Because there are several times when we need to check *info of -->
+ <!-- * each refentry and its ancestors, we get those and store the -->
+ <!-- * data from them as a node-set in memory. -->
+
+ <!-- * Make a node-set with contents of *info -->
+ <xsl:variable name="get.info" select="ancestor-or-self::*/*[substring(local-name(), string-length(local-name()) - 3) = 'info']"/>
+ <xsl:variable name="info" select="exsl:node-set($get.info)"/>
+
+ <!-- * The get.refentry.metadata template is in -->
+ <!-- * ../common/refentry.xsl. It looks for metadata in $info -->
+ <!-- * and in various other places and then puts it into a form -->
+ <!-- * that's easier for us to digest. -->
+ <xsl:variable name="get.refentry.metadata">
+ <xsl:call-template name="get.refentry.metadata">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="prefs" select="$refentry.metadata.prefs"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="refentry.metadata" select="exsl:node-set($get.refentry.metadata)"/>
+
+ <!-- * Assemble the various parts into a complete page, then store into -->
+ <!-- * $manpage.contents so that we can manipluate them further. -->
+ <xsl:variable name="manpage.contents">
+ <!-- * preprocessor invocation (need for legacy AT&T troff use) -->
+ <!-- * this tells troff to pre-process the page through tbl(1) -->
+ <!-- * (groff can figure it out automatically, but AT&T troff can't) -->
+ <xsl:text>'\" t
+</xsl:text>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * top.comment = commented-out section at top of roff source -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="top.comment">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="date" select="$refentry.metadata/date"/>
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="manual" select="$refentry.metadata/manual"/>
+ <xsl:with-param name="source" select="$refentry.metadata/source"/>
+ <xsl:with-param name="refname" select="$first.refname"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * TH.title.line = title line in header/footer of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="TH.title.line">
+ <!-- * .TH TITLE section extra1 extra2 extra3 -->
+ <!-- * -->
+ <!-- * According to the man(7) man page: -->
+ <!-- * -->
+ <!-- * extra1 = date, "the date of the last revision" -->
+ <!-- * extra2 = source, "the source of the command" -->
+ <!-- * extra3 = manual, "the title of the manual -->
+ <!-- * (e.g., Linux Programmer's Manual)" -->
+ <!-- * -->
+ <!-- * So, we end up with: -->
+ <!-- * -->
+ <!-- * .TH TITLE section date source manual -->
+ <!-- * -->
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="extra1" select="$refentry.metadata/date"/>
+ <xsl:with-param name="extra2" select="$refentry.metadata/source"/>
+ <xsl:with-param name="extra3" select="$refentry.metadata/manual"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * (re)define some macros -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="define.portability.macros"/>
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:call-template name="define.macros"/>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Set default hyphenation, justification, indentation, and -->
+ <!-- * line-breaking -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="set.default.formatting"/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Main body of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:text>.\" -----------------------------------------------------------------
+</xsl:text>
+ <xsl:text>.\" * MAIN CONTENT STARTS HERE *
+</xsl:text>
+ <xsl:text>.\" -----------------------------------------------------------------
+</xsl:text>
+ <xsl:apply-templates/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * AUTHOR section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.authors.section.enabled = 0)">
+ <xsl:call-template name="author.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * COPYRIGHT section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.copyright.section.enabled = 0)">
+ <xsl:call-template name="copyright.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * NOTES list (only if user wants endnotes numbered and/or listed) -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="$man.endnotes.list.enabled != 0 or $man.endnotes.are.numbered != 0">
+ <xsl:call-template name="endnotes.list"/>
+ </xsl:if>
+ </xsl:variable> <!-- * end of manpage.contents -->
+
+ <!-- * Prepare the page contents for final output, then store in -->
+ <!-- * $manpage.contents.prepared so the we can pass it on to the -->
+ <!-- * write.text.chunk() function -->
+ <xsl:variable name="manpage.contents.prepared">
+ <!-- * "Preparing" the page contents involves, at a minimum, -->
+ <!-- * doubling any backslashes found (so they aren't interpreted -->
+ <!-- * as roff escapes). -->
+ <!-- * -->
+ <!-- * If $charmap.enabled is true, "preparing" the page contents also -->
+ <!-- * involves applying a character map to convert Unicode symbols and -->
+ <!-- * special characters into corresponding roff escape sequences. -->
+ <xsl:call-template name="prepare.manpage.contents">
+ <xsl:with-param name="content" select="$manpage.contents"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- * Write the prepared page contents to disk to create -->
+ <!-- * the final man page. -->
+ <xsl:call-template name="write.man.file">
+ <xsl:with-param name="name" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="content" select="$manpage.contents.prepared"/>
+ </xsl:call-template>
+
+ <!-- * Generate "stub" (alias) pages (if any needed) -->
+ <xsl:call-template name="write.stubs">
+ <xsl:with-param name="first.refname" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl
new file mode 100644
index 0000000..4f6b5af
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl
@@ -0,0 +1,319 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 8235 2009-02-09 16:22:14Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+ <xsl:template match="refnamediv">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- * No title on secondary refnamedivs! -->
+ <!-- * Just put a single line break instead -->
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="make.subheading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="subheading.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="mark.subheading"/>
+ <!-- * if we have multiple Refname instances, separate the names -->
+ <!-- * with commas -->
+ <xsl:for-each select="refname">
+ <xsl:if test="position()>1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="string.subst">
+ <!-- * To create the name(s) for this man page, replace any -->
+ <!-- * spaces in the refname(s) with underscores. This ensures -->
+ <!-- * that tools like lexgrog(1) will be able to parse the name -->
+ <!-- * (lexgrog won’t parse names that contain spaces). -->
+ <xsl:with-param name="string" select="."/>
+ <xsl:with-param name="target" select="' '"/>
+ <xsl:with-param name="replacement" select="'_'"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <!-- * The man(7) man pages says: -->
+ <!-- * -->
+ <!-- * The only required heading is NAME, which should be the -->
+ <!-- * first section and be followed on the next line by a one -->
+ <!-- * line description of the program: -->
+ <!-- * -->
+ <!-- * .SH NAME chess \- the game of chess -->
+ <!-- * -->
+ <!-- * It is extremely important that this format is followed, -->
+ <!-- * and that there is a backslash before the single dash -->
+ <!-- * which follows the command name. This syntax is used by -->
+ <!-- * the makewhatis(8) program to create a database of short -->
+ <!-- * command descriptions for the whatis(1) and apropos(1) -->
+ <!-- * commands. -->
+ <!-- * -->
+ <xsl:if test="refpurpose/node()">
+ <xsl:text> \- </xsl:text>
+ <xsl:variable name="refpurpose">
+ <xsl:apply-templates select="refpurpose/node()"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($refpurpose)"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="refsynopsisdiv">
+ <xsl:call-template name="make.subheading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="subheading.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="refsect1|refentry/refsection">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="subheading.markup"/>
+ </xsl:variable>
+ <xsl:call-template name="make.subheading">
+ <xsl:with-param name="title">
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="refsect2|refentry/refsection/refsection">
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:variable name="title">
+ <xsl:apply-templates
+ select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]/node()"/>
+ </xsl:variable>
+ <xsl:text>.SS "</xsl:text>
+ <xsl:value-of select="normalize-space($title)"/>
+ <xsl:text>"&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:choose>
+ <!-- * If default-indentation adjustment is on, then indent the -->
+ <!-- * child content of this Refsect2 -->
+ <xsl:when test="not($man.indent.refsect = 0)">
+ <xsl:text>.RS&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * If default-indentation adjustment is on, then do not -->
+ <!-- * indent the child content of this Refsect2, because -->
+ <!-- * the title is already "sticking out to the left" -->
+ <!-- * (as the groff_man(7) man page describes it), which -->
+ <!-- * actually means the title is indented by the value of -->
+ <!-- * the SN register, which appears by default to be -->
+ <!-- * about half of the default indentation value -->
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="refsect3|refentry/refsection/refsection/refsection">
+ <xsl:variable name="title">
+ <xsl:value-of select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * If default-indentation adjustment is on, then indent the -->
+ <!-- * child content of this Refsect3 or Refsection. -->
+ <xsl:when test="not($man.indent.refsect != 0)">
+ <xsl:call-template name="nested-section-title"/>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($man.indent.width = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$man.indent.width"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * If default-indentation adjustment is on, then do not -->
+ <!-- * indent the child content of this Refsect2, because -->
+ <!-- * the title is already "sticking out to the left" -->
+ <!-- * (as the groff_man(7) man page describes it), which -->
+ <!-- * actually means the title is indented by the value of -->
+ <!-- * the SN register, which appears by default to be -->
+ <!-- * about half of the default indentation value -->
+ <xsl:text>.ti (\n(SNu * 5u / 3u)&#10;</xsl:text>
+ <xsl:call-template name="nested-section-title"/>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="refsection">
+ <!-- * This template is used for a nested Refsection that is -->
+ <!-- * is a child of a Refsect3-level section (The numberd -->
+ <!-- * Refsect hierarchy in DocBook ends with Refsect3, so -->
+ <!-- * there is not actually a Refsect4 element.) -->
+ <xsl:variable name="title">
+ <xsl:value-of select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]"/>
+ </xsl:variable>
+ <xsl:variable name="indent-width">
+ <xsl:if test="not($man.indent.refsect = 0)">
+ <!-- * If default-indentation adjustment is on, then indent the -->
+ <!-- * child content of this Refsect3 or Refsection. -->
+ <xsl:text>(\n(SNu)&#10;</xsl:text>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:call-template name="nested-section-title"/>
+ <xsl:text>.RS (\n(SNu)&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:template>
+
+ <!-- ==================================================================== -->
+
+ <xsl:template match="refsect1|refentry/refsection"
+ mode="subheading.markup">
+ <xsl:variable name="title" select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]"/>
+ <xsl:apply-templates select="$title" mode="title.markup"/>
+ </xsl:template>
+
+ <xsl:template match="refsect1|refentry/refsection"
+ mode="title.markup">
+ <!-- * Note: This template is used just for generating the text for -->
+ <!-- * cross-references to Refsect1 or top-level Refsection instances. -->
+ <xsl:variable name="title" select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]"/>
+ <xsl:call-template name="process.SH.xref">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$title" mode="title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- * Output of Titles from Xref with Endterm needs to be handled -->
+ <!-- * separately from output for Endterm-less Xref -->
+ <xsl:template match="refsect1/title
+ |refentry/refsection/title
+ |refsynopsisdiv/title"
+ mode="endterm">
+ <xsl:call-template name="process.SH.xref">
+ <xsl:with-param name="title">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="refsynopsisdiv" mode="subheading.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title">
+ <xsl:call-template name="get.refsynopsisdiv.title">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$title"/>
+ </xsl:template>
+
+ <xsl:template match="refsynopsisdiv" mode="title.markup">
+ <!-- * Note: This template is used just for generating the text for -->
+ <!-- * cross-references to Refsynopsisdiv instances. -->
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title">
+ <xsl:call-template name="get.refsynopsisdiv.title">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="process.SH.xref">
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="get.refsynopsisdiv.title">
+ <xsl:param name="allow-anchors"/>
+ <xsl:choose>
+ <xsl:when test="info/title
+ |refsynopsisdivinfo/title
+ |title">
+ <xsl:apply-templates
+ select="(info/title
+ |refsynopsisdivinfo/title
+ |title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="refnamediv" mode="subheading.markup">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="refnamediv" mode="title.markup">
+ <xsl:call-template name="process.SH.xref">
+ <xsl:with-param name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="refnamediv" mode="xref-to">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:template>
+
+ <!-- * suppress any title we don't otherwise process elsewhere -->
+ <xsl:template match="title"/>
+
+ <!-- ==================================================================== -->
+
+ <xsl:template name="process.SH.xref">
+ <xsl:param name="title"/>
+ <xsl:choose>
+ <xsl:when test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>\c</xsl:text>
+ <xsl:text>&#x2592;</xsl:text>
+ <xsl:text>.SH-xref </xsl:text>
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$title"/>
+ <xsl:text>\c"</xsl:text>
+ <xsl:text>&#x2592;</xsl:text>
+ <xsl:text>\&amp;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string" select="$title"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl
new file mode 100644
index 0000000..2e0b14e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl
@@ -0,0 +1,432 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: synop.xsl 7956 2008-03-27 12:07:43Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="arg.or.sep"> |</xsl:variable>
+
+<!-- * Note: If you're looking for the *Synopsis* element, you won't -->
+<!-- * find any code here for handling it. It's a "verbatim" -->
+<!-- * environment; see the block.xsl file instead. -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>&#x2580;</xsl:text>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * If we have a group of Synopfragments, we only want to output a -->
+ <!-- * line of space before the first; so when we find a Synopfragment -->
+ <!-- * which has another Synopfragment as a following sibling, we use-->
+ <!-- * the pinch-together template to close up the line of space -->
+ <!-- * that would otherwise be generated by the .HP macro -->
+ <xsl:if test="following-sibling::*[self::synopfragment]">
+ <xsl:call-template name="pinch.together"/>
+ </xsl:if>
+ <xsl:text>.HP </xsl:text>
+ <xsl:text>\w'</xsl:text>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>\ 'u</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>\ </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="position()>1 and
+ not(preceding-sibling::*[1][self::sbr])"
+ ><xsl:value-of select="$sepchar"/></xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <!-- * do nothing -->
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:variable name="arg">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'arg' and not(ancestor::arg)">
+ <!-- * Prevent arg contents from getting wrapped and broken up -->
+ <xsl:variable name="arg.wrapper">
+ <Arg><xsl:value-of select="normalize-space($arg)"/></Arg>
+ </xsl:variable>
+ <xsl:apply-templates mode="prevent.line.breaking"
+ select="exsl:node-set($arg.wrapper)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:if test='arg'>
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="position()>1"><xsl:value-of select="$arg.or.sep"/></xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <xsl:text>&#x2592;</xsl:text>
+ <xsl:text>.br&#x2592;</xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis">
+ <!-- * if justification is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad l&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy 0&#10;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="synopsis-block-start"/>
+ <xsl:text>.HP </xsl:text>
+ <xsl:text>\w'</xsl:text>
+ <xsl:variable name="command">
+ <xsl:apply-templates select="command"/>
+ </xsl:variable>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="normalize-space($command)"/>
+ <xsl:with-param name="target" select="' '"/>
+ <xsl:with-param name="replacement" select="'\ '"/>
+ </xsl:call-template>
+ <xsl:text>\ 'u</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="synopsis-block-end"/>
+ <!-- * if justification is enabled by default, turn it back on -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it back on -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- * Funcsynopis hierarchy starts here -->
+<!-- ==================================================================== -->
+
+<!-- * Note: If you're looking for the *Funcsynopsisinfo* element, -->
+<!-- * you won't find any code here for handling it. It's a "verbatim" -->
+<!-- * environment; see the block.xsl file instead. -->
+
+<!-- * Within funcsynopis output, disable hyphenation, and use -->
+<!-- * left-aligned filling for the duration of the synopsis, so that -->
+<!-- * line breaks only occur between separate paramdefs. -->
+<xsl:template match="funcsynopsis">
+ <!-- * if justification is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad l&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy 0&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <!-- * if justification is enabled by default, turn it back on -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it back on -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- * In HTML output, placing a dbfunclist PI as a child of a particular -->
+<!-- * element creates a hyperlinked list of all funcsynopsis instances -->
+<!-- * that are descendants of that element. But we can’t really do this -->
+<!-- * kind of hyperlinked list in manpages output, so we just need to -->
+<!-- * suppress it instead. -->
+<xsl:template match="processing-instruction('dbfunclist')"/>
+
+<!-- * ***************************************************************** -->
+<!-- * Note about boldface in funcprototype output -->
+<!-- * ***************************************************************** -->
+<!-- * All funcprototype content is by default rendered in bold, -->
+<!-- * because the old man(7) man page, now man-pages(7) says this: -->
+<!-- * -->
+<!-- * For functions, the arguments are always specified using -->
+<!-- * italics, even in the SYNOPSIS section, where the rest of -->
+<!-- * the function is specified in bold -->
+<!-- * -->
+<!-- * Look through the contents of the man/man2 and man3 directories -->
+<!-- * on your system, and you'll see that most existing pages do follow -->
+<!-- * this "bold everything in function synopsis" rule. -->
+<!-- * -->
+<!-- * Users who don't want the bold output can choose to adjust the -->
+<!-- * man.font.funcprototype parameter on their own. So even if you -->
+<!-- * don't personally like the way it looks, please don't change the -->
+<!-- * default to be non-bold - because it's a convention that's -->
+<!-- * followed is the vast majority of existing man pages that document -->
+<!-- * functions, and we need to follow it by default, like it or no. -->
+<!-- * ***************************************************************** -->
+
+<xsl:template match="funcprototype">
+ <xsl:variable name="man-funcprototype-style">
+ <xsl:call-template name="pi.dbman_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="not($man-funcprototype-style = '')">
+ <xsl:value-of select="$man-funcprototype-style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$man.funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="funcprototype.string.value">
+ <xsl:value-of select="funcdef"/>
+ </xsl:variable>
+ <xsl:variable name="funcprototype">
+ <xsl:apply-templates select="funcdef"/>
+ </xsl:variable>
+ <xsl:call-template name="synopsis-block-start"/>
+ <xsl:text>.HP </xsl:text>
+ <xsl:text>\w'</xsl:text>
+ <xsl:variable name="funcdef">
+ <xsl:apply-templates select="funcdef"/>
+ </xsl:variable>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="normalize-space($funcdef)"/>
+ <xsl:with-param name="target" select="' '"/>
+ <xsl:with-param name="replacement" select="'\ '"/>
+ </xsl:call-template>
+ <xsl:text>('u</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$man.font.funcprototype"/>
+ <xsl:text> </xsl:text>
+ <!-- * The following quotation mark (and the one further below) are -->
+ <!-- * needed to properly delimit the parts of the Funcprototype that -->
+ <!-- * should be rendered in the prevailing font (either Bold or Roman) -->
+ <!-- * from Parameter output that needs to be alternately rendered in -->
+ <!-- * italic. -->
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="normalize-space($funcprototype)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($style = 'ansi')">
+ <xsl:apply-templates select="*[local-name() != 'funcdef']" mode="kr"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[local-name() != 'funcdef']" mode="ansi"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="paramdef and not($style = 'ansi')">
+ <!-- * if we have any paramdef instances in this funcprototype and -->
+ <!-- * the user has chosen K&R style output (by specifying some style -->
+ <!-- * value other than the default 'ansi'), then we need to generate -->
+ <!-- * the separate list of param definitions for this funcprototype -->
+ <!-- * -->
+ <!-- * we put a blank line after the prototype and before the list, -->
+ <!-- * and we indent the list by whatever width $list-indent is set -->
+ <!-- * to (4 spaces by default) -->
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="paramdef" mode="kr-paramdef-list"/>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="synopsis-block-end"/>
+</xsl:template>
+
+<xsl:template match="funcdef">
+ <xsl:apply-templates mode="prevent.line.breaking"/>
+</xsl:template>
+
+<xsl:template match="funcdef/function">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="void" mode="kr">
+ <xsl:text>);</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr">
+ <xsl:text>...);</xsl:text>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi">
+ <xsl:text>void);</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi">
+ <xsl:text>...);</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr">
+ <!-- * in K&R-style output, the prototype just contains the parameter -->
+ <!-- * names - because the parameter definitions for each parameter -->
+ <!-- * (including the type information) are displayed in a separate -->
+ <!-- * list following the prototype; so in this mode (which is for the -->
+ <!-- * prototype, not the separate list), we first just want to grab -->
+ <!-- * the parameter for each paramdef -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="parameter"/>
+ </xsl:variable>
+ <xsl:apply-templates mode="prevent.line.breaking" select="exsl:node-set($contents)"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>);</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi">
+ <!-- * in ANSI-style output, the prototype contains the complete -->
+ <!-- * parameter definitions for each parameter (there is no separate -->
+ <!-- * list of parameter definitions like the one for K&R style -->
+ <xsl:apply-templates mode="prevent.line.breaking" select="."/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>);</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-paramdef-list">
+ <!-- * this mode is for generating the separate list of parameter -->
+ <!-- * definitions in K&R-style output -->
+ <xsl:text>.br&#10;</xsl:text>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$man.font.funcprototype"/>
+ <xsl:text> </xsl:text>
+ <!-- * The following quotation mark (and the one further below) are -->
+ <!-- * needed to properly delimit the parts of the Funcprototype that -->
+ <!-- * should be rendered in the prevailing font (either Bold or Roman) -->
+ <!-- * from Parameter output that needs to be alternately rendered in -->
+ <!-- * italic. -->
+ <xsl:text>"</xsl:text>
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>;</xsl:text>
+ <xsl:text>"</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter">
+ <!-- * We use U+2591 here in place of a normal space, because if we -->
+ <!-- * were to just use a normal space, it would get replaced with a -->
+ <!-- * non-breaking space when we run the whole Paramdef through the -->
+ <!-- * prevent.line.breaking template. And as far as why we're -->
+ <!-- * inserting the space and quotation marks around each Parameter -->
+ <!-- * to begin with, the reason is that we need to because we are -->
+ <!-- * outputting Funcsynopsis in either the "BI" or "RI" font, and -->
+ <!-- * the space and quotation marks delimit the text as the -->
+ <!-- * "alternate" or "I" text that needs to be rendered in italic. -->
+ <xsl:text>"&#x2591;"</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>"&#x2591;"</xsl:text>
+</xsl:template>
+
+<xsl:template match="funcparams">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl
new file mode 100644
index 0000000..3d95051
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl
@@ -0,0 +1,633 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+ <!-- ********************************************************************
+ $Id: table.xsl 8400 2009-04-08 07:44:54Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+ <!--
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
+ <xsl:param name="tbl.font.title">B</xsl:param>
+ <xsl:param name="tbl.font.headings">B</xsl:param>
+ -->
+ <xsl:param name="tbl.running.header.from.thead" select="0"/>
+ <xsl:param name="tbl.column.separator.char">:</xsl:param>
+
+ <!-- ==================================================================== -->
+
+ <!-- * This stylesheet transforms DocBook and HTML table source into -->
+ <!-- * tbl(1) markup. -->
+ <!-- * -->
+ <!-- * For details on tbl(1) and its markup syntaxt, see M. E. Lesk,-->
+ <!-- * "Tbl - A Program to Format Tables": -->
+ <!-- * -->
+ <!-- * http://cm.bell-labs.com/7thEdMan/vol2/tbl -->
+ <!-- * http://cm.bell-labs.com/cm/cs/doc/76/tbl.ps.gz -->
+ <!-- * http://www.snake.net/software/troffcvt/tbl.html -->
+
+ <xsl:template match="table|informaltable" mode="to.tbl">
+ <!--* the "source" param is an optional param; it can be any -->
+ <!--* string you want to use that gives some indication of the -->
+ <!--* source context for a table; it gets passed down to the named -->
+ <!--* templates that do the actual table processing; this -->
+ <!--* stylesheet currently uses the "source" information for -->
+ <!--* logging purposes -->
+ <xsl:param name="source"/>
+ <xsl:param name="title">
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:if>
+ </xsl:param>
+ <!-- * ============================================================== -->
+ <!-- * Set global table parameters -->
+ <!-- * ============================================================== -->
+ <!-- * First, set a few parameters based on attributes specified in -->
+ <!-- * the table source. -->
+ <xsl:param name="allbox">
+ <xsl:if test="not(@frame = 'none') and not(@border = '0')">
+ <!-- * By default, put a box around table and between all cells, -->
+ <!-- * unless frame="none" or border="0" -->
+ <xsl:text>allbox </xsl:text>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="center">
+ <!-- * If align="center", center the table. Otherwise, tbl(1) -->
+ <!-- * left-aligns it by default; note that there is no support -->
+ <!-- * in tbl(1) for specifying right alignment. -->
+ <xsl:if test="@align = 'center' or tgroup/@align = 'center'">
+ <xsl:text>center </xsl:text>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="expand">
+ <!-- * If pgwide="1" or width="100%", then "expand" the table by -->
+ <!-- * making it "as wide as the current line length" (to quote -->
+ <!-- * the tbl(1) guide). -->
+ <xsl:if test="@pgwide = '1' or @width = '100%'">
+ <xsl:text>expand </xsl:text>
+ </xsl:if>
+ </xsl:param>
+
+ <!-- * ============================================================== -->
+ <!-- * Convert table to HTML -->
+ <!-- * ============================================================== -->
+ <!-- * Process the table by applying the HTML templates from the -->
+ <!-- * DocBook XSL stylesheets to the whole thing; because we don't -->
+ <!-- * override any of the <row>, <entry>, <tr>, <td>, etc. templates, -->
+ <!-- * the templates in the HTML stylesheets (which we import) are -->
+ <!-- * used to process those. -->
+ <xsl:param name="html-table-output">
+ <xsl:choose>
+ <xsl:when test=".//tr">
+ <!-- * If this table has a TR child, it means that it's an -->
+ <!-- * HTML table in the DocBook source, instead of a CALS -->
+ <!-- * table. So we just copy it as-is, while wrapping it -->
+ <!-- * in an element with same name as its original parent. -->
+ <xsl:for-each select="descendant-or-self::table|descendant-or-self::informaltable">
+ <xsl:element name="{local-name(..)}">
+ <table>
+ <xsl:copy-of select="*"/>
+ </table>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, this is a CALS table in the DocBook source, -->
+ <!-- * so we need to apply the templates in the HTML -->
+ <!-- * stylesheets to transform it into HTML before we do -->
+ <!-- * any further processing of it. -->
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="contents" select="exsl:node-set($html-table-output)"/>
+
+ <!-- ==================================================================== -->
+ <!-- * Output the table -->
+ <!-- ==================================================================== -->
+ <!-- * -->
+ <!-- * This is the "driver" part of the code; it calls a series of named
+ * templates (further below) to generate the actual tbl(1) markup, -->
+ <!-- * including the optional "options line", required "format section", -->
+ <!-- * and then the actual contents of the table. -->
+ <!-- * -->
+ <!-- ==================================================================== -->
+
+ <xsl:for-each select="$contents//table">
+ <!-- * ============================================================== -->
+ <!-- * Output table title -->
+ <!-- * ============================================================== -->
+ <xsl:if test="$title != '' or parent::td">
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:call-template name="pinch.together"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$tbl.font.title"/>
+ <xsl:text> </xsl:text>
+ <xsl:if test="parent::td">
+ <xsl:text>*[nested&#x2580;table]</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="normalize-space($title)"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <!-- * mark the start of the table -->
+ <!-- * "TS" = "table start" -->
+ <xsl:text>.TS</xsl:text>
+ <xsl:if test="thead and $tbl.running.header.from.thead">
+ <!-- * H = "has header" -->
+ <xsl:text> H</xsl:text>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * ============================================================== -->
+ <!-- * Output "options line" -->
+ <!-- * ============================================================== -->
+ <xsl:variable name="options-line">
+ <xsl:value-of select="$allbox"/>
+ <xsl:value-of select="$center"/>
+ <xsl:value-of select="$expand"/>
+ <xsl:text>tab(</xsl:text>
+ <xsl:value-of select="$tbl.column.separator.char"/>
+ <xsl:text>)</xsl:text>
+ </xsl:variable>
+ <xsl:if test="normalize-space($options-line) != ''">
+ <xsl:value-of select="normalize-space($options-line)"/>
+ <xsl:text>;&#10;</xsl:text>
+ </xsl:if>
+
+ <!-- * ============================================================== -->
+ <!-- * Output table header rows -->
+ <!-- * ============================================================== -->
+ <xsl:if test="thead">
+ <xsl:call-template name="output.rows">
+ <xsl:with-param name="rows" select="thead/tr"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * mark the end of table-header rows -->
+ <xsl:choose>
+ <xsl:when test="$tbl.running.header.from.thead">
+ <!-- * "TH" = "table header end" -->
+ <xsl:text>.TH&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * "T&" = "table continuation" and is meant just as a kind -->
+ <!-- * of convenience macro and is sorta equivalent to a "TE" -->
+ <!-- * (table end) followed immediately by a "TS" (table start); -->
+ <!-- * in this case, it marks the end of a table "subsection" -->
+ <!-- * with header rows, and the start of a subsection with body -->
+ <!-- * rows. It's necessary to output it here because the "TH" -->
+ <!-- * macro is not being output, so there's otherwise no way -->
+ <!-- * for tbl(1) to know we have the table "sectioned". -->
+ <xsl:text>.T&amp;&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- * ============================================================== -->
+ <!-- * Output table body rows -->
+ <!-- * ============================================================== -->
+ <!-- * First create node set with all non-thead rows (tbody+tfoot), -->
+ <!-- * but reordered with the tfoot rows at the end of the node set -->
+ <xsl:variable name="rows-set">
+ <xsl:copy-of select="tbody/tr|tr"/>
+ <xsl:copy-of select="tfoot/tr"/>
+ </xsl:variable>
+ <xsl:call-template name="output.rows">
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="rows" select="exsl:node-set($rows-set)"/>
+ </xsl:call-template>
+
+ <!-- * mark the end of the table -->
+ <xsl:text>&#10;</xsl:text>
+ <!-- * .TE = "Table End" -->
+ <xsl:text>.TE&#10;</xsl:text>
+ <!-- * put a blank line of space below the table -->
+ <xsl:text>.sp 1&#10;</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- ==================================================================== -->
+ <!-- * named templates -->
+ <!-- ==================================================================== -->
+ <!-- * -->
+ <!-- * All of the following are named templates that get called directly -->
+ <!-- * or indirectly by the main "driver" part of the code (above) -->
+ <!-- * -->
+ <!-- ==================================================================== -->
+
+ <xsl:template name="output.rows">
+ <xsl:param name="source"/>
+ <xsl:param name="rows"/>
+ <!-- * ============================================================== -->
+ <!-- * Flatten row set into simple list of cells -->
+ <!-- * ============================================================== -->
+ <!-- * Now we flatten the structure further into just a set of -->
+ <!-- * cells without the row parents. This basically creates a -->
+ <!-- * copy of the entire contents of the original table, but -->
+ <!-- * restructured in such a way that we can more easily generate -->
+ <!-- * the corresponding tbl(1) markup we need to output. -->
+ <xsl:variable name="cells-list">
+ <xsl:call-template name="build.cell.list">
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="cells" select="exsl:node-set($cells-list)"/>
+
+ <!-- * Output the table "format section", which tells tbl(1) how to -->
+ <!-- * format each row and column -->
+ <xsl:call-template name="create.table.format">
+ <xsl:with-param name="cells" select="$cells"/>
+ </xsl:call-template>
+
+ <!--* Output the formatted contents of each cell. -->
+ <xsl:for-each select="$cells/cell">
+ <xsl:call-template name="output.cell"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Output the tbl(1)-formatted contents of each cell. -->
+ <!-- * ============================================================== -->
+ <xsl:template name="output.cell">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::cell[1]/@row != @row or
+ not(preceding-sibling::cell)">
+ <!-- * If the value of the "row" attribute on this cell is -->
+ <!-- * different from the value of that on the previous cell, it -->
+ <!-- * means we have a new row. So output a line break (as long -->
+ <!-- * as this isn't the first cell in the table) -->
+ <xsl:text>&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise we are not at the start of a new row, so we -->
+ <!-- * output a tab character to delimit the contents of this -->
+ <!-- * cell from the contents of the next one. -->
+ <xsl:value-of select="$tbl.column.separator.char"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="@type = '^'">
+ <!-- * If this is a dummy cell resulting from the presence of -->
+ <!-- * rowpan attribute in the source, it has no contents, so -->
+ <!-- * we need to handle it differently. -->
+ <xsl:if test="@colspan and @colspan > 1">
+ <!-- * If there is a colspan attribute on this dummy row, then -->
+ <!-- * we need to output a tab character for each column that -->
+ <!-- * it spans. -->
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="$tbl.column.separator.char"/>
+ <xsl:with-param name="count">
+ <xsl:value-of select="@colspan - 1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, we have a "real" cell (not a dummy one) with -->
+ <!-- * contents that we need to output, -->
+ <!-- * -->
+ <!-- * The "T{" and "T}" stuff are delimiters to tell tbl(1) that -->
+ <!-- * the delimited contents are "text blocks" that roff -->
+ <!-- * needs to process -->
+ <xsl:text>T{&#10;</xsl:text>
+ <xsl:copy-of select="."/>
+ <xsl:text>&#10;T}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Build a restructured "cell list" copy of the entire table -->
+ <!-- * ============================================================== -->
+ <xsl:template name="build.cell.list">
+ <xsl:param name="source"/>
+ <xsl:param name="rows"/>
+ <xsl:param name="cell-data-unsorted">
+ <!-- * This param collects all the "real" cells from the table, -->
+ <!-- * along with "dummy" rows that we generate for keeping -->
+ <!-- * track of Rowspan instances. -->
+ <xsl:apply-templates select="$rows" mode="cell.list">
+ <xsl:with-param name="source" select="$source"/>
+ </xsl:apply-templates>
+ </xsl:param>
+ <xsl:param name="cell-data-sorted">
+ <!-- * Sort the cells so that the dummy cells get put where we -->
+ <!-- * need them in the structure. Note that we need to specify -->
+ <!-- * data-type="number" here because the default sorting method -->
+ <!-- * for xsl:sort is "text" (alphabetical). -->
+ <xsl:for-each select="exsl:node-set($cell-data-unsorted)/cell">
+ <xsl:sort select="@row" data-type="number"/>
+ <xsl:sort select="@slot" data-type="number"/>
+ <xsl:copy-of select="."/>
+ </xsl:for-each>
+ </xsl:param>
+ <!-- * Return the sorted cell list -->
+ <xsl:copy-of select="$cell-data-sorted"/>
+ </xsl:template>
+
+ <xsl:template match="tr" mode="cell.list">
+ <xsl:param name="source"/>
+ <xsl:variable name="row">
+ <xsl:value-of select="count(preceding-sibling::tr) + 1"/>
+ </xsl:variable>
+ <xsl:for-each select="td|th">
+ <xsl:call-template name="cell">
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="row" select="$row"/>
+ <!-- * pass on the element name so we can select the appropriate -->
+ <!-- * roff font for styling the cell contents -->
+ <xsl:with-param name="class" select="name(.)"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="cell">
+ <xsl:param name="source"/>
+ <xsl:param name="row"/>
+ <xsl:param name="class"/>
+ <xsl:param name="slot">
+ <!-- * The "slot" is the horizontal position of this cell (usually -->
+ <!-- * just the same as its column, but not so when it is preceded -->
+ <!-- * by cells that have colspans or cells in preceding rows that -->
+ <!-- * that have rowspans). -->
+ <xsl:value-of select="position()"/>
+ </xsl:param>
+ <!-- * For each real TD cell, create a Cell instance; contents will -->
+ <!-- * be the roff-formatted contents of its original table cell. -->
+ <cell type=""
+ row="{$row}"
+ slot="{$slot}"
+ class="{$class}"
+ colspan="{@colspan}"
+ align="{@align}"
+ valign="{@valign}"
+ >
+ <xsl:choose>
+ <xsl:when test=".//tr">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="context-desc">tbl convert</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Extracted a nested table</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>[\fInested&#x2580;table\fR]*&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Apply templates to the child contents of this cell, to -->
+ <!-- * transform them into marked-up roff. -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <!-- * We now have the contents in roff (plain-text) form, -->
+ <!-- * but we may also still have unnecessary whitespace at -->
+ <!-- * the beginning and/or end of it, so trim it off. -->
+ <xsl:call-template name="trim.text">
+ <xsl:with-param name="contents" select="$contents"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </cell>
+
+ <!-- * For each instance of a rowspan attribute found, we create N -->
+ <!-- * dummy cells, where N is equal to the value of the rowspan. -->
+ <xsl:if test="@rowspan and @rowspan > 0">
+ <!-- * If this cell is preceded in the same row by cells that -->
+ <!-- * have colspan attributes, then we need to calculate the -->
+ <!-- * "offset" caused by those colspan instances; the formula -->
+ <!-- * is to (1) check for all the preceding cells that have -->
+ <!-- * colspan attributes that are not empty and which have a -->
+ <!-- * value greater than 1, then (2) take the sum of the values -->
+ <!-- * of all those colspan attributes, and subtract from that -->
+ <!-- * the number of such colspan instances found. -->
+ <xsl:variable name="colspan-offset">
+ <xsl:value-of
+ select="sum(preceding-sibling::td[@colspan != ''
+ and @colspan > 1]/@colspan) -
+ count(preceding-sibling::td[@colspan != ''
+ and @colspan > 1]/@colspan)"/>
+ </xsl:variable>
+ <xsl:call-template name="create.dummy.cells">
+ <xsl:with-param name="row" select="$row + 1"/>
+ <!-- * The slot value on each dummy cell must be offset by the -->
+ <!-- * value of $colspan-offset to adjust for preceding colpans -->
+ <xsl:with-param name="slot" select="$slot + $colspan-offset"/>
+ <xsl:with-param name="colspan" select="@colspan"/>
+ <xsl:with-param name="rowspan" select="@rowspan"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="create.dummy.cells">
+ <xsl:param name="row"/>
+ <xsl:param name="slot"/>
+ <xsl:param name="colspan"/>
+ <xsl:param name="rowspan"/>
+ <xsl:choose>
+ <xsl:when test="$rowspan > 1">
+ <!-- * Tail recurse until we have no more rowspans, creating -->
+ <!-- * an empty dummy cell each time. The type value, '^' -->
+ <!-- * is the marker that tbl(1) uses to indicate a -->
+ <!-- * "vertically spanned heading". -->
+ <cell row="{$row}" slot="{$slot}" type="^" colspan="{@colspan}"/>
+ <xsl:call-template name="create.dummy.cells">
+ <xsl:with-param name="row" select="$row + 1"/>
+ <xsl:with-param name="slot" select="$slot"/>
+ <xsl:with-param name="colspan" select="$colspan"/>
+ <xsl:with-param name="rowspan" select="$rowspan - 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Build the "format section" for the table -->
+ <!-- * ============================================================== -->
+ <!-- * Description from the tbl(1) guide: -->
+ <!-- * -->
+ <!-- * "The format section of the table specifies the layout of the -->
+ <!-- * columns. Each line in this section corresponds to one line of -->
+ <!-- * the table... and each line contains a key-letter for each -->
+ <!-- * column of the table." -->
+ <xsl:template name="create.table.format">
+ <xsl:param name="cells"/>
+ <xsl:apply-templates mode="table.format" select="$cells"/>
+ <!-- * last line of table format section must end with a dot -->
+ <xsl:text>.</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="cell" mode="table.format">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::cell[1]/@row != @row">
+ <!-- * If the value of the row attribute on this cell is -->
+ <!-- * different from the value of that on the previous cell, it -->
+ <!-- * means we have a new row. So output a line break. -->
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * If this isn't the first cell, output a space before it to -->
+ <!-- * separate it from the preceding key letter. -->
+ <xsl:if test="position() != 1">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * Select an appropriate "alignment" key letter based on this -->
+ <!-- * cell's attributes. -->
+ <xsl:choose>
+ <xsl:when test="@type = '^'">
+ <xsl:text>^</xsl:text>
+ </xsl:when>
+ <xsl:when test="@align = 'center'">
+ <xsl:text>c</xsl:text>
+ </xsl:when>
+ <xsl:when test="@align = 'right'">
+ <xsl:text>r</xsl:text>
+ </xsl:when>
+ <xsl:when test="@align = 'char'">
+ <xsl:text>n</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Default to left alignment. -->
+ <xsl:text>l</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * By default, tbl(1) vertically centers cell contents within -->
+ <!-- * their cells; the "t" key latter tells it to top-align the -->
+ <!-- * contents instead. Note that tbl(1) has no options for -->
+ <!-- * bottom or baseline alignment. -->
+ <xsl:if test="@valign = 'top'">
+ <xsl:text>t</xsl:text>
+ </xsl:if>
+ <xsl:if test="@class = 'th'">
+ <!-- * If this is a heading row, generate a font indicator (B or I), -->
+ <!-- * or if the value of $tbl.font.headings is empty, nothing. -->
+ <xsl:value-of select="$tbl.font.headings"/>
+ </xsl:if>
+ <!-- * We only need to deal with colspans whose value is greater -->
+ <!-- * than one (a colspan="1" is the same as having no colspan -->
+ <!-- * attribute at all). -->
+ <xsl:if test="@colspan > 1">
+ <xsl:call-template name="process.colspan">
+ <xsl:with-param name="colspan" select="@colspan - 1"/>
+ <xsl:with-param name="type" select="@type"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="process.colspan">
+ <xsl:param name="colspan"/>
+ <xsl:param name="type"/>
+ <!-- * Output a space to separate this key letter from preceding one. -->
+ <xsl:text> </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$type = '^'">
+ <!-- * A '^' ("vertically spanned heading" marker) indicates -->
+ <!-- * that the "parent" of this spanned cell is a dummy cell; -->
+ <!-- * in this case, we need to generate a '^' instead of the -->
+ <!-- * normal 's'. -->
+ <xsl:text>^</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * s = 'spanned heading' -->
+ <xsl:text>s</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$colspan > 1">
+ <!-- * Tail recurse until we have no more colspans, outputting -->
+ <!-- * another marker each time. -->
+ <xsl:call-template name="process.colspan">
+ <xsl:with-param name="colspan" select="$colspan - 1"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * colgroup and col -->
+ <!-- * ============================================================== -->
+ <!-- * We currently don't do anything with colgroup. Not sure if it -->
+ <!-- * is widely used enough to bother adding support for it -->
+ <xsl:template match="colgroup"/>
+ <xsl:template match="col"/>
+
+ <!-- * ============================================================== -->
+ <!-- * table footnotes -->
+ <!-- * ============================================================== -->
+ <xsl:template match="footnote" mode="table.footnote.mode">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="table.footnotes"
+ select=".//tgroup//footnote"/>
+ <xsl:value-of select="$man.table.footnotes.divider"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ <xsl:apply-templates select="*[1]" mode="footnote.body.number"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </xsl:template>
+
+ <!-- * The following template for footnote.body.number mode was just -->
+ <!-- * lifted from the HTML stylesheets with some minor adjustments -->
+ <xsl:template match="*" mode="footnote.body.number">
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="footnote.mark">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="ancestor::footnote"
+ mode="footnote.number"/>
+ <xsl:text>]&#10;</xsl:text>
+ </xsl:variable>
+ <xsl:variable name="html">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:variable name="html-nodes" select="exsl:node-set($html)"/>
+ <xsl:choose>
+ <xsl:when test="$html-nodes//p">
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.p">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.text">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$html"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * The HTML stylesheets output <sup><a>...</a></sup> around -->
+ <!-- * footnote markers in tables -->
+ <xsl:template match="th/sup">
+ <xsl:apply-templates/>
+ </xsl:template>
+ <xsl:template match="a">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl
new file mode 100644
index 0000000..26a7513
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl
@@ -0,0 +1,555 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ exclude-result-prefixes="exsl dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: utility.xsl 8236 2009-02-09 17:44:52Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- * This file contains "utility" templates that are called multiple -->
+<!-- * times per each Refentry. -->
+
+<!-- ==================================================================== -->
+
+ <!-- * NOTE TO DEVELOPERS: For ease of maintenance, the current -->
+ <!-- * manpages stylesheets use the "bold" and "italic" named -->
+ <!-- * templates for anything and everything that needs to get -->
+ <!-- * boldfaced or italicized. -->
+ <!-- * -->
+ <!-- * So if you add anything that needs bold or italic character -->
+ <!-- * formatting, try to apply these templates to it rather than -->
+ <!-- * writing separate code to format it. This can be a little odd if -->
+ <!-- * the content you want to format is not element content; in those -->
+ <!-- * cases, you need to turn it into element content before applying -->
+ <!-- * the template; see examples of this in the existing code. -->
+
+ <xsl:template name="bold">
+ <xsl:param name="node"/>
+ <xsl:param name="context"/>
+ <xsl:choose>
+ <xsl:when test="not($context[ancestor::title])">
+ <xsl:for-each select="$node/node()">
+ <xsl:text>\fB</xsl:text>
+ <xsl:apply-templates select="."/>
+ <xsl:text>\fR</xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$node/node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="italic">
+ <xsl:param name="node"/>
+ <xsl:param name="context"/>
+ <xsl:for-each select="$node/node()">
+ <xsl:text>\fI</xsl:text>
+ <xsl:apply-templates select="."/>
+ <xsl:text>\fR</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="inline.monoseq">
+ <xsl:call-template name="code-inline-start"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="code-inline-end"/>
+ </xsl:template>
+
+ <xsl:template name="code-inline-start">
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>\FC</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="code-inline-end">
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>\F[]</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="verbatim-block-start">
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>.fam C&#10;</xsl:text>
+ <xsl:text>.ps -1&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="verbatim-block-end">
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>.fam&#10;</xsl:text>
+ <xsl:text>.ps +1&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="synopsis-block-start">
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>.fam C&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="synopsis-block-end">
+ <xsl:if test="not($man.output.better.ps.enabled = 0)">
+ <xsl:text>.fam&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * NOTE TO DEVELOPERS: For ease of maintenance, the current -->
+ <!-- * manpages stylesheets use the mode="prevent.line.breaking" -->
+ <!-- * templates for anything and everything that needs to have -->
+ <!-- * embedded spaces turned into no-break spaces in output - in -->
+ <!-- * order to prevent that output from getting broken across lines -->
+ <!-- * -->
+ <!-- * So if you add anything that whose output, try to apply this -->
+ <!-- * template to it rather than writing separate code to format -->
+ <!-- * it. This can be a little odd if the content you want to -->
+ <!-- * format is not element content; in those cases, you need to -->
+ <!-- * turn it into element content before applying the template; -->
+ <!-- * see examples of this in the existing code. -->
+ <!-- * -->
+ <!-- * This template is currently called by the funcdef and paramdef -->
+ <!-- * and group/arg templates. -->
+ <xsl:template mode="prevent.line.breaking" match="*">
+ <xsl:variable name="rcontent">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:variable name="content">
+ <xsl:value-of select="normalize-space($rcontent)"/>
+ </xsl:variable>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target" select="' '"/>
+ <!-- * U+2580 is a "UPPER HALF BLOCK"; we use it here because -->
+ <!-- * if we were to just use a normal space, it would get -->
+ <!-- * replaced when normalization is done. We replace it -->
+ <!-- * later with the groff markup for non-breaking space. -->
+ <xsl:with-param name="replacement" select="'&#x2580;'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="suppress.hyphenation">
+ <!-- * we need to suppress hyphenation inline only if hyphenation is -->
+ <!-- * actually on, and even then only outside of Cmdsynopsis and -->
+ <!-- * Funcsynopsis, where it is already always turned off -->
+ <xsl:if test="$man.hyphenate != 0 and
+ not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)">
+ <xsl:text>\%</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The replace.dots.and.dashes template is used to cause real -->
+ <!-- * dots and dashes to be output in the top comment (instead of -->
+ <!-- * escaped ones as in the source for the text displayed in the -->
+ <!-- * body of the page) -->
+ <xsl:template name="replace.dots.and.dashes">
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:variable name="dot-content">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target" select="'\&amp;.'"/>
+ <xsl:with-param name="replacement" select="'.'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$dot-content"/>
+ <xsl:with-param name="target" select="'\-'"/>
+ <xsl:with-param name="replacement" select="'-'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The nested-section-title template is called for refsect3, and any -->
+ <!-- * refsection nested more than 2 levels deep. -->
+ <xsl:template name="nested-section-title">
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:call-template name="pinch.together"/>
+ <xsl:text>.ps +1&#10;</xsl:text>
+ <xsl:call-template name="make.bold.title"/>
+ </xsl:template>
+
+ <xsl:template name="pinch.together">
+ <!-- * arcane roff code to suppress line spacing after headings -->
+ <xsl:text>.it 1 an-trap&#10;</xsl:text>
+ <xsl:text>.nr an-no-space-flag 1&#10;</xsl:text>
+ <xsl:text>.nr an-break-flag 1&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="make.bold.title">
+ <!-- * make title wrapper so that we can use "bold" template to apply -->
+ <!-- * character formatting to it -->
+ <xsl:variable name="title.wrapper">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="normalize-space(title[1])"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($title.wrapper)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The mixed-block template jumps through a few hoops to deal with -->
+ <!-- * mixed-content blocks, so that we don't end up munging verbatim -->
+ <!-- * environments or lists and so that we don't gobble up whitespace -->
+ <!-- * when we shouldn't -->
+ <xsl:template name="mixed-block">
+ <xsl:for-each select="node()">
+ <xsl:choose>
+ <!-- * Check to see if this node is a verbatim environment. -->
+ <!-- * If so, put a line of space before it. -->
+ <!-- * -->
+ <!-- * Yes, address and synopsis are vertabim environments. -->
+ <!-- * -->
+ <!-- * The code here previously also treated informaltable as a -->
+ <!-- * verbatim, presumably to support some kludge; I removed it -->
+ <xsl:when test="self::address|self::literallayout|self::programlisting|
+ self::screen|self::synopsis">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:call-template name="mark.up.block.start"/>
+ <xsl:apply-templates select="."/>
+ </xsl:when>
+ <!-- * Check to see if this node is a list; if it is, we don't -->
+ <!-- * want to normalize-space(), so we just apply-templates. -->
+ <!-- * Do same for all admonitions -->
+ <xsl:when test="(self::itemizedlist|self::orderedlist|
+ self::variablelist|self::glosslist|
+ self::simplelist[@type !='inline']|
+ self::segmentedlist|
+ self::caution|self::important|
+ self::note|self::tip|self::warning|
+ self::table|self::informaltable)">
+ <xsl:call-template name="mark.up.block.start"/>
+ <xsl:apply-templates select="."/>
+ </xsl:when>
+ <xsl:when test="self::text()">
+ <!-- * Check to see if this is a text node. -->
+ <!-- * -->
+ <!-- * If so, replace all whitespace at the beginning or end of it -->
+ <!-- * with a single linebreak. -->
+ <!-- * -->
+ <xsl:variable name="content">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:if
+ test="starts-with(translate(.,'&#9;&#10;&#13; ',' '), ' ')
+ and preceding-sibling::node()[1][name(.)!='']
+ and normalize-space($content) != ''
+ and not(
+ preceding-sibling::*[1][
+ self::caution or
+ self::important or
+ self::note or
+ self::tip or
+ self::warning or
+ self::variablelist or
+ self::glosslist or
+ self::itemizedlist or
+ self::orderedlist or
+ self::segmentedlist or
+ self::procedure or
+ self::address or
+ self::literallayout or
+ self::programlisting or
+ self::screen or
+ self::table or
+ self::informaltable
+ ]
+ )
+ ">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:if
+ test="(translate(substring(., string-length(.), 1),'&#9;&#10;&#13; ',' ') = ' '
+ and following-sibling::node()[1][name(.)!=''])
+ or following-sibling::node()[1][self::comment()]
+ or following-sibling::node()[1][self::processing-instruction()]
+ ">
+ <xsl:if test="normalize-space($content) != ''
+ or concat(normalize-space($content), ' ') = ' '">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * At this point, we know that this node is not a verbatim -->
+ <!-- * environment, list, admonition, or text node; so we can -->
+ <!-- * safely normalize-space() it. -->
+ <xsl:variable name="content">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:call-template name="mark.up.block.end"/>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * Footnote and annotation contents are displayed using a hanging -->
+ <!-- * indent out to $man.indent.width If a paragraph-level block -->
+ <!-- * element (verbatim, list, or admonition) is the first block -->
+ <!-- * element nested at its same level within the same footnote or -->
+ <!-- * annotation, then we push it over by the same indent width. -->
+ <!-- * -->
+ <!-- * We don't reset the indent for each following sibling, but -->
+ <!-- * instead do it after for-eaching over all block siblings at -->
+ <!-- * the same level. So the effect is that if there are any -->
+ <!-- * following-sibling blocks after the block that starts this -->
+ <!-- * indent, then they just retain the indent that was already set -->
+
+ <xsl:template name="mark.up.block.start">
+ <xsl:choose>
+ <xsl:when test="(ancestor::footnote
+ or ancestor::annotation)">
+ <xsl:if test="not(preceding-sibling::address|
+ preceding-sibling::literallayout|
+ preceding-sibling::programlisting|
+ preceding-sibling::screen|
+ preceding-sibling::synopsis|
+ preceding-sibling::itemizedlist|
+ preceding-sibling::orderedlist|
+ preceding-sibling::variablelist|
+ preceding-sibling::glosslist|
+ preceding-sibling::simplelist[@type !='inline']|
+ preceding-sibling::segmentedlist|
+ preceding-sibling::caution|
+ preceding-sibling::important|
+ preceding-sibling::note|
+ preceding-sibling::tip|
+ preceding-sibling::warning|
+ preceding-sibling::table|
+ preceding-sibling::informaltable
+ )">
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * Check to see if we were called from a block within a footnote or -->
+ <!-- * annotation; if so, and the block contains any nested block -->
+ <!-- * content, then we know the mark.up.block.end template was already -->
+ <!-- * called to generate a .RS macro to indent that nested block -->
+ <!-- * content; so we need to generate a .RE to set the margin back to -->
+ <!-- * where it was prior to the .RS call. -->
+ <xsl:template name="mark.up.block.end">
+ <xsl:if test="(ancestor::footnote
+ or ancestor::annotation)">
+ <xsl:if test="address|
+ literallayout|
+ programlisting|
+ screen|
+ synopsis|
+ itemizedlist|
+ orderedlist|
+ variablelist|
+ glosslist|
+ simplelist[@type !='inline']|
+ segmentedlist|
+ caution|
+ important|
+ note|
+ tip|
+ warning|
+ table|
+ informaltable">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The person.name template in the HTML stylesheets outputs extra -->
+ <!-- * spaces that we need to strip out for manpages output. This -->
+ <!-- * template calls person.name, then tries to do some smart -->
+ <!-- * normalization of the result tree fragment from that. -->
+ <xsl:template name="person.name.normalized">
+ <xsl:variable name="contents">
+ <xsl:call-template name="person.name"/>
+ </xsl:variable>
+ <!-- * We put the output of person.name into a node-set and then we -->
+ <!-- * check it node-by-node and strip out space only where needed. -->
+ <xsl:variable name="contents.tree" select="exsl:node-set($contents)"/>
+ <xsl:for-each select="$contents.tree/node()">
+ <xsl:choose>
+ <!-- * We don't want to monkey with single spaces or commas/periods -->
+ <!-- * followed by spaces, because those are bits of text that are -->
+ <!-- * actually generated by the person.name template itself (that -->
+ <!-- * is, they're not in the source). So, we preserve them. -->
+ <xsl:when test=". = ' ' or . = ', ' or . = '. '">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="make.adjusted.man.filename">
+ <xsl:param name="name"/>
+ <xsl:param name="lang"/>
+ <xsl:param name="name.with.lang">
+ <xsl:choose>
+ <xsl:when test="$lang != 'en'
+ and not($man.output.lang.in.name.enabled = 0)
+ and ($man.output.subdirs.enabled = 0 or
+ $man.output.in.separate.dir = 0)">
+ <!-- * $lang is not en (English) -->
+ <!-- * AND user has specified man.output.lang.in.name.enabled -->
+ <!-- * AND doesn't want output going into separate dirs, -->
+ <!-- * SO... we include the $lang value in the filename; e.g., -->
+ <!-- * foo.ja.1 -->
+ <xsl:value-of select="concat($name, '.', $lang)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * user either has man.output.lang.in.name.enabled unset -->
+ <!-- * or has set it but also has man.output.subdirs.enabled -->
+ <!-- * set (in which case the $lang value is used to add a -->
+ <!-- * $lang subdir in the pathname); in either case, we don't -->
+ <!-- * want to include the $lang in the filename -->
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="section"/>
+ <xsl:param name="dirname">
+ <xsl:if test="not($man.output.in.separate.dir = 0)">
+ <xsl:choose>
+ <xsl:when test="not($man.output.subdirs.enabled = 0)">
+ <xsl:variable name="lang.subdir">
+ <xsl:if test="not($man.output.lang.in.name.enabled = 0)">
+ <!-- * user has man.output.lang.in.name.enabled set, so -->
+ <!-- * we need to add a $lang subdir -->
+ <xsl:value-of select="concat($lang, '/')"/>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:value-of
+ select="concat($man.output.base.dir, $lang.subdir,
+ 'man', normalize-space($section), '/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$man.output.base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:param>
+ <xsl:call-template name="string.subst">
+ <!-- * To create the man filename, replace any spaces in filename with -->
+ <!-- * underscores and then append a dot plus a section number. -->
+ <xsl:with-param name="string"
+ select="concat($dirname,
+ normalize-space($name.with.lang),
+ '.', normalize-space($section))"/>
+ <xsl:with-param name="target" select="' '"/>
+ <xsl:with-param name="replacement" select="'_'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="make.subheading">
+ <xsl:param name="title"/>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:text>.SH</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:text>"</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($man.output.better.ps.enabled = 0)">
+ <xsl:value-of select="$title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string" select="$title"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ </xsl:template>
+
+ <!-- * Put a horizontal rule or other divider around section titles -->
+ <!-- * in roff source (just to make things easier to read). -->
+ <xsl:template name="mark.subheading">
+ <xsl:if test="$man.subheading.divider.enabled != 0">
+ <xsl:text>.\" </xsl:text>
+ <xsl:value-of select="$man.subheading.divider"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="roff-if-else-start">
+ <xsl:param name="condition">n</xsl:param>
+ <xsl:text>.ie </xsl:text>
+ <xsl:value-of select="$condition"/>
+ <xsl:text> \{\&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="roff-if-start">
+ <xsl:param name="condition">n</xsl:param>
+ <xsl:text>.if </xsl:text>
+ <xsl:value-of select="$condition"/>
+ <xsl:text> \{\&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="roff-else">
+ <xsl:text>.\}&#10;</xsl:text>
+ <xsl:text>.el \{\&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="roff-if-end">
+ <xsl:text>.\}&#10;</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml
new file mode 100644
index 0000000..1771f72
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml
@@ -0,0 +1,22 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="abstract.notitle.enabled">
+<refmeta>
+<refentrytitle>abstract.notitle.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.notitle.enabled</refname>
+<refpurpose>Suppress display of abstract titles?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+ <src:fragment xml:id="abstract.notitle.enabled.frag"><xsl:param name="abstract.notitle.enabled" select="0"/></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, in output of the <tag>abstract</tag> element on titlepages,
+display of the abstract title is suppressed.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml
new file mode 100644
index 0000000..e802312
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="abstract.properties">
+<refmeta>
+<refentrytitle>abstract.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.properties</refname>
+<refpurpose>Properties associated with the block surrounding an abstract</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="abstract.properties.frag">
+<xsl:attribute-set name="abstract.properties">
+ <xsl:attribute name="start-indent">0.0in</xsl:attribute>
+ <xsl:attribute name="end-indent">0.0in</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for abstract.</para>
+
+<para>See also <parameter>abstract.title.properties</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml
new file mode 100644
index 0000000..d01f70c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="abstract.title.properties">
+<refmeta>
+<refentrytitle>abstract.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>abstract.title.properties</refname>
+<refpurpose>Properties for abstract titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="abstract.title.properties.frag">
+<xsl:attribute-set name="abstract.title.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute>
+ <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute>
+ <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties for abstract titles.</para>
+
+<para>See also <parameter>abstract.properties</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml
new file mode 100644
index 0000000..f56aee1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="active.toc">
+<refmeta>
+<refentrytitle>active.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>active.toc</refname>
+<refpurpose>Active ToCs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="active.toc.frag">
+<xsl:param name="active.toc" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is used to keep the ToC and the current slide
+<quote>in sync</quote>. That is, each time the slide changes, the corresponding
+ToC entry will be underlined.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml
new file mode 100644
index 0000000..479591b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0"
+ xml:id="ade.extensions">
+ <refmeta>
+ <refentrytitle>ade.extensions</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>ade.extensions</refname>
+ <refpurpose>Enable Adobe Digitial Editions extensions for ePub rendering?</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <src:fragment xml:id="ade.extensions.frag">
+ <xsl:param name="ade.extensions" select="0"/>
+ </src:fragment>
+ </refsynopsisdiv>
+ <refsection>
+ <info>
+ <title>Description</title>
+ </info>
+ <para>If non-zero,
+<link xlink:href="http://www.adobe.com/products/digitaleditions/">Adobe Digital Editions</link>
+extensions will be used when rendering to ePub output. Adobe Digital Editions extensions consists
+rendering and layout extensions.</para>
+ <para>This parameter can also affect which graphics file formats are supported.</para>
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml
new file mode 100644
index 0000000..a7b47dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="admon.graphics.extension">
+<refmeta>
+<refentrytitle>admon.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.extension</refname>
+<refpurpose>Filename extension for admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="admon.graphics.extension.frag">
+<xsl:param name="admon.graphics.extension">.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on admonition graphics.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml
new file mode 100644
index 0000000..32b12b1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="admon.graphics.path">
+<refmeta>
+<refentrytitle>admon.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.path</refname>
+<refpurpose>Path to admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="admon.graphics.path.frag"><xsl:param name="admon.graphics.path">images/</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory containing the admonition graphics
+(caution.png, important.png etc). This location is normally relative
+to the output html directory. See <parameter>base.dir</parameter></para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml
new file mode 100644
index 0000000..f5e5ae4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="admon.graphics">
+<refmeta>
+<refentrytitle>admon.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics</refname>
+<refpurpose>Use graphics in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="admon.graphics.frag">
+<xsl:param name="admon.graphics" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented in an alternate style that uses
+a graphic. Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml
new file mode 100644
index 0000000..5abe022
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="admon.style">
+<refmeta>
+<refentrytitle>admon.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.style</refname>
+<refpurpose>Specifies the CSS style attribute that should be added to
+admonitions.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="admon.style.frag"><xsl:param name="admon.style">
+ <xsl:value-of select="concat('margin-', $direction.align.start,
+ ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"/>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the value of the CSS <tag class="attribute">style</tag>
+attribute that should be added to admonitions.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml
new file mode 100644
index 0000000..ea1a53f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="admon.textlabel">
+<refmeta>
+<refentrytitle>admon.textlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.textlabel</refname>
+<refpurpose>Use text label in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="admon.textlabel.frag">
+<xsl:param name="admon.textlabel" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), admonitions are presented with a generated
+text label such as Note or Warning in the appropriate language.
+If zero, such labels are turned off, but any title child
+of the admonition element are still output.
+The default value is 1.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml
new file mode 100644
index 0000000..4dddd26
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="admonition.properties">
+<refmeta>
+ <refentrytitle>admonition.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admonition.properties</refname>
+<refpurpose>To set the style for admonitions.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="admonition.properties.frag"><xsl:attribute-set name="admonition.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want admonitions styled? </para>
+<para>Set the font-size, weight, etc. to the style required</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml
new file mode 100644
index 0000000..7af23e6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="admonition.title.properties">
+
+<refmeta>
+ <refentrytitle>admonition.title.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admonition.title.properties</refname>
+<refpurpose>To set the style for admonitions titles.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="admonition.title.properties.frag">
+<xsl:attribute-set name="admonition.title.properties">
+ <xsl:attribute name="font-size">14pt</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want admonitions titles styled? </para>
+<para>Set the font-size, weight etc to the style required.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml
new file mode 100644
index 0000000..9c0a3de
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml
@@ -0,0 +1,41 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="alignment">
+<refmeta>
+<refentrytitle>alignment</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+ <refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">center</refmiscinfo>
+ <refmiscinfo class="other" otherclass="value">justify</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>alignment</refname>
+<refpurpose>Specify the default text alignment</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="alignment.frag"><xsl:param name="alignment">justify</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default text alignment is used for most body text.
+Allowed values are
+<literal>left</literal>,
+<literal>right</literal>,
+<literal>start</literal>,
+<literal>end</literal>,
+<literal>center</literal>,
+<literal>justify</literal>.
+The default value is <literal>justify</literal>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml
new file mode 100644
index 0000000..667fa32
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="annotate.toc">
+<refmeta>
+<refentrytitle>annotate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotate.toc</refname>
+<refpurpose>Annotate the Table of Contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="annotate.toc.frag"><xsl:param name="annotate.toc" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, TOCs will be annotated. At present, this just means
+that the <tag>refpurpose</tag> of <tag>refentry</tag>
+TOC entries will be displayed.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml
new file mode 100644
index 0000000..560c56a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml
@@ -0,0 +1,71 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="annotation.css">
+<refmeta>
+<refentrytitle>annotation.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.css</refname>
+<refpurpose>CSS rules for annotations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="annotation.css.frag">
+<xsl:param name="annotation.css">
+/* ======================================================================
+ Annotations
+*/
+
+div.annotation-list { visibility: hidden;
+ }
+
+div.annotation-nocss { position: absolute;
+ visibility: hidden;
+ }
+
+div.annotation-popup { position: absolute;
+ z-index: 4;
+ visibility: hidden;
+ padding: 0px;
+ margin: 2px;
+ border-style: solid;
+ border-width: 1px;
+ width: 200px;
+ background-color: white;
+ }
+
+div.annotation-title { padding: 1px;
+ font-weight: bold;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ color: white;
+ background-color: black;
+ }
+
+div.annotation-body { padding: 2px;
+ }
+
+div.annotation-body p { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+div.annotation-close { position: absolute;
+ top: 2px;
+ right: 2px;
+ }
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>annotation.support</parameter> is enabled and the
+document contains <tag>annotation</tag>s, then the CSS in this
+parameter will be included in the document.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml
new file mode 100644
index 0000000..002ebb4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="annotation.graphic.close">
+<refmeta>
+<refentrytitle>annotation.graphic.close</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.graphic.close</refname>
+<refpurpose>Image for identifying a link that closes an annotation popup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="annotation.graphic.close.frag">
+<xsl:param name="annotation.graphic.close">
+http://docbook.sourceforge.net/release/images/annot-close.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This image is used on popup annotations as the “x†that the
+user can click to dismiss the popup.</para>
+<para>This image is used on popup annotations as the “x†that the user can
+click to dismiss the popup. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml
new file mode 100644
index 0000000..c7d1c32
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="annotation.graphic.open">
+<refmeta>
+<refentrytitle>annotation.graphic.open</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.graphic.open</refname>
+<refpurpose>Image for identifying a link that opens an annotation popup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="annotation.graphic.open.frag">
+<xsl:param name="annotation.graphic.open">http://docbook.sourceforge.net/release/images/annot-open.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This image is used inline to identify the location of
+annotations. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml
new file mode 100644
index 0000000..6c7e97e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="annotation.js">
+<refmeta>
+<refentrytitle>annotation.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.js</refname>
+<refpurpose>URIs identifying JavaScript files with support for annotation popups</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="annotation.js.frag">
+
+<xsl:param name="annotation.js">
+<xsl:text>http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js</xsl:text></xsl:param>
+
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <property>annotation.support</property> is enabled and the
+document contains <tag>annotation</tag>s, then the URIs listed
+in this parameter will be included. These JavaScript files are required
+for popup annotation support.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml
new file mode 100644
index 0000000..29e7633
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="annotation.support">
+<refmeta>
+<refentrytitle>annotation.support</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotation.support</refname>
+<refpurpose>Enable annotations?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="annotation.support.frag">
+<xsl:param name="annotation.support" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the stylesheets will attempt to support annotation
+elements in HTML by including some JavaScript (see
+<parameter>annotation.js</parameter>).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml
new file mode 100644
index 0000000..bae38fa
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="appendix.autolabel">
+<refmeta>
+<refentrytitle>appendix.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>appendix.autolabel</refname>
+<refpurpose>Specifies the labeling format for Appendix titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="appendix.autolabel.frag">
+<xsl:param name="appendix.autolabel">A</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then appendices will be numbered using the
+parameter value as the number format if the value matches one of the
+following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperalpha).
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml
new file mode 100644
index 0000000..2e571dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="arbortext.extensions">
+<refmeta>
+<refentrytitle>arbortext.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>arbortext.extensions</refname>
+<refpurpose>Enable Arbortext extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="arbortext.extensions.frag"><xsl:param name="arbortext.extensions" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.arbortext.com/">Arbortext</link>
+extensions will be used.
+</para>
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml
new file mode 100644
index 0000000..61337a1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="article.appendix.title.properties">
+<refmeta>
+<refentrytitle>article.appendix.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>article.appendix.title.properties</refname>
+<refpurpose>Properties for appendix titles that appear in an article</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="article.appendix.title.properties.frag">
+<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties for the title of an appendix that
+appears inside an article. The default is to use
+the properties of sect1 titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml
new file mode 100644
index 0000000..4ad21dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="author.othername.in.middle">
+<refmeta>
+<refentrytitle>author.othername.in.middle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>author.othername.in.middle</refname>
+<refpurpose>Is <tag>othername</tag> in <tag>author</tag> a
+middle name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="author.othername.in.middle.frag">
+<xsl:param name="author.othername.in.middle" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag>othername</tag> of an <tag>author</tag>
+appears between the <tag>firstname</tag> and
+<tag>surname</tag>. Otherwise, <tag>othername</tag>
+is suppressed.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml
new file mode 100644
index 0000000..150f123
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="autolayout-file">
+<refmeta>
+<refentrytitle>autolayout-file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autolayout-file</refname>
+<refpurpose>Identifies the autolayout.xml file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="autolayout-file.frag">
+<xsl:param name="autolayout-file">autolayout.xml</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When the source pages are spread over several directories, this
+parameter can be set (for example, from the command line of a batch-mode
+XSLT processor) to indicate the location of the autolayout.xml file.</para>
+<para>FIXME: for browser-based use, there needs to be a PI for this...
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml
new file mode 100644
index 0000000..dced0bd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="autotoc.label.in.hyperlink">
+<refmeta>
+<refentrytitle>autotoc.label.in.hyperlink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.in.hyperlink</refname>
+<refpurpose>Include label in hyperlinked titles in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="autotoc.label.in.hyperlink.frag"><xsl:param name="autotoc.label.in.hyperlink" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>autotoc.label.in.hyperlink</parameter> is non-zero, labels
+are included in hyperlinked titles in the TOC. If it is instead zero,
+labels are still displayed prior to the hyperlinked titles, but
+are not hyperlinked along with the titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml
new file mode 100644
index 0000000..b9cd53a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="autotoc.label.separator">
+<refmeta>
+<refentrytitle>autotoc.label.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.separator</refname>
+<refpurpose>Separator between labels and titles in the ToC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="autotoc.label.separator.frag">
+<xsl:param name="autotoc.label.separator">. </xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>String used to separate labels and titles in a table of contents.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml
new file mode 100644
index 0000000..940a187
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="axf.extensions">
+<refmeta>
+<refentrytitle>axf.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>axf.extensions</refname>
+<refpurpose>Enable XSL Formatter extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="axf.extensions.frag">
+<xsl:param name="axf.extensions" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.antennahouse.com/">XSL Formatter</link>
+extensions will be used. XSL Formatter extensions consists of PDF bookmarks,
+document information and better index processing.</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml
new file mode 100644
index 0000000..0883378
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="banner.before.navigation">
+<refmeta>
+<refentrytitle>banner.before.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>banner.before.navigation</refname>
+<refpurpose>Put banner before navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="banner.before.navigation.frag">
+<xsl:param name="banner.before.navigation" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml
new file mode 100644
index 0000000..e22ca14
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="base.dir">
+<refmeta>
+<refentrytitle>base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>base.dir</refname>
+<refpurpose>The base directory of chunks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="base.dir.frag">
+<xsl:param name="base.dir"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, the <parameter>base.dir</parameter> identifies
+the output directory for chunks. (If not specified, the output directory
+is system dependent.)</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml
new file mode 100644
index 0000000..4a56ad6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="biblioentry.item.separator">
+<refmeta>
+<refentrytitle>biblioentry.item.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.item.separator</refname>
+<refpurpose>Text to separate bibliography entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="biblioentry.item.separator.frag"><xsl:param name="biblioentry.item.separator">. </xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Text to separate bibliography entries
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml
new file mode 100644
index 0000000..9e88ddb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="biblioentry.properties">
+<refmeta>
+ <refentrytitle>biblioentry.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>biblioentry.properties</refname>
+<refpurpose>To set the style for biblioentry.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="biblioentry.properties.frag"><xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing">
+ <xsl:attribute name="start-indent">0.5in</xsl:attribute>
+ <xsl:attribute name="text-indent">-0.5in</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>How do you want biblioentry styled? </para>
+<para>Set the font-size, weight, space-above and space-below, indents, etc. to the style required</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml
new file mode 100644
index 0000000..ee49dde
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml
@@ -0,0 +1,104 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="bibliography.collection">
+<refmeta>
+<refentrytitle>bibliography.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.collection</refname>
+<refpurpose>Name of the bibliography collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="bibliography.collection.frag">
+<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param>
+
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Maintaining bibliography entries across a set of documents is tedious, time
+consuming, and error prone. It makes much more sense, usually, to store all of
+the bibliography entries in a single place and simply <quote>extract</quote>
+the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>bibliography.collection</parameter> parameter. To setup a global
+bibliography <quote>database</quote>, follow these steps:</para>
+
+<para>First, create a stand-alone bibliography document that contains all of
+the documents that you wish to reference. Make sure that each bibliography
+entry (whether you use <tag>biblioentry</tag> or <tag>bibliomixed</tag>)
+has an ID.</para>
+
+<para>My global bibliography, <filename>~/bibliography.xml</filename> begins
+like this:</para>
+
+<informalexample>
+<programlisting>&lt;!DOCTYPE bibliography
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;bibliography&gt;&lt;title&gt;References&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"&gt;&lt;abbrev&gt;XML 1.0&lt;/abbrev&gt;Tim Bray,
+Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml"&gt;Extensible Markup
+Language (XML) 1.0 Second Edition&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 2000.
+&lt;/bibliomixed&gt;
+
+&lt;bibliomixed id="xml-names"&gt;&lt;abbrev&gt;Namespaces&lt;/abbrev&gt;Tim Bray,
+Dave Hollander,
+and Andrew Layman, editors.
+&lt;citetitle&gt;&lt;ulink url="http://www.w3.org/TR/REC-xml-names/"&gt;Namespaces in
+XML&lt;/ulink&gt;&lt;/citetitle&gt;.
+World Wide Web Consortium, 1999.
+&lt;/bibliomixed&gt;
+
+&lt;!-- ... --&gt;
+&lt;/bibliography&gt;
+</programlisting>
+</informalexample>
+
+<para>When you create a bibliography in your document, simply
+provide <emphasis>empty</emphasis> <tag>bibliomixed</tag>
+entries for each document that you wish to cite. Make sure that these
+elements have the same ID as the corresponding <quote>real</quote>
+entry in your global bibliography.</para>
+
+<para>For example:</para>
+
+<informalexample>
+<programlisting>&lt;bibliography&gt;&lt;title&gt;Bibliography&lt;/title&gt;
+
+&lt;bibliomixed id="xml-rec"/&gt;
+&lt;bibliomixed id="xml-names"/&gt;
+&lt;bibliomixed id="DKnuth86"&gt;Donald E. Knuth. &lt;citetitle&gt;Computers and
+Typesetting: Volume B, TeX: The Program&lt;/citetitle&gt;. Addison-Wesley,
+1986. ISBN 0-201-13437-3.
+&lt;/bibliomixed&gt;
+&lt;bibliomixed id="relaxng"/&gt;
+
+&lt;/bibliography&gt;</programlisting>
+</informalexample>
+
+<para>Note that it's perfectly acceptable to mix entries from your
+global bibliography with <quote>normal</quote> entries. You can use
+<tag>xref</tag> or other elements to cross-reference your
+bibliography entries in exactly the same way you do now.</para>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>bibliography.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global bibliography.</para>
+
+<para>The stylesheets will format the bibliography in your document as if
+all of the entries referenced appeared there literally.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml
new file mode 100644
index 0000000..593a1fa
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="bibliography.numbered">
+<refmeta>
+<refentrytitle>bibliography.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.numbered</refname>
+<refpurpose>Should bibliography entries be numbered?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="bibliography.numbered.frag">
+<xsl:param name="bibliography.numbered" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero bibliography entries will be numbered</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml
new file mode 100644
index 0000000..fa44582
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="bibliography.style">
+<refmeta>
+<refentrytitle>bibliography.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">normal</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iso690</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bibliography.style</refname>
+<refpurpose>Style used for formatting of biblioentries.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id='bibliography.style.frag'>
+<xsl:param name="bibliography.style">normal</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Currently only <literal>normal</literal> and
+<literal>iso690</literal> styles are supported.</para>
+
+<para>In order to use ISO690 style to the full extent you might need
+to use additional markup described on <link
+xlink:href="http://wiki.docbook.org/topic/ISO690Bibliography">the
+following WiKi page</link>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml
new file mode 100644
index 0000000..76d7f1c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="blockquote.properties">
+<refmeta>
+ <refentrytitle>blockquote.properties</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>blockquote.properties</refname>
+<refpurpose>To set the style for block quotations.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="blockquote.properties.frag">
+<xsl:attribute-set name="blockquote.properties">
+<xsl:attribute name="margin-{$direction.align.start}">0.5in</xsl:attribute>
+<xsl:attribute name="margin-{$direction.align.end}">0.5in</xsl:attribute>
+<xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+<xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+<xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>blockquote.properties</parameter> attribute set specifies
+the formating properties of block quotations.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml
new file mode 100644
index 0000000..27e89d7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="blurb.on.titlepage.enabled">
+<refmeta>
+<refentrytitle>blurb.on.titlepage.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>blurb.on.titlepage.enabled</refname>
+<refpurpose>Display personblurb and authorblurb on title pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="blurb.on.titlepage.enabled.frag">
+<xsl:param name="blurb.on.titlepage.enabled" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, output from <tag>authorblurb</tag> and
+<tag>personblurb</tag> elements is displayed on title pages. If zero
+(the default), output from those elements is suppressed on title pages
+(unless you are using a <literal>titlepage</literal> customization
+that causes them to be included).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml
new file mode 100644
index 0000000..8ee1ad9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.attributes">
+<refmeta>
+<refentrytitle>body.attributes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.attributes</refname>
+<refpurpose>DEPRECATED</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.attributes.frag">
+<xsl:attribute-set name="body.attributes">
+ <xsl:attribute name="bgcolor">white</xsl:attribute>
+ <xsl:attribute name="text">black</xsl:attribute>
+ <xsl:attribute name="link">#0000FF</xsl:attribute>
+ <xsl:attribute name="vlink">#840084</xsl:attribute>
+ <xsl:attribute name="alink">#0000FF</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>DEPRECATED</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml
new file mode 100644
index 0000000..8315b85
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.bg.color">
+<refmeta>
+<refentrytitle>body.bg.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.bg.color</refname>
+<refpurpose>Background color for body frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.bg.color.frag">
+<xsl:param name="body.bg.color">#FFFFFF</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color used in the body column of
+tabular slides.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml
new file mode 100644
index 0000000..a5e098c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.end.indent">
+<refmeta>
+<refentrytitle>body.end.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.end.indent</refname>
+<refpurpose>The end-indent for the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.end.indent.frag">
+<xsl:param name="body.end.indent">0pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This end-indent property is added to the fo:flow
+for certain page sequences. Which page-sequences it is
+applied to is determined by the template named
+<literal>set.flow.properties</literal>.
+By default, that template adds it to the flow
+for page-sequences using the <quote>body</quote>
+master-reference, as well as appendixes and prefaces.
+</para>
+
+<para>See also <parameter>body.start.indent</parameter>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml
new file mode 100644
index 0000000..06c3b47
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.font.family">
+<refmeta>
+<refentrytitle>body.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.family</refname>
+<refpurpose>The default font family for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.font.family.frag">
+<xsl:param name="body.font.family">serif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font family is the default font used for text in the page body.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml
new file mode 100644
index 0000000..323a6a0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.font.master">
+<refmeta>
+<refentrytitle>body.font.master</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.master</refname>
+<refpurpose>Specifies the default point size for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.font.master.frag">
+<xsl:param name="body.font.master">10</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font size is specified in two parameters
+(<parameter>body.font.master</parameter> and <parameter>body.font.size</parameter>)
+so that math can be performed on the font size by XSLT.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml
new file mode 100644
index 0000000..fc35ade
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.font.size">
+<refmeta>
+<refentrytitle>body.font.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.font.size</refname>
+<refpurpose>Specifies the default font size for body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.font.size.frag">
+<xsl:param name="body.font.size">
+ <xsl:value-of select="$body.font.master"/><xsl:text>pt</xsl:text>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body font size is specified in two parameters
+(<parameter>body.font.master</parameter> and <parameter>body.font.size</parameter>)
+so that math can be performed on the font size by XSLT.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml
new file mode 100644
index 0000000..2302f64
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.margin.bottom">
+<refmeta>
+<refentrytitle>body.margin.bottom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.margin.bottom</refname>
+<refpurpose>The bottom margin of the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.margin.bottom.frag">
+<xsl:param name="body.margin.bottom">0.5in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body bottom margin is the distance from the last line of text
+in the page body to the bottom of the region-after.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml
new file mode 100644
index 0000000..182bd9f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.margin.top">
+<refmeta>
+<refentrytitle>body.margin.top</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.margin.top</refname>
+<refpurpose>To specify the size of the top margin of a page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.margin.top.frag">
+<xsl:param name="body.margin.top">0.5in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The body top margin is the distance from the top of the
+region-before to the first line of text in the page body.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml
new file mode 100644
index 0000000..4e348f1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml
@@ -0,0 +1,64 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="body.start.indent">
+<refmeta>
+<refentrytitle>body.start.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.start.indent</refname>
+<refpurpose>The start-indent for the body text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="body.start.indent.frag">
+<xsl:param name="body.start.indent">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">0pt</xsl:when>
+ <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when>
+ <xsl:otherwise>4pc</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter provides
+the means of indenting the body text relative to
+section titles.
+For left-to-right text direction, it indents the left side.
+For right-to-left text direction, it indents the right side.
+It is used in place of the
+<parameter>title.margin.left</parameter> for
+all XSL-FO processors except FOP 0.25.
+It enables support for side floats to appear
+in the indented margin area.
+</para>
+<para>This start-indent property is added to the fo:flow
+for certain page sequences. Which page-sequences it is
+applied to is determined by the template named
+<literal>set.flow.properties</literal>.
+By default, that template adds it to the flow
+for page-sequences using the <quote>body</quote>
+master-reference, as well as appendixes and prefaces.
+</para>
+<para>If this parameter is used, section titles should have
+a start-indent value of 0pt if they are to be
+outdented relative to the body text.
+</para>
+
+<para>If you are using FOP, then set this parameter to a zero
+width value and set the <parameter>title.margin.left</parameter>
+parameter to the negative value of the desired indent.
+</para>
+
+<para>See also <parameter>body.end.indent</parameter> and
+<parameter>title.margin.left</parameter>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml
new file mode 100644
index 0000000..3320056
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="bookmarks.collapse">
+<refmeta>
+<refentrytitle>bookmarks.collapse</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bookmarks.collapse</refname>
+<refpurpose>Specifies the initial state of bookmarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="bookmarks.collapse.frag">
+<xsl:param name="bookmarks.collapse" select="1"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the bookmark tree is collapsed so that only the
+top-level bookmarks are displayed initially. Otherwise, the whole tree
+of bookmarks is displayed.</para>
+
+<para>This parameter currently works with FOP 0.93 or later.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml
new file mode 100644
index 0000000..490d556
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="bridgehead.in.toc">
+<refmeta>
+<refentrytitle>bridgehead.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bridgehead.in.toc</refname>
+<refpurpose>Should bridgehead elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="bridgehead.in.toc.frag"><xsl:param name="bridgehead.in.toc" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>bridgehead</tag>s appear in the TOC. Note that
+this option is not fully supported and may be removed in a future
+version of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml
new file mode 100644
index 0000000..acf2af5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="bullet.image">
+<refmeta>
+<refentrytitle>bullet.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bullet.image</refname>
+<refpurpose>Bullet image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="bullet.image.frag">
+<xsl:param name="bullet.image">toc/bullet.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the bullet image used for foils in the
+framed ToC.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml
new file mode 100644
index 0000000..6cae381
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.defaultcolumn">
+<refmeta>
+<refentrytitle>callout.defaultcolumn</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.defaultcolumn</refname>
+<refpurpose>Indicates what column callouts appear in by default</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.defaultcolumn.frag">
+<xsl:param name="callout.defaultcolumn">60</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a callout does not identify a column (for example, if it uses
+the <literal>linerange</literal> <tag class="attribute">unit</tag>),
+it will appear in the default column.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml
new file mode 100644
index 0000000..febc690
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.graphics.extension">
+<refmeta>
+<refentrytitle>callout.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.extension</refname>
+<refpurpose>Filename extension for callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.graphics.extension.frag">
+<xsl:param condition="html" name="callout.graphics.extension">.png</xsl:param>
+<xsl:param condition="fo" name="callout.graphics.extension">.svg</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Sets the filename extension to use on callout graphics. </para>
+
+<itemizedlist>
+<para>The Docbook XSL distribution provides callout graphics in the following formats:</para>
+<listitem><para>SVG (extension: <filename class="extension">.svg</filename>)</para></listitem>
+<listitem><para>PNG (extension: <filename class="extension">.png</filename>)</para></listitem>
+<listitem><para>GIF (extension: <filename class="extension">.gif</filename>)</para></listitem>
+</itemizedlist>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml
new file mode 100644
index 0000000..cde5267
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.graphics.number.limit">
+<refmeta>
+<refentrytitle>callout.graphics.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.number.limit</refname>
+<refpurpose>Number of the largest callout graphic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.graphics.number.limit.frag">
+<xsl:param condition="html" name="callout.graphics.number.limit">15</xsl:param>
+<xsl:param condition="fo" name="callout.graphics.number.limit">30</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is non-zero, graphics
+are used to represent callout numbers instead of plain text. The value
+of <parameter>callout.graphics.number.limit</parameter> is the largest
+number for which a graphic exists. If the callout number exceeds this
+limit, the default presentation "(plain text instead of a graphic)"
+will be used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml
new file mode 100644
index 0000000..00e54c1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.graphics.path">
+<refmeta>
+<refentrytitle>callout.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.path</refname>
+<refpurpose>Path to callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.graphics.path.frag">
+<xsl:param name="callout.graphics.path">images/callouts/</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path to the directory holding the callout graphics. his
+location is normally relative to the output html directory. see
+base.dir. Always terminate the directory with / since the graphic file
+is appended to this string, hence needs the separator.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml
new file mode 100644
index 0000000..a97ac0d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.graphics">
+<refmeta>
+<refentrytitle>callout.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics</refname>
+<refpurpose>Use graphics for callouts?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.graphics.frag">
+<xsl:param name="callout.graphics" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, callouts are presented with graphics (e.g., reverse-video
+circled numbers instead of "(1)", "(2)", etc.).
+Default graphics are provided in the distribution.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml
new file mode 100644
index 0000000..d3acae8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.icon.size">
+<refmeta>
+<refentrytitle>callout.icon.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.icon.size</refname>
+<refpurpose>Specifies the size of callout marker icons</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.icon.size.frag">
+<xsl:param name="callout.icon.size">7pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the size of the callout marker icons.
+The default size is 7 points.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml
new file mode 100644
index 0000000..6fece03
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.list.table">
+<refmeta>
+<refentrytitle>callout.list.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.list.table</refname>
+<refpurpose>Present callout lists using a table?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.list.table.frag">
+<xsl:param name="callout.list.table" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default presentation of <tag>calloutlist</tag>s uses
+an HTML <tag>DL</tag> element. Some browsers don't align DLs very well
+if <parameter>callout.graphics</parameter> is used. With this option
+turned on, <tag>calloutlist</tag>s are presented in an HTML
+<tag>TABLE</tag>, which usually results in better alignment
+of the callout number with the callout description.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml
new file mode 100644
index 0000000..e63bffb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.unicode.font">
+<refmeta>
+<refentrytitle>callout.unicode.font</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.font</refname>
+<refpurpose>Specify a font for Unicode glyphs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.unicode.font.frag">
+<xsl:param name="callout.unicode.font">ZapfDingbats</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The name of the font to specify around Unicode callout glyphs.
+If set to the empty string, no font change will occur.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml
new file mode 100644
index 0000000..a9f1f3d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.unicode.number.limit">
+<refmeta>
+<refentrytitle>callout.unicode.number.limit</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.number.limit</refname>
+<refpurpose>Number of the largest unicode callout character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.unicode.number.limit.frag">
+<xsl:param name="callout.unicode.number.limit">10</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.number.limit</parameter>
+is
+the largest number for which a unicode character exists. If the callout number
+exceeds this limit, the default presentation "(nnn)" will always
+be used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml
new file mode 100644
index 0000000..90a1acd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.unicode.start.character">
+<refmeta>
+<refentrytitle>callout.unicode.start.character</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.start.character</refname>
+<refpurpose>First Unicode character to use, decimal value.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.unicode.start.character.frag">
+<xsl:param name="callout.unicode.start.character">10102</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>callout.graphics</parameter> is zero and <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.start.character</parameter>
+is the decimal unicode value used for callout number one. Currently,
+only 10102 is supported in the stylesheets for this parameter.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml
new file mode 100644
index 0000000..4ec6a5f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callout.unicode">
+<refmeta>
+<refentrytitle>callout.unicode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode</refname>
+<refpurpose>Use Unicode characters rather than images for callouts.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callout.unicode.frag"><xsl:param name="callout.unicode" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml
new file mode 100644
index 0000000..80b5845
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="callouts.extension">
+<refmeta>
+<refentrytitle>callouts.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callouts.extension</refname>
+<refpurpose>Enable the callout extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="callouts.extension.frag">
+<xsl:param name="callouts.extension" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<!-- DP. Note this is not used in the same manner as callout.graphics.extension -->
+<para>The callouts extension processes <tag>areaset</tag>
+elements in <tag>programlistingco</tag> and other text-based
+callout elements.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml
new file mode 100644
index 0000000..32414bc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml
@@ -0,0 +1,71 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chapter.autolabel">
+<refmeta>
+<refentrytitle>chapter.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chapter.autolabel</refname>
+<refpurpose>Specifies the labeling format for Chapter titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chapter.autolabel.frag">
+<xsl:param name="chapter.autolabel" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then chapters will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml
new file mode 100644
index 0000000..1f65aad
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.append">
+<refmeta>
+<refentrytitle>chunk.append</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.append</refname>
+<refpurpose>Specifies content to append to chunked HTML output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.append.frag"><xsl:param name="chunk.append"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies content to append to the end of HTML files output by
+the <filename>html/chunk.xsl</filename> stylesheet, after the closing
+<code>&lt;html&gt;</code> tag. You probably don’t want to set any value
+for this parameter; but if you do, the only value it should ever be
+set to is a newline character: <code>&amp;#x0a;</code> or
+<code>&amp;#10;</code></para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml
new file mode 100644
index 0000000..f0c1b82
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.first.sections">
+<refmeta>
+<refentrytitle>chunk.first.sections</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.first.sections</refname>
+<refpurpose>Chunk the first top-level section?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.first.sections.frag">
+<xsl:param name="chunk.first.sections" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a chunk will be created for the first top-level
+<tag>sect1</tag> or <tag>section</tag> elements in
+each component. Otherwise, that section will be part of the chunk for
+its parent.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml
new file mode 100644
index 0000000..8700b29
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.quietly">
+<refmeta>
+<refentrytitle>chunk.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.quietly</refname>
+<refpurpose>Omit the chunked filename messages.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.quietly.frag">
+<xsl:param name="chunk.quietly" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), the XSL processor emits a message naming
+each separate chunk filename as it is being output.
+If nonzero, then the messages are suppressed.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml
new file mode 100644
index 0000000..d46193c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.section.depth">
+<refmeta>
+<refentrytitle>chunk.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.section.depth</refname>
+<refpurpose>Depth to which sections should be chunked</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.section.depth.frag">
+<xsl:param name="chunk.section.depth" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter sets the depth of section chunking.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml
new file mode 100644
index 0000000..2ffb1a3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.sections">
+<refmeta>
+<refentrytitle>chunk.sections</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.sections</refname>
+<refpurpose>Should top-level sections be chunks in their own right?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.sections.frag">
+<xsl:param name="chunk.sections" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, chunks will be created for top-level
+<tag>sect1</tag> and <tag>section</tag> elements in
+each component.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml
new file mode 100644
index 0000000..aa54eab
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.separate.lots">
+<refmeta>
+<refentrytitle>chunk.separate.lots</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.separate.lots</refname>
+<refpurpose>Should each LoT be in its own separate chunk?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.separate.lots.frag">
+<xsl:param name="chunk.separate.lots" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, each of the ToC and LoTs
+(List of Examples, List of Figures, etc.)
+will be put in its own separate chunk.
+The title page includes generated links to each of the separate files.
+</para>
+<para>
+This feature depends on the
+<parameter>chunk.tocs.and.lots</parameter>
+parameter also being non-zero.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml
new file mode 100644
index 0000000..12cdb2c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.toc">
+<refmeta>
+<refentrytitle>chunk.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.toc</refname>
+<refpurpose>An explicit TOC to be used for chunking</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.toc.frag">
+<xsl:param name="chunk.toc"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>chunk.toc</parameter> identifies an explicit TOC that
+will be used for chunking. This parameter is only used by the
+<filename>chunktoc.xsl</filename> stylesheet (and customization layers built
+from it).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml
new file mode 100644
index 0000000..0bdd31b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.tocs.and.lots.has.title">
+<refmeta>
+<refentrytitle>chunk.tocs.and.lots.has.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.tocs.and.lots.has.title</refname>
+<refpurpose>Should ToC and LoTs in a separate chunks have title?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.tocs.and.lots.has.title.frag">
+<xsl:param name="chunk.tocs.and.lots.has.title" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero title of document is shown before ToC/LoT in
+separate chunk.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml
new file mode 100644
index 0000000..2a01fff
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunk.tocs.and.lots">
+<refmeta>
+<refentrytitle>chunk.tocs.and.lots</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunk.tocs.and.lots</refname>
+<refpurpose>Should ToC and LoTs be in separate chunks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="chunk.tocs.and.lots.frag">
+<xsl:param name="chunk.tocs.and.lots" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ToC and LoT (List of Examples, List of Figures, etc.)
+will be put in a separate chunk. At the moment, this chunk is not in the
+normal forward/backward navigation list. Instead, a new link is added to the
+navigation footer.</para>
+
+<para>This feature is still somewhat experimental. Feedback welcome.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml
new file mode 100644
index 0000000..3e9be4d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.cdata-section-elements">
+<refmeta>
+<refentrytitle>chunker.output.cdata-section-elements</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.cdata-section-elements</refname>
+<refpurpose>List of elements to escape with CDATA sections</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.cdata-section-elements.frag">
+<xsl:param name="chunker.output.cdata-section-elements"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the list of elements that should be escaped
+as CDATA sections by the chunking stylesheet. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml
new file mode 100644
index 0000000..6aa6e30
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.doctype-public">
+<refmeta>
+<refentrytitle>chunker.output.doctype-public</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.doctype-public</refname>
+<refpurpose>Public identifer to use in the document type of generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.doctype-public.frag">
+<xsl:param name="chunker.output.doctype-public"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the public identifier that should be used by
+the chunking stylesheet in the document type declaration of chunked pages.
+Not all processors support specification of
+this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml
new file mode 100644
index 0000000..2d67906
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.doctype-system">
+<refmeta>
+<refentrytitle>chunker.output.doctype-system</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.doctype-system</refname>
+<refpurpose>System identifier to use for the document type in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.doctype-system.frag">
+<xsl:param name="chunker.output.doctype-system"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the system identifier that should be used by
+the chunking stylesheet in the document type declaration of chunked pages.
+Not all processors support specification of
+this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml
new file mode 100644
index 0000000..f8993e9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.encoding">
+<refmeta>
+<refentrytitle>chunker.output.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.encoding</refname>
+<refpurpose>Encoding used in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.encoding.frag">
+<xsl:param name="chunker.output.encoding">ISO-8859-1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the encoding to be used in files
+generated by the chunking stylesheet. Not all processors support
+specification of this parameter.
+</para>
+<para>This parameter used to be named <literal>default.encoding</literal>.</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml
new file mode 100644
index 0000000..3da9ad4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.indent">
+<refmeta>
+<refentrytitle>chunker.output.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.indent</refname>
+<refpurpose>Specification of indentation on generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.indent.frag">
+<xsl:param name="chunker.output.indent">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the indent
+specification for generated pages. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml
new file mode 100644
index 0000000..6186971
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.media-type">
+<refmeta>
+<refentrytitle>chunker.output.media-type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.media-type</refname>
+<refpurpose>Media type to use in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.media-type.frag">
+<xsl:param name="chunker.output.media-type"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the media type that should be used by
+the chunking stylesheet. Not all processors support specification of
+this parameter.
+</para>
+<para>This parameter specifies the media type that should be used by the
+chunking stylesheet. This should be one from those defined in
+<link xlink:href="http://www.ietf.org/rfc/rfc2045.txt">[RFC2045]</link> and
+ <link xlink:href="http://www.ietf.org/rfc/rfc2046.txt">[RFC2046]</link> </para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+<para>It must be one from html, xml or text</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml
new file mode 100644
index 0000000..dc9359b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.method">
+<refmeta>
+<refentrytitle>chunker.output.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">html</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">xml</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.method</refname>
+<refpurpose>Method used in generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.method.frag">
+<xsl:param name="chunker.output.method">html</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the output method to be used in files
+generated by the chunking stylesheet.
+</para>
+<para>This parameter used to be named <literal>output.method</literal>.</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml
new file mode 100644
index 0000000..4b8262f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.omit-xml-declaration">
+<refmeta>
+<refentrytitle>chunker.output.omit-xml-declaration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.omit-xml-declaration</refname>
+<refpurpose>Omit-xml-declaration for generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.omit-xml-declaration.frag">
+<xsl:param name="chunker.output.omit-xml-declaration">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the omit-xml-declaration
+specification for generated pages. Not all processors support
+specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml
new file mode 100644
index 0000000..8972c47
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="chunker.output.standalone">
+<refmeta>
+<refentrytitle>chunker.output.standalone</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>chunker.output.standalone</refname>
+<refpurpose>Standalone declaration for generated pages</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="chunker.output.standalone.frag">
+<xsl:param name="chunker.output.standalone">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>This parameter specifies the value of the standalone
+ specification for generated pages. It must be either
+ <literal>yes</literal> or <literal>no</literal>. Not all
+ processors support specification of this parameter.
+</para>
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml
new file mode 100644
index 0000000..623511b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="citerefentry.link">
+<refmeta>
+<refentrytitle>citerefentry.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>citerefentry.link</refname>
+<refpurpose>Generate URL links when cross-referencing RefEntrys?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="citerefentry.link.frag">
+<xsl:param name="citerefentry.link" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a web link will be generated, presumably
+to an online man-&gt;HTML gateway. The text of the link is
+generated by the <literal>generate.citerefentry.link</literal> template.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml
new file mode 100644
index 0000000..378c969
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="collect.xref.targets">
+<refmeta>
+<refentrytitle>collect.xref.targets</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">only</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>collect.xref.targets</refname>
+<refpurpose>Controls whether cross reference data is
+collected</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <src:fragment xml:id="collect.xref.targets.frag">
+<xsl:param name="collect.xref.targets">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is <literal>no</literal>, which means the data file is not generated during processing. The other choices are <literal>yes</literal>, which means the data file is created and the document is processed for output, and <literal>only</literal>, which means the data file is created but the document is not processed for output.
+See also <parameter>targets.filename</parameter>.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml
new file mode 100644
index 0000000..95ee76d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.count.back">
+<refmeta>
+<refentrytitle>column.count.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.back</refname>
+<refpurpose>Number of columns on back matter pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.count.back.frag">
+<xsl:param name="column.count.back" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on back matter (appendix, glossary, etc.) pages.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml
new file mode 100644
index 0000000..a5d65b3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.count.body">
+<refmeta>
+<refentrytitle>column.count.body</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.body</refname>
+<refpurpose>Number of columns on body pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.count.body.frag">
+<xsl:param name="column.count.body" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on body pages.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml
new file mode 100644
index 0000000..64ff3ac
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.count.front">
+<refmeta>
+<refentrytitle>column.count.front</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.front</refname>
+<refpurpose>Number of columns on front matter pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.count.front.frag">
+<xsl:param name="column.count.front" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on front matter (dedication, preface, etc.) pages.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml
new file mode 100644
index 0000000..e485448
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.count.index">
+<refmeta>
+<refentrytitle>column.count.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.index</refname>
+<refpurpose>Number of columns on index pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.count.index.frag">
+<xsl:param name="column.count.index">2</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on index pages.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml
new file mode 100644
index 0000000..770988d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.count.lot">
+<refmeta>
+<refentrytitle>column.count.lot</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.lot</refname>
+<refpurpose>Number of columns on a 'List-of-Titles' page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.count.lot.frag">
+<xsl:param name="column.count.lot" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on a page sequence containing the Table of Contents,
+List of Figures, etc.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml
new file mode 100644
index 0000000..3deba6f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.count.titlepage">
+<refmeta>
+<refentrytitle>column.count.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.titlepage</refname>
+<refpurpose>Number of columns on a title page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.count.titlepage.frag">
+<xsl:param name="column.count.titlepage" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Number of columns on a title page</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml
new file mode 100644
index 0000000..3aaa1d3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.gap.back">
+<refmeta>
+<refentrytitle>column.gap.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.back</refname>
+<refpurpose>Gap between columns in back matter</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.gap.back.frag">
+<xsl:param name="column.gap.back">12pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in back matter (if
+<parameter>column.count.back</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml
new file mode 100644
index 0000000..57b0168
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.gap.body">
+<refmeta>
+<refentrytitle>column.gap.body</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.body</refname>
+<refpurpose>Gap between columns in the body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.gap.body.frag">
+<xsl:param name="column.gap.body">12pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in body matter (if
+<parameter>column.count.body</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml
new file mode 100644
index 0000000..a6f7263
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.gap.front">
+<refmeta>
+<refentrytitle>column.gap.front</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.front</refname>
+<refpurpose>Gap between columns in the front matter</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.gap.front.frag">
+<xsl:param name="column.gap.front">12pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in front matter (if
+<parameter>column.count.front</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml
new file mode 100644
index 0000000..2279f77
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.gap.index">
+<refmeta>
+<refentrytitle>column.gap.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.index</refname>
+<refpurpose>Gap between columns in the index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.gap.index.frag">
+<xsl:param name="column.gap.index">12pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns in indexes (if
+<parameter>column.count.index</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml
new file mode 100644
index 0000000..da0fa00
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.gap.lot">
+<refmeta>
+<refentrytitle>column.gap.lot</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.lot</refname>
+<refpurpose>Gap between columns on a 'List-of-Titles' page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.gap.lot.frag">
+<xsl:param name="column.gap.lot">12pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns on 'List-of-Titles' pages (if
+<parameter>column.count.lot</parameter> is greater than one).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml
new file mode 100644
index 0000000..7c13dbd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="column.gap.titlepage">
+<refmeta>
+<refentrytitle>column.gap.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.gap.titlepage</refname>
+<refpurpose>Gap between columns on title pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="column.gap.titlepage.frag">
+<xsl:param name="column.gap.titlepage">12pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the gap between columns on title pages (if
+<parameter>column.count.titlepage</parameter> is greater than one).</para>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml
new file mode 100644
index 0000000..f48f4a6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="compact.list.item.spacing">
+<refmeta>
+<refentrytitle>compact.list.item.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>compact.list.item.spacing</refname>
+<refpurpose>What space do you want between list items (when spacing="compact")?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="compact.list.item.spacing.frag"><xsl:attribute-set name="compact.list.item.spacing">
+ <xsl:attribute name="space-before.optimum">0em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify what spacing you want between each list item when
+<tag class="attribute">spacing</tag> is
+<quote><literal>compact</literal></quote>.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml
new file mode 100644
index 0000000..6dd7a68
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="component.label.includes.part.label">
+<refmeta>
+<refentrytitle>component.label.includes.part.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.label.includes.part.label</refname>
+<refpurpose>Do component labels include the part label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="component.label.includes.part.label.frag"><xsl:param name="component.label.includes.part.label" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, number labels for <tag>chapter</tag>,
+<tag>appendix</tag>, and other component elements are prefixed with
+the label of the part element that contains them. So you might see
+Chapter II.3 instead of Chapter 3. Also, the labels for formal
+elements such as <tag>table</tag> and <tag>figure</tag> will include
+the part label. If there is no part element container, then no prefix
+is generated.
+</para>
+<para>
+This feature is most useful when the
+<parameter>label.from.part</parameter> parameter is turned on.
+In that case, there would be more than one <tag>chapter</tag>
+<quote>1</quote>, and the extra part label prefix will identify
+each chapter unambiguously.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml
new file mode 100644
index 0000000..58cd4b4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="component.title.properties">
+<refmeta>
+<refentrytitle>component.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.title.properties</refname>
+<refpurpose>Properties for component titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="component.title.properties.frag">
+<xsl:attribute-set name="component.title.properties">
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute>
+ <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute>
+ <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">
+ <xsl:choose>
+ <xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography)) or (parent::slides | parent::slidesinfo)">center</xsl:when>
+ <xsl:otherwise>start</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all component titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml
new file mode 100644
index 0000000..47179f4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="component.titlepage.properties">
+<refmeta>
+<refentrytitle>component.titlepage.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>component.titlepage.properties</refname>
+<refpurpose>Properties for component titlepages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="component.titlepage.properties.frag">
+<xsl:attribute-set name="component.titlepage.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that are applied to the outer block containing
+all the component title page information.
+Its main use is to set a <literal>span="all"</literal>
+property on the block that is a direct child of the flow.</para>
+
+<para>This attribute-set also applies to index titlepages. It is empty by default.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml
new file mode 100644
index 0000000..5d5fa99
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="contrib.inline.enabled">
+<refmeta>
+<refentrytitle>contrib.inline.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>contrib.inline.enabled</refname>
+<refpurpose>Display contrib output inline?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="contrib.inline.enabled.frag"><xsl:param name="contrib.inline.enabled">1</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), output of the <tag>contrib</tag> element is
+displayed as inline content rather than as block content.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml
new file mode 100644
index 0000000..af3420e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="crop.mark.bleed">
+<refmeta>
+<refentrytitle>crop.mark.bleed</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.bleed</refname>
+<refpurpose>Length of invisible part of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="crop.mark.bleed.frag">
+<xsl:param name="crop.mark.bleed">6pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Length of invisible part of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml
new file mode 100644
index 0000000..cfd9bd3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="crop.mark.offset">
+<refmeta>
+<refentrytitle>crop.mark.offset</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.offset</refname>
+<refpurpose>Length of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="crop.mark.offset.frag">
+<xsl:param name="crop.mark.offset">24pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Length of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml
new file mode 100644
index 0000000..86c28b5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="crop.mark.width">
+<refmeta>
+<refentrytitle>crop.mark.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.mark.width</refname>
+<refpurpose>Width of crop marks.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="crop.mark.width.frag">
+<xsl:param name="crop.mark.width">0.5pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Width of crop marks. Crop marks are controlled by
+<parameter>crop.marks</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml
new file mode 100644
index 0000000..c68d5a0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="crop.marks">
+<refmeta>
+<refentrytitle>crop.marks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>crop.marks</refname>
+<refpurpose>Output crop marks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="crop.marks.frag">
+<xsl:param name="crop.marks" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, crop marks will be added to each page. Currently this
+works only with XEP if you have <parameter>xep.extensions</parameter> set.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml
new file mode 100644
index 0000000..02e3026
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="css.decoration">
+<refmeta>
+<refentrytitle>css.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.decoration</refname>
+<refpurpose>Enable CSS decoration of elements</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="css.decoration.frag">
+<xsl:param name="css.decoration" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, then html elements produced by the stylesheet may be
+decorated with <literal>style</literal> attributes. For example, the
+<literal>li</literal> tags produced for list items may include a
+fragment of CSS in the <literal>style</literal> attribute which sets
+the CSS property "list-style-type".
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml
new file mode 100644
index 0000000..e32b178
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="css.stylesheet.dir">
+<refmeta>
+<refentrytitle>css.stylesheet.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.stylesheet.dir</refname>
+<refpurpose>Default directory for CSS stylesheets</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="css.stylesheet.dir.frag">
+<xsl:param name="css.stylesheet.dir"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the default directory for the CSS stylesheet
+generated on all the slides. This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>css-stylesheet-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml
new file mode 100644
index 0000000..2acc66c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="css.stylesheet">
+<refmeta>
+<refentrytitle>css.stylesheet</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.stylesheet</refname>
+<refpurpose>CSS stylesheet for slides</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="css.stylesheet.frag">
+<xsl:param name="css.stylesheet">slides.css</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the CSS stylesheet used by all the slides. This parameter
+can be set in the source document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>css-stylesheet</literal>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml
new file mode 100644
index 0000000..93616f2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="current.docid">
+<refmeta>
+<refentrytitle>current.docid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>current.docid</refname>
+<refpurpose>targetdoc identifier for the document being
+processed</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <src:fragment xml:id="current.docid.frag">
+<xsl:param name="current.docid"/>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the <literal>targetdoc</literal> identifiers for both documents, as they appear in the <parameter>target.database.document</parameter> database file. This parameter passes to the stylesheet
+the targetdoc identifier of the current document, since that
+identifier does not appear in the document itself. </para>
+<para>This parameter can also be used for print output. If an olink's <literal>targetdoc</literal> id differs from the <literal>current.docid</literal>, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also <parameter>olink.doctitle</parameter> to enable that feature.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml
new file mode 100644
index 0000000..2bccf30
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="currentpage.marker">
+<refmeta>
+<refentrytitle>currentpage.marker</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>currentpage.marker</refname>
+<refpurpose>The text symbol used to mark the current page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="currentpage.marker.frag">
+<xsl:param name="currentpage.marker">@</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Character to use as identifying the current page in </para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml
new file mode 100644
index 0000000..24278ad
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml
@@ -0,0 +1,119 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="custom.css.source">
+ <refmeta>
+ <refentrytitle>custom.css.source</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>custom.css.source</refname>
+ <refpurpose>Name of a custom CSS input file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <src:fragment xml:id="custom.css.source.frag"><xsl:param name="custom.css.source"></xsl:param></src:fragment>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+<para>The <parameter>custom.css.source</parameter>
+parameter enables you to add CSS styles to DocBook's
+HTML output.</para>
+
+<para>The parameter
+specifies the name of a file containing custom
+CSS styles. The file must be a well-formed XML file that
+consists of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+For example:</para>
+<programlisting><![CDATA[<?xml version="1.0"?>
+<style>
+h2 {
+ font-weight: bold;
+ color: blue;
+}
+...
+</style>
+]]></programlisting>
+
+<para>The filename specified by the parameter
+should have a <literal>.xml</literal>
+filename suffix, although that is not required.
+The default value of this parameter is blank.</para>
+
+<para>If <parameter>custom.css.source</parameter> is not blank, then
+the stylesheet takes the following actions.
+These actions take place regardless of the value of
+the <parameter>make.clean.html</parameter> parameter.</para>
+
+<orderedlist>
+ <listitem>
+ <para>The stylesheet uses the XSLT <literal>document()</literal>
+ function to open the file specified by the parameter and
+ load it into a variable.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet forms an output pathname consisting of the
+ value of the <parameter>base.dir</parameter> parameter (if it is set)
+ and the value of <parameter>custom.css.source</parameter>,
+ with the <literal>.xml</literal> suffix stripped off.
+ </para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet removes the <tag>style</tag>
+ wrapper element and writes just the CSS text content to the output file.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet adds a <tag>link</tag> element to the
+ HTML <tag>HEAD</tag> element to reference this external CSS stylesheet.
+ For example:
+ <programlisting>&lt;link rel="stylesheet" href="custom.css" type="text/css"&gt;
+ </programlisting>
+ </para>
+ </listitem>
+</orderedlist>
+
+
+
+<para>If the <parameter>make.clean.html</parameter> parameter is nonzero
+(the default is zero),
+and if the <parameter>docbook.css.source</parameter> parameter
+is not blank (the default is not blank),
+then the stylesheet will also generate a default CSS file
+and add a <tag>link</tag> tag to reference it.
+The <tag>link</tag> to the custom CSS comes after the
+<tag>link</tag> to the default, so it should cascade properly
+in most browsers.
+If you do not want two <tag>link</tag> tags, and
+instead want your custom CSS to import the default generated
+CSS file, then do the following:
+</para>
+
+<orderedlist>
+ <listitem>
+ <para>Add a line like the following to your custom CSS source file:</para>
+ <programlisting>@import url("docbook.css")
+ </programlisting>
+ </listitem>
+ <listitem>
+ <para>Set the <parameter>docbook.css.link</parameter> parameter
+ to zero. This will omit the <tag>link</tag> tag
+ that references the default CSS file.</para>
+ </listitem>
+</orderedlist>
+
+<para>If you set <parameter>make.clean.html</parameter> to nonzero but
+you do not want the default CSS generated, then also set
+the <parameter>docbook.css.source</parameter> parameter to blank.
+Then no default CSS will be generated, and so
+all CSS styles must come from your custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml
new file mode 100644
index 0000000..1078b60
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="default.float.class">
+<refmeta>
+<refentrytitle>default.float.class</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.float.class</refname>
+<refpurpose>Specifies the default float class</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="default.float.class.frag">
+<xsl:param name="default.float.class">
+ <xsl:choose>
+ <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when>
+ <xsl:otherwise>before</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the direction in which a float should be placed. for
+xsl-fo this is before, for html it is left. For Western texts, the
+before direction is the top of the page.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml
new file mode 100644
index 0000000..0e84a72
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="default.image.width">
+<refmeta>
+<refentrytitle>default.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.image.width</refname>
+<refpurpose>The default width of images</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="default.image.width.frag">
+<xsl:param name="default.image.width"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If specified, this value will be used for the
+<tag class="attribute">width</tag> attribute on images that do not specify any
+<emphasis xlink:title="DocBook 5: The Definitive Guide"
+ xlink:href="http://docbook.org/tdg5/en/html/imagedata.html#viewport.area">viewport dimensions</emphasis>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml
new file mode 100644
index 0000000..38c8667
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="default.table.frame">
+<refmeta>
+<refentrytitle>default.table.frame</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.frame</refname>
+<refpurpose>The default framing of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="default.table.frame.frag">
+<xsl:param name="default.table.frame">all</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This value will be used when there is no frame attribute on the
+table. </para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml
new file mode 100644
index 0000000..ed698ec
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml
@@ -0,0 +1,76 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="default.table.rules">
+<refmeta>
+<refentrytitle>default.table.rules</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.rules</refname>
+<refpurpose>The default column and row rules for tables using HTML markup</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="default.table.rules.frag">
+<xsl:param name="default.table.rules">none</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Tables using HTML markup elements can use an attribute
+named <tag class="attribute">rules</tag> on the <tag>table</tag> or
+<tag>informaltable</tag> element
+to specify whether column and row border rules should be
+displayed. This parameter lets you specify a global default
+style for all HTML tables that don't otherwise have
+that attribute.</para>
+<para>These are the supported values:</para>
+
+<variablelist>
+<varlistentry><term>all</term>
+<listitem>
+<para>Rules will appear between all rows and columns.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>rows</term>
+<listitem>
+<para>Rules will appear between rows only.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>cols</term>
+<listitem>
+<para>Rules will appear between columns only.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>groups</term>
+<listitem>
+<para>Rules will appear between row groups (thead, tfoot, tbody).
+No support for rules between column groups yet.
+</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term>none</term>
+<listitem>
+<para>No rules. This is the default value.
+</para>
+</listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>The border after the last row and the border after
+the last column are not affected by
+this setting. Those borders are controlled by
+the <tag class="attribute">frame</tag> attribute on the table element.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml
new file mode 100644
index 0000000..184ce52
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="default.table.width">
+<refmeta>
+<refentrytitle>default.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.table.width</refname>
+<refpurpose>The default width of tables</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="default.table.width.frag">
+<xsl:param name="default.table.width"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, this value will be used for the
+<literal>width</literal> attribute on <tag>table</tag>s that do not specify an
+alternate width (with the <tag class="xmlpi">dbhtml table-width</tag> or
+<tag class="xmlpi">dbfo table-width</tag> processing instruction).</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml
new file mode 100644
index 0000000..f83c822
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="default.units">
+<refmeta>
+<refentrytitle>default.units</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">cm</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">mm</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">in</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">pt</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">pc</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">px</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">em</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default.units</refname>
+<refpurpose>Default units for an unqualified dimension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="default.units.frag">
+<xsl:param name="default.units">pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If an unqualified dimension is encountered (for example, in a
+graphic width), the <parameter>default.units</parameter> will be used for the
+units. Unqualified dimensions are not allowed in XSL Formatting Objects.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml
new file mode 100644
index 0000000..f9719cf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="dingbat.font.family">
+<refmeta>
+<refentrytitle>dingbat.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dingbat.font.family</refname>
+<refpurpose>The font family for copyright, quotes, and other symbols</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="dingbat.font.family.frag">
+<xsl:param name="dingbat.font.family">serif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The dingbat font family is used for dingbats. If it is defined
+as the empty string, no font change is effected around dingbats.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml
new file mode 100644
index 0000000..6d9e6e6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="docbook.css.link">
+<refmeta>
+<refentrytitle>docbook.css.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>docbook.css.link</refname>
+<refpurpose>Insert a link referencing the default CSS stylesheet</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="docbook.css.link.frag">
+<xsl:param name="docbook.css.link" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating a default
+CSS stylesheet file. The parameters
+<parameter>make.clean.html</parameter> and
+<parameter>docbook.css.source</parameter> control that feature.</para>
+
+<para>Normally if a default CSS file is generated, then
+the stylesheet inserts a <tag>link</tag> tag in the HTML
+<tag>HEAD</tag> element to reference it.
+However, you can omit that <tag>link</tag> reference if
+you set the <parameter>docbook.css.link</parameter> to zero
+(1 is the default).</para>
+
+<para>This parameter is useful when you want to import the
+default CSS into a custom CSS file generated using the
+<parameter>custom.css.source</parameter> parameter.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml
new file mode 100644
index 0000000..8ba7eb7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml
@@ -0,0 +1,83 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="docbook.css.source">
+ <refmeta>
+ <refentrytitle>docbook.css.source</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>docbook.css.source</refname>
+ <refpurpose>Name of the default CSS input file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <src:fragment xml:id="docbook.css.source.frag"><xsl:param name="docbook.css.source">docbook.css.xml</xsl:param></src:fragment>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+<para>The <parameter>docbook.css.source</parameter> parameter
+specifies the name of the file containing the default DocBook
+CSS styles. Those styles are necessary when the
+<parameter>make.clean.html</parameter> parameter is nonzero.</para>
+
+<para>The file is a well-formed XML file that
+must consist of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+The default value of the parameter (and filename)
+is <literal>docbook.css.xml</literal>.
+The stylesheets ship with the default file. You can substitute
+your own and specify its path in this parameter.</para>
+
+<para>If <parameter>docbook.css.source</parameter> is not blank,
+and <parameter>make.clean.html</parameter> is nonzero, then
+the stylesheet takes the following actions:</para>
+
+<orderedlist>
+ <listitem>
+ <para>The stylesheet uses the XSLT <literal>document()</literal>
+ function to open the file specified by the parameter and
+ load it into a variable.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet forms an output pathname consisting of the
+ value of the <parameter>base.dir</parameter> parameter (if it is set)
+ and the value of <parameter>docbook.css.source</parameter>,
+ with the <literal>.xml</literal> suffix stripped off.
+ </para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet removes the <tag>style</tag>
+ wrapper element and writes just the CSS text content to the output file.</para>
+ </listitem>
+ <listitem>
+ <para>The stylesheet adds a <tag>link</tag> element to the
+ HTML <tag>HEAD</tag> element to reference the external CSS stylesheet.
+ For example:</para>
+ <programlisting>&lt;link rel="stylesheet" href="docbook.css" type="text/css"&gt;
+ </programlisting>
+ <para>However, if the <parameter>docbook.css.link</parameter>
+ parameter is set to zero, then no <tag>link</tag> is written
+ for the default CSS file. That is useful if a custom
+ CSS file will import the default CSS stylesheet to ensure
+ proper cascading of styles.</para>
+ </listitem>
+</orderedlist>
+
+<para>If the <parameter>docbook.css.source</parameter> parameter
+is changed from its default <literal>docbook.css.xml</literal> to blank,
+then no default CSS is generated. Likewise if the
+<parameter>make.clean.html</parameter> parameter is set to zero,
+then no default CSS is generated. The
+<parameter>custom.css.source</parameter> parameter can be used
+instead to generate a complete custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml
new file mode 100644
index 0000000..3758f1f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="double.sided">
+<refmeta>
+<refentrytitle>double.sided</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>double.sided</refname>
+<refpurpose>Is the document to be printed double sided?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="double.sided.frag">
+<xsl:param name="double.sided" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Double-sided documents are printed with a slightly wider margin
+on the binding edge of the page.
+</para>
+<para>FIXME: The current set of parameters does not take writing direction
+into account.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml
new file mode 100644
index 0000000..2f62d06
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="draft.mode">
+<refmeta>
+<refentrytitle>draft.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.mode</refname>
+<refpurpose>Select draft mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="draft.mode.frag">
+<xsl:param name="draft.mode">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects draft mode. If <parameter>draft.mode</parameter> is
+<quote><literal>yes</literal></quote>, the entire document will be treated
+as a draft. If it is <quote><literal>no</literal></quote>, the entire document
+will be treated as a final copy. If it is <quote><literal>maybe</literal></quote>,
+individual sections will be treated as draft or final independently, depending
+on how their <literal>status</literal> attribute is set.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml
new file mode 100644
index 0000000..ef053a0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="draft.watermark.image">
+<refmeta>
+<refentrytitle>draft.watermark.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>draft.watermark.image</refname>
+<refpurpose>The URI of the image to be used for draft watermarks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="draft.watermark.image.frag">
+<xsl:param name="draft.watermark.image">images/draft.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The image to be used for draft watermarks.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml
new file mode 100644
index 0000000..dd481c3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="dry-run">
+<refmeta>
+<refentrytitle>dry-run</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dry-run</refname>
+<refpurpose>Indicates that no files should be produced</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+ <src:fragment xml:id="dry-run.frag">
+ <xsl:param name="dry-run" select="0"/>
+ </src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to suppress the generation of
+new and updated files. Effectively, this allows you to see what the
+stylesheet would do, without actually making any changes.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml
new file mode 100644
index 0000000..232f19e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="dynamic.toc">
+<refmeta>
+<refentrytitle>dynamic.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dynamic.toc</refname>
+<refpurpose>Dynamic ToCs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="dynamic.toc.frag">
+<xsl:param name="dynamic.toc" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is used to make the ToC panel <quote>dynamic</quote>.
+In a dynamic ToC, each section in the ToC can be expanded and collapsed by
+clicking on the appropriate image.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml
new file mode 100644
index 0000000..5c89748
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ebnf.assignment">
+<refmeta>
+<refentrytitle>ebnf.assignment</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.assignment</refname>
+<refpurpose>The EBNF production assignment operator</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ebnf.assignment.frag">
+<xsl:param condition="html" name="ebnf.assignment">
+<code xmlns="">::=</code>
+</xsl:param>
+<xsl:param xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" condition="fo" name="ebnf.assignment">
+ <fo:inline font-family="{$monospace.font.family}">
+ <xsl:text>::=</xsl:text>
+ </fo:inline>
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.assignment</parameter> parameter determines what
+text is used to show <quote>assignment</quote> in <tag>production</tag>s
+in <tag>productionset</tag>s.</para>
+
+<para>While <quote><literal>::=</literal></quote> is common, so are several
+other operators.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml
new file mode 100644
index 0000000..4e8bd12
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ebnf.statement.terminator">
+<refmeta>
+<refentrytitle>ebnf.statement.terminator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.statement.terminator</refname>
+<refpurpose>Punctuation that ends an EBNF statement.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ebnf.statement.terminator.frag">
+<xsl:param condition="html" name="ebnf.statement.terminator"/>
+<xsl:param condition="fo" name="ebnf.statement.terminator"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>ebnf.statement.terminator</parameter> parameter determines what
+text is used to terminate each <tag>production</tag>
+in <tag>productionset</tag>.</para>
+
+<para>Some notations end each statement with a period.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml
new file mode 100644
index 0000000..747f140
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ebnf.table.bgcolor">
+<refmeta>
+<refentrytitle>ebnf.table.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.bgcolor</refname>
+<refpurpose>Background color for EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ebnf.table.bgcolor.frag">
+<xsl:param name="ebnf.table.bgcolor" >#F5DCB3</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the background color for EBNF tables (a pale brown). No
+<tag>bgcolor</tag> attribute is output if
+<parameter>ebnf.table.bgcolor</parameter> is set to the null string. </para>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml
new file mode 100644
index 0000000..e4e50ae
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ebnf.table.border">
+<refmeta>
+<refentrytitle>ebnf.table.border</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.border</refname>
+<refpurpose>Selects border on EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ebnf.table.border.frag"><xsl:param name="ebnf.table.border" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the border on EBNF tables. If non-zero, the tables have
+borders, otherwise they don't.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml
new file mode 100644
index 0000000..622196e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="eclipse.autolabel">
+<refmeta>
+<refentrytitle>eclipse.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.autolabel</refname>
+<refpurpose>Should tree-like ToC use autonumbering feature?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="eclipse.autolabel.frag">
+<xsl:param name="eclipse.autolabel" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want to include chapter and section numbers into ToC in
+the left panel, set this parameter to 1.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml
new file mode 100644
index 0000000..75557e5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="eclipse.plugin.id">
+<refmeta>
+<refentrytitle>eclipse.plugin.id</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.id</refname>
+<refpurpose>Eclipse Help plugin id</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="eclipse.plugin.id.frag">
+<xsl:param name="eclipse.plugin.id">com.example.help</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin id. You should change this id to something
+unique for each help.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml
new file mode 100644
index 0000000..0df83ec
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="eclipse.plugin.name">
+<refmeta>
+<refentrytitle>eclipse.plugin.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.name</refname>
+<refpurpose>Eclipse Help plugin name</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="eclipse.plugin.name.frag">
+<xsl:param name="eclipse.plugin.name">DocBook Online Help Sample</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin name.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml
new file mode 100644
index 0000000..03261fe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="eclipse.plugin.provider">
+<refmeta>
+<refentrytitle>eclipse.plugin.provider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>eclipse.plugin.provider</refname>
+<refpurpose>Eclipse Help plugin provider name</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="eclipse.plugin.provider.frag">
+<xsl:param name="eclipse.plugin.provider">Example provider</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Eclipse Help plugin provider name.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml
new file mode 100644
index 0000000..78089f9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="editedby.enabled">
+<refmeta>
+<refentrytitle>editedby.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>editedby.enabled</refname>
+<refpurpose>Display “Edited by†heading above editor name?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="editedby.enabled.frag"><xsl:param name="editedby.enabled">1</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a localized <emphasis role="bold">Edited
+by</emphasis> heading is displayed above editor names in output of the
+<tag>editor</tag> element.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml
new file mode 100644
index 0000000..b07cd6d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="email.delimiters.enabled">
+<refmeta>
+<refentrytitle>email.delimiters.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.delimiters.enabled</refname>
+<refpurpose>Generate delimiters around email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="email.delimiters.enabled.frag">
+<xsl:param name="email.delimiters.enabled" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, delimiters
+
+<footnote><para>For delimiters, the
+stylesheets are currently hard-coded to output angle
+brackets.</para></footnote>
+
+are generated around e-mail addresses
+(the output of the <tag>email</tag> element).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml
new file mode 100644
index 0000000..e4eb8d1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="email.mailto.enabled">
+<refmeta>
+<refentrytitle>email.mailto.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>email.mailto.enabled</refname>
+<refpurpose>Generate mailto: links for email addresses?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="email.mailto.enabled.frag">
+<xsl:param name="email.mailto.enabled" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero the generated output for the <tag>email</tag> element
+will be a clickable mailto: link that brings up the default mail client
+on the system.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml
new file mode 100644
index 0000000..9ff55f5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="emphasis.propagates.style">
+<refmeta>
+<refentrytitle>emphasis.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>emphasis.propagates.style</refname>
+<refpurpose>Pass emphasis role attribute through to HTML?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="emphasis.propagates.style.frag">
+<xsl:param name="emphasis.propagates.style" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the <literal>role</literal> attribute of
+<tag>emphasis</tag> elements will be passed through to the HTML as a
+class attribute on a <literal>span</literal> that surrounds the
+emphasis.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml
new file mode 100644
index 0000000..7f43c66
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="entry.propagates.style">
+<refmeta>
+<refentrytitle>entry.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>entry.propagates.style</refname>
+<refpurpose>Pass entry role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="entry.propagates.style.frag">
+<xsl:param name="entry.propagates.style" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, the role attribute of <tag>entry</tag> elements
+will be passed through to the HTML as a class attribute on the
+<tag>td</tag> or <tag>th</tag> generated for the table
+cell.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml
new file mode 100644
index 0000000..8a64555
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="epub.autolabel">
+<refmeta>
+<refentrytitle>epub.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>epub.autolabel</refname>
+<refpurpose>Should tree-like ToC use autonumbering feature?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="epub.autolabel.frag">
+<xsl:param name="epub.autolabel" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want to include chapter and section numbers into ToC in,
+set this parameter to 1.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml
new file mode 100644
index 0000000..6e05d39
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="equation.number.properties">
+<refmeta>
+<refentrytitle>equation.number.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>equation.number.properties</refname>
+<refpurpose>Properties that apply to the <tag>fo:table-cell</tag> containing the number
+of an <tag>equation</tag> that does not have a title.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="equation.number.properties.frag"><xsl:attribute-set name="equation.number.properties">
+ <xsl:attribute name="text-align">end</xsl:attribute>
+ <xsl:attribute name="display-align">center</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to the fo:table-cell containing the number
+of an equation when it has no title. The number in an equation with a
+title is formatted along with the title, and this attribute-set does not apply.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml
new file mode 100644
index 0000000..a88f683
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="equation.properties">
+<refmeta>
+<refentrytitle>equation.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>equation.properties</refname>
+<refpurpose>Properties associated with a equation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="equation.properties.frag">
+<xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for equations.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml
new file mode 100644
index 0000000..53e695b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="example.properties">
+<refmeta>
+<refentrytitle>example.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>example.properties</refname>
+<refpurpose>Properties associated with a example</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="example.properties.frag">
+<xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for examples.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml
new file mode 100644
index 0000000..c5d009e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml
@@ -0,0 +1,44 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="exsl.node.set.available">
+<refmeta>
+<refentrytitle>exsl.node.set.available</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>exsl.node.set.available</refname>
+<refpurpose>Is the test function-available('exsl:node-set') true?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="exsl.node.set.available.frag"><xsl:param name="exsl.node.set.available">
+ <xsl:choose>
+ <xsl:when exsl:foo="" xmlns:exsl="http://exslt.org/common"
+ test="function-available('exsl:node-set') or
+ contains(system-property('xsl:vendor'),
+ 'Apache Software Foundation')">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+then the exsl:node-set() function is available to be used in
+the stylesheet.
+If zero, then the function is not available.
+This param automatically detects the presence of
+the function and does not normally need to be set manually.</para>
+
+<para>This param was created to handle a long-standing
+bug in the Xalan processor that fails to detect the
+function even though it is available.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml
new file mode 100644
index 0000000..bc37daf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="feedback.href">
+<refmeta>
+<refentrytitle>feedback.href</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.href</refname>
+<refpurpose>HREF (URI) for feedback link</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="feedback.href.frag">
+<xsl:param name="feedback.href"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The <varname>feedback.href</varname> value is used as the value
+for the <tag class="attribute">href</tag> attribute on the feedback
+link. If <varname>feedback.href</varname>
+is empty, no feedback link is generated.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml
new file mode 100644
index 0000000..c80feef
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="feedback.link.text">
+<refmeta>
+<refentrytitle>feedback.link.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.link.text</refname>
+<refpurpose>The text of the feedback link</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="feedback.link.text.frag">
+<xsl:param name="feedback.link.text">Feedback</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The contents of this variable is used as the text of the feedback
+link if <varname>feedback.href</varname> is not empty. If
+<varname>feedback.href</varname> is empty, no feedback link is
+generated.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml
new file mode 100644
index 0000000..3edfa26
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="feedback.with.ids">
+<refmeta>
+<refentrytitle>feedback.with.ids</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.with.ids</refname>
+<refpurpose>Toggle use of IDs in feedback</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="feedback.with.ids.frag">
+<xsl:param name="feedback.with.ids" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>feedback.with.ids</varname> is non-zero, the ID of the
+current page will be added to the feedback link. This can be used, for
+example, if the <varname>feedback.href</varname> is a CGI script.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml
new file mode 100644
index 0000000..e9f6748
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="figure.properties">
+<refmeta>
+<refentrytitle>figure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>figure.properties</refname>
+<refpurpose>Properties associated with a figure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="figure.properties.frag">
+<xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for figures.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml
new file mode 100644
index 0000000..54c043d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="filename-prefix">
+<refmeta>
+<refentrytitle>filename-prefix</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>filename-prefix</refname>
+<refpurpose>Prefix added to all filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="filename-prefix.frag">
+<xsl:param name="filename-prefix"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>To produce the <quote>text-only</quote> (that is, non-tabular) layout
+of a website simultaneously with the tabular layout, the filenames have to
+be distinguished. That's accomplished by adding the
+<varname>filename-prefix</varname> to the front of each filename.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml
new file mode 100644
index 0000000..32ea305
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="firstterm.only.link">
+<refmeta>
+<refentrytitle>firstterm.only.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>firstterm.only.link</refname>
+<refpurpose>Does automatic glossterm linking only apply to firstterms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="firstterm.only.link.frag">
+<xsl:param name="firstterm.only.link" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, only <tag>firstterm</tag>s will be automatically linked
+to the glossary. If glossary linking is not enabled, this parameter
+has no effect.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml
new file mode 100644
index 0000000..11ad146
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.properties">
+<refmeta>
+<refentrytitle>foil.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.properties</refname>
+<refpurpose>Specifies properties for all foils</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.properties.frag">
+ <xsl:attribute-set name="foil.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.start}">1in</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">1in</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.size"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foils.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml
new file mode 100644
index 0000000..4832fbe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.subtitle.properties">
+<refmeta>
+<refentrytitle>foil.subtitle.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.subtitle.properties</refname>
+<refpurpose>Specifies properties for all foil subtitles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.subtitle.properties.frag">
+ <xsl:attribute-set name="foil.subtitle.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$foil.title.master * 0.8"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="space-after">12pt</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foil subtitles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml
new file mode 100644
index 0000000..f5ba07f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.title.master">
+<refmeta>
+<refentrytitle>foil.title.master</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.master</refname>
+<refpurpose>Specifies unitless font size to use for foil titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="foil.title.master.frag">
+<xsl:param name="foil.title.master">36</xsl:param>
+<!-- Inconsistant use of point size? -->
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies a unitless font size to use for foil titles; used in
+combination with the <parameter>foil.title.size</parameter>
+parameter.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml
new file mode 100644
index 0000000..3163600
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.title.size">
+<refmeta>
+<refentrytitle>foil.title.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.size</refname>
+<refpurpose>Specifies font size to use for foil titles, including units</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.title.size.frag">
+ <xsl:param name="foil.title.size">
+ <xsl:value-of select="$foil.title.master"/><xsl:text>pt</xsl:text>
+ </xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter combines the value of the
+<parameter>foil.title.master</parameter> parameter with a unit
+specification. The default unit is <literal>pt</literal>
+(points).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml
new file mode 100644
index 0000000..cd9805a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foilgroup.properties">
+<refmeta>
+<refentrytitle>foilgroup.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foilgroup.properties</refname>
+<refpurpose>Specifies properties for all foilgroups</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foilgroup.properties.frag">
+ <xsl:attribute-set name="foilgroup.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foilgroups.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml
new file mode 100644
index 0000000..31d7cb3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foilgroup.toc">
+<refmeta>
+<refentrytitle>foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foilgroup.toc</refname>
+<refpurpose>Put ToC on foilgroup pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="foilgroup.toc.frag">
+<xsl:param name="foilgroup.toc" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a ToC will be placed on foilgroup pages (after any
+other content).
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml
new file mode 100644
index 0000000..eca2270
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml
@@ -0,0 +1,80 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footer.column.widths">
+<refmeta>
+<refentrytitle>footer.column.widths</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.column.widths</refname>
+<refpurpose>Specify relative widths of footer areas</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><src:fragment xml:id="footer.column.widths.frag">
+<xsl:param name="footer.column.widths">1 1 1</xsl:param>
+</src:fragment></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page footers in print output use a three column table
+to position text at the left, center, and right side of
+the footer on the page.
+This parameter lets you specify the relative sizes of the
+three columns. The default value is
+"1 1 1".</para>
+
+<para>The parameter value must be three numbers, separated
+by white space. The first number represents the relative
+width of the inside footer for
+double-sided output. The second number is the relative
+width of the center footer. The third number is the
+relative width of the outside footer for
+double-sided output.
+</para>
+<para>For single-sided output, the first number is the
+relative width of left footer for left-to-right
+text direction, or the right footer for right-to-left
+text direction.
+The third number is the
+relative width of right footer for left-to-right
+text direction, or the left footer for right-to-left
+text direction.</para>
+
+<para>The numbers are used to specify the column widths
+for the table that makes up the footer area.
+In the FO output, this looks like:
+</para>
+
+<programlisting>
+&lt;fo:table-column column-number="1"
+ column-width="proportional-column-width(1)"/&gt;
+</programlisting>
+
+<para>
+The <literal>proportional-column-width()</literal>
+function computes a column width by dividing its
+argument by the total of the arguments for all the columns, and
+then multiplying the result by the width of the whole table
+(assuming all the column specs use the function).
+Its argument can be any positive integer or floating point number.
+Zero is an acceptable value, although some FO processors
+may warn about it, in which case using a very small number might
+be more satisfactory.
+</para>
+
+<para>For example, the value "1 2 1" means the center
+footer should have twice the width of the other areas.
+A value of "0 0 1" means the entire footer area
+is reserved for the right (or outside) footer text.
+Note that to keep the center area centered on
+the page, the left and right values must be
+the same. A specification like "1 2 3" means the
+center area is no longer centered on the page
+since the right area is three times the width of the left area.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml
new file mode 100644
index 0000000..1212cbd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footer.content.properties">
+<refmeta>
+<refentrytitle>footer.content.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.content.properties</refname>
+<refpurpose>Properties of page footer content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footer.content.properties.frag">
+<xsl:attribute-set name="footer.content.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$body.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties of page footer content.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml
new file mode 100644
index 0000000..d1a5bf8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footer.hr">
+<refmeta>
+<refentrytitle>footer.hr</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.hr</refname>
+<refpurpose>Toggle &lt;HR&gt; before footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footer.hr.frag">
+<xsl:param name="footer.hr" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, an &lt;HR&gt; is generated at the bottom of each web page,
+before the footer.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml
new file mode 100644
index 0000000..6b00ade
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footer.rule">
+<refmeta>
+<refentrytitle>footer.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.rule</refname>
+<refpurpose>Rule over footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footer.rule.frag">
+<xsl:param name="footer.rule" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn above the page footers.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml
new file mode 100644
index 0000000..2f6c45e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footer.table.height">
+<refmeta>
+<refentrytitle>footer.table.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.table.height</refname>
+<refpurpose>Specify the minimum height of the table containing the running page footers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><src:fragment xml:id="footer.table.height.frag">
+<xsl:param name="footer.table.height" >14pt</xsl:param>
+</src:fragment></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page footers in print output use a three column table
+to position text at the left, center, and right side of
+the footer on the page.
+This parameter lets you specify the minimum height
+of the single row in the table.
+Since this specifies only the minimum height,
+the table should automatically grow to fit taller content.
+The default value is "14pt".</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml
new file mode 100644
index 0000000..12e67d3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footer.table.properties">
+<refmeta>
+<refentrytitle>footer.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.table.properties</refname>
+<refpurpose>Apply properties to the footer layout table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id='footer.table.properties.frag'>
+<xsl:attribute-set name="footer.table.properties">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ <xsl:attribute name="width">100%</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties applied to the table that lays out the page footer.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml
new file mode 100644
index 0000000..2964f78
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footers.on.blank.pages">
+<refmeta>
+<refentrytitle>footers.on.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footers.on.blank.pages</refname>
+<refpurpose>Put footers on blank pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footers.on.blank.pages.frag">
+<xsl:param name="footers.on.blank.pages" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, footers will be placed on blank pages.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml
new file mode 100644
index 0000000..88d0c0b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footnote.font.size">
+<refmeta>
+<refentrytitle>footnote.font.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.font.size</refname>
+<refpurpose>The font size for footnotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footnote.font.size.frag"><xsl:param name="footnote.font.size">
+ <xsl:value-of select="$body.font.master * 0.8"/><xsl:text>pt</xsl:text>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The footnote font size is used for...footnotes!
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml
new file mode 100644
index 0000000..2dbc9c1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml
@@ -0,0 +1,41 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footnote.mark.properties">
+<refmeta>
+<refentrytitle>footnote.mark.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.mark.properties</refname>
+<refpurpose>Properties applied to each footnote mark
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footnote.mark.properties.frag">
+<xsl:attribute-set name="footnote.mark.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-size">75%</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="font-style">normal</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote mark used
+for each footnote.
+It should contain only inline properties.
+</para>
+
+<para>The property to make the mark a superscript is contained in the
+footnote template itself, because the current version of FOP reports
+an error if baseline-shift is used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml
new file mode 100644
index 0000000..c323720
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footnote.number.format">
+<refmeta>
+<refentrytitle>footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footnote.number.format.frag">
+<xsl:param name="footnote.number.format" >1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml
new file mode 100644
index 0000000..10ca7d3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footnote.number.symbols">
+<refmeta>
+<refentrytitle>footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype"/>
+</refmeta>
+<refnamediv>
+<refname>footnote.number.symbols</refname>
+<refpurpose>Special characters to use as footnote markers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footnote.number.symbols.frag">
+<xsl:param name="footnote.number.symbols"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>footnote.number.symbols</parameter> is not the empty string,
+footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>†</quote>, <quote>‡</quote>,
+<quote>◊</quote>, and <quote>✠</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml
new file mode 100644
index 0000000..f62adee
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footnote.properties">
+<refmeta>
+<refentrytitle>footnote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to each footnote body
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footnote.properties.frag">
+<xsl:attribute-set name="footnote.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="font-style">normal</xsl:attribute>
+ <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute>
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+ <xsl:attribute name="text-indent">0pt</xsl:attribute>
+ <xsl:attribute name="hyphenate"><xsl:value-of select="$hyphenate"/></xsl:attribute>
+ <xsl:attribute name="wrap-option">wrap</xsl:attribute>
+ <xsl:attribute name="linefeed-treatment">treat-as-space</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote-block
+for each footnote.
+It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all footnotes.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml
new file mode 100644
index 0000000..27f9489
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="footnote.sep.leader.properties">
+<refmeta>
+<refentrytitle>footnote.sep.leader.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.sep.leader.properties</refname>
+<refpurpose>Properties associated with footnote separators</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="footnote.sep.leader.properties.frag">
+<xsl:attribute-set name="footnote.sep.leader.properties">
+ <xsl:attribute name="color">black</xsl:attribute>
+ <xsl:attribute name="leader-pattern">rule</xsl:attribute>
+ <xsl:attribute name="leader-length">1in</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for the rule line that separates the
+footnotes from the body text.
+These are properties applied to the fo:leader used as
+the separator.
+</para>
+<para>If you want to do more than just set properties on
+the leader element, then you can customize the template
+named <literal>footnote.separator</literal> in
+<filename>fo/pagesetup.xsl</filename>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml
new file mode 100644
index 0000000..e122368
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="fop.extensions">
+<refmeta>
+<refentrytitle>fop.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fop.extensions</refname>
+<refpurpose>Enable extensions for FOP version 0.20.5 and earlier</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="fop.extensions.frag"><xsl:param name="fop.extensions" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions intended for
+<link xlink:href="http://xml.apache.org/fop/">FOP</link>
+version 0.20.5 and earlier will be used.
+At present, this consists of PDF bookmarks.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported.</para>
+
+<para>If you are using a version of FOP beyond
+version 0.20.5, then use the <parameter>fop1.extensions</parameter> parameter
+instead.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml
new file mode 100644
index 0000000..dcbcf5b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="fop1.extensions">
+<refmeta>
+<refentrytitle>fop1.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fop1.extensions</refname>
+<refpurpose>Enable extensions for FOP version 0.90 and later</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="fop1.extensions.frag"><xsl:param name="fop1.extensions" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions for
+<link xlink:href="http://xml.apache.org/fop/">FOP</link>
+version 0.90 and later will be used.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported.</para>
+
+<para>The original <parameter>fop.extensions</parameter> parameter
+should still be used for FOP version 0.20.5 and earlier.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml
new file mode 100644
index 0000000..f36aeaf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="formal.object.properties">
+<refmeta>
+<refentrytitle>formal.object.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.object.properties</refname>
+<refpurpose>Properties associated with a formal object such as a figure, or other component that has a title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="formal.object.properties.frag">
+<xsl:attribute-set name="formal.object.properties">
+ <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+ <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for formal objects in docbook. Specify the spacing
+before and after the object.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml
new file mode 100644
index 0000000..4f10885
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="formal.procedures">
+<refmeta>
+<refentrytitle>formal.procedures</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.procedures</refname>
+<refpurpose>Selects formal or informal procedures</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="formal.procedures.frag">
+<xsl:param name="formal.procedures" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formal procedures are numbered and always have a title.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml
new file mode 100644
index 0000000..e56f200
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml
@@ -0,0 +1,41 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="formal.title.placement">
+<refmeta>
+<refentrytitle>formal.title.placement</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.placement</refname>
+<refpurpose>Specifies where formal object titles should occur</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="formal.title.placement.frag">
+<xsl:param name="formal.title.placement">
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies where formal object titles should occur. For each formal object
+type (<tag>figure</tag>,
+<tag>example</tag>,
+<tag>equation</tag>,
+<tag>table</tag>, and <tag>procedure</tag>)
+you can specify either the keyword
+<quote><literal>before</literal></quote> or
+<quote><literal>after</literal></quote>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml
new file mode 100644
index 0000000..898d572
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="formal.title.properties">
+<refmeta>
+<refentrytitle>formal.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>formal.title.properties</refname>
+<refpurpose>Style the title element of formal object such as a figure.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="formal.title.properties.frag">
+<xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify how the title should be styled. Specify the font size and weight of the title of the formal object.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml
new file mode 100644
index 0000000..44037c3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="funcsynopsis.decoration">
+<refmeta>
+<refentrytitle>funcsynopsis.decoration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.decoration</refname>
+<refpurpose>Decorate elements of a <tag>funcsynopsis</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="funcsynopsis.decoration.frag">
+<xsl:param name="funcsynopsis.decoration" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, elements of the <tag>funcsynopsis</tag> will be
+decorated (e.g. rendered as bold or italic text). The decoration is controlled by
+templates that can be redefined in a customization layer.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml
new file mode 100644
index 0000000..fc3ad85
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="funcsynopsis.style">
+<refmeta>
+<refentrytitle>funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="funcsynopsis.style.frag"><xsl:param name="funcsynopsis.style">kr</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>funcsynopsis.style</parameter> is <literal>ansi</literal>,
+ANSI-style function synopses are generated for a
+<tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml
new file mode 100644
index 0000000..15d6df0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="function.parens">
+<refmeta>
+<refentrytitle>function.parens</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>function.parens</refname>
+<refpurpose>Generate parens after a function?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="function.parens.frag">
+<xsl:param name="function.parens" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the formatting of a <tag>function</tag> element
+will include generated parentheses.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml
new file mode 100644
index 0000000..05965c1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.css.header">
+<refmeta>
+<refentrytitle>generate.css.header</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.css.header</refname>
+<refpurpose>Insert generated CSS styles in HEAD element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.css.header.frag">
+<xsl:param name="generate.css.header" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating both default
+and custom CSS stylesheet files. The parameters
+<parameter>make.clean.html</parameter>,
+<parameter>docbook.css.source</parameter>, and
+<parameter>custom.css.source</parameter> control that feature.</para>
+
+<para>If you require that CSS styles reside in the HTML
+<tag>HEAD</tag> element instead of external CSS files,
+then set the <parameter>generate.css.header</parameter>
+parameter to nonzero (it is zero by default).
+Then instead of generating the CSS in external files,
+they are wrapped in <tag>style</tag> elements in
+the <tag>HEAD</tag> element of each HTML output file.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml
new file mode 100644
index 0000000..6326841
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml
@@ -0,0 +1,59 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.id.attributes">
+<refmeta>
+<refentrytitle>generate.id.attributes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.id.attributes</refname>
+<refpurpose>Generate ID attributes on container elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.id.attributes.frag">
+<xsl:param name="generate.id.attributes" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the HTML stylesheet will generate ID attributes on
+containers. For example, the markup:</para>
+
+<screen>&lt;section id="foo"&gt;&lt;title&gt;Some Title&lt;/title&gt;
+&lt;para&gt;Some para.&lt;/para&gt;
+&lt;/section&gt;</screen>
+
+<para>might produce:</para>
+
+<screen>&lt;div class="section" id="foo"&gt;
+&lt;h2&gt;Some Title&lt;/h2&gt;
+&lt;p&gt;Some para.&lt;/p&gt;
+&lt;/div&gt;</screen>
+
+<para>The alternative is to generate anchors:</para>
+
+<screen>&lt;div class="section"&gt;
+&lt;h2&gt;&lt;a name="foo"&gt;&lt;/a&gt;Some Title&lt;/h2&gt;
+&lt;p&gt;Some para.&lt;/p&gt;
+&lt;/div&gt;</screen>
+
+<para>Because the <tag class="attribute">name</tag> attribute of
+the <tag>a</tag> element and the <tag class="attribute">id</tag>
+attribute of other tags are both of type <quote>ID</quote>, producing both
+generates invalid documents.</para>
+
+<para>As of version 1.50, you can use this switch to control which type of
+identifier is generated. For backwards-compatibility, generating
+<tag>a</tag> anchors is preferred.</para>
+
+<para>Note: at present, this switch is incompletely implemented.
+Disabling ID attributes will suppress them, but enabling ID attributes
+will not suppress the anchors.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml
new file mode 100644
index 0000000..8cab350
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.index">
+<refmeta>
+<refentrytitle>generate.index</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.index</refname>
+<refpurpose>Do you want an index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.index.frag"><xsl:param name="generate.index" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify if an index should be generated. </para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml
new file mode 100644
index 0000000..534e050
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml
@@ -0,0 +1,72 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.legalnotice.link">
+<refmeta>
+<refentrytitle>generate.legalnotice.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.legalnotice.link</refname>
+<refpurpose>Write legalnotice to separate chunk and generate link?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.legalnotice.link.frag"><xsl:param name="generate.legalnotice.link" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>generate.legalnotice.link</parameter>
+is non-zero, the stylesheet:
+
+<itemizedlist>
+ <listitem>
+ <para>writes the contents of <tag>legalnotice</tag> to a separate
+ HTML file</para>
+ </listitem>
+ <listitem>
+ <para>inserts a hyperlink to the <tag>legalnotice</tag> file</para>
+ </listitem>
+ <listitem>
+ <para>adds (in the HTML <literal>head</literal>) either a single
+ <literal>link</literal> or element or multiple
+ <literal>link</literal> elements (depending on the value of the
+ <parameter>html.head.legalnotice.link.multiple</parameter>
+ parameter), with the value or values derived from the
+ <parameter>html.head.legalnotice.link.types</parameter>
+ parameter</para>
+ </listitem>
+ </itemizedlist>
+
+ Otherwise, if <parameter>generate.legalnotice.link</parameter> is
+ zero, <tag>legalnotice</tag> contents are rendered on the title
+ page.</para>
+
+<para>The name of the separate HTML file is computed as follows:
+
+<orderedlist>
+<listitem>
+ <para>If a filename is given by the <tag class="xmlpi">dbhtml filename</tag>
+processing instruction, that filename is used.</para>
+</listitem>
+<listitem>
+ <para>If the legalnotice has an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, and if <parameter>use.id.as.filename</parameter> != 0, the filename
+is the concatenation of the id value and the value of the <parameter>html.ext</parameter>
+parameter.</para>
+</listitem>
+<listitem>
+ <para>If the legalnotice does not have an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+ attribute, or if <parameter>use.id.as.filename</parameter> = 0, the filename is the concatenation of "ln-",
+auto-generated id value, and <parameter>html.ext</parameter> value.
+ </para>
+</listitem>
+</orderedlist>
+
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml
new file mode 100644
index 0000000..b561c36
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.manifest">
+ <refmeta>
+ <refentrytitle>generate.manifest</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>generate.manifest</refname>
+ <refpurpose>Generate a manifest file?</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <src:fragment xml:id="generate.manifest.frag"><xsl:param name="generate.manifest" select="0"/></src:fragment>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>If non-zero, a list of HTML files generated by the
+ stylesheet transformation is written to the file named by
+ the <parameter>manifest</parameter> parameter.</para>
+
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml
new file mode 100644
index 0000000..d3ca138
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.meta.abstract">
+<refmeta>
+<refentrytitle>generate.meta.abstract</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.meta.abstract</refname>
+<refpurpose>Generate HTML <tag>META</tag> element from <tag>abstract</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.meta.abstract.frag">
+<xsl:param name="generate.meta.abstract" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, document abstracts will be reproduced in the HTML
+<literal>head</literal>, with <literal>>meta name="description" content="..."</literal></para>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml
new file mode 100644
index 0000000..bd70cd9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml
@@ -0,0 +1,50 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.revhistory.link">
+<refmeta>
+<refentrytitle>generate.revhistory.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.revhistory.link</refname>
+<refpurpose>Write revhistory to separate chunk and generate link?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.revhistory.link.frag"><xsl:param name="generate.revhistory.link" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the contents of <tag>revhistory</tag> are written
+to a separate HTML file and a link to the file is
+generated. Otherwise, <tag>revhistory</tag> contents are rendered on
+the title page.</para>
+
+<para>The name of the separate HTML file is computed as follows:
+
+<orderedlist>
+<listitem>
+ <para>If a filename is given by the <tag class="xmlpi">dbhtml filename</tag> processing instruction,
+that filename is used.</para>
+</listitem>
+<listitem>
+ <para>If the revhistory has an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, and if <parameter>use.id.as.filename</parameter> != 0, the filename is the concatenation of
+the id value and the value of the <parameter>html.ext</parameter> parameter.</para>
+</listitem>
+<listitem>
+ <para>If the revhistory does not have an <tag class="attribute">id</tag>/<tag class="attribute">xml:id</tag>
+attribute, or if <parameter>use.id.as.filename</parameter> = 0, the filename is the concatenation of "rh-",
+auto-generated id value, and <parameter>html.ext</parameter> value.
+ </para>
+</listitem>
+</orderedlist>
+
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml
new file mode 100644
index 0000000..227735a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.section.toc.level">
+<refmeta>
+<refentrytitle>generate.section.toc.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.section.toc.level</refname>
+<refpurpose>Control depth of TOC generation in sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.section.toc.level.frag">
+<xsl:param name="generate.section.toc.level" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>generate.section.toc.level</parameter> parameter
+controls the depth of <tag>section</tag> in which TOCs will be generated. Note
+that this is related to, but not the same as
+<parameter>toc.section.depth</parameter>, which controls the depth to
+which TOC entries will be generated in a given TOC.</para>
+<para>If, for example, <parameter>generate.section.toc.level</parameter>
+is <literal>3</literal>, TOCs will be generated in first, second, and third
+level sections, but not in fourth level sections.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml
new file mode 100644
index 0000000..d23c45e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml
@@ -0,0 +1,108 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.toc">
+<refmeta>
+<refentrytitle>generate.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.toc</refname>
+<refpurpose>Control generation of ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.toc.frag">
+<xsl:param condition="html" name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+</xsl:param>
+<xsl:param condition="fo" name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has a structured value. It is a table of space-delimited
+path/value pairs. Each path identifies some element in the source document
+using a restricted subset of XPath (only the implicit child axis, no wildcards,
+no predicates). Paths can be either relative or absolute.</para>
+
+<para>When processing a particular element, the stylesheets consult this table to
+determine if a ToC (or LoT(s)) should be generated.</para>
+
+<para>For example, consider the entry:</para>
+
+<screen>book toc,figure</screen>
+
+<para>This indicates that whenever a <tag>book</tag> is formatted, a
+Table Of Contents and a List of Figures should be generated. Similarly,</para>
+
+<screen>/chapter toc</screen>
+
+<para>indicates that whenever a document <emphasis>that has a root
+of</emphasis> <tag>chapter</tag> is formatted, a Table of
+Contents should be generated. The entry <literal>chapter</literal> would match
+all chapters, but <literal>/chapter</literal> matches only <tag>chapter</tag>
+document elements.</para>
+
+<para>Generally, the longest match wins. So, for example, if you want to distinguish
+articles in books from articles in parts, you could use these two entries:</para>
+
+<screen>book/article toc,figure
+part/article toc</screen>
+
+<para>Note that an article in a part can never match a <literal>book/article</literal>,
+so if you want nothing to be generated for articles in parts, you can simply leave
+that rule out.</para>
+
+<para>If you want to leave the rule in, to make it explicit that you're turning
+something off, use the value <quote>nop</quote>. For example, the following
+entry disables ToCs and LoTs for articles:</para>
+
+<screen>article nop</screen>
+
+<para>Do not simply leave the word <quote>article</quote> in the file
+without a matching value. That'd be just begging the silly little
+path/value parser to get confused.</para>
+
+<para>Section ToCs are further controlled by the
+<parameter>generate.section.toc.level</parameter> parameter.
+For a given section level to have a ToC, it must have both an entry in
+<parameter>generate.toc</parameter> and be within the range enabled by
+<parameter>generate.section.toc.level</parameter>.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml
new file mode 100644
index 0000000..e18ed19
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossary.as.blocks">
+<refmeta>
+<refentrytitle>glossary.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.as.blocks</refname>
+<refpurpose>Present glossarys using blocks instead of lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossary.as.blocks.frag">
+<xsl:param name="glossary.as.blocks" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>glossary</tag>s will be formatted as
+blocks.</para>
+
+<para>If you have long <tag>glossterm</tag>s, proper list
+markup in the FO case may produce unattractive lists. By setting this
+parameter, you can force the stylesheets to produce block markup
+instead of proper lists.</para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>glossary</tag>: <tag class="xmlpi">dbfo
+glossary-presentation="blocks"</tag> or <tag class="xmlpi">dbfo
+glossary-presentation="list"</tag></para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml
new file mode 100644
index 0000000..6f9828b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml
@@ -0,0 +1,252 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossary.collection">
+<refmeta>
+<refentrytitle>glossary.collection</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.collection</refname>
+<refpurpose>Name of the glossary collection file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossary.collection.frag">
+<xsl:param name="glossary.collection"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Glossaries maintained independently across a set of documents
+are likely to become inconsistent unless considerable effort is
+expended to keep them in sync. It makes much more sense, usually, to
+store all of the glossary entries in a single place and simply
+<quote>extract</quote> the ones you need in each document.</para>
+
+<para>That's the purpose of the
+<parameter>glossary.collection</parameter> parameter. To setup a global
+glossary <quote>database</quote>, follow these steps:</para>
+
+<refsection><info><title>Setting Up the Glossary Database</title></info>
+
+<para>First, create a stand-alone glossary document that contains all of
+the entries that you wish to reference. Make sure that each glossary
+entry has an ID.</para>
+
+<para>Here's an example glossary:</para>
+
+<informalexample>
+<programlisting>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE glossary
+ PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"&gt;
+&lt;glossary&gt;
+&lt;glossaryinfo&gt;
+&lt;editor&gt;&lt;firstname&gt;Eric&lt;/firstname&gt;&lt;surname&gt;Raymond&lt;/surname&gt;&lt;/editor&gt;
+&lt;title&gt;Jargon File 4.2.3 (abridged)&lt;/title&gt;
+&lt;releaseinfo&gt;Just some test data&lt;/releaseinfo&gt;
+&lt;/glossaryinfo&gt;
+
+&lt;glossdiv&gt;&lt;title&gt;0&lt;/title&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;0&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;Numeric zero, as opposed to the letter `O' (the 15th letter of
+the English alphabet). In their unmodified forms they look a lot
+alike, and various kluges invented to make them visually distinct have
+compounded the confusion. If your zero is center-dotted and letter-O
+is not, or if letter-O looks almost rectangular but zero looks more
+like an American football stood on end (or the reverse), you're
+probably looking at a modern character display (though the dotted zero
+seems to have originated as an option on IBM 3270 controllers). If
+your zero is slashed but letter-O is not, you're probably looking at
+an old-style ASCII graphic set descended from the default typewheel on
+the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter,
+curse this arrangement). (Interestingly, the slashed zero long
+predates computers; Florian Cajori's monumental "A History of
+Mathematical Notations" notes that it was used in the twelfth and
+thirteenth centuries.) If letter-O has a slash across it and the zero
+does not, your display is tuned for a very old convention used at IBM
+and a few other early mainframe makers (Scandinavians curse &lt;emphasis&gt;this&lt;/emphasis&gt;
+arrangement even more, because it means two of their letters collide).
+Some Burroughs/Unisys equipment displays a zero with a &lt;emphasis&gt;reversed&lt;/emphasis&gt;
+slash. Old CDC computers rendered letter O as an unbroken oval and 0
+as an oval broken at upper right and lower left. And yet another
+convention common on early line printers left zero unornamented but
+added a tail or hook to the letter-O so that it resembled an inverted
+Q or cursive capital letter-O (this was endorsed by a draft ANSI
+standard for how to draw ASCII characters, but the final standard
+changed the distinguisher to a tick-mark in the upper-left corner).
+Are we sufficiently confused yet?&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;glossentry&gt;
+&lt;glossterm&gt;1TBS&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para role="accidence"&gt;
+&lt;phrase role="pronounce"&gt;&lt;/phrase&gt;
+&lt;phrase role="partsofspeach"&gt;n&lt;/phrase&gt;
+&lt;/para&gt;
+&lt;para&gt;The "One True Brace Style"&lt;/para&gt;
+&lt;glossseealso&gt;indent style&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossdiv&gt;
+
+&lt;!-- ... --&gt;
+
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+</refsection>
+
+<refsection><info><title>Marking Up Glossary Terms</title></info>
+
+<para>That takes care of the glossary database, now you have to get the entries
+into your document. Unlike bibliography entries, which can be empty, creating
+<quote>placeholder</quote> glossary entries would be very tedious. So instead,
+support for <parameter>glossary.collection</parameter> relies on implicit linking.</para>
+
+<para>In your source document, simply use <tag>firstterm</tag> and
+<tag>glossterm</tag> to identify the terms you wish to have included
+in the glossary. The stylesheets assume that you will either set the
+<tag class="attribute">baseform</tag> attribute correctly, or that the
+content of the element exactly matches a term in your glossary.</para>
+
+<para>If you're using a <parameter>glossary.collection</parameter>, don't
+make explicit links on the terms in your document.</para>
+
+<para>So, in your document, you might write things like this:</para>
+
+<informalexample>
+<programlisting>&lt;para&gt;This is dummy text, without any real meaning.
+The point is simply to reference glossary terms like &lt;glossterm&gt;0&lt;/glossterm&gt;
+and the &lt;firstterm baseform="1TBS"&gt;One True Brace Style (1TBS)&lt;/firstterm&gt;.
+The &lt;glossterm&gt;1TBS&lt;/glossterm&gt;, as you can probably imagine, is a nearly
+religious issue.&lt;/para&gt;</programlisting>
+</informalexample>
+
+<para>If you set the <parameter>firstterm.only.link</parameter> parameter,
+only the terms marked with <tag>firstterm</tag> will be links.
+Otherwise, all the terms will be linked.</para>
+
+</refsection>
+
+<refsection><info><title>Marking Up the Glossary</title></info>
+
+<para>The glossary itself has to be identified for the stylesheets. For lack
+of a better choice, the <tag class="attribute">role</tag> is used.
+To identify the glossary as the target for automatic processing, set
+the role to <quote><literal>auto</literal></quote>. The title of this
+glossary (and any other information from the <tag>glossaryinfo</tag>
+that's rendered by your stylesheet) will be displayed, but the entries will
+come from the database.
+</para>
+
+<para>Unfortunately, the glossary can't be empty, so you must put in
+at least one <tag>glossentry</tag>. The content of this entry
+is irrelevant, it will not be rendered:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+
+<para>What about glossary divisions? If your glossary database has glossary
+divisions <emphasis>and</emphasis> your automatic glossary contains at least
+one <tag>glossdiv</tag>, the automic glossary will have divisions.
+If the <tag>glossdiv</tag> is missing from either location, no divisions
+will be rendered.</para>
+
+<para>Glossary entries (and divisions, if appropriate) in the glossary will
+occur in precisely the order they occur in your database.</para>
+
+</refsection>
+
+<refsection><info><title>Formatting the Document</title></info>
+
+<para>Finally, when you are ready to format your document, simply set the
+<parameter>glossary.collection</parameter> parameter (in either a
+customization layer or directly through your processor's interface) to
+point to your global glossary.</para>
+
+<para>The stylesheets will format the glossary in your document as if
+all of the entries implicilty referenced appeared there literally.</para>
+</refsection>
+
+<refsection><info><title>Limitations</title></info>
+
+<para>Glossary cross-references <emphasis>within the glossary</emphasis> are
+not supported. For example, this <emphasis>will not</emphasis> work:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+
+<para>If you put glossary cross-references in your glossary that way,
+you'll get the cryptic error: <computeroutput>Warning:
+glossary.collection specified, but there are 0 automatic
+glossaries</computeroutput>.</para>
+
+<para>Instead, you must do two things:</para>
+
+<orderedlist>
+<listitem>
+<para>Markup your glossary using <tag>glossseealso</tag>:</para>
+
+<informalexample>
+<programlisting>&lt;glossentry&gt;
+&lt;glossterm&gt;gloss-1&lt;/glossterm&gt;
+&lt;glossdef&gt;&lt;para&gt;A description that references &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/para&gt;
+&lt;glossseealso&gt;gloss-2&lt;/glossseealso&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;</programlisting>
+</informalexample>
+</listitem>
+
+<listitem>
+<para>Make sure there is at least one <tag>glossterm</tag> reference to
+<glossterm>gloss-2</glossterm> <emphasis>in your document</emphasis>. The
+easiest way to do that is probably within a <tag>remark</tag> in your
+automatic glossary:</para>
+
+<informalexample>
+<programlisting>&lt;glossary role="auto"&gt;
+&lt;remark&gt;Make sure there's a reference to &lt;glossterm&gt;gloss-2&lt;/glossterm&gt;.&lt;/remark&gt;
+&lt;glossentry&gt;
+&lt;glossterm&gt;Irrelevant&lt;/glossterm&gt;
+&lt;glossdef&gt;
+&lt;para&gt;If you can see this, the document was processed incorrectly. Use
+the &lt;parameter&gt;glossary.collection&lt;/parameter&gt; parameter.&lt;/para&gt;
+&lt;/glossdef&gt;
+&lt;/glossentry&gt;
+&lt;/glossary&gt;</programlisting>
+</informalexample>
+</listitem>
+</orderedlist>
+</refsection>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml
new file mode 100644
index 0000000..216130a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossary.sort">
+<refmeta>
+<refentrytitle>glossary.sort</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossary.sort</refname>
+<refpurpose>Sort glossentry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossary.sort.frag">
+<xsl:param name="glossary.sort" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then the glossentry elements within a
+glossary, glossdiv, or glosslist are sorted on the glossterm, using
+the current lang setting. If zero (the default), then
+glossentry elements are not sorted and are presented
+in document order.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml
new file mode 100644
index 0000000..4fb481f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossdef.block.properties">
+<refmeta>
+<refentrytitle>glossdef.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossdef.block.properties</refname>
+<refpurpose>To add properties to the block of a glossary definition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossdef.block.properties.frag"><xsl:attribute-set name="glossdef.block.properties">
+ <xsl:attribute name="margin-{$direction.align.start}">.25in</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary definition in a glossary when
+the <parameter>glossary.as.blocks</parameter> parameter
+is non-zero.
+Use this attribute-set to set the space above and below,
+any font properties,
+and any indent for the glossary definition.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml
new file mode 100644
index 0000000..ba71578
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossdef.list.properties">
+<refmeta>
+<refentrytitle>glossdef.list.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossdef.list.properties</refname>
+<refpurpose>To add properties to the glossary definition in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossdef.list.properties.frag">
+<xsl:attribute-set name="glossdef.list.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary definition in a glossary when
+the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set font properties, for example.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml
new file mode 100644
index 0000000..6830f17
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossentry.list.item.properties">
+<refmeta>
+<refentrytitle>glossentry.list.item.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.list.item.properties</refname>
+<refpurpose>To add properties to each glossentry in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossentry.list.item.properties.frag"><xsl:attribute-set name="glossentry.list.item.properties">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the fo:list-item containing a
+glossentry in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set
+spacing between entries, for example.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml
new file mode 100644
index 0000000..9736438
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossentry.show.acronym">
+<refmeta>
+<refentrytitle>glossentry.show.acronym</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">primary</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossentry.show.acronym</refname>
+<refpurpose>Display <tag>glossentry</tag> acronyms?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossentry.show.acronym.frag">
+<xsl:param name="glossentry.show.acronym">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A setting of <quote>yes</quote> means they should be displayed;
+<quote>no</quote> means they shouldn't. If <quote>primary</quote> is used,
+then they are shown as the primary text for the entry.</para>
+
+<note>
+<para>This setting controls both <tag>acronym</tag> and
+<tag>abbrev</tag> elements in the <tag>glossentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml
new file mode 100644
index 0000000..d720837
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glosslist.as.blocks">
+<refmeta>
+<refentrytitle>glosslist.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glosslist.as.blocks</refname>
+<refpurpose>Use blocks for glosslists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glosslist.as.blocks.frag">
+<xsl:param name="glosslist.as.blocks" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>See <parameter>glossary.as.blocks</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml
new file mode 100644
index 0000000..03d9a30
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossterm.auto.link">
+<refmeta>
+<refentrytitle>glossterm.auto.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.auto.link</refname>
+<refpurpose>Generate links from glossterm to glossentry automatically?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossterm.auto.link.frag">
+<xsl:param name="glossterm.auto.link" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links from inline <tag>glossterm</tag>s to the corresponding
+<tag>glossentry</tag> elements in a <tag>glossary</tag> or <tag>glosslist</tag>
+will be automatically generated. This is useful when your glossterms are consistent
+and you don't want to add links manually.</para>
+
+<para>The automatic link generation feature is not used on <tag>glossterm</tag> elements
+that have a <tag class="attribute">linkend</tag> attribute.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml
new file mode 100644
index 0000000..84e6a6c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossterm.block.properties">
+<refmeta>
+<refentrytitle>glossterm.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.block.properties</refname>
+<refpurpose>To add properties to the block of a glossentry's glossterm.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossterm.block.properties.frag"><xsl:attribute-set name="glossterm.block.properties">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary term in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is non-zero.
+Use this attribute-set to set the space above and below,
+font properties,
+and any indent for the glossary term.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml
new file mode 100644
index 0000000..abe0d31
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossterm.list.properties">
+<refmeta>
+<refentrytitle>glossterm.list.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.list.properties</refname>
+<refpurpose>To add properties to the glossterm in a list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossterm.list.properties.frag">
+<xsl:attribute-set name="glossterm.list.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+glossary term in a glossary when the <parameter>glossary.as.blocks</parameter> parameter
+is zero.
+Use this attribute-set to set
+font properties, for example.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml
new file mode 100644
index 0000000..d0d2b8d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossterm.separation">
+<refmeta>
+<refentrytitle>glossterm.separation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.separation</refname>
+<refpurpose>Separation between glossary terms and descriptions in list mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossterm.separation.frag">
+<xsl:param name="glossterm.separation" >0.25in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the miminum horizontal
+separation between glossary terms and descriptions when
+they are presented side-by-side using lists
+when the <parameter>glossary.as.blocks</parameter>
+is zero.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml
new file mode 100644
index 0000000..0cd3b82
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="glossterm.width">
+<refmeta>
+<refentrytitle>glossterm.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>glossterm.width</refname>
+<refpurpose>Width of glossterm in list presentation mode</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="glossterm.width.frag">
+<xsl:param name="glossterm.width" >2in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the width reserved for glossary terms when
+a list presentation is used.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml
new file mode 100644
index 0000000..93f2983
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="graphic.default.extension">
+<refmeta>
+<refentrytitle>graphic.default.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphic.default.extension</refname>
+<refpurpose>Default extension for graphic filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="graphic.default.extension.frag"><xsl:param name="graphic.default.extension"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If a <tag>graphic</tag> or <tag>mediaobject</tag>
+includes a reference to a filename that does not include an extension,
+and the <tag class="attribute">format</tag> attribute is
+<emphasis>unspecified</emphasis>, the default extension will be used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml
new file mode 100644
index 0000000..ca257d7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="graphical.admonition.properties">
+<refmeta>
+<refentrytitle>graphical.admonition.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphical.admonition.properties</refname>
+<refpurpose>To add properties to the outer block of a graphical admonition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="graphical.admonition.properties.frag"><xsl:attribute-set name="graphical.admonition.properties">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the outer block containing the
+entire graphical admonition, including its title.
+It is used when the parameter
+<parameter>admon.graphics</parameter> is set to nonzero.
+Use this attribute-set to set the space above and below,
+and any indent for the whole admonition.</para>
+
+<para>In addition to these properties, a graphical admonition
+also applies the <parameter>admonition.title.properties</parameter>
+attribute-set to the title, and applies the
+<parameter>admonition.properties</parameter> attribute-set
+to the rest of the content.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml
new file mode 100644
index 0000000..e8d83ae
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="graphics.dir">
+<refmeta>
+<refentrytitle>graphics.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphics.dir</refname>
+<refpurpose>Graphics directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="graphics.dir.frag">
+<xsl:param name="graphics.dir"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the graphics directory for the navigation components
+generated on all the slides. This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>graphics-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the graphic
+image paths.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml
new file mode 100644
index 0000000..c4da7e1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="graphicsize.extension">
+<refmeta>
+<refentrytitle>graphicsize.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphicsize.extension</refname>
+<refpurpose>Enable the getWidth()/getDepth() extension functions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="graphicsize.extension.frag">
+<xsl:param name="graphicsize.extension" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (and if <parameter>use.extensions</parameter> is non-zero
+and if you're using a processor that supports extension functions), the
+<function>getWidth</function> and <function>getDepth</function> functions
+will be used to extract image sizes from graphics.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml
new file mode 100644
index 0000000..aff5b30
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="graphicsize.use.img.src.path">
+<refmeta>
+<refentrytitle>graphicsize.use.img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphicsize.use.img.src.path</refname>
+<refpurpose>Prepend <parameter>img.src.path</parameter> before
+filenames passed to extension functions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="graphicsize.use.img.src.path.frag">
+<xsl:param name="graphicsize.use.img.src.path" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero <parameter>img.src.path</parameter> parameter will
+be appended before filenames passed to extension functions for
+measuring image dimensions.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml
new file mode 100644
index 0000000..7d85b96
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml
@@ -0,0 +1,80 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="header.column.widths">
+<refmeta>
+<refentrytitle>header.column.widths</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.column.widths</refname>
+<refpurpose>Specify relative widths of header areas</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><src:fragment xml:id="header.column.widths.frag">
+<xsl:param name="header.column.widths">1 1 1</xsl:param>
+</src:fragment></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page headers in print output use a three column table
+to position text at the left, center, and right side of
+the header on the page.
+This parameter lets you specify the relative sizes of the
+three columns. The default value is
+"1 1 1".</para>
+
+<para>The parameter value must be three numbers, separated
+by white space. The first number represents the relative
+width of the inside header for
+double-sided output. The second number is the relative
+width of the center header. The third number is the
+relative width of the outside header for
+double-sided output.
+</para>
+<para>For single-sided output, the first number is the
+relative width of left header for left-to-right
+text direction, or the right header for right-to-left
+text direction.
+The third number is the
+relative width of right header for left-to-right
+text direction, or the left header for right-to-left
+text direction.</para>
+
+<para>The numbers are used to specify the column widths
+for the table that makes up the header area.
+In the FO output, this looks like:
+</para>
+
+<programlisting>
+&lt;fo:table-column column-number="1"
+ column-width="proportional-column-width(1)"/&gt;
+</programlisting>
+
+<para>
+The <literal>proportional-column-width()</literal>
+function computes a column width by dividing its
+argument by the total of the arguments for all the columns, and
+then multiplying the result by the width of the whole table
+(assuming all the column specs use the function).
+Its argument can be any positive integer or floating point number.
+Zero is an acceptable value, although some FO processors
+may warn about it, in which case using a very small number might
+be more satisfactory.
+</para>
+
+<para>For example, the value "1 2 1" means the center
+header should have twice the width of the other areas.
+A value of "0 0 1" means the entire header area
+is reserved for the right (or outside) header text.
+Note that to keep the center area centered on
+the page, the left and right values must be
+the same. A specification like "1 2 3" means the
+center area is no longer centered on the page
+since the right area is three times the width of the left area.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml
new file mode 100644
index 0000000..2d0291c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="header.content.properties">
+<refmeta>
+<refentrytitle>header.content.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.content.properties</refname>
+<refpurpose>Properties of page header content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="header.content.properties.frag">
+<xsl:attribute-set name="header.content.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$body.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$title.margin.left"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties of page header content.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml
new file mode 100644
index 0000000..08d846a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="header.hr">
+<refmeta>
+<refentrytitle>header.hr</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.hr</refname>
+<refpurpose>Toggle &lt;HR&gt; after header</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="header.hr.frag">
+<xsl:param name="header.hr" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, an &lt;HR&gt; is generated at the bottom of each web page,
+before the footer.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml
new file mode 100644
index 0000000..b4c031e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="header.rule">
+<refmeta>
+<refentrytitle>header.rule</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.rule</refname>
+<refpurpose>Rule under headers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="header.rule.frag">
+<xsl:param name="header.rule" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a rule will be drawn below the page headers.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml
new file mode 100644
index 0000000..69b6f08
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="header.table.height">
+<refmeta>
+<refentrytitle>header.table.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.table.height</refname>
+<refpurpose>Specify the minimum height of the table containing the running page headers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><src:fragment xml:id="header.table.height.frag">
+<xsl:param name="header.table.height">14pt</xsl:param>
+</src:fragment></refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Page headers in print output use a three column table
+to position text at the left, center, and right side of
+the header on the page.
+This parameter lets you specify the minimum height
+of the single row in the table.
+Since this specifies only the minimum height,
+the table should automatically grow to fit taller content.
+The default value is "14pt".</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml
new file mode 100644
index 0000000..b5f6052
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.or/g2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="header.table.properties">
+<refmeta>
+<refentrytitle>header.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.table.properties</refname>
+<refpurpose>Apply properties to the header layout table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id='header.table.properties.frag'>
+<xsl:attribute-set name="header.table.properties">
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ <xsl:attribute name="width">100%</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties applied to the table that lays out the page header.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml
new file mode 100644
index 0000000..1fad48e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="headers.on.blank.pages">
+<refmeta>
+<refentrytitle>headers.on.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>headers.on.blank.pages</refname>
+<refpurpose>Put headers on blank pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="headers.on.blank.pages.frag">
+<xsl:param name="headers.on.blank.pages" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, headers will be placed on blank pages.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml
new file mode 100644
index 0000000..705b61f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="hidetoc.image">
+<refmeta>
+<refentrytitle>hidetoc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hidetoc.image</refname>
+<refpurpose>Hide ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="hidetoc.image.frag">
+<xsl:param name="hidetoc.image">hidetoc.gif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>hide ToC</quote> image. This is used
+when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
+enabled.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml
new file mode 100644
index 0000000..0f00103
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="highlight.default.language">
+<refmeta>
+<refentrytitle>highlight.default.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.default.language</refname>
+<refpurpose>Default language of programlisting</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="highlight.default.language.frag">
+<xsl:param name="highlight.default.language"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This language is used when there is no language attribute on programlisting.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml
new file mode 100644
index 0000000..41d7b2f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml
@@ -0,0 +1,82 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="highlight.source">
+<refmeta>
+<refentrytitle>highlight.source</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.source</refname>
+<refpurpose>Should the content of <tag>programlisting</tag>
+be syntactically highlighted?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="highlight.source.frag">
+<xsl:param name="highlight.source" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the
+content of <tag>programlisting</tag> elements. You specify the language for each programlisting
+by using the <tag class="attribute">language</tag> attribute. The <parameter>highlight.default.language</parameter>
+parameter can be used to specify the language for programlistings without a <tag class="attribute">language</tag>
+attribute. Syntax highlighting also works for <tag>screen</tag> and <tag>synopsis</tag> elements.</para>
+
+<para>The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be
+downloaded separately (see below).</para>
+
+<itemizedlist>
+<para>In order to use this extension, you must</para>
+
+<listitem><para>add <filename>xslthl-2.x.x.jar</filename> to your Java classpath. The latest version is available
+from <link xlink:href="http://sourceforge.net/projects/xslthl">the XSLT syntax highlighting project</link>
+at SourceForge.</para>
+</listitem>
+<listitem>
+<para>use a customization layer in which you import one of the following stylesheet modules:
+<itemizedlist>
+ <listitem>
+ <para><filename>html/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>xhtml-1_1/highlight.xsl</filename>
+ </para>
+ </listitem>
+<listitem>
+ <para><filename>fo/highlight.xsl</filename>
+ </para>
+</listitem>
+</itemizedlist>
+</para>
+</listitem>
+<listitem><para>let either the <literal>xslthl.config</literal> Java system property or the
+<parameter>highlight.xslthl.config</parameter> parameter point to the configuration file for syntax
+highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file,
+<filename>highlighting/xslthl-config.xml</filename>.</para>
+</listitem>
+</itemizedlist>
+
+<para>The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is
+an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.)</para>
+
+<para>The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows:</para>
+
+<informalexample>
+<para><command>java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar
+-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet
+-o test.html test.xml myhtml.xsl</command></para>
+</informalexample>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml
new file mode 100644
index 0000000..451937c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="highlight.xslthl.config">
+<refmeta>
+<refentrytitle>highlight.xslthl.config</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>highlight.xslthl.config</refname>
+<refpurpose>Location of XSLTHL configuration file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="highlight.xslthl.config.frag">
+<xsl:param name="highlight.xslthl.config"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This location has precedence over the corresponding Java property.</para>
+
+<para>Please note that usually you have to specify location as URL not
+just as a simple path on the local
+filesystem. E.g. <filename>file:///home/user/xslthl/my-xslthl-config.xml</filename>.</para>
+
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml
new file mode 100644
index 0000000..22e5455
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="home.image">
+<refmeta>
+<refentrytitle>home.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>home.image</refname>
+<refpurpose>Home image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="home.image.frag">
+<xsl:param name="home.image">active/nav-home.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the home navigation icon.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml
new file mode 100644
index 0000000..461e61b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.append">
+<refmeta>
+<refentrytitle>html.append</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.append</refname>
+<refpurpose>Specifies content to append to HTML output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.append.frag"><xsl:param name="html.append"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies content to append to the end of HTML files output by
+the <filename>html/docbook.xsl</filename> stylesheet, after the
+closing <code>&lt;html&gt;</code> tag. You probably don’t want to set any
+value for this parameter; but if you do, the only value it should ever
+be set to is a newline character: <code>&amp;#x0a;</code> or
+<code>&amp;#10;</code></para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml
new file mode 100644
index 0000000..74e7fd9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.base">
+<refmeta>
+<refentrytitle>html.base</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.base</refname>
+<refpurpose>An HTML base URI</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.base.frag">
+<xsl:param name="html.base"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If html.base is set, it is used for the <tag>base</tag> element
+in the <tag>head</tag> of the html documents. The parameter specifies
+the base URL for all relative URLs in the document. This is useful
+for dynamically served html where the base URI needs to be
+shifted.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml
new file mode 100644
index 0000000..7240f0f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.cellpadding">
+<refmeta>
+<refentrytitle>html.cellpadding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cellpadding</refname>
+<refpurpose>Default value for cellpadding in HTML tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.cellpadding.frag">
+<xsl:param name="html.cellpadding"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, this value will be used as the default cellpadding value
+in HTML tables. nn for pixels or nn% for percentage length. E.g. 5 or
+5%</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml
new file mode 100644
index 0000000..5ddfdac
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.cellspacing">
+<refmeta>
+<refentrytitle>html.cellspacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cellspacing</refname>
+<refpurpose>Default value for cellspacing in HTML tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.cellspacing.frag">
+<xsl:param name="html.cellspacing"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, this value will be used as the default cellspacing
+value in HTML tables. nn for pixels or nn% for percentage
+length. E.g. 5 or 5%</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml
new file mode 100644
index 0000000..e4fc0c8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.cleanup">
+<refmeta>
+<refentrytitle>html.cleanup</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.cleanup</refname>
+<refpurpose>Attempt to clean up the resulting HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.cleanup.frag">
+<xsl:param name="html.cleanup" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if the <link xlink:href="http://www.exslt.org/">EXSLT</link>
+extensions are supported by your processor, the resulting HTML will be
+<quote>cleaned up</quote>. This improves the chances that the
+resulting HTML will be valid. It may also improve the formatting of
+some elements.</para>
+
+<para>This parameter is different from <parameter>make.valid.html</parameter>
+because it uses extension functions to manipulate result-tree-fragments.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml
new file mode 100644
index 0000000..8d6fd95
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.ext">
+<refmeta>
+<refentrytitle>html.ext</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.ext</refname>
+<refpurpose>Identifies the extension of generated HTML files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.ext.frag">
+<xsl:param name="html.ext">.html</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The extension identified by <parameter>html.ext</parameter> will
+be used as the filename extension for chunks created by this
+stylesheet. </para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml
new file mode 100644
index 0000000..ddc666f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.extra.head.links">
+<refmeta>
+<refentrytitle>html.extra.head.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.extra.head.links</refname>
+<refpurpose>Toggle extra HTML head link information</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.extra.head.links.frag">
+<xsl:param name="html.extra.head.links" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extra <tag>link</tag> elements will be
+generated in the <tag>head</tag> of chunked HTML files. These
+extra links point to chapters, appendixes, sections, etc. as supported
+by the <quote>Site Navigation Bar</quote> in Mozilla 1.0 (as of CR1, at least).
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml
new file mode 100644
index 0000000..7c0cba1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml
@@ -0,0 +1,44 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.head.legalnotice.link.multiple">
+<refmeta>
+<refentrytitle>html.head.legalnotice.link.multiple</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.head.legalnotice.link.multiple</refname>
+<refpurpose>Generate multiple link instances in html head for legalnotice?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.head.legalnotice.link.multiple.frag">
+<xsl:param name="html.head.legalnotice.link.multiple" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>html.head.legalnotice.link.multiple</parameter> is
+non-zero and the value of
+<parameter>html.head.legalnotice.link.types</parameter> contains
+multiple link types, then the stylesheet generates (in the
+<literal>head</literal> section of the HTML source) one
+<literal>link</literal> element for each link type specified. For
+example, if the value of
+<parameter>html.head.legalnotice.link.types</parameter> is
+“<literal>copyright license</literal>â€:
+
+<screen> &lt;link rel="copyright" href="ln-id2524073.html" title="Legal Notice"&gt;
+ &lt;link rel="license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+
+ Otherwise, the stylesheet generates generates a single
+ <literal>link</literal> instance; for example:
+
+<screen> &lt;link rel="copyright license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml
new file mode 100644
index 0000000..4ca02ff
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml
@@ -0,0 +1,75 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.head.legalnotice.link.types">
+<refmeta>
+<refentrytitle>html.head.legalnotice.link.types</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.head.legalnotice.link.types</refname>
+<refpurpose>Specifies link types for legalnotice link in html head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.head.legalnotice.link.types.frag">
+<xsl:param name="html.head.legalnotice.link.types">copyright</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>html.head.legalnotice.link.types</parameter> is a
+space-separated list of link types, as described in <link xlink:href="http://www.w3.org/TR/html401/types.html#type-links">Section 6.12
+of the HTML 4.01 specification</link>. If the value of the
+<parameter>generate.legalnotice.link</parameter> parameter is
+non-zero, then the stylesheet generates (in the
+<literal>head</literal> section of the HTML source) either a single
+HTML <literal>link</literal> element or, if the value of the
+<parameter>html.head.legalnotice.link.multiple</parameter> is
+non-zero, one <literal>link</literal> element for each link type
+specified. Each <literal>link</literal> has the following attributes:
+
+<itemizedlist>
+ <listitem>
+ <para>a <tag class="attribute">rel</tag> attribute whose
+ value is derived from the value of
+ <parameter>html.head.legalnotice.link.types</parameter></para>
+ </listitem>
+ <listitem>
+ <para>an <tag class="attribute">href</tag> attribute whose
+ value is set to the URL of the file containing the
+ <tag>legalnotice</tag></para>
+ </listitem>
+ <listitem>
+ <para>a <tag class="attribute">title</tag> attribute whose
+ value is set to the title of the corresponding
+ <tag>legalnotice</tag> (or a title programatically
+ determined by the stylesheet)</para>
+ </listitem>
+</itemizedlist>
+
+For example:
+
+<screen> &lt;link rel="license" href="ln-id2524073.html" title="Legal Notice"&gt;</screen>
+</para>
+
+<refsection><info><title>About the default value</title></info>
+
+ <para>In an ideal world, the default value of
+ <parameter>html.head.legalnotice.link.types</parameter> would
+ probably be “<literal>license</literal>â€, since the content of the
+ DocBook <tag>legalnotice</tag> is typically license
+ information, not copyright information. However, the default value
+ is “<literal>copyright</literal>†for pragmatic reasons: because
+ that’s among the set of “recognized link types†listed in <link xlink:href="http://www.w3.org/TR/html401/types.html#type-links">Section
+ 6.12 of the HTML 4.01 specification</link>, and because certain
+ browsers and browser extensions are preconfigured to recognize that
+ value.</para>
+</refsection>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml
new file mode 100644
index 0000000..2497563
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.longdesc.link">
+<refmeta>
+<refentrytitle>html.longdesc.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc.link</refname>
+<refpurpose>Should a link to the longdesc be included in the HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.longdesc.link.frag">
+<xsl:param name="html.longdesc.link" select="$html.longdesc"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, links will be created to the
+HTML files created for the
+<literal>longdesc</literal> attribute. It makes no
+sense to enable this option without also enabling the
+<parameter>html.longdesc</parameter> parameter.</para>
+
+<!--
+<para>The <literal>longdesc.link</literal> named template is called
+to construct the link.</para>
+Assumption. That this documentation is for the user, do they need to know
+how it's done?
+
+-->
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml
new file mode 100644
index 0000000..10f341a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.longdesc">
+<refmeta>
+<refentrytitle>html.longdesc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc</refname>
+<refpurpose>Should longdesc URIs be created?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="html.longdesc.frag">
+<xsl:param name="html.longdesc" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, HTML files will be created for the
+<literal>longdesc</literal> attribute. These files
+are created from the <tag>textobject</tag>s in
+<tag>mediaobject</tag>s and
+<tag>inlinemediaobject</tag>.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml
new file mode 100644
index 0000000..f20b706
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.stylesheet.type">
+<refmeta>
+<refentrytitle>html.stylesheet.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.stylesheet.type</refname>
+<refpurpose>The type of the stylesheet used in the generated HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.stylesheet.type.frag"><xsl:param name="html.stylesheet.type">text/css</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The type of the stylesheet to place in the HTML <tag>link</tag> tag.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml
new file mode 100644
index 0000000..3407094
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="html.stylesheet">
+<refmeta>
+<refentrytitle>html.stylesheet</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.stylesheet</refname>
+<refpurpose>Name of the stylesheet(s) to use in the generated HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="html.stylesheet.frag">
+<xsl:param name="html.stylesheet" ></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>html.stylesheet</parameter> parameter is either
+empty, indicating that no stylesheet <tag>link</tag> tag should be
+generated in the html output, or it is a list of one or more
+stylesheet files.</para>
+
+<para>Multiple stylesheets are space-delimited. If you need to
+reference a stylesheet URI that includes a space, encode it with
+<literal>%20</literal>. A separate html <literal>link</literal> element will
+be generated for each stylesheet in the order they are listed in the
+parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml
new file mode 100644
index 0000000..be11b28
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.alias.file">
+<refmeta>
+<refentrytitle>htmlhelp.alias.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.alias.file</refname>
+<refpurpose>Filename of alias file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.alias.file.frag">
+<xsl:param name="htmlhelp.alias.file">alias.h</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the alias file (used for context-sensitive help).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml
new file mode 100644
index 0000000..1426d00
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.autolabel">
+<refmeta>
+<refentrytitle>htmlhelp.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.autolabel</refname>
+<refpurpose>Should tree-like ToC use autonumbering feature?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.autolabel.frag">
+<xsl:param name="htmlhelp.autolabel" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set this to non-zero to include chapter and section numbers into ToC
+in the left panel.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml
new file mode 100644
index 0000000..1fc12bb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.back">
+<refmeta>
+<refentrytitle>htmlhelp.button.back</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.back</refname>
+<refpurpose>Should the Back button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.back.frag">
+<xsl:param name="htmlhelp.button.back" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Hide/Show button shown on toolbar</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml
new file mode 100644
index 0000000..f6411bb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.forward">
+<refmeta>
+<refentrytitle>htmlhelp.button.forward</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.forward</refname>
+<refpurpose>Should the Forward button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.forward.frag">
+<xsl:param name="htmlhelp.button.forward" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Forward button on the toolbar.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml
new file mode 100644
index 0000000..04f1ff0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.hideshow">
+<refmeta>
+<refentrytitle>htmlhelp.button.hideshow</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.hideshow</refname>
+<refpurpose>Should the Hide/Show button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.hideshow.frag">
+<xsl:param name="htmlhelp.button.hideshow" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Hide/Show button shown on toolbar</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml
new file mode 100644
index 0000000..3027507
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.home.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.home.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.home.url</refname>
+<refpurpose>URL address of page accessible by Home button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.home.url.frag">
+<xsl:param name="htmlhelp.button.home.url"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Home button.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml
new file mode 100644
index 0000000..e4e97fe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.home">
+<refmeta>
+<refentrytitle>htmlhelp.button.home</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.home</refname>
+<refpurpose>Should the Home button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.home.frag">
+<xsl:param name="htmlhelp.button.home" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Home button on the toolbar.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml
new file mode 100644
index 0000000..aa9da59
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.jump1.title">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1.title</refname>
+<refpurpose>Title of Jump1 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.jump1.title.frag">
+<xsl:param name="htmlhelp.button.jump1.title">User1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Title of Jump1 button.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml
new file mode 100644
index 0000000..22248c4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.jump1.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1.url</refname>
+<refpurpose>URL address of page accessible by Jump1 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.jump1.url.frag">
+<xsl:param name="htmlhelp.button.jump1.url"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Jump1 button.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml
new file mode 100644
index 0000000..f6f8d9c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml
@@ -0,0 +1,23 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.jump1">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump1</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump1</refname>
+<refpurpose>Should the Jump1 button be shown?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.jump1.frag">
+<xsl:param name="htmlhelp.button.jump1" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+ <para>Set to non-zero to include the <literal>Jump1</literal> button on the toolbar.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml
new file mode 100644
index 0000000..3b5f124
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.jump2.title">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2.title</refname>
+<refpurpose>Title of Jump2 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.jump2.title.frag">
+<xsl:param name="htmlhelp.button.jump2.title">User2</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Title of Jump2 button.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml
new file mode 100644
index 0000000..dcd2434
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.jump2.url">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2.url</refname>
+<refpurpose>URL address of page accessible by Jump2 button</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.jump2.url.frag">
+<xsl:param name="htmlhelp.button.jump2.url"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>URL address of page accessible by Jump2 button.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml
new file mode 100644
index 0000000..916b1ee
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.jump2">
+<refmeta>
+<refentrytitle>htmlhelp.button.jump2</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.jump2</refname>
+<refpurpose>Should the Jump2 button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.jump2.frag">
+<xsl:param name="htmlhelp.button.jump2" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Jump2 button on the toolbar.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml
new file mode 100644
index 0000000..5b55552
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.locate">
+<refmeta>
+<refentrytitle>htmlhelp.button.locate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.locate</refname>
+<refpurpose>Should the Locate button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.locate.frag">
+<xsl:param name="htmlhelp.button.locate" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Locate button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml
new file mode 100644
index 0000000..b5352b2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.next">
+<refmeta>
+<refentrytitle>htmlhelp.button.next</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.next</refname>
+<refpurpose>Should the Next button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.next.frag">
+<xsl:param name="htmlhelp.button.next" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Next button on the toolbar.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml
new file mode 100644
index 0000000..21bed81
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.options">
+<refmeta>
+<refentrytitle>htmlhelp.button.options</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.options</refname>
+<refpurpose>Should the Options button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.options.frag">
+<xsl:param name="htmlhelp.button.options" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Options button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml
new file mode 100644
index 0000000..a6d989b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.prev">
+<refmeta>
+<refentrytitle>htmlhelp.button.prev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.prev</refname>
+<refpurpose>Should the Prev button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.prev.frag">
+<xsl:param name="htmlhelp.button.prev" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Prev button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml
new file mode 100644
index 0000000..1c0e816
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.print">
+<refmeta>
+<refentrytitle>htmlhelp.button.print</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.print</refname>
+<refpurpose>Should the Print button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.print.frag">
+<xsl:param name="htmlhelp.button.print" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Print button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml
new file mode 100644
index 0000000..294fcbe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.refresh">
+<refmeta>
+<refentrytitle>htmlhelp.button.refresh</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.refresh</refname>
+<refpurpose>Should the Refresh button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.refresh.frag">
+<xsl:param name="htmlhelp.button.refresh" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Stop button on the toolbar.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml
new file mode 100644
index 0000000..fdbe549
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.stop">
+<refmeta>
+<refentrytitle>htmlhelp.button.stop</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.stop</refname>
+<refpurpose>Should the Stop button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.stop.frag">
+<xsl:param name="htmlhelp.button.stop" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want Stop button shown on toolbar, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml
new file mode 100644
index 0000000..a25dc40
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.button.zoom">
+<refmeta>
+<refentrytitle>htmlhelp.button.zoom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.button.zoom</refname>
+<refpurpose>Should the Zoom button be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.button.zoom.frag">
+<xsl:param name="htmlhelp.button.zoom" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include the Zoom button on the toolbar.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml
new file mode 100644
index 0000000..51cba30
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.chm">
+<refmeta>
+<refentrytitle>htmlhelp.chm</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.chm</refname>
+<refpurpose>Filename of output HTML Help file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.chm.frag">
+<xsl:param name="htmlhelp.chm">htmlhelp.chm</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the name of resulting CHM file</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml
new file mode 100644
index 0000000..577f440
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.default.topic">
+<refmeta>
+<refentrytitle>htmlhelp.default.topic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.default.topic</refname>
+<refpurpose>Name of file with default topic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.default.topic.frag">
+<xsl:param name="htmlhelp.default.topic"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Normally first chunk of document is displayed when you open HTML
+Help file. If you want to display another topic, simply set its
+filename by this parameter.</para>
+
+<para>This is useful especially if you don't generate ToC in front of
+your document and you also hide root element in ToC. E.g.:</para>
+
+<programlisting>&lt;xsl:param name="generate.book.toc" select="0"/&gt;
+&lt;xsl:param name="htmlhelp.hhc.show.root" select="0"/&gt;
+&lt;xsl:param name="htmlhelp.default.topic">pr01.html&lt;/xsl:param>
+</programlisting>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml
new file mode 100644
index 0000000..eab1c96
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.display.progress">
+<refmeta>
+<refentrytitle>htmlhelp.display.progress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.display.progress</refname>
+<refpurpose>Display compile progress?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.display.progress.frag">
+<xsl:param name="htmlhelp.display.progress" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to to display compile progress
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml
new file mode 100644
index 0000000..579cf7f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.encoding">
+<refmeta>
+<refentrytitle>htmlhelp.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.encoding</refname>
+<refpurpose>Character encoding to use in files for HTML Help compiler.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.encoding.frag">
+<xsl:param name="htmlhelp.encoding">iso-8859-1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>HTML Help Compiler is not UTF-8 aware, so you should always use an
+appropriate single-byte encoding here. Use one from <link xlink:href="ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets">iana</link>, the registered charset values.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml
new file mode 100644
index 0000000..558e89b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.enhanced.decompilation">
+<refmeta>
+<refentrytitle>htmlhelp.enhanced.decompilation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.enhanced.decompilation</refname>
+<refpurpose>Allow enhanced decompilation of CHM?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.enhanced.decompilation.frag">
+<xsl:param name="htmlhelp.enhanced.decompilation" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When non-zero this parameter enables enhanced decompilation of CHM.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml
new file mode 100644
index 0000000..a2aaac8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.enumerate.images">
+<refmeta>
+<refentrytitle>htmlhelp.enumerate.images</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.enumerate.images</refname>
+<refpurpose>Should the paths to all used images be added to the project file?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.enumerate.images.frag">
+<xsl:param name="htmlhelp.enumerate.images" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero if you insert images into your documents as
+external binary entities or if you are using absolute image paths.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml
new file mode 100644
index 0000000..7dca30b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.force.map.and.alias">
+<refmeta>
+<refentrytitle>htmlhelp.force.map.and.alias</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.force.map.and.alias</refname>
+<refpurpose>Should [MAP] and [ALIAS] sections be added to the project file unconditionally?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.force.map.and.alias.frag">
+<xsl:param name="htmlhelp.force.map.and.alias" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+ <para>Set to non-zero if you have your own
+ <literal>alias.h</literal> and <literal>context.h</literal>
+ files and you want to include references to them in the project
+ file.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml
new file mode 100644
index 0000000..ea978f7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhc.binary">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.binary</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.binary</refname>
+<refpurpose>Generate binary ToC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhc.binary.frag">
+<xsl:param name="htmlhelp.hhc.binary" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to generate a binary TOC. You must create a binary TOC
+if you want to add Prev/Next buttons to toolbar (which is default
+behaviour). Files with binary TOC can't be merged.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml
new file mode 100644
index 0000000..ca36e5a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhc.folders.instead.books">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.folders.instead.books</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.folders.instead.books</refname>
+<refpurpose>Use folder icons in ToC (instead of book icons)?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhc.folders.instead.books.frag">
+<xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero for folder-like icons or zero for book-like icons in the ToC.
+If you want to use folder-like icons, you must switch off the binary ToC using
+<parameter>htmlhelp.hhc.binary</parameter>.
+
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml
new file mode 100644
index 0000000..35c492a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhc.section.depth">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.section.depth</refname>
+<refpurpose>Depth of TOC for sections in a left pane.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhc.section.depth.frag">
+<xsl:param name="htmlhelp.hhc.section.depth">5</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the section depth in the left pane of HTML Help viewer. </para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml
new file mode 100644
index 0000000..0de26b9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhc.show.root">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.show.root</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.show.root</refname>
+<refpurpose>Should there be an entry for the root element in the ToC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhc.show.root.frag">
+<xsl:param name="htmlhelp.hhc.show.root" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If set to zero, there will be no entry for the root element in the
+ToC. This is useful when you want to provide the user with an expanded
+ToC as a default.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml
new file mode 100644
index 0000000..4011399
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhc.width">
+<refmeta>
+<refentrytitle>htmlhelp.hhc.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc.width</refname>
+<refpurpose>Width of navigation pane</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhc.width.frag">
+<xsl:param name="htmlhelp.hhc.width"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the width of the navigation pane (containing TOC and
+other navigation tabs) in pixels.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml
new file mode 100644
index 0000000..475ef20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhc">
+<refmeta>
+<refentrytitle>htmlhelp.hhc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhc</refname>
+<refpurpose>Filename of TOC file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhc.frag">
+<xsl:param name="htmlhelp.hhc">toc.hhc</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the name of the TOC file. The default is <filename>toc.hhc</filename>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml
new file mode 100644
index 0000000..aee473e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhk">
+<refmeta>
+<refentrytitle>htmlhelp.hhk</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhk</refname>
+<refpurpose>Filename of index file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhk.frag">
+<xsl:param name="htmlhelp.hhk">index.hhk</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>set the name of the index file. The default is <filename>index.hhk</filename>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml
new file mode 100644
index 0000000..c239b9a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhp.tail">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.tail</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.tail</refname>
+<refpurpose>Additional content for project file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhp.tail.frag">
+<xsl:param name="htmlhelp.hhp.tail"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want to include some additional parameters into project file,
+store appropriate part of project file into this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml
new file mode 100644
index 0000000..6c29eed
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhp.window">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.window</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.window</refname>
+<refpurpose>Name of default window.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhp.window.frag">
+<xsl:param name="htmlhelp.hhp.window">Main</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Name of default window. If empty no [WINDOWS] section will be
+added to project file.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml
new file mode 100644
index 0000000..afd435f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhp.windows">
+<refmeta>
+<refentrytitle>htmlhelp.hhp.windows</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp.windows</refname>
+<refpurpose>Definition of additional windows</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhp.windows.frag">
+<xsl:param name="htmlhelp.hhp.windows"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Content of this parameter is placed at the end of [WINDOWS]
+section of project file. You can use it for defining your own
+addtional windows.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml
new file mode 100644
index 0000000..74954d7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.hhp">
+<refmeta>
+<refentrytitle>htmlhelp.hhp</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.hhp</refname>
+<refpurpose>Filename of project file.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.hhp.frag">
+<xsl:param name="htmlhelp.hhp">htmlhelp.hhp</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Change this parameter if you want different name of project
+file than htmlhelp.hhp.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml
new file mode 100644
index 0000000..b47c565
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.map.file">
+<refmeta>
+<refentrytitle>htmlhelp.map.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.map.file</refname>
+<refpurpose>Filename of map file.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.map.file.frag">
+<xsl:param name="htmlhelp.map.file">context.h</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Set the name of map file. The default is
+ <filename>context.h</filename>. (used for context-sensitive
+ help).</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml
new file mode 100644
index 0000000..f10dbf5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.only">
+<refmeta>
+<refentrytitle>htmlhelp.only</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.only</refname>
+<refpurpose>Should only project files be generated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.only.frag">
+<xsl:param name="htmlhelp.only" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+
+<para>Set to non-zero if you want to play with various HTML Help parameters
+and you don't need to regenerate all HTML files. This setting will not
+process whole document, only project files (hhp, hhc, hhk,...) will be
+generated.</para>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml
new file mode 100644
index 0000000..3aaea1f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.remember.window.position">
+<refmeta>
+<refentrytitle>htmlhelp.remember.window.position</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.remember.window.position</refname>
+<refpurpose>Remember help window position?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.remember.window.position.frag">
+<xsl:param name="htmlhelp.remember.window.position" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to remember help window position between starts.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml
new file mode 100644
index 0000000..3aa09a6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.show.advanced.search">
+<refmeta>
+<refentrytitle>htmlhelp.show.advanced.search</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.advanced.search</refname>
+<refpurpose>Should advanced search features be available?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.show.advanced.search.frag">
+<xsl:param name="htmlhelp.show.advanced.search" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want advanced search features in your help, turn this
+parameter to 1.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml
new file mode 100644
index 0000000..925bbb1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.show.favorities">
+<refmeta>
+<refentrytitle>htmlhelp.show.favorities</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.favorities</refname>
+<refpurpose>Should the Favorites tab be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.show.favorities.frag">
+<xsl:param name="htmlhelp.show.favorities" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to include a Favorites tab in the navigation pane
+of the help window.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml
new file mode 100644
index 0000000..b3d6285
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.show.menu">
+<refmeta>
+<refentrytitle>htmlhelp.show.menu</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.menu</refname>
+<refpurpose>Should the menu bar be shown?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.show.menu.frag">
+<xsl:param name="htmlhelp.show.menu" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to have an application menu bar in your HTML Help window.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml
new file mode 100644
index 0000000..fc87d9c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.show.toolbar.text">
+<refmeta>
+<refentrytitle>htmlhelp.show.toolbar.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.show.toolbar.text</refname>
+<refpurpose>Show text under toolbar buttons?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.show.toolbar.text.frag">
+<xsl:param name="htmlhelp.show.toolbar.text" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set to non-zero to display texts under toolbar buttons, zero to switch
+off displays.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml
new file mode 100644
index 0000000..f4397ca
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.title">
+<refmeta>
+<refentrytitle>htmlhelp.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.title</refname>
+<refpurpose>Title of HTML Help</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.title.frag">
+<xsl:param name="htmlhelp.title"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Content of this parameter will be used as a title for generated
+HTML Help. If empty, title will be automatically taken from document.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml
new file mode 100644
index 0000000..720c1e2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.use.hhk">
+<refmeta>
+<refentrytitle>htmlhelp.use.hhk</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.use.hhk</refname>
+<refpurpose>Should the index be built using the HHK file?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.use.hhk.frag">
+<xsl:param name="htmlhelp.use.hhk" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the index is created using the HHK file (instead of using <tag role="html">object</tag>
+elements in the HTML files). For more information, see <link
+role="tcg" xlink:href="HtmlHelp.html#HHGenIndex">Generating an index</link>.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml
new file mode 100644
index 0000000..0ec75f7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="htmlhelp.window.geometry">
+<refmeta>
+<refentrytitle>htmlhelp.window.geometry</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>htmlhelp.window.geometry</refname>
+<refpurpose>Set initial geometry of help window</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="htmlhelp.window.geometry.frag">
+<xsl:param name="htmlhelp.window.geometry"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies initial position of help
+window. E.g.</para>
+
+<programlisting>&lt;xsl:param name="htmlhelp.window.geometry"&gt;[160,64,992,704]&lt;/xsl:param&gt;</programlisting>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml
new file mode 100644
index 0000000..e6cae20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="hyphenate.verbatim.characters">
+<refmeta>
+<refentrytitle>hyphenate.verbatim.characters</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate.verbatim.characters</refname>
+<refpurpose>List of characters after which a line break can occur in listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="hyphenate.verbatim.characters.frag">
+<xsl:param name="hyphenate.verbatim.characters"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you enable <parameter>hyphenate.verbatim</parameter> line
+breaks are allowed only on space characters. If this is not enough for
+your document, you can specify list of additional characters after
+which line break is allowed in this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml
new file mode 100644
index 0000000..c66e700
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml
@@ -0,0 +1,45 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="hyphenate.verbatim">
+<refmeta>
+<refentrytitle>hyphenate.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate.verbatim</refname>
+<refpurpose>Should verbatim environments be hyphenated on space characters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="hyphenate.verbatim.frag"><xsl:param name="hyphenate.verbatim" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the lines of program listing are too long to fit into one
+line it is quite common to split them at space and indicite by hook
+arrow that code continues on the next line. You can turn on this
+behaviour for <tag>programlisting</tag>,
+<tag>screen</tag> and <tag>synopsis</tag> elements by
+using this parameter.</para>
+
+<para>Note that you must also enable line wrapping for verbatim environments and
+select appropriate hyphenation character (e.g. hook arrow). This can
+be done using <parameter>monospace.verbatim.properties</parameter>
+attribute set:</para>
+
+<programlisting>&lt;xsl:attribute-set name="monospace.verbatim.properties"
+ use-attribute-sets="verbatim.properties monospace.properties"&gt;
+ &lt;xsl:attribute name="wrap-option"&gt;wrap&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="hyphenation-character"&gt;&amp;#x25BA;&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+
+<para>For a list of arrows available in Unicode see <uri xlink:href="http://www.unicode.org/charts/PDF/U2190.pdf">http://www.unicode.org/charts/PDF/U2190.pdf</uri> and <uri xlink:href="http://www.unicode.org/charts/PDF/U2900.pdf">http://www.unicode.org/charts/PDF/U2900.pdf</uri> and make sure that
+selected character is available in the font you are using for verbatim
+environments.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml
new file mode 100644
index 0000000..46a2d61
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="hyphenate">
+<refmeta>
+<refentrytitle>hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">closed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">true</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">false</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hyphenate</refname>
+<refpurpose>Specify hyphenation behavior</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="hyphenate.frag"><xsl:param name="hyphenate">true</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, words may be hyphenated. Otherwise, they may not.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml
new file mode 100644
index 0000000..7b2716f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="id.warnings">
+<refmeta>
+<refentrytitle>id.warnings</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>id.warnings</refname>
+<refpurpose>Should warnings be generated for titled elements without IDs?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="id.warnings.frag">
+<xsl:param name="id.warnings" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the stylesheet will issue a warning for any element
+(other than the root element) which has a <tag>title</tag> but does not have an
+ID.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml
new file mode 100644
index 0000000..c35d178
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ignore.image.scaling">
+<refmeta>
+<refentrytitle>ignore.image.scaling</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ignore.image.scaling</refname>
+<refpurpose>Tell the stylesheets to ignore the author's image scaling attributes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ignore.image.scaling.frag">
+<xsl:param name="ignore.image.scaling" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the scaling attributes on graphics and media objects are
+ignored.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml
new file mode 100644
index 0000000..d295019
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="img.src.path">
+<refmeta>
+<refentrytitle>img.src.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>img.src.path</refname>
+<refpurpose>Path to HTML/FO image files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="img.src.path.frag"><xsl:param name="img.src.path"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Add a path prefix to the value of the <tag class="attribute">fileref</tag>
+attribute of <tag>graphic</tag>, <tag>inlinegraphic</tag>, and <tag>imagedata</tag> elements. The resulting
+compound path is used in the output as the value of the <tag class="attribute">src</tag>
+attribute of <tag class="element">img</tag> (HTML) or <tag class="element">external-graphic</tag> (FO).
+</para>
+
+<para>
+The path given by <literal>img.src.path</literal> could be relative to the directory where the HTML/FO
+files are created, or it could be an absolute URI.
+The default value is empty.
+Be sure to include a trailing slash if needed.
+</para>
+
+<para>This prefix is not applied to any filerefs that start
+with "/" or contain "//:".
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml
new file mode 100644
index 0000000..edbec2f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.div.title.properties">
+<refmeta>
+<refentrytitle>index.div.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.div.title.properties</refname>
+<refpurpose>Properties associated with the letter headings in an
+index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.div.title.properties.frag">
+<xsl:attribute-set name="index.div.title.properties">
+ <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute>
+ <xsl:attribute name="font-size">14.4pt</xsl:attribute>
+ <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master,'pt')"/></xsl:attribute>
+ <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master,'pt * 0.8')"/></xsl:attribute>
+ <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master,'pt * 1.2')"/></xsl:attribute>
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used on the letter headings that separate
+the divisions in an index.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml
new file mode 100644
index 0000000..3232358
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.entry.properties">
+<refmeta>
+<refentrytitle>index.entry.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.entry.properties</refname>
+<refpurpose>Properties applied to the formatted entries
+in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.entry.properties.frag">
+<xsl:attribute-set name="index.entry.properties">
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the block containing
+the entries in a letter division in an index. It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all index entries.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml
new file mode 100644
index 0000000..47c0da5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml
@@ -0,0 +1,76 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.links.to.section">
+<refmeta>
+<refentrytitle>index.links.to.section</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.links.to.section</refname>
+<refpurpose>HTML index entries link to container section title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.links.to.section.frag">
+<xsl:param name="index.links.to.section" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero, then an index entry in an index links
+directly to the location of the
+generated <tag>anchor</tag> that is output
+for the indexterm. If two identical indexterm elements
+exist in the same section, then both entries appear
+in the index with the same title but link to different
+locations.</para>
+
+<para>If non-zero, then an index entry in an index links to the
+section title containing the <tag>indexterm</tag>, rather than
+directly to the <tag>anchor</tag> output for the indexterm.
+Duplicate indexterm entries in the same section are dropped.
+</para>
+
+<para>The default value is 1, so index entries link to
+section titles by default.</para>
+
+<para>In both cases, the link text in an index entry is the
+title of the section containing the indexterm.
+That is because HTML does not have numbered pages.
+It also provides the reader with context information
+for each link.</para>
+
+<para>This parameter lets you choose which style of
+index linking you want. </para>
+
+<itemizedlist>
+<listitem>
+<para>When set to 0, an index entry takes you
+to the precise location of its corresponding indexterm.
+However, if you have a lot of duplicate
+entries in sections, then you have a lot of duplicate
+titles in the index, which makes it more cluttered.
+The reader may not recognize why duplicate titles
+appear until they follow the links. Also, the links
+may land the reader in the middle of a section where the
+section title is not visible, which may also be
+confusing to the reader.</para>
+</listitem>
+<listitem>
+<para>When set to 1, an index entry link is
+less precise, but duplicate titles in the
+index entries are eliminated.
+Landing on the section title location may confirm the reader's
+expectation that a link that
+shows a section title will take them to that section title,
+not a location within the section.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml
new file mode 100644
index 0000000..2127956
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml
@@ -0,0 +1,162 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.method">
+<refmeta>
+<refentrytitle>index.method</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">basic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kosek</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kimber</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.method</refname>
+<refpurpose>Select method used to group index entries in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.method.frag">
+<xsl:param name="index.method">basic</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter lets you select which method to use for sorting and grouping
+ index entries in an index.
+Indexes in Latin-based languages that have accented characters typically
+sort together accented words and unaccented words.
+Thus <quote>Ã</quote> (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together
+with <quote>A</quote> (U+0041 LATIN CAPITAL LETTER A), so both would appear in the <quote>A</quote>
+section of the index.
+Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet)
+and languages using ideographic chararacters (such as Japanese)
+require grouping specific to the languages and alphabets.
+</para>
+
+<para>The default indexing method is limited.
+It can group accented characters in Latin-based languages only.
+It cannot handle non-Latin alphabets or ideographic languages.
+The other indexing methods require extensions of one type or
+another, and do not work with
+all XSLT processors, which is why they are not used by default.</para>
+
+<para>The three choices for indexing method are:</para>
+<variablelist>
+<varlistentry>
+<term><literal>basic</literal></term>
+<listitem>
+<para>
+(default) Sort and groups words based only on the Latin alphabet.
+Words with accented Latin letters will group and sort with
+their respective primary letter, but
+words in non-Latin alphabets will be
+put in the <quote>Symbols</quote> section of the index.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kosek</literal></term>
+<listitem>
+<para>
+This method sorts and groups words based on letter groups configured in
+the DocBook locale file for the given language.
+See, for example, the French locale file <filename>common/fr.xml</filename>.
+This method requires that the XSLT processor
+supports the EXSLT extensions (most do).
+It also requires support for using
+user-defined functions in xsl:key (xsltproc does not).
+</para>
+<para>This method is suitable for any language for which you can
+list all the individual characters that should appear
+in each letter group in an index.
+It is probably not practical to use it for ideographic languages
+such as Chinese that have hundreds or thousands of characters.
+</para>
+
+<para>To use the kosek method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use a processor that supports its extensions, such as
+Saxon 6 or Xalan (xsltproc and Saxon 8 do not).
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kosek</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kosek.xsl</filename> or
+<filename>html/autoidx-kosek.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kimber</literal></term>
+<listitem>
+<para>
+This method uses extensions to the Saxon processor to implement
+sophisticated indexing processes. It uses its own
+configuration file, which can include information for any number of
+languages. Each language's configuration can group
+words using one of two processes. In the
+enumerated process similar to that used in the kosek method,
+you indicate the groupings character-by-character.
+In the between-key process, you specify the
+break-points in the sort order that should start a new group.
+The latter configuration is useful for ideographic languages
+such as Chinese, Japanese, and Korean.
+You can also define your own collation algorithms and how you
+want mixed Latin-alphabet words sorted.</para>
+<itemizedlist>
+<listitem>
+<para>For a whitepaper describing the extensions, see:
+<link xlink:href="http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf">http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf</link>.
+</para>
+</listitem>
+<listitem>
+<para>To download the extension library, see
+<link xlink:href="http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport">http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</link>.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>To use the kimber method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use Saxon (version 6 or 8) as your XSLT processor.
+</para>
+</listitem>
+<listitem>
+<para>Install and configure the Innodata Isogen library, using
+the documentation that comes with it.
+</para>
+</listitem>
+<listitem>
+<para>Set the index.method parameter's value to <quote>kimber</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the appropriate index extensions stylesheet module
+<filename>fo/autoidx-kimber.xsl</filename> or
+<filename>html/autoidx-kimber.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml
new file mode 100644
index 0000000..8f51512
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml
@@ -0,0 +1,54 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.number.separator">
+<refmeta>
+<refentrytitle>index.number.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.number.separator</refname>
+<refpurpose>Override for punctuation separating page numbers in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.number.separator.frag">
+<xsl:param name="index.number.separator"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override the text to insert between
+page references in a formatted index entry. Typically
+that would be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'number-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. This punctuation appears between
+such section titles in an HTML index.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml
new file mode 100644
index 0000000..81d65dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml
@@ -0,0 +1,48 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.on.role">
+<refmeta>
+<refentrytitle>index.on.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.role</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">role</tag> value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.on.role.frag">
+<xsl:param name="index.on.role" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">role</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching role value.
+If an <tag>index</tag> has no <tag class="attribute">role</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+<para>
+If <literal>index.on.role</literal> is zero, then the
+<tag class="attribute">role</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>If you are using DocBook version 4.3 or later, you should
+use the <tag class="attribute">type</tag> attribute instead of <tag class="attribute">role</tag>
+on <tag>indexterm</tag> and <tag>index</tag>,
+and set the <parameter>index.on.type</parameter> to a nonzero
+value.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml
new file mode 100644
index 0000000..a5189c7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml
@@ -0,0 +1,52 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.on.type">
+<refmeta>
+<refentrytitle>index.on.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.type</refname>
+<refpurpose>Select indexterms based on <tag class="attribute">type</tag>
+attribute value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.on.type.frag">
+<xsl:param name="index.on.type" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero,
+then an <tag>index</tag> element that has a
+<tag class="attribute">type</tag> attribute
+value will contain only those <tag>indexterm</tag>
+elements with a matching <tag class="attribute">type</tag> attribute value.
+If an <tag>index</tag> has no <tag class="attribute">type</tag>
+attribute or it is blank, then the index will contain
+all <tag>indexterm</tag>s in the current scope.
+</para>
+
+<para>
+If <literal>index.on.type</literal> is zero, then the
+<tag class="attribute">type</tag> attribute has no effect
+on selecting indexterms for an index.
+</para>
+
+<para>For those using DocBook version 4.2 or earlier,
+the <tag class="attribute">type</tag> attribute is not available
+for index terms. However, you can achieve the same
+effect by using the <tag class="attribute">role</tag> attribute
+in the same manner on <tag>indexterm</tag>
+and <tag>index</tag>, and setting the stylesheet parameter
+<parameter>index.on.role</parameter> to a nonzero value.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml
new file mode 100644
index 0000000..74d105a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.page.number.properties">
+<refmeta>
+<refentrytitle>index.page.number.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.page.number.properties</refname>
+<refpurpose>Properties associated with index page numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.page.number.properties.frag">
+<xsl:attribute-set name="index.page.number.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties associated with page numbers in indexes.
+Changing color to indicate the page number is a link is
+one possibility.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml
new file mode 100644
index 0000000..3f010ae
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.prefer.titleabbrev">
+<refmeta>
+<refentrytitle>index.prefer.titleabbrev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.prefer.titleabbrev</refname>
+<refpurpose>Should abbreviated titles be used as back references?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.prefer.titleabbrev.frag">
+<xsl:param name="index.prefer.titleabbrev" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if a <tag>titleabbrev</tag> is defined, the abbreviated title
+is used as the link text of a back reference in the index.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml
new file mode 100644
index 0000000..1b7a26f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.preferred.page.properties">
+<refmeta>
+<refentrytitle>index.preferred.page.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.preferred.page.properties</refname>
+<refpurpose>Properties used to emphasize page number references for
+significant index terms</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.preferred.page.properties.frag">
+<xsl:attribute-set name="index.preferred.page.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties used to emphasize page number references for
+significant index terms (<tag class="attribute">significance</tag>=<tag class="attvalue">preferred</tag>). Currently works only with
+XEP.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml
new file mode 100644
index 0000000..aff09a9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml
@@ -0,0 +1,57 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.range.separator">
+<refmeta>
+<refentrytitle>index.range.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.range.separator</refname>
+<refpurpose>Override for punctuation separating the two numbers
+in a page range in index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.range.separator.frag">
+<xsl:param name="index.range.separator"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you
+to override the text to insert between
+the two numbers of a page range in an index.
+This parameter is only used by those XSL-FO processors
+that support an extension for generating such page ranges
+(such as XEP).</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'range-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+override the gentext with the content of this parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+</para>
+
+<para>In HTML index output, section title references are used instead of
+page number references. So there are no page ranges
+and this parameter has no effect.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml
new file mode 100644
index 0000000..ab2f672
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml
@@ -0,0 +1,54 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="index.term.separator">
+<refmeta>
+<refentrytitle>index.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.term.separator</refname>
+<refpurpose>Override for punctuation separating an index term
+from its list of page references in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="index.term.separator.frag">
+<xsl:param name="index.term.separator"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter permits you to override
+the text to insert between
+the end of an index term and its list of page references.
+Typically that might be a comma and a space.
+</para>
+
+<para>Because this text may be locale dependent,
+this parameter's value is normally taken from a gentext
+template named 'term-separator' in the
+context 'index' in the stylesheet
+locale file for the language
+of the current document.
+This parameter can be used to override the gentext string,
+and would typically be used on the command line.
+This parameter would apply to all languages.
+</para>
+
+<para>So this text string can be customized in two ways.
+You can reset the default gentext string using
+the <parameter>local.l10n.xml</parameter> parameter, or you can
+fill in the content for this normally empty
+override parameter.
+The content can be a simple string, or it can be
+something more complex such as a call-template.
+For fo output, it could be an <tag>fo:leader</tag>
+element to provide space of a specific length, or a dot leader.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml
new file mode 100644
index 0000000..e89cc11
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="informal.object.properties">
+<refmeta>
+<refentrytitle>informal.object.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informal.object.properties</refname>
+<refpurpose>Properties associated with an informal (untitled) object, such as an informalfigure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="informal.object.properties.frag"><xsl:attribute-set name="informal.object.properties">
+ <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>The styling for informal objects in docbook. Specify the spacing before and after the object.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml
new file mode 100644
index 0000000..88a57be
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="informalequation.properties">
+<refmeta>
+<refentrytitle>informalequation.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalequation.properties</refname>
+<refpurpose>Properties associated with an informalequation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="informalequation.properties.frag">
+<xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalequations.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml
new file mode 100644
index 0000000..90ffb2c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="informalexample.properties">
+<refmeta>
+<refentrytitle>informalexample.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalexample.properties</refname>
+<refpurpose>Properties associated with an informalexample</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="informalexample.properties.frag">
+<xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalexamples.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml
new file mode 100644
index 0000000..c766248
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="informalfigure.properties">
+<refmeta>
+<refentrytitle>informalfigure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informalfigure.properties</refname>
+<refpurpose>Properties associated with an informalfigure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="informalfigure.properties.frag">
+<xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for informalfigures.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml
new file mode 100644
index 0000000..c968883
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="informaltable.properties">
+<refmeta>
+<refentrytitle>informaltable.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>informaltable.properties</refname>
+<refpurpose>Properties associated with the block surrounding an informaltable</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="informaltable.properties.frag">
+<xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for informaltables. This parameter should really
+have been called <literal>informaltable.block.properties</literal> or something
+like that, but we’re leaving it to avoid backwards-compatibility
+problems.</para>
+
+<para>See also <parameter>table.table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml
new file mode 100644
index 0000000..7939a6a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="inherit.keywords">
+<refmeta>
+<refentrytitle>inherit.keywords</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>inherit.keywords</refname>
+<refpurpose>Inherit keywords from ancestor elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="inherit.keywords.frag">
+<xsl:param name="inherit.keywords" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>inherit.keywords</parameter>
+is non-zero, the keyword <literal>meta</literal> for each HTML
+<literal>head</literal> element will include all of the keywords from
+ancestor elements. Otherwise, only the keywords from the current section
+will be used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml
new file mode 100644
index 0000000..b26c0f6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml
@@ -0,0 +1,69 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="insert.link.page.number">
+<refmeta>
+<refentrytitle>insert.link.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.link.page.number</refname>
+<refpurpose>Turns page numbers in link elements on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="insert.link.page.number.frag">
+<xsl:param name="insert.link.page.number">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references using the <tag>link</tag> element in
+printed output will
+include standard page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>link</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for a <tag>link</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+<para>Although the <tag>xrefstyle</tag> attribute
+can be used to turn the page reference on or off, it cannot be
+used to control the formatting of the page number as it
+can in <tag>xref</tag>.
+In <tag>link</tag> it will always format with
+the style established by the
+gentext template with <literal>name="page.citation"</literal>
+in the <literal>l:context name="xref"</literal>.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml
new file mode 100644
index 0000000..dc6da3d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml
@@ -0,0 +1,83 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="insert.olink.page.number">
+<refmeta>
+<refentrytitle>insert.olink.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.page.number</refname>
+<refpurpose>Turns page numbers in olinks on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="insert.olink.page.number.frag">
+<xsl:param name="insert.olink.page.number">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references made between documents with
+<tag>olink</tag> will
+include page number citations.
+In most cases this is only applicable to references in printed output.
+</para>
+<para>The parameter has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated for olinks.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>olink</tag> references.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>olink</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+<para>Olinks that point to targets within the same document
+are treated as <tag>xref</tag>s, and controlled by
+the <parameter>insert.xref.page.number</parameter> parameter.
+</para>
+
+<para>Page number references for olinks to
+external documents can only be inserted if the
+information exists in the olink database.
+This means each olink target element
+(<tag>div</tag> or <tag>obj</tag>)
+must have a <tag class="attribute">page</tag> attribute
+whose value is its page number in the target document.
+The XSL stylesheets are not able to extract that information
+during processing because pages have not yet been created in
+XSLT transformation. Only the XSL-FO processor knows what
+page each element is placed on.
+Therefore some postprocessing must take place to populate
+page numbers in the olink database.
+</para>
+
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml
new file mode 100644
index 0000000..e937060
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml
@@ -0,0 +1,68 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="insert.olink.pdf.frag">
+<refmeta>
+<refentrytitle>insert.olink.pdf.frag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.olink.pdf.frag</refname>
+<refpurpose>Add fragment identifiers for links into PDF files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="insert.olink.pdf.frag.frag">
+<xsl:param name="insert.olink.pdf.frag" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines whether
+the cross reference URIs to PDF documents made with
+<tag>olink</tag> will
+include fragment identifiers.
+</para>
+
+<para>When forming a URI to link to a PDF document,
+a fragment identifier (typically a '#' followed by an
+id value) appended to the PDF filename can be used by
+the PDF viewer to open
+the PDF file to a location within the document instead of
+the first page.
+However, not all PDF files have id
+values embedded in them, and not all PDF viewers can
+handle fragment identifiers.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to a non-zero value, then any olink targeting a
+PDF file will have the fragment identifier appended to the URI.
+The URI is formed by concatenating the value of the
+<parameter>olink.base.uri</parameter> parameter, the
+value of the <tag class="attribute">baseuri</tag>
+attribute from the <tag class="element">document</tag>
+element in the olink database with the matching
+<tag class="attribute">targetdoc</tag> value,
+and the value of the <tag class="attribute">href</tag>
+attribute for the targeted element in the olink database.
+The <tag class="attribute">href</tag> attribute
+contains the fragment identifier.
+</para>
+
+<para>If <parameter>insert.olink.pdf.frag</parameter> is set
+to zero (the default value), then
+the <tag class="attribute">href</tag> attribute
+from the olink database
+is not appended to PDF olinks, so the fragment identifier is left off.
+A PDF olink is any olink for which the
+<tag class="attribute">baseuri</tag> attribute
+from the matching <tag class="element">document</tag>
+element in the olink database ends with '.pdf'.
+Any other olinks will still have the fragment identifier added.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml
new file mode 100644
index 0000000..8c3aa07
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml
@@ -0,0 +1,60 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="insert.xref.page.number">
+<refmeta>
+<refentrytitle>insert.xref.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>insert.xref.page.number</refname>
+<refpurpose>Turns page numbers in xrefs on and off</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="insert.xref.page.number.frag">
+<xsl:param name="insert.xref.page.number">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter determines if
+cross references (<tag>xref</tag>s) in
+printed output will
+include page number citations.
+It has three possible values.
+</para>
+<variablelist>
+<varlistentry>
+<term>no</term>
+<listitem><para>No page number references will be generated.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>yes</term>
+<listitem><para>Page number references will be generated
+for all <tag>xref</tag> elements.
+The style of page reference may be changed
+if an <tag class="attribute">xrefstyle</tag>
+attribute is used.
+</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>maybe</term>
+<listitem><para>Page number references will not be generated
+for an <tag>xref</tag> element unless
+it has an
+<tag class="attribute">xrefstyle</tag>
+attribute whose value specifies a page reference.
+</para></listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml
new file mode 100644
index 0000000..49f8ee6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="itemizedlist.label.properties">
+<refmeta>
+<refentrytitle>itemizedlist.label.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>itemizedlist.label.properties</refname>
+<refpurpose>Properties that apply to each label inside itemized list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="itemizedlist.label.properties.frag"><xsl:attribute-set name="itemizedlist.label.properties">
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each label inside itemized list. E.g.:</para>
+<programlisting>&lt;xsl:attribute-set name="itemizedlist.label.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;right&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml
new file mode 100644
index 0000000..1d2c88c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="itemizedlist.label.width">
+<refmeta>
+<refentrytitle>itemizedlist.label.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+ <refname>itemizedlist.label.width</refname>
+<refpurpose>The default width of the label (bullet) in an itemized list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="itemizedlist.label.width.frag">
+ <xsl:param name="itemizedlist.label.width">1.0em</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Specifies the default width of the label (usually a bullet or other
+symbol) in an itemized list. You can override the default value on any
+particular list with the “dbfo†processing instruction using the
+“label-width†pseudoattribute.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml
new file mode 100644
index 0000000..d7c7c1d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml
@@ -0,0 +1,23 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="itemizedlist.properties">
+<refmeta>
+<refentrytitle>itemizedlist.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>itemizedlist.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by itemizedlist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="itemizedlist.properties.frag"><xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties">
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by itemizedlist.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml
new file mode 100644
index 0000000..ba729c8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="javahelp.encoding">
+<refmeta>
+<refentrytitle>javahelp.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>javahelp.encoding</refname>
+<refpurpose>Character encoding to use in control files for JavaHelp.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="javahelp.encoding.frag">
+<xsl:param name="javahelp.encoding">iso-8859-1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>JavaHelp crashes on some characters when written as character
+references. In that case you can use this parameter to select an appropriate encoding.</para>
+
+</refsection>
+</refentry>
+
+
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml
new file mode 100644
index 0000000..3a5a098
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="keep.relative.image.uris">
+<refmeta>
+<refentrytitle>keep.relative.image.uris</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keep.relative.image.uris</refname>
+<refpurpose>Should image URIs be resolved against xml:base?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="keep.relative.image.uris.frag">
+<xsl:param condition="html" name="keep.relative.image.uris" select="1"/>
+<xsl:param condition="fo" name="keep.relative.image.uris" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, relative URIs (in, for example
+<literal>fileref</literal> attributes) will be used in the generated
+output. Otherwise, the URIs will be made absolute with respect to the
+base URI.</para>
+
+<para>Note that the stylesheets calculate (and use) the absolute form
+for some purposes, this only applies to the resulting output.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml
new file mode 100644
index 0000000..49b0c0b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="keyboard.nav">
+<refmeta>
+<refentrytitle>keyboard.nav</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keyboard.nav</refname>
+<refpurpose>Enable keyboard navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="keyboard.nav.frag">
+<xsl:param name="keyboard.nav" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is added to the slides to enable keyboard
+navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves
+backward.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml
new file mode 100644
index 0000000..ed89e06
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0"
+ xml:id="l10n.gentext.default.language">
+ <refmeta>
+ <refentrytitle>l10n.gentext.default.language</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>l10n.gentext.default.language</refname>
+ <refpurpose>Sets the default language for generated text</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<src:fragment xml:id="l10n.gentext.default.language.frag">
+<xsl:param name="l10n.gentext.default.language">en</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of the <parameter>l10n.gentext.default.language</parameter>
+parameter is used as the language for generated text if no setting is provided
+in the source document.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml
new file mode 100644
index 0000000..ff941c7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="l10n.gentext.language">
+<refmeta>
+<refentrytitle>l10n.gentext.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.language</refname>
+<refpurpose>Sets the gentext language</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="l10n.gentext.language.frag">
+<xsl:param name="l10n.gentext.language"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this parameter is set to any value other than the empty string, its
+value will be used as the value for the language when generating text. Setting
+<parameter>l10n.gentext.language</parameter> overrides any settings within the
+document being formatted.</para>
+
+<para>It's much more likely that you might want to set the
+<parameter>l10n.gentext.default.language</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml
new file mode 100644
index 0000000..d70017a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml
@@ -0,0 +1,53 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="l10n.gentext.use.xref.language">
+<refmeta>
+<refentrytitle>l10n.gentext.use.xref.language</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.gentext.use.xref.language</refname>
+<refpurpose>Use the language of target when generating cross-reference text?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="l10n.gentext.use.xref.language.frag">
+<xsl:param name="l10n.gentext.use.xref.language" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the language of the target will be used when
+generating cross reference text. Usually, the <quote>current</quote>
+language is used when generating text (that is, the language of the
+element that contains the cross-reference element). But setting this parameter
+allows the language of the element <emphasis>pointed to</emphasis> to control
+the generated text.</para>
+
+<para>Consider the following example:</para>
+
+<informalexample>
+<programlisting>&lt;para lang="en"&gt;See also &lt;xref linkend="chap3"/&gt;.&lt;/para&gt;
+</programlisting>
+</informalexample>
+
+<para>Suppose that Chapter 3 happens to be written in German.
+If <parameter>l10n.gentext.use.xref.language</parameter> is non-zero, the
+resulting text will be something like this:</para>
+
+<blockquote>
+<para>See also Kapital 3.</para>
+</blockquote>
+
+<para>Where the more traditional rendering would be:</para>
+
+<blockquote>
+<para>See also Chapter 3.</para>
+</blockquote>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml
new file mode 100644
index 0000000..e0dbd79
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml
@@ -0,0 +1,57 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="l10n.lang.value.rfc.compliant">
+<refmeta>
+<refentrytitle>l10n.lang.value.rfc.compliant</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>l10n.lang.value.rfc.compliant</refname>
+<refpurpose>Make value of lang attribute RFC compliant?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="l10n.lang.value.rfc.compliant.frag">
+<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, ensure that the values for all <tag class="attribute">lang</tag> attributes in HTML output are RFC
+compliant<footnote><para>Section 8.1.1, <link xlink:href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.1.1">Language Codes</link>, in the HTML 4.0 Recommendation states that:
+
+<blockquote><para>[RFC1766] defines and explains the language codes
+that must be used in HTML documents.</para>
+<para>Briefly, language codes consist of a primary code and a possibly
+empty series of subcodes:
+
+<literallayout class="monospaced">language-code = primary-code ( "-" subcode )*</literallayout>
+</para>
+<para>And in RFC 1766, <link xlink:href="http://www.ietf.org/rfc/rfc1766.txt">Tags for the Identification
+of Languages</link>, the EBNF for "language tag" is given as:
+
+<literallayout class="monospaced">Language-Tag = Primary-tag *( "-" Subtag )
+Primary-tag = 1*8ALPHA
+Subtag = 1*8ALPHA</literallayout>
+</para>
+</blockquote>
+</para></footnote>.
+
+by taking any underscore characters in any <tag class="attribute">lang</tag> values found in source documents, and
+replacing them with hyphen characters in output HTML files. For
+example, <literal>zh_CN</literal> in a source document becomes
+<literal>zh-CN</literal> in the HTML output form that source.
+
+<note>
+<para>This parameter does not cause any case change in <tag class="attribute">lang</tag> values, because RFC 1766
+explicitly states that all "language tags" (as it calls them) "are
+to be treated as case insensitive".</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml
new file mode 100644
index 0000000..5deb960
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="label.from.part">
+<refmeta>
+<refentrytitle>label.from.part</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>label.from.part</refname>
+<refpurpose>Renumber components in each part?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="label.from.part.frag">
+<xsl:param name="label.from.part" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>label.from.part</parameter> is non-zero, then
+ numbering of components — <tag>preface</tag>,
+ <tag>chapter</tag>, <tag>appendix</tag>, and
+ <tag>reference</tag> (when <tag>reference</tag> occurs at the
+ component level) — is re-started within each
+ <tag>part</tag>.</para>
+<para>If <parameter>label.from.part</parameter> is zero (the
+ default), numbering of components is <emphasis>not</emphasis>
+ re-started within each <tag>part</tag>; instead, components are
+ numbered sequentially throughout each <tag>book</tag>,
+ regardless of whether or not they occur within <tag>part</tag>
+ instances.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml
new file mode 100644
index 0000000..f0f4b32
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="line-height">
+<refmeta>
+<refentrytitle>line-height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>line-height</refname>
+<refpurpose>Specify the line-height property</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="line-height.frag">
+<xsl:param name="line-height">normal</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the line-height property.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml
new file mode 100644
index 0000000..5e7bcac
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="linenumbering.everyNth">
+<refmeta>
+<refentrytitle>linenumbering.everyNth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.everyNth</refname>
+<refpurpose>Indicate which lines should be numbered</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="linenumbering.everyNth.frag">
+<xsl:param name="linenumbering.everyNth">5</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, everyNth line will be
+numbered. Note that numbering is one based, not zero based.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml
new file mode 100644
index 0000000..726781a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="linenumbering.extension">
+<refmeta>
+<refentrytitle>linenumbering.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.extension</refname>
+<refpurpose>Enable the line numbering extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="linenumbering.extension.frag">
+<xsl:param name="linenumbering.extension" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, verbatim environments (<tag>address</tag>, <tag>literallayout</tag>,
+<tag>programlisting</tag>, <tag>screen</tag>, <tag>synopsis</tag>) that specify line numbering will
+have line numbers.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml
new file mode 100644
index 0000000..8bf7d22
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="linenumbering.separator">
+<refmeta>
+<refentrytitle>linenumbering.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.separator</refname>
+<refpurpose>Specify a separator between line numbers and lines</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="linenumbering.separator.frag">
+<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The separator is inserted between line numbers and lines in the
+verbatim environment. The default value is a single white space.
+ Note the interaction with <parameter>linenumbering.width</parameter>
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml
new file mode 100644
index 0000000..78515c3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="linenumbering.width">
+<refmeta>
+<refentrytitle>linenumbering.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>linenumbering.width</refname>
+<refpurpose>Indicates the width of line numbers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="linenumbering.width.frag">
+<xsl:param name="linenumbering.width">3</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If line numbering is enabled, line numbers will appear right
+justified in a field "width" characters wide.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml
new file mode 100644
index 0000000..0715b32
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="link.mailto.url">
+<refmeta>
+<refentrytitle>link.mailto.url</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>link.mailto.url</refname>
+<refpurpose>Mailto URL for the LINK REL=made HTML HEAD element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="link.mailto.url.frag">
+<xsl:param name="link.mailto.url"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If not the empty string, this address will be used for the
+rel=made <literal>link</literal> element in the html <literal>head</literal>
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml
new file mode 100644
index 0000000..dbf9dfc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="list.block.properties">
+<refmeta>
+<refentrytitle>list.block.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.block.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="list.block.properties.frag"><xsl:attribute-set name="list.block.properties">
+ <xsl:attribute name="provisional-label-separation">0.2em</xsl:attribute>
+ <xsl:attribute name="provisional-distance-between-starts">1.5em</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by itemizedlist/orderedlist.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml
new file mode 100644
index 0000000..377e6f8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="list.block.spacing">
+<refmeta>
+<refentrytitle>list.block.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.block.spacing</refname>
+<refpurpose>What spacing do you want before and after lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="list.block.spacing.frag"><xsl:attribute-set name="list.block.spacing">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the spacing required before and after a list. It is necessary to specify the space after a list block because lists can come inside of paras. </para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml
new file mode 100644
index 0000000..2191652
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="list.item.spacing">
+<refmeta>
+<refentrytitle>list.item.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>list.item.spacing</refname>
+<refpurpose>What space do you want between list items?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="list.item.spacing.frag"><xsl:attribute-set name="list.item.spacing">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify what spacing you want between each list item.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml
new file mode 100644
index 0000000..fbf80d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml
@@ -0,0 +1,51 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="make.clean.html">
+<refmeta>
+<refentrytitle>make.clean.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.clean.html</refname>
+<refpurpose>Make HTML conform to modern coding standards</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="make.clean.html.frag">
+<xsl:param name="make.clean.html" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>make.clean.html</parameter> is true, the stylesheets take
+extra effort to ensure that the resulting HTML is conforms to
+modern HTML coding standards. In addition to eliminating
+excessive and noncompliant coding, it moves presentation
+HTML coding to a CSS stylesheet.</para>
+
+<para>The resulting HTML is dependent on
+CSS for formatting, and so the stylesheet is capable of
+generating a supporting CSS file. The <parameter>docbook.css.source</parameter>
+and <parameter>custom.css.source</parameter> parameters control
+how a CSS file is generated.</para>
+
+<para>If you require your CSS to reside in the HTML
+<tag>head</tag> element, then the <parameter>generate.css.header</parameter>
+can be used to do that.</para>
+
+<para>The <parameter>make.clean.html</parameter> parameter is
+different from <parameter>html.cleanup</parameter>
+because the former changes the resulting markup; it does not use extension functions
+like the latter to manipulate result-tree-fragments,
+and is therefore applicable to any XSLT processor.</para>
+
+<para>If <parameter>make.clean.html</parameter> is set to zero (the default),
+then the stylesheet retains its original
+<quote>old style</quote>
+HTML formatting features.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml
new file mode 100644
index 0000000..0bad336
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="make.graphic.viewport">
+<refmeta>
+<refentrytitle>make.graphic.viewport</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.graphic.viewport</refname>
+<refpurpose>Use tables in HTML to make viewports for graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="make.graphic.viewport.frag">
+<xsl:param name="make.graphic.viewport" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The HTML <tag>img</tag> element only supports the notion
+of content-area scaling; it doesn't support the distinction between a
+content-area and a viewport-area, so we have to make some compromises.</para>
+
+<para>If <parameter>make.graphic.viewport</parameter> is non-zero, a table
+will be used to frame the image. This creates an effective viewport-area.
+</para>
+
+<para>Tables and alignment don't work together, so this parameter is ignored
+if alignment is specified on an image.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml
new file mode 100644
index 0000000..7942b5a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="make.index.markup">
+<refmeta>
+<refentrytitle>make.index.markup</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.index.markup</refname>
+<refpurpose>Generate XML index markup in the index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="make.index.markup.frag">
+<xsl:param name="make.index.markup" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter enables a very neat trick for getting properly
+merged, collated back-of-the-book indexes. G. Ken Holman suggested
+this trick at Extreme Markup Languages 2002 and I'm indebted to him
+for it.</para>
+
+<para>Jeni Tennison's excellent code in
+<filename>autoidx.xsl</filename> does a great job of merging and
+sorting <tag>indexterm</tag>s in the document and building a
+back-of-the-book index. However, there's one thing that it cannot
+reasonably be expected to do: merge page numbers into ranges. (I would
+not have thought that it could collate and suppress duplicate page
+numbers, but in fact it appears to manage that task somehow.)</para>
+
+<para>Ken's trick is to produce a document in which the index at the
+back of the book is <quote>displayed</quote> in XML. Because the index
+is generated by the FO processor, all of the page numbers have been resolved.
+It's a bit hard to explain, but what it boils down to is that instead of having
+an index at the back of the book that looks like this:</para>
+
+<blockquote>
+<formalpara><info><title>A</title></info>
+<para>ap1, 1, 2, 3</para>
+</formalpara>
+</blockquote>
+
+<para>you get one that looks like this:</para>
+
+<blockquote>
+<programlisting>&lt;indexdiv&gt;A&lt;/indexdiv&gt;
+&lt;indexentry&gt;
+&lt;primaryie&gt;ap1&lt;/primaryie&gt;,
+&lt;phrase role="pageno"&gt;1&lt;/phrase&gt;,
+&lt;phrase role="pageno"&gt;2&lt;/phrase&gt;,
+&lt;phrase role="pageno"&gt;3&lt;/phrase&gt;
+&lt;/indexentry&gt;</programlisting>
+</blockquote>
+
+<para>After building a PDF file with this sort of odd-looking index, you can
+extract the text from the PDF file and the result is a proper index expressed in
+XML.</para>
+
+<para>Now you have data that's amenable to processing and a simple Perl script
+(such as <filename>fo/pdf2index</filename>) can
+merge page ranges and generate a proper index.</para>
+
+<para>Finally, reformat your original document using this literal index instead of
+an automatically generated one and <quote>bingo</quote>!</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml
new file mode 100644
index 0000000..c49ab97
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="make.single.year.ranges">
+<refmeta>
+<refentrytitle>make.single.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.single.year.ranges</refname>
+<refpurpose>Print single-year ranges (e.g., 1998-1999)</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="make.single.year.ranges.frag">
+<xsl:param name="make.single.year.ranges" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, year ranges that span a single year will be printed
+in range notation (1998-1999) instead of discrete notation
+(1998, 1999).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml
new file mode 100644
index 0000000..8618d39
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="make.valid.html">
+<refmeta>
+<refentrytitle>make.valid.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.valid.html</refname>
+<refpurpose>Attempt to make sure the HTML output is valid HTML</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="make.valid.html.frag">
+<xsl:param name="make.valid.html" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>make.valid.html</parameter> is true, the stylesheets take
+extra effort to ensure that the resulting HTML is valid. This may mean that some
+<tag>para</tag> tags are translated into HTML <tag>div</tag>s or
+that other substitutions occur.</para>
+
+<para>This parameter is different from <parameter>html.cleanup</parameter>
+because it changes the resulting markup; it does not use extension functions
+to manipulate result-tree-fragments and is therefore applicable to any
+XSLT processor.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml
new file mode 100644
index 0000000..b1a2382
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="make.year.ranges">
+<refmeta>
+<refentrytitle>make.year.ranges</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.year.ranges</refname>
+<refpurpose>Collate copyright years into ranges?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="make.year.ranges.frag"><xsl:param name="make.year.ranges" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple copyright <tag>year</tag> elements will be
+collated into ranges.
+This works only if each year number is put into a separate
+year element. The copyright element permits multiple
+year elements. If a year element contains a dash or
+a comma, then that year element will not be merged into
+any range.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml
new file mode 100644
index 0000000..73cb637
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.authors.section.enabled">
+<refmeta>
+<refentrytitle>man.authors.section.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.authors.section.enabled</refname>
+<refpurpose>Display auto-generated AUTHORS section?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="man.authors.section.enabled.frag">
+<xsl:param name="man.authors.section.enabled">1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>man.authors.section.enabled</parameter> is non-zero
+(the default), then an <literal>AUTHORS</literal> section is
+generated near the end of each man page. The output of the
+<literal>AUTHORS</literal> section is assembled from any
+<tag>author</tag>, <tag>editor</tag>, and <tag>othercredit</tag>
+metadata found in the contents of the child <tag>info</tag> or
+<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag>
+itself, or from any <tag>author</tag>, <tag>editor</tag>, and
+<tag>othercredit</tag> metadata that may appear in <tag>info</tag>
+contents of any ancestors of the <tag>refentry</tag>.</para>
+
+<para>If the value of
+<parameter>man.authors.section.enabled</parameter> is zero, the
+the auto-generated <literal>AUTHORS</literal> section is
+suppressed.</para>
+
+<para>Set the value of
+ <parameter>man.authors.section.enabled</parameter> to zero if
+ you want to have a manually created <literal>AUTHORS</literal>
+ section in your source, and you want it to appear in output
+ instead of the auto-generated <literal>AUTHORS</literal>
+ section.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml
new file mode 100644
index 0000000..a802ec8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml
@@ -0,0 +1,76 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.base.url.for.relative.links">
+ <refmeta>
+ <refentrytitle>man.base.url.for.relative.links</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.base.url.for.relative.links</refname>
+ <refpurpose>Specifies a base URL for relative links</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <src:fragment xml:id="man.base.url.for.relative.links.frag"><xsl:param name="man.base.url.for.relative.links">[set $man.base.url.for.relative.links]/</xsl:param></src:fragment>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>For any “notesource†listed in the auto-generated
+ “NOTES†section of output man pages (which is generated when
+ the value of the
+ <parameter>man.endnotes.list.enabled</parameter> parameter
+ is non-zero), if the notesource is a link source with a
+ relative URI, the URI is displayed in output with the value
+ of the
+ <parameter>man.base.url.for.relative.links</parameter>
+ parameter prepended to the value of the link URI.</para>
+
+ <note>
+ <para>A link source is an notesource that references an
+ external resource:
+ <itemizedlist>
+ <listitem>
+ <para>a <tag>ulink</tag> element with a <tag
+ class="attribute">url</tag> attribute</para>
+ </listitem>
+ <listitem>
+ <para>any element with an <tag
+ class="attribute">xlink:href</tag> attribute</para>
+ </listitem>
+ <listitem>
+ <para>an <tag>imagedata</tag>, <tag>audiodata</tag>, or
+ <tag>videodata</tag> element</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </note>
+
+ <para>If you use relative URIs in link sources in your DocBook
+ <tag>refentry</tag> source, and you leave
+ <parameter>man.base.url.for.relative.links</parameter>
+ unset, the relative links will appear “as is†in the “Notesâ€
+ section of any man-page output generated from your source.
+ That’s probably not what you want, because such relative
+ links are only usable in the context of HTML output. So, to
+ make the links meaningful and usable in the context of
+ man-page output, set a value for
+ <parameter>man.base.url.for.relative.links</parameter> that
+ points to the online version of HTML output generated from
+ your DocBook <tag>refentry</tag> source. For
+ example:
+ <programlisting
+ >&lt;xsl:param name="man.base.url.for.relative.links"
+ >http://www.kernel.org/pub/software/scm/git/docs/&lt;/xsl:param></programlisting>
+ </para>
+
+ </refsection>
+
+ <refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter></para>
+ </refsection>
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml
new file mode 100644
index 0000000..859edb7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.break.after.slash">
+<refmeta>
+<refentrytitle>man.break.after.slash</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.break.after.slash</refname>
+<refpurpose>Enable line-breaking after slashes?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.break.after.slash.frag">
+<xsl:param name="man.break.after.slash">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, line-breaking after slashes is enabled. This is
+mainly useful for causing long URLs or pathnames/filenames to be
+broken up or "wrapped" across lines (though it also has the side
+effect of sometimes causing relatively short URLs and pathnames to be
+broken up across lines too).</para>
+
+<para>If zero (the default), line-breaking after slashes is
+disabled. In that case, strings containing slashes (for example, URLs
+or filenames) are not broken across lines, even if they exceed the
+maximum column widith.</para>
+
+<warning>
+ <para>If you set a non-zero value for this parameter, check your
+ man-page output carefuly afterwards, in order to make sure that the
+ setting has not introduced an excessive amount of breaking-up of URLs
+ or pathnames. If your content contains mostly short URLs or
+ pathnames, setting a non-zero value for
+ <parameter>man.break.after.slash</parameter> will probably result in
+ in a significant number of relatively short URLs and pathnames being
+ broken across lines, which is probably not what you want.</para>
+</warning>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml
new file mode 100644
index 0000000..5522339
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml
@@ -0,0 +1,55 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.charmap.enabled">
+<refmeta>
+<refentrytitle>man.charmap.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.enabled</refname>
+<refpurpose>Apply character map before final output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.charmap.enabled.frag">
+<xsl:param name="man.charmap.enabled" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the <parameter>man.charmap.enabled</parameter>
+parameter is non-zero, a "character map" is used to substitute certain
+Unicode symbols and special characters with appropriate roff/groff
+equivalents, just before writing each man-page file to the
+filesystem. If instead the value of
+<parameter>man.charmap.enabled</parameter> is zero, Unicode characters
+are passed through "as is".</para>
+
+<refsection><info><title>Details</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes a <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link> format as detailed in the XSLT 2.0 specification. The map
+contains more than 800 character mappings and can be considered the
+standard roff character map for the distribution.</para>
+
+<para>You can use the <parameter>man.charmap.uri</parameter>
+parameter to specify a URI for the location for an alternate roff
+character map to use in place of the standard roff character map
+provided in the distribution.</para>
+
+<para>You can also use a subset of a character map. For details,
+see the <parameter>man.charmap.use.subset</parameter>,
+<parameter>man.charmap.subset.profile</parameter>, and
+<parameter>man.charmap.subset.profile.english</parameter>
+parameters.</para>
+
+</refsection>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml
new file mode 100644
index 0000000..cbc9fb0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml
@@ -0,0 +1,80 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.charmap.subset.profile.english">
+<refmeta>
+<refentrytitle>man.charmap.subset.profile.english</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.subset.profile.english</refname>
+<refpurpose>Profile of character map subset</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.charmap.subset.profile.english.frag">
+<xsl:param name="man.charmap.subset.profile.english">
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ @*[local-name() = 'class'] = 'symbols')
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+ <parameter>man.charmap.use.subset</parameter> parameter is
+ non-zero, and your DocBook source is written in English (that
+ is, if its <tag class="attribute">lang</tag> or <tag
+ class="attribute">xml:lang</tag> attribute on the root element
+ in your DocBook source or on the first <tag>refentry</tag>
+ element in your source has the value <literal>en</literal> or if
+ it has no <tag class="attribute">lang</tag> or <tag
+ class="attribute">xml:lang</tag> attribute), then the
+ character-map subset specified by the
+ <parameter>man.charmap.subset.profile.english</parameter>
+ parameter is used instead of the full roff character map.</para>
+
+<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag
+ class="attribute">xml:lang</tag> attribute
+ on the root element in your DocBook source or on the first
+ <tag>refentry</tag> element in your source has a value other
+ than <literal>en</literal>, then the character-map subset
+ specified by the
+ <parameter>man.charmap.subset.profile</parameter> parameter is
+ used instead of
+ <parameter>man.charmap.subset.profile.english</parameter>.</para>
+
+<para>The difference between the two subsets is that
+ <parameter>man.charmap.subset.profile</parameter> provides
+ mappings for characters in Western European languages that are
+ not part of the Roman (English) alphabet (ASCII character set).</para>
+
+<para>The value of <parameter>man.charmap.subset.profile.english</parameter>
+is a string representing an XPath expression that matches attribute
+names and values for <tag
+ namespace="http://docbook.sf.net/xmlns/unichar/1.0"
+ >output-character</tag> elements in the character map.</para>
+
+<para>For other details, see the documentation for the
+<parameter>man.charmap.subset.profile.english</parameter> and
+<parameter>man.charmap.use.subset</parameter> parameters.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml
new file mode 100644
index 0000000..913a4e3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml
@@ -0,0 +1,297 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.charmap.subset.profile">
+<refmeta>
+<refentrytitle>man.charmap.subset.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.subset.profile</refname>
+<refpurpose>Profile of character map subset</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.charmap.subset.profile.frag">
+<xsl:param name="man.charmap.subset.profile">
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ (@*[local-name() = 'class'] = 'symbols' or
+ @*[local-name() = 'class'] = 'letters')
+) or
+@*[local-name() = 'block'] = 'Latin Extended-A'
+or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.charmap.use.subset</parameter> parameter is non-zero,
+and your DocBook source is not written in English (that
+ is, if the <tag class="attribute">lang</tag> or <tag
+ class="attribute">xml:lang</tag> attribute on the root element
+ in your DocBook source or on the first <tag>refentry</tag>
+ element in your source has a value other than
+ <literal>en</literal>), then the character-map subset specified
+ by the <parameter>man.charmap.subset.profile</parameter>
+ parameter is used instead of the full roff character map.</para>
+
+<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag
+ class="attribute">xml:lang</tag> attribute on the root
+ element in your DocBook
+ source or on the first <tag>refentry</tag> element in your source
+ has the value <literal>en</literal> or if it has no <tag
+ class="attribute">lang</tag> or <tag
+ class="attribute">xml:lang</tag> attribute, then the character-map
+ subset specified by the
+ <parameter>man.charmap.subset.profile.english</parameter>
+ parameter is used instead of
+ <parameter>man.charmap.subset.profile</parameter>.</para>
+
+<para>The difference between the two subsets is that
+ <parameter>man.charmap.subset.profile</parameter> provides
+ mappings for characters in Western European languages that are
+ not part of the Roman (English) alphabet (ASCII character set).</para>
+
+<para>The value of <parameter>man.charmap.subset.profile</parameter>
+is a string representing an XPath expression that matches attribute
+names and values for <tag
+ namespace="http://docbook.sf.net/xmlns/unichar/1.0">output-character</tag>
+elements in the character map.</para>
+
+<para>The attributes supported in the <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map included in the distribution</link> are:
+<variablelist>
+ <varlistentry>
+ <term>character</term>
+ <listitem>
+ <simpara>a raw Unicode character or numeric Unicode
+ character-entity value (either in decimal or hex); all
+ characters have this attribute</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <simpara>a standard full/long ISO/Unicode character name (e.g.,
+ "OHM SIGN"); all characters have this attribute</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>block</term>
+ <listitem>
+ <simpara>a standard Unicode "block" name (e.g., "General
+ Punctuation"); all characters have this attribute. For the full
+ list of Unicode block names supported in the standard roff
+ character map, see <xref linkend="BlocksAndClasses"/>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <simpara>a class of characters (e.g., "spaces"). Not all
+ characters have this attribute; currently, it is used only with
+ certain characters within the "C1 Controls And Latin-1
+ Supplement" and "General Punctuation" blocks. For details, see
+ <xref linkend="BlocksAndClasses"/>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>entity</term>
+ <listitem>
+ <simpara>an ISO entity name (e.g., "ohm"); not all characters
+ have this attribute, because not all characters have ISO entity
+ names; for example, of the 800 or so characters in the standard
+ roff character map included in the distribution, only around 300
+ have ISO entity names.
+ </simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>string</term>
+ <listitem>
+ <simpara>a string representing an roff/groff escape-code (with
+ "@esc@" used in place of the backslash), or a simple ASCII
+ string; all characters in the roff character map have this
+ attribute</simpara>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<para>The value of <parameter>man.charmap.subset.profile</parameter>
+is evaluated as an XPath expression at run-time to select a portion of
+the roff character map to use. You can tune the subset used by adding
+or removing parts. For example, if you need to use a wide range of
+mathematical operators in a document, and you want to have them
+converted into roff markup properly, you might add the following:
+
+<literallayout class="monospaced"> @*[local-name() = 'block'] ='MathematicalOperators' </literallayout>
+
+That will cause a additional set of around 67 additional "math"
+characters to be converted into roff markup. </para>
+
+<note>
+<para>Depending on which XSLT engine you use, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>man.charmap.subset.profile</parameter> at run-time. If you
+don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that
+supports <function>dyn:evaluate</function> -- you must either set the
+value of the <parameter>man.charmap.use.subset</parameter> parameter
+to zero and process your documents using the full character map
+instead, or set the value of the
+<parameter>man.charmap.enabled</parameter> parameter to zero instead
+(so that character-map processing is disabled completely.</para>
+</note>
+
+<para>An alternative to using
+<parameter>man.charmap.subset.profile</parameter> is to create your
+own custom character map, and set the value of
+<parameter>man.charmap.uri</parameter> to the URI/filename for
+that. If you use a custom character map, you will probably want to
+include in it just the characters you want to use, and so you will
+most likely also want to set the value of
+<parameter>man.charmap.use.subset</parameter> to zero.</para>
+<para>You can create a
+custom character map by making a copy of the <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map</link> provided in the distribution, and
+then adding to, changing, and/or deleting from that.</para>
+
+<caution>
+<para>If you author your DocBook XML source in UTF-8 or UTF-16
+encoding and aren't sure what OSes or environments your man-page
+output might end up being viewed on, and not sure what version of
+nroff/groff those environments might have, you should be careful about
+what Unicode symbols and special characters you use in your source and
+what parts you add to the value of
+<parameter>man.charmap.subset.profile</parameter>.</para>
+<para>Many of the escape codes used are specific to groff and using
+them may not provide the expected output on an OS or environment that
+uses nroff instead of groff.</para>
+<para>On the other hand, if you intend for your man-page output to be
+viewed only on modern systems (for example, GNU/Linux systems, FreeBSD
+systems, or Cygwin environments) that have a good, up-to-date groff,
+then you can safely include a wide range of Unicode symbols and
+special characters in your UTF-8 or UTF-16 encoded DocBook XML source
+and add any of the supported Unicode block names to the value of
+<parameter>man.charmap.subset.profile</parameter>.</para>
+</caution>
+
+
+<para>For other details, see the documentation for the
+<parameter>man.charmap.use.subset</parameter> parameter.</para>
+
+<refsection xml:id="BlocksAndClasses"><info><title>Supported Unicode block names and "class" values</title></info>
+
+
+ <para>Below is the full list of Unicode block names and "class"
+ values supported in the standard roff stylesheet provided in the
+ distribution, along with a description of which codepoints from the
+ Unicode range corresponding to that block name or block/class
+ combination are supported.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=C1%20Controls%20and%20Latin-1%20Supplement%20(Latin-1%20Supplement)">C1 Controls And Latin-1 Supplement (Latin-1 Supplement)</link> (x00a0 to x00ff)
+ <itemizedlist><info><title>class values</title></info>
+
+ <listitem>
+ <para>symbols</para>
+ </listitem>
+ <listitem>
+ <para>letters</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Latin%20Extended-A">Latin Extended-A</link> (x0100 to x017f, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Spacing%20Modifier%20Letters">Spacing Modifier Letters</link> (x02b0 to x02ee, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Greek%20and%20Coptic">Greek and Coptic</link> (x0370 to x03ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=General%20Punctuation">General Punctuation</link> (x2000 to x206f, partial)
+ <itemizedlist><info><title>class values</title></info>
+
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;start=8192&amp;end=8203">spaces</link></para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;start=8208&amp;end=8213">dashes</link></para>
+ </listitem>
+ <listitem>
+ <para>quotes</para>
+ </listitem>
+ <listitem>
+ <para>daggers</para>
+ </listitem>
+ <listitem>
+ <para>bullets</para>
+ </listitem>
+ <listitem>
+ <para>leaders</para>
+ </listitem>
+ <listitem>
+ <para>primes</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Superscripts%20and%20Subscripts">Superscripts and Subscripts</link> (x2070 to x209f)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Currency%20Symbols">Currency Symbols</link> (x20a0 to x20b1)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Letterlike%20Symbols">Letterlike Symbols</link> (x2100 to x214b)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Number%20Forms">Number Forms</link> (x2150 to x218f)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Arrows">Arrows</link> (x2190 to x21ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Mathematical%20Operators">Mathematical Operators</link> (x2200 to x22ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Control%20Pictures">Control Pictures</link> (x2400 to x243f)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Enclosed%20Alphanumerics">Enclosed Alphanumerics</link> (x2460 to x24ff)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Geometric%20Shapes">Geometric Shapes</link> (x25a0 to x25f7, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Miscellaneous%20Symbols">Miscellaneous Symbols</link> (x2600 to x26ff, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Dingbats">Dingbats</link> (x2700 to x27be, partial)</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&amp;id=Alphabetic%20Presentation%20Forms">Alphabetic Presentation Forms</link> (xfb00 to xfb04 only)</para>
+ </listitem>
+ </itemizedlist>
+</refsection>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml
new file mode 100644
index 0000000..0c8f574
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.charmap.uri">
+<refmeta>
+<refentrytitle>man.charmap.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.uri</refname>
+<refpurpose>URI for custom roff character map</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.charmap.uri.frag">
+<xsl:param name="man.charmap.uri"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes an <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link>. That character map can be considered the standard roff
+character map for the distribution.</para>
+
+<para>If the value of the <parameter>man.charmap.uri</parameter>
+parameter is non-empty, that value is used as the URI for the location
+for an alternate roff character map to use in place of the standard
+roff character map provided in the distribution.</para>
+
+<warning>
+<para>Do not set a value for <parameter>man.charmap.uri</parameter>
+unless you have a custom roff character map that differs from the
+standard one provided in the distribution.</para>
+</warning>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml
new file mode 100644
index 0000000..4403704
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml
@@ -0,0 +1,80 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.charmap.use.subset">
+<refmeta>
+<refentrytitle>man.charmap.use.subset</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.charmap.use.subset</refname>
+<refpurpose>Use subset of character map instead of full map?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.charmap.use.subset.frag">
+<xsl:param name="man.charmap.use.subset" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.charmap.use.subset</parameter> parameter is non-zero,
+a subset of the roff character map is used instead of the full roff
+character map. The profile of the subset used is determined either
+by the value of the
+<parameter>man.charmap.subset.profile</parameter>
+parameter (if the source is not in English) or the
+<parameter>man.charmap.subset.profile.english</parameter>
+parameter (if the source is in English).</para>
+
+<note>
+ <para>You may want to experiment with setting a non-zero value of
+ <parameter>man.charmap.use.subset</parameter>, so that the full
+ character map is used. Depending on which XSLT engine you run,
+ setting a non-zero value for
+ <parameter>man.charmap.use.subset</parameter> may significantly
+ increase the time needed to process your documents. Or it may
+ not. For example, if you set it and run it with xsltproc, it seems
+ to dramatically increase processing time; on the other hand, if you
+ set it and run it with Saxon, it does not seem to increase
+ processing time nearly as much.</para>
+
+ <para>If processing time is not a important concern and/or you can
+ tolerate the increase in processing time imposed by using the full
+ character map, set <parameter>man.charmap.use.subset</parameter> to
+ zero.</para>
+</note>
+
+<refsection><info><title>Details</title></info>
+
+<para>For converting certain Unicode symbols and special characters in
+UTF-8 or UTF-16 encoded XML source to appropriate groff/roff
+equivalents in man-page output, the DocBook XSL Stylesheets
+distribution includes a <link xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character
+map</link> format as detailed in the XSLT 2.0 specification. The map
+contains more than 800 character mappings and can be considered the
+standard roff character map for the distribution.</para>
+
+<note>
+<para>You can use the <parameter>man.charmap.uri</parameter>
+parameter to specify a URI for the location for an alternate roff
+character map to use in place of the standard roff character map
+provided in the distribution.</para>
+</note>
+
+<para>Because it is not terrifically efficient to use the standard
+800-character character map in full -- and for most (or all) users,
+never necessary to use it in full -- the DocBook XSL Stylesheets
+support a mechanism for using, within any given character map, a
+subset of character mappings instead of the full set. You can use the
+<parameter>man.charmap.subset.profile</parameter> or
+<parameter>man.charmap.subset.profile.english</parameter>
+parameter to tune the profile of that subset to use.</para>
+
+</refsection>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml
new file mode 100644
index 0000000..9e83587
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.copyright.section.enabled">
+<refmeta>
+<refentrytitle>man.copyright.section.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.copyright.section.enabled</refname>
+<refpurpose>Display auto-generated COPYRIGHT section?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="man.copyright.section.enabled.frag">
+<xsl:param name="man.copyright.section.enabled">1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>man.copyright.section.enabled</parameter> is non-zero
+(the default), then a <literal>COPYRIGHT</literal> section is
+generated near the end of each man page. The output of the
+<literal>COPYRIGHT</literal> section is assembled from any
+<tag>copyright</tag> and <tag>legalnotice</tag> metadata found in
+the contents of the child <tag>info</tag> or
+<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag>
+itself, or from any <tag>copyright</tag> and
+<tag>legalnotice</tag> metadata that may appear in <tag>info</tag>
+contents of any ancestors of the <tag>refentry</tag>.</para>
+
+<para>If the value of
+<parameter>man.copyright.section.enabled</parameter> is zero, the
+the auto-generated <literal>COPYRIGHT</literal> section is
+suppressed.</para>
+
+<para>Set the value of
+ <parameter>man.copyright.section.enabled</parameter> to zero if
+ you want to have a manually created <literal>COPYRIGHT</literal>
+ section in your source, and you want it to appear in output
+ instead of the auto-generated <literal>COPYRIGHT</literal>
+ section.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml
new file mode 100644
index 0000000..b069ec3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml
@@ -0,0 +1,106 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.endnotes.are.numbered">
+<refmeta>
+<refentrytitle>man.endnotes.are.numbered</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.are.numbered</refname>
+<refpurpose>Number endnotes?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.endnotes.are.numbered.frag">
+<xsl:param name="man.endnotes.are.numbered">1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is
+non-zero (the default), then for each non-empty<footnote>
+<para>A “non-empty†notesource is one that looks like
+this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"&gt;manpages&lt;/ulink&gt;</literallayout>
+an “empty†notesource is on that looks like this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/&gt;</literallayout>
+</para></footnote> “notesourceâ€:
+
+<itemizedlist>
+ <listitem>
+ <para>a number (in square brackets) is displayed inline after the
+ rendered inline contents (if any) of the notesource</para>
+ </listitem>
+ <listitem>
+ <para>the contents of the notesource are included in a
+ numbered list of endnotes that is generated at the end of
+ each man page; the number for each endnote corresponds to
+ the inline number for the notesource with which it is
+ associated</para>
+ </listitem>
+</itemizedlist>
+The default heading for the list of endnotes is
+<literal>NOTES</literal>. To output a different heading, set a value
+for the <parameter>man.endnotes.section.heading</parameter>
+parameter.</para>
+
+<note>
+ <para>The endnotes list is also displayed (but without
+ numbers) if the value of
+ <parameter>man.endnotes.list.enabled</parameter> is
+ non-zero.</para>
+</note>
+
+
+<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is
+zero, numbering of endnotess is suppressed; only inline
+contents (if any) of the notesource are displayed inline.
+<important>
+ <para>If you are thinking about disabling endnote numbering by setting
+ the value of <parameter>man.endnotes.are.numbered</parameter> to zero,
+ before you do so, first take some time to carefully
+ consider the information needs and experiences of your users. The
+ square-bracketed numbers displayed inline after notesources may seem
+ obstrusive and aesthetically unpleasing<footnote><para>As far as notesources that are links, ytou might
+ think it would be better to just display URLs for non-empty
+ links inline, after their content, rather than displaying
+ square-bracketed numbers all over the place. But it's not better. In
+ fact, it's not even practical, because many (most) URLs for links
+ are too long to be displayed inline. They end up overflowing the
+ right margin. You can set a non-zero value for
+ <parameter>man.break.after.slash</parameter> parameter to deal with
+ that, but it could be argued that what you end up with is at least
+ as ugly, and definitely more obstrusive, then having short
+ square-bracketed numbers displayed inline.</para></footnote>,
+
+ but in a text-only output format, the
+ numbered-notesources/endnotes-listing mechanism is the only
+ practical way to handle this kind of content.</para>
+
+ <para>Also, users of “text based†browsers such as
+ <command>lynx</command> will already be accustomed to seeing inline
+ numbers for links. And various "man to html" applications, such as
+ the widely used <command><link xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>)
+ application, can automatically turn URLs into "real" HTML hyperlinks
+ in output. So leaving <parameter>man.endnotes.are.numbered</parameter>
+ at its default (non-zero) value ensures that no information is
+ lost in your man-page output. It just gets
+ “rearrangedâ€.</para>
+</important>
+</para>
+<para>The handling of empty links is not affected by this
+parameter. Empty links are handled simply by displaying their URLs
+inline. Empty links are never auto-numbered.</para>
+
+<para>If you disable endnotes numbering, you should probably also set
+<parameter>man.font.links</parameter> to an empty value (to
+disable font formatting for links.</para>
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter>,
+ <parameter>man.font.links</parameter></para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml
new file mode 100644
index 0000000..89d8188
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml
@@ -0,0 +1,105 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.endnotes.list.enabled">
+<refmeta>
+<refentrytitle>man.endnotes.list.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.list.enabled</refname>
+<refpurpose>Display endnotes list at end of man page?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.endnotes.list.enabled.frag">
+<xsl:param name="man.endnotes.list.enabled">1</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is
+non-zero (the default), then an endnotes list is added to the end of
+the output man page.</para>
+
+<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is
+zero, the list is suppressed — unless link numbering is enabled (that
+is, if <parameter>man.endnotes.are.numbered</parameter> is non-zero), in
+which case, that setting overrides the
+<parameter>man.endnotes.list.enabled</parameter> setting, and the
+endnotes list is still displayed. The reason is that inline
+numbering of notesources associated with endnotes only makes sense
+if a (numbered) list of endnotes is also generated.</para>
+
+<note>
+ <para>Leaving
+ <parameter>man.endnotes.list.enabled</parameter> at its default
+ (non-zero) value ensures that no “out of line†information (such
+ as the URLs for hyperlinks and images) gets lost in your
+ man-page output. It just gets “rearrangedâ€.</para>
+ <para>So if you’re thinking about disabling endnotes listing by
+ setting the value of
+ <parameter>man.endnotes.list.enabled</parameter> to zero:
+ Before you do so, first take some time to carefully consider
+ the information needs and experiences of your users. The “out
+ of line†information has value even if the presentation of it
+ in text output is not as interactive as it may be in other
+ output formats.</para>
+ <para>As far as the specific case of URLs: Even though the URLs
+ displayed in text output may not be “real†(clickable)
+ hyperlinks, many X terminals have convenience features for
+ recognizing URLs and can, for example, present users with
+ an options to open a URL in a browser with the user clicks on
+ the URL is a terminal window. And short of those, users with X
+ terminals can always manually cut and paste the URLs into a web
+ browser.</para>
+ <para>Also, note that various “man to html†tools, such as the
+ widely used <command><link xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>)
+ application, automatically mark up URLs with <literal>a@href</literal> markup
+ during conversion — resulting in “real†hyperlinks in HTML
+ output from those tools.</para>
+</note>
+
+<para>To “turn off†numbering of endnotes in the
+endnotes list, set <parameter>man.endnotes.are.numbered</parameter>
+to zero. The endnotes list will
+still be displayed; it will just be displayed without the
+numbers<footnote><para>It can still make sense to have
+the list of endnotes displayed even if you have endnotes numbering turned
+off. In that case, your endnotes list basically becomes a “list
+of references†without any association with specific text in
+your document. This is probably the best option if you find the inline
+endnotes numbering obtrusive. Your users will still have access to all the “out of lineâ€
+such as URLs for hyperlinks.</para></footnote>
+</para>
+
+<para>The default heading for the endnotes list is
+<literal>NOTES</literal>. To change that, set a non-empty
+value for the <parameter>man.endnotes.list.heading</parameter>
+parameter.</para>
+
+<para>In the case of notesources that are links: Along with the
+URL for each link, the endnotes list includes the contents of the
+link. The list thus includes only non-empty<footnote>
+
+<para>A “non-empty†link is one that looks like
+this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"&gt;manpages&lt;/ulink&gt;</literallayout>
+an “empty link†is on that looks like this:<literallayout class="monospaced"> &lt;ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/&gt;</literallayout>
+</para></footnote> links.
+
+Empty links are never included, and never numbered. They are simply
+displayed inline, without any numbering.</para>
+
+<para>In addition, if there are multiple instances of links in a
+<tag>refentry</tag> that have the same URL, the URL is listed only
+once. The contents listed for that link in the endnotes list are
+the contents of the first link which has that URL.</para>
+
+<para>If you disable endnotes listing, you should probably also set
+<parameter>man.links.are.underlined</parameter> to zero (to disable
+link underlining).</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml
new file mode 100644
index 0000000..fe6545c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.endnotes.list.heading">
+<refmeta>
+<refentrytitle>man.endnotes.list.heading</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.endnotes.list.heading</refname>
+<refpurpose>Specifies an alternate name for endnotes list</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.endnotes.list.heading.frag">
+<xsl:param name="man.endnotes.list.heading"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.endnotes.are.numbered</parameter> parameter
+and/or the <parameter>man.endnotes.list.enabled</parameter>
+parameter is non-zero (the defaults for both are non-zero), a
+numbered list of endnotes is generated near the end of each man
+page. The default heading for the list of endnotes is the
+equivalent of the English word <literal>NOTES</literal> in
+the current locale. To cause an alternate heading to be displayed,
+set a non-empty value for the
+<parameter>man.endnotes.list.heading</parameter> parameter —
+for example, <literal>REFERENCES</literal>.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml
new file mode 100644
index 0000000..67b698b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.font.funcprototype">
+<refmeta>
+<refentrytitle>man.font.funcprototype</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.funcprototype</refname>
+<refpurpose>Specifies font for funcprototype output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.font.funcprototype.frag">
+ <xsl:param name="man.font.funcprototype">BI</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.funcprototype</parameter> parameter
+specifies the font for <tag>funcprototype</tag> output. It
+should be a valid roff font name, such as <literal>BI</literal> or
+<literal>B</literal>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml
new file mode 100644
index 0000000..bd7a36f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.font.funcsynopsisinfo">
+<refmeta>
+<refentrytitle>man.font.funcsynopsisinfo</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.funcsynopsisinfo</refname>
+<refpurpose>Specifies font for funcsynopsisinfo output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.font.funcsynopsisinfo.frag">
+ <xsl:param name="man.font.funcsynopsisinfo">B</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.funcsynopsisinfo</parameter> parameter
+specifies the font for <tag>funcsynopsisinfo</tag> output. It
+should be a valid roff font name, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml
new file mode 100644
index 0000000..0f8a1e0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml
@@ -0,0 +1,64 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.font.links">
+<refmeta>
+<refentrytitle>man.font.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.links</refname>
+<refpurpose>Specifies font for links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.font.links.frag">
+<xsl:param name="man.font.links">B</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.links</parameter> parameter
+specifies the font for output of links (<tag>ulink</tag> instances
+and any instances of any element with an <tag
+ class="attribute">xlink:href</tag> attribute).</para>
+
+<para>The value of <parameter>man.font.links</parameter> must be
+ either <literal>B</literal> or <literal>I</literal>, or empty. If
+the value is empty, no font formatting is applied to links.</para>
+
+<para>If you set <parameter>man.endnotes.are.numbered</parameter> and/or
+<parameter>man.endnotes.list.enabled</parameter> to zero (disabled), then
+you should probably also set an empty value for
+<parameter>man.font.links</parameter>. But if
+<parameter>man.endnotes.are.numbered</parameter> is non-zero (enabled),
+you should probably keep
+<parameter>man.font.links</parameter> set to
+<literal>B</literal> or <literal>I</literal><footnote><para>The
+ main purpose of applying a font format to links in most output
+formats it to indicate that the formatted text is
+“clickableâ€; given that links rendered in man pages are
+not “real†hyperlinks that users can click on, it might
+seem like there is never a good reason to have font formatting for
+link contents in man output.</para>
+<para>In fact, if you suppress the
+display of inline link references (by setting
+<parameter>man.endnotes.are.numbered</parameter> to zero), there is no
+good reason to apply font formatting to links. However, if
+<parameter>man.endnotes.are.numbered</parameter> is non-zero, having
+font formatting for links (arguably) serves a purpose: It provides
+“context†information about exactly what part of the text
+is being “annotated†by the link. Depending on how you
+mark up your content, that context information may or may not
+have value.</para></footnote>.</para>
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>man.endnotes.list.enabled</parameter>,
+ <parameter>man.endnotes.are.numbered</parameter></para>
+</refsection>
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml
new file mode 100644
index 0000000..5056f2b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.font.table.headings">
+<refmeta>
+<refentrytitle>man.font.table.headings</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.table.headings</refname>
+<refpurpose>Specifies font for table headings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.font.table.headings.frag">
+ <xsl:param name="man.font.table.headings">B</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.table.headings</parameter> parameter
+specifies the font for <tag>table</tag> headings. It should be
+a valid roff font, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml
new file mode 100644
index 0000000..a7f2ae9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.font.table.title">
+<refmeta>
+<refentrytitle>man.font.table.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.font.table.title</refname>
+<refpurpose>Specifies font for table headings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.font.table.title.frag">
+ <xsl:param name="man.font.table.title">B</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.font.table.title</parameter> parameter
+specifies the font for <tag>table</tag> titles. It should be
+a valid roff font, such as <literal>B</literal> or
+<literal>I</literal>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml
new file mode 100644
index 0000000..0597087
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.funcsynopsis.style">
+<refmeta>
+<refentrytitle>man.funcsynopsis.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">kr</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.funcsynopsis.style</refname>
+<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="man.funcsynopsis.style.frag"><xsl:param name="man.funcsynopsis.style">ansi</xsl:param></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If <parameter>man.funcsynopsis.style</parameter> is
+<literal>ansi</literal>, ANSI-style function synopses are
+generated for a <tag>funcsynopsis</tag>, otherwise K&amp;R-style
+function synopses are generated.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml
new file mode 100644
index 0000000..3e23ade
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml
@@ -0,0 +1,53 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.hyphenate.computer.inlines">
+<refmeta>
+<refentrytitle>man.hyphenate.computer.inlines</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.computer.inlines</refname>
+<refpurpose>Hyphenate computer inlines?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.hyphenate.computer.inlines.frag">
+<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for
+<quote>computer inlines</quote> such as environment variables,
+constants, etc. This parameter current affects output of the following
+elements:
+<simplelist type="inline">
+ <?dbchoice choice="and" ?>
+ <member><tag>classname</tag></member>
+ <member><tag>constant</tag></member>
+ <member><tag>envar</tag></member>
+ <member><tag>errorcode</tag></member>
+ <member><tag>option</tag></member>
+ <member><tag>replaceable</tag></member>
+ <member><tag>userinput</tag></member>
+ <member><tag>type</tag></member>
+ <member><tag>varname</tag></member>
+</simplelist>
+</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting the
+ <parameter>man.hyphenate.computer.inlines</parameter> is not
+ necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.computer.inlines</parameter> is
+non-zero, computer inlines will not be treated specially and will be
+hyphenated like other words when needed.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml
new file mode 100644
index 0000000..891d6da
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml
@@ -0,0 +1,47 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.hyphenate.filenames">
+<refmeta>
+<refentrytitle>man.hyphenate.filenames</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.filenames</refname>
+<refpurpose>Hyphenate filenames?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.hyphenate.filenames.frag">
+<xsl:param name="man.hyphenate.filenames">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for
+<tag>filename</tag> output.</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting
+ <parameter>man.hyphenate.filenames</parameter> is not
+ necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.filenames</parameter> is non-zero,
+filenames will not be treated specially and are subject to hyphenation
+just like other words.</para>
+
+<note>
+ <para>If you are thinking about setting a non-zero value for
+ <parameter>man.hyphenate.filenames</parameter> in order to make long
+ filenames/pathnames break across lines, you'd probably be better off
+ experimenting with setting the
+ <parameter>man.break.after.slash</parameter> parameter first. That
+ will cause long pathnames to be broken after slashes.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml
new file mode 100644
index 0000000..a64dfa7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.hyphenate.urls">
+<refmeta>
+<refentrytitle>man.hyphenate.urls</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate.urls</refname>
+<refpurpose>Hyphenate URLs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.hyphenate.urls.frag">
+<xsl:param name="man.hyphenate.urls">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), hyphenation is suppressed for output of
+the <tag>ulink</tag> <tag class="attribute">url</tag> attribute.</para>
+
+<note>
+ <para>If hyphenation is already turned off globally (that is, if
+ <parameter>man.hyphenate</parameter> is zero, setting
+ <parameter>man.hyphenate.urls</parameter> is not necessary.</para>
+</note>
+
+<para>If <parameter>man.hyphenate.urls</parameter> is non-zero, URLs
+will not be treated specially and are subject to hyphenation just like
+other words.</para>
+
+<note>
+ <para>If you are thinking about setting a non-zero value for
+ <parameter>man.hyphenate.urls</parameter> in order to make long
+ URLs break across lines, you'd probably be better off
+ experimenting with setting the
+ <parameter>man.break.after.slash</parameter> parameter first. That
+ will cause long URLs to be broken after slashes.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml
new file mode 100644
index 0000000..9198bbb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml
@@ -0,0 +1,59 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.hyphenate">
+<refmeta>
+<refentrytitle>man.hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.hyphenate</refname>
+<refpurpose>Enable hyphenation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.hyphenate.frag">
+<xsl:param name="man.hyphenate">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, hyphenation is enabled.</para>
+
+<note>
+<para>The default value for this parameter is zero because groff is
+not particularly smart about how it does hyphenation; it can end up
+hyphenating a lot of things that you don't want hyphenated. To
+mitigate that, the default behavior of the stylesheets is to suppress
+hyphenation of computer inlines, filenames, and URLs. (You can
+override the default behavior by setting non-zero values for the
+<parameter>man.hyphenate.urls</parameter>,
+<parameter>man.hyphenate.filenames</parameter>, and
+<parameter>man.hyphenate.computer.inlines</parameter> parameters.) But
+the best way is still to just globally disable hyphenation, as the
+stylesheets do by default.</para>
+
+<para>The only good reason to enabled hyphenation is if you have also
+enabled justification (which is disabled by default). The reason is
+that justified text can look very bad unless you also hyphenate it; to
+quote the <quote>Hypenation</quote> node from the groff info page:
+
+<blockquote>
+ <para><emphasis>Since the odds are not great for finding a set of
+ words, for every output line, which fit nicely on a line without
+ inserting excessive amounts of space between words, 'gtroff'
+ hyphenates words so that it can justify lines without inserting too
+ much space between words.</emphasis></para>
+</blockquote>
+
+So, if you set a non-zero value for the
+<parameter>man.justify</parameter> parameter (to enable
+justification), then you should probably also set a non-zero value for
+<parameter>man.hyphenate</parameter> (to enable hyphenation).</para>
+</note>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml
new file mode 100644
index 0000000..bf9bb91
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.indent.blurbs">
+<refmeta>
+<refentrytitle>man.indent.blurbs</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.blurbs</refname>
+<refpurpose>Adjust indentation of blurbs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.indent.blurbs.frag">
+<xsl:param name="man.indent.blurbs" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.blurbs</parameter> is
+non-zero, the width of the left margin for
+<tag>authorblurb</tag>, <tag>personblurb</tag>, and
+<tag>contrib</tag> output is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>3n</literal> by default). If instead the value of
+<parameter>man.indent.blurbs</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml
new file mode 100644
index 0000000..a2654d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.indent.lists">
+<refmeta>
+<refentrytitle>man.indent.lists</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.lists</refname>
+<refpurpose>Adjust indentation of lists?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.indent.lists.frag">
+<xsl:param name="man.indent.lists" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.lists</parameter> is
+non-zero, the width of the left margin for list items in
+<tag>itemizedlist</tag>,
+<tag>orderedlist</tag>,
+<tag>variablelist</tag> output (and output of some other
+lists) is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>4n</literal> by default). If instead the value of
+<parameter>man.indent.lists</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml
new file mode 100644
index 0000000..2865f8c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml
@@ -0,0 +1,70 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.indent.refsect">
+<refmeta>
+<refentrytitle>man.indent.refsect</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.refsect</refname>
+<refpurpose>Adjust indentation of refsect* and refsection?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.indent.refsect.frag">
+<xsl:param name="man.indent.refsect" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.refsect</parameter> is
+non-zero, the width of the left margin for
+<tag>refsect1</tag>, <tag>refsect2</tag> and
+<tag>refsect3</tag> contents and titles (and first-level,
+second-level, and third-level nested
+<tag>refsection</tag>instances) is adjusted by the value of
+the <parameter>man.indent.width</parameter> parameter. With
+<parameter>man.indent.width</parameter> set to its default value of
+<literal>3n</literal>, the main results are that:
+
+<itemizedlist>
+ <listitem>
+ <para>contents of <tag>refsect1</tag> are output with a
+ left margin of three characters instead the roff default of seven
+ or eight characters</para>
+ </listitem>
+ <listitem>
+ <para>contents of <tag>refsect2</tag> are displayed in
+ console output with a left margin of six characters instead the of
+ the roff default of seven characters</para>
+ </listitem>
+ <listitem>
+ <para> the contents of <tag>refsect3</tag> and nested
+ <tag>refsection</tag> instances are adjusted
+ accordingly.</para>
+ </listitem>
+</itemizedlist>
+
+If instead the value of <parameter>man.indent.refsect</parameter> is
+zero, no margin adjustment is done for <literal>refsect*</literal>
+output.</para>
+
+<tip>
+ <para>If your content is primarly comprised of
+ <tag>refsect1</tag> and <tag>refsect2</tag> content
+ (or the <tag>refsection</tag> equivalent) – with few or
+ no <tag>refsect3</tag> or lower nested sections , you may be
+ able to “conserve†space in your output by setting
+ <parameter>man.indent.refsect</parameter> to a non-zero value. Doing
+ so will “squeeze†the left margin in such as way as to provide an
+ additional four characters of “room†per line in
+ <tag>refsect1</tag> output. That extra room may be useful
+ if, for example, you have many verbatim sections with long lines in
+ them.</para>
+</tip>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml
new file mode 100644
index 0000000..0436c9e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.indent.verbatims">
+<refmeta>
+<refentrytitle>man.indent.verbatims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.verbatims</refname>
+<refpurpose>Adjust indentation of verbatims?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.indent.verbatims.frag">
+<xsl:param name="man.indent.verbatims" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.indent.verbatims</parameter> is
+non-zero, the width of the left margin for output of verbatim
+environments (<tag>programlisting</tag>,
+<tag>screen</tag>, and so on) is set to the value of the
+<parameter>man.indent.width</parameter> parameter
+(<literal>3n</literal> by default). If instead the value of
+<parameter>man.indent.verbatims</parameter> is zero, the built-in roff
+default width (<literal>7.2n</literal>) is used.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml
new file mode 100644
index 0000000..2d4496d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.indent.width">
+<refmeta>
+<refentrytitle>man.indent.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.indent.width</refname>
+<refpurpose>Specifies width used for adjusted indents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.indent.width.frag">
+<xsl:param name="man.indent.width">4</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The <parameter>man.indent.width</parameter> parameter specifies
+the width used for adjusted indents. The value of
+<parameter>man.indent.width</parameter> is used for indenting of
+lists, verbatims, headings, and elsewhere, depending on whether the
+values of certain <literal>man.indent.*</literal> boolean parameters
+are non-zero.</para>
+
+<para>The value of <parameter>man.indent.width</parameter> should
+include a valid roff measurement unit (for example,
+<literal>n</literal> or <literal>u</literal>). The default value of
+<literal>4n</literal> specifies a 4-en width; when viewed on a
+console, that amounts to the width of four characters. For details
+about roff measurment units, see the <literal>Measurements</literal>
+node in the groff info page.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml
new file mode 100644
index 0000000..5495d05
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml
@@ -0,0 +1,52 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.justify">
+<refmeta>
+<refentrytitle>man.justify</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.justify</refname>
+<refpurpose>Justify text to both right and left margins?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.justify.frag">
+<xsl:param name="man.justify">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, text is justified to both the right and left
+margins (or, in roff terminology, "adjusted and filled" to both the
+right and left margins). If zero (the default), text is adjusted to
+the left margin only -- producing what is traditionally called
+"ragged-right" text.</para>
+
+<note>
+<para>The default value for this parameter is zero because justified
+text looks good only when it is also hyphenated. Without hyphenation,
+excessive amounts of space often end up getting between words, in
+order to "pad" lines out to align on the right margin.</para>
+
+<para>The problem is that groff is not particularly smart about how it
+does hyphenation; it can end up hyphenating a lot of things that you
+don't want hyphenated. So, disabling both justification and
+hyphenation ensures that hyphens won't get inserted where you don't
+want to them, and you don't end up with lines containing excessive
+amounts of space between words.</para>
+
+<para>However, if do you decide to set a non-zero value for the
+<parameter>man.justify</parameter> parameter (to enable
+justification), then you should probably also set a non-zero value for
+<parameter>man.hyphenate</parameter> (to enable hyphenation).</para>
+
+<para>Yes, these default settings run counter to how most existing man
+pages are formatted. But there are some notable exceptions, such as
+the <literal>perl</literal> man pages.</para>
+</note>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml
new file mode 100644
index 0000000..25113d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.base.dir">
+<refmeta>
+<refentrytitle>man.output.base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.base.dir</refname>
+<refpurpose>Specifies separate output directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.output.base.dir.frag"><xsl:param name="man.output.base.dir">man/</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.output.base.dir</parameter> parameter
+specifies the base directory into which man-page files are output. The
+<parameter>man.output.subdirs.enabled</parameter> parameter controls
+whether the files are output in subdirectories within the base
+directory.</para>
+
+<note>
+ <para>The values of the <parameter>man.output.base.dir</parameter>
+ and <parameter>man.output.subdirs.enabled</parameter> parameters are
+ used only if the value of
+ <parameter>man.output.in.separate.dir</parameter> parameter is
+ non-zero. If the value of the
+ <parameter>man.output.in.separate.dir</parameter> is zero, man-page
+ files are not output in a separate directory.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml
new file mode 100644
index 0000000..82d15dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml
@@ -0,0 +1,61 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.better.ps.enabled">
+<refmeta>
+<refentrytitle>man.output.better.ps.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.better.ps.enabled</refname>
+<refpurpose>Enable enhanced print/PostScript output?</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="man.output.better.ps.enabled.frag">
+<xsl:param name="man.output.better.ps.enabled">0</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.output.better.ps.enabled</parameter> parameter is
+non-zero, certain markup is embedded in each generated man page
+such that PostScript output from the <command>man -Tps</command>
+command for that page will include a number of enhancements
+designed to improve the quality of that output.</para>
+
+<para>If <parameter>man.output.better.ps.enabled</parameter> is
+zero (the default), no such markup is embedded in generated man
+pages, and no enhancements are included in the PostScript
+output generated from those man pages by the <command>man
+ -Tps</command> command.</para>
+
+<warning>
+ <para>The enhancements provided by this parameter rely on
+ features that are specific to groff (GNU troff) and that are
+ not part of “classic†AT&amp;T troff or any of its
+ derivatives. Therefore, any man pages you generate with this
+ parameter enabled will be readable only on systems on which
+ the groff (GNU troff) program is installed, such as GNU/Linux
+ systems. The pages <emphasis role="bold">will not not be
+ readable on systems on with the classic troff (AT&amp;T
+ troff) command is installed</emphasis>.</para>
+</warning>
+
+<para>The value of this parameter only affects PostScript output
+ generated from the <command>man</command> command. It has no
+ effect on output generated using the FO backend.</para>
+
+<tip>
+ <para>You can generate PostScript output for any man page by
+ running the following command:</para>
+ <programlisting> man <replaceable>FOO</replaceable> -Tps > <replaceable>FOO</replaceable>.ps</programlisting>
+ <para>You can then generate PDF output by running the following
+ command:</para>
+ <programlisting> ps2pdf <replaceable>FOO</replaceable>.ps</programlisting>
+</tip>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml
new file mode 100644
index 0000000..7154bc8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml
@@ -0,0 +1,53 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.encoding">
+<refmeta>
+<refentrytitle>man.output.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.encoding</refname>
+<refpurpose>Encoding used for man-page output</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.output.encoding.frag">
+<xsl:param name="man.output.encoding">UTF-8</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the encoding to use for files generated
+by the manpages stylesheet. Not all processors support specification
+of this parameter.</para>
+
+<important>
+ <para>If the value of the <parameter>man.charmap.enabled</parameter>
+ parameter is non-zero (the default), keeping the
+ <parameter>man.output.encoding</parameter> parameter at its default
+ value (<literal>UTF-8</literal>) or setting it to
+ <literal>UTF-16</literal> <emphasis role="bold">does not cause your
+ man pages to be output in raw UTF-8 or UTF-16</emphasis> -- because
+ any Unicode characters for which matches are found in the enabled
+ character map will be replaced with roff escape sequences before the
+ final man-page files are generated.</para>
+
+ <para>So if you want to generate "real" UTF-8 man pages, without any
+ character substitution being performed on your content, you need to
+ set <parameter>man.charmap.enabled</parameter> to zero (which will
+ completely disable character-map processing). </para>
+
+ <para>You may also need to set
+ <parameter>man.charmap.enabled</parameter> to zero if you want to
+ output man pages in an encoding other than <literal>UTF-8</literal>
+ or <literal>UTF-16</literal>. Character-map processing is based on
+ Unicode character values and may not work with other output
+ encodings.</para>
+</important>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml
new file mode 100644
index 0000000..1492720
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.in.separate.dir">
+<refmeta>
+<refentrytitle>man.output.in.separate.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.in.separate.dir</refname>
+<refpurpose>Output man-page files in separate output directory?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.output.in.separate.dir.frag">
+<xsl:param name="man.output.in.separate.dir" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <literal>man.output.in.separate.dir</literal>
+parameter is non-zero, man-page files are output in a separate
+directory, specified by the <parameter>man.output.base.dir</parameter>
+parameter; otherwise, if the value of
+<literal>man.output.in.separate.dir</literal> is zero, man-page files
+are not output in a separate directory.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml
new file mode 100644
index 0000000..1fed3c0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml
@@ -0,0 +1,50 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.lang.in.name.enabled">
+<refmeta>
+<refentrytitle>man.output.lang.in.name.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.lang.in.name.enabled</refname>
+<refpurpose>Include $LANG value in man-page filename/pathname?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.output.lang.in.name.enabled.frag">
+<xsl:param name="man.output.lang.in.name.enabled" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+ <para>The <parameter>man.output.lang.in.name.enabled</parameter>
+ parameter specifies whether a <literal>$lang</literal> value is
+ included in man-page filenames and pathnames.</para>
+
+ <para>If the value of
+ <parameter>man.output.lang.in.name.enabled</parameter> is non-zero,
+ man-page files are output with the <literal>$lang</literal> value
+ included in their filenames or pathnames as follows;
+
+ <itemizedlist>
+ <listitem>
+ <para>if <parameter>man.output.subdirs.enabled</parameter> is
+ non-zero, each file is output to, e.g., a
+ <filename>man/<replaceable>$lang</replaceable>/man8/foo.8</filename>
+ pathname</para>
+ </listitem>
+ <listitem>
+ <para>if <parameter>man.output.subdirs.enabled</parameter> is
+ zero, each file is output with a
+ <literal>foo.<replaceable>$lang</replaceable>.8</literal>
+ filename</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml
new file mode 100644
index 0000000..5da041c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.manifest.enabled">
+ <refmeta>
+ <refentrytitle>man.output.manifest.enabled</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.output.manifest.enabled</refname>
+ <refpurpose>Generate a manifest file?</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <src:fragment xml:id="man.output.manifest.enabled.frag"><xsl:param name="man.output.manifest.enabled" select="0"/></src:fragment>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>If non-zero, a list of filenames for man pages generated by
+ the stylesheet transformation is written to the file named by the
+ <parameter>man.output.manifest.filename</parameter> parameter.</para>
+
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml
new file mode 100644
index 0000000..f514ede
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.manifest.filename">
+ <refmeta>
+ <refentrytitle>man.output.manifest.filename</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>man.output.manifest.filename</refname>
+ <refpurpose>Name of manifest file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <src:fragment xml:id="man.output.manifest.filename.frag"><xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param></src:fragment>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>The <parameter>man.output.manifest.filename</parameter> parameter
+ specifies the name of the file to which the manpages manifest file
+ is written (if the value of the
+ <parameter>man.output.manifest.enabled</parameter> parameter is
+ non-zero).</para>
+
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml
new file mode 100644
index 0000000..acde7f4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.quietly">
+<refmeta>
+<refentrytitle>man.output.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.quietly</refname>
+<refpurpose>Suppress filename messages emitted when generating output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.output.quietly.frag">
+<xsl:param name="man.output.quietly" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), for each man-page file created, a message
+with the name of the file is emitted. If non-zero, the files are
+output "quietly" -- that is, the filename messages are
+suppressed.</para>
+
+<tip>
+ <para>If you are processing a large amount of <tag>refentry</tag>
+ content, you may be able to speed up processing significantly by
+ setting a non-zero value for
+ <parameter>man.output.quietly</parameter>.</para>
+</tip>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml
new file mode 100644
index 0000000..876b94e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.output.subdirs.enabled">
+<refmeta>
+<refentrytitle>man.output.subdirs.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.output.subdirs.enabled</refname>
+<refpurpose>Output man-page files in subdirectories within base output directory?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.output.subdirs.enabled.frag">
+<xsl:param name="man.output.subdirs.enabled" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.output.subdirs.enabled</parameter> parameter
+controls whether man-pages files are output in subdirectories within
+the base directory specified by the directory specified by the
+<parameter>man.output.base.dir</parameter> parameter.</para>
+
+<note>
+ <para>The values of the <parameter>man.output.base.dir</parameter>
+ and <parameter>man.output.subdirs.enabled</parameter> parameters are
+ used only if the value of
+ <parameter>man.output.in.separate.dir</parameter> parameter is
+ non-zero. If the value of the
+ <parameter>man.output.in.separate.dir</parameter> is zero, man-page
+ files are not output in a separate directory.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml
new file mode 100644
index 0000000..e54336d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.segtitle.suppress">
+<refmeta>
+<refentrytitle>man.segtitle.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.segtitle.suppress</refname>
+<refpurpose>Suppress display of segtitle contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.segtitle.suppress.frag">
+<xsl:param name="man.segtitle.suppress" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.segtitle.suppress</parameter> is
+non-zero, then display of <tag>segtitle</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml
new file mode 100644
index 0000000..b12448d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.string.subst.map.local.post">
+<refmeta>
+<refentrytitle>man.string.subst.map.local.post</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map.local.post</refname>
+<refpurpose>Specifies “local†string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.string.subst.map.local.post.frag">
+<xsl:param name="man.string.subst.map.local.post"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Use the <parameter>man.string.subst.map.local.post</parameter>
+parameter to specify any “local†string substitutions to perform over
+the entire roff source for each man page <emphasis>after</emphasis>
+performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para>
+
+<para>For details about the format of this parameter, see the
+documentation for the <parameter>man.string.subst.map</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml
new file mode 100644
index 0000000..6483752
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.string.subst.map.local.pre">
+<refmeta>
+<refentrytitle>man.string.subst.map.local.pre</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map.local.pre</refname>
+<refpurpose>Specifies “local†string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.string.subst.map.local.pre.frag">
+ <xsl:param name="man.string.subst.map.local.pre"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Use the <parameter>man.string.subst.map.local.pre</parameter>
+parameter to specify any “local†string substitutions to perform over
+the entire roff source for each man page <emphasis>before</emphasis>
+performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para>
+
+<para>For details about the format of this parameter, see the
+documentation for the <parameter>man.string.subst.map</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml
new file mode 100644
index 0000000..0feed4a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml
@@ -0,0 +1,162 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"
+ version="5.0" xml:id="man.string.subst.map">
+<refmeta>
+<refentrytitle>man.string.subst.map</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.string.subst.map</refname>
+<refpurpose>Specifies a set of string substitutions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.string.subst.map.frag">
+<xsl:param name="man.string.subst.map">
+
+ <!-- * remove no-break marker at beginning of line (stylesheet artifact) -->
+ <ss:substitution oldstring="&#x2592;&#x2580;" newstring="&#x2592;"/>
+ <!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space -->
+ <ss:substitution oldstring="&#x2580;" newstring="\ "/>
+
+ <!-- ==================================================================== -->
+
+ <!-- * squeeze multiple newlines before a roff request -->
+ <ss:substitution oldstring="&#10;&#10;." newstring="&#10;."/>
+ <!-- * remove any .sp instances that directly precede a .PP -->
+ <ss:substitution oldstring=".sp&#10;.PP" newstring=".PP"/>
+ <!-- * remove any .sp instances that directly follow a .PP -->
+ <ss:substitution oldstring=".sp&#10;.sp" newstring=".sp"/>
+ <!-- * squeeze multiple .sp instances into a single .sp-->
+ <ss:substitution oldstring=".PP&#10;.sp" newstring=".PP"/>
+ <!-- * squeeze multiple newlines after start of no-fill (verbatim) env. -->
+ <ss:substitution oldstring=".nf&#10;&#10;" newstring=".nf&#10;"/>
+ <!-- * squeeze multiple newlines after REstoring margin -->
+ <ss:substitution oldstring=".RE&#10;&#10;" newstring=".RE&#10;"/>
+ <!-- * U+2591 is a marker we add before and after every Parameter in -->
+ <!-- * Funcprototype output -->
+ <ss:substitution oldstring="&#x2591;" newstring=" "/>
+ <!-- * U+2592 is a marker we add for the newline before output of <sbr>; -->
+ <ss:substitution oldstring="&#x2592;" newstring="&#10;"/>
+ <!-- * -->
+ <!-- * Now deal with some other characters that are added by the -->
+ <!-- * stylesheets during processing. -->
+ <!-- * -->
+ <!-- * bullet -->
+ <ss:substitution oldstring="•" newstring="\(bu"/>
+ <!-- * left double quote -->
+ <ss:substitution oldstring="“" newstring="\(lq"/>
+ <!-- * right double quote -->
+ <ss:substitution oldstring="â€" newstring="\(rq"/>
+ <!-- * left single quote -->
+ <ss:substitution oldstring="‘" newstring="\(oq"/>
+ <!-- * right single quote -->
+ <ss:substitution oldstring="’" newstring="\(cq"/>
+ <!-- * copyright sign -->
+ <ss:substitution oldstring="©" newstring="\(co"/>
+ <!-- * registered sign -->
+ <ss:substitution oldstring="®" newstring="\(rg"/>
+ <!-- * ...servicemark... -->
+ <!-- * There is no groff equivalent for it. -->
+ <ss:substitution oldstring="&#x2120;" newstring="(SM)"/>
+ <!-- * ...trademark... -->
+ <!-- * We don't do "\(tm" because for console output, -->
+ <!-- * groff just renders that as "tm"; that is: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Producttm -->
+ <!-- * -->
+ <!-- * So we just make it to "(TM)" instead; thus: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Product(TM) -->
+ <ss:substitution oldstring="â„¢" newstring="(TM)"/>
+
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>man.string.subst.map</parameter> parameter
+contains <link linkend="map">a map</link> that specifies a set of
+string substitutions to perform over the entire roff source for each
+man page, either just before generating final man-page output (that
+is, before writing man-page files to disk) or, if the value of the
+<parameter>man.charmap.enabled</parameter> parameter is non-zero,
+before applying the roff character map.</para>
+
+<para>You can use <parameter>man.string.subst.map</parameter> as a
+“lightweight†character map to perform “essential†substitutions --
+that is, substitutions that are <emphasis>always</emphasis> performed,
+even if the value of the <parameter>man.charmap.enabled</parameter>
+parameter is zero. For example, you can use it to replace quotation
+marks or other special characters that are generated by the DocBook
+XSL stylesheets for a particular locale setting (as opposed to those
+characters that are actually in source XML documents), or to replace
+any special characters that may be automatically generated by a
+particular customization of the DocBook XSL stylesheets.</para>
+
+<warning>
+ <para>Do you not change value of the
+ <parameter>man.string.subst.map</parameter> parameter unless you are
+ sure what you are doing. First consider adding your
+ string-substitution mappings to either or both of the following
+ parameters:
+ <variablelist>
+ <varlistentry>
+ <term><parameter>man.string.subst.map.local.pre</parameter></term>
+ <listitem><para>applied before
+ <parameter>man.string.subst.map</parameter></para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>man.string.subst.map.local.post</parameter></term>
+ <listitem><para>applied after
+ <parameter>man.string.subst.map</parameter></para></listitem>
+ </varlistentry>
+ </variablelist>
+ By default, both of those parameters contain no
+ string substitutions. They are intended as a means for you to
+ specify your own local string-substitution mappings.</para>
+
+ <para>If you remove any of default mappings from the value of the
+ <parameter>man.string.subst.map</parameter> parameter, you are
+ likely to end up with broken output. And be very careful about adding
+ anything to it; it’s used for doing string substitution over the
+ entire roff source of each man page – it causes target strings to be
+ replaced in roff requests and escapes, not just in the visible
+ contents of the page.</para>
+
+</warning>
+
+<refsection xml:id="map">
+ <info>
+ <title>Contents of the substitution map</title>
+ </info>
+ <para>The string-substitution map contains one or more
+ <tag>ss:substitution</tag> elements, each of which has two
+ attributes:
+ <variablelist>
+ <varlistentry>
+ <term>oldstring</term>
+ <listitem>
+ <simpara>string to replace</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>newstring</term>
+ <listitem>
+ <simpara>string with which to replace <tag
+ class="attribute">oldstring</tag></simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ It may also include XML comments (that is, delimited with
+ "<literal>&lt;!--</literal>" and "<literal>--&gt;</literal>").
+ </para>
+</refsection>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml
new file mode 100644
index 0000000..1156c5f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.subheading.divider.enabled">
+<refmeta>
+<refentrytitle>man.subheading.divider.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.subheading.divider.enabled</refname>
+<refpurpose>Add divider comment to roff source before/after subheadings?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.subheading.divider.enabled.frag">
+<xsl:param name="man.subheading.divider.enabled">0</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.subheading.divider.enabled</parameter> parameter is
+non-zero, the contents of the
+<parameter>man.subheading.divider</parameter> parameter are used to
+add a "divider" before and after subheadings in the roff
+output. <emphasis role="bold">The divider is not visisble in the
+rendered man page</emphasis>; it is added as a comment, in the source,
+simply for the purpose of increasing reability of the source.</para>
+
+<para>If <parameter>man.subheading.divider.enabled</parameter> is zero
+(the default), the subheading divider is suppressed.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml
new file mode 100644
index 0000000..dbd2669
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.subheading.divider">
+<refmeta>
+<refentrytitle>man.subheading.divider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.subheading.divider</refname>
+<refpurpose>Specifies string to use as divider comment before/after subheadings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.subheading.divider.frag">
+<xsl:param name="man.subheading.divider">========================================================================</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of the
+<parameter>man.subheading.divider.enabled</parameter> parameter is
+non-zero, the contents of the
+<parameter>man.subheading.divider</parameter> parameter are used to
+add a "divider" before and after subheadings in the roff
+output. <emphasis role="bold">The divider is not visisble in the
+rendered man page</emphasis>; it is added as a comment, in the source,
+simply for the purpose of increasing reability of the source.</para>
+
+<para>If <parameter>man.subheading.divider.enabled</parameter> is zero
+(the default), the subheading divider is suppressed.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml
new file mode 100644
index 0000000..2ad4608
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.table.footnotes.divider">
+<refmeta>
+<refentrytitle>man.table.footnotes.divider</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.table.footnotes.divider</refname>
+<refpurpose>Specifies divider string that appears before table footnotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.table.footnotes.divider.frag">
+<xsl:param name="man.table.footnotes.divider">----</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In each table that contains footenotes, the string specified by
+the <parameter>man.table.footnotes.divider</parameter> parameter is
+output before the list of footnotes for the table.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml
new file mode 100644
index 0000000..c0241d2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.th.extra1.suppress">
+<refmeta>
+<refentrytitle>man.th.extra1.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra1.suppress</refname>
+<refpurpose>Suppress extra1 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.th.extra1.suppress.frag">
+<xsl:param name="man.th.extra1.suppress">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra1.suppress</parameter> is
+non-zero, then the <literal>extra1</literal> part of the
+<literal>.TH</literal> title line header/footer is suppressed.</para>
+
+<para>The content of the <literal>extra1</literal> field is almost
+always displayed in the center footer of the page and is, universally,
+a date.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml
new file mode 100644
index 0000000..d3513ec
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.th.extra2.max.length">
+<refmeta>
+<refentrytitle>man.th.extra2.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra2.max.length</refname>
+<refpurpose>Maximum length of extra2 in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.th.extra2.max.length.frag">
+<xsl:param name="man.th.extra2.max.length">30</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the
+<literal>extra2</literal> part of the man-page part of the
+<literal>.TH</literal> title line header/footer. If the
+<literal>extra2</literal> content exceeds the maxiumum specified, it
+is truncated down to the maximum permitted length.</para>
+
+<para>The content of the <literal>extra2</literal> field is usually
+displayed in the left footer of the page and is typically "source"
+data indicating the software system or product that the item
+documented in the man page belongs to, often in the form
+<replaceable>Name</replaceable> <replaceable>Version</replaceable>;
+for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal>
+man page).</para>
+
+<para>The default value for this parameter is reasonable but somewhat
+arbitrary. If you are processing pages with long "source" information,
+you may want to experiment with changing the value in order to achieve
+the correct aesthetic results.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml
new file mode 100644
index 0000000..0fcd3ed
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml
@@ -0,0 +1,44 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.th.extra2.suppress">
+<refmeta>
+<refentrytitle>man.th.extra2.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra2.suppress</refname>
+<refpurpose>Suppress extra2 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.th.extra2.suppress.frag">
+<xsl:param name="man.th.extra2.suppress">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra2.suppress</parameter> is
+non-zero, then the <literal>extra2</literal> part of the
+<literal>.TH</literal> title line header/footer is suppressed.</para>
+
+<para>The content of the <literal>extra2</literal> field is usually
+displayed in the left footer of the page and is typically "source"
+data, often in the form
+<replaceable>Name</replaceable> <replaceable>Version</replaceable>;
+for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal>
+man page).</para>
+
+<note>
+ <para>You can use the
+ <parameter>refentry.source.name.suppress</parameter> and
+ <parameter>refentry.version.suppress</parameter> parameters to
+ independently suppress the <replaceable>Name</replaceable> and
+ <replaceable>Version</replaceable> parts of the
+ <literal>extra2</literal> field.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml
new file mode 100644
index 0000000..77e55e4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.th.extra3.max.length">
+<refmeta>
+<refentrytitle>man.th.extra3.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra3.max.length</refname>
+<refpurpose>Maximum length of extra3 in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.th.extra3.max.length.frag">
+<xsl:param name="man.th.extra3.max.length">30</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the
+<literal>extra3</literal> part of the man-page <literal>.TH</literal>
+title line header/footer. If the <literal>extra3</literal> content
+exceeds the maxiumum specified, it is truncated down to the maximum
+permitted length.</para>
+
+<para>The content of the <literal>extra3</literal> field is usually
+displayed in the middle header of the page and is typically a "manual
+name"; for example, "GTK+ User's Manual" (from the
+<literal>gtk-options(7)</literal> man page).</para>
+
+<para>The default value for this parameter is reasonable but somewhat
+arbitrary. If you are processing pages with long "manual names" -- or
+especially if you are processing pages that have both long "title"
+parts (command/function, etc. names) <emphasis>and</emphasis> long
+manual names -- you may want to experiment with changing the value in
+order to achieve the correct aesthetic results.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml
new file mode 100644
index 0000000..81d6c0d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.th.extra3.suppress">
+<refmeta>
+<refentrytitle>man.th.extra3.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.extra3.suppress</refname>
+<refpurpose>Suppress extra3 part of header/footer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.th.extra3.suppress.frag">
+<xsl:param name="man.th.extra3.suppress">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>man.th.extra3.suppress</parameter> is
+non-zero, then the <literal>extra3</literal> part of the
+<literal>.TH</literal> title line header/footer is
+suppressed.</para>
+
+<para>The content of the <literal>extra3</literal> field is usually
+displayed in the middle header of the page and is typically a "manual
+name"; for example, "GTK+ User's Manual" (from the
+<literal>gtk-options(7)</literal> man page).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml
new file mode 100644
index 0000000..7fdf0bf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml
@@ -0,0 +1,63 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="man.th.title.max.length">
+<refmeta>
+<refentrytitle>man.th.title.max.length</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>man.th.title.max.length</refname>
+<refpurpose>Maximum length of title in header/footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="man.th.title.max.length.frag">
+<xsl:param name="man.th.title.max.length">20</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximum permitted length of the title part of the
+man-page <literal>.TH</literal> title line header/footer. If the title
+exceeds the maxiumum specified, it is truncated down to the maximum
+permitted length.</para>
+
+<refsection><info><title>Details</title></info>
+
+
+<para>Every man page generated using the DocBook stylesheets has a
+title line, specified using the <literal>TH</literal> roff
+macro. Within that title line, there is always, at a minimum, a title,
+followed by a section value (representing a man "section" -- usually
+just a number).</para>
+
+<para>The title and section are displayed, together, in the visible
+header of each page. Where in the header they are displayed depends on
+OS the man page is viewed on, and on what version of nroff/groff/man
+is used for viewing the page. But, at a minimum and across all
+systems, the title and section are displayed on the right-hand column
+of the header. On many systems -- those with a modern groff, including
+Linux systems -- they are displayed twice: both in the left and right
+columns of the header.</para>
+
+<para>So if the length of the title exceeds a certain percentage of
+the column width in which the page is viewed, the left and right
+titles can end up overlapping, making them unreadable, or breaking to
+another line, which doesn't look particularly good.</para>
+
+<para>So the stylesheets provide the
+<parameter>man.th.title.max.length</parameter> parameter as a means
+for truncating titles that exceed the maximum length that can be
+viewing properly in a page header.</para>
+
+<para>The default value is reasonable but somewhat arbitrary. If you
+have pages with long titles, you may want to experiment with changing
+the value in order to achieve the correct aesthetic results.</para>
+</refsection>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml
new file mode 100644
index 0000000..d002767
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="manifest.in.base.dir">
+<refmeta>
+<refentrytitle>manifest.in.base.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>manifest.in.base.dir</refname>
+<refpurpose>Should the manifest file be written into <parameter>base.dir</parameter>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="manifest.in.base.dir.frag">
+<xsl:param name="manifest.in.base.dir" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the manifest file as well as project files for HTML Help and
+Eclipse Help are written into <parameter>base.dir</parameter> instead
+of the current directory.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml
new file mode 100644
index 0000000..96d092a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="manifest">
+ <refmeta>
+ <refentrytitle>manifest</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>manifest</refname>
+ <refpurpose>Name of manifest file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <src:fragment xml:id="manifest.frag">
+ <xsl:param name="manifest" >HTML.manifest</xsl:param>
+ </src:fragment>
+ </refsynopsisdiv>
+
+ <refsection><info><title>Description</title></info>
+
+ <para>The name of the file to which a manifest is written (if the
+ value of the <parameter>generate.manifest</parameter> parameter
+ is non-zero).</para>
+
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml
new file mode 100644
index 0000000..7a640c7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="manual.toc">
+<refmeta>
+<refentrytitle>manual.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>manual.toc</refname>
+<refpurpose>An explicit TOC to be used for the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="manual.toc.frag">
+<xsl:param name="manual.toc"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>manual.toc</parameter> identifies an explicit TOC that
+will be used for building the printed TOC.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml
new file mode 100644
index 0000000..0b34230
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml
@@ -0,0 +1,77 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="margin.note.float.type">
+<refmeta>
+<refentrytitle>margin.note.float.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">before</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inside</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outside</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.float.type</refname>
+<refpurpose>Select type of float for margin note customizations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="margin.note.float.type.frag">
+<xsl:param name="margin.note.float.type">none</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the type of float for margin notes.
+DocBook does not define a margin note element, so this
+feature must be implemented as a customization of the stylesheet.
+See <parameter>margin.note.properties</parameter> for
+an example.
+</para>
+<itemizedlist>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>none</literal></quote>, then
+no float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>before</literal></quote>, then
+the float appears at the top of the page. On some processors,
+that may be the next page rather than the current page.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>left</literal></quote> or
+<quote><literal>start</literal></quote>, then
+a left side float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>right</literal></quote> or
+<quote><literal>end</literal></quote>, then
+a right side float is used.
+</para>
+</listitem>
+<listitem>
+<para>If your XSL-FO processor supports floats positioned on the
+<quote><literal>inside</literal></quote> or
+<quote><literal>outside</literal></quote>
+of double-sided pages, then you have those two
+options for side floats as well.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml
new file mode 100644
index 0000000..02dc20e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml
@@ -0,0 +1,54 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="margin.note.properties">
+<refmeta>
+<refentrytitle>margin.note.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.properties</refname>
+<refpurpose>Attribute set for margin.note properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="margin.note.properties.frag">
+<xsl:attribute-set name="margin.note.properties">
+ <xsl:attribute name="font-size">90%</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for margin notes.
+By default, margin notes are not implemented for any
+element. A stylesheet customization is needed to make
+use of this attribute-set.</para>
+
+<para>You can use a template named <quote>floater</quote>
+to create the customization.
+That template can create side floats by specifying the
+content and characteristics as template parameters.
+</para>
+
+<para>For example:</para>
+<programlisting>&lt;xsl:template match="para[@role='marginnote']"&gt;
+ &lt;xsl:call-template name="floater"&gt;
+ &lt;xsl:with-param name="position"&gt;
+ &lt;xsl:value-of select="$margin.note.float.type"/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="width"&gt;
+ &lt;xsl:value-of select="$margin.note.width"/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="content"&gt;
+ &lt;xsl:apply-imports/&gt;
+ &lt;/xsl:with-param&gt;
+ &lt;/xsl:call-template&gt;
+&lt;/xsl:template&gt;</programlisting>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml
new file mode 100644
index 0000000..84399bb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="margin.note.title.properties">
+<refmeta>
+<refentrytitle>margin.note.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.title.properties</refname>
+<refpurpose>Attribute set for margin note titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="margin.note.title.properties.frag">
+<xsl:attribute-set name="margin.note.title.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for margin note titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml
new file mode 100644
index 0000000..3ee0aa4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="margin.note.width">
+<refmeta>
+<refentrytitle>margin.note.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>margin.note.width</refname>
+<refpurpose>Set the default width for margin notes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="margin.note.width.frag">
+<xsl:param name="margin.note.width" >1in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the default width for margin notes when used as a side
+float. The width determines the degree to which the margin note block
+intrudes into the text area.
+</para>
+<para>If <parameter>margin.note.float.type</parameter> is
+<quote><literal>before</literal></quote> or
+<quote><literal>none</literal></quote>, then
+this parameter is ignored.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml
new file mode 100644
index 0000000..70bd4fd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml
@@ -0,0 +1,50 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="marker.section.level">
+<refmeta>
+<refentrytitle>marker.section.level</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>marker.section.level</refname>
+<refpurpose>Control depth of sections shown in running headers or footers</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="marker.section.level.frag">
+<xsl:param name="marker.section.level" >2</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>marker.section.level</parameter> parameter
+controls the depth of section levels that may be displayed
+in running headers and footers. For example, if the value
+is 2 (the default), then titles from <tag>sect1</tag> and
+<tag>sect2</tag> or equivalent <tag>section</tag>
+elements are candidates for use in running headers and
+footers.
+</para>
+<para>Each candidate title is marked in the FO output with a
+<tag>&lt;fo:marker marker-class-name="section.head.marker"&gt;</tag>
+element.
+</para>
+<para>In order for such titles to appear in headers
+or footers, the <literal>header.content</literal>
+or <literal>footer.content</literal> template
+must be customized to retrieve the marker using
+an output element such as:
+</para>
+<programlisting>
+&lt;fo:retrieve-marker retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/&gt;
+</programlisting>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml
new file mode 100644
index 0000000..cf142e2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="menuchoice.menu.separator">
+<refmeta>
+<refentrytitle>menuchoice.menu.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.menu.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+with <tag>guimenuitem</tag> or
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="menuchoice.menu.separator.frag">
+<xsl:param name="menuchoice.menu.separator"> → </xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> with
+<tag>guimenuitem</tag> or <tag>guisubmenu</tag>. Other elements
+are linked with <parameter>menuchoice.separator</parameter>.
+</para>
+<para>The default value is &amp;#x2192;, which is the
+&amp;rarr; (right arrow) character entity.
+The current FOP (0.20.5) requires setting the font-family
+explicitly.
+</para>
+<para>The default value also includes spaces around the arrow,
+which will allow a line to break. Replace the spaces with
+&amp;#xA0; (nonbreaking space) if you don't want those
+spaces to break.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml
new file mode 100644
index 0000000..3034f25
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="menuchoice.separator">
+<refmeta>
+<refentrytitle>menuchoice.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuchoice.separator</refname>
+<refpurpose>Separator between items of a <tag>menuchoice</tag>
+other than <tag>guimenuitem</tag> and
+<tag>guisubmenu</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="menuchoice.separator.frag">
+<xsl:param name="menuchoice.separator">+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator used to connect items of a <tag>menuchoice</tag> other
+than <tag>guimenuitem</tag> and <tag>guisubmenu</tag>. The latter
+elements are linked with <parameter>menuchoice.menu.separator</parameter>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml
new file mode 100644
index 0000000..ea86e23
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="minus.image">
+<refmeta>
+<refentrytitle>minus.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>minus.image</refname>
+<refpurpose>Minus image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="minus.image.frag">
+<xsl:param name="minus.image">toc/open.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>minus</quote> image; the image used in a
+<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
+can be collapsed.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml
new file mode 100644
index 0000000..e91548b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="monospace.font.family">
+<refmeta>
+<refentrytitle>monospace.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.font.family</refname>
+<refpurpose>The default font family for monospace environments</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="monospace.font.family.frag">
+<xsl:param name="monospace.font.family">monospace</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The monospace font family is used for verbatim environments
+(program listings, screens, etc.).
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml
new file mode 100644
index 0000000..0a8425b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="monospace.properties">
+<refmeta>
+<refentrytitle>monospace.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.properties</refname>
+<refpurpose>Properties of monospaced content</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="monospace.properties.frag">
+<xsl:attribute-set name="monospace.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$monospace.font.family"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font name for monospaced output. This property set
+used to set the font-size as well, but that doesn't work very well
+when different fonts are used (as they are in titles and paragraphs,
+for example).</para>
+
+<para>If you want to set the font-size in a customization layer, it's
+probably going to be more appropriate to set font-size-adjust, if your
+formatter supports it.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml
new file mode 100644
index 0000000..88b88dc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="monospace.verbatim.font.width">
+<refmeta>
+<refentrytitle>monospace.verbatim.font.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.verbatim.font.width</refname>
+<refpurpose>Width of a single monospace font character</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="monospace.verbatim.font.width.frag">
+<xsl:param name="monospace.verbatim.font.width">0.60em</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies with em units the width of a single character
+of the monospace font. The default value is <literal>0.6em</literal>.</para>
+
+<para>This parameter is only used when a <tag>screen</tag>
+or <tag>programlisting</tag> element has a
+<tag class="attribute">width</tag> attribute, which is
+expressed as a plain integer to indicate the maximum character count
+of each line.
+To convert this character count to an actual maximum width
+measurement, the width of the font characters must be provided.
+Different monospace fonts have different character width,
+so this parameter should be adjusted to fit the
+monospace font being used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml
new file mode 100644
index 0000000..3d7ca3d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="monospace.verbatim.properties">
+<refmeta>
+<refentrytitle>monospace.verbatim.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>monospace.verbatim.properties</refname>
+<refpurpose>What font and size do you want for monospaced content?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="monospace.verbatim.properties.frag">
+<xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties">
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the font name and size you want for monospaced output</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml
new file mode 100644
index 0000000..f0667d7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="multiframe.bottom.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.bottom.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.bottom.bgcolor</refname>
+<refpurpose>Background color for bottom navigation frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="multiframe.bottom.bgcolor.frag">
+<xsl:param name="multiframe.bottom.bgcolor">white</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color of the bottom navigation frame when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml
new file mode 100644
index 0000000..06dbc1c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="multiframe.navigation.height">
+<refmeta>
+<refentrytitle>multiframe.navigation.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.navigation.height</refname>
+<refpurpose>Height of navigation frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="multiframe.navigation.height.frag">
+<xsl:param name="multiframe.navigation.height">40</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the height of the navigation frames in pixels when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml
new file mode 100644
index 0000000..4814fc8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="multiframe.top.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.top.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.top.bgcolor</refname>
+<refpurpose>Background color for top navigation frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="multiframe.top.bgcolor.frag">
+<xsl:param name="multiframe.top.bgcolor" >white</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color of the top navigation frame when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml
new file mode 100644
index 0000000..b4fbf37
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="multiframe">
+<refmeta>
+<refentrytitle>multiframe</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe</refname>
+<refpurpose>Use multiple frames for slide bodies?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="multiframe.frag">
+<xsl:param name="multiframe" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple frames are used for the body of each
+slide. This is one way of forcing the slide navigation elements to
+appear in constant locations. The other way is with <link linkend="overlay">overlays</link>. The <link linkend="overlay"><parameter>overlay</parameter></link> and
+<parameter>multiframe</parameter> parameters are mutually
+exclusive.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml
new file mode 100644
index 0000000..e3695f9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="nav.separator">
+<refmeta>
+<refentrytitle>nav.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nav.separator</refname>
+<refpurpose>Output separator between navigation and body?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="nav.separator.frag">
+<xsl:param name="nav.separator" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a separator (<literal>&lt;HR&gt;</literal>) is
+added between the navigation links and the content of each slide.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml
new file mode 100644
index 0000000..1c1559b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="nav.table.summary">
+<refmeta>
+<refentrytitle>nav.table.summary</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nav.table.summary</refname>
+<refpurpose>HTML Table summary attribute value for navigation tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="nav.table.summary.frag">
+<xsl:param name="nav.table.summary">Navigation</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The value of this parameter is used as the value of the table
+summary attribute for the navigation table.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml
new file mode 100644
index 0000000..c6fcece
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="navbgcolor">
+<refmeta>
+<refentrytitle>navbgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navbgcolor</refname>
+<refpurpose>The background color of the navigation TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="navbgcolor.frag">
+<xsl:param name="navbgcolor">#4080FF</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The background color of the navigation TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml
new file mode 100644
index 0000000..b93cf82
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="navbodywidth">
+<refmeta>
+<refentrytitle>navbodywidth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navbodywidth</refname>
+<refpurpose>Specifies the width of the navigation table body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="navbodywidth.frag">
+<xsl:param name="navbodywidth"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The width of the body column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml
new file mode 100644
index 0000000..416e0c4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="navig.graphics.extension">
+<refmeta>
+<refentrytitle>navig.graphics.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics.extension</refname>
+<refpurpose>Extension for navigational graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="navig.graphics.extension.frag">
+<xsl:param name="navig.graphics.extension">.gif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename extension to use on navigational graphics used
+in the headers and footers of chunked HTML.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml
new file mode 100644
index 0000000..373208e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="navig.graphics.path">
+<refmeta>
+<refentrytitle>navig.graphics.path</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics.path</refname>
+<refpurpose>Path to navigational graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="navig.graphics.path.frag">
+<xsl:param name="navig.graphics.path">images/</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the path, probably relative to the directory where the HTML
+files are created, to the navigational graphics used in the
+headers and footers of chunked HTML.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml
new file mode 100644
index 0000000..03e28b6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="navig.graphics">
+<refmeta>
+<refentrytitle>navig.graphics</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.graphics</refname>
+<refpurpose>Use graphics in navigational headers and footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="navig.graphics.frag">
+<xsl:param name="navig.graphics" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the navigational headers and footers in chunked
+HTML are presented in an alternate style that uses graphical icons for
+Next, Previous, Up, and Home. Default graphics are provided in the
+distribution. If zero, text is used instead of graphics.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml
new file mode 100644
index 0000000..a4eb3ff
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="navig.showtitles">
+<refmeta>
+<refentrytitle>navig.showtitles</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navig.showtitles</refname>
+<refpurpose>Display titles in HTML headers and footers?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="navig.showtitles.frag"><xsl:param name="navig.showtitles">1</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+the headers and footers of chunked HTML
+display the titles of the next and previous chunks,
+along with the words 'Next' and 'Previous' (or the
+equivalent graphical icons if navig.graphics is true).
+If false (zero), then only the words 'Next' and 'Previous'
+(or the icons) are displayed.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml
new file mode 100644
index 0000000..0d21ae0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="navtocwidth">
+<refmeta>
+<refentrytitle>navtocwidth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navtocwidth</refname>
+<refpurpose>Specifies the width of the navigation table TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="navtocwidth.frag">
+<xsl:param name="navtocwidth">220</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The width, in pixels, of the navigation column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml
new file mode 100644
index 0000000..4dbd60a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="next.image">
+<refmeta>
+<refentrytitle>next.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>next.image</refname>
+<refpurpose>Right-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="next.image.frag">
+<xsl:param name="next.image" >active/nav-next.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the right-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml
new file mode 100644
index 0000000..2f4ecd8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="no.home.image">
+<refmeta>
+<refentrytitle>no.home.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.home.image</refname>
+<refpurpose>Inactive home image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="no.home.image.frag">
+<xsl:param name="no.home.image">inactive/nav-home.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive home navigation icon.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml
new file mode 100644
index 0000000..966fe26
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="no.next.image">
+<refmeta>
+<refentrytitle>no.next.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.next.image</refname>
+<refpurpose>Inactive right-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="no.next.image.frag">
+<xsl:param name="no.next.image">inactive/nav-next.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive right-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml
new file mode 100644
index 0000000..7632231
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="no.prev.image">
+<refmeta>
+<refentrytitle>no.prev.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.prev.image</refname>
+<refpurpose>Inactive left-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="no.prev.image.frag">
+<xsl:param name="no.prev.image" >inactive/nav-prev.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive left-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml
new file mode 100644
index 0000000..43e9eea
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="no.toc.image">
+<refmeta>
+<refentrytitle>no.toc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.toc.image</refname>
+<refpurpose>Inactive ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="no.toc.image.frag">
+<xsl:param name="no.toc.image">inactive/nav-toc.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive ToC navigation icon.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml
new file mode 100644
index 0000000..a19a34d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="no.up.image">
+<refmeta>
+<refentrytitle>no.up.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.up.image</refname>
+<refpurpose>Inactive up-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="no.up.image.frag">
+<xsl:param name="no.up.image" >inactive/nav-up.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive upward-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml
new file mode 100644
index 0000000..a4e615f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="nominal.image.depth">
+<refmeta>
+<refentrytitle>nominal.image.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.image.depth</refname>
+<refpurpose>Nominal image depth</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="nominal.image.depth.frag">
+<xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>See <parameter>nominal.image.width</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml
new file mode 100644
index 0000000..bfa989a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="nominal.image.width">
+<refmeta>
+<refentrytitle>nominal.image.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.image.width</refname>
+<refpurpose>The nominal image width</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="nominal.image.width.frag">
+<xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Graphic widths expressed as a percentage are problematic. In the
+following discussion, we speak of width and contentwidth, but
+the same issues apply to depth and contentdepth.</para>
+
+<para>A width of 50% means "half of the available space for the image."
+That's fine. But note that in HTML, this is a dynamic property and
+the image size will vary if the browser window is resized.</para>
+
+<para>A contentwidth of 50% means "half of the actual image width".
+But what does that mean if the stylesheets cannot assess the image's
+actual size? Treating this as a width of 50% is one possibility, but
+it produces behavior (dynamic scaling) that seems entirely out of
+character with the meaning.</para>
+
+<para>Instead, the stylesheets define a
+<parameter>nominal.image.width</parameter> and convert percentages to
+actual values based on that nominal size.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml
new file mode 100644
index 0000000..f5dcfb9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="nominal.table.width">
+<refmeta>
+<refentrytitle>nominal.table.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nominal.table.width</refname>
+<refpurpose>The (absolute) nominal width of tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="nominal.table.width.frag">
+<xsl:param name="nominal.table.width">6in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In order to convert CALS column widths into HTML column widths, it
+is sometimes necessary to have an absolute table width to use for conversion
+of mixed absolute and relative widths. This value must be an absolute
+length (not a percentage).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml
new file mode 100644
index 0000000..ba8a06a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml
@@ -0,0 +1,41 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="nongraphical.admonition.properties">
+<refmeta>
+<refentrytitle>nongraphical.admonition.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nongraphical.admonition.properties</refname>
+<refpurpose>To add properties to the outer block of a nongraphical admonition.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="nongraphical.admonition.properties.frag"><xsl:attribute-set name="nongraphical.admonition.properties">
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.start}">0.25in</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">0.25in</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the outer block containing the
+entire nongraphical admonition, including its title.
+It is used when the parameter
+<parameter>admon.graphics</parameter> is set to zero.
+Use this attribute-set to set the space above and below,
+and any indent for the whole admonition.</para>
+
+<para>In addition to these properties, a nongraphical admonition
+also applies the <parameter>admonition.title.properties</parameter>
+attribute-set to the title, and the
+<parameter>admonition.properties</parameter> attribute-set
+to the rest of the content.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml
new file mode 100644
index 0000000..bb2a6c0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="normal.para.spacing">
+<refmeta>
+<refentrytitle>normal.para.spacing</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>normal.para.spacing</refname>
+<refpurpose>What space do you want between normal paragraphs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="normal.para.spacing.frag"><xsl:attribute-set name="normal.para.spacing">
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Specify the spacing required between normal paragraphs</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml
new file mode 100644
index 0000000..d88dd62
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.base.uri">
+<refmeta>
+<refentrytitle>olink.base.uri</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.base.uri</refname>
+<refpurpose>Base URI used in olink hrefs</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <src:fragment xml:id="olink.base.uri.frag">
+<xsl:param name="olink.base.uri"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for resolving olinks, it
+may be necessary to prepend a base URI to each target's href. This
+parameter lets you set that base URI when cross reference data is
+collected. This feature is needed when you want to link to a document
+that is processed without chunking. The output filename for such a
+document is not known to the XSL stylesheet; the only target
+information consists of fragment identifiers such as
+<literal>#idref</literal>. To enable the resolution of olinks between
+documents, you should pass the name of the HTML output file as the
+value of this parameter. Then the hrefs recorded in the cross
+reference data collection look like
+<literal>outfile.html#idref</literal>, which can be reached as links
+from other documents.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml
new file mode 100644
index 0000000..e49a176
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.debug">
+<refmeta>
+<refentrytitle>olink.debug</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.debug</refname>
+<refpurpose>Turn on debugging messages for olinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="olink.debug.frag">
+<xsl:param name="olink.debug" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then each olink will generate several
+messages about how it is being resolved during processing.
+This is useful when an olink does not resolve properly
+and the standard error messages are not sufficient to
+find the problem.
+</para>
+
+<para>You may need to read through the olink XSL templates
+to understand the context for some of the debug messages.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml
new file mode 100644
index 0000000..356347d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml
@@ -0,0 +1,146 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.doctitle">
+<refmeta>
+<refentrytitle>olink.doctitle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">maybe</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.doctitle</refname>
+<refpurpose>show the document title for external olinks?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <src:fragment xml:id="olink.doctitle.frag">
+<xsl:param name="olink.doctitle">no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When olinks between documents are resolved, the generated text
+may not make it clear that the reference is to another document.
+It is possible for the stylesheets to append the other document's
+title to external olinks. For this to happen, two parameters must
+be set.</para>
+<itemizedlist>
+<listitem>
+<para>This <parameter>olink.doctitle</parameter> parameter
+should be set to either <literal>yes</literal> or <literal>maybe</literal>
+to enable this feature.
+</para>
+</listitem>
+<listitem>
+<para>And you should also set the <parameter>current.docid</parameter>
+parameter to the document id for the document currently
+being processed for output.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>
+Then if an olink's <literal>targetdoc</literal> id differs from
+the <literal>current.docid</literal> value, the stylesheet knows
+that it is a reference to another document and can
+append the target document's
+title to the generated olink text. </para>
+
+<para>The text for the target document's title is copied from the
+olink database from the <tag>ttl</tag> element
+of the top-level <tag>div</tag> for that document.
+If that <tag>ttl</tag> element is missing or empty,
+no title is output.
+</para>
+
+<para>The supported values for <parameter>olink.doctitle</parameter> are:
+</para>
+<variablelist>
+<varlistentry>
+<term><literal>yes</literal></term>
+<listitem>
+<para>
+Always insert the title to the target document if it is not
+the current document.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>no</literal></term>
+<listitem>
+<para>
+Never insert the title to the target document, even if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>maybe</literal></term>
+<listitem>
+<para>
+Only insert the title to the target document, if requested
+in an <tag class="attribute">xrefstyle</tag> attribute.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>An <tag class="attribute">xrefstyle</tag> attribute
+may override the global setting for individual olinks.
+The following values are supported in an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>select:</literal> syntax:
+</para>
+
+<variablelist>
+<varlistentry>
+<term><literal>docname</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docname</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>docnamelong</literal></term>
+<listitem>
+<para>
+Insert the target document name for this olink using the
+<literal>docnamelong</literal> gentext template, but only
+if the value of <parameter>olink.doctitle</parameter>
+is not <literal>no</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>nodocname</literal></term>
+<listitem>
+<para>
+Omit the target document name even if
+the value of <parameter>olink.doctitle</parameter>
+is <literal>yes</literal>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>Another way of inserting the target document name
+for a single olink is to employ an
+<tag class="attribute">xrefstyle</tag>
+attribute using the <literal>template:</literal> syntax.
+The <literal>%o</literal> placeholder (the letter o, not zero)
+in such a template
+will be filled in with the target document's title when it is processed.
+This will occur regardless of
+the value of <parameter>olink.doctitle</parameter>.
+</para>
+<para>Note that prior to version 1.66 of the XSL stylesheets,
+the allowed values for this parameter were 0 and 1. Those
+values are still supported and mapped to 'no' and 'yes', respectively.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml
new file mode 100644
index 0000000..3258038
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml
@@ -0,0 +1,23 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.fragid">
+<refmeta>
+<refentrytitle>olink.fragid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.fragid</refname>
+<refpurpose>Names the fragment identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="olink.fragid.frag">
+<xsl:param name="olink.fragid">fragid=</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>The fragment identifier portion of an <tag>olink</tag> target.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml
new file mode 100644
index 0000000..7d3d811
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml
@@ -0,0 +1,83 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.lang.fallback.sequence">
+<refmeta>
+<refentrytitle>olink.lang.fallback.sequence</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.lang.fallback.sequence</refname>
+<refpurpose>look up translated documents if olink not found?</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv> <src:fragment xml:id="olink.lang.fallback.sequence.frag">
+<xsl:param name="olink.lang.fallback.sequence"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+
+<para>This parameter defines a list of lang values
+to search among to resolve olinks.
+</para>
+
+<para>Normally an olink tries to resolve to a document in the same
+language as the olink itself. The language of an olink
+is determined by its nearest ancestor element with a
+<tag class="attribute">lang</tag> attribute, otherwise the
+value of the <parameter>l10n.gentext.default.lang</parameter>
+parameter.
+</para>
+
+<para>An olink database can contain target data for the same
+document in multiple languages. Each set of data has the
+same value for the <tag>targetdoc</tag> attribute in
+the <tag>document</tag> element in the database, but with a
+different <tag>lang</tag> attribute value.
+</para>
+
+<para>When an olink is being resolved, the target is first
+sought in the document with the same language as the olink.
+If no match is found there, then this parameter is consulted
+for additional languages to try.</para>
+
+<para>The <parameter>olink.lang.fallback.sequence</parameter>
+must be a whitespace separated list of lang values to
+try. The first one with a match in the olink database is used.
+The default value is empty.</para>
+
+<para>For example, a document might be written in German
+and contain an olink with
+<literal>targetdoc="adminguide"</literal>.
+When the document is processed, the processor
+first looks for a target dataset in the
+olink database starting with:</para>
+
+<literallayout><literal>&lt;document targetdoc="adminguide" lang="de"&gt;</literal>.
+</literallayout>
+
+<para>If there is no such element, then the
+<parameter>olink.lang.fallback.sequence</parameter>
+parameter is consulted.
+If its value is, for example, <quote>fr en</quote>, then the processor next
+looks for <literal>targetdoc="adminguide" lang="fr"</literal>, and
+then for <literal>targetdoc="adminguide" lang="en"</literal>.
+If there is still no match, it looks for
+<literal>targetdoc="adminguide"</literal> with no
+lang attribute.
+</para>
+
+<para>This parameter is useful when a set of documents is only
+partially translated, or is in the process of being translated.
+If a target of an olink has not yet been translated, then this
+parameter permits the processor to look for the document in
+other languages. This assumes the reader would rather have
+a link to a document in a different language than to have
+a broken link.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml
new file mode 100644
index 0000000..2de2fe2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.outline.ext">
+<refmeta>
+<refentrytitle>olink.outline.ext</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.outline.ext</refname>
+<refpurpose>The extension of OLink outline files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="olink.outline.ext.frag">
+<xsl:param name="olink.outline.ext">.olink</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The extension to be expected for OLink outline files</para>
+<para>Bob has this parameter as dead. Please don't use</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml
new file mode 100644
index 0000000..b76657e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.properties">
+<refmeta>
+<refentrytitle>olink.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.properties</refname>
+<refpurpose>Properties associated with the cross-reference
+text of an olink.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="olink.properties.frag">
+<xsl:attribute-set name="olink.properties">
+ <xsl:attribute name="show-destination">replace</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This <literal>attribute set</literal> is applied to the
+<literal>fo:basic-link</literal> element of an olink. It is not applied to the
+optional page number or optional title of the external
+document.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml
new file mode 100644
index 0000000..4f0b50c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.pubid">
+<refmeta>
+<refentrytitle>olink.pubid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.pubid</refname>
+<refpurpose>Names the public identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="olink.pubid.frag">
+<xsl:param name="olink.pubid">pubid</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para></para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml
new file mode 100644
index 0000000..fa7d471
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml
@@ -0,0 +1,23 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.resolver">
+<refmeta>
+<refentrytitle>olink.resolver</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.resolver</refname>
+<refpurpose>The root name of the OLink resolver (usually a script)</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="olink.resolver.frag">
+ <xsl:param name="olink.resolver" >/cgi-bin/olink</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>FIXME:</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml
new file mode 100644
index 0000000..6d4542f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="olink.sysid">
+<refmeta>
+<refentrytitle>olink.sysid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>olink.sysid</refname>
+<refpurpose>Names the system identifier portion of an OLink resolver query</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="olink.sysid.frag">
+<xsl:param name="olink.sysid">sysid</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml
new file mode 100644
index 0000000..39b0432
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="orderedlist.label.properties">
+<refmeta>
+<refentrytitle>orderedlist.label.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.label.properties</refname>
+<refpurpose>Properties that apply to each label inside ordered list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="orderedlist.label.properties.frag"><xsl:attribute-set name="orderedlist.label.properties">
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each label inside ordered list. E.g.:</para>
+<programlisting>&lt;xsl:attribute-set name="orderedlist.label.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;right&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml
new file mode 100644
index 0000000..18c8fa8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="orderedlist.label.width">
+<refmeta>
+<refentrytitle>orderedlist.label.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.label.width</refname>
+<refpurpose>The default width of the label (number) in an ordered list.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="orderedlist.label.width.frag">
+<xsl:param name="orderedlist.label.width">1.2em</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Specifies the default width of the label (usually a number or
+sequence of numbers) in an ordered list. You can override the default
+value on any particular list with the “dbfo†processing instruction
+using the “label-width†pseudoattribute.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml
new file mode 100644
index 0000000..59061cb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml
@@ -0,0 +1,24 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="orderedlist.properties">
+<refmeta>
+<refentrytitle>orderedlist.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>orderedlist.properties</refname>
+<refpurpose>Properties that apply to each list-block generated by orderedlist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="orderedlist.properties.frag"><xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties">
+ <xsl:attribute name="provisional-distance-between-starts">2em</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to each fo:list-block generated by orderedlist.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml
new file mode 100644
index 0000000..2e789dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="othercredit.like.author.enabled">
+<refmeta>
+<refentrytitle>othercredit.like.author.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>othercredit.like.author.enabled</refname>
+<refpurpose>Display othercredit in same style as author?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="othercredit.like.author.enabled.frag"><xsl:param name="othercredit.like.author.enabled">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, output of the
+<tag>othercredit</tag> element on titlepages is displayed in
+the same style as <tag>author</tag> and
+<tag>editor</tag> output. If zero then
+<tag>othercredit</tag> output is displayed using a style
+different than that of <tag>author</tag> and
+<tag>editor</tag>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml
new file mode 100644
index 0000000..d37b054
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="output-root">
+<refmeta>
+<refentrytitle>output-root</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>output-root</refname>
+<refpurpose>Specifies the root directory of the website</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="output-root.frag">
+<xsl:param name="output-root">.</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to indicate the root directory
+where the resulting pages are placed.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml
new file mode 100644
index 0000000..40406d7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="output.indent">
+<refmeta>
+<refentrytitle>output.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>output.indent</refname>
+<refpurpose>Indent output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="output.indent.frag">
+<xsl:param name="output.indent" >no</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the setting of the <parameter>indent</parameter>
+parameter on the HTML slides. For more information, see the discussion
+of the <tag>xsl:output</tag> element in the XSLT specification.</para>
+<para>Select from <literal>yes</literal> or <literal>no</literal>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml
new file mode 100644
index 0000000..162f87a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="overlay.js">
+<refmeta>
+<refentrytitle>overlay.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay.js</refname>
+<refpurpose>Overlay JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="overlay.js.frag">
+<xsl:param name="overlay.js">overlay.js</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the overlay JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml
new file mode 100644
index 0000000..e740771
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="overlay.logo">
+<refmeta>
+<refentrytitle>overlay.logo</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay.logo</refname>
+<refpurpose>Logo to overlay on ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="overlay.logo.frag">
+<xsl:param name="overlay.logo">http://docbook.sourceforge.net/release/buttons/slides-1.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this URI is non-empty, JavaScript is used to overlay the
+specified image on the ToC frame.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml
new file mode 100644
index 0000000..f955b23
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="overlay">
+<refmeta>
+<refentrytitle>overlay</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay</refname>
+<refpurpose>Overlay footer navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="overlay.frag">
+<xsl:param name="overlay" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is added to the slides to make the
+bottom navigation appear at the bottom of each page. This option and
+<link linkend="multiframe">multiframe</link> are mutually exclusive.</para>
+
+<para>If this parameter is zero, the bottom navigation simply appears
+below the content of each slide.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml
new file mode 100644
index 0000000..0dee73e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml
@@ -0,0 +1,69 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.height.portrait">
+<refmeta>
+<refentrytitle>page.height.portrait</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.height.portrait</refname>
+<refpurpose>Specify the physical size of the long edge of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.height.portrait.frag"><xsl:param name="page.height.portrait">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4landscape'">210mm</xsl:when>
+ <xsl:when test="$paper.type = 'USletter'">11in</xsl:when>
+ <xsl:when test="$paper.type = 'USlandscape'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = '4A0'">2378mm</xsl:when>
+ <xsl:when test="$paper.type = '2A0'">1682mm</xsl:when>
+ <xsl:when test="$paper.type = 'A0'">1189mm</xsl:when>
+ <xsl:when test="$paper.type = 'A1'">841mm</xsl:when>
+ <xsl:when test="$paper.type = 'A2'">594mm</xsl:when>
+ <xsl:when test="$paper.type = 'A3'">420mm</xsl:when>
+ <xsl:when test="$paper.type = 'A4'">297mm</xsl:when>
+ <xsl:when test="$paper.type = 'A5'">210mm</xsl:when>
+ <xsl:when test="$paper.type = 'A6'">148mm</xsl:when>
+ <xsl:when test="$paper.type = 'A7'">105mm</xsl:when>
+ <xsl:when test="$paper.type = 'A8'">74mm</xsl:when>
+ <xsl:when test="$paper.type = 'A9'">52mm</xsl:when>
+ <xsl:when test="$paper.type = 'A10'">37mm</xsl:when>
+ <xsl:when test="$paper.type = 'B0'">1414mm</xsl:when>
+ <xsl:when test="$paper.type = 'B1'">1000mm</xsl:when>
+ <xsl:when test="$paper.type = 'B2'">707mm</xsl:when>
+ <xsl:when test="$paper.type = 'B3'">500mm</xsl:when>
+ <xsl:when test="$paper.type = 'B4'">353mm</xsl:when>
+ <xsl:when test="$paper.type = 'B5'">250mm</xsl:when>
+ <xsl:when test="$paper.type = 'B6'">176mm</xsl:when>
+ <xsl:when test="$paper.type = 'B7'">125mm</xsl:when>
+ <xsl:when test="$paper.type = 'B8'">88mm</xsl:when>
+ <xsl:when test="$paper.type = 'B9'">62mm</xsl:when>
+ <xsl:when test="$paper.type = 'B10'">44mm</xsl:when>
+ <xsl:when test="$paper.type = 'C0'">1297mm</xsl:when>
+ <xsl:when test="$paper.type = 'C1'">917mm</xsl:when>
+ <xsl:when test="$paper.type = 'C2'">648mm</xsl:when>
+ <xsl:when test="$paper.type = 'C3'">458mm</xsl:when>
+ <xsl:when test="$paper.type = 'C4'">324mm</xsl:when>
+ <xsl:when test="$paper.type = 'C5'">229mm</xsl:when>
+ <xsl:when test="$paper.type = 'C6'">162mm</xsl:when>
+ <xsl:when test="$paper.type = 'C7'">114mm</xsl:when>
+ <xsl:when test="$paper.type = 'C8'">81mm</xsl:when>
+ <xsl:when test="$paper.type = 'C9'">57mm</xsl:when>
+ <xsl:when test="$paper.type = 'C10'">40mm</xsl:when>
+ <xsl:otherwise>11in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The portrait page height is the length of the long
+edge of the physical page.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml
new file mode 100644
index 0000000..96e32c0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.height">
+<refmeta>
+<refentrytitle>page.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.height</refname>
+<refpurpose>The height of the physical page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.height.frag"><xsl:param name="page.height">
+ <xsl:choose>
+ <xsl:when test="$page.orientation = 'portrait'">
+ <xsl:value-of select="$page.height.portrait"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$page.width.portrait"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The page height is generally calculated from the
+<parameter>paper.type</parameter> and
+<parameter>page.orientation</parameter> parameters.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml
new file mode 100644
index 0000000..e1877f3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.margin.bottom">
+<refmeta>
+<refentrytitle>page.margin.bottom</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.bottom</refname>
+<refpurpose>The bottom margin of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.margin.bottom.frag">
+<xsl:param name="page.margin.bottom">0.5in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The bottom page margin is the distance from the bottom of the region-after
+to the physical bottom of the page.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml
new file mode 100644
index 0000000..97782ba
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml
@@ -0,0 +1,56 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.margin.inner">
+<refmeta>
+<refentrytitle>page.margin.inner</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.inner</refname>
+<refpurpose>The inner page margin</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.margin.inner.frag"><xsl:param name="page.margin.inner">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">1.25in</xsl:when>
+ <xsl:otherwise>1in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The inner page margin is the distance from bound edge of the
+page to the first column of text. </para>
+
+<para>The inner page margin is the distance from bound edge of the
+page to the outer edge of the first column of text.</para>
+
+<para>In left-to-right text direction,
+this is the left margin of recto (front side) pages.
+For single-sided output, it is the left margin
+of all pages.</para>
+
+<para>In right-to-left text direction,
+this is the right margin of recto pages.
+For single-sided output, this is the
+right margin of all pages.</para>
+
+<note>
+<para>Current versions (at least as of version 4.13)
+of the XEP XSL-FO processor do not
+correctly handle these margin settings for documents
+with right-to-left text direction.
+The workaround in that situation is to reverse
+the values for <parameter>page.margin.inner</parameter>
+and <parameter>page.margin.outer</parameter>, until
+this bug is fixed by RenderX. It does not affect documents
+with left-to-right text direction.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml
new file mode 100644
index 0000000..61dfeb8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml
@@ -0,0 +1,53 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.margin.outer">
+<refmeta>
+<refentrytitle>page.margin.outer</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.outer</refname>
+<refpurpose>The outer page margin</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.margin.outer.frag"><xsl:param name="page.margin.outer">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">0.75in</xsl:when>
+ <xsl:otherwise>1in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The outer page margin is the distance from non-bound edge of the
+page to the outer edge of the last column of text.</para>
+
+<para>In left-to-right text direction,
+this is the right margin of recto (front side) pages.
+For single-sided output, it is the right margin
+of all pages.</para>
+
+<para>In right-to-left text direction,
+this is the left margin of recto pages.
+For single-sided output, this is the
+left margin of all pages.</para>
+
+<note>
+<para>Current versions (at least as of version 4.13)
+of the XEP XSL-FO processor do not
+correctly handle these margin settings for documents
+with right-to-left text direction.
+The workaround in that situation is to reverse
+the values for <parameter>page.margin.inner</parameter>
+and <parameter>page.margin.outer</parameter>, until
+this bug is fixed by RenderX. It does not affect documents
+with left-to-right text direction.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml
new file mode 100644
index 0000000..a7e53e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.margin.top">
+<refmeta>
+<refentrytitle>page.margin.top</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.margin.top</refname>
+<refpurpose>The top margin of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.margin.top.frag">
+<xsl:param name="page.margin.top">0.5in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The top page margin is the distance from the physical top of the
+page to the top of the region-before.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml
new file mode 100644
index 0000000..37971c0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.orientation">
+<refmeta>
+<refentrytitle>page.orientation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">portrait</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">landscape</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.orientation</refname>
+<refpurpose>Select the page orientation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.orientation.frag">
+<xsl:param name="page.orientation">portrait</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para> Select one from portrait or landscape.
+In portrait orientation, the short edge is horizontal; in
+landscape orientation, it is vertical.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml
new file mode 100644
index 0000000..8216fc3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml
@@ -0,0 +1,67 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.width.portrait">
+<refmeta>
+<refentrytitle>page.width.portrait</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.width.portrait</refname>
+<refpurpose>Specify the physical size of the short edge of the page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.width.portrait.frag"><xsl:param name="page.width.portrait">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = '4A0'">1682mm</xsl:when>
+ <xsl:when test="$paper.type = '2A0'">1189mm</xsl:when>
+ <xsl:when test="$paper.type = 'A0'">841mm</xsl:when>
+ <xsl:when test="$paper.type = 'A1'">594mm</xsl:when>
+ <xsl:when test="$paper.type = 'A2'">420mm</xsl:when>
+ <xsl:when test="$paper.type = 'A3'">297mm</xsl:when>
+ <xsl:when test="$paper.type = 'A4'">210mm</xsl:when>
+ <xsl:when test="$paper.type = 'A5'">148mm</xsl:when>
+ <xsl:when test="$paper.type = 'A6'">105mm</xsl:when>
+ <xsl:when test="$paper.type = 'A7'">74mm</xsl:when>
+ <xsl:when test="$paper.type = 'A8'">52mm</xsl:when>
+ <xsl:when test="$paper.type = 'A9'">37mm</xsl:when>
+ <xsl:when test="$paper.type = 'A10'">26mm</xsl:when>
+ <xsl:when test="$paper.type = 'B0'">1000mm</xsl:when>
+ <xsl:when test="$paper.type = 'B1'">707mm</xsl:when>
+ <xsl:when test="$paper.type = 'B2'">500mm</xsl:when>
+ <xsl:when test="$paper.type = 'B3'">353mm</xsl:when>
+ <xsl:when test="$paper.type = 'B4'">250mm</xsl:when>
+ <xsl:when test="$paper.type = 'B5'">176mm</xsl:when>
+ <xsl:when test="$paper.type = 'B6'">125mm</xsl:when>
+ <xsl:when test="$paper.type = 'B7'">88mm</xsl:when>
+ <xsl:when test="$paper.type = 'B8'">62mm</xsl:when>
+ <xsl:when test="$paper.type = 'B9'">44mm</xsl:when>
+ <xsl:when test="$paper.type = 'B10'">31mm</xsl:when>
+ <xsl:when test="$paper.type = 'C0'">917mm</xsl:when>
+ <xsl:when test="$paper.type = 'C1'">648mm</xsl:when>
+ <xsl:when test="$paper.type = 'C2'">458mm</xsl:when>
+ <xsl:when test="$paper.type = 'C3'">324mm</xsl:when>
+ <xsl:when test="$paper.type = 'C4'">229mm</xsl:when>
+ <xsl:when test="$paper.type = 'C5'">162mm</xsl:when>
+ <xsl:when test="$paper.type = 'C6'">114mm</xsl:when>
+ <xsl:when test="$paper.type = 'C7'">81mm</xsl:when>
+ <xsl:when test="$paper.type = 'C8'">57mm</xsl:when>
+ <xsl:when test="$paper.type = 'C9'">40mm</xsl:when>
+ <xsl:when test="$paper.type = 'C10'">28mm</xsl:when>
+ <xsl:otherwise>8.5in</xsl:otherwise>
+ </xsl:choose>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The portrait page width is the length of the short
+edge of the physical page.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml
new file mode 100644
index 0000000..ff16060
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="page.width">
+<refmeta>
+<refentrytitle>page.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>page.width</refname>
+<refpurpose>The width of the physical page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="page.width.frag"><xsl:param name="page.width">
+ <xsl:choose>
+ <xsl:when test="$page.orientation = 'portrait'">
+ <xsl:value-of select="$page.width.portrait"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$page.height.portrait"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The page width is generally calculated from the
+<parameter>paper.type</parameter> and
+<parameter>page.orientation</parameter> parameters.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml
new file mode 100644
index 0000000..fff546c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="pages.template">
+<refmeta>
+<refentrytitle>pages.template</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pages.template</refname>
+<refpurpose>Specify the template Pages document</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="pages.template.frag">
+<xsl:param name="pages.template"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>pages.template</parameter> parameter specifies a Pages (the Apple word processing application) document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored.</para>
+
+<para>A template document is used in order to allow maintenance of the paragraph and character styles to be done using Pages itself, rather than these XSL stylesheets.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml
new file mode 100644
index 0000000..2656c9c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="paper.type">
+<refmeta>
+<refentrytitle>paper.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USletter<alt>8.5x11in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlandscape<alt>11x8.5in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegal<alt>8.5inx14in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegallandscape<alt>14inx8.5in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">4A0<alt>2378x1682mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">2A0<alt>1682x1189mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A0<alt>1189x841mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A1<alt>841x594mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A2<alt>594x420mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A3<alt>420x297mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A4<alt>297x210mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A5<alt>210x148mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A6<alt>148x105mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A7<alt>105x74mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A8<alt>74x52mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A9<alt>52x37mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A10<alt>37x26mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B0<alt>1414x1000mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B1<alt>1000x707mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B2<alt>707x500mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B3<alt>500x353mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B4<alt>353x250mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B5<alt>250x176mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B6<alt>176x125mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B7<alt>125x88mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B8<alt>88x62mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B9<alt>62x44mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">B10<alt>44x31mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C0<alt>1297x917mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C1<alt>917x648mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C2<alt>648x458mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C3<alt>458x324mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C4<alt>324x229mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C5<alt>229x162mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C6<alt>162x114mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C7<alt>114x81mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C8<alt>81x57mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C9<alt>57x40mm</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">C10<alt>40x28mm</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>paper.type</refname>
+<refpurpose>Select the paper type</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="paper.type.frag">
+<xsl:param name="paper.type">USletter</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The paper type is a convenient way to specify the paper size.
+The list of known paper sizes includes USletter and most of the A,
+B, and C sizes. See <parameter>page.width.portrait</parameter>, for example.
+
+
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml
new file mode 100644
index 0000000..0415adf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="para.propagates.style">
+<refmeta>
+<refentrytitle>para.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>para.propagates.style</refname>
+<refpurpose>Pass para role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="para.propagates.style.frag">
+<xsl:param name="para.propagates.style" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, the role attribute of <tag>para</tag> elements
+will be passed through to the HTML as a class attribute on the
+<tag>p</tag> generated for the paragraph.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml
new file mode 100644
index 0000000..4f1a42c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="part.autolabel">
+<refmeta>
+<refentrytitle>part.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>part.autolabel</refname>
+<refpurpose>Specifies the labeling format for Part titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="part.autolabel.frag">
+<xsl:param name="part.autolabel">I</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, then parts will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (upperroman).
+</para>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml
new file mode 100644
index 0000000..2b1cb77
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="passivetex.extensions">
+<refmeta>
+<refentrytitle>passivetex.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>passivetex.extensions</refname>
+<refpurpose>Enable PassiveTeX extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="passivetex.extensions.frag"><xsl:param name="passivetex.extensions" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.tei-c.org.uk/Software/passivetex/">PassiveTeX</link>
+extensions will be used. At present, this consists of PDF bookmarks
+and sorted index terms.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+
+<note>
+ <para>PassiveTeX is incomplete and development has ceased. In most cases,
+another XSL-FO engine is probably a better choice.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml
new file mode 100644
index 0000000..c63b461
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml
@@ -0,0 +1,52 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="pgwide.properties">
+<refmeta>
+<refentrytitle>pgwide.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pgwide.properties</refname>
+<refpurpose>Properties to make a figure or table page wide.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="pgwide.properties.frag">
+<xsl:attribute-set name="pgwide.properties">
+ <xsl:attribute name="start-indent">0pt</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used to set the properties
+that make a figure or table "page wide" in fo output.
+It comes into effect when an attribute <literal>pgwide="1"</literal>
+is used.
+</para>
+
+<para>
+By default, it sets <parameter>start-indent</parameter>
+to <literal>0pt</literal>.
+In a stylesheet that sets the parameter
+<parameter>body.start.indent</parameter>
+to a non-zero value in order to indent body text,
+this attribute set can be used to outdent pgwide
+figures to the start margin.
+</para>
+
+<para>If a document uses a multi-column page layout,
+then this attribute set could try setting <parameter>span</parameter>
+to a value of <literal>all</literal>. However, this may
+not work with some processors because a span property must be on an
+fo:block that is a direct child of fo:flow. It may work in
+some processors anyway.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml
new file mode 100644
index 0000000..8c25892
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="phrase.propagates.style">
+<refmeta>
+<refentrytitle>phrase.propagates.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>phrase.propagates.style</refname>
+<refpurpose>Pass phrase role attribute through to HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="phrase.propagates.style.frag">
+<xsl:param name="phrase.propagates.style" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the role attribute of <tag>phrase</tag> elements
+will be passed through to the HTML as a <literal>class</literal>
+attribute on a <literal>span</literal> that surrounds the
+phrase.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml
new file mode 100644
index 0000000..86faff5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="pixels.per.inch">
+<refmeta>
+<refentrytitle>pixels.per.inch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pixels.per.inch</refname>
+<refpurpose>How many pixels are there per inch?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="pixels.per.inch.frag">
+<xsl:param name="pixels.per.inch">90</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When lengths are converted to pixels, this value is used to
+determine the size of a pixel. The default value is taken from the
+<link xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/">XSL
+Recommendation</link>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml
new file mode 100644
index 0000000..17b3d3c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="plus.image">
+<refmeta>
+<refentrytitle>plus.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>plus.image</refname>
+<refpurpose>Plus image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="plus.image.frag">
+<xsl:param name="plus.image">toc/closed.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>plus</quote> image; the image used in a
+<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
+can be expanded.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml
new file mode 100644
index 0000000..76bd22e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="points.per.em">
+<refmeta>
+<refentrytitle>points.per.em</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>points.per.em</refname>
+<refpurpose>Specify the nominal size of an em-space in points</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="points.per.em.frag">
+<xsl:param name="points.per.em">10</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The fixed value used for calculations based upon the size of a
+character. The assumption made is that ten point font is in use. This
+assumption may not be valid.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml
new file mode 100644
index 0000000..f59115a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml
@@ -0,0 +1,71 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="preface.autolabel">
+<refmeta>
+<refentrytitle>preface.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preface.autolabel</refname>
+<refpurpose>Specifices the labeling format for Preface titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="preface.autolabel.frag"><xsl:param name="preface.autolabel" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero then prefaces will be numbered using the parameter
+value as the number format if the value matches one of the following:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>Any nonzero value other than the above will generate
+the default number format (arabic).
+</para>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml
new file mode 100644
index 0000000..2599d76
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml
@@ -0,0 +1,78 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="prefer.internal.olink">
+<refmeta>
+<refentrytitle>prefer.internal.olink</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prefer.internal.olink</refname>
+<refpurpose>Prefer a local olink reference to an external reference</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="prefer.internal.olink.frag">
+<xsl:param name="prefer.internal.olink" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you are re-using XML content modules in multiple documents,
+you may want to redirect some of your olinks. This parameter
+permits you to redirect an olink to the current document.
+</para>
+
+<para>For example: you are writing documentation for a product,
+which includes 3 manuals: a little installation
+booklet (booklet.xml), a user
+guide (user.xml), and a reference manual (reference.xml).
+All 3 documents begin with the same introduction section (intro.xml) that
+contains a reference to the customization section (custom.xml) which is
+included in both user.xml and reference.xml documents.
+</para>
+
+<para>How do you write the link to custom.xml in intro.xml
+so that it is interpreted correctly in all 3 documents?</para>
+<itemizedlist>
+<listitem><para>If you use xref, it will fail in user.xml.</para>
+</listitem>
+<listitem><para>If you use olink (pointing to reference.xml),
+the reference in user.xml
+will point to the customization section of the reference manual, while it is
+actually available in user.xml.</para>
+</listitem>
+</itemizedlist>
+
+<para>If you set the <parameter>prefer.internal.olink</parameter>
+parameter to a non-zero value, then the processor will
+first look in the olink database
+for the olink's <tag>targetptr</tag> attribute value
+in document matching the <parameter>current.docid</parameter>
+parameter value. If it isn't found there, then
+it tries the document in the database
+with the <tag>targetdoc</tag>
+value that matches the olink's <tag>targetdoc</tag>
+attribute.
+</para>
+
+<para>This feature permits an olink reference to resolve to
+the current document if there is an element
+with an id matching the olink's <tag>targetptr</tag>
+value. The current document's olink data must be
+included in the target database for this to work.</para>
+
+<caution>
+<para>There is a potential for incorrect links if
+the same <tag>id</tag> attribute value is used for different
+content in different documents.
+Some of your olinks may be redirected to the current document
+when they shouldn't be. It is not possible to control
+individual olink instances.</para>
+</caution>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml
new file mode 100644
index 0000000..57b0989
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="preferred.mediaobject.role">
+<refmeta>
+<refentrytitle>preferred.mediaobject.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preferred.mediaobject.role</refname>
+<refpurpose>Select which mediaobject to use based on
+this value of an object's <tag class="attribute">role</tag> attribute.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="preferred.mediaobject.role.frag">
+<xsl:param name="preferred.mediaobject.role"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A mediaobject may contain several objects such as imageobjects.
+If the parameter <parameter>use.role.for.mediaobject</parameter> is
+non-zero, then the <literal>role</literal> attribute on
+<tag>imageobject</tag>s and other objects within a
+<tag>mediaobject</tag> container will be used to select which object
+will be used. If one of the objects has a role value that matches the
+<parameter>preferred.mediaobject.role</parameter> parameter, then it
+has first priority for selection. If more than one has such a role
+value, the first one is used.
+</para>
+<para>
+See the <parameter>use.role.for.mediaobject</parameter> parameter
+for the sequence of selection.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml
new file mode 100644
index 0000000..b017115
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="prev.image">
+<refmeta>
+<refentrytitle>prev.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prev.image</refname>
+<refpurpose>Left-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="prev.image.frag">
+<xsl:param name="prev.image">active/nav-prev.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the left-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml
new file mode 100644
index 0000000..f6cadb0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="procedure.properties">
+<refmeta>
+<refentrytitle>procedure.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>procedure.properties</refname>
+<refpurpose>Properties associated with a procedure</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="procedure.properties.frag">
+<xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="keep-together.within-column">auto</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for procedures.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml
new file mode 100644
index 0000000..772b456
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="process.empty.source.toc">
+<refmeta>
+<refentrytitle>process.empty.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.empty.source.toc</refname>
+<refpurpose>Generate automated TOC if <tag>toc</tag> element occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="process.empty.source.toc.frag"><xsl:param name="process.empty.source.toc" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that if an empty <tag>toc</tag> element is found in a
+source document, an automated TOC is generated at this point in the
+document.
+<note>
+ <para>Depending on what the value of the
+ <parameter>generate.toc</parameter> parameter is, setting this
+ parameter to <literal>1</literal> could result in generation of
+ duplicate automated TOCs. So the
+ <parameter>process.empty.source.toc</parameter> is primarily useful
+ as an "override": by placing an empty <tag>toc</tag> in your
+ document and setting this parameter to <literal>1</literal>, you can
+ force a TOC to be generated even if <tag>generate.toc</tag>
+ says not to.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml
new file mode 100644
index 0000000..b91657a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="process.source.toc">
+<refmeta>
+<refentrytitle>process.source.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.source.toc</refname>
+<refpurpose>Process a non-empty <tag>toc</tag> element if it occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="process.source.toc.frag"><xsl:param name="process.source.toc" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies that the contents of a non-empty "hard-coded"
+<tag>toc</tag> element in a source document are processed to
+generate a TOC in output.
+<note>
+ <para>This parameter has no effect on automated generation of
+ TOCs. An automated TOC may still be generated along with the
+ "hard-coded" TOC. To suppress automated TOC generation, adjust the
+ value of the <parameter>generate.toc</parameter> paramameter.</para>
+
+ <para>The <tag>process.source.toc</tag> parameter also has
+ no effect if the <tag>toc</tag> element is empty; handling
+ for empty <tag>toc</tag> is controlled by the
+ <parameter>process.empty.source.toc</parameter> parameter.</para>
+</note>
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml
new file mode 100644
index 0000000..afcd34c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.arch">
+<refmeta>
+<refentrytitle>profile.arch</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.arch</refname>
+<refpurpose>Target profile for <tag class="attribute">arch</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.arch.frag">
+<xsl:param name="profile.arch"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml
new file mode 100644
index 0000000..e7dc5d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.attribute">
+<refmeta>
+<refentrytitle>profile.attribute</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.attribute</refname>
+<refpurpose>Name of user-specified profiling attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.attribute.frag">
+<xsl:param name="profile.attribute"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter is used in conjuction with
+<parameter>profile.value</parameter>.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml
new file mode 100644
index 0000000..1c5b1a3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.audience">
+<refmeta>
+<refentrytitle>profile.audience</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.audience</refname>
+<refpurpose>Target profile for <tag class="attribute">audience</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.audience.frag">
+<xsl:param name="profile.audience"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml
new file mode 100644
index 0000000..8bb01a3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.condition">
+<refmeta>
+<refentrytitle>profile.condition</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.condition</refname>
+<refpurpose>Target profile for <tag class="attribute">condition</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.condition.frag">
+<xsl:param name="profile.condition"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml
new file mode 100644
index 0000000..606af4c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.conformance">
+<refmeta>
+<refentrytitle>profile.conformance</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.conformance</refname>
+<refpurpose>Target profile for <tag class="attribute">conformance</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.conformance.frag">
+<xsl:param name="profile.conformance"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml
new file mode 100644
index 0000000..43b9439
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.lang">
+<refmeta>
+<refentrytitle>profile.lang</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.lang</refname>
+<refpurpose>Target profile for <tag class="attribute">lang</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.lang.frag">
+<xsl:param name="profile.lang"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml
new file mode 100644
index 0000000..ba6f430
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.os">
+<refmeta>
+<refentrytitle>profile.os</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.os</refname>
+<refpurpose>Target profile for <tag class="attribute">os</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.os.frag">
+<xsl:param name="profile.os"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml
new file mode 100644
index 0000000..28f668d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.revision">
+<refmeta>
+<refentrytitle>profile.revision</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revision</refname>
+<refpurpose>Target profile for <tag class="attribute">revision</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.revision.frag">
+<xsl:param name="profile.revision" ></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml
new file mode 100644
index 0000000..3ab8919
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.revisionflag">
+<refmeta>
+<refentrytitle>profile.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.revisionflag</refname>
+<refpurpose>Target profile for <tag class="attribute">revisionflag</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.revisionflag.frag">
+<xsl:param name="profile.revisionflag"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml
new file mode 100644
index 0000000..5758e4a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml
@@ -0,0 +1,54 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.role">
+<refmeta>
+<refentrytitle>profile.role</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.role</refname>
+<refpurpose>Target profile for <tag class="attribute">role</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.role.frag">
+<xsl:param name="profile.role"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+<warning>
+<para>Note that <tag class="attribute">role</tag> is often
+used for other purposes than profiling. For example it is commonly
+used to get emphasize in bold font:</para>
+
+<programlisting>&lt;emphasis role="bold"&gt;very important&lt;/emphasis&gt;</programlisting>
+
+<para>If you are using <tag class="attribute">role</tag> for
+these purposes do not forget to add values like <literal>bold</literal> to
+value of this parameter. If you forgot you will get document with
+small pieces missing which are very hard to track.</para>
+
+<para>For this reason it is not recommended to use <tag class="attribute">role</tag> attribute for profiling. You should
+rather use profiling specific attributes like <tag class="attribute">userlevel</tag>, <tag class="attribute">os</tag>, <tag class="attribute">arch</tag>, <tag class="attribute">condition</tag>, etc.</para>
+</warning>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml
new file mode 100644
index 0000000..8ffca0f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.security">
+<refmeta>
+<refentrytitle>profile.security</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.security</refname>
+<refpurpose>Target profile for <tag class="attribute">security</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.security.frag">
+<xsl:param name="profile.security"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml
new file mode 100644
index 0000000..a4317f5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.separator">
+<refmeta>
+<refentrytitle>profile.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.separator</refname>
+<refpurpose>Separator character for compound profile values</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.separator.frag">
+<xsl:param name="profile.separator">;</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Separator character used for compound profile values. See <parameter>profile.arch</parameter></para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml
new file mode 100644
index 0000000..c9fc469
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.status">
+<refmeta>
+<refentrytitle>profile.status</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.status</refname>
+<refpurpose>Target profile for <tag class="attribute">status</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.status.frag">
+<xsl:param name="profile.status"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml
new file mode 100644
index 0000000..39e263b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.userlevel">
+<refmeta>
+<refentrytitle>profile.userlevel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.userlevel</refname>
+<refpurpose>Target profile for <tag class="attribute">userlevel</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.userlevel.frag">
+<xsl:param name="profile.userlevel"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml
new file mode 100644
index 0000000..85f7190
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml
@@ -0,0 +1,41 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.value">
+<refmeta>
+<refentrytitle>profile.value</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.value</refname>
+<refpurpose>Target profile for user-specified attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.value.frag">
+<xsl:param name="profile.value"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When you are using this parameter you must also specify name of
+profiling attribute with parameter
+<parameter>profile.attribute</parameter>.</para>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml
new file mode 100644
index 0000000..c0187f0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.vendor">
+<refmeta>
+<refentrytitle>profile.vendor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.vendor</refname>
+<refpurpose>Target profile for <tag class="attribute">vendor</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.vendor.frag">
+<xsl:param name="profile.vendor"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml
new file mode 100644
index 0000000..e30ffc7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="profile.wordsize">
+<refmeta>
+<refentrytitle>profile.wordsize</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>profile.wordsize</refname>
+<refpurpose>Target profile for <tag class="attribute">wordsize</tag>
+attribute</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="profile.wordsize.frag">
+<xsl:param name="profile.wordsize"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of this parameter specifies profiles which should be
+included in the output. You can specify multiple profiles by
+separating them by semicolon. You can change separator character by
+<parameter>profile.separator</parameter>
+parameter.</para>
+
+<para>This parameter has effect only when you are using profiling
+stylesheets (<filename>profile-docbook.xsl</filename>,
+<filename>profile-chunk.xsl</filename>, …) instead of normal
+ones (<filename>docbook.xsl</filename>,
+<filename>chunk.xsl</filename>, …).</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml
new file mode 100644
index 0000000..7c8a38e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="punct.honorific">
+<refmeta>
+<refentrytitle>punct.honorific</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>punct.honorific</refname>
+<refpurpose>Punctuation after an honorific in a personal name.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="punct.honorific.frag">
+<xsl:param name="punct.honorific">.</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the punctuation that should be added after an
+honorific in a personal name.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml
new file mode 100644
index 0000000..0b43f0d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml
@@ -0,0 +1,86 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.defaultlabel">
+<refmeta>
+<refentrytitle>qanda.defaultlabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">number</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">qanda</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.defaultlabel</refname>
+<refpurpose>Sets the default for defaultlabel on QandASet.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.defaultlabel.frag">
+<xsl:param name="qanda.defaultlabel">number</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If no <literal>defaultlabel</literal> attribute is specified on
+a <tag>qandaset</tag>, this value is used. It is generally one of the legal
+values for the defaultlabel attribute (<literal>none</literal>,
+<literal>number</literal> or
+<literal>qanda</literal>), or one of the additional stylesheet-specific values
+(<literal>qnumber</literal> or <literal>qnumberanda</literal>).
+The default value is 'number'.
+</para>
+<para>The values are rendered as follows:</para>
+<variablelist>
+<varlistentry><term><literal>qanda</literal></term>
+<listitem>
+<para><tag>question</tag>s are labeled "Q:" and
+<tag>answer</tag>s are labeled "A:". </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>number</literal></term>
+<listitem>
+<para>The questions are enumerated and the answers
+are not labeled. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumber</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and answers are not
+labeled.
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>qnumberanda</literal></term>
+<listitem>
+<para>The questions are labeled "Q:" followed by a number, and
+the answers are labeled "A:".
+When sections are numbered, adding a label
+to the number distinguishes the question numbers
+from the section numbers.
+This value is not allowed in the
+<tag class="attribute">defaultlabel</tag> attribute
+of a <tag>qandaset</tag> element.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry><term><literal>none</literal></term>
+<listitem>
+<para>No distinguishing label precedes Questions or Answers.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml
new file mode 100644
index 0000000..9597b71
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.in.toc">
+<refmeta>
+<refentrytitle>qanda.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.in.toc</refname>
+<refpurpose>Should qandaentry questions appear in
+the document table of contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.in.toc.frag"><xsl:param name="qanda.in.toc" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), then the generated table of contents
+for a document will include <tag>qandaset</tag> titles,
+<tag>qandadiv</tag> titles,
+and <tag>question</tag> elements. The default value (zero) excludes
+them from the TOC.
+</para>
+<para>This parameter does not affect any tables of contents
+that may be generated inside a qandaset or qandadiv.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml
new file mode 100644
index 0000000..744c0e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.inherit.numeration">
+<refmeta>
+<refentrytitle>qanda.inherit.numeration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.inherit.numeration</refname>
+<refpurpose>Does enumeration of QandASet components inherit the numeration of parent elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.inherit.numeration.frag">
+<xsl:param name="qanda.inherit.numeration" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, numbered <tag>qandadiv</tag> elements and
+<tag>question</tag> and <tag>answer</tag> inherit the enumeration of
+the ancestors of the <tag>qandaset</tag>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml
new file mode 100644
index 0000000..01bdf5a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.nested.in.toc">
+<refmeta>
+<refentrytitle>qanda.nested.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.nested.in.toc</refname>
+<refpurpose>Should nested answer/qandaentry instances appear in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.nested.in.toc.frag">
+<xsl:param name="qanda.nested.in.toc" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, instances of <tag>qandaentry</tag>
+that are children of <tag>answer</tag> elements are shown in
+the TOC.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml
new file mode 100644
index 0000000..edaecc9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.title.level1.properties">
+<refmeta>
+<refentrytitle>qanda.title.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level1.properties</refname>
+<refpurpose>Properties for level-1 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.title.level1.properties.frag">
+<xsl:attribute-set name="qanda.title.level1.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 2.0736"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-1 qanda set titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml
new file mode 100644
index 0000000..ca48ca1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.title.level2.properties">
+<refmeta>
+<refentrytitle>qanda.title.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level2.properties</refname>
+<refpurpose>Properties for level-2 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.title.level2.properties.frag">
+<xsl:attribute-set name="qanda.title.level2.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.728"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-2 qanda set titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml
new file mode 100644
index 0000000..c9c098e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.title.level3.properties">
+<refmeta>
+<refentrytitle>qanda.title.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level3.properties</refname>
+<refpurpose>Properties for level-3 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.title.level3.properties.frag">
+<xsl:attribute-set name="qanda.title.level3.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.44"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-3 qanda set titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml
new file mode 100644
index 0000000..4344e76
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.title.level4.properties">
+<refmeta>
+<refentrytitle>qanda.title.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level4.properties</refname>
+<refpurpose>Properties for level-4 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.title.level4.properties.frag">
+<xsl:attribute-set name="qanda.title.level4.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-4 qanda set titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml
new file mode 100644
index 0000000..31b0d20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.title.level5.properties">
+<refmeta>
+<refentrytitle>qanda.title.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level5.properties</refname>
+<refpurpose>Properties for level-5 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.title.level5.properties.frag">
+<xsl:attribute-set name="qanda.title.level5.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-5 qanda set titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml
new file mode 100644
index 0000000..920c7e9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.title.level6.properties">
+<refmeta>
+<refentrytitle>qanda.title.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.level6.properties</refname>
+<refpurpose>Properties for level-6 qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.title.level6.properties.frag">
+<xsl:attribute-set name="qanda.title.level6.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-6 qanda set titles.
+This property set is actually
+used for all titles below level 5.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml
new file mode 100644
index 0000000..7c3c2a1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qanda.title.properties">
+<refmeta>
+<refentrytitle>qanda.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qanda.title.properties</refname>
+<refpurpose>Properties for qanda set titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qanda.title.properties.frag">
+<xsl:attribute-set name="qanda.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <!-- font size is calculated dynamically by qanda.heading template -->
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all qanda set titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml
new file mode 100644
index 0000000..596350a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="qandadiv.autolabel">
+<refmeta>
+<refentrytitle>qandadiv.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>qandadiv.autolabel</refname>
+<refpurpose>Are divisions in QAndASets enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="qandadiv.autolabel.frag"><xsl:param name="qandadiv.autolabel" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, unlabeled qandadivs will be enumerated.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml
new file mode 100644
index 0000000..8f9b52a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refclass.suppress">
+<refmeta>
+<refentrytitle>refclass.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refclass.suppress</refname>
+<refpurpose>Suppress display of refclass contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refclass.suppress.frag">
+<xsl:param name="refclass.suppress" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refclass.suppress</parameter> is
+non-zero, then display of <tag>refclass</tag> contents is
+suppressed in output.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml
new file mode 100644
index 0000000..11de660
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.date.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.date.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.date.profile.enabled</refname>
+<refpurpose>Enable refentry "date" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.date.profile.enabled.frag">
+<xsl:param name="refentry.date.profile.enabled">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.date.profile.enabled</parameter> is non-zero, then
+during <tag>refentry</tag> metadata gathering, the info profile
+specified by the customizable
+<parameter>refentry.date.profile</parameter> parameter is used.</para>
+
+<para>If instead the value of
+<parameter>refentry.date.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "date" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "date" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.date.profile.enabled</parameter> and adjusting the
+value of <parameter>refentry.date.profile</parameter> to cause correct
+data to be gathered. </para>
+
+<para>Note that the terms "source" and "date" have special meanings in
+this context. For details, see the documentation for the
+<parameter>refentry.date.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml
new file mode 100644
index 0000000..1220ed0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.date.profile">
+<refmeta>
+<refentrytitle>refentry.date.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.date.profile</refname>
+<refpurpose>Specifies profile for refentry "date" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.date.profile.frag">
+<xsl:param name="refentry.date.profile">
+ (($info[//date])[last()]/date)[1]|
+ (($info[//pubdate])[last()]/pubdate)[1]
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.date.profile</parameter> is a
+string representing an XPath expression. It is evaluated at run-time
+and used only if <parameter>refentry.date.profile.enabled</parameter>
+is non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering
+logic "hard coded" into the stylesheets is used.</para>
+
+<para> The <literal>man(7)</literal> man page describes this content
+as "the date of the last revision". In man pages, it is the content
+that is usually displayed in the center footer.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml
new file mode 100644
index 0000000..f59e6d5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.generate.name">
+<refmeta>
+<refentrytitle>refentry.generate.name</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.name</refname>
+<refpurpose>Output NAME header before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.generate.name.frag">
+<xsl:param name="refentry.generate.name" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a "NAME" section title is output before the list
+of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.title</parameter> are mutually
+exclusive. This means that if you change this parameter to zero, you
+should set <parameter>refentry.generate.title</parameter> to non-zero unless
+you want get quite strange output.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml
new file mode 100644
index 0000000..8029b20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.generate.title">
+<refmeta>
+<refentrytitle>refentry.generate.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.generate.title</refname>
+<refpurpose>Output title before <tag>refname</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.generate.title.frag">
+<xsl:param name="refentry.generate.title" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the reference page title or first name is
+output before the list of <tag>refname</tag>s. This parameter and
+<parameter>refentry.generate.name</parameter> are mutually exclusive.
+This means that if you change this parameter to non-zero, you
+should set <parameter>refentry.generate.name</parameter> to zero unless
+you want get quite strange output.</para>
+
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml
new file mode 100644
index 0000000..6362785
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml
@@ -0,0 +1,48 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.manual.fallback.profile">
+<refmeta>
+<refentrytitle>refentry.manual.fallback.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.fallback.profile</refname>
+<refpurpose>Specifies profile of "fallback" for refentry "manual" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.manual.fallback.profile.frag">
+<xsl:param name="refentry.manual.fallback.profile">
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>refentry.manual.fallback.profile</parameter> is a string
+representing an XPath expression. It is evaluated at run-time and
+used only if no "manual" data can be found by other means (that is,
+either using the <tag>refentry</tag> metadata-gathering logic "hard
+coded" in the stylesheets, or the value of
+<parameter>refentry.manual.profile</parameter>, if it is
+enabled).</para>
+
+<important>
+<para>Depending on which XSLT engine you run, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>refentry.manual.fallback.profile</parameter> at
+run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
+XSLT engine that supports <function>dyn:evaluate</function> -- you
+must manually disable fallback processing by setting an empty value
+for the <parameter>refentry.manual.fallback.profile</parameter>
+parameter.</para>
+</important>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml
new file mode 100644
index 0000000..a3b7b54
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml
@@ -0,0 +1,47 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.manual.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.manual.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.profile.enabled</refname>
+<refpurpose>Enable refentry "manual" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.manual.profile.enabled.frag">
+<xsl:param name="refentry.manual.profile.enabled">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.manual.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.manual.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.manual.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "manual" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "manual" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.manual.profile.enabled</parameter> and adjusting
+the value of <parameter>refentry.manual.profile</parameter> to cause
+correct data to be gathered. </para>
+
+<para>Note that the term "manual" has a special meanings in this
+context. For details, see the documentation for the
+<parameter>refentry.manual.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml
new file mode 100644
index 0000000..214b170
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml
@@ -0,0 +1,72 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.manual.profile">
+<refmeta>
+<refentrytitle>refentry.manual.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.manual.profile</refname>
+<refpurpose>Specifies profile for refentry "manual" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.manual.profile.frag">
+<xsl:param name="refentry.manual.profile">
+ (($info[//title])[last()]/title)[1]|
+ ../title/node()
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.manual.profile</parameter> is
+a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.manual.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>In man pages, this content is usually displayed in the middle of
+the header of the page. The <literal>man(7)</literal> man page
+describes this as "the title of the manual (e.g., <citetitle>Linux
+Programmer's Manual</citetitle>)". Here are some examples from
+existing man pages:
+<itemizedlist>
+ <listitem>
+ <para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+ </listitem>
+</itemizedlist>
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml
new file mode 100644
index 0000000..0ed29f6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.meta.get.quietly">
+<refmeta>
+<refentrytitle>refentry.meta.get.quietly</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.meta.get.quietly</refname>
+<refpurpose>Suppress notes and warnings when gathering refentry metadata?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.meta.get.quietly.frag">
+<xsl:param name="refentry.meta.get.quietly" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If zero (the default), notes and warnings about “missing†markup
+are generated during gathering of refentry metadata. If non-zero, the
+metadata is gathered “quietly†-- that is, the notes and warnings are
+suppressed.</para>
+
+<tip>
+ <para>If you are processing a large amount of <tag>refentry</tag>
+ content, you may be able to speed up processing significantly by
+ setting a non-zero value for
+ <parameter>refentry.meta.get.quietly</parameter>.</para>
+</tip>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml
new file mode 100644
index 0000000..42b8466
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.pagebreak">
+<refmeta>
+<refentrytitle>refentry.pagebreak</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.pagebreak</refname>
+<refpurpose>Start each refentry on a new page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.pagebreak.frag"><xsl:param name="refentry.pagebreak" select="1"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), each <tag>refentry</tag>
+element will start on a new page. If zero, a page
+break will not be generated between <tag>refentry</tag> elements.
+The exception is when the <tag>refentry</tag> elements are children of
+a <tag>part</tag> element, in which case the page breaks are always
+retained. That is because a <tag>part</tag> element does not generate
+a page-sequence for its children, so each <tag>refentry</tag> must
+start its own page-sequence.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml
new file mode 100644
index 0000000..a7eeb84
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.separator">
+<refmeta>
+<refentrytitle>refentry.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.separator</refname>
+<refpurpose>Generate a separator between consecutive RefEntry elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.separator.frag">
+<xsl:param name="refentry.separator" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true, a separator will be generated between consecutive
+reference pages.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml
new file mode 100644
index 0000000..1761378
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml
@@ -0,0 +1,49 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.source.fallback.profile">
+<refmeta>
+<refentrytitle>refentry.source.fallback.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.fallback.profile</refname>
+<refpurpose>Specifies profile of "fallback" for refentry "source" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.source.fallback.profile.frag">
+<xsl:param name="refentry.source.fallback.profile">
+refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of
+<parameter>refentry.source.fallback.profile</parameter> is a string
+representing an XPath expression. It is evaluated at run-time and used
+only if no "source" data can be found by other means (that is, either
+using the <tag>refentry</tag> metadata-gathering logic "hard coded" in
+the stylesheets, or the value of the
+<parameter>refentry.source.name.profile</parameter> and
+<parameter>refentry.version.profile</parameter> parameters, if those
+are enabled).</para>
+
+<important>
+<para>Depending on which XSLT engine you run, either the EXSLT
+<function>dyn:evaluate</function> extension function (for xsltproc or
+Xalan) or <function>saxon:evaluate</function> extension function (for
+Saxon) are used to dynamically evaluate the value of
+<parameter>refentry.source.fallback.profile</parameter> at
+run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
+XSLT engine that supports <function>dyn:evaluate</function> -- you
+must manually disable fallback processing by setting an empty value
+for the <parameter>refentry.source.fallback.profile</parameter>
+parameter.</para>
+</important>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml
new file mode 100644
index 0000000..f87ec0f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml
@@ -0,0 +1,48 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.source.name.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.source.name.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.profile.enabled</refname>
+<refpurpose>Enable refentry "source name" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.source.name.profile.enabled.frag">
+<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.source.name.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.source.name.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.source.name.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "source name" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "source name" data to
+show up in your output, then consider setting a non-zero value for
+<parameter>refentry.source.name.profile.enabled</parameter> and
+adjusting the value of
+<parameter>refentry.source.name.profile</parameter> to cause correct
+data to be gathered. </para>
+
+<para>Note that the terms "source" and "source name" have special
+meanings in this context. For details, see the documentation for the
+<parameter>refentry.source.name.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml
new file mode 100644
index 0000000..c9a1012
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml
@@ -0,0 +1,89 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.source.name.profile">
+<refmeta>
+<refentrytitle>refentry.source.name.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.profile</refname>
+<refpurpose>Specifies profile for refentry "source name" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.source.name.profile.frag">
+<xsl:param name="refentry.source.name.profile">
+ (($info[//productname])[last()]/productname)[1]|
+ (($info[//corpname])[last()]/corpname)[1]|
+ (($info[//corpcredit])[last()]/corpcredit)[1]|
+ (($info[//corpauthor])[last()]/corpauthor)[1]|
+ (($info[//orgname])[last()]/orgname)[1]|
+ (($info[//publishername])[last()]/publishername)[1]
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.source.name.profile</parameter>
+is a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.source.name.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>A "source name" is one part of a (potentially) two-part
+<replaceable>Name</replaceable> <replaceable>Version</replaceable>
+"source" field. In man pages, it is usually displayed in the left
+footer of the page. It typically indicates the software system or
+product that the item documented in the man page belongs to. The
+<literal>man(7)</literal> man page describes it as "the source of
+the command", and provides the following examples:
+<itemizedlist>
+ <listitem>
+ <para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+ </listitem>
+ <listitem>
+ <para>For system calls, use the version of the kernel that you
+ are currently looking at: Linux 0.99.11.</para>
+ </listitem>
+ <listitem>
+ <para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+ </listitem>
+</itemizedlist>
+</para>
+
+<para>In practice, there are many pages that simply have a Version
+number in the "source" field. So, it looks like what we have is a
+two-part field,
+<replaceable>Name</replaceable> <replaceable>Version</replaceable>,
+where:
+<variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+ <para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+ <para>version number</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+Each part is optional. If the <replaceable>Name</replaceable> is a
+product name, then the <replaceable>Version</replaceable> is probably
+the version of the product. Or there may be no
+<replaceable>Name</replaceable>, in which case, if there is a
+<replaceable>Version</replaceable>, it is probably the version
+of the item itself, not the product it is part of. Or, if the
+<replaceable>Name</replaceable> is an organization name, then there
+probably will be no <replaceable>Version</replaceable>.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml
new file mode 100644
index 0000000..b29127e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.source.name.suppress">
+<refmeta>
+<refentrytitle>refentry.source.name.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.source.name.suppress</refname>
+<refpurpose>Suppress "name" part of refentry "source" contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.source.name.suppress.frag">
+<xsl:param name="refentry.source.name.suppress">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.source.name.suppress</parameter> is non-zero, then
+during <tag>refentry</tag> metadata gathering, no "source name" data
+is added to the <tag>refentry</tag> "source" contents. Instead (unless
+<parameter>refentry.version.suppress</parameter> is also non-zero),
+only "version" data is added to the "source" contents.</para>
+
+<para>If you find that the <tag>refentry</tag> metadata gathering
+mechanism is causing unwanted "source name" data to show up in your
+output -- for example, in the footer (or possibly header) of a man
+page -- then you might consider setting a non-zero value for
+<parameter>refentry.source.name.suppress</parameter>.</para>
+
+<para>Note that the terms "source", "source name", and "version" have
+special meanings in this context. For details, see the documentation
+for the <parameter>refentry.source.name.profile</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml
new file mode 100644
index 0000000..5bb1f25
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml
@@ -0,0 +1,59 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.title.properties">
+<refmeta>
+<refentrytitle>refentry.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.title.properties</refname>
+<refpurpose>Title properties for a refentry title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.title.properties.frag">
+<xsl:attribute-set name="refentry.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">18pt</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute>
+ <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Formatting properties applied to the title generated for the
+<tag>refnamediv</tag> part of output for
+<tag>refentry</tag> when the value of the
+<parameter>refentry.generate.title</parameter> parameter is
+non-zero. The font size is supplied by the appropriate <parameter>section.level<replaceable>X</replaceable>.title.properties</parameter>
+attribute-set, computed from the location of the
+<tag>refentry</tag> in the section hierarchy.</para>
+
+<note>
+ <para>This parameter has no effect on the the title generated for
+ the <tag>refnamediv</tag> part of output for
+ <tag>refentry</tag> when the value of the
+ <parameter>refentry.generate.name</parameter> parameter is
+ non-zero. By default, that title is formatted with the same
+ properties as the titles for all other first-level children of
+ <tag>refentry</tag>.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml
new file mode 100644
index 0000000..3b95bbe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml
@@ -0,0 +1,47 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.version.profile.enabled">
+<refmeta>
+<refentrytitle>refentry.version.profile.enabled</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.profile.enabled</refname>
+<refpurpose>Enable refentry "version" profiling?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.version.profile.enabled.frag">
+<xsl:param name="refentry.version.profile.enabled">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of
+<parameter>refentry.version.profile.enabled</parameter> is
+non-zero, then during <tag>refentry</tag> metadata gathering, the info
+profile specified by the customizable
+<parameter>refentry.version.profile</parameter> parameter is
+used.</para>
+
+<para>If instead the value of
+<parameter>refentry.version.profile.enabled</parameter> is zero (the
+default), then "hard coded" logic within the DocBook XSL stylesheets
+is used for gathering <tag>refentry</tag> "version" data.</para>
+
+<para>If you find that the default <tag>refentry</tag>
+metadata-gathering behavior is causing incorrect "version" data to show
+up in your output, then consider setting a non-zero value for
+<parameter>refentry.version.profile.enabled</parameter> and adjusting
+the value of <parameter>refentry.version.profile</parameter> to cause
+correct data to be gathered. </para>
+
+<para>Note that the terms "source" and "version" have special
+meanings in this context. For details, see the documentation for the
+<parameter>refentry.version.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml
new file mode 100644
index 0000000..ff85825
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml
@@ -0,0 +1,41 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.version.profile">
+<refmeta>
+<refentrytitle>refentry.version.profile</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.profile</refname>
+<refpurpose>Specifies profile for refentry "version" data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.version.profile.frag">
+<xsl:param name="refentry.version.profile">
+ (($info[//productnumber])[last()]/productnumber)[1]|
+ (($info[//edition])[last()]/edition)[1]|
+ (($info[//releaseinfo])[last()]/releaseinfo)[1]
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The value of <parameter>refentry.version.profile</parameter> is
+a string representing an XPath expression. It is evaluated at
+run-time and used only if
+<parameter>refentry.version.profile.enabled</parameter> is
+non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic
+"hard coded" into the stylesheets is used.</para>
+
+<para>A "source.name" is one part of a (potentially) two-part
+<replaceable>Name</replaceable> <replaceable>Version</replaceable>
+"source" field. For more details, see the documentation for the
+<parameter>refentry.source.name.profile</parameter> parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml
new file mode 100644
index 0000000..b701ad8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.version.suppress">
+<refmeta>
+<refentrytitle>refentry.version.suppress</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.version.suppress</refname>
+<refpurpose>Suppress "version" part of refentry "source" contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.version.suppress.frag">
+<xsl:param name="refentry.version.suppress">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the value of <parameter>refentry.version.suppress</parameter>
+is non-zero, then during <tag>refentry</tag> metadata gathering, no
+"version" data is added to the <tag>refentry</tag> "source"
+contents. Instead (unless
+<parameter>refentry.source.name.suppress</parameter> is also
+non-zero), only "source name" data is added to the "source"
+contents.</para>
+
+<para>If you find that the <tag>refentry</tag> metadata gathering
+mechanism is causing unwanted "version" data to show up in your output
+-- for example, in the footer (or possibly header) of a man page --
+then you might consider setting a non-zero value for
+<parameter>refentry.version.suppress</parameter>.</para>
+
+<para>Note that the terms "source", "source name", and "version" have
+special meanings in this context. For details, see the documentation
+for the <parameter>refentry.source.name.profile</parameter>
+parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml
new file mode 100644
index 0000000..56b93b7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="refentry.xref.manvolnum">
+<refmeta>
+<refentrytitle>refentry.xref.manvolnum</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>refentry.xref.manvolnum</refname>
+<refpurpose>Output <tag>manvolnum</tag> as part of
+<tag>refentry</tag> cross-reference?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="refentry.xref.manvolnum.frag">
+<xsl:param name="refentry.xref.manvolnum" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>if non-zero, the <tag>manvolnum</tag> is used when cross-referencing
+<tag>refentry</tag>s, either with <tag>xref</tag>
+or <tag>citerefentry</tag>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml
new file mode 100644
index 0000000..1a9dc5b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml
@@ -0,0 +1,67 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="reference.autolabel">
+<refmeta>
+<refentrytitle>reference.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">0<alt>none</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>reference.autolabel</refname>
+<refpurpose>Specifies the labeling format for Reference titles</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="reference.autolabel.frag">
+ <xsl:param name="reference.autolabel">I</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>If non-zero, references will be numbered using the parameter
+ value as the number format if the value matches one of the
+ following:
+</para>
+<variablelist>
+ <varlistentry>
+ <term>1 or arabic</term>
+ <listitem>
+ <para>Arabic numeration (1, 2, 3 ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A or upperalpha</term>
+ <listitem>
+ <para>Uppercase letter numeration (A, B, C ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a or loweralpha</term>
+ <listitem>
+ <para>Lowercase letter numeration (a, b, c ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>I or upperroman</term>
+ <listitem>
+ <para>Uppercase roman numeration (I, II, III ...).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i or lowerroman</term>
+ <listitem>
+ <para>Lowercase roman letter numeration (i, ii, iii ...).</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+<para>Any non-zero value other than the above will generate
+the default number format (upperroman).
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml
new file mode 100644
index 0000000..b29abba
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="region.after.extent">
+<refmeta>
+<refentrytitle>region.after.extent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>region.after.extent</refname>
+<refpurpose>Specifies the height of the footer.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="region.after.extent.frag">
+<xsl:param name="region.after.extent">0.4in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The region after extent is the height of the area where footers
+are printed.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml
new file mode 100644
index 0000000..c62cc40
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="region.before.extent">
+<refmeta>
+<refentrytitle>region.before.extent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>region.before.extent</refname>
+<refpurpose>Specifies the height of the header</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="region.before.extent.frag">
+<xsl:param name="region.before.extent">0.4in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The region before extent is the height of the area where headers
+are printed.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml
new file mode 100644
index 0000000..49c4037
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="revhistory.table.cell.properties">
+<refmeta>
+<refentrytitle>revhistory.table.cell.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.table.cell.properties</refname>
+<refpurpose>The properties of table cells used for formatting revhistory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="revhistory.table.cell.properties.frag">
+<xsl:attribute-set name="revhistory.table.cell.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of individual cells in revhistory table.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml
new file mode 100644
index 0000000..43116d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="revhistory.table.properties">
+<refmeta>
+<refentrytitle>revhistory.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.table.properties</refname>
+<refpurpose>The properties of table used for formatting revhistory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="revhistory.table.properties.frag">
+<xsl:attribute-set name="revhistory.table.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of revhistory table.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml
new file mode 100644
index 0000000..f97d646
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="revhistory.title.properties">
+<refmeta>
+<refentrytitle>revhistory.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revhistory.title.properties</refname>
+<refpurpose>The properties of revhistory title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="revhistory.title.properties.frag">
+<xsl:attribute-set name="revhistory.title.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set defines appearance of revhistory title.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml
new file mode 100644
index 0000000..ae5ca5b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="root.filename">
+<refmeta>
+<refentrytitle>root.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root.filename</refname>
+<refpurpose>Identifies the name of the root HTML file when chunking</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="root.filename.frag">
+<xsl:param name="root.filename">index</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>root.filename</parameter> is the base filename for
+the chunk created for the root of each document processed.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml
new file mode 100644
index 0000000..26c9951
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="root.properties">
+<refmeta>
+<refentrytitle>root.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root.properties</refname>
+<refpurpose>The properties of the fo:root element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="root.properties.frag">
+<xsl:attribute-set name="root.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$body.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.size"/>
+ </xsl:attribute>
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$alignment"/>
+ </xsl:attribute>
+ <xsl:attribute name="line-height">
+ <xsl:value-of select="$line-height"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-selection-strategy">character-by-character</xsl:attribute>
+ <xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute>
+ <xsl:attribute name="writing-mode">
+ <xsl:value-of select="$direction.mode"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This property set is used on the <tag>fo:root</tag> element of
+an FO file. It defines a set of default, global parameters.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml
new file mode 100644
index 0000000..a0715af
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="rootid">
+<refmeta>
+<refentrytitle>rootid</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>rootid</refname>
+<refpurpose>Specify the root element to format</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="rootid.frag">
+<xsl:param name="rootid" ></xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>rootid</parameter> is not empty, it must be the
+value of an ID that occurs in the document being formatted. The entire
+document will be loaded and parsed, but formatting will begin at the
+element identified, rather than at the root. For example, this allows
+you to process only <tag>chapter</tag> 4 of a <tag>book</tag>.</para>
+<para>Because the entire document is available to the processor, automatic
+numbering, cross references, and other dependencies are correctly
+resolved.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml
new file mode 100644
index 0000000..d151e8b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="runinhead.default.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.default.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.default.title.end.punct</refname>
+<refpurpose>Default punctuation character on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="runinhead.default.title.end.punct.frag"><xsl:param name="runinhead.default.title.end.punct">.</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, For a <tag>formalpara</tag>, use the specified
+string as the separator between the title and following text. The period is the default value.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml
new file mode 100644
index 0000000..025aeed
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="runinhead.title.end.punct">
+<refmeta>
+<refentrytitle>runinhead.title.end.punct</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>runinhead.title.end.punct</refname>
+<refpurpose>Characters that count as punctuation on a run-in-head</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="runinhead.title.end.punct.frag">
+<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specify which characters are to be counted as punctuation. These
+characters are checked for a match with the last character of the
+title. If no match is found, the
+<parameter>runinhead.default.title.end.punct</parameter> contents are
+inserted. This is to avoid duplicated punctuation in the output.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml
new file mode 100644
index 0000000..ee98592
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="running.foot.properties">
+<refmeta>
+<refentrytitle>running.foot.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>running.foot.properties</refname>
+<refpurpose>Specifies properties for running foot on each slide</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="running.foot.properties.frag">
+ <xsl:attribute-set name="running.foot.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">14pt</xsl:attribute>
+ <xsl:attribute name="color">#9F9F9F</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to the
+running foot area of each slide.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml
new file mode 100644
index 0000000..d569b12
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="sans.font.family">
+<refmeta>
+<refentrytitle>sans.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sans.font.family</refname>
+<refpurpose>The default sans-serif font family</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="sans.font.family.frag">
+<xsl:param name="sans.font.family" >sans-serif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The default sans-serif font family. At the present, this isn't
+actually used by the stylesheets.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml
new file mode 100644
index 0000000..e08fcdb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="saxon.callouts">
+<refmeta>
+<refentrytitle>saxon.callouts</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>saxon.callouts</refname>
+<refpurpose>Enable the callout extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="saxon.callouts.frag">
+<xsl:param name="saxon.callouts" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The callouts extension processes <tag>areaset</tag>
+elements in <tag>ProgramListingCO</tag> and other text-based
+callout elements.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml
new file mode 100644
index 0000000..bd8bcac
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="saxon.character.representation">
+<refmeta>
+<refentrytitle>saxon.character.representation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>saxon.character.representation</refname>
+<refpurpose>Saxon character representation used in generated HTML pages</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="saxon.character.representation.frag"><xsl:param name="saxon.character.representation" select="'entity;decimal'"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter has effect only when Saxon 6 is used (version 6.4.2 or later).
+It sets the character representation in files generated by the chunking stylesheets.
+If you want to suppress entity references for characters with direct representations in
+<parameter>chunker.output.encoding</parameter>, set the parameter value to <literal>native</literal>.
+</para>
+
+<para> For more information, see <link
+role="tcg" xlink:href="OutputEncoding.html#SaxonCharacter">Saxon output character representation</link>.</para>
+
+<note>
+<para>This parameter is documented here, but the declaration is actually
+in the <filename>chunker.xsl</filename> stylesheet module.</para>
+</note>
+
+</refsection>
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml
new file mode 100644
index 0000000..451028b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="saxon.linenumbering">
+<refmeta>
+<refentrytitle>saxon.linenumbering</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>saxon.linenumbering</refname>
+<refpurpose>Enable the line numbering extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="saxon.linenumbering.frag">
+<xsl:param name="saxon.linenumbering" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, verbatim environments (elements that have the
+format='linespecific' notation attribute: <tag>address</tag>,
+<tag>literallayout</tag>, <tag>programlisting</tag>,
+<tag>screen</tag>, <tag>synopsis</tag>) that specify line numbering
+will have line numbers.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml
new file mode 100644
index 0000000..e9d9674
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="saxon.tablecolumns">
+<refmeta>
+<refentrytitle>saxon.tablecolumns</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>saxon.tablecolumns</refname>
+<refpurpose>Enable the table columns extension function</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="saxon.tablecolumns.frag">
+<xsl:param name="saxon.tablecolumns" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The table columns extension function adjusts the widths of table
+columns in the HTML result to more accurately reflect the specifications
+in the CALS table.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml
new file mode 100644
index 0000000..9cb92af
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="script.dir">
+<refmeta>
+<refentrytitle>script.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>script.dir</refname>
+<refpurpose>Script directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="script.dir.frag">
+<xsl:param name="script.dir"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the JavaScript source directory for the slides.
+This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>script-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the JavaScript files.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml
new file mode 100644
index 0000000..e588e00
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.autolabel.max.depth">
+<refmeta>
+<refentrytitle>section.autolabel.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel.max.depth</refname>
+<refpurpose>The deepest level of sections that are numbered.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.autolabel.max.depth.frag">
+<xsl:param name="section.autolabel.max.depth">8</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When section numbering is turned on by the
+<parameter>section.autolabel</parameter> parameter, then this
+parameter controls the depth of <tag>section</tag> nesting that is
+numbered. Sections nested to a level deeper than this value will not
+be numbered.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml
new file mode 100644
index 0000000..85eede6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.autolabel">
+<refmeta>
+<refentrytitle>section.autolabel</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.autolabel</refname>
+<refpurpose>Are sections enumerated?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.autolabel.frag"><xsl:param name="section.autolabel" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If true (non-zero), unlabeled sections will be enumerated.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml
new file mode 100644
index 0000000..a6c4059
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml
@@ -0,0 +1,62 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.container.element">
+<refmeta>
+<refentrytitle>section.container.element</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">block</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">wrapper</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.container.element</refname>
+<refpurpose>Select XSL-FO element name to contain sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.container.element.frag">
+<xsl:param name="section.container.element">block</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the element name for outer container of
+each section. The choices are <literal>block</literal> (default)
+or <literal>wrapper</literal>.
+The <literal>fo:</literal> namespace prefix is added
+by the stylesheet to form the full element name.
+</para>
+
+<para>This element receives the section <literal>id</literal>
+attribute and the appropriate section level attribute-set.
+</para>
+
+<para>Changing this parameter to <literal>wrapper</literal>
+is only necessary when producing multi-column output
+that contains page-wide spans. Using <literal>fo:wrapper</literal>
+avoids the nesting of <literal>fo:block</literal>
+elements that prevents spans from working (the standard says
+a span must be on a block that is a direct child of
+<literal>fo:flow</literal>).
+</para>
+
+<para>If set to <literal>wrapper</literal>, the
+section attribute-sets only support properties
+that are inheritable. That's because there is no
+block to apply them to. Properties such as
+font-family are inheritable, but properties such as
+border are not.
+</para>
+
+<para>Only some XSL-FO processors need to use this parameter.
+The Antenna House processor, for example, will handle
+spans in nested blocks without changing the element name.
+The RenderX XEP product and FOP follow the XSL-FO standard
+and need to use <literal>wrapper</literal>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml
new file mode 100644
index 0000000..505d472
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.label.includes.component.label">
+<refmeta>
+<refentrytitle>section.label.includes.component.label</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.label.includes.component.label</refname>
+<refpurpose>Do section labels include the component label?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.label.includes.component.label.frag"><xsl:param name="section.label.includes.component.label" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, section labels are prefixed with the label of the
+component that contains them.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml
new file mode 100644
index 0000000..4aa70b0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.level1.properties">
+<refmeta>
+<refentrytitle>section.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level1.properties</refname>
+<refpurpose>Properties for level-1 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.level1.properties.frag">
+<xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-1 section, and therefore apply to
+the whole section. This includes <tag>sect1</tag>
+elements and <tag>section</tag> elements at level 1.
+</para>
+
+<para>For example, you could start each level-1 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level1.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml
new file mode 100644
index 0000000..5dd76e9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.level2.properties">
+<refmeta>
+<refentrytitle>section.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level2.properties</refname>
+<refpurpose>Properties for level-2 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.level2.properties.frag">
+<xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-2 section, and therefore apply to
+the whole section. This includes <tag>sect2</tag>
+elements and <tag>section</tag> elements at level 2.
+</para>
+
+<para>For example, you could start each level-2 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level2.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml
new file mode 100644
index 0000000..0bcd696
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.level3.properties">
+<refmeta>
+<refentrytitle>section.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level3.properties</refname>
+<refpurpose>Properties for level-3 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.level3.properties.frag">
+<xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-3 section, and therefore apply to
+the whole section. This includes <tag>sect3</tag>
+elements and <tag>section</tag> elements at level 3.
+</para>
+
+<para>For example, you could start each level-3 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level3.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml
new file mode 100644
index 0000000..1408851
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.level4.properties">
+<refmeta>
+<refentrytitle>section.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level4.properties</refname>
+<refpurpose>Properties for level-4 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.level4.properties.frag">
+<xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-4 section, and therefore apply to
+the whole section. This includes <tag>sect4</tag>
+elements and <tag>section</tag> elements at level 4.
+</para>
+
+<para>For example, you could start each level-4 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level4.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml
new file mode 100644
index 0000000..9093b94
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.level5.properties">
+<refmeta>
+<refentrytitle>section.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level5.properties</refname>
+<refpurpose>Properties for level-5 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.level5.properties.frag">
+<xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level-5 section, and therefore apply to
+the whole section. This includes <tag>sect5</tag>
+elements and <tag>section</tag> elements at level 5.
+</para>
+
+<para>For example, you could start each level-5 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level5.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml
new file mode 100644
index 0000000..dda7937
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml
@@ -0,0 +1,43 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.level6.properties">
+<refmeta>
+<refentrytitle>section.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.level6.properties</refname>
+<refpurpose>Properties for level-6 sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.level6.properties.frag">
+<xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of a level 6 or lower section, and therefore apply to
+the whole section. This includes
+<tag>section</tag> elements at level 6 and lower.
+</para>
+
+<para>For example, you could start each level-6 section on
+a new page by using:</para>
+<programlisting>&lt;xsl:attribute-set name="section.level6.properties"&gt;
+ &lt;xsl:attribute name="break-before"&gt;page&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+
+<para>This attribute set inherits attributes from the
+general <tag>section.properties</tag> attribute set.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml
new file mode 100644
index 0000000..06acc31
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.properties">
+<refmeta>
+<refentrytitle>section.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.properties</refname>
+<refpurpose>Properties for all section levels</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.properties.frag">
+<xsl:attribute-set name="section.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties that apply to the containing
+block of all section levels, and therefore apply to
+the whole section.
+This attribute set is inherited by the
+more specific attribute sets such as
+<tag>section.level1.properties</tag>.
+The default is empty.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml
new file mode 100644
index 0000000..91c63ed
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.title.level1.properties">
+<refmeta>
+<refentrytitle>section.title.level1.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level1.properties</refname>
+<refpurpose>Properties for level-1 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.title.level1.properties.frag">
+<xsl:attribute-set name="section.title.level1.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 2.0736"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-1 section titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml
new file mode 100644
index 0000000..a25648a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml
@@ -0,0 +1,33 @@
+
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.title.level2.properties">
+<refmeta>
+<refentrytitle>section.title.level2.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level2.properties</refname>
+<refpurpose>Properties for level-2 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.title.level2.properties.frag">
+<xsl:attribute-set name="section.title.level2.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.728"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-2 section titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml
new file mode 100644
index 0000000..a009a6e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.title.level3.properties">
+<refmeta>
+<refentrytitle>section.title.level3.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level3.properties</refname>
+<refpurpose>Properties for level-3 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.title.level3.properties.frag">
+<xsl:attribute-set name="section.title.level3.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.44"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-3 section titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml
new file mode 100644
index 0000000..00d4398
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.title.level4.properties">
+<refmeta>
+<refentrytitle>section.title.level4.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level4.properties</refname>
+<refpurpose>Properties for level-4 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.title.level4.properties.frag">
+<xsl:attribute-set name="section.title.level4.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-4 section titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml
new file mode 100644
index 0000000..c25b5ef
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.title.level5.properties">
+<refmeta>
+<refentrytitle>section.title.level5.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level5.properties</refname>
+<refpurpose>Properties for level-5 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.title.level5.properties.frag">
+<xsl:attribute-set name="section.title.level5.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-5 section titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml
new file mode 100644
index 0000000..a2a0feb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.title.level6.properties">
+<refmeta>
+<refentrytitle>section.title.level6.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.level6.properties</refname>
+<refpurpose>Properties for level-6 section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.title.level6.properties.frag">
+<xsl:attribute-set name="section.title.level6.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties of level-6 section titles. This property set is actually
+used for all titles below level 5.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml
new file mode 100644
index 0000000..ab849af
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="section.title.properties">
+<refmeta>
+<refentrytitle>section.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>section.title.properties</refname>
+<refpurpose>Properties for section titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="section.title.properties.frag">
+<xsl:attribute-set name="section.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <!-- font size is calculated dynamically by section.heading template -->
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The properties common to all section titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml
new file mode 100644
index 0000000..fb2c236
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="segmentedlist.as.table">
+<refmeta>
+<refentrytitle>segmentedlist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>segmentedlist.as.table</refname>
+<refpurpose>Format segmented lists as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="segmentedlist.as.table.frag">
+<xsl:param name="segmentedlist.as.table" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>segmentedlist</tag>s will be formatted as
+tables.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml
new file mode 100644
index 0000000..293827d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="sequential.links">
+<refmeta>
+<refentrytitle>sequential.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sequential.links</refname>
+<refpurpose>Make sequentional links?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="sequential.links.frag">
+<xsl:param name="sequential.links" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml
new file mode 100644
index 0000000..0907806
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="shade.verbatim.style">
+<refmeta>
+<refentrytitle>shade.verbatim.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim.style</refname>
+<refpurpose>Properties that specify the style of shaded verbatim listings</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="shade.verbatim.style.frag">
+<xsl:attribute-set condition="html" name="shade.verbatim.style">
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="bgcolor">#E0E0E0</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set condition="fo" name="shade.verbatim.style">
+ <xsl:attribute name="background-color">#E0E0E0</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties that specify the style of shaded verbatim listings. The
+parameters specified (the border and background color) are added to
+the styling of the xsl-fo output. A border might be specified as "thin
+black solid" for example. See <link xlink:href="http://www.w3.org/TR/2004/WD-xsl11-20041216/#border">xsl-fo</link></para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml
new file mode 100644
index 0000000..82a7216
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="shade.verbatim">
+<refmeta>
+<refentrytitle>shade.verbatim</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shade.verbatim</refname>
+<refpurpose>Should verbatim environments be shaded?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="shade.verbatim.frag"><xsl:param name="shade.verbatim" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In the FO stylesheet, if this parameter is non-zero then the
+<property>shade.verbatim.style</property> properties will be applied
+to verbatim environments.</para>
+
+<para>In the HTML stylesheet, this parameter is now deprecated. Use
+CSS instead.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml
new file mode 100644
index 0000000..ac7bc24
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="show.comments">
+<refmeta>
+<refentrytitle>show.comments</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.comments</refname>
+<refpurpose>Display <tag>remark</tag> elements?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="show.comments.frag">
+<xsl:param name="show.comments" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, comments will be displayed, otherwise they
+are suppressed. Comments here refers to the <tag>remark</tag> element
+(which was called <literal>comment</literal> prior to DocBook
+4.0), not XML comments (&lt;-- like this --&gt;) which are
+unavailable.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml
new file mode 100644
index 0000000..627c6a7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="show.foil.number">
+<refmeta>
+<refentrytitle>show.foil.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.foil.number</refname>
+<refpurpose>Show foil number on each foil?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="show.foil.number.frag">
+<xsl:param name="show.foil.number" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, on each slide there will be its number. Currently
+not supported in all output formats.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml
new file mode 100644
index 0000000..c589b01
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="show.revisionflag">
+<refmeta>
+<refentrytitle>show.revisionflag</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.revisionflag</refname>
+<refpurpose>Enable decoration of elements that have a revisionflag</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="show.revisionflag.frag">
+<xsl:param name="show.revisionflag" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If <parameter>show.revisionflag</parameter> is turned on, then the stylesheets
+may produce additional markup designed to allow a CSS stylesheet to
+highlight elements that have specific revisionflag settings.</para>
+
+<para>The markup inserted will be usually be either a &lt;span&gt; or
+&lt;div&gt; with an appropriate <literal>class</literal>
+attribute. (The value of the class attribute will be the same as the
+value of the revisionflag attribute). In some contexts, for example
+tables, where extra markup would be structurally illegal, the class
+attribute will be added to the appropriate container element.</para>
+
+<para>In general, the stylesheets only test for revisionflag in contexts
+where an importing stylesheet would have to redefine whole templates.
+Most of the revisionflag processing is expected to be done by another
+stylesheet, for example <filename>changebars.xsl</filename>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml
new file mode 100644
index 0000000..7b1fca3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="showtoc.image">
+<refmeta>
+<refentrytitle>showtoc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>showtoc.image</refname>
+<refpurpose>Show ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="showtoc.image.frag">
+<xsl:param name="showtoc.image">showtoc.gif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>show ToC</quote> image. This is used
+when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
+enabled.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml
new file mode 100644
index 0000000..0a6d904
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml
@@ -0,0 +1,50 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="side.float.properties">
+<refmeta>
+<refentrytitle>side.float.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>side.float.properties</refname>
+<refpurpose>Attribute set for side float container properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="side.float.properties.frag">
+<xsl:attribute-set name="side.float.properties">
+ <xsl:attribute name="width">2in</xsl:attribute>
+ <xsl:attribute name="padding-start">4pt</xsl:attribute>
+ <xsl:attribute name="padding-end">4pt</xsl:attribute>
+ <xsl:attribute name="padding-top">2pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">2pt</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">0pt</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties that are applied to the
+<tag class="element">fo:block-container</tag> inside of
+a side float that is generated by the template named
+<literal>floater</literal>.
+That template generates a side float
+when the <parameter>side.float.type</parameter> is set to one
+of the values for a side float.</para>
+
+<para>If you do only <literal>left</literal> or
+<literal>start</literal> side floats, you may want to set the
+<literal>padding-start</literal> attribute to zero.
+If you do only <literal>right</literal> or
+<literal>end</literal> side floats, you may want to set the
+<literal>padding-end</literal> attribute to zero.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml
new file mode 100644
index 0000000..8c6a286
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml
@@ -0,0 +1,90 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="sidebar.float.type">
+<refmeta>
+<refentrytitle>sidebar.float.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">before</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">left</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">start</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">right</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">end</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inside</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outside</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.float.type</refname>
+<refpurpose>Select type of float for sidebar elements</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="sidebar.float.type.frag">
+<xsl:param name="sidebar.float.type">none</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Selects the type of float for sidebar elements.
+</para>
+<itemizedlist>
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>none</literal></quote>, then
+no float is used.
+</para>
+</listitem>
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>before</literal></quote>, then
+the float appears at the top of the page. On some processors,
+that may be the next page rather than the current page.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>left</literal></quote>,
+then a left side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>start</literal></quote>,
+then when the text direction is left-to-right a left side float is used.
+When the text direction is right-to-left, a right side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>right</literal></quote>,
+then a right side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>end</literal></quote>,
+then when the text direction is left-to-right a right side float is used.
+When the text direction is right-to-left, a left side float is used.
+</para>
+</listitem>
+
+<listitem>
+<para>If your XSL-FO processor supports floats positioned on the
+<quote><literal>inside</literal></quote> or
+<quote><literal>outside</literal></quote>
+of double-sided pages, then you have those two
+options for side floats as well.
+</para>
+</listitem>
+</itemizedlist>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml
new file mode 100644
index 0000000..cb989e4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="sidebar.float.width">
+<refmeta>
+<refentrytitle>sidebar.float.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.float.width</refname>
+<refpurpose>Set the default width for sidebars</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="sidebar.float.width.frag">
+<xsl:param name="sidebar.float.width">1in</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the default width for sidebars when used as a side float.
+The width determines the degree to which the sidebar block intrudes into
+the text area.
+</para>
+<para>If <parameter>sidebar.float.type</parameter> is
+<quote><literal>before</literal></quote> or
+<quote><literal>none</literal></quote>, then
+this parameter is ignored.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml
new file mode 100644
index 0000000..fc98ac0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="sidebar.properties">
+<refmeta>
+<refentrytitle>sidebar.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.properties</refname>
+<refpurpose>Attribute set for sidebar properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="sidebar.properties.frag">
+<xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-color">black</xsl:attribute>
+ <xsl:attribute name="background-color">#DDDDDD</xsl:attribute>
+ <xsl:attribute name="padding-start">12pt</xsl:attribute>
+ <xsl:attribute name="padding-end">12pt</xsl:attribute>
+ <xsl:attribute name="padding-top">6pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">6pt</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">0pt</xsl:attribute>
+<!--
+ <xsl:attribute name="margin-top">6pt</xsl:attribute>
+ <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
+-->
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for sidebars.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml
new file mode 100644
index 0000000..f1b1d51
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="sidebar.title.properties">
+<refmeta>
+<refentrytitle>sidebar.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sidebar.title.properties</refname>
+<refpurpose>Attribute set for sidebar titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="sidebar.title.properties.frag">
+<xsl:attribute-set name="sidebar.title.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for sidebars titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml
new file mode 100644
index 0000000..9bc3ab5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="simplesect.in.toc">
+<refmeta>
+<refentrytitle>simplesect.in.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>simplesect.in.toc</refname>
+<refpurpose>Should <tag>simplesect</tag> elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="simplesect.in.toc.frag"><xsl:param name="simplesect.in.toc" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>simplesect</tag>s will be included in the TOC.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml
new file mode 100644
index 0000000..e1c7541
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slide.font.family">
+<refmeta>
+<refentrytitle>slide.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slide.font.family</refname>
+<refpurpose>Specifies font family to use for slide bodies</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="slide.font.family.frag">
+<xsl:param name="slide.font.family" >Helvetica</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font family to use for slides bodies.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml
new file mode 100644
index 0000000..a5a3a88
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slide.title.font.family">
+<refmeta>
+<refentrytitle>slide.title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slide.title.font.family</refname>
+<refpurpose>Specifies font family to use for slide titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="slide.title.font.family.frag">
+<xsl:param name="slide.title.font.family">Helvetica</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font family to use for slides titles.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml
new file mode 100644
index 0000000..90fffae
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.js">
+<refmeta>
+<refentrytitle>slides.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.js</refname>
+<refpurpose>Slides overlay file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="slides.js.frag">
+<xsl:param name="slides.js" >slides.js</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the slides JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml
new file mode 100644
index 0000000..daca82c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.properties">
+<refmeta>
+<refentrytitle>slides.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.properties</refname>
+<refpurpose>Specifies properties for all slides</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.properties.frag">
+ <xsl:attribute-set name="slides.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all slides.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml
new file mode 100644
index 0000000..2f2323a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="spacing.paras">
+<refmeta>
+<refentrytitle>spacing.paras</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>spacing.paras</refname>
+<refpurpose>Insert additional &lt;p&gt; elements for spacing?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="spacing.paras.frag">
+<xsl:param name="spacing.paras" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When non-zero, additional, empty paragraphs are inserted in
+several contexts (for example, around informal figures), to create a
+more pleasing visual appearance in many browsers.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml
new file mode 100644
index 0000000..089115a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="speakernote.properties">
+<refmeta>
+<refentrytitle>speakernote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>speakernote.properties</refname>
+<refpurpose>Specifies properties for all speakernotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="speakernote.properties.frag">
+ <xsl:attribute-set name="speakernote.properties">
+ <xsl:attribute name="font-family">Times Roman</xsl:attribute>
+ <xsl:attribute name="font-style">italic</xsl:attribute>
+ <xsl:attribute name="font-size">12pt</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all speakernotes.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml
new file mode 100644
index 0000000..d2c7711
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="subscript.properties">
+<refmeta>
+<refentrytitle>subscript.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>subscript.properties</refname>
+<refpurpose>Properties associated with subscripts</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="subscript.properties.frag">
+<xsl:attribute-set name="subscript.properties">
+ <xsl:attribute name="font-size">75%</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies styling properties for subscripts.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml
new file mode 100644
index 0000000..ecf6af1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="superscript.properties">
+<refmeta>
+<refentrytitle>superscript.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>superscript.properties</refname>
+<refpurpose>Properties associated with superscripts</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="superscript.properties.frag">
+<xsl:attribute-set name="superscript.properties">
+ <xsl:attribute name="font-size">75%</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies styling properties for superscripts.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml
new file mode 100644
index 0000000..430ed97
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="suppress.footer.navigation">
+<refmeta>
+<refentrytitle>suppress.footer.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.footer.navigation</refname>
+<refpurpose>Disable footer navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="suppress.footer.navigation.frag"><xsl:param name="suppress.footer.navigation">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, footer navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml
new file mode 100644
index 0000000..8fff081
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="suppress.header.navigation">
+<refmeta>
+<refentrytitle>suppress.header.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.header.navigation</refname>
+<refpurpose>Disable header navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="suppress.header.navigation.frag">
+<xsl:param name="suppress.header.navigation" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, header navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml
new file mode 100644
index 0000000..38a3306
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="suppress.homepage.title">
+<refmeta>
+<refentrytitle>suppress.homepage.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.homepage.title</refname>
+<refpurpose>Suppress title on homepage?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="suppress.homepage.title.frag">
+<xsl:param name="suppress.homepage.title" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME:If non-zero, the title on the homepage is suppressed?</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml
new file mode 100644
index 0000000..351fc4d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="suppress.navigation">
+<refmeta>
+<refentrytitle>suppress.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.navigation</refname>
+<refpurpose>Disable header and footer navigation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="suppress.navigation.frag">
+<xsl:param name="suppress.navigation" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+If non-zero, header and footer navigation will be suppressed.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml
new file mode 100644
index 0000000..8acc791
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml
@@ -0,0 +1,45 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="symbol.font.family">
+<refmeta>
+<refentrytitle>symbol.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>symbol.font.family</refname>
+<refpurpose>The font families to be searched for symbols outside
+ of the body font</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="symbol.font.family.frag">
+<xsl:param name="symbol.font.family">Symbol,ZapfDingbats</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A typical body or title font does not contain all
+the character glyphs that DocBook supports. This parameter
+specifies additional fonts that should be searched for
+special characters not in the normal font.
+These symbol font names are automatically appended
+to the body or title font family name when fonts
+are specified in a
+<tag class="attribute">font-family</tag>
+property in the FO output.
+</para>
+<para>The symbol font names should be entered as a
+comma-separated list. The default value is
+<literal>Symbol,ZapfDingbats</literal>.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml
new file mode 100644
index 0000000..2640fb9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.borders.with.css">
+<refmeta>
+<refentrytitle>table.borders.with.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.borders.with.css</refname>
+<refpurpose>Use CSS to specify table, row, and cell borders?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.borders.with.css.frag">
+<xsl:param name="table.borders.with.css" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, CSS will be used to draw table borders.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml
new file mode 100644
index 0000000..326e148
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.cell.border.color">
+<refmeta>
+<refentrytitle>table.cell.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.color</refname>
+<refpurpose>Specifies the border color of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.cell.border.color.frag">
+<xsl:param condition="html" name="table.cell.border.color"></xsl:param>
+<xsl:param condition="fo" name="table.cell.border.color">black</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set the color of table cell borders. If non-zero, the value is used
+for the border coloration. See <link
+xlink:href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS</link>. A
+<literal>color</literal> is either a keyword or a numerical RGB specification.
+Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon,
+navy, olive, orange, purple, red, silver, teal, white, and
+yellow.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml
new file mode 100644
index 0000000..221a29c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.cell.border.style">
+<refmeta>
+<refentrytitle>table.cell.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.style</refname>
+<refpurpose>Specifies the border style of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.cell.border.style.frag">
+<xsl:param name="table.cell.border.style">solid</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table cells.</para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml
new file mode 100644
index 0000000..093e38e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.cell.border.thickness">
+<refmeta>
+<refentrytitle>table.cell.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.border.thickness</refname>
+<refpurpose>Specifies the thickness of table cell borders</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.cell.border.thickness.frag">
+<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, specifies the thickness of borders on table
+cells. The units are points. See <link
+xlink:href="http://www.w3.org/TR/CSS21/box.html#border-width-properties">
+CSS</link></para>
+
+<note>
+ <para>To control properties of cell borders in HTML output, you must also turn on the
+ <parameter>table.borders.with.css</parameter> parameter.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml
new file mode 100644
index 0000000..25fd653
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.cell.padding">
+<refmeta>
+<refentrytitle>table.cell.padding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.cell.padding</refname>
+<refpurpose>Specifies the padding of table cells</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.cell.padding.frag">
+<xsl:attribute-set name="table.cell.padding">
+ <xsl:attribute name="padding-start">2pt</xsl:attribute>
+ <xsl:attribute name="padding-end">2pt</xsl:attribute>
+ <xsl:attribute name="padding-top">2pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">2pt</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the padding of table cells.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml
new file mode 100644
index 0000000..cfd6aa3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.entry.padding">
+<refmeta>
+<refentrytitle>table.entry.padding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.entry.padding</refname>
+<refpurpose/>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.entry.padding.frag">
+<xsl:param name="table.entry.padding">2pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml
new file mode 100644
index 0000000..ebbd2ea
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.footnote.number.format">
+<refmeta>
+<refentrytitle>table.footnote.number.format</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">1<alt>1,2,3...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">A<alt>A,B,C...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">a<alt>a,b,c...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">i<alt>i,ii,iii...</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">I<alt>I,II,III...</alt></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.format</refname>
+<refpurpose>Identifies the format used for footnote numbers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.footnote.number.format.frag">
+<xsl:param name="table.footnote.number.format">a</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>table.footnote.number.format</parameter> specifies the format
+to use for footnote numeration (1, i, I, a, or A) in tables.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml
new file mode 100644
index 0000000..a8d8c23
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.footnote.number.symbols">
+<refmeta>
+<refentrytitle>table.footnote.number.symbols</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.number.symbols</refname>
+<refpurpose>Special characters to use a footnote markers in tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.footnote.number.symbols.frag">
+<xsl:param name="table.footnote.number.symbols"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>table.footnote.number.symbols</parameter> is not the empty string,
+table footnotes will use the characters it contains as footnote symbols. For example,
+<quote>*&amp;#x2020;&amp;#x2021;&amp;#x25CA;&amp;#x2720;</quote> will identify
+footnotes with <quote>*</quote>, <quote>†</quote>, <quote>‡</quote>,
+<quote>◊</quote>, and <quote>✠</quote>. If there are more footnotes
+than symbols, the stylesheets will fall back to numbered footnotes using
+<parameter>table.footnote.number.format</parameter>.</para>
+
+<para>The use of symbols for footnotes depends on the ability of your
+processor (or browser) to render the symbols you select. Not all systems are
+capable of displaying the full range of Unicode characters. If the quoted characters
+in the preceding paragraph are not displayed properly, that's a good indicator
+that you may have trouble using those symbols for footnotes.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml
new file mode 100644
index 0000000..94bed80
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.footnote.properties">
+<refmeta>
+<refentrytitle>table.footnote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.footnote.properties</refname>
+<refpurpose>Properties applied to each table footnote body
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.footnote.properties.frag">
+<xsl:attribute-set name="table.footnote.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute>
+ <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="font-style">normal</xsl:attribute>
+ <xsl:attribute name="space-before">2pt</xsl:attribute>
+ <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to the footnote-block
+for each table footnote.
+It can be used to set the
+font-size, font-family, and other inheritable properties that will be
+applied to all table footnotes.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml
new file mode 100644
index 0000000..070cb6a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.frame.border.color">
+<refmeta>
+<refentrytitle>table.frame.border.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.color</refname>
+<refpurpose>Specifies the border color of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.frame.border.color.frag">
+<xsl:param condition="html" name="table.frame.border.color"></xsl:param>
+<xsl:param condition="fo" name="table.frame.border.color">black</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border color of table frames.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml
new file mode 100644
index 0000000..881840c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.frame.border.style">
+<refmeta>
+<refentrytitle>table.frame.border.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">none</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dotted</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dashed</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">double</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">groove</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ridge</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outset</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">solid</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.style</refname>
+<refpurpose>Specifies the border style of table frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.frame.border.style.frag">
+<xsl:param name="table.frame.border.style">solid</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the border style of table frames.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml
new file mode 100644
index 0000000..1eaa04a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.frame.border.thickness">
+<refmeta>
+<refentrytitle>table.frame.border.thickness</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.frame.border.thickness</refname>
+<refpurpose>Specifies the thickness of the frame border</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.frame.border.thickness.frag">
+<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the thickness of the border on the table's frame.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml
new file mode 100644
index 0000000..76340c8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.properties">
+<refmeta>
+<refentrytitle>table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.properties</refname>
+<refpurpose>Properties associated with the block surrounding a table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.properties.frag">
+<xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="keep-together.within-column">auto</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Block styling properties for tables. This parameter should really
+have been called <literal>table.block.properties</literal> or something
+like that, but we’re leaving it to avoid backwards-compatibility
+problems.</para>
+
+<para>See also <parameter>table.table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml
new file mode 100644
index 0000000..12e6d5a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.spacer.image">
+<refmeta>
+<refentrytitle>table.spacer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.spacer.image</refname>
+<refpurpose>Invisible pixel for tabular accessibility</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.spacer.image.frag">
+<xsl:param name="table.spacer.image">graphics/spacer.gif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This is the 1x1 pixel, transparent pixel used for <link xlink:href="http://diveintoaccessibility.org/day_10_presenting_your_main_content_first.html">the table trick</link> to increase the accessibility of the tabular
+website presentation.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml
new file mode 100644
index 0000000..4ee3422
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="table.table.properties">
+<refmeta>
+<refentrytitle>table.table.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.table.properties</refname>
+<refpurpose>Properties associated with a table</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="table.table.properties.frag">
+<xsl:attribute-set name="table.table.properties">
+ <xsl:attribute name="border-before-width.conditionality">retain</xsl:attribute>
+ <xsl:attribute name="border-collapse">collapse</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The styling for tables. This parameter should really
+have been called <literal>table.properties</literal>, but that parameter
+name was inadvertently established for the block-level properties
+of the table as a whole.
+</para>
+
+<para>See also <parameter>table.properties</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml
new file mode 100644
index 0000000..2ec817a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="tablecolumns.extension">
+<refmeta>
+<refentrytitle>tablecolumns.extension</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tablecolumns.extension</refname>
+<refpurpose>Enable the table columns extension function</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="tablecolumns.extension.frag">
+<xsl:param name="tablecolumns.extension" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The table columns extension function adjusts the widths of table
+columns in the HTML result to more accurately reflect the specifications
+in the CALS table.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml
new file mode 100644
index 0000000..042f017
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="target.database.document">
+<refmeta>
+<refentrytitle>target.database.document</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>target.database.document</refname>
+<refpurpose>Name of master database file for resolving
+olinks</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<src:fragment xml:id="target.database.document.frag">
+ <xsl:param name="target.database.document">olinkdb.xml</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+To resolve olinks between documents, the stylesheets use a master
+database document that identifies the target datafiles for all the
+documents within the scope of the olinks. This parameter value is the
+URI of the master document to be read during processing to resolve
+olinks. The default value is <filename>olinkdb.xml</filename>.</para>
+
+<para>The data structure of the file is defined in the
+<filename>targetdatabase.dtd</filename> DTD. The database file
+provides the high level elements to record the identifiers, locations,
+and relationships of documents. The cross reference data for
+individual documents is generally pulled into the database using
+system entity references or XIncludes. See also
+<parameter>targets.filename</parameter>. </para> </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml
new file mode 100644
index 0000000..de6e29c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="targets.filename">
+<refmeta>
+<refentrytitle>targets.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>targets.filename</refname>
+<refpurpose>Name of cross reference targets data file</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <src:fragment xml:id="targets.filename.frag">
+<xsl:param name="targets.filename">target.db</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>
+In order to resolve olinks efficiently, the stylesheets can
+generate an external data file containing information about
+all potential cross reference endpoints in a document.
+This parameter lets you change the name of the generated
+file from the default name <filename>target.db</filename>.
+The name must agree with that used in the target database
+used to resolve olinks during processing.
+See also <parameter>target.database.document</parameter>.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml
new file mode 100644
index 0000000..9d35f83
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="[[NAME]]">
+<refmeta>
+<refentrytitle>[[NAME]]</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype"/>
+</refmeta>
+<refnamediv>
+<refname>[[NAME]]</refname>
+<refpurpose/>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="[[NAME]].frag">
+<xsl:param name="[[NAME]]" select=""/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml
new file mode 100644
index 0000000..3a302f7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml
@@ -0,0 +1,47 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="tex.math.delims">
+<refmeta>
+<refentrytitle>tex.math.delims</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.delims</refname>
+<refpurpose>Should equations output for processing by TeX be
+surrounded by math mode delimiters?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="tex.math.delims.frag">
+<xsl:param name="tex.math.delims" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>For compatibility with DSSSL based DBTeXMath from Allin Cottrell
+you should set this parameter to 0.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>passivetex.extensions</parameter></para>
+</refsection>
+
+<refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag
+ class="xmlpi">dbtex delims</tag> processing
+ instruction to control whether delimiters are output.</para>
+</refsection>
+
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml
new file mode 100644
index 0000000..fbc6eaa
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="tex.math.file">
+<refmeta>
+<refentrytitle>tex.math.file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.file</refname>
+<refpurpose>Name of temporary file for generating images from equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="tex.math.file.frag">
+<xsl:param name="tex.math.file">tex-math-equations.tex</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Name of auxiliary file for TeX equations. This file can be
+processed by dvi2bitmap to get bitmap versions of equations for HTML
+output.</para>
+
+</refsection>
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.in.alt</parameter>,
+ <parameter>tex.math.delims</parameter>,
+ </para>
+</refsection>
+<refsection><info><title>More information</title></info>
+ <para>For how-to documentation on embedding TeX equations and
+ generating output from them, see
+ <link
+ role="tcg"
+ xlink:href="TexMath.html"
+ >DBTeXMath</link>.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml
new file mode 100644
index 0000000..ed1abb9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml
@@ -0,0 +1,76 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="tex.math.in.alt">
+<refmeta>
+<refentrytitle>tex.math.in.alt</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">plain</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">latex</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.in.alt</refname>
+<refpurpose>TeX notation used for equations</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="tex.math.in.alt.frag">
+<xsl:param name="tex.math.in.alt"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If you want type math directly in TeX notation in equations,
+this parameter specifies notation used. Currently are supported two
+values -- <literal>plain</literal> and <literal>latex</literal>. Empty
+value means that you are not using TeX math at all.</para>
+
+<para>Preferred way for including TeX alternative of math is inside of
+<tag>textobject</tag> element. Eg.:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;inlinemediaobject&gt;
+&lt;imageobject&gt;
+&lt;imagedata fileref="eq1.gif"/&gt;
+&lt;/imageobject&gt;
+&lt;textobject&gt;&lt;phrase&gt;E=mc squared&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;textobject role="tex"&gt;&lt;phrase&gt;E=mc^2&lt;/phrase&gt;&lt;/textobject&gt;
+&lt;/inlinemediaobject&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you are using <tag>graphic</tag> element, you can
+store TeX inside <tag>alt</tag> element:</para>
+
+<programlisting>&lt;inlineequation&gt;
+&lt;alt role="tex"&gt;a^2+b^2=c^2&lt;/alt&gt;
+&lt;graphic fileref="a2b2c2.gif"/&gt;
+&lt;/inlineequation&gt;</programlisting>
+
+<para>If you want use this feature, you should process your FO with
+PassiveTeX, which only supports TeX math notation. When calling
+stylsheet, don't forget to specify also
+passivetex.extensions=1.</para>
+
+<para>If you want equations in HTML, just process generated file
+<filename>tex-math-equations.tex</filename> by TeX or LaTeX. Then run
+dvi2bitmap program on result DVI file. You will get images for
+equations in your document.</para>
+
+<warning>
+ <para>This feature is useful for print/PDF output only if you
+ use the obsolete and now unsupported PassiveTeX XSL-FO
+ engine.</para>
+</warning>
+
+</refsection>
+
+<refsection><info><title>Related Parameters</title></info>
+ <para><parameter>tex.math.delims</parameter>,
+ <parameter>passivetex.extensions</parameter>,
+ <parameter>tex.math.file</parameter></para>
+</refsection>
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml
new file mode 100644
index 0000000..0bc81dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="text.home">
+<refmeta>
+<refentrytitle>text.home</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.home</refname>
+<refpurpose>Home</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="text.home.frag">
+<xsl:param name="text.home">Home</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml
new file mode 100644
index 0000000..d89b8e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="text.next">
+<refmeta>
+<refentrytitle>text.next</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.next</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="text.next.frag">
+<xsl:param name="text.next">Next</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml
new file mode 100644
index 0000000..62d28e3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="text.prev">
+<refmeta>
+<refentrytitle>text.prev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.prev</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="text.prev.frag">
+<xsl:param name="text.prev">Prev</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml
new file mode 100644
index 0000000..083b8e3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="text.toc">
+<refmeta>
+<refentrytitle>text.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.toc</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="text.toc.frag">
+<xsl:param name="text.toc">ToC</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml
new file mode 100644
index 0000000..f6dca22
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="text.up">
+<refmeta>
+<refentrytitle>text.up</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.up</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="text.up.frag">
+<xsl:param name="text.up" >Up</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml
new file mode 100644
index 0000000..b9aefe6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml
@@ -0,0 +1,26 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="textbgcolor">
+<refmeta>
+<refentrytitle>textbgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textbgcolor</refname>
+<refpurpose>The background color of the table body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="textbgcolor.frag">
+<xsl:param name="textbgcolor">white</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The background color of the table body.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml
new file mode 100644
index 0000000..b6f30a8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="textdata.default.encoding">
+<refmeta>
+<refentrytitle>textdata.default.encoding</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textdata.default.encoding</refname>
+<refpurpose>Default encoding of external text files which are included
+using textdata element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="textdata.default.encoding.frag">
+<xsl:param name="textdata.default.encoding"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the encoding of any external text files included using
+<tag>textdata</tag> element. This value is used only when you do
+not specify encoding by the appropriate attribute <!-- Which is what? -->
+directly on textdata. An empty string is interpreted as the system
+default encoding.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml
new file mode 100644
index 0000000..a6f1ea4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml
@@ -0,0 +1,62 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="textinsert.extension">
+ <refmeta>
+ <refentrytitle>textinsert.extension</refentrytitle>
+ <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>textinsert.extension</refname>
+ <refpurpose>Enables the textinsert extension element</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <src:fragment xml:id="textinsert.extension.frag">
+ <xsl:param name="textinsert.extension" select="1"/>
+</src:fragment>
+ </refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>The textinsert extension element inserts the contents of
+ a file into the result tree (as text).</para>
+ <note>
+ <para>To use the textinsert extension element, you must use
+ either Saxon or Xalan as your XSLT processor (it doesn’t
+ work with xsltproc), along with either the DocBook Saxon
+ extensions or DocBook Xalan extensions (for more
+ information about those extensions, see <link
+ role="tcg" xlink:href="InstallingAProcessor.html#SaxonExtensions"
+ >DocBook Saxon Extensions</link> and <link
+ role="tcg" xlink:href="InstallingAProcessor.html#XalanExtensions"
+ >DocBook Xalan Extensions</link>), and you must set both
+ the <parameter>use.extensions</parameter> and
+ <parameter>textinsert.extension</parameter> parameters to
+ <literal>1</literal>.</para>
+ <para>As an alternative to using the textinsert element,
+ consider using an Xinclude element with the
+ <literal>parse="text"</literal> attribute and value
+ specified, as detailed in <link
+ role="tcg" xlink:href="ExternalCode.html#XIncludeCode"
+ >Using XInclude for text inclusions</link>.</para>
+ </note>
+ </refsection>
+ <refsection><info><title>See Also</title></info>
+ <para>You can also use the <tag
+ class="xmlpi">dbhtml-include href</tag> processing
+ instruction to insert external files — both files containing
+ plain text and files with markup content (including HTML
+ content).</para>
+ </refsection>
+ <refsection><info><title>More information</title></info>
+ <para>For how-to documentation on inserting contents of
+ external code files and other text files into output, see
+ <link
+ role="tcg" xlink:href="ExternalCode.html"
+ >External code files</link>.</para>
+ <para>For guidelines on inserting contents of
+ HTML files into output, see <link
+ role="tcg" xlink:href="InsertExtHtml.html"
+ >Inserting external HTML code</link>.</para>
+ </refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml
new file mode 100644
index 0000000..369021f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="title.font.family">
+<refmeta>
+<refentrytitle>title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>title.font.family</refname>
+<refpurpose>The default font family for titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="title.font.family.frag">
+<xsl:param name="title.font.family">sans-serif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The title font family is used for titles (chapter, section, figure,
+etc.)
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml
new file mode 100644
index 0000000..dc50dd1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml
@@ -0,0 +1,65 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="title.margin.left">
+<refmeta>
+<refentrytitle>title.margin.left</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>title.margin.left</refname>
+<refpurpose>Adjust the left margin for titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="title.margin.left.frag">
+<xsl:param name="title.margin.left">
+ <xsl:choose>
+ <xsl:when test="$fop.extensions != 0">-4pc</xsl:when>
+ <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when>
+ <xsl:otherwise>0pt</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter provides
+the means of adjusting the left margin for titles
+when the XSL-FO processor being used is
+an old version of FOP (0.25 and earlier).
+It is only useful when the <parameter>fop.extensions</parameter>
+is nonzero.</para>
+
+<para>The left margin of the body region
+is calculated to include this space,
+and titles are outdented to the left outside
+the body region by this amount,
+effectively leaving titles at the intended left margin
+and the body text indented.
+Currently this method is only used for old FOP because
+it cannot properly use the <parameter>body.start.indent</parameter>
+parameter.
+</para>
+<para>
+The default value when the <parameter>fop.extensions</parameter>
+parameter is nonzero is -4pc, which means the
+body text is indented 4 picas relative to
+the titles.
+The default value when the <parameter>fop.extensions</parameter>
+parameter equals zero is 0pt, and
+the body indent should instead be specified
+using the <parameter>body.start.indent</parameter>
+parameter.
+</para>
+<para>
+If you set the value to zero, be sure to still include
+a unit indicator such as <literal>0pt</literal>, or
+the FO processor will report errors.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml
new file mode 100644
index 0000000..5fa2acd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="titlefoil.html">
+<refmeta>
+<refentrytitle>titlefoil.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>titlefoil.html</refname>
+<refpurpose>Name of title foil HTML file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="titlefoil.html.frag">
+<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename used for the slides titlepage.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml
new file mode 100644
index 0000000..1389c62
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.bg.color">
+<refmeta>
+<refentrytitle>toc.bg.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.bg.color</refname>
+<refpurpose>Background color for ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.bg.color.frag">
+<xsl:param name="toc.bg.color">#FFFFFF</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color used in the ToC frame.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml
new file mode 100644
index 0000000..bb24888
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.blank.graphic">
+<refmeta>
+<refentrytitle>toc.blank.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.graphic</refname>
+<refpurpose>Use graphic for "blanks" in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.blank.graphic.frag">
+<xsl:param name="toc.blank.graphic" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, "blanks" in the the TOC will be accomplished
+with the graphic identified by <varname>toc.spacer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml
new file mode 100644
index 0000000..82caa2f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.blank.image">
+<refmeta>
+<refentrytitle>toc.blank.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.image</refname>
+<refpurpose>The image for "blanks" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.blank.image.frag">
+<xsl:param name="toc.blank.image">graphics/blank.gif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.blank.graphic</varname> is non-zero, this image
+will be used to for "blanks" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml
new file mode 100644
index 0000000..d39aec4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.blank.text">
+<refmeta>
+<refentrytitle>toc.blank.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.text</refname>
+<refpurpose>The text for "blanks" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.blank.text.frag">
+<xsl:param name="toc.blank.text">&#160;&#160;&#160;</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.blank.graphic</varname> is zero, this text string
+will be used for "blanks" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml
new file mode 100644
index 0000000..1570ec4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.hide.show">
+<refmeta>
+<refentrytitle>toc.hide.show</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.hide.show</refname>
+<refpurpose>Enable hide/show button for ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.hide.show.frag">
+<xsl:param name="toc.hide.show" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript (and an additional icon, see
+<link linkend="hidetoc.image">hidetoc.image</link> and
+<link linkend="hidetoc.image">showtoc.image</link>) is added to each slide
+to allow the ToC panel to be <quote>toggled</quote> on each panel.</para>
+
+<note><para>There is a bug in Mozilla 1.0 (at least as of CR3) that causes
+the browser to reload the titlepage when this feature is used.</para></note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml
new file mode 100644
index 0000000..62c060c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.html">
+<refmeta>
+<refentrytitle>toc.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.html</refname>
+<refpurpose>Name of ToC HTML file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.html.frag">
+<xsl:param name="toc.html" select="concat('toc', $html.ext)"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename used for the table of contents page.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml
new file mode 100644
index 0000000..147155c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.image">
+<refmeta>
+<refentrytitle>toc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.image</refname>
+<refpurpose>ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.image.frag">
+<xsl:param name="toc.image">active/nav-toc.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the ToC navigation icon.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml
new file mode 100644
index 0000000..449e74c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.indent.width">
+<refmeta>
+<refentrytitle>toc.indent.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">float</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.indent.width</refname>
+<refpurpose>Amount of indentation for TOC entries</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.indent.width.frag">
+<xsl:param name="toc.indent.width">24</xsl:param>
+<!-- inconsistant point specification? -->
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies, in points, the distance by which each level of the
+TOC is indented from its parent.</para>
+
+<para>This value is expressed in points, without
+a unit (in other words, it is a bare number). Using a bare number allows the stylesheet
+to perform calculations that would otherwise have to be performed by the FO processor
+because not all processors support expressions.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml
new file mode 100644
index 0000000..0886fa4
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml
@@ -0,0 +1,44 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.line.properties">
+<refmeta>
+<refentrytitle>toc.line.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.line.properties</refname>
+<refpurpose>Properties for lines in ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.line.properties.frag">
+<xsl:attribute-set name="toc.line.properties">
+ <xsl:attribute name="text-align-last">justify</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ <xsl:attribute name="end-indent"><xsl:value-of select="concat($toc.indent.width, 'pt')"/></xsl:attribute>
+ <xsl:attribute name="last-line-end-indent"><xsl:value-of select="concat('-', $toc.indent.width, 'pt')"/></xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties which are applied to every line in ToC (or LoT). You can
+modify them in order to change appearance of all, or some lines. For
+example, in order to make lines for chapters bold, specify the
+following in your customization layer:</para>
+
+<programlisting>&lt;xsl:attribute-set name="toc.line.properties"&gt;
+ &lt;xsl:attribute name="font-weight"&gt;
+ &lt;xsl:choose>
+ &lt;xsl:when test="self::chapter">bold&lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;normal&lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose>
+ &lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;</programlisting>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml
new file mode 100644
index 0000000..31dc465
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.list.type">
+<refmeta>
+<refentrytitle>toc.list.type</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">dl</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ul</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">ol</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.list.type</refname>
+<refpurpose>Type of HTML list element to use for Tables of Contents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.list.type.frag"><xsl:param name="toc.list.type">dl</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When an automatically generated Table of Contents (or List of Titles)
+is produced, this HTML element will be used to make the list.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml
new file mode 100644
index 0000000..25963df
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.margin.properties">
+<refmeta>
+<refentrytitle>toc.margin.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.margin.properties</refname>
+<refpurpose>Margin properties used on Tables of Contents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.margin.properties.frag">
+<xsl:attribute-set name="toc.margin.properties">
+ <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">2em</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This attribute set is used on Tables of Contents. These attributes are set
+on the wrapper that surrounds the ToC block, not on each individual lines.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml
new file mode 100644
index 0000000..75902b3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml
@@ -0,0 +1,25 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.max.depth">
+<refmeta>
+<refentrytitle>toc.max.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.max.depth</refname>
+<refpurpose>How many levels should be created for each TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.max.depth.frag"><xsl:param name="toc.max.depth">8</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the maximal depth of TOC on all levels.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml
new file mode 100644
index 0000000..4b2cb74
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.pointer.graphic">
+<refmeta>
+<refentrytitle>toc.pointer.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.graphic</refname>
+<refpurpose>Use graphic for TOC pointer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.pointer.graphic.frag">
+<xsl:param name="toc.pointer.graphic" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the "pointer" in the TOC will be displayed
+with the graphic identified by <varname>toc.pointer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml
new file mode 100644
index 0000000..bf06901
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.pointer.image">
+<refmeta>
+<refentrytitle>toc.pointer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.image</refname>
+<refpurpose>The image for the "pointer" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.pointer.image.frag">
+<xsl:param name="toc.pointer.image">graphics/arrow.gif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.pointer.graphic</varname> is non-zero, this image
+will be used for the "pointer" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml
new file mode 100644
index 0000000..b094765
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.pointer.text">
+<refmeta>
+<refentrytitle>toc.pointer.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.text</refname>
+<refpurpose>The text for the "pointer" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.pointer.text.frag">
+<xsl:param name="toc.pointer.text">&#160;&gt;&#160;</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.pointer.graphic</varname> is zero, this text string
+will be used to display the "pointer" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml
new file mode 100644
index 0000000..89bac83
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.row.height">
+<refmeta>
+<refentrytitle>toc.row.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.row.height</refname>
+<refpurpose>Height of ToC rows in dynamic ToCs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.row.height.frag">
+<xsl:param name="toc.row.height">22</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the height of each row in the table of
+contents. This is only applicable if a <link
+linkend="dynamic.toc">dynamic ToC</link> is used. You may want to
+adjust this parameter for optimal appearance with the font and image
+sizes selected by your <link linkend="css.stylesheet">CSS
+stylesheet</link>.
+</para>
+<!-- This uses link for cross param linking, unlike most others -->
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml
new file mode 100644
index 0000000..db99f9c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.section.depth">
+<refmeta>
+<refentrytitle>toc.section.depth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.section.depth</refname>
+<refpurpose>How deep should recursive <tag>section</tag>s appear
+in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.section.depth.frag"><xsl:param name="toc.section.depth">2</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the depth to which recursive sections should appear in the
+TOC.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml
new file mode 100644
index 0000000..0a5729c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.spacer.graphic">
+<refmeta>
+<refentrytitle>toc.spacer.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.graphic</refname>
+<refpurpose>Use graphic for TOC spacer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.spacer.graphic.frag">
+<xsl:param name="toc.spacer.graphic" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the indentation in the TOC will be accomplished
+with the graphic identified by <varname>toc.spacer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml
new file mode 100644
index 0000000..0d55016
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.spacer.image">
+<refmeta>
+<refentrytitle>toc.spacer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.image</refname>
+<refpurpose>The image for spacing the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.spacer.image.frag">
+<xsl:param name="toc.spacer.image">graphics/blank.gif</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.spacer.graphic</varname> is non-zero, this image
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml
new file mode 100644
index 0000000..bfb605f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.spacer.text">
+<refmeta>
+<refentrytitle>toc.spacer.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.text</refname>
+<refpurpose>The text for spacing the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.spacer.text.frag">
+<xsl:param name="toc.spacer.text">&#160;&#160;&#160;</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.spacer.graphic</varname> is zero, this text string
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml
new file mode 100644
index 0000000..71a3c03
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="toc.width">
+<refmeta>
+<refentrytitle>toc.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.width</refname>
+<refpurpose>Width of ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="toc.width.frag">
+<xsl:param name="toc.width" >250</xsl:param>
+<!-- Presumably in pixels? -->
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the width of the ToC frame in pixels.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml
new file mode 100644
index 0000000..8242a71
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ua.js">
+<refmeta>
+<refentrytitle>ua.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ua.js</refname>
+<refpurpose>UA JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ua.js.frag">
+<xsl:param name="ua.js">ua.js</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the UA JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml
new file mode 100644
index 0000000..f17c884
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ulink.footnotes">
+<refmeta>
+<refentrytitle>ulink.footnotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.footnotes</refname>
+<refpurpose>Generate footnotes for <tag>ulink</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ulink.footnotes.frag">
+<xsl:param name="ulink.footnotes" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, and if <parameter>ulink.show</parameter> also is non-zero,
+the URL of each <tag>ulink</tag> will appear as a footnote.</para>
+
+<note><para>DocBook 5 does not have an <tag>ulink</tag> element. When processing
+DocBoook 5 documents, <parameter>ulink.footnotes</parameter> applies to all inline
+elements that are marked up with <tag class="attribute">xlink:href</tag> attributes
+that point to external resources.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml
new file mode 100644
index 0000000..7fdd771
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ulink.hyphenate.chars">
+<refmeta>
+<refentrytitle>ulink.hyphenate.chars</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.hyphenate.chars</refname>
+<refpurpose>List of characters to allow ulink URLs to be automatically hyphenated on</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ulink.hyphenate.chars.frag">
+<xsl:param name="ulink.hyphenate.chars">/</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If the <parameter>ulink.hyphenate</parameter> is not empty, then
+hyphenation of ulinks is turned on, and any
+character contained in this parameter is treated as an allowable
+hyphenation point.</para>
+
+<para>The default value is <quote>/</quote>, but the parameter
+could be customized
+to contain other URL characters, as for example:</para>
+<programlisting>
+&lt;xsl:param name="ulink.hyphenate.chars"&gt;:/@&amp;?.#&lt;/xsl:param&gt;
+</programlisting>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml
new file mode 100644
index 0000000..719e937
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml
@@ -0,0 +1,35 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ulink.hyphenate">
+<refmeta>
+<refentrytitle>ulink.hyphenate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.hyphenate</refname>
+<refpurpose>Allow URLs to be automatically hyphenated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ulink.hyphenate.frag">
+<xsl:param name="ulink.hyphenate"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If not empty, the specified character (or more generally, content) is
+added to URLs after every character included in the string
+in the <parameter>ulink.hyphenate.chars</parameter> parameter (default
+is <quote>/</quote>). If the character in this parameter is a
+Unicode soft hyphen (0x00AD) or Unicode zero-width space (0x200B), some FO
+processors will be able to reasonably hyphenate long URLs.</para>
+
+<para>As of 28 Jan 2002, discretionary hyphens are more widely and correctly
+supported than zero-width spaces for this purpose.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml
new file mode 100644
index 0000000..6f90d58
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ulink.show">
+<refmeta>
+<refentrytitle>ulink.show</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.show</refname>
+<refpurpose>Display URLs after <tag>ulink</tag>s?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ulink.show.frag">
+<xsl:param name="ulink.show" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the URL of each <tag>ulink</tag> will
+appear after the text of the link. If the text of the link and the URL
+are identical, the URL is suppressed. </para>
+
+<para>See also <parameter>ulink.footnotes</parameter>.</para>
+
+<note><para>DocBook 5 does not have an <tag>ulink</tag> element. When processing
+DocBoook 5 documents, <parameter>ulink.show</parameter> applies to all inline
+elements that are marked up with <tag class="attribute">xlink:href</tag> attributes
+that point to external resources.</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml
new file mode 100644
index 0000000..cf1d42b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="ulink.target">
+<refmeta>
+<refentrytitle>ulink.target</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ulink.target</refname>
+<refpurpose>The HTML anchor target for ULinks</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="ulink.target.frag">
+<xsl:param name="ulink.target">_top</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>ulink.target</parameter> is non-zero, its value will
+be used for the <literal>target</literal> attribute
+on anchors generated for <tag>ulink</tag>s.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml
new file mode 100644
index 0000000..1c3bfa2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="up.image">
+<refmeta>
+<refentrytitle>up.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>up.image</refname>
+<refpurpose>Up-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="up.image.frag">
+<xsl:param name="up.image">active/nav-up.png</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the upward-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml
new file mode 100644
index 0000000..f7c52cc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.embed.for.svg">
+<refmeta>
+<refentrytitle>use.embed.for.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.embed.for.svg</refname>
+<refpurpose>Use HTML <tag>embed</tag> for SVG?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="use.embed.for.svg.frag">
+<xsl:param name="use.embed.for.svg" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, an <tag>embed</tag> element will be created for
+SVG figures. An <tag>object</tag> is <emphasis>always</emphasis> created,
+this parameter merely controls whether or not an additional <tag>embed</tag>
+is generated inside the <tag>object</tag>.</para>
+
+<para>On the plus side, this may be more portable among browsers and plug-ins.
+On the minus side, it isn't valid HTML.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml
new file mode 100644
index 0000000..4dce71b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.extensions">
+<refmeta>
+<refentrytitle>use.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.extensions</refname>
+<refpurpose>Enable extensions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="use.extensions.frag">
+<xsl:param name="use.extensions" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, extensions may be used. Each extension is
+further controlled by its own parameter. But if
+<parameter>use.extensions</parameter> is zero, no extensions will
+be used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml
new file mode 100644
index 0000000..e5133e9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.id.as.filename">
+<refmeta>
+<refentrytitle>use.id.as.filename</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.id.as.filename</refname>
+<refpurpose>Use ID value of chunk elements as the filename?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="use.id.as.filename.frag">
+<xsl:param name="use.id.as.filename" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>use.id.as.filename</parameter>
+is non-zero, the filename of chunk elements that have IDs will be
+derived from the ID value.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml
new file mode 100644
index 0000000..5f4e6f7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.id.function">
+<refmeta>
+<refentrytitle>use.id.function</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.id.function</refname>
+<refpurpose>Use the XPath id() function to find link targets?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="use.id.function.frag">
+<xsl:param name="use.id.function" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If 1, the stylesheets use the <function>id()</function> function
+to find the targets of cross reference elements. This is more
+efficient, but only works if your XSLT processor implements the
+<function>id()</function> function, naturally.</para>
+<para>THIS PARAMETER IS NOT SUPPORTED. IT IS ALWAYS ASSUMED TO BE 1.
+SEE xref.xsl IF YOU NEED TO TURN IT OFF.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml
new file mode 100644
index 0000000..eb4f57a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.local.olink.style">
+<refmeta>
+<refentrytitle>use.local.olink.style</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.local.olink.style</refname>
+<refpurpose>Process olinks using xref style of current
+document</refpurpose>
+</refnamediv>
+<refsynopsisdiv> <src:fragment xml:id="use.local.olink.style.frag">
+<xsl:param name="use.local.olink.style" select="0"/> </src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+
+<para>When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the <parameter>use.local.olink.style</parameter> parameter is set to non-zero, then instead the cross
+reference string is formed again from the target title, number, and
+element name, using the stylesheet processing the targeting document.
+Then olinks will match the xref style in the targeting document
+rather than in the target document. If both documents are processed
+with the same stylesheet, then the results will be the same.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml
new file mode 100644
index 0000000..56c4470
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml
@@ -0,0 +1,93 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.role.as.xrefstyle">
+<refmeta>
+<refentrytitle>use.role.as.xrefstyle</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.as.xrefstyle</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute for
+<tag class="attribute">xrefstyle</tag> on <tag>xref</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="use.role.as.xrefstyle.frag">
+<xsl:param name="use.role.as.xrefstyle" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In DocBook documents that conform to a schema older than V4.3, this parameter allows
+<tag class="attribute">role</tag> to serve the purpose of specifying the cross reference style.</para>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>xref</tag> will be used to select the cross reference style.
+In DocBook V4.3, the <tag class="attribute">xrefstyle</tag> attribute was added for this purpose.
+If the <tag class="attribute">xrefstyle</tag> attribute is present,
+<tag class="attribute">role</tag> will be ignored, regardless of the setting
+of this parameter.</para>
+
+</refsection>
+
+<refsection><info><title>Example</title></info>
+
+<para>The following small stylesheet shows how to configure the
+stylesheets to make use of the cross reference style:</para>
+
+<programlisting>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"&gt;
+
+&lt;xsl:import href="../xsl/html/docbook.xsl"/&gt;
+
+&lt;xsl:output method="html"/&gt;
+
+&lt;xsl:param name="local.l10n.xml" select="document('')"/&gt;
+&lt;l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"&gt;
+ &lt;l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"&gt;
+ &lt;l:context name="xref"&gt;
+ &lt;l:template name="chapter" style="title" text="Chapter %n, %t"/&gt;
+ &lt;l:template name="chapter" text="Chapter %n"/&gt;
+ &lt;/l:context&gt;
+ &lt;/l:l10n&gt;
+&lt;/l:i18n&gt;
+
+&lt;/xsl:stylesheet&gt;</programlisting>
+
+<para>With this stylesheet, the cross references in the following document:</para>
+
+<programlisting>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"&gt;
+&lt;book id="book"&gt;&lt;title&gt;Book&lt;/title&gt;
+
+&lt;preface&gt;
+&lt;title&gt;Preface&lt;/title&gt;
+
+&lt;para&gt;Normal: &lt;xref linkend="ch1"/&gt;.&lt;/para&gt;
+&lt;para&gt;Title: &lt;xref xrefstyle="title" linkend="ch1"/&gt;.&lt;/para&gt;
+
+&lt;/preface&gt;
+
+&lt;chapter id="ch1"&gt;
+&lt;title&gt;First Chapter&lt;/title&gt;
+
+&lt;para&gt;Irrelevant.&lt;/para&gt;
+
+&lt;/chapter&gt;
+&lt;/book&gt;</programlisting>
+
+<para>will appear as:</para>
+
+<informalexample>
+<para>Normal: Chapter 1.</para>
+<para>Title: Chapter 1, <emphasis>First Chapter</emphasis>.</para>
+</informalexample>
+</refsection>
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml
new file mode 100644
index 0000000..9241ace
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml
@@ -0,0 +1,56 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.role.for.mediaobject">
+<refmeta>
+<refentrytitle>use.role.for.mediaobject</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.role.for.mediaobject</refname>
+<refpurpose>Use <tag class="attribute">role</tag> attribute
+value for selecting which of several objects within a mediaobject to use.
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="use.role.for.mediaobject.frag">
+<xsl:param name="use.role.for.mediaobject" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, the <tag class="attribute">role</tag> attribute on
+<tag>imageobject</tag>s or other objects within a <tag>mediaobject</tag> container will be used to select which object will be
+used.
+</para>
+<para>
+The order of selection when then parameter is non-zero is:
+</para>
+<orderedlist>
+<listitem>
+ <para>If the stylesheet parameter <parameter>preferred.mediaobject.role</parameter> has a value, then the object whose role equals that value is selected.</para>
+</listitem>
+<listitem>
+<para>Else if an object's role attribute has a value of
+<literal>html</literal> for HTML processing or
+<literal>fo</literal> for FO output, then the first
+of such objects is selected.
+</para>
+</listitem>
+<listitem>
+<para>Else the first suitable object is selected.</para>
+</listitem>
+</orderedlist>
+<para>
+If the value of
+<parameter>use.role.for.mediaobject</parameter>
+is zero, then role attributes are not considered
+and the first suitable object
+with or without a role value is used.
+</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml
new file mode 100644
index 0000000..8f13be0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="use.svg">
+<refmeta>
+<refentrytitle>use.svg</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>use.svg</refname>
+<refpurpose>Allow SVG in the result tree?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="use.svg.frag">
+<xsl:param name="use.svg" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, SVG will be considered an acceptable image format. SVG
+is passed through to the result tree, so correct rendering of the resulting
+diagram depends on the formatter (FO processor or web browser) that is used
+to process the output from the stylesheet.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml
new file mode 100644
index 0000000..71e1c98
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml
@@ -0,0 +1,62 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="variablelist.as.blocks">
+<refmeta>
+<refentrytitle>variablelist.as.blocks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.as.blocks</refname>
+<refpurpose>Format <tag>variablelist</tag>s lists as blocks?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="variablelist.as.blocks.frag">
+<xsl:param name="variablelist.as.blocks" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>variablelist</tag>s will be formatted as
+blocks.</para>
+
+<para>If you have long terms, proper list markup in the FO case may produce
+unattractive lists. By setting this parameter, you can force the stylesheets
+to produce block markup instead of proper lists.</para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>variablelist</tag>: <tag class="xmlpi">dbfo
+list-presentation="blocks"</tag> or <tag class="xmlpi">dbfo
+list-presentation="list"</tag>.</para>
+
+<para>When using <literal>list-presentation="list"</literal>,
+you can also control the amount of space used for the <tag>term</tag>s with
+the <tag class="xmlpi">dbfo term-width=".25in"</tag> processing instruction,
+the <tag class="attribute">termlength</tag> attribute on <tag>variablelist</tag>,
+or allow the stylesheets to attempt to calculate the amount of space to leave based on the
+number of letters in the longest term.
+</para>
+
+<programlisting> &lt;variablelist&gt;
+ &lt;?dbfo list-presentation="list"?&gt;
+ &lt;?dbfo term-width="1.5in"?&gt;
+ &lt;?dbhtml list-presentation="table"?&gt;
+ &lt;?dbhtml term-width="1.5in"?&gt;
+ &lt;varlistentry&gt;
+ &lt;term&gt;list&lt;/term&gt;
+ &lt;listitem&gt;
+ &lt;para&gt;
+ Formatted as a list even if variablelist.as.blocks is set to 1.
+ &lt;/para&gt;
+ &lt;/listitem&gt;
+ &lt;/varlistentry&gt;
+ &lt;/variablelist&gt;</programlisting>
+
+
+</refsection>
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml
new file mode 100644
index 0000000..113d2f5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml
@@ -0,0 +1,54 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="variablelist.as.table">
+<refmeta>
+<refentrytitle>variablelist.as.table</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.as.table</refname>
+<refpurpose>Format <tag>variablelist</tag>s as tables?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="variablelist.as.table.frag">
+<xsl:param name="variablelist.as.table" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, <tag>variablelist</tag>s will be formatted as
+tables. A processing instruction exists to specify a particular width for the
+column containing the <tag>term</tag>s:
+<tag class="xmlpi">dbhtml term-width=".25in"</tag></para>
+
+<para>You can override this setting with a processing instruction as the
+child of <tag>variablelist</tag>: <tag class="xmlpi">dbhtml
+list-presentation="table"</tag> or <tag class="xmlpi">dbhtml
+list-presentation="list"</tag>.</para>
+
+<para>This parameter only applies to the HTML transformations. In the
+FO case, proper list markup is robust enough to handle the formatting.
+But see also <parameter>variablelist.as.blocks</parameter>.</para>
+
+<programlisting> &lt;variablelist&gt;
+ &lt;?dbhtml list-presentation="table"?&gt;
+ &lt;?dbhtml term-width="1.5in"?&gt;
+ &lt;?dbfo list-presentation="list"?&gt;
+ &lt;?dbfo term-width="1in"?&gt;
+ &lt;varlistentry&gt;
+ &lt;term&gt;list&lt;/term&gt;
+ &lt;listitem&gt;
+ &lt;para&gt;
+ Formatted as a table even if variablelist.as.table is set to 0.
+ &lt;/para&gt;
+ &lt;/listitem&gt;
+ &lt;/varlistentry&gt;
+ &lt;/variablelist&gt;</programlisting>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml
new file mode 100644
index 0000000..ff56a87
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="variablelist.max.termlength">
+<refmeta>
+<refentrytitle>variablelist.max.termlength</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.max.termlength</refname>
+<refpurpose>Specifies the longest term in variablelists</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="variablelist.max.termlength.frag">
+<xsl:param name="variablelist.max.termlength">24</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>In variablelists, the <tag>listitem</tag>
+is indented to leave room for the
+<tag>term</tag> elements. That indent may be computed
+if it is not specified with a <tag class="attribute">termlength</tag>
+attribute on the <tag>variablelist</tag> element.
+</para>
+<para>
+The computation counts characters in the
+<tag>term</tag> elements in the list
+to find the longest term. However, some terms are very long
+and would produce extreme indents. This parameter lets you
+set a maximum character count. Any terms longer than the maximum
+would line wrap. The default value is 24.
+</para>
+<para>
+The character counts are converted to physical widths
+by multiplying by 0.50em. There will be some variability
+in how many actual characters fit in the space
+since some characters are wider than others.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml
new file mode 100644
index 0000000..8472f5e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml
@@ -0,0 +1,39 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="variablelist.term.break.after">
+<refmeta>
+<refentrytitle>variablelist.term.break.after</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.break.after</refname>
+<refpurpose>Generate line break after each <tag>term</tag> within a
+multi-term <tag>varlistentry</tag>?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="variablelist.term.break.after.frag">
+<xsl:param name="variablelist.term.break.after">0</xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Set a non-zero value for the
+<parameter>variablelist.term.break.after</parameter> parameter to
+generate a line break between <tag>term</tag>s in a
+multi-term <tag>varlistentry</tag>.</para>
+
+<note>
+<para>If you set a non-zero value for
+<parameter>variablelist.term.break.after</parameter>, you may also
+want to set the value of the
+<parameter>variablelist.term.separator</parameter> parameter to an
+empty string (to suppress rendering of the default comma and space
+after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml
new file mode 100644
index 0000000..4a4835d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="variablelist.term.properties">
+<refmeta>
+<refentrytitle>variablelist.term.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.properties</refname>
+<refpurpose>To add properties to the term elements in a variablelist.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="variablelist.term.properties.frag">
+<xsl:attribute-set name="variablelist.term.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>These properties are added to the block containing a
+term in a variablelist.
+Use this attribute-set to set
+font properties or alignment, for example.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml
new file mode 100644
index 0000000..f3df883
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="variablelist.term.separator">
+<refmeta>
+<refentrytitle>variablelist.term.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>variablelist.term.separator</refname>
+<refpurpose>Text to separate <tag>term</tag>s within a multi-term
+<tag>varlistentry</tag></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="variablelist.term.separator.frag">
+<xsl:param name="variablelist.term.separator">, </xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>When a <tag>varlistentry</tag> contains multiple <tag>term</tag>
+elements, the string specified in the value of the
+<parameter>variablelist.term.separator</parameter> parameter is placed
+after each <tag>term</tag> except the last.</para>
+
+<note>
+ <para>To generate a line break between multiple <tag>term</tag>s in
+ a <tag>varlistentry</tag>, set a non-zero value for the
+ <parameter>variablelist.term.break.after</parameter> parameter. If
+ you do so, you may also want to set the value of the
+ <parameter>variablelist.term.separator</parameter> parameter to an
+ empty string (to suppress rendering of the default comma and space
+ after each <tag>term</tag>).</para>
+</note>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml
new file mode 100644
index 0000000..28a368a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="verbatim.properties">
+<refmeta>
+<refentrytitle>verbatim.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>verbatim.properties</refname>
+<refpurpose>Properties associated with verbatim text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="verbatim.properties.frag">
+<xsl:attribute-set name="verbatim.properties">
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
+ <xsl:attribute name="white-space-collapse">false</xsl:attribute>
+ <xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This attribute set is used on all verbatim environments.</para>
+</refsection>
+
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml
new file mode 100644
index 0000000..4dae8a8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="wordml.template">
+<refmeta>
+<refentrytitle>wordml.template</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>wordml.template</refname>
+<refpurpose>Specify the template WordML document</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="wordml.template.frag">
+<xsl:param name="wordml.template"></xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>wordml.template</parameter> parameter specifies a WordML document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored.</para>
+
+<para>A template document is used in order to allow maintenance of the paragraph and character styles to be done using Word itself, rather than these XSL stylesheets.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml
new file mode 100644
index 0000000..c695933
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml
@@ -0,0 +1,83 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="writing.mode">
+<refmeta>
+<refentrytitle>writing.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>writing.mode</refname>
+<refpurpose>Direction of text flow based on locale</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="writing.mode.frag">
+<xsl:param name="writing.mode">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">writing-mode</xsl:with-param>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets direction of text flow and text alignment based on locale.
+The value is normally taken from the gentext file for the
+lang attribute of the document's root element, using the
+key name 'writing-mode' to look it up in the gentext file.
+But the param can also be
+set on the command line to override that gentext value.
+</para>
+<para>Accepted values are:
+<variablelist>
+ <varlistentry>
+ <term>lr-tb</term>
+ <listitem>
+ <para>Left-to-right text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl-tb</term>
+ <listitem>
+ <para>Right-to-left text flow in each line, lines stack top to bottom.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb-rl</term>
+ <listitem>
+ <para>Top-to-bottom text flow in each vertical line, lines stack right to left.
+ Supported by only a few XSL-FO processors. Not supported in HTML output.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>lr</term>
+ <listitem>
+ <para>Shorthand for lr-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rl</term>
+ <listitem>
+ <para>Shorthand for rl-tb.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tb</term>
+ <listitem>
+ <para>Shorthand for tb-rl.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml
new file mode 100644
index 0000000..b30391f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xbCollapsibleLists.js">
+<refmeta>
+<refentrytitle>xbCollapsibleLists.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbCollapsibleLists.js</refname>
+<refpurpose>xbCollapsibleLists JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xbCollapsibleLists.js.frag">
+<xsl:param name="xbCollapsibleLists.js">xbCollapsibleLists.js</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml
new file mode 100644
index 0000000..a699e9c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xbDOM.js">
+<refmeta>
+<refentrytitle>xbDOM.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbDOM.js</refname>
+<refpurpose>xbDOM JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xbDOM.js.frag">
+<xsl:param name="xbDOM.js">xbDOM.js</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbDOM JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml
new file mode 100644
index 0000000..fe2d8fe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xbLibrary.js">
+<refmeta>
+<refentrytitle>xbLibrary.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbLibrary.js</refname>
+<refpurpose>xbLibrary JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xbLibrary.js.frag">
+<xsl:param name="xbLibrary.js">xbLibrary.js</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbLibrary JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml
new file mode 100644
index 0000000..b587573
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xbStyle.js">
+<refmeta>
+<refentrytitle>xbStyle.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbStyle.js</refname>
+<refpurpose>xbStyle JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xbStyle.js.frag">
+<xsl:param name="xbStyle.js">xbStyle.js</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbStyle JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml
new file mode 100644
index 0000000..8ac2520
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xep.extensions">
+<refmeta>
+<refentrytitle>xep.extensions</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xep.extensions</refname>
+<refpurpose>Enable XEP extensions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xep.extensions.frag"><xsl:param name="xep.extensions" select="0"/></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero,
+<link xlink:href="http://www.renderx.com/">XEP</link>
+extensions will be used. XEP extensions consists of PDF bookmarks,
+document information and better index processing.
+</para>
+
+<para>This parameter can also affect which graphics file formats
+are supported</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml
new file mode 100644
index 0000000..b1db129
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xep.index.item.properties">
+<refmeta>
+<refentrytitle>xep.index.item.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xep.index.item.properties</refname>
+<refpurpose>Properties associated with XEP index-items</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xep.index.item.properties.frag">
+<xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties">
+ <xsl:attribute name="merge-subsequent-page-numbers">true</xsl:attribute>
+ <xsl:attribute name="link-back">true</xsl:attribute>
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Properties associated with XEP index-items, which generate
+page numbers in an index processed by XEP. For more info see
+the XEP documentation section "Indexes" in
+<uri xlink:href="http://www.renderx.com/reference.html#Indexes">http://www.renderx.com/reference.html#Indexes</uri>.</para>
+
+<para>This attribute-set also adds by default any properties from the
+<tag class="attribute">index.page.number.properties</tag>
+attribute-set.</para>
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml
new file mode 100644
index 0000000..355fc4a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml
@@ -0,0 +1,38 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xref.label-page.separator">
+<refmeta>
+<refentrytitle>xref.label-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-page.separator</refname>
+<refpurpose>Punctuation or space separating label from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xref.label-page.separator.frag"><xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and page
+but no title,
+then the value of this parameter is inserted between
+label and page number in the output.
+If a title is included, then other separators are used.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml
new file mode 100644
index 0000000..3d6e222
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xref.label-title.separator">
+<refmeta>
+<refentrytitle>xref.label-title.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.label-title.separator</refname>
+<refpurpose>Punctuation or space separating label from title in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xref.label-title.separator.frag"><xsl:param name="xref.label-title.separator">: </xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both label and title,
+then the value of this parameter is inserted between
+label and title in the output.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml
new file mode 100644
index 0000000..6438f6c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xref.properties">
+<refmeta>
+<refentrytitle>xref.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.properties</refname>
+<refpurpose>Properties associated with cross-reference text</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xref.properties.frag">
+<xsl:attribute-set name="xref.properties">
+</xsl:attribute-set>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is used to set properties
+on cross reference text.</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml
new file mode 100644
index 0000000..32ef9f1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xref.title-page.separator">
+<refmeta>
+<refentrytitle>xref.title-page.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.title-page.separator</refname>
+<refpurpose>Punctuation or space separating title from page number in xref</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xref.title-page.separator.frag"><xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param></src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>
+This parameter allows you to control the punctuation of certain
+types of generated cross reference text.
+When cross reference text is generated for an
+<tag class="element">xref</tag> or
+<tag class="element">olink</tag> element
+using an <tag class="attribute">xrefstyle</tag> attribute
+that makes use of the <literal>select:</literal> feature,
+and the selected components include both title and page number,
+then the value of this parameter is inserted between
+title and page number in the output.
+</para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml
new file mode 100644
index 0000000..06fcc7e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="xref.with.number.and.title">
+<refmeta>
+<refentrytitle>xref.with.number.and.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xref.with.number.and.title</refname>
+<refpurpose>Use number and title in cross references</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="xref.with.number.and.title.frag">
+<xsl:param name="xref.with.number.and.title" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>A cross reference may include the number (for example, the number of
+an example or figure) and the <tag>title</tag> which is a required child of some
+targets. This parameter inserts both the relevant number as well as
+the title into the link. </para>
+
+</refsection>
+</refentry>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl
new file mode 100644
index 0000000..c02132a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl
@@ -0,0 +1,239 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saxon="http://icl.com/saxon"
+ exclude-result-prefixes="saxon"
+ version="1.0">
+
+<!-- Should be base URI for imagedata and so on fixed? -->
+<xsl:param name="profile.baseuri.fixup" select="true()"/>
+
+<!-- Copy all non-element nodes -->
+<xsl:template match="@*|text()|comment()|processing-instruction()" mode="profile">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- Profile elements based on input parameters -->
+<xsl:template match="*" mode="profile">
+
+ <xsl:variable name="arch.content">
+ <xsl:if test="@arch">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.arch"/>
+ <xsl:with-param name="b" select="@arch"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="arch.ok" select="not(@arch) or not($profile.arch) or
+ $arch.content != '' or @arch = ''"/>
+
+ <xsl:variable name="audience.content">
+ <xsl:if test="@audience">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.audience"/>
+ <xsl:with-param name="b" select="@audience"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="audience.ok"
+ select="not(@audience) or not($profile.audience) or
+ $audience.content != '' or @audience = ''"/>
+
+ <xsl:variable name="condition.content">
+ <xsl:if test="@condition">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.condition"/>
+ <xsl:with-param name="b" select="@condition"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="condition.ok" select="not(@condition) or not($profile.condition) or
+ $condition.content != '' or @condition = ''"/>
+
+ <xsl:variable name="conformance.content">
+ <xsl:if test="@conformance">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.conformance"/>
+ <xsl:with-param name="b" select="@conformance"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="conformance.ok" select="not(@conformance) or not($profile.conformance) or
+ $conformance.content != '' or @conformance = ''"/>
+
+ <xsl:variable name="lang.content">
+ <xsl:if test="@lang | @xml:lang">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.lang"/>
+ <xsl:with-param name="b" select="(@lang | @xml:lang)[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="lang.ok" select="not(@lang | @xml:lang) or not($profile.lang) or
+ $lang.content != '' or @lang = '' or @xml:lang = ''"/>
+
+ <xsl:variable name="os.content">
+ <xsl:if test="@os">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.os"/>
+ <xsl:with-param name="b" select="@os"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="os.ok" select="not(@os) or not($profile.os) or
+ $os.content != '' or @os = ''"/>
+
+ <xsl:variable name="revision.content">
+ <xsl:if test="@revision">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.revision"/>
+ <xsl:with-param name="b" select="@revision"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="revision.ok" select="not(@revision) or not($profile.revision) or
+ $revision.content != '' or @revision = ''"/>
+
+ <xsl:variable name="revisionflag.content">
+ <xsl:if test="@revisionflag">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.revisionflag"/>
+ <xsl:with-param name="b" select="@revisionflag"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="revisionflag.ok" select="not(@revisionflag) or not($profile.revisionflag) or
+ $revisionflag.content != '' or @revisionflag = ''"/>
+
+ <xsl:variable name="role.content">
+ <xsl:if test="@role">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.role"/>
+ <xsl:with-param name="b" select="@role"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="role.ok" select="not(@role) or not($profile.role) or
+ $role.content != '' or @role = ''"/>
+
+ <xsl:variable name="security.content">
+ <xsl:if test="@security">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.security"/>
+ <xsl:with-param name="b" select="@security"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="security.ok" select="not(@security) or not($profile.security) or
+ $security.content != '' or @security = ''"/>
+
+ <xsl:variable name="status.content">
+ <xsl:if test="@status">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.status"/>
+ <xsl:with-param name="b" select="@status"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="status.ok" select="not(@status) or not($profile.status) or
+ $status.content != '' or @status = ''"/>
+
+ <xsl:variable name="userlevel.content">
+ <xsl:if test="@userlevel">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.userlevel"/>
+ <xsl:with-param name="b" select="@userlevel"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="userlevel.ok" select="not(@userlevel) or not($profile.userlevel) or
+ $userlevel.content != '' or @userlevel = ''"/>
+
+ <xsl:variable name="vendor.content">
+ <xsl:if test="@vendor">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.vendor"/>
+ <xsl:with-param name="b" select="@vendor"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="vendor.ok" select="not(@vendor) or not($profile.vendor) or
+ $vendor.content != '' or @vendor = ''"/>
+
+ <xsl:variable name="wordsize.content">
+ <xsl:if test="@wordsize">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.wordsize"/>
+ <xsl:with-param name="b" select="@wordsize"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="wordsize.ok"
+ select="not(@wordsize) or not($profile.wordsize) or
+ $wordsize.content != '' or @wordsize = ''"/>
+
+ <xsl:variable name="attribute.content">
+ <xsl:if test="@*[local-name()=$profile.attribute]">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$profile.value"/>
+ <xsl:with-param name="b" select="@*[local-name()=$profile.attribute]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="attribute.ok"
+ select="not(@*[local-name()=$profile.attribute]) or
+ not($profile.value) or $attribute.content != '' or
+ @*[local-name()=$profile.attribute] = '' or
+ not($profile.attribute)"/>
+
+ <xsl:if test="$arch.ok and
+ $audience.ok and
+ $condition.ok and
+ $conformance.ok and
+ $lang.ok and
+ $os.ok and
+ $revision.ok and
+ $revisionflag.ok and
+ $role.ok and
+ $security.ok and
+ $status.ok and
+ $userlevel.ok and
+ $vendor.ok and
+ $wordsize.ok and
+ $attribute.ok">
+ <xsl:copy>
+ <xsl:apply-templates mode="profile" select="@*"/>
+
+ <!-- Entity references must be replaced with filereferences for temporary tree -->
+ <xsl:if test="@entityref and $profile.baseuri.fixup">
+ <xsl:attribute name="fileref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- xml:base is eventually added to the root element -->
+ <xsl:if test="not(../..) and $profile.baseuri.fixup">
+ <xsl:call-template name="add-xml-base"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="node()" mode="profile"/>
+ </xsl:copy>
+ </xsl:if>
+</xsl:template>
+
+<!-- Returns non-empty string if list in $b contains one ore more values from list $a -->
+<xsl:template name="cross.compare">
+ <xsl:param name="a"/>
+ <xsl:param name="b"/>
+ <xsl:param name="sep" select="$profile.separator"/>
+ <xsl:variable name="head" select="substring-before(concat($a, $sep), $sep)"/>
+ <xsl:variable name="tail" select="substring-after($a, $sep)"/>
+ <xsl:if test="contains(concat($sep, $b, $sep), concat($sep, $head, $sep))">1</xsl:if>
+ <xsl:if test="$tail">
+ <xsl:call-template name="cross.compare">
+ <xsl:with-param name="a" select="$tail"/>
+ <xsl:with-param name="b" select="$b"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl
new file mode 100644
index 0000000..b188fbb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl
@@ -0,0 +1,56 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- Include common profiling stylesheet -->
+<xsl:import href="profile-mode.xsl"/>
+
+<!-- This file must be included, because profile-mode is using templates from it -->
+<xsl:import href="../common/stripns.xsl"/>
+
+<!-- In the two pass processing there is no need for base URI fixup -->
+<xsl:param name="profile.baseuri.fixup" select="false()"/>
+
+<!-- If you need to validate profiled content against DTD,
+ create customization that will import this stylesheet and
+ will use xsl:output (see example bellow) to output reference
+ to the desired DTD version. -->
+<!-- Generate DocBook instance with correct DOCTYPE -->
+<!--
+<xsl:output method="xml"
+ doctype-public="-//OASIS//DTD DocBook XML V4.5//EN"
+ doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"/>
+-->
+
+<!-- Profiling parameters -->
+<xsl:param name="profile.arch" select="''"/>
+<xsl:param name="profile.audience" select="''"/>
+<xsl:param name="profile.condition" select="''"/>
+<xsl:param name="profile.conformance" select="''"/>
+<xsl:param name="profile.lang" select="''"/>
+<xsl:param name="profile.os" select="''"/>
+<xsl:param name="profile.revision" select="''"/>
+<xsl:param name="profile.revisionflag" select="''"/>
+<xsl:param name="profile.role" select="''"/>
+<xsl:param name="profile.security" select="''"/>
+<xsl:param name="profile.status" select="''"/>
+<xsl:param name="profile.userlevel" select="''"/>
+<xsl:param name="profile.vendor" select="''"/>
+<xsl:param name="profile.wordsize" select="''"/>
+<xsl:param name="profile.attribute" select="''"/>
+<xsl:param name="profile.value" select="''"/>
+<xsl:param name="profile.separator" select="';'"/>
+
+<xsl:param name="exsl.node.set.available">
+ <xsl:choose>
+ <xsl:when xmlns:exsl="http://exslt.org/common" exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<!-- Call common profiling mode -->
+<xsl:template match="/">
+ <xsl:apply-templates select="." mode="profile"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl
new file mode 100644
index 0000000..d6f55fb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="xml"/>
+
+<xsl:param name="attributes" select="''"/>
+
+<xsl:variable name="strip-attributes"
+ select="concat(' ', normalize-space($attributes), ' ')"/>
+
+<xsl:template match="@*|text()|comment()|processing-instruction()">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="*">
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:if test="not(contains($strip-attributes, concat(' ',name(.),' ')))">
+ <xsl:copy-of select="."/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="node()"/>
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl
new file mode 100644
index 0000000..b6648aa
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xslo="http://www.w3.org/1999/XSL/TransformAlias"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ exclude-result-prefixes="fo"
+ version="1.0">
+
+<xsl:include href="../lib/lib.xsl"/>
+
+<xsl:output method="xml" encoding="US-ASCII"/>
+
+<xsl:namespace-alias stylesheet-prefix="xslo" result-prefix="xsl"/>
+
+<xsl:preserve-space elements="*"/>
+
+<xsl:template match="/">
+ <xsl:comment>This file was created automatically by xsl2profile</xsl:comment>
+ <xsl:comment>from the DocBook XSL stylesheets.</xsl:comment>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- Make sure we override some templates and parameters appropriately for XHTML -->
+<xsl:template match="xsl:stylesheet">
+ <xsl:copy>
+ <xsl:attribute name="exslt:dummy" xmlns:exslt="http://exslt.org/common">dummy</xsl:attribute>
+ <xsl:attribute name="ng:dummy" xmlns:ng="http://docbook.org/docbook-ng">dummy</xsl:attribute>
+ <xsl:attribute name="db:dummy" xmlns:db="http://docbook.org/ns/docbook">dummy</xsl:attribute>
+ <xsl:if test="not(@extension-element-prefixes)">
+ <xsl:attribute name="extension-element-prefixes">exslt</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="not(@exclude-result-prefixes)">
+ <xsl:attribute name="exclude-result-prefixes">exslt</xsl:attribute>
+ </xsl:if>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'extension-element-prefixes' or
+ local-name(.) = 'exclude-result-prefixes'">
+ <xsl:attribute name="{local-name(.)}"><xsl:value-of select="concat(., ' exslt')"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{local-name(.)}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="*">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="xsl:template[@match='/']">
+ <xslo:include href="../profiling/profile-mode.xsl"/>
+ <xslo:variable name="profiled-content">
+ <xslo:choose>
+ <xslo:when test="*/self::ng:* or */self::db:*">
+ <xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message>
+ <xslo:variable name="stripped-content">
+ <xslo:apply-templates select="/" mode="stripNS"/>
+ </xslo:variable>
+ <xslo:message>Note: namesp. cut : processing stripped document</xslo:message>
+ <xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/>
+ </xslo:when>
+ <xslo:otherwise>
+ <xslo:apply-templates select="/" mode="profile"/>
+ </xslo:otherwise>
+ </xslo:choose>
+ </xslo:variable>
+ <xslo:variable name="profiled-nodes" select="exslt:node-set($profiled-content)"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="correct"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="xsl:template[@name='hhc-main' or @name='hhp-main' or @name='hhk' or @name='hh-map' or @name='hh-alias' or @name='etoc'] | xsl:variable[@name='raw.help.title']">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="correct"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="*[starts-with(@select, '/')]" mode="correct">
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'select' and string(.) = '/'">
+ <xsl:attribute name="{local-name(.)}">$profiled-nodes</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'select' and starts-with(., '/')">
+ <xsl:attribute name="{local-name(.)}">$profiled-nodes<xsl:value-of select="."/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{local-name(.)}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="correct"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match='*[contains(@*, "key(&apos;id&apos;,$rootid)")]' mode="correct" priority="2">
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test='contains(., "key(&apos;id&apos;,$rootid)")'>
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="."/>
+ <xsl:with-param name="target">key('id',$rootid)</xsl:with-param>
+ <xsl:with-param name="replacement">$profiled-nodes//*[@id=$rootid]</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{local-name(.)}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="correct"/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- FO stylesheet has apply-templates without select, we must detect it by context -->
+<xsl:template match="fo:root//xsl:apply-templates" mode="correct">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:attribute name="select">$profiled-nodes/node()</xsl:attribute>
+ <xsl:apply-templates mode="correct"/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- DB5 namespace stripping is already done -->
+<xsl:template match="xsl:when[contains(@test, 'self::db')]" mode="correct">
+ <xsl:copy>
+ <xsl:attribute name="test">false()</xsl:attribute>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="*" mode="correct">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="correct"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()" mode="correct">
+ <xsl:copy/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml
new file mode 100644
index 0000000..d8ab005
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml
@@ -0,0 +1,11 @@
+<group:root xmlns:group='http://www.explain.com.au/grouping'>
+ <bibliography styles='bibliography bibliography-title'>
+ <bibliodiv styles='bibliodiv bibliodiv-title'/>
+ </bibliography>
+ <glossary styles='glossary glossary-title'>
+ <glossdiv styles='glossdiv glossdiv-title'/>
+ </glossary>
+ <qandaset styles='qandaset qandaset-title'>
+ <qandadiv styles='qandadiv qandadiv-title'/>
+ </qandaset>
+</group:root>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd
new file mode 100644
index 0000000..4d1ea04
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd
@@ -0,0 +1,76 @@
+ <!ENTITY components-extra ""> <!-- for customisation -->
+ <!ENTITY components "dbk:appendix |
+ dbk:article |
+ dbk:book |
+ dbk:chapter |
+ dbk:part |
+ dbk:preface |
+ dbk:section |
+ dbk:sect1 |
+ dbk:sect2 |
+ dbk:sect3 |
+ dbk:sect4 |
+ dbk:sect5
+ &components-extra;">
+
+ <!ENTITY blocks-extra ""> <!-- for customisation -->
+ <!ENTITY blocks "dbk:bibliography |
+ dbk:bibliodiv |
+ dbk:glossary |
+ dbk:glossdiv |
+ dbk:qandaset |
+ dbk:qandadiv
+ &blocks-extra;">
+
+ <!ENTITY metadata-extra ""> <!-- for customisation -->
+ <!ENTITY metadata-content 'contains(@rnd:style, "-title") or
+ contains(@rnd:style, "-subtitle") or
+ @rnd:style = "abstract" or
+ @rnd:style = "address" or
+ @rnd:style = "affiliation" or
+ @rnd:style = "author" or
+ @rnd:style = "biblioid" or
+ @rnd:style = "bibliomisc" or
+ @rnd:style = "bibliosource" or
+ @rnd:style = "contrib" or
+ @rnd:style = "date" or
+ @rnd:style = "edition" or
+ @rnd:style = "editor" or
+ @rnd:style = "email" or
+ @rnd:style = "issuenum" or
+ @rnd:style = "keyword" or
+ @rnd:style = "legalnotice" or
+ @rnd:style = "othercredit" or
+ @rnd:style = "pagenums" or
+ @rnd:style = "personblurb" or
+ @rnd:style = "pubdate" or
+ @rnd:style = "publisher" or
+ @rnd:style = "publisher-address" or
+ @rnd:style = "releaseinfo" or
+ @rnd:style = "revhistory" or
+ @rnd:style = "revision" or
+ @rnd:style = "volumenum"
+ &metadata-extra;'>
+
+ <!ENTITY author-extra ""> <!-- for customisation -->
+ <!ENTITY author-content '@rnd:style = "personblurb" or
+ @rnd:style = "address" or
+ @rnd:style = "affiliation" or
+ @rnd:style = "contrib" or
+ @rnd:style = "email"
+ &author-extra;'>
+
+ <!ENTITY admonition-extra ""> <!-- for customisation -->
+ <!ENTITY admonition '@rnd:style = "caution" or
+ @rnd:style = "important" or
+ @rnd:style = "note" or
+ @rnd:style = "tip" or
+ @rnd:style = "warning"
+ &admonition-extra;'>
+ <!ENTITY admonition-title-extra ""> <!-- for customisation -->
+ <!ENTITY admonition-title '@rnd:style = "caution-title" or
+ @rnd:style = "important-title" or
+ @rnd:style = "note-title" or
+ @rnd:style = "tip-title" or
+ @rnd:style = "warning-title"
+ &admonition-title-extra;'>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl
new file mode 100644
index 0000000..e14999f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl
@@ -0,0 +1,1732 @@
+<!DOCTYPE xsl:stylesheet [
+<!-- External DTD defines entities:
+ components :- QNames of component-level elements
+ blocks :- QNames of block-level elements
+ metadata-content :- XPath expression matching metadata styles
+ author-content :- XPath expression matching author styles
+ admonition :- XPath expression matching admonition styles
+ admonition-title :- XPath expression matching admonition title styles
+-->
+<!ENTITY % ext SYSTEM "blocks2dbk.dtd">
+%ext;
+]>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:dbk='http://docbook.org/ns/docbook'
+ xmlns:rnd='http://docbook.org/ns/docbook/roundtrip'
+ xmlns:xlink='http://www.w3.org/1999/xlink'>
+
+ <!-- $Id: blocks2dbk.xsl 8137 2008-10-09 03:37:56Z balls $ -->
+ <!-- Stylesheet to convert word processing docs to DocBook -->
+ <!-- This stylesheet processes the output of sections2blocks.xsl -->
+
+ <xsl:output indent="yes" method="xml"
+ cdata-section-elements='dbk:programlisting dbk:literallayout'/>
+
+ <!-- ================================================== -->
+ <!-- Parameters -->
+ <!-- ================================================== -->
+
+ <xsl:param name='docbook5'>0</xsl:param>
+ <xsl:param name="nest.sections">1</xsl:param>
+
+ <xsl:strip-space elements='*'/>
+ <xsl:preserve-space elements='dbk:para dbk:emphasis'/>
+
+ <xsl:template match="&components; |
+ &blocks;">
+ <xsl:choose>
+ <xsl:when test='self::dbk:article and
+ count(dbk:book) = 1 and
+ count(dbk:info|dbk:book) &lt;= 2'>
+ <xsl:apply-templates select='dbk:book'/>
+ </xsl:when>
+ <xsl:when test='self::dbk:article and
+ *[1][self::dbk:para] and
+ *[1]/@rnd:style != "article-title" and
+ contains(*[1]/@rnd:style, "-title")'>
+ <xsl:variable name='element-name'
+ select='substring-before(*[1]/@rnd:style, "-title")'/>
+ <xsl:element name='{$element-name}'
+ namespace='http://docbook.org/ns/docbook'>
+ <dbk:info>
+ <xsl:apply-templates select='*[1]'
+ mode='rnd:metadata'/>
+ </dbk:info>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:call-template name='rnd:attributes'/>
+
+ <xsl:variable name='metadata'>
+ <xsl:apply-templates select='*[1]'
+ mode='rnd:metadata'/>
+ </xsl:variable>
+ <xsl:if test='$metadata'>
+ <dbk:info>
+ <xsl:copy-of select='$metadata'/>
+ </dbk:info>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:book-component'>
+ <xsl:variable name='element-name'
+ select='substring-before(*[1]/@rnd:style, "-title")'/>
+
+ <xsl:element name='{$element-name}'
+ namespace='http://docbook.org/ns/docbook'>
+ <dbk:info>
+ <xsl:apply-templates select='*[1]'
+ mode='rnd:metadata'/>
+ </dbk:info>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="dbk:para" name='rnd:para'>
+ <!-- Some elements are normally suppressed,
+ since they are processed in a different context.
+ If this parameter is false then the element will be processed normally.
+ -->
+ <xsl:param name='suppress' select='true()'/>
+
+ <!-- This paragraph may be in a sidebar -->
+ <xsl:variable name='sidebar'
+ select='preceding-sibling::*[self::dbk:para and @rnd:style = "sidebar-title"][1]'/>
+
+ <!-- This paragraph may be in the textobject of a table or figure -->
+ <xsl:variable name='table'
+ select='preceding-sibling::dbk:informaltable[1]'/>
+ <xsl:variable name='figure'
+ select='preceding-sibling::dbk:para[@rnd:style = "informalfigure-imagedata" or (dbk:inlinemediaobject and count(*) = 1 and normalize-space(.) = "")][1]'/>
+ <xsl:variable name='caption'
+ select='following-sibling::dbk:para[@rnd:style = "caption" or @rnd:style = "Caption"]'/>
+
+ <xsl:choose>
+ <!-- continue style paragraphs are handled in context -->
+ <xsl:when test='$suppress and
+ @rnd:style = "para-continue"'/>
+
+ <!-- Certain elements gather the following paragraph -->
+ <xsl:when test='$suppress and
+ preceding-sibling::*[1][self::dbk:para and
+ @rnd:style = "example-title"]'/>
+
+ <xsl:when test='$suppress and
+ $sidebar and
+ not(preceding-sibling::dbk:para[(not(@rnd:style) or @rnd:style = "") and
+ preceding-sibling::*[preceding-sibling::*[generate-id() = generate-id($sidebar)]]])'/>
+
+ <!-- Separate processing is performed for table/figure titles and captions -->
+ <xsl:when test='$suppress and
+ @rnd:style = "table-title" and
+ following-sibling::*[1][self::dbk:informaltable|self::dbk:para[@rnd:style = "informalfigure-imagedata"]|self::dbk:para[dbk:inlinemediaobject and count(*) = 1 and normalize-space() = ""]]'/>
+ <xsl:when test='$suppress and
+ @rnd:style = "figure-title" and
+ following-sibling::*[1][self::dbk:para][@rnd:style = "informalfigure-imagedata" or (dbk:inlinemediaobject and count(*) = 1 and normalize-space(.) = "")]'/>
+ <xsl:when test='$suppress and
+ (@rnd:style = "caption" or @rnd:style = "Caption") and
+ (preceding-sibling::*[self::dbk:informaltable] or
+ preceding-sibling::*[self::dbk:para][@rnd:style = "informalfigure-imagedata" or (dbk:inlinemediaobject and count(*) = 1 and normalize-space(.) = "")])'/>
+
+ <xsl:when test='$suppress and
+ $table and
+ $caption and
+ generate-id($caption/preceding-sibling::dbk:informaltable[1]) = generate-id($table)'/>
+ <xsl:when test='$suppress and
+ $figure and
+ $caption and
+ generate-id($caption/preceding-sibling::dbk:para[@rnd:style = "informalfigure-imagedata" or (dbk:inlinemediaobject and count(*) = 1 and normalize-space(.) = "")][1]) = generate-id($figure)'/>
+
+ <xsl:when test='@rnd:style = "imagedata-metadata" or
+ @rnd:style = "table-metadata"'/>
+
+ <!-- Ignore empty paragraphs -->
+ <xsl:when test='(not(@rnd:style) or
+ @rnd:style = "") and
+ normalize-space(.) = "" and
+ not(*)'/>
+
+ <!-- Image inline or block? -->
+ <xsl:when test='(not(@rnd:style) or
+ @rnd:style = "") and
+ normalize-space(.) = "" and
+ count(*) = 1 and
+ dbk:inlinemediaobject'>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test='not(@rnd:style) or
+ @rnd:style = "" or
+ @rnd:style = "para-continue"'>
+ <dbk:para>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:para>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "xinclude"'
+ xmlns:xi='http://www.w3.org/2001/XInclude'>
+ <xi:include>
+ <xsl:attribute name='href'>
+ <xsl:apply-templates mode='rnd:xinclude'/>
+ </xsl:attribute>
+ </xi:include>
+ </xsl:when>
+
+ <xsl:when test='$suppress and
+ preceding-sibling::*[1]/self::dbk:para[&admonition-title;]'/>
+ <xsl:when test='&admonition-title;'>
+ <xsl:element name='{substring-before(@rnd:style, "-title")}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:title>
+ <xsl:apply-templates/>
+ </dbk:title>
+ <xsl:apply-templates select='following-sibling::*[1]'>
+ <xsl:with-param name='suppress' select='false()'/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select='following-sibling::*[2]'
+ mode='rnd:continue'/>
+ </xsl:element>
+ </xsl:when>
+
+ <xsl:when test='starts-with(@rnd:style, "itemizedlist") or
+ starts-with(@rnd:style, "orderedlist")'>
+
+ <xsl:variable name='stop.node'
+ select='following-sibling::dbk:para[not(@rnd:style) or
+ (not(starts-with(@rnd:style, "itemizedlist") or starts-with(@rnd:style, "orderedlist")) and @rnd:style != "para-continue")][1]'/>
+
+ <xsl:choose>
+ <xsl:when test='translate(substring-after(@rnd:style, "list"), "0123456789", "") != "" or
+ substring-after(@rnd:style, "list") = ""'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code' select='"list-bad-level"'/>
+ <xsl:with-param name='message'>style "<xsl:value-of select='@rnd:style'/>" is not a valid list style</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- TODO: the previous para-continue may not be associated with a list -->
+
+ <!-- NB. Look back at the previous paragraph. There may be intervening tables or images. -->
+ <xsl:when test='preceding-sibling::dbk:para[1][starts-with(@rnd:style, "itemizedlist") or starts-with(@rnd:style, "orderedlist") or @rnd:style = "para-continue"]'/>
+ <xsl:when test='substring-after(@rnd:style, "list") != 1'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>list-wrong-level</xsl:with-param>
+ <xsl:with-param name='message'>list started at the wrong level</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$stop.node'>
+ <xsl:element name='{substring-before(@rnd:style, "1")}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates select='.|following-sibling::dbk:para[@rnd:style = current()/@rnd:style][following-sibling::*[generate-id() = generate-id($stop.node)]]'
+ mode='rnd:listitem'/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name='{substring-before(@rnd:style, "1")}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates select='.|following-sibling::dbk:para[@rnd:style = current()/@rnd:style]'
+ mode='rnd:listitem'/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "programlisting" and
+ preceding-sibling::*[1][self::dbk:para and @rnd:style = "programlisting"]'/>
+ <xsl:when test='@rnd:style = "literallayout" and
+ preceding-sibling::*[1][self::dbk:para and @rnd:style = "literallayout"]'/>
+ <xsl:when test='@rnd:style = "programlisting" or
+ @rnd:style = "literallayout"'>
+
+ <xsl:variable name='stop.node'
+ select='following-sibling::dbk:para[@rnd:style != current()/@rnd:style][1]'/>
+
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates/>
+
+ <xsl:choose>
+ <xsl:when test='$stop.node'>
+ <xsl:apply-templates select='following-sibling::dbk:para[following-sibling::*[generate-id() = generate-id($stop.node)]]'
+ mode='rnd:programlisting'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select='following-sibling::dbk:para'
+ mode='rnd:programlisting'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "example-title"'>
+ <xsl:element name='{substring-before(@rnd:style, "-title")}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:title>
+ <xsl:apply-templates/>
+ </dbk:title>
+
+ <xsl:apply-templates select='following-sibling::*[1]'>
+ <xsl:with-param name='suppress' select='false()'/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "sidebar-title"'>
+ <!-- TODO: next sidebar should stop this sidebar -->
+ <xsl:variable name='stop.node'
+ select='following-sibling::dbk:para[(not(@rnd:style) or @rnd:style = "") and
+ normalize-space(.) = ""][1]'/>
+
+ <dbk:sidebar>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:info>
+ <dbk:title>
+ <xsl:apply-templates/>
+ </dbk:title>
+ </dbk:info>
+
+ <xsl:choose>
+ <xsl:when test='$stop.node'>
+ <xsl:apply-templates select='following-sibling::*[following-sibling::*[generate-id() = generate-id($stop.node)]]'
+ mode='rnd:sidebar'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select='following-sibling::*'
+ mode='rnd:sidebar'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dbk:sidebar>
+ </xsl:when>
+
+ <xsl:when test='&admonition;'>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:para>
+ <xsl:apply-templates/>
+ </dbk:para>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:continue'/>
+ </xsl:element>
+ </xsl:when>
+
+ <!-- TODO: make sure this is in a bibliography.
+ If not, create a bibliolist.
+ -->
+ <xsl:when test='@rnd:style = "bibliomixed"'>
+ <dbk:bibliomixed>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:bibliomixed>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "biblioentry-title"'>
+ <dbk:biblioentry>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:title>
+ <xsl:apply-templates/>
+ </dbk:title>
+ <xsl:if test='following-sibling::*[1][&metadata-content;]'>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:if>
+ </dbk:biblioentry>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "blockquote-attribution" and
+ preceding-sibling::*[1][self::dbk:para][@rnd:style = "blockquote-title" or @rnd:style = "blockquote"]'/>
+ <xsl:when test='@rnd:style = "blockquote-attribution"'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>improper-blockquote-attribution</xsl:with-param>
+ <xsl:with-param name='message'>blockquote attribution must follow a blockquote title</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "blockquote" or
+ @rnd:style = "blockquote-title"'>
+ <xsl:choose>
+ <xsl:when test='@rnd:style = "blockquote" and
+ preceding-sibling::*[1][self::dbk:para][starts-with(@rnd:style, "blockquote")]'/>
+ <xsl:otherwise>
+
+ <xsl:variable name='stop.node'
+ select='following-sibling::*[not(@rnd:style = "blockquote" or
+ @rnd:style = "blockquote-attribution")][1]'/>
+
+ <dbk:blockquote>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:if test='@rnd:style = "blockquote-title"'>
+ <dbk:info>
+ <dbk:title>
+ <xsl:apply-templates/>
+ </dbk:title>
+ </dbk:info>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test='$stop.node'>
+ <xsl:apply-templates select='following-sibling::*[following-sibling::*[generate-id() = generate-id($stop.node)]][@rnd:style = "blockquote-attribution"]' mode='rnd:blockquote-attribution'/>
+ <xsl:apply-templates select='self::*[@rnd:style = "blockquote"] |
+ following-sibling::*[following-sibling::*[generate-id() = generate-id($stop.node)]]'
+ mode='rnd:blockquote'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select='following-sibling::*[@rnd:style = "blockquote-attribution"]' mode='rnd:blockquote-attribution'/>
+ <xsl:apply-templates select='self::*[@rnd:style = "blockquote"] |
+ following-sibling::*'
+ mode='rnd:blockquote'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dbk:blockquote>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "bridgehead"'>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "formalpara-title"'>
+ <dbk:formalpara>
+ <dbk:title>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:title>
+ <xsl:choose>
+ <xsl:when test='following-sibling::*[1][self::dbk:para][@rnd:style = "formalpara"]'>
+ <dbk:para>
+ <xsl:call-template name='rnd:attributes'>
+ <xsl:with-param name='node'
+ select='following-sibling::*[1]'/>
+ </xsl:call-template>
+ <xsl:apply-templates select='following-sibling::*[1]/node()'/>
+ </dbk:para>
+ </xsl:when>
+ </xsl:choose>
+ </dbk:formalpara>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "formalpara" and
+ preceding-sibling::*[1][self::dbk:para][@rnd:style = "formalpara-title"]'/>
+ <xsl:when test='@rnd:style = "formalpara"'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>formalpara-notitle</xsl:with-param>
+ <xsl:with-param name='message'>formalpara used without a title</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "informalfigure-imagedata"'>
+ <xsl:variable name='caption.next'
+ select='following-sibling::dbk:para[@rnd:style = "caption" or @rnd:style = "Caption"][1]'/>
+
+ <xsl:variable name='metadata'
+ select='preceding-sibling::*[1][self::dbk:para][@rnd:style = "imagedata-metadata"]'/>
+
+ <xsl:choose>
+ <xsl:when test='preceding-sibling::*[1][self::dbk:para][@rnd:style = "figure-title"] or
+ ($metadata and preceding-sibling::*[2][self::dbk:para][@rnd:style = "figure-title"])'>
+ <dbk:figure>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:info>
+ <dbk:title>
+ <xsl:choose>
+ <xsl:when test='$metadata'>
+ <xsl:apply-templates
+ select='preceding-sibling::*[2]/node()'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates
+ select='preceding-sibling::*[1]/node()'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dbk:title>
+ </dbk:info>
+ <dbk:mediaobject>
+ <dbk:imageobject>
+ <dbk:imagedata>
+ <xsl:attribute name='fileref'>
+ <xsl:choose>
+ <xsl:when test='dbk:inlinemediaobject/dbk:imageobject/dbk:imagedata/@fileref != ""'>
+ <xsl:value-of select='dbk:inlinemediaobject/dbk:imageobject/dbk:imagedata/@fileref'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='.'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:call-template name='rnd:imagedata-attributes'>
+ <xsl:with-param name='metadata' select='$metadata'/>
+ </xsl:call-template>
+ </dbk:imagedata>
+ </dbk:imageobject>
+ </dbk:mediaobject>
+ <xsl:call-template name='rnd:figure-text-caption'>
+ <xsl:with-param name='caption' select='$caption.next'/>
+ </xsl:call-template>
+ </dbk:figure>
+ </xsl:when>
+ <xsl:when test='preceding-sibling::*[1][self::dbk:para][@rnd:style = "table-title"] or
+ ($metadata and preceding-sibling::*[2][self::dbk:para][@rnd:style = "table-title"])'>
+ <dbk:table>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:info>
+ <dbk:title>
+ <xsl:choose>
+ <xsl:when test='$metadata'>
+ <xsl:apply-templates
+ select='preceding-sibling::*[2]/node()'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates
+ select='preceding-sibling::*[1]/node()'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dbk:title>
+ </dbk:info>
+
+ <dbk:mediaobject>
+ <dbk:imageobject>
+ <dbk:imagedata>
+ <xsl:attribute name='fileref'>
+ <xsl:choose>
+ <xsl:when test='dbk:inlinemediaobject/dbk:imageobject/dbk:imagedata/@fileref != ""'>
+ <xsl:value-of select='dbk:inlinemediaobject/dbk:imageobject/dbk:imagedata/@fileref'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='.'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:call-template name='rnd:imagedata-attributes'>
+ <xsl:with-param name='metadata' select='$metadata'/>
+ </xsl:call-template>
+ </dbk:imagedata>
+ </dbk:imageobject>
+ </dbk:mediaobject>
+ <xsl:call-template name='rnd:figure-text-caption'>
+ <xsl:with-param name='caption' select='$caption.next'/>
+ </xsl:call-template>
+ </dbk:table>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:informalfigure>
+ <xsl:call-template name='rnd:attributes'/>
+ <dbk:mediaobject>
+ <dbk:imageobject>
+ <dbk:imagedata>
+ <xsl:attribute name='fileref'>
+ <xsl:choose>
+ <xsl:when test='dbk:inlinemediaobject/dbk:imageobject/dbk:imagedata/@fileref != ""'>
+ <xsl:value-of select='dbk:inlinemediaobject/dbk:imageobject/dbk:imagedata/@fileref'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='.'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:call-template name='rnd:imagedata-attributes'>
+ <xsl:with-param name='metadata' select='$metadata'/>
+ </xsl:call-template>
+ </dbk:imagedata>
+ </dbk:imageobject>
+ </dbk:mediaobject>
+ <xsl:call-template name='rnd:figure-text-caption'>
+ <xsl:with-param name='caption' select='$caption.next'/>
+ </xsl:call-template>
+ </dbk:informalfigure>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test='(@rnd:style = "caption" or @rnd:style = "Caption") and
+ preceding-sibling::*[(self::dbk:para and contains(@rnd:style, "imagedata")) or self::dbk:informaltable]'/>
+ <xsl:when test='@rnd:style = "caption" or @rnd:style = "Caption"'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-caption</xsl:with-param>
+ <xsl:with-param name='message'>caption does not follow table or figure</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='(contains(@rnd:style, "-title") or
+ contains(@rnd:style, "-titleabbrev") or
+ contains(@rnd:style, "-subtitle")) and
+ not(starts-with(@rnd:style, "blockquote") or starts-with(@rnd:style, "formal"))'>
+ <!-- TODO: check that no non-metadata elements occur before this paragraph -->
+ </xsl:when>
+
+ <!-- Metadata elements are handled in rnd:metadata mode -->
+ <!-- TODO: check that no non-metadata elements occur before this paragraph -->
+ <xsl:when test='&metadata-content;'/>
+
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>unknown-style</xsl:with-param>
+ <xsl:with-param name='message'>unknown paragraph style "<xsl:value-of select='@rnd:style'/>" encountered</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Determine if the caption belongs to the current figure.
+ If so, then process the textobject content and the caption.
+ -->
+ <xsl:template name='rnd:figure-text-caption'>
+ <xsl:param name='caption' select='/..'/>
+
+ <xsl:variable name='textobjs'
+ select='following-sibling::*[following-sibling::*[generate-id() = generate-id($caption)]]'/>
+
+ <xsl:choose>
+ <xsl:when test='not($caption)'/> <!-- nothing to do -->
+ <xsl:when test='$textobjs[self::dbk:informaltable |
+ self::dbk:inlinemediaobject |
+ self::dbk:para[@rnd:style = "informalfigure-imagedata" or
+ @rnd:style = "mediaobject-imagedata"]]'/> <!-- caption belongs to something else -->
+ <xsl:otherwise>
+ <xsl:apply-templates select='$textobjs' mode='rnd:textobject'/>
+
+ <xsl:apply-templates select='$caption' mode='rnd:caption'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:caption'>
+ <dbk:caption>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:caption>
+ </xsl:template>
+
+ <xsl:template name='rnd:imagedata-attributes'>
+ <xsl:param name='metadata' select='""'/>
+
+ <xsl:choose>
+ <xsl:when test='not($metadata)'/>
+ <xsl:when test='contains($metadata, " ")'>
+ <xsl:call-template name='rnd:imagedata-attributes'>
+ <xsl:with-param name='metadata'
+ select='substring-before($metadata, " ")'/>
+ </xsl:call-template>
+ <xsl:call-template name='rnd:imagedata-attributes'>
+ <xsl:with-param name='metadata'
+ select='substring-after($metadata, " ")'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='not(contains($metadata, "="))'>
+ <xsl:call-template name='rnd:warning'>
+ <xsl:with-param name='code' select='"imagedata-missing-value"'/>
+ <xsl:with-param name='message'>
+ <xsl:text>imagedata-metadata missing value for attribute "</xsl:text>
+ <xsl:value-of select='$metadata'/>
+ <xsl:text>"</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name='name'
+ select='translate(normalize-space(substring-before($metadata, "=")), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")'/>
+ <xsl:variable name='value'
+ select='translate(normalize-space(substring-after($metadata, "=")), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")'/>
+
+ <xsl:choose>
+ <xsl:when test='$name = "scalefit"'>
+ <xsl:attribute name='scalefit'>
+ <xsl:choose>
+ <xsl:when test='$value = "1" or
+ $value = "yes" or
+ $value = "true"'>1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$name = "align" or
+ $name = "contentdepth" or
+ $name = "contentwidth" or
+ $name = "depth" or
+ $name = "scale" or
+ $name = "valign" or
+ $name = "width"'>
+ <!-- TODO: check enumerate values-->
+ <xsl:attribute name='{$name}'>
+ <xsl:value-of select='$value'/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code' select='"imagedata-unknown-attribute"'/>
+ <xsl:with-param name='message'>
+ <xsl:text>imagedata-metadata unknown attribute "</xsl:text>
+ <xsl:value-of select='$name'/>
+ <xsl:text>"</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:emphasis'>
+ <xsl:choose>
+ <xsl:when test='not(@rnd:style) and @role = "italic"'>
+ <xsl:copy>
+ <xsl:apply-templates mode='rnd:copy'/>
+ </xsl:copy>
+ </xsl:when>
+ <xsl:when test='not(@rnd:style) or @role'>
+ <xsl:copy>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates mode='rnd:copy'/>
+ </xsl:copy>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = preceding-sibling::node()[1][self::dbk:emphasis]/@rnd:style'/>
+
+ <xsl:when test='@rnd:style = "emphasis"'>
+ <xsl:copy>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates mode='rnd:copy'/>
+ <xsl:apply-templates select='following-sibling::node()[1]'
+ mode='rnd:emphasis'/>
+ </xsl:copy>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "emphasis-bold" or
+ @rnd:style = "emphasis-strong"'>
+ <xsl:copy>
+ <xsl:attribute name='role'>bold</xsl:attribute>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates mode='rnd:copy'/>
+ <xsl:apply-templates select='following-sibling::node()[1]'
+ mode='rnd:emphasis'/>
+ </xsl:copy>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "emphasis-underline"'>
+ <xsl:copy>
+ <xsl:attribute name='role'>underline</xsl:attribute>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates mode='rnd:copy'/>
+ <xsl:apply-templates select='following-sibling::node()[1]'
+ mode='rnd:emphasis'/>
+ </xsl:copy>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "citetitle" or
+ @rnd:style = "literal" or
+ @rnd:style = "sgmltag"'>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ <xsl:apply-templates select='following-sibling::node()[1]'
+ mode='rnd:emphasis'/>
+ </xsl:element>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "Hyperlink" and
+ parent::dbk:link'>
+ <!-- This occurs in a hyperlink; parent should be dbk:link -->
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "Hyperlink"'>
+ <!-- dbk:link is missing -->
+ <dbk:link xlink:href='{.}'>
+ <xsl:apply-templates/>
+ </dbk:link>
+ </xsl:when>
+
+ <!-- In rare circumstances, Word inserts an empty element that appears to be something like a space in the editor -->
+ <xsl:when test='(@rnd:style = "EndnoteReference" or
+ @rnd:style = "FootnoteReference") and
+ . = ""'>
+ <xsl:text> </xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>unknown-style</xsl:with-param>
+ <xsl:with-param name='message'>unknown character span style "<xsl:value-of select='@rnd:style'/>" encountered</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Coalesce emphasis elements into a single element -->
+ <xsl:template match='dbk:emphasis' mode='rnd:emphasis'>
+ <xsl:choose>
+ <xsl:when test='@rnd:style = preceding-sibling::node()[self::dbk:emphasis]/@rnd:style'>
+ <xsl:apply-templates/>
+ <xsl:apply-templates select='following-sibling::node()[1]'
+ mode='rnd:emphasis'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='*|text()' mode='rnd:emphasis'/>
+
+ <xsl:template match='dbk:emphasis' mode='rnd:personname-emphasis'>
+ <xsl:param name='style'/>
+
+ <xsl:choose>
+ <xsl:when test='@rnd:style = $style'>
+ <xsl:apply-templates/>
+ <xsl:apply-templates select='following-sibling::dbk:emphasis[1]'
+ mode='rnd:personname-emphasis'>
+ <xsl:with-param name='style' select='$style'/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='*|text()' mode='rnd:emphasis'/>
+
+ <xsl:template match='dbk:subscript|dbk:superscript'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- Images -->
+
+ <xsl:template match='dbk:inlinemediaobject'>
+ <xsl:choose>
+ <xsl:when test='not(preceding-sibling::*|following-sibling::*) and
+ normalize-space(..) = ""'>
+
+ <xsl:variable name='next.captioned'
+ select='ancestor::dbk:para/following-sibling::*[self::dbk:informaltable or self::dbk:para[dbk:inlinemediaobject and count(*) = 1 and normalize-space() = ""]][1]'/>
+
+ <xsl:variable name='caption'
+ select='ancestor::dbk:para/following-sibling::dbk:para[@rnd:style = "caption" or @rnd:style = "Caption"]'/>
+
+ <xsl:variable name='metadata'>
+ <xsl:apply-templates select='ancestor::dbk:para/following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:variable>
+
+ <dbk:figure>
+ <xsl:if test='ancestor::dbk:para/preceding-sibling::*[1][self::dbk:para][@rnd:style = "figure-title"] or
+ $metadata'>
+ <dbk:info>
+ <xsl:if test='ancestor::dbk:para/preceding-sibling::*[1][self::dbk:para][@rnd:style = "figure-title"]'>
+ <dbk:title>
+ <xsl:apply-templates select='ancestor::dbk:para/preceding-sibling::*[1]/node()'/>
+ </dbk:title>
+ </xsl:if>
+ <xsl:copy-of select='$metadata'/>
+ </dbk:info>
+ </xsl:if>
+
+ <dbk:mediaobject>
+ <xsl:apply-templates mode='rnd:copy'/>
+ </dbk:mediaobject>
+
+ <xsl:choose>
+ <xsl:when test='not($caption)'/>
+ <xsl:when test='not($next.captioned)'>
+ <xsl:apply-templates select='ancestor::dbk:para/following-sibling::*[following-sibling::*[generate-id() = generate-id($caption)]][not(&metadata-content;)]'
+ mode='rnd:figure'/>
+ <xsl:apply-templates select='$caption'
+ mode='rnd:caption'/>
+ </xsl:when>
+ <!-- Does caption belong to this image or next.captioned?
+ - Only if it belongs to this image do we process it here.
+ -->
+ <xsl:when test='$next.captioned[preceding-sibling::*[generate-id() = generate-id($caption)]]'>
+ <xsl:apply-templates select='ancestor::dbk:para/following-sibling::*[following-sibling::*[generate-id() = generate-id($caption)]][not(&metadata-content;)]'
+ mode='rnd:figure'/>
+ <xsl:apply-templates select='$caption'
+ mode='rnd:caption'/>
+ </xsl:when>
+ <!-- otherwise caption does not belong to this figure -->
+ </xsl:choose>
+ </dbk:figure>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:copy'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:para[@rnd:style = "caption" or @rnd:style = "Caption"]'
+ mode='rnd:caption'>
+ <dbk:caption>
+ <dbk:para>
+ <xsl:apply-templates/>
+ </dbk:para>
+ </dbk:caption>
+ </xsl:template>
+ <xsl:template match='*' mode='rnd:caption'/>
+
+ <xsl:template match='*' mode='rnd:figure'>
+ <xsl:call-template name='rnd:para'>
+ <xsl:with-param name='suppress' select='false()'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Sidebars -->
+
+ <xsl:template match='*' mode='rnd:sidebar'>
+ <xsl:call-template name='rnd:para'>
+ <xsl:with-param name='suppress' select='false()'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Lists -->
+
+ <xsl:template match='dbk:para' mode='rnd:listitem'>
+ <dbk:listitem>
+ <dbk:para>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:para>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:continue'/>
+
+ <!-- Handle nested lists -->
+ <xsl:variable name='list-type'
+ select='concat(substring-before(@rnd:style, "list"), "list")'/>
+ <xsl:variable name='list-level'
+ select='substring-after(@rnd:style, $list-type)'/>
+
+ <!-- Assuming only five levels of list nesting.
+ - This is probably better done in a previous stage using grouping.
+ -->
+ <xsl:variable name='stop.node'
+ select='following-sibling::dbk:para[@rnd:style != concat("itemizedlist", $list-level + 1) and
+ @rnd:style != concat("orderedlist", $list-level + 1) and
+ @rnd:style != concat("itemizedlist", $list-level + 2) and
+ @rnd:style != concat("orderedlist", $list-level + 2) and
+ @rnd:style != concat("itemizedlist", $list-level + 3) and
+ @rnd:style != concat("orderedlist", $list-level + 3) and
+ @rnd:style != "para-continue"][1]'/>
+
+ <xsl:variable name='nested'
+ select='following-sibling::dbk:para[@rnd:style = concat("itemizedlist", $list-level + 1) or @rnd:style = concat("orderedlist", $list-level + 1)][1]'/>
+
+ <xsl:choose>
+ <!-- Is there a nested list at all? -->
+ <xsl:when test='following-sibling::*[self::dbk:para and @rnd:style != "para-continue"][1][@rnd:style != concat("itemizedlist", $list-level + 1) and @rnd:style != concat("orderedlist", $list-level + 1)]'/>
+
+ <xsl:when test='following-sibling::dbk:para[@rnd:style = concat("itemizedlist", $list-level + 1) or @rnd:style = concat("orderedlist", $list-level + 1)] and
+ $stop.node'>
+ <xsl:element name='{concat(substring-before($nested/@rnd:style, "list"), "list")}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates select='following-sibling::dbk:para[@rnd:style = concat("itemizedlist", $list-level + 1) or @rnd:style = concat("orderedlist", $list-level + 1)][following-sibling::*[generate-id() = generate-id($stop.node)]]'
+ mode='rnd:listitem'/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test='following-sibling::dbk:para[@rnd:style = concat("itemizedlist", $list-level + 1) or @rnd:style = concat("orderedlist", $list-level + 1)]'>
+
+ <xsl:element name='{concat(substring-before($nested/@rnd:style, "list"), "list")}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates select='following-sibling::dbk:para[@rnd:style = concat("itemizedlist", $list-level + 1) or @rnd:style = concat("orderedlist", $list-level + 1)]'
+ mode='rnd:listitem'/>
+ </xsl:element>
+ </xsl:when>
+ </xsl:choose>
+ </dbk:listitem>
+ </xsl:template>
+
+ <!-- Blockquotes -->
+
+ <xsl:template match='dbk:para' mode='rnd:blockquote'>
+ <xsl:choose>
+ <xsl:when test='@rnd:style ="blockquote-attribution"'/>
+ <xsl:when test='@rnd:style ="blockquote-title"'/>
+ <xsl:otherwise>
+ <dbk:para>
+ <xsl:apply-templates/>
+ </dbk:para>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='dbk:para' mode='rnd:blockquote-attribution'>
+ <xsl:if test='@rnd:style ="blockquote-attribution"'>
+ <dbk:attribution>
+ <xsl:apply-templates/>
+ </dbk:attribution>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Metadata -->
+
+ <xsl:template match='dbk:para' mode='rnd:metadata'>
+ <xsl:choose>
+ <xsl:when test='@rnd:style = "biblioentry-title" and
+ parent::dbk:bibliography|parent::dbk:bibliodiv'/>
+ <xsl:when test='@rnd:style = "biblioentry-title"'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-metadata</xsl:with-param>
+ <xsl:with-param name='message'>style "<xsl:value-of select='@rnd:style'/>" must not be metadata for parent "<xsl:value-of select='local-name(..)'/>"</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "abstract-title" or
+ @rnd:style = "abstract"'>
+ <xsl:variable name='stop.node'
+ select='following-sibling::dbk:para[@rnd:style != "abstract"][1]'/>
+ <xsl:choose>
+ <xsl:when test='$stop.node'>
+ <dbk:abstract>
+ <xsl:apply-templates select='.|following-sibling::dbk:para[@rnd:style = "abstract"][following-sibling::*[generate-id() = generate-id($stop.node)]]'
+ mode='rnd:abstract'/>
+ </dbk:abstract>
+ <xsl:apply-templates select='$stop.node'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:abstract>
+ <xsl:apply-templates select='.|following-sibling::dbk:para[@rnd:style = "abstract"]' mode='rnd:abstract'/>
+ </dbk:abstract>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "legalnotice"'>
+ <xsl:variable name='stop.node'
+ select='following-sibling::dbk:para[@rnd:style != "legalnotice"][1]'/>
+
+ <xsl:choose>
+ <xsl:when test='$stop.node'>
+ <dbk:legalnotice>
+ <xsl:apply-templates select='.|following-sibling::dbk:para[@rnd:style = "legalnotice"][following-sibling::*[generate-id() = generate-id($stop.node)]]'
+ mode='rnd:legalnotice'/>
+ </dbk:legalnotice>
+ <xsl:apply-templates select='$stop.node'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select='.|following-sibling::dbk:para[@rnd:style = "legalnotice"]'
+ mode='rnd:legalnotice'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "keyword"'>
+ <xsl:variable name='stop.node'
+ select='following-sibling::*[not(self::dbk:para) or
+ (self::dbk:para and @rnd:style != "keyword")][1]'/>
+
+ <xsl:choose>
+ <xsl:when test='$stop.node'>
+ <dbk:keywordset>
+ <xsl:call-template name='rnd:keyword'>
+ <xsl:with-param name='nodes'
+ select='.|following-sibling::dbk:para[@rnd:style = "keyword"][following-sibling::*[generate-id() = generate-id($stop.node)]]'/>
+ </xsl:call-template>
+ </dbk:keywordset>
+ <xsl:apply-templates select='$stop.node'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:keyword'>
+ <xsl:with-param name='nodes'
+ select='.|following-sibling::dbk:para[@rnd:style = "keyword"]'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "author"'>
+ <dbk:author>
+ <xsl:choose>
+ <xsl:when test='dbk:emphasis[@rnd:style = "orgname"]'>
+ <dbk:orgname>
+ <xsl:apply-templates
+ select='dbk:emphasis[@rnd:style = "orgname"]'
+ mode='rnd:orgname'/>
+ </dbk:orgname>
+ <xsl:if test='*[not(@rnd:style = "orgname")]'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-author-orgname-combo</xsl:with-param>
+ <xsl:with-param name='message'>character span "<xsl:value-of select='dbk:emphasis[@rnd:style != "orgname"][1]/@rnd:style'/>" not allowed in an author paragraph combined with orgname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:personname>
+ <!-- TODO: check style of author; mixed content or structured -->
+ <xsl:apply-templates mode='rnd:personname'/>
+ </dbk:personname>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode='rnd:author-personblurb'/>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:author'/>
+ </dbk:author>
+ <xsl:call-template name='rnd:resume-metadata'>
+ <xsl:with-param name='node' select='following-sibling::*[1]'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "personblurb" or
+ @rnd:style = "address" or
+ @rnd:style = "affiliation" or
+ @rnd:style = "contrib" or
+ @rnd:style = "email"'/>
+
+ <xsl:when test='@rnd:style = "releaseinfo" or
+ @rnd:style = "date" or
+ @rnd:style = "pubdate" or
+ @rnd:style = "pagenums" or
+ @rnd:style = "issuenum" or
+ @rnd:style = "volumenum" or
+ @rnd:style = "edition" or
+ @rnd:style = "editor" or
+ @rnd:style = "othercredit" or
+ @rnd:style = "biblioid" or
+ @rnd:style = "bibliosource" or
+ @rnd:style = "bibliomisc" or
+ @rnd:style = "revhistory" or
+ @rnd:style = "revision"'>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </xsl:element>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:when test='contains(@rnd:style, "-titleabbrev")'>
+ <xsl:variable name='parent'
+ select='substring-before(@rnd:style, "-titleabbrev")'/>
+
+ <xsl:choose>
+ <xsl:when test='$parent = local-name(..)'>
+ <dbk:titleabbrev>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:titleabbrev>
+ </xsl:when>
+ <xsl:when test='(parent::dbk:article or parent::dbk:book-component) and
+ preceding-sibling::dbk:para[@rnd:style = concat($parent, "-title")]'>
+ <dbk:titleabbrev>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:titleabbrev>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-titleabbrev</xsl:with-param>
+ <xsl:with-param name='message'>titleabbrev style "<xsl:value-of select='@rnd:style'/>" mismatches parent "<xsl:value-of select='local-name(..)'/>"</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:when test='contains(@rnd:style, "-title")'>
+ <xsl:variable name='parent'
+ select='substring-before(@rnd:style, "-title")'/>
+
+ <xsl:choose>
+ <xsl:when test='$parent = "table" or
+ $parent = "figure"'>
+ <dbk:title>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:title>
+ </xsl:when>
+ <xsl:when test='$parent = local-name(..)'>
+ <dbk:title>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:title>
+ </xsl:when>
+ <xsl:when test='parent::dbk:book-component'>
+ <dbk:title>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:title>
+ </xsl:when>
+ <xsl:when test='parent::dbk:article and
+ not(../../..)'>
+ <dbk:title>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:title>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-title</xsl:with-param>
+ <xsl:with-param name='message'>title style "<xsl:value-of select='@rnd:style'/>" mismatches parent "<xsl:value-of select='local-name(..)'/>"</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+
+ <!-- Exception to normal subtitle handling is biblioentry-subtitle -->
+ <xsl:when test='@rnd:style = "biblioentry-subtitle"'>
+ <!-- TODO: check that this is in a biblioentry -->
+ <dbk:subtitle>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:subtitle>
+
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:when test='contains(@rnd:style, "-subtitle")'>
+ <xsl:variable name='parent'
+ select='substring-before(@rnd:style, "-subtitle")'/>
+
+ <xsl:choose>
+ <xsl:when test='$parent = local-name(..)'>
+ <dbk:subtitle>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:subtitle>
+ </xsl:when>
+ <xsl:when test='(parent::dbk:article or parent::dbk:book-component) and
+ preceding-sibling::dbk:para[@rnd:style = concat($parent, "-title")]'>
+ <dbk:subtitle>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:subtitle>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-subtitle</xsl:with-param>
+ <xsl:with-param name='message'>subtitle style "<xsl:value-of select='@rnd:style'/>" mismatches parent "<xsl:value-of select='local-name(..)'/>"</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "publisher-address" and
+ preceding-sibling::*[1][not(self::dbk:para) or not(@rnd:style = "publisher")]'>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-publisher-address</xsl:with-param>
+ <xsl:with-param name='message'>publisher-address must follow publisher</xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "publisher-address"'>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "publisher"'>
+ <dbk:publisher>
+ <dbk:publishername>
+ <xsl:apply-templates/>
+ </dbk:publishername>
+ <xsl:if test='following-sibling::*[1][@rnd:style = "publisher-address"]'>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:publisher'/>
+ </xsl:if>
+ </dbk:publisher>
+
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:metadata'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name='rnd:keyword'>
+ <xsl:param name='nodes' select='/..'/>
+
+ <xsl:choose>
+ <xsl:when test='not($nodes)'/>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:keyword-phrases'>
+ <xsl:with-param name='text' select='$nodes[1]'/>
+ </xsl:call-template>
+ <xsl:call-template name='rnd:keyword'>
+ <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name='rnd:keyword-phrases'>
+ <xsl:param name='text'/>
+
+ <xsl:choose>
+ <xsl:when test='not($text)'/>
+ <xsl:when test='contains($text, ",")'>
+ <dbk:keyword>
+ <xsl:value-of select='normalize-space(substring-before($text, ","))'/>
+ </dbk:keyword>
+ <xsl:call-template name='rnd:keyword-phrases'>
+ <xsl:with-param name='text' select='substring-after($text, ",")'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:keyword>
+ <xsl:value-of select='normalize-space($text)'/>
+ </dbk:keyword>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:emphasis' mode='rnd:metadata'>
+ <xsl:choose>
+ <xsl:when test='not(@rnd:style)'>
+ <xsl:copy>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </xsl:copy>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "Hyperlink" and
+ parent::dbk:link'>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "Hyperlink"'>
+ <dbk:link xlink:href='{.}'>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </dbk:link>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='dbk:link' mode='rnd:metadata'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates mode='rnd:metadata'/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match='dbk:inlinemediaobject' mode='rnd:metadata'>
+ <xsl:call-template name='rnd:copy'/>
+ </xsl:template>
+ <xsl:template match='*' mode='rnd:metadata'/>
+
+ <xsl:template name='rnd:resume-metadata'>
+ <xsl:param name='node' select='/..'/>
+
+ <xsl:choose>
+ <xsl:when test='$node[self::dbk:para][&author-content;]'>
+ <xsl:call-template name='rnd:resume-metadata'>
+ <xsl:with-param name='node' select='$node/following-sibling::*[1]'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$node[self::dbk:para][&metadata-content;]'>
+ <xsl:apply-templates select='$node' mode='rnd:metadata'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:abstract'>
+ <xsl:choose>
+ <xsl:when test='@rnd:style = "abstract-title"'>
+ <dbk:title>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:title>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:para>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:para>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:legalnotice'>
+ <dbk:para>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:para>
+ </xsl:template>
+
+ <xsl:template match='dbk:footnote' mode='rnd:personname'/>
+ <xsl:template match='dbk:emphasis' mode='rnd:personname'>
+ <!-- Need to check preceding emphasis for same style,
+ but blocks pretty-prints and all text nodes
+ are preserved in paragraph content.
+ -->
+ <xsl:variable name='previous'
+ select='preceding-sibling::node()[not(self::text()) or (self::text() and normalize-space() != "")]'/>
+ <!--
+ <xsl:comment> this style is <xsl:value-of select='@rnd:style'/>, previous style is <xsl:value-of select='$previous[last()]/@rnd:style'/> # previous <xsl:value-of select='count($previous)'/></xsl:comment>
+-->
+ <xsl:choose>
+ <!-- inlines are coalesced -->
+ <xsl:when test='@rnd:style = $previous[last()][self::dbk:emphasis]/@rnd:style'/>
+ <xsl:when test='@rnd:style = "honorific" or
+ @rnd:style = "firstname" or
+ @rnd:style = "lineage" or
+ @rnd:style = "othername" or
+ @rnd:style = "surname"'>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates/>
+ <xsl:apply-templates select='following-sibling::dbk:emphasis[1]'
+ mode='rnd:personname-emphasis'>
+ <xsl:with-param name='style' select='@rnd:style'/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>bad-author-inline</xsl:with-param>
+ <xsl:with-param name='message'>character span "<xsl:value-of select='@rnd:style'/>" not allowed in an author paragraph</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='text()' mode='rnd:author-personblurb'/>
+ <xsl:template match='dbk:emphasis' mode='rnd:author-personblurb'/>
+ <xsl:template match='dbk:footnote' mode='rnd:author-personblurb'>
+ <dbk:personblurb>
+ <dbk:para>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </dbk:para>
+ </dbk:personblurb>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:author'>
+ <xsl:choose>
+ <xsl:when test='@rnd:style = "personblurb" and
+ preceding-sibling::*[1][self::dbk:para and @rnd:style != "personblurb"]'>
+ <dbk:personblurb>
+ <xsl:apply-templates select='.'
+ mode='rnd:personblurb'/>
+ </dbk:personblurb>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "personblurb"'>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:author'/>
+ </xsl:when>
+
+ <!-- Web and mail addresses may appear in a simplified form -->
+ <xsl:when test='@rnd:style = "address"'>
+ <xsl:choose>
+ <xsl:when test='dbk:link and
+ count(dbk:link) = count(*)'>
+ <!-- simplified form -->
+ <dbk:otheraddr>
+ <xsl:apply-templates select='dbk:link'
+ mode='rnd:otheraddr'/>
+ </dbk:otheraddr>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:address>
+ <xsl:apply-templates mode='rnd:author'/>
+ </dbk:address>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:author'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test='@rnd:style = "affiliation"'>
+ <dbk:affiliation>
+ <xsl:choose>
+ <xsl:when test='not(*)'>
+ <dbk:jobtitle>
+ <xsl:apply-templates mode='rnd:author'/>
+ </dbk:jobtitle>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode='rnd:author'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dbk:affiliation>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:author'/>
+ </xsl:when>
+ <xsl:when test='@rnd:style = "contrib" or
+ @rnd:style = "email"'>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates mode='rnd:author'/>
+ </xsl:element>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:author'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:link' mode='rnd:otheraddr'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates mode='rnd:otheraddr'/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- TODO: not all of these inlines are allowed in all elements that are children of author.
+ Need to further refine validation of inlines.
+ -->
+ <xsl:template match='dbk:emphasis' mode='rnd:author'>
+ <xsl:choose>
+ <xsl:when test='@rnd:style = "city" or
+ @rnd:style = "country" or
+ @rnd:style = "email" or
+ @rnd:style = "fax" or
+ @rnd:style = "jobtitle" or
+ @rnd:style = "orgdiv" or
+ @rnd:style = "orgname" or
+ @rnd:style = "otheraddr" or
+ @rnd:style = "phone" or
+ @rnd:style = "pob" or
+ @rnd:style = "postcode" or
+ @rnd:style = "shortaffil" or
+ @rnd:style = "state" or
+ @rnd:style = "street"'>
+ <xsl:element name='{@rnd:style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='rnd:error'>
+ <xsl:with-param name='code'>metadata-bad-inline</xsl:with-param>
+ <xsl:with-param name='message'>character span "<xsl:value-of select='@rnd:style'/>" not allowed in author metadata</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:personblurb'>
+ <xsl:if test='@rnd:style = "personblurb"'>
+ <dbk:para>
+ <xsl:apply-templates/>
+ </dbk:para>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:personblurb'/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:publisher'>
+ <xsl:if test='@rnd:style = "publisher-address"'>
+ <dbk:address>
+ <xsl:apply-templates/>
+ </dbk:address>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:programlisting'>
+ <xsl:text>&#xa;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Continuing paragraphs -->
+
+ <xsl:template match='*' mode='rnd:continue'/>
+ <xsl:template match='dbk:para' mode='rnd:continue'>
+ <xsl:if test='@rnd:style = "para-continue"'>
+ <dbk:para>
+ <xsl:call-template name='rnd:attributes'/>
+ <xsl:apply-templates/>
+ </dbk:para>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:continue'/>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match='dbk:informaltable' mode='rnd:continue'>
+ <xsl:apply-templates select='.'>
+ <xsl:with-param name='in-list' select='true()'/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select='following-sibling::*[1]'
+ mode='rnd:continue'/>
+ </xsl:template>
+
+ <!-- Tables -->
+
+ <xsl:template match='dbk:informaltable'>
+ <xsl:param name='in-list' select='false()'/>
+
+ <xsl:choose>
+ <xsl:when test='not($in-list) and
+ preceding-sibling::dbk:para[1][starts-with(@rnd:style, "itemizedlist") or starts-with(@rnd:style, "orderedlist") or @rnd:style = "para-continue"]'/>
+ <xsl:when test='preceding-sibling::*[1][self::dbk:para][@rnd:style ="table-title"]'>
+ <dbk:table>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+
+ <dbk:info>
+ <xsl:apply-templates select='preceding-sibling::dbk:para[1]'
+ mode='rnd:table-title'/>
+ </dbk:info>
+
+ <xsl:call-template name='rnd:table-textobject'/>
+
+ <xsl:apply-templates/>
+
+ <xsl:call-template name='rnd:table-caption'/>
+ </dbk:table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+
+ <xsl:call-template name='rnd:table-textobject'/>
+
+ <xsl:apply-templates/>
+
+ <xsl:call-template name='rnd:table-caption'/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='dbk:tgroup'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:if test='not(@cols)'>
+ <xsl:attribute name='cols'>
+ <xsl:call-template name='dbk:max-columns'>
+ <xsl:with-param name='rows' select='*/dbk:row'/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template name='dbk:max-columns'>
+ <xsl:param name='rows' select='/..'/>
+ <xsl:param name='max' select='0'/>
+
+ <!-- This is a tail-recursive algorithm.
+ Could improve this with other algorithm(s),
+ eg. divide-and-conquer.
+ -->
+
+ <xsl:choose>
+ <xsl:when test='not($rows)'>
+ <xsl:value-of select='$max'/>
+ </xsl:when>
+ <xsl:when test='count($rows[1]/dbk:entry) > $max'>
+ <xsl:call-template name='dbk:max-columns'>
+ <xsl:with-param name='rows' select='$rows[position() != 1]'/>
+ <xsl:with-param name='max' select='count($rows[1]/dbk:entry)'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='dbk:max-columns'>
+ <xsl:with-param name='rows' select='$rows[position() != 1]'/>
+ <xsl:with-param name='max' select='$max'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='dbk:tbody|dbk:thead|dbk:tfoot|dbk:row|dbk:colspec'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match='dbk:entry'>
+ <dbk:entry>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates/>
+ </dbk:entry>
+ </xsl:template>
+
+ <xsl:template match='dbk:para' mode='rnd:table-title'>
+ <dbk:title>
+ <xsl:apply-templates/>
+ </dbk:title>
+ </xsl:template>
+
+ <!-- Find the caption associated with this table -->
+ <xsl:template name='rnd:table-caption'>
+ <xsl:variable name='candidate'
+ select='following-sibling::dbk:para[@rnd:style = "caption" or @rnd:style = "Caption"][1]'/>
+
+ <xsl:if test='$candidate != "" and
+ generate-id($candidate/preceding-sibling::dbk:informaltable[1]) = generate-id(.)'>
+ <dbk:caption>
+ <dbk:para>
+ <xsl:apply-templates select='$candidate/node()'/>
+ </dbk:para>
+ </dbk:caption>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Find table associated text -->
+ <xsl:template name='rnd:table-textobject'>
+ <xsl:variable name='caption'
+ select='following-sibling::dbk:para[@rnd:style = "caption" or @rnd:style = "Caption"][1]'/>
+
+ <xsl:if test='generate-id($caption/preceding-sibling::dbk:informaltable[1]) = generate-id(.)'>
+ <xsl:variable name='content'
+ select='following-sibling::*[following-sibling::*[generate-id($caption) = generate-id()]]'/>
+ <xsl:if test='$content'>
+ <dbk:textobject>
+ <xsl:apply-templates select='$content' mode='rnd:textobject'/>
+ </dbk:textobject>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match='dbk:para' mode='rnd:textobject'>
+ <xsl:call-template name='rnd:para'>
+ <xsl:with-param name='suppress' select='false()'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Footnotes -->
+ <xsl:template match='dbk:footnote'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- utilities -->
+
+ <!-- rnd:attributes reconstitutes an element's attributes -->
+ <xsl:template name='rnd:attributes'>
+ <xsl:param name='node' select='.'/>
+
+ <xsl:apply-templates select='$node/@*[namespace-uri() != "http://docbook.org/ns/docbook/roundtrip"]' mode='rnd:copy'/>
+ </xsl:template>
+
+ <xsl:template match='*' name='rnd:copy' mode='rnd:copy'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='rnd:copy'/>
+ <xsl:apply-templates mode='rnd:copy'/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match='@*' mode='rnd:copy'>
+ <xsl:copy/>
+ </xsl:template>
+
+ <!-- These templates are invoked whenever an error condition is detected in the conversion of a document.
+ -->
+ <xsl:template name='rnd:error'>
+ <xsl:param name='node' select='.'/>
+ <xsl:param name='code'/>
+ <xsl:param name='message'/>
+
+ <xsl:comment><xsl:value-of select='$message'/></xsl:comment>
+ <xsl:message>ERROR "<xsl:value-of select='$code'/>": <xsl:value-of select='$message'/></xsl:message>
+ <rnd:error>
+ <rnd:code>
+ <xsl:value-of select='$code'/>
+ </rnd:code>
+ <rnd:message>
+ <xsl:value-of select='$message'/>
+ </rnd:message>
+ </rnd:error>
+ </xsl:template>
+ <xsl:template name='rnd:warning'>
+ <xsl:param name='node' select='.'/>
+ <xsl:param name='code'/>
+ <xsl:param name='message'/>
+
+ <xsl:comment><xsl:value-of select='$message'/></xsl:comment>
+ <xsl:message>WARNING "<xsl:value-of select='$code'/>": <xsl:value-of select='$message'/></xsl:message>
+ <rnd:warning>
+ <rnd:code>
+ <xsl:value-of select='$code'/>
+ </rnd:code>
+ <rnd:message>
+ <xsl:value-of select='$message'/>
+ </rnd:message>
+ </rnd:warning>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl
new file mode 100644
index 0000000..dc7303f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl
@@ -0,0 +1,178 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:doc='http://docbook.org/ns/docbook'
+ exclude-result-prefixes='doc'>
+
+ <xsl:import href='dbk2wp.xsl'/>
+
+ <xsl:output method="xml" indent='yes'/>
+
+ <!-- ********************************************************************
+ $Id: dbk2ooo.xsl 7701 2008-02-22 06:07:31Z balls $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <xsl:include href='../VERSION'/>
+
+ <xsl:template match="/" name='ooo.top'>
+ <xsl:param name='doc' select='/'/>
+
+ <office:document-content
+ office:version='1.0'>
+
+ <office:script/>
+ <office:font-face-decls>
+ <style:font-face style:name="Nimbus Roman No9 L"
+ svg:font-family="'Nimbus Roman No9 L'"
+ style:font-family-generic="roman"
+ style:font-pitch="variable"/>
+ <style:font-face style:name="Nimbus Sans L"
+ svg:font-family="'Nimbus Sans L'"
+ style:font-family-generic="swiss"
+ style:font-pitch="variable"/>
+ <style:font-face style:name="DejaVu LGC Sans"
+ svg:font-family="'DejaVu LGC Sans'"
+ style:font-family-generic="system"
+ style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:automatic-styles/>
+
+ <xsl:apply-templates select='$doc/*'
+ mode='doc:toplevel'/>
+ </office:document-content>
+ </xsl:template>
+
+ <xsl:template name='doc:make-body'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <office:body>
+ <office:text>
+ <office-forms form:automatic-focus='false'
+ form:apply-design-mode='false'/>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ </text:sequence-decls>
+
+ <xsl:copy-of select='$content'/>
+ </office:text>
+ </office:body>
+ </xsl:template>
+
+ <xsl:template name='doc:make-subsection'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <xsl:copy-of select='$content'/>
+ </xsl:template>
+
+ <xsl:template name='doc:make-paragraph'>
+ <xsl:param name='style' select='"unknown"'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+ <xsl:param name='outline.level' select='0'/>
+ <xsl:param name='attributes.node' select='.'/>
+
+ <text:p text:style-name='{$style}'>
+
+ <xsl:call-template name='attributes'>
+ <xsl:with-param name='node' select='$attributes.node'/>
+ </xsl:call-template>
+
+ <xsl:copy-of select='$content'/>
+ </text:p>
+ </xsl:template>
+
+ <xsl:template name='doc:make-phrase'>
+ <xsl:param name='style' select='"unknown"'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <text:span text:style-name='{$style}'>
+ <xsl:copy-of select='$content'/>
+ </text:span>
+ </xsl:template>
+
+ <xsl:template name='doc:make-hyperlink'/>
+ <xsl:template name='doc:make-hyperlink-not-implemented'>
+ <xsl:param name='target'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <text:link href='{$target}'>
+ </text:link>
+ </xsl:template>
+
+ <xsl:template name='doc:make-table'/>
+ <xsl:template name='doc:make-table-not-yet-implemented'>
+ <xsl:param name='columns'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ </xsl:template>
+
+ <xsl:template name='doc:make-table-row'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+ <xsl:param name='is-header' select='false()'/>
+
+ </xsl:template>
+
+ <xsl:template name='doc:make-table-cell'>
+ <xsl:param name='width' select='0'/>
+ <xsl:param name='hidden' select='false()'/>
+ <xsl:param name='rowspan' select='1'/>
+ <xsl:param name='colspan' select='1'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ </xsl:template>
+
+ <xsl:template name='doc:make-soft-break'>
+ <text:br/>
+ </xsl:template>
+
+ <xsl:template name='attributes'>
+ <xsl:param name='node' select='.'/>
+
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl
new file mode 100644
index 0000000..f473555
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl
@@ -0,0 +1,441 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:sfa="http://developer.apple.com/namespaces/sfa"
+ xmlns:sf="http://developer.apple.com/namespaces/sf"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sl="http://developer.apple.com/namespaces/sl"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:doc='http://docbook.org/ns/docbook'
+ xmlns:rnd='http://docbook.org/ns/docbook/roundtrip'
+ exclude-result-prefixes='doc rnd xi'>
+
+ <xsl:import href='dbk2wp.xsl'/>
+
+ <xsl:output method="xml" indent='yes' encoding='ascii'/>
+
+ <!-- ********************************************************************
+ $Id: dbk2pages.xsl 7701 2008-02-22 06:07:31Z balls $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <xsl:include href='../VERSION'/>
+ <xsl:include href='param.xsl'/>
+
+ <xsl:variable name='templatedoc' select='document($pages.template)'/>
+
+ <!-- Find all tables in the document once,
+ as we will be iterating over them in more than one place.
+ -->
+ <xsl:variable name='rnd:pages-tables'
+ select='//doc:table|//doc:informaltable'/>
+
+ <!-- Lookup style identifiers from their user-visible name -->
+ <xsl:variable name='paragraph-styles'
+ select='$templatedoc//sf:paragraphstyle'/>
+ <xsl:variable name='character-styles'
+ select='$templatedoc//sf:characterstyle'/>
+
+ <xsl:template match="/" name='pages.top'>
+ <xsl:param name='doc' select='/'/>
+
+ <xsl:if test='not($pages.template)'>
+ <xsl:message terminate='yes'>Please specify the template document with the "pages.template" parameter</xsl:message>
+ </xsl:if>
+ <xsl:if test='not($templatedoc)'>
+ <xsl:message terminate='yes'>Unable to open template document "<xsl:value-of select='$pages.template'/>"</xsl:message>
+ </xsl:if>
+
+ <sl:document
+ sfa:ID="SLPublicationModel-0"
+ sl:version="72007061400"
+ sl:generator="slingshot"
+ sl:app_build_date="Sep 26 2007, 14:46:11">
+
+ <xsl:apply-templates select='$templatedoc/sl:document/*[not(self::sf:text-storage)]'
+ mode='doc:copy'/>
+
+ <xsl:apply-templates select='$doc/*'
+ mode='doc:toplevel'/>
+
+ <xsl:apply-templates select='$templatedoc/sl:document/sf:text-storage/following-sibling::*'
+ mode='doc:copy'/>
+ </sl:document>
+ </xsl:template>
+
+ <xsl:template match='sf:calc-engine' mode='doc:copy'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='doc:copy'/>
+
+ <xsl:choose>
+ <xsl:when test='not(sf:calc-engine-entities)'>
+ <xsl:call-template name='rnd:pages-make-calc-engine-entities'/>
+ <xsl:apply-templates mode='doc:copy'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode='doc:copy'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template name='rnd:pages-make-calc-engine-entities'
+ match='sf:calc-engine-entities' mode='doc:copy'>
+ <sf:calc-engine-entities>
+ <xsl:choose>
+ <xsl:when test='self::calc-engine-entities'>
+ <xsl:apply-templates select='@*' mode='doc:copy'/>
+ <xsl:apply-templates mode='doc:copy'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name='sfa:ID'>
+ <xsl:text>DocBookRoundtrip-1</xsl:text>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:for-each select='$rnd:pages-tables'>
+ <xsl:variable name='num' select='position()'/>
+
+ <xsl:variable name='num-cells'
+ select='count(doc:tgroup/*/doc:row/doc:entry)'/>
+ <xsl:variable name='num-rows' select='count(doc:tgroup/*/doc:row)'/>
+ <xsl:variable name='num-cols' select='$num-cells div $num-rows'/>
+
+ <sf:tabular-model sfa:ID='SFTTableModel-{$num}' sf:name='Unnamed Table'
+ sfa:id=''
+ sf:num-header-rows='{count(doc:tgroup/doc:thead/doc:row)}' sf:num-footer-rows='{count(doc:tgroup/doc:tfoot/doc:row)}'
+ sf:num-header-columns='0' sf:name-is-visible='false' sf:grouping-enabled='false'>
+ <sf:grid sfa:ID='SFTTableGrid-{$num}'
+ sf:ocnt='{$num-cells}'
+ sf:numcols='{$num-cols}'
+ sf:numrows='{$num-rows}'
+ sf:hiddennumcols='0' sf:hiddennumrows='0'>
+ <sf:columns sf:count='{$num-cols}'>
+ <xsl:apply-templates select='doc:tgroup/doc:colspec'
+ mode='rnd:pages-table-colspec'/>
+ </sf:columns>
+ <sf:vertical-gridline-styles sf:array-size='0'/> <!-- TODO: borders -->
+ <sf:rows sf:count='{$num-rows}'>
+ <xsl:call-template name='rnd:pages-make-table-rowspecs'>
+ <xsl:with-param name='number' select='$num-rows'/>
+ </xsl:call-template>
+ </sf:rows>
+ <sf:horizontal-gridline-styles sf:array-size='0'/> <!-- TODO: borders -->
+ <sf:datasource sfa:ID='SFTConcreteTableDataSource-{$num}'>
+ <xsl:apply-templates select='doc:tgroup/doc:thead/doc:row'
+ mode='rnd:pages-table-data'>
+ <xsl:with-param name='start-row' select='0'/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select='doc:tgroup/doc:tbody/doc:row'
+ mode='rnd:pages-table-data'>
+ <xsl:with-param name='start-row' select='count(doc:tgroup/doc:thead/doc:row)'/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select='doc:tgroup/doc:tfoot/doc:row'
+ mode='rnd:pages-table-data'>
+ <xsl:with-param name='start-row' select='count(doc:tgroup/doc:thead/doc:row) + count(doc:tgroup/doc:tbody/doc:row)'/>
+ </xsl:apply-templates>
+ </sf:datasource>
+ <sf:sort sfa:ID='DocBookPagesTableNSArray-{$num}'>
+ <sf:sort-spec sfa:ID='SFTTableSortSpec-{$num}'
+ sf:sort-col='0' sf:sort-order='true'/>
+ </sf:sort>
+ <sf:filterset sfa:ID='SFTTableFilterSet-{$num}'
+ sf:type='0' sf:enabled='false' sf:spec-count='1'>
+ <sf:filterspec sfa:ID='SFTTableFilterSpec-{$num}'
+ sf:filtercol='0' sf:predicate='1' sf:keyscale='0' sf:key1=''/>
+ </sf:filterset>
+ <sf:cell-comment-mapping sfa:ID='DocBookPagesTableCellCommentNSMutableDictionary-{$num}'/>
+ <sf:error_warning_mapping sfa:ID='DocBookPagesTableErrorWarningNSMutableDictionary-{$num}'/>
+ </sf:grid>
+ </sf:tabular-model>
+ </xsl:for-each>
+ </sf:calc-engine-entities>
+ </xsl:template>
+
+ <xsl:template match='doc:row' mode='rnd:pages-table-data'>
+ <xsl:param name='start-row' select='0'/>
+ <xsl:apply-templates mode='rnd:pages-table-data'>
+ <xsl:with-param name='row'
+ select='$start-row + count(preceding-sibling::doc:row)'/>
+ </xsl:apply-templates>
+ </xsl:template>
+ <xsl:template match='doc:entry' mode='rnd:pages-table-data'>
+ <xsl:param name='row' select='0'/>
+ <sf:text-cell sf:flags='4' sf:col='{count(preceding-sibling::doc:entry)}' sf:row='{$row}'>
+ <sf:cell-style-ref sfa:IDREF='SFTCellStyle-3'/>
+ <sf:content-size sfa:w='60' sfa:h='25'/>
+ <sf:cell-text>
+ <xsl:choose>
+ <xsl:when test='count(.//*) > 2'>
+ <sf:cell-storage>
+ <sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/>
+ <sf:text-body>
+ <xsl:apply-templates/>
+ </sf:text-body>
+ </sf:cell-storage>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name='sfa:string'>
+ <xsl:apply-templates mode='rnd:pages-table-text'/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </sf:cell-text>
+ </sf:text-cell>
+ </xsl:template>
+
+ <xsl:template name='rnd:pages-make-table-rowspecs'>
+ <xsl:param name='number' select='0'/>
+
+ <xsl:choose>
+ <xsl:when test='$number &lt;= 0'/>
+ <xsl:otherwise>
+ <sf:grid-row sf:height='25' sf:fitting-height='25'/>
+ <xsl:call-template name='rnd:pages-make-table-rowspecs'>
+ <xsl:with-param name='number' select='$number - 1'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='doc:colspec' mode='rnd:pages-table-colspec'>
+ <sf:grid-column sf:width='{@colwidth}' sf:preferred-width='{@colwidth}'
+ sf:fitting-width='{@colwidth}'/>
+ </xsl:template>
+
+ <xsl:template name='doc:make-body'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <sf:text-storage sf:kind='body' sfa:ID='SFWPStorage-7'>
+ <sf:stylesheet-ref sfa:IDREF='SFSStylesheet-1'/>
+
+ <xsl:if test='$rnd:pages-tables'>
+ <sf:attachments>
+ <xsl:for-each select='$rnd:pages-tables'>
+ <xsl:variable name='num' select='position()'/>
+
+ <sf:attachment sfa:ID='SFTTableAttachment-{$num}'
+ sfa:sfclass='' sf:kind='tabular-attachment'>
+ <sf:tabular-info sfa:ID='SFTTableInfo-{$num}'>
+ <sf:geometry sfa:ID='DocBookAffineGeometry-{$num}'
+ sf:sizesLocked='true'>
+ <sf:naturalSize sfa:w='480' sfa:h='126'/>
+ <sf:size sfa:w='480' sfa:h='126'/>
+ <sf:position sfa:x='0' sfa:y='0'/>
+ </sf:geometry>
+ <sf:style>
+ <sf:tabular-style-ref sfa:IDREF='SFTTableStyle-0'/>
+ </sf:style>
+ <sf:tabular-model-ref sfa:IDREF='SFTTableModel-{$num}'/>
+ </sf:tabular-info>
+ <sf:position sfa:x='0' sfa:y='0'/>
+ </sf:attachment>
+
+ </xsl:for-each>
+ </sf:attachments>
+ </xsl:if>
+
+ <sf:text-body>
+ <sf:page-start sf:page-index='0'/>
+ <sf:container-hint sf:page-index="0" sf:cindex="0" sf:sindex="0" sf:lindex="0" sf:frame-x="56.692913055419922" sf:frame-y="56.692913055419922" sf:frame-w="481.61416625976562" sf:frame-h="714" sf:anchor-loc="0"/>
+
+ <sf:section sf:name="Chapter 1" sf:style="section-style-0">
+ <sf:layout sf:style="layout-style-20">
+ <xsl:copy-of select='$content'/>
+ </sf:layout>
+ </sf:section>
+ </sf:text-body>
+ </sf:text-storage>
+ </xsl:template>
+
+ <xsl:template name='doc:make-subsection'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <xsl:copy-of select='$content'/>
+ </xsl:template>
+
+ <xsl:template name='doc:make-paragraph'>
+ <xsl:param name='style' select='"unknown"'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+ <xsl:param name='outline.level' select='0'/>
+ <xsl:param name='attributes.node' select='.'/>
+
+ <sf:p>
+ <xsl:if test='$style != ""'>
+ <xsl:attribute name='sf:style'>
+ <xsl:call-template name='doc:lookup-paragraph-style'>
+ <xsl:with-param name='style' select='$style'/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name='attributes'>
+ <xsl:with-param name='node' select='$attributes.node'/>
+ </xsl:call-template>
+
+ <xsl:copy-of select='$content'/>
+ <sf:br/>
+ </sf:p>
+ </xsl:template>
+
+ <xsl:template name='doc:make-phrase'>
+ <xsl:param name='style' select='""'/>
+ <xsl:param name='italic' select='0'/>
+ <xsl:param name='bold' select='0'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:phrase'/>
+ </xsl:param>
+
+ <!-- TODO: handle italic and bold parameters -->
+
+ <xsl:choose>
+ <xsl:when test='$style != ""'>
+ <sf:span>
+ <xsl:attribute name='sf:style'>
+ <xsl:call-template name='doc:lookup-character-style'>
+ <xsl:with-param name='style' select='$style'/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:copy-of select='$content'/>
+ </sf:span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select='$content'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name='doc:make-hyperlink'>
+ <xsl:param name='target'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <sf:link href='{$target}'>
+ <sf:span>
+ <xsl:attribute name='sf:style'>
+ <xsl:call-template name='doc:lookup-character-style'>
+ <xsl:with-param name='style'>email</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:copy-of select='$content'/>
+ </sf:span>
+ </sf:link>
+ </xsl:template>
+
+ <xsl:template name='doc:make-table'>
+ <xsl:param name='columns'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <xsl:variable name='this' select='.'/>
+
+ <sf:p>
+ <xsl:attribute name='sf:style'>
+ <xsl:call-template name='doc:lookup-paragraph-style'>
+ <xsl:with-param name='style' select='"para"'/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <sf:attachment-ref sf:kind='tabular-attachment'>
+ <xsl:attribute name='sfa:IDREF'>
+ <xsl:text>SFTTableAttachment-</xsl:text>
+ <xsl:for-each select='$rnd:pages-tables'>
+ <xsl:if test='generate-id() = generate-id($this)'>
+ <xsl:value-of select='position()'/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </sf:attachment-ref>
+ <sf:br/>
+ </sf:p>
+ </xsl:template>
+
+ <xsl:template name='doc:make-column'>
+ <xsl:param name='width' select='0'/>
+ </xsl:template>
+
+ <xsl:template name='doc:make-table-row'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+ <xsl:param name='is-header' select='false()'/>
+ </xsl:template>
+
+ <xsl:template name='doc:make-table-cell'>
+ <xsl:param name='width' select='0'/>
+ <xsl:param name='hidden' select='false()'/>
+ <xsl:param name='rowspan' select='1'/>
+ <xsl:param name='colspan' select='1'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+ </xsl:template>
+
+ <xsl:template name='doc:make-soft-break'>
+ <sf:br/>
+ </xsl:template>
+
+ <xsl:template name='attributes'>
+ <xsl:param name='node' select='.'/>
+
+ <xsl:for-each select='$node/@*'>
+ <sf:span>
+ <xsl:attribute name='sf:style'>
+ <xsl:call-template name='doc:lookup-character-style'>
+ <xsl:with-param name='style'>attribute-name</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select='name()'/>
+ </sf:span>
+ <sf:span>
+ <xsl:attribute name='sf:style'>
+ <xsl:call-template name='doc:lookup-character-style'>
+ <xsl:with-param name='style'>attribute-value</xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select='.'/>
+ </sf:span>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name='doc:lookup-paragraph-style'>
+ <xsl:param name='style'/>
+
+ <xsl:variable name='style.cooked'>
+ <xsl:choose>
+ <xsl:when test='$style = "Normal"'>para</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$style'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test='not($paragraph-styles[@sf:name = $style.cooked])'>
+ <xsl:message>unable to find paragraph style "<xsl:value-of select='$style.cooked'/>"</xsl:message>
+ </xsl:if>
+
+ <xsl:value-of select='$paragraph-styles[@sf:name = $style.cooked]/@sf:ident'/>
+ </xsl:template>
+ <xsl:template name='doc:lookup-character-style'>
+ <xsl:param name='style'/>
+
+ <xsl:if test='not($character-styles[@sf:name = $style])'>
+ <xsl:message>unable to find character style "<xsl:value-of select='$style'/>"</xsl:message>
+ </xsl:if>
+
+ <xsl:value-of select='$character-styles[@sf:name = $style]/@sf:ident'/>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl
new file mode 100644
index 0000000..07bd08d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl
@@ -0,0 +1,401 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:w='http://schemas.microsoft.com/office/word/2003/wordml'
+ xmlns:v='urn:schemas-microsoft-com:vml'
+ xmlns:w10="urn:schemas-microsoft-com:office:word"
+ xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
+ xmlns:wx='http://schemas.microsoft.com/office/word/2003/auxHint'
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
+ xmlns:sl='http://schemas.microsoft.com/schemaLibrary/2003/core'
+ xmlns:doc='http://docbook.org/ns/docbook'
+ exclude-result-prefixes='doc'>
+
+ <xsl:import href='dbk2wp.xsl'/>
+
+ <xsl:output method="xml" indent='yes' standalone='yes' encoding='UTF-8'/>
+
+ <!-- ********************************************************************
+ $Id: dbk2wordml.xsl 7701 2008-02-22 06:07:31Z balls $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <xsl:include href='../VERSION'/>
+ <xsl:include href='param.xsl'/>
+
+ <xsl:strip-space elements='*'/>
+ <xsl:preserve-space elements='literallayout doc:literallayout
+ programlisting doc:programlisting'/>
+
+ <xsl:variable name='templatedoc' select='document($wordml.template)'/>
+
+ <xsl:template match="/" name='wordml.top'>
+ <xsl:param name='doc' select='/'/>
+
+ <xsl:if test='not($wordml.template)'>
+ <xsl:message terminate='yes'>Please specify the template document with the "wordml.template" parameter</xsl:message>
+ </xsl:if>
+ <xsl:if test='not($templatedoc)'>
+ <xsl:message terminate='yes'>Unable to open template document "<xsl:value-of select='$wordml.template'/>"</xsl:message>
+ </xsl:if>
+
+ <xsl:processing-instruction name='mso-application'>
+ <xsl:text>progid="Word.Document"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:text>&#xa;</xsl:text>
+
+ <xsl:variable name='info'
+ select='$doc/book/bookinfo|$doc/article/articleinfo'/>
+ <xsl:variable name='authors' select='$info/author|$info/authorinitials|$info/authorgroup/author|$info/authorgroup/editor'/>
+
+ <w:wordDocument
+ w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no">
+ <xsl:attribute name='xml:space'>preserve</xsl:attribute>
+
+ <o:DocumentProperties>
+ <o:Author>
+ <xsl:choose>
+ <xsl:when test='$authors'>
+ <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
+ </xsl:when>
+ <xsl:otherwise>Unknown</xsl:otherwise>
+ </xsl:choose>
+ </o:Author>
+ <o:LastAuthor>
+ <xsl:choose>
+ <xsl:when test='$info/revhistory/revision[1]/*[self::author|self::authorinitials]'>
+ <xsl:apply-templates select='$info/revhistory/revision[1]/*[self::author|self::authorinitials]' mode='doc:docprop.author'/>
+ </xsl:when>
+ <xsl:when test='$authors'>
+ <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
+ </xsl:when>
+ <xsl:otherwise>Unknown</xsl:otherwise>
+ </xsl:choose>
+ </o:LastAuthor>
+ <o:Revision>1</o:Revision>
+ <o:TotalTime></o:TotalTime>
+
+ <!-- dummy values -->
+ <o:Created>2004-01-01T07:07:00Z</o:Created>
+ <o:LastSaved>2004-01-01T08:08:00Z</o:LastSaved>
+
+ <o:Pages>1</o:Pages>
+ <o:Words>1</o:Words>
+ <o:Characters>1</o:Characters>
+
+ <!-- could derive this from author -->
+ <o:Company>DocBook</o:Company>
+
+ <o:Lines>1</o:Lines>
+ <o:Paragraphs>1</o:Paragraphs>
+ <o:CharactersWithSpaces>1</o:CharactersWithSpaces>
+ <o:Version>11.6113</o:Version>
+ </o:DocumentProperties>
+
+ <xsl:apply-templates select='$templatedoc/w:wordDocument/o:CustomDocumentProperties|$templatedoc/w:wordDocument/w:fonts|$templatedoc/w:wordDocument/w:lists|$templatedoc/w:wordDocument/w:styles' mode='doc:copy'/>
+
+ <w:docPr>
+ <w:view w:val="print"/>
+ <w:zoom w:percent="100"/>
+ <w:doNotEmbedSystemFonts/>
+ <w:attachedTemplate w:val=""/>
+ <w:documentProtection w:formatting='on' w:enforcement='on'
+ w:unprotectPassword='CAA7FF77'/>
+ <w:defaultTabStop w:val="720"/>
+ <w:autoHyphenation/>
+ <w:hyphenationZone w:val="357"/>
+ <w:doNotHyphenateCaps/>
+ <w:evenAndOddHeaders/>
+ <w:characterSpacingControl w:val="DontCompress"/>
+ <w:optimizeForBrowser/>
+ <w:validateAgainstSchema/>
+ <w:saveInvalidXML w:val="off"/>
+ <w:ignoreMixedContent w:val="off"/>
+ <w:alwaysShowPlaceholderText w:val="off"/>
+ <w:footnotePr>
+ <w:footnote w:type="separator">
+ <w:p>
+ <w:r>
+ <w:separator/>
+ </w:r>
+ </w:p>
+ </w:footnote>
+ <w:footnote w:type="continuation-separator">
+ <w:p>
+ <w:r>
+ <w:continuationSeparator/>
+ </w:r>
+ </w:p>
+ </w:footnote>
+ </w:footnotePr>
+ <w:endnotePr>
+ <w:endnote w:type="separator">
+ <w:p>
+ <w:r>
+ <w:separator/>
+ </w:r>
+ </w:p>
+ </w:endnote>
+ <w:endnote w:type="continuation-separator">
+ <w:p>
+ <w:r>
+ <w:continuationSeparator/>
+ </w:r>
+ </w:p>
+ </w:endnote>
+ </w:endnotePr>
+ <w:compat>
+ <w:breakWrappedTables/>
+ <w:snapToGridInCell/>
+ <w:wrapTextWithPunct/>
+ <w:useAsianBreakRules/>
+ <w:useWord2002TableStyleRules/>
+ </w:compat>
+ <w:docVars>
+ </w:docVars>
+ </w:docPr>
+
+ <xsl:apply-templates select='$doc/*' mode='doc:toplevel'/>
+
+ </w:wordDocument>
+ </xsl:template>
+
+ <xsl:template name='doc:make-body'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <w:body>
+ <wx:sect>
+ <wx:sub-section>
+ <xsl:copy-of select='$content'/>
+ </wx:sub-section>
+ </wx:sect>
+ </w:body>
+ </xsl:template>
+
+ <xsl:template name='doc:make-subsection'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <wx:sub-section>
+ <xsl:copy-of select='$content'/>
+ </wx:sub-section>
+ </xsl:template>
+
+ <xsl:template name='doc:make-paragraph'>
+ <xsl:param name='style' select='"unknown"'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+ <xsl:param name='outline.level' select='0'/>
+ <xsl:param name='attributes.node' select='.'/>
+
+ <w:p>
+ <xsl:if test='$style != "" or
+ $outline.level != 0'>
+ <w:pPr>
+ <xsl:if test='$style != ""'>
+ <w:pStyle w:val='{$style}'/>
+ </xsl:if>
+
+ <xsl:if test='$outline.level != 0'>
+ <w:outlineLvl w:val='{$outline.level}'/>
+ </xsl:if>
+ </w:pPr>
+ </xsl:if>
+
+ <xsl:call-template name='attributes'>
+ <xsl:with-param name='node' select='$attributes.node'/>
+ </xsl:call-template>
+
+ <xsl:copy-of select='$content'/>
+ </w:p>
+ </xsl:template>
+
+ <xsl:template name='doc:make-phrase'>
+ <xsl:param name='style' select='""'/>
+ <xsl:param name='italic' select='0'/>
+ <xsl:param name='bold' select='0'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:phrase'/>
+ </xsl:param>
+
+ <w:r>
+ <xsl:if test='$style != "" or
+ $bold = 1 or
+ $italic = 1'>
+ <w:rPr>
+ <xsl:if test='$style != ""'>
+ <w:rStyle w:val='{$style}'/>
+ </xsl:if>
+ <xsl:if test='$italic = 1'>
+ <w:i/>
+ </xsl:if>
+ <xsl:if test='$bold = 1'>
+ <w:b/>
+ </xsl:if>
+ </w:rPr>
+ </xsl:if>
+
+ <w:t>
+ <xsl:copy-of select='$content'/>
+ </w:t>
+ </w:r>
+ </xsl:template>
+
+ <xsl:template name='doc:make-hyperlink'>
+ <xsl:param name='target'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <w:hlink w:dest='{$target}'>
+ <xsl:copy-of select='$content'/>
+ </w:hlink>
+ </xsl:template>
+
+ <xsl:template name='doc:make-table'>
+ <xsl:param name='columns'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates select='*[not(self::caption|self::doc:caption|self::textobject|self::doc:textobject)]'
+ mode='doc:body'/>
+ </xsl:param>
+
+ <w:tbl>
+ <w:tblPr>
+ <w:tblW w:w="0" w:type="auto"/>
+ <w:tblInd w:w="108" w:type="dxa"/>
+ <w:tblLayout w:type="Fixed"/>
+ </w:tblPr>
+ <w:tblGrid>
+ <xsl:copy-of select='$columns'/>
+ </w:tblGrid>
+ <xsl:copy-of select='$content'/>
+ </w:tbl>
+ </xsl:template>
+
+ <xsl:template name='doc:make-column'>
+ <xsl:param name='width' select='0'/>
+
+ <w:gridcol w:w='{$width}'/>
+ </xsl:template>
+
+ <xsl:template name='doc:make-table-row'>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+ <xsl:param name='is-header' select='false()'/>
+
+ <w:tr>
+ <w:trPr>
+ <xsl:if test='$is-header'>
+ <w:tblHeader/>
+ </xsl:if>
+ </w:trPr>
+ <xsl:copy-of select='$content'/>
+ </w:tr>
+ </xsl:template>
+
+ <xsl:template name='doc:make-table-cell'>
+ <xsl:param name='width' select='0'/>
+ <xsl:param name='hidden' select='false()'/>
+ <xsl:param name='rowspan' select='1'/>
+ <xsl:param name='colspan' select='1'/>
+ <xsl:param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:param>
+
+ <w:tc>
+ <xsl:if test='$colspan != 1 or
+ $width != 0'>
+ <w:tcPr>
+ <xsl:if test='$colspan != 1 or
+ $width != 0'>
+ <w:tcW w:w='{$width}' w:type='dxa'/>
+ </xsl:if>
+ <xsl:if test='$hidden'>
+ <w:vmerge w:val='{$hidden}'/>
+ </xsl:if>
+ <xsl:if test='$rowspan != 1'>
+ <w:vmerge w:val='restart'/>
+ </xsl:if>
+ <xsl:if test='$colspan != 1'>
+ <w:gridspan w:val='{$colspan}'/>
+ </xsl:if>
+ </w:tcPr>
+ </xsl:if>
+
+ <xsl:copy-of select='$content'/>
+ </w:tc>
+ </xsl:template>
+
+ <xsl:template name='doc:make-soft-break'>
+ <w:br/>
+ </xsl:template>
+
+ <xsl:template name='attributes'>
+ <xsl:param name='node' select='.'/>
+
+ <xsl:if test='$node/@*'>
+ <aml:annotation aml:id='{count(preceding::*) + 1}' w:type='Word.Comment.Start'/>
+ <w:r>
+ <w:rPr>
+ <w:rStyle w:val='attributes'/>
+ </w:rPr>
+ <w:t>
+ <xsl:text> </xsl:text>
+ </w:t>
+ </w:r>
+ <aml:annotation aml:id='{count(preceding::*) + 1}' w:type='Word.Comment.End'/>
+ <w:r>
+ <w:rPr>
+ <w:rStyle w:val='CommentReference'/>
+ </w:rPr>
+ <aml:annotation aml:id='{count(preceding::*) + 1}' aml:author="DocBook" aml:createdate='2004-12-23T00:01:00' w:type='Word.Comment' w:initials='DBK'>
+ <aml:content>
+ <w:p>
+ <w:pPr>
+ <w:pStyle w:val='CommentText'/>
+ </w:pPr>
+ <w:r>
+ <w:rPr>
+ <w:rStyle w:val='CommentReference'/>
+ </w:rPr>
+ <w:annotationRef/>
+ </w:r>
+ <xsl:for-each select='$node/@*'>
+ <w:r>
+ <w:rPr>
+ <w:rStyle w:val='attribute-name'/>
+ </w:rPr>
+ <w:t>
+ <xsl:value-of select='name()'/>
+ </w:t>
+ </w:r>
+ <w:r>
+ <w:t>=</w:t>
+ </w:r>
+ <w:r>
+ <w:rPr>
+ <w:rStyle w:val='attribute-value'/>
+ </w:rPr>
+ <w:t>
+ <xsl:value-of select='.'/>
+ </w:t>
+ </w:r>
+ </xsl:for-each>
+ </w:p>
+ </aml:content>
+ </aml:annotation>
+ </w:r>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl
new file mode 100644
index 0000000..671c58f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl
@@ -0,0 +1,1375 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc='http://docbook.org/ns/docbook'
+ exclude-result-prefixes='doc'>
+
+ <!-- ********************************************************************
+ $Id: dbk2wp.xsl 8047 2008-06-10 12:46:53Z balls $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <!-- DO NOT USE THIS STYLESHEET!
+
+ This stylesheet is imported by the other dbk2* stylesheets.
+ Use one of those instead.
+
+ -->
+
+ <xsl:include href='../VERSION'/>
+
+ <!-- doc:docprop.author mode is for creating document metadata -->
+
+ <xsl:template match='author|doc:author|editor|doc:editor' mode='doc:docprop.author'>
+ <xsl:apply-templates select='firstname|doc:firstname |
+ personname/firstname|doc:personname/doc:firstname'
+ mode='doc:docprop.author'/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select='surname|doc:surname |
+ personname/surname|doc:personname/doc:surname'
+ mode='doc:docprop.author'/>
+ </xsl:template>
+
+ <xsl:template match='firstname|doc:firstname |
+ surname|doc:surname'
+ mode='doc:docprop.author'>
+ <xsl:apply-templates select='.' mode='doc:body'/>
+ </xsl:template>
+
+ <!-- doc:toplevel mode is for processing whole documents -->
+
+ <xsl:template match='*' mode='doc:toplevel'>
+ <xsl:call-template name='doc:make-body'/>
+ </xsl:template>
+
+ <!-- doc:body mode is for processing components of a document -->
+
+ <xsl:template match='book|article|chapter|section|sect1|sect2|sect3|sect4|sect5|simplesect |
+ doc:book|doc:article|doc:chapter|doc:section|doc:sect1|doc:sect2|doc:sect3|doc:sect4|doc:sect5|doc:simplesect'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-subsection'/>
+ </xsl:template>
+
+ <xsl:template match='articleinfo |
+ chapterinfo |
+ bookinfo |
+ doc:info |
+ doc:articleinfo |
+ doc:chapterinfo |
+ doc:bookinfo'
+ mode='doc:body'>
+ <xsl:apply-templates select='title|subtitle|titleabbrev |
+ doc:title|doc:subtitle|doc:titleabbrev'
+ mode='doc:body'/>
+ <xsl:apply-templates select='author|releaseinfo|abstract |
+ doc:author|doc:releaseinfo|doc:abstract'
+ mode='doc:body'/>
+ <!-- current implementation ignores all other metadata -->
+ <xsl:for-each select='*[not(self::title|self::subtitle|self::titleabbrev|self::author|self::releaseinfo|self::abstract |
+ self::doc:title|self::doc:subtitle|self::doc:titleabbrev|self::doc:author|self::doc:releaseinfo|self::doc:abstract)]'>
+ <xsl:call-template name='doc:nomatch'/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match='title|subtitle|titleabbrev |
+ doc:title|doc:subtitle|doc:titleabbrev'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'>
+ <xsl:choose>
+ <xsl:when test='(parent::section|parent::doc:section or
+ parent::sectioninfo/parent::section|parent::doc:sectioninfo/parent::doc:section) and
+ count(ancestor::section|ancestor::doc:section) > 5'>
+ <xsl:call-template name='doc:warning'>
+ <xsl:with-param name='message'>section nested deeper than 5 levels</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>sect5-</xsl:text>
+ <xsl:value-of select='local-name()'/>
+ </xsl:when>
+ <xsl:when test='parent::section|parent::doc:section or
+ parent::sectioninfo/parent::section|parent::doc:sectioninfo/parent::doc:section'>
+ <xsl:text>sect</xsl:text>
+ <xsl:value-of select='count(ancestor::section|ancestor::doc:section)'/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select='local-name()'/>
+ </xsl:when>
+ <xsl:when test='contains(local-name(..), "info")'>
+ <xsl:value-of select='local-name(../..)'/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select='local-name()'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='local-name(..)'/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select='local-name()'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name='outline.level'
+ select='count(ancestor::*) - count(parent::*[contains(local-name(), "info")]) - 1'/>
+ <xsl:with-param name='attributes.node'
+ select='../parent::*[contains(local-name(current()), "info")] |
+ parent::*[not(contains(local-name(current()), "info"))]'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <doc:template name='metadata' xmlns=''>
+ <title>Metadata</title>
+
+ <para>TODO: Handle all metadata elements, apart from titles.</para>
+ </doc:template>
+ <xsl:template match='*[contains(local-name(), "info")]/*[not(self::title|self::subtitle|self::titleabbrev|self::doc:title|self::doc:subtitle|self::doc:titleabbrev)]'
+ priority='0'
+ mode='doc:body'/>
+
+ <xsl:template match='author|editor|othercredit |
+ doc:author|doc:editor|doc:othercredit'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'
+ select='local-name()'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='personname|surname|firstname|honorific|lineage|othername|contrib |
+ doc:personname|doc:surname|doc:firstname|doc:honorific|doc:lineage|doc:othername|doc:contrib'
+ mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select='affiliation|address |
+ doc:affiliation|doc:address'
+ mode='doc:body'/>
+ <xsl:apply-templates select='authorblurb|personblurb |
+ doc:authorblurb|doc:personblurb'
+ mode='doc:body'/>
+ </xsl:template>
+ <xsl:template match='affiliation|doc:affiliation'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"affiliation"'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match='address[parent::author|parent::editor|parent::othercredit] |
+ doc:address[parent::doc:author|parent::doc:editor|parent::doc:othercredit]'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"address"'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+ <!-- do not attempt to handle recursive structures -->
+ <xsl:template match='address[not(parent::author|parent::editor|parent::othercredit)] |
+ doc:address[not(parent::doc:author|parent::doc:editor|parent::doc:othercredit)]'
+ mode='doc:body'>
+ <xsl:apply-templates select='node()[not(self::affiliation|self::authorblurb|self::doc:affiliation|self::doc:authorblurb)]'/>
+ </xsl:template>
+ <xsl:template match='abstract|doc:abstract'
+ mode='doc:body'>
+ <xsl:if test='title|doc:title'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"abstract-title"'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='title/node()|doc:title/node()'
+ mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates select='*[not(self::title|self::doc:title)]'
+ mode='doc:body'>
+ <xsl:with-param name='class'>abstract</xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:template>
+ <!-- TODO -->
+ <xsl:template match='authorblurb|personblurb |
+ doc:authorblurb|doc:personblurb'
+ mode='doc:body'/>
+
+ <!-- TODO: handle inline markup (eg. emphasis) -->
+ <xsl:template match='surname|firstname|honorific|lineage|othername|contrib|email|shortaffil|jobtitle|orgname|orgdiv|street|pob|postcode|city|state|country|phone|fax|citetitle |
+ doc:surname|doc:firstname|doc:honorific|doc:lineage|doc:othername|doc:contrib|doc:email|doc:shortaffil|doc:jobtitle|doc:orgname|doc:orgdiv|doc:street|doc:pob|doc:postcode|doc:city|doc:state|doc:country|doc:phone|doc:fax|doc:citetitle'
+ mode='doc:body'>
+ <xsl:if test='preceding-sibling::*'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='content'>
+ <xsl:text> </xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name='doc:handle-linebreaks'>
+ <xsl:with-param name='style' select='local-name()'/>
+ <xsl:with-param name='content' select='node()'/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match='email|doc:email'
+ mode='doc:body'>
+ <xsl:variable name='address'>
+ <xsl:choose>
+ <xsl:when test='starts-with(., "mailto:")'>
+ <xsl:value-of select='.'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>mailto:</xsl:text>
+ <xsl:value-of select='.'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name='doc:make-hyperlink'>
+ <xsl:with-param name='target' select='$address'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:handle-linebreaks'>
+ <xsl:with-param name='style'>Hyperlink</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+ <!-- otheraddr often contains ulink -->
+ <xsl:template match='otheraddr|doc:otheraddr'
+ mode='doc:body'>
+ <xsl:choose>
+ <xsl:when test='ulink|doc:ulink'>
+ <xsl:for-each select='ulink|doc:ulink'>
+ <xsl:variable name='prev'
+ select='preceding-sibling::ulink[1] |
+ preceding-sibling::doc:ulink[1]'/>
+ <xsl:choose>
+ <xsl:when test='$prev'>
+ <xsl:for-each
+ select='preceding-sibling::node()[generate-id(following-sibling::*[self::ulink|self::doc:ulink][1]) = generate-id(current())]'>
+ <xsl:call-template name='doc:handle-linebreaks'>
+ <xsl:with-param name='style'>otheraddr</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test='preceding-sibling::node()'>
+ <xsl:call-template name='doc:handle-linebreaks'>
+ <xsl:with-param name='style'>otheraddr</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:apply-templates select='.'/>
+ </xsl:for-each>
+ <xsl:if test='*[self::ulink|self::doc:ulink][last()]/following-sibling::node()'>
+ <xsl:call-template name='doc:handle-linebreaks'>
+ <xsl:with-param name='content'
+ select='*[self::ulink|self::doc:ulink][last()]/following-sibling::node()'/>
+ <xsl:with-param name='style'>otheraddr</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='doc:handle-linebreaks'>
+ <xsl:with-param name='style'>otheraddr</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='ulink|doc:ulink'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-hyperlink'>
+ <xsl:with-param name='target' select='@url'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:handle-linebreaks'>
+ <xsl:with-param name='style'>Hyperlink</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Cannot round-trip this element -->
+ <xsl:template match='personname|doc:personname'
+ mode='doc:body'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:template>
+
+ <xsl:template match='releaseinfo|doc:releaseinfo'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'
+ select='"releaseinfo"'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='para|doc:para'
+ mode='doc:body'>
+ <xsl:param name='class'/>
+
+ <xsl:variable name='block'
+ select='blockquote|calloutlist|classsynopsis|funcsynopsis|figure|glosslist|graphic|informalfigure|informaltable|itemizedlist|literallayout|mediaobject|mediaobjectco|note|caution|warning|important|tip|orderedlist|programlisting|revhistory|segmentedlist|simplelist|table|variablelist |
+ doc:blockquote|doc:calloutlist|doc:classsynopsis|doc:funcsynopsis|doc:figure|doc:glosslist|doc:graphic|doc:informalfigure|doc:informaltable|doc:itemizedlist|doc:literallayout|doc:mediaobject|doc:mediaobjectco|doc:note|doc:caution|doc:warning|doc:important|doc:tip|doc:orderedlist|doc:programlisting|doc:revhistory|doc:segmentedlist|doc:simplelist|doc:table|doc:variablelist'/>
+
+ <xsl:choose>
+ <xsl:when test='$block'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'>
+ <xsl:choose>
+ <xsl:when test='$class != ""'>
+ <xsl:value-of select='$class'/>
+ </xsl:when>
+ <xsl:otherwise>para</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name='content'
+ select='$block[1]/preceding-sibling::node()'/>
+ </xsl:call-template>
+
+ <xsl:for-each select='$block'>
+ <xsl:apply-templates select='.'/>
+
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'>
+ <xsl:choose>
+ <xsl:when test='$class != ""'>
+ <xsl:value-of select='$class'/>
+ </xsl:when>
+ <xsl:otherwise>Normal</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name='content'
+ select='following-sibling::node()[generate-id(preceding-sibling::*[self::blockquote|self::calloutlist|self::figure|self::glosslist|self::graphic|self::informalfigure|self::informaltable|self::itemizedlist|self::literallayout|self::mediaobject|self::mediaobjectco|self::note|self::caution|self::warning|self::important|self::tip|self::orderedlist|self::programlisting|self::revhistory|self::segmentedlist|self::simplelist|self::table|self::variablelist | self::doc:blockquote|self::doc:calloutlist|self::doc:figure|self::doc:glosslist|self::doc:graphic|self::doc:informalfigure|self::doc:informaltable|self::doc:itemizedlist|self::doc:literallayout|self::doc:mediaobject|self::doc:mediaobjectco|self::doc:note|self::doc:caution|self::doc:warning|self::doc:important|self::doc:tip|self::doc:orderedlist|self::doc:programlisting|self::doc:revhistory|self::doc:segmentedlist|self::doc:simplelist|self::doc:table|self::doc:variablelist][1]) = generate-id(current())]'/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'>
+ <xsl:choose>
+ <xsl:when test='$class != ""'>
+ <xsl:value-of select='$class'/>
+ </xsl:when>
+ <xsl:otherwise>Normal</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='simpara|doc:simpara'
+ mode='doc:body'>
+ <xsl:param name='class'/>
+
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'>
+ <xsl:choose>
+ <xsl:when test='$class != ""'>
+ <xsl:value-of select='concat("sim-", $class)'/>
+ </xsl:when>
+ <xsl:otherwise>simpara</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='emphasis|doc:emphasis'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='italic'>
+ <xsl:choose>
+ <xsl:when test='not(@role)'>1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name='bold'>
+ <xsl:choose>
+ <xsl:when test='@role = "bold" or @role = "strong"'>1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='informalfigure|doc:informalfigure'
+ mode='doc:body'>
+ <xsl:if test='mediaobject/imageobject/imagedata |
+ doc:mediaobject/doc:imageobject/doc:imagedata'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"informalfigure-imagedata"'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='style'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='mediaobject/imageobject/imagedata/@fileref |
+ doc:mediaobject/doc:imageobject/doc:imagedata/@fileref'
+ mode='textonly'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select='caption|doc:caption'
+ mode='doc:body'/>
+ <xsl:for-each select='*[not(self::mediaobject|self::doc:mediaobject|self::caption|self::doc:caption)]'>
+ <xsl:call-template name='doc:nomatch'/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match='mediaobject|mediaobjectco |
+ doc:mediaobject|doc:mediaobjectco'
+ mode='doc:body'>
+ <xsl:apply-templates select='objectinfo/title|doc:objectinfo/doc:title'/>
+ <xsl:apply-templates select='objectinfo/subtitle|objectinfo/subtitle |
+ doc:objectinfo/doc:subtitle|doc:objectinfo/doc:subtitle'/>
+ <!-- TODO: indicate error for other children of objectinfo -->
+
+ <xsl:apply-templates select='*[not(self::objectinfo|self::doc:objectinfo)]'/>
+ </xsl:template>
+ <xsl:template match='imageobject|imageobjectco|audioobject|videoobject |
+ doc:imageobject|doc:imageobjectco|doc:audioobject|doc:videoobject'
+ mode='doc:body'>
+ <xsl:apply-templates select='objectinfo/title|doc:objectinfo/doc:title'/>
+ <xsl:apply-templates select='objectinfo/subtitle|doc:objectinfo/doc:subtitle'/>
+ <!-- TODO: indicate error for other children of objectinfo -->
+
+ <xsl:apply-templates select='areaspec|doc:areaspec'/>
+
+ <xsl:choose>
+ <xsl:when test='imagedata|audiodata|videodata |
+ doc:imagedata|doc:audiodata|doc:videodata'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'
+ select='concat(local-name(), "-", local-name(imagedata|audiodata|videodata|doc:imagedata|doc:audiodata|doc:videodata))'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='*/@fileref'
+ mode='textonly'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='self::imageobjectco/imageobject/imagedata |
+ self::doc:imageobjectco/doc:imageobject/doc:imagedata'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'
+ select='concat(local-name(), "-imagedata")'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='*/@fileref'
+ mode='textonly'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:apply-templates select='calloutlist|doc:calloutlist'/>
+
+ <xsl:for-each select='*[not(self::imageobject |
+ self::imagedata |
+ self::audiodata |
+ self::videodata |
+ self::areaspec |
+ self::calloutlist |
+ self::doc:imageobject |
+ self::doc:imagedata |
+ self::doc:audiodata |
+ self::doc:videodata |
+ self::doc:areaspec |
+ self::doc:calloutlist)]'>
+ <xsl:call-template name='doc:nomatch'/>
+ </xsl:for-each>
+ </xsl:template>
+ <xsl:template match='textobject|doc:textobject'
+ mode='doc:body'>
+ <xsl:choose>
+ <xsl:when test='objectinfo/title|objectinfo|subtitle |
+ doc:objectinfo/doc:title|doc:objectinfo|doc:subtitle'>
+ <xsl:apply-templates select='objectinfo/title|doc:objectinfo/doc:title'
+ mode='doc:body'/>
+ <xsl:apply-templates select='objectinfo/subtitle|doc:objectinfo/doc:subtitle'
+ mode='doc:body'/>
+ <!-- TODO: indicate error for other children of objectinfo -->
+ </xsl:when>
+
+ <!-- In a table, the table itself and the caption delimit the textobject -->
+ <xsl:when test='ancestor::table |
+ ancestor::doc:table |
+ ancestor::informaltable |
+ ancestor::doc:informaltable'/>
+
+ <xsl:otherwise>
+ <!-- synthesize a title so that the parent textobject
+ can be recreated.
+ -->
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"textobject-title"'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='content'>
+ <xsl:text>Text Object </xsl:text>
+ <xsl:number level='any'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select='*[not(self::objectinfo|self::doc:objectinfo)]'
+ mode='doc:body'/>
+ </xsl:template>
+
+ <xsl:template match='caption|doc:caption'
+ mode='doc:body'>
+ <xsl:choose>
+ <xsl:when test='not(*)'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"Caption"'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='not(text()) and
+ count(*) = count(para|doc:para) and
+ count(*) = 1'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"caption"'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='*/node()' mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='text()'>
+ <!-- Not valid DocBook -->
+ <xsl:call-template name='doc:nomatch'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"Caption"'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='*[self::para|self::doc:para][1]/node()'
+ mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:for-each select='text()|*[not(self::para|self::doc:para)]|*[self::para|self::doc:para][position() != 1]'>
+ <xsl:call-template name='doc:nomatch'/>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='area|areaspec|doc:area|doc:areaspec'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='local-name()'/>
+ <xsl:with-param name='content'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='calloutlist|doc:calloutlist'
+ mode='doc:body'>
+ <xsl:apply-templates select='callout|doc:callout'/>
+ </xsl:template>
+
+ <xsl:template match='callout|doc:callout'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"callout"'/>
+ <xsl:with-param name='content'>
+ <!-- Normally a para would be the first child of a callout -->
+ <xsl:apply-templates select='*[1][self::para|self::doc:para]/node()'
+ mode='list'/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <!-- This is to catch the case where a listitem's first child is not a paragraph.
+ - We may not be able to represent this properly.
+ -->
+ <xsl:apply-templates select='*[1][not(self::para|self::doc:para)]'
+ mode='list'/>
+
+ <xsl:apply-templates select='*[position() != 1]'
+ mode='list'/>
+ </xsl:template>
+
+ <xsl:template match='table|informaltable |
+ doc:table|doc:informaltable'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-table'>
+ <xsl:with-param name='columns'>
+ <xsl:apply-templates select='tgroup/colspec|doc:tgroup/doc:colspec'
+ mode='doc:column'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select='textobject|doc:textobject'
+ mode='doc:body'/>
+ <xsl:choose>
+ <xsl:when test='caption|doc:caption'>
+ <xsl:apply-templates select='caption|doc:caption'
+ mode='doc:body'/>
+ </xsl:when>
+ <xsl:when test='textobject|doc:textobject'>
+ <!-- Synthesize a caption to delimit the textobject -->
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'>Caption</xsl:with-param>
+ <xsl:with-param name='content'/>
+ <xsl:with-param name='attributes.node' select='/..'/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='colspec|doc:colspec' mode='doc:column'>
+ <xsl:variable name='width'>
+ <xsl:choose>
+ <xsl:when test='contains(@colwidth, "*")'>
+ <!-- May need to resolve proportional width with other columns -->
+ <xsl:value-of select='substring-before(@colwidth, "*")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='@colwidth'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name='doc:make-column'>
+ <xsl:with-param name='width' select='$width'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='colspec|doc:colspec' mode='doc:body'/>
+
+ <xsl:template name='doc:repeat'>
+ <xsl:param name='repeats' select='0'/>
+ <xsl:param name='content'/>
+
+ <xsl:if test='$repeats > 0'>
+ <xsl:copy-of select='$content'/>
+ <xsl:call-template name='doc:repeat'>
+ <xsl:with-param name='repeats' select='$repeats - 1'/>
+ <xsl:with-param name='content' select='$content'/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match='tgroup|tbody|thead |
+ doc:tgroup|doc:tbody|doc:thead'
+ mode='doc:body'>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:template>
+ <xsl:template match='row|doc:row' mode='doc:body'>
+ <xsl:call-template name='doc:make-table-row'>
+ <xsl:with-param name='is-header' select='boolean(parent::thead|parent::doc:thead)'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='entry|doc:entry' mode='doc:body'>
+
+ <!--
+ Position = Sum(i,preceding-sibling[@colspan = ""]) + entry[i].@colspan)
+ -->
+
+ <xsl:variable name='position'>
+ <xsl:call-template name='doc:sum-sibling'>
+ <xsl:with-param name='sum' select='"1"'/>
+ <xsl:with-param name='node' select='.'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name='limit' select='$position + @colspan'/>
+
+ <xsl:variable name='width.raw'>
+ <xsl:choose>
+ <xsl:when test='@colspan != ""'>
+
+ <!-- Select all the colspec nodes which correspond to the
+ column. That is all the nodes between the current
+ column number and the column number plus the span.
+ -->
+
+ <xsl:variable name='combinedWidth'>
+ <xsl:call-template name='doc:sum'>
+ <xsl:with-param name='nodes' select='ancestor::*[self::table|self::doc:table|self::informaltable|self::doc:informaltable][1]/*[self::tgroup|self::doc:tgroup]/*[self::colspec|self::doc:colspec][not(position() &lt; $position) and position() &lt; $limit]'/>
+ <xsl:with-param name='sum' select='"0"'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select='$combinedWidth'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='ancestor::*[self::table|self::doc:table|self::informaltable|self::doc:informaltable][1]/*[self::tgroup|self::doc:tgroup]/*[self::colspec|self::doc:colspec][position() = $position]/@colwidth'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name='doc:make-table-cell'>
+ <xsl:with-param name='width'>
+ <xsl:choose>
+ <xsl:when test='contains($width.raw, "*")'>
+
+ <!-- Select all the colspec nodes which correspond to the
+ column. That is all the nodes between the current
+ column number and the column number plus the span.
+ -->
+
+ <xsl:value-of select='substring-before($width.raw, "*")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$width.raw'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+
+ <xsl:with-param name='hidden' select='@hidden'/>
+ <xsl:with-param name='rowspan' select='@rowspan'/>
+ <xsl:with-param name='colspan' select='@colspan'/>
+
+ <xsl:with-param name='content'>
+ <xsl:choose>
+ <xsl:when test='not(para|doc:para)'>
+ <!-- TODO: check for any block elements -->
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'/>
+ <xsl:with-param name='attributes.node' select='/..'/>
+ <xsl:with-param name='content'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode='doc:body'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Calculates the position by adding the
+ count of the preceding siblings where they aren't colspans
+ and adding the colspans of those entries which do.
+ -->
+
+ <xsl:template name='doc:sum-sibling'>
+ <xsl:param name='sum'/>
+ <xsl:param name='node'/>
+
+ <xsl:variable name='add'>
+ <xsl:choose>
+ <xsl:when test='$node/preceding-sibling::*[self::entry|self::doc:entry]/@colspan != ""'>
+ <xsl:value-of select='$node/preceding-sibling::*[self::entry|self::doc:entry]/@colspan'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='"1"'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='count($node/preceding-sibling::*[self::entry|self::doc:entry]) &gt; 0'>
+ <xsl:call-template name='doc:sum-sibling'>
+ <xsl:with-param name='sum' select='$sum + $add'/>
+ <xsl:with-param name='node'
+ select='$node/preceding-sibling::*[self::entry|self::doc:entry][1]'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$sum'/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <xsl:template name='doc:sum'>
+ <xsl:param name='sum' select='"0"'/>
+ <xsl:param name='nodes'/>
+
+ <xsl:variable name='tmpSum' select='$sum + $nodes[1]/@colwidth'/>
+
+ <xsl:choose>
+ <xsl:when test='count($nodes) &gt; 1'>
+ <xsl:call-template name='doc:sum'>
+ <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
+ <xsl:with-param name='sum' select='$tmpSum'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$tmpSum'/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <xsl:template match='*[self::para|self::simpara|self::doc:para|self::doc:simpara]/text()[string-length(normalize-space(.)) != 0]'
+ mode='doc:body'>
+ <xsl:call-template name='doc:handle-linebreaks'/>
+ </xsl:template>
+
+ <xsl:template match='text()[not(parent::para|parent::simpara|parent::literallayout|parent::programlisting | parent::doc:para|parent::doc:simpara|parent::doc:literallayout|parent::doc:programlisting)][string-length(normalize-space(.)) != 0]'
+ mode='doc:body'>
+ <xsl:call-template name='doc:handle-linebreaks'/>
+ </xsl:template>
+ <xsl:template match='text()[string-length(normalize-space(.)) = 0]'
+ mode='doc:body'/>
+ <xsl:template match='literallayout/text()|programlisting/text() |
+ doc:literallayout/text()|doc:programlisting/text()'
+ mode='doc:body'>
+ <xsl:call-template name='doc:handle-linebreaks'/>
+ </xsl:template>
+ <xsl:template name='doc:handle-linebreaks'>
+ <xsl:param name='content' select='.'/>
+ <xsl:param name='style'/>
+
+ <xsl:choose>
+ <xsl:when test='not($content)'/>
+ <xsl:when test='contains($content, "&#xa;")'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='style' select='$style'/>
+ <xsl:with-param name='content'
+ select='substring-before($content, "&#xa;")'/>
+ </xsl:call-template>
+
+ <xsl:call-template name='doc:handle-linebreaks-aux'>
+ <xsl:with-param name='content'
+ select='substring-after($content, "&#xa;")'/>
+ <xsl:with-param name='style' select='$style'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='style' select='$style'/>
+ <xsl:with-param name='content' select='$content'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- pre-condition: leading linefeed has been stripped -->
+ <xsl:template name='doc:handle-linebreaks-aux'>
+ <xsl:param name='content'/>
+ <xsl:param name='style'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($content, "&#xa;")'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='style' select='$style'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-soft-break'/>
+ <xsl:value-of select='substring-before($content, "&#xa;")'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name='doc:handle-linebreaks-aux'>
+ <xsl:with-param name='content'
+ select='substring-after($content, "&#xa;")'/>
+ <xsl:with-param name='style' select='$style'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='style' select='$style'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-soft-break'/>
+ <xsl:value-of select='$content'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='authorblurb|formalpara|legalnotice|note|caution|warning|important|tip |
+ doc:authorblurb|doc:formalpara|doc:legalnotice|doc:note|doc:caution|doc:warning|doc:important|doc:tip'
+ mode='doc:body'>
+ <xsl:apply-templates select='*'>
+ <xsl:with-param name='class'>
+ <xsl:value-of select='local-name()'/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match='blockquote|doc:blockquote'
+ mode='doc:body'>
+ <xsl:apply-templates select='blockinfo|title|doc:info|doc:title'
+ mode='doc:body'>
+ <xsl:with-param name='class'>
+ <xsl:value-of select='local-name()'/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ <xsl:apply-templates select='*[not(self::blockinfo|self::title|self::attribution|self::doc:info|self::doc:title|self::doc:attribution)]'
+ mode='doc:body'>
+ <xsl:with-param name='class' select='"blockquote"'/>
+ </xsl:apply-templates>
+ <xsl:if test='attribution|doc:attribution'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"blockquote-attribution"'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='attribution/node()|doc:attribution/node()'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match='literallayout|programlisting|doc:literallayout|doc:programlisting'
+ mode='doc:body'>
+ <xsl:param name='class'/>
+
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='local-name()'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='bridgehead|doc:bridgehead'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"bridgehead"'/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match='itemizedlist|orderedlist |
+ doc:itemizedlist|doc:orderedlist'
+ mode='doc:body'>
+ <xsl:apply-templates select='listitem|doc:listitem'
+ mode='doc:body'/>
+ </xsl:template>
+
+ <xsl:template match='listitem|doc:listitem'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style'
+ select='concat(local-name(..),
+ count(ancestor::itemizedlist|ancestor::orderedlist|ancestor::doc:itemizedlist|ancestor::doc:orderedlist))'/>
+ <xsl:with-param name='is-listitem' select='true()'/>
+
+ <xsl:with-param name='content'>
+ <!-- Normally a para would be the first child of a listitem -->
+ <xsl:apply-templates select='*[1][self::para|self::doc:para]/node()'
+ mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <!-- This is to catch the case where a listitem's first child is not a paragraph.
+ - We may not be able to represent this properly.
+ -->
+ <xsl:apply-templates select='*[1][not(self::para|self::doc:para)]'
+ mode='doc:list-continue'/>
+
+ <xsl:apply-templates select='*[position() != 1]'
+ mode='doc:list-continue'/>
+ </xsl:template>
+
+ <xsl:template match='para|doc:para' mode='doc:list-continue'>
+ <xsl:apply-templates select='.'
+ mode='doc:body'>
+ <xsl:with-param name='class' select='"para-continue"'/>
+ </xsl:apply-templates>
+ </xsl:template>
+ <!-- non-paragraph elements in a listitem are rolled back into
+ the list item upon conversion.
+ -->
+ <xsl:template match='*' mode='doc:list-continue'>
+ <xsl:apply-templates select='.' mode='doc:body'/>
+ </xsl:template>
+
+ <xsl:template match='variablelist|doc:variablelist'
+ mode='doc:body'>
+ <xsl:apply-templates select='*[not(self::varlistentry|self::doc:varlistentry)]'/>
+
+ <xsl:call-template name='doc:make-table'>
+ <xsl:with-param name='columns'>
+ <xsl:call-template name='doc:make-column'>
+ <xsl:with-param name='width' select='"1"'/>
+ </xsl:call-template>
+ <xsl:call-template name='doc:make-column'>
+ <xsl:with-param name='width' select='"3"'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='rows'>
+ <xsl:apply-templates select='varlistentry|doc:varlistentry'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match='varlistentry|doc:varlistentry'
+ mode='doc:body'>
+ <xsl:call-template name='doc:make-table-row'>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-table-cell'>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"variablelist-term"'/>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='*[self::term|self::doc:term][1]/node()'
+ mode='doc:body'/>
+ <xsl:for-each select='*[self::term|self::doc:term][position() != 1]'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-soft-break'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name='doc:make-table-cell'>
+ <xsl:with-param name='content'>
+ <xsl:apply-templates select='listitem/node()|doc:listitem/node()'
+ mode='doc:body'/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- These elements are not displayed.
+ - However, they may need to be added (perhaps as hidden text)
+ - for round-tripping.
+ -->
+ <xsl:template match='anchor|areaset|audiodata|audioobject|
+ beginpage|
+ constraint|
+ indexterm|itermset|
+ keywordset|
+ msg |
+ doc:anchor|doc:areaset|doc:audiodata|doc:audioobject|
+ doc:beginpage|
+ doc:constraint|
+ doc:indexterm|doc:itermset|
+ doc:keywordset|
+ doc:msg'
+ mode='doc:body'/>
+
+ <xsl:template match='*' name='doc:nomatch'>
+ <xsl:param name='node' select='.'/>
+
+ <xsl:message>
+ <xsl:value-of select='local-name($node)'/>
+ <xsl:if test='namespace-uri($node) != ""'>
+ <xsl:text> [</xsl:text>
+ <xsl:value-of select='namespace-uri($node)'/>
+ <xsl:text>]</xsl:text>
+ </xsl:if>
+ <xsl:text> encountered</xsl:text>
+ <xsl:if test='$node/parent::*'>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select='local-name($node/parent::*)'/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <xsl:for-each select='$node'>
+ <xsl:choose>
+ <xsl:when test='self::abstract |
+ self::ackno |
+ self::address |
+ self::answer |
+ self::appendix |
+ self::artheader |
+ self::authorgroup |
+ self::bibliodiv |
+ self::biblioentry |
+ self::bibliography |
+ self::bibliomixed |
+ self::bibliomset |
+ self::biblioset |
+ self::bridgehead |
+ self::calloutlist |
+ self::caption |
+ self::classsynopsis |
+ self::colophon |
+ self::constraintdef |
+ self::copyright |
+ self::dedication |
+ self::epigraph |
+ self::equation |
+ self::example |
+ self::figure |
+ self::funcsynopsis |
+ self::glossary |
+ self::glossdef |
+ self::glossdiv |
+ self::glossentry |
+ self::glosslist |
+ self::graphic |
+ self::highlights |
+ self::imageobject |
+ self::imageobjectco |
+ self::index |
+ self::indexdiv |
+ self::indexentry |
+ self::informalequation |
+ self::informalexample |
+ self::informalfigure |
+ self::lot |
+ self::lotentry |
+ self::mediaobject |
+ self::mediaobjectco |
+ self::member |
+ self::msgentry |
+ self::msgset |
+ self::part |
+ self::partintro |
+ self::personblurb |
+ self::preface |
+ self::printhistory |
+ self::procedure |
+ self::programlisting |
+ self::programlistingco |
+ self::publisher |
+ self::qandadiv |
+ self::qandaentry |
+ self::qandaset |
+ self::question |
+ self::refdescriptor |
+ self::refentry |
+ self::refentrytitle |
+ self::reference |
+ self::refmeta |
+ self::refname |
+ self::refnamediv |
+ self::refpurpose |
+ self::refsect1 |
+ self::refsect2 |
+ self::refsect3 |
+ self::refsection |
+ self::refsynopsisdiv |
+ self::screen |
+ self::screenco |
+ self::screenshot |
+ self::seg |
+ self::seglistitem |
+ self::segmentedlist |
+ self::segtitle |
+ self::set |
+ self::setindex |
+ self::sidebar |
+ self::simplelist |
+ self::simplemsgentry |
+ self::step |
+ self::stepalternatives |
+ self::subjectset |
+ self::substeps |
+ self::task |
+ self::textobject |
+ self::toc |
+ self::videodata |
+ self::videoobject |
+
+ self::doc:abstract |
+ self::doc:ackno |
+ self::doc:address |
+ self::doc:answer |
+ self::doc:appendix |
+ self::doc:artheader |
+ self::doc:authorgroup |
+ self::doc:bibliodiv |
+ self::doc:biblioentry |
+ self::doc:bibliography |
+ self::doc:bibliomixed |
+ self::doc:bibliomset |
+ self::doc:biblioset |
+ self::doc:bridgehead |
+ self::doc:calloutlist |
+ self::doc:caption |
+ self::doc:classsynopsis |
+ self::doc:colophon |
+ self::doc:constraintdef |
+ self::doc:copyright |
+ self::doc:dedication |
+ self::doc:epigraph |
+ self::doc:equation |
+ self::doc:example |
+ self::doc:figure |
+ self::doc:funcsynopsis |
+ self::doc:glossary |
+ self::doc:glossdef |
+ self::doc:glossdiv |
+ self::doc:glossentry |
+ self::doc:glosslist |
+ self::doc:graphic |
+ self::doc:highlights |
+ self::doc:imageobject |
+ self::doc:imageobjectco |
+ self::doc:index |
+ self::doc:indexdiv |
+ self::doc:indexentry |
+ self::doc:informalequation |
+ self::doc:informalexample |
+ self::doc:informalfigure |
+ self::doc:lot |
+ self::doc:lotentry |
+ self::doc:mediaobject |
+ self::doc:mediaobjectco |
+ self::doc:member |
+ self::doc:msgentry |
+ self::doc:msgset |
+ self::doc:part |
+ self::doc:partintro |
+ self::doc:personblurb |
+ self::doc:preface |
+ self::doc:printhistory |
+ self::doc:procedure |
+ self::doc:programlisting |
+ self::doc:programlistingco |
+ self::doc:publisher |
+ self::doc:qandadiv |
+ self::doc:qandaentry |
+ self::doc:qandaset |
+ self::doc:question |
+ self::doc:refdescriptor |
+ self::doc:refentry |
+ self::doc:refentrytitle |
+ self::doc:reference |
+ self::doc:refmeta |
+ self::doc:refname |
+ self::doc:refnamediv |
+ self::doc:refpurpose |
+ self::doc:refsect1 |
+ self::doc:refsect2 |
+ self::doc:refsect3 |
+ self::doc:refsection |
+ self::doc:refsynopsisdiv |
+ self::doc:screen |
+ self::doc:screenco |
+ self::doc:screenshot |
+ self::doc:seg |
+ self::doc:seglistitem |
+ self::doc:segmentedlist |
+ self::doc:segtitle |
+ self::doc:set |
+ self::doc:setindex |
+ self::doc:sidebar |
+ self::doc:simplelist |
+ self::doc:simplemsgentry |
+ self::doc:step |
+ self::doc:stepalternatives |
+ self::doc:subjectset |
+ self::doc:substeps |
+ self::doc:task |
+ self::doc:textobject |
+ self::doc:toc |
+ self::doc:videodata |
+ self::doc:videoobject |
+
+ self::*[not(starts-with(local-name(), "informal")) and contains(local-name(), "info")]'>
+ <xsl:call-template name='doc:make-paragraph'>
+ <xsl:with-param name='style' select='"blockerror"'/>
+ <xsl:with-param name='content'>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='content'>
+ <xsl:value-of select='local-name()'/>
+ <xsl:if test='namespace-uri() != ""'>
+ <xsl:text> [</xsl:text>
+ <xsl:value-of select='namespace-uri()'/>
+ <xsl:text>]</xsl:text>
+ </xsl:if>
+ <xsl:text> encountered</xsl:text>
+ <xsl:if test='parent::*'>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select='local-name(parent::*)'/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Some elements are sometimes blocks, sometimes inline
+ <xsl:when test='self::affiliation |
+ self::alt |
+ self::attribution |
+ self::collab |
+ self::collabname |
+ self::confdates |
+ self::confgroup |
+ self::confnum |
+ self::confsponsor |
+ self::conftitle |
+ self::contractnum |
+ self::contractsponsor |
+ self::contrib |
+ self::corpauthor |
+ self::corpcredit |
+ self::corpname |
+ self::edition |
+ self::editor |
+ self::jobtitle |
+ self::personname |
+ self::publishername |
+ self::remark |
+
+ self::doc:affiliation |
+ self::doc:alt |
+ self::doc:attribution |
+ self::doc:collab |
+ self::doc:collabname |
+ self::doc:confdates |
+ self::doc:confgroup |
+ self::doc:confnum |
+ self::doc:confsponsor |
+ self::doc:conftitle |
+ self::doc:contractnum |
+ self::doc:contractsponsor |
+ self::doc:contrib |
+ self::doc:corpauthor |
+ self::doc:corpcredit |
+ self::doc:corpname |
+ self::doc:edition |
+ self::doc:editor |
+ self::doc:jobtitle |
+ self::doc:personname |
+ self::doc:publishername |
+ self::doc:remark'>
+
+ </xsl:when>
+ -->
+ <xsl:otherwise>
+ <xsl:call-template name='doc:make-phrase'>
+ <xsl:with-param name='style' select='"inlineerror"'/>
+ <xsl:with-param name='content'>
+ <xsl:value-of select='local-name()'/>
+ <xsl:text> encountered</xsl:text>
+ <xsl:if test='parent::*'>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select='local-name(parent::*)'/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match='*' mode='doc:copy'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*' mode='doc:copy'/>
+ <xsl:apply-templates mode='doc:copy'/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match='@*' mode='doc:copy'>
+ <xsl:copy/>
+ </xsl:template>
+
+ <!-- Stubs: the importing stylesheet must override these -->
+
+ <!-- stub template for creating a paragraph -->
+ <xsl:template name='doc:make-paragraph'>
+ </xsl:template>
+ <!-- stub template for creating a phrase -->
+ <xsl:template name='doc:make-phrase'>
+ </xsl:template>
+
+ <!-- stub template for inserting attributes -->
+ <xsl:template name='doc:attributes'/>
+
+ <!-- emit a message -->
+ <xsl:template name='doc:warning'>
+ <xsl:param name='message'/>
+
+ <xsl:message>WARNING: <xsl:value-of select='$message'/></xsl:message>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl
new file mode 100644
index 0000000..83a16b3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl
@@ -0,0 +1,39 @@
+<xsl:stylesheet version='1.0'
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns:rnd='http://docbook.org/ns/docbook/roundtrip'
+ xmlns:db='http://docbook.org/ns/docbook'
+ exclude-result-prefixes='db'>
+
+ <!-- ********************************************************************
+ $Id$
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+ <!-- rnd:map-paragraph-style and rd:map-character-style
+ allows the application to customise
+ the style names used by overriding this template.
+ The idea is to map custom names back to standard names. -->
+ <xsl:template name='rnd:map-paragraph-style'>
+ <xsl:param name='style'/>
+ <xsl:choose>
+ <xsl:when test='starts-with($style, "Normal")'/>
+
+ <!-- Probably should fold all style names to lower-case -->
+ <xsl:when test='$style = "Caption"'>caption</xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select='$style'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name='rnd:map-character-style'>
+ <xsl:param name='style'/>
+ <xsl:value-of select='$style'/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl
new file mode 100644
index 0000000..51bd9f5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl
@@ -0,0 +1,1270 @@
+<?xml version="1.0"?>
+<axsl:stylesheet xmlns:axsl="http://www.w3.org/1999/XSL/Transform" xmlns:dbk="http://docbook.org/ns/docbook" xmlns:rnd="http://docbook.org/ns/docbook/roundtrip" version="1.0">
+<!--====================================-->
+<!--= =-->
+<!--= DO NOT EDIT THIS STYLESHEET =-->
+<!--= =-->
+<!--= This stylesheet is generated =-->
+<!--= by makeSections.xsl and a =-->
+<!--= mapping specification. =-->
+<!--= =-->
+<!--= Revision history: =-->
+<!--= =-->
+<!--= $Id: normalise2sections.xsl 8107 2008-08-17 22:39:58Z balls $ =-->
+<!--= =-->
+<!--====================================-->
+ <axsl:output indent="yes"/>
+ <axsl:strip-space elements="*"/>
+ <axsl:preserve-space elements="dbk:para dbk:emphasis"/>
+ <axsl:template match="dbk:article">
+ <axsl:copy>
+ <axsl:for-each select="@*">
+ <axsl:copy/>
+ </axsl:for-each>
+ <axsl:variable name="books" select="dbk:para[@rnd:style = &quot;book&quot; or @rnd:style = &quot;book-title&quot;]"/>
+ <axsl:variable name="toplevel-components" select="dbk:para[@rnd:style = &quot;article&quot; or @rnd:style = &quot;article-title&quot; or @rnd:style = &quot;appendix&quot; or @rnd:style = &quot;appendix-title&quot; or @rnd:style = &quot;chapter&quot; or @rnd:style = &quot;chapter-title&quot; or @rnd:style = &quot;preface&quot; or @rnd:style = &quot;preface-title&quot;]"/>
+ <axsl:choose>
+ <axsl:when test="$books">
+ <axsl:apply-templates select="$books[1]/preceding-sibling::*"/>
+ <axsl:apply-templates select="$books[1]" mode="book">
+ <axsl:with-param name="books" select="$books[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:when test="$toplevel-components">
+ <axsl:apply-templates select="$toplevel-components[1]/preceding-sibling::*"/>
+ <axsl:apply-templates select="$toplevel-components[1]" mode="toplevel-component">
+ <axsl:with-param name="toplevel-components" select="$toplevel-components[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:apply-templates/>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:copy>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book">
+ <axsl:param name="books" select="/.."/>
+ <axsl:choose>
+ <axsl:when test="$books and (@rnd:style = &quot;book&quot; or @rnd:style = &quot;book-title&quot;)">
+ <axsl:call-template name="make-book">
+ <axsl:with-param name="books" select="$books"/>
+ <axsl:with-param name="book-components" select="$books[1]/preceding-sibling::dbk:para[@rnd:style = &quot;part&quot; or @rnd:style = &quot;part-title&quot; or @rnd:style = &quot;article&quot; or @rnd:style = &quot;article-title&quot; or @rnd:style = &quot;appendix&quot; or @rnd:style = &quot;appendix-title&quot; or @rnd:style = &quot;chapter&quot; or @rnd:style = &quot;chapter-title&quot; or @rnd:style = &quot;preface&quot; or @rnd:style = &quot;preface-title&quot;]"/>
+ </axsl:call-template>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="make-book">
+ <axsl:with-param name="books" select="$books"/>
+ <axsl:with-param name="book-components" select="following-sibling::dbk:para[@rnd:style = &quot;part&quot; or @rnd:style = &quot;part-title&quot; or @rnd:style = &quot;article&quot; or @rnd:style = &quot;article-title&quot; or @rnd:style = &quot;appendix&quot; or @rnd:style = &quot;appendix-title&quot; or @rnd:style = &quot;chapter&quot; or @rnd:style = &quot;chapter-title&quot; or @rnd:style = &quot;preface&quot; or @rnd:style = &quot;preface-title&quot;]"/>
+ </axsl:call-template>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template name="make-book">
+ <axsl:param name="books" select="/.."/>
+ <axsl:param name="book-components" select="/.."/>
+<!-- mode toplevel-templates -->
+ <book xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-component">
+ <axsl:with-param name="nextbook" select="$books[1]"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </book>
+ <axsl:apply-templates select="$books[1]" mode="book">
+ <axsl:with-param name="books" select="$books[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="toplevel-component">
+ <axsl:param name="toplevel-components" select="/.."/>
+ <axsl:choose>
+ <axsl:when test="$toplevel-components and (@rnd:style = &quot;article&quot; or @rnd:style = &quot;article-title&quot; or @rnd:style = &quot;appendix&quot; or @rnd:style = &quot;appendix-title&quot; or @rnd:style = &quot;chapter&quot; or @rnd:style = &quot;chapter-title&quot; or @rnd:style = &quot;preface&quot; or @rnd:style = &quot;preface-title&quot;)">
+ <axsl:call-template name="make-toplevel-component">
+ <axsl:with-param name="toplevel-components" select="$toplevel-components"/>
+ <axsl:with-param name="sect1s" select="$toplevel-components[1]/preceding-sibling::dbk:para[@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;]"/>
+ </axsl:call-template>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="make-toplevel-component">
+ <axsl:with-param name="toplevel-components" select="$toplevel-components"/>
+ <axsl:with-param name="sect1s" select="following-sibling::dbk:para[@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;]"/>
+ </axsl:call-template>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template name="make-toplevel-component">
+ <axsl:param name="toplevel-components" select="/.."/>
+ <axsl:param name="sect1s" select="/.."/>
+<!-- mode toplevel-templates: group:level - do not create element -->
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect1">
+ <axsl:with-param name="nexttoplevel-component" select="$toplevel-components[1]"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ <axsl:apply-templates select="$toplevel-components[1]" mode="toplevel-component">
+ <axsl:with-param name="toplevel-components" select="$toplevel-components[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book-component">
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextbook)"/>
+ <axsl:when test="@rnd:style = &quot;part&quot; or @rnd:style = &quot;part-title&quot; or @rnd:style = &quot;article&quot; or @rnd:style = &quot;article-title&quot; or @rnd:style = &quot;appendix&quot; or @rnd:style = &quot;appendix-title&quot; or @rnd:style = &quot;chapter&quot; or @rnd:style = &quot;chapter-title&quot; or @rnd:style = &quot;preface&quot; or @rnd:style = &quot;preface-title&quot;">
+ <axsl:variable name="nextbook-component" select="following-sibling::dbk:para[@rnd:style = &quot;part&quot; or @rnd:style = &quot;part-title&quot; or @rnd:style = &quot;article&quot; or @rnd:style = &quot;article-title&quot; or @rnd:style = &quot;appendix&quot; or @rnd:style = &quot;appendix-title&quot; or @rnd:style = &quot;chapter&quot; or @rnd:style = &quot;chapter-title&quot; or @rnd:style = &quot;preface&quot; or @rnd:style = &quot;preface-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextbook-component">
+ <axsl:variable name="sect1s" select="$nextbook-component/preceding-sibling::dbk:para[@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;]"/>
+<!-- mode sections 1 -->
+ <book-component xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </book-component>
+ <axsl:if test="count($book-components|$nextbook-component) = count($book-components)">
+ <axsl:apply-templates select="$nextbook-component" mode="book-component">
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect1s" select="following-sibling::dbk:para[@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;]"/>
+<!-- mode sections 2 -->
+ <book-component xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </book-component>
+ <axsl:if test="count($book-components|$nextbook-component) = count($book-components)">
+ <axsl:apply-templates select="$nextbook-component" mode="book-component">
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-component">
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book-sect1">
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook)"/>
+ <axsl:when test="@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;">
+ <axsl:variable name="nextsect1" select="following-sibling::dbk:para[@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect1">
+ <axsl:variable name="sect2s" select="$nextsect1/preceding-sibling::dbk:para[@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect1 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect1>
+ <axsl:if test="$nextsect1 and (not($book-components) or count($sect1s|$nextsect1) = count($sect1s))">
+ <axsl:apply-templates select="$nextsect1" mode="book-sect1">
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect2s" select="following-sibling::dbk:para[@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect1 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect1>
+ <axsl:if test="$nextsect1 and (not($book-components) or count($sect1s|$nextsect1) = count($sect1s))">
+ <axsl:apply-templates select="$nextsect1" mode="book-sect1">
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book-sect2">
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook)"/>
+ <axsl:when test="@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;">
+ <axsl:variable name="nextsect2" select="following-sibling::dbk:para[@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect2">
+ <axsl:variable name="sect3s" select="$nextsect2/preceding-sibling::dbk:para[@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect2 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect2>
+ <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+ <axsl:apply-templates select="$nextsect2" mode="book-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect3s" select="following-sibling::dbk:para[@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect2 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect2>
+ <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+ <axsl:apply-templates select="$nextsect2" mode="book-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book-sect3">
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook)"/>
+ <axsl:when test="@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;">
+ <axsl:variable name="nextsect3" select="following-sibling::dbk:para[@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect3">
+ <axsl:variable name="sect4s" select="$nextsect3/preceding-sibling::dbk:para[@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect3 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect3>
+ <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+ <axsl:apply-templates select="$nextsect3" mode="book-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect4s" select="following-sibling::dbk:para[@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect3 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect3>
+ <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+ <axsl:apply-templates select="$nextsect3" mode="book-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book-sect4">
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook)"/>
+ <axsl:when test="@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;">
+ <axsl:variable name="nextsect4" select="following-sibling::dbk:para[@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect4">
+ <axsl:variable name="sect5s" select="$nextsect4/preceding-sibling::dbk:para[@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect4 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect4>
+ <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+ <axsl:apply-templates select="$nextsect4" mode="book-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect5s" select="following-sibling::dbk:para[@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect4 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect4>
+ <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+ <axsl:apply-templates select="$nextsect4" mode="book-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book-sect5">
+ <axsl:param name="nextsect4" select="/.."/>
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect5s"/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook)"/>
+ <axsl:when test="@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;">
+ <axsl:variable name="nextsect5" select="following-sibling::dbk:para[@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;][1]"/>
+<!-- mode sections 3 -->
+ <sect5 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-terminal">
+ <axsl:with-param name="nextsect5" select="$nextsect5"/>
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </sect5>
+ <axsl:if test="$nextsect5 and (not($sect4s) or count($sect5s|$nextsect5) = count($sect5s))">
+ <axsl:apply-templates select="$nextsect5" mode="book-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="toplevel-sect1">
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+ <axsl:when test="@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;">
+ <axsl:variable name="nextsect1" select="following-sibling::dbk:para[@rnd:style = &quot;sect1&quot; or @rnd:style = &quot;sect1-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect1">
+ <axsl:variable name="sect2s" select="$nextsect1/preceding-sibling::dbk:para[@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect1 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect1>
+ <axsl:if test="count($sect1s|$nextsect1) = count($sect1s)">
+ <axsl:apply-templates select="$nextsect1" mode="toplevel-sect1">
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect2s" select="following-sibling::dbk:para[@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect1 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect1>
+ <axsl:if test="count($sect1s|$nextsect1) = count($sect1s)">
+ <axsl:apply-templates select="$nextsect1" mode="toplevel-sect1">
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect1">
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="toplevel-sect2">
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+ <axsl:when test="@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;">
+ <axsl:variable name="nextsect2" select="following-sibling::dbk:para[@rnd:style = &quot;sect2&quot; or @rnd:style = &quot;sect2-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect2">
+ <axsl:variable name="sect3s" select="$nextsect2/preceding-sibling::dbk:para[@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect2 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect2>
+ <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+ <axsl:apply-templates select="$nextsect2" mode="toplevel-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect3s" select="following-sibling::dbk:para[@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect2 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect2>
+ <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+ <axsl:apply-templates select="$nextsect2" mode="toplevel-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="toplevel-sect3">
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+ <axsl:when test="@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;">
+ <axsl:variable name="nextsect3" select="following-sibling::dbk:para[@rnd:style = &quot;sect3&quot; or @rnd:style = &quot;sect3-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect3">
+ <axsl:variable name="sect4s" select="$nextsect3/preceding-sibling::dbk:para[@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect3 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect3>
+ <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+ <axsl:apply-templates select="$nextsect3" mode="toplevel-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect4s" select="following-sibling::dbk:para[@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect3 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect3>
+ <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+ <axsl:apply-templates select="$nextsect3" mode="toplevel-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="toplevel-sect4">
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+ <axsl:when test="@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;">
+ <axsl:variable name="nextsect4" select="following-sibling::dbk:para[@rnd:style = &quot;sect4&quot; or @rnd:style = &quot;sect4-title&quot;][1]"/>
+ <axsl:choose>
+ <axsl:when test="$nextsect4">
+ <axsl:variable name="sect5s" select="$nextsect4/preceding-sibling::dbk:para[@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;]"/>
+<!-- mode sections 1 -->
+ <sect4 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect4>
+ <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+ <axsl:apply-templates select="$nextsect4" mode="toplevel-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:variable name="sect5s" select="following-sibling::dbk:para[@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;]"/>
+<!-- mode sections 2 -->
+ <sect4 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect4>
+ <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+ <axsl:apply-templates select="$nextsect4" mode="toplevel-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="toplevel-sect5">
+ <axsl:param name="nextsect4" select="/.."/>
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect5s"/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+ <axsl:when test="@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;">
+ <axsl:variable name="nextsect5" select="following-sibling::dbk:para[@rnd:style = &quot;sect5&quot; or @rnd:style = &quot;sect5-title&quot;][1]"/>
+<!-- mode sections 3 -->
+ <sect5 xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-terminal">
+ <axsl:with-param name="nextsect5" select="$nextsect5"/>
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </sect5>
+ <axsl:if test="$nextsect5 and (not($sect4s) or count($sect5s|$nextsect5) = count($sect5s))">
+ <axsl:apply-templates select="$nextsect5" mode="toplevel-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:if>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="book-terminal">
+ <axsl:param name="nextsect5" select="/.."/>
+ <axsl:param name="nextsect4" select="/.."/>
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect5s"/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect5)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+ <axsl:when test="generate-id() = generate-id($nextbook)"/>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-terminal">
+ <axsl:with-param name="nextsect5" select="$nextsect5"/>
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="toplevel-terminal">
+ <axsl:param name="nextsect5" select="/.."/>
+ <axsl:param name="nextsect4" select="/.."/>
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect5s"/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextsect5)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+ <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+ <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-terminal">
+ <axsl:with-param name="nextsect5" select="$nextsect5"/>
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="*">
+ <axsl:call-template name="copy"/>
+ </axsl:template>
+ <axsl:template match="*" mode="book">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book"/>
+ </axsl:template>
+ <axsl:template match="*" mode="book-component">
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-component">
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="book-sect1">
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="book-sect2">
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="book-sect3">
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="book-sect4">
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="book-sect5">
+ <axsl:param name="nextsect4" select="/.."/>
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nextbook-component" select="/.."/>
+ <axsl:param name="nextbook" select="/.."/>
+ <axsl:param select="/.." name="sect5s"/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:param select="/.." name="book-components"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+ <axsl:with-param name="nextbook" select="$nextbook"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ <axsl:with-param name="book-components" select="$book-components"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="toplevel-component">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-component"/>
+ </axsl:template>
+ <axsl:template match="*" mode="toplevel-sect1">
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect1">
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="toplevel-sect2">
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="toplevel-sect3">
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="toplevel-sect4">
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template match="*" mode="toplevel-sect5">
+ <axsl:param name="nextsect4" select="/.."/>
+ <axsl:param name="nextsect3" select="/.."/>
+ <axsl:param name="nextsect2" select="/.."/>
+ <axsl:param name="nextsect1" select="/.."/>
+ <axsl:param name="nexttoplevel-component" select="/.."/>
+ <axsl:param select="/.." name="sect5s"/>
+ <axsl:param select="/.." name="sect4s"/>
+ <axsl:param select="/.." name="sect3s"/>
+ <axsl:param select="/.." name="sect2s"/>
+ <axsl:param select="/.." name="sect1s"/>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+ <axsl:with-param name="nextsect4" select="$nextsect4"/>
+ <axsl:with-param name="nextsect3" select="$nextsect3"/>
+ <axsl:with-param name="nextsect2" select="$nextsect2"/>
+ <axsl:with-param name="nextsect1" select="$nextsect1"/>
+ <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+ <axsl:with-param name="sect5s" select="$sect5s"/>
+ <axsl:with-param name="sect4s" select="$sect4s"/>
+ <axsl:with-param name="sect3s" select="$sect3s"/>
+ <axsl:with-param name="sect2s" select="$sect2s"/>
+ <axsl:with-param name="sect1s" select="$sect1s"/>
+ </axsl:apply-templates>
+ </axsl:template>
+ <axsl:template name="copy">
+ <axsl:copy>
+ <axsl:for-each select="@*">
+ <axsl:copy/>
+ </axsl:for-each>
+ <axsl:apply-templates/>
+ </axsl:copy>
+ </axsl:template>
+</axsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl
new file mode 100644
index 0000000..35250a0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl
@@ -0,0 +1,351 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+
+ xmlns:sfa="http://developer.apple.com/namespaces/sfa"
+ xmlns:sf="http://developer.apple.com/namespaces/sf"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:appsl="http://developer.apple.com/namespaces/sl"
+
+ xmlns:dbk='http://docbook.org/ns/docbook'
+ xmlns:rnd='http://docbook.org/ns/docbook/roundtrip'
+ exclude-result-prefixes='sfa sf xsi appsl'>
+
+ <xsl:output method="xml" indent='yes'/>
+
+ <!-- ********************************************************************
+ $Id: pages2normalise.xsl 7637 2008-01-09 20:48:30Z balls $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+ <xsl:strip-space elements='*'/>
+ <xsl:preserve-space elements='sf:span'/>
+
+ <xsl:key name='styles'
+ match='sf:paragraphstyle[not(ancestor::appsl:section-prototypes)] |
+ sf:characterstyle[not(ancestor::appsl:section-prototypes)] |
+ sf:table-style'
+ use='@sf:ident|@sfa:ID'/>
+
+ <xsl:key name='ids'
+ match='*'
+ use='@sfa:ID'/>
+
+ <xsl:template match='appsl:document'>
+ <dbk:article>
+ <!-- TODO: headers and footers -->
+ <xsl:apply-templates select='sf:text-storage'/>
+ </dbk:article>
+ </xsl:template>
+
+ <xsl:template match='sf:p'>
+ <xsl:choose>
+ <xsl:when test='sf:attachment-ref and
+ count(*) = count(sf:attachment-ref|sf:br|sf:selection-start|sf:selection-end)'>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:para>
+ <xsl:variable name='style-name'>
+ <xsl:call-template name='rnd:find-style'/>
+ </xsl:variable>
+ <xsl:if test='$style-name != "" and
+ $style-name != "para"'>
+ <xsl:attribute name='rnd:style'>
+ <xsl:value-of select='$style-name'/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </dbk:para>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='sf:span'>
+ <xsl:variable name='style-name'
+ select='key("styles", @sf:style)/self::sf:characterstyle/@sf:name'/>
+
+ <xsl:variable name='char-style'>
+ <xsl:call-template name='rnd:find-style'>
+ <xsl:with-param name='char-style-name' select='$style-name'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='$style-name = "attribute-name"'>
+ <xsl:if test='not(preceding-sibling::node()[not(self::text()) or (self::text() and normalize-space() != "")])'>
+ <xsl:attribute name='{.}'>
+ <xsl:apply-templates select='following-sibling::*[1][self::sf:span]'
+ mode='attribute'/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test='$style-name = "attribute-value"'/>
+ <xsl:when test='$style-name = ""'>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test='$char-style = "superscript" or
+ $char-style = "subscript"'>
+ <xsl:element name='{$char-style}'
+ namespace='http://docbook.org/ns/docbook'>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:emphasis>
+ <xsl:choose>
+ <xsl:when test='$char-style = "emphasis-bold" or
+ $char-style = "emphasis-strong"'>
+ <xsl:attribute name='role'>bold</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$char-style != "" and
+ $char-style != "emphasis"'>
+ <xsl:attribute name='rnd:style'>
+ <xsl:value-of select='$char-style'/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates/>
+ </dbk:emphasis>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='*' mode='attribute'>
+ <xsl:variable name='style-name'
+ select='key("styles", @sf:style)/self::sf:characterstyle/@sf:name'/>
+
+ <xsl:if test='$style-name = "attribute-value"'>
+ <xsl:apply-templates/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match='sf:br'/>
+ <xsl:template match='sf:lnbr|sf:crbr'>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:template>
+ <xsl:template match='sf:tab'>
+ <xsl:text> </xsl:text>
+ </xsl:template>
+ <xsl:template match='sf:link'>
+ <dbk:ulink url='{@href}'>
+ <xsl:apply-templates/>
+ </dbk:ulink>
+ </xsl:template>
+
+ <xsl:template match='sf:attachment-ref'>
+ <xsl:if test='@sf:kind = "tabular-attachment"'>
+ <xsl:apply-templates select='key("ids", @sfa:IDREF)'/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match='sf:attachment[@sf:kind = "tabular-attachment"]'>
+ <xsl:variable name='model'
+ select='key("ids", sf:tabular-info/sf:tabular-model-ref/@sfa:IDREF)'/>
+
+ <xsl:variable name='num-cols' select='$model/sf:grid/@sf:numcols'/>
+ <xsl:variable name='num-rows' select='$model/sf:grid/@sf:numrows'/>
+
+ <xsl:variable name='border.top'
+ select='count($model/sf:grid/sf:horizontal-gridline-styles/*) = 0 or
+ not($model/sf:grid/sf:horizontal-gridline-styles/sf:style-run[@sf:gridline-index = "0"])'/>
+ <xsl:variable name='border.bottom'
+ select='count($model/sf:grid/sf:horizontal-gridline-styles/*) = 0 or
+ not($model/sf:grid/sf:horizontal-gridline-styles/sf:style-run[@sf:gridline-index = $num-rows - 1])'/>
+ <xsl:variable name='border.left'
+ select='count($model/sf:grid/sf:vertical-gridline-styles/*) = 0 or
+ not($model/sf:grid/sf:vertical-gridline-styles/sf:style-run[@sf:gridline-index = "0"])'/>
+ <xsl:variable name='border.right'
+ select='count($model/sf:grid/sf:vertical-gridline-styles/*) = 0 or
+ not($model/sf:grid/sf:vertical-gridline-styles/sf:style-run[@sf:gridline-index = $num-cols])'/>
+
+ <xsl:choose>
+ <xsl:when test='not($num-rows) or $num-rows = ""'>
+ <xsl:message> cannot determine number of rows in table</xsl:message>
+ <xsl:comment> cannot determine number of rows in table </xsl:comment>
+ </xsl:when>
+ <xsl:when test='not($num-cols) or $num-cols = ""'>
+ <xsl:message> cannot determine number of columns in table</xsl:message>
+ <xsl:comment> cannot determine number of columns in table </xsl:comment>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <dbk:informaltable>
+ <xsl:choose>
+ <xsl:when test='$border.top and $border.bottom and
+ $border.left and $border.right'>
+ <xsl:attribute name='frame'>all</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.top and $border.bottom'>
+ <xsl:attribute name='frame'>topbot</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.left and $border.right'>
+ <xsl:attribute name='frame'>sides</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.top'>
+ <xsl:attribute name='frame'>top</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.bottom'>
+ <xsl:attribute name='frame'>bottom</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <dbk:tgroup cols='{$num-cols}'>
+ <xsl:apply-templates select='$model/sf:grid/sf:columns/sf:grid-column'
+ mode='rnd:colspec'/>
+ <xsl:if test='$model/@sf:num-header-rows != 0'>
+ <dbk:thead>
+ <xsl:call-template name='rnd:make-table-rows'>
+ <xsl:with-param name='nodes'
+ select='$model/sf:grid/sf:datasource/sf:text-cell[@sf:row &lt; $model/@sf:num-header-rows]'/>
+ <xsl:with-param name='num-rows'
+ select='$model/@sf:num-header-rows'/>
+ </xsl:call-template>
+ </dbk:thead>
+ </xsl:if>
+ <dbk:tbody>
+ <xsl:call-template name='rnd:make-table-rows'>
+ <xsl:with-param name='nodes'
+ select='$model/sf:grid/sf:datasource/sf:text-cell[@sf:row >= $model/@sf:num-header-rows and
+ @sf:row &lt; $num-rows - $model/@sf:num-footer-rows]'/>
+ <xsl:with-param name='num-rows' select='$num-rows - $model/@sf:num-header-rows - $model/@sf:num-footer-rows'/>
+ <xsl:with-param name='row' select='$model/@sf:num-header-rows'/>
+ </xsl:call-template>
+ </dbk:tbody>
+ <xsl:if test='$model/@sf:num-footer-rows != 0'>
+ <dbk:tfoot>
+ <xsl:call-template name='rnd:make-table-rows'>
+ <xsl:with-param name='nodes'
+ select='$model/sf:grid/sf:datasource/sf:text-cell[@sf:row &gt;= $num-rows - $model/@sf:num-footer-rows]'/>
+ <xsl:with-param name='num-rows'
+ select='$model/@sf:num-footer-rows'/>
+ <xsl:with-param name='row'
+ select='$num-rows - $model/@sf:num-footer-rows'/>
+ </xsl:call-template>
+ </dbk:tfoot>
+ </xsl:if>
+ </dbk:tgroup>
+ </dbk:informaltable>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='sf:grid-column' mode='rnd:colspec'>
+ <dbk:colspec colwidth='{@sf:width}'
+ colname='column-{count(preceding-sibling::sf:grid-column) + 1}'/>
+ </xsl:template>
+ <xsl:template name='rnd:make-table-rows'>
+ <xsl:param name='num-rows' select='0'/>
+ <xsl:param name='nodes' select='/..'/>
+ <xsl:param name='row' select='0'/>
+
+ <xsl:choose>
+ <xsl:when test='not($nodes) and $num-rows != 0'>
+ <xsl:message>WARNING: insufficient table cells</xsl:message>
+ <xsl:comment> WARNING: insufficient table cells (num-rows <xsl:value-of select='$num-rows'/>, row <xsl:value-of select='$row'/>) </xsl:comment>
+ </xsl:when>
+ <xsl:when test='$nodes and $num-rows = 0'>
+ <xsl:message>WARNING: excess table cells</xsl:message>
+ <xsl:comment> WARNING: excess table cells (num-rows <xsl:value-of select='$num-rows'/>, row <xsl:value-of select='$row'/>) </xsl:comment>
+ </xsl:when>
+ <xsl:when test='not($nodes)'/>
+ <xsl:when test='$num-rows = 0'/>
+
+ <xsl:otherwise>
+ <dbk:row>
+ <xsl:apply-templates select='$nodes[@sf:row = $row]'/>
+ </dbk:row>
+ <xsl:call-template name='rnd:make-table-rows'>
+ <xsl:with-param name='num-rows'
+ select='$num-rows - 1'/>
+ <xsl:with-param name='row'
+ select='$row + 1'/>
+ <xsl:with-param name='nodes'
+ select='$nodes[@sf:row != $row]'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='sf:text-cell'>
+ <dbk:entry>
+ <!-- Does this cell have no bottom border? -->
+ <xsl:variable name='horiz'
+ select='ancestor::sf:grid/sf:horizontal-gridline-styles'/>
+ <xsl:if test='not($horiz/*) or
+ not($horiz/sf:style-run[@sf:gridline-index = current()/@sf:row + 1]/sf:vector-style-ref[@sf:start-index &lt;= current()/@sf:col and @sf:stop-index >= current()/@sf:col])'>
+ <xsl:attribute name='rowsep'>1</xsl:attribute>
+ </xsl:if>
+ <!-- Does this cell have no right border? -->
+ <xsl:variable name='vert'
+ select='ancestor::sf:grid/sf:vertical-gridline-styles'/>
+ <xsl:if test='not($vert/*) or
+ not($vert/sf:style-run[@sf:gridline-index = current()/@sf:col + 1]/sf:vector-style-ref[@sf:start-index &lt;= current()/@sf:row and @sf:stop-index >= current()/@sf:row])'>
+ <xsl:attribute name='colsep'>1</xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test='sf:cell-text/@sfa:string'>
+ <dbk:para>
+ <xsl:apply-templates select='sf:cell-text/@sfa:string'/>
+ </dbk:para>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select='sf:cell-text/sf:cell-storage/sf:text-body/*'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dbk:entry>
+ </xsl:template>
+ <xsl:template match='sf:tableAttachmentTable |
+ sf:tableModelCells'>
+ <xsl:apply-templates/>
+ </xsl:template>
+ <xsl:template match='sf:tableModelPartitionSource |
+ sf:tableModelStyle-ref |
+ sf:tableModelVectors |
+ sf:tableCellArrayCellsByColumn |
+ sf:tableModelTableID'/>
+
+ <xsl:template match='sf:text-storage |
+ sf:text-body |
+ sf:section |
+ sf:layout'>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match='sf:stylesheet|sf:stylesheet-ref |
+ sf:container-hint |
+ sf:page-start|sf:br |
+ sf:selection-start|sf:selection-end |
+ sf:insertion-point |
+ sf:ghost-text |
+ sf:attachments'/>
+
+ <xsl:template match='*'>
+ <xsl:message>element "<xsl:value-of select='name()'/>" not handled</xsl:message>
+ </xsl:template>
+
+ <xsl:template name='rnd:find-style'>
+ <xsl:param name='ident' select='@sf:style'/>
+ <xsl:param name='para-style-name'
+ select='key("styles", $ident)/self::sf:paragraphstyle/@sf:name'/>
+ <xsl:param name='char-style-name'
+ select='key("styles", $ident)/self::sf:characterstyle/@sf:name'/>
+
+ <xsl:choose>
+ <xsl:when test='$ident = "paragraph-style-default"'/>
+ <xsl:when test='$para-style-name != ""'>
+ <xsl:value-of select='$para-style-name'/>
+ </xsl:when>
+ <xsl:when test='key("styles", $ident)/self::sf:characterstyle/sf:property-map/sf:superscript/sf:number/@sfa:number = "1"'>superscript</xsl:when>
+ <xsl:when test='key("styles", $ident)/self::sf:characterstyle/sf:property-map/sf:subscript/sf:number/@sfa:number = "1"'>subscript</xsl:when>
+ <xsl:when test='$char-style-name != "" or
+ key("styles", $ident)/self::sf:characterstyle/sf:property-map/*'>
+ <xsl:value-of select='$char-style-name'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml
new file mode 100644
index 0000000..ae14800
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0">
+ <info>
+ <title>Roundtrip Parameter Reference</title>
+ <releaseinfo role="meta">
+ $Id: param.xweb 7042 2007-07-17 04:28:48Z xmldoc $
+ </releaseinfo>
+ <author>
+ <personname>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </personname>
+ </author>
+ <copyright>
+ <year>2007</year>
+ <year>2006</year>
+ <year>2005</year>
+ <year>2004</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ <abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook &#8220;Roundtrip&#8221; Stylesheets (for
+ transforming DocBook to WordML, OpenDocument, and Apple Pages,
+ and for converting from those formats back to DocBook).</para>
+ </abstract>
+ </info>
+ <reference xml:id="params">
+ <title>Parameters</title>
+<refentry version="5.0" xml:id="wordml.template">
+<refmeta>
+<refentrytitle>wordml.template</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>wordml.template</refname>
+<refpurpose>Specify the template WordML document</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="wordml.template.frag">
+&lt;xsl:param name="wordml.template"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>wordml.template</parameter> parameter specifies a WordML document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored.</para>
+
+<para>A template document is used in order to allow maintenance of the paragraph and character styles to be done using Word itself, rather than these XSL stylesheets.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="pages.template">
+<refmeta>
+<refentrytitle>pages.template</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>pages.template</refname>
+<refpurpose>Specify the template Pages document</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="pages.template.frag">
+&lt;xsl:param name="pages.template"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The <parameter>pages.template</parameter> parameter specifies a Pages (the Apple word processing application) document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored.</para>
+
+<para>A template document is used in order to allow maintenance of the paragraph and character styles to be done using Pages itself, rather than these XSL stylesheets.</para>
+
+</refsection>
+</refentry>
+
+ </reference>
+ <appendix xml:id="stylesheet">
+ <title>The Stylesheet</title>
+ <para>The <filename>param.xsl</filename> stylesheet is just a
+ wrapper around all of these parameters.</para>
+ <programlisting xml:id="top">
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 7042 2007-07-17 04:28:48Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="wordml.template.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="pages.template.frag"&gt;&lt;/src:fragref&gt;
+&lt;/xsl:stylesheet&gt;
+ </programlisting>
+ </appendix>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl
new file mode 100644
index 0000000..6cd1b03
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- This file is generated from param.xweb -->
+
+<!-- ********************************************************************
+ $Id: param.xweb 7042 2007-07-17 04:28:48Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="wordml.template"/>
+<xsl:param name="pages.template"/>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml
new file mode 100644
index 0000000..6c86d52
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml
@@ -0,0 +1,38 @@
+<group:root xmlns:group='http://www.explain.com.au/grouping'>
+ <book styles='book book-title'>
+ <group:level>
+ <group:element name='part' styles='part part-title'/>
+ <group:element name='article' styles='article article-title'/>
+ <group:element name='bibliography' styles='bibliography bibliography-title'/>
+ <group:element name='appendix' styles='appendix appendix-title'/>
+ <group:element name='chapter' styles='chapter chapter-title'/>
+ <group:element name='preface' styles='preface preface-title'/>
+
+ <sect1 styles='sect1 sect1-title'>
+ <sect2 styles='sect2 sect2-title'>
+ <sect3 styles='sect3 sect3-title'>
+ <sect4 styles='sect4 sect4-title'>
+ <sect5 styles='sect5 sect5-title'/>
+ </sect4>
+ </sect3>
+ </sect2>
+ </sect1>
+ </group:level>
+ </book>
+ <group:level>
+ <group:element name='article' styles='article article-title'/>
+ <group:element name='appendix' styles='appendix appendix-title'/>
+ <group:element name='chapter' styles='chapter chapter-title'/>
+ <group:element name='preface' styles='preface preface-title'/>
+
+ <sect1 styles='sect1 sect1-title'>
+ <sect2 styles='sect2 sect2-title'>
+ <sect3 styles='sect3 sect3-title'>
+ <sect4 styles='sect4 sect4-title'>
+ <sect5 styles='sect5 sect5-title'/>
+ </sect4>
+ </sect3>
+ </sect2>
+ </sect1>
+ </group:level>
+</group:root>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl
new file mode 100644
index 0000000..d0fe069
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl
@@ -0,0 +1,263 @@
+<?xml version="1.0"?>
+<axsl:stylesheet xmlns:axsl="http://www.w3.org/1999/XSL/Transform" xmlns:dbk="http://docbook.org/ns/docbook" xmlns:rnd="http://docbook.org/ns/docbook/roundtrip" version="1.0">
+<!--====================================-->
+<!--= =-->
+<!--= DO NOT EDIT THIS STYLESHEET =-->
+<!--= =-->
+<!--= This stylesheet is generated =-->
+<!--= by makeSubsections.xsl and a =-->
+<!--= mapping specification. =-->
+<!--= =-->
+<!--= Revision history: =-->
+<!--= 1.1 2007-01-10 SRB =-->
+<!--= Output DocBook 5.0. =-->
+<!--= 1.0 2005-11-08 SRB =-->
+<!--= Initial version. =-->
+<!--= =-->
+<!--= $Id: sections2blocks.xsl 8107 2008-08-17 22:39:58Z balls $ =-->
+<!--= =-->
+<!--====================================-->
+ <axsl:output indent="yes"/>
+ <axsl:strip-space elements="*"/>
+ <axsl:preserve-space elements="dbk:para dbk:emphasis"/>
+ <axsl:template match="dbk:appendix |&#10; dbk:article |&#10; dbk:book |&#10; dbk:chapter |&#10; dbk:part |&#10; dbk:preface |&#10; dbk:section |&#10; dbk:sect1 |&#10; dbk:sect2 |&#10; dbk:sect3 |&#10; dbk:sect4 |&#10; dbk:sect5">
+ <axsl:variable name="subsections" select="dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]"/>
+ <axsl:copy>
+ <axsl:apply-templates select="@*"/>
+ <axsl:choose>
+ <axsl:when test="$subsections">
+ <axsl:apply-templates select="$subsections[1]/preceding-sibling::node()"/>
+ <axsl:apply-templates select="$subsections[1]" mode="subsections">
+ <axsl:with-param name="subsections" select="$subsections[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:when test="dbk:appendix |&#10; dbk:article |&#10; dbk:book |&#10; dbk:chapter |&#10; dbk:part |&#10; dbk:preface |&#10; dbk:section |&#10; dbk:sect1 |&#10; dbk:sect2 |&#10; dbk:sect3 |&#10; dbk:sect4 |&#10; dbk:sect5">
+ <axsl:apply-templates select="*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5][1]/preceding-sibling::node()"/>
+ <axsl:apply-templates select="dbk:appendix |&#10; dbk:article |&#10; dbk:book |&#10; dbk:chapter |&#10; dbk:part |&#10; dbk:preface |&#10; dbk:section |&#10; dbk:sect1 |&#10; dbk:sect2 |&#10; dbk:sect3 |&#10; dbk:sect4 |&#10; dbk:sect5"/>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:apply-templates/>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:copy>
+ <axsl:choose>
+ <axsl:when test="following-sibling::*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5] | following-sibling::dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]">
+ <axsl:variable name="nextComponent" select="following-sibling::*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5|self::dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]][1]"/>
+ <axsl:apply-templates select="following-sibling::*[generate-id(following-sibling::*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5|self::dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]][1]) = generate-id($nextComponent)]"/>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:apply-templates select="following-sibling::*"/>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="subsections">
+ <axsl:param name="subsections" select="/.."/>
+ <axsl:choose>
+ <axsl:when test="@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot;">
+ <bibliography xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:variable name="bibliodivs" select="following-sibling::dbk:para[@rnd:style = &quot;bibliodiv&quot; or @rnd:style = &quot;bibliodiv-title&quot;]"/>
+ <axsl:choose>
+ <axsl:when test="$bibliodivs">
+ <axsl:apply-templates select="following-sibling::*[1]" mode="bibliodivs">
+ <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
+ <axsl:with-param name="bibliodivs" select="$bibliodivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
+ <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </bibliography>
+ </axsl:when>
+ <axsl:when test="@rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot;">
+ <glossary xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:variable name="glossdivs" select="following-sibling::dbk:para[@rnd:style = &quot;glossdiv&quot; or @rnd:style = &quot;glossdiv-title&quot;]"/>
+ <axsl:choose>
+ <axsl:when test="$glossdivs">
+ <axsl:apply-templates select="following-sibling::*[1]" mode="glossdivs">
+ <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
+ <axsl:with-param name="glossdivs" select="$glossdivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
+ <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </glossary>
+ </axsl:when>
+ <axsl:when test="@rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;">
+ <qandaset xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:variable name="qandadivs" select="following-sibling::dbk:para[@rnd:style = &quot;qandadiv&quot; or @rnd:style = &quot;qandadiv-title&quot;]"/>
+ <axsl:choose>
+ <axsl:when test="$qandadivs">
+ <axsl:apply-templates select="following-sibling::*[1]" mode="qandadivs">
+ <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
+ <axsl:with-param name="qandadivs" select="$qandadivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
+ <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </qandaset>
+ </axsl:when>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="*" mode="subsections">
+ <axsl:param name="subsections" select="/.."/>
+ <axsl:copy>
+ <axsl:apply-templates select="@*"/>
+ <axsl:apply-templates mode="subsections"/>
+ </axsl:copy>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="bibliodivs">
+ <axsl:param name="nextSubsection" select="/.."/>
+ <axsl:param name="bibliodivs" select="/.."/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
+ <axsl:when test="@rnd:style = &quot;bibliodiv&quot; or @rnd:style = &quot;bibliodiv-title&quot;">
+ <bibliodiv xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ <axsl:with-param name="nextbibliodiv" select="$bibliodivs[1]"/>
+ </axsl:apply-templates>
+ </bibliodiv>
+ <axsl:choose>
+ <axsl:when test="$nextSubsection and $bibliodivs and count($nextSubsection/preceding-sibling::* | $bibliodivs[1]) = count($nextSubsection/preceding-sibling::*)">
+ <axsl:apply-templates select="$bibliodivs[1]" mode="bibliodivs">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ <axsl:with-param name="bibliodivs" select="$bibliodivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:when test="$bibliodivs">
+ <axsl:apply-templates select="$bibliodivs[1]" mode="bibliodivs">
+ <axsl:with-param name="bibliodivs" select="$bibliodivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="bibliodivs">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="glossdivs">
+ <axsl:param name="nextSubsection" select="/.."/>
+ <axsl:param name="glossdivs" select="/.."/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
+ <axsl:when test="@rnd:style = &quot;glossdiv&quot; or @rnd:style = &quot;glossdiv-title&quot;">
+ <glossdiv xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ <axsl:with-param name="nextglossdiv" select="$glossdivs[1]"/>
+ </axsl:apply-templates>
+ </glossdiv>
+ <axsl:choose>
+ <axsl:when test="$nextSubsection and $glossdivs and count($nextSubsection/preceding-sibling::* | $glossdivs[1]) = count($nextSubsection/preceding-sibling::*)">
+ <axsl:apply-templates select="$glossdivs[1]" mode="glossdivs">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ <axsl:with-param name="glossdivs" select="$glossdivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:when test="$glossdivs">
+ <axsl:apply-templates select="$glossdivs[1]" mode="glossdivs">
+ <axsl:with-param name="glossdivs" select="$glossdivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="glossdivs">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="dbk:para" mode="qandadivs">
+ <axsl:param name="nextSubsection" select="/.."/>
+ <axsl:param name="qandadivs" select="/.."/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
+ <axsl:when test="@rnd:style = &quot;qandadiv&quot; or @rnd:style = &quot;qandadiv-title&quot;">
+ <qandadiv xmlns="http://docbook.org/ns/docbook">
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ <axsl:with-param name="nextqandadiv" select="$qandadivs[1]"/>
+ </axsl:apply-templates>
+ </qandadiv>
+ <axsl:choose>
+ <axsl:when test="$nextSubsection and $qandadivs and count($nextSubsection/preceding-sibling::* | $qandadivs[1]) = count($nextSubsection/preceding-sibling::*)">
+ <axsl:apply-templates select="$qandadivs[1]" mode="qandadivs">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ <axsl:with-param name="qandadivs" select="$qandadivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ <axsl:when test="$qandadivs">
+ <axsl:apply-templates select="$qandadivs[1]" mode="qandadivs">
+ <axsl:with-param name="qandadivs" select="$qandadivs[position() != 1]"/>
+ </axsl:apply-templates>
+ </axsl:when>
+ </axsl:choose>
+ </axsl:when>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="qandadivs">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="*" mode="terminal">
+ <axsl:param name="nextSubsection" select="/.."/>
+ <axsl:param name="nextbibliodiv" select="/.."/>
+ <axsl:param name="nextglossdiv" select="/.."/>
+ <axsl:param name="nextqandadiv" select="/.."/>
+ <axsl:choose>
+ <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
+ <axsl:when test="generate-id() = generate-id($nextbibliodiv)"/>
+ <axsl:when test="generate-id() = generate-id($nextglossdiv)"/>
+ <axsl:when test="generate-id() = generate-id($nextqandadiv)"/>
+ <axsl:otherwise>
+ <axsl:call-template name="copy"/>
+ <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
+ <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
+ <axsl:with-param name="nextbibliodiv" select="$nextbibliodiv"/>
+ <axsl:with-param name="nextglossdiv" select="$nextglossdiv"/>
+ <axsl:with-param name="nextqandadiv" select="$nextqandadiv"/>
+ </axsl:apply-templates>
+ </axsl:otherwise>
+ </axsl:choose>
+ </axsl:template>
+ <axsl:template match="*">
+ <axsl:copy>
+ <axsl:apply-templates select="@*"/>
+ <axsl:apply-templates/>
+ </axsl:copy>
+ </axsl:template>
+ <axsl:template name="copy">
+ <axsl:copy>
+ <axsl:apply-templates select="@*"/>
+ <axsl:apply-templates/>
+ </axsl:copy>
+ </axsl:template>
+ <axsl:template match="@*">
+ <axsl:copy/>
+ </axsl:template>
+</axsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml
new file mode 100644
index 0000000..85db866
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml
@@ -0,0 +1,1420 @@
+<?xml version="1.0"?>
+<article xmlns="http://docbook.org/ns/docbook">
+ <info>
+ <title>Round-Tripping Specifications</title>
+ <author>
+ <firstname>Bob</firstname>
+ <surname>Stayton</surname>
+ <affiliation>
+ <orgname>Sagehill Enterprises</orgname>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Steve</firstname>
+ <surname>Ball</surname>
+ <affiliation>
+ <orgname>Explain</orgname>
+ </affiliation>
+ </author>
+ <revhistory>
+ <revision>
+ <revnumber>1.8</revnumber>
+ <date>2008-05-22</date>
+ <authorinitials>SRB</authorinitials>
+ <revremark>Updated for current implementation.</revremark>
+ </revision>
+ <revision>
+ <revnumber>1.7</revnumber>
+ <date>2008-02-22</date>
+ <authorinitials>SRB</authorinitials>
+ <revremark>Added edition.</revremark>
+ </revision>
+ <revision>
+ <revnumber>1.6</revnumber>
+ <date>2007-10-19</date>
+ <authorinitials>SRB</authorinitials>
+ <revremark>Added keyword.</revremark>
+ </revision>
+ <revision>
+ <revnumber>1.5</revnumber>
+ <date>2007-01-05</date>
+ <authorinitials>SRB</authorinitials>
+ <revremark>Reduce emphasis on WordML, add support for OpenOffice.</revremark>
+ </revision>
+ <revision>
+ <revnumber>1.4</revnumber>
+ <date>2005-11-11</date>
+ <authorinitials>SRB</authorinitials>
+ <revremark>Added bibliography.</revremark>
+ </revision>
+ <revision>
+ <revnumber>1.3</revnumber>
+ <date>2005-10-31</date>
+ <authorinitials>SRB</authorinitials>
+ <revremark>Added mediaobjectco, imageobjectco, programlistingco, areaspec, area, calloutlist.</revremark>
+ </revision>
+ <revision>
+ <revnumber>1.2</revnumber>
+ <date>2005-10-13</date>
+ <authorinitials>SRB</authorinitials>
+ <revremark>Version prior to using revhistory.</revremark>
+ </revision>
+ </revhistory>
+ </info>
+ <abstract>
+ <para>This document specifies how DocBook elements are mapped to paragraph and character styles in a word processor. The specifications are used to write conversions between DocBook XML and word processor XML formats, such as Microsoft's WordProcessingML (WordML), OpenOffice's OpenDocument and Apple's Pages.</para>
+ </abstract>
+ <section>
+ <title>Introduction</title>
+ <para>Microsoft Word 2003 introduced WordProcessingML (WordML), an XML vocabulary for Word documents. Since then, other popular word processors have become available that use XML as their data representation, namely Apple's Pages and OpenOffice. By converting Word (or OpenOffice or Pages) to XML, it becomes possible to convert a word processing document to DocBook and vice versa using XSL transformations. Such conversions then enable the following.</para>
+ <itemizedlist>
+ <listitem>
+ <para>DocBook content creators write in their familiar wordprocessing application, rather than learning a new XML editing application.</para>
+ </listitem>
+ <listitem>
+ <para>DocBook XML documents can be styled for output using the typesetting features of the word processor.</para>
+ </listitem>
+ </itemizedlist>
+ <para>Word processors have a simple, flat data model; documents consist of paragraphs (and tables) and paragraphs contain text and character spans. All word processors allow styles to be associated with paragraphs and spans.</para>
+ <para>This specification describes how DocBook elements map to a set of paragraph and character styles. It defines a specific set of style names for which a Word style template can be created. The style names are also used in XSLT template match patterns for conversion. Although originally targetted to MS Word, the system has subsequently been extended to use other word processors, notably Apple's Pages and Open Office.</para>
+ </section>
+ <section>
+ <title>Project goals</title>
+ <para>The goal of this project is to enable a word processor, such as, but not limited to, Microsoft Word, to be used with DocBook files. The specific goals include:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Enable authoring of basic DocBook documents in the word processor.</para>
+ </listitem>
+ <listitem>
+ <para>Enable importing of basic DocBook XML documents into the word processor.</para>
+ </listitem>
+ </itemizedlist>
+ <para>To meet these goals, the project provides a toolkit that can be immediately put to use. The kit includes:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Templates for Microsoft Word, Apple Pages and Open Office with formatting styles attached to the style names.</para>
+ </listitem>
+ <listitem>
+ <para>XSLT stylesheets that convert a word processing document that is authored with the corresponding template into a DocBook XML file.</para>
+ </listitem>
+ <listitem>
+ <para>XSLT stylesheets that convert a DocBook document into a word processing document that can be opened in a word processor.</para>
+ </listitem>
+ </itemizedlist>
+ <section>
+ <title>Why basic DocBook?</title>
+ <para>This project will never be able to support all DocBook elements and structure. Take, for example, the <tag>address</tag> element. This element can be used both as a block element for metadata. It can also be used as a phrase level element in a block parent, such as the <tag>affiliation</tag> element. To make matters worse, it can itself contain phrase level markup, such as <tag>personname</tag>. No word processor allows character styles to be nested.</para>
+ <para>The project will initially focus on a basic set of commonly used DocBook elements in order to create a useful editing environment that utilises a word processor with DocBook. </para>
+ <para>One problem facing this conversion project is the sheer number of DocBook elements, over 400 in DocBook 5.0. To support DocBook structural models, several of the elements require more than one paragraph or character style. This would lead to very long and unwieldy list of styles in the word processor interface. That would make authoring less efficient and discourage users.</para>
+ <para>Accordingly, this project assumes that authors who need the full set of DocBook elements and structures will use an XML authoring tool that better supports them. This project is focused on authors who wish to write basic DocBook documents using a word processor. Because Microsoft Word is so widespread, it is hoped that this project will help a lot of new DocBook users get started with familiar tools. They can then graduate to more advanced tools as their needs develop.</para>
+ </section>
+ </section>
+ <section>
+ <title>Project Non-Goals</title>
+ <para>The following goals <emphasis>are not</emphasis> in the scope of this project:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Support of versions of Word that do not feature reading/writing WordML (XML). That is, all versions prior to Word 11 (Office 2003).</para>
+ </listitem>
+ <listitem>
+ <para>Support of arbitrarily defined styles. This system may expect certain styles to be defined in a particular fashion (in particular, those defining the title of components and divisions).</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Mapping elements to styles</title>
+ <para>Although WordML, OpenDocument and DocBook are all XML, there several challenges when trying to convert between them.</para>
+ <para>The basic problem in mapping paragraph/character styles to DocBook elements is that word processor documents support far less structure than DocBook. DocBook permits nesting of elements within other elements, providing multiple levels of context for each element.</para>
+ <para>Word's only structural feature is the outlining mode. In Word outlining, certain paragraph styles are assigned outline levels. When a user applies those styles, they effectively create logical structure in the Word document. Unfortunately, Word itself attempts to automatically determine which paragraphs are headings, rendering this method is unreliable.</para>
+ <para>Instead of relying on Word's built-in outlining mode, this system uses only the names of paragraph styles to determine document structure. Certain heuristics are applied to build the DocBook element structure from the (relatively flat) word processing structure. Titles and other features are used to mark the beginning of a structure and all paragraphs following that are included in that structure until the beginning of the next structure is found. That is, the beginning of one structure marks the end of the previous structure.</para>
+ <para>Problems may arise when a structure should end, but there is no word processor feature that marks the endpoint. To mark the end of a feature an empty paragraph is used.</para>
+ <para>Nesting of block elements is another commonly used feature of DocBook. It is not possible to use Word's outline mode for blocks if it is being used for components and sections. So in this specification, nesting of block elements is indicated by adding a number suffix to a style. So a paragraph with style <literal>orderedlist2</literal> is considered to be contained within a preceding paragraph with style <literal>orderedlist1</literal> or <literal>itemizedlist1</literal>. Where appropriate in the word processor, paragraph indent levels are used to visually indicate nesting of blocks.</para>
+ <para>Nesting of inline DocBook elements is particularly difficult to support because word processors do not nest character styles. That means a nested inline would require a separate character style to indicate the parent-child relationship. Given the large number of combinations possible, a prohibitively large number of character styles would have to be created. In this project, nesting of character styles is not supported. Nested inlines being imported from DocBook will be converted to a sequence of single-name character styles, where possible, or rejected.</para>
+ <para>In many cases, DocBook structure can be derived from the flat sequence of paragraphs based on sibling relationships. For example, when a paragraph styled as <literal>para</literal> is followed by a paragraph styled as <literal>itemizedlist1</literal>, the conversion to DocBook will output a <tag>para</tag> element and then start an <tag>itemizedlist</tag> element, with the second paragraph as its first <tag>listitem</tag>. All <literal>itemizedlist1</literal> paragraphs that follow without interruption are inserted into the same <tag>itemizedlist</tag> element.</para>
+ <para>Some combinations of elements cannot be supported (at least not with the techniques as described in this document). An example is <tag>informalexample</tag> and its permitted content; there is no title to mark the beginning of the element and no marker for the end of the element, also there are too many parent-child combinations to reasonably define style names.</para>
+ <para>The design principles used in this project for selecting paragraph/character style names are as follows:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Where Word (or OpenOffice or Pages), by default, has a style or feature that corresponds directly to a DocBook element then that style or feature will be used (and documented in this document). For example, the <literal>Normal</literal> paragraph style maps to a DocBook <tag>para</tag> element, and a Word table (<tag>w:tbl</tag>) maps to a DocBook <tag>table</tag><footnote><para>In some cases Word may posess a feature, but it doesn't function in an acceptable manner. For example, lists. In these cases the feature is to be avoided, and a workaround provided.</para></footnote>.</para>
+ </listitem>
+ <listitem>
+ <para>Paragraph and character style names will match DocBook element names as much as possible. This will enable authors to learn DocBook element names and help debug problems with conversion.</para>
+ </listitem>
+ <listitem>
+ <para>A style may indicate a parent-child relationship, but the paragraph for such an element may only occur after a paragraph that denotes the beginning of the parent structure. In this case the element name is used as the style name. For example, a <tag>personblurb</tag> paragraph may only occur after an <tag>author</tag>, <tag>editor</tag> or <tag>othercontrib</tag> paragraph. If a paragraph occurs without the appropriate preceding paragraph, then an error is signalled.</para>
+ </listitem>
+ <listitem>
+ <para>Some styles may also indicate a parent-child relationship, but either the parent structure is ambiguous or the paragraph starts the parent structure. For example, <literal>chapter-title</literal> indicates that the paragraph is a <tag>title</tag> element whose DocBook parent is a <tag>chapter</tag> element.</para>
+ </listitem>
+ <listitem>
+ <para>Some style names are simplified to make them easier to use in the word processor. For example, a paragraph in an orderedlist requires three elements in DocBook: <tag>orderedlist</tag>, <tag>listitem</tag>, and <tag>para</tag>. The paragraph style name in Word is shortened from <literal>orderedlist-listitem-para</literal> to just <literal>orderedlist1</literal> (for a first level list). In the case of lists (see below), the list level is appended, which is why this example becomes <literal>orderedlist1</literal>.</para>
+ </listitem>
+ <listitem>
+ <para>Style names with a number suffix indicate a nesting level, as described above.</para>
+ </listitem>
+ <listitem>
+ <para>Style names with <literal>continue</literal> indicate that the paragraph is part of the preceding element. For example, a <literal>para</literal> paragraph is used for a single paragraph <tag>para</tag> element. This causes any preceding list to be closed. If a list item in the preceding list is to contain more than one paragraph, then the subsequent paragraphs in the word processor documentmust use the <literal>para-continue</literal> style.</para>
+ </listitem>
+ <listitem>
+ <para>Character styles map to elements that are children of the element for the paragraph, hence there is no need to encode parent-child relationships. For example, a <literal>surname</literal> character style in an <literal>author</literal> paragraph becomes a <tag>surname</tag> child element of the <tag>author</tag> element.</para>
+ </listitem>
+ <listitem>
+ <para>Empty paragraph and character styles are ignored. This can be useful to end structures.</para>
+ </listitem>
+ <listitem>
+ <para>The first paragraph style in the word processor document is used to define the root element of the DocBook document. For example, if the document starts with <literal>book-title</literal>, then the DocBook document will have <tag>book</tag> element as its root element. All the rest of the document content will be contained in that root element.</para>
+ </listitem>
+ </itemizedlist>
+ <para>Sequential structures are coalesced into a single parent element. For example, a sequence of <literal>itemizedlist1</literal> paragraphs becomes a single <tag>itemizedlist</tag> element with several <tag>listitem</tag> element children.</para>
+ <table>
+ <title>DocBook to Paragraph/Character Styles</title>
+ <tgroup cols="3">
+ <colspec colnum="1" colname="col1" colwidth="2*"/>
+ <colspec colnum="2" colname="col2" colwidth="2*"/>
+ <colspec colnum="3" colname="col3" colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>
+ <para colname="col1">DocBook element</para>
+ </entry>
+ <entry>
+ <para colname="col2">Style(s)</para>
+ </entry>
+ <entry>
+ <para colname="col3">Comments</para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry namest="col1" nameend="col3">
+ <para>
+ <emphasis role="bold">Components and sections</emphasis>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para colname="col1">book/info/title</para>
+ </entry>
+ <entry colname="col2">
+ <para>book-title</para>
+ </entry>
+ <entry colname="col3">
+ <para/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>book/info/subtitle</para>
+ </entry>
+ <entry colname="col2">
+ <para>book-subtitle</para>
+ </entry>
+ <entry colname="col3">
+ <para/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>book/info/titleabbrev</para>
+ </entry>
+ <entry colname="col2">
+ <para>book-titleabbrev</para>
+ </entry>
+ <entry colname="col3">
+ <para/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>chapter/info/title</para>
+ </entry>
+ <entry colname="col2">
+ <para>chapter-title</para>
+ </entry>
+ <entry colname="col3">
+ <para>Assigned Word outline level 1.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>chapter/info/subtitle</para>
+ </entry>
+ <entry colname="col2">
+ <para>chapter-subtitle</para>
+ </entry>
+ <entry colname="col3">
+ <para/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>chapter/info/titleabbrev</para>
+ </entry>
+ <entry colname="col2">
+ <para>chapter-titleabbrev</para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>appendix/info/title</para>
+ </entry>
+ <entry colname="col2">
+ <para>appendix-title</para>
+ </entry>
+ <entry colname="col3">
+ <para>Assigned Word outline level 1.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>preface/info/title</para>
+ </entry>
+ <entry colname="col2">
+ <para>preface-title</para>
+ </entry>
+ <entry colname="col3">
+ <para>Assigned Word outline level 1.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>article/info/title</para>
+ </entry>
+ <entry colname="col2">
+ <para>article-title</para>
+ </entry>
+ <entry colname="col3">
+ <para>Assigned Word outline level 1.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <para>article/info/subtitle</para>
+ </entry>
+ <entry colname="col2">
+ <para>article-subtitle</para>
+ </entry>
+ <entry colname="col3">
+ <para/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">article/info/titleabbrev</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">article-titleabbrev</db:para>
+ </entry>
+ <entry colname="col3">
+ <para/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bibliography/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bibliography-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 1.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bibliography/bibliodiv/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bibliodiv-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">biblioentry/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">biblioentry-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Metadata elements after the biblioentry-title paragraph become part of the <sgmltag>biblioentry</sgmltag>.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">glossary/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">glossary-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 1.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">index/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">index-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 1.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">part/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">part-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">section</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Unnumbered <tag>section</tag> elements are translated into their equivalent numbered paragraph style. Sections 6 levels and deeper are reported as an error.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect1/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect1-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 2.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect1/info/subtitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect1-subtitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect2/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect2-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 3.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect2/info/subtitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect2-subtitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect3/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect3-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 4.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect3/info/subtitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect3-subtitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect4/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect4-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 5.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect4/info/subtitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect4-subtitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect5/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect5-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Assigned Word outline level 6.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect5/info/subtitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">sect5-subtitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">simplesect/info/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">simplesect-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">simplesect/info/subtitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">simplesect-subtitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bridgehead</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bridgehead</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry namest="col1" nameend="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <emphasis role="bold">Metadata elements</emphasis>
+ </db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">abstract/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">abstract-title</db:para>
+ </entry>
+ <entry colname="col3"><para/>.</entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">abstract/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">abstract</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">affiliation</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">affiliation</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">address</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">address</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">author</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">author</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">date</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">date</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">edition</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">edition</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">legalnotice</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">legalnotice</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">pubdate</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">pubdate</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">publisher/pubishername</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">publisher</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">publisher/address</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">publisher-address</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">revhistory/revision</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">revision</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry namest="col1" nameend="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <emphasis role="bold">Block-level elements</emphasis>
+ </db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">para, Normal</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Any Word paragraph with style <literal>Normal</literal> will also be converted to a <tag>para</tag> element.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">formalpara/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">formalpara-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">formalpara/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">formalpara</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">simpara</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">simpara</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">note/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">note-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">note/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">note</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Consecutive paragraphs with style <literal>note</literal> after the first note are to be treated as part of the same <tag>note</tag> element. That is, consecutive notes are coalesced. The note may or may not have a title.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">caution/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">caution-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">caution/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">caution</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Consecutive cautions are coalesced.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">warning/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">warning-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">warning/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">warning</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Consecutive warnings are coalesced.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">important/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">important-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">important/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">important</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Consecutive importants are coalesced.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">tip/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">tip-title</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">tip/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">tip</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Consecutive tips are coalesced.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">itemizedlist/listitem/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <literallayout class="monospaced">itemizedlist1
+itemizedlist2
+itemizedlist3
+itemizedlist4</literallayout>
+ </db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">A number suffix indicates a nesting level within other lists.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">orderedlist/listitem/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <literallayout class="monospaced">orderedlist1
+orderedlist2
+orderedlist3
+orderedlist4</literallayout>
+ </db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">listitem/para[position() != 1]</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">para-continue</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">This paragraph is included in the immediately preceding listitem.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">example/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">example-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <para>All content following the title is included in the <tag>example</tag> element. The end of the example content is marked by a <literal>caption</literal> paragraph or an empty paragraph if there is no caption.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">figure/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">figure-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <para>All content following the title is included in the <tag>figure</tag> element. Metadata must immediately follow the title. The end of the figure content is marked by a <literal>caption</literal> paragraph or an empty paragraph if there is no caption.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">informalfigure/mediaobject/imageobject/imagedata/@fileref</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">informalfigure-imagedata, caption</db:para>
+ </entry>
+ <entry colname="col3">
+ <para>The content of the <literal>imageobject-imagedata</literal> paragraph is taken as the URI for the image. Metadata may immediately follow the paragraph.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">mediaobject/imageobject/imagedata/@fileref</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">imageobject-imagedata, caption</db:para>
+ </entry>
+ <entry colname="col3">
+ <para>The content of the <literal>imageobject-imagedata</literal> paragraph is taken as the URI for the image. May be followed by a <literal>caption</literal> style paragraph. Metadata may immediately follow the paragraph, before the caption, if any.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">table</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Word table, caption</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">table/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">table-title, caption</db:para>
+ </entry>
+ <entry colname="col3">
+ <para>Metadata may immediately follow the paragraph.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">informaltable</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Word table</db:para>
+ </entry>
+ <entry colname="col3">
+ <para>A table with no title imediately preceding it.</para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">caption</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">caption</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">literallayout</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">literallayout</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Inside a <literal>literallayout</literal> paragraph in Word, lines should be separated by line break (Shift-Enter) rather than paragraph break (Enter).</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">programlisting</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">programlisting</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Inside a <literal>programlisting</literal> paragraph in Word, lines should be separated by line break (Shift-Enter) rather than paragraph break (Enter). Tabs are not supported.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">blockquote/title</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">blockquote-title</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Must immediately precede a <literal>blockquote</literal> paragraph in Word.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">blockquote/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">blockquote</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">blockquote/attribution</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">blockquote-attribution</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Must immediately follow a <literal>blockquote</literal> paragraph in Word.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bibliomisc</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">bibliomisc</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry namest="col1" nameend="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <emphasis role="bold">Non-DocBook elements</emphasis>
+ </db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">xi:include</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">xinclude</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">The content of the paragraph becomes the value of the <tag>href</tag> attribute.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry namest="col1" nameend="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <emphasis role="bold">Inline elements</emphasis>
+ </db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">emphasis</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">emphasis</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">emphasis/@role="bold"</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">emphasis-bold</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">emphasis/@role="underline"</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">emphasis-underline</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">footnote</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Word footnote</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">link</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">link</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">In Word, hyperlink properties identify the DocBook linkend.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">releaseinfo</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">releaseinfo</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">surname</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">surname</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Character style. Must occur in an appropriate parent paragraph, such as <tag>author</tag> or <tag>editor</tag>.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">firstname</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">firstname</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Character style. Must occur in an appropriate parent paragraph, such as <tag>author</tag> or <tag>editor</tag>.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">orgname</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">orgname</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">keyword</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">keywordset/keyword</db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">Paragraph style. Consecutive <tag>keyword</tag> elements are merged into a single <tag>keywordset</tag> parent element. Words (phrases) within a paragraph separated by commas become individual <tag>keyword</tag> elements.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">citetitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">citetitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">city</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">city</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">contrib</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">contrib</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">country</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">country</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">email</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">email</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">fax</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">fax</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">honorific</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">honorific</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">jobtitle</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">jobtitle</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">lineage</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">lineage</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">orgdiv</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">orgdiv</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">otheraddr</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">otheraddr</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">othername</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">othername</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">phone</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">phone</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">pob</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">pob</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">postcode</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">postcode</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">shortaffil</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">shortaffil</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">state</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">state</db:para>
+ </entry>
+ <entry>
+ <db:para xmlns:db="http://docbook.org/ns/docbook"/>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table>
+ <title>Proposed Additions - not yet implemented</title>
+ <tgroup cols="3">
+ <colspec colnum="1" colname="col1" colwidth="2*"/>
+ <colspec colnum="2" colname="col2" colwidth="2*"/>
+ <colspec colnum="3" colname="col3" colwidth="2*"/>
+ <thead>
+ <row>
+ <entry colname="col1">
+ <para>DocBook element</para>
+ </entry>
+ <entry colname="col2">
+ <para>Style(s)</para>
+ </entry>
+ <entry colname="col3">
+ <para>Comments</para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">variablelist/varlistentry/term</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <literallayout class="monospaced">variablelist1-term
+variablelist2-term
+variablelist3-term
+variablelist4-term</literallayout>
+ </db:para>
+ </entry>
+ <entry colname="col3">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">A <sgmltag class="element">variablelist</sgmltag> in Word should be a sequence of alternating paragraphs styled as <literal>variablelistN-term</literal> and <literal>variablelistN</literal>.</db:para>
+ </entry>
+ </row>
+ <row>
+ <entry colname="col1">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">variablelist/varlistentry/listitem/para</db:para>
+ </entry>
+ <entry colname="col2">
+ <db:para xmlns:db="http://docbook.org/ns/docbook">
+ <literallayout class="monospaced">variablelist1
+variablelist2
+variablelist3
+variablelist4</literallayout>
+ </db:para>
+ </entry>
+ <entry colname="col3">
+ <para>Consecutive paragraphs are coalesced.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <section>
+ <title>Attributes</title>
+ <para>Attributes are a feature of DocBook XML that have no direct counterpart in Word.</para>
+ <para>XML attributes are encoded in Word comments (annotations). Some dummy text (just a space, using a character style that includes the hidden property) anchors the comment. Within the comment text, character types are used to indicate attribute names and values (these must be paired). This approach keeps the attributes separate to the main body and allows multiple attributes to be encoded.</para>
+ <para>A disadvantage to this approach is that a paragraph may be related to more than one element, but the attributes are associated with only one element (by default the parent). For example, a section may have an attribute as well as the title child element, but only a single paragraph (with paragraph style <literal>sect1-title</literal>) represents both elements. Any attribute defined in a comment would be associated with the <tag>sect1</tag> element.</para>
+ <para>Pages does not have annotations, so the character styles <literal>attribute-name</literal> and <literal>attribute-value</literal> are used.</para>
+ </section>
+ </section>
+</article>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml
new file mode 100644
index 0000000..cc6fc03
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<sl:document xmlns:sfa="http://developer.apple.com/namespaces/sfa" xmlns:sf="http://developer.apple.com/namespaces/sf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sl="http://developer.apple.com/namespaces/sl" sl:version="72007061400" sfa:ID="SLPublicationModel-0" sl:generator="slingshot" sl:app_build_date="Sep 26 2007, 14:46:11"><sl:version-history><sl:number sfa:number="2004042200" sfa:type="i"/><sl:number sfa:number="2004060800" sfa:type="i"/><sl:number sfa:number="2004061600" sfa:type="i"/><sl:number sfa:number="2004062200" sfa:type="i"/><sl:number sfa:number="2004062900" sfa:type="i"/><sl:number sfa:number="2004072200" sfa:type="i"/><sl:number sfa:number="2004091600" sfa:type="i"/><sl:number sfa:number="2004093000" sfa:type="i"/><sl:number sfa:number="2005140600" sfa:type="i"/><sl:number sfa:number="72007061400" sfa:type="q"/></sl:version-history><sl:publication-info><sl:SFWPCTShowDeletedTextProperty><sl:number sfa:number="1" sfa:type="c"/></sl:SFWPCTShowDeletedTextProperty><sl:SLCreationLocaleProperty><sl:string sfa:string="en_AU"/></sl:SLCreationLocaleProperty><sl:decimalTab><sl:string sfa:string="."/></sl:decimalTab><sl:kSFWPHyperlinksEnabledProperty><sl:number sfa:number="1" sfa:type="c"/></sl:kSFWPHyperlinksEnabledProperty><sl:kSFWPFootnoteNumberingProperty><sl:number sfa:number="0" sfa:type="i"/></sl:kSFWPFootnoteNumberingProperty><sl:SFWPShowInvisiblesProperty><sl:number sfa:number="0" sfa:type="c"/></sl:SFWPShowInvisiblesProperty><sl:kSFWPGhostTextAuthoringEnabledProperty><sl:number sfa:number="0" sfa:type="c"/></sl:kSFWPGhostTextAuthoringEnabledProperty><sl:kSFWPFootnoteKindProperty><sl:number sfa:number="0" sfa:type="i"/></sl:kSFWPFootnoteKindProperty><sl:kSFWPAutoHyphenationProperty><sl:number sfa:number="1" sfa:type="c"/></sl:kSFWPAutoHyphenationProperty><sl:SLCreationDateProperty><sl:date sfa:ID="NSCalendarDate-0" sf:val="2005-04-08T17:18:47+1000"/></sl:SLCreationDateProperty><sl:kSFWPFootnoteGapProperty><sl:number sfa:number="10" sfa:type="i"/></sl:kSFWPFootnoteGapProperty><sl:DefaultHyphenationLanguage><sl:string sfa:string="en"/></sl:DefaultHyphenationLanguage><sl:ShowPageGuides><sl:number sfa:number="0" sfa:type="c"/></sl:ShowPageGuides><sl:kSFWPHasHeadersProperty><sl:number sfa:number="1" sfa:type="c"/></sl:kSFWPHasHeadersProperty><sl:SLSectionAuthoringProperty><sl:number sfa:number="0" sfa:type="c"/></sl:SLSectionAuthoringProperty><sl:SLSaveQuickLookPreviewProperty><sl:number sfa:number="0" sfa:type="c"/></sl:SLSaveQuickLookPreviewProperty><sl:kSFWPFootnoteFormatProperty><sl:number sfa:number="0" sfa:type="i"/></sl:kSFWPFootnoteFormatProperty><sl:kSFWPHyphenationZoneProperty><sl:number sfa:number="18" sfa:type="i"/></sl:kSFWPHyphenationZoneProperty><sl:SLLastModifiedLocaleProperty><sl:string sfa:string="en_AU"/></sl:SLLastModifiedLocaleProperty><sl:SLVisibleLinkedTextBoxConnections><sl:number sfa:number="1" sfa:type="c"/></sl:SLVisibleLinkedTextBoxConnections><sl:SLCopyTemplateAssetsProperty><sl:number sfa:number="0" sfa:type="c"/></sl:SLCopyTemplateAssetsProperty><sl:SFWPCTMarkupVisibleProperty><sl:number sfa:number="1" sfa:type="c"/></sl:SFWPCTMarkupVisibleProperty><sl:SLCopyMoviesProperty><sl:number sfa:number="1" sfa:type="c"/></sl:SLCopyMoviesProperty><sl:SLNumberOfTimesSavedProperty><sl:number sfa:number="47" sfa:type="i"/></sl:SLNumberOfTimesSavedProperty><sl:SLLastModifiedDateProperty><sl:date sfa:ID="NSDate-0" sf:val="2007-12-12T19:45:06+1100"/></sl:SLLastModifiedDateProperty><sl:kSFWPHasFootersProperty><sl:number sfa:number="1" sfa:type="c"/></sl:kSFWPHasFootersProperty><sl:kSFWPHasBodyProperty><sl:number sfa:number="1" sfa:type="c"/></sl:kSFWPHasBodyProperty><sl:kSFWPUseLigaturesProperty><sl:number sfa:number="1" sfa:type="c"/></sl:kSFWPUseLigaturesProperty><sl:SFWPChangeBarsVisibleProperty><sl:number sfa:number="1" sfa:type="c"/></sl:SFWPChangeBarsVisibleProperty><sl:SFWPAnnotationsVisibleProperty><sl:number sfa:number="0" sfa:type="c"/></sl:SFWPAnnotationsVisibleProperty><sl:language><sl:string sfa:string="en"/></sl:language></sl:publication-info><sf:metadata><sf:projects><sf:array sfa:ID="NSArray-0"><sf:string sfa:string=""/></sf:array></sf:projects><sf:authors><sf:array sfa:ID="NSArray-1"><sf:string sfa:string=""/></sf:array></sf:authors><sf:title><sf:string sfa:string=""/></sf:title><sf:copyright><sf:string sfa:string="(c)"/></sf:copyright><sf:keywords><sf:array sfa:ID="NSArray-2"><sf:string sfa:string=""/></sf:array></sf:keywords><sf:comment><sf:string sfa:string=""/></sf:comment></sf:metadata><sl:slprint-info sfa:ID="SLPrintInfo-0" sl:page-width="595" sl:page-height="842" sl:page-scale="1"><sf:page-margins sfa:ID="SFWPMargins-0" sf:top="56.692913055419922" sf:left="56.692913055419922" sf:bottom="70.866142272949219" sf:right="56.692913055419922" sf:header="35.433071136474609" sf:footer="42.519683837890625"/><sl:print-info><sl:NSVerticalPagination><sl:number sfa:number="0" sfa:type="i"/></sl:NSVerticalPagination><sl:NSPrintProtected><sl:number sfa:number="0" sfa:type="c"/></sl:NSPrintProtected><sl:NSHorizontallyCentered><sl:number sfa:number="1" sfa:type="c"/></sl:NSHorizontallyCentered><sl:NSCopies><sl:number sfa:number="1" sfa:type="i"/></sl:NSCopies><sl:NSVerticallyCentered><sl:number sfa:number="1" sfa:type="c"/></sl:NSVerticallyCentered><sl:NSFirstPage><sl:number sfa:number="1" sfa:type="i"/></sl:NSFirstPage><sl:NSScalingFactor><sl:number sfa:number="1" sfa:type="f"/></sl:NSScalingFactor><sl:NSTopMargin><sl:number sfa:number="90" sfa:type="f"/></sl:NSTopMargin><sl:NSJobDisposition><sl:string sfa:string="NSPrintSpoolJob"/></sl:NSJobDisposition><sl:NSMustCollate><sl:number sfa:number="1" sfa:type="c"/></sl:NSMustCollate><sl:NSPrintAllPages><sl:number sfa:number="1" sfa:type="c"/></sl:NSPrintAllPages><sl:NSBottomMargin><sl:number sfa:number="90" sfa:type="f"/></sl:NSBottomMargin><sl:NSLastPage><sl:number sfa:number="2147483647" sfa:type="i"/></sl:NSLastPage><sl:NSOrientation><sl:number sfa:number="0" sfa:type="i"/></sl:NSOrientation><sl:NSPrinter><sl:printer sfa:ID="NSPrinter-0" sl:type="Canon MP530"/></sl:NSPrinter><sl:NSRightMargin><sl:number sfa:number="72" sfa:type="f"/></sl:NSRightMargin><sl:NSPaperName><sl:string sfa:string="A4"/></sl:NSPaperName><sl:NSHorizonalPagination><sl:number sfa:number="2" sfa:type="i"/></sl:NSHorizonalPagination><sl:NSLeftMargin><sl:number sfa:number="72" sfa:type="f"/></sl:NSLeftMargin><sl:NSPaperSize><sl:value><sfa:size sfa:w="595" sfa:h="842"/></sl:value></sl:NSPaperSize></sl:print-info></sl:slprint-info><sl:section-prototypes><sl:prototype sl:name="Text Page"><sf:stylesheet sfa:ID="SFSStylesheet-0"><sf:styles><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-0" sf:name="Sub-heading" sf:ident="paragraph-style-33"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-0" sf:name="None" sf:ident="list-style-default"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-3"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/><sf:number sfa:number="180" sfa:type="f"/><sf:number sfa:number="216" sfa:type="f"/><sf:number sfa:number="252" sfa:type="f"/><sf:number sfa:number="288" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-4"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-0" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-1" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-2" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-3" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-4" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-5" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-6" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-7" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-8" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-5"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-6"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-0" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-1" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-2" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-3" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-4" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-5" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-6" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-7" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-8" sf:type="none"/></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-0" sfa:sfclass="paragraphstyle" sf:name="TOC Heading 3" sf:ident="toc-paragraph-style-3"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:underlineWidth/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic><sf:number sfa:number="1" sfa:type="c"/></sf:italic><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-0"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.34646" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.34646" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:tocstyle></sf:tocStyle><sf:dropCap/><sf:firstTopicNumber/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-1" sf:name="Body" sf:ident="paragraph-style-32"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-0"/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:firstTopicNumber/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="6" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-0" sf:name="graphic-line-style-default" sf:ident="graphic-line-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-0" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-0" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-0" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow sfa:ID="SFRShadow-0" sf:is-null="true"/></sf:shadow></sf:property-map></sf:graphic-style><sf:sectionstyle sfa:ID="SFWPSectionStyle-0" sf:name="[Null]" sf:ident="section-style-null"><sf:property-map/></sf:sectionstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-2" sf:name="Heading" sf:ident="paragraph-style-35"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-0"/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-1" sfa:sfclass="paragraphstyle" sf:name="TOC Heading 2" sf:ident="toc-paragraph-style-2"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="3" sfa:type="f"/></sf:spaceAfter><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:underlineWidth/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-1"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="14.17323" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="14.17323" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:tocstyle></sf:tocStyle><sf:dropCap/><sf:firstTopicNumber/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-1"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:sectionstyle sfa:ID="SFWPSectionStyle-1" sf:name="Normal" sf:ident="section-style-default"><sf:property-map><sf:sectionLayoutStyle><sf:null/></sf:sectionLayoutStyle><sf:inheritPreviousHF><sf:number sfa:number="1" sfa:type="c"/></sf:inheritPreviousHF><sf:sectionPageNumberStart><sf:number sfa:number="1" sfa:type="i"/></sf:sectionPageNumberStart><sf:pageMasterFirstPageDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterFirstPageDifferent><sf:firstPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-0" sl:header="SFWPDefaultFirstHeaderIdentifier" sl:footer="SFWPDefaultFirstFooterIdentifier"/></sf:firstPageMaster><sf:evenPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-1" sl:header="SFWPDefaultEvenHeaderIdentifier" sl:footer="SFWPDefaultEvenFooterIdentifier"/></sf:evenPageMaster><sf:startKind><sf:number sfa:number="0" sfa:type="i"/></sf:startKind><sf:pageMasterLeftRightPagesDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterLeftRightPagesDifferent><sf:sectionPageNumberKind><sf:number sfa:number="0" sfa:type="i"/></sf:sectionPageNumberKind><sf:oddPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-2" sl:header="SFWPDefaultOddHeaderIdentifier" sl:footer="SFWPDefaultOddFooterIdentifier"/></sf:oddPageMaster></sf:property-map></sf:sectionstyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-2" sfa:sfclass="paragraphstyle" sf:name="TOC" sf:ident="toc-paragraph-style-default"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-2"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:tocstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-3" sf:name="Free Form" sf:ident="paragraph-style-default"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:dropCap/><sf:firstTopicNumber/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC/><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:decimalTab/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-1" sf:name="graphic-textbox-style-default" sf:ident="graphic-textbox-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-1" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-1" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-1" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:liststyle-ref sfa:IDREF="SFWPListStyle-0"/><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-1"/><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-1"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-4" sf:name="Title" sf:ident="paragraph-style-38"><sf:property-map><sf:fontSize><sf:number sfa:number="28" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-0"/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-2"/></sf:tocStyle><sf:dropCap/><sf:firstTopicNumber/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-1"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="24" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-5" sf:ident="kSFTErrorWarningParagraphStyleID" sf:parent-ident="paragraph-style-default"><sf:property-map><sf:fontColor/><sf:alignment/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-1" sf:ident="kSFTErrorWarningListStyleID" sf:parent-ident="list-style-default"><sf:property-map/></sf:liststyle></sf:listStyle><sf:keepLinesTogether><sf:number sfa:number="1" sfa:type="c"/></sf:keepLinesTogether><sf:fontName><sf:string sfa:string="LucidaGrande"/></sf:fontName><sf:fontSize><sf:number sfa:number="11" sfa:type="f"/></sf:fontSize></sf:property-map></sf:paragraphstyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-1"/><sf:sectionstyle sfa:ID="SFWPSectionStyle-2" sf:name="Normal 4" sf:ident="section-style-8"><sf:property-map><sf:sectionLayoutStyle><sf:null/></sf:sectionLayoutStyle><sf:inheritPreviousHF><sf:number sfa:number="1" sfa:type="c"/></sf:inheritPreviousHF><sf:sectionPageNumberStart><sf:number sfa:number="1" sfa:type="i"/></sf:sectionPageNumberStart><sf:pageMasterFirstPageDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterFirstPageDifferent><sf:firstPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-3" sl:header="" sl:footer=""/></sf:firstPageMaster><sf:evenPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-4" sl:header="" sl:footer=""/></sf:evenPageMaster><sf:startKind><sf:number sfa:number="0" sfa:type="i"/></sf:startKind><sf:pageMasterLeftRightPagesDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterLeftRightPagesDifferent><sf:sectionPageNumberKind><sf:number sfa:number="0" sfa:type="i"/></sf:sectionPageNumberKind><sf:oddPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-5" sl:header="" sl:footer=""/></sf:oddPageMaster></sf:property-map></sf:sectionstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-2" sf:name="graphic-shape-style-default" sf:ident="graphic-shape-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-2" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-2" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-2" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:layoutstyle sfa:ID="SFWPLayoutStyle-0" sf:name="Normal" sf:ident="layout-style-default"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:null/></sf:layoutParagraphStyle><sf:columns/><sf:padding/><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-1" sf:ident="kSFTErrorWarningLayoutStyleID" sf:parent-ident="layout-style-default"><sf:property-map><sf:verticalAlignment><sf:null/></sf:verticalAlignment><sf:padding/><sf:layoutParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-5"/></sf:layoutParagraphStyle></sf:property-map></sf:layoutstyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-2" sf:ident="graphic-shape-layout-style-default"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:null/></sf:layoutParagraphStyle><sf:columns/><sf:padding><sf:padding sfa:ID="SFWPPadding-0" sf:top="4" sf:left="4" sf:bottom="4" sf:right="4"/></sf:padding><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-3" sf:ident="graphic-textbox-layout-style-default"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:null/></sf:layoutParagraphStyle><sf:columns/><sf:padding><sf:padding sfa:ID="SFWPPadding-1" sf:top="4" sf:left="4" sf:bottom="4" sf:right="4"/></sf:padding><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-3" sf:name="graphic-image-style-default" sf:ident="graphic-image-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-3" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-3" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-3" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:characterstyle sfa:ID="SFWPCharacterStyle-0" sf:name="None" sf:ident="character-style-null"><sf:property-map/></sf:characterstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-4" sf:ident="kSFTErrorWarningBubbleStyleID"><sf:property-map><sf:stroke><sf:stroke sfa:ID="SFRStroke-4" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75290000438690186" sfa:g="0.75290000438690186" sfa:b="0.75290000438690186" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-4" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:layoutStyle><sf:layoutstyle-ref sfa:IDREF="SFWPLayoutStyle-1"/></sf:layoutStyle><sf:fill><sf:angle-gradient sfa:ID="SFRAngleGradient-0" sf:opacity="1" sf:type="linear" sf:angle="-1.5707963705062866"><sf:stops sfa:ID="NSMutableArray-0"><sf:gradient-stop sfa:ID="SFRGradientStop-0" sf:fraction="0"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.96859997510910034" sfa:g="0.96859997510910034" sfa:b="0.96859997510910034" sfa:a="0.95999997854232788"/></sf:gradient-stop><sf:gradient-stop sfa:ID="SFRGradientStop-1" sf:fraction="1"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.81959998607635498" sfa:g="0.81959998607635498" sfa:b="0.81959998607635498" sfa:a="0.95999997854232788"/></sf:gradient-stop></sf:stops></sf:angle-gradient></sf:fill><sf:reflection><sf:null/></sf:reflection><sf:shadow><sf:shadow sfa:ID="SFRShadow-1" sf:angle="90" sf:offset="2" sf:radius="2" sf:opacity="0.30000001192092896"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:shadow></sf:property-map></sf:graphic-style><sf:layoutstyle sfa:ID="SFWPLayoutStyle-4" sf:name="Normal 22" sf:ident="layout-style-20"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:null/></sf:layoutParagraphStyle><sf:columns/><sf:padding/><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-5" sf:name="graphic-movie-style-default" sf:ident="graphic-movie-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-4" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-5" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-5" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-0"/></sf:styles><sf:anon-styles/></sf:stylesheet><sf:headers/><sf:footers/><sf:text-storage sf:kind="body" sfa:ID="SFWPStorage-0"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-0"/><sf:text-body><sf:section sf:name="Chapter 3" sf:style="section-style-8"><sf:layout sf:style="layout-style-20"><sf:p sf:style="paragraph-style-38"><sf:ghost-text>Lorem ipsum dolor sit amet</sf:ghost-text><sf:br/></sf:p><sf:p sf:style="paragraph-style-35"><sf:ghost-text>Consectetur adipiscing elit</sf:ghost-text><sf:br/></sf:p><sf:p sf:style="paragraph-style-32"><sf:ghost-text>Eset eiusmod tempor incidunt et labore et dolore magna aliquam. Ut enim ad minim veniam, quis nostrud exerc. Irure dolor in reprehend incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse molestaie cillum. Tia non ob ea soluad incommod quae egen ium improb fugiend. Officia deserunt mollit anim id est laborum Et harumd dereud facilis est er expedit distinct. Nam liber te conscient to factor tum poen legum odioque civiuda et tam. Neque pecun modut est neque nonor et imper ned libidig met, consectetur adipiscing elit, sed ut labore et dolore magna aliquam is nostrud exercitation ullam mmodo consequet.</sf:ghost-text><sf:br/></sf:p><sf:p sf:style="paragraph-style-33"><sf:ghost-text>Duis aute in voluptate velit esse</sf:ghost-text><sf:br/></sf:p><sf:p sf:style="paragraph-style-32"><sf:ghost-text>Cillum dolore eu fugiat nulla pariatur. At vver eos et accusam dignissum qui blandit est praesent. Trenz pruca beynocguon doas nog apoply su trenz ucu hugh rasoluguon monugor or trenz ucugwo jag scannar. Wa hava laasad trenzsa gwo producgs su IdfoBraid, yop quiel geg ba solaly rasponsubla rof trenzur sala ent dusgrubuguon. Offoctivo immoriatoly, hawrgasi pwicos asi sirucor. Thas sirutciun applios tyu thuso itoms ghuso pwicos gosi sirucor in mixent gosi sirucor ic mixent ples cak ontisi sowios uf Zerm hawr rwivos. Unte af phen neige pheings atoot Prexs eis phat eit sakem eit vory gast te Plok peish ba useing phen roxas. Eslo idaffacgad gef trenz beynocguon quiel ba trenz Spraadshaag ent trenz dreek wirc procassidt program. Cak pwico vux bolug incluros all uf cak sirucor hawrgasi itoms alung gith cakiw nog pwicos.</sf:ghost-text><sf:br/></sf:p><sf:p sf:style="paragraph-style-33"><sf:ghost-text>Plloaso mako nuto uf cakso dodtos</sf:ghost-text><sf:br/></sf:p><sf:p sf:style="paragraph-style-32"><sf:ghost-text>Koop a cupy uf cak vux noaw yerw phuno. Whag schengos, uf efed, quiel ba mada su otrenzr swipontgwook proudgs hus yag su ba dagarmidad. Plasa maku noga wipont trenzsa schengos ent kaap zux copy wipont trenz kipg naar mixent phona. Cak pwico siructiun ruos nust apoply tyu cak UCU sisulutiun munityuw uw cak UCU-TGU jot scannow. Trens roxas eis ti Plokeing quert loppe eis yop prexs. Piy opher hawers, eit yaggles orn ti sumbloat alohe plok. Su havo loasor cakso tgu pwuructs tyu InfuBwain, ghu gill nug bo suloly sispunsiblo fuw cakiw salo anr ristwibutiun. Hei muk neme eis loppe. Treas em wankeing ont sime ploked peish rof phen sumbloat syug si phat phey gavet peish ta paat ein pheeir sumbloats. Aslu unaffoctor gef cak siructiun gill bo cak spiarshoot anet cak GurGanglo gur pwucossing pwutwam. Ghat dodtos, ig pany, gill bo maro tyu ucakw suftgasi pwuructs hod yot tyubo rotowminor. Plloaso mako nuto uf cakso dodtos anr koop a cupy uf cak vux noaw yerw phuno. Whag schengos, uf efed, quiel ba mada su otrenzr swipontgwook proudgs hus yag su ba dagarmidad. Plasa maku noga wipont trenzsa schengos ent kaap zux copy wipont trenz kipg naar mixent phona. Cak pwico siructiun ruos nust apoply tyu cak UCU sisulutiun munityuw uw cak UCU-TGU jot scannow. Trens roxas eis ti Plokeing quert loppe eis yop prexs. Piy opher hawers, eit yaggles orn ti sumbloat alohe plok. Su havo loasor cakso tgu pwuructs tyu.</sf:ghost-text></sf:p></sf:layout></sf:section></sf:text-body></sf:text-storage><sl:thumbnails sfa:ID="SFRImageBinary-0"><sf:size sfa:w="45" sfa:h="56"/><sf:data sfa:ID="SFEData-0" sf:path="Templates/Blank/Blank.template/thumbs/PageCapThumbV2-1.tiff" sf:displayname="thumbs/PageCapThumbV2-1.tiff" sf:size="10222" sf:sharable="false" sf:resource-type="1" sf:hfs-type="1414088262" sf:checksum="11d714c8" sfa:version="1"/></sl:thumbnails></sl:prototype></sl:section-prototypes><sl:stylesheet sfa:ID="SFSStylesheet-1"><sf:styles><sf:vector-style sfa:ID="SFTVectorStyle-0" sf:ident="tabular-default-header-separator-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke sfa:ID="SFRStroke-6" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-6" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:vector-style sfa:ID="SFTVectorStyle-1" sf:ident="tabular-default-footer-body-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke sfa:ID="SFRStroke-7" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-7" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:vector-style sfa:ID="SFTVectorStyle-2" sf:ident="tabular-default-body-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke sfa:ID="SFRStroke-8" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-8" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:vector-style sfa:ID="SFTVectorStyle-3" sf:ident="tabular-default-header-border-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke sfa:ID="SFRStroke-9" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-9" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:vector-style sfa:ID="SFTVectorStyle-4" sf:ident="tabular-default-footer-border-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke-ref sfa:IDREF="SFRStroke-9"/></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:vector-style sfa:ID="SFTVectorStyle-5" sf:ident="tabular-default-header-body-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke-ref sfa:IDREF="SFRStroke-7"/></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:vector-style sfa:ID="SFTVectorStyle-6" sf:ident="tabular-default-footer-separator-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke-ref sfa:IDREF="SFRStroke-6"/></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:vector-style sfa:ID="SFTVectorStyle-7" sf:ident="tabular-default-border-vector-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTStrokeProperty><sf:stroke-ref sfa:IDREF="SFRStroke-8"/></sf:SFTStrokeProperty><sf:SFTBackgroundProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTBackgroundProperty></sf:property-map></sf:vector-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-6" sf:name="sect2-subtitle" sf:ident="paragraph-style-45"><sf:property-map><sf:fontSize><sf:number sfa:number="15" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-2" sf:name="None" sf:ident="list-style-default"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-7"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/><sf:number sfa:number="180" sfa:type="f"/><sf:number sfa:number="216" sfa:type="f"/><sf:number sfa:number="252" sfa:type="f"/><sf:number sfa:number="288" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-8"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-9" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-10" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-11" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-12" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-13" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-14" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-15" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-16" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-17" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-9"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-10"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-9" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-10" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-11" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-12" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-13" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-14" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-15" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-16" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-17" sf:type="none"/></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-3" sfa:sfclass="paragraphstyle" sf:name="TOC Heading 2" sf:ident="toc-paragraph-style-2"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="3" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:firstTopicNumber/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-3"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="14.17323" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="14.17323" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:tocstyle></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-7" sf:name="para" sf:ident="paragraph-style-32"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-8" sf:name="formalpara-title" sf:ident="paragraph-style-23"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.36418" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-4" sfa:sfclass="paragraphstyle" sf:name="TOC" sf:ident="toc-paragraph-style-default"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:firstTopicNumber/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-4"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:tocstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-9" sf:name="sect3-subtitle" sf:ident="paragraph-style-47"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-1" sf:name="orgdiv" sf:ident="character-style-19"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:fontName/><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-10" sf:name="itemizedlist2" sf:ident="paragraph-style-95"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-3" sf:parent-ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-11"><sf:number sfa:number="9.000001" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-12"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-18" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-19" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-20" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-21" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-22" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-23" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-24" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-25" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-26" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-13"><sf:number sfa:number="14.17323" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-14"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-18" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-0" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-19" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-1" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-20" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-2" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-21" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-3" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-22" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-4" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-23" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-5" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-24" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-6" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-25" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-7" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-26" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-8" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-11" sf:name="publisher" sf:ident="paragraph-style-106"><sf:property-map><sf:fontSize><sf:number sfa:number="10" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="TimesNewRomanPSMT"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-12" sf:name="blockerror" sf:ident="paragraph-style-10"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="0.40000000596046448" sfa:b="0.40000000596046448" sfa:a="0.20000000298023224"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="14.18209" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="14.18209" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:cell-style sfa:ID="SFTCellStyle-0" sf:ident="tabular-default-footer-row-cell-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTCellStylePropertyDateTimeFormat><sf:string sfa:string="d/MM/yy h:mm a"/></sf:SFTCellStylePropertyDateTimeFormat><sf:SFTCellStylePropertyParagraphStyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-13" sf:parent-ident="paragraph-style-32"><sf:property-map><sf:alignment><sf:number sfa:number="2" sfa:type="i"/></sf:alignment><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle></sf:property-map></sf:paragraphstyle></sf:SFTCellStylePropertyParagraphStyle><sf:SFTCellStylePropertyFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyFormatType><sf:SFTCellTextWrapProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTCellTextWrapProperty><sf:SFTCellStylePropertyImplicitFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyImplicitFormatType><sf:SFTCellStylePropertyLayoutStyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-5" sf:parent-ident="layout-style-default"><sf:property-map><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:padding><sf:padding sfa:ID="SFWPPadding-2" sf:top="5" sf:left="5" sf:bottom="5" sf:right="5"/></sf:padding><sf:layoutParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-13"/></sf:layoutParagraphStyle></sf:property-map></sf:layoutstyle></sf:SFTCellStylePropertyLayoutStyle><sf:SFTCellStylePropertyNumberFormat><sf:number-format sfa:ID="SFTNumberFormat-0" sf:format-type="0" sf:format-string="#,##0.###;-#,##0.###" sf:format-decimal-places="2" sf:format-currency-code="AUD" sf:format-negative-style="0" sf:format-show-thousands-separator="true" sf:format-fraction-accuracy="-1" sf:format-use-accounting-style="false"/></sf:SFTCellStylePropertyNumberFormat><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.69019609689712524" sfa:g="0.70196080207824707" sfa:b="0.69803923368453979" sfa:a="1"/></sf:fill></sf:property-map></sf:cell-style><sf:characterstyle sfa:ID="SFWPCharacterStyle-2" sf:name="emphasis" sf:ident="character-style-0"><sf:property-map><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic></sf:property-map></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-3" sf:name="emphasis-underline" sf:ident="character-style-16"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName/><sf:baselineShift/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-14" sf:name="sect5-title" sf:ident="paragraph-style-50"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-15" sf:name="address" sf:ident="paragraph-style-108"><sf:property-map><sf:fontSize><sf:number sfa:number="11" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="CourierNewPSMT"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-16" sf:name="caption" sf:ident="paragraph-style-36"><sf:property-map><sf:fontSize><sf:number sfa:number="11" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="Helvetica-Oblique"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic><sf:number sfa:number="1" sfa:type="c"/></sf:italic><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-17" sf:name="itemizedlist1" sf:ident="paragraph-style-29"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-4" sf:name="Bullet" sf:ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-15"><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-16"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-27" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-28" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-29" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-30" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-31" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-32" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-33" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-34" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-35" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-17"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-18"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-27" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-9" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-28" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-10" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-29" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-11" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-30" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-12" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-31" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-13" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-32" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-14" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-33" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-15" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-34" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-16" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-35" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-17" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-18" sf:name="important" sf:ident="paragraph-style-25"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-5" sf:parent-ident="list-style-default"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-19"><sf:number sfa:number="28.34646" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/><sf:number sfa:number="180" sfa:type="f"/><sf:number sfa:number="216" sfa:type="f"/><sf:number sfa:number="252" sfa:type="f"/><sf:number sfa:number="288" sfa:type="f"/></sf:array></sf:listTextIndents><sf:labelCharacterStyle1><sf:characterstyle sfa:ID="SFWPCharacterStyle-4" sf:parent-ident="character-style-null"><sf:property-map><sf:fontName/></sf:property-map></sf:characterstyle></sf:labelCharacterStyle1><sf:listLabelGeometries><sf:array sfa:ID="NSArray-20"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-36" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-37" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-38" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-39" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-40" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-41" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-42" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-43" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-44" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-21"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-22"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-36" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-18" sf:type="bullet" sf:format="!" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-37" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-38" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-39" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-40" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-41" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-42" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-43" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-44" sf:type="none"/></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="1" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-5" sf:name="attributes" sf:ident="character-style-3"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName><sf:string sfa:string="Courier"/></sf:fontName><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-6" sf:name="contrib" sf:ident="character-style-6"><sf:property-map><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-19" sf:name="formalpara" sf:ident="paragraph-style-22"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-6" sf:ident="kSFTErrorWarningBubbleStyleID"><sf:property-map><sf:stroke><sf:stroke sfa:ID="SFRStroke-10" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75290000438690186" sfa:g="0.75290000438690186" sfa:b="0.75290000438690186" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-10" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:layoutStyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-6" sf:ident="kSFTErrorWarningLayoutStyleID" sf:parent-ident="layout-style-default"><sf:property-map><sf:verticalAlignment><sf:null/></sf:verticalAlignment><sf:padding/><sf:layoutParagraphStyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-20" sf:ident="kSFTErrorWarningParagraphStyleID" sf:parent-ident="paragraph-style-default"><sf:property-map><sf:fontColor/><sf:alignment/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-6" sf:ident="kSFTErrorWarningListStyleID" sf:parent-ident="list-style-default"><sf:property-map/></sf:liststyle></sf:listStyle><sf:keepLinesTogether><sf:number sfa:number="1" sfa:type="c"/></sf:keepLinesTogether><sf:fontName><sf:string sfa:string="LucidaGrande"/></sf:fontName><sf:fontSize><sf:number sfa:number="11" sfa:type="f"/></sf:fontSize></sf:property-map></sf:paragraphstyle></sf:layoutParagraphStyle></sf:property-map></sf:layoutstyle></sf:layoutStyle><sf:fill><sf:angle-gradient sfa:ID="SFRAngleGradient-1" sf:opacity="1" sf:type="linear" sf:angle="-1.5707963705062866"><sf:stops sfa:ID="NSMutableArray-1"><sf:gradient-stop sfa:ID="SFRGradientStop-2" sf:fraction="0"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.96859997510910034" sfa:g="0.96859997510910034" sfa:b="0.96859997510910034" sfa:a="0.95999997854232788"/></sf:gradient-stop><sf:gradient-stop sfa:ID="SFRGradientStop-3" sf:fraction="1"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.81959998607635498" sfa:g="0.81959998607635498" sfa:b="0.81959998607635498" sfa:a="0.95999997854232788"/></sf:gradient-stop></sf:stops></sf:angle-gradient></sf:fill><sf:reflection><sf:null/></sf:reflection><sf:shadow><sf:shadow sfa:ID="SFRShadow-2" sf:angle="90" sf:offset="2" sf:radius="2" sf:opacity="0.30000001192092896"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:shadow></sf:property-map></sf:graphic-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-21" sf:name="blockquote-title" sf:ident="paragraph-style-13"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:chart-series-style sfa:ID="SFCSeriesStyle-0" sf:name="Series_0" sf:ident="Series_0" sf:seriesIndex="0"><sf:property-map><sf:SFC2DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC2DPieFillProperty><sf:SFCBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCBarValueLabelPositionProperty><sf:SFC3DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC3DColumnFillProperty><sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:SFC3DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC3DAreaFillProperty><sf:SFCAreaShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCAreaShowValueLabelProperty><sf:SFCLabelShadowProperty><sf:shadow sfa:ID="SFRShadow-3" sf:angle="45" sf:offset="2" sf:radius="2" sf:opacity="0.75"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:SFCLabelShadowProperty><sf:SFC2DLineDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DLineDataPointSymbolProperty><sf:SFC2DPieStrokeProperty><sf:stroke sfa:ID="SFRStroke-11" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-11" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DPieStrokeProperty><sf:SFC2DScatterShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DScatterShadowProperty><sf:SFC2DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC2DAreaFillProperty><sf:SFC2DLineDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DLineDataPointFillProperty><sf:SFC3DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC3DPieFillProperty><sf:SFC2DLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-12" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-12" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DLineStrokeProperty><sf:SFC2DScatterStrokeProperty><sf:stroke sfa:ID="SFRStroke-13" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-13" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DScatterStrokeProperty><sf:SFC3DSeriesShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFC3DSeriesShininessProperty><sf:SFC2DAreaDataPointSymbolProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFC2DAreaDataPointSymbolProperty><sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:SFC3DSeriesEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DSeriesEmissiveColorProperty><sf:SFC3DTextureTilingProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DTextureTilingProperty><sf:SFC2DLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DLineShadowProperty><sf:SFCPieSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-22" sf:ident="Series_0_SFCPieSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment><sf:number sfa:number="2" sfa:type="i"/></sf:alignment><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCPieSeriesValueParagraphStyleProperty><sf:SFCStackedBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCStackedBarValueLabelPositionProperty><sf:SFC2DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC2DColumnFillProperty><sf:SFC3DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC3DBarFillProperty><sf:SFC2DBarStrokeProperty><sf:stroke sfa:ID="SFRStroke-14" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-14" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DBarStrokeProperty><sf:SFCLabelOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCLabelOpacityProperty><sf:SFC2DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DPieShadowProperty><sf:SFCPieShowValueLabelProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCPieShowValueLabelProperty><sf:SFCPieShowSeriesNameLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCPieShowSeriesNameLabelProperty><sf:SFCLineSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-23" sf:ident="Series_0_SFCLineSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCLineSeriesValueParagraphStyleProperty><sf:SFC2DOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DOpacityProperty><sf:SFCLineValueLabelPositionProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCLineValueLabelPositionProperty><sf:SFCPieValueLabelPositionProperty><sf:number sfa:number="13" sfa:type="i"/></sf:SFCPieValueLabelPositionProperty><sf:SFCLineShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCLineShowValueLabelProperty><sf:SFC2DAreaDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DAreaDataPointFillProperty><sf:SFCStackedAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCStackedAreaValueLabelPositionProperty><sf:SFC2DAreaShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DAreaShadowProperty><sf:SFC3DSeriesSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.89999997615814209" sfa:g="0.89999997615814209" sfa:b="0.89999997615814209" sfa:a="1"/></sf:SFC3DSeriesSpecularColorProperty><sf:SFC2DScatterDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DScatterDataPointSymbolProperty><sf:SFC2DBarShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DBarShadowProperty><sf:SFCBarSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-24" sf:ident="Series_0_SFCBarSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCBarSeriesValueParagraphStyleProperty><sf:SFC2DScatterDataPointFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC2DScatterDataPointFillProperty><sf:SFC2DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC2DBarFillProperty><sf:SFCBarShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCBarShowValueLabelProperty><sf:SFC2DAreaStrokeProperty><sf:stroke sfa:ID="SFRStroke-15" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-15" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DAreaStrokeProperty><sf:SFCAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCAreaValueLabelPositionProperty><sf:SFC3DPieShadowProperty><sf:shadow sfa:ID="SFRShadow-4" sf:angle="45" sf:offset="1" sf:radius="6" sf:opacity="0.80000001192092896"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:SFC3DPieShadowProperty><sf:SFC3DTextureProperty><sf:string sfa:string=""/></sf:SFC3DTextureProperty><sf:SFCAreaSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-25" sf:ident="Series_0_SFCAreaSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCAreaSeriesValueParagraphStyleProperty><sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:SFC3DLineFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.17647059261798859" sfa:g="0" sfa:b="0.22352941334247589" sfa:a="1"/></sf:SFC3DLineFillProperty><sf:SFCPieWedgeExplosionProperty><sf:number sfa:number="0" sfa:type="f"/></sf:SFCPieWedgeExplosionProperty></sf:property-map></sf:chart-series-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-26" sf:name="biblioentry-title" sf:ident="paragraph-style-104"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="14.17323" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.34646" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-27" sf:name="orderedlist3" sf:ident="paragraph-style-101"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-7" sf:parent-ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-23"><sf:number sfa:number="14.17323" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-24"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-45" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-46" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-47" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-48" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-49" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-50" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-51" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-52" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-53" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-25"><sf:number sfa:number="28.34646" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-26"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-45" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-19" sf:type="upper-roman" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-46" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-20" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-47" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-21" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-48" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-22" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-49" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-23" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-50" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-24" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-51" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-25" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-52" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-26" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-53" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-27" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-28" sf:name="sect1-subtitle" sf:ident="paragraph-style-43"><sf:property-map><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-29" sf:name="literallayout" sf:ident="paragraph-style-74"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="Courier"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-7" sf:name="attribute-value" sf:ident="character-style-4"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName><sf:string sfa:string="Courier"/></sf:fontName><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:tabular-style sfa:ID="SFTTableStyle-0" sf:ident="tabular-default-style-id"><sf:property-map><sf:SFTDefaultColumnCountProperty><sf:number sfa:number="3" sfa:type="i"/></sf:SFTDefaultColumnCountProperty><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-5" sf:wrap-style="regular" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:SFTDefaultHeaderColumnCellStyleProperty><sf:cell-style sfa:ID="SFTCellStyle-1" sf:ident="tabular-default-header-column-cell-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTCellStylePropertyDateTimeFormat><sf:string sfa:string="d/MM/yy h:mm a"/></sf:SFTCellStylePropertyDateTimeFormat><sf:SFTCellStylePropertyParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-13"/></sf:SFTCellStylePropertyParagraphStyle><sf:SFTCellStylePropertyFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyFormatType><sf:SFTCellTextWrapProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTCellTextWrapProperty><sf:SFTCellStylePropertyImplicitFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyImplicitFormatType><sf:SFTCellStylePropertyLayoutStyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-7" sf:parent-ident="layout-style-default"><sf:property-map><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:padding><sf:padding-ref sfa:IDREF="SFWPPadding-2"/></sf:padding><sf:layoutParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-13"/></sf:layoutParagraphStyle></sf:property-map></sf:layoutstyle></sf:SFTCellStylePropertyLayoutStyle><sf:SFTCellStylePropertyNumberFormat><sf:number-format sfa:ID="SFTNumberFormat-1" sf:format-type="0" sf:format-string="#,##0.###;-#,##0.###" sf:format-decimal-places="2" sf:format-currency-code="AUD" sf:format-negative-style="0" sf:format-show-thousands-separator="true" sf:format-fraction-accuracy="-1" sf:format-use-accounting-style="false"/></sf:SFTCellStylePropertyNumberFormat><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.86274510622024536" sfa:g="0.87058824300765991" sfa:b="0.86666667461395264" sfa:a="1"/></sf:fill></sf:property-map></sf:cell-style></sf:SFTDefaultHeaderColumnCellStyleProperty><sf:SFTDefaultFooterRowCellStyleProperty><sf:cell-style-ref sfa:IDREF="SFTCellStyle-0"/></sf:SFTDefaultFooterRowCellStyleProperty><sf:SFTDefaultHeaderBorderVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-3"/></sf:SFTDefaultHeaderBorderVectorStyleProperty><sf:SFTDefaultBodyVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-2"/></sf:SFTDefaultBodyVectorStyleProperty><sf:SFTDefaultRowCountProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFTDefaultRowCountProperty><sf:SFTDefaultBorderVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-7"/></sf:SFTDefaultBorderVectorStyleProperty><sf:SFTDefaultFooterSeparatorVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-6"/></sf:SFTDefaultFooterSeparatorVectorStyleProperty><sf:SFTTableBandedRowsProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTTableBandedRowsProperty><sf:SFTDefaultHeaderBodyVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-5"/></sf:SFTDefaultHeaderBodyVectorStyleProperty><sf:SFTDefaultHeaderSeparatorVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-0"/></sf:SFTDefaultHeaderSeparatorVectorStyleProperty><sf:SFTHeaderRowRepeatsProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTHeaderRowRepeatsProperty><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTAutoResizeProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTAutoResizeProperty><sf:SFTDefaultHeaderRowCellStyleProperty><sf:cell-style sfa:ID="SFTCellStyle-2" sf:ident="tabular-default-header-row-cell-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTCellStylePropertyDateTimeFormat><sf:string sfa:string="d/MM/yy h:mm a"/></sf:SFTCellStylePropertyDateTimeFormat><sf:SFTCellStylePropertyParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-13"/></sf:SFTCellStylePropertyParagraphStyle><sf:SFTCellStylePropertyFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyFormatType><sf:SFTCellTextWrapProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTCellTextWrapProperty><sf:SFTCellStylePropertyImplicitFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyImplicitFormatType><sf:SFTCellStylePropertyLayoutStyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-8" sf:parent-ident="layout-style-default"><sf:property-map><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:padding><sf:padding-ref sfa:IDREF="SFWPPadding-2"/></sf:padding><sf:layoutParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-13"/></sf:layoutParagraphStyle></sf:property-map></sf:layoutstyle></sf:SFTCellStylePropertyLayoutStyle><sf:SFTCellStylePropertyNumberFormat><sf:number-format-ref sfa:IDREF="SFTNumberFormat-0"/></sf:SFTCellStylePropertyNumberFormat><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.69019609689712524" sfa:g="0.70196080207824707" sfa:b="0.69803923368453979" sfa:a="1"/></sf:fill></sf:property-map></sf:cell-style></sf:SFTDefaultHeaderRowCellStyleProperty><sf:fill><sf:null/></sf:fill><sf:SFTDefaultInlineGeometryProperty><sf:geometry sfa:ID="SFDAffineGeometry-0" sf:sizesLocked="true"><sf:naturalSize sfa:w="467" sfa:h="75"/><sf:size sfa:w="467" sfa:h="75"/><sf:position sfa:x="0" sfa:y="0"/></sf:geometry></sf:SFTDefaultInlineGeometryProperty><sf:SFTHeaderColumnRepeatsProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTHeaderColumnRepeatsProperty><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow><sf:SFTDefaultBodyCellStyleProperty><sf:cell-style sfa:ID="SFTCellStyle-3" sf:ident="tabular-default-body-cell-style-id"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFTCellStylePropertyDateTimeFormat><sf:string sfa:string="d/MM/yy h:mm a"/></sf:SFTCellStylePropertyDateTimeFormat><sf:SFTCellStylePropertyParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:SFTCellStylePropertyParagraphStyle><sf:SFTCellStylePropertyFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyFormatType><sf:SFTCellTextWrapProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTCellTextWrapProperty><sf:SFTCellStylePropertyImplicitFormatType><sf:number sfa:number="255" sfa:type="i"/></sf:SFTCellStylePropertyImplicitFormatType><sf:SFTCellStylePropertyLayoutStyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-9" sf:parent-ident="layout-style-default"><sf:property-map><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:padding><sf:padding sfa:ID="SFWPPadding-3" sf:top="5" sf:left="5" sf:bottom="5" sf:right="5"/></sf:padding><sf:layoutParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:layoutParagraphStyle></sf:property-map></sf:layoutstyle></sf:SFTCellStylePropertyLayoutStyle><sf:SFTCellStylePropertyNumberFormat><sf:number-format sfa:ID="SFTNumberFormat-2" sf:format-type="0" sf:format-string="#,##0.###;-#,##0.###" sf:format-decimal-places="2" sf:format-currency-code="AUD" sf:format-negative-style="0" sf:format-show-thousands-separator="true" sf:format-fraction-accuracy="-1" sf:format-use-accounting-style="false"/></sf:SFTCellStylePropertyNumberFormat><sf:fill><sf:null/></sf:fill></sf:property-map></sf:cell-style></sf:SFTDefaultBodyCellStyleProperty><sf:SFTTableBandedCellFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92156863212585449" sfa:g="0.93333333730697632" sfa:b="0.94117647409439087" sfa:a="1"/></sf:SFTTableBandedCellFillProperty><sf:SFTGroupingRowFillProperty><sf:null/></sf:SFTGroupingRowFillProperty><sf:SFTDefaultFooterBodyVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-1"/></sf:SFTDefaultFooterBodyVectorStyleProperty><sf:SFTDefaultFooterBorderVectorStyleProperty><sf:vector-style-ref sfa:IDREF="SFTVectorStyle-4"/></sf:SFTDefaultFooterBorderVectorStyleProperty><sf:SFTTableBehaviorProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFTTableBehaviorProperty><sf:SFTDefaultHeaderColumnCountProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFTDefaultHeaderColumnCountProperty><sf:SFTDefaultGeometryProperty><sf:geometry sfa:ID="SFDAffineGeometry-1" sf:sizesLocked="true"><sf:naturalSize sfa:w="350" sfa:h="100"/><sf:size sfa:w="350" sfa:h="100"/><sf:position sfa:x="79" sfa:y="171"/></sf:geometry></sf:SFTDefaultGeometryProperty><sf:SFTDefaultHeaderRowCountProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFTDefaultHeaderRowCountProperty></sf:property-map></sf:tabular-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-30" sf:name="bibliomisc" sf:ident="paragraph-style-105"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.80000001192092896" sfa:g="1" sfa:b="1" sfa:a="1"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-31" sf:name="sect1-title" sf:ident="paragraph-style-42"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-32" sf:name="Free Form" sf:ident="paragraph-style-default"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC/><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-33" sf:name="revision" sf:ident="paragraph-style-75"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="1" sfa:b="0.80000001192092896" sfa:a="1"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-34" sf:name="orderedlist2" sf:ident="paragraph-style-100"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-8" sf:parent-ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-27"><sf:number sfa:number="14.17323" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-28"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-54" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-55" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-56" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-57" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-58" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-59" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-60" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-61" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-62" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-29"><sf:number sfa:number="14.17323" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-30"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-54" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-28" sf:type="lower-alpha" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-55" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-29" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-56" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-30" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-57" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-31" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-58" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-32" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-59" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-33" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-60" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-34" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-61" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-35" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-62" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-36" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-35" sf:name="Header &amp; Footer" sf:ident="paragraph-style-37"><sf:property-map><sf:fontSize><sf:number sfa:number="10" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-5"><sf:tabstop sf:pos="468" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-8" sf:name="shortaffil" sf:ident="character-style-31"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:fontName/><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-9" sf:name="revnumber" sf:ident="character-style-18"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor/><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:fontName/><sf:baselineShift/><sf:ligatures/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-36" sf:name="textobject-title" sf:ident="paragraph-style-78"><sf:property-map><sf:fontSize><sf:number sfa:number="13" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-37" sf:name="caution" sf:ident="paragraph-style-16"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-38" sf:name="informalfigure-imagedata" sf:ident="paragraph-style-28"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="Courier-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0.20000000298023224" sfa:b="0.60000002384185791" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-10" sf:name="attribute-name" sf:ident="character-style-2"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:fontName><sf:string sfa:string="Courier-Bold"/></sf:fontName><sf:baselineShift/><sf:capitalization/><sf:textShadow/><sf:strikethru/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-39" sf:name="index-title" sf:ident="paragraph-style-27"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-11" sf:name="pob" sf:ident="character-style-23"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:fontName/><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-12" sf:name="email" sf:ident="character-style-9"><sf:property-map><sf:italic/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="1" sfa:a="1"/></sf:fontColor><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-13" sf:name="inlinegraphic" sf:ident="character-style-25"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0.20000000298023224" sfa:b="0.60000002384185791" sfa:a="1"/></sf:fontColor><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName><sf:string sfa:string="Monaco"/></sf:fontName><sf:baselineShift/><sf:capitalization/><sf:textShadow/><sf:strikethru/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:chart-series-style sfa:ID="SFCSeriesStyle-1" sf:name="Series_3" sf:ident="Series_3" sf:seriesIndex="3"><sf:property-map><sf:SFC2DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC2DPieFillProperty><sf:SFCBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCBarValueLabelPositionProperty><sf:SFC3DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC3DColumnFillProperty><sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:SFC3DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC3DAreaFillProperty><sf:SFCAreaShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCAreaShowValueLabelProperty><sf:SFCLabelShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-3"/></sf:SFCLabelShadowProperty><sf:SFC2DLineDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DLineDataPointSymbolProperty><sf:SFC2DPieStrokeProperty><sf:stroke sfa:ID="SFRStroke-16" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-16" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DPieStrokeProperty><sf:SFC2DScatterShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DScatterShadowProperty><sf:SFC2DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC2DAreaFillProperty><sf:SFC2DLineDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DLineDataPointFillProperty><sf:SFC3DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC3DPieFillProperty><sf:SFC2DLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-17" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-17" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DLineStrokeProperty><sf:SFC2DScatterStrokeProperty><sf:stroke sfa:ID="SFRStroke-18" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-18" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DScatterStrokeProperty><sf:SFC3DSeriesShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFC3DSeriesShininessProperty><sf:SFC2DAreaDataPointSymbolProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFC2DAreaDataPointSymbolProperty><sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:SFC3DSeriesEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DSeriesEmissiveColorProperty><sf:SFC3DTextureTilingProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DTextureTilingProperty><sf:SFC2DLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DLineShadowProperty><sf:SFCPieSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-40" sf:ident="Series_3_SFCPieSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment><sf:number sfa:number="2" sfa:type="i"/></sf:alignment><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCPieSeriesValueParagraphStyleProperty><sf:SFCStackedBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCStackedBarValueLabelPositionProperty><sf:SFC2DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC2DColumnFillProperty><sf:SFC3DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC3DBarFillProperty><sf:SFC2DBarStrokeProperty><sf:stroke sfa:ID="SFRStroke-19" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-19" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DBarStrokeProperty><sf:SFCLabelOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCLabelOpacityProperty><sf:SFC2DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DPieShadowProperty><sf:SFCPieShowValueLabelProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCPieShowValueLabelProperty><sf:SFCPieShowSeriesNameLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCPieShowSeriesNameLabelProperty><sf:SFCLineSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-41" sf:ident="Series_3_SFCLineSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCLineSeriesValueParagraphStyleProperty><sf:SFC2DOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DOpacityProperty><sf:SFCLineValueLabelPositionProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCLineValueLabelPositionProperty><sf:SFCPieValueLabelPositionProperty><sf:number sfa:number="13" sfa:type="i"/></sf:SFCPieValueLabelPositionProperty><sf:SFCLineShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCLineShowValueLabelProperty><sf:SFC2DAreaDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DAreaDataPointFillProperty><sf:SFCStackedAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCStackedAreaValueLabelPositionProperty><sf:SFC2DAreaShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DAreaShadowProperty><sf:SFC3DSeriesSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.89999997615814209" sfa:g="0.89999997615814209" sfa:b="0.89999997615814209" sfa:a="1"/></sf:SFC3DSeriesSpecularColorProperty><sf:SFC2DScatterDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DScatterDataPointSymbolProperty><sf:SFC2DBarShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DBarShadowProperty><sf:SFCBarSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-42" sf:ident="Series_3_SFCBarSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCBarSeriesValueParagraphStyleProperty><sf:SFC2DScatterDataPointFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC2DScatterDataPointFillProperty><sf:SFC2DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC2DBarFillProperty><sf:SFCBarShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCBarShowValueLabelProperty><sf:SFC2DAreaStrokeProperty><sf:stroke sfa:ID="SFRStroke-20" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern-ref sfa:IDREF="SFRStrokePattern-15"/></sf:stroke></sf:SFC2DAreaStrokeProperty><sf:SFCAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCAreaValueLabelPositionProperty><sf:SFC3DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-4"/></sf:SFC3DPieShadowProperty><sf:SFC3DTextureProperty><sf:string sfa:string=""/></sf:SFC3DTextureProperty><sf:SFCAreaSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-43" sf:ident="Series_3_SFCAreaSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCAreaSeriesValueParagraphStyleProperty><sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:SFC3DLineFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.75686275959014893" sfa:g="0.047058824449777603" sfa:b="0.12941177189350128" sfa:a="1"/></sf:SFC3DLineFillProperty><sf:SFCPieWedgeExplosionProperty><sf:number sfa:number="0" sfa:type="f"/></sf:SFCPieWedgeExplosionProperty></sf:property-map></sf:chart-series-style><sf:characterstyle sfa:ID="SFWPCharacterStyle-14" sf:name="citetitle" sf:ident="character-style-28"><sf:property-map><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:fontSize/><sf:fontColor/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:tracking/><sf:fontName/><sf:baselineShift/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:ligatures/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:chart-series-style sfa:ID="SFCSeriesStyle-2" sf:name="Series_5" sf:ident="Series_5" sf:seriesIndex="5"><sf:property-map><sf:SFC2DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC2DPieFillProperty><sf:SFCBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCBarValueLabelPositionProperty><sf:SFC3DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC3DColumnFillProperty><sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:SFC3DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC3DAreaFillProperty><sf:SFCAreaShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCAreaShowValueLabelProperty><sf:SFCLabelShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-3"/></sf:SFCLabelShadowProperty><sf:SFC2DLineDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DLineDataPointSymbolProperty><sf:SFC2DPieStrokeProperty><sf:stroke sfa:ID="SFRStroke-21" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-20" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DPieStrokeProperty><sf:SFC2DScatterShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DScatterShadowProperty><sf:SFC2DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC2DAreaFillProperty><sf:SFC2DLineDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DLineDataPointFillProperty><sf:SFC3DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC3DPieFillProperty><sf:SFC2DLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-22" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-21" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DLineStrokeProperty><sf:SFC2DScatterStrokeProperty><sf:stroke sfa:ID="SFRStroke-23" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-22" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DScatterStrokeProperty><sf:SFC3DSeriesShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFC3DSeriesShininessProperty><sf:SFC2DAreaDataPointSymbolProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFC2DAreaDataPointSymbolProperty><sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:SFC3DSeriesEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DSeriesEmissiveColorProperty><sf:SFC3DTextureTilingProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DTextureTilingProperty><sf:SFC2DLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DLineShadowProperty><sf:SFCPieSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-44" sf:ident="Series_5_SFCPieSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment><sf:number sfa:number="2" sfa:type="i"/></sf:alignment><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCPieSeriesValueParagraphStyleProperty><sf:SFCStackedBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCStackedBarValueLabelPositionProperty><sf:SFC2DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC2DColumnFillProperty><sf:SFC3DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC3DBarFillProperty><sf:SFC2DBarStrokeProperty><sf:stroke sfa:ID="SFRStroke-24" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-23" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DBarStrokeProperty><sf:SFCLabelOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCLabelOpacityProperty><sf:SFC2DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DPieShadowProperty><sf:SFCPieShowValueLabelProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCPieShowValueLabelProperty><sf:SFCPieShowSeriesNameLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCPieShowSeriesNameLabelProperty><sf:SFCLineSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-45" sf:ident="Series_5_SFCLineSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCLineSeriesValueParagraphStyleProperty><sf:SFC2DOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DOpacityProperty><sf:SFCLineValueLabelPositionProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCLineValueLabelPositionProperty><sf:SFCPieValueLabelPositionProperty><sf:number sfa:number="13" sfa:type="i"/></sf:SFCPieValueLabelPositionProperty><sf:SFCLineShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCLineShowValueLabelProperty><sf:SFC2DAreaDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DAreaDataPointFillProperty><sf:SFCStackedAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCStackedAreaValueLabelPositionProperty><sf:SFC2DAreaShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DAreaShadowProperty><sf:SFC3DSeriesSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.89999997615814209" sfa:g="0.89999997615814209" sfa:b="0.89999997615814209" sfa:a="1"/></sf:SFC3DSeriesSpecularColorProperty><sf:SFC2DScatterDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DScatterDataPointSymbolProperty><sf:SFC2DBarShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DBarShadowProperty><sf:SFCBarSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-46" sf:ident="Series_5_SFCBarSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCBarSeriesValueParagraphStyleProperty><sf:SFC2DScatterDataPointFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC2DScatterDataPointFillProperty><sf:SFC2DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC2DBarFillProperty><sf:SFCBarShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCBarShowValueLabelProperty><sf:SFC2DAreaStrokeProperty><sf:stroke sfa:ID="SFRStroke-25" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern-ref sfa:IDREF="SFRStrokePattern-15"/></sf:stroke></sf:SFC2DAreaStrokeProperty><sf:SFCAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCAreaValueLabelPositionProperty><sf:SFC3DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-4"/></sf:SFC3DPieShadowProperty><sf:SFC3DTextureProperty><sf:string sfa:string=""/></sf:SFC3DTextureProperty><sf:SFCAreaSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-47" sf:ident="Series_5_SFCAreaSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCAreaSeriesValueParagraphStyleProperty><sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:SFC3DLineFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.92941176891326904" sfa:g="0.78823530673980713" sfa:b="0.14901961386203766" sfa:a="1"/></sf:SFC3DLineFillProperty><sf:SFCPieWedgeExplosionProperty><sf:number sfa:number="0" sfa:type="f"/></sf:SFCPieWedgeExplosionProperty></sf:property-map></sf:chart-series-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-48" sf:name="legalnotice" sf:ident="paragraph-style-30"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.60000002384185791" sfa:g="0.40000000596046448" sfa:b="0.20000000298023224" sfa:a="0.5"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-49" sf:name="programlisting" sf:ident="paragraph-style-73"><sf:property-map><sf:fontSize><sf:number sfa:number="10" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="CourierNewPSMT"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-20"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-50" sf:name="caution-title" sf:ident="paragraph-style-17"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-9" sf:parent-ident="list-style-default"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-31"><sf:number sfa:number="56.69291" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/><sf:number sfa:number="180" sfa:type="f"/><sf:number sfa:number="216" sfa:type="f"/><sf:number sfa:number="252" sfa:type="f"/><sf:number sfa:number="288" sfa:type="f"/></sf:array></sf:listTextIndents><sf:labelCharacterStyle1><sf:characterstyle-ref sfa:IDREF="SFWPCharacterStyle-4"/></sf:labelCharacterStyle1><sf:listLabelGeometries><sf:array sfa:ID="NSArray-32"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-63" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-64" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-65" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-66" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-67" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-68" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-69" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-70" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-71" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-33"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="0" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-34"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-63" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-37" sf:type="bullet" sf:format="!" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-64" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-65" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-66" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-67" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-68" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-69" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-70" sf:type="none"/><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-71" sf:type="none"/></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-51" sf:name="author" sf:ident="paragraph-style-8"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-15" sf:name="None" sf:ident="character-style-null"><sf:property-map/></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-16" sf:ident="kSLImportStylesHeadingStyleIdentifier" sf:parent-ident="character-style-null"><sf:property-map><sf:fontName><sf:string sfa:string="LucidaGrande"/></sf:fontName><sf:fontSize><sf:number sfa:number="13" sfa:type="f"/></sf:fontSize><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0.5" sfa:a="1"/></sf:fontColor></sf:property-map></sf:characterstyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-10" sf:name="Normal 22" sf:ident="layout-style-20"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:null/></sf:layoutParagraphStyle><sf:columns/><sf:padding/><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:cell-style-ref sfa:IDREF="SFTCellStyle-1"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-52" sf:name="itemizedlist3" sf:ident="paragraph-style-96"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-10" sf:parent-ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-35"><sf:number sfa:number="9.000002" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-36"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-72" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-73" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-74" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-75" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-76" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-77" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-78" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-79" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-80" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-37"><sf:number sfa:number="28.34646" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-38"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-72" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-38" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-73" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-39" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-74" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-40" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-75" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-41" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-76" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-42" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-77" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-43" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-78" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-44" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-79" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-45" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-80" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-46" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-7" sf:name="graphic-line-style-default" sf:ident="graphic-line-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:headLineEnd><sf:null/></sf:headLineEnd><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-6" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:stroke><sf:stroke sfa:ID="SFRStroke-26" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-24" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow><sf:tailLineEnd><sf:null/></sf:tailLineEnd></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-8" sf:name="graphic-line-style-default 3" sf:ident="graphic-line-style-default-2" sf:parent-ident="graphic-line-style-default"><sf:property-map><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-53" sf:name="warning" sf:ident="paragraph-style-60"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="1" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-54" sf:name="tip" sf:ident="paragraph-style-58"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-17" sf:name="jobtitle" sf:ident="character-style-13"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-55" sf:name="variablelist-titleabbrev" sf:ident="paragraph-style-64"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent><sf:number sfa:number="14.18209" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:chart-series-style sfa:ID="SFCSeriesStyle-3" sf:name="Series_4" sf:ident="Series_4" sf:seriesIndex="4"><sf:property-map><sf:SFC2DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC2DPieFillProperty><sf:SFCBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCBarValueLabelPositionProperty><sf:SFC3DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC3DColumnFillProperty><sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:SFC3DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC3DAreaFillProperty><sf:SFCAreaShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCAreaShowValueLabelProperty><sf:SFCLabelShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-3"/></sf:SFCLabelShadowProperty><sf:SFC2DLineDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DLineDataPointSymbolProperty><sf:SFC2DPieStrokeProperty><sf:stroke sfa:ID="SFRStroke-27" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-25" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DPieStrokeProperty><sf:SFC2DScatterShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DScatterShadowProperty><sf:SFC2DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC2DAreaFillProperty><sf:SFC2DLineDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DLineDataPointFillProperty><sf:SFC3DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC3DPieFillProperty><sf:SFC2DLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-28" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-26" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DLineStrokeProperty><sf:SFC2DScatterStrokeProperty><sf:stroke sfa:ID="SFRStroke-29" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-27" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DScatterStrokeProperty><sf:SFC3DSeriesShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFC3DSeriesShininessProperty><sf:SFC2DAreaDataPointSymbolProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFC2DAreaDataPointSymbolProperty><sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:SFC3DSeriesEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DSeriesEmissiveColorProperty><sf:SFC3DTextureTilingProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DTextureTilingProperty><sf:SFC2DLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DLineShadowProperty><sf:SFCPieSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-56" sf:ident="Series_4_SFCPieSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment><sf:number sfa:number="2" sfa:type="i"/></sf:alignment><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCPieSeriesValueParagraphStyleProperty><sf:SFCStackedBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCStackedBarValueLabelPositionProperty><sf:SFC2DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC2DColumnFillProperty><sf:SFC3DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC3DBarFillProperty><sf:SFC2DBarStrokeProperty><sf:stroke sfa:ID="SFRStroke-30" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-28" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DBarStrokeProperty><sf:SFCLabelOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCLabelOpacityProperty><sf:SFC2DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DPieShadowProperty><sf:SFCPieShowValueLabelProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCPieShowValueLabelProperty><sf:SFCPieShowSeriesNameLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCPieShowSeriesNameLabelProperty><sf:SFCLineSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-57" sf:ident="Series_4_SFCLineSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCLineSeriesValueParagraphStyleProperty><sf:SFC2DOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DOpacityProperty><sf:SFCLineValueLabelPositionProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCLineValueLabelPositionProperty><sf:SFCPieValueLabelPositionProperty><sf:number sfa:number="13" sfa:type="i"/></sf:SFCPieValueLabelPositionProperty><sf:SFCLineShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCLineShowValueLabelProperty><sf:SFC2DAreaDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DAreaDataPointFillProperty><sf:SFCStackedAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCStackedAreaValueLabelPositionProperty><sf:SFC2DAreaShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DAreaShadowProperty><sf:SFC3DSeriesSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.89999997615814209" sfa:g="0.89999997615814209" sfa:b="0.89999997615814209" sfa:a="1"/></sf:SFC3DSeriesSpecularColorProperty><sf:SFC2DScatterDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DScatterDataPointSymbolProperty><sf:SFC2DBarShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DBarShadowProperty><sf:SFCBarSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-58" sf:ident="Series_4_SFCBarSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCBarSeriesValueParagraphStyleProperty><sf:SFC2DScatterDataPointFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC2DScatterDataPointFillProperty><sf:SFC2DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC2DBarFillProperty><sf:SFCBarShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCBarShowValueLabelProperty><sf:SFC2DAreaStrokeProperty><sf:stroke sfa:ID="SFRStroke-31" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern-ref sfa:IDREF="SFRStrokePattern-15"/></sf:stroke></sf:SFC2DAreaStrokeProperty><sf:SFCAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCAreaValueLabelPositionProperty><sf:SFC3DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-4"/></sf:SFC3DPieShadowProperty><sf:SFC3DTextureProperty><sf:string sfa:string=""/></sf:SFC3DTextureProperty><sf:SFCAreaSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-59" sf:ident="Series_4_SFCAreaSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCAreaSeriesValueParagraphStyleProperty><sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:SFC3DLineFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.90196079015731812" sfa:g="0.55686277151107788" sfa:b="0.14117647707462311" sfa:a="1"/></sf:SFC3DLineFillProperty><sf:SFCPieWedgeExplosionProperty><sf:number sfa:number="0" sfa:type="f"/></sf:SFCPieWedgeExplosionProperty></sf:property-map></sf:chart-series-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-60" sf:name="sect5-subtitle" sf:ident="paragraph-style-51"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-18" sf:name="otheraddr" sf:ident="character-style-30"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:fontName><sf:string sfa:string="CourierNewPS-BoldMT"/></sf:fontName><sf:baselineShift/><sf:ligatures/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-61" sf:name="tip-title" sf:ident="paragraph-style-59"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:cell-style-ref sfa:IDREF="SFTCellStyle-3"/><sf:graphic-style sfa:ID="SFDGraphicStyle-9" sf:name="graphic-shape-style-default" sf:ident="graphic-shape-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-7" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-32" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-29" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-10" sf:name="graphic-shape-style-default 8" sf:ident="graphic-shape-style-default-7" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-11" sf:name="graphic-shape-style-default 3" sf:ident="graphic-shape-style-default-2" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-12" sf:name="graphic-shape-style-default 2" sf:ident="graphic-shape-style-default-1" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:device-cmyk-color-type" sfa:c="0" sfa:m="0" sfa:y="0" sfa:k="0.34999999403953552" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-13" sf:name="graphic-shape-style-default 7" sf:ident="graphic-shape-style-default-6" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-14" sf:name="graphic-shape-style-default 4" sf:ident="graphic-shape-style-default-3" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:characterstyle sfa:ID="SFWPCharacterStyle-19" sf:name="lineage" sf:ident="character-style-14"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor/><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName/><sf:baselineShift/><sf:capitalization/><sf:textShadow/><sf:strikethru/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-62" sf:ident="chart-paragraph-style-default"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC/><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:italic/><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:word_underline/><sf:decimalTab/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-41"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-63" sf:ident="Series_1_SFCBarSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-57"/><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-56"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-64" sf:ident="Series_2_SFCLineSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-65" sf:ident="SFCValueAxisParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-59"/><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-47"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-66" sf:ident="Series_2_SFCBarSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-45"/><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-24"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-67" sf:ident="Series_1_SFCPieSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment><sf:number sfa:number="2" sfa:type="i"/></sf:alignment><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-68" sf:ident="SFCValueAxisTitleParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC/><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:italic/><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-69" sf:ident="SFCLegendParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-58"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-70" sf:ident="Series_1_SFCLineSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-71" sf:ident="SFCCategoryAxisTitleParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC/><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:italic/><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-42"/><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-44"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-72" sf:name="orderedlist1" sf:ident="paragraph-style-99"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-11" sf:parent-ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-39"><sf:number sfa:number="14.17323" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-40"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-81" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-82" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-83" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-84" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-85" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-86" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-87" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-88" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-89" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-41"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-42"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-81" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-47" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-82" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-48" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-83" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-49" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-84" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-50" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-85" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-51" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-86" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-52" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-87" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-53" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-88" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-54" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-89" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-55" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-23"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-73" sf:name="variablelist-term" sf:ident="paragraph-style-62"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="Courier"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-5" sfa:sfclass="paragraphstyle" sf:name="TOC Heading 3" sf:ident="toc-paragraph-style-3"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:firstTopicNumber/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic><sf:number sfa:number="1" sfa:type="c"/></sf:italic><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-6"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.34646" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.34646" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:tocstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-20" sf:name="literal" sf:ident="character-style-24"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName><sf:string sfa:string="Courier"/></sf:fontName><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-21" sf:name="country" sf:ident="character-style-7"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:chart-series-style sfa:ID="SFCSeriesStyle-4" sf:name="Series_1" sf:ident="Series_1" sf:seriesIndex="1"><sf:property-map><sf:SFC2DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC2DPieFillProperty><sf:SFCBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCBarValueLabelPositionProperty><sf:SFC3DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC3DColumnFillProperty><sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:SFC3DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC3DAreaFillProperty><sf:SFCAreaShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCAreaShowValueLabelProperty><sf:SFCLabelShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-3"/></sf:SFCLabelShadowProperty><sf:SFC2DLineDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DLineDataPointSymbolProperty><sf:SFC2DPieStrokeProperty><sf:stroke sfa:ID="SFRStroke-33" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-30" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DPieStrokeProperty><sf:SFC2DScatterShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DScatterShadowProperty><sf:SFC2DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC2DAreaFillProperty><sf:SFC2DLineDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DLineDataPointFillProperty><sf:SFC3DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC3DPieFillProperty><sf:SFC2DLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-34" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-31" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DLineStrokeProperty><sf:SFC2DScatterStrokeProperty><sf:stroke sfa:ID="SFRStroke-35" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-32" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DScatterStrokeProperty><sf:SFC3DSeriesShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFC3DSeriesShininessProperty><sf:SFC2DAreaDataPointSymbolProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFC2DAreaDataPointSymbolProperty><sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:SFC3DSeriesEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DSeriesEmissiveColorProperty><sf:SFC3DTextureTilingProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DTextureTilingProperty><sf:SFC2DLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DLineShadowProperty><sf:SFCPieSeriesValueParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-67"/></sf:SFCPieSeriesValueParagraphStyleProperty><sf:SFCStackedBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCStackedBarValueLabelPositionProperty><sf:SFC2DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC2DColumnFillProperty><sf:SFC3DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC3DBarFillProperty><sf:SFC2DBarStrokeProperty><sf:stroke sfa:ID="SFRStroke-36" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-33" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DBarStrokeProperty><sf:SFCLabelOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCLabelOpacityProperty><sf:SFC2DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DPieShadowProperty><sf:SFCPieShowValueLabelProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCPieShowValueLabelProperty><sf:SFCPieShowSeriesNameLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCPieShowSeriesNameLabelProperty><sf:SFCLineSeriesValueParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-70"/></sf:SFCLineSeriesValueParagraphStyleProperty><sf:SFC2DOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DOpacityProperty><sf:SFCLineValueLabelPositionProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCLineValueLabelPositionProperty><sf:SFCPieValueLabelPositionProperty><sf:number sfa:number="13" sfa:type="i"/></sf:SFCPieValueLabelPositionProperty><sf:SFCLineShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCLineShowValueLabelProperty><sf:SFC2DAreaDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DAreaDataPointFillProperty><sf:SFCStackedAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCStackedAreaValueLabelPositionProperty><sf:SFC2DAreaShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DAreaShadowProperty><sf:SFC3DSeriesSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.89999997615814209" sfa:g="0.89999997615814209" sfa:b="0.89999997615814209" sfa:a="1"/></sf:SFC3DSeriesSpecularColorProperty><sf:SFC2DScatterDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DScatterDataPointSymbolProperty><sf:SFC2DBarShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DBarShadowProperty><sf:SFCBarSeriesValueParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-63"/></sf:SFCBarSeriesValueParagraphStyleProperty><sf:SFC2DScatterDataPointFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC2DScatterDataPointFillProperty><sf:SFC2DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC2DBarFillProperty><sf:SFCBarShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCBarShowValueLabelProperty><sf:SFC2DAreaStrokeProperty><sf:stroke sfa:ID="SFRStroke-37" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern-ref sfa:IDREF="SFRStrokePattern-15"/></sf:stroke></sf:SFC2DAreaStrokeProperty><sf:SFCAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCAreaValueLabelPositionProperty><sf:SFC3DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-4"/></sf:SFC3DPieShadowProperty><sf:SFC3DTextureProperty><sf:string sfa:string=""/></sf:SFC3DTextureProperty><sf:SFCAreaSeriesValueParagraphStyleProperty><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-74" sf:ident="Series_1_SFCAreaSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:SFCAreaSeriesValueParagraphStyleProperty><sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:SFC3DLineFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16862745583057404" sfa:g="0.4117647111415863" sfa:b="0.56862747669219971" sfa:a="1"/></sf:SFC3DLineFillProperty><sf:SFCPieWedgeExplosionProperty><sf:number sfa:number="0" sfa:type="f"/></sf:SFCPieWedgeExplosionProperty></sf:property-map></sf:chart-series-style><sf:characterstyle sfa:ID="SFWPCharacterStyle-22" sf:name="ulink" sf:ident="character-style-17"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="1" sfa:a="1"/></sf:fontColor><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:tracking/><sf:fontName/><sf:baselineShift/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:ligatures/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-75" sf:name="figure-title" sf:ident="paragraph-style-67"><sf:property-map><sf:fontSize><sf:number sfa:number="13" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent><sf:number sfa:number="28.34646" sfa:type="f"/></sf:rightIndent><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-76" sf:name="itemizedlist4" sf:ident="paragraph-style-97"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-12" sf:parent-ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-43"><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-44"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-90" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-91" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-92" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-93" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-94" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-95" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-96" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-97" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-98" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-45"><sf:number sfa:number="42.51968" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-46"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-90" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-56" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-91" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-57" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-92" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-58" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-93" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-59" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-94" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-60" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-95" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-61" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-96" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-62" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-97" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-63" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-98" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-64" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-77" sf:name="keyword" sf:ident="paragraph-style-20"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="0.80000001192092896" sfa:b="0.40000000596046448" sfa:a="1"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-23" sf:name="inlineerror" sf:ident="character-style-12"><sf:property-map><sf:italic/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-78" sf:name="affiliation" sf:ident="paragraph-style-5"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-79" sf:name="warning-title" sf:ident="paragraph-style-61"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="1" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-24" sf:name="surname" sf:ident="character-style-29"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:fontName/><sf:baselineShift/><sf:ligatures/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-80" sf:name="bibliodiv-title" sf:ident="paragraph-style-93"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="14.17323" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="14.17323" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-25" sf:name="sgmltag" sf:ident="character-style-22"><sf:property-map><sf:italic/><sf:fontSize/><sf:fontColor/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:fontName><sf:string sfa:string="Courier-Bold"/></sf:fontName><sf:baselineShift/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:ligatures/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-26" sf:name="honorific" sf:ident="character-style-11"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-40"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-81" sf:name="Footnote Text" sf:ident="kSFWPFootnoteTextStyleIdentifier"><sf:property-map><sf:fontSize><sf:number sfa:number="10" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="10" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-82" sf:name="preface-title" sf:ident="paragraph-style-40"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-83" sf:ident="SFCCategoryAxisParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-84" sf:ident="Series_2_SFCPieSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment><sf:number sfa:number="2" sfa:type="i"/></sf:alignment><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-27" sf:name="fax" sf:ident="character-style-8"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName><sf:string sfa:string="Courier"/></sf:fontName><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-15" sf:name="graphic-image-style-default" sf:ident="graphic-image-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-8" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-38" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-34" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-16" sf:name="graphic-image-style-default 3" sf:ident="graphic-image-style-default-2" sf:parent-ident="graphic-image-style-default"><sf:property-map><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-85" sf:name="xinclude" sf:ident="paragraph-style-85"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.80000001192092896" sfa:g="0.20000000298023224" sfa:b="0.20000000298023224" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.20000000298023224" sfa:g="0.20000000298023224" sfa:b="0.20000000298023224" sfa:a="1"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-86" sf:name="bibliography-title" sf:ident="paragraph-style-9"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-87" sf:name="simpara" sf:ident="paragraph-style-55"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-88" sf:name="book-title" sf:ident="paragraph-style-3"><sf:property-map><sf:fontSize><sf:number sfa:number="28" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-4"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="24" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-17" sf:name="graphic-movie-style-default" sf:ident="graphic-movie-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-9" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-39" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-35" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-18" sf:name="graphic-movie-style-default 2" sf:ident="graphic-movie-style-default-1" sf:parent-ident="graphic-movie-style-default"><sf:property-map><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-43"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-89" sf:name="abstract-title" sf:ident="paragraph-style-88"><sf:property-map><sf:fontSize><sf:number sfa:number="15" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-28" sf:name="firstname" sf:ident="character-style-10"><sf:property-map><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-90" sf:name="note" sf:ident="paragraph-style-31"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:sectionstyle sfa:ID="SFWPSectionStyle-3" sf:name="Normal" sf:ident="section-style-default"><sf:property-map><sf:sectionLayoutStyle><sf:null/></sf:sectionLayoutStyle><sf:inheritPreviousHF><sf:number sfa:number="1" sfa:type="c"/></sf:inheritPreviousHF><sf:sectionPageNumberStart><sf:number sfa:number="1" sfa:type="i"/></sf:sectionPageNumberStart><sf:pageMasterFirstPageDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterFirstPageDifferent><sf:firstPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-6" sl:header="SFWPDefaultFirstHeaderIdentifier" sl:footer="SFWPDefaultFirstFooterIdentifier"/></sf:firstPageMaster><sf:evenPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-7" sl:header="SFWPDefaultEvenHeaderIdentifier" sl:footer="SFWPDefaultEvenFooterIdentifier"/></sf:evenPageMaster><sf:startKind><sf:number sfa:number="0" sfa:type="i"/></sf:startKind><sf:pageMasterLeftRightPagesDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterLeftRightPagesDifferent><sf:sectionPageNumberKind><sf:number sfa:number="0" sfa:type="i"/></sf:sectionPageNumberKind><sf:oddPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-8" sl:header="SFWPDefaultOddHeaderIdentifier" sl:footer="SFWPDefaultOddFooterIdentifier"/></sf:oddPageMaster></sf:property-map></sf:sectionstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-29" sf:name="postcode" sf:ident="character-style-27"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:bold/><sf:fontName/><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-91" sf:name="important-title" sf:ident="paragraph-style-26"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-9"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="1" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-92" sf:name="sect4-title" sf:ident="paragraph-style-48"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-93" sf:ident="SFCChartTitleParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC/><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:italic/><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-94" sf:name="example-title" sf:ident="paragraph-style-66"><sf:property-map><sf:fontSize><sf:number sfa:number="13" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent><sf:number sfa:number="28.34646" sfa:type="f"/></sf:rightIndent><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:liststyle sfa:ID="SFWPListStyle-13" sf:name="Legal" sf:ident="list-style-4"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-47"><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="32.4" sfa:type="f"/><sf:number sfa:number="43.2" sfa:type="f"/><sf:number sfa:number="52.56" sfa:type="f"/><sf:number sfa:number="62.64" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="82.79999" sfa:type="f"/><sf:number sfa:number="92.16" sfa:type="f"/><sf:number sfa:number="102.96" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-48"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-99" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-100" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-101" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-102" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-103" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-104" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-105" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-106" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-107" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-49"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-50"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-99" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-65" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-100" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-66" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-101" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-67" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-102" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-68" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-103" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-69" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-104" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-70" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-105" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-71" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-106" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-72" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-107" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-73" sf:type="decimal" sf:format="%P%L." sf:first="1"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle><sf:graphic-style sfa:ID="SFDGraphicStyle-19" sf:name="graphic-textbox-style-default" sf:ident="graphic-textbox-style-default"><sf:property-map><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:reflection><sf:null/></sf:reflection><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-10" sf:wrap-style="regular" sf:floating-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="aligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:stroke><sf:stroke sfa:ID="SFRStroke-40" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-36" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:null/></sf:fill><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-20" sf:name="graphic-textbox-style-default 4" sf:ident="graphic-textbox-style-default-3" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:stroke><sf:stroke sfa:ID="SFRStroke-41" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-37" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:fill><sf:null/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-21" sf:name="graphic-textbox-style-default 3" sf:ident="graphic-textbox-style-default-2" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:stroke><sf:stroke sfa:ID="SFRStroke-42" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-38" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:fill><sf:null/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-22" sf:name="graphic-textbox-style-default 9" sf:ident="graphic-textbox-style-default-8" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-23" sf:name="graphic-textbox-style-default 6" sf:ident="graphic-textbox-style-default-5" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:stroke><sf:stroke sfa:ID="SFRStroke-43" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-39" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:fill><sf:null/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-24" sf:name="graphic-textbox-style-default 5" sf:ident="graphic-textbox-style-default-4" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:stroke><sf:stroke sfa:ID="SFRStroke-44" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-40" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:fill><sf:null/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-25" sf:name="graphic-textbox-style-default 8" sf:ident="graphic-textbox-style-default-7" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-6"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-95" sf:ident="Series_2_SFCAreaSeriesValueParagraphStyleProperty" sf:parent-ident="chart-paragraph-style-default"><sf:property-map><sf:outline/><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:word_underline/><sf:decimalTab/><sf:word_strikethrough/><sf:keepLinesTogether/><sf:spaceAfter/><sf:alignment/><sf:fontSize><sf:number sfa:number="14" sfa:type="i"/></sf:fontSize><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:dropCap/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops/><sf:tocStyle><sf:null/></sf:tocStyle><sf:firstTopicNumber/><sf:outlineLevel/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:superscript/><sf:hyphenate/><sf:underlineColor><sf:null/></sf:underlineColor><sf:hidden/><sf:showInTOC/><sf:kerning/><sf:pageBreakBefore/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:fontColor><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:capitalization/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-26" sf:name="graphic-line-style-default 2" sf:ident="graphic-line-style-default-1" sf:parent-ident="graphic-line-style-default"><sf:property-map><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:characterstyle sfa:ID="SFWPCharacterStyle-30" sf:name="phone" sf:ident="character-style-21"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:fontName><sf:string sfa:string="CourierNewPSMT"/></sf:fontName><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-96" sf:name="glossary-title" sf:ident="paragraph-style-24"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-27" sf:name="graphic-image-style-default 2" sf:ident="graphic-image-style-default-1" sf:parent-ident="graphic-image-style-default"><sf:property-map><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:liststyle sfa:ID="SFWPListStyle-14" sf:name="Numbered List" sf:ident="list-style-1"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-51"><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-52"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-108" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-109" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-110" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-111" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-112" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-113" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-114" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-115" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-116" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-53"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-54"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-108" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-74" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-109" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-75" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-110" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-76" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-111" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-77" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-112" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-78" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-113" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-79" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-114" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-80" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-115" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-81" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-116" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-82" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-46"/><sf:characterstyle sfa:ID="SFWPCharacterStyle-31" sf:name="orgname" sf:ident="character-style-26"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-97" sf:name="sect4-subtitle" sf:ident="paragraph-style-49"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-98" sf:name="part-title" sf:ident="paragraph-style-86"><sf:property-map><sf:fontSize><sf:number sfa:number="28" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-4"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="24" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-32" sf:name="othername" sf:ident="character-style-20"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:fontName/><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-28" sf:name="graphic-shape-style-default 6" sf:ident="graphic-shape-style-default-5" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:sectionstyle sfa:ID="SFWPSectionStyle-4" sf:name="Normal 2" sf:ident="section-style-0"><sf:property-map><sf:sectionLayoutStyle><sf:null/></sf:sectionLayoutStyle><sf:inheritPreviousHF><sf:number sfa:number="1" sfa:type="c"/></sf:inheritPreviousHF><sf:sectionPageNumberStart><sf:number sfa:number="1" sfa:type="i"/></sf:sectionPageNumberStart><sf:pageMasterFirstPageDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterFirstPageDifferent><sf:firstPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-9" sl:header="" sl:footer=""/></sf:firstPageMaster><sf:evenPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-10" sl:header="" sl:footer=""/></sf:evenPageMaster><sf:startKind><sf:number sfa:number="0" sfa:type="i"/></sf:startKind><sf:pageMasterLeftRightPagesDifferent><sf:number sfa:number="0" sfa:type="c"/></sf:pageMasterLeftRightPagesDifferent><sf:sectionPageNumberKind><sf:number sfa:number="0" sfa:type="i"/></sf:sectionPageNumberKind><sf:oddPageMaster><sf:pagemaster sfa:ID="SFWPPageMaster-11" sl:header="" sl:footer=""/></sf:oddPageMaster></sf:property-map></sf:sectionstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-99" sf:name="publisher-address" sf:ident="paragraph-style-21"><sf:property-map><sf:fontSize><sf:number sfa:number="11" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="Palatino-Roman"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-100" sf:name="table-title" sf:ident="paragraph-style-52"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-33" sf:name="city" sf:ident="character-style-5"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:fontName/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:baselineShift/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-101" sf:name="releaseinfo" sf:ident="paragraph-style-41"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="1" sfa:g="0.5" sfa:b="0" sfa:a="0.25"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-102" sf:name="simplesect-subtitle" sf:ident="paragraph-style-57"><sf:property-map><sf:fontSize><sf:number sfa:number="15" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-103" sf:name="blockquote" sf:ident="paragraph-style-11"><sf:property-map><sf:fontSize><sf:number sfa:number="11" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName><sf:string sfa:string="Helvetica-Oblique"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic><sf:number sfa:number="1" sfa:type="c"/></sf:italic><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:cell-style-ref sfa:IDREF="SFTCellStyle-2"/><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-104" sf:name="article-title" sf:ident="paragraph-style-38"><sf:property-map><sf:fontSize><sf:number sfa:number="28" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-4"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="24" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-105" sf:name="note-title" sf:ident="paragraph-style-34"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-6" sfa:sfclass="paragraphstyle" sf:name="TOC Heading 4" sf:ident="toc-paragraph-style-4"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:firstTopicNumber/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-7"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="42.51968" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="42.51968" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:tocstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-34" sf:name="state" sf:ident="character-style-32"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:fontName/><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic/><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-29" sf:name="graphic-shape-style-default 5" sf:ident="graphic-shape-style-default-4" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:layoutstyle sfa:ID="SFWPLayoutStyle-11" sf:name="Normal" sf:ident="layout-style-default"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:null/></sf:layoutParagraphStyle><sf:columns/><sf:padding/><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:layoutstyle sfa:ID="SFWPLayoutStyle-12" sf:ident="graphic-textbox-layout-style-default" sf:parent-ident="layout-style-default"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-32"/></sf:layoutParagraphStyle><sf:columns/><sf:padding/><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:layoutstyle-ref sfa:IDREF="SFWPLayoutStyle-6"/><sf:layoutstyle sfa:ID="SFWPLayoutStyle-13" sf:ident="graphic-shape-layout-style-default" sf:parent-ident="layout-style-default"><sf:property-map><sf:verticalAlignment/><sf:layoutParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-32"/></sf:layoutParagraphStyle><sf:columns/><sf:padding><sf:padding sfa:ID="SFWPPadding-4" sf:top="8" sf:left="8" sf:bottom="8" sf:right="8"/></sf:padding><sf:layoutMargins/><sf:followingLayoutStyle><sf:null/></sf:followingLayoutStyle><sf:layoutContinuous/></sf:property-map></sf:layoutstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-35" sf:name="street" sf:ident="character-style-33"><sf:property-map><sf:underlineColor><sf:null/></sf:underlineColor><sf:fontColor/><sf:fontSize/><sf:textBackground><sf:null/></sf:textBackground><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold/><sf:fontName/><sf:ligatures/><sf:strikethru/><sf:baselineShift/><sf:tracking/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-106" sf:name="bridgehead" sf:ident="paragraph-style-110"><sf:property-map><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-107" sf:name="abstract" sf:ident="paragraph-style-87"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic><sf:number sfa:number="1" sfa:type="i"/></sf:italic><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:characterstyle sfa:ID="SFWPCharacterStyle-36" sf:name="emphasis-bold" sf:ident="character-style-15"><sf:property-map><sf:italic/><sf:fontColor/><sf:fontSize/><sf:atsuFontFeatures/><sf:superscript/><sf:underline/><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:fontName/><sf:baselineShift/><sf:strikethru/><sf:capitalization/><sf:textShadow/><sf:language><sf:string sfa:string="en"/></sf:language><sf:underlineColor><sf:null/></sf:underlineColor><sf:strikethruColor><sf:null/></sf:strikethruColor></sf:property-map></sf:characterstyle><sf:liststyle sfa:ID="SFWPListStyle-15" sf:name="Harvard" sf:ident="list-style-7"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-55"><sf:number sfa:number="23.4" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="23.4" sfa:type="f"/><sf:number sfa:number="23.4" sfa:type="f"/><sf:number sfa:number="17.99999" sfa:type="f"/><sf:number sfa:number="23.39999" sfa:type="f"/><sf:number sfa:number="23.39999" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-56"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-117" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-118" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-119" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-120" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-121" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-122" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-123" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-124" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-125" sf:align="left" sf:scale="1" sf:offset="0" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-57"><sf:number sfa:number="0" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="95.4" sfa:type="f"/><sf:number sfa:number="118.8" sfa:type="f"/><sf:number sfa:number="136.8" sfa:type="f"/><sf:number sfa:number="160.2" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-58"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-117" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-83" sf:type="upper-roman" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-118" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-84" sf:type="upper-alpha" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-119" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-85" sf:type="decimal" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-120" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-86" sf:type="lower-alpha" sf:format="%L)" sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-121" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-87" sf:type="decimal" sf:format="(%L)" sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-122" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-88" sf:type="lower-alpha" sf:format="(%L)" sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-123" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-89" sf:type="lower-roman" sf:format="%L)" sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-124" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-90" sf:type="decimal" sf:format="(%L)" sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-125" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-91" sf:type="lower-alpha" sf:format="(%L)" sf:first="1"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle><sf:graphic-style sfa:ID="SFDGraphicStyle-30" sf:name="graphic-shape-style-default 9" sf:ident="graphic-shape-style-default-8" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:chart-series-style sfa:ID="SFCSeriesStyle-5" sf:name="Series_2" sf:ident="Series_2" sf:seriesIndex="2"><sf:property-map><sf:SFC2DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC2DPieFillProperty><sf:SFCBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCBarValueLabelPositionProperty><sf:SFC3DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC3DColumnFillProperty><sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DAreaUseSeriesFillForDataPointFillProperty><sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseSeriesFillForDataPointFillProperty><sf:SFC3DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC3DAreaFillProperty><sf:SFCAreaShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCAreaShowValueLabelProperty><sf:SFCLabelShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-3"/></sf:SFCLabelShadowProperty><sf:SFC2DLineDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DLineDataPointSymbolProperty><sf:SFC2DPieStrokeProperty><sf:stroke sfa:ID="SFRStroke-45" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-41" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DPieStrokeProperty><sf:SFC2DScatterShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DScatterShadowProperty><sf:SFC2DAreaFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC2DAreaFillProperty><sf:SFC2DLineDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DLineDataPointFillProperty><sf:SFC3DPieFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC3DPieFillProperty><sf:SFC2DLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-46" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-42" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DLineStrokeProperty><sf:SFC2DScatterStrokeProperty><sf:stroke sfa:ID="SFRStroke-47" sf:miter-limit="4" sf:width="4" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-43" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DScatterStrokeProperty><sf:SFC3DSeriesShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFC3DSeriesShininessProperty><sf:SFC2DAreaDataPointSymbolProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFC2DAreaDataPointSymbolProperty><sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DAreaUseStrokeColorForDataPointFillProperty><sf:SFC3DSeriesEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DSeriesEmissiveColorProperty><sf:SFC3DTextureTilingProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DTextureTilingProperty><sf:SFC2DLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DLineShadowProperty><sf:SFCPieSeriesValueParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-84"/></sf:SFCPieSeriesValueParagraphStyleProperty><sf:SFCStackedBarValueLabelPositionProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCStackedBarValueLabelPositionProperty><sf:SFC2DColumnFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC2DColumnFillProperty><sf:SFC3DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC3DBarFillProperty><sf:SFC2DBarStrokeProperty><sf:stroke sfa:ID="SFRStroke-48" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-44" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DBarStrokeProperty><sf:SFCLabelOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCLabelOpacityProperty><sf:SFC2DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DPieShadowProperty><sf:SFCPieShowValueLabelProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCPieShowValueLabelProperty><sf:SFCPieShowSeriesNameLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCPieShowSeriesNameLabelProperty><sf:SFCLineSeriesValueParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-64"/></sf:SFCLineSeriesValueParagraphStyleProperty><sf:SFC2DOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DOpacityProperty><sf:SFCLineValueLabelPositionProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCLineValueLabelPositionProperty><sf:SFCPieValueLabelPositionProperty><sf:number sfa:number="13" sfa:type="i"/></sf:SFCPieValueLabelPositionProperty><sf:SFCLineShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCLineShowValueLabelProperty><sf:SFC2DAreaDataPointFillProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/></sf:SFC2DAreaDataPointFillProperty><sf:SFCStackedAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCStackedAreaValueLabelPositionProperty><sf:SFC2DAreaShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DAreaShadowProperty><sf:SFC3DSeriesSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.89999997615814209" sfa:g="0.89999997615814209" sfa:b="0.89999997615814209" sfa:a="1"/></sf:SFC3DSeriesSpecularColorProperty><sf:SFC2DScatterDataPointSymbolProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC2DScatterDataPointSymbolProperty><sf:SFC2DBarShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DBarShadowProperty><sf:SFCBarSeriesValueParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-66"/></sf:SFCBarSeriesValueParagraphStyleProperty><sf:SFC2DScatterDataPointFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC2DScatterDataPointFillProperty><sf:SFC2DBarFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC2DBarFillProperty><sf:SFCBarShowValueLabelProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCBarShowValueLabelProperty><sf:SFC2DAreaStrokeProperty><sf:stroke sfa:ID="SFRStroke-49" sf:miter-limit="4" sf:width="2" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="1" sfa:a="1"/><sf:pattern-ref sfa:IDREF="SFRStrokePattern-15"/></sf:stroke></sf:SFC2DAreaStrokeProperty><sf:SFCAreaValueLabelPositionProperty><sf:number sfa:number="10" sfa:type="i"/></sf:SFCAreaValueLabelPositionProperty><sf:SFC3DPieShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-4"/></sf:SFC3DPieShadowProperty><sf:SFC3DTextureProperty><sf:string sfa:string=""/></sf:SFC3DTextureProperty><sf:SFCAreaSeriesValueParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-95"/></sf:SFCAreaSeriesValueParagraphStyleProperty><sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DLineUseStrokeColorForDataPointFillProperty><sf:SFC3DLineFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40784314274787903" sfa:g="0.63529413938522339" sfa:b="0.18431372940540314" sfa:a="1"/></sf:SFC3DLineFillProperty><sf:SFCPieWedgeExplosionProperty><sf:number sfa:number="0" sfa:type="f"/></sf:SFCPieWedgeExplosionProperty></sf:property-map></sf:chart-series-style><sf:liststyle-ref sfa:IDREF="SFWPListStyle-4"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-108" sf:name="variablelist-title" sf:ident="paragraph-style-63"><sf:property-map><sf:fontSize><sf:number sfa:number="14" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="i"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent><sf:number sfa:number="14.18209" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-109" sf:name="blockquote-attribution" sf:ident="paragraph-style-12"><sf:property-map><sf:fontSize><sf:number sfa:number="10" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline><sf:number sfa:number="1" sfa:type="i"/></sf:underline><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:leftIndent><sf:firstLineIndent><sf:number sfa:number="28.35709" sfa:type="f"/></sf:firstLineIndent></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-110" sf:name="sect2-title" sf:ident="paragraph-style-44"><sf:property-map><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-111" sf:name="chapter-title" sf:ident="paragraph-style-35"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-22"/><sf:sectionstyle sfa:ID="SFWPSectionStyle-5" sf:name="[Null]" sf:ident="section-style-null"><sf:property-map/></sf:sectionstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-112" sf:name="appendix-title" sf:ident="paragraph-style-4"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:chart-style sfa:ID="SFCChartStyle-0" sf:ident="chart-style-default"><sf:property-map><sf:SFCValueNumberFormatSeparatorProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCValueNumberFormatSeparatorProperty><sf:SFCValueAxisPercentageProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCValueAxisPercentageProperty><sf:SFC3DShowReflectionsProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC3DShowReflectionsProperty><sf:SFC2DTopBorderOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DTopBorderOpacityProperty><sf:SFCCategoryAxisLabelsDepthProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCCategoryAxisLabelsDepthProperty><sf:SFCNumberOfDefinedSeriesStylesProperty><sf:number sfa:number="6" sfa:type="i"/></sf:SFCNumberOfDefinedSeriesStylesProperty><sf:Series_1><sf:chart-series-style-ref sfa:IDREF="SFCSeriesStyle-4"/></sf:Series_1><sf:SFC2DValueDirectionGridLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-50" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0.66666668653488159" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-45" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DValueDirectionGridLineStrokeProperty><sf:SFC3DSceneTextureTilingProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DSceneTextureTilingProperty><sf:SFC3DLightingPackageProperty><sf:string sfa:string="Default"/></sf:SFC3DLightingPackageProperty><sf:SFC3DWallEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DWallEmissiveColorProperty><sf:SFCAxisLabelsOrientationProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCAxisLabelsOrientationProperty><sf:SFCPieSeriesStartAngleProperty><sf:number sfa:number="0" sfa:type="f"/></sf:SFCPieSeriesStartAngleProperty><sf:SFC3DFloorEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:SFC3DFloorEmissiveColorProperty><sf:SFC3DSceneShowTextureProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC3DSceneShowTextureProperty><sf:SFCInitialNumberOfSeriesProperty><sf:number sfa:number="3" sfa:type="i"/></sf:SFCInitialNumberOfSeriesProperty><sf:SFCValueNumberFormatDecimalPlacesProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCValueNumberFormatDecimalPlacesProperty><sf:SFC2DBottomBorderShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DBottomBorderShadowProperty><sf:SFC3DLineChartScaleProperty><sf:vector3d sfa:ID="SFC3DVector-0" sf:x="1.3999999761581421" sf:y="1.3451770544052124" sf:z="1"/></sf:SFC3DLineChartScaleProperty><sf:SFCCategoryAxisShowMinorTickMarksProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCCategoryAxisShowMinorTickMarksProperty><sf:SFC2DChartBackgroundFillProperty><sf:null/></sf:SFC2DChartBackgroundFillProperty><sf:SFC3DLabelThicknessProperty><sf:number sfa:number="0.125" sfa:type="f"/></sf:SFC3DLabelThicknessProperty><sf:SFC2DChartBackgroundOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DChartBackgroundOpacityProperty><sf:SFCCategoryAxisMinorTickStrokeProperty><sf:stroke sfa:ID="SFRStroke-51" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-46" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFCCategoryAxisMinorTickStrokeProperty><sf:SFCCategoryAxisParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-83"/></sf:SFCCategoryAxisParagraphStyleProperty><sf:shadow><sf:shadow sfa:ID="SFRShadow-5" sf:angle="45" sf:offset="2" sf:radius="4" sf:opacity="0.5"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:shadow><sf:SFC3DBarLightingPackageProperty><sf:string sfa:string="Default"/></sf:SFC3DBarLightingPackageProperty><sf:SFCShowCategoryAxisLabelsProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCShowCategoryAxisLabelsProperty><sf:SFC3DInterSetDepthGapProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC3DInterSetDepthGapProperty><sf:SFC2DAntialiasingModeProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DAntialiasingModeProperty><sf:SFC2DBottomBorderOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DBottomBorderOpacityProperty><sf:SFC2DShowRightTicksProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DShowRightTicksProperty><sf:SFC3DShadowCameraYProperty><sf:number sfa:number="0.151952" sfa:type="f"/></sf:SFC3DShadowCameraYProperty><sf:SFC2DShowValueDirectionGridLinesProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DShowValueDirectionGridLinesProperty><sf:SFCValueAxisMinimumValueProperty><sf:null/></sf:SFCValueAxisMinimumValueProperty><sf:SFCLegendStrokeProperty><sf:stroke sfa:ID="SFRStroke-52" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-47" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:SFCLegendStrokeProperty><sf:Series_0><sf:chart-series-style-ref sfa:IDREF="SFCSeriesStyle-0"/></sf:Series_0><sf:SFC2DShowCategoryDirectionGridLinesProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DShowCategoryDirectionGridLinesProperty><sf:SFCShowPieLabelAsPercentageProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCShowPieLabelAsPercentageProperty><sf:SFCSpecularColorProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0.66666668653488159" sfa:a="1"/></sf:SFCSpecularColorProperty><sf:SFC2DRightBorderStrokeProperty><sf:stroke sfa:ID="SFRStroke-53" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-48" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DRightBorderStrokeProperty><sf:SFCDefaultLegendBoundsProperty><sf:value><sfa:rect sfa:x="72" sfa:y="84" sfa:w="468" sfa:h="15"/></sf:value></sf:SFCDefaultLegendBoundsProperty><sf:SFCShowCategoryAxisTitleProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCShowCategoryAxisTitleProperty><sf:SFC2DRightBorderShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DRightBorderShadowProperty><sf:SFC3DReflectionsLevelProperty><sf:number sfa:number="0.1" sfa:type="f"/></sf:SFC3DReflectionsLevelProperty><sf:SFCChartTitleParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-93"/></sf:SFCChartTitleParagraphStyleProperty><sf:SFCShowChartTitleProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCShowChartTitleProperty><sf:SFC3DBarShadowProperty><sf:shadow sfa:ID="SFRShadow-6" sf:angle="122" sf:offset="0" sf:radius="10" sf:opacity="0.55000001192092896"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:SFC3DBarShadowProperty><sf:SFC3DPieChartScaleProperty><sf:vector3d sfa:ID="SFC3DVector-1" sf:x="1.3999999761581421" sf:y="1.3451770544052124" sf:z="1"/></sf:SFC3DPieChartScaleProperty><sf:SFC3DChartRotationProperty><sf:vector3d sfa:ID="SFC3DVector-2" sf:x="18.5" sf:y="-18.125" sf:z="0"/></sf:SFC3DChartRotationProperty><sf:SFCValueAxisParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-65"/></sf:SFCValueAxisParagraphStyleProperty><sf:SFCCategoryAxisLabelsOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCCategoryAxisLabelsOpacityProperty><sf:SFCDefaultChartBoundsProperty><sf:value><sfa:rect sfa:x="72" sfa:y="99" sfa:w="467" sfa:h="255"/></sf:value></sf:SFCDefaultChartBoundsProperty><sf:SFC3DLineShadowProperty><sf:shadow sfa:ID="SFRShadow-7" sf:angle="268" sf:offset="3" sf:radius="4" sf:opacity="0.5"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:SFC3DLineShadowProperty><sf:SFCDefaultChartTypeProperty><sf:number sfa:number="2" sfa:type="i"/></sf:SFCDefaultChartTypeProperty><sf:SFC3DBarChartScaleProperty><sf:vector3d sfa:ID="SFC3DVector-3" sf:x="1.3999999761581421" sf:y="1.3451770544052124" sf:z="1"/></sf:SFC3DBarChartScaleProperty><sf:SFC3DAreaChartScaleProperty><sf:vector3d sfa:ID="SFC3DVector-4" sf:x="1.3999999761581421" sf:y="1.3451770544052124" sf:z="1"/></sf:SFC3DAreaChartScaleProperty><sf:SFCShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFCShininessProperty><sf:SFCValueNumberFormatPrefixProperty><sf:string sfa:string="None"/></sf:SFCValueNumberFormatPrefixProperty><sf:SFC3DValueDirectionGridLineOpacityProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC3DValueDirectionGridLineOpacityProperty><sf:SFC2DLeftBorderStrokeProperty><sf:stroke sfa:ID="SFRStroke-54" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-49" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DLeftBorderStrokeProperty><sf:SFCValueAxisMinorTickLengthProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCValueAxisMinorTickLengthProperty><sf:SFC3DColumnLightingPackageProperty><sf:string sfa:string="Default"/></sf:SFC3DColumnLightingPackageProperty><sf:SFC3DShadowCameraXProperty><sf:number sfa:number="0.48481" sfa:type="f"/></sf:SFC3DShadowCameraXProperty><sf:SFCValueAxisLabelsOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCValueAxisLabelsOpacityProperty><sf:SFCInterSetGapProperty><sf:number sfa:number="100" sfa:type="i"/></sf:SFCInterSetGapProperty><sf:SFC2DShowBottomTicksProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DShowBottomTicksProperty><sf:SFC3DWallFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.16219078004360199" sfa:g="0.21128451824188232" sfa:b="0.34699451923370361" sfa:a="1"/></sf:SFC3DWallFillProperty><sf:SFCValueAxisTickMarkLocationProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFCValueAxisTickMarkLocationProperty><sf:SFCValueAxisLabelsPositionProperty><sf:number sfa:number="3" sfa:type="i"/></sf:SFCValueAxisLabelsPositionProperty><sf:SFCValueAxisShowMinorTickMarksProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCValueAxisShowMinorTickMarksProperty><sf:SFC3DShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC3DShadowProperty><sf:SFC3DAreaLightingPackageProperty><sf:string sfa:string="Default"/></sf:SFC3DAreaLightingPackageProperty><sf:SFC2DCategoryDirectionGridLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-55" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0.66666668653488159" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-50" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DCategoryDirectionGridLineStrokeProperty><sf:SFC2DBottomBorderStrokeProperty><sf:stroke sfa:ID="SFRStroke-56" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-51" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DBottomBorderStrokeProperty><sf:SFCValueAxisMajorTickLengthProperty><sf:number sfa:number="6" sfa:type="i"/></sf:SFCValueAxisMajorTickLengthProperty><sf:SFC2DShowTopBorderProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DShowTopBorderProperty><sf:SFCCategoryAxisMinorTickLengthProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCCategoryAxisMinorTickLengthProperty><sf:SFCHorizontalAxisNumberFormatSeparatorProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCHorizontalAxisNumberFormatSeparatorProperty><sf:SFCEmissiveColorProperty><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0.66666668653488159" sfa:a="1"/></sf:SFCEmissiveColorProperty><sf:SFCCategoryAxisMajorTickLengthProperty><sf:number sfa:number="6" sfa:type="i"/></sf:SFCCategoryAxisMajorTickLengthProperty><sf:SFCCategoryAxisLabelsPositionProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFCCategoryAxisLabelsPositionProperty><sf:SFC2DCategoryDirectionGridLineOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DCategoryDirectionGridLineOpacityProperty><sf:SFC3DFloorDepthProperty><sf:number sfa:number="2" sfa:type="f"/></sf:SFC3DFloorDepthProperty><sf:SFC3DColumnChartScaleProperty><sf:vector3d sfa:ID="SFC3DVector-5" sf:x="1.3999999761581421" sf:y="1.3451770544052124" sf:z="1"/></sf:SFC3DColumnChartScaleProperty><sf:SFC2DTopBorderStrokeProperty><sf:stroke sfa:ID="SFRStroke-57" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-52" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC2DTopBorderStrokeProperty><sf:SFC3DPieLightingPackageProperty><sf:string sfa:string="Default"/></sf:SFC3DPieLightingPackageProperty><sf:Series_3><sf:chart-series-style-ref sfa:IDREF="SFCSeriesStyle-1"/></sf:Series_3><sf:SFCHorizontalAxisShowMinimumValueProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCHorizontalAxisShowMinimumValueProperty><sf:SFC2DLeftBorderOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DLeftBorderOpacityProperty><sf:SFCValueAxisMaximumValueProperty><sf:null/></sf:SFCValueAxisMaximumValueProperty><sf:Series_5><sf:chart-series-style-ref sfa:IDREF="SFCSeriesStyle-2"/></sf:Series_5><sf:SFC3DCategoryDirectionGridLineStrokeProperty><sf:stroke sfa:ID="SFRStroke-58" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0.66666668653488159" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-53" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFC3DCategoryDirectionGridLineStrokeProperty><sf:SFCValueAxisTitleParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-68"/></sf:SFCValueAxisTitleParagraphStyleProperty><sf:SFC3DSeriesShininessProperty><sf:number sfa:number="0.5" sfa:type="f"/></sf:SFC3DSeriesShininessProperty><sf:SFCValueNumberFormatSuffixProperty><sf:string sfa:string="None"/></sf:SFCValueNumberFormatSuffixProperty><sf:SFCShowValueAxisTitleProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCShowValueAxisTitleProperty><sf:SFCCategoryAxisShowMajorTickMarksProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCCategoryAxisShowMajorTickMarksProperty><sf:SFC2DTopBorderShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DTopBorderShadowProperty><sf:SFC3DCategoryDirectionGridLineOpacityProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFC3DCategoryDirectionGridLineOpacityProperty><sf:Series_2><sf:chart-series-style-ref sfa:IDREF="SFCSeriesStyle-5"/></sf:Series_2><sf:SFCShowCategoryAxisSeriesLabelsProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCShowCategoryAxisSeriesLabelsProperty><sf:SFCCategoryAxisTickMarkLocationProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFCCategoryAxisTickMarkLocationProperty><sf:SFC3DWallSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40000000596046448" sfa:g="0.40000000596046448" sfa:b="0.40000000596046448" sfa:a="1"/></sf:SFC3DWallSpecularColorProperty><sf:SFC2DValueDirectionGridLineOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DValueDirectionGridLineOpacityProperty><sf:SFC2DShowBottomBorderProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DShowBottomBorderProperty><sf:SFCLegendParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-69"/></sf:SFCLegendParagraphStyleProperty><sf:SFC3DLineLightingPackageProperty><sf:string sfa:string="Default"/></sf:SFC3DLineLightingPackageProperty><sf:SFC3DBarShapeProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFC3DBarShapeProperty><sf:SFCValueAxisLabelsDepthProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFCValueAxisLabelsDepthProperty><sf:SFC3DFloorSpecularColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40000000596046448" sfa:g="0.40000000596046448" sfa:b="0.40000000596046448" sfa:a="1"/></sf:SFC3DFloorSpecularColorProperty><sf:externalTextWrap><sf:external-text-wrap sfa:ID="SFWPExternalTextWrap-11" sf:wrap-style="tight" sf:floating-wrap-enabled="true" sf:inline-wrap-enabled="true" sf:direction="both" sf:attachment-wrap-type="unaligned" sf:floating-wrap-type="directional" sf:margin="12" sf:alpha-threshold="0.5"/></sf:externalTextWrap><sf:SFCCategoryAxisMajorTickStrokeProperty><sf:stroke sfa:ID="SFRStroke-59" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-54" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFCCategoryAxisMajorTickStrokeProperty><sf:SFC3DValueDirectionGridLineStrokeProperty><sf:stroke-ref sfa:IDREF="SFRStroke-50"/></sf:SFC3DValueDirectionGridLineStrokeProperty><sf:SFC3DAreaShadowProperty><sf:shadow sfa:ID="SFRShadow-8" sf:angle="90" sf:offset="1" sf:radius="4" sf:opacity="0.5"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:SFC3DAreaShadowProperty><sf:SFC2DShowRightBorderProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DShowRightBorderProperty><sf:SFCValueAxisShowMajorTickMarksProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCValueAxisShowMajorTickMarksProperty><sf:SFC2DLeftBorderShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DLeftBorderShadowProperty><sf:SFCDepthProperty><sf:number sfa:number="1.381429" sfa:type="f"/></sf:SFCDepthProperty><sf:SFC2DValueDirectionGridLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DValueDirectionGridLineShadowProperty><sf:SFCValueAxisLogarithmicProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFCValueAxisLogarithmicProperty><sf:SFCInterBarGapProperty><sf:number sfa:number="0" sfa:type="i"/></sf:SFCInterBarGapProperty><sf:SFC3DWallsShininessProperty><sf:number sfa:number="0.8" sfa:type="f"/></sf:SFC3DWallsShininessProperty><sf:Series_4><sf:chart-series-style-ref sfa:IDREF="SFCSeriesStyle-3"/></sf:Series_4><sf:SFCValueAxisNumberOfStepsProperty><sf:number sfa:number="4" sfa:type="i"/></sf:SFCValueAxisNumberOfStepsProperty><sf:SFC2DShowTopTicksProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DShowTopTicksProperty><sf:SFC3DChartScaleProperty><sf:vector3d sfa:ID="SFC3DVector-6" sf:x="1.3999999761581421" sf:y="1.3451770544052124" sf:z="1"/></sf:SFC3DChartScaleProperty><sf:SFCCategoryAxisTitleParagraphStyleProperty><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-71"/></sf:SFCCategoryAxisTitleParagraphStyleProperty><sf:opacity><sf:number sfa:number="1" sfa:type="f"/></sf:opacity><sf:SFC2DCategoryDirectionGridLineShadowProperty><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:SFC2DCategoryDirectionGridLineShadowProperty><sf:SFCValueAxisMajorTickStrokeProperty><sf:stroke sfa:ID="SFRStroke-60" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-55" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFCValueAxisMajorTickStrokeProperty><sf:SFCValueAxisMinorTickStrokeProperty><sf:stroke sfa:ID="SFRStroke-61" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-56" sf:phase="0" sf:type="solid"><sf:pattern/></sf:pattern></sf:stroke></sf:SFCValueAxisMinorTickStrokeProperty><sf:SFCLegendPositionProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFCLegendPositionProperty><sf:SFC3DSceneBackgroundColorProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.80000001192092896" sfa:g="0.80000001192092896" sfa:b="0.80000001192092896" sfa:a="1"/></sf:SFC3DSceneBackgroundColorProperty><sf:SFCLegendOpacityProperty><sf:number sfa:number="1" sfa:type="i"/></sf:SFCLegendOpacityProperty><sf:SFC3DPieShadowProperty><sf:shadow sfa:ID="SFRShadow-9" sf:angle="122" sf:offset="0" sf:radius="10" sf:opacity="0.55000001192092896"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/></sf:shadow></sf:SFC3DPieShadowProperty><sf:SFC2DRightBorderOpacityProperty><sf:number sfa:number="1" sfa:type="f"/></sf:SFC2DRightBorderOpacityProperty><sf:SFC2DCombineLayersProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DCombineLayersProperty><sf:SFCValueAxisShowMinimumValueProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFCValueAxisShowMinimumValueProperty><sf:SFC3DMaterialPackageProperty><sf:string sfa:string="Default"/></sf:SFC3DMaterialPackageProperty><sf:SFCLegendFillProperty><sf:null/></sf:SFCLegendFillProperty><sf:SFC2DShowLeftTicksProperty><sf:number sfa:number="1" sfa:type="c"/></sf:SFC2DShowLeftTicksProperty><sf:SFC2DShowLeftBorderProperty><sf:number sfa:number="0" sfa:type="c"/></sf:SFC2DShowLeftBorderProperty><sf:SFC3DFloorFillProperty><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.29464888572692871" sfa:g="0.36108782887458801" sfa:b="0.54371583461761475" sfa:a="1"/></sf:SFC3DFloorFillProperty></sf:property-map></sf:chart-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-113" sf:name="article-subtitle" sf:ident="paragraph-style-6"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-31" sf:name="graphic-movie-style-default 3" sf:ident="graphic-movie-style-default-2" sf:parent-ident="graphic-movie-style-default"><sf:property-map><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow></sf:property-map></sf:graphic-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-114" sf:name="para-continue" sf:ident="paragraph-style-39"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-25"/><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-115" sf:name="chapter-titleabbrev" sf:ident="paragraph-style-19"><sf:property-map><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-116" sf:name="sect3-title" sf:ident="paragraph-style-46"><sf:property-map><sf:fontSize><sf:number sfa:number="15" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-117" sf:name="book-subtitle" sf:ident="paragraph-style-14"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-118" sf:name="chapter-subtitle" sf:ident="paragraph-style-18"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-119" sf:name="date" sf:ident="paragraph-style-2"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="12" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.40000000596046448" sfa:g="0.80000001192092896" sfa:b="1" sfa:a="1"/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-32" sf:name="graphic-textbox-style-default 2" sf:ident="graphic-textbox-style-default-1" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:stroke><sf:stroke sfa:ID="SFRStroke-62" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-57" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:fill><sf:null/></sf:fill></sf:property-map></sf:graphic-style><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-74"/><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-120" sf:name="book-titleabbrev" sf:ident="paragraph-style-15"><sf:property-map><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:tocstyle sfa:ID="SLTOCParagraphStyle-7" sfa:sfclass="paragraphstyle" sf:name="TOC Heading 1" sf:ident="toc-paragraph-style-1"><sf:property-map><sf:fontSize><sf:number sfa:number="18" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter><sf:number sfa:number="3" sfa:type="f"/></sf:spaceAfter><sf:alignment/><sf:SLTOCPageNumberStyle><sf:null/></sf:SLTOCPageNumberStyle><sf:keepLinesTogether/><sf:listStyle><sf:null/></sf:listStyle><sf:outlineLevel/><sf:underline/><sf:underlineWidth/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:dropCap/><sf:firstTopicNumber/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0" sfa:g="0" sfa:b="0" sfa:a="1"/></sf:fontColor><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:SLTOCEntryStyle><sf:null/></sf:SLTOCEntryStyle><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs><sf:tabs sfa:ID="SFWPTabs-8"><sf:tabstop sf:pos="481.61416625976562" sf:align="right"/></sf:tabs></sf:tabs><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:SLTOCEnabledStyles><sf:null/></sf:SLTOCEnabledStyles><sf:SLTOCDisabledStyles><sf:null/></sf:SLTOCDisabledStyles><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:SLTOCShowPageNumber/><sf:keepWithNext/><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:tocstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-121" sf:name="article-titleabbrev" sf:ident="paragraph-style-7"><sf:property-map><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-122" sf:name="orderedlist4" sf:ident="paragraph-style-102"><sf:property-map><sf:fontSize/><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle sfa:ID="SFWPListStyle-16" sf:parent-ident="list-style-2"><sf:property-map><sf:listTextIndents><sf:array sfa:ID="NSArray-59"><sf:number sfa:number="14.17323" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/><sf:number sfa:number="9" sfa:type="f"/></sf:array></sf:listTextIndents><sf:listLabelGeometries><sf:array sfa:ID="NSArray-60"><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-126" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-127" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-128" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-129" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-130" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-131" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-132" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-133" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/><sf:list-label-geometry sfa:ID="SFWPListLabelGeometry-134" sf:align="left" sf:scale="1" sf:offset="-1" sf:scale-with-text="true"/></sf:array></sf:listLabelGeometries><sf:listLabelIndents><sf:array sfa:ID="NSArray-61"><sf:number sfa:number="42.51968" sfa:type="f"/><sf:number sfa:number="18" sfa:type="f"/><sf:number sfa:number="36" sfa:type="f"/><sf:number sfa:number="54" sfa:type="f"/><sf:number sfa:number="72" sfa:type="f"/><sf:number sfa:number="90" sfa:type="f"/><sf:number sfa:number="108" sfa:type="f"/><sf:number sfa:number="126" sfa:type="f"/><sf:number sfa:number="144" sfa:type="f"/></sf:array></sf:listLabelIndents><sf:listLabelTypes><sf:array sfa:ID="NSArray-62"><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-126" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-92" sf:type="lower-roman" sf:format="%L." sf:first="1"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-127" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-93" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-128" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-94" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-129" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-95" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-130" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-96" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-131" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-97" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-132" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-98" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-133" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-99" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo><sf:list-label-typeinfo sfa:ID="SFWPListLabelTypeInfo-134" sf:type="text"><sf:text-label sfa:ID="SFWPTextLabelFormat-100" sf:type="bullet" sf:format="&#x2022;" sf:first="0"/></sf:list-label-typeinfo></sf:array></sf:listLabelTypes></sf:property-map></sf:liststyle></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:underlineWidth/><sf:dropCap/><sf:fontName/><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold/><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:null/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore/><sf:keepWithNext/><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle><sf:graphic-style sfa:ID="SFDGraphicStyle-33" sf:name="graphic-shape-style-default 10" sf:ident="graphic-shape-style-default-9" sf:parent-ident="graphic-shape-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:shadow><sf:shadow-ref sfa:IDREF="SFRShadow-0"/></sf:shadow><sf:fill><sf:color xsi:type="sfa:calibrated-rgb-color-type" sfa:r="0.41568627953529358" sfa:g="0.66274511814117432" sfa:b="0.39215686917304993" sfa:a="1"/></sf:fill></sf:property-map></sf:graphic-style><sf:graphic-style sfa:ID="SFDGraphicStyle-34" sf:name="graphic-textbox-style-default 7" sf:ident="graphic-textbox-style-default-6" sf:parent-ident="graphic-textbox-style-default"><sf:property-map><sf:layoutStyle><sf:null/></sf:layoutStyle><sf:stroke><sf:stroke sfa:ID="SFRStroke-63" sf:miter-limit="4" sf:width="1" sf:cap="butt" sf:join="miter"><sf:color xsi:type="sfa:calibrated-white-color-type" sfa:w="0" sfa:a="1"/><sf:pattern sfa:ID="SFRStrokePattern-58" sf:phase="0" sf:type="empty"><sf:pattern/></sf:pattern></sf:stroke></sf:stroke><sf:fill><sf:null/></sf:fill></sf:property-map></sf:graphic-style><sf:paragraphstyle sfa:ID="SFWPParagraphStyle-123" sf:name="simplesect-title" sf:ident="paragraph-style-56"><sf:property-map><sf:fontSize><sf:number sfa:number="16" sfa:type="f"/></sf:fontSize><sf:word_strikethrough/><sf:spaceAfter/><sf:alignment/><sf:keepLinesTogether/><sf:listStyle><sf:liststyle-ref sfa:IDREF="SFWPListStyle-2"/></sf:listStyle><sf:outlineLevel/><sf:firstTopicNumber/><sf:underline/><sf:defaultTabStops><sf:number sfa:number="28.34646" sfa:type="f"/></sf:defaultTabStops><sf:tocStyle><sf:tocstyle-ref sfa:IDREF="SLTOCParagraphStyle-3"/></sf:tocStyle><sf:dropCap/><sf:underlineWidth/><sf:fontName><sf:string sfa:string="Helvetica-Bold"/></sf:fontName><sf:strikethru/><sf:baselineShift/><sf:lineSpacing/><sf:textShadow/><sf:underlineColor><sf:null/></sf:underlineColor><sf:showInTOC><sf:number sfa:number="1" sfa:type="c"/></sf:showInTOC><sf:kerning/><sf:strikethruWidth/><sf:fontColor/><sf:textBackground><sf:null/></sf:textBackground><sf:paragraphRuleWidth/><sf:paragraphStroke><sf:null/></sf:paragraphStroke><sf:bold><sf:number sfa:number="1" sfa:type="c"/></sf:bold><sf:tracking/><sf:ligatures/><sf:language><sf:null/></sf:language><sf:followingParagraphStyle><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-7"/></sf:followingParagraphStyle><sf:outline/><sf:strikethruColor><sf:null/></sf:strikethruColor><sf:italic/><sf:word_underline/><sf:widowControl/><sf:rightIndent/><sf:atsuFontFeatures/><sf:tabs/><sf:superscript/><sf:paragraphBorderType/><sf:hyphenate/><sf:hidden/><sf:pageBreakBefore/><sf:paragraphFill><sf:null/></sf:paragraphFill><sf:spaceBefore><sf:number sfa:number="12" sfa:type="f"/></sf:spaceBefore><sf:keepWithNext><sf:number sfa:number="1" sfa:type="c"/></sf:keepWithNext><sf:outlineColor><sf:null/></sf:outlineColor><sf:paragraphRuleOffset/><sf:capitalization/><sf:leftIndent/><sf:firstLineIndent/></sf:property-map></sf:paragraphstyle></sf:styles><sf:anon-styles><sf:layoutstyle-ref sfa:IDREF="SFWPLayoutStyle-7"/><sf:layoutstyle-ref sfa:IDREF="SFWPLayoutStyle-9"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-16"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-9"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-12"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-10"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-3"/><sf:layoutstyle-ref sfa:IDREF="SFWPLayoutStyle-5"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-7"/><sf:characterstyle-ref sfa:IDREF="SFWPCharacterStyle-4"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-11"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-8"/><sf:layoutstyle-ref sfa:IDREF="SFWPLayoutStyle-8"/><sf:paragraphstyle-ref sfa:IDREF="SFWPParagraphStyle-13"/><sf:liststyle-ref sfa:IDREF="SFWPListStyle-5"/></sf:anon-styles></sl:stylesheet><sf:calc-engine sfa:ID="SFTCalculationEngine-0"/><sf:headers><sf:header sf:name="SFWPDefaultEvenHeaderIdentifier"><sf:text-storage sfa:ID="SFWPStorage-1" sf:kind="header"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/><sf:text-body><sf:p sf:style="paragraph-style-37"/></sf:text-body></sf:text-storage></sf:header><sf:header sf:name="SFWPDefaultOddHeaderIdentifier"><sf:text-storage sfa:ID="SFWPStorage-2" sf:kind="header"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/><sf:text-body><sf:p sf:style="paragraph-style-37"/></sf:text-body></sf:text-storage></sf:header><sf:header sf:name="SFWPDefaultFirstHeaderIdentifier"><sf:text-storage sfa:ID="SFWPStorage-3" sf:kind="header"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/><sf:text-body><sf:p sf:style="paragraph-style-37"/></sf:text-body></sf:text-storage></sf:header></sf:headers><sf:footers><sf:footer sf:name="SFWPDefaultEvenFooterIdentifier"><sf:text-storage sfa:ID="SFWPStorage-4" sf:kind="header"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/><sf:text-body><sf:p sf:style="paragraph-style-37"/></sf:text-body></sf:text-storage></sf:footer><sf:footer sf:name="SFWPDefaultOddFooterIdentifier"><sf:text-storage sfa:ID="SFWPStorage-5" sf:kind="header"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/><sf:text-body><sf:p sf:style="paragraph-style-37"/></sf:text-body></sf:text-storage></sf:footer><sf:footer sf:name="SFWPDefaultFirstFooterIdentifier"><sf:text-storage sfa:ID="SFWPStorage-6" sf:kind="header"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/><sf:text-body><sf:p sf:style="paragraph-style-37"/></sf:text-body></sf:text-storage></sf:footer></sf:footers><sf:text-storage sf:kind="body" sfa:ID="SFWPStorage-7"><sf:stylesheet-ref sfa:IDREF="SFSStylesheet-1"/><sf:text-body><sf:page-start sf:page-index="0"/><sf:container-hint sf:page-index="0" sf:cindex="0" sf:sindex="0" sf:lindex="0" sf:frame-x="56.692913055419922" sf:frame-y="57" sf:frame-w="481.61416625976562" sf:frame-h="714" sf:anchor-loc="0"/><sf:section sf:name="Chapter 1" sf:style="section-style-0"><sf:layout sf:style="layout-style-20"><sf:p sf:style="paragraph-style-38">Document Template<sf:br/></sf:p><sf:p sf:style="paragraph-style-32"><sf:br/></sf:p><sf:p sf:style="paragraph-style-32" sf:restart-list="true">Insert content here.</sf:p></sf:layout></sf:section><sf:insertion-point/></sf:text-body></sf:text-storage><sl:window-configs sl:layout-version="5"><sl:window-config sl:frame="31 50 743 828 0 0 1440 878 " sl:show-ruler="true" sl:show-sidebar="true" sl:page-scale="1.25" sl:sidebar-paragraph-pct="0.5" sl:sidebar-character-pct="0.5" sl:sidebar-list-pct="0"><sl:selection><sf:wp-selection sfa:ID="SLSelectionObjectWP-0"><sf:text-storage-ref sfa:IDREF="SFWPStorage-7"/></sf:wp-selection></sl:selection></sl:window-config></sl:window-configs></sl:document>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml
new file mode 100644
index 0000000..e36a7df
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:ns0="http://schemas.openxmlformats.org/markup-compatibility/2006" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><w:ignoreElements w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/><o:DocumentProperties><o:Title>This document left intentionally blank</o:Title><o:Author>Steve Ball</o:Author><o:LastAuthor>Steve Ball</o:LastAuthor><o:Revision>15</o:Revision><o:TotalTime>10470</o:TotalTime><o:Created>2007-08-21T22:03:00Z</o:Created><o:LastSaved>2008-10-08T23:57:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>7</o:Words><o:Characters>45</o:Characters><o:Company>Explain</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>51</o:CharactersWithSpaces><o:Version>11.0000</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000000" w:usb-1="10000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Arial Narrow"><w:panose-1 w:val="020B0606020202030204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000287" w:usb-1="00000800" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="0000009F" w:csb-1="00000000"/></w:font><w:font w:name="Lucida Sans Unicode"><w:panose-1 w:val="020B0602030504020204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="80001AFF" w:usb-1="0000396B" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="0000003F" w:csb-1="00000000"/></w:font><w:font w:name="Palatino"><w:panose-1 w:val="00000000000000000000"/><w:charset w:val="00"/><w:family w:val="Roman"/><w:notTrueType/><w:pitch w:val="variable"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font><w:font w:name="Monaco"><w:panose-1 w:val="00000000000000000000"/><w:charset w:val="00"/><w:family w:val="Modern"/><w:notTrueType/><w:pitch w:val="fixed"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="06B32B68"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="BA94520E"/><w:lvl w:ilvl="0" w:tplc="43580F94"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="itemizedlist1"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="08CF1663"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="10346111"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="4A38D8EA"/><w:lvl w:ilvl="0" w:tplc="BD40B0B8"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="itemizedlist3"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="121A2880"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="4"><w:lsid w:val="1341553B"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="5"><w:lsid w:val="38E8493E"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="17E4C930"/><w:lvl w:ilvl="0" w:tplc="2F90EBE6"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="note"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="6"><w:lsid w:val="3FD63D4B"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="49AE2440"/><w:lvl w:ilvl="0" w:tplc="0C405940"><w:start w:val="1"/><w:pStyle w:val="orderedlist4"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="7"><w:lsid w:val="4576760C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="8"><w:lsid w:val="4AE86026"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="99E0A2DA"/><w:lvl w:ilvl="0" w:tplc="F4F29E32"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="itemizedlist4"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="9"><w:lsid w:val="4BD72CD9"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="10"><w:lsid w:val="50B87542"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="11"><w:lsid w:val="5570737B"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="12"><w:lsid w:val="59A72500"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="13"><w:lsid w:val="5F8E0F88"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="14"><w:lsid w:val="63A74F9B"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="4BA09C26"/><w:lvl w:ilvl="0" w:tplc="069ABFBE"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="15"><w:lsid w:val="64590623"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="FF22825E"/><w:lvl w:ilvl="0" w:tplc="D1DEF1CE"><w:start w:val="1"/><w:nfc w:val="1"/><w:pStyle w:val="orderedlist3"/><w:lvlText w:val="%1."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3960" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4680" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5400" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="6120" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6840"/></w:tabs><w:ind w:left="6840" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="7560"/></w:tabs><w:ind w:left="7560" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="16"><w:lsid w:val="69727D75"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="17"><w:lsid w:val="7375110D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="18"><w:lsid w:val="78DC6A50"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="AC00310A"/><w:lvl w:ilvl="0" w:tplc="203E5E88"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="orderedlist2"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="19"><w:lsid w:val="7FE26324"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="54606432"/><w:lvl w:ilvl="0" w:tplc="D70A5764"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="itemizedlist2"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="5"/></w:list><w:list w:ilfo="2"><w:ilst w:val="17"/></w:list><w:list w:ilfo="3"><w:ilst w:val="9"/></w:list><w:list w:ilfo="4"><w:ilst w:val="13"/></w:list><w:list w:ilfo="5"><w:ilst w:val="10"/></w:list><w:list w:ilfo="6"><w:ilst w:val="7"/></w:list><w:list w:ilfo="7"><w:ilst w:val="4"/></w:list><w:list w:ilfo="8"><w:ilst w:val="1"/></w:list><w:list w:ilfo="9"><w:ilst w:val="3"/></w:list><w:list w:ilfo="10"><w:ilst w:val="16"/></w:list><w:list w:ilfo="11"><w:ilst w:val="11"/></w:list><w:list w:ilfo="12"><w:ilst w:val="14"/></w:list><w:list w:ilfo="13"><w:ilst w:val="18"/></w:list><w:list w:ilfo="14"><w:ilst w:val="15"/></w:list><w:list w:ilfo="15"><w:ilst w:val="12"/></w:list><w:list w:ilfo="16"><w:ilst w:val="6"/></w:list><w:list w:ilfo="17"><w:ilst w:val="19"/></w:list><w:list w:ilfo="18"><w:ilst w:val="2"/></w:list><w:list w:ilfo="19"><w:ilst w:val="8"/></w:list><w:list w:ilfo="20"><w:ilst w:val="0"/></w:list></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="on" w:latentStyleCount="156"><w:lsdException w:name="Normal" w:locked="off"/><w:lsdException w:name="footnote text" w:locked="off"/><w:lsdException w:name="annotation text" w:locked="off"/><w:lsdException w:name="footnote reference" w:locked="off"/><w:lsdException w:name="annotation reference" w:locked="off"/><w:lsdException w:name="Default Paragraph Font" w:locked="off"/><w:lsdException w:name="Date" w:locked="off"/><w:lsdException w:name="Hyperlink" w:locked="off"/><w:lsdException w:name="FollowedHyperlink" w:locked="off"/><w:lsdException w:name="Emphasis" w:locked="off"/><w:lsdException w:name="HTML Top of Form" w:locked="off"/><w:lsdException w:name="HTML Bottom of Form" w:locked="off"/><w:lsdException w:name="Normal Table" w:locked="off"/><w:lsdException w:name="annotation subject" w:locked="off"/><w:lsdException w:name="No List" w:locked="off"/></w:latentStyles><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:aliases w:val="para"/><w:rsid w:val="00826D85"/><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="itemizedlist2"><w:name w:val="itemizedlist2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DF7E4E"/><w:pPr><w:pStyle w:val="itemizedlist2"/><w:listPr><w:ilfo w:val="17"/></w:listPr><w:ind w:left="1080"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="itemizedlist3"><w:name w:val="itemizedlist3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DF7E4E"/><w:pPr><w:pStyle w:val="itemizedlist3"/><w:listPr><w:ilfo w:val="18"/></w:listPr><w:ind w:left="1800"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="itemizedlist4"><w:name w:val="itemizedlist4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DF7E4E"/><w:pPr><w:pStyle w:val="itemizedlist4"/><w:listPr><w:ilfo w:val="19"/></w:listPr><w:ind w:left="2520"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-title"><w:name w:val="book-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="book-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-subtitle"><w:name w:val="book-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="book-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-titleabbrev"><w:name w:val="book-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="book-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-title"><w:name w:val="article-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="article-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-subtitle"><w:name w:val="article-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="article-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-titleabbrev"><w:name w:val="article-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="article-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote"><w:name w:val="blockquote"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="blockquote"/><w:ind w:left="720" w:right="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:i/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockerror"><w:name w:val="blockerror"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="blockerror"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FF0000"/><w:effect w:val="ants-red"/></w:rPr></w:style><w:style w:type="character" w:styleId="inlineerror"><w:name w:val="inlineerror"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:color w:val="FF0000"/><w:effect w:val="ants-red"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="legalnotice"><w:name w:val="legalnotice"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="legalnotice"/><w:pBdr><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="1" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="4" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="1" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="4" w:color="auto"/></w:pBdr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note"><w:name w:val="note"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="note"/><w:listPr><w:ilfo w:val="1"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect1-title"><w:name w:val="sect1-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect1-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect1-subtitle"><w:name w:val="sect1-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect1-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect2-title"><w:name w:val="sect2-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect2-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect2-subtitle"><w:name w:val="sect2-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect2-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect3-title"><w:name w:val="sect3-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect3-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect3-subtitle"><w:name w:val="sect3-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect3-subtitle"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect4-title"><w:name w:val="sect4-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect4-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect4-subtitle"><w:name w:val="sect4-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect4-subtitle"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect5-title"><w:name w:val="sect5-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect5-title"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect5-subtitle"><w:name w:val="sect5-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="sect5-subtitle"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simpara"><w:name w:val="simpara"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="simpara"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="formalpara"><w:name w:val="formalpara"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="formalpara"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="formalpara-title"><w:name w:val="formalpara-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="formalpara-title"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simplesect-title"><w:name w:val="simplesect-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="simplesect-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simplesect-subtitle"><w:name w:val="simplesect-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="simplesect-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote-attribution"><w:name w:val="blockquote-attribution"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="blockquote-attribution"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial Narrow" w:h-ansi="Arial Narrow"/><wx:font wx:val="Arial Narrow"/><w:sz w:val="16"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote-title"><w:name w:val="blockquote-title"/><w:basedOn w:val="Normal"/><w:next w:val="blockquote"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="blockquote-title"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note-title"><w:name w:val="note-title"/><w:basedOn w:val="note"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="note-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="caution"><w:name w:val="caution"/><w:basedOn w:val="note"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="caution"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="caution-title"><w:name w:val="caution-title"/><w:basedOn w:val="caution"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="caution-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="warning"><w:name w:val="warning"/><w:basedOn w:val="note"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="warning"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FFCC00"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="warning-title"><w:name w:val="warning-title"/><w:basedOn w:val="warning"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="warning-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="important"><w:name w:val="important"/><w:basedOn w:val="note"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="important"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="000080"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="important-title"><w:name w:val="important-title"/><w:basedOn w:val="important"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="important-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-title"><w:name w:val="chapter-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="chapter-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-subtitle"><w:name w:val="chapter-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="chapter-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-titleabbrev"><w:name w:val="chapter-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="chapter-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="appendix-title"><w:name w:val="appendix-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="appendix-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="preface-title"><w:name w:val="preface-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="preface-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bibliography-title"><w:name w:val="bibliography-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="bibliography-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="glossary-title"><w:name w:val="glossary-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="glossary-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="index-title"><w:name w:val="index-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="index-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="itemizedlist1"><w:name w:val="itemizedlist1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00227ABF"/><w:pPr><w:pStyle w:val="itemizedlist1"/><w:listPr><w:ilfo w:val="20"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-term"><w:name w:val="variablelist-term"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="variablelist-term"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-title"><w:name w:val="variablelist-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="variablelist-title"/><w:spacing w:before="120" w:after="120"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-titleabbrev"><w:name w:val="variablelist-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="variablelist-titleabbrev"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:i/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="tip"><w:name w:val="tip"/><w:basedOn w:val="note"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="tip"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="003300"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="tip-title"><w:name w:val="tip-title"/><w:basedOn w:val="tip"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="tip-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para-continue"><w:name w:val="para-continue"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="para-continue"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="releaseinfo"><w:name w:val="releaseinfo"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="releaseinfo"/><w:shd w:val="clear" w:color="auto" w:fill="FFFF99"/></w:pPr><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/><wx:font wx:val="Lucida Sans Unicode"/><w:sz w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="author"><w:name w:val="author"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="author"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="surname"><w:name w:val="surname"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="firstname"><w:name w:val="firstname"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:i/></w:rPr></w:style><w:style w:type="character" w:styleId="honorific"><w:name w:val="honorific"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="lineage"><w:name w:val="lineage"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="othername"><w:name w:val="othername"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:i/></w:rPr></w:style><w:style w:type="character" w:styleId="shortaffil"><w:name w:val="shortaffil"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="jobtitle"><w:name w:val="jobtitle"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="orgname"><w:name w:val="orgname"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="orgdiv"><w:name w:val="orgdiv"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="affiliation"><w:name w:val="affiliation"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="affiliation"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="contrib"><w:name w:val="contrib"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:i/></w:rPr></w:style><w:style w:type="character" w:styleId="street"><w:name w:val="street"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/></w:rPr></w:style><w:style w:type="character" w:styleId="pob"><w:name w:val="pob"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/></w:rPr></w:style><w:style w:type="character" w:styleId="postcode"><w:name w:val="postcode"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="city"><w:name w:val="city"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="state"><w:name w:val="state"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="country"><w:name w:val="country"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="phone"><w:name w:val="phone"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/></w:rPr></w:style><w:style w:type="character" w:styleId="fax"><w:name w:val="fax"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/></w:rPr></w:style><w:style w:type="character" w:styleId="email"><w:name w:val="email"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:color w:val="0000FF"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="otheraddr"><w:name w:val="otheraddr"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:rFonts w:ascii="Lucida Sans Unicode" w:h-ansi="Lucida Sans Unicode"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="ulink"><w:name w:val="ulink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:color w:val="0000FF"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="attribute-name"><w:name w:val="attribute-name"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:b/></w:rPr></w:style><w:style w:type="character" w:styleId="attribute-value"><w:name w:val="attribute-value"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="attributes"><w:name w:val="attributes"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:vanish/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="informalfigure-imagedata"><w:name w:val="informalfigure-imagedata"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="informalfigure-imagedata"/><w:spacing w:before="120" w:after="120"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:b/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="xinclude"><w:name w:val="xinclude"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="xinclude"/><w:shd w:val="solid" w:color="auto" w:fill="0C0C0C" wx:bgcolor="000000"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="table-title"><w:name w:val="table-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="00283454"/><w:pPr><w:pStyle w:val="table-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="part-title"><w:name w:val="part-title"/><w:basedOn w:val="book-title"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="part-title"/><w:shd w:val="clear" w:color="auto" w:fill="CCFFFF"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="abstract"><w:name w:val="abstract"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="abstract"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:i/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="abstract-title"><w:name w:val="abstract-title"/><w:basedOn w:val="sect3-title"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="abstract-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Caption"><w:name w:val="caption"/><wx:uiName wx:val="Caption"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="Caption"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:i/><w:sz w:val="18"/></w:rPr></w:style><w:style w:type="character" w:styleId="citetitle"><w:name w:val="citetitle"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="000D6E3E"/><w:rPr><w:i/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bridgehead"><w:name w:val="bridgehead"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="bridgehead"/><w:spacing w:before="120" w:after="120"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="orderedlist1"><w:name w:val="orderedlist1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DF7E4E"/><w:pPr><w:pStyle w:val="orderedlist1"/><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="orderedlist2"><w:name w:val="orderedlist2"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="orderedlist2"/><w:listPr><w:ilfo w:val="13"/></w:listPr><w:ind w:left="1080"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="orderedlist3"><w:name w:val="orderedlist3"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="orderedlist3"/><w:listPr><w:ilfo w:val="14"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="list" w:pos="1620"/></w:tabs><w:ind w:left="1627" w:hanging="360"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="orderedlist4"><w:name w:val="orderedlist4"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="orderedlist4"/><w:listPr><w:ilfo w:val="16"/></w:listPr><w:ind w:left="1800"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="programlisting"><w:name w:val="programlisting"/><w:basedOn w:val="Normal"/><w:rsid w:val="000D6E3E"/><w:pPr><w:pStyle w:val="programlisting"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="keyword"><w:name w:val="keyword"/><w:basedOn w:val="Normal"/><w:rsid w:val="00D41859"/><w:pPr><w:pStyle w:val="keyword"/><w:shd w:val="clear" w:color="auto" w:fill="FFFF99"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="address"><w:name w:val="address"/><w:basedOn w:val="Normal"/><w:rsid w:val="00977F06"/><w:pPr><w:pStyle w:val="address"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="biblio-div"><w:name w:val="biblio-div"/><w:basedOn w:val="Normal"/><w:rsid w:val="00977F06"/><w:pPr><w:pStyle w:val="biblio-div"/><w:ind w:left="288"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="biblioentry-title"><w:name w:val="biblioentry-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="00977F06"/><w:pPr><w:pStyle w:val="biblioentry-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bibliomisc"><w:name w:val="bibliomisc"/><w:basedOn w:val="Normal"/><w:rsid w:val="00977F06"/><w:pPr><w:pStyle w:val="bibliomisc"/><w:shd w:val="clear" w:color="auto" w:fill="00FFFF"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="date"><w:name w:val="date"/><w:basedOn w:val="Normal"/><w:rsid w:val="004D200F"/><w:pPr><w:pStyle w:val="date"/><w:shd w:val="clear" w:color="auto" w:fill="00CCFF"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="example-title"><w:name w:val="example-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="004D200F"/><w:pPr><w:pStyle w:val="example-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="figure-title"><w:name w:val="figure-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="004D200F"/><w:pPr><w:pStyle w:val="figure-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="literallayout"><w:name w:val="literallayout"/><w:basedOn w:val="Normal"/><w:rsid w:val="004D200F"/><w:pPr><w:pStyle w:val="literallayout"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="publisher"><w:name w:val="publisher"/><w:basedOn w:val="Normal"/><w:rsid w:val="001401DD"/><w:pPr><w:pStyle w:val="publisher"/></w:pPr><w:rPr><w:rFonts w:ascii="Palatino" w:h-ansi="Palatino"/><wx:font wx:val="Palatino"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="publisher-address"><w:name w:val="publisher-address"/><w:basedOn w:val="Normal"/><w:rsid w:val="001401DD"/><w:pPr><w:pStyle w:val="publisher-address"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Palatino" w:h-ansi="Palatino"/><wx:font wx:val="Palatino"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="revision"><w:name w:val="revision"/><w:basedOn w:val="Normal"/><w:rsid w:val="009F2926"/><w:pPr><w:pStyle w:val="revision"/><w:shd w:val="clear" w:color="auto" w:fill="FFFF99"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="edition"><w:name w:val="edition"/><w:basedOn w:val="Normal"/><w:rsid w:val="006142F4"/><w:pPr><w:pStyle w:val="edition"/><w:shd w:val="clear" w:color="auto" w:fill="99CCFF"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="pubdate"><w:name w:val="pubdate"/><w:basedOn w:val="Normal"/><w:rsid w:val="007745F4"/><w:pPr><w:pStyle w:val="pubdate"/><w:shd w:val="clear" w:color="auto" w:fill="FFFF99"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="imagedata-metadata"><w:name w:val="imagedata-metadata"/><w:basedOn w:val="Normal"/><w:rsid w:val="00514B6A"/><w:pPr><w:pStyle w:val="imagedata-metadata"/><w:shd w:val="clear" w:color="auto" w:fill="404040"/></w:pPr><w:rPr><w:rFonts w:ascii="Monaco" w:h-ansi="Monaco"/><wx:font wx:val="Monaco"/><w:color w:val="FFFFFF"/><w:sz w:val="20"/></w:rPr></w:style></w:styles><w:shapeDefaults><o:shapedefaults v:ext="edit" spidmax="10242"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults><w:docPr><w:view w:val="normal"/><w:zoom w:percent="100"/><w:doNotEmbedSystemFonts/><w:proofState w:spelling="clean" w:grammar="clean"/><w:attachedTemplate w:val=""/><w:documentProtection w:formatting="on" w:enforcement="on" w:unprotectPassword="2B3EE9A0"/><w:defaultTabStop w:val="720"/><w:punctuationKerning/><w:characterSpacingControl w:val="DontCompress"/><w:optimizeForBrowser/><w:validateAgainstSchema/><w:saveInvalidXML w:val="off"/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:compat><w:breakWrappedTables/><w:snapToGridInCell/><w:wrapTextWithPunct/><w:useAsianBreakRules/><w:dontGrowAutofit/></w:compat><wsp:rsids><wsp:rsidRoot wsp:val="00DD244D"/><wsp:rsid wsp:val="001401DD"/><wsp:rsid wsp:val="001B2E2B"/><wsp:rsid wsp:val="001E5D16"/><wsp:rsid wsp:val="00227ABF"/><wsp:rsid wsp:val="00283454"/><wsp:rsid wsp:val="003E1EB8"/><wsp:rsid wsp:val="00467421"/><wsp:rsid wsp:val="004D200F"/><wsp:rsid wsp:val="00514B6A"/><wsp:rsid wsp:val="006142F4"/><wsp:rsid wsp:val="0067760C"/><wsp:rsid wsp:val="006A7249"/><wsp:rsid wsp:val="006D1FD8"/><wsp:rsid wsp:val="006F7817"/><wsp:rsid wsp:val="007745F4"/><wsp:rsid wsp:val="00826D85"/><wsp:rsid wsp:val="009208D2"/><wsp:rsid wsp:val="00977F06"/><wsp:rsid wsp:val="009F2926"/><wsp:rsid wsp:val="00C0771D"/><wsp:rsid wsp:val="00C80712"/><wsp:rsid wsp:val="00C87CDE"/><wsp:rsid wsp:val="00D41859"/><wsp:rsid wsp:val="00DD244D"/><wsp:rsid wsp:val="00DF7E4E"/><wsp:rsid wsp:val="00F34316"/></wsp:rsids></w:docPr><w:body><wx:sect><w:p wsp:rsidR="00DD244D" wsp:rsidRDefault="00F34316"><w:r><w:t>Generic </w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t>DocB</w:t></w:r><w:r wsp:rsidR="00514B6A"><w:t>ook</w:t></w:r><w:proofErr w:type="spellEnd"/><w:r wsp:rsidR="00514B6A"><w:t> roundtrip template - 2008-10-09</w:t></w:r><w:r><w:t>-01.</w:t></w:r></w:p><w:sectPr wsp:rsidR="00DD244D" wsp:rsidSect="00DD244D"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:line-pitch="360"/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl
new file mode 100644
index 0000000..ad22b19
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl
@@ -0,0 +1,445 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
+ xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:w10="urn:schemas-microsoft-com:office:word"
+ xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core"
+ xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
+ xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
+ xmlns:dbk='http://docbook.org/ns/docbook'
+ xmlns:rnd='http://docbook.org/ns/docbook/roundtrip'
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ xmlns:exsl='http://exslt.org/common'
+ exclude-result-prefixes='w v w10 sl aml wx o dt'
+ extension-element-prefixes='exsl'>
+
+ <xsl:import href='normalise-common.xsl'/>
+
+ <xsl:output method='xml' indent="yes"/>
+
+ <!-- ********************************************************************
+ $Id: wordml2normalise.xsl 8105 2008-08-15 01:29:11Z balls $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+ <xsl:strip-space elements='*'/>
+ <xsl:preserve-space elements='w:t'/>
+
+ <xsl:key name='style'
+ match='w:style'
+ use='@w:styleId'/>
+
+ <xsl:template match="w:wordDocument">
+ <dbk:article>
+ <xsl:apply-templates select='w:body'/>
+ </dbk:article>
+ </xsl:template>
+
+ <xsl:template match='wx:borders |
+ wx:margin-left'/>
+
+ <xsl:template match='w:p'>
+ <xsl:variable name='style'>
+ <xsl:call-template name='rnd:map-paragraph-style'>
+ <xsl:with-param name='style' select='w:pPr/w:pStyle/@w:val'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test='aml:annotation[@w:type = "Word.Deletion"] and
+ not(aml:annotation[@w:type != "Word.Deletion"]) and
+ count(*) = count(aml:annotation|w:pPr)'/>
+
+ <!-- Eliminate paragraphs that have no content.
+ These are section or page breaks.
+ -->
+ <xsl:when test='not(w:r|w:hlink|w:tbl) and
+ w:pPr/w:sectPr'/>
+
+ <xsl:otherwise>
+ <dbk:para>
+ <xsl:attribute name='rnd:style'>
+ <xsl:value-of select='$style'/>
+ </xsl:attribute>
+ <xsl:if test='w:pPr/w:pStyle/@w:val and
+ $style != w:pPr/w:pStyle/@w:val'>
+ <xsl:attribute name='rnd:original-style'>
+ <xsl:value-of select='w:pPr/w:pStyle/@w:val'/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test='w:r[1][w:rPr/w:rStyle/@w:val = "attributes"] and
+ w:r[2][w:rPr/w:rStyle/@w:val = "CommentReference"]'>
+ <xsl:apply-templates select='w:r[2]//w:r[w:rPr/w:rStyle/@w:val = "attribute-name"]'
+ mode='rnd:attributes'/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </dbk:para>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='*' mode='rnd:attributes'>
+ <xsl:attribute name='{w:t}'>
+ <xsl:apply-templates select='following-sibling::w:r[w:rPr/w:rStyle/@w:val = "attribute-value"][1]'
+ mode='rnd:attribute-value'/>
+ </xsl:attribute>
+ </xsl:template>
+
+ <xsl:template match='w:r'>
+ <xsl:param name='do-vert-align' select='true()'/>
+
+ <xsl:variable name='role'>
+ <xsl:choose>
+ <xsl:when test='w:rPr/w:b and
+ w:rPr/w:i'>
+ <xsl:text>bold-italic</xsl:text>
+ </xsl:when>
+ <xsl:when test='w:rPr/w:b'>
+ <xsl:text>bold</xsl:text>
+ </xsl:when>
+ <xsl:when test='w:rPr/w:i'>
+ <xsl:text>italic</xsl:text>
+ </xsl:when>
+ <xsl:when test='w:rPr/w:u'>
+ <xsl:text>underline</xsl:text>
+ </xsl:when>
+ <!-- TODO: add support for other styles -->
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name='style'>
+ <xsl:if test='w:rPr/w:rStyle'>
+ <xsl:value-of select='w:rPr/w:rStyle/@w:val'/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='w:rPr/w:rStyle/@w:val = "attributes"'/>
+ <xsl:when test='w:rPr/w:rStyle/@w:val = "CommentReference"'/>
+ <xsl:when test='w:pict'>
+ <!-- "filename" is where the image data gets extracted to -->
+ <xsl:variable name='filename'>
+ <xsl:call-template name='rnd:image-filename'/>
+ </xsl:variable>
+ <!-- "target" is the URL that will be the target of the imagedata hyperlink.
+ This may or may not be related to the physical filename.
+ -->
+ <xsl:variable name='target'>
+ <xsl:call-template name='rnd:image-target'>
+ <xsl:with-param name='filename' select='$filename'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name='rnd:handle-image-data'>
+ <xsl:with-param name='filename' select='$filename'/>
+ <xsl:with-param name='data' select='w:pict/w:binData'/>
+ </xsl:call-template>
+
+ <dbk:inlinemediaobject>
+ <dbk:imageobject>
+ <dbk:imagedata fileref='{$target}'>
+ <xsl:if test='w:pict/v:shape/@style'>
+ <xsl:attribute name='width'>
+ <xsl:value-of select='normalize-space(substring-before(substring-after(w:pict/v:shape/@style, "width:"), ";"))'/>
+ </xsl:attribute>
+ <xsl:attribute name='depth'>
+ <xsl:value-of select='normalize-space(substring-after(w:pict/v:shape/@style, "height:"))'/>
+ </xsl:attribute>
+ </xsl:if>
+ </dbk:imagedata>
+ </dbk:imageobject>
+ </dbk:inlinemediaobject>
+ </xsl:when>
+ <xsl:when test='$do-vert-align and
+ w:rPr/w:vertAlign/@w:val = "subscript"'>
+ <dbk:subscript>
+ <xsl:apply-templates select='.'>
+ <xsl:with-param name='do-vert-align' select='false()'/>
+ </xsl:apply-templates>
+ </dbk:subscript>
+ </xsl:when>
+ <xsl:when test='$do-vert-align and
+ w:rPr/w:vertAlign/@w:val = "superscript"'>
+ <dbk:superscript>
+ <xsl:apply-templates select='.'>
+ <xsl:with-param name='do-vert-align' select='false()'/>
+ </xsl:apply-templates>
+ </dbk:superscript>
+ </xsl:when>
+ <xsl:when test='w:endnoteRef and
+ parent::w:p/parent::w:endnote and
+ count(w:rPr|w:endnoteRef) = count(*)'/>
+ <xsl:when test='w:footnoteRef'/> <!-- is a label supplied? -->
+ <xsl:when test='w:footnote|w:endnote'>
+ <dbk:footnote>
+ <xsl:apply-templates select='w:footnote|w:endnote'/>
+ </dbk:footnote>
+ </xsl:when>
+ <xsl:when test='$role != "" or $style != ""'>
+ <dbk:emphasis>
+ <xsl:if test='$role != ""'>
+ <xsl:attribute name='role'>
+ <xsl:value-of select='$role'/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test='$style != ""'>
+ <xsl:attribute name='rnd:style'>
+ <xsl:call-template name='rnd:map-character-style'>
+ <xsl:with-param name='style' select='$style'/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </dbk:emphasis>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- An application may wish to override these templates -->
+
+ <!-- rnd:image-filename determines the filename of the physical file
+ to which the image data should be written.
+ -->
+ <xsl:template name='rnd:image-filename'>
+ <xsl:param name='pict' select='w:pict'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($pict/w:binData/@w:name, "wordml://")'>
+ <xsl:value-of select='substring-after($pict/w:binData/@w:name, "wordml://")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>image</xsl:text>
+ <xsl:value-of select='count($pict/preceding::w:pict) + 1'/>
+ <xsl:text>.jpg</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- rnd:image-target determines the URL for the image data.
+ This may or may not be related to the physical filename.
+ -->
+ <xsl:template name='rnd:image-target'>
+ <xsl:param name='filename'/>
+ <xsl:param name='pict' select='w:pict'/>
+
+ <xsl:value-of select='$filename'/>
+ </xsl:template>
+
+ <!-- rnd:handle-image-data receives the base64-encoded data and a filename
+ for the physical file to which the data should be written.
+ Since XSLT cannot natively handle binary data, this implementation
+ just writes the undecoded data to the nominated file.
+ A real application would decode the data into a binary representation.
+ -->
+ <xsl:template name='rnd:handle-image-data'>
+ <xsl:param name='filename'/>
+ <xsl:param name='data'/>
+
+ <xsl:if test='element-available("exsl:document")'>
+ <exsl:document href='{$filename}.b64' method='text'>
+ <xsl:value-of select='w:pict/w:binData'/>
+ </exsl:document>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match='w:hlink'>
+ <dbk:link xlink:href='{@w:dest}'>
+ <xsl:apply-templates/>
+ </dbk:link>
+ </xsl:template>
+
+ <!-- Soft returns don't really have an equivalent in DocBook,
+ - except in literal line environments.
+ -->
+ <xsl:template match='w:br'>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match='w:tbl'>
+ <xsl:variable name='tbl.style'
+ select='key("style", w:tblPr/w:tblStyle/@w:val) | .'/>
+
+ <xsl:variable name='border.top'>
+ <xsl:choose>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:top[not(@w:val = "nil" or @w:val = "none")]'>1</xsl:when>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:top[@w:val = "nil" or @w:val = "none"]'>0</xsl:when>
+ <xsl:when test='w:tr[1]/w:tc[w:tcPr/w:tcBorders/w:top[not(@w:val = "nil" or @w:val = "none")]]'>1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name='border.bottom'>
+ <xsl:choose>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:bottom[not(@w:val = "nil" or @w:val = "none")]'>1</xsl:when>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:bottom[@w:val = "nil" or @w:val = "none"]'>0</xsl:when>
+ <xsl:when test='w:tr[1]/w:tc[w:tcPr/w:tcBorders/w:bottom[not(@w:val = "nil" or @w:val = "none")]]'>1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name='border.left'>
+ <xsl:choose>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:left[not(@w:val = "nil" or @w:val = "none")]'>1</xsl:when>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:left[@w:val = "nil" or @w:val = "none"]'>0</xsl:when>
+ <xsl:when test='w:tr[1]/w:tc[w:tcPr/w:tcBorders/w:left[not(@w:val = "nil" or @w:val = "none")]]'>1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name='border.right'>
+ <xsl:choose>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:right[not(@w:val = "nil" or @w:val = "none")]'>1</xsl:when>
+ <xsl:when test='$tbl.style/w:tblPr/w:tblBorders/w:right[@w:val = "nil" or @w:val = "none"]'>0</xsl:when>
+ <xsl:when test='w:tr[1]/w:tc[w:tcPr/w:tcBorders/w:rightt[not(@w:val = "nil" or @w:val = "none")]]'>1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <dbk:informaltable>
+ <xsl:choose>
+ <xsl:when test='$border.top = "1" and $border.bottom = "1" and
+ $border.left = "1" and $border.right = "1"'>
+ <xsl:attribute name='frame'>all</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.top = "1" and $border.bottom = "1"'>
+ <xsl:attribute name='frame'>topbot</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.left = "1" and $border.right = "1"'>
+ <xsl:attribute name='frame'>sides</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.top = "1"'>
+ <xsl:attribute name='frame'>top</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='$border.bottom = "1"'>
+ <xsl:attribute name='frame'>bottom</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- TODO: analyse column widths -->
+
+ <dbk:tgroup>
+ <xsl:apply-templates select='w:tblGrid'/>
+ <xsl:choose>
+ <xsl:when test='$tbl.style/w:tblStylePr[@w:type = "firstRow"]/w:trPr/w:tblHeader'>
+ <dbk:thead>
+ <xsl:apply-templates select='w:tr[1]'/>
+ </dbk:thead>
+ <dbk:tbody>
+ <xsl:apply-templates select='w:tr[position() != 1]'/>
+ </dbk:tbody>
+ </xsl:when>
+ <xsl:otherwise>
+ <dbk:tbody>
+ <xsl:apply-templates select='w:tr'/>
+ </dbk:tbody>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dbk:tgroup>
+ </dbk:informaltable>
+ </xsl:template>
+ <xsl:template match='w:tblPr'/>
+ <xsl:template match='w:tblGrid/w:gridCol'>
+ <dbk:colspec colwidth='{@w:w}*'
+ colname='column-{count(preceding-sibling::w:gridCol) + 1}'/>
+ </xsl:template>
+ <xsl:template match='w:tr'>
+ <dbk:row>
+ <xsl:apply-templates/>
+ </dbk:row>
+ </xsl:template>
+ <xsl:template match='w:tc'>
+ <xsl:variable name='tbl.style'
+ select='ancestor::w:tbl[1] |
+ key("style", ancestor::w:tbl[1]/w:tblPr/w:tblStyle/@w:val)'/>
+
+ <dbk:entry>
+ <xsl:if test='$tbl.style/w:tblPr/w:tblBorders/w:insideH[not(@w:val = "nil" or @w:val = "none")] |
+ w:tcPr/w:tcBorders/w:bottom[not(@w:val = "nil" or @w:val = "none")]'>
+ <xsl:attribute name='rowsep'>1</xsl:attribute>
+ </xsl:if>
+ <xsl:if test='$tbl.style/w:tblPr/w:tblBorders/w:insideV[not(@w:val = "nil" or @w:val = "none")] |
+ w:tcPr/w:tcBorders/w:right[not(@w:val = "nil" or @w:val = "none")]'>
+ <xsl:attribute name='colsep'>1</xsl:attribute>
+ </xsl:if>
+
+ <xsl:variable name='this.colnum'
+ select='count(preceding-sibling::w:tc) + 1 +
+ sum(preceding-sibling::w:tc/w:tcPr/w:gridSpan/@w:val) -
+ count(preceding-sibling::w:tc/w:tcPr/w:gridSpan[@w:val])'/>
+
+ <xsl:if test='w:tcPr/w:gridSpan[@w:val > 1]'>
+ <xsl:attribute name='namest'>
+ <xsl:text>column-</xsl:text>
+ <xsl:value-of select='$this.colnum'/>
+ </xsl:attribute>
+ <xsl:attribute name='nameend'>
+ <xsl:text>column-</xsl:text>
+ <xsl:value-of select='$this.colnum + w:tcPr/w:gridSpan/@w:val - 1'/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test='w:tcPr/w:vmerge[@w:val = "restart"]'>
+ <xsl:attribute name='morerows'>
+ <xsl:call-template name='rnd:count-rowspan'>
+ <xsl:with-param name='row' select='../following-sibling::w:tr[1]'/>
+ <xsl:with-param name='colnum' select='$this.colnum'/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </dbk:entry>
+ </xsl:template>
+
+ <xsl:template match='w:pStyle |
+ w:rStyle |
+ w:proofErr |
+ w:fldData |
+ w:instrText'/>
+
+ <xsl:template name='rnd:count-rowspan'>
+ <xsl:param name='row' select='/..'/>
+ <xsl:param name='colnum' select='0'/>
+
+ <xsl:variable name='cell'
+ select='$row/w:tc[count(preceding-sibling::w:tc) + 1 +
+ sum(preceding-sibling::w:tc/w:tcPr/w:gridSpan/@w:val) -
+ count(preceding-sibling::w:tc/w:tcPr/w:gridSpan[@w:val]) = $colnum]'/>
+
+ <xsl:choose>
+ <xsl:when test='not($cell)'>
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test='$cell/w:tcPr/w:vmerge[not(@w:val = "restart")]'>
+ <xsl:variable name='remainder'>
+ <xsl:call-template name='rnd:count-rowspan'>
+ <xsl:with-param name='row'
+ select='$row/following-sibling::w:tr[1]'/>
+ <xsl:with-param name='colnum' select='$colnum'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select='$remainder + 1'/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='w:hdr|w:ftr'/>
+
+ <xsl:template match='aml:annotation'>
+ <xsl:choose>
+ <xsl:when test='@w:type = "Word.Deletion"'/>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js
new file mode 100644
index 0000000..a411ea9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js
@@ -0,0 +1,169 @@
+/*
+ * CTOCWidget.js
+ * $Revision: 1.3 $ $Date: 2003/07/14 06:02:50 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2003
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function CTOCWidget(domTOCModel, target)
+{
+ if (domTOCModel.documentElement.nodeName != 'toc')
+ {
+ throw 'CTOCWidget called on non toc Document: ' + domTOCModel.nodeName;
+ }
+
+ this.model = domTOCModel;
+ this.target = target;
+ this.view = document.createElement('div');
+ this.view.setAttribute('class', CTOCWidget._classprefix + '_view');
+
+ var modelItems = domTOCModel.documentElement.childNodes;
+ for (var i = 0; i < modelItems.length; i++)
+ {
+ var modelItem = modelItems.item(i);
+ if (modelItem.nodeType == Node.ELEMENT_NODE)
+ {
+ var viewItem = CTOCWidget.createItemView(modelItem, target);
+ this.view.appendChild(viewItem);
+ }
+ }
+}
+
+CTOCWidget._handleImages = { open: '/toolbox/examples/2003/CTOCWidget/minus.gif', closed: '/toolbox/examples/2003/CTOCWidget/plus.gif', height: '12px', width: '16px'};
+CTOCWidget._classprefix = 'CTOCWidget';
+
+CTOCWidget.createItemView = function (modelItem, target)
+{
+ if (modelItem.nodeType != Node.ELEMENT_NODE)
+ {
+ throw 'CTOCWidget.createItemView called on non-Element: ' + modelItem.nodeName;
+ }
+
+ var i;
+
+ var viewItem = document.createElement('div');
+ viewItem.setAttribute('class', CTOCWidget._classprefix + '_item');
+
+ var viewItemHandle = document.createElement('div');
+ viewItemHandle.setAttribute('class', CTOCWidget._classprefix + '_itemhandle');
+ viewItemHandle.style.cursor = 'pointer';
+
+ var viewItemHandleImg = document.createElement('img');
+ viewItemHandleImg.style.height = CTOCWidget._handleImages.height;
+ viewItemHandleImg.style.width = CTOCWidget._handleImages.width;
+ viewItemHandleImg.addEventListener('click', CTOCWidget.toggleHandle, false);
+
+ var viewItemHandleLink;
+ if (!modelItem.getAttribute('url'))
+ {
+ viewItemHandleLink = document.createElement('span');
+ }
+ else
+ {
+ viewItemHandleLink = document.createElement('a');
+ viewItemHandleLink.setAttribute('href', modelItem.getAttribute('url'));
+ viewItemHandleLink.setAttribute('target', target);
+ }
+ viewItemHandleLink.appendChild(document.createTextNode(modelItem.getAttribute('title')));
+
+ viewItemHandle.appendChild(viewItemHandleImg);
+ viewItemHandle.appendChild(viewItemHandleLink);
+ viewItem.appendChild(viewItemHandle);
+
+ if (modelItem.childNodes.length == 0)
+ {
+ viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.open);
+ }
+ else
+ {
+ viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.closed);
+
+ var viewItemChildren = document.createElement('div');
+ viewItemChildren.setAttribute('class', CTOCWidget._classprefix + '_itemchildren');
+ viewItemChildren.style.display = 'none';
+ viewItemChildren.style.position = 'relative';
+ viewItemChildren.style.left = '1em';
+
+ for (i = 0; i < modelItem.childNodes.length; i++)
+ {
+ var modelItemChild = modelItem.childNodes.item(i);
+ if (modelItemChild.nodeType == Node.ELEMENT_NODE)
+ {
+ viewItemChildren.appendChild(CTOCWidget.createItemView(modelItemChild, target));
+ }
+ }
+
+ viewItem.appendChild(viewItemChildren);
+ }
+
+ return viewItem;
+};
+
+// fires on img part of the handle
+CTOCWidget.toggleHandle = function(e)
+{
+ switch (e.eventPhase)
+ {
+ case Event.CAPTURING_PHASE:
+ case Event.BUBBLING_PHASE:
+ return true;
+
+ case Event.AT_TARGET:
+
+ e.preventBubble();
+
+ var domHandle = e.target.parentNode;
+ var domChildren = domHandle.nextSibling;
+
+ if (!domChildren)
+ {
+ return true;
+ }
+
+ switch(domChildren.style.display)
+ {
+ case '':
+ case 'block':
+ domChildren.style.display = 'none';
+ e.target.setAttribute('src', CTOCWidget._handleImages.closed);
+ break;
+ case 'none':
+ domChildren.style.display = 'block';
+ e.target.setAttribute('src', CTOCWidget._handleImages.open);
+ break;
+ default:
+ return false;
+ }
+
+ return true;
+
+ default:
+ dump('Unknown Event Phase ' + e.eventPhase);
+ break;
+ }
+
+ return true;
+}
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js
new file mode 100644
index 0000000..fc010fb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js
@@ -0,0 +1,142 @@
+// -*- Java -*-
+//
+// Overlay.js, adapted from Floating image II on dynamicdrive.com
+/* Usage:
+<html>
+<head>
+<script LANGUAGE="JavaScript1.2" src="overlay.js"></script>
+...rest of head...
+</head>
+<body onload="overlaySetup(corner)">
+<div id="overlayDiv" STYLE="position:absolute;visibility:visible;">
+...body of overlay...
+</div>
+...rest of page...
+*/
+
+var overlayNS4 = document.layers ? 1 : 0;
+var overlayIE = document.all ? 1 : 0;
+var overlayNS6 = document.getElementById && !document.all ? 1 : 0;
+
+var overlayPadX = 15;
+var overlayPadY = 15;
+var overlayDelay = 60;
+
+var overlayCorner = 'ur'; // ul, ll, ur, lr, uc, lc, cl, cr
+
+function overlayRefresh() {
+ var overlayLx = 0;
+ var overlayLy = 0;
+
+ var overlayX = 0;
+ var overlayY = 0;
+ var overlayW = 0;
+ var overlayH = 0;
+ var contentH = 0;
+
+ var links = document.getElementsByTagName("body")[0];
+
+ if (overlayIE) {
+ overlayLx = document.body.clientWidth;
+ overlayLy = document.body.clientHeight;
+
+ if (document.body.parentElement) {
+ // For IE6
+ overlayLx = document.body.parentElement.clientWidth;
+ overlayLy = document.body.parentElement.clientHeight;
+ }
+
+ overlayH = overlayDiv.offsetHeight;
+ overlayW = body.offsetWidth; // overlayDiv.offsetWidth;
+ contentH = body.offsetHeight;
+ } else if (overlayNS4) {
+ overlayLy = window.innerHeight;
+ overlayLx = window.innerWidth;
+ overlayH = document.overlayDiv.clip.height;
+ overlayW = body.clip.width; // document.overlayDiv.clip.width;
+ contentH = body.clip.height;
+ } else if (overlayNS6) {
+ var odiv = document.getElementById('overlayDiv');
+
+ overlayLy = window.innerHeight;
+ overlayLx = window.innerWidth;
+ overlayH = odiv.offsetHeight;
+ overlayW = odiv.offsetWidth; // body.offsetWidth;
+ contentH = odiv.offsetHeight;
+ }
+
+ if (overlayCorner == 'ul') {
+ overlayX = overlayPadX;
+ overlayY = overlayPadY;
+ } else if (overlayCorner == 'cl') {
+ overlayX = overlayPadX;
+ overlayY = (overlayLy - overlayH) / 2;
+ } else if (overlayCorner == 'll') {
+ overlayX = overlayPadX;
+ overlayY = (overlayLy - overlayH) - overlayPadY;
+ } else if (overlayCorner == 'ur') {
+ overlayX = (overlayLx - overlayW) - overlayPadX;
+ overlayY = overlayPadY;
+ } else if (overlayCorner == 'cr') {
+ overlayX = (overlayLx - overlayW) - overlayPadX;
+ overlayY = (overlayLy - overlayH) / 2;
+ } else if (overlayCorner == 'lr') {
+ overlayX = (overlayLx - overlayW) - overlayPadX;
+ overlayY = (overlayLy - overlayH) - overlayPadY;
+ } else if (overlayCorner == 'uc') {
+ overlayX = (overlayLx - overlayW) / 2;
+ overlayY = overlayPadY;
+ } else { // overlayCorner == 'lc'
+ overlayX = (overlayLx - overlayW) / 2;
+ overlayY = (overlayLy - overlayH) - overlayPadY;
+ }
+
+ if (overlayIE) {
+ overlayDiv.style.left=overlayX;
+ overlayDiv.style.top=overlayY+document.body.scrollTop;
+
+ if (contentH > overlayLy) {
+ overlayDiv.style.visibility = "hidden";
+ }
+ } else if (overlayNS4) {
+ document.overlayDiv.pageX=overlayX;
+ document.overlayDiv.pageY=overlayY+window.pageYOffset;
+ document.overlayDiv.visibility="visible";
+
+ if (contentH > overlayLy) {
+ document.overlayDiv.style.visibility = "hidden";
+ }
+ } else if (overlayNS6) {
+ var div = document.getElementById("overlayDiv");
+ var leftpx = overlayX;
+ var toppx = overlayY+window.pageYOffset;
+ var widthpx = overlayW;
+
+ div.style.left = leftpx + "px";
+ div.style.top = toppx + "px";
+ div.style.width = widthpx + "px";
+
+ if (contentH > overlayLy) {
+ div.style.visibility = "hidden";
+ } else {
+ div.style.visibility = "visible";
+ }
+ }
+}
+
+function onad() {
+ loopfunc();
+}
+
+function loopfunc() {
+ overlayRefresh();
+ setTimeout('loopfunc()',overlayDelay);
+}
+
+function overlaySetup(corner) {
+ overlayCorner = corner;
+
+ if (overlayIE || overlayNS4 || overlayNS6) {
+ onad();
+ }
+}
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css
new file mode 100644
index 0000000..1022d6b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css
@@ -0,0 +1,9 @@
+@import url('slides.css');
+
+.toclink { font-size: 10pt;
+ font-weight: normal;
+ }
+
+.toclink a { color: blue; }
+.toclink a:link { color: blue; }
+.toclink a:visited { color: blue; }
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css
new file mode 100644
index 0000000..698b6a3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css
@@ -0,0 +1,73 @@
+@import url('slides.css');
+
+.toc-body { margin-left: 2px;
+ margin-right: 2px;
+ }
+
+.foil-body { margin-left: 2px;
+ margin-right: 2px;
+ }
+
+h1.title { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+.navhead { visibility: visible;
+ }
+
+.navfoot { visibility: visible;
+ }
+
+/* ====================================================================== */
+
+.navfoot { border-top: 1px solid black;
+ margin-top: 10px;
+ padding-top: 4px;
+ }
+/* ====================================================================== */
+
+.toc { font-weight: bold;
+ font-size: 10pt;
+ }
+
+.toc a { text-decoration: none; }
+.toc a:link { color: blue; }
+.toc a:visited { color: blue; }
+
+.toc .toc-foilgroup a { color: red; }
+.toc .toc-foilgroup a:link { color: red; }
+.toc .toc-foilgroup a:visited { color: red; }
+
+.toc .toc-titlefoil a { color: black; }
+.toc .toc-titlefoil a:link { color: black; }
+.toc .toc-titlefoil a:visited { color: black; }
+
+.toc .toc-foil a { color: blue; }
+.toc .toc-foil a:link { color: blue; }
+.toc .toc-foil a:visited { color: blue; }
+
+.toc-slidesinfo { font-family: sans-serif;
+ font-weight: bold;
+ text-align: center;
+ }
+
+.toc-titlefoil { font-family: sans-serif;
+ font-weight: bold;
+ text-align: center;
+ }
+
+.toc-foilgroup { font-family: sans-serif;
+ margin-left: 0.25in;
+ text-indent: -0.25in;
+ font-weight: bold;
+ color: red;
+ }
+
+.toc-foil { font-family: sans-serif;
+ font-size: 10pt;
+ margin-left: 0.25in;
+ text-indent: -0.4in;
+ font-weight: bold;
+ color: blue;
+ }
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css
new file mode 100644
index 0000000..c22f289
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css
@@ -0,0 +1 @@
+@import url('slides.css');
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css
new file mode 100644
index 0000000..1c195c9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css
@@ -0,0 +1,41 @@
+@import url('slides.css');
+
+.toc-body { margin-left: 2px;
+ margin-right: 2px;
+ }
+
+.foil-body { margin-left: 2px;
+ margin-right: 2px;
+ }
+
+.foilgroup-body { margin-left: 2px;
+ margin-right: 2px;
+ }
+
+h1.title {
+ margin-top: 0px;
+ padding-top: 0px;
+ }
+
+/* ToC Stuff */
+
+.ttoc {
+ font-size: 10pt;
+ color: white;
+ }
+
+.ttoc a { text-decoration: none; }
+.ttoc a:link { color: white }
+.ttoc a:visited { color: white }
+
+.ttoc-title {
+ font-size: 10pt;
+ }
+
+.ttoc-foilset {
+ font-size: 10pt;
+ }
+
+.ttoc-foil {
+ font-size: 10pt;
+ }
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css
new file mode 100644
index 0000000..c22f289
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css
@@ -0,0 +1 @@
+@import url('slides.css');
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css
new file mode 100644
index 0000000..1007478
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css
@@ -0,0 +1,119 @@
+/* General formatting */
+
+body { font-family: sans-serif;
+ font-weight: bold;
+ }
+
+.copyright { color: #7F7F7F;
+ }
+
+/* Title page formatting */
+
+
+.slidesinfo { text-align: center;
+ font-size: 16pt;
+ }
+
+.slidesinfo h1.title { color: blue;
+ }
+.slidesinfo h2.subtitle { color: blue;
+ }
+.slidesinfo h1.author { color: green;
+ }
+
+.slidesinfo .copyright { color: black;
+ }
+
+
+/* ToC page formatting */
+
+.tocpage h1.title { color: blue;
+ text-align: center;
+ }
+
+.tocpage a { text-decoration: none; }
+.tocpage a:link { color: blue; }
+.tocpage a:visited { color: blue; }
+
+.toc-body { margin-left: 0.5in;
+ margin-right: 0.5in;
+ }
+
+/* Foil page formatting */
+
+.foil { font-size: 16pt;
+ }
+.foil h1.title { text-align: center;
+ color: blue;
+ padding-top: 0pt;
+ margin-top: 0pt;
+ }
+.foil h2.subtitle { text-align: center;
+ color: blue;
+ padding-top: 0pt;
+ margin-top: 0pt;
+ }
+
+.foil pre { font-size: 16pt;
+ }
+
+.foil-body { margin-left: 0.5in;
+ margin-right: 0.5in;
+ }
+
+/* Foilgroup page formatting */
+
+.foilgroup { font-size: 16pt;
+ }
+.foilgroup h1.title { text-align: center;
+ color: red;
+ padding-top: 0pt;
+ margin-top: 0pt;
+ }
+.foilgroup h2.subtitle { text-align: center;
+ color: blue;
+ padding-top: 0pt;
+ margin-top: 0pt;
+ }
+
+.foilgroup-body { margin-left: 0.5in;
+ margin-right: 0.5in;
+ }
+
+/* Navigation header formatting */
+
+.navhead { border-bottom: 1px solid black;
+ margin-bottom: 10px;
+ padding-bottom: 4px;
+ }
+
+.navhead hr.top-nav-sep { display: none; }
+
+.navhead .slidestitle { font-weight: normal;
+ font-size: 10pt;
+ font-style: italic;
+ }
+
+/* Navigation footer formatting */
+
+.navfoot { border-top: 1px solid black;
+ margin-top: 10px;
+ padding-top: 4px;
+ }
+
+.navfoot hr.bottom-nav-sep { display: none; }
+
+/* General navigation formatting */
+
+.link-text { font-weight: bold;
+ font-size: 10pt;
+ }
+
+
+.link-text a { text-decoration: none; }
+.link-text a:link { color: blue; }
+.link-text a:visited { color: blue; }
+
+.no-link-text { color: #7F7F7F; }
+
+/* EOF */
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js
new file mode 100644
index 0000000..2e48a7c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js
@@ -0,0 +1,120 @@
+// -*- Java -*-
+//
+// $Id: slides.js 4931 2005-06-21 15:45:53Z kosek $
+//
+// Copyright (C) 2002 Norman Walsh
+//
+// You are free to use, modify and distribute this software without limitation.
+// This software is provided "AS IS," without a warranty of any kind.
+//
+// This script assumes that the Netscape 'ua.js' module has also been loaded.
+
+function newPage(filename, overlay) {
+ divs = document.getElementsByTagName("div");
+
+ if (divs) {
+ var xdiv = divs[0];
+
+ if (xdiv) {
+ var xid = xdiv.getAttribute("id");
+
+ var mytoc = window.top.frames[0];
+ if (mytoc.lastUnderlined) {
+ mytoc.lastUnderlined.style.textDecoration = "none";
+ }
+
+ var tdiv = xbGetElementById(xid, mytoc);
+
+ if (tdiv) {
+ var ta = tdiv.getElementsByTagName("a").item(0);
+ ta.style.textDecoration = "underline";
+ mytoc.lastUnderlined = ta;
+ }
+ }
+ }
+
+ if (overlay != 0) {
+ overlaySetup('lc');
+ }
+}
+
+
+function navigate (evt) {
+ var kc = -1;
+
+ if (navigator.org == 'microsoft' || navigator.family == 'opera') {
+ kc = window.event.keyCode;
+ } else if (navigator.family == 'gecko') {
+ kc = evt.keyCode;
+ if(!kc) {
+ kc = evt.which;
+ }
+ } else {
+ kc = evt.which;
+ }
+
+ var forward = (kc == 110) || (kc == 78) || (kc == 32)
+ || (kc == 10) || (kc == 13) || (kc == 34)
+ || (kc == 39);
+ /* n, N, SPACE, ENTER, RETURN, PAGE UP, RIGHT ARROW */
+ var backward = (kc == 112) || (kc == 80) || (kc == 8)
+ || (kc == 33) || (kc == 37);
+ /* p, P, BACKSPACE, PAGE DOWN, LEFT ARROW */
+ var up = (kc == 117) || (kc == 85) || (kc == 38);
+ /* u, U, UP ARROW */
+ var home = (kc == 104) || (kc == 72) || (kc == 36);
+ /* h, H, HOME */
+ var toc = (kc == 116) || (kc == 84);
+ /* t, T */
+ /* previously included META (kc == 244) */
+
+ var links = document.getElementsByTagName("link");
+
+ var count = 0;
+ var target = "";
+
+ for (count = 0; count < links.length; count++) {
+ if (home && (links[count].getAttribute("rel") == 'top')) {
+ target = links[count].getAttribute("href");
+ }
+ if (toc && (links[count].getAttribute("rel") == 'contents')) {
+ target = links[count].getAttribute("href");
+ }
+ if (up && (links[count].getAttribute("rel") == 'up')) {
+ target = links[count].getAttribute("href");
+ }
+ if (forward && (links[count].getAttribute("rel") == 'next')) {
+ target = links[count].getAttribute("href");
+ }
+ if (backward && (links[count].getAttribute("rel") == 'previous')) {
+ target = links[count].getAttribute("href");
+ }
+ }
+
+ if (target != "") {
+ if (window.top.frames[1]) {
+ window.top.frames[1].location = target;
+ } else {
+ window.location = target;
+ }
+ }
+
+ return false;
+}
+
+function toggletoc (img, width, hidegraphic, showgraphic) {
+ var fsc = top.GetElementsByTagName('frameset');
+ if (fsc) {
+ var fs = fsc[0];
+ if (fs) {
+ if (fs.cols == "0,*") {
+ fs.cols = width + ",*";
+ img.src = hidegraphic;
+ } else {
+ fs.cols = "0,*";
+ img.src = showgraphic;
+ }
+ }
+ }
+}
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js
new file mode 100644
index 0000000..8987659
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js
@@ -0,0 +1,135 @@
+/*
+ * ua.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:17 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function xbDetectBrowser()
+{
+ var oldOnError = window.onerror;
+ var element = null;
+
+ window.onerror = null;
+
+ // work around bug in xpcdom Mozilla 0.9.1
+ window.saveNavigator = window.navigator;
+
+ navigator.OS = '';
+ navigator.version = parseFloat(navigator.appVersion);
+ navigator.org = '';
+ navigator.family = '';
+
+ var platform;
+ if (typeof(window.navigator.platform) != 'undefined')
+ {
+ platform = window.navigator.platform.toLowerCase();
+ if (platform.indexOf('win') != -1)
+ navigator.OS = 'win';
+ else if (platform.indexOf('mac') != -1)
+ navigator.OS = 'mac';
+ else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
+ navigator.OS = 'nix';
+ }
+
+ var i = 0;
+ var ua = window.navigator.userAgent.toLowerCase();
+
+ if (ua.indexOf('opera') != -1)
+ {
+ i = ua.indexOf('opera');
+ navigator.family = 'opera';
+ navigator.org = 'opera';
+ navigator.version = parseFloat('0' + ua.substr(i+6), 10);
+ }
+ else if ((i = ua.indexOf('msie')) != -1)
+ {
+ navigator.org = 'microsoft';
+ navigator.version = parseFloat('0' + ua.substr(i+5), 10);
+
+ if (navigator.version < 4)
+ navigator.family = 'ie3';
+ else
+ navigator.family = 'ie4'
+ }
+ else if (ua.indexOf('gecko') != -1)
+ {
+ navigator.family = 'gecko';
+ var rvStart = ua.indexOf('rv:');
+ var rvEnd = ua.indexOf(')', rvStart);
+ var rv = ua.substring(rvStart+3, rvEnd);
+ var rvParts = rv.split('.');
+ var rvValue = 0;
+ var exp = 1;
+
+ for (var i = 0; i < rvParts.length; i++)
+ {
+ var val = parseInt(rvParts[i]);
+ rvValue += val / exp;
+ exp *= 100;
+ }
+ navigator.version = rvValue;
+
+ if (ua.indexOf('netscape') != -1)
+ navigator.org = 'netscape';
+ else if (ua.indexOf('compuserve') != -1)
+ navigator.org = 'compuserve';
+ else
+ navigator.org = 'mozilla';
+ }
+ else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
+ {
+ var is_major = parseFloat(navigator.appVersion);
+
+ if (is_major < 4)
+ navigator.version = is_major;
+ else
+ {
+ i = ua.lastIndexOf('/')
+ navigator.version = parseFloat('0' + ua.substr(i+1), 10);
+ }
+ navigator.org = 'netscape';
+ navigator.family = 'nn' + parseInt(navigator.appVersion);
+ }
+ else if ((i = ua.indexOf('aol')) != -1 )
+ {
+ // aol
+ navigator.family = 'aol';
+ navigator.org = 'aol';
+ navigator.version = parseFloat('0' + ua.substr(i+4), 10);
+ }
+ else if ((i = ua.indexOf('hotjava')) != -1 )
+ {
+ // hotjava
+ navigator.family = 'hotjava';
+ navigator.org = 'sun';
+ navigator.version = parseFloat(navigator.appVersion);
+ }
+
+ window.onerror = oldOnError;
+}
+
+xbDetectBrowser();
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js
new file mode 100644
index 0000000..6a4f93c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js
@@ -0,0 +1,537 @@
+/*
+xbCollapsibleLists.js 2001-02-26
+
+Contributor(s): Michael Bostock, Netscape Communications, Copyright 1997
+ Bob Clary, Netscape Communications, Copyright 2001
+ Seth Dillingham, Macrobyte Resources, Copyright 2001
+ Mark Filanowicz, Amdahl IT Services, Copyright 2002
+
+Netscape grants you a royalty free license to use, modify or
+distribute this software provided that this copyright notice
+appears on all copies. This software is provided "AS IS,"
+without a warranty of any kind.
+
+See xbCollapsibleLists.js.changelog.html for details of changes.
+*/
+
+
+var xbcl__id = 0;
+var xbcl_item_id = 0;
+var xbcl_mLists = new Array();
+var xbcl_parentElement = null;
+
+document.lists = xbcl_mLists;
+
+function List(visible, width, height, bgColor, collapsedImageURL, expandedImageURL)
+{
+ this.lists = new Array(); // sublists
+ this.items = new Array(); // layers
+ this.types = new Array(); // type
+ this.strs = new Array(); // content
+ this.visible = visible;
+ this.id = xbcl__id;
+ this.width = width || 350;
+ this.height = height || 22;
+
+ this.collapsedImageURL = collapsedImageURL || 'false.gif';
+ this.expandedImageURL = expandedImageURL || 'true.gif';
+
+ if (bgColor)
+ this.bgColor = bgColor;
+
+ xbcl_mLists[xbcl__id++] = this;
+}
+
+function xbcl_SetFont(i,j)
+{
+ this.fontIntro = i;
+ this.fontOutro = j;
+}
+
+function xbcl_GetFont()
+{
+ return [this.fontIntro, this.fontOutro];
+}
+
+function xbcl_setIndent(indent)
+{
+ this.i = indent;
+ if (this.i < 0)
+ {
+ this.i = 0;
+ this.space = false;
+ }
+ else
+ this.space = true;
+}
+
+function xbcl_getIndent(indent)
+{
+ return this.i;
+}
+
+function xbcl_writeItemDOMHTML( obj, s, flList, listObj )
+{
+ var styleObj;
+ var outerDiv, innerLeft, innerRight;
+ var str;
+ var leftEdge = 0;
+
+ styleObj = new xbStyle(obj);
+ styleObj.setVisibility('hidden');
+ outerDiv = document.createElement( "DIV" );
+ outerDiv.id = "DIV_" + obj.id;
+ styleObj = new xbStyle( outerDiv );
+ styleObj.setWidth( this.width );
+
+ if ( flList )
+ {
+ innerLeft = document.createElement( "DIV" );
+ innerLeft.style.position = "absolute";
+ innerLeft.style.valign = "middle";
+ leftEdge = 15;
+
+ styleObj = new xbStyle( innerLeft );
+ styleObj.setWidth( 15 );
+ styleObj.setBackgroundColor( "transparent" );
+
+ if ( listObj.visible )
+ str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';
+ else
+ str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';
+
+ innerLeft.innerHTML = str;
+ outerDiv.appendChild( innerLeft );
+ }
+ else if ( this.space )
+ leftEdge = 15;
+
+ innerRight = document.createElement( "DIV" );
+ innerRight.noWrap = true;
+ innerRight.style.position = "absolute";
+
+ styleObj = new xbStyle( innerRight );
+ styleObj.setLeft( leftEdge + ( this.l * this.i ) );
+ styleObj.setWidth( this.width - 15 - this.l * this.i );
+ styleObj.setBackgroundColor( "transparent" );
+
+ // start of change by Mark Filanowicz 02-22-2002
+ if ( flList )
+ {
+ s = this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;
+ }
+ else
+ {
+ s = this.fontIntro + s + this.fontOutro;
+ }
+ // end of change by Mark Filanowicz 02-22-2002
+
+
+ innerRight.innerHTML = s;
+ outerDiv.appendChild( innerRight );
+
+ obj.appendChild( outerDiv );
+
+ return;
+}
+
+function xbcl_writeItem( obj, s, flList, listObj )
+{
+ var cellStyle = '';
+ var str = '';
+ var styleObj = new xbStyle( obj );
+
+ styleObj.setVisibility( 'hidden' );
+
+ if ( document.body && document.body.style )
+ cellStyle = ' style="background-color: transparent;"';
+
+ str += '<TABLE WIDTH='+this.width+' NOWRAP BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR>';
+
+ if ( flList )
+ {
+ str += '<TD WIDTH="15" NOWRAP VALIGN="MIDDLE"' + cellStyle + '>';
+ str += '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');">';
+
+ if ( listObj.visible )
+ str += '<IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '">';
+ else
+ str += '<IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '">';
+
+ str += '</A></TD>';
+ }
+ else if (this.space)
+ str += '<TD WIDTH="15" NOWRAP' + cellStyle + '>&nbsp;</TD>';
+
+ if (this.l>0 && this.i>0)
+ str += '<TD WIDTH="' + this.l*this.i+ '" NOWRAP' + cellStyle + '>&nbsp;</TD>';
+
+ str += '<TD HEIGHT="' + ( this.height - 3) + '" WIDTH="' + ( this.width - 15 - this.l * this.i ) + '" VALIGN="MIDDLE" ALIGN="LEFT"' + cellStyle + '>';
+
+ // start of change by Mark Filanowicz 02-22-2002
+ if ( flList )
+ {
+ str += this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;
+ }
+ else
+ {
+ str += this.fontIntro + s + this.fontOutro;
+ }
+ // end of change by Mark Filanowicz 02-22-2002
+
+ str += '</TD></TR></TABLE>';
+
+ styleObj.setInnerHTML( str );
+
+ return;
+}
+
+function xbcl_writeList()
+{
+ var item;
+ var i;
+ var flList;
+
+ for ( i = 0; i < this.types.length; i++ )
+ {
+ item = this.items[ i ];
+ flList = ( this.types[ i ] == 'list' );
+
+ this._writeItem( item, this.strs[ i ], flList, this.lists[ i ] );
+
+ if ( flList && this.lists[ i ].visible )
+ this.lists[ i ]._writeList();
+ }
+
+ this.built = true;
+ this.needsRewrite = false;
+ self.status = '';
+}
+
+function xbcl_showList()
+{
+ var item;
+ var styleObj;
+ var i;
+
+ for (i = 0; i < this.types.length; i++)
+ {
+ item = this.items[i];
+ styleObj = new xbStyle(item);
+ styleObj.setClipLeft(0);
+ styleObj.setClipRight(this.width);
+ styleObj.setClipTop(0);
+ if (item.height)
+ {
+ styleObj.setClipBottom(item.height);
+ styleObj.setHeight(item.height);
+ }
+ else
+ {
+ styleObj.setClipBottom(this.height);
+ styleObj.setHeight(this.height);
+ }
+
+ if ( this.visible )
+ styleObj.setVisibility( 'visible' );
+
+ var bg = item.oBgColor || this.bgColor;
+ if ((bg == null) || (bg == 'null'))
+ bg = '';
+
+ styleObj.setBackgroundColor(bg);
+
+ if (this.types[i] == 'list' && this.lists[i].visible)
+ this.lists[i]._showList();
+ }
+ this.shown = true;
+ this.needsUpdate = false;
+}
+
+function xbcl_setImage(list, item, file)
+{
+ var id = '_img' + list.id;
+ var img = null;
+
+ // for DOMHTML or IE4 use cross browser getElementById from xbStyle
+ // can't use it for NN4 since it only works for layers in NN4
+ if (document.layers)
+ img = item.document.images[0];
+ else
+ img = xbGetElementById(id);
+
+ if (img)
+ img.src = file;
+}
+
+function xbcl_getHeight()
+{
+ var totalHeight = 0;
+ var i;
+
+ if (!this.visible)
+ return 0;
+
+ for (i = 0; i < this.types.length; i++)
+ {
+ if (this.items[i].height)
+ totalHeight += this.items[i].height;
+ else
+ totalHeight += this.height;
+
+ if ((this.types[i] == 'list') && this.lists[i].visible)
+ {
+ totalHeight += this.lists[i].getHeight();
+ }
+ }
+
+ return totalHeight;
+}
+
+function xbcl_updateList(pVis, x, y)
+{
+ var currTop = y;
+ var item;
+ var styleObj;
+ var i;
+
+ for (i = 0; i < this.types.length; i++)
+ {
+ item = this.items[i];
+ styleObj = new xbStyle(item);
+
+ if (this.visible && pVis)
+ {
+ styleObj.moveTo(x, currTop);
+ if (item.height) // allow custom heights for each item
+ currTop += item.height;
+ else
+ currTop += this.height;
+
+ styleObj.setVisibility('visible');
+ }
+ else
+ {
+ styleObj.setVisibility('hidden');
+ }
+
+ if (this.types[i] == 'list')
+ {
+ if (this.lists[i].visible)
+ {
+ if (!this.lists[i].built || this.lists[i].needsRewrite)
+ this.lists[i]._writeList();
+
+ if (!this.lists[i].shown || this.lists[i].needsUpdate)
+ this.lists[i]._showList();
+
+ xbcl_setImage(this.lists[i], item, this.expandedImageURL );
+ }
+ else
+ xbcl_setImage(this.lists[i], item, this.collapsedImageURL );
+
+ if (this.lists[i].built)
+ currTop = this.lists[i]._updateList(this.visible && pVis, x, currTop);
+ }
+ }
+ return currTop;
+}
+
+function xbcl_updateParent( pid, l )
+{
+ var i;
+
+ if ( !l )
+ l = 0;
+
+ this.pid = pid;
+ this.l = l;
+
+ for ( i = 0; i < this.types.length; i++ )
+ {
+ if ( this.types[ i ] == 'list' )
+ {
+ this.lists[ i ]._updateParent( pid, l + 1 );
+ }
+ }
+}
+
+function xbcl_expand(i)
+{
+ xbcl_mLists[i].visible = !xbcl_mLists[i].visible;
+
+ if (xbcl_mLists[i].onexpand != null)
+ xbcl_mLists[i].onexpand(xbcl_mLists[i].id);
+
+ xbcl_mLists[xbcl_mLists[i].pid].rebuild();
+
+ if (xbcl_mLists[i].postexpand != null)
+ xbcl_mLists[i].postexpand(xbcl_mLists[i].id);
+}
+
+function xbcl_build(x, y)
+{
+ this._updateParent(this.id);
+ this._writeList();
+ this._showList();
+ this._updateList(true, x, y);
+ this.x = x;
+ this.y = y;
+}
+
+function xbcl_rebuild()
+{
+ this._updateList(true, this.x, this.y);
+}
+
+function xbcl_getNewItem()
+{
+ var newItem = null;
+
+ newItem = xbGetElementById('lItem' + xbcl_item_id);
+
+ if (!newItem)
+ {
+ if (document.all && !document.getElementById)
+ {
+ var parentElement = this.parentElement;
+ if (!parentElement)
+ parentElement = document.body;
+
+ parentElement.insertAdjacentHTML('beforeEnd', '<div id="lItem' + xbcl_item_id + '" style="position:absolute;"></div>');
+ newItem = xbGetElementById('lItem' + xbcl_item_id);
+ }
+ else if (document.layers)
+ {
+ if (this.parentElement)
+ newItem = new Layer(this.width, this.parentElement);
+ else
+ newItem = new Layer(this.width);
+ }
+ else if (document.createElement)
+ {
+ newItem = document.createElement('div');
+ newItem.id= 'lItem' + xbcl_item_id;
+ newItem.style.position = 'absolute';
+
+ if (this.parentElement)
+ this.parentElement.appendChild(newItem);
+ else
+ document.body.appendChild(newItem);
+ }
+ }
+
+ return newItem;
+}
+
+function xbcl_addItem(str, bgColor, item)
+{
+ if (!item)
+ item = this._getNewItem();
+
+ if (!item)
+ return;
+
+ if (bgColor)
+ item.oBgColor = bgColor;
+
+ this.items[this.items.length] = item;
+ this.types[this.types.length] = 'item';
+ this.strs[this.strs.length] = str;
+ ++xbcl_item_id;
+
+ if ( this.built )
+ {
+ this._writeItem( item, str, false );
+ xbcl_mLists[this.pid].rebuild();
+ if ( this.visible )
+ this._showList();
+ else
+ this.needsUpdate = true;
+ }
+
+ return item;
+}
+
+function xbcl_addList(list, str, bgColor, item)
+{
+ if (!item)
+ item = this._getNewItem();
+
+ if (!item)
+ return;
+
+ if (bgColor)
+ item.oBgColor = bgColor;
+
+ this.lists[this.items.length] = list;
+ this.items[this.items.length] = item;
+ this.types[this.types.length] = 'list';
+ this.strs[this.strs.length] = str;
+ ++xbcl_item_id;
+
+ list.parentList = this;
+
+ list.pid = this.pid;
+ list.l = this.l + 1;
+
+ if ( this.built )
+ {
+ this._writeItem( item, str, true, list );
+ xbcl_mLists[ this.pid ].rebuild();
+ if ( this.visible )
+ this._showList();
+ else
+ this.needsUpdate = true;
+ }
+
+ return item;
+}
+
+List.prototype.setIndent = xbcl_setIndent;
+List.prototype.getIndent = xbcl_getIndent;
+List.prototype.addItem = xbcl_addItem;
+List.prototype.addList = xbcl_addList;
+List.prototype.build = xbcl_build;
+List.prototype.rebuild = xbcl_rebuild;
+List.prototype.setFont = xbcl_SetFont;
+List.prototype.getFont = xbcl_GetFont;
+List.prototype.getHeight = xbcl_getHeight;
+
+List.prototype._writeList = xbcl_writeList;
+List.prototype._getNewItem = xbcl_getNewItem;
+
+if ( document.getElementById && document.createElement )
+ List.prototype._writeItem = xbcl_writeItemDOMHTML;
+else
+ List.prototype._writeItem = xbcl_writeItem;
+
+List.prototype._showList = xbcl_showList;
+List.prototype._updateList = xbcl_updateList;
+List.prototype._updateParent = xbcl_updateParent;
+
+List.prototype.onexpand = null;
+List.prototype.postexpand = null;
+List.prototype.lists = null; // sublists
+List.prototype.items = null; // layers
+List.prototype.types = null; // type
+List.prototype.strs = null; // content
+List.prototype.x = 0;
+List.prototype.y = 0;
+List.prototype.visible = false;
+List.prototype.id = -1;
+List.prototype.i = 18;
+List.prototype.space = true;
+List.prototype.pid = 0;
+List.prototype.fontIntro = '';
+List.prototype.fontOutro = '';
+List.prototype.width = 350;
+List.prototype.height = 22;
+List.prototype.built = false;
+List.prototype.shown = false;
+List.prototype.needsUpdate = false;
+List.prototype.needsRewrite = false;
+List.prototype.l = 0;
+List.prototype.bgColor = null;
+List.prototype.parentList = null;
+List.prototype.parentElement = null;
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js
new file mode 100644
index 0000000..39cc8bf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js
@@ -0,0 +1,374 @@
+/*
+ * xbDOM.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:18 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function xbToInt(s)
+{
+ var i = parseInt(s, 10);
+ if (isNaN(i))
+ i = 0;
+
+ return i;
+}
+
+function xbGetWindowWidth(windowRef)
+{
+ var width = 0;
+
+ if (!windowRef)
+ {
+ windowRef = window;
+ }
+
+ if (typeof(windowRef.innerWidth) == 'number')
+ {
+ width = windowRef.innerWidth;
+ }
+ else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')
+ {
+ width = windowRef.document.body.clientWidth;
+ }
+
+ return width;
+}
+
+function xbGetWindowHeight(windowRef)
+{
+ var height = 0;
+
+ if (!windowRef)
+ {
+ windowRef = window;
+ }
+
+ if (typeof(windowRef.innerWidth) == 'number')
+ {
+ height = windowRef.innerHeight;
+ }
+ else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')
+ {
+ height = windowRef.document.body.clientHeight;
+ }
+ return height;
+}
+
+function xbGetElementsByNameAndType(name, type, windowRef)
+{
+ if (!windowRef)
+ windowRef = window;
+
+ var elmlist = new Array();
+
+ xbFindElementsByNameAndType(windowRef.document, name, type, elmlist);
+
+ return elmlist;
+}
+
+function xbFindElementsByNameAndType(doc, name, type, elmlist)
+{
+ var i;
+ var subdoc;
+
+ for (i = 0; i < doc[type].length; ++i)
+ {
+ if (doc[type][i].name && name == doc[type][i].name)
+ {
+ elmlist[elmlist.length] = doc[type][i];
+ }
+ }
+
+ if (doc.layers)
+ {
+ for (i = 0; i < doc.layers.length; ++i)
+ {
+ subdoc = doc.layers[i].document;
+ xbFindElementsByNameAndType(subdoc, name, type, elmlist);
+ }
+ }
+}
+
+if (document.layers)
+{
+ nav4FindLayer =
+ function (doc, id)
+ {
+ var i;
+ var subdoc;
+ var obj;
+
+ for (i = 0; i < doc.layers.length; ++i)
+ {
+ if (doc.layers[i].id && id == doc.layers[i].id)
+ return doc.layers[i];
+
+ subdoc = doc.layers[i].document;
+ obj = nav4FindLayer(subdoc, id);
+ if (obj != null)
+ return obj;
+ }
+ return null;
+ }
+
+ nav4FindElementsByName =
+ function (doc, name, elmlist)
+ {
+ var i;
+ var j;
+ var subdoc;
+
+ for (i = 0; i < doc.images.length; ++i)
+ {
+ if (doc.images[i].name && name == doc.images[i].name)
+ {
+ elmlist[elmlist.length] = doc.images[i];
+ }
+ }
+
+ for (i = 0; i < doc.forms.length; ++i)
+ {
+ for (j = 0; j < doc.forms[i].elements.length; j++)
+ {
+ if (doc.forms[i].elements[j].name && name == doc.forms[i].elements[j].name)
+ {
+ elmlist[elmlist.length] = doc.forms[i].elements[j];
+ }
+ }
+
+ if (doc.forms[i].name && name == doc.forms[i].name)
+ {
+ elmlist[elmlist.length] = doc.forms[i];
+ }
+ }
+
+ for (i = 0; i < doc.anchors.length; ++i)
+ {
+ if (doc.anchors[i].name && name == doc.anchors[i].name)
+ {
+ elmlist[elmlist.length] = doc.anchors[i];
+ }
+ }
+
+ for (i = 0; i < doc.links.length; ++i)
+ {
+ if (doc.links[i].name && name == doc.links[i].name)
+ {
+ elmlist[elmlist.length] = doc.links[i];
+ }
+ }
+
+ for (i = 0; i < doc.applets.length; ++i)
+ {
+ if (doc.applets[i].name && name == doc.applets[i].name)
+ {
+ elmlist[elmlist.length] = doc.applets[i];
+ }
+ }
+
+ for (i = 0; i < doc.embeds.length; ++i)
+ {
+ if (doc.embeds[i].name && name == doc.embeds[i].name)
+ {
+ elmlist[elmlist.length] = doc.embeds[i];
+ }
+ }
+
+ for (i = 0; i < doc.layers.length; ++i)
+ {
+ if (doc.layers[i].name && name == doc.layers[i].name)
+ {
+ elmlist[elmlist.length] = doc.layers[i];
+ }
+
+ subdoc = doc.layers[i].document;
+ nav4FindElementsByName(subdoc, name, elmlist);
+ }
+ }
+
+ xbGetElementById = function (id, windowRef)
+ {
+ if (!windowRef)
+ windowRef = window;
+
+ return nav4FindLayer(windowRef.document, id);
+ };
+
+ xbGetElementsByName = function (name, windowRef)
+ {
+ if (!windowRef)
+ windowRef = window;
+
+ var elmlist = new Array();
+
+ nav4FindElementsByName(windowRef.document, name, elmlist);
+
+ return elmlist;
+ };
+
+}
+else if (document.all)
+{
+ xbGetElementById =
+ function (id, windowRef)
+ {
+ if (!windowRef)
+ {
+ windowRef = window;
+ }
+ var elm = windowRef.document.all[id];
+ if (!elm)
+ {
+ elm = null;
+ }
+ return elm;
+ };
+
+ xbGetElementsByName = function (name, windowRef)
+ {
+ if (!windowRef)
+ windowRef = window;
+
+ var i;
+ var idnamelist = windowRef.document.all[name];
+ var elmlist = new Array();
+
+ if (!idnamelist.length || idnamelist.name == name)
+ {
+ if (idnamelist)
+ elmlist[elmlist.length] = idnamelist;
+ }
+ else
+ {
+ for (i = 0; i < idnamelist.length; i++)
+ {
+ if (idnamelist[i].name == name)
+ elmlist[elmlist.length] = idnamelist[i];
+ }
+ }
+
+ return elmlist;
+ }
+
+}
+else if (document.getElementById)
+{
+ xbGetElementById =
+ function (id, windowRef)
+ {
+ if (!windowRef)
+ {
+ windowRef = window;
+ }
+ return windowRef.document.getElementById(id);
+ };
+
+ xbGetElementsByName =
+ function (name, windowRef)
+ {
+ if (!windowRef)
+ {
+ windowRef = window;
+ }
+ return windowRef.document.getElementsByName(name);
+ };
+}
+else
+{
+ xbGetElementById =
+ function (id, windowRef)
+ {
+ return null;
+ };
+
+ xbGetElementsByName =
+ function (name, windowRef)
+ {
+ return new Array();
+ };
+}
+
+function xbGetPageScrollX(windowRef)
+{
+ if (!windowRef)
+ {
+ windowRef = window;
+ }
+
+ if (typeof(windowRef.pageXOffset) == 'number')
+ {
+ return windowRef.pageXOffset;
+ }
+
+ if (typeof(windowRef.document.body && windowRef.document.body.scrollLeft) == 'number')
+ {
+ return windowRef.document.body.scrollLeft;
+ }
+
+ return 0;
+}
+
+function xbGetPageScrollY(windowRef)
+{
+ if (!windowRef)
+ {
+ windowRef = window;
+ }
+
+ if (typeof(windowRef.pageYOffset) == 'number')
+ {
+ return windowRef.pageYOffset;
+ }
+
+ if (typeof(windowRef.document.body && windowRef.document.body.scrollTop) == 'number')
+ {
+ return windowRef.document.body.scrollTop;
+ }
+
+ return 0;
+}
+
+if (document.layers)
+{
+ xbSetInnerHTML =
+ function (element, str)
+ {
+ element.document.write(str);
+ element.document.close();
+ };
+}
+else
+{
+ xbSetInnerHTML = function (element, str)
+ {
+ if (typeof(element.innerHTML) != 'undefined')
+ {
+ element.innerHTML = str;
+ }
+ };
+}
+
+// eof: xbDOM.js
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js
new file mode 100644
index 0000000..48fd010
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js
@@ -0,0 +1,311 @@
+/*
+ * xbDebug.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:19 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ChangeLog:
+
+2002-02-25: bclary - modified xbDebugTraceOject to make sure
+ that original versions of wrapped functions were not
+ rewrapped. This had caused an infinite loop in IE.
+
+2002-02-07: bclary - modified xbDebug.prototype.close to not null
+ the debug window reference. This can cause problems with
+ Internet Explorer if the page is refreshed. These issues will
+ be addressed at a later date.
+*/
+
+function xbDebug()
+{
+ this.on = false;
+ this.stack = new Array();
+ this.debugwindow = null;
+ this.execprofile = new Object();
+}
+
+xbDebug.prototype.push = function ()
+{
+ this.stack[this.stack.length] = this.on;
+ this.on = true;
+}
+
+xbDebug.prototype.pop = function ()
+{
+ this.on = this.stack[this.stack.length - 1];
+ --this.stack.length;
+}
+
+xbDebug.prototype.open = function ()
+{
+ if (this.debugwindow && !this.debugwindow.closed)
+ this.close();
+
+ this.debugwindow = window.open('about:blank', 'DEBUGWINDOW', 'height=400,width=600,resizable=yes,scrollbars=yes');
+ this.debugwindow.moveTo(0,0);
+ window.focus();
+
+ this.debugwindow.document.write('<html><head><title>xbDebug Window</title></head><body><h3>Javascript Debug Window</h3></body></html>');
+}
+
+xbDebug.prototype.close = function ()
+{
+ if (!this.debugwindow)
+ return;
+
+ if (!this.debugwindow.closed)
+ this.debugwindow.close();
+
+ // bc 2002-02-07, other windows may still hold a reference to this: this.debugwindow = null;
+}
+
+xbDebug.prototype.dump = function (msg)
+{
+ if (!this.on)
+ return;
+
+ if (!this.debugwindow || this.debugwindow.closed)
+ this.open();
+
+ this.debugwindow.document.write(msg + '<br>');
+
+ return;
+}
+
+var xbDEBUG = new xbDebug();
+
+window.onunload = function () { xbDEBUG.close(); }
+
+function xbDebugGetFunctionName(funcref)
+{
+
+ if (!funcref)
+ {
+ return '';
+ }
+
+ if (funcref.name)
+ return funcref.name;
+
+ var name = funcref + '';
+ name = name.substring(name.indexOf(' ') + 1, name.indexOf('('));
+ funcref.name = name;
+
+ if (!name) alert('name not defined');
+ return name;
+}
+
+
+// emulate functionref.apply for IE mac and IE win < 5.5
+function xbDebugApplyFunction(funcname, funcref, thisref, argumentsref)
+{
+ var rv;
+
+ if (!funcref)
+ {
+ alert('xbDebugApplyFunction: funcref is null');
+ }
+
+ if (typeof(funcref.apply) != 'undefined')
+ return funcref.apply(thisref, argumentsref);
+
+ var applyexpr = 'thisref.xbDebug_orig_' + funcname + '(';
+ var i;
+
+ for (i = 0; i < argumentsref.length; i++)
+ {
+ applyexpr += 'argumentsref[' + i + '],';
+ }
+
+ if (argumentsref.length > 0)
+ {
+ applyexpr = applyexpr.substring(0, applyexpr.length - 1);
+ }
+
+ applyexpr += ')';
+
+ return eval(applyexpr);
+}
+
+function xbDebugCreateFunctionWrapper(scopename, funcname, precall, postcall)
+{
+ var wrappedfunc;
+ var scopeobject = eval(scopename);
+ var funcref = scopeobject[funcname];
+
+ scopeobject['xbDebug_orig_' + funcname] = funcref;
+
+ wrappedfunc = function ()
+ {
+ var rv;
+
+ precall(scopename, funcname, arguments);
+ rv = xbDebugApplyFunction(funcname, funcref, scopeobject, arguments);
+ postcall(scopename, funcname, arguments, rv);
+ return rv;
+ };
+
+ if (typeof(funcref.constructor) != 'undefined')
+ wrappedfunc.constructor = funcref.constuctor;
+
+ if (typeof(funcref.prototype) != 'undefined')
+ wrappedfunc.prototype = funcref.prototype;
+
+ scopeobject[funcname] = wrappedfunc;
+}
+
+function xbDebugCreateMethodWrapper(contextname, classname, methodname, precall, postcall)
+{
+ var context = eval(contextname);
+ var methodref = context[classname].prototype[methodname];
+
+ context[classname].prototype['xbDebug_orig_' + methodname] = methodref;
+
+ var wrappedmethod = function ()
+ {
+ var rv;
+ // eval 'this' at method run time to pick up reference to the object's instance
+ var thisref = eval('this');
+ // eval 'arguments' at method run time to pick up method's arguments
+ var argsref = arguments;
+
+ precall(contextname + '.' + classname, methodname, argsref);
+ rv = xbDebugApplyFunction(methodname, methodref, thisref, argsref);
+ postcall(contextname + '.' + classname, methodname, argsref, rv);
+ return rv;
+ };
+
+ return wrappedmethod;
+}
+
+function xbDebugPersistToString(obj)
+{
+ var s = '';
+
+ if (obj == null)
+ return 'null';
+
+ switch(typeof(obj))
+ {
+ case 'number':
+ return obj;
+ case 'string':
+ return '"' + obj + '"';
+ case 'undefined':
+ return 'undefined';
+ case 'boolean':
+ return obj + '';
+ }
+
+ if (obj.constructor)
+ return '[' + xbDebugGetFunctionName(obj.constructor) + ']';
+
+ return null;
+}
+
+function xbDebugTraceBefore(scopename, funcname, funcarguments)
+{
+ var i;
+ var s = '';
+ var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname];
+ if (!execprofile)
+ execprofile = xbDEBUG.execprofile[scopename + '.' + funcname] = { started: 0, time: 0, count: 0 };
+
+ for (i = 0; i < funcarguments.length; i++)
+ {
+ s += xbDebugPersistToString(funcarguments[i]);
+ if (i < funcarguments.length - 1)
+ s += ', ';
+ }
+
+ xbDEBUG.dump('enter ' + scopename + '.' + funcname + '(' + s + ')');
+ execprofile.started = (new Date()).getTime();
+}
+
+function xbDebugTraceAfter(scopename, funcname, funcarguments, rv)
+{
+ var i;
+ var s = '';
+ var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname];
+ if (!execprofile)
+ xbDEBUG.dump('xbDebugTraceAfter: execprofile not created for ' + scopename + '.' + funcname);
+ else if (execprofile.started == 0)
+ xbDEBUG.dump('xbDebugTraceAfter: execprofile.started == 0 for ' + scopename + '.' + funcname);
+ else
+ {
+ execprofile.time += (new Date()).getTime() - execprofile.started;
+ execprofile.count++;
+ execprofile.started = 0;
+ }
+
+ for (i = 0; i < funcarguments.length; i++)
+ {
+ s += xbDebugPersistToString(funcarguments[i]);
+ if (i < funcarguments.length - 1)
+ s += ', ';
+ }
+
+ xbDEBUG.dump('exit ' + scopename + '.' + funcname + '(' + s + ')==' + xbDebugPersistToString(rv));
+}
+
+function xbDebugTraceFunction(scopename, funcname)
+{
+ xbDebugCreateFunctionWrapper(scopename, funcname, xbDebugTraceBefore, xbDebugTraceAfter);
+}
+
+function xbDebugTraceObject(contextname, classname)
+{
+ var classref = eval(contextname + '.' + classname);
+ var p;
+ var sp;
+
+ if (!classref || !classref.prototype)
+ return;
+
+ for (p in classref.prototype)
+ {
+ sp = p + '';
+ if (typeof(classref.prototype[sp]) == 'function' && (sp).indexOf('xbDebug_orig') == -1)
+ {
+ classref.prototype[sp] = xbDebugCreateMethodWrapper(contextname, classname, sp, xbDebugTraceBefore, xbDebugTraceAfter);
+ }
+ }
+}
+
+function xbDebugDumpProfile()
+{
+ var p;
+ var execprofile;
+ var avg;
+
+ for (p in xbDEBUG.execprofile)
+ {
+ execprofile = xbDEBUG.execprofile[p];
+ avg = Math.round ( 100 * execprofile.time/execprofile.count) /100;
+ xbDEBUG.dump('Execution profile ' + p + ' called ' + execprofile.count + ' times. Total time=' + execprofile.time + 'ms. Avg Time=' + avg + 'ms.');
+ }
+}
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js
new file mode 100644
index 0000000..9bbfd6b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js
@@ -0,0 +1,80 @@
+/*
+ * xbLibrary.js
+ * $Revision: 1.3 $ $Date: 2003/03/17 03:44:20 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Bob Clary code.
+ *
+ * The Initial Developer of the Original Code is
+ * Bob Clary.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bc@bclary.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+if (!document.getElementById || navigator.userAgent.indexOf('Opera') != -1)
+{
+ // assign error handler for downlevel browsers
+ // Note until Opera improves it's overall support
+ // for JavaScript and the DOM, it must be considered downlevel
+
+ window.onerror = defaultOnError;
+
+ function defaultOnError(msg, url, line)
+ {
+ // handle bug in NS6.1, N6.2
+ // where an Event is passed to error handlers
+ if (typeof(msg) != 'string')
+ {
+ msg = 'unknown error';
+ }
+ if (typeof(url) != 'string')
+ {
+ url = document.location;
+ }
+
+ alert('An error has occurred at ' + url + ', line ' + line + ': ' + msg);
+ }
+}
+
+function xbLibrary(path)
+{
+ if (path.charAt(path.length-1) == '/')
+ {
+ path = path.substr(0, path.length-1)
+ }
+ this.path = path;
+}
+
+// dynamically loaded scripts
+//
+// it is an error to reference anything from the dynamically loaded file inside the
+// same script block. This means that a file can not check its dependencies and
+// load the files for it's own use. someone else must do this.
+
+xbLibrary.prototype.loadScript =
+function (scriptName)
+{
+ document.write('<script language="javascript" src="' + this.path + '/' + scriptName + '"><\/script>');
+};
+
+// default xbLibrary
+
+xblibrary = new xbLibrary('./');
+
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js
new file mode 100644
index 0000000..f5b8467
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-css.js
@@ -0,0 +1,791 @@
+/*
+ * xbStyle-css.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:21 $
+ *
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+// xbStyle.getClip()
+
+function cssStyleGetClip()
+{
+ var clip = this.getEffectiveValue('clip');
+
+ // hack opera
+ if (clip == 'rect()')
+ clip = '';
+
+ if (clip == '' || clip == 'auto')
+ {
+ clip = 'rect(0px, ' + this.getWidth() + 'px, ' + this.getHeight() + 'px, 0px)';
+ }
+ else
+ {
+ clip = clip.replace(/px /g, 'px, ');
+ }
+
+ return clip;
+}
+
+// xbStyle.setClip()
+
+function cssStyleSetClip(sClipString)
+{
+ this.styleObj.clip = sClipString;
+}
+
+// xbStyle.getClipTop()
+
+function cssStyleGetClipTop()
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ return rect.top;
+}
+
+// xbStyle.setClipTop()
+
+function cssStyleSetClipTop(top)
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ rect.top = top;
+ this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipRight()
+
+function cssStyleGetClipRight()
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ return rect.right;
+}
+
+// xbStyle.setClipRight()
+
+function cssStyleSetClipRight(right)
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ rect.right = right;
+ this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipBottom()
+
+function cssStyleGetClipBottom()
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ return rect.bottom;
+}
+
+// xbStyle.setClipBottom()
+
+function cssStyleSetClipBottom(bottom)
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ rect.bottom = bottom;
+ this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipLeft()
+
+function cssStyleGetClipLeft()
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ return rect.left;
+}
+
+// xbStyle.setClipLeft()
+
+function cssStyleSetClipLeft(left)
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ rect.left = left;
+ this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipWidth()
+
+function cssStyleGetClipWidth()
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ return rect.getWidth();
+}
+
+// xbStyle.setClipWidth()
+
+function cssStyleSetClipWidth(width)
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ rect.setWidth(width);
+ this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipHeight()
+
+function cssStyleGetClipHeight()
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ return rect.getHeight();
+}
+
+// xbStyle.setClipHeight()
+
+function cssStyleSetClipHeight(height)
+{
+ var clip = this.getClip();
+ var rect = new xbClipRect(clip);
+ rect.setHeight(height);
+ this.styleObj.clip = rect.toString();
+}
+
+// the CSS attributes left,top are for absolutely positioned elements
+// measured relative to the containing element. for relatively positioned
+// elements, left,top are measured from the element's normal inline position.
+// getLeft(), setLeft() operate on this type of coordinate.
+//
+// to allow dynamic positioning the getOffsetXXX and setOffsetXXX methods are
+// defined to return and set the position of either an absolutely or relatively
+// positioned element relative to the containing element.
+//
+//
+
+// xbStyle.getLeft()
+
+function cssStyleGetLeft()
+{
+ var left = this.getEffectiveValue('left');
+ if (typeof(left) == 'number')
+ return left;
+
+ if (left != '' && left.indexOf('px') == -1)
+ {
+ xbDEBUG.dump('xbStyle.getLeft: Element ID=' + this.object.id + ' does not use pixels as units. left=' + left + ' Click Ok to continue, Cancel to Abort');
+ return 0;
+ }
+
+ if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number')
+ {
+ left = this.object.offsetTop + 'px';
+ }
+
+ if (left == '')
+ left = '0px';
+
+ return xbToInt(left);
+}
+
+// xbStyle.setLeft()
+
+function cssStyleSetLeft(left)
+{
+ if (typeof(this.styleObj.left) == 'number')
+ this.styleObj.left = left;
+ else
+ this.styleObj.left = left + 'px';
+}
+
+// xbStyle.getTop()
+
+function cssStyleGetTop()
+{
+ var top = this.getEffectiveValue('top');
+ if (typeof(top) == 'number')
+ return top;
+
+ if (top != '' && top.indexOf('px') == -1)
+ {
+ xbDEBUG.dump('xbStyle.getTop: Element ID=' + this.object.id + ' does not use pixels as units. top=' + top + ' Click Ok to continue, Cancel to Abort');
+ return 0;
+ }
+
+ if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number')
+ {
+ top = this.object.offsetTop + 'px';
+ }
+
+ if (top == '')
+ top = '0px';
+
+ return xbToInt(top);
+}
+
+// xbStyle.setTop()
+
+function cssStyleSetTop(top)
+{
+ if (typeof(this.styleObj.top) == 'number')
+ this.styleObj.top = top;
+ else
+ this.styleObj.top = top + 'px';
+}
+
+// xbStyle.getPageX()
+
+function cssStyleGetPageX()
+{
+ var x = 0;
+ var elm = this.object;
+ var elmstyle;
+ var position;
+
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
+ // effective position attribute , attempt to use offsetXXX
+
+ if (typeof(elm.offsetLeft) == 'number')
+ {
+ while (elm)
+ {
+ x += elm.offsetLeft;
+ elm = elm.offsetParent;
+ }
+ }
+ else
+ {
+ while (elm)
+ {
+ if (elm.style)
+ {
+ elmstyle = new xbStyle(elm);
+ position = elmstyle.getEffectiveValue('position');
+ if (position != '' && position != 'static')
+ x += elmstyle.getLeft();
+ }
+ elm = elm.parentNode;
+ }
+ }
+
+ return x;
+}
+
+// xbStyle.setPageX()
+
+function cssStyleSetPageX(x)
+{
+ var xParent = 0;
+ var elm = this.object.parentNode;
+ var elmstyle;
+ var position;
+
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
+ // effective position attribute , attempt to use offsetXXX
+
+ if (elm && typeof(elm.offsetLeft) == 'number')
+ {
+ while (elm)
+ {
+ xParent += elm.offsetLeft;
+ elm = elm.offsetParent;
+ }
+ }
+ else
+ {
+ while (elm)
+ {
+ if (elm.style)
+ {
+ elmstyle = new xbStyle(elm);
+ position = elmstyle.getEffectiveValue('position');
+ if (position != '' && position != 'static')
+ xParent += elmstyle.getLeft();
+ }
+ elm = elm.parentNode;
+ }
+ }
+
+ x -= xParent;
+
+ this.setLeft(x);
+}
+
+// xbStyle.getPageY()
+
+function cssStyleGetPageY()
+{
+ var y = 0;
+ var elm = this.object;
+ var elmstyle;
+ var position;
+
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
+ // effective position attribute , attempt to use offsetXXX
+
+ if (typeof(elm.offsetTop) == 'number')
+ {
+ while (elm)
+ {
+ y += elm.offsetTop;
+ elm = elm.offsetParent;
+ }
+ }
+ else
+ {
+ while (elm)
+ {
+ if (elm.style)
+ {
+ elmstyle = new xbStyle(elm);
+ position = elmstyle.getEffectiveValue('position');
+ if (position != '' && position != 'static')
+ y += elmstyle.getTop();
+ }
+ elm = elm.parentNode;
+ }
+ }
+
+ return y;
+}
+
+// xbStyle.setPageY()
+
+function cssStyleSetPageY(y)
+{
+ var yParent = 0;
+ var elm = this.object.parentNode;
+ var elmstyle;
+ var position;
+
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
+ // effective position attribute , attempt to use offsetXXX
+
+ if (elm && typeof(elm.offsetTop) == 'number')
+ {
+ while (elm)
+ {
+ yParent += elm.offsetTop;
+ elm = elm.offsetParent;
+ }
+ }
+ else
+ {
+ while (elm)
+ {
+ if (elm.style)
+ {
+ elmstyle = new xbStyle(elm);
+ position = elmstyle.getEffectiveValue('position');
+ if (position != '' && position != 'static')
+ yParent += elmstyle.getTop();
+ }
+ elm = elm.parentNode;
+ }
+ }
+
+ y -= yParent;
+
+ this.setTop(y);
+}
+
+// xbStyle.getHeight()
+
+function cssStyleGetHeight()
+{
+ var display = this.getEffectiveValue('display');
+ var height = this.getEffectiveValue('height');
+
+ if (typeof(height) == 'number')
+ {
+ // Opera
+ return height;
+ }
+
+ if (height == '' || height == 'auto' || height.indexOf('%') != -1)
+ {
+ if (typeof(this.object.offsetHeight) == 'number')
+ {
+ height = this.object.offsetHeight + 'px';
+ }
+ else if (typeof(this.object.scrollHeight) == 'number')
+ {
+ height = this.object.scrollHeight + 'px';
+ }
+ }
+
+ if (height.indexOf('px') == -1)
+ {
+ xbDEBUG.dump('xbStyle.getHeight: Element ID=' + this.object.id + ' does not use pixels as units. height=' + height + ' Click Ok to continue, Cancel to Abort');
+ return 0;
+ }
+
+ height = xbToInt(height);
+
+ return height;
+}
+
+// xbStyle.setHeight()
+
+function cssStyleSetHeight(height)
+{
+ if (typeof(this.styleObj.height) == 'number')
+ this.styleObj.height = height;
+ else
+ this.styleObj.height = height + 'px';
+}
+
+// xbStyle.getWidth()
+
+function cssStyleGetWidth()
+{
+ var display = this.getEffectiveValue('display');
+ var width = this.getEffectiveValue('width');
+
+ if (typeof(width) == 'number')
+ {
+ // note Opera 6 has a bug in width and offsetWidth where
+ // it returns the page width. Use clientWidth instead.
+ if (navigator.userAgent.indexOf('Opera') != -1)
+ return this.object.clientWidth;
+ else
+ return width;
+ }
+
+ if (width == '' || width == 'auto' || width.indexOf('%') != -1)
+ {
+ if (typeof(this.object.offsetWidth) == 'number')
+ {
+ width = this.object.offsetWidth + 'px';
+ }
+ else if (typeof(this.object.scrollHeight) == 'number')
+ {
+ width = this.object.scrollWidth + 'px';
+ }
+ }
+
+ if (width.indexOf('px') == -1)
+ {
+ xbDEBUG.dump('xbStyle.getWidth: Element ID=' + this.object.id + ' does not use pixels as units. width=' + width + ' Click Ok to continue, Cancel to Abort');
+ return 0;
+ }
+
+ width = xbToInt(width);
+
+ return width;
+}
+
+// xbStyle.setWidth()
+
+function cssStyleSetWidth(width)
+{
+ if (typeof(this.styleObj.width) == 'number')
+ this.styleObj.width = width;
+ else
+ this.styleObj.width = width + 'px';
+}
+
+// xbStyle.getVisibility()
+
+function cssStyleGetVisibility()
+{
+ return this.getEffectiveValue('visibility');
+}
+
+// xbStyle.setVisibility()
+
+function cssStyleSetVisibility(visibility)
+{
+ this.styleObj.visibility = visibility;
+}
+
+// xbStyle.getzIndex()
+
+function cssStyleGetzIndex()
+{
+ return xbToInt(this.getEffectiveValue('zIndex'));
+}
+
+// xbStyle.setzIndex()
+
+function cssStyleSetzIndex(zIndex)
+{
+ this.styleObj.zIndex = zIndex;
+}
+
+// xbStyle.getBackgroundColor()
+
+function cssStyleGetBackgroundColor()
+{
+ return this.getEffectiveValue('backgroundColor');
+}
+
+// xbStyle.setBackgroundColor()
+
+function cssStyleSetBackgroundColor(color)
+{
+ this.styleObj.backgroundColor = color;
+}
+
+// xbStyle.getColor()
+
+function cssStyleGetColor()
+{
+ return this.getEffectiveValue('color');
+}
+
+// xbStyle.setColor()
+
+function cssStyleSetColor(color)
+{
+ this.styleObj.color = color;
+}
+
+// xbStyle.moveAbove()
+
+function xbStyleMoveAbove(cont)
+{
+ this.setzIndex(cont.getzIndex()+1);
+}
+
+// xbStyle.moveBelow()
+
+function xbStyleMoveBelow(cont)
+{
+ var zindex = cont.getzIndex() - 1;
+
+ this.setzIndex(zindex);
+}
+
+// xbStyle.moveBy()
+
+function xbStyleMoveBy(deltaX, deltaY)
+{
+ this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);
+}
+
+// xbStyle.moveTo()
+
+function xbStyleMoveTo(x, y)
+{
+ this.setLeft(x);
+ this.setTop(y);
+}
+
+// xbStyle.moveToAbsolute()
+
+function xbStyleMoveToAbsolute(x, y)
+{
+ this.setPageX(x);
+ this.setPageY(y);
+}
+
+// xbStyle.resizeBy()
+
+function xbStyleResizeBy(deltaX, deltaY)
+{
+ this.setWidth( this.getWidth() + deltaX );
+ this.setHeight( this.getHeight() + deltaY );
+}
+
+// xbStyle.resizeTo()
+
+function xbStyleResizeTo(x, y)
+{
+ this.setWidth(x);
+ this.setHeight(y);
+}
+
+// xbStyle.setInnerHTML()
+
+function xbSetInnerHTML(str)
+{
+ if (typeof(this.object.innerHTML) != 'undefined')
+ this.object.innerHTML = str;
+}
+
+
+// Extensions to xbStyle that are not supported by Netscape Navigator 4
+// but that provide cross browser implementations of properties for
+// Mozilla, Gecko, Netscape 6.x and Opera
+
+// xbStyle.getBorderTopWidth()
+
+function cssStyleGetBorderTopWidth()
+{
+ return xbToInt(this.getEffectiveValue('borderTopWidth'));
+}
+
+// xbStyle.getBorderRightWidth()
+
+function cssStyleGetBorderRightWidth()
+{
+ return xbToInt(this.getEffectiveValue('borderRightWidth'));
+}
+
+// xbStyle.getBorderBottomWidth()
+
+function cssStyleGetBorderBottomWidth()
+{
+ return xbToInt(this.getEffectiveValue('borderBottomWidth'));
+}
+
+// xbStyle.getBorderLeftWidth()
+
+function cssStyleGetBorderLeftWidth()
+{
+ return xbToInt(this.getEffectiveValue('borderLeftWidth'));
+}
+
+// xbStyle.getMarginTop()
+
+function cssStyleGetMarginTop()
+{
+ return xbToInt(this.getEffectiveValue('marginTop'));
+}
+
+// xbStyle.getMarginRight()
+
+function cssStyleGetMarginRight()
+{
+ return xbToInt(this.getEffectiveValue('marginRight'));
+}
+
+// xbStyle.getMarginBottom()
+
+function cssStyleGetMarginBottom()
+{
+ return xbToInt(this.getEffectiveValue('marginBottom'));
+}
+
+// xbStyle.getMarginLeft()
+
+function cssStyleGetMarginLeft()
+{
+ return xbToInt(this.getEffectiveValue('marginLeft'));
+}
+
+// xbStyle.getPaddingTop()
+
+function cssStyleGetPaddingTop()
+{
+ return xbToInt(this.getEffectiveValue('paddingTop'));
+}
+
+// xbStyle.getPaddingRight()
+
+function cssStyleGetPaddingRight()
+{
+ return xbToInt(this.getEffectiveValue('paddingRight'));
+}
+
+// xbStyle.getPaddingBottom()
+
+function cssStyleGetPaddingBottom()
+{
+ return xbToInt(this.getEffectiveValue('paddingBottom'));
+}
+
+// xbStyle.getPaddingLeft()
+
+function cssStyleGetPaddingLeft()
+{
+ return xbToInt(this.getEffectiveValue('paddingLeft'));
+}
+
+// xbStyle.getClientWidth()
+
+function cssStyleGetClientWidth()
+{
+ return this.getWidth() + this.getPaddingLeft() + this.getPaddingRight();
+ /*
+ if (typeof(this.object.clientWidth) == 'number')
+ return this.object.clientWidth;
+
+ return null;
+ */
+}
+
+// xbStyle.getClientHeight()
+
+function cssStyleGetClientHeight()
+{
+ return this.getHeight() + this.getPaddingTop() + this.getPaddingBottom();
+ /*
+ if (typeof(this.object.clientHeight) == 'number')
+ return this.object.clientHeight;
+
+ return null;
+ */
+}
+
+xbStyle.prototype.getClip = cssStyleGetClip;
+xbStyle.prototype.setClip = cssStyleSetClip;
+xbStyle.prototype.getClipTop = cssStyleGetClipTop;
+xbStyle.prototype.setClipTop = cssStyleSetClipTop;
+xbStyle.prototype.getClipRight = cssStyleGetClipRight;
+xbStyle.prototype.setClipRight = cssStyleSetClipRight;
+xbStyle.prototype.getClipBottom = cssStyleGetClipBottom;
+xbStyle.prototype.setClipBottom = cssStyleSetClipBottom;
+xbStyle.prototype.getClipLeft = cssStyleGetClipLeft;
+xbStyle.prototype.setClipLeft = cssStyleSetClipLeft;
+xbStyle.prototype.getClipWidth = cssStyleGetClipWidth;
+xbStyle.prototype.setClipWidth = cssStyleSetClipWidth;
+xbStyle.prototype.getClipHeight = cssStyleGetClipHeight;
+xbStyle.prototype.setClipHeight = cssStyleSetClipHeight;
+xbStyle.prototype.getLeft = cssStyleGetLeft;
+xbStyle.prototype.setLeft = cssStyleSetLeft;
+xbStyle.prototype.getTop = cssStyleGetTop;
+xbStyle.prototype.setTop = cssStyleSetTop;
+xbStyle.prototype.getPageX = cssStyleGetPageX;
+xbStyle.prototype.setPageX = cssStyleSetPageX;
+xbStyle.prototype.getPageY = cssStyleGetPageY;
+xbStyle.prototype.setPageY = cssStyleSetPageY;
+xbStyle.prototype.getVisibility = cssStyleGetVisibility;
+xbStyle.prototype.setVisibility = cssStyleSetVisibility;
+xbStyle.prototype.getzIndex = cssStyleGetzIndex;
+xbStyle.prototype.setzIndex = cssStyleSetzIndex;
+xbStyle.prototype.getHeight = cssStyleGetHeight;
+xbStyle.prototype.setHeight = cssStyleSetHeight;
+xbStyle.prototype.getWidth = cssStyleGetWidth;
+xbStyle.prototype.setWidth = cssStyleSetWidth;
+xbStyle.prototype.getBackgroundColor = cssStyleGetBackgroundColor;
+xbStyle.prototype.setBackgroundColor = cssStyleSetBackgroundColor;
+xbStyle.prototype.getColor = cssStyleGetColor;
+xbStyle.prototype.setColor = cssStyleSetColor;
+xbStyle.prototype.setInnerHTML = xbSetInnerHTML;
+xbStyle.prototype.getBorderTopWidth = cssStyleGetBorderTopWidth;
+xbStyle.prototype.getBorderRightWidth = cssStyleGetBorderRightWidth;
+xbStyle.prototype.getBorderBottomWidth = cssStyleGetBorderBottomWidth;
+xbStyle.prototype.getBorderLeftWidth = cssStyleGetBorderLeftWidth;
+xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft;
+xbStyle.prototype.getMarginTop = cssStyleGetMarginTop;
+xbStyle.prototype.getMarginRight = cssStyleGetMarginRight;
+xbStyle.prototype.getMarginBottom = cssStyleGetMarginBottom;
+xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft;
+xbStyle.prototype.getPaddingTop = cssStyleGetPaddingTop;
+xbStyle.prototype.getPaddingRight = cssStyleGetPaddingRight;
+xbStyle.prototype.getPaddingBottom = cssStyleGetPaddingBottom;
+xbStyle.prototype.getPaddingLeft = cssStyleGetPaddingLeft;
+xbStyle.prototype.getClientWidth = cssStyleGetClientWidth;
+xbStyle.prototype.getClientHeight = cssStyleGetClientHeight;
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js
new file mode 100644
index 0000000..03aacff
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-nn4.js
@@ -0,0 +1,485 @@
+/*
+ * xbStyle-nn4.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:22 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getClip()
+
+function nsxbStyleGetClip()
+{
+ var clip = this.styleObj.clip;
+ var rect = new xbClipRect(clip.top, clip.right, clip.bottom, clip.left);
+ return rect.toString();
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.setClip()
+
+function nsxbStyleSetClip(sClipString)
+{
+ var rect = new xbClipRect(sClipString);
+ this.styleObj.clip.top = rect.top;
+ this.styleObj.clip.right = rect.right;
+ this.styleObj.clip.bottom = rect.bottom;
+ this.styleObj.clip.left = rect.left;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getClipTop()
+
+function nsxbStyleGetClipTop()
+{
+ return this.styleObj.clip.top;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.setClipTop()
+
+function nsxbStyleSetClipTop(top)
+{
+ return this.styleObj.clip.top = top;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getClipRight()
+
+function nsxbStyleGetClipRight()
+{
+ return this.styleObj.clip.right;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.setClipRight()
+
+function nsxbStyleSetClipRight(right)
+{
+ return this.styleObj.clip.right = right;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getClipBottom()
+
+function nsxbStyleGetClipBottom()
+{
+ return this.styleObj.clip.bottom;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.setClipBottom()
+
+function nsxbStyleSetClipBottom(bottom)
+{
+ return this.styleObj.clip.bottom = bottom;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getClipLeft()
+
+function nsxbStyleGetClipLeft()
+{
+ return this.styleObj.clip.left;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.setClipLeft()
+
+function nsxbStyleSetClipLeft(left)
+{
+ return this.styleObj.clip.left = left;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getClipWidth()
+
+function nsxbStyleGetClipWidth()
+{
+ return this.styleObj.clip.width;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.setClipWidth()
+
+function nsxbStyleSetClipWidth(width)
+{
+ return this.styleObj.clip.width = width;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getClipHeight()
+
+function nsxbStyleGetClipHeight()
+{
+ return this.styleObj.clip.height;
+}
+
+/////////////////////////////////////////////////////////////
+// xbStyle.setClipHeight()
+
+function nsxbStyleSetClipHeight(height)
+{
+ return this.styleObj.clip.height = height;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getLeft()
+
+function nsxbStyleGetLeft()
+{
+ return this.styleObj.left;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setLeft()
+
+function nsxbStyleSetLeft(left)
+{
+ this.styleObj.left = left;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getTop()
+
+function nsxbStyleGetTop()
+{
+ return this.styleObj.top;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setTop()
+
+function nsxbStyleSetTop(top)
+{
+ this.styleObj.top = top;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getPageX()
+
+function nsxbStyleGetPageX()
+{
+ return this.styleObj.pageX;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setPageX()
+
+function nsxbStyleSetPageX(x)
+{
+ this.styleObj.x = this.styleObj.x + x - this.styleObj.pageX;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getPageY()
+
+
+function nsxbStyleGetPageY()
+{
+ return this.styleObj.pageY;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setPageY()
+
+function nsxbStyleSetPageY(y)
+{
+ this.styleObj.y = this.styleObj.y + y - this.styleObj.pageY;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getHeight()
+
+function nsxbStyleGetHeight()
+{
+ //if (this.styleObj.document && this.styleObj.document.height)
+ // return this.styleObj.document.height;
+
+ return this.styleObj.clip.height;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setHeight()
+
+function nsxbStyleSetHeight(height)
+{
+ this.styleObj.clip.height = height;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getWidth()
+
+function nsxbStyleGetWidth()
+{
+ //if (this.styleObj.document && this.styleObj.document.width)
+ // return this.styleObj.document.width;
+
+ return this.styleObj.clip.width;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setWidth()
+
+// netscape will not dynamically change the width of a
+// layer. It will only happen upon a refresh.
+function nsxbStyleSetWidth(width)
+{
+ this.styleObj.clip.width = width;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getVisibility()
+
+function nsxbStyleGetVisibility()
+{
+ switch(this.styleObj.visibility)
+ {
+ case 'hide':
+ return 'hidden';
+ case 'show':
+ return 'visible';
+ }
+ return '';
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setVisibility()
+
+function nsxbStyleSetVisibility(visibility)
+{
+ switch(visibility)
+ {
+ case 'hidden':
+ visibility = 'hide';
+ break;
+ case 'visible':
+ visibility = 'show';
+ break;
+ case 'inherit':
+ break;
+ default:
+ visibility = 'show';
+ break;
+ }
+ this.styleObj.visibility = visibility;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getzIndex()
+
+function nsxbStyleGetzIndex()
+{
+ return this.styleObj.zIndex;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setzIndex()
+
+function nsxbStyleSetzIndex(zIndex)
+{
+ this.styleObj.zIndex = zIndex;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getBackgroundColor()
+
+function nsxbStyleGetBackgroundColor()
+{
+ return this.styleObj.bgColor;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setBackgroundColor()
+
+function nsxbStyleSetBackgroundColor(color)
+{
+ if (color)
+ {
+ this.styleObj.bgColor = color;
+ this.object.document.bgColor = color;
+ this.resizeTo(this.getWidth(), this.getHeight());
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.getColor()
+
+function nsxbStyleGetColor()
+{
+ return '#ffffff';
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setColor()
+
+function nsxbStyleSetColor(color)
+{
+ this.object.document.fgColor = color;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveAbove()
+
+function xbStyleMoveAbove(cont)
+{
+ this.setzIndex(cont.getzIndex()+1);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveBelow()
+
+function xbStyleMoveBelow(cont)
+{
+ var zindex = cont.getzIndex() - 1;
+
+ this.setzIndex(zindex);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveBy()
+
+function xbStyleMoveBy(deltaX, deltaY)
+{
+ this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveTo()
+
+function xbStyleMoveTo(x, y)
+{
+ this.setLeft(x);
+ this.setTop(y);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveToAbsolute()
+
+function xbStyleMoveToAbsolute(x, y)
+{
+ this.setPageX(x);
+ this.setPageY(y);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.resizeBy()
+
+function xbStyleResizeBy(deltaX, deltaY)
+{
+ this.setWidth( this.getWidth() + deltaX );
+ this.setHeight( this.getHeight() + deltaY );
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.resizeTo()
+
+function xbStyleResizeTo(x, y)
+{
+ this.setWidth(x);
+ this.setHeight(y);
+}
+
+////////////////////////////////////////////////////////////////////////
+// Navigator 4.x resizing...
+
+function nsxbStyleOnresize()
+{
+ if (saveInnerWidth != xbGetWindowWidth() || saveInnerHeight != xbGetWindowHeight())
+ location.reload();
+
+ return false;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.setInnerHTML()
+
+function nsxbSetInnerHTML(str)
+{
+ this.object.document.open('text/html');
+ this.object.document.write(str);
+ this.object.document.close();
+}
+
+xbStyle.prototype.getClip = nsxbStyleGetClip;
+xbStyle.prototype.setClip = nsxbStyleSetClip;
+xbStyle.prototype.getClipTop = nsxbStyleGetClipTop;
+xbStyle.prototype.setClipTop = nsxbStyleSetClipTop;
+xbStyle.prototype.getClipRight = nsxbStyleGetClipRight;
+xbStyle.prototype.setClipRight = nsxbStyleSetClipRight;
+xbStyle.prototype.getClipBottom = nsxbStyleGetClipBottom;
+xbStyle.prototype.setClipBottom = nsxbStyleSetClipBottom;
+xbStyle.prototype.getClipLeft = nsxbStyleGetClipLeft;
+xbStyle.prototype.setClipLeft = nsxbStyleSetClipLeft;
+xbStyle.prototype.getClipWidth = nsxbStyleGetClipWidth;
+xbStyle.prototype.setClipWidth = nsxbStyleSetClipWidth;
+xbStyle.prototype.getClipHeight = nsxbStyleGetClipHeight;
+xbStyle.prototype.setClipHeight = nsxbStyleSetClipHeight;
+xbStyle.prototype.getLeft = nsxbStyleGetLeft;
+xbStyle.prototype.setLeft = nsxbStyleSetLeft;
+xbStyle.prototype.getTop = nsxbStyleGetTop;
+xbStyle.prototype.setTop = nsxbStyleSetTop;
+xbStyle.prototype.getPageX = nsxbStyleGetPageX;
+xbStyle.prototype.setPageX = nsxbStyleSetPageX;
+xbStyle.prototype.getPageY = nsxbStyleGetPageY;
+xbStyle.prototype.setPageY = nsxbStyleSetPageY;
+xbStyle.prototype.getVisibility = nsxbStyleGetVisibility;
+xbStyle.prototype.setVisibility = nsxbStyleSetVisibility;
+xbStyle.prototype.getzIndex = nsxbStyleGetzIndex;
+xbStyle.prototype.setzIndex = nsxbStyleSetzIndex;
+xbStyle.prototype.getHeight = nsxbStyleGetHeight;
+xbStyle.prototype.setHeight = nsxbStyleSetHeight;
+xbStyle.prototype.getWidth = nsxbStyleGetWidth;
+xbStyle.prototype.setWidth = nsxbStyleSetWidth;
+xbStyle.prototype.getBackgroundColor = nsxbStyleGetBackgroundColor;
+xbStyle.prototype.setBackgroundColor = nsxbStyleSetBackgroundColor;
+xbStyle.prototype.getColor = nsxbStyleGetColor;
+xbStyle.prototype.setColor = nsxbStyleSetColor;
+xbStyle.prototype.setInnerHTML = nsxbSetInnerHTML;
+xbStyle.prototype.getBorderTopWidth = xbStyleNotSupported;
+xbStyle.prototype.getBorderRightWidth = xbStyleNotSupported;
+xbStyle.prototype.getBorderBottomWidth = xbStyleNotSupported;
+xbStyle.prototype.getBorderLeftWidth = xbStyleNotSupported;
+xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
+xbStyle.prototype.getMarginTop = xbStyleNotSupported;
+xbStyle.prototype.getMarginRight = xbStyleNotSupported;
+xbStyle.prototype.getMarginBottom = xbStyleNotSupported;
+xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
+xbStyle.prototype.getPaddingTop = xbStyleNotSupported;
+xbStyle.prototype.getPaddingRight = xbStyleNotSupported;
+xbStyle.prototype.getPaddingBottom = xbStyleNotSupported;
+xbStyle.prototype.getPaddingLeft = xbStyleNotSupported;
+xbStyle.prototype.getClientWidth = xbStyleNotSupported;
+xbStyle.prototype.getClientHeight = xbStyleNotSupported;
+
+window.saveInnerWidth = window.innerWidth;
+window.saveInnerHeight = window.innerHeight;
+
+window.onresize = nsxbStyleOnresize;
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js
new file mode 100644
index 0000000..06c4a60
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle-not-supported.js
@@ -0,0 +1,77 @@
+/*
+ * xbStyle-not-supported.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:22 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+xbStyle.prototype.toString = xbStyleNotSupported;
+xbStyle.prototype.getClip = xbStyleNotSupported;
+xbStyle.prototype.setClip = xbStyleNotSupported;
+xbStyle.prototype.getClipTop = xbStyleNotSupported;
+xbStyle.prototype.setClipTop = xbStyleNotSupported;
+xbStyle.prototype.getClipRight = xbStyleNotSupported;
+xbStyle.prototype.setClipRight = xbStyleNotSupported;
+xbStyle.prototype.getClipBottom = xbStyleNotSupported;
+xbStyle.prototype.setClipBottom = xbStyleNotSupported;
+xbStyle.prototype.getClipLeft = xbStyleNotSupported;
+xbStyle.prototype.setClipLeft = xbStyleNotSupported;
+xbStyle.prototype.getClipWidth = xbStyleNotSupported;
+xbStyle.prototype.setClipWidth = xbStyleNotSupported;
+xbStyle.prototype.getClipHeight = xbStyleNotSupported;
+xbStyle.prototype.setClipHeight = xbStyleNotSupported;
+xbStyle.prototype.getLeft = xbStyleNotSupported;
+xbStyle.prototype.setLeft = xbStyleNotSupported;
+xbStyle.prototype.getTop = xbStyleNotSupported;
+xbStyle.prototype.setTop = xbStyleNotSupported;
+xbStyle.prototype.getVisibility = xbStyleNotSupported;
+xbStyle.prototype.setVisibility = xbStyleNotSupported;
+xbStyle.prototype.getzIndex = xbStyleNotSupported;
+xbStyle.prototype.setzIndex = xbStyleNotSupported;
+xbStyle.prototype.getHeight = xbStyleNotSupported;
+xbStyle.prototype.setHeight = xbStyleNotSupported;
+xbStyle.prototype.getWidth = xbStyleNotSupported;
+xbStyle.prototype.setWidth = xbStyleNotSupported;
+xbStyle.prototype.getBackgroundColor = xbStyleNotSupported;
+xbStyle.prototype.setBackgroundColor = xbStyleNotSupported;
+xbStyle.prototype.getColor = xbStyleNotSupported;
+xbStyle.prototype.setColor = xbStyleNotSupported;
+xbStyle.prototype.setInnerHTML = xbStyleNotSupported;
+xbStyle.prototype.getBorderTopWidth = xbStyleNotSupported;
+xbStyle.prototype.getBorderRightWidth = xbStyleNotSupported;
+xbStyle.prototype.getBorderBottomWidth = xbStyleNotSupported;
+xbStyle.prototype.getBorderLeftWidth = xbStyleNotSupported;
+xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
+xbStyle.prototype.getMarginTop = xbStyleNotSupported;
+xbStyle.prototype.getMarginRight = xbStyleNotSupported;
+xbStyle.prototype.getMarginBottom = xbStyleNotSupported;
+xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
+xbStyle.prototype.getPaddingTop = xbStyleNotSupported;
+xbStyle.prototype.getPaddingRight = xbStyleNotSupported;
+xbStyle.prototype.getPaddingBottom = xbStyleNotSupported;
+xbStyle.prototype.getPaddingLeft = xbStyleNotSupported;
+xbStyle.prototype.getClientWidth = xbStyleNotSupported;
+xbStyle.prototype.getClientHeight = xbStyleNotSupported;
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js
new file mode 100644
index 0000000..672ff03
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbStyle.js
@@ -0,0 +1,295 @@
+/*
+ * xbStyle.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:22 $
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function xbStyleNotSupported() {}
+
+function xbStyleNotSupportStringValue(propname) { xbDEBUG.dump(propname + ' is not supported in this browser'); return '';};
+
+/////////////////////////////////////////////////////////////
+// xbClipRect
+
+function xbClipRect(a1, a2, a3, a4)
+{
+ this.top = 0;
+ this.right = 0;
+ this.bottom = 0;
+ this.left = 0;
+
+ if (typeof(a1) == 'string')
+ {
+ var val;
+ var ca;
+ var i;
+
+ if (a1.indexOf('rect(') == 0)
+ {
+ // I would have preferred [0-9]+[a-zA-Z]+ for a regexp
+ // but NN4 returns null for that.
+ ca = a1.substring(5, a1.length-1).match(/-?[0-9a-zA-Z]+/g);
+ for (i = 0; i < 4; ++i)
+ {
+ val = xbToInt(ca[i]);
+ if (val != 0 && ca[i].indexOf('px') == -1)
+ {
+ xbDEBUG.dump('xbClipRect: A clipping region ' + a1 + ' was detected that did not use pixels as units. Click Ok to continue, Cancel to Abort');
+ return;
+ }
+ ca[i] = val;
+ }
+ this.top = ca[0];
+ this.right = ca[1];
+ this.bottom = ca[2];
+ this.left = ca[3];
+ }
+ }
+ else if (typeof(a1) == 'number' && typeof(a2) == 'number' && typeof(a3) == 'number' && typeof(a4) == 'number')
+ {
+ this.top = a1;
+ this.right = a2;
+ this.bottom = a3;
+ this.left = a4;
+ }
+}
+
+xbClipRect.prototype.top = 0;
+xbClipRect.prototype.right = 0;
+xbClipRect.prototype.bottom = 0;
+xbClipRect.prototype.left = 0;
+
+
+function xbClipRectGetWidth()
+{
+ return this.right - this.left;
+}
+xbClipRect.prototype.getWidth = xbClipRectGetWidth;
+
+function xbClipRectSetWidth(width)
+{
+ this.right = this.left + width;
+}
+xbClipRect.prototype.setWidth = xbClipRectSetWidth;
+
+function xbClipRectGetHeight()
+{
+ return this.bottom - this.top;
+}
+xbClipRect.prototype.getHeight = xbClipRectGetHeight;
+
+function xbClipRectSetHeight(height)
+{
+ this.bottom = this.top + height;
+}
+xbClipRect.prototype.setHeight = xbClipRectSetHeight;
+
+function xbClipRectToString()
+{
+ return 'rect(' + this.top + 'px ' + this.right + 'px ' + this.bottom + 'px ' + this.left + 'px )' ;
+}
+xbClipRect.prototype.toString = xbClipRectToString;
+
+/////////////////////////////////////////////////////////////
+// xbStyle
+//
+// Note Opera violates the standard by cascading the effective values
+// into the HTMLElement.style object. We can use IE's HTMLElement.currentStyle
+// to get the effective values. In Gecko we will use the W3 DOM Style Standard getComputedStyle
+
+function xbStyle(obj, win, position)
+{
+ if (typeof(obj) == 'object' && typeof(obj.style) != 'undefined')
+ this.styleObj = obj.style;
+ else if (document.layers) // NN4
+ {
+ if (typeof(position) == 'undefined')
+ position = '';
+
+ this.styleObj = obj;
+ this.styleObj.position = position;
+ }
+ this.object = obj;
+ this.window = win ? win : window;
+}
+
+xbStyle.prototype.styleObj = null;
+xbStyle.prototype.object = null;
+
+/////////////////////////////////////////////////////////////
+// xbStyle.getEffectiveValue()
+// note that xbStyle's constructor uses the currentStyle object
+// for IE5+ and that Opera's style object contains computed values
+// already. Netscape Navigator's layer object also contains the
+// computed values as well. Note that IE4 will not return the
+// computed values.
+
+function xbStyleGetEffectiveValue(propname)
+{
+ var value = null;
+
+ if (this.window.document.defaultView && this.window.document.defaultView.getComputedStyle)
+ {
+ // W3
+ // Note that propname is the name of the property in the CSS Style
+ // Object. However the W3 method getPropertyValue takes the actual
+ // property name from the CSS Style rule, i.e., propname is
+ // 'backgroundColor' but getPropertyValue expects 'background-color'.
+
+ var capIndex;
+ var cappropname = propname;
+
+ while ( (capIndex = cappropname.search(/[A-Z]/)) != -1)
+ {
+ if (capIndex != -1)
+ {
+ cappropname = cappropname.substring(0, capIndex) + '-' + cappropname.substring(capIndex, capIndex+1).toLowerCase() + cappropname.substr(capIndex+1);
+ }
+ }
+
+ value = this.window.document.defaultView.getComputedStyle(this.object, '').getPropertyValue(cappropname);
+
+ // xxxHack for Gecko:
+ if (!value && this.styleObj[propname])
+ {
+ value = this.styleObj[propname];
+ }
+ }
+ else if (typeof(this.styleObj[propname]) == 'undefined')
+ {
+ value = xbStyleNotSupportStringValue(propname);
+ }
+ else if (typeof(this.object.currentStyle) != 'undefined')
+ {
+ // IE5+
+ value = this.object.currentStyle[propname];
+ if (!value)
+ {
+ value = this.styleObj[propname];
+ }
+
+ if (propname == 'clip' && !value)
+ {
+ // clip is not stored in IE5/6 handle separately
+ value = 'rect(' + this.object.currentStyle.clipTop + ', ' + this.object.currentStyle.clipRight + ', ' + this.object.currentStyle.clipBottom + ', ' + this.object.currentStyle.clipLeft + ')';
+ }
+ }
+ else
+ {
+ // IE4+, Opera, NN4
+ value = this.styleObj[propname];
+ }
+
+ return value;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveAbove()
+
+function xbStyleMoveAbove(cont)
+{
+ this.setzIndex(cont.getzIndex()+1);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveBelow()
+
+function xbStyleMoveBelow(cont)
+{
+ var zindex = cont.getzIndex() - 1;
+
+ this.setzIndex(zindex);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveBy()
+
+function xbStyleMoveBy(deltaX, deltaY)
+{
+ this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveTo()
+
+function xbStyleMoveTo(x, y)
+{
+ this.setLeft(x);
+ this.setTop(y);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.moveToAbsolute()
+
+function xbStyleMoveToAbsolute(x, y)
+{
+ this.setPageX(x);
+ this.setPageY(y);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.resizeBy()
+
+function xbStyleResizeBy(deltaX, deltaY)
+{
+ this.setWidth( this.getWidth() + deltaX );
+ this.setHeight( this.getHeight() + deltaY );
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// xbStyle.resizeTo()
+
+function xbStyleResizeTo(x, y)
+{
+ this.setWidth(x);
+ this.setHeight(y);
+}
+
+////////////////////////////////////////////////////////////////////////
+
+xbStyle.prototype.getEffectiveValue = xbStyleGetEffectiveValue;
+xbStyle.prototype.moveAbove = xbStyleMoveAbove;
+xbStyle.prototype.moveBelow = xbStyleMoveBelow;
+xbStyle.prototype.moveBy = xbStyleMoveBy;
+xbStyle.prototype.moveTo = xbStyleMoveTo;
+xbStyle.prototype.moveToAbsolute = xbStyleMoveToAbsolute;
+xbStyle.prototype.resizeBy = xbStyleResizeBy;
+xbStyle.prototype.resizeTo = xbStyleResizeTo;
+
+if (document.all || document.getElementsByName)
+{
+ xblibrary.loadScript('xbStyle-css.js');
+}
+else if (document.layers)
+{
+ xblibrary.loadScript('xbStyle-nn4.js');
+}
+else
+{
+ xblibrary.loadScript('xbStyle-not-supported.js');
+}
+
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml
new file mode 100644
index 0000000..040ac22
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xml
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0" xml:id="slides_fo_doc">
+<info>
+<title>Slides FO Parameter Reference</title>
+<releaseinfo role="meta">
+$Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+</releaseinfo>
+<author>
+ <personname>
+ <surname>Walsh</surname>
+ <firstname>Norman</firstname>
+ </personname>
+</author>
+<copyright>
+ <year>2002</year>
+ <holder>Norman Walsh</holder>
+</copyright>
+<abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook XSL Slides FO stylesheet (for
+ generating PDF slide presentations). Note that the Slides
+ stylesheet for FO output is a customization layer of the
+ DocBook XSL FO stylesheet. Therefore, in addition to the
+ slides-specific parameters listed in this section, you can
+ also use a number of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../fo/">FO stylesheet
+ parameters</link> to control Slides FO output.</para>
+</abstract>
+</info>
+<reference xml:id="fo">
+ <title>FO: General Params</title>
+<refentry version="5.0" xml:id="slide.title.font.family">
+<refmeta>
+<refentrytitle>slide.title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slide.title.font.family</refname>
+<refpurpose>Specifies font family to use for slide titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="slide.title.font.family.frag">
+&lt;xsl:param name="slide.title.font.family"&gt;Helvetica&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font family to use for slides titles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slide.font.family">
+<refmeta>
+<refentrytitle>slide.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slide.font.family</refname>
+<refpurpose>Specifies font family to use for slide bodies</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="slide.font.family.frag">
+&lt;xsl:param name="slide.font.family"&gt;Helvetica&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the font family to use for slides bodies.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.title.master">
+<refmeta>
+<refentrytitle>foil.title.master</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.master</refname>
+<refpurpose>Specifies unitless font size to use for foil titles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="foil.title.master.frag">
+&lt;xsl:param name="foil.title.master"&gt;36&lt;/xsl:param&gt;
+&lt;!-- Inconsistant use of point size? --&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies a unitless font size to use for foil titles; used in
+combination with the <parameter>foil.title.size</parameter>
+parameter.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.title.size">
+<refmeta>
+<refentrytitle>foil.title.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.size</refname>
+<refpurpose>Specifies font size to use for foil titles, including units</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.title.size.frag">
+ &lt;xsl:param name="foil.title.size"&gt;
+ &lt;xsl:value-of select="$foil.title.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter combines the value of the
+<parameter>foil.title.master</parameter> parameter with a unit
+specification. The default unit is <literal>pt</literal>
+(points).</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="propsets">
+ <title>FO: Property Sets</title>
+<refentry version="5.0" xml:id="slides.properties">
+<refmeta>
+<refentrytitle>slides.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.properties</refname>
+<refpurpose>Specifies properties for all slides</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.properties.frag">
+ &lt;xsl:attribute-set name="slides.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all slides.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foilgroup.properties">
+<refmeta>
+<refentrytitle>foilgroup.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foilgroup.properties</refname>
+<refpurpose>Specifies properties for all foilgroups</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foilgroup.properties.frag">
+ &lt;xsl:attribute-set name="foilgroup.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foilgroups.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.subtitle.properties">
+<refmeta>
+<refentrytitle>foil.subtitle.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.subtitle.properties</refname>
+<refpurpose>Specifies properties for all foil subtitles</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.subtitle.properties.frag">
+ &lt;xsl:attribute-set name="foil.subtitle.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$foil.title.master * 0.8"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foil subtitles.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.properties">
+<refmeta>
+<refentrytitle>foil.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.properties</refname>
+<refpurpose>Specifies properties for all foils</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.properties.frag">
+ &lt;xsl:attribute-set name="foil.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foils.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="speakernote.properties">
+<refmeta>
+<refentrytitle>speakernote.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>speakernote.properties</refname>
+<refpurpose>Specifies properties for all speakernotes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="speakernote.properties.frag">
+ &lt;xsl:attribute-set name="speakernote.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;Times Roman&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-style"&gt;italic&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all speakernotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="running.foot.properties">
+<refmeta>
+<refentrytitle>running.foot.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>running.foot.properties</refname>
+<refpurpose>Specifies properties for running foot on each slide</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="running.foot.properties.frag">
+ &lt;xsl:attribute-set name="running.foot.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;14pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="color"&gt;#9F9F9F&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to the
+running foot area of each slide.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+
+<appendix xml:id="styleheet"><title>The Stylesheet</title>
+
+<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
+around all these parameters.</para>
+
+<programlisting xml:id="top">
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook Slides Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="slide.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slide.title.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.title.master.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.title.size.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foilgroup.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.subtitle.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="running.foot.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="speakernote.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.properties.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;/xsl:stylesheet&gt;
+</programlisting>
+
+</appendix>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl
new file mode 100644
index 0000000..bfeb493
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/param.xsl
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook Slides Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="slide.font.family">Helvetica</xsl:param>
+<xsl:param name="slide.title.font.family">Helvetica</xsl:param>
+<xsl:param name="foil.title.master">36</xsl:param>
+<!-- Inconsistant use of point size? -->
+ <xsl:param name="foil.title.size">
+ <xsl:value-of select="$foil.title.master"/><xsl:text>pt</xsl:text>
+ </xsl:param>
+
+ <xsl:attribute-set name="foilgroup.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="foil.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.start}">1in</xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">1in</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.size"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="foil.subtitle.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$foil.title.master * 0.8"/><xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="space-after">12pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="running.foot.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">14pt</xsl:attribute>
+ <xsl:attribute name="color">#9F9F9F</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="speakernote.properties">
+ <xsl:attribute name="font-family">Times Roman</xsl:attribute>
+ <xsl:attribute name="font-style">italic</xsl:attribute>
+ <xsl:attribute name="font-size">12pt</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="slides.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml
new file mode 100644
index 0000000..d0a92da
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xml
@@ -0,0 +1,79 @@
+<!DOCTYPE t:templates [
+<!ENTITY hsize0 "10pt">
+<!ENTITY hsize1 "12pt">
+<!ENTITY hsize2 "14.4pt">
+<!ENTITY hsize3 "17.28pt">
+<!ENTITY hsize4 "20.736pt">
+<!ENTITY hsize5 "24.8832pt">
+<!ENTITY hsize0space "7.5pt"> <!-- 0.75 * hsize0 -->
+<!ENTITY hsize1space "9pt"> <!-- 0.75 * hsize1 -->
+<!ENTITY hsize2space "10.8pt"> <!-- 0.75 * hsize2 -->
+<!ENTITY hsize3space "12.96pt"> <!-- 0.75 * hsize3 -->
+<!ENTITY hsize4space "15.552pt"> <!-- 0.75 * hsize4 -->
+<!ENTITY hsize5space "18.6624pt"> <!-- 0.75 * hsize5 -->
+]>
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="slides" t:wrapper="fo:block">
+ <t:titlepage-content t:side="recto">
+ <title t:predicate="[1]"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::slides[1]"
+ text-align="center"
+ space-after="1em"
+ padding-top="1.5in"
+ keep-with-next="always"
+ font-size="{$foil.title.size}"
+ font-weight="bold"
+ font-family="{$slide.title.font.family}"/>
+
+ <subtitle t:predicate="[1]"
+ text-align="center"
+ space-after="1em"
+ font-family="{$slide.title.font.family}"/>
+
+ <corpauthor font-size="&hsize4;"
+ text-align="center"
+ space-after="1em"/>
+ <authorgroup/>
+ <author font-size="&hsize4;"
+ text-align="center"
+ space-after="1em"/>
+
+ <pubdate font-size="&hsize3;"
+ text-align="center"
+ space-after="1em"/>
+
+ <confgroup font-size="&hsize3;"
+ text-align="center"
+ space-after="1em"/>
+
+ <releaseinfo font-size="&hsize3;"
+ text-align="center"
+ space-after="1em"/>
+
+ <copyright font-size="&hsize3;"
+ text-align="center"/>
+
+ <revision text-align="center"/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+</t:templates>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl
new file mode 100644
index 0000000..a6148aa
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain-titlepage.xsl
@@ -0,0 +1,187 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl-->
+
+<xsl:template name="slides.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="slidesinfo/title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/title[1]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/title[1]"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/title[1]"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="title[1]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="slidesinfo/subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/subtitle[1]"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/subtitle[1]"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/subtitle[1]"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="subtitle[1]"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/corpauthor"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/authorgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/author"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/pubdate"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/confgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/confgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/confgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/releaseinfo"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/copyright"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/revision"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/revision"/>
+</xsl:template>
+
+<xsl:template name="slides.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="slides.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="slides.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="slides.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="slides.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="slides.titlepage.before.recto"/>
+ <xsl:call-template name="slides.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="slides.titlepage.before.verso"/>
+ <xsl:call-template name="slides.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="slides.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="slides.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="slides.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" text-align="center" space-after="1em" padding-top="1.5in" keep-with-next="always" font-size="{$foil.title.size}" font-weight="bold" font-family="{$slide.title.font.family}">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::slides[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" text-align="center" space-after="1em" font-family="{$slide.title.font.family}">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="20.736pt" text-align="center" space-after="1em">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="20.736pt" text-align="center" space-after="1em">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center" space-after="1em">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center" space-after="1em">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center" space-after="1em">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="slides.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="slides.titlepage.recto.style" text-align="center">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl
new file mode 100644
index 0000000..b4e729e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/fo/plain.xsl
@@ -0,0 +1,528 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:rx="http://www.renderx.com/XSL/Extensions"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: plain.xsl 8101 2008-08-03 18:35:14Z mzjn $
+ ********************************************************************
+
+ This file is part of the DocBook Slides Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:import href="../../fo/docbook.xsl"/>
+<xsl:import href="param.xsl"/>
+
+<xsl:param name="alignment" select="'start'"/>
+
+<xsl:include href="plain-titlepage.xsl"/>
+
+<xsl:param name="local.l10n.xml" select="document('')"/>
+<i18n xmlns="http://docbook.sourceforge.net/xmlns/l10n/1.0">
+ <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en">
+ <l:gentext key="Continued" text="(Continued)"/>
+ <l:context name="title">
+ <l:template name="slides" text="%t"/>
+ <l:template name="foilgroup" text="%t"/>
+ <l:template name="foil" text="%t"/>
+ </l:context>
+ </l:l10n>
+</i18n>
+
+<xsl:variable name="root.elements" select="' slides '"/>
+
+<xsl:param name="preferred.mediaobject.role" select="'print'"/>
+
+<xsl:param name="page.orientation" select="'landscape'"/>
+
+<xsl:param name="body.font.master" select="24"/>
+
+<xsl:attribute-set name="formal.title.properties"
+ use-attribute-sets="normal.para.spacing">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">8pt</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">6pt</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">10pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="list.block.spacing">
+ <xsl:attribute name="space-before.optimum">12pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">8pt</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">14pt</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="list.item.spacing">
+ <xsl:attribute name="space-before.optimum">6pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">4pt</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">8pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="normal.para.spacing">
+ <xsl:attribute name="space-before.optimum">8pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">6pt</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">10pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="slides.titlepage.recto.style">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="slides.titlepage.verso.style">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.font.family"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<!-- ============================================================ -->
+
+<xsl:param name="page.margin.top" select="'0.25in'"/>
+<xsl:param name="region.before.extent" select="'0.75in'"/>
+<xsl:param name="body.margin.top" select="'1in'"/>
+
+<xsl:param name="region.after.extent" select="'0.5in'"/>
+<xsl:param name="body.margin.bottom" select="'0.5in'"/>
+<xsl:param name="page.margin.bottom" select="'0.25in'"/>
+
+<xsl:param name="page.margin.inner" select="'0.25in'"/>
+<xsl:param name="page.margin.outer" select="'0.25in'"/>
+<xsl:param name="column.count.body" select="1"/>
+
+<xsl:template name="user.pagemasters">
+ <fo:simple-page-master master-name="slides-titlepage-master"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}"
+ margin-left="{$page.margin.inner}"
+ margin-right="{$page.margin.outer}">
+ <fo:region-body margin-bottom="0pt"
+ margin-top="0pt"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="slides-foil-master"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}"
+ margin-left="{$page.margin.inner}"
+ margin-right="{$page.margin.outer}">
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-foil"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-foil"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="slides-foil-continued-master"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}"
+ margin-left="{$page.margin.inner}"
+ margin-right="{$page.margin.outer}">
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-foil-continued"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-foil-continued"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:page-sequence-master master-name="slides-titlepage">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="slides-titlepage-master"/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <fo:page-sequence-master master-name="slides-foil">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="slides-foil-master"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="slides-foil-continued-master"/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+</xsl:template>
+
+<xsl:template match="*" mode="running.head.mode">
+ <xsl:param name="master-reference" select="'unknown'"/>
+ <!-- use the foilgroup title if there is one -->
+ <fo:static-content flow-name="xsl-region-before-foil">
+ <fo:block background-color="white"
+ color="black"
+ font-size="{$foil.title.size}"
+ font-weight="bold"
+ text-align="center"
+ font-family="{$slide.title.font.family}">
+ <xsl:apply-templates select="title" mode="titlepage.mode"/>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-before-foil-continued">
+ <fo:block background-color="white"
+ color="black"
+ font-size="{$foil.title.size}"
+ font-weight="bold"
+ text-align="center"
+ font-family="{$slide.title.font.family}">
+ <xsl:apply-templates select="title" mode="titlepage.mode"/>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Continued'"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:static-content>
+</xsl:template>
+
+<xsl:template match="*" mode="running.foot.mode">
+ <xsl:param name="master-reference" select="'unknown'"/>
+
+ <xsl:variable name="last-slide"
+ select="(//foil|//foilgroup)[last()]"/>
+
+ <xsl:variable name="last-id">
+ <xsl:choose>
+ <xsl:when test="$last-slide/@id">
+ <xsl:value-of select="$last-slide/@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id($last-slide)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="content">
+ <fo:table table-layout="fixed" width="100%"
+ xsl:use-attribute-sets="running.foot.properties">
+ <fo:table-column column-number="1" column-width="33%"/>
+ <fo:table-column column-number="2" column-width="34%"/>
+ <fo:table-column column-number="3" column-width="33%"/>
+ <fo:table-body>
+ <fo:table-row height="14pt">
+ <fo:table-cell text-align="left">
+ <fo:block>
+ <xsl:if test="self::foil">
+ <xsl:choose>
+ <xsl:when test="ancestor::foilgroup[1]/titleabbrev">
+ <xsl:apply-templates select="ancestor::foilgroup[1]/titleabbrev"
+ mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="ancestor::foilgroup[1]/title"
+ mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center">
+ <fo:block>
+ <xsl:if test="/slides/slidesinfo/releaseinfo[@role='copyright']">
+ <xsl:apply-templates select="/slides/slidesinfo/releaseinfo[@role='copyright']"
+ mode="value"/>
+ <xsl:text>&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="titlepage.mode"/>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right">
+ <fo:block>
+ <fo:page-number/>
+ <xsl:text>&#160;/&#160;</xsl:text>
+ <fo:page-number-citation ref-id="{$last-id}"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <fo:static-content flow-name="xsl-region-after-foil">
+ <fo:block>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-after-foil-continued">
+ <fo:block>
+ <xsl:copy-of select="$content"/>
+ </fo:block>
+ </fo:static-content>
+</xsl:template>
+
+<xsl:template name="select.user.pagemaster">
+ <xsl:param name="element"/>
+ <xsl:param name="pageclass"/>
+ <xsl:param name="default-pagemaster"/>
+
+ <xsl:choose>
+ <xsl:when test="$element = 'slides'">slides-titlepage</xsl:when>
+ <xsl:otherwise>slides-foil</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="slides">
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="slides.titlepage"/>
+ <xsl:apply-templates select="speakernotes"/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <xsl:apply-templates select="foil|foilgroup"/>
+</xsl:template>
+
+<xsl:template match="slidesinfo"/>
+
+<xsl:template match="slides" mode="title.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(slidesinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="foilgroup.titlepage">
+ <fo:block background-color="black"
+ color="white"
+ font-size="{$foil.title.size}"
+ font-weight="bold"
+ text-align="center"
+ padding-top="12pt"
+ padding-bottom="12pt"
+ space-after="1em">
+ <xsl:apply-templates select="title" mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="foilgroup">
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>
+ <xsl:if test="*[not(self::foil)]">
+ <fo:block xsl:use-attribute-sets="foil.properties" space-after="1em">
+ <xsl:apply-templates select="*[not(self::foil)]"/>
+ </fo:block>
+ </xsl:if>
+
+ <xsl:call-template name="foilgroup.titlepage"/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="foilgroup/title"/>
+<xsl:template match="foilgroup/titleabbrev"/>
+
+<xsl:template match="foilgroup/titleabbrev" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="slides/foilgroup/title" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="title" mode="foilgroup.titlepage.recto.mode">
+ <fo:block>
+ <fo:inline color="white">.</fo:inline>
+ <fo:block space-before="2in">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </fo:block>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="foilgroupinfo"/>
+
+<!-- ============================================================ -->
+
+<!--
+<xsl:template name="foil.titlepage">
+ <fo:block background-color="white"
+ color="black"
+ font-size="{$foil.title.size}"
+ font-weight="bold"
+ text-align="center"
+ padding-top="12pt"
+ padding-bottom="12pt"
+ space-after="1em">
+ <xsl:apply-templates select="title" mode="titlepage.mode"/>
+ </fo:block>
+</xsl:template>
+-->
+
+<xsl:template match="foil">
+ <xsl:variable name="master-reference">
+ <xsl:call-template name="select.pagemaster"/>
+ </xsl:variable>
+
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="{$master-reference}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="." mode="running.head.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="." mode="running.foot.mode">
+ <xsl:with-param name="master-reference" select="$master-reference"/>
+ </xsl:apply-templates>
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>
+ <fo:block xsl:use-attribute-sets="foil.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="foilinfo"/>
+<xsl:template match="foil/title"/>
+<xsl:template match="foil/subtitle">
+ <fo:block xsl:use-attribute-sets="foil.subtitle.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+<xsl:template match="foil/titleabbrev"/>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slides" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="speakernotes">
+ <fo:block xsl:use-attribute-sets="speakernote.properties">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<!-- ============================================================ -->
+<!-- Bookmarks -->
+
+<!-- XEP -->
+
+<xsl:template match="slides|foilgroup|foil[not(@role) or @role != 'ENDTITLE']"
+ mode="xep.outline">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="bookmark-label">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <!-- Put the root element bookmark at the same level as its children -->
+ <!-- If the object is a set or book, generate a bookmark for the toc -->
+
+ <xsl:choose>
+ <xsl:when test="parent::*">
+ <rx:bookmark internal-destination="{$id}">
+ <rx:bookmark-label>
+ <xsl:value-of select="$bookmark-label"/>
+ </rx:bookmark-label>
+ <xsl:apply-templates select="*" mode="xep.outline"/>
+ </rx:bookmark>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$bookmark-label != ''">
+ <rx:bookmark internal-destination="{$id}">
+ <rx:bookmark-label>
+ <xsl:value-of select="$bookmark-label"/>
+ </rx:bookmark-label>
+ </rx:bookmark>
+ </xsl:if>
+
+ <xsl:apply-templates select="*" mode="xep.outline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Handling of xrefs -->
+
+<xsl:template match="foil|foilgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl
new file mode 100644
index 0000000..1692000
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/css.xsl
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ====================================================================== -->
+
+<xsl:template name="css-file">
+ <xsl:param name="css" select="'slides.css'"/>
+
+ <xsl:variable name="source.css.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'css-stylesheet-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.css.dir != ''">
+ <xsl:value-of select="$source.css.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$css.stylesheet.dir != ''">
+ <xsl:value-of select="$css.stylesheet.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- active navigation images -->
+
+<xsl:template name="css.stylesheet">
+ <xsl:param name="css" select="$css.stylesheet"/>
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="css-file">
+ <xsl:with-param name="css" select="$css"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl
new file mode 100644
index 0000000..00a0d81
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/default.xsl
@@ -0,0 +1,261 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:output method="html"/>
+
+<xsl:param name="css.stylesheet" select="'slides-default.css'"/>
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0"
+ summary="Navigation">
+ <tr>
+ <xsl:call-template name="generate.toc.hide.show"/>
+ <td align="left" width="10%">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td align="center" width="80%">
+ <xsl:variable name="prestitle">
+ <xsl:value-of select="(/slides/slidesinfo/title
+ |/slides/title)[1]"/>
+ </xsl:variable>
+
+ <span class="navheader">
+ <xsl:value-of select="$prestitle"/>
+ </span>
+ </td>
+ <td align="right" width="10%">
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table width="100%" border="0" cellpadding="0" cellspacing="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="slide.footer.mode"/>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <span class="index">
+ <xsl:value-of select="count(preceding::foil)
+ + count(preceding::foilgroup)
+ + count(ancestor::foilgroup)
+ + 1"/>
+ </span>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="10%">
+ <span class="toclink">
+ <a href="{$toc.html}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </span>
+ </td>
+ <td align="center" width="80%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="right" width="10%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="titlepage-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <table width="100%" border="0"
+ cellspacing="0" cellpadding="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="slide.footer.mode"/>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="(following::foilgroup|following::foil)[1]"
+ mode="filename"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="toc-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0"
+ summary="Navigation">
+ <tr>
+ <td align="left">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="toc-bottom-nav">
+ <div class="navfoot">
+ <table width="100%" border="0"
+ cellspacing="0" cellpadding="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="slide.footer.mode"/>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <a href="{$titlefoil.html}">
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="generate.toc.hide.show">
+ <xsl:if test="$toc.hide.show != 0">
+ <td>
+ <img hspace="4" alt="Hide/Show TOC">
+ <xsl:attribute name="src">
+ <xsl:call-template name="hidetoc.image"/>
+ </xsl:attribute>
+ <xsl:attribute name="onClick">
+ <xsl:text>toggletoc(this,</xsl:text>
+ <xsl:value-of select="$toc.width"/>
+ <xsl:text>,'</xsl:text>
+ <xsl:call-template name="hidetoc.image"/>
+ <xsl:text>','</xsl:text>
+ <xsl:call-template name="showtoc.image"/>
+ <xsl:text>');</xsl:text>
+ </xsl:attribute>
+ </img>
+ </td>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="html:*" xmlns:html='http://www.w3.org/1999/xhtml'>
+ <xsl:element name="{local-name(.)}" namespace="">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl
new file mode 100644
index 0000000..30fbf00
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/flat.xsl
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:template match="/">
+ <html>
+ <head>
+ <title><xsl:value-of select="/slides/slidesinfo/title"/></title>
+ </head>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="slidesinfo">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <div id="{$id}" class="titlepage">
+ <div class="titlepage-body">
+ <xsl:call-template name="titlepage-body"/>
+ </div>
+ </div>
+</xsl:template>
+
+<xsl:template match="slides" mode="toc">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="foil">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <div class="{name(.)}" id="{$id}">
+ <div class="foil-body">
+ <xsl:call-template name="foil-body"/>
+ </div>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="foilgroup">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <div class="{name(.)}" id="{$id}">
+ <div class="foilgroup-body">
+ <xsl:call-template name="foilgroup-body"/>
+ </div>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="author" mode="titlepage.mode">
+ <div class="{name(.)}">
+ <h2 class="{name(.)}"><xsl:call-template name="person.name"/></h2>
+ <xsl:apply-templates mode="titlepage.mode" select="./contrib"/>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl
new file mode 100644
index 0000000..05633de
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/frames.xsl
@@ -0,0 +1,2016 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="titlefoil.html" select="concat('titlepg', $html.ext)"/>
+
+<xsl:param name="css.stylesheet" select="'slides-frames.css'"/>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="doctype-public">
+ <xsl:param name="frameset" select="0"/>
+ <xsl:choose>
+ <xsl:when test="$stylesheet.result.type='html'">
+ <xsl:choose>
+ <!-- Assume when chunker.output.doctype-public is set the user
+ wants to have doctypes written out. If frameset is set
+ then overide with a frameset public identifier. -->
+ <xsl:when test="$chunker.output.doctype-public != '' and $frameset != 0">
+ <xsl:text>-//W3C//DTD HTML 4.01 Frameset//EN</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$chunker.output.doctype-public"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$stylesheet.result.type='xhtml'">
+ <xsl:choose>
+ <xsl:when test="$frameset != 0">
+ <xsl:text>-//W3C//DTD XHTML 1.0 Frameset//EN</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>-//W3C//DTD XHTML 1.0 Transitional//EN</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="doctype-system">
+ <xsl:param name="frameset" select="0"/>
+ <xsl:choose>
+ <xsl:when test="$stylesheet.result.type='html'">
+ <xsl:choose>
+ <!-- Assume when chunker.output.doctype-system is set the user
+ wants to have doctypes written out. If frameset is set
+ then overide with a frameset system identifier. -->
+ <xsl:when test="$chunker.output.doctype-system != '' and $frameset != 0">
+ <xsl:text>http://www.w3.org/TR/html4/loose.dtd</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$chunker.output.doctype-system"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$stylesheet.result.type='xhtml'">
+ <xsl:choose>
+ <xsl:when test="$frameset != 0">
+ <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slides">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="(slidesinfo/titleabbrev|titleabbrev)">
+ <xsl:value-of select="(slidesinfo/titleabbrev|titleabbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(slidesinfo/title|title)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="toc.rows" select="1+count(//foilgroup)+count(//foil)"/>
+ <xsl:variable name="toc.height" select="$toc.rows * $toc.row.height"/>
+
+ <xsl:if test="$overlay != 0 and $multiframe != 0">
+ <xsl:message terminate='yes'>
+ <xsl:text>Multiframe and overlay are mutually exclusive.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'frames', $html.ext)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="$title"/></title>
+ </head>
+ <frameset cols="{$toc.width},*" id="topframe">
+ <frame src="{concat('toc', $html.ext)}" name="toc" id="toc" frameborder="1"/>
+ <frame src="{$titlefoil.html}" name="foil" id="foil"/>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <a href="{concat('titleframe', $html.ext)}">
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </a>
+ </body>
+ </noframes>
+ </frameset>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'toc',$html.ext)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>TOC - <xsl:value-of select="$title"/></title>
+ <xsl:call-template name="system.head.content"/>
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0
+ or $overlay.logo != ''">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0' or $overlay.logo != ''">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$dynamic.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+function init() {
+ var width = </xsl:text>
+<xsl:value-of select="$toc.width"/>
+<xsl:text>, height = </xsl:text>
+<xsl:value-of select="$toc.row.height"/>
+<xsl:text>;
+ myList = new List(true, width, height, "</xsl:text>
+<xsl:value-of select="$toc.bg.color"/>
+<xsl:text>","</xsl:text>
+<xsl:call-template name="plus.image"/>
+<xsl:text>","</xsl:text>
+<xsl:call-template name="minus.image"/>
+<xsl:text>");
+</xsl:text>
+<xsl:apply-templates mode="ns-toc"/>
+ <xsl:text disable-output-escaping="yes">
+ myList.build(0,0);
+}
+ // --&gt;
+</xsl:text>
+ </script>
+ <style type="text/css">
+ <xsl:text>#spacer { position: absolute; height: </xsl:text>
+ <xsl:value-of select="$toc.height"/>
+ <xsl:text>; }
+</xsl:text>
+ </style>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="toc">
+ <xsl:call-template name="body.attributes"/>
+
+ <xsl:if test="$overlay.logo != ''">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('ll');</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$dynamic.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>init(</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ <xsl:if test="$overlay.logo != ''">
+ <xsl:text>overlaySetup('ll');</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$dynamic.toc = 0">
+ <div class="toc">
+ <xsl:apply-templates mode="toc"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div id="spacer"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$overlay.logo != ''">
+ <div style="position: absolute; visibility: visible;" id="overlayDiv">
+ <img src="{$overlay.logo}" alt="logo" vspace="20"/>
+ </div>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slidesinfo">
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename"
+ select="concat($base.dir,$titlefoil.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <xsl:choose>
+ <xsl:when test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe-top"/>
+ <xsl:apply-templates select="." mode="multiframe-body"/>
+ <xsl:apply-templates select="." mode="multiframe-bottom"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
+ <xsl:attribute name="onload">
+ <xsl:text>javascript:body.focus()</xsl:text>
+ </xsl:attribute>
+ <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
+ </frame>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <p>
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </p>
+ </body>
+ </noframes>
+ </frameset>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe-top">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0' or $overlay.logo != ''">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe-body">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Body</title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe-bottom">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="singleframe">
+ <xsl:param name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+
+ <body class="titlepage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:choose>
+ <xsl:when test="$active.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>newPage('</xsl:text>
+ <xsl:value-of select="$titlefoil.html"/>
+ <xsl:text>',</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc');</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>this.focus()</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+
+ <xsl:if test="$multiframe=0">
+ <div id="overlayDiv" class="navfoot">
+ <xsl:choose>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position:absolute;visibility:visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">
+ <xsl:text>padding-top: 2in;</xsl:text>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <table width="100%" border="0"
+ cellspacing="0" cellpadding="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <!-- suppress copyright here; it's probably already on the titlepage
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="slide.footer.mode"/>
+ -->
+ <xsl:text>&#160;</xsl:text>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </xsl:if>
+ </body>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0"
+ summary="Navigation table">
+ <tr>
+ <td align="left" valign="bottom" width="10%">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="80%" align="center" valign="bottom">
+ <xsl:call-template name="foil.number"/>
+ </td>
+ <td align="right" valign="bottom" width="10%">
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table border="0" width="100%" cellspacing="0" cellpadding="0"
+ summary="Navigation table">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="slide.footer.mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+
+ <td align="right" valign="top">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="foilgroup">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename" select="concat($base.dir,$thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <xsl:choose>
+ <xsl:when test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe-top"/>
+ <xsl:apply-templates select="." mode="multiframe-body"/>
+ <xsl:apply-templates select="." mode="multiframe-bottom"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe">
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
+ <xsl:attribute name="onload">
+ <xsl:text>javascript:body.focus()</xsl:text>
+ </xsl:attribute>
+ <frame src="top-{$thisfoilgroup}" name="top" id="top" marginheight="0" frameborder="0"/>
+ <frame src="body-{$thisfoilgroup}" name="body" id="body" marginheight="0" frameborder="0"/>
+ <frame src="bot-{$thisfoilgroup}" name="bottom" id="bottom" marginheight="0" frameborder="0"/>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <p>
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </p>
+ </body>
+ </noframes>
+ </frameset>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe-top">
+ <xsl:variable name="foilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'top-',$foilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
+ <xsl:call-template name="foilgroup-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe-body">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Body</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe-bottom">
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <xsl:call-template name="foilgroup-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="singleframe">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+ <body class="foilgroup">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:choose>
+ <xsl:when test="$active.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>newPage('</xsl:text>
+ <xsl:value-of select="$thisfoilgroup"/>
+ <xsl:text>',</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc');</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:if test="$multiframe=0">
+ <xsl:call-template name="foilgroup-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <div class="foilgroup-body" id="{$id}">
+ <xsl:call-template name="foilgroup-body">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+
+ <xsl:if test="$multiframe=0">
+ <div id="overlayDiv">
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position:absolute;visibility:visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="foilgroup-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="foil">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1]
+ |parent::foilgroup[1]
+ |/slides)[last()]"/>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename" select="concat($base.dir,$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <xsl:choose>
+ <xsl:when test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe-top"/>
+ <xsl:apply-templates select="." mode="multiframe-body"/>
+ <xsl:apply-templates select="." mode="multiframe-bottom"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe">
+ <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
+
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
+ <xsl:attribute name="onload">
+ <xsl:text>javascript:body.focus()</xsl:text>
+ </xsl:attribute>
+ <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
+ </frame>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <p>
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </p>
+ </body>
+ </noframes>
+ </frameset>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe-top">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1]
+ |parent::foilgroup[1]
+ |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javajcript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe-body">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Body</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1]
+ |parent::foilgroup[1]
+ |/slides)[last()]"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+
+ </head>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe-bottom">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1]
+ |parent::foilgroup[1]
+ |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="singleframe">
+ <xsl:param name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1]
+ |parent::foilgroup[1]
+ |/slides)[last()]"/>
+
+ <body class="foil">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:choose>
+ <xsl:when test="$active.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>newPage('</xsl:text>
+ <xsl:value-of select="$thisfoil"/>
+ <xsl:text>',</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc');</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:if test="$multiframe=0">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <div class="foil-body">
+ <xsl:apply-templates/>
+ </div>
+
+ <xsl:if test="$multiframe=0">
+ <div id="overlayDiv">
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position:absolute;visibility:visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slidesinfo" mode="toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <div id="{$id}" class="toc-slidesinfo">
+ <a href="{$titlefoil.html}" target="foil">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title" mode="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ <hr/>
+ </div>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="toc">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <div class="toc-foilgroup" id="{$id}">
+ <img alt="-">
+ <xsl:attribute name="src">
+ <xsl:call-template name="minus.image"/>
+ </xsl:attribute>
+ </img>
+ <a href="{$thisfoilgroup}" target="foil">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title" mode="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="foil" mode="toc">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:variable name="foil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <div id="{$id}" class="toc-foil">
+ <img alt="-">
+ <xsl:attribute name="src">
+ <xsl:call-template name="bullet.image"/>
+ </xsl:attribute>
+ </img>
+ <a href="{$foil}" target="foil">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title" mode="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slidesinfo" mode="ns-toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:text>myList.addItem('</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text disable-output-escaping="yes">" class="toc-slidesinfo"&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="$titlefoil.html"/>
+ <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
+
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\'</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
+ <xsl:text>');&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="ns-toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:text>subList = new List(false, width, height, "</xsl:text>
+<xsl:value-of select="$toc.bg.color"/>
+<xsl:text>");&#10;</xsl:text>
+ <xsl:text>subList.setIndent(12);&#10;</xsl:text>
+ <xsl:apply-templates select="foil" mode="ns-toc"/>
+
+ <xsl:text>myList.addList(subList, '</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text disable-output-escaping="yes">" class="toc-foilgroup"&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:apply-templates select="." mode="filename"/>
+ <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
+
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\'</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
+ <xsl:text>');&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="foil" mode="ns-toc">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::foilgroup">
+ <xsl:text>subList.addItem('</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>myList.addItem('</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text disable-output-escaping="yes">" class="toc-foil"&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;img alt="-" src="</xsl:text>
+ <xsl:call-template name="bullet.image"/>
+ <xsl:text disable-output-escaping="yes">"&gt;&lt;\/img&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:apply-templates select="." mode="filename"/>
+ <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
+
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\'</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
+ <xsl:text>');&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="speakernotes" mode="ns-toc">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl
new file mode 100644
index 0000000..b682acd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl
@@ -0,0 +1,151 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ====================================================================== -->
+
+<xsl:template name="graphics-file">
+ <xsl:param name="image" select="'bullet.gif'"/>
+
+ <xsl:variable name="source.graphics.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'graphics-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.graphics.dir != ''">
+ <xsl:value-of select="$source.graphics.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$graphics.dir != ''">
+ <xsl:value-of select="$graphics.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://docbook.sourceforge.net/release/slides/graphics/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$image"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- active navigation images -->
+
+<xsl:template name="toc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$toc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="home.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$home.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="up.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$up.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="prev.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$prev.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="next.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$next.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- inactive navigation images -->
+
+<xsl:template name="no.toc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.toc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.home.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.home.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.up.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.up.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.prev.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.prev.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.next.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.next.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- icon images -->
+
+<xsl:template name="bullet.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$bullet.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="plus.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$plus.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="minus.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$minus.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- hide/show ToC images -->
+
+<xsl:template name="hidetoc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$hidetoc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="showtoc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$showtoc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl
new file mode 100644
index 0000000..ae4ef9f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:template name="script-dir">
+ <xsl:variable name="source.script.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'script-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.script.dir != ''">
+ <xsl:value-of select="$source.script.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$script.dir != ''">
+ <xsl:value-of select="$script.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="script-file">
+ <xsl:param name="js" select="'slides.js'"/>
+ <xsl:call-template name="script-dir"/>
+ <xsl:value-of select="$js"/>
+</xsl:template>
+
+<xsl:template name="ua.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$ua.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbDOM.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbDOM.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbStyle.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbStyle.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbLibrary.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbLibrary.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbCollapsibleLists.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbCollapsibleLists.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="overlay.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$overlay.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="slides.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$slides.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml
new file mode 100644
index 0000000..84cf196
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml
@@ -0,0 +1,1376 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0" xml:id="slides">
+<info>
+<title>Slides HTML Parameter Reference</title>
+<releaseinfo role="meta">
+$Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+</releaseinfo>
+<author>
+ <personname>
+ <surname>Walsh</surname>
+ <firstname>Norman</firstname>
+ </personname>
+</author>
+<copyright>
+ <year>2002</year>
+ <holder>Norman Walsh</holder>
+</copyright>
+<abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook XSL Slides HTML stylesheet (for
+ generating HTML slide presentations). Note that the Slides
+ stylesheet for HTML output is a customization layer of the
+ DocBook XSL HTML stylesheet. Therefore, in addition to the
+ slides-specific parameters listed in this section, you can
+ also use a number of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../html/">HTML
+ stylesheet parameters</link> to control Slides HTML
+ output.</para>
+</abstract>
+</info>
+<reference xml:id="html">
+<title>HTML: General Parameters</title>
+<refentry version="5.0" xml:id="keyboard.nav">
+<refmeta>
+<refentrytitle>keyboard.nav</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keyboard.nav</refname>
+<refpurpose>Enable keyboard navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="keyboard.nav.frag">
+&lt;xsl:param name="keyboard.nav" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is added to the slides to enable keyboard
+navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves
+backward.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="css.stylesheet">
+<refmeta>
+<refentrytitle>css.stylesheet</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.stylesheet</refname>
+<refpurpose>CSS stylesheet for slides</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="css.stylesheet.frag">
+&lt;xsl:param name="css.stylesheet"&gt;slides.css&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the CSS stylesheet used by all the slides. This parameter
+can be set in the source document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>css-stylesheet</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="css.stylesheet.dir">
+<refmeta>
+<refentrytitle>css.stylesheet.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.stylesheet.dir</refname>
+<refpurpose>Default directory for CSS stylesheets</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="css.stylesheet.dir.frag">
+&lt;xsl:param name="css.stylesheet.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the default directory for the CSS stylesheet
+generated on all the slides. This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>css-stylesheet-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the stylesheets.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="titlefoil.html">
+<refmeta>
+<refentrytitle>titlefoil.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>titlefoil.html</refname>
+<refpurpose>Name of title foil HTML file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="titlefoil.html.frag">
+&lt;xsl:param name="titlefoil.html" select="concat('index', $html.ext)"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename used for the slides titlepage.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.html">
+<refmeta>
+<refentrytitle>toc.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.html</refname>
+<refpurpose>Name of ToC HTML file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.html.frag">
+&lt;xsl:param name="toc.html" select="concat('toc', $html.ext)"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Sets the filename used for the table of contents page.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foilgroup.toc">
+<refmeta>
+<refentrytitle>foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foilgroup.toc</refname>
+<refpurpose>Put ToC on foilgroup pages?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="foilgroup.toc.frag">
+&lt;xsl:param name="foilgroup.toc" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a ToC will be placed on foilgroup pages (after any
+other content).
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="output.indent">
+<refmeta>
+<refentrytitle>output.indent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>output.indent</refname>
+<refpurpose>Indent output?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="output.indent.frag">
+&lt;xsl:param name="output.indent"&gt;no&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the setting of the <parameter>indent</parameter>
+parameter on the HTML slides. For more information, see the discussion
+of the <tag>xsl:output</tag> element in the XSLT specification.</para>
+<para>Select from <literal>yes</literal> or <literal>no</literal>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="overlay">
+<refmeta>
+<refentrytitle>overlay</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay</refname>
+<refpurpose>Overlay footer navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="overlay.frag">
+&lt;xsl:param name="overlay" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is added to the slides to make the
+bottom navigation appear at the bottom of each page. This option and
+<link linkend="multiframe">multiframe</link> are mutually exclusive.</para>
+
+<para>If this parameter is zero, the bottom navigation simply appears
+below the content of each slide.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="show.foil.number">
+<refmeta>
+<refentrytitle>show.foil.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>show.foil.number</refname>
+<refpurpose>Show foil number on each foil?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="show.foil.number.frag">
+&lt;xsl:param name="show.foil.number" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, on each slide there will be its number. Currently
+not supported in all output formats.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="frames">
+<title>HTML: Frames Parameters</title>
+<refentry version="5.0" xml:id="nav.separator">
+<refmeta>
+<refentrytitle>nav.separator</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nav.separator</refname>
+<refpurpose>Output separator between navigation and body?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="nav.separator.frag">
+&lt;xsl:param name="nav.separator" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, a separator (<literal>&lt;HR&gt;</literal>) is
+added between the navigation links and the content of each slide.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.row.height">
+<refmeta>
+<refentrytitle>toc.row.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.row.height</refname>
+<refpurpose>Height of ToC rows in dynamic ToCs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.row.height.frag">
+&lt;xsl:param name="toc.row.height"&gt;22&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the height of each row in the table of
+contents. This is only applicable if a <link linkend="dynamic.toc">dynamic ToC</link> is used. You may want to
+adjust this parameter for optimal appearance with the font and image
+sizes selected by your <link linkend="css.stylesheet">CSS
+stylesheet</link>.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.bg.color">
+<refmeta>
+<refentrytitle>toc.bg.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.bg.color</refname>
+<refpurpose>Background color for ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.bg.color.frag">
+&lt;xsl:param name="toc.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color used in the ToC frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.bg.color">
+<refmeta>
+<refentrytitle>body.bg.color</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.bg.color</refname>
+<refpurpose>Background color for body frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.bg.color.frag">
+&lt;xsl:param name="body.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color used in the body column of
+tabular slides.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.width">
+<refmeta>
+<refentrytitle>toc.width</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.width</refname>
+<refpurpose>Width of ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.width.frag">
+&lt;xsl:param name="toc.width"&gt;250&lt;/xsl:param&gt;
+&lt;!-- Presumably in pixels? --&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the width of the ToC frame in pixels.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.hide.show">
+<refmeta>
+<refentrytitle>toc.hide.show</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.hide.show</refname>
+<refpurpose>Enable hide/show button for ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.hide.show.frag">
+&lt;xsl:param name="toc.hide.show" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript (and an additional icon, see
+<link linkend="hidetoc.image">hidetoc.image</link> and
+<link linkend="hidetoc.image">showtoc.image</link>) is added to each slide
+to allow the ToC panel to be <quote>toggled</quote> on each panel.</para>
+
+<note><para>There is a bug in Mozilla 1.0 (at least as of CR3) that causes
+the browser to reload the titlepage when this feature is used.</para></note>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="dynamic.toc">
+<refmeta>
+<refentrytitle>dynamic.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dynamic.toc</refname>
+<refpurpose>Dynamic ToCs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="dynamic.toc.frag">
+&lt;xsl:param name="dynamic.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is used to make the ToC panel <quote>dynamic</quote>.
+In a dynamic ToC, each section in the ToC can be expanded and collapsed by
+clicking on the appropriate image.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="active.toc">
+<refmeta>
+<refentrytitle>active.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>active.toc</refname>
+<refpurpose>Active ToCs?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="active.toc.frag">
+&lt;xsl:param name="active.toc" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, JavaScript is used to keep the ToC and the current slide
+<quote>in sync</quote>. That is, each time the slide changes, the corresponding
+ToC entry will be underlined.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="overlay.logo">
+<refmeta>
+<refentrytitle>overlay.logo</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay.logo</refname>
+<refpurpose>Logo to overlay on ToC frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="overlay.logo.frag">
+&lt;xsl:param name="overlay.logo"&gt;http://docbook.sourceforge.net/release/buttons/slides-1.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If this URI is non-empty, JavaScript is used to overlay the
+specified image on the ToC frame.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="multiframe">
+<refmeta>
+<refentrytitle>multiframe</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe</refname>
+<refpurpose>Use multiple frames for slide bodies?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="multiframe.frag">
+&lt;xsl:param name="multiframe" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero, multiple frames are used for the body of each
+slide. This is one way of forcing the slide navigation elements to
+appear in constant locations. The other way is with <link linkend="overlay">overlays</link>. The <link linkend="overlay"><parameter>overlay</parameter></link> and
+<parameter>multiframe</parameter> parameters are mutually
+exclusive.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="multiframe.top.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.top.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.top.bgcolor</refname>
+<refpurpose>Background color for top navigation frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="multiframe.top.bgcolor.frag">
+&lt;xsl:param name="multiframe.top.bgcolor"&gt;white&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color of the top navigation frame when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="multiframe.bottom.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.bottom.bgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.bottom.bgcolor</refname>
+<refpurpose>Background color for bottom navigation frame</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="multiframe.bottom.bgcolor.frag">
+&lt;xsl:param name="multiframe.bottom.bgcolor"&gt;white&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the background color of the bottom navigation frame when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="multiframe.navigation.height">
+<refmeta>
+<refentrytitle>multiframe.navigation.height</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.navigation.height</refname>
+<refpurpose>Height of navigation frames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="multiframe.navigation.height.frag">
+&lt;xsl:param name="multiframe.navigation.height"&gt;40&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the height of the navigation frames in pixels when
+<link linkend="multiframe">multiframe</link> is enabled.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="graphics">
+<title>HTML: Graphics Parameters</title>
+<refentry version="5.0" xml:id="graphics.dir">
+<refmeta>
+<refentrytitle>graphics.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphics.dir</refname>
+<refpurpose>Graphics directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="graphics.dir.frag">
+&lt;xsl:param name="graphics.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the graphics directory for the navigation components
+generated on all the slides. This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>graphics-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the graphic
+image paths.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="bullet.image">
+<refmeta>
+<refentrytitle>bullet.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bullet.image</refname>
+<refpurpose>Bullet image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="bullet.image.frag">
+&lt;xsl:param name="bullet.image"&gt;toc/bullet.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the bullet image used for foils in the
+framed ToC.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="next.image">
+<refmeta>
+<refentrytitle>next.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>next.image</refname>
+<refpurpose>Right-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="next.image.frag">
+&lt;xsl:param name="next.image"&gt;active/nav-next.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the right-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="prev.image">
+<refmeta>
+<refentrytitle>prev.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>prev.image</refname>
+<refpurpose>Left-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="prev.image.frag">
+&lt;xsl:param name="prev.image"&gt;active/nav-prev.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the left-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="up.image">
+<refmeta>
+<refentrytitle>up.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>up.image</refname>
+<refpurpose>Up-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="up.image.frag">
+&lt;xsl:param name="up.image"&gt;active/nav-up.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the upward-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="home.image">
+<refmeta>
+<refentrytitle>home.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>home.image</refname>
+<refpurpose>Home image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="home.image.frag">
+&lt;xsl:param name="home.image"&gt;active/nav-home.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the home navigation icon.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.image">
+<refmeta>
+<refentrytitle>toc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.image</refname>
+<refpurpose>ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.image.frag">
+&lt;xsl:param name="toc.image"&gt;active/nav-toc.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the ToC navigation icon.</para>
+
+</refsection>
+</refentry>
+
+
+<refentry version="5.0" xml:id="no.next.image">
+<refmeta>
+<refentrytitle>no.next.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.next.image</refname>
+<refpurpose>Inactive right-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="no.next.image.frag">
+&lt;xsl:param name="no.next.image"&gt;inactive/nav-next.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive right-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="no.prev.image">
+<refmeta>
+<refentrytitle>no.prev.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.prev.image</refname>
+<refpurpose>Inactive left-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="no.prev.image.frag">
+&lt;xsl:param name="no.prev.image"&gt;inactive/nav-prev.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive left-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="no.up.image">
+<refmeta>
+<refentrytitle>no.up.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.up.image</refname>
+<refpurpose>Inactive up-arrow image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="no.up.image.frag">
+&lt;xsl:param name="no.up.image"&gt;inactive/nav-up.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive upward-pointing navigation arrow.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="no.home.image">
+<refmeta>
+<refentrytitle>no.home.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.home.image</refname>
+<refpurpose>Inactive home image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="no.home.image.frag">
+&lt;xsl:param name="no.home.image"&gt;inactive/nav-home.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive home navigation icon.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="no.toc.image">
+<refmeta>
+<refentrytitle>no.toc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>no.toc.image</refname>
+<refpurpose>Inactive ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="no.toc.image.frag">
+&lt;xsl:param name="no.toc.image"&gt;inactive/nav-toc.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the inactive ToC navigation icon.</para>
+
+</refsection>
+</refentry>
+
+
+<refentry version="5.0" xml:id="plus.image">
+<refmeta>
+<refentrytitle>plus.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>plus.image</refname>
+<refpurpose>Plus image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="plus.image.frag">
+&lt;xsl:param name="plus.image"&gt;toc/closed.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>plus</quote> image; the image used in a
+<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
+can be expanded.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="minus.image">
+<refmeta>
+<refentrytitle>minus.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>minus.image</refname>
+<refpurpose>Minus image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="minus.image.frag">
+&lt;xsl:param name="minus.image"&gt;toc/open.png&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>minus</quote> image; the image used in a
+<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
+can be collapsed.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="hidetoc.image">
+<refmeta>
+<refentrytitle>hidetoc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hidetoc.image</refname>
+<refpurpose>Hide ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="hidetoc.image.frag">
+&lt;xsl:param name="hidetoc.image"&gt;hidetoc.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>hide ToC</quote> image. This is used
+when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
+enabled.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="showtoc.image">
+<refmeta>
+<refentrytitle>showtoc.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>showtoc.image</refname>
+<refpurpose>Show ToC image</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="showtoc.image.frag">
+&lt;xsl:param name="showtoc.image"&gt;showtoc.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the <quote>show ToC</quote> image. This is used
+when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
+enabled.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="javascript">
+<title>HTML: JavaScript Parameters</title>
+<refentry version="5.0" xml:id="script.dir">
+<refmeta>
+<refentrytitle>script.dir</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>script.dir</refname>
+<refpurpose>Script directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="script.dir.frag">
+&lt;xsl:param name="script.dir"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Identifies the JavaScript source directory for the slides.
+This parameter can be set in the source
+document with the &lt;?dbhtml?&gt; pseudo-attribute
+<literal>script-dir</literal>.</para>
+
+<para>If non-empty, this value is prepended to each of the JavaScript files.
+</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="ua.js">
+<refmeta>
+<refentrytitle>ua.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ua.js</refname>
+<refpurpose>UA JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="ua.js.frag">
+&lt;xsl:param name="ua.js"&gt;ua.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the UA JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xbDOM.js">
+<refmeta>
+<refentrytitle>xbDOM.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbDOM.js</refname>
+<refpurpose>xbDOM JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xbDOM.js.frag">
+&lt;xsl:param name="xbDOM.js"&gt;xbDOM.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbDOM JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xbStyle.js">
+<refmeta>
+<refentrytitle>xbStyle.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbStyle.js</refname>
+<refpurpose>xbStyle JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xbStyle.js.frag">
+&lt;xsl:param name="xbStyle.js"&gt;xbStyle.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbStyle JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xbLibrary.js">
+<refmeta>
+<refentrytitle>xbLibrary.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbLibrary.js</refname>
+<refpurpose>xbLibrary JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xbLibrary.js.frag">
+&lt;xsl:param name="xbLibrary.js"&gt;xbLibrary.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbLibrary JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="xbCollapsibleLists.js">
+<refmeta>
+<refentrytitle>xbCollapsibleLists.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbCollapsibleLists.js</refname>
+<refpurpose>xbCollapsibleLists JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="xbCollapsibleLists.js.frag">
+&lt;xsl:param name="xbCollapsibleLists.js"&gt;xbCollapsibleLists.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="overlay.js">
+<refmeta>
+<refentrytitle>overlay.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay.js</refname>
+<refpurpose>Overlay JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="overlay.js.frag">
+&lt;xsl:param name="overlay.js"&gt;overlay.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the overlay JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.js">
+<refmeta>
+<refentrytitle>slides.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.js</refname>
+<refpurpose>Slides overlay file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="slides.js.frag">
+&lt;xsl:param name="slides.js"&gt;slides.js&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>Specifies the filename of the slides JavaScript file. It's unlikely
+that you will ever need to change this parameter.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="l10n">
+<title>HTML: Localization Parameters</title>
+<refentry version="5.0" xml:id="text.home">
+<refmeta>
+<refentrytitle>text.home</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.home</refname>
+<refpurpose>Home</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="text.home.frag">
+&lt;xsl:param name="text.home"&gt;Home&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="text.toc">
+<refmeta>
+<refentrytitle>text.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.toc</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="text.toc.frag">
+&lt;xsl:param name="text.toc"&gt;ToC&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="text.prev">
+<refmeta>
+<refentrytitle>text.prev</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.prev</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="text.prev.frag">
+&lt;xsl:param name="text.prev"&gt;Prev&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="text.up">
+<refmeta>
+<refentrytitle>text.up</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.up</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="text.up.frag">
+&lt;xsl:param name="text.up"&gt;Up&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="text.next">
+<refmeta>
+<refentrytitle>text.next</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text.next</refname>
+<refpurpose>FIXME:</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="text.next.frag">
+&lt;xsl:param name="text.next"&gt;Next&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>FIXME:</para>
+
+</refsection>
+</refentry>
+
+
+
+</reference>
+<appendix xml:id="styleheet"><title>The Stylesheet</title>
+
+<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
+around all these parameters.</para>
+
+<programlisting xml:id="top">
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook Slides Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="active.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.bg.color.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="bullet.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="css.stylesheet.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="css.stylesheet.dir.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="dynamic.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foilgroup.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="graphics.dir.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="hidetoc.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="home.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="keyboard.nav.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="minus.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="multiframe.bottom.bgcolor.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="multiframe.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="multiframe.navigation.height.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="multiframe.top.bgcolor.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="nav.separator.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="next.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="no.home.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="no.next.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="no.prev.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="no.toc.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="no.up.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="output.indent.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="overlay.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="overlay.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="overlay.logo.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="plus.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="prev.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="script.dir.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="show.foil.number.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="showtoc.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="text.home.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="text.next.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="text.prev.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="text.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="text.up.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="titlefoil.html.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.bg.color.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.hide.show.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.html.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.row.height.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.width.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="ua.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="up.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xbCollapsibleLists.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xbDOM.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xbStyle.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="xbLibrary.js.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;/xsl:stylesheet&gt;
+</programlisting>
+
+</appendix>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl
new file mode 100644
index 0000000..7dad0bc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook Slides Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="active.toc" select="0"/>
+<xsl:param name="body.bg.color">#FFFFFF</xsl:param>
+<xsl:param name="bullet.image">toc/bullet.png</xsl:param>
+<xsl:param name="css.stylesheet">slides.css</xsl:param>
+<xsl:param name="css.stylesheet.dir"/>
+<xsl:param name="dynamic.toc" select="0"/>
+<xsl:param name="foilgroup.toc" select="1"/>
+<xsl:param name="graphics.dir"/>
+<xsl:param name="hidetoc.image">hidetoc.gif</xsl:param>
+<xsl:param name="home.image">active/nav-home.png</xsl:param>
+<xsl:param name="keyboard.nav" select="1"/>
+<xsl:param name="minus.image">toc/open.png</xsl:param>
+<xsl:param name="multiframe.bottom.bgcolor">white</xsl:param>
+<xsl:param name="multiframe" select="0"/>
+<xsl:param name="multiframe.navigation.height">40</xsl:param>
+<xsl:param name="multiframe.top.bgcolor">white</xsl:param>
+<xsl:param name="nav.separator" select="1"/>
+<xsl:param name="next.image">active/nav-next.png</xsl:param>
+<xsl:param name="no.home.image">inactive/nav-home.png</xsl:param>
+<xsl:param name="no.next.image">inactive/nav-next.png</xsl:param>
+<xsl:param name="no.prev.image">inactive/nav-prev.png</xsl:param>
+<xsl:param name="no.toc.image">inactive/nav-toc.png</xsl:param>
+<xsl:param name="no.up.image">inactive/nav-up.png</xsl:param>
+<xsl:param name="output.indent">no</xsl:param>
+<xsl:param name="overlay" select="0"/>
+<xsl:param name="overlay.js">overlay.js</xsl:param>
+<xsl:param name="overlay.logo">http://docbook.sourceforge.net/release/buttons/slides-1.png</xsl:param>
+<xsl:param name="plus.image">toc/closed.png</xsl:param>
+<xsl:param name="prev.image">active/nav-prev.png</xsl:param>
+<xsl:param name="script.dir"/>
+<xsl:param name="show.foil.number" select="0"/>
+<xsl:param name="showtoc.image">showtoc.gif</xsl:param>
+<xsl:param name="slides.js">slides.js</xsl:param>
+<xsl:param name="text.home">Home</xsl:param>
+<xsl:param name="text.next">Next</xsl:param>
+<xsl:param name="text.prev">Prev</xsl:param>
+<xsl:param name="text.toc">ToC</xsl:param>
+<xsl:param name="text.up">Up</xsl:param>
+<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
+<xsl:param name="toc.bg.color">#FFFFFF</xsl:param>
+<xsl:param name="toc.hide.show" select="0"/>
+<xsl:param name="toc.html" select="concat('toc', $html.ext)"/>
+<xsl:param name="toc.image">active/nav-toc.png</xsl:param>
+<xsl:param name="toc.row.height">22</xsl:param>
+<xsl:param name="toc.width">250</xsl:param>
+<!-- Presumably in pixels? -->
+<xsl:param name="ua.js">ua.js</xsl:param>
+<xsl:param name="up.image">active/nav-up.png</xsl:param>
+<xsl:param name="xbCollapsibleLists.js">xbCollapsibleLists.js</xsl:param>
+<xsl:param name="xbDOM.js">xbDOM.js</xsl:param>
+<xsl:param name="xbStyle.js">xbStyle.js</xsl:param>
+<xsl:param name="xbLibrary.js">xbLibrary.js</xsl:param>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl
new file mode 100644
index 0000000..47224da
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl
@@ -0,0 +1,472 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="prev.image" select="'active/nav-prev.png'"/>
+<xsl:param name="next.image" select="'active/nav-next.png'"/>
+<xsl:param name="up.image" select="'active/nav-up.png'"/>
+<xsl:param name="toc.image" select="'active/nav-toc.png'"/>
+<xsl:param name="home.image" select="'active/nav-home.png'"/>
+
+<xsl:param name="no.prev.image" select="'inactive/nav-prev.png'"/>
+<xsl:param name="no.next.image" select="'inactive/nav-next.png'"/>
+<xsl:param name="no.up.image" select="'inactive/nav-up.png'"/>
+<xsl:param name="no.toc.image" select="'inactive/nav-toc.png'"/>
+<xsl:param name="no.home.image" select="'inactive/nav-home.png'"/>
+
+<xsl:param name="css.stylesheet" select="'slides-plain.css'"/>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="up"/>
+ <xsl:param name="home"/>
+ <xsl:param name="toc" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="45%">
+ <span class="slidestitle">
+ <xsl:value-of select="(/slides/slidesinfo/title)[1]"/>
+ </span>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="10%" align="center" valign="bottom">
+ <xsl:call-template name="foil.number"/>
+ </td>
+ <td align="right" width="45%">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$home/slidesinfo/title"/>
+ </xsl:attribute>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$toc != ''">
+ <a title="ToC" href="{$toc}">
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prev/title"/>
+ </xsl:attribute>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$up/title"/>
+ </xsl:attribute>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="toc" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="50%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="right" width="50%">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$home/slidesinfo/title"/>
+ </xsl:attribute>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$toc.html != ''">
+ <a title="ToC" href="{$toc.html}">
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prev/title"/>
+ </xsl:attribute>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$up/title"/>
+ </xsl:attribute>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="toc-top-nav">
+ <xsl:param name="home" select="/slides"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:param name="toc"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0"
+ summary="Navigation">
+ <tr>
+ <td align="left" width="50%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="right" width="50%">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$home/slidesinfo/title"/>
+ </xsl:attribute>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$toc != ''">
+ <a title="ToC" href="{$toc}">
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prev/title"/>
+ </xsl:attribute>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$up/title"/>
+ </xsl:attribute>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="bottom-nav"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl
new file mode 100644
index 0000000..9854164
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl
@@ -0,0 +1,1541 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="../../html/chunk.xsl"/>
+<xsl:include href="../../VERSION"/>
+
+<xsl:include href="param.xsl"/>
+<xsl:include href="jscript.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="css.xsl"/>
+
+<xsl:output method="html"/>
+
+<xsl:strip-space elements="slides foil foilgroup"/>
+
+<!-- Process the slides -->
+
+<xsl:template match="/">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="slides">
+ <xsl:apply-templates select="." mode="toc"/>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Every slide has top and bottom navigation -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0"
+ summary="Navigation table">
+ <tr>
+ <td align="left" valign="bottom">
+ <xsl:if test="$home">
+ <span class="slidestitle">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
+ </a>
+ </span>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+
+ <td align="right" valign="bottom">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.home}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.home}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$tocfile"/>
+ </xsl:attribute>
+ <img alt="{$text.toc}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.toc}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.up}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.up}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table border="0" width="100%" cellspacing="0" cellpadding="0"
+ summary="Navigation table">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="slide.footer.mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+
+ <td align="right" valign="top">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- Navigation is also provided in the form of links in the head -->
+
+<xsl:template name="links">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:if test="$tocfile != ''">
+ <link rel="contents" href="{$tocfile}">
+ <xsl:attribute name="title">
+ <xsl:value-of select="/slides/slidesinfo/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$home">
+ <link rel="top">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+
+ <link rel="first">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$up">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($up/title|$up/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prev">
+ <link rel="previous">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($prev/title|$prev/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$next">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ </link>
+
+ <xsl:variable name="last" select="$next/following::foil[last()]"/>
+ <xsl:if test="$last">
+ <link rel="last">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$last" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$last/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:for-each select="foil">
+ <link rel="slides">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="foilgroup|../foilgroup">
+ <link rel="section">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- There are four kinds of slides: titlepage, toc, foil, and foilgroup -->
+<!-- titlepage -->
+
+<xsl:template match="slidesinfo">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
+ <xsl:variable name="tocfile" select="$toc.html"/>
+ <xsl:variable name="dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $dir, $titlefoil.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="/slides"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:attribute name="class">
+ <xsl:text>titlepage</xsl:text>
+ <xsl:if test="@role">
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="titlepage" id="{$id}">
+ <xsl:call-template name="titlepage-top-nav">
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <div class="titlepage-body">
+ <xsl:call-template name="titlepage-body"/>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="titlepage-bottom-nav">
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+ </div>
+ </div>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="titlepage-body">
+ <div class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="titlepage-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo/title">
+ <h1 class="{name(.)}"><xsl:apply-templates/></h1>
+</xsl:template>
+
+<xsl:template match="slidesinfo/authorgroup">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="slidesinfo/author|slidesinfo/authorgroup/author">
+ <h1 class="{name(.)}"><xsl:apply-imports/></h1>
+</xsl:template>
+
+<xsl:template match="slidesinfo/releaseinfo">
+ <h4 class="{name(.)}"><xsl:apply-templates/></h4>
+</xsl:template>
+
+<xsl:template match="slidesinfo/date">
+ <h4 class="{name(.)}"><xsl:apply-templates/></h4>
+</xsl:template>
+
+<xsl:template match="slidesinfo/copyright">
+ <!-- nop -->
+</xsl:template>
+
+<!-- On slides, output the credits explicitly each time -->
+<xsl:template match="othercredit" mode="titlepage.mode">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- toc -->
+
+<xsl:template match="slides" mode="toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="/slides"/>
+ <xsl:variable name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:variable name="tocfile" select="''"/>
+ <xsl:variable name="dir"> <!-- MJ: added -->
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $dir, $toc.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="slidesinfo/title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+
+ <body class="tocpage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div id="{$id}">
+ <xsl:call-template name="toc-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <div class="toc-body">
+ <xsl:call-template name="toc-body"/>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="toc-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+ </div>
+ </div>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="toc-body">
+ <h1 class="title">
+ <a href="{$titlefoil.html}">
+ <xsl:value-of select="/slides/slidesinfo/title"/>
+ </a>
+ </h1>
+
+ <p class="toctitle">
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </b>
+ </p>
+ <dl class="toc">
+ <xsl:apply-templates select="foilgroup|foil" mode="toc"/>
+ </dl>
+</xsl:template>
+
+<xsl:template name="toc-top-nav">
+ <xsl:param name="home" select="/slides"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:param name="tocfile"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="toc-bottom-nav">
+ <xsl:param name="home" select="/slides"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:param name="tocfile"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="toc">
+ <xsl:param name="recursive" select="1"/>
+
+ <dt>
+ <xsl:apply-templates select="." mode="number"/>
+ <xsl:text>. </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="title"/>
+ </a>
+ </dt>
+ <xsl:if test="$recursive != 0">
+ <dd>
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="foil" mode="toc">
+ <dt>
+ <xsl:apply-templates select="." mode="number"/>
+ <xsl:text>. </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="title"/>
+ </a>
+ </dt>
+</xsl:template>
+
+<xsl:template match="title|titleabbrev" mode="toc">
+ <xsl:apply-templates mode="toc"/>
+</xsl:template>
+
+<xsl:template match="speakernotes" mode="toc">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- foil -->
+
+<xsl:template match="foil">
+ <xsl:param name="thisfoil">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil
+ |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1]
+ |parent::foilgroup[1]
+ |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="@role">
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <div class="foil-body">
+ <xsl:call-template name="foil-body">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="foil-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template name="foil-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="foil-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil/title">
+ <h1 class="{name(.)}">
+ <xsl:apply-templates/>
+ </h1>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- foilgroup -->
+
+<xsl:template match="foilgroup">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="@role">
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:call-template name="foilgroup-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <!-- n.b. the foilgroup-body template is responsible for generating -->
+ <!-- the foilgroup toc -->
+ <div class="foilgroup-body">
+ <xsl:call-template name="foilgroup-body">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="foilgroup-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="foilgroup/title">
+ <h1 class="{name(.)}"><xsl:apply-templates/></h1>
+</xsl:template>
+
+<xsl:template name="foilgroup-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:apply-templates select="*[name(.) != 'foil'
+ and name(.) != 'foilgroup']"/>
+
+ <xsl:if test="$foilgroup.toc != 0">
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="foilgroup-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="foilgroup-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="overlayDiv.attributes">
+ <xsl:choose>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position: absolute; visibility: visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">padding-top: 2in;</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="processing-instruction('dbhtml')" mode="css.pi">
+ <xsl:variable name="href">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute" select="'css-stylesheet'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$href!=''">
+ <xsl:choose>
+ <xsl:when test="$href = ''">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:when test="contains($href, '//')">
+ <link type="text/css" rel="stylesheet" href="{$href}"/>
+ </xsl:when>
+ <xsl:when test="starts-with($href, '/')">
+ <link type="text/css" rel="stylesheet" href="{$href}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css-file">
+ <xsl:with-param name="css" select="$href"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </link>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="foil" mode="number">
+ <xsl:number count="foil|foilgroup" level="any"/>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="number">
+ <xsl:number count="foil|foilgroup" level="any"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slides" mode="filename">
+ <xsl:value-of select="$titlefoil.html"/>
+</xsl:template>
+
+<xsl:template match="foil" mode="filename">
+ <xsl:text>foil</xsl:text>
+ <xsl:number count="foil" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="filename">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="processing-instruction('Pub')">
+ <xsl:variable name="pidata"><xsl:value-of select="(.)"/></xsl:variable>
+ <xsl:choose>
+ <xsl:when test="contains($pidata,'UDT')"></xsl:when>
+ <xsl:when test="contains($pidata,'/_font')">
+ <xsl:text disable-output-escaping="yes">&lt;/span&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($pidata,'_font')">
+ <xsl:text disable-output-escaping="yes">&lt;span </xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains($pidata,'green')">class="green"</xsl:when>
+ <xsl:when test="contains($pidata,'blue')">class="blue"</xsl:when>
+ <xsl:when test="contains($pidata,'orange')">class="orange"</xsl:when>
+ <xsl:when test="contains($pidata,'red')">class="red"</xsl:when>
+ <xsl:when test="contains($pidata,'brown')">class="brown"</xsl:when>
+ <xsl:when test="contains($pidata,'violet')">class="violet"</xsl:when>
+ <xsl:when test="contains($pidata,'black')">class="black"</xsl:when>
+ <xsl:otherwise>class="bold"</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<!-- blocks -->
+
+<xsl:template match="figure">
+ <div class="{name(.)}">
+ <xsl:apply-imports/>
+ </div>
+ <xsl:if test="following-sibling::*"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template match="copyright" mode="slide.footer.mode">
+ <span class="{name(.)}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<!-- ============================================================ -->
+<!-- inlines -->
+
+<xsl:template match="link">
+ <xsl:call-template name="link">
+ <xsl:with-param name="a.target" select="'foil'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="ulink">
+ <a>
+ <xsl:if test="@id">
+ <xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="@url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ <xsl:if test="@role='show'">
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="@url"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="title/ulink">
+ <a>
+ <xsl:if test="@id">
+ <xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="@url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="subtitle">
+ <h2 class="subtitle">
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="graphic">
+ <center>
+ <!-- can't this be done a better way? -->
+ <xsl:apply-imports/>
+ </center>
+</xsl:template>
+
+<xsl:template match="titleabbrev">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="speakernotes">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Chunking for slides -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="name($node)='slides'">1</xsl:when>
+ <xsl:when test="name($node)='foilgroup'">1</xsl:when>
+ <xsl:when test="name($node)='foil'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="chunk-filename">
+ <xsl:param name="recursive">0</xsl:param>
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:variable name="filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+ <xsl:variable name="dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(./parent::*)>0">
+ <xsl:apply-templates mode="chunk-filename" select="./parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:if test="$dir != ''">
+ <xsl:value-of select="$dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="name(.)='foil'">
+ <xsl:variable name="foilnumber">
+ <xsl:number count="foil" level="any"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$dir"/>
+ <xsl:text>foil</xsl:text>
+ <xsl:number value="$foilnumber" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+
+ <xsl:when test="name(.)='foilgroup'">
+ <xsl:variable name="foilgroupnumber">
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$dir"/>
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number value="$foilgroupnumber" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Handling of xrefs -->
+
+<xsl:template match="foil|foilgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="html:*" xmlns:html='http://www.w3.org/1999/xhtml'>
+ <xsl:element name="{local-name(.)}" namespace="">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="foil.number">
+ <xsl:choose>
+ <xsl:when test="$show.foil.number != 0 and self::foil">
+ <xsl:number count="foil" level="any"/>
+ /
+ <xsl:value-of select="count(//foil)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ &#160;
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl
new file mode 100644
index 0000000..0462528
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl
@@ -0,0 +1,336 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="blank.image" select="'blank.png'"/>
+<xsl:param name="arrow.image" select="'pointer.png'"/>
+
+<xsl:param name="toc.bg.color">#6A719C</xsl:param>
+<xsl:param name="toc.width">220</xsl:param>
+
+<xsl:param name="css.stylesheet" select="'slides-table.css'"/>
+
+<!-- ============================================================ -->
+
+<xsl:template name="foilgroup-body">
+ <table border="0" width="100%" summary="Navigation and body table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="ttoc">
+ <xsl:apply-templates select="." mode="t-toc"/>
+ </div>
+ </td>
+ <td>&#160;</td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="{name(.)}">
+ <xsl:apply-templates select="*[name(.) != 'foil'
+ and name(.) != 'foilgroup']"/>
+ </div>
+
+ <xsl:if test="$foilgroup.toc != 0">
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </xsl:if>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<xsl:template name="foil-body">
+ <table border="0" width="100%" summary="Navigation and body table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="ttoc">
+ <xsl:apply-templates select="." mode="t-toc"/>
+ </div>
+ </td>
+ <td>&#160;</td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="foilgroup" mode="t-toc">
+ <xsl:variable name="thisfoilgroup" select="."/>
+
+ <xsl:for-each select="/slides/foil|/slides/foilgroup">
+ <xsl:choose>
+ <xsl:when test="name(.) = 'foilgroup'">
+ <xsl:choose>
+ <xsl:when test="$thisfoilgroup = .">
+ <img alt="+">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$arrow.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <span class="ttoc-foilgroup">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+
+ <xsl:if test="$thisfoilgroup = .">
+ <xsl:for-each select="foil">
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+
+ <span class="ttoc-foil">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ <span class="ttoc-foil">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="foil" mode="t-toc">
+ <xsl:variable name="thisfoil" select="."/>
+
+ <xsl:for-each select="/slides/foil|/slides/foilgroup">
+ <xsl:choose>
+ <xsl:when test="name(.) = 'foilgroup'">
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ <span class="ttoc-foilgroup">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+
+ <xsl:if test="$thisfoil/ancestor::foilgroup = .">
+ <xsl:for-each select="foil">
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+
+ <xsl:choose>
+ <xsl:when test="$thisfoil = .">
+ <img alt="+">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$arrow.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <span class="ttoc-foil">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- foils only -->
+ <xsl:for-each select="/slides/foil">
+ <xsl:choose>
+ <xsl:when test="$thisfoil = .">
+ <img alt="+">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$arrow.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span class="ttoc-foil">
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </span>
+ <br/>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slides" mode="toc-title">
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="slidesinfo/titleabbrev">
+ <xsl:value-of select="slidesinfo/titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="slidesinfo/title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="toc-title">
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="toc-title">
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="nobreak">
+ <xsl:param name="string" select="''"/>
+ <xsl:choose>
+ <xsl:when test="contains($string, ' ')">
+ <xsl:value-of select="substring-before($string, ' ')"/>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string" select="substring-after($string, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl
new file mode 100644
index 0000000..f490099
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl
@@ -0,0 +1,667 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="but-fforward.png" select="'active/but-fforward.png'"/>
+<xsl:param name="but-info.png" select="'active/but-info.png'"/>
+<xsl:param name="but-next.png" select="'active/but-next.png'"/>
+<xsl:param name="but-prev.png" select="'active/but-prev.png'"/>
+<xsl:param name="but-rewind.png" select="'active/but-rewind.png'"/>
+
+<xsl:param name="but-xfforward.png" select="'inactive/but-fforward.png'"/>
+<xsl:param name="but-xinfo.png" select="'inactive/but-info.png'"/>
+<xsl:param name="but-xnext.png" select="'inactive/but-next.png'"/>
+<xsl:param name="but-xprev.png" select="'inactive/but-prev.png'"/>
+<xsl:param name="but-xrewind.png" select="'inactive/but-rewind.png'"/>
+
+<!-- overrides for this stylesheet -->
+<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
+<xsl:param name="toc.width" select="40"/>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slides">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $toc.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="slidesinfo/title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="/slides"/>
+ <xsl:with-param name="tocfile" select="$toc.html"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="tocpage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="next" select="/slides"/>
+ <xsl:with-param name="tocfile"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+
+ <div class="toc-body">
+ <xsl:call-template name="toc-body"/>
+ </div>
+
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="slidesinfo">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $titlefoil.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
+ <xsl:with-param name="tocfile" select="$toc.html"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="titlepage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="first"/>
+ <xsl:with-param name="last" select="(following::foilgroup|following::foil)[last()]"/>
+ <xsl:with-param name="next" select="(following::foilgroup|following::foil)[1]"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="nextfoil" select="foil[1]"/>
+ <xsl:variable name="lastfoil" select="(descendant::foil|following::foil)[last()]"/>
+ <xsl:variable name="prevfoil" select="(preceding::foil|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="foilgroup">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="last" select="$lastfoil"/>
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="foil">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
+
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="nextfoil" select="(following::foil
+ |following::foilgroup)[1]"/>
+
+ <xsl:variable name="lastfoil" select="following::foil[last()]"/>
+
+ <xsl:variable name="prevfoil" select="(preceding-sibling::foil[1]
+ |parent::foilgroup[1]
+ |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="foil">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="last" select="$lastfoil"/>
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slidesinfo" mode="header">
+ <div class="navhead">
+ <!-- nop -->
+ </div>
+</xsl:template>
+
+<xsl:template match="foil|foilgroup" mode="header">
+ <div class="navhead">
+ <table border="0" width="100%" summary="Header table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td align="left">
+ <xsl:apply-templates select="/slides/slidesinfo/title"
+ mode="slide.footer.mode"/>
+ </td>
+ <td align="right">
+ <xsl:value-of select="count(preceding::foil)
+ + count(preceding::foilgroup)
+ + count(ancestor::foilgroup)
+ + 1"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="footer">
+ <div class="navfoot">
+ <!-- nop -->
+ </div>
+</xsl:template>
+
+<xsl:template match="foil|foilgroup" mode="footer">
+ <div class="navfoot">
+ <table border="0" width="100%" summary="Header table"
+ cellpadding="0" cellspacing="0">
+ <tr>
+ <td align="center">
+ <xsl:text>Slide </xsl:text>
+ <xsl:value-of select="count(preceding::foil)
+ + count(preceding::foilgroup)
+ + count(ancestor::foilgroup)
+ + 1"/>
+ <xsl:text> of </xsl:text>
+ <xsl:value-of select="count(//foil) + count(//foilgroup)"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="slides" mode="footer"/>
+
+<!-- ============================================================ -->
+
+<xsl:template name="vertical-navigation">
+ <xsl:param name="first" select="/slides"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="last"/>
+ <xsl:param name="next"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="vnav">
+ <xsl:choose>
+ <xsl:when test="$first">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$first" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="First">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-rewind.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="First">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xrewind.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="Previous">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-prev.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Previous">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xprev.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="Last">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-next.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Last">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xnext.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="$last">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$last" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="Next">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-fforward.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xfforward.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <br/>
+ <br/>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile != ''">
+ <a href="{$tocfile}">
+ <img border="0" alt="ToC">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-info.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" alt="ToC">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xinfo.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl
new file mode 100644
index 0000000..5a5b420
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl
@@ -0,0 +1,376 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="logo.image.uri" select="''"/>
+<xsl:param name="logo.uri" select="''"/>
+<xsl:param name="logo.title" select="''"/>
+
+<xsl:param name="next.image" select="'active/w3c-next.png'"/>
+<xsl:param name="no.next.image" select="'inactive/w3c-next.png'"/>
+
+<xsl:param name="prev.image" select="'active/w3c-prev.png'"/>
+<xsl:param name="no.prev.image" select="'inactive/w3c-prev.png'"/>
+
+<xsl:param name="toc.image" select="'active/w3c-toc.png'"/>
+<xsl:param name="no.toc.image" select="'inactive/w3c-toc.png'"/>
+
+<xsl:param name="css.stylesheet" select="'slides-w3c.css'"/>
+
+<xsl:template name="logo">
+ <xsl:if test="$logo.uri != ''">
+ <a href="{$logo.uri}" title="{$logo.title}">
+ <xsl:choose>
+ <xsl:when test="$logo.image.uri=''">
+ <xsl:value-of select="$logo.title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <img src="{$logo.image.uri}" alt="{$logo.title}" border="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="overlayDiv.attributes">
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position: absolute; visibility: visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%"
+ summary="Navigation buttons">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:call-template name="logo"/>
+ </td>
+ <td valign="top" nowrap="nowrap" width="150">
+ <div align="right">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a rel="previous" accesskey="P">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32"
+ alt=" Previous" title="{$prev/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Previous" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile != ''">
+ <a rel="contents" href="{$tocfile}" accesskey="C">
+ <img border="0" width="32" height="32"
+ alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32"
+ alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a rel="next" accesskey="N">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32"
+ alt=" Next" title="{$next/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Next" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+ <xsl:apply-templates select="title"/>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table class="footer" cellspacing="0" cellpadding="0" border="0" width="97%"
+ summary="footer">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:variable name="author" select="(/slides/slidesinfo//author
+ |/slides/slidesinfo//editor)"/>
+ <xsl:for-each select="$author">
+ <xsl:choose>
+ <xsl:when test=".//email">
+ <a href="mailto:{.//email[1]}">
+ <xsl:call-template name="person.name"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="position() &lt; last()">, </xsl:if>
+ </xsl:for-each>
+ </td>
+ <td align="right" valign="top">
+ <span class="index">
+ <xsl:value-of select="count(preceding::foil)
+ + count(preceding::foilgroup)
+ + count(ancestor::foilgroup)
+ + 1"/>
+ <xsl:text> of </xsl:text>
+ <xsl:value-of select="count(//foil|//foilgroup)"/>
+ </span>
+ </td>
+
+ <td valign="top" nowrap="nowrap" width="150">
+ <div align="right">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a rel="previous" accesskey="P">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32"
+ alt=" Previous" title="{$prev/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Prev" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a rel="next" accesskey="N">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32"
+ alt=" Next" title="{$next/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Next" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%"
+ summary="Navigation buttons">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:call-template name="logo"/>
+ </td>
+ <td valign="top" nowrap="nowrap" width="150">
+ <div align="right">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a rel="previous" accesskey="P">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32"
+ alt=" Previous" title="{$prev/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Previous" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile != ''">
+ <a rel="contents" href="{$tocfile}" accesskey="C">
+ <img border="0" width="32" height="32"
+ alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32"
+ alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a rel="next" accesskey="N">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32"
+ alt=" Next" title="{$next/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Next" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="foil-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <!-- skip the title -->
+ <xsl:apply-templates select="*[name(.) != 'title']"/>
+</xsl:template>
+
+<xsl:template name="foilgroup-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <!-- skip the title -->
+ <xsl:apply-templates select="*[name(.) != 'title'
+ and name(.) != 'foil'
+ and name(.) != 'foilgroup']"/>
+
+ <xsl:if test="$foilgroup.toc != 0">
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="html:*" xmlns:html='http://www.w3.org/1999/xhtml'>
+ <xsl:element name="{local-name(.)}" namespace="">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl
new file mode 100644
index 0000000..4a6b370
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY lf '<xsl:text xmlns:xsl="http://www.w3.org/1999/XSL/Transform">&#xA;</xsl:text>'>
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:set="http://exslt.org/sets"
+ version="1.0"
+ exclude-result-prefixes="doc exsl set">
+
+<!-- ********************************************************************
+ $Id: htmlhelp.xsl 6569 2007-01-30 07:03:13Z xmldoc $
+ ********************************************************************
+
+ This stylesheet can convert DocBook Slides document type into HTML Help.
+
+ ******************************************************************** -->
+
+<xsl:import href="../html/plain.xsl"/>
+<xsl:include href="../../htmlhelp/htmlhelp-common.xsl"/>
+
+<xsl:param name="keyboard.nav" select="0"/>
+<xsl:param name="htmlhelp.default.topic" select="'index.html'"/>
+
+<xsl:template match="slides" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(slidesinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="slides|foilgroup" mode="hhc">
+ <xsl:variable name="title">
+ <xsl:if test="$htmlhelp.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <LI><OBJECT type="text/sitemap">&lf;
+ <param name="Name" value="{normalize-space($title)}"/>&lf;
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI>&lf;
+ </xsl:if>
+ <xsl:if test="foil|foilgroup">
+ <UL>&lf;
+ <xsl:apply-templates select="foil|foilgroup" mode="hhc"/>
+ </UL>&lf;
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="foil" mode="hhc">
+ <xsl:variable name="title">
+ <xsl:if test="$htmlhelp.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
+ <LI><OBJECT type="text/sitemap">&lf;
+ <param name="Name" value="{normalize-space($title)}"/>&lf;
+ <param name="Local">
+ <xsl:attribute name="value">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ </param>
+ </OBJECT></LI>&lf;
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl
new file mode 100644
index 0000000..7ff90b1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl
@@ -0,0 +1,600 @@
+<xsl:stylesheet version='1.0'
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns='http://developer.apple.com/schemas/APXL'
+ xmlns:apxl='http://developer.apple.com/schemas/APXL'
+ xmlns:plugin='http://developer.apple.com/schemas/APXLPlugins'
+ xmlns:doc='http://nwalsh.com/xsl/documentation/1.0'
+ xmlns:str='http://xsltsl.org/string'
+ xmlns:math='http://xsltsl.org/math'
+ exclude-result-prefixes='doc str math'>
+
+ <xsl:import href='xsltsl/stdlib.xsl'/>
+ <xsl:output method='xml' indent='yes' encoding='UTF-8'/>
+ <xsl:strip-space elements='*'/>
+
+ <doc:article xmlns=''>
+ <articleinfo>
+ <title>Keynote Slides</title>
+
+ <author>
+ <firstname>Steve</firstname>
+ <surname>Ball</surname>
+ <affiliation>
+ <orgname>Zveno</orgname>
+ <address>
+ <otheraddr>
+ <ulink url='http://www.zveno.com/'>zveno.com</ulink>
+ </otheraddr>
+ </address>
+ </affiliation>
+ </author>
+
+ <releaseinfo>$Id: default.xsl 3991 2004-11-10 06:51:55Z balls $</releaseinfo>
+
+ <copyright>
+ <year>2004</year>
+ <year>2003</year>
+ <holder>Steve Ball, Zveno Pty Ltd</holder>
+ </copyright>
+
+ <legalnotice>
+ <para>Zveno Pty Ltd makes this software and associated documentation available free of charge for any purpose. You may make copies of the software but you must include all of this notice on any copy.</para>
+ <para>Zveno Pty Ltd does not warrant that this software is error free or fit for any purpose. Zveno Pty Ltd disclaims any liability for all claims, expenses, losses, damages and costs any user may incur as a result of using, copying or modifying the software.</para>
+ </legalnotice>
+ </articleinfo>
+ </doc:article>
+
+ <xsl:param name='slides'/>
+
+ <xsl:variable name='slide-master' select='"Title &amp; Subtitle"'/>
+ <xsl:variable name='foilgroup-master' select='"Title - Center"'/>
+ <xsl:variable name='overview-master' select='"Title - Top"'/>
+ <xsl:variable name='bullet-master' select='"SmlTitle &amp; Bullets"'/>
+ <xsl:variable name='bullet-and-image-master' select='"Title &amp; Bullets - Left"'/>
+ <xsl:variable name='title-only-master' select='"SmlTitle"'/>
+
+ <xsl:variable name='masters' select='/apxl:presentation/apxl:theme/apxl:master-slides'/>
+
+ <xsl:template match='/'>
+ <xsl:choose>
+ <xsl:when test='$slides = ""'>
+ <xsl:message terminate='yes'>You must specify your slides document using the "slides" parameter</xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='apxl:slide-list'>
+ <slide-list>
+ <xsl:apply-templates select='document($slides)' mode='slides'/>
+ </slide-list>
+ </xsl:template>
+
+ <xsl:template match='slides' mode='slides'>
+ <slide id='slide-1' master-slide-id="{$masters/apxl:master-slide[@name=$slide-master]/@id}">
+ <drawables>
+ <body visibility='tracks-master' vertical-alignment='tracks-master'/>
+ <title visibility='tracks-master' vertical-alignment='tracks-master'/>
+ </drawables>
+ <transition-style type='inherited'/>
+ <thumbnails>
+ <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
+ </thumbnails>
+ <bullets>
+ <bullet marker-type='inherited' level='0'>
+ <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
+ <xsl:apply-templates select='slidesinfo/title/node()'/>
+ </content>
+ </bullet>
+ <xsl:choose>
+ <xsl:when test='slidesinfo/subtitle'>
+ <bullet marker-type='inherited' level='1'>
+ <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
+ <xsl:apply-templates select='slidesinfo/subtitle/node()' mode='slides'/>
+ </content>
+ </bullet>
+ </xsl:when>
+ <xsl:when test='slidesinfo/corpauthor'>
+ <bullet marker-type='inherited' level='1'>
+ <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
+ <xsl:apply-templates select='slidesinfo/corpauthor/node()' mode='slides'/>
+ </content>
+ </bullet>
+ </xsl:when>
+ <xsl:when test='slidesinfo/author'>
+ <bullet marker-type='inherited' level='1'>
+ <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
+ <xsl:apply-templates select='slidesinfo/author' mode='slides'/>
+ </content>
+ </bullet>
+ </xsl:when>
+ </xsl:choose>
+ </bullets>
+ <notes font-size='18' font-name='LucidaGrande'>
+ <xsl:apply-templates select='slidesinfo/*[not(self::title|self::subtitle|self::corpauthor|self::author)]' mode='slides'/>
+ </notes>
+ </slide>
+
+ <xsl:if test='foilgroup'>
+ <xsl:call-template name='overview'/>
+ </xsl:if>
+
+ <xsl:apply-templates select='foilgroup|foil' mode='slides'/>
+ </xsl:template>
+
+ <xsl:template name='overview'>
+ <xsl:param name='current' select='/'/>
+
+ <slide id='overview-{generate-id()}' master-slide-id="{$masters/apxl:master-slide[@name=$overview-master]/@id}">
+ <drawables>
+ <body visibility='tracks-master' vertical-alignment='tracks-master'/>
+ <title visibility='tracks-master' vertical-alignment='tracks-master'/>
+
+ <xsl:for-each select='ancestor-or-self::slides/foilgroup'>
+ <textbox id='textbox-{position()}' grow-horizontally='true' transformation='1 0 0 1 {100 + floor((position() - 1) div 10) * 400} {200 + floor((position() - 1) mod 10) * 50}' size='200 50'>
+ <content tab-stops='L 84' font-size='36' paragraph-alignment='left'>
+ <xsl:attribute name='font-color'>
+ <xsl:choose>
+ <xsl:when test='generate-id() = generate-id($current)'>
+ <xsl:text>1 0.5 0</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>g1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:apply-templates select='title' mode='slides'/>
+ </content>
+ </textbox>
+ </xsl:for-each>
+
+ </drawables>
+ <transition-style type='inherited'/>
+ <thumbnails>
+ <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
+ </thumbnails>
+ <bullets>
+ <bullet marker-type='inherited' level='0'>
+ <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'>Overview</content>
+ </bullet>
+ </bullets>
+ </slide>
+ </xsl:template>
+
+ <xsl:template match='author' mode='slides'>
+ <xsl:apply-templates select='firstname/node()' mode='slides'/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select='surname/node()' mode='slides'/>
+ </xsl:template>
+ <xsl:template match='copyright' mode='slides'>
+ <xsl:text>Copyright (c) </xsl:text>
+ <xsl:value-of select='year'/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select='holder' mode='slides'/>
+ <xsl:text>. </xsl:text>
+ </xsl:template>
+
+ <xsl:template match='foilgroup' mode='slides'>
+ <xsl:variable name='number' select='count(preceding-sibling::foilgroup) + count(preceding::foil) + 1'/>
+
+ <xsl:call-template name='overview'>
+ <xsl:with-param name='current' select='.'/>
+ </xsl:call-template>
+
+ <slide id='foilgroup-{generate-id()}'>
+ <xsl:attribute name='master-slide-id'>
+ <xsl:choose>
+ <xsl:when test='*[not(self::foil|self::foilgroupinfo|self::speakernotes)]'>
+ <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$masters/apxl:master-slide[@name=$foilgroup-master]/@id'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <drawables>
+ <title visibility='tracks-master' vertical-alignment='tracks-master'/>
+ <body visibility='hidden' vertical-alignment='tracks-master'/>
+ <xsl:call-template name='drawables'/>
+ </drawables>
+ <transition-style type='inherited'/>
+ <thumbnails>
+ <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
+ </thumbnails>
+ <bullets>
+ <bullet marker-type='inherited' level='0'>
+ <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
+ <xsl:apply-templates select='title' mode='slides'/>
+ </content>
+ </bullet>
+
+ <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/>
+ </bullets>
+ <xsl:if test='speakernotes'>
+ <notes font-size='18' font-name='LucidaGrande'>
+ <xsl:apply-templates select='speakernotes/para[1]/node()' mode='slides'/>
+ <xsl:for-each select='speakernotes/para[position() != 1]'>
+ <xsl:text>; </xsl:text>
+ <xsl:apply-templates select='node()' mode='slides'/>
+ </xsl:for-each>
+ </notes>
+ </xsl:if>
+ </slide>
+
+ <xsl:apply-templates select='foil' mode='slides'/>
+
+ </xsl:template>
+
+ <xsl:template match='foil' mode='slides'>
+ <xsl:variable name='number' select='count(preceding::foilgroup) + count(preceding::foil) + count(preceding-sibling::foil) + 1'/>
+
+ <slide id='foil-{generate-id()}'>
+ <xsl:attribute name='master-slide-id'>
+ <xsl:choose>
+ <xsl:when test='imageobject'>
+ <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/>
+ </xsl:when>
+ <xsl:when test='itemizedlist[.//imageobject]'>
+ <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-and-image-master]/@id'/>
+ </xsl:when>
+ <xsl:when test='itemizedlist'>
+ <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-master]/@id'/>
+ </xsl:when>
+ <xsl:when test='example|informalexample'>
+ <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-master]/@id'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <drawables>
+ <body visibility='tracks-master' vertical-alignment='tracks-master'/>
+ <title visibility='tracks-master' vertical-alignment='tracks-master'/>
+ <xsl:call-template name='drawables'/>
+ </drawables>
+ <transition-style type='inherited'/>
+ <thumbnails>
+ <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
+ </thumbnails>
+ <bullets>
+ <bullet marker-type='inherited' level='0'>
+ <content tab-stops='L 96' font-size='64' font-color='g1' font-name='GillSans' paragraph-alignment='inherited'>
+ <!--
+ <xsl:apply-templates select='../title' mode='slides'/>
+ <xsl:text>: </xsl:text>
+-->
+ <xsl:apply-templates select='title' mode='slides'/>
+ </content>
+ </bullet>
+ <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/>
+ </bullets>
+ <xsl:if test='speakernotes'>
+ <notes font-size='18' font-name='LucidaGrande'>
+ <xsl:apply-templates select='speakernotes/para[1]/node()' mode='slides'/>
+ <xsl:for-each select='speakernotes/para[position() != 1]'>
+ <xsl:text>; </xsl:text>
+ <xsl:apply-templates select='node()' mode='slides'/>
+ </xsl:for-each>
+ </notes>
+ </xsl:if>
+ </slide>
+ </xsl:template>
+
+ <doc:template xmlns=''>
+ <title>drawables Template</title>
+
+ <para>This template adds objects to the drawables section of a foil. These include images, as well as unadorned (non-bullet) text.</para>
+
+ <para>A single image is placed centered on the foil. An image on a foil that contains other text is placed on the right-hand-side.</para>
+ </doc:template>
+
+ <xsl:template name='drawables'>
+ <xsl:choose>
+ <xsl:when test='imageobject'>
+ <plugin opacity='1' transformation='1 0 0 1 140 130'>
+ <plugin-data>
+ <plugin:movie bundled='true' src='{imageobject/imagedata/@fileref}' key='root' width='740' height='560'/>
+ <string key='CPVersion'>1.0</string>
+ <string key='MIMEType'>video/quicktime</string>
+ </plugin-data>
+ <styles>
+ <shadow-style opacity='0' radius='0'/>
+ </styles>
+ </plugin>
+ </xsl:when>
+ <xsl:when test='false() and .//informaltable|.//table'>
+ <xsl:variable name='table' select='.//informaltable|.//table[1]'/>
+ <xsl:variable name='cells' select='$table/tgroup/*/row/entry'/>
+ <xsl:variable name='numrows' select='count($table/tgroup/*/row)'/>
+ <xsl:variable name='numcols' select='count($table/tgroup/*[1]/row[1]/entry)'/>
+ <xsl:variable name='identbase' select='count($table/preceding::node())'/>
+
+ <plugin transformation='1 0 0 1 200 200'>
+ <plugin-data>
+ <plugin:table key='root' version='1.2'>
+ <xsl:attribute name='size'>
+ <xsl:text>{800, 400}</xsl:text>
+ </xsl:attribute>
+
+ <dict/>
+ <xsl:for-each select='$cells'>
+ <plugin:element type='text' tr='5834' bl='5838' tl='5833' br='5839'>
+ <xsl:attribute name='tl'>
+ <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1)) + (position() mod $numcols)'/>
+ </xsl:attribute>
+ <xsl:attribute name='tr'>
+ <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1)) + (position() mod $numcols) + 1'/>
+ </xsl:attribute>
+ <xsl:attribute name='bl'>
+ <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1) + 1) + (position() mod $numcols)'/>
+ </xsl:attribute>
+ <xsl:attribute name='br'>
+ <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1) + 1) + (position() mod $numcols) + 1'/>
+ </xsl:attribute>
+ <plugin:node ident='5833'>
+ <xsl:attribute name='pos'>
+ <xsl:text>{0, 300}</xsl:text>
+ </xsl:attribute>
+ </plugin:node>
+ <plugin:node ident='5834'>
+ <xsl:attribute name='pos'>
+ <xsl:text>{150, 300}</xsl:text>
+ </xsl:attribute>
+ </plugin:node>
+ <plugin:node ident='5838'>
+ <xsl:attribute name='pos'>
+ <xsl:text>{0, 200}</xsl:text>
+ </xsl:attribute>
+ </plugin:node>
+ <plugin:node ident='5839'>
+ <xsl:attribute name='pos'>
+ <xsl:text>{150, 200}</xsl:text>
+ </xsl:attribute>
+ </plugin:node>
+ <content tab-stops='L 84' font-size='32' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
+ <xsl:value-of select='$cells[1]'/>
+ </content>
+ <dict/>
+ </plugin:element>
+
+ </xsl:for-each>
+ </plugin:table>
+ </plugin-data>
+ </plugin>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test='not(self::foilgroup) and .//imageobject'>
+ <xsl:variable name='base'>
+ <xsl:call-template name='str:substring-after-last'>
+ <xsl:with-param name='text' select='.//imageobject/imagedata/@fileref'/>
+ <xsl:with-param name='chars' select='"/"'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <image display-name='{$base}' id='image-1' image-data='{.//imageobject/imagedata/@fileref}' byte-size='1' transformation='1 0 0 1 500 200' natural-size='{.//imageobject/imagedata/@width} {.//imageobject/imagedata/@height}' lock-aspect-ratio='true'/>
+ </xsl:if>
+ <xsl:apply-templates select='para|informalexample|example' mode='slides'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='itemizedlist/listitem' mode='slides'>
+ <bullet marker-type='inherited' level='{count(ancestor::itemizedlist)}'>
+ <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='left'>
+ <xsl:apply-templates select='para|informalexample' mode='slides'/>
+ </content>
+ </bullet>
+ <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/>
+ </xsl:template>
+ <xsl:template match='listitem/para|listitem/informalexample' mode='slides'>
+ <xsl:if test='preceding-sibling::*'>
+ <xsl:text>
+
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode='slides'/>
+ </xsl:template>
+ <xsl:template match='listitem/informalexample/programlisting' mode='slides'>
+ <textbox transformation='1 0 0 1 110 260' size='830 82'>
+ <content tab-stops='L 84' font-size='36' font-color='g1' font-name='AmericanTypewriter-CondensedBold' paragraph-alignment='left'>
+ <xsl:call-template name='literallayout'/>
+ </content>
+ </textbox>
+ </xsl:template>
+
+ <xsl:template name='literallayout'>
+ <xsl:param name='nodes' select='node()'/>
+ <xsl:param name='inCDATA' select='false()'/>
+
+ <xsl:choose>
+ <xsl:when test='not($nodes) and $inCDATA'>
+ <xsl:text disable-output-escaping='yes'>]]&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test='not($nodes)'/>
+ <xsl:when test='$nodes[1][self::emphasis] and $inCDATA'>
+ <xsl:text disable-output-escaping='yes'>]]&gt;</xsl:text>
+ <xsl:apply-templates select='$nodes[1]' mode='literal'/>
+ <xsl:call-template name='literallayout'>
+ <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$nodes[1][self::emphasis]'>
+ <xsl:apply-templates select='$nodes[1]' mode='literal'/>
+ <xsl:call-template name='literallayout'>
+ <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$inCDATA'>
+ <xsl:apply-templates select='$nodes[1]' mode='literal'/>
+ <xsl:call-template name='literallayout'>
+ <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
+ <xsl:with-param name='inCDATA' select='$inCDATA'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text disable-output-escaping='yes'>&lt;![CDATA[</xsl:text>
+ <xsl:apply-templates select='$nodes[1]' mode='literal'/>
+ <xsl:call-template name='literallayout'>
+ <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
+ <xsl:with-param name='inCDATA' select='true()'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='para' mode='slides'>
+ <textbox transformation='1 0 0 1 110 {200 + count(preceding-sibling::para|preceding-sibling::informalexample) * 60}' size='830 41'>
+ <content tab-stops='L 84' font-size='36' font-color='g1' paragraph-alignment='left'>
+ <xsl:attribute name='font-name'>
+ <xsl:choose>
+ <xsl:when test='@font-style = "italic"'>GillSans-Italic</xsl:when>
+ <xsl:otherwise>GillSans</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:apply-templates mode='slides'/>
+ </content>
+ </textbox>
+ </xsl:template>
+
+ <xsl:template match='text()' mode='slides'>
+ <xsl:variable name='tmp'>
+ <xsl:call-template name='str:subst'>
+ <xsl:with-param name='text' select='.'/>
+ <xsl:with-param name='replace'>&quot;</xsl:with-param>
+ <xsl:with-param name='with'>“</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='content'>
+ <xsl:call-template name='str:subst'>
+ <xsl:with-param name='text' select='$tmp'/>
+ <xsl:with-param name='replace'>]]&gt;</xsl:with-param>
+ <xsl:with-param name='with'>]] &gt;</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test='ancestor::programlisting'>
+ <xsl:value-of disable-output-escaping='yes' select='$content'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$content'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match='text()' mode='literal'>
+ <xsl:variable name='tmp'>
+ <xsl:call-template name='str:subst'>
+ <xsl:with-param name='text' select='.'/>
+ <xsl:with-param name='replace'>&lt;</xsl:with-param>
+ <xsl:with-param name='with'>&lt;</xsl:with-param>
+ <xsl:with-param name='disable-output-escaping' select='yes'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='tmp2'>
+ <xsl:call-template name='str:subst'>
+ <xsl:with-param name='text' select='$tmp'/>
+ <xsl:with-param name='replace'>]]&gt;</xsl:with-param>
+ <xsl:with-param name='with'>]] &gt;</xsl:with-param>
+ <xsl:with-param name='disable-output-escaping' select='yes'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select='$tmp2' disable-output-escaping='yes'/>
+ </xsl:template>
+
+ <xsl:template match='informalexample|example' mode='slides'>
+ <xsl:apply-templates mode='slides'/>
+ </xsl:template>
+ <xsl:template match='programlisting' mode='slides'>
+ <xsl:variable name='lines'>
+ <xsl:call-template name='str:count-substring'>
+ <xsl:with-param name='text' select='text()'/>
+ <xsl:with-param name='chars' select='"&#x0a;"'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='offset'>
+ <xsl:choose>
+ <xsl:when test='string-length(../preceding-sibling::para) > 45'>20</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- xsl:comment> layout programlisting with offset <xsl:value-of select='$offset'/> have preceding-sibling para? <xsl:value-of select='count(../preceding-sibling::para)'/> length <xsl:value-of select='string-length(../preceding-sibling::para)'/></xsl:comment -->
+ <textbox transformation='1 0 0 1 110 {200 + $offset + count(preceding-sibling::para|../preceding-sibling::para|preceding-sibling::informalexample|preceding-sibling::example) * 60}' size='830 {($lines + 1) * 41}'>
+ <content tab-stops='L 84' font-size='36' font-color='g1' font-name='AmericanTypewriter-CondensedBold' paragraph-alignment='left'>
+ <xsl:choose>
+ <xsl:when test='emphasis'>
+ <xsl:call-template name='literallayout'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span>
+ <xsl:call-template name='literallayout'/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ </content>
+ </textbox>
+ </xsl:template>
+
+ <xsl:template match='emphasis' mode='literal'>
+ <span>
+ <xsl:choose>
+ <xsl:when test='ancestor::programlisting and @font-style = "italic" and @font-weight="bold"'>
+ <xsl:attribute name='font-name'>AmericanTypewriter-CondensedBoldItalic</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='@font-style = "italic" and @font-weight="bold"'>
+ <xsl:attribute name='font-name'>GillSans-BoldItalic</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='ancestor::programlisting and @font-style = "italic"'>
+ <xsl:attribute name='font-name'>AmericanTypewriter-CondensedItalic</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='@font-style = "italic"'>
+ <xsl:attribute name='font-name'>GillSans-Italic</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='ancestor::programlisting and @font-weight = "bold"'>
+ <xsl:attribute name='font-name'>AmericanTypewriter-CondensedBold</xsl:attribute>
+ </xsl:when>
+ <xsl:when test='@font-weight = "bold"'>
+ <xsl:attribute name='font-name'>GillSans-Bold</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test='@fill'>
+ <xsl:attribute name='font-color'>
+ <xsl:variable name='red'>
+ <xsl:call-template name='math:cvt-hex-decimal'>
+ <xsl:with-param name='value' select='substring(@fill, 2, 2)'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='green'>
+ <xsl:call-template name='math:cvt-hex-decimal'>
+ <xsl:with-param name='value' select='substring(@fill, 4, 2)'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='blue'>
+ <xsl:call-template name='math:cvt-hex-decimal'>
+ <xsl:with-param name='value' select='substring(@fill, 6, 2)'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select='$red div 255'/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select='$green div 255'/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select='$blue div 255'/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name='literallayout'/>
+ </span>
+ </xsl:template>
+
+ <xsl:template match="*">
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:copy/>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="comment()|processing-instruction()">
+ <xsl:copy/>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl
new file mode 100644
index 0000000..6e2866d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl
@@ -0,0 +1,348 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ version="1.0"
+ extension-element-prefixes="doc"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:str="http://xsltsl.org/string"
+ xmlns:cmp="http://xsltsl.org/cmp"
+ exclude-result-prefixes="cmp str doc"
+>
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: cmp.xsl 6297 2006-09-14 01:32:27Z xmldoc $
+ </releaseinfo>
+ <author>
+ <surname>Hummel</surname>
+ <firstname>Mark</firstname>
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>Mark Hummel</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>XML Compare</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This module provides a template for comparing two xml documents. </para>
+
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+
+ <doc:template name="cmp:diff">
+ <refpurpose>Find differences</refpurpose>
+
+ <refdescription>
+ <para>Compare two xml documents and display differences. Two xml documents are defined to be the same if: They have the matching elements and attributes, and that the data in the elements also match. The comparison is order sensitive. </para>
+
+ <para>The element names from the documents at the current depth are compared, followed by their values, then any attribute names and values are compared. The process is applied then to the subtrees of the documents.</para>
+
+ <para>Notes: If there are leaf nodes in one nodeset which don't exist in the other, the value of those 'extra' elements won't appear as a difference.
+ </para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>ns1</term>
+ <term>ns2</term>
+ <listitem>
+ <para>The two nodesets which are to be compared. </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the difference between the documents. </para>
+
+ <para>The format of the output is an xml document. A node is added to the result tree for every difference. The node contains the type of difference (e.g element name difference, attribute value difference, etc), the value in the first nodeset and the value in the second nodeset, and the parent node. The indentation level is the depth at which the difference was found relative to the first document. </para>
+
+ </refreturn>
+ </doc:template>
+
+ <!-- pass in a nodeset and compare. Is order sensitive. Output attribute, element and textual differences. -->
+
+ <xsl:template name="cmp:diff">
+ <xsl:param name="ns1"/>
+ <xsl:param name="ns2"/>
+
+ <!-- attribute compare -->
+ <!-- Optimisation attempt
+
+ Can probaby change this into one loop ie -
+ <xsl:for-each
+ i = position
+ if node1[i] = node2[i]...
+
+ -->
+
+ <!-- Need to check if there are two sets of attributes -->
+ <xsl:choose>
+ <xsl:when test='count($ns1/attribute::*) = count($ns2/attribute::*)'>
+ <xsl:for-each select="$ns1/attribute::*">
+ <xsl:variable name="name1" select="name()"/>
+ <xsl:variable name="value1" select="."/>
+ <xsl:variable name="i" select="position()"/>
+
+ <xsl:for-each select="$ns2/attribute::*">
+
+ <xsl:variable name="j" select="position()"/>
+ <xsl:variable name="name2" select="name()"/>
+ <xsl:variable name="value2" select="."/>
+
+ <xsl:if test="$i = $j">
+ <xsl:if test="$name1 != $name2">
+ <attributeNameDifference>
+ <parentElement><xsl:value-of select="name(..)"/></parentElement>
+ <before><xsl:value-of select="$name1"/></before>
+ <after><xsl:value-of select="$name2"/></after>
+ </attributeNameDifference>
+ </xsl:if>
+
+ <xsl:if test="$name1 = $name2 and $value1 != $value2">
+ <attributeValueDifference>
+ <parentElement><xsl:value-of select="name(..)"/></parentElement>
+ <before><xsl:value-of select="$value1"/></before>
+ <after><xsl:value-of select="$value2"/></after>
+ </attributeValueDifference>
+ </xsl:if>
+
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <attributeNameDifference>
+ <parentElement>
+ <xsl:value-of select="name(..)"/>
+ </parentElement>
+ <before><xsl:value-of select='$ns1/attribute::*'/></before>
+ <after><xsl:value-of select='$ns2/attribute::*'/></after>
+ </attributeNameDifference>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+ <!-- Find element differences by comparing the element names from the same position in both documents. Iterate over all the nodes in the nodeset with the largest number of elements, so the extra elements will appear as differences. -->
+
+ <xsl:choose>
+ <!-- Define loop direction based on which tree has more nodes
+ FIXME: Replacing this with one for-each and a test for the case
+ of the second tree having more nodes would be more elegant
+
+ Solution: Add variable for direction and assign the 'larger' nodeset to that
+ variable. Then do one for-each.
+
+ FIXME: The solution is a bit too iterative. Make it more functional
+
+ -->
+ <xsl:when test="count($ns1) &gt; count($ns2)">
+ <xsl:for-each select="$ns1">
+ <xsl:variable name="i" select="position()"/>
+
+ <xsl:message>node[<xsl:value-of select='$i'/>]:
+ <xsl:value-of select='$ns1[$i]'/>
+ </xsl:message>
+
+ <!-- Element name compare -->
+ <xsl:if test="name($ns1[$i]) != name($ns2[$i])">
+ <elementNameDifference>
+ <parentElement><xsl:value-of select="name(..)"/></parentElement>
+ <before><xsl:value-of select="name($ns1[$i])"/></before>
+ <after><xsl:value-of select="name($ns2[$i])"/></after>
+ </elementNameDifference>
+ </xsl:if>
+
+ <!-- Element Value compare -->
+
+ <xsl:if test="count($ns1/*) = 0">
+ <xsl:if test="$ns1[$i] != $ns2[$i]">
+ <elementValueDifference>
+ <parentElement><xsl:value-of select="name(..)"/></parentElement>
+ <before><xsl:value-of select="$ns1[$i]"/></before>
+ <after><xsl:value-of select="$ns2[$i]"/></after>
+ </elementValueDifference>
+ </xsl:if>
+ </xsl:if>
+
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$ns2">
+ <xsl:variable name="i" select="position()"/>
+
+ <!-- Element Name compare -->
+
+ <xsl:if test="name($ns1[$i]) != name($ns2[$i])">
+ <elementNameDifference>
+ <parentElement><xsl:value-of select="name(..)"/></parentElement>
+ <before><xsl:value-of select="name($ns1[$i])"/></before>
+ <after><xsl:value-of select="name($ns2[$i])"/></after>
+ </elementNameDifference>
+
+ </xsl:if>
+
+ <!-- value compare -->
+
+ <xsl:if test="count($ns2/*) = 0">
+ <xsl:if test="$ns2[$i] != $ns1[$i]">
+ <elementValueDifference>
+ <parentElement><xsl:value-of select="name(..)"/></parentElement>
+ <after><xsl:value-of select="$ns2[$i]"/></after>
+ <before><xsl:value-of select="$ns1[$i]"/></before>
+ </elementValueDifference>
+ </xsl:if>
+ </xsl:if>
+
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- stop processing when leaf node is reached. -->
+
+ <xsl:if test="count($ns1/*) &gt; 0 and count($ns2/*) &gt; 0">
+ <xsl:call-template name="cmp:diff">
+ <xsl:with-param name="ns1" select="$ns1/*"/>
+ <xsl:with-param name="ns2" select="$ns2/*"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ </xsl:template>
+
+ <!-- Return false if the two nodesets are not identical
+ -->
+
+ <doc:template name="cmp:cmp">
+ <refpurpose>Compare</refpurpose>
+
+ <refdescription>
+ <para>Recursively compare two xml nodesets, stop when a difference is found and return false. Otherwise return true if the document is identical. </para>
+
+ <para>The element names from the documents at the current depth are compared, followed by their values, then any attribute names and values are compared. The process is applied then to the subtrees of the documents.</para>
+
+ <para>Notes: If there are leaf nodes in one nodeset which don't exist in the other, the value of those 'extra' elements won't appear as a difference.
+ </para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>ns1</term>
+ <term>ns2</term>
+ <listitem>
+ <para>The two nodesets which are to be compared. </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>False when the nodesets are not identical, empty otherwise. </para>
+
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="cmp:cmp">
+ <xsl:param name="ns1"/>
+ <xsl:param name="ns2"/>
+ <xsl:param name="depth"/>
+
+ <xsl:choose>
+ <xsl:when test='count($ns1) != count($ns2)'>
+ <xsl:value-of select='"countDiff"'/>
+ </xsl:when>
+ <xsl:when test='count($ns1/attribute::*) != count($ns2/attribute::*)'>
+ <xsl:value-of select='"countDiff"'/>
+ </xsl:when>
+ <xsl:when test='$ns1 and $ns2'>
+
+ <xsl:variable name='result'>
+ <xsl:call-template name='cmp:cmp'>
+ <xsl:with-param name='ns1' select='$ns1/*'/>
+ <xsl:with-param name='ns2' select='$ns2/*'/>
+ <xsl:with-param name='depth' select='$depth+1'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='$result = "countDiff"'>
+ <xsl:value-of select='$result'/>
+ </xsl:when>
+ <xsl:when test='$result = "textDiff"'>
+ <xsl:value-of select='$result'/>
+ </xsl:when>
+ <xsl:when test='$result = ""'>
+
+ <xsl:variable name='keyText1' select='name($ns1)'/>
+ <xsl:variable name='keyText2' select='name($ns2)'/>
+
+ <xsl:choose>
+ <!-- Check if the text of the nodesets are the same and the attributes-->
+ <xsl:when test='$ns1 = $ns2 and $keyText1 = $keyText2'>
+
+ <!-- Check the attribute names are the same -->
+ <!-- Number of attributes being different is caught higher up -->
+ <xsl:if test='count($ns1/attribute::*)'>
+ <xsl:for-each select='$ns1/attribute::*'>
+ <xsl:variable name='i' select='position()'/>
+ <xsl:variable name='name1' select='name(.)'/>
+ <xsl:variable name='value1' select='.'/>
+
+ <xsl:for-each select='$ns2/attribute::*'>
+ <xsl:variable name='j' select='position()'/>
+ <xsl:variable name='name2' select='name(.)'/>
+ <xsl:variable name='value2' select='.'/>
+
+ <xsl:if test='$i = $j and ($name1 != $name2 or
+ $value1 != $value2)'>
+ <xsl:value-of select='"textDiff"'/>
+ </xsl:if>
+
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:if>
+ <!--
+ <xsl:variable name='diffResult'>
+ <xsl:call-template name='cmp:diff'>
+ <xsl:with-param name='ns1' select='$ns1'/>
+ <xsl:with-param name='ns2' select='$ns2'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test='not($diffResult = "")'>
+ <xsl:value-of select='"textDiff"'/>
+ </xsl:if>
+ -->
+
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='"textDiff"'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:when test='$ns1 and not($ns2)'>
+ <xsl:value-of select='"structDiff"'/>
+ </xsl:when>
+ <xsl:when test='$ns2 and not($ns1)'>
+ <xsl:value-of select='"structDiff"'/>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl
new file mode 100644
index 0000000..671260d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl
@@ -0,0 +1,1524 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:dt="http://xsltsl.org/date-time"
+ xmlns:str="http://xsltsl.org/string"
+ extension-element-prefixes="doc str">
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: date-time.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Diamond</surname>
+ <firstname>Jason</firstname>
+ </author>
+ <copyright>
+ <year>2004</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ <copyright>
+ <year>2001</year>
+ <holder>Jason Diamond</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>Date/Time Processing</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This module provides templates for formatting and parsing date/time strings.</para>
+
+ <para>See <ulink url="http://www.tondering.dk/claus/calendar.html">http://www.tondering.dk/claus/calendar.html</ulink> for more information on calendars and the calculations this library performs.</para>
+
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <doc:template name="dt:format-date-time" xmlns="">
+ <refpurpose>Returns a string with a formatted date/time.</refpurpose>
+
+ <refdescription>
+ <para>The formatted date/time is determined by the format parameter. The default format is %Y-%m-%dT%H:%M:%S%z, the W3C format.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>The date-time value in XML Schemas (WXS) format.</para>
+ <para>If this value is specified, it takes priority over other parameters.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>year</term>
+ <listitem>
+ <para>Year, in either 2 or 4+ digit format..</para>
+ <para>If the year is given as a two digit value, it will be converted to a four digit value using the fixed window method. Values between 00 and 49 will be prepended by "20". Values between 50 and 99 will be prepended by "19".</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month (1 - 12; January = 1)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>day</term>
+ <listitem>
+ <para>Day of month (1 - 31)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>hour</term>
+ <listitem>
+ <para>Hours since midnight (0 - 23)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>minute</term>
+ <listitem>
+ <para>Minutes after hour (0 - 59)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>second</term>
+ <listitem>
+ <para>Seconds after minute (0 - 59)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>time-zone</term>
+ <listitem>
+ <para>Time zone string (e.g., 'Z' or '-08:00')</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>format</term>
+ <listitem>
+ <para>The format specification.</para>
+ <variablelist>
+
+ <varlistentry>
+ <term>%a</term>
+ <listitem>
+ <para>Abbreviated weekday name</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%A</term>
+ <listitem>
+ <para>Full weekday name</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%b</term>
+ <listitem>
+ <para>Abbreviated month name</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%B</term>
+ <listitem>
+ <para>Full month name</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%c</term>
+ <listitem>
+ <para>Date and time representation appropriate for locale</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%d</term>
+ <listitem>
+ <para>Day of month as decimal number (01 - 31)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%e</term>
+ <listitem>
+ <para>Day of month as decimal number (1 - 31)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%H</term>
+ <listitem>
+ <para>Hour in 24-hour format (00 - 23)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%I</term>
+ <listitem>
+ <para>Hour in 12-hour format (01 - 12)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%i</term>
+ <listitem>
+ <para>Hour in 12-hour format (1 - 12)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%j</term>
+ <listitem>
+ <para>Day of year as decimal number (001 - 366)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%m</term>
+ <listitem>
+ <para>Month as decimal number (01 - 12)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%n</term>
+ <listitem>
+ <para>Month as decimal number (1 - 12)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%M</term>
+ <listitem>
+ <para>Minute as decimal number (00 - 59)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%P</term>
+ <listitem>
+ <para>Current locale's A.M./P.M. indicator for 12-hour clock, uppercase</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%Q</term>
+ <listitem>
+ <para>Current locale's A.M./P.M. indicator for 12-hour clock, uppercase with periods</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%p</term>
+ <listitem>
+ <para>Current locale's A.M./P.M. indicator for 12-hour clock, lowercase</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%q</term>
+ <listitem>
+ <para>Current locale's A.M./P.M. indicator for 12-hour clock, lowercase with periods</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%S</term>
+ <listitem>
+ <para>Second as decimal number (00 - 59)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%U</term>
+ <listitem>
+ <para>Week of year as decimal number, with Sunday as first day of week (00 - 53)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%w</term>
+ <listitem>
+ <para>Weekday as decimal number (0 - 6; Sunday is 0)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%W</term>
+ <listitem>
+ <para>Week of year as decimal number, with Monday as first day of week (00 - 53)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%x</term>
+ <listitem>
+ <para>Date representation for current locale </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%X</term>
+ <listitem>
+ <para>Time representation for current locale</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%y</term>
+ <listitem>
+ <para>Year without century, as decimal number (00 - 99)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%Y</term>
+ <listitem>
+ <para>Year with century, as decimal number</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%z</term>
+ <listitem>
+ <para>Time-zone name or abbreviation; no characters if time zone is unknown</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>%%</term>
+ <listitem>
+ <para>Percent sign</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a formatted date/time string.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:format-date-time">
+ <xsl:param name='xsd-date-time'/>
+ <xsl:param name="year"/>
+ <xsl:param name="month"/>
+ <xsl:param name="day"/>
+ <xsl:param name="hour"/>
+ <xsl:param name="minute"/>
+ <xsl:param name="second"/>
+ <xsl:param name="time-zone"/>
+ <xsl:param name="format" select="'%Y-%m-%dT%H:%M:%S%z'"/>
+
+ <xsl:value-of select="substring-before($format, '%')"/>
+
+ <xsl:variable name="code" select="substring(substring-after($format, '%'), 1, 1)"/>
+
+ <xsl:choose>
+
+ <xsl:when test='$xsd-date-time'>
+ <xsl:call-template name='dt:format-date-time'>
+ <xsl:with-param name='year'>
+ <xsl:call-template name='dt:get-xsd-datetime-year'>
+ <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='month'>
+ <xsl:call-template name='dt:get-xsd-datetime-month'>
+ <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='day'>
+ <xsl:call-template name='dt:get-xsd-datetime-day'>
+ <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='hour'>
+ <xsl:call-template name='dt:get-xsd-datetime-hour'>
+ <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='minute'>
+ <xsl:call-template name='dt:get-xsd-datetime-minute'>
+ <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='second'>
+ <xsl:call-template name='dt:get-xsd-datetime-second'>
+ <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='time-zone'>
+ <xsl:call-template name='dt:get-xsd-datetime-timezone'>
+ <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name='format'>
+ <xsl:choose>
+ <xsl:when test='contains($format, "%")'>
+ <xsl:text>%</xsl:text>
+ <xsl:value-of select='substring-after($format, "%")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$format'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Abbreviated weekday name -->
+ <xsl:when test="$code='a'">
+ <xsl:variable name="day-of-the-week">
+ <xsl:call-template name="dt:calculate-day-of-the-week">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="dt:get-day-of-the-week-abbreviation">
+ <xsl:with-param name="day-of-the-week" select="$day-of-the-week"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Full weekday name -->
+ <xsl:when test="$code='A'">
+ <xsl:variable name="day-of-the-week">
+ <xsl:call-template name="dt:calculate-day-of-the-week">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="dt:get-day-of-the-week-name">
+ <xsl:with-param name="day-of-the-week" select="$day-of-the-week"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Abbreviated month name -->
+ <xsl:when test="$code='b'">
+ <xsl:call-template name="dt:get-month-abbreviation">
+ <xsl:with-param name="month" select="$month"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Full month name -->
+ <xsl:when test="$code='B'">
+ <xsl:call-template name="dt:get-month-name">
+ <xsl:with-param name="month" select="$month"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Date and time representation appropriate for locale -->
+ <xsl:when test="$code='c'">
+ <xsl:text>[not implemented]</xsl:text>
+ </xsl:when>
+
+ <!-- Day of month as decimal number (01 - 31) -->
+ <xsl:when test="$code='d'">
+ <xsl:if test="$day &lt; 10">0</xsl:if>
+ <xsl:value-of select="number($day)"/>
+ </xsl:when>
+ <!-- Day of month as decimal number (1 - 31) -->
+ <xsl:when test="$code='e'">
+ <xsl:value-of select="number($day)"/>
+ </xsl:when>
+
+ <!-- Hour in 24-hour format (00 - 23) -->
+ <xsl:when test="$code='H'">
+ <xsl:if test="$hour &lt; 10">0</xsl:if>
+ <xsl:value-of select="number($hour)"/>
+ </xsl:when>
+
+ <!-- Hour in 12-hour format (01 - 12) -->
+ <xsl:when test="$code='I'">
+ <xsl:choose>
+ <xsl:when test="$hour = 0">12</xsl:when>
+ <xsl:when test="$hour &lt; 10">0<xsl:value-of select="$hour - 0"/></xsl:when>
+ <xsl:when test="$hour &lt; 13"><xsl:value-of select="$hour - 0"/></xsl:when>
+ <xsl:when test="$hour &lt; 22">0<xsl:value-of select="$hour - 12"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="$hour - 12"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Hour in 12-hour format (1 - 12) -->
+ <xsl:when test="$code='i'">
+ <xsl:choose>
+ <xsl:when test="$hour = 0">12</xsl:when>
+ <xsl:when test="$hour &lt; 10"><xsl:value-of select="$hour - 0"/></xsl:when>
+ <xsl:when test="$hour &lt; 13"><xsl:value-of select="$hour - 0"/></xsl:when>
+ <xsl:when test="$hour &lt; 22"><xsl:value-of select="$hour - 12"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="$hour - 12"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- Day of year as decimal number (001 - 366) -->
+ <xsl:when test="$code='j'">
+ <xsl:text>[not implemented]</xsl:text>
+ </xsl:when>
+
+ <!-- Month as decimal number (01 - 12) -->
+ <xsl:when test="$code='m'">
+ <xsl:if test="$month &lt; 10">0</xsl:if>
+ <xsl:value-of select="number($month)"/>
+ </xsl:when>
+ <!-- Month as decimal number (1 - 12) -->
+ <xsl:when test="$code='n'">
+ <xsl:value-of select="number($month)"/>
+ </xsl:when>
+
+ <!-- Minute as decimal number (00 - 59) -->
+ <xsl:when test="$code='M'">
+ <xsl:if test="$minute &lt; 10">0</xsl:if>
+ <xsl:value-of select="number($minute)"/>
+ </xsl:when>
+
+ <!-- Current locale's A.M./P.M. indicator for 12-hour clock -->
+ <xsl:when test="$code='p'">
+ <xsl:choose>
+ <xsl:when test="$hour &lt; 12">am</xsl:when>
+ <xsl:otherwise>pm</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Current locale's A.M./P.M. indicator for 12-hour clock with periods -->
+ <xsl:when test="$code='q'">
+ <xsl:choose>
+ <xsl:when test="$hour &lt; 12">am</xsl:when>
+ <xsl:otherwise>p.m.</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Current locale's A.M./P.M. indicator for 12-hour clock -->
+ <xsl:when test="$code='P'">
+ <xsl:choose>
+ <xsl:when test="$hour &lt; 12">AM</xsl:when>
+ <xsl:otherwise>PM</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Current locale's A.M./P.M. indicator for 12-hour clock with periods -->
+ <xsl:when test="$code='Q'">
+ <xsl:choose>
+ <xsl:when test="$hour &lt; 12">AM</xsl:when>
+ <xsl:otherwise>P.M.</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- Second as decimal number (00 - 59) -->
+ <xsl:when test="$code='S'">
+ <xsl:if test="$second &lt; 10">0</xsl:if>
+ <xsl:value-of select="number($second)"/>
+ </xsl:when>
+
+ <!-- Week of year as decimal number, with Sunday as first day of week (00 - 53) -->
+ <xsl:when test="$code='U'">
+ <!-- add 1 to day -->
+ <xsl:call-template name="dt:calculate-week-number">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Weekday as decimal number (0 - 6; Sunday is 0) -->
+ <xsl:when test="$code='w'">
+ <xsl:call-template name="dt:calculate-day-of-the-week">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Week of year as decimal number, with Monday as first day of week (00 - 53) -->
+ <xsl:when test="$code='W'">
+ <xsl:call-template name="dt:calculate-week-number">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Date representation for current locale -->
+ <xsl:when test="$code='x'">
+ <xsl:text>[not implemented]</xsl:text>
+ </xsl:when>
+
+ <!-- Time representation for current locale -->
+ <xsl:when test="$code='X'">
+ <xsl:text>[not implemented]</xsl:text>
+ </xsl:when>
+
+ <!-- Year without century, as decimal number (00 - 99) -->
+ <xsl:when test="$code='y'">
+ <xsl:choose>
+ <xsl:when test='not(number($year))'>invalid year value</xsl:when>
+
+ <!-- workaround MSXML bug -->
+ <xsl:when test='number($year) mod 100 = 0'>00</xsl:when>
+
+ <xsl:otherwise>
+ <xsl:number format='01' value='number($year) mod 100'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- Year with century, as decimal number -->
+ <xsl:when test="$code='Y'">
+ <xsl:choose>
+ <xsl:when test='not(number($year))'>invalid year value</xsl:when>
+ <xsl:when test='string-length($year) = 2'>
+ <xsl:call-template name='dt:format-two-digit-year'>
+ <xsl:with-param name='year' select='$year'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='string-length($year) >= 4'>
+ <xsl:value-of select='$year'/>
+ </xsl:when>
+ <xsl:otherwise>invalid year value</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- Time-zone name or abbreviation; no characters if time zone is unknown -->
+ <xsl:when test="$code='z'">
+ <xsl:value-of select="$time-zone"/>
+ </xsl:when>
+
+ <!-- Percent sign -->
+ <xsl:when test="$code='%'">
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+
+ </xsl:choose>
+
+ <xsl:variable name="remainder" select="substring(substring-after($format, '%'), 2)"/>
+
+ <xsl:if test="not($xsd-date-time) and $remainder">
+ <xsl:call-template name="dt:format-date-time">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day"/>
+ <xsl:with-param name="hour" select="$hour"/>
+ <xsl:with-param name="minute" select="$minute"/>
+ <xsl:with-param name="second" select="$second"/>
+ <xsl:with-param name="time-zone" select="$time-zone"/>
+ <xsl:with-param name="format" select="$remainder"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ </xsl:template>
+
+ <doc:template name="dt:calculate-day-of-the-week" xmlns="">
+ <refpurpose>Calculates the day of the week.</refpurpose>
+
+ <refdescription>
+ <para>Given any Gregorian date, this calculates the day of the week.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>year</term>
+ <listitem>
+ <para>Year</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month (1 - 12; January = 1)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>day</term>
+ <listitem>
+ <para>Day of month (1 - 31)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the day of the week (0 - 6; Sunday = 0).</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:calculate-day-of-the-week">
+ <xsl:param name="year"/>
+ <xsl:param name="month"/>
+ <xsl:param name="day"/>
+
+ <xsl:variable name="a" select="floor((14 - $month) div 12)"/>
+ <xsl:variable name="y" select="$year - $a"/>
+ <xsl:variable name="m" select="$month + 12 * $a - 2"/>
+
+ <xsl:value-of select="($day + $y + floor($y div 4) - floor($y div 100) + floor($y div 400) + floor((31 * $m) div 12)) mod 7"/>
+
+ </xsl:template>
+
+ <doc:template name="dt:calculate-last-day-of-month" xmlns="">
+ <refpurpose>Calculates the number of days for a specified month.</refpurpose>
+
+ <refdescription>
+ <para>Given any Gregorian month, this calculates the last day of the month.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>year</term>
+ <listitem>
+ <para>Year</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month (1 - 12; January = 1)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the number of days in given month as a decimal number.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="dt:calculate-last-day-of-month">
+ <xsl:param name="year"/>
+ <xsl:param name="month"/>
+
+ <xsl:choose>
+ <xsl:when test="$month = 2">
+ <xsl:choose>
+ <xsl:when test="($year mod 4) = 0 and (($year mod 400) = 0
+ or ($year mod 100) != 0)">29</xsl:when>
+ <xsl:otherwise>28</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$month &lt; 8">
+ <xsl:choose>
+ <xsl:when test="$month mod 2 = 0">30</xsl:when>
+ <xsl:otherwise>31</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$month mod 2 = 1">30</xsl:when>
+ <xsl:otherwise>31</xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-day-of-the-week-name" xmlns="">
+ <refpurpose>Gets the day of the week's full name.</refpurpose>
+
+ <refdescription>
+ <para>Converts a numeric day of the week value into a string representing the day's full name.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>day-of-the-week</term>
+ <listitem>
+ <para>Day of the week (0 - 6; Sunday = 0)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a string.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:get-day-of-the-week-name">
+ <xsl:param name="day-of-the-week"/>
+
+ <xsl:choose>
+ <xsl:when test="$day-of-the-week = 0">Sunday</xsl:when>
+ <xsl:when test="$day-of-the-week = 1">Monday</xsl:when>
+ <xsl:when test="$day-of-the-week = 2">Tuesday</xsl:when>
+ <xsl:when test="$day-of-the-week = 3">Wednesday</xsl:when>
+ <xsl:when test="$day-of-the-week = 4">Thursday</xsl:when>
+ <xsl:when test="$day-of-the-week = 5">Friday</xsl:when>
+ <xsl:when test="$day-of-the-week = 6">Saturday</xsl:when>
+ <xsl:otherwise>error: <xsl:value-of select="$day-of-the-week"/></xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="dt:get-day-of-the-week-abbreviation" xmlns="">
+ <refpurpose>Gets the day of the week's abbreviation.</refpurpose>
+
+ <refdescription>
+ <para>Converts a numeric day of the week value into a string representing the day's abbreviation.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>day-of-the-week</term>
+ <listitem>
+ <para>Day of the week (0 - 6; Sunday = 0)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a string.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:get-day-of-the-week-abbreviation">
+ <xsl:param name="day-of-the-week"/>
+
+ <xsl:choose>
+ <xsl:when test="$day-of-the-week = 0">Sun</xsl:when>
+ <xsl:when test="$day-of-the-week = 1">Mon</xsl:when>
+ <xsl:when test="$day-of-the-week = 2">Tue</xsl:when>
+ <xsl:when test="$day-of-the-week = 3">Wed</xsl:when>
+ <xsl:when test="$day-of-the-week = 4">Thu</xsl:when>
+ <xsl:when test="$day-of-the-week = 5">Fri</xsl:when>
+ <xsl:when test="$day-of-the-week = 6">Sat</xsl:when>
+ <xsl:otherwise>error: <xsl:value-of select="$day-of-the-week"/></xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="dt:get-month-name" xmlns="">
+ <refpurpose>Gets the month's full name.</refpurpose>
+
+ <refdescription>
+ <para>Converts a numeric month value into a string representing the month's full name.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month (1 - 12; Januaray = 1)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a string.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:get-month-name">
+ <xsl:param name="month"/>
+
+ <xsl:choose>
+ <xsl:when test="$month = 1">January</xsl:when>
+ <xsl:when test="$month = 2">February</xsl:when>
+ <xsl:when test="$month = 3">March</xsl:when>
+ <xsl:when test="$month = 4">April</xsl:when>
+ <xsl:when test="$month = 5">May</xsl:when>
+ <xsl:when test="$month = 6">June</xsl:when>
+ <xsl:when test="$month = 7">July</xsl:when>
+ <xsl:when test="$month = 8">August</xsl:when>
+ <xsl:when test="$month = 9">September</xsl:when>
+ <xsl:when test="$month = 10">October</xsl:when>
+ <xsl:when test="$month = 11">November</xsl:when>
+ <xsl:when test="$month = 12">December</xsl:when>
+ <xsl:otherwise>error: <xsl:value-of select="$month"/></xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="dt:get-month-abbreviation" xmlns="">
+ <refpurpose>Gets the month's abbreviation.</refpurpose>
+
+ <refdescription>
+ <para>Converts a numeric month value into a string representing the month's abbreviation.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month (1 - 12; Januaray = 1)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a string.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:get-month-abbreviation">
+ <xsl:param name="month"/>
+
+ <xsl:choose>
+ <xsl:when test="$month = 1">Jan</xsl:when>
+ <xsl:when test="$month = 2">Feb</xsl:when>
+ <xsl:when test="$month = 3">Mar</xsl:when>
+ <xsl:when test="$month = 4">Apr</xsl:when>
+ <xsl:when test="$month = 5">May</xsl:when>
+ <xsl:when test="$month = 6">Jun</xsl:when>
+ <xsl:when test="$month = 7">Jul</xsl:when>
+ <xsl:when test="$month = 8">Aug</xsl:when>
+ <xsl:when test="$month = 9">Sep</xsl:when>
+ <xsl:when test="$month = 10">Oct</xsl:when>
+ <xsl:when test="$month = 11">Nov</xsl:when>
+ <xsl:when test="$month = 12">Dec</xsl:when>
+ <xsl:otherwise>error: <xsl:value-of select="$month"/></xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="dt:calculate-julian-day" xmlns="">
+ <refpurpose>Calculates the Julian Day for a specified date.</refpurpose>
+
+ <refdescription>
+ <para>Given any Gregorian date, this calculates the Julian Day.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>year</term>
+ <listitem>
+ <para>Year</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month (1 - 12; January = 1)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>day</term>
+ <listitem>
+ <para>Day of month (1 - 31)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the Julian Day as a decimal number.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:calculate-julian-day">
+ <xsl:param name="year"/>
+ <xsl:param name="month"/>
+ <xsl:param name="day"/>
+
+ <xsl:variable name="a" select="floor((14 - $month) div 12)"/>
+ <xsl:variable name="y" select="$year + 4800 - $a"/>
+ <xsl:variable name="m" select="$month + 12 * $a - 3"/>
+
+ <xsl:value-of select="$day + floor((153 * $m + 2) div 5) + $y * 365 + floor($y div 4) - floor($y div 100) + floor($y div 400) - 32045"/>
+
+ </xsl:template>
+
+ <doc:template name="dt:format-julian-day" xmlns="">
+ <refpurpose>Returns a string with a formatted date for a specified Julian Day.</refpurpose>
+
+ <refdescription>
+ <para>Given any Julian Day, this returns a string according to the format specification.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>julian-day</term>
+ <listitem>
+ <para>A Julian Day</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>format</term>
+ <listitem>
+ <para>The format specification. See dt:format-date-time for more details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>A string.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:format-julian-day">
+ <xsl:param name="julian-day"/>
+ <xsl:param name="format" select="'%Y-%m-%d'"/>
+
+ <xsl:variable name="a" select="$julian-day + 32044"/>
+ <xsl:variable name="b" select="floor((4 * $a + 3) div 146097)"/>
+ <xsl:variable name="c" select="$a - floor(($b * 146097) div 4)"/>
+
+ <xsl:variable name="d" select="floor((4 * $c + 3) div 1461)"/>
+ <xsl:variable name="e" select="$c - floor((1461 * $d) div 4)"/>
+ <xsl:variable name="m" select="floor((5 * $e + 2) div 153)"/>
+
+ <xsl:variable name="day" select="$e - floor((153 * $m + 2) div 5) + 1"/>
+ <xsl:variable name="month" select="$m + 3 - 12 * floor($m div 10)"/>
+ <xsl:variable name="year" select="$b * 100 + $d - 4800 + floor($m div 10)"/>
+
+ <xsl:call-template name="dt:format-date-time">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day"/>
+ <xsl:with-param name="format" select="$format"/>
+ </xsl:call-template>
+
+ </xsl:template>
+
+ <doc:template name="dt:calculate-week-number" xmlns="">
+ <refpurpose>Calculates the week number for a specified date.</refpurpose>
+
+ <refdescription>
+ <para>Assumes Monday is the first day of the week.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>year</term>
+ <listitem>
+ <para>Year</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month (1 - 12; January = 1)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>day</term>
+ <listitem>
+ <para>Day of month (1 - 31)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the week number as a decimal number.</para>
+ </refreturn>
+
+ </doc:template>
+
+ <xsl:template name="dt:calculate-week-number">
+ <xsl:param name="year"/>
+ <xsl:param name="month"/>
+ <xsl:param name="day"/>
+
+ <xsl:variable name="J">
+ <xsl:call-template name="dt:calculate-julian-day">
+ <xsl:with-param name="year" select="$year"/>
+ <xsl:with-param name="month" select="$month"/>
+ <xsl:with-param name="day" select="$day"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="d4" select="($J + 31741 - ($J mod 7)) mod 146097 mod 36524 mod 1461"/>
+ <xsl:variable name="L" select="floor($d4 div 1460)"/>
+ <xsl:variable name="d1" select="(($d4 - $L) mod 365) + $L"/>
+
+ <xsl:value-of select="floor($d1 div 7) + 1"/>
+
+ </xsl:template>
+
+ <doc:template name="dt:get-month-number" xmlns="">
+ <refpurpose>Take a month by name and return a number which can be used as input to the templates. </refpurpose>
+
+ <refdescription>
+ <para>Input</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>month</term>
+ <listitem>
+ <para>Month as described either by full name or abbreviation.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Return a month as a decimal number. (Jan = 1)</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-month-number'>
+ <xsl:param name='month'/>
+
+ <xsl:variable name='monToUpper'>
+ <xsl:call-template name='str:to-upper'>
+ <xsl:with-param name='text' select='$month'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='starts-with($monToUpper,"JAN")'>
+ <xsl:value-of select='"1"'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"FEB")'>
+ <xsl:value-of select='2'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"MAR")'>
+ <xsl:value-of select='3'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"APR")'>
+ <xsl:value-of select='4'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"MAY")'>
+ <xsl:value-of select='5'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"JUN")'>
+ <xsl:value-of select='6'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"JUL")'>
+ <xsl:value-of select='7'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"AUG")'>
+ <xsl:value-of select='8'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"SEP")'>
+ <xsl:value-of select='9'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"OCT")'>
+ <xsl:value-of select='10'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"NOV")'>
+ <xsl:value-of select='11'/>
+ </xsl:when>
+ <xsl:when test='starts-with($monToUpper,"DEC")'>
+ <xsl:value-of select='"12"'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-xsd-datetime-year" xmlns="">
+ <refpurpose>Return year component of XSD DateTime value.</refpurpose>
+
+ <refdescription>
+ <para>Extract component of XML Schemas DateTime value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>A value in XSD DateTime format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns year component.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-xsd-datetime-year'>
+ <xsl:param name='xsd-date-time'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "T")'>
+ <xsl:call-template name='dt:get-xsd-datetime-year'>
+ <xsl:with-param name='xsd-date-time' select='substring-before($xsd-date-time, "T")'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Check for time -->
+ <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'/>
+
+ <xsl:otherwise>
+ <!-- This is a date -->
+ <xsl:value-of select='substring-before($xsd-date-time, "-")'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-xsd-datetime-month" xmlns="">
+ <refpurpose>Return month component of XSD DateTime value.</refpurpose>
+
+ <refdescription>
+ <para>Extract component of XML Schemas DateTime value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>A value in XSD DateTime format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns month component.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-xsd-datetime-month'>
+ <xsl:param name='xsd-date-time'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "T")'>
+ <xsl:call-template name='dt:get-xsd-datetime-month'>
+ <xsl:with-param name='xsd-date-time' select='substring-before($xsd-date-time, "T")'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Check for time -->
+ <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'/>
+
+ <xsl:otherwise>
+ <!-- This is a date -->
+ <xsl:value-of select='substring(substring-after($xsd-date-time, "-"), 1, 2)'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-xsd-datetime-day" xmlns="">
+ <refpurpose>Return day component of XSD DateTime value.</refpurpose>
+
+ <refdescription>
+ <para>Extract component of XML Schemas DateTime value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>A value in XSD DateTime format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns day component.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-xsd-datetime-day'>
+ <xsl:param name='xsd-date-time'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "T")'>
+ <xsl:call-template name='dt:get-xsd-datetime-day'>
+ <xsl:with-param name='xsd-date-time' select='substring-before($xsd-date-time, "T")'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Check for time -->
+ <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'/>
+
+ <xsl:otherwise>
+ <!-- This is a date -->
+ <xsl:value-of select='substring(substring-after($xsd-date-time, "-"), 4, 2)'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-xsd-datetime-hour" xmlns="">
+ <refpurpose>Return hour component of XSD DateTime value.</refpurpose>
+
+ <refdescription>
+ <para>Extract component of XML Schemas DateTime value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>A value in XSD DateTime format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns hour component.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-xsd-datetime-hour'>
+ <xsl:param name='xsd-date-time'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "T")'>
+ <xsl:call-template name='dt:get-xsd-datetime-hour'>
+ <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Check for time -->
+ <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
+ <xsl:value-of select='substring($xsd-date-time, 1, 2)'/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- This is a date -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-xsd-datetime-minute" xmlns="">
+ <refpurpose>Return minute component of XSD DateTime value.</refpurpose>
+
+ <refdescription>
+ <para>Extract component of XML Schemas DateTime value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>A value in XSD DateTime format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns minute component.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-xsd-datetime-minute'>
+ <xsl:param name='xsd-date-time'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "T")'>
+ <xsl:call-template name='dt:get-xsd-datetime-minute'>
+ <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Check for time -->
+ <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
+ <xsl:value-of select='substring($xsd-date-time, 4, 2)'/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- This is a date -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-xsd-datetime-second" xmlns="">
+ <refpurpose>Return second component of XSD DateTime value.</refpurpose>
+
+ <refdescription>
+ <para>Extract component of XML Schemas DateTime value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>A value in XSD DateTime format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns second component.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-xsd-datetime-second'>
+ <xsl:param name='xsd-date-time'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "T")'>
+ <xsl:call-template name='dt:get-xsd-datetime-second'>
+ <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Check for time -->
+ <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
+ <xsl:variable name='part' select='substring($xsd-date-time, 7)'/>
+ <xsl:choose>
+ <xsl:when test='contains($part, "Z")'>
+ <xsl:value-of select='substring-before($part, "Z")'/>
+ </xsl:when>
+ <xsl:when test='contains($part, "+")'>
+ <xsl:value-of select='substring-before($part, "+")'/>
+ </xsl:when>
+ <xsl:when test='contains($part, "-")'>
+ <xsl:value-of select='substring-before($part, "-")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$part'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- This is a date -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:get-xsd-datetime-timezone" xmlns="">
+ <refpurpose>Return timezone component of XSD DateTime value.</refpurpose>
+
+ <refdescription>
+ <para>Extract component of XML Schemas DateTime value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>xsd-date-time</term>
+ <listitem>
+ <para>A value in XSD DateTime format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns timezone component.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='dt:get-xsd-datetime-timezone'>
+ <xsl:param name='xsd-date-time'/>
+
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "Z")'>Z</xsl:when>
+ <xsl:when test='contains($xsd-date-time, "T")'>
+ <xsl:call-template name='dt:get-xsd-datetime-timezone'>
+ <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
+ <!-- This is a time -->
+ <xsl:choose>
+ <xsl:when test='contains($xsd-date-time, "+")'>
+ <xsl:text>+</xsl:text>
+ <xsl:value-of select='substring-after($xsd-date-time, "+")'/>
+ </xsl:when>
+ <xsl:when test='contains($xsd-date-time, "-")'>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select='substring-after($xsd-date-time, "-")'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- This is a date -->
+ <xsl:value-of select='substring(substring-after($xsd-date-time, "-"), 6)'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="dt:format-two-digit-year" xmlns="">
+ <refpurpose>Return two digit year as four digit year value.</refpurpose>
+
+ <refdescription>
+ <para>Prepend century to two digit year value.</para>
+ <para>Century value is calculated according to suggested solutions in RFC2626 (section 5).</para>
+ <para>Fixed window solution: 20 is prepended to year if the year is less than 50, otherwise 19 is prepended to year.</para>
+ <para>Sliding window solution: The year is considered in the future if the year is less than the current 2 digit year plus 'n' years (where 'n' is a param), otherwise it is considered in the past.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>year</term>
+ <listitem>
+ <para>A year value in 2 digit format.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>method</term>
+ <listitem>
+ <para>RFC2626 suggested solution ('fixed' or 'sliding'). Default is 'fixed'.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>n</term>
+ <listitem>
+ <para>No. of years. Used in sliding windows solution.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns four digit year value.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="dt:format-two-digit-year">
+ <xsl:param name="year" />
+ <xsl:param name="method" select="'fixed'"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($year) != 2">invalid year value</xsl:when>
+ <xsl:when test="$method = 'fixed'">
+ <xsl:choose>
+ <xsl:when test="$year &lt; 50">20</xsl:when>
+ <xsl:otherwise>19</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$year" />
+ </xsl:when>
+ <xsl:when test="$method = 'window'">not yet implemented</xsl:when>
+ <xsl:otherwise>invalid method</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ </xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl
new file mode 100644
index 0000000..349bab9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ version="1.0"
+ extension-element-prefixes="doc"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:eg="http://xsltsl.org/example"
+>
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: example.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2001</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>Example Stylesheet</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This module provides a template for adding stylesheet modules to the XSLT Standard Library.</para>
+ <para>To add a new module to the library, follow these easy steps:</para>
+ <orderedlist>
+ <listitem>
+ <para>Copy this file and replace its contents with the new module templates and documentation.</para>
+ </listitem>
+ <listitem>
+ <para>Copy the corresponding test file in the <filename>test</filename> directory. Replace its contents with tests for the new module.</para>
+ </listitem>
+ <listitem>
+ <para>Add an include element in the <filename>stdlib.xsl</filename> stylesheet.</para>
+ </listitem>
+ <listitem>
+ <para>Add an entry in the <filename>test/test.xml</filename> file.</para>
+ </listitem>
+ <listitem>
+ <para>Add entries in the <filename>test/test.xsl</filename> stylesheet.</para>
+ </listitem>
+ <listitem>
+ <para>Add an entry in the <filename>doc/build.xml</filename> file.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>The <filename>example.xsl</filename> stylesheet provides a more extensive example.</para>
+
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <doc:template name="eg:example" xmlns="">
+ <refpurpose>Template Example</refpurpose>
+
+ <refdescription>
+ <para>Provides a template for writing templates. Replace this paragraph with a description of your template</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The example string</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns nothing.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="eg:example">
+ <xsl:param name="text"/>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl
new file mode 100644
index 0000000..cff2485
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl
@@ -0,0 +1,789 @@
+<xsl:stylesheet version='1.0'
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns:doc='http://xsltsl.org/xsl/documentation/1.0'
+ xmlns:markup='http://xsltsl.org/markup'
+ xmlns:str='http://xsltsl.org/string'
+ extension-element-prefixes='doc markup str'>
+
+ <doc:reference xmlns=''>
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: markup.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2003</year>
+ <year>2001</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>XML Markup Templates</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This stylesheet module provides functions for generating literal XML markup.</para>
+
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <doc:template name="markup:xml-declaration" xmlns="">
+ <refpurpose>Create an XML Declaration</refpurpose>
+
+ <refdescription>
+ <para>This template returns an XML Declaration. Although the XSLT standard provides control over the generation of the XML Declaration, this template may be useful in circumstances where the values must be computed at runtime.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>version</term>
+ <listitem>
+ <para>Version number.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>standalone</term>
+ <listitem>
+ <para>Standalone indication. Must be value "yes" or "no".</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>encoding</term>
+ <listitem>
+ <para>Character encoding.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an XML Declaration as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:xml-declaration'>
+ <xsl:param name='version' select="'1.0'"/>
+ <xsl:param name='standalone'/>
+ <xsl:param name='encoding'/>
+
+ <xsl:text disable-output-escaping='yes'>&lt;?xml version="</xsl:text>
+ <xsl:copy-of select="$version"/>
+ <xsl:text>"</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="string-length($standalone) = 0"/>
+ <xsl:when test='$standalone = "yes" or $standalone = "no"'>
+ <xsl:text> standalone="</xsl:text>
+ <xsl:copy-of select="$standalone"/>
+ <xsl:text>"</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">invalid value "<xsl:value-of select="$standalone"/>" for standalone attribute</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test='string-length($encoding) &gt; 0'>
+ <xsl:text> encoding="</xsl:text>
+ <xsl:copy-of select='$encoding'/>
+ <xsl:text>"</xsl:text>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>?&gt;
+</xsl:text>
+ </xsl:template>
+
+ <doc:template name="markup:doctype-declaration" xmlns="">
+ <refpurpose>Create a Document Type Declaration</refpurpose>
+
+ <refdescription>
+ <para>This template returns a Document Type Declaration. Although the XSLT standard provides control over the generation of a Document Type Declaration, this template may be useful in circumstances where the values for the identifiers or the internal subset must be computed at runtime.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>docel</term>
+ <listitem>
+ <para>The name of the document element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>publicid</term>
+ <listitem>
+ <para>The public identifier for the external DTD subset.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>systemid</term>
+ <listitem>
+ <para>The system identifier for the external DTD subset.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>internaldtd</term>
+ <listitem>
+ <para>The internal DTD subset.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a Document Type Declaration as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:doctype-declaration'>
+ <xsl:param name='docel'/>
+ <xsl:param name='publicid'/>
+ <xsl:param name='systemid'/>
+ <xsl:param name='internaldtd'/>
+
+ <xsl:if test='string-length($docel) = 0'>
+ <xsl:message terminate='yes'>No document element specified</xsl:message>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE </xsl:text>
+ <xsl:copy-of select="$docel"/>
+
+ <xsl:call-template name='markup:external-identifier'>
+ <xsl:with-param name='publicid' select='$publicid'/>
+ <xsl:with-param name='systemid' select='$systemid'/>
+ <xsl:with-param name='leading-space' select='true()'/>
+ </xsl:call-template>
+
+ <xsl:if test='string-length($internaldtd) &gt; 0'>
+ <xsl:text> [</xsl:text>
+ <xsl:copy-of select='$internaldtd'/>
+ <xsl:text>]</xsl:text>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&gt;
+</xsl:text>
+ </xsl:template>
+
+ <doc:template name="markup:element-declaration" xmlns="">
+ <refpurpose>Create an Element Declaration</refpurpose>
+
+ <refdescription>
+ <para>This template returns an element declaration..</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>type</term>
+ <listitem>
+ <para>The element type.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>content-spec</term>
+ <listitem>
+ <para>The content specification.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an element declaration as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:element-declaration'>
+ <xsl:param name='type'/>
+ <xsl:param name='content-spec' select="'ANY'"/>
+
+ <xsl:if test='string-length($type) = 0'>
+ <xsl:message terminate='yes'>element type must be specified</xsl:message>
+ </xsl:if>
+ <xsl:if test='string-length($content-spec) = 0'>
+ <xsl:message terminate='yes'>content specification must be specified</xsl:message>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&lt;!ELEMENT </xsl:text>
+ <xsl:copy-of select='$type'/>
+ <xsl:text> </xsl:text>
+ <xsl:copy-of select='$content-spec'/>
+ <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
+ </xsl:template>
+
+ <doc:template name="markup:attlist-declaration" xmlns="">
+ <refpurpose>Create an Attribute List Declaration</refpurpose>
+
+ <refdescription>
+ <para>This template returns an attribute list declaration.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>type</term>
+ <listitem>
+ <para>The element type.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>attr-defns</term>
+ <listitem>
+ <para>Attribute definitions.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an attribute list declaration as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:attlist-declaration'>
+ <xsl:param name='type'/>
+ <xsl:param name='attr-defns'/>
+
+ <xsl:if test='string-length($type) = 0'>
+ <xsl:message terminate='yes'>element type must be specified</xsl:message>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&lt;!ATTLIST </xsl:text>
+ <xsl:copy-of select='$type'/>
+ <xsl:text> </xsl:text>
+ <xsl:copy-of select='$attr-defns'/>
+ <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
+ </xsl:template>
+
+ <doc:template name="markup:attribute-definition" xmlns="">
+ <refpurpose>Create an Attribute Definition</refpurpose>
+
+ <refdescription>
+ <para>This template returns an attribute definition.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <para>The attribute name.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>type</term>
+ <listitem>
+ <para>The attribute type.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>default</term>
+ <listitem>
+ <para>The attribute default.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an attribute definition as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:attribute-definition'>
+ <xsl:param name='name'/>
+ <xsl:param name='type'/>
+ <xsl:param name='default'/>
+
+ <xsl:if test='string-length($name) = 0'>
+ <xsl:message terminate='yes'>attribute name must be specified</xsl:message>
+ </xsl:if>
+ <xsl:if test='string-length($type) = 0'>
+ <xsl:message terminate='yes'>attribute type must be specified</xsl:message>
+ </xsl:if>
+ <xsl:if test='string-length($default) = 0'>
+ <xsl:message terminate='yes'>attribute default must be specified</xsl:message>
+ </xsl:if>
+
+ <xsl:text> </xsl:text>
+ <xsl:copy-of select='$name'/>
+ <xsl:text> </xsl:text>
+ <xsl:copy-of select='$type'/>
+ <xsl:text> </xsl:text>
+ <xsl:copy-of select='$default'/>
+ </xsl:template>
+
+ <doc:template name="markup:entity-declaration" xmlns="">
+ <refpurpose>Create an Entity Declaration</refpurpose>
+
+ <refdescription>
+ <para>This template returns an entity declaration.</para>
+ <para>If the 'text' parameter is given a value, then an internal entity is created. If either the 'publicid' or 'systemid' parameters are given a value then an external entity is created. It is an error for the 'text' parameter to have value as well as the 'publicid', 'systemid' or 'notation' parameters.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <para>The entity name.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>parameter</term>
+ <listitem>
+ <para>Boolean value to determine whether a parameter entity is created. Default is 'false()'.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The replacement text. Must be a string.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nodes</term>
+ <listitem>
+ <para>The replacement text as a nodeset. The nodeset is formatted as XML using the as-xml template. If both text and nodes are specified then nodes takes precedence.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>publicid</term>
+ <listitem>
+ <para>The public identifier for an external entity.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>systemid</term>
+ <listitem>
+ <para>The system identifier for an external entity.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>notation</term>
+ <listitem>
+ <para>The notation for an external entity.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an entity declaration as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:entity-declaration'>
+ <xsl:param name='name'/>
+ <xsl:param name='parameter' select='false()'/>
+ <xsl:param name='text'/>
+ <xsl:param name='nodes'/>
+ <xsl:param name='publicid'/>
+ <xsl:param name='systemid'/>
+ <xsl:param name='notation'/>
+
+ <xsl:if test='string-length($name) = 0'>
+ <xsl:message terminate='yes'>entity name must be specified</xsl:message>
+ </xsl:if>
+ <xsl:if test='string-length($text) &gt; 0 and
+ (string-length($publicid) &gt; 0 or
+ string-length($systemid) &gt; 0 or
+ string-length($notation) &gt; 0)'>
+ <xsl:message terminate='yes'>both replacement text and external identifier specified</xsl:message>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&lt;!ENTITY </xsl:text>
+ <xsl:copy-of select='$name'/>
+ <xsl:text> </xsl:text>
+ <xsl:if test="$parameter">
+ <xsl:text>% </xsl:text>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$nodes">
+ <xsl:call-template name='markup:quote-value'>
+ <xsl:with-param name='value'>
+ <xsl:call-template name="markup:as-xml">
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$text'>
+ <xsl:call-template name='markup:quote-value'>
+ <xsl:with-param name='value' select='$text'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='markup:external-identifier'>
+ <xsl:with-param name='publicid' select='$publicid'/>
+ <xsl:with-param name='systemid' select='$systemid'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test='$notation'>
+ <xsl:text> NDATA "</xsl:text>
+ <xsl:copy-of select='$notation'/>
+ <xsl:text>"</xsl:text>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
+ </xsl:template>
+
+ <doc:template name="markup:quote-value" xmlns="">
+ <refpurpose>Quote an Attribute Value</refpurpose>
+
+ <refdescription>
+ <para>This template returns a quoted value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>value</term>
+ <listitem>
+ <para>The value to quote.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a quote value as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:quote-value'>
+ <xsl:param name='value'/>
+
+ <xsl:variable name="quoted">
+ <xsl:call-template name='markup:quote-value-aux'>
+ <xsl:with-param name='value' select='$value'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($value, '&lt;')">
+ <xsl:call-template name='str:subst'>
+ <xsl:with-param name='text' select='$quoted'/>
+ <xsl:with-param name='replace'>&lt;</xsl:with-param>
+ <xsl:with-param name='with'>
+ <xsl:text disable-output-escaping='yes'>&amp;lt;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select='$quoted'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name='markup:quote-value-aux'>
+ <xsl:param name='value'/>
+
+ <!-- Quoting hell! -->
+ <xsl:variable name="quot">&quot;</xsl:variable>
+ <xsl:variable name="apos">&apos;</xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='contains($value, $quot) and contains($value, $apos)'>
+ <xsl:text>"</xsl:text>
+ <xsl:call-template name='str:subst'>
+ <xsl:with-param name='text' select='$value'/>
+ <xsl:with-param name='replace'>"</xsl:with-param>
+ <xsl:with-param name='with'>
+ <xsl:text disable-output-escaping='yes'>&amp;quot;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"</xsl:text>
+ </xsl:when>
+ <xsl:when test='contains($value, $quot)'>
+ <xsl:text>'</xsl:text>
+ <xsl:value-of select='$value'/>
+ <xsl:text>'</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select='$value'/>
+ <xsl:text>"</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="markup:external-identifier" xmlns="">
+ <refpurpose>Create an External Identifier</refpurpose>
+
+ <refdescription>
+ <para>This template returns an external identifier.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>publicid</term>
+ <listitem>
+ <para>The public identifier.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>systemid</term>
+ <listitem>
+ <para>The system identifier.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an external identifier as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:external-identifier'>
+ <xsl:param name='publicid'/>
+ <xsl:param name='systemid'/>
+ <xsl:param name='leading-space' select='false()'/>
+
+ <xsl:choose>
+ <xsl:when test='string-length($publicid) &gt; 0'>
+ <xsl:if test='$leading-space'>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:text disable-output-escaping='yes'>PUBLIC "</xsl:text>
+ <xsl:value-of select='$publicid' disable-output-escaping='yes'/>
+ <xsl:text disable-output-escaping='yes'>"</xsl:text>
+ <xsl:if test='string-length($systemid) &gt; 0'>
+ <xsl:text disable-output-escaping='yes'> "</xsl:text>
+ <xsl:value-of select='$systemid' disable-output-escaping='yes'/>
+ <xsl:text disable-output-escaping='yes'>"</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="string-length($systemid) &gt; 0">
+ <xsl:if test='$leading-space'>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:text disable-output-escaping='yes'>SYSTEM "</xsl:text>
+ <xsl:value-of select='$systemid' disable-output-escaping='yes'/>
+ <xsl:text disable-output-escaping='yes'>"</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="markup:entity-reference" xmlns="">
+ <refpurpose>Create an Entity Reference</refpurpose>
+
+ <refdescription>
+ <para>This template returns an entity reference.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <para>The name of the entity.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an entity reference as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:entity-reference'>
+ <xsl:param name='name'/>
+
+ <xsl:text disable-output-escaping='yes'>&amp;</xsl:text>
+ <xsl:value-of select='$name'/>
+ <xsl:text>;</xsl:text>
+
+ </xsl:template>
+
+ <doc:template name="markup:notation-declaration" xmlns="">
+ <refpurpose>Create a Notation Declaration</refpurpose>
+
+ <refdescription>
+ <para>This template returns a notation declaration.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <para>The notation name.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>publicid</term>
+ <listitem>
+ <para>The public identifier for the notation.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>systemid</term>
+ <listitem>
+ <para>The system identifier for the notation.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a notation declaration as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:notation-declaration'>
+ <xsl:param name='name'/>
+ <xsl:param name='publicid'/>
+ <xsl:param name='systemid'/>
+
+ <xsl:if test='string-length($name) = 0'>
+ <xsl:message terminate='yes'>notation name must be specified</xsl:message>
+ </xsl:if>
+ <xsl:if test='string-length($publicid) = 0 and string-length($systemid) = 0'>
+ <xsl:message terminate='yes'>external identifier must be specified</xsl:message>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&lt;!NOTATION </xsl:text>
+ <xsl:copy-of select='$name'/>
+
+ <xsl:call-template name='markup:external-identifier'>
+ <xsl:with-param name='publicid' select='$publicid'/>
+ <xsl:with-param name='systemid' select='$systemid'/>
+ <xsl:with-param name='leading-space' select='true()'/>
+ </xsl:call-template>
+
+ <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
+ </xsl:template>
+
+ <doc:template name="markup:cdata-section" xmlns="">
+ <refpurpose>Create a CDATA Section</refpurpose>
+
+ <refdescription>
+ <para>This template returns a CDATA Section. The XSLT specification provides a mechanism for instructing the XSL processor to output character data in a CDATA section for certain elements, but this template may be useful in those circumstances where not all instances of an element are to have their content placed in a CDATA section.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The content of the CDATA section.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a CDATA section as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:cdata-section'>
+ <xsl:param name='text'/>
+
+ <xsl:if test="contains($text, ']]&gt;')">
+ <xsl:message terminate="yes">CDATA section contains "]]&gt;"</xsl:message>
+ </xsl:if>
+
+ <xsl:text disable-output-escaping='yes'>&lt;![CDATA[</xsl:text>
+ <xsl:copy-of select='$text'/>
+ <xsl:text disable-output-escaping='yes'>]]&gt;</xsl:text>
+ </xsl:template>
+
+ <doc:template name="markup:as-xml" xmlns="">
+ <refpurpose>Format Nodeset As XML Markup</refpurpose>
+
+ <refdescription>
+ <para>This template returns XML markup. Each node in the given nodeset is converted to its equivalent XML markup.</para>
+
+ <para>BUG: This version may not adequately handle XML Namespaces.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>nodes</term>
+ <listitem>
+ <para>Nodeset to format as XML.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns XML markup.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='markup:as-xml'>
+ <xsl:param name='nodes'/>
+
+ <xsl:if test="$nodes">
+ <xsl:choose>
+ <xsl:when test="$nodes[1]/self::*">
+ <xsl:text disable-output-escaping='yes'>&lt;</xsl:text>
+ <xsl:value-of select="name($nodes[1])"/>
+ <xsl:for-each select="$nodes[1]/@*">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="name()"/>
+ <xsl:text>=</xsl:text>
+ <xsl:call-template name='markup:quote-value'>
+ <xsl:with-param name='value' select='.'/>
+ </xsl:call-template>
+ </xsl:for-each>
+
+ <xsl:choose>
+ <xsl:when test='$nodes[1]/node()'>
+ <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
+ <xsl:call-template name='markup:as-xml'>
+ <xsl:with-param name='nodes' select='$nodes[1]/node()'/>
+ </xsl:call-template>
+ <xsl:text disable-output-escaping='yes'>&lt;/</xsl:text>
+ <xsl:value-of select="name($nodes[1])"/>
+ <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text disable-output-escaping='yes'>/&gt;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$nodes[1]/self::text()">
+ <xsl:value-of select="$nodes[1]"/>
+ </xsl:when>
+ <xsl:when test="$nodes[1]/self::comment()">
+ <xsl:text disable-output-escaping='yes'>&lt;!--</xsl:text>
+ <xsl:value-of select="$nodes[1]"/>
+ <xsl:text disable-output-escaping='yes'>--&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$nodes[1]/self::processing-instruction()">
+ <xsl:text disable-output-escaping='yes'>&lt;?</xsl:text>
+ <xsl:value-of select="name($nodes[1])"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$nodes[1]"/>
+ <xsl:text disable-output-escaping='yes'>?&gt;</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="not($nodes[1]/parent::*)"/> <!-- root node -->
+ <xsl:when test="count($nodes[1] | $nodes[1]/../namespace::*) = count($nodes[1]/../namespace::*)"/> <!-- namespace node -->
+ <xsl:when test="count($nodes[1] | $nodes[1]/../@*) = count($nodes[1]/../@*)"/> <!-- attribute node -->
+ </xsl:choose>
+
+ <xsl:call-template name="markup:as-xml">
+ <xsl:with-param name="nodes" select="$nodes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl
new file mode 100644
index 0000000..e3e14dd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl
@@ -0,0 +1,704 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:math="http://xsltsl.org/math"
+ exclude-result-prefixes="doc math">
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: math.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2004</year>
+ <year>2002</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>Math Module</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This module provides mathematical functions.</para>
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <doc:template name="math:power" xmlns="">
+ <refpurpose>Power</refpurpose>
+
+ <refdescription>
+ <para>Raises a number to a power.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>base</term>
+ <listitem>
+ <para>The base number. Must be a number.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>power</term>
+ <listitem>
+ <para>The power to raise the number to. Must be an integer.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns base multiplied by itself power times. If the base or power are not numbers or if the power is fractional then an empty string is returned.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="math:power">
+ <xsl:param name="base"/>
+ <xsl:param name="power"/>
+
+ <xsl:choose>
+ <xsl:when test='$power = "0" and $base = "0"'>
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test='$power = "0" and number($base)'>
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test='$power = "0" and not(number($base))'/>
+ <xsl:when test='$base = "0" and number($power)'>
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+
+ <xsl:when test='not(number($base)) or not(number($power))'/>
+
+ <xsl:when test='floor(number($power)) != number($power)'/>
+
+ <xsl:when test='number($power) &lt; 0'>
+ <xsl:variable name='x'>
+ <xsl:call-template name='math:power'>
+ <xsl:with-param name='base' select='$base'/>
+ <xsl:with-param name='power' select='-1 * $power'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select='1 div $x'/>
+ </xsl:when>
+
+ <xsl:when test='number($power) = 1'>
+ <xsl:value-of select='$base'/>
+ </xsl:when>
+
+ <xsl:when test='number($power) &gt; 0'>
+ <xsl:variable name='x'>
+ <xsl:call-template name='math:power'>
+ <xsl:with-param name='base' select='$base'/>
+ <xsl:with-param name='power' select='$power - 1'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select='$base * $x'/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="math:abs" xmlns="">
+ <refpurpose>Absolute Value</refpurpose>
+
+ <refdescription>
+ <para>Absolute value of a number.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>number</term>
+ <listitem>
+ <para>The number. Must be a number.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the absolute value of the number.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="math:abs">
+ <xsl:param name="number"/>
+
+ <xsl:choose>
+ <xsl:when test='$number &lt; 0'>
+ <xsl:value-of select='$number * -1'/>
+ </xsl:when>
+ <xsl:when test='$number >= 0'>
+ <xsl:value-of select='$number'/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="math:cvt-hex-decimal" xmlns="">
+ <refpurpose>Conversion</refpurpose>
+
+ <refdescription>
+ <para>Converts a hexidecimal value to a decimal value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>value</term>
+ <listitem>
+ <para>The hexidecimal number. Must be a number in hexidecimal format.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the value as a decimal string. If the value is not a number then a NaN value is returned.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="math:cvt-hex-decimal">
+ <xsl:param name="value"/>
+
+ <xsl:choose>
+ <xsl:when test='$value = ""'/>
+
+ <xsl:when test='string-length($value) = 1'>
+ <xsl:call-template name='math:cvt-hex-decimal-digit'>
+ <xsl:with-param name='digit' select='$value'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name='first-digit'>
+ <xsl:call-template name='math:cvt-hex-decimal-digit'>
+ <xsl:with-param name='digit' select='substring($value, 1, 1)'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='remainder'>
+ <xsl:call-template name='math:cvt-hex-decimal'>
+ <xsl:with-param name='value' select='substring($value, 2)'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select='$first-digit * 16 + $remainder'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name='math:cvt-hex-decimal-digit'>
+ <xsl:param name='digit' select='0'/>
+ <xsl:choose>
+ <xsl:when test='$digit &lt;= 9'>
+ <xsl:value-of select='$digit'/>
+ </xsl:when>
+ <xsl:when test='$digit = "a" or $digit = "A"'>10</xsl:when>
+ <xsl:when test='$digit = "b" or $digit = "B"'>11</xsl:when>
+ <xsl:when test='$digit = "c" or $digit = "C"'>12</xsl:when>
+ <xsl:when test='$digit = "d" or $digit = "D"'>13</xsl:when>
+ <xsl:when test='$digit = "e" or $digit = "E"'>14</xsl:when>
+ <xsl:when test='$digit = "f" or $digit = "F"'>15</xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="math:cvt-decimal-hex" xmlns="">
+ <refpurpose>Conversion</refpurpose>
+
+ <refdescription>
+ <para>Converts a decimal value to a hexidecimal value.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>value</term>
+ <listitem>
+ <para>The decimal number.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the value as a hexidecimal string (lowercase). If the value is not a number then a NaN value is returned.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="math:cvt-decimal-hex">
+ <xsl:param name="value"/>
+
+ <xsl:choose>
+ <xsl:when test='$value = "0"'>0</xsl:when>
+ <xsl:when test='not(number($value))'>NaN</xsl:when>
+
+ <xsl:when test='$value div 16 >= 1'>
+ <xsl:call-template name='math:cvt-decimal-hex'>
+ <xsl:with-param name='value' select='floor($value div 16)'/>
+ </xsl:call-template>
+ <xsl:call-template name='math:cvt-decimal-hex'>
+ <xsl:with-param name='value' select='$value mod 16'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$value = 10'>a</xsl:when>
+ <xsl:when test='$value = 11'>b</xsl:when>
+ <xsl:when test='$value = 12'>c</xsl:when>
+ <xsl:when test='$value = 13'>d</xsl:when>
+ <xsl:when test='$value = 14'>e</xsl:when>
+ <xsl:when test='$value = 15'>f</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='$value'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="math:ordinal" xmlns="">
+ <refpurpose>Ordinal number</refpurpose>
+
+ <refdescription>
+ <para>Gives the ordinal number of a given counting number. For example, 1 becomes "1st".</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>number</term>
+ <listitem>
+ <para>An integer number.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the number with an ordinal suffix.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="math:ordinal">
+ <xsl:param name="number"/>
+
+ <xsl:choose>
+ <xsl:when test='$number &lt; 0'/>
+ <xsl:otherwise>
+ <xsl:value-of select='$number'/>
+ <xsl:choose>
+ <xsl:when test='$number = 11 or $number = 12 or $number = 13'>th</xsl:when>
+ <xsl:when test='$number mod 10 = 1'>st</xsl:when>
+ <xsl:when test='$number mod 10 = 2'>nd</xsl:when>
+ <xsl:when test='$number mod 10 = 3'>rd</xsl:when>
+ <xsl:otherwise>th</xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <doc:template name="math:ordinal-as-word" xmlns="">
+ <refpurpose>Returns an ordinal number</refpurpose>
+
+ <refdescription>
+ <para>This template returns the ordinal number for a given counting number as a word. For example "first" for 1.</para>
+ <para>Only handles numbers less than 10000000 (ten million).</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>number</term>
+ <listitem>
+ <para>The counting number.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>conjunctive</term>
+ <listitem>
+ <para>Whether to add the word "and" to the result, for example "one hundred and first" rather than "one hundred first". Default is "yes".</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the ordinal number as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="math:ordinal-as-word">
+ <xsl:param name="number" select="0"/>
+ <xsl:param name='conjunctive' select='"yes"'/>
+ <xsl:param name='preceding' select='0'/>
+
+ <xsl:choose>
+ <xsl:when test='$preceding = 1 and $number = 0'/>
+ <xsl:when test='$number = 0'>zeroth</xsl:when>
+
+ <xsl:when test="$number &lt; 1 or $number != floor($number)"/>
+
+ <xsl:when test='$number = 1'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>first</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 2'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>second</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 3'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>third</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 4'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>fourth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 5'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>fifth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 6'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>sixth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 7'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>seventh</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 8'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>eighth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 9'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>ninth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 10'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>tenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 11'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>eleventh</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 12'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>twelveth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 13'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>thirteenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 14'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>fourteenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 15'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>fifteenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 16'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>sixteenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 17'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>seventeenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 18'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>eighteenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 19'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>nineteenth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 20'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>twentieth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 30'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>thirtieth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 40'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>fortieth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 50'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>fiftieth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 60'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>sixtieth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 70'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>seventieth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 80'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>eightieth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number = 90'>
+ <xsl:if test='$preceding = 1'> and </xsl:if>
+ <xsl:text>ninetieth</xsl:text>
+ </xsl:when>
+
+ <xsl:when test='$number mod 1000000 = 0'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000000)'/>
+ </xsl:call-template>
+ <xsl:text> millionth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number &lt; 1000000 and $number mod 1000 = 0'>
+ <xsl:if test='$preceding = 1 and $conjunctive'> and </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000)'/>
+ </xsl:call-template>
+ <xsl:text> thousandth</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number &lt; 1000 and $number mod 100 = 0'>
+ <xsl:if test='$preceding = 1 and $conjunctive'> and </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 100)'/>
+ </xsl:call-template>
+ <xsl:text> hundredth</xsl:text>
+ </xsl:when>
+
+ <xsl:when test='$number &gt; 1000000'>
+ <xsl:if test='$preceding = 1'>
+ <xsl:text> </xsl:text>
+ <xsl:if test='$conjunctive'>and </xsl:if>
+ </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000000) * 1000000'/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when
+ test='(floor(floor(($number mod 1000000) + 0.1) div 100000) > 0 and $number mod 100000 > 0) or
+ (floor(floor(($number mod 100000) + 0.1) div 10000) > 0 and $number mod 10000 > 0) or
+ (floor(floor(($number mod 10000) + 0.1) div 1000) > 0 and $number mod 1000 > 0) or
+ (floor(floor(($number mod 1000) + 0.1) div 100) > 0 and $number mod 100 > 0) or
+ (floor(floor(($number mod 100) + 0.1) div 10) > 0 and $number mod 10 > 0 and $number mod 100 > 20)'>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name='math:ordinal-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 1000000) + 0.1)'/>
+ <xsl:with-param name='conjunctive' select='$conjunctive'/>
+ <xsl:with-param name='preceding' select='0'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='math:ordinal-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 1000000) + 0.1)'/>
+ <xsl:with-param name='conjunctive' select='$conjunctive'/>
+ <xsl:with-param name='preceding' select='1'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test='$number &gt; 1000'>
+ <xsl:if test='$preceding = 1'>
+ <xsl:text> </xsl:text>
+ <xsl:if test='$conjunctive'>and </xsl:if>
+ </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000) * 1000'/>
+ <xsl:with-param name='conjunctive' select='$conjunctive'/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test='floor(floor(($number mod 1000) + 0.1) div 100) > 0'>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name='math:ordinal-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 1000) + 0.1)'/>
+ <xsl:with-param name='conjunctive' select='$conjunctive'/>
+ <xsl:with-param name='preceding' select='0'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='math:ordinal-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 1000) + 0.1)'/>
+ <xsl:with-param name='conjunctive' select='$conjunctive'/>
+ <xsl:with-param name='preceding' select='1'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test='$number &gt; 100'>
+ <xsl:if test='$preceding = 1'>
+ <xsl:text> </xsl:text>
+ <xsl:if test='$conjunctive'>and </xsl:if>
+ </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 100) * 100'/>
+ </xsl:call-template>
+ <xsl:call-template name='math:ordinal-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 100) + 0.1)'/>
+ <xsl:with-param name='conjunctive' select='$conjunctive'/>
+ <xsl:with-param name='preceding' select='1'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='$number &gt; 20'>
+ <xsl:if test='$preceding = 1'>
+ <xsl:text> </xsl:text>
+ <xsl:if test='$conjunctive'>and </xsl:if>
+ </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 10) * 10'/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name='math:ordinal-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 10) + 0.1)'/>
+ <xsl:with-param name='conjunctive' select='$conjunctive'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="math:number-as-word" xmlns="">
+ <refpurpose>Returns a number as a word</refpurpose>
+
+ <refdescription>
+ <para>This template returns the word for a given integer number, for example "one" for 1.</para>
+ <para>Only handles numbers less than 10000000 (ten million).</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>number</term>
+ <listitem>
+ <para>The counting number.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>conjunctive</term>
+ <listitem>
+ <para>Adds the word "and" where appropriate, for example.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the number as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="math:number-as-word">
+ <xsl:param name="number" select="0"/>
+ <xsl:param name='conjunctive' select='true()'/>
+
+ <xsl:choose>
+
+ <xsl:when test='$number = 0'>zero</xsl:when>
+
+ <xsl:when test='$number &lt; 0'>
+ <xsl:text>minus </xsl:text>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='-1 * $number'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$number != floor($number)"/>
+
+ <xsl:when test='$number mod 1000000 = 0'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000000)'/>
+ </xsl:call-template>
+ <xsl:text> million</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number &gt;= 1000000'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000000)'/>
+ </xsl:call-template>
+ <xsl:text> million </xsl:text>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 1000000) + 0.1)'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$number mod 1000 = 0'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000)'/>
+ </xsl:call-template>
+ <xsl:text> thousand</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number &gt;= 1000'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 1000)'/>
+ </xsl:call-template>
+ <xsl:text> thousand </xsl:text>
+ <xsl:if test='$conjunctive and floor(floor(($number mod 1000) + 0.1) div 100) = 0'>and </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 1000) + 0.1)'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$number mod 100 = 0'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 100)'/>
+ </xsl:call-template>
+ <xsl:text> hundred</xsl:text>
+ </xsl:when>
+ <xsl:when test='$number &gt;= 100'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 100)'/>
+ </xsl:call-template>
+ <xsl:text> hundred </xsl:text>
+ <xsl:if test='$conjunctive'>and </xsl:if>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 100) + 0.1)'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='$number = 1'>one</xsl:when>
+ <xsl:when test='$number = 2'>two</xsl:when>
+ <xsl:when test='$number = 3'>three</xsl:when>
+ <xsl:when test='$number = 4'>four</xsl:when>
+ <xsl:when test='$number = 5'>five</xsl:when>
+ <xsl:when test='$number = 6'>six</xsl:when>
+ <xsl:when test='$number = 7'>seven</xsl:when>
+ <xsl:when test='$number = 8'>eight</xsl:when>
+ <xsl:when test='$number = 9'>nine</xsl:when>
+ <xsl:when test='$number = 10'>ten</xsl:when>
+ <xsl:when test='$number = 11'>eleven</xsl:when>
+ <xsl:when test='$number = 12'>twelve</xsl:when>
+ <xsl:when test='$number = 13'>thirteen</xsl:when>
+ <xsl:when test='$number = 14'>fourteen</xsl:when>
+ <xsl:when test='$number = 15'>fifteen</xsl:when>
+ <xsl:when test='$number = 16'>sixteen</xsl:when>
+ <xsl:when test='$number = 17'>seventeen</xsl:when>
+ <xsl:when test='$number = 18'>eighteen</xsl:when>
+ <xsl:when test='$number = 19'>nineteen</xsl:when>
+ <xsl:when test='$number = 20'>twenty</xsl:when>
+ <xsl:when test='$number = 30'>thirty</xsl:when>
+ <xsl:when test='$number = 40'>forty</xsl:when>
+ <xsl:when test='$number = 50'>fifty</xsl:when>
+ <xsl:when test='$number = 60'>sixty</xsl:when>
+ <xsl:when test='$number = 70'>seventy</xsl:when>
+ <xsl:when test='$number = 80'>eighty</xsl:when>
+ <xsl:when test='$number = 90'>ninety</xsl:when>
+
+ <xsl:when test='$number &lt; 100'>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor($number div 10) * 10'/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name='math:number-as-word'>
+ <xsl:with-param name='number' select='floor(($number mod 10) + 0.1)'/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl
new file mode 100644
index 0000000..bf4fd7f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl
@@ -0,0 +1,229 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:node="http://xsltsl.org/node"
+ extension-element-prefixes="doc node">
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: node.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2001</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>Node Templates</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This stylesheet module provides functions for reporting on or manipulating nodes and nodesets.</para>
+
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <doc:template name="node:xpath" xmlns="">
+ <refpurpose>Returns an XPath location path</refpurpose>
+
+ <refdescription>
+ <para>This template returns an XPath location path that uniquely identifies the given node within the document.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>node</term>
+ <listitem>
+ <para>The node to create an XPath for. If this parameter is given as a nodeset, then the first node in the nodeset is used.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns an XPath location path as a string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="node:xpath">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+
+ <xsl:when test="$node">
+
+ <xsl:for-each select="$node[1]/ancestor-or-self::*">
+ <xsl:text/>/<xsl:value-of select="name()"/>
+ <xsl:text/>[<xsl:value-of select="count(preceding-sibling::*[name() = name(current())]) + 1"/>]<xsl:text/>
+ </xsl:for-each>
+
+ <xsl:choose>
+
+ <xsl:when test="$node[1]/self::comment()">
+ <xsl:text>/comment()</xsl:text>
+ <xsl:text/>[<xsl:value-of select="count($node[1]/preceding-sibling::comment()) + 1" />]<xsl:text/>
+ </xsl:when>
+
+ <xsl:when test="$node[1]/self::processing-instruction()">
+ <xsl:text>/processing-instruction()</xsl:text>
+ <xsl:text/>[<xsl:value-of select="count($node[1]/preceding-sibling::processing-instruction()) + 1" />]<xsl:text/>
+ </xsl:when>
+
+ <xsl:when test="$node[1]/self::text()">
+ <xsl:text>/text()</xsl:text>
+ <xsl:text/>[<xsl:value-of select="count($node[1]/preceding-sibling::text()) + 1" />]<xsl:text/>
+ </xsl:when>
+
+ <xsl:when test="not($node[1]/..)">
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="count($node[1]/../namespace::* | $node[1]) = count($node[1]/../namespace::*)">
+ <xsl:text/>/namespace::<xsl:value-of select="name($node[1])" />
+ </xsl:when>
+
+ <xsl:when test="count($node[1]/../@* | $node[1]) = count($node[1]/../@*)">
+ <xsl:text/>/@<xsl:value-of select="name($node[1])" />
+ </xsl:when>
+
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>/..</xsl:text>
+ </xsl:otherwise>
+
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="node:type" xmlns="">
+ <refpurpose>Return node type</refpurpose>
+
+ <refdescription>
+ <para>Returns the type of a node as a string.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>node</term>
+ <listitem>
+ <para>The node to get the type for. If this parameter is given as a nodeset, then the first node in the nodeset is used.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns node type as a string. Values returned are:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Element</term>
+ <listitem>
+ <para><literal>element</literal></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Text Node</term>
+ <listitem>
+ <para><literal>text</literal></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Comment</term>
+ <listitem>
+ <para><literal>comment</literal></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Processing Instruction</term>
+ <listitem>
+ <para><literal>processing instruction</literal></para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="node:type">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="not($node)"/>
+ <xsl:when test="$node[1]/self::*">
+ <xsl:text>element</xsl:text>
+ </xsl:when>
+ <xsl:when test="$node[1]/self::text()">
+ <xsl:text>text</xsl:text>
+ </xsl:when>
+ <xsl:when test="$node[1]/self::comment()">
+ <xsl:text>comment</xsl:text>
+ </xsl:when>
+ <xsl:when test="$node[1]/self::processing-instruction()">
+ <xsl:text>processing instruction</xsl:text>
+ </xsl:when>
+ <xsl:when test="not($node[1]/parent::*)">
+ <xsl:text>root</xsl:text>
+ </xsl:when>
+ <xsl:when test="count($node[1] | $node[1]/../namespace::*) = count($node[1]/../namespace::*)">
+ <xsl:text>namespace</xsl:text>
+ </xsl:when>
+ <xsl:when test="count($node[1] | $node[1]/../@*) = count($node[1]/../@*)">
+ <xsl:text>attribute</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="node:copy" xmlns="">
+ <refpurpose>Copy Nodes</refpurpose>
+
+ <refdescription>
+ <para>Makes a copy of the given nodes, including attributes and descendants.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>nodes</term>
+ <listitem>
+ <para>The nodes to copy.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the copied nodes as a result tree fragment.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='node:copy'>
+ <xsl:param name='nodes' select='.'/>
+
+ <xsl:for-each select='$nodes'>
+ <xsl:copy>
+ <xsl:for-each select='@*'>
+ <xsl:copy/>
+ </xsl:for-each>
+
+ <xsl:for-each select='node()'>
+ <xsl:call-template name='node:copy'/>
+ </xsl:for-each>
+ </xsl:copy>
+ </xsl:for-each>
+ </xsl:template>
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl
new file mode 100644
index 0000000..c014f13
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl
@@ -0,0 +1,340 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY version "1.2.1">
+]>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version="1.0">
+
+ <xsl:import href="string.xsl"/>
+ <xsl:import href="date-time.xsl"/>
+ <xsl:import href="node.xsl"/>
+ <xsl:import href="uri.xsl"/>
+ <xsl:import href="markup.xsl"/>
+ <xsl:import href="math.xsl"/>
+ <xsl:import href="cmp.xsl"/>
+
+ <xsl:import href="svg.xsl"/>
+<!--
+ <xsl:import href="html/html.xsl"/>
+ <xsl:import href="fo/fo.xsl"/>
+-->
+
+ <!-- For a new module, add an import element here -->
+ <xsl:import href="example.xsl"/>
+
+ <doc:book xmlns="">
+ <bookinfo>
+ <title>XSLT Standard Library</title>
+ <subtitle>Version &version;</subtitle>
+ <!-- $Id: stdlib.xsl 3991 2004-11-10 06:51:55Z balls $ -->
+
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2004</year>
+ <year>2002</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </bookinfo>
+
+ <preface>
+ <para>The <ulink url="http://www.w3.org/Style/XSL">XSLT</ulink> Standard Library, <acronym>xsltsl</acronym>, provides the XSLT developer with a set of XSLT templates for commonly used functions. These are implemented purely in XSLT, that is they do not use any extensions.</para>
+ <para><acronym>xsltsl</acronym> is a <ulink url="http://sourceforge.net/projects/xsltsl/">SourceForge project</ulink>.</para>
+ <para><ulink url="http://sourceforge.net/"><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="sflogo.gif" width="88" height="31"/>
+ </imageobject>
+ <textobject>
+ <phrase>SourceForge Logo</phrase>
+ </textobject>
+ </inlinemediaobject></ulink></para>
+ <para>Goals of the <acronym>xsltsl</acronym> project include:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Provision of a high-quality library of XSLT templates, suitable for inclusion by vendors in XSLT processor software products.</para>
+ </listitem>
+ <listitem>
+ <para>Demonstration of best practice in XSLT stylesheet development and documentation.</para>
+ </listitem>
+ <listitem>
+ <para>Provide examples of various techniques used to develop XSLT stylesheets (ie. a working FAQ).</para>
+ </listitem>
+ </itemizedlist>
+ </preface>
+
+ <chapter>
+ <title>Using The Library</title>
+
+ <para>There are two ways of using the library:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Use a local copy of the library.</para>
+ <orderedlist>
+ <listitem>
+ <para>Download the distribution (see below).</para>
+ </listitem>
+ <listitem>
+ <para>Unpack the distribution, using either gunzip/tar or unzip.</para>
+ </listitem>
+ <listitem>
+ <para>In your stylesheet import or include either the main stylesheet, <filename>stdlib.xsl</filename>, or the stylesheet module you wish to use, such as <filename>string.xsl</filename>. This example assumes that the distribution has been extracted into the same directory as your own stylesheet:</para>
+ <informalexample>
+ <programlisting><![CDATA[
+<xsl:import href="stdlib.xsl"/>
+]]></programlisting>
+ </informalexample>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ <listitem>
+ <para>Import or include either the main stylesheet, or the stylesheet module you wish to use, directly from the library website; http://xsltsl.sourceforge.net/modules/. The <filename>modules</filename> directory always contains the latest stable release. For example:</para>
+ <informalexample>
+ <programlisting><![CDATA[
+<xsl:import href="http://xsltsl.sourceforge.net/modules/stdlib.xsl"/>
+]]></programlisting>
+ </informalexample>
+ <para>Older versions of the library are available in subdirectories. For example, to access version 1.1 of the library use:</para>
+ <informalexample>
+ <programlisting><![CDATA[
+<xsl:import href="http://xsltsl.sourceforge.net/modules/1.1/stdlib.xsl"/>
+]]></programlisting>
+ </informalexample>
+ </listitem>
+ </itemizedlist>
+ <para>Next, add XML Namespace declarations for the modules you wish to use. For example, to use templates from the string module, your stylesheet should have the following declaration:</para>
+ <informalexample>
+ <programlisting><![CDATA[
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:str="http://xsltsl.org/string">
+
+<xsl:import href="http://xsltsl.sourceforge.net/modules/stdlib.xsl"/>
+]]></programlisting>
+ </informalexample>
+ <para>Finally, use a template with the <sgmltag>call-template</sgmltag> element. Most templates require parameters, which are passed using the <sgmltag>with-param</sgmltag> element. For example:</para>
+ <informalexample>
+ <programlisting><![CDATA[
+<xsl:template match="foo">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="."/>
+ <xsl:with-param name="replace">a word</xsl:with-param>
+ <xsl:with-param name="with">another word</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+]]></programlisting>
+ </informalexample>
+ </chapter>
+
+ <chapter>
+ <title>Obtaining The Library</title>
+
+ <para>The XSLT Standard Library is available for download as either:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Gzip'd tarball: <ulink url="http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.tar.gz">http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.tar.gz</ulink></para>
+ </listitem>
+ <listitem>
+ <para>Zip file: <ulink url="http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.zip">http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.zip</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </chapter>
+
+ <chapter>
+ <title>Getting Involved</title>
+
+ <para>Contributions to the project are most welcome, and may be in the form of stylesheet modules, patches, bug reports or sample code. Any contributed code must use the LGPL license to be accepted into the library.</para>
+
+ <para>See the SourceForge Project Page <ulink url="http://sourceforge.net/projects/xsltsl/">http://sourceforge.net/projects/xsltsl/</ulink> for information on the development of the project. Bug reports may be submitted here.</para>
+
+ <para>See the project Web Page <ulink url="http://xsltsl.sourceforge.net/">http://xsltsl.sourceforge.net/</ulink> for documentation.</para>
+
+ <para>There are three mailing lists for the project:</para>
+ <variablelist>
+ <varlistentry>
+ <term><email>xsltsl-users@lists.sourceforge.net</email></term>
+ <listitem>
+ <para>Discussion of the use of <acronym>xsltsl</acronym>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><email>xsltsl-devel@lists.sourceforge.net</email></term>
+ <listitem>
+ <para>Discussion of the development of <acronym>xsltsl</acronym>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><email>xsltsl-announce@lists.sourceforge.net</email></term>
+ <listitem>
+ <para>Project announcements.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </chapter>
+
+ <chapter>
+ <title>XML Namespaces</title>
+
+ <para>Apart from the XSLT XML Namespace (http://www.w3.org/1999/XSL/Transform), <acronym>xsltsl</acronym> employs a number of XML Namespaces to allow inclusion of the library in developer stylesheets. In addition, documentation is defined in a separate namespace.</para>
+ <para>Each module is allocated a namespace URI by appending the module name to the URI for the project, http://xsltsl.org/. For example, the string module has the namespace URI http://xsltsl.org/string.</para>
+ <para>All documentation is written using an <ulink url="docbook-extensions.html">extension</ulink> of <ulink url="http://www.docbook.org/">DocBook</ulink> designed for <ulink url="docbook-extensions.html">embedding DocBook into XSLT stylesheets</ulink>. The namespace URI for DocBook embedded in stylesheets is http://xsltsl.org/xsl/documentation/1.0</para>
+ </chapter>
+
+ <chapter>
+ <title>Engineering Standards</title>
+
+ <para>In order to maintain a high engineering standard, all modules and contributions to the <acronym>xsltsl</acronym> project must adhere to the following coding and documentation standards. Submissions which do not meet (or exceed) this standard will not be accepted.</para>
+ <itemizedlist>
+ <listitem>
+ <para>All stylesheets must be indented, with each level indented by two spaces. NB. a simple stylesheet could be used to enforce/fix this.</para>
+ </listitem>
+ <listitem>
+ <para>Templates are named using a qualified name (QName). The namespace URI for the template's containing stylesheet is assigned as above.</para>
+ </listitem>
+ <listitem>
+ <para>Parameters for templates should use sensible names. Where possible (or if in doubt), follow these conventions:</para>
+ <itemizedlist>
+ <listitem>
+ <para>A parameter containing a single node is named <parametername>node</parametername>. Where more than one parameter contains a single node, the suffix <parametername>Node</parametername> is appended to the parameter name, eg. <parametername>referenceNode</parametername></para>
+ </listitem>
+ <listitem>
+ <para>A parameter which potentially contains multiple nodes is named <parametername>nodes</parametername>. Where more than one parameter potentially contains multiple nodes, the suffix <parametername>Nodes</parametername> is appended to the parameter name, eg. <parametername>copyNodes</parametername></para>
+ </listitem>
+ <listitem>
+ <para>A parameter which contains a string value is named <parametername>text</parametername>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>All templates in each stylesheet must be documented. A template is documented as a <ulink url="http://www.docbook.org/">DocBook</ulink> RefEntry.</para>
+ </listitem>
+ <listitem>
+ <para>Every stylesheet must include a test suite. The test system is in the <filename>test</filename> subdirectory. See <ulink url="test/test.html">test/test.html</ulink> for further details.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>An <ulink url="example.xsl">example stylesheet</ulink> has been provided, which acts as a template for new stylesheet modules.</para>
+
+ </chapter>
+
+ <chapter>
+ <title>Related Work</title>
+
+ <para>The <ulink url="http://www.exslt.org/">EXSLT</ulink> project is creating a library to standardise extension functions. The XSLT Standard Library is complementary to the EXSLT project.</para>
+
+ </chapter>
+
+ <chapter>
+ <title>Reference Documentation</title>
+
+ <para>Reference documentation is available for each module.</para>
+
+ <section>
+ <title>String Processing</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="string.html">string.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Nodes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="node.html">node.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Date/Time Processing</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="date-time.html">date-time.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Mathematics</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="math.html">math.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>URI (Uniform Resource Identifier) Processing</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="uri.html">uri.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Comparing Nodesets</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="cmp.html">cmp.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Generating XML Markup</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="markup.html">markup.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Presentation Media Support</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Scalable Vector Graphics: <ulink url="svg.html">svg.xsl</ulink></para>
+ </listitem>
+<!--
+ <listitem>
+ <para><ulink url="html/html.html">html/html.xsl</ulink></para>
+ </listitem>
+ <listitem>
+ <para><ulink url="fo/fo.html">fo/fo.xsl</ulink></para>
+ </listitem>
+-->
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Example</title>
+
+ <!-- Add a new module in a similar fashion -->
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink url="example.html">example.xsl</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </chapter>
+
+ </doc:book>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl
new file mode 100644
index 0000000..e7eef8b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl
@@ -0,0 +1,1233 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:str="http://xsltsl.org/string"
+ extension-element-prefixes="doc str">
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: string.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2002</year>
+ <year>2001</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>String Processing</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This module provides templates for manipulating strings.</para>
+
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <!-- Common string constants and datasets as XSL variables -->
+
+ <!-- str:lower and str:upper contain pairs of lower and upper case
+ characters. Below insanely long strings should contain the
+ official lower/uppercase pairs, making this stylesheet working
+ for every language on earth. Hopefully. -->
+ <!-- These values are not enough, however. There are some
+ exceptions, dealt with below. -->
+ <xsl:variable name="xsltsl-str-lower" select="'&#x0061;&#x0062;&#x0063;&#x0064;&#x0065;&#x0066;&#x0067;&#x0068;&#x0069;&#x006A;&#x006B;&#x006C;&#x006D;&#x006E;&#x006F;&#x0070;&#x0071;&#x0072;&#x0073;&#x0074;&#x0075;&#x0076;&#x0077;&#x0078;&#x0079;&#x007A;&#x00B5;&#x00E0;&#x00E1;&#x00E2;&#x00E3;&#x00E4;&#x00E5;&#x00E6;&#x00E7;&#x00E8;&#x00E9;&#x00EA;&#x00EB;&#x00EC;&#x00ED;&#x00EE;&#x00EF;&#x00F0;&#x00F1;&#x00F2;&#x00F3;&#x00F4;&#x00F5;&#x00F6;&#x00F8;&#x00F9;&#x00FA;&#x00FB;&#x00FC;&#x00FD;&#x00FE;&#x00FF;&#x0101;&#x0103;&#x0105;&#x0107;&#x0109;&#x010B;&#x010D;&#x010F;&#x0111;&#x0113;&#x0115;&#x0117;&#x0119;&#x011B;&#x011D;&#x011F;&#x0121;&#x0123;&#x0125;&#x0127;&#x0129;&#x012B;&#x012D;&#x012F;&#x0131;&#x0133;&#x0135;&#x0137;&#x013A;&#x013C;&#x013E;&#x0140;&#x0142;&#x0144;&#x0146;&#x0148;&#x014B;&#x014D;&#x014F;&#x0151;&#x0153;&#x0155;&#x0157;&#x0159;&#x015B;&#x015D;&#x015F;&#x0161;&#x0163;&#x0165;&#x0167;&#x0169;&#x016B;&#x016D;&#x016F;&#x0171;&#x0173;&#x0175;&#x0177;&#x017A;&#x017C;&#x017E;&#x017F;&#x0183;&#x0185;&#x0188;&#x018C;&#x0192;&#x0195;&#x0199;&#x01A1;&#x01A3;&#x01A5;&#x01A8;&#x01AD;&#x01B0;&#x01B4;&#x01B6;&#x01B9;&#x01BD;&#x01BF;&#x01C5;&#x01C6;&#x01C8;&#x01C9;&#x01CB;&#x01CC;&#x01CE;&#x01D0;&#x01D2;&#x01D4;&#x01D6;&#x01D8;&#x01DA;&#x01DC;&#x01DD;&#x01DF;&#x01E1;&#x01E3;&#x01E5;&#x01E7;&#x01E9;&#x01EB;&#x01ED;&#x01EF;&#x01F2;&#x01F3;&#x01F5;&#x01F9;&#x01FB;&#x01FD;&#x01FF;&#x0201;&#x0203;&#x0205;&#x0207;&#x0209;&#x020B;&#x020D;&#x020F;&#x0211;&#x0213;&#x0215;&#x0217;&#x0219;&#x021B;&#x021D;&#x021F;&#x0223;&#x0225;&#x0227;&#x0229;&#x022B;&#x022D;&#x022F;&#x0231;&#x0233;&#x0253;&#x0254;&#x0256;&#x0257;&#x0259;&#x025B;&#x0260;&#x0263;&#x0268;&#x0269;&#x026F;&#x0272;&#x0275;&#x0280;&#x0283;&#x0288;&#x028A;&#x028B;&#x0292;&#x0345;&#x03AC;&#x03AD;&#x03AE;&#x03AF;&#x03B1;&#x03B2;&#x03B3;&#x03B4;&#x03B5;&#x03B6;&#x03B7;&#x03B8;&#x03B9;&#x03BA;&#x03BB;&#x03BC;&#x03BD;&#x03BE;&#x03BF;&#x03C0;&#x03C1;&#x03C2;&#x03C3;&#x03C4;&#x03C5;&#x03C6;&#x03C7;&#x03C8;&#x03C9;&#x03CA;&#x03CB;&#x03CC;&#x03CD;&#x03CE;&#x03D0;&#x03D1;&#x03D5;&#x03D6;&#x03DB;&#x03DD;&#x03DF;&#x03E1;&#x03E3;&#x03E5;&#x03E7;&#x03E9;&#x03EB;&#x03ED;&#x03EF;&#x03F0;&#x03F1;&#x03F2;&#x03F5;&#x0430;&#x0431;&#x0432;&#x0433;&#x0434;&#x0435;&#x0436;&#x0437;&#x0438;&#x0439;&#x043A;&#x043B;&#x043C;&#x043D;&#x043E;&#x043F;&#x0440;&#x0441;&#x0442;&#x0443;&#x0444;&#x0445;&#x0446;&#x0447;&#x0448;&#x0449;&#x044A;&#x044B;&#x044C;&#x044D;&#x044E;&#x044F;&#x0450;&#x0451;&#x0452;&#x0453;&#x0454;&#x0455;&#x0456;&#x0457;&#x0458;&#x0459;&#x045A;&#x045B;&#x045C;&#x045D;&#x045E;&#x045F;&#x0461;&#x0463;&#x0465;&#x0467;&#x0469;&#x046B;&#x046D;&#x046F;&#x0471;&#x0473;&#x0475;&#x0477;&#x0479;&#x047B;&#x047D;&#x047F;&#x0481;&#x048D;&#x048F;&#x0491;&#x0493;&#x0495;&#x0497;&#x0499;&#x049B;&#x049D;&#x049F;&#x04A1;&#x04A3;&#x04A5;&#x04A7;&#x04A9;&#x04AB;&#x04AD;&#x04AF;&#x04B1;&#x04B3;&#x04B5;&#x04B7;&#x04B9;&#x04BB;&#x04BD;&#x04BF;&#x04C2;&#x04C4;&#x04C8;&#x04CC;&#x04D1;&#x04D3;&#x04D5;&#x04D7;&#x04D9;&#x04DB;&#x04DD;&#x04DF;&#x04E1;&#x04E3;&#x04E5;&#x04E7;&#x04E9;&#x04EB;&#x04ED;&#x04EF;&#x04F1;&#x04F3;&#x04F5;&#x04F9;&#x0561;&#x0562;&#x0563;&#x0564;&#x0565;&#x0566;&#x0567;&#x0568;&#x0569;&#x056A;&#x056B;&#x056C;&#x056D;&#x056E;&#x056F;&#x0570;&#x0571;&#x0572;&#x0573;&#x0574;&#x0575;&#x0576;&#x0577;&#x0578;&#x0579;&#x057A;&#x057B;&#x057C;&#x057D;&#x057E;&#x057F;&#x0580;&#x0581;&#x0582;&#x0583;&#x0584;&#x0585;&#x0586;&#x1E01;&#x1E03;&#x1E05;&#x1E07;&#x1E09;&#x1E0B;&#x1E0D;&#x1E0F;&#x1E11;&#x1E13;&#x1E15;&#x1E17;&#x1E19;&#x1E1B;&#x1E1D;&#x1E1F;&#x1E21;&#x1E23;&#x1E25;&#x1E27;&#x1E29;&#x1E2B;&#x1E2D;&#x1E2F;&#x1E31;&#x1E33;&#x1E35;&#x1E37;&#x1E39;&#x1E3B;&#x1E3D;&#x1E3F;&#x1E41;&#x1E43;&#x1E45;&#x1E47;&#x1E49;&#x1E4B;&#x1E4D;&#x1E4F;&#x1E51;&#x1E53;&#x1E55;&#x1E57;&#x1E59;&#x1E5B;&#x1E5D;&#x1E5F;&#x1E61;&#x1E63;&#x1E65;&#x1E67;&#x1E69;&#x1E6B;&#x1E6D;&#x1E6F;&#x1E71;&#x1E73;&#x1E75;&#x1E77;&#x1E79;&#x1E7B;&#x1E7D;&#x1E7F;&#x1E81;&#x1E83;&#x1E85;&#x1E87;&#x1E89;&#x1E8B;&#x1E8D;&#x1E8F;&#x1E91;&#x1E93;&#x1E95;&#x1E9B;&#x1EA1;&#x1EA3;&#x1EA5;&#x1EA7;&#x1EA9;&#x1EAB;&#x1EAD;&#x1EAF;&#x1EB1;&#x1EB3;&#x1EB5;&#x1EB7;&#x1EB9;&#x1EBB;&#x1EBD;&#x1EBF;&#x1EC1;&#x1EC3;&#x1EC5;&#x1EC7;&#x1EC9;&#x1ECB;&#x1ECD;&#x1ECF;&#x1ED1;&#x1ED3;&#x1ED5;&#x1ED7;&#x1ED9;&#x1EDB;&#x1EDD;&#x1EDF;&#x1EE1;&#x1EE3;&#x1EE5;&#x1EE7;&#x1EE9;&#x1EEB;&#x1EED;&#x1EEF;&#x1EF1;&#x1EF3;&#x1EF5;&#x1EF7;&#x1EF9;&#x1F00;&#x1F01;&#x1F02;&#x1F03;&#x1F04;&#x1F05;&#x1F06;&#x1F07;&#x1F10;&#x1F11;&#x1F12;&#x1F13;&#x1F14;&#x1F15;&#x1F20;&#x1F21;&#x1F22;&#x1F23;&#x1F24;&#x1F25;&#x1F26;&#x1F27;&#x1F30;&#x1F31;&#x1F32;&#x1F33;&#x1F34;&#x1F35;&#x1F36;&#x1F37;&#x1F40;&#x1F41;&#x1F42;&#x1F43;&#x1F44;&#x1F45;&#x1F51;&#x1F53;&#x1F55;&#x1F57;&#x1F60;&#x1F61;&#x1F62;&#x1F63;&#x1F64;&#x1F65;&#x1F66;&#x1F67;&#x1F70;&#x1F71;&#x1F72;&#x1F73;&#x1F74;&#x1F75;&#x1F76;&#x1F77;&#x1F78;&#x1F79;&#x1F7A;&#x1F7B;&#x1F7C;&#x1F7D;&#x1F80;&#x1F81;&#x1F82;&#x1F83;&#x1F84;&#x1F85;&#x1F86;&#x1F87;&#x1F90;&#x1F91;&#x1F92;&#x1F93;&#x1F94;&#x1F95;&#x1F96;&#x1F97;&#x1FA0;&#x1FA1;&#x1FA2;&#x1FA3;&#x1FA4;&#x1FA5;&#x1FA6;&#x1FA7;&#x1FB0;&#x1FB1;&#x1FB3;&#x1FBE;&#x1FC3;&#x1FD0;&#x1FD1;&#x1FE0;&#x1FE1;&#x1FE5;&#x1FF3;&#x2170;&#x2171;&#x2172;&#x2173;&#x2174;&#x2175;&#x2176;&#x2177;&#x2178;&#x2179;&#x217A;&#x217B;&#x217C;&#x217D;&#x217E;&#x217F;&#x24D0;&#x24D1;&#x24D2;&#x24D3;&#x24D4;&#x24D5;&#x24D6;&#x24D7;&#x24D8;&#x24D9;&#x24DA;&#x24DB;&#x24DC;&#x24DD;&#x24DE;&#x24DF;&#x24E0;&#x24E1;&#x24E2;&#x24E3;&#x24E4;&#x24E5;&#x24E6;&#x24E7;&#x24E8;&#x24E9;&#xFF41;&#xFF42;&#xFF43;&#xFF44;&#xFF45;&#xFF46;&#xFF47;&#xFF48;&#xFF49;&#xFF4A;&#xFF4B;&#xFF4C;&#xFF4D;&#xFF4E;&#xFF4F;&#xFF50;&#xFF51;&#xFF52;&#xFF53;&#xFF54;&#xFF55;&#xFF56;&#xFF57;&#xFF58;&#xFF59;&#xFF5A;&#x10428;&#x10429;&#x1042A;&#x1042B;&#x1042C;&#x1042D;&#x1042E;&#x1042F;&#x10430;&#x10431;&#x10432;&#x10433;&#x10434;&#x10435;&#x10436;&#x10437;&#x10438;&#x10439;&#x1043A;&#x1043B;&#x1043C;&#x1043D;&#x1043E;&#x1043F;&#x10440;&#x10441;&#x10442;&#x10443;&#x10444;&#x10445;&#x10446;&#x10447;&#x10448;&#x10449;&#x1044A;&#x1044B;&#x1044C;&#x1044D;'"/>
+ <xsl:variable name="xsltsl-str-upper" select="'&#x0041;&#x0042;&#x0043;&#x0044;&#x0045;&#x0046;&#x0047;&#x0048;&#x0049;&#x004A;&#x004B;&#x004C;&#x004D;&#x004E;&#x004F;&#x0050;&#x0051;&#x0052;&#x0053;&#x0054;&#x0055;&#x0056;&#x0057;&#x0058;&#x0059;&#x005A;&#x039C;&#x00C0;&#x00C1;&#x00C2;&#x00C3;&#x00C4;&#x00C5;&#x00C6;&#x00C7;&#x00C8;&#x00C9;&#x00CA;&#x00CB;&#x00CC;&#x00CD;&#x00CE;&#x00CF;&#x00D0;&#x00D1;&#x00D2;&#x00D3;&#x00D4;&#x00D5;&#x00D6;&#x00D8;&#x00D9;&#x00DA;&#x00DB;&#x00DC;&#x00DD;&#x00DE;&#x0178;&#x0100;&#x0102;&#x0104;&#x0106;&#x0108;&#x010A;&#x010C;&#x010E;&#x0110;&#x0112;&#x0114;&#x0116;&#x0118;&#x011A;&#x011C;&#x011E;&#x0120;&#x0122;&#x0124;&#x0126;&#x0128;&#x012A;&#x012C;&#x012E;&#x0049;&#x0132;&#x0134;&#x0136;&#x0139;&#x013B;&#x013D;&#x013F;&#x0141;&#x0143;&#x0145;&#x0147;&#x014A;&#x014C;&#x014E;&#x0150;&#x0152;&#x0154;&#x0156;&#x0158;&#x015A;&#x015C;&#x015E;&#x0160;&#x0162;&#x0164;&#x0166;&#x0168;&#x016A;&#x016C;&#x016E;&#x0170;&#x0172;&#x0174;&#x0176;&#x0179;&#x017B;&#x017D;&#x0053;&#x0182;&#x0184;&#x0187;&#x018B;&#x0191;&#x01F6;&#x0198;&#x01A0;&#x01A2;&#x01A4;&#x01A7;&#x01AC;&#x01AF;&#x01B3;&#x01B5;&#x01B8;&#x01BC;&#x01F7;&#x01C4;&#x01C4;&#x01C7;&#x01C7;&#x01CA;&#x01CA;&#x01CD;&#x01CF;&#x01D1;&#x01D3;&#x01D5;&#x01D7;&#x01D9;&#x01DB;&#x018E;&#x01DE;&#x01E0;&#x01E2;&#x01E4;&#x01E6;&#x01E8;&#x01EA;&#x01EC;&#x01EE;&#x01F1;&#x01F1;&#x01F4;&#x01F8;&#x01FA;&#x01FC;&#x01FE;&#x0200;&#x0202;&#x0204;&#x0206;&#x0208;&#x020A;&#x020C;&#x020E;&#x0210;&#x0212;&#x0214;&#x0216;&#x0218;&#x021A;&#x021C;&#x021E;&#x0222;&#x0224;&#x0226;&#x0228;&#x022A;&#x022C;&#x022E;&#x0230;&#x0232;&#x0181;&#x0186;&#x0189;&#x018A;&#x018F;&#x0190;&#x0193;&#x0194;&#x0197;&#x0196;&#x019C;&#x019D;&#x019F;&#x01A6;&#x01A9;&#x01AE;&#x01B1;&#x01B2;&#x01B7;&#x0399;&#x0386;&#x0388;&#x0389;&#x038A;&#x0391;&#x0392;&#x0393;&#x0394;&#x0395;&#x0396;&#x0397;&#x0398;&#x0399;&#x039A;&#x039B;&#x039C;&#x039D;&#x039E;&#x039F;&#x03A0;&#x03A1;&#x03A3;&#x03A3;&#x03A4;&#x03A5;&#x03A6;&#x03A7;&#x03A8;&#x03A9;&#x03AA;&#x03AB;&#x038C;&#x038E;&#x038F;&#x0392;&#x0398;&#x03A6;&#x03A0;&#x03DA;&#x03DC;&#x03DE;&#x03E0;&#x03E2;&#x03E4;&#x03E6;&#x03E8;&#x03EA;&#x03EC;&#x03EE;&#x039A;&#x03A1;&#x03A3;&#x0395;&#x0410;&#x0411;&#x0412;&#x0413;&#x0414;&#x0415;&#x0416;&#x0417;&#x0418;&#x0419;&#x041A;&#x041B;&#x041C;&#x041D;&#x041E;&#x041F;&#x0420;&#x0421;&#x0422;&#x0423;&#x0424;&#x0425;&#x0426;&#x0427;&#x0428;&#x0429;&#x042A;&#x042B;&#x042C;&#x042D;&#x042E;&#x042F;&#x0400;&#x0401;&#x0402;&#x0403;&#x0404;&#x0405;&#x0406;&#x0407;&#x0408;&#x0409;&#x040A;&#x040B;&#x040C;&#x040D;&#x040E;&#x040F;&#x0460;&#x0462;&#x0464;&#x0466;&#x0468;&#x046A;&#x046C;&#x046E;&#x0470;&#x0472;&#x0474;&#x0476;&#x0478;&#x047A;&#x047C;&#x047E;&#x0480;&#x048C;&#x048E;&#x0490;&#x0492;&#x0494;&#x0496;&#x0498;&#x049A;&#x049C;&#x049E;&#x04A0;&#x04A2;&#x04A4;&#x04A6;&#x04A8;&#x04AA;&#x04AC;&#x04AE;&#x04B0;&#x04B2;&#x04B4;&#x04B6;&#x04B8;&#x04BA;&#x04BC;&#x04BE;&#x04C1;&#x04C3;&#x04C7;&#x04CB;&#x04D0;&#x04D2;&#x04D4;&#x04D6;&#x04D8;&#x04DA;&#x04DC;&#x04DE;&#x04E0;&#x04E2;&#x04E4;&#x04E6;&#x04E8;&#x04EA;&#x04EC;&#x04EE;&#x04F0;&#x04F2;&#x04F4;&#x04F8;&#x0531;&#x0532;&#x0533;&#x0534;&#x0535;&#x0536;&#x0537;&#x0538;&#x0539;&#x053A;&#x053B;&#x053C;&#x053D;&#x053E;&#x053F;&#x0540;&#x0541;&#x0542;&#x0543;&#x0544;&#x0545;&#x0546;&#x0547;&#x0548;&#x0549;&#x054A;&#x054B;&#x054C;&#x054D;&#x054E;&#x054F;&#x0550;&#x0551;&#x0552;&#x0553;&#x0554;&#x0555;&#x0556;&#x1E00;&#x1E02;&#x1E04;&#x1E06;&#x1E08;&#x1E0A;&#x1E0C;&#x1E0E;&#x1E10;&#x1E12;&#x1E14;&#x1E16;&#x1E18;&#x1E1A;&#x1E1C;&#x1E1E;&#x1E20;&#x1E22;&#x1E24;&#x1E26;&#x1E28;&#x1E2A;&#x1E2C;&#x1E2E;&#x1E30;&#x1E32;&#x1E34;&#x1E36;&#x1E38;&#x1E3A;&#x1E3C;&#x1E3E;&#x1E40;&#x1E42;&#x1E44;&#x1E46;&#x1E48;&#x1E4A;&#x1E4C;&#x1E4E;&#x1E50;&#x1E52;&#x1E54;&#x1E56;&#x1E58;&#x1E5A;&#x1E5C;&#x1E5E;&#x1E60;&#x1E62;&#x1E64;&#x1E66;&#x1E68;&#x1E6A;&#x1E6C;&#x1E6E;&#x1E70;&#x1E72;&#x1E74;&#x1E76;&#x1E78;&#x1E7A;&#x1E7C;&#x1E7E;&#x1E80;&#x1E82;&#x1E84;&#x1E86;&#x1E88;&#x1E8A;&#x1E8C;&#x1E8E;&#x1E90;&#x1E92;&#x1E94;&#x1E60;&#x1EA0;&#x1EA2;&#x1EA4;&#x1EA6;&#x1EA8;&#x1EAA;&#x1EAC;&#x1EAE;&#x1EB0;&#x1EB2;&#x1EB4;&#x1EB6;&#x1EB8;&#x1EBA;&#x1EBC;&#x1EBE;&#x1EC0;&#x1EC2;&#x1EC4;&#x1EC6;&#x1EC8;&#x1ECA;&#x1ECC;&#x1ECE;&#x1ED0;&#x1ED2;&#x1ED4;&#x1ED6;&#x1ED8;&#x1EDA;&#x1EDC;&#x1EDE;&#x1EE0;&#x1EE2;&#x1EE4;&#x1EE6;&#x1EE8;&#x1EEA;&#x1EEC;&#x1EEE;&#x1EF0;&#x1EF2;&#x1EF4;&#x1EF6;&#x1EF8;&#x1F08;&#x1F09;&#x1F0A;&#x1F0B;&#x1F0C;&#x1F0D;&#x1F0E;&#x1F0F;&#x1F18;&#x1F19;&#x1F1A;&#x1F1B;&#x1F1C;&#x1F1D;&#x1F28;&#x1F29;&#x1F2A;&#x1F2B;&#x1F2C;&#x1F2D;&#x1F2E;&#x1F2F;&#x1F38;&#x1F39;&#x1F3A;&#x1F3B;&#x1F3C;&#x1F3D;&#x1F3E;&#x1F3F;&#x1F48;&#x1F49;&#x1F4A;&#x1F4B;&#x1F4C;&#x1F4D;&#x1F59;&#x1F5B;&#x1F5D;&#x1F5F;&#x1F68;&#x1F69;&#x1F6A;&#x1F6B;&#x1F6C;&#x1F6D;&#x1F6E;&#x1F6F;&#x1FBA;&#x1FBB;&#x1FC8;&#x1FC9;&#x1FCA;&#x1FCB;&#x1FDA;&#x1FDB;&#x1FF8;&#x1FF9;&#x1FEA;&#x1FEB;&#x1FFA;&#x1FFB;&#x1F88;&#x1F89;&#x1F8A;&#x1F8B;&#x1F8C;&#x1F8D;&#x1F8E;&#x1F8F;&#x1F98;&#x1F99;&#x1F9A;&#x1F9B;&#x1F9C;&#x1F9D;&#x1F9E;&#x1F9F;&#x1FA8;&#x1FA9;&#x1FAA;&#x1FAB;&#x1FAC;&#x1FAD;&#x1FAE;&#x1FAF;&#x1FB8;&#x1FB9;&#x1FBC;&#x0399;&#x1FCC;&#x1FD8;&#x1FD9;&#x1FE8;&#x1FE9;&#x1FEC;&#x1FFC;&#x2160;&#x2161;&#x2162;&#x2163;&#x2164;&#x2165;&#x2166;&#x2167;&#x2168;&#x2169;&#x216A;&#x216B;&#x216C;&#x216D;&#x216E;&#x216F;&#x24B6;&#x24B7;&#x24B8;&#x24B9;&#x24BA;&#x24BB;&#x24BC;&#x24BD;&#x24BE;&#x24BF;&#x24C0;&#x24C1;&#x24C2;&#x24C3;&#x24C4;&#x24C5;&#x24C6;&#x24C7;&#x24C8;&#x24C9;&#x24CA;&#x24CB;&#x24CC;&#x24CD;&#x24CE;&#x24CF;&#xFF21;&#xFF22;&#xFF23;&#xFF24;&#xFF25;&#xFF26;&#xFF27;&#xFF28;&#xFF29;&#xFF2A;&#xFF2B;&#xFF2C;&#xFF2D;&#xFF2E;&#xFF2F;&#xFF30;&#xFF31;&#xFF32;&#xFF33;&#xFF34;&#xFF35;&#xFF36;&#xFF37;&#xFF38;&#xFF39;&#xFF3A;&#x10400;&#x10401;&#x10402;&#x10403;&#x10404;&#x10405;&#x10406;&#x10407;&#x10408;&#x10409;&#x1040A;&#x1040B;&#x1040C;&#x1040D;&#x1040E;&#x1040F;&#x10410;&#x10411;&#x10412;&#x10413;&#x10414;&#x10415;&#x10416;&#x10417;&#x10418;&#x10419;&#x1041A;&#x1041B;&#x1041C;&#x1041D;&#x1041E;&#x1041F;&#x10420;&#x10421;&#x10422;&#x10423;&#x10424;&#x10425;'"/>
+ <xsl:variable name="xsltsl-str-digits" select="'0123456789'"/>
+ <!-- space (#x20) characters, carriage returns, line feeds, or tabs. -->
+ <xsl:variable name="xsltsl-str-ws" select="'&#x20;&#x9;&#xD;&#xA;'"/>
+
+ <doc:template name="str:to-upper" xmlns="">
+ <refpurpose>Make string uppercase</refpurpose>
+
+ <refdescription>
+ <para>Converts all lowercase letters to uppercase.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be converted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with all uppercase letters.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:to-upper">
+ <xsl:param name="text"/>
+
+ <!-- Below exception is extracted from unicode's SpecialCasing.txt
+ file. It's the german lowercase "eszett" (the thing looking
+ like a greek beta) that's to become "SS" in uppercase (note:
+ that are *two* characters, that's why it doesn't fit in the
+ list of upper/lowercase characters). There are more
+ characters in that file (103, excluding the locale-specific
+ ones), but they seemed to be much less used to me and they
+ add up to a hellish long stylesheet.... - Reinout -->
+ <xsl:param name="modified-text">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text">
+ <xsl:value-of select="$text"/>
+ </xsl:with-param>
+ <xsl:with-param name="replace">
+ <xsl:text>&#x00DF;</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="with">
+ <xsl:text>&#x0053;</xsl:text>
+ <xsl:text>&#x0053;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:value-of select="translate($modified-text, $xsltsl-str-lower, $xsltsl-str-upper)"/>
+ </xsl:template>
+
+ <doc:template name="str:to-lower" xmlns="">
+ <refpurpose>Make string lowercase</refpurpose>
+
+ <refdescription>
+ <para>Converts all uppercase letters to lowercase.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be converted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with all lowercase letters.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:to-lower">
+ <xsl:param name="text"/>
+
+ <xsl:value-of select="translate($text, $xsltsl-str-upper, $xsltsl-str-lower)"/>
+ </xsl:template>
+
+ <doc:template name="str:capitalise" xmlns="">
+ <refpurpose>Capitalise string</refpurpose>
+
+ <refdescription>
+ <para>Converts first character of string to an uppercase letter. All remaining characters are converted to lowercase.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be capitalised</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>all</term>
+ <listitem>
+ <para>Boolean controlling whether all words in the string are capitalised.</para>
+ <para>Default is true.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with first character uppcase and all remaining characters lowercase.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:capitalise">
+ <xsl:param name="text"/>
+ <xsl:param name="all" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$all and (contains($text, ' ') or contains($text, ' ') or contains($text, '&#10;'))">
+ <xsl:variable name="firstword">
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="$xsltsl-str-ws"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="str:capitalise">
+ <xsl:with-param name="text">
+ <xsl:value-of select="$firstword"/>
+ </xsl:with-param>
+ <xsl:with-param name="all" select="false()"/>
+ </xsl:call-template>
+ <xsl:value-of select="substring($text, string-length($firstword) + 1, 1)"/>
+ <xsl:call-template name="str:capitalise">
+ <xsl:with-param name="text">
+ <xsl:value-of select="substring($text, string-length($firstword) + 2)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="substring($text, 1, 1)"/>
+ </xsl:call-template>
+ <xsl:call-template name="str:to-lower">
+ <xsl:with-param name="text" select="substring($text, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:to-camelcase" xmlns="">
+ <refpurpose>Convert a string to one camelcase word</refpurpose>
+
+ <refdescription>
+ <para>Converts a string to one lowerCamelCase or UpperCamelCase
+ word, depending on the setting of the "upper"
+ parameter. UpperCamelCase is also called MixedCase while
+ lowerCamelCase is also called just camelCase. The template
+ removes any spaces, tabs and slashes, but doesn't deal with
+ other punctuation. It's purpose is to convert strings like
+ "hollow timber flush door" to a term suitable as identifier or
+ XML tag like "HollowTimberFlushDoor".
+ </para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be capitalised</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>upper</term>
+ <listitem>
+ <para>Boolean controlling whether the string becomes an
+ UpperCamelCase word or a lowerCamelCase word.</para>
+ <para>Default is true.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with first character uppcase and all remaining characters lowercase.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:to-camelcase">
+ <xsl:param name="text"/>
+ <xsl:param name="upper" select="true()"/>
+ <!-- First change all 'strange' characters to spaces -->
+ <xsl:param name="string-with-only-spaces">
+ <xsl:value-of select="translate($text,concat($xsltsl-str-ws,'/'),' ')"/>
+ </xsl:param>
+ <!-- Then process them -->
+ <xsl:param name="before-space-removal">
+ <xsl:variable name="firstword">
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$string-with-only-spaces"/>
+ <xsl:with-param name="chars" select="$xsltsl-str-ws"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$upper">
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="substring($firstword, 1, 1)"/>
+ </xsl:call-template>
+ <xsl:call-template name="str:to-lower">
+ <xsl:with-param name="text" select="substring($firstword, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:to-lower">
+ <xsl:with-param name="text" select="$firstword"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="str:capitalise">
+ <xsl:with-param name="text">
+ <xsl:value-of select="substring($string-with-only-spaces, string-length($firstword) + 2)"/>
+ </xsl:with-param>
+ <xsl:with-param name="all" select="true()"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="translate($before-space-removal,' ','')"/>
+ </xsl:template>
+
+ <doc:template name="str:substring-before-first" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+
+ <refdescription>
+ <para>Extracts the portion of string 'text' which occurs before any of the characters in string 'chars'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The string containing characters to find.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-before-first">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+
+ <xsl:when test="string-length($text) = 0"/>
+
+ <xsl:when test="string-length($chars) = 0">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:when test="contains($text, substring($chars, 1, 1))">
+ <xsl:variable name="this" select="substring-before($text, substring($chars, 1, 1))"/>
+ <xsl:variable name="rest">
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($this) &lt; string-length($rest)">
+ <xsl:value-of select="$this"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-after-last" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+
+ <refdescription>
+ <para>Extracts the portion of string 'text' which occurs after the last of the character in string 'chars'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The string containing characters to find.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-after-last">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+
+ <xsl:when test="contains($text, $chars)">
+ <xsl:variable name="last" select="substring-after($text, $chars)"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($last, $chars)">
+ <xsl:call-template name="str:substring-after-last">
+ <xsl:with-param name="text" select="$last"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$last"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-before-last" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+
+ <refdescription>
+ <para>Extracts the portion of string 'text' which occurs before the first character of the last occurance of string 'chars'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The string containing characters to find.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-before-last">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+
+ <xsl:when test="string-length($text) = 0"/>
+
+ <xsl:when test="string-length($chars) = 0">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:when test="contains($text, $chars)">
+ <xsl:call-template name="str:substring-before-last-aux">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="str:substring-before-last-aux">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0"/>
+
+ <xsl:when test="contains($text, $chars)">
+ <xsl:variable name="after">
+ <xsl:call-template name="str:substring-before-last-aux">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="substring-before($text, $chars)"/>
+ <xsl:if test="string-length($after) &gt; 0">
+ <xsl:value-of select="$chars"/>
+ <xsl:copy-of select="$after"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:subst" xmlns="">
+ <refpurpose>String substitution</refpurpose>
+
+ <refdescription>
+ <para>Substitute 'replace' for 'with' in string 'text'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string upon which to perform substitution.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>replace</term>
+ <listitem>
+ <para>The string to substitute.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>with</term>
+ <listitem>
+ <para>The string to be substituted.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disable-output-escaping</term>
+ <listitem>
+ <para>A value of <literal>yes</literal> indicates that the result should have output escaping disabled. Any other value allows normal escaping of text values. The default is to enable output escaping.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:subst">
+ <xsl:param name="text"/>
+ <xsl:param name="replace"/>
+ <xsl:param name="with"/>
+ <xsl:param name='disable-output-escaping'>no</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="string-length($replace) = 0 and $disable-output-escaping = 'yes'">
+ <xsl:value-of select="$text" disable-output-escaping='yes'/>
+ </xsl:when>
+ <xsl:when test="string-length($replace) = 0">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+ <xsl:when test="contains($text, $replace)">
+
+ <xsl:variable name="before" select="substring-before($text, $replace)"/>
+ <xsl:variable name="after" select="substring-after($text, $replace)"/>
+
+ <xsl:choose>
+ <xsl:when test='$disable-output-escaping = "yes"'>
+ <xsl:value-of select="$before" disable-output-escaping="yes"/>
+ <xsl:value-of select="$with" disable-output-escaping="yes"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$before"/>
+ <xsl:value-of select="$with"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$after"/>
+ <xsl:with-param name="replace" select="$replace"/>
+ <xsl:with-param name="with" select="$with"/>
+ <xsl:with-param name="disable-output-escaping" select="$disable-output-escaping"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$disable-output-escaping = "yes"'>
+ <xsl:value-of select="$text" disable-output-escaping="yes"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:count-substring" xmlns="">
+ <refpurpose>Count Substrings</refpurpose>
+
+ <refdescription>
+ <para>Counts the number of times a substring occurs in a string. This can also counts the number of times a character occurs in a string, since a character is simply a string of length 1.</para>
+ </refdescription>
+
+ <example>
+ <title>Counting Lines</title>
+ <programlisting><![CDATA[
+<xsl:call-template name="str:count-substring">
+ <xsl:with-param name="text" select="$mytext"/>
+ <xsl:with-param name="chars" select="'&#x0a;'"/>
+</xsl:call-template>
+]]></programlisting>
+ </example>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The source string.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The substring to count.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a non-negative integer value.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:count-substring">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0 or string-length($chars) = 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($text, $chars)">
+ <xsl:variable name="remaining">
+ <xsl:call-template name="str:count-substring">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$remaining + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-after-at" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+ <refdescription>
+ <para>Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position'.</para>
+ </refdescription>
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>delimiters</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>position</term>
+ <listitem>
+ <para>position of the elements</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>all</term>
+ <listitem>
+ <para>If true all of the remaining string is returned, otherwise only the element at the given position is returned. Default: false().</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+
+ <xsl:template name="str:substring-after-at">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+ <xsl:param name="position"/>
+ <xsl:param name="all" select='false()'/>
+
+ <xsl:choose>
+ <xsl:when test='number($position) = 0 and $all'>
+ <xsl:value-of select='$text'/>
+ </xsl:when>
+ <xsl:when test='number($position) = 0 and not($chars)'>
+ <xsl:value-of select='$text'/>
+ </xsl:when>
+ <xsl:when test='number($position) = 0 and not(contains($text, $chars))'>
+ <xsl:value-of select='$text'/>
+ </xsl:when>
+ <xsl:when test='not(contains($text, $chars))'>
+ </xsl:when>
+ <xsl:when test="number($position) = 0">
+ <xsl:value-of select="substring-before($text, $chars)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:substring-after-at">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ <xsl:with-param name="all" select="$all"/>
+ <xsl:with-param name="position" select="$position - 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-before-at" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+ <refdescription>
+ <para>Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position' </para>
+ </refdescription>
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>delimiters</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>position</term>
+ <listitem>
+ <para>position of the elements</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-before-at">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+ <xsl:param name="position"/>
+
+ <xsl:choose>
+ <xsl:when test="$position &lt;= 0"/>
+ <xsl:when test="not(contains($text, $chars))"/>
+ <xsl:otherwise>
+ <xsl:value-of select='substring-before($text, $chars)'/>
+ <xsl:value-of select='$chars'/>
+
+ <xsl:call-template name="str:substring-before-at">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="position" select="$position - 1"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:insert-at" xmlns="">
+ <refpurpose>String insertion</refpurpose>
+ <refdescription>
+ <para>Insert 'chars' into "text' at any given "position'</para>
+ </refdescription>
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string upon which to perform insertion</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>position</term>
+ <listitem>
+ <para>the position where insertion will be performed</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>with</term>
+ <listitem>
+ <para>The string to be inserted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:insert-at">
+ <xsl:param name="text"/>
+ <xsl:param name="position"/>
+ <xsl:param name="chars"/>
+
+ <xsl:variable name="firstpart" select="substring($text, 0, $position)"/>
+ <xsl:variable name="secondpart" select="substring($text, $position, string-length($text))"/>
+
+ <xsl:value-of select="concat($firstpart, $chars, $secondpart)"/>
+ </xsl:template>
+
+
+ <doc:template name="str:backward" xmlns="">
+ <refpurpose>String reversal</refpurpose>
+
+ <refdescription>
+ <para>Reverse the content of a given string</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be reversed</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:backward">
+ <xsl:param name="text"/>
+ <xsl:variable name="mirror">
+ <xsl:call-template name="str:build-mirror">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="position" select="string-length($text)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="substring($mirror, string-length($text) + 1, string-length($text))"/>
+ </xsl:template>
+
+ <xsl:template name="str:build-mirror">
+ <xsl:param name="text"/>
+ <xsl:param name="position"/>
+
+ <xsl:choose>
+ <xsl:when test="$position &gt; 0">
+ <xsl:call-template name="str:build-mirror">
+ <xsl:with-param name="text" select="concat($text, substring($text, $position, 1))"/>
+ <xsl:with-param name="position" select="$position - 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:justify" xmlns="">
+ <refpurpose>Format a string</refpurpose>
+
+ <refdescription>
+ <para>Inserts newlines and spaces into a string to format it as a block of text.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>String to be formatted.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>max</term>
+ <listitem>
+ <para>Maximum line length.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>indent</term>
+ <listitem>
+ <para>Number of spaces to insert at the beginning of each line.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>justify</term>
+ <listitem>
+ <para>Justify left, right or both. Not currently implemented (fixed at "left").</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Formatted block of text.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='str:justify'>
+ <xsl:param name='text'/>
+ <xsl:param name='max' select='"80"'/>
+ <xsl:param name='indent' select='"0"'/>
+ <xsl:param name='justify' select='"left"'/>
+
+ <xsl:choose>
+ <xsl:when test='string-length($text) = 0 or $max &lt;= 0'/>
+
+ <xsl:when test='string-length($text) > $max and contains($text, " ") and string-length(substring-before($text, " ")) > $max'>
+ <xsl:call-template name='str:generate-string'>
+ <xsl:with-param name='text' select='" "'/>
+ <xsl:with-param name='count' select='$indent'/>
+ </xsl:call-template>
+ <xsl:value-of select='substring-before($text, " ")'/>
+ <xsl:text>
+</xsl:text>
+ <xsl:call-template name='str:justify'>
+ <xsl:with-param name='text' select='substring-after($text, " ")'/>
+ <xsl:with-param name='max' select='$max'/>
+ <xsl:with-param name='indent' select='$indent'/>
+ <xsl:with-param name='justify' select='$justify'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='string-length($text) > $max and contains($text, " ")'>
+ <xsl:variable name='first'>
+ <xsl:call-template name='str:substring-before-last'>
+ <xsl:with-param name='text' select='substring($text, 1, $max)'/>
+ <xsl:with-param name='chars' select='" "'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name='str:generate-string'>
+ <xsl:with-param name='text' select='" "'/>
+ <xsl:with-param name='count' select='$indent'/>
+ </xsl:call-template>
+ <xsl:value-of select='$first'/>
+ <xsl:text>
+</xsl:text>
+ <xsl:call-template name='str:justify'>
+ <xsl:with-param name='text' select='substring($text, string-length($first) + 2)'/>
+ <xsl:with-param name='max' select='$max'/>
+ <xsl:with-param name='indent' select='$indent'/>
+ <xsl:with-param name='justify' select='$justify'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name='str:generate-string'>
+ <xsl:with-param name='text' select='" "'/>
+ <xsl:with-param name='count' select='$indent'/>
+ </xsl:call-template>
+ <xsl:value-of select='$text'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:character-first" xmlns="">
+ <refpurpose>Find first occurring character in a string</refpurpose>
+
+ <refdescription>
+ <para>Finds which of the given characters occurs first in a string.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The source string.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The characters to search for.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ </doc:template>
+
+ <xsl:template name="str:character-first">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0 or string-length($chars) = 0"/>
+
+ <xsl:when test="contains($text, substring($chars, 1, 1))">
+ <xsl:variable name="next-character">
+ <xsl:call-template name="str:character-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($next-character)">
+ <xsl:variable name="first-character-position" select="string-length(substring-before($text, substring($chars, 1, 1)))"/>
+ <xsl:variable name="next-character-position" select="string-length(substring-before($text, $next-character))"/>
+
+ <xsl:choose>
+ <xsl:when test="$first-character-position &lt; $next-character-position">
+ <xsl:value-of select="substring($chars, 1, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$next-character"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring($chars, 1, 1)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:character-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:string-match" xmlns="">
+ <refpurpose>Match A String To A Pattern</refpurpose>
+
+ <refdescription>
+ <para>Performs globbing-style pattern matching on a string.</para>
+ </refdescription>
+
+ <example>
+ <title>Match Pattern</title>
+ <programlisting><![CDATA[
+<xsl:call-template name="str:string-match">
+ <xsl:with-param name="text" select="$mytext"/>
+ <xsl:with-param name="pattern" select="'abc*def?g'"/>
+</xsl:call-template>
+]]></programlisting>
+ </example>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The source string.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pattern</term>
+ <listitem>
+ <para>The pattern to match against. Certain characters have special meaning:</para>
+ <variablelist>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>Matches zero or more characters.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>?</term>
+ <listitem>
+ <para>Matches a single character.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\</term>
+ <listitem>
+ <para>Character escape. The next character is taken as a literal character.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns "1" if the string matches the pattern, "0" otherwise.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:string-match">
+ <xsl:param name="text"/>
+ <xsl:param name="pattern"/>
+
+ <xsl:choose>
+ <xsl:when test="$pattern = '*'">
+ <!-- Special case: always matches -->
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="string-length($text) = 0 and string-length($pattern) = 0">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="string-length($text) = 0 or string-length($pattern) = 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name='before-special'>
+ <xsl:call-template name='str:substring-before-first'>
+ <xsl:with-param name='text' select='$pattern'/>
+ <xsl:with-param name='chars' select='"*?\"'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='special'>
+ <xsl:call-template name='str:character-first'>
+ <xsl:with-param name='text' select='$pattern'/>
+ <xsl:with-param name='chars' select='"*?\"'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name='new-text' select='substring($text, string-length($before-special) + 1)'/>
+ <xsl:variable name='new-pattern' select='substring($pattern, string-length($before-special) + 1)'/>
+
+ <xsl:choose>
+ <xsl:when test="not(starts-with($text, $before-special))">
+ <!-- Verbatim characters don't match -->
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="$special = '*' and string-length($new-pattern) = 1">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="$special = '*'">
+ <xsl:call-template name='str:match-postfix'>
+ <xsl:with-param name='text' select='$new-text'/>
+ <xsl:with-param name='pattern' select='substring($new-pattern, 2)'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$special = '?'">
+ <xsl:call-template name="str:string-match">
+ <xsl:with-param name='text' select='substring($new-text, 2)'/>
+ <xsl:with-param name='pattern' select='substring($new-pattern, 2)'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$special = '\' and substring($new-text, 1, 1) = substring($new-pattern, 2, 1)">
+ <xsl:call-template name="str:string-match">
+ <xsl:with-param name='text' select='substring($new-text, 2)'/>
+ <xsl:with-param name='pattern' select='substring($new-pattern, 3)'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$special = '\' and substring($new-text, 1, 1) != substring($new-pattern, 2, 1)">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- There were no special characters in the pattern -->
+ <xsl:choose>
+ <xsl:when test='$text = $pattern'>
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="str:match-postfix">
+ <xsl:param name="text"/>
+ <xsl:param name="pattern"/>
+
+ <xsl:variable name='result'>
+ <xsl:call-template name='str:string-match'>
+ <xsl:with-param name='text' select='$text'/>
+ <xsl:with-param name='pattern' select='$pattern'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='$result = "1"'>
+ <xsl:value-of select='$result'/>
+ </xsl:when>
+ <xsl:when test='string-length($text) = 0'>
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='str:match-postfix'>
+ <xsl:with-param name='text' select='substring($text, 2)'/>
+ <xsl:with-param name='pattern' select='$pattern'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="str:generate-string" xmlns="">
+ <refpurpose>Create A Repeating Sequence of Characters</refpurpose>
+
+ <refdescription>
+ <para>Repeats a string a given number of times.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to repeat.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>count</term>
+ <listitem>
+ <para>The number of times to repeat the string.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ </doc:template>
+
+ <xsl:template name="str:generate-string">
+ <xsl:param name="text"/>
+ <xsl:param name="count"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0 or $count &lt;= 0"/>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ <xsl:call-template name="str:generate-string">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="count" select="$count - 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl
new file mode 100644
index 0000000..1254ab9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl
@@ -0,0 +1,177 @@
+<xsl:stylesheet version='1.0'
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns:svg='http://xsltsl.org/svg'
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ exclude-result-prefixes="doc">
+
+ <xsl:variable name='svg-public-id' select='"-//W3C//DTD SVG 20010904//EN"'/>
+ <xsl:variable name='svg-system-id' select='"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"'/>
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: svg.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2002</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>SVG Stylesheet</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This module provides templates for creating SVG images.</para>
+ </section>
+ </partintro>
+ </doc:reference>
+
+ <doc:template name="svg:aqua-button-defs" xmlns="">
+ <refpurpose>Aqua-style Button</refpurpose>
+
+ <refdescription>
+ <para>Part of the mechanism to create an Aqua-style button. Include a call to this template in your SVG document's <sgmltag>defs</sgmltag> element. This template only needs to be included once. Use this in conjunction with <sgmltag>svg:aqua-button</sgmltag>.</para>
+
+ <para>The default values for color1, color2 and color3 result in a grey button.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>prefix</term>
+ <listitem>
+ <para>A prefix to append to the identifiers used, so that they don't clash with other identifiers. Default: "aqua-".</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>color1</term>
+ <listitem>
+ <para>The base colour of the button. Default: "#d9d9d9".</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>color2</term>
+ <listitem>
+ <para>A "background" colour for the button. Should be a darker colour than color1. Default: "#a9a9a9".</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>color3</term>
+ <listitem>
+ <para>A highlight colour for the button. Should be a lighter colour than color1. Default: "#f9f9f9".</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns SVG result-tree-fragment.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="svg:aqua-button-defs">
+ <xsl:param name="prefix" select='"aqua-"'/>
+ <xsl:param name="color1" select='"#d9d9d9"'/>
+ <xsl:param name="color2" select='"#a9a9a9"'/>
+ <xsl:param name="color3" select='"#f9f9f9"'/>
+
+ <linearGradient id='{$prefix}gradient' x1='0%' y1='0%' x2='0%' y2='100%'>
+ <stop offset='0%' stop-color='{$color2}'/>
+ <stop offset='100%' stop-color='{$color1}'/>
+ </linearGradient>
+ <linearGradient id='{$prefix}highlight-gradient' x1='0%' y1='0%' x2='0%' y2='100%'>
+ <stop offset='0%' stop-color='#ffffff'/>
+ <stop offset='75%' stop-color='{$color3}' stop-opacity='0'/>
+ <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
+ </linearGradient>
+ <linearGradient id='{$prefix}revhighlight-gradient' x1='0%' y1='100%' x2='0%' y2='0%'>
+ <stop offset='0%' stop-color='#ffffff'/>
+ <stop offset='50%' stop-color='{$color3}' stop-opacity='0'/>
+ <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
+ </linearGradient>
+ <linearGradient id='{$prefix}corner-left-gradient' x1='0%' y1='0%' x2='100%' y2='100%'>
+ <stop offset='0%' stop-color='#000000'/>
+ <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
+ </linearGradient>
+ <linearGradient id='{$prefix}corner-right-gradient' x1='100%' y1='0%' x2='0%' y2='100%'>
+ <stop offset='0%' stop-color='#000000'/>
+ <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
+ </linearGradient>
+
+ <filter id='{$prefix}filter-blur' filterUnits='userSpaceOnUse' x='0' y='0' width='200' height='100'>
+ <feGaussianBlur in='SourceGraphic' stdDeviation='2'/>
+ </filter>
+ <filter id='{$prefix}drop-shadow' y='-5' height='100'>
+ <feColorMatrix type='matrix' in='SourceAlpha' result='inglow'
+ values='.5 .5 .5 1 0
+ .5 .5 .5 1 0
+ .5 .5 .5 1 0
+ 0 0 0 1 0'/>
+ <feBlend mode='multiply' in2='SourceGraphic' in='inglow' result='innerglow'/>
+
+ <feGaussianBlur stdDeviation='4' in='SourceAlpha' result='shadow'/>
+ <feColorMatrix type='matrix' in='shadow' result='lightshadow'
+ values='.33 .33 .33 1 0
+ .33 .33 .33 1 0
+ .33 .33 .33 1 0
+ 0 0 0 1 0'/>
+ <feOffset in='lightshadow' dx='0' dy='3' result='dropshadow'/>
+ <feMerge>
+ <feMergeNode in='dropshadow'/>
+ <feMergeNode in='innerglow'/>
+ </feMerge>
+ </filter>
+
+ </xsl:template>
+
+ <doc:template name="svg:aqua-button" xmlns="">
+ <refpurpose>Aqua-style Button</refpurpose>
+
+ <refdescription>
+ <para>Part of the mechanism to create an Aqua-style button. Include a call to this template in your SVG document where you want a button to appear. This template can be used many times in a single SVG document. Use this in conjunction with <sgmltag>svg:aqua-button-defs</sgmltag>.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>prefix</term>
+ <listitem>
+ <para>A prefix to append to the identifiers used, so that they don't clash with other identifiers. Default: "aqua-".</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns SVG result-tree-fragment.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='svg:aqua-button'>
+ <xsl:param name="prefix" select='"aqua-"'/>
+
+ <g filter='url(#{$prefix}drop-shadow)'>
+ <clipPath id='{$prefix}main-shape'>
+ <path clip-rule='evenodd'
+ d="M50,90 C0,90 0,30 50,30 L150,30 C200,30 200,90 150,90 z" />
+ </clipPath>
+ <path fill="url(#{$prefix}gradient)" stroke="none"
+ d="M50,90 C0,90 0,30 50,30 L150,30 C200,30 200,90 150,90 z" />
+ <path clip-path='url(#{$prefix}main-shape)' fill='url(#{$prefix}corner-left-gradient)' stroke='none' filter='url(#{$prefix}filter-blur)'
+ d="M50,57 L13,57 A35,35 -90 0,1 50,30 z" />
+ <path clip-path='url(#{$prefix}main-shape)' fill='url(#{$prefix}corner-right-gradient)' stroke='none' filter='url(#{$prefix}filter-blur)'
+ d="M150,30 A35,35 90 0,1 190,57 L150,57 z" />
+ <path fill="url(#{$prefix}highlight-gradient)" stroke="none" stroke-width='1'
+ d="M50,65 C20,65 20,35 50,35 L150,35 C180,35 180,65 150,65 z" />
+ <path filter='url(#{$prefix}filter-blur)' fill="url(#{$prefix}revhighlight-gradient)" stroke="none"
+ d="M50,85 C10,85 10,35 50,35 L150,35 C190,35 190,85 150,85 z" />
+ </g>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl
new file mode 100644
index 0000000..df1f738
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl
@@ -0,0 +1,580 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ version="1.0"
+ extension-element-prefixes="doc"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:uri="http://xsltsl.org/uri"
+>
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: uri.xsl 3991 2004-11-10 06:51:55Z balls $
+ </releaseinfo>
+ <author>
+ <surname>Diamond</surname>
+ <firstname>Jason</firstname>
+ </author>
+ <copyright>
+ <year>2001</year>
+ <holder>Jason Diamond</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>URI (Uniform Resource Identifier) Processing</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+ <para>This module provides templates for processing URIs (Uniform Resource Identifers).</para>
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <doc:template name="uri:is-absolute-uri" xmlns="">
+ <refpurpose>Determines if a URI is absolute or relative.</refpurpose>
+
+ <refdescription>
+ <para>Absolute URIs start with a scheme (like "http:" or "mailto:").</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>uri</term>
+ <listitem>
+ <para>An absolute or relative URI.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns 'true' if the URI is absolute or '' if it's not.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="uri:is-absolute-uri">
+ <xsl:param name="uri"/>
+
+ <xsl:if test="contains($uri, ':')">
+ <xsl:value-of select="true()"/>
+ </xsl:if>
+
+ </xsl:template>
+
+ <doc:template name="uri:get-uri-scheme" xmlns="">
+ <refpurpose>Gets the scheme part of a URI.</refpurpose>
+
+ <refdescription>
+ <para>The ':' is not part of the scheme.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>uri</term>
+ <listitem>
+ <para>An absolute or relative URI.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the scheme (without the ':') or '' if the URI is relative.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="uri:get-uri-scheme">
+ <xsl:param name="uri"/>
+ <xsl:if test="contains($uri, ':')">
+ <xsl:value-of select="substring-before($uri, ':')"/>
+ </xsl:if>
+ </xsl:template>
+
+ <doc:template name="uri:get-uri-authority" xmlns="">
+ <refpurpose>Gets the authority part of a URI.</refpurpose>
+
+ <refdescription>
+ <para>The authority usually specifies the host machine for a resource. It always follows '//' in a typical URI.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>uri</term>
+ <listitem>
+ <para>An absolute or relative URI.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the authority (without the '//') or '' if the URI has no authority.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="uri:get-uri-authority">
+ <xsl:param name="uri"/>
+
+ <xsl:variable name="a">
+ <xsl:choose>
+ <xsl:when test="contains($uri, ':')">
+ <xsl:if test="substring(substring-after($uri, ':'), 1, 2) = '//'">
+ <xsl:value-of select="substring(substring-after($uri, ':'), 3)"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="substring($uri, 1, 2) = '//'">
+ <xsl:value-of select="substring($uri, 3)"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($a, '/')">
+ <xsl:value-of select="substring-before($a, '/')" />
+ </xsl:when>
+ <xsl:when test="contains($a, '?')">
+ <xsl:value-of select="substring-before($a, '?')" />
+ </xsl:when>
+ <xsl:when test="contains($a, '#')">
+ <xsl:value-of select="substring-before($a, '#')" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$a" />
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="uri:get-uri-path" xmlns="">
+ <refpurpose>Gets the path part of a URI.</refpurpose>
+
+ <refdescription>
+ <para>The path usually comes after the '/' in a URI.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>uri</term>
+ <listitem>
+ <para>An absolute or relative URI.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the path (with any leading '/') or '' if the URI has no path.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="uri:get-uri-path">
+ <xsl:param name="uri"/>
+
+ <xsl:variable name="p">
+ <xsl:choose>
+ <xsl:when test="contains($uri, '//')">
+ <xsl:if test="contains(substring-after($uri, '//'), '/')">
+ <xsl:value-of select="concat('/', substring-after(substring-after($uri, '//'), '/'))"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="contains($uri, ':')">
+ <xsl:value-of select="substring-after($uri, ':')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$uri"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($p, '?')">
+ <xsl:value-of select="substring-before($p, '?')" />
+ </xsl:when>
+ <xsl:when test="contains($p, '#')">
+ <xsl:value-of select="substring-before($p, '#')" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$p" />
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="uri:get-uri-query" xmlns="">
+ <refpurpose>Gets the query part of a URI.</refpurpose>
+
+ <refdescription>
+ <para>The query comes after the '?' in a URI.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>uri</term>
+ <listitem>
+ <para>An absolute or relative URI.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the query (without the '?') or '' if the URI has no query.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="uri:get-uri-query">
+ <xsl:param name="uri"/>
+
+ <xsl:variable name="q" select="substring-after($uri, '?')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($q, '#')">
+ <xsl:value-of select="substring-before($q, '#')"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="$q"/></xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="uri:get-uri-fragment" xmlns="">
+ <refpurpose>Gets the fragment part of a URI.</refpurpose>
+
+ <refdescription>
+ <para>The fragment comes after the '#' in a URI.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>uri</term>
+ <listitem>
+ <para>An absolute or relative URI.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns the fragment (without the '#') or '' if the URI has no fragment.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="uri:get-uri-fragment">
+ <xsl:param name="uri"/>
+
+ <xsl:value-of select="substring-after($uri, '#')"/>
+
+ </xsl:template>
+
+ <doc:template name="uri:resolve-uri" xmlns="">
+ <refpurpose>Resolves a URI reference against a base URI.</refpurpose>
+
+ <refdescription>
+ <para>This template follows the guidelines specified by <ulink url="ftp://ftp.isi.edu/in-notes/rfc2396.txt">RFC 2396</ulink>.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>reference</term>
+ <listitem>
+ <para>A (potentially relative) URI reference.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>base</term>
+ <listitem>
+ <para>The base URI.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>document</term>
+ <listitem>
+ <para>The URI of the current document. This defaults to the value of the base URI if not specified.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>The "combined" URI.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="uri:resolve-uri">
+ <xsl:param name="reference"/>
+ <xsl:param name="base"/>
+ <xsl:param name="document" select="$base"/>
+
+ <xsl:variable name="reference-scheme">
+ <xsl:call-template name="uri:get-uri-scheme">
+ <xsl:with-param name="uri" select="$reference"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="reference-authority">
+ <xsl:call-template name="uri:get-uri-authority">
+ <xsl:with-param name="uri" select="$reference"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="reference-path">
+ <xsl:call-template name="uri:get-uri-path">
+ <xsl:with-param name="uri" select="$reference"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="reference-query">
+ <xsl:call-template name="uri:get-uri-query">
+ <xsl:with-param name="uri" select="$reference"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="reference-fragment">
+ <xsl:call-template name="uri:get-uri-fragment">
+ <xsl:with-param name="uri" select="$reference"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+
+ <xsl:when test="
+ not(string-length($reference-scheme)) and
+ not(string-length($reference-authority)) and
+ not(string-length($reference-path)) and
+ not(string-length($reference-query))"
+ >
+
+ <xsl:choose>
+ <xsl:when test="contains($document, '?')">
+ <xsl:value-of select="substring-before($document, '?')"/>
+ </xsl:when>
+ <xsl:when test="contains($document, '#')">
+ <xsl:value-of select="substring-before($document, '#')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$document"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="string-length($reference-fragment)">
+ <xsl:value-of select="concat('#', $reference-fragment)"/>
+ </xsl:if>
+
+ </xsl:when>
+
+ <xsl:when test="string-length($reference-scheme)">
+
+ <xsl:value-of select="$reference"/>
+
+ </xsl:when>
+
+ <xsl:otherwise>
+
+ <xsl:variable name="base-scheme">
+ <xsl:call-template name="uri:get-uri-scheme">
+ <xsl:with-param name="uri" select="$base"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="base-authority">
+ <xsl:call-template name="uri:get-uri-authority">
+ <xsl:with-param name="uri" select="$base"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="base-path">
+ <xsl:call-template name="uri:get-uri-path">
+ <xsl:with-param name="uri" select="$base"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="base-query">
+ <xsl:call-template name="uri:get-uri-query">
+ <xsl:with-param name="uri" select="$base"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="base-fragment">
+ <xsl:call-template name="uri:get-uri-fragment">
+ <xsl:with-param name="uri" select="$base"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="result-authority">
+ <xsl:choose>
+ <xsl:when test="string-length($reference-authority)">
+ <xsl:value-of select="$reference-authority"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base-authority"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="result-path">
+ <xsl:choose>
+ <!-- don't normalize absolute paths -->
+ <xsl:when test="starts-with($reference-path, '/')">
+ <xsl:value-of select="$reference-path" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="uri:normalize-path">
+ <xsl:with-param name="path">
+ <xsl:if test="string-length($reference-authority) = 0 and substring($reference-path, 1, 1) != '/'">
+ <xsl:call-template name="uri:get-path-without-file">
+ <xsl:with-param name="path-with-file" select="$base-path"/>
+ </xsl:call-template>
+ <xsl:value-of select="'/'"/>
+ </xsl:if>
+ <xsl:value-of select="$reference-path"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="concat($base-scheme, '://', $result-authority, $result-path)"/>
+
+ <xsl:if test="string-length($reference-query)">
+ <xsl:value-of select="concat('?', $reference-query)"/>
+ </xsl:if>
+
+ <xsl:if test="string-length($reference-fragment)">
+ <xsl:value-of select="concat('#', $reference-fragment)"/>
+ </xsl:if>
+
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <xsl:template name="uri:get-path-without-file">
+ <xsl:param name="path-with-file" />
+ <xsl:param name="path-without-file" />
+
+ <xsl:choose>
+ <xsl:when test="contains($path-with-file, '/')">
+ <xsl:call-template name="uri:get-path-without-file">
+ <xsl:with-param name="path-with-file" select="substring-after($path-with-file, '/')" />
+ <xsl:with-param name="path-without-file">
+ <xsl:choose>
+ <xsl:when test="$path-without-file">
+ <xsl:value-of select="concat($path-without-file, '/', substring-before($path-with-file, '/'))" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($path-with-file, '/')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$path-without-file" />
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <xsl:template name="uri:normalize-path">
+ <xsl:param name="path"/>
+ <xsl:param name="result" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($path)">
+ <xsl:choose>
+ <xsl:when test="$path = '/'">
+ <xsl:value-of select="concat($result, '/')"/>
+ </xsl:when>
+ <xsl:when test="$path = '.'">
+ <xsl:value-of select="concat($result, '/')"/>
+ </xsl:when>
+ <xsl:when test="$path = '..'">
+ <xsl:call-template name="uri:get-path-without-file">
+ <xsl:with-param name="path-with-file" select="$result"/>
+ </xsl:call-template>
+ <xsl:value-of select="'/'"/>
+ </xsl:when>
+ <xsl:when test="contains($path, '/')">
+ <!-- the current segment -->
+ <xsl:variable name="s" select="substring-before($path, '/')"/>
+ <!-- the remaining path -->
+ <xsl:variable name="p">
+ <xsl:choose>
+ <xsl:when test="substring-after($path, '/') = ''">
+ <xsl:value-of select="'/'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-after($path, '/')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$s = ''">
+ <xsl:call-template name="uri:normalize-path">
+ <xsl:with-param name="path" select="$p"/>
+ <xsl:with-param name="result" select="$result"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$s = '.'">
+ <xsl:call-template name="uri:normalize-path">
+ <xsl:with-param name="path" select="$p"/>
+ <xsl:with-param name="result" select="$result"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$s = '..'">
+ <xsl:choose>
+ <xsl:when test="string-length($result) and (substring($result, string-length($result) - 2) != '/..')">
+ <xsl:call-template name="uri:normalize-path">
+ <xsl:with-param name="path" select="$p"/>
+ <xsl:with-param name="result">
+ <xsl:call-template name="uri:get-path-without-file">
+ <xsl:with-param name="path-with-file" select="$result"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="uri:normalize-path">
+ <xsl:with-param name="path" select="$p"/>
+ <xsl:with-param name="result" select="concat($result, '/..')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="uri:normalize-path">
+ <xsl:with-param name="path" select="$p"/>
+ <xsl:with-param name="result" select="concat($result, '/', $s)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($result, '/', $path)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$result"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl
new file mode 100644
index 0000000..86ea133
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl
@@ -0,0 +1,686 @@
+<xsl:stylesheet version='1.0'
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:doc='http://nwalsh.com/xsl/documentation/1.0'
+ exclude-result-prefixes='doc'>
+
+ <xsl:import href='../../lib/lib.xsl'/>
+
+ <doc:article xmlns=''>
+ <articleinfo>
+ <title>SVG Slides</title>
+
+ <author>
+ <firstname>Steve</firstname>
+ <surname>Ball</surname>
+ <affiliation>
+ <orgname>Zveno</orgname>
+ <address>
+ <otheraddr>
+ <ulink url='http://www.zveno.com/'>zveno.com</ulink>
+ </otheraddr>
+ </address>
+ </affiliation>
+ </author>
+
+ <releaseinfo>$Id: default.xsl 6567 2007-01-30 06:43:18Z xmldoc $</releaseinfo>
+
+ <copyright>
+ <year>2002</year>
+ <holder>Steve Ball, Zveno Pty Ltd</holder>
+ </copyright>
+
+ <legalnotice>
+ <para>Zveno Pty Ltd makes this software and associated documentation available free of charge for any purpose. You may make copies of the software but you must include all of this notice on any copy.</para>
+ <para>Zveno Pty Ltd does not warrant that this software is error free or fit for any purpose. Zveno Pty Ltd disclaims any liability for all claims, expenses, losses, damages and costs any user may incur as a result of using, copying or modifying the software.</para>
+ </legalnotice>
+ </articleinfo>
+ </doc:article>
+
+ <xsl:variable name='svg-public-id' select='"-//W3C//DTD SVG 20001102//EN"'/>
+ <xsl:variable name='svg-system-id' select='"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"'/>
+
+ <xsl:output method="xml" indent='yes' doctype-public='-//W3C//DTD SVG 20001102//EN' doctype-system='http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd' cdata-section-elements="script"/>
+
+ <xsl:strip-space elements='slides foil foilgroup'/>
+
+ <xsl:param name='css-stylesheet'>slides.css</xsl:param>
+ <xsl:param name='graphics.dir'>graphics</xsl:param>
+
+ <xsl:param name='toc.bg.color'>white</xsl:param>
+
+ <xsl:param name='font.family'>Arial</xsl:param>
+ <xsl:param name='bg.color'>white</xsl:param>
+ <xsl:param name='fg.color'>black</xsl:param>
+
+ <xsl:param name='foil.width' select='800'/>
+ <xsl:param name='foil.height' select='600'/>
+
+ <xsl:param name='toc.line.max' select='7'/>
+
+ <xsl:attribute-set name="svg.attributes">
+ <xsl:attribute name="xml:space">preserve</xsl:attribute>
+ <xsl:attribute name="width">100%</xsl:attribute>
+ <xsl:attribute name="height"><xsl:value-of select='$foil.height'/></xsl:attribute>
+ <xsl:attribute name="style">font-family: <xsl:value-of select='$font.family'/>; font-size: 18pt; fill: <xsl:value-of select='$fg.color'/>; stroke: <xsl:value-of select='$fg.color'/>; background-color: <xsl:value-of select='$bg.color'/></xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="text-title">
+ <xsl:attribute name="style">font-size: 24pt; font-weight: bold</xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="text-author">
+ <xsl:attribute name="style">font-size: 18pt</xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="text-main">
+ <xsl:attribute name="style">font-size: 18pt</xsl:attribute>
+ </xsl:attribute-set>
+
+<!-- ============================================================ -->
+
+<xsl:template name="graphics.dir">
+ <!-- danger will robinson: template shadows parameter -->
+ <xsl:variable name="source.graphics.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'graphics-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.graphics.dir != ''">
+ <xsl:value-of select="$source.graphics.dir"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$graphics.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="css-stylesheet">
+ <!-- danger will robinson: template shadows parameter -->
+ <xsl:variable name="source.css-stylesheet">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'css-stylesheet'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.css-stylesheet != ''">
+ <xsl:value-of select="$source.css-stylesheet"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$css-stylesheet"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+ <xsl:template match="/">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="slides">
+ <xsl:if test='$css-stylesheet != ""'>
+ <xsl:processing-instruction name='xml-stylesheet'>
+ <xsl:text> href="</xsl:text>
+ <xsl:value-of select='$css-stylesheet'/>
+ <xsl:text>" type="text/css"</xsl:text>
+ </xsl:processing-instruction>
+ </xsl:if>
+
+ <svg xsl:use-attribute-sets="svg.attributes">
+ <title>
+ <xsl:value-of select="slidesinfo/title"/>
+ </title>
+
+ <defs>
+ <xsl:call-template name='svg.defs'/>
+ </defs>
+
+ <!-- Create the title foil -->
+ <g id='title' display='inline'>
+ <xsl:call-template name='render-background'>
+ <xsl:with-param name='mode'>title</xsl:with-param>
+ <xsl:with-param name='id' select='"title-bg"'/>
+ </xsl:call-template>
+
+ <text id='title-main' x='50%' y='33.3%' text-anchor='middle' xsl:use-attribute-sets='text-title'>
+ <xsl:value-of select='/slides/slidesinfo/title'/>
+ </text>
+ <g id='title-author'>
+ <xsl:apply-templates select='/slides/slidesinfo/author|/slides/slidesinfo/corpauthor'/>
+ </g>
+
+ <set attributeName='display' to='none' attributeType='CSS'>
+ <xsl:attribute name='begin'>
+ <xsl:text>title.click</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name='end'>
+ <xsl:text>foil1-previous-button.click; </xsl:text>
+ <xsl:value-of select='concat("foil", count(//foil), ".click")'/>
+ <xsl:for-each select='//foil'>
+ <xsl:value-of select='concat("; foil", count(preceding-sibling::foil|preceding::foil) + 1, "-title-button.click")'/>
+ </xsl:for-each>
+ </xsl:attribute>
+ </set>
+ </g>
+
+ <!-- Create the TOC -->
+ <xsl:if test='foilgroup'>
+ <g id='toc' display='none'>
+
+ <xsl:call-template name='render-background'>
+ <xsl:with-param name='mode'>toc</xsl:with-param>
+ <xsl:with-param name='id' select='"index-bg"'/>
+ </xsl:call-template>
+
+ <text id='toc-main' x='50%' y='50' text-anchor='middle' xsl:use-attribute-sets='text-title'>
+ <xsl:value-of select='/slides/slidesinfo/title'/>
+ </text>
+
+ <set attributeName='display' to='inline' attributeType='CSS'>
+ <xsl:attribute name='begin'>
+ <xsl:text>title.click</xsl:text>
+ <xsl:for-each select='//foil'>
+ <xsl:value-of select='concat("; foil", count(preceding-sibling::foil|preceding::foil) + 1, "-toc-button.click")'/>
+ </xsl:for-each>
+ </xsl:attribute>
+ <xsl:attribute name='end'>
+ <xsl:text>toc.click; toc-content.click</xsl:text>
+ <xsl:for-each select='//foilgroup'>
+ <xsl:value-of select='concat("; index-foilgroup-", count(preceding-sibling::foilgroup|preceding::foilgroup) + 1, ".click")'/>
+ </xsl:for-each>
+ </xsl:attribute>
+ </set>
+
+ </g>
+ <g id='toc-content' display='none'>
+ <xsl:call-template name='layout-toc-columns'>
+ <xsl:with-param name='nodes' select='foilgroup'/>
+ <xsl:with-param name='x'>
+ <xsl:choose>
+ <xsl:when test='count(foilgroup) > $toc.line.max'>
+ <xsl:text>50</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>75</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <set attributeName='display' to='inline' attributeType='CSS'>
+ <xsl:attribute name='begin'>
+ <xsl:text>title.click</xsl:text>
+ <xsl:for-each select='//foil'>
+ <xsl:value-of select='concat("; foil", count(preceding-sibling::foil|preceding::foil) + 1, "-toc-button.click")'/>
+ </xsl:for-each>
+ </xsl:attribute>
+ <xsl:attribute name='end'>
+ <xsl:text>toc.click; toc-content.click</xsl:text>
+ <xsl:for-each select='//foilgroup'>
+ <xsl:value-of select='concat("; index-foilgroup-", count(preceding-sibling::foilgroup|preceding::foilgroup) + 1, ".click")'/>
+ </xsl:for-each>
+ </xsl:attribute>
+ </set>
+ </g>
+ </xsl:if>
+
+ <xsl:apply-templates select='*[not(self::slidesinfo)]'/>
+
+ </svg>
+ </xsl:template>
+
+ <!-- The application is expected to override these templates -->
+ <xsl:template name='svg.defs'/>
+ <xsl:template name='render-background'>
+ <!-- mode lets us know what kind of foil is being produced -->
+ <xsl:param name='mode'/>
+
+ <!-- id is a required parameter to include in the generated graphics.
+ - This is important for slide transitions.
+ -->
+ <xsl:param name='id'/>
+
+ <!-- This background covers most of the foil area,
+ - but leaves a space in the lower left corner for the
+ - controls
+ -->
+
+ <xsl:choose>
+ <xsl:when test='$mode = "toc"'>
+ <g id='{$id}'>
+ <!--
+ <rect width='{2 * $foil.width}' height='75' style='fill: {$toc.bg.color}; stroke: none'/>
+-->
+ <rect width="{2 * $foil.width}" height="{$foil.height - 200}" style="fill: {$toc.bg.color}; stroke: none"/>
+ <rect transform='translate(100 {$foil.height - 200})' width="{2 * $foil.width}" height="200" style="fill: {$toc.bg.color}; stroke: none"/>
+ </g>
+ </xsl:when>
+ <xsl:otherwise>
+ <g id="{$id}">
+ <rect width="{2 * $foil.width}" height="{$foil.height - 200}" style="fill: {$bg.color}; stroke: none"/>
+ <rect transform='translate(100 {$foil.height - 200})' width="{2 * $foil.width}" height="200" style="fill: {$bg.color}; stroke: none"/>
+ </g>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='author'>
+ <text x='50%' y='60%' text-anchor='middle' xsl:use-attribute-sets='text-author'>
+ <tspan>
+ <xsl:apply-templates select='firstname'/>
+ </tspan>
+ <tspan>
+ <xsl:text> </xsl:text>
+ </tspan>
+ <tspan>
+ <xsl:apply-templates select='surname'/>
+ </tspan>
+ <xsl:if test='affiliation'>
+ <tspan x='0' y='20'>
+ <xsl:apply-templates select='affiliation'/>
+ </tspan>
+ </xsl:if>
+ </text>
+ </xsl:template>
+ <xsl:template match='corpauthor'>
+ <text x='50%' y='70%' text-anchor='middle' xsl:use-attribute-sets='text-author'>
+ <xsl:apply-templates/>
+ </text>
+ </xsl:template>
+
+ <xsl:template name='layout-toc-columns'>
+ <xsl:param name='nodes'/>
+ <xsl:param name='entries-are-links' select='"yes"'/>
+ <xsl:param name='highlight'/>
+ <xsl:param name='x' select='50'/>
+
+ <xsl:choose>
+ <xsl:when test='not($nodes)'/>
+
+ <xsl:otherwise>
+ <xsl:for-each select='$nodes[position() &lt;= $toc.line.max]'>
+ <g>
+ <xsl:if test='$entries-are-links = "yes"'>
+ <xsl:attribute name='id'>
+ <xsl:text>index-foilgroup-</xsl:text>
+ <xsl:value-of select='count(preceding-sibling::foilgroup|preceding::foilgroup) + 1'/>
+ </xsl:attribute>
+ </xsl:if>
+ <text x='{$x}' y='{position() * 35 + 75}' xsl:use-attribute-sets='text-main'>
+ <xsl:if test='$highlight and generate-id($highlight) = generate-id(.)'>
+ <xsl:attribute name='fill'>#ff8000</xsl:attribute>
+ <xsl:attribute name='stroke'>#ff8000</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select='title'/>
+ </text>
+ <xsl:if test='$entries-are-links = "yes"'>
+ <set attributeName='fill' attributeType='CSS' to='#ff0033' begin='mouseover' end='mouseout'/>
+ <set attributeName='stroke' attributeType='CSS' to='#ff0033' begin='mouseover' end='mouseout'/>
+ </xsl:if>
+ </g>
+ </xsl:for-each>
+
+ <xsl:call-template name='layout-toc-columns'>
+ <xsl:with-param name='nodes' select='$nodes[position() > $toc.line.max]'/>
+ <xsl:with-param name='entries-are-links' select='$entries-are-links'/>
+ <xsl:with-param name='highlight' select='$highlight'/>
+ <xsl:with-param name='x' select='$x + 200'/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match='foilgroup'>
+ <xsl:variable name='fg-num' select='count(preceding-sibling::foilgroup) + 1'/>
+
+ <!-- Add a separator foil to indicate progress -->
+ <g id='toc-sep-{$fg-num}' display='none'>
+ <xsl:call-template name='render-background'>
+ <xsl:with-param name='mode'>toc</xsl:with-param>
+ <xsl:with-param name='id' select='concat("toc-sep-", $fg-num, "-bg")'/>
+ </xsl:call-template>
+
+ <text id='toc-sep-{$fg-num}-main' x='50%' y='50' text-anchor='middle' xsl:use-attribute-sets='text-title'>
+ <xsl:value-of select='/slides/slidesinfo/title'/>
+ </text>
+
+ <set attributeName='display' to='inline' attributeType='CSS' end='toc-sep-{$fg-num}.click; toc-sep-{$fg-num}-content.click'>
+ <xsl:attribute name='begin'>
+ <xsl:choose>
+ <xsl:when test='$fg-num = 1'>
+ <xsl:text>index-foilgroup-1.click; toc.click; toc-content.click</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>index-foilgroup-</xsl:text>
+ <xsl:value-of select='count(preceding-sibling::foilgroup) + 1'/>
+ <xsl:text>.click; foil</xsl:text>
+ <xsl:value-of select='count(preceding::foil)'/>
+ <xsl:text>.click</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </set>
+
+ </g>
+ <g id='toc-sep-{$fg-num}-content' display='none'>
+ <xsl:call-template name='layout-toc-columns'>
+ <xsl:with-param name='nodes' select='/slides/foilgroup'/>
+ <xsl:with-param name='entries-are-links' select='no'/>
+ <xsl:with-param name='highlight' select='.'/>
+ <xsl:with-param name='x'>
+ <xsl:choose>
+ <xsl:when test='count(/slides/foilgroup) > $toc.line.max'>
+ <xsl:text>50</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>75</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <set attributeName='display' to='inline' attributeType='CSS' end='toc-sep-{$fg-num}.click; toc-sep-{$fg-num}-content.click'>
+ <xsl:attribute name='begin'>
+ <xsl:choose>
+ <xsl:when test='$fg-num = 1'>
+ <xsl:text>index-foilgroup-1.click; toc.click; toc-content.click</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>index-foilgroup-</xsl:text>
+ <xsl:value-of select='count(preceding-sibling::foilgroup) + 1'/>
+ <xsl:text>.click; foil</xsl:text>
+ <xsl:value-of select='count(preceding::foil)'/>
+ <xsl:text>.click</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </set>
+ </g>
+
+ <!-- still want TOC and Previous buttons -->
+
+ <xsl:apply-templates select='foil'/>
+ </xsl:template>
+
+ <xsl:template match='foil'>
+ <xsl:variable name='number' select='count(preceding-sibling::foil|preceding::foil) + 1'/>
+
+ <g id='foil{$number}' display='none'>
+ <xsl:call-template name='render-background'>
+ <xsl:with-param name='id' select='concat("foil", $number, "-bg")'/>
+ </xsl:call-template>
+
+ <text id='foil{$number}-title' transform='translate(50 50)'>
+ <tspan id='foil{$number}-title-foilgroup' x='0' y='0' xsl:use-attribute-sets='text-title'>
+ <xsl:choose>
+ <xsl:when test='parent::foilgroup'>
+ <xsl:value-of select='../title'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='/slides/slidesinfo/title'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tspan>
+ <tspan> - </tspan>
+ <tspan id='foil{$number}-title-foil' xsl:use-attribute-sets='text-title'>
+ <xsl:value-of select='title'/>
+ </tspan>
+ </text>
+
+ <g transform='translate(50 100)'>
+ <xsl:apply-templates select='*[not(self::title)][1]'/>
+ </g>
+
+ <xsl:call-template name='foil-events'>
+ <xsl:with-param name='number' select='$number'/>
+ </xsl:call-template>
+
+ </g>
+
+ <!-- Add previous and TOC buttons
+ - (no need for next, mouse click does that)
+ -->
+
+ <g id='foil{$number}-toc-button' transform='translate(20 {$foil.height - 180})' display='none'>
+ <g style='opacity: 0'>
+ <xsl:call-template name='toc-button'/>
+ <text x='25' y='28'>TOC</text>
+ <set attributeName='opacity' to='1' attributeType='CSS' begin='mouseover' end='mouseout'/>
+ </g>
+
+ <xsl:call-template name='foil-events'>
+ <xsl:with-param name='number' select='$number'/>
+ </xsl:call-template>
+
+ </g>
+ <xsl:if test='$number != 1'>
+ <g id='foil{$number}-previous-button' transform='translate(20 {$foil.height - 150})' display='none'>
+ <g style='opacity: 0'>
+ <xsl:call-template name='previous-button'/>
+ <text x='17' y='28'>Previous</text>
+ <set attributeName='opacity' to='1' attributeType='CSS' begin='mouseover' end='mouseout'/>
+ </g>
+
+ <xsl:call-template name='foil-events'>
+ <xsl:with-param name='number' select='$number'/>
+ </xsl:call-template>
+
+ </g>
+ </xsl:if>
+
+ </xsl:template>
+
+ <!-- The application may override these -->
+ <xsl:template name='toc-button'/>
+ <xsl:template name='previous-button'/>
+
+ <xsl:template match='foilinfo|foil/title|foil/subtitle|foil/titleabbrev'/>
+
+ <xsl:template name='foil-events'>
+ <xsl:param name='number' select='0'/>
+ <xsl:param name='attribute' select='"display"'/>
+ <xsl:param name='onvalue' select='"inline"'/>
+ <xsl:param name='offvalue' select='"none"'/>
+
+ <!-- Must account for first and last foils and also foilgroup separators:
+ - On first foil, previous goes back to main TOC,
+ - If no TOC foil, then go to title foil instead.
+ - First foil in foilgroup follows group separator.
+ - Last foil in foilgroup goes to next group separator,
+ - except last foil in last group goes to main TOC.
+ -->
+
+ <xsl:choose>
+ <xsl:when test='$number = 1'>
+ <!-- This is the very first foil -->
+ <set attributeName='{$attribute}' to='{$onvalue}' attributeType='CSS'
+ end='foil{$number}.click; foil{$number}-toc-button.click'>
+ <xsl:attribute name='begin'>
+ <xsl:choose>
+ <xsl:when test='parent::foilgroup'>
+ <xsl:value-of select='concat("toc-sep-", count(preceding::foilgroup) + 1, ".click")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>title.click</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test='parent::foilgroup and not(preceding-sibling::foil)'>
+ <xsl:value-of select='concat("; index-foilgroup-", count(preceding::foilgroup) + 1, ".click")'/>
+ </xsl:if>
+ <xsl:value-of select='concat("; foil", $number + 1, "-previous-button.click")'/>
+ </xsl:attribute>
+ </set>
+ </xsl:when>
+ <xsl:when test='count(following-sibling::foil|following::foil) = 0'>
+ <!-- This is the very last foil -->
+ <set attributeName='{$attribute}' to='{$onvalue}' attributeType='CSS'
+ end='foil{$number}.click; foil{$number}-toc-button.click; foil{$number}-previous-button.click'>
+ <xsl:attribute name='begin'>
+ <xsl:choose>
+ <xsl:when test='parent::foilgroup and not(preceding-sibling::foil)'>
+ <xsl:value-of select='concat("; index-foilgroup-", count(preceding::foilgroup) + 1, ".click; toc-sep-", count(preceding::foilgroup) + 1, ".click")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='concat("foil", $number - 1, ".click")'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </set>
+ </xsl:when>
+ <xsl:otherwise>
+ <set attributeName='{$attribute}' to='{$onvalue}' attributeType='CSS'
+ end='foil{$number}.click; foil{$number}-toc-button.click; foil{$number}-previous-button.click'>
+ <xsl:attribute name='begin'>
+ <xsl:value-of select='concat("foil", $number + 1, "-previous-button.click")'/>
+ <xsl:choose>
+ <xsl:when test='parent::foilgroup and not(preceding-sibling::foil)'>
+ <xsl:value-of select='concat("; index-foilgroup-", count(preceding::foilgroup) + 1, ".click; toc-sep-", count(preceding::foilgroup) + 1, ".click")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select='concat("; foil", $number - 1, ".click")'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </set>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <xsl:template match="para">
+ <xsl:variable name='depth'>
+ <xsl:choose>
+ <xsl:when test='@depth'>
+ <xsl:value-of select='@depth'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <g transform='translate(0 30)'>
+ <xsl:if test='not(@style)'>
+ <g transform='translate({25 * ($depth - 1)} 0)'>
+ <xsl:call-template name='bullet'/>
+ </g>
+ </xsl:if>
+
+ <text y="10">
+ <xsl:attribute name='x'>
+ <xsl:value-of select='25 * $depth'/>
+ </xsl:attribute>
+ <xsl:if test='@style'>
+ <xsl:attribute name='style'>
+ <xsl:value-of select='@style'/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </text>
+
+ <xsl:apply-templates select='following-sibling::*[1]'/>
+ </g>
+ </xsl:template>
+
+ <xsl:template match='text()'>
+ <tspan>
+ <xsl:value-of select='.'/>
+ </tspan>
+ </xsl:template>
+
+ <xsl:template match='emphasis'>
+ <xsl:variable name='style'>
+ <xsl:choose>
+ <xsl:when test='@role = "bold"'>
+ <xsl:text>font-weight: bold</xsl:text>
+ </xsl:when>
+ <xsl:when test='@role = "italic"'>
+ <xsl:text>font-style: italic</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>font-style: italic</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <tspan style='{$style}'>
+ <xsl:value-of select='.'/>
+ </tspan>
+ </xsl:template>
+
+ <xsl:template match='listitem'>
+ <xsl:call-template name="bullet"/>
+ <g transform='translate(20 0)'>
+ <xsl:apply-templates/>
+ </g>
+ </xsl:template>
+
+ <xsl:template name="bullet">
+ <xsl:choose>
+ <xsl:when test="@depth = 1 or count(ancestor-or-self::listitem) = 1">
+ <xsl:call-template name="large-filled-circle"/>
+ </xsl:when>
+ <xsl:when test="@depth = 2 or count(ancestor-or-self::listitem) = 2">
+ <xsl:call-template name="small-open-circle"/>
+ </xsl:when>
+ <xsl:when test="@depth = 3 or count(ancestor-or-self::listitem) = 3">
+ <xsl:call-template name="small-filled-circle"/>
+ </xsl:when>
+ <xsl:when test="@depth = 4 or count(ancestor-or-self::listitem) = 4">
+ <xsl:call-template name="closed-toggle"/>
+ </xsl:when>
+ <xsl:when test="@depth = 5 or count(ancestor-or-self::listitem) = 5">
+ <xsl:call-template name="large-filled-circle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="small-open-box"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="closed-toggle">
+ <polyline fill="white" stroke="black" stroke-width="1" points="0 0 10 5 0 10 0 0"/>
+ </xsl:template>
+ <xsl:template name="large-filled-circle">
+ <circle fill="black" cx="10" cy="6" r="5"/>
+ </xsl:template>
+ <xsl:template name="small-filled-circle">
+ <circle fill="black" cx="10" cy="6" r="2.5"/>
+ </xsl:template>
+ <xsl:template name="small-open-circle">
+ <circle fill="none" stroke="black" stroke-width="1" cx="10" cy="6" r="2.5"/>
+ </xsl:template>
+ <xsl:template name="small-open-box">
+ <rect fill="none" stroke="black" stroke-width="1" x="5" y="5" width="5" height="5"/>
+ </xsl:template>
+
+ <xsl:template match="subject">
+ <tspan style="font-weight: bold">
+ <xsl:apply-templates/>
+ </tspan>
+ </xsl:template>
+
+ <xsl:template match="informalexample">
+ </xsl:template>
+ <xsl:template match="programlisting">
+ <!-- Output lines verbatim -->
+ </xsl:template>
+
+ <xsl:template match="imageobject|mediaobject">
+ <xsl:apply-templates/>
+ </xsl:template>
+ <xsl:template match='textobject|videoobject'/>
+ <xsl:template match='imagedata'>
+ <g transform='translate(0 30)'>
+ <image xlink:href='{@fileref}' x='0' y='0' width='600' height='400'/>
+ </g>
+ </xsl:template>
+
+ <xsl:template match='ulink'>
+ <a xlink:href='{@url}'>
+ <xsl:apply-templates/>
+ </a>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl
new file mode 100644
index 0000000..d0b47c6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ====================================================================== -->
+
+<xsl:template name="css-file">
+ <xsl:param name="css" select="'slides.css'"/>
+
+ <xsl:variable name="source.css.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'css-stylesheet-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.css.dir != ''">
+ <xsl:value-of select="$source.css.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$css.stylesheet.dir != ''">
+ <xsl:value-of select="$css.stylesheet.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- active navigation images -->
+
+<xsl:template name="css.stylesheet">
+ <xsl:param name="css" select="$css.stylesheet"/>
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="css-file">
+ <xsl:with-param name="css" select="$css"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl
new file mode 100644
index 0000000..86f2cb3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:output method="xml" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+<xsl:param name="css.stylesheet" select="'slides-default.css'"/>
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
+ <tr>
+ <xsl:call-template name="generate.toc.hide.show"/>
+ <td align="left" width="10%">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td align="center" width="80%">
+ <xsl:variable name="prestitle">
+ <xsl:value-of select="(/slides/slidesinfo/title |/slides/title)[1]"/>
+ </xsl:variable>
+
+ <span class="navheader">
+ <xsl:value-of select="$prestitle"/>
+ </span>
+ </td>
+ <td align="right" width="10%">
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <span class="index">
+ <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
+ </span>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
+ <tr>
+ <td align="left" width="10%">
+ <span class="toclink">
+ <a href="{$toc.html}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </span>
+ </td>
+ <td align="center" width="80%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="right" width="10%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="titlepage-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="(following::foilgroup|following::foil)[1]" mode="filename"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="toc-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
+ <tr>
+ <td align="left">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="toc-bottom-nav">
+ <div class="navfoot">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <a href="{$titlefoil.html}">
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="generate.toc.hide.show">
+ <xsl:if test="$toc.hide.show != 0">
+ <td>
+ <img hspace="4" alt="Hide/Show TOC">
+ <xsl:attribute name="src">
+ <xsl:call-template name="hidetoc.image"/>
+ </xsl:attribute>
+ <xsl:attribute name="onClick">
+ <xsl:text>toggletoc(this,</xsl:text>
+ <xsl:value-of select="$toc.width"/>
+ <xsl:text>,'</xsl:text>
+ <xsl:call-template name="hidetoc.image"/>
+ <xsl:text>','</xsl:text>
+ <xsl:call-template name="showtoc.image"/>
+ <xsl:text>');</xsl:text>
+ </xsl:attribute>
+ </img>
+ </td>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:*">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl
new file mode 100644
index 0000000..e0c57e9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:template match="/">
+ <html>
+ <head>
+ <title><xsl:value-of select="/slides/slidesinfo/title"/></title>
+ </head>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="slidesinfo">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <div id="{$id}" class="titlepage">
+ <div class="titlepage-body">
+ <xsl:call-template name="titlepage-body"/>
+ </div>
+ </div>
+</xsl:template>
+
+<xsl:template match="slides" mode="toc">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="foil">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <div class="{name(.)}" id="{$id}">
+ <div class="foil-body">
+ <xsl:call-template name="foil-body"/>
+ </div>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="foilgroup">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <div class="{name(.)}" id="{$id}">
+ <div class="foilgroup-body">
+ <xsl:call-template name="foilgroup-body"/>
+ </div>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="author" mode="titlepage.mode">
+ <div class="{name(.)}">
+ <h2 class="{name(.)}"><xsl:call-template name="person.name"/></h2>
+ <xsl:apply-templates mode="titlepage.mode" select="./contrib"/>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl
new file mode 100644
index 0000000..aea4172
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl
@@ -0,0 +1,1982 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="titlefoil.html" select="concat('titlepg', $html.ext)"/>
+
+<xsl:param name="css.stylesheet" select="'slides-frames.css'"/>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="doctype-public">
+ <xsl:param name="frameset" select="0"/>
+ <xsl:choose>
+ <xsl:when test="$stylesheet.result.type='html'">
+ <xsl:choose>
+ <!-- Assume when chunker.output.doctype-public is set the user
+ wants to have doctypes written out. If frameset is set
+ then overide with a frameset public identifier. -->
+ <xsl:when test="$chunker.output.doctype-public != '' and $frameset != 0">
+ <xsl:text>-//W3C//DTD HTML 4.01 Frameset//EN</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$chunker.output.doctype-public"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$stylesheet.result.type='xhtml'">
+ <xsl:choose>
+ <xsl:when test="$frameset != 0">
+ <xsl:text>-//W3C//DTD XHTML 1.0 Frameset//EN</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>-//W3C//DTD XHTML 1.0 Transitional//EN</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="doctype-system">
+ <xsl:param name="frameset" select="0"/>
+ <xsl:choose>
+ <xsl:when test="$stylesheet.result.type='html'">
+ <xsl:choose>
+ <!-- Assume when chunker.output.doctype-system is set the user
+ wants to have doctypes written out. If frameset is set
+ then overide with a frameset system identifier. -->
+ <xsl:when test="$chunker.output.doctype-system != '' and $frameset != 0">
+ <xsl:text>http://www.w3.org/TR/html4/loose.dtd</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$chunker.output.doctype-system"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$stylesheet.result.type='xhtml'">
+ <xsl:choose>
+ <xsl:when test="$frameset != 0">
+ <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slides">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="(slidesinfo/titleabbrev|titleabbrev)">
+ <xsl:value-of select="(slidesinfo/titleabbrev|titleabbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(slidesinfo/title|title)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="toc.rows" select="1+count(//foilgroup)+count(//foil)"/>
+ <xsl:variable name="toc.height" select="$toc.rows * $toc.row.height"/>
+
+ <xsl:if test="$overlay != 0 and $multiframe != 0">
+ <xsl:message terminate="yes">
+ <xsl:text>Multiframe and overlay are mutually exclusive.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'frames', $html.ext)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="$title"/></title>
+ </head>
+ <frameset cols="{$toc.width},*" id="topframe">
+ <frame src="{concat('toc', $html.ext)}" name="toc" id="toc" frameborder="1"/>
+ <frame src="{$titlefoil.html}" name="foil" id="foil"/>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <a href="{concat('titleframe', $html.ext)}">
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </a>
+ </body>
+ </noframes>
+ </frameset>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'toc',$html.ext)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>TOC - <xsl:value-of select="$title"/></title>
+ <xsl:call-template name="system.head.content"/>
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0 or $overlay.logo != ''">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0' or $overlay.logo != ''">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$dynamic.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+function init() {
+ var width = </xsl:text>
+<xsl:value-of select="$toc.width"/>
+<xsl:text>, height = </xsl:text>
+<xsl:value-of select="$toc.row.height"/>
+<xsl:text>;
+ myList = new List(true, width, height, "</xsl:text>
+<xsl:value-of select="$toc.bg.color"/>
+<xsl:text>","</xsl:text>
+<xsl:call-template name="plus.image"/>
+<xsl:text>","</xsl:text>
+<xsl:call-template name="minus.image"/>
+<xsl:text>");
+</xsl:text>
+<xsl:apply-templates mode="ns-toc"/>
+ <xsl:text disable-output-escaping="yes">
+ myList.build(0,0);
+}
+ // --&gt;
+</xsl:text>
+ </script>
+ <style type="text/css">
+ <xsl:text>#spacer { position: absolute; height: </xsl:text>
+ <xsl:value-of select="$toc.height"/>
+ <xsl:text>; }
+</xsl:text>
+ </style>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="toc">
+ <xsl:call-template name="body.attributes"/>
+
+ <xsl:if test="$overlay.logo != ''">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('ll');</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$dynamic.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>init(</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ <xsl:if test="$overlay.logo != ''">
+ <xsl:text>overlaySetup('ll');</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$dynamic.toc = 0">
+ <div class="toc">
+ <xsl:apply-templates mode="toc"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div id="spacer"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$overlay.logo != ''">
+ <div style="position: absolute; visibility: visible;" id="overlayDiv">
+ <img src="{$overlay.logo}" alt="logo" vspace="20"/>
+ </div>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slidesinfo">
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename" select="concat($base.dir,$titlefoil.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <xsl:choose>
+ <xsl:when test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe-top"/>
+ <xsl:apply-templates select="." mode="multiframe-body"/>
+ <xsl:apply-templates select="." mode="multiframe-bottom"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
+ <xsl:attribute name="onload">
+ <xsl:text>javascript:body.focus()</xsl:text>
+ </xsl:attribute>
+ <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
+ </frame>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <p>
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </p>
+ </body>
+ </noframes>
+ </frameset>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe-top">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0' or $overlay.logo != ''">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe-body">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Body</title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="multiframe-bottom">
+ <xsl:variable name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="singleframe">
+ <xsl:param name="thisfoil">
+ <xsl:value-of select="$titlefoil.html"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+
+ <body class="titlepage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:choose>
+ <xsl:when test="$active.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>newPage('</xsl:text>
+ <xsl:value-of select="$titlefoil.html"/>
+ <xsl:text>',</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc');</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>this.focus()</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+
+ <xsl:if test="$multiframe=0">
+ <div id="overlayDiv" class="navfoot">
+ <xsl:choose>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position:absolute;visibility:visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">
+ <xsl:text>padding-top: 2in;</xsl:text>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" summary="Navigation">
+ <tr>
+ <td align="left" width="80%" valign="top">
+ <span class="navfooter">
+ <!-- suppress copyright here; it's probably already on the titlepage
+ <xsl:apply-templates select="/slides/slidesinfo/copyright"
+ mode="slide.footer.mode"/>
+ -->
+ <xsl:text>&#160;</xsl:text>
+ </span>
+ </td>
+ <td align="right" width="20%" valign="top">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </xsl:if>
+ </body>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
+ <tr>
+ <td align="left" valign="bottom" width="10%">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="80%" align="center" valign="bottom">
+ <xsl:call-template name="foil.number"/>
+ </td>
+ <td align="right" valign="bottom" width="10%">
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+
+ <td align="right" valign="top">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:if test="$multiframe != 0">
+ <xsl:attribute name="target">foil</xsl:attribute>
+ </xsl:if>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">&#160;</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="foilgroup">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename" select="concat($base.dir,$thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <xsl:choose>
+ <xsl:when test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe-top"/>
+ <xsl:apply-templates select="." mode="multiframe-body"/>
+ <xsl:apply-templates select="." mode="multiframe-bottom"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe">
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
+ <xsl:attribute name="onload">
+ <xsl:text>javascript:body.focus()</xsl:text>
+ </xsl:attribute>
+ <frame src="top-{$thisfoilgroup}" name="top" id="top" marginheight="0" frameborder="0"/>
+ <frame src="body-{$thisfoilgroup}" name="body" id="body" marginheight="0" frameborder="0"/>
+ <frame src="bot-{$thisfoilgroup}" name="bottom" id="bottom" marginheight="0" frameborder="0"/>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <p>
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </p>
+ </body>
+ </noframes>
+ </frameset>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe-top">
+ <xsl:variable name="foilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'top-',$foilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
+ <xsl:call-template name="foilgroup-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe-body">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Body</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="multiframe-bottom">
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <xsl:call-template name="foilgroup-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="singleframe">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+ <body class="foilgroup">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:choose>
+ <xsl:when test="$active.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>newPage('</xsl:text>
+ <xsl:value-of select="$thisfoilgroup"/>
+ <xsl:text>',</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc');</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:if test="$multiframe=0">
+ <xsl:call-template name="foilgroup-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <div class="foilgroup-body" id="{$id}">
+ <xsl:call-template name="foilgroup-body">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+
+ <xsl:if test="$multiframe=0">
+ <div id="overlayDiv">
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position:absolute;visibility:visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="foilgroup-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="foil">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
+
+ <xsl:variable name="doctype-public">
+ <xsl:call-template name="doctype-public">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="doctype-system">
+ <xsl:call-template name="doctype-system">
+ <xsl:with-param name="frameset" select="$multiframe"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="filename" select="concat($base.dir,$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <xsl:choose>
+ <xsl:when test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$multiframe != 0">
+ <xsl:apply-templates select="." mode="multiframe-top"/>
+ <xsl:apply-templates select="." mode="multiframe-body"/>
+ <xsl:apply-templates select="." mode="multiframe-bottom"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe">
+ <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
+
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
+ <xsl:attribute name="onload">
+ <xsl:text>javascript:body.focus()</xsl:text>
+ </xsl:attribute>
+ <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
+ </frame>
+ <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
+ </frame>
+ <noframes>
+ <body class="frameset">
+ <xsl:call-template name="body.attributes"/>
+ <p>
+ <xsl:text>Your browser doesn't support frames.</xsl:text>
+ </p>
+ </body>
+ </noframes>
+ </frameset>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe-top">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javajcript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe-body">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Body</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+
+ </head>
+ <xsl:apply-templates select="." mode="singleframe"/>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="multiframe-bottom">
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>Navigation</title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="singleframe">
+ <xsl:param name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
+
+ <body class="foil">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:choose>
+ <xsl:when test="$active.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>newPage('</xsl:text>
+ <xsl:value-of select="$thisfoil"/>
+ <xsl:text>',</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc');</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:if test="$multiframe=0">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <div class="foil-body">
+ <xsl:apply-templates/>
+ </div>
+
+ <xsl:if test="$multiframe=0">
+ <div id="overlayDiv">
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position:absolute;visibility:visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slidesinfo" mode="toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <div id="{$id}" class="toc-slidesinfo">
+ <a href="{$titlefoil.html}" target="foil">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title" mode="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ <hr/>
+ </div>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="toc">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="thisfoilgroup">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:variable>
+
+ <div class="toc-foilgroup" id="{$id}">
+ <img alt="-">
+ <xsl:attribute name="src">
+ <xsl:call-template name="minus.image"/>
+ </xsl:attribute>
+ </img>
+ <a href="{$thisfoilgroup}" target="foil">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title" mode="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="foil" mode="toc">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:variable name="foil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <div id="{$id}" class="toc-foil">
+ <img alt="-">
+ <xsl:attribute name="src">
+ <xsl:call-template name="bullet.image"/>
+ </xsl:attribute>
+ </img>
+ <a href="{$foil}" target="foil">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title" mode="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slidesinfo" mode="ns-toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:text>myList.addItem('</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text disable-output-escaping="yes">" class="toc-slidesinfo"&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="$titlefoil.html"/>
+ <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
+
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\'</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
+ <xsl:text>');
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="ns-toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:text>subList = new List(false, width, height, "</xsl:text>
+<xsl:value-of select="$toc.bg.color"/>
+<xsl:text>");
+</xsl:text>
+ <xsl:text>subList.setIndent(12);
+</xsl:text>
+ <xsl:apply-templates select="foil" mode="ns-toc"/>
+
+ <xsl:text>myList.addList(subList, '</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text disable-output-escaping="yes">" class="toc-foilgroup"&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:apply-templates select="." mode="filename"/>
+ <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
+
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\'</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
+ <xsl:text>');
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="foil" mode="ns-toc">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::foilgroup">
+ <xsl:text>subList.addItem('</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>myList.addItem('</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text disable-output-escaping="yes">" class="toc-foil"&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;img alt="-" src="</xsl:text>
+ <xsl:call-template name="bullet.image"/>
+ <xsl:text disable-output-escaping="yes">"&gt;&lt;\/img&gt;</xsl:text>
+
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:apply-templates select="." mode="filename"/>
+ <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
+
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\'</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
+ <xsl:text>');
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="speakernotes" mode="ns-toc">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl
new file mode 100644
index 0000000..6317a4b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ====================================================================== -->
+
+<xsl:template name="graphics-file">
+ <xsl:param name="image" select="'bullet.gif'"/>
+
+ <xsl:variable name="source.graphics.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'graphics-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.graphics.dir != ''">
+ <xsl:value-of select="$source.graphics.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$graphics.dir != ''">
+ <xsl:value-of select="$graphics.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://docbook.sourceforge.net/release/slides/graphics/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$image"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- active navigation images -->
+
+<xsl:template name="toc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$toc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="home.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$home.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="up.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$up.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="prev.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$prev.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="next.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$next.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- inactive navigation images -->
+
+<xsl:template name="no.toc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.toc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.home.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.home.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.up.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.up.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.prev.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.prev.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="no.next.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$no.next.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- icon images -->
+
+<xsl:template name="bullet.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$bullet.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="plus.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$plus.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="minus.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$minus.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- hide/show ToC images -->
+
+<xsl:template name="hidetoc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$hidetoc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="showtoc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$showtoc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl
new file mode 100644
index 0000000..b3047ee
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:output method="xml" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+<xsl:template name="script-dir">
+ <xsl:variable name="source.script.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'script-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.script.dir != ''">
+ <xsl:value-of select="$source.script.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$script.dir != ''">
+ <xsl:value-of select="$script.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="script-file">
+ <xsl:param name="js" select="'slides.js'"/>
+ <xsl:call-template name="script-dir"/>
+ <xsl:value-of select="$js"/>
+</xsl:template>
+
+<xsl:template name="ua.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$ua.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbDOM.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbDOM.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbStyle.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbStyle.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbLibrary.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbLibrary.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbCollapsibleLists.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbCollapsibleLists.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="overlay.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$overlay.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+<xsl:template name="slides.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'javascript'"/>
+ <script type="text/javascript" language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$slides.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text> </xsl:text>
+ </script>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl
new file mode 100644
index 0000000..c3ec806
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook Slides Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="active.toc" select="0"/>
+<xsl:param name="body.bg.color">#FFFFFF</xsl:param>
+<xsl:param name="bullet.image">toc/bullet.png</xsl:param>
+<xsl:param name="css.stylesheet">slides.css</xsl:param>
+<xsl:param name="css.stylesheet.dir"/>
+<xsl:param name="dynamic.toc" select="0"/>
+<xsl:param name="foilgroup.toc" select="1"/>
+<xsl:param name="graphics.dir"/>
+<xsl:param name="hidetoc.image">hidetoc.gif</xsl:param>
+<xsl:param name="home.image">active/nav-home.png</xsl:param>
+<xsl:param name="keyboard.nav" select="1"/>
+<xsl:param name="minus.image">toc/open.png</xsl:param>
+<xsl:param name="multiframe.bottom.bgcolor">white</xsl:param>
+<xsl:param name="multiframe" select="0"/>
+<xsl:param name="multiframe.navigation.height">40</xsl:param>
+<xsl:param name="multiframe.top.bgcolor">white</xsl:param>
+<xsl:param name="nav.separator" select="1"/>
+<xsl:param name="next.image">active/nav-next.png</xsl:param>
+<xsl:param name="no.home.image">inactive/nav-home.png</xsl:param>
+<xsl:param name="no.next.image">inactive/nav-next.png</xsl:param>
+<xsl:param name="no.prev.image">inactive/nav-prev.png</xsl:param>
+<xsl:param name="no.toc.image">inactive/nav-toc.png</xsl:param>
+<xsl:param name="no.up.image">inactive/nav-up.png</xsl:param>
+<xsl:param name="output.indent">no</xsl:param>
+<xsl:param name="overlay" select="0"/>
+<xsl:param name="overlay.js">overlay.js</xsl:param>
+<xsl:param name="overlay.logo">http://docbook.sourceforge.net/release/buttons/slides-1.png</xsl:param>
+<xsl:param name="plus.image">toc/closed.png</xsl:param>
+<xsl:param name="prev.image">active/nav-prev.png</xsl:param>
+<xsl:param name="script.dir"/>
+<xsl:param name="show.foil.number" select="0"/>
+<xsl:param name="showtoc.image">showtoc.gif</xsl:param>
+<xsl:param name="slides.js">slides.js</xsl:param>
+<xsl:param name="text.home">Home</xsl:param>
+<xsl:param name="text.next">Next</xsl:param>
+<xsl:param name="text.prev">Prev</xsl:param>
+<xsl:param name="text.toc">ToC</xsl:param>
+<xsl:param name="text.up">Up</xsl:param>
+<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
+<xsl:param name="toc.bg.color">#FFFFFF</xsl:param>
+<xsl:param name="toc.hide.show" select="0"/>
+<xsl:param name="toc.html" select="concat('toc', $html.ext)"/>
+<xsl:param name="toc.image">active/nav-toc.png</xsl:param>
+<xsl:param name="toc.row.height">22</xsl:param>
+<xsl:param name="toc.width">250</xsl:param>
+<!-- Presumably in pixels? -->
+<xsl:param name="ua.js">ua.js</xsl:param>
+<xsl:param name="up.image">active/nav-up.png</xsl:param>
+<xsl:param name="xbCollapsibleLists.js">xbCollapsibleLists.js</xsl:param>
+<xsl:param name="xbDOM.js">xbDOM.js</xsl:param>
+<xsl:param name="xbStyle.js">xbStyle.js</xsl:param>
+<xsl:param name="xbLibrary.js">xbLibrary.js</xsl:param>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl
new file mode 100644
index 0000000..29d43fc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="prev.image" select="'active/nav-prev.png'"/>
+<xsl:param name="next.image" select="'active/nav-next.png'"/>
+<xsl:param name="up.image" select="'active/nav-up.png'"/>
+<xsl:param name="toc.image" select="'active/nav-toc.png'"/>
+<xsl:param name="home.image" select="'active/nav-home.png'"/>
+
+<xsl:param name="no.prev.image" select="'inactive/nav-prev.png'"/>
+<xsl:param name="no.next.image" select="'inactive/nav-next.png'"/>
+<xsl:param name="no.up.image" select="'inactive/nav-up.png'"/>
+<xsl:param name="no.toc.image" select="'inactive/nav-toc.png'"/>
+<xsl:param name="no.home.image" select="'inactive/nav-home.png'"/>
+
+<xsl:param name="css.stylesheet" select="'slides-plain.css'"/>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="up"/>
+ <xsl:param name="home"/>
+ <xsl:param name="toc" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
+ <tr>
+ <td align="left" width="45%">
+ <span class="slidestitle">
+ <xsl:value-of select="(/slides/slidesinfo/title)[1]"/>
+ </span>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="10%" align="center" valign="bottom">
+ <xsl:call-template name="foil.number"/>
+ </td>
+ <td align="right" width="45%">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$home/slidesinfo/title"/>
+ </xsl:attribute>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$toc != ''">
+ <a title="ToC" href="{$toc}">
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prev/title"/>
+ </xsl:attribute>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$up/title"/>
+ </xsl:attribute>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="toc" select="$toc.html"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
+ <tr>
+ <td align="left" width="50%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="right" width="50%">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$home/slidesinfo/title"/>
+ </xsl:attribute>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$toc.html != ''">
+ <a title="ToC" href="{$toc.html}">
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prev/title"/>
+ </xsl:attribute>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$up/title"/>
+ </xsl:attribute>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="toc-top-nav">
+ <xsl:param name="home" select="/slides"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:param name="toc"/>
+
+ <div class="navhead">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
+ <tr>
+ <td align="left" width="50%">
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="right" width="50%">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$home/slidesinfo/title"/>
+ </xsl:attribute>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Home" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$toc != ''">
+ <a title="ToC" href="{$toc}">
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="ToC" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prev/title"/>
+ </xsl:attribute>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Prev" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$up/title"/>
+ </xsl:attribute>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Up" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="bottom-nav"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl
new file mode 100644
index 0000000..65d3b7a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl
@@ -0,0 +1,1534 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="../../xhtml/chunk.xsl"/>
+<xsl:include href="../../VERSION"/>
+
+<xsl:include href="param.xsl"/>
+<xsl:include href="jscript.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="css.xsl"/>
+
+<xsl:output method="xml" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+<xsl:strip-space elements="slides foil foilgroup"/>
+
+<!-- Process the slides -->
+
+<xsl:template match="/">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="slides">
+ <xsl:apply-templates select="." mode="toc"/>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Every slide has top and bottom navigation -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
+ <tr>
+ <td align="left" valign="bottom">
+ <xsl:if test="$home">
+ <span class="slidestitle">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
+ </a>
+ </span>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+
+ <td align="right" valign="bottom">
+ <xsl:choose>
+ <xsl:when test="$home">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.home}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="home.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.home}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.home.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$tocfile"/>
+ </xsl:attribute>
+ <img alt="{$text.toc}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.toc}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$up">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.up}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="up.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.up}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.up.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+
+ <td align="right" valign="top">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.prev}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <span class="link-text">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="no-link-text">
+ <img alt="{$text.next}" border="0">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- Navigation is also provided in the form of links in the head -->
+
+<xsl:template name="links">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:if test="$tocfile != ''">
+ <link rel="contents" href="{$tocfile}">
+ <xsl:attribute name="title">
+ <xsl:value-of select="/slides/slidesinfo/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$home">
+ <link rel="top">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+
+ <link rel="first">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$home" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$up">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$up" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($up/title|$up/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prev">
+ <link rel="previous">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="($prev/title|$prev/slidesinfo/title)[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$next">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$next/title"/>
+ </xsl:attribute>
+ </link>
+
+ <xsl:variable name="last" select="$next/following::foil[last()]"/>
+ <xsl:if test="$last">
+ <link rel="last">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$last" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$last/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:for-each select="foil">
+ <link rel="slides">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="foilgroup|../foilgroup">
+ <link rel="section">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- There are four kinds of slides: titlepage, toc, foil, and foilgroup -->
+<!-- titlepage -->
+
+<xsl:template match="slidesinfo">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
+ <xsl:variable name="tocfile" select="$toc.html"/>
+ <xsl:variable name="dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $dir, $titlefoil.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="/slides"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:attribute name="class">
+ <xsl:text>titlepage</xsl:text>
+ <xsl:if test="@role">
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="titlepage" id="{$id}">
+ <xsl:call-template name="titlepage-top-nav">
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <div class="titlepage-body">
+ <xsl:call-template name="titlepage-body"/>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="titlepage-bottom-nav">
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+ </div>
+ </div>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="titlepage-body">
+ <div class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="titlepage-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="slidesinfo/title">
+ <h1 class="{name(.)}"><xsl:apply-templates/></h1>
+</xsl:template>
+
+<xsl:template match="slidesinfo/authorgroup">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="slidesinfo/author|slidesinfo/authorgroup/author">
+ <h1 class="{name(.)}"><xsl:apply-imports/></h1>
+</xsl:template>
+
+<xsl:template match="slidesinfo/releaseinfo">
+ <h4 class="{name(.)}"><xsl:apply-templates/></h4>
+</xsl:template>
+
+<xsl:template match="slidesinfo/date">
+ <h4 class="{name(.)}"><xsl:apply-templates/></h4>
+</xsl:template>
+
+<xsl:template match="slidesinfo/copyright">
+ <!-- nop -->
+</xsl:template>
+
+<!-- On slides, output the credits explicitly each time -->
+<xsl:template match="othercredit" mode="titlepage.mode">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- toc -->
+
+<xsl:template match="slides" mode="toc">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="/slides"/>
+ <xsl:variable name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:variable name="tocfile" select="''"/>
+ <xsl:variable name="dir"> <!-- MJ: added -->
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $dir, $toc.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="slidesinfo/title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+
+ <body class="tocpage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div id="{$id}">
+ <xsl:call-template name="toc-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+
+ <div class="toc-body">
+ <xsl:call-template name="toc-body"/>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="toc-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+ </div>
+ </div>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="toc-body">
+ <h1 class="title">
+ <a href="{$titlefoil.html}">
+ <xsl:value-of select="/slides/slidesinfo/title"/>
+ </a>
+ </h1>
+
+ <p class="toctitle">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </strong>
+ </p>
+ <dl class="toc">
+ <xsl:apply-templates select="foilgroup|foil" mode="toc"/>
+ </dl>
+</xsl:template>
+
+<xsl:template name="toc-top-nav">
+ <xsl:param name="home" select="/slides"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:param name="tocfile"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="toc-bottom-nav">
+ <xsl:param name="home" select="/slides"/>
+ <xsl:param name="up"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="next" select="(foil|foilgroup)[1]"/>
+ <xsl:param name="tocfile"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="tocfile" select="$tocfile"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="toc">
+ <xsl:param name="recursive" select="1"/>
+
+ <dt>
+ <xsl:apply-templates select="." mode="number"/>
+ <xsl:text>. </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="title"/>
+ </a>
+ </dt>
+ <xsl:if test="$recursive != 0">
+ <dd>
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="foil" mode="toc">
+ <dt>
+ <xsl:apply-templates select="." mode="number"/>
+ <xsl:text>. </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="title"/>
+ </a>
+ </dt>
+</xsl:template>
+
+<xsl:template match="title|titleabbrev" mode="toc">
+ <xsl:apply-templates mode="toc"/>
+</xsl:template>
+
+<xsl:template match="speakernotes" mode="toc">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- foil -->
+
+<xsl:template match="foil">
+ <xsl:param name="thisfoil">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
+ <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="@role">
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:call-template name="foil-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <div class="foil-body">
+ <xsl:call-template name="foil-body">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="foil-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="foil-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template name="foil-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="foil-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil/title">
+ <h1 class="{name(.)}">
+ <xsl:apply-templates/>
+ </h1>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- foilgroup -->
+
+<xsl:template match="foilgroup">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="home" select="/slides"/>
+ <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
+ <xsl:variable name="next" select="foil[1]"/>
+ <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+
+ <xsl:call-template name="system.head.content"/>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+
+ <!-- Links -->
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <!-- Scripts -->
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('</xsl:text>
+ <xsl:call-template name="script-dir"/>
+ <xsl:text disable-output-escaping="yes">');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="@role">
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>overlaySetup('lc')</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}" id="{$id}">
+ <xsl:call-template name="foilgroup-top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+
+ <!-- n.b. the foilgroup-body template is responsible for generating -->
+ <!-- the foilgroup toc -->
+ <div class="foilgroup-body">
+ <xsl:call-template name="foilgroup-body">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+
+ <div id="overlayDiv">
+ <xsl:call-template name="overlayDiv.attributes"/>
+ <xsl:call-template name="foilgroup-bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+ </div>
+ </div>
+
+ <xsl:call-template name="process.footnotes"/>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="foilgroup/title">
+ <h1 class="{name(.)}"><xsl:apply-templates/></h1>
+</xsl:template>
+
+<xsl:template name="foilgroup-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:apply-templates select="*[name(.) != 'foil' and name(.) != 'foilgroup']"/>
+
+ <xsl:if test="$foilgroup.toc != 0">
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="foilgroup-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="top-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="foilgroup-bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <xsl:call-template name="bottom-nav">
+ <xsl:with-param name="home" select="$home"/>
+ <xsl:with-param name="up" select="$up"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="prev" select="$prev"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="overlayDiv.attributes">
+ <xsl:choose>
+ <xsl:when test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position: absolute; visibility: visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">padding-top: 2in;</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="processing-instruction('dbhtml')" mode="css.pi">
+ <xsl:variable name="href">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute" select="'css-stylesheet'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$href!=''">
+ <xsl:choose>
+ <xsl:when test="$href = ''">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:when test="contains($href, '//')">
+ <link type="text/css" rel="stylesheet" href="{$href}"/>
+ </xsl:when>
+ <xsl:when test="starts-with($href, '/')">
+ <link type="text/css" rel="stylesheet" href="{$href}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css-file">
+ <xsl:with-param name="css" select="$href"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </link>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="foil" mode="number">
+ <xsl:number count="foil|foilgroup" level="any"/>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="number">
+ <xsl:number count="foil|foilgroup" level="any"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="slides" mode="filename">
+ <xsl:value-of select="$titlefoil.html"/>
+</xsl:template>
+
+<xsl:template match="foil" mode="filename">
+ <xsl:text>foil</xsl:text>
+ <xsl:number count="foil" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="filename">
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="processing-instruction('Pub')">
+ <xsl:variable name="pidata"><xsl:value-of select="(.)"/></xsl:variable>
+ <xsl:choose>
+ <xsl:when test="contains($pidata,'UDT')"/>
+ <xsl:when test="contains($pidata,'/_font')">
+ <xsl:text disable-output-escaping="yes">&lt;/span&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($pidata,'_font')">
+ <xsl:text disable-output-escaping="yes">&lt;span </xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains($pidata,'green')">class="green"</xsl:when>
+ <xsl:when test="contains($pidata,'blue')">class="blue"</xsl:when>
+ <xsl:when test="contains($pidata,'orange')">class="orange"</xsl:when>
+ <xsl:when test="contains($pidata,'red')">class="red"</xsl:when>
+ <xsl:when test="contains($pidata,'brown')">class="brown"</xsl:when>
+ <xsl:when test="contains($pidata,'violet')">class="violet"</xsl:when>
+ <xsl:when test="contains($pidata,'black')">class="black"</xsl:when>
+ <xsl:otherwise>class="bold"</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+<!-- blocks -->
+
+<xsl:template match="figure">
+ <div class="{name(.)}">
+ <xsl:apply-imports/>
+ </div>
+ <xsl:if test="following-sibling::*"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template match="copyright" mode="slide.footer.mode">
+ <span class="{name(.)}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges" select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<!-- ============================================================ -->
+<!-- inlines -->
+
+<xsl:template match="link">
+ <xsl:call-template name="link">
+ <xsl:with-param name="a.target" select="'foil'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="ulink">
+ <a>
+ <xsl:if test="@id">
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="@url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ <xsl:if test="@role='show'">
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="@url"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="title/ulink">
+ <a>
+ <xsl:if test="@id">
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="@url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="subtitle">
+ <h2 class="subtitle">
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="graphic">
+ <center>
+ <!-- can't this be done a better way? -->
+ <xsl:apply-imports/>
+ </center>
+</xsl:template>
+
+<xsl:template match="titleabbrev">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="speakernotes">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Chunking for slides -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="name($node)='slides'">1</xsl:when>
+ <xsl:when test="name($node)='foilgroup'">1</xsl:when>
+ <xsl:when test="name($node)='foil'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="chunk-filename">
+ <xsl:param name="recursive">0</xsl:param>
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:variable name="filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+ <xsl:variable name="dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(./parent::*)&gt;0">
+ <xsl:apply-templates mode="chunk-filename" select="./parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:if test="$dir != ''">
+ <xsl:value-of select="$dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="name(.)='foil'">
+ <xsl:variable name="foilnumber">
+ <xsl:number count="foil" level="any"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$dir"/>
+ <xsl:text>foil</xsl:text>
+ <xsl:number value="$foilnumber" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+
+ <xsl:when test="name(.)='foilgroup'">
+ <xsl:variable name="foilgroupnumber">
+ <xsl:number count="foilgroup" level="any" format="01"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$dir"/>
+ <xsl:text>foilgroup</xsl:text>
+ <xsl:number value="$foilgroupnumber" format="01"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Handling of xrefs -->
+
+<xsl:template match="foil|foilgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:*">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="foil.number">
+ <xsl:choose>
+ <xsl:when test="$show.foil.number != 0 and self::foil">
+ <xsl:number count="foil" level="any"/>
+ /
+ <xsl:value-of select="count(//foil)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ &#160;
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl
new file mode 100644
index 0000000..7d5ec6b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="blank.image" select="'blank.png'"/>
+<xsl:param name="arrow.image" select="'pointer.png'"/>
+
+<xsl:param name="toc.bg.color">#6A719C</xsl:param>
+<xsl:param name="toc.width">220</xsl:param>
+
+<xsl:param name="css.stylesheet" select="'slides-table.css'"/>
+
+<!-- ============================================================ -->
+
+<xsl:template name="foilgroup-body">
+ <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="ttoc">
+ <xsl:apply-templates select="." mode="t-toc"/>
+ </div>
+ </td>
+ <td>&#160;</td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="{name(.)}">
+ <xsl:apply-templates select="*[name(.) != 'foil' and name(.) != 'foilgroup']"/>
+ </div>
+
+ <xsl:if test="$foilgroup.toc != 0">
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </xsl:if>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<xsl:template name="foil-body">
+ <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="ttoc">
+ <xsl:apply-templates select="." mode="t-toc"/>
+ </div>
+ </td>
+ <td>&#160;</td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="foilgroup" mode="t-toc">
+ <xsl:variable name="thisfoilgroup" select="."/>
+
+ <xsl:for-each select="/slides/foil|/slides/foilgroup">
+ <xsl:choose>
+ <xsl:when test="name(.) = 'foilgroup'">
+ <xsl:choose>
+ <xsl:when test="$thisfoilgroup = .">
+ <img alt="+">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$arrow.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <span class="ttoc-foilgroup">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+
+ <xsl:if test="$thisfoilgroup = .">
+ <xsl:for-each select="foil">
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+
+ <span class="ttoc-foil">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ <span class="ttoc-foil">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="foil" mode="t-toc">
+ <xsl:variable name="thisfoil" select="."/>
+
+ <xsl:for-each select="/slides/foil|/slides/foilgroup">
+ <xsl:choose>
+ <xsl:when test="name(.) = 'foilgroup'">
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ <span class="ttoc-foilgroup">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+
+ <xsl:if test="$thisfoil/ancestor::foilgroup = .">
+ <xsl:for-each select="foil">
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+
+ <xsl:choose>
+ <xsl:when test="$thisfoil = .">
+ <img alt="+">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$arrow.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <span class="ttoc-foil">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </a>
+ </span>
+ <br/>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- foils only -->
+ <xsl:for-each select="/slides/foil">
+ <xsl:choose>
+ <xsl:when test="$thisfoil = .">
+ <img alt="+">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$arrow.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt=" ">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$blank.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span class="ttoc-foil">
+ <xsl:apply-templates select="." mode="toc-title"/>
+ </span>
+ <br/>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slides" mode="toc-title">
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="slidesinfo/titleabbrev">
+ <xsl:value-of select="slidesinfo/titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="slidesinfo/title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup" mode="toc-title">
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foil" mode="toc-title">
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="nobreak">
+ <xsl:param name="string" select="''"/>
+ <xsl:choose>
+ <xsl:when test="contains($string, ' ')">
+ <xsl:value-of select="substring-before($string, ' ')"/>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:call-template name="nobreak">
+ <xsl:with-param name="string" select="substring-after($string, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl
new file mode 100644
index 0000000..26e9961
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl
@@ -0,0 +1,652 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="but-fforward.png" select="'active/but-fforward.png'"/>
+<xsl:param name="but-info.png" select="'active/but-info.png'"/>
+<xsl:param name="but-next.png" select="'active/but-next.png'"/>
+<xsl:param name="but-prev.png" select="'active/but-prev.png'"/>
+<xsl:param name="but-rewind.png" select="'active/but-rewind.png'"/>
+
+<xsl:param name="but-xfforward.png" select="'inactive/but-fforward.png'"/>
+<xsl:param name="but-xinfo.png" select="'inactive/but-info.png'"/>
+<xsl:param name="but-xnext.png" select="'inactive/but-next.png'"/>
+<xsl:param name="but-xprev.png" select="'inactive/but-prev.png'"/>
+<xsl:param name="but-xrewind.png" select="'inactive/but-rewind.png'"/>
+
+<!-- overrides for this stylesheet -->
+<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
+<xsl:param name="toc.width" select="40"/>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slides">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $toc.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="slidesinfo/title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="/slides"/>
+ <xsl:with-param name="tocfile" select="$toc.html"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="tocpage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="next" select="/slides"/>
+ <xsl:with-param name="tocfile"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+
+ <div class="toc-body">
+ <xsl:call-template name="toc-body"/>
+ </div>
+
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="slidesinfo">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $titlefoil.html)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
+ <xsl:with-param name="tocfile" select="$toc.html"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="titlepage">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="first"/>
+ <xsl:with-param name="last" select="(following::foilgroup|following::foil)[last()]"/>
+ <xsl:with-param name="next" select="(following::foilgroup|following::foil)[1]"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ <div class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="foilgroup">
+ <xsl:param name="thisfoilgroup">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="nextfoil" select="foil[1]"/>
+ <xsl:variable name="lastfoil" select="(descendant::foil|following::foil)[last()]"/>
+ <xsl:variable name="prevfoil" select="(preceding::foil|/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="foilgroup">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="last" select="$lastfoil"/>
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="foil"/>
+</xsl:template>
+
+<xsl:template match="foil">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
+
+ <xsl:variable name="thisfoil">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="nextfoil" select="(following::foil |following::foilgroup)[1]"/>
+
+ <xsl:variable name="lastfoil" select="following::foil[last()]"/>
+
+ <xsl:variable name="prevfoil" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title><xsl:value-of select="title"/></title>
+ <xsl:if test="$css.stylesheet != ''">
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+ <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
+
+ <xsl:call-template name="links">
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <script language="javascript" type="text/javascript">
+ <xsl:text> </xsl:text>
+ </script>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbLibrary.js"/>
+ <script language="javascript" type="text/javascript">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!--
+ xblibrary = new xbLibrary('../browser');
+ // --&gt;
+ </xsl:text>
+ </script>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'javascript'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </head>
+ <body class="foil">
+ <xsl:call-template name="body.attributes"/>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="header"/></td>
+ </tr>
+
+ <tr>
+ <td width="{$toc.width}" valign="top" align="left">
+ <xsl:if test="$toc.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$toc.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="vertical-navigation">
+ <xsl:with-param name="last" select="$lastfoil"/>
+ <xsl:with-param name="prev" select="$prevfoil"/>
+ <xsl:with-param name="next" select="$nextfoil"/>
+ </xsl:call-template>
+
+ </td>
+ <td valign="top" align="left">
+ <xsl:if test="$body.bg.color != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$body.bg.color"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <div class="{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td><xsl:apply-templates select="." mode="footer"/></td>
+ </tr>
+ </table>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="slidesinfo" mode="header">
+ <div class="navhead">
+ <!-- nop -->
+ </div>
+</xsl:template>
+
+<xsl:template match="foil|foilgroup" mode="header">
+ <div class="navhead">
+ <table border="0" width="100%" summary="Header table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td align="left">
+ <xsl:apply-templates select="/slides/slidesinfo/title" mode="slide.footer.mode"/>
+ </td>
+ <td align="right">
+ <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="slidesinfo" mode="footer">
+ <div class="navfoot">
+ <!-- nop -->
+ </div>
+</xsl:template>
+
+<xsl:template match="foil|foilgroup" mode="footer">
+ <div class="navfoot">
+ <table border="0" width="100%" summary="Header table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td align="center">
+ <xsl:text>Slide </xsl:text>
+ <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
+ <xsl:text> of </xsl:text>
+ <xsl:value-of select="count(//foil) + count(//foilgroup)"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="slides" mode="footer"/>
+
+<!-- ============================================================ -->
+
+<xsl:template name="vertical-navigation">
+ <xsl:param name="first" select="/slides"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="last"/>
+ <xsl:param name="next"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="vnav">
+ <xsl:choose>
+ <xsl:when test="$first">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$first" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="First">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-rewind.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="First">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xrewind.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="Previous">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-prev.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Previous">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xprev.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="Last">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-next.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Last">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xnext.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="$last">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$last" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" alt="Next">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-fforward.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="Next">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xfforward.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <br/>
+ <br/>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile != ''">
+ <a href="{$tocfile}">
+ <img border="0" alt="ToC">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-info.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" alt="ToC">
+ <xsl:attribute name="src">
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$but-xinfo.png"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl
new file mode 100644
index 0000000..d361a33
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:import href="slides-common.xsl"/>
+
+<xsl:param name="logo.image.uri" select="''"/>
+<xsl:param name="logo.uri" select="''"/>
+<xsl:param name="logo.title" select="''"/>
+
+<xsl:param name="next.image" select="'active/w3c-next.png'"/>
+<xsl:param name="no.next.image" select="'inactive/w3c-next.png'"/>
+
+<xsl:param name="prev.image" select="'active/w3c-prev.png'"/>
+<xsl:param name="no.prev.image" select="'inactive/w3c-prev.png'"/>
+
+<xsl:param name="toc.image" select="'active/w3c-toc.png'"/>
+<xsl:param name="no.toc.image" select="'inactive/w3c-toc.png'"/>
+
+<xsl:param name="css.stylesheet" select="'slides-w3c.css'"/>
+
+<xsl:template name="logo">
+ <xsl:if test="$logo.uri != ''">
+ <a href="{$logo.uri}" title="{$logo.title}">
+ <xsl:choose>
+ <xsl:when test="$logo.image.uri=''">
+ <xsl:value-of select="$logo.title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <img src="{$logo.image.uri}" alt="{$logo.title}" border="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="overlayDiv.attributes">
+ <xsl:if test="$overlay != 0">
+ <xsl:attribute name="style">
+ <xsl:text>position: absolute; visibility: visible;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%" summary="Navigation buttons">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:call-template name="logo"/>
+ </td>
+ <td valign="top" nowrap="nowrap" width="150">
+ <div align="right">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a rel="previous" accesskey="P">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32" alt=" Previous" title="{$prev/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Previous" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile != ''">
+ <a rel="contents" href="{$tocfile}" accesskey="C">
+ <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a rel="next" accesskey="N">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32" alt=" Next" title="{$next/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Next" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+ <xsl:apply-templates select="title"/>
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="bottom-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navfoot">
+ <hr class="bottom-nav-sep"/>
+ <table class="footer" cellspacing="0" cellpadding="0" border="0" width="97%" summary="footer">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:variable name="author" select="(/slides/slidesinfo//author |/slides/slidesinfo//editor)"/>
+ <xsl:for-each select="$author">
+ <xsl:choose>
+ <xsl:when test=".//email">
+ <a href="mailto:{.//email[1]}">
+ <xsl:call-template name="person.name"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="position() &lt; last()">, </xsl:if>
+ </xsl:for-each>
+ </td>
+ <td align="right" valign="top">
+ <span class="index">
+ <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
+ <xsl:text> of </xsl:text>
+ <xsl:value-of select="count(//foil|//foilgroup)"/>
+ </span>
+ </td>
+
+ <td valign="top" nowrap="nowrap" width="150">
+ <div align="right">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a rel="previous" accesskey="P">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32" alt=" Previous" title="{$prev/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Prev" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a rel="next" accesskey="N">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32" alt=" Next" title="{$next/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Next" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="titlepage-top-nav">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <div class="navhead">
+ <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%" summary="Navigation buttons">
+ <tr>
+ <td align="left" valign="top">
+ <xsl:call-template name="logo"/>
+ </td>
+ <td valign="top" nowrap="nowrap" width="150">
+ <div align="right">
+ <xsl:choose>
+ <xsl:when test="$prev">
+ <a rel="previous" accesskey="P">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prev" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32" alt=" Previous" title="{$prev/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="prev.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Previous" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.prev.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$tocfile != ''">
+ <a rel="contents" href="{$tocfile}" accesskey="C">
+ <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="toc.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.toc.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a rel="next" accesskey="N">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$next" mode="filename"/>
+ </xsl:attribute>
+ <img border="0" width="32" height="32" alt=" Next" title="{$next/title}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="next.image"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img border="0" width="32" height="32" alt=" Next" title="">
+ <xsl:attribute name="src">
+ <xsl:call-template name="no.next.image"/>
+ </xsl:attribute>
+ </img>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </td>
+ </tr>
+ </table>
+
+ <hr class="top-nav-sep"/>
+ </div>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="foil-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <!-- skip the title -->
+ <xsl:apply-templates select="*[name(.) != 'title']"/>
+</xsl:template>
+
+<xsl:template name="foilgroup-body">
+ <xsl:param name="home"/>
+ <xsl:param name="up"/>
+ <xsl:param name="next"/>
+ <xsl:param name="prev"/>
+ <xsl:param name="tocfile" select="$toc.html"/>
+
+ <!-- skip the title -->
+ <xsl:apply-templates select="*[name(.) != 'title' and name(.) != 'foil' and name(.) != 'foilgroup']"/>
+
+ <xsl:if test="$foilgroup.toc != 0">
+ <dl class="toc">
+ <xsl:apply-templates select="foil" mode="toc"/>
+ </dl>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:*">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml
new file mode 100644
index 0000000..f1e1e3c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml
@@ -0,0 +1,478 @@
+<?xml version="1.0"?>
+
+<reference xml:id="template"><?dbhtml dir="template"?><?dbhtml filename="index.html"?>
+
+
+ <info>
+ <title>Titlepage Template Stylesheet Reference</title>
+ <releaseinfo role="meta">
+ $Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="intro_partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ “titlepage†templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="templates">
+<refnamediv>
+<refname>t:templates</refname>
+<refpurpose>Construct a stylesheet for the templates provided</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:templates"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>t:templates</literal> element is the root of a
+set of templates. This template creates an appropriate
+<literal>xsl:stylesheet</literal> for the templates.</para>
+
+
+
+<para>If the <literal>t:templates</literal> element has a
+<literal>base-stylesheet</literal> attribute, an
+<literal>xsl:import</literal> statement is constructed for it.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star">
+<refnamediv>
+<refname>xsl:*</refname>
+<refpurpose>Copy xsl: elements straight through</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="xsl:*"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template simply copies the xsl: elements
+straight through into the result tree.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage">
+<refnamediv>
+<refname>t:titlepage</refname>
+<refpurpose>Create the templates necessary to construct a title page</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The <literal>t:titlepage</literal> element creates a set of
+templates for processing the titlepage for an element. The
+<quote>root</quote> of this template set is the template named
+<quote><literal>wrapper.titlepage</literal></quote>. That is the
+template that should be called to generate the title page.
+</para>
+
+
+
+<para>The <literal>t:titlepage</literal> element has three attributes:
+
+
+<variablelist>
+<varlistentry><term>element</term>
+<listitem>
+<para>The name of the source document element for which
+these templates apply. In other words, to make a title page for the
+<tag>article</tag> element, set the
+<tag class="attribute">element</tag> attribute to
+<quote><literal>article</literal></quote>. This attribute is required.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>wrapper</term>
+<listitem>
+<para>The entire title page can be wrapped with an element.
+This attribute identifies that element.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>class</term>
+<listitem>
+<para>If the <tag class="attribute">class</tag> attribute
+is set, a <tag class="attribute">class</tag> attribute with this
+value will be added to the wrapper element that surrounds the entire
+title page.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</para>
+
+
+
+<para>Any other attributes are copied through literally to the
+wrapper element.</para>
+
+
+
+<para>The content of a <literal>t:titlepage</literal> is one or
+more <literal>t:titlepage-content</literal>,
+<literal>t:titlepage-separator</literal>, and
+<literal>t:titlepage-before</literal> elements.</para>
+
+
+
+<para>Each of these elements may be provided for the <quote>recto</quote>
+and <quote>verso</quote> sides of the title page.</para>
+
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="attr_star_in_copy.literal.atts">
+<refnamediv>
+<refname>@* (in copy.literal.atts mode)</refname>
+<refpurpose>Copy t:titlepage attributes</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="@*" mode="copy.literal.atts"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template copies all of the <quote>other</quote> attributes
+from a <literal>t:titlepage</literal> element onto the specified
+wrapper.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage-content">
+<refnamediv>
+<refname>t:titlepage-content</refname>
+<refpurpose>Create templates for the content of one side of a title page</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage-content"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The title page content, that is, the elements from the source
+document that are rendered on the title page, can be controlled independently
+for the recto and verso sides of the title page.</para>
+
+
+
+<para>The <literal>t:titlepage-content</literal> element has two attributes:
+
+
+<variablelist>
+<varlistentry><term>side</term>
+<listitem>
+<para>Identifies the side of the page to which this title
+page content applies. The
+<tag class="attribute">side</tag> attribute is required and
+must be set to either
+<quote><literal>recto</literal></quote> or
+<quote><literal>verso</literal></quote>. In addition, you must specify
+exactly one <literal>t:titlepage-content</literal> for each side
+within each <literal>t:titlepage</literal>.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>order</term>
+<listitem>
+<para>Indicates how the order of the elements presented on
+the title page is determined. If the
+<tag class="attribute">order</tag> is
+<quote><literal>document</literal></quote>, the elements are presented
+in document order. Otherwise (if the
+<tag class="attribute">order</tag> is
+<quote><literal>stylesheet</literal></quote>), the elements are presented
+in the order that they appear in the template (and consequently in
+the stylesheet).</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</para>
+
+
+
+<para>The content of a <literal>t:titlepage-content</literal> element is
+a list of element names. These names should be unqualified. They identify
+the elements in the source document that should appear on the title page.
+</para>
+
+
+
+<para>Each element may have a single attribute:
+<tag class="attribute">predicate</tag>. The value of this
+attribute is used as a predicate for the expression that matches
+the element on which it occurs.</para>
+
+
+
+<para>In other words, to put only the first three authors on the
+recto-side of a title
+page, you could specify:
+
+<screen>
+ &lt;t:titlepage-contents side="recto"&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;author predicate="[count(previous-sibling::author)&lt;2]"/&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;/t:titlepage-contents&gt;
+</screen>
+</para>
+
+
+
+<para>Usually, the elements so named are empty. But it is possible to
+make one level of selection within them. Suppose that you want to
+process <literal>authorgroup</literal> elements on the title page, but
+you want to select only proper authors, editors, or corporate authors,
+not collaborators or other credited authors.</para>
+
+
+
+<para>In that case, you can put a <literal>t:or</literal> group inside
+the <literal>authorgroup</literal> element:
+
+<screen>
+ &lt;t:titlepage-contents side="recto"&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;authorgroup&gt;
+ &lt;t:or&gt;
+ &lt;author/&gt;
+ &lt;editor/&gt;
+ &lt;corpauthor/&gt;
+ &lt;/t:or&gt;
+ &lt;/authorgroup&gt;
+ &lt;!-- other titlepage elements --&gt;
+ &lt;/t:titlepage-contents&gt;
+</screen>
+</para>
+
+
+
+<para>This will have the effect of automatically generating a template
+for processing <literal>authorgroup</literal>s in the title page mode,
+selecting only the specified children. If you need more complex processing,
+you'll have to construct the templates by hand.</para>
+
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage-separator">
+<refnamediv>
+<refname>t:titlepage-separator</refname>
+<refpurpose>Create templates for the separator</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage-separator"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The title page is separated from the content which follows it by
+the markup specified in the <literal>t:titlepage-separator</literal>
+element.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage-before">
+<refnamediv>
+<refname>t:titlepage-before</refname>
+<refpurpose>Create templates for what precedes a title page</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:titlepage-before"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Each side of the title page is preceded by the markup specified
+in the <literal>t:titlepage-before</literal> element for that
+side.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_copy">
+<refnamediv>
+<refname>* (in copy mode)</refname>
+<refpurpose>Copy elements</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="copy"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template simply copies the elements that it applies to
+straight through into the result tree.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="attr_star_in_copy">
+<refnamediv>
+<refname>@* (in copy mode)</refname>
+<refpurpose>Copy attributes</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="@*" mode="copy"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template simply copies the attributes that it applies to
+straight through into the result tree.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="attr_star_in_document.order">
+<refnamediv>
+<refname>* (in document.order mode)</refname>
+<refpurpose>Create rules to process titlepage elements in document order</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="document.order"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the hairy
+select expression necessary to process each of those elements in
+the title page.</para>
+
+
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_document.order">
+<refnamediv>
+<refname>* (in document.order mode)</refname>
+<refpurpose>Create rules to process titlepage elements in stylesheet order</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="document.order"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the set
+of <literal>xsl:apply-templates</literal> elements necessary
+process each of those elements in the title page.</para>
+
+
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_titlepage.specialrules">
+<refnamediv>
+<refname>* (in titlepage.specialrules mode)</refname>
+<refpurpose>Create templates for special rules</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="titlepage.specialrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process all of the descendants of the
+<literal>t:titlepage-content</literal> element that require special
+processing. At present, that's just <literal>t:or</literal> elements.
+</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_titlepage.subrules">
+<refnamediv>
+<refname>* (in titlepage.subrules mode)</refname>
+<refpurpose>Create template for individual special rules</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="*" mode="titlepage.subrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template is called to process the children of special
+template elements.
+</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="or">
+<refnamediv>
+<refname>t:or</refname>
+<refpurpose>Process the t:or special rule</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:or"/&gt;&lt;xsl:template match="t:or" mode="titlepage.subrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>This template processes t:or.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="or_in_titlepage.subrules">
+<refnamediv>
+<refname>t:or (in titlepage.subrules mode)</refname>
+<refpurpose>Process the t:or special rule in
+titlepage.subrules mode</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template match="t:or" mode="titlepage.subrules"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>The titlepage.subrules mode doesn't apply to t:or, so just
+reprocess this node in the normal mode.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.element-or-list">
+<refnamediv>
+<refname>element-or-list</refname>
+<refpurpose>Construct the "or-list" used in the select attribute for
+special rules.</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="element-or-list"&gt;
+&lt;xsl:param name="elements" select="*"/&gt;
+&lt;xsl:param name="element.count" select="count($elements)"/&gt;
+&lt;xsl:param name="count" select="1"/&gt;
+&lt;xsl:param name="orlist"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title>Description</title>
+
+<para>Walk through each of the children of t:or, producing the
+text of the select attribute.</para>
+
+</refsect1></refentry>
+</reference>
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl
new file mode 100644
index 0000000..ce147e3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl
@@ -0,0 +1,1280 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="doc t param exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <xsl:text>&#x0a;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#x0a;</xsl:text>
+</xsl:template>
+
+<doc:reference xmlns="" xml:id="template">
+ <?dbhtml dir="template"?>
+ <?dbhtml filename="index.html"?>
+ <info>
+ <title>Titlepage Template Stylesheet Reference</title>
+ <releaseinfo role="meta">
+ $Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="intro_partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the
+ “titlepage†templates in the DocBook XSL Stylesheets.</para>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<xsl:preserve-space elements="*"/>
+<xsl:strip-space elements="xsl:* t:*"/>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:templates" xmlns="" id="templates">
+<refpurpose>Construct a stylesheet for the templates provided</refpurpose>
+
+<refdescription>
+<para>The <literal>t:templates</literal> element is the root of a
+set of templates. This template creates an appropriate
+<literal>xsl:stylesheet</literal> for the templates.</para>
+
+<para>If the <literal>t:templates</literal> element has a
+<literal>base-stylesheet</literal> attribute, an
+<literal>xsl:import</literal> statement is constructed for it.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="t:templates">
+ <xsl:element name="xsl:stylesheet">
+
+ <xsl:for-each select="document('')/xsl:stylesheet/namespace::exsl">
+ <xsl:copy/>
+ </xsl:for-each>
+
+ <xsl:attribute name="version">1.0</xsl:attribute>
+ <xsl:attribute name="exclude-result-prefixes">exsl</xsl:attribute>
+
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:comment>
+ <xsl:text> This stylesheet was created by </xsl:text>
+ <xsl:text>template/titlepage.xsl</xsl:text>
+ </xsl:comment>
+
+ <xsl:if test="@t:base-stylesheet">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:import">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@t:base-stylesheet"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="xsl:*" xmlns="" id="star">
+<refpurpose>Copy xsl: elements straight through</refpurpose>
+
+<refdescription>
+<para>This template simply copies the xsl: elements
+straight through into the result tree.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="xsl:*">
+ <xsl:apply-templates select="." mode="copy"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage" xmlns="" id="titlepage">
+<refpurpose>Create the templates necessary to construct a title page</refpurpose>
+
+<refdescription>
+<para>The <literal>t:titlepage</literal> element creates a set of
+templates for processing the titlepage for an element. The
+<quote>root</quote> of this template set is the template named
+<quote><literal>wrapper.titlepage</literal></quote>. That is the
+template that should be called to generate the title page.
+</para>
+
+<para>The <literal>t:titlepage</literal> element has three attributes:
+
+<variablelist>
+<varlistentry><term>element</term>
+<listitem><para>The name of the source document element for which
+these templates apply. In other words, to make a title page for the
+<tag>article</tag> element, set the
+<tag class="attribute">element</tag> attribute to
+<quote><literal>article</literal></quote>. This attribute is required.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>wrapper</term>
+<listitem><para>The entire title page can be wrapped with an element.
+This attribute identifies that element.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>class</term>
+<listitem><para>If the <tag class="attribute">class</tag> attribute
+is set, a <tag class="attribute">class</tag> attribute with this
+value will be added to the wrapper element that surrounds the entire
+title page.
+</para></listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para>Any other attributes are copied through literally to the
+wrapper element.</para>
+
+<para>The content of a <literal>t:titlepage</literal> is one or
+more <literal>t:titlepage-content</literal>,
+<literal>t:titlepage-separator</literal>, and
+<literal>t:titlepage-before</literal> elements.</para>
+
+<para>Each of these elements may be provided for the <quote>recto</quote>
+and <quote>verso</quote> sides of the title page.</para>
+
+</refdescription>
+</doc:template>
+
+<xsl:template match="t:titlepage">
+ <!-- process the children to make the templates for the content,
+ separator, and before elements -->
+ <xsl:apply-templates/>
+
+ <!-- output the title page template -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="{@t:wrapper}">
+ <xsl:apply-templates select="@*" mode="copy.literal.atts"/>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:variable">
+ <xsl:attribute name="name">recto.content</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.before.recto</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.recto</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:variable">
+ <xsl:attribute name="name">recto.elements.count</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:choose">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">function-available('exsl:node-set')</xsl:attribute>
+ <xsl:element name="xsl:value-of">
+ <xsl:attribute name="select">count(exsl:node-set($recto.content)/*)</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">contains(system-property('xsl:vendor'), 'Apache Software Foundation')</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment>Xalan quirk</xsl:comment>
+ <xsl:element name="xsl:value-of">
+ <xsl:attribute name="select">count(exsl:node-set($recto.content)/*)</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:otherwise">
+ <xsl:text>1</xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:if">
+ <xsl:attribute name="test">(normalize-space($recto.content) != '') or ($recto.elements.count > 0)</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="{@t:wrapper}">
+ <xsl:apply-templates select="t:titlepage-content[@t:side='recto']/@*"
+ mode="copy.literal.atts"/>
+ <xsl:element name="xsl:copy-of">
+ <xsl:attribute name="select">$recto.content</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:variable">
+ <xsl:attribute name="name">verso.content</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.before.verso</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.verso</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:variable">
+ <xsl:attribute name="name">verso.elements.count</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:choose">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">function-available('exsl:node-set')</xsl:attribute>
+ <xsl:element name="xsl:value-of">
+ <xsl:attribute name="select">count(exsl:node-set($verso.content)/*)</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">contains(system-property('xsl:vendor'), 'Apache Software Foundation')</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment>Xalan quirk</xsl:comment>
+ <xsl:element name="xsl:value-of">
+ <xsl:attribute name="select">count(exsl:node-set($verso.content)/*)</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:otherwise">
+ <xsl:text>1</xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:if">
+ <xsl:attribute name="test">(normalize-space($verso.content) != '') or ($verso.elements.count > 0)</xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="{@t:wrapper}">
+ <xsl:apply-templates select="t:titlepage-content[@t:side='verso']/@*"
+ mode="copy.literal.atts"/>
+ <xsl:element name="xsl:copy-of">
+ <xsl:attribute name="select">$verso.content</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.separator</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+
+ <!-- If we're not importing a base stylesheet, output a default rule
+ for the recto- and verso-mode elements. (If we are importing a
+ base stylesheet, don't do this since the *-rules in the stylesheet
+ will totally override the rules that would otherwise be imported.)
+ -->
+
+ <xsl:if test="not(../@t:base-stylesheet)">
+ <!-- output a default rule for the recto-modes elements -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">*</xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.recto.mode</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> if an element isn't found in this mode, </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> try the generic titlepage.mode </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">.</xsl:attribute>
+ <xsl:attribute name="mode">titlepage.mode</xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+
+ <!-- output a default rule for the verso-modes elements -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">*</xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="@t:element"/>
+ <xsl:text>.titlepage.verso.mode</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> if an element isn't found in this mode, </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:comment> try the generic titlepage.mode </xsl:comment>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">.</xsl:attribute>
+ <xsl:attribute name="mode">titlepage.mode</xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+
+ <!-- output default templates for each of the elements listed in -->
+ <!-- the titlepage-content. If a template is suppressed or forced -->
+ <!-- to be off, or has already been output, don't output it. -->
+ <xsl:for-each select="t:titlepage-content/*">
+ <xsl:variable name="thisnode" select="."/>
+ <xsl:if test="(not(@t:suppress-template) or @t:suppress-template='0')
+ and (not(@t:force) or @t:force='0')
+ and (not(preceding-sibling::*[name(.)=name($thisnode)]))">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="{../../@t:wrapper}">
+ <xsl:attribute name="xsl:use-attribute-sets">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.style</xsl:text>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="not(starts-with(namespace-uri(.),
+ 'http://nwalsh.com/docbook/xsl/template/1.0'))">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@t:named-template">
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:named-template"/>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="xsl:with-param">
+ <xsl:attribute name="name">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">.</xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.mode</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<doc:template match="@*" mode="copy.literal.atts" xmlns=""
+ id="attr_star_in_copy.literal.atts">
+<refpurpose>Copy t:titlepage attributes</refpurpose>
+
+<refdescription>
+<para>This template copies all of the <quote>other</quote> attributes
+from a <literal>t:titlepage</literal> element onto the specified
+wrapper.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="@*" mode="copy.literal.atts">
+ <xsl:if test="not(starts-with(namespace-uri(.),
+ 'http://nwalsh.com/docbook/xsl/template/1.0'))">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage-content" id="titlepage-content">
+<refpurpose>Create templates for the content of one side of a title page</refpurpose>
+
+<refdescription>
+<para>The title page content, that is, the elements from the source
+document that are rendered on the title page, can be controlled independently
+for the recto and verso sides of the title page.</para>
+
+<para>The <literal>t:titlepage-content</literal> element has two attributes:
+
+<variablelist>
+<varlistentry><term>side</term>
+<listitem><para>Identifies the side of the page to which this title
+page content applies. The
+<tag class="attribute">side</tag> attribute is required and
+must be set to either
+<quote><literal>recto</literal></quote> or
+<quote><literal>verso</literal></quote>. In addition, you must specify
+exactly one <literal>t:titlepage-content</literal> for each side
+within each <literal>t:titlepage</literal>.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>order</term>
+<listitem><para>Indicates how the order of the elements presented on
+the title page is determined. If the
+<tag class="attribute">order</tag> is
+<quote><literal>document</literal></quote>, the elements are presented
+in document order. Otherwise (if the
+<tag class="attribute">order</tag> is
+<quote><literal>stylesheet</literal></quote>), the elements are presented
+in the order that they appear in the template (and consequently in
+the stylesheet).</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para>The content of a <literal>t:titlepage-content</literal> element is
+a list of element names. These names should be unqualified. They identify
+the elements in the source document that should appear on the title page.
+</para>
+
+<para>Each element may have a single attribute:
+<tag class="attribute">predicate</tag>. The value of this
+attribute is used as a predicate for the expression that matches
+the element on which it occurs.</para>
+
+<para>In other words, to put only the first three authors on the
+recto-side of a title
+page, you could specify:
+
+<screen><![CDATA[
+ <t:titlepage-contents side="recto">
+ <!-- other titlepage elements -->
+ <author predicate="[count(previous-sibling::author)<2]"/>
+ <!-- other titlepage elements -->
+ </t:titlepage-contents>
+]]></screen>
+</para>
+
+<para>Usually, the elements so named are empty. But it is possible to
+make one level of selection within them. Suppose that you want to
+process <literal>authorgroup</literal> elements on the title page, but
+you want to select only proper authors, editors, or corporate authors,
+not collaborators or other credited authors.</para>
+
+<para>In that case, you can put a <literal>t:or</literal> group inside
+the <literal>authorgroup</literal> element:
+
+<screen><![CDATA[
+ <t:titlepage-contents side="recto">
+ <!-- other titlepage elements -->
+ <authorgroup>
+ <t:or>
+ <author/>
+ <editor/>
+ <corpauthor/>
+ </t:or>
+ </authorgroup>
+ <!-- other titlepage elements -->
+ </t:titlepage-contents>
+]]></screen>
+</para>
+
+<para>This will have the effect of automatically generating a template
+for processing <literal>authorgroup</literal>s in the title page mode,
+selecting only the specified children. If you need more complex processing,
+you'll have to construct the templates by hand.</para>
+
+</refdescription>
+</doc:template>
+
+<xsl:template match="t:titlepage-content">
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="@t:side='recto' or @t:side='verso'">
+ <xsl:value-of select="@t:side"/>
+ </xsl:when>
+ <xsl:when test="@t:side">
+ <xsl:message terminate="yes">
+ <xsl:text>Illegal value specified for @t:side </xsl:text>
+ <xsl:text>on t:titlepage-content: </xsl:text>
+ <xsl:value-of select="@t:side"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>The @t:side attribute is required on </xsl:text>
+ <xsl:text>t:titlepage-content.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <!-- if document order is selected, make a huge select statement
+ on a single xsl:apply-templates to pick out the right elements
+ for the title page. -->
+ <xsl:when test="@t:order='document'">
+ <xsl:if test="count(child::*)&gt;0">
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:apply-templates mode="document.order"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:when>
+
+ <!-- otherwise, select each of the elements in the specified order -->
+ <xsl:otherwise>
+ <xsl:apply-templates mode="stylesheet.order"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ <xsl:apply-templates mode="titlepage.specialrules"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage-separator" id="titlepage-separator">
+<refpurpose>Create templates for the separator</refpurpose>
+
+<refdescription>
+<para>The title page is separated from the content which follows it by
+the markup specified in the <literal>t:titlepage-separator</literal>
+element.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="t:titlepage-separator">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.separator</xsl:text>
+ </xsl:attribute>
+
+ <xsl:apply-templates mode="copy"/>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:titlepage-before" id="titlepage-before">
+<refpurpose>Create templates for what precedes a title page</refpurpose>
+
+<refdescription>
+<para>Each side of the title page is preceded by the markup specified
+in the <literal>t:titlepage-before</literal> element for that
+side.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="t:titlepage-before">
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="../@t:element"/>
+ <xsl:text>.titlepage.before.</xsl:text>
+ <xsl:value-of select="@t:side"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates mode="copy"/>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="copy" xmlns="" id="star_in_copy">
+<refpurpose>Copy elements</refpurpose>
+
+<refdescription>
+<para>This template simply copies the elements that it applies to
+straight through into the result tree.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="*" mode="copy">
+ <xsl:element name="{name(.)}">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates mode="copy"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="@*" mode="copy" xmlns="" id="attr_star_in_copy">
+<refpurpose>Copy attributes</refpurpose>
+
+<refdescription>
+<para>This template simply copies the attributes that it applies to
+straight through into the result tree.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="document.order" xmlns="" id="attr_star_in_document.order">
+<refpurpose>Create rules to process titlepage elements in document order</refpurpose>
+
+<refdescription>
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the hairy
+select expression necessary to process each of those elements in
+the title page.</para>
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+</refdescription>
+</doc:template>
+
+<xsl:template match="*" mode="document.order">
+ <xsl:variable name="docinfo">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>info</xsl:text>
+ </xsl:variable>
+
+ <xsl:variable name="altinfo">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage/@t:element='article'">
+ <xsl:text>artheader</xsl:text>
+ </xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='qandaset'">
+ <xsl:text>blockinfo</xsl:text>
+ </xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='section'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect1'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect2'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect3'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect4'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect5'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='book'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='set'"></xsl:when>
+ <xsl:otherwise>docinfo</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>recto</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+
+ <xsl:if test="$altinfo != ''">
+ <xsl:text>|</xsl:text>
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- info -->
+ <xsl:text>|info</xsl:text>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+
+ <xsl:if test="local-name(.) = 'title'
+ or local-name(.) = 'subtitle'
+ or local-name(.) = 'titleabbrev'">
+ <xsl:text>|</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="document.order" xmlns="" id="star_in_document.order">
+<refpurpose>Create rules to process titlepage elements in stylesheet order</refpurpose>
+
+<refdescription>
+<para>This template is called to process all of the children of the
+<literal>t:titlepage-content</literal> element. It creates the set
+of <literal>xsl:apply-templates</literal> elements necessary
+process each of those elements in the title page.</para>
+
+<para>Note that this template automatically handles the case where
+some DocBook elements, like title and subtitle, can occur both inside
+the *info elements where metadata is usually stored and outside.
+</para>
+
+<para>It also automatically calculates the name for the *info container
+and handles elements that have historically had containers with different
+names.</para>
+
+</refdescription>
+</doc:template>
+
+<xsl:template match="*" mode="stylesheet.order">
+ <xsl:variable name="docinfo">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>info</xsl:text>
+ </xsl:variable>
+
+ <xsl:variable name="altinfo">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage/@t:element='article'">
+ <xsl:text>artheader</xsl:text>
+ </xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='qandaset'">
+ <xsl:text>blockinfo</xsl:text>
+ </xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='section'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect1'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect2'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect3'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect4'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='sect5'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='book'"></xsl:when>
+ <xsl:when test="ancestor::t:titlepage/@t:element='set'"></xsl:when>
+ <xsl:otherwise>docinfo</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:text>&#xA; </xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@t:force and @t:force != '0'">
+ <xsl:choose>
+ <xsl:when test="@t:named-template">
+ <xsl:element name="{../../@t:wrapper}">
+ <xsl:attribute name="xsl:use-attribute-sets">
+ <xsl:value-of select="../../@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="../@t:side"/>
+ <xsl:text>.style</xsl:text>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="not(starts-with(namespace-uri(.),
+ 'http://nwalsh.com/docbook/xsl/template/1.0'))">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="xsl:call-template">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@t:named-template"/>
+ </xsl:attribute>
+ <xsl:for-each select="@*">
+ <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:element name="xsl:with-param">
+ <xsl:attribute name="name">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Force can only be used with named-templates.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'title'
+ or local-name(.) = 'subtitle'
+ or local-name(.) = 'titleabbrev'">
+ <!-- the title, subtitle, and titleabbrev elements are special -->
+ <xsl:element name="xsl:choose">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+
+ <xsl:if test="$altinfo != ''">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ </xsl:if>
+
+ <!-- info -->
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">
+ <xsl:value-of select="'info'"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="'info'"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:when">
+ <xsl:attribute name="test">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA; </xsl:text>
+ </xsl:element>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+
+ <!-- first take care of the $docinfo version -->
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$docinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- then take care of the $altinfo version -->
+ <xsl:if test="$altinfo != ''">
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="$altinfo"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+
+ <!-- info -->
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:attribute name="select">
+ <xsl:value-of select="'info'"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@t:predicate">
+ <xsl:value-of select="@t:predicate"/>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="titlepage.specialrules" xmlns=""
+ id="star_in_titlepage.specialrules">
+<refpurpose>Create templates for special rules</refpurpose>
+
+<refdescription>
+<para>This template is called to process all of the descendants of the
+<literal>t:titlepage-content</literal> element that require special
+processing. At present, that's just <literal>t:or</literal> elements.
+</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="*" mode="titlepage.specialrules">
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="name(.)='t:or'">
+ <xsl:apply-templates select="*" mode="titlepage.specialrules"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="*"><!-- does this element have children? -->
+ <xsl:text>&#xA;&#xA;</xsl:text>
+ <xsl:element name="xsl:template">
+ <xsl:attribute name="match">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="*" mode="titlepage.subrules"/>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="*" mode="titlepage.subrules" xmlns=""
+ id="star_in_titlepage.subrules">
+<refpurpose>Create template for individual special rules</refpurpose>
+
+<refdescription>
+<para>This template is called to process the children of special
+template elements.
+</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="*" mode="titlepage.subrules">
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">
+ <xsl:value-of select="name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:or" xmlns="" id="or">
+<refpurpose>Process the t:or special rule</refpurpose>
+
+<refdescription>
+<para>This template processes t:or.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="t:or">
+ <xsl:variable name="side">
+ <xsl:choose>
+ <xsl:when test="ancestor::t:titlepage-content/@t:side">
+ <xsl:value-of select="ancestor::t:titlepage-content/@t:side"/>
+ </xsl:when>
+ <xsl:otherwise>recto</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="mode">
+ <xsl:value-of select="ancestor::t:titlepage/@t:element"/>
+ <xsl:text>.titlepage.</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>.auto.mode</xsl:text>
+ </xsl:variable>
+
+ <xsl:text>&#xA; </xsl:text>
+ <xsl:element name="xsl:apply-templates">
+ <xsl:attribute name="select">
+ <xsl:call-template name="element-or-list"/>
+ </xsl:attribute>
+ <xsl:attribute name="mode">
+ <xsl:value-of select="$mode"/>
+ </xsl:attribute>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template match="t:or" mode="titlepage.subrules" xmlns=""
+ id="or_in_titlepage.subrules">
+<refpurpose>Process the t:or special rule in
+titlepage.subrules mode</refpurpose>
+
+<refdescription>
+<para>The titlepage.subrules mode doesn't apply to t:or, so just
+reprocess this node in the normal mode.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template match="t:or" mode="titlepage.subrules">
+ <xsl:apply-templates select="."/><!-- use normal mode -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:template name="element-or-list" xmlns="">
+<refpurpose>Construct the "or-list" used in the select attribute for
+special rules.</refpurpose>
+
+<refdescription>
+<para>Walk through each of the children of t:or, producing the
+text of the select attribute.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="element-or-list">
+ <xsl:param name="elements" select="*"/>
+ <xsl:param name="element.count" select="count($elements)"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="orlist"></xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>$element.count">
+ <xsl:value-of select="$orlist"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="element-or-list">
+ <xsl:with-param name="elements" select="$elements"/>
+ <xsl:with-param name="element.count" select="$element.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="orlist">
+ <xsl:value-of select="$orlist"/>
+ <xsl:if test="not($orlist='')">|</xsl:if>
+ <xsl:value-of select="name($elements[position()=$count])"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml
new file mode 100644
index 0000000..f66d6e0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml
@@ -0,0 +1,325 @@
+<book xmlns="http://docbook.org/ns/docbook" version="5.0">
+<info><title>Unit Test: refentry.007</title>
+
+<releaseinfo role="CVS">$Id: refentry.007.xml 7282 2007-08-23 09:27:01Z xmldoc $</releaseinfo>
+<author><personname><firstname>Norman</firstname><surname>Walsh</surname></personname><affiliation><address><email>ndw@nwalsh.com</email></address></affiliation></author>
+</info>
+<reference><info><title>Reference</title></info>
+
+<refentry>
+ <info>
+ <authorgroup>
+ <author><personname><firstname>Norman</firstname><surname>Walsh</surname></personname><email>ndw@nwalsh.com</email><personblurb>
+ <para>Wrote the original version of this document.</para>
+ </personblurb></author>
+ <editor><personname><firstname>Michael(tm)</firstname><surname>Smith</surname></personname><contrib>Added a bunch of test cases.</contrib><email>smith@sideshowbarker.net</email></editor>
+ </authorgroup>
+ <copyright>
+ <year>2003</year>
+ <holder>Norman Walsh</holder>
+ </copyright>
+ <copyright>
+ <year>2006</year>
+ <holder>Michael(tm) Smith</holder>
+ </copyright>
+ <legalnotice>
+ <para>This file is a product of the DocBook Project.</para>
+ </legalnotice>
+ <legalnotice>
+ <para>Share and share alike.</para>
+ </legalnotice>
+ </info>
+<refnamediv>
+<refname>FirstName</refname>
+<refname>SecondName</refname>
+<refpurpose>Purpose for FirstName</refpurpose>
+</refnamediv>
+
+<refnamediv>
+<refname>ThirdName</refname>
+<refpurpose>Purpose for ThirdName</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <?dbfunclist ?>
+ <funcsynopsis>
+ <!-- * Yes, friend, Funcsynopsis is a verbatim -->
+ <funcsynopsisinfo>#include &lt;varargs.h&gt;
+#include &lt;mouteyh.h&gt;
+#include &lt;qlmppzj.h&gt;</funcsynopsisinfo>
+ <funcprototype>
+ <funcdef><type>float</type> <function>rand</function></funcdef>
+ <void/>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>max</function></funcdef>
+ <varargs/>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>idiv</function></funcdef>
+ <paramdef><type>int</type> <parameter>n</parameter></paramdef>
+ <paramdef><type>int</type> <parameter>m</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+
+ <para>Another.</para>
+
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void <function>qsort</function></funcdef>
+ <paramdef>void *<parameter>dataptr</parameter>[]</paramdef>
+ <paramdef>int <parameter>left</parameter></paramdef>
+ <paramdef>int <parameter>right</parameter></paramdef>
+ <paramdef>int (*<parameter>comp</parameter>)
+ <funcparams>void *, void *</funcparams></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>foo_frob_something</function></funcdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm1</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm2</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm3</parameter></paramdef>
+ <paramdef><type>int</type> (* <parameter>parm4</parameter> )
+ <funcparams>int a, int b, int c</funcparams>
+ </paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm5</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>foo_frob_something</function></funcdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm1</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm2</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm3</parameter></paramdef>
+ <paramdef><type>int</type> (* <parameter>parm4</parameter> )
+ <funcparams>int a, int b, int c</funcparams>
+ </paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm5</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This is a minimal RefEntry.</para>
+
+<para>The following is a Variablelist with a title.
+<variablelist><info><title>My variablelist</title></info>
+
+ <varlistentry>
+ <term>varlistentry term 1</term>
+ <listitem><para>some listitem text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>varlistentry term 2</term>
+ <listitem><para>some more listitem text</para></listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<refsection><info><title>Subsection</title></info>
+
+<para>This is a minimal RefEntry.</para>
+
+<para>The following is a Variablelist with a title and a nested variablelist
+ <glosslist>
+
+ <glossentry>
+ <glossterm>glossentry term 1</glossterm>
+ <glossdef><para>some glossdef text</para></glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm>glossentry term 2</glossterm>
+ <glossdef>
+ <variablelist>
+ <varlistentry>
+ <term>nested variablelist term 1</term>
+ <listitem><para>some variablelist text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nested variablelist term 2</term>
+ <listitem><para>some more variablelist text</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+</para>
+
+<refsection><info><title>Sub-subsection</title></info>
+
+<para>This is a minimal RefEntry.</para>
+</refsection>
+</refsection>
+</refsection>
+
+<refsection><info><title>More Description</title></info>
+
+<para>This is a not-so minimal RefEntry.</para>
+<screen>
+This is a screen [break here]
+that starts with a line of space. [break here]
+And it ends with a line of space.
+</screen>
+
+<para>normal paragraph here</para>
+
+<screen>This is a screen [break here]
+that does not start with a line of space. [break here]
+And does not end with a line of space.</screen>
+
+<para>This is a normal paragraph that contains a screen.
+<screen>This is a screen within a normal paragraph [break here]
+that does not start with a line of space. [break here]
+And does not end with a line of space but is followed
+by a line of space.</screen>
+</para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>This is a screen within a normal paragraph [break here]
+that does not start with a line of space. [break here]
+And does not end with a line of space and is not followed
+by a line of space.</screen></para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>
+This is a screen within a normal paragraph [break here]
+that starts with a line of space. [break here]
+And ends with a line of space but is not followed by a line of space.
+</screen></para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>
+This is a screen within a normal paragraph [break here]
+that starts with a line of space. [break here]
+And ends with a line of space and is followed by a line of space.
+</screen>
+</para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>
+
+This is a screen within a normal paragraph [break here]
+that starts with a 2 lines of space. [break here]
+And ends with 3 lines of space and is followed by a line of space.
+
+
+</screen>
+</para>
+
+<para>This paragraph contains an itemizedlist with a title. The title
+is “Mrignkwolmcngâ€.
+<orderedlist inheritnum="ignore" continuation="restarts"><info><title>Mrignkwolmcng</title></info>
+
+ <listitem>
+ <para>itemizedlist listitem 1</para>
+ </listitem>
+ <listitem>
+ <para>itemizedlist listitem 2</para>
+ </listitem>
+</orderedlist>
+
+This is some useless text that follows the “Mrignkwolmcng†orderedlist
+in the same para.</para>
+
+<para>The following is a Variablelist with a title and with a nested itemizedlist.
+<variablelist><info><title>My variablelist</title></info>
+
+ <varlistentry>
+ <term>varlistentry term 1</term>
+ <listitem>
+ <itemizedlist><info><title>nested itemizedlist</title></info>
+
+ <listitem>
+ <para>itemizedlist listitem 1</para>
+ </listitem>
+ <listitem>
+ <para>itemizedlist listitem 2</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>varlistentry term 2</term>
+ <listitem><para>some more listitem text</para></listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+<para>The following is a Variablelist with a title and with a
+nested Varlistentry that contains multiple Terms
+<variablelist><info><title>My nested-multi-term-per-varlistentry variablelist</title></info>
+
+ <varlistentry>
+ <term>Varlistentry term 1</term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term> varlistentry term 1.1</term>
+ <term>varlistentry term 1.2 </term>
+ <term>varlistentry term 1.3</term>
+ <listitem><para>All 'bout terms 1.1, 1.2, and 1.3</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>varlistentry term 2</term>
+ <listitem><para>some more listitem text</para></listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+<refsection><info><title>Subsection</title></info>
+
+<para>This is a minimal RefEntry.</para>
+</refsection>
+</refsection>
+
+<refsection><info><title>Even More Description</title></info>
+
+<para>This is an even less minimal RefEntry.</para>
+
+<para>This is a paragraph. It contains the following segmentedlist,
+titled “Gibbererishâ€, with several segtitle elements.
+<segmentedlist>
+
+ <segtitle>Floober</segtitle>
+ <segtitle>Buugler</segtitle>
+ <segtitle>Sstangooo</segtitle>
+ <segtitle>Borobinda</segtitle>
+ <seglistitem>
+ <seg>Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda</seg>
+ <seg>Mondorotoluafu</seg>
+ <seg>Ganafutralinga</seg>
+ <seg>Patagularamakundra</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg>Cadraracondar</seg>
+ <seg>Hentirotomaambu</seg>
+ <seg>BdomentriolaiaBdomentriolaiaBdomentriolaia</seg>
+ <seg>Candamalaturuanio</seg>
+ </seglistitem>
+</segmentedlist>
+This is some text that follows the segementedlist within the same
+paragraph. The next part of this same paragraph is an
+<tag>important</tag> admonition.
+<important>
+ <para>It is very important that you read this. That’s why it stands
+ out the way that it does.</para>
+</important>
+</para>
+
+<para>This is a para with a footnote
+ <footnote><para>Stuff here <programlisting>This is a program listing
+that's two lines long.</programlisting></para>
+ and stuff after the
+footnote</footnote></para>
+</refsection>
+
+</refentry>
+</reference>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml
new file mode 100644
index 0000000..4521376
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
+<book>
+<bookinfo>
+<title>Unit Test: refentry.007</title>
+<releaseinfo role="CVS">$Id: refentry.007.xml 7282 2007-08-23 09:27:01Z xmldoc $</releaseinfo>
+<author><firstname>Norman</firstname><surname>Walsh</surname>
+ <affiliation><address><email>ndw@nwalsh.com</email></address></affiliation>
+</author>
+</bookinfo>
+<reference>
+<title>Reference</title>
+<refentry>
+ <refentryinfo>
+ <authorgroup>
+ <author>
+ <firstname>Norman</firstname><surname>Walsh</surname>
+ <email>ndw@nwalsh.com</email>
+ <personblurb>
+ <para>Wrote the original version of this document.</para>
+ </personblurb>
+ </author>
+ <editor>
+ <contrib>Added a bunch of test cases.</contrib>
+ <firstname>Michael(tm)</firstname><surname>Smith</surname>
+ <email>smith@sideshowbarker.net</email>
+ </editor>
+ </authorgroup>
+ <copyright>
+ <year>2003</year>
+ <holder>Norman Walsh</holder>
+ </copyright>
+ <copyright>
+ <year>2006</year>
+ <holder>Michael(tm) Smith</holder>
+ </copyright>
+ <legalnotice>
+ <para>This file is a product of the DocBook Project.</para>
+ </legalnotice>
+ <legalnotice>
+ <para>Share and share alike.</para>
+ </legalnotice>
+ </refentryinfo>
+<refnamediv>
+<refname>FirstName</refname>
+<refname>SecondName</refname>
+<refpurpose>Purpose for FirstName</refpurpose>
+</refnamediv>
+
+<refnamediv>
+<refname>ThirdName</refname>
+<refpurpose>Purpose for ThirdName</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <?dbfunclist ?>
+ <funcsynopsis>
+ <!-- * Yes, friend, Funcsynopsis is a verbatim -->
+ <funcsynopsisinfo
+>#include &lt;varargs.h&gt;
+#include &lt;mouteyh.h&gt;
+#include &lt;qlmppzj.h&gt;</funcsynopsisinfo>
+ <funcprototype>
+ <funcdef><type>float</type> <function>rand</function></funcdef>
+ <void/>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>max</function></funcdef>
+ <varargs/>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>idiv</function></funcdef>
+ <paramdef><type>int</type> <parameter>n</parameter></paramdef>
+ <paramdef><type>int</type> <parameter>m</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+
+ <para>Another.</para>
+
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void <function>qsort</function></funcdef>
+ <paramdef>void *<parameter>dataptr</parameter>[]</paramdef>
+ <paramdef>int <parameter>left</parameter></paramdef>
+ <paramdef>int <parameter>right</parameter></paramdef>
+ <paramdef>int (*<parameter>comp</parameter>)
+ <funcparams>void *, void *</funcparams></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>foo_frob_something</function></funcdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm1</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm2</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm3</parameter></paramdef>
+ <paramdef><type>int</type> (* <parameter>parm4</parameter> )
+ <funcparams>int a, int b, int c</funcparams>
+ </paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm5</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>foo_frob_something</function></funcdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm1</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm2</parameter></paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm3</parameter></paramdef>
+ <paramdef><type>int</type> (* <parameter>parm4</parameter> )
+ <funcparams>int a, int b, int c</funcparams>
+ </paramdef>
+ <paramdef>foo_sometype1 <parameter>foo_frob_parm5</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Description</title>
+<para>This is a minimal RefEntry.</para>
+
+<para>The following is a Variablelist with a title.
+<variablelist>
+ <title>My variablelist</title>
+ <varlistentry>
+ <term>varlistentry term 1</term>
+ <listitem><para>some listitem text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>varlistentry term 2</term>
+ <listitem><para>some more listitem text</para></listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<refsect2>
+<title>Subsection</title>
+<para>This is a minimal RefEntry.</para>
+
+<para>The following is a Variablelist with a title and a nested variablelist
+ <glosslist>
+ <title>My glosslist</title>
+ <glossentry>
+ <glossterm>glossentry term 1</glossterm>
+ <glossdef><para>some glossdef text</para></glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm>glossentry term 2</glossterm>
+ <glossdef>
+ <variablelist>
+ <varlistentry>
+ <term>nested variablelist term 1</term>
+ <listitem><para>some variablelist text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nested variablelist term 2</term>
+ <listitem><para>some more variablelist text</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+</para>
+
+<refsect3>
+<title>Sub-subsection</title>
+<para>This is a minimal RefEntry.</para>
+</refsect3>
+</refsect2>
+</refsect1>
+
+<refsect1>
+<title>More Description</title>
+<para>This is a not-so minimal RefEntry.</para>
+<screen>
+This is a screen [break here]
+that starts with a line of space. [break here]
+And it ends with a line of space.
+</screen>
+
+<para>normal paragraph here</para>
+
+<screen>This is a screen [break here]
+that does not start with a line of space. [break here]
+And does not end with a line of space.</screen>
+
+<para>This is a normal paragraph that contains a screen.
+<screen>This is a screen within a normal paragraph [break here]
+that does not start with a line of space. [break here]
+And does not end with a line of space but is followed
+by a line of space.</screen>
+</para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>This is a screen within a normal paragraph [break here]
+that does not start with a line of space. [break here]
+And does not end with a line of space and is not followed
+by a line of space.</screen></para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>
+This is a screen within a normal paragraph [break here]
+that starts with a line of space. [break here]
+And ends with a line of space but is not followed by a line of space.
+</screen></para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>
+This is a screen within a normal paragraph [break here]
+that starts with a line of space. [break here]
+And ends with a line of space and is followed by a line of space.
+</screen>
+</para>
+
+<para>This is another normal paragraph that contains a screen.
+<screen>
+
+This is a screen within a normal paragraph [break here]
+that starts with a 2 lines of space. [break here]
+And ends with 3 lines of space and is followed by a line of space.
+
+
+</screen>
+</para>
+
+<para>This paragraph contains an itemizedlist with a title. The title
+is “Mrignkwolmcngâ€.
+<orderedlist>
+ <title>Mrignkwolmcng</title>
+ <listitem>
+ <para>itemizedlist listitem 1</para>
+ </listitem>
+ <listitem>
+ <para>itemizedlist listitem 2</para>
+ </listitem>
+</orderedlist>
+
+This is some useless text that follows the “Mrignkwolmcng†orderedlist
+in the same para.</para>
+
+<para>The following is a Variablelist with a title and with a nested itemizedlist.
+<variablelist>
+ <title>My variablelist</title>
+ <varlistentry>
+ <term>varlistentry term 1</term>
+ <listitem>
+ <itemizedlist>
+ <title>nested itemizedlist</title>
+ <listitem>
+ <para>itemizedlist listitem 1</para>
+ </listitem>
+ <listitem>
+ <para>itemizedlist listitem 2</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>varlistentry term 2</term>
+ <listitem><para>some more listitem text</para></listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+<para>The following is a Variablelist with a title and with a
+nested Varlistentry that contains multiple Terms
+<variablelist>
+ <title>My nested-multi-term-per-varlistentry variablelist</title>
+ <varlistentry>
+ <term>Varlistentry term 1</term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term> varlistentry term 1.1</term>
+ <term>varlistentry term 1.2 </term>
+ <term>varlistentry term 1.3</term>
+ <listitem><para>All 'bout terms 1.1, 1.2, and 1.3</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>varlistentry term 2</term>
+ <listitem><para>some more listitem text</para></listitem>
+ </varlistentry>
+</variablelist>
+</para>
+
+<refsect2>
+<title>Subsection</title>
+<para>This is a minimal RefEntry.</para>
+</refsect2>
+</refsect1>
+
+<refsect1>
+<title>Even More Description</title>
+<para>This is an even less minimal RefEntry.</para>
+
+<para>This is a paragraph. It contains the following segmentedlist,
+titled “Gibbererishâ€, with several segtitle elements.
+<segmentedlist>
+ <title>Gibbererish</title>
+ <segtitle>Floober</segtitle>
+ <segtitle>Buugler</segtitle>
+ <segtitle>Sstangooo</segtitle>
+ <segtitle>Borobinda</segtitle>
+ <seglistitem>
+ <seg>Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda</seg>
+ <seg>Mondorotoluafu</seg>
+ <seg>Ganafutralinga</seg>
+ <seg>Patagularamakundra</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg>Cadraracondar</seg>
+ <seg>Hentirotomaambu</seg>
+ <seg>BdomentriolaiaBdomentriolaiaBdomentriolaia</seg>
+ <seg>Candamalaturuanio</seg>
+ </seglistitem>
+</segmentedlist>
+This is some text that follows the segementedlist within the same
+paragraph. The next part of this same paragraph is an
+<sgmltag>important</sgmltag> admonition.
+<important>
+ <para>It is very important that you read this. That’s why it stands
+ out the way that it does.</para>
+</important>
+</para>
+
+<para>This is a para with a footnote
+ <footnote
+ ><para>Stuff here <programlisting>This is a program listing
+that's two lines long.</programlisting></para>
+ and stuff after the
+footnote</footnote></para>
+</refsect1>
+
+</refentry>
+</reference>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update
new file mode 100644
index 0000000..0d44f56
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update
@@ -0,0 +1,53 @@
+#!/bin/bash
+# vim: number
+
+# docbook-xsl-update - Update environment to latest docbook-xsl snapshot
+# $Id: docbook-xsl-update 6565 2007-01-29 23:00:16Z xmldoc $
+
+if [ -z $DOCBOOK_MIRROR ]; then
+ myhost=docbook.xml-doc.org:5873;
+else
+ myhost=$DOCBOOK_MIRROR;
+fi
+
+mydir=$(readlink -f $(dirname $0))
+mydocbook_xsl_base=$(readlink -f $(dirname $0)/../..)
+
+if [ ! -f $mydocbook_xsl_base/VERSION ]; then
+ cat <<- EOF
+$(basename $0): error: not in snapshot directory. Stopping.
+
+The $(basename $0) script must be installed within its original
+location in the tools/bin directory in the docbook-xsl distribution.
+EOF
+ exit 1
+fi
+
+usage="Usage:
+
+ $(basename $0) [-h HOST[:PORT]]
+
+ -h HOST[:PORT] Specifies the rsync host and port number to use.
+ If not specified, uses the value of the
+ \$DOCBOOK_MIRROR environment variable. If that
+ environment variable is not specified, defaults
+ to a hard-coded value.
+
+"
+
+while getopts "h:" opt; do
+ case $opt in
+ h ) myhost=$OPTARG ;;
+ \? ) printf "$usage"
+ printf "$opts_admon"
+ exit 1 ;;
+ esac
+done
+
+shift $(($OPTIND - 1))
+
+if [ -z $myhost ]; then
+ myhost=$DOCBOOK_MIRROR
+fi
+
+rsync -auv rsync://$myhost/xsl $mydocbook_xsl_base
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook
new file mode 100644
index 0000000..242066e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook
@@ -0,0 +1,698 @@
+# $Source$
+# $Author: xmldoc $
+# $Date: 2008-03-03 01:20:29 -0800 (Mon, 03 Mar 2008) $
+# $Revision: 7787 $
+# vim: number
+#
+# -----------------------------------------------------------------
+# ** Makefile.DocBook -- generate output from DocBook sources **
+# -----------------------------------------------------------------
+#
+# This file is part of the DocBook Project XSL Stylesheet
+# distribution.
+#
+# See http://docbook.sourceforge.net/release/xsl/current/
+# for copyright and other information.
+
+# DOCBOOK_OUTPUT_FORMATS is the default set of targets (output
+# formats) that get built when you type "make" without any targets
+# explicitly specified. To generate a different set of output
+# formats, change the value of DOCBOOK_OUTPUT_FORMATS here or set
+# it in your environment; for example:
+#
+# set DOCBOOK_OUTPUT_FORMATS="html pdf"; export DOCBOOK_OUTPUT_FORMATS
+#
+# Of course by explicitly specifying particular targets when you
+# invoke "make", you can always override generation of the default
+# set of targets; for example:
+#
+# make html txt
+#
+# That would generate just HTML (unchunked) and plain-text output.
+#
+DOCBOOK_OUTPUT_FORMATS ?= xml man man-pdf chunk txt pdf
+
+# If you want XHTML output instead of HTML, set HTML_OR_XHTML to
+# 'xhtml' or just specify 'xhtml" in DOCBOOK_OUTPUT_FORMATS.
+ifeq ($(findstring xhtml,$(DOCBOOK_OUTPUT_FORMATS)),)
+HTML_OR_XHTML ?= html
+else
+HTML_OR_XHTML ?= xhtml
+endif
+
+# if your source is in asciidoc instead of DocBook, set
+# ASCII_OR_DOCBOOK to "ascii"
+ASCII_OR_DOCBOOK ?= docbook
+
+# -----------------------------------------------------------------
+# *** TOOLS and other DEPENDENCIES ***
+# -----------------------------------------------------------------
+# we use rmdir(1) to remove dirs we create for chunked HTML output
+RMDIR = rmdir
+# "-p" causes empty parent dirs to be deleted as well
+RMDIR_FLAGS = --ignore-fail-on-non-empty -p
+
+# possible values for PDF_MAKER are:
+# dblatex|fop|xep|xmlroff|passivetex
+PDF_MAKER = dblatex
+
+# possible values for TXT_MAKER are:
+# links|lynx|w3m|w3mmee
+TXT_MAKER = links
+TXT_MAKER_FLAGS = -dump
+
+# xsl
+XSLT = xsltproc
+XSLT_FLAGS = --xinclude
+
+# http://dblatex.sourceforge.net/
+DBLATEX = dblatex
+DBLATEX_FLAGS = -b pdftex
+
+FOP = fop
+FOP_FLAGS =
+
+XEP = xep
+XEP_FLAGS =
+
+# http://xmlroff.sourceforge.net/
+XMLROFF = xmlroff
+XMLROFF_FLAGS =
+
+PDFTEX = pdftex
+PDFTEX_FLAGS =
+
+# used by PassiveTeX
+PDFXMLTEX = pdfxmltex
+
+# http://docbook2x.sourceforge.net/
+DB2X_XSLTPROC = db2x_xsltproc
+DB2X_XSLTPROC_FLAGS =
+DB2X_TEXIXML = db2x_texixml
+DB2X_TEXIXML_FLAGS =
+
+# we call the man(1) command to generate "foo.N.pdf" and
+# "foo.N.txt" output (see "man-pdf" & "man-txt" targets)
+MAN = man
+MAN_FLAGS =
+
+# The "ps2pdf" command is part of GhostSript (gs) distro.
+# It is just a wrapper script around gs that does this:
+#
+# gs -dCompatibilityLevel=1.2 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
+# "-sOutputFile=$outfile" -dCompatibilityLevel=1.2 -c .setpdfwrite -f "$infile"
+#
+# Where, for example: $outfile = foo.pdf and $infile = foo.1
+PS2PDF = ps2pdf
+PS2PDF_FLAGS =
+
+# asciidoc is used to generate DocBook XML from asciidoc source
+ASCIIDOC=asciidoc
+ASCIIDOCFLAGS=
+
+# asciidoc source seems to have DOS line endings, so we use
+# DOS2UNIX to be able to grep them correctly
+DOS2UNIX=dos2unix
+DOS2UNIXFLAGS=
+
+# The "col" command is needed for stripping backspaces and
+# underscores from man(1) output to get pure plain-text
+COL = col
+COL_FLAGS =
+
+# The "expand" command is needed for expanding tabs from files
+# generated from "man foo.1 | col -b" output
+# output to get pure plain-text
+EXPAND = expand
+EXPAND_FLAGS =
+
+# value of DOCBOOK_XSL should either be the canonical
+# (docbook.sourceforge.net) URL for the DocBook Project XSL
+# stylesheets OR it can be a local system path
+DOCBOOK_XSL = http://docbook.sourceforge.net/release/xsl/current
+
+# -----------------------------------------------------------------
+# names of some DIRECTORIES and FILES we need
+# -----------------------------------------------------------------
+# We create a tmp directory once per make invocation; it's needed
+# for holding a temporary copy of the custom DBLaTeX stylesheet
+# (because dblatex currently can't read a stylesheet from stdin)
+TMP ?= /tmp
+TMPNUM := $(shell echo $$$$)
+DOCBOOK_TMP := $(TMP)/docbook-make-$(TMPNUM)
+
+# MAN_MANIFEST_EXT is file extension added to individual manifest
+# files
+MAN_MANIFEST_EXT = manifest_man
+
+# HTML_MANIFEST_EXT is file extension added to HTML manifest files
+HTML_MANIFEST_EXT = manifest_html
+
+# BASEDIR_SUFFIX is a what you need to set if you want a suffix
+# added to the end of each "base.dir" we create while generating
+# chunked HTML output
+#BASEDIR_SUFFIX = -html
+#BASEDIR_SUFFIX = _html
+BASEDIR_SUFFIX =
+
+# -----------------------------------------------------------------
+# assorted OPTIONS
+# -----------------------------------------------------------------
+# HTML_STYLESHEET -> $html.stylesheet stylesheet param
+# http://docbook.sourceforge.net/snapshots/xsl/doc/html/html.stylesheet.html
+HTML_STYLESHEET = style.css
+# HTML_IMAGES -> $admon.graphics.path
+# http://docbook.sourceforge.net/snapshots/xsl/doc/html/admon.graphics.path.html
+HTML_IMAGES = images/
+# HTML_IMAGES_EXT -> $admon.graphics.extension
+# http://docbook.sourceforge.net/snapshots/xsl/doc/html/admon.graphics.extension.html
+HTML_IMAGES_EXT = .png
+
+# use these to set params on the command-line
+# format is, e.g., HTML_PARAMS="--stringparam variablelist.as.table 1..."
+FO_PARAMS =
+HTML_PARAMS =
+MAN_PARAMS =
+
+# DBX_PARAMS is for dblatex(1); format uses "-p":
+# DBX_PARAMS="-p doc.publisher.show 1 -p term.breakline 1...
+DBX_PARAMS=
+
+# What file extension do you use for DocBook source files?
+DOCBOOK_FILE_EXTENSION = .xml
+
+# -----------------------------------------------------------------
+# make(1) functions for building file lists
+# -----------------------------------------------------------------
+#
+# the values of the following are used for determing what needs
+# to be built and/or cleaned up
+
+ifeq ($(ASCII_OR_DOCBOOK),docbook)
+SOURCE_FILES_DBK = $(wildcard *$(DOCBOOK_FILE_EXTENSION))
+else
+SOURCE_FILES_DBK = $(foreach base,$(basename $(wildcard *.txt)),$(base)$(DOCBOOK_FILE_EXTENSION))
+endif
+
+FILES_FO = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).fo)
+FILES_TXT = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).out.txt)
+FILES_PDF = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).pdf)
+FILES_LOG = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).log)
+FILES_OUT = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).out)
+FILES_AUX = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).aux)
+FILES_HTML = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).html)
+FILES_INFO = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).info)
+DIRS_CHUNK = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base)$(BASEDIR_SUFFIX))
+LISTS_HTML = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).$(HTML_MANIFEST_EXT))
+LISTS_MAN = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).$(MAN_MANIFEST_EXT))
+FILES_CHNK = $(shell for manifest in $(LISTS_HTML); do if [ -f "$$manifest" ]; then cat $$manifest; fi done)
+FILES_MAN = $(shell for manifest in $(LISTS_MAN); do if [ -f "$$manifest" ]; then cat $$manifest; fi done)
+FILES_MANP = $(foreach base,$(FILES_MAN),$(base).man.pdf)
+FILES_MANT = $(foreach base,$(FILES_MAN),$(base).out.txt)
+DIRS_MAN = $(shell for file in $(FILES_MAN); do dirname $$file; done | uniq)
+
+# -----------------------------------------------------------------
+# ** stylesheet for testing whether a file has a refentry
+# -----------------------------------------------------------------
+REFENTRY_CHECK := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ version="1.0" \
+ xmlns:db="http://docbook.org/ns/docbook" \
+ > \
+ <xsl:output method="text"/> \
+ <xsl:template match="/"> \
+ <xsl:if test="//refentry|//db:refentry"> \
+ <xsl:text>true</xsl:text> \
+ </xsl:if> \
+ </xsl:template> \
+</xsl:stylesheet>
+
+# -----------------------------------------------------------------
+# ** Stylesheet Customization Layers **
+# -----------------------------------------------------------------
+#
+# for DBLaTeX
+DBX_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ version="1.0"> \
+ <xsl:param name="co.linkends.show">0</xsl:param> \
+ <xsl:param name="callout.markup.circled">1</xsl:param> \
+ <xsl:param name="callout.linkends.hot">0</xsl:param> \
+ <xsl:param name="doc.publisher.show">1</xsl:param> \
+ <xsl:param name="term.breakline">1</xsl:param> \
+ <xsl:param name="doc.alignment">left</xsl:param> \
+ <xsl:param name="newtbl.use">1</xsl:param> \
+ <xsl:param name="latex.hyperparam"/> \
+ <xsl:param name="latex.style">docbook</xsl:param> \
+ <xsl:param name="latex.biblio.output">all</xsl:param> \
+ <xsl:param name="latex.bibfiles">""</xsl:param> \
+ <xsl:param name="latex.bibwidelabel">WIDELABEL</xsl:param> \
+ <xsl:param name="latex.output.revhistory">0</xsl:param> \
+ <xsl:param name="latex.figure.position">[htbp]</xsl:param> \
+ <xsl:param name="latex.figure.boxed">0</xsl:param> \
+ <xsl:param name="latex.babel.use">1</xsl:param> \
+ <xsl:param name="latex.babel.language"></xsl:param> \
+ <xsl:param name="latex.class.options">twoside</xsl:param> \
+ <xsl:param name="biblioentry.item.separator">, </xsl:param> \
+ <xsl:param name="refentry.xref.manvolnum">1</xsl:param> \
+ <xsl:param name="refsynopsis.title">Synopsis</xsl:param> \
+ <xsl:param name="refnamediv.title"></xsl:param> \
+ <xsl:param name="funcsynopsis.style">ansi</xsl:param> \
+ <xsl:param name="funcsynopsis.decoration">1</xsl:param> \
+ <xsl:param name="function.parens">0</xsl:param> \
+ <xsl:param name="classsynopsis.default.language">java</xsl:param> \
+ <xsl:param name="show.comments">0</xsl:param> \
+</xsl:stylesheet>
+
+# for FO output
+FO_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ xmlns:fo="http://www.w3.org/1999/XSL/Format" \
+ version="1.0"> \
+ <xsl:import href="$(DOCBOOK_XSL)/fo/docbook.xsl"/> \
+ <xsl:param name="$(PDF_MAKER).extensions">1</xsl:param> \
+ <xsl:param name="paper.type">A4</xsl:param> \
+ <xsl:param name="draft.watermark.image"></xsl:param> \
+ <xsl:param name="hyphenation">false</xsl:param> \
+ <xsl:param name="hyphenate.verbatim">1</xsl:param> \
+ <xsl:param name="alignment">left</xsl:param> \
+ <xsl:param name="refentry.generate.name">1</xsl:param> \
+ <xsl:param name="refentry.generate.title">0</xsl:param> \
+ <xsl:param name="refentry.pagebreak">1</xsl:param> \
+ <xsl:param name="shade.verbatim">1</xsl:param> \
+ <xsl:param name="variablelist.as.blocks">1</xsl:param> \
+ <xsl:param name="ulink.show">1</xsl:param> \
+ <xsl:param name="ulink.footnotes">1</xsl:param> \
+ <xsl:param name="index.on.type">1</xsl:param> \
+ <xsl:attribute-set name="xref.properties"> \
+ <xsl:attribute name="color">blue</xsl:attribute> \
+ </xsl:attribute-set> \
+ <xsl:attribute-set name="shade.verbatim.style"> \
+ <xsl:attribute name="background-color">\#E0E0E0</xsl:attribute> \
+ <xsl:attribute name="padding-left">4pt</xsl:attribute> \
+ <xsl:attribute name="padding-right">4pt</xsl:attribute> \
+ <xsl:attribute name="padding-top">4pt</xsl:attribute> \
+ <xsl:attribute name="padding-bottom">4pt</xsl:attribute> \
+ </xsl:attribute-set> \
+ <xsl:attribute-set name="section.title.level1.properties"> \
+ <xsl:attribute name="font-size"> \
+ <xsl:value-of select="$$body.font.master * 1.5"></xsl:value-of> \
+ <xsl:text>pt</xsl:text> \
+ </xsl:attribute> \
+ </xsl:attribute-set> \
+ <xsl:attribute-set name="section.title.level2.properties"> \
+ <xsl:attribute name="font-size"> \
+ <xsl:value-of select="$$body.font.master * 1.3"></xsl:value-of> \
+ <xsl:text>pt</xsl:text> \
+ </xsl:attribute> \
+ </xsl:attribute-set> \
+ <xsl:attribute-set name="section.title.level3.properties"> \
+ <xsl:attribute name="font-size"> \
+ <xsl:value-of select="$$body.font.master * 1.1"></xsl:value-of> \
+ <xsl:text>pt</xsl:text> \
+ </xsl:attribute> \
+ </xsl:attribute-set> \
+ <xsl:attribute-set name="section.title.level4.properties"> \
+ <xsl:attribute name="font-size"> \
+ <xsl:value-of select="$$body.font.master"></xsl:value-of> \
+ <xsl:text>pt</xsl:text> \
+ </xsl:attribute> \
+ </xsl:attribute-set> \
+ <xsl:attribute-set name="component.title.properties"> \
+ <xsl:attribute name="font-size"> \
+ <xsl:value-of select="$$body.font.master * 1.5"></xsl:value-of> \
+ <xsl:text>pt</xsl:text> \
+ </xsl:attribute> \
+ </xsl:attribute-set> \
+ <xsl:attribute-set name="monospace.verbatim.properties"> \
+ <xsl:attribute name="wrap-option">wrap</xsl:attribute> \
+ <xsl:attribute name="hyphenation-character">\</xsl:attribute> \
+ <xsl:attribute name="font-size"> \
+ <xsl:value-of select="$$body.font.master * 0.8"></xsl:value-of> \
+ <xsl:text>pt</xsl:text> \
+ </xsl:attribute> \
+ </xsl:attribute-set> \
+</xsl:stylesheet>
+
+# for single-file (X)HTML outpout
+HTML_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ version="1.0"> \
+ <xsl:import href="$(DOCBOOK_XSL)/$(HTML_OR_XHTML)/docbook.xsl"/> \
+ <xsl:param name="gentext.custom">local.l10n.xml</xsl:param> \
+ <xsl:param name="local.l10n.xml" select="document($$gentext.custom)"/> \
+ <xsl:param name="refentry.generate.name">1</xsl:param> \
+ <xsl:param name="refentry.generate.title">0</xsl:param> \
+ <xsl:param name="root.filename"></xsl:param> \
+ <xsl:param name="variablelist.as.table">0</xsl:param> \
+ <xsl:param name="html.stylesheet">$(HTML_STYLESHEET)</xsl:param> \
+ <xsl:param name="admon.graphics">0</xsl:param> \
+ <xsl:param name="index.on.type">1</xsl:param> \
+</xsl:stylesheet>
+
+# for chunked (X)HTML output
+CHNK_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ version="1.0"> \
+ <xsl:import href="$(DOCBOOK_XSL)/$(HTML_OR_XHTML)/chunk.xsl"/> \
+ <xsl:param name="refentry.generate.name">0</xsl:param> \
+ <xsl:param name="refentry.generate.title">1</xsl:param> \
+ <xsl:param name="variablelist.as.table">0</xsl:param> \
+ <xsl:param name="html.stylesheet">$(HTML_STYLESHEET)</xsl:param> \
+ <xsl:param name="admon.graphics">1</xsl:param> \
+ <xsl:param name="admon.graphics.path">$(HTML_IMAGES)</xsl:param> \
+ <xsl:param name="admon.graphics.extension">$(HTML_IMAGES_EXT)</xsl:param> \
+ <xsl:param name="root.filename"></xsl:param> \
+ <xsl:param name="generate.manifest">1</xsl:param> \
+ <xsl:param name="use.id.as.filename">1</xsl:param> \
+ <xsl:param name="chunker.output.indent">yes</xsl:param> \
+ <xsl:param name="index.on.type">1</xsl:param> \
+</xsl:stylesheet>
+
+# for man-page output
+MAN_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ version="1.0"> \
+ <xsl:import href="$(DOCBOOK_XSL)/manpages/docbook.xsl"/> \
+ <xsl:param name="man.output.manifest.enabled" select="1"/> \
+ <xsl:param name="man.output.in.separate.dir" select="1"/> \
+ <xsl:param name="man.output.base.dir">man/</xsl:param> \
+ <xsl:param name="man.output.subdirs.enabled" select="1"/> \
+</xsl:stylesheet>
+
+# -----------------------------------------------------------------
+# ** TARGETS START HERE **
+# -----------------------------------------------------------------
+# prevents make from deleting, e.g. foo.1, after making foo.1.pdf
+# and foo.1.txt from it.
+.PRECIOUS: %.1 %.2 %.3 %.4 %.5 %.6 %.7 %.8 %.9
+
+docbook: $(DOCBOOK_OUTPUT_FORMATS)
+
+xml: $(SOURCE_FILES_DBK)
+
+man: $(LISTS_MAN)
+
+# we can generate PDFs from man pages
+man-pdf: man
+ $(MAKE) $(FILES_MANP)
+
+# we can generate plain text from man pages
+man-txt: man
+ $(MAKE) $(FILES_MANT)
+
+html: $(FILES_HTML)
+
+chunk: $(LISTS_HTML)
+
+txt: $(FILES_TXT)
+
+pdf: $(FILES_PDF)
+
+info: $(FILES_INFO)
+
+# use the "debug" target to echo variables, etc., to
+# test/troubleshoot changes you make to this makefile
+debug:
+ echo $(wildcard *$(DOCBOOK_FILE_EXTENSION))
+ echo $(ASCII_OR_DOCBOOK)
+ echo $(SOURCE_FILES_DBK)
+
+# -----------------------------------------------------------------
+# pattern rule to make DocBook refentry from asciidoc source
+# -----------------------------------------------------------------
+%.1$(DOCBOOK_FILE_EXTENSION): %.1.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.2$(DOCBOOK_FILE_EXTENSION): %.2.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.3$(DOCBOOK_FILE_EXTENSION): %.3.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.4$(DOCBOOK_FILE_EXTENSION): %.4.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.5$(DOCBOOK_FILE_EXTENSION): %.5.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.6$(DOCBOOK_FILE_EXTENSION): %.6.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.7$(DOCBOOK_FILE_EXTENSION): %.7.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.8$(DOCBOOK_FILE_EXTENSION): %.8.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.9$(DOCBOOK_FILE_EXTENSION): %.9.txt
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+# -----------------------------------------------------------------
+# pattern rule to make DocBook article from asciidoc source
+# -----------------------------------------------------------------
+%$(DOCBOOK_FILE_EXTENSION): %.txt
+ export LINECOUNT1=$$(cat $< | $(DOS2UNIX) $(DOS2UNIXFLAGS) | egrep "^=+$$" | wc -l); \
+ export LINECOUNT2=$$(cat $< | $(DOS2UNIX) $(DOS2UNIXFLAGS) | egrep "^= $$" | wc -l); \
+ if [[ $$LINECOUNT1 > 1 || $$LINECOUNT2 > 1 ]]; then \
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -d book -b docbook $<; \
+ else \
+ $(ASCIIDOC) $(ASCIIDOCFLAGS) -b docbook $<; \
+ fi
+
+# -----------------------------------------------------------------
+# pattern rule for making (X)HTML and plain-text output
+# -----------------------------------------------------------------
+%.html: %$(DOCBOOK_FILE_EXTENSION)
+ @echo '$(HTML_CUSTOM)' | $(XSLT) $(XSLT_FLAGS) $(HTML_PARAMS) - $< > $@
+
+%.out.txt: %.html
+ $(TXT_MAKER) $(TXT_MAKER_FLAGS) ./$< \
+ | sed "s/^\(\s\+[0-9]\+\. \)file:\/\/.\+$$/\\1(local)/g" \
+ | egrep -v '^ file:///.+$$' \
+ > $@
+# if DOCBOOK_OUTPUT_FORMATS does not contain "html", then we need
+# to remove the "intermediate" HTML files we used for generating
+# plain-text output
+ifeq ($(findstring html,$(DOCBOOK_OUTPUT_FORMATS)),)
+ $(RM) $<
+endif
+
+# -----------------------------------------------------------------
+# pattern rule for making chunked (X)HTML pages
+# -----------------------------------------------------------------
+%.$(HTML_MANIFEST_EXT): %$(DOCBOOK_FILE_EXTENSION)
+ @echo '$(CHNK_CUSTOM)' | $(XSLT) $(XSLT_FLAGS) $(HTML_PARAMS) \
+ --stringparam manifest $@ \
+ --stringparam base.dir $(basename $@)$(BASEDIR_SUFFIX)/ \
+ - $<
+
+# -----------------------------------------------------------------
+# pattern rules for making FO and PDF stuff
+# -----------------------------------------------------------------
+%.fo: %$(DOCBOOK_FILE_EXTENSION)
+ @echo '$(FO_CUSTOM)' \
+ | $(XSLT) $(XSLT_FLAGS) $(FO_PARAMS) - $< > $@
+
+ifeq ($(PDF_MAKER),dblatex)
+%.pdf: %$(DOCBOOK_FILE_EXTENSION)
+ mkdir -p $(DOCBOOK_TMP)
+ echo '$(DBX_CUSTOM)' > $(DOCBOOK_TMP)/dblatex.xsl
+ -$(DBLATEX) $(DBLATEX_FLAGS)\
+ -p $(DOCBOOK_TMP)/dblatex.xsl \
+ -o $@ \
+ $<
+ $(RM) -r $(DOCBOOK_TMP)
+endif
+
+%.pdf: %.fo
+ifeq ($(PDF_MAKER),)
+ $(error No PDF_MAKER specified. Cannot make pdf)
+else
+ifeq ($(PDF_MAKER),xep)
+ $(XEP) $(XEP_FLAGS) $< $@
+else
+ifeq ($(PDF_MAKER),fop)
+ $(FOP) $(FOP_FLAGS) $< $@
+else
+ifeq ($(PDF_MAKER),xmlroff)
+ $(XMLROFF) $(XMLROFF_FLAGS) $< -o $@
+else
+ifeq ($(PDF_MAKER),passivetex)
+ $(PDFTEX) $(PDFTEX_FLAGS) &$(PDFXMLTEX) $<
+ @if [ `egrep Rerun $(basename $@).log | wc -l` -gt 0 ]; then \
+ $(PDFTEX) $(PDFTEX_FLAGS) &$(PDFXMLTEX) $< ; \
+ fi
+ @if [ `egrep Rerun $(basename $@).log | wc -l` -gt 0 ]; then \
+ $(PDFTEX) $(PDFTEX_FLAGS) &$(PDFXMLTEX) $< ; \
+ fi
+ $(RM) $(basename $@).log
+ $(RM) $(basename $@).aux
+ $(RM) $(basename $@).out
+else
+ $(error I do not know how to make a PDF using "$(PDF_MAKER)")
+endif
+endif
+endif
+endif
+endif
+
+# -----------------------------------------------------------------
+# pattern rules for making TeXinfo stuff
+# -----------------------------------------------------------------
+%.txml: %$(DOCBOOK_FILE_EXTENSION)
+ $(DB2X_XSLTPROC) $(DB2X_XSLTPROC_FLAGS) -s texi -o $@ $<
+
+%.texi: %.txml
+ $(DB2X_TEXIXML) $(DB2X_TEXIXML_FLAGS) $<
+
+# the following is actually a built-in rule, but it's redefined
+# here just for the sake of clarity
+%.info: %.texi
+ $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
+
+# -----------------------------------------------------------------
+# pattern rule for making man pages
+# -----------------------------------------------------------------
+%.$(MAN_MANIFEST_EXT): %$(DOCBOOK_FILE_EXTENSION)
+ @if [ "$(strip $(shell echo '$(REFENTRY_CHECK)' | $(XSLT) $(XSLT_FLAGS) - $<))" != "true" ]; then \
+ touch $@; \
+ else \
+ echo '$(MAN_CUSTOM)' \
+ | $(XSLT) $(XSLT_FLAGS) $(MAN_PARAMS) \
+ --stringparam man.output.manifest.filename $@ \
+ - $<; \
+ fi
+
+# -----------------------------------------------------------------
+# pattern rule for enabling direct "make foo.1" to work
+# -----------------------------------------------------------------
+
+%.1 %.2 %.3 %.4 %.5 %.6 %.7: %.xml
+ $(MAKE) $(basename $<).$(MAN_MANIFEST_EXT)
+
+# -----------------------------------------------------------------
+# pattern rules for making Postscript/PDF output from man pages
+# -----------------------------------------------------------------
+%.1.man.ps: %.1
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.2.man.ps: %.2
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.3.man.ps: %.3
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.4.man.ps: %.4
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.5.man.ps: %.5
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.6.man.ps: %.6
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.7.man.ps: %.7
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.8.man.ps: %.8
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+%.9.man.ps: %.9
+ $(MAN) -l $(MAN_FLAGS) -Tps $< > $@
+
+# -----------------------------------------------------------------
+# pattern rule for converting Postscript to PDF
+# -----------------------------------------------------------------
+%.pdf: %.ps
+ $(PS2PDF) $(PS2PDF_FLAGS) $<
+
+# -----------------------------------------------------------------
+# pattern rules for making plain-text output from man pages
+# -----------------------------------------------------------------
+%.1.out.txt: %.1
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.2.out.txt: %.2
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.3.out.txt: %.3
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.4.out.txt: %.4
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.5.out.txt: %.5
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.6.out.txt: %.6
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.7.out.txt: %.7
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.8.out.txt: %.8
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+%.9.out.txt: %.9
+ $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@
+
+# -----------------------------------------------------------------
+# target(s) for cleaning up the mess
+# -----------------------------------------------------------------
+clean:
+ifneq ($(FILES_TXT),)
+ $(RM) $(FILES_TXT)
+endif
+ifneq ($(FILES_PDF),)
+ $(RM) $(FILES_PDF)
+endif
+ifneq ($(FILES_FO),)
+ $(RM) $(FILES_FO)
+endif
+ifneq ($(FILES_LOG),)
+ $(RM) $(FILES_LOG)
+endif
+ifneq ($(FILES_OUT),)
+ $(RM) $(FILES_OUT)
+endif
+ifneq ($(FILES_AUX),)
+ $(RM) $(FILES_AUX)
+endif
+ifneq ($(FILES_HTML),)
+ $(RM) $(FILES_HTML)
+endif
+ifneq ($(FILES_CHNK),)
+ $(RM) $(FILES_CHNK)
+endif
+ifneq ($(FILES_MAN),)
+ $(RM) $(FILES_MAN)
+endif
+ifneq ($(FILES_MANT),)
+ $(RM) $(FILES_MANT)
+endif
+ifneq ($(FILES_MANP),)
+ $(RM) $(FILES_MANP)
+endif
+ifneq ($(FILES_INFO),)
+ $(RM) $(FILES_INFO)
+endif
+ifneq ($(DIRS_CHUNK),)
+ for dir in $(DIRS_CHUNK); do \
+ if [ -d "$$dir" ]; then \
+ $(RMDIR) $(RMDIR_FLAGS) $$dir; \
+ fi \
+ done
+endif
+ifneq ($(DIRS_MAN),)
+ifneq ($(DIRS_MAN),.)
+ for dir in $(DIRS_MAN); do \
+ if [ -d "$$dir" ]; then \
+ $(RMDIR) $(RMDIR_FLAGS) $$dir; \
+ fi \
+ done
+endif
+endif
+ifneq ($(LISTS_MAN),)
+ $(RM) $(LISTS_MAN)
+endif
+ifneq ($(LISTS_HTML),)
+ $(RM) $(LISTS_HTML)
+endif
+ifneq ($(ASCII_OR_DOCBOOK),docbook)
+ $(RM) -i $(SOURCE_FILES_DBK)
+endif
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine
new file mode 100644
index 0000000..28a5e18
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine
@@ -0,0 +1,182 @@
+# $Source$
+# $Author: xmldoc $
+# $Date: 2007-03-04 22:28:18 -0800 (Sun, 04 Mar 2007) $
+# $Revision: 6666 $
+# vim: number
+#
+# -----------------------------------------------------------------
+# ** Makefile.combine -- combine source files **
+# -----------------------------------------------------------------
+#
+# This file is part of the DocBook Project XSL Stylesheet
+# distribution.
+#
+# See http://docbook.sourceforge.net/release/xsl/current/
+# for copyright and other information.
+#
+# This makefile creates "wrapper" files that combine sets of
+# individual DocBook source files. The purpose of combining the
+# files is to speed up processing time. By default it puts 20
+# files into each wrapper. Use CHUNKSIZE to configure the number
+# of files per wrapper.
+#
+# Currently, this makefile has only a "man" target and is mainly
+# intended to speed up processing of large numbers of individual
+# refentry instances.
+
+# What file extension do you use for DocBook source files?
+DOCBOOK_FILE_EXTENSION = .xml
+SOURCE_FILES_DBK = $(wildcard *$(DOCBOOK_FILE_EXTENSION))
+
+MAKEFILE_DOCBOOK = Makefile.DocBook
+
+XSLTPROC=xsltproc
+XSLTPROC_FLAGS=
+
+SED=sed
+SED_FLAGS=-i
+
+CHUNKSIZE ?= 20
+
+WRAPPER_ELEMENT = reference
+WRAPPER_TITLE=Combined contents
+
+COMBINE_XSL = <?xml version="1.0"?> \
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ xmlns:exsl="http://exslt.org/common" \
+ xmlns:xi="http://www.w3.org/2001/XInclude" \
+ exclude-result-prefixes="exsl xi" \
+ extension-element-prefixes="exsl" \
+ version="1.0"> \
+ <xsl:param name="files"/> \
+ <xsl:param name="chunk.size"/> \
+ <xsl:template match="/"> \
+ <xsl:call-template name="make.file"/> \
+ </xsl:template> \
+ \
+ <xsl:template name="make.file"> \
+ <xsl:param name="count" select="1"/> \
+ <xsl:param name="current.files" select="concat(normalize-space($$files), ^^ ^^)"/> \
+ <xsl:param name="more.files" \
+ select="concat(normalize-space(substring-after($$current.files, ^^ ^^)),^^ ^^)"/> \
+ <xsl:param name="file.number" select="1"/> \
+ <xsl:param name="filename" select="concat(^^./build/^^,$$file.number,^^.xml^^)"/> \
+ \
+ <xsl:choose> \
+ <xsl:when test="$$more.files = ^^ ^^"/> \
+ <xsl:when test="$$count mod $$chunk.size = 0"> \
+ <xsl:variable name="fileset" select="concat($$current.files, ^^ ^^, \
+ substring-before($$more.files, ^^ ^^))"/> \
+ <exsl:document href="{$$filename}" \
+ method="xml" \
+ encoding="UTF-8" \
+ indent="yes" \
+ omit-xml-declaration="yes" \
+ media-type="" \
+ standalone="no"> \
+ <$(WRAPPER_ELEMENT)> \
+ <title>$(WRAPPER_TITLE)</title> \
+ <xsl:call-template name="make.xinclude"> \
+ <xsl:with-param name="file"> \
+ <xsl:choose> \
+ <xsl:when test="contains($$fileset, ^^ ^^)"> \
+ <xsl:value-of \
+ select="normalize-space(substring-before($$fileset, ^^ ^^))"/> \
+ </xsl:when> \
+ <xsl:otherwise> \
+ <xsl:value-of select="$$fileset"/> \
+ </xsl:otherwise> \
+ </xsl:choose> \
+ </xsl:with-param> \
+ <xsl:with-param \
+ name="remaining.files" \
+ select="concat(normalize-space(substring-after($$fileset, ^^ ^^)),^^ ^^)"/> \
+ </xsl:call-template> \
+ </$(WRAPPER_ELEMENT)> \
+ </exsl:document> \
+ <xsl:call-template name="make.file"> \
+ <xsl:with-param name="count" select="1"/> \
+ <xsl:with-param name="current.files" \
+ select="$$more.files"/> \
+ <xsl:with-param name="file.number" select="number($$file.number) + 1"/> \
+ <xsl:with-param name="filename" select="concat(^^./build/^^,$$file.number,^^.xml^^)"/> \
+ </xsl:call-template> \
+ </xsl:when> \
+ <xsl:otherwise> \
+ <xsl:call-template name="make.file"> \
+ <xsl:with-param name="count" select="$$count + 1"/> \
+ <xsl:with-param name="current.files"> \
+ <xsl:choose> \
+ <xsl:when test="$$count = 1 and $$file.number = 1"> \
+ <xsl:value-of \
+ select="concat(substring-before($$current.files, ^^ ^^), \
+ ^^ ^^, \
+ substring-before($$more.files, ^^ ^^))"/> \
+ </xsl:when> \
+ <xsl:when test="$$count = 1"> \
+ <xsl:value-of \
+ select="substring-before($$more.files, ^^ ^^)"/> \
+ </xsl:when> \
+ <xsl:otherwise> \
+ <xsl:value-of \
+ select="concat($$current.files, ^^ ^^, \
+ substring-before($$more.files, ^^ ^^))"/> \
+ </xsl:otherwise> \
+ </xsl:choose> \
+ </xsl:with-param> \
+ <xsl:with-param name="more.files" \
+ select="substring-after($$more.files, ^^ ^^)"/> \
+ <xsl:with-param name="file.number" select="$$file.number"/> \
+ </xsl:call-template> \
+ </xsl:otherwise> \
+ </xsl:choose> \
+ </xsl:template> \
+ \
+ <xsl:template name="make.xinclude"> \
+ <xsl:param name="file"/> \
+ <xsl:param name="remaining.files"/> \
+ <xsl:param name="count" select="1"/> \
+ <xsl:if test="not($$file = ^^^^)"> \
+ <xi:include href="../{$$file}"/> \
+ <xsl:call-template name="make.xinclude"> \
+ <xsl:with-param \
+ name="file" \
+ select="substring-before($$remaining.files, ^^ ^^)"/> \
+ <xsl:with-param \
+ name="remaining.files" \
+ select="substring-after($$remaining.files, ^^ ^^)"/> \
+ <xsl:with-param name="count" select="$$count + 1"/> \
+ </xsl:call-template> \
+ </xsl:if> \
+ </xsl:template> \
+ \
+</xsl:stylesheet>
+
+all: man
+
+man: build/man
+
+build/Makefile:
+ if [ ! -d build ]; then mkdir build; fi
+ cp $(MAKEFILE_DOCBOOK) $@
+
+combine.xsl: Makefile
+ @echo '$(COMBINE_XSL)' > $@
+ $(SED) $(SED_FLAGS) "s/\^\^/'/g" $@
+
+build/1.xml: combine.xsl
+ $(XSLTPROC) $(XSLTPROC_FLAGS) \
+ --stringparam files "$(SOURCE_FILES_DBK)" \
+ --stringparam chunk.size $(CHUNKSIZE) \
+ $< $<
+
+build/man: build/Makefile build/1.xml
+ time $(MAKE) -C build man \
+ MAN_PARAMS="--stringparam man.output.quietly 1 \
+ --stringparam refentry.meta.get.quietly 1 \
+ --stringparam man.charmap.enabled 0"
+
+debug:
+
+clean:
+ $(RM) -r build
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam
new file mode 100644
index 0000000..36d12ca
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam
@@ -0,0 +1,59 @@
+# $Source$
+# $Author: xmldoc $
+# $Date: 2007-03-23 14:57:22 -0700 (Fri, 23 Mar 2007) $
+# $Revision: 6759 $
+# vim: number
+#
+# ------------------------------------------------------------------
+# ** Makefile.paramDoc - create param.xsl files w/ embedded doc **
+# ------------------------------------------------------------------
+
+PARAMFILES = $(wildcard ../../*/param.xsl)
+PARAMFILESDOCD = $(foreach base,$(basename $(PARAMFILES)),$(base).docd.xsl)
+
+XSLT=xsltproc
+XSLTFLAGS=
+
+COPYDOC := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ xmlns:doc="http://docbook.org/ns/docbook" \
+ version="1.0"> \
+ <xsl:template match="*[local-name() = &apos;param&apos;]"> \
+ <xsl:call-template name="copy-xsl-source"/> \
+ </xsl:template> \
+ <xsl:template match="*[local-name() = &apos;attribute-set&apos;]"> \
+ <xsl:call-template name="copy-xsl-source"/> \
+ </xsl:template> \
+ <xsl:template name="copy-xsl-source"> \
+ <xsl:variable \
+ name="source" \
+ select="concat(&apos;../../params/&apos;,@name,&apos;.xml&apos;)"/> \
+ <xsl:apply-templates select="document($$source)/*[local-name() = &apos;refentry&apos;]"/> \
+ <xsl:copy> \
+ <xsl:apply-templates select="@* | node()"/> \
+ </xsl:copy> \
+ </xsl:template> \
+ <xsl:template match="node() | @*"> \
+ <xsl:copy> \
+ <xsl:apply-templates select="@* | node()"/> \
+ </xsl:copy> \
+ </xsl:template> \
+ <xsl:template match="*[local-name() = &apos;refentry&apos;]"> \
+ <xsl:text>&\#x0a;</xsl:text> \
+ <doc:refentry id="{@*[local-name() = &apos;id&apos;]}"> \
+ <xsl:apply-templates/> \
+ </doc:refentry> \
+ <xsl:text>&\#x0a;</xsl:text> \
+ </xsl:template> \
+ <xsl:template match="*[local-name() = &apos;refsynopsisdiv&apos;]"/> \
+</xsl:stylesheet>
+
+all: $(PARAMFILESDOCD)
+
+%.docd.xsl: %.xsl
+ @echo '$(COPYDOC)' | $(XSLT) $(XSLTFLAGS) - $< > $@
+
+debug:
+ @echo $(PARAMFILESDOCD)
+
+clean:
+ $(RM) $(PARAMFILESDOCD)
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE
new file mode 100644
index 0000000..63c2931
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE
@@ -0,0 +1 @@
+See doc/content/index.html. \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css
new file mode 100644
index 0000000..3d30bc2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css
@@ -0,0 +1,109 @@
+body { font: 12px Verdana, Geneva, sans-serif; }
+p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; }
+h1 { font: bold 15pt Arial, Helvetica, geneva; }
+h2 { font: bold 14pt Arial, Helvetica, geneva; }
+
+#header {
+ background: white url(../images/header-bg.gif) repeat-x;
+ position: fixed;
+ width: 100%;
+ height: 95px;
+ top: 0;
+ right: 0;
+ bottom: auto;
+ left: 0;
+ border-bottom: 2px solid #cccccc;
+ z-index: 2000;
+}
+
+#leftnavigation {
+/* background-color:#91e7b3;*/
+ overflow: auto;
+ position: fixed;
+ height: auto;
+ top: 90px;
+ bottom: 0;
+ left: 0;
+ width: 280px;
+ z-index: 1500;
+ border-right:2px solid #CCCCCC;
+}
+
+#content {
+ position: relative;
+ top: 90px; /* left: 240px;*/
+ right: auto; /* bottom: 20px; */
+ margin: 0px 0px 0px 280px;
+ width: auto;
+ height: inherit;
+ padding-left: 5px;
+ padding-right: 30px;
+ color: #000000;
+ /*border-left: 2px solid #cccccc; overflow :scroll;*/
+ z-index: 1000;
+
+ max-width: 70em;
+ min-width:800px;
+}
+
+#navheader {
+ position: fixed;
+ top: 65px;
+ right:4px;
+}
+
+#content h1, #content h2 { color: #cc0000; }
+.navfooter { bottom: 2%; }
+.highlight { background-color: #c5d3c3; }
+.highlightButton{ font-size: 0; }
+
+/* Show Hide TOC tree */
+.pointLeft {
+ background: url("../images/showHideTreeIcons.png") 0 0 no-repeat;
+ height: 28px;
+ width: 15px;
+ display: block;
+ font-size: 0;
+ cursor: pointer;
+}
+.pointRight {
+ background: url("../images/showHideTreeIcons.png") -15px 0 no-repeat;
+ height: 28px;
+ display: block;
+ font-size: 0;
+ cursor: pointer;
+}
+
+/* Search results Styling */
+.searchExpression {
+ color: #0050A0;
+ background-color: #EBEFF8;
+ font-size: 12pt;
+}
+.searchresult li a {
+ text-decoration: none;
+ color: #0050A0;
+}
+.searchresult li {
+ color: #0050A0;
+}
+.shortdesclink {
+ color: gray;
+ font-size: 9pt;
+}
+.searchText {
+ border: #BFCEE9 solid 1pt;
+ width: 11em
+}
+.searchButton {
+ margin-left: 3px;
+ background: #EBEFF8;
+ color: #0050A0;
+ border: #BFCEE9 solid 1pt;
+ font-weight: bold;
+ font-size: 10pt
+}
+
+.title, div.toc>p{
+ font-weight: bold;
+ } \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js
new file mode 100644
index 0000000..7c24308
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js
new file mode 100644
index 0000000..fec53e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js
@@ -0,0 +1,321 @@
+/*!
+ * jQuery UI 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==
+"hidden")return false;b=b&&b=="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,f,g){return c.ui.isOverAxis(a,d,f)&&c.ui.isOverAxis(b,e,g)},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,
+NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect",
+"none")},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",
+1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==undefined)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");return(/input|select|textarea|button|object/.test(b)?
+!a.disabled:"a"==b||"area"==b?a.href||!isNaN(d):!isNaN(d))&&!c(a)["area"==b?"parents":"closest"](":hidden").length},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype=
+b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g=
+b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();
+this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f,
+h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=
+b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&
+this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();
+return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&
+this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-
+a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Position 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h=
+0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+=
+g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k,
+elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"?
+-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position=
+"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery);
+;/*
+ * jQuery UI Resizable 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
+_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
+top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
+this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
+nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e<c.length;e++){var g=d.trim(c[e]),f=d('<div class="ui-resizable-handle '+("ui-resizable-"+g)+'"></div>');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
+String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};
+if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),
+e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset=
+this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:
+this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",
+b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height;
+g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
+b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top=
+a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidth<b.width,g=k(b.height)&&a.maxHeight&&a.maxHeight<b.height,f=k(b.width)&&a.minWidth&&a.minWidth>b.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,
+l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var e=[c.css("borderTopWidth"),
+c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],g=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=d.map(e,function(f,h){f=parseInt(f,10)||0;h=parseInt(g[h],10)||0;return f+h})}d.browser.msie&&(d(b).is(":hidden")||d(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=
+this.element.offset();if(this._helper){this.helper=this.helper||d('<div style="overflow:hidden;"></div>');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+
+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this,
+arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable,
+{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)});
+else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&&
+d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a=
+d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing,
+step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=
+d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset;
+var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left:
+a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top-
+e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition,
+g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,
+display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b=
+d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height=
+e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
+;
+/*
+ * jQuery UI Selectable 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");
+b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=
+this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");
+a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=
+true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=
+false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.2"})})(jQuery);
+
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");
+b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=
+this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");
+a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=
+true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=
+false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.2"})})(jQuery);
+;/*
+ * jQuery UI Autocomplete 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Autocomplete
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ * jquery.ui.position.js
+ */
+(function(e){e.widget("ui.autocomplete",{options:{minLength:1,delay:300},_create:function(){var a=this,c=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(d){var b=e.ui.keyCode;switch(d.keyCode){case b.PAGE_UP:a._move("previousPage",d);break;case b.PAGE_DOWN:a._move("nextPage",d);break;case b.UP:a._move("previous",d);d.preventDefault();
+break;case b.DOWN:a._move("next",d);d.preventDefault();break;case b.ENTER:case b.NUMPAD_ENTER:a.menu.active&&d.preventDefault();case b.TAB:if(!a.menu.active)return;a.menu.select(d);break;case b.ESCAPE:a.element.val(a.term);a.close(d);break;case b.LEFT:case b.RIGHT:case b.SHIFT:case b.CONTROL:case b.ALT:case b.COMMAND:case b.COMMAND_RIGHT:case b.INSERT:case b.CAPS_LOCK:case b.END:case b.HOME:break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){a.search(null,d)},a.options.delay);
+break}}).bind("focus.autocomplete",function(){a.selectedItem=null;a.previous=a.element.val()}).bind("blur.autocomplete",function(d){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(d);a._change(d)},150)});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=e("<ul></ul>").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete");
+false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()},
+destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source===
+"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length<this.options.minLength)return this.close(c);clearTimeout(this.closing);if(this._trigger("search")!==false)return this._search(a)},_search:function(a){this.term=this.element.addClass("ui-autocomplete-loading").val();this.source({term:a},this.response)},_response:function(a){if(a.length){a=this._normalize(a);this._suggest(a);
+this._trigger("open")}else this.close();this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this._trigger("close",a);this.menu.element.hide();this.menu.deactivate()}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return e.map(a,function(c){if(typeof c==="string")return{label:c,value:c};return e.extend({label:c.label||
+c.value,value:c.value||c.label},c)})},_suggest:function(a){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1),d;this._renderMenu(c,a);this.menu.deactivate();this.menu.refresh();this.menu.element.show().position({my:"left top",at:"left bottom",of:this.element,collision:"none"});a=c.width("").width();d=this.element.width();c.width(Math.max(a,d))},_renderMenu:function(a,c){var d=this;e.each(c,function(b,f){d._renderItem(a,f)})},_renderItem:function(a,c){return e("<li></li>").data("item.autocomplete",
+c).append("<a>"+c.label+"</a>").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c),
+"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery);
+(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
+-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
+this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||
+this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last"));
+else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})})(jQuery);
+;/*
+ * jQuery UI Button 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Button
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ */
+(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",i);this._determineButtonType();
+this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",
+function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",
+function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",
+function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?
+"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());
+this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only"),
+c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon");
+this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},
+destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);
+;/*
+ * jQuery UI Dialog 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ * jquery.ui.button.js
+ * jquery.ui.draggable.js
+ * jquery.ui.mouse.js
+ * jquery.ui.position.js
+ * jquery.ui.resizable.js
+ */
+(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||"&#160;",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),
+h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",
+e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
+a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==
+b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",
+c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===
+f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,
+function(g,f){g=c('<button type="button"></button>').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");
+b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");
+a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",
+f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]=
+g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a,
+b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break;
+case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",
+d.uiDialogTitlebar).html(""+(b||"&#160;"));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",
+this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&
+c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&
+b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,
+document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,
+height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+;/*
+ * jQuery UI Tabs 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ */
+(function(d){function s(){return++u}function v(){return++w}var u=0,w=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&&
+e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c=
+d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]||
+(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass":
+"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs",
+function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show",
+null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs",
+function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g,
+j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",
+function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,
+"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",
+true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide");
+this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=c}),function(h){return h>=c?--h:h});this._tabify();this._trigger("remove",
+null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this},
+select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing");
+if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}},
+abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate=
+function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k<a.anchors.length?k:0)},c);i&&i.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(i){i.clientX&&a.rotate(null)}:function(){t=b.selected;h()});if(c){this.element.bind("tabsshow",h);this.anchors.bind(b.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(b.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
+;/*
+ * jQuery UI Effects 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Effects/
+ */
+jQuery.effects||function(f){function k(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
+16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return l.transparent;return l[f.trim(c).toLowerCase()]}function q(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return k(b)}function m(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
+a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function n(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in r||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function s(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function j(c,a,b,d){if(typeof c=="object"){d=
+a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(f.isFunction(b)){d=b;b=null}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:f.fx.speeds[b]||f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=q(b.elem,a);b.end=k(b.end);b.colorInit=
+true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var l={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,
+183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,
+165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},o=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){var e=f(this),g=e.attr("style")||" ",h=n(m.call(this)),p,t=e.attr("className");f.each(o,function(u,
+i){c[i]&&e[i+"Class"](c[i])});p=n(m.call(this));e.attr("className",t);e.animate(s(h,p),a,b,function(){f.each(o,function(u,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?
+f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===undefined?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.2",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==
+null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();
+var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});
+c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c||
+typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this,
+arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,
+a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+
+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,
+10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*
+a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,
+a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==undefined)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==undefined)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,
+a,b,d,e,g){if(g==undefined)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,
+d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
+;/*
+ * jQuery UI Effects Fold 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Effects/Fold
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100*
+f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
+;/*
+ * jQuery Highlight plugin
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d<a.childNodes.length;d++)d+=jQuery.highlight(a.childNodes[d],c,b,e);return 0}});
+jQuery.fn.unhighlight=function(a){var c={className:"highlight",element:"span"};jQuery.extend(c,a);return this.find(c.element+"."+c.className).each(function(){var b=this.parentNode;b.replaceChild(this.firstChild,this);b.normalize()}).end()};
+jQuery.fn.highlight=function(a,c){var b={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(b,c);if(a.constructor===String)a=[a];a=jQuery.grep(a,function(f){return f!=""});if(a.length==0)return this;var e=b.caseSensitive?"":"i",d="("+a.join("|")+")";if(b.wordsOnly)d="\\b"+d+"\\b";var g=RegExp(d,e);return this.each(function(){jQuery.highlight(this,g,b.element,b.className)})}; \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js
new file mode 100644
index 0000000..bada7bf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery.cookie.js
@@ -0,0 +1,93 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ var path = options.path ? '; path=' + options.path : '';
+ var domain = options.domain ? '; domain=' + options.domain : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+}; \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
new file mode 100644
index 0000000..0b17363
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
@@ -0,0 +1,398 @@
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+.ui-corner-right { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Resizable
+----------------------------------*/
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Selectable
+----------------------------------*/
+.ui-selectable-helper { border:1px dotted black }
+/* Autocomplete
+----------------------------------*/
+.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/* Menu
+----------------------------------*/
+.ui-menu {
+ list-style:none;
+ padding: 2px;
+ margin: 0;
+ display:block;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+ margin:0;
+ padding: 0;
+ zoom: 1;
+ float: left;
+ clear: left;
+ width: 100%;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration:none;
+ display:block;
+ padding:.2em .4em;
+ line-height:1.5;
+ zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+}
+/* Button
+----------------------------------*/
+
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4; }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+
+
+
+
+
+/* Dialog
+----------------------------------*/
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/* Tabs
+----------------------------------*/
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js
new file mode 100644
index 0000000..2597dde
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.async.js
@@ -0,0 +1,72 @@
+/*
+ * Async Treeview 0.1 - Lazy-loading extension for Treeview
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id$
+ *
+ */
+
+;(function($) {
+
+function load(settings, root, child, container) {
+ $.getJSON(settings.url, {root: root}, function(response) {
+ function createNode(parent) {
+ var current = $("<li/>").attr("id", this.id || "").html("<span>" + this.text + "</span>").appendTo(parent);
+ if (this.classes) {
+ current.children("span").addClass(this.classes);
+ }
+ if (this.expanded) {
+ current.addClass("open");
+ }
+ if (this.hasChildren || this.children && this.children.length) {
+ var branch = $("<ul/>").appendTo(current);
+ if (this.hasChildren) {
+ current.addClass("hasChildren");
+ createNode.call({
+ text:"placeholder",
+ id:"placeholder",
+ children:[]
+ }, branch);
+ }
+ if (this.children && this.children.length) {
+ $.each(this.children, createNode, [branch])
+ }
+ }
+ }
+ $.each(response, createNode, [child]);
+ $(container).treeview({add: child});
+ });
+}
+
+var proxied = $.fn.treeview;
+$.fn.treeview = function(settings) {
+ if (!settings.url) {
+ return proxied.apply(this, arguments);
+ }
+ var container = this;
+ load(settings, "source", this, container);
+ var userToggle = settings.toggle;
+ return proxied.call(this, $.extend({}, settings, {
+ collapsed: true,
+ toggle: function() {
+ var $this = $(this);
+ if ($this.hasClass("hasChildren")) {
+ var childList = $this.removeClass("hasChildren").find("ul");
+ childList.empty();
+ load(settings, this.id, childList, container);
+ }
+ if (userToggle) {
+ userToggle.apply(this, arguments);
+ }
+ }
+ }));
+};
+
+})(jQuery); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css
new file mode 100644
index 0000000..dbf425b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css
@@ -0,0 +1,85 @@
+.treeview, .treeview ul {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+.treeview ul {
+ background-color: white;
+ margin-top: 4px;
+}
+
+.treeview .hitarea {
+ background: url(images/treeview-default.gif) -64px -25px no-repeat;
+ height: 16px;
+ width: 16px;
+ margin-left: -16px;
+ float: left;
+ cursor: pointer;
+}
+/* fix for IE6 */
+* html .hitarea {
+ display: inline;
+ float:none;
+}
+
+.treeview li {
+ margin: 0;
+ padding: 3px 0 3px 16px;
+}
+
+.treeview a.selected {
+ background-color: #eee;
+}
+
+#treecontrol { margin: 1em 0; display: none; }
+
+.treeview .hover { color: red; cursor: pointer; }
+
+.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; }
+.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
+
+.treeview .expandable-hitarea { background-position: -80px -3px; }
+
+.treeview li.last { background-position: 0 -1766px }
+.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); }
+.treeview li.lastCollapsable { background-position: 0 -111px }
+.treeview li.lastExpandable { background-position: -32px -67px }
+
+.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
+
+.treeview-red li { background-image: url(images/treeview-red-line.gif); }
+.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); }
+
+.treeview-black li { background-image: url(images/treeview-black-line.gif); }
+.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); }
+
+.treeview-gray li { background-image: url(images/treeview-gray-line.gif); }
+.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); }
+
+.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); }
+.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); }
+
+
+.filetree li { padding: 3px 0 2px 16px; }
+.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
+.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; }
+.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; }
+.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; }
+
+html, body {height:100%; margin: 0; padding: 0; }
+
+/*
+html>body {
+ font-size: 16px;
+ font-size: 68.75%;
+} Reset Base Font Size */
+ /*
+body {
+ font-family: Verdana, helvetica, arial, sans-serif;
+ font-size: 68.75%;
+ background: #fff;
+ color: #333;
+} */
+
+a img { border: none; } \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js
new file mode 100644
index 0000000..248e725
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js
@@ -0,0 +1,255 @@
+/*
+ * Treeview 1.4 - jQuery plugin to hide and show branches of a tree
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ * http://docs.jquery.com/Plugins/Treeview
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
+ *
+ */
+
+;(function($) {
+
+ $.extend($.fn, {
+ swapClass: function(c1, c2) {
+ var c1Elements = this.filter('.' + c1);
+ this.filter('.' + c2).removeClass(c2).addClass(c1);
+ c1Elements.removeClass(c1).addClass(c2);
+ return this;
+ },
+ replaceClass: function(c1, c2) {
+ return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
+ },
+ hoverClass: function(className) {
+ className = className || "hover";
+ return this.hover(function() {
+ $(this).addClass(className);
+ }, function() {
+ $(this).removeClass(className);
+ });
+ },
+ heightToggle: function(animated, callback) {
+ animated ?
+ this.animate({ height: "toggle" }, animated, callback) :
+ this.each(function(){
+ jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
+ if(callback)
+ callback.apply(this, arguments);
+ });
+ },
+ heightHide: function(animated, callback) {
+ if (animated) {
+ this.animate({ height: "hide" }, animated, callback);
+ } else {
+ this.hide();
+ if (callback)
+ this.each(callback);
+ }
+ },
+ prepareBranches: function(settings) {
+ if (!settings.prerendered) {
+ // mark last tree items
+ this.filter(":last-child:not(ul)").addClass(CLASSES.last);
+ // collapse whole tree, or only those marked as closed, anyway except those marked as open
+ this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
+ }
+ // return all items with sublists
+ return this.filter(":has(>ul)");
+ },
+ applyClasses: function(settings, toggler) {
+ this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
+ toggler.apply($(this).next());
+ }).add( $("a", this) ).hoverClass();
+
+ if (!settings.prerendered) {
+ // handle closed ones first
+ this.filter(":has(>ul:hidden)")
+ .addClass(CLASSES.expandable)
+ .replaceClass(CLASSES.last, CLASSES.lastExpandable);
+
+ // handle open ones
+ this.not(":has(>ul:hidden)")
+ .addClass(CLASSES.collapsable)
+ .replaceClass(CLASSES.last, CLASSES.lastCollapsable);
+
+ // create hitarea
+ this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function() {
+ var classes = "";
+ $.each($(this).parent().attr("class").split(" "), function() {
+ classes += this + "-hitarea ";
+ });
+ $(this).addClass( classes );
+ });
+ }
+
+ // apply event to hitarea
+ this.find("div." + CLASSES.hitarea).click( toggler );
+ },
+ treeview: function(settings) {
+
+ if(typeof(window.treeCookieId) !== 'undefined' || window.treeCookieId === ""){
+ treeCookieId = "treeview";
+ }
+
+ settings = $.extend({
+ cookieId: treeCookieId
+ }, settings);
+
+ if (settings.add) {
+ return this.trigger("add", [settings.add]);
+ }
+
+ if ( settings.toggle ) {
+ var callback = settings.toggle;
+ settings.toggle = function() {
+ return callback.apply($(this).parent()[0], arguments);
+ };
+ }
+
+ // factory for treecontroller
+ function treeController(tree, control) {
+ // factory for click handlers
+ function handler(filter) {
+ return function() {
+ // reuse toggle event handler, applying the elements to toggle
+ // start searching for all hitareas
+ toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
+ // for plain toggle, no filter is provided, otherwise we need to check the parent element
+ return filter ? $(this).parent("." + filter).length : true;
+ }) );
+ return false;
+ };
+ }
+ // click on first element to collapse tree
+ $("a:eq(0)", control).click( handler(CLASSES.collapsable) );
+ // click on second to expand tree
+ $("a:eq(1)", control).click( handler(CLASSES.expandable) );
+ // click on third to toggle tree
+ $("a:eq(2)", control).click( handler() );
+ }
+
+ // handle toggle event
+ function toggler() {
+ $(this)
+ .parent()
+ // swap classes for hitarea
+ .find(">.hitarea")
+ .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
+ .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
+ .end()
+ // swap classes for parent li
+ .swapClass( CLASSES.collapsable, CLASSES.expandable )
+ .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
+ // find child lists
+ .find( ">ul" )
+ // toggle them
+ .heightToggle( settings.animated, settings.toggle );
+ if ( settings.unique ) {
+ $(this).parent()
+ .siblings()
+ // swap classes for hitarea
+ .find(">.hitarea")
+ .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
+ .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
+ .end()
+ .replaceClass( CLASSES.collapsable, CLASSES.expandable )
+ .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
+ .find( ">ul" )
+ .heightHide( settings.animated, settings.toggle );
+ }
+ }
+ //Cookie Persistence
+ function serialize() {
+ function binary(arg) {
+ return arg ? 1 : 0;
+ }
+ var data = [];
+ branches.each(function(i, e) {
+ data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
+ });
+ $.cookie(settings.cookieId, data.join("") );
+ }
+
+ function deserialize() {
+ var stored = $.cookie(settings.cookieId);
+ if ( stored ) {
+ var data = stored.split("");
+ branches.each(function(i, e) {
+ $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
+ });
+ }
+ }
+
+ // add treeview class to activate styles
+ this.addClass("treeview");
+
+ // prepare branches and find all tree items with child lists
+ var branches = this.find("li").prepareBranches(settings);
+
+ switch(settings.persist) {
+ case "cookie":
+ var toggleCallback = settings.toggle;
+ settings.toggle = function() {
+ serialize();
+ if (toggleCallback) {
+ toggleCallback.apply(this, arguments);
+ }
+ };
+ deserialize();
+ break;
+ case "location":
+ var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
+ if ( current.length ) {
+ current.addClass("selected").parents("ul, li").add( current.next() ).show();
+ }
+ break;
+ }
+
+ branches.applyClasses(settings, toggler);
+
+ // if control option is set, create the treecontroller and show it
+ if ( settings.control ) {
+ treeController(this, settings.control);
+ $(settings.control).show();
+ }
+
+ return this.bind("add", function(event, branches) {
+ $(branches).prev()
+ .removeClass(CLASSES.last)
+ .removeClass(CLASSES.lastCollapsable)
+ .removeClass(CLASSES.lastExpandable)
+ .find(">.hitarea")
+ .removeClass(CLASSES.lastCollapsableHitarea)
+ .removeClass(CLASSES.lastExpandableHitarea);
+ $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
+ });
+ }
+ });
+
+ // classes used by the plugin
+ // need to be styled via external stylesheet, see first example
+ var CLASSES = $.fn.treeview.classes = {
+ open: "open",
+ closed: "closed",
+ expandable: "expandable",
+ expandableHitarea: "expandable-hitarea",
+ lastExpandableHitarea: "lastExpandable-hitarea",
+ collapsable: "collapsable",
+ collapsableHitarea: "collapsable-hitarea",
+ lastCollapsableHitarea: "lastCollapsable-hitarea",
+ lastCollapsable: "lastCollapsable",
+ lastExpandable: "lastExpandable",
+ last: "last",
+ hitarea: "hitarea"
+ };
+
+ // provide backwards compability
+ $.fn.Treeview = $.fn.treeview;
+
+})(jQuery); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js
new file mode 100644
index 0000000..e693321
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js
@@ -0,0 +1,16 @@
+/*
+ * Treeview 1.4 - jQuery plugin to hide and show branches of a tree
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ * http://docs.jquery.com/Plugins/Treeview
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
+ * kasunbg: changed the cookieid name
+ *
+ */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js
new file mode 100644
index 0000000..eddac49
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js
@@ -0,0 +1,16 @@
+/*
+ * Treeview 1.4 - jQuery plugin to hide and show branches of a tree
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ * http://docs.jquery.com/Plugins/Treeview
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
+ *
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(4($){$.1l($.F,{E:4(b,c){l a=3.n(\'.\'+b);3.n(\'.\'+c).o(c).m(b);a.o(b).m(c);8 3},s:4(a,b){8 3.n(\'.\'+a).o(a).m(b).P()},1n:4(a){a=a||"1j";8 3.1j(4(){$(3).m(a)},4(){$(3).o(a)})},1h:4(b,a){b?3.1g({1e:"p"},b,a):3.x(4(){T(3)[T(3).1a(":U")?"H":"D"]();7(a)a.A(3,O)})},12:4(b,a){7(b){3.1g({1e:"D"},b,a)}1L{3.D();7(a)3.x(a)}},11:4(a){7(!a.1k){3.n(":r-1H:G(9)").m(k.r);3.n((a.1F?"":"."+k.X)+":G(."+k.W+")").6(">9").D()}8 3.n(":y(>9)")},S:4(b,c){3.n(":y(>9):G(:y(>a))").6(">1z").C(4(a){c.A($(3).19())}).w($("a",3)).1n();7(!b.1k){3.n(":y(>9:U)").m(k.q).s(k.r,k.t);3.G(":y(>9:U)").m(k.u).s(k.r,k.v);3.1r("<J 14=\\""+k.5+"\\"/>").6("J."+k.5).x(4(){l a="";$.x($(3).B().1o("14").13(" "),4(){a+=3+"-5 "});$(3).m(a)})}3.6("J."+k.5).C(c)},z:4(g){g=$.1l({N:"z"},g);7(g.w){8 3.1K("w",[g.w])}7(g.p){l d=g.p;g.p=4(){8 d.A($(3).B()[0],O)}}4 1m(b,c){4 L(a){8 4(){K.A($("J."+k.5,b).n(4(){8 a?$(3).B("."+a).1i:1I}));8 1G}}$("a:10(0)",c).C(L(k.u));$("a:10(1)",c).C(L(k.q));$("a:10(2)",c).C(L())}4 K(){$(3).B().6(">.5").E(k.Z,k.Y).E(k.I,k.M).P().E(k.u,k.q).E(k.v,k.t).6(">9").1h(g.1f,g.p);7(g.1E){$(3).B().1D().6(">.5").s(k.Z,k.Y).s(k.I,k.M).P().s(k.u,k.q).s(k.v,k.t).6(">9").12(g.1f,g.p)}}4 1d(){4 1C(a){8 a?1:0}l b=[];j.x(4(i,e){b[i]=$(e).1a(":y(>9:1B)")?1:0});$.V(g.N,b.1A(""))}4 1c(){l b=$.V(g.N);7(b){l a=b.13("");j.x(4(i,e){$(e).6(">9")[1y(a[i])?"H":"D"]()})}}3.m("z");l j=3.6("Q").11(g);1x(g.1w){18"V":l h=g.p;g.p=4(){1d();7(h){h.A(3,O)}};1c();17;18"1b":l f=3.6("a").n(4(){8 3.16.15()==1b.16.15()});7(f.1i){f.m("1v").1u("9, Q").w(f.19()).H()}17}j.S(g,K);7(g.R){1m(3,g.R);$(g.R).H()}8 3.1t("w",4(a,b){$(b).1s().o(k.r).o(k.v).o(k.t).6(">.5").o(k.I).o(k.M);$(b).6("Q").1q().11(g).S(g,K)})}});l k=$.F.z.1J={W:"W",X:"X",q:"q",Y:"q-5",M:"t-5",u:"u",Z:"u-5",I:"v-5",v:"v",t:"t",r:"r",5:"5"};$.F.1p=$.F.z})(T);',62,110,'|||this|function|hitarea|find|if|return|ul||||||||||||var|addClass|filter|removeClass|toggle|expandable|last|replaceClass|lastExpandable|collapsable|lastCollapsable|add|each|has|treeview|apply|parent|click|hide|swapClass|fn|not|show|lastCollapsableHitarea|div|toggler|handler|lastExpandableHitarea|cookieId|arguments|end|li|control|applyClasses|jQuery|hidden|cookie|open|closed|expandableHitarea|collapsableHitarea|eq|prepareBranches|heightHide|split|class|toLowerCase|href|break|case|next|is|location|deserialize|serialize|height|animated|animate|heightToggle|length|hover|prerendered|extend|treeController|hoverClass|attr|Treeview|andSelf|prepend|prev|bind|parents|selected|persist|switch|parseInt|span|join|visible|binary|siblings|unique|collapsed|false|child|true|classes|trigger|else'.split('|'),0,{})) \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js
new file mode 100644
index 0000000..dee7303
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js
@@ -0,0 +1,161 @@
+/**
+ * Miscellaneous js functions for WebHelp
+ * Kasun Gajasinghe, http://kasunbg.blogspot.com
+ * David Cramer, http://www.thingbag.net
+ *
+ */
+
+$(document).ready(function() {
+ // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button
+ //Generate tabs in nav-pane with JQuery
+ $(function() {
+ $("#tabs").tabs({
+ cookie: {
+ // store cookie for 2 days.
+ expires: 2
+ }
+ });
+ });
+
+ //Generate the tree
+ $("#ulTreeDiv").attr("style","");
+ $("#tree").treeview({
+ collapsed: true,
+ animated: "medium",
+ control: "#sidetreecontrol",
+ persist: "cookie"
+ });
+
+ //after toc fully styled, display it. Until loading, a 'loading' image will be displayed
+ $("#tocLoading").attr("style","display:none;");
+// $("#ulTreeDiv").attr("style","display:block;");
+
+ //.searchButton is the css class applied to 'Go' button
+ $(function() {
+ $("button", ".searchButton").button();
+
+ $("button", ".searchButton").click(function() { return false; });
+ });
+
+ //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab)
+ if ($.cookie('ui-tabs-1') === '1') { //search tab is visible
+ if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) {
+ document.getElementById('textToSearch').value = $.cookie('textToSearch');
+ Verifie('diaSearch_Form');
+ searchHighlight($.cookie('textToSearch'));
+ $("#showHideHighlight").css("display","block");
+ }
+ }
+
+ syncToc(); //Synchronize the toc tree with the content pane, when loading the page.
+ //$("#doSearch").button(); //add jquery button styling to 'Go' button
+});
+
+/**
+ * Synchronize with the tableOfContents
+ */
+function syncToc(){
+ var a = document.getElementById("webhelp-currentid");
+ if (a != undefined) {
+ var b = a.getElementsByTagName("a")[0];
+
+ if (b != undefined) {
+ //Setting the background for selected node.
+ var style = a.getAttribute("style");
+ if (style != null && !style.match(/background-color: Background;/)) {
+ a.setAttribute("style", "background-color: #6495ed; " + style);
+ b.setAttribute("style", "color: white;");
+ } else if (style != null) {
+ a.setAttribute("style", "background-color: #6495ed; " + style);
+ b.setAttribute("style", "color: white;");
+ } else {
+ a.setAttribute("style", "background-color: #6495ed; ");
+ b.setAttribute("style", "color: white;");
+ }
+ }
+
+ //shows the node related to current content.
+ //goes a recursive call from current node to ancestor nodes, displaying all of them.
+ while (a.parentNode && a.parentNode.nodeName) {
+ var parentNode = a.parentNode;
+ var nodeName = parentNode.nodeName;
+
+ if (nodeName.toLowerCase() == "ul") {
+ parentNode.setAttribute("style", "display: block;");
+ } else if (nodeName.toLocaleLowerCase() == "li") {
+ parentNode.setAttribute("class", "collapsable");
+ parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea ");
+ }
+ a = parentNode;
+ }
+ }
+}
+
+/**
+ * Code for Show/Hide TOC
+ *
+ */
+function showHideToc() {
+ var showHideButton = $("#showHideButton");
+ var leftNavigation = $("#leftnavigation");
+ var content = $("#content");
+
+ if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) {
+ //Hide TOC
+ showHideButton.removeClass('pointLeft').addClass('pointRight');
+ content.css("margin", "0 0 0 0");
+ leftNavigation.css("display","none");
+ showHideButton.attr("title", "Show the TOC tree");
+ } else {
+ //Show the TOC
+ showHideButton.removeClass('pointRight').addClass('pointLeft');
+ content.css("margin", "0 0 0 280px");
+ leftNavigation.css("display","block");
+ showHideButton.attr("title", "Hide the TOC Tree");
+ }
+}
+
+/**
+ * Code for searh highlighting
+ */
+var highlightOn = true;
+function searchHighlight(searchText) {
+ highlightOn = true;
+ if (searchText != undefined) {
+ var wList;
+ var sList = new Array(); //stem list
+ //Highlight the search terms
+ searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "</").replace(/_di_/g, "%24_")
+ searchText = searchText.replace(/ +/g, " ");
+ searchText = searchText.replace(/ $/, "").replace(/^ /, "");
+
+ wList = searchText.split(" ");
+ $("#content").highlight(wList); //Highlight the search input
+
+ if(typeof stemmer != "undefined" ){
+ //Highlight the stems
+ for (var i = 0; i < wList.length; i++) {
+ var stemW = stemmer(wList[i]);
+ sList.push(stemW);
+ }
+ } else {
+ sList = wList;
+ }
+ $("#content").highlight(sList); //Highlight the search input's all stems
+ }
+}
+
+function searchUnhighlight(){
+ highlightOn = false;
+ //unhighlight the search input's all stems
+ $("#content").unhighlight();
+ $("#content").unhighlight();
+}
+
+function toggleHighlight(){
+ if(highlightOn) {
+ searchUnhighlight();
+ } else {
+ searchHighlight($.cookie('textToSearch'));
+ }
+} \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html
new file mode 100644
index 0000000..7edbb53
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch01.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Chapter 1. Introduction</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><meta name="description" content="Overview of the package." /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="prev" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="next" href="ch02.html" title="Chapter 2. Using the package" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Chapter 1. Introduction<br /> </h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="index.html">Prev</a> 
+ |
+ <a accesskey="n" href="ch02.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter" title="Chapter 1. Introduction"><div class="titlepage"><div><div><h2 class="title"><a id="id36123150"></a>Chapter 1. Introduction</h2></div><div><div class="abstract" title="Abstract"><p class="title"><strong>Abstract</strong></p><p>Overview of the package.</p></div></div></div></div><p>A common requirement for technical publications groups is to produce a Web-based help
+ format that includes a table of contents pane, a search feature, and an index similar to what
+ you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for
+ a Web application that is not exposed to the Internet or requires that the user be logged in,
+ then it is impossible to use services like Google to add search. <a id="id36123176" class="indexterm"></a>
+ </p><div class="itemizedlist" title="Features"><p class="title"><strong>Features</strong></p><ul class="itemizedlist" type="disc"><li class="listitem"><p>Full text search.<a id="id36123195" class="indexterm"></a></p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Stemming support for English, French, and German. Stemming support can be added
+ for other languages by implementing a stemmer.<a id="id36123214" class="indexterm"></a></p></li><li class="listitem"><p>Support for Chinese, Japanese, and Korean using code from the Lucene search
+ engine. </p></li><li class="listitem"><p>Search highlighting shows where the searched for term appears in the results.
+ Use the <span class="guibutton">H</span> button to toggle the highlighting off and on.
+ <a id="id36123242" class="indexterm"></a></p></li><li class="listitem"><p>Search results can include brief descriptions of the target.<a id="id36123259" class="indexterm"></a></p></li></ul></div></li><li class="listitem"><p>Table of contents pane with collapsible toc tree.</p></li><li class="listitem"><p>Auto-synchronization of content pane and TOC.</p></li><li class="listitem"><p>TOC and search pane implemented without the use of a frameset.</p></li><li class="listitem"><p>An Ant <code class="filename">build.xml</code> file to generate output. You can use this
+ build file by importing it into your own or use it as a model for integrating this
+ output format into your own build system.</p></li></ul></div><p>
+ </p><div class="itemizedlist" title="Possible future enhancements"><p class="title"><strong>Possible future enhancements</strong></p><ul class="itemizedlist" type="disc"><li class="listitem"><p>Move webhelp-specific parameters and gentext strings into base DocBook stylesheets.
+ </p></li><li class="listitem"><p>Use <code class="sgmltag-attribute">tabindex</code> attributes to control the tab
+ order in the output. The Contents and Search tabs should be first and second, then the
+ search box and button, then the table of contents items, and so on.</p></li><li class="listitem"><p>Add "Expand all" and "Collapse all" buttons to the table of contents.</p></li><li class="listitem"><p>Add other search options:</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Add an option to use Lucene for server-side searches with table of contents
+ state persisted on the server.</p></li><li class="listitem"><p>Add a simple form that uses a Google site:my.domain.com based search.</p></li></ul></div></li><li class="listitem"><p>Sort search results based on relevance</p></li><li class="listitem"><p>Support wild card characters in the search query.</p></li><li class="listitem"><p>Parameterize width of the TOC pane OR make the TOC pane resizeable by the
+ user.</p></li><li class="listitem"><p>Automate search results summary text:</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Automatically use the first non-heading content as the summary in the search
+ results.</p></li><li class="listitem"><p>Automatically limit the size of the search description to something 140
+ characters.</p></li></ul></div></li><li class="listitem"><p>Support boolean operators in search.</p></li><li class="listitem"><p>Parameterize list of files to exclude from indexing. Currently it's hard coded that
+ we don't index <code class="filename">index.html </code>and <code class="filename">ix01.html</code> (the
+ legal notice and index topics). It should be smarter and automatically not index the
+ index file even if it's not named <code class="filename">ix01.html</code>.</p></li><li class="listitem"><p>Improve performance by moving the table of contents div out of each page and into a
+ separate JavaScript file which then adds it to the page.</p></li><li class="listitem"><p>Add to the indexer the ability to specify a list of files or file patterns not to
+ index. Currently it does not index <code class="filename">index.html</code> or
+ <code class="filename">ix01.html</code>, which is generally appropriate, but it should be up to
+ the user to decide.</p></li><li class="listitem"><p>Add an index tab populated by a separate JavaScript file. Include a param/property
+ that allows the content creator to disable the index.</p></li><li class="listitem"><p>Add functionality to the <code class="filename">build.xml</code> file so that when a property
+ is set, the build generates a pdf version of the document and includes a link to it from
+ the header.</p></li><li class="listitem"><p>Add <a class="ulink" href="http://www.comparenetworks.com/developers/jqueryplugins/jbreadcrumb.html" target="_top">breadcrumbs</a> so the user will know what topics he's been to.</p></li><li class="listitem"><p>Consider using more advanced Lucene indexers for Chinese and Japanese than the
+ CJKAnalyzer</p></li></ul></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li id="webhelp-currentid"><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html
new file mode 100644
index 0000000..d7f7def
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Chapter 2. Using the package</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="prev" href="ch01.html" title="Chapter 1. Introduction" /><link rel="next" href="ch02s01.html" title="Generating webhelp output" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Chapter 2. Using the package<br /> </h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch01.html">Prev</a> 
+ |
+ <a accesskey="n" href="ch02s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter" title="Chapter 2. Using the package"><div class="titlepage"><div><div><h2 class="title"><a id="id36123631"></a>Chapter 2. Using the package</h2></div></div></div><div class="toc"><p><strong>Contents</strong></p><dl><dt><span class="section"><a href="ch02s01.html">Generating webhelp output</a></span></dt><dt><span class="section"><a href="ch02s02.html">Using and customizing the output</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">Building the indexer</a></span></dt><dt><span class="section"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></dt></dl></div><p class="summary">The following sections describe how to install and
+ use the package on Windows.</p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html
new file mode 100644
index 0000000..0b7c930
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Generating webhelp output</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><meta name="description" content="Installation instructions" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="ch02.html" title="Chapter 2. Using the package" /><link rel="prev" href="ch02.html" title="Chapter 2. Using the package" /><link rel="next" href="ch02s02.html" title="Using and customizing the output" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Generating webhelp output<br />Chapter 2. Using the package</h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch02.html">Prev</a>
+ |
+ <a accesskey="u" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" href="ch02s02.html">Next</a></td></tr></table></div></div><div id="content"><div class="section" title="Generating webhelp output"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id36123640"></a>Generating webhelp output</h2></div><div><div class="abstract" title="Abstract"><p class="title"><strong>Abstract</strong></p><p>Installation instructions</p></div></div></div></div><div class="procedure" title="Procedure 2.1. To install the package on Windows"><a id="id36123655"></a><p class="title"><strong>Procedure 2.1. To install the package on Windows</strong></p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The examples in this procedure assume a Windows installation,
+ but the process is the same in other environments,
+ <span class="foreignphrase"><em class="foreignphrase">mutatis mutandis</em></span>.</p></div><ol class="procedure" type="1"><li class="step" title="Step 1"><p>If necessary, install <a class="ulink" href="http://www.java.com/en/download/manual.jsp" target="_top">Java 1.6</a> or
+ higher.</p><ol type="a" class="substeps"><li class="step" title="Step 1.a"><p>Confirm that Java is installed and in your
+ <code class="envar">PATH</code> by typing the following at a command prompt:
+ </p><pre class="programlisting">java -version</pre><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>To build the indexer, you must have the JDK.</p></div></li></ol></li><li class="step" title="Step 2"><p>If necessary, install <a class="ulink" href="http://ant.apache.org/bindownload.cgi" target="_top">Apache Ant</a> 1.6.5
+ or higher.</p><ol type="a" class="substeps"><li class="step" title="Step 2.a"><p>Unzip the Ant binary distribution to a convenient location
+ on your system. For example: <code class="filename">c:\Program
+ Files</code>.</p></li><li class="step" title="Step 2.b"><p>Set the environment variable <code class="envar">ANT_HOME</code> to
+ the top-level Ant directory. For example: <code class="filename">c:\Program
+ Files\apache-ant-1.7.1</code>. </p><div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>See <a class="ulink" href="http://support.microsoft.com/kb/310519" target="_top">How To Manage
+ Environment Variables in Windows XP</a> for information
+ on setting environment variables.</p></div></li><li class="step" title="Step 2.c"><p>Add the Ant <code class="filename">bin</code> directory to your
+ <code class="envar">PATH</code>. For example: <code class="filename">c:\Program
+ Files\apache-ant-1.7.1\bin</code></p></li><li class="step" title="Step 2.d"><p>Confirm that Ant is installed by typing the following at a
+ command prompt: </p><pre class="programlisting">ant -version</pre><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If you see a message about the file
+ <code class="filename">tools.jar</code> being missing, you can safely
+ ignore it.</p></div></li></ol></li><li class="step" title="Step 3"><p>Download <a class="ulink" href="http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip" target="_top">Saxon
+ 6.5.x</a> and unzip the distribution to a convenient location on your file system.
+ You will use the path to <code class="filename">saxon.jar</code> in <a class="xref" href="ch02s01.html#edit-build-properties" title="Step 4">Step 4</a> below.</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The <code class="filename">build.xml</code> has only been tested with Saxon 6.5, though
+ it could be adapted to work with other XSLT processors. However, when you generate
+ output, the Saxon jar must <span class="bold"><strong>not</strong></span> be in your
+ <code class="envar">CLASSPATH</code>.</p></div></li><li class="step" title="Step 4"><a id="edit-build-properties"></a><p>In a text editor, edit the
+ <code class="filename">build.properties</code> file in the webhelp directory
+ and make the changes indicated by the comments:</p><pre class="programlisting"># The path (relative to the build.xml file) to your input document.
+# To use your own input document, create a build.xml file of your own
+# and import this build.xml.
+input-xml=docsrc/readme.xml
+
+# The directory in which to put the output files.
+# This directory is created if it does not exist.
+output-dir=docs
+
+# If you are using a customization layer that imports webhelp.xsl, use
+# this property to point to it.
+stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
+
+# If your document has image directories that need to be copied
+# to the output directory, you can list patterns here.
+# See the Ant documentation for fileset for documentation
+# on patterns.
+#input-images-dirs=images/**,figures/**,graphics/**
+
+# By default, the ant script assumes your images are stored
+# in the same directory as the input-xml. If you store your
+# image directories in another directory, specify it here.
+# and uncomment this line.
+#input-images-basedir=/path/to/image/location
+
+# Modify this so that it points to your copy of the Saxon 6.5 jar.
+xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
+
+# For non-ns version only, this validates the document
+# against a dtd.
+validate-against-dtd=true
+
+# Set this to false if you don't need a search tab.
+webhelp.include.search.tab=true
+
+# indexer-language is used to tell the search indexer which language
+# the docbook is written. This will be used to identify the correct
+# stemmer, and punctuations that differs from language to language.
+# see the documentation for details. en=English, fr=French, de=German,
+# zh=Chinese, ja=Japanese etc.
+webhelp.indexer.language=en</pre></li><li class="step" title="Step 5"><p>Test the package by running the command <code class="code">ant webhelp
+ -Doutput-dir=test-ouput</code> at the command line in the webhelp directory. It should
+ generate a copy of this documentation in the <code class="filename">doc</code>
+ directory. Type <code class="code">start test-output\index.html</code> to open the output in a
+ browser. Once you have confirmed that the process worked, you can delete the <code class="filename">test-output</code> directory. </p><div class="important" title="Important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>The Saxon 6.5 jar should <span class="emphasis"><em>not</em></span> be in your
+ <code class="envar">CLASSPATH</code> when you generate the webhelp output. If you have any
+ problems, try running ant with an empty <code class="envar">CLASSPATH</code>.</p></div></li><li class="step" title="Step 6"><p>To process your own document, simply refer to this package
+ from another <code class="filename">build.xml</code> in arbitrary location on
+ your system:</p><ol type="a" class="substeps"><li class="step" title="Step 6.a"><p>Create a new <code class="filename">build.xml</code> file that
+ defines the name of your source file, the desired output
+ directory, and imports the <code class="filename">build.xml</code> from
+ this package. For example: </p><pre class="programlisting">&lt;project&gt;
+ &lt;property name="input-xml" value="<em class="replaceable"><code>path-to/yourfile.xml</code></em>"/&gt;
+ &lt;property name="input-images-dirs" value="<em class="replaceable"><code>images/** figures/** graphics/**</code></em>"/&gt;
+ &lt;property name="output-dir" value="<em class="replaceable"><code>path-to/desired-output-dir</code></em>"/&gt;
+ &lt;import file="<em class="replaceable"><code>path-to/docbook-webhelp/</code></em>build.xml"/&gt;
+&lt;/project&gt;</pre></li><li class="step" title="Step 6.b"><p>From the directory containing your newly created
+ <code class="filename">build.xml</code> file, type <code class="code">ant
+ webhelp</code> to build your document.</p><div class="important" title="Important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>The Saxon 6.5 jar should <span class="emphasis"><em>not</em></span> be in your
+ <code class="envar">CLASSPATH</code> when you generate the webhelp output. If you have any
+ problems, try running ant with an empty <code class="envar">CLASSPATH</code>.</p></div></li></ol></li></ol></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html
new file mode 100644
index 0000000..091e67c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Using and customizing the output</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="ch02.html" title="Chapter 2. Using the package" /><link rel="prev" href="ch02s01.html" title="Generating webhelp output" /><link rel="next" href="ch02s03.html" title="Building the indexer" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Using and customizing the output<br />Chapter 2. Using the package</h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch02s01.html">Prev</a>
+ |
+ <a accesskey="u" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" href="ch02s03.html">Next</a></td></tr></table></div></div><div id="content"><div class="section" title="Using and customizing the output"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id36124011"></a>Using and customizing the output</h2></div></div></div><p>To deep link to a topic inside the help set, simply link directly
+ to the page. This help system uses no frameset, so nothing further is
+ necessary. </p><div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>See <a class="ulink" href="http://www.sagehill.net/docbookxsl/Chunking.html" target="_top">Chunking into
+ multiple HTML files</a> in Bob Stayton's <a class="ulink" href="http://www.sagehill.net/docbookxsl/index.html" target="_top">DocBook XSL: The
+ Complete Guide</a> for information on controlling output file
+ names and which files are chunked in DocBook.</p></div><p>When you perform a search, the results can include brief
+ summaries. These are populated in one of two ways:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>By adding <code class="sgmltag-element">role="summary"</code> to a
+ <code class="sgmltag-element">para</code> or <code class="sgmltag-element">phrase</code> in the
+ <code class="sgmltag-element">chapter</code> or <code class="sgmltag-element">section</code>.</p></li><li class="listitem"><p>By adding an <code class="sgmltag-element">abstract</code> to the
+ <code class="sgmltag-element">chapterinfo</code> or <code class="sgmltag-element">sectioninfo</code>
+ element.</p></li></ul></div><p>To customize the look and feel of the help, study the following
+ css files:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="filename">docs/common/css/positioning.css</code>: This
+ handles the Positioning of DIVs in appropriate positions. For
+ example, it causes the <code class="code">leftnavigation</code> div to appear
+ on the left, the header on top, and so on. Use this if you need to
+ change the relative positions or need to change the width/height
+ etc.</p></li><li class="listitem"><p><code class="filename">docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css</code>:
+ This is the theming part which adds colors and stuff. This is a
+ default theme comes with <a class="ulink" href="http://jqueryui.com/download" target="_top">jqueryui</a> unchanged. You
+ can get any theme based your interest from this. (Themes are on
+ right navigation bar.) Then replace the css theme folder
+ (theme-redmond) with it, and change the xsl to point to the new
+ css.</p></li><li class="listitem"><p><code class="filename">docs/common/jquery/treeview/jquery.treeview.css</code>:
+ This styles the toc Tree. Generally, you don't have to edit this
+ file.</p></li></ul></div><div class="section" title="Recommended Apache configurations"><div class="titlepage"><div><div><h3 class="title"><a id="id36124136"></a>Recommended Apache configurations</h3></div></div></div><p>If you are serving a long document from an Apache web server, we
+ recommend you make the following additions or changes to your
+ <code class="filename">httpd.conf</code> or <code class="filename">.htaccess</code>
+ file. <em><span class="remark">TODO: Explain what each thing
+ does.</span></em></p><pre class="programlisting">AddDefaultCharSet UTF-8 # <a id="AddDefaultCharSet"></a><img src="images/callouts/1.png" alt="1" border="0" />
+
+ # 480 weeks
+ &lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt; # <a id="CachingSettings"></a><img src="images/callouts/2.png" alt="2" border="0" />
+ Header set Cache-Control "max-age=290304000, public"
+ &lt;/FilesMatch&gt;
+
+ # 2 DAYS
+ &lt;FilesMatch "\.(xml|txt)$"&gt;
+ Header set Cache-Control "max-age=172800, public, must-revalidate"
+ &lt;/FilesMatch&gt;
+
+ # 2 HOURS
+ &lt;FilesMatch "\.(html|htm)$"&gt;
+ Header set Cache-Control "max-age=7200, must-revalidate"
+ &lt;/FilesMatch&gt;
+
+ # compress text, html, javascript, css, xml:
+ AddOutputFilterByType DEFLATE text/plain # <a id="CompressSetting"></a><img src="images/callouts/3.png" alt="3" border="0" />
+ AddOutputFilterByType DEFLATE text/html
+ AddOutputFilterByType DEFLATE text/xml
+ AddOutputFilterByType DEFLATE text/css
+ AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE application/xhtml+xml
+ AddOutputFilterByType DEFLATE application/rss+xml
+ AddOutputFilterByType DEFLATE application/javascript
+ AddOutputFilterByType DEFLATE application/x-javascript
+
+ # Or, compress certain file types by extension:
+ &lt;Files *.html&gt;
+ SetOutputFilter DEFLATE
+ &lt;/Files&gt;
+ </pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a href="#AddDefaultCharSet"><img src="images/callouts/1.png" alt="1" border="0" /></a> </p></td><td valign="top" align="left"><p>See <a class="ulink" href="http://www.sagehill.net/docbookxsl/SpecialChars.html" target="_top">Odd
+ characters in HTML output</a> in Bob Stayton's book
+ <em class="citetitle">DocBook XSL: The Complete Guide</em> for more
+ information about this setting.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#CachingSettings"><img src="images/callouts/2.png" alt="2" border="0" /></a> </p></td><td valign="top" align="left"><p>These lines and those that follow cause the browser to
+ cache various resources such as bitmaps and JavaScript files.
+ Note that caching JavaScript files could cause your users to
+ have stale search indexes if you update your document since the
+ search index is stored in JavaScript files.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#CompressSetting"><img src="images/callouts/3.png" alt="3" border="0" /></a> </p></td><td valign="top" align="left"><p>These lines cause the the server to compress html, css,
+ and JavaScript files and the brower to uncompress them to
+ improve download performance.</p></td></tr></table></div></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html
new file mode 100644
index 0000000..4e0efde
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Building the indexer</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="ch02.html" title="Chapter 2. Using the package" /><link rel="prev" href="ch02s02.html" title="Using and customizing the output" /><link rel="next" href="ch02s04.html" title="Adding support for other (non-CJKV) languages" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Building the indexer<br />Chapter 2. Using the package</h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch02s02.html">Prev</a>
+ |
+ <a accesskey="u" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" href="ch02s04.html">Next</a></td></tr></table></div></div><div id="content"><div class="section" title="Building the indexer"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id36124227"></a>Building the indexer</h2></div></div></div><p class="summary">To build the indexer, you must have installed the
+ JDK version 1.5 or higher and set the <code class="envar">ANT_HOME</code>
+ environment variable. Run <code class="code">ant build-indexer</code> to recompile
+ <code class="filename">nw-cms.jar</code></p><a id="id36124248" class="indexterm"></a><a id="id36124257" class="indexterm"></a></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html
new file mode 100644
index 0000000..d3ba7e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Adding support for other (non-CJKV) languages</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="ch02.html" title="Chapter 2. Using the package" /><link rel="prev" href="ch02s03.html" title="Building the indexer" /><link rel="next" href="ch03.html" title="Chapter 3. Developer Docs" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Adding support for other (non-CJKV) languages<br />Chapter 2. Using the package</h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch02s03.html">Prev</a>
+ |
+ <a accesskey="u" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" href="ch03.html">Next</a></td></tr></table></div></div><div id="content"><div class="section" title="Adding support for other (non-CJKV) languages"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id36124269"></a>Adding support for other (non-CJKV) languages</h2></div></div></div><p>To support stemming for a language, the search mechanism requires
+ a stemmer implemented in both Java and JavaScript. The Java version is
+ used by the indexer and the JavaScript verison is used to stem the
+ user's input on the search form. Currently the search mechanism supports
+ stemming for English and German. In addition, Java stemmers are included
+ for the following languages. Therefore, to support these languages, you
+ only need to implement the stemmer in JavaScript and add it to the
+ template. If you do undertake this task, please consider contributing
+ the JavaScript version back to this project and to <a class="ulink" href="http://snowball.tartarus.org/texts/stemmersoverview.html" target="_top">Martin
+ Porter's project</a>.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Danish</p></li><li class="listitem"><p>Dutch</p></li><li class="listitem"><p>Finnish</p></li><li class="listitem"><p>Hungarian</p></li><li class="listitem"><p>Italian</p></li><li class="listitem"><p>Norwegian</p></li><li class="listitem"><p>Portuguese</p></li><li class="listitem"><p>Romanian</p></li><li class="listitem"><p>Russian</p></li><li class="listitem"><p>Spanish</p></li><li class="listitem"><p>Swedish</p></li><li class="listitem"><p>Turkish</p></li></ul></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html
new file mode 100644
index 0000000..0e608fd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Chapter 3. Developer Docs</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="prev" href="ch02s04.html" title="Adding support for other (non-CJKV) languages" /><link rel="next" href="ch03s01.html" title="Design" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Chapter 3. Developer Docs<br /> </h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch02s04.html">Prev</a> 
+ |
+ <a accesskey="n" href="ch03s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter" title="Chapter 3. Developer Docs"><div class="titlepage"><div><div><h2 class="title"><a id="id36124370"></a>Chapter 3. Developer Docs</h2></div></div></div><div class="toc"><p><strong>Contents</strong></p><dl><dt><span class="section"><a href="ch03s01.html">Design</a></span></dt><dt><span class="section"><a href="ch03s02.html">Search</a></span></dt><dd><dl><dt><span class="section"><a href="ch03s02.html#id36124646">New Stemmers</a></span></dt></dl></dd></dl></div><p class="summary">This chapter provides an overview of how webhelp is implemented.</p><p>The table of contents and search panes are implemented as divs and
+ rendered as if they were the left pane in a frameset. As a result, the
+ page must save the state of the table of contents and the search in
+ cookies when you navigate away from a page. When you load a new page, the
+ page reads these cookies and restores the state of the table of contents
+ tree and search. The result is that the help system behaves exactly as if
+ it were a frameset.</p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch03s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html
new file mode 100644
index 0000000..f41f801
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="ch03.html" title="Chapter 3. Developer Docs" /><link rel="prev" href="ch03.html" title="Chapter 3. Developer Docs" /><link rel="next" href="ch03s02.html" title="Search" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Design<br />Chapter 3. Developer Docs</h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch03.html">Prev</a>
+ |
+ <a accesskey="u" href="ch03.html">Up</a>
+ |
+ <a accesskey="n" href="ch03s02.html">Next</a></td></tr></table></div></div><div id="content"><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id36124388"></a>Design</h2></div></div></div><p class="summary">An overview of webhelp page structure.</p><p>DocBook WebHelp page structure is fully built on css-based design
+ abandoning frameset structure. Overall page structure can be divided in to three main sections
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Header: Header is a separate Div which include company logo,
+ navigation button(prev, next etc.), page title and heading of parent topic.</p></li><li class="listitem"><p>Content: This includes the content of the documentation. The processing of this part is
+ done by <a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl" target="_top">
+ DocBook XSL Chunking customization</a>. Few further css-styling applied from
+ <code class="filename">positioning.css</code>.
+ </p></li><li class="listitem"><p>Left Navigation: This includes the table of contents and search tab. This
+ is customized using <a class="ulink" href="http://jqueryui.com/" target="_top">jquery-ui</a> styling.</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Tabbed Navigation: The navigation pane is organized in to two tabs.
+ Contents tab, and Search tab. Tabbed output is achieved using
+ <a class="ulink" href="http://docs.jquery.com/UI/Tabs" target="_top">JQuery Tabs plugin</a>.
+ </p></li><li class="listitem"><p>Table of Contents (TOC) tree: When building the chunked html from the
+ docbook file, Table of Contents is generated as an Unordered List (a list
+ made from <code class="code">&lt;ul&gt; &lt;li&gt;</code> tags). When page loads in the browser,
+ we apply styling to it to achieve the nice look that you see. Styling for TOC
+ tree is done by a JQuery UI plugin called
+ <a class="ulink" href="http://bassistance.de/jquery-plugins/jquery-plugin-treeview/" target="_top">
+ TreeView</a>. We can generate the tree easily by following javascript code:
+
+</p><pre class="programlisting">
+//Generate the tree
+$("#tree").treeview({
+collapsed: true,
+animated: "medium",
+control: "#sidetreecontrol",
+persist: "cookie"
+});
+</pre><p>
+ </p></li><li class="listitem"><p>Search Tab: This includes the search feature.</p></li></ul></div></li></ul></div><p>
+ </p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html
new file mode 100644
index 0000000..c4ba872
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>Search</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="up" href="ch03.html" title="Chapter 3. Developer Docs" /><link rel="prev" href="ch03s01.html" title="Design" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">Search<br />Chapter 3. Developer Docs</h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td><a accesskey="p" href="ch03s01.html">Prev</a>
+ |
+ <a accesskey="u" href="ch03.html">Up</a></td></tr></table></div></div><div id="content"><div class="section" title="Search"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id36124495"></a>Search</h2></div></div></div><p class="summary">Overview design of Search mechanism.</p><p>
+ The searching is a fully client-side implementation of querying texts for
+ content searching, and no server is involved. That means when a user enters a query,
+ it is processed by JavaScript inside the browser, and displays the matching results by
+ comparing the query with a generated 'index', which too reside in the client-side web browser.
+
+ Mainly the search mechanism has two parts.
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Indexing: First we need to traverse the content in the docs/content folder and index
+ the words in it. This is done by <code class="filename">nw-cms.jar</code>. You can invoke it by
+ <code class="code">ant index</code> command from the root of webhelp of directory. You can recompile it
+ again and build the jar file by <code class="code">ant build-indexer</code>. Indexer has some extensive
+ support for such as stemming of words. Indexer has extensive support for English, German,
+ French languages. By extensive support, what I meant is that those texts are stemmed
+ first, to get the root word and then indexes them. For CJK (Chinese, Japanese, Korean)
+ languages, it uses bi-gram tokenizing to break up the words. (CJK languages does not have
+ spaces between words.)
+ </p><p>
+ When we run <code class="code">ant index</code>, it generates five output files:
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p><code class="filename">htmlFileList.js</code> - This contains an array named <code class="code">fl</code> which stores details
+ all the files indexed by the indexer.
+ </p></li><li class="listitem"><p><code class="filename">htmlFileInfoList.js</code> - This includes some meta data about the indexed files in an array
+ named <code class="code">fil</code>. It includes details about file name, file (html) title, a summary
+ of the content.Format would look like,
+ <code class="code">fil["4"]= "ch03.html@@@Developer Docs@@@This chapter provides an overview of how webhelp is implemented.";</code>
+ </p></li><li class="listitem"><p><code class="filename">index-*.js</code> (Three index files) - These three files actually stores the index of the content.
+ Index is added to an array named <code class="code">w</code>.</p></li></ul></div><p>
+
+ </p></li><li class="listitem"><p>
+ Querying: Query processing happens totally in client side. Following JavaScript files handles them.
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p><code class="filename">nwSearchFnt.js</code> - This handles the user query and returns the search results. It does query
+ word tokenizing, drop unnecessary punctuations and common words, do stemming if docbook language
+ supports it, etc.</p></li><li class="listitem"><p><code class="filename">{$indexer-language-code}_stemmer.js</code> - This includes the stemming library.
+ <code class="filename">nwSearchFnt.js</code> file calls <code class="code">stemmer</code> method in this file for stemming.
+ ex: <code class="code">var stem = stemmer(foobar);</code>
+ </p></li></ul></div><p>
+ </p></li></ul></div><p>
+ </p><div class="section" title="New Stemmers"><div class="titlepage"><div><div><h3 class="title"><a id="id36124646"></a>New Stemmers</h3></div></div></div><p class="summary">Adding new Stemmers is very simple.</p><p>Currently, only English, French, and German stemmers are integrated in to WebHelp. But the code is
+ extensible such that you can add new stemmers easily by few steps.</p><p>What you need:
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>You'll need two versions of the stemmer; One written in JavaScript, and another in Java. But fortunately,
+ Snowball contains Java stemmers for number of popular languages, and are already included with the package.
+ You can see the full list in <a class="ulink" href="ch02s04.html" target="_top">Adding support for other (non-CJKV) languages</a>.
+ If your language is listed there,
+ Then you have to find javascript version of the stemmer. Generally, new stemmers are getting added in to
+ <a class="ulink" href="http://snowball.tartarus.org/otherlangs/index.html" target="_top">Snowball Stemmers in other languages</a> location.
+ If javascript stemmer for your language is available, then download it. Else, you can write a new stemmer in
+ JavaScript using SnowBall algorithm fairly easily. Algorithms are at
+ <a class="ulink" href="http://snowball.tartarus.org/" target="_top">Snowball</a>.
+ </p></li><li class="listitem"><p>Then, name the JS stemmer exactly like this: <code class="filename">{$language-code}_stemmer.js</code>. For example,
+ for Italian(it), name it as, <code class="filename">it_stemmer.js</code>. Then, copy it to the
+ <code class="filename">docbook-webhelp/template/content/search/stemmers/</code> folder. (I assumed
+ <code class="filename">docbook-webhelp</code> is the root folder for webhelp.)
+ </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Make sure you changed the <code class="code">webhelp.indexer.language</code> property in <code class="filename">build.properties</code>
+ to your language.
+ </p></div><p>
+
+ </p></li><li class="listitem"><p>Now two easy changes needed for the indexer.</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Open <code class="filename">docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java</code> in
+ a text editor and add your language code to the <code class="code">supportedLanguages</code> String Array. </p><div class="example"><a id="id36124759"></a><p class="title"><strong>Example 3.1. Add new language to supportedLanguages array</strong></p><div class="example-contents"><p>
+ change the Array from,
+</p><pre class="programlisting">
+private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"};
+ //currently extended support available for
+ // English, German, French and CJK (Chinese, Japanese, Korean) languages only.
+</pre><p>
+ To,</p><pre class="programlisting">
+private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", <span class="emphasis"><em>"it"</em></span>};
+ //currently extended support available for
+ // English, German, French, CJK (Chinese, Japanese, Korean), and Italian languages only.
+ </pre></div></div><br class="example-break" /></li><li class="listitem"><p>
+ Now, open <code class="filename">docbook-webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java</code> and
+ add the following line to the code where it initializes the Stemmer (Search for
+ <code class="code">SnowballStemmer stemmer;</code>). Then add code to initialize the stemmer Object in your language.
+ It's self understandable. See the example. The class names are at:
+ <code class="filename">docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/</code>.
+ </p><div class="example"><a id="id36124809"></a><p class="title"><strong>Example 3.2. initialize correct stemmer based on the <code class="code">webhelp.indexer.language</code> specified</strong></p><div class="example-contents"><pre class="programlisting">
+ SnowballStemmer stemmer;
+ if(indexerLanguage.equalsIgnoreCase("en")){
+ stemmer = new EnglishStemmer();
+ } else if (indexerLanguage.equalsIgnoreCase("de")){
+ stemmer= new GermanStemmer();
+ } else if (indexerLanguage.equalsIgnoreCase("fr")){
+ stemmer= new FrenchStemmer();
+ }
+<span class="emphasis"><em>else if (indexerLanguage.equalsIgnoreCase("it")){ //If language code is "it" (Italian)
+ stemmer= new italianStemmer(); //Initialize the stemmer to <code class="code">italianStemmer</code> object.
+ } </em></span>
+ else {
+ stemmer = null;
+ }
+</pre></div></div><br class="example-break" /></li></ul></div></li></ul></div><p>
+ </p><p>That's all. Now run <code class="code">ant build-indexer</code> to compile and build the java code.
+ Then, run <code class="code">ant webhelp</code> to generate the output from your docbook file.
+ For any questions, contact us or email to the docbook mailing list
+ <code class="email">&lt;<a class="email" href="mailto:docbook-apps@lists.oasis-open.org">docbook-apps@lists.oasis-open.org</a>&gt;</code>.
+ </p></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html
new file mode 100644
index 0000000..54ae642
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=7" />
+<title>README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML" /><link rel="next" href="ch01.html" title="Chapter 1. Introduction" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-897";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ </style><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="../common/css/positioning.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css" /><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css" /><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="Company Logo" /><h1 align="center">README: Web-based Help from DocBook XML<br /> </h1><div id="navheader" align="right"><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
+ </a></td><td><img src="../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Toggle search result highlighting" /></td><td> 
+ |
+ <a accesskey="n" href="ch01.html">Next</a></td></tr></table></div></div><div id="content"><div class="book" title="README: Web-based Help from DocBook XML"><div class="titlepage"><div><div><h1 class="title"><a id="id36085812"></a>README: Web-based Help from DocBook XML</h1></div><div><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Cramer</span></h3><code class="email">&lt;<a class="email" href="mailto:dcramer AT motive DOT com">dcramer AT motive DOT com</a>&gt;</code><code class="email">&lt;<a class="email" href="mailto:david AT thingbag DOT net">david AT thingbag DOT net</a>&gt;</code></div></div><div><div class="author"><h3 class="author"><span class="firstname">Kasun</span> <span class="surname">Gajasinghe</span></h3><code class="email">&lt;<a class="email" href="mailto:kasunbg AT gmail DOT com">kasunbg AT gmail DOT com</a>&gt;</code></div></div><div><p class="copyright">Copyright © 2008-2010 Kasun Gajasinghe, David Cramer</p></div><div><div class="legalnotice" title="Legal Notice"><a id="id36122924"></a><p>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the <span class="quote">“<span class="quote">Software</span>â€</span>), to deal in the Software without
+ restriction, including without limitation the rights to use, copy,
+ modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to
+ do so, subject to the following conditions: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The above copyright notice and this permission notice shall
+ be included in all copies or substantial portions of the
+ Software.</p></li><li class="listitem"><p>Except as contained in this notice, the names of individuals
+ credited with contribution to this software shall not be used in
+ advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization from
+ the individuals in question.</p></li><li class="listitem"><p>Any stylesheet derived from this Software that is publicly
+ distributed will be identified with a different name and the
+ version strings in any derived Software will be changed so that no
+ possibility of confusion between the derived package and this
+ Software will exist.</p></li></ul></div><p title="Warranty:"><strong>Warranty: </strong>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL DAVID CRAMER, KASUN GAJASINGHE, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR
+ ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p><p>This package is maintained by Kasun Gajasinghe, <code class="email">&lt;<a class="email" href="mailto:kasunbg AT&#10; gmail DOT com">kasunbg AT
+ gmail DOT com</a>&gt;</code> and David Cramer, <code class="email">&lt;<a class="email" href="mailto:david AT thingbag DOT&#10; net">david AT thingbag DOT
+ net</a>&gt;</code>.</p><p>This package also includes the following software written and
+ copyrighted by others:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Files in <code class="filename">template/common/jquery</code> are
+ copyrighted by <a class="ulink" href="http://jquery.com/" target="_top">JQuery</a>
+ under the MIT License. The file
+ <code class="filename">jquery.cookie.js</code> Copyright (c) 2006 Klaus
+ Hartl under the MIT license.</p><a id="id36123021" class="indexterm"></a></li><li class="listitem"><p>Some files in the <code class="filename">template/content/search</code> and <code class="filename">indexer</code> directories were originally
+ part of N. Quaine's htmlsearch DITA plugin. The htmlsearch DITA
+ plugin is available from the <a class="ulink" href="http://tech.groups.yahoo.com/group/dita-users/files/Demos/" target="_top">files
+ page</a> of the DITA-users yahoogroup. The htmlsearch plugin
+ was released under a BSD-style license. See
+ <code class="filename">indexer/license.txt</code> for details. <a id="id36123055" class="indexterm"></a> <a id="id36123063" class="indexterm"></a></p></li><li class="listitem"><p>Stemmers from the <a class="ulink" href="http://snowball.tartarus.org/texts/stemmersoverview.html" target="_top">Snowball
+ project</a> released under a BSD license.</p></li><li class="listitem"><p>Code from the <a class="ulink" href="http://lucene.apache.org/" target="_top">Apache
+ Lucene</a> search engine provides support for tokenizing
+ Chinese, Japanese, and Korean content released under the Apache
+ 2.0 license. </p></li></ul></div><p>
+ Webhelp for DocBook was developed as a <a class="ulink" href="http://socghop.appspot.com" target="_top">Google Summer of Code</a> project.
+ </p></div></div><div><p class="pubdate">August 2010</p></div></div><hr /></div><div class="toc"><p><strong>Contents</strong></p><dl><dt><span class="chapter"><a href="ch01.html">1. Introduction</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Using the package</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s01.html">Generating webhelp output</a></span></dt><dt><span class="section"><a href="ch02s02.html">Using and customizing the output</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">Building the indexer</a></span></dt><dt><span class="section"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Developer Docs</a></span></dt><dd><dl><dt><span class="section"><a href="ch03s01.html">Design</a></span></dt><dt><span class="section"><a href="ch03s02.html">Search</a></span></dt><dd><dl><dt><span class="section"><a href="ch03s02.html#id36124646">New Stemmers</a></span></dt></dl></dd></dl></dd></dl></div><div class="list-of-examples"><p><strong>List of Examples</strong></p><dl><dt>3.1. <a href="ch03s02.html#id36124759">Add new language to supportedLanguages array</a></dt><dt>3.2. <a href="ch03s02.html#id36124809">initialize correct stemmer based on the <code class="code">webhelp.indexer.language</code> specified</a></dt></dl></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr></table></div></div><div><div id="leftnavigation" style="padding-top:3px; background-color:white;"><div id="tabs"><ul><li><a href="#treeDiv"><em>Contents</em></a></li><li><a href="#searchDiv"><em>Search</em></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;" /><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html">Introduction</a></span></li><li><span class="file"><a href="ch02.html">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id36124136">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html">Building the indexer</a></span></li><li><span class="file"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></li></ul></li><li><span class="file"><a href="ch03.html">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html">Design</a></span></li><li><span class="file"><a href="ch03s02.html">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id36124646">New Stemmers</a></span></li></ul></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm" id="ditaSearch_Form"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" /> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch" /></center></fieldset></form></div><div id="searchResults"><center></center></div></div></div></div></div></body></html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js
new file mode 100644
index 0000000..4517cb8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js
@@ -0,0 +1,10 @@
+fil = new Array();
+fil["0"]= "ch01.html@@@Chapter 1. Introduction@@@Overview of the package.";
+fil["1"]= "ch02.html@@@Chapter 2. Using the package@@@The following sections describe how to install and use the package on Windows.";
+fil["2"]= "ch02s01.html@@@Generating webhelp output@@@Installation instructions";
+fil["3"]= "ch02s02.html@@@Using and customizing the output@@@null";
+fil["4"]= "ch02s03.html@@@Building the indexer@@@To build the indexer, you must have installed the JDK version 1.5 or higher and set the ANT_HOME environment variable. Run ant build-indexer to recompile nw-cms.jar";
+fil["5"]= "ch02s04.html@@@Adding support for other (non-CJKV) languages@@@null";
+fil["6"]= "ch03.html@@@Chapter 3. Developer Docs@@@This chapter provides an overview of how webhelp is implemented.";
+fil["7"]= "ch03s01.html@@@Design@@@An overview of webhelp page structure.";
+fil["8"]= "ch03s02.html@@@Search@@@Adding new Stemmers is very simple.";
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js
new file mode 100644
index 0000000..c09eccf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js
@@ -0,0 +1,11 @@
+//List of files which are indexed.
+fl = new Array();
+fl["0"]= "ch01.html";
+fl["1"]= "ch02.html";
+fl["2"]= "ch02s01.html";
+fl["3"]= "ch02s02.html";
+fl["4"]= "ch02s03.html";
+fl["5"]= "ch02s04.html";
+fl["6"]= "ch03.html";
+fl["7"]= "ch03s01.html";
+fl["8"]= "ch03s02.html";
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js
new file mode 100644
index 0000000..8af5f1e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js
@@ -0,0 +1,224 @@
+var indexerLanguage="en";
+//Auto generated index for searching.
+w["-"]="8";
+w["-doutput-dir"]="2";
+w["-version"]="2";
+w["1"]="0,2,4,8";
+w["140"]="0";
+w["172800"]="3";
+w["2"]="1,2,3,8";
+w["290304000"]="3";
+w["3"]="6,8";
+w["4"]="2,8";
+w["480"]="3";
+w["5"]="2,4";
+w["6"]="2";
+w["7"]="2";
+w["7200"]="3";
+w["8"]="3";
+w["_stemmer"]="8";
+w["abandon"]="7";
+w["abil"]="0";
+w["abstract"]="0,2,3";
+w["achiev"]="7";
+w["actual"]="8";
+w["ad"]="0,1,3,5,8";
+w["adapt"]="2";
+w["add"]="0,2,3,5,8";
+w["adddefaultcharset"]="3";
+w["addit"]="3,5";
+w["addoutputfilterbytyp"]="3";
+w["advanc"]="0";
+w["again"]="8";
+w["against"]="2";
+w["algorithm"]="8";
+w["all"]="0,8";
+w["allow"]="0";
+w["alreadi"]="8";
+w["and"]="0,1,2,3,4,5,6,7,8";
+w["ani"]="2,3,8";
+w["anim"]="7";
+w["anoth"]="2,8";
+w["ant"]="0,2,4,8";
+w["ant_hom"]="2,4";
+w["apach"]="1,2,3";
+w["apache-ant-1"]="2";
+w["appear"]="0,3";
+w["appli"]="7";
+w["applic"]="0,3";
+w["appropri"]="0,3";
+w["arbitrari"]="2";
+w["array"]="8";
+w["assum"]="2,8";
+w["attribut"]="0";
+w["auto-synchron"]="0";
+w["autom"]="0";
+w["automat"]="0";
+w["avail"]="8";
+w["away"]="6";
+w["back"]="5";
+w["bar"]="3";
+w["base"]="0,3,8";
+w["be"]="2";
+w["been"]="0,2";
+w["behav"]="6";
+w["below"]="2";
+w["between"]="8";
+w["bi-gram"]="8";
+w["bin"]="2";
+w["binari"]="2";
+w["bitmap"]="3";
+w["bob"]="3";
+w["book"]="3";
+w["boolean"]="0";
+w["both"]="5";
+w["box"]="0";
+w["breadcrumb"]="0";
+w["break"]="8";
+w["brief"]="0,3";
+w["brower"]="3";
+w["browser"]="2,3,7,8";
+w["build"]="0,1,2,4,7,8";
+w["build-index"]="4,8";
+w["built"]="7";
+w["but"]="0,2,8";
+w["button"]="0,7";
+w["c"]="2";
+w["cach"]="3";
+w["cache-control"]="3";
+w["call"]="7,8";
+w["can"]="0,2,3,7,8";
+w["card"]="0";
+w["caus"]="3";
+w["certain"]="3";
+w["ch03"]="8";
+w["chang"]="2,3,8";
+w["chapter"]="0,1,3,6,8";
+w["chapterinfo"]="3";
+w["charact"]="0,3";
+w["chines"]="0,2,8";
+w["chm"]="0";
+w["chunk"]="3,7";
+w["cjk"]="8";
+w["cjkanalyz"]="0";
+w["class"]="8";
+w["classpath"]="2";
+w["client"]="8";
+w["client-sid"]="8";
+w["cn"]="8";
+w["code"]="0,7,8";
+w["collaps"]="0,7";
+w["color"]="3";
+w["come"]="3";
+w["command"]="2,8";
+w["comment"]="2";
+w["common"]="0,3,8";
+w["compani"]="7";
+w["compar"]="8";
+w["compil"]="8";
+w["complet"]="3";
+w["compress"]="3";
+w["conf"]="3";
+w["configur"]="1,3";
+w["confirm"]="2";
+w["consid"]="0,5";
+w["contact"]="8";
+w["contain"]="2,8";
+w["content"]="0,1,6,7,8";
+w["contribut"]="5";
+w["control"]="0,3,7";
+w["conveni"]="2";
+w["cooki"]="6,7";
+w["copi"]="2,8";
+w["correct"]="2,8";
+w["could"]="2,3";
+w["creat"]="2";
+w["creator"]="0";
+w["css"]="3,7";
+w["css-base"]="7";
+w["css-style"]="7";
+w["current"]="0,5,8";
+w["custom"]="1,2,3,7";
+w["danish"]="5";
+w["data"]="8";
+w["day"]="3";
+w["decid"]="0";
+w["deep"]="3";
+w["default"]="2,3";
+w["defin"]="2";
+w["deflat"]="3";
+w["delet"]="2";
+w["describ"]="1";
+w["descript"]="0";
+w["design"]="6,7,8";
+w["desir"]="2";
+w["desired-output-dir"]="2";
+w["detail"]="2,8";
+w["develop"]="6";
+w["differ"]="2";
+w["dir"]="2";
+w["direct"]="3";
+w["directori"]="2,8";
+w["disabl"]="0";
+w["display"]="8";
+w["distribut"]="2";
+w["div"]="0,3,6,7";
+w["divid"]="7";
+w["do"]="5,8";
+w["doc"]="2,3,6,8";
+w["docbook"]="0,2,3,7,8";
+w["docbook-apps@list"]="8";
+w["docbook-webhelp"]="2,8";
+w["docs@@@"]="8";
+w["docsrc"]="2";
+w["document"]="0,2,3,7";
+w["doe"]="0,2,3,8";
+w["domain"]="0";
+w["don"]="0,2,3";
+w["done"]="7,8";
+w["download"]="2,3,8";
+w["drop"]="8";
+w["dtd"]="2";
+w["dutch"]="5";
+w["each"]="0,3";
+w["easi"]="8";
+w["easili"]="7,8";
+w["eclips"]="0";
+w["edit"]="2,3";
+w["editor"]="2,8";
+w["element"]="3";
+w["els"]="8";
+w["email"]="8";
+w["empti"]="2";
+w["engin"]="0";
+w["english"]="0,2,5,8";
+w["englishstemm"]="8";
+w["enhanc"]="0";
+w["enter"]="8";
+w["environ"]="2,4";
+w["equalsignorecas"]="8";
+w["etc"]="2,3,7,8";
+w["even"]="0";
+w["ex"]="8";
+w["exact"]="6,8";
+w["exampl"]="2,3,8";
+w["exclud"]="0";
+w["exist"]="2";
+w["expand"]="0";
+w["explain"]="3";
+w["expos"]="0";
+w["ext"]="8";
+w["extend"]="8";
+w["extens"]="3,8";
+w["fair"]="8";
+w["fals"]="2";
+w["featur"]="0,7";
+w["feel"]="3";
+w["few"]="7,8";
+w["figur"]="2";
+w["fil"]="8";
+w["file"]="0,2,3,7,8";
+w["fileset"]="2";
+w["filesmatch"]="3";
+w["find"]="8";
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js
new file mode 100644
index 0000000..ebab219
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js
@@ -0,0 +1,223 @@
+//Auto generated index for searching.
+w["finnish"]="5";
+w["first"]="0,8";
+w["five"]="8";
+w["fl"]="8";
+w["flv"]="3";
+w["folder"]="3,8";
+w["follow"]="1,2,3,5,7,8";
+w["foobar"]="8";
+w["form"]="0,5";
+w["format"]="0,8";
+w["fortun"]="8";
+w["fr"]="2,8";
+w["frameset"]="0,3,6,7";
+w["french"]="0,2,8";
+w["frenchstemm"]="8";
+w["full"]="0,8";
+w["fulli"]="7,8";
+w["function"]="0";
+w["further"]="3,7";
+w["futur"]="0";
+w["general"]="0,3,8";
+w["generat"]="0,1,2,7,8";
+w["gentext"]="0";
+w["german"]="0,2,5,8";
+w["germanstemm"]="8";
+w["get"]="0,3,8";
+w["gif"]="3";
+w["googl"]="0";
+w["graphic"]="2";
+w["group"]="0";
+w["guid"]="3";
+w["h"]="0";
+w["handl"]="3,8";
+w["happen"]="8";
+w["hard"]="0";
+w["has"]="2,8";
+w["have"]="2,3,4,8";
+w["he"]="0";
+w["head"]="7";
+w["header"]="0,3,7";
+w["height"]="3";
+w["help"]="0,3,6";
+w["here"]="2";
+w["higher"]="2,4";
+w["highlight"]="0";
+w["hour"]="3";
+w["howev"]="2";
+w["htaccess"]="3";
+w["htm"]="3";
+w["html"]="0,2,3,7,8";
+w["html@@@develop"]="8";
+w["htmlfileinfolist"]="8";
+w["htmlfilelist"]="8";
+w["httpd"]="3";
+w["hungarian"]="5";
+w["ico"]="3";
+w["identifi"]="2";
+w["if"]="0,2,3,5,6,8";
+w["ignor"]="2";
+w["imag"]="2";
+w["implement"]="0,5,6,8";
+w["import"]="0,2";
+w["imposs"]="0";
+w["improv"]="0,3";
+w["includ"]="0,2,3,5,7,8";
+w["index"]="0,1,2,3,4,5,8";
+w["index-"]="8";
+w["indexer-languag"]="2";
+w["indexer-language-cod"]="8";
+w["indexerlanguag"]="8";
+w["indexertask"]="8";
+w["indic"]="2";
+w["inform"]="2,3";
+w["initi"]="8";
+w["input"]="2,5";
+w["input-images-basedir"]="2";
+w["input-images-dir"]="2";
+w["input-xml"]="2";
+w["insid"]="3,8";
+w["instal"]="1,2,4";
+w["instruct"]="2";
+w["integr"]="0,8";
+w["interest"]="3";
+w["internet"]="0";
+w["into"]="0,3";
+w["introduct"]="0";
+w["invok"]="8";
+w["involv"]="8";
+w["it_stemm"]="8";
+w["italian"]="5,8";
+w["italianstemm"]="8";
+w["item"]="0";
+w["ix01"]="0";
+w["ja"]="2,8";
+w["japanes"]="0,2,8";
+w["jar"]="2,4,8";
+w["java"]="2,5,8";
+w["javascript"]="0,3,5,7,8";
+w["jdk"]="2,4";
+w["jpeg"]="3";
+w["jpg"]="3";
+w["jqueri"]="3,7";
+w["jquery-ui"]="7";
+w["jquery-ui-1"]="3";
+w["jqueryui"]="3";
+w["js"]="3,8";
+w["know"]="0";
+w["ko"]="8";
+w["korean"]="0,8";
+w["languag"]="0,1,2,5,8";
+w["language-cod"]="8";
+w["layer"]="2";
+w["left"]="3,6,7";
+w["leftnavig"]="3";
+w["legal"]="0";
+w["li"]="7";
+w["librari"]="8";
+w["like"]="0,8";
+w["limit"]="0";
+w["line"]="2,3,8";
+w["link"]="0,3";
+w["list"]="0,2,7,8";
+w["ll"]="8";
+w["load"]="6,7";
+w["locat"]="2,8";
+w["log"]="0";
+w["logo"]="7";
+w["long"]="3";
+w["look"]="3,7,8";
+w["lucen"]="0";
+w["made"]="7";
+w["mail"]="8";
+w["main"]="7,8";
+w["make"]="0,2,3,8";
+w["manag"]="2";
+w["martin"]="5";
+w["match"]="8";
+w["max-ag"]="3";
+w["mean"]="8";
+w["meant"]="8";
+w["mechan"]="5,8";
+w["medium"]="7";
+w["messag"]="2";
+w["meta"]="8";
+w["method"]="8";
+w["microsoft"]="0";
+w["miss"]="2";
+w["model"]="0";
+w["modifi"]="2";
+w["more"]="0,3";
+w["move"]="0";
+w["multipl"]="3";
+w["must"]="2,4,6";
+w["must-revalid"]="3";
+w["mutandi"]="2";
+w["mutati"]="2";
+w["my"]="0";
+w["name"]="0,2,3,8";
+w["navig"]="3,6,7";
+w["necessari"]="2,3";
+w["need"]="2,3,5,8";
+w["new"]="2,3,6,8";
+w["newli"]="2";
+w["next"]="7";
+w["nexwav"]="8";
+w["nice"]="7";
+w["no"]="3,8";
+w["non-cjkv"]="1,5,8";
+w["non-head"]="0";
+w["non-n"]="2";
+w["norwegian"]="5";
+w["not"]="0,2,8";
+w["note"]="2,3,8";
+w["noth"]="3";
+w["notic"]="0";
+w["now"]="8";
+w["nquindex"]="8";
+w["null"]="8";
+w["number"]="8";
+w["nw-cms"]="4,8";
+w["nwsearchfnt"]="8";
+w["oasis-open"]="8";
+w["object"]="8";
+w["odd"]="3";
+w["off"]="0";
+w["onc"]="2";
+w["one"]="3,8";
+w["onli"]="2,5,8";
+w["open"]="2,8";
+w["oper"]="0";
+w["option"]="0";
+w["order"]="0";
+w["org"]="8";
+w["organ"]="7";
+w["other"]="0,1,2,5,8";
+w["out"]="0";
+w["output"]="0,1,2,3,7,8";
+w["output-dir"]="2";
+w["overal"]="7";
+w["overview"]="0,6,7,8";
+w["own"]="0,2";
+w["packag"]="0,1,2,8";
+w["page"]="0,3,6,7";
+w["pane"]="0,6,7";
+w["para"]="3";
+w["param"]="0";
+w["paramet"]="0";
+w["parameter"]="0";
+w["parent"]="7";
+w["part"]="3,7,8";
+w["path"]="2";
+w["path-"]="2";
+w["pattern"]="0,2";
+w["pdf"]="0,3";
+w["perform"]="0,3";
+w["persist"]="0,7";
+w["phrase"]="3";
+w["plain"]="3";
+w["pleas"]="5";
+w["plugin"]="7";
+w["png"]="3";
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js
new file mode 100644
index 0000000..b71ffe6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js
@@ -0,0 +1,221 @@
+//Auto generated index for searching.
+w["point"]="2,3";
+w["popul"]="0,3";
+w["popular"]="8";
+w["porter"]="5";
+w["portugues"]="5";
+w["posit"]="3,7";
+w["possibl"]="0";
+w["prev"]="7";
+w["privat"]="8";
+w["problem"]="2";
+w["procedur"]="2";
+w["process"]="2,7,8";
+w["processor"]="2";
+w["produc"]="0";
+w["program"]="2";
+w["project"]="2,5";
+w["prompt"]="2";
+w["properti"]="0,2,8";
+w["provid"]="6,8";
+w["public"]="0,3";
+w["punctuat"]="2,8";
+w["put"]="2";
+w["queri"]="0,8";
+w["question"]="8";
+w["read"]="6";
+w["readm"]="2";
+w["recommend"]="1,3";
+w["recompil"]="4,8";
+w["refer"]="2";
+w["relat"]="2,3";
+w["relev"]="0";
+w["render"]="6";
+w["replac"]="3";
+w["requir"]="0,5";
+w["resid"]="8";
+w["resiz"]="0";
+w["resourc"]="3";
+w["restor"]="6";
+w["result"]="0,3,6,8";
+w["return"]="8";
+w["right"]="3";
+w["role"]="3";
+w["romanian"]="5";
+w["root"]="8";
+w["rss"]="3";
+w["run"]="2,4,8";
+w["russian"]="5";
+w["s"]="0,3,5,8";
+w["safe"]="2";
+w["same"]="2";
+w["save"]="6";
+w["saxhtmlindex"]="8";
+w["saxon"]="2";
+w["saxon-6"]="2";
+w["script"]="2";
+w["search"]="0,2,3,5,6,7,8";
+w["second"]="0";
+w["section"]="1,3,7";
+w["sectioninfo"]="3";
+w["see"]="2,3,7,8";
+w["self"]="8";
+w["separ"]="0,7";
+w["serv"]="3";
+w["server"]="0,3,8";
+w["server-sid"]="0";
+w["servic"]="0";
+w["set"]="0,2,3,4";
+w["setoutputfilt"]="3";
+w["share"]="2";
+w["should"]="0,2";
+w["show"]="0";
+w["side"]="8";
+w["sidetreecontrol"]="7";
+w["similar"]="0";
+w["simpl"]="0,8";
+w["simpli"]="2,3";
+w["sinc"]="3";
+w["site"]="0";
+w["size"]="0";
+w["smarter"]="0";
+w["snowbal"]="8";
+w["snowballstemm"]="8";
+w["so"]="0,2,3";
+w["some"]="8";
+w["someth"]="0";
+w["sort"]="0";
+w["sourc"]="2";
+w["space"]="8";
+w["spanish"]="5";
+w["specifi"]="0,2,8";
+w["src"]="8";
+w["stale"]="3";
+w["start"]="2";
+w["state"]="0,6";
+w["stayton"]="3";
+w["stem"]="0,5,8";
+w["stemmer"]="0,2,5,6,8";
+w["step"]="2,8";
+w["store"]="2,3,8";
+w["string"]="0,8";
+w["structur"]="7";
+w["studi"]="3";
+w["stuff"]="3";
+w["style"]="3,7";
+w["stylesheet"]="0";
+w["stylesheet-path"]="2";
+w["such"]="3,8";
+w["summari"]="0,3,8";
+w["support"]="0,1,5,8";
+w["supportedlanguag"]="8";
+w["sure"]="8";
+w["swedish"]="5";
+w["swf"]="3";
+w["system"]="0,2,3,6";
+w["t"]="0,2,3";
+w["tab"]="0,2,7";
+w["tabindex"]="0";
+w["tabl"]="0,6,7";
+w["tag"]="7";
+w["target"]="0";
+w["task"]="5";
+w["technic"]="0";
+w["tell"]="2";
+w["templat"]="5,8";
+w["term"]="0";
+w["test"]="2";
+w["test-ouput"]="2";
+w["test-output"]="2";
+w["text"]="0,2,3,8";
+w["than"]="0";
+w["them"]="3,8";
+w["theme"]="3";
+w["theme-redmond"]="3";
+w["then"]="0,3,8";
+w["there"]="8";
+w["therefor"]="5";
+w["these"]="3,5,6,8";
+w["they"]="6";
+w["thing"]="3";
+w["those"]="3,8";
+w["though"]="2";
+w["three"]="7,8";
+w["tip"]="2,3";
+w["titl"]="7,8";
+w["toc"]="0,3,7";
+w["todo"]="3";
+w["toggl"]="0";
+w["token"]="8";
+w["too"]="8";
+w["tool"]="2";
+w["top"]="3";
+w["top-level"]="2";
+w["topic"]="0,3,7";
+w["total"]="8";
+w["travers"]="8";
+w["tree"]="0,3,6,7";
+w["treeview"]="3,7";
+w["tri"]="2";
+w["true"]="2,7";
+w["turkish"]="5";
+w["two"]="3,7,8";
+w["txt"]="3";
+w["type"]="2,3";
+w["ui"]="7";
+w["ul"]="7";
+w["unchang"]="3";
+w["uncom"]="2";
+w["uncompress"]="3";
+w["understand"]="8";
+w["undertak"]="5";
+w["unnecessari"]="8";
+w["unord"]="7";
+w["unzip"]="2";
+w["up"]="0,2,3,4,5,7,8";
+w["updat"]="3";
+w["us"]="8";
+w["use"]="0,1,2,3,5,7,8";
+w["user"]="0,3,5,8";
+w["usr"]="2";
+w["utf-8"]="3";
+w["valid"]="2";
+w["validate-against-dtd"]="2";
+w["valu"]="2";
+w["var"]="8";
+w["variabl"]="2,4";
+w["various"]="3";
+w["veri"]="8";
+w["verison"]="5";
+w["version"]="0,2,4,5,8";
+w["w"]="8";
+w["way"]="3";
+w["we"]="0,3,7,8";
+w["web"]="0,3,8";
+w["web-bas"]="0";
+w["webhelp"]="1,2,6,7,8";
+w["webhelp-specif"]="0";
+w["week"]="3";
+w["were"]="6";
+w["which"]="0,2,3,7,8";
+w["width"]="0,3";
+w["wild"]="0";
+w["window"]="1,2";
+w["without"]="0";
+w["word"]="8";
+w["work"]="2";
+w["would"]="8";
+w["write"]="8";
+w["written"]="2,8";
+w["x"]="2";
+w["x-javascript"]="3";
+w["xhtml"]="3";
+w["xml"]="0,2,3";
+w["xp"]="2";
+w["xsl"]="2,3,7";
+w["xslt"]="2";
+w["xslt-processor-classpath"]="2";
+w["you"]="0,2,3,4,5,6,7,8";
+w["your"]="0,2,3,8";
+w["yourfil"]="2";
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js
new file mode 100644
index 0000000..0111559
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js
@@ -0,0 +1,513 @@
+/*----------------------------------------------------------------------------
+ * JavaScript for webhelp search
+ *----------------------------------------------------------------------------
+ This file is part of the webhelpsearch plugin for DocBook WebHelp
+ Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved.
+ www.nexwave.biz Nadege Quaine
+ http://kasunbg.blogspot.com/ Kasun Gajasinghe
+ */
+
+//string initialization
+var htmlfileList = "htmlFileList.js";
+var htmlfileinfoList = "htmlFileInfoList.js";
+var useCJKTokenizing = false;
+
+/* Cette fonction verifie la validite de la recherche entrre par l utilisateur */
+function Verifie(ditaSearch_Form) {
+
+ // Check browser compatibitily
+ if (navigator.userAgent.indexOf("Konquerer") > -1) {
+
+ alert(txt_browser_not_supported);
+ return;
+ }
+
+
+ var expressionInput = document.ditaSearch_Form.textToSearch.value;
+ //Set a cookie to store the searched keywords
+ $.cookie('textToSearch', expressionInput);
+
+
+ if (expressionInput.length < 1) {
+
+ // expression is invalid
+ alert(txt_enter_at_least_1_char);
+ // reactive la fenetre de search (utile car cadres)
+ document.ditaSearch_Form.textToSearch.focus();
+ }
+ else {
+
+ // Effectuer la recherche
+ Effectuer_recherche(expressionInput);
+
+ // reactive la fenetre de search (utile car cadres)
+ document.ditaSearch_Form.textToSearch.focus();
+ }
+}
+
+var stemQueryMap = new Array(); // A hashtable which maps stems to query words
+
+/* This function parses the search expression, loads the indices and displays the results*/
+function Effectuer_recherche(expressionInput) {
+
+ /* Display a waiting message */
+ //DisplayWaitingMessage();
+
+ /*data initialisation*/
+ var searchFor = ""; // expression en lowercase et sans les caracte res speciaux
+ //w = new Object(); // hashtable, key=word, value = list of the index of the html files
+ scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for
+ var wordsList = new Array(); // Array with the words to look for
+ var finalWordsList = new Array(); // Array with the words to look for after removing spaces
+ var linkTab = new Array();
+ var fileAndWordList = new Array();
+ var txt_wordsnotfound = "";
+
+
+ /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/
+ searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "</").replace(/_di_/g, "%24_");
+
+ searchFor = searchFor.replace(/ +/g, " ");
+ searchFor = searchFor.replace(/ $/, "").replace(/^ /, "");
+
+ wordsList = searchFor.split(" ");
+ wordsList.sort();
+
+ //set the tokenizing method
+ if(typeof indexerLanguage != "undefined" && (indexerLanguage=="zh" || indexerLanguage=="ja" ||indexerLanguage=="ko")){
+ useCJKTokenizing=true;
+ } else {
+ useCJKTokenizing=false;
+ }
+ //If Lucene CJKTokenizer was used as the indexer, then useCJKTokenizing will be true. Else, do normal tokenizing.
+ // 2-gram tokenizinghappens in CJKTokenizing,
+ if(useCJKTokenizing){
+ finalWordsList = cjkTokenize(wordsList);
+ } else {
+ finalWordsList = tokenize(wordsList);
+ }
+
+ //load the scripts with the indices: the following lines do not work on the server. To be corrected
+ /*if (IEBrowser) {
+ scriptsarray = loadTheIndexScripts (scriptLetterTab);
+ } */
+
+ /**
+ * Compare with the indexed words (in the w[] array), and push words that are in it to tempTab.
+ */
+ var tempTab = new Array();
+ for (var t in finalWordsList) {
+ if (w[finalWordsList[t].toString()] == undefined) {
+ txt_wordsnotfound += finalWordsList[t] + " ";
+ } else {
+ tempTab.push(finalWordsList[t]);
+ }
+ }
+ finalWordsList = tempTab;
+
+ if (finalWordsList.length) {
+
+ //search 'and' and 'or' one time
+ fileAndWordList = SortResults(finalWordsList);
+
+ var cpt = fileAndWordList.length;
+ for (var i = cpt - 1; i >= 0; i--) {
+ if (fileAndWordList[i] != undefined) {
+ linkTab.push("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + fileAndWordList[i][0].motslisteDisplay + "</span>" + "</p>");
+
+ linkTab.push("<ul class='searchresult'>");
+ for (t in fileAndWordList[i]) {
+ //DEBUG: alert(": "+ fileAndWordList[i][t].filenb+" " +fileAndWordList[i][t].motsliste);
+ //linkTab.push("<li><a href=\"../"+fl[fileAndWordList[i][t].filenb]+"\">"+fl[fileAndWordList[i][t].filenb]+"</a></li>");
+ var tempInfo = fil[fileAndWordList[i][t].filenb];
+ var pos1 = tempInfo.indexOf("@@@");
+ var pos2 = tempInfo.lastIndexOf("@@@");
+ var tempPath = tempInfo.substring(0, pos1);
+ var tempTitle = tempInfo.substring(pos1 + 3, pos2);
+ var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length);
+
+ //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html
+ var linkString = "<li><a href=" + tempPath + ">" + tempTitle + "</a>";
+ // var linkString = "<li><a href=\"installation.html\">" + tempTitle + "</a>";
+ if ((tempShortdesc != "null")) {
+ linkString += "\n<div class=\"shortdesclink\">" + tempShortdesc + "</div>";
+ }
+ linkString += "</li>";
+ linkTab.push(linkString);
+ }
+ linkTab.push("</ul>");
+ }
+ }
+ }
+
+ var results = "";
+ if (linkTab.length > 0) {
+ /*writeln ("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + cleanwordsList + "</span>" + "<br/>"+"</p>");*/
+ results = "<p>";
+ //write("<ul class='searchresult'>");
+ for (t in linkTab) {
+ results += linkTab[t].toString();
+ }
+ results += "</p>";
+ } else {
+ results = "<p>" + "Your search returned no results for " + "<span class=\"searchExpression\">" + txt_wordsnotfound + "</span>" + "</p>";
+ }
+ //alert(results);
+ document.getElementById('searchResults').innerHTML = results;
+}
+
+function tokenize(wordsList){
+ var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces
+ var cleanwordsList = new Array(); // Array with the words to look for
+ for(var j in wordsList){
+ var word = wordsList[j];
+ if(typeof stemmer != "undefined" ){
+ stemQueryMap[stemmer(word)] = word;
+ } else {
+ stemQueryMap[word] = word;
+ }
+ }
+ //stemmedWordsList is the stemmed list of words separated by spaces.
+ for (var t in wordsList) {
+ wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "");
+ if (wordsList[t] != "%20") {
+ scriptLetterTab.add(wordsList[t].charAt(0));
+ cleanwordsList.push(wordsList[t]);
+ }
+ }
+
+ if(typeof stemmer != "undefined" ){
+ //Do the stemming using Porter's stemming algorithm
+ for (var i = 0; i < cleanwordsList.length; i++) {
+ var stemWord = stemmer(cleanwordsList[i]);
+ stemmedWordsList.push(stemWord);
+ }
+ } else {
+ stemmedWordsList = cleanwordsList;
+ }
+ return stemmedWordsList;
+}
+
+//Invoker of CJKTokenizer class methods.
+function cjkTokenize(wordsList){
+ var allTokens= new Array();
+ var notCJKTokens= new Array();
+ var j=0;
+ for(j=0;j<wordsList.length;j++){
+ var word = wordsList[j];
+ if(getAvgAsciiValue(word) < 127){
+ notCJKTokens.push(word);
+ } else {
+ var tokenizer = new CJKTokenizer(word);
+ var tokensTmp = tokenizer.getAllTokens();
+ allTokens = allTokens.concat(tokensTmp);
+ }
+ }
+ allTokens = allTokens.concat(tokenize(notCJKTokens));
+ return allTokens;
+}
+
+//A simple way to determine whether the query is in english or not.
+function getAvgAsciiValue(word){
+ var tmp = 0;
+ var num = word.length < 5 ? word.length:5;
+ for(var i=0;i<num;i++){
+ if(i==5) break;
+ tmp += word.charCodeAt(i);
+ }
+ return tmp/num;
+}
+
+//CJKTokenizer
+function CJKTokenizer(input){
+ this.input = input;
+ this.offset=-1;
+ this.tokens = new Array();
+ this.incrementToken = incrementToken;
+ this.tokenize = tokenize;
+ this.getAllTokens = getAllTokens;
+ this.unique = unique;
+
+ function incrementToken(){
+ if(this.input.length - 2 <= this.offset){
+ // console.log("false "+offset);
+ return false;
+ }
+ else {
+ this.offset+=1;
+ return true;
+ }
+ }
+
+ function tokenize(){
+ //document.getElementById("content").innerHTML += x.substring(offset,offset+2)+"<br>";
+ return this.input.substring(this.offset,this.offset+2);
+ }
+
+ function getAllTokens(){
+ while(this.incrementToken()){
+ var tmp = this.tokenize();
+ this.tokens.push(tmp);
+ }
+ return this.unique(this.tokens);
+// document.getElementById("content").innerHTML += tokens+" ";
+// document.getElementById("content").innerHTML += "<br>dada"+sortedTokens+" ";
+// console.log(tokens.length+"dsdsds");
+ /*for(i=0;i<tokens.length;i++){
+ console.log(tokens[i]);
+ var ss = tokens[i] == sortedTokens[i];
+
+// document.getElementById("content").innerHTML += "<br>dada"+un[i]+"- "+stems[i]+"&nbsp;&nbsp;&nbsp;"+ ss;
+ document.getElementById("content").innerHTML += "<br>"+sortedTokens[i];
+ }*/
+ }
+
+ function unique(a)
+ {
+ var r = new Array();
+ o:for(var i = 0, n = a.length; i < n; i++)
+ {
+ for(var x = 0, y = r.length; x < y; x++)
+ {
+ if(r[x]==a[i]) continue o;
+ }
+ r[r.length] = a[i];
+ }
+ return r;
+ }
+}
+
+
+/* Scriptfirstchar: to gather the first letter of index js files to upload */
+function Scriptfirstchar() {
+ this.strLetters = "";
+ this.add = addLettre;
+}
+
+function addLettre(caract) {
+
+ if (this.strLetters == 'undefined') {
+ this.strLetters = caract;
+ } else if (this.strLetters.indexOf(caract) < 0) {
+ this.strLetters += caract;
+ }
+
+ return 0;
+}
+/* end of scriptfirstchar */
+
+/*main loader function*/
+/*tab contains the first letters of each word looked for*/
+function loadTheIndexScripts(tab) {
+
+ //alert (tab.strLetters);
+ var scriptsarray = new Array();
+
+ for (var i = 0; i < tab.strLetters.length; i++) {
+
+ scriptsarray[i] = "..\/search" + "\/" + tab.strLetters.charAt(i) + ".js";
+ }
+ // add the list of html files
+ i++;
+ scriptsarray[i] = "..\/search" + "\/" + htmlfileList;
+
+ //debug
+ for (var t in scriptsarray) {
+ //alert (scriptsarray[t]);
+ }
+
+ tab = new ScriptLoader();
+ for (t in scriptsarray) {
+ tab.add(scriptsarray[t]);
+ }
+ tab.load();
+ //alert ("scripts loaded");
+ return (scriptsarray);
+}
+
+/* ScriptLoader: to load the scripts and wait that it's finished */
+function ScriptLoader() {
+ this.cpt = 0;
+ this.scriptTab = new Array();
+ this.add = addAScriptInTheList;
+ this.load = loadTheScripts;
+ this.onScriptLoaded = onScriptLoadedFunc;
+}
+
+function addAScriptInTheList(scriptPath) {
+ this.scriptTab.push(scriptPath);
+}
+
+function loadTheScripts() {
+ var script;
+ var head;
+
+ head = document.getElementsByTagName('head').item(0);
+
+ //script = document.createElement('script');
+
+ for (var el in this.scriptTab) {
+ //alert (el+this.scriptTab[el]);
+ script = document.createElement('script');
+ script.src = this.scriptTab[el];
+ script.type = 'text/javascript';
+ script.defer = false;
+
+ head.appendChild(script);
+ }
+
+}
+
+function onScriptLoadedFunc(e) {
+ e = e || window.event;
+ var target = e.target || e.srcElement;
+ var isComplete = true;
+ if (typeof target.readyState != undefined) {
+
+ isComplete = (target.readyState == "complete" || target.readyState == "loaded");
+ }
+ if (isComplete) {
+ ScriptLoader.cpt++;
+ if (ScriptLoader.cpt == ScriptLoader.scripts.length) {
+ ScriptLoader.onLoadComplete();
+ }
+ }
+}
+
+/*
+function onLoadComplete() {
+ alert("loaded !!");
+} */
+
+/* End of scriptloader functions */
+
+// Array.unique( strict ) - Remove duplicate values
+function unique(tab) {
+ var a = new Array();
+ var i;
+ var l = tab.length;
+
+ if (tab[0] != undefined) {
+ a[0] = tab[0];
+ }
+ else {
+ return -1
+ }
+
+ for (i = 1; i < l; i++) {
+ if (indexof(a, tab[i], 0) < 0) {
+ a.push(tab[i]);
+ }
+ }
+ return a;
+}
+function indexof(tab, element, begin) {
+ for (var i = begin; i < tab.length; i++) {
+ if (tab[i] == element) {
+ return i;
+ }
+ }
+ return -1;
+
+}
+/* end of Array functions */
+
+
+/*
+ Param: mots= list of words to look for.
+ This function creates an hashtable:
+ - The key is the index of a html file which contains a word to look for.
+ - The value is the list of all words contained in the html file.
+
+ Return value: the hashtable fileAndWordList
+ */
+function SortResults(mots) {
+
+ var fileAndWordList = new Object();
+ if (mots.length == 0) {
+ return null;
+ }
+
+ for (var t in mots) {
+ // get the list of the indices of the files.
+ var listNumerosDesFicStr = w[mots[t].toString()];
+ //alert ("listNumerosDesFicStr "+listNumerosDesFicStr);
+ var tab = listNumerosDesFicStr.split(",");
+
+ //for each file (file's index):
+ for (var t2 in tab) {
+ var temp = tab[t2].toString();
+ if (fileAndWordList[temp] == undefined) {
+
+ fileAndWordList[temp] = "" + mots[t];
+ } else {
+
+ fileAndWordList[temp] += "," + mots[t];
+ }
+ }
+ }
+
+ var fileAndWordListValuesOnly = new Array();
+
+ // sort results according to values
+ var temptab = new Array();
+ for (t in fileAndWordList) {
+ tab = fileAndWordList[t].split(',');
+
+ var tempDisplay = new Array();
+ for (var x in tab) {
+ if(stemQueryMap[tab[x]] != undefined){
+ tempDisplay.push(stemQueryMap[tab[x]]); //get the original word from the stem word.
+ } else {
+ tempDisplay.push(tab[x]); //no stem is available. (probably a CJK language)
+ }
+ }
+ var tempDispString = tempDisplay.join(", ");
+
+ temptab.push(new resultPerFile(t, fileAndWordList[t], tab.length, tempDispString));
+ fileAndWordListValuesOnly.push(fileAndWordList[t]);
+ }
+
+
+ //alert("t"+fileAndWordListValuesOnly.toString());
+
+ fileAndWordListValuesOnly = unique(fileAndWordListValuesOnly);
+ fileAndWordListValuesOnly = fileAndWordListValuesOnly.sort(compare_nbMots);
+ //alert("t: "+fileAndWordListValuesOnly.join(';'));
+
+ var listToOutput = new Array();
+
+ for (var j in fileAndWordListValuesOnly) {
+ for (t in temptab) {
+ if (temptab[t].motsliste == fileAndWordListValuesOnly[j]) {
+ if (listToOutput[j] == undefined) {
+ listToOutput[j] = new Array(temptab[t]);
+ } else {
+ listToOutput[j].push(temptab[t]);
+ }
+ }
+ }
+ }
+ return listToOutput;
+}
+
+function resultPerFile(filenb, motsliste, motsnb, motslisteDisplay) {
+ this.filenb = filenb;
+ this.motsliste = motsliste;
+ this.motsnb = motsnb;
+ this.motslisteDisplay= motslisteDisplay;
+}
+
+function compare_nbMots(s1, s2) {
+ var t1 = s1.split(',');
+ var t2 = s2.split(',');
+ //alert ("s1:"+t1.length + " " +t2.length)
+ if (t1.length == t2.length) {
+ return 0;
+ } else if (t1.length > t2.length) {
+ return 1;
+ } else {
+ return -1;
+ }
+ //return t1.length - t2.length);
+} \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js
new file mode 100644
index 0000000..f58012f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js
@@ -0,0 +1,187 @@
+// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original
+// paper, in
+//
+// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14,
+// no. 3, pp 130-137,
+//
+// see also http://www.tartarus.org/~martin/PorterStemmer
+
+// Release 1 be 'andargor', Jul 2004
+// Release 2 (substantially revised) by Christopher McKenzie, Aug 2009
+
+
+var stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ return function (w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4,
+ origword = w;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem)) { w = stem + "i"; }
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ }
+})(); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html
new file mode 100644
index 0000000..a027144
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="shortcut icon" href="favicon.ico" />
+ <meta http-equiv="Refresh" content="1; URL=content/ch01.html" />
+ <title>README: Web-based Help from DocBook XML 
+ </title>
+ </head>
+ <body>
+ If not automatically redirected, click here: <a href="content/ch01.html">content/ch01.html</a></body>
+</html>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml
new file mode 100644
index 0000000..4d19190
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml
@@ -0,0 +1,928 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<book>
+ <title>README: Web-based Help from DocBook XML</title>
+
+ <bookinfo>
+ <legalnotice>
+ <para>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the <quote>Software</quote>), to deal in the Software without
+ restriction, including without limitation the rights to use, copy,
+ modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to
+ do so, subject to the following conditions: <itemizedlist>
+ <listitem>
+ <para>The above copyright notice and this permission notice shall
+ be included in all copies or substantial portions of the
+ Software.</para>
+ </listitem>
+
+ <listitem>
+ <para>Except as contained in this notice, the names of individuals
+ credited with contribution to this software shall not be used in
+ advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization from
+ the individuals in question.</para>
+ </listitem>
+
+ <listitem>
+ <para>Any stylesheet derived from this Software that is publicly
+ distributed will be identified with a different name and the
+ version strings in any derived Software will be changed so that no
+ possibility of confusion between the derived package and this
+ Software will exist.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <formalpara>
+ <title>Warranty:</title>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL DAVID CRAMER, KASUN GAJASINGHE, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR
+ ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</para>
+ </formalpara>
+
+ <para>This package is maintained by Kasun Gajasinghe, <email>kasunbg AT
+ gmail DOT com</email> and David Cramer, <email>david AT thingbag DOT
+ net</email>.</para>
+
+ <para>This package also includes the following software written and
+ copyrighted by others:<itemizedlist>
+ <listitem>
+ <para>Files in <filename
+ class="directory">template/common/jquery</filename> are
+ copyrighted by <ulink url="http://jquery.com/">JQuery</ulink>
+ under the MIT License. The file
+ <filename>jquery.cookie.js</filename> Copyright (c) 2006 Klaus
+ Hartl under the MIT license.</para>
+
+ <indexterm>
+ <primary>jquery</primary>
+ </indexterm>
+ </listitem>
+
+ <listitem>
+ <para>Some files in the <filename
+ class="directory">template/content/search</filename> and <filename
+ class="directory">indexer</filename> directories were originally
+ part of N. Quaine's htmlsearch DITA plugin. The htmlsearch DITA
+ plugin is available from the <ulink
+ url="http://tech.groups.yahoo.com/group/dita-users/files/Demos/">files
+ page</ulink> of the DITA-users yahoogroup. The htmlsearch plugin
+ was released under a BSD-style license. See
+ <filename>indexer/license.txt</filename> for details. <indexterm>
+ <primary>htmlsearch</primary>
+ </indexterm> <indexterm>
+ <primary>DITA</primary>
+
+ <secondary>htmlsearch plugin</secondary>
+ </indexterm></para>
+ </listitem>
+
+ <listitem>
+ <para>Stemmers from the <ulink
+ url="http://snowball.tartarus.org/texts/stemmersoverview.html">Snowball
+ project</ulink> released under a BSD license.</para>
+ </listitem>
+
+ <listitem>
+ <para>Code from the <ulink url="http://lucene.apache.org/">Apache
+ Lucene</ulink> search engine provides support for tokenizing
+ Chinese, Japanese, and Korean content released under the Apache
+ 2.0 license. </para>
+ </listitem>
+ </itemizedlist>
+ Webhelp for DocBook was developed as a <ulink url="http://socghop.appspot.com">Google Summer of Code</ulink> project.
+ </para>
+ </legalnotice>
+
+ <copyright>
+ <year>2008-2010</year>
+
+ <holder>Kasun Gajasinghe</holder>
+
+ <holder>David Cramer</holder>
+ </copyright>
+
+ <author>
+ <firstname>David</firstname>
+
+ <surname>Cramer</surname>
+
+ <email>dcramer AT motive DOT com</email>
+
+ <email>david AT thingbag DOT net</email>
+ </author>
+
+ <author>
+ <firstname>Kasun</firstname>
+
+ <surname>Gajasinghe</surname>
+
+ <email>kasunbg AT gmail DOT com</email>
+ </author>
+
+ <pubdate>August 2010</pubdate>
+ </bookinfo>
+
+ <chapter>
+ <chapterinfo>
+ <abstract>
+ <!-- This becomes the brief description that appears in search results UNLESS there's a para or phrase with role="summary". If there is, then the role="summary" text wins. -->
+
+ <para>Overview of the package.</para>
+ </abstract>
+ </chapterinfo>
+
+ <title>Introduction</title>
+
+ <para>A common requirement for technical publications groups is to produce a Web-based help
+ format that includes a table of contents pane, a search feature, and an index similar to what
+ you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for
+ a Web application that is not exposed to the Internet or requires that the user be logged in,
+ then it is impossible to use services like Google to add search. <indexterm class="singular">
+ <primary>features</primary>
+ </indexterm>
+ <itemizedlist>
+ <title>Features</title>
+ <listitem>
+ <para>Full text search.<indexterm class="singular">
+ <primary>search</primary>
+ <secondary>features</secondary>
+ </indexterm></para>
+ <itemizedlist>
+ <listitem>
+ <para>Stemming support for English, French, and German. Stemming support can be added
+ for other languages by implementing a stemmer.<indexterm class="singular">
+ <primary>search</primary>
+ <secondary>stemming</secondary>
+ </indexterm></para>
+ </listitem>
+ <listitem>
+ <para>Support for Chinese, Japanese, and Korean using code from the Lucene search
+ engine. </para>
+ </listitem>
+ <listitem>
+ <para>Search highlighting shows where the searched for term appears in the results.
+ Use the <guibutton>H</guibutton> button to toggle the highlighting off and on.
+ <indexterm class="singular">
+ <primary>search</primary>
+ <secondary>highlighting</secondary>
+ </indexterm></para>
+ </listitem>
+ <listitem>
+ <para>Search results can include brief descriptions of the target.<indexterm
+ class="singular">
+ <primary>search</primary>
+ <secondary>descriptions</secondary>
+ </indexterm></para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>Table of contents pane with collapsible toc tree.</para>
+ </listitem>
+ <listitem>
+ <para>Auto-synchronization of content pane and TOC.</para>
+ </listitem>
+ <listitem>
+ <para>TOC and search pane implemented without the use of a frameset.</para>
+ </listitem>
+ <listitem>
+ <para>An Ant <filename>build.xml</filename> file to generate output. You can use this
+ build file by importing it into your own or use it as a model for integrating this
+ output format into your own build system.</para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <title>Possible future enhancements</title>
+ <listitem>
+ <para>Move webhelp-specific parameters and gentext strings into base DocBook stylesheets.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Use <sgmltag class="attribute">tabindex</sgmltag> attributes to control the tab
+ order in the output. The Contents and Search tabs should be first and second, then the
+ search box and button, then the table of contents items, and so on.</para>
+ </listitem>
+ <listitem>
+ <para>Add "Expand all" and "Collapse all" buttons to the table of contents.</para>
+ </listitem>
+ <listitem>
+ <para>Add other search options:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Add an option to use Lucene for server-side searches with table of contents
+ state persisted on the server.</para>
+ </listitem>
+ <listitem>
+ <para>Add a simple form that uses a Google site:my.domain.com based search.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>Sort search results based on relevance</para>
+ </listitem>
+ <listitem>
+ <para>Support wild card characters in the search query.</para>
+ </listitem>
+ <listitem>
+ <para>Parameterize width of the TOC pane OR make the TOC pane resizeable by the
+ user.</para>
+ </listitem>
+ <listitem>
+ <para>Automate search results summary text:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Automatically use the first non-heading content as the summary in the search
+ results.</para>
+ </listitem>
+ <listitem>
+ <para>Automatically limit the size of the search description to something 140
+ characters.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>Support boolean operators in search.</para>
+ </listitem>
+ <listitem>
+ <para>Parameterize list of files to exclude from indexing. Currently it's hard coded that
+ we don't index <filename>index.html </filename>and <filename>ix01.html</filename> (the
+ legal notice and index topics). It should be smarter and automatically not index the
+ index file even if it's not named <filename>ix01.html</filename>.</para>
+ </listitem>
+ <listitem>
+ <para>Improve performance by moving the table of contents div out of each page and into a
+ separate JavaScript file which then adds it to the page.</para>
+ </listitem>
+ <listitem>
+ <para>Add to the indexer the ability to specify a list of files or file patterns not to
+ index. Currently it does not index <filename>index.html</filename> or
+ <filename>ix01.html</filename>, which is generally appropriate, but it should be up to
+ the user to decide.</para>
+ </listitem>
+ <listitem>
+ <para>Add an index tab populated by a separate JavaScript file. Include a param/property
+ that allows the content creator to disable the index.</para>
+ </listitem>
+ <listitem>
+ <para>Add functionality to the <filename>build.xml</filename> file so that when a property
+ is set, the build generates a pdf version of the document and includes a link to it from
+ the header.</para>
+ </listitem>
+ <listitem>
+ <para>Add <ulink
+ url="http://www.comparenetworks.com/developers/jqueryplugins/jbreadcrumb.html"
+ >breadcrumbs</ulink> so the user will know what topics he's been to.</para>
+ </listitem>
+ <listitem>
+ <para>Consider using more advanced Lucene indexers for Chinese and Japanese than the
+ CJKAnalyzer</para>
+ </listitem>
+ </itemizedlist></para>
+ </chapter>
+
+ <chapter>
+ <title>Using the package</title>
+
+ <para role="summary">The following sections describe how to install and
+ use the package on Windows.</para>
+
+ <section>
+ <sectioninfo>
+ <abstract>
+ <para>Installation instructions</para>
+ </abstract>
+ </sectioninfo>
+
+ <title>Generating webhelp output</title>
+
+ <procedure>
+ <title>To install the package on Windows</title>
+
+ <note>
+ <para>The examples in this procedure assume a Windows installation,
+ but the process is the same in other environments,
+ <foreignphrase>mutatis mutandis</foreignphrase>.</para>
+ </note>
+
+ <step>
+ <para>If necessary, install <ulink
+ url="http://www.java.com/en/download/manual.jsp">Java 1.6</ulink> or
+ higher.</para>
+
+ <substeps>
+ <step>
+ <para>Confirm that Java is installed and in your
+ <envar>PATH</envar> by typing the following at a command prompt:
+ <programlisting>java -version</programlisting></para>
+ <note>
+ <para>To build the indexer, you must have the JDK.</para>
+ </note>
+ </step>
+ </substeps>
+ </step>
+
+ <step>
+ <para>If necessary, install <ulink
+ url="http://ant.apache.org/bindownload.cgi">Apache Ant</ulink> 1.6.5
+ or higher.</para>
+
+ <substeps>
+ <step>
+ <para>Unzip the Ant binary distribution to a convenient location
+ on your system. For example: <filename>c:\Program
+ Files</filename>.</para>
+ </step>
+
+ <step>
+ <para>Set the environment variable <envar>ANT_HOME</envar> to
+ the top-level Ant directory. For example: <filename>c:\Program
+ Files\apache-ant-1.7.1</filename>. <tip>
+ <para>See <ulink
+ url="http://support.microsoft.com/kb/310519">How To Manage
+ Environment Variables in Windows XP</ulink> for information
+ on setting environment variables.</para>
+ </tip></para>
+ </step>
+
+ <step>
+ <para>Add the Ant <filename>bin</filename> directory to your
+ <envar>PATH</envar>. For example: <filename>c:\Program
+ Files\apache-ant-1.7.1\bin</filename></para>
+ </step>
+
+ <step>
+ <para>Confirm that Ant is installed by typing the following at a
+ command prompt: <programlisting>ant -version</programlisting></para>
+
+ <note>
+ <para>If you see a message about the file
+ <filename>tools.jar</filename> being missing, you can safely
+ ignore it.</para>
+ </note>
+ </step>
+ </substeps>
+ </step>
+
+ <step>
+ <para>Download <ulink url="http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip">Saxon
+ 6.5.x</ulink> and unzip the distribution to a convenient location on your file system.
+ You will use the path to <filename>saxon.jar</filename> in <xref
+ linkend="edit-build-properties"/> below.<note>
+ <para>The <filename>build.xml</filename> has only been tested with Saxon 6.5, though
+ it could be adapted to work with other XSLT processors. However, when you generate
+ output, the Saxon jar must <emphasis role="bold">not</emphasis> be in your
+ <envar>CLASSPATH</envar>.</para>
+ </note></para>
+ </step>
+
+ <step id="edit-build-properties">
+ <para>In a text editor, edit the
+ <filename>build.properties</filename> file in the webhelp directory
+ and make the changes indicated by the comments:<programlisting># The path (relative to the build.xml file) to your input document.
+# To use your own input document, create a build.xml file of your own
+# and import this build.xml.
+input-xml=docsrc/readme.xml
+
+# The directory in which to put the output files.
+# This directory is created if it does not exist.
+output-dir=docs
+
+# If you are using a customization layer that imports webhelp.xsl, use
+# this property to point to it.
+stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
+
+# If your document has image directories that need to be copied
+# to the output directory, you can list patterns here.
+# See the Ant documentation for fileset for documentation
+# on patterns.
+#input-images-dirs=images/**,figures/**,graphics/**
+
+# By default, the ant script assumes your images are stored
+# in the same directory as the input-xml. If you store your
+# image directories in another directory, specify it here.
+# and uncomment this line.
+#input-images-basedir=/path/to/image/location
+
+# Modify this so that it points to your copy of the Saxon 6.5 jar.
+xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
+
+# For non-ns version only, this validates the document
+# against a dtd.
+validate-against-dtd=true
+
+# Set this to false if you don't need a search tab.
+webhelp.include.search.tab=true
+
+# indexer-language is used to tell the search indexer which language
+# the docbook is written. This will be used to identify the correct
+# stemmer, and punctuations that differs from language to language.
+# see the documentation for details. en=English, fr=French, de=German,
+# zh=Chinese, ja=Japanese etc.
+webhelp.indexer.language=en</programlisting></para>
+ </step>
+
+ <step>
+ <para>Test the package by running the command <code>ant webhelp
+ -Doutput-dir=test-ouput</code> at the command line in the webhelp directory. It should
+ generate a copy of this documentation in the <filename class="directory">doc</filename>
+ directory. Type <code>start test-output\index.html</code> to open the output in a
+ browser. Once you have confirmed that the process worked, you can delete the <filename
+ class="directory">test-output</filename> directory. <important>
+ <para>The Saxon 6.5 jar should <emphasis>not</emphasis> be in your
+ <envar>CLASSPATH</envar> when you generate the webhelp output. If you have any
+ problems, try running ant with an empty <envar>CLASSPATH</envar>.</para>
+ </important></para>
+ </step>
+
+ <step>
+ <para>To process your own document, simply refer to this package
+ from another <filename>build.xml</filename> in arbitrary location on
+ your system:</para>
+
+ <substeps>
+ <step>
+ <para>Create a new <filename>build.xml</filename> file that
+ defines the name of your source file, the desired output
+ directory, and imports the <filename>build.xml</filename> from
+ this package. For example: <programlisting>&lt;project&gt;
+ &lt;property name="input-xml" value="<replaceable>path-to/yourfile.xml</replaceable>"/&gt;
+ &lt;property name="input-images-dirs" value="<replaceable>images/** figures/** graphics/**</replaceable>"/&gt;
+ &lt;property name="output-dir" value="<replaceable>path-to/desired-output-dir</replaceable>"/&gt;
+ &lt;import file="<replaceable>path-to/docbook-webhelp/</replaceable>build.xml"/&gt;
+&lt;/project&gt;</programlisting></para>
+ </step>
+
+ <step>
+ <para>From the directory containing your newly created
+ <filename>build.xml</filename> file, type <code>ant
+ webhelp</code> to build your document.</para>
+ <important>
+ <para>The Saxon 6.5 jar should <emphasis>not</emphasis> be in your
+ <envar>CLASSPATH</envar> when you generate the webhelp output. If you have any
+ problems, try running ant with an empty <envar>CLASSPATH</envar>.</para>
+ </important>
+ </step>
+ </substeps>
+ </step>
+ </procedure>
+ </section>
+
+ <section>
+ <title>Using and customizing the output</title>
+
+ <para>To deep link to a topic inside the help set, simply link directly
+ to the page. This help system uses no frameset, so nothing further is
+ necessary. <tip>
+ <para>See <ulink
+ url="http://www.sagehill.net/docbookxsl/Chunking.html">Chunking into
+ multiple HTML files</ulink> in Bob Stayton's <ulink
+ url="http://www.sagehill.net/docbookxsl/index.html">DocBook XSL: The
+ Complete Guide</ulink> for information on controlling output file
+ names and which files are chunked in DocBook.</para>
+ </tip></para>
+
+ <para>When you perform a search, the results can include brief
+ summaries. These are populated in one of two ways:<itemizedlist>
+ <listitem>
+ <para>By adding <sgmltag>role="summary"</sgmltag> to a
+ <sgmltag>para</sgmltag> or <sgmltag>phrase</sgmltag> in the
+ <sgmltag>chapter</sgmltag> or <sgmltag>section</sgmltag>.</para>
+ </listitem>
+
+ <listitem>
+ <para>By adding an <sgmltag>abstract</sgmltag> to the
+ <sgmltag>chapterinfo</sgmltag> or <sgmltag>sectioninfo</sgmltag>
+ element.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>To customize the look and feel of the help, study the following
+ css files:<itemizedlist>
+ <listitem>
+ <para><filename>docs/common/css/positioning.css</filename>: This
+ handles the Positioning of DIVs in appropriate positions. For
+ example, it causes the <code>leftnavigation</code> div to appear
+ on the left, the header on top, and so on. Use this if you need to
+ change the relative positions or need to change the width/height
+ etc.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css</filename>:
+ This is the theming part which adds colors and stuff. This is a
+ default theme comes with <ulink
+ url="http://jqueryui.com/download">jqueryui</ulink> unchanged. You
+ can get any theme based your interest from this. (Themes are on
+ right navigation bar.) Then replace the css theme folder
+ (theme-redmond) with it, and change the xsl to point to the new
+ css.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>docs/common/jquery/treeview/jquery.treeview.css</filename>:
+ This styles the toc Tree. Generally, you don't have to edit this
+ file.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <section>
+ <title>Recommended Apache configurations</title>
+
+ <para>If you are serving a long document from an Apache web server, we
+ recommend you make the following additions or changes to your
+ <filename>httpd.conf</filename> or <filename>.htaccess</filename>
+ file. <remark>TODO: Explain what each thing
+ does.</remark><programlisting>AddDefaultCharSet UTF-8 # <co
+ id="AddDefaultCharSet" />
+
+ # 480 weeks
+ &lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt; # <co
+ id="CachingSettings" />
+ Header set Cache-Control "max-age=290304000, public"
+ &lt;/FilesMatch&gt;
+
+ # 2 DAYS
+ &lt;FilesMatch "\.(xml|txt)$"&gt;
+ Header set Cache-Control "max-age=172800, public, must-revalidate"
+ &lt;/FilesMatch&gt;
+
+ # 2 HOURS
+ &lt;FilesMatch "\.(html|htm)$"&gt;
+ Header set Cache-Control "max-age=7200, must-revalidate"
+ &lt;/FilesMatch&gt;
+
+ # compress text, html, javascript, css, xml:
+ AddOutputFilterByType DEFLATE text/plain # <co id="CompressSetting" />
+ AddOutputFilterByType DEFLATE text/html
+ AddOutputFilterByType DEFLATE text/xml
+ AddOutputFilterByType DEFLATE text/css
+ AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE application/xhtml+xml
+ AddOutputFilterByType DEFLATE application/rss+xml
+ AddOutputFilterByType DEFLATE application/javascript
+ AddOutputFilterByType DEFLATE application/x-javascript
+
+ # Or, compress certain file types by extension:
+ &lt;Files *.html&gt;
+ SetOutputFilter DEFLATE
+ &lt;/Files&gt;
+ </programlisting><calloutlist>
+ <callout arearefs="AddDefaultCharSet">
+ <para>See <ulink
+ url="http://www.sagehill.net/docbookxsl/SpecialChars.html">Odd
+ characters in HTML output</ulink> in Bob Stayton's book
+ <citetitle>DocBook XSL: The Complete Guide</citetitle> for more
+ information about this setting.</para>
+ </callout>
+
+ <callout arearefs="CachingSettings">
+ <para>These lines and those that follow cause the browser to
+ cache various resources such as bitmaps and JavaScript files.
+ Note that caching JavaScript files could cause your users to
+ have stale search indexes if you update your document since the
+ search index is stored in JavaScript files.</para>
+ </callout>
+
+ <callout arearefs="CompressSetting">
+ <para>These lines cause the the server to compress html, css,
+ and JavaScript files and the brower to uncompress them to
+ improve download performance.</para>
+ </callout>
+ </calloutlist></para>
+ </section>
+ </section>
+
+ <section>
+ <title>Building the indexer</title>
+
+ <para role="summary">To build the indexer, you must have installed the
+ JDK version 1.5 or higher and set the <envar>ANT_HOME</envar>
+ environment variable. Run <code>ant build-indexer</code> to recompile
+ <filename>nw-cms.jar</filename></para>
+
+ <indexterm>
+ <primary>ANT_HOME</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>indexer</primary>
+
+ <secondary>building</secondary>
+ </indexterm>
+ </section>
+
+ <section>
+ <title>Adding support for other (non-CJKV) languages</title>
+
+ <para>To support stemming for a language, the search mechanism requires
+ a stemmer implemented in both Java and JavaScript. The Java version is
+ used by the indexer and the JavaScript verison is used to stem the
+ user's input on the search form. Currently the search mechanism supports
+ stemming for English and German. In addition, Java stemmers are included
+ for the following languages. Therefore, to support these languages, you
+ only need to implement the stemmer in JavaScript and add it to the
+ template. If you do undertake this task, please consider contributing
+ the JavaScript version back to this project and to <ulink
+ url="http://snowball.tartarus.org/texts/stemmersoverview.html">Martin
+ Porter's project</ulink>.<itemizedlist>
+ <listitem>
+ <para>Danish</para>
+ </listitem>
+
+ <listitem>
+ <para>Dutch</para>
+ </listitem>
+
+ <listitem>
+ <para>Finnish</para>
+ </listitem>
+
+ <listitem>
+ <para>Hungarian</para>
+ </listitem>
+
+ <listitem>
+ <para>Italian</para>
+ </listitem>
+
+ <listitem>
+ <para>Norwegian</para>
+ </listitem>
+
+ <listitem>
+ <para>Portuguese</para>
+ </listitem>
+
+ <listitem>
+ <para>Romanian</para>
+ </listitem>
+
+ <listitem>
+ <para>Russian</para>
+ </listitem>
+
+ <listitem>
+ <para>Spanish</para>
+ </listitem>
+
+ <listitem>
+ <para>Swedish</para>
+ </listitem>
+
+ <listitem>
+ <para>Turkish</para>
+ </listitem>
+ </itemizedlist></para>
+ </section>
+ </chapter>
+
+ <chapter>
+ <title>Developer Docs</title>
+
+ <para role="summary">This chapter provides an overview of how webhelp is implemented.</para>
+
+ <para>The table of contents and search panes are implemented as divs and
+ rendered as if they were the left pane in a frameset. As a result, the
+ page must save the state of the table of contents and the search in
+ cookies when you navigate away from a page. When you load a new page, the
+ page reads these cookies and restores the state of the table of contents
+ tree and search. The result is that the help system behaves exactly as if
+ it were a frameset.</para>
+
+ <section>
+ <title>Design</title>
+ <para role="summary">An overview of webhelp page structure.</para>
+ <para>DocBook WebHelp page structure is fully built on css-based design
+ abandoning frameset structure. Overall page structure can be divided in to three main sections
+ <itemizedlist>
+ <listitem>
+ <para>Header: Header is a separate Div which include company logo,
+ navigation button(prev, next etc.), page title and heading of parent topic.</para>
+ </listitem>
+
+ <listitem>
+ <para>Content: This includes the content of the documentation. The processing of this part is
+ done by <ulink
+ url="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl">
+ DocBook XSL Chunking customization</ulink>. Few further css-styling applied from
+ <filename>positioning.css</filename>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Left Navigation: This includes the table of contents and search tab. This
+ is customized using <ulink url="http://jqueryui.com/">jquery-ui</ulink> styling.</para>
+ <itemizedlist>
+ <listitem>
+ <para>Tabbed Navigation: The navigation pane is organized in to two tabs.
+ Contents tab, and Search tab. Tabbed output is achieved using
+ <ulink url="http://docs.jquery.com/UI/Tabs">JQuery Tabs plugin</ulink>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Table of Contents (TOC) tree: When building the chunked html from the
+ docbook file, Table of Contents is generated as an Unordered List (a list
+ made from <code>&lt;ul> &lt;li></code> tags). When page loads in the browser,
+ we apply styling to it to achieve the nice look that you see. Styling for TOC
+ tree is done by a JQuery UI plugin called
+ <ulink url="http://bassistance.de/jquery-plugins/jquery-plugin-treeview/">
+ TreeView</ulink>. We can generate the tree easily by following javascript code:
+
+<programlisting>
+//Generate the tree
+$("#tree").treeview({
+collapsed: true,
+animated: "medium",
+control: "#sidetreecontrol",
+persist: "cookie"
+});
+</programlisting>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Search Tab: This includes the search feature.</para>
+ </listitem>
+ </itemizedlist>
+
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section>
+ <title>Search</title>
+ <para role="summary">Overview design of Search mechanism.</para>
+ <para>
+ The searching is a fully client-side implementation of querying texts for
+ content searching, and no server is involved. That means when a user enters a query,
+ it is processed by JavaScript inside the browser, and displays the matching results by
+ comparing the query with a generated 'index', which too reside in the client-side web browser.
+
+ Mainly the search mechanism has two parts.
+ <itemizedlist>
+ <listitem>
+ <para>Indexing: First we need to traverse the content in the docs/content folder and index
+ the words in it. This is done by <filename>nw-cms.jar</filename>. You can invoke it by
+ <code>ant index</code> command from the root of webhelp of directory. You can recompile it
+ again and build the jar file by <code>ant build-indexer</code>. Indexer has some extensive
+ support for such as stemming of words. Indexer has extensive support for English, German,
+ French languages. By extensive support, what I meant is that those texts are stemmed
+ first, to get the root word and then indexes them. For CJK (Chinese, Japanese, Korean)
+ languages, it uses bi-gram tokenizing to break up the words. (CJK languages does not have
+ spaces between words.)
+ </para>
+ <para>
+ When we run <code>ant index</code>, it generates five output files:
+ <itemizedlist>
+ <listitem>
+ <para><filename>htmlFileList.js</filename> - This contains an array named <code>fl</code> which stores details
+ all the files indexed by the indexer.
+ </para>
+ </listitem>
+ <listitem>
+ <para><filename>htmlFileInfoList.js</filename> - This includes some meta data about the indexed files in an array
+ named <code>fil</code>. It includes details about file name, file (html) title, a summary
+ of the content.Format would look like,
+ <code>fil["4"]= "ch03.html@@@Developer Docs@@@This chapter provides an overview of how webhelp is implemented.";</code>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><filename>index-*.js</filename> (Three index files) - These three files actually stores the index of the content.
+ Index is added to an array named <code>w</code>.</para>
+ </listitem>
+ </itemizedlist>
+
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Querying: Query processing happens totally in client side. Following JavaScript files handles them.
+ <itemizedlist>
+ <listitem>
+ <para><filename>nwSearchFnt.js</filename> - This handles the user query and returns the search results. It does query
+ word tokenizing, drop unnecessary punctuations and common words, do stemming if docbook language
+ supports it, etc.</para>
+ </listitem>
+ <listitem>
+ <para><filename>{$indexer-language-code}_stemmer.js</filename> - This includes the stemming library.
+ <filename>nwSearchFnt.js</filename> file calls <code>stemmer</code> method in this file for stemming.
+ ex: <code>var stem = stemmer(foobar);</code>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <section>
+ <title>New Stemmers</title>
+ <para role="summary">Adding new Stemmers is very simple.</para>
+ <para>Currently, only English, French, and German stemmers are integrated in to WebHelp. But the code is
+ extensible such that you can add new stemmers easily by few steps.</para>
+ <para>What you need:
+ <itemizedlist>
+ <listitem>
+ <para>You'll need two versions of the stemmer; One written in JavaScript, and another in Java. But fortunately,
+ Snowball contains Java stemmers for number of popular languages, and are already included with the package.
+ You can see the full list in <ulink url="ch02s04.html">Adding support for other (non-CJKV) languages</ulink>.
+ If your language is listed there,
+ Then you have to find javascript version of the stemmer. Generally, new stemmers are getting added in to
+ <ulink url="http://snowball.tartarus.org/otherlangs/index.html">Snowball Stemmers in other languages</ulink> location.
+ If javascript stemmer for your language is available, then download it. Else, you can write a new stemmer in
+ JavaScript using SnowBall algorithm fairly easily. Algorithms are at
+ <ulink url="http://snowball.tartarus.org/">Snowball</ulink>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Then, name the JS stemmer exactly like this: <filename>{$language-code}_stemmer.js</filename>. For example,
+ for Italian(it), name it as, <filename>it_stemmer.js</filename>. Then, copy it to the
+ <filename>docbook-webhelp/template/content/search/stemmers/</filename> folder. (I assumed
+ <filename>docbook-webhelp</filename> is the root folder for webhelp.)
+ <note>
+ <para>Make sure you changed the <code>webhelp.indexer.language</code> property in <filename>build.properties</filename>
+ to your language.
+ </para>
+ </note>
+
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>Now two easy changes needed for the indexer.</para>
+ <itemizedlist>
+ <listitem>
+ <para>Open <filename>docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java</filename> in
+ a text editor and add your language code to the <code>supportedLanguages</code> String Array. </para>
+ <example>
+ <title>Add new language to supportedLanguages array</title>
+ <para>
+ change the Array from,
+<programlisting>
+private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"};
+ //currently extended support available for
+ // English, German, French and CJK (Chinese, Japanese, Korean) languages only.
+</programlisting>
+ To,</para>
+ <programlisting>
+private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", <emphasis>"it"</emphasis>};
+ //currently extended support available for
+ // English, German, French, CJK (Chinese, Japanese, Korean), and Italian languages only.
+ </programlisting>
+
+ </example>
+ </listitem>
+ <listitem>
+ <para>
+ Now, open <filename>docbook-webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java</filename> and
+ add the following line to the code where it initializes the Stemmer (Search for
+ <code>SnowballStemmer stemmer;</code>). Then add code to initialize the stemmer Object in your language.
+ It's self understandable. See the example. The class names are at:
+ <filename>docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/</filename>.
+ </para>
+ <example>
+ <title>initialize correct stemmer based on the <code>webhelp.indexer.language</code> specified</title>
+<programlisting>
+ SnowballStemmer stemmer;
+ if(indexerLanguage.equalsIgnoreCase("en")){
+ stemmer = new EnglishStemmer();
+ } else if (indexerLanguage.equalsIgnoreCase("de")){
+ stemmer= new GermanStemmer();
+ } else if (indexerLanguage.equalsIgnoreCase("fr")){
+ stemmer= new FrenchStemmer();
+ }
+<emphasis>else if (indexerLanguage.equalsIgnoreCase("it")){ //If language code is "it" (Italian)
+ stemmer= new italianStemmer(); //Initialize the stemmer to <code>italianStemmer</code> object.
+ } </emphasis>
+ else {
+ stemmer = null;
+ }
+</programlisting>
+ </example>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>That's all. Now run <code>ant build-indexer</code> to compile and build the java code.
+ Then, run <code>ant webhelp</code> to generate the output from your docbook file.
+ For any questions, contact us or email to the docbook mailing list
+ <email>docbook-apps@lists.oasis-open.org</email>.
+ </para>
+ </section>
+ </section>
+ </chapter>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css
new file mode 100644
index 0000000..3d30bc2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css
@@ -0,0 +1,109 @@
+body { font: 12px Verdana, Geneva, sans-serif; }
+p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; }
+h1 { font: bold 15pt Arial, Helvetica, geneva; }
+h2 { font: bold 14pt Arial, Helvetica, geneva; }
+
+#header {
+ background: white url(../images/header-bg.gif) repeat-x;
+ position: fixed;
+ width: 100%;
+ height: 95px;
+ top: 0;
+ right: 0;
+ bottom: auto;
+ left: 0;
+ border-bottom: 2px solid #cccccc;
+ z-index: 2000;
+}
+
+#leftnavigation {
+/* background-color:#91e7b3;*/
+ overflow: auto;
+ position: fixed;
+ height: auto;
+ top: 90px;
+ bottom: 0;
+ left: 0;
+ width: 280px;
+ z-index: 1500;
+ border-right:2px solid #CCCCCC;
+}
+
+#content {
+ position: relative;
+ top: 90px; /* left: 240px;*/
+ right: auto; /* bottom: 20px; */
+ margin: 0px 0px 0px 280px;
+ width: auto;
+ height: inherit;
+ padding-left: 5px;
+ padding-right: 30px;
+ color: #000000;
+ /*border-left: 2px solid #cccccc; overflow :scroll;*/
+ z-index: 1000;
+
+ max-width: 70em;
+ min-width:800px;
+}
+
+#navheader {
+ position: fixed;
+ top: 65px;
+ right:4px;
+}
+
+#content h1, #content h2 { color: #cc0000; }
+.navfooter { bottom: 2%; }
+.highlight { background-color: #c5d3c3; }
+.highlightButton{ font-size: 0; }
+
+/* Show Hide TOC tree */
+.pointLeft {
+ background: url("../images/showHideTreeIcons.png") 0 0 no-repeat;
+ height: 28px;
+ width: 15px;
+ display: block;
+ font-size: 0;
+ cursor: pointer;
+}
+.pointRight {
+ background: url("../images/showHideTreeIcons.png") -15px 0 no-repeat;
+ height: 28px;
+ display: block;
+ font-size: 0;
+ cursor: pointer;
+}
+
+/* Search results Styling */
+.searchExpression {
+ color: #0050A0;
+ background-color: #EBEFF8;
+ font-size: 12pt;
+}
+.searchresult li a {
+ text-decoration: none;
+ color: #0050A0;
+}
+.searchresult li {
+ color: #0050A0;
+}
+.shortdesclink {
+ color: gray;
+ font-size: 9pt;
+}
+.searchText {
+ border: #BFCEE9 solid 1pt;
+ width: 11em
+}
+.searchButton {
+ margin-left: 3px;
+ background: #EBEFF8;
+ color: #0050A0;
+ border: #BFCEE9 solid 1pt;
+ font-weight: bold;
+ font-size: 10pt
+}
+
+.title, div.toc>p{
+ font-weight: bold;
+ } \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js
new file mode 100644
index 0000000..7c24308
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js
new file mode 100644
index 0000000..fec53e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js
@@ -0,0 +1,321 @@
+/*!
+ * jQuery UI 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==
+"hidden")return false;b=b&&b=="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,f,g){return c.ui.isOverAxis(a,d,f)&&c.ui.isOverAxis(b,e,g)},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,
+NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect",
+"none")},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",
+1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==undefined)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");return(/input|select|textarea|button|object/.test(b)?
+!a.disabled:"a"==b||"area"==b?a.href||!isNaN(d):!isNaN(d))&&!c(a)["area"==b?"parents":"closest"](":hidden").length},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype=
+b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g=
+b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();
+this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f,
+h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=
+b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&
+this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();
+return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&
+this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-
+a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Position 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h=
+0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+=
+g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k,
+elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"?
+-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position=
+"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery);
+;/*
+ * jQuery UI Resizable 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
+_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
+top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
+this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
+nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e<c.length;e++){var g=d.trim(c[e]),f=d('<div class="ui-resizable-handle '+("ui-resizable-"+g)+'"></div>');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
+String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};
+if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),
+e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset=
+this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:
+this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",
+b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height;
+g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
+b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top=
+a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidth<b.width,g=k(b.height)&&a.maxHeight&&a.maxHeight<b.height,f=k(b.width)&&a.minWidth&&a.minWidth>b.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,
+l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var e=[c.css("borderTopWidth"),
+c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],g=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=d.map(e,function(f,h){f=parseInt(f,10)||0;h=parseInt(g[h],10)||0;return f+h})}d.browser.msie&&(d(b).is(":hidden")||d(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=
+this.element.offset();if(this._helper){this.helper=this.helper||d('<div style="overflow:hidden;"></div>');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+
+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this,
+arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable,
+{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)});
+else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&&
+d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a=
+d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing,
+step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=
+d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset;
+var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left:
+a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top-
+e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition,
+g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,
+display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b=
+d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height=
+e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
+;
+/*
+ * jQuery UI Selectable 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");
+b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=
+this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");
+a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=
+true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=
+false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.2"})})(jQuery);
+
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");
+b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=
+this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");
+a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=
+true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=
+false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.2"})})(jQuery);
+;/*
+ * jQuery UI Autocomplete 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Autocomplete
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ * jquery.ui.position.js
+ */
+(function(e){e.widget("ui.autocomplete",{options:{minLength:1,delay:300},_create:function(){var a=this,c=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(d){var b=e.ui.keyCode;switch(d.keyCode){case b.PAGE_UP:a._move("previousPage",d);break;case b.PAGE_DOWN:a._move("nextPage",d);break;case b.UP:a._move("previous",d);d.preventDefault();
+break;case b.DOWN:a._move("next",d);d.preventDefault();break;case b.ENTER:case b.NUMPAD_ENTER:a.menu.active&&d.preventDefault();case b.TAB:if(!a.menu.active)return;a.menu.select(d);break;case b.ESCAPE:a.element.val(a.term);a.close(d);break;case b.LEFT:case b.RIGHT:case b.SHIFT:case b.CONTROL:case b.ALT:case b.COMMAND:case b.COMMAND_RIGHT:case b.INSERT:case b.CAPS_LOCK:case b.END:case b.HOME:break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){a.search(null,d)},a.options.delay);
+break}}).bind("focus.autocomplete",function(){a.selectedItem=null;a.previous=a.element.val()}).bind("blur.autocomplete",function(d){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(d);a._change(d)},150)});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=e("<ul></ul>").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete");
+false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()},
+destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source===
+"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length<this.options.minLength)return this.close(c);clearTimeout(this.closing);if(this._trigger("search")!==false)return this._search(a)},_search:function(a){this.term=this.element.addClass("ui-autocomplete-loading").val();this.source({term:a},this.response)},_response:function(a){if(a.length){a=this._normalize(a);this._suggest(a);
+this._trigger("open")}else this.close();this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this._trigger("close",a);this.menu.element.hide();this.menu.deactivate()}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return e.map(a,function(c){if(typeof c==="string")return{label:c,value:c};return e.extend({label:c.label||
+c.value,value:c.value||c.label},c)})},_suggest:function(a){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1),d;this._renderMenu(c,a);this.menu.deactivate();this.menu.refresh();this.menu.element.show().position({my:"left top",at:"left bottom",of:this.element,collision:"none"});a=c.width("").width();d=this.element.width();c.width(Math.max(a,d))},_renderMenu:function(a,c){var d=this;e.each(c,function(b,f){d._renderItem(a,f)})},_renderItem:function(a,c){return e("<li></li>").data("item.autocomplete",
+c).append("<a>"+c.label+"</a>").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c),
+"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery);
+(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
+-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
+this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||
+this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last"));
+else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})})(jQuery);
+;/*
+ * jQuery UI Button 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Button
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ */
+(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",i);this._determineButtonType();
+this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",
+function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",
+function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",
+function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?
+"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());
+this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only"),
+c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon");
+this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},
+destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);
+;/*
+ * jQuery UI Dialog 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ * jquery.ui.button.js
+ * jquery.ui.draggable.js
+ * jquery.ui.mouse.js
+ * jquery.ui.position.js
+ * jquery.ui.resizable.js
+ */
+(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||"&#160;",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),
+h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",
+e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
+a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==
+b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",
+c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===
+f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,
+function(g,f){g=c('<button type="button"></button>').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");
+b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");
+a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",
+f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]=
+g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a,
+b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break;
+case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",
+d.uiDialogTitlebar).html(""+(b||"&#160;"));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",
+this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&
+c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&
+b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,
+document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,
+height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+;/*
+ * jQuery UI Tabs 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ */
+(function(d){function s(){return++u}function v(){return++w}var u=0,w=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&&
+e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c=
+d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]||
+(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass":
+"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs",
+function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show",
+null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs",
+function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g,
+j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",
+function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,
+"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",
+true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide");
+this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=c}),function(h){return h>=c?--h:h});this._tabify();this._trigger("remove",
+null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this},
+select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing");
+if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}},
+abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate=
+function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k<a.anchors.length?k:0)},c);i&&i.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(i){i.clientX&&a.rotate(null)}:function(){t=b.selected;h()});if(c){this.element.bind("tabsshow",h);this.anchors.bind(b.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(b.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
+;/*
+ * jQuery UI Effects 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Effects/
+ */
+jQuery.effects||function(f){function k(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
+16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return l.transparent;return l[f.trim(c).toLowerCase()]}function q(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return k(b)}function m(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
+a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function n(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in r||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function s(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function j(c,a,b,d){if(typeof c=="object"){d=
+a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(f.isFunction(b)){d=b;b=null}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:f.fx.speeds[b]||f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=q(b.elem,a);b.end=k(b.end);b.colorInit=
+true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var l={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,
+183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,
+165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},o=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){var e=f(this),g=e.attr("style")||" ",h=n(m.call(this)),p,t=e.attr("className");f.each(o,function(u,
+i){c[i]&&e[i+"Class"](c[i])});p=n(m.call(this));e.attr("className",t);e.animate(s(h,p),a,b,function(){f.each(o,function(u,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?
+f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===undefined?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.2",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==
+null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();
+var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});
+c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c||
+typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this,
+arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,
+a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+
+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,
+10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*
+a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,
+a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==undefined)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==undefined)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,
+a,b,d,e,g){if(g==undefined)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,
+d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
+;/*
+ * jQuery UI Effects Fold 1.8.2
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Effects/Fold
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100*
+f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
+;/*
+ * jQuery Highlight plugin
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d<a.childNodes.length;d++)d+=jQuery.highlight(a.childNodes[d],c,b,e);return 0}});
+jQuery.fn.unhighlight=function(a){var c={className:"highlight",element:"span"};jQuery.extend(c,a);return this.find(c.element+"."+c.className).each(function(){var b=this.parentNode;b.replaceChild(this.firstChild,this);b.normalize()}).end()};
+jQuery.fn.highlight=function(a,c){var b={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(b,c);if(a.constructor===String)a=[a];a=jQuery.grep(a,function(f){return f!=""});if(a.length==0)return this;var e=b.caseSensitive?"":"i",d="("+a.join("|")+")";if(b.wordsOnly)d="\\b"+d+"\\b";var g=RegExp(d,e);return this.each(function(){jQuery.highlight(this,g,b.element,b.className)})}; \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js
new file mode 100644
index 0000000..bada7bf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery.cookie.js
@@ -0,0 +1,93 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ var path = options.path ? '; path=' + options.path : '';
+ var domain = options.domain ? '; domain=' + options.domain : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+}; \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
new file mode 100644
index 0000000..0b17363
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css
@@ -0,0 +1,398 @@
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+.ui-corner-right { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Resizable
+----------------------------------*/
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Selectable
+----------------------------------*/
+.ui-selectable-helper { border:1px dotted black }
+/* Autocomplete
+----------------------------------*/
+.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/* Menu
+----------------------------------*/
+.ui-menu {
+ list-style:none;
+ padding: 2px;
+ margin: 0;
+ display:block;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+ margin:0;
+ padding: 0;
+ zoom: 1;
+ float: left;
+ clear: left;
+ width: 100%;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration:none;
+ display:block;
+ padding:.2em .4em;
+ line-height:1.5;
+ zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+}
+/* Button
+----------------------------------*/
+
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4; }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+
+
+
+
+
+/* Dialog
+----------------------------------*/
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/* Tabs
+----------------------------------*/
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js
new file mode 100644
index 0000000..2597dde
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.async.js
@@ -0,0 +1,72 @@
+/*
+ * Async Treeview 0.1 - Lazy-loading extension for Treeview
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id$
+ *
+ */
+
+;(function($) {
+
+function load(settings, root, child, container) {
+ $.getJSON(settings.url, {root: root}, function(response) {
+ function createNode(parent) {
+ var current = $("<li/>").attr("id", this.id || "").html("<span>" + this.text + "</span>").appendTo(parent);
+ if (this.classes) {
+ current.children("span").addClass(this.classes);
+ }
+ if (this.expanded) {
+ current.addClass("open");
+ }
+ if (this.hasChildren || this.children && this.children.length) {
+ var branch = $("<ul/>").appendTo(current);
+ if (this.hasChildren) {
+ current.addClass("hasChildren");
+ createNode.call({
+ text:"placeholder",
+ id:"placeholder",
+ children:[]
+ }, branch);
+ }
+ if (this.children && this.children.length) {
+ $.each(this.children, createNode, [branch])
+ }
+ }
+ }
+ $.each(response, createNode, [child]);
+ $(container).treeview({add: child});
+ });
+}
+
+var proxied = $.fn.treeview;
+$.fn.treeview = function(settings) {
+ if (!settings.url) {
+ return proxied.apply(this, arguments);
+ }
+ var container = this;
+ load(settings, "source", this, container);
+ var userToggle = settings.toggle;
+ return proxied.call(this, $.extend({}, settings, {
+ collapsed: true,
+ toggle: function() {
+ var $this = $(this);
+ if ($this.hasClass("hasChildren")) {
+ var childList = $this.removeClass("hasChildren").find("ul");
+ childList.empty();
+ load(settings, this.id, childList, container);
+ }
+ if (userToggle) {
+ userToggle.apply(this, arguments);
+ }
+ }
+ }));
+};
+
+})(jQuery); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css
new file mode 100644
index 0000000..dbf425b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css
@@ -0,0 +1,85 @@
+.treeview, .treeview ul {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+.treeview ul {
+ background-color: white;
+ margin-top: 4px;
+}
+
+.treeview .hitarea {
+ background: url(images/treeview-default.gif) -64px -25px no-repeat;
+ height: 16px;
+ width: 16px;
+ margin-left: -16px;
+ float: left;
+ cursor: pointer;
+}
+/* fix for IE6 */
+* html .hitarea {
+ display: inline;
+ float:none;
+}
+
+.treeview li {
+ margin: 0;
+ padding: 3px 0 3px 16px;
+}
+
+.treeview a.selected {
+ background-color: #eee;
+}
+
+#treecontrol { margin: 1em 0; display: none; }
+
+.treeview .hover { color: red; cursor: pointer; }
+
+.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; }
+.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
+
+.treeview .expandable-hitarea { background-position: -80px -3px; }
+
+.treeview li.last { background-position: 0 -1766px }
+.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); }
+.treeview li.lastCollapsable { background-position: 0 -111px }
+.treeview li.lastExpandable { background-position: -32px -67px }
+
+.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
+
+.treeview-red li { background-image: url(images/treeview-red-line.gif); }
+.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); }
+
+.treeview-black li { background-image: url(images/treeview-black-line.gif); }
+.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); }
+
+.treeview-gray li { background-image: url(images/treeview-gray-line.gif); }
+.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); }
+
+.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); }
+.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); }
+
+
+.filetree li { padding: 3px 0 2px 16px; }
+.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
+.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; }
+.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; }
+.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; }
+
+html, body {height:100%; margin: 0; padding: 0; }
+
+/*
+html>body {
+ font-size: 16px;
+ font-size: 68.75%;
+} Reset Base Font Size */
+ /*
+body {
+ font-family: Verdana, helvetica, arial, sans-serif;
+ font-size: 68.75%;
+ background: #fff;
+ color: #333;
+} */
+
+a img { border: none; } \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js
new file mode 100644
index 0000000..248e725
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js
@@ -0,0 +1,255 @@
+/*
+ * Treeview 1.4 - jQuery plugin to hide and show branches of a tree
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ * http://docs.jquery.com/Plugins/Treeview
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
+ *
+ */
+
+;(function($) {
+
+ $.extend($.fn, {
+ swapClass: function(c1, c2) {
+ var c1Elements = this.filter('.' + c1);
+ this.filter('.' + c2).removeClass(c2).addClass(c1);
+ c1Elements.removeClass(c1).addClass(c2);
+ return this;
+ },
+ replaceClass: function(c1, c2) {
+ return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
+ },
+ hoverClass: function(className) {
+ className = className || "hover";
+ return this.hover(function() {
+ $(this).addClass(className);
+ }, function() {
+ $(this).removeClass(className);
+ });
+ },
+ heightToggle: function(animated, callback) {
+ animated ?
+ this.animate({ height: "toggle" }, animated, callback) :
+ this.each(function(){
+ jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
+ if(callback)
+ callback.apply(this, arguments);
+ });
+ },
+ heightHide: function(animated, callback) {
+ if (animated) {
+ this.animate({ height: "hide" }, animated, callback);
+ } else {
+ this.hide();
+ if (callback)
+ this.each(callback);
+ }
+ },
+ prepareBranches: function(settings) {
+ if (!settings.prerendered) {
+ // mark last tree items
+ this.filter(":last-child:not(ul)").addClass(CLASSES.last);
+ // collapse whole tree, or only those marked as closed, anyway except those marked as open
+ this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
+ }
+ // return all items with sublists
+ return this.filter(":has(>ul)");
+ },
+ applyClasses: function(settings, toggler) {
+ this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
+ toggler.apply($(this).next());
+ }).add( $("a", this) ).hoverClass();
+
+ if (!settings.prerendered) {
+ // handle closed ones first
+ this.filter(":has(>ul:hidden)")
+ .addClass(CLASSES.expandable)
+ .replaceClass(CLASSES.last, CLASSES.lastExpandable);
+
+ // handle open ones
+ this.not(":has(>ul:hidden)")
+ .addClass(CLASSES.collapsable)
+ .replaceClass(CLASSES.last, CLASSES.lastCollapsable);
+
+ // create hitarea
+ this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function() {
+ var classes = "";
+ $.each($(this).parent().attr("class").split(" "), function() {
+ classes += this + "-hitarea ";
+ });
+ $(this).addClass( classes );
+ });
+ }
+
+ // apply event to hitarea
+ this.find("div." + CLASSES.hitarea).click( toggler );
+ },
+ treeview: function(settings) {
+
+ if(typeof(window.treeCookieId) !== 'undefined' || window.treeCookieId === ""){
+ treeCookieId = "treeview";
+ }
+
+ settings = $.extend({
+ cookieId: treeCookieId
+ }, settings);
+
+ if (settings.add) {
+ return this.trigger("add", [settings.add]);
+ }
+
+ if ( settings.toggle ) {
+ var callback = settings.toggle;
+ settings.toggle = function() {
+ return callback.apply($(this).parent()[0], arguments);
+ };
+ }
+
+ // factory for treecontroller
+ function treeController(tree, control) {
+ // factory for click handlers
+ function handler(filter) {
+ return function() {
+ // reuse toggle event handler, applying the elements to toggle
+ // start searching for all hitareas
+ toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
+ // for plain toggle, no filter is provided, otherwise we need to check the parent element
+ return filter ? $(this).parent("." + filter).length : true;
+ }) );
+ return false;
+ };
+ }
+ // click on first element to collapse tree
+ $("a:eq(0)", control).click( handler(CLASSES.collapsable) );
+ // click on second to expand tree
+ $("a:eq(1)", control).click( handler(CLASSES.expandable) );
+ // click on third to toggle tree
+ $("a:eq(2)", control).click( handler() );
+ }
+
+ // handle toggle event
+ function toggler() {
+ $(this)
+ .parent()
+ // swap classes for hitarea
+ .find(">.hitarea")
+ .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
+ .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
+ .end()
+ // swap classes for parent li
+ .swapClass( CLASSES.collapsable, CLASSES.expandable )
+ .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
+ // find child lists
+ .find( ">ul" )
+ // toggle them
+ .heightToggle( settings.animated, settings.toggle );
+ if ( settings.unique ) {
+ $(this).parent()
+ .siblings()
+ // swap classes for hitarea
+ .find(">.hitarea")
+ .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
+ .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
+ .end()
+ .replaceClass( CLASSES.collapsable, CLASSES.expandable )
+ .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
+ .find( ">ul" )
+ .heightHide( settings.animated, settings.toggle );
+ }
+ }
+ //Cookie Persistence
+ function serialize() {
+ function binary(arg) {
+ return arg ? 1 : 0;
+ }
+ var data = [];
+ branches.each(function(i, e) {
+ data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
+ });
+ $.cookie(settings.cookieId, data.join("") );
+ }
+
+ function deserialize() {
+ var stored = $.cookie(settings.cookieId);
+ if ( stored ) {
+ var data = stored.split("");
+ branches.each(function(i, e) {
+ $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
+ });
+ }
+ }
+
+ // add treeview class to activate styles
+ this.addClass("treeview");
+
+ // prepare branches and find all tree items with child lists
+ var branches = this.find("li").prepareBranches(settings);
+
+ switch(settings.persist) {
+ case "cookie":
+ var toggleCallback = settings.toggle;
+ settings.toggle = function() {
+ serialize();
+ if (toggleCallback) {
+ toggleCallback.apply(this, arguments);
+ }
+ };
+ deserialize();
+ break;
+ case "location":
+ var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
+ if ( current.length ) {
+ current.addClass("selected").parents("ul, li").add( current.next() ).show();
+ }
+ break;
+ }
+
+ branches.applyClasses(settings, toggler);
+
+ // if control option is set, create the treecontroller and show it
+ if ( settings.control ) {
+ treeController(this, settings.control);
+ $(settings.control).show();
+ }
+
+ return this.bind("add", function(event, branches) {
+ $(branches).prev()
+ .removeClass(CLASSES.last)
+ .removeClass(CLASSES.lastCollapsable)
+ .removeClass(CLASSES.lastExpandable)
+ .find(">.hitarea")
+ .removeClass(CLASSES.lastCollapsableHitarea)
+ .removeClass(CLASSES.lastExpandableHitarea);
+ $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
+ });
+ }
+ });
+
+ // classes used by the plugin
+ // need to be styled via external stylesheet, see first example
+ var CLASSES = $.fn.treeview.classes = {
+ open: "open",
+ closed: "closed",
+ expandable: "expandable",
+ expandableHitarea: "expandable-hitarea",
+ lastExpandableHitarea: "lastExpandable-hitarea",
+ collapsable: "collapsable",
+ collapsableHitarea: "collapsable-hitarea",
+ lastCollapsableHitarea: "lastCollapsable-hitarea",
+ lastCollapsable: "lastCollapsable",
+ lastExpandable: "lastExpandable",
+ last: "last",
+ hitarea: "hitarea"
+ };
+
+ // provide backwards compability
+ $.fn.Treeview = $.fn.treeview;
+
+})(jQuery); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js
new file mode 100644
index 0000000..e693321
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js
@@ -0,0 +1,16 @@
+/*
+ * Treeview 1.4 - jQuery plugin to hide and show branches of a tree
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ * http://docs.jquery.com/Plugins/Treeview
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
+ * kasunbg: changed the cookieid name
+ *
+ */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js
new file mode 100644
index 0000000..eddac49
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js
@@ -0,0 +1,16 @@
+/*
+ * Treeview 1.4 - jQuery plugin to hide and show branches of a tree
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
+ * http://docs.jquery.com/Plugins/Treeview
+ *
+ * Copyright (c) 2007 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
+ *
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(4($){$.1l($.F,{E:4(b,c){l a=3.n(\'.\'+b);3.n(\'.\'+c).o(c).m(b);a.o(b).m(c);8 3},s:4(a,b){8 3.n(\'.\'+a).o(a).m(b).P()},1n:4(a){a=a||"1j";8 3.1j(4(){$(3).m(a)},4(){$(3).o(a)})},1h:4(b,a){b?3.1g({1e:"p"},b,a):3.x(4(){T(3)[T(3).1a(":U")?"H":"D"]();7(a)a.A(3,O)})},12:4(b,a){7(b){3.1g({1e:"D"},b,a)}1L{3.D();7(a)3.x(a)}},11:4(a){7(!a.1k){3.n(":r-1H:G(9)").m(k.r);3.n((a.1F?"":"."+k.X)+":G(."+k.W+")").6(">9").D()}8 3.n(":y(>9)")},S:4(b,c){3.n(":y(>9):G(:y(>a))").6(">1z").C(4(a){c.A($(3).19())}).w($("a",3)).1n();7(!b.1k){3.n(":y(>9:U)").m(k.q).s(k.r,k.t);3.G(":y(>9:U)").m(k.u).s(k.r,k.v);3.1r("<J 14=\\""+k.5+"\\"/>").6("J."+k.5).x(4(){l a="";$.x($(3).B().1o("14").13(" "),4(){a+=3+"-5 "});$(3).m(a)})}3.6("J."+k.5).C(c)},z:4(g){g=$.1l({N:"z"},g);7(g.w){8 3.1K("w",[g.w])}7(g.p){l d=g.p;g.p=4(){8 d.A($(3).B()[0],O)}}4 1m(b,c){4 L(a){8 4(){K.A($("J."+k.5,b).n(4(){8 a?$(3).B("."+a).1i:1I}));8 1G}}$("a:10(0)",c).C(L(k.u));$("a:10(1)",c).C(L(k.q));$("a:10(2)",c).C(L())}4 K(){$(3).B().6(">.5").E(k.Z,k.Y).E(k.I,k.M).P().E(k.u,k.q).E(k.v,k.t).6(">9").1h(g.1f,g.p);7(g.1E){$(3).B().1D().6(">.5").s(k.Z,k.Y).s(k.I,k.M).P().s(k.u,k.q).s(k.v,k.t).6(">9").12(g.1f,g.p)}}4 1d(){4 1C(a){8 a?1:0}l b=[];j.x(4(i,e){b[i]=$(e).1a(":y(>9:1B)")?1:0});$.V(g.N,b.1A(""))}4 1c(){l b=$.V(g.N);7(b){l a=b.13("");j.x(4(i,e){$(e).6(">9")[1y(a[i])?"H":"D"]()})}}3.m("z");l j=3.6("Q").11(g);1x(g.1w){18"V":l h=g.p;g.p=4(){1d();7(h){h.A(3,O)}};1c();17;18"1b":l f=3.6("a").n(4(){8 3.16.15()==1b.16.15()});7(f.1i){f.m("1v").1u("9, Q").w(f.19()).H()}17}j.S(g,K);7(g.R){1m(3,g.R);$(g.R).H()}8 3.1t("w",4(a,b){$(b).1s().o(k.r).o(k.v).o(k.t).6(">.5").o(k.I).o(k.M);$(b).6("Q").1q().11(g).S(g,K)})}});l k=$.F.z.1J={W:"W",X:"X",q:"q",Y:"q-5",M:"t-5",u:"u",Z:"u-5",I:"v-5",v:"v",t:"t",r:"r",5:"5"};$.F.1p=$.F.z})(T);',62,110,'|||this|function|hitarea|find|if|return|ul||||||||||||var|addClass|filter|removeClass|toggle|expandable|last|replaceClass|lastExpandable|collapsable|lastCollapsable|add|each|has|treeview|apply|parent|click|hide|swapClass|fn|not|show|lastCollapsableHitarea|div|toggler|handler|lastExpandableHitarea|cookieId|arguments|end|li|control|applyClasses|jQuery|hidden|cookie|open|closed|expandableHitarea|collapsableHitarea|eq|prepareBranches|heightHide|split|class|toLowerCase|href|break|case|next|is|location|deserialize|serialize|height|animated|animate|heightToggle|length|hover|prerendered|extend|treeController|hoverClass|attr|Treeview|andSelf|prepend|prev|bind|parents|selected|persist|switch|parseInt|span|join|visible|binary|siblings|unique|collapsed|false|child|true|classes|trigger|else'.split('|'),0,{})) \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js
new file mode 100644
index 0000000..dee7303
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js
@@ -0,0 +1,161 @@
+/**
+ * Miscellaneous js functions for WebHelp
+ * Kasun Gajasinghe, http://kasunbg.blogspot.com
+ * David Cramer, http://www.thingbag.net
+ *
+ */
+
+$(document).ready(function() {
+ // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button
+ //Generate tabs in nav-pane with JQuery
+ $(function() {
+ $("#tabs").tabs({
+ cookie: {
+ // store cookie for 2 days.
+ expires: 2
+ }
+ });
+ });
+
+ //Generate the tree
+ $("#ulTreeDiv").attr("style","");
+ $("#tree").treeview({
+ collapsed: true,
+ animated: "medium",
+ control: "#sidetreecontrol",
+ persist: "cookie"
+ });
+
+ //after toc fully styled, display it. Until loading, a 'loading' image will be displayed
+ $("#tocLoading").attr("style","display:none;");
+// $("#ulTreeDiv").attr("style","display:block;");
+
+ //.searchButton is the css class applied to 'Go' button
+ $(function() {
+ $("button", ".searchButton").button();
+
+ $("button", ".searchButton").click(function() { return false; });
+ });
+
+ //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab)
+ if ($.cookie('ui-tabs-1') === '1') { //search tab is visible
+ if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) {
+ document.getElementById('textToSearch').value = $.cookie('textToSearch');
+ Verifie('diaSearch_Form');
+ searchHighlight($.cookie('textToSearch'));
+ $("#showHideHighlight").css("display","block");
+ }
+ }
+
+ syncToc(); //Synchronize the toc tree with the content pane, when loading the page.
+ //$("#doSearch").button(); //add jquery button styling to 'Go' button
+});
+
+/**
+ * Synchronize with the tableOfContents
+ */
+function syncToc(){
+ var a = document.getElementById("webhelp-currentid");
+ if (a != undefined) {
+ var b = a.getElementsByTagName("a")[0];
+
+ if (b != undefined) {
+ //Setting the background for selected node.
+ var style = a.getAttribute("style");
+ if (style != null && !style.match(/background-color: Background;/)) {
+ a.setAttribute("style", "background-color: #6495ed; " + style);
+ b.setAttribute("style", "color: white;");
+ } else if (style != null) {
+ a.setAttribute("style", "background-color: #6495ed; " + style);
+ b.setAttribute("style", "color: white;");
+ } else {
+ a.setAttribute("style", "background-color: #6495ed; ");
+ b.setAttribute("style", "color: white;");
+ }
+ }
+
+ //shows the node related to current content.
+ //goes a recursive call from current node to ancestor nodes, displaying all of them.
+ while (a.parentNode && a.parentNode.nodeName) {
+ var parentNode = a.parentNode;
+ var nodeName = parentNode.nodeName;
+
+ if (nodeName.toLowerCase() == "ul") {
+ parentNode.setAttribute("style", "display: block;");
+ } else if (nodeName.toLocaleLowerCase() == "li") {
+ parentNode.setAttribute("class", "collapsable");
+ parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea ");
+ }
+ a = parentNode;
+ }
+ }
+}
+
+/**
+ * Code for Show/Hide TOC
+ *
+ */
+function showHideToc() {
+ var showHideButton = $("#showHideButton");
+ var leftNavigation = $("#leftnavigation");
+ var content = $("#content");
+
+ if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) {
+ //Hide TOC
+ showHideButton.removeClass('pointLeft').addClass('pointRight');
+ content.css("margin", "0 0 0 0");
+ leftNavigation.css("display","none");
+ showHideButton.attr("title", "Show the TOC tree");
+ } else {
+ //Show the TOC
+ showHideButton.removeClass('pointRight').addClass('pointLeft');
+ content.css("margin", "0 0 0 280px");
+ leftNavigation.css("display","block");
+ showHideButton.attr("title", "Hide the TOC Tree");
+ }
+}
+
+/**
+ * Code for searh highlighting
+ */
+var highlightOn = true;
+function searchHighlight(searchText) {
+ highlightOn = true;
+ if (searchText != undefined) {
+ var wList;
+ var sList = new Array(); //stem list
+ //Highlight the search terms
+ searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "</").replace(/_di_/g, "%24_")
+ searchText = searchText.replace(/ +/g, " ");
+ searchText = searchText.replace(/ $/, "").replace(/^ /, "");
+
+ wList = searchText.split(" ");
+ $("#content").highlight(wList); //Highlight the search input
+
+ if(typeof stemmer != "undefined" ){
+ //Highlight the stems
+ for (var i = 0; i < wList.length; i++) {
+ var stemW = stemmer(wList[i]);
+ sList.push(stemW);
+ }
+ } else {
+ sList = wList;
+ }
+ $("#content").highlight(sList); //Highlight the search input's all stems
+ }
+}
+
+function searchUnhighlight(){
+ highlightOn = false;
+ //unhighlight the search input's all stems
+ $("#content").unhighlight();
+ $("#content").unhighlight();
+}
+
+function toggleHighlight(){
+ if(highlightOn) {
+ searchUnhighlight();
+ } else {
+ searchHighlight($.cookie('textToSearch'));
+ }
+} \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props
new file mode 100644
index 0000000..22edf43
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/default.props
@@ -0,0 +1 @@
+DEF01=a \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props
new file mode 100644
index 0000000..da284ce
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/en-us.props
@@ -0,0 +1,45 @@
+DEF01=this
+DEF02=is
+DEF03=the
+DEF04=in
+DEF05=i
+DEF06=on
+DEF07=a
+DEF08=about
+DEF09=an
+DEF10=are
+DEF11=as
+DEF12=at
+DEF13=be
+DEF14=by
+DEF15=com
+DEF16=de
+DEF17=en
+DEF18=for
+DEF19=from
+DEF20=how
+DEF21=it
+DEF22=la
+DEF23=of
+DEF24=on
+DEF25=or
+DEF26=that
+DEF27=to
+DEF28=was
+DEF29=what
+DEF30=when
+DEF31=where
+DEF32=who
+DEF33=will
+DEF34=with
+DEF35=und
+DEF36=Next
+DEF37=Prev
+DEF38=Home
+DEF39=Motive
+DEF40=Inc
+DEF41=Copyright
+DEF42=All
+DEF43=rights
+DEF44=reserved
+DEF45=Up \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props
new file mode 100644
index 0000000..fb73bdc
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/es-es.props
@@ -0,0 +1,179 @@
+DEF01=un
+DEF02=una
+DEF03=unas
+DEF04=unos
+DEF05=uno
+DEF06=sobre
+DEF07=todo
+DEF08=también
+DEF09=tras
+DEF10=otro
+DEF11=algún
+DEF12=alguno
+DEF13=alguna
+DEF14=algunos
+DEF15=algunas
+DEF16=ser
+DEF17=es
+DEF18=soy
+DEF19=eres
+DEF20=somos
+DEF21=sois
+DEF22=estoy
+DEF23=esta
+DEF24=estamos
+DEF25=estais
+DEF26=estan
+DEF27=como
+DEF28=en
+DEF29=para
+DEF30=atras
+DEF31=porque
+DEF32=por
+DEF33=estado
+DEF34=estaba
+DEF35=ante
+DEF36=antes
+DEF37=siendo
+DEF38=ambos
+DEF39=pero
+DEF40=por
+DEF41=poder
+DEF42=puede
+DEF43=puedo
+DEF44=podemos
+DEF45=podeis
+DEF46=pueden
+DEF47=fui
+DEF48=fue
+DEF49=fuimos
+DEF50=fueron
+DEF51=hacer
+DEF52=hago
+DEF53=hace
+DEF54=hacemos
+DEF55=haceis
+DEF56=hacen
+DEF57=cada
+DEF58=fin
+DEF59=incluso
+DEF60=primero
+DEF61=desde
+DEF62=conseguir
+DEF63=consigo
+DEF64=consigue
+DEF65=consigues
+DEF66=conseguimos
+DEF67=consiguen
+DEF68=ir
+DEF69=voy
+DEF70=va
+DEF71=vamos
+DEF72=vais
+DEF73=van
+DEF74=vaya
+DEF75=gueno
+DEF76=ha
+DEF77=tener
+DEF78=tengo
+DEF79=tiene
+DEF80=tenemos
+DEF81=teneis
+DEF82=tienen
+DEF83=el
+DEF84=la
+DEF85=lo
+DEF86=las
+DEF87=los
+DEF88=su
+DEF89=aqui
+DEF90=mio
+DEF91=tuyo
+DEF92=ellos
+DEF93=ellas
+DEF94=nos
+DEF95=nosotros
+DEF96=vosotros
+DEF97=vosotras
+DEF98=si
+DEF99=dentro
+DEF100=solo
+DEF101=solamente
+DEF102=saber
+DEF103=sabes
+DEF104=sabe
+DEF105=sabemos
+DEF106=sabeis
+DEF107=saben
+DEF108=ultimo
+DEF109=largo
+DEF110=bastante
+DEF111=haces
+DEF112=muchos
+DEF113=aquellos
+DEF114=aquellas
+DEF115=sus
+DEF116=entonces
+DEF117=tiempo
+DEF118=verdad
+DEF119=verdadero
+DEF120=verdadera
+DEF121=cierto
+DEF122=ciertos
+DEF123=cierta
+DEF124=ciertas
+DEF125=intentar
+DEF126=intento
+DEF127=intenta
+DEF128=intentas
+DEF129=intentamos
+DEF130=intentais
+DEF131=intentan
+DEF132=dos
+DEF133=bajo
+DEF134=arriba
+DEF135=encima
+DEF136=usar
+DEF137=uso
+DEF138=usas
+DEF139=usa
+DEF140=usamos
+DEF141=usais
+DEF142=usan
+DEF143=emplear
+DEF144=empleo
+DEF145=empleas
+DEF146=emplean
+DEF147=ampleamos
+DEF148=empleais
+DEF149=valor
+DEF150=muy
+DEF151=era
+DEF152=eras
+DEF153=eramos
+DEF154=eran
+DEF155=modo
+DEF156=bien
+DEF157=cual
+DEF158=cuando
+DEF159=donde
+DEF160=mientras
+DEF161=quien
+DEF162=con
+DEF163=entre
+DEF164=sin
+DEF165=trabajo
+DEF166=trabajar
+DEF167=trabajas
+DEF168=trabaja
+DEF169=trabajamos
+DEF170=trabajais
+DEF171=trabajan
+DEF172=podria
+DEF173=podrias
+DEF174=podriamos
+DEF175=podrian
+DEF176=podriais
+DEF177=yo
+DEF178=aquel
+DEF179=qué \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props
new file mode 100644
index 0000000..2756805
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/ja-jp.props
@@ -0,0 +1 @@
+J01=\\u306B \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js
new file mode 100644
index 0000000..0111559
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/nwSearchFnt.js
@@ -0,0 +1,513 @@
+/*----------------------------------------------------------------------------
+ * JavaScript for webhelp search
+ *----------------------------------------------------------------------------
+ This file is part of the webhelpsearch plugin for DocBook WebHelp
+ Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved.
+ www.nexwave.biz Nadege Quaine
+ http://kasunbg.blogspot.com/ Kasun Gajasinghe
+ */
+
+//string initialization
+var htmlfileList = "htmlFileList.js";
+var htmlfileinfoList = "htmlFileInfoList.js";
+var useCJKTokenizing = false;
+
+/* Cette fonction verifie la validite de la recherche entrre par l utilisateur */
+function Verifie(ditaSearch_Form) {
+
+ // Check browser compatibitily
+ if (navigator.userAgent.indexOf("Konquerer") > -1) {
+
+ alert(txt_browser_not_supported);
+ return;
+ }
+
+
+ var expressionInput = document.ditaSearch_Form.textToSearch.value;
+ //Set a cookie to store the searched keywords
+ $.cookie('textToSearch', expressionInput);
+
+
+ if (expressionInput.length < 1) {
+
+ // expression is invalid
+ alert(txt_enter_at_least_1_char);
+ // reactive la fenetre de search (utile car cadres)
+ document.ditaSearch_Form.textToSearch.focus();
+ }
+ else {
+
+ // Effectuer la recherche
+ Effectuer_recherche(expressionInput);
+
+ // reactive la fenetre de search (utile car cadres)
+ document.ditaSearch_Form.textToSearch.focus();
+ }
+}
+
+var stemQueryMap = new Array(); // A hashtable which maps stems to query words
+
+/* This function parses the search expression, loads the indices and displays the results*/
+function Effectuer_recherche(expressionInput) {
+
+ /* Display a waiting message */
+ //DisplayWaitingMessage();
+
+ /*data initialisation*/
+ var searchFor = ""; // expression en lowercase et sans les caracte res speciaux
+ //w = new Object(); // hashtable, key=word, value = list of the index of the html files
+ scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for
+ var wordsList = new Array(); // Array with the words to look for
+ var finalWordsList = new Array(); // Array with the words to look for after removing spaces
+ var linkTab = new Array();
+ var fileAndWordList = new Array();
+ var txt_wordsnotfound = "";
+
+
+ /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/
+ searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "</").replace(/_di_/g, "%24_");
+
+ searchFor = searchFor.replace(/ +/g, " ");
+ searchFor = searchFor.replace(/ $/, "").replace(/^ /, "");
+
+ wordsList = searchFor.split(" ");
+ wordsList.sort();
+
+ //set the tokenizing method
+ if(typeof indexerLanguage != "undefined" && (indexerLanguage=="zh" || indexerLanguage=="ja" ||indexerLanguage=="ko")){
+ useCJKTokenizing=true;
+ } else {
+ useCJKTokenizing=false;
+ }
+ //If Lucene CJKTokenizer was used as the indexer, then useCJKTokenizing will be true. Else, do normal tokenizing.
+ // 2-gram tokenizinghappens in CJKTokenizing,
+ if(useCJKTokenizing){
+ finalWordsList = cjkTokenize(wordsList);
+ } else {
+ finalWordsList = tokenize(wordsList);
+ }
+
+ //load the scripts with the indices: the following lines do not work on the server. To be corrected
+ /*if (IEBrowser) {
+ scriptsarray = loadTheIndexScripts (scriptLetterTab);
+ } */
+
+ /**
+ * Compare with the indexed words (in the w[] array), and push words that are in it to tempTab.
+ */
+ var tempTab = new Array();
+ for (var t in finalWordsList) {
+ if (w[finalWordsList[t].toString()] == undefined) {
+ txt_wordsnotfound += finalWordsList[t] + " ";
+ } else {
+ tempTab.push(finalWordsList[t]);
+ }
+ }
+ finalWordsList = tempTab;
+
+ if (finalWordsList.length) {
+
+ //search 'and' and 'or' one time
+ fileAndWordList = SortResults(finalWordsList);
+
+ var cpt = fileAndWordList.length;
+ for (var i = cpt - 1; i >= 0; i--) {
+ if (fileAndWordList[i] != undefined) {
+ linkTab.push("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + fileAndWordList[i][0].motslisteDisplay + "</span>" + "</p>");
+
+ linkTab.push("<ul class='searchresult'>");
+ for (t in fileAndWordList[i]) {
+ //DEBUG: alert(": "+ fileAndWordList[i][t].filenb+" " +fileAndWordList[i][t].motsliste);
+ //linkTab.push("<li><a href=\"../"+fl[fileAndWordList[i][t].filenb]+"\">"+fl[fileAndWordList[i][t].filenb]+"</a></li>");
+ var tempInfo = fil[fileAndWordList[i][t].filenb];
+ var pos1 = tempInfo.indexOf("@@@");
+ var pos2 = tempInfo.lastIndexOf("@@@");
+ var tempPath = tempInfo.substring(0, pos1);
+ var tempTitle = tempInfo.substring(pos1 + 3, pos2);
+ var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length);
+
+ //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html
+ var linkString = "<li><a href=" + tempPath + ">" + tempTitle + "</a>";
+ // var linkString = "<li><a href=\"installation.html\">" + tempTitle + "</a>";
+ if ((tempShortdesc != "null")) {
+ linkString += "\n<div class=\"shortdesclink\">" + tempShortdesc + "</div>";
+ }
+ linkString += "</li>";
+ linkTab.push(linkString);
+ }
+ linkTab.push("</ul>");
+ }
+ }
+ }
+
+ var results = "";
+ if (linkTab.length > 0) {
+ /*writeln ("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + cleanwordsList + "</span>" + "<br/>"+"</p>");*/
+ results = "<p>";
+ //write("<ul class='searchresult'>");
+ for (t in linkTab) {
+ results += linkTab[t].toString();
+ }
+ results += "</p>";
+ } else {
+ results = "<p>" + "Your search returned no results for " + "<span class=\"searchExpression\">" + txt_wordsnotfound + "</span>" + "</p>";
+ }
+ //alert(results);
+ document.getElementById('searchResults').innerHTML = results;
+}
+
+function tokenize(wordsList){
+ var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces
+ var cleanwordsList = new Array(); // Array with the words to look for
+ for(var j in wordsList){
+ var word = wordsList[j];
+ if(typeof stemmer != "undefined" ){
+ stemQueryMap[stemmer(word)] = word;
+ } else {
+ stemQueryMap[word] = word;
+ }
+ }
+ //stemmedWordsList is the stemmed list of words separated by spaces.
+ for (var t in wordsList) {
+ wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "");
+ if (wordsList[t] != "%20") {
+ scriptLetterTab.add(wordsList[t].charAt(0));
+ cleanwordsList.push(wordsList[t]);
+ }
+ }
+
+ if(typeof stemmer != "undefined" ){
+ //Do the stemming using Porter's stemming algorithm
+ for (var i = 0; i < cleanwordsList.length; i++) {
+ var stemWord = stemmer(cleanwordsList[i]);
+ stemmedWordsList.push(stemWord);
+ }
+ } else {
+ stemmedWordsList = cleanwordsList;
+ }
+ return stemmedWordsList;
+}
+
+//Invoker of CJKTokenizer class methods.
+function cjkTokenize(wordsList){
+ var allTokens= new Array();
+ var notCJKTokens= new Array();
+ var j=0;
+ for(j=0;j<wordsList.length;j++){
+ var word = wordsList[j];
+ if(getAvgAsciiValue(word) < 127){
+ notCJKTokens.push(word);
+ } else {
+ var tokenizer = new CJKTokenizer(word);
+ var tokensTmp = tokenizer.getAllTokens();
+ allTokens = allTokens.concat(tokensTmp);
+ }
+ }
+ allTokens = allTokens.concat(tokenize(notCJKTokens));
+ return allTokens;
+}
+
+//A simple way to determine whether the query is in english or not.
+function getAvgAsciiValue(word){
+ var tmp = 0;
+ var num = word.length < 5 ? word.length:5;
+ for(var i=0;i<num;i++){
+ if(i==5) break;
+ tmp += word.charCodeAt(i);
+ }
+ return tmp/num;
+}
+
+//CJKTokenizer
+function CJKTokenizer(input){
+ this.input = input;
+ this.offset=-1;
+ this.tokens = new Array();
+ this.incrementToken = incrementToken;
+ this.tokenize = tokenize;
+ this.getAllTokens = getAllTokens;
+ this.unique = unique;
+
+ function incrementToken(){
+ if(this.input.length - 2 <= this.offset){
+ // console.log("false "+offset);
+ return false;
+ }
+ else {
+ this.offset+=1;
+ return true;
+ }
+ }
+
+ function tokenize(){
+ //document.getElementById("content").innerHTML += x.substring(offset,offset+2)+"<br>";
+ return this.input.substring(this.offset,this.offset+2);
+ }
+
+ function getAllTokens(){
+ while(this.incrementToken()){
+ var tmp = this.tokenize();
+ this.tokens.push(tmp);
+ }
+ return this.unique(this.tokens);
+// document.getElementById("content").innerHTML += tokens+" ";
+// document.getElementById("content").innerHTML += "<br>dada"+sortedTokens+" ";
+// console.log(tokens.length+"dsdsds");
+ /*for(i=0;i<tokens.length;i++){
+ console.log(tokens[i]);
+ var ss = tokens[i] == sortedTokens[i];
+
+// document.getElementById("content").innerHTML += "<br>dada"+un[i]+"- "+stems[i]+"&nbsp;&nbsp;&nbsp;"+ ss;
+ document.getElementById("content").innerHTML += "<br>"+sortedTokens[i];
+ }*/
+ }
+
+ function unique(a)
+ {
+ var r = new Array();
+ o:for(var i = 0, n = a.length; i < n; i++)
+ {
+ for(var x = 0, y = r.length; x < y; x++)
+ {
+ if(r[x]==a[i]) continue o;
+ }
+ r[r.length] = a[i];
+ }
+ return r;
+ }
+}
+
+
+/* Scriptfirstchar: to gather the first letter of index js files to upload */
+function Scriptfirstchar() {
+ this.strLetters = "";
+ this.add = addLettre;
+}
+
+function addLettre(caract) {
+
+ if (this.strLetters == 'undefined') {
+ this.strLetters = caract;
+ } else if (this.strLetters.indexOf(caract) < 0) {
+ this.strLetters += caract;
+ }
+
+ return 0;
+}
+/* end of scriptfirstchar */
+
+/*main loader function*/
+/*tab contains the first letters of each word looked for*/
+function loadTheIndexScripts(tab) {
+
+ //alert (tab.strLetters);
+ var scriptsarray = new Array();
+
+ for (var i = 0; i < tab.strLetters.length; i++) {
+
+ scriptsarray[i] = "..\/search" + "\/" + tab.strLetters.charAt(i) + ".js";
+ }
+ // add the list of html files
+ i++;
+ scriptsarray[i] = "..\/search" + "\/" + htmlfileList;
+
+ //debug
+ for (var t in scriptsarray) {
+ //alert (scriptsarray[t]);
+ }
+
+ tab = new ScriptLoader();
+ for (t in scriptsarray) {
+ tab.add(scriptsarray[t]);
+ }
+ tab.load();
+ //alert ("scripts loaded");
+ return (scriptsarray);
+}
+
+/* ScriptLoader: to load the scripts and wait that it's finished */
+function ScriptLoader() {
+ this.cpt = 0;
+ this.scriptTab = new Array();
+ this.add = addAScriptInTheList;
+ this.load = loadTheScripts;
+ this.onScriptLoaded = onScriptLoadedFunc;
+}
+
+function addAScriptInTheList(scriptPath) {
+ this.scriptTab.push(scriptPath);
+}
+
+function loadTheScripts() {
+ var script;
+ var head;
+
+ head = document.getElementsByTagName('head').item(0);
+
+ //script = document.createElement('script');
+
+ for (var el in this.scriptTab) {
+ //alert (el+this.scriptTab[el]);
+ script = document.createElement('script');
+ script.src = this.scriptTab[el];
+ script.type = 'text/javascript';
+ script.defer = false;
+
+ head.appendChild(script);
+ }
+
+}
+
+function onScriptLoadedFunc(e) {
+ e = e || window.event;
+ var target = e.target || e.srcElement;
+ var isComplete = true;
+ if (typeof target.readyState != undefined) {
+
+ isComplete = (target.readyState == "complete" || target.readyState == "loaded");
+ }
+ if (isComplete) {
+ ScriptLoader.cpt++;
+ if (ScriptLoader.cpt == ScriptLoader.scripts.length) {
+ ScriptLoader.onLoadComplete();
+ }
+ }
+}
+
+/*
+function onLoadComplete() {
+ alert("loaded !!");
+} */
+
+/* End of scriptloader functions */
+
+// Array.unique( strict ) - Remove duplicate values
+function unique(tab) {
+ var a = new Array();
+ var i;
+ var l = tab.length;
+
+ if (tab[0] != undefined) {
+ a[0] = tab[0];
+ }
+ else {
+ return -1
+ }
+
+ for (i = 1; i < l; i++) {
+ if (indexof(a, tab[i], 0) < 0) {
+ a.push(tab[i]);
+ }
+ }
+ return a;
+}
+function indexof(tab, element, begin) {
+ for (var i = begin; i < tab.length; i++) {
+ if (tab[i] == element) {
+ return i;
+ }
+ }
+ return -1;
+
+}
+/* end of Array functions */
+
+
+/*
+ Param: mots= list of words to look for.
+ This function creates an hashtable:
+ - The key is the index of a html file which contains a word to look for.
+ - The value is the list of all words contained in the html file.
+
+ Return value: the hashtable fileAndWordList
+ */
+function SortResults(mots) {
+
+ var fileAndWordList = new Object();
+ if (mots.length == 0) {
+ return null;
+ }
+
+ for (var t in mots) {
+ // get the list of the indices of the files.
+ var listNumerosDesFicStr = w[mots[t].toString()];
+ //alert ("listNumerosDesFicStr "+listNumerosDesFicStr);
+ var tab = listNumerosDesFicStr.split(",");
+
+ //for each file (file's index):
+ for (var t2 in tab) {
+ var temp = tab[t2].toString();
+ if (fileAndWordList[temp] == undefined) {
+
+ fileAndWordList[temp] = "" + mots[t];
+ } else {
+
+ fileAndWordList[temp] += "," + mots[t];
+ }
+ }
+ }
+
+ var fileAndWordListValuesOnly = new Array();
+
+ // sort results according to values
+ var temptab = new Array();
+ for (t in fileAndWordList) {
+ tab = fileAndWordList[t].split(',');
+
+ var tempDisplay = new Array();
+ for (var x in tab) {
+ if(stemQueryMap[tab[x]] != undefined){
+ tempDisplay.push(stemQueryMap[tab[x]]); //get the original word from the stem word.
+ } else {
+ tempDisplay.push(tab[x]); //no stem is available. (probably a CJK language)
+ }
+ }
+ var tempDispString = tempDisplay.join(", ");
+
+ temptab.push(new resultPerFile(t, fileAndWordList[t], tab.length, tempDispString));
+ fileAndWordListValuesOnly.push(fileAndWordList[t]);
+ }
+
+
+ //alert("t"+fileAndWordListValuesOnly.toString());
+
+ fileAndWordListValuesOnly = unique(fileAndWordListValuesOnly);
+ fileAndWordListValuesOnly = fileAndWordListValuesOnly.sort(compare_nbMots);
+ //alert("t: "+fileAndWordListValuesOnly.join(';'));
+
+ var listToOutput = new Array();
+
+ for (var j in fileAndWordListValuesOnly) {
+ for (t in temptab) {
+ if (temptab[t].motsliste == fileAndWordListValuesOnly[j]) {
+ if (listToOutput[j] == undefined) {
+ listToOutput[j] = new Array(temptab[t]);
+ } else {
+ listToOutput[j].push(temptab[t]);
+ }
+ }
+ }
+ }
+ return listToOutput;
+}
+
+function resultPerFile(filenb, motsliste, motsnb, motslisteDisplay) {
+ this.filenb = filenb;
+ this.motsliste = motsliste;
+ this.motsnb = motsnb;
+ this.motslisteDisplay= motslisteDisplay;
+}
+
+function compare_nbMots(s1, s2) {
+ var t1 = s1.split(',');
+ var t2 = s2.split(',');
+ //alert ("s1:"+t1.length + " " +t2.length)
+ if (t1.length == t2.length) {
+ return 0;
+ } else if (t1.length > t2.length) {
+ return 1;
+ } else {
+ return -1;
+ }
+ //return t1.length - t2.length);
+} \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props
new file mode 100644
index 0000000..d3e3fcd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props
@@ -0,0 +1,31 @@
+Punct01=\\u3002
+Punct02=\\u3003
+Punct03=\\u300C
+Punct04=\\u300D
+Punct05=\\u300E
+Punct06=\\u300F
+Punct07=\\u301D
+Punct08=\\u301E
+Punct09=\\u301F
+Punct10=\\u309B
+Punct11=\\u2018
+Punct12=\\u2019
+Punct13=\\u201A
+Punct14=\\u201C
+Punct15=\\u201D
+Punct16=\\u201E
+Punct17=\\u2032
+Punct18=\\u2033
+Punct19=\\u2035
+Punct20=\\u2039
+Punct21=\\u203A
+Punct22=\\u201E
+Punct23=\\u00BB
+Punct24=\\u00AB
+Punct25=©
+Punct26=’
+Punct27=\\u00A0
+Punct28=\\u2014
+
+
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js
new file mode 100644
index 0000000..7ff3822
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js
@@ -0,0 +1,247 @@
+/*
+ * Author: Joder Illi
+ *
+ * Copyright (c) 2010, FormBlitz AG
+ * All rights reserved.
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html
+ * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php
+ *
+ * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license.
+ *
+ */
+
+//var stemmer = function Stemmer() {
+ /*
+ German includes the following accented forms,
+ ä ö ü
+ and a special letter, ß, equivalent to double s.
+ The following letters are vowels:
+ a e i o u y ä ö ü
+ */
+
+ var stemmer = function(word) {
+ /*
+ Put u and y between vowels into upper case
+ */
+ word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2');
+ word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2');
+
+ /*
+ and then do the following mappings,
+ (a) replace ß with ss,
+ (a) replace ae with ä, Not doing these, have trouble with diphtongs
+ (a) replace oe with ö, Not doing these, have trouble with diphtongs
+ (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs
+ So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found.
+ */
+ word = word.replace(/ß/g, 'ss');
+ //word = word.replace(/ae/g, 'ä');
+ //word = word.replace(/oe/g, 'ö');
+ //word = word.replace(/([^q])ue/g, '$1ü');
+
+ /*
+ R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters.
+ R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel.
+ R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel.
+ */
+
+ var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+
+ if (r1Index != -1) {
+ var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ }
+ }
+
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t.
+ Define a valid st-ending as the same list, excluding letter r.
+ */
+
+ /*
+ Do each of steps 1, 2 and 3.
+ */
+
+ /*
+ Step 1:
+ Search for the longest among the following suffixes,
+ (a) em ern er
+ (b) e en es
+ (c) s (preceded by a valid s-ending)
+ */
+ var a1Index = word.search(/(em|ern|er)$/g);
+ var b1Index = word.search(/(e|en|es)$/g);
+ var c1Index = word.search(/([bdfghklmnrt]s)$/g);
+ if (c1Index != -1) {
+ c1Index++;
+ }
+ var index1 = 10000;
+ var optionUsed1 = '';
+ if (a1Index != -1 && a1Index < index1) {
+ optionUsed1 = 'a';
+ index1 = a1Index;
+ }
+ if (b1Index != -1 && b1Index < index1) {
+ optionUsed1 = 'b';
+ index1 = b1Index;
+ }
+ if (c1Index != -1 && c1Index < index1) {
+ optionUsed1 = 'c';
+ index1 = c1Index;
+ }
+
+ /*
+ and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s.
+ (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis)
+ */
+
+ if (index1 != 10000 && r1Index != -1) {
+ if (index1 >= r1Index) {
+ word = word.substring(0, index1);
+ if (optionUsed1 == 'b') {
+ if (word.search(/niss$/) != -1) {
+ word = word.substring(0, word.length -1);
+ }
+ }
+ }
+ }
+ /*
+ Step 2:
+ Search for the longest among the following suffixes,
+ (a) en er est
+ (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters)
+ */
+
+ var a2Index = word.search(/(en|er|est)$/g);
+ var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g);
+ if (b2Index != -1) {
+ b2Index += 4;
+ }
+
+ var index2 = 10000;
+ var optionUsed2 = '';
+ if (a2Index != -1 && a2Index < index2) {
+ optionUsed2 = 'a';
+ index2 = a2Index;
+ }
+ if (b2Index != -1 && b2Index < index2) {
+ optionUsed2 = 'b';
+ index2 = b2Index;
+ }
+
+ /*
+ and delete if in R1.
+ (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters)
+ */
+
+ if (index2 != 10000 && r1Index != -1) {
+ if (index2 >= r1Index) {
+ word = word.substring(0, index2);
+ }
+ }
+
+ /*
+ Step 3: d-suffixes (*)
+ Search for the longest among the following suffixes, and perform the action indicated.
+ end ung
+ delete if in R2
+ if preceded by ig, delete if in R2 and not preceded by e
+ ig ik isch
+ delete if in R2 and not preceded by e
+ lich heit
+ delete if in R2
+ if preceded by er or en, delete if in R1
+ keit
+ delete if in R2
+ if preceded by lich or ig, delete if in R2
+ */
+
+ var a3Index = word.search(/(end|ung)$/g);
+ var b3Index = word.search(/[^e](ig|ik|isch)$/g);
+ var c3Index = word.search(/(lich|heit)$/g);
+ var d3Index = word.search(/(keit)$/g);
+ if (b3Index != -1) {
+ b3Index ++;
+ }
+
+ var index3 = 10000;
+ var optionUsed3 = '';
+ if (a3Index != -1 && a3Index < index3) {
+ optionUsed3 = 'a';
+ index3 = a3Index;
+ }
+ if (b3Index != -1 && b3Index < index3) {
+ optionUsed3 = 'b';
+ index3 = b3Index;
+ }
+ if (c3Index != -1 && c3Index < index3) {
+ optionUsed3 = 'c';
+ index3 = c3Index;
+ }
+ if (d3Index != -1 && d3Index < index3) {
+ optionUsed3 = 'd';
+ index3 = d3Index;
+ }
+
+ if (index3 != 10000 && r2Index != -1) {
+ if (index3 >= r2Index) {
+ word = word.substring(0, index3);
+ var optionIndex = -1;
+ var optionSubsrt = '';
+ if (optionUsed3 == 'a') {
+ optionIndex = word.search(/[^e](ig)$/);
+ if (optionIndex != -1) {
+ optionIndex++;
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'c') {
+ optionIndex = word.search(/(er|en)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r1Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'd') {
+ optionIndex = word.search(/(lich|ig)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ Finally,
+ turn U and Y back into lower case, and remove the umlaut accent from a, o and u.
+ */
+ word = word.replace(/U/g, 'u');
+ word = word.replace(/Y/g, 'y');
+ word = word.replace(/ä/g, 'a');
+ word = word.replace(/ö/g, 'o');
+ word = word.replace(/ü/g, 'u');
+
+ return word;
+ };
+//} \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js
new file mode 100644
index 0000000..f58012f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js
@@ -0,0 +1,187 @@
+// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original
+// paper, in
+//
+// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14,
+// no. 3, pp 130-137,
+//
+// see also http://www.tartarus.org/~martin/PorterStemmer
+
+// Release 1 be 'andargor', Jul 2004
+// Release 2 (substantially revised) by Christopher McKenzie, Aug 2009
+
+
+var stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ return function (w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4,
+ origword = w;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem)) { w = stem + "i"; }
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ }
+})(); \ No newline at end of file
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js
new file mode 100644
index 0000000..34f9743
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js
@@ -0,0 +1,299 @@
+/*
+ * Author: Kasun Gajasinghe
+ * E-Mail: kasunbg AT gmail DOT com
+ * Date: 09.08.2010
+ *
+ * usage: stemmer(word);
+ * ex: var stem = stemmer(foobar);
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var stemmer = function(word){
+// Letters in French include the following accented forms,
+// â à ç ë é ê è ï î ô û ù
+// The following letters are vowels:
+// a e i o u y â à ë é ê è ï î ô û ù
+
+ word = word.toLowerCase();
+ var oriWord = word;
+ word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel
+ word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y');
+ word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1');
+
+ var rv='';
+ var rvIndex = -1;
+ if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){
+ rv = word.substring(3);
+ rvIndex = 3;
+ } else {
+ rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/);
+ if(rvIndex != -1){
+ rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex
+ rv = word.substring(rvIndex);
+ } else {
+ rvIndex = word.length;
+ }
+ }
+
+// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel.
+// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel
+ var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ } else {
+ r1Index = word.length;
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+ if (r1Index != -1) {
+ r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ r2Index = word.length;
+ }
+ }
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Step 1: Standard suffix removal
+ */
+ var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/);
+ var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/);
+ var a3Index = word.search(/(logie|logies)$/);
+ var a4Index = word.search(/(usion|ution|usions|utions)$/);
+ var a5Index = word.search(/(ence|ences)$/);
+ var a6Index = word.search(/(ement|ements)$/);
+ var a7Index = word.search(/(ité|ités)$/);
+ var a8Index = word.search(/(if|ive|ifs|ives)$/);
+ var a9Index = word.search(/(eaux)$/);
+ var a10Index = word.search(/(aux)$/);
+ var a11Index = word.search(/(euse|euses)$/);
+ var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/);
+ var a13Index = word.search(/(amment)$/);
+ var a14Index = word.search(/(emment)$/);
+ var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/);
+
+ if(a1Index != -1 && a1Index >= r2Index){
+ word = word.substring(0,a1Index);
+ } else if(a2Index != -1 && a2Index >= r2Index){
+ word = word.substring(0,a2Index);
+ var a2Index2 = word.search(/(ic)$/);
+ if(a2Index2 != -1 && a2Index2 >= r2Index){
+ word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(a3Index != -1 && a3Index >= r2Index){
+ word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2
+ } else if(a4Index != -1 && a4Index >= r2Index){
+ word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2
+ } else if(a5Index != -1 && a5Index >= r2Index){
+ word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2
+ } else if(a6Index != -1 && a6Index >= rvIndex){
+ word = word.substring(0,a6Index);
+ if(word.search(/(iv)$/) >= r2Index){
+ word = word.replace(/(iv)$/, '');
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ }
+ } else if(word.search(/(eus)$/) != -1){
+ var a6Index2 = word.search(/(eus)$/);
+ if(a6Index2 >=r2Index){
+ word = word.substring(0, a6Index2);
+ } else if(a6Index2 >= r1Index){
+ word = word.substring(0,a6Index2)+"eux";
+ }
+ } else if(word.search(/(abl|iqU)$/) >= r2Index){
+ word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2,
+ } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){
+ word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2,
+ }
+ } else if(a7Index != -1 && a7Index >= r2Index){
+ word = word.substring(0,a7Index); //delete if in R2
+ if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise,
+ var a7Index2 = word.search(/(abil)$/);
+ if(a7Index2 >=r2Index){
+ word = word.substring(0, a7Index2);
+ } else {
+ word = word.substring(0,a7Index2)+"abl";
+ }
+ } else if(word.search(/(ic)$/) != -1){
+ var a7Index3 = word.search(/(ic)$/);
+ if(a7Index3 != -1 && a7Index3 >= r2Index){
+ word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(word.search(/(iv)$/) != r2Index){
+ word = word.replace(/(iv)$/,'');
+ }
+ } else if(a8Index != -1 && a8Index >= r2Index){
+ word = word.substring(0,a8Index);
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ if(word.search(/(ic)$/) >= r2Index){
+ word = word.replace(/(ic)$/, '');
+ } else { word = word.replace(/(ic)$/, 'iqU'); }
+ }
+ } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau')
+ } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al')
+ } else if(a11Index != -1 ){
+ var a11Index2 = word.search(/(euse|euses)$/);
+ if(a11Index2 >=r2Index){
+ word = word.substring(0, a11Index2);
+ } else if(a11Index2 >= r1Index){
+ word = word.substring(0, a11Index2)+"eux";
+ }
+ } else if(a12Index!=-1 && a12Index>=r1Index){
+ word = word.substring(0,a12Index+1); //+1- amendment to non-vowel
+ } else if(a13Index!=-1 && a13Index>=rvIndex){
+ word = word.replace(/(amment)$/,'ant');
+ } else if(a14Index!=-1 && a14Index>=rvIndex){
+ word = word.replace(/(emment)$/,'ent');
+ } else if(a15Index!=-1 && a15Index>=rvIndex){
+ word = word.substring(0,a15Index+1);
+ }
+
+ /* Step 2a: Verb suffixes beginning i*/
+ var wordStep1 = word;
+ var step2aDone = false;
+ if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){
+ step2aDone = true;
+ var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i;
+ if(word.search(b1Regex) >= rvIndex){
+ word = word.replace(b1Regex,'$1');
+ }
+ }
+
+ /* Step 2b: Other verb suffixes*/
+ if (step2aDone && wordStep1 == word) {
+ if (word.search(/(ions)$/) >= r2Index) {
+ word = word.replace(/(ions)$/, '');
+ } else {
+ var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i;
+ if (word.search(b2Regex) >= rvIndex) {
+ word = word.replace(b2Regex, '');
+ } else {
+ var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex) >= rvIndex) {
+ word = word.replace(b3Regex, '');
+ } else {
+ var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex2) >= rvIndex) {
+ word = word.replace(b3Regex2, '');
+ }
+ }
+ }
+ }
+ }
+
+ if(oriWord != word.toLowerCase()){
+ /* Step 3 */
+ var rep = '';
+ if(word.search(/Y$/) != -1) {
+ word = word.replace(/Y$/, 'i');
+ } else if(word.search(/ç$/) != -1){
+ word = word.replace(/ç$/, 'c');
+ }
+ } else {
+ /* Step 4 */
+ //If the word ends s, not preceded by a, i, o, u, è or s, delete it.
+ if (word.search(/([^aiouès])s$/) >= rvIndex) {
+ word = word.replace(/([^aiouès])s$/, '$1');
+ }
+ var e1Index = word.search(/ion$/);
+ if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) {
+ word = word.substring(0, e1Index);
+ } else {
+ var e2Index = word.search(/(ier|ière|Ier|Ière)$/);
+ if (e2Index != -1 && e2Index >= rvIndex) {
+ word = word.substring(0, e2Index) + "i";
+ } else {
+ if (word.search(/e$/) >= rvIndex) {
+ word = word.replace(/e$/, ''); //delete last e
+ } else if (word.search(/guë$/) >= rvIndex) {
+ word = word.replace(/guë$/, 'gu');
+ }
+ }
+ }
+ }
+
+ /* Step 5: Undouble */
+ //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1');
+ word = word.replace(/(en|on)(n)$/,'$1');
+ word = word.replace(/(ett)$/,'et');
+ word = word.replace(/(el|eil)(l)$/,'$1');
+
+ /* Step 6: Un-accent */
+ word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1');
+ word = word.toLowerCase();
+ return word;
+};
+
+var eqOut = new Array();
+var noteqOut = new Array();
+var eqCount = 0;
+/*
+To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output.
+Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will
+compare the output with COut.
+ (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This
+ will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help.
+ */
+function testFr(){
+ var start = new Date().getTime(); //execution time
+ eqCount = 0;
+ eqOut = new Array();
+ noteqOut = new Array();
+ for(var k=0;k<voc.length;k++){
+ if(COut[k]==stemmer(voc[k])){
+ eqCount++;
+ eqOut.push("v: "+voc[k]+" c: "+COut[k]);
+ } else {
+ noteqOut.push(voc[k]+", c: "+COut[k]+" s:"+stemmer(voc[k]));
+ }
+ }
+ var end = new Date().getTime(); //execution time
+ var time = end-start;
+ alert("equal count= "+eqCount+" out of "+voc.length+" words. time= "+time+" ms");
+ //console.log("equal count= "+eqCount+" out of "+voc.length+" words. time= "+time+" ms");
+}
+
+
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl
new file mode 100644
index 0000000..9d72d5d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/xsl/webhelp.xsl
@@ -0,0 +1,782 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ version="1.0" xmlns="http://www.w3.org/1999/xhtml">
+
+ <xsl:import href="../../xhtml/chunk.xsl"/>
+
+ <xsl:output
+ method="html"
+ encoding="utf-8"
+ cdata-section-elements=""/>
+
+ <!-- webhelp-specific params! -->
+ <!-- To be added to normal params file someday -->
+ <xsl:param name="webhelp.include.search.tab">true</xsl:param>
+ <xsl:param name="webhelp.start.filename">index.html</xsl:param>
+ <xsl:param name="webhelp.base.dir">docs</xsl:param>
+ <xsl:param name="webhelp.tree.cookie.id" select="concat( 'treeview-', count(//node()) )"/>
+ <xsl:param name="webhelp.indexer.language">en</xsl:param>
+ <xsl:param name="webhelp.default.topic"/>
+ <xsl:param name="webhelp.autolabel">0</xsl:param>
+ <!-- webhelp-specific params! -->
+
+ <!-- Set some reasonable defaults for webhelp output -->
+ <xsl:param name="chunker.output.indent">no</xsl:param>
+ <xsl:param name="navig.showtitles">0</xsl:param>
+ <xsl:param name="manifest.in.base.dir" select="0"/>
+ <xsl:param name="base.dir" select="concat($webhelp.base.dir,'/content/')"/>
+ <xsl:param name="suppress.navigation">0</xsl:param>
+ <xsl:param name="generate.index" select="1"/>
+ <xsl:param name="inherit.keywords" select="'0'"/>
+ <xsl:param name="local.l10n.xml" select="document('')"/>
+ <xsl:param name="para.propagates.style" select="1"/>
+ <xsl:param name="phrase.propagates.style" select="1"/>
+ <xsl:param name="chunk.first.sections" select="1"/>
+ <xsl:param name="chapter.autolabel" select="1"/>
+ <xsl:param name="section.autolabel" select="0"/>
+ <!--xsl:param name="generate.toc">book toc</xsl:param-->
+
+ <i18n xmlns="http://docbook.sourceforge.net/xmlns/l10n/1.0">
+ <l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en">
+ <l:gentext key="Search" text="Search"/>
+ <l:gentext key="Enter_a_term_and_click" text="Enter a term and click "/>
+ <l:gentext key="Go" text="Go"/>
+ <l:gentext key="to_perform_a_search" text=" to perform a search."/>
+ <l:gentext key="txt_filesfound" text="Results"/>
+ <l:gentext key="txt_enter_at_least_1_char" text="You must enter at least one character."/>
+ <l:gentext key="txt_browser_not_supported"
+ text="Your browser is not supported. Use of Mozilla Firefox is recommended."/>
+ <l:gentext key="txt_please_wait" text="Please wait. Search in progress..."/>
+ <l:gentext key="txt_results_for" text="Results for: "/>
+ <l:gentext key="TableofContents" text="Contents"/>
+ <l:gentext key="HighlightButton" text="Toggle search result highlighting"/>
+ </l10n>
+ <!-- The fallback mechansim doesn't seem to work for local l10n stuff -->
+ <l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ja">
+ <l:gentext key="Search" text="Search"/>
+ <l:gentext key="Enter_a_term_and_click" text="Enter a term and click "/>
+ <l:gentext key="Go" text="Go"/>
+ <l:gentext key="to_perform_a_search" text=" to perform a search."/>
+ <l:gentext key="txt_filesfound" text="Results"/>
+ <l:gentext key="txt_enter_at_least_1_char" text="You must enter at least one character."/>
+ <l:gentext key="txt_browser_not_supported"
+ text="Your browser is not supported. Use of Mozilla Firefox is recommended."/>
+ <l:gentext key="txt_please_wait" text="Please wait. Search in progress..."/>
+ <l:gentext key="txt_results_for" text="Results for: "/>
+ <l:gentext key="HighlightButton" text="Toggle search result highlighting"/>
+ </l10n>
+ <l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="de">
+ <l:gentext key="Search" text="Search"/>
+ <l:gentext key="Enter_a_term_and_click" text="Enter a term and click "/>
+ <l:gentext key="Go" text="Go"/>
+ <l:gentext key="to_perform_a_search" text=" to perform a search."/>
+ <l:gentext key="txt_filesfound" text="Results"/>
+ <l:gentext key="txt_enter_at_least_1_char" text="You must enter at least one character."/>
+ <l:gentext key="txt_browser_not_supported"
+ text="Your browser is not supported. Use of Mozilla Firefox is recommended."/>
+ <l:gentext key="txt_please_wait" text="Please wait. Search in progress..."/>
+ <l:gentext key="txt_results_for" text="Results for: "/>
+ <l:gentext key="HighlightButton" text="Toggle search result highlighting"/>
+ </l10n>
+ <l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fr">
+ <l:gentext key="Search" text="Search"/>
+ <l:gentext key="Enter_a_term_and_click" text="Enter a term and click "/>
+ <l:gentext key="Go" text="Go"/>
+ <l:gentext key="to_perform_a_search" text=" to perform a search."/>
+ <l:gentext key="txt_filesfound" text="Results"/>
+ <l:gentext key="txt_enter_at_least_1_char" text="You must enter at least one character."/>
+ <l:gentext key="txt_browser_not_supported"
+ text="Your browser is not supported. Use of Mozilla Firefox is recommended."/>
+ <l:gentext key="txt_please_wait" text="Please wait. Search in progress..."/>
+ <l:gentext key="txt_results_for" text="Results for: "/>
+ <l:gentext key="HighlightButton" text="Toggle search result highlighting"/>
+ </l10n>
+ <l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh">
+ <l:gentext key="Search" text="Search"/>
+ <l:gentext key="Enter_a_term_and_click" text="Enter a term and click "/>
+ <l:gentext key="Go" text="Go"/>
+ <l:gentext key="to_perform_a_search" text=" to perform a search."/>
+ <l:gentext key="txt_filesfound" text="Results"/>
+ <l:gentext key="txt_enter_at_least_1_char" text="You must enter at least one character."/>
+ <l:gentext key="txt_browser_not_supported"
+ text="Your browser is not supported. Use of Mozilla Firefox is recommended."/>
+ <l:gentext key="txt_please_wait" text="Please wait. Search in progress..."/>
+ <l:gentext key="txt_results_for" text="Results for: "/>
+ <l:gentext key="HighlightButton" text="Toggle search result highlighting"/>
+ </l10n>
+
+ </i18n>
+
+ <xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+<xsl:text>
+</xsl:text>
+<!--
+This avoids two problems in IE 8. We should someday figure out why this is happening and tweak the JavaScript so this <meta/> tag is not necessary:
+1. When you perform a search and click the Toggle Highlight button, IE 8 adds a line break before the highlighted word.
+2. If you click the show/hide toc button, the tab crashes.
+These problems go away when you add this IE=7 mode meta tag.
+ -->
+ <meta http-equiv="X-UA-Compatible" content="IE=7" />
+<xsl:text>
+</xsl:text>
+ </xsl:template>
+
+
+ <xsl:template name="user.head.content">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <!-- <xsl:message>
+ webhelp.tree.cookie.id = <xsl:value-of select="$webhelp.tree.cookie.id"/> +++ <xsl:value-of select="count(//node())"/>
+ $webhelp.indexer.language = <xsl:value-of select="$webhelp.indexer.language"/> +++ <xsl:value-of select="count(//node())"/>
+ </xsl:message>-->
+ <script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "<xsl:value-of select="$webhelp.tree.cookie.id"/>";
+ var language = "<xsl:value-of select="$webhelp.indexer.language"/>";
+ var w = new Object();
+ //Localization
+ txt_filesfound = '<xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'txt_filesfound'"/>
+ </xsl:call-template>';
+ txt_enter_at_least_1_char = "<xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'txt_enter_at_least_1_char'"/>
+ </xsl:call-template>";
+ txt_browser_not_supported = "<xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'txt_browser_not_supported'"/>
+ </xsl:call-template>";
+ txt_please_wait = "<xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'txt_please_wait'"/>
+ </xsl:call-template>";
+ txt_results_for = "<xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'txt_results_for'"/>
+ </xsl:call-template>";
+ </script>
+ <style type="text/css">
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+
+ .folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ }
+ <!--[if IE]>
+ input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+ }
+ <![endif]-->
+ </style>
+ <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"/>
+ <link rel="stylesheet" type="text/css" href="../common/css/positioning.css"/>
+ <link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"/>
+ <link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"/>
+
+ <script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <script type="text/javascript" src="../common/jquery/jquery.cookie.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <!--Scripts/css stylesheets for Search-->
+ <script type="text/javascript" src="search/htmlFileList.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <script type="text/javascript" src="search/htmlFileInfoList.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <script type="text/javascript" src="search/nwSearchFnt.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+
+ <!--script type="text/javascript" src="search/addition.js">
+ <xsl:comment></xsl:comment>
+ </script>
+ <script type="text/javascript" src="search/indexLoader.js">
+ <xsl:comment></xsl:comment>
+ </script-->
+
+
+ <!--
+ NOTE: Stemmer javascript files should be in format <language>_stemmer.js.
+ For example, for English(en), source should be: "search/stemmers/en_stemmer.js"
+ For country codes, see: http://www.uspto.gov/patft/help/helpctry.htm
+ -->
+ <!--<xsl:message><xsl:value-of select="concat('search/stemmers/',$webhelp.indexer.language,'_stemmer.js')"/></xsl:message>-->
+ <script type="text/javascript" src="{concat('search/stemmers/',$webhelp.indexer.language,'_stemmer.js')}">
+ <xsl:comment>//make this scalable to other languages as well.</xsl:comment>
+ </script>
+
+ <!--Index Files:
+ Index is broken in to three equal sized(number of index items) files. This is to help parallel downloading
+ of files to make it faster.-->
+ <script type="text/javascript" src="search/index-1.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <script type="text/javascript" src="search/index-2.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <script type="text/javascript" src="search/index-3.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <!--End of index files -->
+ </xsl:template>
+
+ <xsl:template name="user.header.navigation">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+ <xsl:call-template name="webhelpheader">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+ <!--xsl:call-template name="webhelptoc"/-->
+
+ <!--testing toc in the content page>
+ <xsl:call-template name="webhelptoctoc"/>
+ <xsl:if test="$webhelp.include.search.tab != 'false'">
+ <xsl:call-template name="search"/>
+ </xsl:if-->
+ </xsl:template>
+
+ <xsl:template name="user.header.content">
+ <xsl:comment> <!-- KEEP this code. --> </xsl:comment>
+ </xsl:template>
+
+ <xsl:template name="user.footer.navigation">
+ <xsl:call-template name="webhelptoc">
+ <xsl:with-param name="currentid" select="generate-id(.)"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:message>language: <xsl:value-of select="$webhelp.indexer.language"/> </xsl:message>
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>Saving stripped document.</xsl:message>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="'/tmp/stripped.xml'"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="exsl:node-set($nons)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="index.html"/>
+
+ </xsl:template>
+
+ <xsl:template name="chunk-element-content">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:call-template name="user.preroot"/>
+
+ <html>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+
+ <xsl:call-template name="user.header.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+
+ <div id="content">
+
+ <xsl:call-template name="user.header.content"/>
+
+ <xsl:copy-of select="$content"/>
+
+ <xsl:call-template name="user.footer.content"/>
+
+ <xsl:call-template name="footer.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+ </div>
+
+ <xsl:call-template name="user.footer.navigation"/>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:template>
+
+ <!-- The Header with the company logo -->
+ <xsl:template name="webhelpheader">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <div id="header">
+ <img style='margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px' align="right"
+ src='../common/images/logo.png' alt="Company Logo"/>
+
+ <!-- Display the page title and the main heading(parent) of it-->
+ <h1 align="center">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ <br/>
+ <xsl:choose>
+ <xsl:when
+ test="count($up) &gt; 0 and generate-id($up) != generate-id($home)">
+ <xsl:apply-templates select="$up" mode="object.title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </h1>
+
+ <!-- Prev and Next links generation-->
+ <div id="navheader" align="right">
+ <xsl:comment>
+ <!-- KEEP this code. In case of neither prev nor next links are available, this will help to
+ keep the integrity of the DOM tree-->
+ </xsl:comment>
+ <!--xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/-->
+ <table>
+ <tr>
+ <td style="height: 28px; width: 16px;">
+ <a id="showHideButton" onclick="showHideToc();"
+ class="pointLeft" title="Hide TOC tree">.
+ </a>
+ </td>
+ <td>
+ <img src="../common/images/highlight-blue.gif" alt="H" height="25px"
+ onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer">
+ <xsl:attribute name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'HighlightButton'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </td>
+ <xsl:if test="count($prev) &gt; 0
+ or (count($up) &gt; 0
+ and generate-id($up) != generate-id($home)
+ and $navig.showtitles != 0)
+ or count($next) &gt; 0">
+ <td>
+ <xsl:if test="count($prev)>0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+
+ <!-- "Up" link-->
+ <xsl:choose>
+ <xsl:when test="count($up)&gt;0
+ and generate-id($up) != generate-id($home)">
+ |
+ <a accesskey="u">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'up'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="count($next)>0">
+ |
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </xsl:if>
+
+ </tr>
+ </table>
+
+
+
+ </div>
+
+ </div>
+ </xsl:template>
+
+ <xsl:template name="webhelptoc">
+ <xsl:param name="currentid"/>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:variable name="title">
+ <xsl:if test="$webhelp.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="key('id',$rootid)" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="key('id',$rootid)" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$manifest.in.base.dir != 0">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="title">
+ <xsl:if test="$webhelp.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="/*" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="/*" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$manifest.in.base.dir != 0">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="/"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="/"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div>
+ <div id="leftnavigation" style="padding-top:3px; background-color:white;">
+ <div id="tabs">
+ <ul>
+ <li>
+ <a href="#treeDiv">
+ <em>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'TableofContents'"/>
+ </xsl:call-template>
+ </em>
+ </a>
+ </li>
+ <xsl:if test="$webhelp.include.search.tab != 'false'">
+ <li>
+ <a href="#searchDiv">
+ <em>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Search'"/>
+ </xsl:call-template>
+ </em>
+ </a>
+ </li>
+ </xsl:if>
+ </ul>
+ <div id="treeDiv">
+ <img src="../common/images/loading.gif" alt="loading table of contents..."
+ id="tocLoading" style="display:block;"/>
+ <div id="ulTreeDiv" style="display:none">
+ <ul id="tree" class="filetree">
+ <xsl:apply-templates select="/*/*" mode="webhelptoc">
+ <xsl:with-param name="currentid" select="$currentid"/>
+ </xsl:apply-templates>
+ </ul>
+ </div>
+
+ </div>
+ <xsl:if test="$webhelp.include.search.tab != 'false'">
+ <div id="searchDiv">
+ <div id="search">
+ <form onsubmit="Verifie(ditaSearch_Form);return false"
+ name="ditaSearch_Form"
+ class="searchForm">
+ <fieldset class="searchFieldSet">
+ <legend>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Search'"/>
+ </xsl:call-template>
+ </legend>
+ <center>
+ <input id="textToSearch" name="textToSearch" type="text"
+ class="searchText"/>
+ <xsl:text disable-output-escaping="yes"> <![CDATA[&nbsp;]]> </xsl:text>
+ <input onclick="Verifie(ditaSearch_Form)" type="button"
+ class="searchButton"
+ value="Go" id="doSearch"/>
+ </center>
+ </fieldset>
+ </form>
+ </div>
+ <div id="searchResults">
+ <center> </center>
+ </div>
+ </div>
+ </xsl:if>
+
+ </div>
+ </div>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template
+ match="book|part|reference|preface|chapter|bibliography|appendix|article|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index"
+ mode="webhelptoc">
+ <xsl:param name="currentid"/>
+ <xsl:variable name="title">
+ <xsl:if test="$webhelp.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$manifest.in.base.dir != 0">
+ <xsl:call-template name="href.target"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="id" select="generate-id(.)"/>
+ <!--xsl:message>
+ <xsl: select="name(ancestor-or-self::*) "/>
+ </xsl:message-->
+
+ <xsl:if test="not(self::index) or (self::index and not($generate.index = 0))">
+ <!--li style="white-space: pre; line-height: 0em;"-->
+ <li>
+ <xsl:if test="$id = $currentid">
+ <xsl:attribute name="id">webhelp-currentid</xsl:attribute>
+ </xsl:if>
+ <span class="file">
+ <a href="{substring-after($href,concat($webhelp.base.dir,'/content/'))}">
+ <xsl:value-of select="$title"/>
+ </a>
+ </span>
+ <xsl:if test="part|reference|preface|chapter|bibliography|appendix|article|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv">
+ <ul>
+ <xsl:apply-templates
+ select="part|reference|preface|chapter|bibliography|appendix|article|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv"
+ mode="webhelptoc">
+ <xsl:with-param name="currentid" select="$currentid"/>
+ </xsl:apply-templates>
+ </ul>
+ </xsl:if>
+ </li>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="webhelptoc"/>
+
+ <xsl:template name="user.footer.content">
+ <script type="text/javascript" src="../common/main.js">
+ <xsl:comment></xsl:comment>
+ </script>
+ </xsl:template>
+
+ <xsl:template name="index.html">
+ <xsl:variable name="default.topic">
+ <xsl:choose>
+ <xsl:when test="$webhelp.default.topic != ''">
+ <xsl:value-of select="$htmlhelp.default.topic"/>
+ </xsl:when>
+ <xsl:when test="$htmlhelp.default.topic != ''">
+ <xsl:value-of select="$htmlhelp.default.topic"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="chunk-filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates
+ select="*/*[self::preface|self::chapter|self::appendix|self::part][1]"
+ mode="chunk-filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <!-- <xsl:if test="$manifest.in.base.dir != 0"> -->
+ <!-- <xsl:value-of select="$base.dir"/> -->
+ <!-- </xsl:if> -->
+ <xsl:choose>
+ <xsl:when test="$webhelp.start.filename">
+ <xsl:value-of select="concat($webhelp.base.dir,'/',$webhelp.start.filename)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'index.html'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <link rel="shortcut icon" href="favicon.ico"/>
+ <meta http-equiv="Refresh" content="1; URL=content/{$default.topic}"/>
+ <title><xsl:value-of select="//title[1]"/>&#160;
+ </title>
+ </head>
+ <body>
+ If not automatically redirected, click here: <a href="content/ch01.html">content/ch01.html</a>
+ </body>
+ </html>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl
new file mode 100644
index 0000000..461bfce
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl
@@ -0,0 +1,258 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="xml" indent="no"
+ doctype-public="-//Norman Walsh//DTD Website Autolayout V2.5.0//EN"
+ doctype-system="http://docbook.sourceforge.net/release/website/2.5.0/schema/dtd/autolayout.dtd"
+/>
+
+<xsl:strip-space elements="toc tocentry layout copyright"/>
+
+<xsl:template match="layout">
+ <autolayout>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </autolayout>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="style|script|headlink|copyright|config">
+ <xsl:apply-templates select="." mode="copy"/>
+</xsl:template>
+
+<xsl:template match="*" mode="copy">
+ <xsl:element name="{name(.)}">
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="copy"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="toc">
+ <xsl:if test="not(@page)">
+ <xsl:message terminate="yes">
+ <xsl:text>All toc entries must have a page attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="page" select="document(@page,.)"/>
+
+ <toc>
+ <xsl:call-template name="tocentry"/>
+ </toc>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="tocentry">
+ <tocentry>
+ <xsl:call-template name="tocentry"/>
+ </tocentry>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="notoc">
+ <notoc>
+ <xsl:call-template name="tocentry"/>
+ </notoc>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template name="tocentry">
+ <xsl:if test="@revisionflag">
+ <xsl:attribute name="revisionflag">
+ <xsl:value-of select="@revisionflag"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:call-template name="tocentry.href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="tocentry.page"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="tocentry.href">
+ <xsl:if test="not(@href)">
+ <xsl:message terminate="yes">
+ <xsl:text>All toc entries must have an href attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(@id)">
+ <xsl:message terminate="yes">
+ <xsl:text>All href toc entries must have an id attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:message>
+ <xsl:text>off site: </xsl:text>
+ <xsl:value-of select="@href"/>
+ </xsl:message>
+
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@href"/>
+ </xsl:attribute>
+ <xsl:if test="@tocskip = '1'">
+ <xsl:attribute name="tocskip">
+ <xsl:value-of select="@tocskip"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="not(title)">
+ <xsl:message terminate="yes">
+ <xsl:text>Off-site links must provide a title.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="title|titleabbrev|summary" mode="copy"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="tocentry"/>
+</xsl:template>
+
+<xsl:template name="tocentry.page">
+ <xsl:if test="not(@page)">
+ <xsl:message terminate="yes">
+ <xsl:text>All toc entries must have a page attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="page" select="document(@page,.)"/>
+
+ <xsl:if test="not($page/*[1]/@id)">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="@page"/>
+ <xsl:text>: missing ID.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="id" select="$page/*[1]/@id"/>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@filename">
+ <xsl:value-of select="@filename"/>
+ </xsl:when>
+ <xsl:when test="/layout/config[@param='default-filename']">
+ <xsl:value-of select="(/layout/config[@param='default-filename'])[1]/@value"/>
+ </xsl:when>
+ <xsl:otherwise>index.html</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="dir">
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+ </xsl:variable>
+
+ <xsl:if test="$filename = ''">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="@page"/>
+ <xsl:text>: missing filename.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:message>
+ <xsl:value-of select="@page"/>
+ <xsl:text>: </xsl:text>
+ <xsl:if test="$dir != ''">
+ <xsl:value-of select="$dir"/>
+ </xsl:if>
+ <xsl:value-of select="$filename"/>
+ </xsl:message>
+
+ <xsl:attribute name="page">
+ <xsl:value-of select="@page"/>
+ </xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:value-of select="$id"/>
+ </xsl:attribute>
+ <xsl:if test="$dir != ''">
+ <xsl:attribute name="dir">
+ <xsl:value-of select="$dir"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="filename">
+ <xsl:value-of select="$filename"/>
+ </xsl:attribute>
+ <xsl:if test="@tocskip = '1'">
+ <xsl:attribute name="tocskip">
+ <xsl:value-of select="@tocskip"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:text>&#10;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="copy"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <title>
+ <xsl:apply-templates select="$page/*[1]/head/title"/>
+ </title>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+
+ <xsl:if test="titleabbrev or $page/*[1]/head/titleabbrev">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="copy"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <titleabbrev>
+ <xsl:apply-templates select="$page/*[1]/head/titleabbrev"/>
+ </titleabbrev>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <xsl:if test="summary or $page/*[1]/head/summary">
+ <xsl:choose>
+ <xsl:when test="summary">
+ <xsl:apply-templates select="summary" mode="copy"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <summary>
+ <xsl:apply-templates select="$page/*[1]/head/summary"/>
+ </summary>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="tocentry"/>
+</xsl:template>
+
+<xsl:template match="*" mode="calculate-dir">
+ <xsl:choose>
+ <xsl:when test="starts-with(@dir, '/')">
+ <!-- if the directory on this begins with a "/", we're done... -->
+ <xsl:value-of select="substring-after(@dir, '/')"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="parent::*">
+ <!-- if there's a parent, try it -->
+ <xsl:apply-templates select="parent::*" mode="calculate-dir"/>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl
new file mode 100644
index 0000000..d750c05
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xweb="xalan://com.nwalsh.xalan.Website"
+ xmlns:sweb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Website"
+ exclude-result-prefixes="sweb xweb"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="output-root" select="'.'"/>
+<xsl:param name="dry-run" select="'0'"/>
+<xsl:param name="rebuild-all" select="'0'"/>
+
+<xsl:template match="autolayout">
+ <!-- Regenerate olink database? -->
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="." mode="collect.targets"/>
+ </xsl:if>
+
+ <xsl:if test="$collect.xref.targets != 'only'" >
+ <xsl:apply-templates select="toc|notoc" mode="make"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="toc|tocentry|notoc" mode="make">
+ <xsl:call-template name="make.tocentry"/>
+ <xsl:apply-templates select="tocentry" mode="make"/>
+</xsl:template>
+
+<xsl:template name="make.tocentry">
+ <xsl:variable name="srcFile" select="@page"/>
+
+ <xsl:if test="@page and @href">
+ <xsl:message terminate="yes">
+ <xsl:text>Fail: tocentry has both page and href attributes.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@filename">
+ <xsl:value-of select="@filename"/>
+ </xsl:when>
+ <xsl:otherwise>index.html</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="dir">
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>!!</xsl:text>
+ <xsl:value-of select="$dir"/>
+ <xsl:text>!!</xsl:text>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:text>!!</xsl:text>
+ <xsl:value-of select="$filename"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="targetFile">
+ <xsl:value-of select="$dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$filename"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('sweb:exists')">
+ <xsl:if test="not(@href) and not(sweb:exists($srcFile))">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="$srcFile"/>
+ <xsl:text> does not exist.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="function-available('xweb:exists')">
+ <xsl:if test="not(@href) and not(xweb:exists($srcFile))">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="$srcFile"/>
+ <xsl:text> does not exist.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="no">
+ <xsl:value-of select="$srcFile"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="output-file">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$output-root"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$targetFile"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="needsUpdate">
+ <xsl:choose>
+ <xsl:when test="@href">0</xsl:when>
+ <xsl:when test="function-available('sweb:needsUpdate')">
+ <xsl:choose>
+ <xsl:when test="$rebuild-all != 0
+ or sweb:needsUpdate($autolayout-file, $output-file)
+ or sweb:needsUpdate($srcFile, $output-file)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="function-available('xweb:needsUpdate')">
+ <xsl:choose>
+ <xsl:when test="$rebuild-all != 0
+ or xweb:needsUpdate($autolayout-file, $output-file)
+ or xweb:needsUpdate($srcFile, $output-file)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$needsUpdate != 0">
+ <xsl:message>
+ <xsl:text>Update: </xsl:text>
+ <xsl:value-of select="$output-file"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$srcFile"/>
+ </xsl:message>
+
+ <xsl:variable name="webpage" select="document($srcFile,.)"/>
+ <xsl:variable name="content">
+ <xsl:apply-templates select="$webpage/webpage"/>
+ </xsl:variable>
+
+ <xsl:if test="$dry-run = 0">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$output-file"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Up-to-date: </xsl:text>
+ <xsl:value-of select="$output-file"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="calculate-dir">
+ <xsl:choose>
+ <xsl:when test="@dir">
+ <!-- if there's a directory, use it -->
+ <xsl:choose>
+ <xsl:when test="starts-with(@dir, '/')">
+ <!-- if the directory on this begins with a "/", we're done... -->
+ <xsl:value-of select="substring-after(@dir, '/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="parent::*">
+ <!-- if there's a parent, try it -->
+ <xsl:apply-templates select="parent::*" mode="calculate-dir"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="autolayout" mode="collect.targets">
+ <xsl:choose>
+ <xsl:when test="$website.database.document = ''">
+ <xsl:message>
+ Must specify a $website.database.document parameter when
+ $collect.xref.targets is set to 'yes' or 'only'.
+ The xref targets were not collected.
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$website.database.document">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename"
+ select="$website.database.document"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="quiet" select="0"/>
+ <xsl:with-param name="content">
+ <targetset>
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </targetset>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Else write to standard output -->
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl
new file mode 100644
index 0000000..cdf97cf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xweb="xalan://com.nwalsh.xalan.Website"
+ xmlns:sweb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Website"
+ exclude-result-prefixes="sweb xweb"
+ version="1.0">
+
+<xsl:import href="tabular.xsl"/>
+<xsl:import href="../html/chunker.xsl"/>
+<xsl:include href="chunk-common.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl
new file mode 100644
index 0000000..a9179a0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xweb="xalan://com.nwalsh.xalan.Website"
+ xmlns:sweb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Website"
+ exclude-result-prefixes="sweb xweb"
+ version="1.0">
+
+<xsl:import href="website.xsl"/>
+<xsl:import href="../html/chunker.xsl"/>
+<xsl:include href="chunk-common.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl
new file mode 100644
index 0000000..e3ac308
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl
@@ -0,0 +1,316 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="head" mode="head.mode">
+ <xsl:variable name="nodes" select="*"/>
+ <head>
+ <meta name="generator" content="Website XSL Stylesheet V{$VERSION}"/>
+ <xsl:if test="$html.stylesheet != ''">
+ <link rel="stylesheet" href="{$html.stylesheet}" type="text/css">
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:if>
+
+ <xsl:variable name="thisid" select="ancestor-or-self::webpage/@id"/>
+ <xsl:variable name="thisrelpath">
+ <xsl:apply-templates select="$autolayout//*[@id=$thisid]" mode="toc-rel-path"/>
+ </xsl:variable>
+
+ <xsl:variable name="topid">
+ <xsl:call-template name="top.page"/>
+ </xsl:variable>
+
+ <xsl:if test="$topid != ''">
+ <link rel="home">
+ <xsl:attribute name="href">
+ <xsl:call-template name="page.uri">
+ <xsl:with-param name="page" select="$autolayout//*[@id=$topid]"/>
+ <xsl:with-param name="relpath" select="$thisrelpath"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$autolayout//*[@id=$topid]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:variable name="upid">
+ <xsl:call-template name="up.page"/>
+ </xsl:variable>
+
+ <xsl:if test="$upid != ''">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:call-template name="page.uri">
+ <xsl:with-param name="page" select="$autolayout//*[@id=$upid]"/>
+ <xsl:with-param name="relpath" select="$thisrelpath"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$autolayout//*[@id=$upid]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:variable name="previd">
+ <xsl:call-template name="prev.page"/>
+ </xsl:variable>
+
+ <xsl:if test="$previd != ''">
+ <link rel="previous">
+ <xsl:attribute name="href">
+ <xsl:call-template name="page.uri">
+ <xsl:with-param name="page" select="$autolayout//*[@id=$previd]"/>
+ <xsl:with-param name="relpath" select="$thisrelpath"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$autolayout//*[@id=$previd]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:variable name="nextid">
+ <xsl:call-template name="next.page"/>
+ </xsl:variable>
+
+ <xsl:if test="$nextid != ''">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:call-template name="page.uri">
+ <xsl:with-param name="page" select="$autolayout//*[@id=$nextid]"/>
+ <xsl:with-param name="relpath" select="$thisrelpath"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$autolayout//*[@id=$nextid]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:variable name="firstid">
+ <xsl:call-template name="first.page"/>
+ </xsl:variable>
+
+ <xsl:if test="$firstid != ''">
+ <link rel="first">
+ <xsl:attribute name="href">
+ <xsl:call-template name="page.uri">
+ <xsl:with-param name="page" select="$autolayout//*[@id=$firstid]"/>
+ <xsl:with-param name="relpath" select="$thisrelpath"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$autolayout//*[@id=$firstid]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:variable name="lastid">
+ <xsl:call-template name="last.page"/>
+ </xsl:variable>
+
+ <xsl:if test="$lastid != ''">
+ <link rel="last">
+ <xsl:attribute name="href">
+ <xsl:call-template name="page.uri">
+ <xsl:with-param name="page" select="$autolayout//*[@id=$lastid]"/>
+ <xsl:with-param name="relpath" select="$thisrelpath"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$autolayout//*[@id=$lastid]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:apply-templates select="$autolayout/autolayout/style
+ |$autolayout/autolayout/script
+ |$autolayout/autolayout/headlink"
+ mode="head.mode">
+ <xsl:with-param name="webpage" select="ancestor::webpage"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="head.mode"/>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="ancestor::webpage"/>
+ </xsl:call-template>
+ </head>
+</xsl:template>
+
+<xsl:template match="title" mode="head.mode">
+ <title><xsl:value-of select="."/></title>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="subtitle" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="summary" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="base" mode="head.mode">
+ <base href="{@href}">
+ <xsl:if test="@target">
+ <xsl:attribute name="target">
+ <xsl:value-of select="@target"/>
+ </xsl:attribute>
+ </xsl:if>
+ </base>
+</xsl:template>
+
+<xsl:template match="keywords" mode="head.mode">
+ <meta name="keyword" content="{.}"/>
+ <meta name="keywords" content="{.}"/>
+</xsl:template>
+
+<xsl:template match="copyright" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="author" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="edition" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="meta" mode="head.mode">
+ <xsl:choose>
+ <xsl:when test="@http-equiv">
+ <meta http-equiv="{@http-equiv}" content="{@content}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <meta name="{@name}" content="{@content}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="script" mode="head.mode">
+ <script>
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:attribute name="language">
+ <xsl:value-of select="@language"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="language">JavaScript</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="@type">
+ <xsl:attribute name="type">
+ <xsl:value-of select="@type"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="type">text/javascript</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ </script>
+</xsl:template>
+
+<xsl:template match="script[@src]" mode="head.mode" priority="2">
+ <xsl:param name="webpage" select="ancestor::webpage"/>
+ <xsl:variable name="relpath">
+ <xsl:call-template name="root-rel-path">
+ <xsl:with-param name="webpage" select="$webpage"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>JavaScript</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="@type">
+ <xsl:value-of select="@type"/>
+ </xsl:when>
+ <xsl:otherwise>text/javascript</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <script src="{$relpath}{@src}" language="{$language}" type="{$type}"/>
+</xsl:template>
+
+<xsl:template match="style" mode="head.mode">
+ <style>
+ <xsl:if test="@type">
+ <xsl:attribute name="type">
+ <xsl:value-of select="@type"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ </style>
+</xsl:template>
+
+<xsl:template match="style[@src]" mode="head.mode" priority="2">
+ <xsl:param name="webpage" select="ancestor::webpage"/>
+ <xsl:variable name="relpath">
+ <xsl:call-template name="root-rel-path">
+ <xsl:with-param name="webpage" select="$webpage"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="starts-with(@src, '/')">
+ <link rel="stylesheet" href="{@src}">
+ <xsl:if test="@type">
+ <xsl:attribute name="type">
+ <xsl:value-of select="@type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <link rel="stylesheet" href="{$relpath}{@src}">
+ <xsl:if test="@type">
+ <xsl:attribute name="type">
+ <xsl:value-of select="@type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="headlink" mode="head.mode">
+ <link>
+ <xsl:copy-of select="@*"/>
+ </link>
+</xsl:template>
+
+<xsl:template match="abstract" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="revhistory" mode="head.mode">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="rddl:*" mode="head.mode"
+ xmlns:rddl='http://www.rddl.org/'>
+ <!--nop-->
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl
new file mode 100644
index 0000000..00f810b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/makefile-dep.xsl
@@ -0,0 +1,143 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:param name="filename-prefix" select="''"/>
+<xsl:param name="depends-file" select="''"/>
+<xsl:param name="output-root" select="''"/>
+<!-- Additional dependencies for target website -->
+<xsl:param name="add-website-depends" select="''"/>
+<!-- Remove output root dir instead removing each html output file.
+ Useful for removing subdirs and none html files: images, css etc. -->
+<xsl:param name="remove-output-root" select="0"/>
+
+<xsl:output method="text"/>
+
+<xsl:template match="autolayout">
+ <xsl:text>website: </xsl:text>
+ <xsl:value-of select="$add-website-depends"/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="toc" mode="all"/>
+ <xsl:apply-templates select="notoc" mode="all"/>
+ <xsl:text>&#10;&#10;</xsl:text>
+ <xsl:apply-templates select="toc"/>
+ <xsl:apply-templates select="notoc"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>distclean: clean
+&#9;-rm -f </xsl:text>
+ <xsl:text>autolayout.xml website.database.xml </xsl:text>
+ <xsl:text>&#32;</xsl:text>
+ <xsl:value-of select="$depends-file"/>
+ <xsl:text>&#10;&#10;</xsl:text>
+ <xsl:text>clean:&#10;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$remove-output-root and not($output-root='')">
+ <xsl:text>&#9;-rm -rf </xsl:text>
+ <xsl:call-template name="output-root"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#9;-rm -f </xsl:text>
+ <xsl:apply-templates select="toc" mode="all"/>
+ <xsl:apply-templates select="notoc" mode="all"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="toc">
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:call-template name="output-root"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@page"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select=".//tocentry"/>
+</xsl:template>
+
+<xsl:template match="tocentry|notoc">
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:if test="@filename">
+ <xsl:call-template name="output-root"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@page"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="toc" mode="all">
+ <xsl:apply-templates select=".//tocentry" mode="all"/>
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:call-template name="output-root"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="tocentry|notoc" mode="all">
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:if test="@filename">
+ <xsl:call-template name="output-root"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="*" mode="calculate-dir">
+ <xsl:choose>
+ <xsl:when test="starts-with(@dir, '/')">
+ <!-- if the directory on this begins with a "/", we're done... -->
+ <xsl:value-of select="substring-after(@dir, '/')"/>
+<!--
+ <xsl:if test="@dir != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+-->
+ </xsl:when>
+
+ <xsl:when test="parent::*">
+ <!-- if there's a parent, try it -->
+ <xsl:apply-templates select="parent::*" mode="calculate-dir"/>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+<!--
+ <xsl:text>/</xsl:text>
+-->
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+<!--
+ <xsl:text>/</xsl:text>
+-->
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="output-root">
+ <xsl:if test="$output-root != ''">
+ <xsl:value-of select="$output-root"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl
new file mode 100644
index 0000000..6766bdd
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/olink.xsl
@@ -0,0 +1,297 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:param name="website.database.document"
+ select="'website.database.xml'"/>
+
+<xsl:template match="olink">
+ <xsl:choose>
+ <xsl:when test="@targetdoc != '' or @targetptr != ''">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink-entity"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink-entity">
+ <xsl:variable name="xmlfile"
+ select="document(unparsed-entity-uri(@targetdocent),$autolayout)"/>
+ <xsl:variable name="webpage"
+ select="$xmlfile/webpage"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[$webpage/@id=@id]"/>
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="starts-with($tocentry/@dir, '/')">
+ <xsl:value-of select="substring($tocentry/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tocentry/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!-- debug
+ <xsl:message>Olink for <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/></xsl:message>
+ <xsl:message>Page id <xsl:value-of select="$webpage/@id"/></xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="@type = 'embed'">
+ <xsl:apply-templates select="$xmlfile"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- @type = 'replace' or @type = 'new' -->
+ <a>
+ <xsl:if test="@id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+<!-- debug
+ <xsl:message>
+ <xsl:text>href: </xsl:text>
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$dir"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$tocentry/@filename"/>
+ <xsl:text>::</xsl:text>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:message>
+-->
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:value-of select="$dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$tocentry/@filename"/>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:if test="@type = 'new'">
+ <xsl:attribute name="target">_blank</xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="count(node()) = 0">
+ <xsl:apply-templates select="$webpage/head/title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Customize the selection to use both website and offsite databases -->
+<xsl:template name="select.target.database">
+ <xsl:param name="targetdoc.att" select="''"/>
+ <xsl:param name="targetptr.att" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+
+ <!-- Is the target in the website database? -->
+ <xsl:variable name="website.olink.key">
+ <xsl:if test="$website.database.document != ''">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database"
+ select="document($website.database.document,/)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <!-- Is the target in the offsite database? -->
+ <xsl:variable name="offsite.olink.key">
+ <xsl:if test="$target.database.document != ''">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database"
+ select="document($target.database.document,/)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$website.olink.key != ''">
+ <xsl:value-of select="$website.database.document"/>
+ </xsl:when>
+ <xsl:when test="$offsite.olink.key != ''">
+ <xsl:value-of select="$target.database.document"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Return a bogus string and let the olink template deal with it
+ <xsl:text>NOMATCHINANYDATABASEDOCUMENT</xsl:text>
+ -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Customize this template to use Website root-relative -->
+<xsl:template name="make.olink.href">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$olink.key != ''">
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr">
+ <xsl:value-of select="substring-before(substring-after($olink.key, '/'),'/')"/>
+ </xsl:variable>
+
+ <xsl:variable name="target.href" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/@href" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="target.dir" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@dir" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="target.element" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/@element" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- Does the target database use a sitemap? -->
+ <xsl:variable name="use.sitemap">
+ <xsl:choose>
+ <xsl:when test="$target.database//sitemap">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <!-- Get the baseuri for this targetptr -->
+ <xsl:variable name="baseuri" >
+ <xsl:choose>
+ <!-- Does the database use a sitemap? -->
+ <xsl:when test="$use.sitemap != 0" >
+ <xsl:choose>
+ <!-- Was current.docid parameter set? -->
+ <xsl:when test="$current.docid != ''">
+ <!-- Was it found in the database? -->
+ <xsl:variable name="currentdoc.key" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key',
+ $current.docid)/@targetdoc" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$currentdoc.key != ''">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode"
+ select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:for-each >
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path because $current.docid '</xsl:text>
+ <xsl:value-of select="$current.docid"/>
+ <xsl:text>' not found in target database.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink warning: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path without $current.docid parameter</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- In either case, add baseuri from its document entry-->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- No database sitemap in use -->
+ <xsl:otherwise>
+ <!-- compute a root-relative path if current page has a @dir -->
+ <xsl:variable name="root-rel">
+ <xsl:call-template name="root-rel-path"/>
+ </xsl:variable>
+ <xsl:if test="$root-rel != ''">
+ <xsl:value-of select="$root-rel"/>
+ </xsl:if>
+ <!-- Add the target's @dir to the path -->
+ <xsl:if test="$target.dir != ''">
+ <xsl:value-of select="$target.dir"/>
+ </xsl:if>
+ <!-- Just use any baseuri from its document entry -->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key',
+ $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Form the href information -->
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$target.element = 'webpage' and
+ $targetdoc = $targetptr">
+ <!-- Don't output #id because not needed -->
+ </xsl:when>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:when test="not($insert.olink.pdf.frag = 0 and
+ translate(substring($baseuri, string-length($baseuri) - 3),
+ 'PDF', 'pdf') = '.pdf'
+ and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml
new file mode 100644
index 0000000..0be62a8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xml
@@ -0,0 +1,788 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0">
+<info>
+<title>Website Parameter Reference</title>
+<releaseinfo role="meta">
+$Id: param.xweb 7076 2007-07-18 16:20:33Z xmldoc $
+</releaseinfo>
+<author>
+ <personname>
+ <surname>Walsh</surname>
+ <firstname>Norman</firstname>
+ </personname>
+</author>
+<copyright>
+ <year>2002-2005</year>
+ <holder>Norman Walsh</holder>
+</copyright>
+<abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook XSL Website stylesheet (for
+ generating websites from DocBook XML sources). Note that the
+ Website stylesheet is a customization layer of the DocBook XSL
+ HTML stylesheet. Therefore, in addition to the
+ Website-specific parameters listed in this section, you can
+ also use a number of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../html/">HTML
+ stylesheet parameters</link> to control Website output.</para>
+</abstract>
+</info>
+<reference xml:id="general">
+<title>General Parameters</title>
+<refentry version="5.0" xml:id="autolayout-file">
+<refmeta>
+<refentrytitle>autolayout-file</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autolayout-file</refname>
+<refpurpose>Identifies the autolayout.xml file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="autolayout-file.frag">
+&lt;xsl:param name="autolayout-file"&gt;autolayout.xml&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When the source pages are spread over several directories, this
+parameter can be set (for example, from the command line of a batch-mode
+XSLT processor) to indicate the location of the autolayout.xml file.</para>
+<para>FIXME: for browser-based use, there needs to be a PI for this...
+</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="body.attributes">
+<refmeta>
+<refentrytitle>body.attributes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>body.attributes</refname>
+<refpurpose>DEPRECATED</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="body.attributes.frag">
+&lt;xsl:attribute-set name="body.attributes"&gt;
+ &lt;xsl:attribute name="bgcolor"&gt;white&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="link"&gt;#0000FF&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="vlink"&gt;#840084&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="alink"&gt;#0000FF&lt;/xsl:attribute&gt;
+&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>DEPRECATED</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="currentpage.marker">
+<refmeta>
+<refentrytitle>currentpage.marker</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>currentpage.marker</refname>
+<refpurpose>The text symbol used to mark the current page</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="currentpage.marker.frag">
+&lt;xsl:param name="currentpage.marker"&gt;@&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>Character to use as identifying the current page in </para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="dry-run">
+<refmeta>
+<refentrytitle>dry-run</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dry-run</refname>
+<refpurpose>Indicates that no files should be produced</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+ <programlisting xml:id="dry-run.frag">
+ &lt;xsl:param name="dry-run" select="0"&gt;&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to suppress the generation of
+new and updated files. Effectively, this allows you to see what the
+stylesheet would do, without actually making any changes.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="feedback.href">
+<refmeta>
+<refentrytitle>feedback.href</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.href</refname>
+<refpurpose>HREF (URI) for feedback link</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="feedback.href.frag">
+&lt;xsl:param name="feedback.href"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The <varname>feedback.href</varname> value is used as the value
+for the <tag class="attribute">href</tag> attribute on the feedback
+link. If <varname>feedback.href</varname>
+is empty, no feedback link is generated.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="feedback.link.text">
+<refmeta>
+<refentrytitle>feedback.link.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.link.text</refname>
+<refpurpose>The text of the feedback link</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="feedback.link.text.frag">
+&lt;xsl:param name="feedback.link.text"&gt;Feedback&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The contents of this variable is used as the text of the feedback
+link if <varname>feedback.href</varname> is not empty. If
+<varname>feedback.href</varname> is empty, no feedback link is
+generated.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="feedback.with.ids">
+<refmeta>
+<refentrytitle>feedback.with.ids</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>feedback.with.ids</refname>
+<refpurpose>Toggle use of IDs in feedback</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="feedback.with.ids.frag">
+&lt;xsl:param name="feedback.with.ids" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>feedback.with.ids</varname> is non-zero, the ID of the
+current page will be added to the feedback link. This can be used, for
+example, if the <varname>feedback.href</varname> is a CGI script.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="filename-prefix">
+<refmeta>
+<refentrytitle>filename-prefix</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>filename-prefix</refname>
+<refpurpose>Prefix added to all filenames</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="filename-prefix.frag">
+&lt;xsl:param name="filename-prefix"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>To produce the <quote>text-only</quote> (that is, non-tabular) layout
+of a website simultaneously with the tabular layout, the filenames have to
+be distinguished. That's accomplished by adding the
+<varname>filename-prefix</varname> to the front of each filename.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="footer.hr">
+<refmeta>
+<refentrytitle>footer.hr</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footer.hr</refname>
+<refpurpose>Toggle &lt;HR&gt; before footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="footer.hr.frag">
+&lt;xsl:param name="footer.hr" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, an &lt;HR&gt; is generated at the bottom of each web page,
+before the footer.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="header.hr">
+<refmeta>
+<refentrytitle>header.hr</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>header.hr</refname>
+<refpurpose>Toggle &lt;HR&gt; after header</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="header.hr.frag">
+&lt;xsl:param name="header.hr" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, an &lt;HR&gt; is generated at the bottom of each web page,
+before the footer.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="output-root">
+<refmeta>
+<refentrytitle>output-root</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>output-root</refname>
+<refpurpose>Specifies the root directory of the website</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="output-root.frag">
+&lt;xsl:param name="output-root"&gt;.&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to indicate the root directory
+where the resulting pages are placed.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="rebuild-all">
+<refmeta>
+<refentrytitle>rebuild-all</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>rebuild-all</refname>
+<refpurpose>Indicates that all files should be produced</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="rebuild-all.frag">
+&lt;xsl:param name="rebuild-all" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to regenerate the whole website,
+updating even pages that don't appear to need to be updated.</para>
+<para>The dependency extension only looks at the source documents. So
+if you change something in the stylesheet, for example, that has a global
+effect, you can use this parameter to force the stylesheet to rebuild the
+whole website.
+</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="sequential.links">
+<refmeta>
+<refentrytitle>sequential.links</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sequential.links</refname>
+<refpurpose>Make sequentional links?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="sequential.links.frag">
+&lt;xsl:param name="sequential.links" select="0"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="suppress.homepage.title">
+<refmeta>
+<refentrytitle>suppress.homepage.title</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>suppress.homepage.title</refname>
+<refpurpose>Suppress title on homepage?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="suppress.homepage.title.frag">
+&lt;xsl:param name="suppress.homepage.title" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME:If non-zero, the title on the homepage is suppressed?</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="table.spacer.image">
+<refmeta>
+<refentrytitle>table.spacer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>table.spacer.image</refname>
+<refpurpose>Invisible pixel for tabular accessibility</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="table.spacer.image.frag">
+&lt;xsl:param name="table.spacer.image"&gt;graphics/spacer.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>This is the 1x1 pixel, transparent pixel used for <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://diveintoaccessibility.org/day_10_presenting_your_main_content_first.html">the table trick</link> to increase the accessibility of the tabular
+website presentation.</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="nav">
+<title>Navigation Parameters</title>
+<refentry version="5.0" xml:id="banner.before.navigation">
+<refmeta>
+<refentrytitle>banner.before.navigation</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>banner.before.navigation</refname>
+<refpurpose>Put banner before navigation?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="banner.before.navigation.frag">
+&lt;xsl:param name="banner.before.navigation" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>FIXME</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="navbgcolor">
+<refmeta>
+<refentrytitle>navbgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navbgcolor</refname>
+<refpurpose>The background color of the navigation TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="navbgcolor.frag">
+&lt;xsl:param name="navbgcolor"&gt;#4080FF&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The background color of the navigation TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="navbodywidth">
+<refmeta>
+<refentrytitle>navbodywidth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navbodywidth</refname>
+<refpurpose>Specifies the width of the navigation table body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="navbodywidth.frag">
+&lt;xsl:param name="navbodywidth"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The width of the body column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="nav.table.summary">
+<refmeta>
+<refentrytitle>nav.table.summary</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nav.table.summary</refname>
+<refpurpose>HTML Table summary attribute value for navigation tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="nav.table.summary.frag">
+&lt;xsl:param name="nav.table.summary"&gt;Navigation&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The value of this parameter is used as the value of the table
+summary attribute for the navigation table.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="navtocwidth">
+<refmeta>
+<refentrytitle>navtocwidth</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>navtocwidth</refname>
+<refpurpose>Specifies the width of the navigation table TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="navtocwidth.frag">
+&lt;xsl:param name="navtocwidth"&gt;220&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The width, in pixels, of the navigation column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="textbgcolor">
+<refmeta>
+<refentrytitle>textbgcolor</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>textbgcolor</refname>
+<refpurpose>The background color of the table body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="textbgcolor.frag">
+&lt;xsl:param name="textbgcolor"&gt;white&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>The background color of the table body.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+</reference>
+<reference xml:id="toc">
+<title>ToC Parameters</title>
+<refentry version="5.0" xml:id="toc.blank.graphic">
+<refmeta>
+<refentrytitle>toc.blank.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.graphic</refname>
+<refpurpose>Use graphic for "blanks" in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.blank.graphic.frag">
+&lt;xsl:param name="toc.blank.graphic" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, "blanks" in the the TOC will be accomplished
+with the graphic identified by <varname>toc.spacer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.blank.image">
+<refmeta>
+<refentrytitle>toc.blank.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.image</refname>
+<refpurpose>The image for "blanks" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.blank.image.frag">
+&lt;xsl:param name="toc.blank.image"&gt;graphics/blank.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.blank.graphic</varname> is non-zero, this image
+will be used to for "blanks" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.blank.text">
+<refmeta>
+<refentrytitle>toc.blank.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.blank.text</refname>
+<refpurpose>The text for "blanks" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.blank.text.frag">
+&lt;xsl:param name="toc.blank.text"&gt;&#160;&#160;&#160;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.blank.graphic</varname> is zero, this text string
+will be used for "blanks" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.pointer.graphic">
+<refmeta>
+<refentrytitle>toc.pointer.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.graphic</refname>
+<refpurpose>Use graphic for TOC pointer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.pointer.graphic.frag">
+&lt;xsl:param name="toc.pointer.graphic" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the "pointer" in the TOC will be displayed
+with the graphic identified by <varname>toc.pointer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.pointer.image">
+<refmeta>
+<refentrytitle>toc.pointer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.image</refname>
+<refpurpose>The image for the "pointer" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.pointer.image.frag">
+&lt;xsl:param name="toc.pointer.image"&gt;graphics/arrow.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.pointer.graphic</varname> is non-zero, this image
+will be used for the "pointer" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.pointer.text">
+<refmeta>
+<refentrytitle>toc.pointer.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.pointer.text</refname>
+<refpurpose>The text for the "pointer" in the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.pointer.text.frag">
+&lt;xsl:param name="toc.pointer.text"&gt;&#160;&gt;&#160;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.pointer.graphic</varname> is zero, this text string
+will be used to display the "pointer" in the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.spacer.graphic">
+<refmeta>
+<refentrytitle>toc.spacer.graphic</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.graphic</refname>
+<refpurpose>Use graphic for TOC spacer?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.spacer.graphic.frag">
+&lt;xsl:param name="toc.spacer.graphic" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If non-zero, the indentation in the TOC will be accomplished
+with the graphic identified by <varname>toc.spacer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.spacer.image">
+<refmeta>
+<refentrytitle>toc.spacer.image</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.image</refname>
+<refpurpose>The image for spacing the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.spacer.image.frag">
+&lt;xsl:param name="toc.spacer.image"&gt;graphics/blank.gif&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.spacer.graphic</varname> is non-zero, this image
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="toc.spacer.text">
+<refmeta>
+<refentrytitle>toc.spacer.text</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.spacer.text</refname>
+<refpurpose>The text for spacing the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="toc.spacer.text.frag">
+&lt;xsl:param name="toc.spacer.text"&gt;&#160;&#160;&#160;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+<para>If <varname>toc.spacer.graphic</varname> is zero, this text string
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refsection>
+</refentry>
+
+</reference>
+<appendix xml:id="stylesheet"><title>The Stylesheet</title>
+
+<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
+around all these parameters.</para>
+
+<programlisting xml:id="top">
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 7076 2007-07-18 16:20:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheets distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="autolayout-file.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="header.hr.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="footer.hr.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="feedback.href.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="feedback.with.ids.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="feedback.link.text.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="filename-prefix.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="output-root.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="dry-run.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="rebuild-all.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="nav.table.summary.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="navtocwidth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="navbodywidth.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="textbgcolor.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="navbgcolor.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.spacer.graphic.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.spacer.text.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.spacer.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.pointer.graphic.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.pointer.text.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.pointer.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.blank.graphic.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.blank.text.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="toc.blank.image.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="suppress.homepage.title.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="body.attributes.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="sequential.links.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="currentpage.marker.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="banner.before.navigation.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="table.spacer.image.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;/xsl:stylesheet&gt;
+</programlisting>
+
+</appendix>
+</book>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl
new file mode 100644
index 0000000..ccd1f20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/param.xsl
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 7076 2007-07-18 16:20:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheets distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="autolayout-file">autolayout.xml</xsl:param>
+<xsl:param name="header.hr" select="1"/>
+<xsl:param name="footer.hr" select="1"/>
+<xsl:param name="feedback.href"/>
+<xsl:param name="feedback.with.ids" select="0"/>
+<xsl:param name="feedback.link.text">Feedback</xsl:param>
+<xsl:param name="filename-prefix"/>
+<xsl:param name="output-root">.</xsl:param>
+ <xsl:param name="dry-run" select="0"/>
+
+<xsl:param name="rebuild-all" select="0"/>
+<xsl:param name="nav.table.summary">Navigation</xsl:param>
+<xsl:param name="navtocwidth">220</xsl:param>
+<xsl:param name="navbodywidth"/>
+<xsl:param name="textbgcolor">white</xsl:param>
+<xsl:param name="navbgcolor">#4080FF</xsl:param>
+<xsl:param name="toc.spacer.graphic" select="1"/>
+<xsl:param name="toc.spacer.text">&#160;&#160;&#160;</xsl:param>
+<xsl:param name="toc.spacer.image">graphics/blank.gif</xsl:param>
+<xsl:param name="toc.pointer.graphic" select="1"/>
+<xsl:param name="toc.pointer.text">&#160;&gt;&#160;</xsl:param>
+<xsl:param name="toc.pointer.image">graphics/arrow.gif</xsl:param>
+<xsl:param name="toc.blank.graphic" select="1"/>
+<xsl:param name="toc.blank.text">&#160;&#160;&#160;</xsl:param>
+<xsl:param name="toc.blank.image">graphics/blank.gif</xsl:param>
+<xsl:param name="suppress.homepage.title" select="1"/>
+<xsl:attribute-set name="body.attributes">
+ <xsl:attribute name="bgcolor">white</xsl:attribute>
+ <xsl:attribute name="text">black</xsl:attribute>
+ <xsl:attribute name="link">#0000FF</xsl:attribute>
+ <xsl:attribute name="vlink">#840084</xsl:attribute>
+ <xsl:attribute name="alink">#0000FF</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="sequential.links" select="0"/>
+<xsl:param name="currentpage.marker">@</xsl:param>
+<xsl:param name="banner.before.navigation" select="1"/>
+<xsl:param name="table.spacer.image">graphics/spacer.gif</xsl:param>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl
new file mode 100644
index 0000000..4f27a24
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/rss.xsl
@@ -0,0 +1,143 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rss="http://purl.org/rss/1.0/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cvsf="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.CVS"
+ xmlns:cvs="http://nwalsh.com/rdf/cvs#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ exclude-result-prefixes="rss rdf cvs dc cvsf"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:template match="rss">
+ <xsl:variable name="rss" select="document(@feed, .)"/>
+
+ <div class='rss'>
+ <xsl:choose>
+ <xsl:when test="not($rss)">
+ <xsl:message>RSS Failed: <xsl:value-of select="@feed"/></xsl:message>
+ <xsl:text>[RSS Failed: </xsl:text>
+ <xsl:value-of select="@feed"/>
+ </xsl:when>
+ <xsl:when test="$rss/rdf:RDF">
+ <xsl:apply-templates select="$rss/*/rss:channel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- is there an otherwise case? -->
+ <xsl:apply-templates select="$rss//rss:channel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="rss:channel">
+ <xsl:variable name="image-resource" select="rss:image/@rdf:resource"/>
+ <xsl:variable name="image" select="//rss:image[@rdf:about = $image-resource]"/>
+
+ <xsl:if test="$image">
+ <xsl:choose>
+ <xsl:when test="$image/rss:link">
+ <a href="{$image/rss:link}">
+ <img src="{$image/rss:url}" alt="{$image/rss:title}" align="right" border="0"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img src="{$image/rss:url}" alt="{$image/rss:title}" align="right"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:apply-templates select="rss:title"/>
+ <xsl:apply-templates select="rss:description"/>
+ <xsl:apply-templates select="rss:items"/>
+
+ <xsl:if test="$image">
+ <br clear="right"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="rss:title">
+ <xsl:param name="wrapper" select="'h3'"/>
+
+ <xsl:element name="{$wrapper}">
+ <xsl:choose>
+ <xsl:when test="../rss:link">
+ <a href="{../rss:link[1]}">
+ <xsl:apply-templates/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="../dc:date|../cvs:date">
+ <xsl:choose>
+ <xsl:when test="../dc:date">
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="../dc:date[1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:when test="function-available('cvsf:localTime')">
+ <xsl:variable name="timeString" select="cvsf:localTime(../cvs:date[1])"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="substring($timeString, 1, 3)"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="substring($timeString, 9, 2)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="substring($timeString, 5, 3)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="substring($timeString, 25, 4)"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="../cvs:date[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="rss:description">
+ <p>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="rss:items">
+ <dl>
+ <xsl:for-each select="rdf:Seq/rdf:li[@rdf:resource and @rdf:resource != '']">
+ <xsl:variable name="resource" select="@rdf:resource"/>
+ <xsl:variable name="item" select="//rss:item[@rdf:about = $resource]"/>
+ <xsl:if test="not($item)">
+ <xsl:message>
+ <xsl:text>RSS Warning: there is no item labelled: </xsl:text>
+ <xsl:value-of select="$resource"/>
+ </xsl:message>
+ </xsl:if>
+ <xsl:if test="count($item) &gt; 1">
+ <xsl:message>
+ <xsl:text>RSS Warning: there is more than one item labelled: </xsl:text>
+ <xsl:value-of select="$resource"/>
+ </xsl:message>
+ </xsl:if>
+ <xsl:apply-templates select="$item"/>
+ </xsl:for-each>
+ </dl>
+</xsl:template>
+
+<xsl:template match="rss:item">
+ <xsl:message>RSS item: <xsl:value-of select="rss:title"/></xsl:message>
+
+ <xsl:apply-templates select="rss:title">
+ <xsl:with-param name="wrapper" select="'dt'"/>
+ </xsl:apply-templates>
+ <xsl:if test="rss:description">
+ <dd>
+ <xsl:apply-templates select="rss:description"/>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl
new file mode 100644
index 0000000..14e597e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/tabular.xsl
@@ -0,0 +1,213 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:html='http://www.w3.org/1999/xhtml'
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="html doc"
+ version="1.0">
+
+<xsl:import href="website-common.xsl"/>
+<xsl:include href="toc-tabular.xsl"/>
+
+<xsl:output method="html"
+ indent="no"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ doctype-system="http://www.w3.org/TR/html4/loose.dtd"
+/>
+
+<xsl:param name="autolayout" select="document($autolayout-file, /*)"/>
+
+<!-- ==================================================================== -->
+
+<!-- Netscape gets badly confused if it sees a CSS style... -->
+<xsl:param name="admon.style" select="''"/>
+<xsl:param name="admon.graphics" select="1"/>
+<xsl:param name="admon.graphics.path">graphics/</xsl:param>
+<xsl:param name="admon.graphics.extension">.gif</xsl:param>
+
+<xsl:attribute-set name="table.properties">
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="cellpadding">0</xsl:attribute>
+ <xsl:attribute name="cellspacing">0</xsl:attribute>
+ <xsl:attribute name="width">100%</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="table.navigation.cell.properties">
+ <xsl:attribute name="valign">top</xsl:attribute>
+ <xsl:attribute name="align">left</xsl:attribute>
+ <!-- width is set with $navotocwidth -->
+ <xsl:attribute name="bgcolor">
+ <xsl:choose>
+ <xsl:when test="/webpage/config[@param='navbgcolor']/@value[. != '']">
+ <xsl:value-of select="/webpage/config[@param='navbgcolor']/@value"/>
+ </xsl:when>
+ <xsl:when test="$autolayout/autolayout/config[@param='navbgcolor']/@value[. != '']">
+ <xsl:value-of select="$autolayout/autolayout/config[@param='navbgcolor']/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$navbgcolor"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="table.body.cell.properties">
+ <xsl:attribute name="valign">top</xsl:attribute>
+ <xsl:attribute name="align">left</xsl:attribute>
+ <!-- width is set with $navobodywidth -->
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$textbgcolor"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:param name="body.columns" select="2"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template name="home.navhead">
+ <xsl:text>Navhead</xsl:text>
+</xsl:template>
+
+<xsl:template name="home.navhead.upperright">
+ <xsl:text>Upper-right</xsl:text>
+</xsl:template>
+
+<xsl:template name="home.navhead.cell">
+ <td width="50%" valign="middle" align="left">
+ <xsl:call-template name="home.navhead"/>
+ </td>
+</xsl:template>
+
+<xsl:template name="home.navhead.upperright.cell">
+ <td width="50%" valign="middle" align="right">
+ <xsl:call-template name="home.navhead.upperright"/>
+ </td>
+</xsl:template>
+
+<xsl:template name="home.navhead.separator">
+ <hr/>
+</xsl:template>
+
+<xsl:template match="webpage">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="relpath">
+ <xsl:call-template name="root-rel-path">
+ <xsl:with-param name="webpage" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="tocentry" select="$autolayout/autolayout//*[$id=@id]"/>
+ <xsl:variable name="toc" select="($tocentry/ancestor-or-self::toc
+ |$autolayout/autolayout/toc[1])[last()]"/>
+
+ <html>
+ <xsl:apply-templates select="head" mode="head.mode"/>
+ <xsl:apply-templates select="config" mode="head.mode"/>
+ <body class="tabular">
+ <xsl:call-template name="body.attributes"/>
+
+ <div class="{name(.)}">
+ <a name="{$id}"/>
+
+ <xsl:call-template name="allpages.banner"/>
+
+ <table xsl:use-attribute-sets="table.properties" border="0">
+ <xsl:if test="$nav.table.summary!=''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="normalize-space($nav.table.summary)"/>
+ </xsl:attribute>
+ </xsl:if>
+ <tr>
+ <td xsl:use-attribute-sets="table.navigation.cell.properties">
+ <img src="{$relpath}{$table.spacer.image}" alt=" " width="1" height="1"/>
+ </td>
+ <xsl:call-template name="hspacer">
+ <xsl:with-param name="vspacer" select="1"/>
+ </xsl:call-template>
+ <td rowspan="2" xsl:use-attribute-sets="table.body.cell.properties">
+ <xsl:if test="$navbodywidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$navbodywidth"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$autolayout/autolayout/toc[1]/@id = $id">
+ <table border="0" summary="home page extra headers"
+ cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <xsl:call-template name="home.navhead.cell"/>
+ <xsl:call-template name="home.navhead.upperright.cell"/>
+ </tr>
+ </table>
+ <xsl:call-template name="home.navhead.separator"/>
+ </xsl:if>
+
+ <xsl:if test="$autolayout/autolayout/toc[1]/@id != $id
+ or $suppress.homepage.title = 0">
+ <xsl:apply-templates select="./head/title" mode="title.mode"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="child::node()[not(self::webpage)]"/>
+ <xsl:call-template name="process.footnotes"/>
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td xsl:use-attribute-sets="table.navigation.cell.properties">
+ <xsl:if test="$navtocwidth != ''">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="/webpage/config[@param='navtocwidth']/@value[. != '']">
+ <xsl:value-of select="/webpage/config[@param='navtocwidth']/@value"/>
+ </xsl:when>
+ <xsl:when test="$autolayout/autolayout/config[@param='navtocwidth']/@value[. != '']">
+ <xsl:value-of select="$autolayout/autolayout/config[@param='navtocwidth']/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$navtocwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$toc">
+ <p class="navtoc">
+ <xsl:apply-templates select="$toc">
+ <xsl:with-param name="pageid" select="@id"/>
+ </xsl:apply-templates>
+ </p>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="hspacer"/>
+ </tr>
+ <xsl:call-template name="webpage.table.footer"/>
+ </table>
+
+ <xsl:call-template name="webpage.footer"/>
+ </div>
+
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template name="hspacer">
+ <xsl:param name="vspacer" select="0"/>
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="config[@param='filename']" mode="head.mode">
+</xsl:template>
+
+<xsl:template match="webtoc">
+ <!-- nop -->
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl
new file mode 100644
index 0000000..4809840
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc-tabular.xsl
@@ -0,0 +1,480 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="nav.graphics" select="1"/>
+<xsl:param name="nav.pointer" select="1"/>
+<xsl:param name="nav.revisionflag" select="1"/>
+
+<xsl:param name="toc.spacer.text">&#160;&#160;&#160;</xsl:param>
+<xsl:param name="toc.spacer.image">graphics/blank.gif</xsl:param>
+
+<xsl:param name="nav.icon.path">graphics/navicons/</xsl:param>
+<xsl:param name="nav.icon.extension">.gif</xsl:param>
+
+<!-- styles: folder, folder16, plusminus, triangle, arrow -->
+<xsl:param name="nav.icon.style">triangle</xsl:param>
+
+<xsl:param name="nav.text.spacer">&#160;</xsl:param>
+<xsl:param name="nav.text.current.open">+</xsl:param>
+<xsl:param name="nav.text.current.page">+</xsl:param>
+<xsl:param name="nav.text.other.open">&#160;</xsl:param>
+<xsl:param name="nav.text.other.closed">&#160;</xsl:param>
+<xsl:param name="nav.text.other.page">&#160;</xsl:param>
+<xsl:param name="nav.text.revisionflag.added">New</xsl:param>
+<xsl:param name="nav.text.revisionflag.changed">Changed</xsl:param>
+<xsl:param name="nav.text.revisionflag.deleted"></xsl:param>
+<xsl:param name="nav.text.revisionflag.off"></xsl:param>
+
+<xsl:param name="nav.text.pointer">&lt;-</xsl:param>
+
+<xsl:param name="toc.expand.depth" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="toc/title|tocentry/title|titleabbrev">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="toc">
+ <xsl:param name="pageid" select="@id"/>
+
+ <xsl:variable name="relpath">
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="homebanner"
+ select="/autolayout/config[@param='homebanner-tabular'][1]"/>
+
+ <xsl:variable name="banner"
+ select="/autolayout/config[@param='banner-tabular'][1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <img align="left" border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$homebanner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$homebanner/@altval"/>
+ </xsl:attribute>
+ </img>
+ <br clear="all"/>
+ <br/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$relpath}{@dir}{$filename-prefix}{@filename}">
+ <img align="left" border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$banner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$banner/@altval"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ <br clear="all"/>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ <br/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tocentry">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="toclevel" select="count(ancestor::*)"/>
+ <xsl:param name="relpath" select="''"/>
+ <xsl:param name="revisionflag" select="@revisionflag"/>
+
+ <xsl:variable name="page" select="."/>
+ <xsl:variable name="target"
+ select="($page/descendant-or-self::tocentry[not(@tocskip) or @tocskip = '0']
+ |$page/following::tocentry[@tocskip and @tocskip='0'])[1]"/>
+
+ <xsl:variable name="depth" select="count(ancestor::*)-1"/>
+
+ <xsl:variable name="isdescendant">
+ <xsl:choose>
+ <xsl:when test="ancestor::*[@id=$pageid]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="hasdescendant">
+ <xsl:choose>
+ <xsl:when test="descendant::tocentry != ''">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="isancestor">
+ <xsl:choose>
+ <xsl:when test="descendant::*[@id=$pageid]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="use.toc.expand.depth">
+ <xsl:variable name="config-param" select="ancestor::autolayout/config[@param='toc.expand.depth']/@value"/>
+ <xsl:choose>
+ <!-- toc.expand.depth attribute is not in DTD -->
+ <xsl:when test="ancestor::toc/@toc.expand.depth">
+ <xsl:value-of select="ancestor::toc/@toc.expand.depth"/>
+ </xsl:when>
+ <xsl:when test="floor($config-param) > 0">
+ <xsl:value-of select="$config-param"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$toc.expand.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="is.open">
+ <xsl:choose>
+ <xsl:when test="$pageid = @id
+ or $isancestor='1'
+ or $depth &lt; $use.toc.expand.depth">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- For any entry in the TOC:
+ 1. It is the current page
+ a. it is a leaf current/leaf
+ b. it is an open page current/open
+ 2. It is not the current page
+ a. it is a leaf other/leaf
+ b. it is an open page other/open
+ c. it is a closed page other/closed
+ -->
+
+ <xsl:variable name="preceding-icon">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$nav.icon.path"/>
+ <xsl:value-of select="$nav.icon.style"/>
+ <xsl:choose>
+ <xsl:when test="$pageid=@id">
+ <xsl:choose>
+ <xsl:when test="$hasdescendant != 0">
+ <xsl:text>/current/open</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>/current/leaf</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$hasdescendant = 0">
+ <xsl:text>/other/leaf</xsl:text>
+ </xsl:when>
+ <xsl:when test="$is.open != 0">
+ <xsl:text>/other/open</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>/other/closed</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$nav.icon.extension"/>
+ </xsl:variable>
+
+ <xsl:variable name="preceding-text">
+ <xsl:choose>
+ <xsl:when test="$pageid=@id">
+ <xsl:choose>
+ <xsl:when test="$hasdescendant != 0">
+ <xsl:value-of select="$nav.text.current.open"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nav.text.current.page"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$isancestor != 0">
+ <xsl:value-of select="$nav.text.other.open"/>
+ </xsl:when>
+ <xsl:when test="$hasdescendant != 0">
+ <xsl:value-of select="$nav.text.other.closed"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nav.text.other.page"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following-icon">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$nav.icon.path"/>
+ <xsl:value-of select="$nav.icon.style"/>
+ <xsl:text>/current/pointer</xsl:text>
+ <xsl:value-of select="$nav.icon.extension"/>
+ </xsl:variable>
+
+ <xsl:variable name="following-text">
+ <xsl:value-of select="$nav.text.pointer"/>
+ </xsl:variable>
+
+ <xsl:variable name="revisionflag-icon">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$nav.icon.path"/>
+ <xsl:value-of select="$nav.icon.style"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$revisionflag"/>
+ <xsl:value-of select="$nav.icon.extension"/>
+ </xsl:variable>
+
+ <xsl:variable name="revisionflag-text">
+ <xsl:choose>
+ <xsl:when test="$revisionflag = 'changed'">
+ <xsl:value-of select="$nav.text.revisionflag.changed"/>
+ </xsl:when>
+ <xsl:when test="$revisionflag = 'added'">
+ <xsl:value-of select="$nav.text.revisionflag.added"/>
+ </xsl:when>
+ <xsl:when test="$revisionflag = 'deleted'">
+ <xsl:value-of select="$nav.text.revisionflag.deleted"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nav.text.revisionflag.off"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <span>
+ <xsl:if test="$toclevel = 2">
+ <xsl:attribute name="class">
+ <xsl:text>toplevel</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$toclevel &gt; 2">
+ <xsl:attribute name="class">
+ <xsl:text>shrink</xsl:text>
+ <xsl:value-of select="$toclevel - 2"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="insert.spacers">
+ <xsl:with-param name="count" select="$toclevel - 1"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$nav.graphics != 0">
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="href" select="@href"/>
+ <xsl:with-param name="page" select="$target"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ <xsl:with-param name="linktext">
+ <img src="{$preceding-icon}" alt="{$preceding-text}" border="0"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$preceding-text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <span class="curpage">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$nav.revisionflag != '0' and $revisionflag">
+ <xsl:value-of select="$nav.text.spacer"/>
+ <xsl:choose>
+ <xsl:when test="$nav.graphics = '1'">
+ <img src="{$revisionflag-icon}" alt="{$revisionflag-text}" align="bottom"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$revisionflag-text"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="$nav.pointer != '0'">
+ <xsl:value-of select="$nav.text.spacer"/>
+ <xsl:choose>
+ <xsl:when test="$nav.graphics = '1'">
+ <img src="{$following-icon}" alt="{$following-text}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$following-text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </span>
+ <br/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span>
+ <xsl:choose>
+ <xsl:when test="$isdescendant='0'">
+ <xsl:choose>
+ <xsl:when test="$isancestor='1'">
+ <xsl:attribute name="class">ancestor</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">otherpage</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- IS a descendant of curpage -->
+ <xsl:attribute name="class">descendant</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="href" select="@href"/>
+ <xsl:with-param name="page" select="$target"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ <xsl:with-param name="linktext">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$nav.revisionflag != '0' and $revisionflag">
+ <xsl:value-of select="$nav.text.spacer"/>
+ <xsl:choose>
+ <xsl:when test="$nav.graphics = '1'">
+ <img src="{$revisionflag-icon}" alt="{$revisionflag-text}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$revisionflag-text"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ </span>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+
+ <xsl:if test="$is.open != 0">
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="insert.spacers">
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="relpath"/>
+ <xsl:if test="$count>0">
+ <xsl:choose>
+ <xsl:when test="$nav.graphics != 0">
+ <img src="{$relpath}{$toc.spacer.image}" alt="{$toc.spacer.text}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$toc.spacer.text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="insert.spacers">
+ <xsl:with-param name="count" select="$count - 1"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="toc|tocentry|notoc" mode="toc-rel-path">
+ <xsl:call-template name="toc-rel-path"/>
+</xsl:template>
+
+<xsl:template name="toc-rel-path">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:variable name="entry" select="$autolayout//*[@id=$pageid]"/>
+ <xsl:variable name="filename" select="concat($entry/@dir,$entry/@filename)"/>
+
+ <xsl:variable name="slash-count">
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:choose>
+ <xsl:when test="starts-with($filename, '/')">
+ <xsl:value-of select="$slash-count - 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$slash-count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="$filename"/>
+ <xsl:text> depth=</xsl:text>
+ <xsl:value-of select="$depth"/>
+ </xsl:message>
+-->
+
+ <xsl:if test="$depth > 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">../</xsl:with-param>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc-directory-depth">
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test='contains($filename,"/")'>
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename"
+ select="substring-after($filename,'/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl
new file mode 100644
index 0000000..0252ea9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/toc.xsl
@@ -0,0 +1,286 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="max.toc.width" select="7"/>
+
+<xsl:template match="toc/title|tocentry/title|titleabbrev">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="toc">
+ <xsl:param name="pageid" select="@id"/>
+
+ <xsl:variable name="relpath">
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="homebanner"
+ select="/autolayout/config[@param='homebanner'][1]"/>
+
+ <xsl:variable name="banner"
+ select="/autolayout/config[@param='banner'][1]"/>
+
+ <xsl:variable name="homebannertext"
+ select="/autolayout/config[@param='homebannertext'][1]"/>
+
+ <xsl:variable name="bannertext"
+ select="/autolayout/config[@param='bannertext'][1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <xsl:choose>
+ <xsl:when test="$homebanner">
+ <img border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$homebanner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$homebanner/@altval"/>
+ </xsl:attribute>
+ </img>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:when>
+ <xsl:when test="$homebannertext">
+ <xsl:value-of select="$homebannertext/@value"/>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nav.home"/>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$relpath}{@dir}{$filename-prefix}{@filename}">
+ <xsl:choose>
+ <xsl:when test="$banner">
+ <img border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$banner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$banner/@altval"/>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:when test="$bannertext">
+ <xsl:value-of select="$bannertext/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nav.home"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text> | </xsl:text>
+
+ <xsl:call-template name="process-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="tocentry">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:if test="preceding-sibling::tocentry">
+ <xsl:text> | </xsl:text>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="toc|tocentry|notoc" mode="toc-rel-path">
+ <xsl:call-template name="toc-rel-path"/>
+</xsl:template>
+
+<xsl:template name="toc-rel-path">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:variable name="entry" select="$autolayout//*[@id=$pageid]"/>
+ <xsl:variable name="filename" select="concat($entry/@dir,$entry/@filename)"/>
+
+ <xsl:variable name="depth">
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$depth > 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">../</xsl:with-param>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc-directory-depth">
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test='contains($filename,"/")'>
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename"
+ select="substring-after($filename,'/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-children">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="tocentry[descendant-or-self::*[@id=$pageid]]">
+ <xsl:call-template name="process-tocentry-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-toc-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-tocentry-children">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="count(tocentry) &gt; $max.toc.width">
+ <xsl:variable name="cur"
+ select="tocentry[descendant-or-self::*[@id=$pageid]]"/>
+
+ <xsl:variable name="half" select="$max.toc.width div 2"/>
+
+ <xsl:variable name="all-nodes"
+ select="$cur/preceding-sibling::tocentry[position() &lt; $half]
+ | $cur
+ | $cur/following-sibling::tocentry"/>
+
+ <xsl:variable name="nodes"
+ select="$all-nodes[position() &lt; $max.toc.width]"/>
+
+ <xsl:if test="count($cur/preceding-sibling::tocentry) &gt; $half">
+ <xsl:text>...</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$nodes">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ <xsl:if test="count($all-nodes) &gt; $max.toc.width">
+ <xsl:text> | ...</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <br/>
+
+ <!-- if the current page isn't in this list, keep digging... -->
+ <xsl:if test="not(tocentry[$pageid=@id])">
+ <xsl:for-each select="tocentry">
+ <xsl:if test="descendant::*[@id=$pageid]">
+ <xsl:call-template name="process-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process-toc-children">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="count(tocentry) &gt; $max.toc.width">
+ <xsl:variable name="half" select="$max.toc.width div 2"/>
+
+ <xsl:variable name="all-nodes" select="tocentry"/>
+ <xsl:variable name="nodes"
+ select="$all-nodes[position() &lt; $max.toc.width]"/>
+
+ <xsl:apply-templates select="$nodes">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+
+ <xsl:if test="count($all-nodes) &gt; $max.toc.width">
+ <xsl:text> | ...</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <br/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl
new file mode 100644
index 0000000..370062a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-common.xsl
@@ -0,0 +1,821 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:html='http://www.w3.org/1999/xhtml'
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc html"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: website-common.xsl 8100 2008-08-03 18:15:51Z mzjn $
+ ********************************************************************
+
+ This file is part of the WebSite distribution.
+ See ../README or http://nwalsh.com/website/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="../html/docbook.xsl"/>
+<xsl:import href="xbel.xsl"/>
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="head.xsl"/>
+<xsl:include href="rss.xsl"/>
+<xsl:include href="olink.xsl"/>
+
+<xsl:preserve-space elements="*"/>
+<xsl:strip-space elements="website webpage"/>
+
+<xsl:output method="html"
+ indent="no"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:value-of select="$admon.graphics.path"/>
+ <xsl:choose>
+ <xsl:when test="name($node)='note'">note</xsl:when>
+ <xsl:when test="name($node)='warning'">warning</xsl:when>
+ <xsl:when test="name($node)='caution'">caution</xsl:when>
+ <xsl:when test="name($node)='tip'">tip</xsl:when>
+ <xsl:when test="name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$admon.graphics.extension"/>
+</xsl:template>
+
+<doc:template name="admon.graphic">
+<refpurpose>Select appropriate admonition graphic</refpurpose>
+<refdescription>
+<para>Selects the appropriate admonition graphic file and returns the
+fully qualified path to it.</para>
+</refdescription>
+<refparam>
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The source node to use for the purpose of selection. It should
+be one of the admonition elements (<sgmltag>note</sgmltag>,
+<sgmltag>warning</sgmltag>, etc.). The default node is the context
+node.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparam>
+<refreturns>
+<para>The fully qualified path to the admonition graphic. If the
+<varname>node</varname> is not an admonition element, the
+ <quote>note</quote> graphic is returned.</para>
+</refreturns>
+</doc:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="allpages.banner"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="webpage.table.footer"/>
+
+<xsl:template name="webpage.footer">
+ <xsl:variable name="page" select="."/>
+ <xsl:variable name="footers" select="$page/config[@param='footer']
+ |$page/config[@param='footlink']
+ |$autolayout/autolayout/config[@param='footer']
+ |$autolayout/autolayout/config[@param='footlink']"/>
+
+ <xsl:variable name="tocentry" select="$autolayout//*[@id=$page/@id]"/>
+ <xsl:variable name="toc" select="($tocentry/ancestor-or-self::toc[1]
+ | $autolayout//toc[1])[last()]"/>
+
+ <xsl:variable name="feedback">
+ <xsl:choose>
+ <xsl:when test="$page/config[@param='feedback.href']">
+ <xsl:value-of select="($page/config[@param='feedback.href'])[1]/@value"/>
+ </xsl:when>
+ <xsl:when test="$autolayout/autolayout/config[@param='feedback.href']">
+ <xsl:value-of select="($autolayout/autolayout/config[@param='feedback.href'])[1]/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$feedback.href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div class="navfoot">
+ <xsl:if test="$footer.hr != 0"><hr/></xsl:if>
+ <table width="100%" border="0" summary="Footer navigation">
+ <tr>
+ <td width="33%" align="left">
+ <span class="footdate">
+ <xsl:call-template name="rcsdate.format">
+ <xsl:with-param name="rcsdate"
+ select="$page/config[@param='rcsdate']/@value"/>
+ </xsl:call-template>
+ </span>
+ </td>
+ <td width="34%" align="center">
+ <xsl:choose>
+ <xsl:when test="not($toc)">
+ <xsl:message>
+ <xsl:text>Cannot determine TOC for </xsl:text>
+ <xsl:value-of select="$page/@id"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="$toc/@id = $page/@id">
+ <!-- nop; this is the home page -->
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="foothome">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="homeuri"/>
+ </xsl:attribute>
+ <xsl:call-template name="gentext.nav.home"/>
+ </a>
+ <xsl:if test="$footers">
+ <xsl:text> | </xsl:text>
+ </xsl:if>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="$footers" mode="footer.link.mode"/>
+ </td>
+ <td width="33%" align="right">
+ <xsl:choose>
+ <xsl:when test="$feedback != ''">
+ <span class="footfeed">
+ <a>
+ <xsl:choose>
+ <xsl:when test="$feedback.with.ids != 0">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$feedback"/>
+ <xsl:value-of select="$page/@id"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$feedback"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$feedback.link.text"/>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3" align="right">
+ <span class="footcopy">
+ <xsl:choose>
+ <xsl:when test="head/copyright">
+ <xsl:apply-templates select="head/copyright" mode="footer.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="footer.mode"
+ select="$autolayout/autolayout/copyright"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ </td>
+ </tr>
+ <xsl:if test="$sequential.links != 0">
+ <tr>
+ <xsl:variable name="prev">
+ <xsl:call-template name="prev.page"/>
+ </xsl:variable>
+ <xsl:variable name="next">
+ <xsl:call-template name="next.page"/>
+ </xsl:variable>
+ <xsl:variable name="ptoc"
+ select="$autolayout/autolayout//*[$prev=@id]"/>
+ <xsl:variable name="ntoc"
+ select="$autolayout/autolayout//*[$next=@id]"/>
+
+ <td align="left" valign="top">
+ <xsl:choose>
+ <xsl:when test="$prev != ''">
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="frompage" select="$tocentry"/>
+ <xsl:with-param name="page" select="$ptoc"/>
+ <xsl:with-param name="linktext" select="'Prev'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>&#160;</td>
+ <td align="right" valign="top">
+ <xsl:choose>
+ <xsl:when test="$next != ''">
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="frompage" select="$tocentry"/>
+ <xsl:with-param name="page" select="$ntoc"/>
+ <xsl:with-param name="linktext" select="'Next'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="rcsdate.format">
+ <xsl:param name="rcsdate" select="./config[@param='rcsdate']/@value"/>
+ <xsl:value-of select="$rcsdate"/>
+</xsl:template>
+
+<xsl:template match="config" mode="footer.link.mode">
+ <span class="foothome">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text> | </xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="@param='footlink'">
+ <xsl:variable name="id" select="@value"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:if test="count($tocentry) != 1">
+ <xsl:message>
+ <xsl:text>Footlink to </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> does not id a unique page.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="starts-with($tocentry/@dir, '/')">
+ <xsl:value-of select="substring($tocentry/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tocentry/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:value-of select="$dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$tocentry/@filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="@altval"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{@value}">
+ <xsl:value-of select="@altval"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="homeuri">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:variable name="toc" select="$tocentry/ancestor::toc"/>
+ <xsl:variable name="first-toc"
+ select="$autolayout/autolayout/toc[1]"/>
+
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:choose>
+ <xsl:when test="$toc">
+ <xsl:choose>
+ <xsl:when test="starts-with($toc/@dir, '/')">
+ <xsl:value-of select="substring($toc/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$toc/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$toc/@filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="starts-with($first-toc/@dir, '/')">
+ <xsl:value-of select="substring($first-toc/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$first-toc/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$first-toc/@filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="copyright" mode="footer.mode">
+ <span class="{name(.)}">
+ <xsl:call-template name="gentext.element.name"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="footer.mode"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="footer.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="year" mode="footer.mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="footer.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="footer.mode">
+ <xsl:apply-templates/>
+ <xsl:if test="position() != last()">, </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="config">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="head">
+</xsl:template>
+
+<xsl:template match="head/title" mode="title.mode">
+ <h1><xsl:apply-templates/></h1>
+</xsl:template>
+
+<xsl:template match="head/title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="directory-depth">
+ <xsl:param name="dir"></xsl:param>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test='contains($dir,"/")'>
+ <xsl:call-template name="directory-depth">
+ <xsl:with-param name="dir" select="substring-after($dir,'/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test='$dir=""'>
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="root-rel-path">
+ <xsl:param name="webpage" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="tocentry" select="$autolayout//*[$webpage/@id=@id]"/>
+ <xsl:apply-templates select="$tocentry" mode="toc-rel-path"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="footnote" mode="footnote.number">
+ <xsl:choose>
+ <xsl:when test="ancestor::table|ancestor::informaltable">
+ <xsl:number level="any" from="table|informaltable" format="a"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="webpage" format="1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes">
+ <!-- we're only interested in footnotes that occur on this page, not
+ on descendants of this page (which will be similarly processed) -->
+ <xsl:variable name="thispage"
+ select="ancestor-or-self::webpage"/>
+ <xsl:variable name="footnotes"
+ select=".//footnote[ancestor-or-self::webpage=$thispage]"/>
+ <xsl:variable name="table.footnotes"
+ select=".//table//footnote[ancestor-or-self::webpage=$thispage]
+ |.//informaltable//footnote[ancestor-or-self::webpage
+ =$thispage]"/>
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="count($footnotes)>count($table.footnotes)">
+ <div class="footnotes">
+ <hr width="100" align="left"/>
+ <xsl:apply-templates select="$footnotes" mode="process.footnote.mode"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="html:*">
+ <xsl:element name="{local-name(.)}" namespace="">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('php')">
+ <xsl:processing-instruction name="php">
+ <xsl:value-of select="."/>
+ </xsl:processing-instruction>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="rddl:*" xmlns:rddl='http://www.rddl.org/'>
+ <xsl:element name="{name(.)}">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="section[@rddl]" xmlns:rddl='http://www.rddl.org/'>
+ <xsl:variable name="rddl" select="id(@rddl)"/>
+ <xsl:choose>
+ <xsl:when test="local-name($rddl) != 'resource'">
+ <xsl:message>
+ <xsl:text>Warning: section rddl isn't an rddl:resource: </xsl:text>
+ <xsl:value-of select="@rddl"/>
+ </xsl:message>
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{name($rddl)}">
+ <xsl:apply-templates select="$rddl/@*" mode="copy"/>
+ <xsl:apply-imports/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="page.uri">
+ <xsl:param name="href" select="''"/>
+ <xsl:param name="page" select="ancestor-or-self::tocentry"/>
+ <xsl:param name="relpath">
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$page/@id"/>
+ </xsl:call-template>
+ </xsl:param>
+
+<!--
+ <xsl:message><xsl:value-of select="$page/@id"/>: <xsl:value-of select="$relpath"/></xsl:message>
+-->
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="starts-with($page/@dir, '/')">
+ <xsl:value-of select="substring($page/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$page/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="html.href">
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <xsl:value-of select="$href"/>
+ </xsl:when>
+ <xsl:when test="$page/@href">
+ <xsl:value-of select="$page/@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($relpath,$dir,$filename-prefix)"/>
+ <xsl:value-of select="$page/@filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$html.href"/>
+</xsl:template>
+
+<xsl:template name="link.to.page">
+ <xsl:param name="href" select="''"/>
+ <xsl:param name="frompage"/>
+ <xsl:param name="page" select="ancestor-or-self::tocentry"/>
+ <xsl:param name="relpath">
+ <xsl:choose>
+ <xsl:when test="$frompage">
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$frompage/@id"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$page/@id"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="linktext" select="'???'"/>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="page.uri">
+ <xsl:with-param name="href" select="$href"/>
+ <xsl:with-param name="page" select="$page"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:if test="summary">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(string(summary))"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$linktext"/>
+ </a>
+</xsl:template>
+
+<xsl:template name="next.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:variable name="next-following"
+ select="$tocentry/following::tocentry[1]"/>
+ <xsl:variable name="next-child"
+ select="$tocentry/descendant::tocentry[1]"/>
+
+ <xsl:variable name="nextid">
+ <xsl:choose>
+ <xsl:when test="$next-child">
+ <xsl:value-of select="$next-child/@id"/>
+ </xsl:when>
+ <xsl:when test="$next-following">
+ <xsl:value-of select="$next-following/@id"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$nextid"/>
+</xsl:template>
+
+<xsl:template name="prev.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:variable name="prev-ancestor"
+ select="($tocentry/ancestor::tocentry
+ |$tocentry/ancestor::toc)[last()]"/>
+ <xsl:variable name="prev-sibling"
+ select="$tocentry/preceding-sibling::tocentry[1]"/>
+
+ <xsl:variable name="previd">
+ <xsl:choose>
+ <xsl:when test="$prev-sibling">
+ <xsl:value-of select="$prev-sibling/@id"/>
+ </xsl:when>
+ <xsl:when test="$prev-ancestor">
+ <xsl:value-of select="$prev-ancestor/@id"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$previd"/>
+</xsl:template>
+
+<xsl:template name="top.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+
+ <xsl:value-of select="$tocentry/ancestor::toc/@id"/>
+</xsl:template>
+
+<xsl:template name="up.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+
+ <xsl:choose>
+ <xsl:when test="$tocentry/ancestor::tocentry">
+ <xsl:value-of select="$tocentry/ancestor::tocentry[1]/@id"/>
+ </xsl:when>
+ <xsl:when test="$tocentry/ancestor::toc">
+ <xsl:value-of select="$tocentry/ancestor::toc[1]/@id"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="first.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+
+ <xsl:value-of select="$tocentry/preceding-sibling::tocentry[last()]/@id"/>
+</xsl:template>
+
+<xsl:template name="last.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+
+ <xsl:variable name="prev-sibling"
+ select="$tocentry/preceding-sibling::tocentry[1]"/>
+
+ <xsl:value-of select="$tocentry/following-sibling::tocentry[last()]/@id"/>
+</xsl:template>
+
+<xsl:template match="autolayout" mode="collect.targets">
+ <targetset>
+ <xsl:apply-templates mode="olink.mode"/>
+ </targetset>
+</xsl:template>
+
+<xsl:template match="toc|tocentry|notoc" mode="olink.mode">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="tocentry"/>
+ <xsl:apply-templates select="tocentry" mode="olink.mode"/>
+</xsl:template>
+
+
+<xsl:template name="tocentry">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <!-- no op -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="not(@page)">
+ <xsl:message terminate="yes">
+ <xsl:text>All toc entries must have a page attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="page" select="document(@page,.)"/>
+
+ <xsl:if test="not($page/*[1]/@id)">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="@page"/>
+ <xsl:text>: missing ID.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="id" select="$page/*[1]/@id"/>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@filename">
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ </xsl:when>
+ <xsl:when test="/layout/config[@param='default-filename']">
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="(/layout/config[@param='default-filename'])[1]/@value"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="$filename-prefix"/>index.html</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="dir" select="@dir"/>
+
+ <xsl:if test="$filename = ''">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="@page"/>
+ <xsl:text>: missing filename.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="@page"/>
+ <xsl:text>: </xsl:text>
+ <xsl:if test="$dir != ''">
+ <xsl:value-of select="$dir"/>
+ </xsl:if>
+ <xsl:value-of select="$filename"/>
+ </xsl:message>
+ -->
+
+ <document>
+ <xsl:attribute name="targetdoc">
+ <xsl:value-of select="$id"/>
+ </xsl:attribute>
+ <xsl:attribute name="baseuri">
+ <xsl:value-of select="$filename"/>
+ </xsl:attribute>
+ <xsl:if test="$dir != ''">
+ <xsl:attribute name="dir">
+ <xsl:value-of select="$dir"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="$page" mode="olink.mode"/>
+ </document>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="webpage" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="webpage" mode="xref-to" >
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="webpage" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="head/title"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:param name="local.l10n.xml" select="document('')" />
+<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">
+ <l:l10n language="en">
+ <l:context name="title">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ <l:context name="xref">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ </l:l10n>
+ <l:l10n language="de">
+ <l:context name="title">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ <l:context name="xref">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ </l:l10n>
+ <l:l10n language="fr">
+ <l:context name="title">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ <l:context name="xref">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ </l:l10n>
+ <l:l10n language="es">
+ <l:context name="title">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ <l:context name="xref">
+ <l:template name="webpage" text="%t"/>
+ </l:context>
+ </l:l10n>
+</l:i18n>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl
new file mode 100644
index 0000000..2cd0b25
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website-targets.xsl
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="tabular.xsl"/>
+
+<xsl:output method="xml"
+ indent="no"
+ encoding="utf-8"
+ doctype-public="-//Norman Walsh//DTD DocBook OLink Summary V2.0//EN"
+ doctype-system="http://docbook.sourceforge.net/release/xsl/current/common/targetdatabase.dtd"/>
+
+
+<!-- Used only when processing autolayout.xml -->
+<xsl:template match="/">
+ <xsl:apply-templates mode="collect.targets"/>
+</xsl:template>
+
+<xsl:template match="*"/>
+
+<xsl:template match="autolayout" mode="collect.targets">
+ <targetset>
+ <xsl:apply-templates mode="olink.mode"/>
+ </targetset>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl
new file mode 100644
index 0000000..7364d9b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/website.xsl
@@ -0,0 +1,132 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:html='http://www.w3.org/1999/xhtml'
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc html"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: website.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the WebSite distribution.
+ See ../README or http://nwalsh.com/website/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="website-common.xsl"/>
+<xsl:include href="toc.xsl"/>
+
+<xsl:output method="html"
+ indent="no"/>
+
+<xsl:param name="autolayout" select="document($autolayout-file,/*[1])"/>
+
+<xsl:attribute-set name="body.attributes"/>
+
+<xsl:template name="body.attributes">
+ <!-- Turn off the template from the stock DocBook XSL -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="webpage">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="tocentry" select="$autolayout/autolayout//*[$id=@id]"/>
+ <xsl:variable name="toc" select="$tocentry/ancestor-or-self::toc"/>
+
+ <html>
+ <xsl:apply-templates select="head" mode="head.mode"/>
+ <xsl:apply-templates select="config" mode="head.mode"/>
+ <body class="website">
+ <xsl:call-template name="body.attributes"/>
+
+ <div class="{name(.)}">
+ <a name="{$id}"/>
+
+ <xsl:if test="$banner.before.navigation != 0">
+ <xsl:call-template name="allpages.banner"/>
+ </xsl:if>
+
+ <xsl:if test="$toc">
+ <div class="navhead">
+ <xsl:apply-templates select="$toc">
+ <xsl:with-param name="pageid" select="@id"/>
+ </xsl:apply-templates>
+ <xsl:if test="$header.hr != 0"><hr/></xsl:if>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="$banner.before.navigation = 0">
+ <xsl:call-template name="allpages.banner"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="./head/title" mode="title.mode"/>
+
+ <xsl:apply-templates select="child::node()[not(self::webpage)]"/>
+
+ <xsl:call-template name="process.footnotes"/>
+
+ <xsl:call-template name="webpage.footer"/>
+ </div>
+ </body>
+ </html>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="webtoc">
+ <xsl:variable name="webpage" select="ancestor::webpage"/>
+ <xsl:variable name="relpath">
+ <xsl:call-template name="root-rel-path">
+ <xsl:with-param name="webpage" select="$webpage"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="pageid" select="$webpage/@id"/>
+
+ <xsl:variable name="pages"
+ select="$autolayout//*[$pageid=@id]/tocentry"/>
+
+ <xsl:if test="count($pages) > 0">
+ <ul class="toc">
+ <xsl:for-each select="$pages">
+ <li>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:apply-templates select="title"/>
+ </a>
+ <xsl:if test="summary">
+ <xsl:text>--</xsl:text>
+ <xsl:apply-templates select="summary"/>
+ </xsl:if>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="toc/summary|tocentry/summary|notoc/summary">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl
new file mode 100644
index 0000000..ec9873c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/website/xbel.xsl
@@ -0,0 +1,114 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: xbel.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:output method="xml"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="xbel">
+ <ul>
+ <xsl:apply-templates/>
+ </ul>
+</xsl:template>
+
+<!-- Only partial support for xbel elements -->
+<xsl:template match="xbel/info|xbel/title|xbel/desc|
+ xbel/alias|xbel/separator">
+ <!-- No op -->
+</xsl:template>
+
+<xsl:template match="folder">
+ <li>
+ <xsl:apply-templates select="title"/>
+ <ul>
+ <xsl:apply-templates select="folder|bookmark"/>
+ </ul>
+ </li>
+</xsl:template>
+
+<xsl:template match="folder/title">
+ <b><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match="bookmark">
+ <li>
+ <a href="{@href}" target="_top">
+ <xsl:apply-templates select="title"/>
+ </a>
+ </li>
+</xsl:template>
+
+<xsl:template match="bookmark/title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="xbel" mode="dynamic">
+ <ul>
+ <xsl:apply-templates mode="dynamic"/>
+ </ul>
+</xsl:template>
+
+<xsl:template match="info" mode="dynamic">
+</xsl:template>
+
+<xsl:template match="folder" mode="dynamic">
+ <li>
+ <xsl:apply-templates select="title" mode="dynamic"/>
+ <ul style="display:none" id="{@id}">
+ <xsl:apply-templates select="folder|bookmark" mode="dynamic"/>
+ </ul>
+ </li>
+</xsl:template>
+
+<xsl:template match="folder/title" mode="dynamic">
+ <b>
+ <span>
+ <xsl:choose>
+ <xsl:when test="../@id">
+ <xsl:attribute name="onClick">
+ <xsl:text>toggleList('</xsl:text>
+ <xsl:value-of select="../@id"/>
+ <xsl:text>')</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="class">exlist</xsl:attribute>
+ <xsl:attribute name="style">color: blue</xsl:attribute>
+ <xsl:apply-templates mode="dynamic"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="dynamic"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ </b>
+</xsl:template>
+
+<xsl:template match="bookmark" mode="dynamic">
+ <li>
+ <a href="{@href}" target="_top">
+ <xsl:apply-templates select="title" mode="dynamic"/>
+ </a>
+ </li>
+</xsl:template>
+
+<xsl:template match="bookmark/title" mode="dynamic">
+ <xsl:apply-templates mode="dynamic"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl
new file mode 100644
index 0000000..f96ebaf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/admon.xsl
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: admon.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="*" mode="admon.graphic.width">
+ <xsl:param name="node" select="."/>
+ <xsl:text>25</xsl:text>
+</xsl:template>
+
+<xsl:template match="note|important|warning|caution|tip">
+ <xsl:choose>
+ <xsl:when test="$admon.graphics != 0">
+ <xsl:call-template name="graphical.admonition"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="nongraphical.admonition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+ <xsl:value-of select="$admon.graphics.path"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='note'">note</xsl:when>
+ <xsl:when test="local-name($node)='warning'">warning</xsl:when>
+ <xsl:when test="local-name($node)='caution'">caution</xsl:when>
+ <xsl:when test="local-name($node)='tip'">tip</xsl:when>
+ <xsl:when test="local-name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$admon.graphics.extension"/>
+</xsl:template>
+
+<xsl:template name="graphical.admonition">
+ <xsl:variable name="admon.type">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:otherwise>Note</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="alt">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$admon.type"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$admon.style != ''">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$admon.type"/>
+ <xsl:if test="title|info/title">
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="(title|info/title)[1]"/>
+ </xsl:if>
+ </xsl:attribute>
+ <tr>
+ <td rowspan="2" align="center" valign="top">
+
+ <img alt="[{$alt}]">
+ <xsl:attribute name="src">
+ <xsl:call-template name="admon.graphic"/>
+ </xsl:attribute>
+ </img>
+ </td>
+ <th align="{$direction.align.start}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:if>
+ </th>
+ </tr>
+ <tr>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="nongraphical.admonition">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$admon.style">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <h3 class="title">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h3>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="note/title"/>
+<xsl:template match="important/title"/>
+<xsl:template match="warning/title"/>
+<xsl:template match="caution/title"/>
+<xsl:template match="tip/title"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl
new file mode 100644
index 0000000..00f2cca
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/annotations.xsl
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:template name="add.annotation.links">
+ <xsl:param name="scripts" select="normalize-space($annotation.js)"/>
+ <xsl:choose>
+ <xsl:when test="contains($scripts, ' ')">
+ <script type="text/javascript" src="{substring-before($scripts, ' ')}"/>
+ <xsl:call-template name="add.annotation.links">
+ <xsl:with-param name="scripts" select="substring-after($scripts, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <script type="text/javascript" src="{$scripts}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation"/>
+
+<xsl:template name="apply-annotations">
+ <xsl:if test="$annotation.support != 0">
+ <!-- do any annotations apply to the context node? -->
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+
+ <xsl:variable name="aids">
+ <xsl:for-each select="//annotation">
+ <xsl:if test="@annotates=$id or starts-with(@annotates, concat($id, ' ')) or contains(@annotates, concat(' ', $id, ' ')) or substring(@annotates, string-length(@annotates)-3) = concat(' ', $id)">
+ <xsl:value-of select="generate-id()"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="normalize-space(@annotations) != ''">
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations" select="normalize-space(@annotations)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$aids != ''">
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids" select="normalize-space($aids)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="annotations-pointed-to">
+ <xsl:param name="annotations"/>
+ <xsl:choose>
+ <xsl:when test="contains($annotations, ' ')">
+ <xsl:variable name="a" select="key('id', substring-before($annotations, ' '))"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations" select="substring-after($annotations, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="a" select="key('id', $annotations)"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="apply-annotations-by-gid">
+ <xsl:param name="gids"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($gids, ' ')">
+ <xsl:variable name="gid" select="substring-before($gids, ' ')"/>
+ <xsl:apply-templates select="key('gid', $gid)" mode="annotation-inline"/>
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids" select="substring-after($gids, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="key('gid', $gids)" mode="annotation-inline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-inline">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a id="anch-{generate-id(.)}" href="#annot-{generate-id(.)}" title="{$title}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="onClick">
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.showPopup('anch-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>'); return false;</xsl:text>
+ </xsl:attribute>
+ <img src="{$annotation.graphic.open}" alt="{$title}"/>
+ </a>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-popup">
+ <div class="annotation-nocss">
+ <p>
+ <a id="annot-{generate-id(.)}"/>
+ <xsl:text>Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>:</xsl:text>
+ </p>
+ </div>
+
+ <div id="popup-{generate-id(.)}" class="annotation-popup">
+ <xsl:if test="string-length(.) &gt; 300">
+ <xsl:attribute name="style">width:400px</xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="annotation-title"/>
+ <div class="annotation-body">
+ <xsl:apply-templates select="*[local-name(.) != 'title']"/>
+ </div>
+ <div class="annotation-close">
+ <a href="#" onclick="popup_{generate-id(.)}.hidePopup();return false;">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <img src="{$annotation.graphic.close}" alt="X"/>
+ </a>
+ </div>
+ </div>
+</xsl:template>
+
+<xsl:template name="annotation-title">
+ <div class="annotation-title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Annotation</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl
new file mode 100644
index 0000000..cfaa447
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kimber.xsl
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="k" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kimber.xsl 8729 2010-07-15 16:43:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+<!-- ==================================================================== -->
+<!-- *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 *** -->
+<!-- ==================================================================== -->
+
+
+<xsl:include href="../common/autoidx-kimber.xsl"/>
+
+<!-- Java sort apparently works only on lang part, not country -->
+<xsl:param name="sort.lang">
+ <xsl:choose>
+ <xsl:when test="contains(concat(/*/@lang, /*/@xml:lang), '-')">
+ <xsl:value-of select="substring-before(concat(/*/@lang, /*/@xml:lang), '-')"/>
+ </xsl:when>
+ <xsl:when test="contains(concat(/*/@lang, /*/@xml:lang), '_')">
+ <xsl:value-of select="substring-before(concat(/*/@lang, /*/@xml:lang), '_')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat(/*/@lang, /*/@xml:lang)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('k:getIndexGroupKey'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Innodata Isogen
+Java extensions for </xsl:text>
+ <xsl:text>internationalized indexes.
+Install those </xsl:text>
+ <xsl:text>extensions, or use a different index method.
+</xsl:text>
+ <xsl:text>For more information, see:
+</xsl:text>
+ <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms" select="//indexterm[count(.|key('k-group', k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical" select="$terms[not(starts-with( k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))), '#NUMERIC' ))]"/>
+
+ <xsl:variable name="others" select="$terms[starts-with( k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))), '#NUMERIC' )]"/>
+
+ <div class="index">
+ <xsl:if test="$others">
+ <div class="indexdev">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others" mode="index-symbol-div">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}" select="k:getIndexGroupSortKey(concat(/*/@lang, /*/@xml:lang), k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical" mode="index-div-kimber">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}" select="k:getIndexGroupSortKey(concat(/*/@lang, /*/@xml:lang), k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))"/>
+ </xsl:apply-templates>
+ </div>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kimber">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))"/>
+
+ <xsl:variable name="label" select="k:getIndexGroupLabel(concat(/*/@lang, /*/@xml:lang), $key)"/>
+
+ <xsl:if test="key('k-group', $label)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="$label"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('k-group', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [1])=1]" mode="index-primary">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))" lang="{$sort.lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl
new file mode 100644
index 0000000..de6eef5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-kosek.xsl
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:i="urn:cz-kosek:functions:index" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:func="http://exslt.org/functions" xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="func exslt" exclude-result-prefixes="func exslt i l k" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kosek.xsl 8725 2010-07-15 08:08:04Z kosek $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+
+<xsl:include href="../common/autoidx-kosek.xsl"/>
+
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="contains($vendor, 'Saxonica')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('i:group-index'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the
+</xsl:text>
+ <xsl:text>index extension functions be imported:
+</xsl:text>
+ <xsl:text> xsl:import href="common/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms" select="//indexterm[count(.|key('group-code', i:group-index(normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <div class="index">
+ <xsl:apply-templates select="$terms" mode="index-div-kosek">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="i:group-index(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))" data-type="number"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kosek">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="i:group-index(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))"/>
+
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:if test="key('group-code', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="i:group-letter($key)"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('group-code', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])=1]" mode="index-primary">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))" lang="{$lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl
new file mode 100644
index 0000000..5d08db6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx-ng.xsl
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-ng.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- You should have this directly in your customization file. -->
+<!-- This file is there only to retain backward compatibility. -->
+<xsl:import href="autoidx-kosek.xsl"/>
+<xsl:param name="index.method">kosek</xsl:param>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl
new file mode 100644
index 0000000..baf4a1d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autoidx.xsl
@@ -0,0 +1,681 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="exslt" exclude-result-prefixes="exslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx.xsl 8516 2009-08-12 02:54:56Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "basic" method derived from Jeni Tennison's work. -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+
+<xsl:variable name="kimber.imported" select="0"/>
+<xsl:variable name="kosek.imported" select="0"/>
+
+<xsl:key name="letter" match="indexterm" use="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1),'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+
+<xsl:key name="primary" match="indexterm" use="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))"/>
+
+<xsl:key name="secondary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)))"/>
+
+<xsl:key name="tertiary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)))"/>
+
+<xsl:key name="endofrange" match="indexterm[@class='endofrange']" use="@startref"/>
+
+<xsl:key name="primary-section" match="indexterm[not(secondary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]))"/>
+
+<xsl:key name="secondary-section" match="indexterm[not(tertiary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]))"/>
+
+<xsl:key name="tertiary-section" match="indexterm[not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]))"/>
+
+<xsl:key name="see-also" match="indexterm[seealso]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, seealso)"/>
+
+<xsl:key name="see" match="indexterm[see]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, see)"/>
+
+<xsl:key name="sections" match="*[@id or @xml:id]" use="@id|@xml:id"/>
+
+
+<xsl:template name="generate-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$index.method = 'kosek'">
+ <xsl:call-template name="generate-kosek-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$index.method = 'kimber'">
+ <xsl:call-template name="generate-kimber-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="generate-basic-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate-basic-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms" select="//indexterm [count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical" select="$terms[contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1))]"/>
+
+ <xsl:variable name="others" select="$terms[not(contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1)))]"/>
+ <div class="index">
+ <xsl:if test="$others">
+ <xsl:choose>
+ <xsl:when test="normalize-space($type) != '' and $others[@type = $type][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:when>
+ <xsl:when test="normalize-space($type) != ''">
+ <!-- Output nothing, as there isn't a match for $other using this $type -->
+ </xsl:when>
+ <xsl:otherwise>
+ <div class="indexdiv">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical[count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-div-basic">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kosek.xsl is imported -->
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kosek.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the
+</xsl:text>
+ <xsl:text>kosek index extensions be imported:
+</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kimber.xsl is imported -->
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kimber.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the
+</xsl:text>
+ <xsl:text>kimber index extensions be imported:
+</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kimber.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-basic">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+
+ <xsl:if test="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <xsl:if test="contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), $key)">
+ <h3>
+ <xsl:value-of select="translate($key, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </h3>
+ </xsl:if>
+ <dl>
+ <xsl:apply-templates select="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary))) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])=1]" mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-symbol-div">
+ <xsl:param name="scope" select="/"/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+
+ <xsl:apply-templates select="key('letter', $key) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[1]) = 1]" mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-primary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))"/>
+ <xsl:variable name="refs" select="key('primary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
+ <dt>
+ <xsl:for-each select="$refs/primary">
+ <xsl:if test="@id or @xml:id">
+ <a id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="primary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('primary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(secondary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, &quot; &quot;, &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, &quot; &quot;, &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-secondary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-secondary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)))"/>
+ <xsl:variable name="refs" select="key('secondary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
+ <dt>
+ <xsl:for-each select="$refs/secondary">
+ <xsl:if test="@id or @xml:id">
+ <a id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="secondary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('secondary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(tertiary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-tertiary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-tertiary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)))"/>
+ <xsl:variable name="refs" select="key('tertiary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
+ <dt>
+ <xsl:for-each select="$refs/tertiary">
+ <xsl:if test="@id or @xml:id">
+ <a id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="tertiary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('tertiary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs/see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/seealso">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="position"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$position = 1">
+ <xsl:value-of select="$term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$number.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="@zone and string(@zone)">
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="normalize-space(@zone)"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]/titleabbrev and $index.prefer.titleabbrev != 0">
+ <xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]" mode="title.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]"/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="."/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:attribute>
+
+ <xsl:value-of select="$title"/> <!-- text only -->
+ </a>
+
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:if test="key('endofrange', $id)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="key('endofrange', $id)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][last()]" mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="separator" select="$range.separator"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="zones"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($zones, ' ')">
+ <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="zone" select="$zones"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-see">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="see"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-seealso">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:for-each select="seealso">
+ <xsl:sort select="translate(., 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <dt>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>)</xsl:text>
+ </dt>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="*" mode="index-title-content">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]" mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template name="index.separator">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$key = 'index.term.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.term.separator != ''">
+ <xsl:copy-of select="$index.term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">term-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.number.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.number.separator != ''">
+ <xsl:copy-of select="$index.number.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">number-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.range.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.range.separator != ''">
+ <xsl:copy-of select="$index.range.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">range-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl
new file mode 100644
index 0000000..a337ec5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/autotoc.xsl
@@ -0,0 +1,663 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autotoc.xsl 8558 2009-12-11 00:33:17Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="toc.listitem.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dt</xsl:when>
+ <xsl:otherwise>li</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<!-- this is just hack because dl and ul aren't completely isomorphic -->
+<xsl:variable name="toc.dd.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dd</xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:template name="make.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="toc.title">
+ <xsl:if test="$toc.title.p">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="toc-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$manual.toc != ''">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="toc" select="document($manual.toc, .)"/>
+ <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
+ <xsl:if test="$tocentry and $tocentry/*">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:if test="$nodes.plus">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="$nodes.plus" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$nodes">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="set.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="book|setindex"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="division.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="part|reference |preface|chapter|appendix |article |bibliography|glossary|index |refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="section|sect1 |simplesect[$simplesect.in.toc != 0] |refentry |article|bibliography|glossary |appendix|index |bridgehead[not(@renderas) and $bridgehead.in.toc != 0] |.//bridgehead[@renderas='sect1' and $bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc.separator">
+ <!-- Customize to output something between
+ component.toc and first output -->
+</xsl:template>
+
+<xsl:template name="section.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="section|sect1|sect2|sect3|sect4|sect5|refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="section.toc.separator">
+ <!-- Customize to output something between
+ section.toc and first output -->
+</xsl:template>
+<!-- ==================================================================== -->
+
+<xsl:template name="subtoc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="subtoc">
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:apply-templates mode="toc" select="$nodes.plus">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="toc" select="$nodes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'section'">
+ <xsl:value-of select="count(ancestor::section) + 1"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'sect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'sect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'sect4'">4</xsl:when>
+ <xsl:when test="local-name(.) = 'sect5'">5</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'simplesect'">
+ <!-- sigh... -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'section'">
+ <xsl:value-of select="count(ancestor::section)"/>
+ </xsl:when>
+ <xsl:when test="local-name(..) = 'sect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'sect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'sect3'">4</xsl:when>
+ <xsl:when test="local-name(..) = 'sect4'">5</xsl:when>
+ <xsl:when test="local-name(..) = 'sect5'">6</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect3'">4</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="subtoc.list">
+ <xsl:choose>
+ <xsl:when test="$toc.dd.type = ''">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.dd.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ <xsl:if test="$toc.listitem.type = 'li' and $toc.section.depth &gt; $depth and ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) ) and $toc.max.depth &gt; $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+ </xsl:element>
+ <xsl:if test="$toc.listitem.type != 'li' and $toc.section.depth &gt; $depth and ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) ) and $toc.max.depth &gt; $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc.line">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="depth" select="1"/>
+ <xsl:param name="depth.from.context" select="8"/>
+
+ <span>
+ <xsl:attribute name="class"><xsl:value-of select="local-name(.)"/></xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is zero, then output the label -->
+ <!-- * before the hyperlinked title (as the DSSSL stylesheet does) -->
+ <xsl:if test="$autotoc.label.in.hyperlink = 0">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$toc-context"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is non-zero, then output the label -->
+ <!-- * as part of the hyperlinked title -->
+ <xsl:if test="not($autotoc.label.in.hyperlink = 0)">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </span>
+</xsl:template>
+
+<xsl:template match="book" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="part|reference |preface|chapter|appendix |article |bibliography|glossary|index |refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="setindex" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the setindex tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="appendix|chapter|article |index|glossary|bibliography |preface|reference|refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix|article" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section|sect1 |simplesect[$simplesect.in.toc != 0] |refentry |glossary|bibliography|index |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect1" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect2 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect2" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect3 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect3" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect4 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect4" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect5 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect5" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="simplesect" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section|refentry |simplesect[$simplesect.in.toc != 0] |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:if test="$bridgehead.in.toc != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="bibliography|glossary" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="index" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the index tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="refmeta" select=".//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select=".//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="titleabbrev.markup"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <span class="refentrytitle">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:copy-of select="$title"/>
+ </a>
+ </span>
+ <span class="refpurpose">
+ <xsl:if test="$annotate.toc != 0">
+ <!-- * DocBook 5 says inlinemediaobject (among other things) -->
+ <!-- * is allowed in refpurpose; so we need to run -->
+ <!-- * apply-templates on refpurpose here, instead of value-of -->
+ <xsl:apply-templates select="refnamediv/refpurpose"/>
+ </xsl:if>
+ </span>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="title" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template name="manual-toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="tocentry"/>
+
+ <!-- be careful, we don't want to change the current document to the other tree! -->
+
+ <xsl:if test="$tocentry">
+ <xsl:variable name="node" select="key('id', $tocentry/@linkend)"/>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="$node" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$node"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+
+ <xsl:if test="$tocentry/*">
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="$tocentry/following-sibling::*">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/following-sibling::*[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="list.of.titles">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="titles" select="'table'"/>
+ <xsl:param name="nodes" select=".//table"/>
+
+ <xsl:if test="$nodes">
+ <div class="list-of-{$titles}s">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="toc-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">ListofTables</xsl:when>
+ <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+ <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">ListofTables</xsl:when>
+ <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+ <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example|equation|procedure" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+</xsl:template>
+
+<!-- Used only if qanda.in.toc parameter is non-zero -->
+<xsl:template match="qandaset" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="qandadiv | qandaentry"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="qandadiv|qandaentry" mode="toc">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl
new file mode 100644
index 0000000..7713409
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio-iso690.xsl
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 6402 2006-11-12 08:23:21Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ The original code for processing bibliography in ISO690 style
+ was provided by Jana Dvorakova <jana4u@seznam.cz>
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep -->
+<xsl:param name="biblioentry.alt.primary.seps" select="0"/>
+
+<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 -->
+<xsl:param name="biblioentry.primary.count" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="iso690.makecitation">
+<!-- Types of resources -->
+ <xsl:choose>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM -->
+ <!-- same as Monographs -->
+ <xsl:when test="./@role='messagesystem'">
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:when>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES -->
+ <!-- same as Contributions to Monographs -->
+ <xsl:when test="./@role='message'">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- SERIALS -->
+ <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn">
+ <xsl:call-template name="iso690.serial"/>
+ </xsl:when>
+
+ <!-- PARTS OF MONOGRAPHS -->
+ <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])">
+ <xsl:call-template name="iso690.monogr.part"/>
+ </xsl:when>
+
+ <!-- CONTRIBUTIONS TO MONOGRAPHS -->
+ <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- ARTICLES, ETC., IN SERIALS -->
+ <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')">
+ <xsl:call-template name="iso690.article"/>
+ </xsl:when>
+
+ <!-- PATENT DOCUMENTS -->
+ <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])">
+ <xsl:call-template name="iso690.patent"/>
+ </xsl:when>
+
+ <!-- MONOGRAPHS -->
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- MONOGRAPHS -->
+<xsl:template name="iso690.monogr">
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Extent -->
+ <xsl:call-template name="iso690.extent"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.isbn"/>
+</xsl:template>
+
+<!-- SERIALS -->
+<xsl:template name="iso690.serial">
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Responsibility [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/>
+ </xsl:call-template>
+ <!-- Issue designation (date and/or num) [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.issuing"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.issn"/>
+</xsl:template>
+
+<!-- PARTS OF MONOGRAPHS -->
+<xsl:template name="iso690.monogr.part">
+ <!-- Primary responsibility of host document -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium of host document -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility of host document [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./volumenum"/>
+ </xsl:call-template>
+ <!-- Numeration of the part [nonEL]-->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.partnr"/>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.part.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Numeration within host document [EL] -->
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- CONTRIBUTIONS TO MONOGRAPHS -->
+<xsl:template name="iso690.paper.mon">
+<!-- Contribution -->
+ <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/>
+<!-- In -->
+ <xsl:text>In </xsl:text>
+<!-- Host -->
+ <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.part">
+<!-- Contribution -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.book">
+<!-- Host -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.paper.pub"/>
+ <!-- Numeration within host document [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ARTICLES, ETC., IN SERIALS -->
+<xsl:template name="iso690.article">
+<!-- Article -->
+ <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/>
+<!-- Serial -->
+ <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.art">
+<!-- Article -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:if test="not(../*/bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.jour">
+<!-- Serial -->
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/>
+ </xsl:call-template>
+ <!-- Number designation [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.article.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.issn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- PATENT DOCUMENTS -->
+<xsl:template name="iso690.patent">
+ <!-- Primary responsibility (applicant) -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title of the invention -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Identification -->
+ <xsl:call-template name="iso690.pat.ident"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Elements -->
+
+<!-- Primary responsibility -->
+<xsl:template name="iso690.primary">
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./authorgroup/author|./author">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/editor|./editor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/corpauthor|./corpauthor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="(./firstname)and(./surname)">
+ <xsl:call-template name="iso690.author"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author.list">
+ <xsl:param name="person.list" select="author|corpauthor|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="group" select="./authorgroup[@role='many']"/>
+ <xsl:param name="many" select="0"/>
+
+ <xsl:param name="primary.many">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.editor">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$person.count &lt; 4 and not($group)">
+ <xsl:call-template name="iso690.author">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1 and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.two.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.last.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.more.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($count = $person.count)">
+ <xsl:choose>
+ <xsl:when test="$many!=0">
+ <xsl:if test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ </xsl:if>
+ <xsl:value-of select="$primary.many"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$primary.many"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ <xsl:value-of select="$primary.sep"/>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='corpauthor'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count]//firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="many" select="$many"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="($biblioentry.primary.count&gt;=3) and ($person.count&gt;=3)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]|$person.list[3]"/>
+ <xsl:with-param name="person.count" select="3"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($biblioentry.primary.count&gt;1) and ($person.count&gt;1)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/>
+ <xsl:with-param name="person.count" select="2"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]"/>
+ <xsl:with-param name="person.count" select="1"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="lastfirst.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="name($node)!='corpauthor'">
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/>
+ </span>
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:value-of select="$lastfirst.sep"/>
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Title and Type of medium -->
+<xsl:template name="iso690.title">
+ <xsl:param name="medium" select="./bibliomisc[@role='medium']"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:apply-templates mode="iso690.mode" select="./title">
+ <xsl:with-param name="medium" select="$medium"/>
+ <xsl:with-param name="italic" select="$italic"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="title" mode="iso690.mode">
+ <xsl:param name="medium"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$italic=1">
+ <xsl:call-template name="iso690.italic.title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.make.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$medium">
+ <xsl:value-of select="$medium1"/>
+ <xsl:apply-templates mode="iso690.mode" select="$medium"/>
+ <xsl:value-of select="$medium2"/>
+ </xsl:if>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="iso690.italic.title">
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="iso690.make.title"/>
+ </em>
+</xsl:template>
+
+<xsl:template name="iso690.make.title">
+ <xsl:param name="submaintitle.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:if test="../subtitle">
+ <xsl:value-of select="$submaintitle.sep"/>
+ <xsl:apply-templates mode="iso690.mode" select="../subtitle"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Subordinate responsibility -->
+<xsl:template name="iso690.secondary">
+ <xsl:param name="secondary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="secondary.person.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:for-each select="./bibliomisc[@role='secondary']">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ <xsl:choose>
+ <xsl:when test="position()=count(../bibliomisc[@role='secondary'])">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$secondary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$secondary.person.sep"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Edition -->
+<xsl:template name="iso690.edition">
+ <xsl:param name="after"/>
+ <xsl:param name="edition.serial.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="string($after)!=''">
+ <xsl:apply-templates mode="iso690.mode" select="./edition">
+ <xsl:with-param name="sep" select="$edition.serial.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./edition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="edition" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Issue designation (date and/or num) -->
+<xsl:template name="iso690.issuing">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing']">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./volumenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.issuedate">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'][2]">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Numeration of the part -->
+<xsl:template name="iso690.partnr">
+ <xsl:param name="partnr.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$partnr.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+<xsl:template name="iso690.pub">
+ <xsl:param name="onlydate" select="0"/>
+ <xsl:param name="placesep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="pubsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="endsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$pubsep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="$onlydate=1">
+ <xsl:call-template name="iso690.location">
+ <xsl:with-param name="onlypages" select="1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.paper.pub">
+ <xsl:param name="spec.pubinfo.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumnum|./issuenum|./pagenums">
+ <xsl:call-template name="iso690.pub">
+ <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.pub"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.data">
+ <xsl:param name="sep"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/>
+ <xsl:choose>
+ <xsl:when test="./date[@role='cit']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./date[@role='upd']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="publisher/address/city|publishername" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="0"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pubdate|copyright/year" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="1"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="name(.)!='pubdate'">
+ <xsl:value-of select="'&#169;'"/><!-- copyright -->
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:if test="$upd!=0">
+ <xsl:choose>
+ <xsl:when test="name(.)='pubdate'">
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(../date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.space">
+ <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="$text='-'">
+ <xsl:value-of select="' '"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Date of update/revision -->
+<xsl:template match="date[@role='upd']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$sep"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Date of citation -->
+<xsl:template match="date[@role='cit']" mode="iso690.mode">
+ <xsl:param name="datecit1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$datecit1"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$datecit2"/>
+</xsl:template>
+
+<!-- Extent -->
+<xsl:template name="iso690.extent">
+ <xsl:param name="extent.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums">
+ <xsl:with-param name="sep" select="$extent.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Location within host -->
+<xsl:template name="iso690.part.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:when test="./bibliomisc[@role='sectitle']">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.article.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="locs.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])">
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="iso690.location"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="volumenum|issuenum" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Series -->
+<xsl:template name="iso690.serie">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/>
+</xsl:template>
+
+<!-- Notes -->
+<xsl:template name="iso690.notice">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode">
+ <xsl:param name="notice.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$notice.sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Avaibility and access -->
+<xsl:template name="iso690.access">
+ <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']">
+ <xsl:choose>
+ <xsl:when test="position()=1">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select=".">
+ <xsl:with-param name="firstacc" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode">
+ <xsl:param name="link1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="link2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$link1"/>
+ <xsl:call-template name="ulink"/>
+ <xsl:value-of select="$link2"/>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode">
+ <xsl:param name="firstacc" select="1"/>
+ <xsl:param name="access">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="acctoo">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="onwww">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="oninet">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.end">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$firstacc=1">
+ <xsl:value-of select="$access"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$acctoo"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="(./ulink)and(string(./ulink)=string(.))">
+ <xsl:choose>
+ <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))">
+ <xsl:value-of select="$onwww"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$oninet"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="(./ulink)and(string(./ulink)!=string(.))">
+ <xsl:value-of select="text()[1]"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="text()[1]"/>
+ <xsl:with-param name="sep" select="$access.end"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$access.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISBN -->
+<xsl:template name="iso690.isbn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='isbn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/>
+ </xsl:when>
+ <xsl:when test="./isbn">
+ <xsl:apply-templates mode="iso690.mode" select="./isbn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode">
+ <xsl:param name="isbn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$isbn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISSN -->
+<xsl:template name="iso690.issn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='issn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/>
+ </xsl:when>
+ <xsl:when test="./issn">
+ <xsl:apply-templates mode="iso690.mode" select="./issn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode">
+ <xsl:param name="issn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$issn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Identification of patent document -->
+<xsl:template name="iso690.pat.ident">
+ <xsl:param name="patdate.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./address/country"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/>
+ <xsl:choose>
+ <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$patdate.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Country or issuing office -->
+<xsl:template match="address/country" mode="iso690.mode">
+ <xsl:param name="patcountry.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template>
+ </xsl:param>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates mode="iso690.mode"/>
+ </em>
+ <xsl:value-of select="$patcountry.sep"/>
+</xsl:template>
+
+<!-- Kind of patent document -->
+<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode">
+ <xsl:param name="pattype.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template>
+ </xsl:param>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates mode="iso690.mode"/>
+ </em>
+ <xsl:value-of select="$pattype.sep"/>
+</xsl:template>
+
+<!-- Number -->
+<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode">
+ <xsl:param name="patnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$patnum.sep"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Supplementary templates -->
+
+<xsl:template name="iso690.endsep">
+ <xsl:param name="text"/>
+ <xsl:param name="sep" select=". "/>
+ <xsl:choose>
+ <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)">
+ <xsl:value-of select="$sep"/>
+ </xsl:when>
+ <xsl:when test="substring($text,string-length($text))=' '">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="' '"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="iso690.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl
new file mode 100644
index 0000000..18ee8e2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/biblio.xsl
@@ -0,0 +1,1240 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliography">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="bibliography.titlepage"/>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliography/bibliographyinfo"/>
+<xsl:template match="bibliography/info"/>
+<xsl:template match="bibliography/title"/>
+<xsl:template match="bibliography/subtitle"/>
+<xsl:template match="bibliography/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliodiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliodiv/title">
+ <h3>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliolist">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[not(self::blockinfo) and not(self::info) and not(self::title) and not(self::titleabbrev) and not(self::biblioentry) and not(self::bibliomixed)]"/>
+ <xsl:apply-templates select="biblioentry|bibliomixed"/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="biblioentry">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography// *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:choose>
+ <xsl:when test="$bibliography.style = 'iso690'">
+ <xsl:call-template name="iso690.makecitation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomixed">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography// *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$label"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="biblioentry.label">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:text>[</xsl:text>
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node/child::*[1]) = 'abbrev'">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="$node/abbrev[1]"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xreflabel">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xreflabel"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xml:id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xml:id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- nop --></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliography.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliography.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="address" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artheader|articleinfo|info" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name.list"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioset/title|biblioset/citetitle" mode="bibliography.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bookbiblio" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collab" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confdates" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="copyright" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="bibliography.mode"/>
+ <xsl:if test="holder">
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="bibliography.mode"/>
+ </xsl:if>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="year" mode="bibliography.mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="corpauthor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliography.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesinfo" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates mode="bibliography.mode"/></em>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- See FR #1934434 and http://doi.org -->
+<xsl:template match="biblioid[@class='doi']" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliomixed.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliomixed.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="address" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bibliomset" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset/title|bibliomset/citetitle" mode="bibliomixed.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+
+<xsl:template match="collab" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="copyright" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliomixed.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- See FR #1934434 and http://doi.org -->
+<xsl:template match="biblioid[@class='doi']" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl
new file mode 100644
index 0000000..fa91c31
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/block.xsl
@@ -0,0 +1,535 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: block.xsl 8831 2010-08-13 17:08:49Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- What should we do about styling blockinfo? -->
+
+<xsl:template match="blockinfo|info">
+ <!-- suppress -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="block.object">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="para">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:if test="position() = 1 and parent::listitem">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="parent::listitem"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="paragraph">
+ <xsl:param name="class" select="''"/>
+ <xsl:param name="content"/>
+
+ <xsl:variable name="p">
+ <p>
+ <xsl:choose>
+ <xsl:when test="$class != ''">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="locale.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$content"/>
+ </p>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$html.cleanup != 0">
+ <xsl:call-template name="unwrap.p">
+ <xsl:with-param name="p" select="$p"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <!-- see also listitem/simpara in lists.xsl -->
+ <p>
+ <xsl:call-template name="locale.html.attributes"/>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Only use title from info -->
+<xsl:template match="formalpara/info">
+ <xsl:apply-templates select="title"/>
+</xsl:template>
+
+<xsl:template match="formalpara/title|formalpara/info/title">
+ <xsl:variable name="titleStr">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:variable name="lastChar">
+ <xsl:if test="$titleStr != ''">
+ <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="formalpara-title">
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != '' and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != '' and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="formalpara/para">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="blockquote">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="attribution">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" class="blockquote" summary="Block quote">
+ <tr>
+ <td valign="top">&#160;</td>
+ <td valign="top">
+ <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/>
+ </td>
+ <td valign="top">&#160;</td>
+ </tr>
+ <tr>
+ <td valign="top">&#160;</td>
+ <td colspan="2" align="{$direction.align.end}" valign="top">
+ <xsl:text>--</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <blockquote>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </blockquote>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="blockquote/title|blockquote/info/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="blockquote-title">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div class="blockquote-title">
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates/>
+ </strong>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Use an em dash per Chicago Manual of Style and https://sourceforge.net/tracker/index.php?func=detail&aid=2793878&group_id=21935&atid=373747 -->
+<xsl:template match="epigraph">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates select="para|simpara|formalpara|literallayout"/>
+ <xsl:if test="attribution">
+ <div class="attribution">
+ <span>&#8212;<xsl:apply-templates select="attribution"/></span>
+ </div>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="attribution">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="abstract|sidebar">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="sidebar.titlepage"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title|sidebar/title">
+</xsl:template>
+
+<xsl:template match="sidebar/sidebarinfo|sidebar/info"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="msgset">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="simplemsgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msg">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgmain">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgmain/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgmain-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgsub">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgsub/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgsub-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgrel">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgrel/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgrel-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgtext">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msginfo">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msglevel">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msglevel">
+ <span class="msglevel-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </strong>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgorig">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgorig">
+ <span class="msgorig-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </strong>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgaud">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgaud">
+ <span class="msgaud-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </strong>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgexplan">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgexplan/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgexplan">
+ <span class="msgexplan-title">
+ <xsl:apply-templates/>
+ </span>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates/>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="revhistory">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <table border="0" width="100%" summary="Revision history">
+ <tr>
+ <th align="{$direction.align.start}" valign="top" colspan="3">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </strong>
+ </th>
+ </tr>
+ <xsl:apply-templates/>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="revhistory/revision">
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber"/>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}">
+ <xsl:apply-templates select="$revdate"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="count($revauthor)=0">
+ <td align="{$direction.align.start}">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">nbsp</xsl:with-param>
+ </xsl:call-template>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td align="{$direction.align.start}">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="{$direction.align.start}" colspan="3">
+ <xsl:apply-templates select="$revremark"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/date">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials[1]" priority="2">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revremark">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="ackno|acknowledgements[parent::article]">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="highlights">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl
new file mode 100644
index 0000000..1b3f532
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/callout.xsl
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="sverb xverb lxslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: callout.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xverb" functions="insertCallouts"/>
+
+<xsl:template match="programlistingco|screenco">
+ <xsl:variable name="verbatim" select="programlisting|screen"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $callouts.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:apply-templates select="$verbatim">
+ <xsl:with-param name="suppress-numbers" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="rtf-with-callouts">
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:insertCallouts')">
+ <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:insertCallouts')">
+ <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertCallouts function is available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$verbatim/@linenumbering = 'numbered' and $linenumbering.extension != '0'">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf-with-callouts"/>
+ <xsl:with-param name="pi.context" select="programlisting|screen"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$rtf-with-callouts"/>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="areaspec|areaset|area">
+</xsl:template>
+
+<xsl:template match="areaset" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="area" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="co" name="co">
+ <!-- Support a single linkend in HTML -->
+ <xsl:variable name="targets" select="key('id', @linkends)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="coref">
+ <!-- tricky; this relies on the fact that we can process the "co" that's -->
+ <!-- "over there" as if it were "right here" -->
+
+ <xsl:variable name="co" select="key('id', @linkend)"/>
+ <xsl:choose>
+ <xsl:when test="not($co)">
+ <xsl:message>
+ <xsl:text>Error: coref link is broken: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="local-name($co) != 'co'">
+ <xsl:message>
+ <xsl:text>Error: coref doesn't point to a co: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$co"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="co" mode="callout-bug">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:number count="co" level="any" from="programlisting|screen|literallayout|synopsis" format="1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="callout-bug">
+ <xsl:param name="conum" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.graphics != 0 and $conum &lt;= $callout.graphics.number.limit">
+ <img src="{$callout.graphics.path}{$conum}{$callout.graphics.extension}" alt="{$conum}"/>
+ </xsl:when>
+ <xsl:when test="$callout.unicode != 0 and $conum &lt;= $callout.unicode.number.limit">
+ <xsl:choose>
+ <xsl:when test="$callout.unicode.start.character = 10102">
+ <xsl:choose>
+ <xsl:when test="$conum = 1">&#10102;</xsl:when>
+ <xsl:when test="$conum = 2">&#10103;</xsl:when>
+ <xsl:when test="$conum = 3">&#10104;</xsl:when>
+ <xsl:when test="$conum = 4">&#10105;</xsl:when>
+ <xsl:when test="$conum = 5">&#10106;</xsl:when>
+ <xsl:when test="$conum = 6">&#10107;</xsl:when>
+ <xsl:when test="$conum = 7">&#10108;</xsl:when>
+ <xsl:when test="$conum = 8">&#10109;</xsl:when>
+ <xsl:when test="$conum = 9">&#10110;</xsl:when>
+ <xsl:when test="$conum = 10">&#10111;</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Don't know how to generate Unicode callouts </xsl:text>
+ <xsl:text>when $callout.unicode.start.character is </xsl:text>
+ <xsl:value-of select="$callout.unicode.start.character"/>
+ </xsl:message>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl
new file mode 100644
index 0000000..2e70e0e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/changebars.xsl
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: changebars.xsl 8128 2008-09-29 17:16:10Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<xsl:import href="docbook.xsl"/>
+
+<xsl:param name="show.revisionflag" select="'1'"/>
+
+<xsl:template name="system.head.content">
+<xsl:param name="node" select="."/>
+
+<style type="text/css">
+<xsl:text>
+div.added { background-color: #ffff99;
+ text-decoration: underline; }
+div.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+div.changed { background-color: #99ff99; }
+div.off { }
+
+span.added { background-color: #ffff99;
+ text-decoration: underline; }
+span.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+span.changed { background-color: #99ff99; }
+span.off { }
+</xsl:text>
+</style>
+</xsl:template>
+
+<xsl:template match="*[@revisionflag]">
+ <xsl:call-template name="block.or.inline.revision"/>
+</xsl:template>
+
+<xsl:template name="block.or.inline.revision">
+ <xsl:param name="revisionflag" select="@revisionflag"/>
+
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'para' or local-name(.) = 'formalpara' or local-name(.) = 'simpara' or local-name(.) = 'simplesect' or local-name(.) = 'section' or local-name(.) = 'sect1' or local-name(.) = 'sect2' or local-name(.) = 'sect3' or local-name(.) = 'sect4' or local-name(.) = 'sect5' or local-name(.) = 'chapter' or local-name(.) = 'preface' or local-name(.) = 'itemizedlist' or local-name(.) = 'orderedlist' or local-name(.) = 'variablelist' or local-name(.) = 'varlistentry' or local-name(.) = 'informaltable' or local-name(.) = 'informalexample' or local-name(.) = 'note' or local-name(.) = 'example' or local-name(.) = 'mediaobject' or local-name(.) = 'sidebar' or local-name(.) = 'glossary' or local-name(.) = 'glossentry' or local-name(.) = 'bibliography' or local-name(.) = 'index' or local-name(.) = 'appendix'">
+ <div class="{$revisionflag}">
+ <xsl:apply-imports/>
+ </div>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'phrase' or local-name(.) = 'ulink' or local-name(.) = 'link' or local-name(.) = 'olink' or local-name(.) = 'inlinemediaobject' or local-name(.) = 'filename' or local-name(.) = 'literal' or local-name(.) = 'member' or local-name(.) = 'term' or local-name(.) = 'guilabel' or local-name(.) = 'glossterm' or local-name(.) = 'sgmltag' or local-name(.) = 'tag' or local-name(.) = 'quote' or local-name(.) = 'emphasis' or local-name(.) = 'command' or local-name(.) = 'xref'">
+ <span class="{$revisionflag}">
+ <xsl:apply-imports/>
+ </span>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'listitem' or local-name(.) = 'entry' or local-name(.) = 'title'">
+ <!-- nop; these are handled directly in the stylesheet -->
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Revisionflag on unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> (Assuming block)</xsl:text>
+ </xsl:message>
+ <div class="{$revisionflag}">
+ <xsl:apply-imports/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl
new file mode 100644
index 0000000..7c0e81a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-changebars.xsl
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl cf">
+
+<!-- ********************************************************************
+ $Id: chunk-changebars.xsl 8399 2009-04-08 07:37:42Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This file is a variant of chunk.xsl, to be used for generating chunked
+ output with highlighting based on change markup. -->
+
+<xsl:import href="changebars.xsl"/>
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- This customization of "process-chunk-element" is needed in order to make change
+ highlighting be inherited by chunked children of an element with change markup. -->
+<xsl:template name="process-chunk-element">
+ <xsl:param name="content">
+ <xsl:choose>
+
+ <xsl:when test="ancestor-or-self::*[@revisionflag] and $show.revisionflag != 0">
+ <xsl:variable name="revisionflag" select="ancestor-or-self::*[@revisionflag][1]/@revisionflag"/>
+ <xsl:call-template name="block.or.inline.revision">
+ <xsl:with-param name="revisionflag" select="$revisionflag"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-imports/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv" select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv" select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:include href="chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl
new file mode 100644
index 0000000..4682df5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-code.xsl
@@ -0,0 +1,645 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl cf ng db" version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 8596 2010-03-20 04:36:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)&gt;0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1 or self::sect2 or self::sect3 or self::sect4 or self::sect5 or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="generate.css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |sect1|sect2|sect3|sect4|sect5 |section |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon" mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index" mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl
new file mode 100644
index 0000000..88c719b
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk-common.xsl
@@ -0,0 +1,1561 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl cf ng db">
+
+<!-- ********************************************************************
+ $Id: chunk-common.xsl 8551 2009-12-07 06:03:50Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="onechunk" select="0"/>
+<xsl:param name="refentry.separator" select="0"/>
+<xsl:param name="chunk.fast" select="0"/>
+
+<xsl:key name="genid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:variable name="chunk.hierarchy">
+ <xsl:if test="$chunk.fast != 0">
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:message>Computing chunks...</xsl:message>
+ <xsl:apply-templates select="/*" mode="find.chunks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Fast chunking requires exsl:node-set(). </xsl:text>
+ <xsl:text>Using "slow" chunking.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv" select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv" select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-chunk">
+ <xsl:param name="prev" select="."/>
+ <xsl:param name="next" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:message>
+ <xsl:text>Error </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> is not a chunk!</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-first-section-with-parent">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <!-- These xpath expressions are really hairy. The trick is to pick sections -->
+ <!-- that are not first children and are not the children of first children -->
+
+ <!-- Break these variables into pieces to work around
+ http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6063 -->
+
+ <xsl:variable name="prev-v1" select="(ancestor::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |ancestor::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |ancestor::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |ancestor::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |ancestor::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |ancestor::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev-v2" select="(preceding::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |preceding::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |preceding::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |preceding::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |preceding::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |preceding::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::section and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev" select="(preceding::book[1] |preceding::preface[1] |preceding::chapter[1] |preceding::appendix[1] |preceding::part[1] |preceding::reference[1] |preceding::refentry[1] |preceding::colophon[1] |preceding::article[1] |preceding::bibliography[parent::article or parent::book or parent::part][1] |preceding::glossary[parent::article or parent::book or parent::part][1] |preceding::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |preceding::setindex[$generate.index != 0][1] |ancestor::set |ancestor::book[1] |ancestor::preface[1] |ancestor::chapter[1] |ancestor::appendix[1] |ancestor::part[1] |ancestor::reference[1] |ancestor::article[1] |$prev-v1 |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1" select="(following::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |following::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |following::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |following::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |following::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |following::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::section and not(ancestor::section[not(preceding-sibling::section)])][1])[1]"/>
+
+ <xsl:variable name="next-v2" select="(descendant::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |descendant::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |descendant::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |descendant::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |descendant::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |descendant::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::section and not(ancestor::section[not(preceding-sibling::section)])])[1]"/>
+
+ <xsl:variable name="next" select="(following::book[1] |following::preface[1] |following::chapter[1] |following::appendix[1] |following::part[1] |following::reference[1] |following::refentry[1] |following::colophon[1] |following::bibliography[parent::article or parent::book or parent::part][1] |following::glossary[parent::article or parent::book or parent::part][1] |following::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |following::article[1] |following::setindex[$generate.index != 0][1] |descendant::book[1] |descendant::preface[1] |descendant::chapter[1] |descendant::appendix[1] |descendant::article[1] |descendant::bibliography[parent::article or parent::book or parent::part][1] |descendant::glossary[parent::article or parent::book or parent::part][1] |descendant::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |descendant::colophon[1] |descendant::setindex[$generate.index != 0][1] |descendant::part[1] |descendant::reference[1] |descendant::refentry[1] |$next-v1 |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-all-sections">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="prev-v1" select="(preceding::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/>
+
+ <xsl:variable name="prev-v2" select="(ancestor::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/>
+
+ <xsl:variable name="prev" select="(preceding::book[1] |preceding::preface[1] |preceding::chapter[1] |preceding::appendix[1] |preceding::part[1] |preceding::reference[1] |preceding::refentry[1] |preceding::colophon[1] |preceding::article[1] |preceding::bibliography[parent::article or parent::book or parent::part][1] |preceding::glossary[parent::article or parent::book or parent::part][1] |preceding::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |preceding::setindex[$generate.index != 0][1] |ancestor::set |ancestor::book[1] |ancestor::preface[1] |ancestor::chapter[1] |ancestor::appendix[1] |ancestor::part[1] |ancestor::reference[1] |ancestor::article[1] |$prev-v1 |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1" select="(following::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/>
+
+ <xsl:variable name="next-v2" select="(descendant::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/>
+
+ <xsl:variable name="next" select="(following::book[1] |following::preface[1] |following::chapter[1] |following::appendix[1] |following::part[1] |following::reference[1] |following::refentry[1] |following::colophon[1] |following::bibliography[parent::article or parent::book or parent::part][1] |following::glossary[parent::article or parent::book or parent::part][1] |following::index[$generate.index != 0] [parent::article or parent::book][1] |following::article[1] |following::setindex[$generate.index != 0][1] |descendant::book[1] |descendant::preface[1] |descendant::chapter[1] |descendant::appendix[1] |descendant::article[1] |descendant::bibliography[parent::article or parent::book][1] |descendant::glossary[parent::article or parent::book or parent::part][1] |descendant::index[$generate.index != 0] [parent::article or parent::book][1] |descendant::colophon[1] |descendant::setindex[$generate.index != 0][1] |descendant::part[1] |descendant::reference[1] |descendant::refentry[1] |$next-v1 |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:if test="$chunk.tocs.and.lots.has.title != 0">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ </xsl:if>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="in.other.chunk">
+ <xsl:param name="chunk" select="."/>
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>in.other.chunk: </xsl:text>
+ <xsl:value-of select="name($chunk)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$chunk = $node"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$is.chunk"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$chunk = $node">0</xsl:when>
+ <xsl:when test="$is.chunk = 1">1</xsl:when>
+ <xsl:when test="count($node) = 0">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$chunk"/>
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="count.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+ <xsl:param name="count" select="0"/>
+
+<!--
+ <xsl:message>
+ <xsl:text>count.footnotes.in.this.chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+
+<!--
+ <xsl:message>process.footnotes.in.this.chunk</xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$footnotes[1]" mode="process.footnote.mode"/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="fcount">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> fcount: </xsl:text>
+ <xsl:value-of select="$fcount"/>
+ </xsl:message>
+-->
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="$fcount &gt; 0">
+ <div class="footnotes">
+ <br/>
+ <hr/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn&#8217;t support the user-interface
+ techniques used to make them appear as &#8216;popups&#8217; on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation" mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+ <xsl:if test="$is.chunk = 1">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <!-- ==================================================================== -->
+ <!-- What's a chunk?
+
+ The root element
+ appendix
+ article
+ bibliography in article or part or book
+ book
+ chapter
+ colophon
+ glossary in article or part or book
+ index in article or part or book
+ part
+ preface
+ refentry
+ reference
+ sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth
+ section if position()>1 && depth < chunk.section.depth
+ set
+ setindex
+ -->
+ <!-- ==================================================================== -->
+
+<!--
+ <xsl:message>
+ <xsl:text>chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> csd: </xsl:text>
+ <xsl:value-of select="$chunk.section.depth"/>
+ <xsl:text> cfs: </xsl:text>
+ <xsl:value-of select="$chunk.first.sections"/>
+ <xsl:text> ps: </xsl:text>
+ <xsl:value-of select="count($node/parent::section)"/>
+ <xsl:text> prs: </xsl:text>
+ <xsl:value-of select="count($node/preceding-sibling::section)"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$node/parent::*/processing-instruction('dbhtml')[normalize-space(.) = 'stop-chunking']">0</xsl:when>
+ <xsl:when test="not($node/parent::*)">1</xsl:when>
+
+ <xsl:when test="local-name($node) = 'sect1' and $chunk.section.depth &gt;= 1 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect1) &gt; 0)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect2' and $chunk.section.depth &gt;= 2 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect2) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect3' and $chunk.section.depth &gt;= 3 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect3) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect4' and $chunk.section.depth &gt;= 4 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect4) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect5' and $chunk.section.depth &gt;= 5 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect5) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'section' and $chunk.section.depth &gt;= count($node/ancestor::section)+1 and ($chunk.first.sections != 0 or count($node/preceding-sibling::section) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="local-name($node)='preface'">1</xsl:when>
+ <xsl:when test="local-name($node)='chapter'">1</xsl:when>
+ <xsl:when test="local-name($node)='appendix'">1</xsl:when>
+ <xsl:when test="local-name($node)='article'">1</xsl:when>
+ <xsl:when test="local-name($node)='part'">1</xsl:when>
+ <xsl:when test="local-name($node)='reference'">1</xsl:when>
+ <xsl:when test="local-name($node)='refentry'">1</xsl:when>
+ <xsl:when test="local-name($node)='index' and ($generate.index != 0 or count($node/*) &gt; 0) and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <xsl:when test="local-name($node)='bibliography' and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <xsl:when test="local-name($node)='glossary' and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <xsl:when test="local-name($node)='colophon'">1</xsl:when>
+ <xsl:when test="local-name($node)='book'">1</xsl:when>
+ <xsl:when test="local-name($node)='set'">1</xsl:when>
+ <xsl:when test="local-name($node)='setindex'">1</xsl:when>
+ <xsl:when test="local-name($node)='legalnotice' and $generate.legalnotice.link != 0">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:apply-templates mode="chunk-filename" select="$object"/>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:param name="toc-context" select="."/>
+ <!-- * If $toc-context contains some node other than the current node, -->
+ <!-- * it means we're processing a link in a TOC. In that case, to -->
+ <!-- * ensure the link will work correctly, we need to take a look at -->
+ <!-- * where the file containing the TOC will get written, and where -->
+ <!-- * the file that's being linked to will get written. -->
+ <xsl:variable name="toc-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the $toc-context node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the -->
+ <!-- * toc-context node that has a "dbhtml dir" PI, and get the -->
+ <!-- * directory name from that. That's the name of the directory -->
+ <!-- * to which the current toc output file will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$toc-context/ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="linked-file-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the current node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the current -->
+ <!-- * node that has a "dbhtml dir" PI, and get the directory name -->
+ <!-- * from that. That's the name of the directory to which the -->
+ <!-- * file that's being linked to will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="href.to.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href.from.uri">
+ <xsl:choose>
+ <xsl:when test="not($toc-context = .)">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$context"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- * <xsl:message>toc-context: <xsl:value-of select="local-name($toc-context)"/></xsl:message> -->
+ <!-- * <xsl:message>node: <xsl:value-of select="local-name(.)"/></xsl:message> -->
+ <!-- * <xsl:message>context: <xsl:value-of select="local-name($context)"/></xsl:message> -->
+ <!-- * <xsl:message>object: <xsl:value-of select="local-name($object)"/></xsl:message> -->
+ <!-- * <xsl:message>toc-output-dir: <xsl:value-of select="$toc-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>linked-file-output-dir: <xsl:value-of select="$linked-file-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>href.to.uri: <xsl:value-of select="$href.to.uri"/></xsl:message> -->
+ <!-- * <xsl:message>href.from.uri: <xsl:value-of select="$href.from.uri"/></xsl:message> -->
+ <xsl:variable name="href.to">
+ <xsl:choose>
+ <!-- * 2007-07-19, MikeSmith: Added the following conditional to -->
+ <!-- * deal with a problem case for links in TOCs. It checks to see -->
+ <!-- * if the output dir that a TOC will get written to is -->
+ <!-- * different from the output dir of the file being linked to. -->
+ <!-- * If it is different, we do not call trim.common.uri.paths. -->
+ <!-- * -->
+ <!-- * Reason why I added that conditional is: I ran into a bug for -->
+ <!-- * this case: -->
+ <!-- * -->
+ <!-- * 1. we are chunking into separate dirs -->
+ <!-- * -->
+ <!-- * 2. output for the TOC is written to current dir, but the file -->
+ <!-- * being linked to is written to some subdir "foo". -->
+ <!-- * -->
+ <!-- * For that case, links to that file in that TOC did not show -->
+ <!-- * the correct path - they omitted the "foo". -->
+ <!-- * -->
+ <!-- * The cause of that problem was that the trim.common.uri.paths -->
+ <!-- * template[1] was being called under all conditions. But it's -->
+ <!-- * apparent that we don't want to call trim.common.uri.paths in -->
+ <!-- * the case where a linked file is being written to a different -->
+ <!-- * directory than the TOC that contains the link, because doing -->
+ <!-- * so will cause a necessary (not redundant) directory-name -->
+ <!-- * part of the link to get inadvertently trimmed, resulting in -->
+ <!-- * a broken link to that file. Thus, added the conditional. -->
+ <!-- * -->
+ <!-- * [1] The purpose of the trim.common.uri.paths template is to -->
+ <!-- * prevent cases where, if we didn't call it, we end up with -->
+ <!-- * unnecessary, redundant directory names getting output; for -->
+ <!-- * example, "foo/foo/refname.html". -->
+ <xsl:when test="not($toc-output-dir = $linked-file-output-dir)">
+ <xsl:value-of select="$href.to.uri"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>
+ <xsl:text>In </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$href.from"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="$depth"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="name($object)"/>
+ <xsl:text> href=</xsl:text>
+ <xsl:value-of select="$href"/>
+ </xsl:message>
+ -->
+ <xsl:value-of select="$href"/>
+</xsl:template>
+
+<!-- Returns the complete olink href value if found -->
+<!-- Must take into account any dbhtml dir of the chunk containing the olink -->
+<xsl:template name="make.olink.href">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$olink.key != ''">
+ <xsl:variable name="target.href">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetptr-key', $olink.key)[1]/@href"/>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- an olink starting point may be in a subdirectory, so need
+ the "from" reference point to compute a relative path -->
+
+ <xsl:variable name="from.href">
+ <xsl:call-template name="olink.from.uri">
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="object" select="."/>
+ <xsl:with-param name="object.targetdoc" select="$current.docid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- If the from.href has directory path, then must "../" upward
+ to document level -->
+ <xsl:variable name="upward.from.path">
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="$from.href"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <!-- Does the target database use a sitemap? -->
+ <xsl:variable name="use.sitemap">
+ <xsl:choose>
+ <xsl:when test="$target.database//sitemap">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <!-- Get the baseuri for this targetptr -->
+ <xsl:variable name="baseuri">
+ <xsl:choose>
+ <!-- Does the database use a sitemap? -->
+ <xsl:when test="$use.sitemap != 0">
+ <xsl:choose>
+ <!-- Was current.docid parameter set? -->
+ <xsl:when test="$current.docid != ''">
+ <!-- Was it found in the database? -->
+ <xsl:variable name="currentdoc.key">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetdoc-key', $current.docid)/@targetdoc"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$currentdoc.key != ''">
+ <xsl:for-each select="$target.database">
+ <xsl:call-template name="targetpath">
+ <xsl:with-param name="dirnode" select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path because $current.docid '</xsl:text>
+ <xsl:value-of select="$current.docid"/>
+ <xsl:text>' not found in target database.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink warning: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path without $current.docid parameter</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- In either case, add baseuri from its document entry-->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''">
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- No database sitemap in use -->
+ <xsl:otherwise>
+ <!-- Just use any baseuri from its document entry -->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''">
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Form the href information -->
+ <xsl:if test="not(contains($baseuri, ':'))">
+ <!-- if not an absolute uri, add upward path from olink chunk -->
+ <xsl:value-of select="$upward.from.path"/>
+ </xsl:if>
+
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and translate(substring($baseuri, string-length($baseuri) - 3), 'PDF', 'pdf') = '.pdf' and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- Computes "../" to reach top -->
+<xsl:template name="upward.path">
+ <xsl:param name="path" select="''"/>
+ <xsl:choose>
+ <!-- Don't bother with absolute uris -->
+ <xsl:when test="contains($path, ':')"/>
+ <xsl:when test="starts-with($path, '/')"/>
+ <xsl:when test="contains($path, '/')">
+ <xsl:text>../</xsl:text>
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="substring-after($path, '/')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="html.head">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:variable name="this" select="."/>
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+
+ <xsl:if test="$home">
+ <link rel="home">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$home" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$up">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$up" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prev">
+ <link rel="prev">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$prev" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$next">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$next" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$html.extra.head.links != 0">
+ <xsl:for-each select="//part |//reference |//preface |//chapter |//article |//refentry |//appendix[not(parent::article)]|appendix |//glossary[not(parent::article)]|glossary |//index[not(parent::article)]|index">
+ <link rel="{local-name(.)}">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="section|sect1|refsection|refsect1">
+ <link>
+ <xsl:attribute name="rel">
+ <xsl:choose>
+ <xsl:when test="local-name($this) = 'section' or local-name($this) = 'refsection'">
+ <xsl:value-of select="'subsection'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'section'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="sect2|sect3|sect4|sect5|refsect2|refsect3">
+ <link rel="subsection">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- * if we have a legalnotice and user wants it output as a -->
+ <!-- * separate page and $html.head.legalnotice.link.types is -->
+ <!-- * non-empty, we generate a link or links for each value in -->
+ <!-- * $html.head.legalnotice.link.types -->
+ <xsl:if test="//legalnotice and not($generate.legalnotice.link = 0) and not($html.head.legalnotice.link.types = '')">
+ <xsl:call-template name="make.legalnotice.head.links"/>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="header.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="$navig.showtitles != 0"/>
+ <xsl:variable name="row2" select="count($prev) &gt; 0 or (count($up) &gt; 0 and generate-id($up) != generate-id($home) and $navig.showtitles != 0) or count($next) &gt; 0"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'">
+ <div class="navheader">
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation header">
+ <xsl:if test="$row1">
+ <tr>
+ <th colspan="3" align="center">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </th>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="count($prev)&gt;0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <th width="60%" align="center">
+ <xsl:choose>
+ <xsl:when test="count($up) &gt; 0 and generate-id($up) != generate-id($home) and $navig.showtitles != 0">
+ <xsl:apply-templates select="$up" mode="object.title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </th>
+ <td align="{$direction.align.end}">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)&gt;0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ <xsl:if test="$header.rule != 0">
+ <hr/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="footer.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="count($prev) &gt; 0 or count($up) &gt; 0 or count($next) &gt; 0"/>
+
+ <xsl:variable name="row2" select="($prev and $navig.showtitles != 0) or (generate-id($home) != generate-id(.) or $nav.context = 'toc') or ($chunk.tocs.and.lots != 0 and $nav.context != 'toc') or ($next and $navig.showtitles != 0)"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.footer.navigation = '0'">
+ <div class="navfooter">
+ <xsl:if test="$footer.rule != 0">
+ <hr/>
+ </xsl:if>
+
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation footer">
+ <xsl:if test="$row1">
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="count($prev)&gt;0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="center">
+ <xsl:choose>
+ <xsl:when test="count($up)&gt;0 and generate-id($up) != generate-id($home)">
+ <a accesskey="u">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'up'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td align="{$direction.align.end}">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)&gt;0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$prev" mode="object.title.markup"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td align="center">
+ <xsl:choose>
+ <xsl:when test="$home != . or $nav.context = 'toc'">
+ <a accesskey="h">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'home'"/>
+ </xsl:call-template>
+ </a>
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <xsl:text>&#160;|&#160;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <a accesskey="t">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="/*[1]" mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:attribute>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-toc'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.end}" valign="top">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$next" mode="object.title.markup"/>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="navig.content">
+ <xsl:param name="direction" select="next"/>
+ <xsl:variable name="navtext">
+ <xsl:choose>
+ <xsl:when test="$direction = 'prev'">
+ <xsl:call-template name="gentext.nav.prev"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'next'">
+ <xsl:call-template name="gentext.nav.next"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'up'">
+ <xsl:call-template name="gentext.nav.up"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'home'">
+ <xsl:call-template name="gentext.nav.home"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>xxx</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$navig.graphics != 0">
+ <img>
+ <xsl:attribute name="src">
+ <xsl:value-of select="$navig.graphics.path"/>
+ <xsl:value-of select="$direction"/>
+ <xsl:value-of select="$navig.graphics.extension"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$navtext"/>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$navtext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * The following template assumes that the first legalnotice -->
+<!-- * instance found in a document applies to the contents of the -->
+<!-- * entire document. It generates an HTML link in each chunk, back -->
+<!-- * to the file containing the contents of the first legalnotice. -->
+<!-- * -->
+<!-- * Actually, it may generate multiple link instances in each chunk, -->
+<!-- * because it walks through the space-separated list of link -->
+<!-- * types specified in the $html.head.legalnotice.link.types param, -->
+<!-- * popping off link types and generating links for them until it -->
+<!-- * depletes the list. -->
+
+<xsl:template name="make.legalnotice.head.links">
+ <!-- * the following ID is used as part of the legalnotice filename; -->
+ <!-- * we need it in order to construct the filename for use in the -->
+ <!-- * value of the href attribute on the link -->
+
+ <xsl:param name="ln-node" select="(//legalnotice)[1]"/>
+
+ <xsl:param name="linktype">
+ <xsl:choose>
+ <xsl:when test="contains($html.head.legalnotice.link.types, ' ')">
+ <xsl:value-of select="normalize-space( substring-before($html.head.legalnotice.link.types, ' '))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.head.legalnotice.link.types"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="remaining.linktypes" select="concat( normalize-space( substring-after($html.head.legalnotice.link.types, ' ')),' ')"/>
+ <xsl:if test="not($linktype = '')">
+
+ <!-- Compute name of legalnotice file (see titlepage.xsl) -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="node" select="$ln-node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <link rel="{$linktype}">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$file"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="(//legalnotice)[1]" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ <xsl:call-template name="make.legalnotice.head.links">
+ <!-- * pop the next value off the list of link types -->
+ <xsl:with-param name="linktype" select="substring-before($remaining.linktypes, ' ')"/>
+ <!-- * remove the link type from the list of remaining link types -->
+ <xsl:with-param name="remaining.linktypes" select="substring-after($remaining.linktypes, ' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="chunk-element-content">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:call-template name="user.preroot"/>
+
+ <html>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.navigation"/>
+
+ <xsl:call-template name="header.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.header.content"/>
+
+ <xsl:copy-of select="$content"/>
+
+ <xsl:call-template name="user.footer.content"/>
+
+ <xsl:call-template name="footer.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.footer.navigation"/>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.manifest">
+ <xsl:param name="node" select="/"/>
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$manifest"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$node" mode="enumerate-files"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl
new file mode 100644
index 0000000..6b74923
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunk.xsl
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl
new file mode 100644
index 0000000..f1e86a1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunker.xsl
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="http://xml.apache.org/xalan/redirect" xmlns:exsl="http://exslt.org/common" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="saxon lxslt redirect exsl doc" extension-element-prefixes="saxon redirect lxslt exsl">
+
+<!-- ********************************************************************
+ $Id: chunker.xsl 8526 2009-10-14 18:59:40Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with XSLT implementations that support -->
+<!-- exsl:document, saxon:output, or Xalan's redirect:write -->
+<!-- Note: Only Saxon 6.4.2 or later is supported. -->
+
+<xsl:param name="chunker.output.method" select="'xml'"/>
+<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
+<xsl:param name="chunker.output.indent" select="'no'"/>
+<xsl:param name="chunker.output.omit-xml-declaration" select="'no'"/>
+<xsl:param name="chunker.output.standalone" select="'no'"/>
+<xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD XHTML 1.1//EN'"/>
+<xsl:param name="chunker.output.doctype-system" select="'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'"/>
+<xsl:param name="chunker.output.media-type" select="''"/>
+<xsl:param name="chunker.output.cdata-section-elements" select="''"/>
+<xsl:param name="chunker.output.quiet" select="0"/>
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:choose>
+ <!-- put Saxon first to work around a bug in libxslt -->
+ <xsl:when test="element-available('saxon:output')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="element-available('exsl:document')">
+ <!-- EXSL document does make the chunks relative, I think -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*) = 0">
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to chunk with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration" select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements" select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:if test="$quiet = 0">
+ <xsl:message>
+ <xsl:if test="not($message-prolog = '')">
+ <xsl:value-of select="$message-prolog"/>
+ </xsl:if>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != '' and $suppress-context-node-name = 0">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="not($message-epilog = '')">
+ <xsl:value-of select="$message-epilog"/>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="element-available('exsl:document')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('saxon:output')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration" select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements" select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="$indent"/>
+ <xsl:with-param name="omit-xml-declaration" select="$omit-xml-declaration"/>
+ <xsl:with-param name="standalone" select="$standalone"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements" select="$cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="write.text.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+ <xsl:param name="method" select="'text'"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="suppress-context-node-name" select="$suppress-context-node-name"/>
+ <xsl:with-param name="message-prolog" select="$message-prolog"/>
+ <xsl:with-param name="message-epilog" select="$message-epilog"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="standalone" select="'no'"/>
+ <xsl:with-param name="doctype-public"/>
+ <xsl:with-param name="doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl
new file mode 100644
index 0000000..ba7c287
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunkfast.xsl
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="cf exsl">
+
+<!-- ********************************************************************
+ $Id: chunkfast.xsl 8345 2009-03-16 06:44:07Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+<xsl:param name="chunk.fast" select="1"/>
+
+<xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv" select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv" select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl
new file mode 100644
index 0000000..400fd6a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/chunktoc.xsl
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc exsl ng db">
+
+<!-- ********************************************************************
+ $Id: chunktoc.xsl 8545 2009-12-02 07:22:10Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk-common.xsl"/>
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:choose>
+ <xsl:when test="$chunks//tocentry[@linkend=$id]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$chunk"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="chunk-filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="prev-id" select="($chunk/preceding::tocentry |$chunk/ancestor::tocentry)[last()]/@linkend"/>
+ <xsl:variable name="next-id" select="($chunk/following::tocentry |$chunk/child::tocentry)[1]/@linkend"/>
+
+ <xsl:variable name="prev" select="key('id',$prev-id)"/>
+ <xsl:variable name="next" select="key('id',$next-id)"/>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="appendix">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="preface|chapter">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="part|reference">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="colophon">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk != 0">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-imports/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$chunk.toc = ''">
+ <xsl:message terminate="yes">
+ <xsl:text>The chunk.toc file is not set.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl
new file mode 100644
index 0000000..b18d533
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/component.xsl
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: component.xsl 8568 2010-01-11 03:16:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="component.title">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Let's handle the case where a component (bibliography, for example)
+ occurs inside a section; will we need parameters for this? -->
+
+ <xsl:element name="h{$level+1}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="component.subtitle">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="subtitle" select="($node/docinfo/subtitle |$node/info/subtitle |$node/prefaceinfo/subtitle |$node/chapterinfo/subtitle |$node/appendixinfo/subtitle |$node/articleinfo/subtitle |$node/artheader/subtitle |$node/subtitle)[1]"/>
+
+ <xsl:if test="$subtitle">
+ <h3 class="subtitle">
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates select="$node" mode="object.subtitle.markup"/>
+ </em>
+ </h3>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="component.separator">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="dedication.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="dedication/title|dedication/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication/subtitle|dedication/info/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication"/> <!-- see mode="dedication" -->
+<xsl:template match="dedication/title"/>
+<xsl:template match="dedication/subtitle"/>
+<xsl:template match="dedication/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="acknowledgements" mode="acknowledgements">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="acknowledgements.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="acknowledgements/title|acknowledgements/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acknowledgements/subtitle|acknowledgements/info/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acknowledgements"/> <!-- see mode="acknowledgements" -->
+<xsl:template match="acknowledgements/title"/>
+<xsl:template match="acknowledgements/subtitle"/>
+<xsl:template match="acknowledgements/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colophon">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="component.title"/>
+ <xsl:call-template name="component.subtitle"/>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="colophon/title"/>
+<xsl:template match="colophon/subtitle"/>
+<xsl:template match="colophon/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="preface">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="preface.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="preface/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/subtitle |preface/prefaceinfo/subtitle |preface/info/subtitle |preface/docinfo/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/docinfo|prefaceinfo"/>
+<xsl:template match="preface/info"/>
+<xsl:template match="preface/title"/>
+<xsl:template match="preface/titleabbrev"/>
+<xsl:template match="preface/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="chapter">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="chapter.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="chapter/title|chapter/chapterinfo/title|chapter/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/subtitle |chapter/chapterinfo/subtitle |chapter/info/subtitle |chapter/docinfo/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/docinfo|chapterinfo"/>
+<xsl:template match="chapter/info"/>
+<xsl:template match="chapter/title"/>
+<xsl:template match="chapter/titleabbrev"/>
+<xsl:template match="chapter/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="appendix">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="parent::article and $ischunk = 0">
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="1"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="appendix.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article) or $ischunk != 0">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="appendix/title|appendix/appendixinfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/subtitle |appendix/appendixinfo/subtitle |appendix/info/subtitle |appendix/docinfo/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/docinfo|appendixinfo"/>
+<xsl:template match="appendix/info"/>
+<xsl:template match="appendix/title"/>
+<xsl:template match="appendix/titleabbrev"/>
+<xsl:template match="appendix/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="article">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="article.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="article/title|article/articleinfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/subtitle |article/articleinfo/subtitle |article/info/subtitle |article/artheader/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/artheader|article/articleinfo"/>
+<xsl:template match="article/info"/>
+<xsl:template match="article/title"/>
+<xsl:template match="article/titleabbrev"/>
+<xsl:template match="article/subtitle"/>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl
new file mode 100644
index 0000000..5002fe5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/division.xsl
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: division.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="xml.language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="set.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="set/setinfo"/>
+<xsl:template match="set/title"/>
+<xsl:template match="set/titleabbrev"/>
+<xsl:template match="set/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="book.titlepage"/>
+
+ <xsl:apply-templates select="dedication" mode="dedication"/>
+ <xsl:apply-templates select="acknowledgements" mode="acknowledgements"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="book/bookinfo"/>
+<xsl:template match="book/info"/>
+<xsl:template match="book/title"/>
+<xsl:template match="book/titleabbrev"/>
+<xsl:template match="book/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="part">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="part.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="part" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="reference" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="part/docinfo"/>
+<xsl:template match="part/partinfo"/>
+<xsl:template match="part/info"/>
+<xsl:template match="part/title"/>
+<xsl:template match="part/titleabbrev"/>
+<xsl:template match="part/subtitle"/>
+
+<xsl:template match="partintro">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="partintro.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <!-- not ancestor::part because partintro appears in reference -->
+ <xsl:apply-templates select="parent::*" mode="make.part.toc"/>
+ </xsl:if>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="partintro/title"/>
+<xsl:template match="partintro/titleabbrev"/>
+<xsl:template match="partintro/subtitle"/>
+
+<xsl:template match="partintro/title" mode="partintro.title.mode">
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="partintro/subtitle" mode="partintro.title.mode">
+ <h3>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></em>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book" mode="division.number">
+ <xsl:number from="set" count="book" format="1."/>
+</xsl:template>
+
+<xsl:template match="part" mode="division.number">
+ <xsl:number from="book" count="part" format="I."/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="division.title">
+ <xsl:param name="node" select="."/>
+
+ <h1>
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </h1>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml
new file mode 100644
index 0000000..d93a25c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.css.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<style>
+
+/********************************/
+/* start of styles in block.xsl */
+
+.formalpara-title {
+ font-weight: bold;
+}
+
+div.blockquote-title {
+ font-weight: bold;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msgmain-title {
+ font-weight: bold;
+}
+
+span.msgsub-title {
+ font-weight: bold;
+}
+
+span.msgrel-title {
+ font-weight: bold;
+}
+
+div.msglevel, div.msgorig, div.msgaud {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msglevel-title, span.msgorig-title, span.msgaud-title {
+ font-weight: bold;
+}
+
+div.msgexplan {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msgexplan-title {
+ font-weight: bold;
+}
+
+/* end of styles in block.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in autotoc.xsl */
+
+ font-weight: bold;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+
+/* end of styles in autotoc.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in formal.xsl */
+
+div.figure-title {
+ font-weight: bold;
+}
+
+div.example-title {
+ font-weight: bold;
+}
+
+div.equation-title {
+ font-weight: bold;
+}
+
+div.table-title {
+ font-weight: bold;
+}
+
+div.sidebar-title {
+ font-weight: bold;
+}
+
+
+/* end of styles in formal.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in verbatim.xsl */
+
+div.programlisting {
+ white-space: pre;
+ font-family: monospace;
+}
+
+div.screen {
+ white-space: pre;
+ font-family: monospace;
+}
+
+div.synopsis {
+ white-space: pre;
+ font-family: monospace;
+}
+
+/* end of styles in verbatim.xsl */
+/********************************/
+</style>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl
new file mode 100644
index 0000000..84a4e17
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/docbook.xsl
@@ -0,0 +1,446 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="db ng exsl exslt" version="1.0">
+
+<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8783 2010-07-28 10:59:39Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'xhtml'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes">
+<!-- no apply-templates; make it empty -->
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <!-- Insert links to CSS files or insert literal style elements -->
+ <xsl:call-template name="generate.css"/>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made" href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$css.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0 and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>
+// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>
+var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();
+</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>Saving stripped document.</xsl:message>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="'/tmp/stripped.xml'"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="exsl:node-set($nons)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+
+ <!-- Generate any css files only once, not once per chunk -->
+ <xsl:call-template name="generate.css.files"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl
new file mode 100644
index 0000000..85e33ee
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
+
+<!-- ********************************************************************
+ $Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="">
+<referenceinfo xmlns="http://www.w3.org/1999/xhtml">
+<releaseinfo role="meta">
+$Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $
+</releaseinfo>
+<author><surname>Walsh</surname>
+<firstname>Norman</firstname></author>
+<copyright><year>1999</year><year>2000</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</referenceinfo>
+<title xmlns="http://www.w3.org/1999/xhtml">HTML EBNF Reference</title>
+
+<partintro xmlns="http://www.w3.org/1999/xhtml">
+<section><title>Introduction</title>
+
+<para>This is technical reference documentation for the DocBook XSL
+Stylesheets; it documents (some of) the parameters, templates, and
+other elements of the stylesheets.</para>
+
+<para>This reference describes the templates and parameters relevant
+to formatting EBNF markup.</para>
+
+<para>This is not intended to be <quote>user</quote> documentation.
+It is provided for developers writing customization layers for the
+stylesheets, and for anyone who's interested in <quote>how it
+works</quote>.</para>
+
+<para>Although I am trying to be thorough, this documentation is known
+to be incomplete. Don't forget to read the source, too :-)</para>
+</section>
+</partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productionset">
+ <table width="100%" cellpadding="5">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="style"><xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$ebnf.table.border != 0">
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">
+ <xsl:text>EBNF</xsl:text>
+ <xsl:if test="title">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="title"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:if test="title">
+ <tr>
+ <th align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="title"/>
+ </th>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td>
+ <table border="0" width="99%" cellpadding="0">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="style"><xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">EBNF productions</xsl:attribute>
+ <xsl:apply-templates select="production|productionrecap"/>
+ </table>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<xsl:template match="productionset/title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="production">
+ <xsl:param name="recap" select="false()"/>
+ <tr>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:text>[</xsl:text>
+ <xsl:number count="production" level="any"/>
+ <xsl:text>]</xsl:text>
+ </td>
+ <td align="{$direction.align.end}" valign="top">
+ <xsl:choose>
+ <xsl:when test="$recap">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="lhs"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="lhs"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td valign="top" align="center">
+ <xsl:copy-of select="$ebnf.assignment"/>
+ </td>
+ <td valign="top">
+ <xsl:apply-templates select="rhs"/>
+ <xsl:copy-of select="$ebnf.statement.terminator"/>
+ </td>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:choose>
+ <xsl:when test="rhs/lineannotation|constraint">
+ <xsl:apply-templates select="rhs/lineannotation" mode="rhslo"/>
+ <xsl:apply-templates select="constraint"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="productionrecap">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no ID for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="count($targets)&gt;1">
+ <xsl:message>
+ <xsl:text>Warning: multiple "IDs" for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target">
+ <xsl:with-param name="recap" select="true()"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="lhs">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="rhs">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::rhs">
+ <xsl:text> |</xsl:text>
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="nonterminal">
+ <xsl:variable name="linkend">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="@def"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="element-list">production</xsl:with-param>
+ </xsl:call-template>
+
+ <!-- If you don't provide content, you can't point outside this doc. -->
+ <xsl:choose>
+ <xsl:when test="*|text()"><!--nop--></xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$linkend = ''">
+ <xsl:message>
+ <xsl:text>Non-terminals with no content must point to </xsl:text>
+ <xsl:text>production elements in the current document.</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>Invalid xpointer for empty nt: </xsl:text>
+ <xsl:value-of select="@def"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@def"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a href="{$href}">
+ <xsl:choose>
+ <xsl:when test="*|text()">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target/lhs"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation" mode="rhslo">
+ <xsl:text>/*&#160;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#160;*/</xsl:text>
+ <br/>
+</xsl:template>
+
+<xsl:template match="constraint">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ <xsl:with-param name="element-list">constraintdef</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:variable name="href">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:text>[&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:if test="$target/@role">
+ <xsl:value-of select="$target/@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <a href="{$href}">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target" mode="title.markup"/>
+ </a>
+ <xsl:text>&#160;]</xsl:text>
+ <xsl:if test="following-sibling::constraint">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="constraintdef">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="constraintdef/title">
+ <p><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong></p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl
new file mode 100644
index 0000000..8da2720
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl" version="1.0">
+
+<!-- ********************************************************************
+ $Id: footnote.xsl 8812 2010-08-09 20:51:51Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="footnote">
+ <xsl:variable name="name">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="footnoteref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="footnote" select="$targets[1]"/>
+
+ <xsl:if test="not(local-name($footnote) = 'footnote')">
+ <xsl:message terminate="yes">
+ERROR: A footnoteref element has a linkend that points to an element that is not a footnote.
+Typically this happens when an id attribute is accidentally applied to the child of a footnote element.
+target element: <xsl:value-of select="local-name($footnote)"/>
+linkend/id: <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="target.href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:value-of select="substring-before($target.href, '#')"/>
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:value-of select="substring-after($target.href, '#')"/>
+ </xsl:variable>
+
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="$footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+</xsl:template>
+
+<xsl:template match="footnote" mode="footnote.number">
+ <xsl:choose>
+ <xsl:when test="string-length(@label) != 0">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <xsl:variable name="tfnum">
+ <xsl:number level="any" from="table|informaltable" format="1"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($table.footnote.number.symbols) &gt;= $tfnum">
+ <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="table | informaltable" format="{$table.footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="pfoot" select="preceding::footnote[not(@label)]"/>
+ <xsl:variable name="ptfoot" select="preceding::table//footnote | preceding::informaltable//footnote"/>
+ <xsl:variable name="fnum" select="count($pfoot) - count($ptfoot) + 1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($footnote.number.symbols) &gt;= $fnum">
+ <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$fnum" format="{$footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="footnote/para[1]|footnote/simpara[1]" priority="2">
+ <!-- this only works if the first thing in a footnote is a para, -->
+ <!-- which is ok, because it usually is. -->
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="footnote.body.number">
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="footnote.mark">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ </xsl:variable>
+
+ <xsl:variable name="html">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:variable name="html-nodes" select="exsl:node-set($html)"/>
+ <xsl:choose>
+ <xsl:when test="$html-nodes//p">
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.p">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.text">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$html"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+<xsl:template name="count-element-from">
+ <xsl:param name="from" select=".."/>
+ <xsl:param name="to" select="."/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="list" select="$from/following::*[local-name(.)=local-name($to)]
+ |$from/descendant-or-self::*[local-name(.)=local-name($to)]"/>
+
+ <xsl:choose>
+ <xsl:when test="not($list)">
+ <xsl:text>-1</xsl:text>
+ </xsl:when>
+ <xsl:when test="$list[1] = $to">
+ <xsl:value-of select="$count + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+-->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="table.footnotes" select=".//table//footnote | .//informaltable//footnote"/>
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="count($footnotes)&gt;count($table.footnotes)">
+ <div class="footnotes">
+ <br/>
+ <hr/>
+ <xsl:apply-templates select="$footnotes" mode="process.footnote.mode"/>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn&#8217;t support the user-interface
+ techniques used to make them appear as &#8216;popups&#8217; on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation" mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="footnote" name="process.footnote" mode="process.footnote.mode">
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'para' or local-name(*[1]) = 'simpara'">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+
+ <xsl:when test="$html.cleanup != 0 and $exsl.node.set.available != 0">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates select="*[1]" mode="footnote.body.number"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: footnote number may not be generated </xsl:text>
+ <xsl:text>correctly; </xsl:text>
+ <xsl:value-of select="local-name(*[1])"/>
+ <xsl:text> unexpected as first child of footnote.</xsl:text>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="table//footnote | informaltable//footnote" mode="process.footnote.mode">
+</xsl:template>
+
+<xsl:template match="footnote" mode="table.footnote.mode">
+ <xsl:call-template name="process.footnote"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl
new file mode 100644
index 0000000..57c98f3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: formal.xsl 8806 2010-08-09 18:25:58Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="formal.object.break.after">1</xsl:param>
+
+<xsl:template name="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class">
+ <xsl:apply-templates select="." mode="class.value"/>
+ </xsl:param>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ <div class="{$class}-contents">
+ <xsl:apply-templates/>
+ </div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <div class="{$class}-contents"><xsl:apply-templates/></div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ <xsl:if test="not($formal.object.break.after = '0')">
+ <br class="{$class}-break"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$object" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:param>
+
+
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <xsl:variable name="html.class" select="concat(local-name($object),'-title')"/>
+ <div class="{$html.class}">
+ <xsl:copy-of select="$title"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p class="title">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$title"/>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="informal.object">
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'informaltable'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </div>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="semiformal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:choose>
+ <xsl:when test="title or info/title">
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="table">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="calsTable"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- do not use xsl:copy because of XHTML's needs -->
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calsTable">
+ <xsl:if test="tgroup/tbody/tr |tgroup/thead/tr |tgroup/tfoot/tr">
+ <xsl:message terminate="yes">Broken table: tr descendent of CALS Table.</xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <!-- hack, this will only ever occur on table, not example -->
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="htmlTable">
+ <xsl:if test="tgroup/tbody/row |tgroup/thead/row |tgroup/tfoot/row">
+ <xsl:message terminate="yes">Broken table: row descendent of HTML table.</xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates mode="htmlTable"/>
+
+ <xsl:if test=".//footnote|../title//footnote">
+ <tbody class="footnotes">
+ <tr>
+ <td colspan="50">
+ <xsl:apply-templates select=".//footnote|../title//footnote" mode="table.footnote.mode"/>
+ </td>
+ </tr>
+ </tbody>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="example">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="equation">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="figure/title"/>
+<xsl:template match="figure/titleabbrev"/>
+<xsl:template match="table/title"/>
+<xsl:template match="table/titleabbrev"/>
+<xsl:template match="table/textobject"/>
+<xsl:template match="example/title"/>
+<xsl:template match="example/titleabbrev"/>
+<xsl:template match="equation/title"/>
+<xsl:template match="equation/titleabbrev"/>
+
+<xsl:template match="informalfigure">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informalexample">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informaltable">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="informaltable/textobject"/>
+
+<xsl:template name="table.longdesc">
+ <!-- HACK: This doesn't belong inside formal.objectt; it should be done by -->
+ <!-- the table template, but I want the link to be inside the DIV, so... -->
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="irrelevant">
+ <!-- write.longdesc returns the filename ... -->
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0 and textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="informalequation">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template name="floatstyle">
+ <xsl:if test="(@float and @float != '0') or @floatstyle != ''">
+ <xsl:choose>
+ <xsl:when test="@floatstyle != ''">
+ <xsl:value-of select="@floatstyle"/>
+ </xsl:when>
+ <xsl:when test="@float = '1'">
+ <xsl:value-of select="$default.float.class"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@float"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="floater">
+ <xsl:param name="content"/>
+ <xsl:param name="class" select="'float'"/>
+ <xsl:param name="floatstyle" select="'left'"/>
+
+ <div class="{$class}">
+ <xsl:if test="$floatstyle = 'left' or $floatstyle = 'right'">
+ <xsl:attribute name="style">
+ <xsl:text>float: </xsl:text>
+ <xsl:value-of select="$floatstyle"/>
+ <xsl:text>;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl
new file mode 100644
index 0000000..d22b6c5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl
@@ -0,0 +1,564 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink" version="1.0">
+
+<!-- ********************************************************************
+ $Id: glossary.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossary">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="(glossdiv[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="glossdiv"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty glossary -->
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossary/glossaryinfo"/>
+<xsl:template match="glossary/info"/>
+<xsl:template match="glossary/title"/>
+<xsl:template match="glossary/subtitle"/>
+<xsl:template match="glossary/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glosslist">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossdiv">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="translate(glossterm, $lowercase, $uppercase)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+
+<xsl:template match="glossentry">
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dt>
+ </xsl:when>
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+
+ <xsl:if test="acronym|abbrev">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+ </dt>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="indexterm|revhistory|glosssee|glossdef"/>
+</xsl:template>
+
+<xsl:template match="glossentry/glossterm">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/acronym">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/abbrev">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/revhistory">
+</xsl:template>
+
+<xsl:template match="glossentry/glosssee">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <dd>
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </p>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef">
+ <dd>
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="glossseealso"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </p>
+ </xsl:if>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossseealso">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="position() = last()"/>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso-separator'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Glossary collection -->
+
+<xsl:template match="glossary[@role='auto']" priority="2">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <xsl:variable name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/>
+ <xsl:variable name="collection" select="document($glossary.collection, .)"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not($collection) and $glossary.collection != ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
+ <xsl:text>open glossary.collection file '</xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv and $collection//glossdiv">
+ <xsl:for-each select="$collection//glossdiv">
+ <!-- first see if there are any in this div -->
+ <xsl:variable name="exist.test">
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:value-of select="glossterm"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="$exist.test != ''">
+ <xsl:apply-templates select="." mode="auto-glossary">
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="auto-glossary">
+ <!-- pop back out to the default mode for most elements -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="auto-glossary">
+ <xsl:param name="terms" select="."/>
+
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>!
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl
new file mode 100644
index 0000000..db05ad2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl
@@ -0,0 +1,1436 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory" xmlns:simg="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.ImageIntrinsics" xmlns:ximg="xalan://com.nwalsh.xalan.ImageIntrinsics" xmlns:xtext="xalan://com.nwalsh.xalan.Text" xmlns:lxslt="http://xml.apache.org/xslt" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink stext xtext lxslt simg ximg" extension-element-prefixes="stext xtext" version="1.0">
+
+<!-- ********************************************************************
+ $Id: graphics.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ Contributors:
+ Colin Paul Adams, <colin@colina.demon.co.uk>
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtext" elements="insertfile"/>
+<lxslt:component prefix="ximg" functions="new getWidth getDepth"/>
+
+<!-- ==================================================================== -->
+<!-- Graphic format tests for the HTML backend -->
+
+<xsl:template name="is.graphic.format">
+ <xsl:param name="format"/>
+ <xsl:if test="$format = 'SVG' or $format = 'PNG' or $format = 'JPG' or $format = 'JPEG' or $format = 'linespecific' or $format = 'GIF' or $format = 'GIF87a' or $format = 'GIF89a' or $format = 'BMP'">1</xsl:if>
+</xsl:template>
+
+<xsl:template name="is.graphic.extension">
+ <xsl:param name="ext"/>
+ <xsl:variable name="lcext" select="translate($ext, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"/>
+ <xsl:if test="$lcext = 'svg' or $lcext = 'png' or $lcext = 'jpeg' or $lcext = 'jpg' or $lcext = 'avi' or $lcext = 'mpg' or $lcext = 'mpeg' or $lcext = 'qt' or $lcext = 'gif' or $lcext = 'bmp'">1</xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="screenshot">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="screeninfo">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.image">
+ <!-- When this template is called, the current node should be -->
+ <!-- a graphic, inlinegraphic, imagedata, or videodata. All -->
+ <!-- those elements have the same set of attributes, so we can -->
+ <!-- handle them all in one place. -->
+ <xsl:param name="tag" select="'img'"/>
+ <xsl:param name="alt"/>
+ <xsl:param name="longdesc"/>
+
+ <!-- The HTML img element only supports the notion of content-area
+ scaling; it doesn't support the distinction between a
+ content-area and a viewport-area, so we have to make some
+ compromises.
+
+ 1. If only the content-area is specified, everything is fine.
+ (If you ask for a three inch image, that's what you'll get.)
+
+ 2. If only the viewport-area is provided:
+ - If scalefit=1, treat it as both the content-area and
+ the viewport-area. (If you ask for an image in a five inch
+ area, we'll make the image five inches to fill that area.)
+ - If scalefit=0, ignore the viewport-area specification.
+
+ Note: this is not quite the right semantic and has the additional
+ problem that it can result in anamorphic scaling, which scalefit
+ should never cause.
+
+ 3. If both the content-area and the viewport-area is specified
+ on a graphic element, ignore the viewport-area.
+ (If you ask for a three inch image in a five inch area, we'll assume
+ it's better to give you a three inch image in an unspecified area
+ than a five inch image in a five inch area.
+
+ Relative units also cause problems. As a general rule, the stylesheets
+ are operating too early and too loosely coupled with the rendering engine
+ to know things like the current font size or the actual dimensions of
+ an image. Therefore:
+
+ 1. We use a fixed size for pixels, $pixels.per.inch
+
+ 2. We use a fixed size for "em"s, $points.per.em
+
+ Percentages are problematic. In the following discussion, we speak
+ of width and contentwidth, but the same issues apply to depth and
+ contentdepth
+
+ 1. A width of 50% means "half of the available space for the image."
+ That's fine. But note that in HTML, this is a dynamic property and
+ the image size will vary if the browser window is resized.
+
+ 2. A contentwidth of 50% means "half of the actual image width". But
+ the stylesheets have no way to assess the image's actual size. Treating
+ this as a width of 50% is one possibility, but it produces behavior
+ (dynamic scaling) that seems entirely out of character with the
+ meaning.
+
+ Instead, the stylesheets define a $nominal.image.width
+ and convert percentages to actual values based on that nominal size.
+
+ Scale can be problematic. Scale applies to the contentwidth, so
+ a scale of 50 when a contentwidth is not specified is analagous to a
+ width of 50%. (If a contentwidth is specified, the scaling factor can
+ be applied to that value and no problem exists.)
+
+ If scale is specified but contentwidth is not supplied, the
+ nominal.image.width is used to calculate a base size
+ for scaling.
+
+ Warning: as a consequence of these decisions, unless the aspect ratio
+ of your image happens to be exactly the same as (nominal width / nominal height),
+ specifying contentwidth="50%" and contentdepth="50%" is NOT going to
+ scale the way you expect (or really, the way it should).
+
+ Don't do that. In fact, a percentage value is not recommended for content
+ size at all. Use scale instead.
+
+ Finally, align and valign are troublesome. Horizontal alignment is now
+ supported by wrapping the image in a <div align="{@align}"> (in block
+ contexts!). I can't think of anything (practical) to do about vertical
+ alignment.
+ -->
+
+ <xsl:variable name="width-units">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@width">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="$default.image.width"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@width">
+ <xsl:choose>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:value-of select="$default.image.width"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scalefit">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">0</xsl:when>
+ <xsl:when test="@scale">0</xsl:when>
+ <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when>
+ <xsl:when test="$width != '' or @depth">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scale">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">1.0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when>
+ <xsl:when test="@scale">
+ <xsl:value-of select="@scale div 100.0"/>
+ </xsl:when>
+ <xsl:otherwise>1.0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'graphic' or local-name(.) = 'inlinegraphic'">
+ <!-- handle legacy graphic and inlinegraphic by new template -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- imagedata, videodata, audiodata -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="output_filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <!--
+ Moved test for $keep.relative.image.uris to template below:
+ <xsl:template match="@fileref">
+ -->
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="img.src.path.pi">
+ <xsl:call-template name="pi.dbhtml_img.src.path">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename.for.graphicsize">
+ <xsl:choose>
+ <xsl:when test="$img.src.path.pi != ''">
+ <xsl:value-of select="concat($img.src.path.pi, $filename)"/>
+ </xsl:when>
+ <xsl:when test="$img.src.path != '' and $graphicsize.use.img.src.path != 0 and $tag = 'img' and not(starts-with($filename, '/')) and not(contains($filename, '://'))">
+ <xsl:value-of select="concat($img.src.path, $filename)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="realintrinsicwidth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getWidth')">
+ <xsl:value-of select="simg:getWidth(simg:new($filename.for.graphicsize), $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getWidth')">
+ <xsl:value-of select="ximg:getWidth(ximg:new($filename.for.graphicsize), $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicwidth">
+ <xsl:choose>
+ <xsl:when test="$realintrinsicwidth = 0">
+ <xsl:value-of select="$nominal.image.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$realintrinsicwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicdepth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getDepth')">
+ <xsl:value-of select="simg:getDepth(simg:new($filename.for.graphicsize), $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getDepth')">
+ <xsl:value-of select="ximg:getDepth(ximg:new($filename.for.graphicsize), $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentwidth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@contentwidth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicwidth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentwidth">
+ <xsl:if test="$contentwidth != ''">
+ <xsl:variable name="cwidth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentwidth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cwidth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="$width"/>
+ </xsl:when>
+ <xsl:when test="$width != ''">
+ <xsl:variable name="width.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$width"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($width.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentdepth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@contentdepth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicdepth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicdepth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentdepth">
+ <xsl:if test="$contentdepth != ''">
+ <xsl:variable name="cdepth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentdepth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cdepth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth-units">
+ <xsl:if test="@depth">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:if test="@depth">
+ <xsl:choose>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="@depth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.depth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="$depth"/>
+ </xsl:when>
+ <xsl:when test="@depth and @depth != ''">
+ <xsl:variable name="depth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$depth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($depth.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="viewport">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="local-name(.) = 'inlinegraphic' or ancestor::inlinemediaobject or ancestor::inlineequation">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$make.graphic.viewport"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>=====================================
+scale: <xsl:value-of select="$scale"/>, <xsl:value-of select="$scalefit"/>
+@contentwidth <xsl:value-of select="@contentwidth"/>
+$contentwidth <xsl:value-of select="$contentwidth"/>
+scaled.contentwidth: <xsl:value-of select="$scaled.contentwidth"/>
+@width: <xsl:value-of select="@width"/>
+width: <xsl:value-of select="$width"/>
+html.width: <xsl:value-of select="$html.width"/>
+@contentdepth <xsl:value-of select="@contentdepth"/>
+$contentdepth <xsl:value-of select="$contentdepth"/>
+scaled.contentdepth: <xsl:value-of select="$scaled.contentdepth"/>
+@depth: <xsl:value-of select="@depth"/>
+depth: <xsl:value-of select="$depth"/>
+html.depth: <xsl:value-of select="$html.depth"/>
+align: <xsl:value-of select="@align"/>
+valign: <xsl:value-of select="@valign"/></xsl:message>
+-->
+
+ <xsl:variable name="scaled" select="@width|@depth|@contentwidth|@contentdepth |@scale|@scalefit"/>
+
+ <xsl:variable name="img">
+ <xsl:choose>
+ <xsl:when test="@format = 'SVG'">
+ <object type="image/svg+xml">
+ <xsl:attribute name="data">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and $tag = 'img' and not(starts-with($output_filename, '/')) and not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here-->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ <xsl:if test="@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$use.embed.for.svg != 0">
+ <embed type="image/svg+xml">
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and $tag = 'img' and not(starts-with($output_filename, '/')) and not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here -->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </embed>
+ </xsl:if>
+ </object>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$tag}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$scaled">
+ <!-- It might be possible to handle some scaling; needs -->
+ <!-- more investigation -->
+ <xsl:message>
+ <xsl:text>Warning: imagemaps not supported </xsl:text>
+ <xsl:text>on scaled images</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="usemap">
+ <xsl:value-of select="concat('#', $mapname)"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and $tag = 'img' and not(starts-with($output_filename, '/')) and not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="process.image.attributes">
+ <xsl:with-param name="alt">
+ <xsl:choose>
+ <xsl:when test="$alt != ''">
+ <xsl:copy-of select="$alt"/>
+ </xsl:when>
+ <xsl:when test="ancestor::figure">
+ <xsl:value-of select="normalize-space(ancestor::figure/title)"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:call-template name="pi.dbhtml_background-color">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="use.viewport" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.viewport">
+ <table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0">
+ <xsl:if test="$html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <tr>
+ <xsl:if test="$html.depth != '' and $depth-units != '%'">
+ <!-- don't do this for percentages because browsers get confused -->
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>height: </xsl:text>
+ <xsl:value-of select="$html.depth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <td>
+ <xsl:if test="$bgcolor != ''">
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style"><xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$img"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$img"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco and not($scaled)">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <map name="{$mapname}">
+ <xsl:for-each select="../../areaspec//area">
+ <xsl:variable name="units">
+ <xsl:choose>
+ <xsl:when test="@units = 'other' and @otherunits">
+ <xsl:value-of select="@otherunits"/>
+ </xsl:when>
+ <xsl:when test="@units">
+ <xsl:value-of select="@units"/>
+ </xsl:when>
+ <!-- areaspec|areaset/area -->
+ <xsl:when test="../@units = 'other' and ../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../@units">
+ <xsl:value-of select="../@units"/>
+ </xsl:when>
+ <!-- areaspec/areaset/area -->
+ <xsl:when test="../../@units = 'other' and ../../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../../@units">
+ <xsl:value-of select="../../@units"/>
+ </xsl:when>
+ <xsl:otherwise>calspair</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair' or $units = 'imagemap'">
+ <xsl:variable name="coords" select="normalize-space(@coords)"/>
+
+ <area shape="rect">
+ <xsl:variable name="linkends">
+ <xsl:choose>
+ <xsl:when test="@linkends">
+ <xsl:value-of select="normalize-space(@linkends)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(../@linkends)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="../@xlink:href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkends != ''">
+ <xsl:variable name="linkend">
+ <xsl:choose>
+ <xsl:when test="contains($linkends, ' ')">
+ <xsl:value-of select="substring-before($linkends, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$linkends"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="target" select="key('id', $linkend)[1]"/>
+
+ <xsl:if test="$target">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$href != ''">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$href"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="alt">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="alt[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="coords">
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair'">
+
+ <xsl:variable name="p1" select="substring-before($coords, ' ')"/>
+ <xsl:variable name="p2" select="substring-after($coords, ' ')"/>
+
+ <xsl:variable name="x1" select="substring-before($p1,',')"/>
+ <xsl:variable name="y1" select="substring-after($p1,',')"/>
+ <xsl:variable name="x2" select="substring-before($p2,',')"/>
+ <xsl:variable name="y2" select="substring-after($p2,',')"/>
+
+ <xsl:variable name="x1p" select="$x1 div 100.0"/>
+ <xsl:variable name="y1p" select="$y1 div 100.0"/>
+ <xsl:variable name="x2p" select="$x2 div 100.0"/>
+ <xsl:variable name="y2p" select="$y2 div 100.0"/>
+
+ <!--
+ <xsl:message>
+ <xsl:text>units: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$x1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$x2p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y2p"/><xsl:text>, </xsl:text>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$intrinsicdepth"/>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of
+ select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($x2p *
+ $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:message>
+ -->
+ <xsl:value-of select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($x2p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$coords"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </area>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: only calspair or </xsl:text>
+ <xsl:text>otherunits='imagemap' supported </xsl:text>
+ <xsl:text>in imageobjectco</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </map>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.image.attributes">
+ <xsl:param name="alt"/>
+ <xsl:param name="html.width"/>
+ <xsl:param name="html.depth"/>
+ <xsl:param name="longdesc"/>
+ <xsl:param name="scale"/>
+ <xsl:param name="scalefit"/>
+ <xsl:param name="scaled.contentdepth"/>
+ <xsl:param name="scaled.contentwidth"/>
+ <xsl:param name="viewport"/>
+
+ <xsl:choose>
+ <xsl:when test="@contentwidth or @contentdepth">
+ <!-- ignore @width/@depth, @scale, and @scalefit if specified -->
+ <xsl:if test="@contentwidth and $scaled.contentwidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@contentdepth and $scaled.contentdepth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$scaled.contentdepth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="number($scale) != 1.0">
+ <!-- scaling is always uniform, so we only have to specify one dimension -->
+ <!-- ignore @scalefit if specified -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scalefit != 0">
+ <xsl:choose>
+ <xsl:when test="contains($html.width, '%')">
+ <xsl:choose>
+ <xsl:when test="$viewport != 0">
+ <!-- The *viewport* will be scaled, so use 100% here! -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="contains($html.depth, '%')">
+ <!-- HTML doesn't deal with this case very well...do nothing -->
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != '' and $scaled.contentdepth != '' and $html.depth != ''">
+ <!-- scalefit should not be anamorphic; figure out which direction -->
+ <!-- has the limiting scale factor and scale in that direction -->
+ <xsl:choose>
+ <xsl:when test="$html.width div $scaled.contentwidth &gt; $html.depth div $scaled.contentdepth">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentdepth != '' and $html.depth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$alt != ''">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="normalize-space($alt)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$longdesc != ''">
+ <xsl:attribute name="longdesc">
+ <xsl:value-of select="$longdesc"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@align and $viewport = 0">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="graphic">
+ <xsl:choose>
+ <xsl:when test="parent::inlineequation">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:if test="@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="inlinegraphic">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process.image"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="mediaobject|mediaobjectco">
+
+ <xsl:variable name="olist" select="imageobject|imageobjectco |videoobject|audioobject |textobject"/>
+
+ <xsl:variable name="object.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+ <xsl:variable name="align">
+ <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$align != '' ">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:apply-templates select="$object"/>
+ <xsl:apply-templates select="caption"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="select.mediaobject"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="programlisting/inlinemediaobject |screen/inlinemediaobject" priority="2">
+ <!-- the additional span causes problems in some cases -->
+ <xsl:call-template name="select.mediaobject"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="imageobjectco">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="imageobject"/>
+ <xsl:apply-templates select="calloutlist"/>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:apply-templates select="imagedata"/>
+</xsl:template>
+
+<xsl:template match="imagedata">
+ <xsl:variable name="filename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- Handle MathML and SVG markup in imagedata -->
+ <xsl:when xmlns:mml="http://www.w3.org/1998/Math/MathML" test="mml:*">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when xmlns:svg="http://www.w3.org/2000/svg" test="svg:*">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" href="{$filename}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="phrases" select="ancestor::mediaobject/textobject[phrase] |ancestor::inlinemediaobject/textobject[phrase] |ancestor::mediaobjectco/textobject[phrase]"/>
+
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ </xsl:with-param>
+ <xsl:with-param name="longdesc">
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject" select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0 and ancestor::imageobject/parent::*/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="longdesc.uri">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc">
+ <xsl:if test="$mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="dbhtml.dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:choose>
+ <xsl:when test="$dbhtml.dir != ''">
+ <xsl:value-of select="$dbhtml.dir"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:choose>
+ <xsl:when test=" $mediaobject/@*[local-name() = 'id'] and not($use.id.as.filename = 0)">
+ <!-- * if this mediaobject has an ID, then we use the -->
+ <!-- * value of that ID as basename for the "longdesc" -->
+ <!-- * file (that is, without prepending an "ld-" too it) -->
+ <xsl:value-of select="$mediaobject/@*[local-name() = 'id']"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this mediaobject does not have an -->
+ <!-- * ID, then we generate an ID... -->
+ <xsl:variable name="image-id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ld-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ld-',$image-id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="write.longdesc">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title" select="'Long Description'"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:for-each select="$mediaobject/textobject[not(phrase)]">
+ <xsl:apply-templates select="./*"/>
+ </xsl:for-each>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="longdesc.link">
+ <xsl:param name="longdesc.uri" select="''"/>
+
+ <xsl:variable name="this.uri">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$longdesc.uri"/>
+ <xsl:with-param name="uriB" select="$this.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div class="longdesc-link" align="{$direction.align.end}">
+ <br clear="all"/>
+ <span class="longdesc-link">
+ <xsl:text>[</xsl:text>
+ <a href="{$href.to}" target="longdesc">D</a>
+ <xsl:text>]</xsl:text>
+ </span>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="videoobject">
+ <xsl:apply-templates select="videodata"/>
+</xsl:template>
+
+<xsl:template match="videodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="audioobject">
+ <xsl:apply-templates select="audiodata"/>
+</xsl:template>
+
+<xsl:template match="audiodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="textobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="textdata">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="@encoding">
+ <xsl:value-of select="@encoding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$textdata.default.encoding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="caption">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text><xsl:value-of select="@align"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- "Support" for SVG -->
+
+<xsl:template xmlns:svg="http://www.w3.org/2000/svg" match="svg:*">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+
+<!-- The following works sometimes, but needs to take into account
+ 1. When there is no /*/@xml:base
+ 2. When the chunks are going somewhere else
+<xsl:variable name="relpath">
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="filename" select="@fileref"/>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:choose>
+ <xsl:when test="/*/@xml:base
+ and starts-with($relpath,/*/@xml:base)">
+ <xsl:value-of select="substring-after($relpath,/*/@xml:base)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@fileref"/>
+ </xsl:otherwise>
+</xsl:choose>
+<xsl:value-of select="@fileref"/>
+ </xsl:when>
+-->
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri that needs xml:base processing -->
+ <xsl:call-template name="relative-uri">
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl
new file mode 100644
index 0000000..222a055
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslthl="http://xslthl.sf.net" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xslthl" version="1.0">
+ <!-- ********************************************************************
+ $Id: highlight.xsl 8911 2010-09-28 17:02:06Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ and other information.
+
+ ******************************************************************** -->
+ <xsl:import href="../highlighting/common.xsl"/>
+ <xsl:template match="xslthl:keyword" mode="xslthl">
+ <strong class="hl-keyword">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:string" mode="xslthl">
+ <strong class="hl-string">
+ <em style="color:red">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:comment" mode="xslthl">
+ <em class="hl-comment" style="color: silver">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </xsl:template>
+ <xsl:template match="xslthl:directive" mode="xslthl">
+ <span class="hl-directive" style="color: maroon">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:tag" mode="xslthl">
+ <strong class="hl-tag" style="color: #000096">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:attribute" mode="xslthl">
+ <span class="hl-attribute" style="color: #F5844C">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:value" mode="xslthl">
+ <span class="hl-value" style="color: #993300">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:html" mode="xslthl">
+ <strong>
+ <em style="color: red">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:xslt" mode="xslthl">
+ <strong style="color: #0066FF">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <!-- Not emitted since XSLTHL 2.0 -->
+ <xsl:template match="xslthl:section" mode="xslthl">
+ <strong>
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:number" mode="xslthl">
+ <span class="hl-number">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:annotation" mode="xslthl">
+ <em>
+ <span class="hl-annotation" style="color: gray">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </em>
+ </xsl:template>
+ <!-- Not sure which element will be in final XSLTHL 2.0 -->
+ <xsl:template match="xslthl:doccomment|xslthl:doctype" mode="xslthl">
+ <strong class="hl-tag" style="color: blue">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl
new file mode 100644
index 0000000..e079a73
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:set="http://exslt.org/sets" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl set" version="1.0">
+
+<!-- ********************************************************************
+ $Id: html-rtf.xsl 8345 2009-03-16 06:44:07Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This module contains templates that match against HTML nodes. It is used
+ to post-process result tree fragments for some sorts of cleanup.
+ These templates can only ever be fired by a processor that supports
+ exslt:node-set(). -->
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.p mode templates insert a particular RTF at the beginning
+ of the first paragraph in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:p|p" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="not(preceding::p|preceding::html:p)">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.text mode templates insert a particular RTF at the beginning
+ of the first text-node in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+
+ <xsl:if test="not(preceding::text())">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- unwrap.p mode templates remove blocks from HTML p elements (and
+ other places where blocks aren't allowed) -->
+
+<xsl:template name="unwrap.p">
+ <xsl:param name="p"/>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0 and function-available('set:leading') and function-available('set:trailing')">
+ <xsl:apply-templates select="exsl:node-set($p)" mode="unwrap.p"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:p|p" mode="unwrap.p">
+ <!-- xmlns:html is necessary for the xhtml stylesheet case -->
+ <xsl:variable name="blocks" select="address|blockquote|div|hr|h1|h2|h3|h4|h5|h6 |layer|p|pre|table|dl|menu|ol|ul|form |html:address|html:blockquote|html:div|html:hr |html:h1|html:h2|html:h3|html:h4|html:h5|html:h6 |html:layer|html:p|html:pre|html:table|html:dl |html:menu|html:ol|html:ul|html:form"/>
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="."/>
+ <xsl:with-param name="first" select="1"/>
+ <xsl:with-param name="nodes" select="node()"/>
+ <xsl:with-param name="blocks" select="$blocks"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="unwrap.p">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="unwrap.p">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template name="unwrap.p.nodes">
+ <xsl:param name="wrap" select="."/>
+ <xsl:param name="first" select="0"/>
+ <xsl:param name="nodes"/>
+ <xsl:param name="blocks"/>
+ <xsl:variable name="block" select="$blocks[1]"/>
+
+ <!-- This template should never get called if these functions aren't available -->
+ <!-- but this test is still necessary so that processors don't choke on the -->
+ <!-- function calls if they don't support the set: functions -->
+ <xsl:if test="function-available('set:leading') and function-available('set:trailing')">
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:variable name="leading" select="set:leading($nodes,$block)"/>
+ <xsl:variable name="trailing" select="set:trailing($nodes,$block)"/>
+
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id) and $first = 1) or $leading">
+ <xsl:element name="{local-name($wrap)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$leading" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:apply-templates select="$block" mode="unwrap.p"/>
+
+ <xsl:if test="$trailing">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="nodes" select="$trailing"/>
+ <xsl:with-param name="blocks" select="$blocks[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id) and $first = 1) or $nodes">
+ <xsl:element name="{local-name($wrap)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$nodes" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- make.verbatim.mode replaces spaces and newlines -->
+
+<xsl:template match="/" mode="make.verbatim.mode">
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="make.verbatim.mode">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="make.verbatim.mode">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="text()" mode="make.verbatim.mode">
+ <xsl:variable name="text" select="translate(., ' ', '&#160;')"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#10;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>
+</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim-recursive">
+ <xsl:param name="text" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#10;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>
+</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- remove.empty.div mode templates remove empty blocks -->
+
+<xsl:template name="remove.empty.div">
+ <xsl:param name="div"/>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($div)" mode="remove.empty.div"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$div"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:p|p|html:div|div" mode="remove.empty.div">
+ <xsl:if test="node()">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="*" mode="remove.empty.div">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="remove.empty.div">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl
new file mode 100644
index 0000000..154a645
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl
@@ -0,0 +1,598 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: html.xsl 8556 2009-12-11 00:05:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These variables set the align attribute value for HTML output based on
+ the writing-mode specified in the gentext file for the document's lang. -->
+
+<xsl:variable name="direction.align.start">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">left</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">right</xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:variable name="direction.align.end">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">right</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">left</xsl:when>
+ <xsl:otherwise>right</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:variable name="direction.mode">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">ltr</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">rtl</xsl:when>
+ <xsl:otherwise>ltr</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<!-- The generate.html.title template is currently used for generating HTML -->
+<!-- "title" attributes for some inline elements only, but not for any -->
+<!-- block elements. It is called in eleven places in the inline.xsl -->
+<!-- file. But it's called by all the inline.* templates (e.g., -->
+<!-- inline.boldseq), which in turn are called by other (element) -->
+<!-- templates, so it results, currently, in supporting generation of the -->
+<!-- HTML "title" attribute for a total of about 92 elements. -->
+<!-- You can use mode="html.title.attribute" to get a title for -->
+<!-- an element specified by a param, including targets of cross references. -->
+<xsl:template name="generate.html.title">
+ <xsl:apply-templates select="." mode="html.title.attribute"/>
+</xsl:template>
+
+<!-- Generate a title attribute for the context node -->
+<xsl:template match="*" mode="html.title.attribute">
+ <xsl:variable name="is.title">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-numbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-unnumbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="has.title.markup">
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="gentext.title">
+ <xsl:if test="$has.title.markup != '???TITLE???' and ($is.title != 0 or $is.title-numbered != 0 or $is.title-unnumbered != 0)">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($gentext.title) != 0">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$gentext.title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Fall back to alt if available -->
+ <xsl:when test="alt">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(alt)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="html.title.attribute">
+ <xsl:apply-templates select="question" mode="html.title.attribute"/>
+</xsl:template>
+
+<xsl:template match="question" mode="html.title.attribute">
+ <xsl:variable name="label.text">
+ <xsl:apply-templates select="." mode="qanda.label"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($label.text) != 0">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$label.text"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Fall back to alt if available -->
+ <xsl:when test="alt">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(alt)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="dir">
+ <xsl:param name="inherit" select="0"/>
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="@dir">
+ <xsl:value-of select="@dir"/>
+ </xsl:when>
+ <xsl:when test="$inherit != 0">
+ <xsl:value-of select="ancestor::*/@dir[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$dir != ''">
+ <xsl:attribute name="dir">
+ <xsl:value-of select="$dir"/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="anchor">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="conditional" select="1"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xslo:if xmlns:xslo="http://www.w3.org/1999/XSL/Transform" test="not($node[parent::blockquote])"><xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id">
+ <a id="{$id}"/>
+ </xsl:if></xslo:if>
+</xsl:template>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target.with.base.dir">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:call-template name="dingbat.characters">
+ <xsl:with-param name="dingbat" select="$dingbat"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat.characters">
+ <!-- now that I'm using the real serializer, all that dingbat malarky -->
+ <!-- isn't necessary anymore... -->
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">&#8226;</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#169;</xsl:when>
+ <xsl:when test="$dingbat='trademark'">&#8482;</xsl:when>
+ <xsl:when test="$dingbat='trade'">&#8482;</xsl:when>
+ <xsl:when test="$dingbat='registered'">&#174;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='nbsp'">&#160;</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">&#8220;</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">&#8221;</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">&#8216;</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">&#8217;</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">&#8212;</xsl:when>
+ <xsl:when test="$dingbat='mdash'">&#8212;</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">&#8211;</xsl:when>
+ <xsl:when test="$dingbat='ndash'">&#8211;</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#8226;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="id.warning">
+ <xsl:if test="$id.warnings != 0 and not(@id) and not(@xml:id) and parent::*">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:when>
+ <xsl:when test="substring(local-name(*[1]), string-length(local-name(*[1])-3) = 'info') and *[1]/title">
+ <xsl:value-of select="*[1]/title[1]"/>
+ </xsl:when>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:value-of select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:when test="refnamediv/refname">
+ <xsl:value-of select="refnamediv/refname[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:message>
+ <xsl:text>ID recommended on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="$title != ''">
+ <xsl:text>: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($title) &gt; 40">
+ <xsl:value-of select="substring($title,1,40)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.class.attribute">
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="class.attribute">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class attributes -->
+ <!-- Use element name by default -->
+ <xsl:attribute name="class">
+ <xsl:apply-templates select="." mode="class.value">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="*" mode="class.value">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class value only -->
+ <!-- Use element name by default -->
+ <xsl:value-of select="$class"/>
+</xsl:template>
+
+<!-- Apply common attributes such as class, lang, dir -->
+<xsl:template name="common.html.attributes">
+ <xsl:param name="inherit" select="0"/>
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="$class"/>
+ <xsl:with-param name="inherit" select="$inherit"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="common.html.attributes">
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:param name="inherit" select="0"/>
+ <xsl:call-template name="generate.html.lang"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="$inherit"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="generate.html.title"/>
+</xsl:template>
+
+<!-- Apply common attributes not including class -->
+<xsl:template name="locale.html.attributes">
+ <xsl:apply-templates select="." mode="locale.html.attributes"/>
+</xsl:template>
+
+<xsl:template match="*" mode="locale.html.attributes">
+ <xsl:call-template name="generate.html.lang"/>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+</xsl:template>
+
+<!-- Pass through any lang attributes -->
+<xsl:template name="generate.html.lang">
+ <xsl:apply-templates select="." mode="html.lang.attribute"/>
+</xsl:template>
+
+<xsl:template match="*" mode="html.lang.attribute">
+ <!-- match the attribute name to the output type -->
+ <xsl:choose>
+ <xsl:when test="@lang and $stylesheet.result.type = 'html'">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="@lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@lang and $stylesheet.result.type = 'xhtml'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="@lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@xml:lang and $stylesheet.result.type = 'html'">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="@xml:lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@xml:lang and $stylesheet.result.type = 'xhtml'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="@xml:lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Insert link to css or insert literal CSS in head element -->
+<xsl:template name="generate.css">
+ <xsl:choose>
+ <xsl:when test="$generate.css.header = 0">
+ <xsl:call-template name="generate.css.links"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.css.headers"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.css.headers">
+ <xsl:call-template name="generate.default.css.header"/>
+ <xsl:call-template name="generate.custom.css.header"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.header">
+ <xsl:if test="$make.clean.html != 0 and $docbook.css.source != ''">
+ <!-- Select default file relative to stylesheet -->
+ <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+ <xsl:call-template name="output.css.header">
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.header">
+ <xsl:if test="$custom.css.source != ''">
+ <!-- Select custom file relative to document -->
+ <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+ <xsl:call-template name="output.css.header">
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="output.css.header">
+ <xsl:param name="css.node"/>
+
+ <xsl:choose>
+ <xsl:when test="count($css.node) = 0">
+ </xsl:when>
+ <xsl:otherwise>
+ <style type="text/css">
+ <xsl:copy-of select="$css.node/text()"/>
+ </style>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.css.links">
+ <xsl:call-template name="generate.default.css.link"/>
+ <xsl:call-template name="generate.custom.css.link"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.link">
+ <xsl:if test="$make.clean.html != 0 and $docbook.css.link != 0 and $docbook.css.source != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="src" select="$docbook.css.source"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.link">
+ <xsl:if test="$custom.css.source != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="src" select="$custom.css.source"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- a CSS link reference must take into account the relative
+ path to a CSS file when chunked HTML is output to more than one directory -->
+<xsl:template name="make.css.link">
+ <xsl:param name="css.filename" select="''"/>
+
+ <xsl:variable name="href.to.uri" select="$css.filename"/>
+
+ <xsl:variable name="href.from.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+
+ <xsl:if test="string-length($css.filename) != 0">
+ <link rel="stylesheet" type="text/css" href="{$href}"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="generate.css.files">
+ <xsl:call-template name="generate.default.css.file"/>
+ <xsl:call-template name="generate.custom.css.file"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.file">
+ <xsl:if test="$make.clean.html != 0 and $generate.css.header = 0 and $docbook.css.source != ''">
+ <!-- Select default file relative to stylesheet -->
+ <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+ <xsl:call-template name="generate.css.file">
+ <xsl:with-param name="src" select="$docbook.css.source"/>
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.file">
+ <xsl:if test="$custom.css.source != '' and $generate.css.header = 0">
+ <!-- Select custom file relative to document -->
+ <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+ <xsl:call-template name="generate.css.file">
+ <xsl:with-param name="src" select="$custom.css.source"/>
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.css.file">
+ <xsl:param name="css.node"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="css.text" select="$css.node/text()"/>
+
+ <xsl:choose>
+ <xsl:when test="count($css.node) = 0">
+ <xsl:message>
+ <xsl:text>ERROR: no root element for CSS source file'</xsl:text>
+ <xsl:value-of select="$src"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.pathname">
+ <xsl:with-param name="src" select="$src"/>
+ <xsl:with-param name="content" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content" select="$css.text"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="css.output.filename">
+ <xsl:param name="content"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="candidate">
+ <xsl:choose>
+ <xsl:when test="string-length($src) = 0">
+ <xsl:message>
+ <xsl:text>ERROR: missing CSS input filename.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="substring($src,string-length($src)-3) = '.xml'">
+ <xsl:value-of select="substring($src, 1, string-length($src) - 4)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$src"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$candidate"/>
+</xsl:template>
+
+<xsl:template name="css.output.pathname">
+ <xsl:param name="content"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="file">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="src" select="$src"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="path" select="concat($base.dir, $file)"/>
+ <xsl:value-of select="$path"/>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl
new file mode 100644
index 0000000..47c9a98
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: htmltbl.xsl 8477 2009-07-13 11:38:55Z nwalsh $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colgroup" mode="htmlTable">
+ <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="col" mode="htmlTable">
+ <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="caption" mode="htmlTable">
+ <!-- do not use xsl:copy because of XHTML's needs -->
+ <caption>
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+
+ <xsl:apply-templates select=".." mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+
+ </caption>
+</xsl:template>
+
+<xsl:template match="tbody|thead|tfoot|tr" mode="htmlTable">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="th|td" mode="htmlTable">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates/> <!-- *not* mode=htmlTable -->
+ </xsl:element>
+</xsl:template>
+
+<!-- don't copy through DocBook-specific attributes on HTML table markup -->
+<!-- default behavior is to not copy through because there are more
+ DocBook attributes than HTML attributes -->
+<xsl:template mode="htmlTableAtt" match="@*"/>
+
+<!-- copy these through -->
+<xsl:template mode="htmlTableAtt" match="@abbr | @align | @axis | @bgcolor | @border | @cellpadding | @cellspacing | @char | @charoff | @class | @dir | @frame | @headers | @height | @lang | @nowrap | @onclick | @ondblclick | @onkeydown | @onkeypress | @onkeyup | @onmousedown | @onmousemove | @onmouseout | @onmouseover | @onmouseup | @rules | @style | @summary | @title | @valign | @valign | @width | @xml:lang">
+ <xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="@span|@rowspan|@colspan" mode="htmlTableAtt">
+ <!-- No need to copy through the DTD's default value "1" of the attribute -->
+ <xsl:if test="number(.) != 1">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- map floatstyle to HTML float values -->
+<xsl:template match="@floatstyle" mode="htmlTableAtt">
+ <xsl:attribute name="style">
+ <xsl:text>float: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains(., 'left')">left</xsl:when>
+ <xsl:when test="contains(., 'right')">right</xsl:when>
+ <xsl:when test="contains(., 'start')">
+ <xsl:value-of select="$direction.align.start"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'end')">
+ <xsl:value-of select="$direction.align.end"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'inside')">
+ <xsl:value-of select="$direction.align.start"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'outside')">
+ <xsl:value-of select="$direction.align.end"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'before')">none</xsl:when>
+ <xsl:when test="contains(., 'none')">none</xsl:when>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:attribute>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl
new file mode 100644
index 0000000..2c39f4f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: index.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="index.titlepage"/>
+ <xsl:choose>
+ <xsl:when test="indexdiv">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <!-- Because it's actually valid for Index to have neither any -->
+ <!-- Indexdivs nor any Indexentries, we need to check and make -->
+ <!-- sure that at least one Indexentry exists, and generate a -->
+ <!-- wrapper dl if there is at least one; otherwise, do nothing. -->
+ <xsl:if test="indexentry">
+ <!-- The indexentry template assumes a parent dl wrapper has -->
+ <!-- been generated; for Indexes that have Indexdivs, the dl -->
+ <!-- wrapper is generated by the indexdiv template; however, -->
+ <!-- for Indexes that lack Indexdivs, if we don't generate a -->
+ <!-- dl here, HTML output will not be valid. -->
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="setindex">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="setindex.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="index/indexinfo"/>
+<xsl:template match="index/info"/>
+<xsl:template match="index/title"/>
+<xsl:template match="index/subtitle"/>
+<xsl:template match="index/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexdiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexterm">
+ <!-- this one must have a name, even if it doesn't have an ID -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <a id="{$id}" class="indexterm"/>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary|see|seealso">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexentry">
+ <xsl:apply-templates select="primaryie"/>
+</xsl:template>
+
+<xsl:template match="primaryie">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <xsl:apply-templates select="following-sibling::seeie [not(preceding-sibling::secondaryie)]" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie [not(preceding-sibling::secondaryie)]" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::secondaryie" mode="indexentry"/>
+ </dd>
+</xsl:template>
+
+<!-- Handled in mode to convert flat list to structured output -->
+<xsl:template match="secondaryie">
+</xsl:template>
+<xsl:template match="tertiaryie">
+</xsl:template>
+<xsl:template match="seeie|seealsoie">
+</xsl:template>
+
+<xsl:template match="secondaryie" mode="indexentry">
+ <dl>
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <!-- select following see* elements up to next secondaryie or tertiary or end -->
+ <xsl:variable name="after.this" select="following-sibling::*"/>
+ <xsl:variable name="next.entry" select="(following-sibling::secondaryie|following-sibling::tertiaryie)[1]"/>
+ <xsl:variable name="before.entry" select="$next.entry/preceding-sibling::*"/>
+ <xsl:variable name="see.intersection" select="$after.this[count(.|$before.entry) = count($before.entry)] [self::seeie or self::seealsoie]"/>
+ <xsl:choose>
+ <xsl:when test="count($see.intersection) != 0">
+ <xsl:apply-templates select="$see.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="count($next.entry) = 0">
+ <xsl:apply-templates select="following-sibling::seeie" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie" mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- now process any tertiaryie before the next secondaryie -->
+ <xsl:variable name="before.next.secondary" select="following-sibling::secondaryie[1]/preceding-sibling::*"/>
+ <xsl:variable name="tertiary.intersection" select="$after.this[count(.|$before.next.secondary) = count($before.next.secondary)] [not(self::seeie) and not(self::seealsoie)]"/>
+ <xsl:choose>
+ <xsl:when test="count($tertiary.intersection) != 0">
+ <xsl:apply-templates select="$tertiary.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="not(following-sibling::secondaryie)">
+ <xsl:apply-templates select="following-sibling::tertiaryie" mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+ </dd>
+ </dl>
+</xsl:template>
+
+<xsl:template match="tertiaryie" mode="indexentry">
+ <dl>
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <!-- select following see* elements up to next secondaryie or tertiary or end -->
+ <xsl:variable name="after.this" select="following-sibling::*"/>
+ <xsl:variable name="next.entry" select="(following-sibling::secondaryie|following-sibling::tertiaryie)[1]"/>
+ <xsl:variable name="before.entry" select="$next.entry/preceding-sibling::*"/>
+ <xsl:variable name="see.intersection" select="$after.this[count(.|$before.entry) = count($before.entry)] [self::seeie or self::seealsoie]"/>
+ <xsl:choose>
+ <xsl:when test="count($see.intersection) != 0">
+ <xsl:apply-templates select="$see.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="count($next.entry) = 0">
+ <xsl:apply-templates select="following-sibling::seeie" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie" mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+ </dd>
+ </dl>
+</xsl:template>
+
+<xsl:template match="seeie" mode="indexentry">
+ <dt>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </dt>
+</xsl:template>
+
+<xsl:template match="seealsoie" mode="indexentry">
+ <div>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl
new file mode 100644
index 0000000..76285ab
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: info.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These templates define the "default behavior" for info
+ elements. Even if you don't process the *info wrappers,
+ some of these elements are needed because the elements are
+ processed from named templates that are called with modes.
+ Since modes aren't sticky, these rules apply.
+ (TODO: clarify this comment) -->
+
+<!-- ==================================================================== -->
+<!-- called from named templates in a given mode -->
+
+<xsl:template match="corpauthor">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="jobtitle">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl
new file mode 100644
index 0000000..da72226
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl
@@ -0,0 +1,1451 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink suwl" version="1.0">
+
+<!-- ********************************************************************
+ $Id: inline.xsl 8811 2010-08-09 20:24:45Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm)"/>
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm/@baseform)"/>
+
+<xsl:template name="simple.xlink">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:param name="linkend" select="$node/@linkend"/>
+ <xsl:param name="xhref" select="$node/@xlink:href"/>
+
+ <!-- Support for @xlink:show -->
+ <xsl:variable name="target.show">
+ <xsl:choose>
+ <xsl:when test="$node/@xlink:show = 'new'">_blank</xsl:when>
+ <xsl:when test="$node/@xlink:show = 'replace'">_top</xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="link">
+ <xsl:choose>
+ <xsl:when test="$xhref and (not($node/@xlink:type) or $node/@xlink:type='simple')">
+
+ <!-- Is it a local idref or a uri? -->
+ <xsl:variable name="is.idref">
+ <xsl:choose>
+ <!-- if the href starts with # and does not contain an "(" -->
+ <!-- or if the href starts with #xpointer(id(, it's just an ID -->
+ <xsl:when test="starts-with($xhref,'#') and (not(contains($xhref,'(')) or starts-with($xhref, '#xpointer(id('))">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Is it an olink ? -->
+ <xsl:variable name="is.olink">
+ <xsl:choose>
+ <!-- If xlink:role="http://docbook.org/xlink/role/olink" -->
+ <!-- and if the href contains # -->
+ <xsl:when test="contains($xhref,'#') and @xlink:role = $xolink.role">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$is.olink = 1">
+ <xsl:call-template name="olink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$is.idref = 1">
+
+ <xsl:variable name="idref">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targets" select="key('id',$idref)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$idref"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XLink to nonexistent id: </xsl:text>
+ <xsl:value-of select="$idref"/>
+ </xsl:message>
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$target" mode="html.title.attribute"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$target.show !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$target.show"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- otherwise it's a URI -->
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$xhref"/>
+ </xsl:attribute>
+ <xsl:if test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- For URIs, use @xlink:show if defined, otherwise use ulink.target -->
+ <xsl:choose>
+ <xsl:when test="$target.show !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$target.show"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$ulink.target !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:copy-of select="$content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$linkend">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$target" mode="html.title.attribute"/>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.charseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- * if you want output from the inline.charseq template wrapped in -->
+ <!-- * something other than a Span, call the template with some value -->
+ <!-- * for the 'wrapper-name' param -->
+ <xsl:param name="wrapper-name">span</xsl:param>
+ <xsl:element name="{$wrapper-name}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="inline.monoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+</xsl:template>
+
+<xsl:template name="inline.boldseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title' and (local-name(../..) = 'figure' or local-name(../..) = 'example' or local-name(../..) = 'table')">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:copy-of select="$content"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.italicseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.boldmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <!-- or other titles that may already be represented with <strong>'s. -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title' and (local-name(../..) = 'figure' or local-name(../..) = 'example' or local-name(../..) = 'table' or local-name(../..) = 'formalpara')">
+ <code>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:call-template name="common.html.attributes"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ </code>
+ <xsl:call-template name="apply-annotations"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.italicmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:call-template name="common.html.attributes"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.superscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sup>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sup>
+</xsl:template>
+
+<xsl:template name="inline.subscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sub>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sub>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- some special cases -->
+
+<xsl:template match="author">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="accel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="action">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="application">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="exceptionname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="interfacename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="methodname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="computeroutput">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="constant">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="database">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="date">
+ <!-- should this support locale-specific formatting? how? -->
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorcode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortype">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortext">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="envar">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="filename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="function">
+ <xsl:choose>
+ <xsl:when test="$function.parens != '0' and (parameter or function or replaceable)">
+ <xsl:variable name="nodes" select="text()|*"/>
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$nodes[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="$nodes[position()&gt;1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="function/parameter" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="function/replaceable" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="guibutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guiicon">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guilabel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenuitem">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guisubmenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="hardware">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interface">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interfacedefinition">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keycap">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="keycode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keysym">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="literal">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="code">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="medialabel">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="shortcut">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="mousebutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="option">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="package">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="parameter">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="property">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="prompt">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="replaceable" priority="1">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="returnvalue">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="structfield">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="structname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="symbol">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="systemitem">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="token">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="type">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="userinput">
+ <xsl:call-template name="inline.boldmonoseq"/>
+</xsl:template>
+
+<xsl:template match="abbrev">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">abbr</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acronym">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">acronym</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <xsl:choose>
+ <xsl:when test="$citerefentry.link != '0'">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="generate.citerefentry.link"/>
+ </xsl:attribute>
+ <xsl:call-template name="inline.charseq"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.citerefentry.link">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template name="x.generate.citerefentry.link">
+ <xsl:text>http://example.com/cgi-bin/man.cgi?</xsl:text>
+ <xsl:value-of select="refentrytitle"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="manvolnum"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="citetitle">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <span>
+ <xsl:choose>
+ <!-- We don't want empty @class values, so do not propagate empty @roles -->
+ <xsl:when test="@role and normalize-space(@role) != '' and $emphasis.propagates.style != 0">
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="@role = 'bold' or @role='strong'">
+ <!-- backwards compatibility: make bold into b elements, but -->
+ <!-- don't put bold inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title' and (local-name(../..) = 'figure' or local-name(../..) = 'example' or local-name(../..) = 'table')">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@role and $emphasis.propagates.style != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="foreignphrase">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.italicseq"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="markup">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phrase">
+ <span>
+ <xsl:call-template name="locale.html.attributes"/>
+ <!-- We don't want empty @class values, so do not propagate empty @roles -->
+ <xsl:if test="@role and normalize-space(@role) != '' and $phrase.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="quote">
+ <xsl:variable name="depth">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string">
+ <xsl:number level="multiple"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$depth mod 2 = 0">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nestedstartquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.nestedendquote"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="wordasword">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="lineannotation">
+ <em>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.charseq"/>
+ </em>
+</xsl:template>
+
+<xsl:template match="superscript">
+ <xsl:call-template name="inline.superscriptseq"/>
+</xsl:template>
+
+<xsl:template match="subscript">
+ <xsl:call-template name="inline.subscriptseq"/>
+</xsl:template>
+
+<xsl:template match="trademark">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:choose>
+ <xsl:when test="@class = 'copyright' or @class = 'registered'">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@class = 'service'">
+ <sup>SM</sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="'trademark'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="firstterm">
+ <xsl:call-template name="glossterm">
+ <xsl:with-param name="firstterm" select="1"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="glossterm" name="glossterm">
+ <xsl:param name="firstterm" select="0"/>
+
+ <!-- To avoid extra <a name=""> anchor from inline.italicseq -->
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend) and ($firstterm.only.link = 0 or $firstterm = 1) and ($glossterm.auto.link != 0) and $glossary.collection != ''">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cterm" select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/>
+
+ <!-- HACK HACK HACK! But it works... -->
+ <!-- You'd need to do more work if you wanted to chunk on glossdiv, though -->
+
+ <xsl:variable name="glossary" select="//glossary[@role='auto']"/>
+
+ <xsl:if test="count($glossary) != 1">
+ <xsl:message>
+ <xsl:text>Warning: glossary.collection specified, but there are </xsl:text>
+ <xsl:value-of select="count($glossary)"/>
+ <xsl:text> automatic glossaries</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="glosschunk">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$glossary"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunkbase">
+ <xsl:choose>
+ <xsl:when test="contains($glosschunk, '#')">
+ <xsl:value-of select="substring-before($glosschunk, '#')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$glosschunk"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($cterm)">
+ <xsl:message>
+ <xsl:text>There's no entry for </xsl:text>
+ <xsl:value-of select="$term"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cterm"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <a href="{$chunkbase}#{$id}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend) and ($firstterm.only.link = 0 or $firstterm = 1) and $glossterm.auto.link != 0">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform">
+ <xsl:value-of select="normalize-space(@baseform)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="targets" select="key('glossentries', $term)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no glossentry for glossterm: </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="termdef">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'prefix'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'suffix'"/>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="sgmltag|tag">
+ <xsl:call-template name="format.sgmltag"/>
+</xsl:template>
+
+<xsl:template name="format.sgmltag">
+ <xsl:param name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>element</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$class='attribute'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='attvalue'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='element'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='endtag'">
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='genentity'">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='numcharref'">
+ <xsl:text>&amp;#</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='paramentity'">
+ <xsl:text>%</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='pi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='xmlpi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>?&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='starttag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='emptytag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>/&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='sgmlcomment' or $class='comment'">
+ <xsl:text>&lt;!--</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>--&gt;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="concat('sgmltag-', $class)"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </code>
+</xsl:template>
+
+<xsl:template match="email">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&lt;</xsl:text>
+ </xsl:if>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:text>mailto:</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&gt;</xsl:text>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="keycombo">
+ <xsl:variable name="action" select="@action"/>
+ <xsl:variable name="joinchar">
+ <xsl:choose>
+ <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when>
+ <xsl:when test="$action='simul'">+</xsl:when>
+ <xsl:when test="$action='press'">-</xsl:when>
+ <xsl:when test="$action='click'">-</xsl:when>
+ <xsl:when test="$action='double-click'">-</xsl:when>
+ <xsl:when test="$action='other'"/>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="*">
+ <xsl:if test="position()&gt;1"><xsl:value-of select="$joinchar"/></xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="uri">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="menuchoice">
+ <xsl:variable name="shortcut" select="./shortcut"/>
+ <xsl:call-template name="process.menuchoice"/>
+ <xsl:if test="$shortcut">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="$shortcut"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.menuchoice">
+ <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($nodelist)"/>
+ <xsl:when test="$count=1">
+ <xsl:apply-templates select="$nodelist[$count=position()]"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="node" select="$nodelist[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='guimenuitem' or local-name($node)='guisubmenu'">
+ <xsl:value-of select="$menuchoice.menu.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$menuchoice.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$node"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+</xsl:template>
+
+<xsl:template match="citation">
+ <!-- todo: integrate with bibliography collection -->
+ <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to abbrev -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$target" mode="citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </a>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="citebiblioid">
+ <xsl:variable name="targets" select="//*[biblioid = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to parent of biblioid -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.charseq"/>
+
+ </a>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="citation">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="comment[parent::answer|parent::appendix|parent::article|parent::bibliodiv|&#10; parent::bibliography|parent::blockquote|parent::caution|parent::chapter|&#10; parent::glossary|parent::glossdiv|parent::important|parent::index|&#10; parent::indexdiv|parent::listitem|parent::note|parent::orderedlist|&#10; parent::partintro|parent::preface|parent::procedure|parent::qandadiv|&#10; parent::qandaset|parent::question|parent::refentry|parent::refnamediv|&#10; parent::refsect1|parent::refsect2|parent::refsect3|parent::refsection|&#10; parent::refsynopsisdiv|parent::sect1|parent::sect2|parent::sect3|parent::sect4|&#10; parent::sect5|parent::section|parent::setindex|parent::sidebar|&#10; parent::simplesect|parent::taskprerequisites|parent::taskrelated|&#10; parent::tasksummary|parent::warning]|remark[parent::answer|parent::appendix|parent::article|parent::bibliodiv|&#10; parent::bibliography|parent::blockquote|parent::caution|parent::chapter|&#10; parent::glossary|parent::glossdiv|parent::important|parent::index|&#10; parent::indexdiv|parent::listitem|parent::note|parent::orderedlist|&#10; parent::partintro|parent::preface|parent::procedure|parent::qandadiv|&#10; parent::qandaset|parent::question|parent::refentry|parent::refnamediv|&#10; parent::refsect1|parent::refsect2|parent::refsect3|parent::refsection|&#10; parent::refsynopsisdiv|parent::sect1|parent::sect2|parent::sect3|parent::sect4|&#10; parent::sect5|parent::section|parent::setindex|parent::sidebar|&#10; parent::simplesect|parent::taskprerequisites|parent::taskrelated|&#10; parent::tasksummary|parent::warning]">
+ <xsl:if test="$show.comments != 0">
+ <p class="remark"><em><xsl:call-template name="inline.charseq"/></em></p>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="comment|remark">
+ <xsl:if test="$show.comments != 0">
+ <em><xsl:call-template name="inline.charseq"/></em>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productname">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="productnumber">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="pob|street|city|state|postcode|country|otheraddr">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phone|fax">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- in Addresses, for example -->
+<xsl:template match="honorific|firstname|surname|lineage|othername">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="person">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="personname"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="personname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="org">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="beginpage">
+ <!-- does nothing; this *is not* markup to force a page break. -->
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl
new file mode 100644
index 0000000..5f6b4fb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: keywords.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="keywordset"/>
+<xsl:template match="subjectset"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="keywordset" mode="html.header">
+ <meta name="keywords">
+ <xsl:attribute name="content">
+ <xsl:apply-templates select="keyword" mode="html.header"/>
+ </xsl:attribute>
+ </meta>
+</xsl:template>
+
+<xsl:template match="keyword" mode="html.header">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::keyword">, </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl
new file mode 100644
index 0000000..967443f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl
@@ -0,0 +1,1088 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: lists.xsl 8524 2009-10-10 02:45:47Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="itemizedlist">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::listitem or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::listitem)] |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <ul>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:if test="$css.decoration != 0">
+
+ </xsl:if>
+
+ <xsl:if test="@spacing='compact'"><xsl:message><xsl:text>Compact spacing via @spacing attribute cannot be set in strict XHTML output for listitem: </xsl:text><xsl:value-of select="@spacing"/></xsl:message></xsl:if>
+ <xsl:apply-templates select="listitem |comment()[preceding-sibling::listitem] |processing-instruction()[preceding-sibling::listitem]"/>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="itemizedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <xsl:variable name="mark" select="../@mark"/>
+ <xsl:variable name="override" select="@override"/>
+
+ <xsl:variable name="usemark">
+ <xsl:choose>
+ <xsl:when test="$override != ''">
+ <xsl:value-of select="$override"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$mark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cssmark">
+ <xsl:choose>
+ <xsl:when test="$usemark = 'opencircle'">circle</xsl:when>
+ <xsl:when test="$usemark = 'bullet'">disc</xsl:when>
+ <xsl:when test="$usemark = 'box'">square</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$usemark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$css.decoration = '1' and $cssmark != ''">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:value-of select="$cssmark"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="orderedlist">
+ <xsl:variable name="start">
+ <xsl:call-template name="orderedlist-starting-number"/>
+ </xsl:variable>
+
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration"/>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">1</xsl:when>
+ <xsl:when test="$numeration='loweralpha'">a</xsl:when>
+ <xsl:when test="$numeration='lowerroman'">i</xsl:when>
+ <xsl:when test="$numeration='upperalpha'">A</xsl:when>
+ <xsl:when test="$numeration='upperroman'">I</xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected numeration: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ </xsl:message>
+ <xsl:value-of select="1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::listitem or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::listitem)] |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <xsl:choose>
+ <xsl:when test="@inheritnum='inherit' and ancestor::listitem[parent::orderedlist]">
+ <table border="0">
+ <xsl:call-template name="generate.class.attribute"/>
+ <col align="{$direction.align.start}" valign="top"/>
+ <tbody>
+ <xsl:apply-templates mode="orderedlist-table" select="listitem |comment()[preceding-sibling::listitem] |processing-instruction()[preceding-sibling::listitem]"/>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:if test="$start != '1'"><xsl:message><xsl:text>Strict XHTML does not allow setting @start attribute for lists! </xsl:text></xsl:message></xsl:if>
+ <xsl:if test="$numeration != ''">
+
+ </xsl:if>
+ <xsl:if test="@spacing='compact'"><xsl:message><xsl:text>Compact spacing via @spacing attribute cannot be set in strict XHTML output for listitem: </xsl:text><xsl:value-of select="@spacing"/></xsl:message></xsl:if>
+ <xsl:apply-templates select="listitem |comment()[preceding-sibling::listitem] |processing-instruction()[preceding-sibling::listitem]"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="orderedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem">
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="@override"><xsl:message><xsl:text>@override attribute cannot be set in strict XHTML output for listitem: </xsl:text><xsl:value-of select="@override"/></xsl:message></xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem" mode="orderedlist-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="." mode="item-number"/>
+ </td>
+ <td>
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="pi-presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:choose>
+ <xsl:when test="$pi-presentation != ''">
+ <xsl:value-of select="$pi-presentation"/>
+ </xsl:when>
+ <xsl:when test="$variablelist.as.table != 0">
+ <xsl:value-of select="'table'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'list'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbhtml_term-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::varlistentry or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::varlistentry)] |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <col align="{$direction.align.start}" valign="top">
+ <xsl:if test="$term-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$term-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ <tbody>
+ <xsl:apply-templates mode="varlist-table" select="varlistentry |comment()[preceding-sibling::varlistentry] |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::varlistentry or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::varlistentry)] |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <dl>
+ <xsl:apply-templates select="varlistentry |comment()[preceding-sibling::varlistentry] |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="variablelist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="listitem/simpara" priority="2">
+ <!-- If a listitem contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*) and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:choose>
+ <xsl:when test="@role and $para.propagates.style != 0">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry">
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="term"/>
+ </dt>
+ <dd>
+ <xsl:apply-templates select="listitem"/>
+ </dd>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="varlist-table">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_term-presentation">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="separator">
+ <xsl:call-template name="pi.dbhtml_term-separator">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="variablelist" count="varlistentry"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td>
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$presentation = 'bold'">
+ <strong>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </strong>
+ </xsl:when>
+ <xsl:when test="$presentation = 'italic'">
+ <em>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </em>
+ </xsl:when>
+ <xsl:when test="$presentation = 'bold-italic'">
+ <strong>
+ <em>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </em>
+ </strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </td>
+ <td>
+ <xsl:apply-templates select="listitem"/>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="varlistentry/term">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <xsl:value-of select="$variablelist.term.separator"/>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <br/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem">
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="simplelist">
+ <!-- with no type specified, the default is 'vert' -->
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <!-- if dbchoice PI exists, use that to determine the choice separator -->
+ <!-- (that is, equivalent of "and" or "or" in current locale), or literal -->
+ <!-- value of "choice" otherwise -->
+ <xsl:variable name="localized-choice-separator">
+ <xsl:choose>
+ <xsl:when test="processing-instruction('dbchoice')">
+ <xsl:call-template name="select.choice.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="member">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="position() = last() - 1">
+ <xsl:if test="$localized-choice-separator != ''">
+ <xsl:value-of select="$localized-choice-separator"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </span>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='horiz']">
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='vert']">
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+
+ <xsl:if test="$cell &lt;= count($members)">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="(($cell - 1) div $cols) + 1"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell + $cols"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="rows" select="floor((count($members)+$cols - 1) div $cols)"/>
+
+ <xsl:if test="$cell &lt;= $rows">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="$cell"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="rows">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell+$rows"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="member">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="procedure">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:variable name="preamble" select="*[not(self::step or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::step)] |processing-instruction()[not(preceding-sibling::step)]"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="title">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:choose>
+ <xsl:when test="count(step) = 1">
+ <ul>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:apply-templates select="step |comment()[preceding-sibling::step] |processing-instruction()[preceding-sibling::step]"/>
+ </ul>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:call-template name="generate.class.attribute"/>
+
+ <xsl:apply-templates select="step |comment()[preceding-sibling::step] |processing-instruction()[preceding-sibling::step]"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="procedure/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="substeps"><xsl:variable name="numeration"><xsl:call-template name="procedure.step.numeration"/></xsl:variable><xsl:variable name="cssstyle"><xsl:choose><xsl:when test="$numeration = '1'">decimal</xsl:when><xsl:when test="$numeration = 'a'">lower-alpha</xsl:when><xsl:when test="$numeration = 'i'">lower-roman</xsl:when><xsl:when test="$numeration = 'A'">upper-alpha</xsl:when><xsl:when test="$numeration = 'I'">upper-roman</xsl:when><xsl:otherwise><xsl:message>Warning: unknown procedure.step.numeration value: <xsl:value-of select="$numeration"/></xsl:message></xsl:otherwise></xsl:choose></xsl:variable><xsl:call-template name="anchor"/><ol><xsl:attribute name="style"><xsl:text>list-style-type: </xsl:text><xsl:value-of select="$cssstyle"/></xsl:attribute><xsl:apply-templates/></ol></xsl:template>
+
+<xsl:template match="step">
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<xsl:template match="stepalternatives">
+ <xsl:call-template name="anchor"/>
+ <ul>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </ul>
+</xsl:template>
+
+<xsl:template match="step/title">
+ <p>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates/>
+ </strong>
+ </p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="segmentedlist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$segmentedlist.as.table != 0">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist/title">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong>
+ <span>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:apply-templates/>
+ </span>
+ </strong>
+ </div>
+</xsl:template>
+
+<xsl:template match="segtitle">
+</xsl:template>
+
+<xsl:template match="segtitle" mode="segtitle-in-seg">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seglistitem">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="seg">
+ <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
+ <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
+ <xsl:variable name="segtitles" select="$seglist/segtitle"/>
+
+ <!--
+ Note: segtitle is only going to be the right thing in a well formed
+ SegmentedList. If there are too many Segs or too few SegTitles,
+ you'll get something odd...maybe an error
+ -->
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong>
+ <span class="segtitle">
+ <xsl:apply-templates select="$segtitles[$segnum=position()]" mode="segtitle-in-seg"/>
+ <xsl:text>: </xsl:text>
+ </span>
+ </strong>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist" mode="seglist-table">
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:apply-templates select="title"/>
+
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <thead>
+ <tr class="segtitle">
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="segtitle[1]"/>
+ <xsl:with-param name="rownum" select="1"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="segtitle" mode="seglist-table"/>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<xsl:template match="segtitle" mode="seglist-table">
+ <th><xsl:apply-templates/></th>
+</xsl:template>
+
+<xsl:template match="seglistitem" mode="seglist-table">
+ <xsl:variable name="seglinum">
+ <xsl:number from="segmentedlist" count="seglistitem"/>
+ </xsl:variable>
+
+ <tr>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum" select="$seglinum + 1"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="seglist-table"/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="seg" mode="seglist-table">
+ <td>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </td>
+</xsl:template>
+
+<xsl:template match="seg[1]" mode="seglist-table">
+ <td>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::seglistitem"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="calloutlist">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title|info/title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::callout or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::callout)] |processing-instruction()[not(preceding-sibling::callout)]"/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <table border="0" summary="Callout list">
+ <xsl:apply-templates select="callout |comment()[preceding-sibling::callout] |processing-instruction()[preceding-sibling::callout]"/>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl compact="compact">
+ <xsl:apply-templates select="callout |comment()[preceding-sibling::callout] |processing-instruction()[preceding-sibling::callout]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="calloutlist/title">
+</xsl:template>
+
+<xsl:template match="callout">
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="calloutlist" count="callout"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td valign="top" align="{$direction.align.start}">
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </p>
+ </td>
+ <td valign="top" align="{$direction.align.start}">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </dt>
+ <dd><xsl:apply-templates/></dd>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="callout/simpara" priority="2">
+ <!-- If a callout contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*) and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:choose>
+ <xsl:when test="@role and $para.propagates.style != 0">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="callout.arearefs">
+ <xsl:param name="arearefs"/>
+ <xsl:if test="$arearefs!=''">
+ <xsl:choose>
+ <xsl:when test="substring-before($arearefs,' ')=''">
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="$arearefs"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="substring-before($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="substring-after($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="callout.arearef">
+ <xsl:param name="arearef"/>
+ <xsl:variable name="targets" select="key('id',$arearef)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$arearef"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target)=0">
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='co'">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="$arearef"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="callout-bug"/>
+ </a>
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='areaset'">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($target)='area'">
+ <xsl:choose>
+ <xsl:when test="$target/parent::areaset">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target/parent::areaset" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="orderedlist-starting-number">
+ <xsl:param name="list" select="."/>
+ <xsl:variable name="pi-start">
+ <xsl:call-template name="pi.dbhtml_start">
+ <xsl:with-param name="node" select="$list"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="output-orderedlist-starting-number">
+ <xsl:with-param name="list" select="$list"/>
+ <xsl:with-param name="pi-start" select="$pi-start"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl
new file mode 100644
index 0000000..d1f710f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: maketoc.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk.xsl"/>
+
+<xsl:output method="xml" indent="no" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
+
+<xsl:param name="toc.list.type" select="'tocentry'"/>
+
+<!-- refentry in autotoc.xsl does not use subtoc, so must
+ handle it explicitly here. -->
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+<xsl:template name="subtoc">
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+ <xsl:variable name="filename">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:if test="$chunk != 0">
+ <xsl:call-template name="indent-spaces"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <tocentry linkend="{$id}">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:text>filename="</xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:text>
+</xsl:text>
+ <xsl:apply-templates mode="toc" select="$nodes"/>
+ <xsl:call-template name="indent-spaces"/>
+ </tocentry>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="indent-spaces">
+ <xsl:param name="node" select="."/>
+ <xsl:text> </xsl:text>
+ <xsl:if test="$node/parent::*">
+ <xsl:call-template name="indent-spaces">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/" priority="-1">
+ <xsl:text>
+</xsl:text>
+ <toc role="chunk-toc">
+ <xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="/" mode="toc"/>
+ </toc>
+ <xsl:text>
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl
new file mode 100644
index 0000000..26b51d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: manifest.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- OBSOLETE. The templates from this file were moved to -->
+<!-- chunk-common.xsl and chunk-code.xsl. -->
+<!-- ==================================================================== -->
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl
new file mode 100644
index 0000000..b2cac2d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="mml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: math.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="inlineequation">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="alt">
+</xsl:template>
+
+<xsl:template match="mathphrase">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- "Support" for MathML -->
+
+<xsl:template match="mml:*">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- Support for TeX math in alt -->
+
+<xsl:template match="*" mode="collect.tex.math">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$tex.math.file"/>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$tex.math.in.alt = 'plain'">
+ <xsl:call-template name="tex.math.plain.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.plain"/>
+ <xsl:call-template name="tex.math.plain.tail"/>
+ </xsl:when>
+ <xsl:when test="$tex.math.in.alt = 'latex'">
+ <xsl:call-template name="tex.math.latex.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.latex"/>
+ <xsl:call-template name="tex.math.latex.tail"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Unsupported TeX math notation:
+ <xsl:value-of select="$tex.math.in.alt"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- PlainTeX -->
+
+<xsl:template name="tex.math.plain.head">
+ <xsl:text>\nopagenumbers
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.plain.tail">
+ <xsl:text>\bye
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.plain"/>
+
+<!-- LaTeX -->
+
+<xsl:template name="tex.math.latex.head">
+ <xsl:text>\documentclass{article}
+</xsl:text>
+ <xsl:text>\pagestyle{empty}
+</xsl:text>
+ <xsl:text>\begin{document}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.latex.tail">
+ <xsl:text>\end{document}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.latex"/>
+
+<!-- Extracting image filename from mediaobject and graphic elements -->
+
+<xsl:template name="select.mediaobject.filename">
+ <xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/>
+
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$mediaobject.index != ''">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="$olist[position() = $mediaobject.index]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="tex.math.output.delims">
+ <xsl:variable name="pi.delims">
+ <xsl:call-template name="pi.dbtex_delims">
+ <xsl:with-param name="node" select="descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="result">
+ <xsl:choose>
+ <xsl:when test="$pi.delims = 'no'">0</xsl:when>
+ <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$result"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl
new file mode 100644
index 0000000..e727bf1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="http://xml.apache.org/xalan/redirect" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.1" exclude-result-prefixes="doc" extension-element-prefixes="saxon redirect lxslt">
+
+<!-- ********************************************************************
+ $Id: oldchunker.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with Saxon and Xalan; for XT use xtchunker.xsl -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="default.encoding" select="'ISO-8859-1'" doc:type="string"/>
+
+<doc:param xmlns="" name="default.encoding">
+<refpurpose xmlns="http://www.w3.org/1999/xhtml">Encoding used in generated HTML pages</refpurpose>
+<refdescription xmlns="http://www.w3.org/1999/xhtml">
+<para>This encoding is used in files generated by chunking stylesheet. Currently
+only Saxon is able to change output encoding.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'" doc:type="string"/>
+
+<doc:param xmlns="" name="saxon.character.representation">
+<refpurpose xmlns="http://www.w3.org/1999/xhtml">Saxon character representation used in generated HTML pages</refpurpose>
+<refdescription xmlns="http://www.w3.org/1999/xhtml">
+<para>This character representation is used in files generated by chunking stylesheet. If
+you want to suppress entity references for characters with direct representation
+in default.encoding, set this parameter to value <literal>native</literal>.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Chunking isn't supported with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="doctype-public" select="''"/>
+ <xsl:param name="doctype-system" select="''"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl
new file mode 100644
index 0000000..15a04e1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl
new file mode 100644
index 0000000..e687d52
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 8552 2009-12-07 17:45:26Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="abstract.notitle.enabled" select="0"/>
+<xsl:param name="admon.graphics.extension">.png</xsl:param>
+<xsl:param name="admon.graphics" select="0"/>
+<xsl:param name="admon.graphics.path">images/</xsl:param>
+<xsl:param name="admon.style">
+ <xsl:value-of select="concat('margin-', $direction.align.start, ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"/>
+</xsl:param>
+<xsl:param name="admon.textlabel" select="1"/>
+<xsl:param name="annotate.toc" select="1"/>
+<xsl:param name="annotation.css">
+/* ======================================================================
+ Annotations
+*/
+
+div.annotation-list { visibility: hidden;
+ }
+
+div.annotation-nocss { position: absolute;
+ visibility: hidden;
+ }
+
+div.annotation-popup { position: absolute;
+ z-index: 4;
+ visibility: hidden;
+ padding: 0px;
+ margin: 2px;
+ border-style: solid;
+ border-width: 1px;
+ width: 200px;
+ background-color: white;
+ }
+
+div.annotation-title { padding: 1px;
+ font-weight: bold;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ color: white;
+ background-color: black;
+ }
+
+div.annotation-body { padding: 2px;
+ }
+
+div.annotation-body p { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+div.annotation-close { position: absolute;
+ top: 2px;
+ right: 2px;
+ }
+</xsl:param>
+<xsl:param name="annotation.graphic.close">
+http://docbook.sourceforge.net/release/images/annot-close.png</xsl:param>
+<xsl:param name="annotation.graphic.open">http://docbook.sourceforge.net/release/images/annot-open.png</xsl:param>
+
+<xsl:param name="annotation.js">
+<xsl:text>http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js</xsl:text></xsl:param>
+
+<xsl:param name="annotation.support" select="0"/>
+<xsl:param name="appendix.autolabel">A</xsl:param>
+<xsl:param name="author.othername.in.middle" select="1"/>
+<xsl:param name="autotoc.label.in.hyperlink" select="1"/>
+<xsl:param name="autotoc.label.separator">. </xsl:param>
+<xsl:param name="base.dir"/>
+<xsl:param name="biblioentry.item.separator">. </xsl:param>
+<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param>
+
+<xsl:param name="bibliography.numbered" select="0"/>
+<xsl:param name="bibliography.style">normal</xsl:param>
+<xsl:param name="blurb.on.titlepage.enabled" select="0"/>
+<xsl:param name="bridgehead.in.toc" select="0"/>
+<xsl:param name="callout.defaultcolumn">60</xsl:param>
+<xsl:param name="callout.graphics.extension">.png</xsl:param>
+
+<xsl:param name="callout.graphics" select="1"/>
+<xsl:param name="callout.graphics.number.limit">15</xsl:param>
+
+<xsl:param name="callout.graphics.path">images/callouts/</xsl:param>
+<xsl:param name="callout.list.table" select="1"/>
+<xsl:param name="callout.unicode" select="0"/>
+<xsl:param name="callout.unicode.number.limit">10</xsl:param>
+<xsl:param name="callout.unicode.start.character">10102</xsl:param>
+<xsl:param name="callouts.extension" select="1"/>
+<xsl:param name="chapter.autolabel" select="1"/>
+<xsl:param name="chunk.append"/>
+<xsl:param name="chunk.first.sections" select="0"/>
+<xsl:param name="chunk.quietly" select="0"/>
+<xsl:param name="chunk.section.depth" select="1"/>
+<xsl:param name="chunk.separate.lots" select="0"/>
+<xsl:param name="chunk.toc"/>
+<xsl:param name="chunk.tocs.and.lots" select="0"/>
+<xsl:param name="chunk.tocs.and.lots.has.title" select="1"/>
+<xsl:param name="citerefentry.link" select="0"/>
+<xsl:param name="collect.xref.targets">no</xsl:param>
+<xsl:param name="component.label.includes.part.label" select="0"/>
+<xsl:param name="contrib.inline.enabled">1</xsl:param>
+<xsl:param name="css.decoration" select="0"/>
+<xsl:param name="current.docid"/>
+<xsl:param name="custom.css.source"/>
+<xsl:param name="default.float.class">
+ <xsl:choose>
+ <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when>
+ <xsl:otherwise>before</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="default.image.width"/>
+<xsl:param name="default.table.frame">all</xsl:param>
+<xsl:param name="default.table.width"/>
+<xsl:param name="docbook.css.link" select="1"/>
+<xsl:param name="docbook.css.source">docbook.css.xml</xsl:param>
+<xsl:param name="draft.mode">no</xsl:param>
+<xsl:param name="draft.watermark.image">images/draft.png</xsl:param>
+<xsl:param name="ebnf.assignment">
+<code>::=</code>
+</xsl:param>
+
+<xsl:param name="ebnf.statement.terminator"/>
+
+<xsl:param name="ebnf.table.bgcolor">#F5DCB3</xsl:param>
+<xsl:param name="ebnf.table.border" select="1"/>
+<xsl:param name="eclipse.autolabel" select="0"/>
+<xsl:param name="eclipse.plugin.id">com.example.help</xsl:param>
+<xsl:param name="eclipse.plugin.name">DocBook Online Help Sample</xsl:param>
+<xsl:param name="eclipse.plugin.provider">Example provider</xsl:param>
+<xsl:param name="editedby.enabled">1</xsl:param>
+<xsl:param name="email.delimiters.enabled" select="1"/>
+<xsl:param name="emphasis.propagates.style" select="1"/>
+<xsl:param name="entry.propagates.style" select="1"/>
+<xsl:param name="exsl.node.set.available">
+ <xsl:choose>
+ <xsl:when xmlns:exsl="http://exslt.org/common" exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="firstterm.only.link" select="0"/>
+<xsl:param name="footer.rule" select="1"/>
+<xsl:param name="footnote.number.format">1</xsl:param>
+<xsl:param name="footnote.number.symbols"/>
+<xsl:param name="formal.procedures" select="1"/>
+<xsl:param name="formal.title.placement">
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+</xsl:param>
+<xsl:param name="funcsynopsis.decoration" select="1"/>
+<xsl:param name="funcsynopsis.style">kr</xsl:param>
+<xsl:param name="function.parens" select="0"/>
+<xsl:param name="generate.css.header" select="0"/>
+<xsl:param name="generate.id.attributes" select="0"/>
+<xsl:param name="generate.index" select="1"/>
+<xsl:param name="generate.legalnotice.link" select="0"/>
+<xsl:param name="generate.manifest" select="0"/>
+<xsl:param name="generate.meta.abstract" select="1"/>
+<xsl:param name="generate.revhistory.link" select="0"/>
+<xsl:param name="generate.section.toc.level" select="0"/>
+<xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+</xsl:param>
+
+<xsl:param name="glossary.collection"/>
+<xsl:param name="glossary.sort" select="0"/>
+<xsl:param name="glossentry.show.acronym">no</xsl:param>
+<xsl:param name="glossterm.auto.link" select="0"/>
+<xsl:param name="graphic.default.extension"/>
+<xsl:param name="graphicsize.extension" select="1"/>
+<xsl:param name="graphicsize.use.img.src.path" select="0"/>
+<xsl:param name="header.rule" select="1"/>
+<xsl:param name="highlight.default.language"/>
+<xsl:param name="highlight.source" select="0"/>
+<xsl:param name="highlight.xslthl.config"/>
+<xsl:param name="html.append"/>
+<xsl:param name="html.base"/>
+<xsl:param name="html.cellpadding"/>
+<xsl:param name="html.cellspacing"/>
+<xsl:param name="html.cleanup" select="1"/>
+<xsl:param name="html.ext">.html</xsl:param>
+<xsl:param name="html.extra.head.links" select="0"/>
+<xsl:param name="html.head.legalnotice.link.multiple" select="1"/>
+<xsl:param name="html.head.legalnotice.link.types">copyright</xsl:param>
+<xsl:param name="html.longdesc" select="0"/>
+<xsl:param name="html.longdesc.link" select="$html.longdesc"/>
+<xsl:param name="html.stylesheet"/>
+<xsl:param name="html.stylesheet.type">text/css</xsl:param>
+<xsl:param name="htmlhelp.alias.file">alias.h</xsl:param>
+<xsl:param name="htmlhelp.autolabel" select="0"/>
+<xsl:param name="htmlhelp.button.back" select="1"/>
+<xsl:param name="htmlhelp.button.forward" select="0"/>
+<xsl:param name="htmlhelp.button.hideshow" select="1"/>
+<xsl:param name="htmlhelp.button.home" select="0"/>
+<xsl:param name="htmlhelp.button.home.url"/>
+<xsl:param name="htmlhelp.button.jump1" select="0"/>
+<xsl:param name="htmlhelp.button.jump1.title">User1</xsl:param>
+<xsl:param name="htmlhelp.button.jump1.url"/>
+<xsl:param name="htmlhelp.button.jump2" select="0"/>
+<xsl:param name="htmlhelp.button.jump2.title">User2</xsl:param>
+<xsl:param name="htmlhelp.button.jump2.url"/>
+<xsl:param name="htmlhelp.button.locate" select="0"/>
+<xsl:param name="htmlhelp.button.next" select="1"/>
+<xsl:param name="htmlhelp.button.options" select="1"/>
+<xsl:param name="htmlhelp.button.prev" select="1"/>
+<xsl:param name="htmlhelp.button.print" select="1"/>
+<xsl:param name="htmlhelp.button.refresh" select="0"/>
+<xsl:param name="htmlhelp.button.stop" select="0"/>
+<xsl:param name="htmlhelp.button.zoom" select="0"/>
+<xsl:param name="htmlhelp.chm">htmlhelp.chm</xsl:param>
+<xsl:param name="htmlhelp.default.topic"/>
+<xsl:param name="htmlhelp.display.progress" select="1"/>
+<xsl:param name="htmlhelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="htmlhelp.enhanced.decompilation" select="0"/>
+<xsl:param name="htmlhelp.enumerate.images" select="0"/>
+<xsl:param name="htmlhelp.force.map.and.alias" select="0"/>
+<xsl:param name="htmlhelp.hhc.binary" select="1"/>
+<xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"/>
+<xsl:param name="htmlhelp.hhc">toc.hhc</xsl:param>
+<xsl:param name="htmlhelp.hhc.section.depth">5</xsl:param>
+<xsl:param name="htmlhelp.hhc.show.root" select="1"/>
+<xsl:param name="htmlhelp.hhc.width"/>
+<xsl:param name="htmlhelp.hhk">index.hhk</xsl:param>
+<xsl:param name="htmlhelp.hhp">htmlhelp.hhp</xsl:param>
+<xsl:param name="htmlhelp.hhp.tail"/>
+<xsl:param name="htmlhelp.hhp.window">Main</xsl:param>
+<xsl:param name="htmlhelp.hhp.windows"/>
+<xsl:param name="htmlhelp.map.file">context.h</xsl:param>
+<xsl:param name="htmlhelp.only" select="0"/>
+<xsl:param name="htmlhelp.remember.window.position" select="0"/>
+<xsl:param name="htmlhelp.show.advanced.search" select="0"/>
+<xsl:param name="htmlhelp.show.favorities" select="0"/>
+<xsl:param name="htmlhelp.show.menu" select="0"/>
+<xsl:param name="htmlhelp.show.toolbar.text" select="1"/>
+<xsl:param name="htmlhelp.title"/>
+<xsl:param name="htmlhelp.use.hhk" select="0"/>
+<xsl:param name="htmlhelp.window.geometry"/>
+<xsl:param name="id.warnings" select="0"/>
+<xsl:param name="ignore.image.scaling" select="0"/>
+<xsl:param name="img.src.path"/>
+<xsl:param name="index.links.to.section" select="1"/>
+<xsl:param name="index.method">basic</xsl:param>
+<xsl:param name="index.number.separator"/>
+<xsl:param name="index.on.role" select="0"/>
+<xsl:param name="index.on.type" select="0"/>
+<xsl:param name="index.prefer.titleabbrev" select="0"/>
+<xsl:param name="index.range.separator"/>
+<xsl:param name="index.term.separator"/>
+<xsl:param name="inherit.keywords" select="1"/>
+<xsl:param name="insert.olink.page.number">no</xsl:param>
+<xsl:param name="insert.olink.pdf.frag" select="0"/>
+<xsl:param name="insert.xref.page.number">no</xsl:param>
+<xsl:param name="javahelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="keep.relative.image.uris" select="1"/>
+
+<xsl:param name="l10n.gentext.default.language">en</xsl:param>
+<xsl:param name="l10n.gentext.language"/>
+<xsl:param name="l10n.gentext.use.xref.language" select="0"/>
+<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/>
+<xsl:param name="label.from.part" select="0"/>
+<xsl:param name="linenumbering.everyNth">5</xsl:param>
+<xsl:param name="linenumbering.extension" select="1"/>
+<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="linenumbering.width">3</xsl:param>
+<xsl:param name="link.mailto.url"/>
+<xsl:param name="make.clean.html" select="0"/>
+<xsl:param name="make.graphic.viewport" select="1"/>
+<xsl:param name="make.single.year.ranges" select="0"/>
+<xsl:param name="make.valid.html" select="1"/>
+<xsl:param name="make.year.ranges" select="0"/>
+ <xsl:param name="manifest">HTML.manifest</xsl:param>
+
+<xsl:param name="manifest.in.base.dir" select="0"/>
+<xsl:param name="manual.toc"/>
+<xsl:param name="menuchoice.menu.separator"> &#8594; </xsl:param>
+<xsl:param name="menuchoice.separator">+</xsl:param>
+<xsl:param name="navig.graphics.extension">.gif</xsl:param>
+<xsl:param name="navig.graphics" select="0"/>
+<xsl:param name="navig.graphics.path">images/</xsl:param>
+<xsl:param name="navig.showtitles">1</xsl:param>
+<xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"/>
+<xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"/>
+<xsl:param name="nominal.table.width">6in</xsl:param>
+<xsl:param name="olink.base.uri"/>
+<xsl:param name="olink.debug" select="0"/>
+<xsl:param name="olink.doctitle">no</xsl:param>
+<xsl:param name="olink.fragid">fragid=</xsl:param>
+<xsl:param name="olink.lang.fallback.sequence"/>
+<xsl:param name="olink.outline.ext">.olink</xsl:param>
+<xsl:attribute-set name="olink.properties">
+ <xsl:attribute name="show-destination">replace</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="olink.pubid">pubid</xsl:param>
+ <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param>
+<xsl:param name="olink.sysid">sysid</xsl:param>
+<xsl:param name="othercredit.like.author.enabled">0</xsl:param>
+<xsl:param name="para.propagates.style" select="1"/>
+<xsl:param name="part.autolabel">I</xsl:param>
+<xsl:param name="phrase.propagates.style" select="1"/>
+<xsl:param name="pixels.per.inch">90</xsl:param>
+<xsl:param name="points.per.em">10</xsl:param>
+<xsl:param name="preface.autolabel" select="0"/>
+<xsl:param name="prefer.internal.olink" select="0"/>
+<xsl:param name="preferred.mediaobject.role"/>
+<xsl:param name="process.empty.source.toc" select="0"/>
+<xsl:param name="process.source.toc" select="0"/>
+<xsl:param name="profile.arch"/>
+<xsl:param name="profile.attribute"/>
+<xsl:param name="profile.audience"/>
+<xsl:param name="profile.condition"/>
+<xsl:param name="profile.conformance"/>
+<xsl:param name="profile.lang"/>
+<xsl:param name="profile.os"/>
+<xsl:param name="profile.revision"/>
+<xsl:param name="profile.revisionflag"/>
+<xsl:param name="profile.role"/>
+<xsl:param name="profile.security"/>
+<xsl:param name="profile.separator">;</xsl:param>
+<xsl:param name="profile.status"/>
+<xsl:param name="profile.userlevel"/>
+<xsl:param name="profile.value"/>
+<xsl:param name="profile.vendor"/>
+<xsl:param name="profile.wordsize"/>
+<xsl:param name="punct.honorific">.</xsl:param>
+<xsl:param name="qanda.defaultlabel">number</xsl:param>
+<xsl:param name="qanda.in.toc" select="0"/>
+<xsl:param name="qanda.inherit.numeration" select="1"/>
+<xsl:param name="qanda.nested.in.toc" select="0"/>
+<xsl:param name="qandadiv.autolabel" select="1"/>
+<xsl:param name="refclass.suppress" select="0"/>
+<xsl:param name="refentry.generate.name" select="1"/>
+<xsl:param name="refentry.generate.title" select="0"/>
+<xsl:param name="refentry.separator" select="1"/>
+<xsl:param name="refentry.xref.manvolnum" select="1"/>
+ <xsl:param name="reference.autolabel">I</xsl:param>
+<xsl:param name="root.filename">index</xsl:param>
+<xsl:param name="rootid"/>
+<xsl:param name="runinhead.default.title.end.punct">.</xsl:param>
+<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param>
+<xsl:param name="section.autolabel" select="0"/>
+<xsl:param name="section.autolabel.max.depth">8</xsl:param>
+<xsl:param name="section.label.includes.component.label" select="0"/>
+<xsl:param name="segmentedlist.as.table" select="0"/>
+<xsl:param name="shade.verbatim" select="0"/>
+<xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="style"><xsl:text>background-color: </xsl:text>#E0E0E0</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:param name="show.comments" select="1"/>
+<xsl:param name="show.revisionflag" select="0"/>
+<xsl:param name="simplesect.in.toc" select="0"/>
+<xsl:param name="spacing.paras" select="0"/>
+<xsl:param name="suppress.footer.navigation">0</xsl:param>
+<xsl:param name="suppress.header.navigation" select="0"/>
+<xsl:param name="suppress.navigation" select="0"/>
+<xsl:param name="table.borders.with.css" select="0"/>
+<xsl:param name="table.cell.border.color"/>
+
+<xsl:param name="table.cell.border.style">solid</xsl:param>
+<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param>
+<xsl:param name="table.footnote.number.format">a</xsl:param>
+<xsl:param name="table.footnote.number.symbols"/>
+<xsl:param name="table.frame.border.color"/>
+
+<xsl:param name="table.frame.border.style">solid</xsl:param>
+<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
+<xsl:param name="tablecolumns.extension" select="1"/>
+ <xsl:param name="target.database.document">olinkdb.xml</xsl:param>
+<xsl:param name="targets.filename">target.db</xsl:param>
+<xsl:param name="tex.math.delims" select="1"/>
+<xsl:param name="tex.math.file">tex-math-equations.tex</xsl:param>
+<xsl:param name="tex.math.in.alt"/>
+<xsl:param name="textdata.default.encoding"/>
+ <xsl:param name="textinsert.extension" select="1"/>
+<xsl:param name="toc.list.type">dl</xsl:param>
+<xsl:param name="toc.max.depth">8</xsl:param>
+<xsl:param name="toc.section.depth">2</xsl:param>
+<xsl:param name="ulink.target"/>
+<xsl:param name="use.embed.for.svg" select="0"/>
+<xsl:param name="use.extensions" select="0"/>
+<xsl:param name="use.id.as.filename" select="0"/>
+<xsl:param name="use.local.olink.style" select="0"/>
+<xsl:param name="use.role.as.xrefstyle" select="1"/>
+<xsl:param name="use.role.for.mediaobject" select="1"/>
+<xsl:param name="use.svg" select="1"/>
+<xsl:param name="variablelist.as.table" select="0"/>
+<xsl:param name="variablelist.term.break.after">0</xsl:param>
+<xsl:param name="variablelist.term.separator">, </xsl:param>
+<xsl:param name="writing.mode">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">writing-mode</xsl:with-param>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:param>
+<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.label-title.separator">: </xsl:param>
+<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.with.number.and.title" select="1"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl
new file mode 100644
index 0000000..28f9efe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl
@@ -0,0 +1,1203 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
+
+<!-- ********************************************************************
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info xmlns="http://www.w3.org/1999/xhtml"><title>HTML Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro xmlns="http://www.w3.org/1999/xhtml" xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for HTML output.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific &#8220;exceptions&#8221; to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it&#8217;s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<doc:pi xmlns="" name="dbhtml_background-color">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets background color for an image</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml background-color="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="BGcolor.html">Background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_background-color">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'background-color'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_bgcolor">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets background color on a CALS table row or table cell</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml bgcolor</tag> PI as child of a CALS table row
+ or cell to set a background color for that table row or cell.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="BGtableColor.html#CellBGColor">Cell background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_bgcolor">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'bgcolor'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_cellpadding">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies cellpadding in CALS table or qandaset output</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml cellpadding</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellpadding</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml cellpadding="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>cellpadding="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellpadding</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>html.cellpadding</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellpadding">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellpadding'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_cellspacing">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies cellspacing in CALS table or qandaset output</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml cellspacing</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellspacing</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml cellspacing="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>cellspacing="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellspacing</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>html.cellspacing</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellspacing">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellspacing'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_class">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Set value of the class attribute for a CALS table row</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml class</tag> PI as a child of a
+ <tag>row</tag> to specify a <literal>class</literal>
+ attribute and value in the HTML output for that row.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml class="<replaceable>name</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>class="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies the class name</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="CSSTableCells.html">Table styles in HTML output</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_class">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'class'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_dir">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies a directory name in which to write files</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml dir</tag> PI
+ as a child of a chunk source to cause the output of that
+ chunk to be written to the specified directory; also, use it
+ as a child of a <tag>mediaobject</tag> to specify a
+ directory into which any long-description files for that
+ <tag>mediaobject</tag> will be written.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml dir="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>dir="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname for the directory</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>base.dir</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Chunking.html#dbhtmlDirPI">dbhtml dir processing instruction</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_dir">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'dir'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_filename">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies a filename for a chunk</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml filename</tag>
+ PI as a child of a chunk source to specify a filename for
+ the output file for that chunk.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml filename="<replaceable>filename</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>filename="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the filename for the file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>use.id.as.filename</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Chunking.html#DbhtmlFilenames">dbhtml filenames</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_filename">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'filename'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_funcsynopsis-style">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies presentation style for a funcsynopsis</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>funcsynopsis.style</parameter></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'funcsynopsis-style'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_img.src.path">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies a path to the location of an image file</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml img.src.path</tag> PI before or
+ after an image (<tag>graphic</tag>,
+ <tag>inlinegraphic</tag>, <tag>imagedata</tag>, or
+ <tag>videodata</tag> element) as a sibling to the element,
+ to specify a path to the location of the image; in HTML
+ output, the value specified for the
+ <code>img.src.path</code> attribute is prepended to the
+ filename.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml img.src.path="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>img.src.path="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname to prepend to the name of the image file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>img.src.path</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="GraphicsLocations.html#UsingFileref">Using fileref</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_img.src.path">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'img.src.path'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_label-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the label width for a qandaset</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml label-width</tag> PI as a child of a
+ <tag>qandaset</tag> to specify the width of labels.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml label-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the label width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_label-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'label-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_linenumbering.everyNth">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies interval for line numbers in verbatims</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.everyNth</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the interval at which lines are numbered.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+ <para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>linenumbering.everyNth</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_linenumbering.separator">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies separator text for line numbers in verbatims</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.separator</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the separator text output between the line numbers and content.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>linenumbering.separator</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_linenumbering.width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies width for line numbers in verbatims</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.width</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the width set aside for line numbers.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the width (inluding units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>linenumbering.width</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_list-presentation">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml list-presentation="list"|"table"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+ <para>Displays the list as a list</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+ <para>Displays the list as a table</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <itemizedlist>
+ <listitem>
+ <para><parameter>variablelist.as.table</parameter></para>
+ </listitem>
+ <listitem>
+ <para><parameter>segmentedlist.as.table</parameter></para>
+ </listitem>
+ </itemizedlist>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_list-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the width of a variablelist or simplelist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml list-width</tag> PI as a child of a
+ <tag>variablelist</tag> or a <tag>simplelist</tag> presented
+ as a table, to specify the output width.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml list-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the output width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_row-height">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the height for a CALS table row</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml row-height="<replaceable>height</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+ <para>Specifies the row height (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="RowHeight.html">Row height</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_row-height">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'row-height'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_start">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">(obsolete) Sets the starting number on an ordered list</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para><emphasis>This PI is obsolete</emphasis>. The intent of
+ this PI was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml start="<replaceable>character</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+ <para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Orderedlists.html#ListStartNum">List starting number</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_start">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'start'"/>
+ </xsl:call-template>
+</xsl:template>
+
+ <doc:pi xmlns="" name="dbhtml_stop-chunking">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Do not chunk any descendants of this element.</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages:
+<programlisting>&lt;section&gt;
+&lt;title&gt;Configuring pencil&lt;/title&gt;
+&lt;?dbhtml stop-chunking?&gt;
+
+...
+
+&lt;/section&gt;</programlisting>
+</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml stop-chunking</tag></synopsis>
+ </refsynopsisdiv>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Chunking.html">Chunking into multiple HTML files</link></para>
+ </refsee>
+ </doc:pi>
+ <!-- The code that handles the stop-chunking pi is in chunk-common.xsl -->
+
+<doc:pi xmlns="" name="dbhtml_table-summary">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml table-summary</tag> PI as a child of
+ a CALS <tag>table</tag>, <tag>variablelist</tag>,
+ <tag>segmentedlist</tag>, or <tag>qandaset</tag> to specify
+ the text for the HTML <literal>summary</literal> attribute
+ in the output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml table-summary="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>table-summary="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the summary text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link>,
+ <link role="tcg" xlink:href="TableSummary.html">Table summary text</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-summary">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-summary'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_table-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the width for a CALS table</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml table-width</tag> PI as a child of a
+ CALS <tag>table</tag> to specify the width of the table in
+ output.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml table-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the table width (including units or as a percentage)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>default.table.width</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Tables.html#TableWidth">Table width</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_term-presentation">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets character formatting for terms in a variablelist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml term-presentation</tag> PI as a child
+ of a <tag>variablelist</tag> to set character formatting for
+ the <tag>term</tag> output of the list.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml term-presentation="bold"|"italic"|"bold-italic"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>term-presentation="<replaceable>bold</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in italic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>bold-italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold-italic</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_term-separator">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies separator text among terms in a varlistentry</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml term-separator</tag> PI as a child
+ of a <tag>variablelist</tag> to specify the separator text
+ among <tag>term</tag> instances.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml term-separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>term-separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>variablelist.term.separator</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_term-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the term width for a variablelist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml term-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the term width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_toc">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies whether a TOC should be generated for a qandaset</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml toc="0"|"1"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+ <para>If zero, no TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+ <para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="QandAtoc.html">Q and A list of questions</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_toc">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'toc'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbcmdlist">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Generates a hyperlinked list of commands</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbcmdlist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>cmdsynopsis</tag> instances; a hyperlinked navigational
+ &#8220;command list&#8221; will be generated at the top of output for that
+ element, enabling users to quickly jump
+ to each command synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbcmdlist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbcmdlist">
+ <xsl:variable name="cmdsynopses" select="..//cmdsynopsis"/>
+ <xsl:if test="count($cmdsynopses)&lt;1">
+ <xsl:message><xsl:text>No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbfunclist">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Generates a hyperlinked list of functions</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbfunclist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>funcsynopsis</tag> instances; a hyperlinked
+ navigational &#8220;function list&#8221; will be generated at the top of
+ output for that element, enabling users to quickly
+ jump to to each function synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbfunclist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfunclist">
+ <xsl:variable name="funcsynopses" select="..//funcsynopsis"/>
+ <xsl:if test="count($funcsynopses)&lt;1">
+ <xsl:message><xsl:text>No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml-include_href">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Copies an external well-formed HTML/XML file into current doc</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml-include href</tag> PI anywhere in a
+ document to cause the contents of the file referenced by the
+ <code>href</code> pseudo-attribute to be copied/inserted &#8220;as
+ is&#8221; into your HTML output at the point in document order
+ where the PI occurs in the source.</para>
+ <note>
+ <para>The referenced file may contain plain text (as long as
+ it is &#8220;wrapped&#8221; in an <tag>html</tag> element &#8212; see the
+ note below) or markup in any arbitrary vocabulary,
+ including HTML &#8212; but it must conform to XML
+ well-formedness constraints (because the feature in XSLT
+ 1.0 for opening external files, the
+ <function>document()</function> function, can only handle
+ files that meet XML well-formedness constraints).</para>
+ <para>Among other things, XML well-formedness constraints
+ require a document to have <emphasis>a single root
+ element</emphasis>. So if the content you want to
+ include is plain text or is markup that does
+ <emphasis>not</emphasis> have a single root element,
+ <emphasis role="strong">wrap the content in an
+ <tag>html</tag> element</emphasis>. The stylesheets will
+ strip out that surrounding <tag>html</tag> &#8220;wrapper&#8221; when
+ they find it, leaving just the content you want to
+ insert.</para>
+ </note>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml-include href="<replaceable>URI</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>href="<replaceable>URI</replaceable>"</term>
+ <listitem>
+ <para>Specifies the URI for the file to include; the URI
+ can be, for example, a remote <literal>http:</literal>
+ URI, or a local filesystem <literal>file:</literal>
+ URI</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>textinsert.extension</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>,
+ <link role="tcg" xlink:href="ExternalCode.html">External code files</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml-include">
+ <xsl:param name="href">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">href</xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <xsl:variable name="content" select="document($href,/)"/>
+ <xsl:choose>
+ <xsl:when test="$content/*">
+ <xsl:choose>
+ <xsl:when test="$content/*[1][self::html]">
+ <!-- include just the children of html wrapper -->
+ <xsl:copy-of select="$content/*[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction </xsl:text>
+ <xsl:text>href has no content.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction has </xsl:text>
+ <xsl:text>missing or empty href value.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- There are two templates matching this PI in htmlhelp-common.xsl -->
+<doc:pi xmlns="" name="dbhh">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets topic name and topic id for context-sensitive HTML Help</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhh</tag> PI as a child of components
+ that should be used as targets for context-sensitive help requests.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhh topicname="<replaceable>name</replaceable>" topicid="<replaceable>id</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>topicname="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique string constant that identifies a help topic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>topicid="<replaceable>id</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique integer value for the <literal>topicname</literal> string</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="HtmlHelp.html#HHContextHelp">Context-sensitive help</link></para>
+ </refsee>
+</doc:pi>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-attribute">
+ <!-- * dbhtml-attribute is an interal utility template for retrieving -->
+ <!-- * pseudo-attributes/parameters from PIs -->
+ <xsl:param name="pis" select="processing-instruction('dbhtml')"/>
+ <xsl:param name="attribute">filename</xsl:param>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$pis"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction()">
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbcmdlist')">
+ <xsl:call-template name="pi.dbcmdlist"/>
+</xsl:template>
+<xsl:template name="process.cmdsynopsis.list">
+ <xsl:param name="cmdsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($cmdsynopses)"/>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$cmdsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbfunclist')">
+ <xsl:call-template name="pi.dbfunclist"/>
+</xsl:template>
+<xsl:template name="process.funcsynopsis.list">
+ <xsl:param name="funcsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($funcsynopses)"/>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$funcsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbhtml-include')">
+ <xsl:call-template name="pi.dbhtml-include"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl
new file mode 100644
index 0000000..05c10c6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl
@@ -0,0 +1,617 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="exsl cf ng db exslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 8596 2010-03-20 04:36:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)&gt;0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1 or self::sect2 or self::sect3 or self::sect4 or self::sect5 or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="$profiled-nodes"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="generate.css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |sect1|sect2|sect3|sect4|sect5 |section |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon" mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index" mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl
new file mode 100644
index 0000000..def7fff
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: profile-chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="profile-chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl
new file mode 100644
index 0000000..7ac0219
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl
@@ -0,0 +1,408 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt exslt" version="1.0">
+
+<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8783 2010-07-28 10:59:39Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'xhtml'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes">
+<!-- no apply-templates; make it empty -->
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <!-- Insert links to CSS files or insert literal style elements -->
+ <xsl:call-template name="generate.css"/>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made" href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$css.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0 and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>
+// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>
+var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();
+</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+
+ <!-- Generate any css files only once, not once per chunk -->
+ <xsl:call-template name="generate.css.files"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl
new file mode 100644
index 0000000..b84b3e9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: profile-onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="profile-chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl
new file mode 100644
index 0000000..4a61c81
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
+
+<!-- ********************************************************************
+ $Id: qandaset.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="qandaset">
+ <xsl:variable name="title" select="(blockinfo/title|info/title|title)[1]"/>
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title' and local-name(.) != 'titleabbrev' and local-name(.) != 'qandadiv' and local-name(.) != 'qandaentry']"/>
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="$title"/>
+ <xsl:if test="not($title)">
+ <!-- id is output on title if there is one -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="((contains($toc.params, 'toc') and $toc != '0') or $toc = '1') and not(ancestor::answer and not($qanda.nested.in.toc=0))">
+ <xsl:call-template name="process.qanda.toc"/>
+ </xsl:if>
+ <xsl:apply-templates select="$preamble"/>
+ <xsl:call-template name="process.qandaset"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo/title| qandaset/info/title| qandaset/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qanda.section.level"/>
+ </xsl:variable>
+ <xsl:element name="h{string(number($qalevel)+1)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo|qandaset/info">
+ <!-- what should this template really do? -->
+ <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="qandadiv">
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title' and local-name(.) != 'titleabbrev' and local-name(.) != 'qandadiv' and local-name(.) != 'qandaentry']"/>
+
+ <xsl:if test="blockinfo/title|info/title|title">
+ <tr class="qandadiv">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:apply-templates select="(blockinfo/title|info/title|title)[1]"/>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="(contains($toc.params, 'toc') and $toc != '0') or $toc = '1'">
+ <tr class="toc">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:call-template name="process.qanda.toc"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="$preamble">
+ <tr class="toc">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:apply-templates select="$preamble"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:apply-templates select="qandadiv|qandaentry"/>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title| qandadiv/info/title| qandadiv/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+
+ <xsl:element name="h{string(number($qalevel)+1)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ <xsl:if test="$qandadiv.autolabel != 0">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaentry">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="question">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <tr>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:variable name="label.content">
+ <xsl:apply-templates select="." mode="qanda.label"/>
+ </xsl:variable>
+
+ <xsl:if test="string-length($label.content) &gt; 0">
+ <p><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$label.content"/>
+ </strong></p>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'none' and not(label)">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates select="*[local-name(.) != 'label']"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[local-name(.) != 'label']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="*" mode="qanda.defaultlabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()] /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question" mode="qanda.label">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="contains($deflabel, 'number') and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="answer">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <tr class="{local-name(.)}">
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:call-template name="anchor"/>
+ <xsl:variable name="answer.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($answer.label) &gt; 0">
+ <p><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$answer.label"/>
+ </strong></p>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates select="*[local-name(.) != 'label' and local-name(.) != 'qandaentry']"/>
+ <!-- * handle nested answer/qandaentry instances -->
+ <!-- * (bug 1509043 from Daniel Leidert) -->
+ <xsl:if test="descendant::question">
+ <xsl:call-template name="process.qandaset"/>
+ </xsl:if>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="answer" mode="qanda.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+</xsl:template>
+
+<xsl:template match="label">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qanda.toc">
+ <!-- * if user wants nested qandaset and qandaentry in main Qandaset TOC, -->
+ <!-- * then don't also include the nested stuff in the sub TOCs -->
+ <dl>
+ <xsl:apply-templates select="qandadiv" mode="qandatoc.mode"/>
+ <xsl:apply-templates select="qandaset|qandaentry" mode="qandatoc.mode"/>
+ </dl>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="qandatoc.mode">
+ <dt><xsl:apply-templates select="title" mode="qandatoc.mode"/></dt>
+ <dd><xsl:call-template name="process.qanda.toc"/></dd>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title| qandadiv/info/title| qandadiv/title" mode="qandatoc.mode">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="div.label">
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($div.label) != 0">
+ <xsl:copy-of select="$div.label"/>
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="qandatoc.mode">
+ <xsl:for-each select="qandaentry">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="qandatoc.mode">
+ <xsl:apply-templates select="question" mode="qandatoc.mode"/>
+</xsl:template>
+
+<xsl:template match="question" mode="qandatoc.mode">
+ <xsl:variable name="firstch">
+ <!-- Use a titleabbrev or title if available -->
+ <xsl:choose>
+ <xsl:when test="../blockinfo/titleabbrev">
+ <xsl:apply-templates select="../blockinfo/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../blockinfo/title">
+ <xsl:apply-templates select="../blockinfo/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/titleabbrev">
+ <xsl:apply-templates select="../info/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../titleabbrev">
+ <xsl:apply-templates select="../titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/title">
+ <xsl:apply-templates select="../info/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../title">
+ <xsl:apply-templates select="../title[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()] /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <dt>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="contains($deflabel,'number') and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select="$firstch"/>
+ </a>
+ </dt>
+ <!-- * include nested qandaset/qandaentry in TOC if user wants it -->
+ <xsl:if test="not($qanda.nested.in.toc = 0)">
+ <xsl:apply-templates select="following-sibling::answer" mode="qandatoc.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="answer" mode="qandatoc.mode">
+ <xsl:if test="descendant::question">
+ <dd>
+ <xsl:call-template name="process.qanda.toc"/>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qandaset">
+
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <xsl:variable name="label-width">
+ <xsl:call-template name="pi.dbhtml_label-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <table border="0" width="100%" summary="Q and A Set">
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <col align="{$direction.align.start}">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$label-width != ''">
+ <xsl:value-of select="$label-width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1%</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </col>
+ <col/>
+ <tbody>
+ <xsl:apply-templates select="qandaentry|qandadiv"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="no.wrapper.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl
new file mode 100644
index 0000000..dc2e57d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="reference">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="reference.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="reference" mode="division.number">
+ <xsl:number from="book" count="reference" format="I."/>
+</xsl:template>
+
+<xsl:template match="reference/docinfo"/>
+<xsl:template match="reference/referenceinfo"/>
+<xsl:template match="reference/title"/>
+<xsl:template match="reference/subtitle"/>
+<xsl:template match="reference/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="refentry.title">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="refmeta" select="$node//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select="$node//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="title"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1 class="title">
+ <xsl:copy-of select="$title"/>
+ </h1>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$refentry.separator != 0 and preceding-sibling::refentry">
+ <div class="refentry.separator">
+ <hr/>
+ </div>
+ </xsl:if>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="refentry.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refentry/docinfo|refentry/refentryinfo"/>
+<xsl:template match="refentry/info"/>
+
+<xsl:template match="refentrytitle|refname|refdescriptor" mode="title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refmeta">
+</xsl:template>
+
+<xsl:template match="manvolnum">
+ <xsl:if test="$refentry.xref.manvolnum != 0">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refmiscinfo">
+</xsl:template>
+
+<xsl:template match="refentrytitle">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h2>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h2>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="refname">
+ <xsl:if test="not(preceding-sibling::refdescriptor)">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::refname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refpurpose">
+ <xsl:if test="node()">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">em-dash</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refdescriptor">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refclass">
+ <xsl:if test="$refclass.suppress = 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:if test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </strong>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+ <h2>
+ <xsl:choose>
+ <xsl:when test="refsynopsisdiv/title|title">
+ <xsl:apply-templates select="(refsynopsisdiv/title|title)[1]" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsynopsisdivinfo"/>
+
+<xsl:template match="refsynopsisdiv/title">
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv/title" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refsection|refsect1|refsect2|refsect3">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <!-- pick up info title -->
+ <xsl:apply-templates select="(title|info/title)[1]"/>
+ <xsl:apply-templates select="node()[not(self::title) and not(self::info)]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsection/title|refsection/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <xsl:variable name="level" select="count(ancestor-or-self::refsection)"/>
+ <xsl:variable name="refsynopsisdiv">
+ <xsl:text>0</xsl:text>
+ <xsl:if test="ancestor::refsynopsisdiv">1</xsl:if>
+ </xsl:variable>
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="$level+$refsynopsisdiv &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level+1+$refsynopsisdiv"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="refsect1/title|refsect1/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="refsect2/title|refsect2/info/title">
+ <!-- the ID is output in the block.object call for refsect2 -->
+ <h3>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="refsect3/title|refsect3/info/title">
+ <!-- the ID is output in the block.object call for refsect3 -->
+ <h4>
+ <xsl:apply-templates/>
+ </h4>
+</xsl:template>
+
+<xsl:template match="refsectioninfo|refsection/info"/>
+<xsl:template match="refsect1info|refsect1/info"/>
+<xsl:template match="refsect2info|refsect2/info"/>
+<xsl:template match="refsect3info|refsect3/info"/>
+
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl
new file mode 100644
index 0000000..aec647d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: sections.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="section">
+ <xsl:variable name="depth" select="count(ancestor::section)+1"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $depth &lt;= $generate.section.toc.level">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="section.title">
+ <!-- the context node should be the title of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section |ancestor::simplesect |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="renderas">
+ <xsl:choose>
+ <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="$renderas != ''">
+ <xsl:value-of select="$renderas"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="level" select="$level"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section/title |section/info/title |sectioninfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect1">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 1">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect1/title |sect1/info/title |sect1info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect2">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 2">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect2/title |sect2/info/title |sect2info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect3">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 3">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect3/title |sect3/info/title |sect3info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect4">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 4">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect4/title |sect4/info/title |sect4info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect5">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 5">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect5/title |sect5/info/title |sect5info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="simplesect">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplesect.titlepage"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="simplesect/title|simplesect/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="section/title"/>
+<xsl:template match="section/titleabbrev"/>
+<xsl:template match="section/subtitle"/>
+<xsl:template match="sectioninfo"/>
+<xsl:template match="section/info"/>
+
+<xsl:template match="sect1/title"/>
+<xsl:template match="sect1/titleabbrev"/>
+<xsl:template match="sect1/subtitle"/>
+<xsl:template match="sect1info"/>
+<xsl:template match="sect1/info"/>
+
+<xsl:template match="sect2/title"/>
+<xsl:template match="sect2/subtitle"/>
+<xsl:template match="sect2/titleabbrev"/>
+<xsl:template match="sect2info"/>
+<xsl:template match="sect2/info"/>
+
+<xsl:template match="sect3/title"/>
+<xsl:template match="sect3/subtitle"/>
+<xsl:template match="sect3/titleabbrev"/>
+<xsl:template match="sect3info"/>
+<xsl:template match="sect3/info"/>
+
+<xsl:template match="sect4/title"/>
+<xsl:template match="sect4/subtitle"/>
+<xsl:template match="sect4/titleabbrev"/>
+<xsl:template match="sect4info"/>
+<xsl:template match="sect4/info"/>
+
+<xsl:template match="sect5/title"/>
+<xsl:template match="sect5/subtitle"/>
+<xsl:template match="sect5/titleabbrev"/>
+<xsl:template match="sect5info"/>
+<xsl:template match="sect5/info"/>
+
+<xsl:template match="simplesect/title"/>
+<xsl:template match="simplesect/subtitle"/>
+<xsl:template match="simplesect/titleabbrev"/>
+<xsl:template match="simplesect/info"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="section.heading">
+ <xsl:param name="section" select="."/>
+ <xsl:param name="level" select="1"/>
+ <xsl:param name="allow-anchors" select="1"/>
+ <xsl:param name="title"/>
+ <xsl:param name="class" select="'title'"/>
+
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- Make sure the subtitle doesn't get the same id as the title -->
+ <xsl:when test="self::subtitle">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <!-- highest valid HTML H level is H6; so anything nested deeper
+ than 5 levels down just becomes H6 -->
+ <xsl:when test="$level &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+ <xsl:if test="$css.decoration != '0'">
+ <xsl:if test="$hlevel&lt;3">
+ <xsl:attribute name="style">clear: both</xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="$allow-anchors != 0 and $generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$section"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$generate.id.attributes != 0 and not(local-name(.) = 'appendix')">
+ <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$title"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bridgehead">
+ <xsl:variable name="container" select="(ancestor::appendix |ancestor::article |ancestor::bibliography |ancestor::chapter |ancestor::glossary |ancestor::glossdiv |ancestor::index |ancestor::partintro |ancestor::preface |ancestor::refsect1 |ancestor::refsect2 |ancestor::refsect3 |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5 |ancestor::section |ancestor::setindex |ancestor::simplesect)[last()]"/>
+
+ <xsl:variable name="clevel">
+ <xsl:choose>
+ <xsl:when test="local-name($container) = 'appendix' or local-name($container) = 'chapter' or local-name($container) = 'article' or local-name($container) = 'bibliography' or local-name($container) = 'glossary' or local-name($container) = 'index' or local-name($container) = 'partintro' or local-name($container) = 'preface' or local-name($container) = 'setindex'">1</xsl:when>
+ <xsl:when test="local-name($container) = 'glossdiv'">
+ <xsl:value-of select="count(ancestor::glossdiv)+1"/>
+ </xsl:when>
+ <xsl:when test="local-name($container) = 'sect1' or local-name($container) = 'sect2' or local-name($container) = 'sect3' or local-name($container) = 'sect4' or local-name($container) = 'sect5' or local-name($container) = 'refsect1' or local-name($container) = 'refsect2' or local-name($container) = 'refsect3' or local-name($container) = 'section' or local-name($container) = 'simplesect'">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">2</xsl:when>
+ <xsl:when test="@renderas = 'sect2'">3</xsl:when>
+ <xsl:when test="@renderas = 'sect3'">4</xsl:when>
+ <xsl:when test="@renderas = 'sect4'">5</xsl:when>
+ <xsl:when test="@renderas = 'sect5'">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$clevel + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="section/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="simplesect/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect1/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect2/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect3/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect4/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect5/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template name="section.subtitle">
+ <!-- the context node should be the subtitle of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section |ancestor::simplesect |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select=".."/>
+ <xsl:with-param name="allow-anchors" select="0"/>
+ <!-- subtitle heading level one higher than section level -->
+ <xsl:with-param name="level" select="$level + 1"/>
+ <xsl:with-param name="class" select="'subtitle'"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="0"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl
new file mode 100644
index 0000000..8506707
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl
@@ -0,0 +1,1513 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: synop.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- synopsis is in verbatim -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:if test="..//processing-instruction('dbcmdlist')">
+ <!-- * Placing a dbcmdlist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all cmdsynopsis instances -->
+ <!-- * that are descendants of that element; so for any -->
+ <!-- * cmdsynopsis that is a descendant of an element containing -->
+ <!-- * a dbcmdlist PI, we need to output an a@id instance so that -->
+ <!-- * we will have something to link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command">
+ <br/>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$sepchar"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$arg.or.sep"/>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <br/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <a href="#{@linkend}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates/>
+ </em>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <!-- You can't introduce another <p> here, because you're
+ already in a <p> from cmdsynopsis-->
+ <span>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <a id="{$id}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template match="funcsynopsis">
+ <xsl:if test="..//processing-instruction('dbfunclist')">
+ <!-- * Placing a dbfunclist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all funcsynopsis instances that -->
+ <!-- * are descendants of that element; so for any funcsynopsis that is -->
+ <!-- * a descendant of an element containing a dbfunclist PI, we need -->
+ <!-- * to output an a@id instance so that we will have something to -->
+ <!-- * link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsisinfo">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </pre>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype -->
+<!--
+
+funcprototype ::= (funcdef,
+ (void|varargs|paramdef+))
+
+funcdef ::= (#PCDATA|type|replaceable|function)*
+
+paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
+-->
+
+<xsl:template match="funcprototype">
+ <xsl:variable name="html-style">
+ <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$html-style != ''">
+ <xsl:value-of select="$html-style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!-- * 2008-02-17. the code no longer relies on the funcsynopsis.tabular.threshold -->
+<!-- * param at all (the stuff below has been commented out since mid -->
+<!-- * 2006), so I completely removed the funcsynopsis.tabular.threshold param -->
+<!-- * .. MikeSmith -->
+<!--
+ <xsl:variable name="tabular-p"
+ select="$funcsynopsis.tabular.threshold &gt; 0
+ and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
+-->
+
+ <xsl:variable name="tabular-p" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$style = 'kr' and $tabular-p">
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'kr'">
+ <xsl:apply-templates select="." mode="kr-nontabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'ansi' and $tabular-p">
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, non-tabular -->
+
+<xsl:template match="funcprototype" mode="kr-nontabular">
+ <p>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:if test="paramdef">
+ <br/>
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </xsl:if>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="kr-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-nontabular">
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-nontabular">
+ <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
+ <xsl:if test="preceding-sibling::paramdef"><br/></xsl:if>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, tabular -->
+
+<xsl:template match="funcprototype" mode="kr-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <xsl:if test="paramdef">
+ <div class="paramdef-list">
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </div>
+ </xsl:if>
+ <div class="funcprototype-spacer">&#160;</div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="kr-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-tabular">
+ <td>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular">
+ <td>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <code>
+ <xsl:copy-of select="$type"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:when test="funcparams">
+ <td colspan="2">
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, non-tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-nontabular">
+ <p>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="ansi-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-nontabular">
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-nontabular">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-nontabular">
+ <code>(</code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <div class="funcprototype-spacer">&#160;</div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="ansi-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-tabular">
+ <td>
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <td>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-tabular">
+ <code>(</code>
+ <xsl:apply-templates/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<xsl:template match="classsynopsis |fieldsynopsis |methodsynopsis |constructorsynopsis |destructorsynopsis">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$language='java' or $language='Java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl' or $language='Perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl' or $language='IDL'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+ </xsl:message>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language" select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="parent::classsynopsis or (following-sibling::fieldsynopsis |following-sibling::methodsynopsis |following-sibling::constructorsynopsis |following-sibling::destructorsynopsis)">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- ===== Java ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="java">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text>&#160;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="java">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="java">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>,</xsl:text>
+ <br/>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">&#160;</xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="java" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="decl">
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;throws&#160;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>&#160;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="cpp" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;throws&#160;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text>&#160;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="idl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="idl"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;</xsl:text>
+ <br/>
+
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
+ <xsl:text>);</xsl:text>
+ <br/>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="perl"/>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- Used when not occurring as a child of classsynopsis -->
+<xsl:template match="ooclass|oointerface|ooexception">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
+<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
+<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
+<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
+<!-- * per-mode matches for those linking elements in order for them -->
+<!-- * to be processed as expected. -->
+
+<xsl:template match="link|olink|xref" mode="java">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="cpp">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="idl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="perl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl
new file mode 100644
index 0000000..3146c09
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl
@@ -0,0 +1,1168 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table" xmlns:xtbl="xalan://com.nwalsh.xalan.Table" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc stbl xtbl lxslt ptbl" version="1.0">
+
+<xsl:include href="../common/table.xsl"/>
+
+<!-- ********************************************************************
+ $Id: table.xsl 8813 2010-08-09 21:18:23Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtbl" functions="adjustColumnWidths"/>
+
+<xsl:template name="empty.table.cell">
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row or ancestor-or-self::thead/following-sibling::tbody or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="number($colnum) &gt;= ancestor::tgroup/@cols">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <td class="auto-generated">
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="border">
+ <xsl:param name="side" select="'left'"/>
+ <xsl:param name="padding" select="0"/>
+ <xsl:param name="style" select="$table.cell.border.style"/>
+ <xsl:param name="color" select="$table.cell.border.color"/>
+ <xsl:param name="thickness" select="$table.cell.border.thickness"/>
+
+ <!-- Note: Some browsers (mozilla) require at least a width and style. -->
+
+ <xsl:choose>
+ <xsl:when test="($thickness != '' and $style != '' and $color != '') or ($thickness != '' and $style != '') or ($thickness != '')">
+ <!-- use the compound property if we can: -->
+ <!-- it saves space and probably works more reliably -->
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- we need to specify the styles individually -->
+ <xsl:if test="$thickness != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-width: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$style != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-style: </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$color != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-color: </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tgroup" name="tgroup">
+ <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'">
+ <xsl:message terminate="yes">
+ <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <table>
+ <xsl:choose>
+ <!-- If there's a textobject/phrase for the table summary, use it -->
+ <xsl:when test="../textobject/phrase">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="../textobject/phrase"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- If there's a <?dbhtml table-summary="foo"?> PI, use it for
+ the HTML table summary attribute -->
+ <xsl:when test="$summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$summary"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, if there's a title, use that -->
+ <xsl:when test="../title">
+ <xsl:attribute name="summary">
+ <!-- This screws up on inline markup and footnotes, oh well... -->
+ <xsl:value-of select="string(../title)"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, forget the whole idea -->
+ <xsl:otherwise><!-- nevermind --></xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$cellspacing != '' or $html.cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:choose>
+ <xsl:when test="$cellspacing != ''">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellspacing"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != '' or $html.cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:choose>
+ <xsl:when test="$cellpadding != ''">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellpadding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="../@pgwide=1 or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="width">100%</xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$table.borders.with.css != 0">
+ <xsl:choose>
+ <xsl:when test="../@frame='all' or (not(../@frame) and $default.table.frame='all')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='topbot' or (not(../@frame) and $default.table.frame='topbot')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='top' or (not(../@frame) and $default.table.frame='top')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='bottom' or (not(../@frame) and $default.table.frame='bottom')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='sides' or (not(../@frame) and $default.table.frame='sides')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='none'">
+ <xsl:attribute name="style">
+ <xsl:text>border: none;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:when test="../@frame='none' or (not(../@frame) and $default.table.frame='none') or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="border">0</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="colgroup">
+ <colgroup>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </colgroup>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:call-template name="pi.dbhtml_table-width">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$default.table.width != '' or $explicit.table.width != ''">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="contains($table.width, '%')">
+ <xsl:value-of select="$table.width"/>
+ </xsl:when>
+ <xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:convertLength')">
+ <xsl:value-of select="stbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:convertLength')">
+ <xsl:value-of select="xtbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No convertLength function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:adjustColumnWidths')">
+ <xsl:copy-of select="stbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:adjustColumnWidths')">
+ <xsl:copy-of select="xtbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ptbl:adjustColumnWidths')">
+ <xsl:copy-of select="ptbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No adjustColumnWidths function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$colgroup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="thead"/>
+ <xsl:apply-templates select="tfoot"/>
+ <xsl:apply-templates select="tbody"/>
+
+ <xsl:if test=".//footnote|../title//footnote">
+ <tbody class="footnotes">
+ <tr>
+ <td colspan="{@cols}">
+ <xsl:apply-templates select=".//footnote|../title//footnote" mode="table.footnote.mode"/>
+ </td>
+ </tr>
+ </tbody>
+ </xsl:if>
+ </table>
+</xsl:template>
+
+<xsl:template match="tgroup/processing-instruction('dbhtml')">
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <!-- Suppress the table-summary PI -->
+ <xsl:if test="$summary = ''">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:value-of select="."/>
+ </xsl:processing-instruction>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="colspec"/>
+
+<xsl:template match="spanspec"/>
+
+<xsl:template match="thead|tfoot">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:if test="@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <!-- recurse on rows only if @morerows is present -->
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="tbody">
+ <tbody>
+ <xsl:if test="@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </tbody>
+</xsl:template>
+
+<xsl:template match="row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($spans, '0')">
+ <xsl:call-template name="normal-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!--
+ <xsl:message>
+ <xsl:text>Ignoring row: </xsl:text>
+ <xsl:value-of select="$spans"/>
+ <xsl:text> = </xsl:text>
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:message>
+ -->
+
+ <xsl:if test="normalize-space(.//text()) != ''">
+ <xsl:message>Warning: overlapped row contains content!</xsl:message>
+ </xsl:if>
+
+ <tr><xsl:comment> This row intentionally left blank </xsl:comment></tr>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="normal-row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <xsl:variable name="row-height">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_row-height"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="class">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_class"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="tgroup" count="row"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$row-height != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$row-height"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="style"><xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$class != ''">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$class"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:if test="@rowsep = 1 and following-sibling::row">
+ <xsl:attribute name="style">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="(entry|entrytbl)[1]">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </tr>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:if test="following-sibling::row">
+ <xsl:variable name="nextspans">
+ <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans" select="$nextspans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="entry">
+ <xsl:param name="col">
+ <xsl:choose>
+ <xsl:when test="@revisionflag">
+ <xsl:number from="row"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="cellgi">
+ <xsl:choose>
+ <xsl:when test="ancestor::thead">th</xsl:when>
+ <xsl:when test="ancestor::tfoot">th</xsl:when>
+ <xsl:when test="ancestor::tbody and (ancestor::table[@rowheader = 'firstcol'] or ancestor::informaltable[@rowheader = 'firstcol']) and ancestor-or-self::entry[1][count(preceding-sibling::entry) = 0]">
+ <xsl:text>th</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>td</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="empty.cell" select="count(node()) = 0"/>
+
+ <xsl:variable name="named.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:choose>
+ <xsl:when test="$named.colnum &gt; 0">
+ <xsl:value-of select="$named.colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$col"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="ancestor::entrytbl and not (ancestor-or-self::row[1]/following-sibling::row) and not (ancestor::thead)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row or ancestor-or-self::thead/following-sibling::tbody or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="@morerows and not(@morerows &lt; count(ancestor-or-self::row[1]/following-sibling::row))">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="$following.spans = ''">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="valign">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'valign'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="align">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'align'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="char">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'char'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="charoff">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'charoff'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:call-template name="empty.table.cell"/>
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:element name="{$cellgi}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="style"><xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="locale.html.attributes"/>
+ <xsl:if test="$entry.propagates.style != 0 and @role">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:if test="$show.revisionflag and @revisionflag">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@revisionflag"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@morerows &gt; 0">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="1+@morerows"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$entry.colspan &gt; 1">
+ <xsl:attribute name="colspan">
+ <xsl:value-of select="$entry.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$valign != ''">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="$valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$char != ''">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$charoff != ''">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="not(preceding-sibling::*) and (ancestor::row[1]/@id or ancestor::row[1]/@xml:id)">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::row[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$empty.cell">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:when test="self::entrytbl">
+ <xsl:call-template name="tgroup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry |following-sibling::entrytbl)[1]">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="sentry" mode="span">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col + 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="count" select="$entry.colspan"/>
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="@morerows">
+ <xsl:value-of select="@morerows"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>:</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry |following-sibling::entrytbl)[1]" mode="span">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$count &gt; $cols"/>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.col">
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($colspecs)">
+ <col/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <col>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth and $use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="normalize-space($colspec/@colwidth) = '*'">
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- pass through to HTML if no * in colspecs -->
+ <xsl:when test="$colspec/@colwidth and not($colspec/parent::*/colspec/@colwidth[contains(.,'*')])">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="normalize-space($colspec/@colwidth) = '*'">
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$colspec/@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="$colspec/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Suggested by Pavel ZAMPACH <zampach@nemcb.cz> -->
+ <xsl:when test="$colspecs/ancestor::tgroup/@align">
+ <xsl:attribute name="style"><xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="$colspecs/ancestor::tgroup/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$colspec/@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$colspec/@char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$colspec/@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$colspec/@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$colspec/@colname">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$colspec/@colname"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="colspec.colwidth">
+ <!-- when this macro is called, the current context must be an entry -->
+ <xsl:param name="colname"/>
+ <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup -->
+ <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($colspecs)"/>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colname=$colname">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colspec.colwidth">
+ <xsl:with-param name="colname" select="$colname"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="tr.attributes">
+ <xsl:param name="row" select="."/>
+ <xsl:param name="rownum" select="0"/>
+
+ <!-- by default, do nothing. But you might want to say:
+
+ <xsl:if test="$rownum mod 2 = 0">
+ <xsl:attribute name="class">oddrow</xsl:attribute>
+ </xsl:if>
+
+ -->
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl
new file mode 100644
index 0000000..0a380d2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: task.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="task">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="preamble" select="*[not(self::title or self::titleabbrev)]"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="task/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="tasksummary">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="tasksummary/title"/>
+
+<xsl:template match="taskprerequisites">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskprerequisites/title"/>
+
+<xsl:template match="taskrelated">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskrelated/title"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl
new file mode 100644
index 0000000..1f72e23
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl
@@ -0,0 +1,3817 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl-->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="book.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/abstract"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <div>
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refentry.titlepage.before.recto"/>
+ <xsl:call-template name="refentry.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refentry.titlepage.before.verso"/>
+ <xsl:call-template name="refentry.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="refentry.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.recto">
+ <div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::acknowledgements[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="acknowledgementsinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="acknowledgementsinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.recto"/>
+ <xsl:call-template name="acknowledgements.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.verso"/>
+ <xsl:call-template name="acknowledgements.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="acknowledgements.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="acknowledgements.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
+<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
+<xsl:call-template name="formal.object.heading">
+<xsl:with-param name="object" select="ancestor-or-self::sidebar[1]"/>
+</xsl:call-template>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl
new file mode 100644
index 0000000..c3f8217
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl
@@ -0,0 +1,1030 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: titlepage.xsl 8816 2010-08-10 11:56:35Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:attribute-set name="book.titlepage.recto.style"/>
+<xsl:attribute-set name="book.titlepage.verso.style"/>
+
+<xsl:attribute-set name="article.titlepage.recto.style"/>
+<xsl:attribute-set name="article.titlepage.verso.style"/>
+
+<xsl:attribute-set name="set.titlepage.recto.style"/>
+<xsl:attribute-set name="set.titlepage.verso.style"/>
+
+<xsl:attribute-set name="part.titlepage.recto.style"/>
+<xsl:attribute-set name="part.titlepage.verso.style"/>
+
+<xsl:attribute-set name="partintro.titlepage.recto.style"/>
+<xsl:attribute-set name="partintro.titlepage.verso.style"/>
+
+<xsl:attribute-set name="reference.titlepage.recto.style"/>
+<xsl:attribute-set name="reference.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refentry.titlepage.recto.style"/>
+<xsl:attribute-set name="refentry.titlepage.verso.style"/>
+
+<xsl:attribute-set name="dedication.titlepage.recto.style"/>
+<xsl:attribute-set name="dedication.titlepage.verso.style"/>
+
+<xsl:attribute-set name="acknowledgements.titlepage.recto.style"/>
+<xsl:attribute-set name="acknowledgements.titlepage.verso.style"/>
+
+<xsl:attribute-set name="preface.titlepage.recto.style"/>
+<xsl:attribute-set name="preface.titlepage.verso.style"/>
+
+<xsl:attribute-set name="chapter.titlepage.recto.style"/>
+<xsl:attribute-set name="chapter.titlepage.verso.style"/>
+
+<xsl:attribute-set name="appendix.titlepage.recto.style"/>
+<xsl:attribute-set name="appendix.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliography.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliography.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossary.titlepage.recto.style"/>
+<xsl:attribute-set name="glossary.titlepage.verso.style"/>
+
+<xsl:attribute-set name="index.titlepage.recto.style"/>
+<xsl:attribute-set name="index.titlepage.verso.style"/>
+
+<xsl:attribute-set name="setindex.titlepage.recto.style"/>
+<xsl:attribute-set name="setindex.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sidebar.titlepage.recto.style"/>
+<xsl:attribute-set name="sidebar.titlepage.verso.style"/>
+
+<xsl:attribute-set name="section.titlepage.recto.style"/>
+<xsl:attribute-set name="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect1.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect1.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect2.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect2.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect3.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect3.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect4.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect4.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect5.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect5.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="simplesect.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="simplesect.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
+<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="titlepage.mode">
+ <!-- if an element isn't found in this mode, try the default mode -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="abbrev" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="abstract" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$abstract.notitle.enabled = 0">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="address" mode="titlepage.mode">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author|editor" mode="titlepage.mode">
+ <xsl:call-template name="credits.div"/>
+</xsl:template>
+
+<xsl:template name="credits.div">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="self::editor[position()=1] and not($editedby.enabled = 0)">
+ <h4 class="editedby"><xsl:call-template name="gentext.edited.by"/></h4>
+ </xsl:if>
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="orgname">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h3>
+ <xsl:if test="not($contrib.inline.enabled = 0)">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates mode="titlepage.mode" select="email"/>
+ <xsl:if test="not($blurb.on.titlepage.enabled = 0)">
+ <xsl:choose>
+ <xsl:when test="$contrib.inline.enabled = 0">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib|authorblurb|personblurb"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode" select="authorblurb|personblurb"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::refentryinfo">
+ <h2>Authors</h2>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="collab" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="confdates" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="titlepage.mode">
+ <!-- suppress -->
+</xsl:template>
+
+<xsl:template match="contractnum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="not($contrib.inline.enabled = 0)">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span><xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p><xsl:apply-templates mode="titlepage.mode"/></p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="copyright" mode="titlepage.mode">
+
+ <xsl:if test="generate-id() = generate-id(//refentryinfo/copyright[1]) and ($stylesheet.result.type = 'html' or $stylesheet.result.type = 'xhtml')">
+ <h2>Copyright</h2>
+ </xsl:if>
+
+ <p>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges" select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="year" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="holder" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="titlepage.mode">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="titlepage.mode">
+ <p>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Edition'"/>
+ </xsl:call-template>
+ </p>
+</xsl:template>
+
+<xsl:template match="email" mode="titlepage.mode">
+ <!-- use the normal e-mail handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="firstname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="graphic" mode="titlepage.mode">
+ <!-- use the normal graphic handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="honorific" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioid" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="itermset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="keywordset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="titlepage.mode">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.legalnotice.link != 0">
+
+ <!-- Compute name of legalnotice file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <a id="{$id}"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="legalnotice/title" mode="titlepage.mode">
+ <p class="legalnotice-title"><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong></p>
+</xsl:template>
+
+<xsl:template match="lineage" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modespec" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="titlepage.mode">
+ <xsl:if test="preceding-sibling::*[1][self::orgname]">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.mode">
+<xsl:choose>
+ <xsl:when test="not($othercredit.like.author.enabled = 0)">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="credits.div"/>
+ </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.othercredits">
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="othername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="productname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publisher" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publishername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="titlepage.mode">
+ <xsl:variable name="numcols">
+ <xsl:choose>
+ <xsl:when test=".//authorinitials|.//author">3</xsl:when>
+ <xsl:otherwise>2</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">RevHistory</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="contents">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <table border="1" width="100%" summary="Revision history">
+ <tr>
+ <th align="{$direction.align.start}" valign="top" colspan="{$numcols}">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </strong>
+ </th>
+ </tr>
+ <xsl:apply-templates mode="titlepage.mode">
+ <xsl:with-param name="numcols" select="$numcols"/>
+ </xsl:apply-templates>
+ </table>
+ </div>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.revhistory.link != 0">
+
+ <!-- Compute name of revhistory file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="is.ln" select="false()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title">
+ <xsl:value-of select="$title"/>
+ <xsl:if test="../../title">
+ <xsl:value-of select="concat(' (', ../../title, ')')"/>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:copy-of select="$contents"/>
+ </body>
+ </html>
+ <xsl:text>
+</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="revhistory/revision" mode="titlepage.mode">
+ <xsl:param name="numcols" select="'3'"/>
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}">
+ <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="$revauthor">
+ <td align="{$direction.align.start}">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:when>
+ <xsl:when test="$numcols &gt; 2">
+ <td>&#160;</td>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="{$direction.align.start}" colspan="{$numcols}">
+ <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/date" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/author" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revremark" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subjectset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="subtitle" mode="titlepage.mode">
+ <h2>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="surname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="titlepage.mode">
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes = 0">
+ <a id="{$id}"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h1>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="titlepage.mode">
+ <!-- nop; title abbreviations don't belong on the title page! -->
+</xsl:template>
+
+<xsl:template match="volumenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<!-- This template computes the filename for legalnotice and revhistory chunks -->
+<xsl:template name="ln.or.rh.filename">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="is.ln" select="true()"/>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- 1. If there is a dbhtml_filename PI, use that -->
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <xsl:when test="($node/@id or $node/@xml:id) and not($use.id.as.filename = 0)">
+ <!-- * 2. If this legalnotice/revhistory has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" or "rh-" to it) -->
+ <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:when test="not ($node/@id or $node/@xml:id) or $use.id.as.filename = 0">
+ <!-- * 3. Otherwise, if this legalnotice/revhistory does not have an ID, or -->
+ <!-- * if $use.id.as.filename = 0 -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:value-of select="generate-id($node)"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend a -->
+ <!-- * prefix to it, and use that as the basename for the file -->
+ <xsl:choose>
+ <xsl:when test="$is.ln">
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('rh-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl
new file mode 100644
index 0000000..92b7b14
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: toc.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set/toc | book/toc | part/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to parent element -->
+ <xsl:for-each select="parent::*">
+ <xsl:choose>
+ <xsl:when test="self::set">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::book">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::part">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/toc | appendix/toc | preface/toc | article/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="title"/>
+ <dl>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ </dl>
+ </div>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section/toc |sect1/toc |sect2/toc |sect3/toc |sect4/toc |sect5/toc">
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="title"/>
+ <dl>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ </dl>
+ </div>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tocpart|tocchap |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:variable name="sub-toc">
+ <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dd>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2| toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </dd>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2| toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:apply-templates select="tocentry[position() != last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ </dt>
+ <xsl:copy-of select="$sub-toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ <xsl:copy-of select="$sub-toc"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry|tocdiv|lotentry|tocfront|tocback">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="tocentry-content"/>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="tocentry-content"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry[position() = last()]" priority="2">
+ <xsl:call-template name="tocentry-content"/>
+</xsl:template>
+
+<xsl:template name="tocentry-content">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="@linkend">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="toc/title">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="toc/subtitle">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="toc/titleabbrev">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- A lot element must have content, because there is no attribute
+ to select what kind of list should be generated -->
+<xsl:template match="book/lot | part/lot">
+ <!-- Don't generate a page sequence unless there is content -->
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/lot | appendix/lot | preface/lot | article/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section/lot |sect1/lot |sect2/lot |sect3/lot |sect4/lot |sect5/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.empty.lot">
+ <!-- An empty lot element does not provide any information to indicate
+ what should be included in it. You can customize this
+ template to generate a lot based on @role or something -->
+ <xsl:message>
+ <xsl:text>Warning: don't know what to generate for </xsl:text>
+ <xsl:text>lot that has no children.</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+<xsl:template match="lot/title">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="lot/subtitle">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="lot/titleabbrev">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl
new file mode 100644
index 0000000..c0bc69d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="sverb xverb lxslt exsl" version="1.0">
+
+<!-- ********************************************************************
+ $Id: verbatim.xsl 8807 2010-08-09 18:57:41Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- XSLTHL highlighting is turned off by default. See highlighting/README
+ for instructions on how to turn on XSLTHL -->
+<xsl:template name="apply-highlighting">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<lxslt:component prefix="xverb" functions="numberLines"/>
+
+<xsl:template match="programlisting|screen|synopsis">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="div.element">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">div</xsl:when>
+ <xsl:otherwise>pre</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$shade.verbatim != 0">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$div.element}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$div.element}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="literallayout">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:if test="$shade.verbatim != 0 and @class='monospaced'">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$rtf"/>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="address">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="number.rtf.lines">
+ <xsl:param name="rtf" select="''"/>
+ <xsl:param name="pi.context" select="."/>
+
+ <!-- Save the global values -->
+ <xsl:variable name="global.linenumbering.everyNth" select="$linenumbering.everyNth"/>
+
+ <xsl:variable name="global.linenumbering.separator" select="$linenumbering.separator"/>
+
+ <xsl:variable name="global.linenumbering.width" select="$linenumbering.width"/>
+
+ <!-- Extract the <?dbhtml linenumbering.*?> PI values -->
+ <xsl:variable name="pi.linenumbering.everyNth">
+ <xsl:call-template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.separator">
+ <xsl:call-template name="pi.dbhtml_linenumbering.separator">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.width">
+ <xsl:call-template name="pi.dbhtml_linenumbering.width">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Construct the 'in-context' values -->
+ <xsl:variable name="linenumbering.everyNth">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.everyNth != ''">
+ <xsl:value-of select="$pi.linenumbering.everyNth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.everyNth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.separator">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.separator != ''">
+ <xsl:value-of select="$pi.linenumbering.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.width">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.width != ''">
+ <xsl:value-of select="$pi.linenumbering.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.startinglinenumber">
+ <xsl:choose>
+ <xsl:when test="$pi.context/@startinglinenumber">
+ <xsl:value-of select="$pi.context/@startinglinenumber"/>
+ </xsl:when>
+ <xsl:when test="$pi.context/@continuation='continues'">
+ <xsl:variable name="lastLine">
+ <xsl:choose>
+ <xsl:when test="$pi.context/self::programlisting">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::programlisting[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::screen">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::screen[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::literallayout">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::literallayout[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::address">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::address[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::synopsis">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::synopsis[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected verbatim environment: </xsl:text>
+ <xsl:value-of select="local-name($pi.context)"/>
+ </xsl:message>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$lastLine + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:numberLines')">
+ <xsl:copy-of select="sverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:numberLines')">
+ <xsl:copy-of select="xverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No numberLines function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim">
+ <xsl:param name="rtf"/>
+
+ <!-- I want to make this RTF verbatim. There are two possibilities: either
+ I have access to the exsl:node-set extension function and I can "do it right"
+ or I have to rely on CSS. -->
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($rtf)" mode="make.verbatim.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="white-space: pre;">
+ <xsl:copy-of select="$rtf"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================== -->
+
+<xsl:template name="lastLineNumber">
+ <xsl:param name="listings"/>
+ <xsl:param name="number" select="0"/>
+
+ <xsl:variable name="lines">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="string($listings[1])"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($listings)">
+ <xsl:value-of select="$number"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@startinglinenumber">
+ <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@continuation='continues'">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="number" select="$number + $lines"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lines"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="countLines">
+ <xsl:param name="listing"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($listing, '&#10;')">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="substring-after($listing, '&#10;')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl
new file mode 100644
index 0000000..74c6f20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl
@@ -0,0 +1,1316 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="suwl exsl xlink" version="1.0">
+
+<!-- ********************************************************************
+ $Id: xref.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- Use internal variable for olink xlink role for consistency -->
+<xsl:variable name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="anchor">
+ <xsl:call-template name="anchor"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="xref" name="xref">
+ <xsl:param name="xhref" select="@xlink:href"/>
+ <!-- is the @xlink:href a local idref link? -->
+ <xsl:param name="xlink.idref">
+ <xsl:if test="starts-with($xhref,'#') and (not(contains($xhref,'(')) or starts-with($xhref, '#xpointer(id('))">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/>
+ <xsl:param name="linkend.targets" select="key('id',@linkend)"/>
+ <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/>
+
+ <xsl:variable name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$target">
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:apply-templates>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: xref linking to </xsl:text>
+ <xsl:value-of select="@linkend|@xlink:href"/>
+ <xsl:text> has no generated link text.</xsl:text>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- biblioref handled largely like an xref -->
+<!-- To be done: add support for begin, end, and units attributes -->
+<xsl:template match="biblioref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XRef to nonexistent id: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>???</xsl:text>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$target/title or $target/*/title">
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$target" mode="xref-title"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </a>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="endterm">
+ <!-- Process the children of the endterm element -->
+ <xsl:variable name="endterm">
+ <xsl:apply-templates select="child::node()"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="remove-ids">
+ <xsl:choose>
+ <!-- handle html or xhtml -->
+ <xsl:when test="local-name(.) = 'a' and (namespace-uri(.) = '' or namespace-uri(.) = 'http://www.w3.org/1999/xhtml')">
+ <xsl:choose>
+ <xsl:when test="(@name and count(@*) = 1) or (@id and count(@*) = 1) or (@xml:id and count(@*) = 1) or (@xml:id and @name and count(@*) = 2) or (@id and @name and count(@*) = 2)">
+ <xsl:message>suppress anchor</xsl:message>
+ <!-- suppress the whole thing -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'name' and local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:copy>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-to-prefix"/>
+<xsl:template match="*" mode="xref-to-suffix"/>
+
+<xsl:template match="*" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:if test="$verbose">
+ <xsl:message>
+ <xsl:text>Don't know what gentext to create for xref to: "</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>", ("</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>")</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>???</xsl:text>
+</xsl:template>
+
+<xsl:template match="title" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- if you xref to a title, xref to the parent... -->
+ <xsl:choose>
+ <!-- FIXME: how reliable is this? -->
+ <xsl:when test="contains(local-name(parent::*), 'info')">
+ <xsl:apply-templates select="parent::*[2]" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset |biblioset|blockquote|calloutlist|caution|colophon |constraintdef|formalpara|glossdiv|important|indexdiv |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain |msgrel|msgset|msgsub|note|orderedlist|partintro |productionset|qandadiv|refsynopsisdiv|segmentedlist |set|setindex|sidebar|tip|toc|variablelist|warning" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- catch-all for things with (possibly optional) titles -->
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="author|editor|othercredit|personname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name.list"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table|equation" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="procedure" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="task" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="dedication|acknowledgements|preface|chapter|appendix|article" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix">
+ <xsl:text>[</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix">
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:variable name="entry" select="$bib/bibliography/ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name($entry/*[1]) = 'abbrev'">
+ <xsl:apply-templates select="$entry/*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossary" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="(acronym|abbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossterm|firstterm" mode="xref-to">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="index" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="section|simplesect |sect1|sect2|sect3|sect4|sect5 |refsect1|refsect2|refsect3|refsection" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="qandaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="question[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length(label) != 0">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:apply-templates select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refnamediv/refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="refmeta/manvolnum"/>
+</xsl:template>
+
+<xsl:template match="refnamediv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="refname[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates mode="xref-to"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="term[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary" mode="xref-to">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="xref-to">
+ <xsl:value-of select="primary"/>
+</xsl:template>
+
+<xsl:template match="varlistentry/term" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <!-- to avoid the comma that will be generated if there are several terms -->
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="callout-bug"/>
+</xsl:template>
+
+<xsl:template match="area|areaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="." mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- These are elements for which no link text exists, so an xref to one
+ uses the xrefstyle attribute if specified, or if not it falls back
+ to the container element's link text -->
+<xsl:template match="para|phrase|simpara|anchor|quote" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="context" select="(ancestor::simplesect |ancestor::section |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5 |ancestor::refsection |ancestor::refsect1 |ancestor::refsect2 |ancestor::refsect3 |ancestor::chapter |ancestor::appendix |ancestor::preface |ancestor::partintro |ancestor::dedication |ancestor::acknowledgements |ancestor::colophon |ancestor::bibliography |ancestor::index |ancestor::glossary |ancestor::glossentry |ancestor::listitem |ancestor::varlistentry)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$xrefstyle != ''">
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$context" mode="xref-to">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="author" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name.list"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-title">
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:variable name="title">
+ <xsl:text>[</xsl:text>
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>]</xsl:text>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="step[not(./title)]" mode="title.markup">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="link" name="link">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="a.target"/>
+ <xsl:param name="xhref" select="@xlink:href"/>
+
+ <xsl:variable name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="count(child::node()) &gt; 0">
+ <!-- If it has content, use it -->
+ <xsl:apply-templates/>
+ </xsl:when>
+ <!-- else look for an endterm -->
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Use the xlink:href if no other text -->
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Link element has no content and no Endterm. </xsl:text>
+ <xsl:text>Nothing to show in the link to </xsl:text>
+ <xsl:value-of select="(@xlink:href|@linkend)[1]"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="a.target" select="$a.target"/>
+ <xsl:with-param name="xhref" select="$xhref"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="ulink" name="ulink">
+ <xsl:param name="url" select="@url"/>
+ <xsl:variable name="link">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="$url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" name="olink">
+ <!-- olink content may be passed in from xlink olink -->
+ <xsl:param name="content" select="NOTANELEMENT"/>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="localinfo" select="@localinfo"/>
+
+ <xsl:choose>
+ <!-- olinks resolved by stylesheet and target database -->
+ <xsl:when test="@targetdoc or @targetptr or (@xlink:role=$xolink.role and contains(@xlink:href, '#') )">
+
+ <xsl:variable name="targetdoc.att">
+ <xsl:choose>
+ <xsl:when test="@targetdoc != ''">
+ <xsl:value-of select="@targetdoc"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and contains(@xlink:href, '#')">
+ <xsl:value-of select="substring-before(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr.att">
+ <xsl:choose>
+ <xsl:when test="@targetptr != ''">
+ <xsl:value-of select="@targetptr"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and contains(@xlink:href, '#')">
+ <xsl:value-of select="substring-after(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="xref-context" select="true()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database.filename">
+ <xsl:call-template name="select.target.database">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database" select="document($target.database.filename,/)"/>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: root element of target.database '</xsl:text>
+ <xsl:value-of select="$target.database.filename"/>
+ <xsl:text>' is '</xsl:text>
+ <xsl:value-of select="local-name($target.database/*[1])"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="olink.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="string-length($olink.key) = 0">
+ <xsl:message>
+ <xsl:text>Error: unresolved olink: </xsl:text>
+ <xsl:text>targetdoc/targetptr = '</xsl:text>
+ <xsl:value-of select="$targetdoc.att"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$targetptr.att"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make.olink.href">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="hottext">
+ <xsl:choose>
+ <xsl:when test="string-length($content) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.docname.citation">
+ <xsl:call-template name="olink.document.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="olink.page.citation">
+ <xsl:call-template name="olink.page.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$hottext"/>
+ </a>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="olink"><xsl:copy-of select="$hottext"/></span>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+
+ <!-- Or use old olink mechanism -->
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@linkmode">
+ <!-- use the linkmode to get the base URI, use localinfo as fragid -->
+ <xsl:variable name="modespec" select="key('id',@linkmode)"/>
+ <xsl:if test="count($modespec) != 1 or local-name($modespec) != 'modespec'">
+ <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
+ </xsl:if>
+ <xsl:value-of select="$modespec"/>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="@type = 'href'">
+ <xsl:call-template name="olink.outline">
+ <xsl:with-param name="outline.base.uri" select="unparsed-entity-uri(@targetdocent)"/>
+ <xsl:with-param name="localinfo" select="@localinfo"/>
+ <xsl:with-param name="return" select="'href'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$olink.resolver"/>
+ <xsl:text>?</xsl:text>
+ <xsl:value-of select="$olink.sysid"/>
+ <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
+ <!-- XSL gives no access to the public identifier (grumble...) -->
+ <xsl:if test="@localinfo">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:value-of select="$olink.fragid"/>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="olink.hottext"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="pagenumber.markup">
+ <!-- no-op in HTML -->
+</xsl:template>
+
+
+<xsl:template name="olink.outline">
+ <xsl:param name="outline.base.uri"/>
+ <xsl:param name="localinfo"/>
+ <xsl:param name="return" select="href"/>
+
+ <xsl:variable name="outline-file" select="concat($outline.base.uri, $olink.outline.ext)"/>
+
+ <xsl:variable name="outline" select="document($outline-file,.)/div"/>
+
+ <xsl:variable name="node-href">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:value-of select="$node/@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/@href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="node-xref">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:copy-of select="$node/xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$return = 'href'">
+ <xsl:value-of select="$node-href"/>
+ </xsl:when>
+ <xsl:when test="$return = 'xref'">
+ <xsl:value-of select="$node-xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$node-xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="xref.xreflabel">
+ <!-- called to process an xreflabel...you might use this to make -->
+ <!-- xreflabels come out in the right font for different targets, -->
+ <!-- for example. -->
+ <xsl:param name="target" select="."/>
+ <xsl:value-of select="$target/@xreflabel"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="title" mode="xref">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="command" mode="xref">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="function" mode="xref">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <!-- FIXME: what about the case where titleabbrev is inside the info? -->
+ <xsl:when test="$purpose = 'xref' and titleabbrev">
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="chapter|appendix" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <xsl:when test="$purpose = 'xref'">
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$title"/>
+ </em>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.subtitle.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="subtitle"/>
+
+ <xsl:copy-of select="$subtitle"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.label.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="label"/>
+
+ <xsl:copy-of select="$label"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.pagenumber.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="pagenumber"/>
+
+ <xsl:copy-of select="$pagenumber"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.direction.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="direction"/>
+
+ <xsl:copy-of select="$direction"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.olink.docname.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="docname"/>
+
+ <span class="olinkdocname">
+ <xsl:copy-of select="$docname"/>
+ </span>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl
new file mode 100644
index 0000000..6a0090a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: admon.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="*" mode="admon.graphic.width">
+ <xsl:param name="node" select="."/>
+ <xsl:text>25</xsl:text>
+</xsl:template>
+
+<xsl:template match="note|important|warning|caution|tip">
+ <xsl:choose>
+ <xsl:when test="$admon.graphics != 0">
+ <xsl:call-template name="graphical.admonition"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="nongraphical.admonition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+ <xsl:value-of select="$admon.graphics.path"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='note'">note</xsl:when>
+ <xsl:when test="local-name($node)='warning'">warning</xsl:when>
+ <xsl:when test="local-name($node)='caution'">caution</xsl:when>
+ <xsl:when test="local-name($node)='tip'">tip</xsl:when>
+ <xsl:when test="local-name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$admon.graphics.extension"/>
+</xsl:template>
+
+<xsl:template name="graphical.admonition">
+ <xsl:variable name="admon.type">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:otherwise>Note</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="alt">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$admon.type"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$admon.style != ''">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$admon.type"/>
+ <xsl:if test="title|info/title">
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="(title|info/title)[1]"/>
+ </xsl:if>
+ </xsl:attribute>
+ <tr>
+ <td rowspan="2" align="center" valign="top">
+ <xsl:attribute name="width">
+ <xsl:apply-templates select="." mode="admon.graphic.width"/>
+ </xsl:attribute>
+ <img alt="[{$alt}]">
+ <xsl:attribute name="src">
+ <xsl:call-template name="admon.graphic"/>
+ </xsl:attribute>
+ </img>
+ </td>
+ <th align="{$direction.align.start}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:if>
+ </th>
+ </tr>
+ <tr>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="nongraphical.admonition">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$admon.style">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <h3 class="title">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h3>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="note/title"/>
+<xsl:template match="important/title"/>
+<xsl:template match="warning/title"/>
+<xsl:template match="caution/title"/>
+<xsl:template match="tip/title"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl
new file mode 100644
index 0000000..3e137e8
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<xsl:template name="add.annotation.links">
+ <xsl:param name="scripts" select="normalize-space($annotation.js)"/>
+ <xsl:choose>
+ <xsl:when test="contains($scripts, ' ')">
+ <script type="text/javascript" src="{substring-before($scripts, ' ')}"/>
+ <xsl:call-template name="add.annotation.links">
+ <xsl:with-param name="scripts" select="substring-after($scripts, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <script type="text/javascript" src="{$scripts}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation"/>
+
+<xsl:template name="apply-annotations">
+ <xsl:if test="$annotation.support != 0">
+ <!-- do any annotations apply to the context node? -->
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+
+ <xsl:variable name="aids">
+ <xsl:for-each select="//annotation">
+ <xsl:if test="@annotates=$id or starts-with(@annotates, concat($id, ' ')) or contains(@annotates, concat(' ', $id, ' ')) or substring(@annotates, string-length(@annotates)-3) = concat(' ', $id)">
+ <xsl:value-of select="generate-id()"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="normalize-space(@annotations) != ''">
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations" select="normalize-space(@annotations)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$aids != ''">
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids" select="normalize-space($aids)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="annotations-pointed-to">
+ <xsl:param name="annotations"/>
+ <xsl:choose>
+ <xsl:when test="contains($annotations, ' ')">
+ <xsl:variable name="a" select="key('id', substring-before($annotations, ' '))"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations" select="substring-after($annotations, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="a" select="key('id', $annotations)"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="apply-annotations-by-gid">
+ <xsl:param name="gids"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($gids, ' ')">
+ <xsl:variable name="gid" select="substring-before($gids, ' ')"/>
+ <xsl:apply-templates select="key('gid', $gid)" mode="annotation-inline"/>
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids" select="substring-after($gids, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="key('gid', $gids)" mode="annotation-inline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-inline">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a id="anch-{generate-id(.)}" href="#annot-{generate-id(.)}" title="{$title}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="onClick">
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.showPopup('anch-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>'); return false;</xsl:text>
+ </xsl:attribute>
+ <img src="{$annotation.graphic.open}" border="0" alt="{$title}"/>
+ </a>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-popup">
+ <div class="annotation-nocss">
+ <p>
+ <a id="annot-{generate-id(.)}"/>
+ <xsl:text>Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>:</xsl:text>
+ </p>
+ </div>
+
+ <div id="popup-{generate-id(.)}" class="annotation-popup">
+ <xsl:if test="string-length(.) &gt; 300">
+ <xsl:attribute name="style">width:400px</xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="annotation-title"/>
+ <div class="annotation-body">
+ <xsl:apply-templates select="*[local-name(.) != 'title']"/>
+ </div>
+ <div class="annotation-close">
+ <a href="#" onclick="popup_{generate-id(.)}.hidePopup();return false;">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <img src="{$annotation.graphic.close}" alt="X" border="0"/>
+ </a>
+ </div>
+ </div>
+</xsl:template>
+
+<xsl:template name="annotation-title">
+ <div class="annotation-title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Annotation</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl
new file mode 100644
index 0000000..cfaa447
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kimber.xsl
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="k" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kimber.xsl 8729 2010-07-15 16:43:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+<!-- ==================================================================== -->
+<!-- *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 *** -->
+<!-- ==================================================================== -->
+
+
+<xsl:include href="../common/autoidx-kimber.xsl"/>
+
+<!-- Java sort apparently works only on lang part, not country -->
+<xsl:param name="sort.lang">
+ <xsl:choose>
+ <xsl:when test="contains(concat(/*/@lang, /*/@xml:lang), '-')">
+ <xsl:value-of select="substring-before(concat(/*/@lang, /*/@xml:lang), '-')"/>
+ </xsl:when>
+ <xsl:when test="contains(concat(/*/@lang, /*/@xml:lang), '_')">
+ <xsl:value-of select="substring-before(concat(/*/@lang, /*/@xml:lang), '_')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat(/*/@lang, /*/@xml:lang)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('k:getIndexGroupKey'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Innodata Isogen
+Java extensions for </xsl:text>
+ <xsl:text>internationalized indexes.
+Install those </xsl:text>
+ <xsl:text>extensions, or use a different index method.
+</xsl:text>
+ <xsl:text>For more information, see:
+</xsl:text>
+ <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms" select="//indexterm[count(.|key('k-group', k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical" select="$terms[not(starts-with( k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))), '#NUMERIC' ))]"/>
+
+ <xsl:variable name="others" select="$terms[starts-with( k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))), '#NUMERIC' )]"/>
+
+ <div class="index">
+ <xsl:if test="$others">
+ <div class="indexdev">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others" mode="index-symbol-div">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}" select="k:getIndexGroupSortKey(concat(/*/@lang, /*/@xml:lang), k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical" mode="index-div-kimber">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}" select="k:getIndexGroupSortKey(concat(/*/@lang, /*/@xml:lang), k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))"/>
+ </xsl:apply-templates>
+ </div>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kimber">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="k:getIndexGroupKey(concat(/*/@lang, /*/@xml:lang), normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))"/>
+
+ <xsl:variable name="label" select="k:getIndexGroupLabel(concat(/*/@lang, /*/@xml:lang), $key)"/>
+
+ <xsl:if test="key('k-group', $label)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="$label"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('k-group', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [1])=1]" mode="index-primary">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))" lang="{$sort.lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl
new file mode 100644
index 0000000..de6eef5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-kosek.xsl
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:i="urn:cz-kosek:functions:index" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:func="http://exslt.org/functions" xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="func exslt" exclude-result-prefixes="func exslt i l k" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kosek.xsl 8725 2010-07-15 08:08:04Z kosek $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+
+<xsl:include href="../common/autoidx-kosek.xsl"/>
+
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="contains($vendor, 'Saxonica')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('i:group-index'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the
+</xsl:text>
+ <xsl:text>index extension functions be imported:
+</xsl:text>
+ <xsl:text> xsl:import href="common/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms" select="//indexterm[count(.|key('group-code', i:group-index(normalize-space(concat(primary/@sortas, &quot; &quot;, primary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <div class="index">
+ <xsl:apply-templates select="$terms" mode="index-div-kosek">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="i:group-index(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))" data-type="number"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kosek">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="i:group-index(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))"/>
+
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:if test="key('group-code', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="i:group-letter($key)"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('group-code', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])=1]" mode="index-primary">
+ <xsl:sort select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))" lang="{$lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl
new file mode 100644
index 0000000..5d08db6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx-ng.xsl
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-ng.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- You should have this directly in your customization file. -->
+<!-- This file is there only to retain backward compatibility. -->
+<xsl:import href="autoidx-kosek.xsl"/>
+<xsl:param name="index.method">kosek</xsl:param>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl
new file mode 100644
index 0000000..baf4a1d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autoidx.xsl
@@ -0,0 +1,681 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="exslt" exclude-result-prefixes="exslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx.xsl 8516 2009-08-12 02:54:56Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "basic" method derived from Jeni Tennison's work. -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+
+<xsl:variable name="kimber.imported" select="0"/>
+<xsl:variable name="kosek.imported" select="0"/>
+
+<xsl:key name="letter" match="indexterm" use="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1),'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+
+<xsl:key name="primary" match="indexterm" use="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))"/>
+
+<xsl:key name="secondary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)))"/>
+
+<xsl:key name="tertiary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)))"/>
+
+<xsl:key name="endofrange" match="indexterm[@class='endofrange']" use="@startref"/>
+
+<xsl:key name="primary-section" match="indexterm[not(secondary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]))"/>
+
+<xsl:key name="secondary-section" match="indexterm[not(tertiary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]))"/>
+
+<xsl:key name="tertiary-section" match="indexterm[not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]))"/>
+
+<xsl:key name="see-also" match="indexterm[seealso]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, seealso)"/>
+
+<xsl:key name="see" match="indexterm[see]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, see)"/>
+
+<xsl:key name="sections" match="*[@id or @xml:id]" use="@id|@xml:id"/>
+
+
+<xsl:template name="generate-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$index.method = 'kosek'">
+ <xsl:call-template name="generate-kosek-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$index.method = 'kimber'">
+ <xsl:call-template name="generate-kimber-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="generate-basic-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate-basic-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms" select="//indexterm [count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical" select="$terms[contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1))]"/>
+
+ <xsl:variable name="others" select="$terms[not(contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1)))]"/>
+ <div class="index">
+ <xsl:if test="$others">
+ <xsl:choose>
+ <xsl:when test="normalize-space($type) != '' and $others[@type = $type][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:when>
+ <xsl:when test="normalize-space($type) != ''">
+ <!-- Output nothing, as there isn't a match for $other using this $type -->
+ </xsl:when>
+ <xsl:otherwise>
+ <div class="indexdiv">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical[count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-div-basic">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kosek.xsl is imported -->
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+
+ <xsl:if test="$exsl.node.set.available = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kosek.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the
+</xsl:text>
+ <xsl:text>kosek index extensions be imported:
+</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kimber.xsl is imported -->
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kimber.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the
+</xsl:text>
+ <xsl:text>kimber index extensions be imported:
+</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kimber.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-basic">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+
+ <xsl:if test="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <div class="indexdiv">
+ <xsl:if test="contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), $key)">
+ <h3>
+ <xsl:value-of select="translate($key, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </h3>
+ </xsl:if>
+ <dl>
+ <xsl:apply-templates select="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary))) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])=1]" mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-symbol-div">
+ <xsl:param name="scope" select="/"/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+
+ <xsl:apply-templates select="key('letter', $key) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[1]) = 1]" mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-primary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))"/>
+ <xsl:variable name="refs" select="key('primary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
+ <dt>
+ <xsl:for-each select="$refs/primary">
+ <xsl:if test="@id or @xml:id">
+ <a id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="primary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('primary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(secondary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, &quot; &quot;, &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, &quot; &quot;, &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-secondary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-secondary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)))"/>
+ <xsl:variable name="refs" select="key('secondary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
+ <dt>
+ <xsl:for-each select="$refs/secondary">
+ <xsl:if test="@id or @xml:id">
+ <a id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="secondary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('secondary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs[not(tertiary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-tertiary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-tertiary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)))"/>
+ <xsl:variable name="refs" select="key('tertiary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
+ <dt>
+ <xsl:for-each select="$refs/tertiary">
+ <xsl:if test="@id or @xml:id">
+ <a id="{(@id|@xml:id)[1]}"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:value-of select="tertiary"/>
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('tertiary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$refs[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$refs/see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/seealso">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="position"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$position = 1">
+ <xsl:value-of select="$term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$number.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="@zone and string(@zone)">
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="normalize-space(@zone)"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]/titleabbrev and $index.prefer.titleabbrev != 0">
+ <xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]" mode="title.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="$index.links.to.section = 1">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]"/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="."/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:attribute>
+
+ <xsl:value-of select="$title"/> <!-- text only -->
+ </a>
+
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:if test="key('endofrange', $id)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]">
+ <xsl:apply-templates select="key('endofrange', $id)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][last()]" mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="separator" select="$range.separator"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="zones"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($zones, ' ')">
+ <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="zone" select="$zones"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-see">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="see"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-seealso">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:for-each select="seealso">
+ <xsl:sort select="translate(., 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <dt>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>)</xsl:text>
+ </dt>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="*" mode="index-title-content">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]" mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template name="index.separator">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$key = 'index.term.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.term.separator != ''">
+ <xsl:copy-of select="$index.term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">term-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.number.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.number.separator != ''">
+ <xsl:copy-of select="$index.number.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">number-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.range.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.range.separator != ''">
+ <xsl:copy-of select="$index.range.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">range-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl
new file mode 100644
index 0000000..a337ec5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/autotoc.xsl
@@ -0,0 +1,663 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: autotoc.xsl 8558 2009-12-11 00:33:17Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="toc.listitem.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dt</xsl:when>
+ <xsl:otherwise>li</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<!-- this is just hack because dl and ul aren't completely isomorphic -->
+<xsl:variable name="toc.dd.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dd</xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:template name="make.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="toc.title">
+ <xsl:if test="$toc.title.p">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="toc-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$manual.toc != ''">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="toc" select="document($manual.toc, .)"/>
+ <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
+ <xsl:if test="$tocentry and $tocentry/*">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:if test="$nodes.plus">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="$nodes.plus" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$nodes">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="set.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="book|setindex"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="division.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="part|reference |preface|chapter|appendix |article |bibliography|glossary|index |refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="section|sect1 |simplesect[$simplesect.in.toc != 0] |refentry |article|bibliography|glossary |appendix|index |bridgehead[not(@renderas) and $bridgehead.in.toc != 0] |.//bridgehead[@renderas='sect1' and $bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc.separator">
+ <!-- Customize to output something between
+ component.toc and first output -->
+</xsl:template>
+
+<xsl:template name="section.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="section|sect1|sect2|sect3|sect4|sect5|refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="section.toc.separator">
+ <!-- Customize to output something between
+ section.toc and first output -->
+</xsl:template>
+<!-- ==================================================================== -->
+
+<xsl:template name="subtoc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="subtoc">
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:apply-templates mode="toc" select="$nodes.plus">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="toc" select="$nodes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'section'">
+ <xsl:value-of select="count(ancestor::section) + 1"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'sect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'sect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'sect4'">4</xsl:when>
+ <xsl:when test="local-name(.) = 'sect5'">5</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'simplesect'">
+ <!-- sigh... -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'section'">
+ <xsl:value-of select="count(ancestor::section)"/>
+ </xsl:when>
+ <xsl:when test="local-name(..) = 'sect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'sect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'sect3'">4</xsl:when>
+ <xsl:when test="local-name(..) = 'sect4'">5</xsl:when>
+ <xsl:when test="local-name(..) = 'sect5'">6</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect3'">4</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="subtoc.list">
+ <xsl:choose>
+ <xsl:when test="$toc.dd.type = ''">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.dd.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ <xsl:if test="$toc.listitem.type = 'li' and $toc.section.depth &gt; $depth and ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) ) and $toc.max.depth &gt; $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+ </xsl:element>
+ <xsl:if test="$toc.listitem.type != 'li' and $toc.section.depth &gt; $depth and ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) ) and $toc.max.depth &gt; $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc.line">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="depth" select="1"/>
+ <xsl:param name="depth.from.context" select="8"/>
+
+ <span>
+ <xsl:attribute name="class"><xsl:value-of select="local-name(.)"/></xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is zero, then output the label -->
+ <!-- * before the hyperlinked title (as the DSSSL stylesheet does) -->
+ <xsl:if test="$autotoc.label.in.hyperlink = 0">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$toc-context"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is non-zero, then output the label -->
+ <!-- * as part of the hyperlinked title -->
+ <xsl:if test="not($autotoc.label.in.hyperlink = 0)">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </span>
+</xsl:template>
+
+<xsl:template match="book" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="part|reference |preface|chapter|appendix |article |bibliography|glossary|index |refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="setindex" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the setindex tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="appendix|chapter|article |index|glossary|bibliography |preface|reference|refentry |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix|article" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section|sect1 |simplesect[$simplesect.in.toc != 0] |refentry |glossary|bibliography|index |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect1" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect2 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect2" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect3 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect3" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect4 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect4" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect5 |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect5" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="simplesect" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section|refentry |simplesect[$simplesect.in.toc != 0] |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:if test="$bridgehead.in.toc != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="bibliography|glossary" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="index" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the index tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="refmeta" select=".//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select=".//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="titleabbrev.markup"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <span class="refentrytitle">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:copy-of select="$title"/>
+ </a>
+ </span>
+ <span class="refpurpose">
+ <xsl:if test="$annotate.toc != 0">
+ <!-- * DocBook 5 says inlinemediaobject (among other things) -->
+ <!-- * is allowed in refpurpose; so we need to run -->
+ <!-- * apply-templates on refpurpose here, instead of value-of -->
+ <xsl:apply-templates select="refnamediv/refpurpose"/>
+ </xsl:if>
+ </span>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="title" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template name="manual-toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="tocentry"/>
+
+ <!-- be careful, we don't want to change the current document to the other tree! -->
+
+ <xsl:if test="$tocentry">
+ <xsl:variable name="node" select="key('id', $tocentry/@linkend)"/>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="$node" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$node"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+
+ <xsl:if test="$tocentry/*">
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="$tocentry/following-sibling::*">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/following-sibling::*[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="list.of.titles">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="titles" select="'table'"/>
+ <xsl:param name="nodes" select=".//table"/>
+
+ <xsl:if test="$nodes">
+ <div class="list-of-{$titles}s">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="toc-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">ListofTables</xsl:when>
+ <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+ <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">ListofTables</xsl:when>
+ <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+ <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example|equation|procedure" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:element name="{$toc.listitem.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+</xsl:template>
+
+<!-- Used only if qanda.in.toc parameter is non-zero -->
+<xsl:template match="qandaset" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="qandadiv | qandaentry"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="qandadiv|qandaentry" mode="toc">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl
new file mode 100644
index 0000000..7713409
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio-iso690.xsl
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 6402 2006-11-12 08:23:21Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ The original code for processing bibliography in ISO690 style
+ was provided by Jana Dvorakova <jana4u@seznam.cz>
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep -->
+<xsl:param name="biblioentry.alt.primary.seps" select="0"/>
+
+<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 -->
+<xsl:param name="biblioentry.primary.count" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="iso690.makecitation">
+<!-- Types of resources -->
+ <xsl:choose>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM -->
+ <!-- same as Monographs -->
+ <xsl:when test="./@role='messagesystem'">
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:when>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES -->
+ <!-- same as Contributions to Monographs -->
+ <xsl:when test="./@role='message'">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- SERIALS -->
+ <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn">
+ <xsl:call-template name="iso690.serial"/>
+ </xsl:when>
+
+ <!-- PARTS OF MONOGRAPHS -->
+ <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])">
+ <xsl:call-template name="iso690.monogr.part"/>
+ </xsl:when>
+
+ <!-- CONTRIBUTIONS TO MONOGRAPHS -->
+ <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- ARTICLES, ETC., IN SERIALS -->
+ <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')">
+ <xsl:call-template name="iso690.article"/>
+ </xsl:when>
+
+ <!-- PATENT DOCUMENTS -->
+ <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])">
+ <xsl:call-template name="iso690.patent"/>
+ </xsl:when>
+
+ <!-- MONOGRAPHS -->
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- MONOGRAPHS -->
+<xsl:template name="iso690.monogr">
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Extent -->
+ <xsl:call-template name="iso690.extent"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.isbn"/>
+</xsl:template>
+
+<!-- SERIALS -->
+<xsl:template name="iso690.serial">
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Responsibility [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/>
+ </xsl:call-template>
+ <!-- Issue designation (date and/or num) [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.issuing"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.issn"/>
+</xsl:template>
+
+<!-- PARTS OF MONOGRAPHS -->
+<xsl:template name="iso690.monogr.part">
+ <!-- Primary responsibility of host document -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium of host document -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility of host document [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./volumenum"/>
+ </xsl:call-template>
+ <!-- Numeration of the part [nonEL]-->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.partnr"/>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.part.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Numeration within host document [EL] -->
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- CONTRIBUTIONS TO MONOGRAPHS -->
+<xsl:template name="iso690.paper.mon">
+<!-- Contribution -->
+ <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/>
+<!-- In -->
+ <xsl:text>In </xsl:text>
+<!-- Host -->
+ <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.part">
+<!-- Contribution -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.book">
+<!-- Host -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.paper.pub"/>
+ <!-- Numeration within host document [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ARTICLES, ETC., IN SERIALS -->
+<xsl:template name="iso690.article">
+<!-- Article -->
+ <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/>
+<!-- Serial -->
+ <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.art">
+<!-- Article -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:if test="not(../*/bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.jour">
+<!-- Serial -->
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/>
+ </xsl:call-template>
+ <!-- Number designation [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.article.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.issn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- PATENT DOCUMENTS -->
+<xsl:template name="iso690.patent">
+ <!-- Primary responsibility (applicant) -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title of the invention -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Identification -->
+ <xsl:call-template name="iso690.pat.ident"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Elements -->
+
+<!-- Primary responsibility -->
+<xsl:template name="iso690.primary">
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./authorgroup/author|./author">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/editor|./editor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/corpauthor|./corpauthor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="(./firstname)and(./surname)">
+ <xsl:call-template name="iso690.author"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author.list">
+ <xsl:param name="person.list" select="author|corpauthor|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="group" select="./authorgroup[@role='many']"/>
+ <xsl:param name="many" select="0"/>
+
+ <xsl:param name="primary.many">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.editor">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$person.count &lt; 4 and not($group)">
+ <xsl:call-template name="iso690.author">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1 and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.two.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.last.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.more.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($count = $person.count)">
+ <xsl:choose>
+ <xsl:when test="$many!=0">
+ <xsl:if test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ </xsl:if>
+ <xsl:value-of select="$primary.many"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$primary.many"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ <xsl:value-of select="$primary.sep"/>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='corpauthor'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count]//firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="many" select="$many"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="($biblioentry.primary.count&gt;=3) and ($person.count&gt;=3)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]|$person.list[3]"/>
+ <xsl:with-param name="person.count" select="3"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($biblioentry.primary.count&gt;1) and ($person.count&gt;1)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/>
+ <xsl:with-param name="person.count" select="2"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]"/>
+ <xsl:with-param name="person.count" select="1"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="lastfirst.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="name($node)!='corpauthor'">
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/>
+ </span>
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:value-of select="$lastfirst.sep"/>
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Title and Type of medium -->
+<xsl:template name="iso690.title">
+ <xsl:param name="medium" select="./bibliomisc[@role='medium']"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:apply-templates mode="iso690.mode" select="./title">
+ <xsl:with-param name="medium" select="$medium"/>
+ <xsl:with-param name="italic" select="$italic"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="title" mode="iso690.mode">
+ <xsl:param name="medium"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$italic=1">
+ <xsl:call-template name="iso690.italic.title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.make.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$medium">
+ <xsl:value-of select="$medium1"/>
+ <xsl:apply-templates mode="iso690.mode" select="$medium"/>
+ <xsl:value-of select="$medium2"/>
+ </xsl:if>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="iso690.italic.title">
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="iso690.make.title"/>
+ </em>
+</xsl:template>
+
+<xsl:template name="iso690.make.title">
+ <xsl:param name="submaintitle.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:if test="../subtitle">
+ <xsl:value-of select="$submaintitle.sep"/>
+ <xsl:apply-templates mode="iso690.mode" select="../subtitle"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Subordinate responsibility -->
+<xsl:template name="iso690.secondary">
+ <xsl:param name="secondary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="secondary.person.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:for-each select="./bibliomisc[@role='secondary']">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ <xsl:choose>
+ <xsl:when test="position()=count(../bibliomisc[@role='secondary'])">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$secondary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$secondary.person.sep"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Edition -->
+<xsl:template name="iso690.edition">
+ <xsl:param name="after"/>
+ <xsl:param name="edition.serial.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="string($after)!=''">
+ <xsl:apply-templates mode="iso690.mode" select="./edition">
+ <xsl:with-param name="sep" select="$edition.serial.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./edition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="edition" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Issue designation (date and/or num) -->
+<xsl:template name="iso690.issuing">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing']">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./volumenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.issuedate">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'][2]">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Numeration of the part -->
+<xsl:template name="iso690.partnr">
+ <xsl:param name="partnr.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$partnr.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+<xsl:template name="iso690.pub">
+ <xsl:param name="onlydate" select="0"/>
+ <xsl:param name="placesep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="pubsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="endsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$pubsep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="$onlydate=1">
+ <xsl:call-template name="iso690.location">
+ <xsl:with-param name="onlypages" select="1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.paper.pub">
+ <xsl:param name="spec.pubinfo.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumnum|./issuenum|./pagenums">
+ <xsl:call-template name="iso690.pub">
+ <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.pub"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.data">
+ <xsl:param name="sep"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/>
+ <xsl:choose>
+ <xsl:when test="./date[@role='cit']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./date[@role='upd']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="publisher/address/city|publishername" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="0"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pubdate|copyright/year" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="1"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="name(.)!='pubdate'">
+ <xsl:value-of select="'&#169;'"/><!-- copyright -->
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:if test="$upd!=0">
+ <xsl:choose>
+ <xsl:when test="name(.)='pubdate'">
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(../date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.space">
+ <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="$text='-'">
+ <xsl:value-of select="' '"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Date of update/revision -->
+<xsl:template match="date[@role='upd']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$sep"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Date of citation -->
+<xsl:template match="date[@role='cit']" mode="iso690.mode">
+ <xsl:param name="datecit1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$datecit1"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$datecit2"/>
+</xsl:template>
+
+<!-- Extent -->
+<xsl:template name="iso690.extent">
+ <xsl:param name="extent.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums">
+ <xsl:with-param name="sep" select="$extent.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Location within host -->
+<xsl:template name="iso690.part.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:when test="./bibliomisc[@role='sectitle']">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.article.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="locs.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])">
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="iso690.location"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="volumenum|issuenum" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Series -->
+<xsl:template name="iso690.serie">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/>
+</xsl:template>
+
+<!-- Notes -->
+<xsl:template name="iso690.notice">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode">
+ <xsl:param name="notice.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$notice.sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Avaibility and access -->
+<xsl:template name="iso690.access">
+ <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']">
+ <xsl:choose>
+ <xsl:when test="position()=1">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select=".">
+ <xsl:with-param name="firstacc" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode">
+ <xsl:param name="link1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="link2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$link1"/>
+ <xsl:call-template name="ulink"/>
+ <xsl:value-of select="$link2"/>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode">
+ <xsl:param name="firstacc" select="1"/>
+ <xsl:param name="access">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="acctoo">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="onwww">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="oninet">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.end">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$firstacc=1">
+ <xsl:value-of select="$access"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$acctoo"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="(./ulink)and(string(./ulink)=string(.))">
+ <xsl:choose>
+ <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))">
+ <xsl:value-of select="$onwww"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$oninet"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="(./ulink)and(string(./ulink)!=string(.))">
+ <xsl:value-of select="text()[1]"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="text()[1]"/>
+ <xsl:with-param name="sep" select="$access.end"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$access.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISBN -->
+<xsl:template name="iso690.isbn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='isbn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/>
+ </xsl:when>
+ <xsl:when test="./isbn">
+ <xsl:apply-templates mode="iso690.mode" select="./isbn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode">
+ <xsl:param name="isbn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$isbn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISSN -->
+<xsl:template name="iso690.issn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='issn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/>
+ </xsl:when>
+ <xsl:when test="./issn">
+ <xsl:apply-templates mode="iso690.mode" select="./issn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode">
+ <xsl:param name="issn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$issn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Identification of patent document -->
+<xsl:template name="iso690.pat.ident">
+ <xsl:param name="patdate.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./address/country"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/>
+ <xsl:choose>
+ <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$patdate.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Country or issuing office -->
+<xsl:template match="address/country" mode="iso690.mode">
+ <xsl:param name="patcountry.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template>
+ </xsl:param>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates mode="iso690.mode"/>
+ </em>
+ <xsl:value-of select="$patcountry.sep"/>
+</xsl:template>
+
+<!-- Kind of patent document -->
+<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode">
+ <xsl:param name="pattype.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template>
+ </xsl:param>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates mode="iso690.mode"/>
+ </em>
+ <xsl:value-of select="$pattype.sep"/>
+</xsl:template>
+
+<!-- Number -->
+<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode">
+ <xsl:param name="patnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$patnum.sep"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Supplementary templates -->
+
+<xsl:template name="iso690.endsep">
+ <xsl:param name="text"/>
+ <xsl:param name="sep" select=". "/>
+ <xsl:choose>
+ <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)">
+ <xsl:value-of select="$sep"/>
+ </xsl:when>
+ <xsl:when test="substring($text,string-length($text))=' '">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="' '"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="iso690.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl
new file mode 100644
index 0000000..18ee8e2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/biblio.xsl
@@ -0,0 +1,1240 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliography">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="bibliography.titlepage"/>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliography/bibliographyinfo"/>
+<xsl:template match="bibliography/info"/>
+<xsl:template match="bibliography/title"/>
+<xsl:template match="bibliography/subtitle"/>
+<xsl:template match="bibliography/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliodiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliodiv/title">
+ <h3>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliolist">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[not(self::blockinfo) and not(self::info) and not(self::title) and not(self::titleabbrev) and not(self::biblioentry) and not(self::bibliomixed)]"/>
+ <xsl:apply-templates select="biblioentry|bibliomixed"/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="biblioentry">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography// *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:choose>
+ <xsl:when test="$bibliography.style = 'iso690'">
+ <xsl:call-template name="iso690.makecitation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomixed">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography// *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$label"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="biblioentry.label">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:text>[</xsl:text>
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node/child::*[1]) = 'abbrev'">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="$node/abbrev[1]"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xreflabel">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xreflabel"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xml:id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xml:id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- nop --></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliography.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliography.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="address" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artheader|articleinfo|info" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name.list"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioset/title|biblioset/citetitle" mode="bibliography.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bookbiblio" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collab" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confdates" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="copyright" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="bibliography.mode"/>
+ <xsl:if test="holder">
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="bibliography.mode"/>
+ </xsl:if>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="year" mode="bibliography.mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="corpauthor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliography.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesinfo" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates mode="bibliography.mode"/></em>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- See FR #1934434 and http://doi.org -->
+<xsl:template match="biblioid[@class='doi']" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliomixed.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliomixed.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="address" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bibliomset" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset/title|bibliomset/citetitle" mode="bibliomixed.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+
+<xsl:template match="collab" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="copyright" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliomixed.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- See FR #1934434 and http://doi.org -->
+<xsl:template match="biblioid[@class='doi']" mode="bibliomixed.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl
new file mode 100644
index 0000000..125b784
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/block.xsl
@@ -0,0 +1,535 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: block.xsl 8831 2010-08-13 17:08:49Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- What should we do about styling blockinfo? -->
+
+<xsl:template match="blockinfo|info">
+ <!-- suppress -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="block.object">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="para">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:if test="position() = 1 and parent::listitem">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="parent::listitem"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="paragraph">
+ <xsl:param name="class" select="''"/>
+ <xsl:param name="content"/>
+
+ <xsl:variable name="p">
+ <p>
+ <xsl:choose>
+ <xsl:when test="$class != ''">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="locale.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$content"/>
+ </p>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$html.cleanup != 0">
+ <xsl:call-template name="unwrap.p">
+ <xsl:with-param name="p" select="$p"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <!-- see also listitem/simpara in lists.xsl -->
+ <p>
+ <xsl:call-template name="locale.html.attributes"/>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Only use title from info -->
+<xsl:template match="formalpara/info">
+ <xsl:apply-templates select="title"/>
+</xsl:template>
+
+<xsl:template match="formalpara/title|formalpara/info/title">
+ <xsl:variable name="titleStr">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:variable name="lastChar">
+ <xsl:if test="$titleStr != ''">
+ <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="formalpara-title">
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != '' and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != '' and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="formalpara/para">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="blockquote">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="attribution">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" class="blockquote" summary="Block quote">
+ <tr>
+ <td width="10%" valign="top">&#160;</td>
+ <td width="80%" valign="top">
+ <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/>
+ </td>
+ <td width="10%" valign="top">&#160;</td>
+ </tr>
+ <tr>
+ <td width="10%" valign="top">&#160;</td>
+ <td colspan="2" align="{$direction.align.end}" valign="top">
+ <xsl:text>--</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <blockquote>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </blockquote>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="blockquote/title|blockquote/info/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="blockquote-title">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div class="blockquote-title">
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates/>
+ </strong>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Use an em dash per Chicago Manual of Style and https://sourceforge.net/tracker/index.php?func=detail&aid=2793878&group_id=21935&atid=373747 -->
+<xsl:template match="epigraph">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates select="para|simpara|formalpara|literallayout"/>
+ <xsl:if test="attribution">
+ <div class="attribution">
+ <span>&#8212;<xsl:apply-templates select="attribution"/></span>
+ </div>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="attribution">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="abstract|sidebar">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="sidebar.titlepage"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title|sidebar/title">
+</xsl:template>
+
+<xsl:template match="sidebar/sidebarinfo|sidebar/info"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="msgset">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="simplemsgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msg">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgmain">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgmain/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgmain-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgsub">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgsub/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgsub-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgrel">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgrel/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <span class="msgrel-title">
+ <xsl:apply-templates/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgtext">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msginfo">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msglevel">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msglevel">
+ <span class="msglevel-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </strong>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgorig">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgorig">
+ <span class="msgorig-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </strong>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgaud">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgaud">
+ <span class="msgaud-title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </span>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </strong>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="msgexplan">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgexplan/title">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <div class="msgexplan">
+ <span class="msgexplan-title">
+ <xsl:apply-templates/>
+ </span>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates/>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="revhistory">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <table border="0" width="100%" summary="Revision history">
+ <tr>
+ <th align="{$direction.align.start}" valign="top" colspan="3">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </strong>
+ </th>
+ </tr>
+ <xsl:apply-templates/>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="revhistory/revision">
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber"/>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}">
+ <xsl:apply-templates select="$revdate"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="count($revauthor)=0">
+ <td align="{$direction.align.start}">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">nbsp</xsl:with-param>
+ </xsl:call-template>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td align="{$direction.align.start}">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="{$direction.align.start}" colspan="3">
+ <xsl:apply-templates select="$revremark"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/date">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials[1]" priority="2">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revremark">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="ackno|acknowledgements[parent::article]">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="highlights">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl
new file mode 100644
index 0000000..beb162e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/callout.xsl
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="sverb xverb lxslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: callout.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xverb" functions="insertCallouts"/>
+
+<xsl:template match="programlistingco|screenco">
+ <xsl:variable name="verbatim" select="programlisting|screen"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $callouts.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:apply-templates select="$verbatim">
+ <xsl:with-param name="suppress-numbers" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="rtf-with-callouts">
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:insertCallouts')">
+ <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:insertCallouts')">
+ <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertCallouts function is available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$verbatim/@linenumbering = 'numbered' and $linenumbering.extension != '0'">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf-with-callouts"/>
+ <xsl:with-param name="pi.context" select="programlisting|screen"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$rtf-with-callouts"/>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="areaspec|areaset|area">
+</xsl:template>
+
+<xsl:template match="areaset" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="area" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="co" name="co">
+ <!-- Support a single linkend in HTML -->
+ <xsl:variable name="targets" select="key('id', @linkends)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="coref">
+ <!-- tricky; this relies on the fact that we can process the "co" that's -->
+ <!-- "over there" as if it were "right here" -->
+
+ <xsl:variable name="co" select="key('id', @linkend)"/>
+ <xsl:choose>
+ <xsl:when test="not($co)">
+ <xsl:message>
+ <xsl:text>Error: coref link is broken: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="local-name($co) != 'co'">
+ <xsl:message>
+ <xsl:text>Error: coref doesn't point to a co: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$co"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="co" mode="callout-bug">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:number count="co" level="any" from="programlisting|screen|literallayout|synopsis" format="1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="callout-bug">
+ <xsl:param name="conum" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.graphics != 0 and $conum &lt;= $callout.graphics.number.limit">
+ <img src="{$callout.graphics.path}{$conum}{$callout.graphics.extension}" alt="{$conum}" border="0"/>
+ </xsl:when>
+ <xsl:when test="$callout.unicode != 0 and $conum &lt;= $callout.unicode.number.limit">
+ <xsl:choose>
+ <xsl:when test="$callout.unicode.start.character = 10102">
+ <xsl:choose>
+ <xsl:when test="$conum = 1">&#10102;</xsl:when>
+ <xsl:when test="$conum = 2">&#10103;</xsl:when>
+ <xsl:when test="$conum = 3">&#10104;</xsl:when>
+ <xsl:when test="$conum = 4">&#10105;</xsl:when>
+ <xsl:when test="$conum = 5">&#10106;</xsl:when>
+ <xsl:when test="$conum = 6">&#10107;</xsl:when>
+ <xsl:when test="$conum = 7">&#10108;</xsl:when>
+ <xsl:when test="$conum = 8">&#10109;</xsl:when>
+ <xsl:when test="$conum = 9">&#10110;</xsl:when>
+ <xsl:when test="$conum = 10">&#10111;</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Don't know how to generate Unicode callouts </xsl:text>
+ <xsl:text>when $callout.unicode.start.character is </xsl:text>
+ <xsl:value-of select="$callout.unicode.start.character"/>
+ </xsl:message>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl
new file mode 100644
index 0000000..2e70e0e
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/changebars.xsl
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: changebars.xsl 8128 2008-09-29 17:16:10Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<xsl:import href="docbook.xsl"/>
+
+<xsl:param name="show.revisionflag" select="'1'"/>
+
+<xsl:template name="system.head.content">
+<xsl:param name="node" select="."/>
+
+<style type="text/css">
+<xsl:text>
+div.added { background-color: #ffff99;
+ text-decoration: underline; }
+div.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+div.changed { background-color: #99ff99; }
+div.off { }
+
+span.added { background-color: #ffff99;
+ text-decoration: underline; }
+span.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+span.changed { background-color: #99ff99; }
+span.off { }
+</xsl:text>
+</style>
+</xsl:template>
+
+<xsl:template match="*[@revisionflag]">
+ <xsl:call-template name="block.or.inline.revision"/>
+</xsl:template>
+
+<xsl:template name="block.or.inline.revision">
+ <xsl:param name="revisionflag" select="@revisionflag"/>
+
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'para' or local-name(.) = 'formalpara' or local-name(.) = 'simpara' or local-name(.) = 'simplesect' or local-name(.) = 'section' or local-name(.) = 'sect1' or local-name(.) = 'sect2' or local-name(.) = 'sect3' or local-name(.) = 'sect4' or local-name(.) = 'sect5' or local-name(.) = 'chapter' or local-name(.) = 'preface' or local-name(.) = 'itemizedlist' or local-name(.) = 'orderedlist' or local-name(.) = 'variablelist' or local-name(.) = 'varlistentry' or local-name(.) = 'informaltable' or local-name(.) = 'informalexample' or local-name(.) = 'note' or local-name(.) = 'example' or local-name(.) = 'mediaobject' or local-name(.) = 'sidebar' or local-name(.) = 'glossary' or local-name(.) = 'glossentry' or local-name(.) = 'bibliography' or local-name(.) = 'index' or local-name(.) = 'appendix'">
+ <div class="{$revisionflag}">
+ <xsl:apply-imports/>
+ </div>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'phrase' or local-name(.) = 'ulink' or local-name(.) = 'link' or local-name(.) = 'olink' or local-name(.) = 'inlinemediaobject' or local-name(.) = 'filename' or local-name(.) = 'literal' or local-name(.) = 'member' or local-name(.) = 'term' or local-name(.) = 'guilabel' or local-name(.) = 'glossterm' or local-name(.) = 'sgmltag' or local-name(.) = 'tag' or local-name(.) = 'quote' or local-name(.) = 'emphasis' or local-name(.) = 'command' or local-name(.) = 'xref'">
+ <span class="{$revisionflag}">
+ <xsl:apply-imports/>
+ </span>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'listitem' or local-name(.) = 'entry' or local-name(.) = 'title'">
+ <!-- nop; these are handled directly in the stylesheet -->
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Revisionflag on unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> (Assuming block)</xsl:text>
+ </xsl:message>
+ <div class="{$revisionflag}">
+ <xsl:apply-imports/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl
new file mode 100644
index 0000000..7c0e81a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-changebars.xsl
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl cf">
+
+<!-- ********************************************************************
+ $Id: chunk-changebars.xsl 8399 2009-04-08 07:37:42Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This file is a variant of chunk.xsl, to be used for generating chunked
+ output with highlighting based on change markup. -->
+
+<xsl:import href="changebars.xsl"/>
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- This customization of "process-chunk-element" is needed in order to make change
+ highlighting be inherited by chunked children of an element with change markup. -->
+<xsl:template name="process-chunk-element">
+ <xsl:param name="content">
+ <xsl:choose>
+
+ <xsl:when test="ancestor-or-self::*[@revisionflag] and $show.revisionflag != 0">
+ <xsl:variable name="revisionflag" select="ancestor-or-self::*[@revisionflag][1]/@revisionflag"/>
+ <xsl:call-template name="block.or.inline.revision">
+ <xsl:with-param name="revisionflag" select="$revisionflag"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-imports/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv" select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv" select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:include href="chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl
new file mode 100644
index 0000000..4682df5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-code.xsl
@@ -0,0 +1,645 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl cf ng db" version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 8596 2010-03-20 04:36:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)&gt;0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1 or self::sect2 or self::sect3 or self::sect4 or self::sect5 or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="generate.css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |sect1|sect2|sect3|sect4|sect5 |section |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon" mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index" mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl
new file mode 100644
index 0000000..4b41a16
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk-common.xsl
@@ -0,0 +1,1561 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl cf ng db">
+
+<!-- ********************************************************************
+ $Id: chunk-common.xsl 8551 2009-12-07 06:03:50Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="onechunk" select="0"/>
+<xsl:param name="refentry.separator" select="0"/>
+<xsl:param name="chunk.fast" select="0"/>
+
+<xsl:key name="genid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:variable name="chunk.hierarchy">
+ <xsl:if test="$chunk.fast != 0">
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:message>Computing chunks...</xsl:message>
+ <xsl:apply-templates select="/*" mode="find.chunks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Fast chunking requires exsl:node-set(). </xsl:text>
+ <xsl:text>Using "slow" chunking.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv" select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv" select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-chunk">
+ <xsl:param name="prev" select="."/>
+ <xsl:param name="next" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:message>
+ <xsl:text>Error </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> is not a chunk!</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-first-section-with-parent">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <!-- These xpath expressions are really hairy. The trick is to pick sections -->
+ <!-- that are not first children and are not the children of first children -->
+
+ <!-- Break these variables into pieces to work around
+ http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6063 -->
+
+ <xsl:variable name="prev-v1" select="(ancestor::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |ancestor::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |ancestor::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |ancestor::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |ancestor::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |ancestor::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev-v2" select="(preceding::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |preceding::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |preceding::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |preceding::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |preceding::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |preceding::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::section and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev" select="(preceding::book[1] |preceding::preface[1] |preceding::chapter[1] |preceding::appendix[1] |preceding::part[1] |preceding::reference[1] |preceding::refentry[1] |preceding::colophon[1] |preceding::article[1] |preceding::bibliography[parent::article or parent::book or parent::part][1] |preceding::glossary[parent::article or parent::book or parent::part][1] |preceding::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |preceding::setindex[$generate.index != 0][1] |ancestor::set |ancestor::book[1] |ancestor::preface[1] |ancestor::chapter[1] |ancestor::appendix[1] |ancestor::part[1] |ancestor::reference[1] |ancestor::article[1] |$prev-v1 |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1" select="(following::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |following::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |following::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |following::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |following::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |following::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::section and not(ancestor::section[not(preceding-sibling::section)])][1])[1]"/>
+
+ <xsl:variable name="next-v2" select="(descendant::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect1][1] |descendant::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect2 and parent::sect1[preceding-sibling::sect1]][1] |descendant::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect3 and parent::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |descendant::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect4 and parent::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |descendant::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::sect5 and parent::sect4[preceding-sibling::sect4] and ancestor::sect3[preceding-sibling::sect3] and ancestor::sect2[preceding-sibling::sect2] and ancestor::sect1[preceding-sibling::sect1]][1] |descendant::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) and preceding-sibling::section and not(ancestor::section[not(preceding-sibling::section)])])[1]"/>
+
+ <xsl:variable name="next" select="(following::book[1] |following::preface[1] |following::chapter[1] |following::appendix[1] |following::part[1] |following::reference[1] |following::refentry[1] |following::colophon[1] |following::bibliography[parent::article or parent::book or parent::part][1] |following::glossary[parent::article or parent::book or parent::part][1] |following::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |following::article[1] |following::setindex[$generate.index != 0][1] |descendant::book[1] |descendant::preface[1] |descendant::chapter[1] |descendant::appendix[1] |descendant::article[1] |descendant::bibliography[parent::article or parent::book or parent::part][1] |descendant::glossary[parent::article or parent::book or parent::part][1] |descendant::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |descendant::colophon[1] |descendant::setindex[$generate.index != 0][1] |descendant::part[1] |descendant::reference[1] |descendant::refentry[1] |$next-v1 |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-all-sections">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="prev-v1" select="(preceding::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |preceding::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/>
+
+ <xsl:variable name="prev-v2" select="(ancestor::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |ancestor::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/>
+
+ <xsl:variable name="prev" select="(preceding::book[1] |preceding::preface[1] |preceding::chapter[1] |preceding::appendix[1] |preceding::part[1] |preceding::reference[1] |preceding::refentry[1] |preceding::colophon[1] |preceding::article[1] |preceding::bibliography[parent::article or parent::book or parent::part][1] |preceding::glossary[parent::article or parent::book or parent::part][1] |preceding::index[$generate.index != 0] [parent::article or parent::book or parent::part][1] |preceding::setindex[$generate.index != 0][1] |ancestor::set |ancestor::book[1] |ancestor::preface[1] |ancestor::chapter[1] |ancestor::appendix[1] |ancestor::part[1] |ancestor::reference[1] |ancestor::article[1] |$prev-v1 |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1" select="(following::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |following::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/>
+
+ <xsl:variable name="next-v2" select="(descendant::sect1[$chunk.section.depth &gt; 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect2[$chunk.section.depth &gt; 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect3[$chunk.section.depth &gt; 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect4[$chunk.section.depth &gt; 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::sect5[$chunk.section.depth &gt; 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] |descendant::section[$chunk.section.depth &gt; count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/>
+
+ <xsl:variable name="next" select="(following::book[1] |following::preface[1] |following::chapter[1] |following::appendix[1] |following::part[1] |following::reference[1] |following::refentry[1] |following::colophon[1] |following::bibliography[parent::article or parent::book or parent::part][1] |following::glossary[parent::article or parent::book or parent::part][1] |following::index[$generate.index != 0] [parent::article or parent::book][1] |following::article[1] |following::setindex[$generate.index != 0][1] |descendant::book[1] |descendant::preface[1] |descendant::chapter[1] |descendant::appendix[1] |descendant::article[1] |descendant::bibliography[parent::article or parent::book][1] |descendant::glossary[parent::article or parent::book or parent::part][1] |descendant::index[$generate.index != 0] [parent::article or parent::book][1] |descendant::colophon[1] |descendant::setindex[$generate.index != 0][1] |descendant::part[1] |descendant::reference[1] |descendant::refentry[1] |$next-v1 |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:if test="$chunk.tocs.and.lots.has.title != 0">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ </xsl:if>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="in.other.chunk">
+ <xsl:param name="chunk" select="."/>
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>in.other.chunk: </xsl:text>
+ <xsl:value-of select="name($chunk)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$chunk = $node"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$is.chunk"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$chunk = $node">0</xsl:when>
+ <xsl:when test="$is.chunk = 1">1</xsl:when>
+ <xsl:when test="count($node) = 0">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$chunk"/>
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="count.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+ <xsl:param name="count" select="0"/>
+
+<!--
+ <xsl:message>
+ <xsl:text>count.footnotes.in.this.chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+
+<!--
+ <xsl:message>process.footnotes.in.this.chunk</xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$footnotes[1]" mode="process.footnote.mode"/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes" select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="fcount">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> fcount: </xsl:text>
+ <xsl:value-of select="$fcount"/>
+ </xsl:message>
+-->
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="$fcount &gt; 0">
+ <div class="footnotes">
+ <br/>
+ <hr width="100" align="{$direction.align.start}"/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn&#8217;t support the user-interface
+ techniques used to make them appear as &#8216;popups&#8217; on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation" mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+ <xsl:if test="$is.chunk = 1">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <!-- ==================================================================== -->
+ <!-- What's a chunk?
+
+ The root element
+ appendix
+ article
+ bibliography in article or part or book
+ book
+ chapter
+ colophon
+ glossary in article or part or book
+ index in article or part or book
+ part
+ preface
+ refentry
+ reference
+ sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth
+ section if position()>1 && depth < chunk.section.depth
+ set
+ setindex
+ -->
+ <!-- ==================================================================== -->
+
+<!--
+ <xsl:message>
+ <xsl:text>chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> csd: </xsl:text>
+ <xsl:value-of select="$chunk.section.depth"/>
+ <xsl:text> cfs: </xsl:text>
+ <xsl:value-of select="$chunk.first.sections"/>
+ <xsl:text> ps: </xsl:text>
+ <xsl:value-of select="count($node/parent::section)"/>
+ <xsl:text> prs: </xsl:text>
+ <xsl:value-of select="count($node/preceding-sibling::section)"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$node/parent::*/processing-instruction('dbhtml')[normalize-space(.) = 'stop-chunking']">0</xsl:when>
+ <xsl:when test="not($node/parent::*)">1</xsl:when>
+
+ <xsl:when test="local-name($node) = 'sect1' and $chunk.section.depth &gt;= 1 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect1) &gt; 0)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect2' and $chunk.section.depth &gt;= 2 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect2) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect3' and $chunk.section.depth &gt;= 3 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect3) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect4' and $chunk.section.depth &gt;= 4 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect4) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect5' and $chunk.section.depth &gt;= 5 and ($chunk.first.sections != 0 or count($node/preceding-sibling::sect5) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'section' and $chunk.section.depth &gt;= count($node/ancestor::section)+1 and ($chunk.first.sections != 0 or count($node/preceding-sibling::section) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="local-name($node)='preface'">1</xsl:when>
+ <xsl:when test="local-name($node)='chapter'">1</xsl:when>
+ <xsl:when test="local-name($node)='appendix'">1</xsl:when>
+ <xsl:when test="local-name($node)='article'">1</xsl:when>
+ <xsl:when test="local-name($node)='part'">1</xsl:when>
+ <xsl:when test="local-name($node)='reference'">1</xsl:when>
+ <xsl:when test="local-name($node)='refentry'">1</xsl:when>
+ <xsl:when test="local-name($node)='index' and ($generate.index != 0 or count($node/*) &gt; 0) and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <xsl:when test="local-name($node)='bibliography' and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <xsl:when test="local-name($node)='glossary' and (local-name($node/parent::*) = 'article' or local-name($node/parent::*) = 'book' or local-name($node/parent::*) = 'part' )">1</xsl:when>
+ <xsl:when test="local-name($node)='colophon'">1</xsl:when>
+ <xsl:when test="local-name($node)='book'">1</xsl:when>
+ <xsl:when test="local-name($node)='set'">1</xsl:when>
+ <xsl:when test="local-name($node)='setindex'">1</xsl:when>
+ <xsl:when test="local-name($node)='legalnotice' and $generate.legalnotice.link != 0">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:apply-templates mode="chunk-filename" select="$object"/>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:param name="toc-context" select="."/>
+ <!-- * If $toc-context contains some node other than the current node, -->
+ <!-- * it means we're processing a link in a TOC. In that case, to -->
+ <!-- * ensure the link will work correctly, we need to take a look at -->
+ <!-- * where the file containing the TOC will get written, and where -->
+ <!-- * the file that's being linked to will get written. -->
+ <xsl:variable name="toc-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the $toc-context node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the -->
+ <!-- * toc-context node that has a "dbhtml dir" PI, and get the -->
+ <!-- * directory name from that. That's the name of the directory -->
+ <!-- * to which the current toc output file will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$toc-context/ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="linked-file-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the current node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the current -->
+ <!-- * node that has a "dbhtml dir" PI, and get the directory name -->
+ <!-- * from that. That's the name of the directory to which the -->
+ <!-- * file that's being linked to will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="href.to.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href.from.uri">
+ <xsl:choose>
+ <xsl:when test="not($toc-context = .)">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$context"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- * <xsl:message>toc-context: <xsl:value-of select="local-name($toc-context)"/></xsl:message> -->
+ <!-- * <xsl:message>node: <xsl:value-of select="local-name(.)"/></xsl:message> -->
+ <!-- * <xsl:message>context: <xsl:value-of select="local-name($context)"/></xsl:message> -->
+ <!-- * <xsl:message>object: <xsl:value-of select="local-name($object)"/></xsl:message> -->
+ <!-- * <xsl:message>toc-output-dir: <xsl:value-of select="$toc-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>linked-file-output-dir: <xsl:value-of select="$linked-file-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>href.to.uri: <xsl:value-of select="$href.to.uri"/></xsl:message> -->
+ <!-- * <xsl:message>href.from.uri: <xsl:value-of select="$href.from.uri"/></xsl:message> -->
+ <xsl:variable name="href.to">
+ <xsl:choose>
+ <!-- * 2007-07-19, MikeSmith: Added the following conditional to -->
+ <!-- * deal with a problem case for links in TOCs. It checks to see -->
+ <!-- * if the output dir that a TOC will get written to is -->
+ <!-- * different from the output dir of the file being linked to. -->
+ <!-- * If it is different, we do not call trim.common.uri.paths. -->
+ <!-- * -->
+ <!-- * Reason why I added that conditional is: I ran into a bug for -->
+ <!-- * this case: -->
+ <!-- * -->
+ <!-- * 1. we are chunking into separate dirs -->
+ <!-- * -->
+ <!-- * 2. output for the TOC is written to current dir, but the file -->
+ <!-- * being linked to is written to some subdir "foo". -->
+ <!-- * -->
+ <!-- * For that case, links to that file in that TOC did not show -->
+ <!-- * the correct path - they omitted the "foo". -->
+ <!-- * -->
+ <!-- * The cause of that problem was that the trim.common.uri.paths -->
+ <!-- * template[1] was being called under all conditions. But it's -->
+ <!-- * apparent that we don't want to call trim.common.uri.paths in -->
+ <!-- * the case where a linked file is being written to a different -->
+ <!-- * directory than the TOC that contains the link, because doing -->
+ <!-- * so will cause a necessary (not redundant) directory-name -->
+ <!-- * part of the link to get inadvertently trimmed, resulting in -->
+ <!-- * a broken link to that file. Thus, added the conditional. -->
+ <!-- * -->
+ <!-- * [1] The purpose of the trim.common.uri.paths template is to -->
+ <!-- * prevent cases where, if we didn't call it, we end up with -->
+ <!-- * unnecessary, redundant directory names getting output; for -->
+ <!-- * example, "foo/foo/refname.html". -->
+ <xsl:when test="not($toc-output-dir = $linked-file-output-dir)">
+ <xsl:value-of select="$href.to.uri"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>
+ <xsl:text>In </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$href.from"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="$depth"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="name($object)"/>
+ <xsl:text> href=</xsl:text>
+ <xsl:value-of select="$href"/>
+ </xsl:message>
+ -->
+ <xsl:value-of select="$href"/>
+</xsl:template>
+
+<!-- Returns the complete olink href value if found -->
+<!-- Must take into account any dbhtml dir of the chunk containing the olink -->
+<xsl:template name="make.olink.href">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$olink.key != ''">
+ <xsl:variable name="target.href">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetptr-key', $olink.key)[1]/@href"/>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- an olink starting point may be in a subdirectory, so need
+ the "from" reference point to compute a relative path -->
+
+ <xsl:variable name="from.href">
+ <xsl:call-template name="olink.from.uri">
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="object" select="."/>
+ <xsl:with-param name="object.targetdoc" select="$current.docid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- If the from.href has directory path, then must "../" upward
+ to document level -->
+ <xsl:variable name="upward.from.path">
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="$from.href"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <!-- Does the target database use a sitemap? -->
+ <xsl:variable name="use.sitemap">
+ <xsl:choose>
+ <xsl:when test="$target.database//sitemap">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <!-- Get the baseuri for this targetptr -->
+ <xsl:variable name="baseuri">
+ <xsl:choose>
+ <!-- Does the database use a sitemap? -->
+ <xsl:when test="$use.sitemap != 0">
+ <xsl:choose>
+ <!-- Was current.docid parameter set? -->
+ <xsl:when test="$current.docid != ''">
+ <!-- Was it found in the database? -->
+ <xsl:variable name="currentdoc.key">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetdoc-key', $current.docid)/@targetdoc"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$currentdoc.key != ''">
+ <xsl:for-each select="$target.database">
+ <xsl:call-template name="targetpath">
+ <xsl:with-param name="dirnode" select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path because $current.docid '</xsl:text>
+ <xsl:value-of select="$current.docid"/>
+ <xsl:text>' not found in target database.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink warning: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path without $current.docid parameter</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- In either case, add baseuri from its document entry-->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''">
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- No database sitemap in use -->
+ <xsl:otherwise>
+ <!-- Just use any baseuri from its document entry -->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database">
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''">
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Form the href information -->
+ <xsl:if test="not(contains($baseuri, ':'))">
+ <!-- if not an absolute uri, add upward path from olink chunk -->
+ <xsl:value-of select="$upward.from.path"/>
+ </xsl:if>
+
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and translate(substring($baseuri, string-length($baseuri) - 3), 'PDF', 'pdf') = '.pdf' and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- Computes "../" to reach top -->
+<xsl:template name="upward.path">
+ <xsl:param name="path" select="''"/>
+ <xsl:choose>
+ <!-- Don't bother with absolute uris -->
+ <xsl:when test="contains($path, ':')"/>
+ <xsl:when test="starts-with($path, '/')"/>
+ <xsl:when test="contains($path, '/')">
+ <xsl:text>../</xsl:text>
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="substring-after($path, '/')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="html.head">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:variable name="this" select="."/>
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+
+ <xsl:if test="$home">
+ <link rel="home">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$home" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$up">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$up" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prev">
+ <link rel="prev">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$prev" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$next">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$next" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$html.extra.head.links != 0">
+ <xsl:for-each select="//part |//reference |//preface |//chapter |//article |//refentry |//appendix[not(parent::article)]|appendix |//glossary[not(parent::article)]|glossary |//index[not(parent::article)]|index">
+ <link rel="{local-name(.)}">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="section|sect1|refsection|refsect1">
+ <link>
+ <xsl:attribute name="rel">
+ <xsl:choose>
+ <xsl:when test="local-name($this) = 'section' or local-name($this) = 'refsection'">
+ <xsl:value-of select="'subsection'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'section'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="sect2|sect3|sect4|sect5|refsect2|refsect3">
+ <link rel="subsection">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- * if we have a legalnotice and user wants it output as a -->
+ <!-- * separate page and $html.head.legalnotice.link.types is -->
+ <!-- * non-empty, we generate a link or links for each value in -->
+ <!-- * $html.head.legalnotice.link.types -->
+ <xsl:if test="//legalnotice and not($generate.legalnotice.link = 0) and not($html.head.legalnotice.link.types = '')">
+ <xsl:call-template name="make.legalnotice.head.links"/>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="header.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="$navig.showtitles != 0"/>
+ <xsl:variable name="row2" select="count($prev) &gt; 0 or (count($up) &gt; 0 and generate-id($up) != generate-id($home) and $navig.showtitles != 0) or count($next) &gt; 0"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'">
+ <div class="navheader">
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation header">
+ <xsl:if test="$row1">
+ <tr>
+ <th colspan="3" align="center">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </th>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td width="20%" align="{$direction.align.start}">
+ <xsl:if test="count($prev)&gt;0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <th width="60%" align="center">
+ <xsl:choose>
+ <xsl:when test="count($up) &gt; 0 and generate-id($up) != generate-id($home) and $navig.showtitles != 0">
+ <xsl:apply-templates select="$up" mode="object.title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </th>
+ <td width="20%" align="{$direction.align.end}">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)&gt;0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ <xsl:if test="$header.rule != 0">
+ <hr/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="footer.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="count($prev) &gt; 0 or count($up) &gt; 0 or count($next) &gt; 0"/>
+
+ <xsl:variable name="row2" select="($prev and $navig.showtitles != 0) or (generate-id($home) != generate-id(.) or $nav.context = 'toc') or ($chunk.tocs.and.lots != 0 and $nav.context != 'toc') or ($next and $navig.showtitles != 0)"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.footer.navigation = '0'">
+ <div class="navfooter">
+ <xsl:if test="$footer.rule != 0">
+ <hr/>
+ </xsl:if>
+
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation footer">
+ <xsl:if test="$row1">
+ <tr>
+ <td width="40%" align="{$direction.align.start}">
+ <xsl:if test="count($prev)&gt;0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="20%" align="center">
+ <xsl:choose>
+ <xsl:when test="count($up)&gt;0 and generate-id($up) != generate-id($home)">
+ <a accesskey="u">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'up'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td width="40%" align="{$direction.align.end}">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)&gt;0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td width="40%" align="{$direction.align.start}" valign="top">
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$prev" mode="object.title.markup"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="20%" align="center">
+ <xsl:choose>
+ <xsl:when test="$home != . or $nav.context = 'toc'">
+ <a accesskey="h">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'home'"/>
+ </xsl:call-template>
+ </a>
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <xsl:text>&#160;|&#160;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <a accesskey="t">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="/*[1]" mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:attribute>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-toc'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ <td width="40%" align="{$direction.align.end}" valign="top">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$next" mode="object.title.markup"/>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="navig.content">
+ <xsl:param name="direction" select="next"/>
+ <xsl:variable name="navtext">
+ <xsl:choose>
+ <xsl:when test="$direction = 'prev'">
+ <xsl:call-template name="gentext.nav.prev"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'next'">
+ <xsl:call-template name="gentext.nav.next"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'up'">
+ <xsl:call-template name="gentext.nav.up"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'home'">
+ <xsl:call-template name="gentext.nav.home"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>xxx</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$navig.graphics != 0">
+ <img>
+ <xsl:attribute name="src">
+ <xsl:value-of select="$navig.graphics.path"/>
+ <xsl:value-of select="$direction"/>
+ <xsl:value-of select="$navig.graphics.extension"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$navtext"/>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$navtext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * The following template assumes that the first legalnotice -->
+<!-- * instance found in a document applies to the contents of the -->
+<!-- * entire document. It generates an HTML link in each chunk, back -->
+<!-- * to the file containing the contents of the first legalnotice. -->
+<!-- * -->
+<!-- * Actually, it may generate multiple link instances in each chunk, -->
+<!-- * because it walks through the space-separated list of link -->
+<!-- * types specified in the $html.head.legalnotice.link.types param, -->
+<!-- * popping off link types and generating links for them until it -->
+<!-- * depletes the list. -->
+
+<xsl:template name="make.legalnotice.head.links">
+ <!-- * the following ID is used as part of the legalnotice filename; -->
+ <!-- * we need it in order to construct the filename for use in the -->
+ <!-- * value of the href attribute on the link -->
+
+ <xsl:param name="ln-node" select="(//legalnotice)[1]"/>
+
+ <xsl:param name="linktype">
+ <xsl:choose>
+ <xsl:when test="contains($html.head.legalnotice.link.types, ' ')">
+ <xsl:value-of select="normalize-space( substring-before($html.head.legalnotice.link.types, ' '))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.head.legalnotice.link.types"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="remaining.linktypes" select="concat( normalize-space( substring-after($html.head.legalnotice.link.types, ' ')),' ')"/>
+ <xsl:if test="not($linktype = '')">
+
+ <!-- Compute name of legalnotice file (see titlepage.xsl) -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="node" select="$ln-node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <link rel="{$linktype}">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$file"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="(//legalnotice)[1]" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ <xsl:call-template name="make.legalnotice.head.links">
+ <!-- * pop the next value off the list of link types -->
+ <xsl:with-param name="linktype" select="substring-before($remaining.linktypes, ' ')"/>
+ <!-- * remove the link type from the list of remaining link types -->
+ <xsl:with-param name="remaining.linktypes" select="substring-after($remaining.linktypes, ' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="chunk-element-content">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:call-template name="user.preroot"/>
+
+ <html>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.navigation"/>
+
+ <xsl:call-template name="header.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.header.content"/>
+
+ <xsl:copy-of select="$content"/>
+
+ <xsl:call-template name="user.footer.content"/>
+
+ <xsl:call-template name="footer.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.footer.navigation"/>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.manifest">
+ <xsl:param name="node" select="/"/>
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$manifest"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$node" mode="enumerate-files"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl
new file mode 100644
index 0000000..6b74923
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunk.xsl
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl
new file mode 100644
index 0000000..8ce2d2a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunker.xsl
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="http://xml.apache.org/xalan/redirect" xmlns:exsl="http://exslt.org/common" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="saxon lxslt redirect exsl doc" extension-element-prefixes="saxon redirect lxslt exsl">
+
+<!-- ********************************************************************
+ $Id: chunker.xsl 8526 2009-10-14 18:59:40Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with XSLT implementations that support -->
+<!-- exsl:document, saxon:output, or Xalan's redirect:write -->
+<!-- Note: Only Saxon 6.4.2 or later is supported. -->
+
+<xsl:param name="chunker.output.method" select="'xml'"/>
+<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
+<xsl:param name="chunker.output.indent" select="'no'"/>
+<xsl:param name="chunker.output.omit-xml-declaration" select="'no'"/>
+<xsl:param name="chunker.output.standalone" select="'no'"/>
+<xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD XHTML 1.0 Transitional//EN'"/>
+<xsl:param name="chunker.output.doctype-system" select="'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'"/>
+<xsl:param name="chunker.output.media-type" select="''"/>
+<xsl:param name="chunker.output.cdata-section-elements" select="''"/>
+<xsl:param name="chunker.output.quiet" select="0"/>
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:choose>
+ <!-- put Saxon first to work around a bug in libxslt -->
+ <xsl:when test="element-available('saxon:output')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="element-available('exsl:document')">
+ <!-- EXSL document does make the chunks relative, I think -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*) = 0">
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to chunk with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration" select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements" select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:if test="$quiet = 0">
+ <xsl:message>
+ <xsl:if test="not($message-prolog = '')">
+ <xsl:value-of select="$message-prolog"/>
+ </xsl:if>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != '' and $suppress-context-node-name = 0">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="not($message-epilog = '')">
+ <xsl:value-of select="$message-epilog"/>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="element-available('exsl:document')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('saxon:output')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" media-type="{$media-type}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-public="{$doctype-public}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" doctype-system="{$doctype-system}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" omit-xml-declaration="{$omit-xml-declaration}" cdata-section-elements="{$cdata-section-elements}" standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration" select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements" select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="$indent"/>
+ <xsl:with-param name="omit-xml-declaration" select="$omit-xml-declaration"/>
+ <xsl:with-param name="standalone" select="$standalone"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements" select="$cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="write.text.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+ <xsl:param name="method" select="'text'"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="suppress-context-node-name" select="$suppress-context-node-name"/>
+ <xsl:with-param name="message-prolog" select="$message-prolog"/>
+ <xsl:with-param name="message-epilog" select="$message-epilog"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="standalone" select="'no'"/>
+ <xsl:with-param name="doctype-public"/>
+ <xsl:with-param name="doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl
new file mode 100644
index 0000000..ba7c287
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunkfast.xsl
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="cf exsl">
+
+<!-- ********************************************************************
+ $Id: chunkfast.xsl 8345 2009-03-16 06:44:07Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+<xsl:param name="chunk.fast" select="1"/>
+
+<xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0">
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv" select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv" select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl
new file mode 100644
index 0000000..400fd6a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/chunktoc.xsl
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc exsl ng db">
+
+<!-- ********************************************************************
+ $Id: chunktoc.xsl 8545 2009-12-02 07:22:10Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk-common.xsl"/>
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:choose>
+ <xsl:when test="$chunks//tocentry[@linkend=$id]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$chunk"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="chunk-filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="prev-id" select="($chunk/preceding::tocentry |$chunk/ancestor::tocentry)[last()]/@linkend"/>
+ <xsl:variable name="next-id" select="($chunk/following::tocentry |$chunk/child::tocentry)[1]/@linkend"/>
+
+ <xsl:variable name="prev" select="key('id',$prev-id)"/>
+ <xsl:variable name="next" select="key('id',$next-id)"/>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="appendix">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="preface|chapter">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="part|reference">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="colophon">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk != 0">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-imports/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$chunk.toc = ''">
+ <xsl:message terminate="yes">
+ <xsl:text>The chunk.toc file is not set.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl
new file mode 100644
index 0000000..b18d533
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/component.xsl
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: component.xsl 8568 2010-01-11 03:16:56Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="component.title">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Let's handle the case where a component (bibliography, for example)
+ occurs inside a section; will we need parameters for this? -->
+
+ <xsl:element name="h{$level+1}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="component.subtitle">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="subtitle" select="($node/docinfo/subtitle |$node/info/subtitle |$node/prefaceinfo/subtitle |$node/chapterinfo/subtitle |$node/appendixinfo/subtitle |$node/articleinfo/subtitle |$node/artheader/subtitle |$node/subtitle)[1]"/>
+
+ <xsl:if test="$subtitle">
+ <h3 class="subtitle">
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates select="$node" mode="object.subtitle.markup"/>
+ </em>
+ </h3>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="component.separator">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="dedication.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="dedication/title|dedication/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication/subtitle|dedication/info/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication"/> <!-- see mode="dedication" -->
+<xsl:template match="dedication/title"/>
+<xsl:template match="dedication/subtitle"/>
+<xsl:template match="dedication/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="acknowledgements" mode="acknowledgements">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="acknowledgements.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="acknowledgements/title|acknowledgements/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acknowledgements/subtitle|acknowledgements/info/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acknowledgements"/> <!-- see mode="acknowledgements" -->
+<xsl:template match="acknowledgements/title"/>
+<xsl:template match="acknowledgements/subtitle"/>
+<xsl:template match="acknowledgements/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colophon">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="component.title"/>
+ <xsl:call-template name="component.subtitle"/>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="colophon/title"/>
+<xsl:template match="colophon/subtitle"/>
+<xsl:template match="colophon/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="preface">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="preface.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="preface/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/subtitle |preface/prefaceinfo/subtitle |preface/info/subtitle |preface/docinfo/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/docinfo|prefaceinfo"/>
+<xsl:template match="preface/info"/>
+<xsl:template match="preface/title"/>
+<xsl:template match="preface/titleabbrev"/>
+<xsl:template match="preface/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="chapter">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="chapter.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="chapter/title|chapter/chapterinfo/title|chapter/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/subtitle |chapter/chapterinfo/subtitle |chapter/info/subtitle |chapter/docinfo/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/docinfo|chapterinfo"/>
+<xsl:template match="chapter/info"/>
+<xsl:template match="chapter/title"/>
+<xsl:template match="chapter/titleabbrev"/>
+<xsl:template match="chapter/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="appendix">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="parent::article and $ischunk = 0">
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="1"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="appendix.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article) or $ischunk != 0">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="appendix/title|appendix/appendixinfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/subtitle |appendix/appendixinfo/subtitle |appendix/info/subtitle |appendix/docinfo/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/docinfo|appendixinfo"/>
+<xsl:template match="appendix/info"/>
+<xsl:template match="appendix/title"/>
+<xsl:template match="appendix/titleabbrev"/>
+<xsl:template match="appendix/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="article">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="article.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="article/title|article/articleinfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/subtitle |article/articleinfo/subtitle |article/info/subtitle |article/artheader/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/artheader|article/articleinfo"/>
+<xsl:template match="article/info"/>
+<xsl:template match="article/title"/>
+<xsl:template match="article/titleabbrev"/>
+<xsl:template match="article/subtitle"/>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl
new file mode 100644
index 0000000..48c17cf
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/division.xsl
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: division.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="set.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="set/setinfo"/>
+<xsl:template match="set/title"/>
+<xsl:template match="set/titleabbrev"/>
+<xsl:template match="set/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="book.titlepage"/>
+
+ <xsl:apply-templates select="dedication" mode="dedication"/>
+ <xsl:apply-templates select="acknowledgements" mode="acknowledgements"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="book/bookinfo"/>
+<xsl:template match="book/info"/>
+<xsl:template match="book/title"/>
+<xsl:template match="book/titleabbrev"/>
+<xsl:template match="book/subtitle"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="part">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="part.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="part" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="reference" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="part/docinfo"/>
+<xsl:template match="part/partinfo"/>
+<xsl:template match="part/info"/>
+<xsl:template match="part/title"/>
+<xsl:template match="part/titleabbrev"/>
+<xsl:template match="part/subtitle"/>
+
+<xsl:template match="partintro">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="partintro.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <!-- not ancestor::part because partintro appears in reference -->
+ <xsl:apply-templates select="parent::*" mode="make.part.toc"/>
+ </xsl:if>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="partintro/title"/>
+<xsl:template match="partintro/titleabbrev"/>
+<xsl:template match="partintro/subtitle"/>
+
+<xsl:template match="partintro/title" mode="partintro.title.mode">
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="partintro/subtitle" mode="partintro.title.mode">
+ <h3>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></em>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book" mode="division.number">
+ <xsl:number from="set" count="book" format="1."/>
+</xsl:template>
+
+<xsl:template match="part" mode="division.number">
+ <xsl:number from="book" count="part" format="I."/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="division.title">
+ <xsl:param name="node" select="."/>
+
+ <h1>
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </h1>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml
new file mode 100644
index 0000000..d93a25c
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.css.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<style>
+
+/********************************/
+/* start of styles in block.xsl */
+
+.formalpara-title {
+ font-weight: bold;
+}
+
+div.blockquote-title {
+ font-weight: bold;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msgmain-title {
+ font-weight: bold;
+}
+
+span.msgsub-title {
+ font-weight: bold;
+}
+
+span.msgrel-title {
+ font-weight: bold;
+}
+
+div.msglevel, div.msgorig, div.msgaud {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msglevel-title, span.msgorig-title, span.msgaud-title {
+ font-weight: bold;
+}
+
+div.msgexplan {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+span.msgexplan-title {
+ font-weight: bold;
+}
+
+/* end of styles in block.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in autotoc.xsl */
+
+ font-weight: bold;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+
+/* end of styles in autotoc.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in formal.xsl */
+
+div.figure-title {
+ font-weight: bold;
+}
+
+div.example-title {
+ font-weight: bold;
+}
+
+div.equation-title {
+ font-weight: bold;
+}
+
+div.table-title {
+ font-weight: bold;
+}
+
+div.sidebar-title {
+ font-weight: bold;
+}
+
+
+/* end of styles in formal.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in verbatim.xsl */
+
+div.programlisting {
+ white-space: pre;
+ font-family: monospace;
+}
+
+div.screen {
+ white-space: pre;
+ font-family: monospace;
+}
+
+div.synopsis {
+ white-space: pre;
+ font-family: monospace;
+}
+
+/* end of styles in verbatim.xsl */
+/********************************/
+</style>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl
new file mode 100644
index 0000000..c9aa381
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/docbook.xsl
@@ -0,0 +1,446 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="db ng exsl exslt" version="1.0">
+
+<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8783 2010-07-28 10:59:39Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'xhtml'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes"><xslo:if xmlns:xslo="http://www.w3.org/1999/XSL/Transform" test="starts-with($writing.mode, 'rl')"><xslo:attribute name="dir">rtl</xslo:attribute></xslo:if>
+<!-- no apply-templates; make it empty except for dir for rtl-->
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <!-- Insert links to CSS files or insert literal style elements -->
+ <xsl:call-template name="generate.css"/>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made" href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$css.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0 and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>
+// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>
+var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();
+</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>Saving stripped document.</xsl:message>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="'/tmp/stripped.xml'"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="exsl:node-set($nons)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+
+ <!-- Generate any css files only once, not once per chunk -->
+ <xsl:call-template name="generate.css.files"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl
new file mode 100644
index 0000000..d228cfb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
+
+<!-- ********************************************************************
+ $Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="">
+<referenceinfo xmlns="http://www.w3.org/1999/xhtml">
+<releaseinfo role="meta">
+$Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $
+</releaseinfo>
+<author><surname>Walsh</surname>
+<firstname>Norman</firstname></author>
+<copyright><year>1999</year><year>2000</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</referenceinfo>
+<title xmlns="http://www.w3.org/1999/xhtml">HTML EBNF Reference</title>
+
+<partintro xmlns="http://www.w3.org/1999/xhtml">
+<section><title>Introduction</title>
+
+<para>This is technical reference documentation for the DocBook XSL
+Stylesheets; it documents (some of) the parameters, templates, and
+other elements of the stylesheets.</para>
+
+<para>This reference describes the templates and parameters relevant
+to formatting EBNF markup.</para>
+
+<para>This is not intended to be <quote>user</quote> documentation.
+It is provided for developers writing customization layers for the
+stylesheets, and for anyone who's interested in <quote>how it
+works</quote>.</para>
+
+<para>Although I am trying to be thorough, this documentation is known
+to be incomplete. Don't forget to read the source, too :-)</para>
+</section>
+</partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productionset">
+ <table width="100%" cellpadding="5">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$ebnf.table.border != 0">
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">
+ <xsl:text>EBNF</xsl:text>
+ <xsl:if test="title">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="title"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:if test="title">
+ <tr>
+ <th align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="title"/>
+ </th>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td>
+ <table border="0" width="99%" cellpadding="0">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">EBNF productions</xsl:attribute>
+ <xsl:apply-templates select="production|productionrecap"/>
+ </table>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<xsl:template match="productionset/title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="production">
+ <xsl:param name="recap" select="false()"/>
+ <tr>
+ <td align="{$direction.align.start}" valign="top" width="3%">
+ <xsl:text>[</xsl:text>
+ <xsl:number count="production" level="any"/>
+ <xsl:text>]</xsl:text>
+ </td>
+ <td align="{$direction.align.end}" valign="top" width="10%">
+ <xsl:choose>
+ <xsl:when test="$recap">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="lhs"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="lhs"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td valign="top" width="5%" align="center">
+ <xsl:copy-of select="$ebnf.assignment"/>
+ </td>
+ <td valign="top" width="52%">
+ <xsl:apply-templates select="rhs"/>
+ <xsl:copy-of select="$ebnf.statement.terminator"/>
+ </td>
+ <td align="{$direction.align.start}" valign="top" width="30%">
+ <xsl:choose>
+ <xsl:when test="rhs/lineannotation|constraint">
+ <xsl:apply-templates select="rhs/lineannotation" mode="rhslo"/>
+ <xsl:apply-templates select="constraint"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="productionrecap">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no ID for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="count($targets)&gt;1">
+ <xsl:message>
+ <xsl:text>Warning: multiple "IDs" for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target">
+ <xsl:with-param name="recap" select="true()"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="lhs">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="rhs">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::rhs">
+ <xsl:text> |</xsl:text>
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="nonterminal">
+ <xsl:variable name="linkend">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="@def"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="element-list">production</xsl:with-param>
+ </xsl:call-template>
+
+ <!-- If you don't provide content, you can't point outside this doc. -->
+ <xsl:choose>
+ <xsl:when test="*|text()"><!--nop--></xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$linkend = ''">
+ <xsl:message>
+ <xsl:text>Non-terminals with no content must point to </xsl:text>
+ <xsl:text>production elements in the current document.</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>Invalid xpointer for empty nt: </xsl:text>
+ <xsl:value-of select="@def"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@def"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a href="{$href}">
+ <xsl:choose>
+ <xsl:when test="*|text()">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target/lhs"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation" mode="rhslo">
+ <xsl:text>/*&#160;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#160;*/</xsl:text>
+ <br/>
+</xsl:template>
+
+<xsl:template match="constraint">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ <xsl:with-param name="element-list">constraintdef</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:variable name="href">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:text>[&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:if test="$target/@role">
+ <xsl:value-of select="$target/@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <a href="{$href}">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target" mode="title.markup"/>
+ </a>
+ <xsl:text>&#160;]</xsl:text>
+ <xsl:if test="following-sibling::constraint">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="constraintdef">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="constraintdef/title">
+ <p><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong></p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl
new file mode 100644
index 0000000..6d81fa9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl" version="1.0">
+
+<!-- ********************************************************************
+ $Id: footnote.xsl 8812 2010-08-09 20:51:51Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="footnote">
+ <xsl:variable name="name">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="footnoteref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="footnote" select="$targets[1]"/>
+
+ <xsl:if test="not(local-name($footnote) = 'footnote')">
+ <xsl:message terminate="yes">
+ERROR: A footnoteref element has a linkend that points to an element that is not a footnote.
+Typically this happens when an id attribute is accidentally applied to the child of a footnote element.
+target element: <xsl:value-of select="local-name($footnote)"/>
+linkend/id: <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="target.href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:value-of select="substring-before($target.href, '#')"/>
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:value-of select="substring-after($target.href, '#')"/>
+ </xsl:variable>
+
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="$footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+</xsl:template>
+
+<xsl:template match="footnote" mode="footnote.number">
+ <xsl:choose>
+ <xsl:when test="string-length(@label) != 0">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="ancestor::table or ancestor::informaltable">
+ <xsl:variable name="tfnum">
+ <xsl:number level="any" from="table|informaltable" format="1"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($table.footnote.number.symbols) &gt;= $tfnum">
+ <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="table | informaltable" format="{$table.footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="pfoot" select="preceding::footnote[not(@label)]"/>
+ <xsl:variable name="ptfoot" select="preceding::table//footnote | preceding::informaltable//footnote"/>
+ <xsl:variable name="fnum" select="count($pfoot) - count($ptfoot) + 1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($footnote.number.symbols) &gt;= $fnum">
+ <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$fnum" format="{$footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="footnote/para[1]|footnote/simpara[1]" priority="2">
+ <!-- this only works if the first thing in a footnote is a para, -->
+ <!-- which is ok, because it usually is. -->
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="footnote.body.number">
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="footnote.mark">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a id="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ </xsl:variable>
+
+ <xsl:variable name="html">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:variable name="html-nodes" select="exsl:node-set($html)"/>
+ <xsl:choose>
+ <xsl:when test="$html-nodes//p">
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.p">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.text">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$html"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+<xsl:template name="count-element-from">
+ <xsl:param name="from" select=".."/>
+ <xsl:param name="to" select="."/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="list" select="$from/following::*[local-name(.)=local-name($to)]
+ |$from/descendant-or-self::*[local-name(.)=local-name($to)]"/>
+
+ <xsl:choose>
+ <xsl:when test="not($list)">
+ <xsl:text>-1</xsl:text>
+ </xsl:when>
+ <xsl:when test="$list[1] = $to">
+ <xsl:value-of select="$count + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+-->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="table.footnotes" select=".//table//footnote | .//informaltable//footnote"/>
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="count($footnotes)&gt;count($table.footnotes)">
+ <div class="footnotes">
+ <br/>
+ <hr width="100" align="{$direction.align.start}"/>
+ <xsl:apply-templates select="$footnotes" mode="process.footnote.mode"/>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn&#8217;t support the user-interface
+ techniques used to make them appear as &#8216;popups&#8217; on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation" mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="footnote" name="process.footnote" mode="process.footnote.mode">
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'para' or local-name(*[1]) = 'simpara'">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+
+ <xsl:when test="$html.cleanup != 0 and $exsl.node.set.available != 0">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates select="*[1]" mode="footnote.body.number"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: footnote number may not be generated </xsl:text>
+ <xsl:text>correctly; </xsl:text>
+ <xsl:value-of select="local-name(*[1])"/>
+ <xsl:text> unexpected as first child of footnote.</xsl:text>
+ </xsl:message>
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="table//footnote | informaltable//footnote" mode="process.footnote.mode">
+</xsl:template>
+
+<xsl:template match="footnote" mode="table.footnote.mode">
+ <xsl:call-template name="process.footnote"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl
new file mode 100644
index 0000000..57c98f3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: formal.xsl 8806 2010-08-09 18:25:58Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="formal.object.break.after">1</xsl:param>
+
+<xsl:template name="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class">
+ <xsl:apply-templates select="." mode="class.value"/>
+ </xsl:param>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ <div class="{$class}-contents">
+ <xsl:apply-templates/>
+ </div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <div class="{$class}-contents"><xsl:apply-templates/></div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ <xsl:if test="not($formal.object.break.after = '0')">
+ <br class="{$class}-break"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$object" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:param>
+
+
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">
+ <xsl:variable name="html.class" select="concat(local-name($object),'-title')"/>
+ <div class="{$html.class}">
+ <xsl:copy-of select="$title"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <p class="title">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$title"/>
+ </strong>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="informal.object">
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'informaltable'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </div>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="semiformal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:choose>
+ <xsl:when test="title or info/title">
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="table">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="calsTable"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- do not use xsl:copy because of XHTML's needs -->
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calsTable">
+ <xsl:if test="tgroup/tbody/tr |tgroup/thead/tr |tgroup/tfoot/tr">
+ <xsl:message terminate="yes">Broken table: tr descendent of CALS Table.</xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <!-- hack, this will only ever occur on table, not example -->
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="htmlTable">
+ <xsl:if test="tgroup/tbody/row |tgroup/thead/row |tgroup/tfoot/row">
+ <xsl:message terminate="yes">Broken table: row descendent of HTML table.</xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates mode="htmlTable"/>
+
+ <xsl:if test=".//footnote|../title//footnote">
+ <tbody class="footnotes">
+ <tr>
+ <td colspan="50">
+ <xsl:apply-templates select=".//footnote|../title//footnote" mode="table.footnote.mode"/>
+ </td>
+ </tr>
+ </tbody>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="example">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="equation">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="figure/title"/>
+<xsl:template match="figure/titleabbrev"/>
+<xsl:template match="table/title"/>
+<xsl:template match="table/titleabbrev"/>
+<xsl:template match="table/textobject"/>
+<xsl:template match="example/title"/>
+<xsl:template match="example/titleabbrev"/>
+<xsl:template match="equation/title"/>
+<xsl:template match="equation/titleabbrev"/>
+
+<xsl:template match="informalfigure">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informalexample">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informaltable">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="informaltable/textobject"/>
+
+<xsl:template name="table.longdesc">
+ <!-- HACK: This doesn't belong inside formal.objectt; it should be done by -->
+ <!-- the table template, but I want the link to be inside the DIV, so... -->
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="irrelevant">
+ <!-- write.longdesc returns the filename ... -->
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0 and textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="informalequation">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template name="floatstyle">
+ <xsl:if test="(@float and @float != '0') or @floatstyle != ''">
+ <xsl:choose>
+ <xsl:when test="@floatstyle != ''">
+ <xsl:value-of select="@floatstyle"/>
+ </xsl:when>
+ <xsl:when test="@float = '1'">
+ <xsl:value-of select="$default.float.class"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@float"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="floater">
+ <xsl:param name="content"/>
+ <xsl:param name="class" select="'float'"/>
+ <xsl:param name="floatstyle" select="'left'"/>
+
+ <div class="{$class}">
+ <xsl:if test="$floatstyle = 'left' or $floatstyle = 'right'">
+ <xsl:attribute name="style">
+ <xsl:text>float: </xsl:text>
+ <xsl:value-of select="$floatstyle"/>
+ <xsl:text>;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl
new file mode 100644
index 0000000..d22b6c5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl
@@ -0,0 +1,564 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink" version="1.0">
+
+<!-- ********************************************************************
+ $Id: glossary.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossary">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="(glossdiv[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="glossdiv"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty glossary -->
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossary/glossaryinfo"/>
+<xsl:template match="glossary/info"/>
+<xsl:template match="glossary/title"/>
+<xsl:template match="glossary/subtitle"/>
+<xsl:template match="glossary/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glosslist">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossdiv">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}" select="translate(glossterm, $lowercase, $uppercase)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+
+<xsl:template match="glossentry">
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dt>
+ </xsl:when>
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+
+ <xsl:if test="acronym|abbrev">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+ </dt>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="indexterm|revhistory|glosssee|glossdef"/>
+</xsl:template>
+
+<xsl:template match="glossentry/glossterm">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/acronym">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/abbrev">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/revhistory">
+</xsl:template>
+
+<xsl:template match="glossentry/glosssee">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <dd>
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </p>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef">
+ <dd>
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="glossseealso"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </p>
+ </xsl:if>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossseealso">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="xlink" select="@xlink:href"/>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$xlink">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="position() = last()"/>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso-separator'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Glossary collection -->
+
+<xsl:template match="glossary[@role='auto']" priority="2">
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+ <xsl:variable name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/>
+ <xsl:variable name="collection" select="document($glossary.collection, .)"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not($collection) and $glossary.collection != ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
+ <xsl:text>open glossary.collection file '</xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv and $collection//glossdiv">
+ <xsl:for-each select="$collection//glossdiv">
+ <!-- first see if there are any in this div -->
+ <xsl:variable name="exist.test">
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:value-of select="glossterm"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="$exist.test != ''">
+ <xsl:apply-templates select="." mode="auto-glossary">
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="auto-glossary">
+ <!-- pop back out to the default mode for most elements -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="auto-glossary">
+ <xsl:param name="terms" select="."/>
+
+
+<xsl:variable name="language">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="glossentry">
+ <xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))"/>!
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl
new file mode 100644
index 0000000..d1c04fb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl
@@ -0,0 +1,1436 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory" xmlns:simg="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.ImageIntrinsics" xmlns:ximg="xalan://com.nwalsh.xalan.ImageIntrinsics" xmlns:xtext="xalan://com.nwalsh.xalan.Text" xmlns:lxslt="http://xml.apache.org/xslt" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink stext xtext lxslt simg ximg" extension-element-prefixes="stext xtext" version="1.0">
+
+<!-- ********************************************************************
+ $Id: graphics.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ Contributors:
+ Colin Paul Adams, <colin@colina.demon.co.uk>
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtext" elements="insertfile"/>
+<lxslt:component prefix="ximg" functions="new getWidth getDepth"/>
+
+<!-- ==================================================================== -->
+<!-- Graphic format tests for the HTML backend -->
+
+<xsl:template name="is.graphic.format">
+ <xsl:param name="format"/>
+ <xsl:if test="$format = 'SVG' or $format = 'PNG' or $format = 'JPG' or $format = 'JPEG' or $format = 'linespecific' or $format = 'GIF' or $format = 'GIF87a' or $format = 'GIF89a' or $format = 'BMP'">1</xsl:if>
+</xsl:template>
+
+<xsl:template name="is.graphic.extension">
+ <xsl:param name="ext"/>
+ <xsl:variable name="lcext" select="translate($ext, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"/>
+ <xsl:if test="$lcext = 'svg' or $lcext = 'png' or $lcext = 'jpeg' or $lcext = 'jpg' or $lcext = 'avi' or $lcext = 'mpg' or $lcext = 'mpeg' or $lcext = 'qt' or $lcext = 'gif' or $lcext = 'bmp'">1</xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="screenshot">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="screeninfo">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.image">
+ <!-- When this template is called, the current node should be -->
+ <!-- a graphic, inlinegraphic, imagedata, or videodata. All -->
+ <!-- those elements have the same set of attributes, so we can -->
+ <!-- handle them all in one place. -->
+ <xsl:param name="tag" select="'img'"/>
+ <xsl:param name="alt"/>
+ <xsl:param name="longdesc"/>
+
+ <!-- The HTML img element only supports the notion of content-area
+ scaling; it doesn't support the distinction between a
+ content-area and a viewport-area, so we have to make some
+ compromises.
+
+ 1. If only the content-area is specified, everything is fine.
+ (If you ask for a three inch image, that's what you'll get.)
+
+ 2. If only the viewport-area is provided:
+ - If scalefit=1, treat it as both the content-area and
+ the viewport-area. (If you ask for an image in a five inch
+ area, we'll make the image five inches to fill that area.)
+ - If scalefit=0, ignore the viewport-area specification.
+
+ Note: this is not quite the right semantic and has the additional
+ problem that it can result in anamorphic scaling, which scalefit
+ should never cause.
+
+ 3. If both the content-area and the viewport-area is specified
+ on a graphic element, ignore the viewport-area.
+ (If you ask for a three inch image in a five inch area, we'll assume
+ it's better to give you a three inch image in an unspecified area
+ than a five inch image in a five inch area.
+
+ Relative units also cause problems. As a general rule, the stylesheets
+ are operating too early and too loosely coupled with the rendering engine
+ to know things like the current font size or the actual dimensions of
+ an image. Therefore:
+
+ 1. We use a fixed size for pixels, $pixels.per.inch
+
+ 2. We use a fixed size for "em"s, $points.per.em
+
+ Percentages are problematic. In the following discussion, we speak
+ of width and contentwidth, but the same issues apply to depth and
+ contentdepth
+
+ 1. A width of 50% means "half of the available space for the image."
+ That's fine. But note that in HTML, this is a dynamic property and
+ the image size will vary if the browser window is resized.
+
+ 2. A contentwidth of 50% means "half of the actual image width". But
+ the stylesheets have no way to assess the image's actual size. Treating
+ this as a width of 50% is one possibility, but it produces behavior
+ (dynamic scaling) that seems entirely out of character with the
+ meaning.
+
+ Instead, the stylesheets define a $nominal.image.width
+ and convert percentages to actual values based on that nominal size.
+
+ Scale can be problematic. Scale applies to the contentwidth, so
+ a scale of 50 when a contentwidth is not specified is analagous to a
+ width of 50%. (If a contentwidth is specified, the scaling factor can
+ be applied to that value and no problem exists.)
+
+ If scale is specified but contentwidth is not supplied, the
+ nominal.image.width is used to calculate a base size
+ for scaling.
+
+ Warning: as a consequence of these decisions, unless the aspect ratio
+ of your image happens to be exactly the same as (nominal width / nominal height),
+ specifying contentwidth="50%" and contentdepth="50%" is NOT going to
+ scale the way you expect (or really, the way it should).
+
+ Don't do that. In fact, a percentage value is not recommended for content
+ size at all. Use scale instead.
+
+ Finally, align and valign are troublesome. Horizontal alignment is now
+ supported by wrapping the image in a <div align="{@align}"> (in block
+ contexts!). I can't think of anything (practical) to do about vertical
+ alignment.
+ -->
+
+ <xsl:variable name="width-units">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@width">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="$default.image.width"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@width">
+ <xsl:choose>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:value-of select="$default.image.width"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scalefit">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">0</xsl:when>
+ <xsl:when test="@scale">0</xsl:when>
+ <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when>
+ <xsl:when test="$width != '' or @depth">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scale">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">1.0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when>
+ <xsl:when test="@scale">
+ <xsl:value-of select="@scale div 100.0"/>
+ </xsl:when>
+ <xsl:otherwise>1.0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'graphic' or local-name(.) = 'inlinegraphic'">
+ <!-- handle legacy graphic and inlinegraphic by new template -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- imagedata, videodata, audiodata -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="output_filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <!--
+ Moved test for $keep.relative.image.uris to template below:
+ <xsl:template match="@fileref">
+ -->
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="img.src.path.pi">
+ <xsl:call-template name="pi.dbhtml_img.src.path">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename.for.graphicsize">
+ <xsl:choose>
+ <xsl:when test="$img.src.path.pi != ''">
+ <xsl:value-of select="concat($img.src.path.pi, $filename)"/>
+ </xsl:when>
+ <xsl:when test="$img.src.path != '' and $graphicsize.use.img.src.path != 0 and $tag = 'img' and not(starts-with($filename, '/')) and not(contains($filename, '://'))">
+ <xsl:value-of select="concat($img.src.path, $filename)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="realintrinsicwidth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getWidth')">
+ <xsl:value-of select="simg:getWidth(simg:new($filename.for.graphicsize), $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getWidth')">
+ <xsl:value-of select="ximg:getWidth(ximg:new($filename.for.graphicsize), $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicwidth">
+ <xsl:choose>
+ <xsl:when test="$realintrinsicwidth = 0">
+ <xsl:value-of select="$nominal.image.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$realintrinsicwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicdepth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getDepth')">
+ <xsl:value-of select="simg:getDepth(simg:new($filename.for.graphicsize), $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getDepth')">
+ <xsl:value-of select="ximg:getDepth(ximg:new($filename.for.graphicsize), $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentwidth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@contentwidth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicwidth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentwidth">
+ <xsl:if test="$contentwidth != ''">
+ <xsl:variable name="cwidth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentwidth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cwidth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="$width"/>
+ </xsl:when>
+ <xsl:when test="$width != ''">
+ <xsl:variable name="width.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$width"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($width.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentdepth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="@contentdepth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicdepth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicdepth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentdepth">
+ <xsl:if test="$contentdepth != ''">
+ <xsl:variable name="cdepth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentdepth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cdepth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth-units">
+ <xsl:if test="@depth">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:if test="@depth">
+ <xsl:choose>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="@depth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.depth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"/>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="$depth"/>
+ </xsl:when>
+ <xsl:when test="@depth and @depth != ''">
+ <xsl:variable name="depth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$depth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($depth.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="viewport">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="local-name(.) = 'inlinegraphic' or ancestor::inlinemediaobject or ancestor::inlineequation">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$make.graphic.viewport"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>=====================================
+scale: <xsl:value-of select="$scale"/>, <xsl:value-of select="$scalefit"/>
+@contentwidth <xsl:value-of select="@contentwidth"/>
+$contentwidth <xsl:value-of select="$contentwidth"/>
+scaled.contentwidth: <xsl:value-of select="$scaled.contentwidth"/>
+@width: <xsl:value-of select="@width"/>
+width: <xsl:value-of select="$width"/>
+html.width: <xsl:value-of select="$html.width"/>
+@contentdepth <xsl:value-of select="@contentdepth"/>
+$contentdepth <xsl:value-of select="$contentdepth"/>
+scaled.contentdepth: <xsl:value-of select="$scaled.contentdepth"/>
+@depth: <xsl:value-of select="@depth"/>
+depth: <xsl:value-of select="$depth"/>
+html.depth: <xsl:value-of select="$html.depth"/>
+align: <xsl:value-of select="@align"/>
+valign: <xsl:value-of select="@valign"/></xsl:message>
+-->
+
+ <xsl:variable name="scaled" select="@width|@depth|@contentwidth|@contentdepth |@scale|@scalefit"/>
+
+ <xsl:variable name="img">
+ <xsl:choose>
+ <xsl:when test="@format = 'SVG'">
+ <object type="image/svg+xml">
+ <xsl:attribute name="data">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and $tag = 'img' and not(starts-with($output_filename, '/')) and not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here-->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$use.embed.for.svg != 0">
+ <embed type="image/svg+xml">
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and $tag = 'img' and not(starts-with($output_filename, '/')) and not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here -->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </embed>
+ </xsl:if>
+ </object>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$tag}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$scaled">
+ <!-- It might be possible to handle some scaling; needs -->
+ <!-- more investigation -->
+ <xsl:message>
+ <xsl:text>Warning: imagemaps not supported </xsl:text>
+ <xsl:text>on scaled images</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="usemap">
+ <xsl:value-of select="concat('#', $mapname)"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and $tag = 'img' and not(starts-with($output_filename, '/')) and not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="process.image.attributes">
+ <xsl:with-param name="alt">
+ <xsl:choose>
+ <xsl:when test="$alt != ''">
+ <xsl:copy-of select="$alt"/>
+ </xsl:when>
+ <xsl:when test="ancestor::figure">
+ <xsl:value-of select="normalize-space(ancestor::figure/title)"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:call-template name="pi.dbhtml_background-color">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="use.viewport" select="$viewport != 0 and ($html.width != '' or ($html.depth != '' and $depth-units != '%') or $bgcolor != '' or @valign)"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.viewport">
+ <table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0">
+ <xsl:if test="$html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <tr>
+ <xsl:if test="$html.depth != '' and $depth-units != '%'">
+ <!-- don't do this for percentages because browsers get confused -->
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>height: </xsl:text>
+ <xsl:value-of select="$html.depth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <td>
+ <xsl:if test="$bgcolor != ''">
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$img"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$img"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco and not($scaled)">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <map name="{$mapname}">
+ <xsl:for-each select="../../areaspec//area">
+ <xsl:variable name="units">
+ <xsl:choose>
+ <xsl:when test="@units = 'other' and @otherunits">
+ <xsl:value-of select="@otherunits"/>
+ </xsl:when>
+ <xsl:when test="@units">
+ <xsl:value-of select="@units"/>
+ </xsl:when>
+ <!-- areaspec|areaset/area -->
+ <xsl:when test="../@units = 'other' and ../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../@units">
+ <xsl:value-of select="../@units"/>
+ </xsl:when>
+ <!-- areaspec/areaset/area -->
+ <xsl:when test="../../@units = 'other' and ../../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../../@units">
+ <xsl:value-of select="../../@units"/>
+ </xsl:when>
+ <xsl:otherwise>calspair</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair' or $units = 'imagemap'">
+ <xsl:variable name="coords" select="normalize-space(@coords)"/>
+
+ <area shape="rect">
+ <xsl:variable name="linkends">
+ <xsl:choose>
+ <xsl:when test="@linkends">
+ <xsl:value-of select="normalize-space(@linkends)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(../@linkends)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="../@xlink:href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkends != ''">
+ <xsl:variable name="linkend">
+ <xsl:choose>
+ <xsl:when test="contains($linkends, ' ')">
+ <xsl:value-of select="substring-before($linkends, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$linkends"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="target" select="key('id', $linkend)[1]"/>
+
+ <xsl:if test="$target">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$href != ''">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$href"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="alt">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="alt[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="coords">
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair'">
+
+ <xsl:variable name="p1" select="substring-before($coords, ' ')"/>
+ <xsl:variable name="p2" select="substring-after($coords, ' ')"/>
+
+ <xsl:variable name="x1" select="substring-before($p1,',')"/>
+ <xsl:variable name="y1" select="substring-after($p1,',')"/>
+ <xsl:variable name="x2" select="substring-before($p2,',')"/>
+ <xsl:variable name="y2" select="substring-after($p2,',')"/>
+
+ <xsl:variable name="x1p" select="$x1 div 100.0"/>
+ <xsl:variable name="y1p" select="$y1 div 100.0"/>
+ <xsl:variable name="x2p" select="$x2 div 100.0"/>
+ <xsl:variable name="y2p" select="$y2 div 100.0"/>
+
+ <!--
+ <xsl:message>
+ <xsl:text>units: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$x1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$x2p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y2p"/><xsl:text>, </xsl:text>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$intrinsicdepth"/>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of
+ select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($x2p *
+ $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:message>
+ -->
+ <xsl:value-of select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($x2p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$coords"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </area>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: only calspair or </xsl:text>
+ <xsl:text>otherunits='imagemap' supported </xsl:text>
+ <xsl:text>in imageobjectco</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </map>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.image.attributes">
+ <xsl:param name="alt"/>
+ <xsl:param name="html.width"/>
+ <xsl:param name="html.depth"/>
+ <xsl:param name="longdesc"/>
+ <xsl:param name="scale"/>
+ <xsl:param name="scalefit"/>
+ <xsl:param name="scaled.contentdepth"/>
+ <xsl:param name="scaled.contentwidth"/>
+ <xsl:param name="viewport"/>
+
+ <xsl:choose>
+ <xsl:when test="@contentwidth or @contentdepth">
+ <!-- ignore @width/@depth, @scale, and @scalefit if specified -->
+ <xsl:if test="@contentwidth and $scaled.contentwidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@contentdepth and $scaled.contentdepth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$scaled.contentdepth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="number($scale) != 1.0">
+ <!-- scaling is always uniform, so we only have to specify one dimension -->
+ <!-- ignore @scalefit if specified -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scalefit != 0">
+ <xsl:choose>
+ <xsl:when test="contains($html.width, '%')">
+ <xsl:choose>
+ <xsl:when test="$viewport != 0">
+ <!-- The *viewport* will be scaled, so use 100% here! -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="contains($html.depth, '%')">
+ <!-- HTML doesn't deal with this case very well...do nothing -->
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != '' and $scaled.contentdepth != '' and $html.depth != ''">
+ <!-- scalefit should not be anamorphic; figure out which direction -->
+ <!-- has the limiting scale factor and scale in that direction -->
+ <xsl:choose>
+ <xsl:when test="$html.width div $scaled.contentwidth &gt; $html.depth div $scaled.contentdepth">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentdepth != '' and $html.depth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$alt != ''">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="normalize-space($alt)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$longdesc != ''">
+ <xsl:attribute name="longdesc">
+ <xsl:value-of select="$longdesc"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@align and $viewport = 0">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="graphic">
+ <xsl:choose>
+ <xsl:when test="parent::inlineequation">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="inlinegraphic">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process.image"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="mediaobject|mediaobjectco">
+
+ <xsl:variable name="olist" select="imageobject|imageobjectco |videoobject|audioobject |textobject"/>
+
+ <xsl:variable name="object.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+ <xsl:variable name="align">
+ <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$align != '' ">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:apply-templates select="$object"/>
+ <xsl:apply-templates select="caption"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="select.mediaobject"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="programlisting/inlinemediaobject |screen/inlinemediaobject" priority="2">
+ <!-- the additional span causes problems in some cases -->
+ <xsl:call-template name="select.mediaobject"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="imageobjectco">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="imageobject"/>
+ <xsl:apply-templates select="calloutlist"/>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:apply-templates select="imagedata"/>
+</xsl:template>
+
+<xsl:template match="imagedata">
+ <xsl:variable name="filename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- Handle MathML and SVG markup in imagedata -->
+ <xsl:when xmlns:mml="http://www.w3.org/1998/Math/MathML" test="mml:*">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when xmlns:svg="http://www.w3.org/2000/svg" test="svg:*">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" href="{$filename}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="phrases" select="ancestor::mediaobject/textobject[phrase] |ancestor::inlinemediaobject/textobject[phrase] |ancestor::mediaobjectco/textobject[phrase]"/>
+
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ </xsl:with-param>
+ <xsl:with-param name="longdesc">
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject" select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0 and ancestor::imageobject/parent::*/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="longdesc.uri">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc">
+ <xsl:if test="$mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="dbhtml.dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:choose>
+ <xsl:when test="$dbhtml.dir != ''">
+ <xsl:value-of select="$dbhtml.dir"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:choose>
+ <xsl:when test=" $mediaobject/@*[local-name() = 'id'] and not($use.id.as.filename = 0)">
+ <!-- * if this mediaobject has an ID, then we use the -->
+ <!-- * value of that ID as basename for the "longdesc" -->
+ <!-- * file (that is, without prepending an "ld-" too it) -->
+ <xsl:value-of select="$mediaobject/@*[local-name() = 'id']"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this mediaobject does not have an -->
+ <!-- * ID, then we generate an ID... -->
+ <xsl:variable name="image-id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ld-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ld-',$image-id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="write.longdesc">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title" select="'Long Description'"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:for-each select="$mediaobject/textobject[not(phrase)]">
+ <xsl:apply-templates select="./*"/>
+ </xsl:for-each>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="longdesc.link">
+ <xsl:param name="longdesc.uri" select="''"/>
+
+ <xsl:variable name="this.uri">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$longdesc.uri"/>
+ <xsl:with-param name="uriB" select="$this.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div class="longdesc-link" align="{$direction.align.end}">
+ <br clear="all"/>
+ <span class="longdesc-link">
+ <xsl:text>[</xsl:text>
+ <a href="{$href.to}" target="longdesc">D</a>
+ <xsl:text>]</xsl:text>
+ </span>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="videoobject">
+ <xsl:apply-templates select="videodata"/>
+</xsl:template>
+
+<xsl:template match="videodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="audioobject">
+ <xsl:apply-templates select="audiodata"/>
+</xsl:template>
+
+<xsl:template match="audiodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="textobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="textdata">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="@encoding">
+ <xsl:value-of select="@encoding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$textdata.default.encoding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0' and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/>
+ <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="caption">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
+ <xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- "Support" for SVG -->
+
+<xsl:template xmlns:svg="http://www.w3.org/2000/svg" match="svg:*">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+
+<!-- The following works sometimes, but needs to take into account
+ 1. When there is no /*/@xml:base
+ 2. When the chunks are going somewhere else
+<xsl:variable name="relpath">
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="filename" select="@fileref"/>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:choose>
+ <xsl:when test="/*/@xml:base
+ and starts-with($relpath,/*/@xml:base)">
+ <xsl:value-of select="substring-after($relpath,/*/@xml:base)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@fileref"/>
+ </xsl:otherwise>
+</xsl:choose>
+<xsl:value-of select="@fileref"/>
+ </xsl:when>
+-->
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri that needs xml:base processing -->
+ <xsl:call-template name="relative-uri">
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl
new file mode 100644
index 0000000..222a055
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslthl="http://xslthl.sf.net" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xslthl" version="1.0">
+ <!-- ********************************************************************
+ $Id: highlight.xsl 8911 2010-09-28 17:02:06Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ and other information.
+
+ ******************************************************************** -->
+ <xsl:import href="../highlighting/common.xsl"/>
+ <xsl:template match="xslthl:keyword" mode="xslthl">
+ <strong class="hl-keyword">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:string" mode="xslthl">
+ <strong class="hl-string">
+ <em style="color:red">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:comment" mode="xslthl">
+ <em class="hl-comment" style="color: silver">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </xsl:template>
+ <xsl:template match="xslthl:directive" mode="xslthl">
+ <span class="hl-directive" style="color: maroon">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:tag" mode="xslthl">
+ <strong class="hl-tag" style="color: #000096">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:attribute" mode="xslthl">
+ <span class="hl-attribute" style="color: #F5844C">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:value" mode="xslthl">
+ <span class="hl-value" style="color: #993300">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:html" mode="xslthl">
+ <strong>
+ <em style="color: red">
+ <xsl:apply-templates mode="xslthl"/>
+ </em>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:xslt" mode="xslthl">
+ <strong style="color: #0066FF">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <!-- Not emitted since XSLTHL 2.0 -->
+ <xsl:template match="xslthl:section" mode="xslthl">
+ <strong>
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+ <xsl:template match="xslthl:number" mode="xslthl">
+ <span class="hl-number">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </xsl:template>
+ <xsl:template match="xslthl:annotation" mode="xslthl">
+ <em>
+ <span class="hl-annotation" style="color: gray">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
+ </em>
+ </xsl:template>
+ <!-- Not sure which element will be in final XSLTHL 2.0 -->
+ <xsl:template match="xslthl:doccomment|xslthl:doctype" mode="xslthl">
+ <strong class="hl-tag" style="color: blue">
+ <xsl:apply-templates mode="xslthl"/>
+ </strong>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl
new file mode 100644
index 0000000..e079a73
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:set="http://exslt.org/sets" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl set" version="1.0">
+
+<!-- ********************************************************************
+ $Id: html-rtf.xsl 8345 2009-03-16 06:44:07Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This module contains templates that match against HTML nodes. It is used
+ to post-process result tree fragments for some sorts of cleanup.
+ These templates can only ever be fired by a processor that supports
+ exslt:node-set(). -->
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.p mode templates insert a particular RTF at the beginning
+ of the first paragraph in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:p|p" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="not(preceding::p|preceding::html:p)">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.text mode templates insert a particular RTF at the beginning
+ of the first text-node in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+
+ <xsl:if test="not(preceding::text())">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- unwrap.p mode templates remove blocks from HTML p elements (and
+ other places where blocks aren't allowed) -->
+
+<xsl:template name="unwrap.p">
+ <xsl:param name="p"/>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0 and function-available('set:leading') and function-available('set:trailing')">
+ <xsl:apply-templates select="exsl:node-set($p)" mode="unwrap.p"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:p|p" mode="unwrap.p">
+ <!-- xmlns:html is necessary for the xhtml stylesheet case -->
+ <xsl:variable name="blocks" select="address|blockquote|div|hr|h1|h2|h3|h4|h5|h6 |layer|p|pre|table|dl|menu|ol|ul|form |html:address|html:blockquote|html:div|html:hr |html:h1|html:h2|html:h3|html:h4|html:h5|html:h6 |html:layer|html:p|html:pre|html:table|html:dl |html:menu|html:ol|html:ul|html:form"/>
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="."/>
+ <xsl:with-param name="first" select="1"/>
+ <xsl:with-param name="nodes" select="node()"/>
+ <xsl:with-param name="blocks" select="$blocks"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="unwrap.p">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="unwrap.p">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template name="unwrap.p.nodes">
+ <xsl:param name="wrap" select="."/>
+ <xsl:param name="first" select="0"/>
+ <xsl:param name="nodes"/>
+ <xsl:param name="blocks"/>
+ <xsl:variable name="block" select="$blocks[1]"/>
+
+ <!-- This template should never get called if these functions aren't available -->
+ <!-- but this test is still necessary so that processors don't choke on the -->
+ <!-- function calls if they don't support the set: functions -->
+ <xsl:if test="function-available('set:leading') and function-available('set:trailing')">
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:variable name="leading" select="set:leading($nodes,$block)"/>
+ <xsl:variable name="trailing" select="set:trailing($nodes,$block)"/>
+
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id) and $first = 1) or $leading">
+ <xsl:element name="{local-name($wrap)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$leading" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:apply-templates select="$block" mode="unwrap.p"/>
+
+ <xsl:if test="$trailing">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="nodes" select="$trailing"/>
+ <xsl:with-param name="blocks" select="$blocks[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id) and $first = 1) or $nodes">
+ <xsl:element name="{local-name($wrap)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$nodes" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- make.verbatim.mode replaces spaces and newlines -->
+
+<xsl:template match="/" mode="make.verbatim.mode">
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="make.verbatim.mode">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="make.verbatim.mode">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="text()" mode="make.verbatim.mode">
+ <xsl:variable name="text" select="translate(., ' ', '&#160;')"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#10;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>
+</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim-recursive">
+ <xsl:param name="text" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#10;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>
+</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- remove.empty.div mode templates remove empty blocks -->
+
+<xsl:template name="remove.empty.div">
+ <xsl:param name="div"/>
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($div)" mode="remove.empty.div"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$div"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:p|p|html:div|div" mode="remove.empty.div">
+ <xsl:if test="node()">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="*" mode="remove.empty.div">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="remove.empty.div">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl
new file mode 100644
index 0000000..154a645
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl
@@ -0,0 +1,598 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: html.xsl 8556 2009-12-11 00:05:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These variables set the align attribute value for HTML output based on
+ the writing-mode specified in the gentext file for the document's lang. -->
+
+<xsl:variable name="direction.align.start">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">left</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">right</xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:variable name="direction.align.end">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">right</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">left</xsl:when>
+ <xsl:otherwise>right</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:variable name="direction.mode">
+ <xsl:choose>
+ <xsl:when test="starts-with($writing.mode, 'lr')">ltr</xsl:when>
+ <xsl:when test="starts-with($writing.mode, 'rl')">rtl</xsl:when>
+ <xsl:otherwise>ltr</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<!-- The generate.html.title template is currently used for generating HTML -->
+<!-- "title" attributes for some inline elements only, but not for any -->
+<!-- block elements. It is called in eleven places in the inline.xsl -->
+<!-- file. But it's called by all the inline.* templates (e.g., -->
+<!-- inline.boldseq), which in turn are called by other (element) -->
+<!-- templates, so it results, currently, in supporting generation of the -->
+<!-- HTML "title" attribute for a total of about 92 elements. -->
+<!-- You can use mode="html.title.attribute" to get a title for -->
+<!-- an element specified by a param, including targets of cross references. -->
+<xsl:template name="generate.html.title">
+ <xsl:apply-templates select="." mode="html.title.attribute"/>
+</xsl:template>
+
+<!-- Generate a title attribute for the context node -->
+<xsl:template match="*" mode="html.title.attribute">
+ <xsl:variable name="is.title">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-numbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-unnumbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="has.title.markup">
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="gentext.title">
+ <xsl:if test="$has.title.markup != '???TITLE???' and ($is.title != 0 or $is.title-numbered != 0 or $is.title-unnumbered != 0)">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($gentext.title) != 0">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$gentext.title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Fall back to alt if available -->
+ <xsl:when test="alt">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(alt)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="html.title.attribute">
+ <xsl:apply-templates select="question" mode="html.title.attribute"/>
+</xsl:template>
+
+<xsl:template match="question" mode="html.title.attribute">
+ <xsl:variable name="label.text">
+ <xsl:apply-templates select="." mode="qanda.label"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($label.text) != 0">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$label.text"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Fall back to alt if available -->
+ <xsl:when test="alt">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(alt)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="dir">
+ <xsl:param name="inherit" select="0"/>
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="@dir">
+ <xsl:value-of select="@dir"/>
+ </xsl:when>
+ <xsl:when test="$inherit != 0">
+ <xsl:value-of select="ancestor::*/@dir[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$dir != ''">
+ <xsl:attribute name="dir">
+ <xsl:value-of select="$dir"/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="anchor">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="conditional" select="1"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xslo:if xmlns:xslo="http://www.w3.org/1999/XSL/Transform" test="not($node[parent::blockquote])"><xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id">
+ <a id="{$id}"/>
+ </xsl:if></xslo:if>
+</xsl:template>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target.with.base.dir">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:call-template name="dingbat.characters">
+ <xsl:with-param name="dingbat" select="$dingbat"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat.characters">
+ <!-- now that I'm using the real serializer, all that dingbat malarky -->
+ <!-- isn't necessary anymore... -->
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">&#8226;</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#169;</xsl:when>
+ <xsl:when test="$dingbat='trademark'">&#8482;</xsl:when>
+ <xsl:when test="$dingbat='trade'">&#8482;</xsl:when>
+ <xsl:when test="$dingbat='registered'">&#174;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='nbsp'">&#160;</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">&#8220;</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">&#8221;</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">&#8216;</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">&#8217;</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">&#8212;</xsl:when>
+ <xsl:when test="$dingbat='mdash'">&#8212;</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">&#8211;</xsl:when>
+ <xsl:when test="$dingbat='ndash'">&#8211;</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#8226;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="id.warning">
+ <xsl:if test="$id.warnings != 0 and not(@id) and not(@xml:id) and parent::*">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:when>
+ <xsl:when test="substring(local-name(*[1]), string-length(local-name(*[1])-3) = 'info') and *[1]/title">
+ <xsl:value-of select="*[1]/title[1]"/>
+ </xsl:when>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:value-of select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:when test="refnamediv/refname">
+ <xsl:value-of select="refnamediv/refname[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:message>
+ <xsl:text>ID recommended on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="$title != ''">
+ <xsl:text>: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($title) &gt; 40">
+ <xsl:value-of select="substring($title,1,40)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.class.attribute">
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="class.attribute">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class attributes -->
+ <!-- Use element name by default -->
+ <xsl:attribute name="class">
+ <xsl:apply-templates select="." mode="class.value">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="*" mode="class.value">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class value only -->
+ <!-- Use element name by default -->
+ <xsl:value-of select="$class"/>
+</xsl:template>
+
+<!-- Apply common attributes such as class, lang, dir -->
+<xsl:template name="common.html.attributes">
+ <xsl:param name="inherit" select="0"/>
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="$class"/>
+ <xsl:with-param name="inherit" select="$inherit"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="common.html.attributes">
+ <xsl:param name="class" select="local-name(.)"/>
+ <xsl:param name="inherit" select="0"/>
+ <xsl:call-template name="generate.html.lang"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="$inherit"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="generate.html.title"/>
+</xsl:template>
+
+<!-- Apply common attributes not including class -->
+<xsl:template name="locale.html.attributes">
+ <xsl:apply-templates select="." mode="locale.html.attributes"/>
+</xsl:template>
+
+<xsl:template match="*" mode="locale.html.attributes">
+ <xsl:call-template name="generate.html.lang"/>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+</xsl:template>
+
+<!-- Pass through any lang attributes -->
+<xsl:template name="generate.html.lang">
+ <xsl:apply-templates select="." mode="html.lang.attribute"/>
+</xsl:template>
+
+<xsl:template match="*" mode="html.lang.attribute">
+ <!-- match the attribute name to the output type -->
+ <xsl:choose>
+ <xsl:when test="@lang and $stylesheet.result.type = 'html'">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="@lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@lang and $stylesheet.result.type = 'xhtml'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="@lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@xml:lang and $stylesheet.result.type = 'html'">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="@xml:lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@xml:lang and $stylesheet.result.type = 'xhtml'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="@xml:lang"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Insert link to css or insert literal CSS in head element -->
+<xsl:template name="generate.css">
+ <xsl:choose>
+ <xsl:when test="$generate.css.header = 0">
+ <xsl:call-template name="generate.css.links"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.css.headers"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.css.headers">
+ <xsl:call-template name="generate.default.css.header"/>
+ <xsl:call-template name="generate.custom.css.header"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.header">
+ <xsl:if test="$make.clean.html != 0 and $docbook.css.source != ''">
+ <!-- Select default file relative to stylesheet -->
+ <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+ <xsl:call-template name="output.css.header">
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.header">
+ <xsl:if test="$custom.css.source != ''">
+ <!-- Select custom file relative to document -->
+ <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+ <xsl:call-template name="output.css.header">
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="output.css.header">
+ <xsl:param name="css.node"/>
+
+ <xsl:choose>
+ <xsl:when test="count($css.node) = 0">
+ </xsl:when>
+ <xsl:otherwise>
+ <style type="text/css">
+ <xsl:copy-of select="$css.node/text()"/>
+ </style>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.css.links">
+ <xsl:call-template name="generate.default.css.link"/>
+ <xsl:call-template name="generate.custom.css.link"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.link">
+ <xsl:if test="$make.clean.html != 0 and $docbook.css.link != 0 and $docbook.css.source != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="src" select="$docbook.css.source"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.link">
+ <xsl:if test="$custom.css.source != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="src" select="$custom.css.source"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- a CSS link reference must take into account the relative
+ path to a CSS file when chunked HTML is output to more than one directory -->
+<xsl:template name="make.css.link">
+ <xsl:param name="css.filename" select="''"/>
+
+ <xsl:variable name="href.to.uri" select="$css.filename"/>
+
+ <xsl:variable name="href.from.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+
+ <xsl:if test="string-length($css.filename) != 0">
+ <link rel="stylesheet" type="text/css" href="{$href}"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="generate.css.files">
+ <xsl:call-template name="generate.default.css.file"/>
+ <xsl:call-template name="generate.custom.css.file"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.file">
+ <xsl:if test="$make.clean.html != 0 and $generate.css.header = 0 and $docbook.css.source != ''">
+ <!-- Select default file relative to stylesheet -->
+ <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+ <xsl:call-template name="generate.css.file">
+ <xsl:with-param name="src" select="$docbook.css.source"/>
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.file">
+ <xsl:if test="$custom.css.source != '' and $generate.css.header = 0">
+ <!-- Select custom file relative to document -->
+ <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+ <xsl:call-template name="generate.css.file">
+ <xsl:with-param name="src" select="$custom.css.source"/>
+ <xsl:with-param name="css.node" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.css.file">
+ <xsl:param name="css.node"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="css.text" select="$css.node/text()"/>
+
+ <xsl:choose>
+ <xsl:when test="count($css.node) = 0">
+ <xsl:message>
+ <xsl:text>ERROR: no root element for CSS source file'</xsl:text>
+ <xsl:value-of select="$src"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="filename">
+ <xsl:call-template name="css.output.pathname">
+ <xsl:with-param name="src" select="$src"/>
+ <xsl:with-param name="content" select="$css.node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content" select="$css.text"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="css.output.filename">
+ <xsl:param name="content"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="candidate">
+ <xsl:choose>
+ <xsl:when test="string-length($src) = 0">
+ <xsl:message>
+ <xsl:text>ERROR: missing CSS input filename.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="substring($src,string-length($src)-3) = '.xml'">
+ <xsl:value-of select="substring($src, 1, string-length($src) - 4)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$src"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$candidate"/>
+</xsl:template>
+
+<xsl:template name="css.output.pathname">
+ <xsl:param name="content"/>
+ <xsl:param name="src" select="''"/>
+
+ <xsl:variable name="file">
+ <xsl:call-template name="css.output.filename">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="src" select="$src"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="path" select="concat($base.dir, $file)"/>
+ <xsl:value-of select="$path"/>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl
new file mode 100644
index 0000000..47c9a98
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: htmltbl.xsl 8477 2009-07-13 11:38:55Z nwalsh $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colgroup" mode="htmlTable">
+ <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="col" mode="htmlTable">
+ <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="caption" mode="htmlTable">
+ <!-- do not use xsl:copy because of XHTML's needs -->
+ <caption>
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+
+ <xsl:apply-templates select=".." mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+
+ </caption>
+</xsl:template>
+
+<xsl:template match="tbody|thead|tfoot|tr" mode="htmlTable">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="th|td" mode="htmlTable">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:apply-templates/> <!-- *not* mode=htmlTable -->
+ </xsl:element>
+</xsl:template>
+
+<!-- don't copy through DocBook-specific attributes on HTML table markup -->
+<!-- default behavior is to not copy through because there are more
+ DocBook attributes than HTML attributes -->
+<xsl:template mode="htmlTableAtt" match="@*"/>
+
+<!-- copy these through -->
+<xsl:template mode="htmlTableAtt" match="@abbr | @align | @axis | @bgcolor | @border | @cellpadding | @cellspacing | @char | @charoff | @class | @dir | @frame | @headers | @height | @lang | @nowrap | @onclick | @ondblclick | @onkeydown | @onkeypress | @onkeyup | @onmousedown | @onmousemove | @onmouseout | @onmouseover | @onmouseup | @rules | @style | @summary | @title | @valign | @valign | @width | @xml:lang">
+ <xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="@span|@rowspan|@colspan" mode="htmlTableAtt">
+ <!-- No need to copy through the DTD's default value "1" of the attribute -->
+ <xsl:if test="number(.) != 1">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- map floatstyle to HTML float values -->
+<xsl:template match="@floatstyle" mode="htmlTableAtt">
+ <xsl:attribute name="style">
+ <xsl:text>float: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains(., 'left')">left</xsl:when>
+ <xsl:when test="contains(., 'right')">right</xsl:when>
+ <xsl:when test="contains(., 'start')">
+ <xsl:value-of select="$direction.align.start"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'end')">
+ <xsl:value-of select="$direction.align.end"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'inside')">
+ <xsl:value-of select="$direction.align.start"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'outside')">
+ <xsl:value-of select="$direction.align.end"/>
+ </xsl:when>
+ <xsl:when test="contains(., 'before')">none</xsl:when>
+ <xsl:when test="contains(., 'none')">none</xsl:when>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:attribute>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl
new file mode 100644
index 0000000..2c39f4f
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: index.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="index.titlepage"/>
+ <xsl:choose>
+ <xsl:when test="indexdiv">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <!-- Because it's actually valid for Index to have neither any -->
+ <!-- Indexdivs nor any Indexentries, we need to check and make -->
+ <!-- sure that at least one Indexentry exists, and generate a -->
+ <!-- wrapper dl if there is at least one; otherwise, do nothing. -->
+ <xsl:if test="indexentry">
+ <!-- The indexentry template assumes a parent dl wrapper has -->
+ <!-- been generated; for Indexes that have Indexdivs, the dl -->
+ <!-- wrapper is generated by the indexdiv template; however, -->
+ <!-- for Indexes that lack Indexdivs, if we don't generate a -->
+ <!-- dl here, HTML output will not be valid. -->
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="setindex">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="setindex.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="index/indexinfo"/>
+<xsl:template match="index/info"/>
+<xsl:template match="index/title"/>
+<xsl:template match="index/subtitle"/>
+<xsl:template match="index/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexdiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexterm">
+ <!-- this one must have a name, even if it doesn't have an ID -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <a id="{$id}" class="indexterm"/>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary|see|seealso">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexentry">
+ <xsl:apply-templates select="primaryie"/>
+</xsl:template>
+
+<xsl:template match="primaryie">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <xsl:apply-templates select="following-sibling::seeie [not(preceding-sibling::secondaryie)]" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie [not(preceding-sibling::secondaryie)]" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::secondaryie" mode="indexentry"/>
+ </dd>
+</xsl:template>
+
+<!-- Handled in mode to convert flat list to structured output -->
+<xsl:template match="secondaryie">
+</xsl:template>
+<xsl:template match="tertiaryie">
+</xsl:template>
+<xsl:template match="seeie|seealsoie">
+</xsl:template>
+
+<xsl:template match="secondaryie" mode="indexentry">
+ <dl>
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <!-- select following see* elements up to next secondaryie or tertiary or end -->
+ <xsl:variable name="after.this" select="following-sibling::*"/>
+ <xsl:variable name="next.entry" select="(following-sibling::secondaryie|following-sibling::tertiaryie)[1]"/>
+ <xsl:variable name="before.entry" select="$next.entry/preceding-sibling::*"/>
+ <xsl:variable name="see.intersection" select="$after.this[count(.|$before.entry) = count($before.entry)] [self::seeie or self::seealsoie]"/>
+ <xsl:choose>
+ <xsl:when test="count($see.intersection) != 0">
+ <xsl:apply-templates select="$see.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="count($next.entry) = 0">
+ <xsl:apply-templates select="following-sibling::seeie" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie" mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- now process any tertiaryie before the next secondaryie -->
+ <xsl:variable name="before.next.secondary" select="following-sibling::secondaryie[1]/preceding-sibling::*"/>
+ <xsl:variable name="tertiary.intersection" select="$after.this[count(.|$before.next.secondary) = count($before.next.secondary)] [not(self::seeie) and not(self::seealsoie)]"/>
+ <xsl:choose>
+ <xsl:when test="count($tertiary.intersection) != 0">
+ <xsl:apply-templates select="$tertiary.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="not(following-sibling::secondaryie)">
+ <xsl:apply-templates select="following-sibling::tertiaryie" mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+ </dd>
+ </dl>
+</xsl:template>
+
+<xsl:template match="tertiaryie" mode="indexentry">
+ <dl>
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <dd>
+ <!-- select following see* elements up to next secondaryie or tertiary or end -->
+ <xsl:variable name="after.this" select="following-sibling::*"/>
+ <xsl:variable name="next.entry" select="(following-sibling::secondaryie|following-sibling::tertiaryie)[1]"/>
+ <xsl:variable name="before.entry" select="$next.entry/preceding-sibling::*"/>
+ <xsl:variable name="see.intersection" select="$after.this[count(.|$before.entry) = count($before.entry)] [self::seeie or self::seealsoie]"/>
+ <xsl:choose>
+ <xsl:when test="count($see.intersection) != 0">
+ <xsl:apply-templates select="$see.intersection" mode="indexentry"/>
+ </xsl:when>
+ <xsl:when test="count($next.entry) = 0">
+ <xsl:apply-templates select="following-sibling::seeie" mode="indexentry"/>
+ <xsl:apply-templates select="following-sibling::seealsoie" mode="indexentry"/>
+ </xsl:when>
+ </xsl:choose>
+ </dd>
+ </dl>
+</xsl:template>
+
+<xsl:template match="seeie" mode="indexentry">
+ <dt>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </dt>
+</xsl:template>
+
+<xsl:template match="seealsoie" mode="indexentry">
+ <div>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl
new file mode 100644
index 0000000..76285ab
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: info.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These templates define the "default behavior" for info
+ elements. Even if you don't process the *info wrappers,
+ some of these elements are needed because the elements are
+ processed from named templates that are called with modes.
+ Since modes aren't sticky, these rules apply.
+ (TODO: clarify this comment) -->
+
+<!-- ==================================================================== -->
+<!-- called from named templates in a given mode -->
+
+<xsl:template match="corpauthor">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="jobtitle">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl
new file mode 100644
index 0000000..da72226
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl
@@ -0,0 +1,1451 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink suwl" version="1.0">
+
+<!-- ********************************************************************
+ $Id: inline.xsl 8811 2010-08-09 20:24:45Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm)"/>
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm/@baseform)"/>
+
+<xsl:template name="simple.xlink">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:param name="linkend" select="$node/@linkend"/>
+ <xsl:param name="xhref" select="$node/@xlink:href"/>
+
+ <!-- Support for @xlink:show -->
+ <xsl:variable name="target.show">
+ <xsl:choose>
+ <xsl:when test="$node/@xlink:show = 'new'">_blank</xsl:when>
+ <xsl:when test="$node/@xlink:show = 'replace'">_top</xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="link">
+ <xsl:choose>
+ <xsl:when test="$xhref and (not($node/@xlink:type) or $node/@xlink:type='simple')">
+
+ <!-- Is it a local idref or a uri? -->
+ <xsl:variable name="is.idref">
+ <xsl:choose>
+ <!-- if the href starts with # and does not contain an "(" -->
+ <!-- or if the href starts with #xpointer(id(, it's just an ID -->
+ <xsl:when test="starts-with($xhref,'#') and (not(contains($xhref,'(')) or starts-with($xhref, '#xpointer(id('))">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Is it an olink ? -->
+ <xsl:variable name="is.olink">
+ <xsl:choose>
+ <!-- If xlink:role="http://docbook.org/xlink/role/olink" -->
+ <!-- and if the href contains # -->
+ <xsl:when test="contains($xhref,'#') and @xlink:role = $xolink.role">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$is.olink = 1">
+ <xsl:call-template name="olink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$is.idref = 1">
+
+ <xsl:variable name="idref">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targets" select="key('id',$idref)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$idref"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XLink to nonexistent id: </xsl:text>
+ <xsl:value-of select="$idref"/>
+ </xsl:message>
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$target" mode="html.title.attribute"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$target.show !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$target.show"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <!-- otherwise it's a URI -->
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$xhref"/>
+ </xsl:attribute>
+ <xsl:if test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- For URIs, use @xlink:show if defined, otherwise use ulink.target -->
+ <xsl:choose>
+ <xsl:when test="$target.show !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$target.show"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$ulink.target !=''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:copy-of select="$content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$linkend">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$target" mode="html.title.attribute"/>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.charseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- * if you want output from the inline.charseq template wrapped in -->
+ <!-- * something other than a Span, call the template with some value -->
+ <!-- * for the 'wrapper-name' param -->
+ <xsl:param name="wrapper-name">span</xsl:param>
+ <xsl:element name="{$wrapper-name}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="inline.monoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+</xsl:template>
+
+<xsl:template name="inline.boldseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title' and (local-name(../..) = 'figure' or local-name(../..) = 'example' or local-name(../..) = 'table')">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:copy-of select="$content"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.italicseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.boldmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <!-- or other titles that may already be represented with <strong>'s. -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title' and (local-name(../..) = 'figure' or local-name(../..) = 'example' or local-name(../..) = 'table' or local-name(../..) = 'formalpara')">
+ <code>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:call-template name="common.html.attributes"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ </code>
+ <xsl:call-template name="apply-annotations"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.italicmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:call-template name="common.html.attributes"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.superscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sup>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sup>
+</xsl:template>
+
+<xsl:template name="inline.subscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sub>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sub>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- some special cases -->
+
+<xsl:template match="author">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="accel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="action">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="application">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="exceptionname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="interfacename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="methodname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="computeroutput">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="constant">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="database">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="date">
+ <!-- should this support locale-specific formatting? how? -->
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorcode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortype">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortext">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="envar">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="filename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="function">
+ <xsl:choose>
+ <xsl:when test="$function.parens != '0' and (parameter or function or replaceable)">
+ <xsl:variable name="nodes" select="text()|*"/>
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$nodes[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="$nodes[position()&gt;1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="function/parameter" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="function/replaceable" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="guibutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guiicon">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guilabel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenuitem">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guisubmenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="hardware">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interface">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interfacedefinition">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keycap">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="keycode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keysym">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="literal">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="code">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="medialabel">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="shortcut">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="mousebutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="option">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="package">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="parameter">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="property">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="prompt">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="replaceable" priority="1">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="returnvalue">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="structfield">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="structname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="symbol">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="systemitem">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="token">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="type">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="userinput">
+ <xsl:call-template name="inline.boldmonoseq"/>
+</xsl:template>
+
+<xsl:template match="abbrev">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">abbr</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acronym">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">acronym</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <xsl:choose>
+ <xsl:when test="$citerefentry.link != '0'">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="generate.citerefentry.link"/>
+ </xsl:attribute>
+ <xsl:call-template name="inline.charseq"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.citerefentry.link">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template name="x.generate.citerefentry.link">
+ <xsl:text>http://example.com/cgi-bin/man.cgi?</xsl:text>
+ <xsl:value-of select="refentrytitle"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="manvolnum"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="citetitle">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <span>
+ <xsl:choose>
+ <!-- We don't want empty @class values, so do not propagate empty @roles -->
+ <xsl:when test="@role and normalize-space(@role) != '' and $emphasis.propagates.style != 0">
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="@role = 'bold' or @role='strong'">
+ <!-- backwards compatibility: make bold into b elements, but -->
+ <!-- don't put bold inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title' and (local-name(../..) = 'figure' or local-name(../..) = 'example' or local-name(../..) = 'table')">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@role and $emphasis.propagates.style != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="foreignphrase">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.italicseq"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="markup">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phrase">
+ <span>
+ <xsl:call-template name="locale.html.attributes"/>
+ <!-- We don't want empty @class values, so do not propagate empty @roles -->
+ <xsl:if test="@role and normalize-space(@role) != '' and $phrase.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="quote">
+ <xsl:variable name="depth">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string">
+ <xsl:number level="multiple"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$depth mod 2 = 0">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nestedstartquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.nestedendquote"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="wordasword">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="lineannotation">
+ <em>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.charseq"/>
+ </em>
+</xsl:template>
+
+<xsl:template match="superscript">
+ <xsl:call-template name="inline.superscriptseq"/>
+</xsl:template>
+
+<xsl:template match="subscript">
+ <xsl:call-template name="inline.subscriptseq"/>
+</xsl:template>
+
+<xsl:template match="trademark">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:choose>
+ <xsl:when test="@class = 'copyright' or @class = 'registered'">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@class = 'service'">
+ <sup>SM</sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="'trademark'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="firstterm">
+ <xsl:call-template name="glossterm">
+ <xsl:with-param name="firstterm" select="1"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="glossterm" name="glossterm">
+ <xsl:param name="firstterm" select="0"/>
+
+ <!-- To avoid extra <a name=""> anchor from inline.italicseq -->
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend) and ($firstterm.only.link = 0 or $firstterm = 1) and ($glossterm.auto.link != 0) and $glossary.collection != ''">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cterm" select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/>
+
+ <!-- HACK HACK HACK! But it works... -->
+ <!-- You'd need to do more work if you wanted to chunk on glossdiv, though -->
+
+ <xsl:variable name="glossary" select="//glossary[@role='auto']"/>
+
+ <xsl:if test="count($glossary) != 1">
+ <xsl:message>
+ <xsl:text>Warning: glossary.collection specified, but there are </xsl:text>
+ <xsl:value-of select="count($glossary)"/>
+ <xsl:text> automatic glossaries</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="glosschunk">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$glossary"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunkbase">
+ <xsl:choose>
+ <xsl:when test="contains($glosschunk, '#')">
+ <xsl:value-of select="substring-before($glosschunk, '#')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$glosschunk"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($cterm)">
+ <xsl:message>
+ <xsl:text>There's no entry for </xsl:text>
+ <xsl:value-of select="$term"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cterm"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <a href="{$chunkbase}#{$id}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend) and ($firstterm.only.link = 0 or $firstterm = 1) and $glossterm.auto.link != 0">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform">
+ <xsl:value-of select="normalize-space(@baseform)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="targets" select="key('glossentries', $term)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no glossentry for glossterm: </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="termdef">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'prefix'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'suffix'"/>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="sgmltag|tag">
+ <xsl:call-template name="format.sgmltag"/>
+</xsl:template>
+
+<xsl:template name="format.sgmltag">
+ <xsl:param name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>element</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$class='attribute'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='attvalue'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='element'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='endtag'">
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='genentity'">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='numcharref'">
+ <xsl:text>&amp;#</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='paramentity'">
+ <xsl:text>%</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='pi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='xmlpi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>?&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='starttag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='emptytag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>/&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='sgmlcomment' or $class='comment'">
+ <xsl:text>&lt;!--</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>--&gt;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes">
+ <xsl:with-param name="class" select="concat('sgmltag-', $class)"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </code>
+</xsl:template>
+
+<xsl:template match="email">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&lt;</xsl:text>
+ </xsl:if>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:text>mailto:</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&gt;</xsl:text>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="keycombo">
+ <xsl:variable name="action" select="@action"/>
+ <xsl:variable name="joinchar">
+ <xsl:choose>
+ <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when>
+ <xsl:when test="$action='simul'">+</xsl:when>
+ <xsl:when test="$action='press'">-</xsl:when>
+ <xsl:when test="$action='click'">-</xsl:when>
+ <xsl:when test="$action='double-click'">-</xsl:when>
+ <xsl:when test="$action='other'"/>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="*">
+ <xsl:if test="position()&gt;1"><xsl:value-of select="$joinchar"/></xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="uri">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="menuchoice">
+ <xsl:variable name="shortcut" select="./shortcut"/>
+ <xsl:call-template name="process.menuchoice"/>
+ <xsl:if test="$shortcut">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="$shortcut"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.menuchoice">
+ <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($nodelist)"/>
+ <xsl:when test="$count=1">
+ <xsl:apply-templates select="$nodelist[$count=position()]"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="node" select="$nodelist[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='guimenuitem' or local-name($node)='guisubmenu'">
+ <xsl:value-of select="$menuchoice.menu.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$menuchoice.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$node"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+</xsl:template>
+
+<xsl:template match="citation">
+ <!-- todo: integrate with bibliography collection -->
+ <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to abbrev -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$target" mode="citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </a>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="citebiblioid">
+ <xsl:variable name="targets" select="//*[biblioid = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to parent of biblioid -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.charseq"/>
+
+ </a>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="citation">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="comment[parent::answer|parent::appendix|parent::article|parent::bibliodiv|&#10; parent::bibliography|parent::blockquote|parent::caution|parent::chapter|&#10; parent::glossary|parent::glossdiv|parent::important|parent::index|&#10; parent::indexdiv|parent::listitem|parent::note|parent::orderedlist|&#10; parent::partintro|parent::preface|parent::procedure|parent::qandadiv|&#10; parent::qandaset|parent::question|parent::refentry|parent::refnamediv|&#10; parent::refsect1|parent::refsect2|parent::refsect3|parent::refsection|&#10; parent::refsynopsisdiv|parent::sect1|parent::sect2|parent::sect3|parent::sect4|&#10; parent::sect5|parent::section|parent::setindex|parent::sidebar|&#10; parent::simplesect|parent::taskprerequisites|parent::taskrelated|&#10; parent::tasksummary|parent::warning]|remark[parent::answer|parent::appendix|parent::article|parent::bibliodiv|&#10; parent::bibliography|parent::blockquote|parent::caution|parent::chapter|&#10; parent::glossary|parent::glossdiv|parent::important|parent::index|&#10; parent::indexdiv|parent::listitem|parent::note|parent::orderedlist|&#10; parent::partintro|parent::preface|parent::procedure|parent::qandadiv|&#10; parent::qandaset|parent::question|parent::refentry|parent::refnamediv|&#10; parent::refsect1|parent::refsect2|parent::refsect3|parent::refsection|&#10; parent::refsynopsisdiv|parent::sect1|parent::sect2|parent::sect3|parent::sect4|&#10; parent::sect5|parent::section|parent::setindex|parent::sidebar|&#10; parent::simplesect|parent::taskprerequisites|parent::taskrelated|&#10; parent::tasksummary|parent::warning]">
+ <xsl:if test="$show.comments != 0">
+ <p class="remark"><em><xsl:call-template name="inline.charseq"/></em></p>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="comment|remark">
+ <xsl:if test="$show.comments != 0">
+ <em><xsl:call-template name="inline.charseq"/></em>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productname">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="productnumber">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="pob|street|city|state|postcode|country|otheraddr">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phone|fax">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- in Addresses, for example -->
+<xsl:template match="honorific|firstname|surname|lineage|othername">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="person">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="personname"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="personname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="org">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="beginpage">
+ <!-- does nothing; this *is not* markup to force a page break. -->
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl
new file mode 100644
index 0000000..5f6b4fb
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: keywords.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="keywordset"/>
+<xsl:template match="subjectset"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="keywordset" mode="html.header">
+ <meta name="keywords">
+ <xsl:attribute name="content">
+ <xsl:apply-templates select="keyword" mode="html.header"/>
+ </xsl:attribute>
+ </meta>
+</xsl:template>
+
+<xsl:template match="keyword" mode="html.header">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::keyword">, </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl
new file mode 100644
index 0000000..58916e5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl
@@ -0,0 +1,1121 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: lists.xsl 8524 2009-10-10 02:45:47Z abdelazer $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="itemizedlist">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::listitem or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::listitem)] |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <ul>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:if test="$css.decoration != 0">
+ <xsl:attribute name="type">
+ <xsl:call-template name="list.itemsymbol"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@spacing='compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="listitem |comment()[preceding-sibling::listitem] |processing-instruction()[preceding-sibling::listitem]"/>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="itemizedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <xsl:variable name="mark" select="../@mark"/>
+ <xsl:variable name="override" select="@override"/>
+
+ <xsl:variable name="usemark">
+ <xsl:choose>
+ <xsl:when test="$override != ''">
+ <xsl:value-of select="$override"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$mark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cssmark">
+ <xsl:choose>
+ <xsl:when test="$usemark = 'opencircle'">circle</xsl:when>
+ <xsl:when test="$usemark = 'bullet'">disc</xsl:when>
+ <xsl:when test="$usemark = 'box'">square</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$usemark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="$css.decoration = '1' and $cssmark != ''">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:value-of select="$cssmark"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="orderedlist">
+ <xsl:variable name="start">
+ <xsl:call-template name="orderedlist-starting-number"/>
+ </xsl:variable>
+
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration"/>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">1</xsl:when>
+ <xsl:when test="$numeration='loweralpha'">a</xsl:when>
+ <xsl:when test="$numeration='lowerroman'">i</xsl:when>
+ <xsl:when test="$numeration='upperalpha'">A</xsl:when>
+ <xsl:when test="$numeration='upperroman'">I</xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected numeration: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ </xsl:message>
+ <xsl:value-of select="1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::listitem or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::listitem)] |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <xsl:choose>
+ <xsl:when test="@inheritnum='inherit' and ancestor::listitem[parent::orderedlist]">
+ <table border="0">
+ <xsl:call-template name="generate.class.attribute"/>
+ <col align="{$direction.align.start}" valign="top"/>
+ <tbody>
+ <xsl:apply-templates mode="orderedlist-table" select="listitem |comment()[preceding-sibling::listitem] |processing-instruction()[preceding-sibling::listitem]"/>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:if test="$start != '1'">
+ <xsl:attribute name="start">
+ <xsl:value-of select="$start"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$numeration != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$type"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@spacing='compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="listitem |comment()[preceding-sibling::listitem] |processing-instruction()[preceding-sibling::listitem]"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="orderedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem">
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:if test="@override">
+ <xsl:attribute name="value">
+ <xsl:value-of select="@override"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem" mode="orderedlist-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="." mode="item-number"/>
+ </td>
+ <td>
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="pi-presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:choose>
+ <xsl:when test="$pi-presentation != ''">
+ <xsl:value-of select="$pi-presentation"/>
+ </xsl:when>
+ <xsl:when test="$variablelist.as.table != 0">
+ <xsl:value-of select="'table'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'list'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbhtml_term-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::varlistentry or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::varlistentry)] |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <col align="{$direction.align.start}" valign="top">
+ <xsl:if test="$term-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$term-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ <tbody>
+ <xsl:apply-templates mode="varlist-table" select="varlistentry |comment()[preceding-sibling::varlistentry] |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::varlistentry or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::varlistentry)] |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <dl>
+ <xsl:apply-templates select="varlistentry |comment()[preceding-sibling::varlistentry] |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="variablelist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="listitem/simpara" priority="2">
+ <!-- If a listitem contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*) and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:choose>
+ <xsl:when test="@role and $para.propagates.style != 0">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry">
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="term"/>
+ </dt>
+ <dd>
+ <xsl:apply-templates select="listitem"/>
+ </dd>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="varlist-table">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_term-presentation">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="separator">
+ <xsl:call-template name="pi.dbhtml_term-separator">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="variablelist" count="varlistentry"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td>
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$presentation = 'bold'">
+ <strong>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </strong>
+ </xsl:when>
+ <xsl:when test="$presentation = 'italic'">
+ <em>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </em>
+ </xsl:when>
+ <xsl:when test="$presentation = 'bold-italic'">
+ <strong>
+ <em>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </em>
+ </strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </td>
+ <td>
+ <xsl:apply-templates select="listitem"/>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="varlistentry/term">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <xsl:value-of select="$variablelist.term.separator"/>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <br/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem">
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="simplelist">
+ <!-- with no type specified, the default is 'vert' -->
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <!-- if dbchoice PI exists, use that to determine the choice separator -->
+ <!-- (that is, equivalent of "and" or "or" in current locale), or literal -->
+ <!-- value of "choice" otherwise -->
+ <xsl:variable name="localized-choice-separator">
+ <xsl:choose>
+ <xsl:when test="processing-instruction('dbchoice')">
+ <xsl:call-template name="select.choice.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="member">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="position() = last() - 1">
+ <xsl:if test="$localized-choice-separator != ''">
+ <xsl:value-of select="$localized-choice-separator"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </span>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='horiz']">
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='vert']">
+ <xsl:call-template name="anchor"/>
+ <table border="0" summary="Simple list">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+
+ <xsl:if test="$cell &lt;= count($members)">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="(($cell - 1) div $cols) + 1"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell + $cols"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="rows" select="floor((count($members)+$cols - 1) div $cols)"/>
+
+ <xsl:if test="$cell &lt;= $rows">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="$cell"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="rows">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell+$rows"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="member">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="procedure">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:variable name="preamble" select="*[not(self::step or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::step)] |processing-instruction()[not(preceding-sibling::step)]"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="title">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:choose>
+ <xsl:when test="count(step) = 1">
+ <ul>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:apply-templates select="step |comment()[preceding-sibling::step] |processing-instruction()[preceding-sibling::step]"/>
+ </ul>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:attribute name="type">
+ <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="step |comment()[preceding-sibling::step] |processing-instruction()[preceding-sibling::step]"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="procedure/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="substeps">
+ <xsl:variable name="numeration">
+ <xsl:call-template name="procedure.step.numeration"/>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <ol type="{$numeration}">
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </ol>
+</xsl:template>
+
+<xsl:template match="step">
+ <li>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<xsl:template match="stepalternatives">
+ <xsl:call-template name="anchor"/>
+ <ul>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </ul>
+</xsl:template>
+
+<xsl:template match="step/title">
+ <p>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:apply-templates/>
+ </strong>
+ </p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="segmentedlist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$segmentedlist.as.table != 0">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist/title">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong>
+ <span>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:apply-templates/>
+ </span>
+ </strong>
+ </div>
+</xsl:template>
+
+<xsl:template match="segtitle">
+</xsl:template>
+
+<xsl:template match="segtitle" mode="segtitle-in-seg">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seglistitem">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="seg">
+ <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
+ <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
+ <xsl:variable name="segtitles" select="$seglist/segtitle"/>
+
+ <!--
+ Note: segtitle is only going to be the right thing in a well formed
+ SegmentedList. If there are too many Segs or too few SegTitles,
+ you'll get something odd...maybe an error
+ -->
+
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <strong>
+ <span class="segtitle">
+ <xsl:apply-templates select="$segtitles[$segnum=position()]" mode="segtitle-in-seg"/>
+ <xsl:text>: </xsl:text>
+ </span>
+ </strong>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist" mode="seglist-table">
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:apply-templates select="title"/>
+
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <thead>
+ <tr class="segtitle">
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="segtitle[1]"/>
+ <xsl:with-param name="rownum" select="1"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="segtitle" mode="seglist-table"/>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<xsl:template match="segtitle" mode="seglist-table">
+ <th><xsl:apply-templates/></th>
+</xsl:template>
+
+<xsl:template match="seglistitem" mode="seglist-table">
+ <xsl:variable name="seglinum">
+ <xsl:number from="segmentedlist" count="seglistitem"/>
+ </xsl:variable>
+
+ <tr>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum" select="$seglinum + 1"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="seglist-table"/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="seg" mode="seglist-table">
+ <td>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </td>
+</xsl:template>
+
+<xsl:template match="seg[1]" mode="seglist-table">
+ <td>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::seglistitem"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="calloutlist">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title|info/title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates select="*[not(self::callout or self::title or self::titleabbrev)] |comment()[not(preceding-sibling::callout)] |processing-instruction()[not(preceding-sibling::callout)]"/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <table border="0" summary="Callout list">
+ <xsl:apply-templates select="callout |comment()[preceding-sibling::callout] |processing-instruction()[preceding-sibling::callout]"/>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl compact="compact">
+ <xsl:apply-templates select="callout |comment()[preceding-sibling::callout] |processing-instruction()[preceding-sibling::callout]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="calloutlist/title">
+</xsl:template>
+
+<xsl:template match="callout">
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="calloutlist" count="callout"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td width="5%" valign="top" align="{$direction.align.start}">
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </p>
+ </td>
+ <td valign="top" align="{$direction.align.start}">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </dt>
+ <dd><xsl:apply-templates/></dd>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="callout/simpara" priority="2">
+ <!-- If a callout contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*) and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:choose>
+ <xsl:when test="@role and $para.propagates.style != 0">
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="common.html.attributes"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="callout.arearefs">
+ <xsl:param name="arearefs"/>
+ <xsl:if test="$arearefs!=''">
+ <xsl:choose>
+ <xsl:when test="substring-before($arearefs,' ')=''">
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="$arearefs"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="substring-before($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="substring-after($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="callout.arearef">
+ <xsl:param name="arearef"/>
+ <xsl:variable name="targets" select="key('id',$arearef)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$arearef"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target)=0">
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='co'">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="$arearef"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="callout-bug"/>
+ </a>
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='areaset'">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($target)='area'">
+ <xsl:choose>
+ <xsl:when test="$target/parent::areaset">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target/parent::areaset" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="orderedlist-starting-number">
+ <xsl:param name="list" select="."/>
+ <xsl:variable name="pi-start">
+ <xsl:call-template name="pi.dbhtml_start">
+ <xsl:with-param name="node" select="$list"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="output-orderedlist-starting-number">
+ <xsl:with-param name="list" select="$list"/>
+ <xsl:with-param name="pi-start" select="$pi-start"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl
new file mode 100644
index 0000000..0ae8055
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: maketoc.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk.xsl"/>
+
+<xsl:output method="xml" indent="no" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+<xsl:param name="toc.list.type" select="'tocentry'"/>
+
+<!-- refentry in autotoc.xsl does not use subtoc, so must
+ handle it explicitly here. -->
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+<xsl:template name="subtoc">
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+ <xsl:variable name="filename">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:if test="$chunk != 0">
+ <xsl:call-template name="indent-spaces"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <tocentry linkend="{$id}">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:text>filename="</xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:text>
+</xsl:text>
+ <xsl:apply-templates mode="toc" select="$nodes"/>
+ <xsl:call-template name="indent-spaces"/>
+ </tocentry>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="indent-spaces">
+ <xsl:param name="node" select="."/>
+ <xsl:text> </xsl:text>
+ <xsl:if test="$node/parent::*">
+ <xsl:call-template name="indent-spaces">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/" priority="-1">
+ <xsl:text>
+</xsl:text>
+ <toc role="chunk-toc">
+ <xsl:text>
+</xsl:text>
+ <xsl:apply-templates select="/" mode="toc"/>
+ </toc>
+ <xsl:text>
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl
new file mode 100644
index 0000000..26b51d0
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: manifest.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- OBSOLETE. The templates from this file were moved to -->
+<!-- chunk-common.xsl and chunk-code.xsl. -->
+<!-- ==================================================================== -->
+
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl
new file mode 100644
index 0000000..b2cac2d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="mml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: math.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="inlineequation">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="alt">
+</xsl:template>
+
+<xsl:template match="mathphrase">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- "Support" for MathML -->
+
+<xsl:template match="mml:*">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- Support for TeX math in alt -->
+
+<xsl:template match="*" mode="collect.tex.math">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$tex.math.file"/>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$tex.math.in.alt = 'plain'">
+ <xsl:call-template name="tex.math.plain.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.plain"/>
+ <xsl:call-template name="tex.math.plain.tail"/>
+ </xsl:when>
+ <xsl:when test="$tex.math.in.alt = 'latex'">
+ <xsl:call-template name="tex.math.latex.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.latex"/>
+ <xsl:call-template name="tex.math.latex.tail"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Unsupported TeX math notation:
+ <xsl:value-of select="$tex.math.in.alt"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- PlainTeX -->
+
+<xsl:template name="tex.math.plain.head">
+ <xsl:text>\nopagenumbers
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.plain.tail">
+ <xsl:text>\bye
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.plain"/>
+
+<!-- LaTeX -->
+
+<xsl:template name="tex.math.latex.head">
+ <xsl:text>\documentclass{article}
+</xsl:text>
+ <xsl:text>\pagestyle{empty}
+</xsl:text>
+ <xsl:text>\begin{document}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.latex.tail">
+ <xsl:text>\end{document}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>}
+</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.latex"/>
+
+<!-- Extracting image filename from mediaobject and graphic elements -->
+
+<xsl:template name="select.mediaobject.filename">
+ <xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/>
+
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$mediaobject.index != ''">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="$olist[position() = $mediaobject.index]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="tex.math.output.delims">
+ <xsl:variable name="pi.delims">
+ <xsl:call-template name="pi.dbtex_delims">
+ <xsl:with-param name="node" select="descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="result">
+ <xsl:choose>
+ <xsl:when test="$pi.delims = 'no'">0</xsl:when>
+ <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$result"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl
new file mode 100644
index 0000000..e727bf1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="http://xml.apache.org/xalan/redirect" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.1" exclude-result-prefixes="doc" extension-element-prefixes="saxon redirect lxslt">
+
+<!-- ********************************************************************
+ $Id: oldchunker.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with Saxon and Xalan; for XT use xtchunker.xsl -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="default.encoding" select="'ISO-8859-1'" doc:type="string"/>
+
+<doc:param xmlns="" name="default.encoding">
+<refpurpose xmlns="http://www.w3.org/1999/xhtml">Encoding used in generated HTML pages</refpurpose>
+<refdescription xmlns="http://www.w3.org/1999/xhtml">
+<para>This encoding is used in files generated by chunking stylesheet. Currently
+only Saxon is able to change output encoding.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'" doc:type="string"/>
+
+<doc:param xmlns="" name="saxon.character.representation">
+<refpurpose xmlns="http://www.w3.org/1999/xhtml">Saxon character representation used in generated HTML pages</refpurpose>
+<refdescription xmlns="http://www.w3.org/1999/xhtml">
+<para>This character representation is used in files generated by chunking stylesheet. If
+you want to suppress entity references for characters with direct representation
+in default.encoding, set this parameter to value <literal>native</literal>.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Chunking isn't supported with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="doctype-public" select="''"/>
+ <xsl:param name="doctype-system" select="''"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}" href="{$filename}" method="{$method}" encoding="{$encoding}" indent="{$indent}" doctype-public="{$doctype-public}" doctype-system="{$doctype-system}" saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl
new file mode 100644
index 0000000..15a04e1
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl
new file mode 100644
index 0000000..bebab47
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 8552 2009-12-07 17:45:26Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="abstract.notitle.enabled" select="0"/>
+<xsl:param name="admon.graphics.extension">.png</xsl:param>
+<xsl:param name="admon.graphics" select="0"/>
+<xsl:param name="admon.graphics.path">images/</xsl:param>
+<xsl:param name="admon.style">
+ <xsl:value-of select="concat('margin-', $direction.align.start, ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"/>
+</xsl:param>
+<xsl:param name="admon.textlabel" select="1"/>
+<xsl:param name="annotate.toc" select="1"/>
+<xsl:param name="annotation.css">
+/* ======================================================================
+ Annotations
+*/
+
+div.annotation-list { visibility: hidden;
+ }
+
+div.annotation-nocss { position: absolute;
+ visibility: hidden;
+ }
+
+div.annotation-popup { position: absolute;
+ z-index: 4;
+ visibility: hidden;
+ padding: 0px;
+ margin: 2px;
+ border-style: solid;
+ border-width: 1px;
+ width: 200px;
+ background-color: white;
+ }
+
+div.annotation-title { padding: 1px;
+ font-weight: bold;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ color: white;
+ background-color: black;
+ }
+
+div.annotation-body { padding: 2px;
+ }
+
+div.annotation-body p { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+div.annotation-close { position: absolute;
+ top: 2px;
+ right: 2px;
+ }
+</xsl:param>
+<xsl:param name="annotation.graphic.close">
+http://docbook.sourceforge.net/release/images/annot-close.png</xsl:param>
+<xsl:param name="annotation.graphic.open">http://docbook.sourceforge.net/release/images/annot-open.png</xsl:param>
+
+<xsl:param name="annotation.js">
+<xsl:text>http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js</xsl:text></xsl:param>
+
+<xsl:param name="annotation.support" select="0"/>
+<xsl:param name="appendix.autolabel">A</xsl:param>
+<xsl:param name="author.othername.in.middle" select="1"/>
+<xsl:param name="autotoc.label.in.hyperlink" select="1"/>
+<xsl:param name="autotoc.label.separator">. </xsl:param>
+<xsl:param name="base.dir"/>
+<xsl:param name="biblioentry.item.separator">. </xsl:param>
+<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param>
+
+<xsl:param name="bibliography.numbered" select="0"/>
+<xsl:param name="bibliography.style">normal</xsl:param>
+<xsl:param name="blurb.on.titlepage.enabled" select="0"/>
+<xsl:param name="bridgehead.in.toc" select="0"/>
+<xsl:param name="callout.defaultcolumn">60</xsl:param>
+<xsl:param name="callout.graphics.extension">.png</xsl:param>
+
+<xsl:param name="callout.graphics" select="1"/>
+<xsl:param name="callout.graphics.number.limit">15</xsl:param>
+
+<xsl:param name="callout.graphics.path">images/callouts/</xsl:param>
+<xsl:param name="callout.list.table" select="1"/>
+<xsl:param name="callout.unicode" select="0"/>
+<xsl:param name="callout.unicode.number.limit">10</xsl:param>
+<xsl:param name="callout.unicode.start.character">10102</xsl:param>
+<xsl:param name="callouts.extension" select="1"/>
+<xsl:param name="chapter.autolabel" select="1"/>
+<xsl:param name="chunk.append"/>
+<xsl:param name="chunk.first.sections" select="0"/>
+<xsl:param name="chunk.quietly" select="0"/>
+<xsl:param name="chunk.section.depth" select="1"/>
+<xsl:param name="chunk.separate.lots" select="0"/>
+<xsl:param name="chunk.toc"/>
+<xsl:param name="chunk.tocs.and.lots" select="0"/>
+<xsl:param name="chunk.tocs.and.lots.has.title" select="1"/>
+<xsl:param name="citerefentry.link" select="0"/>
+<xsl:param name="collect.xref.targets">no</xsl:param>
+<xsl:param name="component.label.includes.part.label" select="0"/>
+<xsl:param name="contrib.inline.enabled">1</xsl:param>
+<xsl:param name="css.decoration" select="1"/>
+<xsl:param name="current.docid"/>
+<xsl:param name="custom.css.source"/>
+<xsl:param name="default.float.class">
+ <xsl:choose>
+ <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when>
+ <xsl:otherwise>before</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="default.image.width"/>
+<xsl:param name="default.table.frame">all</xsl:param>
+<xsl:param name="default.table.width"/>
+<xsl:param name="docbook.css.link" select="1"/>
+<xsl:param name="docbook.css.source">docbook.css.xml</xsl:param>
+<xsl:param name="draft.mode">no</xsl:param>
+<xsl:param name="draft.watermark.image">images/draft.png</xsl:param>
+<xsl:param name="ebnf.assignment">
+<code>::=</code>
+</xsl:param>
+
+<xsl:param name="ebnf.statement.terminator"/>
+
+<xsl:param name="ebnf.table.bgcolor">#F5DCB3</xsl:param>
+<xsl:param name="ebnf.table.border" select="1"/>
+<xsl:param name="eclipse.autolabel" select="0"/>
+<xsl:param name="eclipse.plugin.id">com.example.help</xsl:param>
+<xsl:param name="eclipse.plugin.name">DocBook Online Help Sample</xsl:param>
+<xsl:param name="eclipse.plugin.provider">Example provider</xsl:param>
+<xsl:param name="editedby.enabled">1</xsl:param>
+<xsl:param name="email.delimiters.enabled" select="1"/>
+<xsl:param name="emphasis.propagates.style" select="1"/>
+<xsl:param name="entry.propagates.style" select="1"/>
+<xsl:param name="exsl.node.set.available">
+ <xsl:choose>
+ <xsl:when xmlns:exsl="http://exslt.org/common" exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="firstterm.only.link" select="0"/>
+<xsl:param name="footer.rule" select="1"/>
+<xsl:param name="footnote.number.format">1</xsl:param>
+<xsl:param name="footnote.number.symbols"/>
+<xsl:param name="formal.procedures" select="1"/>
+<xsl:param name="formal.title.placement">
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+</xsl:param>
+<xsl:param name="funcsynopsis.decoration" select="1"/>
+<xsl:param name="funcsynopsis.style">kr</xsl:param>
+<xsl:param name="function.parens" select="0"/>
+<xsl:param name="generate.css.header" select="0"/>
+<xsl:param name="generate.id.attributes" select="0"/>
+<xsl:param name="generate.index" select="1"/>
+<xsl:param name="generate.legalnotice.link" select="0"/>
+<xsl:param name="generate.manifest" select="0"/>
+<xsl:param name="generate.meta.abstract" select="1"/>
+<xsl:param name="generate.revhistory.link" select="0"/>
+<xsl:param name="generate.section.toc.level" select="0"/>
+<xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+</xsl:param>
+
+<xsl:param name="glossary.collection"/>
+<xsl:param name="glossary.sort" select="0"/>
+<xsl:param name="glossentry.show.acronym">no</xsl:param>
+<xsl:param name="glossterm.auto.link" select="0"/>
+<xsl:param name="graphic.default.extension"/>
+<xsl:param name="graphicsize.extension" select="1"/>
+<xsl:param name="graphicsize.use.img.src.path" select="0"/>
+<xsl:param name="header.rule" select="1"/>
+<xsl:param name="highlight.default.language"/>
+<xsl:param name="highlight.source" select="0"/>
+<xsl:param name="highlight.xslthl.config"/>
+<xsl:param name="html.append"/>
+<xsl:param name="html.base"/>
+<xsl:param name="html.cellpadding"/>
+<xsl:param name="html.cellspacing"/>
+<xsl:param name="html.cleanup" select="1"/>
+<xsl:param name="html.ext">.html</xsl:param>
+<xsl:param name="html.extra.head.links" select="0"/>
+<xsl:param name="html.head.legalnotice.link.multiple" select="1"/>
+<xsl:param name="html.head.legalnotice.link.types">copyright</xsl:param>
+<xsl:param name="html.longdesc" select="1"/>
+<xsl:param name="html.longdesc.link" select="$html.longdesc"/>
+<xsl:param name="html.stylesheet"/>
+<xsl:param name="html.stylesheet.type">text/css</xsl:param>
+<xsl:param name="htmlhelp.alias.file">alias.h</xsl:param>
+<xsl:param name="htmlhelp.autolabel" select="0"/>
+<xsl:param name="htmlhelp.button.back" select="1"/>
+<xsl:param name="htmlhelp.button.forward" select="0"/>
+<xsl:param name="htmlhelp.button.hideshow" select="1"/>
+<xsl:param name="htmlhelp.button.home" select="0"/>
+<xsl:param name="htmlhelp.button.home.url"/>
+<xsl:param name="htmlhelp.button.jump1" select="0"/>
+<xsl:param name="htmlhelp.button.jump1.title">User1</xsl:param>
+<xsl:param name="htmlhelp.button.jump1.url"/>
+<xsl:param name="htmlhelp.button.jump2" select="0"/>
+<xsl:param name="htmlhelp.button.jump2.title">User2</xsl:param>
+<xsl:param name="htmlhelp.button.jump2.url"/>
+<xsl:param name="htmlhelp.button.locate" select="0"/>
+<xsl:param name="htmlhelp.button.next" select="1"/>
+<xsl:param name="htmlhelp.button.options" select="1"/>
+<xsl:param name="htmlhelp.button.prev" select="1"/>
+<xsl:param name="htmlhelp.button.print" select="1"/>
+<xsl:param name="htmlhelp.button.refresh" select="0"/>
+<xsl:param name="htmlhelp.button.stop" select="0"/>
+<xsl:param name="htmlhelp.button.zoom" select="0"/>
+<xsl:param name="htmlhelp.chm">htmlhelp.chm</xsl:param>
+<xsl:param name="htmlhelp.default.topic"/>
+<xsl:param name="htmlhelp.display.progress" select="1"/>
+<xsl:param name="htmlhelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="htmlhelp.enhanced.decompilation" select="0"/>
+<xsl:param name="htmlhelp.enumerate.images" select="0"/>
+<xsl:param name="htmlhelp.force.map.and.alias" select="0"/>
+<xsl:param name="htmlhelp.hhc.binary" select="1"/>
+<xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"/>
+<xsl:param name="htmlhelp.hhc">toc.hhc</xsl:param>
+<xsl:param name="htmlhelp.hhc.section.depth">5</xsl:param>
+<xsl:param name="htmlhelp.hhc.show.root" select="1"/>
+<xsl:param name="htmlhelp.hhc.width"/>
+<xsl:param name="htmlhelp.hhk">index.hhk</xsl:param>
+<xsl:param name="htmlhelp.hhp">htmlhelp.hhp</xsl:param>
+<xsl:param name="htmlhelp.hhp.tail"/>
+<xsl:param name="htmlhelp.hhp.window">Main</xsl:param>
+<xsl:param name="htmlhelp.hhp.windows"/>
+<xsl:param name="htmlhelp.map.file">context.h</xsl:param>
+<xsl:param name="htmlhelp.only" select="0"/>
+<xsl:param name="htmlhelp.remember.window.position" select="0"/>
+<xsl:param name="htmlhelp.show.advanced.search" select="0"/>
+<xsl:param name="htmlhelp.show.favorities" select="0"/>
+<xsl:param name="htmlhelp.show.menu" select="0"/>
+<xsl:param name="htmlhelp.show.toolbar.text" select="1"/>
+<xsl:param name="htmlhelp.title"/>
+<xsl:param name="htmlhelp.use.hhk" select="0"/>
+<xsl:param name="htmlhelp.window.geometry"/>
+<xsl:param name="id.warnings" select="0"/>
+<xsl:param name="ignore.image.scaling" select="0"/>
+<xsl:param name="img.src.path"/>
+<xsl:param name="index.links.to.section" select="1"/>
+<xsl:param name="index.method">basic</xsl:param>
+<xsl:param name="index.number.separator"/>
+<xsl:param name="index.on.role" select="0"/>
+<xsl:param name="index.on.type" select="0"/>
+<xsl:param name="index.prefer.titleabbrev" select="0"/>
+<xsl:param name="index.range.separator"/>
+<xsl:param name="index.term.separator"/>
+<xsl:param name="inherit.keywords" select="1"/>
+<xsl:param name="insert.olink.page.number">no</xsl:param>
+<xsl:param name="insert.olink.pdf.frag" select="0"/>
+<xsl:param name="insert.xref.page.number">no</xsl:param>
+<xsl:param name="javahelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="keep.relative.image.uris" select="1"/>
+
+<xsl:param name="l10n.gentext.default.language">en</xsl:param>
+<xsl:param name="l10n.gentext.language"/>
+<xsl:param name="l10n.gentext.use.xref.language" select="0"/>
+<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/>
+<xsl:param name="label.from.part" select="0"/>
+<xsl:param name="linenumbering.everyNth">5</xsl:param>
+<xsl:param name="linenumbering.extension" select="1"/>
+<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="linenumbering.width">3</xsl:param>
+<xsl:param name="link.mailto.url"/>
+<xsl:param name="make.clean.html" select="0"/>
+<xsl:param name="make.graphic.viewport" select="1"/>
+<xsl:param name="make.single.year.ranges" select="0"/>
+<xsl:param name="make.valid.html" select="1"/>
+<xsl:param name="make.year.ranges" select="0"/>
+ <xsl:param name="manifest">HTML.manifest</xsl:param>
+
+<xsl:param name="manifest.in.base.dir" select="0"/>
+<xsl:param name="manual.toc"/>
+<xsl:param name="menuchoice.menu.separator"> &#8594; </xsl:param>
+<xsl:param name="menuchoice.separator">+</xsl:param>
+<xsl:param name="navig.graphics.extension">.gif</xsl:param>
+<xsl:param name="navig.graphics" select="0"/>
+<xsl:param name="navig.graphics.path">images/</xsl:param>
+<xsl:param name="navig.showtitles">1</xsl:param>
+<xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"/>
+<xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"/>
+<xsl:param name="nominal.table.width">6in</xsl:param>
+<xsl:param name="olink.base.uri"/>
+<xsl:param name="olink.debug" select="0"/>
+<xsl:param name="olink.doctitle">no</xsl:param>
+<xsl:param name="olink.fragid">fragid=</xsl:param>
+<xsl:param name="olink.lang.fallback.sequence"/>
+<xsl:param name="olink.outline.ext">.olink</xsl:param>
+<xsl:attribute-set name="olink.properties">
+ <xsl:attribute name="show-destination">replace</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="olink.pubid">pubid</xsl:param>
+ <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param>
+<xsl:param name="olink.sysid">sysid</xsl:param>
+<xsl:param name="othercredit.like.author.enabled">0</xsl:param>
+<xsl:param name="para.propagates.style" select="1"/>
+<xsl:param name="part.autolabel">I</xsl:param>
+<xsl:param name="phrase.propagates.style" select="1"/>
+<xsl:param name="pixels.per.inch">90</xsl:param>
+<xsl:param name="points.per.em">10</xsl:param>
+<xsl:param name="preface.autolabel" select="0"/>
+<xsl:param name="prefer.internal.olink" select="0"/>
+<xsl:param name="preferred.mediaobject.role"/>
+<xsl:param name="process.empty.source.toc" select="0"/>
+<xsl:param name="process.source.toc" select="0"/>
+<xsl:param name="profile.arch"/>
+<xsl:param name="profile.attribute"/>
+<xsl:param name="profile.audience"/>
+<xsl:param name="profile.condition"/>
+<xsl:param name="profile.conformance"/>
+<xsl:param name="profile.lang"/>
+<xsl:param name="profile.os"/>
+<xsl:param name="profile.revision"/>
+<xsl:param name="profile.revisionflag"/>
+<xsl:param name="profile.role"/>
+<xsl:param name="profile.security"/>
+<xsl:param name="profile.separator">;</xsl:param>
+<xsl:param name="profile.status"/>
+<xsl:param name="profile.userlevel"/>
+<xsl:param name="profile.value"/>
+<xsl:param name="profile.vendor"/>
+<xsl:param name="profile.wordsize"/>
+<xsl:param name="punct.honorific">.</xsl:param>
+<xsl:param name="qanda.defaultlabel">number</xsl:param>
+<xsl:param name="qanda.in.toc" select="0"/>
+<xsl:param name="qanda.inherit.numeration" select="1"/>
+<xsl:param name="qanda.nested.in.toc" select="0"/>
+<xsl:param name="qandadiv.autolabel" select="1"/>
+<xsl:param name="refclass.suppress" select="0"/>
+<xsl:param name="refentry.generate.name" select="1"/>
+<xsl:param name="refentry.generate.title" select="0"/>
+<xsl:param name="refentry.separator" select="1"/>
+<xsl:param name="refentry.xref.manvolnum" select="1"/>
+ <xsl:param name="reference.autolabel">I</xsl:param>
+<xsl:param name="root.filename">index</xsl:param>
+<xsl:param name="rootid"/>
+<xsl:param name="runinhead.default.title.end.punct">.</xsl:param>
+<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param>
+<xsl:param name="section.autolabel" select="0"/>
+<xsl:param name="section.autolabel.max.depth">8</xsl:param>
+<xsl:param name="section.label.includes.component.label" select="0"/>
+<xsl:param name="segmentedlist.as.table" select="0"/>
+<xsl:param name="shade.verbatim" select="0"/>
+<xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="bgcolor">#E0E0E0</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:param name="show.comments" select="1"/>
+<xsl:param name="show.revisionflag" select="0"/>
+<xsl:param name="simplesect.in.toc" select="0"/>
+<xsl:param name="spacing.paras" select="0"/>
+<xsl:param name="suppress.footer.navigation">0</xsl:param>
+<xsl:param name="suppress.header.navigation" select="0"/>
+<xsl:param name="suppress.navigation" select="0"/>
+<xsl:param name="table.borders.with.css" select="0"/>
+<xsl:param name="table.cell.border.color"/>
+
+<xsl:param name="table.cell.border.style">solid</xsl:param>
+<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param>
+<xsl:param name="table.footnote.number.format">a</xsl:param>
+<xsl:param name="table.footnote.number.symbols"/>
+<xsl:param name="table.frame.border.color"/>
+
+<xsl:param name="table.frame.border.style">solid</xsl:param>
+<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
+<xsl:param name="tablecolumns.extension" select="1"/>
+ <xsl:param name="target.database.document">olinkdb.xml</xsl:param>
+<xsl:param name="targets.filename">target.db</xsl:param>
+<xsl:param name="tex.math.delims" select="1"/>
+<xsl:param name="tex.math.file">tex-math-equations.tex</xsl:param>
+<xsl:param name="tex.math.in.alt"/>
+<xsl:param name="textdata.default.encoding"/>
+ <xsl:param name="textinsert.extension" select="1"/>
+<xsl:param name="toc.list.type">dl</xsl:param>
+<xsl:param name="toc.max.depth">8</xsl:param>
+<xsl:param name="toc.section.depth">2</xsl:param>
+<xsl:param name="ulink.target">_top</xsl:param>
+<xsl:param name="use.embed.for.svg" select="0"/>
+<xsl:param name="use.extensions" select="0"/>
+<xsl:param name="use.id.as.filename" select="0"/>
+<xsl:param name="use.local.olink.style" select="0"/>
+<xsl:param name="use.role.as.xrefstyle" select="1"/>
+<xsl:param name="use.role.for.mediaobject" select="1"/>
+<xsl:param name="use.svg" select="1"/>
+<xsl:param name="variablelist.as.table" select="0"/>
+<xsl:param name="variablelist.term.break.after">0</xsl:param>
+<xsl:param name="variablelist.term.separator">, </xsl:param>
+<xsl:param name="writing.mode">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">writing-mode</xsl:with-param>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="target" select="/*[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:param>
+<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.label-title.separator">: </xsl:param>
+<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.with.number.and.title" select="1"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl
new file mode 100644
index 0000000..28f9efe
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl
@@ -0,0 +1,1203 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
+
+<!-- ********************************************************************
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info xmlns="http://www.w3.org/1999/xhtml"><title>HTML Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $
+ </releaseinfo>
+ </info>
+ <partintro xmlns="http://www.w3.org/1999/xhtml" xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for HTML output.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific &#8220;exceptions&#8221; to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it&#8217;s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<doc:pi xmlns="" name="dbhtml_background-color">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets background color for an image</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml background-color="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="BGcolor.html">Background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_background-color">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'background-color'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_bgcolor">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets background color on a CALS table row or table cell</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml bgcolor</tag> PI as child of a CALS table row
+ or cell to set a background color for that table row or cell.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="BGtableColor.html#CellBGColor">Cell background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_bgcolor">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'bgcolor'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_cellpadding">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies cellpadding in CALS table or qandaset output</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml cellpadding</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellpadding</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml cellpadding="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>cellpadding="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellpadding</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>html.cellpadding</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellpadding">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellpadding'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_cellspacing">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies cellspacing in CALS table or qandaset output</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml cellspacing</tag> PI as a child of a
+ CALS <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellspacing</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml cellspacing="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>cellspacing="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellspacing</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>html.cellspacing</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="CellSpacing.html">Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellspacing">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellspacing'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_class">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Set value of the class attribute for a CALS table row</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml class</tag> PI as a child of a
+ <tag>row</tag> to specify a <literal>class</literal>
+ attribute and value in the HTML output for that row.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml class="<replaceable>name</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>class="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies the class name</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="CSSTableCells.html">Table styles in HTML output</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_class">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'class'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_dir">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies a directory name in which to write files</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml dir</tag> PI
+ as a child of a chunk source to cause the output of that
+ chunk to be written to the specified directory; also, use it
+ as a child of a <tag>mediaobject</tag> to specify a
+ directory into which any long-description files for that
+ <tag>mediaobject</tag> will be written.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml dir="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>dir="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname for the directory</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>base.dir</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Chunking.html#dbhtmlDirPI">dbhtml dir processing instruction</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_dir">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'dir'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_filename">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies a filename for a chunk</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml filename</tag>
+ PI as a child of a chunk source to specify a filename for
+ the output file for that chunk.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml filename="<replaceable>filename</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>filename="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the filename for the file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>use.id.as.filename</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Chunking.html#DbhtmlFilenames">dbhtml filenames</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_filename">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'filename'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_funcsynopsis-style">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies presentation style for a funcsynopsis</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml funcsynopsis-style</tag> PI as a child of
+ a <tag>funcsynopsis</tag> or anywhere within a funcsynopsis
+ to control the presentation style for output of all
+ <tag>funcprototype</tag> instances within that funcsynopsis.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in K&amp;R style</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+ <para>Displays <tag>funcprototype</tag> output in ANSI style</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>funcsynopsis.style</parameter></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'funcsynopsis-style'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_img.src.path">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies a path to the location of an image file</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml img.src.path</tag> PI before or
+ after an image (<tag>graphic</tag>,
+ <tag>inlinegraphic</tag>, <tag>imagedata</tag>, or
+ <tag>videodata</tag> element) as a sibling to the element,
+ to specify a path to the location of the image; in HTML
+ output, the value specified for the
+ <code>img.src.path</code> attribute is prepended to the
+ filename.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml img.src.path="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>img.src.path="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname to prepend to the name of the image file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>img.src.path</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="GraphicsLocations.html#UsingFileref">Using fileref</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_img.src.path">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'img.src.path'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_label-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the label width for a qandaset</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml label-width</tag> PI as a child of a
+ <tag>qandaset</tag> to specify the width of labels.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml label-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the label width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_label-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'label-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_linenumbering.everyNth">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies interval for line numbers in verbatims</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.everyNth</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the interval at which lines are numbered.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+ <para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>linenumbering.everyNth</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_linenumbering.separator">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies separator text for line numbers in verbatims</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.separator</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the separator text output between the line numbers and content.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>linenumbering.separator</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_linenumbering.width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies width for line numbers in verbatims</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.width</tag> PI as a child
+ of a &#8220;verbatim&#8221; element &#8211; <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> &#8212; to specify
+ the width set aside for line numbers.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the width (inluding units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>linenumbering.width</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="AnnotateListing.html#LineNumbering">Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_list-presentation">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml list-presentation="list"|"table"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+ <para>Displays the list as a list</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+ <para>Displays the list as a table</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <itemizedlist>
+ <listitem>
+ <para><parameter>variablelist.as.table</parameter></para>
+ </listitem>
+ <listitem>
+ <para><parameter>segmentedlist.as.table</parameter></para>
+ </listitem>
+ </itemizedlist>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_list-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the width of a variablelist or simplelist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml list-width</tag> PI as a child of a
+ <tag>variablelist</tag> or a <tag>simplelist</tag> presented
+ as a table, to specify the output width.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml list-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the output width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_row-height">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the height for a CALS table row</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml row-height="<replaceable>height</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+ <para>Specifies the row height (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="RowHeight.html">Row height</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_row-height">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'row-height'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_start">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">(obsolete) Sets the starting number on an ordered list</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para><emphasis>This PI is obsolete</emphasis>. The intent of
+ this PI was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml start="<replaceable>character</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+ <para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Orderedlists.html#ListStartNum">List starting number</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_start">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'start'"/>
+ </xsl:call-template>
+</xsl:template>
+
+ <doc:pi xmlns="" name="dbhtml_stop-chunking">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Do not chunk any descendants of this element.</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages:
+<programlisting>&lt;section&gt;
+&lt;title&gt;Configuring pencil&lt;/title&gt;
+&lt;?dbhtml stop-chunking?&gt;
+
+...
+
+&lt;/section&gt;</programlisting>
+</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml stop-chunking</tag></synopsis>
+ </refsynopsisdiv>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Chunking.html">Chunking into multiple HTML files</link></para>
+ </refsee>
+ </doc:pi>
+ <!-- The code that handles the stop-chunking pi is in chunk-common.xsl -->
+
+<doc:pi xmlns="" name="dbhtml_table-summary">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml table-summary</tag> PI as a child of
+ a CALS <tag>table</tag>, <tag>variablelist</tag>,
+ <tag>segmentedlist</tag>, or <tag>qandaset</tag> to specify
+ the text for the HTML <literal>summary</literal> attribute
+ in the output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml table-summary="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>table-summary="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the summary text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link>,
+ <link role="tcg" xlink:href="TableSummary.html">Table summary text</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-summary">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-summary'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_table-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the width for a CALS table</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml table-width</tag> PI as a child of a
+ CALS <tag>table</tag> to specify the width of the table in
+ output.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml table-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the table width (including units or as a percentage)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>default.table.width</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Tables.html#TableWidth">Table width</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_term-presentation">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets character formatting for terms in a variablelist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml term-presentation</tag> PI as a child
+ of a <tag>variablelist</tag> to set character formatting for
+ the <tag>term</tag> output of the list.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml term-presentation="bold"|"italic"|"bold-italic"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>term-presentation="<replaceable>bold</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in italic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>bold-italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold-italic</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_term-separator">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies separator text among terms in a varlistentry</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml term-separator</tag> PI as a child
+ of a <tag>variablelist</tag> to specify the separator text
+ among <tag>term</tag> instances.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml term-separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>term-separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>variablelist.term.separator</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_term-width">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies the term width for a variablelist</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml term-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the term width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="Variablelists.html#VarListFormatting">Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml_toc">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Specifies whether a TOC should be generated for a qandaset</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml toc="0"|"1"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+ <para>If zero, no TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+ <para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="QandAtoc.html">Q and A list of questions</link>,
+ <link role="tcg" xlink:href="QandAformat.html">Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_toc">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'toc'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbcmdlist">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Generates a hyperlinked list of commands</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbcmdlist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>cmdsynopsis</tag> instances; a hyperlinked navigational
+ &#8220;command list&#8221; will be generated at the top of output for that
+ element, enabling users to quickly jump
+ to each command synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbcmdlist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbcmdlist">
+ <xsl:variable name="cmdsynopses" select="..//cmdsynopsis"/>
+ <xsl:if test="count($cmdsynopses)&lt;1">
+ <xsl:message><xsl:text>No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbfunclist">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Generates a hyperlinked list of functions</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbfunclist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>funcsynopsis</tag> instances; a hyperlinked
+ navigational &#8220;function list&#8221; will be generated at the top of
+ output for that element, enabling users to quickly
+ jump to to each function synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbfunclist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfunclist">
+ <xsl:variable name="funcsynopses" select="..//funcsynopsis"/>
+ <xsl:if test="count($funcsynopses)&lt;1">
+ <xsl:message><xsl:text>No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi xmlns="" name="dbhtml-include_href">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Copies an external well-formed HTML/XML file into current doc</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhtml-include href</tag> PI anywhere in a
+ document to cause the contents of the file referenced by the
+ <code>href</code> pseudo-attribute to be copied/inserted &#8220;as
+ is&#8221; into your HTML output at the point in document order
+ where the PI occurs in the source.</para>
+ <note>
+ <para>The referenced file may contain plain text (as long as
+ it is &#8220;wrapped&#8221; in an <tag>html</tag> element &#8212; see the
+ note below) or markup in any arbitrary vocabulary,
+ including HTML &#8212; but it must conform to XML
+ well-formedness constraints (because the feature in XSLT
+ 1.0 for opening external files, the
+ <function>document()</function> function, can only handle
+ files that meet XML well-formedness constraints).</para>
+ <para>Among other things, XML well-formedness constraints
+ require a document to have <emphasis>a single root
+ element</emphasis>. So if the content you want to
+ include is plain text or is markup that does
+ <emphasis>not</emphasis> have a single root element,
+ <emphasis role="strong">wrap the content in an
+ <tag>html</tag> element</emphasis>. The stylesheets will
+ strip out that surrounding <tag>html</tag> &#8220;wrapper&#8221; when
+ they find it, leaving just the content you want to
+ insert.</para>
+ </note>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhtml-include href="<replaceable>URI</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>href="<replaceable>URI</replaceable>"</term>
+ <listitem>
+ <para>Specifies the URI for the file to include; the URI
+ can be, for example, a remote <literal>http:</literal>
+ URI, or a local filesystem <literal>file:</literal>
+ URI</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="params">
+ <para><parameter>textinsert.extension</parameter></para>
+ </refsee>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="InsertExtHtml.html">Inserting external HTML code</link>,
+ <link role="tcg" xlink:href="ExternalCode.html">External code files</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml-include">
+ <xsl:param name="href">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">href</xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <xsl:variable name="content" select="document($href,/)"/>
+ <xsl:choose>
+ <xsl:when test="$content/*">
+ <xsl:choose>
+ <xsl:when test="$content/*[1][self::html]">
+ <!-- include just the children of html wrapper -->
+ <xsl:copy-of select="$content/*[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction </xsl:text>
+ <xsl:text>href has no content.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction has </xsl:text>
+ <xsl:text>missing or empty href value.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- There are two templates matching this PI in htmlhelp-common.xsl -->
+<doc:pi xmlns="" name="dbhh">
+ <refpurpose xmlns="http://www.w3.org/1999/xhtml">Sets topic name and topic id for context-sensitive HTML Help</refpurpose>
+ <refdescription xmlns="http://www.w3.org/1999/xhtml">
+ <para>Use the <tag class="xmlpi">dbhh</tag> PI as a child of components
+ that should be used as targets for context-sensitive help requests.</para>
+ </refdescription>
+ <refsynopsisdiv xmlns="http://www.w3.org/1999/xhtml">
+ <synopsis><tag class="xmlpi">dbhh topicname="<replaceable>name</replaceable>" topicid="<replaceable>id</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter xmlns="http://www.w3.org/1999/xhtml">
+ <variablelist>
+ <varlistentry><term>topicname="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique string constant that identifies a help topic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>topicid="<replaceable>id</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique integer value for the <literal>topicname</literal> string</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee xmlns="http://www.w3.org/1999/xhtml" role="tcg">
+ <para><link role="tcg" xlink:href="HtmlHelp.html#HHContextHelp">Context-sensitive help</link></para>
+ </refsee>
+</doc:pi>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-attribute">
+ <!-- * dbhtml-attribute is an interal utility template for retrieving -->
+ <!-- * pseudo-attributes/parameters from PIs -->
+ <xsl:param name="pis" select="processing-instruction('dbhtml')"/>
+ <xsl:param name="attribute">filename</xsl:param>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$pis"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction()">
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbcmdlist')">
+ <xsl:call-template name="pi.dbcmdlist"/>
+</xsl:template>
+<xsl:template name="process.cmdsynopsis.list">
+ <xsl:param name="cmdsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($cmdsynopses)"/>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$cmdsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbfunclist')">
+ <xsl:call-template name="pi.dbfunclist"/>
+</xsl:template>
+<xsl:template name="process.funcsynopsis.list">
+ <xsl:param name="funcsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($funcsynopses)"/>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$funcsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbhtml-include')">
+ <xsl:call-template name="pi.dbhtml-include"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl
new file mode 100644
index 0000000..05c10c6
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl
@@ -0,0 +1,617 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="exsl cf ng db exslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 8596 2010-03-20 04:36:45Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)&gt;0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1 or self::sect2 or self::sect3 or self::sect4 or self::sect5 or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="$profiled-nodes"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="generate.css"/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |sect1|sect2|sect3|sect4|sect5 |section |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon" mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index" mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl
new file mode 100644
index 0000000..def7fff
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: profile-chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="profile-chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl
new file mode 100644
index 0000000..652fbb7
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl
@@ -0,0 +1,408 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt exslt" version="1.0">
+
+<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 8783 2010-07-28 10:59:39Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'xhtml'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes"><xslo:if xmlns:xslo="http://www.w3.org/1999/XSL/Transform" test="starts-with($writing.mode, 'rl')"><xslo:attribute name="dir">rtl</xslo:attribute></xslo:if>
+<!-- no apply-templates; make it empty except for dir for rtl-->
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <!-- Insert links to CSS files or insert literal style elements -->
+ <xsl:call-template name="generate.css"/>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made" href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$css.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0 and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>
+// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>
+var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();
+</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+
+ <!-- Generate any css files only once, not once per chunk -->
+ <xsl:call-template name="generate.css.files"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl
new file mode 100644
index 0000000..b84b3e9
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: profile-onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="profile-chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl
new file mode 100644
index 0000000..4a61c81
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
+
+<!-- ********************************************************************
+ $Id: qandaset.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="qandaset">
+ <xsl:variable name="title" select="(blockinfo/title|info/title|title)[1]"/>
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title' and local-name(.) != 'titleabbrev' and local-name(.) != 'qandadiv' and local-name(.) != 'qandaentry']"/>
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="$title"/>
+ <xsl:if test="not($title)">
+ <!-- id is output on title if there is one -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="((contains($toc.params, 'toc') and $toc != '0') or $toc = '1') and not(ancestor::answer and not($qanda.nested.in.toc=0))">
+ <xsl:call-template name="process.qanda.toc"/>
+ </xsl:if>
+ <xsl:apply-templates select="$preamble"/>
+ <xsl:call-template name="process.qandaset"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo/title| qandaset/info/title| qandaset/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qanda.section.level"/>
+ </xsl:variable>
+ <xsl:element name="h{string(number($qalevel)+1)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo|qandaset/info">
+ <!-- what should this template really do? -->
+ <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="qandadiv">
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title' and local-name(.) != 'titleabbrev' and local-name(.) != 'qandadiv' and local-name(.) != 'qandaentry']"/>
+
+ <xsl:if test="blockinfo/title|info/title|title">
+ <tr class="qandadiv">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:apply-templates select="(blockinfo/title|info/title|title)[1]"/>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="(contains($toc.params, 'toc') and $toc != '0') or $toc = '1'">
+ <tr class="toc">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:call-template name="process.qanda.toc"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="$preamble">
+ <tr class="toc">
+ <td align="{$direction.align.start}" valign="top" colspan="2">
+ <xsl:apply-templates select="$preamble"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:apply-templates select="qandadiv|qandaentry"/>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title| qandadiv/info/title| qandadiv/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+
+ <xsl:element name="h{string(number($qalevel)+1)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ <xsl:if test="$qandadiv.autolabel != 0">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaentry">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="question">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <tr>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:variable name="label.content">
+ <xsl:apply-templates select="." mode="qanda.label"/>
+ </xsl:variable>
+
+ <xsl:if test="string-length($label.content) &gt; 0">
+ <p><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$label.content"/>
+ </strong></p>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'none' and not(label)">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates select="*[local-name(.) != 'label']"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[local-name(.) != 'label']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="*" mode="qanda.defaultlabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()] /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question" mode="qanda.label">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="contains($deflabel, 'number') and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="answer">
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <tr class="{local-name(.)}">
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:call-template name="anchor"/>
+ <xsl:variable name="answer.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($answer.label) &gt; 0">
+ <p><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$answer.label"/>
+ </strong></p>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}" valign="top">
+ <xsl:apply-templates select="*[local-name(.) != 'label' and local-name(.) != 'qandaentry']"/>
+ <!-- * handle nested answer/qandaentry instances -->
+ <!-- * (bug 1509043 from Daniel Leidert) -->
+ <xsl:if test="descendant::question">
+ <xsl:call-template name="process.qandaset"/>
+ </xsl:if>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="answer" mode="qanda.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+</xsl:template>
+
+<xsl:template match="label">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qanda.toc">
+ <!-- * if user wants nested qandaset and qandaentry in main Qandaset TOC, -->
+ <!-- * then don't also include the nested stuff in the sub TOCs -->
+ <dl>
+ <xsl:apply-templates select="qandadiv" mode="qandatoc.mode"/>
+ <xsl:apply-templates select="qandaset|qandaentry" mode="qandatoc.mode"/>
+ </dl>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="qandatoc.mode">
+ <dt><xsl:apply-templates select="title" mode="qandatoc.mode"/></dt>
+ <dd><xsl:call-template name="process.qanda.toc"/></dd>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title| qandadiv/info/title| qandadiv/title" mode="qandatoc.mode">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="div.label">
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($div.label) != 0">
+ <xsl:copy-of select="$div.label"/>
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="qandatoc.mode">
+ <xsl:for-each select="qandaentry">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="qandatoc.mode">
+ <xsl:apply-templates select="question" mode="qandatoc.mode"/>
+</xsl:template>
+
+<xsl:template match="question" mode="qandatoc.mode">
+ <xsl:variable name="firstch">
+ <!-- Use a titleabbrev or title if available -->
+ <xsl:choose>
+ <xsl:when test="../blockinfo/titleabbrev">
+ <xsl:apply-templates select="../blockinfo/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../blockinfo/title">
+ <xsl:apply-templates select="../blockinfo/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/titleabbrev">
+ <xsl:apply-templates select="../info/titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../titleabbrev">
+ <xsl:apply-templates select="../titleabbrev[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../info/title">
+ <xsl:apply-templates select="../info/title[1]/node()"/>
+ </xsl:when>
+ <xsl:when test="../title">
+ <xsl:apply-templates select="../title[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()] /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <dt>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="contains($deflabel,'number') and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select="$firstch"/>
+ </a>
+ </dt>
+ <!-- * include nested qandaset/qandaentry in TOC if user wants it -->
+ <xsl:if test="not($qanda.nested.in.toc = 0)">
+ <xsl:apply-templates select="following-sibling::answer" mode="qandatoc.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="answer" mode="qandatoc.mode">
+ <xsl:if test="descendant::question">
+ <dd>
+ <xsl:call-template name="process.qanda.toc"/>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qandaset">
+
+ <xsl:variable name="deflabel">
+ <xsl:apply-templates select="." mode="qanda.defaultlabel"/>
+ </xsl:variable>
+
+ <xsl:variable name="label-width">
+ <xsl:call-template name="pi.dbhtml_label-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <table border="0" width="100%" summary="Q and A Set">
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <col align="{$direction.align.start}">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$label-width != ''">
+ <xsl:value-of select="$label-width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1%</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </col>
+ <col/>
+ <tbody>
+ <xsl:apply-templates select="qandaentry|qandadiv"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="no.wrapper.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl
new file mode 100644
index 0000000..dc2e57d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="reference">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="reference.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="reference" mode="division.number">
+ <xsl:number from="book" count="reference" format="I."/>
+</xsl:template>
+
+<xsl:template match="reference/docinfo"/>
+<xsl:template match="reference/referenceinfo"/>
+<xsl:template match="reference/title"/>
+<xsl:template match="reference/subtitle"/>
+<xsl:template match="reference/titleabbrev"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="refentry.title">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="refmeta" select="$node//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select="$node//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="title"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1 class="title">
+ <xsl:copy-of select="$title"/>
+ </h1>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:if test="$refentry.separator != 0 and preceding-sibling::refentry">
+ <div class="refentry.separator">
+ <hr/>
+ </div>
+ </xsl:if>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="refentry.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refentry/docinfo|refentry/refentryinfo"/>
+<xsl:template match="refentry/info"/>
+
+<xsl:template match="refentrytitle|refname|refdescriptor" mode="title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refmeta">
+</xsl:template>
+
+<xsl:template match="manvolnum">
+ <xsl:if test="$refentry.xref.manvolnum != 0">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refmiscinfo">
+</xsl:template>
+
+<xsl:template match="refentrytitle">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h2>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h2>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="refname">
+ <xsl:if test="not(preceding-sibling::refdescriptor)">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::refname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refpurpose">
+ <xsl:if test="node()">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">em-dash</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refdescriptor">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refclass">
+ <xsl:if test="$refclass.suppress = 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:if test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </strong>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+ <h2>
+ <xsl:choose>
+ <xsl:when test="refsynopsisdiv/title|title">
+ <xsl:apply-templates select="(refsynopsisdiv/title|title)[1]" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsynopsisdivinfo"/>
+
+<xsl:template match="refsynopsisdiv/title">
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv/title" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refsection|refsect1|refsect2|refsect3">
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <!-- pick up info title -->
+ <xsl:apply-templates select="(title|info/title)[1]"/>
+ <xsl:apply-templates select="node()[not(self::title) and not(self::info)]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsection/title|refsection/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <xsl:variable name="level" select="count(ancestor-or-self::refsection)"/>
+ <xsl:variable name="refsynopsisdiv">
+ <xsl:text>0</xsl:text>
+ <xsl:if test="ancestor::refsynopsisdiv">1</xsl:if>
+ </xsl:variable>
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="$level+$refsynopsisdiv &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level+1+$refsynopsisdiv"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="refsect1/title|refsect1/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="refsect2/title|refsect2/info/title">
+ <!-- the ID is output in the block.object call for refsect2 -->
+ <h3>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="refsect3/title|refsect3/info/title">
+ <!-- the ID is output in the block.object call for refsect3 -->
+ <h4>
+ <xsl:apply-templates/>
+ </h4>
+</xsl:template>
+
+<xsl:template match="refsectioninfo|refsection/info"/>
+<xsl:template match="refsect1info|refsect1/info"/>
+<xsl:template match="refsect2info|refsect2/info"/>
+<xsl:template match="refsect3info|refsect3/info"/>
+
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl
new file mode 100644
index 0000000..aec647d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: sections.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="section">
+ <xsl:variable name="depth" select="count(ancestor::section)+1"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $depth &lt;= $generate.section.toc.level">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="section.title">
+ <!-- the context node should be the title of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section |ancestor::simplesect |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="renderas">
+ <xsl:choose>
+ <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="$renderas != ''">
+ <xsl:value-of select="$renderas"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="level" select="$level"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section/title |section/info/title |sectioninfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect1">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 1">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect1/title |sect1/info/title |sect1info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect2">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 2">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect2/title |sect2/info/title |sect2info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect3">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 3">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect3/title |sect3/info/title |sect3info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect4">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 4">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect4/title |sect4/info/title |sect4info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect5">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 5">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect5/title |sect5/info/title |sect5info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="simplesect">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:call-template name="common.html.attributes">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplesect.titlepage"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="simplesect/title|simplesect/info/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="section/title"/>
+<xsl:template match="section/titleabbrev"/>
+<xsl:template match="section/subtitle"/>
+<xsl:template match="sectioninfo"/>
+<xsl:template match="section/info"/>
+
+<xsl:template match="sect1/title"/>
+<xsl:template match="sect1/titleabbrev"/>
+<xsl:template match="sect1/subtitle"/>
+<xsl:template match="sect1info"/>
+<xsl:template match="sect1/info"/>
+
+<xsl:template match="sect2/title"/>
+<xsl:template match="sect2/subtitle"/>
+<xsl:template match="sect2/titleabbrev"/>
+<xsl:template match="sect2info"/>
+<xsl:template match="sect2/info"/>
+
+<xsl:template match="sect3/title"/>
+<xsl:template match="sect3/subtitle"/>
+<xsl:template match="sect3/titleabbrev"/>
+<xsl:template match="sect3info"/>
+<xsl:template match="sect3/info"/>
+
+<xsl:template match="sect4/title"/>
+<xsl:template match="sect4/subtitle"/>
+<xsl:template match="sect4/titleabbrev"/>
+<xsl:template match="sect4info"/>
+<xsl:template match="sect4/info"/>
+
+<xsl:template match="sect5/title"/>
+<xsl:template match="sect5/subtitle"/>
+<xsl:template match="sect5/titleabbrev"/>
+<xsl:template match="sect5info"/>
+<xsl:template match="sect5/info"/>
+
+<xsl:template match="simplesect/title"/>
+<xsl:template match="simplesect/subtitle"/>
+<xsl:template match="simplesect/titleabbrev"/>
+<xsl:template match="simplesect/info"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="section.heading">
+ <xsl:param name="section" select="."/>
+ <xsl:param name="level" select="1"/>
+ <xsl:param name="allow-anchors" select="1"/>
+ <xsl:param name="title"/>
+ <xsl:param name="class" select="'title'"/>
+
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- Make sure the subtitle doesn't get the same id as the title -->
+ <xsl:when test="self::subtitle">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <!-- highest valid HTML H level is H6; so anything nested deeper
+ than 5 levels down just becomes H6 -->
+ <xsl:when test="$level &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+ <xsl:if test="$css.decoration != '0'">
+ <xsl:if test="$hlevel&lt;3">
+ <xsl:attribute name="style">clear: both</xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="$allow-anchors != 0 and $generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$section"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$generate.id.attributes != 0 and not(local-name(.) = 'appendix')">
+ <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$title"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bridgehead">
+ <xsl:variable name="container" select="(ancestor::appendix |ancestor::article |ancestor::bibliography |ancestor::chapter |ancestor::glossary |ancestor::glossdiv |ancestor::index |ancestor::partintro |ancestor::preface |ancestor::refsect1 |ancestor::refsect2 |ancestor::refsect3 |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5 |ancestor::section |ancestor::setindex |ancestor::simplesect)[last()]"/>
+
+ <xsl:variable name="clevel">
+ <xsl:choose>
+ <xsl:when test="local-name($container) = 'appendix' or local-name($container) = 'chapter' or local-name($container) = 'article' or local-name($container) = 'bibliography' or local-name($container) = 'glossary' or local-name($container) = 'index' or local-name($container) = 'partintro' or local-name($container) = 'preface' or local-name($container) = 'setindex'">1</xsl:when>
+ <xsl:when test="local-name($container) = 'glossdiv'">
+ <xsl:value-of select="count(ancestor::glossdiv)+1"/>
+ </xsl:when>
+ <xsl:when test="local-name($container) = 'sect1' or local-name($container) = 'sect2' or local-name($container) = 'sect3' or local-name($container) = 'sect4' or local-name($container) = 'sect5' or local-name($container) = 'refsect1' or local-name($container) = 'refsect2' or local-name($container) = 'refsect3' or local-name($container) = 'section' or local-name($container) = 'simplesect'">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">2</xsl:when>
+ <xsl:when test="@renderas = 'sect2'">3</xsl:when>
+ <xsl:when test="@renderas = 'sect3'">4</xsl:when>
+ <xsl:when test="@renderas = 'sect4'">5</xsl:when>
+ <xsl:when test="@renderas = 'sect5'">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$clevel + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="section/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="simplesect/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect1/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect2/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect3/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect4/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect5/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template name="section.subtitle">
+ <!-- the context node should be the subtitle of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section |ancestor::simplesect |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select=".."/>
+ <xsl:with-param name="allow-anchors" select="0"/>
+ <!-- subtitle heading level one higher than section level -->
+ <xsl:with-param name="level" select="$level + 1"/>
+ <xsl:with-param name="class" select="'subtitle'"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="0"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl
new file mode 100644
index 0000000..8506707
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl
@@ -0,0 +1,1513 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: synop.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- synopsis is in verbatim -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:if test="..//processing-instruction('dbcmdlist')">
+ <!-- * Placing a dbcmdlist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all cmdsynopsis instances -->
+ <!-- * that are descendants of that element; so for any -->
+ <!-- * cmdsynopsis that is a descendant of an element containing -->
+ <!-- * a dbcmdlist PI, we need to output an a@id instance so that -->
+ <!-- * we will have something to link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command">
+ <br/>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$sepchar"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$arg.or.sep"/>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <br/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <a href="#{@linkend}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates/>
+ </em>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <!-- You can't introduce another <p> here, because you're
+ already in a <p> from cmdsynopsis-->
+ <span>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <a id="{$id}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template match="funcsynopsis">
+ <xsl:if test="..//processing-instruction('dbfunclist')">
+ <!-- * Placing a dbfunclist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all funcsynopsis instances that -->
+ <!-- * are descendants of that element; so for any funcsynopsis that is -->
+ <!-- * a descendant of an element containing a dbfunclist PI, we need -->
+ <!-- * to output an a@id instance so that we will have something to -->
+ <!-- * link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsisinfo">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </pre>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype -->
+<!--
+
+funcprototype ::= (funcdef,
+ (void|varargs|paramdef+))
+
+funcdef ::= (#PCDATA|type|replaceable|function)*
+
+paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
+-->
+
+<xsl:template match="funcprototype">
+ <xsl:variable name="html-style">
+ <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$html-style != ''">
+ <xsl:value-of select="$html-style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!-- * 2008-02-17. the code no longer relies on the funcsynopsis.tabular.threshold -->
+<!-- * param at all (the stuff below has been commented out since mid -->
+<!-- * 2006), so I completely removed the funcsynopsis.tabular.threshold param -->
+<!-- * .. MikeSmith -->
+<!--
+ <xsl:variable name="tabular-p"
+ select="$funcsynopsis.tabular.threshold &gt; 0
+ and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
+-->
+
+ <xsl:variable name="tabular-p" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$style = 'kr' and $tabular-p">
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'kr'">
+ <xsl:apply-templates select="." mode="kr-nontabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'ansi' and $tabular-p">
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, non-tabular -->
+
+<xsl:template match="funcprototype" mode="kr-nontabular">
+ <p>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:if test="paramdef">
+ <br/>
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </xsl:if>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="kr-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-nontabular">
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-nontabular">
+ <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
+ <xsl:if test="preceding-sibling::paramdef"><br/></xsl:if>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, tabular -->
+
+<xsl:template match="funcprototype" mode="kr-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <xsl:if test="paramdef">
+ <div class="paramdef-list">
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </div>
+ </xsl:if>
+ <div class="funcprototype-spacer">&#160;</div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="kr-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="kr-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-tabular">
+ <td>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular">
+ <td>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <code>
+ <xsl:copy-of select="$type"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:when test="funcparams">
+ <td colspan="2">
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, non-tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-nontabular">
+ <p>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="ansi-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-nontabular">
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-nontabular">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-nontabular">
+ <code>(</code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <div class="funcprototype-spacer">&#160;</div> <!-- hACk: blank div for vertical spacing -->
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">fsfunc<xsl:apply-templates mode="ansi-nontabular"/></strong>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-tabular">
+ <td>
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <td>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-tabular">
+ <code>(</code>
+ <xsl:apply-templates/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<xsl:template match="classsynopsis |fieldsynopsis |methodsynopsis |constructorsynopsis |destructorsynopsis">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$language='java' or $language='Java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl' or $language='Perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl' or $language='IDL'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+ </xsl:message>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language" select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="parent::classsynopsis or (following-sibling::fieldsynopsis |following-sibling::methodsynopsis |following-sibling::constructorsynopsis |following-sibling::destructorsynopsis)">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- ===== Java ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="java">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text>&#160;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="java">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="java">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>,</xsl:text>
+ <br/>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">&#160;</xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="java" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="decl">
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;throws&#160;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>&#160;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="cpp" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;throws&#160;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text>&#160;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="idl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&#160;&#160;&#160;&#160;raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="idl"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;</xsl:text>
+ <br/>
+
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
+ <xsl:text>);</xsl:text>
+ <br/>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="perl"/>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl">
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&#160;&#160;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>=&#160;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>void&#160;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- Used when not occurring as a child of classsynopsis -->
+<xsl:template match="ooclass|oointerface|ooexception">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
+<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
+<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
+<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
+<!-- * per-mode matches for those linking elements in order for them -->
+<!-- * to be processed as expected. -->
+
+<xsl:template match="link|olink|xref" mode="java">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="cpp">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="idl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="perl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl
new file mode 100644
index 0000000..42fe259
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl
@@ -0,0 +1,1168 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table" xmlns:xtbl="xalan://com.nwalsh.xalan.Table" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc stbl xtbl lxslt ptbl" version="1.0">
+
+<xsl:include href="../common/table.xsl"/>
+
+<!-- ********************************************************************
+ $Id: table.xsl 8813 2010-08-09 21:18:23Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtbl" functions="adjustColumnWidths"/>
+
+<xsl:template name="empty.table.cell">
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row or ancestor-or-self::thead/following-sibling::tbody or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="number($colnum) &gt;= ancestor::tgroup/@cols">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <td class="auto-generated">
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="border">
+ <xsl:param name="side" select="'left'"/>
+ <xsl:param name="padding" select="0"/>
+ <xsl:param name="style" select="$table.cell.border.style"/>
+ <xsl:param name="color" select="$table.cell.border.color"/>
+ <xsl:param name="thickness" select="$table.cell.border.thickness"/>
+
+ <!-- Note: Some browsers (mozilla) require at least a width and style. -->
+
+ <xsl:choose>
+ <xsl:when test="($thickness != '' and $style != '' and $color != '') or ($thickness != '' and $style != '') or ($thickness != '')">
+ <!-- use the compound property if we can: -->
+ <!-- it saves space and probably works more reliably -->
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- we need to specify the styles individually -->
+ <xsl:if test="$thickness != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-width: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$style != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-style: </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$color != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-color: </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tgroup" name="tgroup">
+ <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'">
+ <xsl:message terminate="yes">
+ <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <table>
+ <xsl:choose>
+ <!-- If there's a textobject/phrase for the table summary, use it -->
+ <xsl:when test="../textobject/phrase">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="../textobject/phrase"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- If there's a <?dbhtml table-summary="foo"?> PI, use it for
+ the HTML table summary attribute -->
+ <xsl:when test="$summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$summary"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, if there's a title, use that -->
+ <xsl:when test="../title">
+ <xsl:attribute name="summary">
+ <!-- This screws up on inline markup and footnotes, oh well... -->
+ <xsl:value-of select="string(../title)"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, forget the whole idea -->
+ <xsl:otherwise><!-- nevermind --></xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$cellspacing != '' or $html.cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:choose>
+ <xsl:when test="$cellspacing != ''">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellspacing"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != '' or $html.cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:choose>
+ <xsl:when test="$cellpadding != ''">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellpadding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="../@pgwide=1 or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="width">100%</xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$table.borders.with.css != 0">
+ <xsl:choose>
+ <xsl:when test="../@frame='all' or (not(../@frame) and $default.table.frame='all')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='topbot' or (not(../@frame) and $default.table.frame='topbot')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='top' or (not(../@frame) and $default.table.frame='top')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='bottom' or (not(../@frame) and $default.table.frame='bottom')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='sides' or (not(../@frame) and $default.table.frame='sides')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='none'">
+ <xsl:attribute name="style">
+ <xsl:text>border: none;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:when test="../@frame='none' or (not(../@frame) and $default.table.frame='none') or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="border">0</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="colgroup">
+ <colgroup>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </colgroup>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:call-template name="pi.dbhtml_table-width">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$default.table.width != '' or $explicit.table.width != ''">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="contains($table.width, '%')">
+ <xsl:value-of select="$table.width"/>
+ </xsl:when>
+ <xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:convertLength')">
+ <xsl:value-of select="stbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:convertLength')">
+ <xsl:value-of select="xtbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No convertLength function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:adjustColumnWidths')">
+ <xsl:copy-of select="stbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:adjustColumnWidths')">
+ <xsl:copy-of select="xtbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ptbl:adjustColumnWidths')">
+ <xsl:copy-of select="ptbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No adjustColumnWidths function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$colgroup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="thead"/>
+ <xsl:apply-templates select="tfoot"/>
+ <xsl:apply-templates select="tbody"/>
+
+ <xsl:if test=".//footnote|../title//footnote">
+ <tbody class="footnotes">
+ <tr>
+ <td colspan="{@cols}">
+ <xsl:apply-templates select=".//footnote|../title//footnote" mode="table.footnote.mode"/>
+ </td>
+ </tr>
+ </tbody>
+ </xsl:if>
+ </table>
+</xsl:template>
+
+<xsl:template match="tgroup/processing-instruction('dbhtml')">
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <!-- Suppress the table-summary PI -->
+ <xsl:if test="$summary = ''">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:value-of select="."/>
+ </xsl:processing-instruction>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="colspec"/>
+
+<xsl:template match="spanspec"/>
+
+<xsl:template match="thead|tfoot">
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <!-- recurse on rows only if @morerows is present -->
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="tbody">
+ <tbody>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'recurse'"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="'loop'"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </tbody>
+</xsl:template>
+
+<xsl:template match="row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($spans, '0')">
+ <xsl:call-template name="normal-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!--
+ <xsl:message>
+ <xsl:text>Ignoring row: </xsl:text>
+ <xsl:value-of select="$spans"/>
+ <xsl:text> = </xsl:text>
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:message>
+ -->
+
+ <xsl:if test="normalize-space(.//text()) != ''">
+ <xsl:message>Warning: overlapped row contains content!</xsl:message>
+ </xsl:if>
+
+ <tr><xsl:comment> This row intentionally left blank </xsl:comment></tr>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="normal-row">
+ <xsl:param name="spans"/>
+ <xsl:param name="browserows"/>
+
+ <xsl:variable name="row-height">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_row-height"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="class">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_class"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="tgroup" count="row"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$row-height != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$row-height"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$class != ''">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$class"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:if test="@rowsep = 1 and following-sibling::row">
+ <xsl:attribute name="style">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="(entry|entrytbl)[1]">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </tr>
+
+ <xsl:if test="$browserows = 'recurse'">
+ <xsl:if test="following-sibling::row">
+ <xsl:variable name="nextspans">
+ <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans" select="$nextspans"/>
+ <xsl:with-param name="browserows" select="$browserows"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="entry">
+ <xsl:param name="col">
+ <xsl:choose>
+ <xsl:when test="@revisionflag">
+ <xsl:number from="row"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="cellgi">
+ <xsl:choose>
+ <xsl:when test="ancestor::thead">th</xsl:when>
+ <xsl:when test="ancestor::tfoot">th</xsl:when>
+ <xsl:when test="ancestor::tbody and (ancestor::table[@rowheader = 'firstcol'] or ancestor::informaltable[@rowheader = 'firstcol']) and ancestor-or-self::entry[1][count(preceding-sibling::entry) = 0]">
+ <xsl:text>th</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>td</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="empty.cell" select="count(node()) = 0"/>
+
+ <xsl:variable name="named.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:choose>
+ <xsl:when test="$named.colnum &gt; 0">
+ <xsl:value-of select="$named.colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$col"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="ancestor::entrytbl and not (ancestor-or-self::row[1]/following-sibling::row) and not (ancestor::thead)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row or ancestor-or-self::thead/following-sibling::tbody or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="@morerows and not(@morerows &lt; count(ancestor-or-self::row[1]/following-sibling::row))">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="$following.spans = ''">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="valign">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'valign'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="align">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'align'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="char">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'char'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="charoff">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'charoff'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:call-template name="empty.table.cell"/>
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:element name="{$cellgi}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="locale.html.attributes"/>
+ <xsl:if test="$entry.propagates.style != 0 and @role">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:if test="$show.revisionflag and @revisionflag">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@revisionflag"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@morerows &gt; 0">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="1+@morerows"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$entry.colspan &gt; 1">
+ <xsl:attribute name="colspan">
+ <xsl:value-of select="$entry.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$valign != ''">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="$valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$char != ''">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$charoff != ''">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="not(preceding-sibling::*) and (ancestor::row[1]/@id or ancestor::row[1]/@xml:id)">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::row[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$empty.cell">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:when test="self::entrytbl">
+ <xsl:call-template name="tgroup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry |following-sibling::entrytbl)[1]">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="sentry" mode="span">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col + 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="count" select="$entry.colspan"/>
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="@morerows">
+ <xsl:value-of select="@morerows"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>:</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry |following-sibling::entrytbl)[1]" mode="span">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$count &gt; $cols"/>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.col">
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($colspecs)">
+ <col/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <col>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colwidth and $use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="normalize-space($colspec/@colwidth) = '*'">
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- pass through to HTML if no * in colspecs -->
+ <xsl:when test="$colspec/@colwidth and not($colspec/parent::*/colspec/@colwidth[contains(.,'*')])">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="normalize-space($colspec/@colwidth) = '*'">
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$colspec/@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$colspec/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Suggested by Pavel ZAMPACH <zampach@nemcb.cz> -->
+ <xsl:when test="$colspecs/ancestor::tgroup/@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$colspecs/ancestor::tgroup/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$colspec/@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$colspec/@char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$colspec/@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$colspec/@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$colspec/@colname">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$colspec/@colname"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="colspec.colwidth">
+ <!-- when this macro is called, the current context must be an entry -->
+ <xsl:param name="colname"/>
+ <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup -->
+ <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($colspecs)"/>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colname=$colname">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colspec.colwidth">
+ <xsl:with-param name="colname" select="$colname"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="tr.attributes">
+ <xsl:param name="row" select="."/>
+ <xsl:param name="rownum" select="0"/>
+
+ <!-- by default, do nothing. But you might want to say:
+
+ <xsl:if test="$rownum mod 2 = 0">
+ <xsl:attribute name="class">oddrow</xsl:attribute>
+ </xsl:if>
+
+ -->
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl
new file mode 100644
index 0000000..0a380d2
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: task.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="task">
+ <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement), concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="preamble" select="*[not(self::title or self::titleabbrev)]"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="task/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="tasksummary">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="tasksummary/title"/>
+
+<xsl:template match="taskprerequisites">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskprerequisites/title"/>
+
+<xsl:template match="taskrelated">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskrelated/title"/>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl
new file mode 100644
index 0000000..1f72e23
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl
@@ -0,0 +1,3817 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl-->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="book.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/abstract"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <div>
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refentry.titlepage.before.recto"/>
+ <xsl:call-template name="refentry.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refentry.titlepage.before.verso"/>
+ <xsl:call-template name="refentry.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="refentry.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.recto">
+ <div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::acknowledgements[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="acknowledgementsinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="acknowledgementsinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="acknowledgements.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.recto"/>
+ <xsl:call-template name="acknowledgements.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="acknowledgements.titlepage.before.verso"/>
+ <xsl:call-template name="acknowledgements.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="acknowledgements.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="acknowledgements.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
+<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
+<xsl:call-template name="formal.object.heading">
+<xsl:with-param name="object" select="ancestor-or-self::sidebar[1]"/>
+</xsl:call-template>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl
new file mode 100644
index 0000000..c3f8217
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl
@@ -0,0 +1,1030 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: titlepage.xsl 8816 2010-08-10 11:56:35Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:attribute-set name="book.titlepage.recto.style"/>
+<xsl:attribute-set name="book.titlepage.verso.style"/>
+
+<xsl:attribute-set name="article.titlepage.recto.style"/>
+<xsl:attribute-set name="article.titlepage.verso.style"/>
+
+<xsl:attribute-set name="set.titlepage.recto.style"/>
+<xsl:attribute-set name="set.titlepage.verso.style"/>
+
+<xsl:attribute-set name="part.titlepage.recto.style"/>
+<xsl:attribute-set name="part.titlepage.verso.style"/>
+
+<xsl:attribute-set name="partintro.titlepage.recto.style"/>
+<xsl:attribute-set name="partintro.titlepage.verso.style"/>
+
+<xsl:attribute-set name="reference.titlepage.recto.style"/>
+<xsl:attribute-set name="reference.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refentry.titlepage.recto.style"/>
+<xsl:attribute-set name="refentry.titlepage.verso.style"/>
+
+<xsl:attribute-set name="dedication.titlepage.recto.style"/>
+<xsl:attribute-set name="dedication.titlepage.verso.style"/>
+
+<xsl:attribute-set name="acknowledgements.titlepage.recto.style"/>
+<xsl:attribute-set name="acknowledgements.titlepage.verso.style"/>
+
+<xsl:attribute-set name="preface.titlepage.recto.style"/>
+<xsl:attribute-set name="preface.titlepage.verso.style"/>
+
+<xsl:attribute-set name="chapter.titlepage.recto.style"/>
+<xsl:attribute-set name="chapter.titlepage.verso.style"/>
+
+<xsl:attribute-set name="appendix.titlepage.recto.style"/>
+<xsl:attribute-set name="appendix.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliography.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliography.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossary.titlepage.recto.style"/>
+<xsl:attribute-set name="glossary.titlepage.verso.style"/>
+
+<xsl:attribute-set name="index.titlepage.recto.style"/>
+<xsl:attribute-set name="index.titlepage.verso.style"/>
+
+<xsl:attribute-set name="setindex.titlepage.recto.style"/>
+<xsl:attribute-set name="setindex.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sidebar.titlepage.recto.style"/>
+<xsl:attribute-set name="sidebar.titlepage.verso.style"/>
+
+<xsl:attribute-set name="section.titlepage.recto.style"/>
+<xsl:attribute-set name="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect1.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect1.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect2.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect2.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect3.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect3.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect4.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect4.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect5.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect5.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="simplesect.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="simplesect.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
+<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="titlepage.mode">
+ <!-- if an element isn't found in this mode, try the default mode -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="abbrev" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="abstract" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$abstract.notitle.enabled = 0">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="address" mode="titlepage.mode">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author|editor" mode="titlepage.mode">
+ <xsl:call-template name="credits.div"/>
+</xsl:template>
+
+<xsl:template name="credits.div">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="self::editor[position()=1] and not($editedby.enabled = 0)">
+ <h4 class="editedby"><xsl:call-template name="gentext.edited.by"/></h4>
+ </xsl:if>
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:choose>
+ <xsl:when test="orgname">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h3>
+ <xsl:if test="not($contrib.inline.enabled = 0)">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates mode="titlepage.mode" select="email"/>
+ <xsl:if test="not($blurb.on.titlepage.enabled = 0)">
+ <xsl:choose>
+ <xsl:when test="$contrib.inline.enabled = 0">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib|authorblurb|personblurb"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode" select="authorblurb|personblurb"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="parent::refentryinfo">
+ <h2>Authors</h2>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="collab" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="confdates" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="titlepage.mode">
+ <!-- suppress -->
+</xsl:template>
+
+<xsl:template match="contractnum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="not($contrib.inline.enabled = 0)">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span><xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p><xsl:apply-templates mode="titlepage.mode"/></p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="copyright" mode="titlepage.mode">
+
+ <xsl:if test="generate-id() = generate-id(//refentryinfo/copyright[1]) and ($stylesheet.result.type = 'html' or $stylesheet.result.type = 'xhtml')">
+ <h2>Copyright</h2>
+ </xsl:if>
+
+ <p>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges" select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="year" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="holder" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="titlepage.mode">
+ <h3>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="titlepage.mode">
+ <p>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Edition'"/>
+ </xsl:call-template>
+ </p>
+</xsl:template>
+
+<xsl:template match="email" mode="titlepage.mode">
+ <!-- use the normal e-mail handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="firstname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="graphic" mode="titlepage.mode">
+ <!-- use the normal graphic handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="honorific" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioid" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="itermset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="keywordset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="titlepage.mode">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.legalnotice.link != 0">
+
+ <!-- Compute name of legalnotice file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <a id="{$id}"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="legalnotice/title" mode="titlepage.mode">
+ <p class="legalnotice-title"><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong></p>
+</xsl:template>
+
+<xsl:template match="lineage" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modespec" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="titlepage.mode">
+ <xsl:if test="preceding-sibling::*[1][self::orgname]">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.mode">
+<xsl:choose>
+ <xsl:when test="not($othercredit.like.author.enabled = 0)">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="credits.div"/>
+ </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.othercredits">
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="othername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="productname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publisher" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publishername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="titlepage.mode">
+ <xsl:variable name="numcols">
+ <xsl:choose>
+ <xsl:when test=".//authorinitials|.//author">3</xsl:when>
+ <xsl:otherwise>2</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">RevHistory</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="contents">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <table border="1" width="100%" summary="Revision history">
+ <tr>
+ <th align="{$direction.align.start}" valign="top" colspan="{$numcols}">
+ <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </strong>
+ </th>
+ </tr>
+ <xsl:apply-templates mode="titlepage.mode">
+ <xsl:with-param name="numcols" select="$numcols"/>
+ </xsl:apply-templates>
+ </table>
+ </div>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.revhistory.link != 0">
+
+ <!-- Compute name of revhistory file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="is.ln" select="false()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title">
+ <xsl:value-of select="$title"/>
+ <xsl:if test="../../title">
+ <xsl:value-of select="concat(' (', ../../title, ')')"/>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:copy-of select="$contents"/>
+ </body>
+ </html>
+ <xsl:text>
+</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="revhistory/revision" mode="titlepage.mode">
+ <xsl:param name="numcols" select="'3'"/>
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="{$direction.align.start}">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
+ </xsl:if>
+ </td>
+ <td align="{$direction.align.start}">
+ <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="$revauthor">
+ <td align="{$direction.align.start}">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:when>
+ <xsl:when test="$numcols &gt; 2">
+ <td>&#160;</td>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="{$direction.align.start}" colspan="{$numcols}">
+ <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/date" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/author" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revremark" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subjectset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="subtitle" mode="titlepage.mode">
+ <h2>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="surname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="titlepage.mode">
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="$generate.id.attributes = 0">
+ <a id="{$id}"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h1>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="titlepage.mode">
+ <!-- nop; title abbreviations don't belong on the title page! -->
+</xsl:template>
+
+<xsl:template match="volumenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<!-- This template computes the filename for legalnotice and revhistory chunks -->
+<xsl:template name="ln.or.rh.filename">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="is.ln" select="true()"/>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- 1. If there is a dbhtml_filename PI, use that -->
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <xsl:when test="($node/@id or $node/@xml:id) and not($use.id.as.filename = 0)">
+ <!-- * 2. If this legalnotice/revhistory has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" or "rh-" to it) -->
+ <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:when test="not ($node/@id or $node/@xml:id) or $use.id.as.filename = 0">
+ <!-- * 3. Otherwise, if this legalnotice/revhistory does not have an ID, or -->
+ <!-- * if $use.id.as.filename = 0 -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:value-of select="generate-id($node)"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend a -->
+ <!-- * prefix to it, and use that as the basename for the file -->
+ <xsl:choose>
+ <xsl:when test="$is.ln">
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('rh-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl
new file mode 100644
index 0000000..92b7b14
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+ $Id: toc.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set/toc | book/toc | part/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to parent element -->
+ <xsl:for-each select="parent::*">
+ <xsl:choose>
+ <xsl:when test="self::set">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::book">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="self::part">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/toc | appendix/toc | preface/toc | article/toc">
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="title"/>
+ <dl>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ </dl>
+ </div>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section/toc |sect1/toc |sect2/toc |sect3/toc |sect4/toc |sect5/toc">
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Do not output the toc element if one is already generated
+ by the use of $generate.toc parameter, or if
+ generating a source toc is turned off -->
+ <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="title"/>
+ <dl>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ </dl>
+ </div>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0">
+ <!-- trick to switch context node to section element -->
+ <xsl:for-each select="parent::*">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tocpart|tocchap |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:variable name="sub-toc">
+ <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dd>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2| toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </dd>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2| toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:apply-templates select="tocentry[position() != last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ </dt>
+ <xsl:copy-of select="$sub-toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ <xsl:copy-of select="$sub-toc"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry|tocdiv|lotentry|tocfront|tocback">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="tocentry-content"/>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="tocentry-content"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry[position() = last()]" priority="2">
+ <xsl:call-template name="tocentry-content"/>
+</xsl:template>
+
+<xsl:template name="tocentry-content">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="@linkend">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="toc/title">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="toc/subtitle">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="toc/titleabbrev">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- A lot element must have content, because there is no attribute
+ to select what kind of list should be generated -->
+<xsl:template match="book/lot | part/lot">
+ <!-- Don't generate a page sequence unless there is content -->
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="string-length(normalize-space($content)) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="chapter/lot | appendix/lot | preface/lot | article/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section/lot |sect1/lot |sect2/lot |sect3/lot |sect4/lot |sect5/lot">
+ <xsl:choose>
+ <xsl:when test="* and $process.source.toc != 0">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:when>
+ <xsl:when test="not(child::*) and $process.empty.source.toc != 0">
+ <xsl:call-template name="process.empty.lot"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.empty.lot">
+ <!-- An empty lot element does not provide any information to indicate
+ what should be included in it. You can customize this
+ template to generate a lot based on @role or something -->
+ <xsl:message>
+ <xsl:text>Warning: don't know what to generate for </xsl:text>
+ <xsl:text>lot that has no children.</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+<xsl:template match="lot/title">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="lot/subtitle">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="lot/titleabbrev">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl
new file mode 100644
index 0000000..c0bc69d
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="sverb xverb lxslt exsl" version="1.0">
+
+<!-- ********************************************************************
+ $Id: verbatim.xsl 8807 2010-08-09 18:57:41Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- XSLTHL highlighting is turned off by default. See highlighting/README
+ for instructions on how to turn on XSLTHL -->
+<xsl:template name="apply-highlighting">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<lxslt:component prefix="xverb" functions="numberLines"/>
+
+<xsl:template match="programlisting|screen|synopsis">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="div.element">
+ <xsl:choose>
+ <xsl:when test="$make.clean.html != 0">div</xsl:when>
+ <xsl:otherwise>pre</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$shade.verbatim != 0">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$div.element}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$div.element}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$highlight.source != 0">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="literallayout">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:if test="$shade.verbatim != 0 and @class='monospaced'">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$rtf"/>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="address">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="number.rtf.lines">
+ <xsl:param name="rtf" select="''"/>
+ <xsl:param name="pi.context" select="."/>
+
+ <!-- Save the global values -->
+ <xsl:variable name="global.linenumbering.everyNth" select="$linenumbering.everyNth"/>
+
+ <xsl:variable name="global.linenumbering.separator" select="$linenumbering.separator"/>
+
+ <xsl:variable name="global.linenumbering.width" select="$linenumbering.width"/>
+
+ <!-- Extract the <?dbhtml linenumbering.*?> PI values -->
+ <xsl:variable name="pi.linenumbering.everyNth">
+ <xsl:call-template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.separator">
+ <xsl:call-template name="pi.dbhtml_linenumbering.separator">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.width">
+ <xsl:call-template name="pi.dbhtml_linenumbering.width">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Construct the 'in-context' values -->
+ <xsl:variable name="linenumbering.everyNth">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.everyNth != ''">
+ <xsl:value-of select="$pi.linenumbering.everyNth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.everyNth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.separator">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.separator != ''">
+ <xsl:value-of select="$pi.linenumbering.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.width">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.width != ''">
+ <xsl:value-of select="$pi.linenumbering.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.startinglinenumber">
+ <xsl:choose>
+ <xsl:when test="$pi.context/@startinglinenumber">
+ <xsl:value-of select="$pi.context/@startinglinenumber"/>
+ </xsl:when>
+ <xsl:when test="$pi.context/@continuation='continues'">
+ <xsl:variable name="lastLine">
+ <xsl:choose>
+ <xsl:when test="$pi.context/self::programlisting">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::programlisting[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::screen">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::screen[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::literallayout">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::literallayout[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::address">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::address[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::synopsis">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="preceding::synopsis[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected verbatim environment: </xsl:text>
+ <xsl:value-of select="local-name($pi.context)"/>
+ </xsl:message>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$lastLine + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:numberLines')">
+ <xsl:copy-of select="sverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:numberLines')">
+ <xsl:copy-of select="xverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No numberLines function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim">
+ <xsl:param name="rtf"/>
+
+ <!-- I want to make this RTF verbatim. There are two possibilities: either
+ I have access to the exsl:node-set extension function and I can "do it right"
+ or I have to rely on CSS. -->
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($rtf)" mode="make.verbatim.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="white-space: pre;">
+ <xsl:copy-of select="$rtf"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================== -->
+
+<xsl:template name="lastLineNumber">
+ <xsl:param name="listings"/>
+ <xsl:param name="number" select="0"/>
+
+ <xsl:variable name="lines">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="string($listings[1])"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($listings)">
+ <xsl:value-of select="$number"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@startinglinenumber">
+ <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@continuation='continues'">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="number" select="$number + $lines"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lines"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="countLines">
+ <xsl:param name="listing"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($listing, '&#10;')">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="substring-after($listing, '&#10;')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl
new file mode 100644
index 0000000..74c6f20
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl
@@ -0,0 +1,1316 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="suwl exsl xlink" version="1.0">
+
+<!-- ********************************************************************
+ $Id: xref.xsl 8421 2009-05-04 07:49:49Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- Use internal variable for olink xlink role for consistency -->
+<xsl:variable name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="anchor">
+ <xsl:call-template name="anchor"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="xref" name="xref">
+ <xsl:param name="xhref" select="@xlink:href"/>
+ <!-- is the @xlink:href a local idref link? -->
+ <xsl:param name="xlink.idref">
+ <xsl:if test="starts-with($xhref,'#') and (not(contains($xhref,'(')) or starts-with($xhref, '#xpointer(id('))">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/>
+ <xsl:param name="linkend.targets" select="key('id',@linkend)"/>
+ <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/>
+
+ <xsl:variable name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$target">
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:apply-templates>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: xref linking to </xsl:text>
+ <xsl:value-of select="@linkend|@xlink:href"/>
+ <xsl:text> has no generated link text.</xsl:text>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- biblioref handled largely like an xref -->
+<!-- To be done: add support for begin, end, and units attributes -->
+<xsl:template match="biblioref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XRef to nonexistent id: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:text>???</xsl:text>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$target/title or $target/*/title">
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$target" mode="xref-title"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </a>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="endterm">
+ <!-- Process the children of the endterm element -->
+ <xsl:variable name="endterm">
+ <xsl:apply-templates select="child::node()"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$exsl.node.set.available != 0">
+ <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="remove-ids">
+ <xsl:choose>
+ <!-- handle html or xhtml -->
+ <xsl:when test="local-name(.) = 'a' and (namespace-uri(.) = '' or namespace-uri(.) = 'http://www.w3.org/1999/xhtml')">
+ <xsl:choose>
+ <xsl:when test="(@name and count(@*) = 1) or (@id and count(@*) = 1) or (@xml:id and count(@*) = 1) or (@xml:id and @name and count(@*) = 2) or (@id and @name and count(@*) = 2)">
+ <xsl:message>suppress anchor</xsl:message>
+ <!-- suppress the whole thing -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'name' and local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:copy>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-to-prefix"/>
+<xsl:template match="*" mode="xref-to-suffix"/>
+
+<xsl:template match="*" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:if test="$verbose">
+ <xsl:message>
+ <xsl:text>Don't know what gentext to create for xref to: "</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>", ("</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>")</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>???</xsl:text>
+</xsl:template>
+
+<xsl:template match="title" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- if you xref to a title, xref to the parent... -->
+ <xsl:choose>
+ <!-- FIXME: how reliable is this? -->
+ <xsl:when test="contains(local-name(parent::*), 'info')">
+ <xsl:apply-templates select="parent::*[2]" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset |biblioset|blockquote|calloutlist|caution|colophon |constraintdef|formalpara|glossdiv|important|indexdiv |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain |msgrel|msgset|msgsub|note|orderedlist|partintro |productionset|qandadiv|refsynopsisdiv|segmentedlist |set|setindex|sidebar|tip|toc|variablelist|warning" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- catch-all for things with (possibly optional) titles -->
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="author|editor|othercredit|personname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name.list"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table|equation" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="procedure" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="task" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="dedication|acknowledgements|preface|chapter|appendix|article" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix">
+ <xsl:text>[</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix">
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:variable name="entry" select="$bib/bibliography/ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name($entry/*[1]) = 'abbrev'">
+ <xsl:apply-templates select="$entry/*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossary" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="(acronym|abbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossterm|firstterm" mode="xref-to">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="index" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="section|simplesect |sect1|sect2|sect3|sect4|sect5 |refsect1|refsect2|refsect3|refsection" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="qandaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="question[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length(label) != 0">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:apply-templates select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refnamediv/refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="refmeta/manvolnum"/>
+</xsl:template>
+
+<xsl:template match="refnamediv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="refname[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates mode="xref-to"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="term[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary" mode="xref-to">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="xref-to">
+ <xsl:value-of select="primary"/>
+</xsl:template>
+
+<xsl:template match="varlistentry/term" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <!-- to avoid the comma that will be generated if there are several terms -->
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="callout-bug"/>
+</xsl:template>
+
+<xsl:template match="area|areaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="." mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- These are elements for which no link text exists, so an xref to one
+ uses the xrefstyle attribute if specified, or if not it falls back
+ to the container element's link text -->
+<xsl:template match="para|phrase|simpara|anchor|quote" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="context" select="(ancestor::simplesect |ancestor::section |ancestor::sect1 |ancestor::sect2 |ancestor::sect3 |ancestor::sect4 |ancestor::sect5 |ancestor::refsection |ancestor::refsect1 |ancestor::refsect2 |ancestor::refsect3 |ancestor::chapter |ancestor::appendix |ancestor::preface |ancestor::partintro |ancestor::dedication |ancestor::acknowledgements |ancestor::colophon |ancestor::bibliography |ancestor::index |ancestor::glossary |ancestor::glossentry |ancestor::listitem |ancestor::varlistentry)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$xrefstyle != ''">
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$context" mode="xref-to">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="author" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name.list"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-title">
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:variable name="title">
+ <xsl:text>[</xsl:text>
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>]</xsl:text>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="step[not(./title)]" mode="title.markup">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="link" name="link">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="a.target"/>
+ <xsl:param name="xhref" select="@xlink:href"/>
+
+ <xsl:variable name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="count(child::node()) &gt; 0">
+ <!-- If it has content, use it -->
+ <xsl:apply-templates/>
+ </xsl:when>
+ <!-- else look for an endterm -->
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Use the xlink:href if no other text -->
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Link element has no content and no Endterm. </xsl:text>
+ <xsl:text>Nothing to show in the link to </xsl:text>
+ <xsl:value-of select="(@xlink:href|@linkend)[1]"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="a.target" select="$a.target"/>
+ <xsl:with-param name="xhref" select="$xhref"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="ulink" name="ulink">
+ <xsl:param name="url" select="@url"/>
+ <xsl:variable name="link">
+ <a>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="$url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" name="olink">
+ <!-- olink content may be passed in from xlink olink -->
+ <xsl:param name="content" select="NOTANELEMENT"/>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="localinfo" select="@localinfo"/>
+
+ <xsl:choose>
+ <!-- olinks resolved by stylesheet and target database -->
+ <xsl:when test="@targetdoc or @targetptr or (@xlink:role=$xolink.role and contains(@xlink:href, '#') )">
+
+ <xsl:variable name="targetdoc.att">
+ <xsl:choose>
+ <xsl:when test="@targetdoc != ''">
+ <xsl:value-of select="@targetdoc"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and contains(@xlink:href, '#')">
+ <xsl:value-of select="substring-before(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr.att">
+ <xsl:choose>
+ <xsl:when test="@targetptr != ''">
+ <xsl:value-of select="@targetptr"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and contains(@xlink:href, '#')">
+ <xsl:value-of select="substring-after(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="xref-context" select="true()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database.filename">
+ <xsl:call-template name="select.target.database">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database" select="document($target.database.filename,/)"/>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: root element of target.database '</xsl:text>
+ <xsl:value-of select="$target.database.filename"/>
+ <xsl:text>' is '</xsl:text>
+ <xsl:value-of select="local-name($target.database/*[1])"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="olink.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="string-length($olink.key) = 0">
+ <xsl:message>
+ <xsl:text>Error: unresolved olink: </xsl:text>
+ <xsl:text>targetdoc/targetptr = '</xsl:text>
+ <xsl:value-of select="$targetdoc.att"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$targetptr.att"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make.olink.href">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="hottext">
+ <xsl:choose>
+ <xsl:when test="string-length($content) != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.docname.citation">
+ <xsl:call-template name="olink.document.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="olink.page.citation">
+ <xsl:call-template name="olink.page.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:copy-of select="$hottext"/>
+ </a>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="olink"><xsl:copy-of select="$hottext"/></span>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+
+ <!-- Or use old olink mechanism -->
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@linkmode">
+ <!-- use the linkmode to get the base URI, use localinfo as fragid -->
+ <xsl:variable name="modespec" select="key('id',@linkmode)"/>
+ <xsl:if test="count($modespec) != 1 or local-name($modespec) != 'modespec'">
+ <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
+ </xsl:if>
+ <xsl:value-of select="$modespec"/>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="@type = 'href'">
+ <xsl:call-template name="olink.outline">
+ <xsl:with-param name="outline.base.uri" select="unparsed-entity-uri(@targetdocent)"/>
+ <xsl:with-param name="localinfo" select="@localinfo"/>
+ <xsl:with-param name="return" select="'href'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$olink.resolver"/>
+ <xsl:text>?</xsl:text>
+ <xsl:value-of select="$olink.sysid"/>
+ <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
+ <!-- XSL gives no access to the public identifier (grumble...) -->
+ <xsl:if test="@localinfo">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:value-of select="$olink.fragid"/>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="olink.hottext"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="pagenumber.markup">
+ <!-- no-op in HTML -->
+</xsl:template>
+
+
+<xsl:template name="olink.outline">
+ <xsl:param name="outline.base.uri"/>
+ <xsl:param name="localinfo"/>
+ <xsl:param name="return" select="href"/>
+
+ <xsl:variable name="outline-file" select="concat($outline.base.uri, $olink.outline.ext)"/>
+
+ <xsl:variable name="outline" select="document($outline-file,.)/div"/>
+
+ <xsl:variable name="node-href">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:value-of select="$node/@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/@href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="node-xref">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:copy-of select="$node/xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$return = 'href'">
+ <xsl:value-of select="$node-href"/>
+ </xsl:when>
+ <xsl:when test="$return = 'xref'">
+ <xsl:value-of select="$node-xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$node-xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="xref.xreflabel">
+ <!-- called to process an xreflabel...you might use this to make -->
+ <!-- xreflabels come out in the right font for different targets, -->
+ <!-- for example. -->
+ <xsl:param name="target" select="."/>
+ <xsl:value-of select="$target/@xreflabel"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="title" mode="xref">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="command" mode="xref">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="function" mode="xref">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <!-- FIXME: what about the case where titleabbrev is inside the info? -->
+ <xsl:when test="$purpose = 'xref' and titleabbrev">
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="chapter|appendix" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <xsl:when test="$purpose = 'xref'">
+ <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <xsl:copy-of select="$title"/>
+ </em>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.subtitle.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="subtitle"/>
+
+ <xsl:copy-of select="$subtitle"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.label.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="label"/>
+
+ <xsl:copy-of select="$label"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.pagenumber.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="pagenumber"/>
+
+ <xsl:copy-of select="$pagenumber"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.direction.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="direction"/>
+
+ <xsl:copy-of select="$direction"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.olink.docname.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="docname"/>
+
+ <span class="olinkdocname">
+ <xsl:copy-of select="$docname"/>
+ </span>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/engine/SCons/Tool/docbook/docs/SConstruct b/src/engine/SCons/Tool/docbook/docs/SConstruct
new file mode 100644
index 0000000..4c048d5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docs/SConstruct
@@ -0,0 +1,34 @@
+#
+# Copyright (c) 2001-2010 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+import os
+
+env = Environment(ENV = os.environ,
+ tools = ['docbook'])
+
+env.DocbookPdf('manual', xsl='pdf.xsl')
+#env.DocbookPdf('reference', xsl='pdf.xsl')
+
+env.DocbookHtml('manual', xsl='html.xsl')
+#env.DocbookHtml('reference', xsl='html.xsl')
+
diff --git a/src/engine/SCons/Tool/docbook/docs/html.xsl b/src/engine/SCons/Tool/docbook/docs/html.xsl
new file mode 100644
index 0000000..f53e1b3
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docs/html.xsl
@@ -0,0 +1,55 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001-2010 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="file:///usr/share/xml/docbook/stylesheet/docbook-xsl/html/docbook.xsl"/>
+
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/docs/manual.xml b/src/engine/SCons/Tool/docbook/docs/manual.xml
new file mode 100644
index 0000000..e232c6a
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docs/manual.xml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (c) 2001-2010 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<article>
+ <title>The SCons Docbook tool</title>
+ <articleinfo>
+ <author>
+ <surname>Dirk Baechle</surname>
+ </author>
+ <pubdate>2010-12-30</pubdate>
+ </articleinfo>
+<section id="basics"><title>Basics</title>
+<para>This tool tries to make working with Docbook in SCons a little easier.
+It provides several toolchains for creating different output formats,
+like HTML or PDF. Contained in the package is
+a distribution of the Docbook XSL stylesheets as of version 1.76.1.
+As long as you don't specify your own stylesheets for customization (see <link linkend="stylesheet">Selecting stylesheet</link>),
+these official versions are picked as default...which should reduce
+the inevitable setup hassles for you.
+</para>
+<para>Implicit dependencies to images and XIncludes are detected automatically
+if you meet the HTML requirements (see <link linkend="requirements">Requirements</link>). The additional
+stylesheet <literal>utils/xmldepend.xsl</literal> by Paul DuBois is used for this purpose.
+</para>
+<para>Note, that there is no support for XML catalog resolving offered! This tool calls
+the XSLT processors and PDF renderers with the stylesheets you specified, that's it.
+The rest lies in your hands and you still have to know what you're doing when
+resolving names via a catalog.
+</para>
+<section id="install"><title>Install</title>
+<para>Installing it, requires you to copy (or, even better: checkout) the contents of the
+package's <literal>docbook</literal> folder to
+</para>
+<orderedlist><listitem><para><quote><literal>/path_to_your_project/site_scons/site_tools/docbook</literal></quote>, if you need the Docbook Tool in one project only, or
+</para>
+</listitem>
+<listitem><para><quote><literal>~/.scons/site_scons/site_tools/docbook</literal></quote>, for a system-wide installation under your current login.
+</para>
+</listitem>
+</orderedlist>
+<para>For more infos about this, please refer to
+</para>
+<itemizedlist><listitem><para>the SCons User's Guide, chap. 19.7 "Where to put your custom Builders and Tools" and
+</para>
+</listitem>
+<listitem><para>the SCons Tools Wiki page at <ulink url="http://scons.org/wiki/ToolsIndex">http://scons.org/wiki/ToolsIndex</ulink>.
+</para>
+</listitem>
+</itemizedlist>
+</section>
+<section id="activation"><title>How to activate</title>
+<para>For activating the tool "docbook", you have to add its name to the Environment constructor,
+like this
+</para>
+<screen>env = Environment(tools=['docbook'])
+</screen>
+<para>On its startup, the Docbook tool tries to find a required <literal>xsltproc</literal> processor, and
+a PDF renderer, e.g. <literal>fop</literal>. So make sure that these are added to your system's environment
+<literal>PATH</literal> and can be called directly, without specifying their full path.
+</para>
+</section>
+<section id="requirements"><title>Requirements</title>
+<para>For the most basic processing of Docbook to HTML, you need to have installed
+</para>
+<itemizedlist><listitem><para>the Python <literal>lxml</literal> binding to <literal>libxml2</literal>, or
+</para>
+</listitem>
+<listitem><para>the direct Python bindings for <literal>libxml2/libxslt</literal>, or
+</para>
+</listitem>
+<listitem><para>a standalone XSLT processor, currently detected are <literal>xsltproc</literal>, <literal>saxon</literal>, <literal>saxon-xslt</literal>
+and <literal>xalan</literal>.
+</para>
+</listitem>
+</itemizedlist>
+<para>Rendering to PDF requires you to have one of the applications <literal>fop</literal>, <literal>xep</literal> or <literal>jw</literal>
+installed.
+</para>
+</section>
+</section>
+<section id="process"><title>Processing documents</title>
+<para>Creating a HTML or PDF document is very simple and straightforward. Say
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml('manual.html', 'manual.xml')
+env.DocbookPdf('manual.pdf', 'manual.xml')
+</screen>
+<para>to get both outputs from your XML source <literal>manual.xml</literal>. As a shortcut, you can
+give the stem of the filenames alone, like this:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml('manual')
+env.DocbookPdf('manual')
+</screen>
+<para>and get the same result. Target and source lists are also supported:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml(['manual.html','reference.html'], ['manual.xml','reference.xml'])
+</screen>
+<para>or even
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtml(['manual','reference'])
+</screen>
+<important><para>Whenever you leave out the list of sources, you may not specify a file extension! The
+Tool uses the given names as file stems, and adds the suffixes for target and source files
+accordingly.
+</para>
+</important>
+<para>The rules given above are valid for the Builders <literal>DocbookHtml</literal>, <literal>DocbookPdf</literal>,
+<literal>DocbookSlidePdf</literal> and <literal>DocbookXInclude</literal>. For the <literal>DocbookMan</literal> transformation you
+can specify a target name, but the actual output names are automatically set from
+the <literal>refname</literal> entries in your XML source.
+</para>
+<para>Please refer to <link linkend="chunked">the section Chunked output</link> for more infos about the other Builders.
+</para>
+</section>
+<section id="stylesheet"><title>Selecting your own stylesheet</title>
+<para>If you want to use a specific XSL file, you can set the additional <literal>xsl</literal> parameter to your
+Builder call as follows:
+</para>
+<screen>env.DocbookHtml('other.html', 'manual.xml', xsl='html.xsl')
+</screen>
+<para>Since this may get tedious if you always use the same local naming for your customized XSL files,
+e.g. <literal>html.xsl</literal> for HTML and <literal>pdf.xsl</literal> for PDF output, a set of variables for setting the
+default XSL name is provided. These are:
+</para>
+<screen>DOCBOOK_DEFAULT_XSL_HTML
+DOCBOOK_DEFAULT_XSL_HTMLCHUNKED
+DOCBOOK_DEFAULT_XSL_HTMLHELP
+DOCBOOK_DEFAULT_XSL_PDF
+DOCBOOK_DEFAULT_XSL_MAN
+DOCBOOK_DEFAULT_XSL_SLIDESPDF
+DOCBOOK_DEFAULT_XSL_SLIDESHTML
+</screen>
+<para>and you can set them when constructing your environment:
+</para>
+<screen>env = Environment(tools=['docbook'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+env.DocbookHtml('manual') # now uses html.xsl
+</screen>
+</section>
+<section id="chunked"><title>Chunked output</title>
+<para>The Builders <literal>DocbookHtmlChunked</literal>, <literal>DocbookHtmlhelp</literal> and <literal>DocbookSlidesHtml</literal>
+are special, in that:
+</para>
+<orderedlist><listitem><para>they create a large set of files, where the exact names and their number depend
+on the content of the source file, and
+</para>
+</listitem>
+<listitem><para>the main target is always named <literal>index.html</literal>, i.e. the output name for the
+XSL transformation is not picked up by the stylesheets.
+</para>
+</listitem>
+</orderedlist>
+<para>As a result, there is simply no use in specifying a target HTML name.
+So the basic syntax for these builders is:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual')
+</screen>
+<para>Only if you use the <literal>root.filename</literal> (<literal>titlefoil.html</literal> for slides) parameter in
+your own stylesheets you have to give the new target name. This ensures that the
+dependencies get correct, especially for the cleanup via <quote><literal>scons -c</literal></quote>:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('mymanual.html','manual', xsl='htmlhelp.xsl')
+</screen>
+<para>Some basic support for the <literal>base.dir</literal> is added (this has not been properly tested
+with variant dirs, yet!). You can add the <literal>base_dir</literal> keyword to your Builder
+call, and the given prefix gets prepended to all the created filenames:
+</para>
+<screen>env = Environment(tools=['docbook'])
+env.DocbookHtmlhelp('manual', xsl='htmlhelp.xsl', base_dir='output/')
+</screen>
+<para>Make sure that you don't forget the trailing slash for the base folder, else
+your files get renamed only!
+</para>
+</section>
+<section id="builders"><title>All builders</title>
+<para>A simple list of all builders currently available:
+</para>
+<variablelist><varlistentry><term>DocbookHtml
+</term>
+<listitem><para>Single HTML file.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>DocbookHtmlChunked
+</term>
+<listitem><para>Chunked HTML files, with support for the <literal>base.dir</literal> parameter. The <literal>chunkfast.xsl</literal>
+file (requires "EXSLT") is used as the default stylesheet.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>DocbookHtmlhelp
+</term>
+<listitem><para>Htmlhelp files, with support for <literal>base.dir</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>DocbookPdf
+</term>
+<listitem><para>PDF output.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>DocbookMan
+</term>
+<listitem><para>Man pages.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>DocbookSlidesPdf
+</term>
+<listitem><para>Slides in PDF format.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>DocbookSlidesHtml
+</term>
+<listitem><para>Slides in HTML format, with support for <literal>base.dir</literal>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>DocbookXInclude
+</term>
+<listitem><para>Can be used to resolve XIncludes in a preprocessing step.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</section>
+<section id="more"><title>Need more?</title>
+<para>This work is still in a very basic state and hasn't been tested well
+with things like variant dirs, yet. Unicode problems and poor performance
+with large input files may occur. There will definitely arise the need for
+adding features, or a variable. Let us know if you can think of a nice
+improvement or have worked on a bugfix/patch with success. Enter your issues at the
+Launchpad bug tracker for the Docbook Tool, or write to the User General Discussion
+list of SCons at <literal>users@scons.tigris.org</literal>.
+</para>
+</section>
+
+</article>
diff --git a/src/engine/SCons/Tool/docbook/docs/pdf.xsl b/src/engine/SCons/Tool/docbook/docs/pdf.xsl
new file mode 100644
index 0000000..25b4433
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/docs/pdf.xsl
@@ -0,0 +1,62 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001-2010 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="file:///usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl"/>
+
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="toc.indent.width" select="0"></xsl:param>
+<xsl:param name="body.start.indent">0pt</xsl:param>
+<xsl:param name="shade.verbatim" select="1"></xsl:param>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<xsl:template match="varlistentry/term">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/src/engine/SCons/Tool/docbook/utils/xmldepend.xsl b/src/engine/SCons/Tool/docbook/utils/xmldepend.xsl
new file mode 100644
index 0000000..e70e1b5
--- /dev/null
+++ b/src/engine/SCons/Tool/docbook/utils/xmldepend.xsl
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!--
+xmldepend.xsl - Find files that an XML document refers to/depends on.
+
+This stylesheet can be used to build Makefile dependency lists.
+
+Dependencies are defined as:
+- Files named in <xi:xinclude> elements. These must be traversed to
+ find any subdependencies, unless parse attribute is "text".
+- Files named by the fileref attribute of any other element.
+
+Who-to-blame:
+Paul DuBois
+paul@kitebird.com
+2005-08-16
+
+Change history:
+2005-08-16
+- Version 1.00.
+
+TODO:
+- add params for whether to produce debugging output, etc.
+-->
+
+<xsl:output method="text" indent="no"/>
+
+<!-- BEGIN PARAMETERS -->
+
+<xsl:param name="xmldepend.terminator" select="'&#10;'"/>
+
+<!-- END PARAMETERS -->
+
+<!-- BEGIN UTILITY TEMPLATES -->
+
+<!--
+ Given a pathname, return the basename (part after last '/'):
+ - If path contains no '/' separators, return entire value
+ - If path contains '/' separator, recurse using part after first one
+-->
+
+<xsl:template name="path-basename">
+ <xsl:param name="path"/>
+ <xsl:choose>
+ <xsl:when test="not(contains($path,'/'))">
+ <xsl:value-of select="$path"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="path-basename">
+ <xsl:with-param name="path" select="substring-after($path,'/')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!--
+ Given a pathname, return the dirname (part up through last '/'):
+ - If path contains no '/' separators, return empty string
+ - If path contains '/' separator, return part up through last one
+ (which is the same as the part before the basename)
+-->
+
+<xsl:template name="path-dirname">
+ <xsl:param name="path"/>
+ <xsl:choose>
+ <xsl:when test="not(contains($path,'/'))">
+ <!-- return nothing -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="basename">
+ <xsl:call-template name="path-basename">
+ <xsl:with-param name="path" select="$path"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="substring( $path,1,string-length($path) - string-length($basename) )"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- END UTILITY TEMPLATES -->
+
+<!--
+ Find XInclude directives, spit out the href value that names
+ the included file, and process the file recursively if it's
+ an XML file.
+-->
+
+<xsl:template match="xi:include" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xsl:param name="curdir"/>
+
+ <xsl:variable name="href-dir">
+ <xsl:call-template name="path-dirname">
+ <xsl:with-param name="path" select="@href"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!--
+ Display pathname of included file. It should be prefixed by
+ the directory of the referring file unless the included file
+ is an absolute pathname.
+ -->
+
+ <xsl:if test="not(starts-with(@href,'/'))">
+ <xsl:value-of select="$curdir"/>
+ </xsl:if>
+ <xsl:value-of select="@href"/>
+ <xsl:value-of select="$xmldepend.terminator"/>
+
+ <!--
+ Process included file (unless parse="text").
+ Pass directory of included file while processing it
+ so that relative pathnames referenced in the document
+ can be resolved properly.
+ -->
+
+ <xsl:if test="not(@parse = 'text')">
+ <xsl:for-each select="document(@href)">
+ <xsl:apply-templates>
+ <xsl:with-param name="curdir">
+ <xsl:if test="not(starts-with(@href,'/'))">
+ <xsl:value-of select="$curdir"/>
+ </xsl:if>
+ <xsl:value-of select="$href-dir"/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ </xsl:if>
+</xsl:template>
+
+<!--
+ Several elements have a fileref attribute. Spit out the file named
+ by any of them. Resolve the filename relative to the directory of
+ the referencing file unless the name is an absolute pathname.
+-->
+
+<xsl:template match="*[@fileref]">
+ <xsl:param name="curdir"/>
+
+ <xsl:if test="not(starts-with(@fileref,'/'))">
+ <xsl:value-of select="$curdir"/>
+ </xsl:if>
+ <xsl:value-of select="@fileref"/>
+ <xsl:value-of select="$xmldepend.terminator"/>
+</xsl:template>
+
+<!-- Identity transform, but keep track of current document directory -->
+
+<xsl:template match="*">
+ <xsl:param name="curdir"/>
+ <xsl:apply-templates select="*">
+ <xsl:with-param name="curdir" select="$curdir"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/dvi.py b/src/engine/SCons/Tool/dvi.py
index 496e698..f5caf21 100644
--- a/src/engine/SCons/Tool/dvi.py
+++ b/src/engine/SCons/Tool/dvi.py
@@ -5,7 +5,7 @@ Common DVI Builder definition for various other Tool modules that use it.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Common DVI Builder definition for various other Tool modules that use it.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/dvi.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/dvi.py 2014/03/02 14:18:15 garyo"
import SCons.Builder
import SCons.Tool
diff --git a/src/engine/SCons/Tool/dvi.xml b/src/engine/SCons/Tool/dvi.xml
index cd7e682..7699629 100644
--- a/src/engine/SCons/Tool/dvi.xml
+++ b/src/engine/SCons/Tool/dvi.xml
@@ -1,13 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="dvi">
<summary>
+<para>
Attaches the &b-DVI; builder to the
construction environment.
+</para>
</summary>
<sets>
</sets>
@@ -17,6 +38,7 @@ construction environment.
<builder name="DVI">
<summary>
+<para>
Builds a <filename>.dvi</filename> file
from a <filename>.tex</filename>,
<filename>.ltx</filename> or <filename>.latex</filename> input file.
@@ -47,21 +69,26 @@ and will examine the contents
<filename>.log</filename>
file and re-run the &cv-link-LATEXCOM; command
if the log file says it is necessary.
+</para>
+<para>
The suffix <filename>.dvi</filename>
(hard-coded within TeX itself)
is automatically added to the target
if it is not already present.
Examples:
+</para>
-<example>
+<example_commands>
# builds from aaa.tex
env.DVI(target = 'aaa.dvi', source = 'aaa.tex')
# builds bbb.dvi
env.DVI(target = 'bbb', source = 'bbb.ltx')
# builds from ccc.latex
env.DVI(target = 'ccc.dvi', source = 'ccc.latex')
-</example>
+</example_commands>
</summary>
</builder>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/dvipdf.py b/src/engine/SCons/Tool/dvipdf.py
index 5fe8d88..a49a112 100644
--- a/src/engine/SCons/Tool/dvipdf.py
+++ b/src/engine/SCons/Tool/dvipdf.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/dvipdf.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/dvipdf.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Defaults
diff --git a/src/engine/SCons/Tool/dvipdf.xml b/src/engine/SCons/Tool/dvipdf.xml
index c9ad20b..add7823 100644
--- a/src/engine/SCons/Tool/dvipdf.xml
+++ b/src/engine/SCons/Tool/dvipdf.xml
@@ -1,51 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="dvipdf">
<summary>
+<para>
Sets construction variables for the dvipdf utility.
+</para>
</summary>
<sets>
-DVIPDF
-DVIPDFFLAGS
-DVIPDFCOM
+<item>DVIPDF</item>
+<item>DVIPDFFLAGS</item>
+<item>DVIPDFCOM</item>
</sets>
<uses>
-DVIPDFCOMSTR
+<item>DVIPDFCOMSTR</item>
</uses>
</tool>
<cvar name="DVIPDF">
<summary>
+<para>
The TeX DVI file to PDF file converter.
+</para>
</summary>
</cvar>
<cvar name="DVIPDFFLAGS">
<summary>
+<para>
General options passed to the TeX DVI file to PDF file converter.
+</para>
</summary>
</cvar>
<cvar name="DVIPDFCOM">
<summary>
+<para>
The command line used to convert TeX DVI files into a PDF file.
+</para>
</summary>
</cvar>
<cvar name="DVIPDFCOMSTR">
<summary>
+<para>
The string displayed when a TeX DVI file
is converted into a PDF file.
If this is not set, then &cv-link-DVIPDFCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="PDFCOM">
<summary>
+<para>
A deprecated synonym for &cv-link-DVIPDFCOM;.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/dvips.py b/src/engine/SCons/Tool/dvips.py
index a0f9e6f..2b09245 100644
--- a/src/engine/SCons/Tool/dvips.py
+++ b/src/engine/SCons/Tool/dvips.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/dvips.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/dvips.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/dvips.xml b/src/engine/SCons/Tool/dvips.xml
index bf08b5b..706b2e2 100644
--- a/src/engine/SCons/Tool/dvips.xml
+++ b/src/engine/SCons/Tool/dvips.xml
@@ -1,27 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="dvips">
<summary>
+<para>
Sets construction variables for the dvips utility.
+</para>
</summary>
<sets>
-DVIPS
-DVIPSFLAGS
-PSCOM
-PSPREFIX
-PSSUFFIX
+<item>DVIPS</item>
+<item>DVIPSFLAGS</item>
+<item>PSCOM</item>
+<item>PSPREFIX</item>
+<item>PSSUFFIX</item>
</sets>
<uses>
-PSCOMSTR
+<item>PSCOMSTR</item>
</uses>
</tool>
<builder name="PostScript">
<summary>
+<para>
Builds a <filename>.ps</filename> file
from a <filename>.dvi</filename> input file
(or, by extension, a <filename>.tex</filename>,
@@ -32,50 +54,65 @@ The suffix specified by the &cv-link-PSSUFFIX; construction variable
(<filename>.ps</filename> by default)
is added automatically to the target
if it is not already present. Example:
+</para>
-<example>
+<example_commands>
# builds from aaa.tex
env.PostScript(target = 'aaa.ps', source = 'aaa.tex')
# builds bbb.ps from bbb.dvi
env.PostScript(target = 'bbb', source = 'bbb.dvi')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="DVIPS">
<summary>
+<para>
The TeX DVI file to PostScript converter.
+</para>
</summary>
</cvar>
<cvar name="DVIPSFLAGS">
<summary>
+<para>
General options passed to the TeX DVI file to PostScript converter.
+</para>
</summary>
</cvar>
<cvar name="PSCOM">
<summary>
+<para>
The command line used to convert TeX DVI files into a PostScript file.
+</para>
</summary>
</cvar>
<cvar name="PSCOMSTR">
<summary>
+<para>
The string displayed when a TeX DVI file
is converted into a PostScript file.
If this is not set, then &cv-link-PSCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="PSPREFIX">
<summary>
+<para>
The prefix used for PostScript file names.
+</para>
</summary>
</cvar>
<cvar name="PSSUFFIX">
<summary>
+<para>
The prefix used for PostScript file names.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/f03.py b/src/engine/SCons/Tool/f03.py
index 7915625..258db70 100644
--- a/src/engine/SCons/Tool/f03.py
+++ b/src/engine/SCons/Tool/f03.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f03.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/f03.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/f03.xml b/src/engine/SCons/Tool/f03.xml
index fa16a56..bc2bf26 100644
--- a/src/engine/SCons/Tool/f03.xml
+++ b/src/engine/SCons/Tool/f03.xml
@@ -1,79 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="f03">
<summary>
+<para>
Set construction variables for generic POSIX Fortran 03 compilers.
+</para>
</summary>
<sets>
-F03
-F03FLAGS
-F03COM
-F03PPCOM
-SHF03
-SHF03FLAGS
-SHF03COM
-SHF03PPCOM
-_F03INCFLAGS
+<item>F03</item>
+<item>F03FLAGS</item>
+<item>F03COM</item>
+<item>F03PPCOM</item>
+<item>SHF03</item>
+<item>SHF03FLAGS</item>
+<item>SHF03COM</item>
+<item>SHF03PPCOM</item>
+<item>_F03INCFLAGS</item>
</sets>
<uses>
-F03COMSTR
-F03PPCOMSTR
-SHF03COMSTR
-SHF03PPCOMSTR
+<item>F03COMSTR</item>
+<item>F03PPCOMSTR</item>
+<item>SHF03COMSTR</item>
+<item>SHF03PPCOMSTR</item>
</uses>
</tool>
<cvar name="F03">
<summary>
+<para>
The Fortran 03 compiler.
You should normally set the &cv-link-FORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-F03; if you need to use a specific compiler
or compiler version for Fortran 03 files.
+</para>
</summary>
</cvar>
<cvar name="F03COM">
<summary>
+<para>
The command line used to compile a Fortran 03 source file to an object file.
You only need to set &cv-link-F03COM; if you need to use a specific
command line for Fortran 03 files.
You should normally set the &cv-link-FORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F03COMSTR">
<summary>
+<para>
The string displayed when a Fortran 03 source file
is compiled to an object file.
If this is not set, then &cv-link-F03COM; or &cv-link-FORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="F03FILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the F03 dialect will be used. By
default, this is ['.f03']
+</para>
</summary>
</cvar>
<cvar name="F03PPFILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the compilation + preprocessor pass for
F03 dialect will be used. By default, this is empty
+</para>
</summary>
</cvar>
<cvar name="F03FLAGS">
<summary>
+<para>
General user-specified options that are passed to the Fortran 03 compiler.
Note that this variable does
<emphasis>not</emphasis>
@@ -91,11 +123,13 @@ You should normally set the &cv-link-FORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="_F03INCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the Fortran 03 compiler command-line options
for specifying directories to be searched for include files.
@@ -103,11 +137,13 @@ The value of &cv-link-_F03INCFLAGS; is created
by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
to the beginning and end
of each directory in &cv-link-F03PATH;.
+</para>
</summary>
</cvar>
<cvar name="F03PATH">
<summary>
+<para>
The list of directories that the Fortran 03 compiler will search for include
directories. The implicit dependency scanner will search these
directories for include files. Don't explicitly put include directory
@@ -123,20 +159,24 @@ You should normally set the &cv-link-FORTRANPATH; variable,
which specifies the include path
for the default Fortran compiler
for all Fortran versions.
+</para>
-<example>
+<example_commands>
env = Environment(F03PATH='#/include')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
include = Dir('include')
env = Environment(F03PATH=include)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-link-_F03INCFLAGS;
@@ -150,15 +190,17 @@ of each directory in &cv-link-F03PATH;.
Any command lines you define that need
the F03PATH directory list should
include &cv-link-_F03INCFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(F03COM="my_compiler $_F03INCFLAGS -c -o $TARGET $SOURCE")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="F03PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 03 source file to an object file
after first running the file through the C preprocessor.
Any options specified in the &cv-link-F03FLAGS; and &cv-link-CPPFLAGS; construction variables
@@ -168,32 +210,38 @@ C-preprocessor command line for Fortran 03 files.
You should normally set the &cv-link-FORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F03PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 03 source file
is compiled to an object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-F03PPCOM; or &cv-link-FORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF03">
<summary>
+<para>
The Fortran 03 compiler used for generating shared-library objects.
You should normally set the &cv-link-SHFORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-SHF03; if you need to use a specific compiler
or compiler version for Fortran 03 files.
+</para>
</summary>
</cvar>
<cvar name="SHF03COM">
<summary>
+<para>
The command line used to compile a Fortran 03 source file
to a shared-library object file.
You only need to set &cv-link-SHF03COM; if you need to use a specific
@@ -201,20 +249,24 @@ command line for Fortran 03 files.
You should normally set the &cv-link-SHFORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF03COMSTR">
<summary>
+<para>
The string displayed when a Fortran 03 source file
is compiled to a shared-library object file.
If this is not set, then &cv-link-SHF03COM; or &cv-link-SHFORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF03FLAGS">
<summary>
+<para>
Options that are passed to the Fortran 03 compiler
to generated shared-library objects.
You only need to set &cv-link-SHF03FLAGS; if you need to define specific
@@ -223,11 +275,13 @@ You should normally set the &cv-link-SHFORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF03PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 03 source file to a
shared-library object file
after first running the file through the C preprocessor.
@@ -238,15 +292,20 @@ C-preprocessor command line for Fortran 03 files.
You should normally set the &cv-link-SHFORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF03PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 03 source file
is compiled to a shared-library object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-SHF03PPCOM; or &cv-link-SHFORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/f77.py b/src/engine/SCons/Tool/f77.py
index 7f49892..c56f727 100644
--- a/src/engine/SCons/Tool/f77.py
+++ b/src/engine/SCons/Tool/f77.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f77.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/f77.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Scanner.Fortran
diff --git a/src/engine/SCons/Tool/f77.xml b/src/engine/SCons/Tool/f77.xml
index 167a7d7..8410705 100644
--- a/src/engine/SCons/Tool/f77.xml
+++ b/src/engine/SCons/Tool/f77.xml
@@ -1,92 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="f77">
<summary>
+<para>
Set construction variables for generic POSIX Fortran 77 compilers.
+</para>
</summary>
<sets>
-F77
-F77FLAGS
-F77COM
-F77PPCOM
-F77FILESUFFIXES
-F77PPFILESUFFIXES
-FORTRAN
-FORTRANFLAGS
-FORTRANCOM
-SHF77
-SHF77FLAGS
-SHF77COM
-SHF77PPCOM
-SHFORTRAN
-SHFORTRANFLAGS
-SHFORTRANCOM
-SHFORTRANPPCOM
-_F77INCFLAGS
+<item>F77</item>
+<item>F77FLAGS</item>
+<item>F77COM</item>
+<item>F77PPCOM</item>
+<item>F77FILESUFFIXES</item>
+<item>F77PPFILESUFFIXES</item>
+<item>FORTRAN</item>
+<item>FORTRANFLAGS</item>
+<item>FORTRANCOM</item>
+<item>SHF77</item>
+<item>SHF77FLAGS</item>
+<item>SHF77COM</item>
+<item>SHF77PPCOM</item>
+<item>SHFORTRAN</item>
+<item>SHFORTRANFLAGS</item>
+<item>SHFORTRANCOM</item>
+<item>SHFORTRANPPCOM</item>
+<item>_F77INCFLAGS</item>
</sets>
<uses>
-F77COMSTR
-F77PPCOMSTR
-FORTRANCOMSTR
-FORTRANPPCOMSTR
-SHF77COMSTR
-SHF77PPCOMSTR
-SHFORTRANCOMSTR
-SHFORTRANPPCOMSTR
+<item>F77COMSTR</item>
+<item>F77PPCOMSTR</item>
+<item>FORTRANCOMSTR</item>
+<item>FORTRANPPCOMSTR</item>
+<item>SHF77COMSTR</item>
+<item>SHF77PPCOMSTR</item>
+<item>SHFORTRANCOMSTR</item>
+<item>SHFORTRANPPCOMSTR</item>
</uses>
</tool>
<cvar name="F77">
<summary>
+<para>
The Fortran 77 compiler.
You should normally set the &cv-link-FORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-F77; if you need to use a specific compiler
or compiler version for Fortran 77 files.
+</para>
</summary>
</cvar>
<cvar name="F77COM">
<summary>
+<para>
The command line used to compile a Fortran 77 source file to an object file.
You only need to set &cv-link-F77COM; if you need to use a specific
command line for Fortran 77 files.
You should normally set the &cv-link-FORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F77FILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the F77 dialect will be used. By
default, this is ['.f77']
+</para>
</summary>
</cvar>
<cvar name="F77PPFILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the compilation + preprocessor pass for
F77 dialect will be used. By default, this is empty
+</para>
</summary>
</cvar>
<cvar name="F77COMSTR">
<summary>
+<para>
The string displayed when a Fortran 77 source file
is compiled to an object file.
If this is not set, then &cv-link-F77COM; or &cv-link-FORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="F77FLAGS">
<summary>
+<para>
General user-specified options that are passed to the Fortran 77 compiler.
Note that this variable does
<emphasis>not</emphasis>
@@ -104,11 +136,13 @@ You should normally set the &cv-link-FORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="_F77INCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the Fortran 77 compiler command-line options
for specifying directories to be searched for include files.
@@ -116,11 +150,13 @@ The value of &cv-link-_F77INCFLAGS; is created
by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
to the beginning and end
of each directory in &cv-link-F77PATH;.
+</para>
</summary>
</cvar>
<cvar name="F77PATH">
<summary>
+<para>
The list of directories that the Fortran 77 compiler will search for include
directories. The implicit dependency scanner will search these
directories for include files. Don't explicitly put include directory
@@ -136,20 +172,24 @@ You should normally set the &cv-link-FORTRANPATH; variable,
which specifies the include path
for the default Fortran compiler
for all Fortran versions.
+</para>
-<example>
+<example_commands>
env = Environment(F77PATH='#/include')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
include = Dir('include')
env = Environment(F77PATH=include)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-link-_F77INCFLAGS;
@@ -163,15 +203,17 @@ of each directory in &cv-link-F77PATH;.
Any command lines you define that need
the F77PATH directory list should
include &cv-link-_F77INCFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(F77COM="my_compiler $_F77INCFLAGS -c -o $TARGET $SOURCE")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="F77PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 77 source file to an object file
after first running the file through the C preprocessor.
Any options specified in the &cv-link-F77FLAGS; and &cv-link-CPPFLAGS; construction variables
@@ -181,32 +223,38 @@ C-preprocessor command line for Fortran 77 files.
You should normally set the &cv-link-FORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F77PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 77 source file
is compiled to an object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-F77PPCOM; or &cv-link-FORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF77">
<summary>
+<para>
The Fortran 77 compiler used for generating shared-library objects.
You should normally set the &cv-link-SHFORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-SHF77; if you need to use a specific compiler
or compiler version for Fortran 77 files.
+</para>
</summary>
</cvar>
<cvar name="SHF77COM">
<summary>
+<para>
The command line used to compile a Fortran 77 source file
to a shared-library object file.
You only need to set &cv-link-SHF77COM; if you need to use a specific
@@ -214,20 +262,24 @@ command line for Fortran 77 files.
You should normally set the &cv-link-SHFORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF77COMSTR">
<summary>
+<para>
The string displayed when a Fortran 77 source file
is compiled to a shared-library object file.
If this is not set, then &cv-link-SHF77COM; or &cv-link-SHFORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF77FLAGS">
<summary>
+<para>
Options that are passed to the Fortran 77 compiler
to generated shared-library objects.
You only need to set &cv-link-SHF77FLAGS; if you need to define specific
@@ -236,11 +288,13 @@ You should normally set the &cv-link-SHFORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF77PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 77 source file to a
shared-library object file
after first running the file through the C preprocessor.
@@ -251,15 +305,20 @@ C-preprocessor command line for Fortran 77 files.
You should normally set the &cv-link-SHFORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF77PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 77 source file
is compiled to a shared-library object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-SHF77PPCOM; or &cv-link-SHFORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/f90.py b/src/engine/SCons/Tool/f90.py
index bd07ae0..39be3b4 100644
--- a/src/engine/SCons/Tool/f90.py
+++ b/src/engine/SCons/Tool/f90.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f90.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/f90.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Scanner.Fortran
diff --git a/src/engine/SCons/Tool/f90.xml b/src/engine/SCons/Tool/f90.xml
index d60c17d..c1c895e 100644
--- a/src/engine/SCons/Tool/f90.xml
+++ b/src/engine/SCons/Tool/f90.xml
@@ -1,79 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="f90">
<summary>
+<para>
Set construction variables for generic POSIX Fortran 90 compilers.
+</para>
</summary>
<sets>
-F90
-F90FLAGS
-F90COM
-F90PPCOM
-SHF90
-SHF90FLAGS
-SHF90COM
-SHF90PPCOM
-_F90INCFLAGS
+<item>F90</item>
+<item>F90FLAGS</item>
+<item>F90COM</item>
+<item>F90PPCOM</item>
+<item>SHF90</item>
+<item>SHF90FLAGS</item>
+<item>SHF90COM</item>
+<item>SHF90PPCOM</item>
+<item>_F90INCFLAGS</item>
</sets>
<uses>
-F90COMSTR
-F90PPCOMSTR
-SHF90COMSTR
-SHF90PPCOMSTR
+<item>F90COMSTR</item>
+<item>F90PPCOMSTR</item>
+<item>SHF90COMSTR</item>
+<item>SHF90PPCOMSTR</item>
</uses>
</tool>
<cvar name="F90">
<summary>
+<para>
The Fortran 90 compiler.
You should normally set the &cv-link-FORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-F90; if you need to use a specific compiler
or compiler version for Fortran 90 files.
+</para>
</summary>
</cvar>
<cvar name="F90COM">
<summary>
+<para>
The command line used to compile a Fortran 90 source file to an object file.
You only need to set &cv-link-F90COM; if you need to use a specific
command line for Fortran 90 files.
You should normally set the &cv-link-FORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F90COMSTR">
<summary>
+<para>
The string displayed when a Fortran 90 source file
is compiled to an object file.
If this is not set, then &cv-link-F90COM; or &cv-link-FORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="F90FILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the F90 dialect will be used. By
default, this is ['.f90']
+</para>
</summary>
</cvar>
<cvar name="F90PPFILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the compilation + preprocessor pass for
F90 dialect will be used. By default, this is empty
+</para>
</summary>
</cvar>
<cvar name="F90FLAGS">
<summary>
+<para>
General user-specified options that are passed to the Fortran 90 compiler.
Note that this variable does
<emphasis>not</emphasis>
@@ -91,11 +123,13 @@ You should normally set the &cv-link-FORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="_F90INCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the Fortran 90 compiler command-line options
for specifying directories to be searched for include files.
@@ -103,11 +137,13 @@ The value of &cv-link-_F90INCFLAGS; is created
by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
to the beginning and end
of each directory in &cv-link-F90PATH;.
+</para>
</summary>
</cvar>
<cvar name="F90PATH">
<summary>
+<para>
The list of directories that the Fortran 90 compiler will search for include
directories. The implicit dependency scanner will search these
directories for include files. Don't explicitly put include directory
@@ -123,20 +159,24 @@ You should normally set the &cv-link-FORTRANPATH; variable,
which specifies the include path
for the default Fortran compiler
for all Fortran versions.
+</para>
-<example>
+<example_commands>
env = Environment(F90PATH='#/include')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
include = Dir('include')
env = Environment(F90PATH=include)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-link-_F90INCFLAGS;
@@ -150,15 +190,17 @@ of each directory in &cv-link-F90PATH;.
Any command lines you define that need
the F90PATH directory list should
include &cv-link-_F90INCFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(F90COM="my_compiler $_F90INCFLAGS -c -o $TARGET $SOURCE")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="F90PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 90 source file to an object file
after first running the file through the C preprocessor.
Any options specified in the &cv-link-F90FLAGS; and &cv-link-CPPFLAGS; construction variables
@@ -168,31 +210,37 @@ C-preprocessor command line for Fortran 90 files.
You should normally set the &cv-link-FORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F90PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 90 source file
is compiled after first running the file through the C preprocessor.
If this is not set, then &cv-link-F90PPCOM; or &cv-link-FORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF90">
<summary>
+<para>
The Fortran 90 compiler used for generating shared-library objects.
You should normally set the &cv-link-SHFORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-SHF90; if you need to use a specific compiler
or compiler version for Fortran 90 files.
+</para>
</summary>
</cvar>
<cvar name="SHF90COM">
<summary>
+<para>
The command line used to compile a Fortran 90 source file
to a shared-library object file.
You only need to set &cv-link-SHF90COM; if you need to use a specific
@@ -200,20 +248,24 @@ command line for Fortran 90 files.
You should normally set the &cv-link-SHFORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF90COMSTR">
<summary>
+<para>
The string displayed when a Fortran 90 source file
is compiled to a shared-library object file.
If this is not set, then &cv-link-SHF90COM; or &cv-link-SHFORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF90FLAGS">
<summary>
+<para>
Options that are passed to the Fortran 90 compiler
to generated shared-library objects.
You only need to set &cv-link-SHF90FLAGS; if you need to define specific
@@ -222,11 +274,13 @@ You should normally set the &cv-link-SHFORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF90PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 90 source file to a
shared-library object file
after first running the file through the C preprocessor.
@@ -237,15 +291,20 @@ C-preprocessor command line for Fortran 90 files.
You should normally set the &cv-link-SHFORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF90PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 90 source file
is compiled to a shared-library object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-SHF90PPCOM; or &cv-link-SHFORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/f95.py b/src/engine/SCons/Tool/f95.py
index 5c16d48..3acc39a 100644
--- a/src/engine/SCons/Tool/f95.py
+++ b/src/engine/SCons/Tool/f95.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f95.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/f95.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/f95.xml b/src/engine/SCons/Tool/f95.xml
index 5455f40..ab151a0 100644
--- a/src/engine/SCons/Tool/f95.xml
+++ b/src/engine/SCons/Tool/f95.xml
@@ -1,79 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="f95">
<summary>
+<para>
Set construction variables for generic POSIX Fortran 95 compilers.
+</para>
</summary>
<sets>
-F95
-F95FLAGS
-F95COM
-F95PPCOM
-SHF95
-SHF95FLAGS
-SHF95COM
-SHF95PPCOM
-_F95INCFLAGS
+<item>F95</item>
+<item>F95FLAGS</item>
+<item>F95COM</item>
+<item>F95PPCOM</item>
+<item>SHF95</item>
+<item>SHF95FLAGS</item>
+<item>SHF95COM</item>
+<item>SHF95PPCOM</item>
+<item>_F95INCFLAGS</item>
</sets>
<uses>
-F95COMSTR
-F95PPCOMSTR
-SHF95COMSTR
-SHF95PPCOMSTR
+<item>F95COMSTR</item>
+<item>F95PPCOMSTR</item>
+<item>SHF95COMSTR</item>
+<item>SHF95PPCOMSTR</item>
</uses>
</tool>
<cvar name="F95">
<summary>
+<para>
The Fortran 95 compiler.
You should normally set the &cv-link-FORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-F95; if you need to use a specific compiler
or compiler version for Fortran 95 files.
+</para>
</summary>
</cvar>
<cvar name="F95COM">
<summary>
+<para>
The command line used to compile a Fortran 95 source file to an object file.
You only need to set &cv-link-F95COM; if you need to use a specific
command line for Fortran 95 files.
You should normally set the &cv-link-FORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F95COMSTR">
<summary>
+<para>
The string displayed when a Fortran 95 source file
is compiled to an object file.
If this is not set, then &cv-link-F95COM; or &cv-link-FORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="F95FILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the F95 dialect will be used. By
default, this is ['.f95']
+</para>
</summary>
</cvar>
<cvar name="F95PPFILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the compilation + preprocessor pass for
F95 dialect will be used. By default, this is empty
+</para>
</summary>
</cvar>
<cvar name="F95FLAGS">
<summary>
+<para>
General user-specified options that are passed to the Fortran 95 compiler.
Note that this variable does
<emphasis>not</emphasis>
@@ -91,11 +123,13 @@ You should normally set the &cv-link-FORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="_F95INCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the Fortran 95 compiler command-line options
for specifying directories to be searched for include files.
@@ -103,11 +137,13 @@ The value of &cv-link-_F95INCFLAGS; is created
by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
to the beginning and end
of each directory in &cv-link-F95PATH;.
+</para>
</summary>
</cvar>
<cvar name="F95PATH">
<summary>
+<para>
The list of directories that the Fortran 95 compiler will search for include
directories. The implicit dependency scanner will search these
directories for include files. Don't explicitly put include directory
@@ -123,20 +159,24 @@ You should normally set the &cv-link-FORTRANPATH; variable,
which specifies the include path
for the default Fortran compiler
for all Fortran versions.
+</para>
-<example>
+<example_commands>
env = Environment(F95PATH='#/include')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
include = Dir('include')
env = Environment(F95PATH=include)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-link-_F95INCFLAGS;
@@ -150,15 +190,17 @@ of each directory in &cv-link-F95PATH;.
Any command lines you define that need
the F95PATH directory list should
include &cv-link-_F95INCFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(F95COM="my_compiler $_F95INCFLAGS -c -o $TARGET $SOURCE")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="F95PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 95 source file to an object file
after first running the file through the C preprocessor.
Any options specified in the &cv-link-F95FLAGS; and &cv-link-CPPFLAGS; construction variables
@@ -168,32 +210,38 @@ C-preprocessor command line for Fortran 95 files.
You should normally set the &cv-link-FORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="F95PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 95 source file
is compiled to an object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-F95PPCOM; or &cv-link-FORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF95">
<summary>
+<para>
The Fortran 95 compiler used for generating shared-library objects.
You should normally set the &cv-link-SHFORTRAN; variable,
which specifies the default Fortran compiler
for all Fortran versions.
You only need to set &cv-link-SHF95; if you need to use a specific compiler
or compiler version for Fortran 95 files.
+</para>
</summary>
</cvar>
<cvar name="SHF95COM">
<summary>
+<para>
The command line used to compile a Fortran 95 source file
to a shared-library object file.
You only need to set &cv-link-SHF95COM; if you need to use a specific
@@ -201,20 +249,24 @@ command line for Fortran 95 files.
You should normally set the &cv-link-SHFORTRANCOM; variable,
which specifies the default command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF95COMSTR">
<summary>
+<para>
The string displayed when a Fortran 95 source file
is compiled to a shared-library object file.
If this is not set, then &cv-link-SHF95COM; or &cv-link-SHFORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHF95FLAGS">
<summary>
+<para>
Options that are passed to the Fortran 95 compiler
to generated shared-library objects.
You only need to set &cv-link-SHF95FLAGS; if you need to define specific
@@ -223,11 +275,13 @@ You should normally set the &cv-link-SHFORTRANFLAGS; variable,
which specifies the user-specified options
passed to the default Fortran compiler
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF95PPCOM">
<summary>
+<para>
The command line used to compile a Fortran 95 source file to a
shared-library object file
after first running the file through the C preprocessor.
@@ -238,15 +292,20 @@ C-preprocessor command line for Fortran 95 files.
You should normally set the &cv-link-SHFORTRANPPCOM; variable,
which specifies the default C-preprocessor command line
for all Fortran versions.
+</para>
</summary>
</cvar>
<cvar name="SHF95PPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran 95 source file
is compiled to a shared-library object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-SHF95PPCOM; or &cv-link-SHFORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/filesystem.py b/src/engine/SCons/Tool/filesystem.py
index 431ad4c..3c124b7 100644
--- a/src/engine/SCons/Tool/filesystem.py
+++ b/src/engine/SCons/Tool/filesystem.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/filesystem.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/filesystem.py 2014/03/02 14:18:15 garyo"
import SCons
from SCons.Tool.install import copyFunc
diff --git a/src/engine/SCons/Tool/fortran.py b/src/engine/SCons/Tool/fortran.py
index 35fcd53..b3b0d0b 100644
--- a/src/engine/SCons/Tool/fortran.py
+++ b/src/engine/SCons/Tool/fortran.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/fortran.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/fortran.py 2014/03/02 14:18:15 garyo"
import re
diff --git a/src/engine/SCons/Tool/fortran.xml b/src/engine/SCons/Tool/fortran.xml
index 25720b6..c89ec3e 100644
--- a/src/engine/SCons/Tool/fortran.xml
+++ b/src/engine/SCons/Tool/fortran.xml
@@ -1,39 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="fortran">
<summary>
+<para>
Set construction variables for generic POSIX Fortran compilers.
+</para>
</summary>
<sets>
-FORTRAN
-FORTRANFLAGS
-FORTRANCOM
-SHFORTRAN
-SHFORTRANFLAGS
-SHFORTRANCOM
-SHFORTRANPPCOM
+<item>FORTRAN</item>
+<item>FORTRANFLAGS</item>
+<item>FORTRANCOM</item>
+<item>SHFORTRAN</item>
+<item>SHFORTRANFLAGS</item>
+<item>SHFORTRANCOM</item>
+<item>SHFORTRANPPCOM</item>
</sets>
<uses>
-FORTRANCOMSTR
-FORTRANPPCOMSTR
-SHFORTRANCOMSTR
-SHFORTRANPPCOMSTR
+<item>FORTRANCOMSTR</item>
+<item>FORTRANPPCOMSTR</item>
+<item>SHFORTRANCOMSTR</item>
+<item>SHFORTRANPPCOMSTR</item>
</uses>
</tool>
<cvar name="FORTRAN">
<summary>
+<para>
The default Fortran compiler
for all versions of Fortran.
+</para>
</summary>
</cvar>
<cvar name="FORTRANCOM">
<summary>
+<para>
The command line used to compile a Fortran source file to an object file.
By default, any options specified
in the &cv-link-FORTRANFLAGS;,
@@ -42,34 +66,42 @@ in the &cv-link-FORTRANFLAGS;,
&cv-link-_FORTRANMODFLAG;, and
&cv-link-_FORTRANINCFLAGS; construction variables
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="FORTRANCOMSTR">
<summary>
+<para>
The string displayed when a Fortran source file
is compiled to an object file.
If this is not set, then &cv-link-FORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="FORTRANFILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the FORTRAN dialect will be used. By
default, this is ['.f', '.for', '.ftn']
+</para>
</summary>
</cvar>
<cvar name="FORTRANPPFILESUFFIXES">
<summary>
+<para>
The list of file extensions for which the compilation + preprocessor pass for
FORTRAN dialect will be used. By default, this is ['.fpp', '.FPP']
+</para>
</summary>
</cvar>
<cvar name="FORTRANFLAGS">
<summary>
+<para>
General user-specified options that are passed to the Fortran compiler.
Note that this variable does
<emphasis>not</emphasis>
@@ -81,11 +113,13 @@ See
&cv-link-_FORTRANINCFLAGS; and &cv-link-_FORTRANMODFLAG;,
below,
for the variables that expand those options.
+</para>
</summary>
</cvar>
<cvar name="_FORTRANINCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the Fortran compiler command-line options
for specifying directories to be searched for include
@@ -94,40 +128,48 @@ The value of &cv-link-_FORTRANINCFLAGS; is created
by prepending/appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
to the beginning and end
of each directory in &cv-link-FORTRANPATH;.
+</para>
</summary>
</cvar>
<cvar name="FORTRANMODDIR">
<summary>
+<para>
Directory location where the Fortran compiler should place
any module files it generates. This variable is empty, by default. Some
Fortran compilers will internally append this directory in the search path
for module files, as well.
+</para>
</summary>
</cvar>
<cvar name="FORTRANMODDIRPREFIX">
<summary>
+<para>
The prefix used to specify a module directory on the Fortran compiler command
line.
This will be appended to the beginning of the directory
in the &cv-link-FORTRANMODDIR; construction variables
when the &cv-link-_FORTRANMODFLAG; variables is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="FORTRANMODDIRSUFFIX">
<summary>
+<para>
The suffix used to specify a module directory on the Fortran compiler command
line.
This will be appended to the beginning of the directory
in the &cv-link-FORTRANMODDIR; construction variables
when the &cv-link-_FORTRANMODFLAG; variables is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="_FORTRANMODFLAG">
<summary>
+<para>
An automatically-generated construction variable
containing the Fortran compiler command-line option
for specifying the directory location where the Fortran
@@ -137,11 +179,13 @@ The value of &cv-link-_FORTRANMODFLAG; is created
by prepending/appending &cv-link-FORTRANMODDIRPREFIX; and
&cv-link-FORTRANMODDIRSUFFIX;
to the beginning and end of the directory in &cv-link-FORTRANMODDIR;.
+</para>
</summary>
</cvar>
<cvar name="FORTRANMODPREFIX">
<summary>
+<para>
The module file prefix used by the Fortran compiler. SCons assumes that
the Fortran compiler follows the quasi-standard naming convention for
module files of
@@ -150,11 +194,13 @@ As a result, this variable is left empty, by default. For situations in
which the compiler does not necessarily follow the normal convention,
the user may use this variable. Its value will be appended to every
module file name as scons attempts to resolve dependencies.
+</para>
</summary>
</cvar>
<cvar name="FORTRANMODSUFFIX">
<summary>
+<para>
The module file suffix used by the Fortran compiler. SCons assumes that
the Fortran compiler follows the quasi-standard naming convention for
module files of
@@ -163,11 +209,13 @@ As a result, this variable is set to ".mod", by default. For situations
in which the compiler does not necessarily follow the normal convention,
the user may use this variable. Its value will be appended to every
module file name as scons attempts to resolve dependencies.
+</para>
</summary>
</cvar>
<cvar name="FORTRANPATH">
<summary>
+<para>
The list of directories that the Fortran compiler will search for
include files and (for some compilers) module files. The Fortran implicit
dependency scanner will search these directories for include files (but
@@ -179,20 +227,24 @@ scanner. Note: directory names in FORTRANPATH will be looked-up relative
to the SConscript directory when they are used in a command. To force
&scons;
to look-up a directory relative to the root of the source tree use #:
+</para>
-<example>
+<example_commands>
env = Environment(FORTRANPATH='#/include')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
include = Dir('include')
env = Environment(FORTRANPATH=include)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-link-_FORTRANINCFLAGS;
@@ -206,15 +258,17 @@ of each directory in &cv-link-FORTRANPATH;.
Any command lines you define that need
the FORTRANPATH directory list should
include &cv-link-_FORTRANINCFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(FORTRANCOM="my_compiler $_FORTRANINCFLAGS -c -o $TARGET $SOURCE")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="FORTRANPPCOM">
<summary>
+<para>
The command line used to compile a Fortran source file to an object file
after first running the file through the C preprocessor.
By default, any options specified in the &cv-link-FORTRANFLAGS;,
@@ -223,64 +277,78 @@ By default, any options specified in the &cv-link-FORTRANFLAGS;,
&cv-link-_FORTRANMODFLAG;, and
&cv-link-_FORTRANINCFLAGS;
construction variables are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="FORTRANPPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran source file
is compiled to an object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-FORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="FORTRANSUFFIXES">
<summary>
+<para>
The list of suffixes of files that will be scanned
for Fortran implicit dependencies
(INCLUDE lines and USE statements).
The default list is:
+</para>
-<example>
+<example_commands>
[".f", ".F", ".for", ".FOR", ".ftn", ".FTN", ".fpp", ".FPP",
".f77", ".F77", ".f90", ".F90", ".f95", ".F95"]
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="SHFORTRAN">
<summary>
+<para>
The default Fortran compiler used for generating shared-library objects.
+</para>
</summary>
</cvar>
<cvar name="SHFORTRANCOM">
<summary>
+<para>
The command line used to compile a Fortran source file
to a shared-library object file.
+</para>
</summary>
</cvar>
<cvar name="SHFORTRANCOMSTR">
<summary>
+<para>
The string displayed when a Fortran source file
is compiled to a shared-library object file.
If this is not set, then &cv-link-SHFORTRANCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SHFORTRANFLAGS">
<summary>
+<para>
Options that are passed to the Fortran compiler
to generate shared-library objects.
+</para>
</summary>
</cvar>
<cvar name="SHFORTRANPPCOM">
<summary>
+<para>
The command line used to compile a Fortran source file to a
shared-library object file
after first running the file through the C preprocessor.
@@ -288,15 +356,20 @@ Any options specified
in the &cv-link-SHFORTRANFLAGS; and
&cv-link-CPPFLAGS; construction variables
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="SHFORTRANPPCOMSTR">
<summary>
+<para>
The string displayed when a Fortran source file
is compiled to a shared-library object file
after first running the file through the C preprocessor.
If this is not set, then &cv-link-SHFORTRANPPCOM;
(the command line) is displayed.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/g++.py b/src/engine/SCons/Tool/g++.py
index be7d935..d894644 100644
--- a/src/engine/SCons/Tool/g++.py
+++ b/src/engine/SCons/Tool/g++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/g++.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/g++.py 2014/03/02 14:18:15 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/g++.xml b/src/engine/SCons/Tool/g++.xml
index 8725541..c22dab7 100644
--- a/src/engine/SCons/Tool/g++.xml
+++ b/src/engine/SCons/Tool/g++.xml
@@ -1,18 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="g++">
<summary>
+<para>
Set construction variables for the &gXX; C++ compiler.
+</para>
</summary>
<sets>
-CXX
-SHCXXFLAGS
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
-SHOBJSUFFIX
-CXXVERSION
+<item>CXX</item>
+<item>SHCXXFLAGS</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
+<item>SHOBJSUFFIX</item>
+<item>CXXVERSION</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/g77.py b/src/engine/SCons/Tool/g77.py
index 5e1d1a1..7a7b7ae 100644
--- a/src/engine/SCons/Tool/g77.py
+++ b/src/engine/SCons/Tool/g77.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/g77.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/g77.py 2014/03/02 14:18:15 garyo"
import SCons.Util
from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env
diff --git a/src/engine/SCons/Tool/g77.xml b/src/engine/SCons/Tool/g77.xml
index 21e34b3..797e4c6 100644
--- a/src/engine/SCons/Tool/g77.xml
+++ b/src/engine/SCons/Tool/g77.xml
@@ -1,13 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="g77">
<summary>
+<para>
Set construction variables for the &g77; Fortran compiler.
Calls the &t-f77; Tool module
to set variables.
+</para>
</summary>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/gas.py b/src/engine/SCons/Tool/gas.py
index 143ede9..f016c96 100644
--- a/src/engine/SCons/Tool/gas.py
+++ b/src/engine/SCons/Tool/gas.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gas.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/gas.py 2014/03/02 14:18:15 garyo"
as_module = __import__('as', globals(), locals(), [])
diff --git a/src/engine/SCons/Tool/gas.xml b/src/engine/SCons/Tool/gas.xml
index e4d68b0..a63997f 100644
--- a/src/engine/SCons/Tool/gas.xml
+++ b/src/engine/SCons/Tool/gas.xml
@@ -1,15 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="gas">
<summary>
+<para>
Sets construction variables for the &gas; assembler.
Calls the &t-as; module.
+</para>
</summary>
<sets>
-AS
+<item>AS</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/gcc.py b/src/engine/SCons/Tool/gcc.py
index 5b49ff8..09e4831 100644
--- a/src/engine/SCons/Tool/gcc.py
+++ b/src/engine/SCons/Tool/gcc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gcc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/gcc.py 2014/03/02 14:18:15 garyo"
import cc
import os
diff --git a/src/engine/SCons/Tool/gcc.xml b/src/engine/SCons/Tool/gcc.xml
index 8b63506..dcc38cc 100644
--- a/src/engine/SCons/Tool/gcc.xml
+++ b/src/engine/SCons/Tool/gcc.xml
@@ -1,16 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="gcc">
<summary>
+<para>
Set construction variables for the &gcc; C compiler.
+</para>
</summary>
<sets>
-CC
-SHCCFLAGS
-CCVERSION
+<item>CC</item>
+<item>SHCCFLAGS</item>
+<item>CCVERSION</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/gettext.py b/src/engine/SCons/Tool/gettext.py
index b561eda..8a25888 100644
--- a/src/engine/SCons/Tool/gettext.py
+++ b/src/engine/SCons/Tool/gettext.py
@@ -2,7 +2,7 @@
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -23,7 +23,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/gettext.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/gettext.py 2014/03/02 14:18:15 garyo"
#############################################################################
def generate(env,**kw):
diff --git a/src/engine/SCons/Tool/gettext.xml b/src/engine/SCons/Tool/gettext.xml
index 1383fa1..667d6a7 100644
--- a/src/engine/SCons/Tool/gettext.xml
+++ b/src/engine/SCons/Tool/gettext.xml
@@ -1,15 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="gettext">
<summary>
+<para>
This is actually a toolset, which supports internationalization and
localization of sofware being constructed with SCons. The toolset loads
following tools:
+</para>
+<para>
<itemizedlist mark='opencircle'>
<listitem><para>
&t-link-xgettext; - to extract internationalized messages from source code to
@@ -27,30 +49,38 @@ following tools:
installable <literal>MO</literal> file.
</para></listitem>
</itemizedlist>
+</para>
+<para>
When you enable &t-gettext;, it internally loads all abovementioned tools,
so you're encouraged to see their individual documentation.
+</para>
+<para>
Each of the above tools provides its own builder(s) which may be used to
perform particular activities related to software internationalization. You
may be however interested in <emphasis>top-level</emphasis> builder
&b-Translate; described few paragraphs later.
+</para>
+<para>
To use &t-gettext; tools add <literal>'gettext'</literal> tool to your
environment:
-<example>
+</para>
+<example_commands>
env = Environment( tools = ['default', 'gettext'] )
-</example>
+</example_commands>
</summary>
<sets>
</sets>
<uses>
-<!-- PLATFORM -->
+<item><!-- PLATFORM --></item>
</uses>
</tool>
<builder name="Translate">
<summary>
+<para>
This pseudo-builder belongs to &t-link-gettext; toolset. The builder extracts
internationalized messages from source files, updates <literal>POT</literal>
template (if necessary) and then updates <literal>PO</literal> translations (if
@@ -59,42 +89,48 @@ will be automatically created (i.e. without translator person intervention).
The variables &cv-link-LINGUAS_FILE; and &cv-link-POTDOMAIN; are taken into
acount too. All other construction variables used by &b-link-POTUpdate;, and
&b-link-POUpdate; work here too.
+</para>
+<para>
<emphasis>Example 1</emphasis>.
The simplest way is to specify input files and output languages inline in
a SCons script when invoking &b-Translate;
-<example>
+</para>
+<example_commands>
# SConscript in 'po/' directory
env = Environment( tools = ["default", "gettext"] )
env['POAUTOINIT'] = 1
env.Translate(['en','pl'], ['../a.cpp','../b.cpp'])
-</example>
+</example_commands>
+<para>
<emphasis>Example 2</emphasis>.
If you wish, you may also stick to conventional style known from
<productname>autotools</productname>, i.e. using
<filename>POTFILES.in</filename> and <filename>LINGUAS</filename> files
-<example>
+</para>
+<example_commands>
# LINGUAS
en pl
#end
-</example>
+</example_commands>
-<example>
+<example_commands>
# POTFILES.in
a.cpp
b.cpp
# end
-</example>
+</example_commands>
-<example>
+<example_commands>
# SConscript
env = Environment( tools = ["default", "gettext"] )
env['POAUTOINIT'] = 1
env['XGETTEXTPATH'] = ['../']
env.Translate(LINGUAS_FILE = 1, XGETTEXTFROM = 'POTFILES.in')
-</example>
+</example_commands>
+<para>
The last approach is perhaps the recommended one. It allows easily split
internationalization/localization onto separate SCons scripts, where a script
in source tree is responsible for translations (from sources to
@@ -109,10 +145,13 @@ directory (and not in variant directories). Additionaly, the file listing of
<filename>po/</filename> directory contains <filename>LINGUAS</filename> file,
so the source tree looks familiar to translators, and they may work with the
project in their usual way.
+</para>
+<para>
<emphasis>Example 3</emphasis>.
Let's prepare a development tree as below
-<example>
+</para>
+<example_commands>
project/
+ SConstruct
+ build/
@@ -122,29 +161,36 @@ Let's prepare a development tree as below
+ SConscript.i18n
+ POTFILES.in
+ LINGUAS
-</example>
+</example_commands>
+<para>
with <filename>build</filename> being variant directory. Write the top-level
<filename>SConstruct</filename> script as follows
-<example>
+</para>
+<example_commands>
# SConstruct
env = Environment( tools = ["default", "gettext"] )
VariantDir('build', 'src', duplicate = 0)
env['POAUTOINIT'] = 1
SConscript('src/po/SConscript.i18n', exports = 'env')
SConscript('build/po/SConscript', exports = 'env')
-</example>
+</example_commands>
+<para>
the <filename>src/po/SConscript.i18n</filename> as
-<example>
+</para>
+<example_commands>
# src/po/SConscript.i18n
Import('env')
env.Translate(LINGUAS_FILE=1, XGETTEXTFROM='POTFILES.in', XGETTEXTPATH=['../'])
-</example>
+</example_commands>
+<para>
and the <filename>src/po/SConscript</filename>
-<example>
+</para>
+<example_commands>
# src/po/SConscript
Import('env')
env.MOFiles(LINGUAS_FILE = 1)
-</example>
+</example_commands>
+<para>
Such setup produces <literal>POT</literal> and <literal>PO</literal> files
under source tree in <filename>src/po/</filename> and binary
<literal>MO</literal> files under variant tree in
@@ -152,18 +198,22 @@ under source tree in <filename>src/po/</filename> and binary
<literal>PO</literal> files are separated from other output files, which must
not be committed back to source repositories (e.g. <literal>MO</literal>
files).
+</para>
+<para>
<note><para>In above example, the <literal>PO</literal> files are not updated,
nor created automatically when you issue <command>scons '.'</command> command.
The files must be updated (created) by hand via <command>scons
po-update</command> and then <literal>MO</literal> files can be compiled by
running <command>scons '.'</command>.</para></note>
+</para>
</summary>
</builder>
<cvar name="POTDOMAIN">
<summary>
+<para>
The &cv-POTDOMAIN; defines default domain, used to generate
<literal>POT</literal> filename as <filename>&cv-POTDOMAIN;.pot</filename> when
no <literal>POT</literal> file name is provided by the user. This applies to
@@ -171,22 +221,26 @@ no <literal>POT</literal> file name is provided by the user. This applies to
builders, that use them, e.g. &b-Translate;). Normally (if &cv-POTDOMAIN; is
not defined), the builders use <filename>messages.pot</filename> as default
<literal>POT</literal> file name.
+</para>
</summary>
</cvar>
<cvar name="POAUTOINIT">
<summary>
+<para>
The &cv-POAUTOINIT; variable, if set to <literal>True</literal> (on non-zero
numeric value), let the &t-link-msginit; tool to automatically initialize
<emphasis>missing</emphasis> <literal>PO</literal> files with
<command>msginit(1)</command>. This applies to both,
&b-link-POInit; and &b-link-POUpdate; builders (and others that use any of
them).
+</para>
</summary>
</cvar>
<cvar name="LINGUAS_FILE">
<summary>
+<para>
The &cv-LINGUAS_FILE; defines file(s) containing list of additional linguas
to be processed by &b-link-POInit;, &b-link-POUpdate; or &b-link-MOFiles;
builders. It also affects &b-link-Translate; builder. If the variable contains
@@ -195,6 +249,9 @@ list of file names as well. If &cv-LINGUAS_FILE; is set to
<literal>True</literal> (or non-zero numeric value), the list will be read from
default file named
<filename>LINGUAS</filename>.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/gfortran.py b/src/engine/SCons/Tool/gfortran.py
index 463f70e..4d2c137 100644
--- a/src/engine/SCons/Tool/gfortran.py
+++ b/src/engine/SCons/Tool/gfortran.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gfortran.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/gfortran.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/gfortran.xml b/src/engine/SCons/Tool/gfortran.xml
index 66f46fa..1cacfbc 100644
--- a/src/engine/SCons/Tool/gfortran.xml
+++ b/src/engine/SCons/Tool/gfortran.xml
@@ -1,25 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="gfortran">
<summary>
+<para>
Sets construction variables for the GNU F95/F2003 GNU compiler.
+</para>
</summary>
<sets>
-FORTRAN
-F77
-F90
-F95
-SHFORTRAN
-SHF77
-SHF90
-SHF95
-SHFORTRANFLAGS
-SHF77FLAGS
-SHF90FLAGS
-SHF95FLAGS
+<item>FORTRAN</item>
+<item>F77</item>
+<item>F90</item>
+<item>F95</item>
+<item>SHFORTRAN</item>
+<item>SHF77</item>
+<item>SHF90</item>
+<item>SHF95</item>
+<item>SHFORTRANFLAGS</item>
+<item>SHF77FLAGS</item>
+<item>SHF90FLAGS</item>
+<item>SHF95FLAGS</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/gnulink.py b/src/engine/SCons/Tool/gnulink.py
index 281a0d0..d475de4 100644
--- a/src/engine/SCons/Tool/gnulink.py
+++ b/src/engine/SCons/Tool/gnulink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gnulink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/gnulink.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/gnulink.xml b/src/engine/SCons/Tool/gnulink.xml
index 2cb9437..bbbf7f0 100644
--- a/src/engine/SCons/Tool/gnulink.xml
+++ b/src/engine/SCons/Tool/gnulink.xml
@@ -1,16 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="gnulink">
<summary>
+<para>
Set construction variables for GNU linker/loader.
+</para>
</summary>
<sets>
-SHLINKFLAGS
-RPATHPREFIX
-RPATHSUFFIX
+<item>SHLINKFLAGS</item>
+<item>RPATHPREFIX</item>
+<item>RPATHSUFFIX</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/gs.py b/src/engine/SCons/Tool/gs.py
index fc53b7e..91c6434 100644
--- a/src/engine/SCons/Tool/gs.py
+++ b/src/engine/SCons/Tool/gs.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,9 +31,10 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gs.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/gs.py 2014/03/02 14:18:15 garyo"
import SCons.Action
+import SCons.Builder
import SCons.Platform
import SCons.Util
@@ -52,17 +53,26 @@ GhostscriptAction = None
def generate(env):
"""Add Builders and construction variables for Ghostscript to an
Environment."""
-
global GhostscriptAction
- if GhostscriptAction is None:
- GhostscriptAction = SCons.Action.Action('$GSCOM', '$GSCOMSTR')
-
- import pdf
- pdf.generate(env)
-
- bld = env['BUILDERS']['PDF']
- bld.add_action('.ps', GhostscriptAction)
-
+ # The following try-except block enables us to use the Tool
+ # in standalone mode (without the accompanying pdf.py),
+ # whenever we need an explicit call of gs via the Gs()
+ # Builder ...
+ try:
+ if GhostscriptAction is None:
+ GhostscriptAction = SCons.Action.Action('$GSCOM', '$GSCOMSTR')
+
+ import pdf
+ pdf.generate(env)
+
+ bld = env['BUILDERS']['PDF']
+ bld.add_action('.ps', GhostscriptAction)
+ except ImportError, e:
+ pass
+
+ gsbuilder = SCons.Builder.Builder(action = SCons.Action.Action('$GSCOM', '$GSCOMSTR'))
+ env['BUILDERS']['Gs'] = gsbuilder
+
env['GS'] = gs
env['GSFLAGS'] = SCons.Util.CLVar('-dNOPAUSE -dBATCH -sDEVICE=pdfwrite')
env['GSCOM'] = '$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES'
diff --git a/src/engine/SCons/Tool/gs.xml b/src/engine/SCons/Tool/gs.xml
index 56e7b79..235aaaf 100644
--- a/src/engine/SCons/Tool/gs.xml
+++ b/src/engine/SCons/Tool/gs.xml
@@ -1,47 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="gs">
<summary>
-Set construction variables for Ghostscript.
+<para>
+This Tool sets the required construction variables for working with
+the Ghostscript command. It also registers an appropriate Action
+with the PDF Builder (&b-link-PDF;), such that the conversion from
+PS/EPS to PDF happens automatically for the TeX/LaTeX toolchain.
+Finally, it adds an explicit Ghostscript Builder (&b-link-Gs;) to the
+environment.
+</para>
</summary>
<sets>
-GS
-GSFLAGS
-GSCOM
+<item>GS</item>
+<item>GSFLAGS</item>
+<item>GSCOM</item>
</sets>
<uses>
-GSCOMSTR
+<item>GSCOMSTR</item>
</uses>
</tool>
<cvar name="GS">
<summary>
-The Ghostscript program used to convert PostScript to PDF files.
+<para>
+The Ghostscript program used, e.g. to convert PostScript to PDF files.
+</para>
</summary>
</cvar>
<cvar name="GSCOM">
<summary>
-The Ghostscript command line used to convert PostScript to PDF files.
+<para>
+The full Ghostscript command line used for the conversion process. Its default
+value is <quote><literal>$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES</literal></quote>.
+</para>
</summary>
</cvar>
<cvar name="GSCOMSTR">
<summary>
+<para>
The string displayed when
-Ghostscript is used to convert
-a PostScript file to a PDF file.
-If this is not set, then &cv-link-GSCOM; (the command line) is displayed.
+Ghostscript is called for the conversion process.
+If this is not set (the default), then &cv-link-GSCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="GSFLAGS">
<summary>
-General options passed to the Ghostscript program
-when converting PostScript to PDF files.
+<para>
+General options passed to the Ghostscript program,
+when converting PostScript to PDF files for example. Its default value
+is <quote><literal>-dNOPAUSE -dBATCH -sDEVICE=pdfwrite</literal></quote>
+</para>
</summary>
</cvar>
+
+<builder name="Gs">
+<summary>
+<para>
+A Builder for explicitly calling the <literal>gs</literal> executable.
+Depending on the underlying OS, the different names <literal>gs</literal>,
+<literal>gsos2</literal> and <literal>gswin32c</literal>
+are tried.
+</para>
+<example_commands>env = Environment(tools=['gs'])
+env.Gs('cover.jpg','scons-scons.pdf',
+ GSFLAGS='-dNOPAUSE -dBATCH -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -q')
+ )
+</example_commands>
+</summary>
+</builder>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/hpc++.py b/src/engine/SCons/Tool/hpc++.py
index 94b7fec..4920cff 100644
--- a/src/engine/SCons/Tool/hpc++.py
+++ b/src/engine/SCons/Tool/hpc++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/hpc++.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/hpc++.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/hpc++.xml b/src/engine/SCons/Tool/hpc++.xml
index 7a2c4f2..83a88e9 100644
--- a/src/engine/SCons/Tool/hpc++.xml
+++ b/src/engine/SCons/Tool/hpc++.xml
@@ -1,11 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="hpc++">
<summary>
+<para>
Set construction variables for the compilers aCC on HP/UX systems.
+</para>
</summary>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/hpcc.py b/src/engine/SCons/Tool/hpcc.py
index efd5230..bb745ba 100644
--- a/src/engine/SCons/Tool/hpcc.py
+++ b/src/engine/SCons/Tool/hpcc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/hpcc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/hpcc.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/hpcc.xml b/src/engine/SCons/Tool/hpcc.xml
index 0a7da63..d9a23a2 100644
--- a/src/engine/SCons/Tool/hpcc.xml
+++ b/src/engine/SCons/Tool/hpcc.xml
@@ -1,18 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="hpcc">
<summary>
+<para>
Set construction variables for the
<application>aCC</application> on HP/UX systems.
Calls the &t-cXX; tool for additional variables.
+</para>
</summary>
<sets>
-CXX
-SHCXXFLAGS
-CXXVERSION
+<item>CXX</item>
+<item>SHCXXFLAGS</item>
+<item>CXXVERSION</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/hplink.py b/src/engine/SCons/Tool/hplink.py
index 627c9e9..ea979f5 100644
--- a/src/engine/SCons/Tool/hplink.py
+++ b/src/engine/SCons/Tool/hplink.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/hplink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/hplink.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/hplink.xml b/src/engine/SCons/Tool/hplink.xml
index 4cfcf46..da51fe6 100644
--- a/src/engine/SCons/Tool/hplink.xml
+++ b/src/engine/SCons/Tool/hplink.xml
@@ -1,16 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="hplink">
<summary>
+<para>
Sets construction variables for the linker on HP/UX systems.
+</para>
</summary>
<sets>
-LINKFLAGS
-SHLINKFLAGS
-SHLIBSUFFIX
+<item>LINKFLAGS</item>
+<item>SHLINKFLAGS</item>
+<item>SHLIBSUFFIX</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/icc.py b/src/engine/SCons/Tool/icc.py
index aa54a0a..ac0629c 100644
--- a/src/engine/SCons/Tool/icc.py
+++ b/src/engine/SCons/Tool/icc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/icc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/icc.py 2014/03/02 14:18:15 garyo"
import cc
diff --git a/src/engine/SCons/Tool/icc.xml b/src/engine/SCons/Tool/icc.xml
index 8f943ba..5d4f587 100644
--- a/src/engine/SCons/Tool/icc.xml
+++ b/src/engine/SCons/Tool/icc.xml
@@ -1,30 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="icc">
<summary>
+<para>
Sets construction variables for the
<application>icc</application> compiler on OS/2 systems.
+</para>
</summary>
<sets>
-CC
-CCCOM
-CXXCOM
-CPPDEFPREFIX
-CPPDEFSUFFIX
-INCPREFIX
-INCSUFFIX
-CFILESUFFIX
-CXXFILESUFFIX
+<item>CC</item>
+<item>CCCOM</item>
+<item>CXXCOM</item>
+<item>CPPDEFPREFIX</item>
+<item>CPPDEFSUFFIX</item>
+<item>INCPREFIX</item>
+<item>INCSUFFIX</item>
+<item>CFILESUFFIX</item>
+<item>CXXFILESUFFIX</item>
</sets>
<uses>
-CFLAGS
-CCFLAGS
-CPPFLAGS
-_CPPDEFFLAGS
-_CPPINCFLAGS
+<item>CFLAGS</item>
+<item>CCFLAGS</item>
+<item>CPPFLAGS</item>
+<item>_CPPDEFFLAGS</item>
+<item>_CPPINCFLAGS</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/icl.py b/src/engine/SCons/Tool/icl.py
index f0a252b..518a902 100644
--- a/src/engine/SCons/Tool/icl.py
+++ b/src/engine/SCons/Tool/icl.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/icl.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/icl.py 2014/03/02 14:18:15 garyo"
import SCons.Tool.intelc
diff --git a/src/engine/SCons/Tool/icl.xml b/src/engine/SCons/Tool/icl.xml
index 764635c..77f576b 100644
--- a/src/engine/SCons/Tool/icl.xml
+++ b/src/engine/SCons/Tool/icl.xml
@@ -1,12 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="icl">
<summary>
+<para>
Sets construction variables for the Intel C/C++ compiler.
Calls the &t-intelc; Tool module to set its variables.
+</para>
</summary>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/ifl.py b/src/engine/SCons/Tool/ifl.py
index 678a0d1..6e52fca 100644
--- a/src/engine/SCons/Tool/ifl.py
+++ b/src/engine/SCons/Tool/ifl.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ifl.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/ifl.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
from SCons.Scanner.Fortran import FortranScan
diff --git a/src/engine/SCons/Tool/ifl.xml b/src/engine/SCons/Tool/ifl.xml
index 7eb0b16..406e11c 100644
--- a/src/engine/SCons/Tool/ifl.xml
+++ b/src/engine/SCons/Tool/ifl.xml
@@ -1,24 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="ifl">
<summary>
+<para>
Sets construction variables for the Intel Fortran compiler.
+</para>
</summary>
<sets>
-FORTRAN
-FORTRANCOM
-FORTRANPPCOM
-SHFORTRANCOM
-SHFORTRANPPCOM
+<item>FORTRAN</item>
+<item>FORTRANCOM</item>
+<item>FORTRANPPCOM</item>
+<item>SHFORTRANCOM</item>
+<item>SHFORTRANPPCOM</item>
</sets>
<uses>
-FORTRANFLAGS
-_FORTRANINCFLAGS
-CPPFLAGS
-_CPPDEFFLAGS
+<item>FORTRANFLAGS</item>
+<item>_FORTRANINCFLAGS</item>
+<item>CPPFLAGS</item>
+<item>_CPPDEFFLAGS</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/ifort.py b/src/engine/SCons/Tool/ifort.py
index 80c170b..c61dc12 100644
--- a/src/engine/SCons/Tool/ifort.py
+++ b/src/engine/SCons/Tool/ifort.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ifort.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/ifort.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
from SCons.Scanner.Fortran import FortranScan
diff --git a/src/engine/SCons/Tool/ifort.xml b/src/engine/SCons/Tool/ifort.xml
index c14b0a6..341a0f5 100644
--- a/src/engine/SCons/Tool/ifort.xml
+++ b/src/engine/SCons/Tool/ifort.xml
@@ -1,26 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="ifort">
<summary>
+<para>
Sets construction variables for newer versions
of the Intel Fortran compiler for Linux.
+</para>
</summary>
<sets>
-FORTRAN
-F77
-F90
-F95
-SHFORTRAN
-SHF77
-SHF90
-SHF95
-SHFORTRANFLAGS
-SHF77FLAGS
-SHF90FLAGS
-SHF95FLAGS
+<item>FORTRAN</item>
+<item>F77</item>
+<item>F90</item>
+<item>F95</item>
+<item>SHFORTRAN</item>
+<item>SHF77</item>
+<item>SHF90</item>
+<item>SHF95</item>
+<item>SHFORTRANFLAGS</item>
+<item>SHF77FLAGS</item>
+<item>SHF90FLAGS</item>
+<item>SHF95FLAGS</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/ilink.py b/src/engine/SCons/Tool/ilink.py
index 7fa9b33..7cd94d7 100644
--- a/src/engine/SCons/Tool/ilink.py
+++ b/src/engine/SCons/Tool/ilink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ilink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/ilink.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/ilink.xml b/src/engine/SCons/Tool/ilink.xml
index 3b2a6e7..c3cff75 100644
--- a/src/engine/SCons/Tool/ilink.xml
+++ b/src/engine/SCons/Tool/ilink.xml
@@ -1,23 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="ilink">
<summary>
+<para>
Sets construction variables for the
<application>ilink</application> linker on OS/2 systems.
+</para>
</summary>
<sets>
-LINK
-LINKFLAGS
-LINKCOM
-LIBDIRPREFIX
-LIBDIRSUFFIX
-LIBLINKPREFIX
-LIBLINKSUFFIX
+<item>LINK</item>
+<item>LINKFLAGS</item>
+<item>LINKCOM</item>
+<item>LIBDIRPREFIX</item>
+<item>LIBDIRSUFFIX</item>
+<item>LIBLINKPREFIX</item>
+<item>LIBLINKSUFFIX</item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/ilink32.py b/src/engine/SCons/Tool/ilink32.py
index 8b9cef6..c8a49db 100644
--- a/src/engine/SCons/Tool/ilink32.py
+++ b/src/engine/SCons/Tool/ilink32.py
@@ -5,7 +5,7 @@ XXX
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ilink32.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/ilink32.py 2014/03/02 14:18:15 garyo"
import SCons.Tool
import SCons.Tool.bcc32
diff --git a/src/engine/SCons/Tool/ilink32.xml b/src/engine/SCons/Tool/ilink32.xml
index d99cd8b..d5c4c5f 100644
--- a/src/engine/SCons/Tool/ilink32.xml
+++ b/src/engine/SCons/Tool/ilink32.xml
@@ -1,23 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="ilink32">
<summary>
+<para>
Sets construction variables for the Borland
<application>ilink32</application> linker.
+</para>
</summary>
<sets>
-LINK
-LINKFLAGS
-LINKCOM
-LIBDIRPREFIX
-LIBDIRSUFFIX
-LIBLINKPREFIX
-LIBLINKSUFFIX
+<item>LINK</item>
+<item>LINKFLAGS</item>
+<item>LINKCOM</item>
+<item>LIBDIRPREFIX</item>
+<item>LIBDIRSUFFIX</item>
+<item>LIBLINKPREFIX</item>
+<item>LIBLINKSUFFIX</item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/install.py b/src/engine/SCons/Tool/install.py
index 6f67fac..8c32650 100644
--- a/src/engine/SCons/Tool/install.py
+++ b/src/engine/SCons/Tool/install.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/install.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/install.py 2014/03/02 14:18:15 garyo"
import os
import re
@@ -133,6 +133,11 @@ def copyFuncVersionedLib(dest, source, env):
if os.path.isdir(source):
raise SCons.Errors.UserError("cannot install directory `%s' as a version library" % str(source) )
else:
+ # remove the link if it is already there
+ try:
+ os.remove(dest)
+ except:
+ pass
shutil.copy2(source, dest)
st = os.stat(source)
os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
@@ -196,11 +201,34 @@ def versionedLibLinks(dest, source, env):
if version != None:
# libname includes the version number if one was given
linknames = SCons.Tool.VersionShLibLinkNames(version,libname,env)
- for linkname in linknames:
- if Verbose:
- print "make link of %s to %s" %(libname, os.path.join(install_dir, linkname))
+ if Verbose:
+ print "versionedLibLinks: linknames ",linknames
+ # Here we just need the file name w/o path as the target of the link
+ lib_ver = libname
+ # make symlink of adjacent names in linknames
+ for count in range(len(linknames)):
+ linkname = linknames[count]
fulllinkname = os.path.join(install_dir, linkname)
- os.symlink(libname,fulllinkname)
+ if Verbose:
+ print "full link name ",fulllinkname
+ if count > 0:
+ try:
+ os.remove(lastlinkname)
+ except:
+ pass
+ os.symlink(os.path.basename(fulllinkname),lastlinkname)
+ if Verbose:
+ print "versionedLibLinks: made sym link of %s -> %s" % (lastlinkname,os.path.basename(fulllinkname))
+ lastlinkname = fulllinkname
+ # finish chain of sym links with link to the actual library
+ if len(linknames)>0:
+ try:
+ os.remove(lastlinkname)
+ except:
+ pass
+ os.symlink(lib_ver,lastlinkname)
+ if Verbose:
+ print "versionedLibLinks: made sym link of %s -> %s" % (lib_ver,lastlinkname)
return
def installFunc(target, source, env):
@@ -269,6 +297,8 @@ def add_versioned_targets_to_INSTALLED_FILES(target, source, env):
global _INSTALLED_FILES, _UNIQUE_INSTALLED_FILES
Verbose = False
_INSTALLED_FILES.extend(target)
+ if Verbose:
+ print "ver lib emitter ",repr(target)
# see if we have a versioned shared library, if so generate side effects
version, libname, install_dir = versionedLibVersion(target[0].path, env)
@@ -281,6 +311,9 @@ def add_versioned_targets_to_INSTALLED_FILES(target, source, env):
fulllinkname = os.path.join(install_dir, linkname)
env.SideEffect(fulllinkname,target[0])
env.Clean(target[0],fulllinkname)
+ _INSTALLED_FILES.append(fulllinkname)
+ if Verbose:
+ print "installed list ", _INSTALLED_FILES
_UNIQUE_INSTALLED_FILES = None
return (target, source)
diff --git a/src/engine/SCons/Tool/install.xml b/src/engine/SCons/Tool/install.xml
index 00924f7..057a006 100644
--- a/src/engine/SCons/Tool/install.xml
+++ b/src/engine/SCons/Tool/install.xml
@@ -1,23 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
+
<tool name="install">
<summary>
+<para>
Sets construction variables for file
and directory installation.
+</para>
</summary>
<sets>
-INSTALL
-INSTALLSTR
+<item>INSTALL</item>
+<item>INSTALLSTR</item>
</sets>
</tool>
<builder name="Install">
<summary>
+<para>
Installs one or more source files or directories
in the specified target,
which must be a directory.
@@ -25,15 +47,17 @@ The names of the specified source files or directories
remain the same within the destination directory. The
sources may be given as a string or as a node returned by
a builder.
+</para>
-<example>
+<example_commands>
env.Install('/usr/local/bin', source = ['foo', 'bar'])
-</example>
+</example_commands>
</summary>
</builder>
<builder name="InstallAs">
<summary>
+<para>
Installs one or more source files or directories
to specific names,
allowing changing a file or directory name
@@ -43,21 +67,26 @@ target
and
source
arguments list different numbers of files or directories.
+</para>
</summary>
</builder>
<builder name="InstallVersionedLib">
<summary>
+<para>
Installs a versioned shared library. The &cv-link-SHLIBVERSION;
construction variable should be defined in the environment
to confirm the version number in the library name.
The symlinks appropriate to the architecture will be generated.
+</para>
-<example>
+<example_commands>
env.InstallAs(target = '/usr/local/bin/foo',
source = 'foo_debug')
env.InstallAs(target = ['../lib/libfoo.a', '../lib/libbar.a'],
source = ['libFOO.a', 'libBAR.a'])
-</example>
+</example_commands>
</summary>
</builder>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/intelc.py b/src/engine/SCons/Tool/intelc.py
index 5d267ff..1bd799f 100644
--- a/src/engine/SCons/Tool/intelc.py
+++ b/src/engine/SCons/Tool/intelc.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import division
-__revision__ = "src/engine/SCons/Tool/intelc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/intelc.py 2014/03/02 14:18:15 garyo"
import math, sys, os.path, glob, string, re
@@ -317,7 +317,7 @@ def get_intel_compiler_top(version, abi):
for d in glob.glob('/opt/intel/composerxe-*'):
# Typical dir here is /opt/intel/composerxe-2011.4.184
m = re.search(r'([0-9][0-9.]*)$', d)
- if m and m.group(1) == verison and \
+ if m and m.group(1) == version and \
(os.path.exists(os.path.join(d, "bin", "ia32", "icc")) or
os.path.exists(os.path.join(d, "bin", "intel64", "icc"))):
top = d
diff --git a/src/engine/SCons/Tool/intelc.xml b/src/engine/SCons/Tool/intelc.xml
index 4913015..2170a6e 100644
--- a/src/engine/SCons/Tool/intelc.xml
+++ b/src/engine/SCons/Tool/intelc.xml
@@ -1,24 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="intelc">
<summary>
+<para>
Sets construction variables for the Intel C/C++ compiler
(Linux and Windows, version 7 and later).
Calls the &t-gcc; or &t-msvc;
(on Linux and Windows, respectively)
to set underlying variables.
+</para>
</summary>
<sets>
-CC
-CXX
-LINK
-AR
-<!--LD-->
-INTEL_C_COMPILER_VERSION
+<item>CC</item>
+<item>CXX</item>
+<item>LINK</item>
+<item>AR</item>
+<item><!--LD--></item>
+<item>INTEL_C_COMPILER_VERSION</item>
</sets>
<uses>
</uses>
@@ -26,8 +47,12 @@ INTEL_C_COMPILER_VERSION
<cvar name="INTEL_C_COMPILER_VERSION">
<summary>
+<para>
Set by the "intelc" Tool
to the major version number of the Intel C compiler
selected for use.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/ipkg.py b/src/engine/SCons/Tool/ipkg.py
index 2abc0e6..3fb58db 100644
--- a/src/engine/SCons/Tool/ipkg.py
+++ b/src/engine/SCons/Tool/ipkg.py
@@ -11,7 +11,7 @@ packages fake_root.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ packages fake_root.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ipkg.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/ipkg.py 2014/03/02 14:18:15 garyo"
import os
diff --git a/src/engine/SCons/Tool/jar.py b/src/engine/SCons/Tool/jar.py
index ec8afca..8b5c7f1 100644
--- a/src/engine/SCons/Tool/jar.py
+++ b/src/engine/SCons/Tool/jar.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/jar.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/jar.py 2014/03/02 14:18:15 garyo"
import SCons.Subst
import SCons.Util
diff --git a/src/engine/SCons/Tool/jar.xml b/src/engine/SCons/Tool/jar.xml
index fc94f12..fedaf51 100644
--- a/src/engine/SCons/Tool/jar.xml
+++ b/src/engine/SCons/Tool/jar.xml
@@ -1,26 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="jar">
<summary>
+<para>
Sets construction variables for the &jar; utility.
+</para>
</summary>
<sets>
-JAR
-JARFLAGS
-JARCOM
-JARSUFFIX
+<item>JAR</item>
+<item>JARFLAGS</item>
+<item>JARCOM</item>
+<item>JARSUFFIX</item>
</sets>
<uses>
-JARCOMSTR
+<item>JARCOMSTR</item>
</uses>
</tool>
<builder name="Jar">
<summary>
+<para>
Builds a Java archive (<filename>.jar</filename>) file
from the specified list of sources.
Any directories in the source list
@@ -28,7 +50,9 @@ will be searched for <filename>.class</filename> files).
Any <filename>.java</filename> files in the source list
will be compiled to <filename>.class</filename> files
by calling the &b-link-Java; Builder.
+</para>
+<para>
If the &cv-link-JARCHDIR; value is set, the
&jar;
command will change to the specified directory using the
@@ -38,7 +62,9 @@ If &cv-JARCHDIR; is not set explicitly,
&SCons; will use the top of any subdirectory tree
in which Java <filename>.class</filename>
were built by the &b-link-Java; Builder.
+</para>
+<para>
If the contents any of the source files begin with the string
<literal>Manifest-Version</literal>,
the file is assumed to be a manifest
@@ -47,64 +73,79 @@ and is passed to the
command with the
<option>m</option>
option set.
+</para>
-<example>
+<example_commands>
env.Jar(target = 'foo.jar', source = 'classes')
env.Jar(target = 'bar.jar',
source = ['bar1.java', 'bar2.java'])
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="JAR">
<summary>
+<para>
The Java archive tool.
+</para>
</summary>
</cvar>
<cvar name="JARCHDIR">
<summary>
+<para>
The directory to which the Java archive tool should change
(using the
<option>-C</option>
option).
+</para>
</summary>
</cvar>
<cvar name="JARCOM">
<summary>
+<para>
The command line used to call the Java archive tool.
+</para>
</summary>
</cvar>
<cvar name="JARCOMSTR">
<summary>
+<para>
The string displayed when the Java archive tool
is called
If this is not set, then &cv-link-JARCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="JARFLAGS">
<summary>
+<para>
General options passed to the Java archive tool.
By default this is set to
<option>cf</option>
to create the necessary
<command>jar</command>
file.
+</para>
</summary>
</cvar>
<cvar name="JARSUFFIX">
<summary>
+<para>
The suffix for Java archives:
<filename>.jar</filename>
by default.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/javac.py b/src/engine/SCons/Tool/javac.py
index a039ace..9249989 100644
--- a/src/engine/SCons/Tool/javac.py
+++ b/src/engine/SCons/Tool/javac.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/javac.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/javac.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/javac.xml b/src/engine/SCons/Tool/javac.xml
index 704308b..d720293 100644
--- a/src/engine/SCons/Tool/javac.xml
+++ b/src/engine/SCons/Tool/javac.xml
@@ -1,36 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="javac">
<summary>
+<para>
Sets construction variables for the &javac; compiler.
+</para>
</summary>
<sets>
-JAVAC
-JAVACFLAGS
-JAVACCOM
-JAVACLASSSUFFIX
-JAVASUFFIX
-JAVABOOTCLASSPATH
-JAVACLASSPATH
-JAVASOURCEPATH
+<item>JAVAC</item>
+<item>JAVACFLAGS</item>
+<item>JAVACCOM</item>
+<item>JAVACLASSSUFFIX</item>
+<item>JAVASUFFIX</item>
+<item>JAVABOOTCLASSPATH</item>
+<item>JAVACLASSPATH</item>
+<item>JAVASOURCEPATH</item>
</sets>
<uses>
-JAVACCOMSTR
+<item>JAVACCOMSTR</item>
</uses>
</tool>
<builder name="Java">
<summary>
+<para>
Builds one or more Java class files.
The sources may be any combination of explicit
<filename>.java</filename> files,
or directory trees which will be scanned
for <filename>.java</filename> files.
+</para>
+<para>
SCons will parse each source <filename>.java</filename> file
to find the classes
(including inner classes)
@@ -39,7 +63,9 @@ and from that figure out the
target <filename>.class</filename> files that will be created.
The class files will be placed underneath
the specified target directory.
+</para>
+<para>
SCons will also search each Java file
for the Java package name,
which it assumes can be found on a line
@@ -60,15 +86,19 @@ containing a package name of
will generate a corresponding
<filename>sub/dir/Foo.class</filename>
class file.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
env.Java(target = 'classes', source = 'src')
env.Java(target = 'classes', source = ['src1', 'src2'])
env.Java(target = 'classes', source = ['File1.java', 'File2.java'])
-</example>
+</example_commands>
+<para>
Java source files can use the native encoding for the underlying OS.
Since SCons compiles in simple ASCII mode by default,
the compiler will generate warnings about unmappable characters,
@@ -78,16 +108,18 @@ environment variable to tell the compiler what encoding is used.
For portibility, it's best if the encoding is hard-coded
so that the compile will work if it is done on a system
with a different encoding.
+</para>
-<example>
+<example_commands>
env = Environment()
env['ENV']['LANG'] = 'en_GB.UTF-8'
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="JAVABOOTCLASSPATH">
<summary>
+<para>
Specifies the list of directories that
will be added to the
&javac; command line
@@ -96,56 +128,68 @@ The individual directory names will be
separated by the operating system's path separate character
(<filename>:</filename> on UNIX/Linux/POSIX,
<filename>;</filename> on Windows).
+</para>
</summary>
</cvar>
<cvar name="JAVAC">
<summary>
+<para>
The Java compiler.
+</para>
</summary>
</cvar>
<cvar name="JAVACCOM">
<summary>
+<para>
The command line used to compile a directory tree containing
Java source files to
corresponding Java class files.
Any options specified in the &cv-link-JAVACFLAGS; construction variable
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="JAVACCOMSTR">
<summary>
+<para>
The string displayed when compiling
a directory tree of Java source files to
corresponding Java class files.
If this is not set, then &cv-link-JAVACCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(JAVACCOMSTR = "Compiling class files $TARGETS from $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="JAVACFLAGS">
<summary>
+<para>
General options that are passed to the Java compiler.
+</para>
</summary>
</cvar>
<cvar name="JAVACLASSDIR">
<summary>
+<para>
The directory in which Java class files may be found.
This is stripped from the beginning of any Java .class
file names supplied to the
<literal>JavaH</literal>
builder.
+</para>
</summary>
</cvar>
<cvar name="JAVACLASSPATH">
<summary>
+<para>
Specifies the list of directories that
will be searched for Java
<filename>.class</filename> file.
@@ -156,25 +200,31 @@ The individual directory names will be
separated by the operating system's path separate character
(<filename>:</filename> on UNIX/Linux/POSIX,
<filename>;</filename> on Windows).
+</para>
+<para>
Note that this currently just adds the specified
directory via the <option>-classpath</option> option.
&SCons; does not currently search the
&cv-JAVACLASSPATH; directories for dependency
<filename>.class</filename> files.
+</para>
</summary>
</cvar>
<cvar name="JAVACLASSSUFFIX">
<summary>
+<para>
The suffix for Java class files;
<filename>.class</filename>
by default.
+</para>
</summary>
</cvar>
<cvar name="JAVASOURCEPATH">
<summary>
+<para>
Specifies the list of directories that
will be searched for input
<filename>.java</filename> file.
@@ -185,32 +235,40 @@ The individual directory names will be
separated by the operating system's path separate character
(<filename>:</filename> on UNIX/Linux/POSIX,
<filename>;</filename> on Windows).
+</para>
+<para>
Note that this currently just adds the specified
directory via the <option>-sourcepath</option> option.
&SCons; does not currently search the
&cv-JAVASOURCEPATH; directories for dependency
<filename>.java</filename> files.
+</para>
</summary>
</cvar>
<cvar name="JAVASUFFIX">
<summary>
+<para>
The suffix for Java files;
<filename>.java</filename>
by default.
+</para>
</summary>
</cvar>
<cvar name="JAVAVERSION">
<summary>
+<para>
Specifies the Java version being used by the &b-Java; builder.
This is <emphasis>not</emphasis> currently used to select one
version of the Java compiler vs. another.
Instead, you should set this to specify the version of Java
supported by your &javac; compiler.
The default is <literal>1.4</literal>.
+</para>
+<para>
This is sometimes necessary because
Java 1.5 changed the file names that are created
for nested anonymous inner classes,
@@ -220,5 +278,8 @@ Setting &cv-JAVAVERSION; to <literal>1.5</literal>
(or <literal>1.6</literal>, as appropriate)
can make &SCons; realize that a Java 1.5 or 1.6
build is actually up to date.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/javacTests.py b/src/engine/SCons/Tool/javacTests.py
index 571e298..2280617 100644
--- a/src/engine/SCons/Tool/javacTests.py
+++ b/src/engine/SCons/Tool/javacTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/src/engine/SCons/Tool/javah.py b/src/engine/SCons/Tool/javah.py
index 6e8089c..2c2533d 100644
--- a/src/engine/SCons/Tool/javah.py
+++ b/src/engine/SCons/Tool/javah.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/javah.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/javah.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/javah.xml b/src/engine/SCons/Tool/javah.xml
index 6244000..1c99bca 100644
--- a/src/engine/SCons/Tool/javah.xml
+++ b/src/engine/SCons/Tool/javah.xml
@@ -1,27 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="javah">
<summary>
+<para>
Sets construction variables for the &javah; tool.
+</para>
</summary>
<sets>
-JAVAH
-JAVAHFLAGS
-JAVAHCOM
-JAVACLASSSUFFIX
+<item>JAVAH</item>
+<item>JAVAHFLAGS</item>
+<item>JAVAHCOM</item>
+<item>JAVACLASSSUFFIX</item>
</sets>
<uses>
-JAVAHCOMSTR
-JAVACLASSPATH
+<item>JAVAHCOMSTR</item>
+<item>JAVACLASSPATH</item>
</uses>
</tool>
<builder name="JavaH">
<summary>
+<para>
Builds C header and source files for
implementing Java native methods.
The target can be either a directory
@@ -35,7 +57,9 @@ by calling the &b-link-Java; builder method,
or the objects returned from the
&b-Java;
builder method.
+</para>
+<para>
If the construction variable
&cv-link-JAVACLASSDIR;
is set, either in the environment
@@ -45,10 +69,13 @@ builder method itself,
then the value of the variable
will be stripped from the
beginning of any <filename>.class</filename> file names.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# builds java_native.h
classes = env.Java(target = 'classdir', source = 'src')
env.JavaH(target = 'java_native.h', source = classes)
@@ -61,40 +88,50 @@ env.JavaH(target = 'include',
env.JavaH(target = 'export',
source = ['classes/foo.class', 'classes/bar.class'],
JAVACLASSDIR = 'classes')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="JAVAH">
<summary>
+<para>
The Java generator for C header and stub files.
+</para>
</summary>
</cvar>
<cvar name="JAVAHCOM">
<summary>
+<para>
The command line used to generate C header and stub files
from Java classes.
Any options specified in the &cv-link-JAVAHFLAGS; construction variable
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="JAVAHCOMSTR">
<summary>
+<para>
The string displayed when C header and stub files
are generated from Java classes.
If this is not set, then &cv-link-JAVAHCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(JAVAHCOMSTR = "Generating header/stub file(s) $TARGETS from $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="JAVAHFLAGS">
<summary>
+<para>
General options passed to the C header and stub file generator
for Java classes.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/latex.py b/src/engine/SCons/Tool/latex.py
index 75033bc..899a508 100644
--- a/src/engine/SCons/Tool/latex.py
+++ b/src/engine/SCons/Tool/latex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/latex.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/latex.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Defaults
diff --git a/src/engine/SCons/Tool/latex.xml b/src/engine/SCons/Tool/latex.xml
index efa9ff6..f695533 100644
--- a/src/engine/SCons/Tool/latex.xml
+++ b/src/engine/SCons/Tool/latex.xml
@@ -1,55 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="latex">
<summary>
+<para>
Sets construction variables for the &latex; utility.
+</para>
</summary>
<sets>
-LATEX
-LATEXFLAGS
-LATEXCOM
+<item>LATEX</item>
+<item>LATEXFLAGS</item>
+<item>LATEXCOM</item>
</sets>
<uses>
-LATEXCOMSTR
+<item>LATEXCOMSTR</item>
</uses>
</tool>
<cvar name="LATEX">
<summary>
+<para>
The LaTeX structured formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="LATEXCOM">
<summary>
+<para>
The command line used to call the LaTeX structured formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="LATEXCOMSTR">
<summary>
+<para>
The string displayed when calling
the LaTeX structured formatter and typesetter.
If this is not set, then &cv-link-LATEXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(LATEXCOMSTR = "Building $TARGET from LaTeX input $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="LATEXFLAGS">
<summary>
+<para>
General options passed to the LaTeX structured formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="LATEXRETRIES">
<summary>
+<para>
The maximum number of times that LaTeX
will be re-run if the
<filename>.log</filename>
@@ -57,15 +87,20 @@ generated by the &cv-link-LATEXCOM; command
indicates that there are undefined references.
The default is to try to resolve undefined references
by re-running LaTeX up to three times.
+</para>
</summary>
</cvar>
<cvar name="TEXINPUTS">
<summary>
+<para>
List of directories that the LaTeX program will search
for include directories.
The LaTeX implicit dependency scanner will search these
directories for \include and \import files.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/lex.py b/src/engine/SCons/Tool/lex.py
index 6327730..00e292f 100644
--- a/src/engine/SCons/Tool/lex.py
+++ b/src/engine/SCons/Tool/lex.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/lex.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/lex.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/lex.xml b/src/engine/SCons/Tool/lex.xml
index 4e22cb9..82ec18f 100644
--- a/src/engine/SCons/Tool/lex.xml
+++ b/src/engine/SCons/Tool/lex.xml
@@ -1,50 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="lex">
<summary>
+<para>
Sets construction variables for the &lex; lexical analyser.
+</para>
</summary>
<sets>
-LEX
-LEXFLAGS
-LEXCOM
+<item>LEX</item>
+<item>LEXFLAGS</item>
+<item>LEXCOM</item>
</sets>
<uses>
-LEXCOMSTR
+<item>LEXCOMSTR</item>
</uses>
</tool>
<cvar name="LEX">
<summary>
+<para>
The lexical analyzer generator.
+</para>
</summary>
</cvar>
<cvar name="LEXCOM">
<summary>
+<para>
The command line used to call the lexical analyzer generator
to generate a source file.
+</para>
</summary>
</cvar>
<cvar name="LEXCOMSTR">
<summary>
+<para>
The string displayed when generating a source file
using the lexical analyzer generator.
If this is not set, then &cv-link-LEXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(LEXCOMSTR = "Lex'ing $TARGET from $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="LEXFLAGS">
<summary>
+<para>
General options passed to the lexical analyzer generator.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/link.py b/src/engine/SCons/Tool/link.py
index 008a7d7..f6e883f 100644
--- a/src/engine/SCons/Tool/link.py
+++ b/src/engine/SCons/Tool/link.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/link.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/link.py 2014/03/02 14:18:15 garyo"
import re
@@ -127,6 +127,18 @@ def shlib_emitter_names(target, source, env):
print "shlib_emitter_names: side effect: ", name
# add version_name to list of names to be a Side effect
version_names.append(version_name)
+ elif platform == 'cygwin':
+ shlib_suffix = env.subst('$SHLIBSUFFIX')
+ name = target[0].name
+ # generate library name with the version number
+ suffix_re = re.escape(shlib_suffix)
+ version_name = re.sub(suffix_re, '-' + re.sub('\.', '-', version) + shlib_suffix, name)
+ if Verbose:
+ print "shlib_emitter_names: target is ", version_name
+ print "shlib_emitter_names: side effect: ", name
+ # add version_name to list of names to be a Side effect
+ version_names.append(version_name)
+
except KeyError:
version = None
return version_names
diff --git a/src/engine/SCons/Tool/link.xml b/src/engine/SCons/Tool/link.xml
index 560e690..e639d61 100644
--- a/src/engine/SCons/Tool/link.xml
+++ b/src/engine/SCons/Tool/link.xml
@@ -1,112 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="link">
<summary>
+<para>
Sets construction variables for generic POSIX linkers.
+</para>
</summary>
<sets>
-SHLINK
-SHLINKFLAGS
-SHLINKCOM
-LINK
-LINKFLAGS
-LINKCOM
-LIBDIRPREFIX
-LIBDIRSUFFIX
-LIBLINKPREFIX
-LIBLINKSUFFIX
-SHLIBSUFFIX
-LDMODULE
-LDMODULEPREFIX
-LDMODULESUFFIX
-LDMODULEFLAGS
-LDMODULECOM
+<item>SHLINK</item>
+<item>SHLINKFLAGS</item>
+<item>SHLINKCOM</item>
+<item>LINK</item>
+<item>LINKFLAGS</item>
+<item>LINKCOM</item>
+<item>LIBDIRPREFIX</item>
+<item>LIBDIRSUFFIX</item>
+<item>LIBLINKPREFIX</item>
+<item>LIBLINKSUFFIX</item>
+<item>SHLIBSUFFIX</item>
+<item>LDMODULE</item>
+<item>LDMODULEPREFIX</item>
+<item>LDMODULESUFFIX</item>
+<item>LDMODULEFLAGS</item>
+<item>LDMODULECOM</item>
</sets>
<uses>
-SHLINKCOMSTR
-LINKCOMSTR
-LDMODULECOMSTR
+<item>SHLINKCOMSTR</item>
+<item>LINKCOMSTR</item>
+<item>LDMODULECOMSTR</item>
</uses>
</tool>
<cvar name="LDMODULE">
<summary>
+<para>
The linker for building loadable modules.
By default, this is the same as &cv-link-SHLINK;.
+</para>
</summary>
</cvar>
<cvar name="LDMODULECOM">
<summary>
+<para>
The command line for building loadable modules.
On Mac OS X, this uses the &cv-link-LDMODULE;,
&cv-link-LDMODULEFLAGS; and
&cv-link-FRAMEWORKSFLAGS; variables.
On other systems, this is the same as &cv-link-SHLINK;.
+</para>
</summary>
</cvar>
<cvar name="LDMODULECOMSTR">
<summary>
+<para>
The string displayed when building loadable modules.
If this is not set, then &cv-link-LDMODULECOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="LDMODULEFLAGS">
<summary>
+<para>
General user options passed to the linker for building loadable modules.
+</para>
</summary>
</cvar>
<cvar name="LDMODULEPREFIX">
<summary>
+<para>
The prefix used for loadable module file names.
On Mac OS X, this is null;
on other systems, this is
the same as &cv-link-SHLIBPREFIX;.
+</para>
</summary>
</cvar>
<cvar name="LDMODULESUFFIX">
<summary>
+<para>
The suffix used for loadable module file names.
On Mac OS X, this is null;
on other systems, this is
the same as $SHLIBSUFFIX.
+</para>
</summary>
</cvar>
<cvar name="LINK">
<summary>
+<para>
The linker.
+</para>
</summary>
</cvar>
<cvar name="LINKCOM">
<summary>
+<para>
The command line used to link object files into an executable.
+</para>
</summary>
</cvar>
<cvar name="LINKCOMSTR">
<summary>
+<para>
The string displayed when object files
are linked into an executable.
If this is not set, then &cv-link-LINKCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(LINKCOMSTR = "Linking $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="LINKFLAGS">
<summary>
+<para>
General user options passed to the linker.
Note that this variable should
<emphasis>not</emphasis>
@@ -125,34 +165,42 @@ and
&cv-link-_LIBDIRFLAGS;
above,
for the variable that expands to library search path options.
+</para>
</summary>
</cvar>
<cvar name="SHLINK">
<summary>
+<para>
The linker for programs that use shared libraries.
+</para>
</summary>
</cvar>
<cvar name="SHLINKCOM">
<summary>
+<para>
The command line used to link programs using shared libraries.
+</para>
</summary>
</cvar>
<cvar name="SHLINKCOMSTR">
<summary>
+<para>
The string displayed when programs using shared libraries are linked.
If this is not set, then &cv-link-SHLINKCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(SHLINKCOMSTR = "Linking shared $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="SHLINKFLAGS">
<summary>
+<para>
General user options passed to the linker for programs using shared libraries.
Note that this variable should
<emphasis>not</emphasis>
@@ -171,5 +219,8 @@ and
&cv-link-_LIBDIRFLAGS;
above,
for the variable that expands to library search path options.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/linkloc.py b/src/engine/SCons/Tool/linkloc.py
index 6fdd4da..9f5a6dc 100644
--- a/src/engine/SCons/Tool/linkloc.py
+++ b/src/engine/SCons/Tool/linkloc.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/linkloc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/linkloc.py 2014/03/02 14:18:15 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/linkloc.xml b/src/engine/SCons/Tool/linkloc.xml
index a05d7f4..a5bb901 100644
--- a/src/engine/SCons/Tool/linkloc.xml
+++ b/src/engine/SCons/Tool/linkloc.xml
@@ -1,31 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="linkloc">
<summary>
+<para>
Sets construction variables for the
<application>LinkLoc</application>
linker for the Phar Lap ETS embedded operating system.
+</para>
</summary>
<sets>
-<!--SUBST_CMD_FILE-->
-SHLINK
-SHLINKFLAGS
-SHLINKCOM
-<!--SHLINKEMITTER-->
-LINK
-LINKFLAGS
-LINKCOM
-LIBDIRPREFIX
-LIBDIRSUFFIX
-LIBLINKPREFIX
-LIBLINKSUFFIX
+<item><!--SUBST_CMD_FILE--></item>
+<item>SHLINK</item>
+<item>SHLINKFLAGS</item>
+<item>SHLINKCOM</item>
+<item><!--SHLINKEMITTER--></item>
+<item>LINK</item>
+<item>LINKFLAGS</item>
+<item>LINKCOM</item>
+<item>LIBDIRPREFIX</item>
+<item>LIBDIRSUFFIX</item>
+<item>LIBLINKPREFIX</item>
+<item>LIBLINKSUFFIX</item>
</sets>
<uses>
-SHLINKCOMSTR
-LINKCOMSTR
+<item>SHLINKCOMSTR</item>
+<item>LINKCOMSTR</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/m4.py b/src/engine/SCons/Tool/m4.py
index dfef659..5088b58 100644
--- a/src/engine/SCons/Tool/m4.py
+++ b/src/engine/SCons/Tool/m4.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/m4.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/m4.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/m4.xml b/src/engine/SCons/Tool/m4.xml
index e411b3c..66a45a6 100644
--- a/src/engine/SCons/Tool/m4.xml
+++ b/src/engine/SCons/Tool/m4.xml
@@ -1,25 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="m4">
<summary>
+<para>
Sets construction variables for the &m4; macro processor.
+</para>
</summary>
<sets>
-M4
-M4FLAGS
-M4COM
+<item>M4</item>
+<item>M4FLAGS</item>
+<item>M4COM</item>
</sets>
<uses>
-M4COMSTR
+<item>M4COMSTR</item>
</uses>
</tool>
<builder name="M4">
<summary>
+<para>
Builds an output file from an M4 input file.
This uses a default &cv-link-M4FLAGS; value of
<option>-E</option>,
@@ -27,35 +49,46 @@ which considers all warnings to be fatal
and stops on the first warning
when using the GNU version of m4.
Example:
+</para>
-<example>
+<example_commands>
env.M4(target = 'foo.c', source = 'foo.c.m4')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="M4">
<summary>
+<para>
The M4 macro preprocessor.
+</para>
</summary>
</cvar>
<cvar name="M4COM">
<summary>
+<para>
The command line used to pass files through the M4 macro preprocessor.
+</para>
</summary>
</cvar>
<cvar name="M4COMSTR">
<summary>
+<para>
The string displayed when
a file is passed through the M4 macro preprocessor.
If this is not set, then &cv-link-M4COM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="M4FLAGS">
<summary>
+<para>
General options passed to the M4 macro preprocessor.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/masm.py b/src/engine/SCons/Tool/masm.py
index b7fb94e..178584d 100644
--- a/src/engine/SCons/Tool/masm.py
+++ b/src/engine/SCons/Tool/masm.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/masm.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/masm.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/masm.xml b/src/engine/SCons/Tool/masm.xml
index aa22b8f..f56a134 100644
--- a/src/engine/SCons/Tool/masm.xml
+++ b/src/engine/SCons/Tool/masm.xml
@@ -1,26 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="masm">
<summary>
+<para>
Sets construction variables for the Microsoft assembler.
+</para>
</summary>
<sets>
-AS
-ASFLAGS
-ASPPFLAGS
-ASCOM
-ASPPCOM
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+<item>AS</item>
+<item>ASFLAGS</item>
+<item>ASPPFLAGS</item>
+<item>ASCOM</item>
+<item>ASPPCOM</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
</sets>
<uses>
-ASCOMSTR
-ASPPCOMSTR
-CPPFLAGS
-_CPPDEFFLAGS
-_CPPINCFLAGS
+<item>ASCOMSTR</item>
+<item>ASPPCOMSTR</item>
+<item>CPPFLAGS</item>
+<item>_CPPDEFFLAGS</item>
+<item>_CPPINCFLAGS</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/midl.py b/src/engine/SCons/Tool/midl.py
index a69406d..e5a871f 100644
--- a/src/engine/SCons/Tool/midl.py
+++ b/src/engine/SCons/Tool/midl.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/midl.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/midl.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/midl.xml b/src/engine/SCons/Tool/midl.xml
index 51693db..272ebac 100644
--- a/src/engine/SCons/Tool/midl.xml
+++ b/src/engine/SCons/Tool/midl.xml
@@ -1,36 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="midl">
<summary>
+<para>
Sets construction variables for the Microsoft IDL compiler.
+</para>
</summary>
<sets>
-MIDL
-MIDLFLAGS
-MIDLCOM
+<item>MIDL</item>
+<item>MIDLFLAGS</item>
+<item>MIDLCOM</item>
</sets>
<uses>
-MIDLCOMSTR
+<item>MIDLCOMSTR</item>
</uses>
</tool>
<builder name="TypeLibrary">
<summary>
+<para>
Builds a Windows type library (<filename>.tlb</filename>)
file from an input IDL file (<filename>.idl</filename>).
In addition, it will build the associated inteface stub and
proxy source files,
naming them according to the base name of the <filename>.idl</filename> file.
For example,
+</para>
-<example>
+<example_commands>
env.TypeLibrary(source="foo.idl")
-</example>
+</example_commands>
+<para>
Will create <filename>foo.tlb</filename>,
<filename>foo.h</filename>,
<filename>foo_i.c</filename>,
@@ -38,31 +62,42 @@ Will create <filename>foo.tlb</filename>,
and
<filename>foo_data.c</filename>
files.
+</para>
</summary>
</builder>
<cvar name="MIDL">
<summary>
+<para>
The Microsoft IDL compiler.
+</para>
</summary>
</cvar>
<cvar name="MIDLCOM">
<summary>
+<para>
The command line used to pass files to the Microsoft IDL compiler.
+</para>
</summary>
</cvar>
<cvar name="MIDLCOMSTR">
<summary>
+<para>
The string displayed when
the Microsoft IDL copmiler is called.
If this is not set, then &cv-link-MIDLCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="MIDLFLAGS">
<summary>
+<para>
General options passed to the Microsoft IDL compiler.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/mingw.py b/src/engine/SCons/Tool/mingw.py
index a81c94c..46ca9e4 100644
--- a/src/engine/SCons/Tool/mingw.py
+++ b/src/engine/SCons/Tool/mingw.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mingw.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/mingw.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/mingw.xml b/src/engine/SCons/Tool/mingw.xml
index 15d6790..ca394e2 100644
--- a/src/engine/SCons/Tool/mingw.xml
+++ b/src/engine/SCons/Tool/mingw.xml
@@ -1,38 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="mingw">
<summary>
+<para>
Sets construction variables for MinGW (Minimal Gnu on Windows).
+</para>
</summary>
<sets>
-CC
-SHCCFLAGS
-CXX
-SHCXXFLAGS
-SHLINKFLAGS
-SHLINKCOM
-LDMODULECOM
-AS
-WINDOWSDEFPREFIX
-WINDOWSDEFSUFFIX
-SHOBJSUFFIX
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
-RC
-RCFLAGS
-RCINCFLAGS
-RCINCPREFIX
-RCINCSUFFIX
-RCCOM
-OBJSUFFIX
-LIBPREFIX
-LIBSUFFIX
+<item>CC</item>
+<item>SHCCFLAGS</item>
+<item>CXX</item>
+<item>SHCXXFLAGS</item>
+<item>SHLINKFLAGS</item>
+<item>SHLINKCOM</item>
+<item>LDMODULECOM</item>
+<item>AS</item>
+<item>WINDOWSDEFPREFIX</item>
+<item>WINDOWSDEFSUFFIX</item>
+<item>SHOBJSUFFIX</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
+<item>RC</item>
+<item>RCFLAGS</item>
+<item>RCINCFLAGS</item>
+<item>RCINCPREFIX</item>
+<item>RCINCSUFFIX</item>
+<item>RCCOM</item>
+<item>OBJSUFFIX</item>
+<item>LIBPREFIX</item>
+<item>LIBSUFFIX</item>
</sets>
<uses>
-SHLINKCOMSTR
-RCCOMSTR
+<item>SHLINKCOMSTR</item>
+<item>RCCOMSTR</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/msgfmt.py b/src/engine/SCons/Tool/msgfmt.py
index d444ae2..b831738 100644
--- a/src/engine/SCons/Tool/msgfmt.py
+++ b/src/engine/SCons/Tool/msgfmt.py
@@ -1,6 +1,6 @@
""" msgfmt tool """
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msgfmt.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/msgfmt.py 2014/03/02 14:18:15 garyo"
from SCons.Builder import BuilderBase
#############################################################################
diff --git a/src/engine/SCons/Tool/msgfmt.xml b/src/engine/SCons/Tool/msgfmt.xml
index e595f60..b45bbae 100644
--- a/src/engine/SCons/Tool/msgfmt.xml
+++ b/src/engine/SCons/Tool/msgfmt.xml
@@ -1,102 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="msgfmt">
<summary>
+<para>
This scons tool is a part of scons &t-link-gettext; toolset. It provides scons
interface to <command>msgfmt(1)</command> command, which generates binary
message catalog (<literal>MO</literal>) from a textual translation description
(<literal>PO</literal>).
+</para>
</summary>
<sets>
-MOSUFFIX
-MSGFMT
-MSGFMTCOM
-MSGFMTCOMSTR
-MSGFMTFLAGS
-POSUFFIX
+<item>MOSUFFIX</item>
+<item>MSGFMT</item>
+<item>MSGFMTCOM</item>
+<item>MSGFMTCOMSTR</item>
+<item>MSGFMTFLAGS</item>
+<item>POSUFFIX</item>
</sets>
<uses>
-LINGUAS_FILE
+<item>LINGUAS_FILE</item>
</uses>
</tool>
<builder name="MOFiles">
<summary>
+<para>
This builder belongs to &t-link-msgfmt; tool. The builder compiles
<literal>PO</literal> files to <literal>MO</literal> files.
+</para>
+<para>
<emphasis>Example 1</emphasis>.
Create <filename>pl.mo</filename> and <filename>en.mo</filename> by compiling
<filename>pl.po</filename> and <filename>en.po</filename>:
-<example>
+</para>
+<example_commands>
# ...
env.MOFiles(['pl', 'en'])
-</example>
+</example_commands>
+<para>
<emphasis>Example 2</emphasis>.
Compile files for languages defined in <filename>LINGUAS</filename> file:
-<example>
+</para>
+<example_commands>
# ...
env.MOFiles(LINGUAS_FILE = 1)
-</example>
+</example_commands>
+<para>
<emphasis>Example 3</emphasis>.
Create <filename>pl.mo</filename> and <filename>en.mo</filename> by compiling
<filename>pl.po</filename> and <filename>en.po</filename> plus files for
languages defined in <filename>LINGUAS</filename> file:
-<example>
+</para>
+<example_commands>
# ...
env.MOFiles(['pl', 'en'], LINGUAS_FILE = 1)
-</example>
+</example_commands>
+<para>
<emphasis>Example 4</emphasis>.
Compile files for languages defined in <filename>LINGUAS</filename> file
(another version):
-<example>
+</para>
+<example_commands>
# ...
env['LINGUAS_FILE'] = 1
env.MOFiles()
-</example>
+</example_commands>
</summary>
</builder>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MOSUFFIX">
<summary>
+<para>
Suffix used for <literal>MO</literal> files (default: <literal>'.mo'</literal>).
See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGFMT">
<summary>
+<para>
Absolute path to <command>msgfmt(1)</command> binary, found by
<function>Detect()</function>.
See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGFMTCOM">
<summary>
+<para>
Complete command line to run <command>msgfmt(1)</command> program.
See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGFMTCOMSTR">
<summary>
+<para>
String to display when <command>msgfmt(1)</command> is invoked
(default: <literal>''</literal>, which means ``print &cv-link-MSGFMTCOM;'').
See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGFMTFLAGS">
<summary>
+<para>
Additional flags to <command>msgfmt(1)</command>.
See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/msginit.py b/src/engine/SCons/Tool/msginit.py
index fcbd564..d745dc5 100644
--- a/src/engine/SCons/Tool/msginit.py
+++ b/src/engine/SCons/Tool/msginit.py
@@ -3,7 +3,7 @@
Tool specific initialization of msginit tool.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Tool specific initialization of msginit tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msginit.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/msginit.py 2014/03/02 14:18:15 garyo"
import SCons.Warnings
import SCons.Builder
diff --git a/src/engine/SCons/Tool/msginit.xml b/src/engine/SCons/Tool/msginit.xml
index d095654..ca298f6 100644
--- a/src/engine/SCons/Tool/msginit.xml
+++ b/src/engine/SCons/Tool/msginit.xml
@@ -1,36 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="msginit">
<summary>
+<para>
This scons tool is a part of scons &t-link-gettext; toolset. It provides
scons interface to <command>msginit(1)</command> program, which creates new
<literal>PO</literal> file, initializing the meta information with values from
user's environment (or options).
+</para>
</summary>
<sets>
-MSGINIT
-MSGINITCOM
-MSGINITCOMSTR
-MSGINITFLAGS
-POAUTOINIT
-POCREATE_ALIAS
-POSUFFIX
-POTSUFFIX
-_MSGINITLOCALE
+<item>MSGINIT</item>
+<item>MSGINITCOM</item>
+<item>MSGINITCOMSTR</item>
+<item>MSGINITFLAGS</item>
+<item>POAUTOINIT</item>
+<item>POCREATE_ALIAS</item>
+<item>POSUFFIX</item>
+<item>POTSUFFIX</item>
+<item>_MSGINITLOCALE</item>
</sets>
<uses>
-POTDOMAIN
-LINGUAS_FILE
-POAUTOINIT
+<item>POTDOMAIN</item>
+<item>LINGUAS_FILE</item>
+<item>POAUTOINIT</item>
</uses>
</tool>
<builder name="POInit">
<summary>
+<para>
This builder belongs to &t-link-msginit; tool. The builder initializes missing
<literal>PO</literal> file(s) if &cv-link-POAUTOINIT; is set. If
&cv-link-POAUTOINIT; is not set (default), &b-POInit; prints instruction for
@@ -42,127 +64,162 @@ instead</emphasis>. &b-link-POUpdate; chooses intelligently between
always uses <command>msginit(1)</command> and should be regarded as builder for
special purposes or for temporary use (e.g. for quick, one time initialization
of a bunch of <literal>PO</literal> files) or for tests.
+</para>
+<para>
Target nodes defined through &b-POInit; are not built by default (they're
<literal>Ignore</literal>d from <literal>'.'</literal> node) but are added to
special <literal>Alias</literal> (<literal>'po-create'</literal> by default).
The alias name may be changed through the &cv-link-POCREATE_ALIAS;
construction variable. All <literal>PO</literal> files defined through
&b-POInit; may be easily initialized by <command>scons po-create</command>.
+</para>
+<para>
<emphasis>Example 1</emphasis>.
Initialize <filename>en.po</filename> and <filename>pl.po</filename> from
<filename>messages.pot</filename>:
-<example>
+</para>
+<example_commands>
# ...
env.POInit(['en', 'pl']) # messages.pot --&gt; [en.po, pl.po]
-</example>
+</example_commands>
+<para>
<emphasis>Example 2</emphasis>.
Initialize <filename>en.po</filename> and <filename>pl.po</filename> from
<filename>foo.pot</filename>:
-<example>
+</para>
+<example_commands>
# ...
env.POInit(['en', 'pl'], ['foo']) # foo.pot --&gt; [en.po, pl.po]
-</example>
+</example_commands>
+<para>
<emphasis>Example 3</emphasis>.
Initialize <filename>en.po</filename> and <filename>pl.po</filename> from
<filename>foo.pot</filename> but using &cv-link-POTDOMAIN; construction
variable:
-<example>
+</para>
+<example_commands>
# ...
env.POInit(['en', 'pl'], POTDOMAIN='foo') # foo.pot --&gt; [en.po, pl.po]
-</example>
+</example_commands>
+<para>
<emphasis>Example 4</emphasis>.
Initialize <literal>PO</literal> files for languages defined in
<filename>LINGUAS</filename> file. The files will be initialized from template
<filename>messages.pot</filename>:
-<example>
+</para>
+<example_commands>
# ...
env.POInit(LINGUAS_FILE = 1) # needs 'LINGUAS' file
-</example>
+</example_commands>
+<para>
<emphasis>Example 5</emphasis>.
Initialize <filename>en.po</filename> and <filename>pl.pl</filename>
<literal>PO</literal> files plus files for languages defined in
<filename>LINGUAS</filename> file. The files will be initialized from template
<filename>messages.pot</filename>:
-<example>
+</para>
+<example_commands>
# ...
env.POInit(['en', 'pl'], LINGUAS_FILE = 1)
-</example>
+</example_commands>
+<para>
<emphasis>Example 6</emphasis>.
You may preconfigure your environment first, and then initialize
<literal>PO</literal> files:
-<example>
+</para>
+<example_commands>
# ...
env['POAUTOINIT'] = 1
env['LINGUAS_FILE'] = 1
env['POTDOMAIN'] = 'foo'
env.POInit()
-</example>
+</example_commands>
+<para>
which has same efect as:
-<example>
+</para>
+<example_commands>
# ...
env.POInit(POAUTOINIT = 1, LINGUAS_FILE = 1, POTDOMAIN = 'foo')
-</example>
+</example_commands>
</summary>
</builder>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="POCREATE_ALIAS">
<summary>
+<para>
Common alias for all <literal>PO</literal> files created with &b-POInit;
builder (default: <literal>'po-create'</literal>).
See &t-link-msginit; tool and &b-link-POInit; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="POSUFFIX">
<summary>
+<para>
Suffix used for <literal>PO</literal> files (default: <literal>'.po'</literal>)
See &t-link-msginit; tool and &b-link-POInit; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGINIT">
<summary>
+<para>
Path to <command>msginit(1)</command> program (found via
<literal>Detect()</literal>).
See &t-link-msginit; tool and &b-link-POInit; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGINITCOM">
<summary>
+<para>
Complete command line to run <command>msginit(1)</command> program.
See &t-link-msginit; tool and &b-link-POInit; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGINITCOMSTR">
<summary>
+<para>
String to display when <command>msginit(1)</command> is invoked
(default: <literal>''</literal>, which means ``print &cv-link-MSGINITCOM;'').
See &t-link-msginit; tool and &b-link-POInit; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGINITFLAGS">
<summary>
+<para>
List of additional flags to <command>msginit(1)</command> (default:
<literal>[]</literal>).
See &t-link-msginit; tool and &b-link-POInit; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="_MSGINITLOCALE">
<summary>
+<para>
Internal ``macro''. Computes locale (language) name based on target filename
(default: <literal>'${TARGET.filebase}' </literal>).
-</summary>
+</para>
+<para>
See &t-link-msginit; tool and &b-link-POInit; builder.
+</para>
+</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/msgmerge.py b/src/engine/SCons/Tool/msgmerge.py
index 35315f9..e50824e 100644
--- a/src/engine/SCons/Tool/msgmerge.py
+++ b/src/engine/SCons/Tool/msgmerge.py
@@ -3,7 +3,7 @@
Tool specific initialization for `msgmerge` tool.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Tool specific initialization for `msgmerge` tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msgmerge.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/msgmerge.py 2014/03/02 14:18:15 garyo"
#############################################################################
def _update_or_init_po_files(target, source, env):
diff --git a/src/engine/SCons/Tool/msgmerge.xml b/src/engine/SCons/Tool/msgmerge.xml
index 3f8ac1a..11f5d00 100644
--- a/src/engine/SCons/Tool/msgmerge.xml
+++ b/src/engine/SCons/Tool/msgmerge.xml
@@ -1,33 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="msgmerge">
<summary>
+<para>
This scons tool is a part of scons &t-link-gettext; toolset. It provides
scons interface to <command>msgmerge(1)</command> command, which merges two
Uniform style <filename>.po</filename> files together.
+</para>
</summary>
<sets>
-MSGMERGE
-MSGMERGECOM
-MSGMERGECOMSTR
-MSGMERGEFLAGS
-POSUFFIX
-POTSUFFIX
-POUPDATE_ALIAS
+<item>MSGMERGE</item>
+<item>MSGMERGECOM </item>
+<item>MSGMERGECOMSTR</item>
+<item>MSGMERGEFLAGS</item>
+<item>POSUFFIX </item>
+<item>POTSUFFIX</item>
+<item>POUPDATE_ALIAS</item>
</sets>
<uses>
-POTDOMAIN
-LINGUAS_FILE
-POAUTOINIT
+<item>POTDOMAIN</item>
+<item>LINGUAS_FILE</item>
+<item>POAUTOINIT</item>
</uses>
</tool>
<builder name="POUpdate">
<summary>
+<para>
The builder belongs to &t-link-msgmerge; tool. The builder updates
<literal>PO</literal> files with <command>msgmerge(1)</command>, or initializes
missing <literal>PO</literal> files as described in documentation of
@@ -35,7 +57,9 @@ missing <literal>PO</literal> files as described in documentation of
&cv-link-POAUTOINIT;). Note, that &b-POUpdate; <emphasis>does not add its
targets to <literal>po-create</literal> alias</emphasis> as &b-link-POInit;
does.
+</para>
+<para>
Target nodes defined through &b-POUpdate; are not built by default
(they're <literal>Ignore</literal>d from <literal>'.'</literal> node). Instead,
they are added automatically to special <literal>Alias</literal>
@@ -43,77 +67,94 @@ they are added automatically to special <literal>Alias</literal>
through the &cv-link-POUPDATE_ALIAS; construction variable. You can easilly
update <literal>PO</literal> files in your project by <command>scons
po-update</command>.
+</para>
+<para>
<emphasis>Example 1.</emphasis>
Update <filename>en.po</filename> and <filename>pl.po</filename> from
<filename>messages.pot</filename> template (see also &cv-link-POTDOMAIN;),
assuming that the later one exists or there is rule to build it (see
&b-link-POTUpdate;):
-<example>
+</para>
+<example_commands>
# ...
env.POUpdate(['en','pl']) # messages.pot --&gt; [en.po, pl.po]
-</example>
+</example_commands>
+<para>
<emphasis>Example 2.</emphasis>
Update <filename>en.po</filename> and <filename>pl.po</filename> from
<filename>foo.pot</filename> template:
-<example>
+</para>
+<example_commands>
# ...
env.POUpdate(['en', 'pl'], ['foo']) # foo.pot --&gt; [en.po, pl.pl]
-</example>
+</example_commands>
+<para>
<emphasis>Example 3.</emphasis>
Update <filename>en.po</filename> and <filename>pl.po</filename> from
<filename>foo.pot</filename> (another version):
-<example>
+</para>
+<example_commands>
# ...
env.POUpdate(['en', 'pl'], POTDOMAIN='foo') # foo.pot -- &gt; [en.po, pl.pl]
-</example>
+</example_commands>
+<para>
<emphasis>Example 4.</emphasis>
Update files for languages defined in <filename>LINGUAS</filename> file. The
files are updated from <filename>messages.pot</filename> template:
-<example>
+</para>
+<example_commands>
# ...
env.POUpdate(LINGUAS_FILE = 1) # needs 'LINGUAS' file
-</example>
+</example_commands>
+<para>
<emphasis>Example 5.</emphasis>
Same as above, but update from <filename>foo.pot</filename> template:
-<example>
+</para>
+<example_commands>
# ...
env.POUpdate(LINGUAS_FILE = 1, source = ['foo'])
-</example>
+</example_commands>
+<para>
<emphasis>Example 6.</emphasis>
Update <filename>en.po</filename> and <filename>pl.po</filename> plus files for
languages defined in <filename>LINGUAS</filename> file. The files are updated
from <filename>messages.pot</filename> template:
-<example>
+</para>
+<example_commands>
# produce 'en.po', 'pl.po' + files defined in 'LINGUAS':
env.POUpdate(['en', 'pl' ], LINGUAS_FILE = 1)
-</example>
+</example_commands>
+<para>
<emphasis>Example 7.</emphasis>
Use &cv-link-POAUTOINIT; to automatically initialize <literal>PO</literal> file
if it doesn't exist:
-<example>
+</para>
+<example_commands>
# ...
env.POUpdate(LINGUAS_FILE = 1, POAUTOINIT = 1)
-</example>
+</example_commands>
+<para>
<emphasis>Example 8.</emphasis>
Update <literal>PO</literal> files for languages defined in
<filename>LINGUAS</filename> file. The files are updated from
<filename>foo.pot</filename> template. All necessary settings are
pre-configured via environment.
-<example>
+</para>
+<example_commands>
# ...
env['POAUTOINIT'] = 1
env['LINGUAS_FILE'] = 1
env['POTDOMAIN'] = 'foo'
env.POUpdate()
-</example>
+</example_commands>
</summary>
</builder>
@@ -121,38 +162,50 @@ pre-configured via environment.
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="POUPDATE_ALIAS">
<summary>
+<para>
Common alias for all <literal>PO</literal> files being defined with
&b-link-POUpdate; builder (default: <literal>'po-update'</literal>).
See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGMERGE">
<summary>
+<para>
Absolute path to <command>msgmerge(1)</command> binary as found by
<function>Detect()</function>.
See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGMERGECOM">
<summary>
+<para>
Complete command line to run <command>msgmerge(1)</command> command.
See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGMERGECOMSTR">
<summary>
+<para>
String to be displayed when <command>msgmerge(1)</command> is invoked
(default: <literal>''</literal>, which means ``print &cv-link-MSGMERGECOM;'').
See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="MSGMERGEFLAGS">
<summary>
+<para>
Additional flags to <command>msgmerge(1)</command> command.
See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/mslib.py b/src/engine/SCons/Tool/mslib.py
index b851867..0f95e41 100644
--- a/src/engine/SCons/Tool/mslib.py
+++ b/src/engine/SCons/Tool/mslib.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mslib.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/mslib.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/mslib.xml b/src/engine/SCons/Tool/mslib.xml
index ce08efe..145b01b 100644
--- a/src/engine/SCons/Tool/mslib.xml
+++ b/src/engine/SCons/Tool/mslib.xml
@@ -1,23 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="mslib">
<summary>
+<para>
Sets construction variables for the Microsoft
<application>mslib</application>
library archiver.
+</para>
</summary>
<sets>
-AR
-ARFLAGS
-ARCOM
-LIBPREFIX
-LIBSUFFIX
+<item>AR</item>
+<item>ARFLAGS</item>
+<item>ARCOM</item>
+<item>LIBPREFIX</item>
+<item>LIBSUFFIX</item>
</sets>
<uses>
-ARCOMSTR
+<item>ARCOMSTR</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/mslink.py b/src/engine/SCons/Tool/mslink.py
index a35d7da..9374ffe 100644
--- a/src/engine/SCons/Tool/mslink.py
+++ b/src/engine/SCons/Tool/mslink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mslink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/mslink.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/mslink.xml b/src/engine/SCons/Tool/mslink.xml
index 33fa9dd..71b557e 100644
--- a/src/engine/SCons/Tool/mslink.xml
+++ b/src/engine/SCons/Tool/mslink.xml
@@ -1,57 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="mslink">
<summary>
+<para>
Sets construction variables for the Microsoft linker.
+</para>
</summary>
<sets>
-SHLINK
-SHLINKFLAGS
-SHLINKCOM
-LINK
-LINKFLAGS
-LINKCOM
-LIBDIRPREFIX
-LIBDIRSUFFIX
-LIBLINKPREFIX
-LIBLINKSUFFIX
-WIN32DEFPREFIX
-WIN32DEFSUFFIX
-WINDOWSDEFPREFIX
-WINDOWSDEFSUFFIX
-WINDOWS_INSERT_DEF
-WIN32EXPPREFIX
-WIN32EXPSUFFIX
-WINDOWSEXPPREFIX
-WINDOWSEXPSUFFIX
-WINDOWSSHLIBMANIFESTPREFIX
-WINDOWSSHLIBMANIFESTSUFFIX
-WINDOWSPROGMANIFESTPREFIX
-WINDOWSPROGMANIFESTSUFFIX
-<!--REGSVRACTION-->
-REGSVR
-REGSVRFLAGS
-REGSVRCOM
-LDMODULE
-LDMODULEPREFIX
-LDMODULESUFFIX
-LDMODULEFLAGS
-LDMODULECOM
+<item>SHLINK</item>
+<item>SHLINKFLAGS</item>
+<item>SHLINKCOM</item>
+<item>LINK</item>
+<item>LINKFLAGS</item>
+<item>LINKCOM</item>
+<item>LIBDIRPREFIX</item>
+<item>LIBDIRSUFFIX</item>
+<item>LIBLINKPREFIX</item>
+<item>LIBLINKSUFFIX</item>
+<item>WIN32DEFPREFIX</item>
+<item>WIN32DEFSUFFIX</item>
+<item>WINDOWSDEFPREFIX</item>
+<item>WINDOWSDEFSUFFIX</item>
+<item>WINDOWS_INSERT_DEF</item>
+<item>WIN32EXPPREFIX</item>
+<item>WIN32EXPSUFFIX</item>
+<item>WINDOWSEXPPREFIX</item>
+<item>WINDOWSEXPSUFFIX</item>
+<item>WINDOWSSHLIBMANIFESTPREFIX</item>
+<item>WINDOWSSHLIBMANIFESTSUFFIX</item>
+<item>WINDOWSPROGMANIFESTPREFIX</item>
+<item>WINDOWSPROGMANIFESTSUFFIX</item>
+<item><!--REGSVRACTION--></item>
+<item>REGSVR</item>
+<item>REGSVRFLAGS</item>
+<item>REGSVRCOM</item>
+<item>LDMODULE</item>
+<item>LDMODULEPREFIX</item>
+<item>LDMODULESUFFIX</item>
+<item>LDMODULEFLAGS</item>
+<item>LDMODULECOM</item>
</sets>
<uses>
-SHLINKCOMSTR
-LINKCOMSTR
-REGSVRCOMSTR
-LDMODULECOMSTR
+<item>SHLINKCOMSTR</item>
+<item>LINKCOMSTR</item>
+<item>REGSVRCOMSTR</item>
+<item>LDMODULECOMSTR</item>
</uses>
</tool>
<cvar name="no_import_lib">
<summary>
+<para>
When set to non-zero,
suppresses creation of a corresponding Windows static import lib by the
<literal>SharedLibrary</literal>
@@ -60,11 +82,13 @@ MinGW, Microsoft Visual Studio or Metrowerks.
This also suppresses creation
of an export (.exp) file
when using Microsoft Visual Studio.
+</para>
</summary>
</cvar>
<cvar name="PDB">
<summary>
+<para>
The Microsoft Visual C++ PDB file that will store debugging information for
object files, shared libraries, and programs. This variable is ignored by
tools other than Microsoft Visual C++.
@@ -73,11 +97,13 @@ defined SCons will add options to the compiler and linker command line to
cause them to generate external debugging information, and will also set up the
dependencies for the PDB file.
Example:
+</para>
-<example>
+<example_commands>
env['PDB'] = 'hello.pdb'
-</example>
+</example_commands>
+<para>
The Visual C++ compiler switch that SCons uses by default
to generate PDB information is <option>/Z7</option>.
This works correctly with parallel (<option>-j</option>) builds
@@ -91,114 +117,144 @@ although parallel builds will no longer work.
You can generate PDB files with the <option>/Zi</option>
switch by overriding the default &cv-link-CCPDBFLAGS; variable;
see the entry for that variable for specific examples.
+</para>
</summary>
</cvar>
<cvar name="WINDOWS_EMBED_MANIFEST">
<summary>
+<para>
Set this variable to True or 1 to embed the compiler-generated manifest
(normally <literal>${TARGET}.manifest</literal>)
into all Windows exes and DLLs built with this environment,
as a resource during their link step.
This is done using &cv-link-MT; and &cv-link-MTEXECOM; and &cv-link-MTSHLIBCOM;.
+</para>
</summary>
</cvar>
<cvar name="MT">
<summary>
+<para>
The program used on Windows systems to embed manifests into DLLs and EXEs.
See also &cv-link-WINDOWS_EMBED_MANIFEST;.
+</para>
</summary>
</cvar>
<cvar name="MTFLAGS">
<summary>
+<para>
Flags passed to the &cv-link-MT; manifest embedding program (Windows only).
+</para>
</summary>
</cvar>
<cvar name="MTEXECOM">
<summary>
+<para>
The Windows command line used to embed manifests into executables.
See also &cv-link-MTSHLIBCOM;.
+</para>
</summary>
</cvar>
<cvar name="MTSHLIBCOM">
<summary>
+<para>
The Windows command line used to embed manifests into shared libraries (DLLs).
See also &cv-link-MTEXECOM;.
+</para>
</summary>
</cvar>
<cvar name="REGSVR">
<summary>
+<para>
The program used on Windows systems
to register a newly-built DLL library
whenever the &b-SharedLibrary; builder
is passed a keyword argument of <literal>register=1</literal>.
+</para>
</summary>
</cvar>
<cvar name="REGSVRCOM">
<summary>
+<para>
The command line used on Windows systems
to register a newly-built DLL library
whenever the &b-SharedLibrary; builder
is passed a keyword argument of <literal>register=1</literal>.
+</para>
</summary>
</cvar>
<cvar name="REGSVRCOMSTR">
<summary>
+<para>
The string displayed when registering a newly-built DLL file.
If this is not set, then &cv-link-REGSVRCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="REGSVRFLAGS">
<summary>
+<para>
Flags passed to the DLL registration program
on Windows systems when a newly-built DLL library is registered.
By default,
this includes the <option>/s</option>
that prevents dialog boxes from popping up
and requiring user attention.
+</para>
</summary>
</cvar>
<cvar name="WIN32_INSERT_DEF">
<summary>
+<para>
A deprecated synonym for &cv-link-WINDOWS_INSERT_DEF;.
+</para>
</summary>
</cvar>
<cvar name="WIN32DEFPREFIX">
<summary>
+<para>
A deprecated synonym for &cv-link-WINDOWSDEFPREFIX;.
+</para>
</summary>
</cvar>
<cvar name="WIN32DEFSUFFIX">
<summary>
+<para>
A deprecated synonym for &cv-link-WINDOWSDEFSUFFIX;.
+</para>
</summary>
</cvar>
<cvar name="WIN32EXPPREFIX">
<summary>
+<para>
A deprecated synonym for &cv-link-WINDOWSEXPSUFFIX;.
+</para>
</summary>
</cvar>
<cvar name="WIN32EXPSUFFIX">
<summary>
+<para>
A deprecated synonym for &cv-link-WINDOWSEXPSUFFIX;.
+</para>
</summary>
</cvar>
<cvar name="WINDOWS_INSERT_DEF">
<summary>
+<para>
When this is set to true,
a library build of a Windows shared library
(<filename>.dll</filename> file)
@@ -207,67 +263,88 @@ at the same time,
if a <filename>.def</filename> file
is not already listed as a build target.
The default is 0 (do not build a <filename>.def</filename> file).
+</para>
</summary>
</cvar>
<cvar name="WINDOWS_INSERT_MANIFEST">
<summary>
+<para>
When this is set to true,
&scons;
will be aware of the
<filename>.manifest</filename>
files generated by Microsoft Visua C/C++ 8.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSDEFPREFIX">
<summary>
+<para>
The prefix used for Windows <filename>.def</filename> file names.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSDEFSUFFIX">
<summary>
+<para>
The suffix used for Windows <filename>.def</filename> file names.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSEXPPREFIX">
<summary>
+<para>
The prefix used for Windows <filename>.exp</filename> file names.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSEXPSUFFIX">
<summary>
+<para>
The suffix used for Windows <filename>.exp</filename> file names.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSPROGMANIFESTPREFIX">
<summary>
+<para>
The prefix used for executable program <filename>.manifest</filename> files
generated by Microsoft Visual C/C++.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSPROGMANIFESTSUFFIX">
<summary>
+<para>
The suffix used for executable program <filename>.manifest</filename> files
generated by Microsoft Visual C/C++.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSSHLIBMANIFESTPREFIX">
<summary>
+<para>
The prefix used for shared library <filename>.manifest</filename> files
generated by Microsoft Visual C/C++.
+</para>
</summary>
</cvar>
<cvar name="WINDOWSSHLIBMANIFESTSUFFIX">
<summary>
+<para>
The suffix used for shared library <filename>.manifest</filename> files
generated by Microsoft Visual C/C++.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/mssdk.py b/src/engine/SCons/Tool/mssdk.py
index 84291bc..6112bff 100644
--- a/src/engine/SCons/Tool/mssdk.py
+++ b/src/engine/SCons/Tool/mssdk.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mssdk.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/mssdk.py 2014/03/02 14:18:15 garyo"
"""engine.SCons.Tool.mssdk
diff --git a/src/engine/SCons/Tool/mssdk.xml b/src/engine/SCons/Tool/mssdk.xml
index c5ec68d..a73bcd9 100644
--- a/src/engine/SCons/Tool/mssdk.xml
+++ b/src/engine/SCons/Tool/mssdk.xml
@@ -1,11 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="mssdk">
<summary>
+<para>
Sets variables for Microsoft Platform SDK and/or Windows SDK.
Note that unlike most other Tool modules,
mssdk does not set construction variables,
@@ -16,26 +36,30 @@ the Microsoft toolchain:
<literal>%LIB%</literal>,
<literal>%LIBPATH%</literal> and
<literal>%PATH%</literal>.
+</para>
</summary>
<sets>
</sets>
<uses>
-MSSDK_DIR
-MSSDK_VERSION
-MSVS_VERSION
+<item>MSSDK_DIR</item>
+<item>MSSDK_VERSION</item>
+<item>MSVS_VERSION</item>
</uses>
</tool>
<cvar name="MSSDK_DIR">
<summary>
+<para>
The directory containing the Microsoft SDK
(either Platform SDK or Windows SDK)
to be used for compilation.
+</para>
</summary>
</cvar>
<cvar name="MSSDK_VERSION">
<summary>
+<para>
The version string of the Microsoft SDK
(either Platform SDK or Windows SDK)
to be used for compilation.
@@ -46,5 +70,8 @@ Supported versions include
<literal>2003R2</literal>
and
<literal>2003R1</literal>.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py
index 552c8ef..e09fe9f 100644
--- a/src/engine/SCons/Tool/msvc.py
+++ b/src/engine/SCons/Tool/msvc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/msvc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/msvc.py 2014/03/02 14:18:15 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/msvc.xml b/src/engine/SCons/Tool/msvc.xml
index f03ce9d..d614fd0 100644
--- a/src/engine/SCons/Tool/msvc.xml
+++ b/src/engine/SCons/Tool/msvc.xml
@@ -1,62 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="msvc">
<summary>
+<para>
Sets construction variables for the Microsoft Visual C/C++ compiler.
+</para>
</summary>
<sets>
-CCPDBFLAGS
-CCPCHFLAGS
-<!--CCCOMFLAGS-->
-CC
-CCFLAGS
-CFLAGS
-CCCOM
-SHCC
-SHCCFLAGS
-SHCFLAGS
-SHCCCOM
-CXX
-CXXFLAGS
-CXXCOM
-SHCXX
-SHCXXFLAGS
-SHCXXCOM
-CPPDEFPREFIX
-CPPDEFSUFFIX
-INCPREFIX
-INCSUFFIX
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
-RC
-RCFLAGS
-RCCOM
-BUILDERS
-OBJPREFIX
-OBJSUFFIX
-SHOBJPREFIX
-SHOBJSUFFIX
-CFILESUFFIX
-CXXFILESUFFIX
-PCHPDBFLAGS
-PCHCOM
+<item>CCPDBFLAGS</item>
+<item>CCPCHFLAGS</item>
+<item><!--CCCOMFLAGS--></item>
+<item>CC</item>
+<item>CCFLAGS</item>
+<item>CFLAGS</item>
+<item>CCCOM</item>
+<item>SHCC</item>
+<item>SHCCFLAGS</item>
+<item>SHCFLAGS</item>
+<item>SHCCCOM</item>
+<item>CXX</item>
+<item>CXXFLAGS</item>
+<item>CXXCOM</item>
+<item>SHCXX</item>
+<item>SHCXXFLAGS</item>
+<item>SHCXXCOM</item>
+<item>CPPDEFPREFIX</item>
+<item>CPPDEFSUFFIX</item>
+<item>INCPREFIX</item>
+<item>INCSUFFIX</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
+<item>RC</item>
+<item>RCFLAGS</item>
+<item>RCCOM</item>
+<item>BUILDERS</item>
+<item>OBJPREFIX</item>
+<item>OBJSUFFIX</item>
+<item>SHOBJPREFIX</item>
+<item>SHOBJSUFFIX</item>
+<item>CFILESUFFIX</item>
+<item>CXXFILESUFFIX</item>
+<item>PCHPDBFLAGS</item>
+<item>PCHCOM</item>
</sets>
<uses>
-CCCOMSTR
-SHCCCOMSTR
-CXXCOMSTR
-SHCXXCOMSTR
-PCH
-PCHSTOP
-PDB
+<item>CCCOMSTR</item>
+<item>SHCCCOMSTR</item>
+<item>CXXCOMSTR</item>
+<item>SHCXXCOMSTR</item>
+<item>PCH</item>
+<item>PCHSTOP</item>
+<item>PDB</item>
</uses>
</tool>
<builder name="PCH">
<summary>
+<para>
Builds a Microsoft Visual C++ precompiled header.
Calling this builder method
returns a list of two targets: the PCH as the first element, and the object
@@ -66,15 +88,17 @@ provided when Microsoft Visual C++ is being used as the compiler.
The PCH builder method is generally used in
conjuction with the PCH construction variable to force object files to use
the precompiled header:
+</para>
-<example>
+<example_commands>
env['PCH'] = env.PCH('StdAfx.cpp')[0]
-</example>
+</example_commands>
</summary>
</builder>
<builder name="RES">
<summary>
+<para>
Builds a Microsoft Visual C++ resource file.
This builder method is only provided
when Microsoft Visual C++ or MinGW is being used as the compiler. The
@@ -85,32 +109,38 @@ for MinGW) suffix is added to the target name if no other suffix is given.
The source
file is scanned for implicit dependencies as though it were a C file.
Example:
+</para>
-<example>
+<example_commands>
env.RES('resource.rc')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="CCPCHFLAGS">
<summary>
+<para>
Options added to the compiler command line
to support building with precompiled headers.
The default value expands expands to the appropriate
Microsoft Visual C++ command-line options
when the &cv-link-PCH; construction variable is set.
+</para>
</summary>
</cvar>
<cvar name="CCPDBFLAGS">
<summary>
+<para>
Options added to the compiler command line
to support storing debugging information in a
Microsoft Visual C++ PDB file.
The default value expands expands to appropriate
Microsoft Visual C++ command-line options
when the &cv-link-PDB; construction variable is set.
+</para>
+<para>
The Visual C++ compiler option that SCons uses by default
to generate PDB information is <option>/Z7</option>.
This works correctly with parallel (<option>-j</option>) builds
@@ -121,27 +151,33 @@ embedded into a static library.
Using the <option>/Zi</option> instead may yield improved
link-time performance,
although parallel builds will no longer work.
+</para>
+<para>
You can generate PDB files with the <option>/Zi</option>
switch by overriding the default &cv-link-CCPDBFLAGS; variable as follows:
+</para>
-<example>
+<example_commands>
env['CCPDBFLAGS'] = ['${(PDB and "/Zi /Fd%s" % File(PDB)) or ""}']
-</example>
+</example_commands>
+<para>
An alternative would be to use the <option>/Zi</option>
to put the debugging information in a separate <filename>.pdb</filename>
file for each object file by overriding
the &cv-link-CCPDBFLAGS; variable as follows:
+</para>
-<example>
+<example_commands>
env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb'
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="MSVC_BATCH">
<summary>
+<para>
When set to any true value,
specifies that SCons should batch
compilation of object files
@@ -157,11 +193,13 @@ Any compilations where the object (target) file base name
(minus the <filename>.obj</filename>)
does not match the source file base name
will be compiled separately.
+</para>
</summary>
</cvar>
<cvar name="PCH">
<summary>
+<para>
The Microsoft Visual C++ precompiled header that will be used when compiling
object files. This variable is ignored by tools other than Microsoft Visual C++.
When this variable is
@@ -169,81 +207,99 @@ defined SCons will add options to the compiler command line to
cause it to use the precompiled header, and will also set up the
dependencies for the PCH file.
Example:
+</para>
-<example>
+<example_commands>
env['PCH'] = 'StdAfx.pch'
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="PCHCOM">
<summary>
+<para>
The command line used by the
&b-PCH;
builder to generated a precompiled header.
+</para>
</summary>
</cvar>
<cvar name="PCHCOMSTR">
<summary>
+<para>
The string displayed when generating a precompiled header.
If this is not set, then &cv-link-PCHCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="PCHPDBFLAGS">
<summary>
+<para>
A construction variable that, when expanded,
adds the <literal>/yD</literal> flag to the command line
only if the &cv-PDB; construction variable is set.
+</para>
</summary>
</cvar>
<cvar name="PCHSTOP">
<summary>
+<para>
This variable specifies how much of a source file is precompiled. This
variable is ignored by tools other than Microsoft Visual C++, or when
the PCH variable is not being used. When this variable is define it
must be a string that is the name of the header that
is included at the end of the precompiled portion of the source files, or
the empty string if the "#pragma hrdstop" construct is being used:
+</para>
-<example>
+<example_commands>
env['PCHSTOP'] = 'StdAfx.h'
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="RC">
<summary>
+<para>
The resource compiler used to build
a Microsoft Visual C++ resource file.
+</para>
</summary>
</cvar>
<cvar name="RCCOM">
<summary>
+<para>
The command line used to build
a Microsoft Visual C++ resource file.
+</para>
</summary>
</cvar>
<cvar name="RCCOMSTR">
<summary>
+<para>
The string displayed when invoking the resource compiler
to build a Microsoft Visual C++ resource file.
If this is not set, then &cv-link-RCCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="RCFLAGS">
<summary>
+<para>
The flags passed to the resource compiler by the RES builder.
+</para>
</summary>
</cvar>
<cvar name="RCINCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the command-line options
for specifying directories to be searched
@@ -252,46 +308,58 @@ The value of &cv-RCINCFLAGS; is created
by appending &cv-RCINCPREFIX; and &cv-RCINCSUFFIX;
to the beginning and end
of each directory in &cv-CPPPATH;.
+</para>
</summary>
</cvar>
<cvar name="RCINCPREFIX">
<summary>
+<para>
The prefix (flag) used to specify an include directory
on the resource compiler command line.
This will be appended to the beginning of each directory
in the &cv-CPPPATH; construction variable
when the &cv-RCINCFLAGS; variable is expanded.
+</para>
</summary>
</cvar>
<cvar name="RCINCSUFFIX">
<summary>
+<para>
The suffix used to specify an include directory
on the resource compiler command line.
This will be appended to the end of each directory
in the &cv-CPPPATH; construction variable
when the &cv-RCINCFLAGS; variable is expanded.
+</para>
</summary>
</cvar>
<cvar name="MSVC_VERSION">
<summary>
+<para>
Sets the preferred version of Microsoft Visual C/C++ to use.
+</para>
+<para>
If &cv-MSVC_VERSION; is not set, SCons will (by default) select the
latest version of Visual C/C++ installed on your system. If the
specified version isn't installed, tool initialization will fail.
This variable must be passed as an argument to the Environment()
constructor; setting it later has no effect. Set it to an unexpected
value (e.g. "XXX") to see the valid values on your system.
+</para>
</summary>
</cvar>
<cvar name="MSVC_USE_SCRIPT">
<summary>
+<para>
Use a batch script to set up Microsoft Visual Studio compiler
+</para>
+<para>
&cv-MSVC_USE_SCRIPT; overrides &cv-MSVC_VERSION; and &cv-TARGET_ARCH;.
If set to the name of a Visual Studio .bat file (e.g. vcvars.bat),
SCons will run that bat file and extract the relevant variables from
@@ -299,25 +367,33 @@ the result (typically %INCLUDE%, %LIB%, and %PATH%). Setting
MSVC_USE_SCRIPT to None bypasses the Visual Studio autodetection
entirely; use this if you are running SCons in a Visual Studio cmd
window and importing the shell's environment variables.
+</para>
</summary>
</cvar>
<cvar name="HOST_ARCH">
<summary>
+<para>
Sets the host architecture for Visual Studio compiler. If not set,
default to the detected host architecture: note that this may depend
on the python you are using.
This variable must be passed as an argument to the Environment()
constructor; setting it later has no effect.
+</para>
+<para>
Valid values are the same as for &cv-TARGET_ARCH;.
+</para>
+<para>
This is currently only used on Windows, but in the future it will be
used on other OSes as well.
+</para>
</summary>
</cvar>
<cvar name="TARGET_ARCH">
<summary>
+<para>
Sets the target architecture for Visual Studio compiler (i.e. the arch
of the binaries generated by the compiler). If not set, default to
&cv-HOST_ARCH;, or, if that is unset, to the architecture of the
@@ -327,7 +403,9 @@ This variable must be passed as an argument to the Environment()
constructor; setting it later has no effect.
This is currently only used on Windows, but in the future it will be
used on other OSes as well.
+</para>
+<para>
Valid values for Windows are
<literal>x86</literal>,
<literal>i386</literal>
@@ -339,5 +417,8 @@ Valid values for Windows are
and <literal>ia64</literal> (Itanium).
For example, if you want to compile 64-bit binaries, you would set
<literal>TARGET_ARCH='x86_64'</literal> in your SCons environment.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/msvs.py b/src/engine/SCons/Tool/msvs.py
index 24f3827..6e05b47 100644
--- a/src/engine/SCons/Tool/msvs.py
+++ b/src/engine/SCons/Tool/msvs.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msvs.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/msvs.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Tool/msvs.xml b/src/engine/SCons/Tool/msvs.xml
index 12d06b6..d26499a 100644
--- a/src/engine/SCons/Tool/msvs.xml
+++ b/src/engine/SCons/Tool/msvs.xml
@@ -1,24 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="msvs">
<summary>
+<para>
Sets construction variables for Microsoft Visual Studio.
+</para>
</summary>
<sets>
-MSVSPROJECTCOM
-MSVSSOLUTIONCOM
-MSVSSCONSCRIPT
-MSVSSCONS
-MSVSSCONSFLAGS
-MSVSSCONSCOM
-MSVSBUILDCOM
-MSVSREBUILDCOM
-MSVSCLEANCOM
-MSVSENCODING
+<item>MSVSPROJECTCOM</item>
+<item>MSVSSOLUTIONCOM</item>
+<item>MSVSSCONSCRIPT</item>
+<item>MSVSSCONS</item>
+<item>MSVSSCONSFLAGS</item>
+<item>MSVSSCONSCOM</item>
+<item>MSVSBUILDCOM</item>
+<item>MSVSREBUILDCOM</item>
+<item>MSVSCLEANCOM</item>
+<item>MSVSENCODING</item>
</sets>
<uses>
</uses>
@@ -26,9 +47,12 @@ MSVSENCODING
<builder name ="MSVSProject">
<summary>
+<para>
Builds a Microsoft Visual Studio project file,
and by default builds a solution file as well.
+</para>
+<para>
This builds a Visual Studio project file, based on the version of
Visual Studio that is configured (either the latest installed version,
or the version specified by
@@ -40,7 +64,9 @@ file.
For Visual Studio 7 (.NET) and later versions, it will generate a
<filename>.vcproj</filename>
file.
+</para>
+<para>
By default,
this also generates a solution file
for the specified project,
@@ -59,7 +85,9 @@ build the solution file(s)
by calling the
&b-MSVSSolution;
Builder (see below).
+</para>
+<para>
The &b-MSVSProject; builder
takes several lists of filenames
to be placed into the project file.
@@ -75,14 +103,20 @@ lists are added to the &cv-link-SOURCES; construction variable as strings,
NOT as SCons File Nodes. This is because they represent file
names to be added to the project file, not the source files used to
build the project file.
+</para>
+<para>
The above filename lists are all optional,
although at least one must be specified
for the resulting project file to be non-empty.
+</para>
+<para>
In addition to the above lists of values,
the following values may be specified:
+</para>
+<para>
<literal>target</literal>:
The name of the target
<filename>.dsp</filename>
@@ -95,7 +129,9 @@ but the
&cv-link-MSVSPROJECTSUFFIX;
construction variable
will be defined to the correct value (see example below).
+</para>
+<para>
<literal>variant</literal>:
The name of this particular variant.
For Visual Studio 7 projects,
@@ -115,7 +151,9 @@ Multiple calls to
with different variants are allowed;
all variants will be added to the project file with their appropriate
build targets and sources.
+</para>
+<para>
<literal>buildtarget</literal>:
An optional string, node, or list of strings or nodes
(one per build variant), to tell the Visual Studio debugger
@@ -125,7 +163,9 @@ The number of
entries must match the number of
<literal>variant</literal>
entries.
+</para>
+<para>
<literal>runfile</literal>:
The name of the file that Visual Studio 7 and later
will run and debug.
@@ -136,7 +176,9 @@ If this is not specified,
the default is the same as the specified
<literal>buildtarget</literal>
value.
+</para>
+<para>
Note that because &SCons; always executes its build commands
from the directory in which the &SConstruct; file is located,
if you generate a project file in a different directory
@@ -151,10 +193,13 @@ compiler option to the &cv-link-CCFLAGS; variable
so that the compiler will print
the full path name of any
files that cause compilation errors.
+</para>
+<para>
Example usage:
+</para>
-<example>
+<example_commands>
barsrcs = ['bar.cpp'],
barincs = ['bar.h'],
barlocalincs = ['StdAfx.h']
@@ -172,14 +217,17 @@ env.MSVSProject(target = 'Bar' + env['MSVSPROJECTSUFFIX'],
misc = barmisc,
buildtarget = dll,
variant = 'Release')
-</example>
+</example_commands>
</summary>
</builder>
<builder name ="MSVSSolution">
<summary>
+<para>
Builds a Microsoft Visual Studio solution file.
+</para>
+<para>
This builds a Visual Studio solution file,
based on the version of Visual Studio that is configured
(either the latest installed version,
@@ -193,22 +241,30 @@ For Visual Studio 7 (.NET), it will
generate a
<filename>.sln</filename>
file.
+</para>
+<para>
The following values must be specified:
+</para>
+<para>
<literal>target</literal>:
The name of the target .dsw or .sln file. The correct
suffix for the version of Visual Studio must be used, but the value
&cv-link-MSVSSOLUTIONSUFFIX;
will be defined to the correct value (see example below).
+</para>
+<para>
<literal>variant</literal>:
The name of this particular variant, or a list of variant
names (the latter is only supported for MSVS 7 solutions). These are
typically things like "Debug" or "Release", but really can be anything
you want. For MSVS 7 they may also specify target platform, like this
"Debug|Xbox". Default platform is Win32.
+</para>
+<para>
<literal>projects</literal>:
A list of project file names, or Project nodes returned by calls to the
&b-MSVSProject;
@@ -218,86 +274,120 @@ It should be noted that these file names are NOT added to the $SOURCES
environment variable in form of files, but rather as strings. This
is because they represent file names to be added to the solution file,
not the source files used to build the solution file.
+</para>
+<para>
Example Usage:
+</para>
-<example>
+<example_commands>
env.MSVSSolution(target = 'Bar' + env['MSVSSOLUTIONSUFFIX'],
projects = ['bar' + env['MSVSPROJECTSUFFIX']],
variant = 'Release')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="MSVS">
<summary>
+<para>
When the Microsoft Visual Studio tools are initialized, they set up
this dictionary with the following keys:
+</para>
+<para>
<envar>VERSION</envar>:
the version of MSVS being used (can be set via
&cv-link-MSVS_VERSION;)
+</para>
+<para>
<envar>VERSIONS</envar>:
the available versions of MSVS installed
+</para>
+<para>
<envar>VCINSTALLDIR</envar>:
installed directory of Visual C++
+</para>
+<para>
<envar>VSINSTALLDIR</envar>:
installed directory of Visual Studio
+</para>
+<para>
<envar>FRAMEWORKDIR</envar>:
installed directory of the .NET framework
+</para>
+<para>
<envar>FRAMEWORKVERSIONS</envar>:
list of installed versions of the .NET framework, sorted latest to oldest.
+</para>
+<para>
<envar>FRAMEWORKVERSION</envar>:
latest installed version of the .NET framework
+</para>
+<para>
<envar>FRAMEWORKSDKDIR</envar>:
installed location of the .NET SDK.
+</para>
+<para>
<envar>PLATFORMSDKDIR</envar>:
installed location of the Platform SDK.
+</para>
+<para>
<envar>PLATFORMSDK_MODULES</envar>:
dictionary of installed Platform SDK modules,
where the dictionary keys are keywords for the various modules, and
the values are 2-tuples where the first is the release date, and the
second is the version number.
+</para>
+<para>
If a value isn't set, it wasn't available in the registry.
+</para>
</summary>
</cvar>
<cvar name="MSVS_ARCH">
<summary>
+<para>
Sets the architecture for which the generated project(s) should build.
+</para>
+<para>
The default value is <literal>x86</literal>.
<literal>amd64</literal> is also supported
by &SCons; for some Visual Studio versions.
Trying to set &cv-MSVS_ARCH; to an architecture that's not
supported for a given Visual Studio version
will generate an error.
+</para>
</summary>
</cvar>
<cvar name="MSVS_PROJECT_GUID">
<summary>
+<para>
The string
placed in a generated Microsoft Visual Studio project file
as the value of the
<literal>ProjectGUID</literal>
attribute.
There is no default value. If not defined, a new GUID is generated.
+</para>
</summary>
</cvar>
<cvar name="MSVS_SCC_AUX_PATH">
<summary>
+<para>
The path name
placed in a generated Microsoft Visual Studio project file
as the value of the
@@ -307,11 +397,13 @@ if the
<envar>MSVS_SCC_PROVIDER</envar>
construction variable is also set.
There is no default value.
+</para>
</summary>
</cvar>
<cvar name="MSVS_SCC_CONNECTION_ROOT">
<summary>
+<para>
The root path of projects in your SCC workspace, i.e the path under which
all project and solution files will be generated. It is used as a
reference path from which the relative paths of the generated
@@ -337,11 +429,13 @@ if the
<envar>MSVS_SCC_PROVIDER</envar>
construction variable is also set.
The default value is the current working directory.
+</para>
</summary>
</cvar>
<cvar name="MSVS_SCC_PROJECT_NAME">
<summary>
+<para>
The project name
placed in a generated Microsoft Visual Studio project file
as the value of the
@@ -356,11 +450,13 @@ attribute of the
<literal>GlobalSection(SourceCodeControl)</literal>
section of the Microsoft Visual Studio solution file.
There is no default value.
+</para>
</summary>
</cvar>
<cvar name="MSVS_SCC_PROVIDER">
<summary>
+<para>
The string
placed in a generated Microsoft Visual Studio project file
as the value of the
@@ -372,13 +468,17 @@ attribute of the
<literal>GlobalSection(SourceCodeControl)</literal>
section of the Microsoft Visual Studio solution file.
There is no default value.
+</para>
</summary>
</cvar>
<cvar name="MSVS_VERSION">
<summary>
+<para>
Sets the preferred version of Microsoft Visual Studio to use.
+</para>
+<para>
If &cv-MSVS_VERSION; is not set,
&SCons; will (by default) select the latest version
of Visual Studio installed on your system.
@@ -391,48 +491,60 @@ variable in the Environment initialization, setting it to the
appropriate version ('6.0' or '7.0', for example).
If the specified version isn't installed,
tool initialization will fail.
+</para>
+<para>
This is obsolete: use &cv-MSVC_VERSION; instead. If &cv-MSVS_VERSION; is set and
&cv-MSVC_VERSION; is not, &cv-MSVC_VERSION; will be set automatically to &cv-MSVS_VERSION;.
If both are set to different values, scons will raise an error.
+</para>
</summary>
</cvar>
<cvar name="MSVSBUILDCOM">
<summary>
+<para>
The build command line placed in
a generated Microsoft Visual Studio project file.
The default is to have Visual Studio invoke SCons with any specified
build targets.
+</para>
</summary>
</cvar>
<cvar name="MSVSCLEANCOM">
<summary>
+<para>
The clean command line placed in
a generated Microsoft Visual Studio project file.
The default is to have Visual Studio invoke SCons with the -c option
to remove any specified targets.
+</para>
</summary>
</cvar>
<cvar name="MSVSENCODING">
<summary>
+<para>
The encoding string placed in
a generated Microsoft Visual Studio project file.
The default is encoding
<literal>Windows-1252</literal>.
+</para>
</summary>
</cvar>
<cvar name="MSVSPROJECTCOM">
<summary>
+<para>
The action used to generate Microsoft Visual Studio project files.
+</para>
</summary>
</cvar>
<cvar name="MSVSPROJECTSUFFIX">
<summary>
+<para>
The suffix used for Microsoft Visual Studio project (DSP) files.
The default value is
<filename>.vcproj</filename>
@@ -441,42 +553,52 @@ or later version,
and
<filename>.dsp</filename>
when using earlier versions of Visual Studio.
+</para>
</summary>
</cvar>
<cvar name="MSVSREBUILDCOM">
<summary>
+<para>
The rebuild command line placed in
a generated Microsoft Visual Studio project file.
The default is to have Visual Studio invoke SCons with any specified
rebuild targets.
+</para>
</summary>
</cvar>
<cvar name="MSVSSCONS">
<summary>
+<para>
The SCons used in generated Microsoft Visual Studio project files.
The default is the version of SCons being
used to generate the project file.
+</para>
</summary>
</cvar>
<cvar name="MSVSSCONSFLAGS">
<summary>
+<para>
The SCons flags used in generated Microsoft Visual Studio
project files.
+</para>
</summary>
</cvar>
<cvar name="MSVSSCONSCOM">
<summary>
+<para>
The default SCons command used in generated Microsoft Visual Studio
project files.
+</para>
</summary>
</cvar>
<cvar name="MSVSSCONSCRIPT">
<summary>
+<para>
The sconscript file
(that is,
&SConstruct;
@@ -492,17 +614,21 @@ The default is the same sconscript file
that contains the call to
&b-MSVSProject;
to build the project file.
+</para>
</summary>
</cvar>
<cvar name="MSVSSOLUTIONCOM">
<summary>
+<para>
The action used to generate Microsoft Visual Studio solution files.
+</para>
</summary>
</cvar>
<cvar name="MSVSSOLUTIONSUFFIX">
<summary>
+<para>
The suffix used for Microsoft Visual Studio solution (DSW) files.
The default value is
<filename>.sln</filename>
@@ -510,11 +636,13 @@ when using Visual Studio version 7.x (.NET),
and
<filename>.dsw</filename>
when using earlier versions of Visual Studio.
+</para>
</summary>
</cvar>
<cvar name="SCONS_HOME">
<summary>
+<para>
The (optional) path to the SCons library directory,
initialized from the external environment.
If set, this is used to construct a shorter and more
@@ -522,5 +650,8 @@ efficient search path in the
&cv-link-MSVSSCONS;
command line executed
from Microsoft Visual Studio project files.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/msvsTests.py b/src/engine/SCons/Tool/msvsTests.py
index 88ac7f2..b5068fc 100644
--- a/src/engine/SCons/Tool/msvsTests.py
+++ b/src/engine/SCons/Tool/msvsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/msvsTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/msvsTests.py 2014/03/02 14:18:15 garyo"
import os
import sys
diff --git a/src/engine/SCons/Tool/mwcc.py b/src/engine/SCons/Tool/mwcc.py
index 4843301..1f12b48 100644
--- a/src/engine/SCons/Tool/mwcc.py
+++ b/src/engine/SCons/Tool/mwcc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mwcc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/mwcc.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/mwcc.xml b/src/engine/SCons/Tool/mwcc.xml
index 3dbc3ad..88f68bc 100644
--- a/src/engine/SCons/Tool/mwcc.xml
+++ b/src/engine/SCons/Tool/mwcc.xml
@@ -1,53 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="mwcc">
<summary>
+<para>
Sets construction variables for the Metrowerks CodeWarrior compiler.
+</para>
</summary>
<sets>
-MWCW_VERSIONS
-MWCW_VERSION
-<!--CCCOMFLAGS-->
-CC
-CCCOM
-CXX
-CXXCOM
-SHCC
-SHCCFLAGS
-SHCFLAGS
-SHCCCOM
-SHCXX
-SHCXXFLAGS
-SHCXXCOM
-CFILESUFFIX
-CXXFILESUFFIX
-CPPDEFPREFIX
-CPPDEFSUFFIX
-INCPREFIX
-INCSUFFIX
+<item>MWCW_VERSIONS</item>
+<item>MWCW_VERSION</item>
+<item><!--CCCOMFLAGS--></item>
+<item>CC</item>
+<item>CCCOM</item>
+<item>CXX</item>
+<item>CXXCOM</item>
+<item>SHCC</item>
+<item>SHCCFLAGS</item>
+<item>SHCFLAGS</item>
+<item>SHCCCOM</item>
+<item>SHCXX</item>
+<item>SHCXXFLAGS</item>
+<item>SHCXXCOM</item>
+<item>CFILESUFFIX</item>
+<item>CXXFILESUFFIX</item>
+<item>CPPDEFPREFIX</item>
+<item>CPPDEFSUFFIX</item>
+<item>INCPREFIX</item>
+<item>INCSUFFIX</item>
</sets>
<uses>
-CCCOMSTR
-CXXCOMSTR
-SHCCCOMSTR
-SHCXXCOMSTR
+<item>CCCOMSTR</item>
+<item>CXXCOMSTR</item>
+<item>SHCCCOMSTR</item>
+<item>SHCXXCOMSTR</item>
</uses>
</tool>
<cvar name="MWCW_VERSION">
<summary>
+<para>
The version number of the MetroWerks CodeWarrior C compiler
to be used.
+</para>
</summary>
</cvar>
<cvar name="MWCW_VERSIONS">
<summary>
+<para>
A list of installed versions of the MetroWerks CodeWarrior C compiler
on this system.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/mwld.py b/src/engine/SCons/Tool/mwld.py
index ff875a5..649e220 100644
--- a/src/engine/SCons/Tool/mwld.py
+++ b/src/engine/SCons/Tool/mwld.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mwld.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/mwld.py 2014/03/02 14:18:15 garyo"
import SCons.Tool
diff --git a/src/engine/SCons/Tool/mwld.xml b/src/engine/SCons/Tool/mwld.xml
index 394c917..8c32335 100644
--- a/src/engine/SCons/Tool/mwld.xml
+++ b/src/engine/SCons/Tool/mwld.xml
@@ -1,27 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="mwld">
<summary>
+<para>
Sets construction variables for the Metrowerks CodeWarrior linker.
+</para>
</summary>
<sets>
-AR
-ARCOM
-LIBDIRPREFIX
-LIBDIRSUFFIX
-LIBLINKPREFIX
-LIBLINKSUFFIX
-LINK
-LINKCOM
-SHLINK
-SHLINKFLAGS
-SHLINKCOM
-<!--SHLIBEMITTER-->
+<item>AR</item>
+<item>ARCOM</item>
+<item>LIBDIRPREFIX</item>
+<item>LIBDIRSUFFIX</item>
+<item>LIBLINKPREFIX</item>
+<item>LIBLINKSUFFIX</item>
+<item>LINK</item>
+<item>LINKCOM</item>
+<item>SHLINK</item>
+<item>SHLINKFLAGS</item>
+<item>SHLINKCOM</item>
+<item><!--SHLIBEMITTER--></item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/nasm.py b/src/engine/SCons/Tool/nasm.py
index d754a2a..805eeb0 100644
--- a/src/engine/SCons/Tool/nasm.py
+++ b/src/engine/SCons/Tool/nasm.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/nasm.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/nasm.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/nasm.xml b/src/engine/SCons/Tool/nasm.xml
index 1e7ce89..c02ebd3 100644
--- a/src/engine/SCons/Tool/nasm.xml
+++ b/src/engine/SCons/Tool/nasm.xml
@@ -1,23 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="nasm">
<summary>
+<para>
Sets construction variables for the
<application>nasm</application> Netwide Assembler.
+</para>
</summary>
<sets>
-AS
-ASFLAGS
-ASPPFLAGS
-ASCOM
-ASPPCOM
+<item>AS</item>
+<item>ASFLAGS</item>
+<item>ASPPFLAGS</item>
+<item>ASCOM</item>
+<item>ASPPCOM</item>
</sets>
<uses>
-ASCOMSTR
-ASPPCOMSTR
+<item>ASCOMSTR</item>
+<item>ASPPCOMSTR</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/packaging.xml b/src/engine/SCons/Tool/packaging.xml
index 9527879..2733281 100644
--- a/src/engine/SCons/Tool/packaging.xml
+++ b/src/engine/SCons/Tool/packaging.xml
@@ -1,73 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="packaging">
<summary>
+<para>
A framework for building binary and source packages.
+</para>
</summary>
</tool>
<builder name="Package">
<summary>
+<para>
Builds a Binary Package of the given source files.
+</para>
-<example>
+<example_commands>
env.Package(source = FindInstalledFiles())
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="JAR">
<summary>
+<para>
The Java archive tool.
+</para>
</summary>
</cvar>
<cvar name="JARCHDIR">
<summary>
+<para>
The directory to which the Java archive tool should change
(using the
<option>-C</option>
option).
+</para>
</summary>
</cvar>
<cvar name="JARCOM">
<summary>
+<para>
The command line used to call the Java archive tool.
+</para>
</summary>
</cvar>
<cvar name="JARCOMSTR">
<summary>
+<para>
The string displayed when the Java archive tool
is called
If this is not set, then &cv-JARCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="JARFLAGS">
<summary>
+<para>
General options passed to the Java archive tool.
By default this is set to
<option>cf</option>
to create the necessary
<command>jar</command>
file.
+</para>
</summary>
</cvar>
<cvar name="JARSUFFIX">
<summary>
+<para>
The suffix for Java archives:
<filename>.jar</filename>
by default.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/packaging/__init__.py b/src/engine/SCons/Tool/packaging/__init__.py
index b0a7549..a356f46 100644
--- a/src/engine/SCons/Tool/packaging/__init__.py
+++ b/src/engine/SCons/Tool/packaging/__init__.py
@@ -4,7 +4,7 @@ SCons Packaging Tool.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@ SCons Packaging Tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 2014/03/02 14:18:15 garyo"
import SCons.Environment
from SCons.Variables import *
diff --git a/src/engine/SCons/Tool/packaging/__init__.xml b/src/engine/SCons/Tool/packaging/__init__.xml
index 44b48a0..741d296 100644
--- a/src/engine/SCons/Tool/packaging/__init__.xml
+++ b/src/engine/SCons/Tool/packaging/__init__.xml
@@ -1,12 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="Packaging">
<summary>
+<para>
Sets construction variables for the &b-Package; Builder.
+</para>
</summary>
<sets>
</sets>
@@ -16,6 +37,7 @@ Sets construction variables for the &b-Package; Builder.
<builder name="Package">
<summary>
+<para>
Builds software distribution packages.
Packages consist of files to install and packaging information.
The former may be specified with the &source; parameter and may be left out,
@@ -23,18 +45,24 @@ in which case the &FindInstalledFiles; function will collect
all files that have an &b-Install; or &b-InstallAs; Builder attached.
If the &target; is not specified
it will be deduced from additional information given to this Builder.
+</para>
+<para>
The packaging information is specified
with the help of construction variables documented below.
This information is called a tag to stress that
some of them can also be attached to files with the &Tag; function.
The mandatory ones will complain if they were not specified.
They vary depending on chosen target packager.
+</para>
+<para>
The target packager may be selected with the "PACKAGETYPE" command line
option or with the &cv-PACKAGETYPE; construction variable. Currently
the following packagers available:
+</para>
+<para>
* msi - Microsoft Installer
* rpm - Redhat Package Manger
* ipkg - Itsy Package Management System
@@ -44,10 +72,13 @@ the following packagers available:
* src_tarbz2 - compressed tar source
* src_targz - compressed tar source
* src_zip - zip file source
+</para>
+<para>
An updated list is always available under the "package_type" option when
running "scons --help" on a project that has packaging activated.
-<example>
+</para>
+<example_commands>
env = Environment(tools=['default', 'packaging'])
env.Install('/bin/', 'my_program')
env.Package( NAME = 'foo',
@@ -60,12 +91,13 @@ env.Package( NAME = 'foo',
X_RPM_GROUP = 'Application/fu',
SOURCE_URL = 'http://foo.org/foo-1.2.3.tar.gz'
)
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="ARCHITECTURE">
<summary>
+<para>
Specifies the system architecture for which
the package is being built.
The default is the system architecture
@@ -75,11 +107,13 @@ This is used to fill in the
field in an Ipkg
<filename>control</filename> file,
and as part of the name of a generated RPM file.
+</para>
</summary>
</cvar>
<cvar name="CHANGE_SPECFILE">
<summary>
+<para>
A hook for modifying the file that controls the packaging build
(the <filename>.spec</filename> for RPM,
the <filename>control</filename> for Ipkg,
@@ -87,65 +121,81 @@ the <filename>.wxs</filename> for MSI).
If set, the function will be called
after the SCons template for the file has been written.
XXX
+</para>
</summary>
</cvar>
<cvar name="CHANGELOG">
<summary>
+<para>
The name of a file containing the change log text
to be included in the package.
This is included as the
<literal>%changelog</literal>
section of the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="DESCRIPTION">
<summary>
+<para>
A long description of the project being packaged.
This is included in the relevant section
of the file that controls the packaging build.
+</para>
</summary>
</cvar>
<cvar name="DESCRIPTION_lang">
<summary>
+<para>
A language-specific long description for
the specified <varname>lang</varname>.
This is used to populate a
<literal>%description -l</literal>
section of an RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="LICENSE">
<summary>
+<para>
The abbreviated name of the license under which
this project is released (gpl, lpgl, bsd etc.).
See http://www.opensource.org/licenses/alphabetical
for a list of license names.
+</para>
</summary>
</cvar>
<cvar name="NAME">
<summary>
+<para>
Specfies the name of the project to package.
+</para>
</summary>
</cvar>
<cvar name="PACKAGEROOT">
<summary>
+<para>
Specifies the directory where all files in resulting archive will be
placed if applicable. The default value is "$NAME-$VERSION".
+</para>
</summary>
</cvar>
<cvar name="PACKAGETYPE">
<summary>
+<para>
Selects the package type to build. Currently these are available:
+</para>
+<para>
* msi - Microsoft Installer
* rpm - Redhat Package Manger
* ipkg - Itsy Package Management System
@@ -155,33 +205,41 @@ Selects the package type to build. Currently these are available:
* src_tarbz2 - compressed tar source
* src_targz - compressed tar source
* src_zip - zip file source
+</para>
+<para>
This may be overridden with the "package_type" command line option.
+</para>
</summary>
</cvar>
<cvar name="PACKAGEVERSION">
<summary>
+<para>
The version of the package (not the underlying project).
This is currently only used by the rpm packager
and should reflect changes in the packaging,
not the underlying project code itself.
+</para>
</summary>
</cvar>
<cvar name="SOURCE_URL">
<summary>
+<para>
The URL
(web address)
of the location from which the project was retrieved.
This is used to fill in the
<literal>Source:</literal>
field in the controlling information for Ipkg and RPM packages.
+</para>
</summary>
</cvar>
<cvar name="SUMMARY">
<summary>
+<para>
A short summary of what the project is about.
This is used to fill in the
<literal>Summary:</literal>
@@ -189,11 +247,13 @@ field in the controlling information for Ipkg and RPM packages,
and as the
<literal>Description:</literal>
field in MSI packages.
+</para>
</summary>
</cvar>
<cvar name="VENDOR">
<summary>
+<para>
The person or organization who supply the packaged software.
This is used to fill in the
<literal>Vendor:</literal>
@@ -201,55 +261,68 @@ field in the controlling information for RPM packages,
and the
<literal>Manufacturer:</literal>
field in the controlling information for MSI packages.
+</para>
</summary>
</cvar>
<cvar name="VERSION">
<summary>
+<para>
The version of the project, specified as a string.
+</para>
</summary>
</cvar>
<cvar name="X_IPK_DEPENDS">
<summary>
+<para>
This is used to fill in the
<literal>Depends:</literal>
field in the controlling information for Ipkg packages.
+</para>
</summary>
</cvar>
<cvar name="X_IPK_DESCRIPTION">
<summary>
+<para>
This is used to fill in the
<literal>Description:</literal>
field in the controlling information for Ipkg packages.
The default value is
<literal>$SUMMARY\n$DESCRIPTION</literal>
+</para>
</summary>
</cvar>
<cvar name="X_IPK_MAINTAINER">
<summary>
+<para>
This is used to fill in the
<literal>Maintainer:</literal>
field in the controlling information for Ipkg packages.
+</para>
</summary>
</cvar>
<cvar name="X_IPK_PRIORITY">
<summary>
+<para>
This is used to fill in the
<literal>Priority:</literal>
field in the controlling information for Ipkg packages.
+</para>
</summary>
</cvar>
<cvar name="X_IPK_SECTION">
<summary>
+<para>
This is used to fill in the
<literal>Section:</literal>
field in the controlling information for Ipkg packages.
+</para>
</summary>
</cvar>
@@ -257,127 +330,158 @@ field in the controlling information for Ipkg packages.
<cvar name="X_MSI_LANGUAGE">
<summary>
+<para>
This is used to fill in the
<literal>Language:</literal>
attribute in the controlling information for MSI packages.
+</para>
</summary>
</cvar>
<cvar name="X_MSI_LICENSE_TEXT">
<summary>
+<para>
The text of the software license in RTF format.
Carriage return characters will be
replaced with the RTF equivalent \\par.
+</para>
</summary>
</cvar>
<cvar name="X_MSI_UPGRADE_CODE">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_RPM_AUTOREQPROV">
<summary>
+<para>
This is used to fill in the
<literal>AutoReqProv:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_BUILD">
<summary>
+<para>
internal, but overridable
+</para>
</summary>
</cvar>
<cvar name="X_RPM_BUILDREQUIRES">
<summary>
+<para>
This is used to fill in the
<literal>BuildRequires:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_BUILDROOT">
<summary>
+<para>
internal, but overridable
+</para>
</summary>
</cvar>
<cvar name="X_RPM_CLEAN">
<summary>
+<para>
internal, but overridable
+</para>
</summary>
</cvar>
<cvar name="X_RPM_CONFLICTS">
<summary>
+<para>
This is used to fill in the
<literal>Conflicts:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_DEFATTR">
<summary>
+<para>
This value is used as the default attributes
for the files in the RPM package.
The default value is
<literal>(-,root,root)</literal>.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_DISTRIBUTION">
<summary>
+<para>
This is used to fill in the
<literal>Distribution:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_EPOCH">
<summary>
+<para>
This is used to fill in the
<literal>Epoch:</literal>
field in the controlling information for RPM packages.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_EXCLUDEARCH">
<summary>
+<para>
This is used to fill in the
<literal>ExcludeArch:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_EXLUSIVEARCH">
<summary>
+<para>
This is used to fill in the
<literal>ExclusiveArch:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_GROUP">
<summary>
+<para>
This is used to fill in the
<literal>Group:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_GROUP_lang">
<summary>
+<para>
This is used to fill in the
<literal>Group(lang):</literal>
field in the RPM
@@ -387,117 +491,144 @@ Note that
is not literal
and should be replaced by
the appropriate language code.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_ICON">
<summary>
+<para>
This is used to fill in the
<literal>Icon:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_INSTALL">
<summary>
+<para>
internal, but overridable
+</para>
</summary>
</cvar>
<cvar name="X_RPM_PACKAGER">
<summary>
+<para>
This is used to fill in the
<literal>Packager:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_PROVIDES">
<summary>
+<para>
This is used to fill in the
<literal>Provides:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_POSTINSTALL">
<summary>
+<para>
This is used to fill in the
<literal>%post:</literal>
section in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_PREINSTALL">
<summary>
+<para>
This is used to fill in the
<literal>%pre:</literal>
section in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_PREFIX">
<summary>
+<para>
This is used to fill in the
<literal>Prefix:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_PREP">
<summary>
+<para>
internal, but overridable
+</para>
</summary>
</cvar>
<cvar name="X_RPM_POSTUNINSTALL">
<summary>
+<para>
This is used to fill in the
<literal>%postun:</literal>
section in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_PREUNINSTALL">
<summary>
+<para>
This is used to fill in the
<literal>%preun:</literal>
section in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_REQUIRES">
<summary>
+<para>
This is used to fill in the
<literal>Requires:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_SERIAL">
<summary>
+<para>
This is used to fill in the
<literal>Serial:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
<cvar name="X_RPM_URL">
<summary>
+<para>
This is used to fill in the
<literal>Url:</literal>
field in the RPM
<filename>.spec</filename> file.
+</para>
</summary>
</cvar>
@@ -511,115 +642,153 @@ NOT SURE YET WHAT TO DO ABOUT THESE.
<cvar name="CONFIG">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="CONFIG_NOREPLACE">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="DOC">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="INSTALL_LOCATION">
<summary>
+<para>
internal, but overridable, TODO
+</para>
</summary>
</cvar>
<cvar name="LANG_lang">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="UNIX_ATTR">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_IPK_POSTINST">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_IPK_POSTRM">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_IPK_PREINST">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_IPK_PRERM">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_MSI_FEATURE">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_MSI_FILEID">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_MSI_LONGNAME">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_MSI_SHORTNAME">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_MSI_VITAL">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_RPM_DIR">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_RPM_DOCDIR">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_RPM_GHOST">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
<cvar name="X_RPM_VERIFY">
<summary>
+<para>
TODO
+</para>
</summary>
</cvar>
@@ -631,22 +800,26 @@ TODO
(node, tags)
</arguments>
<summary>
+<para>
Annotates file or directory Nodes with
information about how the
&b-link-Package;
Builder should package those files or directories.
All tags are optional.
+</para>
+<para>
Examples:
+</para>
-<example>
+<example_commands>
# makes sure the built library will be installed with 0644 file
# access mode
Tag( Library( 'lib.c' ), UNIX_ATTR="0644" )
# marks file2.txt to be a documentation file
Tag( 'file2.txt', DOC )
-</example>
+</example_commands>
</summary>
</scons_function>
@@ -654,13 +827,19 @@ Tag( 'file2.txt', DOC )
<!--
<function name="FindSourceFiles">
<summary>
+<para>
A convenience function which returns all leaves of the build tree.
+</para>
</summary>
</function>
<builder name="FindInstalledFiles">
<summary>
+<para>
Returns all files "built" by the &b-Install; or &b-InstallAs; builders.
+</para>
</summary>
</function>
-->
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/packaging/ipk.py b/src/engine/SCons/Tool/packaging/ipk.py
index 77c6420..c7c2ecb 100644
--- a/src/engine/SCons/Tool/packaging/ipk.py
+++ b/src/engine/SCons/Tool/packaging/ipk.py
@@ -2,7 +2,7 @@
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/ipk.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/ipk.py 2014/03/02 14:18:15 garyo"
import SCons.Builder
import SCons.Node.FS
diff --git a/src/engine/SCons/Tool/packaging/msi.py b/src/engine/SCons/Tool/packaging/msi.py
index 26eb630..5c81c2f 100644
--- a/src/engine/SCons/Tool/packaging/msi.py
+++ b/src/engine/SCons/Tool/packaging/msi.py
@@ -4,7 +4,7 @@ The msi packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@ The msi packager.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/packaging/msi.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/msi.py 2014/03/02 14:18:15 garyo"
import os
import SCons
diff --git a/src/engine/SCons/Tool/packaging/rpm.py b/src/engine/SCons/Tool/packaging/rpm.py
index d60166f..049bf45 100644
--- a/src/engine/SCons/Tool/packaging/rpm.py
+++ b/src/engine/SCons/Tool/packaging/rpm.py
@@ -4,7 +4,7 @@ The rpm packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@ The rpm packager.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/packaging/rpm.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/rpm.py 2014/03/02 14:18:15 garyo"
import os
diff --git a/src/engine/SCons/Tool/packaging/src_tarbz2.py b/src/engine/SCons/Tool/packaging/src_tarbz2.py
index 1da2bec..6a98b38 100644
--- a/src/engine/SCons/Tool/packaging/src_tarbz2.py
+++ b/src/engine/SCons/Tool/packaging/src_tarbz2.py
@@ -4,7 +4,7 @@ The tarbz2 SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The tarbz2 SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py 2014/03/02 14:18:15 garyo"
from SCons.Tool.packaging import putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/src_targz.py b/src/engine/SCons/Tool/packaging/src_targz.py
index bde3316..de7d17b 100644
--- a/src/engine/SCons/Tool/packaging/src_targz.py
+++ b/src/engine/SCons/Tool/packaging/src_targz.py
@@ -4,7 +4,7 @@ The targz SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The targz SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py 2014/03/02 14:18:15 garyo"
from SCons.Tool.packaging import putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/src_zip.py b/src/engine/SCons/Tool/packaging/src_zip.py
index e5a752e..86160de 100644
--- a/src/engine/SCons/Tool/packaging/src_zip.py
+++ b/src/engine/SCons/Tool/packaging/src_zip.py
@@ -4,7 +4,7 @@ The zip SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The zip SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py 2014/03/02 14:18:15 garyo"
from SCons.Tool.packaging import putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/tarbz2.py b/src/engine/SCons/Tool/packaging/tarbz2.py
index 0c8e4e7..7df6932 100644
--- a/src/engine/SCons/Tool/packaging/tarbz2.py
+++ b/src/engine/SCons/Tool/packaging/tarbz2.py
@@ -4,7 +4,7 @@ The tarbz2 SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The tarbz2 SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py 2014/03/02 14:18:15 garyo"
from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/targz.py b/src/engine/SCons/Tool/packaging/targz.py
index 32b74cf..6a9024c 100644
--- a/src/engine/SCons/Tool/packaging/targz.py
+++ b/src/engine/SCons/Tool/packaging/targz.py
@@ -4,7 +4,7 @@ The targz SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The targz SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/targz.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/targz.py 2014/03/02 14:18:15 garyo"
from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/zip.py b/src/engine/SCons/Tool/packaging/zip.py
index 1f34581..862589c 100644
--- a/src/engine/SCons/Tool/packaging/zip.py
+++ b/src/engine/SCons/Tool/packaging/zip.py
@@ -4,7 +4,7 @@ The zip SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The zip SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/zip.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/zip.py 2014/03/02 14:18:15 garyo"
from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
diff --git a/src/engine/SCons/Tool/pdf.py b/src/engine/SCons/Tool/pdf.py
index 1b68f10..b93891d 100644
--- a/src/engine/SCons/Tool/pdf.py
+++ b/src/engine/SCons/Tool/pdf.py
@@ -6,7 +6,7 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/pdf.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/pdf.py 2014/03/02 14:18:15 garyo"
import SCons.Builder
import SCons.Tool
diff --git a/src/engine/SCons/Tool/pdf.xml b/src/engine/SCons/Tool/pdf.xml
index e6fa4d7..9e849af 100644
--- a/src/engine/SCons/Tool/pdf.xml
+++ b/src/engine/SCons/Tool/pdf.xml
@@ -1,21 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="pdf">
<summary>
+<para>
Sets construction variables for the Portable Document Format builder.
+</para>
</summary>
<sets>
-PDFPREFIX
-PDFSUFFIX
+<item>PDFPREFIX</item>
+<item>PDFSUFFIX</item>
</sets>
</tool>
<builder name="PDF">
<summary>
+<para>
Builds a <filename>.pdf</filename> file
from a <filename>.dvi</filename> input file
(or, by extension, a <filename>.tex</filename>,
@@ -26,24 +48,31 @@ The suffix specified by the &cv-link-PDFSUFFIX; construction variable
(<filename>.pdf</filename> by default)
is added automatically to the target
if it is not already present. Example:
+</para>
-<example>
+<example_commands>
# builds from aaa.tex
env.PDF(target = 'aaa.pdf', source = 'aaa.tex')
# builds bbb.pdf from bbb.dvi
env.PDF(target = 'bbb', source = 'bbb.dvi')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="PDFPREFIX">
<summary>
+<para>
The prefix used for PDF file names.
+</para>
</summary>
</cvar>
<cvar name="PDFSUFFIX">
<summary>
+<para>
The suffix used for PDF file names.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/pdflatex.py b/src/engine/SCons/Tool/pdflatex.py
index 80756d1..a5ec458 100644
--- a/src/engine/SCons/Tool/pdflatex.py
+++ b/src/engine/SCons/Tool/pdflatex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/pdflatex.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/pdflatex.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Util
diff --git a/src/engine/SCons/Tool/pdflatex.xml b/src/engine/SCons/Tool/pdflatex.xml
index 548d81f..a4b7825 100644
--- a/src/engine/SCons/Tool/pdflatex.xml
+++ b/src/engine/SCons/Tool/pdflatex.xml
@@ -1,49 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="pdflatex">
<summary>
+<para>
Sets construction variables for the &pdflatex; utility.
+</para>
</summary>
<sets>
-PDFLATEX
-PDFLATEXFLAGS
-PDFLATEXCOM
-LATEXRETRIES
+<item>PDFLATEX</item>
+<item>PDFLATEXFLAGS</item>
+<item>PDFLATEXCOM</item>
+<item>LATEXRETRIES</item>
</sets>
<uses>
-PDFLATEXCOMSTR
+<item>PDFLATEXCOMSTR</item>
</uses>
</tool>
<cvar name="PDFLATEX">
<summary>
+<para>
The &pdflatex; utility.
+</para>
</summary>
</cvar>
<cvar name="PDFLATEXCOM">
<summary>
+<para>
The command line used to call the &pdflatex; utility.
+</para>
</summary>
</cvar>
<cvar name="PDFLATEXCOMSTR">
<summary>
+<para>
The string displayed when calling the &pdflatex; utility.
If this is not set, then &cv-link-PDFLATEXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(PDFLATEX;COMSTR = "Building $TARGET from LaTeX input $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="PDFLATEXFLAGS">
<summary>
+<para>
General options passed to the &pdflatex; utility.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/pdftex.py b/src/engine/SCons/Tool/pdftex.py
index 34ca325..aa002ad 100644
--- a/src/engine/SCons/Tool/pdftex.py
+++ b/src/engine/SCons/Tool/pdftex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/pdftex.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/pdftex.py 2014/03/02 14:18:15 garyo"
import os
import SCons.Action
diff --git a/src/engine/SCons/Tool/pdftex.xml b/src/engine/SCons/Tool/pdftex.xml
index d2a3d1a..b6443d6 100644
--- a/src/engine/SCons/Tool/pdftex.xml
+++ b/src/engine/SCons/Tool/pdftex.xml
@@ -1,53 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="pdftex">
<summary>
+<para>
Sets construction variables for the &pdftex; utility.
+</para>
</summary>
<sets>
-PDFTEX
-PDFTEXFLAGS
-PDFTEXCOM
-PDFLATEX
-PDFLATEXFLAGS
-PDFLATEXCOM
-LATEXRETRIES
+<item>PDFTEX</item>
+<item>PDFTEXFLAGS</item>
+<item>PDFTEXCOM</item>
+<item>PDFLATEX</item>
+<item>PDFLATEXFLAGS</item>
+<item>PDFLATEXCOM</item>
+<item>LATEXRETRIES</item>
</sets>
<uses>
-PDFTEXCOMSTR
-PDFLATEXCOMSTR
+<item>PDFTEXCOMSTR</item>
+<item>PDFLATEXCOMSTR</item>
</uses>
</tool>
<cvar name="PDFTEX">
<summary>
+<para>
The &pdftex; utility.
+</para>
</summary>
</cvar>
<cvar name="PDFTEXCOM">
<summary>
+<para>
The command line used to call the &pdftex; utility.
+</para>
</summary>
</cvar>
<cvar name="PDFTEXCOMSTR">
<summary>
+<para>
The string displayed when calling the &pdftex; utility.
If this is not set, then &cv-link-PDFTEXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(PDFTEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="PDFTEXFLAGS">
<summary>
+<para>
General options passed to the &pdftex; utility.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/qt.py b/src/engine/SCons/Tool/qt.py
index 96e14b1..22c7770 100644
--- a/src/engine/SCons/Tool/qt.py
+++ b/src/engine/SCons/Tool/qt.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/qt.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/qt.py 2014/03/02 14:18:15 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/qt.xml b/src/engine/SCons/Tool/qt.xml
index 313a87e..4c516da 100644
--- a/src/engine/SCons/Tool/qt.xml
+++ b/src/engine/SCons/Tool/qt.xml
@@ -1,38 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="qt">
<summary>
+<para>
Sets construction variables for building Qt applications.
+</para>
</summary>
<sets>
-QTDIR
-QT_BINPATH
-QT_CPPPATH
-QT_LIBPATH
-QT_MOC
-QT_UIC
-QT_LIB
-QT_AUTOSCAN
-QT_UICIMPLFLAGS
-QT_UICDECLFLAGS
-QT_MOCFROMHFLAGS
-QT_MOCFROMCXXFLAGS
-QT_UICDECLPREFIX
-QT_UICDECLSUFFIX
-QT_UICIMPLPREFIX
-QT_UICIMPLSUFFIX
-QT_MOCHPREFIX
-QT_MOCHSUFFIX
-QT_MOCCXXPREFIX
-QT_MOCCXXSUFFIX
-QT_UISUFFIX
-QT_UICCOM
-QT_MOCFROMHCOM
-QT_MOCFROMCXXCOM
+<item>QTDIR</item>
+<item>QT_BINPATH</item>
+<item>QT_CPPPATH</item>
+<item>QT_LIBPATH</item>
+<item>QT_MOC</item>
+<item>QT_UIC</item>
+<item>QT_LIB</item>
+<item>QT_AUTOSCAN</item>
+<item>QT_UICIMPLFLAGS</item>
+<item>QT_UICDECLFLAGS</item>
+<item>QT_MOCFROMHFLAGS</item>
+<item>QT_MOCFROMCXXFLAGS</item>
+<item>QT_UICDECLPREFIX</item>
+<item>QT_UICDECLSUFFIX</item>
+<item>QT_UICIMPLPREFIX</item>
+<item>QT_UICIMPLSUFFIX</item>
+<item>QT_MOCHPREFIX</item>
+<item>QT_MOCHSUFFIX</item>
+<item>QT_MOCCXXPREFIX</item>
+<item>QT_MOCCXXSUFFIX</item>
+<item>QT_UISUFFIX</item>
+<item>QT_UICCOM</item>
+<item>QT_MOCFROMHCOM</item>
+<item>QT_MOCFROMCXXCOM</item>
</sets>
<uses>
</uses>
@@ -40,20 +61,23 @@ QT_MOCFROMCXXCOM
<builder name="Moc">
<summary>
+<para>
Builds an output file from a moc input file. Moc input files are either
header files or cxx files. This builder is only available after using the
tool 'qt'. See the &cv-link-QTDIR; variable for more information.
Example:
+</para>
-<example>
+<example_commands>
env.Moc('foo.h') # generates moc_foo.cc
env.Moc('foo.cpp') # generates foo.moc
-</example>
+</example_commands>
</summary>
</builder>
<builder name="Uic">
<summary>
+<para>
Builds a header file, an implementation file and a moc file from an ui file.
and returns the corresponding nodes in the above order.
This builder is only available after using the tool 'qt'. Note: you can
@@ -65,17 +89,19 @@ naming conventions (be careful: prefixes are always prepended to names of
built files; if you don't want prefixes, you may set them to ``).
See the &cv-link-QTDIR; variable for more information.
Example:
+</para>
-<example>
+<example_commands>
env.Uic('foo.ui') # -> ['foo.h', 'uic_foo.cc', 'moc_foo.cc']
env.Uic(target = Split('include/foo.h gen/uicfoo.cc gen/mocfoo.cc'),
source = 'foo.ui') # -> ['include/foo.h', 'gen/uicfoo.cc', 'gen/mocfoo.cc']
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="QTDIR">
<summary>
+<para>
The qt tool tries to take this from os.environ.
It also initializes all QT_*
construction variables listed below.
@@ -91,24 +117,30 @@ and the variables
&cv-link-PROGEMITTER;, &cv-link-SHLIBEMITTER; and &cv-link-LIBEMITTER;
are modified. Because the build-performance is affected when using this tool,
you have to explicitly specify it at Environment creation:
+</para>
-<example>
+<example_commands>
Environment(tools=['default','qt'])
-</example>
+</example_commands>
+<para>
The qt tool supports the following operations:
+</para>
-<emphasis Role="strong">Automatic moc file generation from header files.</emphasis>
+<para>
+<emphasis role="strong">Automatic moc file generation from header files.</emphasis>
You do not have to specify moc files explicitly, the tool does it for you.
However, there are a few preconditions to do so: Your header file must have
the same filebase as your implementation file and must stay in the same
directory. It must have one of the suffixes .h, .hpp, .H, .hxx, .hh. You
can turn off automatic moc file generation by setting QT_AUTOSCAN to 0.
See also the corresponding
-&b-Moc();
+&b-Moc;()
builder method.
+</para>
-<emphasis Role="strong">Automatic moc file generation from cxx files.</emphasis>
+<para>
+<emphasis role="strong">Automatic moc file generation from cxx files.</emphasis>
As stated in the qt documentation, include the moc file at the end of
the cxx file. Note that you have to include the file, which is generated
by the transformation ${QT_MOCCXXPREFIX}&lt;basename&gt;${QT_MOCCXXSUFFIX}, by default
@@ -118,8 +150,10 @@ need to specify duplicate=1. You can turn off automatic moc file generation
by setting QT_AUTOSCAN to 0. See also the corresponding
&b-Moc;
builder method.
+</para>
-<emphasis Role="strong">Automatic handling of .ui files.</emphasis>
+<para>
+<emphasis role="strong">Automatic handling of .ui files.</emphasis>
The implementation files generated from .ui files are handled much the same
as yacc or lex files. Each .ui file given as a source of Program, Library or
SharedLibrary will generate three files, the declaration file, the
@@ -128,188 +162,245 @@ you may need to specify duplicate=1 in calls to VariantDir.
See also the corresponding
&b-Uic;
builder method.
+</para>
</summary>
</cvar>
<cvar name="QT_AUTOSCAN">
<summary>
+<para>
Turn off scanning for mocable files. Use the Moc Builder to explicitly
specify files to run moc on.
+</para>
</summary>
</cvar>
<cvar name="QT_BINPATH">
<summary>
+<para>
The path where the qt binaries are installed.
The default value is '&cv-link-QTDIR;/bin'.
+</para>
</summary>
</cvar>
<cvar name="QT_CPPPATH">
<summary>
+<para>
The path where the qt header files are installed.
The default value is '&cv-link-QTDIR;/include'.
Note: If you set this variable to None,
the tool won't change the &cv-link-CPPPATH;
construction variable.
+</para>
</summary>
</cvar>
<cvar name="QT_DEBUG">
<summary>
+<para>
Prints lots of debugging information while scanning for moc files.
+</para>
</summary>
</cvar>
<cvar name="QT_LIB">
<summary>
+<para>
Default value is 'qt'. You may want to set this to 'qt-mt'. Note: If you set
this variable to None, the tool won't change the &cv-link-LIBS; variable.
+</para>
</summary>
</cvar>
<cvar name="QT_LIBPATH">
<summary>
+<para>
The path where the qt libraries are installed.
The default value is '&cv-link-QTDIR;/lib'.
Note: If you set this variable to None,
the tool won't change the &cv-link-LIBPATH;
construction variable.
+</para>
</summary>
</cvar>
<cvar name="QT_MOC">
<summary>
+<para>
Default value is '&cv-link-QT_BINPATH;/moc'.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCCXXPREFIX">
<summary>
+<para>
Default value is ''. Prefix for moc output files, when source is a cxx file.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCCXXSUFFIX">
<summary>
+<para>
Default value is '.moc'. Suffix for moc output files, when source is a cxx
file.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCFROMCXXFLAGS">
<summary>
+<para>
Default value is '-i'. These flags are passed to moc, when moccing a
C++ file.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCFROMCXXCOM">
<summary>
+<para>
Command to generate a moc file from a cpp file.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCFROMCXXCOMSTR">
<summary>
+<para>
The string displayed when generating a moc file from a cpp file.
If this is not set, then &cv-link-QT_MOCFROMCXXCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCFROMHCOM">
<summary>
+<para>
Command to generate a moc file from a header.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCFROMHCOMSTR">
<summary>
+<para>
The string displayed when generating a moc file from a cpp file.
If this is not set, then &cv-link-QT_MOCFROMHCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCFROMHFLAGS">
<summary>
+<para>
Default value is ''. These flags are passed to moc, when moccing a header
file.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCHPREFIX">
<summary>
+<para>
Default value is 'moc_'. Prefix for moc output files, when source is a header.
+</para>
</summary>
</cvar>
<cvar name="QT_MOCHSUFFIX">
<summary>
+<para>
Default value is '&cv-link-CXXFILESUFFIX;'. Suffix for moc output files, when source is
a header.
+</para>
</summary>
</cvar>
<cvar name="QT_UIC">
<summary>
+<para>
Default value is '&cv-link-QT_BINPATH;/uic'.
+</para>
</summary>
</cvar>
<cvar name="QT_UICCOM">
<summary>
+<para>
Command to generate header files from .ui files.
+</para>
</summary>
</cvar>
<cvar name="QT_UICCOMSTR">
<summary>
+<para>
The string displayed when generating header files from .ui files.
If this is not set, then &cv-link-QT_UICCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="QT_UICDECLFLAGS">
<summary>
+<para>
Default value is ''. These flags are passed to uic, when creating a a h
file from a .ui file.
+</para>
</summary>
</cvar>
<cvar name="QT_UICDECLPREFIX">
<summary>
+<para>
Default value is ''. Prefix for uic generated header files.
+</para>
</summary>
</cvar>
<cvar name="QT_UICDECLSUFFIX">
<summary>
+<para>
Default value is '.h'. Suffix for uic generated header files.
+</para>
</summary>
</cvar>
<cvar name="QT_UICIMPLFLAGS">
<summary>
+<para>
Default value is ''. These flags are passed to uic, when creating a cxx
file from a .ui file.
+</para>
</summary>
</cvar>
<cvar name="QT_UICIMPLPREFIX">
<summary>
+<para>
Default value is 'uic_'. Prefix for uic generated implementation files.
+</para>
</summary>
</cvar>
<cvar name="QT_UICIMPLSUFFIX">
<summary>
+<para>
Default value is '&cv-link-CXXFILESUFFIX;'. Suffix for uic generated implementation
files.
+</para>
</summary>
</cvar>
<cvar name="QT_UISUFFIX">
<summary>
+<para>
Default value is '.ui'. Suffix of designer input files.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/rmic.py b/src/engine/SCons/Tool/rmic.py
index df90bc0..689d823 100644
--- a/src/engine/SCons/Tool/rmic.py
+++ b/src/engine/SCons/Tool/rmic.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/rmic.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/rmic.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/rmic.xml b/src/engine/SCons/Tool/rmic.xml
index 198a88e..1c0d10b 100644
--- a/src/engine/SCons/Tool/rmic.xml
+++ b/src/engine/SCons/Tool/rmic.xml
@@ -1,26 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="rmic">
<summary>
+<para>
Sets construction variables for the &rmic; utility.
+</para>
</summary>
<sets>
-RMIC
-RMICFLAGS
-RMICCOM
-JAVACLASSSUFFIX
+<item>RMIC</item>
+<item>RMICFLAGS</item>
+<item>RMICCOM</item>
+<item>JAVACLASSSUFFIX</item>
</sets>
<uses>
-RMICCOMSTR
+<item>RMICCOMSTR</item>
</uses>
</tool>
<builder name="RMIC">
<summary>
+<para>
Builds stub and skeleton class files
for remote objects
from Java <filename>.class</filename> files.
@@ -31,7 +53,9 @@ The source can be the names of <filename>.class</filename> files,
or the objects return from the
&b-Java;
builder method.
+</para>
+<para>
If the construction variable
&cv-link-JAVACLASSDIR;
is set, either in the environment
@@ -42,8 +66,9 @@ then the value of the variable
will be stripped from the
beginning of any <filename>.class </filename>
file names.
+</para>
-<example>
+<example_commands>
classes = env.Java(target = 'classdir', source = 'src')
env.RMIC(target = 'outdir1', source = classes)
@@ -53,41 +78,51 @@ env.RMIC(target = 'outdir2',
env.RMIC(target = 'outdir3',
source = ['classes/foo.class', 'classes/bar.class'],
JAVACLASSDIR = 'classes')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="RMIC">
<summary>
+<para>
The Java RMI stub compiler.
+</para>
</summary>
</cvar>
<cvar name="RMICCOM">
<summary>
+<para>
The command line used to compile stub
and skeleton class files
from Java classes that contain RMI implementations.
Any options specified in the &cv-link-RMICFLAGS; construction variable
are included on this command line.
+</para>
</summary>
</cvar>
<cvar name="RMICCOMSTR">
<summary>
+<para>
The string displayed when compiling
stub and skeleton class files
from Java classes that contain RMI implementations.
If this is not set, then &cv-link-RMICCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(RMICCOMSTR = "Generating stub/skeleton class files $TARGETS from $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="RMICFLAGS">
<summary>
+<para>
General options passed to the Java RMI stub compiler.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/rpcgen.py b/src/engine/SCons/Tool/rpcgen.py
index 309db82..2caf244 100644
--- a/src/engine/SCons/Tool/rpcgen.py
+++ b/src/engine/SCons/Tool/rpcgen.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/rpcgen.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/rpcgen.py 2014/03/02 14:18:15 garyo"
from SCons.Builder import Builder
import SCons.Util
diff --git a/src/engine/SCons/Tool/rpcgen.xml b/src/engine/SCons/Tool/rpcgen.xml
index f27cd76..33b66be 100644
--- a/src/engine/SCons/Tool/rpcgen.xml
+++ b/src/engine/SCons/Tool/rpcgen.xml
@@ -1,20 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="rpcgen">
<summary>
+<para>
Sets construction variables for building with RPCGEN.
+</para>
</summary>
<sets>
-RPCGEN
-RPCGENFLAGS
-RPCGENCLIENTFLAGS
-RPCGENHEADERFLAGS
-RPCGENSERVICEFLAGS
-RPCGENXDRFLAGS
+<item>RPCGEN</item>
+<item>RPCGENFLAGS</item>
+<item>RPCGENCLIENTFLAGS</item>
+<item>RPCGENHEADERFLAGS</item>
+<item>RPCGENSERVICEFLAGS</item>
+<item>RPCGENXDRFLAGS</item>
</sets>
<uses>
</uses>
@@ -22,116 +43,138 @@ RPCGENXDRFLAGS
<builder name="RPCGenClient">
<summary>
+<para>
Generates an RPC client stub (<filename>_clnt.c</filename>) file
from a specified RPC (<filename>.x</filename>) source file.
Because rpcgen only builds output files
in the local directory,
the command will be executed
in the source file's directory by default.
+</para>
-<example>
+<example_commands>
# Builds src/rpcif_clnt.c
env.RPCGenClient('src/rpcif.x')
-</example>
+</example_commands>
</summary>
</builder>
<builder name="RPCGenHeader">
<summary>
+<para>
Generates an RPC header (<filename>.h</filename>) file
from a specified RPC (<filename>.x</filename>) source file.
Because rpcgen only builds output files
in the local directory,
the command will be executed
in the source file's directory by default.
+</para>
-<example>
+<example_commands>
# Builds src/rpcif.h
env.RPCGenHeader('src/rpcif.x')
-</example>
+</example_commands>
</summary>
</builder>
<builder name="RPCGenService">
<summary>
+<para>
Generates an RPC server-skeleton (<filename>_svc.c</filename>) file
from a specified RPC (<filename>.x</filename>) source file.
Because rpcgen only builds output files
in the local directory,
the command will be executed
in the source file's directory by default.
+</para>
-<example>
+<example_commands>
# Builds src/rpcif_svc.c
env.RPCGenClient('src/rpcif.x')
-</example>
+</example_commands>
</summary>
</builder>
<builder name="RPCGenXDR">
<summary>
+<para>
Generates an RPC XDR routine (<filename>_xdr.c</filename>) file
from a specified RPC (<filename>.x</filename>) source file.
Because rpcgen only builds output files
in the local directory,
the command will be executed
in the source file's directory by default.
+</para>
-<example>
+<example_commands>
# Builds src/rpcif_xdr.c
env.RPCGenClient('src/rpcif.x')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="RPCGEN">
<summary>
+<para>
The RPC protocol compiler.
+</para>
</summary>
</cvar>
<cvar name="RPCGENCLIENTFLAGS">
<summary>
+<para>
Options passed to the RPC protocol compiler
when generating client side stubs.
These are in addition to any flags specified in the
&cv-link-RPCGENFLAGS;
construction variable.
+</para>
</summary>
</cvar>
<cvar name="RPCGENFLAGS">
<summary>
+<para>
General options passed to the RPC protocol compiler.
+</para>
</summary>
</cvar>
<cvar name="RPCGENHEADERFLAGS">
<summary>
+<para>
Options passed to the RPC protocol compiler
when generating a header file.
These are in addition to any flags specified in the
&cv-link-RPCGENFLAGS;
construction variable.
+</para>
</summary>
</cvar>
<cvar name="RPCGENSERVICEFLAGS">
<summary>
+<para>
Options passed to the RPC protocol compiler
when generating server side stubs.
These are in addition to any flags specified in the
&cv-link-RPCGENFLAGS;
construction variable.
+</para>
</summary>
</cvar>
<cvar name="RPCGENXDRFLAGS">
<summary>
+<para>
Options passed to the RPC protocol compiler
when generating XDR routines.
These are in addition to any flags specified in the
&cv-link-RPCGENFLAGS;
construction variable.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/rpm.py b/src/engine/SCons/Tool/rpm.py
index ef31bd5..9be0d79 100644
--- a/src/engine/SCons/Tool/rpm.py
+++ b/src/engine/SCons/Tool/rpm.py
@@ -11,7 +11,7 @@ tar.gz consisting of the source file and a specfile.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ tar.gz consisting of the source file and a specfile.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/rpm.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/rpm.py 2014/03/02 14:18:15 garyo"
import os
import re
@@ -79,7 +79,7 @@ def build_rpm(target, source, env):
errstr=output,
filename=str(target[0]) )
else:
- # XXX: assume that LC_ALL=c is set while running rpmbuild
+ # XXX: assume that LC_ALL=C is set while running rpmbuild
output_files = re.compile( 'Wrote: (.*)' ).findall( output )
for output, input in zip( output_files, target ):
@@ -117,7 +117,7 @@ def generate(env):
bld = RpmBuilder
env['BUILDERS']['Rpm'] = bld
- env.SetDefault(RPM = 'LC_ALL=c rpmbuild')
+ env.SetDefault(RPM = 'LC_ALL=C rpmbuild')
env.SetDefault(RPMFLAGS = SCons.Util.CLVar('-ta'))
env.SetDefault(RPMCOM = rpmAction)
env.SetDefault(RPMSUFFIX = '.rpm')
diff --git a/src/engine/SCons/Tool/rpmutils.py b/src/engine/SCons/Tool/rpmutils.py
index 16d980a..f482fbb 100644
--- a/src/engine/SCons/Tool/rpmutils.py
+++ b/src/engine/SCons/Tool/rpmutils.py
@@ -14,7 +14,7 @@ exact syntax.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -35,7 +35,7 @@ exact syntax.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/rpmutils.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/rpmutils.py 2014/03/02 14:18:15 garyo"
import platform
diff --git a/src/engine/SCons/Tool/sgiar.py b/src/engine/SCons/Tool/sgiar.py
index 27f5f75..a1a94a5 100644
--- a/src/engine/SCons/Tool/sgiar.py
+++ b/src/engine/SCons/Tool/sgiar.py
@@ -11,7 +11,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgiar.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sgiar.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/sgiar.xml b/src/engine/SCons/Tool/sgiar.xml
index f76dfa5..3f216c4 100644
--- a/src/engine/SCons/Tool/sgiar.xml
+++ b/src/engine/SCons/Tool/sgiar.xml
@@ -1,24 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sgiar">
<summary>
+<para>
Sets construction variables for the SGI library archiver.
+</para>
</summary>
<sets>
-AR
-ARFLAGS
-ARCOMSTR
-SHLINK
-SHLINKFLAGS
-LIBPREFIX
-LIBSUFFIX
+<item>AR</item>
+<item>ARFLAGS</item>
+<item>ARCOMSTR</item>
+<item>SHLINK</item>
+<item>SHLINKFLAGS</item>
+<item>LIBPREFIX</item>
+<item>LIBSUFFIX</item>
</sets>
<uses>
-ARCOMSTR
-SHLINKCOMSTR
+<item>ARCOMSTR</item>
+<item>SHLINKCOMSTR</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sgic++.py b/src/engine/SCons/Tool/sgic++.py
index ae2ac2c..4dcdc1d 100644
--- a/src/engine/SCons/Tool/sgic++.py
+++ b/src/engine/SCons/Tool/sgic++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgic++.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sgic++.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sgic++.xml b/src/engine/SCons/Tool/sgic++.xml
index c183a8c..c6f450a 100644
--- a/src/engine/SCons/Tool/sgic++.xml
+++ b/src/engine/SCons/Tool/sgic++.xml
@@ -1,18 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sgic++">
<summary>
+<para>
Sets construction variables for the SGI C++ compiler.
+</para>
</summary>
<sets>
-CXX
-CXXFLAGS
-SHCXX
-SHOBJSUFFIX
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+<item>CXX</item>
+<item>CXXFLAGS</item>
+<item>SHCXX</item>
+<item>SHOBJSUFFIX</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sgicc.py b/src/engine/SCons/Tool/sgicc.py
index 54e05a3..15c34c1 100644
--- a/src/engine/SCons/Tool/sgicc.py
+++ b/src/engine/SCons/Tool/sgicc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgicc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sgicc.py 2014/03/02 14:18:15 garyo"
import cc
diff --git a/src/engine/SCons/Tool/sgicc.xml b/src/engine/SCons/Tool/sgicc.xml
index 584aeb7..1ba6805 100644
--- a/src/engine/SCons/Tool/sgicc.xml
+++ b/src/engine/SCons/Tool/sgicc.xml
@@ -1,18 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sgicc">
<summary>
+<para>
Sets construction variables for the SGI C compiler.
+</para>
</summary>
<sets>
-CXX
-SHOBJSUFFIX
-<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+<item>CXX</item>
+<item>SHOBJSUFFIX</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
</sets>
<uses>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sgilink.py b/src/engine/SCons/Tool/sgilink.py
index 82c4419..10069c6 100644
--- a/src/engine/SCons/Tool/sgilink.py
+++ b/src/engine/SCons/Tool/sgilink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgilink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sgilink.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sgilink.xml b/src/engine/SCons/Tool/sgilink.xml
index 0a8c796..fad921f 100644
--- a/src/engine/SCons/Tool/sgilink.xml
+++ b/src/engine/SCons/Tool/sgilink.xml
@@ -1,17 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sgilink">
<summary>
+<para>
Sets construction variables for the SGI linker.
+</para>
</summary>
<sets>
-LINK
-SHLINKFLAGS
-RPATHPREFIX
-RPATHSUFFIX
+<item>LINK</item>
+<item>SHLINKFLAGS</item>
+<item>RPATHPREFIX</item>
+<item>RPATHSUFFIX</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sunar.py b/src/engine/SCons/Tool/sunar.py
index 3a4d7c2..154e44f 100644
--- a/src/engine/SCons/Tool/sunar.py
+++ b/src/engine/SCons/Tool/sunar.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunar.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sunar.py 2014/03/02 14:18:15 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/sunar.xml b/src/engine/SCons/Tool/sunar.xml
index 02511a7..425527c 100644
--- a/src/engine/SCons/Tool/sunar.xml
+++ b/src/engine/SCons/Tool/sunar.xml
@@ -1,25 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sunar">
<summary>
+<para>
Sets construction variables for the Sun library archiver.
+</para>
</summary>
<sets>
-AR
-ARFLAGS
-ARCOM
-SHLINK
-SHLINKFLAGS
-SHLINKCOM
-LIBPREFIX
-LIBSUFFIX
+<item>AR</item>
+<item>ARFLAGS</item>
+<item>ARCOM</item>
+<item>SHLINK</item>
+<item>SHLINKFLAGS</item>
+<item>SHLINKCOM</item>
+<item>LIBPREFIX</item>
+<item>LIBSUFFIX</item>
</sets>
<uses>
-ARCOMSTR
-SHLINKCOMSTR
+<item>ARCOMSTR</item>
+<item>SHLINKCOMSTR</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sunc++.py b/src/engine/SCons/Tool/sunc++.py
index 7234239..2f1ceaf 100644
--- a/src/engine/SCons/Tool/sunc++.py
+++ b/src/engine/SCons/Tool/sunc++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunc++.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sunc++.py 2014/03/02 14:18:15 garyo"
import SCons
diff --git a/src/engine/SCons/Tool/sunc++.xml b/src/engine/SCons/Tool/sunc++.xml
index 8d72874..c95d68c 100644
--- a/src/engine/SCons/Tool/sunc++.xml
+++ b/src/engine/SCons/Tool/sunc++.xml
@@ -1,19 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sunc++">
<summary>
+<para>
Sets construction variables for the Sun C++ compiler.
+</para>
</summary>
<sets>
-CXX
-SHCXX
-CXXVERSION
-SHCXXFLAGS
-SHOBJPREFIX
-SHOBJSUFFIX
+<item>CXX</item>
+<item>SHCXX</item>
+<item>CXXVERSION</item>
+<item>SHCXXFLAGS</item>
+<item>SHOBJPREFIX</item>
+<item>SHOBJSUFFIX</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/suncc.py b/src/engine/SCons/Tool/suncc.py
index f7442d8..67edb8a 100644
--- a/src/engine/SCons/Tool/suncc.py
+++ b/src/engine/SCons/Tool/suncc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/suncc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/suncc.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/suncc.xml b/src/engine/SCons/Tool/suncc.xml
index 3c69e47..8be0d6e 100644
--- a/src/engine/SCons/Tool/suncc.xml
+++ b/src/engine/SCons/Tool/suncc.xml
@@ -1,17 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="suncc">
<summary>
+<para>
Sets construction variables for the Sun C compiler.
+</para>
</summary>
<sets>
-CXX
-SHCCFLAGS
-SHOBJPREFIX
-SHOBJSUFFIX
+<item>CXX</item>
+<item>SHCCFLAGS</item>
+<item>SHOBJPREFIX</item>
+<item>SHOBJSUFFIX</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sunf77.py b/src/engine/SCons/Tool/sunf77.py
index eb63781..5eb664d 100644
--- a/src/engine/SCons/Tool/sunf77.py
+++ b/src/engine/SCons/Tool/sunf77.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunf77.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sunf77.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sunf77.xml b/src/engine/SCons/Tool/sunf77.xml
index 6d9a335..f31ed3a 100644
--- a/src/engine/SCons/Tool/sunf77.xml
+++ b/src/engine/SCons/Tool/sunf77.xml
@@ -1,19 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sunf77">
<summary>
+<para>
Set construction variables for the Sun &f77; Fortran compiler.
+</para>
</summary>
<sets>
-FORTRAN
-F77
-SHFORTRAN
-SHF77
-SHFORTRANFLAGS
-SHF77FLAGS
+<item>FORTRAN</item>
+<item>F77</item>
+<item>SHFORTRAN</item>
+<item>SHF77</item>
+<item>SHFORTRANFLAGS</item>
+<item>SHF77FLAGS</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sunf90.py b/src/engine/SCons/Tool/sunf90.py
index cfee2ee..0a08c70 100644
--- a/src/engine/SCons/Tool/sunf90.py
+++ b/src/engine/SCons/Tool/sunf90.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunf90.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sunf90.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sunf90.xml b/src/engine/SCons/Tool/sunf90.xml
index d181322..b68e074 100644
--- a/src/engine/SCons/Tool/sunf90.xml
+++ b/src/engine/SCons/Tool/sunf90.xml
@@ -1,19 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sunf90">
<summary>
+<para>
Set construction variables for the Sun &f90; Fortran compiler.
+</para>
</summary>
<sets>
-FORTRAN
-F90
-SHFORTRAN
-SHF90
-SHFORTRANFLAGS
-SHF90FLAGS
+<item>FORTRAN</item>
+<item>F90</item>
+<item>SHFORTRAN</item>
+<item>SHF90</item>
+<item>SHFORTRANFLAGS</item>
+<item>SHF90FLAGS</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sunf95.py b/src/engine/SCons/Tool/sunf95.py
index 31d57b1..fd0be66 100644
--- a/src/engine/SCons/Tool/sunf95.py
+++ b/src/engine/SCons/Tool/sunf95.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunf95.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sunf95.py 2014/03/02 14:18:15 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sunf95.xml b/src/engine/SCons/Tool/sunf95.xml
index d60d3b5..cebbe00 100644
--- a/src/engine/SCons/Tool/sunf95.xml
+++ b/src/engine/SCons/Tool/sunf95.xml
@@ -1,19 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sunf95">
<summary>
+<para>
Set construction variables for the Sun &f95; Fortran compiler.
+</para>
</summary>
<sets>
-FORTRAN
-F95
-SHFORTRAN
-SHF95
-SHFORTRANFLAGS
-SHF95FLAGS
+<item>FORTRAN</item>
+<item>F95</item>
+<item>SHFORTRAN</item>
+<item>SHF95</item>
+<item>SHFORTRANFLAGS</item>
+<item>SHF95FLAGS</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/sunlink.py b/src/engine/SCons/Tool/sunlink.py
index 4639341..5cc6024 100644
--- a/src/engine/SCons/Tool/sunlink.py
+++ b/src/engine/SCons/Tool/sunlink.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunlink.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/sunlink.py 2014/03/02 14:18:15 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/sunlink.xml b/src/engine/SCons/Tool/sunlink.xml
index c280b13..639f526 100644
--- a/src/engine/SCons/Tool/sunlink.xml
+++ b/src/engine/SCons/Tool/sunlink.xml
@@ -1,16 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="sunlink">
<summary>
+<para>
Sets construction variables for the Sun linker.
+</para>
</summary>
<sets>
-SHLINKFLAGS
-RPATHPREFIX
-RPATHSUFFIX
+<item>SHLINKFLAGS</item>
+<item>RPATHPREFIX</item>
+<item>RPATHSUFFIX</item>
</sets>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/swig.py b/src/engine/SCons/Tool/swig.py
index 6bbe922..188d229 100644
--- a/src/engine/SCons/Tool/swig.py
+++ b/src/engine/SCons/Tool/swig.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/swig.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/swig.py 2014/03/02 14:18:15 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/swig.xml b/src/engine/SCons/Tool/swig.xml
index 0e1e487..d94d67f 100644
--- a/src/engine/SCons/Tool/swig.xml
+++ b/src/engine/SCons/Tool/swig.xml
@@ -1,39 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="swig">
<summary>
+<para>
Sets construction variables for the SWIG interface generator.
+</para>
</summary>
<sets>
-SWIG
-SWIGFLAGS
-SWIGDIRECTORSUFFIX
-SWIGCFILESUFFIX
-SWIGCXXFILESUFFIX
-_SWIGINCFLAGS
-SWIGINCPREFIX
-SWIGINCSUFFIX
-SWIGCOM
-SWIGPATH
-SWIGVERSION
+<item>SWIG</item>
+<item>SWIGFLAGS</item>
+<item>SWIGDIRECTORSUFFIX</item>
+<item>SWIGCFILESUFFIX</item>
+<item>SWIGCXXFILESUFFIX</item>
+<item>_SWIGINCFLAGS</item>
+<item>SWIGINCPREFIX</item>
+<item>SWIGINCSUFFIX</item>
+<item>SWIGCOM</item>
+<item>SWIGPATH</item>
+<item>SWIGVERSION</item>
</sets>
<uses>
-SWIGCOMSTR
+<item>SWIGCOMSTR</item>
</uses>
</tool>
<cvar name="SWIG">
<summary>
+<para>
The scripting language wrapper and interface generator.
+</para>
</summary>
</cvar>
<cvar name="SWIGCFILESUFFIX">
<summary>
+<para>
The suffix that will be used for intermediate C
source files generated by
the scripting language wrapper and interface generator.
@@ -46,37 +70,45 @@ option is
specified as part of the
&cv-link-SWIGFLAGS;
construction variable.
+</para>
</summary>
</cvar>
<cvar name="SWIGDIRECTORSUFFIX">
<summary>
+<para>
The suffix that will be used for intermediate C++ header
files generated by the scripting language wrapper and interface generator.
These are only generated for C++ code when the SWIG 'directors' feature is
turned on.
The default value is
<filename>_wrap.h</filename>.
+</para>
</summary>
</cvar>
<cvar name="SWIGCOM">
<summary>
+<para>
The command line used to call
the scripting language wrapper and interface generator.
+</para>
</summary>
</cvar>
<cvar name="SWIGCOMSTR">
<summary>
+<para>
The string displayed when calling
the scripting language wrapper and interface generator.
If this is not set, then &cv-link-SWIGCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="SWIGCXXFILESUFFIX">
<summary>
+<para>
The suffix that will be used for intermediate C++
source files generated by
the scripting language wrapper and interface generator.
@@ -87,11 +119,13 @@ By default, this value is used whenever the
option is specified as part of the
&cv-link-SWIGFLAGS;
construction variable.
+</para>
</summary>
</cvar>
<cvar name="SWIGFLAGS">
<summary>
+<para>
General options passed to
the scripting language wrapper and interface generator.
This is where you should set
@@ -108,11 +142,13 @@ generate a C++ intermediate source file
with the extension that is specified as the
&cv-link-CXXFILESUFFIX;
variable.
+</para>
</summary>
</cvar>
<cvar name="_SWIGINCFLAGS">
<summary>
+<para>
An automatically-generated construction variable
containing the SWIG command-line options
for specifying directories to be searched for included files.
@@ -120,29 +156,35 @@ The value of &cv-_SWIGINCFLAGS; is created
by appending &cv-SWIGINCPREFIX; and &cv-SWIGINCSUFFIX;
to the beginning and end
of each directory in &cv-SWIGPATH;.
+</para>
</summary>
</cvar>
<cvar name="SWIGINCPREFIX">
<summary>
+<para>
The prefix used to specify an include directory on the SWIG command line.
This will be appended to the beginning of each directory
in the &cv-SWIGPATH; construction variable
when the &cv-_SWIGINCFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="SWIGINCSUFFIX">
<summary>
+<para>
The suffix used to specify an include directory on the SWIG command line.
This will be appended to the end of each directory
in the &cv-SWIGPATH; construction variable
when the &cv-_SWIGINCFLAGS; variable is automatically generated.
+</para>
</summary>
</cvar>
<cvar name="SWIGOUTDIR">
<summary>
+<para>
Specifies the output directory in which
the scripting language wrapper and interface generator
should place generated language-specific files.
@@ -150,18 +192,22 @@ This will be used by SCons to identify
the files that will be generated by the &swig; call,
and translated into the
<literal>swig -outdir</literal> option on the command line.
+</para>
</summary>
</cvar>
<cvar name="SWIGPATH">
<summary>
+<para>
The list of directories that the scripting language wrapper
and interface generate will search for included files.
The SWIG implicit dependency scanner will search these
directories for include files.
The default is to use the same path
specified as &cv-CPPPATH;.
+</para>
+<para>
Don't explicitly put include directory
arguments in SWIGFLAGS;
the result will be non-portable
@@ -171,20 +217,24 @@ directory when they are used in a command.
To force
&scons;
to look-up a directory relative to the root of the source tree use #:
+</para>
-<example>
+<example_commands>
env = Environment(SWIGPATH='#/include')
-</example>
+</example_commands>
+<para>
The directory look-up can also be forced using the
&Dir;()
function:
+</para>
-<example>
+<example_commands>
include = Dir('include')
env = Environment(SWIGPATH=include)
-</example>
+</example_commands>
+<para>
The directory list will be added to command lines
through the automatically-generated
&cv-_SWIGINCFLAGS;
@@ -198,15 +248,20 @@ of each directory in &cv-SWIGPATH;.
Any command lines you define that need
the SWIGPATH directory list should
include &cv-_SWIGINCFLAGS;:
+</para>
-<example>
+<example_commands>
env = Environment(SWIGCOM="my_swig -o $TARGET $_SWIGINCFLAGS $SORUCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="SWIGVERSION">
<summary>
+<para>
The version number of the SWIG tool.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/tar.py b/src/engine/SCons/Tool/tar.py
index e289358..9c09f0e 100644
--- a/src/engine/SCons/Tool/tar.py
+++ b/src/engine/SCons/Tool/tar.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/tar.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/tar.py 2014/03/02 14:18:15 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/tar.xml b/src/engine/SCons/Tool/tar.xml
index 07ef44c..28ed5d8 100644
--- a/src/engine/SCons/Tool/tar.xml
+++ b/src/engine/SCons/Tool/tar.xml
@@ -1,26 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="tar">
<summary>
+<para>
Sets construction variables for the &tar; archiver.
+</para>
</summary>
<sets>
-TAR
-TARFLAGS
-TARCOM
-TARSUFFIX
+<item>TAR</item>
+<item>TARFLAGS</item>
+<item>TARCOM</item>
+<item>TARSUFFIX</item>
</sets>
<uses>
-TARCOMSTR
+<item>TARCOMSTR</item>
</uses>
</tool>
<builder name="Tar">
<summary>
+<para>
Builds a tar archive of the specified files
and/or directories.
Unlike most builder methods,
@@ -37,8 +59,9 @@ any on-disk files,
regardless of whether or not
&scons;
knows about them from other Builder or function calls.
+</para>
-<example>
+<example_commands>
env.Tar('src.tar', 'src')
# Create the stuff.tar file.
@@ -54,42 +77,54 @@ env.Tar('foo.tar.gz', 'foo')
env = Environment(TARFLAGS = '-c -z',
TARSUFFIX = '.tgz')
env.Tar('foo')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="TAR">
<summary>
+<para>
The tar archiver.
+</para>
</summary>
</cvar>
<cvar name="TARCOM">
<summary>
+<para>
The command line used to call the tar archiver.
+</para>
</summary>
</cvar>
<cvar name="TARCOMSTR">
<summary>
+<para>
The string displayed when archiving files
using the tar archiver.
If this is not set, then &cv-link-TARCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(TARCOMSTR = "Archiving $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="TARFLAGS">
<summary>
+<para>
General options passed to the tar archiver.
+</para>
</summary>
</cvar>
<cvar name="TARSUFFIX">
<summary>
+<para>
The suffix used for tar file names.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/tex.py b/src/engine/SCons/Tool/tex.py
index 5960634..515002c 100644
--- a/src/engine/SCons/Tool/tex.py
+++ b/src/engine/SCons/Tool/tex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/tex.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/tex.py 2014/03/02 14:18:15 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/tex.xml b/src/engine/SCons/Tool/tex.xml
index 5378ae6..c9d5107 100644
--- a/src/engine/SCons/Tool/tex.xml
+++ b/src/engine/SCons/Tool/tex.xml
@@ -1,126 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="tex">
<summary>
+<para>
Sets construction variables for the TeX formatter and typesetter.
+</para>
</summary>
<sets>
-TEX
-TEXFLAGS
-TEXCOM
-LATEX
-LATEXFLAGS
-LATEXCOM
-BIBTEX
-BIBTEXFLAGS
-BIBTEXCOM
-MAKEINDEX
-MAKEINDEXFLAGS
-MAKEINDEXCOM
+<item>TEX</item>
+<item>TEXFLAGS</item>
+<item>TEXCOM</item>
+<item>LATEX</item>
+<item>LATEXFLAGS</item>
+<item>LATEXCOM</item>
+<item>BIBTEX</item>
+<item>BIBTEXFLAGS</item>
+<item>BIBTEXCOM</item>
+<item>MAKEINDEX</item>
+<item>MAKEINDEXFLAGS</item>
+<item>MAKEINDEXCOM</item>
</sets>
<uses>
-TEXCOMSTR
-LATEXCOMSTR
-BIBTEXCOMSTR
-MAKEINDEXCOMSTR
+<item>TEXCOMSTR</item>
+<item>LATEXCOMSTR</item>
+<item>BIBTEXCOMSTR</item>
+<item>MAKEINDEXCOMSTR</item>
</uses>
</tool>
<cvar name="BIBTEX">
<summary>
+<para>
The bibliography generator for the TeX formatter and typesetter and the
LaTeX structured formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="BIBTEXCOM">
<summary>
+<para>
The command line used to call the bibliography generator for the
TeX formatter and typesetter and the LaTeX structured formatter and
typesetter.
+</para>
</summary>
</cvar>
<cvar name="BIBTEXCOMSTR">
<summary>
+<para>
The string displayed when generating a bibliography
for TeX or LaTeX.
If this is not set, then &cv-link-BIBTEXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(BIBTEXCOMSTR = "Generating bibliography $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="BIBTEXFLAGS">
<summary>
+<para>
General options passed to the bibliography generator for the TeX formatter
and typesetter and the LaTeX structured formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="MAKEINDEX">
<summary>
+<para>
The makeindex generator for the TeX formatter and typesetter and the
LaTeX structured formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="MAKEINDEXCOM">
<summary>
+<para>
The command line used to call the makeindex generator for the
TeX formatter and typesetter and the LaTeX structured formatter and
typesetter.
+</para>
</summary>
</cvar>
<cvar name="MAKEINDEXCOMSTR">
<summary>
+<para>
The string displayed when calling the makeindex generator for the
TeX formatter and typesetter
and the LaTeX structured formatter and typesetter.
If this is not set, then &cv-link-MAKEINDEXCOM; (the command line) is displayed.
+</para>
</summary>
</cvar>
<cvar name="MAKEINDEXFLAGS">
<summary>
+<para>
General options passed to the makeindex generator for the TeX formatter
and typesetter and the LaTeX structured formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="TEX">
<summary>
+<para>
The TeX formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="TEXCOM">
<summary>
+<para>
The command line used to call the TeX formatter and typesetter.
+</para>
</summary>
</cvar>
<cvar name="TEXCOMSTR">
<summary>
+<para>
The string displayed when calling
the TeX formatter and typesetter.
If this is not set, then &cv-link-TEXCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(TEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="TEXFLAGS">
<summary>
+<para>
General options passed to the TeX formatter and typesetter.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/textfile.py b/src/engine/SCons/Tool/textfile.py
index 5e8307b..048b0f0 100644
--- a/src/engine/SCons/Tool/textfile.py
+++ b/src/engine/SCons/Tool/textfile.py
@@ -1,6 +1,6 @@
# -*- python -*-
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -44,7 +44,7 @@ Textfile/Substfile builder for SCons.
is unpredictible whether the expansion will occur.
"""
-__revision__ = "src/engine/SCons/Tool/textfile.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/textfile.py 2014/03/02 14:18:15 garyo"
import SCons
diff --git a/src/engine/SCons/Tool/textfile.xml b/src/engine/SCons/Tool/textfile.xml
index 2263d4c..a15525c 100644
--- a/src/engine/SCons/Tool/textfile.xml
+++ b/src/engine/SCons/Tool/textfile.xml
@@ -1,43 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="textfile">
<summary>
+<para>
Set construction variables for the &b-Textfile; and &b-Substfile; builders.
+</para>
</summary>
<sets>
-LINESEPARATOR
-SUBSTFILEPREFIX
-SUBSTFILESUFFIX
-TEXTFILEPREFIX
-TEXTFILESUFFIX
+<item>LINESEPARATOR</item>
+<item>SUBSTFILEPREFIX</item>
+<item>SUBSTFILESUFFIX</item>
+<item>TEXTFILEPREFIX</item>
+<item>TEXTFILESUFFIX</item>
</sets>
<uses>
-SUBST_DICT
+<item>SUBST_DICT</item>
</uses>
</tool>
<builder name="Textfile">
<summary>
+<para>
The &b-Textfile; builder generates a single text file.
The source strings constitute the lines;
-nested lists of sources are flattened.
+nested lists of sources are flattened.
&cv-LINESEPARATOR; is used to separate the strings.
+</para>
+<para>
If present, the &cv-SUBST_DICT; construction variable
is used to modify the strings before they are written;
see the &b-Substfile; description for details.
+</para>
+<para>
The prefix and suffix specified by the &cv-TEXTFILEPREFIX;
and &cv-TEXTFILESUFFIX; construction variables
(the null string and <filename>.txt</filename> by default, respectively)
are automatically added to the target if they are not already present.
Examples:
+</para>
-<example>
+<example_commands>
# builds/writes foo.txt
env.Textfile(target = 'foo.txt', source = ['Goethe', 42, 'Schiller'])
@@ -47,7 +74,7 @@ env.Textfile(target = 'bar',
LINESEPARATOR='|*')
# nested lists are flattened automatically
-env.Textfile(target = 'blob',
+env.Textfile(target = 'blob',
source = ['lalala', ['Goethe', 42 'Schiller'], 'tanteratei'])
# files may be used as input by wraping them in File()
@@ -76,43 +103,50 @@ blob.txt
Schiller
tanteratei
....8&lt;---- (no linefeed at the end)
-</example>
+</example_commands>
</summary>
</builder>
<builder name="Substfile">
<summary>
-The &b-Substfile; builder generates a single text file
-by concatenating the source files.
-Nested lists of sources are flattened.
-&cv-LINESEPARATOR; is used to separate the source files;
-see the description of &b-Textfile; for details.
-
+<para>
+The &b-Substfile; builder creates a single text file from another file or set of
+files by concatenating them with &cv-LINESEPARATOR; and replacing text
+using the &cv-SUBST_DICT; construction variable. Nested lists of source files
+are flattened. See also &b-Textfile;.
+</para>
+
+<para>
If a single source file is present with an <filename>.in</filename> suffix,
the suffix is stripped and the remainder is used as the default target name.
+</para>
+<para>
The prefix and suffix specified by the &cv-SUBSTFILEPREFIX;
and &cv-SUBSTFILESUFFIX; construction variables
(the null string by default in both cases)
are automatically added to the target if they are not already present.
+</para>
+<para>
If a construction variable named &cv-SUBST_DICT; is present,
it may be either a Python dictionary or a sequence of (key,value) tuples.
-If the former,
-the dictionary is converted into a list of tuples in an arbitrary order,
+If it is a dictionary it is converted into a list of tuples in an arbitrary order,
so if one key is a prefix of another key
or if one substitution could be further expanded by another subsitition,
-it is unpredictible whether the expansion will occur.
+it is unpredictable whether the expansion will occur.
+</para>
-Any occurences in the source of a key
+<para>
+Any occurrences of a key in the source
are replaced by the corresponding value,
which may be a Python callable function or a string.
-If a value is a function,
-it is first called (with no arguments) to produce a string.
-The string is <emphasis>subst</emphasis>-expanded
+If the value is a callable, it is called with no arguments to get a string.
+Strings are <emphasis>subst</emphasis>-expanded
and the result replaces the key.
+</para>
-<example>
+<example_commands>
env = Environment(tools = ['default', 'textfile'])
env['prefix'] = '/usr/bin'
@@ -154,52 +188,66 @@ subst.Substfile('pgm2.c', [Value('#include "@foo@.h"'),
"pgm2.in"
])
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="LINESEPARATOR">
<summary>
+<para>
The separator used by the &b-Substfile; and &b-Textfile; builders.
This value is used between sources when constructing the target.
It defaults to the current system line separator.
+</para>
</summary>
</cvar>
<cvar name="SUBST_DICT">
<summary>
+<para>
The dictionary used by the &b-Substfile; or &b-Textfile; builders
for substitution values.
It can be anything acceptable to the dict() constructor,
so in addition to a dictionary,
lists of tuples are also acceptable.
+</para>
</summary>
</cvar>
<cvar name="SUBSTFILEPREFIX">
<summary>
+<para>
The prefix used for &b-Substfile; file names,
the null string by default.
+</para>
</summary>
</cvar>
<cvar name="SUBSTFILESUFFIX">
<summary>
+<para>
The suffix used for &b-Substfile; file names,
the null string by default.
+</para>
</summary>
</cvar>
<cvar name="TEXTFILEPREFIX">
<summary>
+<para>
The prefix used for &b-Textfile; file names,
the null string by default.
+</para>
</summary>
</cvar>
<cvar name="TEXTFILESUFFIX">
<summary>
+<para>
The suffix used for &b-Textfile; file names;
<filename>.txt</filename> by default.
+</para>
</summary>
</cvar>
+
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/tlib.py b/src/engine/SCons/Tool/tlib.py
index 5a30712..834d5d5 100644
--- a/src/engine/SCons/Tool/tlib.py
+++ b/src/engine/SCons/Tool/tlib.py
@@ -5,7 +5,7 @@ XXX
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/tlib.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/tlib.py 2014/03/02 14:18:15 garyo"
import SCons.Tool
import SCons.Tool.bcc32
diff --git a/src/engine/SCons/Tool/tlib.xml b/src/engine/SCons/Tool/tlib.xml
index 5b0706d..bc8ced6 100644
--- a/src/engine/SCons/Tool/tlib.xml
+++ b/src/engine/SCons/Tool/tlib.xml
@@ -1,22 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="tlib">
<summary>
+<para>
Sets construction variables for the Borlan
<application>tib</application> library archiver.
+</para>
</summary>
<sets>
-AR
-ARFLAGS
-ARCOM
-LIBPREFIX
-LIBSUFFIX
+<item>AR</item>
+<item>ARFLAGS</item>
+<item>ARCOM</item>
+<item>LIBPREFIX</item>
+<item>LIBSUFFIX</item>
</sets>
<uses>
-ARCOMSTR
+<item>ARCOMSTR</item>
</uses>
</tool>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/wix.py b/src/engine/SCons/Tool/wix.py
index 5b4c606..1cc2ef2 100644
--- a/src/engine/SCons/Tool/wix.py
+++ b/src/engine/SCons/Tool/wix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/wix.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/wix.py 2014/03/02 14:18:15 garyo"
import SCons.Builder
import SCons.Action
diff --git a/src/engine/SCons/Tool/wixTests.py b/src/engine/SCons/Tool/wixTests.py
index c8b6dac..db25faa 100644
--- a/src/engine/SCons/Tool/wixTests.py
+++ b/src/engine/SCons/Tool/wixTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/wixTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/wixTests.py 2014/03/02 14:18:15 garyo"
import unittest
import os.path
diff --git a/src/engine/SCons/Tool/xgettext.py b/src/engine/SCons/Tool/xgettext.py
index 6de021a..3224ec9 100644
--- a/src/engine/SCons/Tool/xgettext.py
+++ b/src/engine/SCons/Tool/xgettext.py
@@ -3,7 +3,7 @@
Tool specific initialization of `xgettext` tool.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Tool specific initialization of `xgettext` tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/xgettext.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/xgettext.py 2014/03/02 14:18:15 garyo"
#############################################################################
class _CmdRunner(object):
diff --git a/src/engine/SCons/Tool/xgettext.xml b/src/engine/SCons/Tool/xgettext.xml
index 4e652c3..8f64a7c 100644
--- a/src/engine/SCons/Tool/xgettext.xml
+++ b/src/engine/SCons/Tool/xgettext.xml
@@ -1,40 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="xgettext">
<summary>
+<para>
This scons tool is a part of scons &t-link-gettext; toolset. It provides
scons interface to <command>xgettext(1)</command>
program, which extracts internationalized messages from source code. The tool
provides &b-POTUpdate; builder to make <literal>PO</literal>
<emphasis>Template</emphasis> files.
+</para>
</summary>
<sets>
-POTSUFFIX
-POTUPDATE_ALIAS
-XGETTEXTCOM
-XGETTEXTCOMSTR
-XGETTEXTFLAGS
-XGETTEXTFROM
-XGETTEXTFROMPREFIX
-XGETTEXTFROMSUFFIX
-XGETTEXTPATH
-XGETTEXTPATHPREFIX
-XGETTEXTPATHSUFFIX
-_XGETTEXTDOMAIN
-_XGETTEXTFROMFLAGS
-_XGETTEXTPATHFLAGS
+<item>POTSUFFIX</item>
+<item>POTUPDATE_ALIAS</item>
+<item>XGETTEXTCOM</item>
+<item>XGETTEXTCOMSTR</item>
+<item>XGETTEXTFLAGS</item>
+<item>XGETTEXTFROM</item>
+<item>XGETTEXTFROMPREFIX</item>
+<item>XGETTEXTFROMSUFFIX</item>
+<item>XGETTEXTPATH</item>
+<item>XGETTEXTPATHPREFIX</item>
+<item>XGETTEXTPATHSUFFIX</item>
+<item>_XGETTEXTDOMAIN</item>
+<item>_XGETTEXTFROMFLAGS</item>
+<item>_XGETTEXTPATHFLAGS</item>
</sets>
<uses>
-POTDOMAIN
+<item>POTDOMAIN</item>
</uses>
</tool>
<builder name="POTUpdate">
<summary>
+<para>
The builder belongs to &t-link-xgettext; tool. The builder updates target
<literal>POT</literal> file if exists or creates one if it doesn't. The node is
not built by default (i.e. it is <literal>Ignore</literal>d from
@@ -46,7 +68,9 @@ special alias (<literal>pot-update</literal> by default, see
<command>scons pot-update</command>. The file is not written until there is no
real change in internationalized messages (or in comments that enter
<literal>POT</literal> file).
+</para>
+<para>
<note> <para>You may see <command>xgettext(1)</command> being invoked by the
&t-link-xgettext; tool even if there is no real change in internationalized
messages (so the <literal>POT</literal> file is not being updated). This
@@ -54,235 +78,296 @@ happens every time a source file has changed. In such case we invoke
<command>xgettext(1)</command> and compare its output with the content of
<literal>POT</literal> file to decide whether the file should be updated or
not.</para></note>
+</para>
+<para>
<emphasis>Example 1.</emphasis>
Let's create <filename>po/</filename> directory and place following
<filename>SConstruct</filename> script there:
-<example>
+</para>
+<example_commands>
# SConstruct in 'po/' subdir
env = Environment( tools = ['default', 'xgettext'] )
env.POTUpdate(['foo'], ['../a.cpp', '../b.cpp'])
env.POTUpdate(['bar'], ['../c.cpp', '../d.cpp'])
-</example>
+</example_commands>
+<para>
Then invoke scons few times:
-<example>
+</para>
+<example_commands>
user@host:$ scons # Does not create foo.pot nor bar.pot
user@host:$ scons foo.pot # Updates or creates foo.pot
user@host:$ scons pot-update # Updates or creates foo.pot and bar.pot
user@host:$ scons -c # Does not clean foo.pot nor bar.pot.
-</example>
+</example_commands>
+<para>
the results shall be as the comments above say.
+</para>
+<para>
<emphasis>Example 2.</emphasis>
The &b-POTUpdate; builder may be used with no target specified, in which
case default target <filename>messages.pot</filename> will be used. The
default target may also be overriden by setting &cv-link-POTDOMAIN; construction
variable or providing it as an override to &b-POTUpdate; builder:
-<example>
+</para>
+<example_commands>
# SConstruct script
env = Environment( tools = ['default', 'xgettext'] )
env['POTDOMAIN'] = "foo"
env.POTUpdate(source = ["a.cpp", "b.cpp"]) # Creates foo.pot ...
env.POTUpdate(POTDOMAIN = "bar", source = ["c.cpp", "d.cpp"]) # and bar.pot
-</example>
+</example_commands>
+<para>
<emphasis>Example 3.</emphasis>
The sources may be specified within separate file, for example
<filename>POTFILES.in</filename>:
-<example>
+</para>
+<example_commands>
# POTFILES.in in 'po/' subdirectory
../a.cpp
../b.cpp
# end of file
-</example>
+</example_commands>
+<para>
The name of the file (<filename>POTFILES.in</filename>) containing the list of
sources is provided via &cv-link-XGETTEXTFROM;:
-<example>
+</para>
+<example_commands>
# SConstruct file in 'po/' subdirectory
env = Environment( tools = ['default', 'xgettext'] )
env.POTUpdate(XGETTEXTFROM = 'POTFILES.in')
-</example>
+</example_commands>
+<para>
<emphasis>Example 4.</emphasis>
You may use &cv-link-XGETTEXTPATH; to define source search path. Assume, for
example, that you have files <filename>a.cpp</filename>,
<filename>b.cpp</filename>, <filename>po/SConstruct</filename>,
<filename>po/POTFILES.in</filename>. Then your <literal>POT</literal>-related
files could look as below:
-<example>
+</para>
+<example_commands>
# POTFILES.in in 'po/' subdirectory
a.cpp
b.cpp
# end of file
-</example>
+</example_commands>
-<example>
+<example_commands>
# SConstruct file in 'po/' subdirectory
env = Environment( tools = ['default', 'xgettext'] )
env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH='../')
-</example>
+</example_commands>
+<para>
<emphasis>Example 5.</emphasis>
Multiple search directories may be defined within a list, i.e.
<literal>XGETTEXTPATH = ['dir1', 'dir2', ...]</literal>. The order in the list
determines the search order of source files. The path to the first file found
is used.
+</para>
+<para>
Let's create <filename>0/1/po/SConstruct</filename> script:
-<example>
+</para>
+<example_commands>
# SConstruct file in '0/1/po/' subdirectory
env = Environment( tools = ['default', 'xgettext'] )
env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../', '../../'])
-</example>
+</example_commands>
+<para>
and <filename>0/1/po/POTFILES.in</filename>:
-<example>
+</para>
+<example_commands>
# POTFILES.in in '0/1/po/' subdirectory
a.cpp
# end of file
-</example>
+</example_commands>
+<para>
Write two <filename>*.cpp</filename> files, the first one is
<filename>0/a.cpp</filename>:
-<example>
+</para>
+<example_commands>
/* 0/a.cpp */
gettext("Hello from ../../a.cpp")
-</example>
+</example_commands>
+<para>
and the second is <filename>0/1/a.cpp</filename>:
-<example>
+</para>
+<example_commands>
/* 0/1/a.cpp */
gettext("Hello from ../a.cpp")
-</example>
+</example_commands>
+<para>
then run scons. You'll obtain <literal>0/1/po/messages.pot</literal> with the
message <literal>"Hello from ../a.cpp"</literal>. When you reverse order in
<varname>$XGETTEXTFOM</varname>, i.e. when you write SConscript as
-<example>
+</para>
+<example_commands>
# SConstruct file in '0/1/po/' subdirectory
env = Environment( tools = ['default', 'xgettext'] )
env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../../', '../'])
-</example> then the <filename>messages.pot</filename> will contain
+</example_commands>
+<para>
+then the <filename>messages.pot</filename> will contain
<literal>msgid "Hello from ../../a.cpp"</literal> line and not
<literal>msgid "Hello from ../a.cpp"</literal>.
+</para>
</summary>
-
</builder>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="POTSUFFIX">
<summary>
+<para>
Suffix used for PO Template files (default: <literal>'.pot'</literal>).
See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="POTUPDATE_ALIAS">
<summary>
+<para>
Name of the common phony target for all PO Templates created with
&b-link-POUpdate; (default: <literal>'pot-update'</literal>).
See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXT">
<summary>
+<para>
Path to <command>xgettext(1)</command> program (found via
<function>Detect()</function>).
See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTCOM">
<summary>
+<para>
Complete xgettext command line.
See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTCOMSTR">
<summary>
+<para>
A string that is shown when <command>xgettext(1)</command> command is invoked
(default: <literal>''</literal>, which means "print &cv-link-XGETTEXTCOM;").
See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTFLAGS">
<summary>
+<para>
Additional flags to <command>xgettext(1)</command>.
See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTFROM">
<summary>
+<para>
Name of file containing list of <command>xgettext(1)</command>'s source
files. Autotools' users know this as <filename>POTFILES.in</filename> so they
will in most cases set <literal>XGETTEXTFROM="POTFILES.in"</literal> here.
The &cv-XGETTEXTFROM; files have same syntax and semantics as the well known
GNU <filename>POTFILES.in</filename>.
See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTPATH">
<summary>
+<para>
List of directories, there <command>xgettext(1)</command> will look for
source files (default: <literal>[]</literal>).
<note><para>
This variable works only together with &cv-link-XGETTEXTFROM;
</para></note>
See also &t-link-xgettext; tool and &b-link-POTUpdate; builder.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTPATHPREFIX">
<summary>
+<para>
This flag is used to add single search path to
<command>xgettext(1)</command>'s commandline (default:
<literal>'-D'</literal>).
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTPATHSUFFIX">
<summary>
+<para>
(default: <literal>''</literal>)
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTFROMPREFIX">
<summary>
+<para>
This flag is used to add single &cv-link-XGETTEXTFROM; file to
<command>xgettext(1)</command>'s commandline (default:
<literal>'-f'</literal>).
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="XGETTEXTFROMSUFFIX">
<summary>
+<para>
(default: <literal>''</literal>)
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="_XGETTEXTDOMAIN">
<summary>
+<para>
Internal "macro". Generates <command>xgettext</command> domain name
form source and target (default: <literal>'${TARGET.filebase}'</literal>).
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="_XGETTEXTFROMFLAGS">
<summary>
+<para>
Internal "macro". Genrates list of <literal>-D&lt;dir&gt;</literal> flags
from the &cv-link-XGETTEXTPATH; list.
+</para>
</summary>
</cvar>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<cvar name="_XGETTEXTPATHFLAGS">
<summary>
+<para>
Internal "macro". Generates list of <literal>-f&lt;file&gt;</literal> flags
from &cv-link-XGETTEXTFROM;.
+</para>
</summary>
</cvar>
<!--
-->
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/yacc.py b/src/engine/SCons/Tool/yacc.py
index 1934181..15aca39 100644
--- a/src/engine/SCons/Tool/yacc.py
+++ b/src/engine/SCons/Tool/yacc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/yacc.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/yacc.py 2014/03/02 14:18:15 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/yacc.xml b/src/engine/SCons/Tool/yacc.xml
index 7ad1387..2b4e964 100644
--- a/src/engine/SCons/Tool/yacc.xml
+++ b/src/engine/SCons/Tool/yacc.xml
@@ -1,64 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="yacc">
<summary>
+<para>
Sets construction variables for the &yacc; parse generator.
+</para>
</summary>
<sets>
-YACC
-YACCFLAGS
-YACCCOM
-YACCHFILESUFFIX
-YACCHXXFILESUFFIX
-YACCVCGFILESUFFIX
+<item>YACC</item>
+<item>YACCFLAGS</item>
+<item>YACCCOM</item>
+<item>YACCHFILESUFFIX</item>
+<item>YACCHXXFILESUFFIX</item>
+<item>YACCVCGFILESUFFIX</item>
</sets>
<uses>
-YACCCOMSTR
+<item>YACCCOMSTR</item>
</uses>
</tool>
<cvar name="YACC">
<summary>
+<para>
The parser generator.
+</para>
</summary>
</cvar>
<cvar name="YACCCOM">
<summary>
+<para>
The command line used to call the parser generator
to generate a source file.
+</para>
</summary>
</cvar>
<cvar name="YACCCOMSTR">
<summary>
+<para>
The string displayed when generating a source file
using the parser generator.
If this is not set, then &cv-link-YACCCOM; (the command line) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(YACCCOMSTR = "Yacc'ing $TARGET from $SOURCES")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="YACCFLAGS">
<summary>
+<para>
General options passed to the parser generator.
If &cv-link-YACCFLAGS; contains a <option>-d</option> option,
SCons assumes that the call will also create a .h file
(if the yacc source file ends in a .y suffix)
or a .hpp file
(if the yacc source file ends in a .yy suffix)
+</para>
</summary>
</cvar>
<cvar name="YACCHFILESUFFIX">
<summary>
+<para>
The suffix of the C
header file generated by the parser generator
when the
@@ -71,11 +101,13 @@ it exists to allow you to specify
what suffix the parser generator will use of its own accord.
The default value is
<filename>.h</filename>.
+</para>
</summary>
</cvar>
<cvar name="YACCHXXFILESUFFIX">
<summary>
+<para>
The suffix of the C++
header file generated by the parser generator
when the
@@ -94,11 +126,13 @@ where the default is
because the default &bison; parser generator just
appends <filename>.h</filename>
to the name of the generated C++ file.
+</para>
</summary>
</cvar>
<cvar name="YACCVCGFILESUFFIX">
<summary>
+<para>
The suffix of the file
containing the VCG grammar automaton definition
when the
@@ -111,5 +145,8 @@ it exists to allow you to specify
what suffix the parser generator will use of its own accord.
The default value is
<filename>.vcg</filename>.
+</para>
</summary>
</cvar>
+
+</sconsdoc> \ No newline at end of file
diff --git a/src/engine/SCons/Tool/zip.py b/src/engine/SCons/Tool/zip.py
index 86ae55e..8a914cf 100644
--- a/src/engine/SCons/Tool/zip.py
+++ b/src/engine/SCons/Tool/zip.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/zip.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Tool/zip.py 2014/03/02 14:18:15 garyo"
import os.path
@@ -57,9 +57,9 @@ if internal_zip:
for fname in filenames:
path = os.path.join(dirpath, fname)
if os.path.isfile(path):
- zf.write(path)
+ zf.write(path, os.path.relpath(path, str(env.get('ZIPROOT', ''))))
else:
- zf.write(str(s))
+ zf.write(str(s), os.path.relpath(str(s), str(env.get('ZIPROOT', ''))))
zf.close()
else:
zipcompression = 0
@@ -88,6 +88,7 @@ def generate(env):
env['ZIPCOM'] = zipAction
env['ZIPCOMPRESSION'] = zipcompression
env['ZIPSUFFIX'] = '.zip'
+ env['ZIPROOT'] = SCons.Util.CLVar('')
def exists(env):
return internal_zip or env.Detect('zip')
diff --git a/src/engine/SCons/Tool/zip.xml b/src/engine/SCons/Tool/zip.xml
index eb557e1..644282e 100644
--- a/src/engine/SCons/Tool/zip.xml
+++ b/src/engine/SCons/Tool/zip.xml
@@ -1,27 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+
<tool name="zip">
<summary>
+<para>
Sets construction variables for the &zip; archiver.
+</para>
</summary>
<sets>
-ZIP
-ZIPFLAGS
-ZIPCOM
-ZIPCOMPRESSION
-ZIPSUFFIX
+<item>ZIP</item>
+<item>ZIPFLAGS</item>
+<item>ZIPCOM</item>
+<item>ZIPCOMPRESSION</item>
+<item>ZIPSUFFIX</item>
</sets>
<uses>
-ZIPCOMSTR
+<item>ZIPCOMSTR</item>
</uses>
</tool>
<builder name="Zip">
<summary>
+<para>
Builds a zip archive of the specified files
and/or directories.
Unlike most builder methods,
@@ -38,47 +60,55 @@ any on-disk files,
regardless of whether or not
&scons;
knows about them from other Builder or function calls.
+</para>
-<example>
+<example_commands>
env.Zip('src.zip', 'src')
# Create the stuff.zip file.
env.Zip('stuff', ['subdir1', 'subdir2'])
# Also add "another" to the stuff.tar file.
env.Zip('stuff', 'another')
-</example>
+</example_commands>
</summary>
</builder>
<cvar name="ZIP">
<summary>
+<para>
The zip compression and file packaging utility.
+</para>
</summary>
</cvar>
<cvar name="ZIPCOM">
<summary>
+<para>
The command line used to call the zip utility,
or the internal Python function used to create a
zip archive.
+</para>
</summary>
</cvar>
<cvar name="ZIPCOMSTR">
<summary>
+<para>
The string displayed when archiving files
using the zip utility.
If this is not set, then &cv-link-ZIPCOM;
(the command line or internal Python function) is displayed.
+</para>
-<example>
+<example_commands>
env = Environment(ZIPCOMSTR = "Zipping $TARGET")
-</example>
+</example_commands>
</summary>
</cvar>
<cvar name="ZIPCOMPRESSION">
<summary>
+<para>
The
<varname>compression</varname>
flag
@@ -93,17 +123,45 @@ which creates a compressed zip archive.
This value has no effect if the
<literal>zipfile</literal>
module is unavailable.
+</para>
</summary>
</cvar>
<cvar name="ZIPFLAGS">
<summary>
+<para>
General options passed to the zip utility.
+</para>
</summary>
</cvar>
<cvar name="ZIPSUFFIX">
<summary>
+<para>
The suffix used for zip file names.
+</para>
+</summary>
+</cvar>
+
+<cvar name="ZIPROOT">
+<summary>
+<para>
+An optional zip root directory (default empty). The filenames stored
+in the zip file will be relative to this directory, if given.
+Otherwise the filenames are relative to the current directory of the
+command.
+For instance:
+</para>
+<example_commands>
+env = Environment()
+env.Zip('foo.zip', 'subdir1/subdir2/file1', ZIPROOT='subdir1')
+</example_commands>
+<para>
+will produce a zip file <literal>foo.zip</literal>
+containing a file with the name
+<literal>subdir2/file1</literal> rather than
+<literal>subdir1/subdir2/file1</literal>.
+</para>
</summary>
</cvar>
+</sconsdoc>
diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py
index 9f66ce0..9fc649b 100644
--- a/src/engine/SCons/Util.py
+++ b/src/engine/SCons/Util.py
@@ -3,7 +3,7 @@
Various utility functions go here.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Various utility functions go here.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Util.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Util.py 2014/03/02 14:18:15 garyo"
import os
import sys
diff --git a/src/engine/SCons/UtilTests.py b/src/engine/SCons/UtilTests.py
index 3c55c3e..7b9b9dd 100644
--- a/src/engine/SCons/UtilTests.py
+++ b/src/engine/SCons/UtilTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/UtilTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/UtilTests.py 2014/03/02 14:18:15 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Variables/BoolVariable.py b/src/engine/SCons/Variables/BoolVariable.py
index cdfe367..e7814bb 100644
--- a/src/engine/SCons/Variables/BoolVariable.py
+++ b/src/engine/SCons/Variables/BoolVariable.py
@@ -12,7 +12,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/BoolVariable.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/BoolVariable.py 2014/03/02 14:18:15 garyo"
__all__ = ['BoolVariable',]
diff --git a/src/engine/SCons/Variables/BoolVariableTests.py b/src/engine/SCons/Variables/BoolVariableTests.py
index 973ae6e..7c16460 100644
--- a/src/engine/SCons/Variables/BoolVariableTests.py
+++ b/src/engine/SCons/Variables/BoolVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/BoolVariableTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/BoolVariableTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Variables/EnumVariable.py b/src/engine/SCons/Variables/EnumVariable.py
index 9e2970f..33fa45b 100644
--- a/src/engine/SCons/Variables/EnumVariable.py
+++ b/src/engine/SCons/Variables/EnumVariable.py
@@ -15,7 +15,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -37,7 +37,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/EnumVariable.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/EnumVariable.py 2014/03/02 14:18:15 garyo"
__all__ = ['EnumVariable',]
diff --git a/src/engine/SCons/Variables/EnumVariableTests.py b/src/engine/SCons/Variables/EnumVariableTests.py
index d8c419b..3f23d02 100644
--- a/src/engine/SCons/Variables/EnumVariableTests.py
+++ b/src/engine/SCons/Variables/EnumVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/EnumVariableTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/EnumVariableTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Variables/ListVariable.py b/src/engine/SCons/Variables/ListVariable.py
index 735d525..e831f68 100644
--- a/src/engine/SCons/Variables/ListVariable.py
+++ b/src/engine/SCons/Variables/ListVariable.py
@@ -25,7 +25,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -46,7 +46,7 @@ Usage example:
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Variables/ListVariable.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/ListVariable.py 2014/03/02 14:18:15 garyo"
# Know Bug: This should behave like a Set-Type, but does not really,
# since elements can occur twice.
diff --git a/src/engine/SCons/Variables/ListVariableTests.py b/src/engine/SCons/Variables/ListVariableTests.py
index 02b2b79..9aff5f0 100644
--- a/src/engine/SCons/Variables/ListVariableTests.py
+++ b/src/engine/SCons/Variables/ListVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/ListVariableTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/ListVariableTests.py 2014/03/02 14:18:15 garyo"
import copy
import sys
diff --git a/src/engine/SCons/Variables/PackageVariable.py b/src/engine/SCons/Variables/PackageVariable.py
index 665692c..72e3674 100644
--- a/src/engine/SCons/Variables/PackageVariable.py
+++ b/src/engine/SCons/Variables/PackageVariable.py
@@ -28,7 +28,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -50,7 +50,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PackageVariable.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/PackageVariable.py 2014/03/02 14:18:15 garyo"
__all__ = ['PackageVariable',]
diff --git a/src/engine/SCons/Variables/PackageVariableTests.py b/src/engine/SCons/Variables/PackageVariableTests.py
index 44f98cb..b09061a 100644
--- a/src/engine/SCons/Variables/PackageVariableTests.py
+++ b/src/engine/SCons/Variables/PackageVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PackageVariableTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/PackageVariableTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Variables/PathVariable.py b/src/engine/SCons/Variables/PathVariable.py
index b79a760..556de59 100644
--- a/src/engine/SCons/Variables/PathVariable.py
+++ b/src/engine/SCons/Variables/PathVariable.py
@@ -46,7 +46,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -68,7 +68,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PathVariable.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/PathVariable.py 2014/03/02 14:18:15 garyo"
__all__ = ['PathVariable',]
diff --git a/src/engine/SCons/Variables/PathVariableTests.py b/src/engine/SCons/Variables/PathVariableTests.py
index 70a5f94..e9eaac2 100644
--- a/src/engine/SCons/Variables/PathVariableTests.py
+++ b/src/engine/SCons/Variables/PathVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PathVariableTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/PathVariableTests.py 2014/03/02 14:18:15 garyo"
import os.path
import sys
diff --git a/src/engine/SCons/Variables/VariablesTests.py b/src/engine/SCons/Variables/VariablesTests.py
index 72f8a45..7dcc464 100644
--- a/src/engine/SCons/Variables/VariablesTests.py
+++ b/src/engine/SCons/Variables/VariablesTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/VariablesTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/VariablesTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/Variables/__init__.py b/src/engine/SCons/Variables/__init__.py
index 3d9d845..f5e9b93 100644
--- a/src/engine/SCons/Variables/__init__.py
+++ b/src/engine/SCons/Variables/__init__.py
@@ -5,7 +5,7 @@ customizable variables to an SCons build.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ customizable variables to an SCons build.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Variables/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Variables/__init__.py 2014/03/02 14:18:15 garyo"
import os.path
import sys
diff --git a/src/engine/SCons/Warnings.py b/src/engine/SCons/Warnings.py
index d7cadc2..bbbd1dc 100644
--- a/src/engine/SCons/Warnings.py
+++ b/src/engine/SCons/Warnings.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This file implements the warnings framework for SCons.
"""
-__revision__ = "src/engine/SCons/Warnings.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/Warnings.py 2014/03/02 14:18:15 garyo"
import sys
@@ -42,6 +42,9 @@ class WarningOnByDefault(Warning):
# NOTE: If you add a new warning class, add it to the man page, too!
+class TargetNotBuiltWarning(Warning): # Should go to OnByDefault
+ pass
+
class CacheWriteErrorWarning(Warning):
pass
diff --git a/src/engine/SCons/WarningsTests.py b/src/engine/SCons/WarningsTests.py
index b706e5d..8240be3 100644
--- a/src/engine/SCons/WarningsTests.py
+++ b/src/engine/SCons/WarningsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/WarningsTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/WarningsTests.py 2014/03/02 14:18:15 garyo"
import sys
import unittest
diff --git a/src/engine/SCons/__init__.py b/src/engine/SCons/__init__.py
index d1a369f..f41a1b6 100644
--- a/src/engine/SCons/__init__.py
+++ b/src/engine/SCons/__init__.py
@@ -5,7 +5,7 @@ The main package for the SCons software construction utility.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,15 +27,15 @@ The main package for the SCons software construction utility.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/__init__.py 2014/03/02 14:18:15 garyo"
-__version__ = "2.3.0"
+__version__ = "2.3.1"
__build__ = ""
-__buildsys__ = "reepicheep"
+__buildsys__ = "lubuntu"
-__date__ = "2013/03/03 09:48:35"
+__date__ = "2014/03/02 14:18:15"
__developer__ = "garyo"
diff --git a/src/engine/SCons/compat/__init__.py b/src/engine/SCons/compat/__init__.py
index 56f3742..832dff6 100644
--- a/src/engine/SCons/compat/__init__.py
+++ b/src/engine/SCons/compat/__init__.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -60,7 +60,7 @@ function defined below loads the module as the "real" name (without the
rest of our code will find our pre-loaded compatibility module.
"""
-__revision__ = "src/engine/SCons/compat/__init__.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/compat/__init__.py 2014/03/02 14:18:15 garyo"
import os
import sys
diff --git a/src/engine/SCons/compat/_scons_builtins.py b/src/engine/SCons/compat/_scons_builtins.py
index 1202d46..5327032 100644
--- a/src/engine/SCons/compat/_scons_builtins.py
+++ b/src/engine/SCons/compat/_scons_builtins.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -51,7 +51,7 @@ the FUNCTIONS or DATA output, that means those names are already built in
to this version of Python and we don't need to add them from this module.
"""
-__revision__ = "src/engine/SCons/compat/_scons_builtins.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_builtins.py 2014/03/02 14:18:15 garyo"
import builtins
diff --git a/src/engine/SCons/compat/_scons_collections.py b/src/engine/SCons/compat/_scons_collections.py
index 7cf685c..94352ac 100644
--- a/src/engine/SCons/compat/_scons_collections.py
+++ b/src/engine/SCons/compat/_scons_collections.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ used by SCons, in an interface that looks enough like collections for
our purposes.
"""
-__revision__ = "src/engine/SCons/compat/_scons_collections.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_collections.py 2014/03/02 14:18:15 garyo"
# Use exec to hide old names from fixers.
exec("""if True:
diff --git a/src/engine/SCons/compat/_scons_dbm.py b/src/engine/SCons/compat/_scons_dbm.py
index e6df063..dd02ed1 100644
--- a/src/engine/SCons/compat/_scons_dbm.py
+++ b/src/engine/SCons/compat/_scons_dbm.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ that the whichdb.whichdb() implementstation in the various 2.X versions of
Python won't blow up even if dbm wasn't compiled in.
"""
-__revision__ = "src/engine/SCons/compat/_scons_dbm.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_dbm.py 2014/03/02 14:18:15 garyo"
class error(Exception):
pass
diff --git a/src/engine/SCons/compat/_scons_hashlib.py b/src/engine/SCons/compat/_scons_hashlib.py
index d4e3023..3297572 100644
--- a/src/engine/SCons/compat/_scons_hashlib.py
+++ b/src/engine/SCons/compat/_scons_hashlib.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ purposes, anyway). In fact, this module will raise an ImportError if
the underlying md5 module isn't available.
"""
-__revision__ = "src/engine/SCons/compat/_scons_hashlib.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_hashlib.py 2014/03/02 14:18:15 garyo"
import md5
from string import hexdigits
diff --git a/src/engine/SCons/compat/_scons_io.py b/src/engine/SCons/compat/_scons_io.py
index 194029e..18777ea 100644
--- a/src/engine/SCons/compat/_scons_io.py
+++ b/src/engine/SCons/compat/_scons_io.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ functionality. It only wraps the portions of io functionality used
by SCons, in an interface that looks enough like io for our purposes.
"""
-__revision__ = "src/engine/SCons/compat/_scons_io.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_io.py 2014/03/02 14:18:15 garyo"
# Use the "imp" module to protect the imports below from fixers.
import imp
diff --git a/src/engine/SCons/cpp.py b/src/engine/SCons/cpp.py
index 6999292..a5698fd 100644
--- a/src/engine/SCons/cpp.py
+++ b/src/engine/SCons/cpp.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/cpp.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/cpp.py 2014/03/02 14:18:15 garyo"
__doc__ = """
SCons C Pre-Processor module
diff --git a/src/engine/SCons/cppTests.py b/src/engine/SCons/cppTests.py
index ca550e6..c16d3ce 100644
--- a/src/engine/SCons/cppTests.py
+++ b/src/engine/SCons/cppTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/cppTests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/cppTests.py 2014/03/02 14:18:15 garyo"
import atexit
import sys
diff --git a/src/engine/SCons/exitfuncs.py b/src/engine/SCons/exitfuncs.py
index 26df198..586eb27 100644
--- a/src/engine/SCons/exitfuncs.py
+++ b/src/engine/SCons/exitfuncs.py
@@ -5,7 +5,7 @@ Register functions which are executed when SCons exits for any reason.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Register functions which are executed when SCons exits for any reason.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/exitfuncs.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/engine/SCons/exitfuncs.py 2014/03/02 14:18:15 garyo"
import atexit
diff --git a/src/script/scons-time.py b/src/script/scons-time.py
index 2b67410..0a51566 100644
--- a/src/script/scons-time.py
+++ b/src/script/scons-time.py
@@ -9,7 +9,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@
from __future__ import division
from __future__ import nested_scopes
-__revision__ = "src/script/scons-time.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/script/scons-time.py 2014/03/02 14:18:15 garyo"
import getopt
import glob
diff --git a/src/script/scons.bat b/src/script/scons.bat
index ca307b9..aba660f 100644
--- a/src/script/scons.bat
+++ b/src/script/scons.bat
@@ -1,11 +1,11 @@
-@REM Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-@REM src/script/scons.bat 2013/03/03 09:48:35 garyo
+@REM Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+@REM src/script/scons.bat 2014/03/02 14:18:15 garyo
@echo off
set SCONS_ERRORLEVEL=
if "%OS%" == "Windows_NT" goto WinNT
@REM for 9x/Me you better not have more than 9 args
-python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-2.3.0'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-2.3.0'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9
+python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-2.3.1'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-2.3.1'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9
@REM no way to set exit status of this script for 9x/Me
goto endscons
diff --git a/src/script/scons.py b/src/script/scons.py
index 466c728..87919a1 100644
--- a/src/script/scons.py
+++ b/src/script/scons.py
@@ -2,7 +2,7 @@
#
# SCons - a Software Constructor
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -23,15 +23,15 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/script/scons.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/script/scons.py 2014/03/02 14:18:15 garyo"
-__version__ = "2.3.0"
+__version__ = "2.3.1"
__build__ = ""
-__buildsys__ = "reepicheep"
+__buildsys__ = "lubuntu"
-__date__ = "2013/03/03 09:48:35"
+__date__ = "2014/03/02 14:18:15"
__developer__ = "garyo"
diff --git a/src/script/sconsign.py b/src/script/sconsign.py
index 99f0ee8..0c24322 100644
--- a/src/script/sconsign.py
+++ b/src/script/sconsign.py
@@ -2,7 +2,7 @@
#
# SCons - a Software Constructor
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -23,15 +23,15 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/script/sconsign.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/script/sconsign.py 2014/03/02 14:18:15 garyo"
-__version__ = "2.3.0"
+__version__ = "2.3.1"
__build__ = ""
-__buildsys__ = "reepicheep"
+__buildsys__ = "lubuntu"
-__date__ = "2013/03/03 09:48:35"
+__date__ = "2014/03/02 14:18:15"
__developer__ = "garyo"
diff --git a/src/setup.py b/src/setup.py
index 176d778..1df403f 100644
--- a/src/setup.py
+++ b/src/setup.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,13 +32,13 @@ NOTE: Installed SCons is not importable like usual Python packages. It is
below is dedicated to make it happen on various platforms.
"""
-__revision__ = "src/setup.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/setup.py 2014/03/02 14:18:15 garyo"
import os
import stat
import sys
-Version = "2.3.0"
+Version = "2.3.1"
man_pages = [
'scons.1',
@@ -408,11 +408,81 @@ arguments = {
"SCons.Scanner",
"SCons.Script",
"SCons.Tool",
+ "SCons.Tool.docbook",
"SCons.Tool.MSCommon",
"SCons.Tool.packaging",
"SCons.Variables",
],
- 'package_dir' : {'' : 'engine'},
+ 'package_dir' : {'' : 'engine',
+ 'SCons.Tool.docbook' : 'engine/SCons/Tool/docbook'},
+ 'package_data' : {'SCons.Tool.docbook' : ['docbook-xsl-1.76.1/*',
+ 'docbook-xsl-1.76.1/common/*',
+ 'docbook-xsl-1.76.1/docsrc/*',
+ 'docbook-xsl-1.76.1/eclipse/*',
+ 'docbook-xsl-1.76.1/epub/*',
+ 'docbook-xsl-1.76.1/epub/bin/*',
+ 'docbook-xsl-1.76.1/epub/bin/lib/*',
+ 'docbook-xsl-1.76.1/epub/bin/xslt/*',
+ 'docbook-xsl-1.76.1/extensions/*',
+ 'docbook-xsl-1.76.1/fo/*',
+ 'docbook-xsl-1.76.1/highlighting/*',
+ 'docbook-xsl-1.76.1/html/*',
+ 'docbook-xsl-1.76.1/htmlhelp/*',
+ 'docbook-xsl-1.76.1/images/*',
+ 'docbook-xsl-1.76.1/images/callouts/*',
+ 'docbook-xsl-1.76.1/images/colorsvg/*',
+ 'docbook-xsl-1.76.1/javahelp/*',
+ 'docbook-xsl-1.76.1/lib/*',
+ 'docbook-xsl-1.76.1/manpages/*',
+ 'docbook-xsl-1.76.1/params/*',
+ 'docbook-xsl-1.76.1/profiling/*',
+ 'docbook-xsl-1.76.1/roundtrip/*',
+ 'docbook-xsl-1.76.1/slides/browser/*',
+ 'docbook-xsl-1.76.1/slides/fo/*',
+ 'docbook-xsl-1.76.1/slides/graphics/*',
+ 'docbook-xsl-1.76.1/slides/graphics/active/*',
+ 'docbook-xsl-1.76.1/slides/graphics/inactive/*',
+ 'docbook-xsl-1.76.1/slides/graphics/toc/*',
+ 'docbook-xsl-1.76.1/slides/html/*',
+ 'docbook-xsl-1.76.1/slides/htmlhelp/*',
+ 'docbook-xsl-1.76.1/slides/keynote/*',
+ 'docbook-xsl-1.76.1/slides/keynote/xsltsl/*',
+ 'docbook-xsl-1.76.1/slides/svg/*',
+ 'docbook-xsl-1.76.1/slides/xhtml/*',
+ 'docbook-xsl-1.76.1/template/*',
+ 'docbook-xsl-1.76.1/tests/*',
+ 'docbook-xsl-1.76.1/tools/bin/*',
+ 'docbook-xsl-1.76.1/tools/make/*',
+ 'docbook-xsl-1.76.1/webhelp/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/css/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/images/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/theme-redmond/images/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/images/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/content/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/content/search/*',
+ 'docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/*',
+ 'docbook-xsl-1.76.1/webhelp/docsrc/*',
+ 'docbook-xsl-1.76.1/webhelp/template/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/css/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/images/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/theme-redmond/images/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/*',
+ 'docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/images/*',
+ 'docbook-xsl-1.76.1/webhelp/template/content/search/*',
+ 'docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/*',
+ 'docbook-xsl-1.76.1/webhelp/xsl/*',
+ 'docbook-xsl-1.76.1/website/*',
+ 'docbook-xsl-1.76.1/xhtml/*',
+ 'docbook-xsl-1.76.1/xhtml-1_1/*',
+ 'utils/*']},
'data_files' : [('man/man1', man_pages)],
'scripts' : scripts,
'cmdclass' : {'install' : install,
diff --git a/src/test_aegistests.py b/src/test_aegistests.py
index 49ab30a..4dcb5e6 100644
--- a/src/test_aegistests.py
+++ b/src/test_aegistests.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/test_aegistests.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/test_aegistests.py 2014/03/02 14:18:15 garyo"
"""
Verify that we have proper Copyright notices on all the right files
diff --git a/src/test_files.py b/src/test_files.py
index 6669e1a..04f3792 100644
--- a/src/test_files.py
+++ b/src/test_files.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/test_files.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/test_files.py 2014/03/02 14:18:15 garyo"
"""
Verify that we have certain important files in our distribution
diff --git a/src/test_interrupts.py b/src/test_interrupts.py
index 97e63fc..963735a 100644
--- a/src/test_interrupts.py
+++ b/src/test_interrupts.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/test_interrupts.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/test_interrupts.py 2014/03/02 14:18:15 garyo"
"""
Verify that the SCons source code contains only correct handling of
diff --git a/src/test_pychecker.py b/src/test_pychecker.py
index 2bfb234..d54779b 100644
--- a/src/test_pychecker.py
+++ b/src/test_pychecker.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/test_pychecker.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/test_pychecker.py 2014/03/02 14:18:15 garyo"
"""
Use pychecker to catch various Python coding errors.
diff --git a/src/test_setup.py b/src/test_setup.py
index abcc75f..f71aa33 100644
--- a/src/test_setup.py
+++ b/src/test_setup.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/test_setup.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/test_setup.py 2014/03/02 14:18:15 garyo"
"""
Test how the setup.py script installs SCons.
diff --git a/src/test_strings.py b/src/test_strings.py
index d320618..a268133 100644
--- a/src/test_strings.py
+++ b/src/test_strings.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/test_strings.py 2013/03/03 09:48:35 garyo"
+__revision__ = "src/test_strings.py 2014/03/02 14:18:15 garyo"
"""
Verify that we have proper strings like Copyright notices on all the
@@ -106,8 +106,8 @@ class Checker(object):
class CheckUnexpandedStrings(Checker):
expressions = [
- re.compile('Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation'),
- re.compile('src/test_strings.py 2013/03/03 09:48:35 garyo'),
+ re.compile('Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation'),
+ re.compile('src/test_strings.py 2014/03/02 14:18:15 garyo'),
]
def must_be_built(self):
return None